[core] render extrusions directly in the main framebuffer

This commit is contained in:
Konstantin Käfer
2019-04-26 18:31:48 +02:00
parent ef48d53e78
commit 20a807fdf3
29 changed files with 605 additions and 721 deletions

View File

@@ -1786,7 +1786,7 @@ public class PropertyFactory {
}
/**
* Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key wehn they overlap. Features with a lower sort key will have priority over other features when doing placement.
* Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key when they overlap. Features with a lower sort key will have priority over other features when doing placement.
*
* @param value a Float value
* @return property wrapper around Float
@@ -1796,7 +1796,7 @@ public class PropertyFactory {
}
/**
* Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key wehn they overlap. Features with a lower sort key will have priority over other features when doing placement.
* Sorts features in ascending order based on this value. Features with a higher sort key will appear above features with a lower sort key when they overlap. Features with a lower sort key will have priority over other features when doing placement.
*
* @param value a Float value
* @return property wrapper around Float

View File

@@ -1025,7 +1025,7 @@ MGL_EXPORT
/**
Sorts features in ascending order based on this value. Features with a higher
sort key will appear above features with a lower sort key wehn they overlap.
sort key will appear above features with a lower sort key when they overlap.
Features with a lower sort key will have priority over other features when
doing placement.

View File

@@ -92,6 +92,7 @@
"render-tests/fill-extrusion-pattern/missing": "https://github.com/mapbox/mapbox-gl-js/issues/3327",
"render-tests/fill-extrusion-pattern/opacity": "https://github.com/mapbox/mapbox-gl-js/issues/3327",
"render-tests/fill-extrusion-pattern/feature-expression": "https://github.com/mapbox/mapbox-gl-js/issues/3327",
"render-tests/fill-extrusion-pattern/tile-buffer": "https://github.com/mapbox/mapbox-gl-js/issues/3327",
"render-tests/fill-pattern/update-feature-state": "skip - port https://github.com/mapbox/mapbox-gl-js/pull/6263 - needs issue",
"render-tests/geojson/inline-linestring-fill": "current behavior is arbitrary",
"render-tests/mixed-zoom/z10-z11": "https://github.com/mapbox/mapbox-gl-native/issues/10397",

View File

@@ -60,7 +60,6 @@
"src/mbgl/programs/clipping_mask_program.cpp",
"src/mbgl/programs/collision_box_program.cpp",
"src/mbgl/programs/debug_program.cpp",
"src/mbgl/programs/extrusion_texture_program.cpp",
"src/mbgl/programs/fill_extrusion_program.cpp",
"src/mbgl/programs/fill_program.cpp",
"src/mbgl/programs/gl/background.cpp",
@@ -70,7 +69,6 @@
"src/mbgl/programs/gl/collision_box.cpp",
"src/mbgl/programs/gl/collision_circle.cpp",
"src/mbgl/programs/gl/debug.cpp",
"src/mbgl/programs/gl/extrusion_texture.cpp",
"src/mbgl/programs/gl/fill.cpp",
"src/mbgl/programs/gl/fill_extrusion.cpp",
"src/mbgl/programs/gl/fill_extrusion_pattern.cpp",
@@ -577,7 +575,6 @@
"mbgl/programs/collision_box_program.hpp": "src/mbgl/programs/collision_box_program.hpp",
"mbgl/programs/collision_circle_program.hpp": "src/mbgl/programs/collision_circle_program.hpp",
"mbgl/programs/debug_program.hpp": "src/mbgl/programs/debug_program.hpp",
"mbgl/programs/extrusion_texture_program.hpp": "src/mbgl/programs/extrusion_texture_program.hpp",
"mbgl/programs/fill_extrusion_pattern_program.hpp": "src/mbgl/programs/fill_extrusion_pattern_program.hpp",
"mbgl/programs/fill_extrusion_program.hpp": "src/mbgl/programs/fill_extrusion_program.hpp",
"mbgl/programs/fill_outline_pattern_program.hpp": "src/mbgl/programs/fill_outline_pattern_program.hpp",

View File

@@ -1,10 +0,0 @@
#include <mbgl/programs/extrusion_texture_program.hpp>
#include <mbgl/gfx/context_impl.hpp>
namespace mbgl {
template std::unique_ptr<gfx::Program<ExtrusionTextureProgram>> gfx::Context::createProgram(const ProgramParameters&);
static_assert(sizeof(ExtrusionTextureLayoutVertex) == 4, "expected ExtrusionTextureLayoutVertex size");
} // namespace mbgl

View File

@@ -1,39 +0,0 @@
#pragma once
#include <mbgl/programs/program.hpp>
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
#include <mbgl/style/properties.hpp>
#include <mbgl/util/geometry.hpp>
namespace mbgl {
class ExtrusionTextureProgram : public Program<
ExtrusionTextureProgram,
gfx::PrimitiveType::Triangle,
TypeList<attributes::pos>,
TypeList<
uniforms::matrix,
uniforms::world,
uniforms::opacity>,
TypeList<
textures::image>,
style::Properties<>> {
public:
using Program::Program;
static LayoutVertex layoutVertex(Point<int16_t> p) {
return LayoutVertex{
{{
p.x,
p.y
}}
};
}
};
using ExtrusionTextureLayoutVertex = ExtrusionTextureProgram::LayoutVertex;
using ExtrusionTextureAttributes = ExtrusionTextureProgram::AttributeList;
} // namespace mbgl

View File

@@ -36,9 +36,10 @@ float lightIntensity(const EvaluatedLight& light) {
}
FillExtrusionProgram::LayoutUniformValues FillExtrusionProgram::layoutUniformValues(
mat4 matrix, const TransformState& state, const EvaluatedLight& light) {
mat4 matrix, const TransformState& state, const float opacity, const EvaluatedLight& light) {
return {
uniforms::matrix::Value( matrix ),
uniforms::opacity::Value( opacity ),
uniforms::lightcolor::Value( lightColor(light) ),
uniforms::lightpos::Value( lightPosition(light, state) ),
uniforms::lightintensity::Value( lightIntensity(light) )
@@ -51,6 +52,7 @@ FillExtrusionPatternProgram::layoutUniformValues(mat4 matrix,
const CrossfadeParameters& crossfade,
const UnwrappedTileID& tileID,
const TransformState& state,
const float opacity,
const float heightFactor,
const float pixelRatio,
const EvaluatedLight& light) {
@@ -61,6 +63,7 @@ FillExtrusionPatternProgram::layoutUniformValues(mat4 matrix,
return {
uniforms::matrix::Value( matrix ),
uniforms::opacity::Value( opacity ),
uniforms::scale::Value( {{pixelRatio, tileRatio, crossfade.fromScale, crossfade.toScale}} ),
uniforms::texsize::Value( atlasSize ),
uniforms::fade::Value( crossfade.t ),

View File

@@ -2,7 +2,6 @@
#include <mbgl/programs/program.hpp>
#include <mbgl/programs/attributes.hpp>
#include <mbgl/programs/extrusion_texture_program.hpp>
#include <mbgl/programs/uniforms.hpp>
#include <mbgl/programs/textures.hpp>
#include <mbgl/util/geometry.hpp>
@@ -34,12 +33,14 @@ using FillExtrusionLayoutAttributes = TypeList<
using FillExtrusionUniforms = TypeList<
uniforms::matrix,
uniforms::opacity,
uniforms::lightcolor,
uniforms::lightpos,
uniforms::lightintensity>;
using FillExtrusionPatternUniforms = TypeList<
uniforms::matrix,
uniforms::opacity,
uniforms::scale,
uniforms::texsize,
uniforms::fade,
@@ -82,7 +83,7 @@ public:
}
static LayoutUniformValues
layoutUniformValues(mat4, const TransformState&, const EvaluatedLight&);
layoutUniformValues(mat4, const TransformState&, const float opacity, const EvaluatedLight&);
};
class FillExtrusionPatternProgram : public Program<
@@ -102,6 +103,7 @@ public:
const CrossfadeParameters&,
const UnwrappedTileID&,
const TransformState&,
const float opacity,
const float heightFactor,
const float pixelRatio,
const EvaluatedLight&);
@@ -115,11 +117,10 @@ class FillExtrusionLayerPrograms final : public LayerTypePrograms {
public:
FillExtrusionLayerPrograms(gfx::Context& context, const ProgramParameters& programParameters)
: fillExtrusion(context, programParameters),
fillExtrusionPattern(context, programParameters),
extrusionTexture(context, programParameters) {}
fillExtrusionPattern(context, programParameters) {
}
FillExtrusionProgram fillExtrusion;
FillExtrusionPatternProgram fillExtrusionPattern;
ExtrusionTextureProgram extrusionTexture;
};
} // namespace mbgl

View File

@@ -1,71 +0,0 @@
// NOTE: DO NOT CHANGE THIS FILE. IT IS AUTOMATICALLY GENERATED.
#include <mbgl/programs/extrusion_texture_program.hpp>
#include <mbgl/programs/gl/preludes.hpp>
#include <mbgl/programs/gl/shader_source.hpp>
#include <mbgl/gl/program.hpp>
namespace mbgl {
namespace programs {
namespace gl {
template <typename>
struct ShaderSource;
template <>
struct ShaderSource<ExtrusionTextureProgram> {
static constexpr const char* name = "extrusion_texture";
static constexpr const uint8_t hash[8] = { 0xd9, 0x77, 0x11, 0xd2, 0x03, 0xc7, 0x27, 0xcb };
static constexpr const auto vertexOffset = 27554;
static constexpr const auto fragmentOffset = 27734;
};
constexpr const char* ShaderSource<ExtrusionTextureProgram>::name;
constexpr const uint8_t ShaderSource<ExtrusionTextureProgram>::hash[8];
} // namespace gl
} // namespace programs
namespace gfx {
template <>
std::unique_ptr<Program<ExtrusionTextureProgram>>
Context::createProgram<gl::Context>(const ProgramParameters& programParameters) {
return std::make_unique<gl::Program<ExtrusionTextureProgram>>(programParameters);
}
} // namespace gfx
} // namespace mbgl
// Uncompressed source of extrusion_texture.vertex.glsl:
/*
uniform mat4 u_matrix;
uniform vec2 u_world;
attribute vec2 a_pos;
varying vec2 v_pos;
void main() {
gl_Position = u_matrix * vec4(a_pos * u_world, 0, 1);
v_pos.x = a_pos.x;
v_pos.y = 1.0 - a_pos.y;
}
*/
// Uncompressed source of extrusion_texture.fragment.glsl:
/*
uniform sampler2D u_image;
uniform float u_opacity;
varying vec2 v_pos;
void main() {
gl_FragColor = texture2D(u_image, v_pos) * u_opacity;
#ifdef OVERDRAW_INSPECTOR
gl_FragColor = vec4(0.0);
#endif
}
*/

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<FillExtrusionProgram> {
static constexpr const char* name = "fill_extrusion";
static constexpr const uint8_t hash[8] = { 0x49, 0x8a, 0xa2, 0x8b, 0x21, 0x74, 0x27, 0x93 };
static constexpr const uint8_t hash[8] = { 0x9d, 0x76, 0x7f, 0xaa, 0x86, 0x57, 0x56, 0x96 };
static constexpr const auto vertexOffset = 21238;
static constexpr const auto fragmentOffset = 23121;
static constexpr const auto fragmentOffset = 23169;
};
constexpr const char* ShaderSource<FillExtrusionProgram>::name;
@@ -44,6 +44,7 @@ uniform vec3 u_lightcolor;
uniform lowp vec3 u_lightpos;
uniform lowp float u_lightintensity;
uniform float u_vertical_gradient;
uniform lowp float u_opacity;
attribute vec2 a_pos;
attribute vec4 a_normal_ed;
@@ -141,6 +142,7 @@ void main() {
v_color.r += clamp(color.r * directional * u_lightcolor.r, mix(0.0, 0.3, 1.0 - u_lightcolor.r), 1.0);
v_color.g += clamp(color.g * directional * u_lightcolor.g, mix(0.0, 0.3, 1.0 - u_lightcolor.g), 1.0);
v_color.b += clamp(color.b * directional * u_lightcolor.b, mix(0.0, 0.3, 1.0 - u_lightcolor.b), 1.0);
v_color *= u_opacity;
}
*/

View File

@@ -15,9 +15,9 @@ struct ShaderSource;
template <>
struct ShaderSource<FillExtrusionPatternProgram> {
static constexpr const char* name = "fill_extrusion_pattern";
static constexpr const uint8_t hash[8] = { 0x93, 0x2b, 0xd1, 0xab, 0xa3, 0xf2, 0x24, 0x63 };
static constexpr const auto vertexOffset = 23237;
static constexpr const auto fragmentOffset = 26157;
static constexpr const uint8_t hash[8] = { 0x5a, 0x8f, 0x1a, 0xbf, 0x43, 0x62, 0xf0, 0x86 };
static constexpr const auto vertexOffset = 23285;
static constexpr const auto fragmentOffset = 26256;
};
constexpr const char* ShaderSource<FillExtrusionPatternProgram>::name;
@@ -45,6 +45,7 @@ uniform vec2 u_pixel_coord_lower;
uniform float u_height_factor;
uniform vec4 u_scale;
uniform float u_vertical_gradient;
uniform lowp float u_opacity;
uniform vec3 u_lightcolor;
uniform lowp vec3 u_lightpos;
@@ -168,6 +169,7 @@ void main() {
}
v_lighting.rgb += clamp(directional * u_lightcolor, mix(vec3(0.0), vec3(0.3), 1.0 - u_lightcolor), vec3(1.0));
v_lighting *= u_opacity;
}
*/

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<HillshadeProgram> {
static constexpr const char* name = "hillshade";
static constexpr const uint8_t hash[8] = { 0x8a, 0x11, 0x29, 0x18, 0x52, 0x7f, 0x3b, 0xbb };
static constexpr const auto vertexOffset = 29340;
static constexpr const auto fragmentOffset = 29511;
static constexpr const auto vertexOffset = 29068;
static constexpr const auto fragmentOffset = 29239;
};
constexpr const char* ShaderSource<HillshadeProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<HillshadePrepareProgram> {
static constexpr const char* name = "hillshade_prepare";
static constexpr const uint8_t hash[8] = { 0xe6, 0x01, 0xf2, 0xbb, 0xa0, 0x77, 0x1d, 0xeb };
static constexpr const auto vertexOffset = 27925;
static constexpr const auto fragmentOffset = 28218;
static constexpr const auto vertexOffset = 27653;
static constexpr const auto fragmentOffset = 27946;
};
constexpr const char* ShaderSource<HillshadePrepareProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<LineProgram> {
static constexpr const char* name = "line";
static constexpr const uint8_t hash[8] = { 0x44, 0x46, 0x9e, 0x59, 0x02, 0xbb, 0xaa, 0xae };
static constexpr const auto vertexOffset = 30585;
static constexpr const auto fragmentOffset = 33509;
static constexpr const auto vertexOffset = 30313;
static constexpr const auto fragmentOffset = 33237;
};
constexpr const char* ShaderSource<LineProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<LineGradientProgram> {
static constexpr const char* name = "line_gradient";
static constexpr const uint8_t hash[8] = { 0xee, 0xdd, 0x10, 0x3d, 0x1a, 0x21, 0x26, 0x25 };
static constexpr const auto vertexOffset = 34335;
static constexpr const auto fragmentOffset = 37054;
static constexpr const auto vertexOffset = 34063;
static constexpr const auto fragmentOffset = 36782;
};
constexpr const char* ShaderSource<LineGradientProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<LinePatternProgram> {
static constexpr const char* name = "line_pattern";
static constexpr const uint8_t hash[8] = { 0x73, 0xa0, 0x59, 0x46, 0x57, 0xa5, 0x60, 0x25 };
static constexpr const auto vertexOffset = 37841;
static constexpr const auto fragmentOffset = 41162;
static constexpr const auto vertexOffset = 37569;
static constexpr const auto fragmentOffset = 40890;
};
constexpr const char* ShaderSource<LinePatternProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<LineSDFProgram> {
static constexpr const char* name = "line_sdf";
static constexpr const uint8_t hash[8] = { 0x66, 0x20, 0x75, 0x4e, 0xbe, 0x02, 0x9e, 0x67 };
static constexpr const auto vertexOffset = 43475;
static constexpr const auto fragmentOffset = 47089;
static constexpr const auto vertexOffset = 43203;
static constexpr const auto fragmentOffset = 46817;
};
constexpr const char* ShaderSource<LineSDFProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<RasterProgram> {
static constexpr const char* name = "raster";
static constexpr const uint8_t hash[8] = { 0x40, 0x3d, 0x6c, 0xf4, 0xd0, 0x41, 0x51, 0x0e };
static constexpr const auto vertexOffset = 48592;
static constexpr const auto fragmentOffset = 48941;
static constexpr const auto vertexOffset = 48320;
static constexpr const auto fragmentOffset = 48669;
};
constexpr const char* ShaderSource<RasterProgram>::name;

View File

@@ -12,453 +12,453 @@ namespace gl {
constexpr const uint8_t compressedShaderSource[] = {
0x78, 0xda, 0xed, 0x3d, 0xfd, 0x6f, 0xe3, 0x36, 0xb2, 0xf7, 0x73, 0xfe, 0x0a, 0x17, 0x05, 0x0e,
0x92, 0x2c, 0x5b, 0xb6, 0x93, 0xec, 0x97, 0x4e, 0xaf, 0x08, 0x76, 0xb3, 0x7d, 0x01, 0xda, 0xdd,
0x60, 0xd3, 0xf6, 0x15, 0x57, 0x2c, 0x0c, 0xc9, 0x56, 0x6c, 0xdf, 0xd9, 0x96, 0x9f, 0xad, 0x24,
0x76, 0x0e, 0xf9, 0xdf, 0x1f, 0x87, 0xdf, 0xa4, 0x48, 0x59, 0x76, 0x12, 0xe7, 0xe3, 0x19, 0x45,
0x37, 0x16, 0x39, 0x1c, 0x0e, 0xc9, 0xe1, 0x70, 0x66, 0x48, 0x0e, 0x7f, 0x1c, 0x5d, 0xf6, 0xd3,
0xcb, 0xda, 0xcf, 0xbf, 0x74, 0x4f, 0x2f, 0x0e, 0x66, 0xf3, 0xb4, 0x37, 0x5a, 0x8c, 0xb2, 0x69,
0x6d, 0x38, 0x1a, 0x0c, 0x67, 0xb5, 0xcb, 0x71, 0x16, 0xe7, 0xe1, 0xc1, 0x8f, 0xe9, 0x78, 0x91,
0x1e, 0xfc, 0x38, 0xba, 0xac, 0xfd, 0x80, 0x60, 0x47, 0xd3, 0xb4, 0xef, 0x8c, 0xb3, 0x9b, 0x99,
0x7b, 0xf0, 0x23, 0xf9, 0xac, 0xc1, 0x17, 0x82, 0x9a, 0xf6, 0x47, 0x97, 0x2a, 0xd8, 0x24, 0xed,
0x8f, 0xae, 0x26, 0x12, 0x24, 0x4d, 0x30, 0x02, 0xe3, 0x3a, 0x05, 0x28, 0xfe, 0xe4, 0x80, 0xe4,
0xcf, 0x75, 0xda, 0xeb, 0xd4, 0xae, 0xa6, 0xb3, 0xb8, 0xf7, 0xef, 0x2e, 0x26, 0xce, 0xe9, 0x65,
0xd3, 0x45, 0x4e, 0x08, 0xad, 0x41, 0x72, 0xda, 0xff, 0x23, 0x1e, 0x5f, 0xa5, 0x6e, 0xed, 0x3f,
0xa3, 0x29, 0x4b, 0x39, 0x9b, 0xe6, 0x38, 0x31, 0x42, 0x49, 0x8e, 0x0c, 0x14, 0x02, 0xcc, 0x75,
0x2b, 0x52, 0xc1, 0x82, 0xce, 0xf1, 0x9b, 0x70, 0x9e, 0xe6, 0x57, 0xf3, 0x69, 0x0d, 0x2a, 0x74,
0xae, 0x5b, 0xbe, 0x0a, 0xd1, 0xb8, 0x6e, 0x79, 0x08, 0xc8, 0x0d, 0xef, 0x64, 0x82, 0x32, 0xf4,
0xef, 0x28, 0x5f, 0x19, 0x48, 0xfa, 0x4a, 0x72, 0x28, 0x51, 0xe8, 0x7f, 0x9a, 0x20, 0x11, 0xc4,
0x40, 0x82, 0x8e, 0x52, 0x35, 0x69, 0xa4, 0x28, 0xe1, 0x06, 0xed, 0xce, 0xdb, 0x66, 0xcb, 0x9f,
0x64, 0x7d, 0xb5, 0xa0, 0xdf, 0x69, 0xb6, 0x5c, 0x42, 0xd0, 0x51, 0xad, 0x9f, 0xf6, 0xb2, 0x7e,
0xda, 0xed, 0x65, 0xe3, 0x6c, 0x4e, 0xc9, 0xc1, 0x84, 0xa6, 0x53, 0x48, 0xef, 0x7f, 0x84, 0x74,
0x44, 0x8c, 0xa8, 0xe8, 0xc8, 0x51, 0x3a, 0x55, 0x86, 0xfb, 0xab, 0xf5, 0x1d, 0x11, 0x75, 0x7c,
0x8c, 0x2a, 0xb5, 0xc3, 0xb4, 0x19, 0xcc, 0x01, 0x22, 0x81, 0xb4, 0x9c, 0x02, 0x4f, 0x46, 0xcb,
0x2e, 0x6e, 0x89, 0x44, 0x86, 0x34, 0x04, 0xbe, 0xdc, 0x59, 0xb9, 0xa0, 0x09, 0x15, 0x93, 0x47,
0x0a, 0x11, 0xe1, 0xcb, 0x9f, 0xed, 0xef, 0x7e, 0xce, 0x1a, 0x2b, 0x55, 0xa4, 0x35, 0xf8, 0x88,
0xd6, 0x84, 0x69, 0x5c, 0x14, 0xaa, 0xc2, 0x10, 0x93, 0xd1, 0x14, 0x67, 0x47, 0x4a, 0x9f, 0x61,
0x8a, 0xe5, 0xc2, 0x82, 0x00, 0xfa, 0x8d, 0x5a, 0xec, 0x86, 0x04, 0x43, 0xbc, 0xac, 0x84, 0xa1,
0xa3, 0x61, 0x38, 0x04, 0x0c, 0x52, 0x73, 0x19, 0x25, 0x3e, 0x43, 0xc8, 0x9a, 0xd8, 0xa9, 0x0d,
0xd2, 0xbc, 0x3b, 0x8b, 0xf3, 0x3c, 0x9d, 0x4f, 0xbb, 0xb3, 0x6c, 0xa1, 0xf4, 0xe5, 0x68, 0x99,
0x8e, 0x51, 0x9d, 0xd9, 0xbc, 0xdf, 0xbd, 0x9a, 0xcd, 0xd2, 0xb9, 0x6f, 0xc9, 0x44, 0x73, 0x54,
0xcb, 0xa4, 0x08, 0x17, 0xa3, 0x5b, 0x6d, 0x18, 0x46, 0xe3, 0xb4, 0x7b, 0x35, 0x1d, 0xe5, 0x8b,
0x6e, 0x9e, 0x75, 0x31, 0x8e, 0x85, 0x52, 0x30, 0x5b, 0x90, 0xde, 0xeb, 0xd4, 0xb2, 0xcb, 0xcb,
0x45, 0x9a, 0x47, 0xc0, 0x8d, 0xec, 0xff, 0x22, 0x41, 0x72, 0x45, 0x2e, 0xcc, 0x9b, 0x66, 0xcb,
0x94, 0x56, 0x2f, 0x52, 0xab, 0x40, 0xb1, 0xbe, 0x72, 0x4c, 0xf4, 0x79, 0x88, 0xa8, 0x3a, 0xa1,
0xc6, 0x0d, 0xe4, 0x62, 0xe1, 0xdd, 0xc1, 0xdf, 0x7e, 0x34, 0xcb, 0x38, 0x2a, 0x8b, 0x9e, 0x9f,
0x94, 0xfb, 0x1b, 0xa2, 0x7f, 0x3e, 0x4a, 0xae, 0xf2, 0x94, 0x74, 0x78, 0x0c, 0x83, 0x1e, 0xa2,
0x16, 0x5f, 0x66, 0xf3, 0x09, 0xe2, 0xb7, 0x1c, 0x31, 0x7d, 0x17, 0xfd, 0x99, 0x8f, 0x96, 0xe1,
0x75, 0x36, 0xea, 0xa3, 0xa4, 0xd1, 0xd4, 0x41, 0x63, 0x32, 0x18, 0x77, 0xcf, 0xb3, 0xc5, 0x28,
0x47, 0xad, 0x8b, 0x18, 0x84, 0x87, 0xa7, 0x37, 0x46, 0xe1, 0xb7, 0xfc, 0xb6, 0x0b, 0x1d, 0xc2,
0x50, 0x91, 0xf9, 0x43, 0x38, 0x96, 0xe3, 0xa7, 0xd3, 0x97, 0x89, 0xb3, 0x42, 0x0d, 0x9f, 0xe7,
0xf1, 0x80, 0x30, 0x3c, 0x2d, 0xe9, 0x09, 0xd8, 0x03, 0xda, 0xd5, 0x5f, 0xff, 0x38, 0xfd, 0xf6,
0xe9, 0xdb, 0xc9, 0xff, 0x74, 0xcf, 0xbe, 0x5c, 0x9c, 0x9f, 0x7e, 0xfc, 0xed, 0xeb, 0xb7, 0x03,
0xa5, 0x24, 0xa6, 0xa9, 0x8d, 0x24, 0x56, 0xc8, 0xda, 0x2c, 0x51, 0xa5, 0x36, 0x50, 0xa2, 0x15,
0x49, 0xda, 0xae, 0x3c, 0xb6, 0xdd, 0xb8, 0x34, 0x37, 0x29, 0xe4, 0xea, 0xac, 0x59, 0x06, 0x80,
0x39, 0xb0, 0xd0, 0x29, 0x8b, 0x5e, 0x3c, 0x96, 0xeb, 0x55, 0xd3, 0x93, 0x42, 0xba, 0x89, 0x57,
0x43, 0xe3, 0xf0, 0x5e, 0xc7, 0xf3, 0xd5, 0x68, 0x3a, 0x20, 0x49, 0xd7, 0x90, 0x84, 0xaa, 0x31,
0x24, 0x26, 0x5b, 0x0c, 0x39, 0x45, 0x17, 0xe9, 0x72, 0xc4, 0xd0, 0x25, 0xbe, 0xa1, 0x17, 0x7c,
0xde, 0x6e, 0x4f, 0x1f, 0x00, 0xdf, 0xdc, 0x44, 0x1f, 0x57, 0xce, 0x2a, 0x4e, 0xee, 0x5d, 0x71,
0xa2, 0x57, 0x9c, 0xac, 0xa9, 0x58, 0x65, 0x72, 0x99, 0x35, 0xf2, 0xb1, 0x9d, 0x6d, 0x92, 0xb9,
0x3d, 0x0f, 0x95, 0x4b, 0x4a, 0xca, 0x15, 0xf2, 0xf2, 0x74, 0x89, 0xe5, 0x8f, 0xce, 0x11, 0x13,
0x89, 0xa7, 0xf5, 0xa9, 0xc6, 0xd2, 0x17, 0xf1, 0x64, 0x36, 0x4e, 0xe7, 0x9d, 0x4f, 0x28, 0x6f,
0x34, 0x89, 0x07, 0xe9, 0xb6, 0xdc, 0x81, 0x73, 0x30, 0x06, 0xdc, 0xab, 0x58, 0x50, 0xd3, 0xd2,
0x3e, 0x9e, 0x7e, 0x4c, 0xa0, 0x47, 0xb0, 0x02, 0xa9, 0x9d, 0x14, 0xf0, 0x36, 0xf8, 0x6a, 0x0f,
0x49, 0x19, 0x02, 0x35, 0x5d, 0x0c, 0xb1, 0x40, 0x68, 0x47, 0x28, 0x1f, 0xc9, 0xea, 0xb4, 0xf3,
0xc9, 0xa1, 0x0d, 0xf0, 0x09, 0x3b, 0xa8, 0xe4, 0x20, 0xc6, 0x10, 0x04, 0x25, 0x2a, 0x41, 0x9d,
0x22, 0x45, 0x89, 0x8d, 0xa2, 0xc4, 0x48, 0x51, 0x37, 0x91, 0x69, 0xea, 0x98, 0x69, 0xea, 0xb8,
0xa1, 0x22, 0x98, 0xa0, 0x52, 0xd2, 0x06, 0x9f, 0x14, 0xf3, 0xf1, 0x88, 0xb9, 0xbb, 0x91, 0x71,
0x49, 0x96, 0x8d, 0xb9, 0x30, 0xb9, 0x19, 0xe5, 0x43, 0x04, 0x30, 0xd3, 0x73, 0x67, 0xa3, 0xbc,
0x37, 0x2c, 0xe6, 0x52, 0xb6, 0x43, 0x8d, 0x9c, 0x5f, 0x21, 0x2d, 0x04, 0xe3, 0xe0, 0x99, 0x92,
0x3a, 0x0f, 0xf2, 0x3e, 0x9e, 0xa4, 0xf3, 0x18, 0x26, 0x4d, 0x2f, 0x9d, 0xa2, 0x4e, 0xec, 0xf6,
0x47, 0x8b, 0x3c, 0x9e, 0xf6, 0x52, 0xb3, 0x64, 0x82, 0x06, 0x4f, 0xa1, 0xc5, 0xff, 0x7d, 0x72,
0xd1, 0xfd, 0xfd, 0xcb, 0xd9, 0xe7, 0xaf, 0xdf, 0x7e, 0xed, 0x52, 0xd9, 0x7f, 0xc0, 0x6a, 0x80,
0xc5, 0x51, 0x54, 0x00, 0x59, 0xdd, 0x5c, 0x42, 0x47, 0x08, 0xc0, 0xc3, 0x11, 0xd3, 0xf5, 0x86,
0x71, 0xaf, 0x94, 0x45, 0x32, 0xe8, 0x4a, 0xac, 0xd2, 0xae, 0x2c, 0x55, 0xd2, 0xc2, 0x6a, 0x20,
0x6c, 0x1e, 0xa3, 0xd5, 0x77, 0x61, 0xa6, 0x8c, 0xe4, 0x29, 0xa4, 0x31, 0x35, 0x80, 0xb6, 0x98,
0x40, 0x70, 0xea, 0x14, 0x25, 0xa1, 0x46, 0x33, 0x35, 0x0a, 0x55, 0x18, 0x56, 0xc9, 0x1a, 0x2a,
0x93, 0xf1, 0x95, 0xa5, 0xf7, 0x20, 0x47, 0xa1, 0x10, 0xe7, 0x52, 0xf2, 0x20, 0x93, 0x13, 0x27,
0x15, 0xc3, 0xe9, 0x1a, 0x5d, 0x05, 0xac, 0x6b, 0x48, 0xa2, 0x1c, 0x6e, 0x2e, 0x4f, 0x33, 0xad,
0x84, 0x71, 0x75, 0xa1, 0x48, 0x9b, 0x98, 0x39, 0x76, 0xf2, 0x24, 0x98, 0x12, 0x0a, 0x17, 0xf9,
0x3c, 0xfb, 0x77, 0x5a, 0xc6, 0x7a, 0x32, 0x84, 0x9d, 0x03, 0x65, 0x28, 0x13, 0x23, 0x2a, 0xf9,
0x65, 0xfc, 0xa8, 0x03, 0xae, 0xa7, 0xfd, 0x66, 0xd4, 0xcf, 0x87, 0xa5, 0xb4, 0x63, 0x88, 0x32,
0x16, 0x95, 0xe1, 0x2c, 0x8c, 0xaa, 0x80, 0xac, 0x61, 0x57, 0x1d, 0x76, 0x7d, 0x1b, 0x4a, 0x19,
0x45, 0x85, 0xb1, 0xf2, 0x8b, 0x0a, 0x66, 0x62, 0x1b, 0x0d, 0xa2, 0x8c, 0x7b, 0x8a, 0xa0, 0xc4,
0x5d, 0x20, 0x16, 0xc8, 0x43, 0xb4, 0x40, 0xf6, 0xe3, 0x3c, 0x96, 0xd6, 0x47, 0xf8, 0x85, 0xd6,
0xc8, 0x52, 0xf1, 0xd6, 0x23, 0x8a, 0xae, 0x6e, 0x62, 0x52, 0x19, 0xe6, 0x73, 0x51, 0xe7, 0x32,
0xf2, 0x74, 0x69, 0x16, 0x6d, 0x24, 0xb3, 0xc8, 0x9f, 0x48, 0xb7, 0x9d, 0x99, 0x54, 0xf2, 0x85,
0x00, 0xe3, 0x15, 0x9a, 0x04, 0x54, 0xb4, 0x89, 0x0c, 0x82, 0x7f, 0x0c, 0x35, 0x42, 0xb2, 0xcf,
0x84, 0x11, 0xaf, 0x4d, 0x93, 0x38, 0xd1, 0x46, 0x72, 0x85, 0xfe, 0x35, 0x54, 0x46, 0x73, 0x7c,
0x49, 0xcc, 0x98, 0xaa, 0xe4, 0x08, 0xb6, 0x11, 0x17, 0xf2, 0x87, 0x69, 0x44, 0xe5, 0x7c, 0x5f,
0x17, 0x24, 0xa6, 0xf1, 0x55, 0x11, 0x6e, 0x2d, 0x0a, 0xe4, 0x0f, 0x43, 0xd7, 0xc8, 0xd9, 0xbe,
0x2e, 0x23, 0x2c, 0x5c, 0xa0, 0xa2, 0xbc, 0xc7, 0x04, 0x57, 0x3f, 0xed, 0xd4, 0x89, 0xf1, 0xd3,
0x67, 0xbf, 0x69, 0x18, 0x75, 0xac, 0xd6, 0xe9, 0x8b, 0x7d, 0x56, 0x44, 0xa1, 0x89, 0x70, 0x85,
0xa0, 0x2e, 0x12, 0xbb, 0x06, 0xdc, 0x5d, 0x1e, 0xfa, 0xa7, 0x21, 0xb4, 0xc6, 0xde, 0x68, 0xde,
0x43, 0x7a, 0x13, 0xd1, 0x69, 0x22, 0x54, 0x15, 0x1e, 0x56, 0x04, 0xec, 0xb5, 0x9a, 0xc7, 0x6e,
0x88, 0x8c, 0x70, 0x47, 0xd7, 0x9e, 0x98, 0x8a, 0xdc, 0xcb, 0xe6, 0x53, 0xa4, 0x07, 0xcd, 0x98,
0x25, 0xa5, 0xa0, 0xa2, 0x25, 0x55, 0xad, 0x0c, 0x95, 0xd4, 0x0a, 0xd5, 0x23, 0x4a, 0xaa, 0xe7,
0x90, 0xc9, 0x57, 0x97, 0xfb, 0x1d, 0x34, 0x48, 0x55, 0x37, 0xbb, 0xab, 0x41, 0xbf, 0x50, 0x37,
0xd4, 0x6c, 0x9e, 0xfd, 0x2b, 0xed, 0xe5, 0x69, 0x9f, 0x91, 0xaf, 0xda, 0x72, 0x0a, 0x3d, 0xc4,
0xa6, 0xbb, 0x5f, 0xed, 0x9e, 0xa3, 0xd7, 0xd8, 0xbc, 0x09, 0x4a, 0x34, 0x43, 0x64, 0x51, 0xd9,
0x2d, 0x4d, 0x8d, 0x14, 0xea, 0x66, 0xa0, 0xcd, 0x2b, 0x29, 0x56, 0x6c, 0x94, 0xa5, 0xa7, 0x25,
0x1c, 0xcd, 0xe5, 0x6a, 0xd3, 0xa6, 0x96, 0x29, 0xbc, 0x06, 0x2a, 0xb7, 0xa8, 0x41, 0x2e, 0x7d,
0x13, 0xde, 0xdd, 0x49, 0xbc, 0x1e, 0x4f, 0xf3, 0x51, 0x3c, 0x1e, 0xc5, 0x0b, 0x2c, 0x2e, 0x11,
0xb3, 0x06, 0x9f, 0x4e, 0xff, 0x38, 0xfb, 0x78, 0xda, 0x3d, 0x3f, 0xfb, 0xf3, 0xf4, 0x97, 0xee,
0xb7, 0x93, 0xdf, 0xce, 0xbe, 0x06, 0xc6, 0x5a, 0x42, 0xb2, 0x60, 0x01, 0xe3, 0x1f, 0x3a, 0xb4,
0xbe, 0xe6, 0xd2, 0x67, 0xbf, 0x56, 0xbe, 0x82, 0xda, 0xa5, 0x8e, 0x2e, 0xeb, 0x4a, 0xf6, 0xd8,
0xea, 0xf6, 0x6e, 0x14, 0xe6, 0x47, 0xd6, 0x7c, 0x77, 0xa7, 0xbc, 0x3e, 0x85, 0xd2, 0xf9, 0x94,
0xaa, 0xe2, 0x13, 0xe8, 0x77, 0x54, 0xb7, 0xb3, 0x4d, 0x88, 0x2a, 0x9a, 0x9a, 0x95, 0xdb, 0x2b,
0x6b, 0x5d, 0x16, 0x3e, 0x5e, 0xaf, 0x47, 0xd9, 0x99, 0xb4, 0xaa, 0x42, 0xb4, 0x86, 0x03, 0x37,
0xd7, 0x64, 0xd6, 0xb0, 0xd7, 0x56, 0x3a, 0xc8, 0x5a, 0xc6, 0xb9, 0xb7, 0xde, 0x80, 0xd9, 0x02,
0x09, 0xf5, 0x90, 0x20, 0x61, 0x92, 0x7b, 0x9c, 0x4e, 0x07, 0x88, 0x32, 0xf2, 0x87, 0xc9, 0x57,
0x37, 0xb4, 0x8a, 0x6e, 0x8a, 0xe7, 0x36, 0xd4, 0x32, 0xd1, 0x02, 0x8a, 0xf3, 0x1b, 0x93, 0x78,
0xe9, 0x60, 0xa5, 0x59, 0x93, 0xcb, 0xca, 0x48, 0x75, 0xf3, 0x68, 0x31, 0xc9, 0xb2, 0x7c, 0xb8,
0xc8, 0xd3, 0x99, 0xd3, 0x6a, 0xb6, 0x7c, 0x1d, 0x91, 0xaf, 0x12, 0x48, 0xf4, 0x1b, 0x82, 0x83,
0xea, 0xa2, 0x91, 0xdc, 0x97, 0xb5, 0x7f, 0xd4, 0x10, 0x96, 0x76, 0xed, 0x27, 0xf8, 0x53, 0xfb,
0x50, 0x93, 0xb0, 0x17, 0x30, 0x43, 0x75, 0x1a, 0x76, 0xc2, 0xb0, 0xe6, 0x05, 0x48, 0x73, 0x8d,
0xf1, 0x16, 0x78, 0xdc, 0x49, 0xe6, 0x31, 0xbd, 0x4f, 0xe6, 0x18, 0x4f, 0xd3, 0x09, 0x25, 0x0d,
0xfa, 0x1e, 0x8e, 0xb3, 0xc7, 0xde, 0x12, 0xb1, 0xef, 0x72, 0x08, 0x72, 0xac, 0x2b, 0xec, 0x4d,
0x8a, 0xe6, 0x52, 0x6e, 0x16, 0x5d, 0x24, 0xcf, 0xec, 0x8a, 0x80, 0x76, 0x90, 0x7c, 0xcd, 0x09,
0x41, 0x0a, 0xd3, 0x2c, 0xe3, 0x52, 0xa0, 0xa2, 0xdf, 0x85, 0x47, 0x6c, 0xb3, 0x35, 0xbc, 0xdc,
0xd1, 0xc9, 0x0a, 0x99, 0xbd, 0x95, 0x36, 0xb7, 0x38, 0x4b, 0x1f, 0x21, 0x1d, 0x6e, 0xba, 0x80,
0x9c, 0x2a, 0x3b, 0x29, 0xb4, 0x8e, 0x90, 0xec, 0x60, 0xca, 0xbd, 0xf7, 0xcf, 0xd3, 0x6f, 0x5f,
0xb1, 0x4a, 0x86, 0xb7, 0xae, 0x83, 0xf6, 0x9b, 0x66, 0x2b, 0xe4, 0x1b, 0x73, 0x3f, 0x9f, 0xfc,
0x7e, 0x71, 0xd1, 0xfd, 0xf8, 0xf5, 0xf4, 0x33, 0x9a, 0x59, 0x87, 0xef, 0xdf, 0xbd, 0x3f, 0xea,
0x74, 0xde, 0xb5, 0x8e, 0x5a, 0xed, 0xa3, 0xc3, 0xce, 0xdb, 0x83, 0xaa, 0x5e, 0x04, 0xca, 0x19,
0xe4, 0x8f, 0xc1, 0x7e, 0x22, 0x19, 0xbe, 0x60, 0x13, 0xcd, 0xd0, 0x94, 0x19, 0x21, 0xda, 0x6c,
0xb4, 0xcd, 0x4b, 0xd4, 0x83, 0x7b, 0x16, 0xe8, 0x09, 0x08, 0x3c, 0x82, 0xfd, 0x6e, 0x25, 0x6b,
0x8d, 0x20, 0xbc, 0x88, 0x16, 0xff, 0x3b, 0xcf, 0x9d, 0x06, 0x4a, 0xf6, 0xc6, 0xd9, 0xc0, 0x81,
0xd1, 0x08, 0x48, 0x03, 0x03, 0x69, 0x8c, 0x03, 0x31, 0x10, 0xae, 0x1b, 0x1c, 0xa2, 0x21, 0xe2,
0x43, 0x1a, 0x5d, 0x78, 0x7a, 0xc5, 0xa1, 0x26, 0xfb, 0x99, 0x1e, 0x4f, 0x88, 0x2e, 0xd8, 0x60,
0xc4, 0xf6, 0xca, 0x16, 0x64, 0x92, 0xeb, 0x26, 0x63, 0x9d, 0x02, 0x13, 0x21, 0x61, 0x94, 0x24,
0xc0, 0x6f, 0xeb, 0xc4, 0xc2, 0x03, 0x4d, 0x6d, 0x33, 0x90, 0x98, 0x0b, 0x16, 0xb6, 0xdf, 0x98,
0xa1, 0xad, 0x6a, 0x13, 0x6d, 0x4e, 0x15, 0xc6, 0x24, 0xb9, 0xfd, 0xa8, 0x81, 0xba, 0xd1, 0x43,
0x63, 0x86, 0xff, 0xef, 0x67, 0xb9, 0xc3, 0xe9, 0xf2, 0xf9, 0x2f, 0xc6, 0x0f, 0xd7, 0xf1, 0x38,
0x22, 0x68, 0x3c, 0xa9, 0x59, 0x9e, 0x20, 0xdb, 0x4b, 0x97, 0x33, 0xa7, 0xaf, 0xad, 0x4a, 0x78,
0xe0, 0x50, 0x51, 0xd8, 0x3d, 0x62, 0xff, 0xbb, 0x3b, 0xd8, 0x87, 0xbe, 0xc9, 0xe6, 0xe3, 0x7e,
0xd5, 0x9d, 0xdc, 0x8d, 0x96, 0x24, 0x8f, 0x22, 0x97, 0xb6, 0x6e, 0x9b, 0xcb, 0x28, 0x26, 0x7f,
0xe9, 0xf7, 0x0a, 0xc4, 0x56, 0x83, 0xa4, 0xad, 0xe4, 0xcd, 0xce, 0xe2, 0xce, 0xa1, 0x29, 0x87,
0x2c, 0xc9, 0x73, 0x94, 0x62, 0xdf, 0xf5, 0x5f, 0xd3, 0x08, 0x7a, 0x54, 0xc4, 0xb0, 0xab, 0x86,
0x81, 0xdd, 0xe6, 0x5c, 0xda, 0x7c, 0x53, 0xa0, 0x44, 0xe5, 0x3e, 0x96, 0x12, 0xb9, 0x0f, 0x73,
0x4d, 0x1b, 0xd6, 0x7b, 0x1d, 0x2c, 0x68, 0x55, 0xd1, 0x1d, 0x0a, 0x89, 0xf1, 0xb4, 0x37, 0xcc,
0xe6, 0xe6, 0x3c, 0x36, 0x99, 0x8a, 0x98, 0xc6, 0x71, 0x2f, 0x35, 0xf0, 0xc1, 0x62, 0x38, 0xba,
0xcc, 0xc3, 0x4a, 0x9c, 0x54, 0xbe, 0x06, 0xda, 0x5d, 0x17, 0x6c, 0x84, 0xe8, 0xec, 0x61, 0xa4,
0xe8, 0xc9, 0xd3, 0x2c, 0xff, 0x7d, 0x01, 0xe9, 0xda, 0xbe, 0xb0, 0xe4, 0x73, 0x3a, 0xcf, 0xd0,
0x74, 0x2b, 0xb0, 0xa2, 0xe8, 0x0f, 0xc2, 0x89, 0xf2, 0xbc, 0x17, 0x54, 0x51, 0x28, 0x46, 0x55,
0xa4, 0x22, 0x6d, 0xde, 0xa8, 0xc5, 0xb2, 0xf1, 0x18, 0x9f, 0xbd, 0xe9, 0xce, 0xd2, 0xf9, 0x62,
0x86, 0xe0, 0x46, 0xd7, 0x29, 0x62, 0x05, 0x34, 0x15, 0xa2, 0xde, 0x18, 0x71, 0x04, 0x1a, 0xba,
0xe3, 0x3a, 0xc8, 0x0c, 0xa7, 0xa4, 0xe5, 0x81, 0xb5, 0x76, 0x17, 0xab, 0xb8, 0x47, 0x30, 0xfc,
0x6b, 0xf5, 0x3e, 0x26, 0x2a, 0x74, 0xcf, 0x8f, 0xc3, 0x47, 0xbb, 0x4e, 0x87, 0x71, 0x8d, 0xbf,
0xc7, 0x2b, 0x69, 0x55, 0xc8, 0x86, 0x25, 0x62, 0xac, 0x82, 0xa7, 0x30, 0x1d, 0x13, 0x91, 0x88,
0xe7, 0xf0, 0x7d, 0x06, 0x94, 0x1a, 0x25, 0xe3, 0xd9, 0x30, 0x8e, 0x50, 0xff, 0x85, 0x46, 0x29,
0x87, 0x1b, 0xcd, 0x1a, 0xee, 0x61, 0x60, 0xec, 0x71, 0x63, 0x55, 0xd5, 0xfe, 0xab, 0x06, 0x53,
0xd1, 0xa4, 0xff, 0x4a, 0x25, 0xf1, 0x74, 0xa5, 0xa5, 0xef, 0x48, 0x71, 0x4a, 0x92, 0xb1, 0xbc,
0x17, 0x35, 0xdb, 0xe1, 0xdd, 0x4e, 0x66, 0xe1, 0xb3, 0x9a, 0x6e, 0x5a, 0xba, 0xb6, 0xad, 0xac,
0x2d, 0xd2, 0xe6, 0x64, 0xa6, 0xa4, 0xec, 0x67, 0xae, 0x71, 0xe6, 0xca, 0xf4, 0xcd, 0xe2, 0x7e,
0x1f, 0x75, 0x60, 0xf7, 0x32, 0xee, 0xe5, 0x19, 0xf8, 0x59, 0x3b, 0x85, 0x89, 0xcd, 0xf9, 0xa7,
0x30, 0x9d, 0xd5, 0xc2, 0x8f, 0x31, 0xbb, 0xd9, 0xf8, 0x47, 0x71, 0xb2, 0x10, 0x02, 0xa6, 0xb9,
0x72, 0x25, 0x65, 0x56, 0xd0, 0xa7, 0xd2, 0x13, 0x6a, 0xfc, 0x10, 0x6d, 0xe0, 0xdf, 0x2e, 0xa5,
0x5e, 0x52, 0x1b, 0xf8, 0xea, 0x7f, 0x8d, 0xa0, 0xb0, 0xf7, 0x9d, 0xd5, 0xfd, 0x3c, 0xb8, 0x5e,
0x17, 0x6f, 0x92, 0x6a, 0xb1, 0xb1, 0x70, 0xeb, 0x6d, 0x2b, 0xd5, 0x7a, 0x54, 0x9c, 0x75, 0xd8,
0x11, 0x67, 0x85, 0x60, 0xcd, 0xa1, 0xa4, 0x35, 0xc7, 0x2d, 0xf5, 0x3e, 0x09, 0x5d, 0xd8, 0x33,
0xe1, 0x0c, 0x0d, 0x1e, 0xb5, 0x36, 0xb2, 0x58, 0x8d, 0xc0, 0x81, 0x61, 0x14, 0x15, 0x0b, 0x8e,
0x8d, 0x4a, 0x59, 0x55, 0x8c, 0x7f, 0x80, 0xa5, 0xd2, 0xfe, 0x20, 0xc5, 0x7c, 0x6b, 0x74, 0x1d,
0x95, 0xfa, 0xb7, 0x1a, 0xca, 0xe6, 0x25, 0xf4, 0x74, 0x43, 0xc7, 0x6c, 0x75, 0x32, 0x11, 0xef,
0xe3, 0xdd, 0xee, 0x0e, 0xc3, 0x1a, 0x36, 0x3e, 0xd6, 0x1e, 0x7d, 0xdd, 0x90, 0xbe, 0x97, 0x76,
0x92, 0xea, 0x39, 0x1d, 0x08, 0x2a, 0x18, 0xa8, 0x4f, 0x7e, 0x66, 0x63, 0x07, 0xc7, 0x1a, 0xaa,
0xf2, 0xf0, 0x93, 0x6c, 0xfc, 0x3d, 0xf0, 0xa6, 0xd9, 0x23, 0x6f, 0xdc, 0x6c, 0xb4, 0x7b, 0x62,
0xb0, 0x45, 0x1f, 0xe4, 0xf8, 0xe7, 0x06, 0xb2, 0xc2, 0xe8, 0x6f, 0x30, 0x58, 0xe5, 0xb6, 0xc1,
0xb9, 0xca, 0xc7, 0xa3, 0x69, 0xe9, 0x51, 0x39, 0x05, 0xc4, 0x2e, 0x63, 0x14, 0x30, 0x93, 0xac,
0x51, 0x01, 0xca, 0xb8, 0xaa, 0x00, 0xf9, 0x8a, 0x64, 0x8f, 0xda, 0xe1, 0xca, 0x97, 0x49, 0x16,
0x29, 0x00, 0x7e, 0x61, 0x30, 0x4c, 0xb2, 0x49, 0xc3, 0xb9, 0x55, 0x6f, 0x3e, 0xb5, 0xac, 0xc2,
0x3c, 0x1b, 0x39, 0xaa, 0x6e, 0x1e, 0x28, 0x1a, 0x77, 0x1d, 0x26, 0x4d, 0x00, 0x5e, 0x61, 0xc6,
0xf5, 0x56, 0x01, 0xa7, 0xf6, 0xf9, 0xce, 0x59, 0xf3, 0xa1, 0xb8, 0x6b, 0x8d, 0xab, 0xcd, 0x22,
0xcf, 0x94, 0xb6, 0x6f, 0xc3, 0x26, 0xf7, 0x94, 0x91, 0x42, 0x53, 0x14, 0x6a, 0x2c, 0xa2, 0xbd,
0xc1, 0xa5, 0x60, 0x36, 0x47, 0xf6, 0xd0, 0x8a, 0x29, 0x88, 0x44, 0x79, 0x07, 0xb7, 0xa5, 0xb6,
0x01, 0x0a, 0xca, 0x37, 0x60, 0xd1, 0x35, 0x41, 0x99, 0x6c, 0xcf, 0xc1, 0xc5, 0x99, 0x10, 0xde,
0x9d, 0x83, 0xf7, 0xe1, 0x6e, 0x10, 0xb1, 0xb3, 0x1b, 0xd8, 0xb8, 0xb9, 0xef, 0x0d, 0xa0, 0xea,
0xcb, 0xc0, 0xb3, 0x3f, 0xd2, 0xcd, 0xee, 0x71, 0x5c, 0xce, 0xb3, 0x89, 0x19, 0x8f, 0x0c, 0x61,
0x60, 0xd3, 0xf6, 0x15, 0x57, 0x2c, 0x0c, 0xc9, 0x56, 0x1c, 0xdf, 0xd9, 0x96, 0x9f, 0xad, 0x24,
0x76, 0x0e, 0xf9, 0xdf, 0x1f, 0x87, 0xdf, 0xa4, 0x48, 0x59, 0xb6, 0x13, 0xe7, 0xe3, 0x19, 0x45,
0x37, 0x16, 0x39, 0x1c, 0x0e, 0xc9, 0xe1, 0x70, 0x66, 0x48, 0x0e, 0x7f, 0x1c, 0x5e, 0xf6, 0xd3,
0xcb, 0xda, 0xcf, 0xbf, 0x74, 0x4f, 0x2f, 0x0e, 0xa6, 0xb3, 0xb4, 0x37, 0x9c, 0x0f, 0xb3, 0x49,
0xed, 0x6a, 0x38, 0xb8, 0x9a, 0xd6, 0x2e, 0x47, 0x59, 0x9c, 0x87, 0x07, 0x3f, 0xa6, 0xa3, 0x79,
0x7a, 0xf0, 0xe3, 0xf0, 0xb2, 0xf6, 0x03, 0x82, 0x1d, 0x4e, 0xd2, 0xbe, 0x33, 0xca, 0x6e, 0xa7,
0xee, 0xc1, 0x8f, 0xe4, 0xb3, 0x06, 0x5f, 0x08, 0x6a, 0xd2, 0x1f, 0x5e, 0xaa, 0x60, 0xe3, 0xb4,
0x3f, 0xbc, 0x1e, 0x4b, 0x90, 0x34, 0xc1, 0x08, 0x8c, 0xeb, 0x14, 0xa0, 0xf8, 0x93, 0x03, 0x92,
0x3f, 0x37, 0x69, 0xaf, 0x53, 0xbb, 0x9e, 0x4c, 0xe3, 0xde, 0xbf, 0xbb, 0x98, 0x38, 0xa7, 0x97,
0x4d, 0xe6, 0x39, 0x21, 0xb4, 0x06, 0xc9, 0x69, 0xff, 0x8f, 0x78, 0x74, 0x9d, 0xba, 0xb5, 0xff,
0x0c, 0x27, 0x2c, 0xe5, 0x6c, 0x92, 0xe3, 0xc4, 0x08, 0x25, 0x39, 0x32, 0x50, 0x08, 0x30, 0x37,
0xad, 0x48, 0x05, 0x0b, 0x3a, 0xc7, 0x6f, 0xc2, 0x59, 0x9a, 0x5f, 0xcf, 0x26, 0x35, 0xa8, 0xd0,
0xb9, 0x69, 0xf9, 0x2a, 0x44, 0xe3, 0xa6, 0xe5, 0x21, 0x20, 0x37, 0xbc, 0x97, 0x09, 0xca, 0xd0,
0xbf, 0xc3, 0x7c, 0x69, 0x20, 0xe9, 0x2b, 0xc9, 0xa1, 0x44, 0xa1, 0xff, 0x69, 0x82, 0x44, 0x10,
0x03, 0x09, 0x3a, 0x4a, 0xd5, 0xa4, 0x91, 0xa2, 0x84, 0x1b, 0xb4, 0x3b, 0x6f, 0x9b, 0x2d, 0x7f,
0x9c, 0xf5, 0xd5, 0x82, 0x7e, 0xa7, 0xd9, 0x72, 0x09, 0x41, 0x47, 0xb5, 0x7e, 0xda, 0xcb, 0xfa,
0x69, 0xb7, 0x97, 0x8d, 0xb2, 0x19, 0x25, 0x07, 0x13, 0x9a, 0x4e, 0x20, 0xbd, 0xff, 0x11, 0xd2,
0x11, 0x31, 0xa2, 0xa2, 0x23, 0x47, 0xe9, 0x54, 0x19, 0xee, 0xaf, 0xd6, 0x77, 0x44, 0xd4, 0xf1,
0x31, 0xaa, 0xd4, 0x0e, 0xd3, 0x66, 0x30, 0x07, 0x88, 0x04, 0xd2, 0x72, 0x0a, 0x3c, 0x1e, 0x2e,
0xba, 0xb8, 0x25, 0x12, 0x19, 0xd2, 0x10, 0xf8, 0x72, 0x67, 0xe5, 0x82, 0x26, 0x54, 0x4c, 0x1e,
0x29, 0x44, 0x84, 0x2f, 0x7f, 0xb6, 0xbf, 0xfb, 0x39, 0x6b, 0xac, 0x54, 0x91, 0xd6, 0xe0, 0x23,
0x5a, 0x13, 0xa6, 0x71, 0x5e, 0xa8, 0x0a, 0x43, 0x8c, 0x87, 0x13, 0x9c, 0x1d, 0x29, 0x7d, 0x86,
0x29, 0x96, 0x0b, 0x0b, 0x02, 0xe8, 0x37, 0x6a, 0xb1, 0x1b, 0x12, 0x0c, 0xf1, 0xa2, 0x12, 0x86,
0x8e, 0x86, 0xe1, 0x10, 0x30, 0x48, 0xcd, 0x65, 0x94, 0xf8, 0x0c, 0x21, 0x6b, 0x62, 0xa7, 0x36,
0x48, 0xf3, 0xee, 0x34, 0xce, 0xf3, 0x74, 0x36, 0xe9, 0x4e, 0xb3, 0xb9, 0xd2, 0x97, 0xc3, 0x45,
0x3a, 0x42, 0x75, 0x66, 0xb3, 0x7e, 0xf7, 0x7a, 0x3a, 0x4d, 0x67, 0xbe, 0x25, 0x13, 0xcd, 0x51,
0x2d, 0x93, 0x22, 0x9c, 0x0f, 0xef, 0xb4, 0x61, 0x18, 0x8e, 0xd2, 0xee, 0xf5, 0x64, 0x98, 0xcf,
0xbb, 0x79, 0xd6, 0xc5, 0x38, 0xe6, 0x4a, 0xc1, 0x6c, 0x4e, 0x7a, 0xaf, 0x53, 0xcb, 0x2e, 0x2f,
0xe7, 0x69, 0x1e, 0x01, 0x37, 0xb2, 0xff, 0x8b, 0x04, 0xc9, 0x15, 0xb9, 0x30, 0x6f, 0x9a, 0x2d,
0x53, 0x5a, 0xbd, 0x48, 0xad, 0x02, 0xc5, 0xfa, 0xca, 0x31, 0xd1, 0xe7, 0x21, 0xa2, 0xea, 0x84,
0x1a, 0x37, 0x90, 0x8b, 0x85, 0xf7, 0x07, 0x7f, 0xfb, 0xd1, 0x2c, 0xe3, 0xa8, 0x2c, 0x7a, 0x7e,
0x52, 0xee, 0x6f, 0x88, 0xfe, 0xd9, 0x30, 0xb9, 0xce, 0x53, 0xd2, 0xe1, 0x31, 0x0c, 0x7a, 0x88,
0x5a, 0x7c, 0x99, 0xcd, 0xc6, 0x88, 0xdf, 0x72, 0xc4, 0xf4, 0x5d, 0xf4, 0x67, 0x36, 0x5c, 0x84,
0x37, 0xd9, 0xb0, 0x8f, 0x92, 0x86, 0x13, 0x07, 0x8d, 0xc9, 0x60, 0xd4, 0x3d, 0xcf, 0xe6, 0xc3,
0x1c, 0xb5, 0x2e, 0x62, 0x10, 0x1e, 0x9e, 0xde, 0x18, 0x85, 0xdf, 0xf2, 0xdb, 0x2e, 0x74, 0x08,
0x43, 0x45, 0xe6, 0x0f, 0xe1, 0x58, 0x8e, 0x9f, 0x4e, 0x5f, 0x26, 0xce, 0x0a, 0x35, 0x7c, 0x9e,
0xc5, 0x03, 0xc2, 0xf0, 0xb4, 0xa4, 0x27, 0x60, 0x0f, 0x68, 0x57, 0x7f, 0xfd, 0xe3, 0xf4, 0xdb,
0xa7, 0x6f, 0x27, 0xff, 0xd3, 0x3d, 0xfb, 0x72, 0x71, 0x7e, 0xfa, 0xf1, 0xb7, 0xaf, 0xdf, 0x0e,
0x94, 0x92, 0x98, 0xa6, 0x36, 0x92, 0x58, 0x21, 0x6b, 0xb3, 0x44, 0x95, 0xda, 0x40, 0x89, 0x56,
0x24, 0x69, 0xbb, 0xf2, 0xd8, 0x76, 0xe3, 0xd2, 0xdc, 0xa4, 0x90, 0xab, 0xb3, 0x66, 0x19, 0x00,
0xe6, 0xc0, 0x42, 0xa7, 0xcc, 0x7b, 0xf1, 0x48, 0xae, 0x57, 0x4d, 0x4f, 0x0a, 0xe9, 0x26, 0x5e,
0x0d, 0x8d, 0xc3, 0x7b, 0x13, 0xcf, 0x96, 0xc3, 0xc9, 0x80, 0x24, 0xdd, 0x40, 0x12, 0xaa, 0xc6,
0x90, 0x98, 0x6c, 0x30, 0xe4, 0x14, 0x5d, 0xa4, 0xcb, 0x11, 0x43, 0x97, 0xf8, 0x86, 0x5e, 0xf0,
0x79, 0xbb, 0x3d, 0x7d, 0x00, 0x7c, 0x73, 0x13, 0x7d, 0x5c, 0x39, 0xab, 0x38, 0xd9, 0xba, 0xe2,
0x44, 0xaf, 0x38, 0x59, 0x51, 0xb1, 0xca, 0xe4, 0x32, 0x6b, 0xe4, 0x23, 0x3b, 0xdb, 0x24, 0x33,
0x7b, 0x1e, 0x2a, 0x97, 0x94, 0x94, 0x2b, 0xe4, 0xe5, 0xe9, 0x02, 0xcb, 0x1f, 0x9d, 0x23, 0xc6,
0x12, 0x4f, 0xeb, 0x53, 0x8d, 0xa5, 0xcf, 0xe3, 0xf1, 0x74, 0x94, 0xce, 0x3a, 0x9f, 0x50, 0xde,
0x70, 0x1c, 0x0f, 0xd2, 0x4d, 0xb9, 0x03, 0xe7, 0x60, 0x0c, 0xb8, 0x57, 0xb1, 0xa0, 0xa6, 0xa5,
0x7d, 0x3c, 0xfd, 0x98, 0x40, 0x8f, 0x60, 0x05, 0x52, 0x3b, 0x29, 0xe0, 0x6d, 0xf0, 0xd5, 0x1e,
0x92, 0x32, 0x04, 0x6a, 0xba, 0x18, 0x62, 0x81, 0xd0, 0x8e, 0x50, 0x3e, 0x92, 0xd5, 0x69, 0xe7,
0x93, 0x43, 0x1b, 0xe0, 0x13, 0x76, 0x50, 0xc9, 0x41, 0x8c, 0x21, 0x08, 0x4a, 0x54, 0x82, 0x3a,
0x45, 0x8a, 0x12, 0x1b, 0x45, 0x89, 0x91, 0xa2, 0x6e, 0x22, 0xd3, 0xd4, 0x31, 0xd3, 0xd4, 0x71,
0x43, 0x45, 0x30, 0x41, 0xa5, 0xa4, 0x0d, 0x3e, 0x29, 0xe6, 0xe3, 0x11, 0x73, 0x77, 0x23, 0xe3,
0x92, 0x2c, 0x1b, 0x71, 0x61, 0x72, 0x3b, 0xcc, 0xaf, 0x10, 0xc0, 0x54, 0xcf, 0x9d, 0x0e, 0xf3,
0xde, 0x55, 0x31, 0x97, 0xb2, 0x1d, 0x6a, 0xe4, 0xec, 0x1a, 0x69, 0x21, 0x18, 0x07, 0xcf, 0x94,
0xd4, 0x79, 0x90, 0xf7, 0xf1, 0x38, 0x9d, 0xc5, 0x30, 0x69, 0x7a, 0xe9, 0x04, 0x75, 0x62, 0xb7,
0x3f, 0x9c, 0xe7, 0xf1, 0xa4, 0x97, 0x9a, 0x25, 0x13, 0x34, 0x78, 0x02, 0x2d, 0xfe, 0xef, 0x93,
0x8b, 0xee, 0xef, 0x5f, 0xce, 0x3e, 0x7f, 0xfd, 0xf6, 0x6b, 0x97, 0xca, 0xfe, 0x03, 0x56, 0x03,
0x2c, 0x8e, 0xa2, 0x02, 0xc8, 0xea, 0xe6, 0x12, 0x3a, 0x42, 0x00, 0x1e, 0x8e, 0x98, 0xae, 0x37,
0x8c, 0x7b, 0xa5, 0x2c, 0x92, 0x41, 0x57, 0x62, 0x95, 0x76, 0x65, 0xa9, 0x92, 0x16, 0x56, 0x03,
0x61, 0xb3, 0x18, 0xad, 0xbe, 0x73, 0x33, 0x65, 0x24, 0x4f, 0x21, 0x8d, 0xa9, 0x01, 0xb4, 0xc5,
0x04, 0x82, 0x53, 0xa7, 0x28, 0x09, 0x35, 0x9a, 0xa9, 0x51, 0xa8, 0xc2, 0xb0, 0x4a, 0x56, 0x50,
0x99, 0x8c, 0xae, 0x2d, 0xbd, 0x07, 0x39, 0x0a, 0x85, 0x38, 0x97, 0x92, 0x07, 0x99, 0x9c, 0x38,
0xa9, 0x18, 0x4e, 0xd7, 0xe8, 0x2a, 0x60, 0x5d, 0x41, 0x12, 0xe5, 0x70, 0x73, 0x79, 0x9a, 0x69,
0x25, 0x8c, 0xab, 0x0b, 0x45, 0xda, 0xc4, 0xcc, 0xb1, 0x93, 0x27, 0xc1, 0x94, 0x50, 0x38, 0xcf,
0x67, 0xd9, 0xbf, 0xd3, 0x32, 0xd6, 0x93, 0x21, 0xec, 0x1c, 0x28, 0x43, 0x99, 0x18, 0x51, 0xc9,
0x2f, 0xe3, 0x47, 0x1d, 0x70, 0x35, 0xed, 0xb7, 0xc3, 0x7e, 0x7e, 0x55, 0x4a, 0x3b, 0x86, 0x28,
0x63, 0x51, 0x19, 0xce, 0xc2, 0xa8, 0x0a, 0xc8, 0x0a, 0x76, 0xd5, 0x61, 0x57, 0xb7, 0xa1, 0x94,
0x51, 0x54, 0x18, 0x2b, 0xbf, 0xa8, 0x60, 0x26, 0xb6, 0xd1, 0x20, 0xca, 0xb8, 0xa7, 0x08, 0x4a,
0xdc, 0x05, 0x62, 0x81, 0x3c, 0x44, 0x0b, 0x64, 0x3f, 0xce, 0x63, 0x69, 0x7d, 0x84, 0x5f, 0x68,
0x8d, 0x2c, 0x15, 0x6f, 0x3d, 0xa2, 0xe8, 0xea, 0x26, 0x26, 0x95, 0x61, 0x3e, 0x17, 0x75, 0x2e,
0x23, 0x4f, 0x97, 0x66, 0xd1, 0x5a, 0x32, 0x8b, 0xfc, 0x89, 0x74, 0xdb, 0x99, 0x49, 0x25, 0x5f,
0x08, 0x30, 0x5e, 0xa1, 0x49, 0x40, 0x45, 0xeb, 0xc8, 0x20, 0xf8, 0xc7, 0x50, 0x23, 0x24, 0xfb,
0x4c, 0x18, 0xf1, 0xda, 0x34, 0x89, 0x13, 0xad, 0x25, 0x57, 0xe8, 0x5f, 0x43, 0x65, 0x34, 0xc7,
0x97, 0xc4, 0x8c, 0xa9, 0x4a, 0x8e, 0x60, 0x13, 0x71, 0x21, 0x7f, 0x98, 0x46, 0x54, 0xce, 0xf7,
0x75, 0x41, 0x62, 0x1a, 0x5f, 0x15, 0xe1, 0xc6, 0xa2, 0x40, 0xfe, 0x30, 0x74, 0x8d, 0x9c, 0xed,
0xeb, 0x32, 0xc2, 0xc2, 0x05, 0x2a, 0xca, 0x2d, 0x26, 0xb8, 0xfa, 0x69, 0xa7, 0x4e, 0x8c, 0x9f,
0x3e, 0xfb, 0x4d, 0xc3, 0xa8, 0x63, 0xb5, 0x4e, 0x5f, 0xec, 0xb3, 0x22, 0x0a, 0x4d, 0x84, 0x2b,
0x04, 0x75, 0x91, 0xd8, 0x35, 0xe0, 0xee, 0xf2, 0xd0, 0x3f, 0x0d, 0xa1, 0x35, 0xf6, 0x86, 0xb3,
0x1e, 0xd2, 0x9b, 0x88, 0x4e, 0x13, 0xa1, 0xaa, 0xf0, 0xb0, 0x22, 0x60, 0xaf, 0xd5, 0x3c, 0x76,
0x43, 0x64, 0x84, 0x3b, 0xba, 0xf6, 0xc4, 0x54, 0xe4, 0x5e, 0x36, 0x9b, 0x20, 0x3d, 0x68, 0xca,
0x2c, 0x29, 0x05, 0x15, 0x2d, 0xa9, 0x6a, 0x65, 0xa8, 0xa4, 0x56, 0xa8, 0x1e, 0x51, 0x52, 0x3d,
0x87, 0x4c, 0xbe, 0xba, 0xdc, 0xef, 0xa0, 0x41, 0xaa, 0xba, 0xd9, 0x7d, 0x0d, 0xfa, 0x85, 0xba,
0xa1, 0xa6, 0xb3, 0xec, 0x5f, 0x69, 0x2f, 0x4f, 0xfb, 0x8c, 0x7c, 0xd5, 0x96, 0x53, 0xe8, 0x21,
0x36, 0xdd, 0x76, 0xb5, 0x7b, 0x8e, 0x5e, 0x63, 0xf3, 0x36, 0x28, 0xd1, 0x0c, 0x91, 0x45, 0x65,
0xb7, 0x34, 0x35, 0x52, 0xa8, 0x9b, 0x81, 0x36, 0xaf, 0xa4, 0x58, 0xb1, 0x51, 0x96, 0x9e, 0x96,
0x70, 0x34, 0x17, 0xcb, 0x75, 0x9b, 0x5a, 0xa6, 0xf0, 0x1a, 0xa8, 0xdc, 0xa0, 0x06, 0xb9, 0xf4,
0x6d, 0x78, 0x7f, 0x2f, 0xf1, 0x7a, 0x3c, 0xc9, 0x87, 0xf1, 0x68, 0x18, 0xcf, 0xb1, 0xb8, 0x44,
0xcc, 0x1a, 0x7c, 0x3a, 0xfd, 0xe3, 0xec, 0xe3, 0x69, 0xf7, 0xfc, 0xec, 0xcf, 0xd3, 0x5f, 0xba,
0xdf, 0x4e, 0x7e, 0x3b, 0xfb, 0x1a, 0x18, 0x6b, 0x09, 0xc9, 0x82, 0x05, 0x8c, 0x7f, 0xe8, 0xd0,
0xfa, 0x9a, 0x0b, 0x9f, 0xfd, 0x5a, 0xfa, 0x0a, 0x6a, 0x97, 0x3a, 0xba, 0xac, 0x2b, 0xd9, 0x63,
0xab, 0xdb, 0xbb, 0x51, 0x98, 0x1f, 0x59, 0xf3, 0xdd, 0x9d, 0xf2, 0xfa, 0x14, 0x4a, 0xe7, 0x53,
0xaa, 0x8a, 0x4f, 0xa0, 0xdf, 0x51, 0xdd, 0xce, 0x36, 0x21, 0xaa, 0x68, 0x6a, 0x56, 0x6e, 0xaf,
0xac, 0x75, 0x59, 0xf8, 0x78, 0xb5, 0x1e, 0x65, 0x67, 0xd2, 0xaa, 0x0a, 0xd1, 0x0a, 0x0e, 0x5c,
0x5f, 0x93, 0x59, 0xc1, 0x5e, 0x1b, 0xe9, 0x20, 0x2b, 0x19, 0x67, 0x6b, 0xbd, 0x01, 0xb3, 0x05,
0x12, 0xea, 0x21, 0x41, 0xc2, 0x24, 0xf7, 0x28, 0x9d, 0x0c, 0x10, 0x65, 0xe4, 0x0f, 0x93, 0xaf,
0x6e, 0x68, 0x15, 0xdd, 0x14, 0xcf, 0x5d, 0xa8, 0x65, 0xa2, 0x05, 0x14, 0xe7, 0x37, 0xc6, 0xf1,
0xc2, 0xc1, 0x4a, 0xb3, 0x26, 0x97, 0x95, 0x91, 0xea, 0xe6, 0xd1, 0x7c, 0x9c, 0x65, 0xf9, 0xd5,
0x3c, 0x4f, 0xa7, 0x4e, 0xab, 0xd9, 0xf2, 0x75, 0x44, 0xbe, 0x4a, 0x20, 0xd1, 0x6f, 0x08, 0x0e,
0xaa, 0x8b, 0x46, 0x72, 0x5f, 0xd6, 0xfe, 0x51, 0x43, 0x58, 0xda, 0xb5, 0x9f, 0xe0, 0x4f, 0xed,
0x43, 0x4d, 0xc2, 0x5e, 0xc0, 0x0c, 0xd5, 0x69, 0xd8, 0x09, 0xc3, 0x9a, 0x17, 0x20, 0xcd, 0x35,
0xc6, 0x5b, 0xe0, 0x71, 0x27, 0x99, 0xc7, 0xf4, 0x3e, 0x99, 0x63, 0x3c, 0x4d, 0x27, 0x94, 0x34,
0xe8, 0x2d, 0x1c, 0x67, 0x8f, 0xbd, 0x25, 0x62, 0xdf, 0xe5, 0x10, 0xe4, 0x58, 0x57, 0xd8, 0xdb,
0x14, 0xcd, 0xa5, 0xdc, 0x2c, 0xba, 0x48, 0x9e, 0xd9, 0x15, 0x01, 0xed, 0x20, 0xf9, 0x9a, 0x13,
0x82, 0x14, 0xa6, 0x59, 0xc6, 0xa5, 0x40, 0x45, 0xbf, 0x0b, 0x8f, 0xd8, 0x7a, 0x6b, 0x78, 0xb9,
0xa3, 0x93, 0x15, 0x32, 0x7b, 0x2b, 0x6d, 0x6e, 0x71, 0x96, 0x3e, 0x44, 0x3a, 0xdc, 0x64, 0x0e,
0x39, 0x55, 0x76, 0x52, 0x68, 0x1d, 0x21, 0xd9, 0xc1, 0x94, 0x7b, 0xef, 0x9f, 0xa7, 0xdf, 0xbe,
0x62, 0x95, 0x0c, 0x6f, 0x5d, 0x07, 0xed, 0x37, 0xcd, 0x56, 0xc8, 0x37, 0xe6, 0x7e, 0x3e, 0xf9,
0xfd, 0xe2, 0xa2, 0xfb, 0xf1, 0xeb, 0xe9, 0x67, 0x34, 0xb3, 0x0e, 0xdf, 0xbf, 0x7b, 0x7f, 0xd4,
0xe9, 0xbc, 0x6b, 0x1d, 0xb5, 0xda, 0x47, 0x87, 0x9d, 0xb7, 0x07, 0x55, 0xbd, 0x08, 0x94, 0x33,
0xc8, 0x1f, 0x83, 0xfd, 0x44, 0x32, 0x7c, 0xc1, 0x26, 0x9a, 0xa1, 0x29, 0x33, 0x42, 0xb4, 0xde,
0x68, 0x9b, 0x97, 0xa8, 0x07, 0xf7, 0x2c, 0xd0, 0x13, 0x10, 0x78, 0x04, 0xfb, 0xdd, 0x4a, 0xd6,
0x1a, 0x41, 0x78, 0x11, 0xcd, 0xff, 0x77, 0x96, 0x3b, 0x0d, 0x94, 0xec, 0x8d, 0xb2, 0x81, 0x03,
0xa3, 0x11, 0x90, 0x06, 0x06, 0xd2, 0x18, 0x07, 0x62, 0x20, 0x5c, 0x37, 0x38, 0x44, 0x43, 0xc4,
0x87, 0x34, 0xba, 0xf0, 0xf4, 0x8a, 0x43, 0x4d, 0xf6, 0x33, 0x3d, 0x9e, 0x10, 0x5d, 0xb0, 0xc1,
0x88, 0xed, 0x95, 0xcd, 0xc9, 0x24, 0xd7, 0x4d, 0xc6, 0x3a, 0x05, 0x26, 0x42, 0xc2, 0x28, 0x49,
0x80, 0xdf, 0x56, 0x89, 0x85, 0x07, 0x9a, 0xda, 0x66, 0x20, 0x31, 0x17, 0x2c, 0x6c, 0xbf, 0x36,
0x43, 0x5b, 0xd5, 0x26, 0xda, 0x9c, 0x2a, 0x8c, 0x49, 0x72, 0xfb, 0x51, 0x03, 0x75, 0xa3, 0x87,
0xc6, 0x0c, 0xff, 0xdf, 0xcf, 0x72, 0x87, 0xd3, 0xe5, 0xf3, 0x5f, 0x8c, 0x1f, 0x6e, 0xe2, 0x51,
0x44, 0xd0, 0x78, 0x52, 0xb3, 0x3c, 0x41, 0xb6, 0x97, 0x2e, 0xa6, 0x4e, 0x5f, 0x5b, 0x95, 0xf0,
0xc0, 0xa1, 0xa2, 0xb0, 0x7b, 0xc4, 0xfe, 0x77, 0x77, 0xb0, 0x0f, 0x7d, 0x9b, 0xcd, 0x46, 0xfd,
0xaa, 0x3b, 0xb9, 0x6b, 0x2d, 0x49, 0x1e, 0x45, 0x2e, 0x6d, 0xdd, 0x36, 0x17, 0x51, 0x4c, 0xfe,
0xd2, 0xef, 0x25, 0x88, 0xad, 0x06, 0x49, 0x5b, 0xca, 0x9b, 0x9d, 0xc5, 0x9d, 0x43, 0x53, 0x0e,
0x59, 0x92, 0x67, 0x28, 0xc5, 0xbe, 0xeb, 0xbf, 0xa2, 0x11, 0xf4, 0xa8, 0x88, 0x61, 0x57, 0x0d,
0x03, 0xbb, 0xcd, 0x99, 0xb4, 0xf9, 0xa6, 0x40, 0x89, 0xca, 0x7d, 0x2c, 0x25, 0x72, 0x1f, 0xe6,
0x9a, 0x36, 0xac, 0x5b, 0x1d, 0x2c, 0x68, 0x55, 0xd1, 0x1d, 0x0a, 0x89, 0xf1, 0xa4, 0x77, 0x95,
0xcd, 0xcc, 0x79, 0x6c, 0x32, 0x15, 0x31, 0x8d, 0xe2, 0x5e, 0x6a, 0xe0, 0x83, 0xf9, 0xd5, 0xf0,
0x32, 0x0f, 0x2b, 0x71, 0x52, 0xf9, 0x1a, 0x68, 0x77, 0x5d, 0xb0, 0x11, 0xa2, 0xb3, 0x87, 0x91,
0xa2, 0x27, 0x4f, 0xb2, 0xfc, 0xf7, 0x39, 0xa4, 0x6b, 0xfb, 0xc2, 0x92, 0xcf, 0xe9, 0x3c, 0x43,
0xd3, 0xad, 0xc0, 0x8a, 0xa2, 0x3f, 0x08, 0x27, 0xca, 0xf3, 0x5e, 0x50, 0x45, 0xa1, 0x18, 0x55,
0x91, 0x8a, 0xb4, 0x79, 0xab, 0x16, 0xcb, 0x46, 0x23, 0x7c, 0xf6, 0xa6, 0x3b, 0x4d, 0x67, 0xf3,
0x29, 0x82, 0x1b, 0xde, 0xa4, 0x88, 0x15, 0xd0, 0x54, 0x88, 0x7a, 0x23, 0xc4, 0x11, 0x68, 0xe8,
0x8e, 0xeb, 0x20, 0x33, 0x9c, 0x92, 0x96, 0x07, 0xd6, 0xda, 0x5d, 0xac, 0xe2, 0x1e, 0xc1, 0xf0,
0xaf, 0xd4, 0xfb, 0x98, 0xa8, 0xd0, 0x3d, 0x3f, 0x0e, 0x1f, 0xed, 0x3a, 0x1d, 0xc6, 0x15, 0xfe,
0x1e, 0xaf, 0xa4, 0x55, 0x21, 0x1b, 0x96, 0x88, 0xb1, 0x0a, 0x9e, 0xc2, 0x74, 0x4c, 0x44, 0x22,
0x9e, 0xc3, 0xdb, 0x0c, 0x28, 0x35, 0x4a, 0x46, 0xd3, 0xab, 0x38, 0x42, 0xfd, 0x17, 0x1a, 0xa5,
0x1c, 0x6e, 0x34, 0x6b, 0xb8, 0x87, 0x81, 0xb1, 0xc7, 0x8d, 0x55, 0x55, 0xfb, 0xaf, 0x1a, 0x4c,
0x45, 0x93, 0xfe, 0x2b, 0x95, 0xc4, 0xd3, 0x95, 0x96, 0xbe, 0x27, 0xc5, 0x29, 0x49, 0xc6, 0xf2,
0x5e, 0xd4, 0x6c, 0x87, 0xf7, 0x3b, 0x99, 0x85, 0xcf, 0x6a, 0xba, 0x69, 0xe9, 0xda, 0xb6, 0xb2,
0xb6, 0x48, 0x9b, 0x93, 0x99, 0x92, 0xb2, 0x9f, 0xb9, 0xc6, 0x99, 0x2b, 0xd3, 0x37, 0x8d, 0xfb,
0x7d, 0xd4, 0x81, 0xdd, 0xcb, 0xb8, 0x97, 0x67, 0xe0, 0x67, 0xed, 0x14, 0x26, 0x36, 0xe7, 0x9f,
0xc2, 0x74, 0x56, 0x0b, 0x3f, 0xc6, 0xec, 0x66, 0xe3, 0x1f, 0xc5, 0xc9, 0x5c, 0x08, 0x98, 0xe6,
0xd2, 0x95, 0x94, 0x59, 0x41, 0x9f, 0x4a, 0x4f, 0xa8, 0xf1, 0x43, 0xb4, 0x86, 0x7f, 0xbb, 0x94,
0x7a, 0x49, 0x6d, 0xe0, 0xab, 0xff, 0x0d, 0x82, 0xc2, 0xde, 0x77, 0x56, 0xf7, 0xf3, 0xe0, 0x7a,
0x5d, 0xbc, 0x49, 0xaa, 0xc5, 0xda, 0xc2, 0xad, 0xb7, 0xa9, 0x54, 0xeb, 0x51, 0x71, 0xd6, 0x61,
0x47, 0x9c, 0x15, 0x82, 0x35, 0x87, 0x92, 0xd6, 0x1c, 0xb7, 0xd4, 0xfb, 0x24, 0x74, 0x61, 0xcf,
0x84, 0x33, 0x34, 0x78, 0xd4, 0xda, 0xc8, 0x62, 0x35, 0x02, 0x07, 0x86, 0x51, 0x54, 0x2c, 0x38,
0x36, 0x2a, 0x65, 0x55, 0x31, 0xfe, 0x01, 0x96, 0x4a, 0xfb, 0x83, 0x14, 0xf3, 0xad, 0xd1, 0x75,
0x54, 0xea, 0xdf, 0x6a, 0x28, 0x9b, 0x97, 0xd0, 0xd3, 0x0d, 0x1d, 0xb3, 0xd5, 0xc9, 0x44, 0xbc,
0x8f, 0xf7, 0xbb, 0x3b, 0x0c, 0x6b, 0xd8, 0xf8, 0x58, 0x79, 0xf4, 0x75, 0x4d, 0xfa, 0x5e, 0xda,
0x49, 0xaa, 0xe7, 0x74, 0x20, 0xa8, 0x60, 0xa0, 0x3e, 0xf9, 0x99, 0x8d, 0x1d, 0x1c, 0x6b, 0xa8,
0xca, 0xc3, 0x4f, 0xb2, 0xf1, 0xf7, 0xc0, 0x9b, 0x66, 0x8f, 0xbc, 0x71, 0xb3, 0xd6, 0xee, 0x89,
0xc1, 0x16, 0x7d, 0x90, 0xe3, 0x9f, 0x6b, 0xc8, 0x0a, 0xa3, 0xbf, 0xc1, 0x60, 0x95, 0xdb, 0x06,
0xe7, 0x3a, 0x1f, 0x0d, 0x27, 0xa5, 0x47, 0xe5, 0x14, 0x10, 0xbb, 0x8c, 0x51, 0xc0, 0x4c, 0xb2,
0x46, 0x05, 0x28, 0xe3, 0xaa, 0x02, 0xe4, 0x2b, 0x92, 0x3d, 0x6a, 0x87, 0x2b, 0x5f, 0x26, 0x59,
0xa4, 0x00, 0xf8, 0x85, 0xc1, 0x30, 0xc9, 0x26, 0x0d, 0xe7, 0x46, 0xbd, 0xf9, 0xd4, 0xb2, 0x0a,
0xf3, 0x6c, 0xe4, 0xa8, 0xba, 0x79, 0xa0, 0x68, 0xdc, 0x75, 0x98, 0x34, 0x01, 0x78, 0x85, 0x19,
0xd7, 0x5b, 0x05, 0x9c, 0xda, 0xe7, 0x3b, 0x67, 0xcd, 0x87, 0xe2, 0xae, 0x15, 0xae, 0x36, 0x8b,
0x3c, 0x53, 0xda, 0xbe, 0x09, 0x9b, 0x6c, 0x29, 0x23, 0x85, 0xa6, 0x28, 0xd4, 0x58, 0x44, 0x7b,
0x83, 0x4b, 0xc1, 0x6c, 0x86, 0xec, 0xa1, 0x25, 0x53, 0x10, 0x89, 0xf2, 0x0e, 0x6e, 0x4b, 0x6d,
0x03, 0x14, 0x94, 0x6f, 0xc0, 0xa2, 0x6b, 0x82, 0x32, 0xd9, 0x9e, 0x83, 0x8b, 0x33, 0x21, 0xbc,
0x3b, 0x07, 0xef, 0xc3, 0xdd, 0x20, 0x62, 0x67, 0x37, 0xb0, 0x71, 0xb3, 0xed, 0x0d, 0xa0, 0xea,
0xcb, 0xc0, 0xb3, 0x3f, 0xd2, 0xcd, 0xee, 0x71, 0x5c, 0xce, 0xb2, 0xb1, 0x19, 0x8f, 0x0c, 0x61,
0xa4, 0x15, 0x56, 0x29, 0x19, 0x48, 0x25, 0x98, 0x5e, 0x04, 0x95, 0xb2, 0x4d, 0x44, 0xd3, 0xe1,
0xd1, 0xe1, 0x2a, 0x10, 0x9e, 0x67, 0xe5, 0x64, 0x23, 0x43, 0x67, 0x1d, 0xd1, 0x79, 0x56, 0x42,
0xd1, 0xe1, 0x2a, 0x10, 0x9e, 0x67, 0xe5, 0x64, 0x23, 0x43, 0x67, 0x15, 0xd1, 0x79, 0x56, 0x42,
0x32, 0xca, 0xac, 0x40, 0x30, 0x81, 0xaa, 0xbe, 0x5a, 0x3d, 0xd5, 0x91, 0x5c, 0x65, 0xb8, 0xe5,
0x8f, 0x28, 0xee, 0x9a, 0x06, 0x49, 0xda, 0x8b, 0x56, 0x47, 0x31, 0xda, 0x76, 0xb0, 0xc4, 0xcf,
0x8f, 0x28, 0xee, 0x9a, 0x06, 0x49, 0xda, 0x8b, 0x56, 0x47, 0x31, 0xda, 0x74, 0xb0, 0xc4, 0xcf,
0x28, 0xee, 0x16, 0x3b, 0xd9, 0x58, 0x21, 0x82, 0x35, 0x77, 0xb5, 0x7c, 0x91, 0x16, 0x2e, 0x4d,
0x45, 0x32, 0x4d, 0x70, 0xe8, 0x44, 0x81, 0x80, 0xdb, 0x53, 0x2a, 0xc4, 0xed, 0x4d, 0xa8, 0xe3,
0x45, 0x32, 0x4d, 0x70, 0xe8, 0x44, 0x81, 0x80, 0xdb, 0x53, 0x2a, 0xc4, 0xdd, 0x6d, 0xa8, 0xe3,
0x48, 0x22, 0x51, 0x91, 0x09, 0x83, 0x92, 0x8f, 0xca, 0x53, 0x07, 0x18, 0x08, 0x9e, 0x6f, 0xd8,
0x1f, 0x47, 0x85, 0x4c, 0x73, 0x19, 0x8a, 0xfb, 0xbc, 0x6a, 0x0e, 0x3b, 0x0b, 0x03, 0x24, 0x5c,
0x50, 0x9f, 0x12, 0xc9, 0x61, 0xc7, 0x5b, 0xf2, 0x4c, 0x4d, 0xbf, 0x09, 0xab, 0x2d, 0xef, 0x40,
0x2b, 0x12, 0xe6, 0xb3, 0x71, 0xbc, 0xa2, 0x37, 0x04, 0xc9, 0x56, 0xb0, 0x23, 0x77, 0x41, 0x73,
0xd9, 0x90, 0xfb, 0xac, 0xb9, 0x74, 0x03, 0x41, 0xbe, 0xaf, 0x82, 0xae, 0x54, 0xd0, 0x95, 0x0c,
0x1f, 0x47, 0x85, 0x4c, 0x73, 0x11, 0x8a, 0xfb, 0xbc, 0x6a, 0x0e, 0x3b, 0x0b, 0x03, 0x24, 0x5c,
0x50, 0x9f, 0x12, 0xc9, 0x61, 0xc7, 0x5b, 0xf2, 0x4c, 0x4d, 0xbf, 0x0d, 0xab, 0x2d, 0xef, 0x40,
0x2b, 0x12, 0xe6, 0xd3, 0x51, 0xbc, 0xa4, 0x37, 0x04, 0xc9, 0x56, 0xb0, 0x23, 0x77, 0x41, 0x73,
0xd1, 0x90, 0xfb, 0xac, 0xb9, 0x70, 0x03, 0x41, 0xbe, 0xaf, 0x82, 0x2e, 0x55, 0xd0, 0xa5, 0x0c,
0x6a, 0xaa, 0x2f, 0x29, 0xd6, 0x97, 0xa8, 0xf5, 0x25, 0x25, 0xf5, 0x25, 0x6a, 0x7d, 0x49, 0xa1,
0xbe, 0x7b, 0x5e, 0xa4, 0xe4, 0x1d, 0xee, 0xa9, 0x9d, 0xe4, 0xf3, 0x31, 0x7a, 0xa8, 0x9b, 0x93,
0x74, 0x00, 0xd5, 0x7a, 0x12, 0x4b, 0x3d, 0x5b, 0x28, 0x64, 0x6b, 0x6e, 0x3b, 0xda, 0xf7, 0x21,
0x99, 0x78, 0xbc, 0x8c, 0xfb, 0xe9, 0xa3, 0x2e, 0x79, 0xbb, 0x5b, 0xb5, 0x76, 0xbd, 0xdc, 0x3c,
0xe6, 0x5a, 0xf1, 0x18, 0xc7, 0x0e, 0x95, 0xce, 0xda, 0x46, 0xa0, 0x97, 0xf6, 0xc6, 0x8b, 0x13,
0xd8, 0x9b, 0x5d, 0xca, 0xb5, 0x5c, 0xc9, 0x7d, 0xa2, 0x0b, 0xb9, 0x96, 0xeb, 0xb8, 0x0f, 0x76,
0x19, 0xf7, 0x91, 0x8d, 0x0a, 0xd3, 0xf5, 0x5e, 0x10, 0x44, 0xd4, 0xf3, 0xef, 0xed, 0x30, 0x8e,
0xc1, 0xf3, 0xb0, 0x24, 0xf6, 0x66, 0xc3, 0xde, 0x6c, 0xd8, 0x9b, 0x0d, 0x7b, 0xb3, 0xc1, 0x62,
0x36, 0xfc, 0x33, 0xcb, 0x26, 0xf7, 0x37, 0x1d, 0x5e, 0xbb, 0x55, 0xb0, 0x93, 0x18, 0x2c, 0xa5,
0xa6, 0x03, 0x1f, 0xa7, 0x1d, 0x98, 0x0f, 0x85, 0xba, 0xd6, 0x5b, 0x03, 0x8a, 0xce, 0xff, 0x10,
0x41, 0x4e, 0xf6, 0xaa, 0xff, 0x5e, 0xf5, 0xdf, 0xab, 0xfe, 0xaf, 0x4b, 0xf5, 0xaf, 0xa8, 0xa8,
0xef, 0x46, 0x45, 0x3f, 0x44, 0xa9, 0x63, 0x38, 0x8b, 0xae, 0xc6, 0x46, 0x63, 0x53, 0x8a, 0x67,
0xcb, 0xfb, 0xb7, 0x8a, 0x2c, 0xc1, 0xb9, 0xe2, 0x70, 0xbe, 0x2e, 0x09, 0xaf, 0xd3, 0x79, 0x3e,
0x42, 0x12, 0xb6, 0x3b, 0x80, 0x63, 0x34, 0xe9, 0x34, 0x0f, 0xd7, 0x1f, 0x8f, 0x04, 0xd5, 0x6f,
0x8a, 0x90, 0xa0, 0x52, 0xa9, 0xb2, 0x15, 0x7c, 0x84, 0xe4, 0x22, 0xdb, 0xdd, 0x31, 0x5f, 0x9d,
0x8d, 0xad, 0x77, 0x63, 0x51, 0x8e, 0xfd, 0x6e, 0x12, 0xe4, 0x96, 0xdf, 0x51, 0x60, 0x10, 0x25,
0xd2, 0x6b, 0x58, 0x72, 0x39, 0x6a, 0xb8, 0xe6, 0x72, 0xd4, 0xb0, 0xc2, 0x35, 0x89, 0x61, 0x95,
0x3b, 0x31, 0xf7, 0x3d, 0x62, 0x53, 0xfd, 0xac, 0x44, 0x15, 0x35, 0x1a, 0x8f, 0x87, 0xdc, 0x0a,
0x48, 0x30, 0xc5, 0xe0, 0x40, 0xc9, 0x3e, 0x1b, 0x24, 0xe3, 0xcd, 0x20, 0x52, 0x70, 0x83, 0x61,
0x90, 0x0b, 0x0f, 0x6d, 0xb7, 0x92, 0x86, 0xec, 0x56, 0xd2, 0xb0, 0xec, 0x56, 0x12, 0x2b, 0xbe,
0xc9, 0x08, 0x14, 0xcf, 0x6e, 0x3c, 0xe0, 0x31, 0x1d, 0x3c, 0x31, 0xc9, 0x0c, 0x89, 0xa4, 0xa9,
0x82, 0x04, 0xf3, 0x6d, 0x88, 0x3b, 0x0a, 0xae, 0x68, 0x82, 0x77, 0x00, 0x3e, 0xdc, 0x90, 0xd2,
0xcf, 0x12, 0xc9, 0x27, 0xf3, 0x2c, 0x90, 0xa0, 0x96, 0x04, 0x47, 0x73, 0x89, 0x2f, 0x30, 0xad,
0xd5, 0xf3, 0x72, 0x7c, 0x54, 0xb0, 0x55, 0xfb, 0x89, 0x76, 0x4d, 0xed, 0x03, 0x1e, 0x1f, 0xd0,
0xfe, 0xa4, 0x0b, 0x9c, 0xd7, 0x38, 0x14, 0x2d, 0xfe, 0xd9, 0x9c, 0x7b, 0xad, 0x66, 0xa7, 0xdd,
0x79, 0x53, 0x27, 0x9f, 0x03, 0xf4, 0xf9, 0xb6, 0x7d, 0xdc, 0xa1, 0x9f, 0x09, 0xfa, 0x6c, 0xbd,
0xed, 0x74, 0x42, 0x3a, 0xbd, 0xd5, 0x43, 0x8b, 0xfc, 0x1c, 0x2c, 0x61, 0xd4, 0x49, 0x02, 0x62,
0x04, 0x8b, 0x1d, 0x0e, 0x77, 0xe8, 0x8b, 0x7f, 0x30, 0x28, 0x46, 0x53, 0x8f, 0x64, 0x60, 0xee,
0x72, 0x99, 0xc3, 0xe1, 0xd0, 0x6c, 0x8a, 0xfa, 0x8e, 0x1c, 0xe8, 0x85, 0xeb, 0x3a, 0xa4, 0xfd,
0x41, 0xfb, 0xcd, 0xe1, 0xbb, 0x23, 0x08, 0x00, 0xcb, 0x85, 0x9e, 0x2b, 0xaa, 0x97, 0x4b, 0x82,
0xd8, 0x06, 0x61, 0xdb, 0xd0, 0x05, 0xa0, 0x0b, 0x51, 0x4d, 0x49, 0x96, 0xe8, 0x84, 0x7a, 0x11,
0x0a, 0x30, 0xfa, 0x12, 0x46, 0x12, 0x12, 0x82, 0x0e, 0xc3, 0xaa, 0xf6, 0x43, 0x04, 0x77, 0x3b,
0x6a, 0xff, 0x91, 0x20, 0xbc, 0x88, 0xd5, 0x58, 0x90, 0xa9, 0x6e, 0xdd, 0x31, 0xa4, 0x7a, 0xa4,
0x79, 0x4e, 0x5e, 0xc7, 0x6c, 0xe0, 0xcd, 0xb2, 0x1b, 0x87, 0x8c, 0x57, 0xd0, 0x3e, 0x6e, 0xd1,
0x93, 0xa0, 0x3e, 0xb4, 0x04, 0x0d, 0x06, 0xfa, 0x78, 0xff, 0xce, 0x37, 0xb7, 0x08, 0x68, 0xc5,
0x21, 0x77, 0xbb, 0x74, 0x30, 0xeb, 0xb4, 0xe7, 0xd8, 0xd8, 0xca, 0x54, 0xca, 0xcb, 0x49, 0x73,
0x4e, 0xd1, 0x43, 0x5d, 0x87, 0x32, 0x76, 0x9a, 0xed, 0xd2, 0x81, 0xa5, 0x88, 0x07, 0x2a, 0xe2,
0x81, 0x1d, 0xf1, 0xa0, 0x1c, 0xf1, 0x40, 0x43, 0x9c, 0xa8, 0x88, 0x13, 0x3b, 0xe2, 0xa4, 0x1c,
0x71, 0x42, 0x11, 0x4b, 0xb7, 0x18, 0x94, 0x75, 0xa9, 0xe4, 0x76, 0xad, 0xb4, 0x72, 0x3d, 0x5b,
0x8f, 0x9b, 0xb6, 0x5c, 0xd1, 0x53, 0xb5, 0x46, 0x7f, 0xdc, 0xfa, 0x85, 0xfe, 0x11, 0xb5, 0x8c,
0x7b, 0xe8, 0x10, 0xd5, 0xb7, 0x5f, 0x60, 0x54, 0x69, 0xbd, 0x83, 0x07, 0x50, 0x38, 0x94, 0xe0,
0x76, 0xb0, 0x8c, 0x99, 0x42, 0x7c, 0x18, 0xf4, 0x90, 0x02, 0xd6, 0x87, 0x55, 0x43, 0x64, 0xb2,
0x86, 0xea, 0x15, 0x6d, 0xa9, 0xa8, 0x59, 0x3f, 0x31, 0xe0, 0xde, 0x7b, 0x33, 0x9f, 0xa1, 0x37,
0x13, 0x73, 0xe9, 0x46, 0xaa, 0x97, 0xc6, 0x93, 0x9b, 0x69, 0x5e, 0x9b, 0x6b, 0x5b, 0x05, 0x4e,
0x8b, 0xb6, 0xe1, 0xa7, 0xbd, 0xbb, 0xf4, 0xe5, 0x9c, 0xb2, 0x28, 0x53, 0x61, 0xe9, 0x0d, 0x92,
0xfe, 0x20, 0xe5, 0x77, 0xb6, 0x64, 0x90, 0xd7, 0xef, 0x67, 0x7d, 0x08, 0x1d, 0x9e, 0xe4, 0xdc,
0x46, 0x16, 0x5d, 0x7d, 0xad, 0x8e, 0x7f, 0xcb, 0x8f, 0xb9, 0x80, 0x97, 0x86, 0xe1, 0x8e, 0x60,
0x0f, 0xb2, 0xf6, 0xf7, 0xbf, 0xd7, 0x98, 0xa6, 0x1a, 0x81, 0xa2, 0x2a, 0x25, 0xdc, 0x22, 0x08,
0xa2, 0x44, 0x1f, 0xfc, 0x44, 0xd6, 0xe5, 0x83, 0x0f, 0xe4, 0x85, 0x07, 0x79, 0x3c, 0xfd, 0x5b,
0x4f, 0x53, 0x32, 0x76, 0x72, 0xe4, 0x64, 0x37, 0x07, 0x4e, 0x68, 0x2d, 0x4c, 0x75, 0xb0, 0x18,
0x33, 0x15, 0xad, 0x91, 0xc3, 0x87, 0xb0, 0x46, 0xe0, 0xca, 0xe2, 0x6b, 0x31, 0x41, 0x58, 0xb7,
0x36, 0xe7, 0x03, 0xae, 0xd5, 0xdb, 0xb4, 0x79, 0x8c, 0x19, 0x87, 0x95, 0x83, 0xa6, 0xf8, 0xf4,
0xd7, 0xa1, 0x5b, 0xd0, 0xeb, 0x69, 0x5e, 0x9b, 0x3c, 0x2d, 0xb2, 0x7b, 0x37, 0xff, 0x36, 0x5a,
0xe7, 0xe3, 0xaa, 0x8f, 0xbb, 0xd2, 0x01, 0x5f, 0xf7, 0xbe, 0x02, 0x1e, 0xa8, 0xf5, 0xba, 0x94,
0x75, 0x14, 0xaa, 0xe9, 0x45, 0xfb, 0xdd, 0x88, 0xfd, 0x6e, 0xc4, 0xd6, 0xbb, 0x11, 0xf4, 0x71,
0xa0, 0x25, 0x7d, 0xae, 0xc7, 0xbe, 0x21, 0x51, 0xd8, 0xb7, 0xa0, 0x25, 0x3c, 0x4d, 0x5e, 0xed,
0xc3, 0xd1, 0x18, 0x8f, 0x81, 0x56, 0x8d, 0x37, 0xa3, 0xf4, 0x93, 0x2d, 0xe8, 0xcc, 0x43, 0x05,
0x8c, 0xa9, 0xd4, 0xe5, 0xfd, 0xd1, 0x04, 0x96, 0xe1, 0x6c, 0x1a, 0x56, 0x8b, 0x6c, 0x41, 0x89,
0x7e, 0x88, 0x31, 0x91, 0xc3, 0x3a, 0x90, 0x80, 0x57, 0xb3, 0xc5, 0x68, 0x8c, 0x60, 0x21, 0x98,
0x99, 0x4c, 0x19, 0xbd, 0x38, 0x8e, 0x8d, 0x0c, 0x47, 0xca, 0x40, 0x3a, 0x39, 0x68, 0xc3, 0x81,
0x92, 0xc4, 0xce, 0x02, 0x2b, 0xa4, 0x06, 0xef, 0xda, 0xef, 0x71, 0xf4, 0x2e, 0x8c, 0xa4, 0x4e,
0x2b, 0x2a, 0x79, 0x55, 0x49, 0x7b, 0x39, 0x4e, 0x09, 0x5d, 0x55, 0x45, 0x17, 0xb0, 0x77, 0xb3,
0xce, 0x3a, 0xb7, 0x19, 0x12, 0xce, 0x85, 0xe7, 0x55, 0xe2, 0x25, 0x4e, 0x27, 0xdf, 0x48, 0x99,
0x3d, 0x1d, 0xa7, 0xd7, 0xa0, 0x7f, 0x4e, 0x1d, 0x1a, 0xe9, 0x19, 0x09, 0x01, 0x9f, 0x2e, 0x3b,
0xa3, 0x78, 0xc1, 0x42, 0x6a, 0xe0, 0x50, 0xbb, 0x45, 0xbe, 0x22, 0x12, 0xcc, 0xc3, 0x01, 0xe2,
0xf8, 0x03, 0x54, 0x38, 0x10, 0xe4, 0xbc, 0x8e, 0xff, 0x0c, 0xe8, 0xe3, 0x55, 0xf8, 0x23, 0x21,
0x1f, 0xe4, 0x5f, 0x37, 0x40, 0xda, 0x3e, 0x52, 0xcd, 0x0a, 0xef, 0xb1, 0x94, 0x0f, 0x16, 0xd6,
0xf4, 0x25, 0xa2, 0xa1, 0x4f, 0xea, 0xd8, 0x52, 0x68, 0xd0, 0x82, 0xc8, 0x94, 0xe1, 0x3f, 0x57,
0x58, 0xf5, 0x65, 0x6a, 0x73, 0x62, 0x2d, 0xdb, 0xb2, 0x15, 0xe9, 0x59, 0x8b, 0xac, 0xad, 0xad,
0x5f, 0x85, 0xd2, 0x96, 0x52, 0x24, 0x35, 0x14, 0x91, 0xf3, 0x2f, 0x2b, 0x50, 0xa3, 0x62, 0x1c,
0x54, 0x21, 0xc2, 0x4c, 0xff, 0xb0, 0xa4, 0xb7, 0xcc, 0x25, 0x46, 0x15, 0xc8, 0x33, 0x97, 0x4c,
0x97, 0xf1, 0x60, 0x90, 0xe2, 0xb8, 0x1b, 0x30, 0xa3, 0x81, 0x45, 0x6b, 0xff, 0xa8, 0x75, 0xb0,
0x01, 0xda, 0x6a, 0x1e, 0x21, 0xeb, 0x93, 0x27, 0x1e, 0x35, 0x8f, 0x71, 0xe2, 0xe1, 0x31, 0x4a,
0x45, 0x7f, 0xa8, 0x99, 0x9d, 0xce, 0x47, 0xd7, 0xd4, 0xba, 0xee, 0xd5, 0x2f, 0xd1, 0x7f, 0x23,
0xb7, 0xe1, 0xc4, 0xf5, 0x3e, 0xfa, 0x6f, 0xe0, 0xfa, 0xce, 0xa0, 0x3e, 0x44, 0xff, 0x91, 0xb4,
0x04, 0xfd, 0xd7, 0x73, 0xdd, 0xa0, 0x06, 0x76, 0x05, 0xaa, 0xc3, 0x77, 0x08, 0xf2, 0x06, 0x9f,
0x1e, 0x10, 0x67, 0x42, 0x10, 0x54, 0x6f, 0xbf, 0x6f, 0x22, 0x96, 0xed, 0x34, 0x08, 0x98, 0x1e,
0x8a, 0x0b, 0xdb, 0x12, 0x58, 0xf8, 0x60, 0x22, 0x9a, 0x4b, 0xb8, 0x0b, 0x00, 0xb1, 0x5e, 0x7c,
0xf2, 0xbd, 0xe2, 0xdf, 0x2c, 0xfe, 0x9a, 0x30, 0xc7, 0x1e, 0x61, 0xe5, 0x7b, 0x22, 0x69, 0x4b,
0x84, 0xa3, 0x49, 0x36, 0x96, 0x2f, 0x78, 0xeb, 0x25, 0xdc, 0x18, 0x55, 0x18, 0x4f, 0xa5, 0xb5,
0x91, 0xa5, 0x63, 0x85, 0x56, 0xdf, 0x65, 0x18, 0xc6, 0xfd, 0xec, 0x46, 0x4f, 0x05, 0xa1, 0x6b,
0x04, 0x8f, 0x7b, 0x10, 0x11, 0x46, 0x04, 0x01, 0x3c, 0x3f, 0xab, 0x1d, 0x36, 0xdb, 0x47, 0xed,
0xe3, 0xf7, 0x9d, 0x37, 0xc7, 0x87, 0xc7, 0xef, 0xde, 0xbf, 0x7d, 0x7f, 0x78, 0x60, 0x08, 0x30,
0x04, 0xe6, 0xbd, 0x75, 0x99, 0x95, 0x39, 0xd2, 0x21, 0x0f, 0xfe, 0x21, 0xb3, 0x13, 0xe2, 0x3b,
0xba, 0x72, 0x80, 0x47, 0xbc, 0x62, 0x7c, 0x26, 0x01, 0x79, 0x7a, 0xd9, 0x02, 0xc7, 0x98, 0x8d,
0xa7, 0x0b, 0xc7, 0x11, 0x4d, 0xfe, 0xab, 0xf5, 0xbd, 0x21, 0x7d, 0xb5, 0xbf, 0xbb, 0x1e, 0xb6,
0xa4, 0xa9, 0x5a, 0xe1, 0xd6, 0xd5, 0x4c, 0x8e, 0x79, 0x9c, 0xcd, 0xd2, 0x08, 0x49, 0xdc, 0x29,
0x82, 0xee, 0x1c, 0x7b, 0xf4, 0xa8, 0x38, 0xa6, 0xc8, 0x0d, 0xa4, 0x7a, 0xf9, 0x39, 0x71, 0x1c,
0xfa, 0x26, 0xa2, 0xfc, 0x4b, 0x6c, 0x78, 0x34, 0xc9, 0x30, 0x06, 0xca, 0xc4, 0x7e, 0x83, 0xe6,
0xba, 0x68, 0xda, 0x9d, 0x9f, 0xe1, 0xfb, 0x2e, 0x2c, 0x8f, 0xfb, 0x8a, 0xc0, 0xcb, 0xf3, 0x41,
0x6e, 0x23, 0xb7, 0xc5, 0x23, 0x3a, 0x5e, 0xdc, 0x1f, 0x18, 0xdf, 0x8e, 0x26, 0x57, 0x38, 0xf4,
0x31, 0x49, 0x5f, 0xd5, 0xcf, 0xcf, 0x42, 0xc9, 0xdc, 0x69, 0x37, 0xdf, 0xbd, 0x3d, 0x6e, 0x88,
0x38, 0x87, 0xed, 0xe6, 0xdb, 0x63, 0x9a, 0x8f, 0x26, 0x29, 0x79, 0xaf, 0x14, 0xe2, 0x29, 0xf1,
0x52, 0x24, 0xd0, 0xe5, 0x05, 0x6e, 0x3a, 0x2f, 0x86, 0x9b, 0x02, 0xf2, 0x02, 0x8d, 0x03, 0x9a,
0xec, 0xd8, 0x6b, 0x8d, 0x7b, 0x87, 0x8c, 0x44, 0x20, 0x52, 0x19, 0x52, 0x92, 0xe1, 0x7a, 0xec,
0x1b, 0x62, 0x06, 0x43, 0x01, 0x46, 0x36, 0x66, 0x18, 0x3c, 0x5e, 0x52, 0x85, 0x6c, 0x93, 0x19,
0x67, 0xd2, 0xcd, 0x68, 0x3c, 0x50, 0x24, 0x05, 0x14, 0x2f, 0xf2, 0x8b, 0x7a, 0x36, 0x44, 0xb3,
0x3a, 0x45, 0xe7, 0x0e, 0xb0, 0x30, 0x89, 0x28, 0x03, 0x3a, 0xbe, 0x43, 0xc6, 0xa6, 0x4e, 0xfb,
0xcb, 0x0d, 0xce, 0xcf, 0xb0, 0x2c, 0x11, 0xdc, 0x44, 0x42, 0x54, 0x43, 0x21, 0x5a, 0x33, 0x79,
0x19, 0x8c, 0xcc, 0x04, 0x5f, 0x62, 0x7e, 0x1f, 0x03, 0x21, 0x55, 0x05, 0x71, 0xb2, 0x4c, 0x7c,
0x39, 0x51, 0x8a, 0x1c, 0x92, 0x5b, 0x48, 0x58, 0x51, 0xaa, 0xb8, 0x19, 0xbb, 0x75, 0xe9, 0xf3,
0x7e, 0xc2, 0x8d, 0x4f, 0xc9, 0x93, 0x2f, 0xbf, 0x9d, 0x9d, 0xfc, 0x72, 0x76, 0x72, 0x71, 0xf6,
0xe5, 0xe7, 0x9a, 0xe5, 0x81, 0x00, 0x44, 0x30, 0x87, 0xc7, 0x2d, 0xc3, 0x41, 0x9f, 0x8f, 0xdf,
0xbd, 0x3d, 0x6c, 0xb5, 0xdf, 0x1c, 0x14, 0x76, 0xf8, 0xc0, 0x6a, 0x22, 0x0e, 0xab, 0xe2, 0xee,
0x1f, 0x0e, 0x92, 0x5e, 0xae, 0xe0, 0x16, 0x43, 0xfb, 0x42, 0xb8, 0x28, 0x4d, 0x3a, 0xa1, 0x16,
0xea, 0xef, 0x1a, 0x6a, 0xa2, 0x8e, 0x52, 0xa0, 0xa5, 0xe2, 0x58, 0x40, 0x9d, 0x42, 0xa4, 0xa8,
0x41, 0x3c, 0x99, 0xc4, 0x2c, 0xf4, 0x93, 0x21, 0x60, 0x2a, 0x58, 0x53, 0xd3, 0x74, 0x91, 0x5d,
0xc6, 0xf3, 0x17, 0x17, 0x46, 0x67, 0xff, 0xd4, 0xd7, 0x16, 0xc7, 0x6c, 0x07, 0xf1, 0xac, 0xe4,
0xa9, 0x2c, 0x96, 0x5b, 0x16, 0xb7, 0x9a, 0xc1, 0xac, 0x8b, 0x5c, 0x2d, 0xc3, 0x95, 0x75, 0x19,
0x7e, 0x5d, 0xd6, 0xd2, 0x24, 0x9c, 0x67, 0xef, 0x30, 0x9c, 0x5d, 0xde, 0x29, 0x1c, 0xa4, 0x84,
0x84, 0x92, 0x0e, 0x59, 0xdb, 0x1b, 0x95, 0xba, 0x42, 0xed, 0x87, 0xe7, 0x17, 0x72, 0xe9, 0xb5,
0x3f, 0x58, 0xc5, 0x99, 0x5e, 0x1d, 0x18, 0x96, 0x6c, 0x20, 0x84, 0x65, 0xf9, 0xf2, 0x9c, 0xb0,
0x84, 0xf0, 0x16, 0x68, 0x36, 0xe4, 0x79, 0xb9, 0x45, 0xe4, 0xc5, 0x67, 0x43, 0x8f, 0xe0, 0x0c,
0x5f, 0xcc, 0x05, 0x63, 0x7f, 0xd0, 0xd2, 0x9b, 0xb0, 0xbb, 0xda, 0x06, 0x5b, 0x3f, 0xb0, 0x4e,
0x28, 0xef, 0x01, 0xd6, 0x7c, 0x8d, 0xcf, 0x95, 0xf0, 0xa2, 0x51, 0xcc, 0x5e, 0x8c, 0x68, 0xb4,
0x3b, 0xef, 0x90, 0x7a, 0x4f, 0x15, 0xa3, 0x2e, 0xdf, 0x4e, 0x89, 0x48, 0x60, 0x73, 0xf2, 0x1e,
0x04, 0x0e, 0x5a, 0x09, 0x8a, 0x4a, 0x28, 0x2d, 0x51, 0x11, 0x8f, 0x25, 0x4e, 0x80, 0xc0, 0x15,
0xe0, 0xd6, 0xe9, 0xd7, 0x8d, 0xf7, 0xe6, 0x88, 0xc6, 0x43, 0x17, 0x1e, 0x56, 0x79, 0xd1, 0x06,
0xdf, 0xad, 0x32, 0x7b, 0xf9, 0x86, 0xb0, 0x04, 0x03, 0xfe, 0x5b, 0xfa, 0x9b, 0x6e, 0x43, 0x86,
0x7c, 0x7c, 0xd9, 0x0f, 0xd0, 0x1b, 0x98, 0xb1, 0x1b, 0x8f, 0x2f, 0x49, 0xa6, 0xc8, 0xa1, 0xa3,
0x01, 0xc4, 0x7b, 0x74, 0x40, 0x98, 0x56, 0x0b, 0xe9, 0x0c, 0x4b, 0xdd, 0x61, 0xbf, 0xb8, 0x1e,
0xac, 0xe8, 0x2c, 0x60, 0xa5, 0x72, 0xe5, 0x2e, 0xbb, 0xca, 0x95, 0xb2, 0xbc, 0x5e, 0xaf, 0x88,
0xa5, 0x83, 0x5f, 0xac, 0x00, 0xc5, 0xa8, 0xee, 0x08, 0xfa, 0xa8, 0x6e, 0x4e, 0x9e, 0xb3, 0x90,
0x2b, 0x72, 0xd5, 0x4e, 0xc1, 0x97, 0x44, 0x49, 0x75, 0x9e, 0x88, 0x9d, 0x49, 0x34, 0x08, 0x4d,
0xae, 0x61, 0x45, 0x5a, 0x1a, 0x40, 0x2d, 0x3f, 0x27, 0xee, 0x4b, 0xa4, 0x90, 0x5e, 0x69, 0x75,
0x90, 0x5e, 0xe9, 0x44, 0xe4, 0xaf, 0x5e, 0x8d, 0xc7, 0x36, 0x05, 0x91, 0x32, 0x9d, 0x43, 0x20,
0xeb, 0xc6, 0x95, 0x7f, 0x05, 0xaf, 0xb6, 0x6b, 0x4f, 0x7a, 0x31, 0xc6, 0x52, 0x6d, 0x4b, 0xa0,
0x3f, 0xa0, 0xca, 0x15, 0xdb, 0x03, 0x2d, 0x3b, 0x63, 0x2a, 0x5e, 0x38, 0xef, 0x28, 0xc5, 0x70,
0xff, 0x15, 0x2a, 0x33, 0xc6, 0x9b, 0xc4, 0x6f, 0x6a, 0xa1, 0x2e, 0x93, 0x83, 0x81, 0xb2, 0x7b,
0xb6, 0xe4, 0xb6, 0xac, 0xb5, 0x94, 0xa9, 0x48, 0xa1, 0xd2, 0x42, 0xe8, 0x00, 0xcf, 0xa4, 0x27,
0x82, 0x2d, 0x2d, 0xa9, 0x7b, 0xd1, 0x7a, 0x1a, 0x83, 0x35, 0x04, 0x85, 0x4c, 0xad, 0x24, 0x0e,
0x12, 0xc2, 0x14, 0x3e, 0xe6, 0xe2, 0xa7, 0x0b, 0x8f, 0xf7, 0x82, 0xde, 0xab, 0x2a, 0x57, 0xd1,
0xcd, 0xea, 0xbc, 0x51, 0x71, 0x7f, 0xdc, 0x10, 0x7e, 0xbb, 0x79, 0x39, 0xc9, 0x74, 0x05, 0x9d,
0xb4, 0xdd, 0xf5, 0x58, 0xdf, 0x34, 0x17, 0xa1, 0x20, 0xa1, 0x13, 0xe1, 0x77, 0x7f, 0xea, 0x66,
0xdb, 0x0d, 0x0a, 0xc9, 0x7d, 0x24, 0x5f, 0x5c, 0x27, 0x76, 0xe9, 0x04, 0xf5, 0x17, 0x54, 0xd7,
0x70, 0x38, 0xfa, 0xbc, 0x81, 0x11, 0xbb, 0xbe, 0xa8, 0x10, 0x47, 0x4e, 0x75, 0x03, 0x9c, 0x6e,
0x31, 0x5e, 0x1f, 0x21, 0x54, 0x16, 0xb7, 0x3a, 0x7f, 0x3d, 0xf9, 0xb3, 0xfb, 0xcb, 0xd9, 0x97,
0xd3, 0xee, 0xa7, 0xb3, 0x8b, 0xdf, 0x4e, 0xbe, 0x7c, 0x3c, 0xad, 0x1d, 0x76, 0xde, 0xbe, 0x79,
0x2b, 0xd9, 0xa5, 0x7b, 0x3b, 0xb6, 0xba, 0x1d, 0x8b, 0x24, 0xe7, 0x60, 0x9e, 0x2e, 0xac, 0x31,
0x4c, 0xf6, 0x16, 0xe3, 0xde, 0x62, 0x7c, 0xad, 0x16, 0xe3, 0xde, 0x86, 0xdb, 0xdb, 0x70, 0xcf,
0xdc, 0x86, 0x63, 0xe2, 0xb9, 0xaa, 0x19, 0x17, 0x14, 0x56, 0xc7, 0xbd, 0x61, 0xb7, 0x37, 0xec,
0xf6, 0x86, 0xdd, 0x13, 0x19, 0x76, 0x2f, 0xc8, 0xf2, 0xaa, 0xbc, 0x6f, 0xbc, 0xbd, 0x4d, 0xb6,
0x5e, 0x09, 0xad, 0x72, 0x62, 0x73, 0x6f, 0x7a, 0xe9, 0xa6, 0x97, 0xe5, 0x79, 0x33, 0xba, 0x51,
0x0e, 0xec, 0xaa, 0x76, 0xb3, 0xfd, 0x99, 0xb3, 0xc7, 0xb1, 0xd8, 0x8a, 0xf6, 0x15, 0xcb, 0x51,
0x56, 0xaa, 0xee, 0xc5, 0xc7, 0x93, 0x5f, 0x4e, 0x6b, 0x9d, 0x2d, 0x2c, 0xb9, 0x87, 0xb6, 0xd7,
0xec, 0x16, 0x59, 0xb9, 0x45, 0x77, 0x1f, 0x7b, 0x4d, 0xec, 0x2a, 0x96, 0x4d, 0xa2, 0xbd, 0x99,
0xf6, 0x70, 0x66, 0xda, 0x33, 0xb0, 0x8a, 0x9e, 0x9d, 0xa5, 0xb8, 0x63, 0x33, 0x6d, 0x7f, 0x09,
0xf5, 0x19, 0x5d, 0x42, 0x7d, 0xe5, 0xe6, 0xf0, 0xd3, 0x9a, 0x9f, 0xcf, 0xcd, 0x18, 0xdf, 0x95,
0x39, 0xfc, 0xff, 0xe6, 0x5a, 0xf0, 0xfd, 0x4d, 0x7e, 0x06, 0xb7, 0xd9, 0xe6, 0xad, 0x41, 0x87,
0xda, 0xdb, 0xfc, 0x7b, 0x9b, 0x7f, 0x6f, 0xf3, 0x3f, 0x84, 0xcd, 0x2f, 0xa6, 0x62, 0x2c, 0x2b,
0xe8, 0xe5, 0xbe, 0x80, 0x6d, 0x2e, 0xa7, 0x2a, 0xf2, 0x46, 0x0f, 0xe1, 0xb2, 0xd6, 0x26, 0xdf,
0x9d, 0xa1, 0xf1, 0x5a, 0xee, 0x86, 0xbe, 0xfc, 0x9d, 0xf2, 0xf5, 0xae, 0x92, 0x67, 0x74, 0xc9,
0xf4, 0x09, 0x5d, 0x39, 0xfb, 0x10, 0xc7, 0xaf, 0xeb, 0xe1, 0x13, 0xb9, 0xab, 0xe5, 0xf6, 0xa9,
0x6d, 0x6e, 0x2e, 0x3d, 0xde, 0x6b, 0x81, 0x1a, 0x2c, 0x58, 0x03, 0x5c, 0x99, 0x70, 0x26, 0x06,
0x9c, 0x88, 0x6a, 0x8f, 0xf6, 0x77, 0x19, 0x46, 0xa0, 0x38, 0x7c, 0x51, 0xfe, 0x43, 0x82, 0x6d,
0x89, 0x3a, 0x92, 0x5c, 0x75, 0xe6, 0x0b, 0x44, 0xa0, 0xf6, 0x73, 0x73, 0xa9, 0xc2, 0x27, 0xe5,
0xf0, 0x89, 0x0a, 0xbf, 0xea, 0xe2, 0x17, 0x93, 0xeb, 0xbc, 0x27, 0x90, 0x82, 0x43, 0x6f, 0x74,
0x71, 0xfa, 0x30, 0x4d, 0x8e, 0x56, 0xeb, 0xaa, 0xde, 0xa1, 0xcf, 0xbe, 0xb8, 0x3a, 0x41, 0x2b,
0x81, 0x3c, 0xd9, 0x06, 0x79, 0x62, 0x47, 0x9e, 0x08, 0xc6, 0xc0, 0x51, 0x4f, 0x36, 0xbf, 0x78,
0x8e, 0x39, 0x08, 0xf5, 0xaa, 0x8f, 0x5a, 0xee, 0x4a, 0xb8, 0x92, 0x2d, 0xae, 0x8d, 0x53, 0x5c,
0x09, 0xc2, 0x95, 0xb8, 0x8a, 0xc7, 0x17, 0x70, 0x19, 0xaf, 0x8e, 0xa3, 0x4a, 0x7d, 0x73, 0x46,
0xe2, 0x9a, 0xaf, 0x8c, 0x13, 0x1f, 0xf0, 0x03, 0xbe, 0x3f, 0xf1, 0x82, 0x3d, 0xc0, 0x95, 0x4e,
0xec, 0xd0, 0xc1, 0x22, 0xcf, 0x56, 0xc7, 0x05, 0x05, 0x0f, 0xf5, 0x7e, 0x77, 0x25, 0xa5, 0x9b,
0x4a, 0x25, 0x96, 0x52, 0xc9, 0x23, 0x9d, 0x0e, 0xa2, 0xa9, 0x50, 0x49, 0x6c, 0x4a, 0x4c, 0xb6,
0x51, 0x0a, 0xf7, 0xf7, 0x5d, 0xf6, 0xa7, 0x97, 0xf6, 0xa7, 0x97, 0xca, 0xdd, 0xe2, 0x6c, 0xc8,
0x0c, 0x3e, 0xb3, 0x87, 0x70, 0x99, 0x63, 0x47, 0x51, 0x09, 0x95, 0x22, 0xdf, 0xda, 0x57, 0x02,
0xc4, 0xc4, 0x5f, 0x52, 0x6e, 0x59, 0x6f, 0xaa, 0x60, 0xfb, 0xcb, 0x3b, 0xfb, 0x83, 0x5f, 0xcf,
0xe4, 0xe0, 0xd7, 0xee, 0x7c, 0xdb, 0xd2, 0x54, 0x14, 0x3f, 0x0d, 0x35, 0x8b, 0x4c, 0x5f, 0x9d,
0x9f, 0xa6, 0x26, 0xcb, 0x98, 0x8c, 0x93, 0x6c, 0xef, 0x82, 0xde, 0xbb, 0xa0, 0xf7, 0x2e, 0xe8,
0x57, 0xe8, 0x82, 0xc6, 0xaa, 0x7a, 0x44, 0x65, 0x06, 0x9f, 0x97, 0x9e, 0x6e, 0x7d, 0x34, 0x97,
0x81, 0x24, 0x50, 0xf8, 0xf8, 0x15, 0xc0, 0x56, 0x75, 0x6e, 0x98, 0xb8, 0x14, 0x7b, 0xb2, 0x16,
0x7b, 0x52, 0x0d, 0x7b, 0x22, 0x61, 0x87, 0xe8, 0x66, 0xd5, 0xdc, 0xe4, 0xeb, 0x43, 0x73, 0x2d,
0xfa, 0x97, 0xb8, 0x5b, 0x8b, 0x31, 0x96, 0x90, 0xc5, 0xf6, 0xcc, 0xac, 0xa0, 0xfd, 0x2d, 0xae,
0xf2, 0x75, 0x78, 0x77, 0x7a, 0xf0, 0xe3, 0x2a, 0xb1, 0x2f, 0xf1, 0x42, 0x99, 0x11, 0x43, 0xc9,
0x41, 0x80, 0x62, 0x8f, 0x97, 0x76, 0xf8, 0x06, 0xea, 0xca, 0x0b, 0xf4, 0x8f, 0x22, 0x21, 0x04,
0xb9, 0xdd, 0xd8, 0x18, 0x8d, 0x08, 0x8b, 0x12, 0xb7, 0x19, 0x6b, 0xc0, 0x89, 0x15, 0x38, 0x29,
0x00, 0x63, 0x57, 0x1e, 0xaf, 0xc5, 0xe7, 0x28, 0x7c, 0x2c, 0xe7, 0xdc, 0x90, 0x38, 0xe6, 0x22,
0xe5, 0x7d, 0xd9, 0xe3, 0x86, 0x90, 0x8e, 0xb2, 0x84, 0x26, 0x01, 0x85, 0x4d, 0x39, 0x14, 0xed,
0xe3, 0x1f, 0xff, 0xac, 0x74, 0xc2, 0x32, 0x1f, 0xa3, 0x15, 0x64, 0x2e, 0x3f, 0x46, 0xc1, 0x65,
0x3e, 0x5e, 0x51, 0x2c, 0x99, 0xc9, 0xd5, 0xe5, 0x65, 0x3a, 0x2f, 0x7b, 0x78, 0x76, 0xc3, 0x30,
0x5c, 0x2d, 0x43, 0x5a, 0x7b, 0xdb, 0xd8, 0x5c, 0xad, 0xc8, 0x71, 0xcc, 0xb1, 0x0b, 0x1b, 0x70,
0xf2, 0x36, 0x50, 0xe9, 0xaf, 0xb9, 0x10, 0x65, 0x88, 0x94, 0x6c, 0x47, 0x24, 0x94, 0x1b, 0x3c,
0x70, 0x2e, 0x77, 0x00, 0x84, 0x9f, 0x12, 0x5d, 0x25, 0x75, 0xae, 0xbc, 0x97, 0xdc, 0xcd, 0xad,
0x31, 0x2d, 0xad, 0x4b, 0x6d, 0xcb, 0x9e, 0xd5, 0xae, 0xdc, 0x4d, 0x85, 0xd1, 0x99, 0x43, 0x0c,
0x24, 0xa4, 0x4a, 0x2c, 0x20, 0x22, 0x77, 0x59, 0x36, 0x08, 0xcb, 0xe2, 0xc8, 0xc7, 0xa8, 0xdb,
0x70, 0x38, 0x38, 0xfd, 0x7d, 0x13, 0xe1, 0x54, 0x9c, 0xe6, 0xf3, 0x78, 0x61, 0x7a, 0xff, 0x04,
0x5e, 0x2a, 0x59, 0xcc, 0x46, 0xd3, 0xee, 0x0d, 0x8e, 0xc2, 0xab, 0x1d, 0x29, 0x17, 0x62, 0xb9,
0x55, 0x9c, 0x98, 0x2d, 0x12, 0x54, 0xac, 0xb5, 0x26, 0x4c, 0x6c, 0x9b, 0x80, 0xb5, 0x49, 0x34,
0x6e, 0x82, 0xac, 0x19, 0x13, 0xd5, 0x1f, 0x55, 0x41, 0x13, 0xe6, 0x83, 0x24, 0x12, 0x3f, 0x03,
0x06, 0x16, 0xde, 0xf1, 0x42, 0x6d, 0xbd, 0x50, 0x5b, 0x14, 0x6a, 0x8b, 0x42, 0x6d, 0x28, 0xa4,
0xf9, 0xfb, 0x09, 0x36, 0x9f, 0x46, 0x81, 0x65, 0xa3, 0x4f, 0x1f, 0x55, 0x6a, 0x22, 0x19, 0x21,
0x45, 0x33, 0x85, 0x2e, 0xe1, 0x78, 0x01, 0x6d, 0x08, 0x5f, 0x38, 0x9a, 0x36, 0x44, 0x32, 0x47,
0x1f, 0xbe, 0xda, 0x63, 0x10, 0xe1, 0xdf, 0xf5, 0x2d, 0x79, 0xb7, 0xcb, 0x95, 0x35, 0x6f, 0x75,
0xbb, 0xe4, 0x71, 0xd1, 0xe2, 0xeb, 0x14, 0x49, 0x87, 0x34, 0x62, 0x2f, 0x10, 0xb1, 0x67, 0xa5,
0xd8, 0x7b, 0x52, 0x6e, 0x70, 0x08, 0x61, 0x2c, 0x21, 0x42, 0xb8, 0x43, 0x61, 0x1b, 0xe8, 0x0b,
0xc2, 0x77, 0x15, 0x87, 0x1f, 0x08, 0x86, 0x0a, 0xf1, 0xec, 0xf1, 0x0a, 0xc3, 0x4f, 0xa6, 0x0f,
0x19, 0x7a, 0x60, 0x28, 0xb0, 0xaf, 0x49, 0x03, 0x75, 0x56, 0xf4, 0xd7, 0x26, 0xb8, 0x0c, 0x11,
0xfa, 0x6d, 0xc1, 0x03, 0x55, 0xf8, 0x15, 0x52, 0x34, 0x09, 0x8b, 0x25, 0x05, 0x89, 0x17, 0xc6,
0x88, 0xf4, 0x79, 0x35, 0x3e, 0x6e, 0x3b, 0x1d, 0x3e, 0x9f, 0x85, 0xf8, 0xba, 0x9f, 0xfc, 0x45,
0xbd, 0xb4, 0xc8, 0xe9, 0x94, 0x39, 0x3f, 0x8b, 0x0a, 0xc1, 0xf6, 0x42, 0xe3, 0x96, 0x09, 0xb5,
0x96, 0xcd, 0x5b, 0x26, 0x4a, 0xea, 0x21, 0x94, 0xe0, 0x76, 0x92, 0x2a, 0x73, 0x99, 0x1b, 0x01,
0x33, 0xa6, 0x2e, 0x84, 0x92, 0x2c, 0x1b, 0x83, 0x90, 0x59, 0x90, 0x8d, 0x36, 0x08, 0xf4, 0xd8,
0xc5, 0xc4, 0xc6, 0x92, 0xa4, 0xd7, 0x80, 0x2e, 0xd3, 0x18, 0xcb, 0xd2, 0x02, 0x9c, 0xfa, 0x02,
0x1f, 0x86, 0x2d, 0xcb, 0xb4, 0x64, 0xf5, 0xe2, 0x09, 0xe2, 0x41, 0x30, 0xe4, 0x20, 0xe8, 0x1a,
0x92, 0xcc, 0xec, 0x1d, 0x04, 0x0b, 0xfc, 0x6c, 0x94, 0xf7, 0x86, 0x3a, 0xad, 0xf3, 0x2c, 0x8f,
0xf3, 0xb4, 0xbb, 0x58, 0x4d, 0x92, 0x6c, 0x6c, 0x29, 0x48, 0x42, 0xcc, 0x69, 0xbb, 0x49, 0x8a,
0x10, 0xef, 0x0d, 0x71, 0x04, 0xc6, 0x17, 0xb0, 0x7b, 0xb0, 0x66, 0x03, 0x8d, 0xa4, 0x8e, 0xe3,
0x24, 0x45, 0x0b, 0xd7, 0x38, 0x9e, 0xa6, 0x16, 0x88, 0x01, 0x7b, 0xbd, 0x41, 0xcb, 0x16, 0x1c,
0x00, 0x22, 0x58, 0x4f, 0xc6, 0x23, 0x40, 0xcc, 0xe5, 0x49, 0x3c, 0x0b, 0x2d, 0x47, 0xae, 0x8a,
0xa6, 0x5d, 0xc1, 0xb0, 0x53, 0x58, 0xf4, 0x99, 0xbc, 0x3c, 0x2e, 0xf4, 0x98, 0x48, 0x9e, 0x95,
0xfc, 0xa4, 0x09, 0x73, 0x93, 0xaa, 0xb9, 0xec, 0x9c, 0x0a, 0xd6, 0x3c, 0x84, 0x07, 0x90, 0x25,
0x42, 0x87, 0xb0, 0x54, 0x04, 0x2a, 0xf3, 0xe5, 0x22, 0x1d, 0x4c, 0x20, 0xd8, 0x20, 0xe2, 0xbc,
0x71, 0x1a, 0x35, 0xb4, 0x79, 0xfd, 0x57, 0xe7, 0x3b, 0x53, 0x54, 0xa1, 0x4f, 0x61, 0x01, 0xfb,
0xc1, 0x32, 0x7d, 0xe1, 0x9d, 0x91, 0x1f, 0xec, 0xb3, 0x16, 0x75, 0x2a, 0xa6, 0x02, 0xc4, 0x20,
0x21, 0xe8, 0xaf, 0xd6, 0x77, 0x9f, 0xfe, 0x6a, 0x7f, 0xf7, 0xd9, 0x04, 0x76, 0x03, 0x1c, 0xb7,
0x38, 0xbc, 0xab, 0x41, 0x9f, 0xd5, 0xa0, 0xc6, 0xfb, 0x55, 0xc8, 0x2b, 0x2b, 0x22, 0x2e, 0x6b,
0xca, 0x7a, 0xc4, 0x54, 0xaa, 0x50, 0x7c, 0x6a, 0x9a, 0xea, 0x2b, 0x3b, 0xcf, 0x46, 0xd3, 0x7c,
0x5d, 0x08, 0x6d, 0x1a, 0x09, 0x99, 0x4b, 0x23, 0x24, 0x82, 0x86, 0x99, 0x90, 0x46, 0x91, 0x8a,
0xad, 0xa9, 0x8e, 0x22, 0x83, 0x22, 0xd2, 0x25, 0xd2, 0xe7, 0x48, 0xed, 0xa7, 0x03, 0x2b, 0xe2,
0xa0, 0x44, 0x04, 0xd6, 0x3e, 0x1c, 0x94, 0xe4, 0x06, 0x56, 0x9c, 0x0a, 0x6d, 0x92, 0x4b, 0x8b,
0x92, 0x47, 0xcc, 0x32, 0xb0, 0x53, 0xc0, 0x85, 0xa9, 0xd2, 0x8e, 0x4d, 0x2f, 0xf0, 0x2c, 0x87,
0xd0, 0x93, 0x5e, 0x54, 0x28, 0xcd, 0xce, 0x45, 0x21, 0x45, 0x80, 0x9d, 0x7f, 0xa2, 0x72, 0xa2,
0xf6, 0x13, 0xe6, 0xd2, 0xa0, 0x73, 0x84, 0xbd, 0xac, 0x78, 0x24, 0x14, 0x56, 0xc7, 0xd2, 0x99,
0xc8, 0x6a, 0xd0, 0xe4, 0x51, 0x4d, 0x21, 0xe1, 0x2f, 0x45, 0x7c, 0x33, 0x5d, 0x91, 0x4c, 0xad,
0xf3, 0xb5, 0x83, 0x48, 0x62, 0x2f, 0xb7, 0x71, 0x48, 0x68, 0xfe, 0x2e, 0x4f, 0xac, 0x8f, 0xd7,
0x72, 0x15, 0x14, 0x46, 0x10, 0x43, 0x26, 0x91, 0xa9, 0x22, 0x80, 0x37, 0xa6, 0xdf, 0x84, 0x7a,
0x33, 0x70, 0xfc, 0x58, 0x07, 0xce, 0x4e, 0xe1, 0x03, 0x5a, 0xea, 0x42, 0xe3, 0xc3, 0xf1, 0x2b,
0x38, 0xe3, 0x15, 0xde, 0xc9, 0x5d, 0x81, 0x67, 0x3b, 0xe2, 0xd5, 0x69, 0x84, 0xc3, 0x94, 0xca,
0x32, 0xa0, 0xae, 0xe1, 0x57, 0xf9, 0x93, 0x14, 0xec, 0x21, 0xe9, 0x84, 0x83, 0xb3, 0x96, 0x17,
0x04, 0x07, 0x72, 0x8d, 0x7d, 0xd2, 0x8e, 0x8b, 0xb0, 0x57, 0x99, 0xa3, 0xf1, 0xb1, 0x9f, 0x9e,
0x93, 0xe3, 0xeb, 0xbf, 0x7a, 0x34, 0xd2, 0xaf, 0xec, 0x79, 0x06, 0xd9, 0x68, 0x5a, 0x5d, 0xf8,
0x98, 0xc8, 0x90, 0xa8, 0x23, 0x95, 0x40, 0x35, 0x92, 0x1d, 0xa7, 0xad, 0x3e, 0xd4, 0x21, 0xad,
0x15, 0x0e, 0xd4, 0x84, 0x9b, 0xba, 0xd6, 0x1e, 0x8f, 0x6f, 0x5c, 0x05, 0x87, 0x10, 0xad, 0x97,
0xf3, 0xa5, 0x14, 0x7f, 0xfa, 0x9a, 0x4a, 0x65, 0xf4, 0x6f, 0x20, 0x2d, 0x50, 0x30, 0xfa, 0xf2,
0x12, 0xc4, 0x96, 0x13, 0xfa, 0xe9, 0xa8, 0x3a, 0x14, 0x8f, 0x4e, 0x2e, 0x34, 0x85, 0x48, 0xce,
0x47, 0x42, 0x14, 0xdb, 0x14, 0x10, 0x87, 0x57, 0xd1, 0x27, 0x6a, 0x1f, 0x1a, 0xaa, 0x7e, 0xa1,
0x2e, 0x7c, 0xfc, 0xd9, 0x2a, 0x70, 0x93, 0x40, 0xec, 0x6c, 0x05, 0x69, 0xeb, 0x7b, 0x5d, 0x2a,
0xea, 0x5a, 0x9d, 0xb7, 0xd4, 0x54, 0x0a, 0x9f, 0x24, 0x54, 0xd4, 0xe6, 0x6b, 0xfb, 0x3d, 0x9d,
0x69, 0x12, 0x10, 0x71, 0x34, 0x51, 0x00, 0x4f, 0xab, 0xd7, 0xfa, 0x5e, 0x04, 0xfd, 0x4d, 0xfc,
0x41, 0x2e, 0x39, 0x77, 0xb5, 0x57, 0xf9, 0x1f, 0x5e, 0xe5, 0xb7, 0x79, 0x8a, 0x47, 0xe3, 0x71,
0xd9, 0xc9, 0x25, 0x91, 0x6f, 0x3f, 0xbe, 0x24, 0x60, 0x4c, 0x67, 0x98, 0xa4, 0xdc, 0x32, 0xe7,
0xbf, 0x0a, 0x56, 0xf6, 0xf2, 0x53, 0x3c, 0xce, 0xca, 0x28, 0x16, 0xf9, 0x76, 0x8a, 0x05, 0x8c,
0x89, 0x62, 0x29, 0xb7, 0x8c, 0x62, 0x15, 0xec, 0x45, 0x1f, 0x76, 0xc2, 0x4d, 0x29, 0x39, 0x37,
0x23, 0xf2, 0xed, 0x8f, 0xb2, 0x72, 0x10, 0xe3, 0xc3, 0xac, 0x22, 0xb7, 0xf4, 0x61, 0x2e, 0x05,
0x6c, 0x1d, 0xc1, 0xf6, 0x73, 0x6d, 0x3c, 0xbb, 0x9c, 0x5c, 0xdb, 0x09, 0x37, 0x91, 0xb9, 0x96,
0x58, 0x65, 0x6f, 0xe2, 0x39, 0xda, 0x82, 0x8f, 0x69, 0xb2, 0x6f, 0xea, 0x3e, 0x30, 0x99, 0xf8,
0xd5, 0x6c, 0x56, 0x90, 0xc2, 0x8a, 0xdb, 0xf5, 0x90, 0x26, 0xb6, 0x2b, 0x59, 0xab, 0x92, 0x94,
0x13, 0x3f, 0x4d, 0x47, 0xac, 0x44, 0xae, 0xaf, 0xca, 0x3e, 0xd3, 0x61, 0x2b, 0x19, 0xd5, 0x56,
0xf2, 0x4b, 0xfc, 0x34, 0xd1, 0x22, 0x72, 0x7d, 0x55, 0xaa, 0x99, 0x68, 0x91, 0x51, 0x6d, 0x2e,
0x99, 0x76, 0x7e, 0x36, 0x4b, 0x12, 0x38, 0xe2, 0xa7, 0xe9, 0x2d, 0x5e, 0x9e, 0xe9, 0xab, 0x52,
0xc8, 0xf8, 0x26, 0xaf, 0x84, 0x69, 0x1b, 0x51, 0xc2, 0x7f, 0xd9, 0x08, 0xa1, 0xa7, 0xe2, 0x24,
0xe9, 0x62, 0x25, 0x83, 0x6e, 0x5d, 0x16, 0x65, 0xc4, 0xde, 0xab, 0xb1, 0xf7, 0x6a, 0xec, 0xbd,
0x1a, 0x7b, 0xaf, 0xc6, 0xde, 0xab, 0xf1, 0x7a, 0xbc, 0x1a, 0xec, 0x44, 0xb0, 0x38, 0xf3, 0xa6,
0x9c, 0x92, 0x23, 0x7c, 0xf0, 0xac, 0x1c, 0x1f, 0xe2, 0xb5, 0xa4, 0xf9, 0x2c, 0x1b, 0xc7, 0xd0,
0xfa, 0x7b, 0x78, 0x42, 0xa8, 0x7e, 0x46, 0x4e, 0xb8, 0xa1, 0xb6, 0x35, 0x97, 0x70, 0xe7, 0x0a,
0x5f, 0x1d, 0x23, 0x4a, 0x1a, 0xd9, 0x40, 0x94, 0x3a, 0xc8, 0x27, 0xcf, 0x80, 0xda, 0xea, 0x27,
0xc1, 0xe4, 0xe8, 0xe5, 0xa7, 0x8b, 0x4f, 0x9f, 0xbb, 0xe7, 0x7f, 0xd6, 0xde, 0x49, 0xf7, 0xa1,
0x4e, 0x3f, 0xfd, 0x7c, 0xda, 0xfd, 0xf9, 0xe4, 0xd7, 0x5f, 0x4f, 0x50, 0x6b, 0xdb, 0xad, 0x63,
0xc3, 0x61, 0x98, 0x83, 0xa2, 0xd6, 0x0c, 0x8b, 0x71, 0x05, 0x3b, 0x78, 0xb7, 0x36, 0xec, 0x0e,
0xed, 0xcf, 0x5d, 0x99, 0x90, 0x3b, 0xb5, 0xff, 0x1e, 0xc1, 0x7c, 0x33, 0x79, 0xf3, 0xcc, 0x26,
0x8f, 0x7c, 0xda, 0xca, 0x62, 0xa5, 0xdd, 0xc3, 0x90, 0x29, 0xe5, 0xd2, 0xcd, 0xec, 0x90, 0x72,
0x33, 0x64, 0x23, 0x33, 0xe2, 0x31, 0x4e, 0xdf, 0x49, 0xcc, 0xb3, 0x99, 0x3e, 0x5f, 0xc6, 0x19,
0x9b, 0xa9, 0xe4, 0x20, 0x9e, 0xe9, 0xf0, 0x80, 0x62, 0x5d, 0x14, 0xe9, 0x74, 0x98, 0xf8, 0x65,
0x75, 0xac, 0x0f, 0xb2, 0xc4, 0x95, 0x2c, 0x99, 0x59, 0xe3, 0x69, 0xa6, 0xd0, 0xb1, 0x2b, 0xea,
0x34, 0x22, 0x68, 0x03, 0x19, 0x09, 0x69, 0x48, 0x65, 0xf6, 0xc3, 0xc4, 0x45, 0x42, 0x14, 0x06,
0x0e, 0xc7, 0xef, 0x29, 0xac, 0xe9, 0x86, 0xf2, 0x99, 0xca, 0xab, 0xcb, 0xcb, 0xc8, 0xc1, 0xaa,
0x72, 0x03, 0xdf, 0x5b, 0xa0, 0x6a, 0x33, 0x57, 0xc4, 0xa1, 0x7f, 0xd8, 0x61, 0x9c, 0x48, 0x62,
0x01, 0x52, 0x9d, 0xc3, 0xbb, 0xcf, 0x6b, 0x37, 0xdb, 0xef, 0x03, 0x22, 0x9c, 0xeb, 0x82, 0x0a,
0xb7, 0x84, 0x0c, 0x52, 0x37, 0xd4, 0x2c, 0x46, 0x33, 0x10, 0x0b, 0x2a, 0x45, 0x16, 0xde, 0x49,
0xe4, 0xe2, 0x23, 0x81, 0x26, 0x7f, 0x31, 0x78, 0x8b, 0x9b, 0x71, 0xb1, 0x43, 0x48, 0x5d, 0xfd,
0x08, 0x7f, 0x78, 0xf2, 0x04, 0x55, 0xd4, 0x1c, 0xec, 0xab, 0x96, 0x0e, 0x11, 0x02, 0x69, 0x0d,
0x19, 0x81, 0x0f, 0x29, 0x75, 0x25, 0xa5, 0xe2, 0x89, 0x41, 0x4f, 0x5d, 0xc9, 0xee, 0xe5, 0xcb,
0xfe, 0x3f, 0x2f, 0x9e, 0x06, 0x73
0xbe, 0x2d, 0x2f, 0x52, 0xf2, 0x0e, 0xf7, 0xd4, 0x4e, 0xf2, 0xf9, 0x18, 0x3d, 0xd4, 0xcd, 0x49,
0x3a, 0x80, 0x6a, 0x3d, 0x89, 0xa5, 0x9e, 0x0d, 0x14, 0xb2, 0x15, 0xb7, 0x1d, 0xed, 0xfb, 0x90,
0x4c, 0x3c, 0x5e, 0xc6, 0xfd, 0xf4, 0x51, 0x97, 0xbc, 0xdd, 0xad, 0x5a, 0xbb, 0x5e, 0x6e, 0x1e,
0x73, 0xad, 0x78, 0x8c, 0x63, 0x87, 0x4a, 0x67, 0x6d, 0x22, 0xd0, 0x4b, 0x7b, 0xe3, 0xc5, 0x09,
0xec, 0xf5, 0x2e, 0xe5, 0x5a, 0xae, 0xe4, 0x3e, 0xd1, 0x85, 0x5c, 0xcb, 0x75, 0xdc, 0x07, 0xbb,
0x8c, 0xfb, 0xc8, 0x46, 0x85, 0xe9, 0x7a, 0x2f, 0x08, 0x22, 0xea, 0xf9, 0xf7, 0x76, 0x18, 0xc7,
0xe0, 0x79, 0x58, 0x12, 0x7b, 0xb3, 0x61, 0x6f, 0x36, 0xec, 0xcd, 0x86, 0xbd, 0xd9, 0x60, 0x31,
0x1b, 0xfe, 0x99, 0x65, 0xe3, 0xed, 0x4d, 0x87, 0xd7, 0x6e, 0x15, 0xec, 0x24, 0x06, 0x4b, 0xa9,
0xe9, 0xc0, 0xc7, 0x69, 0x07, 0xe6, 0x43, 0xa1, 0xae, 0xd5, 0xd6, 0x80, 0xa2, 0xf3, 0x3f, 0x44,
0x90, 0x93, 0xbd, 0xea, 0xbf, 0x57, 0xfd, 0xf7, 0xaa, 0xff, 0xeb, 0x52, 0xfd, 0x2b, 0x2a, 0xea,
0xbb, 0x51, 0xd1, 0x0f, 0x51, 0xea, 0x08, 0xce, 0xa2, 0xab, 0xb1, 0xd1, 0xd8, 0x94, 0xe2, 0xd9,
0xf2, 0xfe, 0xad, 0x22, 0x4b, 0x70, 0xae, 0x38, 0x9c, 0xaf, 0x4b, 0xc2, 0x9b, 0x74, 0x96, 0x0f,
0x91, 0x84, 0xed, 0x0e, 0xe0, 0x18, 0x4d, 0x3a, 0xc9, 0xc3, 0x52, 0x89, 0xb4, 0xfa, 0xec, 0x24,
0xe8, 0x85, 0x13, 0x54, 0x1e, 0xa1, 0x4c, 0x95, 0x7d, 0xe2, 0x23, 0x24, 0x34, 0xd9, 0xd6, 0x8f,
0xf9, 0x5e, 0x6d, 0x6c, 0xbd, 0x38, 0x8b, 0x72, 0xec, 0x17, 0x97, 0x20, 0xb7, 0xfc, 0x02, 0x03,
0x83, 0x28, 0x11, 0x6d, 0x57, 0x25, 0x37, 0xa7, 0xae, 0x56, 0xdc, 0x9c, 0xba, 0xaa, 0x70, 0x87,
0xe2, 0xaa, 0xca, 0x85, 0x99, 0x6d, 0xcf, 0xdf, 0x54, 0x3f, 0x48, 0x51, 0x45, 0xc7, 0xc6, 0xe3,
0x21, 0xb7, 0x02, 0x12, 0x4c, 0x01, 0x3a, 0x50, 0xb2, 0xcf, 0x06, 0xc9, 0x78, 0x6d, 0x88, 0x14,
0x5c, 0x63, 0x18, 0xe4, 0xc2, 0x57, 0xb6, 0x2b, 0x4b, 0x57, 0xec, 0xca, 0xd2, 0x55, 0xd9, 0x95,
0x25, 0x56, 0x7c, 0x9d, 0x11, 0x28, 0x1e, 0xec, 0x78, 0xc0, 0x33, 0x3c, 0x78, 0xd6, 0x92, 0x19,
0x12, 0x49, 0x53, 0x05, 0x49, 0xed, 0xbb, 0x10, 0x77, 0x14, 0xdc, 0xdf, 0x04, 0xd7, 0x01, 0x7c,
0xb8, 0x21, 0xa5, 0x9f, 0x25, 0x92, 0x4f, 0xe6, 0x76, 0x20, 0x11, 0x2f, 0x09, 0x8e, 0xe6, 0x02,
0xdf, 0x6e, 0x5a, 0xa9, 0x04, 0xe6, 0xf8, 0x1c, 0x61, 0xab, 0xf6, 0x13, 0xed, 0x9a, 0xda, 0x07,
0x3c, 0x3e, 0xa0, 0x1a, 0x4a, 0xb7, 0x3b, 0x6f, 0x70, 0x9c, 0x5a, 0xfc, 0xb3, 0x39, 0xf3, 0x5a,
0xcd, 0x4e, 0xbb, 0xf3, 0xa6, 0x4e, 0x3e, 0x07, 0xe8, 0xf3, 0x6d, 0xfb, 0xb8, 0x43, 0x3f, 0x13,
0xf4, 0xd9, 0x7a, 0xdb, 0xe9, 0x84, 0x74, 0x7a, 0xab, 0x27, 0x1a, 0xf9, 0x21, 0x59, 0xc2, 0xa8,
0xe3, 0x04, 0x64, 0x0c, 0x96, 0x49, 0x1c, 0xee, 0xd0, 0x17, 0xff, 0x60, 0x50, 0x8c, 0xa6, 0x1e,
0xc9, 0xc0, 0xdc, 0x1f, 0x33, 0x83, 0x93, 0xa3, 0xd9, 0x04, 0xf5, 0x1d, 0x39, 0xed, 0x0b, 0x77,
0x79, 0x48, 0xfb, 0x83, 0xf6, 0x9b, 0xc3, 0x77, 0x47, 0x10, 0x1d, 0x96, 0x4b, 0x44, 0x57, 0x54,
0x2f, 0x97, 0x04, 0x99, 0x0e, 0x92, 0xb8, 0xa1, 0x4b, 0x47, 0x17, 0x42, 0x9e, 0x92, 0x2c, 0xd1,
0x09, 0xf5, 0x22, 0x14, 0x60, 0xf4, 0x25, 0x8c, 0x24, 0x5e, 0x04, 0x1d, 0x86, 0x65, 0xed, 0x87,
0x08, 0x2e, 0x7e, 0xd4, 0xfe, 0x23, 0x41, 0x78, 0x11, 0xab, 0xb1, 0x20, 0x70, 0xdd, 0xba, 0x63,
0x48, 0xf5, 0x48, 0xf3, 0x9c, 0xbc, 0x8e, 0xd9, 0xc0, 0x9b, 0x66, 0xb7, 0x0e, 0x19, 0xaf, 0xa0,
0x7d, 0xdc, 0xa2, 0xc7, 0x44, 0x7d, 0x68, 0x09, 0x1a, 0x0c, 0xf4, 0xf1, 0xfe, 0x9d, 0x6f, 0x6e,
0x11, 0xd0, 0x8a, 0xe3, 0xf1, 0x76, 0xe9, 0x60, 0xd6, 0x69, 0xcf, 0xb1, 0xb1, 0x95, 0xa9, 0x94,
0xd7, 0x9a, 0xe6, 0x8c, 0xa2, 0x87, 0xba, 0x0e, 0x65, 0xec, 0x34, 0xdb, 0xa5, 0x03, 0x4b, 0x11,
0x0f, 0x54, 0xc4, 0x03, 0x3b, 0xe2, 0x41, 0x39, 0xe2, 0x81, 0x86, 0x38, 0x51, 0x11, 0x27, 0x76,
0xc4, 0x49, 0x39, 0xe2, 0x44, 0x45, 0xec, 0x49, 0xba, 0xa3, 0x74, 0xeb, 0x41, 0x59, 0xaa, 0x4a,
0x6e, 0xe3, 0x4a, 0x8b, 0xd9, 0xb3, 0xf5, 0xd0, 0x69, 0x2b, 0x18, 0x3d, 0x85, 0x6b, 0xf4, 0xdf,
0x6d, 0xa9, 0x18, 0x3c, 0xa2, 0xca, 0xb2, 0x85, 0xce, 0x51, 0x7d, 0x2f, 0x07, 0x86, 0x9c, 0xd6,
0x3b, 0x78, 0x00, 0x05, 0x45, 0x89, 0x94, 0x07, 0xcb, 0x9e, 0x29, 0x5e, 0x88, 0x41, 0x6f, 0x29,
0x60, 0x7d, 0x58, 0xb5, 0x45, 0x26, 0xeb, 0x4a, 0xbd, 0xef, 0x2d, 0x15, 0x35, 0xeb, 0x33, 0x06,
0xdc, 0x7b, 0xd7, 0xe8, 0x33, 0x74, 0x8d, 0x62, 0x2e, 0x5d, 0x4b, 0x55, 0xd3, 0x78, 0x72, 0x3d,
0x4d, 0x6d, 0x7d, 0xed, 0xac, 0xc0, 0x69, 0xd1, 0x26, 0xfc, 0xb4, 0xf7, 0xbd, 0xbe, 0x9c, 0x23,
0x1b, 0x65, 0x2a, 0x2f, 0xbd, 0x8e, 0xd2, 0x1f, 0xa4, 0xfc, 0x02, 0x98, 0x0c, 0xf2, 0xfa, 0x9d,
0xb6, 0x0f, 0xa1, 0xf3, 0x93, 0x9c, 0xbb, 0xc8, 0xa2, 0xdb, 0xaf, 0xb4, 0x09, 0xee, 0xf8, 0x99,
0x19, 0x70, 0xf9, 0x30, 0xdc, 0x11, 0x6c, 0x68, 0xd6, 0xfe, 0xfe, 0xf7, 0x1a, 0xd3, 0x6c, 0x23,
0x50, 0x6c, 0xa5, 0x84, 0x3b, 0x04, 0x41, 0x94, 0xee, 0x83, 0x9f, 0xc8, 0xba, 0x7c, 0xf0, 0x81,
0x3c, 0x17, 0x21, 0x8f, 0xa7, 0x7f, 0xe7, 0x69, 0x1a, 0xc8, 0x4e, 0xce, 0xaf, 0xec, 0xe6, 0xf4,
0x0a, 0xad, 0x85, 0xa9, 0x0e, 0x16, 0xe3, 0xa7, 0xa2, 0xf5, 0x72, 0xf8, 0x10, 0xd6, 0x0b, 0xdc,
0x7f, 0x7c, 0x2d, 0x26, 0x0b, 0xeb, 0xd6, 0xe6, 0x6c, 0xc0, 0xad, 0x00, 0x9b, 0xf6, 0x8f, 0x31,
0xe3, 0x18, 0x75, 0xd0, 0x14, 0x9f, 0xfe, 0x3a, 0x74, 0x0b, 0x76, 0x00, 0xcd, 0xc3, 0xb5, 0x48,
0x43, 0xa7, 0x99, 0x03, 0xbb, 0xde, 0x49, 0xd8, 0x44, 0x17, 0x7d, 0x5c, 0xa5, 0x72, 0x57, 0x9a,
0xe1, 0xeb, 0xde, 0xba, 0xc0, 0x03, 0xb5, 0x5a, 0xc3, 0xb2, 0x8e, 0x42, 0x35, 0x6d, 0x69, 0xbf,
0xe1, 0xb1, 0xdf, 0xf0, 0xd8, 0x78, 0xc3, 0x83, 0xbe, 0x3f, 0xb4, 0xa0, 0x2f, 0x02, 0xd9, 0xf7,
0x3c, 0x0a, 0x5b, 0x23, 0xb4, 0x84, 0xa7, 0xc9, 0xab, 0xc7, 0xf5, 0x87, 0xf4, 0x87, 0x63, 0x58,
0x29, 0xb2, 0x49, 0x58, 0x2d, 0x92, 0x03, 0x6d, 0xf6, 0x43, 0x84, 0xc4, 0x91, 0xc3, 0x18, 0x90,
0x00, 0x4f, 0xd3, 0xf9, 0x70, 0x84, 0x60, 0x21, 0x78, 0x97, 0x4c, 0x19, 0xbd, 0x28, 0x8d, 0xf5,
0x60, 0x47, 0xca, 0x40, 0x6a, 0x23, 0x28, 0x6c, 0x81, 0x92, 0xc4, 0xce, 0xbe, 0x2a, 0xa4, 0x06,
0xef, 0xda, 0xef, 0x71, 0xb4, 0x2a, 0x8c, 0xa4, 0x4e, 0x2b, 0x2a, 0x79, 0x45, 0x48, 0x7b, 0x29,
0x4d, 0x09, 0xd5, 0x54, 0x65, 0x61, 0xb2, 0x77, 0xb3, 0xbe, 0xe6, 0xdd, 0x65, 0x48, 0x52, 0x14,
0x9e, 0x13, 0x89, 0x17, 0x38, 0x9d, 0x7c, 0x23, 0x7d, 0xeb, 0x74, 0x94, 0xde, 0x80, 0x8a, 0x34,
0x71, 0x68, 0x64, 0x63, 0xc4, 0x91, 0x3e, 0x95, 0x81, 0xc3, 0x78, 0xce, 0x42, 0x48, 0xe0, 0xd0,
0xb2, 0x45, 0xce, 0x24, 0xd3, 0xc9, 0xc3, 0x01, 0xd1, 0xf8, 0x83, 0x4b, 0x38, 0xf0, 0xe1, 0xac,
0x8e, 0xff, 0x0c, 0xe8, 0x63, 0x4d, 0xf8, 0x23, 0x21, 0x1f, 0xe4, 0x5f, 0x37, 0x40, 0x0a, 0x29,
0xd2, 0x1e, 0x0a, 0xef, 0x8f, 0x94, 0x0f, 0x16, 0x56, 0x46, 0x25, 0xa2, 0xa1, 0x4f, 0xea, 0x58,
0x99, 0x6d, 0xd0, 0x82, 0x48, 0xdb, 0xe6, 0x3f, 0x97, 0x58, 0x3b, 0x63, 0x9a, 0x5d, 0x62, 0x2d,
0xdb, 0xb2, 0x15, 0xe9, 0x59, 0x8b, 0xac, 0xac, 0xad, 0x5f, 0x85, 0xd2, 0x96, 0x52, 0x24, 0x35,
0x14, 0x91, 0xf3, 0x2f, 0x2b, 0x50, 0xa3, 0x62, 0x1c, 0x54, 0x21, 0xc2, 0x4c, 0xff, 0x55, 0x49,
0x6f, 0x99, 0x4b, 0x0c, 0x2b, 0x90, 0x67, 0x2e, 0x99, 0x2e, 0xe2, 0xc1, 0x20, 0xc5, 0x71, 0x26,
0x60, 0x46, 0x03, 0x8b, 0xd6, 0xfe, 0x51, 0xeb, 0x60, 0x1b, 0xa9, 0xd5, 0x3c, 0x42, 0x06, 0x12,
0x4f, 0x3c, 0x6a, 0x1e, 0xe3, 0xc4, 0xc3, 0x63, 0x94, 0x8a, 0xfe, 0x50, 0x4b, 0x30, 0x9d, 0x0d,
0x6f, 0xa8, 0x01, 0xd8, 0xab, 0x5f, 0xa2, 0xff, 0x86, 0x6e, 0xc3, 0x89, 0xeb, 0x7d, 0xf4, 0xdf,
0xc0, 0xf5, 0x9d, 0x41, 0xfd, 0x0a, 0xfd, 0x47, 0xd2, 0x12, 0xf4, 0x5f, 0xcf, 0x75, 0x83, 0x1a,
0xa8, 0xbe, 0xa8, 0x0e, 0xdf, 0x21, 0xc8, 0x1b, 0x7c, 0x7a, 0x40, 0x5c, 0x05, 0x41, 0x50, 0xbd,
0xfd, 0xbe, 0x89, 0x58, 0xb6, 0xd3, 0x20, 0x60, 0x7a, 0xe8, 0x29, 0xac, 0xee, 0x62, 0xe1, 0x83,
0x89, 0x68, 0x2e, 0xe0, 0xec, 0x3b, 0xc4, 0x36, 0xf1, 0xc9, 0xf7, 0x92, 0x7f, 0xb3, 0x78, 0x63,
0xc2, 0x62, 0x78, 0x04, 0x31, 0xfc, 0x44, 0xd2, 0x96, 0x08, 0x47, 0x93, 0x6c, 0x2c, 0x8f, 0x37,
0xb6, 0x5a, 0xc2, 0x8d, 0x50, 0x85, 0xf1, 0x44, 0xba, 0x12, 0xc0, 0xd2, 0xb1, 0x76, 0xa5, 0x7b,
0xc9, 0xaf, 0xe2, 0x7e, 0x76, 0xab, 0xa7, 0x82, 0xd0, 0x35, 0x82, 0xc7, 0x3d, 0x88, 0x80, 0x22,
0x82, 0xde, 0x9d, 0x9f, 0xd5, 0x0e, 0x9b, 0xed, 0xa3, 0xf6, 0xf1, 0xfb, 0xce, 0x9b, 0xe3, 0xc3,
0xe3, 0x77, 0xef, 0xdf, 0xbe, 0x3f, 0x3c, 0x30, 0x04, 0xd4, 0x01, 0x0b, 0xd4, 0x1a, 0xcb, 0x4c,
0xe6, 0x48, 0x87, 0x3c, 0x70, 0x87, 0x2c, 0x23, 0x88, 0x67, 0xe8, 0xca, 0x01, 0x0d, 0xf1, 0x8a,
0xf1, 0x99, 0x04, 0xa0, 0xe9, 0x21, 0x63, 0x17, 0xec, 0xb3, 0x78, 0x32, 0x77, 0x1c, 0xd1, 0xe4,
0xbf, 0x5a, 0xdf, 0x1b, 0xd2, 0x57, 0xfb, 0xbb, 0xeb, 0x61, 0x63, 0x8f, 0x46, 0x75, 0x73, 0xeb,
0x6a, 0x26, 0xc7, 0x3c, 0xca, 0xa6, 0x69, 0x84, 0x24, 0xee, 0x04, 0x41, 0x77, 0x8e, 0x3d, 0x7a,
0x34, 0x1a, 0x53, 0xe4, 0x06, 0x52, 0xbd, 0xfc, 0x5c, 0x34, 0x0e, 0xf5, 0x12, 0x51, 0xfe, 0x25,
0x66, 0x26, 0x9a, 0x64, 0x18, 0x03, 0x65, 0x62, 0xbf, 0x41, 0x73, 0x5d, 0x34, 0xed, 0xce, 0xcf,
0xf0, 0xfd, 0x0e, 0x96, 0xc7, 0xdd, 0x19, 0xe0, 0x88, 0xf8, 0x20, 0xb7, 0x91, 0x9b, 0x8b, 0x11,
0x1d, 0x2f, 0xee, 0xb2, 0x8a, 0xef, 0x86, 0xe3, 0x6b, 0x1c, 0xea, 0x97, 0xa4, 0x2f, 0xeb, 0xe7,
0x67, 0xa1, 0xa4, 0x7b, 0xb7, 0x9b, 0xef, 0xde, 0x1e, 0x37, 0x44, 0x5c, 0xbf, 0x76, 0xf3, 0xed,
0x31, 0xcd, 0x47, 0x93, 0x94, 0xbc, 0xcf, 0x09, 0xf1, 0x83, 0x78, 0x29, 0x12, 0xd8, 0xf1, 0x02,
0x37, 0x9d, 0x17, 0xc3, 0x4d, 0x01, 0x79, 0x81, 0xc6, 0x01, 0x4d, 0x76, 0xec, 0x58, 0xc5, 0xbd,
0x43, 0x46, 0x22, 0x10, 0xa9, 0x0c, 0x29, 0xc9, 0x70, 0x3d, 0xf6, 0x0d, 0x31, 0x72, 0xa1, 0x00,
0x23, 0x1b, 0x33, 0x0c, 0x1e, 0x2f, 0xa9, 0x42, 0xb6, 0x6f, 0x8a, 0x33, 0xe9, 0xfe, 0x2a, 0x1e,
0x28, 0x92, 0x02, 0x11, 0xc1, 0xc8, 0x2f, 0x6a, 0x7c, 0x8b, 0x66, 0x75, 0x8a, 0xfe, 0x07, 0x60,
0x61, 0x12, 0x41, 0x05, 0x14, 0x4e, 0x87, 0x8c, 0x4d, 0x9d, 0xf6, 0x97, 0x1b, 0x9c, 0x9f, 0x61,
0x59, 0x22, 0xb8, 0x89, 0x84, 0x64, 0x86, 0x42, 0xb4, 0x66, 0xf2, 0x12, 0x16, 0x99, 0x09, 0xbe,
0xc4, 0xfc, 0x3e, 0x06, 0x42, 0xaa, 0x0a, 0xe2, 0x64, 0x99, 0xf8, 0x72, 0xa2, 0x14, 0x39, 0x24,
0xb7, 0x90, 0xb0, 0xa2, 0x54, 0x71, 0x33, 0x76, 0xeb, 0xd2, 0xe7, 0x76, 0xc2, 0x8d, 0x4f, 0xc9,
0x93, 0x2f, 0xbf, 0x9d, 0x9d, 0xfc, 0x72, 0x76, 0x72, 0x71, 0xf6, 0xe5, 0xe7, 0x9a, 0x25, 0x20,
0x3e, 0x22, 0x98, 0xc3, 0xe3, 0x96, 0xe1, 0x20, 0xc7, 0xc7, 0xef, 0xde, 0x1e, 0xb6, 0xda, 0x6f,
0x0e, 0x0a, 0x9b, 0x50, 0xa0, 0xc2, 0x13, 0x9f, 0x4a, 0x71, 0x83, 0x0a, 0x07, 0x05, 0x2f, 0x57,
0x70, 0x8b, 0xa1, 0x6c, 0x21, 0x3c, 0x92, 0x26, 0x9d, 0x50, 0x0b, 0xf5, 0x77, 0xfc, 0x34, 0x51,
0x47, 0x29, 0xd0, 0x52, 0x71, 0xec, 0x9b, 0x4e, 0x21, 0x32, 0xd2, 0x20, 0x1e, 0x8f, 0x63, 0x16,
0xea, 0xc8, 0x10, 0x20, 0x14, 0x54, 0xfb, 0x49, 0x3a, 0xcf, 0x2e, 0xe3, 0xd9, 0x8b, 0x0b, 0x1b,
0xb3, 0x7f, 0xda, 0x6a, 0x83, 0x63, 0xa5, 0x83, 0x78, 0x5a, 0xf2, 0x34, 0x14, 0xcb, 0x2d, 0x8b,
0xd3, 0xcc, 0x60, 0x56, 0x45, 0x6a, 0x96, 0xe1, 0xca, 0xba, 0x0c, 0xbf, 0xa6, 0x6a, 0x69, 0x12,
0xce, 0xb3, 0x77, 0x18, 0xce, 0x2e, 0xef, 0x14, 0x0e, 0x52, 0x42, 0x42, 0x49, 0x87, 0xac, 0xec,
0x8d, 0x4a, 0x5d, 0xa1, 0xf6, 0xc3, 0xf3, 0x0b, 0x31, 0xf4, 0xda, 0x1f, 0x68, 0xe2, 0x4c, 0xaf,
0x0e, 0x0c, 0x4b, 0x36, 0x10, 0xc2, 0xb2, 0x7c, 0x79, 0x4e, 0x58, 0x42, 0x56, 0x0b, 0x34, 0x6b,
0xf2, 0xbc, 0xdc, 0x22, 0xf2, 0xc2, 0xb1, 0xa1, 0x47, 0x70, 0x86, 0x2f, 0xe6, 0x82, 0xb1, 0x3f,
0x68, 0xe9, 0x75, 0xd8, 0x5d, 0x6d, 0x83, 0xad, 0x1f, 0x58, 0x27, 0x94, 0xf7, 0x00, 0x6b, 0xbe,
0xc6, 0xe7, 0x4a, 0x38, 0xcd, 0x28, 0x66, 0x2f, 0x24, 0x34, 0xda, 0x9d, 0x77, 0x48, 0xbd, 0xa7,
0x8a, 0x51, 0x97, 0x7b, 0xfc, 0x23, 0x12, 0xc8, 0x9b, 0xbc, 0x7f, 0x80, 0x83, 0x34, 0x82, 0xa2,
0x12, 0x4a, 0x4b, 0x54, 0xc4, 0x63, 0x67, 0x13, 0x20, 0x70, 0x05, 0xb8, 0x75, 0xfa, 0x75, 0xeb,
0xbd, 0x39, 0xa2, 0xf1, 0xbf, 0x85, 0xbb, 0x4f, 0x5e, 0xb4, 0xc1, 0x91, 0xa8, 0xcc, 0x5e, 0xbe,
0x67, 0x29, 0xc1, 0x80, 0x33, 0x91, 0xfe, 0xa6, 0x3b, 0x65, 0x21, 0x1f, 0x5f, 0xf6, 0x03, 0xf4,
0x06, 0x66, 0xec, 0xc6, 0xa3, 0x4b, 0x92, 0x29, 0x72, 0xe8, 0x68, 0x00, 0xf1, 0x1e, 0x1d, 0x10,
0xa6, 0xd5, 0x42, 0x3a, 0xc3, 0x52, 0x77, 0xd8, 0x2f, 0xae, 0x07, 0x2b, 0x3a, 0x0b, 0x58, 0xa9,
0x5c, 0xb9, 0xcb, 0xae, 0x73, 0xa5, 0x2c, 0xaf, 0xd7, 0x2b, 0x62, 0xe9, 0xe0, 0x17, 0x1a, 0x40,
0x31, 0xaa, 0x3b, 0x82, 0x3e, 0xaa, 0x9b, 0x93, 0xe7, 0x1b, 0xe4, 0x8a, 0x5c, 0xb5, 0x53, 0xf0,
0xa5, 0x48, 0x52, 0x9d, 0x27, 0x62, 0x45, 0x12, 0x0d, 0x42, 0x93, 0x6b, 0x58, 0x91, 0x96, 0x06,
0x50, 0xcb, 0xcf, 0x49, 0xf4, 0x68, 0xa4, 0x90, 0x5e, 0x6b, 0x75, 0x90, 0x5e, 0xe9, 0x44, 0xe4,
0xaf, 0x5e, 0x8d, 0xc7, 0xf6, 0xad, 0x90, 0x32, 0x9d, 0x43, 0xe0, 0xe6, 0xc6, 0xb5, 0x7f, 0x0d,
0xaf, 0x94, 0x6b, 0x4f, 0x58, 0x31, 0xc6, 0x52, 0x6d, 0x4b, 0xa0, 0x3f, 0xa0, 0xca, 0x15, 0xdb,
0xa6, 0x2b, 0x3b, 0x36, 0x29, 0x5e, 0xf4, 0xee, 0x28, 0xc5, 0x70, 0xff, 0x15, 0x2a, 0x33, 0xc6,
0x57, 0xc4, 0x6f, 0x48, 0xa1, 0x2e, 0x93, 0x83, 0x5f, 0xb2, 0x7b, 0xa5, 0xe4, 0x76, 0xa8, 0xb5,
0x94, 0xa9, 0x48, 0xa1, 0xd2, 0xc2, 0x55, 0x79, 0xcf, 0xa4, 0x27, 0x82, 0x2d, 0x2d, 0xa9, 0x7b,
0xd1, 0x6a, 0x1a, 0x83, 0x15, 0x04, 0x85, 0x4c, 0xad, 0x24, 0x0e, 0x12, 0xc2, 0x14, 0x3e, 0xe6,
0xe2, 0xa7, 0x0b, 0x07, 0xf7, 0x82, 0xde, 0x67, 0x2a, 0x57, 0xd1, 0xcd, 0xea, 0xbc, 0x51, 0x71,
0x7f, 0xdc, 0x90, 0x75, 0xbb, 0x79, 0x29, 0xc8, 0x74, 0xe5, 0x9a, 0xb4, 0xdd, 0xf5, 0x58, 0xdf,
0x34, 0xe7, 0xa1, 0x20, 0xa1, 0x13, 0xe1, 0x77, 0x6e, 0xea, 0x66, 0xdb, 0x0d, 0x0a, 0xc9, 0x7d,
0x24, 0x5f, 0xd4, 0x26, 0x76, 0xe9, 0x18, 0xf5, 0x17, 0x54, 0xd7, 0x70, 0x38, 0xfa, 0xbc, 0x81,
0x11, 0xbb, 0xbe, 0xa8, 0x10, 0x47, 0x0a, 0x75, 0x03, 0x9c, 0x6e, 0x31, 0x5e, 0x1f, 0x21, 0x34,
0x14, 0xb7, 0x3a, 0x7f, 0x3d, 0xf9, 0xb3, 0xfb, 0xcb, 0xd9, 0x97, 0xd3, 0xee, 0xa7, 0xb3, 0x8b,
0xdf, 0x4e, 0xbe, 0x7c, 0x3c, 0xad, 0x1d, 0x76, 0xde, 0xbe, 0x79, 0x2b, 0xd9, 0xa5, 0x7b, 0x3b,
0xb6, 0xba, 0x1d, 0x8b, 0x24, 0xe7, 0x60, 0x96, 0xce, 0xad, 0x31, 0x3b, 0xf6, 0x16, 0xe3, 0xde,
0x62, 0x7c, 0xad, 0x16, 0xe3, 0xde, 0x86, 0xdb, 0xdb, 0x70, 0xcf, 0xdc, 0x86, 0x63, 0xe2, 0xb9,
0xaa, 0x19, 0x17, 0x14, 0x56, 0xc7, 0xbd, 0x61, 0xb7, 0x37, 0xec, 0xf6, 0x86, 0xdd, 0x13, 0x19,
0x76, 0x2f, 0xc8, 0xf2, 0xaa, 0xbc, 0x6f, 0xbc, 0xb9, 0x4d, 0xb6, 0x5a, 0x09, 0xad, 0x72, 0x7c,
0x70, 0x6f, 0x7a, 0xe9, 0xa6, 0x97, 0xe5, 0x39, 0x2f, 0xba, 0x51, 0x0e, 0xec, 0xaa, 0x76, 0xb3,
0xfd, 0x59, 0xaf, 0xc7, 0xb1, 0xd8, 0x8a, 0xf6, 0x15, 0xcb, 0x51, 0x56, 0xaa, 0xee, 0xc5, 0xc7,
0x93, 0x5f, 0x4e, 0x6b, 0x9d, 0x0d, 0x2c, 0xb9, 0x87, 0xb6, 0xd7, 0xec, 0x16, 0x59, 0xb9, 0x45,
0xb7, 0x8d, 0xbd, 0x26, 0x76, 0x15, 0xcb, 0x26, 0xd1, 0xde, 0x4c, 0x7b, 0x38, 0x33, 0xed, 0x19,
0x58, 0x45, 0xcf, 0xce, 0x52, 0xdc, 0xb1, 0x99, 0xb6, 0xbf, 0x27, 0xf9, 0x8c, 0xee, 0x49, 0xbe,
0x72, 0x73, 0xf8, 0x69, 0xcd, 0xcf, 0xe7, 0x66, 0x8c, 0xef, 0xca, 0x1c, 0xfe, 0x7f, 0x73, 0x73,
0x75, 0x7b, 0x93, 0x9f, 0xc1, 0xad, 0xb7, 0x79, 0x6b, 0xd0, 0xa1, 0xf6, 0x36, 0xff, 0xde, 0xe6,
0xdf, 0xdb, 0xfc, 0x0f, 0x61, 0xf3, 0x8b, 0xa9, 0x18, 0xcb, 0x0a, 0x7a, 0xb9, 0x2f, 0x60, 0x93,
0x9b, 0x92, 0x8a, 0xbc, 0xd1, 0x43, 0x90, 0xac, 0xb4, 0xc9, 0x77, 0x67, 0x68, 0xbc, 0x96, 0x8b,
0x8a, 0x2f, 0x7f, 0xa7, 0x7c, 0xb5, 0xab, 0xe4, 0x19, 0xdd, 0x78, 0x7c, 0x42, 0x57, 0xce, 0x3e,
0xa4, 0xef, 0xeb, 0x7a, 0xe8, 0x43, 0xee, 0x6a, 0xb9, 0x7d, 0x6a, 0x9b, 0x9b, 0x0b, 0x8f, 0xf7,
0x5a, 0xa0, 0x06, 0xc7, 0xd5, 0x00, 0x97, 0x26, 0x9c, 0x89, 0x01, 0x27, 0xa2, 0xda, 0xa3, 0xfd,
0x5d, 0x86, 0x11, 0x28, 0x0e, 0x5f, 0x94, 0xff, 0x90, 0x60, 0x5b, 0xa0, 0x8e, 0x24, 0xf7, 0x6e,
0xf9, 0x02, 0x11, 0xa8, 0xfd, 0xdc, 0x5c, 0xa8, 0xf0, 0x49, 0x39, 0x7c, 0xa2, 0xc2, 0x2f, 0xbb,
0xf8, 0x85, 0xe0, 0x3a, 0xef, 0x09, 0xa4, 0xe0, 0xd0, 0x1b, 0x5d, 0x9c, 0x3e, 0x4c, 0x93, 0xa3,
0xd5, 0xba, 0xac, 0x77, 0xe8, 0x33, 0x27, 0xae, 0x4e, 0xd0, 0x52, 0x20, 0x4f, 0x36, 0x41, 0x9e,
0xd8, 0x91, 0x27, 0x82, 0x31, 0x70, 0x60, 0x8e, 0xf5, 0x6f, 0x41, 0x63, 0x0e, 0x42, 0xbd, 0xea,
0xa3, 0x96, 0xbb, 0x12, 0xae, 0x64, 0x83, 0x3b, 0xcc, 0x14, 0x57, 0x82, 0x70, 0x25, 0xae, 0xe2,
0xf1, 0x05, 0x5c, 0xc6, 0x7b, 0xcc, 0xa8, 0x52, 0xdf, 0x9c, 0x91, 0xb8, 0xe6, 0xfb, 0xcb, 0xc4,
0x07, 0xfc, 0x80, 0xef, 0x2d, 0xbc, 0x60, 0x0f, 0x70, 0xa5, 0x13, 0x3b, 0x74, 0xb0, 0xc8, 0x33,
0xcd, 0x71, 0x41, 0xc1, 0x43, 0xbd, 0xdf, 0x5d, 0x4a, 0xe9, 0xa6, 0x52, 0x89, 0xa5, 0x54, 0xf2,
0x48, 0xa7, 0x83, 0x68, 0x2a, 0x54, 0x12, 0x9b, 0x12, 0x93, 0x4d, 0x94, 0xc2, 0xfd, 0x7d, 0x97,
0xfd, 0xe9, 0xa5, 0xfd, 0xe9, 0xa5, 0x72, 0xb7, 0x38, 0x1b, 0x32, 0x83, 0xcf, 0xec, 0x21, 0x5c,
0xe6, 0xd8, 0x51, 0x54, 0x42, 0xa5, 0xc8, 0xb7, 0xf6, 0x95, 0x00, 0x31, 0xf1, 0x97, 0x94, 0x5b,
0xd6, 0x9b, 0x2a, 0xd8, 0xfe, 0xf2, 0xce, 0xfe, 0xe0, 0xd7, 0x33, 0x39, 0xf8, 0xb5, 0x3b, 0xdf,
0xb6, 0x34, 0x15, 0xc5, 0x4f, 0x43, 0xcd, 0x22, 0xd3, 0x57, 0xe7, 0xa7, 0xa9, 0xc9, 0x32, 0x26,
0xe3, 0x24, 0xdb, 0xbb, 0xa0, 0xf7, 0x2e, 0xe8, 0xbd, 0x0b, 0xfa, 0x15, 0xba, 0xa0, 0xb1, 0xaa,
0x1e, 0x51, 0x99, 0xc1, 0xe7, 0xa5, 0xa7, 0x5b, 0x1f, 0xcd, 0x45, 0x20, 0x09, 0x14, 0x3e, 0x7e,
0x05, 0xb0, 0x65, 0x9d, 0x1b, 0x26, 0x2e, 0xc5, 0x9e, 0xac, 0xc4, 0x9e, 0x54, 0xc3, 0x9e, 0x48,
0xd8, 0x21, 0xd4, 0x56, 0x35, 0x37, 0xf9, 0xea, 0x17, 0x49, 0xe7, 0xfd, 0x4b, 0xdc, 0xad, 0xc5,
0x18, 0x4b, 0xc8, 0x62, 0x7b, 0x66, 0x56, 0xd0, 0xfe, 0x16, 0x57, 0xf9, 0x3a, 0xbc, 0x3b, 0x3d,
0xf8, 0x71, 0x95, 0xd8, 0x97, 0x78, 0xa1, 0xcc, 0x88, 0xa1, 0xe4, 0x20, 0x40, 0xb1, 0xc7, 0x4b,
0x3b, 0x7c, 0x0d, 0x75, 0xe5, 0x05, 0xfa, 0x47, 0x91, 0x10, 0x82, 0xdc, 0x6e, 0x6c, 0x8c, 0x46,
0x84, 0x45, 0x89, 0xdb, 0x8c, 0x35, 0xe0, 0xc4, 0x0a, 0x9c, 0x14, 0x80, 0xb1, 0x2b, 0x8f, 0xd7,
0xe2, 0x73, 0x14, 0x3e, 0x96, 0x73, 0x6e, 0x48, 0x1c, 0x73, 0x91, 0xf2, 0x9e, 0xea, 0x71, 0x43,
0x48, 0x47, 0x59, 0x42, 0x93, 0x98, 0xb7, 0xa6, 0x1c, 0x8a, 0xf6, 0xf1, 0x8f, 0x7f, 0x56, 0x3a,
0x61, 0x99, 0x8f, 0xd0, 0x0a, 0x32, 0x93, 0x1f, 0x53, 0xe0, 0x32, 0x1f, 0xaf, 0x28, 0x96, 0xcc,
0xe4, 0xfa, 0xf2, 0x32, 0x9d, 0x95, 0x3d, 0xb4, 0xba, 0x66, 0x18, 0xae, 0x96, 0x21, 0xad, 0xbd,
0x69, 0x6c, 0xae, 0x56, 0xe4, 0x38, 0xe6, 0xd8, 0x85, 0x0d, 0x38, 0x79, 0x1b, 0xa8, 0xf4, 0xd7,
0x5c, 0x88, 0x32, 0x44, 0x4a, 0xb6, 0x23, 0x12, 0xca, 0x0d, 0x1e, 0xf4, 0x96, 0x3b, 0x00, 0xc2,
0x4f, 0x89, 0xae, 0x92, 0x3a, 0x57, 0xde, 0x4b, 0xee, 0x16, 0xfb, 0x49, 0x7f, 0x8c, 0xa2, 0xb0,
0xd4, 0xb6, 0xec, 0x59, 0xed, 0xca, 0xdd, 0x54, 0x18, 0x9d, 0x19, 0xc4, 0x40, 0x42, 0xaa, 0xc4,
0x1c, 0x82, 0x46, 0x97, 0x65, 0x83, 0xb0, 0x2c, 0x8e, 0x7c, 0x8c, 0xba, 0x0d, 0x87, 0x83, 0xd3,
0xdf, 0xe7, 0x10, 0x4e, 0xc5, 0x49, 0x3e, 0x8b, 0xe7, 0xa6, 0xf7, 0x3b, 0xe0, 0x31, 0x8d, 0xf9,
0x74, 0x38, 0xe9, 0xde, 0xe2, 0x90, 0xb0, 0xda, 0x91, 0x72, 0x21, 0x96, 0x5b, 0xc5, 0x89, 0xd9,
0x22, 0x41, 0xc5, 0x5a, 0x2b, 0x62, 0x96, 0xb6, 0x09, 0x58, 0x9b, 0x04, 0x8c, 0x26, 0xc8, 0x9a,
0x31, 0x51, 0xfd, 0x51, 0x15, 0x34, 0x61, 0x36, 0x48, 0x22, 0xf1, 0x33, 0x60, 0x60, 0xe1, 0x3d,
0x2f, 0xd4, 0xd6, 0x0b, 0xb5, 0x45, 0xa1, 0xb6, 0x28, 0xd4, 0x86, 0x42, 0x9a, 0xbf, 0x9f, 0x60,
0xf3, 0x69, 0x48, 0x52, 0x36, 0xfa, 0xf4, 0x9d, 0xa0, 0x66, 0x2c, 0x07, 0x6e, 0xc6, 0x5d, 0xc2,
0xf1, 0x02, 0xda, 0x10, 0xbe, 0x70, 0xc0, 0x67, 0x08, 0xb6, 0x8d, 0x3e, 0x7c, 0xb5, 0xc7, 0x20,
0x08, 0xbd, 0xeb, 0x5b, 0xf2, 0xee, 0x16, 0x4b, 0x6b, 0xde, 0xf2, 0x6e, 0xc1, 0xe3, 0xa2, 0xc5,
0x37, 0x29, 0x92, 0x0e, 0x69, 0xc4, 0x1e, 0xd5, 0x61, 0x2f, 0x25, 0xb1, 0x27, 0x92, 0xdc, 0xe0,
0x10, 0xc2, 0x58, 0x42, 0x10, 0x6b, 0x87, 0xc2, 0x36, 0xd0, 0x17, 0x84, 0xef, 0x2a, 0x0e, 0x3f,
0x10, 0x0c, 0x15, 0xe2, 0xd9, 0xe3, 0x15, 0x86, 0x9f, 0x4c, 0x1f, 0x32, 0xf4, 0xc0, 0x50, 0x60,
0x5f, 0x93, 0x06, 0xea, 0xac, 0xe8, 0xaf, 0x4c, 0x70, 0x19, 0x22, 0xf4, 0xdb, 0x82, 0x07, 0xaa,
0xf0, 0x2b, 0xa4, 0x68, 0x12, 0x16, 0x4b, 0x0a, 0x12, 0x2f, 0x8c, 0x11, 0xe9, 0xf3, 0x6a, 0x7c,
0xdc, 0x76, 0x3a, 0x7c, 0x3e, 0x0b, 0xf1, 0xb5, 0x9d, 0xfc, 0x45, 0xbd, 0x34, 0xcf, 0xe9, 0x94,
0x39, 0x3f, 0x8b, 0x0a, 0xc1, 0xf6, 0x42, 0xe3, 0x96, 0x09, 0xb5, 0x96, 0xcd, 0x5b, 0x26, 0x4a,
0xea, 0x21, 0x94, 0xe0, 0x76, 0x92, 0x2a, 0x73, 0x99, 0x1b, 0x01, 0x33, 0xa6, 0x2e, 0x84, 0x92,
0x2c, 0x1b, 0x81, 0x90, 0x99, 0x93, 0x8d, 0x36, 0x08, 0xf4, 0xd8, 0xc5, 0xc4, 0xc6, 0x92, 0xa4,
0xd7, 0x80, 0x2e, 0xd3, 0x18, 0xcb, 0xd2, 0x02, 0x9c, 0xfa, 0xa8, 0x1c, 0x86, 0x2d, 0xcb, 0xb4,
0x64, 0xf5, 0xe2, 0x31, 0xe2, 0x41, 0x30, 0xe4, 0x20, 0xe8, 0x1a, 0x92, 0xcc, 0x2c, 0x54, 0xbf,
0x05, 0x7e, 0x3a, 0xcc, 0x7b, 0x57, 0x3a, 0xad, 0xb3, 0x2c, 0x8f, 0xf3, 0xb4, 0x3b, 0x5f, 0x8e,
0x93, 0x6c, 0x64, 0x29, 0x48, 0x42, 0xcc, 0x69, 0xbb, 0x49, 0x8a, 0x10, 0xef, 0x5d, 0xe1, 0x08,
0x8c, 0x2f, 0x60, 0xf7, 0x60, 0xc5, 0x06, 0x1a, 0x49, 0x1d, 0xc5, 0x49, 0x8a, 0x16, 0xae, 0x51,
0x3c, 0x49, 0x2d, 0x10, 0x03, 0xf6, 0xc0, 0x80, 0x96, 0x2d, 0x38, 0x00, 0x44, 0xb0, 0x9e, 0x8c,
0x47, 0x80, 0x98, 0xcb, 0xe3, 0x78, 0x1a, 0x5a, 0x8e, 0x5c, 0x15, 0x4d, 0xbb, 0x82, 0x61, 0xa7,
0xb0, 0xe8, 0x33, 0x79, 0x69, 0x5b, 0xe8, 0x31, 0x91, 0x3c, 0x2b, 0xf9, 0x49, 0x13, 0xe6, 0x26,
0x55, 0x73, 0xd9, 0x39, 0x15, 0xac, 0x79, 0x08, 0x0f, 0x20, 0x4b, 0x84, 0x0e, 0x61, 0xa9, 0x08,
0x54, 0xe6, 0xcb, 0x79, 0x3a, 0x18, 0x43, 0xb0, 0x41, 0xc4, 0x79, 0xa3, 0x34, 0x6a, 0x68, 0xf3,
0xfa, 0xaf, 0xce, 0x77, 0xa6, 0xa8, 0x42, 0x9f, 0xc2, 0x02, 0xf6, 0x83, 0x65, 0xfa, 0xc2, 0x53,
0x18, 0x3f, 0xd8, 0x67, 0x2d, 0xea, 0x54, 0x4c, 0x05, 0x88, 0x41, 0x42, 0xd0, 0x5f, 0xad, 0xef,
0x3e, 0xfd, 0xd5, 0xfe, 0xee, 0xb3, 0x09, 0xec, 0x06, 0x38, 0x6e, 0x71, 0x78, 0x5f, 0x83, 0x3e,
0xab, 0x41, 0x8d, 0xdb, 0x55, 0xc8, 0x2b, 0x2b, 0x22, 0x2e, 0x6b, 0xca, 0x6a, 0xc4, 0x54, 0xaa,
0x50, 0x7c, 0x6a, 0x9a, 0xea, 0x2b, 0x3b, 0xcf, 0x86, 0x93, 0x7c, 0x55, 0x08, 0x6d, 0x1a, 0x09,
0x99, 0x4b, 0x23, 0x24, 0x82, 0xae, 0x32, 0x21, 0x8d, 0x22, 0x15, 0x5b, 0x53, 0x1d, 0x45, 0x06,
0x45, 0xa4, 0x4b, 0xa4, 0xcf, 0x91, 0xda, 0x4f, 0x07, 0x56, 0xc4, 0x41, 0x89, 0x08, 0xac, 0x7d,
0x38, 0x28, 0xc9, 0x0d, 0xac, 0x38, 0x15, 0xda, 0x24, 0x97, 0x16, 0x25, 0x8f, 0x98, 0x65, 0x60,
0xa7, 0x80, 0x0b, 0x53, 0xa5, 0x1d, 0x9b, 0x5e, 0xe0, 0x59, 0x0e, 0xa1, 0x27, 0xbd, 0xa8, 0x50,
0x9a, 0x9d, 0x8b, 0x42, 0x8a, 0x00, 0x3b, 0xff, 0x44, 0xe5, 0x44, 0xed, 0x27, 0xcc, 0xa5, 0x41,
0xe7, 0x08, 0x7b, 0x59, 0xf1, 0x48, 0x28, 0xac, 0x8e, 0xa5, 0x33, 0x91, 0xd5, 0xa0, 0xc9, 0xa3,
0x9a, 0x42, 0xc2, 0x5f, 0x8a, 0xf8, 0x66, 0xba, 0x22, 0x99, 0x5a, 0xe7, 0x2b, 0x07, 0x91, 0xc4,
0x5e, 0x6e, 0xe3, 0x90, 0xd0, 0xfc, 0xe9, 0x98, 0x58, 0x1f, 0xaf, 0xc5, 0x32, 0x28, 0x8c, 0x20,
0x86, 0x4c, 0x22, 0x53, 0x45, 0x00, 0x6f, 0x4c, 0xbf, 0x0d, 0xf5, 0x66, 0xe0, 0xf8, 0xb1, 0x0e,
0x9c, 0x9d, 0xc2, 0x07, 0xb4, 0xd4, 0x85, 0xc6, 0x87, 0xe3, 0x57, 0x70, 0xc6, 0x2b, 0xbc, 0x97,
0xbb, 0x02, 0xcf, 0x76, 0xc4, 0xab, 0x93, 0x08, 0x87, 0x29, 0x95, 0x65, 0x40, 0x5d, 0xc3, 0xaf,
0xf2, 0x27, 0x29, 0xd8, 0x43, 0xd2, 0x09, 0x07, 0x67, 0x2d, 0x2f, 0x08, 0x0e, 0xe4, 0x1a, 0xfb,
0xa4, 0x1d, 0x17, 0x61, 0xaf, 0x32, 0x47, 0xe3, 0x63, 0x3f, 0x3d, 0x27, 0xc7, 0xd7, 0x7f, 0xf5,
0x68, 0xa4, 0x5f, 0xd9, 0xf3, 0x0c, 0xb2, 0xd1, 0xb4, 0xba, 0xf0, 0x31, 0x91, 0x21, 0x51, 0x47,
0x2a, 0x81, 0x6a, 0x24, 0x3b, 0x4e, 0x5b, 0x7d, 0xa8, 0x43, 0x5a, 0x2b, 0x1c, 0xa8, 0x09, 0xb7,
0x75, 0xad, 0x3d, 0x1e, 0xdf, 0xb8, 0x0a, 0x0e, 0x21, 0x5a, 0x2f, 0xe7, 0x4b, 0x29, 0xfe, 0xf4,
0x0d, 0x95, 0xca, 0xe8, 0xdf, 0x40, 0x5a, 0xa0, 0x60, 0xf4, 0xe5, 0x25, 0x88, 0x2d, 0x27, 0xf4,
0xd3, 0x51, 0x75, 0x28, 0x1e, 0x9d, 0x5c, 0x68, 0x0a, 0x91, 0x9c, 0x8f, 0x84, 0x28, 0xb6, 0x29,
0x20, 0x0e, 0xaf, 0xa2, 0x4f, 0xd4, 0x3e, 0x34, 0x54, 0xfd, 0x42, 0x5d, 0xf8, 0xf8, 0xcb, 0x4a,
0xe0, 0x26, 0x81, 0xd8, 0xd9, 0x0a, 0xd2, 0xd6, 0xf7, 0xba, 0x54, 0xd4, 0xb5, 0x3a, 0x6f, 0xa9,
0xa9, 0x14, 0x3e, 0x49, 0xa8, 0xa8, 0xf5, 0xd7, 0xf6, 0x2d, 0x9d, 0x69, 0x12, 0x10, 0x71, 0x34,
0x51, 0x00, 0x4f, 0xab, 0x57, 0xd1, 0xd4, 0x65, 0x6b, 0x92, 0xfe, 0x26, 0xfe, 0x20, 0x97, 0x9c,
0xbb, 0xda, 0xab, 0xfc, 0x0f, 0xaf, 0xf2, 0xdb, 0x3c, 0xc5, 0xc3, 0xd1, 0xa8, 0xec, 0xe4, 0x92,
0xc8, 0xb7, 0x1f, 0x5f, 0x12, 0x30, 0xa6, 0x33, 0x4c, 0x52, 0x6e, 0x99, 0xf3, 0x5f, 0x05, 0x2b,
0x7b, 0x86, 0x28, 0x1e, 0x65, 0x65, 0x14, 0x8b, 0x7c, 0x3b, 0xc5, 0x02, 0xc6, 0x44, 0xb1, 0x94,
0x5b, 0x46, 0xb1, 0x0a, 0xf6, 0xa2, 0x0f, 0x3b, 0xe1, 0xa6, 0x94, 0x9c, 0x9b, 0x11, 0xf9, 0xf6,
0x77, 0x43, 0x39, 0x88, 0xf1, 0xed, 0x50, 0x91, 0x5b, 0xfa, 0x4a, 0x94, 0x02, 0xb6, 0x8a, 0x60,
0xfb, 0xb9, 0x36, 0x9e, 0x5d, 0x4e, 0xae, 0xed, 0x84, 0x9b, 0xc8, 0x5c, 0x49, 0xac, 0xb2, 0x37,
0xf1, 0x1c, 0x6d, 0xc1, 0xc7, 0x34, 0xd9, 0xd7, 0x75, 0x1f, 0x98, 0x4c, 0xfc, 0x6a, 0x36, 0x2b,
0x48, 0x61, 0xc5, 0xed, 0x7a, 0x48, 0x13, 0xdb, 0x95, 0xac, 0x55, 0x49, 0xca, 0x89, 0x9f, 0xa6,
0x23, 0x56, 0x22, 0xd7, 0x57, 0x65, 0x9f, 0xe9, 0xb0, 0x95, 0x8c, 0x6a, 0x23, 0xf9, 0x25, 0x7e,
0x9a, 0x68, 0x11, 0xb9, 0xbe, 0x2a, 0xd5, 0x4c, 0xb4, 0xc8, 0xa8, 0xd6, 0x97, 0x4c, 0x3b, 0x3f,
0x9b, 0x25, 0x09, 0x1c, 0xf1, 0xd3, 0xf4, 0x5c, 0x2c, 0xcf, 0xf4, 0x55, 0x29, 0x64, 0x7c, 0x36,
0x56, 0xc2, 0xb4, 0x89, 0x28, 0xe1, 0xbf, 0x6c, 0x84, 0xd0, 0x53, 0x71, 0x92, 0x74, 0xb1, 0x92,
0x41, 0xb7, 0x2e, 0x8b, 0x32, 0x62, 0xef, 0xd5, 0xd8, 0x7b, 0x35, 0xf6, 0x5e, 0x8d, 0xbd, 0x57,
0x63, 0xef, 0xd5, 0x78, 0x3d, 0x5e, 0x0d, 0x76, 0x22, 0x58, 0x9c, 0x79, 0x53, 0x4e, 0xc9, 0x11,
0x3e, 0x78, 0x56, 0x8e, 0x0f, 0xf1, 0x5a, 0xd2, 0x6c, 0x9a, 0x8d, 0x62, 0x68, 0xfd, 0x16, 0x9e,
0x10, 0xaa, 0x9f, 0x91, 0x13, 0x6e, 0xa8, 0x6d, 0xcd, 0x05, 0xdc, 0xb9, 0xc2, 0x57, 0xc7, 0x88,
0x92, 0x46, 0x36, 0x10, 0xa5, 0x0e, 0xf2, 0xc9, 0x9b, 0x94, 0xb6, 0xfa, 0x49, 0x30, 0x39, 0x7a,
0xf9, 0xe9, 0xe2, 0xd3, 0xe7, 0xee, 0xf9, 0x9f, 0xb5, 0x77, 0xd2, 0x7d, 0xa8, 0xd3, 0x4f, 0x3f,
0x9f, 0x76, 0x7f, 0x3e, 0xf9, 0xf5, 0xd7, 0x13, 0xd4, 0xda, 0x76, 0xeb, 0xd8, 0x70, 0x18, 0xe6,
0xa0, 0xa8, 0x35, 0xc3, 0x62, 0x5c, 0xc1, 0x0e, 0xde, 0xad, 0x0d, 0xbb, 0x43, 0xfb, 0x73, 0x57,
0x26, 0xe4, 0x4e, 0xed, 0xbf, 0x47, 0x30, 0xdf, 0x4c, 0xde, 0x3c, 0xb3, 0xc9, 0x23, 0x9f, 0xb6,
0xb2, 0x58, 0x69, 0x5b, 0x18, 0x32, 0xa5, 0x5c, 0xba, 0x9e, 0x1d, 0x52, 0x6e, 0x86, 0xac, 0x65,
0x46, 0x3c, 0xc6, 0xe9, 0x3b, 0x89, 0x79, 0xd6, 0xd3, 0xe7, 0xcb, 0x38, 0x63, 0x3d, 0x95, 0x1c,
0xc4, 0x33, 0x1d, 0x1e, 0x50, 0xac, 0x8b, 0x22, 0x9d, 0x0e, 0x13, 0xbf, 0xac, 0x8e, 0xf5, 0x41,
0x96, 0xb8, 0x94, 0x25, 0x33, 0x6b, 0x3c, 0xcd, 0x14, 0x3a, 0x76, 0x45, 0x9d, 0x46, 0x04, 0x6d,
0x20, 0x23, 0x21, 0x0d, 0xa9, 0xcc, 0x7e, 0x98, 0xb8, 0x48, 0x88, 0xc2, 0xc0, 0xe1, 0xf8, 0x3d,
0x85, 0x35, 0xdd, 0x50, 0x3e, 0x53, 0x79, 0x7d, 0x79, 0x19, 0x39, 0x58, 0x55, 0x6e, 0xe0, 0x7b,
0x0b, 0x54, 0x6d, 0xe6, 0x8a, 0x38, 0xf4, 0x0f, 0x3b, 0x8c, 0x13, 0x49, 0x2c, 0x40, 0xaa, 0x73,
0x78, 0xf7, 0x79, 0xed, 0x66, 0xfb, 0x7d, 0x40, 0x84, 0x73, 0x5d, 0x50, 0xe1, 0x96, 0x90, 0x41,
0xea, 0x86, 0x9a, 0xc5, 0x68, 0x06, 0x62, 0x41, 0xa5, 0xc8, 0xc2, 0x7b, 0x89, 0x5c, 0x7c, 0x24,
0xd0, 0xe4, 0x2f, 0x06, 0x6f, 0x71, 0x33, 0x2e, 0x76, 0x08, 0xa9, 0xab, 0x1f, 0xe1, 0x0f, 0x4f,
0x9e, 0xa0, 0x8a, 0x9a, 0x83, 0x7d, 0xd5, 0xd2, 0x21, 0x42, 0x20, 0xad, 0x21, 0x23, 0xf0, 0x21,
0xa5, 0xae, 0xa4, 0x54, 0x3c, 0x31, 0xe8, 0xa9, 0x2b, 0xd9, 0x56, 0xbe, 0xec, 0xff, 0x03, 0x24,
0xfc, 0xa9, 0x11
};
const char* shaderSource() {

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<SymbolIconProgram> {
static constexpr const char* name = "symbol_icon";
static constexpr const uint8_t hash[8] = { 0x96, 0x0c, 0xef, 0xec, 0x37, 0x23, 0xf9, 0xb1 };
static constexpr const auto vertexOffset = 50000;
static constexpr const auto fragmentOffset = 52654;
static constexpr const auto vertexOffset = 49728;
static constexpr const auto fragmentOffset = 52382;
};
constexpr const char* ShaderSource<SymbolIconProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<SymbolSDFIconProgram> {
static constexpr const char* name = "symbol_sdf_icon";
static constexpr const uint8_t hash[8] = { 0x13, 0xfc, 0x05, 0x2a, 0xd1, 0x93, 0xfb, 0x7d };
static constexpr const auto vertexOffset = 53059;
static constexpr const auto fragmentOffset = 57099;
static constexpr const auto vertexOffset = 52787;
static constexpr const auto fragmentOffset = 56827;
};
constexpr const char* ShaderSource<SymbolSDFIconProgram>::name;

View File

@@ -16,8 +16,8 @@ template <>
struct ShaderSource<SymbolSDFTextProgram> {
static constexpr const char* name = "symbol_sdf_text";
static constexpr const uint8_t hash[8] = { 0x13, 0xfc, 0x05, 0x2a, 0xd1, 0x93, 0xfb, 0x7d };
static constexpr const auto vertexOffset = 53059;
static constexpr const auto fragmentOffset = 57099;
static constexpr const auto vertexOffset = 52787;
static constexpr const auto fragmentOffset = 56827;
};
constexpr const char* ShaderSource<SymbolSDFTextProgram>::name;

View File

@@ -56,86 +56,83 @@ bool RenderFillExtrusionLayer::hasCrossfade() const {
}
void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*) {
if (parameters.pass == RenderPass::Opaque) {
if (parameters.pass != RenderPass::Translucent) {
return;
}
if (parameters.pass == RenderPass::Pass3D) {
const auto& size = parameters.staticData.backendSize;
if (!renderTexture || renderTexture->getSize() != size) {
renderTexture.reset();
renderTexture = parameters.context.createOffscreenTexture(size, *parameters.staticData.depthRenderbuffer);
}
const auto& evaluated = static_cast<const FillExtrusionLayerProperties&>(*evaluatedProperties).evaluated;
const auto& crossfade = static_cast<const FillExtrusionLayerProperties&>(*evaluatedProperties).crossfade;
if (evaluated.get<FillExtrusionOpacity>() == 0) {
return;
}
optional<float> depthClearValue = {};
if (parameters.staticData.depthRenderbuffer->needsClearing()) depthClearValue = 1.0;
// Flag the depth buffer as no longer needing to be cleared for the remainder of this pass.
parameters.staticData.depthRenderbuffer->setShouldClear(false);
const auto depthMode = parameters.depthModeFor3D();
auto renderPass = parameters.encoder->createRenderPass(
"fill extrusion",
{ *renderTexture, Color{ 0.0f, 0.0f, 0.0f, 0.0f }, depthClearValue, {} });
auto draw = [&](auto& programInstance,
const auto& evaluated_,
const auto& crossfade_,
const gfx::StencilMode& stencilMode,
const gfx::ColorMode& colorMode,
const auto& tileBucket,
const auto& uniformValues,
const optional<ImagePosition>& patternPositionA,
const optional<ImagePosition>& patternPositionB,
const auto& textureBindings) {
const auto& paintPropertyBinders = tileBucket.paintPropertyBinders.at(getID());
paintPropertyBinders.setPatternParameters(patternPositionA, patternPositionB, crossfade_);
auto draw = [&](auto& programInstance,
const auto& evaluated_,
const auto& crossfade_,
const auto& tileBucket,
auto&& uniformValues,
const optional<ImagePosition>& patternPositionA,
const optional<ImagePosition>& patternPositionB,
auto&& textureBindings) {
const auto& paintPropertyBinders = tileBucket.paintPropertyBinders.at(getID());
paintPropertyBinders.setPatternParameters(patternPositionA, patternPositionB, crossfade_);
const auto allUniformValues = programInstance.computeAllUniformValues(
uniformValues,
paintPropertyBinders,
evaluated_,
parameters.state.getZoom()
);
const auto allAttributeBindings = programInstance.computeAllAttributeBindings(
*tileBucket.vertexBuffer,
paintPropertyBinders,
evaluated_
);
const auto allUniformValues = programInstance.computeAllUniformValues(
std::move(uniformValues),
paintPropertyBinders,
evaluated_,
parameters.state.getZoom()
);
const auto allAttributeBindings = programInstance.computeAllAttributeBindings(
*tileBucket.vertexBuffer,
paintPropertyBinders,
evaluated_
);
checkRenderability(parameters, programInstance.activeBindingCount(allAttributeBindings));
checkRenderability(parameters, programInstance.activeBindingCount(allAttributeBindings));
programInstance.draw(
parameters.context,
*parameters.renderPass,
gfx::Triangles(),
depthMode,
stencilMode,
colorMode,
gfx::CullFaceMode::backCCW(),
*tileBucket.indexBuffer,
tileBucket.triangleSegments,
allUniformValues,
allAttributeBindings,
textureBindings,
getID());
};
programInstance.draw(
parameters.context,
*renderPass,
gfx::Triangles(),
parameters.depthModeFor3D(gfx::DepthMaskType::ReadWrite),
gfx::StencilMode::disabled(),
parameters.colorModeForRenderPass(),
gfx::CullFaceMode::backCCW(),
*tileBucket.indexBuffer,
tileBucket.triangleSegments,
allUniformValues,
allAttributeBindings,
std::move(textureBindings),
getID());
};
if (unevaluated.get<FillExtrusionPattern>().isUndefined()) {
if (unevaluated.get<FillExtrusionPattern>().isUndefined()) {
// Draw solid color extrusions
auto drawTiles = [&](const gfx::StencilMode& stencilMode_, const gfx::ColorMode& colorMode_) {
for (const RenderTile& tile : renderTiles) {
const LayerRenderData* renderData = tile.tile.getLayerRenderData(*baseImpl);
if (!renderData) {
continue;
}
auto& bucket = static_cast<FillExtrusionBucket&>(*renderData->bucket);
const auto& evaluated = getEvaluated<FillExtrusionLayerProperties>(renderData->layerProperties);
const auto& crossfade = getCrossfade<FillExtrusionLayerProperties>(renderData->layerProperties);
draw(
parameters.programs.getFillExtrusionLayerPrograms().fillExtrusion,
evaluated,
crossfade,
stencilMode_,
colorMode_,
bucket,
FillExtrusionProgram::layoutUniformValues(
tile.translatedClipMatrix(evaluated.get<FillExtrusionTranslate>(),
evaluated.get<FillExtrusionTranslateAnchor>(),
parameters.state),
parameters.state,
evaluated.get<FillExtrusionOpacity>(),
parameters.evaluatedLight
),
{},
@@ -143,17 +140,32 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
FillExtrusionProgram::TextureBindings{}
);
}
};
if (evaluated.get<FillExtrusionOpacity>() == 1) {
// Draw opaque extrusions
drawTiles(gfx::StencilMode::disabled(), parameters.colorModeForRenderPass());
} else {
// Draw transparent buildings in two passes so that only the closest surface is drawn.
// First draw all the extrusions into only the depth buffer. No colors are drawn.
drawTiles(gfx::StencilMode::disabled(), gfx::ColorMode::disabled());
// Then draw all the extrusions a second time, only coloring fragments if they have the
// same depth value as the closest fragment in the previous pass. Use the stencil buffer
// to prevent the second draw in cases where we have coincident polygons.
drawTiles(parameters.stencilModeFor3D(), parameters.colorModeForRenderPass());
}
} else {
// Draw textured extrusions
const auto fillPatternValue = evaluated.get<FillExtrusionPattern>().constantOr(mbgl::Faded<std::basic_string<char> >{"", ""});
auto drawTiles = [&](const gfx::StencilMode& stencilMode_, const gfx::ColorMode& colorMode_) {
for (const RenderTile& tile : renderTiles) {
const LayerRenderData* renderData = tile.tile.getLayerRenderData(*baseImpl);
if (!renderData) {
continue;
}
auto& bucket = static_cast<FillExtrusionBucket&>(*renderData->bucket);
const auto& evaluated = getEvaluated<FillExtrusionLayerProperties>(renderData->layerProperties);
const auto& crossfade = getCrossfade<FillExtrusionLayerProperties>(renderData->layerProperties);
const auto fillPatternValue = evaluated.get<FillExtrusionPattern>().constantOr(mbgl::Faded<std::basic_string<char> >{"", ""});
auto& geometryTile = static_cast<GeometryTile&>(tile.tile);
optional<ImagePosition> patternPosA = geometryTile.getPattern(fillPatternValue.from);
optional<ImagePosition> patternPosB = geometryTile.getPattern(fillPatternValue.to);
@@ -162,6 +174,8 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
parameters.programs.getFillExtrusionLayerPrograms().fillExtrusionPattern,
evaluated,
crossfade,
stencilMode_,
colorMode_,
bucket,
FillExtrusionPatternProgram::layoutUniformValues(
tile.translatedClipMatrix(evaluated.get<FillExtrusionTranslate>(),
@@ -171,6 +185,7 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
crossfade,
tile.id,
parameters.state,
evaluated.get<FillExtrusionOpacity>(),
-std::pow(2, tile.id.canonical.z) / util::tileSize / 8.0f,
parameters.pixelRatio,
parameters.evaluatedLight
@@ -182,54 +197,16 @@ void RenderFillExtrusionLayer::render(PaintParameters& parameters, RenderSource*
}
);
}
}
};
} else if (parameters.pass == RenderPass::Translucent) {
const auto& size = parameters.staticData.backendSize;
const auto& evaluated = static_cast<const FillExtrusionLayerProperties&>(*evaluatedProperties).evaluated;
// Draw transparent buildings in two passes so that only the closest surface is drawn.
// First draw all the extrusions into only the depth buffer. No colors are drawn.
drawTiles(gfx::StencilMode::disabled(), gfx::ColorMode::disabled());
mat4 viewportMat;
matrix::ortho(viewportMat, 0, size.width, size.height, 0, 0, 1);
const Properties<>::PossiblyEvaluated properties;
const ExtrusionTextureProgram::Binders paintAttributeData{ properties, 0 };
auto& programInstance = parameters.programs.getFillExtrusionLayerPrograms().extrusionTexture;
const auto allUniformValues = programInstance.computeAllUniformValues(
ExtrusionTextureProgram::LayoutUniformValues{
uniforms::matrix::Value( viewportMat ),
uniforms::world::Value( size ),
uniforms::opacity::Value( evaluated.get<FillExtrusionOpacity>() )
},
paintAttributeData,
properties,
parameters.state.getZoom()
);
const auto allAttributeBindings = programInstance.computeAllAttributeBindings(
parameters.staticData.extrusionTextureVertexBuffer,
paintAttributeData,
properties
);
checkRenderability(parameters, programInstance.activeBindingCount(allAttributeBindings));
programInstance.draw(
parameters.context,
*parameters.renderPass,
gfx::Triangles(),
gfx::DepthMode::disabled(),
gfx::StencilMode::disabled(),
parameters.colorModeForRenderPass(),
gfx::CullFaceMode::disabled(),
parameters.staticData.quadTriangleIndexBuffer,
parameters.staticData.extrusionTextureSegments,
allUniformValues,
allAttributeBindings,
ExtrusionTextureProgram::TextureBindings{
textures::image::Value{ renderTexture->getTexture().getResource() },
},
getID());
// Then draw all the extrusions a second time, only coloring fragments if they have the
// same depth value as the closest fragment in the previous pass. Use the stencil buffer
// to prevent the second draw in cases where we have coincident polygons.
drawTiles(parameters.stencilModeFor3D(), parameters.colorModeForRenderPass());
}
}

View File

@@ -159,7 +159,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
parameters.state.getZoom()
);
const auto allAttributeBindings = programInstance.computeAllAttributeBindings(
parameters.staticData.extrusionTextureVertexBuffer,
parameters.staticData.heatmapTextureVertexBuffer,
paintAttributeData,
properties
);
@@ -175,7 +175,7 @@ void RenderHeatmapLayer::render(PaintParameters& parameters, RenderSource*) {
parameters.colorModeForRenderPass(),
gfx::CullFaceMode::disabled(),
parameters.staticData.quadTriangleIndexBuffer,
parameters.staticData.extrusionTextureSegments,
parameters.staticData.heatmapTextureSegments,
allUniformValues,
allAttributeBindings,
HeatmapTextureProgram::TextureBindings{

View File

@@ -72,8 +72,10 @@ gfx::DepthMode PaintParameters::depthModeForSublayer(uint8_t n, gfx::DepthMaskTy
return gfx::DepthMode { gfx::DepthFunctionType::LessEqual, mask, { nearDepth, farDepth } };
}
gfx::DepthMode PaintParameters::depthModeFor3D(gfx::DepthMaskType mask) const {
return gfx::DepthMode { gfx::DepthFunctionType::LessEqual, mask, { 0.0, 1.0 } };
gfx::DepthMode PaintParameters::depthModeFor3D() const {
return gfx::DepthMode{ gfx::DepthFunctionType::LessEqual,
gfx::DepthMaskType::ReadWrite,
{ 0.0, depthRangeSize } };
}
void PaintParameters::clearStencil() {
@@ -166,6 +168,24 @@ gfx::StencilMode PaintParameters::stencilModeForClipping(const UnwrappedTileID&
gfx::StencilOpType::Replace };
}
gfx::StencilMode PaintParameters::stencilModeFor3D() {
if (nextStencilID + 1 > 256) {
clearStencil();
}
// We're potentially destroying the stencil clipping mask in this pass. That means we'll have
// to recreate it for the next source if any.
tileClippingMaskIDs.clear();
const int32_t id = nextStencilID++;
return gfx::StencilMode{ gfx::StencilMode::NotEqual{ 0b11111111 },
id,
0b11111111,
gfx::StencilOpType::Keep,
gfx::StencilOpType::Keep,
gfx::StencilOpType::Replace };
}
gfx::ColorMode PaintParameters::colorModeForRenderPass() const {
if (debugOptions & MapDebugOptions::Overdraw) {
const float overdraw = 1.0f / 8.0f;

View File

@@ -69,7 +69,7 @@ public:
Programs& programs;
gfx::DepthMode depthModeForSublayer(uint8_t n, gfx::DepthMaskType) const;
gfx::DepthMode depthModeFor3D(gfx::DepthMaskType) const;
gfx::DepthMode depthModeFor3D() const;
gfx::ColorMode colorModeForRenderPass() const;
mat4 matrixForTile(const UnwrappedTileID&, bool aligned = false) const;
@@ -82,6 +82,7 @@ public:
public:
void renderTileClippingMasks(const std::vector<std::reference_wrapper<RenderTile>>&);
gfx::StencilMode stencilModeForClipping(const UnwrappedTileID&) const;
gfx::StencilMode stencilModeFor3D();
private:
void clearStencil();
@@ -96,7 +97,7 @@ public:
float depthRangeSize;
const float depthEpsilon = 1.0f / (1 << 16);
float symbolFadeChange;
};

View File

@@ -39,19 +39,19 @@ static gfx::VertexVector<RasterLayoutVertex> rasterVertices() {
return result;
}
static gfx::VertexVector<ExtrusionTextureLayoutVertex> extrusionTextureVertices() {
gfx::VertexVector<ExtrusionTextureLayoutVertex> result;
result.emplace_back(ExtrusionTextureProgram::layoutVertex({ 0, 0 }));
result.emplace_back(ExtrusionTextureProgram::layoutVertex({ 1, 0 }));
result.emplace_back(ExtrusionTextureProgram::layoutVertex({ 0, 1 }));
result.emplace_back(ExtrusionTextureProgram::layoutVertex({ 1, 1 }));
static gfx::VertexVector<HeatmapTextureLayoutVertex> heatmapTextureVertices() {
gfx::VertexVector<HeatmapTextureLayoutVertex> result;
result.emplace_back(HeatmapTextureProgram::layoutVertex({ 0, 0 }));
result.emplace_back(HeatmapTextureProgram::layoutVertex({ 1, 0 }));
result.emplace_back(HeatmapTextureProgram::layoutVertex({ 0, 1 }));
result.emplace_back(HeatmapTextureProgram::layoutVertex({ 1, 1 }));
return result;
}
RenderStaticData::RenderStaticData(gfx::Context& context, float pixelRatio, const optional<std::string>& programCacheDir)
: tileVertexBuffer(context.createVertexBuffer(tileVertices())),
rasterVertexBuffer(context.createVertexBuffer(rasterVertices())),
extrusionTextureVertexBuffer(context.createVertexBuffer(extrusionTextureVertices())),
heatmapTextureVertexBuffer(context.createVertexBuffer(heatmapTextureVertices())),
quadTriangleIndexBuffer(context.createIndexBuffer(quadTriangleIndices())),
tileBorderIndexBuffer(context.createIndexBuffer(tileLineStripIndices())),
programs(context, ProgramParameters { pixelRatio, false, programCacheDir })
@@ -62,7 +62,7 @@ RenderStaticData::RenderStaticData(gfx::Context& context, float pixelRatio, cons
tileTriangleSegments.emplace_back(0, 0, 4, 6);
tileBorderSegments.emplace_back(0, 0, 4, 5);
rasterSegments.emplace_back(0, 0, 4, 6);
extrusionTextureSegments.emplace_back(0, 0, 4, 6);
heatmapTextureSegments.emplace_back(0, 0, 4, 6);
}
} // namespace mbgl

View File

@@ -4,7 +4,7 @@
#include <mbgl/gfx/index_buffer.hpp>
#include <mbgl/gfx/renderbuffer.hpp>
#include <mbgl/programs/background_program.hpp>
#include <mbgl/programs/extrusion_texture_program.hpp>
#include <mbgl/programs/heatmap_texture_program.hpp>
#include <mbgl/programs/programs.hpp>
#include <mbgl/programs/raster_program.hpp>
#include <mbgl/util/optional.hpp>
@@ -22,7 +22,7 @@ public:
gfx::VertexBuffer<gfx::Vertex<PositionOnlyLayoutAttributes>> tileVertexBuffer;
gfx::VertexBuffer<RasterLayoutVertex> rasterVertexBuffer;
gfx::VertexBuffer<ExtrusionTextureLayoutVertex> extrusionTextureVertexBuffer;
gfx::VertexBuffer<HeatmapTextureLayoutVertex> heatmapTextureVertexBuffer;
gfx::IndexBuffer quadTriangleIndexBuffer;
gfx::IndexBuffer tileBorderIndexBuffer;
@@ -30,7 +30,7 @@ public:
SegmentVector<BackgroundAttributes> tileTriangleSegments;
SegmentVector<DebugAttributes> tileBorderSegments;
SegmentVector<RasterAttributes> rasterSegments;
SegmentVector<ExtrusionTextureAttributes> extrusionTextureSegments;
SegmentVector<HeatmapTextureAttributes> heatmapTextureSegments;
optional<gfx::Renderbuffer<gfx::RenderbufferPixelType::Depth>> depthRenderbuffer;
bool has3D = false;