Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Eagar <joeedh@gmail.com>2009-03-08 10:15:41 +0300
committerJoseph Eagar <joeedh@gmail.com>2009-03-08 10:15:41 +0300
commit0c5032ebf3124edce9d19bc0464ef1b3d4a04828 (patch)
tree824a4dfae826be70e0358f67e252f622f2b958dd /source/blender
parent57c37cf10c4037ab66b06802169a7b2008e51013 (diff)
parentd0267ccf6dffa0b7dafa85f6db8ff03251dbb8df (diff)
merge with 2.5 at 19207, plus some half-finished walker stuff
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenfont/BLF_api.h9
-rw-r--r--source/blender/blenfont/SConscript8
-rw-r--r--source/blender/blenfont/intern/blf.c88
-rw-r--r--source/blender/blenfont/intern/blf_font.c213
-rw-r--r--source/blender/blenfont/intern/blf_glyph.c45
-rw-r--r--source/blender/blenfont/intern/blf_internal.h13
-rw-r--r--source/blender/blenfont/intern/blf_internal_types.h42
-rw-r--r--source/blender/blenkernel/BKE_brush.h4
-rw-r--r--source/blender/blenkernel/BKE_context.h14
-rw-r--r--source/blender/blenkernel/BKE_fcurve.h21
-rw-r--r--source/blender/blenkernel/BKE_particle.h12
-rw-r--r--source/blender/blenkernel/BKE_text.h17
-rw-r--r--source/blender/blenkernel/intern/brush.c8
-rw-r--r--source/blender/blenkernel/intern/context.c37
-rw-r--r--source/blender/blenkernel/intern/curve.c1
-rw-r--r--source/blender/blenkernel/intern/fcurve.c85
-rw-r--r--source/blender/blenkernel/intern/image.c14
-rw-r--r--source/blender/blenkernel/intern/ipo.c253
-rw-r--r--source/blender/blenkernel/intern/node.c8
-rw-r--r--source/blender/blenkernel/intern/particle.c24
-rw-r--r--source/blender/blenkernel/intern/particle_system.c26
-rw-r--r--source/blender/blenkernel/intern/text.c122
-rw-r--r--source/blender/blenlib/intern/arithb.c6
-rw-r--r--source/blender/blenloader/intern/readfile.c14
-rw-r--r--source/blender/bmesh/bmesh_operators.h2
-rw-r--r--source/blender/bmesh/bmesh_walkers.h23
-rw-r--r--source/blender/bmesh/intern/bmesh_walkers.c255
-rw-r--r--source/blender/editors/animation/anim_channels.c143
-rw-r--r--source/blender/editors/animation/anim_filter.c61
-rw-r--r--source/blender/editors/animation/keyframes_draw.c2
-rw-r--r--source/blender/editors/animation/keyframes_edit.c2
-rw-r--r--source/blender/editors/animation/keyframes_general.c185
-rw-r--r--source/blender/editors/animation/keyframing.c384
-rw-r--r--source/blender/editors/armature/armature_intern.h4
-rw-r--r--source/blender/editors/armature/armature_ops.c11
-rw-r--r--source/blender/editors/armature/editarmature.c341
-rw-r--r--source/blender/editors/curve/curve_intern.h1
-rw-r--r--source/blender/editors/curve/curve_ops.c1
-rw-r--r--source/blender/editors/curve/editfont.c194
-rw-r--r--source/blender/editors/datafiles/bmonofont.ttf.c9681
-rw-r--r--source/blender/editors/include/ED_anim_api.h2
-rw-r--r--source/blender/editors/include/ED_armature.h3
-rw-r--r--source/blender/editors/include/ED_curve.h11
-rw-r--r--source/blender/editors/include/ED_datafiles.h3
-rw-r--r--source/blender/editors/include/ED_fileselect.h4
-rw-r--r--source/blender/editors/include/ED_image.h6
-rw-r--r--source/blender/editors/include/ED_keyframes_edit.h6
-rw-r--r--source/blender/editors/include/ED_mesh.h7
-rw-r--r--source/blender/editors/include/ED_particle.h37
-rw-r--r--source/blender/editors/include/ED_text.h36
-rw-r--r--source/blender/editors/include/ED_view3d.h2
-rw-r--r--source/blender/editors/include/UI_interface.h4
-rw-r--r--source/blender/editors/include/UI_resources.h2
-rw-r--r--source/blender/editors/interface/interface_handlers.c26
-rw-r--r--source/blender/editors/interface/interface_panel.c2
-rw-r--r--source/blender/editors/interface/interface_utils.c24
-rw-r--r--source/blender/editors/interface/view2d.c189
-rw-r--r--source/blender/editors/interface/view2d_ops.c23
-rw-r--r--source/blender/editors/mesh/editmesh_add.c6
-rw-r--r--source/blender/editors/mesh/meshtools.c2
-rw-r--r--source/blender/editors/object/object_edit.c10
-rw-r--r--source/blender/editors/physics/editparticle.c793
-rw-r--r--source/blender/editors/screen/screen_ops.c46
-rw-r--r--source/blender/editors/sculpt_paint/paint_image.c192
-rw-r--r--source/blender/editors/sculpt_paint/paint_intern.h2
-rw-r--r--source/blender/editors/sculpt_paint/paint_ops.c2
-rw-r--r--source/blender/editors/sculpt_paint/paint_vertex.c2
-rw-r--r--source/blender/editors/sculpt_paint/sculpt.c4
-rw-r--r--source/blender/editors/space_action/action_draw.c28
-rw-r--r--source/blender/editors/space_action/action_edit.c332
-rw-r--r--source/blender/editors/space_action/action_header.c3
-rw-r--r--source/blender/editors/space_action/action_select.c11
-rw-r--r--source/blender/editors/space_file/file_draw.c64
-rw-r--r--source/blender/editors/space_file/file_header.c12
-rw-r--r--source/blender/editors/space_file/file_ops.c2
-rw-r--r--source/blender/editors/space_file/space_file.c10
-rw-r--r--source/blender/editors/space_graph/graph_buttons.c164
-rw-r--r--source/blender/editors/space_graph/graph_draw.c163
-rw-r--r--source/blender/editors/space_graph/graph_edit.c326
-rw-r--r--source/blender/editors/space_graph/graph_header.c7
-rw-r--r--source/blender/editors/space_graph/graph_intern.h1
-rw-r--r--source/blender/editors/space_graph/graph_ops.c15
-rw-r--r--source/blender/editors/space_graph/graph_select.c16
-rw-r--r--source/blender/editors/space_graph/space_graph.c4
-rw-r--r--source/blender/editors/space_image/image_header.c4
-rw-r--r--source/blender/editors/space_image/image_intern.h2
-rw-r--r--source/blender/editors/space_image/image_ops.c1
-rw-r--r--source/blender/editors/space_image/image_panels.c1109
-rw-r--r--source/blender/editors/space_image/space_image.c5
-rw-r--r--source/blender/editors/space_info/info_header.c13
-rw-r--r--source/blender/editors/space_info/space_info.c3
-rw-r--r--source/blender/editors/space_node/node_edit.c16
-rw-r--r--source/blender/editors/space_outliner/outliner.c12
-rw-r--r--source/blender/editors/space_outliner/outliner_ops.c4
-rw-r--r--source/blender/editors/space_script/script_edit.c2
-rw-r--r--source/blender/editors/space_script/space_script.c15
-rw-r--r--source/blender/editors/space_text/Makefile2
-rw-r--r--source/blender/editors/space_text/SConscript6
-rw-r--r--source/blender/editors/space_text/space_text.c254
-rw-r--r--source/blender/editors/space_text/text_draw.c1381
-rw-r--r--source/blender/editors/space_text/text_header.c582
-rw-r--r--source/blender/editors/space_text/text_intern.h122
-rw-r--r--source/blender/editors/space_text/text_ops.c2551
-rw-r--r--source/blender/editors/space_text/text_python.c541
-rw-r--r--source/blender/editors/space_view3d/view3d_buttons.c56
-rw-r--r--source/blender/editors/space_view3d/view3d_draw.c7
-rw-r--r--source/blender/editors/space_view3d/view3d_ops.c2
-rw-r--r--source/blender/editors/space_view3d/view3d_select.c13
-rw-r--r--source/blender/editors/space_view3d/view3d_view.c1
-rw-r--r--source/blender/editors/transform/transform.c46
-rw-r--r--source/blender/editors/transform/transform_conversions.c44
-rw-r--r--source/blender/editors/transform/transform_manipulator.c10
-rw-r--r--source/blender/editors/util/undo.c9
-rw-r--r--source/blender/imbuf/IMB_thumbs.h3
-rw-r--r--source/blender/imbuf/intern/thumbs.c10
-rw-r--r--source/blender/makesdna/DNA_particle_types.h3
-rw-r--r--source/blender/makesdna/DNA_scene_types.h1
-rw-r--r--source/blender/makesdna/DNA_space_types.h10
-rw-r--r--source/blender/makesdna/DNA_text_types.h2
-rw-r--r--source/blender/makesdna/intern/SConscript10
-rw-r--r--source/blender/makesrna/RNA_access.h2
-rw-r--r--source/blender/makesrna/RNA_define.h4
-rw-r--r--source/blender/makesrna/intern/CMakeLists.txt1
-rw-r--r--source/blender/makesrna/intern/SConscript14
-rw-r--r--source/blender/makesrna/intern/makesrna.c1
-rwxr-xr-xsource/blender/makesrna/intern/rna_action.c2
-rw-r--r--source/blender/makesrna/intern/rna_define.c24
-rw-r--r--source/blender/makesrna/intern/rna_internal.h1
-rw-r--r--source/blender/makesrna/intern/rna_material.c139
-rw-r--r--source/blender/makesrna/intern/rna_particle.c2
-rwxr-xr-xsource/blender/makesrna/intern/rna_pose.c18
-rw-r--r--source/blender/makesrna/intern/rna_scene.c5
-rw-r--r--source/blender/makesrna/intern/rna_space.c84
-rwxr-xr-xsource/blender/makesrna/intern/rna_timeline.c62
-rw-r--r--source/blender/render/intern/source/shadeoutput.c19
-rw-r--r--source/blender/windowmanager/WM_api.h7
-rw-r--r--source/blender/windowmanager/WM_types.h5
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c31
-rw-r--r--source/blender/windowmanager/intern/wm_init_exit.c5
-rw-r--r--source/blender/windowmanager/intern/wm_window.c51
-rw-r--r--source/blender/windowmanager/wm_event_types.h3
141 files changed, 19410 insertions, 2900 deletions
diff --git a/source/blender/blenfont/BLF_api.h b/source/blender/blenfont/BLF_api.h
index 1485f0881b2..0e96bf8ceb1 100644
--- a/source/blender/blenfont/BLF_api.h
+++ b/source/blender/blenfont/BLF_api.h
@@ -29,6 +29,8 @@
#ifndef BLF_API_H
#define BLF_API_H
+struct rctf;
+
int BLF_init(void);
void BLF_exit(void);
@@ -41,7 +43,7 @@ void BLF_position(float x, float y, float z);
void BLF_size(int size, int dpi);
void BLF_draw(char *str);
-void BLF_boundbox(char *str, rctf *box);
+void BLF_boundbox(char *str, struct rctf *box);
float BLF_width(char *str);
float BLF_height(char *str);
void BLF_rotation(float angle);
@@ -83,8 +85,7 @@ char **BLF_dir_get(int *ndir);
void BLF_dir_free(char **dirs, int count);
/* font->flags. */
-#define BLF_ASPECT (1<<0)
-#define BLF_ROTATION (1<<1)
-#define BLF_CLIPPING (1<<2)
+#define BLF_ROTATION (1<<0)
+#define BLF_CLIPPING (1<<1)
#endif /* BLF_API_H */
diff --git a/source/blender/blenfont/SConscript b/source/blender/blenfont/SConscript
index 42ccfc8e2ed..85797c3c23b 100644
--- a/source/blender/blenfont/SConscript
+++ b/source/blender/blenfont/SConscript
@@ -12,11 +12,11 @@ incs += ' ' + env['BF_GETTEXT_INC']
defs = ''
-if env['WITH_BF_INTERNATIONAL']:
- defs += ' WITH_FREETYPE2'
-
-defs = 'FTGL_STATIC_LIBRARY'
+defs += 'FTGL_STATIC_LIBRARY'
if sys.platform == 'win32':
defs += ' _WIN32 USE_GETTEXT_DLL'
+if env['WITH_BF_INTERNATIONAL']:
+ defs += ' WITH_FREETYPE2'
+
env.BlenderLib ( 'bf_blenfont', sources, Split(incs), Split(defs), libtype=['core'], priority=[210] )
diff --git a/source/blender/blenfont/intern/blf.c b/source/blender/blenfont/intern/blf.c
index 5b39c2c8ae5..43c85b78977 100644
--- a/source/blender/blenfont/intern/blf.c
+++ b/source/blender/blenfont/intern/blf.c
@@ -58,7 +58,6 @@
#include "blf_internal_types.h"
#include "blf_internal.h"
-#ifdef WITH_FREETYPE2
/* Max number of font in memory.
* Take care that now every font have a glyph cache per size/dpi,
@@ -76,41 +75,33 @@ int global_font_num= 0;
/* Current font. */
int global_font_cur= 0;
-#endif /* WITH_FREETYPE2 */
int BLF_init(void)
{
-#ifdef WITH_FREETYPE2
int i;
for (i= 0; i < BLF_MAX_FONT; i++)
global_font[i]= NULL;
return(blf_font_init());
-#else
- return(0);
-#endif
}
void BLF_exit(void)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
int i;
for (i= 0; i < global_font_num; i++) {
font= global_font[i];
- if(font)
- blf_font_free(font);
+ if(font && font->free)
+ (*font->free)(font);
}
blf_font_exit();
-#endif
}
int blf_search(char *name)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
int i;
@@ -119,13 +110,11 @@ int blf_search(char *name)
if (font && (!strcmp(font->name, name)))
return(i);
}
-#endif
return(-1);
}
int BLF_load(char *name)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
char *filename;
int i;
@@ -153,6 +142,7 @@ int BLF_load(char *name)
return(-1);
}
+#ifdef WITH_FREETYPE2
font= blf_font_new(name, filename);
MEM_freeN(filename);
@@ -165,14 +155,13 @@ int BLF_load(char *name)
i= global_font_num;
global_font_num++;
return(i);
-#else
- return(-1);
#endif /* WITH_FREETYPE2 */
+
+ return(-1);
}
int BLF_load_mem(char *name, unsigned char *mem, int mem_size)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
int i;
@@ -192,6 +181,7 @@ int BLF_load_mem(char *name, unsigned char *mem, int mem_size)
return(-1);
}
+#ifdef WITH_FREETYPE2
font= blf_font_new_from_mem(name, mem, mem_size);
if (!font) {
printf("Can't load font, %s from memory!!\n", name);
@@ -202,177 +192,146 @@ int BLF_load_mem(char *name, unsigned char *mem, int mem_size)
i= global_font_num;
global_font_num++;
return(i);
-#else
- return(-1);
#endif /* WITH_FREETYPE2 */
+ return(-1);
}
void BLF_set(int fontid)
{
-#ifdef WITH_FREETYPE2
if (fontid >= 0 && fontid < BLF_MAX_FONT)
global_font_cur= fontid;
-#endif
}
void BLF_enable(int option)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
font= global_font[global_font_cur];
if (font)
font->flags |= option;
-#endif
}
void BLF_disable(int option)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
font= global_font[global_font_cur];
if (font)
font->flags &= ~option;
-#endif
}
void BLF_aspect(float aspect)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
font= global_font[global_font_cur];
if (font)
font->aspect= aspect;
-#endif
}
void BLF_position(float x, float y, float z)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
- float remainder, aspect;
+ float remainder;
font= global_font[global_font_cur];
if (font) {
- if (font->flags & BLF_ASPECT)
- aspect= font->aspect;
- else
- aspect= 1.0f;
-
remainder= x - floor(x);
if (remainder > 0.4 && remainder < 0.6) {
if (remainder < 0.5)
- x -= 0.1 * aspect;
+ x -= 0.1 * font->aspect;
else
- x += 0.1 * aspect;
+ x += 0.1 * font->aspect;
}
remainder= y - floor(y);
if (remainder > 0.4 && remainder < 0.6) {
if (remainder < 0.5)
- y -= 0.1 * aspect;
+ y -= 0.1 * font->aspect;
else
- y += 0.1 * aspect;
+ y += 0.1 * font->aspect;
}
font->pos[0]= x;
font->pos[1]= y;
font->pos[2]= z;
}
-#endif
}
void BLF_size(int size, int dpi)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
font= global_font[global_font_cur];
- if (font)
- blf_font_size(font, size, dpi);
-#endif
+ if (font && font->size_set)
+ (*font->size_set)(font, size, dpi);
}
void BLF_draw(char *str)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
font= global_font[global_font_cur];
- if (font && font->glyph_cache) {
+ if (font && font->draw && font->glyph_cache) {
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glPushMatrix();
glTranslatef(font->pos[0], font->pos[1], font->pos[2]);
-
- if (font->flags & BLF_ASPECT)
- glScalef(font->aspect, font->aspect, 1.0);
+ glScalef(font->aspect, font->aspect, 1.0);
if (font->flags & BLF_ROTATION)
glRotatef(font->angle, 0.0f, 0.0f, 1.0f);
- blf_font_draw(font, str);
+ (*font->draw)(font, str);
glPopMatrix();
glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D);
}
-#endif /* WITH_FREETYPE2 */
}
void BLF_boundbox(char *str, rctf *box)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
font= global_font[global_font_cur];
- if (font && font->glyph_cache)
- blf_font_boundbox(font, str, box);
-#endif
+ if (font && font->boundbox_get && font->glyph_cache)
+ (*font->boundbox_get)(font, str, box);
}
float BLF_width(char *str)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
font= global_font[global_font_cur];
- if (font && font->glyph_cache)
- return(blf_font_width(font, str));
-#endif
+ if (font && font->width_get && font->glyph_cache)
+ return((*font->width_get)(font, str));
return(0.0f);
}
float BLF_height(char *str)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
font= global_font[global_font_cur];
- if (font && font->glyph_cache)
- return(blf_font_height(font, str));
-#endif
+ if (font && font->height_get && font->glyph_cache)
+ return((*font->height_get)(font, str));
return(0.0f);
}
void BLF_rotation(float angle)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
font= global_font[global_font_cur];
if (font)
font->angle= angle;
-#endif
}
void BLF_clipping(float xmin, float ymin, float xmax, float ymax)
{
-#ifdef WITH_FREETYPE2
FontBLF *font;
font= global_font[global_font_cur];
@@ -382,5 +341,4 @@ void BLF_clipping(float xmin, float ymin, float xmax, float ymax)
font->clip_rec.xmax= xmax;
font->clip_rec.ymax= ymax;
}
-#endif
}
diff --git a/source/blender/blenfont/intern/blf_font.c b/source/blender/blenfont/intern/blf_font.c
index 44847e72727..a80e97327f3 100644
--- a/source/blender/blenfont/intern/blf_font.c
+++ b/source/blender/blenfont/intern/blf_font.c
@@ -73,85 +73,12 @@ void blf_font_exit(void)
FT_Done_FreeType(global_ft_lib);
}
-void blf_font_fill(FontBLF *font)
-{
- font->ref= 1;
- font->aspect= 1.0f;
- font->pos[0]= 0.0f;
- font->pos[1]= 0.0f;
- font->angle= 0.0f;
- Mat4One(font->mat);
- font->clip_rec.xmin= 0.0f;
- font->clip_rec.xmax= 0.0f;
- font->clip_rec.ymin= 0.0f;
- font->clip_rec.ymax= 0.0f;
- font->flags= 0;
- font->dpi= 0;
- font->size= 0;
- font->cache.first= NULL;
- font->cache.last= NULL;
- font->glyph_cache= NULL;
- glGetIntegerv(GL_MAX_TEXTURE_SIZE, (GLint *)&font->max_tex_size);
-}
-
-FontBLF *blf_font_new(char *name, char *filename)
-{
- FontBLF *font;
- FT_Error err;
-
- font= (FontBLF *)MEM_mallocN(sizeof(FontBLF), "blf_font_new");
- err= FT_New_Face(global_ft_lib, filename, 0, &font->face);
- if (err) {
- MEM_freeN(font);
- return(NULL);
- }
-
- err= FT_Select_Charmap(font->face, ft_encoding_unicode);
- if (err) {
- printf("Can't set the unicode character map!\n");
- FT_Done_Face(font->face);
- MEM_freeN(font);
- return(NULL);
- }
-
- font->name= BLI_strdup(name);
- font->filename= BLI_strdup(filename);
- blf_font_fill(font);
- return(font);
-}
-
-FontBLF *blf_font_new_from_mem(char *name, unsigned char *mem, int mem_size)
-{
- FontBLF *font;
- FT_Error err;
-
- font= (FontBLF *)MEM_mallocN(sizeof(FontBLF), "blf_font_new_from_mem");
- err= FT_New_Memory_Face(global_ft_lib, mem, mem_size, 0, &font->face);
- if (err) {
- MEM_freeN(font);
- return(NULL);
- }
-
- err= FT_Select_Charmap(font->face, ft_encoding_unicode);
- if (err) {
- printf("Can't set the unicode character map!\n");
- FT_Done_Face(font->face);
- MEM_freeN(font);
- return(NULL);
- }
-
- font->name= BLI_strdup(name);
- font->filename= NULL;
- blf_font_fill(font);
- return(font);
-}
-
void blf_font_size(FontBLF *font, int size, int dpi)
{
GlyphCacheBLF *gc;
FT_Error err;
-
- err= FT_Set_Char_Size(font->face, 0, (size * 64), dpi, dpi);
+
+ err= FT_Set_Char_Size((FT_Face)font->engine, 0, (size * 64), dpi, dpi);
if (err) {
/* FIXME: here we can go through the fixed size and choice a close one */
printf("The current font don't support the size, %d and dpi, %d\n", size, dpi);
@@ -178,23 +105,26 @@ void blf_font_draw(FontBLF *font, char *str)
unsigned int c;
GlyphBLF *g, *g_prev;
FT_Vector delta;
- FT_UInt glyph_index;
+ FT_Face face;
+ FT_UInt glyph_index, g_prev_index;
int pen_x, pen_y;
int i, has_kerning;
+ face= (FT_Face)font->engine;
i= 0;
pen_x= 0;
pen_y= 0;
- has_kerning= FT_HAS_KERNING(font->face);
+ has_kerning= FT_HAS_KERNING(face);
g_prev= NULL;
+ g_prev_index= 0;
while (str[i]) {
c= blf_utf8_next((unsigned char *)str, &i);
if (c == 0)
break;
- glyph_index= FT_Get_Char_Index(font->face, c);
- g= blf_glyph_search(font->glyph_cache, glyph_index);
+ glyph_index= FT_Get_Char_Index(face, c);
+ g= blf_glyph_search(font->glyph_cache, c);
if (!g)
g= blf_glyph_add(font, glyph_index, c);
@@ -206,7 +136,7 @@ void blf_font_draw(FontBLF *font, char *str)
delta.x= 0;
delta.y= 0;
- FT_Get_Kerning(font->face, g_prev->index, glyph_index, FT_KERNING_UNFITTED, &delta);
+ FT_Get_Kerning(face, g_prev_index, glyph_index, FT_KERNING_UNFITTED, &delta);
pen_x += delta.x >> 6;
}
@@ -216,6 +146,7 @@ void blf_font_draw(FontBLF *font, char *str)
pen_x += g->advance;
g_prev= g;
+ g_prev_index= glyph_index;
}
}
@@ -224,11 +155,13 @@ void blf_font_boundbox(FontBLF *font, char *str, rctf *box)
unsigned int c;
GlyphBLF *g, *g_prev;
FT_Vector delta;
- FT_UInt glyph_index;
+ FT_UInt glyph_index, g_prev_index;
+ FT_Face face;
rctf gbox;
int pen_x, pen_y;
int i, has_kerning;
+ face= (FT_Face)font->engine;
box->xmin= 32000.0f;
box->xmax= -32000.0f;
box->ymin= 32000.0f;
@@ -237,16 +170,17 @@ void blf_font_boundbox(FontBLF *font, char *str, rctf *box)
i= 0;
pen_x= 0;
pen_y= 0;
- has_kerning= FT_HAS_KERNING(font->face);
+ has_kerning= FT_HAS_KERNING(face);
g_prev= NULL;
+ g_prev_index= 0;
while (str[i]) {
c= blf_utf8_next((unsigned char *)str, &i);
if (c == 0)
break;
- glyph_index= FT_Get_Char_Index(font->face, c);
- g= blf_glyph_search(font->glyph_cache, glyph_index);
+ glyph_index= FT_Get_Char_Index(face, c);
+ g= blf_glyph_search(font->glyph_cache, c);
if (!g)
g= blf_glyph_add(font, glyph_index, c);
@@ -258,7 +192,7 @@ void blf_font_boundbox(FontBLF *font, char *str, rctf *box)
delta.x= 0;
delta.y= 0;
- FT_Get_Kerning(font->face, g_prev->index, glyph_index, FT_KERNING_UNFITTED, &delta);
+ FT_Get_Kerning(face, g_prev_index, glyph_index, FT_KERNING_UNFITTED, &delta);
pen_x += delta.x >> 6;
}
@@ -279,6 +213,7 @@ void blf_font_boundbox(FontBLF *font, char *str, rctf *box)
pen_x += g->advance;
g_prev= g;
+ g_prev_index= glyph_index;
}
if (box->xmin > box->xmax) {
@@ -291,30 +226,18 @@ void blf_font_boundbox(FontBLF *font, char *str, rctf *box)
float blf_font_width(FontBLF *font, char *str)
{
- float aspect;
rctf box;
- if (font->flags & BLF_ASPECT)
- aspect= font->aspect;
- else
- aspect= 1.0f;
-
blf_font_boundbox(font, str, &box);
- return((box.xmax - box.xmin) * aspect);
+ return((box.xmax - box.xmin) * font->aspect);
}
float blf_font_height(FontBLF *font, char *str)
{
- float aspect;
rctf box;
- if (font->flags & BLF_ASPECT)
- aspect= font->aspect;
- else
- aspect= 1.0f;
-
blf_font_boundbox(font, str, &box);
- return((box.ymax - box.ymin) * aspect);
+ return((box.ymax - box.ymin) * font->aspect);
}
void blf_font_free(FontBLF *font)
@@ -328,7 +251,7 @@ void blf_font_free(FontBLF *font)
blf_glyph_cache_free(gc);
}
- FT_Done_Face(font->face);
+ FT_Done_Face((FT_Face)font->engine);
if (font->filename)
MEM_freeN(font->filename);
if (font->name)
@@ -336,4 +259,94 @@ void blf_font_free(FontBLF *font)
MEM_freeN(font);
}
+void blf_font_fill(FontBLF *font)
+{
+ font->type= BLF_FONT_FREETYPE2;
+ font->ref= 1;
+ font->aspect= 1.0f;
+ font->pos[0]= 0.0f;
+ font->pos[1]= 0.0f;
+ font->angle= 0.0f;
+ Mat4One(font->mat);
+ font->clip_rec.xmin= 0.0f;
+ font->clip_rec.xmax= 0.0f;
+ font->clip_rec.ymin= 0.0f;
+ font->clip_rec.ymax= 0.0f;
+ font->flags= 0;
+ font->dpi= 0;
+ font->size= 0;
+ font->cache.first= NULL;
+ font->cache.last= NULL;
+ font->glyph_cache= NULL;
+ glGetIntegerv(GL_MAX_TEXTURE_SIZE, (GLint *)&font->max_tex_size);
+
+ font->size_set= blf_font_size;
+ font->draw= blf_font_draw;
+ font->boundbox_get= blf_font_boundbox;
+ font->width_get= blf_font_width;
+ font->height_get= blf_font_height;
+ font->free= blf_font_free;
+}
+
+FontBLF *blf_font_new(char *name, char *filename)
+{
+ FontBLF *font;
+ FT_Error err;
+ FT_Face face;
+
+ err= FT_New_Face(global_ft_lib, filename, 0, &face);
+ if (err)
+ return(NULL);
+
+ err= FT_Select_Charmap(face, ft_encoding_unicode);
+ if (err) {
+ printf("Can't set the unicode character map!\n");
+ FT_Done_Face(face);
+ return(NULL);
+ }
+
+ font= (FontBLF *)MEM_mallocN(sizeof(FontBLF), "blf_font_new");
+ font->name= BLI_strdup(name);
+ font->filename= BLI_strdup(filename);
+ font->engine= (void *)face;
+ blf_font_fill(font);
+ return(font);
+}
+
+FontBLF *blf_font_new_from_mem(char *name, unsigned char *mem, int mem_size)
+{
+ FontBLF *font;
+ FT_Error err;
+ FT_Face face;
+
+ err= FT_New_Memory_Face(global_ft_lib, mem, mem_size, 0, &face);
+ if (err)
+ return(NULL);
+
+ err= FT_Select_Charmap(face, ft_encoding_unicode);
+ if (err) {
+ printf("Can't set the unicode character map!\n");
+ FT_Done_Face(face);
+ return(NULL);
+ }
+
+ font= (FontBLF *)MEM_mallocN(sizeof(FontBLF), "blf_font_new_from_mem");
+ font->name= BLI_strdup(name);
+ font->filename= NULL;
+ font->engine= (void *)face;
+ blf_font_fill(font);
+ return(font);
+}
+
+#else /* !WITH_FREETYPE2 */
+
+int blf_font_init(void)
+{
+ return(0);
+}
+
+void blf_font_exit(void)
+{
+}
+
#endif /* WITH_FREETYPE2 */
diff --git a/source/blender/blenfont/intern/blf_glyph.c b/source/blender/blenfont/intern/blf_glyph.c
index 2bbdeb9ad32..7212deff8c8 100644
--- a/source/blender/blenfont/intern/blf_glyph.c
+++ b/source/blender/blenfont/intern/blf_glyph.c
@@ -78,8 +78,10 @@ GlyphCacheBLF *blf_glyph_cache_find(FontBLF *font, int size, int dpi)
GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font)
{
GlyphCacheBLF *gc;
+ FT_Face face;
int i;
+ face= (FT_Face)font->engine;
gc= (GlyphCacheBLF *)MEM_mallocN(sizeof(GlyphCacheBLF), "blf_glyph_cache_new");
gc->next= NULL;
gc->prev= NULL;
@@ -98,23 +100,23 @@ GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font)
gc->y_offs= 0;
gc->pad= 3;
- gc->num_glyphs= font->face->num_glyphs;
- gc->rem_glyphs= font->face->num_glyphs;
- gc->ascender= ((float)font->face->size->metrics.ascender) / 64.0f;
- gc->descender= ((float)font->face->size->metrics.descender) / 64.0f;
+ gc->num_glyphs= face->num_glyphs;
+ gc->rem_glyphs= face->num_glyphs;
+ gc->ascender= ((float)face->size->metrics.ascender) / 64.0f;
+ gc->descender= ((float)face->size->metrics.descender) / 64.0f;
- if (FT_IS_SCALABLE(font->face)) {
- gc->max_glyph_width= (float)((font->face->bbox.xMax - font->face->bbox.xMin) *
- (((float)font->face->size->metrics.x_ppem) /
- ((float)font->face->units_per_EM)));
+ if (FT_IS_SCALABLE(face)) {
+ gc->max_glyph_width= (float)((face->bbox.xMax - face->bbox.xMin) *
+ (((float)face->size->metrics.x_ppem) /
+ ((float)face->units_per_EM)));
- gc->max_glyph_height= (float)((font->face->bbox.yMax - font->face->bbox.yMin) *
- (((float)font->face->size->metrics.y_ppem) /
- ((float)font->face->units_per_EM)));
+ gc->max_glyph_height= (float)((face->bbox.yMax - face->bbox.yMin) *
+ (((float)face->size->metrics.y_ppem) /
+ ((float)face->units_per_EM)));
}
else {
- gc->max_glyph_width= ((float)font->face->size->metrics.max_advance) / 64.0f;
- gc->max_glyph_height= ((float)font->face->size->metrics.height) / 64.0f;
+ gc->max_glyph_width= ((float)face->size->metrics.max_advance) / 64.0f;
+ gc->max_glyph_height= ((float)face->size->metrics.height) / 64.0f;
}
gc->p2_width= 0;
@@ -180,15 +182,15 @@ void blf_glyph_cache_texture(FontBLF *font, GlyphCacheBLF *gc)
free((void *)buf);
}
-GlyphBLF *blf_glyph_search(GlyphCacheBLF *gc, FT_UInt idx)
+GlyphBLF *blf_glyph_search(GlyphCacheBLF *gc, unsigned int c)
{
GlyphBLF *p;
unsigned int key;
- key= blf_hash(idx);
+ key= blf_hash(c);
p= gc->bucket[key].first;
while (p) {
- if (p->index == idx)
+ if (p->c == c)
return(p);
p= p->next;
}
@@ -200,21 +202,23 @@ GlyphBLF *blf_glyph_add(FontBLF *font, FT_UInt index, unsigned int c)
FT_GlyphSlot slot;
GlyphCacheBLF *gc;
GlyphBLF *g;
+ FT_Face face;
FT_Error err;
FT_Bitmap bitmap;
FT_BBox bbox;
unsigned int key;
- g= blf_glyph_search(font->glyph_cache, index);
+ g= blf_glyph_search(font->glyph_cache, c);
if (g)
return(g);
- err= FT_Load_Glyph(font->face, index, FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP);
+ face= (FT_Face)font->engine;
+ err= FT_Load_Glyph(face, index, FT_LOAD_NO_HINTING | FT_LOAD_NO_BITMAP);
if (err)
return(NULL);
/* get the glyph. */
- slot= font->face->glyph;
+ slot= face->glyph;
err= FT_Render_Glyph(slot, FT_RENDER_MODE_NORMAL);
if (err || slot->format != FT_GLYPH_FORMAT_BITMAP)
@@ -224,7 +228,6 @@ GlyphBLF *blf_glyph_add(FontBLF *font, FT_UInt index, unsigned int c)
g->next= NULL;
g->prev= NULL;
g->c= c;
- g->index= index;
gc= font->glyph_cache;
if (gc->cur_tex == -1) {
@@ -280,7 +283,7 @@ GlyphBLF *blf_glyph_add(FontBLF *font, FT_UInt index, unsigned int c)
/* update the x offset for the next glyph. */
gc->x_offs += (int)(g->box.xmax - g->box.xmin + gc->pad);
- key= blf_hash(g->index);
+ key= blf_hash(g->c);
BLI_addhead(&(gc->bucket[key]), g);
gc->rem_glyphs--;
return(g);
diff --git a/source/blender/blenfont/intern/blf_internal.h b/source/blender/blenfont/intern/blf_internal.h
index 25df7e0e95f..d160df67f18 100644
--- a/source/blender/blenfont/intern/blf_internal.h
+++ b/source/blender/blenfont/intern/blf_internal.h
@@ -35,26 +35,19 @@ int blf_utf8_next(unsigned char *buf, int *iindex);
char *blf_dir_search(const char *file);
int blf_dir_split(const char *str, char *file, int *size);
-#ifdef WITH_FREETYPE2
-
int blf_font_init(void);
void blf_font_exit(void);
+#ifdef WITH_FREETYPE2
+
FontBLF *blf_font_new(char *name, char *filename);
FontBLF *blf_font_new_from_mem(char *name, unsigned char *mem, int mem_size);
-void blf_font_free(FontBLF *font);
-void blf_font_size(FontBLF *font, int size, int dpi);
-void blf_font_draw(FontBLF *font, char *str);
-void blf_font_boundbox(FontBLF *font, char *str, rctf *box);
-float blf_font_width(FontBLF *font, char *str);
-float blf_font_height(FontBLF *font, char *str);
-
GlyphCacheBLF *blf_glyph_cache_find(FontBLF *font, int size, int dpi);
GlyphCacheBLF *blf_glyph_cache_new(FontBLF *font);
void blf_glyph_cache_free(GlyphCacheBLF *gc);
-GlyphBLF *blf_glyph_search(GlyphCacheBLF *gc, FT_UInt idx);
+GlyphBLF *blf_glyph_search(GlyphCacheBLF *gc, unsigned int c);
GlyphBLF *blf_glyph_add(FontBLF *font, FT_UInt index, unsigned int c);
void blf_glyph_free(GlyphBLF *g);
diff --git a/source/blender/blenfont/intern/blf_internal_types.h b/source/blender/blenfont/intern/blf_internal_types.h
index ccfd5c64200..7313eb97426 100644
--- a/source/blender/blenfont/intern/blf_internal_types.h
+++ b/source/blender/blenfont/intern/blf_internal_types.h
@@ -28,16 +28,6 @@
#ifndef BLF_INTERNAL_TYPES_H
#define BLF_INTERNAL_TYPES_H
-typedef struct DirBLF {
- struct DirBLF *next;
- struct DirBLF *prev;
-
- /* full path where search fonts. */
- char *path;
-} DirBLF;
-
-#ifdef WITH_FREETYPE2
-
typedef struct GlyphCacheBLF {
struct GlyphCacheBLF *next;
struct GlyphCacheBLF *prev;
@@ -95,9 +85,6 @@ typedef struct GlyphBLF {
/* and the character, as UTF8 */
unsigned int c;
- /* Freetype2 index. */
- FT_UInt index;
-
/* texture id where this glyph is store. */
GLuint tex;
@@ -133,6 +120,9 @@ typedef struct FontBLF {
/* filename or NULL. */
char *filename;
+ /* font type, can be freetype2 or internal. */
+ int type;
+
/* reference count. */
int ref;
@@ -163,17 +153,31 @@ typedef struct FontBLF {
/* font options. */
int flags;
- /* freetype2 face. */
- FT_Face face;
-
/* list of glyph cache for this font. */
ListBase cache;
/* current glyph cache, size and dpi. */
GlyphCacheBLF *glyph_cache;
+
+ /* engine data. */
+ void *engine;
+
+ /* engine functions. */
+ void (*size_set)(struct FontBLF *, int, int);
+ void (*draw)(struct FontBLF *, char *);
+ void (*boundbox_get)(struct FontBLF *, char *, rctf *);
+ float (*width_get)(struct FontBLF *, char *);
+ float (*height_get)(struct FontBLF *, char *);
+ void (*free)(struct FontBLF *);
} FontBLF;
-#endif /* WITH_FREETYPE2 */
+typedef struct DirBLF {
+ struct DirBLF *next;
+ struct DirBLF *prev;
+
+ /* full path where search fonts. */
+ char *path;
+} DirBLF;
typedef struct LangBLF {
struct LangBLF *next;
@@ -193,4 +197,8 @@ typedef struct LangBLF {
#define BLF_CLIP_DISABLE 0
#define BLF_CLIP_OUT 1
+/* font->type */
+#define BLF_FONT_FREETYPE2 0
+#define BLF_FONT_INTERNAL 1
+
#endif /* BLF_INTERNAL_TYPES_H */
diff --git a/source/blender/blenkernel/BKE_brush.h b/source/blender/blenkernel/BKE_brush.h
index eba7558d492..4146d313d41 100644
--- a/source/blender/blenkernel/BKE_brush.h
+++ b/source/blender/blenkernel/BKE_brush.h
@@ -85,8 +85,8 @@ void brush_painter_free(BrushPainter *painter);
unsigned int *brush_gen_texture_cache(struct Brush *br, int half_side);
/* radial control */
-void brush_radial_control_invoke(struct wmOperator *op, struct Brush *br);
-int brush_radial_control_exec(struct wmOperator *op, struct Brush *br);
+void brush_radial_control_invoke(struct wmOperator *op, struct Brush *br, float size_weight);
+int brush_radial_control_exec(struct wmOperator *op, struct Brush *br, float size_weight);
#endif
diff --git a/source/blender/blenkernel/BKE_context.h b/source/blender/blenkernel/BKE_context.h
index a95b436d016..e384900e0cb 100644
--- a/source/blender/blenkernel/BKE_context.h
+++ b/source/blender/blenkernel/BKE_context.h
@@ -50,11 +50,14 @@ struct RegionView3D;
struct StructRNA;
struct ToolSettings;
struct Image;
+struct Text;
struct ImBuf;
struct EditBone;
struct bPoseChannel;
struct wmWindow;
struct wmWindowManager;
+struct SpaceText;
+struct SpaceImage;
/* Structs */
@@ -83,6 +86,8 @@ enum {
CTX_DATA_EDIT_IMAGE,
CTX_DATA_EDIT_IMAGE_BUFFER,
+ CTX_DATA_EDIT_TEXT,
+
CTX_DATA_SELECTED_NODES,
CTX_DATA_SELECTED_BONES,
@@ -132,12 +137,15 @@ struct wmWindow *CTX_wm_window(const bContext *C);
struct bScreen *CTX_wm_screen(const bContext *C);
struct ScrArea *CTX_wm_area(const bContext *C);
struct SpaceLink *CTX_wm_space_data(const bContext *C);
-struct View3D *CTX_wm_view3d(const bContext *C);
-struct RegionView3D *CTX_wm_region_view3d(const bContext *C);
struct ARegion *CTX_wm_region(const bContext *C);
void *CTX_wm_region_data(const bContext *C);
struct uiBlock *CTX_wm_ui_block(const bContext *C);
+struct View3D *CTX_wm_view3d(const bContext *C);
+struct RegionView3D *CTX_wm_region_view3d(const bContext *C);
+struct SpaceText *CTX_wm_space_text(const bContext *C);
+struct SpaceImage *CTX_wm_space_image(const bContext *C);
+
void CTX_wm_manager_set(bContext *C, struct wmWindowManager *wm);
void CTX_wm_window_set(bContext *C, struct wmWindow *win);
void CTX_wm_screen_set(bContext *C, struct bScreen *screen); /* to be removed */
@@ -196,6 +204,8 @@ struct Object *CTX_data_edit_object(const bContext *C);
struct Image *CTX_data_edit_image(const bContext *C);
struct ImBuf *CTX_data_edit_image_buffer(const bContext *C);
+struct Text *CTX_data_edit_text(const bContext *C);
+
int CTX_data_selected_nodes(const bContext *C, ListBase *list);
struct EditBone *CTX_data_active_bone(const bContext *C);
diff --git a/source/blender/blenkernel/BKE_fcurve.h b/source/blender/blenkernel/BKE_fcurve.h
index dd5e0dd6e21..a8b1ad49648 100644
--- a/source/blender/blenkernel/BKE_fcurve.h
+++ b/source/blender/blenkernel/BKE_fcurve.h
@@ -108,5 +108,26 @@ float evaluate_fcurve(struct FCurve *fcu, float evaltime);
/* evaluate fcurve and store value */
void calculate_fcurve(struct FCurve *fcu, float ctime);
+/* ************* F-Curve Samples API ******************** */
+
+/* -------- Defines -------- */
+
+/* Basic signature for F-Curve sample-creation function
+ * - fcu: the F-Curve being operated on
+ * - data: pointer to some specific data that may be used by one of the callbacks
+ */
+typedef float (*FcuSampleFunc)(struct FCurve *fcu, void *data, float evaltime);
+
+/* ----- Sampling Callbacks ------ */
+
+/* Basic sampling callback which acts as a wrapper for evaluate_fcurve() */
+float fcurve_samplingcb_evalcurve(struct FCurve *fcu, void *data, float evaltime);
+
+/* -------- Main Methods -------- */
+
+/* Main API function for creating a set of sampled curve data, given some callback function
+ * used to retrieve the values to store.
+ */
+void fcurve_store_samples(struct FCurve *fcu, void *data, int start, int end, FcuSampleFunc sample_cb);
#endif /* BKE_FCURVE_H*/
diff --git a/source/blender/blenkernel/BKE_particle.h b/source/blender/blenkernel/BKE_particle.h
index 616bf737889..8bf6d91e325 100644
--- a/source/blender/blenkernel/BKE_particle.h
+++ b/source/blender/blenkernel/BKE_particle.h
@@ -139,15 +139,20 @@ typedef struct ParticleUndo {
char name[64];
} ParticleUndo;
-typedef struct ParticleEdit{
+typedef struct ParticleEdit {
ListBase undo;
struct ParticleUndo *curundo;
- struct KDTree *emitter_field;
+
ParticleEditKey **keys;
+ int totkeys;
+
int *mirror_cache;
+
+ struct KDTree *emitter_field;
float *emitter_cosnos;
- int totkeys;
+ char sel_col[3];
+ char nosel_col[3];
} ParticleEdit;
typedef struct ParticleThreadContext {
@@ -244,6 +249,7 @@ void psys_find_parents(struct Object *ob, struct ParticleSystemModifierData *psm
void psys_cache_paths(struct Scene *scene, struct Object *ob, struct ParticleSystem *psys, float cfra, int editupdate);
void psys_cache_child_paths(struct Scene *scene, struct Object *ob, struct ParticleSystem *psys, float cfra, int editupdate);
+void psys_update_world_cos(struct Object *ob, struct ParticleSystem *psys);
int do_guide(struct Scene *scene, struct ParticleKey *state, int pa_num, float time, struct ListBase *lb);
float psys_get_size(struct Object *ob, struct Material *ma, struct ParticleSystemModifierData *psmd, struct IpoCurve *icu_size, struct ParticleSystem *psys, struct ParticleSettings *part, struct ParticleData *pa, float *vg_size);
float psys_get_timestep(struct ParticleSettings *part);
diff --git a/source/blender/blenkernel/BKE_text.h b/source/blender/blenkernel/BKE_text.h
index 856abf74011..d288c0b6516 100644
--- a/source/blender/blenkernel/BKE_text.h
+++ b/source/blender/blenkernel/BKE_text.h
@@ -47,8 +47,6 @@ int reopen_text (struct Text *text);
struct Text* add_text (char *file, const char *relpath);
struct Text* copy_text (struct Text *ta);
-void txt_free_cut_buffer (void);
-
char* txt_to_buf (struct Text *text);
void txt_clean_text (struct Text *text);
void txt_order_cursors (struct Text *text);
@@ -70,14 +68,11 @@ void txt_move_to (struct Text *text, unsigned int line, unsigned int ch, short
void txt_pop_sel (struct Text *text);
void txt_delete_char (struct Text *text);
void txt_delete_word (struct Text *text);
-void txt_copy_sel (struct Text *text);
+void txt_delete_selected (struct Text *text);
void txt_sel_all (struct Text *text);
void txt_sel_line (struct Text *text);
-void txt_print_cutbuffer (void);
-void txt_cut_sel (struct Text *text);
char* txt_sel_to_buf (struct Text *text);
void txt_insert_buf (struct Text *text, char *in_buffer);
-void txt_paste (struct Text *text);
void txt_print_undo (struct Text *text);
void txt_undo_add_toop (struct Text *text, int op, unsigned int froml, unsigned short fromc, unsigned int tol, unsigned short toc);
void txt_do_undo (struct Text *text);
@@ -87,9 +82,6 @@ void txt_backspace_char (struct Text *text);
void txt_backspace_word (struct Text *text);
int txt_add_char (struct Text *text, char add);
int txt_replace_char (struct Text *text, char add);
-void find_and_replace (struct SpaceText *st, short mode);
-void run_python_script (struct SpaceText *st);
-int jumptoline_interactive (struct SpaceText *st);
void txt_export_to_object (struct Text *text);
void txt_export_to_objects(struct Text *text);
void unindent (struct Text *text);
@@ -97,9 +89,6 @@ void comment (struct Text *text);
void indent (struct Text *text);
void uncomment (struct Text *text);
int setcurr_tab (struct Text *text);
-void convert_tabs (struct SpaceText *st, int tab);
-void txt_copy_clipboard (struct Text *text);
-void txt_paste_clipboard (struct Text *text);
void txt_add_marker (struct Text *text, struct TextLine *line, int start, int end, char color[4], int group, int flags);
short txt_clear_marker_region (struct Text *text, struct TextLine *line, int start, int end, int group, int flags);
@@ -152,10 +141,6 @@ struct TextMarker *txt_next_marker_color (struct Text *text, struct TextMarker *
#define UNDO_COMMENT 034
#define UNDO_UNCOMMENT 035
-/* Find and replace flags */
-#define TXT_FIND_WRAP 0x01
-#define TXT_FIND_ALLTEXTS 0x02
-
/* Marker flags */
#define TMARK_TEMP 0x01 /* Remove on non-editing events, don't save */
#define TMARK_EDITALL 0x02 /* Edit all markers of the same group as one */
diff --git a/source/blender/blenkernel/intern/brush.c b/source/blender/blenkernel/intern/brush.c
index ab453fb6f44..e5dd9c2188d 100644
--- a/source/blender/blenkernel/intern/brush.c
+++ b/source/blender/blenkernel/intern/brush.c
@@ -1053,13 +1053,13 @@ static struct ImBuf *brush_gen_radial_control_imbuf(Brush *br)
return im;
}
-void brush_radial_control_invoke(wmOperator *op, Brush *br)
+void brush_radial_control_invoke(wmOperator *op, Brush *br, float size_weight)
{
int mode = RNA_int_get(op->ptr, "mode");
float original_value= 0;
if(mode == WM_RADIALCONTROL_SIZE)
- original_value = br->size;
+ original_value = br->size * size_weight;
else if(mode == WM_RADIALCONTROL_STRENGTH)
original_value = br->alpha;
else if(mode == WM_RADIALCONTROL_ANGLE)
@@ -1069,14 +1069,14 @@ void brush_radial_control_invoke(wmOperator *op, Brush *br)
op->customdata = brush_gen_radial_control_imbuf(br);
}
-int brush_radial_control_exec(wmOperator *op, Brush *br)
+int brush_radial_control_exec(wmOperator *op, Brush *br, float size_weight)
{
int mode = RNA_int_get(op->ptr, "mode");
float new_value = RNA_float_get(op->ptr, "new_value");
const float conv = 0.017453293;
if(mode == WM_RADIALCONTROL_SIZE)
- br->size = new_value;
+ br->size = new_value * size_weight;
else if(mode == WM_RADIALCONTROL_STRENGTH)
br->alpha = new_value;
else if(mode == WM_RADIALCONTROL_ANGLE)
diff --git a/source/blender/blenkernel/intern/context.c b/source/blender/blenkernel/intern/context.c
index 07937d0a901..fc338e1bc95 100644
--- a/source/blender/blenkernel/intern/context.c
+++ b/source/blender/blenkernel/intern/context.c
@@ -164,6 +164,21 @@ SpaceLink *CTX_wm_space_data(const bContext *C)
return (C->wm.area)? C->wm.area->spacedata.first: NULL;
}
+ARegion *CTX_wm_region(const bContext *C)
+{
+ return C->wm.region;
+}
+
+void *CTX_wm_region_data(const bContext *C)
+{
+ return (C->wm.region)? C->wm.region->regiondata: NULL;
+}
+
+struct uiBlock *CTX_wm_ui_block(const bContext *C)
+{
+ return C->wm.block;
+}
+
View3D *CTX_wm_view3d(const bContext *C)
{
if(C->wm.area && C->wm.area->spacetype==SPACE_VIEW3D)
@@ -179,19 +194,18 @@ RegionView3D *CTX_wm_region_view3d(const bContext *C)
return NULL;
}
-ARegion *CTX_wm_region(const bContext *C)
+struct SpaceText *CTX_wm_space_text(const bContext *C)
{
- return C->wm.region;
+ if(C->wm.area && C->wm.area->spacetype==SPACE_TEXT)
+ return C->wm.area->spacedata.first;
+ return NULL;
}
-void *CTX_wm_region_data(const bContext *C)
+struct SpaceImage *CTX_wm_space_image(const bContext *C)
{
- return (C->wm.region)? C->wm.region->regiondata: NULL;
-}
-
-struct uiBlock *CTX_wm_ui_block(const bContext *C)
-{
- return C->wm.block;
+ if(C->wm.area && C->wm.area->spacetype==SPACE_IMAGE)
+ return C->wm.area->spacedata.first;
+ return NULL;
}
void CTX_wm_manager_set(bContext *C, wmWindowManager *wm)
@@ -444,6 +458,11 @@ struct ImBuf *CTX_data_edit_image_buffer(const bContext *C)
return ctx_data_pointer_get(C, CTX_DATA_EDIT_IMAGE_BUFFER);
}
+struct Text *CTX_data_edit_text(const bContext *C)
+{
+ return ctx_data_pointer_get(C, CTX_DATA_EDIT_TEXT);
+}
+
struct EditBone *CTX_data_active_bone(const bContext *C)
{
return ctx_data_pointer_get(C, CTX_DATA_ACTIVE_BONE);
diff --git a/source/blender/blenkernel/intern/curve.c b/source/blender/blenkernel/intern/curve.c
index 7d7d98095c6..30cb4016061 100644
--- a/source/blender/blenkernel/intern/curve.c
+++ b/source/blender/blenkernel/intern/curve.c
@@ -108,7 +108,6 @@ void BKE_free_editfont(Curve *cu)
/* don't free curve itself */
void free_curve(Curve *cu)
{
-
freeNurblist(&cu->nurb);
BLI_freelistN(&cu->bev);
freedisplist(&cu->disp);
diff --git a/source/blender/blenkernel/intern/fcurve.c b/source/blender/blenkernel/intern/fcurve.c
index 49d1b06d9a2..6f3cad7995c 100644
--- a/source/blender/blenkernel/intern/fcurve.c
+++ b/source/blender/blenkernel/intern/fcurve.c
@@ -294,6 +294,61 @@ void bezt_add_to_cfra_elem (ListBase *lb, BezTriple *bezt)
cen->sel= bezt->f2;
}
+/* ***************************** Samples Utilities ******************************* */
+/* Some utilities for working with FPoints (i.e. 'sampled' animation curve data, such as
+ * data imported from BVH/Mocap files), which are specialised for use with high density datasets,
+ * which BezTriples/Keyframe data are ill equipped to do.
+ */
+
+
+/* Basic sampling callback which acts as a wrapper for evaluate_fcurve()
+ * 'data' arg here is unneeded here...
+ */
+float fcurve_samplingcb_evalcurve (FCurve *fcu, void *data, float evaltime)
+{
+ /* assume any interference from drivers on the curve is intended... */
+ return evaluate_fcurve(fcu, evaltime);
+}
+
+
+/* Main API function for creating a set of sampled curve data, given some callback function
+ * used to retrieve the values to store.
+ */
+void fcurve_store_samples (FCurve *fcu, void *data, int start, int end, FcuSampleFunc sample_cb)
+{
+ FPoint *fpt, *new_fpt;
+ int cfra;
+
+ /* sanity checks */
+ // TODO: make these tests report errors using reports not printf's
+ if ELEM(NULL, fcu, sample_cb) {
+ printf("Error: No F-Curve with F-Curve Modifiers to Bake\n");
+ return;
+ }
+ if (start >= end) {
+ printf("Error: Frame range for Sampled F-Curve creation is inappropriate \n");
+ return;
+ }
+
+ /* set up sample data */
+ fpt= new_fpt= MEM_callocN(sizeof(FPoint)*(end-start+1), "FPoint Samples");
+
+ /* use the sampling callback at 1-frame intervals from start to end frames */
+ for (cfra= start; cfra <= end; cfra++, fpt++) {
+ fpt->vec[0]= (float)cfra;
+ fpt->vec[1]= sample_cb(fcu, data, (float)cfra);
+ }
+
+ /* free any existing sample/keyframe data on curve */
+ if (fcu->bezt) MEM_freeN(fcu->bezt);
+ if (fcu->fpt) MEM_freeN(fcu->fpt);
+
+ /* store the samples */
+ fcu->bezt= NULL;
+ fcu->fpt= new_fpt;
+ fcu->totvert= end - start + 1;
+}
+
/* ***************************** F-Curve Sanity ********************************* */
/* The functions here are used in various parts of Blender, usually after some editing
* of keyframe data has occurred. They ensure that keyframe data is properly ordered and
@@ -1596,8 +1651,7 @@ void fcurve_free_modifiers (FCurve *fcu)
*/
void fcurve_bake_modifiers (FCurve *fcu, int start, int end)
{
- FPoint *fpt, *new_fpt;
- int cfra;
+ ChannelDriver *driver;
/* sanity checks */
// TODO: make these tests report errors using reports not printf's
@@ -1605,30 +1659,19 @@ void fcurve_bake_modifiers (FCurve *fcu, int start, int end)
printf("Error: No F-Curve with F-Curve Modifiers to Bake\n");
return;
}
- if (start >= end) {
- printf("Error: Frame range for F-Curve Modifier Baking inappropriate \n");
- return;
- }
- /* set up sample data */
- fpt= new_fpt= MEM_callocN(sizeof(FPoint)*(end-start+1), "FPoint FModifier Samples");
+ /* temporarily, disable driver while we sample, so that they don't influence the outcome */
+ driver= fcu->driver;
+ fcu->driver= NULL;
- /* sample the curve at 1-frame intervals from start to end frames
- * - assume that any ChannelDriver possibly present did not interfere in any way
- */
- for (cfra= start; cfra <= end; cfra++, fpt++) {
- fpt->vec[0]= (float)cfra;
- fpt->vec[1]= evaluate_fcurve(fcu, (float)cfra);
- }
+ /* bake the modifiers, by sampling the curve at each frame */
+ fcurve_store_samples(fcu, NULL, start, end, fcurve_samplingcb_evalcurve);
- /* free any existing sample/keyframe data on curve, and all modifiers */
- if (fcu->bezt) MEM_freeN(fcu->bezt);
- if (fcu->fpt) MEM_freeN(fcu->fpt);
+ /* free the modifiers now */
fcurve_free_modifiers(fcu);
- /* store the samples */
- fcu->fpt= new_fpt;
- fcu->totvert= end - start + 1;
+ /* restore driver */
+ fcu->driver= driver;
}
/* ***************************** F-Curve - Evaluation ********************************* */
diff --git a/source/blender/blenkernel/intern/image.c b/source/blender/blenkernel/intern/image.c
index 360e1905ce8..53b805f5f4c 100644
--- a/source/blender/blenkernel/intern/image.c
+++ b/source/blender/blenkernel/intern/image.c
@@ -351,12 +351,16 @@ void BKE_image_merge(Image *dest, Image *source)
{
ImBuf *ibuf;
- while((ibuf= source->ibufs.first)) {
- BLI_remlink(&source->ibufs, ibuf);
- image_assign_ibuf(dest, ibuf, IMA_INDEX_PASS(ibuf->index), IMA_INDEX_FRAME(ibuf->index));
- }
+ /* sanity check */
+ if(dest && source && dest!=source) {
- free_libblock(&G.main->image, source);
+ while((ibuf= source->ibufs.first)) {
+ BLI_remlink(&source->ibufs, ibuf);
+ image_assign_ibuf(dest, ibuf, IMA_INDEX_PASS(ibuf->index), IMA_INDEX_FRAME(ibuf->index));
+ }
+
+ free_libblock(&G.main->image, source);
+ }
}
diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c
index 440f83e6a4f..dbb720fb0bc 100644
--- a/source/blender/blenkernel/intern/ipo.c
+++ b/source/blender/blenkernel/intern/ipo.c
@@ -39,6 +39,7 @@
#include <math.h>
#include <stdio.h>
#include <string.h>
+#include <stddef.h>
#ifdef HAVE_CONFIG_H
#include <config.h>
@@ -743,6 +744,72 @@ static char *world_adrcodes_to_paths (int adrcode, int *array_index)
return NULL;
}
+/* Particle Types */
+static char *particle_adrcodes_to_paths (int adrcode, int *array_index)
+{
+ /* set array index like this in-case nothing sets it correctly */
+ *array_index= 0;
+
+ /* result depends on adrcode */
+ switch (adrcode) {
+ case PART_CLUMP:
+ return "settings.clump_factor";
+ case PART_AVE:
+ return "settings.angular_velocity_factor";
+ case PART_SIZE:
+ return "settings.particle_size";
+ case PART_DRAG:
+ return "settings.drag_factor";
+ case PART_BROWN:
+ return "settings.brownian_factor";
+ case PART_DAMP:
+ return "settings.damp_factor";
+ case PART_LENGTH:
+ return "settings.length";
+ case PART_GRAV_X:
+ *array_index= 0; return "settings.acceleration";
+ case PART_GRAV_Y:
+ *array_index= 1; return "settings.acceleration";
+ case PART_GRAV_Z:
+ *array_index= 2; return "settings.acceleration";
+ case PART_KINK_AMP:
+ return "settings.kink_amplitude";
+ case PART_KINK_FREQ:
+ return "settings.kink_frequency";
+ case PART_KINK_SHAPE:
+ return "settings.kink_shape";
+ case PART_BB_TILT:
+ return "settings.billboard_tilt";
+
+ /* PartDeflect needs to be sorted out properly in rna_object_force;
+ If anyone else works on this, but is unfamiliar, these particular
+ settings reference the particles of the system themselves
+ being used as forces -- it will use the same rna structure
+ as the similar object forces */
+ /*case PART_PD_FSTR:
+ if (part->pd) poin= &(part->pd->f_strength);
+ break;
+ case PART_PD_FFALL:
+ if (part->pd) poin= &(part->pd->f_power);
+ break;
+ case PART_PD_FMAXD:
+ if (part->pd) poin= &(part->pd->maxdist);
+ break;
+ case PART_PD2_FSTR:
+ if (part->pd2) poin= &(part->pd2->f_strength);
+ break;
+ case PART_PD2_FFALL:
+ if (part->pd2) poin= &(part->pd2->f_power);
+ break;
+ case PART_PD2_FMAXD:
+ if (part->pd2) poin= &(part->pd2->maxdist);
+ break;*/
+
+ }
+
+ return NULL;
+}
+
/* ------- */
/* Allocate memory for RNA-path for some property given a blocktype, adrcode, and 'root' parts of path
@@ -799,6 +866,9 @@ char *get_rna_access (int blocktype, int adrcode, char actname[], char constname
case ID_WO: /* world */
propname= world_adrcodes_to_paths(adrcode, &dummy_index);
+
+ case ID_PA: /* particle */
+ propname= particle_adrcodes_to_paths(adrcode, &dummy_index);
/* XXX problematic blocktypes */
case ID_CU: /* curve */
@@ -970,12 +1040,65 @@ static ChannelDriver *idriver_to_cdriver (IpoDriver *idriver)
return cdriver;
}
+/* Add F-Curve to the correct list
+ * - grpname is needed to be used as group name where relevant, and is usually derived from actname
+ */
+static void fcurve_add_to_list (ListBase *groups, ListBase *list, FCurve *fcu, char *grpname)
+{
+ /* If we're adding to an action, we will have groups to write to... */
+ if (groups && grpname) {
+ /* wrap the pointers given into a dummy action that we pass to the API func
+ * and extract the resultant lists...
+ */
+ bAction tmp_act;
+ bActionGroup *agrp= NULL;
+
+ /* init the temp action */
+ //memset(&tmp_act, 0, sizeof(bAction)); // XXX only enable this line if we get errors
+ tmp_act.groups.first= groups->first;
+ tmp_act.groups.last= groups->last;
+ tmp_act.curves.first= list->first;
+ tmp_act.curves.last= list->last;
+ /* ... xxx, the other vars don't need to be filled in */
+
+ /* get the group to use */
+ agrp= action_groups_find_named(&tmp_act, grpname);
+ if (agrp == NULL) {
+ /* no matching group, so add one */
+ if (agrp == NULL) {
+ /* Add a new group, and make it active */
+ agrp= MEM_callocN(sizeof(bActionGroup), "bActionGroup");
+
+ agrp->flag = AGRP_SELECTED;
+ BLI_snprintf(agrp->name, 64, grpname);
+
+ BLI_addtail(&tmp_act.groups, agrp);
+ BLI_uniquename(&tmp_act.groups, agrp, "Group", offsetof(bActionGroup, name), 64);
+ }
+ }
+
+ /* add F-Curve to group */
+ /* WARNING: this func should only need to look at the stuff we initialised, if not, things may crash */
+ action_groups_add_channel(&tmp_act, agrp, fcu);
+
+ /* set the output lists based on the ones in the temp action */
+ groups->first= tmp_act.groups.first;
+ groups->last= tmp_act.groups.last;
+ list->first= tmp_act.curves.first;
+ list->last= tmp_act.curves.last;
+ }
+ else {
+ /* simply add the F-Curve to the end of the given list */
+ BLI_addtail(list, fcu);
+ }
+}
+
/* Convert IPO-Curve to F-Curve (including Driver data), and free any of the old data that
* is not relevant, BUT do not free the IPO-Curve itself...
* actname: name of Action-Channel (if applicable) that IPO-Curve's IPO-block belonged to
* constname: name of Constraint-Channel (if applicable) that IPO-Curve's IPO-block belonged to
*/
-static void icu_to_fcurves (ListBase *list, IpoCurve *icu, char *actname, char *constname)
+static void icu_to_fcurves (ListBase *groups, ListBase *list, IpoCurve *icu, char *actname, char *constname)
{
AdrBit2Path *abp;
FCurve *fcu;
@@ -1090,7 +1213,7 @@ static void icu_to_fcurves (ListBase *list, IpoCurve *icu, char *actname, char *
}
/* add new F-Curve to list */
- BLI_addtail(list, fcurve);
+ fcurve_add_to_list(groups, list, fcurve, actname);
}
/* free old data of curve now that it's no longer needed for converting any more curves */
@@ -1149,7 +1272,7 @@ static void icu_to_fcurves (ListBase *list, IpoCurve *icu, char *actname, char *
}
/* add new F-Curve to list */
- BLI_addtail(list, fcu);
+ fcurve_add_to_list(groups, list, fcu, actname);
}
}
@@ -1159,7 +1282,7 @@ static void icu_to_fcurves (ListBase *list, IpoCurve *icu, char *actname, char *
* This does not assume that any ID or AnimData uses it, but does assume that
* it is given two lists, which it will perform driver/animation-data separation.
*/
-static void ipo_to_animato (Ipo *ipo, char actname[], char constname[], ListBase *anim, ListBase *drivers)
+static void ipo_to_animato (Ipo *ipo, char actname[], char constname[], ListBase *animgroups, ListBase *anim, ListBase *drivers)
{
IpoCurve *icu, *icn;
@@ -1191,14 +1314,14 @@ static void ipo_to_animato (Ipo *ipo, char actname[], char constname[], ListBase
* we figure out the best place to put the channel, then tell the curve-converter to just dump there
*/
if (icu->driver) {
- /* Blender 2.4x allowed empty drivers */
- if(icu->driver->ob || icu->driver->type == IPO_DRIVER_TYPE_PYTHON)
- icu_to_fcurves(drivers, icu, actname, constname);
+ /* Blender 2.4x allowed empty drivers, but we don't now, since they cause more trouble than they're worth */
+ if ((icu->driver->ob) || (icu->driver->type == IPO_DRIVER_TYPE_PYTHON))
+ icu_to_fcurves(NULL, drivers, icu, actname, constname);
else
MEM_freeN(icu->driver);
}
else
- icu_to_fcurves(anim, icu, actname, constname);
+ icu_to_fcurves(animgroups, anim, icu, actname, constname);
/* free this IpoCurve now that it's been converted */
BLI_freelinkN(&ipo->curve, icu);
@@ -1210,7 +1333,7 @@ static void ipo_to_animato (Ipo *ipo, char actname[], char constname[], ListBase
* to Objects, where ob->ipo and ob->action need to be combined).
* NOTE: we need to be careful here, as same data-structs are used for new system too!
*/
-static void action_to_animato (bAction *act, ListBase *curves, ListBase *drivers)
+static void action_to_animato (bAction *act, ListBase *groups, ListBase *curves, ListBase *drivers)
{
bActionChannel *achan, *achann;
bConstraintChannel *conchan, *conchann;
@@ -1231,7 +1354,7 @@ static void action_to_animato (bAction *act, ListBase *curves, ListBase *drivers
/* convert Action Channel's IPO data */
if (achan->ipo) {
- ipo_to_animato(achan->ipo, achan->name, NULL, curves, drivers);
+ ipo_to_animato(achan->ipo, achan->name, NULL, groups, curves, drivers);
achan->ipo->id.us--;
achan->ipo= NULL;
}
@@ -1243,7 +1366,7 @@ static void action_to_animato (bAction *act, ListBase *curves, ListBase *drivers
/* convert Constraint Channel's IPO data */
if (conchan->ipo) {
- ipo_to_animato(conchan->ipo, achan->name, conchan->name, curves, drivers);
+ ipo_to_animato(conchan->ipo, achan->name, conchan->name, groups, curves, drivers);
conchan->ipo->id.us--;
conchan->ipo= NULL;
}
@@ -1287,7 +1410,8 @@ static void ipo_to_animdata (ID *id, Ipo *ipo, char actname[], char constname[])
/* Convert curves to animato system (separated into separate lists of F-Curves for animation and drivers),
* and the try to put these lists in the right places, but do not free the lists here
*/
- ipo_to_animato(ipo, actname, constname, &anim, &drivers);
+ // XXX there shouldn't be any need for the groups, so don't supply pointer for that now...
+ ipo_to_animato(ipo, actname, constname, NULL, &anim, &drivers);
/* deal with animation first */
if (anim.first) {
@@ -1329,7 +1453,7 @@ static void action_to_animdata (ID *id, bAction *act)
}
/* convert Action data */
- action_to_animato(act, &adt->action->curves, &adt->drivers);
+ action_to_animato(act, &adt->action->groups, &adt->action->curves, &adt->drivers);
}
/* *************************************************** */
@@ -1406,10 +1530,9 @@ void do_versions_ipos_to_animato(Main *main)
/* check PoseChannels for constraints with local data */
if (ob->pose) {
-
/* Verify if there's AnimData block */
BKE_id_add_animdata(id);
-
+
for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
for (con= pchan->constraints.first; con; con= con->next) {
/* if constraint has own IPO, convert add these to Object
@@ -1433,6 +1556,9 @@ void do_versions_ipos_to_animato(Main *main)
* (NOTE: they're most likely to be drivers too)
*/
if (con->ipo) {
+ /* Verify if there's AnimData block, just in case */
+ BKE_id_add_animdata(id);
+
/* although this was the constraint's local IPO, we still need to provide con
* so that drivers can be added properly...
*/
@@ -1446,19 +1572,24 @@ void do_versions_ipos_to_animato(Main *main)
}
/* check constraint channels - we need to remove them anyway... */
- for (conchan= ob->constraintChannels.first; conchan; conchan= conchann) {
- /* get pointer to next Constraint Channel */
- conchann= conchan->next;
+ if (ob->constraintChannels.first) {
+ /* Verify if there's AnimData block */
+ BKE_id_add_animdata(id);
- /* convert Constraint Channel's IPO data */
- if (conchan->ipo) {
- ipo_to_animdata(id, conchan->ipo, NULL, conchan->name);
- conchan->ipo->id.us--;
- conchan->ipo= NULL;
+ for (conchan= ob->constraintChannels.first; conchan; conchan= conchann) {
+ /* get pointer to next Constraint Channel */
+ conchann= conchan->next;
+
+ /* convert Constraint Channel's IPO data */
+ if (conchan->ipo) {
+ ipo_to_animdata(id, conchan->ipo, NULL, conchan->name);
+ conchan->ipo->id.us--;
+ conchan->ipo= NULL;
+ }
+
+ /* free Constraint Channel */
+ BLI_freelinkN(&ob->constraintChannels, conchan);
}
-
- /* free Constraint Channel */
- BLI_freelinkN(&ob->constraintChannels, conchan);
}
}
@@ -1573,7 +1704,7 @@ void do_versions_ipos_to_animato(Main *main)
if (G.f & G_DEBUG) printf("\tconverting action %s \n", id->name+2);
/* be careful! some of the actions we encounter will be converted ones... */
- action_to_animato(act, &act->curves, &drivers);
+ action_to_animato(act, &act->groups, &act->curves, &drivers);
}
/* ipo's */
@@ -1588,7 +1719,7 @@ void do_versions_ipos_to_animato(Main *main)
/* add a new action for this, and convert all data into that action */
new_act= add_empty_action("ConvIPO_Action"); // XXX need a better name...
- ipo_to_animato(ipo, NULL, NULL, &new_act->curves, &drivers);
+ ipo_to_animato(ipo, NULL, NULL, NULL, &new_act->curves, &drivers);
}
/* clear fake-users, and set user-count to zero to make sure it is cleared on file-save */
@@ -1641,71 +1772,7 @@ void *get_ipo_poin (ID *id, IpoCurve *icu, int *type)
*type= IPO_FLOAT;
/* data is divided into 'blocktypes' based on ID-codes */
- switch (GS(id->name)) {
- case ID_PA: /* particle channels ----------------------------- */
- {
- ParticleSettings *part= (ParticleSettings *)id;
-
- switch (icu->adrcode) {
- case PART_EMIT_FREQ:
- case PART_EMIT_LIFE:
- case PART_EMIT_VEL:
- case PART_EMIT_AVE:
- case PART_EMIT_SIZE:
- poin= NULL;
- break;
-
- case PART_CLUMP:
- poin= &(part->clumpfac); break;
- case PART_AVE:
- poin= &(part->avefac); break;
- case PART_SIZE:
- poin= &(part->size); break;
- case PART_DRAG:
- poin= &(part->dragfac); break;
- case PART_BROWN:
- poin= &(part->brownfac); break;
- case PART_DAMP:
- poin= &(part->dampfac); break;
- case PART_LENGTH:
- poin= &(part->length); break;
- case PART_GRAV_X:
- poin= &(part->acc[0]); break;
- case PART_GRAV_Y:
- poin= &(part->acc[1]); break;
- case PART_GRAV_Z:
- poin= &(part->acc[2]); break;
- case PART_KINK_AMP:
- poin= &(part->kink_amp); break;
- case PART_KINK_FREQ:
- poin= &(part->kink_freq); break;
- case PART_KINK_SHAPE:
- poin= &(part->kink_shape); break;
- case PART_BB_TILT:
- poin= &(part->bb_tilt); break;
-
- case PART_PD_FSTR:
- if (part->pd) poin= &(part->pd->f_strength);
- break;
- case PART_PD_FFALL:
- if (part->pd) poin= &(part->pd->f_power);
- break;
- case PART_PD_FMAXD:
- if (part->pd) poin= &(part->pd->maxdist);
- break;
- case PART_PD2_FSTR:
- if (part->pd2) poin= &(part->pd2->f_strength);
- break;
- case PART_PD2_FFALL:
- if (part->pd2) poin= &(part->pd2->f_power);
- break;
- case PART_PD2_FMAXD:
- if (part->pd2) poin= &(part->pd2->maxdist);
- break;
- }
- }
- break;
- }
+ // all adr codes put into converters!
/* return pointer */
return poin;
diff --git a/source/blender/blenkernel/intern/node.c b/source/blender/blenkernel/intern/node.c
index 89d00cc8f06..1e0abac915b 100644
--- a/source/blender/blenkernel/intern/node.c
+++ b/source/blender/blenkernel/intern/node.c
@@ -2490,8 +2490,11 @@ bNodeTree *ntreeLocalize(bNodeTree *ntree)
node->need_exec= 0;
if(ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) {
- if(node->id && (node->flag & NODE_DO_OUTPUT)) {
- node->new_node->id= (ID *)BKE_image_copy((Image *)node->id);
+ if(node->id) {
+ if(node->flag & NODE_DO_OUTPUT)
+ node->new_node->id= (ID *)BKE_image_copy((Image *)node->id);
+ else
+ node->new_node->id= NULL;
}
}
@@ -2565,6 +2568,7 @@ void ntreeLocalMerge(bNodeTree *localtree, bNodeTree *ntree)
if(ELEM(lnode->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) {
if(lnode->id && (lnode->flag & NODE_DO_OUTPUT)) {
+ /* image_merge does sanity check for pointers */
BKE_image_merge((Image *)lnode->new_node->id, (Image *)lnode->id);
}
}
diff --git a/source/blender/blenkernel/intern/particle.c b/source/blender/blenkernel/intern/particle.c
index cac95a85d54..2b1dcc782c6 100644
--- a/source/blender/blenkernel/intern/particle.c
+++ b/source/blender/blenkernel/intern/particle.c
@@ -391,7 +391,8 @@ void psys_free(Object *ob, ParticleSystem * psys)
free_keyed_keys(psys);
- //XXX PE_free_particle_edit(psys);
+ if(psys->edit && psys->free_edit)
+ psys->free_edit(psys);
if(psys->particles){
MEM_freeN(psys->particles);
@@ -2338,7 +2339,6 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
int k,i;
int steps = (int)pow(2.0, (double)psys->part->draw_step);
int totpart = psys->totpart;
- char nosel[4], sel[4];
float sel_col[3];
float nosel_col[3];
float length, vec[3];
@@ -2350,25 +2350,25 @@ void psys_cache_paths(Scene *scene, Object *ob, ParticleSystem *psys, float cfra
if((psys->flag & PSYS_HAIR_DONE)==0 && (psys->flag & PSYS_KEYED)==0)
return;
- if(psys->renderdata)
+ if(psys->renderdata) {
steps = (int)pow(2.0, (double)psys->part->ren_step);
- else if(psys_in_edit_mode(scene, psys)){
+ }
+ else if(psys_in_edit_mode(scene, psys)) {
edit=psys->edit;
//timed = edit->draw_timed;
- //XXX PE_get_colors(sel,nosel);
- if(pset->brushtype == PE_BRUSH_WEIGHT){
+ if(pset->brushtype == PE_BRUSH_WEIGHT) {
sel_col[0] = sel_col[1] = sel_col[2] = 1.0f;
nosel_col[0] = nosel_col[1] = nosel_col[2] = 0.0f;
}
else{
- sel_col[0] = (float)sel[0] / 255.0f;
- sel_col[1] = (float)sel[1] / 255.0f;
- sel_col[2] = (float)sel[2] / 255.0f;
- nosel_col[0] = (float)nosel[0] / 255.0f;
- nosel_col[1] = (float)nosel[1] / 255.0f;
- nosel_col[2] = (float)nosel[2] / 255.0f;
+ sel_col[0] = (float)edit->sel_col[0] / 255.0f;
+ sel_col[1] = (float)edit->sel_col[1] / 255.0f;
+ sel_col[2] = (float)edit->sel_col[2] / 255.0f;
+ nosel_col[0] = (float)edit->nosel_col[0] / 255.0f;
+ nosel_col[1] = (float)edit->nosel_col[1] / 255.0f;
+ nosel_col[2] = (float)edit->nosel_col[2] / 255.0f;
}
}
diff --git a/source/blender/blenkernel/intern/particle_system.c b/source/blender/blenkernel/intern/particle_system.c
index 516cdc76125..afb4fb68c8c 100644
--- a/source/blender/blenkernel/intern/particle_system.c
+++ b/source/blender/blenkernel/intern/particle_system.c
@@ -4174,6 +4174,30 @@ static void psys_update_path_cache(Scene *scene, Object *ob, ParticleSystemModif
psys_free_path_cache(psys);
}
+/* calculate and store key locations in world coordinates */
+void psys_update_world_cos(Object *ob, ParticleSystem *psys)
+{
+ ParticleSystemModifierData *psmd= psys_get_modifier(ob, psys);
+ ParticleData *pa;
+ ParticleEditKey *key;
+ int i, k, totpart;
+ float hairmat[4][4];
+
+ if(psys==0 || psys->edit==0)
+ return;
+
+ totpart= psys->totpart;
+
+ for(i=0, pa=psys->particles; i<totpart; i++, pa++) {
+ psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, pa, hairmat);
+
+ for(k=0, key=psys->edit->keys[i]; k<pa->totkey; k++, key++) {
+ VECCOPY(key->world_co,key->co);
+ Mat4MulVecfl(hairmat, key->world_co);
+ }
+ }
+}
+
static void hair_step(Scene *scene, Object *ob, ParticleSystemModifierData *psmd, ParticleSystem *psys, float cfra)
{
ParticleSettings *part = psys->part;
@@ -4200,7 +4224,7 @@ static void hair_step(Scene *scene, Object *ob, ParticleSystemModifierData *psmd
precalc_effectors(scene, ob,psys,psmd,cfra);
if(psys_in_edit_mode(scene, psys))
- ; //XXX PE_recalc_world_cos(ob, psys);
+ psys_update_world_cos(ob, psys);
psys_update_path_cache(scene, ob,psmd,psys,cfra);
}
diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c
index 999e1744ae6..47a33bdee66 100644
--- a/source/blender/blenkernel/intern/text.c
+++ b/source/blender/blenkernel/intern/text.c
@@ -65,9 +65,6 @@ A text should relate to a file as follows -
(Text *)->flags has the following bits
TXT_ISDIRTY - should always be set if the file in mem. differs from
the file on disk, or if there is no file on disk.
- TXT_ISTMP - should always be set if the (Text *)->name file has not
- been written before, and attempts to save should result
- in "Save over?"
TXT_ISMEM - should always be set if the Text has not been mapped to
a file, in which case (Text *)->name may be NULL or garbage.
TXT_ISEXT - should always be set if the Text is not to be written into
@@ -130,7 +127,6 @@ static void txt_delete_line(Text *text, TextLine *line);
/***/
-static char *txt_cut_buffer= NULL;
static unsigned char undoing;
/* allow to switch off undoing externally */
@@ -179,7 +175,7 @@ Text *add_empty_text(char *name)
ta->undo_buf= MEM_mallocN(ta->undo_len, "undo buf");
ta->nlines=1;
- ta->flags= TXT_ISDIRTY | TXT_ISTMP | TXT_ISMEM;
+ ta->flags= TXT_ISDIRTY | TXT_ISMEM;
ta->lines.first= ta->lines.last= NULL;
ta->markers.first= ta->markers.last= NULL;
@@ -257,8 +253,6 @@ int reopen_text(Text *text)
text->undo_len= TXT_INIT_UNDO;
text->undo_buf= MEM_mallocN(text->undo_len, "undo buf");
- text->flags= TXT_ISTMP;
-
fseek(fp, 0L, SEEK_END);
len= ftell(fp);
fseek(fp, 0L, SEEK_SET);
@@ -347,9 +341,6 @@ Text *add_text(char *file, const char *relpath)
ta->lines.first= ta->lines.last= NULL;
ta->markers.first= ta->markers.last= NULL;
ta->curl= ta->sell= NULL;
-
-/* ta->flags= TXT_ISTMP | TXT_ISEXT; */
- ta->flags= TXT_ISTMP;
fseek(fp, 0L, SEEK_END);
len= ftell(fp);
@@ -430,7 +421,7 @@ Text *copy_text(Text *ta)
tan->name= MEM_mallocN(strlen(ta->name)+1, "text_name");
strcpy(tan->name, ta->name);
- tan->flags = ta->flags | TXT_ISDIRTY | TXT_ISTMP;
+ tan->flags = ta->flags | TXT_ISDIRTY;
tan->lines.first= tan->lines.last= NULL;
tan->markers.first= tan->markers.last= NULL;
@@ -1056,11 +1047,6 @@ void txt_sel_line (Text *text)
/* Cut and paste functions */
/***************************/
-void txt_print_cutbuffer (void)
-{
- printf ("Cut buffer\n--\n%s\n--\n", txt_cut_buffer);
-}
-
char *txt_to_buf (Text *text)
{
int length;
@@ -1165,15 +1151,6 @@ int txt_find_string(Text *text, char *findstr, int wrap)
return 0;
}
-void txt_cut_sel (Text *text)
-{
- if (!G.background) /* Python uses txt_cut_sel, which it should not, working around for now */
- ; //XXX txt_copy_clipboard(text);
-
- txt_delete_sel(text);
- txt_make_dirty(text);
-}
-
char *txt_sel_to_buf (Text *text)
{
char *buf;
@@ -1251,85 +1228,6 @@ char *txt_sel_to_buf (Text *text)
return buf;
}
-void txt_copy_sel (Text *text)
-{
- int length=0;
- TextLine *tmp, *linef, *linel;
- int charf, charl;
-
- if (!text) return;
- if (!text->curl) return;
- if (!text->sell) return;
-
- if (!txt_has_sel(text)) return;
-
- if (txt_cut_buffer) MEM_freeN(txt_cut_buffer);
- txt_cut_buffer= NULL;
-
- if (text->curl==text->sell) {
- linef= linel= text->curl;
-
- if (text->curc < text->selc) {
- charf= text->curc;
- charl= text->selc;
- } else{
- charf= text->selc;
- charl= text->curc;
- }
- } else if (txt_get_span(text->curl, text->sell)<0) {
- linef= text->sell;
- linel= text->curl;
-
- charf= text->selc;
- charl= text->curc;
- } else {
- linef= text->curl;
- linel= text->sell;
-
- charf= text->curc;
- charl= text->selc;
- }
-
- if (linef == linel) {
- length= charl-charf;
-
- txt_cut_buffer= MEM_mallocN(length+1, "cut buffera");
-
- BLI_strncpy(txt_cut_buffer, linef->line + charf, length+1);
- } else {
- length+= linef->len - charf;
- length+= charl;
- length++; /* For the '\n' */
-
- tmp= linef->next;
- while (tmp && tmp!= linel) {
- length+= tmp->len+1;
- tmp= tmp->next;
- }
-
- txt_cut_buffer= MEM_mallocN(length+1, "cut bufferb");
-
- strncpy(txt_cut_buffer, linef->line+ charf, linef->len-charf);
- length= linef->len-charf;
-
- txt_cut_buffer[length++]='\n';
-
- tmp= linef->next;
- while (tmp && tmp!=linel) {
- strncpy(txt_cut_buffer+length, tmp->line, tmp->len);
- length+= tmp->len;
-
- txt_cut_buffer[length++]='\n';
-
- tmp= tmp->next;
- }
- strncpy(txt_cut_buffer+length, linel->line, charl);
- length+= charl;
-
- txt_cut_buffer[length]=0;
- }
-}
-
void txt_insert_buf(Text *text, char *in_buffer)
{
int i=0, l=0, j, u, len;
@@ -1380,16 +1278,6 @@ void txt_insert_buf(Text *text, char *in_buffer)
undoing= u;
}
-void txt_free_cut_buffer(void)
-{
- if (txt_cut_buffer) MEM_freeN(txt_cut_buffer);
-}
-
-void txt_paste(Text *text)
-{
- txt_insert_buf(text, txt_cut_buffer);
-}
-
/******************/
/* Undo functions */
/******************/
@@ -2394,6 +2282,12 @@ int txt_add_char (Text *text, char add)
return 1;
}
+void txt_delete_selected(Text *text)
+{
+ txt_delete_sel(text);
+ txt_make_dirty(text);
+}
+
int txt_replace_char (Text *text, char add)
{
char del;
diff --git a/source/blender/blenlib/intern/arithb.c b/source/blender/blenlib/intern/arithb.c
index ebefd94da9c..a633b5811ff 100644
--- a/source/blender/blenlib/intern/arithb.c
+++ b/source/blender/blenlib/intern/arithb.c
@@ -111,14 +111,14 @@ float Normalize(float *n)
return d;
}
-
+/*original function from shadeoutput.c*/
double Normalize_d(double *n)
{
double d;
d= n[0]*n[0]+n[1]*n[1]+n[2]*n[2];
- /* A larger value causes normalize errors in a scaled down models with camera xtreme close */
- if(d>1.0e-35F) {
+
+ if(d>0.00000000000000001) {
d= sqrt(d);
n[0]/=d;
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 023d7c09171..338dc810641 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -109,6 +109,7 @@
#include "BKE_animsys.h"
#include "BKE_action.h"
#include "BKE_armature.h"
+#include "BKE_brush.h"
#include "BKE_cdderivedmesh.h"
#include "BKE_cloth.h"
#include "BKE_colortools.h"
@@ -1511,6 +1512,8 @@ static void direct_link_brush(FileData *fd, Brush *brush)
brush->curve= newdataadr(fd, brush->curve);
if(brush->curve)
direct_link_curvemapping(fd, brush->curve);
+ else
+ brush_curve_preset(brush, BRUSH_PRESET_SHARP);
}
static void direct_link_script(FileData *fd, Script *script)
@@ -2548,7 +2551,7 @@ static void direct_link_text(FileData *fd, Text *text)
ln= ln->next;
}
- text->flags = (text->flags|TXT_ISTMP) & ~TXT_ISEXT;
+ text->flags = (text->flags) & ~TXT_ISEXT;
text->id.us= 1;
}
@@ -2938,6 +2941,7 @@ static void direct_link_particlesystems(FileData *fd, ListBase *particles)
}
psys->edit = 0;
+ psys->free_edit = NULL;
psys->pathcache = 0;
psys->childcache = 0;
psys->pathcachebufs.first = psys->pathcachebufs.last = 0;
@@ -3849,6 +3853,9 @@ static void direct_link_scene(FileData *fd, Scene *sce)
sce->toolsettings->vpaint= newdataadr(fd, sce->toolsettings->vpaint);
sce->toolsettings->wpaint= newdataadr(fd, sce->toolsettings->wpaint);
sce->toolsettings->sculpt= newdataadr(fd, sce->toolsettings->sculpt);
+ sce->toolsettings->imapaint.paintcursor= NULL;
+ sce->toolsettings->particle.paintcursor= NULL;
+
if(sce->toolsettings->sculpt)
sce->toolsettings->sculpt->session= MEM_callocN(sizeof(SculptSession), "reload sculpt session");
}
@@ -5637,6 +5644,11 @@ static void area_add_window_regions(ScrArea *sa, SpaceLink *sl, ListBase *lb)
ar->v2d.keepzoom = (V2D_LOCKZOOM_X|V2D_LOCKZOOM_Y|V2D_KEEPZOOM|V2D_KEEPASPECT);
break;
}
+ case SPACE_TEXT:
+ {
+ SpaceText *st= (SpaceText *)sl;
+ st->flags |= ST_FIND_WRAP;
+ }
//case SPACE_XXX: // FIXME... add other ones
// memcpy(&ar->v2d, &((SpaceXxx *)sl)->v2d, sizeof(View2D));
// break;
diff --git a/source/blender/bmesh/bmesh_operators.h b/source/blender/bmesh/bmesh_operators.h
index 30e7e4c9317..a1f0a82257b 100644
--- a/source/blender/bmesh/bmesh_operators.h
+++ b/source/blender/bmesh/bmesh_operators.h
@@ -167,12 +167,14 @@ int BMO_CatchOpError(BMesh *bm, BMOperator *catchop, int errorcode, char **msg);
#define BMERR_SELF_INTERSECTING 1
#define BMERR_DISSOLVEDISK_FAILED 2
#define BMERR_CONNECTVERT_FAILED 3
+#define BMERR_WALKER_FAILED 4
static char *bmop_error_messages[] = {
0,
"Self intersection error",
"Could not dissolve vert",
"Could not connect verts",
+ "Could not traverse mesh",
};
/*------------begin operator defines (see bmesh_opdefines.c too)------------*/
diff --git a/source/blender/bmesh/bmesh_walkers.h b/source/blender/bmesh/bmesh_walkers.h
index 5f0b1e2f256..22e92e9b659 100644
--- a/source/blender/bmesh/bmesh_walkers.h
+++ b/source/blender/bmesh/bmesh_walkers.h
@@ -1,6 +1,12 @@
#ifndef BM_WALKERS_H
#define BM_WALKERS_H
+#include "BLI_ghash.h"
+
+/*
+ NOTE: do NOT modify topology while walking a mesh!
+*/
+
/*Walkers*/
typedef struct BMWalker{
BLI_mempool *stack;
@@ -8,19 +14,20 @@ typedef struct BMWalker{
void *currentstate;
void *(*begin) (struct BMWalker *walker, void *start);
void *(*yield)(struct BMWalker *walker);
- void (*step) (struct BMWalker *walker);
- int visitedmask;
+ void *(*step) (struct BMWalker *walker);
int restrictflag;
+ GHash *visithash;
}BMWalker;
-void BMWalker_Init(struct BMWalker *walker, BMesh *bm, int type, int searchmask);
+void BMWalker_Init(struct BMWalker *walker,BMesh *bm,int type, int searchmask);
void *BMWalker_Step(struct BMWalker *walker);
void BMWalker_End(struct BMWalker *walker);
-#define BM_SHELLWALKER 0
-#define BM_LOOPWALKER 1
-#define BM_RINGWALKER 2
-#define BM_UVISLANDS 3
-#define BM_MAXWALKERS 4
+#define BMW_SHELL 0
+/*#define BMW_LOOP 1
+#define BMW_RING 2
+#define BMW_UVISLANDS 3*/
+#define BMW_ISLANDBOUND 1
+#define BMW_MAXWALKERS 2
#endif \ No newline at end of file
diff --git a/source/blender/bmesh/intern/bmesh_walkers.c b/source/blender/bmesh/intern/bmesh_walkers.c
index 6e0717ce7e8..23efdd0b022 100644
--- a/source/blender/bmesh/intern/bmesh_walkers.c
+++ b/source/blender/bmesh/intern/bmesh_walkers.c
@@ -8,6 +8,19 @@
#include "bmesh.h"
/*
+ - joeedh -
+ design notes:
+
+ * walkers should use tool flags, not header flags
+ * walkers now use ghash rather then stealing flags.
+ ghash can be rewritten to be faster if necassary.
+ * walkers should always raise BMERR_WALKER_FAILED,
+ with a custom error message.
+ * tools should ALWAYS have necassary error handling
+ for if walkers fail.
+*/
+
+/*
NOTE: This code needs to be read through a couple of times!!
*/
@@ -17,7 +30,14 @@ typedef struct shellWalker{
BMEdge *curedge, *current;
} shellWalker;
-/*
+typedef struct islandboundWalker {
+ struct islandboundWalker *prev;
+ BMEdge *base;
+ BMVert *lastv;
+ BMEdge *curedge;
+} islandboundWalker;
+
+/* NOTE: this comment is out of date, update it - joeedh
* BMWalker - change this to use the filters functions.
*
* A generic structure for maintaing the state and callbacks nessecary for walking over
@@ -41,13 +61,18 @@ typedef struct shellWalker{
*/
/*Forward declerations*/
-static int request_walkerMask(struct BMesh *bm);
static void *BMWalker_walk(struct BMWalker *walker);
-static void BMWalker_popState(struct BMWalker *walker);
-static void BMWalker_pushState(struct BMWalker *walker);
-static void *shellWalker_begin(struct BMWalker *walker, void *data);
-static void *shellWalker_yield(struct BMWalker *walker);
-static void shellWalker_step(struct BMWalker *walker);
+static void BMWalker_popstate(struct BMWalker *walker);
+static void BMWalker_pushstate(struct BMWalker *walker);
+
+static void *shellWalker_Begin(struct BMWalker *walker, void *data);
+static void *shellWalker_Yield(struct BMWalker *walker);
+static void *shellWalker_Step(struct BMWalker *walker);
+
+static void *islandboundWalker_Begin(BMWalker *walker, void *data);
+static void *islandboundWalker_Yield(BMWalker *walker);
+static void *islandboundWalker_Step(BMWalker *walker);
+
struct shellWalker;
/* Pointer hiding*/
@@ -57,34 +82,6 @@ typedef struct bmesh_walkerGeneric{
/*
- * REQUEST_WALKERMASK
- *
- * Each active walker for a bmesh has its own bitmask
- * to use for flagging elements as visited. request_walkerMask
- * queries the bmesh passed in and returns the first free
- * bitmask. If none are free, it returns 0. The maximum number
- * of walkers that can be used for a single bmesh between calls to
- * bmesh_edit_begin() and bmesh_edit_end() is defined by the constant
- * BM_MAXWALKERS.
- *
-*/
-
-static int request_walkerMask(BMesh *bm)
-{
- int i;
- for(i=0; i < BM_MAXWALKERS; i++){
- if(!(bm->walkers & (1 << i))){
- bm->walkers |= (1 << i);
- return (1 << i);
- }
- }
- return 0;
-}
-
-
-
-
-/*
* BMWalker_CREATE
*
* Allocates and returns a new mesh walker of
@@ -93,71 +90,72 @@ static int request_walkerMask(BMesh *bm)
*
*/
-void BMWalker_init(BMWalker *walker, BMesh *bm, int type, int searchmask)
+void BMWalker_Init(BMWalker *walker, BMesh *bm, int type, int searchmask)
{
- int visitedmask = request_walkerMask(bm);
int size = 0;
- if(visitedmask){
- memset(walker, 0, sizeof(BMWalker));
- walker->bm = bm;
- walker->visitedmask = visitedmask;
- walker->restrictflag = searchmask;
- switch(type){
- case BM_SHELLWALKER:
- walker->begin = shellWalker_begin;
- walker->step = shellWalker_step;
- walker->yield = shellWalker_yield;
- size = sizeof(shellWalker);
- break;
- //case BM_LOOPWALKER:
- // walker->begin = loopwalker_begin;
- // walker->step = loopwalker_step;
- // walker->yield = loopwalker_yield;
- // size = sizeof(loopWalker);
- // break;
- //case BM_RINGWALKER:
- // walker->begin = ringwalker_begin;
- // walker->step = ringwalker_step;
- // walker->yield = ringwalker_yield;
- // size = sizeof(ringWalker);
- // break;
- default:
- break;
- }
- walker->stack = BLI_mempool_create(size, 100, 100);
- walker->currentstate = NULL;
+ memset(walker, 0, sizeof(BMWalker));
+ walker->bm = bm;
+ walker->restrictflag = searchmask;
+ walker->visithash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp);
+
+ switch(type){
+ case BMW_SHELL:
+ walker->begin = shellWalker_Begin;
+ walker->step = shellWalker_Step;
+ walker->yield = shellWalker_Yield;
+ size = sizeof(shellWalker);
+ break;
+ case BMW_ISLANDBOUND:
+ walker->begin = islandboundWalker_Begin;
+ walker->step = islandboundWalker_Step;
+ walker->yield = islandboundWalker_Yield;
+ size = sizeof(islandboundWalker);
+ break;
+ //case BMW_LOOP:
+ // walker->begin = loopwalker_Begin;
+ // walker->step = loopwalker_Step;
+ // walker->yield = loopwalker_Yield;
+ // size = sizeof(loopWalker);
+ // break;
+ //case BMW_RING:
+ // walker->begin = ringwalker_Begin;
+ // walker->step = ringwalker_Step;
+ // walker->yield = ringwalker_Yield;
+ // size = sizeof(ringWalker);
+ // break;
+ default:
+ break;
}
+ walker->stack = BLI_mempool_create(size, 100, 100);
+ walker->currentstate = NULL;
}
/*
- * BMWalker_END
+ * BMWalker_End
*
* Frees a walker's stack.
*
*/
-void BMWalker_end(BMWalker *walker)
+void BMWalker_End(BMWalker *walker)
{
BLI_mempool_destroy(walker->stack);
}
/*
- * BMWalker_STEP
+ * BMWalker_Step
*
*/
-void *BMWalker_step(BMWalker *walker)
+void *BMWalker_Step(BMWalker *walker)
{
BMHeader *head;
- while(head = BMWalker_walk(walker)){
- //NOTE: figure this out
- //if(bmesh_test_flag(head, walker->restrictflag)) return head;
- return head;
- }
- return NULL;
+ head = BMWalker_walk(walker);
+
+ return head;
}
/*
@@ -178,21 +176,21 @@ static void *BMWalker_walk(BMWalker *walker)
walker->step(walker);
current = walker->yield(walker);
if(current) return current;
- else BMWalker_popState(walker);
+ else BMWalker_popstate(walker);
}
return NULL;
}
/*
- * BMWalker_POPSTATE
+ * BMWalker_popstate
*
* Pops the current walker state off the stack
* and makes the previous state current
*
*/
-static void BMWalker_popState(BMWalker *walker)
+static void BMWalker_popstate(BMWalker *walker)
{
void *oldstate;
oldstate = walker->currentstate;
@@ -202,14 +200,14 @@ static void BMWalker_popState(BMWalker *walker)
}
/*
- * BMWalker_PUSHSTATE
+ * BMWalker_pushstate
*
* Pushes the current state down the stack and allocates
* a new one.
*
*/
-static void BMWalker_pushState(BMWalker *walker)
+static void BMWalker_pushstate(BMWalker *walker)
{
bmesh_walkerGeneric *newstate;
newstate = BLI_mempool_alloc(walker->stack);
@@ -228,46 +226,49 @@ static void BMWalker_pushState(BMWalker *walker)
*
*/
-static void *shellWalker_begin(BMWalker *walker, void *data){
+static void *shellWalker_Begin(BMWalker *walker, void *data){
BMVert *v = data;
shellWalker *shellWalk = NULL;
- BMWalker_pushState(walker);
+ BMWalker_pushstate(walker);
shellWalk = walker->currentstate;
- shellWalk->base = shellWalk->curedge = NULL;
+ shellWalk->base = NULL;
+ shellWalk->curedge = NULL;
if(v->edge){
shellWalk->base = v;
shellWalk->curedge = v->edge;
}
+
+ return v->edge;
}
-static void *shellWalker_yield(BMWalker *walker)
+static void *shellWalker_Yield(BMWalker *walker)
{
shellWalker *shellWalk = walker->currentstate;
return shellWalk->curedge;
}
-static void shellWalker_step(BMWalker *walker)
+static void *shellWalker_Step(BMWalker *walker)
{
BMEdge *curedge, *next = NULL;
BMVert *ov = NULL;
int restrictpass = 1;
shellWalker *shellWalk = walker->currentstate;
-
- if(!(shellWalk->base->head.flag & walker->visitedmask))
- shellWalk->base->head.flag |= walker->visitedmask;
+ if (!BLI_ghash_lookup(walker->visithash, shellWalk->base))
+ BLI_ghash_insert(walker->visithash, shellWalk->base, NULL);
+
/*find the next edge whose other vertex has not been visited*/
curedge = shellWalk->curedge;
do{
- if(!(curedge->head.flag & walker->visitedmask)){
- curedge->head.flag |= walker->visitedmask;
- if(walker->restrictflag && (!(curedge->head.flag & walker->restrictflag))) restrictpass = 0;
- if(restrictpass){
+ if (!BLI_ghash_lookup(walker->visithash, curedge)) {
+ BLI_ghash_insert(walker->visithash, curedge, NULL);
+ if(walker->restrictflag && (!BMO_TestFlag(walker->bm, curedge, walker->restrictflag))) restrictpass = 0;
+ if(restrictpass) {
ov = BM_OtherEdgeVert(curedge, shellWalk->base);
/*save current state*/
shellWalk->curedge = curedge;
/*push a new state onto the stack*/
- BMWalker_pushState(walker);
+ BMWalker_pushstate(walker);
/*populate the new state*/
((shellWalker*)walker->currentstate)->base = ov;
@@ -283,4 +284,68 @@ static void shellWalker_step(BMWalker *walker)
shellWalk->current = next;
return shellWalk->current;
-} \ No newline at end of file
+}
+
+/* Island Boundary Walker:
+ *
+ * Starts at a edge on the mesh and walks over the boundary of an
+ * island it belongs to.
+ *
+ * TODO:
+ *
+ * Add restriction flag/callback for wire edges.
+ *
+*/
+
+static void *islandboundWalker_Begin(BMWalker *walker, void *data){
+ BMEdge *e = data;
+ islandboundWalker *iwalk = NULL;
+
+ BMWalker_pushstate(walker);
+
+ iwalk = walker->currentstate;
+ iwalk->base = iwalk->curedge = e;
+
+ return e;
+}
+
+static void *islandboundWalker_Yield(BMWalker *walker)
+{
+ islandboundWalker *iwalk = walker->currentstate;
+
+ return iwalk->curedge;
+}
+
+static void *islandboundWalker_Step(BMWalker *walker)
+{
+ islandboundWalker *iwalk = walker->currentstate, *owalk;
+ BMIter iter;
+ BMVert *v;
+ BMEdge *e = iwalk->curedge;
+ int found;
+
+ owalk = iwalk;
+
+ if (iwalk->lastv == e->v1) v = e->v2;
+ else v = e->v1;
+
+ BMWalker_popstate(walker);
+
+ e=BMIter_New(&iter, walker->bm, BM_EDGES_OF_VERT, v);
+ for (; e; e=BMIter_Step(&iter)) {
+ if (!BMO_TestFlag(walker->bm, e, walker->restrictflag))
+ continue;
+ if (BLI_ghash_haskey(walker->visithash, e)) continue;
+
+ BLI_ghash_insert(walker->visithash, e, NULL);
+ BMWalker_pushstate(walker);
+
+ iwalk = walker->currentstate;
+ iwalk->base = iwalk->base;
+ iwalk->curedge = e;
+ iwalk->lastv = v;
+
+ }
+
+ return iwalk->curedge;
+}
diff --git a/source/blender/editors/animation/anim_channels.c b/source/blender/editors/animation/anim_channels.c
index ca385333d7a..8dfb1c20bbe 100644
--- a/source/blender/editors/animation/anim_channels.c
+++ b/source/blender/editors/animation/anim_channels.c
@@ -101,45 +101,56 @@
else (channel)->flag &= ~(sflag); \
}
-/* -------------------------- Internal Tools -------------------------------- */
+/* -------------------------- Exposed API ----------------------------------- */
-/* set the given Action Group to be the 'active' one in its Action */
-static void action_set_active_agrp (bAction *act, bActionGroup *agrp)
+/* Set the given animation-channel as the active one for the active context */
+void ANIM_set_active_channel (void *data, short datatype, int filter, void *channel_data, short channel_type)
{
- bActionGroup *grp;
+ ListBase anim_data = {NULL, NULL};
+ bAnimListElem *ale;
+ short smode;
- /* sanity check */
- if (act == NULL)
+ /* try to build list of filtered items */
+ // XXX we don't need/supply animcontext for now, since in this case, there's nothing really essential there that isn't already covered
+ ANIM_animdata_filter(NULL, &anim_data, filter, data, datatype);
+ if (anim_data.first == NULL)
return;
- /* clear active flag on all others */
- for (grp= act->groups.first; grp; grp= grp->next)
- grp->flag &= ~AGRP_ACTIVE;
+ /* only clear the 'active' flag for the channels of the same type */
+ for (ale= anim_data.first; ale; ale= ale->next) {
+ /* skip if types don't match */
+ if (channel_type != ale->type)
+ continue;
- /* set the given group to be the active one */
- if (agrp)
- agrp->flag |= AGRP_ACTIVE;
-}
-
-/* -------------------------- Exposed API ----------------------------------- */
-
-/* Set the given ActionChannel or ActionGroup as the active one in the given action
- * - data: should be bAction...
- * - datatype: should be ANIMCONT_ACTION
- * - channel_data: bActionChannel or bActionGroup
- * - channel_type: eAnim_ChannelType
- */
-void ANIM_action_set_active_channel (void *data, short datatype, void *channel_data, short channel_type)
-{
- /* sanity checks */
- if ((data == NULL) || (datatype != ANIMCONT_ACTION))
- return;
+ /* flag setting mode
+ * - depends on whether the provided channel is encountered
+ */
+ if (ale->data == channel_data)
+ smode= ACHANNEL_SETFLAG_ADD;
+ else
+ smode= ACHANNEL_SETFLAG_CLEAR;
- switch (channel_type) {
- case ANIMTYPE_GROUP:
- action_set_active_agrp((bAction *)data, (bActionGroup *)channel_data);
- break;
+ /* flag to set depends on type */
+ switch (ale->type) {
+ case ANIMTYPE_GROUP:
+ {
+ bActionGroup *agrp= (bActionGroup *)ale->data;
+
+ ACHANNEL_SET_FLAG(agrp, smode, AGRP_ACTIVE);
+ }
+ break;
+ case ANIMTYPE_FCURVE:
+ {
+ FCurve *fcu= (FCurve *)ale->data;
+
+ ACHANNEL_SET_FLAG(fcu, smode, FCURVE_ACTIVE);
+ }
+ break;
+ }
}
+
+ /* clean up */
+ BLI_freelistN(&anim_data);
}
/* Deselect all animation channels
@@ -856,6 +867,27 @@ void ANIM_OT_channels_toggle_setting (wmOperatorType *ot)
RNA_def_enum(ot->srna, "type", prop_animchannel_settings_types, 0, "Type", "");
}
+// XXX currently, this is a separate operator, but perhaps we could in future specify in keymaps whether to call invoke or exec?
+void ANIM_OT_channels_toggle_editable (wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Toggle Channel Editability";
+ ot->idname= "ANIM_OT_channels_toggle_editable";
+
+ /* api callbacks */
+ ot->exec= animchannels_setflag_exec;
+ ot->poll= ED_operator_areaactive;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* props */
+ /* flag-setting mode */
+ RNA_def_enum(ot->srna, "mode", prop_animchannel_setflag_types, ACHANNEL_SETFLAG_TOGGLE, "Mode", "");
+ /* setting to set */
+ RNA_def_enum(ot->srna, "type", prop_animchannel_settings_types, ACHANNEL_SETTING_PROTECT, "Type", "");
+}
+
/* ********************** Select All Operator *********************** */
static int animchannels_deselectall_exec(bContext *C, wmOperator *op)
@@ -1192,14 +1224,14 @@ static void mouse_anim_channels (bAnimContext *ac, float x, int channel_index, s
}
else if (selectmode == -1) {
/* select all in group (and deselect everthing else) */
- bActionChannel *achan;
+ FCurve *fcu;
/* deselect all other channels */
ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR);
/* only select channels in group and group itself */
- for (achan= agrp->channels.first; achan && achan->grp==agrp; achan= achan->next)
- achan->flag |= ACHAN_SELECTED;
+ for (fcu= agrp->channels.first; fcu && fcu->grp==agrp; fcu= fcu->next)
+ fcu->flag |= FCURVE_SELECTED;
agrp->flag |= AGRP_SELECTED;
}
else {
@@ -1208,19 +1240,26 @@ static void mouse_anim_channels (bAnimContext *ac, float x, int channel_index, s
agrp->flag |= AGRP_SELECTED;
}
- /* if group is selected now, and we're in Action Editor mode (so that we have pointer to active action),
- * we can make this group the 'active' one in that action
- */
- // TODO: we should be able to do this through dopesheet + f-curves editor too...
- if ((agrp->flag & AGRP_SELECTED) && (ac->datatype == ANIMCONT_ACTION))
- action_set_active_agrp((bAction *)ac->data, agrp);
+ /* if group is selected now, make group the 'active' one in the visible list */
+ if (agrp->flag & AGRP_SELECTED)
+ ANIM_set_active_channel(ac->data, ac->datatype, filter, agrp, ANIMTYPE_GROUP);
}
}
break;
case ANIMTYPE_FCURVE:
{
FCurve *fcu= (FCurve *)ale->data;
- short offset= (ac->datatype != ANIMCONT_ACTION)? 18 : 0;
+ short offset;
+
+ if (ac->datatype != ANIMCONT_ACTION) {
+ /* for now, special case for materials */
+ if (ale->ownertype == ANIMTYPE_DSMAT)
+ offset= 21;
+ else
+ offset= 18;
+ }
+ else
+ offset = 0;
if (x >= (ACHANNEL_NAMEWIDTH-ACHANNEL_BUTTON_WIDTH)) {
/* toggle protection */
@@ -1232,17 +1271,23 @@ static void mouse_anim_channels (bAnimContext *ac, float x, int channel_index, s
}
else if ((x < (offset+17)) && (ac->spacetype==SPACE_IPO)) {
/* toggle visibility */
- // XXX this is supposed to be button before name, though this sometimes fails
fcu->flag ^= FCURVE_VISIBLE;
}
else {
/* select/deselect */
- fcu->flag ^= FCURVE_SELECTED;
+ if (selectmode == SELECT_INVERT) {
+ /* inverse selection status of this F-Curve only */
+ fcu->flag ^= FCURVE_SELECTED;
+ }
+ else {
+ /* select F-Curve by itself */
+ ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR);
+ fcu->flag |= FCURVE_SELECTED;
+ }
+ /* if F-Curve is selected now, make F-Curve the 'active' one in the visible list */
if (fcu->flag & FCURVE_SELECTED)
- fcu->flag |= FCURVE_ACTIVE;
- else
- fcu->flag &= ~FCURVE_ACTIVE;
+ ANIM_set_active_channel(ac->data, ac->datatype, filter, fcu, ANIMTYPE_FCURVE);
}
}
break;
@@ -1375,6 +1420,9 @@ void ED_operatortypes_animchannels(void)
WM_operatortype_append(ANIM_OT_channels_disable_setting);
WM_operatortype_append(ANIM_OT_channels_toggle_setting);
+ // XXX does this need to be a separate operator?
+ WM_operatortype_append(ANIM_OT_channels_toggle_editable);
+
// XXX these need to be updated for new system... todo...
//WM_operatortype_append(ANIM_OT_channels_move_up);
//WM_operatortype_append(ANIM_OT_channels_move_down);
@@ -1407,6 +1455,9 @@ void ED_keymap_animchannels(wmWindowManager *wm)
WM_keymap_add_item(keymap, "ANIM_OT_channels_enable_setting", WKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
WM_keymap_add_item(keymap, "ANIM_OT_channels_disable_setting", WKEY, KM_PRESS, KM_ALT, 0);
+ /* settings - specialised hotkeys */
+ WM_keymap_add_item(keymap, "ANIM_OT_channels_toggle_editable", TABKEY, KM_PRESS, 0, 0);
+
/* rearranging - actions only */
//WM_keymap_add_item(keymap, "ANIM_OT_channels_move_up", PAGEUPKEY, KM_PRESS, KM_SHIFT, 0);
//WM_keymap_add_item(keymap, "ANIM_OT_channels_move_down", PAGEDOWNKEY, KM_PRESS, KM_SHIFT, 0);
diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c
index 05fa1f3bc97..689520eb0fa 100644
--- a/source/blender/editors/animation/anim_filter.c
+++ b/source/blender/editors/animation/anim_filter.c
@@ -1191,7 +1191,7 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bDopeSheet *ads, int
if (base->object) {
Object *ob= base->object;
Key *key= ob_get_key(ob);
- short actOk, keyOk, dataOk;
+ short actOk, keyOk, dataOk, matOk;
/* firstly, check if object can be included, by the following fanimors:
* - if only visible, must check for layer and also viewport visibility
@@ -1225,6 +1225,34 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bDopeSheet *ads, int
keyOk= ((key) && ANIMDATA_HAS_KEYS(key) && !(ads->filterflag & ADS_FILTER_NOSHAPEKEYS));
}
+ /* materials - only for geometric types */
+ matOk= 0; /* by default, not ok... */
+ if ( !(ads->filterflag & ADS_FILTER_NOMAT) && (ob->totcol) &&
+ ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL) )
+ {
+ int a;
+
+ /* firstly check that we actuallly have some materials */
+ for (a=0; a < ob->totcol; a++) {
+ Material *ma= give_current_material(ob, a);
+
+ /* if material has relevant animation data, break */
+ if (ads->filterflag & ADS_FILTER_ONLYDRIVERS) {
+ if (ANIMDATA_HAS_DRIVERS(ma)) {
+ matOk= 1;
+ break;
+ }
+ }
+ else {
+ if (ANIMDATA_HAS_KEYS(ma)) {
+ matOk= 1;
+ break;
+ }
+ }
+ }
+ }
+
+ /* data */
switch (ob->type) {
case OB_CAMERA: /* ------- Camera ------------ */
{
@@ -1244,22 +1272,13 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bDopeSheet *ads, int
dataOk= (ANIMDATA_HAS_KEYS(la) && !(ads->filterflag & ADS_FILTER_NOLAM));
}
break;
- case OB_CURVE: /* -------- Curve ---------- */
- {
- Curve *cu= (Curve *)ob->data;
- if (ads->filterflag & ADS_FILTER_ONLYDRIVERS)
- dataOk= (ANIMDATA_HAS_DRIVERS(cu) && !(ads->filterflag & ADS_FILTER_NOCUR));
- else
- dataOk= (ANIMDATA_HAS_KEYS(cu) && !(ads->filterflag & ADS_FILTER_NOCUR));
- }
- break;
default: /* --- other --- */
dataOk= 0;
break;
}
/* check if all bad (i.e. nothing to show) */
- if (!actOk && !keyOk && !dataOk)
+ if (!actOk && !keyOk && !dataOk && !matOk)
continue;
}
else {
@@ -1267,6 +1286,24 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bDopeSheet *ads, int
actOk= ANIMDATA_HAS_KEYS(ob);
keyOk= (key != NULL);
+ /* materials - only for geometric types */
+ matOk= 0; /* by default, not ok... */
+ if (ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL) && (ob->totcol))
+ {
+ int a;
+
+ /* firstly check that we actuallly have some materials */
+ for (a=0; a < ob->totcol; a++) {
+ Material *ma= give_current_material(ob, a);
+
+ if ((ma) && ANIMDATA_HAS_KEYS(ma)) {
+ matOk= 1;
+ break;
+ }
+ }
+ }
+
+ /* data */
switch (ob->type) {
case OB_CAMERA: /* ------- Camera ------------ */
{
@@ -1292,7 +1329,7 @@ static int animdata_filter_dopesheet (ListBase *anim_data, bDopeSheet *ads, int
}
/* check if all bad (i.e. nothing to show) */
- if (!actOk && !keyOk && !dataOk)
+ if (!actOk && !keyOk && !dataOk && !matOk)
continue;
}
diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c
index 1727ec17182..4b5ab6296b4 100644
--- a/source/blender/editors/animation/keyframes_draw.c
+++ b/source/blender/editors/animation/keyframes_draw.c
@@ -535,7 +535,7 @@ void fcurve_to_keylist(FCurve *fcu, ListBase *keys, ListBase *blocks, ActKeysInc
ActKeyBlock *ab, *ab2;
int v;
- if (fcu && fcu->totvert) {
+ if (fcu && fcu->totvert && fcu->bezt) {
/* loop through beztriples, making ActKeys and ActKeyBlocks */
bezt= fcu->bezt;
diff --git a/source/blender/editors/animation/keyframes_edit.c b/source/blender/editors/animation/keyframes_edit.c
index c3a393994d7..44814812c76 100644
--- a/source/blender/editors/animation/keyframes_edit.c
+++ b/source/blender/editors/animation/keyframes_edit.c
@@ -84,7 +84,7 @@ short ANIM_fcurve_keys_bezier_loop(BeztEditData *bed, FCurve *fcu, BeztEditFunc
int b;
/* sanity check */
- if (fcu == NULL)
+ if (ELEM(NULL, fcu, fcu->bezt))
return 0;
/* if function to apply to bezier curves is set, then loop through executing it on beztriples */
diff --git a/source/blender/editors/animation/keyframes_general.c b/source/blender/editors/animation/keyframes_general.c
index cf7d56da5d9..fc6ed9b00bb 100644
--- a/source/blender/editors/animation/keyframes_general.c
+++ b/source/blender/editors/animation/keyframes_general.c
@@ -38,7 +38,6 @@
#include "DNA_anim_types.h"
#include "DNA_action_types.h"
#include "DNA_curve_types.h"
-#include "DNA_ipo_types.h" // XXX to be removed
#include "DNA_key_types.h"
#include "DNA_object_types.h"
#include "DNA_space_types.h"
@@ -357,3 +356,187 @@ void smooth_fcurve (FCurve *fcu)
}
/* **************************************************** */
+/* Copy/Paste Tools */
+/* - The copy/paste buffer currently stores a set of temporary F-Curves containing only the keyframes
+ * that were selected in each of the original F-Curves
+ * - All pasted frames are offset by the same amount. This is calculated as the difference in the times of
+ * the current frame and the 'first keyframe' (i.e. the earliest one in all channels).
+ * - The earliest frame is calculated per copy operation.
+ */
+
+/* globals for copy/paste data (like for other copy/paste buffers) */
+ListBase animcopybuf = {NULL, NULL};
+static float animcopy_firstframe= 999999999.0f;
+
+/* datatype for use in copy/paste buffer */
+// XXX F-Curve editor should use this too
+typedef struct tAnimCopybufItem {
+ struct tAnimCopybufItem *next, *prev;
+
+ ID *id; /* ID which owns the curve */
+ bActionGroup *grp; /* Action Group */
+ char *rna_path; /* RNA-Path */
+ int array_index; /* array index */
+
+ int totvert; /* number of keyframes stored for this channel */
+ BezTriple *bezt; /* keyframes in buffer */
+} tAnimCopybufItem;
+
+
+/* This function frees any MEM_calloc'ed copy/paste buffer data */
+// XXX find some header to put this in!
+void free_anim_copybuf (void)
+{
+ tAnimCopybufItem *aci, *acn;
+
+ /* free each buffer element */
+ for (aci= animcopybuf.first; aci; aci= acn) {
+ acn= aci->next;
+
+ /* free keyframes */
+ if (aci->bezt)
+ MEM_freeN(aci->bezt);
+
+ /* free RNA-path */
+ if (aci->rna_path)
+ MEM_freeN(aci->rna_path);
+
+ /* free ourself */
+ BLI_freelinkN(&animcopybuf, aci);
+ }
+
+ /* restore initial state */
+ animcopybuf.first= animcopybuf.last= NULL;
+ animcopy_firstframe= 999999999.0f;
+}
+
+/* ------------------- */
+
+/* This function adds data to the keyframes copy/paste buffer, freeing existing data first */
+short copy_animedit_keys (bAnimContext *ac, ListBase *anim_data)
+{
+ bAnimListElem *ale;
+
+ /* clear buffer first */
+ free_anim_copybuf();
+
+ /* assume that each of these is an ipo-block */
+ for (ale= anim_data->first; ale; ale= ale->next) {
+ FCurve *fcu= (FCurve *)ale->key_data;
+ tAnimCopybufItem *aci;
+ BezTriple *bezt, *newbuf;
+ int i;
+
+ /* init copybuf item info */
+ aci= MEM_callocN(sizeof(tAnimCopybufItem), "AnimCopybufItem");
+ aci->id= ale->id;
+ aci->grp= fcu->grp;
+ aci->rna_path= MEM_dupallocN(fcu->rna_path);
+ aci->array_index= fcu->array_index;
+ BLI_addtail(&animcopybuf, aci);
+
+ /* add selected keyframes to buffer */
+ // XXX we don't cope with sample-data yet
+ // TODO: currently, we resize array everytime we add a new vert - this works ok as long as it is assumed only a few keys are copied
+ for (i=0, bezt=fcu->bezt; i < fcu->totvert; i++, bezt++) {
+ if (BEZSELECTED(bezt)) {
+ /* add to buffer */
+ newbuf= MEM_callocN(sizeof(BezTriple)*(aci->totvert+1), "copybuf beztriple");
+
+ /* assume that since we are just resizing the array, just copy all existing data across */
+ if (aci->bezt)
+ memcpy(newbuf, aci->bezt, sizeof(BezTriple)*(aci->totvert));
+
+ /* copy current beztriple across too */
+ *(newbuf + aci->totvert)= *bezt;
+
+ /* free old array and set the new */
+ if (aci->bezt) MEM_freeN(aci->bezt);
+ aci->bezt= newbuf;
+ aci->totvert++;
+
+ /* check if this is the earliest frame encountered so far */
+ if (bezt->vec[1][0] < animcopy_firstframe)
+ animcopy_firstframe= bezt->vec[1][0];
+ }
+ }
+
+ }
+
+ /* check if anything ended up in the buffer */
+ if (ELEM(NULL, animcopybuf.first, animcopybuf.last))
+ return -1;
+
+ /* everything went fine */
+ return 0;
+}
+
+/* This function pastes data from the keyframes copy/paste buffer */
+short paste_animedit_keys (bAnimContext *ac, ListBase *anim_data)
+{
+ bAnimListElem *ale;
+ const Scene *scene= (ac->scene);
+ const float offset = (float)(CFRA - animcopy_firstframe);
+ short no_name= 0;
+
+ /* check if buffer is empty */
+ if (ELEM(NULL, animcopybuf.first, animcopybuf.last)) {
+ //error("No data in buffer to paste");
+ return -1;
+ }
+ /* check if single channel in buffer (disregard names if so) */
+ if (animcopybuf.first == animcopybuf.last)
+ no_name= 1;
+
+ /* from selected channels */
+ for (ale= anim_data->first; ale; ale= ale->next) {
+ FCurve *fcu = (FCurve *)ale->data; /* destination F-Curve */
+ tAnimCopybufItem *aci= NULL;
+ BezTriple *bezt;
+ int i;
+
+ /* find buffer item to paste from
+ * - if names don't matter (i.e. only 1 channel in buffer), don't check id/group
+ * - if names do matter, only check if id-type is ok for now (group check is not that important)
+ * - most importantly, rna-paths should match (array indices are unimportant for now)
+ */
+ // TODO: the matching algorithm here is pathetic!
+ for (aci= animcopybuf.first; aci; aci= aci->next) {
+ /* check that paths exist */
+ if (aci->rna_path && fcu->rna_path) {
+ if (strcmp(aci->rna_path, fcu->rna_path) == 0) {
+ /* should be a match unless there's more than one of these */
+ if ((no_name) || (aci->array_index == fcu->array_index))
+ break;
+ }
+ }
+ }
+
+
+ /* copy the relevant data from the matching buffer curve */
+ if (aci) {
+ /* just start pasting, with the the first keyframe on the current frame, and so on */
+ for (i=0, bezt=aci->bezt; i < aci->totvert; i++, bezt++) {
+ /* temporarily apply offset to src beztriple while copying */
+ bezt->vec[0][0] += offset;
+ bezt->vec[1][0] += offset;
+ bezt->vec[2][0] += offset;
+
+ /* insert the keyframe */
+ insert_bezt_fcurve(fcu, bezt);
+
+ /* un-apply offset from src beztriple after copying */
+ bezt->vec[0][0] -= offset;
+ bezt->vec[1][0] -= offset;
+ bezt->vec[2][0] -= offset;
+ }
+
+ /* recalculate F-Curve's handles? */
+ calchandles_fcurve(fcu);
+ }
+ }
+
+ return 0;
+}
+
+/* **************************************************** */
diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c
index 9529eb84011..f490fb77438 100644
--- a/source/blender/editors/animation/keyframing.c
+++ b/source/blender/editors/animation/keyframing.c
@@ -130,13 +130,11 @@ FCurve *verify_fcurve (ID *id, const char group[], const char rna_path[], const
/* Add a new group, and make it active */
grp= MEM_callocN(sizeof(bActionGroup), "bActionGroup");
- grp->flag |= (AGRP_ACTIVE|AGRP_SELECTED|AGRP_EXPANDED);
+ grp->flag = AGRP_SELECTED;
BLI_snprintf(grp->name, 64, group);
BLI_addtail(&act->groups, grp);
BLI_uniquename(&act->groups, grp, "Group", offsetof(bActionGroup, name), 64);
-
- set_active_action_group(act, grp, 1);
}
/* add F-Curve to group */
@@ -656,7 +654,7 @@ static float visualkey_get_value (PointerRNA *ptr, PropertyRNA *prop, int array_
float eul[3];
Mat4ToEul(ob->obmat, eul);
- return eul[array_index]*(5.72958f);
+ return eul[array_index];
}
}
}
@@ -854,7 +852,6 @@ short deletekey (ID *id, const char group[], const char rna_path[], int array_in
delete_fcurve_key(fcu, i, 1);
/* Only delete curve too if there are no points (we don't need to check for drivers, as they're kept separate) */
- // XXX how do we handle drivers then?
if (fcu->totvert == 0) {
BLI_remlink(&act->curves, fcu);
free_fcurve(fcu);
@@ -1800,342 +1797,6 @@ static void commonkey_context_getsbuts (const bContext *C, ListBase *sources, bK
*ksc= NULL;
}
-
-/* get keyingsets for appropriate context */
-static void commonkey_context_get (const bContext *C, ScrArea *sa, short mode, ListBase *sources, bKeyingContext **ksc)
-{
- /* get current view if no view is defined */
- if (sa == NULL)
- sa= CTX_wm_area(C);
-
- /* check view type */
- switch (sa->spacetype) {
- /* 3d view - first one tested as most often used */
- case SPACE_VIEW3D:
- {
- commonkey_context_getv3d(C, sources, ksc);
- }
- break;
-
- /* buttons view */
- case SPACE_BUTS:
- {
- commonkey_context_getsbuts(C, sources, ksc);
- }
- break;
-
- /* spaces with their own methods */
- case SPACE_IPO:
- //if (mode == COMMONKEY_MODE_INSERT)
- // insertkey_editipo(); // XXX old calls...
- return;
- case SPACE_ACTION:
- //if (mode == COMMONKEY_MODE_INSERT)
- // insertkey_action(); // XXX old calls...
- return;
-
- /* timeline view - keyframe buttons */
- case SPACE_TIME:
- {
- bScreen *sc= CTX_wm_screen(C);
- ScrArea *sab;
- int bigarea= 0;
-
- /* try to find largest 3d-view available
- * (mostly of the time, this is what when user will want this,
- * as it's a standard feature in all other apps)
- */
- //sab= find_biggest_area_of_type(SPACE_VIEW3D);
- sab= NULL; // XXX for now...
- if (sab) {
- commonkey_context_getv3d(C, sources, ksc);
- return;
- }
-
- /* if not found, sab is now NULL, so perform own biggest area test */
- for (sa= sc->areabase.first; sa; sa= sa->next) { // XXX this has changed!
- int area= sa->winx * sa->winy;
-
- if (sa->spacetype != SPACE_TIME) {
- if ( (!sab) || (area > bigarea) ) {
- sab= sa;
- bigarea= area;
- }
- }
- }
-
- /* use whichever largest area was found (it shouldn't be a time window) */
- if (sab)
- commonkey_context_get(C, sab, mode, sources, ksc);
- }
- break;
- }
-}
-
-/* flush updates after all operations */
-static void commonkey_context_finish (const bContext *C, ListBase *sources)
-{
- ScrArea *curarea= CTX_wm_area(C);
- Scene *scene= CTX_data_scene(C);
-
- /* check view type */
- switch (curarea->spacetype) {
- /* 3d view - first one tested as most often used */
- case SPACE_VIEW3D:
- {
- /* either pose or object level */
- if (OBACT && (OBACT->pose)) {
- //Object *ob= OBACT;
-
- /* recalculate ipo handles, etc. */
- // XXX this method has been removed!
- //if (ob->action)
- // remake_action_ipos(ob->action);
-
- /* recalculate bone-paths on adding new keyframe? */
- // XXX missing function
- // TODO: currently, there is no setting to turn this on/off globally
- //if (ob->pose->flag & POSE_RECALCPATHS)
- // pose_recalculate_paths(ob);
- }
- else {
- bCommonKeySrc *cks;
-
- /* loop over bases (as seen in sources) */
- for (cks= sources->first; cks; cks= cks->next) {
- Object *ob= (Object *)cks->id;
-
- /* simply set recalc flag */
- ob->recalc |= OB_RECALC_OB;
- }
- }
- }
- break;
- }
-}
-
-/* flush refreshes after undo */
-static void commonkey_context_refresh (bContext *C)
-{
- ScrArea *curarea= CTX_wm_area(C);
-
- /* check view type */
- switch (curarea->spacetype) {
- /* 3d view - first one tested as most often used */
- case SPACE_VIEW3D:
- {
- /* do refreshes */
- ED_anim_dag_flush_update(C);
- }
- break;
-
- /* buttons window */
- case SPACE_BUTS:
- {
- //allspace(REMAKEIPO, 0);
- //allqueue(REDRAWVIEW3D, 0);
- //allqueue(REDRAWMARKER, 0);
- }
- break;
- }
-}
-
-/* --- */
-
-/* Get the keying set that was chosen by the user from the menu */
-static bKeyingSet *get_keyingset_fromcontext (bKeyingContext *ksc, short index)
-{
- /* check if index is valid */
- if (ELEM(NULL, ksc, ksc->keyingsets))
- return NULL;
- if ((index < 1) || (index > ksc->tot))
- return NULL;
-
- /* index starts from 1, and should directly correspond to keyingset in array */
- return (bKeyingSet *)(ksc->keyingsets + (index - 1));
-}
-
-/* ---------------- Keyframe Management API -------------------- */
-
-/* Display a menu for handling the insertion of keyframes based on the active view */
-void common_modifykey (bContext *C, short mode)
-{
- ListBase dsources = {NULL, NULL};
- bKeyingContext *ksc= NULL;
- bCommonKeySrc *cks;
- bKeyingSet *ks = NULL;
- char *menustr, buf[64];
- short menu_nr;
-
- /* check if mode is valid */
- if (ELEM(mode, COMMONKEY_MODE_INSERT, COMMONKEY_MODE_DELETE)==0)
- return;
-
- /* delegate to other functions or get keyingsets to use
- * - if the current area doesn't have its own handling, there will be data returned...
- */
- commonkey_context_get(C, NULL, mode, &dsources, &ksc);
-
- /* check that there is data to operate on */
- if (ELEM(NULL, dsources.first, ksc)) {
- BLI_freelistN(&dsources);
- return;
- }
-
- /* get menu and process it */
- if (mode == COMMONKEY_MODE_DELETE)
- menustr= build_keyingsets_menu(ksc, "Delete");
- else
- menustr= build_keyingsets_menu(ksc, "Insert");
- // XXX: this goes to the invoke!
- //menu_nr= pupmenu(menustr);
- //if (menustr) MEM_freeN(menustr);
- menu_nr = -1; // XXX for now
-
- /* no item selected or shapekey entry? */
- if (menu_nr < 1) {
- /* free temp sources */
- BLI_freelistN(&dsources);
-
- /* check if insert new shapekey */
- // XXX missing function!
- //if ((menu_nr == 0) && (mode == COMMONKEY_MODE_INSERT))
- // insert_shapekey(OBACT);
- //else
- ksc->lastused= NULL;
-
- return;
- }
- else {
- /* try to get keyingset */
- ks= get_keyingset_fromcontext(ksc, menu_nr);
-
- if (ks == NULL) {
- BLI_freelistN(&dsources);
- return;
- }
- }
-
- /* loop over each destination, applying the keying set */
- for (cks= dsources.first; cks; cks= cks->next) {
- short success= 0;
-
- /* special hacks for 'available' option */
- if (ks->flag == -2) {
- IpoCurve *icu= NULL, *icn= NULL;
-
- /* get first IPO-curve */
- if (cks->act && cks->actname) {
- bActionChannel *achan= get_action_channel(cks->act, cks->actname);
-
- // FIXME: what about constraint channels?
- if (achan && achan->ipo)
- icu= achan->ipo->curve.first;
- }
- else if(cks->ipo)
- icu= cks->ipo->curve.first;
-
- /* we get adrcodes directly from IPO curves (see method below...) */
- for (; icu; icu= icn) {
- short flag;
-
- /* get next ipo-curve in case current is deleted */
- icn= icu->next;
-
- /* insert mode or delete mode */
- if (mode == COMMONKEY_MODE_DELETE) {
- /* local flags only add on to global flags */
- flag = 0;
-
- /* delete keyframe */
- success += deletekey(cks->id, ks->blocktype, cks->actname, cks->constname, icu->adrcode, flag);
- }
- else {
- /* local flags only add on to global flags */
- flag = ks->flag;
- if (IS_AUTOKEY_FLAG(AUTOMATKEY)) flag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_FLAG(INSERTNEEDED)) flag |= INSERTKEY_NEEDED;
- // if (IS_AUTOKEY_MODE(EDITKEYS)) flag |= INSERTKEY_REPLACE;
-
- /* insert keyframe */
- success += insertkey(cks->id, ks->blocktype, cks->actname, cks->constname, icu->adrcode, flag);
- }
- }
- }
- else {
- bKS_AdrcodeGetter kag;
- short (*get_next_adrcode)(bKS_AdrcodeGetter *);
- int adrcode;
-
- /* initialise keyingset channel iterator */
- ks_adrcodegetter_init(&kag, ks, cks);
-
- /* get iterator - only one can be in use at a time... the flags should be mutually exclusive in this regard */
- if (ks->flag & COMMONKEY_PCHANROT)
- get_next_adrcode= ks_getnextadrcode_pchanrot;
- else if (ks->flag & COMMONKEY_ADDMAP)
- get_next_adrcode= ks_getnextadrcode_addmap;
- else
- get_next_adrcode= ks_getnextadrcode_default;
-
- /* loop over channels available in keyingset */
- for (adrcode= get_next_adrcode(&kag); adrcode > 0; adrcode= get_next_adrcode(&kag)) {
- short flag;
-
- /* insert mode or delete mode */
- if (mode == COMMONKEY_MODE_DELETE) {
- /* local flags only add on to global flags */
- flag = 0;
- //flag &= ~COMMONKEY_MODES;
-
- /* delete keyframe */
- success += deletekey(cks->id, ks->blocktype, cks->actname, cks->constname, adrcode, flag);
- }
- else {
- /* local flags only add on to global flags */
- flag = ks->flag;
- if (IS_AUTOKEY_FLAG(AUTOMATKEY)) flag |= INSERTKEY_MATRIX;
- if (IS_AUTOKEY_FLAG(INSERTNEEDED)) flag |= INSERTKEY_NEEDED;
- // if (IS_AUTOKEY_MODE(EDITKEYS)) flag |= INSERTKEY_REPLACE;
- flag &= ~COMMONKEY_MODES;
-
- /* insert keyframe */
- success += insertkey(cks->id, ks->blocktype, cks->actname, cks->constname, adrcode, flag);
- }
- }
- }
-
- /* special handling for some key-sources */
- if (success) {
- /* set pose recalc-paths flag */
- if (cks->pchan) {
- Object *ob= (Object *)cks->id;
- bPoseChannel *pchan= cks->pchan;
-
- /* set flag to trigger path recalc */
- if (pchan->path)
- ob->pose->flag |= POSE_RECALCPATHS;
-
- /* clear unkeyed flag (it doesn't matter if it's set or not) */
- // XXX old animation system
- //if (pchan->bone)
- // pchan->bone->flag &= ~BONE_UNKEYED;
- }
-
- // XXX for new system, need to remove overrides
- }
- }
-
- /* apply post-keying flushes for this data sources */
- commonkey_context_finish(C, &dsources);
-
- /* free temp data */
- BLI_freelistN(&dsources);
-
- /* queue updates for contexts */
- commonkey_context_refresh(C);
-}
-
#endif // XXX old keyingsets code based on adrcodes... to be restored in due course
/* Given a KeyingSet and context info (if required), modify keyframes for the channels specified
@@ -2224,6 +1885,34 @@ static int commonkey_modifykey (ListBase *dsources, KeyingSet *ks, short mode, f
return success;
}
+
+/* Polling callback for use with ANIM_*_keyframe() operators
+ * This is based on the standard ED_operator_areaactive callback,
+ * except that it does special checks for a few spacetypes too...
+ */
+static int modify_key_op_poll(bContext *C)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ Scene *scene= CTX_data_scene(C);
+
+ /* if no area or active scene */
+ if (ELEM(NULL, sa, scene))
+ return 0;
+
+ /* if Outliner, only allow in DataBlocks view */
+ if (sa->spacetype == SPACE_OOPS) {
+ SpaceOops *so= (SpaceOops *)CTX_wm_space_data(C);
+
+ if ((so->type != SO_OUTLINER) || (so->outlinevis != SO_DATABLOCKS))
+ return 0;
+ }
+
+ /* TODO: checks for other space types can be added here */
+
+ /* should be fine */
+ return 1;
+}
+
/* Insert Key Operator ------------------------ */
/* NOTE:
@@ -2232,7 +1921,7 @@ static int commonkey_modifykey (ListBase *dsources, KeyingSet *ks, short mode, f
*
* -- Joshua Leung, Feb 2009
*/
-
+
static int insert_key_exec (bContext *C, wmOperator *op)
{
ListBase dsources = {NULL, NULL};
@@ -2275,7 +1964,7 @@ void ANIM_OT_insert_keyframe (wmOperatorType *ot)
/* callbacks */
ot->exec= insert_key_exec;
- ot->poll= ED_operator_areaactive;
+ ot->poll= modify_key_op_poll;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -2332,8 +2021,7 @@ void ANIM_OT_delete_keyframe (wmOperatorType *ot)
/* callbacks */
ot->exec= delete_key_exec;
-
- ot->poll= ED_operator_areaactive;
+ ot->poll= modify_key_op_poll;
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
@@ -2454,7 +2142,7 @@ static int insert_key_old_exec (bContext *C, wmOperator *op)
success+= insertkey(id, "Object Transforms", "rotation", 1, cfra, 0);
success+= insertkey(id, "Object Transforms", "rotation", 2, cfra, 0);
break;
- case 1: /* object location */
+ default: /* object location */
success+= insertkey(id, "Object Transforms", "location", 0, cfra, 0);
success+= insertkey(id, "Object Transforms", "location", 1, cfra, 0);
success+= insertkey(id, "Object Transforms", "location", 2, cfra, 0);
@@ -2473,13 +2161,13 @@ static int insert_key_old_exec (bContext *C, wmOperator *op)
char buf[512];
switch (mode) {
- case 6: /* pchan scale */
+ case 7: /* pchan scale */
sprintf(buf, "pose.pose_channels[\"%s\"].scale", pchan->name);
success+= insertkey(id, pchan->name, buf, 0, cfra, 0);
success+= insertkey(id, pchan->name, buf, 1, cfra, 0);
success+= insertkey(id, pchan->name, buf, 2, cfra, 0);
break;
- case 5: /* pchan rotation */
+ case 6: /* pchan rotation */
if (pchan->rotmode == PCHAN_ROT_QUAT) {
sprintf(buf, "pose.pose_channels[\"%s\"].rotation", pchan->name);
success+= insertkey(id, pchan->name, buf, 0, cfra, 0);
diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h
index 6ca92f35644..9f50bb3f044 100644
--- a/source/blender/editors/armature/armature_intern.h
+++ b/source/blender/editors/armature/armature_intern.h
@@ -45,6 +45,10 @@ void ARMATURE_OT_de_select_all(struct wmOperatorType *ot);
void ARMATURE_OT_selection_invert(struct wmOperatorType *ot);
void ARMATURE_OT_select_hierarchy(struct wmOperatorType *ot);
void ARMATURE_OT_select_connected(struct wmOperatorType *ot);
+void ARMATURE_OT_delete_selected(struct wmOperatorType *ot);
+void ARMATURE_OT_duplicate_selected(struct wmOperatorType *ot);
+void ARMATURE_OT_extrude(struct wmOperatorType *ot);
+void ARMATURE_OT_click_extrude(struct wmOperatorType *ot);
void POSE_OT_hide(struct wmOperatorType *ot);
void POSE_OT_reveal(struct wmOperatorType *ot);
diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c
index 12554c8492f..e80d4d017d9 100644
--- a/source/blender/editors/armature/armature_ops.c
+++ b/source/blender/editors/armature/armature_ops.c
@@ -124,6 +124,11 @@ void ED_operatortypes_armature(void)
WM_operatortype_append(ARMATURE_OT_selection_invert);
WM_operatortype_append(ARMATURE_OT_select_hierarchy);
WM_operatortype_append(ARMATURE_OT_select_connected);
+
+ WM_operatortype_append(ARMATURE_OT_delete_selected);
+ WM_operatortype_append(ARMATURE_OT_duplicate_selected);
+ WM_operatortype_append(ARMATURE_OT_extrude);
+ WM_operatortype_append(ARMATURE_OT_click_extrude);
/* POSE */
WM_operatortype_append(POSE_OT_hide);
@@ -185,6 +190,12 @@ void ED_keymap_armature(wmWindowManager *wm)
RNA_boolean_set(kmi->ptr, "add_to_sel", 1);
WM_keymap_add_item(keymap, "ARMATURE_OT_select_connected", LKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_delete_selected", XKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_selected", DKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_extrude", EKEY, KM_PRESS, 0, 0);
+ kmi= WM_keymap_add_item(keymap, "ARMATURE_OT_extrude", EKEY, KM_PRESS, KM_SHIFT, 0);
+ RNA_boolean_set(kmi->ptr, "forked", 1);
+ WM_keymap_add_item(keymap, "ARMATURE_OT_click_extrude", LEFTMOUSE, KM_PRESS, KM_CTRL, 0);
/* Pose ------------------------ */
/* only set in posemode, by space_view3d listener */
diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c
index 3d8753d3ade..021f87ea663 100644
--- a/source/blender/editors/armature/editarmature.c
+++ b/source/blender/editors/armature/editarmature.c
@@ -74,6 +74,7 @@
#include "PIL_time.h"
#include "BIF_gl.h"
+#include "BIF_transform.h"
#include "RNA_access.h"
#include "RNA_define.h"
@@ -678,7 +679,7 @@ int join_armature(Scene *scene, View3D *v3d)
/* Ensure we're not in editmode and that the active object is an armature*/
if (ob->type!=OB_ARMATURE) return 0;
- if(arm->edbo) return 0;
+ if (arm->edbo) return 0;
if (object_data_is_libdata(ob)) {
error_libdata();
@@ -1172,7 +1173,6 @@ static void bone_setflag (int *bone, int flag, short mode)
*bone &= ~flag;
else
*bone ^= flag;
-
}
else {
if (mode == 2)
@@ -1585,15 +1585,22 @@ EditBone *ED_armature_bone_get_mirrored(ListBase *edbo, EditBone *ebo)
return eboflip;
}
+
+/* previously delete_armature */
/* only editmode! */
-void delete_armature(Scene *scene)
+static int armature_delete_selected_exec(bContext *C, wmOperator *op)
{
- Object *obedit= scene->obedit; // XXX get from context
- bArmature *arm= obedit->data;
+ bArmature *arm;
EditBone *curBone, *next;
bConstraint *con;
-
- if (okee("Erase selected bone(s)")==0) return;
+ Object *obedit= CTX_data_edit_object(C); // XXX get from context
+ arm = obedit->data;
+
+ /* cancel if nothing selected */
+ if (CTX_DATA_COUNT(C, selected_bones) == 0)
+ return OPERATOR_CANCELLED;
+
+ /* if (okee("Erase selected bone(s)")==0) return; */
/* Select mirrored bones */
if (arm->flag & ARM_MIRROR_EDIT) {
@@ -1659,8 +1666,25 @@ void delete_armature(Scene *scene)
armature_sync_selection(arm->edbo);
+
+ WM_event_add_notifier(C, NC_OBJECT, obedit);
+
+ return OPERATOR_FINISHED;
+}
+
+void ARMATURE_OT_delete_selected(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Delete Selected Bone(s)";
+ ot->idname= "ARMATURE_OT_delete_selected";
+
+ /* api callbacks */
+ ot->invoke = WM_operator_confirm;
+ ot->exec = armature_delete_selected_exec;
+ ot->poll = ED_operator_editarmature;
- BIF_undo_push("Delete bone(s)");
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
/* toggle==0: deselect
@@ -2087,7 +2111,8 @@ static EditBone *add_editbone(Object *obedit, char *name)
return bone;
}
-static void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d, short newob)
+/* v3d and rv3d are allowed to be NULL */
+void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d)
{
Object *obedit= scene->obedit; // XXX get from context
float obmat[3][3], curs[3], viewmat[3][3], totmat[3][3], imat[3][3];
@@ -2099,7 +2124,7 @@ static void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d, sh
Mat4Invert(obedit->imat, obedit->obmat);
Mat4MulVecfl(obedit->imat, curs);
- if ( !(newob) || (U.flag & USER_ADD_VIEWALIGNED) )
+ if (rv3d && (U.flag & USER_ADD_VIEWALIGNED))
Mat3CpyMat4(obmat, rv3d->viewmat);
else Mat3One(obmat);
@@ -2114,60 +2139,30 @@ static void add_primitive_bone(Scene *scene, View3D *v3d, RegionView3D *rv3d, sh
VECCOPY(bone->head, curs);
- if ( !(newob) || (U.flag & USER_ADD_VIEWALIGNED) )
+ if ( (U.flag & USER_ADD_VIEWALIGNED) )
VecAddf(bone->tail, bone->head, imat[1]); // bone with unit length 1
else
VecAddf(bone->tail, bone->head, imat[2]); // bone with unit length 1, pointing up Z
}
-void add_primitiveArmature(Scene *scene, View3D *v3d, int type)
-{
- RegionView3D *rv3d= NULL; // XXX get from context
- Object *obedit= scene->obedit; // XXX get from context
- short newob=0;
-
- if(scene->id.lib) return;
-
- G.f &= ~(G_VERTEXPAINT+G_TEXTUREPAINT+G_WEIGHTPAINT+G_SCULPTMODE);
-// setcursor_space(SPACE_VIEW3D, CURSOR_STD);
-
-// XXX check_editmode(OB_ARMATURE);
-
- /* If we're not the "obedit", make a new object and enter editmode */
- if (obedit==NULL) {
- add_object(scene, OB_ARMATURE);
- ED_object_base_init_from_view(NULL, BASACT); // XXX NULL is C
- obedit= BASACT->object;
-
- where_is_object(scene, obedit);
-
- ED_armature_to_edit(obedit);
-// setcursor_space(SPACE_VIEW3D, CURSOR_EDIT);
- newob=1;
- }
-
- /* no primitive support yet */
- add_primitive_bone(scene, v3d, rv3d, newob);
-
- //armature_sync_selection(arm->edbo); // XXX which armature?
-
- if ((newob) && !(U.flag & USER_ADD_EDITMODE)) {
- ED_armature_from_edit(scene, obedit);
- ED_armature_edit_free(obedit);
- }
-
- BIF_undo_push("Add primitive");
-}
+/* previously addvert_armature */
/* the ctrl-click method */
-void addvert_armature(Scene *scene, View3D *v3d)
+static int armature_click_extrude_exec(bContext *C, wmOperator *op)
{
- Object *obedit= scene->obedit; // XXX get from context
- bArmature *arm= obedit->data;
+ View3D *v3d;
+ bArmature *arm;
EditBone *ebone, *newbone, *flipbone;
float *curs, mat[3][3],imat[3][3];
int a, to_root= 0;
+ Object *obedit;
+ Scene *scene;
+
+ scene = CTX_data_scene(C);
+ v3d= CTX_wm_view3d(C);
+ obedit= CTX_data_edit_object(C);
+ arm= obedit->data;
/* find the active or selected bone */
for (ebone = arm->edbo->first; ebone; ebone=ebone->next) {
@@ -2185,7 +2180,7 @@ void addvert_armature(Scene *scene, View3D *v3d)
}
}
if (ebone == NULL)
- return;
+ return OPERATOR_CANCELLED;
to_root= 1;
}
@@ -2239,8 +2234,83 @@ void addvert_armature(Scene *scene, View3D *v3d)
}
armature_sync_selection(arm->edbo);
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, obedit);
+
+ return OPERATOR_FINISHED;
+}
+
+static int armature_click_extrude_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ /* TODO most of this code is copied from set3dcursor_invoke,
+ it would be better to reuse code in set3dcursor_invoke */
+
+ /* temporarily change 3d cursor position */
+ Scene *scene;
+ ARegion *ar;
+ View3D *v3d;
+ RegionView3D *rv3d;
+ float dx, dy, fz, *fp = NULL, dvec[3], oldcurs[3];
+ short mx, my, mval[2];
+ int retv;
+
+ scene= CTX_data_scene(C);
+ ar= CTX_wm_region(C);
+ v3d = CTX_wm_view3d(C);
+ rv3d= CTX_wm_region_view3d(C);
+
+ fp= give_cursor(scene, v3d);
+
+ VECCOPY(oldcurs, fp);
+
+ mx= event->x - ar->winrct.xmin;
+ my= event->y - ar->winrct.ymin;
+ project_short_noclip(ar, fp, mval);
+
+ initgrabz(rv3d, fp[0], fp[1], fp[2]);
+
+ if(mval[0]!=IS_CLIPPED) {
+
+ window_to_3d_delta(ar, dvec, mval[0]-mx, mval[1]-my);
+ VecSubf(fp, fp, dvec);
+ }
+ else {
+
+ dx= ((float)(mx-(ar->winx/2)))*rv3d->zfac/(ar->winx/2);
+ dy= ((float)(my-(ar->winy/2)))*rv3d->zfac/(ar->winy/2);
+
+ fz= rv3d->persmat[0][3]*fp[0]+ rv3d->persmat[1][3]*fp[1]+ rv3d->persmat[2][3]*fp[2]+ rv3d->persmat[3][3];
+ fz= fz/rv3d->zfac;
+
+ fp[0]= (rv3d->persinv[0][0]*dx + rv3d->persinv[1][0]*dy+ rv3d->persinv[2][0]*fz)-rv3d->ofs[0];
+ fp[1]= (rv3d->persinv[0][1]*dx + rv3d->persinv[1][1]*dy+ rv3d->persinv[2][1]*fz)-rv3d->ofs[1];
+ fp[2]= (rv3d->persinv[0][2]*dx + rv3d->persinv[1][2]*dy+ rv3d->persinv[2][2]*fz)-rv3d->ofs[2];
+ }
+
+ /* extrude to the where new cursor is and store the operation result */
+ retv= armature_click_extrude_exec(C, op);
+
+ /* restore previous 3d cursor position */
+ VECCOPY(fp, oldcurs);
+
+ return retv;
+}
+
+void ARMATURE_OT_click_extrude(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Click-Extrude";
+ ot->idname= "ARMATURE_OT_click_extrude";
- BIF_undo_push("Add Bone");
+ /* api callbacks */
+ ot->invoke = armature_click_extrude_invoke;
+ ot->exec = armature_click_extrude_exec;
+ ot->poll = ED_operator_editarmature;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* props */
}
/* adds an EditBone between the nominated locations (should be in the right space) */
@@ -2320,14 +2390,20 @@ static void update_dup_subtarget(Object *obedit, EditBone *dupBone)
}
}
-
-void adduplicate_armature(Scene *scene)
+/* previously adduplicate_armature */
+static int armature_duplicate_selected_exec(bContext *C, wmOperator *op)
{
- Object *obedit= scene->obedit; // XXX get from context
- bArmature *arm= obedit->data;
+ bArmature *arm;
EditBone *eBone = NULL;
EditBone *curBone;
EditBone *firstDup=NULL; /* The beginning of the duplicated bones in the edbo list */
+
+ Object *obedit= CTX_data_edit_object(C);
+ arm= obedit->data;
+
+ /* cancel if nothing selected */
+ if (CTX_DATA_COUNT(C, selected_bones) == 0)
+ return OPERATOR_CANCELLED;
armature_sync_selection(arm->edbo); // XXX why is this needed?
@@ -2351,7 +2427,7 @@ void adduplicate_armature(Scene *scene)
eBone=MEM_callocN(sizeof(EditBone), "addup_editbone");
eBone->flag |= BONE_SELECTED;
- /* Copy data from old bone to new bone */
+ /* Copy data from old bone to new bone */
memcpy(eBone, curBone, sizeof(EditBone));
curBone->temp = eBone;
@@ -2369,7 +2445,7 @@ void adduplicate_armature(Scene *scene)
bPoseChannel *chanold, *channew;
ListBase *listold, *listnew;
- chanold = verify_pose_channel(OBACT->pose, curBone->name);
+ chanold = verify_pose_channel(obedit->pose, curBone->name);
if (chanold) {
listold = &chanold->constraints;
if (listold) {
@@ -2377,7 +2453,7 @@ void adduplicate_armature(Scene *scene)
* yet as the new bones created here are still 'EditBones' not 'Bones'.
*/
channew =
- verify_pose_channel(OBACT->pose, eBone->name);
+ verify_pose_channel(obedit->pose, eBone->name);
if (channew) {
/* copy transform locks */
channew->protectflag = chanold->protectflag;
@@ -2412,43 +2488,74 @@ void adduplicate_armature(Scene *scene)
if (curBone->flag & BONE_SELECTED) {
eBone=(EditBone*) curBone->temp;
- /* If this bone has no parent,
- Set the duplicate->parent to NULL
- */
- if (!curBone->parent)
+ if (!curBone->parent) {
+ /* If this bone has no parent,
+ * Set the duplicate->parent to NULL
+ */
eBone->parent = NULL;
- /* If this bone has a parent that IS selected,
- Set the duplicate->parent to the curBone->parent->duplicate
- */
- else if (curBone->parent->flag & BONE_SELECTED)
+ }
+ else if (curBone->parent->flag & BONE_SELECTED) {
+ /* If this bone has a parent that IS selected,
+ * Set the duplicate->parent to the curBone->parent->duplicate
+ */
eBone->parent= (EditBone *)curBone->parent->temp;
- /* If this bone has a parent that IS not selected,
- Set the duplicate->parent to the curBone->parent
- */
+ }
else {
+ /* If this bone has a parent that IS not selected,
+ * Set the duplicate->parent to the curBone->parent
+ */
eBone->parent=(EditBone*) curBone->parent;
eBone->flag &= ~BONE_CONNECTED;
}
/* Lets try to fix any constraint subtargets that might
- have been duplicated */
+ * have been duplicated
+ */
update_dup_subtarget(obedit, eBone);
}
}
}
/* Deselect the old bones and select the new ones */
-
for (curBone=arm->edbo->first; curBone && curBone!=firstDup; curBone=curBone->next) {
if (EBONE_VISIBLE(arm, curBone))
curBone->flag &= ~(BONE_SELECTED | BONE_TIPSEL | BONE_ROOTSEL | BONE_ACTIVE);
}
+
+ WM_event_add_notifier(C, NC_OBJECT|ND_BONE_SELECT, obedit);
-// XXX BIF_TransformSetUndo("Add Duplicate");
-// initTransform(TFM_TRANSLATION, CTX_NO_PET);
-// Transform();
+ return OPERATOR_FINISHED;
}
+static int armature_duplicate_selected_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ int retv= armature_duplicate_selected_exec(C, op);
+
+ if (retv == OPERATOR_FINISHED) {
+ RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
+ WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+ }
+
+ return retv;
+}
+
+void ARMATURE_OT_duplicate_selected(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Duplicate Selected Bone(s)";
+ ot->idname= "ARMATURE_OT_duplicate_selected";
+
+ /* api callbacks */
+ ot->invoke = armature_duplicate_selected_invoke;
+ ot->exec = armature_duplicate_selected_exec;
+ ot->poll = ED_operator_editarmature;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* to give to transform */
+ RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX);
+}
/* *************** END Adding stuff in editmode *************** */
@@ -2909,15 +3016,20 @@ void show_all_armature_bones(Scene *scene)
BIF_undo_push("Reveal Bones");
}
+/* previously extrude_armature */
/* context; editmode armature */
/* if forked && mirror-edit: makes two bones with flipped names */
-void extrude_armature(Scene *scene, int forked)
+static int armature_extrude_exec(bContext *C, wmOperator *op)
{
- Object *obedit= scene->obedit; // XXX get from context
- bArmature *arm= obedit->data;
+ Object *obedit;
+ bArmature *arm;
EditBone *newbone, *ebone, *flipbone, *first=NULL;
int a, totbone= 0, do_extrude;
-
+ int forked = RNA_boolean_get(op->ptr, "forked");
+
+ obedit= CTX_data_edit_object(C);
+ arm= obedit->data;
+
/* since we allow root extrude too, we have to make sure selection is OK */
for (ebone = arm->edbo->first; ebone; ebone=ebone->next) {
if (EBONE_VISIBLE(arm, ebone)) {
@@ -3029,13 +3141,44 @@ void extrude_armature(Scene *scene, int forked)
}
/* if only one bone, make this one active */
if (totbone==1 && first) first->flag |= BONE_ACTIVE;
+
+ if (totbone==0) return OPERATOR_CANCELLED;
/* Transform the endpoints */
armature_sync_selection(arm->edbo);
-// XXX BIF_TransformSetUndo("Extrude");
-// initTransform(TFM_TRANSLATION, CTX_NO_PET);
-// Transform();
+
+ return OPERATOR_FINISHED;
+}
+
+static int armature_extrude_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ if (OPERATOR_CANCELLED == armature_extrude_exec(C, op))
+ return OPERATOR_CANCELLED;
+
+ RNA_int_set(op->ptr, "mode", TFM_TRANSLATION);
+ WM_operator_name_call(C, "TFM_OT_transform", WM_OP_INVOKE_REGION_WIN, op->ptr);
+
+ return OPERATOR_FINISHED;
+}
+
+void ARMATURE_OT_extrude(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Extrude";
+ ot->idname= "ARMATURE_OT_extrude";
+
+ /* api callbacks */
+ ot->invoke= armature_extrude_invoke;
+ ot->exec= armature_extrude_exec;
+ ot->poll= ED_operator_editarmature;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+ /* props */
+ RNA_def_boolean(ot->srna, "forked", 0, "Forked", "");
+ /* to give to transform */
+ RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX);
}
/* ********************** Bone Add ********************/
@@ -3356,6 +3499,8 @@ void ARMATURE_OT_switch_direction(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
/* ***************** Parenting *********************** */
+
+/* armature parenting options */
#define ARM_PAR_CONNECT 1
#define ARM_PAR_OFFSET 2
@@ -3465,14 +3610,19 @@ static int armature_parent_set_exec(bContext *C, wmOperator *op)
/* Parent 'selected' bones to the active one
* - the context iterator contains both selected bones and their mirrored copies,
* so we assume that unselected bones are mirrored copies of some selected bone
+ * - since the active one (and/or its mirror) will also be selected, we also need
+ * to check that we are not trying to opearate on them, since such an operation
+ * would cause errors
*/
- /* align selected bones to the active one */
+ /* parent selected bones to the active one */
CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) {
- if (ebone->flag & BONE_SELECTED)
- bone_connect_to_new_parent(arm->edbo, ebone, actbone, val);
- else
- bone_connect_to_new_parent(arm->edbo, ebone, actmirb, val);
+ if (ELEM(ebone, actbone, actmirb) == 0) {
+ if (ebone->flag & BONE_SELECTED)
+ bone_connect_to_new_parent(arm->edbo, ebone, actbone, val);
+ else
+ bone_connect_to_new_parent(arm->edbo, ebone, actmirb, val);
+ }
}
CTX_DATA_END;
}
@@ -3831,14 +3981,19 @@ static int armature_align_bones_exec(bContext *C, wmOperator *op)
/* Align 'selected' bones to the active one
* - the context iterator contains both selected bones and their mirrored copies,
* so we assume that unselected bones are mirrored copies of some selected bone
+ * - since the active one (and/or its mirror) will also be selected, we also need
+ * to check that we are not trying to opearate on them, since such an operation
+ * would cause errors
*/
/* align selected bones to the active one */
CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) {
- if (ebone->flag & BONE_SELECTED)
- bone_align_to_bone(arm->edbo, ebone, actbone);
- else
- bone_align_to_bone(arm->edbo, ebone, actmirb);
+ if (ELEM(ebone, actbone, actmirb) == 0) {
+ if (ebone->flag & BONE_SELECTED)
+ bone_align_to_bone(arm->edbo, ebone, actbone);
+ else
+ bone_align_to_bone(arm->edbo, ebone, actmirb);
+ }
}
CTX_DATA_END;
}
diff --git a/source/blender/editors/curve/curve_intern.h b/source/blender/editors/curve/curve_intern.h
index 68223633011..bb7a5b500a7 100644
--- a/source/blender/editors/curve/curve_intern.h
+++ b/source/blender/editors/curve/curve_intern.h
@@ -44,7 +44,6 @@ enum { LINE_BEGIN, LINE_END, PREV_CHAR, NEXT_CHAR, PREV_WORD, NEXT_WORD,
void FONT_OT_insert_text(struct wmOperatorType *ot);
void FONT_OT_line_break(struct wmOperatorType *ot);
void FONT_OT_insert_lorem(struct wmOperatorType *ot);
-void FONT_OT_text_to_object(struct wmOperatorType *ot);
void FONT_OT_toggle_case(struct wmOperatorType *ot);
void FONT_OT_set_case(struct wmOperatorType *ot);
diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c
index 8989d8720eb..a53acb2e9b7 100644
--- a/source/blender/editors/curve/curve_ops.c
+++ b/source/blender/editors/curve/curve_ops.c
@@ -99,7 +99,6 @@ void ED_operatortypes_curve(void)
WM_operatortype_append(FONT_OT_insert_text);
WM_operatortype_append(FONT_OT_line_break);
WM_operatortype_append(FONT_OT_insert_lorem);
- WM_operatortype_append(FONT_OT_text_to_object);
WM_operatortype_append(FONT_OT_toggle_case);
WM_operatortype_append(FONT_OT_set_case);
diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c
index edc1f8aecae..722dfcdbd1d 100644
--- a/source/blender/editors/curve/editfont.c
+++ b/source/blender/editors/curve/editfont.c
@@ -463,182 +463,96 @@ void FONT_OT_paste_buffer(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
-/******************* XXX text to object operator ********************/
+/******************* text to object operator ********************/
-static void txt_export_to_object(Scene *scene, Object *obedit, Text *text)
+static void txt_add_object(bContext *C, TextLine *firstline, int totline, float offset[3])
{
- ID *id;
+ Scene *scene= CTX_data_scene(C);
Curve *cu;
+ Object *obedit;
+ Base *base;
struct TextLine *tmp;
- int nchars = 0;
-// char sdir[FILE_MAXDIR];
-// char sfile[FILE_MAXFILE];
-
- if(!text || !text->lines.first) return;
+ int nchars = 0, a;
- id = (ID *)text;
+ obedit= add_object(scene, OB_FONT);
+ base= scene->basact;
- if(obedit && obedit->type==OB_FONT) return;
-// XXX check_editmode(OB_FONT);
-
- add_object(scene, OB_FONT);
-
- ED_object_base_init_from_view(NULL, BASACT); // XXX
- obedit= BASACT->object;
+ ED_object_base_init_from_view(C, base);
where_is_object(scene, obedit);
- cu= obedit->data;
-
-/*
-// renames object, careful with long filenames.
+ obedit->loc[0] += offset[0];
+ obedit->loc[1] += offset[1];
+ obedit->loc[2] += offset[2];
- if(text->name) {
- //ID *find_id(char *type, char *name)
- BLI_split_dirfile(text->name, sdir, sfile);
-// rename_id((ID *)obedit, sfile);
- rename_id((ID *)cu, sfile);
- id->us++;
- }
-*/
+ cu= obedit->data;
cu->vfont= get_builtin_font();
cu->vfont->id.us++;
- tmp= text->lines.first;
- while(cu->len<MAXTEXT && tmp) {
+ for(tmp=firstline, a=0; cu->len<MAXTEXT && a<totline; tmp=tmp->next, a++)
nchars += strlen(tmp->line) + 1;
- tmp = tmp->next;
- }
if(cu->str) MEM_freeN(cu->str);
if(cu->strinfo) MEM_freeN(cu->strinfo);
- cu->str= MEM_mallocN(nchars+4, "str");
+ cu->str= MEM_callocN(nchars+4, "str");
cu->strinfo= MEM_callocN((nchars+4)*sizeof(CharInfo), "strinfo");
- cu->totbox= cu->actbox= 1;
- cu->tb= MEM_callocN(MAXTEXTBOX*sizeof(TextBox), "textbox");
- cu->tb[0].w = cu->tb[0].h = 0.0;
+
+ cu->str[0]= '\0';
+ cu->len= 0;
+ cu->pos= 0;
- tmp= text->lines.first;
- strcpy(cu->str, tmp->line);
- cu->len= strlen(tmp->line);
- cu->pos= cu->len;
+ for(tmp=firstline, a=0; cu->len<MAXTEXT && a<totline; tmp=tmp->next, a++) {
+ strcat(cu->str, tmp->line);
+ cu->len+= strlen(tmp->line);
- tmp= tmp->next;
+ if(tmp->next) {
+ strcat(cu->str, "\n");
+ cu->len++;
+ }
- while(cu->len<MAXTEXT && tmp) {
- strcat(cu->str, "\n");
- strcat(cu->str, tmp->line);
- cu->len+= strlen(tmp->line) + 1;
cu->pos= cu->len;
- tmp= tmp->next;
}
- make_editText(obedit);
- ED_object_exit_editmode(NULL, EM_FREEDATA|EM_WAITCURSOR); // XXX
+ WM_event_add_notifier(C, NC_OBJECT|NA_ADDED, obedit);
}
-static void txt_export_to_objects(Scene *scene, Object *obedit, Text *text)
+void ED_text_to_object(bContext *C, Text *text, int split_lines)
{
- RegionView3D *rv3d= NULL; // XXX
- ID *id;
- Curve *cu;
- struct TextLine *curline;
- int nchars;
- int linenum = 0;
- float offset[3] = {0.0,0.0,0.0};
+ RegionView3D *rv3d= CTX_wm_region_view3d(C);
+ TextLine *line;
+ float offset[3];
+ int linenum= 0;
if(!text || !text->lines.first) return;
- id = (ID *)text;
-
- if(obedit && obedit->type==OB_FONT) return;
-// XXX check_editmode(OB_FONT);
-
- curline = text->lines.first;
- while(curline){
- /*skip lines with no text, but still make space for them*/
- if(curline->line[0] == '\0'){
- linenum++;
- curline = curline->next;
- continue;
- }
-
- nchars = 0;
- add_object(scene, OB_FONT);
-
- ED_object_base_init_from_view(NULL, BASACT); // XXX
- obedit= BASACT->object;
- where_is_object(scene, obedit);
-
- /* Do the translation */
- offset[0] = 0;
- offset[1] = -linenum;
- offset[2] = 0;
-
- Mat4Mul3Vecfl(rv3d->viewinv, offset);
-
- obedit->loc[0] += offset[0];
- obedit->loc[1] += offset[1];
- obedit->loc[2] += offset[2];
- /* End Translation */
-
- cu= obedit->data;
-
- cu->vfont= get_builtin_font();
- cu->vfont->id.us++;
-
- nchars = strlen(curline->line) + 1;
+ if(split_lines) {
+ for(line=text->lines.first; line; line=line->next) {
+ /* skip lines with no text, but still make space for them */
+ if(line->line[0] == '\0') {
+ linenum++;
+ continue;
+ }
- if(cu->str) MEM_freeN(cu->str);
- if(cu->strinfo) MEM_freeN(cu->strinfo);
+ /* do the translation */
+ offset[0] = 0;
+ offset[1] = -linenum;
+ offset[2] = 0;
- cu->str= MEM_mallocN(nchars+4, "str");
- cu->strinfo= MEM_callocN((nchars+4)*sizeof(CharInfo), "strinfo");
- cu->totbox= cu->actbox= 1;
- cu->tb= MEM_callocN(MAXTEXTBOX*sizeof(TextBox), "textbox");
- cu->tb[0].w = cu->tb[0].h = 0.0;
-
- strcpy(cu->str, curline->line);
- cu->len= strlen(curline->line);
- cu->pos= cu->len;
+ if(rv3d)
+ Mat4Mul3Vecfl(rv3d->viewinv, offset);
- make_editText(obedit);
- ED_object_exit_editmode(NULL, EM_FREEDATA|EM_WAITCURSOR); // XXX
+ txt_add_object(C, line, 1, offset);
- linenum++;
- curline = curline->next;
+ linenum++;
+ }
}
-}
-
-static int text_to_object_exec(bContext *C, wmOperator *op)
-{
- Scene *scene= CTX_data_scene(C);
- Object *obedit= CTX_data_edit_object(C);
- Text *text= NULL; /// XXX retrieve this ..
-
- if(RNA_boolean_get(op->ptr, "split_lines"))
- txt_export_to_objects(scene, obedit, text);
- else
- txt_export_to_object(scene, obedit, text);
-
- return OPERATOR_FINISHED;
-}
-
-void FONT_OT_text_to_object(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Text to Object";
- ot->idname= "FONT_OT_text_to_object";
-
- /* api callbacks */
- ot->exec= text_to_object_exec;
- ot->poll= ED_operator_editfont; // XXX not correct
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+ else {
+ offset[0]= 0.0f;
+ offset[1]= 0.0f;
+ offset[2]= 0.0f;
- /* properties */
- RNA_def_boolean(ot->srna, "split_lines", 0, "Split Lines", "Create one object per line in the text.");
+ txt_add_object(C, text->lines.first, BLI_countlist(&text->lines), offset);
+ }
}
/********************** utilities ***************************/
diff --git a/source/blender/editors/datafiles/bmonofont.ttf.c b/source/blender/editors/datafiles/bmonofont.ttf.c
new file mode 100644
index 00000000000..029ee607bc6
--- /dev/null
+++ b/source/blender/editors/datafiles/bmonofont.ttf.c
@@ -0,0 +1,9681 @@
+/* DataToC output of file <bmonofont_ttf> */
+
+int datatoc_bmonofont_ttf_size= 309588;
+char datatoc_bmonofont_ttf[]= {
+ 0, 1, 0, 0, 0, 18, 1, 0, 0, 4, 0, 32, 70, 70, 84, 77, 76,195, 13,197,
+ 0, 0, 1, 44, 0, 0, 0, 28, 71, 68, 69, 70,107,171,118, 72, 0, 0, 1, 72, 0, 0, 0,174, 71, 80, 79, 83, 85,176, 56, 58,
+ 0, 0, 1,248, 0, 0, 53,184, 71, 83, 85, 66, 11, 72,224,153, 0, 0, 55,176, 0, 0, 4,240, 79, 83, 47, 50,135,252,137,178,
+ 0, 0, 60,160, 0, 0, 0, 86, 99,109, 97,112,173,161, 29,196, 0, 0, 60,248, 0, 0, 20,198, 99,118,116, 32,233,151, 7, 12,
+ 0, 0, 81,192, 0, 0, 2, 48,102,112,103,109, 91, 2,107,223, 0, 0, 83,240, 0, 0, 0,172,103, 97,115,112, 0, 7, 0, 7,
+ 0, 0, 84,156, 0, 0, 0, 12,103,108,121,102, 94, 39,215, 74, 0, 0, 84,168, 0, 3,133, 48,104,101, 97,100,233, 47, 44,226,
+ 0, 3,217,216, 0, 0, 0, 54,104,104,101, 97, 8,183, 2, 7, 0, 3,218, 16, 0, 0, 0, 36,104,109,116,120,224, 90,223, 8,
+ 0, 3,218, 52, 0, 0, 23,172,108,111, 99, 97, 19,189,108,128, 0, 3,241,224, 0, 0, 47, 76,109, 97,120,112, 17,120, 9,216,
+ 0, 4, 33, 44, 0, 0, 0, 32,110, 97,109,101, 96,229,233,137, 0, 4, 33, 76, 0, 0, 33, 21,112,111,115,116,106, 10,163,233,
+ 0, 4, 66,100, 0, 0,111,212,112,114,101,112, 58,199,192, 7, 0, 4,178, 56, 0, 0, 7, 27, 0, 0, 0, 1, 0, 0, 0, 0,
+196, 21,105, 4, 0, 0, 0, 0,196, 86,210, 96, 0, 0, 0, 0,196, 86,210, 96, 0, 1, 0, 0, 0, 12, 0, 0, 0,166, 0, 0,
+ 0, 2, 0, 25, 0, 3, 2,123, 0, 1, 2,124, 2,141, 0, 3, 2,142, 2,142, 0, 1, 2,143, 2,149, 0, 3, 2,150, 2,151,
+ 0, 1, 2,152, 2,156, 0, 3, 2,157, 2,158, 0, 1, 2,159, 2,163, 0, 3, 2,164, 2,164, 0, 1, 2,165, 2,173, 0, 3,
+ 2,174, 2,180, 0, 1, 2,181, 2,186, 0, 3, 2,187, 2,187, 0, 1, 2,188, 2,188, 0, 3, 2,189, 4, 3, 0, 1, 4, 4,
+ 4, 15, 0, 3, 4, 16, 4,100, 0, 1, 4,101, 4,101, 0, 3, 4,102, 4,103, 0, 1, 4,104, 4,117, 0, 3, 4,118, 10,148,
+ 0, 1, 10,149, 10,150, 0, 2, 10,151, 11, 98, 0, 1, 11, 99, 11,106, 0, 2, 11,107, 11,209, 0, 1, 0, 4, 0, 0, 0, 2,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 10, 0,164, 0,236, 0, 6, 97,114, 97, 98, 0, 38, 99,121,114,108, 0, 52,100,102,108,116,
+ 0, 70,103,114,101,107, 0, 80,108, 97,111, 32, 0, 92,108, 97,116,110, 0,106, 0, 4, 0, 0, 0, 0,255,255, 0, 2, 0, 0,
+ 0, 3, 0, 10, 0, 1, 83, 82, 66, 32, 0, 10, 0, 0,255,255, 0, 1, 0, 1, 0, 4, 0, 0, 0, 0,255,255, 0, 0, 0, 4,
+ 0, 0, 0, 0,255,255, 0, 1, 0, 1, 0, 4, 0, 0, 0, 0,255,255, 0, 2, 0, 2, 0, 4, 0, 40, 0, 6, 73, 83, 77, 32,
+ 0, 40, 75, 83, 77, 32, 0, 40, 76, 83, 77, 32, 0, 40, 78, 83, 77, 32, 0, 40, 83, 75, 83, 32, 0, 40, 83, 83, 77, 32, 0, 40,
+ 0, 0,255,255, 0, 1, 0, 1, 0, 5,109, 97,114,107, 0, 32,109, 97,114,107, 0, 44,109, 97,114,107, 0, 52,109,107,109,107,
+ 0, 58,114,116, 98,100, 0, 66, 0, 0, 0, 4, 0, 2, 0, 3, 0, 4, 0, 5, 0, 0, 0, 2, 0, 6, 0, 7, 0, 0, 0, 1,
+ 0, 8, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 1, 0, 9, 0, 10, 0, 22, 0, 30, 0, 38, 0, 46, 0, 54, 0, 62, 0, 70,
+ 0, 80, 0, 88, 0, 96, 0, 6, 0, 1, 0, 1, 0, 82, 0, 6, 0, 1, 0, 1, 0,120, 0, 5, 0, 1, 0, 1, 0,192, 0, 4,
+ 0, 1, 0, 1, 1,154, 0, 5, 0, 1, 0, 1, 9,118, 0, 4, 0, 1, 0, 1, 10,152, 0, 4, 0, 0, 0, 2, 18,114, 27, 2,
+ 0, 1, 0, 0, 0, 1, 49,196, 0, 4, 0, 0, 0, 1, 49,236, 0, 1, 0, 8, 0, 1, 52, 84, 0, 1, 0, 28, 0, 22, 0, 1,
+ 0, 34, 0, 12, 0, 1, 0, 4, 0, 1, 2,112,253,228, 0, 1, 0, 1, 4, 14, 0, 1, 0, 1, 4, 9, 0, 1, 0, 0, 0, 6,
+ 0, 1, 2,104, 0, 0, 0, 1, 0, 38, 0, 30, 0, 1, 0, 48, 0, 12, 0, 2, 0, 6, 0, 12, 0, 1, 2, 99, 7, 34, 0, 1,
+ 2, 99, 6,224, 0, 1, 0, 2, 4, 10, 4, 13, 0, 1, 0, 3, 4, 7, 4, 8, 4, 11, 0, 3, 0, 0, 0, 14, 0, 0, 0, 20,
+ 0, 0, 0, 26, 0, 1, 2, 93, 4,106, 0, 1, 2, 93, 4,106, 0, 1, 2, 98, 4,106, 0, 1, 0,184, 0,174, 0, 1, 0,194,
+ 0, 12, 0, 8, 0, 18, 0, 36, 0, 54, 0, 72, 0, 90, 0,108, 0,126, 0,144, 0, 2, 0, 6, 0, 12, 0, 1, 3,224, 0, 80,
+ 0, 1, 3,124, 0, 72, 0, 2, 0, 6, 0, 12, 0, 1, 3, 48,255,224, 0, 1, 2,172,255,220, 0, 2, 0, 6, 0, 12, 0, 1,
+ 3,224, 0, 80, 0, 1, 3,124, 0, 72, 0, 2, 0, 6, 0, 12, 0, 1, 3, 60,255,136, 0, 1, 2, 80,255,132, 0, 2, 0, 6,
+ 0, 12, 0, 1, 3,168, 0, 44, 0, 1, 1, 32,253,220, 0, 2, 0, 6, 0, 12, 0, 1, 3, 84,255, 96, 0, 1, 1, 12,253,220,
+ 0, 2, 0, 6, 0, 12, 0, 1, 3,224, 0, 80, 0, 1, 3,124, 0, 72, 0, 2, 0, 6, 0, 12, 0, 1, 2, 12,255,164, 0, 1,
+ 3, 16, 0, 32, 0, 2, 0, 1, 11, 99, 11,106, 0, 0, 0, 1, 0, 3, 4, 6, 4, 9, 4, 14, 0, 3, 0, 0, 0, 14, 0, 0,
+ 0, 20, 0, 0, 0, 26, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 7,186, 7,110, 0, 1,
+ 7,196, 0, 12, 0,236, 1,218, 1,224, 1,230, 1,236, 1,242, 1,248, 1,254, 2, 4, 2, 10, 2, 16, 2, 22, 2, 28, 2, 34,
+ 2, 40, 2, 46, 2, 52, 2, 58, 2, 64, 2, 70, 2, 76, 2, 82, 2, 88, 2, 94, 2,100, 2,106, 2,112, 2,118, 2,124, 2,130,
+ 2,136, 2,142, 2,148, 2,154, 2,160, 2,166, 2,172, 2,178, 2,184, 2,190, 2,196, 2,202, 2,208, 2,214, 2,220, 2,226,
+ 2,232, 2,238, 2,244, 2,250, 3, 0, 3, 6, 3, 12, 3, 18, 3, 24, 3, 30, 3, 36, 3, 42, 3, 48, 3, 54, 3, 60, 3, 66,
+ 3, 72, 3, 78, 3, 84, 3, 90, 3, 96, 3,102, 3,108, 3,114, 3,120, 3,126, 3,132, 3,138, 3,144, 3,150, 3,156, 3,162,
+ 3,168, 3,174, 3,180, 3,186, 3,192, 3,198, 3,204, 3,210, 3,216, 3,222, 3,228, 3,234, 3,240, 3,246, 3,252, 4, 2,
+ 4, 8, 4, 14, 4, 20, 4, 26, 4, 32, 4, 38, 4, 44, 4, 50, 4, 56, 4, 62, 4, 68, 4, 74, 4, 80, 4, 86, 4, 92, 4, 98,
+ 4,104, 4,110, 4,116, 4,122, 4,128, 4,134, 4,140, 4,146, 4,152, 4,158, 4,164, 4,170, 4,176, 4,182, 4,188, 4,194,
+ 4,200, 4,206, 4,212, 4,218, 4,224, 4,230, 4,236, 4,242, 4,248, 4,254, 5, 4, 5, 10, 5, 16, 5, 22, 5, 28, 5, 34,
+ 5, 40, 5, 46, 5, 52, 5, 58, 5, 64, 5, 70, 5, 76, 5, 82, 5, 88, 5, 94, 5,100, 5,106, 5,112, 5,118, 5,124, 5,130,
+ 5,136, 5,142, 5,148, 5,154, 5,160, 5,166, 5,172, 5,178, 5,184, 5,190, 5,196, 5,202, 5,208, 5,214, 5,220, 5,226,
+ 5,232, 5,238, 5,244, 5,250, 6, 0, 6, 6, 6, 12, 6, 18, 6, 24, 6, 30, 6, 36, 6, 42, 6, 48, 6, 54, 6, 60, 6, 66,
+ 6, 72, 6, 78, 6, 84, 6, 90, 6, 96, 6,102, 6,108, 6,114, 6,120, 6,126, 6,132, 6,138, 6,144, 6,150, 6,156, 6,162,
+ 6,168, 6,174, 6,180, 6,186, 6,192, 6,198, 6,204, 6,210, 6,216, 6,222, 6,228, 6,234, 6,240, 6,246, 6,252, 7, 2,
+ 7, 8, 7, 14, 7, 20, 7, 26, 7, 32, 7, 38, 7, 44, 7, 50, 7, 56, 7, 62, 7, 68, 7, 74, 7, 80, 7, 86, 7, 92, 0, 1,
+ 2, 88, 0, 0, 0, 1, 2,100,253,223, 0, 1, 1,212, 2,124, 0, 1, 2,100,255,178, 0, 1, 2,104,254,136, 0, 1, 2, 48,
+255, 96, 0, 1, 2,116,255, 88, 0, 1, 2,116,255, 88, 0, 1, 1,252,253,204, 0, 1, 2, 12,253,208, 0, 1, 2, 60,253,183,
+ 0, 1, 2, 8,255,124, 0, 1, 2, 8,255,140, 0, 1, 2, 48,253,224, 0, 1, 2, 48,253,236, 0, 1, 2,104,254, 76, 0, 1,
+ 2,160,254,132, 0, 1, 3, 40,254,220, 0, 1, 3, 32,254,192, 0, 1, 1, 84,255,112, 0, 1, 1,108,255,120, 0, 1, 2,144,
+253,204, 0, 1, 2,136,253,208, 0, 1, 2, 96,255,120, 0, 1, 2, 60,255, 68, 0, 1, 2, 40,254, 68, 0, 1, 1,252,255,100,
+ 0, 1, 2, 20,254,124, 0, 1, 2,116,255, 88, 0, 1, 2, 76,254, 92, 0, 1, 2, 56,255, 40, 0, 1, 2, 80,253,220, 0, 1,
+ 2, 64,254,180, 0, 1, 2, 64,253,224, 0, 1, 2,116,255, 88, 0, 1, 2,116,255, 88, 0, 1, 2, 52,253,232, 0, 1, 2,120,
+253,208, 0, 1, 2,116,255, 88, 0, 1, 2, 96,253,224, 0, 1, 2,116,255, 88, 0, 1, 2,100,253,236, 0, 1, 2, 68,253,216,
+ 0, 1, 1,244,253,208, 0, 1, 2, 12,253,231, 0, 1, 2, 52,253,220, 0, 1, 2, 52,253,224, 0, 1, 2, 88,253,220, 0, 1,
+ 2, 72,253,224, 0, 1, 2, 46,253,228, 0, 1, 2, 69,253,223, 0, 1, 2, 17,253,227, 0, 1, 1,212,255, 68, 0, 1, 2, 53,
+255,106, 0, 1, 2, 84,255,106, 0, 1, 2, 8,254,110, 0, 1, 2, 96,255, 95, 0, 1, 2, 80,253,220, 0, 1, 2, 13,254,112,
+ 0, 1, 2, 13,254,112, 0, 1, 2,105,253,168, 0, 1, 2, 70,253,168, 0, 1, 2, 87,253,218, 0, 1, 2, 87,253,218, 0, 1,
+ 2,133,253,168, 0, 1, 2, 64,253,168, 0, 1, 2, 84,253,218, 0, 1, 2, 81,253,218, 0, 1, 2, 88,253,168, 0, 1, 2, 58,
+253,168, 0, 1, 2, 66,253,218, 0, 1, 2, 96,253,218, 0, 1, 2,130,255,106, 0, 1, 2, 76,255,106, 0, 1, 2, 91,255,155,
+ 0, 1, 2, 90,255,156, 0, 1, 2, 91,255,106, 0, 1, 2, 73,255,106, 0, 1, 2, 87,255,156, 0, 1, 2, 84,255,156, 0, 1,
+ 2, 76,255,106, 0, 1, 2, 52,255,106, 0, 1, 2, 75,255,156, 0, 1, 2, 93,255,156, 0, 1, 1,212,255, 76, 0, 1, 1,148,
+255, 64, 0, 1, 1,244,255,106, 0, 1, 2, 86,255,106, 0, 1, 1,224,255, 56, 0, 1, 1,136,255, 56, 0, 1, 1,244,255,106,
+ 0, 1, 2, 98,255,106, 0, 1, 2,116,253,168, 0, 1, 2, 92,253,168, 0, 1, 1,172,254, 12, 0, 1, 2, 88,254, 12, 0, 1,
+ 2, 84,253,168, 0, 1, 2, 72,253,168, 0, 1, 1,132,255, 6, 0, 1, 2, 88,255, 6, 0, 1, 2, 84,253,168, 0, 1, 2, 56,
+253,167, 0, 1, 1,184,253,228, 0, 1, 2, 88,254, 12, 0, 1, 2,104,253,168, 0, 1, 2,100,253,168, 0, 1, 1,196,253,228,
+ 0, 1, 2, 88,254, 12, 0, 1, 1,244,254, 12, 0, 1, 1,244,254, 12, 0, 1, 1,244,254, 12, 0, 1, 1,244,254, 12, 0, 1,
+ 2, 63,255,106, 0, 1, 1,198,255,106, 0, 1, 1, 44,255,106, 0, 1, 1, 44,255,106, 0, 1, 2, 84,255, 95, 0, 1, 1,238,
+255,106, 0, 1, 1, 44,255,106, 0, 1, 1, 44,255,106, 0, 1, 2, 84,255,100, 0, 1, 2, 84,255,100, 0, 1, 1,184,255,100,
+ 0, 1, 2, 16,255,100, 0, 1, 2, 76,254,112, 0, 1, 1,152,254,112, 0, 1, 2, 79,254,162, 0, 1, 2, 91,254,162, 0, 1,
+ 2,192, 0, 28, 0, 1, 2,100,253,216, 0, 1, 2,204,253,216, 0, 1, 2, 24,255,128, 0, 1, 2,100,255, 88, 0, 1, 2,100,
+255,120, 0, 1, 2,176,255, 88, 0, 1, 2,100,254,104, 0, 1, 2, 28,254,104, 0, 1, 2, 68,254,140, 0, 1, 2, 88,254,140,
+ 0, 1, 2, 44,255, 76, 0, 1, 2,108,255,132, 0, 1, 2,108,255,132, 0, 1, 2, 84,255,112, 0, 1, 2, 60,255,132, 0, 1,
+ 2, 88,255,124, 0, 1, 2,108,255,132, 0, 1, 2, 72,255,128, 0, 1, 2, 72,255,124, 0, 1, 2, 84,255,116, 0, 1, 2, 0,
+253,144, 0, 1, 2, 0,253,144, 0, 1, 2, 8,254,136, 0, 1, 2, 12,254,108, 0, 1, 2, 0,253,144, 0, 1, 2, 0,253,144,
+ 0, 1, 1, 60,255,132, 0, 1, 1, 84,255,112, 0, 1, 2, 0,253,144, 0, 1, 2, 0,253,144, 0, 1, 1,124,255,128, 0, 1,
+ 1, 68,255, 92, 0, 1, 2, 56,255, 92, 0, 1, 2, 56,255, 92, 0, 1, 2, 56,255, 92, 0, 1, 2, 56,255, 92, 0, 1, 1,188,
+253,192, 0, 1, 1,140,253,189, 0, 1, 1,188,253,192, 0, 1, 1,156,253,188, 0, 1, 1,152,254, 12, 0, 1, 1, 88,254, 16,
+ 0, 1, 1, 44,255,108, 0, 1, 1, 16,255,100, 0, 1, 1, 92,254, 28, 0, 1, 1, 9,254, 24, 0, 1, 1, 44,255,108, 0, 1,
+ 1, 44,255,108, 0, 1, 1,120,254, 20, 0, 1, 1, 68,254, 17, 0, 1, 1, 44,255,108, 0, 1, 1, 44,255,108, 0, 1, 1, 76,
+254, 16, 0, 1, 1, 32,254, 24, 0, 1, 1, 44,255,108, 0, 1, 1, 4,255,108, 0, 1, 0,240,255,108, 0, 1, 0,216,255,108,
+ 0, 1, 0,240,255,108, 0, 1, 0,208,255,112, 0, 1, 0,240,255,108, 0, 1, 0,208,255,104, 0, 1, 0,240,255,108, 0, 1,
+ 0,220,255,108, 0, 1, 1,122,253,215, 0, 1, 1,122,253,215, 0, 1, 1,224,255,147, 0, 1, 2, 94,255,141, 0, 1, 1,122,
+253,215, 0, 1, 1,122,253,215, 0, 1, 1,146,255,159, 0, 1, 2, 94,255,159, 0, 1, 2, 94,255, 45, 0, 1, 2,100,255, 15,
+ 0, 1, 1,158,255,117, 0, 1, 2,106,255,129, 0, 1, 1,224,254, 25, 0, 1, 1,224,253,185, 0, 1, 1, 56,255,141, 0, 1,
+ 2,106,255,129, 0, 1, 2, 58,255, 75, 0, 1, 1,218,255, 81, 0, 1, 0,216,255,129, 0, 1, 0,162,255, 93, 0, 1, 2, 88,
+254,109, 0, 1, 1,254,254, 97, 0, 1, 2,100,255,135, 0, 1, 2,106,255,117, 0, 1, 3, 18,255,117, 0, 1, 2,172,254,163,
+ 0, 1, 2, 70,255, 21, 0, 1, 2, 88,255, 39, 0, 1, 1,254,254, 85, 0, 1, 1,194,253,197, 0, 1, 2, 64,255,129, 0, 1,
+ 2, 76,255,123, 0, 1, 2, 82,255, 75, 0, 1, 2, 82,255,111, 0, 1, 1,176,255, 39, 0, 1, 2, 16,253,210, 0, 1, 2, 76,
+253,233, 0, 1, 2, 4,253,209, 0, 1, 2, 46,254,145, 0, 1, 2, 28,253,173, 0, 1, 1,146,253,188, 0, 1, 2, 58,254,139,
+ 0, 1, 2, 82,254,133, 0, 2, 0, 12, 3,223, 3,223, 0, 0, 3,227, 4, 3, 0, 1, 4, 33, 4, 50, 0, 34, 4, 52, 4, 55,
+ 0, 52, 4, 57, 4, 60, 0, 56, 10,151, 10,210, 0, 60, 10,213, 10,216, 0,120, 10,219, 10,222, 0,124, 10,238, 10,238, 0,128,
+ 10,245, 10,246, 0,129, 10,249, 11, 93, 0,131, 11, 95, 11, 98, 0,232, 0, 1, 0, 3, 4, 6, 4, 9, 4, 14, 0, 3, 0, 0,
+ 0, 14, 0, 0, 0, 20, 0, 0, 0, 26, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 0,184,
+ 0,174, 0, 1, 0,206, 0, 12, 0, 8, 0, 18, 0, 36, 0, 54, 0, 72, 0, 90, 0,108, 0,126, 0,144, 0, 2, 0, 6, 0, 12,
+ 0, 1, 3,156, 6,104, 0, 1, 0,147, 7, 53, 0, 2, 0, 6, 0, 12, 0, 1, 3,156, 6,104, 0, 1, 0, 91, 7, 25, 0, 2,
+ 0, 6, 0, 12, 0, 1, 3,156, 6,104, 0, 1, 0,155, 7,246, 0, 2, 0, 6, 0, 12, 0, 1, 3, 84, 6,108, 0, 1, 0, 43,
+ 7,250, 0, 2, 0, 6, 0, 12, 0, 1, 3,156, 6,104, 0, 1, 0,223, 5,221, 0, 2, 0, 6, 0, 12, 0, 1, 3,156, 6,104,
+ 0, 1, 0,223, 5,221, 0, 2, 0, 6, 0, 12, 0, 1, 3,156, 6,104, 0, 1, 0,223, 5,221, 0, 2, 0, 6, 0, 12, 0, 1,
+ 3, 92, 6,104, 0, 1, 0,159, 5,221, 0, 2, 0, 1, 11, 99, 11,106, 0, 0, 0, 1, 0, 9, 4, 4, 4, 5, 4, 7, 4, 8,
+ 4, 10, 4, 11, 4, 12, 4, 13, 4, 15, 0, 9, 0, 0, 0, 38, 0, 0, 0, 44, 0, 0, 0, 50, 0, 0, 0, 56, 0, 0, 0, 62,
+ 0, 0, 0, 68, 0, 0, 0, 74, 0, 0, 0, 80, 0, 0, 0, 86, 0, 1, 2, 93, 4,106, 0, 1, 2, 93, 4,106, 0, 1, 2, 93,
+ 4,106, 0, 1, 2, 93, 4,106, 0, 1, 2, 93, 4,106, 0, 1, 2, 98, 4,106, 0, 1, 2, 93, 4,106, 0, 1, 2, 93, 4,106,
+ 0, 1, 2,104, 4,176, 0, 1, 7,112, 7, 30, 0, 1, 7,134, 0, 12, 0,226, 1,198, 1,204, 1,210, 1,216, 1,222, 1,228,
+ 1,234, 1,240, 1,246, 1,252, 2, 2, 2, 8, 2, 14, 2, 20, 2, 26, 2, 32, 2, 38, 2, 44, 2, 50, 2, 56, 2, 62, 2, 68,
+ 2, 74, 2, 80, 2, 86, 2, 92, 2, 98, 2,104, 2,110, 2,116, 2,122, 2,128, 2,134, 2,140, 2,146, 2,152, 2,158, 2,164,
+ 2,170, 2,176, 2,182, 2,188, 2,194, 2,200, 2,206, 2,212, 2,218, 2,224, 2,230, 2,236, 2,242, 2,248, 2,254, 3, 4,
+ 3, 10, 3, 16, 3, 22, 3, 28, 3, 34, 3, 40, 3, 46, 3, 52, 3, 58, 3, 64, 3, 70, 3, 76, 3, 82, 3, 88, 3, 94, 3,100,
+ 3,106, 3,112, 3,118, 3,124, 3,130, 3,136, 3,142, 3,148, 3,154, 3,160, 3,166, 3,172, 3,178, 3,184, 3,190, 3,196,
+ 3,202, 3,208, 3,214, 3,220, 3,226, 3,232, 3,238, 3,244, 3,250, 4, 0, 4, 6, 4, 12, 4, 18, 4, 24, 4, 30, 4, 36,
+ 4, 42, 4, 48, 4, 54, 4, 60, 4, 66, 4, 72, 4, 78, 4, 84, 4, 90, 4, 96, 4,102, 4,108, 4,114, 4,120, 4,126, 4,132,
+ 4,138, 4,144, 4,150, 4,156, 4,162, 4,168, 4,174, 4,180, 4,186, 4,192, 4,198, 4,204, 4,210, 4,216, 4,222, 4,228,
+ 4,234, 4,240, 4,246, 4,252, 5, 2, 5, 8, 5, 14, 5, 20, 5, 26, 5, 32, 5, 38, 5, 44, 5, 50, 5, 56, 5, 62, 5, 68,
+ 5, 74, 5, 80, 5, 86, 5, 92, 5, 98, 5,104, 5,110, 5,116, 5,122, 5,128, 5,134, 5,140, 5,146, 5,152, 5,158, 5,164,
+ 5,170, 5,176, 5,182, 5,188, 5,194, 5,200, 5,206, 5,212, 5,218, 5,224, 5,230, 5,236, 5,242, 5,248, 5,254, 6, 4,
+ 6, 10, 6, 16, 6, 22, 6, 28, 6, 34, 6, 40, 6, 46, 6, 52, 6, 58, 6, 64, 6, 70, 6, 76, 6, 82, 6, 88, 6, 94, 6,100,
+ 6,106, 6,112, 6,118, 6,124, 6,130, 6,136, 6,142, 6,148, 6,154, 6,160, 6,166, 6,172, 6,178, 6,184, 6,190, 6,196,
+ 6,202, 6,208, 6,214, 6,220, 6,226, 6,232, 6,238, 6,244, 6,250, 7, 0, 7, 6, 7, 12, 0, 1, 2,152, 4,132, 0, 1,
+ 2,100, 8,116, 0, 1, 2,208, 5, 32, 0, 1, 1,204, 4,184, 0, 1, 2,104, 6,168, 0, 1, 2,100, 2,252, 0, 1, 2, 56,
+ 4,160, 0, 1, 2,124, 3,212, 0, 1, 2, 36, 4,160, 0, 1, 1,244, 4,124, 0, 1, 2, 4, 4, 96, 0, 1, 2, 4, 5, 72,
+ 0, 1, 1,208, 4, 76, 0, 1, 1,192, 5, 68, 0, 1, 2, 4, 2,252, 0, 1, 1,152, 4, 32, 0, 1, 2, 92, 3,240, 0, 1,
+ 1,220, 5,116, 0, 1, 1, 64, 3,184, 0, 1, 1, 52, 4, 72, 0, 1, 0,232, 6,184, 0, 1, 0,236, 6,212, 0, 1, 1,156,
+ 5, 40, 0, 1, 1,124, 5,244, 0, 1, 2, 88, 4, 84, 0, 1, 2,252, 5,132, 0, 1, 2,156, 5,248, 0, 1, 1,240, 5,204,
+ 0, 1, 3,144, 6,196, 0, 1, 2,152, 4, 40, 0, 1, 1,248, 4,108, 0, 1, 1,240, 3,240, 0, 1, 2,116, 3,188, 0, 1,
+ 2,172, 4, 60, 0, 1, 2,152, 4, 48, 0, 1, 2,124, 3,212, 0, 1, 2,188, 4,218, 0, 1, 2,111, 4,126, 0, 1, 1, 24,
+ 5,120, 0, 1, 1,174, 5,120, 0, 1, 3,234, 8, 52, 0, 1, 2, 95, 4, 96, 0, 1, 2,212, 4,196, 0, 1, 1,159, 3, 12,
+ 0, 1, 1,135, 4,144, 0, 1, 2,105, 3,232, 0, 1, 2, 70, 3,232, 0, 1, 2, 87, 3,232, 0, 1, 2, 87, 3,232, 0, 1,
+ 2,133, 3,232, 0, 1, 2, 64, 3,232, 0, 1, 2, 84, 3,232, 0, 1, 2, 84, 3,232, 0, 1, 2, 91, 3,232, 0, 1, 2, 58,
+ 3,232, 0, 1, 2, 66, 3,232, 0, 1, 2, 96, 3,232, 0, 1, 2,130, 4, 76, 0, 1, 2, 76, 4, 76, 0, 1, 2, 91, 5, 19,
+ 0, 1, 2, 90, 5, 20, 0, 1, 2, 91, 4,157, 0, 1, 2, 73, 4,175, 0, 1, 2, 87, 5, 20, 0, 1, 2, 84, 5, 20, 0, 1,
+ 2, 76, 4,226, 0, 1, 2, 52, 4,226, 0, 1, 2, 75, 5,170, 0, 1, 2, 93, 5,170, 0, 1, 1,144, 5,108, 0, 1, 1, 56,
+ 4,244, 0, 1, 1,244, 6, 64, 0, 1, 2, 94, 5,170, 0, 1, 1, 32, 5, 32, 0, 1, 1, 8, 4,228, 0, 1, 1,244, 6, 64,
+ 0, 1, 2, 98, 5,170, 0, 1, 1,210, 3,232, 0, 1, 1,186, 3,232, 0, 1, 1,172, 3,232, 0, 1, 2, 88, 3,232, 0, 1,
+ 1,178, 3,232, 0, 1, 1,166, 3,232, 0, 1, 1,132, 3,232, 0, 1, 2, 88, 3,232, 0, 1, 1,178, 3,232, 0, 1, 1,150,
+ 3,231, 0, 1, 1,184, 3,232, 0, 1, 2, 88, 3,232, 0, 1, 1,198, 3,232, 0, 1, 1,194, 3,232, 0, 1, 1,196, 3,232,
+ 0, 1, 2, 88, 3,232, 0, 1, 2,111, 4, 77, 0, 1, 2,188, 4,226, 0, 1, 2,170, 4,191, 0, 1, 2,152, 4,241, 0, 1,
+ 2, 33, 5, 84, 0, 1, 1,177, 5, 25, 0, 1, 1,255, 6, 14, 0, 1, 1,241, 6, 14, 0, 1, 1,140, 5,120, 0, 1, 0,243,
+ 5,120, 0, 1, 0,250, 6,164, 0, 1, 0,250, 6,164, 0, 1, 2, 84, 4,128, 0, 1, 2, 84, 4,128, 0, 1, 1,184, 4,128,
+ 0, 1, 2, 16, 4,128, 0, 1, 1,204, 3, 38, 0, 1, 1,148, 2,126, 0, 1, 2, 79, 3,232, 0, 1, 2, 91, 3,232, 0, 1,
+ 2,176, 4,184, 0, 1, 2, 12, 8,216, 0, 1, 2, 88, 8,224, 0, 1, 2,140, 5, 80, 0, 1, 2, 88, 5, 68, 0, 1, 1,128,
+ 4,216, 0, 1, 1, 28, 3,244, 0, 1, 2, 44, 5, 97, 0, 1, 2, 68, 5,102, 0, 1, 2, 92, 6,216, 0, 1, 2, 80, 6,232,
+ 0, 1, 2,104, 3, 60, 0, 1, 2, 16, 2,232, 0, 1, 2, 12, 3,200, 0, 1, 2, 92, 3,156, 0, 1, 2, 4, 4,200, 0, 1,
+ 2, 92, 4,216, 0, 1, 2, 92, 3,244, 0, 1, 2, 48, 4, 20, 0, 1, 2, 44, 4,196, 0, 1, 2, 48, 4,224, 0, 1, 2, 64,
+ 4,240, 0, 1, 2, 44, 5, 0, 0, 1, 2, 32, 5,100, 0, 1, 2, 32, 5, 96, 0, 1, 1,248, 4,128, 0, 1, 1,212, 4,124,
+ 0, 1, 1,116, 4, 76, 0, 1, 1, 96, 4, 48, 0, 1, 1,220, 4,164, 0, 1, 1,200, 4,176, 0, 1, 1, 48, 4,144, 0, 1,
+ 1,128, 4,132, 0, 1, 1,220, 5, 64, 0, 1, 1,216, 5, 92, 0, 1, 1, 32, 4,224, 0, 1, 1, 24, 4,220, 0, 1, 2, 12,
+ 4,172, 0, 1, 2, 4, 4,184, 0, 1, 2, 8, 5, 84, 0, 1, 2, 20, 5, 96, 0, 1, 2, 64, 3, 20, 0, 1, 1,180, 3, 16,
+ 0, 1, 1,148, 4, 76, 0, 1, 1, 56, 4,136, 0, 1, 2, 52, 4, 15, 0, 1, 1,206, 3,183, 0, 1, 2, 53, 3,222, 0, 1,
+ 1,243, 3,197, 0, 1, 1, 24, 5, 68, 0, 1, 0,180, 5, 56, 0, 1, 1, 48, 5, 72, 0, 1, 1, 12, 5, 60, 0, 1, 1, 68,
+ 3,140, 0, 1, 0,220, 3, 60, 0, 1, 1,200, 3,152, 0, 1, 1,120, 3,136, 0, 1, 1, 40, 4, 76, 0, 1, 0,208, 4, 88,
+ 0, 1, 1, 36, 4, 84, 0, 1, 0,212, 4,116, 0, 1, 0,240, 6,216, 0, 1, 0,192, 6,220, 0, 1, 0,232, 6,220, 0, 1,
+ 0,192, 6,228, 0, 1, 0,236, 6,244, 0, 1, 0,208, 6,228, 0, 1, 0,240, 6,232, 0, 1, 0,200, 6,224, 0, 1, 1,132,
+ 5, 48, 0, 1, 1,168, 4, 84, 0, 1, 1,196, 5, 76, 0, 1, 2,104, 4,132, 0, 1, 1,132, 6, 48, 0, 1, 1,216, 5,112,
+ 0, 1, 1,128, 6, 76, 0, 1, 2,104, 5, 60, 0, 1, 2,248, 5,112, 0, 1, 2,248, 4,248, 0, 1, 1,172, 5,184, 0, 1,
+ 2,108, 5, 36, 0, 1, 2,100, 5,172, 0, 1, 2, 96, 4,212, 0, 1, 1, 48, 5,156, 0, 1, 2,104, 5, 56, 0, 1, 2, 60,
+ 6, 8, 0, 1, 1,224, 6, 0, 0, 1, 1,247, 5,239, 0, 1, 2, 10, 6, 20, 0, 1, 2, 80, 6, 20, 0, 1, 1,200, 6, 16,
+ 0, 1, 2, 76, 6,100, 0, 1, 2,104, 6,188, 0, 1, 2,140, 3,216, 0, 1, 2,120, 3,132, 0, 1, 2, 56, 3,132, 0, 1,
+ 2, 84, 3,180, 0, 1, 1,228, 4,136, 0, 1, 1,135, 3, 82, 0, 1, 2, 32, 4,109, 0, 1, 2, 36, 4,118, 0, 1, 1,234,
+ 3,136, 0, 1, 2, 50, 3,122, 0, 1, 1,175, 4, 96, 0, 1, 1,238, 3, 28, 0, 1, 2,131, 3, 77, 0, 1, 2, 59, 3, 41,
+ 0, 1, 1,252, 3, 82, 0, 1, 1,166, 2, 68, 0, 1, 2, 5, 3,104, 0, 1, 1,112, 2, 95, 0, 1, 2, 41, 3, 73, 0, 1,
+ 2, 32, 3, 82, 0, 2, 0, 13, 3,223, 3,223, 0, 0, 3,225, 3,226, 0, 1, 3,228, 4, 3, 0, 3, 4, 36, 4, 36, 0, 35,
+ 4, 48, 4, 49, 0, 36, 4, 53, 4, 55, 0, 38, 4, 57, 4, 60, 0, 41, 10,151, 10,210, 0, 45, 10,213, 10,216, 0,105, 10,219,
+ 10,222, 0,109, 10,238, 10,238, 0,113, 10,241, 10,244, 0,114, 10,247, 11, 98, 0,118, 0, 1, 0, 9, 4, 4, 4, 5, 4, 7,
+ 4, 8, 4, 10, 4, 11, 4, 12, 4, 13, 4, 15, 0, 9, 0, 0, 0, 38, 0, 0, 0, 44, 0, 0, 0, 50, 0, 0, 0, 56, 0, 0,
+ 0, 62, 0, 0, 0, 68, 0, 0, 0, 74, 0, 0, 0, 80, 0, 0, 0, 86, 0, 1, 2, 93, 4,106, 0, 1, 2, 93, 4,106, 0, 1,
+ 2, 93, 4,106, 0, 1, 2, 93, 4,106, 0, 1, 2, 93, 4,106, 0, 1, 2, 98, 4,106, 0, 1, 2, 93, 4,106, 0, 1, 2, 93,
+ 4,106, 0, 1, 2,104, 4,176, 0, 1, 8,126, 7,246, 0, 1, 8,132, 0, 12, 0,253, 1,252, 2, 2, 2, 8, 2, 14, 2, 20,
+ 2, 26, 2, 32, 2, 38, 2, 44, 2, 50, 2, 56, 2, 62, 2, 68, 2, 74, 2, 80, 2, 86, 2, 92, 2, 98, 2,104, 2,110, 2,116,
+ 2,122, 2,128, 2,134, 2,140, 2,146, 2,152, 2,158, 2,164, 2,170, 2,176, 2,182, 2,188, 2,194, 2,200, 2,206, 2,212,
+ 2,218, 2,224, 2,230, 2,236, 2,242, 2,248, 2,254, 3, 4, 3, 10, 3, 16, 3, 22, 3, 28, 3, 34, 3, 40, 3, 46, 3, 52,
+ 3, 58, 3, 64, 3, 70, 3, 76, 3, 82, 3, 88, 3, 94, 3,100, 3,106, 3,112, 3,118, 3,124, 3,130, 3,136, 3,142, 3,148,
+ 3,154, 3,160, 3,166, 3,172, 3,178, 3,184, 3,190, 3,196, 3,202, 3,208, 3,214, 3,220, 3,226, 3,232, 3,238, 3,244,
+ 3,250, 4, 0, 4, 6, 4, 12, 4, 18, 4, 24, 4, 30, 4, 36, 4, 42, 4, 48, 4, 54, 4, 60, 4, 66, 4, 72, 4, 78, 4, 84,
+ 4, 90, 4, 96, 4,102, 4,108, 4,114, 4,120, 4,126, 4,132, 4,138, 4,144, 4,150, 4,156, 4,162, 4,168, 4,174, 4,180,
+ 4,186, 4,192, 4,198, 4,204, 4,210, 4,216, 4,222, 4,228, 4,234, 4,240, 4,246, 4,252, 5, 2, 5, 8, 5, 14, 5, 20,
+ 5, 26, 5, 32, 5, 38, 5, 44, 5, 50, 5, 56, 5, 62, 5, 68, 5, 74, 5, 80, 5, 86, 5, 92, 5, 98, 5,104, 5,110, 5,116,
+ 5,122, 5,128, 5,134, 5,140, 5,146, 5,152, 5,158, 5,164, 5,170, 5,176, 5,182, 5,188, 5,194, 5,200, 5,206, 5,212,
+ 5,218, 5,224, 5,230, 5,236, 5,242, 5,248, 5,254, 6, 4, 6, 10, 6, 16, 6, 22, 6, 28, 6, 34, 6, 40, 6, 46, 6, 52,
+ 6, 58, 6, 64, 6, 70, 6, 76, 6, 82, 6, 88, 6, 94, 6,100, 6,106, 6,112, 6,118, 6,124, 6,130, 6,136, 6,142, 6,148,
+ 6,154, 6,160, 6,166, 6,172, 6,178, 6,184, 6,190, 6,196, 6,202, 6,208, 6,214, 6,220, 6,226, 6,232, 6,238, 6,244,
+ 6,250, 7, 0, 7, 6, 7, 12, 7, 18, 7, 24, 7, 30, 7, 36, 7, 42, 7, 48, 7, 54, 7, 60, 7, 66, 7, 72, 7, 78, 7, 84,
+ 7, 90, 7, 96, 7,102, 7,108, 7,114, 7,120, 7,126, 7,132, 7,138, 7,144, 7,150, 7,156, 7,162, 7,168, 7,174, 7,180,
+ 7,186, 7,192, 7,198, 7,204, 7,210, 7,216, 7,222, 7,228, 0, 1, 4, 68, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,179,
+ 0, 0, 0, 1, 1,120, 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 1, 79, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 3,226, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 4, 28, 0, 0, 0, 1,
+ 3,228, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 1, 42, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 3,147, 0, 0, 0, 1, 4, 68, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 3,198, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,208, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,118, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,254, 86, 0, 1, 3,190, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 1,185,254, 89, 0, 1, 4, 68, 0, 0, 0, 1, 3,120, 0, 0, 0, 1, 4, 27, 0, 0, 0, 1, 3,190, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 1, 26,254, 86, 0, 1, 3,194,254, 86, 0, 1, 1,198, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 3,120, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 3,115, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 1, 26,
+254, 86, 0, 1, 2,104, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 4, 68, 0, 0,
+ 0, 1, 4, 68, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 2,122, 0, 0, 0, 1,
+ 2,122, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2, 54,
+ 0, 0, 0, 1, 3,228, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 1, 52, 0, 0, 0, 1, 2, 54, 0, 0, 0, 1, 3,198, 0, 0, 0, 1, 3,198,
+ 0, 0, 0, 1, 3,198, 0, 0, 0, 1, 3,198, 0, 0, 0, 1, 3,198, 0, 0, 0, 1, 3,198, 0, 0, 0, 1, 2,118, 0, 0,
+ 0, 1, 2,118, 0, 0, 0, 1, 2,118, 0, 0, 0, 1, 2,118, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 3,190, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 1, 26,254, 86, 0, 1, 1, 26,254, 86, 0, 1,
+ 1, 26,254, 86, 0, 1, 4, 68, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 3,198, 0, 0, 0, 1, 2,179, 0, 0, 0, 1, 2,179,
+ 0, 0, 0, 1, 2,208, 0, 0, 0, 1, 2,179, 0, 0, 0, 1, 2,208, 0, 0, 0, 1, 2,179, 0, 0, 0, 1, 2,208, 0, 0,
+ 0, 1, 2, 54, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2, 54, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,122, 0, 0, 0, 1,
+ 2,118, 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 2,118, 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 2,118, 0, 0, 0, 1, 2,122,
+ 0, 0, 0, 1, 2,118, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 2,104,254, 86, 0, 1, 2,154, 0, 0, 0, 1, 2,104,254, 86,
+ 0, 1, 2,154, 0, 0, 0, 1, 2,104,254, 86, 0, 1, 2,104,254, 86, 0, 1, 3,226, 0, 0, 0, 1, 3,190, 0, 0, 0, 1,
+ 3,226, 0, 0, 0, 1, 3,190, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,154, 0, 0,
+ 0, 1, 1,185,254, 89, 0, 1, 4, 68, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 3,120, 0, 0, 0, 1, 2,154, 0, 0, 0, 1,
+ 3,120, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 3,120, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 3,120, 0, 0, 0, 1, 3,228,
+ 0, 0, 0, 1, 3,190, 0, 0, 0, 1, 3,228, 0, 0, 0, 1, 3,190, 0, 0, 0, 1, 4, 57, 0, 0, 0, 1, 2,104,254, 86,
+ 0, 1, 2,104,254, 86, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 1,198, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 1,198,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 3,120, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 3,120, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 3,147, 0, 0,
+ 0, 1, 3,115, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 1, 26,254, 86, 0, 1, 2,104, 0, 0, 0, 1, 2,154, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2, 10, 0, 0, 0, 1, 2,179, 0, 0, 0, 1, 2,208, 0, 0, 0, 1, 2, 54, 0, 0, 0, 1,
+ 2, 54, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,254, 86, 0, 1, 2, 86, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,179, 0, 0, 0, 1, 1, 34,254, 86, 0, 1, 1,104,254, 86, 0, 1, 2,154, 0, 0, 0, 1, 2,104,254, 86,
+ 0, 1, 3,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1, 4, 68, 0, 0, 0, 1,
+ 3,120, 0, 0, 0, 1, 4, 8, 0, 0, 0, 1, 4, 28, 0, 0, 0, 1, 3,228, 0, 0, 0, 1, 3,190,254, 86, 0, 1, 2,104,
+ 0, 0, 0, 1, 1,249, 0, 0, 0, 1, 1,255, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 4, 88,254, 86, 0, 1, 1,210, 0, 0,
+ 0, 1, 1, 26,254, 86, 0, 1, 4,106,254,248, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 2,
+ 0, 22, 0, 36, 0, 61, 0, 0, 0, 68, 0, 93, 0, 26, 0,130, 0,135, 0, 52, 0,138, 0,152, 0, 58, 0,154, 0,167, 0, 73,
+ 0,170, 0,184, 0, 87, 0,186, 0,194, 0,102, 0,196, 0,197, 0,111, 0,200, 0,200, 0,113, 0,202, 0,217, 0,114, 0,220,
+ 0,227, 0,130, 0,229, 0,239, 0,138, 0,242, 0,243, 0,149, 0,246, 0,247, 0,151, 0,250, 0,252, 0,153, 0,255, 1, 6,
+ 0,156, 1, 9, 1, 19, 0,164, 1, 22, 1, 23, 0,175, 1, 26, 1, 31, 0,177, 1, 34, 1, 35, 0,183, 1, 38, 1, 51, 0,185,
+ 1, 54, 1,107, 0,199, 0, 1, 0, 1, 2,163, 0, 1, 0, 0, 0, 6, 0, 1, 2,124, 0, 0, 0, 1, 20,168, 20, 38, 0, 2,
+ 20,214, 0, 12, 1,127, 5,254, 6, 4, 6, 10, 6, 16, 6, 22, 6, 28, 6, 34, 6, 40, 6, 46, 6, 52, 6, 58, 6, 64, 6, 70,
+ 6, 76, 6, 82, 6, 88, 6, 94, 6,100, 6,106, 6,112, 6,118, 6,124, 6,130, 6,136, 6,142, 6,148, 6,154, 6,160, 6,166,
+ 6,172, 6,178, 6,184, 6,190, 6,196, 6,202, 6,208, 6,214, 6,220, 6,226, 6,232, 6,238, 6,244, 6,250, 7, 0, 7, 6,
+ 7, 12, 7, 18, 7, 24, 7, 30, 7, 36, 7, 42, 7, 48, 7, 54, 7, 60, 7, 66, 7, 72, 7, 78, 7, 84, 7, 90, 7, 96, 7,102,
+ 7,108, 7,114, 7,120, 7,126, 7,132, 7,138, 7,144, 0, 0, 7,150, 0, 0, 7,156, 7,162, 7,168, 7,174, 7,180, 7,186,
+ 7,192, 7,198, 7,204, 7,210, 7,216, 7,222, 7,228, 7,234, 7,240, 7,246, 7,252, 8, 2, 8, 8, 8, 14, 8, 20, 8, 26,
+ 8, 32, 8, 38, 8, 44, 8, 50, 8, 56, 8, 62, 8, 68, 8, 74, 8, 80, 8, 86, 8, 92, 0, 0, 8, 98, 0, 0, 8,104, 0, 0,
+ 8,110, 0, 0, 8,116, 0, 0, 8,122, 0, 0, 8,128, 8,134, 8,140, 8,146, 0, 0, 0, 0, 8,152, 0, 0, 8,158, 0, 0,
+ 8,164, 0, 0, 8,170, 0, 0, 8,176, 0, 0, 8,182, 0, 0, 8,188, 0, 0, 8,194, 8,200, 8,206, 0, 0, 8,212, 0, 0,
+ 8,218, 0, 0, 8,224, 0, 0, 8,230, 0, 0, 8,236, 0, 0, 8,242, 8,248, 8,254, 0, 0, 9, 4, 0, 0, 9, 10, 0, 0,
+ 9, 16, 0, 0, 9, 22, 0, 0, 9, 28, 9, 34, 9, 40, 9, 46, 9, 52, 0, 0, 9, 58, 0, 0, 9, 64, 0, 0, 9, 70, 0, 0,
+ 9, 76, 0, 0, 9, 82, 0, 0, 9, 88, 9, 94, 9,100, 9,106, 0, 0, 0, 0, 9,112, 0, 0, 9,118, 0, 0, 9,124, 0, 0,
+ 9,130, 0, 0, 9,136, 0, 0, 9,142, 0, 0, 9,148, 0, 0, 9,154, 0, 0, 9,160, 0, 0, 9,166, 0, 0, 9,172, 0, 0,
+ 9,178, 0, 0, 9,184, 0, 0, 9,190, 0, 0, 9,196, 9,202, 9,208, 0, 0, 9,214, 0, 0, 9,220, 0, 0, 9,226, 0, 0,
+ 9,232, 0, 0, 9,238, 9,244, 9,250, 0, 0, 10, 0, 0, 0, 10, 6, 0, 0, 10, 12, 0, 0, 10, 18, 10, 24, 0, 0, 10, 30,
+ 0, 0, 0, 0, 10, 36, 0, 0, 10, 42, 0, 0, 10, 48, 0, 0, 10, 54, 0, 0, 10, 60, 0, 0, 10, 66, 0, 0, 10, 72, 0, 0,
+ 10, 78, 0, 0, 10, 84, 10, 90, 10, 96, 10,102, 10,108, 0, 0, 10,114, 0, 0, 10,120, 0, 0, 10,126, 0, 0, 10,132, 0, 0,
+ 10,138, 0, 0, 10,144, 10,150, 0, 0, 10,156, 0, 0, 0, 0, 10,162, 0, 0, 10,168, 0, 0, 10,174, 0, 0, 10,180, 0, 0,
+ 10,186, 0, 0, 10,192, 0, 0, 10,198, 0, 0, 10,204, 10,210, 0, 0, 0, 0, 10,216, 0, 0, 10,222, 0, 0, 10,228, 10,234,
+ 10,240, 10,246, 10,252, 0, 0, 11, 2, 0, 0, 11, 8, 0, 0, 11, 14, 0, 0, 11, 20, 0, 0, 11, 26, 0, 0, 11, 32, 11, 38,
+ 0, 0, 0, 0, 11, 44, 11, 50, 11, 56, 0, 0, 11, 62, 0, 0, 11, 68, 11, 74, 0, 0, 11, 80, 0, 0, 11, 86, 11, 92, 0, 0,
+ 11, 98, 0, 0, 11,104, 11,110, 0, 0, 11,116, 0, 0, 0, 0, 11,122, 0, 0, 11,128, 11,134, 11,140, 11,146, 11,152, 11,158,
+ 11,164, 11,170, 11,176, 0, 0, 11,182, 0, 0, 11,188, 11,194, 0, 0, 11,200, 0, 0, 0, 0, 11,206, 0, 0, 11,212, 0, 0,
+ 11,218, 11,224, 11,230, 11,236, 11,242, 0, 0, 11,248, 0, 0, 11,254, 0, 0, 12, 4, 0, 0, 12, 10, 0, 0, 12, 16, 0, 0,
+ 12, 22, 12, 28, 12, 34, 12, 40, 12, 46, 0, 0, 12, 52, 0, 0, 12, 58, 12, 64, 0, 0, 12, 70, 0, 0, 0, 0, 12, 76, 12, 82,
+ 12, 88, 0, 0, 12, 94, 0, 0, 12,100, 0, 0, 12,106, 0, 0, 12,112, 12,118, 0, 0, 12,124, 0, 0, 0, 0, 12,130, 0, 0,
+ 12,136, 12,142, 0, 0, 12,148, 0, 0, 0, 0, 12,154, 0, 0, 12,160, 12,166, 12,172, 12,178, 12,184, 0, 0, 12,190, 0, 0,
+ 12,196, 0, 0, 12,202, 0, 0, 12,208, 0, 0, 12,214, 0, 0, 12,220, 0, 0, 12,226, 0, 0, 12,232, 0, 0, 12,238, 0, 0,
+ 12,244, 12,250, 0, 0, 13, 0, 0, 0, 0, 0, 13, 6, 0, 0, 13, 12, 0, 0, 13, 18, 0, 0, 13, 24, 0, 0, 13, 30, 0, 0,
+ 13, 36, 0, 0, 13, 42, 0, 0, 13, 48, 0, 0, 13, 54, 0, 0, 13, 60, 0, 0, 13, 66, 13, 72, 13, 78, 13, 84, 13, 90, 13, 96,
+ 13,102, 13,108, 13,114, 13,120, 13,126, 13,132, 13,138, 13,144, 13,150, 13,156, 13,162, 13,168, 13,174, 13,180, 13,186, 13,192,
+ 13,198, 13,204, 13,210, 13,216, 13,222, 13,228, 13,234, 13,240, 13,246, 13,252, 14, 2, 14, 8, 14, 14, 14, 20, 14, 26, 14, 32,
+ 14, 38, 14, 44, 14, 50, 14, 56, 14, 62, 14, 68, 14, 74, 14, 80, 14, 86, 14, 92, 14, 98, 14,104, 14,110, 14,116, 14,122, 14,128,
+ 14,134, 14,140, 14,146, 14,152, 14,158, 14,164, 14,170, 14,176, 14,182, 14,188, 14,194, 14,200, 14,206, 14,212, 14,218, 14,224,
+ 14,230, 14,236, 14,242, 14,248, 14,254, 15, 4, 15, 10, 15, 16, 15, 22, 15, 28, 15, 34, 15, 40, 15, 46, 15, 52, 15, 58, 15, 64,
+ 15, 70, 15, 76, 15, 82, 15, 88, 15, 94, 15,100, 15,106, 15,112, 15,118, 15,124, 15,130, 15,136, 15,142, 15,148, 15,154, 15,160,
+ 15,166, 15,172, 15,178, 15,184, 15,190, 15,196, 15,202, 15,208, 15,214, 15,220, 15,226, 15,232, 15,238, 15,244, 15,250, 16, 0,
+ 16, 6, 16, 12, 16, 18, 16, 24, 16, 30, 16, 36, 16, 42, 16, 48, 16, 54, 16, 60, 16, 66, 16, 72, 16, 78, 16, 84, 16, 90, 16, 96,
+ 16,102, 16,108, 16,114, 16,120, 16,126, 16,132, 16,138, 16,144, 16,150, 16,156, 16,162, 16,168, 16,174, 16,180, 16,186, 16,192,
+ 16,198, 16,204, 16,210, 16,216, 16,222, 16,228, 16,234, 16,240, 16,246, 16,252, 17, 2, 17, 8, 17, 14, 17, 20, 17, 26, 17, 32,
+ 17, 38, 17, 44, 17, 50, 17, 56, 17, 62, 17, 68, 17, 74, 17, 80, 17, 86, 17, 92, 17, 98, 17,104, 17,110, 17,116, 17,122, 17,128,
+ 17,134, 17,140, 17,146, 17,152, 17,158, 17,164, 17,170, 17,176, 17,182, 17,188, 17,194, 17,200, 17,206, 17,212, 17,218, 17,224,
+ 17,230, 17,236, 17,242, 17,248, 17,254, 18, 4, 18, 10, 18, 16, 18, 22, 18, 28, 18, 34, 18, 40, 18, 46, 18, 52, 18, 58, 18, 64,
+ 18, 70, 18, 76, 18, 82, 18, 88, 18, 94, 18,100, 18,106, 18,112, 18,118, 18,124, 18,130, 18,136, 18,142, 18,148, 18,154, 18,160,
+ 18,166, 18,172, 18,178, 18,184, 18,190, 18,196, 18,202, 18,208, 18,214, 18,220, 18,226, 18,232, 18,238, 18,244, 18,250, 19, 0,
+ 19, 6, 19, 12, 19, 18, 19, 24, 19, 30, 19, 36, 19, 42, 19, 48, 19, 54, 19, 60, 19, 66, 19, 72, 19, 78, 19, 84, 19, 90, 19, 96,
+ 19,102, 19,108, 19,114, 19,120, 19,126, 19,132, 19,138, 19,144, 19,150, 19,156, 19,162, 19,168, 19,174, 19,180, 19,186, 19,192,
+ 19,198, 19,204, 19,210, 19,216, 19,222, 19,228, 19,234, 19,240, 19,246, 19,252, 20, 2, 20, 8, 0, 0, 0, 0, 20, 14, 20, 20,
+ 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,179, 5,213,
+ 0, 1, 2,179, 0, 0, 0, 1, 2, 54, 5,213, 0, 1, 2, 54, 0, 0, 0, 1, 2,122, 5,213, 0, 1, 2,122, 0, 0, 0, 1,
+ 2,158, 5,213, 0, 1, 2,158, 0, 0, 0, 1, 2,154, 5,213, 0, 1, 2,154, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,154, 5,213, 0, 1, 2,154, 0, 0, 0, 1, 2,104, 5,213,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,154, 5,213, 0, 1, 2,154, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2, 54, 5,213, 0, 1, 2, 54, 0, 0, 0, 1, 2,104, 5,213,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,154, 5,213, 0, 1, 2,154, 0, 0, 0, 1, 2,104, 4, 96,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1, 2,104, 0, 0, 0, 1, 2,179, 4, 96, 0, 1, 2,179, 0, 0, 0, 1,
+ 2,104, 6, 20, 0, 1, 2,104, 0, 0, 0, 1, 2,118, 4, 96, 0, 1, 2,118, 0, 0, 0, 1, 2,104, 6, 20, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104, 6, 20, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104,254, 86, 0, 1, 2,154, 6, 20, 0, 1, 2,154, 0, 0, 0, 1, 2, 50, 6, 20, 0, 1, 2, 50, 0, 0, 0, 1,
+ 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104, 4, 96,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104, 4, 96,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,122, 5,213, 0, 1, 2,122, 0, 0, 0, 1, 2,179, 5,213, 0, 1, 2,122,
+ 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2, 54, 5,213, 0, 1, 2, 54, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2, 54, 5,213, 0, 1, 2, 54, 0, 0, 0, 1, 2, 54, 5,213, 0, 1, 2, 54, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,179, 4, 96, 0, 1, 2,118, 0, 0, 0, 1, 2,118, 0, 0,
+ 0, 1, 2,118, 0, 0, 0, 1, 2,118, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,254, 86, 0, 1, 2,104, 6, 20, 0, 1,
+ 2,104,254, 86, 0, 1, 2,104,254, 86, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 5,213, 0, 1, 2,104, 4, 96, 0, 1, 2,179, 0, 0, 0, 1, 2,179, 0, 0, 0, 1, 2,179, 0, 0, 0, 1, 2,179, 0, 0,
+ 0, 1, 2,179, 0, 0, 0, 1, 2,179, 0, 0, 0, 1, 2,179, 0, 0, 0, 1, 2, 54, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2, 54, 5,213, 0, 1, 2, 54, 0, 0, 0, 1, 2,104, 6, 20, 0, 1, 2,104, 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 2,118,
+ 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 2,118, 0, 0, 0, 1, 2,122, 0, 0, 0, 1, 2,118, 0, 0, 0, 1, 2,122, 5,213,
+ 0, 1, 2,118, 4, 96, 0, 1, 2,122, 0, 0, 0, 1, 2,118, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 2,104,254, 86, 0, 1,
+ 2,154, 0, 0, 0, 1, 2,104,254, 86, 0, 1, 2,154, 0, 0, 0, 1, 2,104,254, 86, 0, 1, 2,154, 5,213, 0, 1, 2,104,
+254, 86, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 2,104,254, 86, 0, 1, 2,104, 5,213, 0, 1, 2,154, 6, 20, 0, 1, 2,154, 4, 96,
+ 0, 1, 2,154, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 2, 50, 0, 0, 0, 1, 2,154, 5,213, 0, 1, 2, 50, 6, 20, 0, 1,
+ 2,154, 0, 0, 0, 1, 2, 50, 0, 0, 0, 1, 2,154, 5,213, 0, 1, 2,154, 0, 0, 0, 1, 2, 50, 6, 20, 0, 1, 2, 50,
+ 0, 0, 0, 1, 2,154, 5,213, 0, 1, 2,154, 0, 0, 0, 1, 2, 50, 6, 20, 0, 1, 2, 50, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,227, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104,254, 86, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2, 54, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2, 54, 5,213, 0, 1, 2,104, 4, 96, 0, 1, 2, 54, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213,
+ 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 6, 20, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 5,213, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+254, 86, 0, 1, 2,104, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,154, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,154, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 6, 20, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1, 2,104, 0, 0,
+ 0, 1, 2, 10, 5,213, 0, 1, 2, 10, 0, 0, 0, 1, 2,179, 5,213, 0, 1, 2,179, 0, 0, 0, 1, 2,179, 4, 96, 0, 1,
+ 2,179, 0, 0, 0, 1, 2, 54, 5,213, 0, 1, 2, 54, 0, 0, 0, 1, 2, 54, 5,213, 0, 1, 2, 54, 0, 0, 0, 1, 2,104,
+ 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86,
+ 0, 1, 2, 86, 5,213, 0, 1, 2, 86, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,179, 5,213, 0, 1,
+ 2,179, 0, 0, 0, 1, 3, 2, 5,213, 0, 1, 3, 2,254, 86, 0, 1, 2,104, 6, 20, 0, 1, 2,104,254, 86, 0, 1, 2,154,
+ 5,213, 0, 1, 2,154, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104,254, 86, 0, 1, 2,104, 6, 20, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,154, 6, 20, 0, 1, 2,154, 0, 0, 0, 1, 2, 50, 6, 20, 0, 1, 2, 50, 0, 0, 0, 1, 2,104,
+ 6, 20, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104,254, 86,
+ 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 1,249, 5,213, 0, 1,
+ 1,249, 0, 0, 0, 1, 1,255, 4, 96, 0, 1, 1,255, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,236, 5,213, 0, 1, 2,236, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86,
+ 0, 1, 2, 54, 5,213, 0, 1, 2, 54,254, 86, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 5,213, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,140, 6, 20, 0, 1, 2,140, 0, 0, 0, 1, 2, 41, 4, 96, 0, 1,
+ 2, 41, 0, 0, 0, 1, 2,179, 4, 96, 0, 1, 2,179, 0, 0, 0, 1, 2, 89, 6, 20, 0, 1, 2, 89, 0, 0, 0, 1, 2,104,
+ 6, 20, 0, 1, 2,104, 0, 0, 0, 1, 2,118, 4, 96, 0, 1, 2,118, 0, 0, 0, 1, 2,118, 4, 96, 0, 1, 2,118, 0, 0,
+ 0, 1, 1,154, 4, 96, 0, 1, 1,154, 0, 0, 0, 1, 2,118, 4, 96, 0, 1, 2,118, 0, 0, 0, 1, 2, 90, 4, 96, 0, 1,
+ 2, 90, 0, 0, 0, 1, 1,114, 4, 96, 0, 1, 1,114, 0, 0, 0, 1, 2,118, 4, 96, 0, 1, 2,118, 0, 0, 0, 1, 2,177,
+ 4, 96, 0, 1, 2,177,254, 86, 0, 1, 2, 62, 6, 20, 0, 1, 2, 62,254, 86, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86,
+ 0, 1, 2,149, 4, 96, 0, 1, 2,149, 0, 0, 0, 1, 2,110, 4, 96, 0, 1, 2,110,254, 86, 0, 1, 2,104, 4, 96, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,111, 6, 20, 0, 1, 2,111, 0, 0, 0, 1, 2,111,
+ 6, 20, 0, 1, 2,111,254, 86, 0, 1, 2, 68, 4, 96, 0, 1, 2, 68, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0,
+ 0, 1, 2, 56, 6, 20, 0, 1, 2, 56, 0, 0, 0, 1, 2, 80, 6, 20, 0, 1, 2, 80, 0, 0, 0, 1, 2, 62, 6, 20, 0, 1,
+ 2, 62,254, 86, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104,
+ 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,182, 4, 96, 0, 1, 2,182,254, 86, 0, 1, 1,252, 4,102, 0, 1, 2, 38,254, 86,
+ 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1, 2,104,254, 86, 0, 1, 2,104,
+ 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1, 2,104, 0, 0, 0, 1, 2, 54, 4, 96, 0, 1, 2, 54,254, 86,
+ 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2, 99, 4, 96, 0, 1,
+ 2, 99, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2, 0, 4, 96, 0, 1, 2, 0, 0, 0, 0, 1, 2, 0,
+ 4, 96, 0, 1, 2, 0, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,115, 6, 20, 0, 1, 2,115,254, 86,
+ 0, 1, 2,115, 6, 20, 0, 1, 2,115,254, 86, 0, 1, 2,120, 4, 96, 0, 1, 2,120,254, 86, 0, 1, 2,115, 6, 20, 0, 1,
+ 2,115,254, 86, 0, 1, 2,164, 4, 96, 0, 1, 2,164,254, 86, 0, 1, 2,104, 6, 20, 0, 1, 2,104,254, 86, 0, 1, 2,104,
+ 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2, 28, 4, 96, 0, 1, 2, 28,254, 86, 0, 1, 2,104,
+ 4, 96, 0, 1, 2,104,255,142, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86,
+ 0, 1, 2, 36, 6, 20, 0, 1, 2, 36, 0, 0, 0, 1, 2,170, 6, 20, 0, 1, 2,170, 0, 0, 0, 1, 2, 36, 6, 20, 0, 1,
+ 2, 36, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2, 32, 4, 96, 0, 1, 2, 32, 0, 0, 0, 1, 2, 62,
+ 4, 96, 0, 1, 2, 62, 0, 0, 0, 1, 2, 26, 6, 20, 0, 1, 2, 26, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 4, 96, 0, 1, 2,104,254, 86, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 6, 20, 0, 1,
+ 2,104,254, 86, 0, 1, 2, 36, 6, 20, 0, 1, 2, 36, 0, 0, 0, 1, 2,170, 6, 20, 0, 1, 2,170, 0, 0, 0, 1, 2,104,
+ 5,224, 0, 1, 2,104, 2,156, 0, 1, 2, 82, 5,224, 0, 1, 2, 82, 2,156, 0, 1, 2, 69, 5,224, 0, 1, 2, 69, 2,156,
+ 0, 1, 2, 94, 5,224, 0, 1, 2, 94, 2,156, 0, 1, 2,114, 5,224, 0, 1, 2,114, 2,156, 0, 1, 2,144, 5,224, 0, 1,
+ 2,144, 2,156, 0, 1, 2,104, 5,224, 0, 1, 2,104, 2,156, 0, 1, 2,104, 5,224, 0, 1, 2,104, 2,156, 0, 1, 2,188,
+ 5,224, 0, 1, 2,188, 2,156, 0, 1, 2, 63, 5,224, 0, 1, 2, 63, 2,156, 0, 1, 2, 97, 5,224, 0, 1, 2, 97, 2,156,
+ 0, 1, 2,105, 5,224, 0, 1, 2,105, 2,156, 0, 1, 2,104, 5,224, 0, 1, 2,104, 2,156, 0, 1, 2,104, 5,224, 0, 1,
+ 2,104, 2,156, 0, 1, 2,104, 5,224, 0, 1, 2,104, 2,156, 0, 1, 2, 71, 5,224, 0, 1, 2, 71, 2,156, 0, 1, 2, 27,
+ 5,224, 0, 1, 2, 27, 2,156, 0, 1, 2,104, 5,224, 0, 1, 2,104, 2,156, 0, 1, 2,104, 5,224, 0, 1, 2,104, 2,156,
+ 0, 1, 2,104, 5,224, 0, 1, 2,104, 2,156, 0, 1, 2, 54, 5,213, 0, 1, 2, 92, 2,156, 0, 1, 2,104, 5,213, 0, 2,
+ 0, 21, 0, 36, 0, 61, 0, 0, 0, 68, 0, 93, 0, 26, 0,130, 0,152, 0, 52, 0,154, 0,184, 0, 75, 0,186, 0,194, 0,106,
+ 0,196, 0,200, 0,115, 0,202, 0,240, 0,120, 0,242, 0,243, 0,159, 0,246, 1,107, 0,161, 1,205, 1,205, 1, 23, 1,226,
+ 1,226, 1, 24, 1,238, 2, 5, 1, 25, 2, 7, 2, 11, 1, 49, 2, 13, 2, 52, 1, 54, 2, 54, 2, 58, 1, 94, 2, 60, 2, 64,
+ 1, 99, 4,172, 4,172, 1,104, 4,174, 4,192, 1,105, 5, 22, 5, 22, 1,124, 6,169, 6,169, 1,125, 11,209, 11,209, 1,126,
+ 0, 2, 0, 7, 2,124, 2,141, 0, 0, 2,143, 2,149, 0, 18, 2,152, 2,156, 0, 25, 2,159, 2,162, 0, 30, 2,165, 2,173,
+ 0, 34, 2,181, 2,186, 0, 43, 2,188, 2,188, 0, 49, 0, 50, 0, 0, 0,202, 0, 0, 0,208, 0, 0, 0,214, 0, 0, 0,220,
+ 0, 0, 0,226, 0, 0, 0,232, 0, 0, 0,238, 0, 0, 0,244, 0, 0, 0,250, 0, 0, 1, 0, 0, 0, 1, 6, 0, 0, 1, 12,
+ 0, 0, 1, 18, 0, 0, 1, 24, 0, 0, 1, 30, 0, 0, 1, 36, 0, 0, 1, 42, 0, 0, 1, 48, 0, 0, 1, 54, 0, 0, 1, 60,
+ 0, 0, 1, 66, 0, 1, 1, 72, 0, 1, 1, 78, 0, 1, 1, 84, 0, 1, 1, 90, 0, 1, 1, 96, 0, 1, 1,102, 0, 1, 1,108,
+ 0, 1, 1,114, 0, 1, 1,120, 0, 1, 1,126, 0, 1, 1,132, 0, 1, 1,138, 0, 1, 1,144, 0, 1, 1,150, 0, 1, 1,156,
+ 0, 1, 1,162, 0, 1, 1,168, 0, 1, 1,174, 0, 1, 1,180, 0, 1, 1,186, 0, 1, 1,192, 0, 1, 1,198, 0, 1, 1,204,
+ 0, 1, 1,210, 0, 1, 1,216, 0, 1, 1,222, 0, 0, 1,228, 0, 0, 1,234, 0, 0, 1,240, 0, 1, 2,104, 4, 96, 0, 1,
+ 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104,
+ 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96,
+ 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1,
+ 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1,
+ 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104,
+ 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0,
+ 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 0, 0, 0, 1, 2,104, 4, 96, 0, 1, 2,104, 4, 96, 0, 1,
+ 2,104, 4, 96, 0, 1, 0, 8, 0, 4,251, 47, 0, 2, 0, 6, 2,124, 2,141, 0, 0, 2,143, 2,149, 0, 18, 2,152, 2,156,
+ 0, 25, 2,159, 2,173, 0, 30, 2,181, 2,186, 0, 45, 2,188, 2,188, 0, 51, 0, 1, 1,200, 1,190, 0, 2, 1,216, 0, 12,
+ 0, 27, 0,110, 0,116, 0,122, 0,128, 0,134, 0,140, 0,146, 0,152, 0,158, 0,164, 0,170, 0,176, 0,182, 0,188, 0,194,
+ 0,200, 0,206, 0,212, 0,218, 0,224, 0,230, 0,236, 0,242, 0,248, 0,254, 1, 4, 1, 10, 1, 16, 1, 22, 1, 28, 1, 34,
+ 1, 40, 1, 46, 1, 52, 1, 58, 1, 64, 1, 70, 1, 76, 1, 82, 1, 88, 1, 94, 1,100, 1,106, 1,112, 1,118, 1,124, 1,130,
+ 1,136, 1,142, 1,148, 1,154, 1,160, 1,166, 1,172, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0,
+ 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209,254, 20, 0, 1, 4,209, 4,160, 0, 1,
+ 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209,254, 20, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209,
+ 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209,254, 20,
+ 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1,
+ 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,210, 6, 16, 0, 1, 4,209, 0, 0, 0, 1, 4,209,
+ 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,210, 6, 16, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0,
+ 0, 1, 4,210, 6, 16, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 6, 16, 0, 1,
+ 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209,
+ 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0,
+ 0, 1, 4,209, 4,160, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,160, 0, 2, 0, 1, 4, 72, 4, 98, 0, 0, 0, 2, 0, 2,
+ 4,101, 4,101, 0, 0, 4,104, 4,117, 0, 1, 0, 15, 0, 1, 0, 62, 0, 1, 0, 68, 0, 1, 0, 74, 0, 1, 0, 80, 0, 1,
+ 0, 86, 0, 0, 0, 92, 0, 0, 0, 98, 0, 1, 0,104, 0, 0, 0,110, 0, 1, 0,116, 0, 1, 0,122, 0, 1, 0,128, 0, 1,
+ 0,134, 0, 1, 0,140, 0, 1, 0,146, 0, 1,255,247, 4,116, 0, 1, 4,209, 4,119, 0, 1, 4,209, 4,119, 0, 1, 4,209,
+ 4,119, 0, 1, 4,209, 4,119, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 0, 0, 0, 1, 4,209, 4,116, 0, 1, 4,209, 0, 0,
+ 0, 1, 4,209, 4, 96, 0, 1, 4,209, 4,126, 0, 1, 4,209, 4,126, 0, 1, 4,209, 4, 96, 0, 1, 4,209, 4,126, 0, 1,
+ 4,209, 4, 96, 0, 1, 0, 8, 0, 4,251, 47, 0, 2, 0, 2, 4,101, 4,101, 0, 0, 4,104, 4,117, 0, 1, 0, 1, 0, 0,
+ 0, 10, 0,192, 1, 58, 0, 6, 97,114, 97, 98, 0, 38, 99,121,114,108, 0, 60,100,102,108,116, 0, 88,103,114,101,107, 0, 98,
+108, 97,111, 32, 0,110,108, 97,116,110, 0,120, 0, 4, 0, 0, 0, 0,255,255, 0, 6, 0, 2, 0, 3, 0, 4, 0, 5, 0, 8,
+ 0, 9, 0, 10, 0, 1, 83, 82, 66, 32, 0, 18, 0, 0,255,255, 0, 1, 0, 0, 0, 0,255,255, 0, 2, 0, 0, 0, 6, 0, 4,
+ 0, 0, 0, 0,255,255, 0, 0, 0, 4, 0, 0, 0, 0,255,255, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0,255,255, 0, 0, 0, 40,
+ 0, 6, 73, 83, 77, 32, 0, 50, 75, 83, 77, 32, 0, 50, 76, 83, 77, 32, 0, 50, 78, 83, 77, 32, 0, 50, 83, 75, 83, 32, 0, 50,
+ 83, 83, 77, 32, 0, 50, 0, 0,255,255, 0, 2, 0, 0, 0, 1, 0, 0,255,255, 0, 3, 0, 0, 0, 1, 0, 7, 0, 10, 99, 99,
+109,112, 0, 62,100,108,105,103, 0, 68,102,105,110, 97, 0, 74,105,110,105,116, 0, 80,105,115,111,108, 0, 86,108,105,103, 97,
+ 0, 92,108,111, 99,108, 0, 98,108,111, 99,108, 0,104,109,101,100,105, 0,110,114,108,105,103, 0,116, 0, 0, 0, 1, 0, 1,
+ 0, 0, 0, 1, 0, 9, 0, 0, 0, 1, 0, 4, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 3, 0, 0, 0, 1, 0, 8, 0, 0,
+ 0, 1, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 5, 0, 0, 0, 1, 0, 7, 0, 11, 0, 24, 0, 32, 0, 40, 0, 48,
+ 0, 56, 0, 64, 0, 72, 0, 80, 0, 88, 0, 96, 0,104, 0, 1, 0, 0, 0, 1, 0, 88, 0, 6, 0, 0, 0, 1, 0, 92, 0, 1,
+ 0, 0, 0, 1, 0,228, 0, 1, 0, 9, 0, 1, 0,232, 0, 1, 0, 9, 0, 1, 0,236, 0, 1, 0, 9, 0, 1, 1,148, 0, 1,
+ 0, 9, 0, 1, 2, 46, 0, 4, 0, 9, 0, 1, 2,200, 0, 4, 0, 9, 0, 1, 2,230, 0, 4, 0, 0, 0, 1, 3, 36, 0, 1,
+ 0, 0, 0, 1, 3, 60, 0, 1, 0, 6, 10,197, 0, 1, 0, 1, 1, 12, 0, 2, 0, 20, 0, 28, 0, 36, 0, 36, 0, 4, 0, 0,
+ 0, 88, 0, 0, 0, 0, 0, 1, 0, 2, 0, 76, 0, 77, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 8, 0, 76, 0, 77, 0, 1,
+ 2,124, 2,145, 0, 2, 2,146, 2,149, 0, 3, 2,152, 2,156, 0, 3, 2,159, 2,175, 0, 3, 2,181, 2,184, 0, 3, 2,185,
+ 2,188, 0, 2, 2,191, 2,191, 0, 2, 0, 3, 0, 8, 0, 22, 0, 38, 0, 0, 0, 1, 0, 1, 0, 2, 0, 1, 0, 0, 0, 10,
+ 0, 0, 0, 1, 0, 2, 0, 3, 0, 2, 0, 1, 0, 0, 0, 10, 0, 0, 0, 1, 0, 3, 0, 3, 0, 3, 0, 2, 0, 1, 0, 0,
+ 0, 10, 0, 1, 0, 6, 7, 54, 0, 1, 0, 1, 3, 94, 0, 1, 0, 6, 6,149, 0, 1, 0, 1, 4, 50, 0, 2, 0,112, 0, 53,
+ 10,240, 10,242, 10,244, 10,246, 10,248, 10,252, 10,254, 11, 2, 11, 4, 11, 8, 11, 12, 11, 16, 11, 20, 11, 24, 11, 26, 11, 28,
+ 11, 30, 11, 32, 11, 36, 11, 40, 11, 44, 11, 48, 11, 52, 11, 56, 11, 60, 11, 64, 11, 68, 11, 72, 11, 76, 11, 80, 11, 84, 11, 88,
+ 11, 92, 11, 94, 11, 96, 10,172, 10,164, 10,152, 10,156, 10,168, 10,160, 10,188, 10,184, 10,192, 10,196, 10,202, 10,200, 10,176,
+ 10,204, 10,208, 10,212, 10,214, 10,220, 0, 2, 0, 10, 3,224, 3,248, 0, 0, 3,250, 4, 3, 0, 25, 4, 33, 4, 35, 0, 35,
+ 4, 38, 4, 40, 0, 38, 4, 43, 4, 44, 0, 41, 4, 46, 4, 48, 0, 43, 4, 50, 4, 50, 0, 46, 4, 52, 4, 54, 0, 47, 4, 56,
+ 4, 57, 0, 50, 4, 59, 4, 59, 0, 52, 0, 2, 0, 82, 0, 38, 10,250, 11, 0, 11, 6, 11, 10, 11, 14, 11, 18, 11, 22, 11, 34,
+ 11, 38, 11, 42, 11, 46, 11, 50, 11, 54, 11, 58, 11, 62, 11, 66, 11, 70, 11, 74, 11, 78, 11, 82, 11, 86, 11, 90, 11, 98, 10,174,
+ 10,166, 10,154, 10,158, 10,170, 10,162, 10,190, 10,186, 10,194, 10,198, 10,178, 10,206, 10,210, 10,216, 10,222, 0, 1, 0, 38,
+ 3,228, 3,230, 3,232, 3,233, 3,234, 3,235, 3,236, 3,241, 3,242, 3,243, 3,244, 3,245, 3,246, 3,247, 3,248, 3,250,
+ 3,251, 3,252, 3,253, 3,254, 3,255, 4, 0, 4, 3, 4, 33, 4, 34, 4, 35, 4, 38, 4, 39, 4, 40, 4, 43, 4, 44, 4, 46,
+ 4, 47, 4, 52, 4, 53, 4, 54, 4, 57, 4, 59, 0, 2, 0, 82, 0, 38, 10,249, 10,255, 11, 5, 11, 9, 11, 13, 11, 17, 11, 21,
+ 11, 33, 11, 37, 11, 41, 11, 45, 11, 49, 11, 53, 11, 57, 11, 61, 11, 65, 11, 69, 11, 73, 11, 77, 11, 81, 11, 85, 11, 89, 11, 97,
+ 10,173, 10,165, 10,153, 10,157, 10,169, 10,161, 10,189, 10,185, 10,193, 10,197, 10,177, 10,205, 10,209, 10,215, 10,221, 0, 1,
+ 0, 38, 3,228, 3,230, 3,232, 3,233, 3,234, 3,235, 3,236, 3,241, 3,242, 3,243, 3,244, 3,245, 3,246, 3,247, 3,248,
+ 3,250, 3,251, 3,252, 3,253, 3,254, 3,255, 4, 0, 4, 3, 4, 33, 4, 34, 4, 35, 4, 38, 4, 39, 4, 40, 4, 43, 4, 44,
+ 4, 46, 4, 47, 4, 52, 4, 53, 4, 54, 4, 57, 4, 59, 0, 1, 0, 30, 0, 2, 0, 10, 0, 20, 0, 1, 0, 4, 11,105, 0, 2,
+ 10,252, 0, 1, 0, 4, 11,106, 0, 2, 10,252, 0, 1, 0, 2, 11, 77, 11, 78, 0, 1, 0, 62, 0, 2, 0, 10, 0, 36, 0, 3,
+ 0, 8, 0, 14, 0, 20, 11,103, 0, 2, 10,246, 11,101, 0, 2, 10,242, 11, 99, 0, 2, 10,240, 0, 3, 0, 8, 0, 14, 0, 20,
+ 11,104, 0, 2, 10,246, 11,102, 0, 2, 10,242, 11,100, 0, 2, 10,240, 0, 1, 0, 2, 11, 77, 11, 78, 0, 1, 0, 26, 0, 1,
+ 0, 8, 0, 2, 0, 6, 0, 12, 10,150, 0, 2, 0, 79, 10,149, 0, 2, 0, 76, 0, 1, 0, 1, 0, 73, 0, 2, 0, 10, 0, 2,
+ 0,243, 1,226, 0, 1, 0, 2, 0, 76, 0, 77, 0, 1, 4,209, 1,144, 0, 5, 0, 0, 5, 51, 5,153, 0, 0, 1, 30, 5, 51,
+ 5,153, 0, 0, 3,215, 0,102, 2, 18, 0, 0, 2, 11, 6, 9, 3, 8, 4, 2, 2, 4,230, 0, 34,255,210, 0,249,251, 2, 0,
+ 0, 40, 0, 0, 0, 0, 80,102, 69,100, 0, 64, 0, 32,255,255, 6, 20,254, 20, 1,154, 7,109, 1,227, 96, 0, 0,223,255,223,
+ 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 3, 0, 0, 0, 44, 0, 0, 0, 4, 0, 0, 7,156, 0, 1, 0, 0, 0, 0, 18,188,
+ 0, 3, 0, 1, 0, 0, 0, 44, 0, 3, 0, 10, 0, 0, 7,156, 0, 4, 7,112, 0, 0, 1,216, 1, 0, 0, 7, 0,216, 0, 0,
+ 0,126, 1,185, 1,190, 1,195, 1,227, 1,240, 1,246, 1,249, 2, 27, 2, 33, 2, 65, 2, 69, 2,185, 2,193, 2,201, 2,205,
+ 2,211, 2,214, 2,222, 2,233, 2,243, 3, 63, 3, 67, 3, 88, 3, 97, 3,117, 3,122, 3,126, 3,138, 3,140, 3,161, 3,206,
+ 3,225, 4, 95, 4,155, 4,163, 4,179, 4,187, 4,196, 4,200, 4,204, 4,249, 6, 12, 6, 21, 6, 27, 6, 31, 6, 58, 6, 85,
+ 6, 90, 6,111, 6,116, 6,135, 6,146, 6,152, 6,161, 6,164, 6,169, 6,175, 6,181, 6,186, 6,190, 6,198, 6,204, 6,206,
+ 6,213, 6,249, 14,130, 14,132, 14,136, 14,138, 14,141, 14,151, 14,159, 14,163, 14,165, 14,167, 14,171, 14,185, 14,188, 14,205,
+ 16,252, 29, 2, 29, 9, 29, 20, 29, 23, 29, 31, 29, 46, 29, 60, 29, 91, 29,101, 29,120, 29,123, 29,133, 29,183, 29,191, 30, 19,
+ 30, 37, 30, 45, 30, 75, 30, 99, 30,119, 30,139, 30,143, 30,150, 30,155, 30,161, 30,177, 30,185, 30,189, 30,205, 30,229, 30,245,
+ 30,249, 31, 21, 31, 29, 31, 69, 31, 77, 31, 87, 31, 89, 31, 91, 31, 93, 31,125, 31,180, 31,196, 31,211, 31,219, 31,239, 31,244,
+ 31,254, 32, 10, 32, 21, 32, 35, 32, 38, 32, 49, 32, 58, 32, 62, 32, 73, 32, 95, 32,113, 32,142, 32,148, 32,166, 32,172, 32,177,
+ 32,181, 33, 2, 33, 14, 33, 22, 33, 34, 33, 38, 33, 43, 33, 95, 33,255, 34, 2, 34, 13, 34, 15, 34, 19, 34, 21, 34, 26, 34, 32,
+ 34, 45, 34, 61, 34,105, 34,139, 34,146, 34,161, 34,198, 34,205, 34,233, 34,239, 35, 6, 35, 21, 35, 25, 35, 33, 35, 40, 35, 43,
+ 35, 53, 35, 62, 35, 68, 35, 73, 35, 77, 35, 80, 35, 84, 35, 92, 35, 96, 35,101, 35,105, 35,112, 35,122, 35,125, 35,131, 35,139,
+ 35,149, 35,174, 35,207, 36, 35, 38, 47, 38,139, 38,156, 38,161, 38,177, 39, 4, 39, 9, 39, 39, 39, 75, 39, 77, 39, 82, 39, 86,
+ 39, 94, 39,117, 39,148, 39,175, 39,190, 39,224, 39,233, 41,235, 41,251, 42, 47, 43, 26, 44,119, 46, 24, 46, 46,246,197,251, 2,
+251,129,251,149,251,159,251,173,251,233,251,255,254,116,254,252,254,255,255,253,255,255, 0, 0, 0, 0, 0, 32, 0,160, 1,187,
+ 1,192, 1,205, 1,230, 1,244, 1,248, 1,252, 2, 30, 2, 36, 2, 69, 2, 80, 2,187, 2,198, 2,204, 2,208, 2,214, 2,216,
+ 2,224, 2,243, 3, 0, 3, 67, 3, 88, 3, 97, 3,116, 3,122, 3,126, 3,132, 3,140, 3,142, 3,163, 3,208, 3,240, 4,144,
+ 4,162, 4,170, 4,186, 4,192, 4,199, 4,203, 4,207, 6, 12, 6, 21, 6, 27, 6, 31, 6, 33, 6, 64, 6, 90, 6, 96, 6,116,
+ 6,121, 6,145, 6,152, 6,161, 6,164, 6,169, 6,175, 6,181, 6,186, 6,190, 6,198, 6,204, 6,206, 6,213, 6,240, 14,129,
+ 14,132, 14,135, 14,138, 14,141, 14,148, 14,153, 14,161, 14,165, 14,167, 14,170, 14,173, 14,187, 14,200, 16,208, 29, 2, 29, 8,
+ 29, 20, 29, 22, 29, 29, 29, 44, 29, 48, 29, 62, 29, 98, 29,119, 29,123, 29,133, 29,155, 29,185, 30, 0, 30, 24, 30, 40, 30, 48,
+ 30, 86, 30,104, 30,126, 30,142, 30,146, 30,155, 30,160, 30,176, 30,184, 30,188, 30,202, 30,228, 30,242, 30,248, 31, 0, 31, 24,
+ 31, 32, 31, 72, 31, 80, 31, 89, 31, 91, 31, 93, 31, 95, 31,128, 31,182, 31,198, 31,214, 31,221, 31,242, 31,246, 32, 0, 32, 16,
+ 32, 23, 32, 38, 32, 47, 32, 57, 32, 60, 32, 69, 32, 95, 32,112, 32,116, 32,144, 32,166, 32,172, 32,177, 32,180, 33, 2, 33, 14,
+ 33, 22, 33, 34, 33, 38, 33, 42, 33, 83, 33,144, 34, 2, 34, 5, 34, 15, 34, 17, 34, 21, 34, 23, 34, 29, 34, 39, 34, 56, 34, 65,
+ 34,109, 34,143, 34,149, 34,197, 34,205, 34,218, 34,239, 35, 0, 35, 8, 35, 24, 35, 28, 35, 37, 35, 43, 35, 53, 35, 55, 35, 65,
+ 35, 71, 35, 75, 35, 80, 35, 82, 35, 87, 35, 94, 35, 99, 35,104, 35,107, 35,115, 35,125, 35,128, 35,136, 35,149, 35,155, 35,206,
+ 36, 35, 37, 0, 38, 56, 38,144, 38,160, 38,176, 39, 1, 39, 6, 39, 12, 39, 41, 39, 77, 39, 79, 39, 86, 39, 88, 39, 97, 39,148,
+ 39,152, 39,177, 39,224, 39,232, 41,235, 41,250, 42, 47, 43, 18, 44,117, 46, 24, 46, 46,246,197,251, 1,251, 82,251,138,251,158,
+251,170,251,232,251,252,254,112,254,118,254,255,255,249,255,255, 0, 0,255,227,255,194,255,193,255,192,255,183,255,181,255,178,
+255,177,255,175,255,173,255,171,255,168,255,158,255,157,255,153,255,151,255,149,255,147,255,146,255,145,255,136,255,124,255,121,
+255,101,255, 93,255, 75,255, 71,255, 68,255, 63,255, 62,255, 61,255, 60,255, 59,255, 45,254,253,254,247,254,241,254,235,254,231,
+254,229,254,227,254,225,253,207,253,199,253,194,253,191,253,190,253,185,253,181,253,176,253,172,253,168,253,159,253,154,253,146,
+253,144,253,140,253,135,253,130,253,126,253,123,253,116,253,111,253,110,253,104,253, 78,245,199,245,198,245,196,245,195,245,193,
+245,187,245,186,245,185,245,184,245,183,245,181,245,180,245,179,245,168,243,166,231,161,231,156,231,146,231,145,231,140,231,128,
+231,127,231,126,231,120,231,103,231,101,231, 92,231, 71,231, 70,231, 6,231, 2,231, 0,230,254,230,244,230,240,230,234,230,232,
+230,230,230,226,230,222,230,208,230,202,230,200,230,188,230,166,230,154,230,152,230,146,230,144,230,142,230,140,230,138,230,137,
+230,136,230,135,230,134,230,132,230,131,230,130,230,128,230,127,230,125,230,124,230,123,230,118,230,117,230,115,230,107,230,100,
+230, 99,230, 93,230, 72,230, 56,230, 54,230, 53,230, 36,230, 31,230, 27,230, 25,229,205,229,194,229,187,229,176,229,173,229,170,
+229,131,229, 83,229, 81,229, 79,229, 78,229, 77,229, 76,229, 75,229, 73,229, 67,229, 57,229, 54,229, 51,229, 48,229, 46,229, 11,
+229, 5,228,249,228,244,228,228,228,227,228,225,228,223,228,220,228,218,228,209,228,208,228,206,228,204,228,203,228,201,228,200,
+228,198,228,197,228,195,228,193,228,192,228,190,228,188,228,186,228,182,228,173,228,168,228,137,228, 54,227, 90,227, 82,227, 78,
+227, 75,227, 61,226,238,226,237,226,235,226,234,226,233,226,232,226,229,226,228,226,226,226,196,226,193,226,192,226,159,226,152,
+224,151,224,137,224, 86,223,116,222, 26,220,122,220,101, 19,207, 15,148, 15, 69, 15, 61, 15, 53, 15, 43, 14,241, 14,223, 12,111,
+ 12,110, 12,108, 11,115, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 12, 0, 0, 0, 0, 11, 32, 0, 0, 0, 0, 0, 0, 0,236, 0, 0, 0, 32, 0, 0, 0,126, 0, 0, 0, 3, 0, 0, 0,160,
+ 0, 0, 1,185, 0, 0, 0, 98, 0, 0, 1,187, 0, 0, 1,190, 0, 0, 1,124, 0, 0, 1,192, 0, 0, 1,195, 0, 0, 1,128,
+ 0, 0, 1,205, 0, 0, 1,227, 0, 0, 1,132, 0, 0, 1,230, 0, 0, 1,240, 0, 0, 1,155, 0, 0, 1,244, 0, 0, 1,246,
+ 0, 0, 1,166, 0, 0, 1,248, 0, 0, 1,249, 0, 0, 1,169, 0, 0, 1,252, 0, 0, 2, 27, 0, 0, 1,171, 0, 0, 2, 30,
+ 0, 0, 2, 33, 0, 0, 1,203, 0, 0, 2, 36, 0, 0, 2, 65, 0, 0, 1,207, 0, 0, 2, 69, 0, 0, 2, 69, 0, 0, 1,237,
+ 0, 0, 2, 80, 0, 0, 2,185, 0, 0, 1,238, 0, 0, 2,187, 0, 0, 2,193, 0, 0, 2, 88, 0, 0, 2,198, 0, 0, 2,201,
+ 0, 0, 2, 95, 0, 0, 2,204, 0, 0, 2,205, 0, 0, 2, 99, 0, 0, 2,208, 0, 0, 2,211, 0, 0, 2,101, 0, 0, 2,214,
+ 0, 0, 2,214, 0, 0, 2,105, 0, 0, 2,216, 0, 0, 2,222, 0, 0, 2,106, 0, 0, 2,224, 0, 0, 2,233, 0, 0, 2,113,
+ 0, 0, 2,243, 0, 0, 2,243, 0, 0, 2,123, 0, 0, 3, 0, 0, 0, 3, 63, 0, 0, 2,124, 0, 0, 3, 67, 0, 0, 3, 67,
+ 0, 0, 2,188, 0, 0, 3, 88, 0, 0, 3, 88, 0, 0, 2,189, 0, 0, 3, 97, 0, 0, 3, 97, 0, 0, 2,190, 0, 0, 3,116,
+ 0, 0, 3,117, 0, 0, 2,191, 0, 0, 3,122, 0, 0, 3,122, 0, 0, 2,193, 0, 0, 3,126, 0, 0, 3,126, 0, 0, 2,194,
+ 0, 0, 3,132, 0, 0, 3,138, 0, 0, 2,195, 0, 0, 3,140, 0, 0, 3,140, 0, 0, 2,202, 0, 0, 3,142, 0, 0, 3,161,
+ 0, 0, 2,203, 0, 0, 3,163, 0, 0, 3,206, 0, 0, 2,223, 0, 0, 3,208, 0, 0, 3,225, 0, 0, 3, 11, 0, 0, 3,240,
+ 0, 0, 4, 95, 0, 0, 3, 29, 0, 0, 4,144, 0, 0, 4,155, 0, 0, 3,141, 0, 0, 4,162, 0, 0, 4,163, 0, 0, 3,153,
+ 0, 0, 4,170, 0, 0, 4,179, 0, 0, 3,155, 0, 0, 4,186, 0, 0, 4,187, 0, 0, 3,165, 0, 0, 4,192, 0, 0, 4,196,
+ 0, 0, 3,167, 0, 0, 4,199, 0, 0, 4,200, 0, 0, 3,172, 0, 0, 4,203, 0, 0, 4,204, 0, 0, 3,174, 0, 0, 4,207,
+ 0, 0, 4,249, 0, 0, 3,176, 0, 0, 6, 12, 0, 0, 6, 12, 0, 0, 3,219, 0, 0, 6, 21, 0, 0, 6, 21, 0, 0, 3,220,
+ 0, 0, 6, 27, 0, 0, 6, 27, 0, 0, 3,221, 0, 0, 6, 31, 0, 0, 6, 31, 0, 0, 3,222, 0, 0, 6, 33, 0, 0, 6, 58,
+ 0, 0, 3,223, 0, 0, 6, 64, 0, 0, 6, 85, 0, 0, 3,249, 0, 0, 6, 90, 0, 0, 6, 90, 0, 0, 4, 15, 0, 0, 6, 96,
+ 0, 0, 6,111, 0, 0, 4, 16, 0, 0, 6,116, 0, 0, 6,116, 0, 0, 4, 32, 0, 0, 6,121, 0, 0, 6,135, 0, 0, 4, 33,
+ 0, 0, 6,145, 0, 0, 6,146, 0, 0, 4, 48, 0, 0, 6,152, 0, 0, 6,152, 0, 0, 4, 50, 0, 0, 6,161, 0, 0, 6,161,
+ 0, 0, 4, 51, 0, 0, 6,164, 0, 0, 6,164, 0, 0, 4, 52, 0, 0, 6,169, 0, 0, 6,169, 0, 0, 4, 53, 0, 0, 6,175,
+ 0, 0, 6,175, 0, 0, 4, 54, 0, 0, 6,181, 0, 0, 6,181, 0, 0, 4, 55, 0, 0, 6,186, 0, 0, 6,186, 0, 0, 4, 56,
+ 0, 0, 6,190, 0, 0, 6,190, 0, 0, 4, 57, 0, 0, 6,198, 0, 0, 6,198, 0, 0, 4, 58, 0, 0, 6,204, 0, 0, 6,204,
+ 0, 0, 4, 59, 0, 0, 6,206, 0, 0, 6,206, 0, 0, 4, 60, 0, 0, 6,213, 0, 0, 6,213, 0, 0, 4, 61, 0, 0, 6,240,
+ 0, 0, 6,249, 0, 0, 4, 62, 0, 0, 14,129, 0, 0, 14,130, 0, 0, 4, 72, 0, 0, 14,132, 0, 0, 14,132, 0, 0, 4, 74,
+ 0, 0, 14,135, 0, 0, 14,136, 0, 0, 4, 75, 0, 0, 14,138, 0, 0, 14,138, 0, 0, 4, 77, 0, 0, 14,141, 0, 0, 14,141,
+ 0, 0, 4, 78, 0, 0, 14,148, 0, 0, 14,151, 0, 0, 4, 79, 0, 0, 14,153, 0, 0, 14,159, 0, 0, 4, 83, 0, 0, 14,161,
+ 0, 0, 14,163, 0, 0, 4, 90, 0, 0, 14,165, 0, 0, 14,165, 0, 0, 4, 93, 0, 0, 14,167, 0, 0, 14,167, 0, 0, 4, 94,
+ 0, 0, 14,170, 0, 0, 14,171, 0, 0, 4, 95, 0, 0, 14,173, 0, 0, 14,185, 0, 0, 4, 97, 0, 0, 14,187, 0, 0, 14,188,
+ 0, 0, 4,110, 0, 0, 14,200, 0, 0, 14,205, 0, 0, 4,112, 0, 0, 16,208, 0, 0, 16,252, 0, 0, 4,118, 0, 0, 29, 2,
+ 0, 0, 29, 2, 0, 0, 4,163, 0, 0, 29, 8, 0, 0, 29, 9, 0, 0, 4,164, 0, 0, 29, 20, 0, 0, 29, 20, 0, 0, 4,166,
+ 0, 0, 29, 22, 0, 0, 29, 23, 0, 0, 4,167, 0, 0, 29, 29, 0, 0, 29, 31, 0, 0, 4,169, 0, 0, 29, 44, 0, 0, 29, 46,
+ 0, 0, 4,172, 0, 0, 29, 48, 0, 0, 29, 60, 0, 0, 4,175, 0, 0, 29, 62, 0, 0, 29, 91, 0, 0, 4,188, 0, 0, 29, 98,
+ 0, 0, 29,101, 0, 0, 4,218, 0, 0, 29,119, 0, 0, 29,120, 0, 0, 4,222, 0, 0, 29,123, 0, 0, 29,123, 0, 0, 4,224,
+ 0, 0, 29,133, 0, 0, 29,133, 0, 0, 4,225, 0, 0, 29,155, 0, 0, 29,183, 0, 0, 4,226, 0, 0, 29,185, 0, 0, 29,191,
+ 0, 0, 4,255, 0, 0, 30, 0, 0, 0, 30, 19, 0, 0, 5, 6, 0, 0, 30, 24, 0, 0, 30, 37, 0, 0, 5, 26, 0, 0, 30, 40,
+ 0, 0, 30, 45, 0, 0, 5, 40, 0, 0, 30, 48, 0, 0, 30, 75, 0, 0, 5, 46, 0, 0, 30, 86, 0, 0, 30, 99, 0, 0, 5, 74,
+ 0, 0, 30,104, 0, 0, 30,119, 0, 0, 5, 88, 0, 0, 30,126, 0, 0, 30,139, 0, 0, 5,104, 0, 0, 30,142, 0, 0, 30,143,
+ 0, 0, 5,118, 0, 0, 30,146, 0, 0, 30,150, 0, 0, 5,120, 0, 0, 30,155, 0, 0, 30,155, 0, 0, 5,125, 0, 0, 30,160,
+ 0, 0, 30,161, 0, 0, 5,126, 0, 0, 30,176, 0, 0, 30,177, 0, 0, 5,128, 0, 0, 30,184, 0, 0, 30,185, 0, 0, 5,130,
+ 0, 0, 30,188, 0, 0, 30,189, 0, 0, 5,132, 0, 0, 30,202, 0, 0, 30,205, 0, 0, 5,134, 0, 0, 30,228, 0, 0, 30,229,
+ 0, 0, 5,138, 0, 0, 30,242, 0, 0, 30,245, 0, 0, 5,140, 0, 0, 30,248, 0, 0, 30,249, 0, 0, 5,144, 0, 0, 31, 0,
+ 0, 0, 31, 21, 0, 0, 5,146, 0, 0, 31, 24, 0, 0, 31, 29, 0, 0, 5,168, 0, 0, 31, 32, 0, 0, 31, 69, 0, 0, 5,174,
+ 0, 0, 31, 72, 0, 0, 31, 77, 0, 0, 5,212, 0, 0, 31, 80, 0, 0, 31, 87, 0, 0, 5,218, 0, 0, 31, 89, 0, 0, 31, 89,
+ 0, 0, 5,226, 0, 0, 31, 91, 0, 0, 31, 91, 0, 0, 5,227, 0, 0, 31, 93, 0, 0, 31, 93, 0, 0, 5,228, 0, 0, 31, 95,
+ 0, 0, 31,125, 0, 0, 5,229, 0, 0, 31,128, 0, 0, 31,180, 0, 0, 6, 4, 0, 0, 31,182, 0, 0, 31,196, 0, 0, 6, 57,
+ 0, 0, 31,198, 0, 0, 31,211, 0, 0, 6, 72, 0, 0, 31,214, 0, 0, 31,219, 0, 0, 6, 86, 0, 0, 31,221, 0, 0, 31,239,
+ 0, 0, 6, 92, 0, 0, 31,242, 0, 0, 31,244, 0, 0, 6,111, 0, 0, 31,246, 0, 0, 31,254, 0, 0, 6,114, 0, 0, 32, 0,
+ 0, 0, 32, 10, 0, 0, 6,123, 0, 0, 32, 16, 0, 0, 32, 21, 0, 0, 6,134, 0, 0, 32, 23, 0, 0, 32, 35, 0, 0, 6,140,
+ 0, 0, 32, 38, 0, 0, 32, 38, 0, 0, 6,153, 0, 0, 32, 47, 0, 0, 32, 49, 0, 0, 6,154, 0, 0, 32, 57, 0, 0, 32, 58,
+ 0, 0, 6,157, 0, 0, 32, 60, 0, 0, 32, 62, 0, 0, 6,159, 0, 0, 32, 69, 0, 0, 32, 73, 0, 0, 6,162, 0, 0, 32, 95,
+ 0, 0, 32, 95, 0, 0, 6,167, 0, 0, 32,112, 0, 0, 32,113, 0, 0, 6,168, 0, 0, 32,116, 0, 0, 32,142, 0, 0, 6,170,
+ 0, 0, 32,144, 0, 0, 32,148, 0, 0, 6,197, 0, 0, 32,166, 0, 0, 32,166, 0, 0, 6,202, 0, 0, 32,172, 0, 0, 32,172,
+ 0, 0, 6,203, 0, 0, 32,177, 0, 0, 32,177, 0, 0, 6,204, 0, 0, 32,180, 0, 0, 32,181, 0, 0, 6,205, 0, 0, 33, 2,
+ 0, 0, 33, 2, 0, 0, 6,207, 0, 0, 33, 14, 0, 0, 33, 14, 0, 0, 6,208, 0, 0, 33, 22, 0, 0, 33, 22, 0, 0, 6,209,
+ 0, 0, 33, 34, 0, 0, 33, 34, 0, 0, 6,210, 0, 0, 33, 38, 0, 0, 33, 38, 0, 0, 6,211, 0, 0, 33, 42, 0, 0, 33, 43,
+ 0, 0, 6,212, 0, 0, 33, 83, 0, 0, 33, 95, 0, 0, 6,214, 0, 0, 33,144, 0, 0, 33,255, 0, 0, 6,227, 0, 0, 34, 2,
+ 0, 0, 34, 2, 0, 0, 7, 83, 0, 0, 34, 5, 0, 0, 34, 13, 0, 0, 7, 84, 0, 0, 34, 15, 0, 0, 34, 15, 0, 0, 7, 93,
+ 0, 0, 34, 17, 0, 0, 34, 19, 0, 0, 7, 94, 0, 0, 34, 21, 0, 0, 34, 21, 0, 0, 7, 97, 0, 0, 34, 23, 0, 0, 34, 26,
+ 0, 0, 7, 98, 0, 0, 34, 29, 0, 0, 34, 32, 0, 0, 7,102, 0, 0, 34, 39, 0, 0, 34, 45, 0, 0, 7,106, 0, 0, 34, 56,
+ 0, 0, 34, 61, 0, 0, 7,113, 0, 0, 34, 65, 0, 0, 34,105, 0, 0, 7,119, 0, 0, 34,109, 0, 0, 34,139, 0, 0, 7,160,
+ 0, 0, 34,143, 0, 0, 34,146, 0, 0, 7,191, 0, 0, 34,149, 0, 0, 34,161, 0, 0, 7,195, 0, 0, 34,197, 0, 0, 34,198,
+ 0, 0, 7,208, 0, 0, 34,205, 0, 0, 34,205, 0, 0, 7,210, 0, 0, 34,218, 0, 0, 34,233, 0, 0, 7,211, 0, 0, 34,239,
+ 0, 0, 34,239, 0, 0, 7,227, 0, 0, 35, 0, 0, 0, 35, 6, 0, 0, 7,228, 0, 0, 35, 8, 0, 0, 35, 21, 0, 0, 7,235,
+ 0, 0, 35, 24, 0, 0, 35, 25, 0, 0, 7,249, 0, 0, 35, 28, 0, 0, 35, 33, 0, 0, 7,251, 0, 0, 35, 37, 0, 0, 35, 40,
+ 0, 0, 8, 1, 0, 0, 35, 43, 0, 0, 35, 43, 0, 0, 8, 5, 0, 0, 35, 53, 0, 0, 35, 53, 0, 0, 8, 6, 0, 0, 35, 55,
+ 0, 0, 35, 62, 0, 0, 8, 7, 0, 0, 35, 65, 0, 0, 35, 68, 0, 0, 8, 15, 0, 0, 35, 71, 0, 0, 35, 73, 0, 0, 8, 19,
+ 0, 0, 35, 75, 0, 0, 35, 77, 0, 0, 8, 22, 0, 0, 35, 80, 0, 0, 35, 80, 0, 0, 8, 25, 0, 0, 35, 82, 0, 0, 35, 84,
+ 0, 0, 8, 26, 0, 0, 35, 87, 0, 0, 35, 92, 0, 0, 8, 29, 0, 0, 35, 94, 0, 0, 35, 96, 0, 0, 8, 35, 0, 0, 35, 99,
+ 0, 0, 35,101, 0, 0, 8, 38, 0, 0, 35,104, 0, 0, 35,105, 0, 0, 8, 41, 0, 0, 35,107, 0, 0, 35,112, 0, 0, 8, 43,
+ 0, 0, 35,115, 0, 0, 35,122, 0, 0, 8, 49, 0, 0, 35,125, 0, 0, 35,125, 0, 0, 8, 57, 0, 0, 35,128, 0, 0, 35,131,
+ 0, 0, 8, 58, 0, 0, 35,136, 0, 0, 35,139, 0, 0, 8, 62, 0, 0, 35,149, 0, 0, 35,149, 0, 0, 8, 66, 0, 0, 35,155,
+ 0, 0, 35,174, 0, 0, 8, 67, 0, 0, 35,206, 0, 0, 35,207, 0, 0, 8, 87, 0, 0, 36, 35, 0, 0, 36, 35, 0, 0, 8, 89,
+ 0, 0, 37, 0, 0, 0, 38, 47, 0, 0, 8, 90, 0, 0, 38, 56, 0, 0, 38,139, 0, 0, 9,138, 0, 0, 38,144, 0, 0, 38,156,
+ 0, 0, 9,222, 0, 0, 38,160, 0, 0, 38,161, 0, 0, 9,235, 0, 0, 38,176, 0, 0, 38,177, 0, 0, 9,237, 0, 0, 39, 1,
+ 0, 0, 39, 4, 0, 0, 9,239, 0, 0, 39, 6, 0, 0, 39, 9, 0, 0, 9,243, 0, 0, 39, 12, 0, 0, 39, 39, 0, 0, 9,247,
+ 0, 0, 39, 41, 0, 0, 39, 75, 0, 0, 10, 19, 0, 0, 39, 77, 0, 0, 39, 77, 0, 0, 10, 54, 0, 0, 39, 79, 0, 0, 39, 82,
+ 0, 0, 10, 55, 0, 0, 39, 86, 0, 0, 39, 86, 0, 0, 10, 59, 0, 0, 39, 88, 0, 0, 39, 94, 0, 0, 10, 60, 0, 0, 39, 97,
+ 0, 0, 39,117, 0, 0, 10, 67, 0, 0, 39,148, 0, 0, 39,148, 0, 0, 10, 88, 0, 0, 39,152, 0, 0, 39,175, 0, 0, 10, 89,
+ 0, 0, 39,177, 0, 0, 39,190, 0, 0, 10,113, 0, 0, 39,224, 0, 0, 39,224, 0, 0, 10,127, 0, 0, 39,232, 0, 0, 39,233,
+ 0, 0, 10,128, 0, 0, 41,235, 0, 0, 41,235, 0, 0, 10,130, 0, 0, 41,250, 0, 0, 41,251, 0, 0, 10,131, 0, 0, 42, 47,
+ 0, 0, 42, 47, 0, 0, 10,133, 0, 0, 43, 18, 0, 0, 43, 26, 0, 0, 10,134, 0, 0, 44,117, 0, 0, 44,119, 0, 0, 10,143,
+ 0, 0, 46, 24, 0, 0, 46, 24, 0, 0, 10,146, 0, 0, 46, 46, 0, 0, 46, 46, 0, 0, 10,147, 0, 0,246,197, 0, 0,246,197,
+ 0, 0, 10,148, 0, 0,251, 1, 0, 0,251, 2, 0, 0, 10,149, 0, 0,251, 82, 0, 0,251,129, 0, 0, 10,151, 0, 0,251,138,
+ 0, 0,251,149, 0, 0, 10,199, 0, 0,251,158, 0, 0,251,159, 0, 0, 10,211, 0, 0,251,170, 0, 0,251,173, 0, 0, 10,213,
+ 0, 0,251,232, 0, 0,251,233, 0, 0, 10,217, 0, 0,251,252, 0, 0,251,255, 0, 0, 10,219, 0, 0,254,112, 0, 0,254,116,
+ 0, 0, 10,223, 0, 0,254,118, 0, 0,254,252, 0, 0, 10,228, 0, 0,254,255, 0, 0,254,255, 0, 0, 11,107, 0, 0,255,249,
+ 0, 0,255,253, 0, 0, 11,108, 0, 1,214,112, 0, 1,214,163, 0, 0, 11,113, 0, 1,215,246, 0, 1,215,255, 0, 0, 11,165,
+ 0, 6, 2, 10, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0,
+ 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13,
+ 0, 14, 0, 15, 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22, 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 29,
+ 0, 30, 0, 31, 0, 32, 0, 33, 0, 34, 0, 35, 0, 36, 0, 37, 0, 38, 0, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45,
+ 0, 46, 0, 47, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54, 0, 55, 0, 56, 0, 57, 0, 58, 0, 59, 0, 60, 0, 61,
+ 0, 62, 0, 63, 0, 64, 0, 65, 0, 66, 0, 67, 0, 68, 0, 69, 0, 70, 0, 71, 0, 72, 0, 73, 0, 74, 0, 75, 0, 76, 0, 77,
+ 0, 78, 0, 79, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, 86, 0, 87, 0, 88, 0, 89, 0, 90, 0, 91, 0, 92, 0, 93,
+ 0, 94, 0, 95, 0, 96, 0, 97, 0, 0, 0,134, 0,135, 0,137, 0,139, 0,147, 0,152, 0,158, 0,163, 0,162, 0,164, 0,166,
+ 0,165, 0,167, 0,169, 0,171, 0,170, 0,172, 0,173, 0,175, 0,174, 0,176, 0,177, 0,179, 0,181, 0,180, 0,182, 0,184,
+ 0,183, 0,188, 0,187, 0,189, 0,190, 6,149, 0,114, 0,100, 0,101, 0,105, 6,151, 0,120, 0,161, 0,112, 0,107, 6,210,
+ 0,118, 0,106, 7,150, 0,136, 0,154, 7,103, 0,115, 7,154, 7,155, 0,103, 0,119, 7, 83, 7, 94, 7, 93, 2,252, 7,110,
+ 0,108, 0,124, 2,229, 0,168, 0,186, 0,129, 0, 99, 0,110, 7,101, 1, 84, 7,126, 7, 85, 0,109, 0,125, 6,153, 0, 98,
+ 0,130, 0,133, 0,151, 1, 20, 1, 21, 6,137, 6,138, 6,145, 6,146, 6,141, 6,142, 0,185, 9, 36, 0,193, 1, 58, 0, 0,
+ 6,203, 6,157, 6,158, 10,149, 10,150, 6,150, 0,121, 6,143, 6,147, 6,155, 0,132, 0,140, 0,131, 0,141, 0,138, 0,143,
+ 0,144, 0,145, 0,142, 0,149, 0,150, 0, 0, 0,148, 0,156, 0,157, 0,155, 0,243, 2, 95, 2,110, 0,113, 2,106, 2,107,
+ 2,108, 0,122, 2,111, 2,109, 2, 96, 0, 0, 0,184, 0,203, 0,184, 0,203, 0,170, 1,145, 0,184, 0,102, 0, 0, 0,184,
+ 0,135, 2,127, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0,184, 0,195, 0,203, 0, 2, 0,203, 0,184, 0,184, 1,203, 1,137,
+ 1,186, 0,203, 0,166, 0,252, 0,203, 0,131, 0,242, 1, 10, 3,199, 1, 55, 0,131, 0,190, 0, 0, 0, 88, 4, 33, 0,203,
+ 0,143, 0,156, 0, 2, 0, 2, 0,143, 3,231, 0,117, 3,188, 0,211, 0,201, 0,219, 0,117, 3,231, 1, 57, 3,186, 0,203,
+ 1,211, 0, 33, 1,223, 0,184, 0,137, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 3,190, 0,137, 0,195, 3,190, 0,123, 3,190,
+ 3, 88, 1, 31, 1,109, 0,164, 1,174, 0, 0, 0,123, 0,184, 1,111, 0,127, 2,123, 0,184, 2, 82, 0,143, 0,205, 4,209,
+ 0, 0, 0,205, 0,135, 0,135, 0,147, 0,164, 0,111, 0,205, 0,203, 0,184, 0,131, 1,145, 0,221, 0,180, 0,139, 0,244,
+ 0,152, 2,233, 0, 90, 0,180, 0,186, 0,197, 4, 33, 0,254, 0, 14, 0, 2, 0, 2, 0, 2, 1,213, 0,246, 0,127, 2,170,
+ 2, 61, 2,102, 0,139, 0,197, 0,143, 0,154, 0,154, 1,131, 0,213, 0,115, 4, 0, 1, 10, 0,254, 0,225, 5,213, 2, 43,
+ 0,164, 0,180, 0,156, 0, 0, 0, 98, 0,156, 5,213, 5,152, 0,135, 2,127, 5,213, 5,213, 5,240, 0,164, 0, 0, 0, 29,
+ 6,184, 6, 20, 7, 35, 1,211, 0,184, 0,203, 0,166, 1,188, 1, 49, 2, 78, 0,211, 1, 10, 0,123, 0, 84, 3, 92, 3,113,
+ 3,219, 1,133, 4, 35, 4,119, 3,233, 0,143, 2, 0, 3, 96, 0,106, 0,207, 5,213, 6, 20, 0,143, 7, 35, 0,143, 6,102,
+ 1,121, 4, 96, 4, 96, 4, 96, 4,123, 0, 0, 0,123, 2,119, 4, 96, 1,170, 0,233, 6, 20, 7, 98, 3,248, 0,123, 2, 33,
+ 0,197, 0,156, 0,127, 2,123, 0, 0, 0,180, 2, 82, 5, 78, 5, 78, 4,209, 0,102, 0,156, 0,156, 0,102, 0,156, 0,143,
+ 0,102, 0,156, 0,143, 6, 16, 0,205, 3,250, 0,131, 0,145, 2,254, 1, 72, 4, 70, 3, 63, 0,143, 0,123, 4, 76, 0,152,
+ 0,162, 0, 0, 0, 39, 0,111, 0, 0, 0,111, 3, 53, 0,106, 0,111, 0,123, 5,141, 5,141, 5,141, 5,141, 0,170, 0,170,
+ 0, 45, 5,141, 3,150, 2,123, 0,246, 0,127, 2,170, 1, 51, 2, 61, 0,156, 2,102, 1,139, 0,143, 2,246, 0,205, 0,111,
+ 3, 68, 0, 55, 0,102, 0, 29, 5,238, 0,133, 1,180, 6, 20, 0, 0, 7,125, 0,115, 5,213, 0, 0, 20, 0,183, 7, 6, 5,
+ 4, 3, 2, 1, 0, 44, 32, 16,176, 2, 37, 73,100,176, 64, 81, 88, 32,200, 89, 33, 45, 44,176, 2, 37, 73,100,176, 64, 81, 88,
+ 32,200, 89, 33, 45, 44, 32, 16, 7, 32,176, 0, 80,176, 13,121, 32,184,255,255, 80, 88, 4, 27, 5, 89,176, 5, 28,176, 3, 37,
+ 8,176, 4, 37, 35,225, 32,176, 0, 80,176, 13,121, 32,184,255,255, 80, 88, 4, 27, 5, 89,176, 5, 28,176, 3, 37, 8,225, 45,
+ 44, 75, 80, 88, 32,184, 1, 23, 69, 68, 89, 33, 45, 44,176, 2, 37, 69, 96, 68, 45, 44, 75, 83, 88,176, 2, 37,176, 2, 37, 69,
+ 68, 89, 33, 33, 45, 44, 69, 68, 45, 44,176, 2, 37,176, 2, 37, 73,176, 5, 37,176, 5, 37, 73, 96,176, 32, 99,104, 32,138, 16,
+138, 35, 58,138, 16,101, 58, 45, 0, 0, 0, 2, 0, 8, 0, 2,255,255, 0, 3, 0, 2, 0,104,254,150, 4,104, 5,164, 0, 3,
+ 0, 7, 0, 31,188, 0, 4, 1, 20, 0, 0, 0, 6, 1, 20,182, 1, 8, 5,131, 2, 4, 0, 47,196,212,236, 49, 0, 16,212,236,
+212,236, 48, 19, 17, 33, 17, 37, 33, 17, 33,104, 4, 0,252,115, 3, 27,252,229,254,150, 7, 14,248,242,114, 6, 41, 0, 0, 0,
+ 0, 2, 2, 4, 0, 0, 2,207, 5,213, 0, 5, 0, 9, 0, 31, 64, 15, 3,135, 6,134, 0,136, 8, 4, 3, 7, 1, 3, 6, 0,
+ 10, 16,212, 60,236, 50, 57, 57, 49, 0, 47,228,252,236, 48, 1, 51, 17, 3, 35, 3, 17, 51, 21, 35, 2, 4,203, 21,161, 21,203,
+203, 5,213,253,113,254,155, 1,101,253,184,254, 0, 2, 1, 82, 3,170, 3,127, 5,213, 0, 3, 0, 7, 0, 29, 64, 14, 5, 1,
+137, 4, 0,136, 8, 0, 4, 2, 6, 4, 4, 8, 16,212,236,220,236, 49, 0, 16,244, 60,236, 50, 48, 1, 17, 35, 17, 35, 17, 35,
+ 17, 3,127,174,209,174, 5,213,253,213, 2, 43,253,213, 2, 43, 0, 2, 0, 2, 0, 0, 4,205, 5,190, 0, 27, 0, 31, 0, 74,
+ 64, 48, 28, 23, 7,140, 3, 0, 25, 5, 1, 30, 21, 9,140, 19, 15, 11, 17, 13, 31, 30, 29, 28, 27, 26, 24, 23, 22, 19, 18, 17,
+ 16, 15, 14, 13, 12, 10, 9, 8, 5, 4, 3, 2, 1, 0, 26, 6, 20, 32, 16,212,204, 23, 57, 49, 0, 47, 60,212, 60, 60,252, 60,
+ 60,212, 60, 60,196, 50,236, 50, 50, 48, 1, 3, 51, 19, 51, 3, 51, 21, 33, 3, 51, 21, 33, 3, 35, 19, 35, 3, 35, 19, 33, 53,
+ 33, 19, 33, 53, 33, 19, 1, 35, 3, 51, 2,172,104,245,105,160,105,244,254,231, 84,250,254,223,104,160,105,246,105,159,104,254,
+254, 1, 41, 84,254,246, 1, 47,104, 1, 8,245, 84,246, 5,190,254, 97, 1,159,254, 97,154,254,178,153,254, 98, 1,158,254, 98,
+ 1,158,153, 1, 78,154, 1,159,253,199,254,178, 0, 3, 0,190,254,211, 4, 90, 6, 20, 0, 6, 0, 13, 0, 47, 0,100, 64, 57,
+ 8, 40, 36, 0, 7, 41, 24, 4, 37, 20, 47, 16, 23, 19, 1, 37,139, 36,142, 31, 40,143, 30, 20,139, 19,142, 1,143, 14, 33, 30,
+ 16, 4, 6, 36, 8, 44, 5, 0, 11, 6, 27, 19, 5, 40, 32, 14, 3, 0, 7, 30, 23, 15, 3, 7, 48, 16,212, 23, 60,236, 23, 50,
+252, 60,236, 16,252,228,238, 49, 0, 47,198, 50,196,238,246,238, 16,238,198,246,238, 17, 18, 57, 17, 57, 17, 18, 23, 57, 17, 18,
+ 57, 48, 1, 17, 62, 1, 53, 52, 38, 39, 17, 14, 1, 21, 20, 22, 19, 35, 3, 46, 1, 39, 53, 30, 1, 23, 17, 46, 1, 53, 52, 54,
+ 55, 53, 51, 23, 30, 1, 23, 21, 46, 1, 39, 17, 30, 1, 21, 20, 6, 7, 2,180,110,124,112,222,104,117,109,212,100, 1,102,201,
+ 98,100,203, 99,200,202,211,191,100, 1, 79,162, 84, 85,161, 80,206,216,233,188, 2, 68,254, 78, 3,116,100, 93,103,209, 1,157,
+ 4,112, 94, 86,100,251,192, 1, 45, 5, 46, 41,180, 62, 66, 2, 1,202, 31,182,150,157,187, 14,235,235, 5, 30, 26,173, 43, 47,
+ 4,254, 81, 31,194,154,154,206, 9, 0, 0, 0, 0, 5, 0, 33, 0, 0, 4,176, 5,152, 0, 11, 0, 26, 0, 30, 0, 42, 0, 57,
+ 0, 86, 64, 47, 30, 55, 29, 40, 34, 28, 15, 27, 3, 9,146, 15, 34,146, 55,147, 40,146, 46,145, 15,147, 3,146, 24, 28, 27, 43,
+ 31, 30, 29, 6, 10, 21, 11, 0, 10, 12, 37, 10, 52, 11, 31, 10, 43, 12, 58, 16,196,212,236,252,236, 16,238,254,238, 57, 57, 17,
+ 18, 57, 57, 49, 0, 47,238,238,246,238,254,238, 16,238, 17, 57, 17, 57, 17, 18, 57, 18, 57, 48, 1, 20, 22, 51, 50, 54, 53, 52,
+ 38, 35, 34, 6, 7, 52, 54, 51, 50, 22, 23, 30, 1, 21, 20, 6, 35, 34, 38, 1, 39, 1, 23, 37, 20, 22, 51, 50, 54, 53, 52, 38,
+ 35, 34, 6, 7, 52, 54, 51, 50, 22, 23, 30, 1, 21, 20, 6, 35, 34, 38, 2,184,105, 78, 77,107,108, 76, 78,105,135,184,134, 64,
+115, 46, 46, 50,186,135,136,182,254, 72, 35, 4, 18, 41,252, 23,105, 79, 77,108,108, 77, 77,107,135,184,135, 64,117, 45, 45, 49,
+186,134,135,184, 1, 63, 78,106,107, 77, 77,108,106, 79,135,185, 48, 46, 47,116, 63,133,186,183, 1, 26, 96, 1,162, 96,229, 79,
+105,107, 77, 77,107,106, 78,135,185, 48, 45, 45,117, 65,134,185,184, 0, 0, 0, 0, 2, 0, 57,255,227, 4,197, 5,240, 0, 42,
+ 0, 55, 0,179, 64, 98, 17, 16, 2, 18, 15, 23, 12, 13, 12, 14, 23, 13, 13, 12, 45, 44, 2, 46, 43, 23, 0, 1, 0, 50, 51, 52,
+ 53, 54, 5, 49, 55, 23, 1, 1, 0, 66, 55, 12, 9, 6, 1, 5, 7, 15, 49, 13, 24, 0, 43, 3, 34, 7, 49,151, 18, 34, 33, 37,
+151, 30,150, 18,153, 7, 13, 0, 40, 1, 7, 6, 3, 33, 12, 8, 4, 55, 43, 33, 24, 40, 27, 15, 33, 4, 19, 8, 40, 18, 33, 27,
+ 8, 13, 16, 27, 46, 18, 21, 56, 16,220,236,196,252,196, 16,198,238, 16,238, 17, 57, 17, 18, 57, 17, 57, 57, 17, 18, 57, 18, 23,
+ 57, 17, 57, 49, 0, 47,198,228,246,238,214,206, 16,238, 17, 18, 23, 57, 17, 18, 57, 17, 23, 57, 48, 75, 83, 88, 7, 16, 14,237,
+ 17, 23, 57, 7, 16, 14,237, 17, 23, 57, 7, 16, 5,237, 7, 16, 5,237, 17, 23, 57, 89, 34, 9, 1, 62, 1, 53, 52, 47, 1, 51,
+ 21, 20, 6, 7, 23, 35, 39, 14, 1, 35, 34, 0, 53, 52, 54, 55, 46, 1, 53, 52, 54, 51, 50, 22, 23, 21, 46, 1, 35, 34, 6, 21,
+ 20, 22, 7, 14, 1, 21, 20, 22, 51, 50, 54, 55, 62, 1, 55, 2, 35, 1,160, 39, 38, 3, 1,164, 74, 75,170,213, 78, 83,186,106,
+216,254,230,138,139, 50, 48,199,173, 65,131, 70, 59,125, 69, 97,112, 58, 54, 92, 91,200,155, 42, 92, 44, 27, 35, 16, 3,139,253,
+209, 49,150,104, 32, 70, 7, 39,161,243, 88,229,109, 70, 68, 1, 13,204,137,234,100, 72,138, 71,150,174, 24, 23,183, 39, 37, 91,
+ 77, 59,129,207, 73,163, 92,151,199, 24, 23, 15, 23, 13, 0, 0, 0, 1, 2, 16, 3,170, 2,190, 5,213, 0, 3, 0, 18,183, 1,
+ 0,136, 4, 0, 4, 2, 4, 16,212,236, 49, 0, 16,244,196, 48, 1, 17, 35, 17, 2,190,174, 5,213,253,213, 2, 43, 0, 0, 0,
+ 0, 1, 1,170,254,242, 3,117, 6, 18, 0, 13, 0, 31, 64, 15, 6,156, 0,155, 14, 13, 7, 0, 3, 18, 6, 0, 24, 10, 14, 16,
+212,236, 50,236, 17, 57, 57, 49, 0, 16,252,236, 48, 1, 6, 2, 21, 20, 18, 23, 35, 38, 2, 53, 52, 18, 55, 3,117,133,131,131,
+133,160,151,148,148,151, 6, 18,228,254, 59,230,229,254, 58,230,238, 1,195,224,223, 1,196,236, 0, 1, 1, 92,254,242, 3, 39,
+ 6, 18, 0, 13, 0, 31, 64, 15, 7,156, 0,155, 14, 7, 1, 11, 8, 0, 24, 4, 18, 11, 14, 16,212,252,236, 50, 17, 57, 57, 49,
+ 0, 16,252,236, 48, 1, 51, 22, 18, 21, 20, 2, 7, 35, 54, 18, 53, 52, 2, 1, 92,160,151,148,148,151,160,133,131,131, 6, 18,
+236,254, 60,223,225,254, 60,236,232, 1,198,227,228, 1,198, 0, 0, 1, 0,166, 2, 74, 4, 43, 5,240, 0, 17, 0, 78, 64, 44,
+ 16, 13, 11, 0, 4, 12, 9, 7, 4, 2, 4, 8, 3,157, 5, 17, 12,157, 10, 1, 14,150, 18, 8, 12, 10, 3, 9, 6, 17, 3, 1,
+ 3, 2, 0, 25, 15, 4, 11, 9, 25, 13, 6, 18, 16,212, 60,236, 50,220, 60,236, 50, 23, 57, 17, 18, 23, 57, 49, 0, 16,244,212,
+ 60,236, 50,196,236, 50, 23, 57, 18, 23, 57, 48, 1, 13, 1, 7, 37, 17, 35, 17, 5, 39, 45, 1, 55, 5, 17, 51, 17, 37, 4, 43,
+254,154, 1,102, 57,254,176,115,254,176, 57, 1,102,254,154, 57, 1, 80,115, 1, 80, 4,223,194,195, 98,203,254,135, 1,121,203,
+ 98,195,194, 99,203, 1,121,254,135,203, 0, 0, 0, 1, 0, 88, 0,113, 4,121, 4,147, 0, 11, 0, 39, 64, 20, 0,161, 9, 1,
+160, 5,161, 7, 3, 12, 2, 26, 4, 0, 28, 8, 26, 10, 6, 12, 16,212, 60,236,252, 60,236, 49, 0, 16,212, 60,236,252, 60,236,
+ 48, 1, 17, 33, 21, 33, 17, 35, 17, 33, 53, 33, 17, 2,188, 1,189,254, 67,168,254, 68, 1,188, 4,147,254, 68,170,254, 68, 1,
+188,170, 1,188, 0, 1, 1,147,254,225, 2,242, 1, 47, 0, 5, 0, 24, 64, 11, 3,163, 0,162, 6, 3, 4, 1, 29, 0, 6, 16,
+212,236,212,204, 49, 0, 16,252,236, 48, 1, 51, 21, 3, 35, 19, 1,246,252,197,154, 99, 1, 47,207,254,129, 1,127, 0, 0, 0,
+ 0, 1, 1,100, 1,223, 3,109, 2,131, 0, 3, 0, 17,182, 0,160, 2, 4, 1, 0, 4, 16,212,196, 49, 0, 16,212,236, 48, 1,
+ 33, 21, 33, 1,100, 2, 9,253,247, 2,131,164, 0, 1, 1,233, 0, 0, 2,229, 1, 49, 0, 3, 0, 16,182, 0,162, 2, 1, 29,
+ 0, 4, 16,212,236, 49, 0, 47,236, 48, 1, 51, 17, 35, 1,233,252,252, 1, 49,254,207, 0, 0, 0, 1, 0,102,255, 66, 4, 55,
+ 5,213, 0, 3, 0, 24, 64, 11, 2, 0,136, 4, 1, 30, 0, 2, 30, 3, 4, 16,212,236,212,236, 49, 0, 16,244,196, 48, 1, 51,
+ 1, 35, 3,121,190,252,238,191, 5,213,249,109, 0, 3, 0,133,255,227, 4, 76, 5,240, 0, 11, 0, 23, 0, 35, 1, 10, 64, 26,
+ 3,165, 9, 18,151, 30, 12,151, 24,150, 30,153, 36, 21, 30, 27, 6, 33, 0, 27, 34, 15, 30, 33, 31, 36, 16,252,236,236,212,236,
+ 16,238, 49, 0, 16,228,244,236, 16,238,212,238, 48, 64,214, 47, 0, 47, 1, 47, 2, 47, 3, 47, 4, 47, 5, 47, 6, 47, 7, 47,
+ 8, 47, 9, 47, 10, 47, 11, 63, 0, 63, 1, 63, 2, 63, 3, 63, 4, 63, 5, 63, 6, 63, 7, 63, 8, 63, 9, 63, 10, 63, 11, 79,
+ 0, 79, 1, 79, 2, 79, 10, 79, 11, 95, 0, 95, 1, 95, 2, 95, 10, 95, 11,159, 0,159, 1,159, 2,159, 3,159, 4,159, 5,159,
+ 6,159, 7,159, 8,159, 9,159, 10,159, 11,175, 0,175, 1,175, 2,175, 3,175, 4,175, 5,175, 6,175, 7,175, 8,175, 9,175,
+ 10,175, 11,191, 0,191, 1,191, 2,191, 3,191, 4,191, 5,191, 6,191, 7,191, 8,191, 9,191, 10,191, 11, 70, 47, 0, 47, 1,
+ 47, 2, 47, 3, 47, 4, 47, 5, 47, 6, 47, 7, 47, 8, 47, 9, 47, 10, 47, 11, 95, 0, 95, 1, 95, 2, 95, 3, 95, 4, 95, 5,
+ 95, 6, 95, 7, 95, 8, 95, 9, 95, 10, 95, 11,191, 0,191, 1,191, 2,191, 3,191, 4,191, 5,191, 6,191, 7,191, 8,191, 9,
+191, 10,191, 11, 36, 93, 1, 93, 1, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 19, 34, 2, 17, 16, 18, 51, 50, 18, 17, 16, 2,
+ 39, 50, 18, 17, 16, 2, 35, 34, 2, 17, 16, 18, 1,227, 77, 54, 56, 80, 79, 57, 56, 75,133,141,139,139,141,142,139,139,142,239,
+245,245,239,239,244,244, 2,238, 55, 80, 80, 55, 56, 78, 76, 2,156,254,208,254,201,254,202,254,208, 1, 48, 1, 54, 1, 55, 1,
+ 48,160,254,120,254,129,254,130,254,120, 1,136, 1,126, 1,127, 1,136, 0, 0, 0, 1, 0,246, 0, 0, 4, 70, 5,213, 0, 10,
+ 0, 38, 64, 20, 3,151, 4, 2,151, 5,136, 7, 0,151, 9, 8, 35, 6, 30, 3, 0, 35, 1, 11, 16,212,236,196,252,236, 49, 0,
+ 47,236, 50,244,236,212,236, 48, 37, 33, 17, 5, 53, 37, 51, 17, 33, 21, 33, 1, 14, 1, 58,254,174, 1, 80,202, 1, 54,252,200,
+170, 4,117, 76,184, 74,250,213,170, 0, 0, 0, 0, 1, 0,152, 0, 0, 4, 35, 5,240, 0, 28, 0, 81, 64, 41, 0, 28, 37, 5,
+ 6, 5, 24, 25, 26, 3, 23, 27, 37, 6, 6, 5, 66, 16, 17,167, 13,151, 20,150, 4, 0,151, 2, 0, 16, 10, 2, 1, 10, 30, 23,
+ 34, 16, 3, 36, 29, 16,252,196,252,236,192,192, 17, 18, 57, 49, 0, 47,236, 50,244,236,244,204, 48, 75, 83, 88, 7, 16, 5,237,
+ 17, 23, 57, 7, 16, 5,237, 23, 50, 89, 34, 37, 33, 21, 33, 53, 54, 0, 55, 62, 1, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51,
+ 50, 4, 21, 20, 6, 7, 14, 1, 1,117, 2,174,252,117,187, 1, 24, 53,100, 70,147,128, 91,200,112,103,199, 97,219, 1, 11, 89,
+100, 56,213,170,170,170,197, 1, 46, 62,122,151, 79,125,142, 66, 67,204, 49, 50,233,189, 96,192,116, 65,230, 0, 0, 1, 0,137,
+255,227, 4, 55, 5,240, 0, 40, 0, 71, 64, 41, 0, 19,151, 21, 10,139, 9,166, 13,151, 6, 31,139, 32,166, 28,151, 35,150, 6,
+153, 21,169, 41, 22, 19, 0, 3, 20, 25, 30, 38, 16, 30, 3, 34, 31, 20, 9, 31, 41, 16,252,196,196,252,236,212,236, 17, 23, 57,
+ 49, 0, 16,236,228,244,236,244,236, 16,238,246,238, 16,238, 57, 48, 1, 30, 1, 21, 20, 4, 35, 34, 38, 39, 53, 30, 1, 51, 50,
+ 54, 53, 52, 38, 43, 1, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 4, 21, 20, 6, 3, 8,147,156,254,235,
+245,103,214,103,102,198, 98,166,178,178,152,154,154,139,156,145,134, 89,190,104,121,189, 73,218, 1, 5,137, 3, 31, 39,199,149,
+206,235, 38, 36,201, 53, 52,150,141,130,153,166,122,109,115,123, 40, 40,186, 32, 32,219,181,123,164, 0, 0, 0, 0, 2, 0,102,
+ 0, 0, 4,111, 5,213, 0, 2, 0, 13, 0, 66, 64, 31, 1, 13, 3, 13, 0, 3, 3, 13, 66, 0, 3, 11, 7,151, 5, 1, 3,136,
+ 9, 1, 12, 10, 0, 30, 8, 4, 6, 15, 12, 36, 14, 16,252,252,212, 60,236, 50, 17, 57, 49, 0, 47,228,212, 60,236, 50, 18, 57,
+ 48, 75, 83, 88, 7, 16, 4,201, 7, 16, 5,201, 89, 34, 9, 1, 33, 3, 51, 17, 51, 21, 35, 17, 35, 17, 33, 53, 2,223,254, 41,
+ 1,215, 33,234,199,199,201,253,135, 5, 29,252,235, 3,205,252, 51,164,254,156, 1,100,191, 0, 0, 1, 0,143,255,227, 4, 45,
+ 5,213, 0, 29, 0, 61, 64, 34, 4, 7, 29, 26,151, 7, 17,139, 16,142, 20,151, 13, 2,151, 0,136, 13,153, 7,170, 30, 3, 30,
+ 0, 23, 30, 1, 10, 34, 0, 16, 31, 30, 16,252,196,252,196,236, 16,238, 49, 0, 16,228,228,244,236, 16,238,246,238, 16,254,196,
+ 18, 57, 48, 19, 33, 21, 33, 17, 62, 1, 51, 50, 0, 21, 20, 0, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 38, 35, 34, 6,
+ 7,207, 2,244,253,196, 43, 87, 44,232, 1, 16,254,227,247,119,197, 78, 92,186, 97,167,181,187,167, 81,154, 70, 5,213,170,254,
+145, 16, 15,254,238,234,236,254,240, 32, 32,205, 50, 49,176,162,160,178, 37, 37, 0, 2, 0,133,255,227, 4, 76, 5,240, 0, 24,
+ 0, 36, 0, 61, 64, 35, 7, 31, 25,151, 10, 31,151, 16, 10,171, 4, 1,139, 0,142, 4,151, 22,150, 16,153, 37, 34, 30, 0, 38,
+ 13, 34, 7, 6, 28, 1, 19, 31, 37, 16,252,236,236,252,228,236, 49, 0, 16,228,244,236,244,236, 16,229, 16,238, 16,238, 17, 57,
+ 48, 1, 21, 46, 1, 35, 34, 2, 17, 62, 1, 51, 50, 18, 21, 20, 2, 35, 32, 2, 17, 16, 0, 33, 50, 22, 1, 34, 6, 21, 20, 22,
+ 51, 50, 54, 53, 52, 38, 3,223, 63,142, 77,192,198, 48,170,110,216,237,244,221,254,252,242, 1, 35, 1, 20, 74,148,254,221,129,
+148,148,129,134,136,136, 5,180,186, 37, 39,254,223,254,231,100,107,254,247,243,242,254,246, 1,117, 1,145, 1,122, 1,141, 31,
+253,108,186,164,164,186,177,173,174,176, 0, 0, 0, 1, 0,139, 0, 0, 4, 55, 5,213, 0, 6, 0, 53, 64, 25, 5, 37, 2, 3,
+ 2, 3, 37, 4, 5, 4, 66, 5,151, 0,136, 3, 5, 3, 1, 4, 1, 34, 0, 31, 7, 16,252,236,196, 17, 57, 57, 49, 0, 47,244,
+236, 48, 75, 83, 88, 7, 16, 5,237, 7, 16, 5,237, 89, 34, 19, 33, 21, 1, 35, 1, 33,139, 3,172,253,234,211, 2, 8,253, 53,
+ 5,213, 86,250,129, 5, 43, 0, 0, 3, 0,131,255,227, 4, 78, 5,240, 0, 11, 0, 35, 0, 47, 0, 67, 64, 37, 24, 12, 0,151,
+ 39, 6,151, 30, 45,151, 18,150, 30,153, 39,169, 48, 24, 12, 36, 42, 30, 21, 36, 30, 15, 9, 30, 21, 27, 34, 3, 30, 15, 33, 31,
+ 48, 16,252,196,236,252,196,236, 16,238, 16,238, 17, 57, 57, 49, 0, 16,236,228,244,236, 16,238, 16,238, 57, 57, 48, 1, 34, 6,
+ 21, 20, 22, 51, 50, 54, 53, 52, 38, 37, 46, 1, 53, 52, 54, 51, 50, 22, 21, 20, 6, 7, 30, 1, 21, 20, 4, 35, 34, 36, 53, 52,
+ 54, 19, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 2,104,135,147,149,133,136,147,149,254,202,129,145,242,208,209,242,145,129,
+150,159,254,254,228,228,254,255,159, 77,128,121,122,128,127,123,121,128, 2,197,151,138,138,153,151,140,137,152, 84, 33,180,127,
+178,209,209,178,127,180, 33, 33,200,159,202,228,227,201,160,201, 1, 98,120,126,126,120,122,128,129, 0, 0, 0, 0, 2, 0,127,
+255,227, 4, 70, 5,240, 0, 11, 0, 36, 0, 59, 64, 34, 19, 6, 0,151, 22,171, 16, 13,139, 12,142, 16,151, 34, 6,151, 28,150,
+ 34,153, 37, 19, 6, 3, 1, 31, 34, 9, 30, 12, 38, 25, 31, 37, 16,252,228,236,252,236,236, 49, 0, 16,228,244,236, 16,238,246,
+238, 16,245,238, 17, 57, 48, 1, 50, 54, 53, 52, 38, 35, 34, 6, 21, 20, 22, 3, 53, 30, 1, 51, 50, 18, 17, 14, 1, 35, 34, 2,
+ 53, 52, 18, 51, 32, 18, 17, 16, 0, 33, 34, 38, 2, 84,129,147,147,129,134,136,135,225, 63,142, 77,192,197, 47,170,110,216,237,
+243,222, 1, 4,242,254,221,254,235, 73,148, 2,150,186,164,164,186,177,173,174,176,253,137,186, 37, 39, 1, 33, 1, 25,100,107,
+ 1, 10,244,241, 1, 9,254,138,254,111,254,135,254,115, 31, 0, 0, 2, 1,233, 0, 0, 2,229, 4, 39, 0, 3, 0, 7, 0, 27,
+ 64, 13, 2,162, 0,172, 4,162, 6, 5, 1, 29, 4, 0, 8, 16,212, 60,236, 50, 49, 0, 47,236,244,236, 48, 1, 51, 17, 35, 17,
+ 51, 17, 35, 1,233,252,252,252,252, 4, 39,254,209,254, 57,254,207, 0, 0, 0, 0, 2, 1,147,254,225, 2,242, 4, 39, 0, 5,
+ 0, 9, 0, 37, 64, 19, 8,162, 6, 3,163, 0,162, 6,172, 10, 3, 4, 0, 29, 1, 7, 29, 6, 10, 16,212,252,212,252,212,204,
+ 49, 0, 16,228,252,236, 16,238, 48, 1, 51, 21, 3, 35, 19, 3, 51, 17, 35, 1,246,252,197,154, 99, 13,252,252, 1, 47,207,254,
+129, 1,127, 3,199,254,209, 0, 0, 1, 0, 88, 0,141, 4,121, 4,119, 0, 6, 0, 33, 64, 18, 5, 4, 2, 1, 0, 5, 3,174,
+ 6,173, 7, 1, 2, 0, 40, 4, 39, 7, 16,252,236, 50, 57, 49, 0, 16,244,236, 23, 57, 48, 9, 2, 21, 1, 53, 1, 4,121,252,
+174, 3, 82,251,223, 4, 33, 3,193,254,192,254,195,183, 1,162,166, 1,162, 0, 0, 2, 0, 88, 1, 96, 4,121, 3,162, 0, 3,
+ 0, 7, 0, 27, 64, 12, 4,160, 6, 2,160, 0, 8, 5, 1, 4, 0, 8, 16,212, 60,196, 50, 49, 0, 16,212,236,212,236, 48, 19,
+ 33, 21, 33, 17, 33, 21, 33, 88, 4, 33,251,223, 4, 33,251,223, 2, 12,172, 2, 66,170, 0, 0, 0, 1, 0, 88, 0,141, 4,121,
+ 4,119, 0, 6, 0, 33, 64, 18, 6, 5, 3, 2, 0, 5, 4,174, 1,173, 7, 6, 2, 40, 4, 0, 39, 7, 16,252, 60,236, 57, 49,
+ 0, 16,244,236, 23, 57, 48, 19, 53, 1, 21, 1, 53, 1, 88, 4, 33,251,223, 3, 82, 3,193,182,254, 94,166,254, 94,183, 1, 61,
+ 0, 2, 0,244, 0, 0, 4, 16, 5,240, 0, 30, 0, 34, 0,123, 64, 66, 11, 10, 9, 8, 7, 5, 12, 6, 37, 25, 26, 25, 3, 4,
+ 2, 2, 5, 37, 26, 26, 25, 66, 29, 26, 5, 2, 4, 6, 25, 15, 0, 31, 16,139, 15,141, 12,151, 19,150, 31,134, 33, 6, 32, 25,
+ 22, 9, 5, 1, 0, 26, 32, 9, 0, 3, 1, 9, 41, 22, 15, 1, 32, 3, 31, 35, 16,212,236,196,212,212,236, 16,238, 17, 18, 57,
+ 17, 18, 57, 17, 18, 57, 18, 57, 49, 0, 47,238,246,254,244,238, 16,205, 17, 57, 57, 23, 57, 48, 75, 83, 88, 7, 16, 4,237, 17,
+ 23, 57, 7, 16, 4,237, 17, 23, 57, 89, 34, 1, 35, 53, 52, 54, 63, 1, 62, 1, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50,
+ 22, 21, 20, 6, 15, 1, 14, 1, 29, 1, 3, 51, 21, 35, 2,172,190, 61, 84, 90, 62, 47,131,109, 78,178, 98, 94,191,104,186,221,
+ 67, 94, 88, 69, 38,197,203,203, 1,145,154, 98,137, 82, 89, 59, 88, 49, 89,110, 69, 68,188, 57, 56,192,161, 76,131, 92, 86, 66,
+ 84, 61, 47,254,242,254, 0, 0, 0, 2, 0, 27,254,193, 4,154, 5,115, 0, 11, 0, 52, 0,112, 64, 49, 40, 43, 36, 26, 23, 3,
+ 14, 12, 9, 27, 52, 3,175, 23, 9,175, 12, 17, 39, 36,175, 43, 23, 30,175, 49, 43, 53, 39, 13, 6, 40, 12, 0, 6, 43, 20, 0,
+ 26, 13, 46, 12, 20, 33, 43, 12, 45, 46, 53, 16,220,236,252,196, 16,254, 60,196, 16,238, 17, 18, 57, 17, 18, 57, 49, 0, 16,196,
+212,252,196, 16,254,196,213,196,238, 16,238, 57, 57, 17, 18, 57, 17, 18, 57, 17, 18, 57, 48, 64, 13,128, 5,128, 6,128, 7,128,
+ 19,128, 20,128, 21, 6, 1, 93, 1, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 19, 35, 53, 14, 1, 35, 34, 38, 53, 52, 54, 51,
+ 50, 22, 23, 53, 52, 38, 35, 34, 0, 17, 16, 0, 33, 50, 54, 55, 23, 14, 1, 35, 32, 0, 17, 16, 0, 33, 50, 18, 21, 4, 14,128,
+107,107,129,129,107,107,128,140,144, 37,131, 82,161,211,211,161, 80,134, 36,176,145,246,254,221, 1, 74, 1, 18, 54,108, 57, 48,
+ 63,123, 58,254,155,254, 93, 1,120, 1, 60,209,250, 2, 33,129,155,155,129,130,155,155,254,232,111, 63, 68,242,188,188,242, 70,
+ 61, 63,156,190,254,129,254,185,254,183,254,122, 20, 21,135, 25, 24, 1,210, 1,140, 1,134, 1,206,254,246,224, 0, 2, 0, 37,
+ 0, 0, 4,172, 5,213, 0, 2, 0, 10, 0,152, 64, 65, 0, 37, 1, 0, 4, 5, 4, 2, 37, 5, 4, 7, 37, 5, 4, 6, 37, 5,
+ 5, 4, 9, 37, 3, 10, 8, 37, 3, 10, 1, 37, 10, 3, 10, 0, 37, 2, 0, 3, 3, 10, 66, 0, 3, 7,151, 1,176, 3,136, 9,
+ 5, 9, 8, 7, 6, 4, 3, 2, 1, 0, 9, 5, 47, 10, 11, 16,220,236, 23, 57, 49, 0, 47, 60,228,252,236, 18, 57, 48, 75, 83,
+ 88, 7, 16, 8,237, 7, 16, 5,237, 7, 5,237, 7, 5,237, 7, 16, 5,237, 7, 5,237, 7, 5,237, 7, 16, 8,237, 89, 34,178,
+ 7, 3, 1, 1, 93, 64, 26, 10, 0, 15, 0,143, 0,143, 0, 4, 3, 1, 11, 2, 4, 3, 12, 4, 9, 7, 6, 8,134, 1,137, 2,
+ 8, 93, 0, 93, 1, 3, 33, 1, 51, 1, 35, 3, 33, 3, 35, 2,104,213, 1,170,254,177,245, 1,201,209,110,253,245,108,209, 5,
+ 35,253, 4, 3,174,250, 43, 1,133,254,123, 0, 0, 3, 0,166, 0, 0, 4,113, 5,213, 0, 8, 0, 17, 0, 32, 0, 61, 64, 35,
+ 25, 0,151, 10, 9,151, 18,136, 1,151, 10,177, 31, 17, 11, 25, 31, 19, 8, 2, 5, 0, 14, 30, 22, 5, 50, 28, 49, 9, 0, 30,
+ 18, 48, 33, 16,252,236, 50,252,236,212,236, 17, 23, 57, 57, 57, 49, 0, 47,236,236,244,236, 16,238, 57, 48, 1, 17, 51, 50, 54,
+ 53, 52, 38, 35, 3, 17, 51, 50, 54, 53, 52, 38, 35, 37, 33, 50, 22, 21, 20, 6, 7, 30, 1, 21, 20, 4, 41, 1, 1,113,239,176,
+150,158,168,239,235,146,131,129,148,254, 74, 1,186,229,248,131,131,147,167,254,246,254,249,254, 70, 2,201,253,221,123,141,146,
+137, 2,102,254, 62,112,125,113,100,166,198,181,137,158, 20, 22,207,160,203,207, 0, 1, 0,139,255,227, 4, 49, 5,240, 0, 25,
+ 0, 46, 64, 26, 25,179, 0,178, 22,151, 3, 13,179, 12,178, 16,151, 9,150, 3,153, 26, 19, 50, 12, 0, 49, 6, 48, 26, 16,252,
+236, 50,236, 49, 0, 16,228,244,236,244,236, 16,238,246,238, 48, 37, 14, 1, 35, 32, 0, 17, 16, 0, 33, 50, 22, 23, 21, 46, 1,
+ 35, 34, 2, 17, 16, 18, 51, 50, 54, 55, 4, 49, 77,162, 91,254,225,254,195, 1, 63, 1, 29, 91,162, 77, 74,170, 86,197,196,196,
+197, 88,169, 73, 53, 41, 41, 1,150, 1,112, 1,110, 1,153, 41, 41,207, 61, 64,254,208,254,205,254,206,254,208, 64, 61, 0, 0,
+ 0, 2, 0,137, 0, 0, 4, 82, 5,213, 0, 8, 0, 17, 0, 40, 64, 21, 6,151, 9,136, 0,151, 15, 6, 0, 15, 9, 7, 3, 50,
+ 12, 49, 7, 30, 16, 48, 18, 16,252,236,252,236, 17, 57, 57, 57, 57, 49, 0, 47,236,244,236, 48, 37, 32, 54, 17, 16, 38, 33, 35,
+ 17, 19, 32, 0, 17, 16, 0, 41, 1, 17, 1,180, 0,255,202,201,255, 0, 96,100, 1, 86, 1, 68,254,188,254,170,254,209,166,251,
+ 1, 72, 1, 75,251,251,119, 5, 47,254,148,254,128,254,130,254,149, 5,213, 0, 0, 1, 0,197, 0, 0, 4, 78, 5,213, 0, 11,
+ 0, 41, 64, 22, 6,151, 4, 2,151, 0,136, 8,151, 4,177, 10, 1, 5, 9, 49, 7, 3, 30, 0, 51, 12, 16,252,236, 50,252,196,
+196, 49, 0, 47,236,236,244,236, 16,238, 48, 19, 33, 21, 33, 17, 33, 21, 33, 17, 33, 21, 33,197, 3,118,253, 84, 2,142,253,114,
+ 2,191,252,119, 5,213,170,254, 70,170,253,227,170, 0, 0, 0, 0, 1, 0,233, 0, 0, 4, 88, 5,213, 0, 9, 0, 36, 64, 19,
+ 6,151, 4, 2,151, 0,136, 4,177, 8, 5, 1, 49, 7, 3, 30, 0, 52, 10, 16,252,236, 50,252,196, 49, 0, 47,236,244,236, 16,
+238, 48, 19, 33, 21, 33, 17, 33, 21, 33, 17, 35,233, 3,111,253, 92, 2,101,253,155,203, 5,213,170,254, 72,170,253, 55, 0, 0,
+ 0, 1, 0,102,255,227, 4, 80, 5,240, 0, 29, 0, 60, 64, 33, 25, 26, 0, 22, 3, 26,151, 28, 22,151, 3, 13,179, 12,178, 16,
+151, 9,150, 3,153, 30, 27, 25, 30, 12, 0, 54, 19, 50, 6, 53, 30, 16,252,236,252,196,252,196, 49, 0, 16,228,244,236,244,236,
+ 16,254,212,238, 17, 18, 57, 17, 57, 48, 37, 14, 1, 35, 32, 0, 17, 16, 0, 33, 50, 22, 23, 21, 46, 1, 35, 34, 2, 17, 16, 18,
+ 51, 50, 54, 55, 17, 35, 53, 33, 4, 80, 81,203,118,254,228,254,196, 1, 64, 1, 29, 94,172, 80, 81,170, 95,197,197,191,198, 67,
+101, 41,217, 1,154,123, 75, 77, 1,151, 1,111, 1,110, 1,153, 53, 54,207, 77, 73,254,207,254,206,254,201,254,213, 31, 33, 1,
+145,166, 0, 0, 0, 1, 0,137, 0, 0, 4, 72, 5,213, 0, 11, 0, 38, 64, 20, 8,151, 2,177, 4, 0,136, 10, 6, 7, 3, 30,
+ 5, 49, 9, 1, 30, 0, 48, 12, 16,252,236, 50,252,236, 50, 49, 0, 47, 60,228, 50,252,236, 48, 19, 51, 17, 33, 17, 51, 17, 35,
+ 17, 33, 17, 35,137,203, 2, 41,203,203,253,215,203, 5,213,253,156, 2,100,250, 43, 2,199,253, 57, 0, 0, 0, 0, 1, 0,201,
+ 0, 0, 4, 6, 5,213, 0, 11, 0, 37, 64, 19, 10, 2,151, 0,136, 8, 4,151, 6, 5, 1, 55, 3, 30, 7, 0, 55, 9, 12, 16,
+212,236, 50,252,236, 50, 49, 0, 47,236, 50,244,236, 50, 48, 19, 33, 21, 33, 17, 33, 21, 33, 53, 33, 17, 33,201, 3, 61,254,199,
+ 1, 57,252,195, 1, 57,254,199, 5,213,170,251,127,170,170, 4,129, 0, 0, 0, 0, 1, 0,109,255,227, 3,188, 5,213, 0, 17,
+ 0, 44, 64, 23, 12, 7, 8, 1, 0,178, 4,151, 15, 8,151, 10,136, 15,153, 18, 9, 7, 30, 11, 0, 53, 18, 16,252,212,252,196,
+ 49, 0, 16,228,244,236, 16,238,246,206, 17, 57, 57, 48, 55, 53, 30, 1, 51, 50, 54, 53, 17, 33, 53, 33, 17, 16, 6, 35, 34, 38,
+109, 91,194,104,143,113,254,131, 2, 71,211,247, 96,190, 61,236, 81, 81,149,203, 3, 68,170,252, 18,254,230,234, 44, 0, 0, 0,
+ 0, 1, 0,137, 0, 0, 4,201, 5,213, 0, 11, 0,151, 64, 33, 8, 37, 9, 8, 5, 6, 5, 7, 37, 6, 5, 66, 8, 5, 2, 3,
+ 3, 0,180, 10, 6, 8, 5, 4, 3, 6, 1, 9, 1, 30, 0, 48, 12, 16,252,236, 50, 16,192, 23, 57, 49, 0, 47, 60,236, 50, 23,
+ 57, 48, 75, 83, 88, 7, 5,237, 7, 16, 8,237, 89, 34,178, 8, 4, 1, 1, 93, 64, 76, 7, 5, 22, 5, 23, 8, 38, 5, 38, 8,
+ 54, 2, 70, 2, 85, 2, 87, 8, 88, 9,100, 2,122, 5,121, 8,123, 9, 14, 2, 3, 1, 4, 7, 5, 0, 6, 2, 7, 22, 5, 23,
+ 8, 39, 5, 44, 6, 43, 7, 38, 8, 58, 3, 73, 3, 71, 6, 71, 7, 91, 3, 87, 5, 88, 6, 88, 7, 87, 8,107, 3,122, 3,120,
+ 7, 23, 93, 0, 93, 19, 51, 17, 1, 51, 9, 1, 35, 1, 7, 17, 35,137,203, 2,119,237,253,187, 2, 86,244,254, 25,154,203, 5,
+213,253,104, 2,152,253,158,252,141, 2,236,164,253,184, 0, 0, 0, 1, 0,215, 0, 0, 4,115, 5,213, 0, 5, 0, 24, 64, 12,
+ 2,151, 0,136, 4, 1, 30, 3, 49, 0, 52, 6, 16,252,236,236, 49, 0, 47,228,236, 48, 19, 51, 17, 33, 21, 33,215,203, 2,209,
+252,100, 5,213,250,213,170, 0, 0, 1, 0, 86, 0, 0, 4,121, 5,213, 0, 12, 0,133, 64, 44, 8, 2, 3, 2, 7, 3, 3, 2,
+ 10, 1, 2, 1, 9, 2, 2, 1, 66, 10, 7, 2, 3, 0, 8, 3, 0,180, 11, 5, 9, 8, 3, 2, 1, 5, 10, 6, 6, 4, 47, 10,
+ 6, 0, 48, 13, 16,252,236,252,236, 17, 23, 57, 49, 0, 47, 60,236, 50,196, 17, 23, 57, 48, 75, 83, 88, 7, 16, 5,201, 7, 16,
+ 4,201, 7, 16, 4,201, 7, 16, 5,201, 89, 34,178, 15, 10, 1, 0, 93, 64, 36, 5, 8, 10, 9, 23, 1, 24, 3, 23, 8, 24, 9,
+ 38, 1, 41, 3, 38, 8, 41, 9, 54, 1, 57, 3, 54, 8, 56, 9, 14, 15, 7, 15, 7, 15, 10, 3, 93, 1, 93, 19, 33, 9, 1, 33,
+ 17, 35, 17, 1, 35, 1, 17, 35, 86, 1, 14, 1, 2, 1, 4, 1, 15,187,254,246,153,254,245,186, 5,213,253, 8, 2,248,250, 43,
+ 5, 39,252,237, 3, 19,250,217, 0, 1, 0,139, 0, 0, 4, 70, 5,213, 0, 9, 0,109, 64, 28, 7, 1, 2, 1, 2, 6, 7, 6,
+ 66, 7, 2, 3, 0,180, 8, 5, 6, 1, 7, 2, 17, 4, 49, 7, 17, 0, 48, 10, 16,252,236,252,236, 17, 57, 57, 49, 0, 47, 60,
+236, 50, 57, 57, 48, 75, 83, 88, 7, 16, 4,201, 7, 16, 4,201, 89, 34,178, 23, 1, 1, 1, 93, 64, 38, 23, 2, 24, 7, 41, 2,
+ 38, 7, 56, 7, 87, 2,100, 2,106, 7,117, 2,122, 7, 10, 24, 6, 38, 1, 41, 6, 70, 1, 73, 6, 87, 1,103, 1,104, 6, 8,
+ 93, 0, 93, 19, 33, 1, 17, 51, 17, 33, 1, 17, 35,139, 1, 0, 1,248,195,255, 0,254, 8,195, 5,213,251, 51, 4,205,250, 43,
+ 4,205,251, 51, 0, 2, 0,117,255,227, 4, 92, 5,240, 0, 11, 0, 23, 0, 35, 64, 19, 9,151, 15, 3,151, 21,150, 15,153, 24,
+ 0, 50, 12, 54, 6, 50, 18, 53, 24, 16,252,236,252,236, 49, 0, 16,228,244,236, 16,238, 48, 1, 16, 2, 35, 34, 2, 17, 16, 18,
+ 51, 50, 18, 19, 16, 2, 35, 34, 2, 17, 16, 18, 51, 50, 18, 3,137,135,154,153,135,135,153,154,135,211,247,253,253,246,247,252,
+253,247, 2,233, 1, 73, 1, 26,254,230,254,183,254,184,254,230, 1, 25, 1, 73,254,122,254,128, 1,126, 1,136, 1,135, 1,128,
+254,128, 0, 0, 0, 2, 0,197, 0, 0, 4,117, 5,213, 0, 8, 0, 19, 0, 43, 64, 24, 1,151, 16, 0,151, 9,136, 18, 16, 10,
+ 8, 2, 4, 0, 5, 50, 13, 56, 17, 0, 30, 9, 51, 20, 16,252,236, 50,252,236, 17, 23, 57, 49, 0, 47,244,236,212,236, 48, 1,
+ 17, 51, 50, 54, 53, 52, 38, 35, 37, 33, 50, 4, 21, 20, 4, 43, 1, 17, 35, 1,143,234,140,157,156,141,254, 76, 1,180,250, 1,
+ 2,254,255,251,234,202, 5, 47,253,207,148,133,133,147,166,227,219,221,226,253,168, 0, 0, 0, 0, 2, 0,117,254,242, 4, 92,
+ 5,240, 0, 17, 0, 29, 0, 61, 64, 32, 0, 30, 16, 17, 15, 27,151, 3, 21,151, 9,150, 3,153, 17, 30, 17, 24, 16, 12, 15, 0,
+ 24, 18, 50, 12, 54, 24, 50, 6, 53, 30, 16,252,236,252,236, 17, 57, 57, 17, 57, 17, 57, 49, 0, 16,196,228,244,236, 16,238, 57,
+ 18, 57, 18, 57, 48, 5, 34, 6, 35, 34, 2, 17, 16, 18, 51, 50, 18, 17, 16, 2, 7, 23, 7, 19, 16, 2, 35, 34, 2, 17, 16, 18,
+ 51, 50, 18, 2,143, 7, 26, 8,250,247,247,252,253,247,137,139,200,151, 16,135,154,153,135,135,153,154,135, 27, 2, 1,128, 1,
+134, 1,135, 1,128,254,128,254,121,254,218,254,153, 72,190,100, 3,247, 1, 73, 1, 26,254,230,254,183,254,184,254,230, 1, 25,
+ 0, 2, 0,143, 0, 0, 4,209, 5,213, 0, 19, 0, 28, 0,106, 64, 56, 9, 8, 7, 3, 10, 6, 37, 3, 4, 3, 5, 37, 4, 4,
+ 3, 66, 6, 4, 0, 21, 3, 4, 21,151, 9, 20,151, 13,136, 11, 4, 5, 17, 22, 9, 6, 3, 10, 3, 17, 0, 28, 14, 3, 10, 25,
+ 50, 4, 17, 49, 20, 10, 30, 12, 48, 29, 16,252,236, 50,252,196,236, 17, 23, 57, 17, 57, 17, 23, 57, 17, 57, 49, 0, 47, 60,244,
+236,212,236, 18, 57, 18, 57, 18, 57, 48, 75, 83, 88, 7, 16, 5,237, 7, 16, 14,237, 17, 23, 57, 89, 34, 1, 30, 1, 23, 19, 35,
+ 3, 46, 1, 43, 1, 17, 35, 17, 33, 50, 4, 21, 20, 6, 1, 17, 51, 50, 54, 53, 52, 38, 35, 2,248, 78,110, 82,203,217,178, 77,
+123, 99,193,203, 1,160,246, 1, 6,161,253,208,221,145,142,151,144, 2,193, 20,111,166,254,104, 1,121,161, 93,253,137, 5,213,
+222,210,148,187, 2, 89,253,238,130,134,129,137, 0, 1, 0,139,255,227, 4, 74, 5,240, 0, 39, 0,132, 64, 61, 13, 12, 2, 14,
+ 11, 37, 30, 31, 30, 8, 9, 2, 7, 10, 37, 31, 31, 30, 66, 10, 11, 30, 31, 4, 1, 21,179, 20,167, 24,151, 17, 1,179, 0,167,
+ 4,151, 37,150, 17,153, 40, 30, 10, 11, 31, 27, 7, 0, 38, 27, 57, 14, 49, 20, 7, 57, 34, 48, 40, 16,252,236,196,252,236,228,
+ 17, 18, 57, 57, 57, 57, 49, 0, 16,228,244,236,244,236, 16,238,246,238, 17, 23, 57, 48, 75, 83, 88, 7, 16, 14,237, 17, 23, 57,
+ 7, 16, 14,237, 17, 23, 57, 89, 34,178, 8, 2, 1, 1, 93, 64, 10, 7, 0, 7, 1, 7, 2, 3, 7, 2, 1, 93, 0, 93, 1, 21,
+ 46, 1, 35, 34, 6, 21, 20, 22, 31, 1, 30, 1, 21, 20, 4, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 38, 47, 1, 46, 1,
+ 53, 52, 36, 51, 50, 22, 3,244, 92,185, 94,143,166,109,149,106,210,192,254,248,252,105,212,107,115,205,104,153,170,117,145,108,
+208,188, 1, 13,223, 86,190, 5,162,205, 59, 60,133,113, 99,104, 35, 24, 49,210,181,213,224, 45, 45,215, 73, 68,137,123,112,118,
+ 32, 25, 47,190,160,200,241, 39, 0, 1, 0, 47, 0, 0, 4,162, 5,213, 0, 7, 0, 28, 64, 14, 6, 2,151, 0,136, 4, 1, 58,
+ 3, 30, 0, 58, 5, 8, 16,212,236,252,236, 49, 0, 47,244,236, 50, 48, 19, 33, 21, 33, 17, 35, 17, 33, 47, 4,115,254, 45,203,
+254, 43, 5,213,170,250,213, 5, 43, 0, 0, 0, 0, 1, 0,147,255,227, 4, 61, 5,213, 0, 29, 0, 41, 64, 23, 15, 3, 18, 0,
+ 4, 1, 9,151, 24,153, 16, 1,136, 30, 15, 30, 17, 49, 2, 30, 0, 48, 30, 16,252,236,252,236, 49, 0, 16,228, 50,244,236, 17,
+ 23, 57, 48, 19, 17, 51, 17, 20, 22, 23, 30, 1, 51, 50, 54, 55, 62, 1, 53, 17, 51, 17, 20, 6, 7, 14, 1, 35, 34, 38, 39, 46,
+ 1,147,203, 12, 15, 32,121, 86, 87,120, 33, 15, 12,202, 57, 70, 66,170,106,105,170, 67, 69, 58, 2, 61, 3,152,252, 12,109, 93,
+ 25, 59, 60, 60, 59, 25, 92,108, 3,246,252,104,229,193, 63, 59, 58, 58, 59, 62,197, 0, 0, 0, 0, 1, 0, 57, 0, 0, 4,152,
+ 5,213, 0, 6, 0, 76, 64, 41, 1, 37, 2, 3, 2, 0, 37, 6, 0, 3, 3, 2, 0, 37, 1, 0, 4, 5, 4, 6, 37, 5, 5, 4,
+ 66, 0, 5, 1,180, 3, 6, 4, 3, 1, 0, 5, 2, 47, 5, 48, 7, 16,252,236, 23, 57, 49, 0, 47,236, 50, 57, 48, 75, 83, 88,
+ 7, 16, 5,237, 7, 16, 8,237, 7, 16, 8,237, 7, 16, 5,237, 89, 34, 37, 1, 51, 1, 35, 1, 51, 2,104, 1, 95,209,254, 75,
+245,254, 75,209,170, 5, 43,250, 43, 5,213, 0, 0, 1, 0, 0, 0, 0, 4,209, 5,213, 0, 12, 0,225, 64, 68, 5, 6, 5, 9,
+ 10, 9, 4, 10, 9, 3, 10, 11, 10, 2, 1, 2, 11, 11, 10, 6, 37, 7, 8, 7, 5, 37, 4, 5, 8, 8, 7, 2, 37, 3, 2, 12,
+ 0, 12, 1, 37, 0, 12, 66, 10, 5, 2, 3, 8, 3, 6, 0,180, 11, 8, 12, 11, 10, 9, 8, 6, 5, 4, 3, 2, 1, 11, 7, 0,
+ 47,204, 23, 57, 49, 0, 47, 60,252, 60,196, 17, 23, 57, 48, 75, 83, 88, 7, 5,237, 7, 16, 8,237, 7, 16, 8,237, 7, 16, 5,
+237, 7, 16, 8,201, 7, 16, 5,201, 7, 5,201, 7, 16, 8,201, 89, 34,178, 24, 9, 1, 1, 93, 64, 94, 31, 3, 31, 4, 31, 10,
+ 47, 3, 47, 4, 43, 10, 63, 3, 63, 4, 56, 10, 90, 2, 90, 5, 11, 23, 11, 38, 2, 42, 3, 37, 4, 42, 5, 40, 8, 43, 9, 37,
+ 11, 38, 12, 53, 2, 58, 3, 53, 4, 58, 5, 59, 8, 58, 9, 52, 11, 54, 12, 84, 0, 84, 1, 90, 2, 88, 3, 87, 4, 86, 5, 91,
+ 6, 91, 7, 82, 8, 87, 9, 88, 11, 93, 12,103, 8,104, 12,121, 3,118, 4,121, 9,118, 11, 35, 93, 0, 93, 17, 51, 27, 1, 51,
+ 27, 1, 51, 3, 35, 11, 1, 35,197,143,170,211,172,143,197,223,191,203,202,191, 5,213,251, 68, 3, 34,252,220, 4,190,250, 43,
+ 3,119,252,137, 0, 1, 0, 18, 0, 0, 4,190, 5,213, 0, 11, 0,198, 64, 75, 9, 37, 10, 11, 10, 8, 37, 7, 8, 11, 11, 10,
+ 8, 37, 9, 8, 5, 6, 5, 7, 37, 6, 6, 5, 3, 37, 4, 5, 4, 2, 37, 1, 2, 5, 5, 4, 2, 37, 3, 2, 11, 0, 11, 1,
+ 37, 0, 0, 11, 66, 11, 8, 5, 2, 4, 3, 0,180, 9, 6, 11, 8, 7, 5, 2, 5, 0, 4, 59, 6, 47, 0, 59, 10, 48, 12, 16,
+252,228,252,228, 17, 23, 57, 49, 0, 47, 60,236, 50, 23, 57, 48, 75, 83, 88, 7, 16, 5,237, 7, 16, 8,237, 7, 16, 8,237, 7,
+ 16, 5,237, 7, 16, 5,237, 7, 16, 8,237, 7, 16, 8,237, 7, 16, 5,237, 89, 34,178, 55, 2, 1, 0, 93, 64, 56, 13, 5, 4,
+ 11, 24, 5, 39, 1, 40, 3, 41, 5, 38, 11, 88, 11,120, 2,121, 5,119, 11, 11, 0, 2, 0, 2, 15, 8, 15, 8, 20, 2, 26, 8,
+ 33, 2, 37, 5, 43, 8, 37, 11, 53, 2, 85, 2, 89, 8, 88, 11,101, 2,115, 2, 16, 93, 1, 93, 19, 51, 9, 1, 51, 9, 1, 35,
+ 9, 1, 35, 1, 86,217, 1, 72, 1, 78,217,254, 65, 1,223,217,254,146,254,117,218, 1,244, 5,213,253,205, 2, 51,253, 66,252,
+233, 2,131,253,125, 3, 23, 0, 0, 1, 0, 37, 0, 0, 4,172, 5,213, 0, 8, 0, 89, 64, 46, 3, 37, 4, 5, 4, 2, 37, 1,
+ 2, 5, 5, 4, 2, 37, 3, 2, 8, 0, 8, 1, 37, 0, 0, 8, 66, 2, 3, 0,180, 6, 2, 7, 3, 5, 4, 1, 7, 0, 4, 60,
+ 5, 30, 0, 60, 7, 9, 16,212,236,252,236, 17, 18, 57, 17, 18, 57, 17, 57, 49, 0, 47,236, 50, 57, 48, 75, 83, 88, 7, 16, 5,
+237, 7, 16, 8,237, 7, 16, 8,237, 7, 16, 5,237, 89, 34, 19, 51, 9, 1, 51, 1, 17, 35, 17, 37,215, 1,108, 1,107,217,254,
+ 33,203, 5,213,253,109, 2,147,252,201,253, 98, 2,158, 0, 0, 0, 1, 0,156, 0, 0, 4,145, 5,213, 0, 9, 0, 69, 64, 28,
+ 8, 37, 2, 3, 2, 3, 37, 7, 8, 7, 66, 8,151, 0,136, 3,151, 5, 8, 3, 0, 1, 4, 47, 0, 6, 48, 10, 16,252,196,252,
+196, 17, 57, 57, 49, 0, 47,236,244,236, 48, 75, 83, 88, 7, 16, 5,237, 7, 16, 5,237, 89, 34,178, 8, 8, 1, 1, 93,178, 7,
+ 3, 1, 93, 19, 33, 21, 1, 33, 21, 33, 53, 1, 33,178, 3,201,252,244, 3, 34,252, 11, 2,247,253, 31, 5,213,154,251,111,170,
+154, 4,145, 0, 0, 1, 1,207,254,242, 3,119, 6, 20, 0, 7, 0, 30, 64, 15, 4,182, 6,183, 2,182, 0,181, 8, 5, 1, 3,
+ 61, 0, 8, 16,212,252,196, 50, 49, 0, 16,252,236,244,236, 48, 1, 33, 21, 35, 17, 51, 21, 33, 1,207, 1,168,240,240,254, 88,
+ 6, 20,143,249,252,143, 0, 0, 0, 1, 0,102,255, 66, 4, 55, 5,213, 0, 3, 0, 24, 64, 11, 1, 0,136, 4, 1, 30, 2, 0,
+ 30, 3, 4, 16,212,236,212,236, 49, 0, 16,244,196, 48, 9, 1, 35, 1, 1, 37, 3, 18,190,252,237, 5,213,249,109, 6,147, 0,
+ 0, 1, 1, 90,254,242, 3, 2, 6, 20, 0, 7, 0, 30, 64, 15, 3,182, 1,183, 5,182, 0,181, 8, 0, 61, 6, 2, 4, 8, 16,
+212,196, 50,236, 49, 0, 16,252,236,244,236, 48, 1, 17, 33, 53, 51, 17, 35, 53, 3, 2,254, 88,240,240, 6, 20,248,222,143, 6,
+ 4,143, 0, 0, 0, 1, 0, 72, 3,168, 4,137, 5,213, 0, 6, 0, 24, 64, 10, 3, 4, 1, 0,136, 7, 3, 1, 5, 7, 16,212,
+204, 57, 49, 0, 16,244,204, 50, 57, 48, 9, 1, 35, 9, 1, 35, 1, 2,193, 1,200,178,254,145,254,146,178, 1,200, 5,213,253,
+211, 1,139,254,117, 2, 45, 0, 0, 1, 0, 0,254, 29, 4,209,254,109, 0, 3, 0, 15,181, 0,184, 1, 4, 0, 2, 47,204, 49,
+ 0, 16,212,236, 48, 1, 21, 33, 53, 4,209,251, 47,254,109, 80, 80, 0, 0, 0, 0, 1, 1, 23, 4,238, 2,246, 6,102, 0, 3,
+ 0, 37, 64, 9, 1,186, 0,185, 4, 1, 60, 3, 4, 16,212,236, 49, 0, 16,244, 75,176, 9, 84, 75,176, 14, 84, 91, 88,185, 0,
+ 0, 0, 64, 56, 89,236, 48, 9, 1, 35, 1, 1,221, 1, 25,154,254,187, 6,102,254,136, 1,120, 0, 2, 0,133,255,227, 4, 35,
+ 4,123, 0, 11, 0, 41, 0,110, 64, 42, 10, 7, 0, 26, 32, 12, 24, 15, 7, 0,182, 24, 7,140, 18, 33,139, 32,191, 29,140, 36,
+190, 18,153, 24, 13, 1, 24, 4, 25, 14, 10, 6, 12, 68, 32, 4, 6, 21, 62, 42, 16,244,236,196,252,236, 50, 50, 17, 57, 57, 49,
+ 0, 47,196,228,244,252,244,236, 16,238, 16,238, 17, 57, 17, 57, 18, 57, 17, 18, 57, 48, 64, 29, 48, 31, 48, 32, 48, 33, 48, 34,
+160, 0,160, 1,160, 2,160, 10,160, 11,162, 22,160, 23,160, 24,160, 25,160, 26, 14, 93, 1, 35, 34, 6, 21, 20, 22, 51, 50, 54,
+ 55, 53, 55, 17, 35, 53, 14, 1, 35, 34, 38, 53, 52, 54, 59, 1, 53, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 23, 30, 1,
+ 2,190, 61,161,163,122,108,152,174, 1,185,185, 59,179,128,171,204,251,243,247, 1,134,147, 94,192, 91,102,187, 88,139,197, 61,
+ 38, 32, 2, 51,113,112,101,112,211,186, 41, 76,253,129,166,100, 95,193,162,187,194, 29,134,121, 54, 52,184, 39, 39, 82, 82, 50,
+147, 0, 0, 0, 0, 2, 0,193,255,227, 4, 88, 6, 20, 0, 11, 0, 28, 0, 48, 64, 26, 24, 12, 9, 3,140, 15, 9,140, 21,153,
+ 15,190, 27,155, 25, 0, 18, 18, 71, 24, 12, 6, 6, 26, 70, 29, 16,244,236, 50, 50,252,236, 49, 0, 47,236,228,244,236, 16,238,
+ 17, 57, 57, 48, 1, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 62, 1, 51, 50, 18, 17, 16, 2, 35, 34, 38, 39, 21, 35, 17,
+ 51, 3,150,136,133,134,138,138,134,133,136,253,227, 44,155,102,202,232,233,203,100,153, 46,184,184, 2, 47,214,218,219,213,212,
+220,218, 2,120, 82, 88,254,201,254,239,254,235,254,197, 87, 83,141, 6, 20, 0, 0, 1, 0,195,255,227, 4, 37, 4,123, 0, 25,
+ 0, 47, 64, 26, 12,139, 13,192, 16, 0,139, 25,192, 22,140, 3, 16,140, 9,190, 3,153, 26, 19, 18, 12, 0, 6, 70, 26, 16,244,
+196, 50,236, 49, 0, 16,228,244,236, 16,254,244,238, 16,245,238, 48, 37, 14, 1, 35, 32, 0, 17, 16, 0, 33, 50, 22, 23, 21, 46,
+ 1, 35, 34, 6, 21, 20, 22, 51, 50, 54, 55, 4, 37, 74,157, 82,254,252,254,219, 1, 37, 1, 4, 81,154, 78, 73,147, 93,173,186,
+187,172, 96,152, 65, 57, 43, 43, 1, 56, 1, 20, 1, 20, 1, 56, 42, 44,193, 65, 58,224,208,207,225, 59, 62, 0, 0, 2, 0,123,
+255,227, 4, 18, 6, 20, 0, 16, 0, 28, 0, 48, 64, 26, 5, 0, 20, 26,140, 14, 20,140, 8,153, 14,190, 1,155, 3, 23, 4, 0,
+ 6, 2, 71, 17, 18, 11, 72, 29, 16,244,236,252,236, 50, 50, 49, 0, 47,236,228,244,236, 16,238, 17, 57, 57, 48, 1, 17, 51, 17,
+ 35, 53, 14, 1, 35, 34, 2, 17, 16, 18, 51, 50, 22, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 3, 90,184,184, 46,153,100,
+203,233,234,202,101,154,254, 15,136,133,133,139,139,133,133,136, 3,209, 2, 67,249,236,141, 83, 87, 1, 59, 1, 21, 1, 17, 1,
+ 55, 87,254, 11,214,218,220,212,213,219,218, 0, 0, 2, 0,123,255,227, 4, 88, 4,123, 0, 21, 0, 28, 0, 69, 64, 38, 0, 22,
+ 3, 1, 10,139, 9,141, 6, 22,182, 1, 6,140, 13, 1,193, 25,140, 19,190, 13,153, 29, 3, 2, 28, 16, 9, 22, 6, 0, 73, 28,
+ 18, 16, 72, 29, 16,244,236,252,236,196, 17, 18, 57, 57, 49, 0, 16,228,244,236,228, 16,238, 16,238, 16,244,238, 18, 57, 17, 57,
+ 48, 1, 21, 33, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 32, 0, 17, 16, 0, 51, 50, 18, 7, 46, 1, 35, 34, 6, 7, 4, 88,
+252,227,191,174, 88,192,109,105,195, 91,254,251,254,218, 1, 32,240,214,247,184, 4,145,136,133,172, 16, 2, 94, 90, 6,183,200,
+ 56, 57,183, 43, 43, 1, 57, 1, 19, 1, 12, 1, 64,254,222,197,162,169,176,156, 0, 1, 0,195, 0, 0, 4, 39, 6, 20, 0, 19,
+ 0, 52, 64, 26, 5, 16, 1, 12, 8,182, 6, 1,140, 0,155, 14, 6,194, 10, 2, 19, 7, 0, 9, 5, 6, 13, 15, 11, 20, 16,212,
+ 60,196,252, 60,196, 50, 57, 57, 49, 0, 47,228, 50,252,236, 16,238, 50, 18, 57, 57, 48, 1, 21, 35, 34, 6, 29, 1, 33, 21, 33,
+ 17, 35, 17, 33, 53, 33, 53, 52, 54, 51, 4, 39,209, 99, 77, 1,129,254,127,184,254,213, 1, 43,169,179, 6, 20,153, 81,103, 99,
+143,252, 47, 3,209,143, 78,184,174, 0, 0, 0, 0, 2, 0,123,254, 72, 4, 18, 4,123, 0, 11, 0, 41, 0, 72, 64, 39, 25, 12,
+ 30, 27, 39, 9, 3, 18,139, 19, 22, 9,140, 30, 22,140, 15, 3,140, 36,190, 30, 15,195, 40,194, 42, 39, 25, 0, 6, 12, 71, 6,
+ 18, 18, 33, 72, 42, 16,244,196,236,252,236, 50, 50, 49, 0, 16,228,228,196,244,236, 16,238, 16,238, 16,213,238, 17, 18, 57, 57,
+ 17, 57, 57, 48, 1, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 19, 20, 2, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 61, 2, 14,
+ 1, 35, 34, 2, 17, 16, 18, 51, 50, 22, 23, 53, 51, 3, 90,135,129,135,142,143,136,127,135,184,238,231, 76,166, 83, 98,160, 67,
+149,136, 44,152,109,196,234,234,196,108,150, 47,184, 2, 57,207,215,215,207,207,217,218,254,221,252,254,252, 28, 27,182, 46, 44,
+162,176, 8,125, 94, 92, 1, 58, 1, 7, 1, 8, 1, 58, 86, 90,145, 0, 0, 0, 0, 1, 0,195, 0, 0, 4, 27, 6, 20, 0, 19,
+ 0, 44, 64, 24, 9, 14, 3, 0, 3, 1, 6,140, 17,190, 12,155, 10, 1, 2, 6, 0, 74, 13, 9, 6, 11, 70, 20, 16,244,236, 50,
+252,236, 49, 0, 47, 60,236,244,236, 17, 23, 57, 57, 48, 1, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 17, 62, 1, 51,
+ 50, 22, 4, 27,185,106,113,129,139,184,184, 49,168,115,171,169, 2,182,253, 74, 2,182,151,142,183,171,253,135, 6, 20,253,164,
+ 96, 99,225, 0, 0, 2, 0,178, 0, 0, 4, 68, 6, 20, 0, 9, 0, 13, 0, 46, 64, 25, 8,182, 0, 12,196, 10,155, 0,194, 6,
+ 2,182, 4, 3, 76, 11, 1, 6, 5, 76, 0, 75, 10, 7, 14, 16,212, 60,228,236,252, 60,236, 49, 0, 47,236, 50,228,252,236, 16,
+238, 48, 1, 33, 17, 33, 21, 33, 53, 33, 17, 33, 1, 51, 21, 35, 1, 0, 1,215, 1,109,252,110, 1,109,254,225, 1, 31,184,184,
+ 4, 96,252, 47,143,143, 3, 66, 2, 67,233, 0, 0, 2, 0,186,254, 86, 3, 16, 6, 20, 0, 13, 0, 17, 0, 56, 64, 29, 5, 0,
+ 1, 10,140, 8, 1,182, 3, 16,196, 14,155, 3,194, 8,195, 18, 11, 8, 2, 9, 2, 15, 4, 6, 14, 0, 18, 16,212, 60,236, 50,
+196,196, 18, 57, 57, 49, 0, 16,228,228,252,236, 16,238, 16,238, 17, 57, 57, 48, 5, 17, 33, 53, 33, 17, 20, 6, 43, 1, 53, 51,
+ 50, 54, 17, 51, 21, 35, 2, 88,254,195, 1,245,179,165,254,234, 90, 90,184,184, 20, 3,229,143,251,140,195,211,156,125, 6,165,
+233, 0, 0, 0, 0, 1, 0,236, 0, 0, 4,178, 6, 20, 0, 11, 0,197, 64, 58, 8, 23, 9, 8, 5, 6, 5, 7, 23, 6, 6, 5,
+ 9, 23, 3, 2, 8, 23, 7, 8, 3, 2, 5, 23, 6, 5, 2, 3, 2, 4, 23, 3, 3, 2, 66, 8, 5, 2, 3, 3,194, 0,155, 10,
+ 6, 8, 5, 4, 3, 6, 9, 1, 6, 6, 68, 0, 69, 12, 16,244,236,236, 50, 17, 23, 57, 49, 0, 47, 60,236,228, 23, 57, 48, 75,
+ 83, 88, 7, 16, 5,237, 7, 16, 8,237, 7, 8,237, 7, 4,237, 7, 16, 5,237, 7, 16, 8,237, 89, 34,178, 8, 7, 1, 1, 93,
+ 64, 82, 6, 2, 8, 8, 22, 2, 24, 5, 24, 8, 53, 2, 52, 5, 54, 8, 70, 2,102, 2,117, 2,118, 5, 12, 9, 3, 8, 8, 25,
+ 3, 23, 4, 24, 5, 25, 6, 26, 7, 24, 8, 40, 3, 39, 5, 40, 7, 59, 3, 59, 4, 55, 5, 57, 7, 55, 8, 74, 3, 73, 7, 89,
+ 6, 89, 7,107, 3,105, 4,105, 6,105, 7,121, 3,120, 5,121, 6,121, 7, 28, 93, 0, 93, 19, 51, 17, 1, 51, 9, 1, 35, 1,
+ 7, 17, 35,236,190, 1,227,224,254, 71, 1,254,225,254, 98,137,190, 6, 20,252,123, 1,209,254, 90,253, 70, 2, 66,129,254, 63,
+ 0, 1, 0,160, 0, 0, 4, 10, 6, 31, 0, 13, 0, 38, 64, 19, 9, 0, 3, 10,182, 12,197, 3,182, 5, 3, 6, 4, 0, 6, 11,
+ 76, 9, 14, 16,212,236,252,204, 57, 57, 49, 0, 47,236,252,236, 17, 57, 57, 48, 1, 20, 22, 59, 1, 21, 35, 34, 38, 53, 17, 33,
+ 53, 33, 2,127, 91, 89,215,233,165,181,254,217, 1,223, 1,150,124,126,156,212,194, 3,249,144, 0, 1, 0,109, 0, 0, 4,111,
+ 4,123, 0, 34, 0,163, 64, 39, 24, 18, 15, 9, 4, 7, 0, 29, 27, 6, 7, 21, 12,140, 32, 3,190, 27,194, 25, 16, 7, 0, 17,
+ 15, 8, 77, 6, 78, 17, 77, 15, 78, 28, 24, 77, 26, 69, 35, 16,244, 75,176, 12, 84, 75,176, 17, 84, 91, 88,185, 0, 26,255,192,
+ 56, 89,252, 60,252,236,252,236, 17, 18, 57, 49, 0, 47, 60, 60,228,244, 60,236, 50, 17, 57, 17, 57, 57, 17, 23, 57, 48, 64, 71,
+ 48, 4, 48, 5, 48, 6, 48, 7, 48, 8, 48, 9, 48, 10, 48, 11, 63, 22, 63, 23, 63, 24, 63, 25, 63, 26, 63, 27, 63, 28, 63, 29,
+ 63, 30,128, 3,128, 4,128, 5,128, 6,128, 7,128, 8,128, 9,128, 10,128, 11,143, 22,143, 23,143, 24,143, 25,143, 26,143, 27,
+143, 28,143, 29,143, 30, 35, 1, 93, 1, 62, 1, 51, 50, 22, 25, 1, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 52, 38, 35, 34,
+ 6, 21, 17, 35, 17, 51, 21, 62, 1, 51, 50, 22, 2,164, 34,105, 74,135,111,168, 53, 70, 80, 59,168, 57, 74, 73, 57,167,167, 33,
+ 99, 63, 76,101, 3,238, 72, 69,209,254,223,253,119, 2,129,237,115,123,229,253,127, 2,129,240,112,123,229,253,127, 4, 96, 96,
+ 60, 63, 70, 0, 0, 1, 0,195, 0, 0, 4, 27, 4,123, 0, 19, 0, 44, 64, 24, 9, 14, 3, 0, 3, 1, 6,140, 17,190, 12,194,
+ 10, 1, 2, 6, 0, 74, 13, 9, 6, 11, 70, 20, 16,244,236, 50,252,236, 49, 0, 47, 60,228,244,236, 17, 23, 57, 57, 48, 1, 17,
+ 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51, 50, 22, 4, 27,185,106,113,129,139,184,184, 49,168,115,171,169,
+ 2,182,253, 74, 2,182,151,142,183,171,253,135, 4, 96,168, 96, 99,225, 0, 0, 0, 2, 0,137,255,227, 4, 72, 4,123, 0, 11,
+ 0, 23, 0, 35, 64, 19, 6,140, 18, 0,140, 12,190, 18,153, 24, 9, 18, 15, 68, 3, 18, 21, 62, 24, 16,244,236,252,236, 49, 0,
+ 16,228,244,236, 16,238, 48, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 39, 50, 18, 17, 16, 2, 35, 34, 2, 17, 16, 18, 2,
+104,140,144,144,140,141,144,144,141,233,247,246,234,233,246,246, 3,223,218,214,213,219,219,213,214,218,156,254,210,254,226,254,
+225,254,211, 1, 45, 1, 31, 1, 30, 1, 46, 0, 0, 2, 0,190,254, 86, 4, 84, 4,123, 0, 16, 0, 28, 0, 51, 64, 28, 5, 0,
+ 20, 26,140, 14, 20,140, 8,190, 14,153, 1,195, 3,194, 29, 17, 18, 11, 71, 23, 4, 0, 6, 2, 70, 29, 16,244,236, 50, 50,252,
+236, 49, 0, 16,228,228,228,244,236, 16,238, 17, 57, 57, 48, 37, 17, 35, 17, 51, 21, 62, 1, 51, 50, 18, 17, 16, 2, 35, 34, 38,
+ 1, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1,119,185,185, 46,153,100,203,231,232,202,102,153, 1,240,135,133,134,138,138,
+134,133,135,141,253,201, 6, 10,143, 83, 87,254,198,254,234,254,239,254,201, 87, 1,245,214,218,219,213,212,220,218, 0, 0, 0,
+ 0, 2, 0,137,254, 82, 4, 31, 4,119, 0, 11, 0, 28, 0, 51, 64, 28, 24, 12, 9, 3,140, 15, 9,140, 21,190, 15,153, 27,195,
+ 25,194, 29, 24, 12, 6, 6, 26, 71, 0, 18, 18, 62, 29, 16,244,236,252,236, 50, 50, 49, 0, 16,228,228,228,244,236, 16,238, 17,
+ 57, 57, 48, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 14, 1, 35, 34, 2, 17, 16, 18, 51, 50, 22, 23, 53, 51, 17, 35,
+ 1, 76,135,133,133,137,137,133,133,135, 2, 26, 45,153,101,201,233,232,202,100,153, 46,185,185, 2, 43,214,218,219,213,213,219,
+218,253,138, 83, 89, 1, 55, 1, 17, 1, 22, 1, 58, 87, 83,143,249,246, 0, 0, 0, 1, 1,106, 0, 0, 4,131, 4,123, 0, 17,
+ 0, 79, 64, 19, 6, 7, 11, 3, 0, 17, 3,151, 14,190, 9,194, 7, 10, 6, 6, 0, 8, 18, 16,212,196,236, 50, 49, 0, 47,228,
+244,236,212,204, 17, 57, 17, 57, 48, 64, 37, 16, 0, 16, 1, 16, 17, 32, 0, 32, 1, 32, 17, 48, 0, 48, 1, 51, 16, 48, 17, 64,
+ 0, 64, 1, 67, 16, 64, 17, 80, 0, 80, 1, 80, 16, 80, 17, 18, 93, 1, 46, 1, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51,
+ 50, 22, 23, 4,131, 59,122, 73,172,182,185,185, 46,191,131, 68,118, 54, 3,121, 46, 42,216,204,253,211, 4, 96,219,119,127, 34,
+ 36, 0, 0, 0, 0, 1, 0,213,255,227, 4, 6, 4,123, 0, 39, 0,117, 64, 64, 13, 12, 2, 14, 11, 23, 31, 30, 8, 9, 2, 7,
+ 10, 23, 30, 31, 30, 66, 29, 30, 24, 10, 11, 30, 31, 4, 21, 0,139, 1,192, 4, 20,139, 21,192, 24,140, 17, 4,140, 37,190, 17,
+153, 40, 29, 10, 11, 31, 27, 7, 0, 79, 27, 6, 14, 73, 7, 6, 20, 34, 69, 40, 16,244,196,236,252,236,228, 17, 18, 57, 57, 57,
+ 57, 49, 0, 16,228,244,236, 16,254,245,238, 16,245,238, 18, 23, 57, 17, 18, 57, 48, 75, 83, 88, 7, 16, 14,237, 17, 23, 57, 7,
+ 14,237, 17, 23, 57, 89, 34, 1, 21, 46, 1, 35, 34, 6, 21, 20, 22, 31, 1, 30, 1, 21, 20, 6, 35, 34, 38, 39, 53, 30, 1, 51,
+ 50, 54, 53, 52, 47, 2, 46, 1, 53, 52, 54, 51, 50, 22, 3,205, 79,160, 83,125,123, 92,183, 74,137,141,236,210, 83,182,106,103,
+188, 84,122,134,245, 8, 69,159,146,218,202, 90,166, 4, 57,180, 46, 46, 81, 83, 75, 74, 35, 14, 26,156,125,166,187, 35, 35,190,
+ 53, 53, 99, 89,128, 49, 2, 14, 31,147,127,161,175, 33, 0, 0, 0, 1, 0,131, 0, 0, 4, 8, 5,158, 0, 19, 0, 49, 64, 24,
+ 14, 5, 8, 15, 3,182, 0, 17, 1,194, 8,182, 10, 8, 11, 9, 2, 4, 0, 6, 16, 18, 14, 20, 16,212, 60,196,252, 60,196, 50,
+ 57, 57, 49, 0, 47,236,244, 60,196,236, 50, 17, 57, 57, 48, 1, 17, 33, 21, 33, 17, 20, 22, 59, 1, 21, 35, 34, 38, 53, 17, 33,
+ 53, 33, 17, 2,102, 1,162,254, 94, 94,117,207,225,207,170,254,213, 1, 43, 5,158,254,194,143,253,160,124, 98,147,166,203, 2,
+ 96,143, 1, 62, 0, 1, 0,195,255,227, 4, 27, 4, 94, 0, 19, 0, 44, 64, 24, 9, 14, 3, 0, 3, 1, 6,140, 17,153, 10, 1,
+194, 12, 13, 9, 6, 11, 74, 2, 6, 0, 70, 20, 16,244,236,252,236, 50, 49, 0, 47,228, 50,244,236, 17, 23, 57, 57, 48, 19, 17,
+ 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 35, 53, 14, 1, 35, 34, 38,195,184,107,112,130,138,185,185, 49,169,113,172,168, 1,
+168, 2,182,253, 74,151,142,183,171, 2,121,251,162,168, 97,100,225, 0, 0, 0, 0, 1, 0,100, 0, 0, 4,109, 4, 96, 0, 6,
+ 0,101, 64, 41, 3, 23, 4, 5, 4, 2, 23, 1, 2, 5, 5, 4, 2, 23, 3, 2, 6, 0, 6, 1, 23, 0, 0, 6, 66, 2, 3, 0,
+194, 5, 6, 5, 3, 2, 1, 5, 4, 73, 0, 69, 7, 16,244,236, 23, 57, 49, 0, 47,228, 50, 57, 48, 75, 83, 88, 7, 16, 5,237,
+ 7, 16, 8,237, 7, 16, 8,237, 7, 16, 5,237, 89, 34,178, 39, 2, 1, 0, 93, 64, 14, 7, 0, 7, 1, 8, 3, 8, 4, 4, 5,
+ 2, 37, 2, 2, 93, 1, 93, 19, 51, 9, 1, 51, 1, 35,100,191, 1, 69, 1, 70,191,254,114,237, 4, 96,252, 84, 3,172,251,160,
+ 0, 1, 0, 0, 0, 0, 4,209, 4, 96, 0, 12, 1, 17, 64, 69, 11, 2, 3, 2, 10, 9, 10, 3, 3, 2, 10, 11, 10, 4, 5, 4,
+ 9, 5, 5, 4, 6, 23, 7, 8, 7, 5, 23, 4, 5, 8, 8, 7, 2, 23, 3, 2, 12, 0, 12, 1, 23, 0, 12, 66, 10, 5, 2, 3,
+ 8, 3, 6, 0,194, 11, 8, 12, 11, 10, 9, 8, 6, 5, 4, 3, 2, 1, 11, 7, 0, 47,204, 23, 57, 49, 0, 47, 60,244, 60,196,
+ 17, 23, 57, 48, 75, 83, 88, 7, 5,237, 7, 16, 8,237, 7, 16, 8,237, 7, 16, 5,237, 7, 16, 5,201, 7, 16, 8,201, 7, 16,
+ 8,201, 7, 16, 5,201, 89, 34,178, 15, 10, 1, 0, 93, 64,140, 11, 9, 4, 11, 31, 0, 31, 1, 29, 2, 26, 3, 28, 4, 25, 5,
+ 28, 9, 27, 10, 26, 11, 31, 12, 38, 0, 38, 1, 41, 2, 38, 5, 41, 6, 41, 7, 35, 8, 44, 12, 57, 2, 54, 5, 57, 6, 57, 7,
+ 51, 8, 60, 12, 69, 8, 73, 9, 70, 11, 74, 12, 86, 8, 88, 9, 87, 11, 89, 12,102, 2,105, 3,102, 4,105, 5,106, 9,101, 11,
+118, 2,122, 5,120, 8,124, 9,114, 11, 45, 15, 10, 25, 2, 31, 3, 31, 4, 25, 5, 31, 10, 31, 10, 43, 2, 43, 5, 62, 2, 62,
+ 5, 60, 10, 72, 10, 89, 10,106, 2,105, 5,104, 10,123, 2,127, 3,121, 4,127, 4,122, 5,124, 10,127, 10, 24, 93, 1, 93, 17,
+ 51, 27, 1, 51, 27, 1, 51, 1, 35, 11, 1, 35,182,195,160,157,162,195,182,254,250,176,179,178,176, 4, 96,252,119, 2, 66,253,
+190, 3,137,251,160, 2,102,253,154, 0, 0, 0, 0, 1, 0, 76, 0, 0, 4,133, 4, 96, 0, 11, 0,169, 64, 72, 5, 23, 6, 7,
+ 6, 4, 23, 3, 4, 7, 7, 6, 4, 23, 5, 4, 1, 2, 1, 3, 23, 2, 2, 1, 11, 23, 0, 1, 0, 10, 23, 9, 10, 1, 1, 0,
+ 10, 23, 11, 10, 7, 8, 7, 9, 23, 8, 8, 7, 66, 10, 7, 4, 1, 4, 8, 0,194, 5, 2, 10, 7, 4, 1, 4, 8, 0, 2, 73,
+ 8, 6, 69, 12, 16,244,196,252,196, 17, 23, 57, 49, 0, 47, 60,228, 50, 23, 57, 48, 75, 83, 88, 7, 16, 5,237, 7, 16, 8,237,
+ 7, 16, 8,237, 7, 16, 5,237, 7, 16, 5,237, 7, 16, 8,237, 7, 16, 8,237, 7, 16, 5,237, 89, 34,178, 7, 10, 1, 0, 93,
+ 64, 30, 9, 1, 6, 7,102, 1,105, 7,118, 1,121, 7, 6, 7, 1, 7, 7, 6, 10, 21, 10, 58, 4, 52, 10, 90, 4, 86, 10, 8,
+ 93, 1, 93, 9, 2, 35, 9, 1, 35, 9, 1, 51, 9, 1, 4, 94,254,111, 1,184,213,254,184,254,185,213, 1,184,254,111,204, 1,
+ 41, 1, 39, 4, 96,253,232,253,184, 1,193,254, 63, 2, 72, 2, 24,254,107, 1,149, 0, 0, 0, 0, 1, 0,104,254, 86, 4,129,
+ 4, 96, 0, 18, 0,160, 64, 69, 13, 23, 14, 13, 2, 3, 2, 10, 11, 2, 9, 12, 23, 3, 3, 2, 17, 23, 18, 0, 18, 16, 23, 15,
+ 16, 0, 0, 18, 16, 23, 17, 16, 13, 14, 13, 15, 23, 14, 14, 13, 66, 16, 19, 13, 0, 14, 9,140, 7,195, 17, 14,194, 19, 17, 16,
+ 15, 13, 10, 7, 0, 7, 18, 8, 18, 73, 14, 69, 19, 16,244,236,196, 17, 23, 57, 49, 0, 16,228, 50,244,236, 17, 57, 57, 18, 57,
+ 48, 75, 83, 88, 7, 16, 5,237, 7, 16, 8,237, 7, 16, 8,237, 7, 16, 5,237, 7, 16, 5,237, 17, 23, 57, 7, 16, 8,237, 89,
+ 34,178, 56, 18, 1, 1, 93, 64, 26, 4, 16,118, 16, 2, 8, 17, 8, 18, 25, 12, 25, 13, 38, 14, 38, 15, 56, 17, 73, 17, 73, 18,
+ 89, 13, 10, 93, 0, 93, 1, 6, 7, 2, 7, 14, 1, 43, 1, 53, 51, 50, 54, 55, 1, 51, 9, 1, 51, 3, 90, 46, 71, 99, 34, 46,
+138, 92,148,109, 81, 92, 71,254, 79,195, 1, 76, 1, 71,195, 1,104,117,191,254,248, 58, 78, 78,154, 94,196, 4, 78,252,148, 3,
+108, 0, 0, 0, 0, 1, 0,203, 0, 0, 4, 16, 4, 98, 0, 9, 0, 88, 64, 28, 3, 23, 7, 8, 7, 8, 23, 2, 3, 2, 66, 8,
+182, 0,194, 3,182, 5, 8, 3, 0, 4, 1, 73, 0, 6, 69, 10, 16,244,196,236, 50, 17, 57, 57, 49, 0, 47,236,244,236, 48, 75,
+ 83, 88, 7, 16, 5,237, 7, 16, 5,237, 89, 34,178, 56, 8, 1, 1, 93, 64, 21, 54, 3, 56, 8, 69, 3, 74, 8, 87, 3, 88, 8,
+101, 3,106, 8,117, 3,122, 8, 10, 93, 19, 33, 21, 1, 33, 21, 33, 53, 1, 33,227, 3, 45,253,125, 2,131,252,187, 2,131,253,
+149, 4, 98,168,252,220,150,170, 3, 37, 0, 0, 0, 1, 0,221,254,178, 3,244, 6, 20, 0, 36, 0,102, 64, 53, 25, 15, 21, 11,
+ 6, 37, 9, 26, 16, 21, 29, 11, 5, 32, 33, 3, 0, 11,182, 9, 0,182, 1,198, 9,199, 21,182, 19,181, 37, 12, 9, 10, 5, 36,
+ 22, 25, 0, 29, 10, 5, 19, 2, 20, 0, 32, 25, 61, 10, 15, 5, 37, 16,212, 60,196,252, 60,196, 50, 57, 57, 17, 18, 57, 17, 18,
+ 57, 57, 17, 18, 57, 57, 49, 0, 16,252,236,228,244,236, 16,238, 18, 23, 57, 18, 57, 17, 57, 57, 17, 18, 57, 17, 18, 57, 57, 48,
+ 5, 21, 35, 34, 38, 61, 1, 52, 38, 43, 1, 53, 51, 50, 54, 61, 1, 52, 54, 59, 1, 21, 35, 34, 6, 29, 1, 20, 6, 7, 30, 1,
+ 29, 1, 20, 22, 51, 3,244, 64,249,169,107,140, 62, 62,141,106,169,249, 64, 70,140, 85, 91,110,111, 90, 85,140,190,144,148,221,
+239,151,116,143,114,150,240,221,147,143, 87,142,248,157,142, 25, 27,142,156,248,143, 86, 0, 0, 0, 1, 2, 18,254, 29, 2,190,
+ 6, 29, 0, 3, 0, 18,183, 1, 0,181, 4, 0, 4, 2, 4, 16,212,236, 49, 0, 16,252,204, 48, 1, 17, 35, 17, 2,190,172, 6,
+ 29,248, 0, 8, 0, 0, 0, 0, 0, 1, 0,221,254,178, 3,244, 6, 20, 0, 36, 0,106, 64, 55, 31, 37, 27, 22, 12, 15, 8, 27,
+ 11, 21, 25, 15, 4, 5, 32, 3, 0, 25,182, 27, 0,182, 35,198, 27,199, 15,182, 17,181, 37, 28, 25, 26, 21, 15, 1, 4, 0, 8,
+ 26, 21, 35, 18, 4, 0, 26, 31, 21, 61, 16, 0, 11, 4, 37, 16,212, 60,196, 50,252, 60,196, 17, 18, 57, 57, 17, 18, 57, 17, 18,
+ 57, 57, 17, 18, 57, 57, 49, 0, 16,252,236,228,244,236, 16,238, 18, 23, 57, 17, 18, 57, 57, 17, 57, 17, 57, 57, 17, 18, 57, 48,
+ 23, 51, 50, 54, 61, 1, 52, 54, 55, 46, 1, 61, 1, 52, 38, 43, 1, 53, 51, 50, 22, 29, 1, 20, 22, 59, 1, 21, 35, 34, 6, 29,
+ 1, 20, 6, 43, 1,221, 68,141, 86, 90,111,110, 91, 86,141, 68, 62,249,168,107,141, 64, 64,141,107,168,249, 62,190, 88,141,248,
+156,142, 27, 25,142,157,248,141, 88,143,147,221,240,150,114,143,116,151,239,221,148, 0, 0, 0, 0, 1, 0, 88, 1,236, 4,121,
+ 3, 12, 0, 27, 0, 38, 64, 18, 1, 11, 4, 15, 0, 14, 4,160, 25, 18, 0,160, 11, 28, 0, 14, 39, 28, 16,252,196, 49, 0, 16,
+212,252, 60,212,236, 50, 18, 57, 17, 18, 57, 48, 1, 21, 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50,
+ 22, 23, 22, 23, 22, 51, 50, 54, 4,121, 75,143, 79, 90,113, 22, 11, 77,103, 51, 79,141, 73, 78,146, 83, 53,100, 74, 12, 21,116,
+ 93, 70,137, 3, 12,174, 59, 55, 51, 10, 4, 33, 24, 59, 63,174, 60, 54, 22, 31, 5, 10, 55, 61, 0, 2, 2, 4, 0, 0, 2,207,
+ 5,213, 0, 3, 0, 9, 0, 30, 64, 14, 6, 0,134, 1,136, 4, 7, 6, 8, 2, 3, 4, 0, 10, 16,212, 60,236, 50, 57, 57, 49,
+ 0, 47,244,252,204, 48, 1, 53, 51, 21, 3, 17, 19, 51, 19, 17, 2, 4,203,203, 21,161, 21, 4,215,254,254,251, 41, 2,143, 1,
+101,254,155,253,113, 0, 0, 0, 0, 2, 0,213,254,199, 4, 37, 5,152, 0, 26, 0, 33, 0, 78, 64, 42, 27, 8, 5, 4, 28, 0,
+139, 1,141, 28, 9,139, 8,141, 5,203, 12, 28,203, 22, 24, 21,190, 15, 12,153, 13, 34, 27, 21, 14, 7, 23, 12, 4, 8, 0, 31,
+ 30, 18, 69, 34, 16,244,236,212, 60,212, 60, 60,236, 50, 50, 49, 0, 16,196,228, 50,244, 60,196,236, 16,254,244,238, 16,245,238,
+ 17, 57, 17, 18, 57, 48, 1, 21, 46, 1, 39, 17, 62, 1, 55, 21, 14, 1, 7, 17, 35, 17, 38, 0, 53, 52, 0, 55, 17, 51, 17, 30,
+ 1, 1, 17, 14, 1, 21, 20, 22, 4, 37, 67,130, 63, 63,131, 66, 73,130, 57,103,225,254,252, 1, 7,222,103, 57,130,254,222,132,
+160,160, 4, 53,172, 40, 44, 4,252,154, 5, 45, 40,172, 31, 34, 3,254,226, 1, 30, 22, 1, 57,251,250, 1, 61, 19, 1, 31,254,
+225, 3, 34,252, 43, 3, 96, 12,236,184,184,235, 0, 1, 0,139, 0, 0, 4, 88, 5,240, 0, 27, 0, 62, 64, 32, 7, 22, 1, 18,
+ 10,182, 20, 8, 12, 1,139, 0,167, 4,151, 25,150, 16, 12,151, 14, 0, 13, 9, 11, 7, 30, 15, 19, 21, 17, 28, 16,212, 60,196,
+196,252, 60,196,212,196, 49, 0, 47,236, 50,244,236,244,236, 16,212, 60,238, 50, 18, 57, 57, 48, 1, 21, 46, 1, 35, 34, 6, 29,
+ 1, 33, 21, 33, 17, 33, 21, 33, 53, 51, 17, 35, 53, 51, 53, 52, 54, 51, 50, 22, 4, 68, 62,127, 67,134,127, 1,115,254,141, 2,
+ 25,252, 51,236,199,199,219,223, 65,137, 5,182,184, 44, 44,179,192,217,143,254, 47,170,170, 1,209,143,238,254,250, 29, 0, 0,
+ 0, 2, 0,205, 0,195, 4, 76, 4, 66, 0, 11, 0, 47, 0,129, 64, 26, 32, 22, 27, 23, 14, 40, 45, 13, 24, 30, 27, 9, 42, 12,
+ 45, 39, 33, 21, 15, 4, 3, 9,255, 31, 23, 27,184, 1, 0, 64, 39, 3,255, 41, 13, 45, 48, 31, 41, 36, 32, 13, 23, 18, 14, 33,
+ 39, 36, 6, 15, 21, 18, 42, 30, 24, 12, 4, 6, 0,120, 22, 14, 18,121, 6,120, 40, 32, 36, 48, 16,212,196, 50,236,252,196, 50,
+236, 17, 23, 57, 17, 57, 57, 17, 18, 57, 57, 17, 18, 57, 57, 17, 18, 57, 57, 49, 0, 16,212,196, 50,236,252,196, 50,236, 17, 23,
+ 57, 18, 57, 57, 17, 18, 57, 57, 17, 18, 57, 57, 17, 18, 57, 57, 48, 1, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 3, 55, 23,
+ 7, 30, 1, 21, 20, 6, 7, 23, 7, 39, 14, 1, 35, 34, 38, 39, 7, 39, 55, 46, 1, 53, 52, 54, 55, 39, 55, 23, 62, 1, 51, 50,
+ 22, 3,100,124, 91, 90,125,125, 90, 91,124, 24,166, 90,166, 30, 29, 30, 31,168, 94,166, 46, 91, 50, 48, 96, 48,164, 92,166, 31,
+ 29, 31, 31,168, 94,166, 46, 91, 51, 46, 94, 2,131, 90,123,123, 90, 92,125,126, 1,116,166, 93,166, 49, 93, 48, 50, 91, 45,166,
+ 94,167, 31, 30, 29, 28,163, 90,166, 51, 93, 46, 50, 93, 45,166, 95,168, 31, 30, 29, 0, 0, 0, 0, 1, 0, 37, 0, 0, 4,172,
+ 5,213, 0, 24, 0,127, 64, 68, 3, 37, 4, 9, 4, 2, 37, 1, 2, 9, 9, 4, 2, 37, 3, 2, 20, 0, 20, 1, 37, 0, 0, 20,
+ 66, 2, 7, 5, 16, 12,231, 18, 10, 23, 5,231, 21, 7, 3, 0,136, 14, 24, 1, 17, 2, 15, 8, 5, 3, 3, 6, 4, 60, 11, 6,
+101, 13, 9, 30, 22, 17,101, 0, 60, 19, 15, 25, 16,212, 60,236,236, 50,252, 60,236, 50,236, 18, 23, 57, 18, 57, 17, 57, 57, 49,
+ 0, 47,228, 50,212, 60,236, 50,212, 60,236, 50, 17, 18, 57, 48, 75, 83, 88, 7, 16, 5,237, 7, 16, 8,237, 7, 16, 8,237, 7,
+ 16, 5,237, 89, 34, 19, 51, 9, 1, 51, 1, 51, 21, 33, 7, 21, 33, 21, 33, 17, 35, 17, 33, 53, 33, 53, 39, 33, 53, 51, 37,215,
+ 1,108, 1,107,217,254,182,252,254,197, 86, 1,145,254,111,203,254,113, 1,143, 90,254,203,243, 5,213,253,109, 2,147,253,207,
+111,151, 35,111,253,244, 2, 12,111, 35,151,111, 0, 2, 2, 18,254,162, 2,190, 5,152, 0, 3, 0, 7, 0, 33,188, 0, 5, 1,
+ 7, 0, 4, 0, 0, 1, 7,183, 1, 8, 4, 0, 4, 6, 2, 8, 16,212, 60,236, 50, 49, 0, 16,212,236,212,236, 48, 1, 17, 35,
+ 17, 19, 17, 35, 17, 2,190,172,172,172, 5,152,253, 10, 2,246,252, 0,253, 10, 2,246, 0, 0, 0, 2, 0,199,255, 61, 4, 12,
+ 5,240, 0, 50, 0, 62, 0,106, 64, 60, 35, 36, 30, 57, 51, 11, 17, 36, 42, 4, 1, 27,143, 26,206, 30,207, 23, 1,143, 0,206,
+ 4,207, 48,150, 23, 63, 35, 7, 17, 60, 33, 42, 54, 11, 36, 57, 51, 4, 7, 33, 85, 20, 7, 85, 45, 20, 60, 85, 0, 38, 14, 45,
+ 26, 38, 54, 85, 39, 63, 16,212,236,228,196,212,228,236,196, 16,238, 16,238, 17, 23, 57, 18, 57, 17, 18, 57, 18, 57, 49, 0, 16,
+196,244,236,244,236, 16,238,246,238, 17, 23, 57, 57, 57, 17, 18, 57, 48, 1, 21, 46, 1, 35, 34, 6, 21, 20, 23, 22, 23, 30, 1,
+ 21, 20, 6, 7, 30, 1, 21, 20, 6, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 47, 1, 46, 1, 53, 52, 54, 55, 46, 1, 53,
+ 52, 54, 51, 50, 22, 1, 14, 1, 21, 20, 22, 23, 62, 1, 53, 52, 38, 3,168, 83,143, 57, 97,107,205, 26, 14,212,130, 91, 93, 61,
+ 58,204,173, 73,155, 87, 87,148, 57,102,113,221, 24,214,128, 93, 91, 60, 59,200,167, 72,153,254,141, 62, 61,141,247, 62, 60,143,
+ 5,182,164, 39, 39, 80, 71, 90,115, 15, 8,119,154,101, 90,140, 53, 52,109, 64,142,168, 29, 29,164, 39, 39, 84, 76,102,123, 14,
+120,153,102, 91,143, 49, 44,112, 69,130,159, 29,253,213, 45, 90, 47, 76,135,133, 45, 90, 47, 76,136, 0, 0, 0, 0, 2, 1, 63,
+ 5, 70, 3,145, 6, 16, 0, 3, 0, 7, 0, 29, 64, 14, 6, 2,222, 4, 0,221, 8, 5, 97, 4, 1, 97, 0, 8, 16,212,252,212,
+236, 49, 0, 16,244, 60,236, 50, 48, 1, 51, 21, 35, 37, 51, 21, 35, 1, 63,203,203, 1,136,202,202, 6, 16,202,202,202, 0, 0,
+ 0, 3, 0, 0, 0,125, 4,209, 5, 78, 0, 25, 0, 49, 0, 73, 0, 68, 64, 39, 13,218, 14, 10,218, 17,220, 38,212, 62, 1,218,
+ 0, 4,218, 23,217, 26,212, 62,211, 50,209, 74, 7, 92, 20, 13, 0, 94, 44, 7, 56, 20, 32, 7, 56, 89, 68, 47,230,254,197, 16,
+254,229, 50, 16,238, 49, 0, 16,244,236,252,244,236,212,236, 16,254,253,238,214,238, 48, 1, 21, 46, 1, 35, 34, 6, 21, 20, 22,
+ 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 53, 52, 54, 51, 50, 22, 39, 34, 6, 7, 14, 1, 21, 20, 22, 23, 30, 1, 51, 50, 54, 55,
+ 62, 1, 53, 52, 38, 39, 46, 1, 39, 50, 22, 23, 30, 1, 21, 20, 6, 7, 14, 1, 35, 34, 38, 39, 46, 1, 53, 52, 54, 55, 62, 1,
+ 3, 96, 58,111, 58,117,135,140,130, 56,103, 50, 52,114, 61,180,207,208,179, 61,114,196,106,181, 75, 75, 77, 77, 75, 76,181,105,
+106,181, 76, 76, 75, 76, 75, 75,181,107,127,218, 90, 90, 92, 91, 91, 91,218,126,125,218, 91, 91, 91, 92, 90, 90,218, 4, 47,108,
+ 28, 27,149,128,132,142, 25, 26,104, 23, 22,200,172,173,202, 22,161, 74, 75, 75,184,106,104,183, 75, 76, 76, 76, 76, 76,181,105,
+106,184, 75, 75, 74,103, 90, 90, 91,220,126,125,218, 91, 91, 91, 91, 91, 91,218,125,126,220, 91, 90, 90, 0, 0, 0, 3, 1, 14,
+ 1,213, 3,193, 5,240, 0, 10, 0, 37, 0, 41, 0,100, 64, 54, 9, 6, 0, 25, 31, 11, 23, 14, 6, 0, 40,243, 38, 0,237, 23,
+ 38,241, 6,237, 12, 17, 32,239, 31,238, 28,237, 17,240, 35,150, 42, 38, 31, 20, 0, 23, 9, 3, 40, 39, 24, 13, 9,106, 11,107,
+ 31, 3,106, 20,105, 42, 16,252,236,196,252,236, 50, 50,192,192, 17, 18, 57, 57, 17, 18, 57, 49, 0, 16,244,228,252,244,236, 16,
+196,238,237,214,238, 16,238, 17, 18, 57, 18, 57, 17, 57, 17, 18, 57, 48, 1, 34, 6, 21, 20, 22, 51, 50, 54, 61, 1, 55, 17, 35,
+ 53, 14, 1, 35, 34, 38, 53, 52, 54, 59, 1, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 1, 33, 21, 33, 2,172,144,124,
+ 87, 72,105,131,143,143, 49,131, 82,129,150,187,172,182,119,117, 51,125, 67, 68,135, 63,184,172,253,107, 2,156,253,100, 4, 80,
+ 68, 78, 64, 77,143,115, 29, 61,254, 64,112, 65, 66,136,116,129,140, 4, 90, 92, 35, 33,127, 28, 28,172,253, 12,123, 0, 0, 0,
+ 0, 2, 0,119, 0,141, 4, 18, 4, 35, 0, 6, 0, 13, 0, 47, 64, 23, 9, 2, 11, 4,252, 7, 0,172, 14, 2, 12, 5, 9, 0,
+ 10, 7,118, 12, 3, 0,118, 5, 14, 16,212,252, 60,212,236, 50, 17, 57, 17, 18, 57, 49, 0, 16,244, 60,236, 50, 57, 57, 48, 1,
+ 21, 9, 1, 21, 1, 53, 1, 21, 9, 1, 21, 1, 53, 2, 76,254,211, 1, 45,254, 43, 3,155,254,211, 1, 45,254, 43, 4, 35,191,
+254,244,254,244,191, 1,162, 82, 1,162,191,254,244,254,244,191, 1,162, 82, 0, 0, 1, 0, 88, 1,115, 4,121, 3, 94, 0, 5,
+ 0, 24, 64, 11, 4,160, 2, 0, 6, 3, 28, 1, 0, 39, 6, 16,252,212,236, 49, 0, 16,212,196,236, 48, 19, 33, 17, 35, 17, 33,
+ 88, 4, 33,168,252,135, 3, 94,254, 21, 1, 63, 0, 1, 1,100, 1,223, 3,109, 2,131, 0, 3, 0, 17,182, 0,160, 2, 4, 1,
+ 0, 4, 16,212,196, 49, 0, 16,212,236, 48, 1, 33, 21, 33, 1,100, 2, 9,253,247, 2,131,164, 0, 4, 0, 0, 0,125, 4,209,
+ 5, 78, 0, 19, 0, 28, 0, 52, 0, 76, 0,133, 64, 73, 15, 14, 13, 3, 16, 12, 93, 9, 10, 9, 11, 93, 10, 10, 9, 66, 12, 10,
+ 6, 22, 9, 10, 22,215, 15, 20,215, 0, 17, 10,214, 65,212, 41, 0,213, 53,212, 41,211, 29,209, 77, 23, 20, 15, 12, 4, 0, 6,
+ 16, 9, 26, 3, 21, 16, 92, 18, 26, 92, 10, 3, 91, 71, 7, 35, 18, 88, 59, 7, 35, 89, 47, 47,230,254,229, 16,254,245,196,238,
+ 16,238, 50, 17, 18, 57, 17, 57, 57, 23, 57, 49, 0, 16,244,236,252,228, 16,254,237, 50, 16,238,214,238, 18, 57, 18, 57, 18, 57,
+ 48, 75, 83, 88, 7, 16, 5,237, 7, 16, 4,237, 17, 23, 57, 89, 34, 1, 50, 22, 21, 20, 6, 7, 30, 1, 31, 1, 35, 39, 46, 1,
+ 43, 1, 17, 35, 17, 23, 35, 21, 51, 50, 54, 53, 52, 38, 3, 50, 22, 23, 30, 1, 21, 20, 6, 7, 14, 1, 35, 34, 38, 39, 46, 1,
+ 53, 52, 54, 55, 62, 1, 23, 34, 6, 7, 14, 1, 21, 20, 22, 23, 30, 1, 51, 50, 54, 55, 62, 1, 53, 52, 38, 39, 46, 1, 2, 88,
+147,144, 88, 80, 19, 58, 38,114,143,107, 49, 61, 45, 55,130,232,102,102, 90, 74, 74, 68,127,218, 90, 90, 92, 91, 91, 91,218,126,
+125,218, 91, 91, 91, 92, 90, 90,218,126,106,181, 75, 75, 77, 77, 75, 76,181,105,106,181, 76, 76, 75, 76, 75, 75,181, 4, 76, 98,
+101, 71, 93, 14, 5, 67, 59,186,174, 80, 42,254,216, 2,182, 84,232, 54, 63, 62, 53, 1, 86, 90, 90, 91,220,126,125,218, 91, 91,
+ 91, 91, 91, 91,218,125,126,220, 91, 90, 90,103, 74, 75, 75,184,106,104,183, 75, 76, 76, 76, 76, 76,181,105,106,184, 75, 75, 74,
+ 0, 1, 1, 61, 5, 98, 3,147, 5,246, 0, 3, 0, 17,182, 2,182, 0, 4, 1, 0, 4, 16,212,204, 49, 0, 16,212,236, 48, 1,
+ 33, 21, 33, 1, 61, 2, 86,253,170, 5,246,148, 0, 2, 1, 43, 3,117, 3,166, 5,240, 0, 14, 0, 26, 0, 32, 64, 17, 21,204,
+ 9,205, 15,204, 0,150, 27, 24, 83, 6, 84, 18, 83, 12, 27, 16,212,236,252,236, 49, 0, 16,244,236,252,236, 48, 1, 50, 22, 23,
+ 30, 1, 21, 20, 6, 35, 34, 38, 53, 52, 54, 23, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 2,104, 65,117, 44, 45, 47,186,134,
+135,180,184,133, 79,111,109, 79, 80,113,112, 5,240, 49, 46, 45,114, 66,132,183,180,135,134,186,129,111, 80, 80,108,110, 78, 79,
+112, 0, 0, 0, 0, 2, 0, 88, 0, 0, 4,121, 4,147, 0, 3, 0, 15, 0, 46, 64, 24, 9,227, 11, 7,160, 4,227, 13, 5, 0,
+160, 2, 6, 1, 26, 8, 4, 28, 12, 0, 26, 14, 10, 16, 16,212, 60,236, 50,252, 60,236, 50, 49, 0, 47,236,212, 60,236,252, 60,
+236, 48, 55, 33, 21, 33, 1, 17, 33, 21, 33, 17, 35, 17, 33, 53, 33, 17, 88, 4, 33,251,223, 2,100, 1,189,254, 67,168,254, 68,
+ 1,188,170,170, 4,147,254,183,170,254,180, 1, 76,170, 1, 73, 0, 1, 1, 66, 2,156, 3,125, 5,240, 0, 24, 0, 97, 64, 19,
+ 0, 87, 4, 5, 4, 22, 23, 2, 21, 24, 87, 5, 5, 4, 66, 5, 24, 14, 0, 65, 9, 1, 9, 0, 2, 0, 14, 1, 9, 0, 15, 0,
+ 2, 1, 10, 0, 11, 1, 9, 64, 14, 18,150, 25, 5, 0, 24, 14, 8,127, 1, 21, 14, 3, 25, 16,212,196,212,196,236, 17, 57, 57,
+ 57, 49, 0, 16,244,236,228,212,236, 16,238, 17, 57, 57, 48, 75, 83, 88, 7, 16, 4,237, 17, 23, 57, 7, 16, 5,237, 89, 34, 1,
+ 33, 21, 33, 53, 55, 62, 1, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 21, 20, 6, 7, 1,227, 1,154,253,197,231,101,
+ 81,100, 82, 49,113, 63, 65,121, 59,142,172, 74,119, 3, 14,114,110,226, 97,122, 51, 61, 76, 36, 36,125, 28, 28,133,107, 57,119,
+117, 0, 0, 0, 0, 1, 1, 70, 2,141, 3,156, 5,240, 0, 40, 0, 92, 65, 20, 0, 0, 0, 19, 1, 9, 0, 21, 0, 10, 1, 9,
+ 0, 9, 1, 11, 0, 21, 0, 13, 1, 9, 0, 6, 0, 31, 1, 9, 0, 32, 1, 11, 0, 6, 1, 10, 0, 28, 1, 9, 64, 19, 35,150,
+ 41, 22, 19, 13, 0, 3, 20, 25,127, 38, 16,127, 3, 31, 20, 9, 41, 16,212,196,196,212,236,212,236, 17, 23, 57, 57, 49, 0, 16,
+244,236,228,244,236, 16,238,198,246,238, 16,238, 57, 48, 1, 30, 1, 21, 20, 6, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52,
+ 38, 43, 1, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 21, 20, 6, 2,219, 94, 99,190,177, 58,114, 59,
+ 69,113, 45,101,118,110,109, 66, 74, 93, 98, 96, 87, 44,112, 59, 69,117, 50,145,168, 88, 4, 96, 21,108, 80,124,134, 21, 20,121,
+ 27, 26, 81, 68, 74, 76,108, 63, 60, 56, 63, 24, 23,121, 17, 18,118, 99, 71, 93, 0, 1, 1,219, 4,238, 3,186, 6,102, 0, 3,
+ 0, 37, 64, 9, 2,186, 0,185, 4, 1, 60, 3, 4, 16,212,236, 49, 0, 16,244, 75,176, 9, 84, 75,176, 14, 84, 91, 88,185, 0,
+ 0, 0, 64, 56, 89,236, 48, 1, 51, 1, 35, 2,244,198,254,187,154, 6,102,254,136, 0, 0, 0, 0, 1, 0,195,254, 84, 4,158,
+ 4, 96, 0, 32, 0, 76, 64, 42, 19, 25, 31, 3, 22, 6, 3, 9, 12, 3, 1, 18, 6,140, 15,139, 28, 22,153, 0,195, 10, 1,194,
+ 33, 25, 11, 9, 32, 31, 2, 0, 18, 9, 6, 11, 74, 2, 6, 0, 70, 33, 16,244,236,252,236,196, 17, 18, 57, 57, 17, 18, 57, 49,
+ 0, 16,228, 50,228,244, 60,236,252,196, 17, 23, 57, 17, 18, 23, 57, 48, 19, 17, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 20,
+ 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 39, 14, 1, 35, 34, 38, 39, 17,195,184,120,111,127,129,185, 32, 33, 9, 29, 28, 38,
+ 68, 34, 62, 75, 12, 46,133, 89, 92,127, 44,254, 84, 6, 12,253, 72,142,151,170,166, 2,141,252,160, 59, 56, 10, 13,148, 23, 22,
+ 79, 79, 80, 78, 76, 80,253,213, 0, 1, 0,106,255, 59, 4, 6, 5,213, 0, 13, 0, 35, 64, 17, 4, 8, 0,136, 6, 2, 14, 0,
+ 7, 87, 5, 3, 87, 1, 49, 11, 14, 16,220,252,252,212,236, 57, 49, 0, 16,196, 50,244,196,204, 48, 1, 33, 17, 35, 17, 35, 17,
+ 35, 17, 46, 1, 53, 52, 36, 2, 70, 1,192,141,191,141,215,236, 1, 5, 5,213,249,102, 6, 31,249,225, 3, 78, 17,221,184,190,
+232, 0, 0, 0, 0, 1, 1,233, 2, 47, 2,229, 3, 96, 0, 3, 0, 21,185, 0, 2, 1, 1,181, 0, 4, 1, 29, 0, 4, 16,212,
+236, 49, 0, 16,212,236, 48, 1, 51, 17, 35, 1,233,252,252, 3, 96,254,207, 0,255,255, 1,139,254,117, 3, 41, 0, 0, 16, 6,
+ 2,163, 0, 0, 0, 1, 1, 88, 2,156, 3,147, 5,223, 0, 10, 0, 57, 65, 11, 0, 7, 0, 0, 1, 9, 0, 9, 0, 3, 1, 9,
+ 0, 4, 0, 9, 1, 10, 0, 2, 1, 9, 64, 13, 5,150, 11, 8, 97, 6, 87, 3,125, 0, 97, 1, 11, 16,212,236,236,252,236, 49,
+ 0, 16,244,236,228,212,236, 16,238, 50, 48, 1, 51, 17, 7, 53, 55, 51, 17, 51, 21, 33, 1,106,205,223,229,138,204,253,215, 3,
+ 10, 2, 99, 41,116, 39,253, 43,110, 0, 0, 0, 0, 3, 0,244, 1,213, 3,221, 5,240, 0, 11, 0, 23, 0, 27, 0, 51, 64, 28,
+ 26,243, 24,241, 6,237, 18,240, 0,237, 12,150, 28, 25, 15, 9, 24, 21, 3, 9,106, 15,107, 3,106, 21,105, 28, 16,252,236,252,
+236, 17, 18, 57, 17, 18, 57, 49, 0, 16,244,236,244,236,252,236, 48, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 39, 50, 22,
+ 21, 20, 6, 35, 34, 38, 53, 52, 54, 3, 33, 21, 33, 2,104,102,115,115,102,101,117,115,103,170,203,202,171,170,202,203,171, 2,
+164,253, 92, 5,123,156,139,139,154,157,136,139,156,117,224,188,187,223,223,187,188,224,252, 96,123, 0, 0, 0, 0, 2, 0,193,
+ 0,141, 4, 92, 4, 35, 0, 6, 0, 13, 0, 47, 64, 23, 12, 5, 10, 3,252, 7, 0,172, 14, 5, 8, 1, 12, 7, 1,118, 3, 0,
+ 8,118, 10, 7, 14, 16,212, 60,252,212, 60,236, 18, 57, 17, 18, 57, 49, 0, 16,244, 60,236, 50, 57, 57, 48, 9, 1, 21, 1, 53,
+ 9, 1, 37, 1, 21, 1, 53, 9, 1, 2,135, 1,213,254, 43, 1, 45,254,211,254, 58, 1,213,254, 43, 1, 45,254,211, 4, 35,254,
+ 94, 82,254, 94,191, 1, 12, 1, 12,191,254, 94, 82,254, 94,191, 1, 12, 1, 12,255,255, 0, 27,254,242, 4, 90, 6,123, 16, 39,
+ 6,170, 0,184,252, 86, 16, 39, 0,123,254,254, 0,156, 16, 6, 11,182, 0, 0,255,255, 0, 27,254,242, 4, 90, 6,123, 16, 39,
+ 0,123,254,254, 0,156, 16, 38, 11,182, 0, 0, 16, 7, 0,116, 0,201,252, 86,255,255, 0, 27,254,242, 4, 90, 6,140, 16, 39,
+ 6,170, 0,184,252, 86, 16, 39, 0,117,255, 29, 0,156, 16, 6, 11,182, 0, 0, 0, 2, 0,193,255,229, 3,221, 5,213, 0, 33,
+ 0, 37, 0,130, 64, 71, 11, 10, 9, 8, 7, 5, 12, 6, 37, 25, 26, 25, 3, 4, 2, 2, 5, 37, 26, 26, 25, 66, 33, 26, 5, 2,
+ 4, 6, 25, 0, 16,139, 15,141, 12, 0, 34,134, 36, 12,151, 19,153, 36,136, 38, 6, 35, 25, 22, 9, 31, 5, 0, 3, 29, 1, 26,
+ 35, 9, 41, 22, 15, 29, 3, 1, 15, 34, 30, 35, 38, 16,212,252,196,212,236, 16,214,238, 17, 57, 17, 18, 23, 57, 17, 18, 57, 18,
+ 57, 49, 0, 16,228,244,236, 16,254,205, 16,244,238, 18, 57, 57, 23, 57, 48, 75, 83, 88, 7, 16, 4,237, 17, 23, 57, 7, 16, 4,
+237, 17, 23, 57, 89, 34, 1, 51, 21, 20, 6, 15, 1, 14, 1, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 53, 52, 54, 63,
+ 1, 62, 1, 53, 52, 53, 54, 53, 19, 35, 53, 51, 2, 37,190, 61, 84, 90, 62, 47,131,109, 78,178, 98, 94,191,104,186,221, 67, 94,
+ 88, 67, 38, 2,196,202,202, 4, 68,154, 98,137, 82, 89, 59, 88, 49, 89,110, 69, 68,188, 57, 56,192,161, 76,131, 92, 86, 64, 84,
+ 63, 1, 4, 23, 19, 1, 14,254,255,255, 0, 37, 0, 0, 4,172, 7,107, 16, 38, 0, 36, 0, 0, 17, 7, 11,179, 0, 0, 1,117,
+ 0, 7, 64, 3, 79, 11, 1, 93, 49, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7,107, 16, 38, 0, 36, 0, 0, 17, 7, 11,177,
+ 0, 0, 1,117, 0, 7, 64, 3, 79, 11, 1, 93, 49, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7,109, 16, 38, 0, 36, 0, 0,
+ 17, 7, 11,180, 0, 0, 1,117, 0, 20,180, 5, 13, 17, 10, 7, 43, 64, 9, 32, 17, 47, 13, 0, 17, 15, 13, 4, 93, 49, 0, 0,
+255,255, 0, 37, 0, 0, 4,172, 7, 94, 16, 38, 0, 36, 0, 0, 17, 7, 11,178, 0, 0, 1,117, 0, 16,180, 5, 35, 20, 10, 7,
+ 43, 64, 5, 79, 35, 64, 20, 2, 93, 49, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7, 78, 16, 38, 0, 36, 0, 0, 17, 7, 11,176,
+ 0, 0, 1,117, 0, 28,180, 5, 17, 14, 10, 7, 43, 64, 17,112, 14,127, 17, 48, 14, 63, 17, 32, 14, 47, 17, 0, 14, 15, 17, 8,
+ 93, 49, 0, 0, 0, 3, 0, 37, 0, 0, 4,172, 7,109, 0, 11, 0, 14, 0, 33, 0,193, 64, 87, 12, 37, 13, 12, 27, 28, 27, 14,
+ 37, 28, 27, 30, 37, 28, 27, 29, 37, 28, 28, 27, 32, 37, 15, 33, 31, 37, 15, 33, 13, 37, 33, 15, 33, 12, 37, 14, 12, 15, 15, 33,
+ 66, 12, 27, 15, 9, 30,151, 13, 3,200, 21, 9,144, 13,201, 32, 28, 29, 28, 24, 32, 33, 31, 13, 18, 6, 30, 14, 24, 12, 6, 27,
+ 0, 80, 24, 15, 6, 80, 18, 24, 75, 28, 47, 18, 75, 33, 34, 16,220,228,252,228, 16,238, 50, 16,238, 50, 17, 57, 17, 57, 57, 17,
+ 18, 57, 57, 17, 57, 17, 18, 57, 49, 0, 47, 60,230,230,214,238, 16,238, 18, 57, 57, 57, 48, 75, 83, 88, 7, 16, 8,237, 7, 16,
+ 5,237, 7, 5,237, 7, 5,237, 7, 16, 5,237, 7, 5,237, 7, 5,237, 7, 16, 8,237, 89, 34,178,128, 31, 1, 0, 93, 64, 20,
+133, 13,138, 14,138, 30,133, 31, 4,143, 12,143, 12,128, 13,128, 14,128, 30, 5, 93, 1, 93, 1, 52, 38, 35, 34, 6, 21, 20, 22,
+ 51, 50, 54, 7, 3, 33, 1, 46, 1, 53, 52, 54, 51, 50, 22, 21, 20, 6, 7, 1, 35, 3, 33, 3, 35, 3, 0, 89, 63, 64, 87, 88,
+ 63, 63, 89,152,213, 1,170,254,148, 58, 65,160,114,114,161, 64, 59, 1,172,209,110,253,245,108,209, 6, 90, 63, 89, 87, 65, 63,
+ 88, 88,252,253, 8, 3, 80, 33,121, 73,114,161,161,114, 73,118, 36,250,137, 1,133,254,123, 0, 0, 2, 0, 0, 0, 0, 4,156,
+ 5,213, 0, 15, 0, 19, 0,103, 64, 55, 13, 37, 15, 14, 12, 37, 15, 14, 17, 37, 14, 15, 14, 16, 37, 15, 15, 14, 66, 5,151, 3,
+ 11,151, 17, 16, 1,151, 0,136, 7,151, 17,176, 3,177, 13, 9, 17, 16, 15, 13, 12, 5, 14, 10, 0, 4, 8, 6, 2, 99, 18, 10,
+ 14, 47,212, 60,238, 50,214,196,196, 17, 18, 23, 57, 49, 0, 47, 60,238,238,238,244,238, 50, 16,238, 16,238, 48, 75, 83, 88, 7,
+ 16, 5,237, 7, 16, 5,237, 7, 5,237, 7, 5,237, 89, 34, 1, 21, 33, 17, 33, 21, 33, 17, 33, 21, 33, 17, 33, 3, 35, 1, 23,
+ 3, 33, 17, 4,137,254,174, 1, 51,254,205, 1,101,253,225,254,160,101,184, 1,154,120,202, 1, 53, 5,213,170,254, 70,170,253,
+227,170, 1,127,254,129, 5,213,170,252,252, 3, 4, 0, 0, 0,255,255, 0,139,254,117, 4, 49, 5,240, 16, 38, 2,163,100, 0,
+ 16, 6, 0, 38, 0, 0, 0, 0,255,255, 0,197, 0, 0, 4, 78, 7,107, 16, 38, 0, 40, 0, 0, 16, 7, 11,179, 0, 18, 1,117,
+255,255, 0,197, 0, 0, 4, 78, 7,107, 16, 38, 0, 40, 0, 0, 16, 7, 11,177, 0, 18, 1,117,255,255, 0,197, 0, 0, 4, 78,
+ 7,109, 16, 38, 0, 40, 0, 0, 16, 7, 11,180, 0, 18, 1,117,255,255, 0,197, 0, 0, 4, 78, 7, 78, 16, 38, 0, 40, 0, 0,
+ 16, 7, 11,176, 0, 18, 1,117,255,255, 0,201, 0, 0, 4, 6, 7,107, 16, 38, 0, 44, 0, 0, 16, 7, 11,179, 0, 0, 1,117,
+255,255, 0,201, 0, 0, 4, 6, 7,107, 16, 38, 0, 44, 0, 0, 16, 7, 11,177, 0, 0, 1,117,255,255, 0,201, 0, 0, 4, 6,
+ 7,109, 16, 38, 0, 44, 0, 0, 17, 7, 11,180, 0, 0, 1,117, 0, 11,180, 16, 32, 1, 0, 0, 16, 73, 99, 58, 49, 0, 0, 0,
+255,255, 0,201, 0, 0, 4, 6, 7, 78, 16, 38, 0, 44, 0, 0, 17, 7, 11,176, 0, 0, 1,117, 0, 8,180, 1, 18, 15, 0, 7,
+ 43, 49, 0, 0, 0, 2, 0, 8, 0, 0, 4, 78, 5,213, 0, 12, 0, 25, 0, 59, 64, 33, 23, 8,182, 10, 19,151, 0,136, 13,151,
+ 21, 10, 6, 19, 13, 6, 0, 4, 22, 20, 16, 50, 3, 49, 9, 48, 24, 20, 30, 11, 7, 48, 26, 16,252, 60,236, 50,236,252,236, 16,
+196, 23, 57, 49, 0, 47,198, 50,238,246,238, 16,238, 50, 48, 1, 32, 0, 17, 16, 0, 41, 1, 17, 35, 53, 51, 17, 1, 32, 54, 17,
+ 16, 38, 33, 35, 17, 33, 21, 33, 17, 1,180, 1, 86, 1, 68,254,187,254,171,254,209,125,125, 1, 47, 0,255,202,201,255, 0, 96,
+ 1, 8,254,248, 5,213,254,148,254,128,254,130,254,149, 2,197,149, 2,123,250,209,251, 1, 72, 1, 75,251,254, 43,149,253,225,
+255,255, 0,139, 0, 0, 4, 70, 7, 98, 16, 38, 0, 49, 0, 0, 17, 7, 11,178, 0, 0, 1,121, 0, 16,180, 4, 34, 19, 0, 7,
+ 43, 64, 5, 79, 34, 64, 19, 2, 93, 49, 0, 0,255,255, 0,117,255,227, 4, 92, 7,107, 16, 38, 0, 50, 0, 0, 17, 7, 11,179,
+ 0, 0, 1,117, 0, 7, 64, 3, 79, 24, 1, 93, 49, 0, 0, 0,255,255, 0,117,255,227, 4, 92, 7,107, 16, 38, 0, 50, 0, 0,
+ 17, 7, 11,177, 0, 0, 1,117, 0, 7, 64, 3, 79, 24, 1, 93, 49, 0, 0, 0,255,255, 0,117,255,227, 4, 92, 7,109, 16, 38,
+ 0, 50, 0, 0, 17, 7, 11,180, 0, 0, 1,117, 0, 20,180, 12, 26, 30, 18, 7, 43, 64, 9, 32, 30, 47, 26, 0, 30, 15, 26, 4,
+ 93, 49, 0, 0,255,255, 0,117,255,227, 4, 92, 7, 94, 16, 38, 0, 50, 0, 0, 17, 7, 11,178, 0, 0, 1,117, 0, 16,180, 12,
+ 48, 33, 18, 7, 43, 64, 5, 79, 48, 64, 33, 2, 93, 49, 0, 0,255,255, 0,117,255,227, 4, 92, 7, 78, 16, 38, 0, 50, 0, 0,
+ 17, 7, 11,176, 0, 0, 1,117, 0, 28,180, 12, 30, 27, 18, 7, 43, 64, 17,112, 27,127, 30, 48, 27, 63, 30, 32, 27, 47, 30, 0,
+ 27, 15, 30, 8, 93, 49, 0, 0, 0, 1, 0,150, 0,174, 4, 59, 4, 84, 0, 11, 0, 46, 64, 28, 10, 8, 7, 6, 4, 2, 1, 0,
+ 8, 11, 9, 5, 3, 12, 11, 10, 9, 8, 7, 5, 4, 3, 1, 9, 6, 2, 0, 12, 16,212, 60,204, 23, 57, 49, 0, 16,212, 60,204,
+ 50, 23, 57, 48, 19, 9, 1, 55, 9, 1, 23, 9, 1, 7, 9, 1,150, 1, 94,254,162,116, 1, 94, 1, 95,116,254,162, 1, 92,116,
+254,163,254,164, 1, 37, 1, 92, 1, 94,117,254,162, 1, 94,117,254,162,254,164,119, 1, 94,254,162, 0, 0, 0, 0, 3, 0, 8,
+255,186, 4,176, 6, 23, 0, 9, 0, 19, 0, 43, 0,107, 64, 58, 43, 41, 38, 11, 10, 9, 0, 4, 14, 29, 31, 32, 20, 14, 3, 42,
+ 38, 30, 3,151, 26, 14,151, 38,150, 26,153, 31, 31, 30, 44, 32, 35, 17, 42, 20, 23, 11, 10, 9, 0, 4, 6, 29, 35, 17, 41, 6,
+ 43, 6, 50, 23, 54, 17, 50, 35, 53, 44, 16,252,236,252,236,192, 18, 57, 17, 18, 57, 18, 23, 57, 17, 57, 57, 17, 18, 57, 17, 57,
+ 57, 49, 0, 47,228,244,236, 16,238,192, 16,192, 17, 18, 57, 57, 18, 57, 18, 23, 57, 17, 57, 57, 48, 1, 30, 1, 51, 50, 18, 17,
+ 52, 38, 39, 9, 1, 46, 1, 35, 34, 2, 17, 20, 22, 1, 22, 18, 21, 16, 2, 35, 34, 38, 39, 7, 39, 55, 38, 2, 53, 16, 18, 51,
+ 50, 22, 23, 55, 23, 1,115, 30,131, 84,154,135, 10, 10,253,221, 1,248, 25,115, 86,157,131, 5, 2,187, 41, 43,247,253,121,180,
+ 61,143,103,178, 32, 37,247,252,115,173, 57,139,100, 1, 47, 78, 90, 1, 25, 1, 73,110,136, 45,253,203, 2,207, 81, 85,254,220,
+254,134, 80,101, 2,230, 81,254,254,163,254,122,254,128, 81, 81,203, 70,252, 73, 1, 6,158, 1,135, 1,128, 82, 80,201, 74, 0,
+255,255, 0,147,255,227, 4, 61, 7,107, 16, 38, 0, 56, 0, 0, 17, 7, 11,179, 0, 0, 1,117, 0, 7, 64, 3, 79, 31, 1, 93,
+ 49, 0, 0, 0,255,255, 0,147,255,227, 4, 61, 7,107, 16, 38, 0, 56, 0, 0, 17, 7, 11,177, 0, 0, 1,117, 0, 7, 64, 3,
+ 79, 31, 1, 93, 49, 0, 0, 0,255,255, 0,147,255,227, 4, 61, 7,109, 16, 38, 0, 56, 0, 0, 17, 7, 11,180, 0, 0, 1,117,
+ 0, 20,180, 17, 32, 36, 1, 7, 43, 64, 9, 32, 36, 47, 32, 0, 36, 15, 32, 4, 93, 49, 0, 0,255,255, 0,147,255,227, 4, 61,
+ 7, 78, 16, 38, 0, 56, 0, 0, 17, 7, 11,176, 0, 0, 1,117, 0, 28,180, 17, 36, 33, 1, 7, 43, 64, 17,112, 33,127, 36, 48,
+ 33, 63, 36, 32, 33, 47, 36, 0, 33, 15, 36, 8, 93, 49, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7,107, 16, 38, 0, 60, 0, 0,
+ 17, 7, 11,177, 0, 0, 1,117, 0, 7, 64, 3, 32, 9, 1, 93, 49, 0, 0, 0, 0, 2, 0,201, 0, 0, 4,141, 5,213, 0, 8,
+ 0, 21, 0, 52,181, 1,151, 18, 0,151, 11,184, 1, 8, 64, 19, 9,136, 20, 8, 2, 18, 12, 0, 5, 50, 15, 56, 19, 10, 0, 30,
+ 9, 51, 22, 16,252,236, 50, 50,252,236, 17, 57, 57, 57, 57, 49, 0, 47,244,252,236,212,236, 48, 1, 17, 51, 50, 54, 53, 52, 38,
+ 35, 1, 51, 17, 51, 32, 22, 21, 20, 6, 33, 35, 17, 35, 1,147,234,158,157,157,158,254, 76,202,254, 1, 4,248,248,254,252,254,
+202, 4, 33,253,243,132,131,131,131, 1,180,254,242,210,218,219,209,254,145, 0, 0, 1, 0,188,255,227, 4,125, 6, 20, 0, 47,
+ 0, 86, 64, 49, 45, 39, 33, 12, 4, 6, 13, 32, 0, 4, 42, 22,139, 23, 26,140, 19, 42,140, 3,155, 19,153, 46, 12, 9, 13, 29,
+ 32, 33, 39, 9, 1, 36, 39, 6, 6, 29, 6, 36, 16, 22, 45, 6, 16, 68, 0, 70, 48, 16,244,236,252,204, 16,198,238,212,238, 16,
+238, 17, 57, 57, 18, 57, 18, 57, 49, 0, 47,228,254,238, 16,254,213,238, 18, 23, 57, 23, 57, 48, 19, 52, 54, 51, 50, 22, 23, 14,
+ 1, 21, 20, 22, 31, 1, 30, 1, 21, 20, 6, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 38, 47, 1, 46, 1, 53, 52, 54, 55,
+ 46, 1, 35, 34, 6, 21, 17, 35,188,210,216,204,210, 2,155,168, 55, 67, 58,151,111,224,196, 69,135, 66, 76,133, 59,108,128, 65,
+120, 67, 92, 91,162,156, 2,121,113,121,114,187, 4,113,213,206,221,216, 14,124,100, 49, 77, 42, 37, 93,164,116,154,178, 25, 24,
+164, 31, 30, 97, 81, 71, 95, 74, 39, 56,133, 79,128,171, 35,107,114,131,139,251,147, 0, 0, 0,255,255, 0,133,255,227, 4, 35,
+ 6,102, 16, 38, 0, 68, 0, 0, 16, 6, 0, 67, 0, 0, 0, 0,255,255, 0,133,255,227, 4, 35, 6,102, 16, 38, 0, 68, 0, 0,
+ 16, 6, 0,118, 0, 0, 0, 0,255,255, 0,133,255,227, 4, 35, 6,102, 16, 38, 0, 68, 0, 0, 16, 6, 2, 95, 0, 0, 0, 0,
+255,255, 0,133,255,227, 4, 35, 6, 55, 16, 38, 0, 68, 0, 0, 16, 6, 2,110, 0, 0, 0, 0,255,255, 0,133,255,227, 4, 35,
+ 6, 16, 16, 38, 0, 68, 0, 0, 16, 6, 0,106, 0, 0, 0, 0,255,255, 0,133,255,227, 4, 35, 7, 6, 16, 38, 0, 68, 0, 0,
+ 16, 6, 2,108, 0, 0, 0, 0, 0, 3, 0, 41,255,227, 4,176, 4,123, 0, 10, 0, 19, 0, 67, 0,143, 64, 73, 61, 55, 15, 48,
+ 12, 18, 3, 54, 11, 37, 8, 0, 30, 67, 11, 1, 31,139, 30,141, 27, 8,140, 34, 55,139, 54,191, 15, 46, 11,182, 20, 1,193, 51,
+ 15,140, 64, 58,190, 40, 34,153, 68, 2, 5, 0, 24, 37, 61, 3, 47, 18, 46, 5, 21, 18, 77, 47, 0,117, 30, 11, 77, 20, 67, 5,
+ 77, 54, 43,115, 68, 16,244,196,236,252,236,196,252,196,236, 50, 18, 57, 17, 18, 23, 57, 17, 18, 57, 49, 0, 16,228, 50,244, 60,
+236, 50,244, 60,236, 50, 16,244,238, 16,254, 60,244,238, 17, 18, 57, 18, 57, 17, 57, 17, 18, 23, 57, 17, 18, 57, 48, 64, 9, 48,
+ 53, 48, 54, 48, 55, 48, 56, 4, 93, 1, 53, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 53, 52, 38, 35, 34, 6, 29, 1, 5, 33, 14,
+ 1, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 39, 14, 1, 35, 34, 38, 53, 52, 54, 59, 1, 53, 52, 38, 35, 34, 6, 7,
+ 53, 62, 1, 51, 50, 22, 23, 62, 1, 51, 50, 22, 17, 2, 31, 49,169,120, 89, 83, 92, 74, 1,237, 77, 87, 87, 76, 1,235,254, 21,
+ 1, 1,101,112, 79,129, 50, 55,132, 71,110,149, 32, 39,133, 97,156,163,200,191,117, 99, 94, 56,132, 62, 77,132, 60, 91,124, 37,
+ 33,132, 89,174,145, 1,186, 72, 90,113, 89, 97,133, 1,143, 52,151,133,136,157, 43,143, 15, 35, 34,161,144, 51, 51,172, 41, 43,
+ 82, 78, 80, 80,172,164,171,179, 88,120,128, 43, 39,168, 35, 33, 63, 64, 61, 66,237,254,206, 0,255,255, 0,195,254,117, 4, 37,
+ 4,123, 16, 38, 2,163,104, 0, 16, 6, 0, 70, 0, 0, 0, 0,255,255, 0,123,255,227, 4, 88, 6,102, 16, 38, 0, 72, 0, 0,
+ 16, 6, 0, 67, 14, 0, 0, 0,255,255, 0,123,255,227, 4, 88, 6,102, 16, 38, 0, 72, 0, 0, 16, 6, 0,118, 14, 0, 0, 0,
+255,255, 0,123,255,227, 4, 88, 6,102, 16, 38, 0, 72, 0, 0, 16, 6, 2, 95, 14, 0, 0, 0,255,255, 0,123,255,227, 4, 88,
+ 6, 16, 16, 38, 0, 72, 0, 0, 17, 6, 0,106, 14, 0, 0, 7, 64, 3, 64, 29, 1, 93, 49, 0,255,255, 0,178, 0, 0, 4, 68,
+ 6,102, 16, 38, 0,243, 0, 0, 16, 6, 0, 67, 0, 0, 0, 0,255,255, 0,178, 0, 0, 4, 68, 6,102, 16, 38, 0,243, 0, 0,
+ 16, 6, 0,118, 0, 0, 0, 0,255,255, 0,178, 0, 0, 4, 68, 6,102, 16, 38, 0,243, 0, 0, 17, 6, 2, 95, 0, 0, 0, 9,
+ 64, 5, 64, 10, 48, 10, 2, 93, 49, 0, 0, 0,255,255, 0,178, 0, 0, 4, 68, 6, 16, 16, 38, 0,243, 0, 0, 17, 6, 0,106,
+ 24, 0, 0, 8,180, 3, 16, 13, 6, 7, 43, 49, 0, 2, 0,137,255,227, 4, 72, 6, 20, 0, 26, 0, 41, 0,139, 64, 79, 18, 23,
+ 19, 18, 1, 0, 13, 14, 15, 16, 4, 17, 23, 0, 1, 0, 22, 23, 23, 24, 23, 21, 23, 20, 21, 24, 24, 23, 66, 26, 25, 24, 21, 20,
+ 19, 6, 22, 15, 30, 18, 0, 22, 30,140, 12, 36,140, 6,153, 12, 22,155, 42, 18, 21, 24, 3, 39, 20, 19, 22, 3, 33, 9, 26, 25,
+ 3, 15, 0, 33, 39, 18, 3, 68, 33, 18, 9, 62, 42, 16,244,236,252,236, 17, 57, 57, 17, 57, 57, 17, 18, 23, 57, 17, 23, 57, 49,
+ 0, 16,236,204,244,236, 16,238, 18, 57, 57, 18, 57, 18, 23, 57, 48, 75, 83, 88, 7, 16, 8,237, 7, 16, 5,237, 7, 16, 5,237,
+ 23, 57, 7, 8,237, 89, 34, 1, 22, 18, 21, 16, 2, 35, 34, 2, 17, 16, 18, 51, 50, 22, 23, 46, 1, 39, 5, 39, 55, 39, 51, 23,
+ 37, 23, 3, 46, 1, 35, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 2,205,197,182,251,229,228,251,251,224, 34, 35, 15, 33, 72,
+ 38,254,233, 30,237,182,219,127, 1, 33, 33,174, 35, 82, 45,146,153,148,136,137,148, 58, 5, 47,212,254,132,200,254,244,254,216,
+ 1, 40, 1, 12, 1, 9, 1, 40, 2, 2, 45, 89, 44, 92, 98, 80,200,145, 94, 98,254, 23, 13, 13,210,199,196,212,212,196,110,203,
+255,255, 0,195, 0, 0, 4, 27, 6, 55, 16, 38, 0, 81, 0, 0, 16, 6, 2,110, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72,
+ 6,102, 16, 38, 0, 82, 0, 0, 16, 6, 0, 67, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72, 6,102, 16, 38, 0, 82, 0, 0,
+ 16, 6, 0,118, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72, 6,102, 16, 38, 0, 82, 0, 0, 17, 6, 2, 95, 0, 0, 0, 16,
+180, 15, 26, 30, 21, 7, 43, 64, 5, 15, 26, 0, 30, 2, 93, 49,255,255, 0,137,255,227, 4, 72, 6, 55, 16, 38, 0, 82, 0, 0,
+ 17, 6, 2,110, 0, 0, 0, 24,180, 15, 46, 32, 21, 7, 43, 64, 13, 48, 32, 63, 46, 32, 32, 47, 46, 16, 32, 31, 46, 6, 93, 49,
+255,255, 0,137,255,227, 4, 72, 6, 16, 16, 38, 0, 82, 0, 0, 17, 6, 0,106, 0, 0, 0, 24,180, 9, 30, 27, 3, 7, 43, 64,
+ 13,127, 30,112, 27, 95, 30, 80, 27, 79, 30, 64, 27, 6, 93, 49, 0, 3, 0, 88, 0,150, 4,121, 4,111, 0, 3, 0, 7, 0, 11,
+ 0, 39, 64, 19, 2,254, 0, 4,254, 6, 8,160, 0, 10, 12, 9, 5, 1,119, 8, 4, 0, 12, 16,212, 60,196,252, 60,196, 49, 0,
+ 16,212,196,252,212,236, 16,238, 48, 1, 51, 21, 35, 17, 51, 21, 35, 5, 33, 21, 33, 1,238,245,245,245,245,254,106, 4, 33,251,
+223, 1,139,245, 3,217,246,162,170, 0, 0, 0, 0, 3, 0, 47,255,160, 4,150, 4,188, 0, 9, 0, 19, 0, 43, 0,115, 64, 62,
+ 43, 44, 38, 31, 29, 26, 19, 10, 1, 0, 4, 13, 41, 38, 32, 20, 13, 4, 42, 38, 30, 26, 4,140, 38, 13,140, 26,190, 38,153, 44,
+ 43, 44, 42, 20, 23, 16, 32, 30, 35, 19, 10, 1, 0, 4, 7, 41, 23, 16, 29, 7, 31, 7, 18, 35, 68, 16, 18, 23, 62, 44, 16,244,
+236,252,236,192, 18, 57, 17, 18, 57, 18, 23, 57, 17, 57, 57, 17, 18, 57, 57, 17, 57, 49, 0, 16,228,244,236, 16,238, 16,192, 16,
+192, 17, 18, 57, 57, 18, 57, 18, 23, 57, 17, 57, 57, 17, 18, 57, 48, 9, 1, 30, 1, 51, 50, 54, 53, 52, 38, 39, 46, 1, 35, 34,
+ 6, 21, 20, 22, 23, 7, 46, 1, 53, 16, 18, 51, 50, 22, 23, 55, 23, 7, 30, 1, 21, 16, 2, 35, 34, 38, 39, 7, 39, 3,109,254,
+ 49, 36,101, 65,141,144, 12, 72, 35, 99, 67,139,149, 14, 14,139, 39, 41,246,233,100,158, 60,147, 93,164, 42, 44,246,234,103,157,
+ 57,160, 92, 3, 12,253,209, 47, 47,219,213, 52,111,175, 48, 46,214,202, 48,116, 71,160, 71,195,113, 1, 30, 1, 46, 55, 56,176,
+ 77,195, 66,193,122,254,225,254,211, 59, 60,186, 76, 0, 0, 0,255,255, 0,195,255,227, 4, 27, 6,102, 16, 38, 0, 88, 0, 0,
+ 16, 6, 0, 67, 0, 0, 0, 0,255,255, 0,195,255,227, 4, 27, 6,102, 16, 38, 0, 88, 0, 0, 16, 6, 0,118, 0, 0, 0, 0,
+255,255, 0,195,255,227, 4, 27, 6,102, 16, 38, 0, 88, 0, 0, 17, 6, 2, 95, 0, 0, 0, 16,180, 11, 22, 26, 1, 7, 43, 64,
+ 5, 15, 22, 0, 26, 2, 93, 49,255,255, 0,195,255,227, 4, 27, 6, 16, 16, 38, 0, 88, 0, 0, 17, 6, 0,106, 0, 0, 0, 24,
+180, 10, 26, 23, 2, 7, 43, 64, 13,127, 26,112, 23, 95, 26, 80, 23, 79, 26, 64, 23, 6, 93, 49,255,255, 0,104,254, 86, 4,129,
+ 6,102, 16, 38, 0, 92, 0, 0, 16, 6, 0,118, 0, 0, 0, 0, 0, 2, 0,190,254, 86, 4, 84, 6, 31, 0, 16, 0, 28, 0, 51,
+ 64, 28, 5, 0, 26, 20,140, 8, 26,140, 14,153, 8,190, 1,195, 3,197, 29, 17, 18, 11, 71, 23, 4, 0, 6, 2, 70, 29, 16,244,
+236, 50, 50,252,236, 49, 0, 16,236,228,228,244,236, 16,238, 17, 57, 57, 48, 37, 17, 35, 17, 51, 17, 62, 1, 51, 50, 18, 17, 16,
+ 2, 35, 34, 38, 1, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1,119,185,185, 46,153,100,203,231,232,202,102,153, 1,240,135,
+133,134,138,138,134,133,135,141,253,201, 7,201,253,178, 83, 87,254,198,254,234,254,239,254,201, 87, 1,245,214,218,219,213,212,
+220,218, 0, 0,255,255, 0,104,254, 86, 4,129, 6, 16, 16, 38, 0, 92, 0, 0, 16, 6, 0,106, 0, 0, 0, 0,255,255, 0, 37,
+ 0, 0, 4,172, 7, 48, 16, 38, 11,189, 0, 0, 17, 6, 0, 36, 0, 0, 0, 20,180, 9, 2, 3, 14, 7, 43, 64, 9, 64, 3, 79,
+ 2, 32, 3, 47, 2, 4, 93, 49,255,255, 0,133,255,227, 4, 35, 5,246, 16, 38, 2,128, 0, 0, 16, 6, 0, 68, 0, 0, 0, 0,
+255,255, 0, 37, 0, 0, 4,172, 7,109, 16, 38, 11,184, 0, 0, 17, 6, 0, 36, 0, 0, 0, 24,180, 19, 8, 0, 24, 7, 43, 64,
+ 13, 95, 8, 80, 0, 79, 8, 64, 0, 47, 8, 32, 0, 6, 93, 49,255,255, 0,133,255,227, 4, 35, 6, 72, 16, 38, 2,130, 0, 0,
+ 16, 6, 0, 68, 0, 0, 0, 0,255,255, 0, 37,254,117, 4,224, 5,213, 16, 39, 2,109, 1,199, 0, 0, 16, 6, 0, 36, 0, 0,
+255,255, 0,133,254,117, 4,114, 4,123, 16, 39, 2,109, 1, 89, 0, 0, 16, 6, 0, 68, 0, 0,255,255, 0,139,255,227, 4, 49,
+ 7,107, 16, 38, 0, 38, 0, 0, 16, 7, 11,177, 0, 90, 1,117,255,255, 0,195,255,227, 4, 37, 6,102, 16, 38, 0, 70, 0, 0,
+ 16, 6, 0,118, 90, 0, 0, 0,255,255, 0,139,255,227, 4, 49, 7,116, 16, 39, 11,180, 0,126, 1,124, 16, 6, 0, 38, 0, 0,
+255,255, 0,195,255,227, 4, 37, 6,102, 16, 38, 2, 95, 90, 0, 16, 6, 0, 70, 0, 0, 0, 0,255,255, 0,139,255,227, 4, 49,
+ 7, 80, 16, 38, 11,185, 75, 0, 16, 6, 0, 38, 0, 0, 0, 0,255,255, 0,195,255,227, 4, 37, 6, 16, 16, 38, 2,131, 75, 0,
+ 16, 6, 0, 70, 0, 0, 0, 0,255,255, 0,139,255,227, 4, 49, 7,109, 16, 38, 0, 38, 0, 0, 16, 7, 11,181, 0, 90, 1,117,
+255,255, 0,195,255,227, 4, 37, 6,102, 16, 38, 0, 70, 0, 0, 16, 6, 2, 96, 90, 0, 0, 0,255,255, 0,137, 0, 0, 4, 82,
+ 7,103, 16, 38, 0, 39, 0, 0, 16, 7, 11,181,255,178, 1,111,255,255, 0,123,255,227, 5, 32, 6, 21, 16, 39, 11,175, 2, 58,
+255,175, 17, 6, 0, 71, 0, 0, 0, 13,185, 0, 0, 0, 64, 56, 64, 3,127, 0, 1, 93, 49, 0,255,255, 0, 8, 0, 0, 4, 78,
+ 5,213, 16, 6, 0,146, 0, 0, 0, 2, 0,123,255,227, 4,209, 6, 20, 0, 24, 0, 36, 0, 72, 64, 9, 13, 0, 34, 28, 7, 3,
+231, 9, 1,184, 1, 12, 64, 28, 34,140, 22, 28,140, 16,153, 22,190, 5,155, 11, 2, 31, 12, 4, 3, 0, 6, 8, 10, 6, 71, 25,
+ 18, 19, 72, 37, 16,244,236,252, 60,196,252, 23, 60,196, 49, 0, 47,236,228,244,236, 16,238,253, 60,238, 50, 17, 18, 57, 57, 48,
+ 1, 17, 33, 53, 33, 53, 51, 21, 51, 21, 35, 17, 35, 53, 14, 1, 35, 34, 2, 17, 16, 18, 51, 50, 22, 1, 20, 22, 51, 50, 54, 53,
+ 52, 38, 35, 34, 6, 3, 90,254,207, 1, 49,184,191,191,184, 46,153,100,203,233,234,202,101,154,254, 15,136,133,133,139,139,133,
+133,136, 3,209, 1, 53,121,149,149,121,250,250,141, 83, 87, 1, 59, 1, 21, 1, 17, 1, 55, 87,254, 11,214,218,220,212,213,219,
+218, 0, 0, 0,255,255, 0,197, 0, 0, 4, 78, 7, 48, 16, 38, 11,189, 18, 0, 16, 6, 0, 40, 0, 0, 0, 0,255,255, 0,123,
+255,227, 4, 88, 5,246, 16, 38, 2,128, 35, 0, 16, 6, 0, 72, 0, 0, 0, 0,255,255, 0,197, 0, 0, 4, 78, 7,109, 16, 38,
+ 11,184, 18, 0, 16, 6, 0, 40, 0, 0, 0, 0,255,255, 0,123,255,227, 4, 88, 6, 72, 16, 38, 2,130, 14, 0, 16, 6, 0, 72,
+ 0, 0, 0, 0,255,255, 0,197, 0, 0, 4, 78, 7, 80, 16, 38, 11,185, 18, 0, 16, 6, 0, 40, 0, 0, 0, 0,255,255, 0,123,
+255,227, 4, 88, 6, 16, 16, 38, 2,131, 14, 0, 16, 6, 0, 72, 0, 0, 0, 0,255,255, 0,197,254,117, 4, 78, 5,213, 16, 39,
+ 2,109, 1, 49, 0, 0, 16, 6, 0, 40, 0, 0,255,255, 0,123,254,117, 4, 88, 4,123, 16, 39, 2,109, 0,246, 0, 0, 16, 6,
+ 0, 72, 0, 0,255,255, 0,197, 0, 0, 4, 78, 7,103, 16, 38, 0, 40, 0, 0, 16, 7, 11,181, 0, 36, 1,111,255,255, 0,123,
+255,227, 4, 88, 6, 97, 16, 38, 0, 72, 0, 0, 16, 6, 2, 96, 35,251, 0, 0,255,255, 0,102,255,227, 4, 80, 7,109, 16, 39,
+ 11,180, 0, 0, 1,117, 16, 6, 0, 42, 0, 0,255,255, 0,123,254, 72, 4, 18, 6,102, 16, 38, 2, 95, 0, 0, 16, 6, 0, 74,
+ 0, 0, 0, 0,255,255, 0,102,255,227, 4, 80, 7,109, 16, 38, 11,184, 50, 0, 16, 6, 0, 42, 0, 0, 0, 0,255,255, 0,123,
+254, 72, 4, 18, 6, 72, 16, 38, 2,130, 0, 0, 16, 6, 0, 74, 0, 0, 0, 0,255,255, 0,102,255,227, 4, 80, 7, 80, 16, 38,
+ 11,185, 50, 0, 16, 6, 0, 42, 0, 0, 0, 0,255,255, 0,123,254, 72, 4, 18, 6, 16, 16, 38, 2,131, 0, 0, 16, 6, 0, 74,
+ 0, 0, 0, 0,255,255, 0,102,253,195, 4, 80, 5,240, 16, 39, 2,162, 0,128,255,225, 16, 6, 0, 42, 0, 0,255,255, 0,123,
+254, 72, 4, 18, 6, 78, 16, 39, 2,142, 0, 17, 1, 46, 16, 6, 0, 74, 0, 0,255,255, 0,137, 0, 0, 4, 72, 7,109, 16, 39,
+ 11,180, 0, 0, 1,117, 17, 6, 0, 43, 0, 0, 0, 20,180, 12, 2, 6, 7, 7, 43, 64, 9, 32, 6, 47, 2, 0, 6, 15, 2, 4,
+ 93, 49, 0, 0,255,255, 0,195, 0, 0, 4, 27, 7,109, 16, 39, 11,180, 0, 0, 1,117, 17, 6, 0, 75, 0, 0, 0, 24, 0, 75,
+176, 18, 81, 88,185, 0, 0, 0, 64, 56, 89, 64, 7,112, 0, 96, 0, 79, 0, 3, 93, 48, 0, 0, 0, 2, 0, 3, 0, 0, 4,206,
+ 5,213, 0, 19, 0, 23, 0, 63, 64, 33, 6, 2, 18,151, 9, 20, 17, 12,151, 21,177, 4, 0,136, 14, 10, 7, 12, 23, 4, 30, 9,
+ 5, 49, 18, 13, 20, 1, 30, 16, 0, 48, 24, 16,252, 60,236, 50, 50,204,252, 60,236, 50, 50,204, 49, 0, 47, 60,228, 50,252,236,
+220, 60, 60,236, 50, 50, 48, 19, 51, 21, 33, 53, 51, 21, 51, 21, 35, 17, 35, 17, 33, 17, 35, 17, 35, 53, 51, 23, 21, 33, 53,137,
+202, 2, 42,202,135,135,202,253,214,202,134,134,202, 2, 42, 5,213,224,224,224,164,251,175, 2,199,253, 57, 4, 81,164,164,224,
+224, 0, 0, 0, 0, 1, 0, 70, 0, 0, 4, 27, 6, 20, 0, 27, 0, 63, 64, 34, 9, 22, 3, 0, 3, 1, 18, 14,182, 21, 13, 6,
+140, 25,190, 16,155, 10, 1, 2, 6, 0, 74, 16, 19, 17, 21, 9, 6, 14, 16, 11, 70, 28, 16,244, 60,204,252, 50, 50,204, 16,252,
+236, 49, 0, 47, 60,236,244,236,220, 60,236, 50, 17, 23, 57, 57, 48, 1, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 35, 53,
+ 51, 53, 51, 21, 33, 21, 33, 17, 62, 1, 51, 50, 22, 4, 27,185,106,113,129,139,184,125,125,184, 1, 97,254,159, 49,168,115,171,
+169, 2,182,253, 74, 2,182,151,142,183,171,253,135, 4,246,164,122,122,164,254,194, 96, 99,225,255,255, 0,201, 0, 0, 4, 6,
+ 7, 94, 16, 39, 11,178, 0, 0, 1,117, 17, 6, 0, 44, 0, 0, 0, 24,180, 31, 24, 9, 30, 7, 43, 64, 13, 79, 24, 64, 9, 63,
+ 24, 48, 9, 47, 24, 32, 9, 6, 93, 49, 0, 0,255,255, 0,178, 0, 0, 4, 68, 6, 55, 16, 38, 2,110, 0, 0, 16, 6, 0,243,
+ 0, 0, 0, 0,255,255, 0,201, 0, 0, 4, 6, 7, 48, 16, 38, 11,189, 0, 0, 17, 6, 0, 44, 0, 0, 0, 16,180, 5, 2, 3,
+ 4, 7, 43, 64, 5, 79, 2, 64, 3, 2, 93, 49,255,255, 0,178, 0, 0, 4, 68, 5,246, 16, 38, 2,128, 0, 0, 16, 6, 0,243,
+ 0, 0, 0, 0,255,255, 0,201, 0, 0, 4, 6, 7,109, 16, 38, 11,184, 0, 0, 17, 6, 0, 44, 0, 0, 0, 16,180, 15, 8, 0,
+ 14, 7, 43, 64, 5, 79, 8, 64, 0, 2, 93, 49,255,255, 0,178, 0, 0, 4, 68, 6, 72, 16, 38, 2,130, 0, 0, 16, 6, 0,243,
+ 0, 0, 0, 0,255,255, 0,201,254,117, 4, 6, 5,213, 16, 38, 0, 44, 0, 0, 16, 6, 2,109, 70, 0, 0, 0,255,255, 0,178,
+254,117, 4, 68, 6, 20, 16, 38, 0, 76, 0, 0, 16, 6, 2,109, 80, 0, 0, 0,255,255, 0,201, 0, 0, 4, 6, 7, 80, 16, 38,
+ 11,185, 0, 0, 16, 6, 0, 44, 0, 0, 0, 0, 0, 1, 0,178, 0, 0, 4, 68, 4, 96, 0, 9, 0, 34, 64, 18, 8,182, 0,194,
+ 6, 2,182, 4, 3, 76, 1, 6, 5, 76, 0, 75, 7, 10, 16,212,228,236,252,236, 49, 0, 47,236, 50,244,236, 48, 1, 33, 17, 33,
+ 21, 33, 53, 33, 17, 33, 1, 0, 1,215, 1,109,252,110, 1,109,254,225, 4, 96,252, 47,143,143, 3, 66, 0, 0, 0, 2,255,255,
+255,230, 4,204, 5,216, 0, 20, 0, 32, 0, 61, 64, 31, 1, 0,178, 4,151, 17,153, 33, 10, 24, 32,151, 11, 21,136, 25, 29,151,
+ 27, 1, 11, 9, 12, 34, 26, 22, 24, 29, 21, 31, 33, 16,212,204, 50,220,204, 50, 16,212,204,196,196, 49, 0, 47,236, 50,244, 60,
+236, 50, 50, 16,244,236,244,204, 48, 37, 53, 30, 1, 51, 50, 55, 54, 53, 17, 33, 53, 33, 17, 16, 7, 6, 35, 34, 39, 38, 1, 33,
+ 21, 35, 17, 51, 21, 33, 53, 51, 17, 35, 2,140, 61,132, 71, 97, 39, 38,254,253, 1,141, 72, 72,168, 65, 65, 64,253, 45, 2, 93,
+228,228,253,163,228,228, 64,236, 81, 81, 74, 75,203, 3, 68,170,252, 18,254,230,117,117, 22, 22, 5,195,170,251,127,170,170, 4,
+129, 0, 0, 0, 0, 4,255,251,254, 75, 4,138, 6, 20, 0, 13, 0, 17, 0, 27, 0, 31, 0, 73, 64, 38, 10,140, 9,195, 32, 2,
+ 27,182, 18, 17, 31,196, 14, 28,155, 3, 18,194, 20, 24,182, 23, 10, 3, 14, 1, 6, 15, 4, 33, 21, 29, 19, 24, 18, 28, 26, 32,
+ 16,212, 60,196,204,220, 60,204, 16,220, 60,252, 60,196,196, 49, 0, 47,236, 50,228, 50,252, 60,236, 50, 16,238, 50, 16,244,236,
+ 48, 5, 17, 33, 53, 33, 17, 20, 6, 43, 1, 53, 51, 50, 54, 17, 51, 21, 35, 5, 33, 17, 33, 21, 33, 53, 33, 17, 35, 19, 51, 21,
+ 35, 3,210,254,195, 1,245,179,165,254,234, 90, 90,184,184,252,105, 1,130, 1, 44,253, 18, 1, 43,235,235,151,151, 31, 3,229,
+143,251,140,195,211,156,125, 6,165,233,192,252, 47,143,143, 3, 66, 2, 67,233,255,255, 0,109,255,227, 3,202, 7,109, 16, 39,
+ 11,180, 0, 48, 1,117, 16, 6, 0, 45, 0, 0,255,255, 0,186,254, 86, 3,168, 6,102, 16, 38, 2, 95, 0, 0, 16, 6, 1,226,
+ 0, 0, 0, 0,255,255, 0,137,253,224, 4,201, 5,213, 16, 38, 2,162,106,254, 16, 6, 0, 46, 0, 0, 0, 0,255,255, 0,236,
+253,224, 4,178, 6, 20, 16, 39, 2,162, 0,144,255,254, 16, 6, 0, 78, 0, 0, 0, 1, 0,236, 0, 0, 4,178, 4, 96, 0, 11,
+ 0,196, 64, 57, 8, 23, 9, 8, 5, 6, 5, 7, 23, 6, 6, 5, 9, 23, 3, 2, 8, 23, 7, 8, 3, 2, 5, 23, 6, 5, 2, 3,
+ 2, 4, 23, 3, 3, 2, 66, 8, 5, 2, 3, 3, 0,194, 10, 6, 8, 5, 4, 3, 6, 9, 1, 6, 6, 68, 0, 69, 12, 16,244,236,
+236, 50, 17, 23, 57, 49, 0, 47, 60,236, 50, 23, 57, 48, 75, 83, 88, 7, 16, 5,237, 7, 16, 8,237, 7, 8,237, 7, 4,237, 7,
+ 16, 5,237, 7, 16, 8,237, 89, 34,178, 8, 7, 1, 1, 93, 64, 82, 6, 2, 8, 8, 22, 2, 24, 5, 24, 8, 53, 2, 52, 5, 54,
+ 8, 70, 2,102, 2,117, 2,118, 5, 12, 9, 3, 8, 8, 25, 3, 23, 4, 24, 5, 25, 6, 26, 7, 24, 8, 40, 3, 39, 5, 40, 7,
+ 59, 3, 59, 4, 55, 5, 57, 7, 55, 8, 74, 3, 73, 7, 89, 6, 89, 7,107, 3,105, 4,105, 6,105, 7,121, 3,120, 5,121, 6,
+121, 7, 28, 93, 0, 93, 19, 51, 17, 1, 51, 9, 1, 35, 1, 7, 17, 35,236,190, 1,227,224,254, 71, 1,254,225,254, 98,137,190,
+ 4, 96,254, 47, 1,209,254, 90,253, 70, 2, 66,129,254, 63, 0,255,255, 0,200, 0, 0, 4,115, 7,108, 16, 39, 11,177,254,237,
+ 1,118, 17, 6, 0, 47, 0, 0, 0, 7, 64, 3, 32, 0, 1, 93, 49, 0, 0, 0,255,255, 0,160, 0, 0, 4, 10, 7,108, 16, 39,
+ 11,177,255,161, 1,118, 17, 6, 0, 79, 0, 0, 0, 24, 0, 75,176, 14, 81, 88,185, 0, 0, 0, 64, 56, 89, 64, 7,159, 0,143,
+ 0, 79, 0, 3, 93, 48, 0, 0,255,255, 0,215,253,224, 4,115, 5,213, 16, 38, 2,162,102,254, 16, 6, 0, 47, 0, 0, 0, 0,
+255,255, 0,160,253,224, 4, 10, 6, 31, 16, 38, 2,162,251,254, 16, 6, 0, 79, 0, 0, 0, 0,255,255, 0,215, 0, 0, 4,115,
+ 5,213, 16, 39, 11,175, 0,174,255,109, 16, 6, 0, 47, 0, 0,255,255, 0,160, 0, 0, 4,134, 6, 31, 16, 39, 11,175, 1,160,
+255,185, 16, 6, 0, 79, 0, 0,255,255, 0,215, 0, 0, 4,115, 5,213, 16, 39, 0,121, 1, 96, 0,134, 16, 6, 0, 47, 0, 0,
+255,255, 0,160, 0, 0, 4,188, 6, 31, 16, 39, 0,121, 1,215, 0,144, 16, 6, 0, 79, 0, 0, 0, 1,255,246, 0, 0, 4,115,
+ 5,213, 0, 13, 0, 55, 64, 30, 12, 11, 10, 4, 3, 2, 6, 0, 6,151, 0,136, 8, 3, 4, 7, 1, 11, 14, 0, 12, 5, 1, 30,
+ 7, 49, 9, 0, 52, 14, 16,252, 60,236,236, 50, 46, 17, 18, 57, 17, 18, 57, 57, 49, 0, 47,228,236, 17, 23, 57, 48, 19, 51, 17,
+ 37, 23, 1, 17, 33, 21, 33, 17, 7, 39, 55,215,203, 1, 59, 78,254,119, 2,209,252,100,145, 80,225, 5,213,253,152,219,111,254,
+238,253,227,170, 2, 59,106,110,158, 0, 0, 0, 0, 1, 0, 76, 0, 0, 4, 10, 6, 31, 0, 21, 0, 62, 64, 33, 20, 19, 18, 12,
+ 11, 10, 6, 9, 0, 3, 14,182, 16,197, 3,182, 5, 11, 12, 22, 15, 19, 3, 6, 20, 4, 17, 0, 6, 15, 13, 9, 22, 16,212, 60,
+204,252, 60,204, 50, 57, 57, 57, 17, 18, 57, 57, 49, 0, 47,236,252,236, 17, 57, 57, 23, 57, 48, 1, 20, 22, 59, 1, 21, 35, 34,
+ 38, 53, 17, 5, 39, 1, 17, 33, 53, 33, 17, 37, 23, 1, 2,127, 91, 89,215,233,165,181,254,213, 80, 1,123,254,217, 1,223, 1,
+ 59, 80,254,117, 1,150,124,126,156,212,194, 1, 36,209,111, 1, 8, 2, 47,144,253,190,219,110,254,237, 0, 0,255,255, 0,139,
+ 0, 0, 4, 70, 7,107, 16, 39, 11,177, 0, 33, 1,117, 16, 6, 0, 49, 0, 0,255,255, 0,195, 0, 0, 4, 27, 6,109, 16, 38,
+ 0,118, 20, 7, 16, 6, 0, 81, 0, 0, 0, 0,255,255, 0,139,253,224, 4, 70, 5,213, 16, 38, 2,162, 42,254, 16, 6, 0, 49,
+ 0, 0, 0, 0,255,255, 0,195,253,224, 4, 27, 4,123, 16, 38, 2,162, 48,254, 16, 6, 0, 81, 0, 0, 0, 0,255,255, 0,139,
+ 0, 0, 4, 70, 7,109, 16, 38, 0, 49, 0, 0, 16, 7, 11,181, 0, 42, 1,117,255,255, 0,195, 0, 0, 4, 27, 6,102, 16, 38,
+ 0, 81, 0, 0, 16, 6, 2, 96,244, 0, 0, 0,255,255, 0, 24, 0, 0, 4,150, 6, 20, 16, 38, 0, 81,123, 0, 16, 7, 2, 89,
+254, 73, 0, 0, 0, 1, 0,147,254, 86, 4, 61, 5,242, 0, 29, 0, 50, 64, 28, 24, 19, 13, 0, 4, 21, 16,151, 27,150, 22,136,
+ 21, 7,151, 6, 21, 7, 13, 30, 0, 49, 19, 23, 30, 22, 48, 30, 16,244,236, 50,252,236,196, 49, 0, 47,212,236, 16,228,244,236,
+ 17, 23, 57, 48, 1, 17, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 53, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51,
+ 50, 18, 4, 61, 89, 90,165,205,167, 90, 45, 44,116,124,141,152,202,202, 54,184,126,187,185, 3,231,252, 5,195,105,106,156, 62,
+ 62,146, 3,241,180,169,218,203,252, 87, 5,213,198,111,116,254,251, 0, 0, 0, 0, 1, 0,195,254, 86, 4, 27, 4,123, 0, 32,
+ 0, 50, 64, 28, 25, 20, 13, 0, 4, 22, 16,140, 29,190, 23,194, 22, 6,182, 7, 22, 7, 13, 6, 0, 74, 20, 24, 6, 23, 70, 33,
+ 16,244,236, 50,252,236,196, 49, 0, 47,212,236, 16,228,244,236, 17, 23, 57, 48, 1, 17, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54,
+ 53, 17, 52, 38, 35, 34, 7, 6, 21, 17, 35, 17, 51, 21, 54, 55, 54, 51, 50, 23, 22, 4, 27, 89, 90,165,205,185, 90, 45, 44,106,
+113,129, 70, 69,184,184, 49, 84, 84,115,171, 84, 85, 2,182,253, 54,195,105,106,156, 62, 62,126, 2,202,151,142, 91, 92,171,253,
+135, 4, 96,168, 96, 50, 49,113,112, 0, 0, 0,255,255, 0,117,255,227, 4, 92, 7, 48, 16, 38, 11,189, 0, 0, 17, 6, 0, 50,
+ 0, 0, 0, 20,180, 16, 2, 3, 22, 7, 43, 64, 9, 79, 2, 64, 3, 47, 2, 32, 3, 4, 93, 49,255,255, 0,137,255,227, 4, 72,
+ 5,246, 16, 38, 2,128, 0, 0, 17, 6, 0, 82, 0, 0, 0, 8,180, 19, 2, 3, 25, 7, 43, 49,255,255, 0,117,255,227, 4, 92,
+ 7,109, 16, 38, 11,184, 0, 0, 17, 6, 0, 50, 0, 0, 0, 16,180, 26, 8, 0, 32, 7, 43, 64, 5, 47, 8, 32, 0, 2, 93, 49,
+255,255, 0,137,255,227, 4, 72, 6, 72, 16, 38, 2,130, 0, 0, 17, 6, 0, 82, 0, 0, 0, 16,180, 29, 8, 0, 35, 7, 43, 64,
+ 5, 15, 8, 0, 0, 2, 93, 49,255,255, 0,117,255,227, 4, 92, 7,107, 16, 38, 11,186, 0, 0, 16, 6, 0, 50, 0, 0, 0, 0,
+255,255, 0,137,255,227, 4, 72, 6,102, 16, 38, 2,135, 0, 0, 16, 6, 0, 82, 0, 0, 0, 0, 0, 2, 0, 72, 0, 0, 4,193,
+ 5,213, 0, 16, 0, 25, 0, 59, 64, 31, 14,151, 12, 17, 10,151, 8,136, 23, 0,151, 12,177, 1, 23, 17, 8, 2, 20, 15, 11, 30,
+ 24, 9, 13, 0, 45, 20, 30, 5, 26, 16,220,236,252,196,196,212,236, 50, 18, 57, 57, 57, 57, 49, 0, 47,236,236, 50,244,236, 50,
+ 16,238, 48, 37, 21, 33, 32, 2, 17, 16, 18, 41, 1, 21, 33, 17, 33, 21, 33, 17, 1, 34, 6, 17, 16, 22, 59, 1, 17, 4,193,253,
+163,254,217,245,244, 1, 40, 2, 82,254,154, 1, 72,254,184,254,254,177,139,139,177, 61,170,170, 1, 77, 1,156, 1,161, 1, 75,
+170,254, 70,170,253,227, 4,129,230,254,164,254,166,229, 4,129, 0, 3, 0, 14,255,227, 4,186, 4,123, 0, 10, 0, 22, 0, 56,
+ 0,105, 64, 57, 50, 47, 9, 6, 0, 25, 31, 23, 38, 32, 11, 56, 23, 0, 32,139, 31,141, 11, 0,182, 23, 28, 11,140, 35, 23,193,
+ 17, 6,140, 53, 47,190, 41, 35,153, 57, 0, 3, 50, 38, 24, 9, 77, 14,117, 31, 3, 77, 23, 67, 20, 77, 44,115, 57, 16,244,236,
+252,236,196,252,236, 50, 57, 57, 17, 57, 49, 0, 16,228, 50,244, 60,236, 50,228, 16,238, 50, 16,238, 16,244,238, 17, 18, 57, 17,
+ 18, 57, 17, 18, 57, 17, 18, 57, 17, 57, 48, 1, 52, 54, 53, 52, 38, 35, 34, 6, 29, 1, 1, 50, 54, 53, 16, 38, 35, 34, 6, 17,
+ 16, 22, 1, 33, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 39, 14, 1, 35, 34, 2, 17, 16, 18, 51, 50, 22, 23, 62, 1,
+ 51, 50, 22, 17, 4, 23, 2, 80, 86, 87, 77,254,166,102, 82, 80,104,103, 80, 80, 3,172,254, 21, 99,112, 80,131, 47, 59,125, 74,
+ 98,147, 48, 52,128, 84,189,170,170,189, 89,128, 47, 37,130, 87,175,144, 2,145, 11, 38, 9,145,135,137,158, 43,253,234,168,239,
+ 1, 35,174,167,254,243,254,243,167, 1,135, 84,163,144, 53, 51,172, 43, 41, 67, 66, 68, 65, 1, 20, 1, 56, 1, 56, 1, 20, 62,
+ 65, 62, 65,237,254,206, 0, 0,255,255, 0,143, 0, 0, 4,209, 7,107, 16, 39, 11,177,255,181, 1,117, 16, 6, 0, 53, 0, 0,
+255,255, 1,106, 0, 0, 4,136, 6,109, 16, 39, 0,118, 0,206, 0, 7, 16, 6, 0, 85, 0, 0,255,255, 0,143,253,224, 4,209,
+ 5,213, 16, 38, 2,162,114,254, 16, 6, 0, 53, 0, 0, 0, 0,255,255, 1, 32,253,224, 4,131, 4,123, 16, 38, 2,162,136,254,
+ 16, 6, 0, 85, 0, 0, 0, 0,255,255, 0,143, 0, 0, 4,209, 7,103, 16, 38, 0, 53, 0, 0, 16, 7, 11,181,255,196, 1,111,
+255,255, 1,106, 0, 0, 4,131, 6,102, 16, 38, 0, 85, 0, 0, 16, 6, 2, 96, 90, 0, 0, 0,255,255, 0,139,255,227, 4, 74,
+ 7,107, 16, 39, 11,177, 0, 25, 1,117, 16, 6, 0, 54, 0, 0,255,255, 0,213,255,227, 4, 6, 6,109, 16, 38, 0,118, 26, 7,
+ 16, 6, 0, 86, 0, 0, 0, 0,255,255, 0,139,255,227, 4, 74, 7,109, 16, 39, 11,180, 0, 0, 1,117, 16, 6, 0, 54, 0, 0,
+255,255, 0,213,255,227, 4, 6, 6,102, 16, 38, 2, 95, 0, 0, 16, 6, 0, 86, 0, 0, 0, 0,255,255, 0,139,254,117, 4, 74,
+ 5,240, 16, 38, 2,163, 0, 0, 16, 6, 0, 54, 0, 0, 0, 0,255,255, 0,213,254,117, 4, 6, 4,123, 16, 38, 2,163, 0, 0,
+ 16, 6, 0, 86, 0, 0, 0, 0,255,255, 0,139,255,227, 4, 74, 7,109, 16, 38, 0, 54, 0, 0, 16, 7, 11,181, 0, 0, 1,117,
+255,255, 0,213,255,227, 4, 6, 6,102, 16, 38, 0, 86, 0, 0, 16, 6, 2, 96, 0, 0, 0, 0,255,255, 0, 47,254,117, 4,162,
+ 5,213, 16, 38, 2,163, 0, 0, 16, 6, 0, 55, 0, 0, 0, 0,255,255, 0,131,254,117, 4, 8, 5,158, 16, 38, 2,163,121, 0,
+ 16, 6, 0, 87, 0, 0, 0, 0,255,255, 0, 47, 0, 0, 4,162, 7,109, 16, 38, 0, 55, 0, 0, 17, 7, 11,181, 0, 6, 1,117,
+ 0, 8,180, 1, 13, 9, 0, 7, 43, 49, 0, 0,255,255, 0,131, 0, 0, 4, 8, 6,126, 16, 38, 0, 87, 0, 0, 16, 7, 11,175,
+ 1, 20, 0, 24, 0, 1, 0, 47, 0, 0, 4,162, 5,213, 0, 15, 0, 45, 64, 23, 4, 12,151, 7, 11, 3, 15,151, 0,136, 8, 1,
+ 58, 5, 7, 3, 30, 12, 0, 58, 10, 14, 16, 16,212, 60,236,204,252, 60,204,236, 49, 0, 47,244,236, 50,212, 60,236, 50, 48, 19,
+ 33, 21, 33, 17, 33, 21, 33, 17, 35, 17, 33, 53, 33, 17, 33, 47, 4,115,254, 45, 1, 9,254,247,203,254,247, 1, 9,254, 43, 5,
+213,170,253,192,170,253,191, 2, 65,170, 2, 64, 0, 1, 0,131, 0, 0, 4, 8, 5,158, 0, 27, 0, 66, 64, 33, 18, 9, 12, 5,
+ 21,182, 8, 20, 4, 24,182, 27, 1, 25,194, 12,182, 15, 12, 15, 13, 2, 6, 8, 4, 0, 6, 21, 25, 19, 23, 27, 28, 16,212, 60,
+ 60,196,196,252, 60, 60,196,196, 50, 57, 57, 49, 0, 47,236,244, 60,196,236, 50,212, 60,236, 50, 17, 57, 57, 48, 1, 17, 33, 21,
+ 33, 21, 51, 21, 35, 21, 20, 22, 59, 1, 21, 35, 34, 38, 61, 1, 35, 53, 51, 53, 33, 53, 33, 17, 2,102, 1,162,254, 94,229,229,
+ 94,117,207,225,207,170,229,229,254,213, 1, 43, 5,158,254,194,143,233,142,233,124, 98,147,166,203,233,142,233,143, 1, 62, 0,
+255,255, 0,147,255,227, 4, 61, 7, 94, 16, 39, 11,178, 0, 0, 1,117, 17, 6, 0, 56, 0, 0, 0, 16,180, 47, 24, 9, 31, 7,
+ 43, 64, 5, 79, 24, 64, 9, 2, 93, 49, 0, 0,255,255, 0,195,255,227, 4, 27, 6, 55, 16, 38, 2,110, 0, 0, 17, 6, 0, 88,
+ 0, 0, 0, 16,180, 39, 22, 8, 29, 7, 43, 64, 5, 47, 22, 32, 8, 2, 93, 49,255,255, 0,147,255,227, 4, 61, 7, 48, 16, 38,
+ 11,189, 0, 0, 17, 6, 0, 56, 0, 0, 0, 20,180, 21, 2, 3, 5, 7, 43, 64, 9, 79, 2, 64, 3, 47, 2, 32, 3, 4, 93, 49,
+255,255, 0,195,255,227, 4, 27, 5,246, 16, 38, 2,128, 0, 0, 17, 6, 0, 88, 0, 0, 0, 8,180, 15, 1, 0, 5, 7, 43, 49,
+255,255, 0,147,255,227, 4, 61, 7,109, 16, 38, 11,184, 0, 0, 17, 6, 0, 56, 0, 0, 0, 16,180, 31, 8, 0, 15, 7, 43, 64,
+ 5, 47, 8, 32, 0, 2, 93, 49,255,255, 0,195,255,227, 4, 27, 6, 72, 16, 38, 2,130, 0, 0, 17, 6, 0, 88, 0, 0, 0, 16,
+180, 25, 8, 0, 15, 7, 43, 64, 5, 15, 8, 0, 0, 2, 93, 49,255,255, 0,147,255,227, 4, 61, 8, 85, 16, 38, 0, 56, 0, 0,
+ 16, 7, 2,108, 0, 10, 1, 79,255,255, 0,195,255,227, 4, 27, 6,217, 16, 38, 0, 88, 0, 0, 16, 6, 2,108, 15,211, 0, 0,
+255,255, 0,147,255,227, 4, 61, 7,107, 16, 38, 11,186, 0, 0, 16, 6, 0, 56, 0, 0, 0, 0,255,255, 0,195,255,227, 4, 27,
+ 6,102, 16, 38, 2,135, 0, 0, 16, 6, 0, 88, 0, 0, 0, 0,255,255, 0,147,254,101, 4, 61, 5,213, 16, 38, 0, 56, 0, 0,
+ 16, 6, 2,109, 28,240, 0, 0,255,255, 0,195,254,117, 4,176, 4, 94, 16, 38, 0, 88, 0, 0, 16, 7, 2,109, 1,151, 0, 0,
+255,255, 0, 0, 0, 0, 4,209, 7,116, 16, 39, 11,180, 0, 0, 1,124, 17, 6, 0, 58, 0, 0, 0, 8,180, 14, 2, 6, 7, 7,
+ 43, 49, 0, 0,255,255, 0, 0, 0, 0, 4,209, 6,109, 16, 38, 2, 95, 0, 7, 17, 6, 0, 90, 0, 0, 0, 8,180, 14, 2, 6,
+ 7, 7, 43, 49,255,255, 0, 37, 0, 0, 4,172, 7,116, 16, 39, 11,180, 0, 0, 1,124, 17, 6, 0, 60, 0, 0, 0, 8,180, 11,
+ 2, 6, 7, 7, 43, 49, 0, 0,255,255, 0,104,254, 86, 4,129, 6,109, 16, 38, 2, 95, 12, 7, 16, 6, 0, 92, 0, 0, 0, 0,
+255,255, 0, 37, 0, 0, 4,172, 7, 78, 16, 38, 0, 60, 0, 0, 17, 7, 11,176, 0, 0, 1,117, 0, 8,180, 4, 15, 12, 0, 7,
+ 43, 49, 0, 0,255,255, 0,156, 0, 0, 4,145, 7,107, 16, 39, 11,177, 0, 27, 1,117, 16, 6, 0, 61, 0, 0,255,255, 0,203,
+ 0, 0, 4, 16, 6,109, 16, 38, 0,118, 86, 7, 16, 6, 0, 93, 0, 0, 0, 0,255,255, 0,156, 0, 0, 4,145, 7, 80, 16, 38,
+ 11,185, 50, 0, 16, 6, 0, 61, 0, 0, 0, 0,255,255, 0,203, 0, 0, 4, 16, 6, 16, 16, 38, 2,131, 0, 0, 16, 6, 0, 93,
+ 0, 0, 0, 0,255,255, 0,156, 0, 0, 4,145, 7,109, 16, 38, 0, 61, 0, 0, 16, 7, 11,181, 0, 0, 1,117,255,255, 0,203,
+ 0, 0, 4, 16, 6,102, 16, 38, 0, 93, 0, 0, 16, 6, 2, 96, 0, 0, 0, 0, 0, 1, 0,195, 0, 0, 4, 39, 6, 20, 0, 15,
+ 0, 44, 64, 22, 0, 7, 12, 4,182, 5, 12,140, 11,155, 5,194, 2, 13, 10, 11, 0, 6, 5, 3, 7, 16, 16,212, 60,196,252,196,
+ 57, 57, 49, 0, 47,228,252,236, 16,238, 18, 57, 57, 48, 1, 17, 35, 17, 33, 53, 33, 53, 52, 54, 59, 1, 21, 35, 34, 6, 2,166,
+184,254,213, 1, 43,169,179,221,209, 99, 77, 4,195,251, 61, 3,209,143, 78,184,174,153, 81, 0, 0, 2, 0, 70,255,227, 4, 88,
+ 6, 20, 0, 26, 0, 37, 0, 0, 1, 62, 1, 51, 50, 18, 17, 16, 2, 35, 34, 38, 39, 21, 35, 17, 35, 53, 51, 53, 51, 21, 51, 33,
+ 21, 33, 35, 0, 16, 38, 35, 34, 6, 21, 20, 22, 51, 50, 1,121, 44,155,102,202,232,233,203,100,153, 46,184,123,123,184, 2, 1,
+ 97,254,159, 2, 2, 29,136,133,134,138,138,134,133, 3,209, 82, 88,254,201,254,239,254,235,254,197, 87, 83,141, 4,246,164,122,
+122,164,252, 99, 1,172,218,219,213,212,220, 0, 0, 3, 0, 20, 0, 0, 4,165, 5,213, 0, 8, 0, 17, 0, 41, 0, 63, 64, 36,
+ 25, 0,151, 10, 9,151, 18,136, 1,151, 10,177, 31, 17, 11, 25, 31, 19, 8, 2, 7, 0, 14, 30, 22, 5, 50, 28, 9, 0, 30, 18,
+ 33, 36, 39, 43, 16,212,220,212, 57,236, 50,220,236,212,236, 17, 23, 57, 49, 0, 47,236,236,244,236, 16,238, 57, 48, 1, 17, 51,
+ 50, 54, 53, 52, 38, 35, 3, 17, 51, 50, 54, 53, 52, 38, 35, 37, 33, 50, 22, 21, 20, 6, 7, 30, 1, 21, 20, 4, 41, 1, 17, 34,
+ 6, 29, 1, 35, 53, 52, 54, 2, 28,120,176,150,158,168,120,116,146,131,129,148,254,194, 1, 66,229,248,131,131,147,167,254,246,
+254,249,254,190, 62,100,156,169, 2,201,253,221,123,141,146,137, 2,102,254, 62,112,125,113,100,166,198,181,137,158, 20, 22,207,
+160,203,207, 5, 47, 87,112, 49, 70,159,185, 0,255,255, 0,166, 0, 0, 4,113, 5,213, 16, 6, 3, 62, 0, 0, 0, 2, 0,193,
+255,227, 4, 88, 6, 20, 0, 18, 0, 29, 0, 0, 1, 62, 1, 51, 50, 18, 17, 16, 2, 35, 34, 38, 39, 21, 35, 17, 33, 21, 33, 0,
+ 16, 38, 35, 34, 6, 21, 20, 22, 51, 50, 1,121, 44,155,102,202,232,233,203,100,153, 46,184, 2,240,253,200, 2, 29,136,133,134,
+138,138,134,133, 3,209, 82, 88,254,201,254,239,254,235,254,197, 87, 83,141, 6, 20,184,251,253, 1,172,218,219,213,212,220, 0,
+ 0, 2, 0, 48, 0, 0, 4,161, 5,213, 0, 10, 0, 24, 0, 0, 1, 17, 51, 50, 55, 54, 53, 52, 39, 38, 35, 39, 51, 4, 23, 22,
+ 21, 20, 7, 6, 41, 1, 17, 39, 1, 1,161,239,176, 75, 75, 79, 79,168,239,235, 1,123,101, 53,133,133,254,249,254, 70,166, 1,
+113, 2,201,253,221, 62, 61,141,146, 68, 69,164, 15,191,100,161,203,103,104, 3,180,228, 1, 61, 0, 2, 0, 60,255,227, 4,148,
+ 6, 20, 0, 12, 0, 33, 0, 0, 0, 16, 38, 35, 34, 7, 6, 21, 20, 23, 22, 51, 50, 1, 62, 1, 51, 50, 23, 22, 17, 16, 7, 6,
+ 35, 34, 39, 38, 39, 21, 35, 17, 39, 1, 3,210,136,132,134, 70, 68, 68, 70,134,132,254,108, 44,154,102,202,116,116,116,116,204,
+100, 76, 76, 46,184,194, 1,122, 1, 89, 1,172,218,109,110,213,212,110,110, 3, 82, 82, 88,155,156,254,239,254,235,158,157, 43,
+ 44, 83,141, 3,180,228, 1,124, 0, 1, 0,139,255,227, 4, 49, 5,240, 0, 25, 0, 47, 64, 7, 19, 50, 6, 49, 0, 12, 26, 16,
+220, 60,244,236, 49, 0, 64, 18, 13,179, 12,178, 16,151, 9, 25,179, 0,178, 22,151, 3,150, 9,153, 26, 16,228,244,236,244,236,
+ 16,238,246,238, 48, 19, 62, 1, 51, 32, 0, 17, 16, 0, 33, 34, 38, 39, 53, 30, 1, 51, 50, 18, 17, 16, 2, 35, 34, 6, 7,139,
+ 77,162, 91, 1, 29, 1, 63,254,195,254,225, 91,162, 77, 73,169, 88,197,196,196,197, 86,170, 74, 5,158, 41, 41,254,103,254,146,
+254,144,254,106, 41, 41,207, 61, 64, 1, 48, 1, 50, 1, 51, 1, 48, 64, 61, 0, 0, 1, 0, 60,255,227, 4,149, 6,103, 0, 34,
+ 0, 0, 37, 14, 1, 35, 32, 0, 17, 16, 0, 33, 50, 23, 54, 55, 54, 59, 1, 21, 34, 7, 6, 29, 1, 46, 1, 35, 34, 2, 21, 16,
+ 18, 51, 50, 54, 55, 3,226, 77,162, 91,254,225,254,195, 1, 63, 1, 29, 90, 79, 23, 42, 90,165, 20, 84, 51, 44, 74,170, 86,197,
+196,196,197, 88,169, 73, 53, 41, 41, 1,150, 1,112, 1, 42, 1,153, 20, 51, 50,106,156, 62, 53,135, 70, 61, 64,254,208,239,254,
+206,254,208, 64, 61, 0, 0, 0, 0, 1, 0, 94,255,227, 4,115, 5,142, 0, 33, 0, 0, 37, 14, 1, 35, 32, 0, 16, 0, 33, 50,
+ 23, 54, 55, 54, 59, 1, 21, 34, 7, 6, 29, 1, 46, 1, 35, 34, 6, 21, 20, 22, 51, 50, 54, 55, 3,192, 74,157, 82,254,252,254,
+219, 1, 37, 1, 4, 70, 67, 19, 61, 90,165, 20, 90, 45, 44, 73,147, 93,173,186,187,172, 96,152, 65, 57, 43, 43, 1, 56, 2, 40,
+ 1, 56, 16,114, 71,106,156, 62, 62,126,148, 65, 58,224,208,207,225, 59, 62, 0,255,255, 0, 8, 0, 0, 4, 78, 5,213, 16, 6,
+ 0,146, 0, 0, 0, 2, 0, 8, 0, 0, 4,201, 5,213, 0, 18, 0, 27, 0, 0, 1, 51, 32, 0, 17, 16, 0, 33, 35, 17, 34, 7,
+ 6, 29, 1, 35, 53, 52, 54, 1, 32, 54, 17, 16, 38, 33, 35, 17, 1, 70,233, 1, 86, 1, 68,254,188,254,170,233, 54, 60, 48,156,
+192, 1, 99, 0,255,202,201,255, 0, 26, 5,213,254,148,254,128,254,130,254,149, 5, 47, 47, 38,114, 49, 70,181,163,250,209,251,
+ 1, 72, 1, 75,251,251,119, 0, 0, 2, 0,131, 0, 0, 4, 78, 5,213, 0, 8, 0, 22, 0, 0, 1, 35, 34, 6, 21, 20, 22, 59,
+ 1, 1, 53, 33, 17, 33, 32, 36, 53, 52, 55, 54, 37, 51, 17, 3,131,239,168,158,150,176,239,253, 69, 3,134,254, 70,254,249,254,
+246, 53,101, 1,123,235, 2,201,137,146,141,123, 4,137,166,250, 43,207,203,161,100,191, 15, 1,194, 0, 0, 0, 0, 2, 0,157,
+255,227, 4, 52, 6, 20, 0, 10, 0, 29, 0, 0, 0, 16, 22, 51, 50, 54, 53, 52, 38, 35, 34, 3, 53, 33, 17, 35, 53, 14, 1, 35,
+ 34, 2, 17, 16, 18, 51, 50, 22, 23, 17, 1, 95,136,133,134,138,138,134,133,163, 2,240,184, 46,153,100,203,233,232,202,102,155,
+ 44, 3, 5,254, 84,218,220,212,213,219, 1,125,184,249,236,141, 83, 87, 1, 59, 1, 21, 1, 17, 1, 55, 88, 82, 1,139, 0, 0,
+ 0, 2, 0,136,254, 61, 4, 71, 4,123, 0, 11, 0, 55, 0, 0, 37, 50, 54, 53, 52, 38, 35, 34, 6, 21, 20, 22, 5, 22, 23, 22,
+ 21, 20, 7, 6, 35, 34, 47, 1, 53, 22, 23, 22, 51, 50, 51, 55, 54, 63, 1, 54, 53, 52, 39, 38, 39, 38, 39, 38, 39, 38, 17, 16,
+ 18, 51, 50, 18, 17, 16, 7, 6, 2,104,140,144,144,140,141,144,144, 1,167, 19, 40, 62,118,119,197,102, 50,151, 66, 70, 75, 73,
+ 9, 10, 32, 73, 60, 39, 27, 13, 17, 41, 24,105,235,121,124,246,234,233,246,123, 31,127,218,214,213,219,219,213,214,218, 76, 9,
+ 40, 61, 92,136, 82, 82, 12, 36,173, 24, 15, 15, 1, 2, 43, 28, 24, 46, 33, 19, 24, 21, 13, 1, 3,148,151, 1, 30, 1, 31, 1,
+ 45,254,211,254,225,254,226,151, 38, 0, 0, 0, 0, 1, 0,197, 0, 0, 4, 78, 5,213, 0, 11, 0, 43, 64, 10, 8, 4, 30, 0,
+ 49, 11, 6, 3, 51, 12, 16,252,196,196,252,236, 50, 49, 0, 64, 12, 6,151, 8, 10,151, 0,136, 4,151, 8,177, 2, 47,236,236,
+244,236, 16,238, 48, 1, 17, 33, 53, 33, 17, 33, 53, 33, 17, 33, 53, 4, 78,252,119, 2,191,253,114, 2,142,253, 84, 5,213,250,
+ 43,170, 2, 29,170, 1,186,170, 0, 2, 0,117,255,227, 4, 92, 5,240, 0, 21, 0, 28, 0, 61, 64, 12, 3, 2, 28, 50, 16, 54,
+ 9, 22, 50, 0, 53, 29, 16,244,236,196,244,236, 57, 57, 49, 0, 64, 20, 0, 22, 3, 1, 10,179, 9, 6,151, 13,150, 29, 22,151,
+ 1, 25,151, 19,153, 29, 16,244,236,212,238, 16,244,244,212,238, 18, 57, 17, 57, 48, 19, 53, 33, 53, 52, 2, 35, 34, 6, 7, 53,
+ 62, 1, 51, 50, 18, 17, 16, 2, 35, 34, 2, 19, 20, 18, 51, 50, 18, 55,117, 3, 19,138,150, 86,170, 74, 77,162, 91,253,247,247,
+253,253,246,215,140,148,148,126, 9, 2,233, 83, 8,241, 1, 23, 64, 61,207, 41, 41,254,128,254,121,254,122,254,128, 1,126, 1,
+ 35,248,254,251, 0,255,254, 0, 0, 1, 0,137,255,227, 4, 55, 5,240, 0, 40, 0, 62, 64, 11, 20, 9, 31, 16, 50, 3, 25, 50,
+ 38, 48, 41, 16,252,236,212,236,212,196,196, 49, 0, 64, 22, 10,179, 9, 13,151, 6,150, 41, 0, 22,151, 19,177, 41, 31,179, 32,
+ 28,151, 35,153, 41, 16,244,236,212,236, 16,244,236, 57, 16,244,236,212,236, 48, 1, 46, 1, 53, 52, 36, 51, 50, 22, 23, 21, 46,
+ 1, 35, 34, 6, 21, 20, 22, 59, 1, 21, 35, 34, 6, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 36, 53, 52, 54, 1,184,131,
+137, 1, 5,218, 73,189,121,104,190, 89,134,145,156,139,154,154,152,178,178,166, 98,198,102,103,214,103,245,254,235,156, 3, 31,
+ 34,162,123,181,221, 32, 32,186, 40, 40,123,115,109,122,166,153,130,141,150, 52, 53,201, 36, 38,235,206,149,199, 0, 1, 0, 63,
+254, 86, 4,146, 5,213, 0, 19, 0, 0, 1, 33, 21, 33, 17, 33, 21, 33, 17, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 53, 1,124,
+ 3, 22,253,181, 2, 12,253,244, 89, 90,165,176,138, 90, 45, 44, 5,213,170,254, 72,170,253, 35,195,105,106,156, 62, 62,126, 0,
+ 0, 1, 0,195,254, 86, 4, 39, 6, 20, 0, 36, 0, 0, 1, 21, 43, 1, 34, 7, 6, 29, 1, 33, 21, 33, 17, 20, 7, 6, 43, 1,
+ 53, 51, 50, 55, 54, 53, 3, 33, 53, 33, 53, 52, 55, 54, 55, 54, 59, 2, 4, 39,209, 2, 97, 39, 38, 1,129,254,127, 81, 82,181,
+ 70, 49,105, 38, 38, 2,254,215, 1, 40, 87, 37, 60, 70, 97, 9, 3, 6, 20,153, 41, 40,103, 99,143,252, 27,214, 96, 96,156, 48,
+ 49,153, 3,229,143, 78,180, 92, 39, 21, 26, 0, 0, 1, 0, 52,255,227, 4,157, 6,103, 0, 40, 0, 0, 37, 14, 1, 35, 32, 0,
+ 17, 16, 0, 33, 50, 23, 22, 23, 54, 55, 54, 59, 1, 21, 34, 7, 6, 7, 21, 46, 1, 35, 34, 2, 17, 16, 18, 51, 50, 54, 55, 17,
+ 35, 53, 33, 4, 30, 82,202,118,254,228,254,196, 1, 64, 1, 28, 94, 86, 17, 17, 15, 21, 90,166, 19, 84, 51, 43, 1, 80,170, 96,
+196,198,192,198, 66,102, 40,216, 1,154,123, 75, 77, 1,151, 1,111, 1,110, 1,153, 26, 6, 6, 26, 25,106,156, 62, 54,134, 27,
+ 77, 73,254,207,254,206,254,201,254,213, 31, 33, 1,145,166, 0, 0, 2, 0, 28,254, 82, 4,182, 5, 73, 0, 13, 0, 21, 0, 0,
+ 1, 0, 17, 20, 33, 32, 53, 16, 9, 1, 51, 9, 1, 51, 1, 2, 17, 20, 51, 50, 53, 16, 2,218, 1, 68,254, 96,254, 72, 1, 38,
+254, 48,216, 1,116, 1,116,218,253,162,198,216,204, 2,138,254, 63,254,117,236,236, 1,111, 1,228, 2,184,253,213, 2, 43,252,
+166,254,211,254,188,138,138, 1, 69, 0, 0, 0, 0, 1, 0, 65, 0, 0, 4,144, 6, 20, 0, 38, 0, 0, 1, 17, 35, 20, 23, 22,
+ 55, 54, 55, 54, 53, 17, 51, 17, 20, 6, 35, 34, 39, 38, 53, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 17, 54, 55, 54, 51, 50,
+ 22, 2,243, 1, 34, 38, 55, 19, 54, 47,167,152,154,127, 74, 73, 95, 66, 71,125,166,166, 77, 17, 75, 85,118,152, 2,182,254,224,
+153, 49, 52, 4, 2, 73, 66,156, 1,155,254,101,228,225, 96, 96,214, 1, 32,151,142,183,171,253,135, 6, 20,253,164,134, 12, 49,
+225, 0, 0, 0, 0, 1, 0,201, 0, 0, 4, 58, 5,213, 0, 17, 0, 0, 1, 33, 53, 33, 21, 33, 17, 20, 23, 22, 59, 1, 23, 35,
+ 34, 39, 38, 53, 2, 2,254,199, 3, 61,254,199, 44, 45, 90,185, 1,217,170, 92, 89, 5, 43,170,170,252,122,127, 61, 62,171,106,
+102,198, 0, 0, 0, 1, 0,201, 0, 0, 4, 6, 5,213, 0, 21, 0, 0, 19, 33, 21, 33, 17, 51, 33, 21, 33, 35, 17, 33, 21, 33,
+ 53, 33, 17, 33, 53, 33, 17, 33,201, 3, 61,254,199, 2, 1, 9,254,247, 2, 1, 57,252,195, 1, 57,254,249, 1, 7,254,199, 5,
+213,170,253,192,170,254,105,170,170, 1,151,170, 2, 64, 0, 0, 0, 1, 0,110, 0, 0, 4,195, 5,213, 0, 25, 0, 0, 1, 54,
+ 55, 54, 51, 50, 31, 1, 7, 39, 38, 35, 34, 7, 6, 15, 1, 1, 35, 1, 7, 17, 35, 17, 51, 17, 2,135,161,105, 21, 20,126, 92,
+ 47,106, 33, 45, 60, 17, 19, 66,109,164, 2, 86,244,254, 25,154,203,203, 4,156,170, 12, 3, 99, 51,114, 37, 51, 4, 15,115,172,
+252,141, 2,236,164,253,184, 5,213,253,104, 0, 0, 1, 0,236, 0, 0, 4,178, 6, 20, 0, 23, 0, 0, 19, 53, 52, 55, 54, 59,
+ 1, 21, 35, 34, 7, 6, 21, 51, 17, 1, 51, 9, 1, 35, 1, 7, 17, 35,236, 89, 90,165,205,185, 90, 45, 44, 5, 1,227,224,254,
+ 71, 1,254,225,254, 98,137,190, 3,234,148,195,105,106,156, 62, 62,126,254, 17, 1,209,254, 90,253, 70, 2, 66,129,254, 63, 0,
+ 0, 1, 0,160, 0, 0, 4, 10, 6, 31, 0, 23, 0, 0, 1, 20, 22, 59, 1, 21, 35, 34, 38, 61, 1, 35, 53, 51, 17, 33, 53, 33,
+ 17, 59, 1, 21, 43, 1, 2,127, 91, 89,215,233,165,181,228,228,254,217, 1,223, 9,221,221, 9, 1,150,124,126,156,212,194,196,
+142, 2,167,144,252,201,142, 0, 0, 1, 0, 49, 0, 0, 4,109, 5,213, 0, 15, 0, 0, 1, 37, 23, 9, 1, 35, 9, 1, 35, 1,
+ 39, 5, 39, 1, 3, 51, 2, 67, 1, 92, 80,254,141, 1,241,191,254,191,254,182,191, 1,169, 34,254,150, 80, 1,129,174,191, 4,
+189,242,110,254,254,251,193, 2,192,253, 64, 3,145, 74,251,111, 1, 10, 1,124, 0, 1, 0,109,255,229, 4,111, 5,213, 0, 34,
+ 0, 0, 37, 14, 1, 35, 34, 38, 25, 1, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 35, 53,
+ 14, 1, 35, 34, 38, 2, 56, 34,105, 74,135,111,168, 53, 70, 80, 59,168, 57, 74, 73, 57,167,167, 33, 99, 63, 76,101,114, 72, 69,
+209, 1, 33, 3,254,252, 10,237,115,123,229, 3,246,252, 10,240,112,123,229, 3,246,250, 43, 96, 60, 63, 70, 0, 0, 1, 0, 29,
+254, 86, 4, 25, 5,213, 0, 18, 0, 0, 19, 51, 1, 17, 51, 17, 35, 1, 17, 20, 7, 6, 43, 1, 53, 50, 55, 54, 53,190,230, 1,
+198,175,230,254, 59, 81, 81,148, 27, 81, 40, 40, 5,213,251, 51, 4,205,250, 43, 4,205,251, 31,195,105,106,156, 62, 61,127, 0,
+ 0, 1, 0,195,254, 82, 4, 27, 4,123, 0, 19, 0, 0, 1, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51,
+ 50, 22, 4, 27,185,106,113,129,139,184,184, 49,168,115,171,169, 2,182,251,156, 4,100,151,142,183,171,253,135, 4, 96,168, 96,
+ 99,225, 0, 0, 0, 3, 0,117,255,227, 4, 92, 5,240, 0, 10, 0, 19, 0, 28, 0, 0, 1, 16, 2, 32, 2, 17, 16, 18, 51, 50,
+ 18, 3, 2, 39, 38, 35, 34, 7, 6, 3, 23, 22, 23, 22, 51, 50, 55, 54, 55, 4, 92,247,254, 6,246,247,252,253,247,212, 8, 58,
+ 68,154,153, 67, 59, 8, 1, 9, 57, 67,153,154, 68, 56, 9, 2,233,254,122,254,128, 1,126, 1,136, 1,135, 1,128,254,128,254,
+204, 1, 8,123,141,141,123,254,248,184,250,118,141,141,117,251,255,255, 0, 6,255,227, 4,167, 6, 21, 16, 39, 2,151, 1,121,
+ 1,164, 16, 6, 0, 50,145, 0,255,255, 0, 32,255,227, 4,178, 4,123, 16, 39, 2,151, 1,132, 0, 0, 16, 6, 0, 82,151, 0,
+ 0, 2, 0, 45,255,227, 4,164, 5,240, 0, 16, 0, 27, 0, 0, 19, 16, 37, 54, 51, 50, 23, 55, 51, 17, 35, 17, 7, 17, 6, 32,
+ 2, 1, 38, 35, 34, 2, 17, 16, 18, 51, 50, 55, 45, 1, 78, 53, 62,206,111,147,230,175,180,111,254, 56,221, 2,136, 61,138,138,
+121,121,138,138, 61, 2,233, 2,160, 89, 14,158,131,250, 43, 4,205,160,252,118,192, 1,126, 3, 94,141,254,230,254,183,254,184,
+254,230,141, 0, 0, 2, 0, 86,254, 82, 4,171, 4,123, 0, 19, 0, 32, 0, 0, 19, 16, 55, 54, 51, 50, 23, 21, 55, 51, 17, 35,
+ 17, 7, 17, 6, 35, 34, 39, 38, 55, 16, 23, 22, 51, 50, 55, 17, 38, 35, 34, 3, 6, 86,250, 80,101,210,111,126,231,176,181,110,
+211,234,111, 86,176,215, 19, 21,127, 65, 65,127,206, 40, 9, 2, 47, 1,180,115, 37,151, 43,110,250, 43, 4,205,157,253,248,151,
+188,146,254,254,117, 34, 3,109, 2,134,109,254,226, 66, 0, 0, 0, 2, 0, 56, 0, 0, 4,153, 5,213, 0, 23, 0, 33, 0, 0,
+ 1, 16, 5, 6, 43, 1, 17, 35, 17, 34, 7, 6, 29, 1, 35, 53, 52, 55, 54, 51, 33, 32, 19, 22, 1, 50, 55, 54, 53, 52, 38, 43,
+ 1, 17, 4,153,254,200, 86,110, 93,202, 54, 60, 48,156, 96, 96,126, 1, 39, 1,151, 82, 19,254, 4,211, 64, 22,156,141, 93, 4,
+ 23,254,164, 77, 22,253,168, 5, 47, 47, 38,114, 49, 70,181, 82, 81,254,220, 69,254,146,157, 56, 68,133,147,253,207, 0, 0, 0,
+ 0, 2, 0,190,254, 86, 4, 84, 5,152, 0, 14, 0, 42, 0, 0, 1, 16, 23, 22, 51, 50, 54, 53, 16, 39, 34, 35, 34, 3, 6, 17,
+ 54, 55, 50, 51, 50, 18, 17, 16, 2, 35, 34, 38, 39, 17, 35, 17, 16, 55, 54, 59, 1, 21, 35, 34, 7, 6, 21, 1,119,209, 29, 34,
+133,135,251, 9, 8,214, 46, 12, 91,194, 7, 7,203,231,232,202,102,153, 44,185,203, 63, 78,205,185,169, 9, 1, 2, 47,254,137,
+ 50, 7,218,214, 1,162, 14,254,239, 70, 1, 73,164, 6,254,198,254,234,254,239,254,201, 87, 83,253,201, 5,172, 1, 46, 79, 25,
+156,221, 14, 15, 0, 2, 0,143,254,248, 4,209, 5,213, 0, 22, 0, 31, 0, 0, 1, 22, 23, 22, 23, 19, 35, 3, 46, 1, 43, 1,
+ 17, 35, 17, 51, 17, 51, 50, 4, 21, 20, 6, 1, 17, 51, 50, 54, 53, 52, 38, 35, 2,248, 78, 55, 54, 83,203,217,178, 77,123, 99,
+193,203,203,213,246, 1, 6,161,253,208,221,145,142,151,144, 1,185, 20, 55, 55,167,254,104, 1,121,161, 93,254,145, 5,213,254,
+248,222,210,148,187, 2, 89,253,238,130,134,129,137, 0, 0, 0, 0, 1, 0,139,255,227, 4, 74, 5,240, 0, 39, 0, 0, 19, 62,
+ 1, 51, 50, 4, 21, 20, 6, 15, 1, 14, 1, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 36, 53, 52, 54, 63, 1, 62, 1, 53,
+ 52, 38, 35, 34, 6, 7,225,105,190, 86,223, 1, 13,188,208,108,145,117,170,153,104,205,115,107,212,105,252,254,248,192,210,106,
+149,109,166,143, 94,185, 92, 5,162, 39, 39,241,200,160,190, 47, 25, 32,118,112,123,137, 68, 73,215, 45, 45,224,213,181,210, 49,
+ 24, 35,104, 99,113,133, 60, 59, 0, 1, 0,213,255,227, 4, 6, 4,123, 0, 39, 0, 0, 1, 62, 1, 51, 50, 22, 21, 20, 6, 15,
+ 2, 6, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 53, 52, 54, 63, 1, 62, 1, 53, 52, 38, 35, 34, 6, 7, 1, 14, 80,
+166, 90,202,218,146,159, 69, 8,245,134,122, 84,188,103,106,182, 83,210,236,141,137, 74,183, 92,123,125, 83,160, 79, 4, 57, 33,
+ 33,175,161,127,147, 31, 14, 2, 49,128, 89, 99, 53, 53,190, 35, 35,187,166,125,156, 26, 14, 35, 74, 75, 83, 81, 46, 46, 0, 0,
+255,255, 0,120, 0, 0, 4,109, 5,213, 16, 6, 2,223, 0, 0, 0, 2, 0,118,254, 86, 4, 91, 6, 20, 0, 8, 0, 33, 0, 0,
+ 1, 38, 39, 38, 35, 34, 7, 6, 51, 5, 3, 20, 23, 22, 59, 1, 21, 35, 34, 39, 38, 53, 17, 35, 32, 53, 52, 33, 50, 23, 22, 23,
+ 51, 21, 2, 56, 7, 18, 33,110,124, 3, 3,119, 1,120, 2, 39, 37,100,176,174,195, 81, 87,190,254,242, 1, 47,181, 82, 53, 18,
+191, 5, 4, 45, 23, 48, 65, 51,154,251, 61,103, 41, 40,153, 86, 92,180, 4,174,210,216, 96, 64,111,155, 0, 0, 0, 1, 0,131,
+254, 86, 4, 8, 5,158, 0, 32, 0, 0, 1, 17, 33, 21, 33, 17, 20, 22, 59, 1, 29, 1, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54,
+ 61, 1, 35, 34, 38, 53, 17, 33, 53, 33, 17, 2,102, 1,162,254, 94, 94,117,207, 89, 90,165,205,185, 90, 45, 44, 40,207,170,254,
+213, 1, 43, 5,158,254,194,143,253,160,124, 98,147, 20,195,105,106,156, 62, 62,126, 20,166,203, 2, 96,143, 1, 62, 0, 0, 0,
+ 0, 1, 0, 47, 0, 0, 4,162, 5,213, 0, 16, 0, 0, 1, 38, 7, 6, 29, 1, 35, 53, 52, 54, 51, 33, 21, 33, 17, 35, 17, 1,
+197,131, 70, 49,156,192,214, 2,221,254, 45,203, 5, 47, 8, 55, 38,114, 49, 70,181,163,170,250,213, 5, 43, 0, 0, 1, 0,131,
+ 0, 0, 4, 8, 6, 20, 0, 29, 0, 0, 1, 33, 21, 33, 17, 20, 22, 59, 1, 21, 35, 34, 38, 53, 17, 33, 53, 33, 53, 52, 55, 54,
+ 59, 1, 21, 35, 34, 7, 6, 21, 2,102, 1,162,254, 94, 94,117,207,225,207,170,254,213, 1, 42, 89, 90,165,205,185, 90, 45, 44,
+ 4, 96,143,253,160,124, 98,147,166,203, 2, 96,143, 30,195,105,106,156, 62, 62,126, 0, 0, 0, 0, 1, 0, 47,254, 86, 4,162,
+ 5,213, 0, 21, 0, 0, 19, 33, 21, 33, 17, 29, 1, 20, 23, 22, 59, 1, 21, 35, 34, 39, 38, 61, 2, 17, 33, 47, 4,115,254, 45,
+ 44, 45, 90,185,223,165, 90, 89,254, 43, 5,213,170,251, 85,128, 20,126, 62, 62,156,106,105,195, 20,128, 4,171,255,255, 0, 9,
+255,227, 4,200, 6, 25, 16, 39, 2,151, 1,154, 1,168, 16, 7, 0, 56,255,118, 0, 0, 0, 0,255,255, 0, 39,255,227, 4,170,
+ 4,113, 16, 39, 2,151, 1,124, 0, 0, 16, 7, 0, 88,255,100, 0, 0, 0, 0, 0, 1, 0, 74, 0, 0, 4,135, 5,180, 0, 30,
+ 0, 0, 1, 21, 35, 22, 18, 21, 16, 0, 35, 34, 0, 17, 52, 18, 55, 35, 53, 33, 21, 6, 2, 21, 20, 18, 32, 18, 53, 52, 2, 39,
+ 53, 4,135,245,123,110,254,224,240,242,254,223,111,123,248, 1,207,120,134,180, 1, 52,179,134,120, 5,180,172,134,254,224,188,
+254,201,254,145, 1,110, 1, 56,188, 1, 33,133,172,172, 76,254,183,222,230,254,247, 1, 9,230,222, 1, 73, 76,172, 0, 0, 0,
+ 0, 1, 0,154, 0, 0, 4, 42, 5,213, 0, 24, 0, 0, 33, 34, 39, 38, 53, 17, 51, 17, 20, 23, 22, 51, 50, 18, 53, 52, 2, 39,
+ 51, 22, 18, 21, 16, 7, 6, 1,250,170, 92, 90,204, 44, 44, 90,154,180,134,120,218,122,110,144,147,106,102,198, 4, 63,251,208,
+126, 62, 62, 1, 9,230,222, 1, 73, 76,134,254,224,188,254,201,184,188, 0, 0, 0, 1, 0, 17, 0, 0, 4,192, 5,215, 0, 22,
+ 0, 0, 1, 3, 17, 35, 17, 1, 51, 1, 19, 54, 55, 54, 51, 50, 31, 1, 7, 39, 38, 35, 34, 7, 6, 3,107,246,183,254, 83,193,
+ 1, 72,199, 99,109, 46, 45, 80, 75, 25, 71, 10, 34, 40, 28, 31, 51, 4,116,254, 42,253, 98, 2,158, 3, 55,253,109, 1,145,200,
+ 42, 18, 57, 19,134, 9, 31, 16, 24, 0, 0, 0, 0, 1, 0, 24,254, 86, 4,201, 4,109, 0, 28, 0, 0, 5, 6, 7, 6, 43, 1,
+ 53, 51, 50, 54, 63, 1, 1, 51, 9, 1, 54, 55, 54, 51, 50, 31, 1, 7, 39, 38, 35, 34, 7, 2,110, 81, 71, 74,124,147,108, 76,
+ 84, 51, 33,254, 59,195, 1, 94, 1, 23, 50, 81, 43, 51, 49, 55, 48, 53, 28, 28, 22, 43, 16,104,203, 58, 61,154, 72,134, 84, 4,
+ 78,252,148, 2,187,126, 41, 22, 20, 17,147, 10, 11, 41, 0, 0, 0, 1, 0,156, 0, 0, 4,145, 5,213, 0, 18, 0, 0, 19, 33,
+ 21, 1, 51, 21, 33, 35, 1, 33, 21, 33, 53, 1, 35, 53, 33, 1, 33,178, 3,201,254,117,232,254,247, 80,254,240, 3, 34,252, 11,
+ 1, 19,180, 1, 34, 1,118,253, 31, 5,213,154,253,176,170,254,105,170,154, 1,167,170, 2, 64, 0, 1, 0,156, 0, 0, 4, 53,
+ 4, 98, 0, 18, 0, 0, 19, 33, 21, 1, 33, 21, 33, 35, 3, 33, 21, 33, 53, 19, 33, 53, 33, 1, 33,222, 3, 45,254,242, 1, 56,
+254,158, 89,242, 2,131,252,187,225,254,245, 1,142, 1, 31,253,149, 4, 98,168,254,174,164,254,210,150,170, 1, 26,164, 1,103,
+ 0, 1, 0, 26,255,228, 4,183, 5,213, 0, 31, 0, 0, 19, 20, 23, 22, 32, 55, 54, 53, 52, 39, 38, 43, 1, 53, 1, 33, 53, 33,
+ 21, 1, 50, 23, 22, 23, 22, 21, 20, 4, 33, 32, 36, 53,228,100, 99, 1,123,100,100, 92, 94,164,174, 1,114,253, 30, 3,202,254,
+136,104,130, 98, 86, 80,254,208,254,232,254,220,254,208, 1,179,143, 75, 75, 75, 75,143,134, 73, 74,166, 1,185,170,168,254, 71,
+ 56, 43,108,104,138,221,242,242,221, 0, 0, 0, 0, 1, 0, 26,255,228, 4,183, 5,213, 0, 31, 0, 0, 1, 51, 20, 4, 33, 32,
+ 36, 53, 52, 55, 54, 55, 54, 51, 1, 53, 33, 21, 33, 1, 21, 35, 34, 7, 6, 21, 20, 23, 22, 32, 55, 54, 3,238,200,254,208,254,
+220,254,232,254,208, 82, 85, 99,129,105,254,136, 3,200,253, 32, 1,114,174,166, 92, 92,100, 99, 1,123,100,100, 1,179,221,242,
+242,221,138,104,108, 43, 56, 1,185,168,170,254, 71,166, 74, 73,134,143, 75, 75, 75, 75, 0, 0, 0, 1, 0,125,254, 76, 4, 84,
+ 4, 96, 0, 32, 0, 0, 9, 1, 53, 33, 21, 33, 1, 21, 35, 34, 7, 6, 21, 20, 23, 22, 51, 50, 54, 55, 21, 6, 7, 6, 35, 32,
+ 36, 53, 52, 55, 54, 55, 54, 2,112,254,101, 3,106,253,101, 1,174,174,165, 93, 92,100, 99,190,109,200, 84,106,100, 99, 94,254,
+232,254,208, 81, 86, 98,128, 1,220, 1,220,168,147,254, 13,166, 74, 75,132,143, 75, 75, 50, 49,195, 37, 19, 18,242,221,138,104,
+109, 42, 56, 0, 0, 1, 0,152, 0, 0, 4, 35, 5,240, 0, 32, 0, 0, 19, 54, 51, 50, 4, 21, 20, 7, 6, 7, 51, 21, 35, 7,
+ 1, 33, 21, 33, 53, 1, 33, 53, 33, 54, 55, 54, 53, 52, 39, 38, 35, 34, 7,164,208,191,219, 1, 11, 45, 34, 66, 80,230, 56,254,
+187, 2,174,252,117, 1,126,254,229, 1,178,105, 30, 22,150, 57, 68,181,222, 5,141, 99,233,189, 96, 96, 74, 85,170, 63,254,168,
+170,170, 1,151,170,130, 84, 60, 62,185, 60, 22,133, 0, 0, 0, 0, 1, 0, 26,255,228, 4,182, 5,213, 0, 32, 0, 0, 37, 32,
+ 55, 54, 53, 52, 39, 38, 35, 33, 17, 33, 21, 33, 17, 33, 50, 23, 22, 23, 22, 21, 20, 4, 33, 32, 3, 38, 53, 51, 20, 23, 22, 2,
+104, 1, 60, 61, 13, 92, 94,164,254, 71, 3,156,253, 47, 1, 34,105,129, 99, 85, 80,254,208,254,232,254, 82,122, 44,202,158, 91,
+142,199, 43, 51,134, 73, 74, 3, 9,170,254, 73, 56, 43,108,101,141,221,242, 1, 0, 91,116,181, 71, 41, 0, 0, 0, 1, 0,125,
+254, 76, 4, 84, 4, 96, 0, 28, 0, 0, 1, 32, 55, 54, 53, 52, 39, 38, 35, 33, 17, 33, 21, 33, 17, 55, 54, 23, 22, 23, 22, 21,
+ 20, 4, 33, 34, 39, 53, 22, 2, 6, 1, 55, 63, 15, 92, 93,165,254,212, 2,240,253,200,168,103,131, 99, 85, 81,254,208,254,232,
+187,212,170,254,246,195, 45, 53,134, 73, 74, 3, 44,184,254, 51, 1, 1, 57, 43,108,104,138,221,242, 74,195, 99, 0, 1, 0,194,
+255,227, 4, 15, 5,158, 0, 32, 0, 0, 1, 52, 39, 38, 43, 1, 17, 35, 53, 51, 17, 51, 17, 51, 21, 35, 21, 22, 23, 22, 21, 20,
+ 7, 6, 33, 34, 39, 53, 22, 51, 50, 55, 54, 3, 77, 74, 89,173, 62,229,229,202,231,231,165,108,117,110,138,254,238,171,152,156,
+159,179, 99, 57, 1,183,114, 79, 95, 1, 15,164, 1, 20,254,236,164,125, 29,110,119,176,185,126,157, 70,172, 86,114, 65, 0, 0,
+ 0, 1, 2, 3, 0, 0, 2,206, 5,213, 0, 3, 0, 0, 1, 51, 17, 35, 2, 4,202,202, 5,213,250, 43, 0, 0,255,255, 1, 57,
+ 0, 0, 3,152, 5,213, 16, 39, 1,128,255, 54, 0, 0, 16, 7, 1,128, 0,202, 0, 0, 0, 0, 0, 1, 0,164, 0, 0, 4, 45,
+ 5,213, 0, 19, 0, 0, 1, 51, 17, 33, 21, 33, 21, 33, 21, 33, 17, 35, 17, 33, 53, 33, 53, 33, 53, 33, 2, 4,202, 1, 94,254,
+162, 1, 94,254,162,202,254,160, 1, 96,254,160, 1, 96, 5,213,254,108,168,240,170,254, 1, 1,255,170,240,168,255,255, 2, 3,
+ 0, 0, 2,206, 5,213, 16, 6, 0, 4,255, 0,255,255, 0, 37, 0, 0, 4,172, 7,109, 16, 38, 0, 36, 0, 0, 16, 7, 11,181,
+ 0, 0, 1,117,255,255, 0,133,255,227, 4, 35, 6,102, 16, 38, 0, 68, 0, 0, 16, 6, 2, 96, 0, 0, 0, 0,255,255, 0,201,
+ 0, 0, 4, 6, 7,109, 16, 38, 0, 44, 0, 0, 16, 7, 11,181, 0, 0, 1,117,255,255, 0,178, 0, 0, 4, 68, 6,102, 16, 38,
+ 0,243, 0, 0, 16, 6, 2, 96, 0, 0, 0, 0,255,255, 0,117,255,227, 4, 92, 7,109, 16, 38, 0, 50, 0, 0, 16, 7, 11,181,
+ 0, 0, 1,117,255,255, 0,137,255,227, 4, 72, 6,102, 16, 38, 0, 82, 0, 0, 16, 6, 2, 96, 0, 0, 0, 0,255,255, 0,147,
+255,227, 4, 61, 7,109, 16, 38, 0, 56, 0, 0, 17, 7, 11,181, 0, 0, 1,117, 0, 20,180, 17, 35, 31, 1, 7, 43, 64, 9, 32,
+ 31, 47, 35, 0, 31, 15, 35, 4, 93, 49, 0, 0,255,255, 0,195,255,227, 4, 27, 6,102, 16, 38, 0, 88, 0, 0, 16, 6, 2, 96,
+ 0, 0, 0, 0,255,255, 0,147,255,227, 4, 61, 7,160, 16, 39, 11,176, 0, 0, 0,249, 16, 38, 0, 56, 0, 0, 16, 7, 2, 98,
+ 0, 0, 1,170,255,255, 0,195,255,227, 4, 27, 7, 50, 16, 38, 2,132, 0, 0, 16, 38, 0, 88, 0, 0, 16, 7, 0,113, 0, 0,
+ 1, 60, 0, 0,255,255, 0,147,255,227, 4, 61, 7,249, 16, 39, 11,176, 0, 0, 0,249, 16, 38, 0, 56, 0, 0, 16, 7, 11,177,
+ 0, 0, 2, 3,255,255, 0,195,255,227, 4, 27, 7,162, 16, 38, 2,132, 0, 0, 16, 38, 0, 88, 0, 0, 16, 7, 2,125, 0, 0,
+ 1, 60, 0, 0,255,255, 0,147,255,227, 4, 61, 7,251, 16, 39, 11,176, 0, 0, 0,249, 16, 38, 0, 56, 0, 0, 16, 7, 11,181,
+ 0, 0, 2, 3,255,255, 0,195,255,227, 4, 27, 7,162, 16, 38, 2,132, 0, 0, 16, 38, 0, 88, 0, 0, 16, 7, 2,136, 0, 0,
+ 1, 60, 0, 0,255,255, 0,147,255,227, 4, 61, 7,249, 16, 39, 11,176, 0, 0, 0,249, 16, 38, 0, 56, 0, 0, 16, 7, 11,179,
+ 0, 0, 2, 3,255,255, 0,195,255,227, 4, 27, 7,162, 16, 39, 2,124, 0, 0, 1, 60, 16, 6, 0,190, 0, 0,255,255, 0,122,
+255,227, 4, 87, 4,123, 18, 6, 1,247, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7,160, 16, 39, 11,176, 0, 0, 0,249, 16, 39,
+ 2, 98, 0, 0, 1,170, 16, 6, 0, 36, 0, 0,255,255, 0,133,255,227, 4, 35, 7, 50, 16, 39, 0,113, 0, 0, 1, 60, 16, 6,
+ 0,166, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7,160, 16, 39, 2, 98, 0, 0, 1,170, 16, 38, 11,185, 0,132, 16, 6, 0, 36,
+ 0, 0, 0, 0,255,255, 0,133,255,227, 4, 35, 7, 50, 16, 39, 0,113, 0, 0, 1, 60, 18, 6, 1,210, 0, 0,255,255, 0, 0,
+ 0, 0, 4,156, 7, 48, 16, 39, 11,189, 0,170, 0, 0, 16, 6, 0,136, 0, 0,255,255, 0, 41,255,227, 4,176, 5,246, 16, 38,
+ 2,128, 0, 0, 16, 6, 0,168, 0, 0, 0, 0,255,255, 0,102,255,227, 4, 80, 7,109, 16, 39, 11,181, 0, 0, 1,117, 16, 6,
+ 0, 42, 0, 0,255,255, 0,123,254, 72, 4, 18, 6,102, 16, 38, 2, 96, 0, 0, 16, 6, 0, 74, 0, 0, 0, 0,255,255, 0,137,
+ 0, 0, 4,201, 7,109, 16, 39, 11,181, 0, 0, 1,117, 16, 6, 0, 46, 0, 0,255,255, 0,236, 0, 0, 4,178, 7,109, 16, 39,
+ 11,181, 0, 0, 1,117, 16, 6, 0, 78, 0, 0,255,255, 0,117,254,101, 4, 92, 5,240, 16, 38, 2,109, 28,240, 16, 6, 0, 50,
+ 0, 0, 0, 0,255,255, 0,137,254,101, 4, 72, 4,123, 16, 38, 2,109, 28,240, 16, 6, 0, 82, 0, 0, 0, 0,255,255, 0,117,
+254,101, 4, 92, 7, 48, 16, 38, 11,189, 0, 0, 16, 6, 1,159, 0, 0, 0, 0,255,255, 0,137,254,101, 4, 72, 5,246, 16, 38,
+ 2,128, 0, 0, 16, 6, 1,160, 0, 0, 0, 0,255,255, 0, 26,255,228, 4,183, 7,109, 16, 39, 11,181, 0, 0, 1,117, 16, 6,
+ 1,121, 0, 0,255,255, 0,125,254, 76, 4, 84, 6,102, 16, 38, 2, 96, 0, 0, 16, 6, 2, 48, 0, 0, 0, 0,255,255, 0,186,
+254, 86, 3,203, 6, 97, 16, 38, 2, 96, 35,251, 16, 6, 1,226, 0, 0, 0, 0,255,255, 0,102,255,227, 4, 80, 7,107, 16, 39,
+ 11,177, 0, 90, 1,117, 16, 6, 0, 42, 0, 0,255,255, 0,123,254, 72, 4, 18, 6,102, 16, 38, 0,118, 0, 0, 16, 6, 0, 74,
+ 0, 0, 0, 0, 0, 1, 0, 61,255,227, 4,148, 5,213, 0, 29, 0, 0, 37, 50, 55, 54, 25, 1, 51, 17, 16, 7, 6, 35, 34, 39,
+ 38, 17, 53, 33, 17, 35, 17, 51, 17, 33, 17, 51, 17, 16, 23, 22, 3,109, 54, 25, 33,182,104, 57,133,128, 72,134,254,213,182,182,
+ 1, 43,183, 82, 23,135, 79,102, 1, 14, 1, 39,254,192,254,139,140, 77, 83,153, 1, 98,150,253, 57, 5,213,253,156, 2,100,252,
+117,254,239,139, 39, 0, 0, 0,255,255, 0,139, 0, 0, 4, 70, 7,107, 16, 39, 11,179, 0, 0, 1,117, 16, 6, 0, 49, 0, 0,
+255,255, 0,195, 0, 0, 4, 27, 6,102, 16, 38, 0, 67, 0, 0, 16, 6, 0, 81, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 4,156,
+ 7,107, 16, 39, 11,177, 0,240, 1,117, 16, 6, 0,136, 0, 0,255,255, 0, 41,255,227, 4,176, 6,102, 16, 38, 0,118, 0, 0,
+ 16, 6, 0,168, 0, 0, 0, 0,255,255, 0, 8,255,186, 4,176, 7,107, 16, 39, 11,177, 0, 0, 1,117, 16, 6, 0,154, 0, 0,
+255,255, 0, 47,255,160, 4,150, 6,102, 16, 38, 0,118, 0, 0, 16, 6, 0,186, 0, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172,
+ 7,107, 16, 38, 11,187, 0, 0, 16, 6, 0, 36, 0, 0, 0, 0,255,255, 0,133,255,227, 4, 35, 6,102, 16, 38, 2,139, 0, 0,
+ 16, 6, 0, 68, 0, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7,109, 16, 38, 11,183, 0, 0, 16, 6, 0, 36, 0, 0, 0, 0,
+255,255, 0,133,255,227, 4, 35, 6, 72, 16, 38, 2,141, 0, 0, 16, 6, 0, 68, 0, 0, 0, 0,255,255, 0,187, 0, 0, 4, 78,
+ 7,107, 16, 38, 11,187, 0, 0, 16, 6, 0, 40, 0, 0, 0, 0,255,255, 0,123,255,227, 4, 88, 6,102, 16, 38, 2,139, 14, 0,
+ 16, 6, 0, 72, 0, 0, 0, 0,255,255, 0,197, 0, 0, 4, 78, 7,109, 16, 38, 11,183, 0, 0, 16, 6, 0, 40, 0, 0, 0, 0,
+255,255, 0,123,255,227, 4, 88, 6, 72, 16, 38, 2,141, 14, 0, 16, 6, 0, 72, 0, 0, 0, 0,255,255, 0,187, 0, 0, 4, 6,
+ 7,107, 16, 38, 11,187, 0, 0, 16, 6, 0, 44, 0, 0, 0, 0,255,255, 0,178, 0, 0, 4, 68, 6,102, 16, 38, 2,139, 0, 0,
+ 16, 6, 0,243, 0, 0, 0, 0,255,255, 0,201, 0, 0, 4, 6, 7,109, 16, 38, 11,183, 0, 0, 16, 6, 0, 44, 0, 0, 0, 0,
+255,255, 0,178, 0, 0, 4, 68, 6, 72, 16, 38, 2,141, 0, 0, 16, 6, 0,243, 0, 0, 0, 0,255,255, 0,117,255,227, 4, 92,
+ 7,107, 16, 38, 11,187, 0, 0, 16, 6, 0, 50, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72, 6,102, 16, 38, 2,139, 0, 0,
+ 16, 6, 0, 82, 0, 0, 0, 0,255,255, 0,117,255,227, 4, 92, 7,109, 16, 38, 11,183, 0, 0, 16, 6, 0, 50, 0, 0, 0, 0,
+255,255, 0,137,255,227, 4, 72, 6, 72, 16, 38, 2,141, 0, 0, 16, 6, 0, 82, 0, 0, 0, 0,255,255, 0,137, 0, 0, 4,209,
+ 7,107, 16, 38, 11,187,206, 0, 16, 6, 0, 53, 0, 0, 0, 0,255,255, 1,104, 0, 0, 4,131, 6,102, 16, 39, 2,139, 0,150,
+ 0, 0, 16, 6, 0, 85, 0, 0,255,255, 0,143, 0, 0, 4,209, 7,109, 16, 38, 11,183,206, 0, 16, 6, 0, 53, 0, 0, 0, 0,
+255,255, 1,106, 0, 0, 4,131, 6, 72, 16, 39, 2,141, 0,150, 0, 0, 16, 6, 0, 85, 0, 0,255,255, 0,147,255,227, 4, 61,
+ 7,107, 16, 38, 11,187, 0, 0, 16, 6, 0, 56, 0, 0, 0, 0,255,255, 0,195,255,227, 4, 27, 6,102, 16, 38, 2,139, 0, 0,
+ 16, 6, 0, 88, 0, 0, 0, 0,255,255, 0,147,255,227, 4, 61, 7,109, 16, 38, 11,183, 0, 0, 16, 6, 0, 56, 0, 0, 0, 0,
+255,255, 0,195,255,227, 4, 27, 6, 72, 16, 38, 2,141, 0, 0, 16, 6, 0, 88, 0, 0, 0, 0,255,255, 0,139,253,226, 4, 74,
+ 5,240, 16, 38, 2,162, 0, 0, 16, 6, 0, 54, 0, 0, 0, 0,255,255, 0,213,253,226, 4, 6, 4,123, 16, 38, 2,162, 0, 0,
+ 16, 6, 0, 86, 0, 0, 0, 0,255,255, 0, 47,253,226, 4,162, 5,213, 16, 38, 2,162, 0, 0, 16, 6, 0, 55, 0, 0, 0, 0,
+255,255, 0,131,253,226, 4, 8, 5,158, 16, 38, 2,162, 89, 0, 16, 6, 0, 87, 0, 0, 0, 0,255,255, 0,137, 0, 0, 4, 72,
+ 7,109, 16, 39, 11,181, 0, 0, 1,117, 16, 6, 0, 43, 0, 0,255,255, 0,195, 0, 0, 4, 27, 7,109, 16, 39, 11,181, 0, 0,
+ 1,117, 16, 6, 0, 75, 0, 0, 0, 1, 0,147,254, 82, 4, 61, 5,242, 0, 19, 0, 0, 1, 17, 35, 17, 52, 38, 35, 34, 6, 21,
+ 17, 35, 17, 51, 21, 62, 1, 51, 50, 18, 4, 61,203,116,124,141,152,202,202, 54,184,126,187,185, 3,231,250,107, 5,159,180,169,
+218,203,252, 87, 5,213,198,111,116,254,251, 0, 0, 3, 0, 18,255,108, 4,159, 6, 20, 0, 6, 0, 40, 0, 49, 0, 0, 37, 22,
+ 55, 50, 55, 54, 34, 39, 20, 23, 54, 55, 54, 21, 16, 35, 34, 39, 6, 7, 35, 55, 38, 47, 1, 6, 7, 6, 39, 38, 39, 38, 17, 16,
+ 18, 51, 50, 22, 23, 17, 51, 0, 16, 22, 50, 54, 53, 52, 38, 34, 3,109, 12, 66,123, 3, 4,128,169, 13,114,104,164,250, 71, 48,
+ 30, 20,119, 68, 32, 38, 16, 28, 56, 77,100,163, 92, 93,187,161, 80,123, 35,184,253,153,108,212,111,111,212,144, 18, 1,155, 62,
+ 62,116, 35,244, 1, 2,218,254,199, 17, 79, 57,194, 13, 89, 37, 90, 53, 72, 1, 2,155,158, 1, 21, 1, 17, 1, 55, 87, 83, 2,
+ 67,252,241,254, 84,218,220,212,213,219, 0, 0, 0, 1, 0,156,254, 86, 4,146, 5,213, 0, 23, 0, 0, 19, 33, 21, 1, 33, 21,
+ 51, 21, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 61, 1, 33, 53, 1, 33,178, 3,201,252,244, 3, 34, 1, 89, 90,165,205,185, 90,
+ 45, 44,252,195, 2,247,253, 31, 5,213,154,251,111, 42,148,195,105,106,156, 62, 62,126, 20,154, 4,145, 0, 0, 0, 1, 0,203,
+254, 86, 4, 16, 4, 98, 0, 23, 0, 0, 19, 33, 21, 1, 33, 21, 35, 21, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 61, 1, 33, 53,
+ 1, 33,227, 3, 45,253,125, 2,131, 8, 89, 90,165,205,185, 90, 45, 44,253,124, 2,131,253,149, 4, 98,168,252,220,150, 20,195,
+105,106,156, 62, 62,126, 20,170, 3, 37, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 36,
+ 0, 0, 0, 0,255,255, 0,133,255,227, 4, 35, 6, 16, 16, 38, 2,131, 0, 0, 16, 6, 0, 68, 0, 0, 0, 0,255,255, 0,197,
+254,117, 4, 78, 5,213, 16, 38, 2,163, 50, 0, 16, 6, 0, 40, 0, 0, 0, 0,255,255, 0,123,254,117, 4, 88, 4,123, 16, 38,
+ 2,163, 50, 0, 16, 6, 0, 72, 0, 0, 0, 0,255,255, 0,117,255,227, 4, 92, 7,160, 16, 39, 11,176, 0, 0, 0,249, 16, 39,
+ 2, 98, 0, 0, 1,170, 16, 6, 0, 50, 0, 0,255,255, 0,137,255,227, 4, 72, 7, 50, 16, 39, 0,113, 0, 0, 1, 60, 16, 6,
+ 0,184, 0, 0,255,255, 0,117,255,227, 4, 92, 7,160, 16, 38, 0, 50, 0, 0, 16, 39, 11,178, 0, 0, 0,245, 16, 7, 2, 98,
+ 0, 0, 1,170,255,255, 0,137,255,227, 4, 72, 7, 50, 16, 39, 0,113, 0, 4, 1, 60, 16, 6, 0,183, 0, 0,255,255, 0,117,
+255,227, 4, 92, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 50, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72, 6, 16, 16, 38,
+ 2,131, 0, 0, 16, 6, 0, 82, 0, 0, 0, 0,255,255, 0,117,255,227, 4, 92, 7,160, 16, 39, 2, 98, 0, 0, 1,170, 16, 38,
+ 11,185, 0,132, 16, 6, 0, 50, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72, 7, 50, 16, 39, 0,113, 0, 0, 1, 60, 16, 6,
+ 1,218, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7, 48, 16, 38, 11,189, 0, 0, 16, 6, 0, 60, 0, 0, 0, 0,255,255, 0,104,
+254, 86, 4,129, 5,246, 16, 38, 2,128, 0, 0, 16, 6, 0, 92, 0, 0, 0, 0, 0, 2, 0,160,255,108, 4, 10, 6, 31, 0, 6,
+ 0, 29, 0, 0, 37, 22, 55, 50, 55, 54, 34, 3, 6, 7, 35, 55, 38, 39, 38, 53, 17, 33, 53, 33, 17, 20, 23, 54, 55, 54, 21, 16,
+ 35, 34, 2,216, 12, 66,123, 3, 4,128,144, 29, 20,119, 68, 19, 51, 39,254,217, 1,223, 13,114,104,164,250, 70,144, 18, 1,155,
+ 62,254,156, 79, 57,194, 5, 97, 74,184, 3,249,144,251,119,116, 35,244, 1, 2,218,254,199, 0, 0, 2, 0,106,255,108, 4,103,
+ 4,123, 0, 6, 0, 46, 0, 0, 37, 22, 55, 50, 55, 54, 34, 39, 20, 23, 54, 55, 54, 23, 20, 21, 16, 7, 34, 39, 6, 7, 35, 55,
+ 38, 39, 38, 61, 1, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51, 50, 23, 22, 17, 3, 52, 12, 66,123, 3, 4,128,185,
+ 22,122,103,159, 5,250, 71, 49, 29, 20,119, 68, 19, 51, 39, 53, 90, 73, 57,167,167, 33, 99, 63,133, 57, 56,144, 18, 1,155, 62,
+ 62,114, 46,252, 2, 2,206, 6, 6,254,200, 1, 17, 79, 57,194, 5, 97, 74,184,235,237,115,123,229,253,127, 4, 96, 96, 60, 63,
+105,101,254,220, 0, 2, 0,131,255,108, 4, 8, 5,158, 0, 6, 0, 35, 0, 0, 37, 22, 55, 50, 55, 54, 34, 39, 20, 23, 54, 55,
+ 54, 21, 16, 35, 34, 39, 6, 7, 35, 55, 38, 39, 38, 53, 17, 33, 53, 33, 17, 51, 17, 33, 21, 33, 2,191, 12, 66,123, 3, 4,128,
+169, 13,114,104,164,250, 71, 48, 30, 20,119, 68, 19, 51, 39,254,213, 1, 43,184, 1,162,254, 94,144, 18, 1,155, 62, 62,116, 35,
+244, 1, 2,218,254,199, 17, 79, 57,194, 5, 97, 74,184, 2, 59,143, 1, 62,254,194,143, 0, 0, 0, 1, 0,186,254, 86, 3, 16,
+ 4, 96, 0, 13, 0, 44, 64, 22, 5, 0, 1, 10,140, 8, 1,182, 3,194, 8,195, 14, 11, 8, 2, 9, 2, 4, 6, 0, 14, 16,212,
+236,196,196, 18, 57, 57, 49, 0, 16,228,244,238, 16,238, 17, 57, 57, 48, 5, 17, 33, 53, 33, 17, 20, 6, 43, 1, 53, 51, 50, 54,
+ 2, 88,254,195, 1,245,179,165,254,234, 90, 90, 20, 3,229,143,251,140,195,211,156,125, 0, 0, 0, 3, 0,120,255,227, 4, 89,
+ 6, 20, 0, 8, 0, 19, 0, 49, 0, 0, 18, 16, 22, 50, 54, 53, 52, 38, 34, 0, 16, 38, 35, 34, 6, 21, 20, 22, 51, 50, 3, 62,
+ 1, 51, 50, 18, 17, 16, 2, 35, 34, 38, 39, 21, 35, 53, 14, 1, 35, 34, 2, 17, 16, 18, 51, 50, 22, 23, 17, 51,237, 81,160, 83,
+ 83,160, 2,166, 81, 80, 81, 82, 82, 81, 80,243, 26, 93, 61,122,139,140,122, 60, 92, 27,111, 27, 92, 60,122,140,141,121, 60, 93,
+ 26,111, 3, 5,254, 84,218,220,212,213,219,253,122, 1,172,218,219,213,212,220, 3, 82, 82, 88,254,201,254,239,254,235,254,197,
+ 87, 83,141,141, 83, 87, 1, 59, 1, 21, 1, 17, 1, 55, 87, 83, 2, 67, 0, 0, 0, 3, 0,120,254, 74, 4, 89, 4,123, 0, 8,
+ 0, 19, 0, 49, 0, 0, 0, 16, 38, 34, 6, 21, 20, 22, 50, 0, 16, 22, 51, 50, 54, 53, 52, 38, 35, 34, 19, 14, 1, 35, 34, 2,
+ 17, 16, 18, 51, 50, 22, 23, 53, 51, 21, 62, 1, 51, 50, 18, 17, 16, 2, 35, 34, 38, 39, 17, 35, 3,228, 81,160, 83, 83,160,253,
+ 90, 81, 80, 80, 83, 83, 80, 80,243, 26, 93, 61,121,140,140,122, 60, 92, 27,111, 27, 92, 60,122,140,141,121, 61, 92, 26,111, 1,
+ 89, 1,172,218,220,212,213,219, 2,134,254, 84,218,219,213,212,220,252,174, 82, 88, 1, 55, 1, 17, 1, 21, 1, 59, 87, 83,141,
+141, 83, 87,254,197,254,235,254,239,254,201, 87, 83,253,189, 0, 0, 3, 0, 8,255,186, 4,176, 6, 23, 0, 15, 0, 18, 0, 21,
+ 0, 0, 1, 51, 19, 1, 23, 9, 1, 35, 3, 33, 15, 1, 35, 7, 39, 55, 1, 33, 3, 39, 11, 1, 1,238,245, 96, 1, 9,100,254,
+193, 1, 59,209,110,254, 67,130, 56, 86, 49,103, 52, 1,230, 1, 27, 81, 43, 89,207, 5,213,254,199, 1,123, 74,254, 56,251,251,
+ 1,133,186,203, 70, 70, 74, 1,221, 1, 33,155, 1, 64,253, 25, 0, 2, 0, 8,255,186, 4,176, 6, 23, 0, 8, 0, 41, 0, 0,
+ 9, 1, 39, 38, 35, 34, 2, 17, 20, 1, 14, 1, 35, 32, 47, 1, 7, 39, 19, 38, 17, 16, 0, 33, 50, 23, 22, 23, 55, 23, 7, 21,
+ 38, 39, 1, 22, 23, 22, 51, 50, 54, 55, 1,112, 2, 52, 18, 85, 86,197,196, 2,211, 77,162, 91,254,225,158, 9,178,103,212, 81,
+ 1, 63, 1, 29, 91, 81, 59, 56, 70,100,127, 16, 17,253,139, 16, 21, 98,197, 88,169, 73, 2, 2, 3, 36, 6, 32,254,208,254,205,
+126,253,202, 41, 41,203, 11,255, 70, 1, 47,179, 1, 7, 1,110, 1,153, 20, 15, 26,100, 74,181, 73, 13, 12,252,126, 39, 32,152,
+ 64, 61, 0, 0, 0, 2, 0, 47,255,160, 4,150, 4,188, 0, 7, 0, 40, 0, 0, 9, 1, 38, 35, 34, 6, 21, 20, 1, 14, 1, 35,
+ 32, 47, 1, 7, 39, 19, 38, 53, 16, 0, 33, 50, 23, 22, 23, 55, 23, 7, 21, 38, 39, 1, 22, 23, 22, 51, 50, 54, 55, 1,149, 1,
+220, 62, 71,173,186, 2,160, 74,157, 82,254,252,146, 8,195, 92,216, 68, 1, 37, 1, 4, 81, 77, 40, 40, 95, 93,113, 34, 33,253,
+228, 13, 15, 94,172, 96,152, 65, 1,150, 2, 55, 18,224,208, 83,254, 93, 43, 43,156, 9,232, 76, 1, 2,132,189, 1, 20, 1, 56,
+ 21, 11, 17,114, 77,134,133, 30, 22,253,127, 21, 18,113, 59, 62, 0, 1, 0, 21, 0, 0, 4,188, 5,213, 0, 13, 0, 0, 1, 51,
+ 17, 33, 21, 33, 17, 33, 21, 33, 17, 33, 53, 33, 1, 32,203, 1, 7,254,249, 2,209,252,100,254,245, 1, 11, 5,213,253, 22,170,
+254,105,170, 2, 65,170, 0, 0, 0, 2, 0, 33,255,186, 4,201, 6, 23, 0, 2, 0, 18, 0, 0, 1, 19, 35, 3, 17, 33, 53, 33,
+ 55, 23, 7, 21, 35, 1, 17, 35, 17, 1, 39, 2,205,243,243,203,254, 45, 4, 8, 46,100, 39, 74,254,117,203,254,134,103, 3,208,
+ 1, 91,253,132, 2,124,170, 66, 74, 56,106,253,205,253, 8, 1,214,253,228, 70, 0, 1, 0,213,254, 16, 4, 25, 4,123, 0, 53,
+ 0, 0, 1, 21, 46, 1, 35, 34, 6, 21, 20, 22, 31, 1, 30, 1, 21, 20, 7, 6, 7, 31, 1, 22, 51, 21, 35, 34, 39, 38, 47, 1,
+ 38, 47, 1, 53, 54, 23, 22, 51, 50, 54, 53, 52, 47, 2, 38, 39, 38, 53, 52, 54, 51, 50, 22, 3,205, 79,160, 83,125,123, 92,183,
+ 74,137,141,118,104,176,152,147, 42, 76, 39, 84,114, 71, 89,237, 51,101, 50,123,122, 68, 62,122,134,245, 8, 69,161, 71, 73,218,
+202, 90,166, 4, 57,180, 46, 46, 81, 83, 75, 74, 35, 14, 26,156,125,166, 94, 82, 10,152,126, 36,154, 61, 38, 91,243, 53, 35, 16,
+190, 5, 96, 15, 99, 89,128, 49, 2, 14, 33, 71, 74,127,161,175, 33, 0, 0, 0, 0, 1, 0,203,254, 16, 4, 16, 4, 98, 0, 23,
+ 0, 0, 19, 33, 21, 1, 22, 23, 1, 23, 22, 59, 1, 21, 35, 34, 39, 38, 47, 1, 38, 35, 61, 1, 1, 33,227, 3, 45,253,106, 49,
+ 32, 1, 8,147, 42, 76, 52, 91, 84,114, 71, 89,237, 61, 90, 2,131,253,149, 4, 98,168,252,203, 17, 32,254,248,126, 36,154, 61,
+ 38, 91,243, 63,156, 14, 3, 37, 0, 1, 0, 55, 0, 0, 4,154, 5,213, 0, 26, 0, 0, 1, 34, 7, 6, 29, 1, 35, 53, 52, 54,
+ 51, 33, 50, 4, 21, 20, 4, 35, 17, 35, 17, 51, 50, 54, 16, 38, 35, 1,118, 54, 60, 48,156,192,126, 1, 39,250, 1, 2,254,255,
+251,202,202,140,157,156,141, 5, 47, 47, 38,114, 49, 70,181,163,227,219,221,226,253,168, 2,254,148, 1, 10,147, 0, 1, 0, 57,
+ 0, 0, 4,152, 5,213, 0, 6, 0, 0, 9, 1, 35, 1, 51, 1, 35, 2,105,254,161,209, 1,181,245, 1,181,209, 5, 43,250,213,
+ 5,213,250, 43, 0, 2, 0,154,255,227, 4, 56, 4,123, 0, 11, 0, 41, 0, 0, 1, 51, 50, 54, 53, 52, 38, 35, 34, 6, 29, 1,
+ 7, 17, 51, 21, 62, 1, 51, 50, 22, 21, 20, 6, 43, 1, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 39, 46, 1, 1,254,
+ 62,160,164,122,108,152,176,184,184, 60,178,128,172,204,252,242,248,136,146, 94,192, 92,102,188, 88,138,198, 60, 38, 32, 2, 43,
+113,112,101,112,211,186, 41, 76, 2,127,166,100, 95,193,162,187,194, 29,134,121, 54, 52,184, 39, 39, 82, 82, 50,147, 0, 0, 0,
+ 0, 2, 0,123,255,227, 4, 18, 4,123, 0, 16, 0, 28, 0, 48, 64, 26, 5, 0, 20, 26,140, 14, 20,140, 8,153, 14,190, 1,194,
+ 3, 23, 4, 0, 6, 2, 71, 17, 18, 11, 72, 29, 16,244,236,252,236, 50, 50, 49, 0, 47,236,228,244,236, 16,238, 17, 57, 57, 48,
+ 1, 53, 51, 17, 35, 53, 14, 1, 35, 34, 2, 17, 16, 18, 51, 50, 22, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 3, 90,184,
+184, 46,153,100,203,233,234,202,101,154,254, 15,136,133,133,139,139,133,133,136, 3,209,141,251,162,141, 83, 87, 1, 59, 1, 21,
+ 1, 17, 1, 55, 87,254, 11,214,218,220,212,213,219,218, 0, 0, 0, 2, 0,192,255,225, 4, 87, 4,121, 0, 11, 0, 28, 0, 48,
+ 64, 26, 24, 12, 9, 3,140, 15, 9,140, 21,153, 15,190, 27,194, 25, 0, 18, 18, 71, 24, 12, 6, 6, 26, 70, 29, 16,244,236, 50,
+ 50,252,236, 49, 0, 47,236,228,244,236, 16,238, 17, 57, 57, 48, 1, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 62, 1, 51,
+ 50, 18, 17, 16, 2, 35, 34, 38, 39, 21, 35, 17, 51, 3,149,136,133,133,139,139,133,133,136,253,227, 46,153,100,203,233,234,202,
+101,154, 44,184,184, 2, 45,214,218,220,212,213,219,218, 2,120, 83, 87,254,197,254,235,254,239,254,201, 87, 83,139, 4, 94, 0,
+ 0, 2, 0,193,255,227, 4, 88, 6, 20, 0, 11, 0, 36, 0, 57, 64, 31, 3,140, 12, 15, 9,140, 24, 21,153, 15,190, 25, 33,140,
+ 30,155, 25, 0, 18, 18, 71, 30, 33, 31, 24, 12, 6, 6, 26, 70, 37, 16,252,236, 50, 50,196, 57, 57,244,236, 49, 0, 47,252,236,
+ 16,228,244,196,236, 16,198,238, 48, 1, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 62, 1, 51, 50, 18, 17, 16, 2, 35, 34,
+ 38, 39, 21, 35, 17, 52, 54, 59, 1, 21, 35, 34, 6, 21, 3,150,136,133,134,138,138,134,133,136,253,227, 44,155,102,202,232,233,
+203,100,153, 46,184,179,165,204,184, 90, 90, 2, 47,214,218,219,213,212,220,218, 2,120, 82, 88,254,201,254,239,254,235,254,197,
+ 87, 83,141, 4,126,195,211,156,125,125, 0, 0, 0, 1, 0,184,255,227, 4, 26, 4,123, 0, 25, 0, 48, 64, 6, 19, 18, 6, 0,
+ 12, 26, 16,220, 60,212,236, 49, 0, 64, 19, 0,139, 25,192, 22, 12,139, 13,192, 16,140, 9, 22,140, 3,190, 9,153, 26, 16,228,
+244,236, 16,254,244,238, 16,245,238, 48, 19, 62, 1, 51, 32, 0, 17, 16, 0, 33, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 38,
+ 35, 34, 6, 7,184, 74,156, 82, 1, 4, 1, 38,254,218,254,252, 80,154, 78, 72,148, 92,174,186,188,172, 96,152, 64, 4, 37, 43,
+ 43,254,200,254,236,254,236,254,200, 42, 44,193, 65, 58,224,208,207,225, 59, 62, 0, 2, 0,195,255,115, 4, 58, 4,123, 0, 33,
+ 0, 41, 0, 0, 5, 52, 55, 38, 39, 38, 17, 16, 0, 33, 50, 22, 23, 21, 46, 1, 35, 34, 6, 21, 20, 23, 22, 23, 54, 51, 32, 21,
+ 20, 33, 34, 39, 6, 21, 19, 22, 51, 50, 53, 52, 35, 34, 1,180, 13, 57, 48,149, 1, 37, 1, 4, 81,154, 78, 73,147, 93,173,186,
+ 99, 7, 6, 85,195, 1, 45,254,178, 82, 71, 6, 43, 60, 74,146,132,101,141,104, 81, 35, 51,161, 1, 12, 1, 20, 1, 56, 42, 44,
+193, 65, 58,224,208,220, 99, 7, 7,176,246,189, 17, 57, 68, 1, 31, 19, 57, 75, 0, 2, 0,123,254, 86, 4, 56, 6, 20, 0, 8,
+ 0, 36, 0, 0, 0, 16, 22, 50, 54, 53, 52, 38, 34, 5, 17, 51, 17, 20, 23, 22, 59, 1, 21, 35, 34, 39, 38, 61, 1, 6, 7, 6,
+ 35, 34, 2, 17, 16, 18, 51, 50, 22, 1, 60,109,213,112,112,213, 1, 69,181, 35, 36, 72, 6, 56,132, 72, 71, 37, 61, 61, 80,180,
+207,208,179, 81,123, 3, 5,254, 84,218,220,212,213,219, 14, 2, 67,249,216,126, 62, 62,156,106,105,195,161, 83, 44, 43, 1, 59,
+ 1, 21, 1, 17, 1, 55, 87, 0, 0, 2, 0,123,255,227, 4, 55, 6, 20, 0, 10, 0, 38, 0, 0, 0, 16, 22, 51, 50, 54, 53, 52,
+ 38, 35, 34, 37, 53, 52, 55, 54, 59, 1, 21, 35, 34, 7, 6, 21, 17, 35, 53, 14, 1, 35, 34, 2, 17, 16, 18, 51, 50, 22, 23, 1,
+ 59,109,106,107,111,111,107,106, 1, 68, 71, 72,132, 56, 5, 72, 36, 35,183, 36,123, 80,180,206,207,179, 81,123, 35, 3, 5,254,
+ 84,218,220,212,213,219, 11,148,195,105,106,156, 62, 62,126,251,130,141, 83, 87, 1, 59, 1, 21, 1, 17, 1, 55, 87, 83, 0, 0,
+ 0, 2, 0,122,255,227, 4, 87, 4,123, 0, 21, 0, 28, 0, 0, 19, 52, 18, 51, 50, 0, 17, 16, 0, 33, 34, 38, 39, 53, 30, 1,
+ 51, 50, 54, 61, 1, 33, 55, 33, 46, 1, 35, 34, 6,122,247,214,240, 1, 32,254,218,254,251, 91,195,105,109,192, 88,174,191,252,
+227,184, 2, 94, 16,172,133,136,149, 2, 94,251, 1, 34,254,192,254,244,254,237,254,199, 43, 43,183, 57, 56,200,183, 6,143,156,
+176,170, 0, 0, 0, 2, 0,122,255,227, 4, 87, 4,123, 0, 21, 0, 28, 0, 63, 64, 12, 3, 2, 28, 18, 16, 73, 9, 22, 6, 0,
+ 72, 29, 16,244,236,196,244,236, 57, 57, 49, 0, 64, 22, 0, 22, 3, 1, 10,139, 9,141, 6,140, 13,190, 29, 22,182, 1,193, 25,
+140, 19,153, 29, 16,244,236,244,238, 16,244,244,244,238, 18, 57, 17, 57, 48, 19, 53, 33, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1,
+ 51, 32, 0, 17, 16, 0, 35, 34, 2, 55, 20, 22, 51, 50, 54, 55,122, 3, 29,191,174, 88,192,109,105,195, 91, 1, 5, 1, 38,254,
+224,240,214,247,184,149,136,133,172, 16, 2, 0, 90, 6,183,200, 56, 57,183, 43, 43,254,199,254,237,254,244,254,192, 1, 34,198,
+162,170,176,156, 0, 2, 0, 30,255,227, 4,179, 4,123, 0, 9, 0, 41, 0, 0, 37, 54, 53, 52, 39, 1, 22, 23, 22, 50, 3, 50,
+ 23, 55, 51, 21, 20, 22, 59, 1, 21, 35, 34, 38, 53, 7, 22, 21, 16, 2, 32, 39, 38, 39, 1, 38, 39, 38, 32, 7, 53, 54, 2, 66,
+ 76, 7,254, 43, 23, 25, 62,231,151,252,119,154,140, 57, 80, 33, 49,132,129,106, 23,226,254,148, 99, 71, 20, 2, 70, 15, 20, 58,
+254,194,147,154,214,138,207, 62, 56,254,156, 69, 35, 90, 3,252,232,117,148,153, 97,156,186,200, 81, 96,118,254,237,254,189,145,
+103,156, 1,187, 40, 34, 99,104,174, 86, 0, 0, 0, 1, 0,169,255,234, 4, 40, 4,123, 0, 48, 0, 57, 64, 31, 11,140, 12, 16,
+140, 7,190, 50, 27,182, 23, 50, 38,140, 37, 33,140, 42,153, 50, 24, 11, 38, 19, 18, 4, 29, 18, 46, 70, 49, 16,252,236,212,236,
+212,196,196, 49, 0, 16,244,236,212,236, 16,212,236, 16,244,236,212,236, 48, 1, 38, 39, 38, 53, 52, 54, 51, 50, 23, 22, 23, 21,
+ 38, 39, 38, 35, 34, 6, 21, 20, 23, 22, 59, 1, 21, 35, 34, 6, 21, 20, 23, 22, 51, 50, 55, 54, 55, 21, 6, 7, 6, 35, 34, 39,
+ 38, 53, 52, 54, 1,193,119, 65, 64,244,209, 81, 91, 92,105,104, 87, 86, 76,138,148, 72, 72,135,166,159,150,168, 90, 91,173, 99,
+ 91, 91, 77, 97, 90, 91, 86,254,139,138,148, 2, 95, 25, 65, 64, 94,134,158, 12, 12, 24,167, 27, 13, 12, 86, 74, 61, 43, 44,144,
+110, 81, 98, 53, 52, 18, 17, 34,173, 28, 14, 14, 91, 92,166,109,148, 0, 0, 0, 0, 1, 0,169,255,234, 4, 40, 4,123, 0, 40,
+ 0, 60, 64, 33, 32,139, 31,192, 28,140, 35,190, 41, 0, 20,182, 21, 41, 9,139, 10,192, 13,140, 6,153, 41, 25, 18, 38, 16, 18,
+ 3, 21, 32, 10, 41, 16,220,196,196,212,236,212,236, 49, 0, 16,244,252,252,236, 16,212,236, 57, 16,244,252,253,238, 48, 1, 30,
+ 1, 21, 20, 4, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 38, 43, 1, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 53, 62,
+ 1, 51, 50, 22, 21, 20, 6, 3, 15,132,149,254,235,255, 85,182, 96, 76,182,100,173,181,169,150,158,165,136,144,149,138, 75,173,
+104,105,183, 80,210,244,130, 2, 95, 23,148,109,166,183, 28, 28,173, 34, 35,105, 98, 81,110,144, 87, 61, 74, 86, 25, 27,167, 24,
+ 24,158,134, 94,129, 0, 0, 0, 0, 1, 0, 56,255,234, 4,153, 4,123, 0, 66, 0, 0, 1, 22, 23, 22, 21, 20, 7, 6, 35, 34,
+ 38, 39, 53, 22, 23, 22, 51, 50, 55, 54, 53, 52, 39, 38, 43, 1, 53, 51, 50, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 7, 53, 54,
+ 55, 54, 51, 50, 23, 22, 23, 55, 51, 21, 20, 23, 22, 59, 1, 21, 35, 34, 39, 38, 53, 7, 53, 7, 6, 2, 5, 99, 56, 56,104,104,
+191, 64,136, 72, 57, 68, 68, 75,130, 67, 69, 64, 63,113,118,124,102, 54, 54, 56, 56,104, 56, 65, 65, 78, 79, 68, 69, 60,158, 91,
+ 75, 14,169,138, 29, 28, 79, 32, 48,131, 65, 61,211, 5, 49, 2, 95, 23, 74, 74,109,166, 92, 91, 28, 28,173, 34, 17, 18, 52, 53,
+ 98, 81, 55, 55,144, 44, 43, 61, 74, 43, 43, 12, 13, 27,167, 24, 12, 12, 79, 65,102,131,148,153, 49, 48,156, 96, 90,200,162, 1,
+ 6, 65, 0, 0, 0, 2, 0,176,255,213, 4, 34, 4,121, 0, 20, 0, 40, 0, 0, 1, 32, 17, 16, 33, 50, 55, 54, 53, 52, 39, 38,
+ 43, 1, 53, 51, 50, 55, 54, 52, 38, 37, 54, 51, 50, 22, 21, 20, 6, 7, 30, 1, 21, 20, 6, 35, 34, 39, 36, 17, 16, 2,158,254,
+173, 1, 83,118, 60, 59, 59, 33,139,136,136,139, 33, 59,121,254,177, 85,161,160,201,107, 98, 98,107,203,160,159, 85,254,237, 3,
+216,254, 94,254, 65, 59, 59, 76, 76, 54, 30,157, 30, 55,154,115,115, 46,173,148,103,142, 27, 28,142,103,148,174, 61,194, 1, 88,
+ 1,138, 0, 0, 0, 1, 0,186,254, 86, 4,113, 4, 94, 0, 21, 0, 0, 1, 21, 33, 17, 20, 6, 43, 1, 53, 51, 50, 54, 53, 17,
+ 33, 53, 33, 17, 33, 53, 33, 17, 4,113,254,159,179,165,254,234, 90, 90,254,129, 1,127,254,195, 1,245, 2,104,164,254, 40,195,
+211,156,125,125, 1,216,164, 1,103,143,254, 10, 0, 2, 0,123,254, 72, 4, 52, 6, 20, 0, 38, 0, 48, 0, 0, 1, 53, 52, 55,
+ 54, 59, 1, 21, 35, 34, 7, 6, 21, 17, 20, 7, 6, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 61, 2, 14, 1, 35, 34, 2, 17, 52,
+ 18, 51, 19, 17, 35, 34, 6, 16, 22, 51, 50, 54, 2,237, 72, 72,134, 49, 26, 58, 29, 28,104,104,206, 62,134, 67, 79,130, 54,120,
+110, 35,123, 88,174,208,208,174,247,214,109,115,115,110,103,110, 4, 94, 32,195,105,106,156, 62, 62,126,251,202,251,131,130, 28,
+ 27,182, 46, 44,162,176, 8,125, 94, 92, 1, 58, 1, 7,233, 1, 60,253,219, 1,167,216,254, 98,217,218, 0, 0, 0, 2, 0,157,
+254, 72, 4, 52, 4, 94, 0, 9, 0, 36, 0, 0, 1, 17, 33, 34, 6, 16, 22, 51, 50, 54, 19, 20, 2, 35, 34, 38, 39, 53, 30, 1,
+ 51, 50, 54, 61, 2, 14, 1, 35, 34, 2, 17, 52, 55, 54, 51, 33, 3,124,254,248,135,142,143,136,127,135,184,238,231, 76,166, 83,
+ 98,160, 67,149,136, 44,152,109,196,234,117,113,200, 1,233, 2, 57, 1,167,216,254, 98,217,218,254,221,252,254,252, 28, 27,182,
+ 46, 44,162,176, 8,125, 94, 92, 1, 58, 1, 7,225,165,159, 0, 0, 1, 0,122, 0, 0, 4, 88, 4,152, 0, 32, 0, 0, 37, 17,
+ 35, 53, 33, 17, 6, 7, 6, 35, 34, 0, 17, 16, 0, 33, 50, 23, 22, 23, 21, 38, 39, 38, 35, 34, 7, 6, 16, 23, 22, 51, 50, 3,
+178,156, 1, 66, 72, 88, 78,202,252,254,214, 1, 44, 1, 6, 62,104,104,128,120,112, 86, 72,178,100, 98, 98,100,178,174,178, 1,
+ 26,140,253,240, 34, 20, 18, 1, 62, 1, 14, 1, 18, 1, 58, 18, 17, 75,172, 77, 27, 22,114,113,254,102,113,114, 0, 2, 0,102,
+254, 81, 4,107, 4, 94, 0, 18, 0, 27, 0, 0, 1, 0, 17, 20, 14, 2, 34, 46, 2, 53, 16, 9, 1, 51, 9, 1, 51, 0, 50, 54,
+ 53, 16, 3, 2, 17, 20, 2,226, 1, 28, 43, 93,159,220,158, 94, 43, 1, 32,254,114,218, 1, 46, 1, 36,216,253,135,227, 97,203,
+219, 2, 60,254, 84,254,179, 56, 86, 65, 34, 34, 65, 86, 56, 1, 84, 1,172, 2, 27,254,114, 1,142,250,150, 76, 69, 1, 34, 1,
+ 29,254,208,254,241, 69, 0, 0, 0, 2, 0,102, 0, 0, 4,106, 4, 94, 0, 12, 0, 20, 0, 0, 1, 22, 16, 33, 32, 53, 52, 55,
+ 1, 51, 9, 1, 51, 1, 6, 21, 20, 51, 50, 53, 52, 2,214,178,254,227,254,209,184,254,114,218, 1, 40, 1, 42,216,253,246,117,
+123,113, 2, 63,241,254,178,167,177,242, 2, 20,254,115, 1,141,253, 90,158, 59,104,104, 63, 0, 0, 1, 0,188,254, 82, 4, 21,
+ 4, 94, 0, 19, 0, 0, 19, 17, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 35, 17, 14, 1, 35, 34, 38,188,184,108,112,130,138,
+184,184, 50,168,114,172,168, 1,168, 2,182,253, 74,151,142,183,171, 2,121,249,244, 2, 86, 97,100,225, 0, 0, 0, 1, 0,195,
+ 0, 0, 4, 27, 6, 20, 0, 30, 0, 0, 1, 7, 62, 1, 51, 50, 22, 21, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 53, 52,
+ 55, 54, 59, 1, 21, 35, 34, 6, 21, 1,125, 2, 50,168,114,172,168,184,106,114,128,140,184, 90, 90,164,206,186, 90, 88, 3,194,
+ 10, 96, 99,225,228,253, 74, 2,182,151,142,183,171,253,135, 3,234,148,195,105,106,156,124,126, 0, 1, 0,195,254, 86, 4, 27,
+ 6, 20, 0, 40, 0, 0, 1, 7, 62, 1, 51, 50, 22, 21, 17, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 53, 17, 52, 38, 35, 34, 6,
+ 21, 17, 35, 17, 53, 52, 55, 54, 59, 1, 21, 35, 34, 6, 21, 1,125, 2, 49,169,114,171,169, 88, 91,165,204,184, 91, 45, 44,106,
+114,128,140,184, 90, 90,164,206,186, 90, 88, 3,194, 10, 96, 99,225,228,253, 54,195,105,106,156, 62, 62,126, 2,202,151,142,183,
+171,253,135, 3,234,148,195,105,106,156,124,126, 0, 2, 0,142, 0, 0, 4, 50, 6, 20, 0, 3, 0, 21, 0, 0, 1, 51, 21, 35,
+ 5, 33, 17, 33, 21, 33, 17, 33, 21, 33, 53, 33, 17, 33, 53, 33, 17, 33, 2, 12,184,184,254,226, 1,214, 1, 98,254,158, 1,110,
+252,110, 1,108,254,130, 1,126,254,226, 6, 20,233,205,254, 10,164,254,203,143,143, 1, 53,164, 1,105, 0, 0, 0, 1, 0,198,
+ 0, 0, 4, 10, 4, 94, 0, 14, 0, 0, 33, 35, 34, 39, 38, 53, 17, 33, 53, 33, 17, 20, 22, 59, 1, 4, 10,204,166, 90, 88,254,
+224, 1,216, 88, 90,186,106,102,198, 2, 59,141,253, 56,126,124, 0, 1, 0,160, 0, 0, 4, 50, 4, 94, 0, 11, 0, 0, 19, 33,
+ 21, 33, 17, 33, 21, 33, 53, 33, 17, 33,160, 3,146,254,146, 1,110,252,110, 1,108,254,148, 4, 94,141,252,190,143,143, 3, 66,
+ 0, 1, 0, 88, 0, 0, 4,121, 6, 31, 0, 38, 0, 0, 1, 20, 23, 22, 59, 1, 21, 35, 34, 38, 61, 1, 38, 35, 34, 6, 7, 53,
+ 62, 1, 51, 50, 23, 17, 33, 53, 33, 17, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 39, 2,146, 46, 72, 62,216,234,164,182, 46, 47,
+ 79,141, 73, 78,146, 83, 41, 38,254,218, 1,222,114, 92, 70,137, 74, 75,143, 79, 85,105, 1,150,147, 40, 63,156,212,194,198, 10,
+ 59, 63,174, 60, 54, 6, 2,137,144,252,167, 53, 61, 62,174, 59, 55, 45, 0, 0, 0, 2, 0,157, 0, 0, 4, 52, 6, 31, 0, 25,
+ 0, 32, 0, 0, 1, 20, 22, 59, 1, 21, 35, 34, 38, 61, 1, 35, 32, 53, 52, 51, 50, 23, 17, 33, 53, 33, 17, 51, 21, 35, 39, 38,
+ 35, 34, 21, 20, 51, 2,170, 91, 89,214,232,165,181, 62,254,233,246, 53, 42,254,217, 1,223,250,250,184, 23, 71, 78, 92, 1,150,
+124,126,156,212,194,220,189,246, 25, 1,131,144,252,243,160,160,132, 75, 57, 0, 0, 1, 0,160,254, 86, 4, 10, 6, 31, 0, 13,
+ 0, 0, 5, 20, 22, 59, 1, 21, 35, 34, 38, 53, 17, 33, 53, 33, 2,127, 91, 89,215,233,165,181,254,217, 1,223, 20,124,126,156,
+212,194, 5,163,144, 0, 0, 0, 0, 1, 0, 40,254, 76, 4,168, 6, 31, 0, 45, 0, 0, 1, 20, 22, 59, 1, 21, 35, 34, 38, 53,
+ 17, 35, 53, 33, 17, 33, 21, 1, 50, 23, 22, 23, 22, 21, 20, 6, 35, 34, 39, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 39, 38, 43,
+ 1, 53, 1, 33, 1,168, 72, 72,172,187,132,145,236, 1,128, 2,186,254,183, 84,103, 79, 69, 64,243,224, 75, 79, 80, 85, 67,160,
+ 87,152,160, 74, 74,132,140, 1, 88,253,236, 1,150,124,126,156,212,194, 3,249,144,254, 65,168,254, 36, 56, 43,108,104,138,221,
+242, 18, 19, 37,195, 49, 50,150,143,132, 75, 74,166, 1,243, 0, 0, 1, 0,104, 0, 0, 4,106, 4,123, 0, 33, 0, 0, 37, 14,
+ 1, 35, 34, 38, 25, 1, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 20, 22, 50, 54, 53, 17, 51, 17, 35, 53, 14, 1, 35, 34, 38,
+ 2, 50, 34,104, 74,136,110,168, 52, 70, 80, 60,168, 56,148, 56,168,168, 32,100, 62, 76,102,141, 72, 69,209, 1, 33, 2,137,253,
+127,237,115,123,229, 2,129,253,127,240,112,123,229, 2,129,251,160, 96, 60, 63, 70, 0, 0, 0, 0, 1, 0,104,254, 82, 4,106,
+ 4,123, 0, 33, 0, 0, 37, 14, 1, 35, 34, 38, 25, 1, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 20, 22, 50, 54, 53, 17, 51,
+ 17, 35, 17, 14, 1, 35, 34, 38, 2, 50, 34,104, 74,136,110,168, 52, 70, 80, 60,168, 56,148, 56,168,168, 32,100, 62, 76,102,141,
+ 72, 69,209, 1, 33, 2,137,253,127,237,115,123,229, 2,129,253,127,240,112,123,229, 2,129,249,215, 2, 41, 60, 63, 70, 0, 0,
+ 0, 1, 0,103,254, 86, 4,105, 4,123, 0, 43, 0, 0, 1, 62, 1, 51, 50, 22, 25, 1, 20, 6, 43, 1, 53, 51, 50, 54, 53, 17,
+ 52, 38, 35, 34, 6, 21, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51, 50, 23, 22, 2,158, 34,105, 74,135,
+111,161,150,186,168, 83, 78, 53, 70, 80, 59,168, 57, 74, 73, 57,167,167, 33, 99, 63, 83, 44, 53, 3,238, 72, 69,209,254,223,253,
+ 99,194,212,156,124,126, 2,149,237,115,123,229,253,127, 2,129,240,112,123,229,253,127, 4, 94, 94, 64, 59, 35, 43, 0, 0, 0,
+ 0, 1, 0,178,254, 86, 4, 77, 4,123, 0, 31, 0, 0, 5, 20, 6, 43, 1, 53, 51, 50, 55, 54, 53, 17, 51, 21, 54, 55, 54, 51,
+ 50, 23, 22, 21, 17, 35, 17, 52, 38, 35, 34, 7, 6, 21, 1,234,123,136, 53, 2, 68, 28, 28,186, 49, 68, 67, 87,168, 86, 86,185,
+ 92, 94,111, 65, 64, 20,214,192,156, 48, 49,153, 4,114,172,101, 50, 50,119,120,232,253, 92, 2,158,159,158, 95, 95,164, 0, 0,
+ 0, 1, 0,136,254, 86, 4, 30, 4,123, 0, 32, 0, 0, 5, 17, 52, 39, 38, 35, 34, 7, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51,
+ 50, 23, 22, 21, 17, 20, 23, 22, 59, 1, 21, 35, 34, 39, 38, 2,232, 46, 47, 93,112, 64, 65,181,181, 50,134, 88,168, 86, 86, 29,
+ 29, 63, 4, 52,136, 60, 62, 20, 2,178,159, 79, 79, 95, 95,164,253,135, 4, 94,172,101,100,119,120,232,253, 72,153, 49, 48,156,
+ 96, 96, 0, 0, 0, 1, 0,144, 0, 0, 4, 65, 4,123, 0, 9, 0, 0, 19, 33, 1, 17, 51, 17, 33, 1, 17, 35,144, 1, 16, 1,
+221,196,254,240,254, 35,196, 4,123,252,121, 3,135,251,133, 3,135,252,121, 0, 0, 3, 0,137,255,227, 4, 72, 4,123, 0, 10,
+ 0, 19, 0, 28, 0, 0, 0, 32, 18, 17, 16, 2, 35, 34, 2, 17, 16, 37, 34, 7, 6, 7, 33, 38, 39, 38, 19, 33, 22, 23, 22, 51,
+ 50, 55, 54, 1,127, 1,210,247,246,234,233,246, 1,223,140, 72, 63, 8, 2, 55, 8, 63, 72,138,253,211, 14, 52, 72,140,141, 72,
+ 52, 4,123,254,210,254,226,254,225,254,211, 1, 45, 1, 31, 1, 30,146,109, 95,176,176, 95,109,253,224,132, 79,109,109, 79, 0,
+ 0, 2, 0, 69, 0, 0, 4,140, 4, 96, 0, 18, 0, 29, 0, 0, 1, 21, 33, 17, 33, 21, 33, 17, 33, 21, 33, 34, 39, 38, 17, 16,
+ 55, 54, 51, 23, 35, 34, 7, 6, 21, 20, 23, 22, 59, 1, 4,129,254,139, 1,100,254,156, 1,128,253,168,243,126,126,126,126,243,
+ 32, 23,151, 75, 75, 75, 75,151, 23, 4, 96,170,254,237,155,254,164,172,142,143, 1, 20, 1, 18,142,143,147,104,103,207,208,104,
+105, 0, 0, 0, 0, 2, 0,170,255,226, 4, 38, 4,123, 0, 22, 0, 46, 0, 0, 1, 52, 39, 38, 35, 34, 7, 6, 21, 16, 51, 50,
+ 55, 54, 61, 1, 51, 21, 20, 23, 22, 51, 50, 19, 20, 7, 6, 35, 34, 39, 38, 39, 6, 7, 6, 35, 34, 39, 38, 53, 16, 55, 18, 33,
+ 50, 23, 22, 3,128, 57, 80,145,131, 72, 74,124, 34, 41, 22,117, 23, 41, 32,125,166, 48, 55,137, 95, 67, 27, 16, 16, 27, 67, 95,
+118, 68, 56, 64,106, 1, 21,235,120, 90, 1,254,156,113,161,111,115,231,254,200, 79, 43,185,182,182,185, 43, 79, 1, 8,171,136,
+158,122, 50,101,101, 50,122,154,124,183, 0,255,173, 1, 32,237,176, 0, 0, 0, 0, 3, 0,137,254, 86, 4, 72, 6, 19, 0, 29,
+ 0, 38, 0, 47, 0, 0, 1, 35, 53, 33, 21, 35, 21, 22, 23, 22, 17, 16, 7, 6, 7, 21, 51, 21, 33, 53, 51, 53, 38, 39, 38, 17,
+ 16, 55, 54, 55, 23, 17, 54, 55, 54, 53, 52, 39, 38, 3, 17, 6, 7, 6, 21, 20, 23, 22, 2, 20,240, 2,152,240,161, 95,124,123,
+ 95,162,240,253,104,240,172,100,123,123,100,172,184, 69, 44, 72, 72, 44,253, 79, 49, 72, 72, 49, 5,111,164,164,252, 26,117,151,
+254,226,254,225,150,117, 26,240,165,165,237, 23,123,150, 1, 31, 1, 30,151,123, 23,168,252,194, 26, 66,110,213,214,109, 66,252,
+215, 3, 72, 24, 73,109,214,213,110, 73, 0, 0, 0, 1, 0,152,255,229, 3,177, 4, 94, 0, 17, 0, 0, 55, 30, 1, 51, 50, 54,
+ 53, 17, 51, 17, 35, 53, 14, 1, 35, 34, 38, 39,152, 59,122, 73,172,182,185,185, 46,191,131, 68,118, 54,231, 46, 42,216,204, 2,
+ 43,251,162,219,119,127, 34, 36, 0, 1, 0,152,255,229, 3,177, 6, 31, 0, 17, 0, 0, 55, 30, 1, 51, 50, 54, 53, 17, 51, 17,
+ 35, 53, 14, 1, 35, 34, 38, 39,152, 59,122, 73,172,182,185,185, 46,191,131, 68,118, 54,231, 46, 42,216,204, 3,236,249,225,219,
+119,127, 34, 36, 0, 1, 0,102,254, 86, 4,128, 4, 94, 0, 25, 0, 0, 5, 20, 22, 59, 1, 21, 35, 34, 38, 61, 1, 14, 1, 35,
+ 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 17, 51, 3,127, 89, 90, 78, 98,165,179, 46,191,131, 68,118, 54, 59,122, 73,172,182,185,
+ 20,125,125,156,211,195,239,119,127, 34, 36,188, 46, 42,216,204, 2, 43, 0, 0, 0, 1, 1,106,254, 86, 4,131, 4,123, 0, 17,
+ 0, 0, 1, 46, 1, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51, 50, 22, 23, 4,131, 59,122, 73,172,182,185,185, 46,191,131,
+ 68,118, 54, 3,121, 46, 42,216,204,252, 41, 6, 8,217,119,127, 34, 36, 0, 0, 0, 1, 1,106,254, 86, 4,131, 4,123, 0, 27,
+ 0, 0, 5, 20, 23, 22, 59, 1, 21, 35, 34, 38, 53, 17, 51, 21, 62, 1, 51, 50, 22, 23, 21, 46, 1, 35, 34, 7, 6, 21, 2, 35,
+ 44, 44, 91,234,254,165,179,185, 46,191,131, 68,118, 54, 59,122, 73,172, 91, 91, 20,125, 63, 62,156,211,195, 4,114,217,119,127,
+ 34, 36,188, 46, 42,108,108,204, 0, 1, 0,160, 0, 0, 4, 50, 4,123, 0, 17, 0, 0, 1, 52, 55, 54, 59, 1, 21, 35, 34, 7,
+ 6, 21, 17, 33, 21, 33, 53, 33, 2, 8, 82, 82,180,210,188,106, 38, 36, 1,112,252,110, 1,104, 2,229,212, 98, 96,156, 48, 50,
+152,253,170,143,143, 0, 0, 0, 0, 1, 0,160, 0, 0, 4, 50, 4,123, 0, 16, 0, 0, 1, 17, 33, 21, 33, 53, 33, 17, 52, 38,
+ 43, 1, 53, 51, 50, 23, 22, 2,200, 1,106,252,110, 1,110, 72,108,186,208,180, 82, 82, 2,229,253,170,143,143, 2, 86,154, 96,
+156, 96, 98, 0, 0, 2, 0,122, 0, 0, 4, 87, 4, 94, 0, 22, 0, 33, 0, 0, 1, 22, 23, 22, 23, 19, 35, 3, 38, 39, 38, 43,
+ 1, 17, 35, 17, 33, 50, 23, 22, 21, 20, 6, 1, 17, 51, 50, 55, 54, 53, 52, 39, 38, 35, 2,212, 55, 53, 52, 53,174,195,162, 63,
+ 59, 59, 97,169,185, 1,132,217,108,107,112,253,245,198,119, 63, 64, 64, 63,119, 2, 13, 17, 54, 54, 94,254,206, 1, 31,113, 36,
+ 37,254, 39, 4, 94, 78, 77,166,105,140, 1,157,254,175, 43, 43, 83, 84, 42, 42, 0, 2, 0,122, 0, 0, 4, 87, 4, 94, 0, 22,
+ 0, 33, 0, 0, 1, 30, 1, 21, 20, 7, 6, 35, 33, 17, 51, 17, 51, 50, 55, 54, 55, 19, 51, 3, 6, 7, 6, 1, 51, 50, 55, 54,
+ 53, 52, 39, 38, 43, 1, 2,212,106,112,107,108,217,254,124,185,169, 97, 59, 59, 63,162,195,174, 53, 52, 53,254, 40,198,119, 63,
+ 64, 64, 63,119,198, 2, 83, 27,140,105,162, 81, 80, 4, 94,254, 41, 37, 36,113, 1, 29,254,208, 94, 54, 54,254, 55, 42, 42, 84,
+ 83, 43, 43, 0, 0, 1, 0,188,254, 86, 4, 20, 4,123, 0, 56, 0, 0, 1, 21, 46, 1, 35, 34, 7, 6, 21, 20, 23, 22, 31, 1,
+ 22, 23, 22, 21, 20, 7, 6, 35, 34, 39, 20, 23, 22, 59, 1, 21, 35, 34, 38, 61, 1, 22, 23, 22, 51, 50, 55, 54, 53, 52, 39, 38,
+ 47, 1, 38, 39, 38, 53, 52, 54, 51, 50, 22, 3,216, 78,167, 91,136, 68, 70, 50, 48,148, 64,196, 82, 82,122,124,216,104,106, 38,
+ 34,110,232,254,180,164,102,100, 98, 98,130, 70, 70, 50, 52,170, 64,172, 76, 76,224,206,102,181, 4, 63,174, 40, 40, 42, 42, 84,
+ 64, 37, 36, 33, 14, 42, 77, 76,137,157, 90, 91, 21,159, 55, 48,156,192,214,251, 53, 26, 27, 45, 44, 81, 75, 40, 40, 37, 15, 36,
+ 74, 75,130,158,172, 30, 0, 0, 0, 1, 0,125,254, 86, 4, 84, 6, 20, 0, 19, 0, 0, 5, 20, 6, 43, 1, 53, 51, 50, 54, 53,
+ 17, 52, 54, 59, 1, 21, 35, 34, 6, 21, 2,211,179,165,254,234, 90, 90,169,179,221,209, 99, 77, 20,195,211,156,125,125, 4,194,
+184,174,153, 81,103, 0, 0, 0, 0, 1, 0,125,254, 86, 4, 84, 6, 20, 0, 31, 0, 0, 1, 21, 33, 17, 20, 6, 43, 1, 53, 51,
+ 50, 54, 53, 17, 33, 53, 33, 17, 33, 53, 33, 53, 52, 54, 59, 1, 21, 35, 34, 6, 21, 17, 4, 52,254,159,179,165,254,234, 90, 90,
+254,129, 1,127,254,195, 1, 61,169,179,221,209, 99, 77, 2,104,164,254, 40,195,211,156,125,125, 1,216,164, 1,105,141, 80,184,
+174,153, 81,103,253,165, 0, 0, 0, 1, 0,125,254, 86, 4, 84, 4, 94, 0, 21, 0, 0, 1, 17, 20, 23, 22, 59, 1, 21, 35, 34,
+ 38, 53, 17, 52, 39, 38, 43, 1, 53, 51, 50, 22, 2,211, 39, 38, 99,209,221,179,169, 45, 45, 90,234,254,165,179, 2,200,252,223,
+103, 40, 41,153,174,184, 3, 12,124, 64, 62,156,211, 0, 0, 0, 0, 2, 0,118,254, 86, 4, 91, 6, 20, 0, 8, 0, 33, 0, 0,
+ 5, 35, 34, 21, 20, 51, 50, 55, 54, 55, 51, 21, 35, 6, 7, 6, 35, 32, 53, 52, 33, 51, 17, 52, 55, 54, 59, 1, 21, 35, 34, 7,
+ 6, 21, 2, 56,179,116,127,110, 33, 18,202,183,191, 18, 53, 82,181,254,209, 1, 14,190, 87, 81,195,174,176,100, 37, 39,154, 51,
+ 65, 48, 23,199,155,111, 64, 96,216,210, 4,174,180, 92, 86,153, 40, 41,103, 0, 0, 1, 0,166,254,194, 4, 43, 4, 96, 0, 19,
+ 0, 0, 1, 17, 33, 53, 33, 17, 52, 38, 43, 1, 53, 51, 50, 22, 21, 17, 33, 21, 33, 17, 2, 72,254, 94, 1,162, 94,117,207,225,
+207,170, 1, 43,254,213,254,194, 1, 62,143, 2, 96,124, 98,147,166,203,253,160,143,254,194, 0, 0, 1, 0,131,254, 87, 4, 8,
+ 5,158, 0, 19, 0, 0, 1, 17, 33, 21, 33, 17, 20, 22, 59, 1, 21, 35, 34, 38, 53, 17, 33, 53, 33, 17, 2,102, 1,162,254, 94,
+ 94,117,207,225,207,170,254,213, 1, 43, 5,158,254,194,143,251,247,124, 98,147,166,203, 4, 9,143, 1, 62, 0, 0, 2, 0, 0,
+255,227, 4,209, 4, 96, 0, 23, 0, 33, 0, 0, 17, 53, 51, 17, 51, 17, 33, 17, 51, 17, 51, 21, 35, 17, 35, 53, 6, 7, 6, 35,
+ 34, 38, 61, 1, 41, 1, 21, 20, 23, 22, 51, 50, 55, 54,142,184, 2, 58,184,153,153,184, 67, 89, 89,117,193,199, 2,241,253,199,
+ 62, 62,124,149, 87, 77, 1,196,164, 1,248,254, 8, 1,248,254, 8,164,254, 60,172,102, 50, 49,240,231, 10, 3,159, 80, 79, 95,
+ 85, 0, 0, 0, 0, 1, 0, 95,255,226, 4,114, 4, 96, 0, 35, 0, 0, 19, 53, 33, 21, 6, 7, 6, 21, 20, 22, 32, 55, 54, 53,
+ 52, 39, 38, 39, 53, 33, 21, 35, 22, 23, 22, 21, 20, 0, 32, 39, 38, 53, 52, 55, 54, 55, 95, 1,186,109, 63, 66,176, 1, 32, 88,
+ 88, 66, 71,100, 1,180,236,114, 56, 54,254,228,254, 62,142,142, 52, 53,119, 3,188,164,220, 69,105,111,135,159,194, 97, 98,158,
+146,100,111, 63,220,164,100,113,110,136,235,254,220,145,146,228,147,107,109,104, 0, 1, 0, 65, 0, 0, 4,119, 4, 96, 0, 32,
+ 0, 0, 1, 33, 22, 23, 22, 21, 20, 0, 43, 1, 34, 39, 38, 53, 17, 35, 53, 33, 17, 20, 23, 22, 63, 1, 50, 55, 54, 53, 52, 39,
+ 38, 39, 38, 2, 85, 1, 66,114, 56, 54,254,228,225, 70,181, 82, 81,155, 1, 83, 38, 40,103, 51,144, 88, 88, 66, 79, 92, 76, 3,
+218,100,113,110,136,235,254,220, 96, 96,214, 2, 59,143,253, 54,153, 49, 50, 2, 1, 97, 98,158,146,100,119, 55, 44, 0, 0, 0,
+ 0, 1, 0, 72, 0, 0, 4,138, 4, 96, 0, 6, 0, 0, 33, 35, 9, 1, 35, 1, 51, 4,138,196,254,162,254,162,194, 1,164,250,
+ 3,172,252, 84, 4, 96, 0, 0, 0, 1, 0, 15, 0, 0, 4,194, 4, 96, 0, 12, 0, 0, 33, 35, 11, 1, 35, 11, 1, 35, 19, 51,
+ 27, 1, 51, 4,194,148,184,183,173,184,184,147,235,173,193,194,173, 3,106,252,150, 3,106,252,150, 4, 96,252,106, 3,150, 0,
+ 0, 1, 0, 72, 0, 0, 4,138, 6, 10, 0, 15, 0, 0, 1, 62, 1, 59, 1, 21, 35, 34, 6, 15, 1, 1, 35, 9, 1, 35, 2, 52,
+ 78,148,124,146,108, 76, 84, 50, 34, 1,198,196,254,162,254,162,194, 4,200,200,122,154, 72,134, 84,251,178, 3,108,252,148, 0,
+ 0, 1, 0,102, 0, 0, 4,107, 4,125, 0, 8, 0, 0, 19, 51, 9, 1, 51, 1, 17, 35, 17,102,217, 1, 37, 1, 46,217,254, 93,
+203, 4,125,254, 56, 1,200,253,144,253,243, 2, 13, 0, 0, 0, 0, 1, 0,194,254, 86, 4, 15, 4, 96, 0, 20, 0, 0, 19, 33,
+ 21, 1, 33, 23, 20, 23, 22, 59, 1, 21, 35, 34, 38, 61, 1, 33, 53, 1, 33,213, 2,167,253,249, 2, 25, 1, 21, 21, 59, 27, 52,
+136,122,253,233, 2, 7,254, 12, 4, 96,168,252,219,167,153, 49, 48,156,192,214, 20,168, 3, 37, 0, 2, 0,167,255,145, 4, 42,
+ 4, 96, 0, 20, 0, 27, 0, 0, 33, 6, 21, 35, 52, 55, 33, 53, 1, 33, 53, 33, 21, 1, 51, 18, 51, 50, 23, 22, 33, 39, 51, 50,
+ 53, 52, 35, 6, 2,170, 3,153, 3,254,150, 2,180,253,101, 3,106,253, 76,175, 60,219,227, 1, 1,254,178, 20, 20,174, 70, 88,
+ 51, 60, 59, 52,168, 3, 37,147,168,252,219, 1, 32,246,189,147, 54, 91, 2, 0, 0, 1, 0,125,254, 76, 4, 84, 4, 96, 0, 32,
+ 0, 0, 1, 50, 23, 22, 23, 22, 21, 20, 4, 33, 34, 39, 38, 39, 53, 30, 1, 51, 50, 55, 54, 53, 52, 39, 38, 43, 1, 53, 1, 33,
+ 53, 33, 21, 2, 97,106,128, 98, 86, 81,254,208,254,232, 94, 99,100,106, 84,200,109,190, 99,100, 92, 93,165,174, 1,174,253,101,
+ 3,106, 1,220, 56, 42,109,104,138,221,242, 18, 19, 37,195, 49, 50, 75, 75,143,132, 75, 74,166, 1,243,147,168, 0, 2, 0,105,
+254, 76, 4,104, 4, 96, 0, 36, 0, 45, 0, 0, 1, 32, 55, 54, 5, 22, 23, 54, 53, 52, 39, 38, 43, 1, 53, 1, 33, 53, 33, 21,
+ 1, 50, 23, 22, 23, 22, 21, 20, 7, 22, 21, 35, 52, 39, 48, 7, 6, 55, 38, 35, 34, 7, 20, 51, 50, 55, 1,227,254,177, 2, 2,
+ 1, 42,246,158, 12, 92, 94,164,174, 1,174,253,101, 3,106,254,101,105,129,100, 84, 81, 39,100,153, 40, 20,151, 9,125,197,131,
+ 1,158,190, 99,254, 76,189,251, 5, 4, 59, 42, 49,133, 74, 74,166, 1,243,147,168,254, 36, 56, 43,108,103,139,113, 85,101,164,
+ 82, 56, 17,121,250, 42, 75, 47, 75, 0, 0, 0, 0, 1, 0,194, 0, 0, 4, 15, 6, 18, 0, 28, 0, 0, 1, 51, 50, 55, 54, 53,
+ 52, 39, 38, 35, 34, 7, 6, 7, 53, 54, 55, 54, 51, 32, 23, 22, 21, 20, 7, 6, 7, 17, 35, 1,190, 63,191, 87, 58, 58,102,176,
+ 80, 79, 78, 78, 76, 81, 81, 85, 1, 19,138,109,108,112,170,203, 3, 30,114, 76, 98,133, 65,114, 22, 21, 43,172, 35, 17, 18,157,
+125,186,170,115,119, 30,253,116, 0, 1, 0,194, 0, 0, 4, 15, 6, 18, 0, 28, 0, 0, 1, 17, 35, 17, 38, 39, 38, 53, 52, 55,
+ 54, 33, 50, 23, 22, 23, 21, 38, 39, 38, 35, 34, 7, 6, 7, 20, 23, 22, 51, 3, 18,202,170,112,108,110,137, 1, 19, 85, 81, 81,
+ 76, 78, 79, 78, 80,179, 99, 57, 1, 58, 86,192, 3, 30,252,226, 2,140, 30,119,115,170,186,125,157, 18, 17, 35,172, 43, 21, 22,
+114, 65,133, 98, 76,114, 0, 0, 0, 1, 0,194, 0, 0, 4, 15, 6, 18, 0, 28, 0, 0, 1, 17, 51, 17, 22, 23, 22, 21, 20, 7,
+ 6, 33, 34, 39, 38, 39, 53, 22, 23, 22, 51, 50, 55, 54, 55, 52, 39, 38, 35, 1,190,203,170,112,108,109,138,254,237, 85, 81, 81,
+ 76, 78, 78, 79, 80,179, 99, 57, 1, 58, 86,192, 2,244, 3, 30,253,116, 30,119,115,170,186,125,157, 18, 17, 35,172, 43, 21, 22,
+114, 65,133, 98, 76,114, 0, 0, 0, 1, 0,194,254, 74, 4, 15, 6, 18, 0, 35, 0, 0, 19, 52, 55, 54, 33, 50, 23, 22, 23, 21,
+ 38, 39, 38, 35, 34, 7, 6, 7, 17, 22, 23, 22, 51, 50, 55, 54, 55, 21, 6, 7, 6, 35, 32, 39, 38, 53,194,110,137, 1, 19, 85,
+ 81, 81, 76, 78, 79, 78, 80,179, 99, 57, 1, 1, 57, 99,179, 80, 78, 79, 78, 76, 81, 81, 85,254,237,137,110, 4, 62,186,125,157,
+ 18, 17, 35,172, 43, 21, 22,114, 65,133,251,224,133, 65,114, 22, 21, 43,172, 35, 17, 18,157,125,186, 0, 0, 0, 0, 3, 0, 95,
+ 0, 45, 4,115, 4, 66, 0, 12, 0, 26, 0, 40, 0, 0, 19, 52, 55, 54, 51, 50, 23, 22, 21, 20, 0, 32, 0, 55, 20, 23, 22, 32,
+ 54, 53, 52, 39, 38, 35, 34, 7, 6, 23, 52, 55, 54, 51, 50, 23, 22, 21, 20, 6, 34, 39, 38, 95,154,154,216,212,154,154,254,209,
+254, 79,254,204,181,101,100, 1, 26,198,100,101,138,141,100,101,227, 34, 33, 47, 46, 34, 33, 66, 94, 33, 34, 2, 53,212,156,157,
+157,156,212,216,254,208, 1, 48,217,141, 99, 99,198,141,138,102,102,102,102,137, 46, 34, 34, 34, 34, 46, 47, 66, 33, 33, 0, 0,
+ 0, 3, 0,209, 0, 0, 4, 0, 4,125, 0, 8, 0, 17, 0, 32, 0, 45, 64, 24, 25, 0,182, 10, 32, 9,182, 18,194, 1,182, 32,
+ 14, 18, 22, 5, 18, 28, 0, 9, 6, 18, 70, 33, 16,252,236, 50,212,236,212,236, 49, 0, 47,236,244,236, 16,212,236, 57, 48, 1,
+ 17, 51, 50, 54, 53, 52, 38, 35, 3, 17, 51, 50, 54, 53, 52, 38, 35, 37, 33, 50, 22, 21, 20, 6, 7, 30, 1, 21, 20, 6, 35, 33,
+ 1,155,221, 93, 95, 90, 94,225,210, 85, 84, 84, 86,254,101, 1,141,178,192, 98, 96,115,127,209,193,254, 99, 2, 18,254,152,105,
+ 63, 92,100, 1,194,254,232, 85, 63, 46, 86,169,148,136,105,125, 15, 25,156,117,154,168, 0, 0, 0, 2, 0,176,255,213, 4, 34,
+ 4,121, 0, 21, 0, 43, 0, 0, 1, 34, 7, 6, 20, 23, 22, 59, 1, 21, 35, 34, 7, 6, 21, 20, 23, 22, 51, 36, 17, 16, 39, 4,
+ 17, 16, 5, 6, 39, 34, 39, 38, 53, 52, 54, 55, 46, 1, 53, 52, 55, 54, 51, 50, 2, 50,115, 57, 64, 60, 32,138,137,137,138, 32,
+ 60, 64, 55,117, 1, 84,120, 1, 20,254,236, 86,147,173,100,100,106, 98, 98,106,100,100,173,150, 3,216, 54, 61,154, 55, 30,157,
+ 30, 54, 78, 74, 64, 54, 1, 1,190, 1,162,115,151,254,120,254,168,194, 62, 2, 87, 86,148,103,142, 28, 27,142,103,148, 87, 86,
+ 0, 1, 0, 54, 0, 0, 4,108, 6, 18, 0, 48, 0, 0, 37, 17, 35, 53, 33, 17, 6, 7, 6, 35, 34, 39, 38, 17, 16, 55, 54, 51,
+ 50, 23, 22, 23, 53, 52, 55, 54, 59, 1, 21, 35, 34, 7, 6, 29, 1, 35, 21, 38, 39, 38, 35, 34, 7, 6, 16, 23, 22, 51, 50, 2,
+206,116, 1, 30, 1,163, 58,152,212,123,125,127,124,219, 51, 72, 24, 13, 62, 60,136,190,129, 78, 30, 28, 2, 29,189, 63, 55,134,
+ 75, 74, 74, 75,134,130,178, 1, 26,140,253,240, 4, 50, 18,159,160, 1, 13, 1, 15,160,157, 18, 6, 5, 1,216, 94, 96,156, 48,
+ 51,151,148,106, 38, 66, 22,114,113,254,102,113,114, 0, 0, 0, 0, 1, 0,144, 0, 0, 4, 65, 4,123, 0, 11, 0, 0, 19, 51,
+ 17, 33, 17, 51, 17, 35, 17, 33, 17, 35,144,202, 2, 29,202,202,253,227,202, 4,123,254, 65, 1,191,251,133, 2, 18,253,238, 0,
+ 0, 3, 0,202,254, 86, 4, 7, 6, 20, 0, 3, 0, 20, 0, 29, 0, 0, 1, 51, 21, 35, 23, 17, 51, 21, 35, 6, 7, 6, 35, 32,
+ 53, 52, 33, 51, 17, 33, 53, 1, 35, 34, 23, 22, 51, 50, 55, 54, 2,154,184,184,184,180,190, 19, 53, 81,181,254,208, 1, 14,194,
+254,194, 1, 51,181,119, 3, 3,123,106, 38, 17, 6, 20,233,203,251,160,155,112, 63, 96,221,205, 3,209,143,251, 6, 51, 65, 48,
+ 23, 0, 0, 0, 0, 1, 0,119,254, 76, 4, 90, 4, 96, 0, 10, 0, 0, 1, 35, 17, 1, 35, 9, 1, 51, 1, 17, 51, 4, 90,186,
+253,220,236, 2, 82,253,150,240, 2, 56,186,254, 76, 3,151,254, 29, 2, 12, 2, 84,253,221, 2, 35, 0, 0, 0, 0, 1, 0,245,
+ 0, 0, 3,220, 4,123, 0, 5, 0, 0, 19, 51, 17, 33, 21, 33,245,202, 2, 29,253, 25, 4,123,252, 47,170, 0, 0, 2, 0, 35,
+254, 86, 4,124, 6, 18, 0, 29, 0, 41, 0, 0, 37, 6, 7, 6, 35, 34, 39, 38, 16, 55, 54, 51, 50, 23, 22, 23, 53, 52, 55, 54,
+ 59, 1, 21, 35, 34, 7, 6, 21, 17, 35, 0, 16, 23, 22, 50, 55, 54, 16, 39, 38, 34, 7, 2,187, 44, 66, 67, 93,174,110,109,109,
+110,174, 93, 67, 66, 44, 61, 61,136,190,127, 79, 29, 28,185,254, 41, 63, 63,219, 63, 63, 63, 63,219, 63,168,100, 48, 49,162,162,
+ 2, 16,162,162, 49, 48,100,198,214, 96, 96,156, 48, 49,153,249,218, 4,164,254,106,116,115,115,116, 1,150,116,115,115, 0, 0,
+ 0, 1, 0,194, 0, 0, 4, 15, 6, 18, 0, 36, 0, 0, 1, 51, 50, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 7, 53, 54, 55, 54,
+ 51, 32, 23, 22, 21, 20, 7, 6, 7, 21, 51, 21, 35, 17, 35, 17, 35, 53, 51, 1,190, 63,191, 87, 58, 58,102,176, 80, 79, 78, 78,
+ 76, 81, 81, 85, 1, 19,138,109,108,112,170,231,231,202,229,228, 3, 30,114, 76, 98,133, 65,114, 22, 21, 43,172, 35, 17, 18,157,
+125,186,170,115,119, 30,212,164,254,236, 1, 20,164, 0, 0, 0, 0, 1, 0,194, 0, 0, 4, 15, 6, 18, 0, 36, 0, 0, 1, 53,
+ 38, 39, 38, 53, 52, 55, 54, 33, 50, 23, 22, 23, 21, 38, 39, 38, 35, 34, 7, 6, 21, 20, 23, 22, 59, 1, 17, 51, 21, 35, 17, 35,
+ 17, 35, 53, 2, 72,170,112,108,110,137, 1, 19, 85, 81, 81, 76, 78, 79, 78, 80,176,102, 58, 58, 87,191, 62,229,229,202,231, 1,
+184,212, 30,119,115,170,186,125,157, 18, 17, 35,172, 43, 21, 22,114, 65,133, 98, 76,114,254,154,164,254,236, 1, 20,164, 0, 0,
+ 0, 3, 0, 29,255,227, 4,154, 6, 20, 0, 7, 0, 32, 0, 35, 0, 0, 18, 16, 22, 50, 54, 16, 38, 34, 5, 17, 51, 17, 33, 21,
+ 1, 33, 21, 33, 43, 1, 53, 6, 7, 6, 35, 34, 2, 16, 18, 51, 50, 23, 22, 23, 17, 1,168,100,175,101,101,175, 1, 20,110, 2,
+ 11,254, 97, 1,159,253,245, 16, 94, 33, 59, 56, 78,128,161,161,128, 78, 56, 58,144, 1,143, 2,250,254,106,231,231, 1,150,231,
+ 43, 2, 94,254, 76,168,252,219,147,168, 97, 51, 49, 1, 68, 2, 16, 1, 68, 49, 48, 77,252,251, 3, 5, 0, 0, 0, 2, 0, 27,
+254, 76, 4,180, 6, 20, 0, 13, 0, 67, 0, 0, 18, 16, 23, 22, 51, 50, 55, 54, 16, 39, 38, 35, 34, 7, 37, 19, 35, 53, 6, 7,
+ 6, 35, 34, 39, 38, 16, 55, 54, 51, 50, 23, 22, 23, 17, 51, 3, 33, 21, 3, 50, 23, 22, 23, 22, 21, 20, 6, 35, 34, 39, 38, 39,
+ 53, 30, 1, 51, 50, 55, 54, 53, 52, 39, 38, 43, 1, 53, 1, 33,141, 50, 50, 88, 87, 51, 50, 50, 51, 87, 88, 50, 1,180, 1,111,
+ 35, 53, 53, 74,122, 76, 77, 77, 76,122, 74, 53, 53, 35,111, 1, 2, 12,246, 63, 77, 59, 51, 49,182,168, 57, 59, 60, 64, 51,120,
+ 65,114, 59, 60, 55, 56, 99,104, 1, 2,254,113, 2,250,254,106,116,115,115,116, 1,150,116,115,115, 95,252, 51,168,100, 48, 49,
+162,162, 2, 16,162,162, 49, 48,100, 2, 94,254, 76,168,254, 36, 56, 42,109,104,138,221,242, 18, 19, 37,195, 49, 50, 75, 75,143,
+132, 75, 74,166, 1,243, 0, 0, 0, 4, 0, 54,255,145, 4,153, 6, 20, 0, 7, 0, 11, 0, 44, 0, 51, 0, 0, 18, 16, 22, 50,
+ 54, 16, 38, 34, 5, 19, 1, 33, 53, 33, 21, 1, 51, 18, 51, 50, 21, 22, 43, 1, 6, 21, 35, 52, 55, 39, 35, 53, 14, 1, 35, 34,
+ 2, 16, 18, 51, 50, 22, 23, 17, 51, 1, 51, 50, 53, 52, 35, 6,169,100,175,101,101,175, 1,127, 3, 1,141,254,115, 2, 9,254,
+ 97,105, 36,132,136, 1,200, 25, 2, 92, 1,216, 92, 35,106, 75,121,153,153,121, 75,106, 35,110, 1, 48, 12,104, 42, 53, 2,250,
+254,106,231,231, 1,150,231, 20,252,254, 3, 2,147,168,252,219, 1, 32,246,189, 51, 60, 83, 27, 1,168,100, 97, 1, 68, 2, 16,
+ 1, 68, 97,100, 2, 94,250,127, 54, 91, 2, 0, 0, 1, 0,153,255,227, 4, 56, 5,158, 0, 62, 0, 0, 1, 21, 46, 1, 35, 34,
+ 6, 21, 20, 22, 31, 1, 22, 23, 22, 21, 20, 6, 35, 34, 39, 38, 39, 21, 35, 34, 38, 53, 17, 35, 53, 51, 17, 51, 17, 51, 21, 35,
+ 17, 20, 22, 59, 1, 53, 30, 1, 51, 50, 54, 53, 52, 39, 38, 47, 1, 46, 1, 53, 52, 54, 51, 50, 22, 4, 20, 47,101, 54, 82, 82,
+ 59, 89, 37,119, 48, 50,148,130, 54, 58, 56, 62,113,128, 97, 81, 81,111,227,227, 45, 69,107, 62,118, 59, 78, 84, 31, 27,106, 38,
+103, 91,135,123, 61,108, 4, 63,174, 40, 40, 84, 84, 64, 73, 33, 14, 44, 75, 76,137,156,182, 17, 17, 33, 38,159,210, 2, 96,143,
+ 1, 62,254,194,143,253,160,137, 78, 77, 53, 53, 89, 81, 75, 40, 36, 41, 15, 36,149,130,158,172, 30, 0, 0, 0, 0, 2, 0,153,
+254, 86, 4, 52, 6, 20, 0, 37, 0, 46, 0, 0, 1, 17, 33, 53, 52, 55, 54, 59, 1, 21, 35, 34, 7, 6, 21, 19, 20, 7, 6, 43,
+ 1, 53, 51, 50, 55, 54, 61, 1, 35, 34, 39, 38, 53, 17, 35, 53, 51, 17, 1, 2, 17, 33, 17, 20, 23, 22, 51, 1,137, 1, 25, 65,
+ 60,147,130,132, 74, 28, 30, 2, 61, 61,136, 53, 37, 78, 29, 29,141,161, 59, 61,101,101, 1,165, 1,254,231, 28, 29, 85, 5,158,
+254,194, 78,182, 90, 86,153, 40, 41,103,251, 41,215, 95, 96,156, 48, 50,152, 20, 80, 77,212, 2, 96,143, 1, 62,250,252, 1, 23,
+ 2, 32,253,160,138, 38, 39, 0, 0, 3, 0,181,255,112, 4, 18, 5,158, 0, 46, 0, 54, 0, 64, 0, 0, 1, 17, 51, 21, 54, 51,
+ 50, 23, 22, 23, 21, 38, 39, 38, 35, 34, 7, 6, 16, 23, 22, 23, 54, 51, 50, 23, 20, 35, 34, 39, 6, 21, 7, 52, 55, 38, 39, 21,
+ 35, 34, 38, 53, 17, 35, 53, 51, 17, 1, 22, 51, 50, 53, 52, 35, 34, 7, 38, 53, 16, 55, 35, 17, 20, 22, 51, 1,117,228, 90,157,
+ 51, 49, 48, 46, 47, 47, 47, 48,108, 59, 59, 59, 4, 4, 50,118,179, 1,200, 49, 43, 3, 92, 7, 33, 28,114,128, 97, 81, 81, 1,
+254, 36, 45, 87, 79, 61,213, 77, 84,221, 45, 69, 5,158,254,194,130,157, 17, 18, 35,172, 43, 22, 21,113,114,254,102,114, 7, 7,
+176,246,189, 17, 57, 68, 3,104, 84, 34, 50,128,159,210, 2, 96,143, 1, 62,250,244, 19, 57, 75,105,157,248, 1, 7,155,253,160,
+137, 78, 0, 0, 0, 1, 0,135,254, 86, 4, 72, 6, 20, 0, 51, 0, 0, 1, 17, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 53, 17,
+ 52, 38, 35, 34, 6, 21, 17, 35, 17, 35, 17, 35, 17, 35, 53, 51, 53, 52, 54, 59, 1, 21, 35, 34, 6, 29, 1, 59, 2, 21, 54, 55,
+ 54, 51, 50, 23, 22, 4, 71, 49, 49,108,153,140, 63, 23, 23, 75, 74, 89,104,111,180,110,106,106,104,113,105,106, 59, 47,180, 2,
+109, 40, 53, 54, 70,116, 60, 59, 2,164,253, 72,214, 96, 96,156, 48, 49,153, 2,178,159,158,190,164,253,135, 3,209,252, 47, 3,
+209,143, 78,187,171,153, 80,104, 99,174,101, 50, 50,119,120, 0, 0, 2, 0,230,255,227, 3,235, 6, 20, 0, 37, 0, 55, 0, 0,
+ 1, 21, 38, 39, 38, 35, 34, 6, 21, 20, 23, 22, 31, 1, 22, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 39, 21, 35, 17, 51, 17, 54,
+ 55, 54, 51, 50, 23, 22, 1, 17, 22, 23, 22, 51, 50, 55, 54, 53, 52, 39, 38, 47, 1, 38, 39, 38, 3,190, 59, 62, 65, 66,103,102,
+ 36, 38,110, 47,149, 60, 62, 93, 91,163, 65, 76, 79, 68,138,138, 8, 75, 84,155, 76, 68, 67,253,235, 75, 69, 74, 73, 97, 53, 52,
+ 37, 34,133, 48,128, 57, 50, 4, 63,174, 41, 19, 20, 84, 84, 63, 38, 36, 33, 14, 44, 75, 76,137,155, 92, 91, 17, 21, 29, 38, 6,
+ 20,253, 58,138, 77, 86, 15, 15,254,183,253,206, 51, 23, 27, 45, 43, 82, 75, 40, 35, 42, 15, 36, 74, 65, 0, 0, 0, 2, 0,219,
+ 0, 0, 3,244, 6, 20, 0, 10, 0, 13, 0, 0, 19, 51, 17, 33, 21, 1, 33, 21, 33, 43, 1, 19, 17, 1,219,138, 2,143,253,249,
+ 2, 7,253,113, 20,118,138, 1,243, 6, 20,254, 76,168,252,219,147, 3,205,252,250, 3, 6, 0, 0, 2, 0,143,255,226, 4, 66,
+ 5, 32, 0, 12, 0, 25, 0, 0, 19, 51, 27, 1, 51, 27, 1, 51, 3, 35, 11, 1, 35, 3, 51, 27, 1, 51, 27, 1, 51, 3, 35, 11,
+ 1, 35,143,116,145,144,137,145,144,116,185,136,152,153,136,185,116,145,144,137,145,144,116,185,136,152,153,136, 2, 85,254, 23,
+ 1,233,254, 23, 1,233,253,141, 2, 2,253,254, 5, 61,254, 23, 1,233,254, 23, 1,233,253,141, 2, 2,253,254, 0, 2, 0,143,
+ 0,173, 4, 66, 5, 31, 0, 7, 0, 15, 0, 0, 19, 33, 17, 35, 17, 33, 17, 35, 17, 33, 17, 35, 17, 33, 17, 35,143, 3,179,143,
+253,107,143, 3,179,143,253,107,143, 2, 85,254, 88, 1, 5,254,251, 4,114,254, 88, 1, 5,254,251, 0, 0, 0, 0, 1, 0,178,
+254, 74, 4, 31, 6, 20, 0, 24, 0, 0, 5, 32, 25, 1, 52, 38, 43, 1, 53, 51, 50, 22, 21, 17, 16, 51, 50, 54, 53, 17, 51, 17,
+ 35, 17, 6, 2,132,254,219, 57, 79, 37, 53,136,122,186,112,129,138,138, 99, 29, 1,215, 2,196,153, 97,156,192,214,253, 66,254,
+195,190,164, 2,121,249,236, 2, 98,201, 0, 0, 0, 1, 0,197,254, 86, 4, 12, 6, 20, 0, 34, 0, 0, 1, 16, 51, 50, 54, 53,
+ 17, 51, 17, 6, 22, 59, 1, 21, 35, 34, 39, 38, 39, 53, 6, 35, 34, 25, 1, 52, 39, 38, 43, 1, 53, 51, 50, 22, 21, 1,190,148,
+ 90,103,111, 2, 48, 62, 30, 42,109, 47, 50, 1, 79,138,235, 23, 23, 63, 29, 42,109, 98, 1,192,254,195,190,164, 2,121,251,142,
+148,102,156, 92,103,231,172,201, 1,215, 2,196,153, 49, 48,156,192,214, 0, 0, 0, 1, 1, 65, 2,156, 3,144, 6, 4, 0, 19,
+ 0, 32, 64, 6, 0, 3, 14, 10, 11, 20, 16,212,220, 60, 47,204, 75, 49, 0, 64, 6, 6, 17, 12, 2, 11, 20, 16,212, 60,196,212,
+204, 48, 1, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 17, 62, 1, 51, 50, 22, 3,144,116, 78, 78, 94,108,117,117, 41,
+113, 74,121,125, 4, 23,254,133, 1,119, 89, 89,107, 92,254,158, 3,103,254,171, 56, 56,134, 0, 0, 1, 1, 65, 2,154, 3,144,
+ 6, 2, 0, 31, 0, 0, 1, 51, 62, 1, 51, 50, 22, 21, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 53, 52, 55, 54, 59, 1,
+ 21, 35, 34, 7, 6, 21, 1,181, 1, 41,113, 74,121,125,116, 78, 78, 94,108,117, 52, 51,114,160,147, 66, 24, 24, 4,172, 57, 56,
+134,130,254,134, 1,119, 89, 88,106, 92,254,158, 2, 49, 83,119, 54, 54, 87, 27, 28, 85, 0, 0, 0, 2, 1,230, 1,173, 2,235,
+ 6, 4, 0, 11, 0, 15, 0, 0, 1, 51, 17, 20, 6, 43, 1, 53, 51, 50, 54, 53, 17, 51, 21, 35, 2,119,116,103,114, 44, 31, 66,
+ 48,116,116, 5, 15,253,130,120,108, 88, 54, 86, 3,114,130, 0, 0, 1, 1,153, 2,156, 3, 56, 5, 31, 0, 17, 0, 0, 1, 46,
+ 1, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51, 50, 22, 23, 3, 55, 19, 46, 28, 98,106,116,116, 37,117, 84, 12, 29, 18, 4,
+175, 10, 9,113,107,254,182, 2,115, 97, 57, 55, 2, 3, 0, 0, 0, 1, 1,153, 2,140, 3, 56, 5, 16, 0, 17, 0, 0, 1, 30,
+ 1, 51, 50, 54, 53, 17, 51, 17, 35, 53, 14, 1, 35, 34, 38, 39, 1,154, 19, 46, 28, 98,106,116,116, 37,117, 84, 12, 29, 18, 2,
+252, 10, 9,113,107, 1, 74,253,141, 97, 57, 55, 3, 2, 0, 0, 0, 1, 1, 81, 1,173, 3,128, 5, 16, 0, 31, 0, 0, 1, 30,
+ 1, 51, 50, 54, 53, 17, 51, 17, 29, 1, 20, 23, 22, 59, 1, 21, 35, 34, 39, 38, 61, 1, 35, 53, 14, 1, 35, 34, 38, 39, 1, 81,
+ 20, 46, 28, 98,105,117, 24, 24, 66, 31, 45,114, 51, 51, 1, 36,118, 83, 12, 29, 18, 2,252, 10, 9,113,107, 1, 74,253,213, 72,
+ 11, 86, 27, 27, 88, 54, 54,120, 11, 97, 57, 55, 3, 2, 0, 0, 0, 2, 1, 48, 2,156, 3,161, 5, 16, 0, 22, 0, 33, 0, 0,
+ 1, 30, 1, 21, 20, 7, 6, 43, 1, 17, 51, 17, 51, 50, 55, 54, 63, 1, 51, 7, 6, 7, 6, 1, 51, 50, 55, 54, 53, 52, 39, 38,
+ 43, 1, 2,172, 67, 71, 68, 68,137,244,117,106, 61, 37, 37, 40,102,123,110, 33, 33, 33,254,215,124, 75, 40, 40, 40, 40, 75,124,
+ 3,233, 15, 78, 59, 91, 45, 45, 2,115,254,247, 21, 20, 63,161,171, 53, 30, 30,255, 0, 23, 24, 47, 46, 24, 25, 0, 1, 0,143,
+ 2,156, 4, 66, 5, 16, 0, 12, 0, 0, 19, 51, 27, 1, 51, 27, 1, 51, 3, 35, 11, 1, 35,143,116,145,144,137,145,144,116,185,
+136,152,153,136, 5, 15,254, 23, 1,233,254, 23, 1,233,253,141, 2, 2,253,254, 0, 1, 1, 17, 1,173, 3,192, 5, 16, 0, 15,
+ 0, 0, 1, 14, 1, 43, 1, 53, 51, 50, 54, 63, 1, 1, 51, 27, 1, 51, 2,138, 49, 93, 79, 92, 68, 48, 53, 32, 21,254,226,123,
+220,221,123, 2, 98,112, 69, 87, 40, 75, 47, 2,105,254, 22, 1,234, 0, 0, 0,255,255, 1,236, 4,116, 2,235, 6,102, 16, 6,
+ 2,191, 0, 0,255,255, 1,207, 3,199, 3, 45, 6, 20, 16, 6, 6,141, 0, 0,255,255, 1,207, 3,199, 3, 45, 6, 20, 16, 6,
+ 6,142, 0, 0,255,255, 1,240, 4,194, 2,225, 6,193, 16, 6, 2,144, 0, 0, 0, 1, 1,223, 3,239, 2,242, 6, 20, 0, 16,
+ 0, 0, 1, 52, 53, 50, 54, 53, 52, 38, 35, 52, 53, 50, 23, 22, 20, 7, 6, 1,224, 64, 88, 88, 64,114, 80, 80, 80, 80, 3,239,
+ 61, 62, 88, 64, 63, 88, 61, 62, 80, 79,230, 80, 80, 0, 0, 0, 0, 1, 1,223, 3,239, 2,242, 6, 20, 0, 16, 0, 0, 1, 34,
+ 39, 38, 52, 55, 54, 51, 20, 21, 34, 6, 21, 20, 22, 51, 20, 2,242,116, 80, 78, 78, 80,116, 64, 88, 88, 64, 3,239, 80, 80,230,
+ 79, 80, 62, 61, 88, 63, 64, 88, 62, 0, 0, 0, 0, 1, 1, 94, 3,142, 3,115, 6,245, 0, 28, 0, 0, 1, 51, 50, 55, 54, 53,
+ 52, 39, 38, 35, 34, 7, 6, 7, 53, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 7, 17, 35, 1,253, 40,121, 54, 36, 36, 62,113,
+ 51, 49, 50, 49, 48, 51, 51, 54,173, 87, 69, 68, 71,107,127, 5, 77, 64, 42, 55, 75, 36, 64, 12, 12, 24, 96, 20, 9, 10, 88, 70,
+104, 95, 64, 67, 17,254,147, 0, 0, 1, 1, 94, 3,142, 3,115, 6,245, 0, 28, 0, 0, 1, 17, 35, 17, 38, 39, 38, 53, 52, 55,
+ 54, 51, 50, 23, 22, 23, 21, 38, 39, 38, 35, 34, 7, 6, 21, 20, 23, 22, 51, 2,211,127,107, 71, 68, 70, 86,173, 54, 51, 51, 48,
+ 49, 50, 49, 51,113, 62, 36, 36, 54,121, 5, 77,254, 65, 1,109, 17, 67, 64, 95,104, 70, 88, 10, 9, 20, 96, 24, 12, 12, 64, 36,
+ 75, 55, 42, 64, 0, 1, 1, 41, 4,238, 3,168, 6,102, 0, 6, 0, 55, 64, 12, 4, 5, 2,186, 0,185, 7, 4, 2, 11, 6, 7,
+ 16,212,236, 57, 49, 0, 16,244,236, 50, 57, 48, 0, 75,176, 9, 84, 75,176, 14, 84, 91, 88,189, 0, 7,255,192, 0, 1, 0, 7,
+ 0, 7, 0, 64, 56, 17, 55, 56, 89, 1, 51, 19, 35, 39, 7, 35, 2, 31,147,246,139,181,180,139, 6,102,254,136,245,245, 0, 0,
+ 0, 1, 1, 41, 4,238, 3,168, 6,102, 0, 6, 0, 55, 64, 12, 3, 0,186, 4, 1,185, 7, 3, 5, 11, 1, 7, 16,212,236, 57,
+ 49, 0, 16,244, 60,236, 57, 48, 0, 75,176, 9, 84, 75,176, 14, 84, 91, 88,189, 0, 7,255,192, 0, 1, 0, 7, 0, 7, 0, 64,
+ 56, 17, 55, 56, 89, 1, 3, 51, 23, 55, 51, 3, 2, 31,246,139,180,181,139,246, 4,238, 1,120,245,245,254,136, 0, 1, 2, 36,
+ 3,231, 2,173, 6, 18, 0, 3, 0, 19, 64, 3, 0, 3, 4, 16,212,204, 49, 0, 64, 3, 3, 2, 4, 16,212,196, 48, 1, 17, 35,
+ 17, 2,172,136, 6, 18,253,213, 2, 43, 0, 0,255,255, 1, 61, 5, 98, 3,147, 5,246, 16, 6, 2,128, 0, 0, 0, 1, 2, 36,
+254,209, 2,173, 0,252, 0, 3, 0, 19, 64, 3, 0, 3, 4, 16,212,204, 49, 0, 64, 3, 3, 2, 4, 16,212,196, 48, 37, 17, 35,
+ 17, 2,172,136,252,253,213, 2, 43, 0, 0, 0,255,255, 1, 61,254,155, 3,148,255, 47, 16, 6, 2,173, 0, 0, 0, 2, 1,182,
+ 0, 0, 3, 27, 4, 35, 0, 2, 0, 5, 0, 0, 1, 3, 33, 3, 19, 33, 2,104,178, 1,101,179,179,254,155, 2,217, 1, 74,253,
+ 39,254,182, 0, 0, 1, 1,182, 2,216, 3, 27, 4, 35, 0, 2, 0, 0, 1, 3, 33, 2,104,178, 1,101, 2,217, 1, 74, 0, 0,
+255,255, 1,223, 1,254, 2,242, 4, 35, 16, 7, 2, 91, 0, 0,254, 15, 0, 0,255,255, 1,223, 1,254, 2,242, 4, 35, 16, 7,
+ 2, 92, 0, 0,254, 15, 0, 0, 0, 1, 0,193, 1,137, 3, 23, 3,223, 0, 11, 0, 0, 1, 53, 51, 21, 51, 21, 35, 21, 35, 53,
+ 35, 53, 1,162,148,225,225,148,225, 2,254,225,225,148,225,225,148, 0, 0, 0,255,255, 1, 47, 5, 41, 3,162, 6, 72, 16, 6,
+ 2,130, 0, 0,255,255, 2, 1, 5, 68, 2,206, 6, 16, 16, 6, 2,131, 0, 0, 0, 2, 1, 86, 4,225, 3,123, 7, 6, 0, 11,
+ 0, 23, 0, 87,178, 15,200, 9,184, 1, 4, 64, 12, 21,200, 3, 24, 12, 80, 0,123, 18, 80, 6, 24, 16,212,236,244,236, 49, 0,
+ 16,212,236,244,236, 48, 0, 75,176, 9, 84, 75,176, 12, 84, 91, 88,189, 0, 24,255,192, 0, 1, 0, 24, 0, 24, 0, 64, 56, 17,
+ 55, 56, 89, 1, 75,176, 9, 84, 88,189, 0, 24, 0, 64, 0, 1, 0, 24, 0, 24,255,192, 56, 17, 55, 56, 89, 1, 20, 6, 35, 34,
+ 38, 53, 52, 54, 51, 50, 22, 7, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 3,123,159,116,115,159,159,115,116,159,123, 88, 64,
+ 64, 87, 87, 64, 64, 88, 5,244,115,160,160,115,115,159,159,115, 63, 88, 87, 64, 65, 87, 88, 0, 0, 1, 1,164,254,117, 3, 25,
+ 0, 0, 0, 19, 0, 34,179, 11, 14, 10, 7,184, 1, 6, 64, 9, 14, 0, 1, 0, 10, 4,124, 17, 20, 16,212,236,196,212,204, 49,
+ 0, 47,212,252,196, 18, 57, 48, 33, 51, 14, 1, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 53, 52, 54, 2, 16,119, 45,
+ 43, 55, 54, 32, 62, 31, 38, 68, 30,122,115, 53, 61, 88, 31, 46, 46, 15, 15,133, 10, 10, 87, 93, 48,105, 0, 0, 0, 1, 1, 31,
+ 5, 29, 3,178, 6, 55, 0, 27, 0,187, 64, 33, 0, 18, 7, 14, 11, 4, 1, 18, 7, 15, 11, 4, 18,204, 25, 7, 4,204, 21, 11,
+ 28, 15, 1, 14, 0, 7, 21, 80, 22, 7, 80, 8, 28, 16,212,236,212,236, 17, 57, 57, 57, 57, 49, 0, 16,212, 60,252,212, 60,236,
+ 17, 18, 57, 17, 18, 57, 17, 18, 57, 17, 18, 57, 48, 0, 75,176, 9, 84, 75,176, 12, 84, 91, 88,189, 0, 28,255,192, 0, 1, 0,
+ 28, 0, 28, 0, 64, 56, 17, 55, 56, 89, 0, 75,176, 15, 84, 88,189, 0, 28, 0, 64, 0, 1, 0, 28, 0, 28,255,192, 56, 17, 55,
+ 56, 89, 64, 63, 9, 0, 12, 10, 12, 11, 12, 12, 11, 15, 11, 16, 15, 17, 15, 18, 15, 19, 15, 20, 15, 21, 15, 22, 15, 23, 9, 27,
+ 25, 0, 25, 1, 27, 10, 27, 11, 27, 12, 27, 13, 27, 14, 27, 15, 27, 16, 27, 17, 27, 18, 27, 19, 31, 20, 31, 21, 31, 22, 26, 23,
+ 25, 27, 31, 1, 93, 1, 39, 46, 1, 35, 34, 6, 7, 35, 62, 1, 51, 50, 22, 31, 1, 30, 1, 51, 50, 54, 55, 51, 14, 1, 35, 34,
+ 38, 2,100, 57, 21, 33, 14, 38, 36, 2,124, 1,102, 91, 39, 64, 37, 57, 21, 33, 13, 39, 36, 1,125, 1,102, 91, 39, 64, 5, 90,
+ 55, 20, 19, 74, 81,134,148, 28, 33, 55, 20, 19, 74, 81,134,148, 28, 0, 0, 0,255,255, 1, 88, 4,238, 4, 23, 6,102, 16, 6,
+ 2,135, 0, 0, 0, 1,254,161, 1,222, 3,115, 4, 8, 0, 15, 0, 0, 1, 37, 51, 21, 20, 23, 22, 59, 1, 21, 33, 34, 39, 38,
+ 53, 5,254,161, 2,107,184, 38, 38,105,250,254,241,175, 87, 82,253,150, 3,100,164,148,153, 49, 48,156, 96, 90,200,162, 0, 0,
+ 0, 2, 1, 37, 1,170, 3,172, 5, 15, 0, 13, 0, 21, 0, 0, 1, 22, 21, 20, 7, 4, 39, 38, 55, 3, 51, 23, 55, 51, 1, 6,
+ 23, 22, 51, 50, 53, 54, 2,181,178,242,254,246, 1, 1,182,250,136,191,184,136,254,188,139, 3, 1,135,128, 1, 3,220,249,180,
+129, 3, 3,135,192,241, 1, 47,224,224,254,138,174,152, 77, 77,140, 0, 0, 0, 0, 1, 1, 86, 2,156, 3,124, 6, 10, 0, 13,
+ 0, 0, 1, 20, 22, 59, 1, 21, 35, 34, 38, 53, 17, 35, 53, 33, 2,132, 56, 56,136,146,104,114,186, 1, 46, 3,127, 69, 71, 87,
+119,108, 2, 58, 81, 0, 0, 0, 0, 1, 1, 91, 2,156, 3,118, 5, 47, 0, 41, 0, 0, 1, 21, 46, 1, 35, 34, 6, 21, 20, 22,
+ 31, 1, 22, 23, 22, 21, 20, 6, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 39, 38, 47, 1, 46, 1, 53, 52, 54, 51, 50, 22,
+ 3, 80, 49,106, 56, 87, 86, 62, 93, 40,125, 50, 52,155,137, 56,123, 68, 64,125, 61, 82, 88, 32, 28,111, 41,107, 96,141,130, 64,
+113, 5, 13, 97, 22, 22, 47, 47, 36, 41, 18, 8, 24, 42, 43, 77, 87,102, 20, 19,107, 30, 30, 50, 45, 42, 23, 20, 23, 8, 21, 83,
+ 73, 88, 97, 17, 0, 1, 1, 18, 2,156, 3,191, 5, 15, 0, 11, 0, 0, 1, 3, 1, 35, 39, 7, 35, 1, 3, 51, 23, 55, 3,177,
+255, 1, 13,137,206,205,137, 1, 18,250,136,188,187, 5, 15,254,207,254,190,246,246, 1, 72, 1, 43,223,223, 0, 0, 1, 1, 94,
+ 2,156, 3,115, 6, 2, 0, 28, 0, 0, 1, 17, 35, 17, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 23, 21, 38, 39, 38, 35, 34,
+ 7, 6, 21, 20, 23, 22, 51, 2,211,127,107, 71, 68, 70, 86,173, 54, 51, 51, 48, 49, 50, 49, 51,113, 62, 36, 36, 54,121, 4, 91,
+254, 65, 1,109, 17, 67, 64, 95,104, 70, 88, 10, 9, 20, 96, 24, 12, 12, 64, 36, 75, 55, 42, 64, 0, 1, 0,214, 0, 0, 3, 29,
+ 5, 88, 0, 5, 0, 0, 33, 17, 33, 53, 33, 17, 2,149,254, 65, 2, 71, 4,208,136,250,168, 0, 0, 1, 0,214, 0, 0, 3, 29,
+ 5, 88, 0, 7, 0, 0, 33, 17, 33, 53, 33, 17, 51, 17, 2,149,254, 65, 1,191,136, 3,156,136, 1, 52,250,168, 0, 1, 0,214,
+ 0, 0, 3, 29, 5, 88, 0, 7, 0, 0, 1, 17, 51, 17, 35, 17, 33, 53, 2,149,136,136,254, 65, 2,240, 2,104,250,168, 2,104,
+136, 0, 0, 0, 0, 1, 0,214, 0, 0, 3, 29, 5, 88, 0, 7, 0, 0, 1, 17, 51, 17, 35, 17, 33, 53, 2,149,136,136,254, 65,
+ 1,188, 3,156,250,168, 1, 52,136, 0, 0, 0, 0, 1, 0,214, 0, 0, 3, 29, 5, 88, 0, 5, 0, 0, 37, 17, 51, 17, 33, 53,
+ 2,149,136,253,185,136, 4,208,250,168,136, 0,255,255, 1,141,254, 10, 3, 68,255,193, 16, 6, 2,161, 0, 0,255,255, 1, 23,
+ 4,238, 2,246, 6,102, 16, 6, 0, 67, 0, 0,255,255, 1,219, 4,238, 3,186, 6,102, 16, 6, 0,118, 0, 0,255,255, 1, 41,
+ 4,238, 3,168, 6,102, 16, 6, 2, 95, 0, 0,255,255, 1, 31, 5, 29, 3,178, 6, 55, 16, 6, 2,110, 0, 0, 0, 1, 1, 61,
+ 5, 98, 3,147, 5,246, 0, 3, 0, 17,182, 2,182, 0, 4, 1, 0, 4, 16,212,204, 49, 0, 16,212,236, 48, 1, 33, 21, 33, 1,
+ 61, 2, 86,253,170, 5,246,148,255,255, 0, 0, 5,187, 4,209, 6, 11, 16, 6, 6,161, 0, 0, 0, 1, 1, 47, 5, 41, 3,162,
+ 6, 72, 0, 13, 0, 32,185, 0, 11, 1, 3, 64, 12, 4, 7, 0,185, 14, 7, 80, 8, 1, 80, 0, 14, 16,212,236,220,236, 49, 0,
+ 16,244, 60,212,236, 48, 1, 51, 30, 1, 51, 50, 54, 55, 51, 14, 1, 35, 34, 38, 1, 47,119, 11, 96, 87, 85, 96, 14,119, 11,158,
+145,144,158, 6, 72, 76, 74, 74, 76,143,144,144, 0, 1, 2, 1, 5, 68, 2,206, 6, 16, 0, 3, 0, 20, 64, 9, 2,222, 0,221,
+ 4, 1, 97, 0, 4, 16,212,236, 49, 0, 16,244,236, 48, 1, 51, 21, 35, 2, 1,205,205, 6, 16,204, 0, 0, 0,255,255, 1, 63,
+ 5, 70, 3,145, 6, 16, 16, 6, 0,106, 0, 0, 0, 1, 1,153, 4,242, 3, 56, 6,198, 0, 21, 0, 0, 1, 50, 23, 22, 21, 20,
+ 7, 6, 7, 21, 35, 53, 54, 55, 54, 53, 52, 35, 34, 7, 53, 54, 2, 74,230, 7, 1, 28, 50, 52,148, 67, 49, 22,120, 90, 64, 86,
+ 6,198,170, 5, 5, 64, 36, 67, 33, 88,108, 22, 48, 20, 53, 94, 32,131, 24, 0,255,255, 1, 86, 4,225, 3,123, 7, 6, 16, 6,
+ 2,108, 0, 0, 0, 2, 1, 88, 4,238, 4, 23, 6,102, 0, 3, 0, 7, 0, 37, 64, 17, 6, 2,186, 4, 0,185, 8, 0, 7, 3,
+ 4, 1, 5, 7, 1, 3, 8, 16,212,220,212,204, 17, 57, 17, 18, 57, 49, 0, 16,244, 60,236, 50, 48, 1, 51, 3, 35, 1, 51, 3,
+ 35, 2, 23,170,224,137, 2, 12,179,248,135, 6,102,254,136, 1,120,254,136, 0,255,255, 1, 41, 4,238, 3,168, 6,102, 16, 6,
+ 2, 96, 0, 0, 0, 1, 2, 34, 4,238, 2,170, 6,170, 0, 3, 0, 0, 1, 17, 35, 17, 2,170,136, 6,170,254, 68, 1,188, 0,
+255,255, 1, 86, 4,238, 3,118, 6,170, 16, 39, 2,137, 0,204, 0, 0, 16, 7, 2,137,255, 52, 0, 0, 0, 0, 0, 2, 0,210,
+ 4,238, 3,144, 6,102, 0, 3, 0, 7, 0, 0, 1, 19, 35, 3, 33, 19, 35, 3, 1,132,205,135,248, 2, 0,190,137,223, 6,102,
+254,136, 1,120,254,136, 1,120,255,255, 1, 47, 5, 41, 3,162, 6,220, 16, 39, 2,107, 0, 0, 0,204, 16, 6, 2,106, 0, 0,
+ 0, 1, 1, 47, 5, 41, 3,162, 6, 72, 0, 13, 0, 0, 1, 62, 1, 51, 50, 22, 23, 35, 46, 1, 35, 34, 6, 7, 1, 47, 11,158,
+144,145,158, 11,119, 14, 96, 85, 87, 96, 11, 5, 41,143,144,144,143, 76, 74, 74, 76, 0, 0, 0, 0, 1, 1,213, 3,199, 3, 34,
+ 5, 32, 0, 3, 0, 0, 1, 35, 19, 51, 2,196,239,187,146, 3,199, 1, 89, 0, 0, 1, 1,239, 4,194, 2,226, 6,193, 0, 8,
+ 0, 0, 1, 16, 35, 53, 22, 53, 35, 53, 51, 2,225,241,112,112,241, 5,195,254,255,123, 3,137,254, 0, 0, 0, 0, 1, 1,240,
+ 4,194, 2,225, 6,193, 0, 8, 0, 0, 1, 53, 51, 21, 35, 20, 51, 21, 34, 1,240,241,112,112,241, 5,195,254,254,134,123, 0,
+ 0, 1, 1,219, 4,238, 2,230, 6,102, 0, 3, 0, 0, 1, 51, 3, 35, 2, 32,198,113,154, 6,102,254,136, 0,255,255, 1,121,
+253,184, 3, 88,255, 48, 16, 7, 0, 67, 0, 98,248,202, 0, 0,255,255, 1,121,253,184, 3, 88,255, 48, 16, 7, 0,118,255,158,
+248,202, 0, 0, 0, 1, 1,156,253, 1, 2,212,254,235, 0, 7, 0, 0, 1, 53, 51, 17, 35, 53, 35, 53, 2, 76,136,136,176,254,
+ 58,177,254, 22,177,136, 0, 0, 0, 1, 1,204,253, 1, 3, 4,254,235, 0, 7, 0, 0, 1, 21, 35, 17, 51, 21, 51, 21, 2, 84,
+136,136,176,253,178,177, 1,234,177,136, 0, 0, 0, 1, 1,115, 5,134, 3, 94, 7,112, 0, 5, 0, 0, 1, 33, 53, 33, 17, 35,
+ 2,214,254,158, 1,234,136, 6,232,136,254, 22, 0, 1, 1,163, 2,252, 3, 46, 4,113, 0, 19, 0, 0, 1, 53, 30, 1, 51, 50,
+ 54, 53, 52, 38, 39, 51, 30, 1, 21, 20, 6, 35, 34, 38, 1,163, 61, 88, 31, 46, 46, 15, 15,133, 10, 10, 87, 93, 48,105, 3,104,
+119, 45, 43, 55, 54, 32, 62, 31, 38, 68, 30,122,115, 53, 0, 0, 0, 1, 1,250,254, 10, 2,214,255,193, 0, 12, 0, 0, 1, 21,
+ 34, 38, 52, 54, 51, 21, 34, 6, 21, 20, 22, 2,214, 93,127,127, 93, 51, 71, 71,254,108, 98,128,184,127, 98, 71, 50, 51, 71, 0,
+ 0, 1, 1, 98,253,178, 3, 76,254,235, 0, 7, 0, 0, 1, 51, 21, 33, 53, 51, 53, 51, 2,155,177,254, 22,177,136,254, 58,136,
+136,177, 0, 0, 0, 1, 1, 94,253,178, 3, 72,254,235, 0, 7, 0, 0, 1, 35, 53, 33, 21, 35, 21, 35, 2, 15,177, 1,234,177,
+136,254, 99,136,136,177, 0, 0, 0, 1, 1, 95,253, 1, 3, 73,254,235, 0, 11, 0, 0, 1, 35, 53, 51, 53, 51, 21, 51, 21, 35,
+ 21, 35, 2, 16,177,177,136,177,177,136,253,178,136,177,177,136,177, 0, 0, 0, 0, 1, 1,115,254, 99, 3, 94,254,235, 0, 3,
+ 0, 0, 1, 53, 33, 21, 1,116, 1,234,254, 99,136,136, 0, 0, 0, 1, 1,246,254, 86, 4, 27, 0,128, 0, 13, 0, 0, 37, 21,
+ 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 61, 1, 4, 27, 89, 90,165,205,185, 90, 45, 44,128,148,195,105,106,156, 62, 62,126,148,
+ 0, 1, 0,182,254, 86, 2,219, 0,128, 0, 13, 0, 0, 55, 51, 21, 20, 23, 22, 59, 1, 21, 35, 34, 39, 38, 53,182,185, 44, 45,
+ 90,185,205,165, 90, 89,128,148,126, 62, 62,156,106,105,195, 0, 0, 1, 2, 1,254, 99, 2,206,255, 47, 0, 3, 0, 19, 64, 8,
+ 2,222, 0, 4, 1, 97, 0, 4, 16,212,236, 49, 0, 16,212,236, 48, 5, 51, 21, 35, 2, 1,205,205,209,204, 0, 0, 2, 1, 63,
+254,100, 3,146,255, 46, 0, 3, 0, 7, 0, 28, 64, 13, 6, 2,222, 4, 0, 8, 5, 97, 4, 1, 97, 0, 8, 16,212,252,212,236,
+ 49, 0, 16,212, 60,236, 50, 48, 5, 51, 21, 35, 37, 51, 21, 35, 1, 64,202,202, 1,136,202,202,210,202,202,202, 0, 2, 1,141,
+254, 10, 3, 68,255,193, 0, 11, 0, 23, 0, 29,181, 12, 0, 18, 0, 6, 24, 16,212,204,204, 16,204, 49, 0,181, 15, 9, 21, 9,
+ 3, 24, 16,212,204,204, 16,204, 48, 1, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 7, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50,
+ 54, 3, 68,127, 93, 92,127,127, 92, 93,127, 98, 71, 51, 51, 70, 70, 51, 51, 71,254,230, 92,128,128, 92, 92,127,127, 92, 50, 71,
+ 70, 51, 52, 70, 71, 0, 0, 0, 0, 1, 1,152,253,226, 2,229,255, 59, 0, 3, 0, 17, 64, 6, 0, 3, 4, 1, 3, 4, 16,212,
+204, 49, 0, 16,212,204, 48, 5, 51, 3, 35, 1,246,239,187,146,197,254,167, 0, 0, 1, 1,139,254,117, 3, 41, 0, 0, 0, 19,
+ 0, 56,179, 9, 6, 10, 13,186, 1, 6, 0, 6, 1, 5, 64, 9, 0, 9, 16, 19, 0, 16,124, 3, 20, 16,212,236,212,204, 16,196,
+ 49, 0, 47,246,254,197, 18, 57, 48, 1, 64, 13, 73, 1, 89, 1,105, 1,121, 1,137, 1,153, 1, 6, 93, 33, 30, 1, 21, 20, 6,
+ 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 38, 39, 2,188, 56, 53,120,118, 45, 87, 44, 34, 75, 47, 58, 61, 44, 44, 62,105,
+ 48, 89, 91, 12, 12,131, 17, 15, 48, 46, 30, 87, 61, 0, 0, 0,255,255, 1,174,254,117, 3, 35, 0, 0, 16, 6, 2,109, 10, 0,
+ 0, 1, 2, 36,253,115, 2,173,255, 47, 0, 3, 0, 0, 5, 17, 35, 17, 2,172,136,209,254, 68, 1,188, 0, 0, 0, 1, 1, 85,
+253,229, 3,124,255, 47, 0, 7, 0, 0, 5, 17, 35, 53, 33, 21, 35, 17, 3,124,137,254,235,137,209,254,182,194,194, 1, 74, 0,
+ 0, 1, 0,206,254, 57, 4, 3,255, 88, 0, 20, 0, 0, 1, 6, 35, 34, 3, 52, 53, 51, 22, 51, 50, 55, 51, 22, 23, 50, 55, 51,
+ 2, 7, 34, 2,104, 59,116,218, 17,118, 13,103,102, 16,118, 11,105,102, 15,118, 15,220,116,254,139, 82, 1, 26, 2, 3,150,150,
+149, 1,150,254,226, 1, 0, 0, 0, 1, 1, 41,254, 27, 3,168,255,147, 0, 6, 0, 25, 64, 11, 3, 0,186, 4, 1, 7, 3, 5,
+ 11, 1, 7, 16,212,236, 57, 49, 0, 16,212, 60,236, 57, 48, 1, 3, 51, 23, 55, 51, 3, 2, 31,246,139,180,181,139,246,254, 27,
+ 1,120,245,245,254,136, 0, 0, 0, 1, 1, 41,254, 27, 3,168,255,147, 0, 6, 0, 25, 64, 11, 4, 5, 2,186, 0, 7, 4, 2,
+ 11, 6, 7, 16,212,236, 57, 49, 0, 16,212,236, 50, 57, 48, 5, 51, 19, 35, 39, 7, 35, 2, 31,147,246,139,181,180,139,109,254,
+136,245,245, 0, 0, 1, 1, 47,254, 25, 3,162,255, 56, 0, 13, 0, 32,185, 0, 11, 1, 3, 64, 12, 4, 7, 0,185, 14, 7, 80,
+ 8, 1, 80, 0, 14, 16,212,236,220,236, 49, 0, 16,244, 60,212,236, 48, 5, 51, 30, 1, 51, 50, 54, 55, 51, 14, 1, 35, 34, 38,
+ 1, 47,119, 11, 96, 87, 85, 96, 14,119, 11,158,145,144,158,200, 76, 74, 74, 76,143,144,144, 0, 0, 1, 1, 47,254, 27, 3,162,
+255, 58, 0, 13, 0, 0, 1, 35, 46, 1, 35, 34, 6, 7, 35, 62, 1, 51, 50, 22, 3,162,119, 11, 96, 87, 85, 96, 14,119, 11,158,
+145,144,158,254, 27, 76, 74, 74, 76,143,144,144, 0, 1, 1, 31,254, 27, 3,178,255, 53, 0, 27, 0,134, 64, 33, 0, 18, 7, 14,
+ 11, 4, 1, 18, 7, 15, 11, 4, 18,204, 25, 7, 4,204, 21, 11, 28, 15, 1, 14, 0, 7, 21, 80, 22, 7, 80, 8, 28, 16,212,236,
+212,236, 17, 57, 57, 57, 57, 49, 0, 16,212, 60,252,212, 60,236, 17, 18, 57, 17, 18, 57, 17, 18, 57, 17, 18, 57, 48, 64, 63, 9,
+ 0, 12, 10, 12, 11, 12, 12, 11, 15, 11, 16, 15, 17, 15, 18, 15, 19, 15, 20, 15, 21, 15, 22, 15, 23, 9, 27, 25, 0, 25, 1, 27,
+ 10, 27, 11, 27, 12, 27, 13, 27, 14, 27, 15, 27, 16, 27, 17, 27, 18, 27, 19, 31, 20, 31, 21, 31, 22, 26, 23, 25, 27, 31, 1, 93,
+ 1, 39, 46, 1, 35, 34, 6, 7, 35, 62, 1, 51, 50, 22, 31, 1, 30, 1, 51, 50, 54, 55, 51, 14, 1, 35, 34, 38, 2,100, 57, 21,
+ 33, 14, 38, 36, 2,124, 1,102, 91, 39, 64, 37, 57, 21, 33, 13, 39, 36, 1,125, 1,102, 91, 39, 64,254, 88, 55, 20, 19, 74, 81,
+134,148, 28, 33, 55, 20, 19, 74, 81,134,148, 28, 0, 1, 1, 61,254,155, 3,148,255, 47, 0, 3, 0, 17,182, 2,182, 0, 4, 1,
+ 0, 4, 16,212,204, 49, 0, 16,220,236, 48, 5, 33, 21, 33, 1, 62, 2, 86,253,170,209,148, 0,255,255, 0, 0,254, 29, 4,209,
+254,109, 16, 6, 0, 66, 0, 0,255,255, 0, 0,254, 29, 4,209,255, 93, 16, 6, 6,140, 0, 0,255,255, 0, 88, 1,236, 4,121,
+ 3, 12, 16, 6, 0, 97, 0, 0, 0, 1, 0,141, 1,196, 4, 38, 2,104, 0, 3, 0, 0, 1, 21, 33, 53, 4, 38,252,104, 2,104,
+164,164, 0, 0, 0, 1, 0, 0, 1,196, 4,209, 2,104, 0, 3, 0, 0, 17, 53, 33, 21, 4,209, 1,196,164,164, 0, 1, 0, 47,
+255,160, 4,150, 4,188, 0, 3, 0, 0, 23, 39, 1, 23,139, 92, 4, 10, 93, 96, 76, 4,208, 77, 0, 1, 0, 8,255,186, 4,176,
+ 6, 23, 0, 3, 0, 0, 23, 39, 1, 23,111,103, 4, 68,100, 70, 70, 6, 23, 74, 0, 1, 1,250,254, 10, 2,214,255,193, 0, 12,
+ 0, 0, 1, 50, 54, 53, 52, 38, 35, 53, 50, 22, 20, 6, 35, 1,250, 51, 71, 71, 51, 93,127,127, 93,254,108, 71, 51, 50, 71, 98,
+127,184,128, 0, 0, 1, 1, 85,254,128, 3,124,255,202, 0, 7, 0, 0, 1, 17, 51, 21, 33, 53, 51, 17, 1, 85,137, 1, 21,137,
+254,128, 1, 74,194,194,254,182, 0, 2, 1, 85,253, 9, 3,124,255, 47, 0, 3, 0, 7, 0, 0, 5, 17, 33, 17, 1, 17, 33, 17,
+ 3,124,253,217, 1,158,254,235,209,253,218, 2, 38,254, 98, 1, 22,254,234, 0, 0, 1, 0,206,254, 57, 4, 3,255, 88, 0, 20,
+ 0, 0, 5, 54, 51, 50, 19, 20, 21, 35, 38, 35, 34, 7, 35, 38, 39, 34, 7, 35, 18, 55, 50, 2,104, 60,116,218, 17,117, 14,104,
+101, 15,118, 12,105,102, 15,118, 15,220,116,250, 82,254,230, 2, 3,150,150,149, 1,150, 1, 30, 1, 0, 0, 0, 0, 1, 1,139,
+ 4,203, 3, 70, 6,135, 0, 11, 0, 0, 1, 7, 39, 55, 39, 55, 23, 55, 23, 7, 23, 7, 2,104,125, 96,125,125, 96,125,126, 96,
+125,125, 96, 5, 73,125, 96,125,125, 97,126,126, 97,125,125, 96, 0, 1, 1,219, 4,194, 2,246, 6,210, 0, 29, 0, 0, 1, 46,
+ 1, 53, 52, 54, 55, 21, 14, 1, 21, 20, 23, 22, 31, 1, 30, 1, 21, 20, 6, 7, 53, 62, 1, 53, 52, 39, 38, 39, 2, 24, 32, 28,
+146,136, 82, 74, 10, 11, 19, 54, 34, 28,148,134, 82, 72, 9, 11, 18, 5,199, 28, 48, 28, 80, 81, 2,110, 2, 27, 28, 10, 12, 15,
+ 14, 43, 28, 48, 28, 80, 81, 2,110, 2, 27, 28, 10, 12, 15, 14,255,255, 0, 0, 4,203, 4,209, 6, 11, 16, 38, 6,161, 0, 0,
+ 16, 7, 6,161, 0, 0,255, 16,255,255, 1,239, 4,194, 2,226, 6,193, 16, 6, 2,143, 0, 0,255,255, 4, 2, 5, 68, 4,207,
+ 6, 16, 16, 7, 2,107, 2, 1, 0, 0, 0, 0, 0, 1,255, 19, 5,240, 5,190, 7, 55, 0, 15, 0, 0, 0, 34, 5, 4, 7, 35,
+ 52, 37, 54, 50, 23, 4, 21, 35, 38, 37, 2,160,110,254,226,254,244,126,118, 1,252,228,233,229, 1,252,118,127,254,243, 6,174,
+ 25, 23,142,240, 60, 27, 27, 60,240,142, 23, 0, 0, 1, 1,236, 4,116, 2,235, 6,102, 0, 3, 0, 0, 1, 19, 51, 3, 1,236,
+ 65,190,110, 4,116, 1,242,254, 14, 0, 0, 0, 0, 1, 1,230,254, 86, 2,229, 0, 72, 0, 3, 0, 0, 37, 3, 35, 19, 2,229,
+ 65,190,110, 72,254, 14, 1,242, 0, 1, 2, 30,254, 86, 2,250,255,164, 0, 9, 0, 0, 1, 35, 34, 61, 1, 51, 21, 20, 59, 1,
+ 2,250,132, 88,149, 51, 20,254, 86,183,151,164,104, 0, 0, 0,255,255, 1,147,254,225, 2,242, 4, 39, 16, 6, 0, 30, 0, 0,
+255,255, 1,219, 4,238, 3,186, 6,102, 16, 6, 0,118, 0, 0,255,255, 1, 63, 5, 70, 3,186, 7,216, 16, 38, 0,106, 0, 0,
+ 16, 7, 2,195, 0, 0, 1,114,255,255, 0, 25, 0, 0, 4,172, 6,102, 16, 38, 2,206, 0, 0, 16, 7, 2,195,254, 62, 0, 0,
+255,255, 1,233, 2, 47, 2,229, 3, 96, 16, 6, 0,121, 0, 0,255,255,255, 31, 0, 0, 4, 78, 6,102, 16, 38, 2,210, 0, 0,
+ 16, 7, 2,195,253, 68, 0, 0,255,255,254,237, 0, 0, 4, 72, 6,102, 16, 38, 2,212, 0, 0, 16, 7, 2,195,253, 18, 0, 0,
+255,255,255, 31, 0, 0, 4, 6, 6,102, 16, 38, 2,214, 0, 0, 16, 7, 2,195,253, 68, 0, 0,255,255,255,181,255,227, 4, 92,
+ 6,102, 16, 38, 2,220, 0, 0, 16, 7, 2,195,253,218, 0, 0,255,255,254,112, 0, 0, 4,172, 6,102, 16, 38, 2,225, 0, 0,
+ 16, 7, 2,195,252,149, 0, 0,255,255,255,206, 0, 0, 4,135, 6,102, 16, 38, 2,229, 0, 0, 16, 7, 2,195,253,243, 0, 0,
+255,255, 1, 54, 0, 0, 3,207, 7,216, 16, 38, 2,245, 0, 0, 16, 6, 2,196, 0, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172,
+ 5,213, 16, 6, 0, 36, 0, 0,255,255, 0,166, 0, 0, 4,113, 5,213, 16, 6, 0, 37, 0, 0,255,255, 0,215, 0, 0, 4,115,
+ 5,213, 16, 6, 3, 64, 0, 0, 0, 2, 0, 37, 0, 0, 4,172, 5,213, 0, 2, 0, 6, 0, 49,180, 3, 47, 4, 48, 7, 16,244,
+228, 49, 0,180, 5,180, 2,151, 4, 47,236,228, 48, 5, 64, 16, 1, 37, 5, 4, 0, 37, 3, 6, 3, 2, 37, 1, 37, 4, 5, 4,
+ 7, 16,236,236, 7, 16,236, 8,236, 37, 9, 1, 5, 33, 1, 51, 3,170,254,190,254,190, 3,134,251,121, 1,201,245,170, 4,121,
+251,135,170, 5,213, 0, 0, 0,255,255, 0,197, 0, 0, 4, 78, 5,213, 16, 6, 0, 40, 0, 0,255,255, 0,156, 0, 0, 4,145,
+ 5,213, 16, 6, 0, 61, 0, 0,255,255, 0,137, 0, 0, 4, 72, 5,213, 16, 6, 0, 43, 0, 0, 0, 3, 0,117,255,227, 4, 92,
+ 5,240, 0, 3, 0, 15, 0, 27, 0, 54, 64, 11, 3, 4, 50, 16, 54, 2, 10, 50, 22, 53, 28, 16,252,236,196,252,236,196,178,128,
+ 3, 1, 93, 49, 0, 64, 15, 7,151, 25,150, 28, 1,151, 2,177, 28, 13,151, 19,153, 28, 16,244,236, 16,244,236, 16,244,236, 48,
+ 1, 33, 53, 33, 23, 16, 2, 35, 34, 2, 17, 16, 18, 51, 50, 18, 19, 16, 2, 35, 34, 2, 17, 16, 18, 51, 50, 18, 3, 48,254,113,
+ 1,143, 89,135,154,153,135,135,153,154,135,211,247,253,253,246,247,252,253,247, 2,199,170,136, 1, 73, 1, 26,254,230,254,183,
+254,184,254,230, 1, 25, 1, 73,254,122,254,128, 1,126, 1,136, 1,135, 1,128,254,128, 0, 0,255,255, 0,201, 0, 0, 4, 6,
+ 5,213, 16, 6, 0, 44, 0, 0,255,255, 0,137, 0, 0, 4,201, 5,213, 16, 6, 0, 46, 0, 0, 0, 1, 0, 37, 0, 0, 4,172,
+ 5,213, 0, 6, 0, 48,180, 4, 47, 1, 48, 7, 16,244,228, 49, 0,179, 2,180, 5, 1, 47, 60,228, 48, 5, 64, 16, 6, 37, 2,
+ 1, 5, 37, 3, 4, 3, 6, 37, 0, 37, 1, 2, 1, 7, 16,236,236, 7, 16,236, 8,236, 51, 35, 1, 51, 1, 35, 1,246,209, 1,
+201,245, 1,201,209,254,141, 5,213,250, 43, 5, 35, 0, 0, 0,255,255, 0, 86, 0, 0, 4,121, 5,213, 16, 6, 0, 48, 0, 0,
+255,255, 0,139, 0, 0, 4, 70, 5,213, 16, 6, 0, 49, 0, 0, 0, 3, 0,137, 0, 0, 4, 72, 5,213, 0, 3, 0, 7, 0, 11,
+ 0, 40,183, 7, 8, 0, 49, 6, 11, 3, 12, 16,212, 60,196,244, 60,196, 49, 0, 64, 12, 2,151, 3,136, 10, 5,151, 6,177, 11,
+151, 10, 47,236,244,236, 16,244,236, 48, 1, 21, 33, 53, 1, 33, 53, 33, 19, 21, 33, 53, 4, 72,252, 65, 2,244,253,215, 2, 41,
+203,252, 65, 5,213,170,170,252,242,170,253, 57,170,170, 0, 0,255,255, 0,117,255,227, 4, 92, 5,240, 16, 6, 0, 50, 0, 0,
+255,255, 0,137, 0, 0, 4, 72, 5,213, 16, 6, 3, 76, 0, 0,255,255, 0,197, 0, 0, 4,117, 5,213, 16, 6, 0, 51, 0, 0,
+ 0, 1, 0,120, 0, 0, 4,109, 5,213, 0, 11, 0, 60,181, 2, 9, 49, 5, 8, 12, 16,212, 60,228, 50, 49, 0, 64, 9, 11, 7,
+151, 8,136, 1, 5,151, 4, 47,236, 50,244,236, 50, 48, 5, 64, 16, 0, 37, 6, 5, 11, 37, 6, 7, 6, 0, 37, 1, 37, 5, 6,
+ 5, 7, 16,236,236, 7, 16,236, 8,236, 9, 1, 33, 21, 33, 53, 9, 1, 53, 33, 21, 33, 3, 18,254, 57, 3, 34,252, 11, 1,198,
+254, 58, 3,245,252,222, 2,235,253,191,170,170, 2, 65, 2, 64,170,170, 0, 0,255,255, 0, 47, 0, 0, 4,162, 5,213, 16, 6,
+ 0, 55, 0, 0,255,255, 0, 37, 0, 0, 4,172, 5,213, 16, 6, 0, 60, 0, 0, 0, 3, 0,117, 0, 0, 4, 90, 5,213, 0, 29,
+ 0, 38, 0, 47, 0, 77, 64, 19, 34, 50, 5, 11, 28, 9, 38, 0, 30, 14, 27, 25, 44, 50, 20, 16, 40, 25, 48, 16,212, 60, 60,220,
+236, 16,196, 50,252, 60, 60,196, 50,220,236, 49, 0, 64, 20, 38, 40,151, 1, 24, 0, 26,151, 27,136, 13, 30, 39,151, 9, 16, 10,
+ 14,151, 13, 47,252, 60,220, 60,236, 50, 16,244,252, 60,220, 60,236, 50, 48, 1, 21, 22, 23, 22, 21, 20, 7, 6, 7, 21, 51, 21,
+ 33, 53, 51, 53, 38, 39, 38, 53, 52, 55, 54, 55, 53, 35, 53, 33, 21, 3, 54, 55, 54, 53, 52, 39, 38, 39, 3, 17, 6, 7, 6, 21,
+ 20, 23, 22, 2,205,176, 97,124,123, 97,177,147,254, 15,147,177, 97,123,123, 98,176,147, 1,241,147, 76, 43, 67, 67, 43, 76,203,
+ 76, 42, 68, 68, 42, 5, 43,118, 19, 91,115,235,235,115, 90, 19,116,170,170,116, 19, 90,115,235,235,115, 91, 19,118,170,170,252,
+163, 16, 42, 68,157,158, 68, 42, 16,253,201, 2, 55, 16, 42, 68,158,157, 68, 42,255,255, 0, 18, 0, 0, 4,190, 5,213, 16, 6,
+ 0, 59, 0, 0, 0, 1, 0,117, 0, 0, 4, 90, 5,213, 0, 31, 0, 57, 64, 15, 6, 30, 7, 14, 12, 0, 30, 17, 31, 25, 30, 24,
+ 19, 31, 32, 16,212, 60,212,236, 16,196,252, 60,196,212,236, 49, 0, 64, 13, 1, 30,151, 12, 19, 13, 17,151, 6, 31, 24,136, 16,
+ 47,228, 50, 50,252, 60,220, 60,236, 50, 48, 1, 17, 54, 55, 54, 25, 1, 51, 17, 16, 7, 6, 7, 21, 51, 21, 33, 53, 51, 53, 38,
+ 39, 38, 25, 1, 51, 17, 16, 23, 22, 23, 17, 2,205, 73, 46, 75,203,123, 98,176,147,254, 15,147,176, 98,123,203, 76, 45, 73, 5,
+213,252, 91, 34, 87,145, 1, 68, 1, 87,254,169,254,120,191,151, 32,214,170,170,214, 32,151,191, 1,136, 1, 87,254,169,254,188,
+145, 87, 34, 3,165, 0, 0, 0, 0, 1, 0, 74, 0, 0, 4,135, 5,180, 0, 31, 0, 64, 64, 23, 2, 30, 27, 14, 17,113, 21, 30,
+113, 27, 15,114, 21,111, 11,112, 0,114, 27,111, 5,108, 32, 16,244,236,228,244,236,228, 16,228, 16,228, 57, 17, 18, 57, 49, 0,
+ 64, 12, 24,248, 8,247, 30, 18, 14, 3, 1,249, 16, 0, 47, 60,238, 23, 50,246,238, 48, 51, 53, 51, 38, 2, 53, 16, 0, 51, 50,
+ 0, 17, 20, 2, 7, 51, 21, 33, 53, 54, 18, 53, 52, 2, 35, 34, 2, 21, 20, 18, 23, 21, 74,245,123,110, 1, 32,240,242, 1, 33,
+111,123,248,254, 49,120,134,180,154,154,179,134,120,172,134, 1, 32,188, 1, 55, 1,111,254,146,254,200,188,254,223,133,172,172,
+ 76, 1, 73,222,230, 1, 9,254,247,230,222,254,183, 76,172, 0,255,255, 0,201, 0, 0, 4, 6, 7, 78, 16, 39, 11,176, 0, 0,
+ 1,117, 16, 6, 2,214, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7, 78, 16, 39, 11,176, 0, 0, 1,117, 16, 6, 2,225, 0, 0,
+255,255, 0, 70,255,230, 4,149, 6,102, 16, 38, 2,237, 0, 0, 16, 6, 2,195, 0, 0, 0, 0,255,255, 0,169,255,234, 4, 40,
+ 6,102, 16, 38, 2,241, 0, 0, 16, 6, 2,195, 0, 0, 0, 0,255,255, 0,195,254, 86, 4, 27, 6,102, 16, 38, 2,243, 0, 0,
+ 16, 6, 2,195, 0, 0, 0, 0,255,255, 1, 54, 0, 0, 3,207, 6,102, 16, 38, 2,245, 0, 0, 16, 6, 2,195, 0, 0, 0, 0,
+255,255, 0, 51,255,255, 4,105, 7,216, 16, 38, 3, 1, 0, 0, 16, 6, 2,196, 0, 0, 0, 0, 0, 2, 0, 70,255,230, 4,149,
+ 4,122, 0, 13, 0, 42, 0, 0, 1, 39, 38, 39, 38, 7, 6, 21, 20, 23, 22, 51, 50, 55, 18, 27, 1, 51, 3, 23, 22, 23, 22, 59,
+ 1, 21, 35, 34, 39, 38, 39, 6, 7, 6, 39, 38, 39, 38, 17, 16, 55, 54, 55, 2,254, 44, 45,177, 98, 61, 77, 74, 77, 85,133, 72,
+105, 59, 99,164,205, 40, 9, 35, 41, 32, 88,110, 94, 84, 41, 17, 46, 92, 45,143,198,114,118,126,143,161, 2, 9,231,236, 1, 1,
+111,137,183,220,105,107,213, 3, 42,254,189, 1, 37,253,161,219, 49, 41, 48,156, 84, 42, 88,109, 89, 42, 1, 2,150,156, 1, 20,
+ 1, 41,135,151, 3, 0, 0, 0, 0, 2, 0,151,254, 86, 4, 97, 6, 35, 0, 14, 0, 28, 0, 0, 37, 17, 35, 17, 16, 5, 4, 17,
+ 2, 7, 4, 19, 18, 5, 6, 3, 22, 23, 4, 17, 16, 5, 53, 4, 17, 52, 39, 36, 17, 1, 81,185, 1,205, 1,143, 1,171, 1, 22,
+ 2, 4,254, 26,130,171, 81,227, 1, 32,254, 48, 1,107,234,254,251, 69,254, 17, 6, 3, 1,231, 31, 27,254,154,254,236, 98, 54,
+254,209,254, 61, 23, 6, 1,113,141, 21, 25, 1, 39, 1, 26, 22,170, 6, 1, 48,189, 13, 15,254,224, 0, 0, 0, 0, 1, 0, 32,
+254, 86, 4,109, 4, 96, 0, 14, 0, 0, 19, 38, 43, 1, 53, 51, 50, 23, 9, 1, 51, 1, 17, 35, 17,220, 45, 94, 49, 70,194, 65,
+ 0,255, 1, 70,191,254, 91,190, 3, 68,126,158,176,253, 83, 3, 93,251,160,254, 86, 1,170, 0, 0, 2, 0,137,255,227, 4, 72,
+ 6, 34, 0, 11, 0, 52, 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 37, 38, 39, 38, 53, 52, 54, 51, 50, 31, 1, 21,
+ 38, 39, 38, 15, 1, 6, 15, 1, 6, 21, 20, 23, 22, 23, 22, 23, 22, 23, 22, 17, 16, 2, 35, 34, 2, 17, 16, 55, 54, 2,104,140,
+144,144,140,141,144,144,254, 89, 19, 40, 62,237,197,102, 50,151, 66, 70, 85, 82, 32, 73, 60, 39, 27, 13, 17, 41, 24,105,235,121,
+124,246,234,233,246,123, 31, 3,223,218,214,213,219,219,213,214,218, 76, 9, 40, 61, 92,136,164, 12, 36,173, 24, 15, 17, 2, 1,
+ 2, 43, 28, 24, 46, 33, 19, 24, 21, 13, 1, 3,148,151,254,226,254,225,254,211, 1, 45, 1, 31, 1, 30,151, 38,255,255, 0,169,
+255,234, 4, 40, 4,123, 16, 6, 1,249, 0, 0, 0, 1, 0,152,254, 82, 4, 38, 6, 20, 0, 29, 0, 0, 37, 22, 23, 22, 21, 20,
+ 7, 6, 35, 52, 53, 22, 55, 54, 53, 52, 39, 38, 35, 32, 3, 2, 1, 33, 53, 33, 21, 0, 19, 18, 2,248,132, 79, 84, 74, 80,163,
+ 69, 42, 32, 32, 31, 58,253,181, 20, 17, 2, 76,253,236, 3,102,252,254, 46, 44,127, 1, 75, 79,120,115, 80, 87, 75, 76, 5, 44,
+ 35, 37, 53, 44, 42, 2, 51, 1,224, 1,101,185,185,254, 97,254, 90,254,105, 0, 0, 1, 0,195,254, 86, 4, 27, 4,123, 0, 19,
+ 0, 46, 64, 10, 2, 6, 0, 74, 13, 9, 6, 11, 70, 20, 16,244,236, 50,252,236, 49, 64, 15, 9, 14, 3, 0, 4, 10, 6,140, 17,
+190, 12,194, 1,195, 10, 0, 47,228,228,244,236, 17, 23, 57, 48, 1, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62,
+ 1, 51, 50, 22, 4, 27,185,106,113,129,139,184,184, 49,168,115,171,169, 2,182,251,160, 4, 96,151,142,183,171,253,135, 4, 96,
+168, 96, 99,225, 0, 3, 0,137,255,227, 4, 72, 5,220, 0, 8, 0, 17, 0, 29, 0, 57, 64, 11, 9, 0, 18, 21, 68, 10, 8, 18,
+ 27, 62, 30, 16,244,236, 50,252,236, 50, 49, 64, 14, 9,182, 0, 14,140, 24, 0, 4,140, 18,155, 24,153, 30, 0, 16,228,244,236,
+196, 16,236,182,239, 0,191, 0, 64, 0, 3, 93, 16,236, 48, 1, 38, 39, 38, 35, 34, 7, 6, 7, 5, 33, 22, 23, 22, 51, 50, 55,
+ 54, 1, 50, 18, 17, 16, 2, 35, 34, 2, 17, 16, 18, 3,131, 7, 63, 72,141,140, 72, 63, 7, 2, 53,253,203, 6, 64, 72,140,141,
+ 72, 64,254,235,233,247,246,234,233,246,246, 3, 60,226,135,153,153,135,226,184,224,137,154,154,137, 4, 56,254,119,254,141,254,
+138,254,121, 1,135, 1,118, 1,115, 1,137, 0, 0, 1, 1, 54, 0, 0, 3,207, 4, 96, 0, 15, 0, 29, 64, 6, 6, 0, 6, 15,
+ 13, 16, 16,212,204,252,204, 49, 64, 7, 13,182, 0,194, 6,182, 7, 0, 47,236,244,236, 48, 1, 17, 20, 23, 22, 59, 1, 21, 35,
+ 34, 39, 38, 39, 17, 35, 53, 2,196, 34, 36,108, 89,111,180, 82, 81, 1,210, 4, 96,253, 43,145, 46, 48,156, 96, 98,212, 2, 59,
+143, 0, 0, 0,255,255, 0,236, 0, 0, 4,178, 4, 96, 18, 6, 0,250, 0, 0, 0, 1, 0, 68, 0, 0, 4,134, 6, 21, 0, 13,
+ 0, 0, 9, 1, 35, 9, 1, 35, 1, 39, 38, 7, 35, 53, 23, 4, 2,130, 2, 4,195,254,198,254,126,195, 1,235, 74, 47,154, 49,
+ 70, 1, 18, 5,101,250,155, 3, 60,252,196, 4, 50,198,127, 1,158, 2, 7, 0,255,255, 0,195,254, 84, 4,158, 4, 96, 16, 6,
+ 0,119, 0, 0, 0, 1, 0,116, 0, 0, 4, 66, 4, 96, 0, 21, 0, 0, 33, 1, 51, 1, 54, 55, 54, 55, 54, 39, 38, 39, 51, 49,
+ 22, 23, 22, 21, 20, 7, 6, 7, 1,202,254,170,198, 1, 33,120,100, 76, 4, 2, 24, 28,106,186, 69, 46, 42,136,177,123, 4, 96,
+252, 84,124,172,129,112, 53,100,119,131, 89,124,114, 78,196,175,228,116, 0, 0, 0, 1, 0,161,254, 82, 4, 56, 6, 20, 0, 38,
+ 0, 0, 37, 22, 23, 22, 21, 20, 7, 6, 35, 52, 53, 22, 55, 54, 53, 52, 39, 38, 35, 32, 3, 52, 37, 36, 17, 52, 55, 35, 53, 33,
+ 21, 32, 17, 20, 5, 21, 4, 23, 18, 3, 17,132, 79, 84, 74, 80,163, 69, 42, 32, 32, 32, 57,253,146, 1, 1, 77,254,232,220,208,
+ 3, 21,253,139, 2, 16,253,199, 1, 2,127, 1, 75, 79,120,115, 80, 87, 75, 76, 5, 44, 35, 37, 53, 44, 42, 1,225,232,112, 36,
+ 1, 4,197, 82,185,185,254,221,191, 9,170, 38,220,254,191, 0,255,255, 0,137,255,227, 4, 72, 4,123, 16, 6, 0, 82, 0, 0,
+ 0, 1, 0, 80,255,217, 4,158, 4, 96, 0, 23, 0, 0, 19, 33, 21, 35, 17, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 53,
+ 17, 33, 17, 35, 17, 35, 80, 4, 49,141, 49, 55, 15, 44, 7, 35, 74, 37,113, 92,254, 84,180,143, 4, 96,184,253, 80, 72, 63, 5,
+ 1,133, 13, 12,131,176, 2,156,252, 88, 3,168, 0, 2, 0,190,254, 86, 4, 84, 4,124, 0, 16, 0, 28, 0, 46, 64, 10, 17, 18,
+ 4, 71, 23, 10, 6, 12, 70, 29, 16,244,236, 50,252,236, 49, 64, 14, 10, 20, 26,140, 7, 20,140, 0,190, 7,153, 11,195, 29, 0,
+ 16,228,228,244,236, 16,238, 17, 57, 48, 1, 54, 23, 22, 17, 16, 2, 35, 34, 38, 39, 17, 35, 17, 16, 55, 54, 1, 52, 38, 35, 34,
+ 6, 21, 20, 22, 51, 50, 54, 2,132,232,116,116,232,202,102,153, 44,185,110,131, 1,228,135,133,134,138,138,134,133,135, 4,123,
+ 1,158,157,254,234,254,239,254,201, 87, 83,253,201, 3,198, 1, 60,134,157,253,180,214,218,219,213,212,220,218, 0, 1, 0,195,
+254, 82, 4, 37, 4,123, 0, 36, 0, 0, 37, 22, 23, 22, 21, 20, 7, 6, 35, 52, 53, 22, 55, 54, 53, 52, 39, 38, 35, 32, 0, 16,
+ 0, 33, 50, 22, 23, 21, 46, 1, 35, 34, 6, 21, 20, 23, 22, 2,236,132, 79, 84, 74, 80,163, 69, 42, 32, 32, 31, 58,254,252,254,
+219, 1, 37, 1, 4, 81,154, 78, 73,147, 93,173,186, 93, 94,127, 1, 75, 79,120,115, 80, 87, 75, 76, 5, 44, 35, 37, 53, 44, 42,
+ 1, 56, 2, 40, 1, 56, 42, 44,193, 65, 58,224,208,209,110,111, 0, 2, 0,137,255,226, 4,107, 4, 96, 0, 13, 0, 29, 0, 50,
+ 64, 10, 29, 10, 18, 16, 68, 4, 18, 23, 62, 30, 16,244,236,244,236,196,179, 14, 27, 23, 16, 17, 18, 57, 57, 49, 64, 11, 7,140,
+ 20, 0, 14,182, 27,194, 20,153, 30, 0, 16,228,244,236, 50, 16,236, 48, 1, 34, 7, 6, 21, 20, 22, 51, 50, 54, 53, 52, 39, 38,
+ 55, 22, 17, 20, 7, 6, 39, 34, 2, 17, 16, 55, 54, 51, 33, 21, 2, 97,135, 70, 72,144,140,141,144,172, 60,221,206,151,114,215,
+233,246,123,115,241, 2, 3, 3,167, 80, 83,213,213,219,219,146,249,129, 45, 21,162,254,230,228,167,127, 1, 1, 45, 1, 31, 1,
+ 9,153,143,184, 0, 1, 0,159, 0, 0, 4, 50, 4, 94, 0, 17, 0, 33, 64, 7, 13, 3, 15, 6, 12, 10, 18, 16,212,204,252,196,
+204, 49, 0, 64, 8, 15, 11,140, 12,194, 3,182, 4, 47,236,244,236, 50, 48, 37, 22, 59, 1, 21, 35, 34, 39, 38, 53, 17, 33, 53,
+ 33, 21, 33, 17, 20, 2,230, 36,108, 89,111,180, 82, 82,254,152, 3,146,254,146,204, 48,156, 96, 98,212, 2, 18,182,182,253,227,
+145, 0, 0, 0, 0, 1, 0, 51,255,255, 4,105, 4, 96, 0, 30, 0, 0, 37, 50, 55, 54, 55, 54, 39, 38, 39, 51, 49, 22, 23, 22,
+ 21, 20, 7, 6, 37, 34, 39, 38, 53, 3, 35, 53, 33, 17, 20, 23, 22, 2,116,150, 90, 59, 15, 8, 30, 28,106,186, 70, 45, 42,128,
+133,254,250,180, 82, 82, 1,210, 1,143, 34, 35,156,179,118,187,102,128,119,131, 90,123,115,154,225,203,211, 1, 96, 98,212, 2,
+ 59,143,253, 43,145, 46, 48, 0, 0, 2, 0, 76,254, 86, 4,133, 4,104, 0, 10, 0, 41, 0, 79, 64, 13, 7, 18, 15, 19, 3, 6,
+ 30, 22, 39, 35, 18, 26, 42, 16,176, 10, 75, 81, 88,220, 27,212, 89,236,212,180, 48, 39,128, 39, 2, 93, 60,196,252, 60,212,180,
+ 48, 15,128, 15, 2, 93,236, 49, 64, 16, 3, 39,140, 22, 31, 0,140, 30, 11,190, 19, 22,153, 21,195, 42, 0, 16,236,228, 50,244,
+ 60,236, 50, 16,236, 50, 48, 1, 34, 21, 17, 50, 55, 54, 53, 52, 39, 38, 39, 50, 23, 22, 17, 16, 7, 6, 35, 17, 35, 17, 34, 39,
+ 38, 17, 16, 55, 54, 55, 21, 6, 7, 6, 21, 20, 23, 22, 51, 17, 16, 3, 5, 65, 92, 86, 77, 77, 71, 42,138,119,127,127,129,193,
+183,199,124,126,126,104,154, 65, 49, 76, 76, 78,101, 3,203,145,253, 82,104, 93,223,221, 99, 91,157,132,141,254,217,254,230,150,
+152,254,110, 1,145,153,155, 1, 20, 1, 44,132,109, 28,163, 26, 75,115,190,216,101,103, 2,175, 1, 46, 0, 0, 0, 1, 0, 89,
+254, 86, 4,120, 4, 96, 0, 23, 0, 0, 5, 3, 1, 35, 1, 3, 38, 43, 1, 53, 51, 32, 23, 19, 1, 51, 1, 19, 22, 59, 1, 21,
+ 35, 32, 2,238,142,254,247,191, 1,116,183, 47,156, 49, 70, 1, 0, 67,143, 1, 10,191,254,139,182, 47,157, 49, 70,254,255,250,
+ 1,122,253,214, 3, 9, 1,229,126,158,176,254,132, 2, 44,252,244,254, 30,126,158, 0, 0, 0, 0, 1, 0,131,254, 86, 4, 78,
+ 4, 96, 0, 27, 0, 0, 37, 54, 55, 54, 53, 17, 51, 17, 20, 7, 6, 7, 17, 35, 17, 38, 39, 38, 53, 17, 51, 17, 20, 23, 22, 23,
+ 17, 51, 2,196, 63, 62, 84,185,130,121,143,183,143,121,130,185, 84, 62, 63,183,140, 22, 64, 87,166, 2,129,253,120,216,145,135,
+ 1,254,111, 1,145, 1,135,145,216, 2,136,253,127,166, 87, 64, 22, 3,212, 0, 0, 1, 0, 70,255,227, 4,140, 4, 96, 0, 38,
+ 0, 0, 1, 18, 16, 7, 6, 35, 34, 38, 39, 14, 1, 35, 34, 39, 38, 16, 19, 51, 2, 17, 6, 23, 22, 55, 54, 55, 54, 17, 51, 16,
+ 23, 22, 23, 22, 55, 54, 39, 16, 3, 4, 9,131, 50, 75,186, 85,130, 21, 20,128, 88,186, 75, 50,131,190,126, 1, 18, 41, 64, 86,
+ 34, 25,170, 25, 34, 86, 64, 41, 18, 1,126, 4, 96,254,248,253,191,123,185,103, 76, 72,107,185,123, 2, 65, 1, 8,254,237,254,
+225,226, 62,145, 2, 2,111, 82, 1,121,254,135, 82,111, 2, 2,145, 62,226, 1, 31, 1, 19, 0,255,255, 1, 54, 0, 0, 3,207,
+ 6, 16, 16, 38, 2,245, 0, 0, 16, 6, 0,106, 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105, 6, 16, 16, 38, 3, 1, 0, 0,
+ 16, 6, 0,106, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72, 6,102, 16, 38, 2,251, 0, 0, 16, 6, 2,195, 0, 0, 0, 0,
+255,255, 0, 51,255,255, 4,105, 6,102, 16, 38, 3, 1, 0, 0, 16, 6, 2,195, 0, 0, 0, 0,255,255, 0, 70,255,227, 4,140,
+ 6,102, 16, 38, 3, 5, 0, 0, 16, 6, 2,195, 0, 0, 0, 0, 0, 3, 0,149,255,232, 4, 67, 6, 36, 0, 9, 0, 25, 0, 35,
+ 0, 0, 1, 32, 55, 54, 39, 38, 7, 6, 7, 6, 5, 4, 3, 6, 37, 36, 39, 38, 3, 2, 55, 54, 51, 32, 19, 22, 5, 6, 39, 18,
+ 23, 22, 55, 54, 55, 54, 1, 93, 1, 12, 78,147, 26, 31,172,142, 73, 53, 1,237, 1,124,192,117,255, 0,254,237,116,102, 10, 9,
+128,134,210, 1, 77, 50, 27,254,142, 67,240, 6, 54, 82,165,175, 54, 87, 3,112, 65,123,137,161, 6, 5,165,122,253,250,254,137,
+225, 12, 15,198,178, 1,151, 1,127,202,212,254,130,205,255, 30, 10,254,253,105,161, 4, 4,152,245, 0, 0, 0, 0, 2, 0,114,
+255,233, 4, 83, 6, 36, 0, 9, 0, 36, 0, 0, 1, 54, 39, 38, 39, 38, 7, 6, 23, 22, 23, 4, 39, 38, 55, 18, 33, 50, 23, 22,
+ 3, 2, 7, 6, 35, 34, 39, 38, 19, 23, 18, 23, 22, 51, 50, 55, 54, 3,139, 4, 53, 74,103,172, 31, 26,147, 78,233,254,221,110,
+240, 29, 45, 1, 82,171,135,128, 9, 9,128,137,228,193,159,149, 13,195, 7, 78,114, 94,121,100, 80, 3,112,191,119,166, 4, 6,
+161,137,123, 65,170, 10, 75,164,251, 1,126,212,200,254,127,254,125,198,213,213,200, 1,235, 1,254, 83,106,156,157,126, 0, 0,
+ 0, 1, 0, 34, 0, 0, 4,185, 5,225, 0, 27, 0, 0, 1, 6, 3, 6, 21, 17, 35, 17, 52, 39, 2, 39, 38, 7, 53, 54, 23, 4,
+ 19, 18, 55, 54, 23, 22, 7, 6, 39, 38, 3,173,113, 79, 42,203, 42,100, 92,116,120, 76,151, 1, 15, 74,115,229,111, 64,122, 56,
+ 32,118, 86, 5, 17, 79,254,250,141,165,253,118, 2,138,180,126, 1, 42, 43, 52, 26,170, 24, 27, 48,254,114, 1,137, 53, 26, 49,
+ 95,148, 84, 24, 18, 0, 0, 0,255,255,254,112, 0, 0, 4,185, 6,102, 16, 38, 3, 13, 0, 0, 16, 7, 2,195,252,149, 0, 0,
+255,255, 0, 34, 0, 0, 4,185, 7, 78, 16, 38, 3, 13, 0, 0, 16, 7, 11,176, 0, 0, 1,117, 0, 3, 0,109,254, 86, 4,100,
+ 5,213, 0, 21, 0, 30, 0, 39, 0, 0, 1, 35, 17, 38, 39, 38, 17, 16, 55, 54, 55, 17, 51, 17, 22, 23, 22, 17, 16, 7, 6, 7,
+ 53, 54, 55, 54, 53, 52, 39, 38, 39, 3, 17, 6, 7, 6, 21, 20, 23, 22, 2,196,184,179,104,132,132, 93,190,184,178,105,133,133,
+ 94,189, 86, 53, 82, 82, 42, 97,184, 87, 52, 81, 81, 40,254, 86, 1,147, 24,121,150, 1, 31, 1, 14,167,118, 26, 1, 97,254,159,
+ 24,120,151,254,226,254,242,167,120, 25,165, 23, 71,110,213,188,135, 70, 25,252,189, 3, 67, 22, 73,109,214,185,138, 68, 0, 0,
+ 0, 2, 0, 57,255,255, 4,152, 4, 96, 0, 13, 0, 30, 0, 0, 1, 33, 6, 7, 2, 51, 50, 3, 51, 2, 55, 54, 3, 38, 55, 22,
+ 23, 18, 37, 38, 3, 2, 35, 32, 19, 54, 55, 35, 53, 33, 21, 3,146,253,176, 39, 3, 4, 84,177, 5,170, 3,175, 81, 1, 1,157,
+ 48, 6, 14,254,228,238, 39, 40,237,254,231, 11, 4, 48, 65, 4, 95, 3,168,144,253,254,171, 1,211,254, 43, 2, 1, 1, 84,253,
+144,145,247,253,223, 1, 1, 1, 51,254,204, 2, 32,239,153,184,184, 0, 0, 0, 0, 1, 0, 51,254, 91, 4,146, 4,103, 0, 47,
+ 0, 0, 5, 38, 39, 38, 55, 7, 2, 7, 6, 39, 38, 55, 54, 55, 54, 39, 38, 35, 34, 7, 53, 54, 23, 22, 23, 22, 7, 55, 18, 55,
+ 54, 23, 22, 7, 6, 7, 6, 23, 22, 51, 50, 55, 2, 7, 6, 39, 53, 4, 3,189,246, 33, 21, 24,189, 96,200,141, 3, 1, 61, 96,
+136, 91, 43, 26,142, 57, 91, 82,126,246, 33, 19, 42,189, 96,200,141, 3, 1, 61, 96,136, 91, 43, 26,142, 57, 91, 38,205,152,173,
+ 1, 55, 10, 32,240,156, 99,108,254,247,124, 89,145, 68, 84,132,124,203,169,104,108,224, 61, 17, 34,238,140,112,108, 1, 9,124,
+ 89,145, 68, 84,132,124,203,169,104,108,253,224,102, 77, 90,160,160, 0, 0, 0, 0, 2, 0,117,254, 86, 4, 92, 5,240, 0, 10,
+ 0, 27, 0, 0, 0, 16, 2, 35, 34, 2, 17, 16, 18, 51, 50, 1, 17, 38, 39, 38, 17, 16, 18, 51, 50, 18, 17, 16, 7, 6, 7, 17,
+ 3,137,135,154,153,135,135,153,154,255, 0,179, 95,123,247,252,253,247,124, 94,181, 1,160, 2,146, 1, 26,254,230,254,183,254,
+184,254,230,253,207, 1,150, 34,148,191, 1,136, 1,135, 1,128,254,128,254,121,254,124,194,149, 34,254,106, 0, 0, 2, 0,137,
+254, 86, 4, 72, 4,123, 0, 11, 0, 27, 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 3, 17, 35, 17, 38, 39, 38, 17,
+ 16, 18, 32, 18, 17, 16, 7, 6, 2,104,140,144,144,140,141,144,144, 49,184,168, 96,123,246, 1,210,247,123, 95, 3,223,218,214,
+213,219,219,213,214,218,252, 10,254,109, 1,147, 26,119,150, 1, 31, 1, 30, 1, 46,254,210,254,226,254,225,150,118, 0, 0, 0,
+ 0, 1, 0,139,254, 82, 4, 76, 5,213, 0, 35, 0, 0, 1, 34, 7, 6, 17, 16, 18, 51, 50, 23, 22, 21, 20, 7, 6, 35, 52, 53,
+ 22, 55, 54, 53, 52, 39, 38, 35, 34, 39, 38, 17, 16, 55, 54, 41, 1, 21, 2,231,218, 77, 98,176,129,122, 89, 84, 74, 80,163, 69,
+ 42, 32, 32, 32, 57,234,159,123,159,139, 1, 50, 1,101, 5, 43,119,152,254,205,254,206,254,208, 84, 79,120,115, 80, 87, 75, 76,
+ 5, 44, 35, 37, 53, 44, 42,203,158, 1,157, 1,110,205,177,170, 0, 1, 0,155,254, 82, 4, 41, 4, 96, 0, 35, 0, 0, 1, 33,
+ 34, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 35, 52, 53, 22, 55, 54, 53, 52, 39, 38, 35, 34, 0, 17, 16, 55, 54,
+ 41, 1, 4, 41,254,155,193, 73, 93, 93, 95, 98,133, 78, 84, 74, 80,163, 69, 42, 32, 32, 32, 57,187,254,219,147,138, 1, 12, 1,
+101, 3,196, 85,108,212,209,110,111, 2, 2, 74, 79,120,115, 80, 87, 75, 76, 5, 44, 35, 37, 53, 44, 42, 1, 56, 1, 20, 1, 40,
+136,129, 0, 0,255,255, 0,233, 0, 0, 4, 88, 5,213, 18, 6, 0, 41, 0, 0, 0, 1, 0, 0,254, 86, 4, 6, 6, 20, 0, 35,
+ 0, 0, 33, 17, 52, 55, 54, 51, 50, 22, 23, 21, 46, 1, 35, 34, 7, 6, 21, 17, 33, 21, 33, 17, 20, 7, 6, 35, 34, 38, 39, 53,
+ 30, 1, 51, 50, 55, 54, 1,174,136, 96,169, 49, 99, 51, 36, 82, 44,120, 58, 75, 1, 65,254,191,139, 98,173, 57,102, 46, 49,100,
+ 48, 87, 64, 82, 4,130,160,142,100, 18, 18,164, 28, 29, 62, 81,111,254,201,143,253, 63,146,165,115, 21, 22,164, 31, 33, 75, 95,
+ 0, 1, 0, 96,255,252, 4,129, 5,213, 0, 23, 0, 0, 1, 3, 1, 3, 6, 23, 22, 55, 21, 34, 39, 38, 55, 19, 1, 19, 54, 39,
+ 38, 7, 53, 50, 23, 22, 1,227,110, 3, 12,234, 39, 27, 66,131,230, 81, 95, 19,154,253, 6,172, 39, 27, 66,131,230, 81, 95, 4,
+135,254, 91, 1,126,253, 44, 96, 42,108, 35,189, 70, 82,182, 1,218,254,145, 2,144, 96, 42,108, 35,189, 70, 82, 0, 1, 0,132,
+ 0, 0, 4, 77, 6, 19, 0, 7, 0, 0, 9, 1, 35, 19, 33, 1, 51, 3, 4, 77,254,231,184,226,253, 38, 1, 25,184,226, 3,112,
+252,144, 2,198, 3, 77,253, 93, 0, 1, 0, 33,254, 86, 4,154, 5,241, 0, 33, 0, 0, 1, 17, 35, 17, 6, 7, 53, 54, 5, 4,
+ 19, 18, 17, 16, 3, 35, 18, 17, 16, 39, 48, 7, 6, 21, 17, 35, 48, 17, 16, 63, 1, 38, 39, 38, 1,129,170, 98, 84,155, 1, 5,
+ 1, 66,215,192,224,225,238, 60,102, 90,203,208,112,140,157, 75, 5, 75,253,140, 2, 73, 10, 77,198,102, 5, 7,254,213,254,241,
+253,189,254, 55,254,179, 1, 76, 1,202, 1,243, 91, 79, 70,235,253,198, 2, 53, 1, 2,177, 96,182, 52, 25, 0, 0, 1, 0, 89,
+254,144, 4,120, 4,120, 0, 22, 0, 0, 1, 3, 35, 1, 38, 39, 1, 35, 1, 38, 39, 38, 35, 53, 32, 23, 22, 19, 18, 17, 35, 16,
+ 39, 3, 80,239,185, 1,100, 14, 50,254, 70,185, 2, 31, 98, 46,188,211, 1, 45,242,224,172,116,168, 96, 1, 52,254,204, 1,192,
+ 35, 77,253,208, 2,176,127, 33,132,164,216,200,254, 80,254,223,254,137, 1, 94,246, 0, 0, 0, 0, 1, 0, 52,255,242, 4,145,
+ 4,103, 0, 51, 0, 0, 1, 2, 7, 6, 35, 34, 53, 52, 1, 54, 53, 52, 39, 38, 35, 34, 7, 53, 54, 51, 50, 23, 4, 17, 20, 7,
+ 55, 18, 55, 54, 51, 50, 21, 20, 1, 6, 21, 20, 23, 22, 51, 50, 55, 21, 6, 35, 34, 39, 36, 17, 52, 55, 1,236, 96,200, 55, 34,
+ 55, 1, 36, 62, 14, 26,142, 57, 91, 64, 91, 26, 27, 1, 29, 29,189, 96,200, 55, 34, 55,254,220, 62, 14, 26,142, 57, 91, 64, 91,
+ 26, 27,254,227, 29, 1,153,254,247,124, 34, 79,154, 1, 9,138,122, 58, 54,104,108,224, 48, 4, 37,254,193, 91, 77,108, 1, 9,
+124, 34, 79,154,254,247,138,122, 58, 54,104,108,224, 48, 4, 37, 1, 63, 91, 77, 0, 2, 0,190,254, 86, 4, 84, 4,124, 0, 21,
+ 0, 32, 0, 0, 19, 16, 55, 54, 51, 54, 23, 22, 17, 16, 2, 35, 34, 38, 39, 18, 41, 1, 21, 33, 32, 17, 36, 16, 38, 35, 34, 6,
+ 21, 20, 22, 51, 50,190,110,129,215,232,116,116,232,202,102,153, 44, 5, 1, 28, 1,168,254,104,254, 22, 2,213,135,133,134,138,
+138,134,133, 2, 28, 1, 60,134,157, 1,158,157,254,234,254,239,254,201, 87, 83,254,115,170, 2,218, 41, 1,172,218,219,213,212,
+220, 0, 0, 0,255,255, 0,195,255,227, 4, 37, 4,123, 18, 6, 0, 70, 0, 0,255,255, 0,186,254, 86, 3, 16, 6, 20, 18, 6,
+ 0, 77, 0, 0, 0, 3, 0,117,255,227, 4, 92, 5,240, 0, 8, 0, 17, 0, 28, 0, 0, 1, 38, 39, 38, 35, 34, 7, 6, 7, 5,
+ 33, 18, 23, 22, 51, 50, 55, 54, 19, 16, 2, 32, 2, 17, 16, 18, 51, 50, 18, 3,134, 11, 53, 68,154,153, 67, 54, 11, 2, 62,253,
+191, 2, 66, 67,153,154, 68, 64,214,247,254, 6,246,247,252,253,247, 3,113,223,111,141,141,112,222,170,254,213,136,141,141,134,
+ 1, 79,254,122,254,128, 1,126, 1,136, 1,135, 1,128,254,128, 0, 1, 0,162,255,227, 4, 9, 4,123, 0, 33, 0, 0, 1, 38,
+ 39, 38, 35, 34, 7, 6, 7, 33, 21, 33, 22, 23, 22, 51, 50, 63, 1, 21, 7, 6, 35, 32, 39, 38, 16, 55, 54, 33, 50, 23, 22, 23,
+ 4, 9, 37, 37, 99,106,183,102, 95, 18, 2,165,253, 91, 18, 95,102,183,128, 77, 74, 79,104,107,254,244,156,157,157,156, 1, 12,
+101,110, 40, 39, 3,174, 13, 10, 26, 99, 92,169,144,169, 92, 99, 26, 25,167, 18, 22,156,156, 2, 40,156,156, 22, 8, 12, 0, 0,
+ 0, 1, 0,162,255,227, 4, 9, 4,123, 0, 34, 0, 0, 19, 48, 53, 54, 55, 54, 51, 32, 23, 22, 16, 7, 6, 33, 34, 47, 1, 53,
+ 23, 22, 51, 50, 55, 54, 55, 33, 53, 33, 38, 39, 38, 35, 34, 7, 6,162, 39, 40,110,101, 1, 12,156,157,157,156,254,244,107,104,
+ 79, 74, 77,128,183,102, 95, 18,253, 91, 2,165, 18, 95,102,183,106, 99, 37, 3,174,163, 12, 8, 22,156,156,253,216,156,156, 22,
+ 18,167, 25, 26, 99, 92,169,144,169, 92, 99, 26, 10, 0, 0, 0,255,255, 0,201, 0, 0, 4,141, 5,213, 18, 6, 0,160, 0, 0,
+255,255, 0,190,254, 86, 4, 84, 6, 31, 18, 6, 0,192, 0, 0,255,255, 0,139,255,227, 4, 49, 5,240, 18, 6, 0, 38, 0, 0,
+ 0, 1, 0, 86, 0, 0, 4,121, 5,213, 0, 12, 0, 0, 19, 33, 9, 1, 33, 17, 35, 17, 1, 35, 1, 17, 35, 86, 1, 14, 1, 2,
+ 1, 4, 1, 15,187,254,246,153,254,245,186, 5,213,254,123, 1,133,250, 43, 5, 39,254, 96, 1,160,250,217, 0, 0, 1, 0,127,
+254, 86, 4, 79, 4, 96, 0, 12, 0, 0, 19, 33, 27, 1, 33, 17, 35, 17, 3, 35, 3, 17, 35,127, 1, 27,204,206, 1, 27,185,226,
+153,227,185, 4, 96,254,123, 1,133,251,160, 3,178,254, 96, 1,160,250,164, 0, 0, 2, 0, 85,254, 86, 4, 84, 4,124, 0, 24,
+ 0, 35, 0, 0, 1, 21, 35, 53, 35, 53, 51, 17, 16, 55, 54, 51, 54, 23, 22, 17, 16, 2, 35, 34, 38, 39, 17, 33, 21, 18, 16, 38,
+ 35, 34, 6, 21, 20, 22, 51, 50, 1,119,185,105,105,110,131,213,232,116,116,232,202,102,153, 44, 1,225, 59,135,133,134,138,138,
+134,133,254,198,112,112,170, 2,172, 1, 62,132,157, 1,158,157,254,234,254,239,254,201, 87, 83,254,227,170, 2,147, 1,172,218,
+219,213,212,220, 0, 1, 0,139,255,227, 4, 49, 5,240, 0, 25, 0, 0, 55, 53, 30, 1, 51, 50, 18, 17, 16, 2, 35, 34, 6, 7,
+ 53, 62, 1, 51, 32, 0, 17, 16, 0, 33, 34, 38,139, 73,169, 88,197,196,196,197, 86,170, 74, 77,162, 91, 1, 29, 1, 63,254,195,
+254,225, 91,162, 53,207, 61, 64, 1, 48, 1, 50, 1, 51, 1, 48, 64, 61,207, 41, 41,254,103,254,146,254,144,254,106, 41, 0, 0,
+255,255, 0,139,255,227, 4, 49, 5,240, 18, 38, 3, 38, 0, 0, 16, 7, 0,121, 0,139, 0, 0,255,255, 0,139,255,227, 4, 49,
+ 5,240, 16, 39, 0,121,255, 99, 0, 0, 16, 6, 3, 42, 0, 0,255,255, 0,197, 0, 0, 4, 78, 7,107, 16, 39, 11,179, 0, 0,
+ 1,117, 16, 6, 3, 66, 0, 0,255,255, 0,197, 0, 0, 4, 78, 7, 78, 16, 39, 11,176, 0, 56, 1,117, 16, 6, 3, 66, 0, 0,
+ 0, 1,255,190,254, 42, 4,111, 5,215, 0, 47, 0, 0, 1, 23, 22, 51, 50, 54, 53, 17, 52, 38, 35, 34, 7, 6, 7, 6, 21, 17,
+ 35, 17, 35, 53, 33, 21, 33, 17, 54, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 17, 16, 7, 6, 35, 34, 39, 52, 2, 61,
+ 78, 13, 12,143,113,106,113,106, 87, 46, 22, 69,203,246, 3,126,254, 67, 37, 48, 34, 14, 64,149, 26, 22,160, 88, 14, 11, 85,107,
+105,247, 83, 17,254,225, 17, 2,149,203, 1,160,151,142, 42, 21, 28, 92,171,254,111, 5, 45,170,170,253,243, 42, 24, 17, 9, 37,
+ 10, 2, 84, 13, 16,112,228,254, 70,254,232,119,117, 2, 2, 0,255,255, 0,215, 0, 0, 4,115, 7,107, 16, 39, 11,177, 0, 72,
+ 1,117, 16, 6, 3, 64, 0, 0, 0, 1, 0,139,255,227, 4, 49, 5,240, 0, 24, 0, 76, 64, 33, 0,151, 22,177, 25, 5,179, 6,
+178, 3,151, 8, 17,179, 16,178, 19,151, 14,150, 8,153, 25, 23, 0, 22, 50, 17, 6, 49, 11, 48, 25, 16,252,236, 50,252, 50,204,
+ 49, 0, 16,228,244,236,244,236, 16,238,246,238, 16,252,238,177, 22, 19, 73,177, 3, 0, 73, 80, 88,179, 22, 0, 64, 2, 23, 56,
+ 89, 48, 1, 22, 18, 51, 50, 55, 21, 6, 35, 32, 0, 17, 16, 0, 33, 50, 23, 21, 38, 35, 34, 2, 3, 33, 21, 1, 94, 4,192,189,
+188,150,154,176,254,225,254,195, 1, 63, 1, 29,176,154,152,190,190,163, 23, 2,115, 2,149,228,254,214,125,207, 82, 1,150, 1,
+111, 1,111, 1,153, 82,207,125,254,244,254,255,170, 0, 0, 0,255,255, 0,139,255,227, 4, 74, 5,240, 16, 6, 0, 54, 0, 0,
+255,255, 0,201, 0, 0, 4, 6, 5,213, 16, 6, 0, 44, 0, 0,255,255, 0,201, 0, 0, 4, 6, 7, 78, 16, 38, 3, 51, 0, 0,
+ 17, 7, 11,176, 0, 0, 1,117, 0, 8,180, 1, 18, 15, 0, 7, 43, 49, 0, 0,255,255, 0,109,255,227, 3,188, 5,213, 16, 6,
+ 0, 45, 0, 0, 0, 2,255,237, 0, 0, 4,199, 5,213, 0, 7, 0, 29, 0, 0, 37, 51, 50, 54, 16, 38, 43, 1, 25, 1, 51, 50,
+ 4, 16, 4, 43, 1, 17, 35, 21, 16, 2, 6, 35, 53, 50, 54, 18, 25, 1, 3, 33, 21, 90,125,121, 94, 21, 21,144, 1, 1,254,254,
+143,207,172, 24,202,236,138,118, 20,166,142, 1, 14,149, 2,254,253,168,226,254, 72,227, 5, 43,250,254,198,253,247,238,164,143,
+ 1,161, 1, 87, 1,170, 0, 0, 0, 2, 0, 34, 0, 0, 4,199, 5,213, 0, 8, 0, 28, 0, 0, 37, 51, 50, 54, 53, 52, 38, 43,
+ 1, 3, 17, 33, 17, 35, 17, 51, 17, 33, 17, 51, 17, 51, 50, 23, 22, 21, 20, 4, 35, 3, 33, 21, 90,125,120, 95, 21,186,254,117,
+186,186, 1,139,186, 21,179,119,103,254,254,143,166,142,130,140,149,253, 41, 2,199,253, 57, 5,213,253,156, 2,100,253,168,113,
+ 99,234,220,227, 0, 1,255,190, 0, 0, 4,111, 5,215, 0, 34, 0, 0, 1, 17, 54, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23,
+ 22, 21, 17, 35, 17, 52, 38, 35, 34, 7, 6, 7, 6, 21, 17, 35, 17, 35, 53, 33, 21, 1,127, 37, 48, 34, 14, 64,149, 26, 22,160,
+ 88, 14, 11, 85,203,106,113,106, 87, 46, 22, 69,203,246, 3,126, 5, 45,253,243, 42, 24, 17, 9, 37, 10, 2, 84, 13, 16,112,228,
+254, 24, 1,206,151,142, 42, 21, 28, 92,171,254,111, 5, 45,170,170, 0, 0, 0,255,255, 0,137, 0, 0, 4,201, 7,107, 16, 39,
+ 11,177, 0, 27, 1,117, 16, 6, 3, 71, 0, 0,255,255, 0,139, 0, 0, 4, 70, 7,107, 16, 39, 11,179, 0, 0, 1,117, 16, 6,
+ 3, 69, 0, 0,255,255, 0,104, 0, 0, 4,129, 7,109, 16, 38, 11,184, 0, 0, 16, 6, 3, 80, 0, 0, 0, 0, 0, 1, 0,137,
+254,190, 4, 72, 5,213, 0, 11, 0, 0, 51, 17, 51, 17, 33, 17, 51, 17, 33, 17, 35, 17,137,203, 2, 41,203,254,118,171, 5,213,
+250,213, 5, 43,250, 43,254,190, 1, 66, 0, 0,255,255, 0, 37, 0, 0, 4,172, 5,213, 16, 6, 0, 36, 0, 0, 0, 2, 0,166,
+ 0, 0, 4,113, 5,213, 0, 8, 0, 23, 0, 50, 64, 28, 0,151, 12, 9,151, 22,136, 1,151, 12, 20, 20, 12, 8, 2, 4, 0, 23,
+ 5, 50, 16, 49, 10, 0, 30, 22, 48, 24, 16,252,236, 50,252,236,196, 17, 23, 57, 49, 0, 47,204,236,244,236, 16,236, 48, 1, 17,
+ 51, 50, 54, 53, 52, 38, 35, 1, 33, 17, 51, 4, 23, 22, 21, 20, 7, 6, 41, 1, 17, 33, 1,113,239,176,150,158,168, 1,204,253,
+ 69,235, 1,123,101, 53,133,133,254,249,254, 70, 3,134, 2,201,253,221,123,141,146,137, 2,102,254, 62, 15,191,100,161,203,103,
+104, 5,213, 0,255,255, 0,166, 0, 0, 4,113, 5,213, 16, 6, 0, 37, 0, 0, 0, 1, 0,215, 0, 0, 4,115, 5,213, 0, 5,
+ 0, 24,182, 2, 49, 4, 30, 1, 52, 6, 16,252,236,236, 49, 0,180, 3,151, 1,136, 5, 47,244,236, 48, 51, 17, 33, 21, 33, 17,
+215, 3,156,253, 47, 5,213,170,250,213, 0, 0, 0, 2, 0, 33,254,190, 4,176, 5,213, 0, 15, 0, 26, 0, 48, 64, 13, 4, 30,
+ 1, 16, 30, 15, 18, 30, 13, 5, 30, 8, 27, 16,212,236,220,236,212,236,220,236, 49, 0, 64, 11, 17,151, 14,136, 1, 26, 8,151,
+ 3, 7, 5, 47,204, 50,236, 50, 50,244,236, 48, 37, 51, 17, 35, 17, 33, 17, 35, 17, 51, 50, 19, 18, 25, 1, 33, 7, 33, 17, 20,
+ 3, 2, 6, 21, 20, 51, 33, 4, 55,121,170,252,197,170, 77, 48, 39, 30, 3, 84,203,254, 66, 28, 27, 11, 47, 1,209,170,254, 20,
+ 1, 66,254,190, 1,236, 1, 76, 1, 0, 1, 13, 1,210,170,254,215,224,254,225,254,225, 28, 8, 22, 0, 0, 0,255,255, 0,197,
+ 0, 0, 4, 78, 5,213, 16, 6, 0, 40, 0, 0, 0, 1, 0, 15, 0, 0, 4,194, 5,213, 0, 19, 0,120, 64, 11, 8, 5, 4, 3,
+ 6, 9, 1, 30, 12, 0, 20, 16,220, 60,252, 60,192, 23, 57, 49, 0, 64, 12, 66, 8, 5, 2, 3, 17, 3, 0,180, 15, 10, 6, 47,
+ 60, 60,236, 50, 50, 23, 57, 48, 75, 83, 88, 64, 9, 8, 37, 9, 8, 5, 7, 37, 6, 5, 7, 5,237, 16, 8,237, 89, 1, 64, 19,
+ 13, 0, 8, 14, 0, 7, 15, 0, 6, 16, 0, 5, 17, 0, 4, 18, 0, 3, 1, 16, 73, 58, 73, 58, 73, 58, 73, 58, 73, 58, 73, 58,
+ 0,183, 12, 9, 13, 8, 16, 5, 19, 2, 16, 60, 16, 60, 16, 60, 16, 60, 1, 51, 17, 1, 51, 9, 1, 35, 3, 7, 17, 35, 17, 39,
+ 3, 35, 9, 1, 51, 1, 2, 11,187, 1, 28,207,254,225, 1, 48,197,222, 89,187, 89,222,197, 1, 48,254,225,207, 1, 28, 5,213,
+253,173, 2, 83,253,166,252,133, 2,138,186,254, 48, 1,208,186,253,118, 3,123, 2, 90,253,173,255,255, 0,137,255,227, 4, 55,
+ 5,240, 16, 6, 0, 22, 0, 0, 0, 1, 0,139, 0, 0, 4, 70, 5,213, 0, 9, 0, 60, 64, 28, 8, 4, 3, 4, 3, 9, 8, 9,
+ 66, 8, 2, 3, 5,180, 7, 0, 9, 4, 3, 8, 17, 6, 49, 3, 17, 1, 48, 10, 16,252,236,252,236, 17, 57, 57, 49, 0, 47, 60,
+236, 50, 57, 57, 48, 75, 83, 88, 7, 16, 4,201, 7, 16, 4,201, 89, 34, 51, 17, 51, 17, 1, 33, 17, 35, 17, 1,139,195, 1,248,
+ 1, 0,195,254, 8, 5,213,251, 51, 4,205,250, 43, 4,205,251, 51, 0, 0, 0,255,255, 0,139, 0, 0, 4, 70, 7,109, 16, 38,
+ 11,184, 0, 0, 16, 6, 3, 69, 0, 0, 0, 0,255,255, 0,137, 0, 0, 4,201, 5,213, 16, 6, 0, 46, 0, 0, 0, 1, 0, 4,
+ 0, 0, 4, 70, 5,213, 0, 15, 0, 36, 64, 8, 15, 30, 12, 1, 30, 10, 6, 16, 16,212,220,236,212,236, 49, 0, 64, 9, 6,151,
+ 5, 0,151, 11,136, 14, 5, 47, 60,244,236, 16,236, 48, 1, 21, 16, 2, 6, 35, 53, 50, 54, 18, 25, 1, 33, 17, 35, 17, 1,227,
+ 23,203,253,138,118, 20, 3, 46,203, 5, 43,250,254,187,254, 2,238,164,143, 1,161, 1, 87, 1,170,250, 43, 5, 43, 0, 0, 0,
+255,255, 0, 86, 0, 0, 4,121, 5,213, 16, 6, 0, 48, 0, 0,255,255, 0,137, 0, 0, 4, 72, 5,213, 16, 6, 0, 43, 0, 0,
+255,255, 0,117,255,227, 4, 92, 5,240, 16, 6, 0, 50, 0, 0, 0, 1, 0,137, 0, 0, 4, 72, 5,213, 0, 7, 0, 30, 64, 9,
+ 4, 30, 1, 49, 5, 30, 0, 48, 8, 16,252,236,252,236, 49, 0,181, 4,151, 0,136, 6, 2, 47, 60,244,236, 48, 19, 33, 17, 35,
+ 17, 33, 17, 35,137, 3,191,203,253,215,203, 5,213,250, 43, 5, 43,250,213, 0,255,255, 0,197, 0, 0, 4,117, 5,213, 16, 6,
+ 0, 51, 0, 0,255,255, 0,139,255,227, 4, 49, 5,240, 16, 6, 0, 38, 0, 0,255,255, 0, 47, 0, 0, 4,162, 5,213, 16, 6,
+ 0, 55, 0, 0, 0, 1, 0,104, 0, 0, 4,129, 5,213, 0, 20, 0, 63, 64, 13, 66, 8,151, 7,153, 19, 16,136, 21, 20, 8, 16,
+ 21, 16,212,196,196, 49, 0, 16,228, 50,244,236, 48, 75, 83, 88, 64, 18, 18, 37, 0, 16, 15, 19, 37, 20, 20, 0, 18, 37, 15, 17,
+ 37, 16, 16, 15, 5, 7, 16,236, 16,236, 7, 16,236, 8, 16,236, 89, 1, 6, 7, 6, 7, 6, 43, 1, 53, 51, 50, 55, 54, 55, 54,
+ 55, 1, 51, 9, 1, 51, 2,229, 59, 69, 44, 76, 69, 92,148,109, 81, 46, 45, 34, 14, 15,254, 88,217, 1, 55, 1, 52,213, 1,169,
+158,111, 74, 43, 39,172, 47, 46, 77, 32, 42, 4, 53,252,194, 3, 62, 0, 0, 0, 0, 3, 0, 66, 0, 0, 4,143, 5,213, 0, 6,
+ 0, 24, 0, 31, 0,103, 64, 15, 28, 50, 12, 15, 31, 9, 30, 24, 4, 50, 21, 18, 1, 24, 32, 16,212, 60, 60,212,236, 16,252, 60,
+ 60,212,236, 49, 0, 64, 14, 31, 1,151, 9, 24, 7,136, 17, 25, 0,151, 15, 18, 17, 47,220, 60,236, 50, 16,244,220, 60,236, 50,
+ 48, 1,176, 13, 75, 84,176, 16, 75, 84, 91,176, 21, 75, 84, 91,176, 25, 75, 84, 91, 88,191, 0, 33, 0, 32,255,192, 0, 2, 0,
+ 0, 0, 32, 0, 32, 0, 64, 56, 18, 54, 23, 56, 89, 1, 17, 14, 1, 21, 20, 22, 19, 51, 21, 4, 18, 17, 16, 2, 5, 21, 35, 53,
+ 38, 2, 17, 16, 18, 37, 19, 62, 1, 53, 52, 38, 39, 2, 3,165, 73, 73,165,203, 1, 11,182,182,254,245,203,250,199,184, 1, 9,
+203,165, 73, 73,165, 1, 60, 3,123, 26,220,199,200,220, 4,127,122, 10,254,170,254,255,254,252,254,172, 10,152,152, 10, 1, 87,
+ 1, 1, 1, 4, 1, 83, 10,251,225, 26,220,200,199,220, 26, 0,255,255, 0, 18, 0, 0, 4,190, 5,213, 16, 6, 0, 59, 0, 0,
+ 0, 1, 0, 80,254,190, 4,149, 5,213, 0, 11, 0, 36, 64, 18, 6, 2,136, 10, 8, 4,151, 11, 11, 30, 8, 4, 30, 6, 3, 30,
+ 0, 12, 16,212,236,212,236,220,236, 49, 0, 47,236, 50,204,236, 50, 48, 51, 17, 51, 17, 33, 17, 51, 17, 51, 17, 35, 17, 80,203,
+ 2, 41,203,134,170, 5,213,250,213, 5, 43,250,213,254, 20, 1, 66, 0, 0, 0, 0, 1, 0,137, 0, 0, 4, 68, 5,213, 0, 19,
+ 0, 32, 64, 16, 17,151, 6, 1, 10,136, 13, 14, 9, 30, 11, 3, 30, 0, 48, 20, 16,252,236,212,236, 50, 49, 0, 47,236, 50,220,
+236, 48, 19, 17, 51, 17, 20, 22, 51, 50, 54, 55, 17, 51, 17, 35, 17, 14, 1, 35, 34, 38,137,203,110,109,117,122, 91,203,203,118,
+150,126,183,175, 3,212, 2, 1,254, 25,163, 80, 29, 69, 2,120,250, 43, 2,146, 58, 23,196, 0, 0, 1, 0,114, 0, 0, 4, 96,
+ 5,213, 0, 11, 0, 38, 64, 10, 11, 30, 10, 8, 30, 6, 3, 30, 1, 12, 16,212,236,220,236,220,236, 49, 0, 64, 8, 6, 11, 2,
+136, 8, 4,151, 1, 47,236, 50,252, 60, 60, 48, 41, 1, 17, 51, 17, 51, 17, 51, 17, 51, 17, 51, 4, 96,252, 18,186,224,186,224,
+186, 5,213,250,213, 5, 43,250,213, 5, 43, 0, 0, 1, 0, 60,254,190, 4,176, 5,213, 0, 15, 0, 47, 64, 13, 15, 30, 12, 11,
+ 30, 9, 7, 30, 5, 3, 30, 1, 16, 16,212,236,220,236,220,252,220,236, 49, 0, 64, 10, 6, 9, 2,136, 11, 8, 4,151, 14, 0,
+ 47,204,236, 50, 50,252, 60, 60, 48, 51, 17, 51, 17, 51, 17, 51, 17, 51, 17, 51, 17, 51, 17, 35, 17, 60,186,224,186,224,186,134,
+170, 5,213,250,213, 5, 43,250,213, 5, 43,250,213,254, 20, 1, 66, 0, 0, 0, 0, 2, 0, 32, 0, 0, 4,117, 5,213, 0, 8,
+ 0, 21, 0, 42, 64, 9, 4, 50, 18, 14, 0, 30, 9, 11, 22, 16,212,220,236, 50, 47,236, 49, 0, 64, 12, 14,151, 8,177, 22, 10,
+182, 13,136, 0,151, 9, 47,236,244,236, 16,244,236, 48, 37, 51, 50, 54, 53, 52, 38, 43, 1, 3, 17, 33, 53, 33, 17, 51, 50, 4,
+ 21, 20, 4, 35, 1,239,138,141,156,157,140,138,202,254,251, 1,207,138,251, 1, 1,254,254,250,166,147,133,133,148,253, 41, 5,
+ 43,170,253,168,226,221,219,227, 0, 3, 0, 65, 0, 0, 4,110, 5,213, 0, 3, 0, 13, 0, 24, 0, 44, 64, 11, 3, 30, 0, 9,
+ 50, 21, 17, 4, 30, 14, 25, 16,212,236, 50, 47,236,220,236, 49, 0, 64, 11, 17,151, 13,177, 4,151, 1, 15,136, 14, 0, 47, 60,
+228, 50,236,244,236, 48, 33, 17, 51, 17, 37, 51, 50, 55, 54, 53, 52, 38, 43, 1, 3, 17, 51, 17, 51, 50, 4, 21, 20, 4, 35, 3,
+163,203,252,157, 91,102, 78, 60,121,119, 91,202,202, 91,194, 1, 1,254,254,193, 5,213,250, 43,166, 74, 56,150,133,148,253, 41,
+ 5,213,253,168,226,221,219,227, 0, 2, 0,197, 0, 0, 4,117, 5,213, 0, 8, 0, 21, 0, 43, 64, 24, 8,151, 12, 0,151, 10,
+136, 9, 21, 13, 1, 7, 4, 0, 4, 50, 17, 56, 0, 12, 30, 10, 51, 22, 16,252,236, 50,252,236, 17, 23, 57, 49, 0, 47,228,236,
+212,236, 48, 37, 51, 50, 54, 53, 52, 38, 43, 1, 3, 17, 51, 17, 51, 50, 23, 22, 21, 20, 7, 6, 35, 1,143,234,141,156,157,140,
+234,202,202,234,251,128,129,129,129,250,166,147,133,133,148,253, 41, 5,213,253,168,113,113,221,219,113,114, 0, 0, 1, 0,139,
+255,227, 4, 49, 5,240, 0, 27, 0, 77, 64, 9, 11, 9, 12, 50, 25, 49, 19, 2, 29, 16,220, 60,244,236, 50,196, 49, 0, 64, 23,
+ 9,151, 12,177, 29, 3,179, 2,178, 5,151, 0, 18,179, 19,178, 16,151, 21,150, 0,153, 28, 16,228,244,236,244,236, 16,238,246,
+238, 16,252,238,177, 12, 16, 73,177, 5, 9, 73, 80, 88,179, 9, 12, 64, 2, 23, 56, 89, 48, 5, 34, 39, 53, 22, 51, 50, 55, 54,
+ 55, 33, 53, 33, 2, 39, 38, 35, 34, 7, 53, 54, 51, 32, 23, 22, 16, 7, 6, 1,213,176,154,150,188,189, 96, 95, 5,253,136, 2,
+115, 30, 63, 98,188,187,152,154,176, 1, 29,160,159,159,158, 29, 82,207,125,147,148,231,170, 1, 20, 97,152,125,207, 82,204,205,
+253, 34,203,203, 0, 2, 0, 60,255,227, 4,149, 5,240, 0, 11, 0, 30, 0, 64, 64, 36, 24, 23, 15, 14, 4, 16, 22, 3,151, 16,
+150, 9,151, 22,153, 28, 26,151, 12,177, 30,136, 28, 0, 30, 19, 28, 5, 30, 25, 13, 26, 12, 30, 28, 31, 16,212,236, 50,212, 50,
+236, 16,212,236, 49, 0, 47,228,252,238, 16,228,238,244,236, 17, 18, 23, 57, 48, 1, 16, 2, 35, 34, 2, 17, 16, 18, 51, 50, 18,
+ 1, 51, 26, 1, 51, 50, 18, 17, 16, 2, 35, 34, 2, 3, 35, 17, 35, 17, 51, 3,207, 95,107,107, 95, 95,107,107, 95,253, 56,111,
+ 10,187,202,202,198,198,202,203,186, 10,111,203,203, 2,233, 1, 73, 1, 26,254,230,254,183,254,184,254,230, 1, 25, 1,164, 1,
+ 67, 1,105,254,128,254,121,254,122,254,128, 1,106, 1, 77,253,102, 5,213, 0, 0, 2, 0, 76, 0, 0, 4,109, 5,213, 0, 8,
+ 0, 22, 0, 67, 64, 13, 10, 20, 0, 5, 20, 30, 17, 49, 0, 50, 13, 9, 23, 16,212,212,236,244,236, 50, 18, 17, 57, 49, 0, 64,
+ 11, 66, 10, 4,151, 21, 5,151, 17,136, 19, 9, 47, 60,244,236,212,236, 57, 48, 75, 83, 88,183, 21, 37, 10, 22, 37, 9, 9, 10,
+ 7, 16, 5,237, 16,237, 89, 1, 20, 22, 51, 33, 17, 33, 34, 6, 9, 1, 46, 1, 53, 52, 36, 51, 33, 17, 35, 17, 33, 1, 1,116,
+142,145, 1, 15,254,249,144,151,254,216, 1,113,108,178, 1, 6,246, 1,210,203,254,222,254,162, 4, 37,134,130, 2, 18,137,251,
+ 90, 2,154, 39,178,178,210,222,250, 43, 2,119,253,137, 0, 0,255,255, 0,133,255,227, 4, 35, 4,123, 16, 6, 0, 68, 0, 0,
+ 0, 2, 0,125,255,227, 4, 72, 6, 55, 0, 8, 0, 42, 0, 54, 64, 13, 34, 35, 0, 18, 14, 68, 4, 18, 9, 6, 20, 62, 43, 16,
+244,236,236,252,236,212,196, 49, 0, 64, 16, 7,140, 17, 34,182, 35, 30,182, 40, 2,140, 11,190, 17,153, 43, 16,228,244,236,220,
+236,212,236, 16,238, 48, 1, 16, 33, 32, 17, 20, 22, 51, 32, 1, 54, 51, 50, 18, 17, 16, 2, 35, 34, 2, 19, 54, 47, 1, 38, 52,
+ 55, 54, 55, 54, 55, 54, 37, 54, 55, 23, 6, 15, 1, 6, 7, 6, 7, 3,133,254,227,254,228,144,140, 1, 29,253,152,120,222,222,
+247,246,234,233,251, 5, 1, 1, 7, 5, 2, 20, 36, 91,167,128, 1, 28, 51, 35, 70, 35, 51,240, 98, 74,197, 21, 2, 47, 1,176,
+254, 80,213,219, 3,129,123,254,210,254,225,254,226,254,211, 1, 51, 1, 25, 45, 17,167,119, 82, 15,149, 73,185, 85, 65, 12, 2,
+ 16,142, 13, 5, 24, 10, 43,116,154, 0, 0, 0, 0, 3, 0,209, 0, 0, 4, 0, 4, 96, 0, 8, 0, 17, 0, 32, 0, 45, 64, 24,
+ 25, 0,182, 10, 32, 9,182, 18,194, 1,182, 32, 14, 18, 22, 5, 18, 28, 0, 9, 6, 18, 70, 33, 16,252,236, 50,212,236,212,236,
+ 49, 0, 47,236,244,236, 16,212,236, 57, 48, 1, 17, 51, 50, 54, 53, 52, 38, 35, 3, 17, 51, 50, 54, 53, 52, 38, 35, 37, 33, 50,
+ 22, 21, 20, 6, 7, 30, 1, 21, 20, 6, 35, 33, 1,137,239, 95,101, 85,107,243,228, 85, 84, 84, 86,254,101, 1,141,170,200, 95,
+ 99,133,109,209,193,254, 99, 2, 3,254,147,112, 80, 79, 94, 1,199,254,207, 85, 67, 67, 86,150,154,112,111,129, 14, 25,136,117,
+154,168, 0, 0, 0, 1, 1, 1, 0, 0, 3,241, 4, 96, 0, 5, 0, 22, 64, 10, 0,182, 3,194, 1, 4, 0, 6, 2, 6, 16,220,
+236,196, 49, 0, 47,252,236, 48, 1, 17, 35, 17, 33, 21, 1,185,184, 2,240, 3,202,252, 54, 4, 96,150, 0, 0, 0, 2, 0,105,
+254,226, 4,104, 4, 96, 0, 14, 0, 24, 0, 48, 64, 13, 4, 6, 2, 15, 6, 14, 17, 6, 12, 5, 6, 8, 25, 16,212,236,220,236,
+212,236,220,236, 49, 0, 64, 11, 16,182, 13,194, 1, 15, 8,182, 3, 7, 5, 47,204, 50,236, 50, 50,244,236, 48, 37, 51, 17, 35,
+ 17, 33, 17, 35, 17, 51, 50, 18, 53, 17, 33, 3, 17, 33, 17, 20, 7, 14, 1, 20, 51, 3,239,121,150,253, 45,150, 67, 55, 32, 2,
+236,185,254,132, 20, 8, 14, 34,150,254, 76, 1, 30,254,226, 1,180, 1,198,100, 1,160,252, 54, 3, 52,254,242,100,247,144, 33,
+ 26, 0, 0, 0,255,255, 0,123,255,227, 4, 88, 4,123, 16, 6, 0, 72, 0, 0, 0, 1, 0, 59, 0, 0, 4,151, 4, 96, 0, 19,
+ 0,120, 64, 11, 8, 5, 4, 3, 6, 9, 1, 30, 6, 0, 20, 16,220, 60,252, 60,192, 23, 57, 49, 0, 64, 12, 66, 8, 5, 2, 3,
+ 17, 3, 0,194, 15, 10, 6, 47, 60, 60,236, 50, 50, 23, 57, 48, 75, 83, 88, 64, 9, 8, 23, 9, 8, 5, 7, 23, 6, 5, 7, 5,
+237, 16, 8,237, 89, 1, 64, 19, 13, 0, 8, 14, 0, 7, 15, 0, 6, 16, 0, 5, 17, 0, 4, 18, 0, 3, 1, 16, 73, 58, 73, 58,
+ 73, 58, 73, 58, 73, 58, 73, 58, 0,183, 12, 9, 13, 8, 16, 5, 19, 2, 16, 60, 16, 60, 16, 60, 16, 60, 1, 51, 17, 1, 51, 3,
+ 1, 35, 3, 7, 17, 35, 17, 39, 3, 35, 1, 3, 51, 1, 2, 21,168, 0,255,199,239, 1, 3,179,191,104,168,104,191,179, 1, 3,
+239,199, 0,255, 4, 96,254, 80, 1,176,254,108,253, 52, 2, 16,177,254,161, 1, 95,177,253,240, 2,204, 1,148,254, 80, 0, 0,
+255,255, 0,169,255,234, 4, 40, 4,123, 16, 6, 1,250, 0, 0, 0, 1, 0,195, 0, 0, 4, 26, 4, 96, 0, 9, 0, 61, 64, 10,
+ 6, 0, 6, 8, 1, 5, 6, 2, 70, 10, 16,252,236, 50,212,236, 50, 49, 0, 64, 8, 66, 0, 5, 7, 3,194, 9, 2, 47, 60,236,
+ 50, 57, 57, 48, 75, 83, 88, 64, 10, 0, 23, 6, 5, 6, 5, 23, 1, 0, 1, 7, 0, 16,233, 7, 16,233, 89, 9, 1, 35, 17, 51,
+ 17, 1, 51, 17, 35, 3, 98,254, 25,184,184, 1,231,184,184, 3, 41,252,215, 4, 96,252,215, 3, 41,251,160, 0,255,255, 0,195,
+ 0, 0, 4, 26, 6, 72, 16, 38, 2,130, 0, 0, 16, 6, 3,101, 0, 0, 0, 0,255,255, 0,236, 0, 0, 4,178, 4, 96, 18, 6,
+ 0,250, 0, 0, 0, 1, 0, 30, 0, 0, 4, 26, 4, 96, 0, 17, 0, 34, 64, 8, 4, 6, 1, 5, 6, 17, 11, 18, 16,212,220,236,
+212,236, 49, 0, 64, 8, 5,182, 0,194, 12,182, 11, 2, 47, 60,236,244,236, 48, 1, 33, 17, 35, 17, 33, 21, 20, 2, 6, 43, 1,
+ 53, 51, 50, 54, 18, 53, 1, 9, 3, 17,184,254, 95, 27,151,186, 55, 35, 85, 94, 21, 4, 96,251,160, 3,202,245,189,254,209,233,
+150,118, 1, 24,174, 0, 0, 0, 0, 1, 0, 61, 0, 0, 4,155, 4, 96, 0, 12, 0, 78, 64, 21, 66, 10, 7, 2, 8, 3, 0,194,
+ 9, 6, 12, 3, 7, 6, 4, 13, 1, 10, 6, 0, 13, 16,220,236, 50, 16,220,236, 50, 49, 0, 47, 60,196,236, 50, 17, 23, 57, 48,
+ 75, 83, 88, 64, 16, 8, 23, 3, 7, 23, 3, 2, 3, 9, 23, 2, 10, 23, 2, 2, 1, 4, 7, 16,237, 16, 5,237, 4, 7, 16,237,
+ 16, 5,237, 89, 19, 51, 9, 1, 51, 17, 35, 17, 1, 35, 1, 17, 35, 61,184, 1,119, 1,119,184,184,254,229,184,254,229,184, 4,
+ 96,253, 77, 2,179,251,160, 2,229,254, 31, 1,225,253, 27, 0, 0, 1, 0,195, 0, 0, 4, 26, 4, 96, 0, 11, 0, 36, 64, 18,
+ 1,182, 6, 9, 4,194, 10, 2, 0, 8, 6, 9, 1, 5, 6, 3, 70, 12, 16,252,236, 50,212,236, 50, 49, 0, 47, 60,228, 50,212,
+236, 48, 1, 33, 17, 35, 17, 51, 17, 33, 17, 51, 17, 35, 3, 98,254, 25,184,184, 1,231,184,184, 2, 3,253,253, 4, 96,254, 57,
+ 1,199,251,160,255,255, 0,137,255,227, 4, 72, 4,123, 16, 6, 0, 82, 0, 0, 0, 1, 0,195, 0, 0, 4, 26, 4, 96, 0, 7,
+ 0, 28, 64, 14, 1,182, 4,194, 6, 2, 0, 6, 5, 1, 6, 3, 70, 8, 16,252,236,212,236, 49, 0, 47, 60,244,236, 48, 1, 33,
+ 17, 35, 17, 33, 17, 35, 3, 98,254, 25,184, 3, 87,184, 3,202,252, 54, 4, 96,251,160, 0, 0,255,255, 0,190,254, 86, 4, 84,
+ 4,123, 16, 6, 0, 83, 0, 0,255,255, 0,195,255,227, 4, 37, 4,123, 16, 6, 0, 70, 0, 0, 0, 1, 0,225, 0, 0, 4, 7,
+ 4, 96, 0, 7, 0, 28, 64, 13, 0, 3,182, 5,194, 1, 7, 1, 4, 3, 6, 1, 8, 16,220,252,204, 16,204, 49, 0, 47,252,252,
+ 60, 48, 1, 17, 35, 17, 33, 53, 33, 21, 2,208,184,254,201, 3, 38, 3,202,252, 54, 3,202,150,150, 0, 0, 0,255,255, 0,104,
+254, 86, 4,129, 4, 96, 16, 6, 0, 92, 0, 0, 0, 3, 0, 99,254, 86, 4,101, 6, 20, 0, 6, 0, 24, 0, 31, 0, 99, 64, 17,
+ 29, 18, 19, 13, 10, 22, 25, 16, 6, 13, 3, 18, 10, 7, 0, 13, 32, 16,212, 60, 60,212,236, 16,252, 60, 60, 73, 59,236, 49, 0,
+ 64, 17, 25, 0,140, 16, 13,190, 26, 6,140, 22, 7,153, 24,195, 14,155, 32, 16,236,236,244, 60,236, 50,244, 60,236, 50, 48, 1,
+176, 13, 75, 84,176, 16, 75, 84, 91, 88,191, 0, 33, 0, 32,255,192, 0, 2, 0, 0, 0, 32, 0, 32, 0, 64, 56, 18, 54, 23, 56,
+ 89, 1, 14, 1, 21, 20, 22, 23, 21, 38, 2, 17, 16, 18, 55, 17, 51, 17, 22, 18, 17, 16, 2, 7, 17, 35, 19, 17, 62, 1, 53, 52,
+ 38, 2, 8,120,106,106,120,220,201,199,222,184,222,199,201,220,184,184,120,106,106, 3,214, 25,153,245,245,162, 25,156, 22, 1,
+ 11, 1, 43, 1, 43, 1, 11, 22, 1,153,254,103, 22,254,245,254,213,254,213,254,245, 22,254,115, 5,128,252,169, 25,162,245,245,
+153, 0, 0, 0,255,255, 0, 76, 0, 0, 4,133, 4, 96, 16, 6, 0, 91, 0, 0, 0, 1, 0,124,254,226, 4, 94, 4, 96, 0, 11,
+ 0, 36, 64, 18, 9, 5,194, 2, 0, 8,182, 3, 3, 6, 0, 8, 6, 10, 7, 6, 5, 12, 16,220,236,212,236,220,236, 49, 0, 47,
+236, 50,204,236, 50, 48, 37, 17, 35, 17, 33, 17, 51, 17, 33, 17, 51, 17, 4, 94,150,252,180,184, 1,230,184,150,254, 76, 1, 30,
+ 4, 96,252, 54, 3,202,252, 54, 0, 1, 0,195, 0, 0, 4, 27, 4, 98, 0, 19, 0, 33, 64, 9, 14, 9, 6, 11, 3, 6, 0, 70,
+ 20, 16,252,236,212,236, 50, 49, 0,182, 17,182, 6, 10, 1,194, 13, 47,236, 50,220,236, 48, 19, 17, 51, 17, 20, 22, 51, 50, 54,
+ 55, 17, 51, 17, 35, 17, 14, 1, 35, 34, 38,195,184,107,110, 88,114, 69,184,184, 53,140,139,140,200, 2,243, 1,111,254,145,100,
+ 93, 20, 39, 1,245,251,158, 1,210, 21, 43,163, 0, 1, 0,125, 0, 0, 4, 85, 4, 96, 0, 11, 0, 36, 64, 18, 6, 11, 2,194,
+ 8, 4,182, 1, 11, 6, 10, 8, 6, 6, 3, 6, 1, 12, 16,220,236,220,236,220,236, 49, 0, 47,236, 50,252, 60,196, 48, 41, 1,
+ 17, 51, 17, 51, 17, 51, 17, 51, 17, 51, 4, 85,252, 40,168,240,168,240,168, 4, 96,252, 54, 3,202,252, 54, 3,202, 0, 0, 0,
+ 0, 1, 0, 80,254,226, 4,184, 4, 96, 0, 15, 0, 45, 64, 13, 0, 6, 13, 11, 6, 10, 8, 6, 6, 3, 6, 1, 16, 16,220,236,
+220,236,220,252,220,236, 49, 0, 64, 9, 6, 11, 2,194, 8, 4,182, 15, 1, 47,204,236, 50,252, 60,196, 48, 41, 1, 17, 51, 17,
+ 51, 17, 51, 17, 51, 17, 51, 17, 51, 17, 35, 4, 34,252, 46,168,240,168,240,168,144,150, 4, 96,252, 54, 3,202,252, 54, 3,202,
+252, 54,254, 76, 0, 2, 0, 30, 0, 0, 4,140, 4, 96, 0, 8, 0, 21, 0, 41, 64, 9, 4, 18, 18, 14, 0, 6, 9, 11, 22, 16,
+212,220,236, 50, 47,236, 49, 0, 64, 11, 8,182, 14, 22, 10,182, 13,194, 0,182, 9, 47,236,244,236, 16,212,236, 48, 37, 51, 50,
+ 54, 53, 52, 38, 43, 1, 3, 17, 35, 53, 33, 17, 33, 50, 22, 21, 20, 6, 35, 1,206,248,124,134,137,121,248,184,248, 1,176, 1,
+ 0,209,237,232,214,156, 88, 90, 90, 90,253,254, 3,202,150,254, 59,167,168,168,164, 0, 0, 0, 0, 3, 0,104, 0, 0, 4,105,
+ 4, 96, 0, 3, 0, 12, 0, 23, 0, 43, 64, 11, 3, 6, 0, 9, 18, 21, 16, 4, 6, 13, 24, 16,212,236, 50, 47,236,220,236, 49,
+ 0, 64, 10, 12,182, 16, 4,182, 1, 14,194, 13, 0, 47, 60,228, 50,236,212,236, 48, 33, 17, 51, 17, 37, 51, 50, 54, 53, 52, 38,
+ 43, 1, 3, 17, 51, 17, 51, 50, 22, 21, 20, 6, 35, 3,177,184,252,181, 83,124,134,137,121, 83,182,182, 91,209,237,232,214, 4,
+ 96,251,160,154, 89, 91, 91, 91,253,252, 4, 96,254, 59,167,168,168,164, 0, 0, 0, 2, 0,195, 0, 0, 4, 56, 4, 96, 0, 8,
+ 0, 19, 0, 42, 64, 23, 8,182, 12, 0,182, 10,194, 9, 19, 13, 1, 7, 4, 0, 4, 18, 16, 0, 12, 6, 10, 70, 20, 16,252,236,
+ 50,220,236, 17, 23, 57, 49, 0, 47,228,236,212,236, 48, 37, 51, 50, 54, 53, 52, 38, 43, 1, 3, 17, 51, 17, 33, 50, 22, 21, 20,
+ 6, 35, 1,123,248,129,128,129,128,248,184,184, 1, 0,208,237,231,214,153, 89, 90, 94, 88,253,254, 4, 96,254, 59,167,168,168,
+164, 0, 0, 0, 0, 1, 0,195,255,227, 4, 37, 4,123, 0, 31, 0, 75, 64, 8, 10, 11, 8, 18, 25, 19, 0, 32, 16,220, 60,212,
+236, 50,196, 49, 0, 64, 22, 19,139, 18,192, 15, 0,139, 1,192, 4,140, 29, 10,182, 8, 15,140, 22,190, 29,153, 32, 16,228,244,
+236,220,238, 16,254,244,238, 16,245,238,177, 10, 15, 73,177, 4, 8, 73, 80, 88,179, 10, 8, 64, 2, 23, 56, 89, 48, 55, 53, 30,
+ 1, 51, 50, 55, 54, 55, 33, 53, 33, 38, 39, 38, 35, 34, 6, 7, 53, 62, 1, 51, 32, 0, 17, 16, 7, 6, 33, 34, 38,195, 65,152,
+ 96,172, 94, 83, 9,253,226, 2, 25, 18, 69, 94,172, 93,147, 73, 78,154, 81, 1, 4, 1, 37,147,146,254,252, 82,157, 57,191, 62,
+ 59,113,100,176,144,137, 82,112, 58, 65,193, 44, 42,254,200,254,236,254,236,156,156, 43, 0, 0, 0, 2, 0, 78,255,227, 4,144,
+ 4,123, 0, 11, 0, 30, 0, 63, 64, 35, 24, 23, 15, 14, 4, 16, 22, 3,140, 16,190, 9,140, 22,153, 28, 26,182, 12, 30,194, 28,
+ 0, 6, 19, 28, 5, 6, 25, 13, 26, 12, 6, 28, 31, 16,220,236, 50,212, 50,236, 16,212,236, 49, 0, 47,228,220,238, 16,228,238,
+244,236, 17, 18, 23, 57, 48, 1, 52, 38, 35, 34, 6, 21, 20, 22, 55, 50, 54, 1, 51, 26, 1, 51, 50, 18, 17, 16, 2, 35, 34, 2,
+ 39, 35, 17, 35, 17, 51, 3,205,112, 76, 76,113,106, 85, 85,101,253, 57,142, 17,210,157,157,223,230,154,153,211, 16,142,184,184,
+ 2, 63,198,217,244,193,193,234, 1,250, 1, 1, 1, 0, 1, 1,254,220,254,211,254,210,254,231, 1, 20,237,254, 28, 4, 96, 0,
+ 0, 2, 0,168, 0, 0, 3,216, 4, 96, 0, 8, 0, 22, 0, 66, 64, 12, 10, 20, 0, 5, 20, 8, 17, 0, 18, 13, 9, 23, 16,220,
+212,236,212,236, 50, 18, 17, 57, 49, 0, 64, 11, 66, 10, 4,182, 21, 5,182, 17,194, 19, 9, 47, 60,244,236,212,236, 57, 48, 75,
+ 83, 88,183, 21, 23, 10, 22, 23, 9, 9, 10, 7, 16, 5,237, 16,237, 89, 1, 20, 22, 59, 1, 17, 35, 34, 6, 3, 1, 46, 1, 53,
+ 52, 54, 51, 33, 17, 35, 17, 35, 1, 1,147,114, 55,228,227, 56,114,235, 1, 16, 53,170,220,150, 1,141,184,193,254,254, 3, 19,
+ 97, 85, 1,109, 86,252,140, 1,223, 22,130,167,168,154,251,160, 1,199,254, 57,255,255, 0,123,255,227, 4, 88, 6,109, 16, 38,
+ 3, 98, 0, 0, 16, 6, 0, 67,226, 7, 0, 0,255,255, 0,123,255,227, 4, 88, 5,191, 16, 38, 3, 98, 0, 0, 16, 6, 0,106,
+ 35,175, 0, 0, 0, 1, 0, 35,254, 86, 4, 84, 6, 20, 0, 31, 0, 0, 19, 53, 51, 17, 51, 17, 33, 21, 33, 17, 62, 1, 51, 50,
+ 22, 21, 16, 2, 7, 53, 54, 18, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 35,190,184, 1,192,254, 64, 49,168,124,176,182,250,237,
+121,173,106,123,138,139,184, 3,209,143, 1,180,254, 76,143,254,115, 96, 99,230,223,254,180,254,142, 46,165, 25, 1, 24, 1, 22,
+152,141,183,171,254,251, 3,209,255,255, 1, 1, 0, 0, 4, 11, 6,109, 16, 38, 3, 96, 0, 0, 16, 6, 0,118, 81, 7, 0, 0,
+ 0, 1, 0,195,255,227, 4, 37, 4,123, 0, 31, 0, 76, 64, 32, 13,139, 14,192, 17, 0,139, 31,192, 28,140, 3, 22,182, 24, 17,
+140, 10,190, 3,153, 32, 22, 0, 21, 24, 18, 13, 0, 7, 70, 32, 16,244,196, 50,252, 50, 16,196, 49, 0, 16,228,244,236,220,238,
+ 16,254,244,238, 16,245,238,177, 22, 17, 73,177, 28, 24, 73, 80, 88,179, 22, 24, 64, 2, 23, 56, 89, 48, 37, 14, 1, 35, 32, 39,
+ 38, 17, 16, 0, 33, 50, 22, 23, 21, 46, 1, 35, 34, 7, 6, 7, 37, 21, 33, 22, 23, 22, 51, 50, 54, 55, 4, 37, 74,157, 82,254,
+252,146,147, 1, 37, 1, 4, 81,154, 78, 73,147, 93,173, 93, 69, 18, 2, 25,253,226, 9, 83, 94,172, 96,152, 65, 57, 43, 43,156,
+156, 1, 20, 1, 20, 1, 56, 42, 44,193, 65, 58,112, 83,137, 1,144,176,100,113, 59, 62, 0, 0,255,255, 0,213,255,227, 4, 6,
+ 4,123, 16, 6, 0, 86, 0, 0,255,255, 0,178, 0, 0, 4, 68, 6, 20, 16, 6, 0, 76, 0, 0,255,255, 0,178, 0, 0, 4, 68,
+ 6, 16, 16, 38, 0,243, 0, 0, 17, 6, 0,106, 24, 0, 0, 8,180, 3, 16, 13, 6, 7, 43, 49,255,255, 0,186,254, 86, 3, 16,
+ 6, 20, 16, 6, 0, 77, 0, 0, 0, 2, 0, 10, 0, 0, 4,203, 4, 96, 0, 5, 0, 30, 0, 0, 37, 50, 16, 43, 1, 17, 23, 35,
+ 17, 35, 21, 20, 2, 7, 6, 43, 1, 53, 51, 50, 54, 18, 53, 17, 33, 17, 51, 50, 22, 16, 6, 3, 55,208,208, 13, 21,189,229, 27,
+ 82, 67,188, 39, 35, 85, 94, 21, 2, 53, 21,159,237,232,153, 1,105,254,151,153, 3,202,245,189,254,209,128,105,150,118, 1, 24,
+174, 1,142,254, 59,167,254,176,164, 0, 0, 0, 0, 2, 0, 65, 0, 0, 4,158, 4, 96, 0, 6, 0, 24, 0, 0, 37, 50, 53, 52,
+ 43, 1, 25, 1, 51, 50, 22, 16, 6, 43, 1, 17, 33, 17, 35, 17, 51, 17, 33, 17, 51, 3, 10,208,208, 13, 21,159,237,232,164,189,
+254,148,168,168, 1,108,168,153,181,180,254,151, 2, 2,167,254,176,164, 2, 3,253,253, 4, 96,254, 57, 1,199, 0, 1, 0, 35,
+ 0, 0, 4, 57, 6, 20, 0, 27, 0, 0, 19, 53, 51, 17, 51, 17, 33, 21, 33, 17, 62, 1, 51, 50, 22, 21, 17, 35, 17, 52, 38, 35,
+ 34, 6, 21, 17, 35, 17, 35,190,184, 1,192,254, 64, 49,168,115,171,169,185,106,113,129,139,184, 3,209,143, 1,180,254, 76,143,
+254,115, 96, 99,225,228,254,190, 1, 66,151,142,183,171,254,251, 3,209, 0, 0,255,255, 0,236, 0, 0, 4,178, 6,109, 16, 38,
+ 3,103, 0, 0, 16, 6, 0,118, 48, 7, 0, 0,255,255, 0,195, 0, 0, 4, 26, 6,109, 16, 38, 3,101, 0, 0, 16, 6, 0, 67,
+ 64, 7, 0, 0,255,255, 0,104,254, 86, 4,129, 6, 72, 16, 38, 2,130, 0, 0, 16, 6, 3,112, 0, 0, 0, 0, 0, 1, 0,195,
+254,226, 4, 26, 4, 96, 0, 11, 0, 0, 51, 17, 51, 17, 33, 17, 51, 17, 33, 17, 35, 17,195,184, 1,231,184,254,160,151, 4, 96,
+252, 54, 3,202,251,160,254,226, 1, 30, 0, 0, 0, 1, 0,215, 0, 0, 4,115, 7, 7, 0, 7, 0, 28, 64, 14, 3, 5,151, 1,
+136, 7, 3, 4, 49, 6, 30, 1, 52, 8, 16,252,236,252,204, 49, 0, 47,244,236,204, 48, 51, 17, 33, 19, 51, 17, 33, 17,215, 2,
+242, 3,167,253, 47, 5,213, 1, 50,254, 36,250,213, 0, 0, 0, 0, 1, 1, 1, 0, 0, 3,242, 5,154, 0, 7, 0, 26, 64, 12,
+ 5, 0,182, 3,194, 1, 4, 7, 0, 6, 2, 8, 16,220,236,220,204, 49, 0, 47,252,236,204, 48, 1, 17, 35, 17, 33, 17, 51, 3,
+ 1,185,184, 2, 56,185, 1, 3,168,252, 88, 4, 96, 1, 58,254, 14, 0, 0, 0, 0, 1, 0, 85, 0, 0, 4,115, 5,213, 0, 13,
+ 0, 0, 19, 51, 17, 33, 21, 33, 17, 33, 21, 33, 17, 35, 17, 35, 85,130, 3,156,253, 47, 2, 35,253,221,203,130, 3,232, 1,237,
+170,254,189,170,252,194, 3, 62, 0, 1, 0,127, 0, 0, 3,241, 4, 96, 0, 13, 0, 0, 33, 17, 35, 53, 51, 17, 33, 21, 33, 17,
+ 33, 21, 33, 17, 1, 1,130,130, 2,240,253,200, 1,160,254, 96, 1,244,170, 1,194,184,254,246,170,254, 12, 0, 0, 1, 0,215,
+254,102, 4,115, 5,213, 0, 28, 0, 0, 1, 17, 35, 17, 33, 21, 33, 17, 33, 50, 23, 22, 21, 17, 16, 7, 6, 43, 1, 53, 51, 50,
+ 55, 54, 53, 17, 52, 38, 35, 1,162,203, 3,156,253, 47, 1, 55,186,113,111,104,102,228, 76, 62,134, 56, 55,124,124, 2,199,253,
+ 57, 5,213,170,254, 70,119,114,238,254,206,254,244,124,122,170, 75, 75,194, 1, 34,159,158, 0, 0, 1, 1, 1,254, 86, 4, 82,
+ 4, 96, 0, 29, 0, 0, 1, 17, 35, 17, 33, 21, 33, 17, 51, 32, 23, 22, 21, 17, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 53, 17,
+ 52, 39, 38, 35, 1,185,184, 2,240,253,200,250, 1, 5, 72, 82, 82, 81,181,193,172,110, 33, 38, 38, 49,134, 1,231,254, 25, 4,
+ 96,184,254,207, 71, 81,229,254,242,214, 96, 96,156, 48, 55,147, 1, 8,170, 32, 41, 0, 0, 0, 0, 1, 0, 15,254,190, 4,194,
+ 5,213, 0, 23, 0, 0, 51, 9, 1, 51, 1, 17, 51, 17, 1, 51, 1, 19, 51, 17, 35, 17, 35, 3, 7, 17, 35, 17, 39, 3, 15, 1,
+ 48,254,225,207, 1, 28,187, 1, 28,207,254,225,246, 58,170, 27,222, 89,187, 89,222, 3,123, 2, 90,253,173, 2, 83,253,173, 2,
+ 83,253,166,253, 47,254, 20, 1, 66, 2,138,186,254, 48, 1,208,186,253,118, 0, 0, 1, 0, 59,254,226, 4,174, 4, 96, 0, 23,
+ 0, 0, 51, 1, 3, 51, 1, 17, 51, 17, 1, 51, 3, 19, 51, 17, 35, 17, 35, 3, 7, 17, 35, 17, 39, 3, 59, 1, 3,239,199, 0,
+255,168, 0,255,199,239,205, 77,150, 52,191,104,168,104,191, 2,204, 1,148,254, 80, 1,176,254, 80, 1,176,254,108,253,202,254,
+ 76, 1, 30, 2, 16,177,254,161, 1, 95,177,253,240, 0, 0, 0,255,255, 0,137,254,117, 4, 55, 5,240, 16, 38, 2,163,183, 0,
+ 16, 6, 3, 68, 0, 0, 0, 0,255,255, 0,169,254,117, 4, 40, 4,123, 16, 38, 2,163,189, 0, 16, 6, 3,100, 0, 0, 0, 0,
+ 0, 1, 0,137,254,190, 4,201, 5,213, 0, 15, 0, 0, 37, 51, 17, 35, 17, 35, 1, 7, 17, 35, 17, 51, 17, 1, 51, 1, 4, 86,
+114,212, 31,254, 25,154,203,203, 2,119,237,253,187,170,254, 20, 1, 66, 2,236,164,253,184, 5,213,253,104, 2,152,253,158, 0,
+ 0, 1, 0,236,254,226, 4,178, 4, 96, 0, 15, 0, 0, 37, 51, 17, 35, 17, 35, 1, 7, 17, 35, 17, 51, 17, 1, 51, 1, 4, 44,
+134,196, 29,254, 98,137,190,190, 1,227,224,254, 71,184,254, 42, 1, 30, 2, 66,129,254, 63, 4, 96,254, 47, 1,209,254, 90, 0,
+ 0, 1, 0, 31,254,190, 4,179, 5,213, 0, 15, 0, 0, 37, 51, 17, 35, 17, 35, 17, 33, 17, 35, 17, 51, 17, 33, 17, 51, 3,222,
+213,213,203,253,215,203,203, 2, 41,203,170,254, 20, 1, 66, 2,199,253, 57, 5,213,253,156, 2,100, 0, 0, 0, 0, 1, 0, 98,
+254,226, 4,124, 4, 96, 0, 15, 0, 0, 37, 51, 17, 35, 17, 35, 17, 33, 17, 35, 17, 51, 17, 33, 17, 51, 3,185,195,195,184,254,
+ 25,184,184, 1,231,184,184,254, 42, 1, 30, 1,249,254, 7, 4, 96,254, 67, 1,189, 0, 0, 0,255,255, 0,139,254,117, 4, 49,
+ 5,240, 16, 38, 2,163,100, 0, 16, 6, 3, 78, 0, 0, 0, 0,255,255, 0,195,254,117, 4, 37, 4,123, 16, 38, 2,163,104, 0,
+ 16, 6, 3,110, 0, 0, 0, 0, 0, 1, 0, 47,254,190, 4,162, 5,213, 0, 11, 0, 0, 37, 51, 17, 35, 17, 35, 17, 33, 53, 33,
+ 21, 33, 2,207,213,213,203,254, 43, 4,115,254, 45,170,254, 20, 1, 66, 5, 43,170,170, 0, 0, 0, 1, 0,225,254,226, 4, 7,
+ 4, 96, 0, 11, 0, 0, 37, 51, 17, 35, 17, 35, 17, 33, 53, 33, 21, 33, 2,208,195,195,184,254,201, 3, 38,254,201,184,254, 42,
+ 1, 30, 3,174,178,178, 0, 0,255,255, 0, 37, 0, 0, 4,172, 5,213, 16, 6, 0, 60, 0, 0, 0, 1, 0, 92,254, 86, 4,116,
+ 4, 96, 0, 8, 0, 0, 19, 51, 9, 1, 51, 1, 17, 35, 17, 92,195, 1, 73, 1, 73,195,254, 84,192, 4, 96,252,148, 3,108,251,
+178,254, 68, 1,188, 0, 0, 0, 0, 1, 0, 37, 0, 0, 4,172, 5,213, 0, 16, 0, 0, 19, 51, 9, 1, 51, 1, 21, 33, 21, 33,
+ 17, 35, 17, 33, 53, 33, 53, 37,215, 1,108, 1,107,217,254, 33, 1, 10,254,246,203,254,248, 1, 8, 5,213,253,109, 2,147,252,
+201, 80,170,254, 92, 1,164,170, 80, 0, 0, 0, 0, 1, 0, 92,254, 86, 4,116, 4, 96, 0, 16, 0, 0, 19, 51, 9, 1, 51, 1,
+ 21, 51, 21, 35, 21, 35, 53, 35, 53, 51, 53, 92,195, 1, 73, 1, 73,195,254, 84,200,200,192,200,200, 4, 96,252,148, 3,108,251,
+178, 53,150,241,241,150, 53, 0, 0, 1, 0, 18,254,190, 4,191, 5,213, 0, 15, 0, 0, 37, 51, 17, 35, 17, 35, 9, 1, 35, 9,
+ 1, 51, 9, 1, 51, 1, 4, 88,102,212, 5,254,146,254,117,218, 1,244,254, 80,217, 1, 72, 1, 78,217,254, 65,170,254, 20, 1,
+ 66, 2,131,253,125, 3, 23, 2,190,253,205, 2, 51,253, 66, 0, 0, 1, 0, 76,254,226, 4,134, 4, 96, 0, 15, 0, 0, 37, 51,
+ 17, 35, 17, 35, 9, 1, 35, 9, 1, 51, 9, 1, 51, 1, 3,250,140,196, 18,254,184,254,185,213, 1,184,254,111,204, 1, 41, 1,
+ 39,207,254,111,184,254, 42, 1, 30, 1,193,254, 63, 2, 72, 2, 24,254,107, 1,149,253,232, 0, 0, 1, 0,140, 0, 0, 4, 71,
+ 5,215, 0, 28, 0, 0, 1, 17, 35, 17, 52, 38, 35, 34, 7, 6, 7, 6, 21, 17, 35, 17, 51, 17, 54, 63, 1, 54, 63, 1, 50, 23,
+ 22, 23, 22, 4, 71,203,106,113,106, 87, 46, 22, 69,203,203, 35, 50, 48, 64,149, 48,160, 88, 14, 11, 85, 1,244,254, 12, 1,218,
+151,142, 42, 21, 28, 92,171,254, 99, 5,215,253, 85, 39, 27, 26, 37, 10, 2, 84, 13, 16,112, 0,255,255, 0,195, 0, 0, 4, 27,
+ 6, 20, 16, 6, 0, 75, 0, 0,255,255, 0,201, 0, 0, 4, 6, 5,213, 16, 6, 0, 44, 0, 0,255,255, 0, 15, 0, 0, 4,194,
+ 7,109, 16, 38, 11,184, 0, 0, 16, 6, 3, 67, 0, 0, 0, 0,255,255, 0, 59, 0, 0, 4,151, 6, 72, 16, 38, 2,130, 0, 0,
+ 16, 6, 3, 99, 0, 0, 0, 0, 0, 1, 0,137,254,102, 4,184, 5,213, 0, 30, 0, 0, 1, 51, 50, 23, 22, 21, 17, 16, 7, 6,
+ 43, 1, 53, 51, 50, 55, 54, 53, 17, 52, 38, 43, 1, 7, 17, 35, 17, 51, 17, 1, 51, 2,115, 24,183,116,111,104,102,228, 76, 62,
+134, 56, 55,124,124,151,119,203,203, 2,119,237, 3,113,119,114,238,254,206,254,244,124,122,170, 75, 75,194, 1, 34,159,158,127,
+253,184, 5,213,253,104, 2,152, 0, 1, 0,236,254, 86, 4,109, 4, 96, 0, 31, 0, 0, 1, 51, 32, 23, 22, 21, 17, 20, 7, 6,
+ 43, 1, 53, 51, 50, 55, 54, 53, 17, 52, 39, 38, 43, 1, 7, 17, 35, 17, 51, 17, 1, 51, 2,106, 58, 1, 5, 72, 82, 82, 81,181,
+193,172,110, 33, 38, 38, 49,134,221, 39,190,190, 1,227,224, 2,119, 71, 81,229,254,242,214, 96, 96,156, 48, 55,147, 1, 8,170,
+ 32, 41, 38,254, 63, 4, 96,254, 47, 1,209, 0, 0, 1, 0,137,254,102, 4, 72, 5,213, 0, 21, 0, 0, 37, 16, 7, 6, 43, 1,
+ 53, 51, 50, 55, 54, 53, 17, 33, 17, 35, 17, 51, 17, 33, 17, 51, 4, 72,104,103,227, 76, 62,134, 56, 55,253,215,203,203, 2, 41,
+203,104,254,242,122,122,170, 75, 75,194, 2, 95,253, 57, 5,213,253,156, 2,100, 0, 1, 0,195,254, 86, 4, 26, 4, 96, 0, 21,
+ 0, 0, 5, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 53, 17, 33, 17, 35, 17, 51, 17, 33, 17, 51, 4, 26, 82, 81,181,193,172,110,
+ 33, 38,254, 25,184,184, 1,231,184, 20,214, 96, 96,156, 48, 55,147, 2, 13,254, 7, 4, 96,254, 67, 1,189, 0, 0, 1, 0,140,
+254,190, 4, 71, 5,215, 0, 32, 0, 0, 37, 17, 6, 15, 1, 6, 15, 1, 34, 39, 38, 39, 38, 53, 17, 51, 17, 20, 22, 51, 50, 55,
+ 54, 55, 54, 53, 17, 51, 17, 35, 17, 35, 17, 3,124, 35, 51, 47, 64,149, 48,160, 88, 14, 12, 84,203,106,113,106, 87, 46, 21, 70,
+203,203,213,170, 2, 36, 39, 27, 26, 37, 10, 2, 84, 13, 16,112,228, 1,209,254, 73,151,142, 42, 21, 28, 92,171, 1,122,250, 41,
+254,190, 1,236, 0, 1, 0,195,254,226, 4, 27, 4, 98, 0, 26, 0, 0, 37, 17, 6, 7, 54, 7, 6, 35, 34, 38, 53, 17, 51, 17,
+ 20, 22, 51, 50, 54, 61, 1, 51, 17, 35, 17, 35, 17, 3, 99, 27, 60, 3, 49, 84,115,171,169,185,106,113,129,139,184,184,195,184,
+ 1,126, 51, 36, 1, 28, 50,225,228, 1, 11,254,245,151,142,183,171,206,251,158,254,226, 1,214, 0, 1, 1,199, 0, 0, 2,127,
+ 6, 31, 0, 3, 0, 0, 1, 17, 35, 17, 2,127,184, 6, 31,249,225, 6, 31, 0,255,255, 0, 37, 0, 0, 4,172, 7,109, 16, 38,
+ 11,184, 0, 0, 17, 6, 3, 61, 0, 0, 0, 24,180, 19, 8, 0, 24, 7, 43, 64, 13, 95, 8, 80, 0, 79, 8, 64, 0, 47, 8, 32,
+ 0, 6, 93, 49,255,255, 0,133,255,227, 4, 35, 6, 72, 16, 38, 2,130, 0, 0, 16, 6, 3, 93, 0, 0, 0, 0,255,255, 0, 37,
+ 0, 0, 4,172, 7, 78, 16, 38, 3, 61, 0, 0, 17, 7, 11,176, 0, 0, 1,117, 0, 28,180, 5, 17, 14, 10, 7, 43, 64, 17,112,
+ 14,127, 17, 48, 14, 63, 17, 32, 14, 47, 17, 0, 14, 15, 17, 8, 93, 49, 0, 0,255,255, 0,133,255,227, 4, 35, 6, 16, 16, 38,
+ 0,106, 0, 0, 16, 6, 3, 93, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 4,156, 5,213, 16, 6, 0,136, 0, 0,255,255, 0, 41,
+255,227, 4,176, 4,123, 16, 6, 0,168, 0, 0,255,255, 0,197, 0, 0, 4, 78, 7,109, 16, 38, 11,184, 18, 0, 16, 6, 3, 66,
+ 0, 0, 0, 0,255,255, 0,123,255,227, 4, 88, 6, 72, 16, 38, 2,130, 14, 0, 16, 6, 3, 98, 0, 0, 0, 0,255,255, 0,117,
+255,227, 4, 92, 5,240, 18, 6, 1, 81, 0, 0,255,255, 0,122,255,227, 4, 87, 4,123, 18, 6, 1,247, 0, 0,255,255, 0,117,
+255,227, 4, 92, 7, 78, 16, 39, 11,176, 0, 0, 1,117, 16, 6, 3,185, 0, 0,255,255, 0,122,255,227, 4, 87, 6, 16, 16, 38,
+ 0,106, 0, 0, 16, 6, 3,186, 0, 0, 0, 0,255,255, 0, 15, 0, 0, 4,194, 7, 78, 16, 39, 11,176, 0, 0, 1,117, 16, 6,
+ 3, 67, 0, 0,255,255, 0, 59, 0, 0, 4,151, 6, 16, 16, 38, 0,106, 0, 0, 16, 6, 3, 99, 0, 0, 0, 0,255,255, 0,137,
+255,227, 4, 55, 7, 78, 16, 39, 11,176,255,239, 1,117, 16, 6, 3, 68, 0, 0,255,255, 0,169,255,234, 4, 40, 6, 16, 16, 38,
+ 0,106,241, 0, 16, 6, 3,100, 0, 0, 0, 0,255,255, 0, 26,255,228, 4,183, 5,213, 16, 6, 1,121, 0, 0,255,255, 0,125,
+254, 76, 4, 84, 4, 96, 16, 6, 2, 48, 0, 0,255,255, 0,139, 0, 0, 4, 70, 7, 48, 16, 38, 11,189, 0, 0, 16, 6, 3, 69,
+ 0, 0, 0, 0,255,255, 0,195, 0, 0, 4, 26, 5,246, 16, 38, 2,128, 0, 0, 16, 6, 3,101, 0, 0, 0, 0,255,255, 0,139,
+ 0, 0, 4, 70, 7, 78, 16, 39, 11,176, 0, 0, 1,117, 16, 6, 3, 69, 0, 0,255,255, 0,195, 0, 0, 4, 26, 6, 16, 16, 38,
+ 0,106, 0, 0, 16, 6, 3,101, 0, 0, 0, 0,255,255, 0,117,255,227, 4, 92, 7, 78, 16, 38, 3, 75, 0, 0, 17, 7, 11,176,
+ 0, 0, 1,117, 0, 28,180, 12, 30, 27, 18, 7, 43, 64, 17,112, 27,127, 30, 48, 27, 63, 30, 32, 27, 47, 30, 0, 27, 15, 30, 8,
+ 93, 49, 0, 0,255,255, 0,137,255,227, 4, 72, 6, 16, 16, 38, 3,107, 0, 0, 17, 6, 0,106, 0, 0, 0, 20,180, 15, 30, 27,
+ 21, 7, 43, 64, 9,127, 30,112, 27, 79, 30, 64, 27, 4, 93, 49,255,255, 0,117,255,227, 4, 92, 5,240, 16, 6, 3, 33, 0, 0,
+255,255, 0,137,255,227, 4, 72, 4,123, 16, 6, 2, 19, 0, 0,255,255, 0,117,255,227, 4, 92, 7, 78, 16, 39, 11,176, 0, 0,
+ 1,117, 16, 6, 3,201, 0, 0,255,255, 0,137,255,227, 4, 72, 6, 16, 16, 38, 0,106, 0, 0, 16, 6, 3,202, 0, 0, 0, 0,
+255,255, 0,139,255,227, 4, 49, 7, 78, 16, 39, 11,176,255,223, 1,117, 16, 6, 3, 90, 0, 0,255,255, 0,195,255,227, 4, 37,
+ 6, 16, 16, 38, 0,106,236, 0, 16, 6, 3,122, 0, 0, 0, 0,255,255, 0,104, 0, 0, 4,129, 7, 48, 16, 38, 11,189, 0, 0,
+ 16, 6, 3, 80, 0, 0, 0, 0,255,255, 0,104,254, 86, 4,129, 5,246, 16, 38, 2,128, 0, 0, 16, 6, 3,112, 0, 0, 0, 0,
+255,255, 0,104, 0, 0, 4,129, 7, 78, 16, 39, 11,176, 0, 0, 1,117, 16, 6, 3, 80, 0, 0,255,255, 0,104,254, 86, 4,129,
+ 6, 16, 16, 38, 0,106, 0, 0, 16, 6, 3,112, 0, 0, 0, 0,255,255, 0,104, 0, 0, 4,129, 7,107, 16, 38, 11,186, 0, 0,
+ 16, 6, 3, 80, 0, 0, 0, 0,255,255, 0,104,254, 86, 4,129, 6,102, 16, 38, 2,135, 0, 0, 16, 6, 3,112, 0, 0, 0, 0,
+255,255, 0,137, 0, 0, 4, 68, 7, 78, 16, 39, 11,176, 0, 0, 1,117, 16, 6, 3, 84, 0, 0,255,255, 0,195, 0, 0, 4, 27,
+ 6, 16, 16, 38, 0,106, 0, 0, 16, 6, 3,116, 0, 0, 0, 0, 0, 1, 0,215,254,190, 4,115, 5,213, 0, 9, 0, 0, 37, 51,
+ 17, 35, 17, 35, 17, 33, 21, 33, 1,162,213,213,203, 3,156,253, 47,170,254, 20, 1, 66, 5,213,170, 0, 0, 0, 0, 1, 1, 1,
+254,226, 3,241, 4, 96, 0, 9, 0, 0, 37, 51, 17, 35, 17, 35, 17, 33, 21, 33, 1,185,195,195,184, 2,240,253,200,184,254, 42,
+ 1, 30, 4, 96,184, 0, 0, 0,255,255, 0, 65, 0, 0, 4,110, 7, 78, 16, 39, 11,176, 0, 0, 1,117, 16, 6, 3, 88, 0, 0,
+255,255, 0,104, 0, 0, 4,105, 6, 16, 16, 38, 0,106, 0, 0, 16, 6, 3,120, 0, 0, 0, 0, 0, 1, 1,214, 0, 0, 2,251,
+ 1,236, 0, 5, 0, 0, 33, 35, 53, 19, 51, 3, 2,169,211,164,129, 82,172, 1, 64,254,192, 0, 0, 2, 1,100, 4,253, 3,109,
+ 6,241, 0, 10, 0, 27, 0, 0, 1, 51, 50, 55, 54, 53, 52, 39, 6, 7, 6, 23, 43, 1, 53, 51, 17, 51, 17, 54, 55, 54, 23, 22,
+ 21, 20, 7, 6, 2, 53, 55, 77, 23, 53, 30, 15, 57, 51, 23,175,112, 81,102, 36,104, 63, 70, 65, 64, 54, 5, 98, 13, 33, 21, 31,
+ 16, 4, 22, 20,169,101, 1,143,254,191, 73, 40, 24, 26, 25, 82, 91, 50, 42, 0, 0, 2, 1,214, 0, 0, 2,251, 5, 17, 0, 5,
+ 0, 9, 0, 0, 1, 35, 53, 19, 51, 11, 1, 51, 21, 35, 2,169,211,164,129, 82,211,211,211, 3, 37,172, 1, 64,254,192,253, 45,
+254, 0, 0, 0, 0, 2, 0,218, 0, 0, 3,247, 5,240, 0, 3, 0, 36, 0, 0, 37, 21, 35, 53, 55, 53, 52, 38, 39, 46, 1, 47,
+ 1, 46, 1, 53, 52, 54, 51, 50, 22, 23, 21, 46, 1, 35, 34, 6, 21, 20, 22, 31, 1, 30, 1, 29, 1, 3, 3,203, 6, 6, 6, 8,
+ 39, 47, 88, 90, 72,223,184,103,193, 94, 97,179, 79,108,131, 51, 57, 90, 90, 56,254,254,254,147,123, 52, 60, 21, 25, 53, 47, 86,
+ 86,137, 76,159,194, 56, 57,188, 67, 70,110, 89, 49, 94, 53, 89, 86,130,101,154, 0, 1, 1,178, 0, 85, 4, 45, 3,222, 0, 34,
+ 0, 0, 37, 53, 54, 55, 54, 55, 38, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 21, 38, 7, 6, 7, 6, 23, 20, 23, 22, 55, 54,
+ 55, 21, 6, 7, 6, 1,178, 47, 83, 68, 52,142, 51, 53, 21, 30,103, 99, 98,110, 90,100, 70, 51, 49, 96, 1,200, 57, 58, 72, 58,
+ 90,205,231, 85,176, 6, 25, 20, 33, 24, 76, 79, 84, 65, 75,118, 63, 61, 22,185, 31, 2, 1, 26, 48,112,115, 50, 14, 15, 19, 35,
+185, 60, 80, 90,255,255, 1, 0, 0, 0, 3,208, 7,131, 16, 38, 3,229, 0, 0, 16, 7, 4, 12, 0, 0, 1,194,255,255, 1,189,
+ 0, 0, 3, 20, 7,254, 16, 38, 3,229, 0, 0, 16, 7, 4, 13, 0, 0, 1,134,255,255, 0, 76,254, 12, 4, 51, 4,182, 16, 38,
+ 4, 1, 0, 0, 16, 7, 4, 13, 0, 99,254, 62,255,255, 1,189,254, 12, 3, 20, 6, 20, 16, 38, 3,229, 0, 0, 16, 6, 4, 14,
+ 0, 0, 0, 0,255,255, 0, 25,254,243, 4,209, 4, 92, 16, 38, 4, 2, 0, 0, 16, 7, 4, 13,255,114,253,228, 0, 1, 2, 12,
+ 0, 0, 2,196, 6, 20, 0, 3, 0, 0, 1, 51, 17, 35, 2, 12,184,184, 6, 20,249,236, 0, 0,255,255, 0, 69,254,200, 4,176,
+ 2, 27, 16, 39, 11,195, 2, 44,254,200, 16, 6, 4, 30, 0, 0,255,255, 0,222,255,198, 3,243, 4, 26, 16, 39, 11,196, 1,113,
+ 3,132, 16, 6, 4, 0, 0, 0,255,255, 0, 69,255,235, 4,176, 3, 32, 16, 39, 11,196, 1,184, 2,138, 16, 6, 4, 30, 0, 0,
+255,255, 0, 69,255,235, 4,176, 4, 26, 16, 39, 11,197, 1,164, 2,138, 16, 6, 4, 30, 0, 0,255,255, 0, 88,254, 11, 4,173,
+ 3,103, 16, 39, 11,195, 2,151, 0, 13, 16, 6, 3,235, 0, 0, 0, 1, 0, 88,254, 11, 4,173, 3,103, 0, 30, 0, 0, 19, 36,
+ 23, 4, 23, 21, 36, 7, 6, 21, 20, 23, 22, 5, 50, 55, 21, 6, 7, 4, 39, 38, 53, 16, 55, 54, 55, 38, 7, 6, 7, 88, 1, 20,
+195, 1, 36,196,254,218,215,224, 74,129, 1, 19,193,212,150,250,254,148,169,131,212, 96,137,101,159,135, 95, 3, 39, 64, 1, 1,
+ 53,154, 13,180,188,247,137, 94,163, 1,118,184, 98, 1, 2,196,152,222, 1, 2,223,101, 52, 3, 22, 19, 41, 0,255,255, 0, 88,
+254, 11, 4,173, 4,176, 16, 39, 11,195, 1,202, 4, 26, 16, 6, 3,235, 0, 0, 0, 1, 0,232,255,218, 3,232, 3,106, 0, 25,
+ 0, 0, 37, 54, 55, 54, 53, 52, 39, 38, 39, 51, 22, 23, 22, 21, 20, 7, 6, 5, 6, 35, 34, 39, 53, 22, 51, 50, 2, 84,174, 33,
+ 8, 60, 73,166,227,107, 72, 82, 32, 80,254,250, 46, 94,151,103,115,133, 82,151, 50,111, 27, 42, 91,103,120,179,108,131,152,105,
+ 99, 75,195, 40, 7, 38,184, 42,255,255, 0,232,255,218, 3,232, 4,200, 16, 39, 11,195, 2, 28, 4, 50, 16, 6, 3,237, 0, 0,
+ 0, 1,255,204,254, 8, 4, 68, 2, 34, 0, 17, 0, 0, 37, 54, 53, 52, 39, 51, 22, 21, 20, 7, 2, 5, 4, 5, 53, 32, 55, 36,
+ 3,133, 10, 53,184, 50, 8, 41,254,181,254,239,254, 21, 1,188,220, 0,255,154, 58, 72,126,136,118,132, 82, 62,254,181,173,143,
+ 9,184,128,146,255,255,255,204,254, 8, 4, 68, 3,182, 16, 39, 11,195, 3, 85, 3, 32, 16, 6, 3,239, 0, 0, 0, 1,255, 33,
+254, 20, 4,152, 2,238, 0, 63, 0, 0, 37, 6, 7, 6, 7, 6, 35, 34, 39, 38, 55, 54, 55, 51, 6, 23, 22, 23, 22, 51, 50, 55,
+ 54, 55, 54, 39, 52, 47, 1, 51, 23, 22, 23, 22, 23, 22, 55, 54, 53, 51, 6, 23, 22, 51, 50, 25, 1, 51, 17, 20, 7, 6, 7, 6,
+ 35, 34, 39, 38, 39, 6, 7, 6, 7, 6, 1,140, 9, 29, 38, 60, 71,114, 95,101,117, 18, 19, 61,164, 88, 6, 7, 33, 47, 47, 54,
+ 50, 34, 26, 24, 2, 16, 42,160, 18, 16, 22, 48, 40, 46, 46, 36,164, 4, 38, 31, 43,104,164, 62, 33, 85, 22, 78, 66, 24, 65, 25,
+ 31, 69, 51, 73, 48, 60,168, 94,121, 77, 92,100,115,213,232,130,225,137,172, 43, 59, 72, 50,122,109,165, 94, 92,234,156,145, 35,
+ 80, 3, 3,125,103,194,163,141,120, 1, 24, 1, 38,254,170,159,153, 82, 34, 9, 25, 67,126,109, 56, 40, 2, 2,255,255,255, 33,
+254, 20, 4,152, 4,176, 16, 39, 11,197, 1, 99, 3, 32, 16, 6, 3,241, 0, 0, 0, 2,255, 16,254, 20, 4,192, 2,143, 0, 12,
+ 0, 61, 0, 0, 37, 51, 50, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 7, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 43, 1, 34,
+ 39, 38, 53, 20, 7, 6, 7, 6, 35, 34, 39, 38, 53, 52, 55, 51, 6, 21, 20, 23, 22, 55, 54, 55, 54, 53, 52, 39, 38, 39, 51, 20,
+ 23, 22, 2, 72,128,141, 73,106, 40, 36, 64, 71,103, 76,196, 75, 49,142,154,172, 90, 88,184,127,127,218, 37, 53, 44, 48, 46, 51,
+ 99, 77,130, 91,124,100,172,104, 60, 50, 61, 66, 37, 65, 9, 33, 13,170, 14, 10,184, 46, 68, 70, 45, 37, 33,109, 78, 6,128, 60,
+177, 82, 78,121,190,109, 75, 30, 26, 16,175,131,129, 43, 86, 90,127,203,188,172,204,156,145, 50, 41, 3, 4, 59,106,136,104, 62,
+212, 72, 15, 55, 40, 0, 0, 0,255,255,255, 16,254, 20, 4,192, 3, 77, 16, 39, 11,195, 1, 79, 2,183, 16, 6, 3,243, 0, 0,
+ 0, 2, 0, 10, 0, 0, 4,164, 6, 20, 0, 12, 0, 31, 0, 0, 37, 51, 50, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 19, 33, 35,
+ 53, 51, 17, 51, 17, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 2, 44,129,140, 73,106, 40, 36, 63, 71,104, 75,136,253,251,224,
+224,184, 76, 49,142,154,171, 91, 87,184,126,184, 46, 68, 70, 45, 37, 33,109, 78,254,216,184, 5, 92,251, 14,128, 60,177, 82, 78,
+121,190,109, 75,255,255, 0, 10, 0, 0, 4,164, 6, 20, 16, 39, 11,195, 2, 89, 3, 22, 16, 6, 3,245, 0, 0, 0, 1, 0,122,
+254, 12, 4,183, 4, 42, 0, 42, 0, 0, 5, 22, 33, 50, 55, 21, 6, 35, 32, 39, 38, 53, 52, 55, 54, 55, 38, 39, 38, 53, 52, 55,
+ 54, 51, 21, 34, 7, 6, 21, 20, 23, 22, 51, 50, 55, 54, 55, 21, 4, 7, 6, 21, 20, 1, 88,119, 1, 83,193,212,150,250,254, 91,
+166, 98, 87,113, 77, 51, 47, 88,204,124,252,195,116, 93, 48, 45, 46, 40, 41,158,254,254,239,236,209,177,158,118,184, 99,188,111,
+201,177,101,131, 25, 4, 30, 56,130,208,127, 77,169, 65, 52,104, 75, 25, 24, 18, 69, 29,184, 26,149,131,185,117,255,255, 0,122,
+254, 12, 4,183, 5, 70, 16, 39, 11,195, 1,125, 4,176, 16, 6, 3,247, 0, 0, 0, 1,255,236, 0, 0, 4,229, 0,184, 0, 3,
+ 0, 0, 35, 53, 33, 21, 20, 4,249,184,184, 0,255,255,255,181,255,164, 4,140, 4,204, 16, 39, 11,195, 2,252, 4, 54, 16, 6,
+ 4, 51, 0, 0,255,255, 0, 31,254,124, 4,116, 5, 20, 16, 39, 11,196, 2, 83, 4,126, 16, 6, 4, 31, 0, 0, 0, 2, 0, 8,
+255,200, 4,159, 6, 20, 0, 33, 0, 61, 0, 0, 1, 21, 6, 7, 6, 21, 20, 23, 22, 23, 22, 21, 20, 7, 6, 35, 34, 39, 53, 22,
+ 51, 50, 55, 54, 53, 52, 39, 38, 39, 38, 55, 54, 55, 54, 1, 54, 25, 1, 51, 17, 16, 7, 6, 7, 6, 35, 6, 39, 38, 53, 52, 55,
+ 51, 6, 21, 22, 23, 22, 51, 50, 55, 54, 2,123, 74, 38, 80, 14, 12, 68,102, 88, 82, 78, 66, 56, 68, 45, 60, 57, 60, 78, 74, 18,
+ 32, 1, 2, 75, 85, 1,171, 52,184, 86,130, 67,155,184,173,163,217, 16,184, 14, 2,152,121, 87,127, 62,119, 4, 76, 82, 4, 14,
+ 30, 33, 28, 18, 16, 10, 15, 88,110, 42, 39, 11, 88, 10, 26, 26, 30, 38, 17, 16, 28, 47, 46, 81, 38, 43,252,209, 56, 1, 18, 3,
+177,252, 79,254,154, 92,136, 25, 55, 2, 57, 76,184, 75, 53, 58, 44, 93, 45, 35, 27, 52, 0, 0, 0, 1, 0, 66,254,200, 4, 75,
+ 6, 20, 0, 27, 0, 0, 37, 54, 25, 1, 51, 17, 16, 7, 6, 7, 6, 35, 34, 39, 38, 3, 38, 55, 51, 6, 21, 20, 23, 22, 51, 50,
+ 55, 54, 3,117, 30,184, 50,108,101,150,162, 99,119,242, 1, 1, 64,184, 65,166, 40, 73,105, 84, 99, 73, 57, 1, 40, 4,106,251,
+150,254,122, 71,156, 49, 72, 42, 86, 1, 3,138, 92,115,115,126, 66, 16, 34, 41, 0, 2, 0,130,254, 20, 4, 84, 2,243, 0, 17,
+ 0, 46, 0, 0, 1, 22, 51, 50, 55, 54, 53, 52, 39, 38, 39, 38, 35, 34, 7, 6, 21, 20, 7, 38, 7, 6, 21, 17, 35, 17, 52, 55,
+ 54, 51, 38, 53, 52, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 35, 6, 2, 88,122, 76, 44, 21, 53, 6, 21, 59, 40, 46, 59,
+ 27, 68,110, 50, 75, 25,200,120, 65, 90, 2,162, 77, 92, 77, 79,182, 28, 8, 98,120, 88,178, 1, 39, 42, 22, 57, 58, 24, 20, 88,
+ 17, 12, 27, 68, 68, 40,193, 28, 78, 26, 79,254, 20, 1,236,173,102, 55, 42, 40,148,132, 63, 36, 83,167, 45, 56,146, 65, 80, 2,
+255,255, 0, 54,254,181, 4,141, 3, 96, 16, 39, 11,195, 1,234, 2,202, 16, 6, 4, 56, 0, 0, 0, 2, 0,222,255,198, 3,243,
+ 2,222, 0, 15, 0, 31, 0, 0, 1, 34, 7, 6, 23, 22, 23, 22, 51, 50, 55, 54, 53, 52, 39, 38, 39, 50, 23, 22, 21, 6, 7, 6,
+ 35, 34, 39, 38, 53, 52, 55, 54, 2, 14, 66, 33, 26, 1, 1, 55, 57, 57, 91, 93, 75, 66,123,152,198,182,141, 1,147,165,132, 96,
+ 81,167, 37, 84, 2, 42, 87, 69,123, 82, 44, 44, 57, 46, 85, 77, 65,120,179,160,124,148,200, 75, 85, 35, 74,239,181, 78,185, 0,
+ 0, 2, 0, 76,254, 12, 4, 51, 2,134, 0, 11, 0, 38, 0, 0, 1, 34, 7, 6, 21, 20, 23, 22, 23, 52, 39, 38, 1, 16, 7, 6,
+ 7, 6, 33, 53, 32, 55, 54, 55, 38, 39, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 23, 22, 2,225, 63, 44, 24, 51, 47,192, 86,
+ 37, 1, 46,172, 45,186,190,254,106, 1,115,161,224, 49,118, 45,139, 51,116,211, 57, 62, 89, 72,131, 24, 17, 1,196, 57, 33, 36,
+ 55, 43, 40, 4,184, 59, 25,254,244,254,218,174, 46, 84, 86,184, 76,104,139, 3, 7, 24, 43, 98,137,217, 90, 24, 51, 91,142,102,
+ 0, 1, 0, 25,254,243, 4,209, 3, 28, 0, 53, 0, 0, 37, 6, 7, 6, 35, 34, 39, 36, 17, 52, 55, 51, 6, 23, 22, 23, 22, 51,
+ 50, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38, 55, 54, 55, 54, 51, 50, 23, 22, 23, 35, 52, 39, 38, 7, 6, 7, 6, 21, 20, 23, 22,
+ 23, 22, 23, 22, 4,121,132,224,177, 93,129, 72,254,219, 63,184, 66, 1, 2,164, 75, 83,120,108,107, 65, 59, 27, 34,132, 98, 1,
+ 1, 94, 77, 96,143, 55, 50, 17,184, 19, 27, 39, 20, 24, 35,125, 91, 55, 31, 1, 1, 12,195, 48, 38, 26,104, 1, 5,117,113,131,
+ 99,147, 45, 20, 35, 35, 78, 71, 34, 46, 42, 51, 58, 44,131,150, 61, 50, 73, 66,137, 61, 25, 34, 4, 2, 20, 30, 57, 41, 44, 32,
+103, 58, 94, 77,255,255, 0, 25,254, 12, 4,209, 3, 28, 16, 39, 11,196, 1,114,254, 12, 16, 6, 4, 2, 0, 0, 0, 2, 1, 68,
+ 4,186, 3,140, 6,154, 0, 3, 0, 7, 0, 0, 1, 53, 37, 21, 1, 53, 37, 21, 1, 68, 2, 72,253,184, 2, 72, 5,170,110,130,
+110,254,142,110,130,110, 0, 0, 0, 2, 1, 68, 4,186, 3,140, 6,253, 0, 38, 0, 53, 0, 0, 1, 54, 55, 38, 39, 38, 53, 52,
+ 55, 54, 51, 50, 23, 22, 21, 20, 7, 22, 51, 22, 51, 21, 34, 47, 1, 6, 7, 6, 35, 34, 39, 38, 53, 51, 20, 23, 22, 51, 50, 55,
+ 54, 55, 54, 53, 52, 38, 35, 34, 7, 6, 21, 20, 23, 22, 2,116, 36, 22, 33, 23,108, 68, 29, 63, 73, 39, 56, 13, 19, 14, 19, 19,
+ 46, 20, 52, 26, 76, 84, 94,115, 55, 16, 90, 12, 36, 48, 56,158, 4, 2, 10, 34, 20, 24, 10, 18, 44, 20, 5,100, 36, 42, 7, 13,
+ 57, 94, 87, 52, 21, 39, 54, 79, 39, 38, 1, 1,110, 2, 5, 61, 78, 86,154, 41,113, 97, 26, 75,238, 7, 7, 21, 24, 34, 28, 9,
+ 13, 28, 37, 18, 8, 0, 0, 0, 0, 2, 1, 68,254, 22, 3,140,255,246, 0, 3, 0, 7, 0, 0, 1, 53, 37, 21, 37, 53, 37, 21,
+ 1, 68, 2, 72,253,184, 2, 72,254, 22,110,130,110,110,110,130,110, 0, 0, 0, 0, 1, 1, 68, 4,186, 3,140, 5,170, 0, 3,
+ 0, 0, 1, 53, 37, 21, 1, 68, 2, 72, 4,186,110,130,110, 0, 0, 2, 1, 68, 4,185, 3,140, 6,253, 0, 31, 0, 47, 0, 0,
+ 1, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 21, 20, 7, 22, 51, 22, 51, 21, 34, 39, 38, 39, 6, 7, 6, 35, 53, 50, 55, 54,
+ 55, 54, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 21, 20, 23, 22, 2,146, 9, 19,108, 68, 29, 63, 73, 39, 56, 15, 17, 18, 19, 19,
+ 34, 32, 31, 27, 43, 69,201,147,153,139, 22, 86, 4, 2, 10, 18, 16, 20, 24, 10, 18, 44, 20, 5,186, 2, 10, 56, 95, 87, 52, 21,
+ 39, 54, 79, 32, 45, 1, 1,110, 2, 2, 3, 61, 42,123,110,109, 18,112, 7, 7, 21, 24, 34, 14, 14, 9, 13, 28, 37, 18, 8, 0,
+ 0, 1, 1, 68,254,232, 3,140,255,216, 0, 3, 0, 0, 1, 53, 37, 21, 1, 68, 2, 72,254,232,110,130,110, 0, 0, 1, 1, 48,
+ 4,202, 3,161, 6,244, 0, 40, 0, 0, 1, 6, 7, 6, 7, 6, 39, 38, 53, 52, 55, 51, 6, 23, 22, 23, 22, 55, 54, 55, 54, 53,
+ 51, 20, 23, 22, 55, 54, 53, 52, 39, 51, 22, 7, 6, 7, 6, 7, 6, 39, 38, 2,120, 15, 33, 57, 69, 79, 41, 34, 16, 97, 12, 1,
+ 3, 22, 19, 50, 61, 4, 2, 96, 3, 14, 75, 71, 13,103, 15, 3, 3, 24, 38, 90, 71, 31, 27, 5,132, 77, 39, 68, 1, 2, 65, 50,
+111,109, 98,125, 56, 84, 34, 28, 23, 26,168, 82, 89, 36, 54,197, 2, 1,173,115, 57, 73,116,133, 54, 88, 11, 9, 33, 30, 0, 0,
+ 0, 2, 1, 86, 4,225, 3,122, 7, 6, 0, 9, 0, 19, 0, 0, 1, 52, 38, 34, 6, 21, 20, 22, 50, 62, 1, 20, 6, 35, 34, 38,
+ 52, 54, 51, 50, 3, 0, 88,128, 88, 88,128, 88,122,158,116,114,160,160,114,116, 5,244, 63, 88, 87, 64, 65, 87, 88,179,230,160,
+160,230,159, 0, 0, 1, 1, 0, 4,185, 3,208, 5,193, 0, 18, 0, 0, 1, 55, 22, 23, 22, 51, 50, 55, 54, 55, 21, 6, 7, 6,
+ 35, 34, 38, 39, 7, 1, 0,160,103, 67, 42, 54, 58, 42,107, 87, 90, 90, 66, 54, 34,152, 68,166, 5, 54,123, 83, 21, 13, 16, 41,
+ 76,125, 64, 29, 22, 34, 70,128,255,255, 1,189, 4,191, 3, 20, 6,120, 16, 6, 4, 32, 0,141,255,255, 1,189,254, 12, 3, 20,
+255,197, 16, 7, 4, 32, 0, 0,248,218, 0, 0, 0, 1, 1, 92, 4,238, 3,118, 6, 52, 0, 6, 0, 0, 1, 3, 51, 23, 55, 51,
+ 3, 2, 30,194,138,130,130,140,196, 4,238, 1, 70,195,195,254,186, 0, 0, 0, 0, 1, 1,250, 1,194, 2,214, 2,188, 0, 3,
+ 0, 0, 1, 51, 21, 35, 1,250,220,220, 2,188,250, 0, 0, 0, 0, 1, 1,150, 0, 0, 3, 60, 5, 20, 0, 9, 0, 0, 33, 35,
+ 16, 39, 2, 3, 51, 18, 19, 22, 3, 60,180, 38, 49,155,196,121, 73, 32, 1,169,220, 1, 33, 1,110,254,221,254,148,155, 0, 0,
+ 0, 1, 0,154, 0, 0, 4, 56, 5, 20, 0, 24, 0, 0, 1, 22, 23, 22, 17, 35, 16, 39, 2, 3, 51, 22, 23, 22, 51, 22, 55, 54,
+ 55, 51, 6, 7, 2, 35, 34, 1,237, 28, 23, 32,180, 38, 49,155,198, 67, 3, 82,180,122, 54, 32, 8,180, 8, 42, 98,244,111, 3,
+ 97,106,114,155,254, 22, 1,169,220, 1, 33, 1,110,155, 5,152, 2,149, 85, 80,121,109,254,250, 0, 1, 0,134, 0, 0, 4, 76,
+ 5, 20, 0, 37, 0, 0, 1, 22, 23, 22, 17, 35, 16, 39, 2, 3, 51, 22, 23, 22, 55, 54, 55, 54, 53, 51, 20, 23, 22, 23, 22, 55,
+ 54, 53, 51, 16, 7, 6, 35, 34, 39, 6, 7, 6, 1,228, 24, 16, 32,180, 38, 49,155,196, 47, 40, 19, 48, 72, 8, 6,180, 14, 21,
+ 47, 60, 14, 14,180, 40, 70,156,132, 33, 51, 52, 46, 3, 53, 87, 89,190,254, 57, 1,169,220, 1, 33, 1,110,114,124, 62, 8, 12,
+ 64, 50,166,222, 25, 37, 2, 2, 44, 42,202,254,207, 59,108, 62, 51, 12, 10, 0, 0, 1, 0,236,255,236, 3,228, 5, 32, 0, 42,
+ 0, 0, 1, 21, 6, 7, 6, 21, 20, 23, 22, 23, 21, 34, 7, 6, 21, 20, 23, 22, 23, 50, 55, 54, 55, 21, 6, 7, 6, 35, 34, 39,
+ 38, 53, 52, 55, 54, 55, 38, 39, 38, 39, 38, 55, 54, 3, 96,121,103,136, 92, 78, 78, 89,135,112, 48, 60, 74, 98, 88,126, 86, 72,
+124,101,101,150,112,100,108, 64, 88, 72, 44, 55, 1, 1,225,113, 5, 32,168, 17, 52, 67, 64, 35, 57, 48, 4,164, 76, 64,114, 82,
+ 60, 74, 1, 23, 33, 43,196, 37, 28, 23,125,112,165,134,128, 76, 24, 32, 48, 58, 63,150,128, 63, 0, 2, 0,202,255,236, 4, 8,
+ 5, 37, 0, 13, 0, 28, 0, 0, 0, 34, 7, 6, 7, 6, 23, 22, 32, 55, 54, 39, 38, 39, 3, 22, 19, 22, 21, 16, 7, 6, 32, 39,
+ 38, 17, 52, 55, 18, 2,171,133, 86, 79, 3, 5, 71, 41, 0,255, 40, 72, 4, 4, 78,154,191,135, 90, 86,104,254, 61,105, 84, 90,
+135, 4,104,212,192,174,199,115, 66, 66,115,199,174,192, 1,144, 1,254,161,235,179,254,203,117,144,144,117, 1, 53,179,235, 1,
+ 97, 0, 0, 0, 0, 1, 0,154, 0, 0, 4, 55, 5, 20, 0, 17, 0, 0, 1, 16, 19, 18, 19, 35, 2, 3, 2, 39, 6, 35, 34, 39,
+ 53, 22, 51, 50, 3,147, 37, 29, 98,196, 85, 31, 28, 2, 96,142,178,167,180,165,210, 5, 20,254,220,254,159,254,235,254,134, 1,
+ 68, 1, 75, 1, 42,145, 28, 50,180, 50, 0, 0, 0, 1, 0,126, 0, 0, 4, 82, 5, 20, 0, 18, 0, 0, 33, 38, 3, 2, 39, 51,
+ 18, 19, 22, 23, 54, 55, 18, 19, 51, 2, 3, 2, 7, 2, 14, 16, 98,160,126,196,154, 90, 48, 2, 2, 48, 90,154,196,164,120, 86,
+ 30,246, 1, 58, 1,254,230,254,202,254,197,168, 11, 11,168, 1, 59, 1, 54,254,211,254, 73,254,202,250, 0, 0, 0, 1, 0,126,
+ 0, 0, 4, 82, 5, 20, 0, 18, 0, 0, 1, 51, 22, 19, 18, 19, 35, 2, 3, 38, 39, 6, 7, 2, 3, 35, 54, 19, 18, 2, 14,180,
+ 30, 86,120,164,196,154, 90, 48, 2, 2, 48, 90,154,196,126,160, 98, 5, 20,250,254,202,254, 73,254,211, 1, 54, 1, 59,168, 11,
+ 11,168,254,197,254,202,230, 1,254, 1, 58, 0, 0, 2, 0,161, 0, 0, 4, 48, 5, 31, 0, 20, 0, 35, 0, 0, 1, 38, 39, 38,
+ 39, 38, 39, 38, 55, 54, 23, 22, 23, 22, 23, 22, 23, 18, 19, 35, 2, 3, 39, 38, 39, 38, 35, 34, 7, 6, 23, 22, 23, 22, 23, 22,
+ 2,252,205, 61,165, 66,103, 2, 4, 99,126,146,154, 92,128, 14, 10, 18, 36, 91,196, 92, 36, 7, 10, 34, 56,107, 78, 58, 58, 2,
+ 1, 59, 33, 77, 79, 2, 85, 3, 15, 41, 65,101,123,142, 98,126, 1, 1, 84,118,167,135,150,254,205,254,164, 1,156, 1,110, 87,
+108, 60, 97, 55, 54, 71, 57, 54, 31, 13, 14, 0, 0, 3, 0,200, 0, 0, 4, 10, 5, 20, 0, 3, 0, 7, 0, 11, 0, 0, 37, 51,
+ 21, 35, 1, 51, 21, 35, 37, 51, 1, 35, 3, 70,180,180,253,144,180,180, 2,148,160,253, 94,160,250,250, 5, 20,250,250,250,236,
+ 0, 1, 1, 54,255, 31, 3,155, 2,139, 0, 17, 0, 0, 5, 54, 55, 54, 55, 54, 53, 52, 39, 51, 22, 21, 20, 7, 6, 7, 6, 7,
+ 1, 54,168,113,107, 47, 25, 21,150, 24, 75, 79,165,106,188, 70, 5,113,109,143, 80, 79, 96, 96, 78,111,170,160,166,113, 72, 6,
+ 0, 1, 1,214, 3,254, 2,251, 5,213, 0, 5, 0, 0, 1, 51, 21, 3, 35, 19, 2, 40,211,164,129, 82, 5,213,152,254,193, 1,
+ 63, 0, 0, 0, 0, 1, 0,146, 0,206, 4, 64, 4, 76, 0, 9, 0, 0, 19, 33, 27, 1, 33, 5, 19, 37, 5, 19,146, 1,103,111,
+113, 1,103,254,221,112,254,219,254,221,111, 2,247, 1, 85,254,171,212,254,171,211,211, 1, 85, 0, 1, 0, 69,255,235, 4,176,
+ 2, 27, 0, 25, 0, 0, 1, 22, 21, 20, 7, 6, 5, 6, 39, 38, 53, 52, 55, 51, 6, 21, 20, 23, 22, 51, 50, 55, 54, 53, 52, 39,
+ 4,150, 26,166,152,254,233,223,154,157, 41,184, 43,117, 98,132,188,106,123, 25, 2, 27, 71,132,123,121,111, 1, 1, 57, 59,225,
+ 62,124,138, 48,108, 30, 25, 65, 76,106, 64, 71, 0, 2, 0, 31,254,124, 4,116, 3,217, 0, 15, 0, 56, 0, 0, 1, 54, 53, 52,
+ 39, 38, 7, 6, 7, 6, 7, 20, 23, 22, 51, 50, 1, 54, 55, 54, 17, 6, 35, 34, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22,
+ 23, 22, 21, 20, 7, 6, 7, 6, 39, 38, 39, 38, 53, 52, 55, 51, 6, 7, 20, 23, 22, 3,129, 41, 66, 31, 44, 52, 40, 40, 1, 55,
+ 40, 42, 72,254, 91,212, 98,203, 63,122,133, 75, 98, 8, 23,150, 78, 76, 99, 57,103, 39, 33, 46, 57,165,187,233,206,138, 77, 82,
+183, 86, 2, 18, 86, 2, 25, 43, 77, 59, 51, 25, 1, 1, 42, 41, 51, 80, 38, 25,253, 59, 2,102,212, 1, 52, 75, 67, 87,129, 45,
+ 51,148, 69, 36, 50, 90,119,102,160,252,142,179,131,148, 1, 1,191,106,125,180,216,187,153, 72, 40,176, 0, 0, 0, 1, 1,189,
+ 5, 50, 3, 20, 6,235, 0, 24, 0, 0, 1, 55, 38, 39, 38, 55, 54, 55, 54, 23, 22, 23, 21, 38, 35, 34, 7, 6, 21, 20, 23, 22,
+ 55, 21, 5, 1,189, 78, 44, 16, 17, 1, 2, 54, 56, 94, 61, 53, 51, 63, 66, 17, 29, 94, 33,120,254,169, 5,150, 18, 20, 36, 37,
+ 45, 95, 44, 46, 1, 1, 32,100, 33, 18, 32, 26, 77, 27, 10, 29,102, 77, 0, 0,255,255, 0, 69,255,235, 4,176, 4,153, 16, 39,
+ 3,220, 0, 42,253,168, 16, 6, 4, 30, 0, 0,255,255, 0, 69,255,235, 4,176, 4, 26, 16, 39, 11,204, 2, 22, 3,132, 16, 6,
+ 4, 30, 0, 0,255,255, 0, 69,254, 12, 4,176, 2, 27, 16, 39, 11,204, 2, 16,255, 6, 16, 6, 4, 30, 0, 0,255,255, 0, 69,
+254, 12, 4,176, 3, 32, 16, 39, 11,208, 1,152,254, 12, 16, 38, 4, 30, 0, 0, 16, 7, 11,196, 1,184, 2,138,255,255, 0, 69,
+255,235, 4,176, 3,182, 16, 39, 11,203, 1,169, 3, 32, 16, 6, 4, 30, 0, 0,255,255, 0, 69,254, 12, 4,176, 2, 27, 16, 39,
+ 11,203, 1,158,255, 6, 16, 6, 4, 30, 0, 0,255,255, 0, 69,255,235, 4,176, 4, 26, 16, 39, 11,205, 1,164, 3,132, 16, 6,
+ 4, 30, 0, 0,255,255, 0, 69,254, 12, 4,176, 2, 27, 16, 39, 11,205, 1,158,255, 6, 16, 6, 4, 30, 0, 0,255,255, 0, 88,
+254, 11, 4,173, 5,176, 16, 39, 4, 13,255,174,255, 56, 16, 6, 3,235, 0, 0,255,255, 0, 88,254, 11, 4,173, 5,170, 16, 39,
+ 11,204, 1,194, 5, 20, 16, 6, 3,235, 0, 0,255,255, 0, 88,254, 11, 4,173, 3,103, 16, 39, 11,196, 2, 42, 0, 81, 16, 6,
+ 3,235, 0, 0,255,255, 0, 88,254, 11, 4,173, 3,103, 16, 39, 11,204, 2,203, 0,175, 16, 6, 3,235, 0, 0,255,255, 0, 88,
+254, 11, 4,173, 5,170, 16, 39, 11,197, 1, 84, 4, 26, 16, 6, 3,235, 0, 0,255,255, 0, 88,254, 11, 4,173, 3,103, 16, 39,
+ 11,203, 2,106, 0,150, 16, 6, 3,235, 0, 0,255,255, 0, 88,254, 11, 4,173, 3,103, 16, 39, 11,205, 2, 98, 0,175, 16, 6,
+ 3,235, 0, 0,255,255,255,204,254, 8, 4,208, 4,168, 16, 38, 3,239, 0, 0, 16, 7, 3,220, 1, 98,253,183,255,255,255,204,
+254, 8, 4,181, 4, 6, 16, 38, 3,239, 0, 0, 16, 7, 4, 15, 1, 62,253,210,255,255,255,204,254, 8, 4,101, 4,113, 16, 39,
+ 11,197, 2,213, 2,225, 16, 6, 3,239, 0, 0, 0, 2,255,181,255,164, 4,140, 3,120, 0, 14, 0, 57, 0, 0, 1, 54, 53, 52,
+ 39, 38, 7, 34, 6, 7, 20, 23, 22, 51, 50, 19, 6, 7, 6, 35, 34, 39, 38, 3, 38, 55, 51, 6, 21, 20, 23, 22, 51, 50, 55, 54,
+ 55, 54, 55, 6, 35, 34, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 16, 3,163, 41, 66, 31, 44, 52, 80, 1, 55,
+ 38, 44, 72,157,105,167,178,165,163,114,244, 2, 2, 36,184, 36,120, 90,131,127, 84,188, 48, 65, 38, 63,122,133, 75, 98, 8, 23,
+150, 78, 76, 90, 66, 96, 46, 23, 1,184, 44, 76, 57, 53, 26, 2, 84, 50, 82, 36, 26,254,166, 84, 38, 40, 41, 88, 1, 21,138, 92,
+ 94,136,147, 45, 34, 22, 50, 28, 40,104, 76, 68, 86,130, 44, 52,148, 68, 36, 50, 72,102, 51,139,254,187, 0, 0,255,255,255,181,
+255,164, 4,140, 5,153, 16, 39, 11,197, 2,112, 4, 9, 16, 6, 4, 51, 0, 0, 0, 1, 0, 10,255,167, 5, 93, 6, 20, 0, 42,
+ 0, 0, 37, 50, 54, 55, 54, 53, 52, 47, 1, 38, 53, 52, 55, 54, 55, 1, 21, 1, 6, 21, 20, 31, 1, 22, 21, 20, 7, 6, 7, 6,
+ 35, 34, 39, 36, 17, 52, 55, 51, 6, 21, 20, 23, 22, 2, 38,162,218, 54, 52, 95,183, 62, 18, 46, 86, 2, 15,254,104, 71, 32,148,
+142,104, 82,164, 99,207,112,108,254,182, 63,184, 65,203, 79, 88,106, 60, 57, 85, 57,105,202, 68, 71, 84, 31, 79, 65, 1,142,209,
+254,194, 55, 46, 63, 35,162,155,111,157,117, 92, 78, 47, 32, 98, 1, 11,138, 92, 94,136,120, 72, 28, 0, 0, 0,255,255, 0, 10,
+255,167, 5, 97, 7, 56, 16, 39, 11,206, 2,170, 0, 0, 16, 6, 4, 53, 0, 0,255,255, 0, 66,254,200, 4,250, 7,196, 16, 39,
+ 4, 15, 1,132, 1,144, 16, 6, 3,253, 0, 0, 0, 1, 0, 54,254,181, 4,141, 2,176, 0, 29, 0, 0, 1, 20, 7, 6, 7, 6,
+ 35, 34, 39, 38, 17, 52, 55, 51, 6, 21, 20, 23, 22, 51, 50, 55, 54, 55, 54, 53, 52, 39, 51, 22, 4,141,100, 71,142,140,129,172,
+123,234, 53,184, 55,161, 57,129, 84, 63,157, 58, 34, 70,184, 72, 0,255,187,164,116, 60, 59, 63,120, 1, 18,174,142,174,142,180,
+ 67, 24, 20, 51,167, 98, 96,249,152,159, 0, 0, 0, 3, 0, 0,255,189, 4,147, 3,229, 0, 38, 0, 54, 0, 70, 0, 0, 40, 1,
+ 39, 38, 53, 52, 55, 51, 6, 21, 20, 23, 22, 51, 50, 55, 38, 39, 38, 53, 52, 55, 54, 23, 38, 39, 53, 22, 23, 4, 23, 22, 21, 20,
+ 7, 6, 35, 34, 39, 55, 54, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 21, 20, 23, 22, 37, 22, 21, 20, 7, 6, 7, 22, 51, 50, 55,
+ 54, 53, 52, 39, 38, 1,221,254,220, 67,118, 16,184, 14, 30, 45, 40, 59, 71, 45, 15, 18, 45, 48, 77, 44, 81,219,220, 1, 5, 59,
+ 14, 40, 74,175,131,154, 21, 36, 34, 39, 15, 22, 58, 65, 23, 22, 7, 21, 1, 71, 6, 98, 12, 17, 52, 49,126, 16, 7, 33, 29, 36,
+ 64,128, 75, 53, 58, 44, 43, 11, 16, 11,105, 69, 78, 64, 84, 83, 90, 9, 39, 14,185, 67,180,214,217, 52, 57,103, 61,113,108,228,
+ 27, 64, 72, 61, 46, 37, 52, 45, 43, 35, 30, 37,118,188, 37, 39,138,114, 14, 19, 46, 67, 30, 33, 60, 78, 69, 0,255,255, 0, 76,
+254, 12, 4, 51, 4, 72, 16, 39, 4, 15, 0,112,254, 20, 16, 6, 4, 1, 0, 0,255,255, 0, 25,254,243, 4,209, 3, 28, 16, 6,
+ 4, 2, 0, 0,255,255, 0, 25,254,243, 4,209, 4, 20, 16, 39, 4, 15,255, 40,253,224, 16, 6, 4, 2, 0, 0,255,255, 0,222,
+255,198, 3,243, 2,222, 16, 6, 4, 0, 0, 0,255,255, 1,250, 1,194, 2,214, 2,188, 16, 6, 4, 16, 0, 0,255,255, 1,150,
+ 0, 0, 3, 60, 5, 20, 16, 6, 4, 17, 0, 0,255,255, 0,154, 0, 0, 4, 56, 5, 20, 16, 6, 4, 18, 0, 0,255,255, 0,134,
+ 0, 0, 4, 76, 5, 20, 16, 6, 4, 19, 0, 0, 0, 1, 0,175, 0, 0, 4, 34, 5, 37, 0, 39, 0, 0, 1, 38, 53, 52, 55, 54,
+ 51, 50, 23, 21, 38, 7, 6, 7, 6, 21, 20, 23, 22, 55, 54, 55, 21, 6, 35, 34, 39, 22, 23, 22, 17, 35, 16, 39, 2, 3, 51, 22,
+ 23, 22, 2, 37, 4, 88, 92,108, 84, 88, 92, 68, 56, 30, 31, 25, 47, 48, 69,141,195, 61,141,146, 27, 23, 32,180, 37, 49,156,199,
+ 66, 3, 27, 4, 20, 15, 19,120, 58, 61, 25,156, 36, 2, 1, 33, 34, 21, 52, 21, 39, 2, 2, 17,180, 26, 81,106,114,155,254, 22,
+ 1,169,220, 1, 33, 1,110,155, 5, 56, 0, 0, 0, 2, 0,172,255,244, 4, 37, 5, 36, 0, 19, 0, 39, 0, 0, 1, 22, 51, 50,
+ 55, 54, 53, 52, 39, 38, 34, 7, 6, 21, 20, 23, 22, 51, 50, 55, 23, 6, 39, 38, 39, 38, 53, 16, 55, 18, 51, 50, 19, 22, 19, 22,
+ 7, 6, 7, 6, 2,194, 45, 50, 34, 18, 27, 87, 90,174, 91, 86, 27, 15, 37, 51, 44, 90, 40,145,160, 46, 53, 95,179,170,162,187,
+ 94, 1, 1, 53, 51,156,144, 1, 90,161, 74,107, 86,215,216,224,224,213,218, 60,133, 74,161,208,151, 2, 2,156,181,124, 1, 38,
+196, 1,118,254,138,187,254,209,141,164,157, 1, 2, 0, 0, 0, 0, 1, 1, 8, 0, 0, 3,200, 5, 32, 0, 32, 0, 0, 33, 18,
+ 55, 54, 55, 34, 39, 38, 53, 52, 55, 54, 55, 54, 23, 21, 38, 35, 34, 7, 6, 21, 20, 23, 22, 51, 50, 55, 21, 6, 7, 6, 7, 1,
+ 8, 66,110, 68,100, 78, 46,134, 98,112,140,121, 87, 86,116, 62, 48, 66, 55, 44,103,140, 96,225,111,134, 54, 0,255,181,111, 85,
+ 37,109,151,175, 96,109, 2, 2, 33,180, 51, 47, 65, 98, 77, 51, 41, 41,180, 73,152,183,225, 0,255,255, 0,126, 0, 0, 4, 82,
+ 5, 20, 16, 6, 4, 23, 0, 0,255,255, 0,126, 0, 0, 4, 82, 5, 20, 16, 6, 4, 24, 0, 0,255,255, 0,161, 0, 0, 4, 48,
+ 5, 31, 16, 6, 4, 25, 0, 0, 0, 3, 0, 62,255,235, 4,100, 4,123, 0, 7, 0, 15, 0, 42, 0, 62, 64, 13, 35, 6, 37, 10,
+ 2, 27, 20, 14, 6, 22, 6, 16, 43, 16,220,236,204,204,220, 60,204,204, 47,236, 49, 0, 64, 7, 0, 22, 4, 18,153, 37, 43, 16,
+ 60,244,204,220,204, 64, 9, 12, 25, 8, 40,140, 29, 33,190, 44, 16,252, 60,236,204,220,204, 48, 37, 38, 21, 20, 55, 54, 39, 38,
+ 3, 38, 21, 20, 55, 54, 39, 38, 19, 20, 35, 34, 53, 52, 55, 17, 6, 35, 34, 53, 52, 51, 50, 23, 54, 51, 32, 25, 1, 35, 17, 52,
+ 35, 34, 7, 1, 20, 63, 63, 66, 1, 1, 76, 63, 63, 66, 1, 1,162,198,230,244, 21, 21,202,202,145, 44, 76,189, 1,150,184,226,
+137, 87,244, 2, 66, 65, 1, 1, 63, 62, 3, 5, 2, 66, 65, 1, 1, 63, 62,252,195,205,201,202, 6, 1,112, 8,208,191, 81, 81,
+254,190,252,199, 3, 57,170,142, 0, 2, 0,108,255,221, 4,174, 4,141, 0, 3, 0, 44, 0, 0, 0, 34, 20, 50, 7, 34, 53, 52,
+ 55, 54, 55, 36, 19, 22, 5, 7, 4, 23, 22, 51, 50, 54, 51, 50, 23, 7, 38, 35, 34, 6, 35, 32, 39, 52, 37, 55, 54, 53, 52, 5,
+ 6, 7, 22, 23, 20, 1,130,128,128, 68,210,188,187,151, 1,229, 1, 2,254,152,182,254,227, 3, 5,231, 74,214, 80,158,138,134,
+105, 63, 51,204,107,254, 93, 1, 1,180,178,214,254,200, 75, 77, 63, 1, 3,111,128,148,228,137, 97, 98, 1, 2,254,169,237,117,
+ 59, 92, 83,102,142,213, 97,145,127,249,198,142, 58, 70,130,189, 3, 1, 55, 56, 85,216, 0, 0, 0, 3, 0,121,255,235, 4, 80,
+ 4,141, 0, 7, 0, 17, 0, 56, 0, 0, 1, 22, 51, 50, 55, 38, 39, 34, 19, 22, 39, 38, 35, 34, 23, 20, 21, 22, 37, 52, 55, 38,
+ 55, 54, 36, 23, 4, 18, 25, 1, 35, 17, 16, 38, 7, 14, 1, 23, 54, 55, 32, 7, 20, 35, 34, 39, 6, 23, 22, 23, 54, 51, 50, 21,
+ 20, 7, 4, 1, 89, 54, 5, 23, 48, 73, 1, 18,127, 54, 2, 3, 49, 54, 2, 1,254,174, 42, 44, 3, 6, 1, 11,229, 1, 33,191,
+184,127,169,177,155, 3, 42, 58, 1, 5, 1,250, 57, 20, 31, 3, 2, 20, 23,171,204,204,254,117, 2, 96, 20, 18, 17, 1,254, 16,
+ 1, 48, 39, 34, 1, 3, 47,220,127,128, 54, 79,211,217, 1, 1,254,224,254,214,253,191, 2, 65, 1, 1,183, 3, 3,184, 75, 18,
+ 1,165,165, 11, 37, 91, 57, 46,141,200,181, 1, 1, 0, 0, 0, 0, 2, 0,246,254, 24, 3,219, 4,140, 0, 25, 0, 33, 0, 0,
+ 19, 52, 54, 51, 32, 25, 1, 16, 6, 35, 34, 38, 39, 55, 22, 51, 50, 53, 17, 16, 35, 22, 21, 6, 39, 38, 19, 38, 23, 6, 55, 22,
+ 39, 54,247,162,221, 1,101,155,204,214,116, 13,189, 33,121,175,130, 2, 6,215,209,215, 67, 3, 2, 66, 66, 2, 1, 3,166,113,
+117,253,244,253,143,254,249,240,208,141, 10,209,243, 2,223, 1,104, 21, 33,207, 1, 1, 1, 9, 1, 65, 67, 3, 2, 66, 66, 0,
+ 0, 2, 0,124,255,255, 4, 85, 4,154, 0, 11, 0, 41, 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 3, 50, 23, 22,
+ 25, 1, 7, 19, 52, 39, 20, 39, 38, 53, 52, 51, 50, 23, 16, 5, 6, 7, 6, 29, 1, 35, 53, 52, 55, 54, 2,110, 36, 28, 32, 32,
+ 37, 27, 32, 42,250,124,123,184, 1,101,200,217,218,244, 54,254,196,207, 76, 17,184, 30,106, 2, 96, 32, 32, 37, 27, 34, 30, 37,
+ 27, 2, 58,121,120,254,217,253,126, 1, 1, 41,142, 82,166, 1, 2,183,192,104, 1,149, 5, 4,134, 30,134, 75, 75,170, 62,220,
+ 0, 2, 0, 97,254, 25, 4,201, 4,131, 0, 11, 0, 57, 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 3, 38, 53, 52,
+ 53, 54, 55, 54, 55, 36, 19, 22, 13, 1, 6, 23, 22, 51, 50, 55, 54, 51, 50, 21, 20, 19, 48, 7, 2, 17, 6, 33, 32, 53, 52, 45,
+ 1, 54, 53, 52, 5, 6, 7, 22, 23, 6, 1, 54, 36, 28, 32, 32, 37, 27, 32, 35,210, 2,229,118,202, 1,201, 2, 1,254,138,254,
+251,169, 5, 4,199,179, 93, 35,120,151,134,144,176, 46,254,164,254,127, 1, 62, 1, 1,229,254,226,114, 62, 62, 1, 36, 3,111,
+ 32, 32, 37, 27, 34, 30, 37, 27,254,236, 16,209, 2, 1,133,125, 64, 1, 2,254,188,214,126, 89, 57,112,101,183, 68,216,243,254,
+181, 81, 1, 99, 1, 70,211,248,226,108, 87, 78,110,169, 3, 1, 45, 55, 86,188, 0, 2, 0,114,255,238, 4, 92, 4,150, 0, 11,
+ 0, 44, 0, 0, 1, 50, 54, 53, 52, 38, 39, 38, 6, 21, 20, 22, 3, 20, 33, 32, 25, 1, 51, 17, 16, 37, 36, 17, 52, 53, 54, 55,
+ 38, 55, 18, 5, 22, 21, 20, 7, 6, 39, 22, 23, 22, 55, 21, 7, 6, 1,215, 36, 28, 33, 31, 37, 27, 32,130, 1, 47, 1, 64,184,
+254, 8,254, 15, 3,162,166, 1, 1, 1,108,180,192,126, 46, 2, 90, 65,144,141,147, 3,164, 32, 32, 36, 27, 1, 1, 33, 32, 36,
+ 28,253,140,174, 1,184, 2, 63,253,193,253,180, 1, 1, 1, 61, 2, 1,145, 81,109,234, 1, 46, 2, 1,176,186, 2, 1,117,189,
+ 71, 52, 12,161, 23, 24, 0, 0, 0, 2, 0,123,255,227, 4, 86, 4,124, 0, 7, 0, 28, 0, 44, 64, 9, 27, 6, 8, 6, 16, 2,
+ 21, 6, 14, 47,252,204,220,204, 47,236, 49, 0, 64, 12, 11,140, 24,190, 29, 0, 14, 4, 18,153, 28, 29, 16, 60,244,204,220,204,
+ 16,252,252, 48, 37, 34, 21, 20, 51, 50, 53, 52, 5, 17, 52, 5, 4, 21, 17, 36, 23, 22, 35, 34, 53, 17, 52, 36, 55, 54, 4, 21,
+ 17, 1,102, 64, 64, 64, 1,248,254,202,254,203, 1, 24, 1, 1,231,235, 1, 19,218,197, 1, 41,235, 64, 64, 64, 64,235, 3, 31,
+201, 3, 3,195,254, 80, 27,223,200,200, 2,142,199,121, 2, 2,120,204,252,199, 0, 2, 0,149,255,226, 4,111, 4,161, 0, 11,
+ 0, 42, 0, 0, 37, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 19, 34, 2, 35, 34, 7, 3, 32, 21, 20, 35, 34, 53, 17, 16, 51,
+ 50, 18, 51, 50, 18, 55, 50, 25, 1, 35, 17, 52, 35, 34, 2, 1,128, 36, 28, 32, 32, 37, 27, 32,228,122,119, 15, 54, 1, 1, 1,
+ 25,213,251,242,131, 94, 34, 36, 74,133,242,184, 55, 22,102,241, 32, 32, 37, 27, 34, 30, 37, 27, 1,250, 1, 38,225,254, 80,196,
+218,210, 2,150, 1, 87,254,224, 1, 31, 1,254,169,252,182, 3, 48,219,254,224, 0, 3, 0, 26,254, 20, 4, 62, 4,124, 0, 3,
+ 0, 7, 0, 35, 0, 0, 36, 34, 20, 50, 0, 34, 20, 50, 19, 50, 23, 22, 35, 34, 53, 17, 6, 35, 38, 53, 54, 55, 54, 23, 54, 51,
+ 32, 22, 21, 17, 35, 17, 52, 35, 34, 7, 2, 38,128,128,254,237,128,128,166,241, 2, 2,218,211, 33, 31,167, 1,179,145, 55,121,
+139, 1, 6,158,184,244,123, 94,220,128, 3,166,128,253,221,185,195,227, 2, 73, 7, 2,190,178, 1, 1,101,100,213,109,250,219,
+ 5, 37,163,139, 0, 2, 0,106,255,226, 4,104, 4,124, 0, 7, 0, 39, 0, 62, 64, 7, 6, 12, 2, 8, 36, 6, 15, 47,252, 60,
+204,220,204, 64, 7, 20, 6, 32, 24, 6, 26, 41, 16,220,236,220,236, 49, 0, 64, 6, 17,140, 34,153, 26, 41, 16, 60,244,236, 64,
+ 9, 4, 38, 0, 29,140, 22, 10,190, 41, 16,252, 60,236,204,220,204, 48, 1, 38, 23, 6, 55, 22, 39, 54, 5, 52, 51, 50, 21, 20,
+ 6, 21, 20, 51, 50, 53, 17, 52, 23, 4, 21, 17, 35, 17, 52, 7, 6, 21, 3, 2, 37, 36, 17, 16, 55, 34, 1, 54, 67, 3, 2, 66,
+ 67, 3, 2,254,244,202,216,254,170,178,252, 1, 0,164, 98, 82, 1, 1,254,172,254,176,216,214, 4, 18, 2, 66, 67, 3, 1, 65,
+ 67, 75,177,173,202,224,212,216,188, 2, 74,254, 1, 1,251,252,129, 3,127,106, 3, 3,101,253,183,254,173, 1, 1, 1,104, 1,
+ 48,154, 0, 0, 0, 2, 0, 75,255,227, 4, 84, 4,141, 0, 5, 0, 32, 0, 0, 0, 50, 52, 35, 34, 7, 3, 53, 51, 50, 54, 53,
+ 17, 36, 53, 52, 55, 54, 21, 17, 22, 55, 54, 53, 17, 51, 17, 16, 33, 34, 39, 6, 35, 1, 3,128, 64, 62, 2,184,122, 93, 85,254,
+232,226,238, 93,120,152,184,254,180,174, 84,114,217, 3,115,128, 64,252, 48,143,101,156, 1,103, 8,204,221, 1, 1,219,253,117,
+169, 1, 1,177, 3, 47,252,209,254,178,115,115, 0, 2, 0,124,255,238, 4, 84, 4,125, 0, 3, 0, 25, 0, 0, 0, 34, 20, 50,
+ 1, 52, 55, 38, 55, 54, 23, 22, 7, 6, 0, 21, 22, 37, 32, 25, 1, 51, 17, 16, 37, 36, 1,169,128,128,254,212,182,183, 1, 1,
+229,237, 1, 1,254,236, 1, 1, 37, 1, 60,184,254, 12,254, 29, 3,238,128,253,210,218,196, 38,182,196, 2, 2,188,151,254,209,
+168,204, 1, 1, 39, 2,180,253, 76,254, 66, 1, 1, 0, 0, 0, 0, 2, 0,124,255,238, 4, 84, 6, 20, 0, 3, 0, 25, 0, 0,
+ 0, 34, 20, 50, 1, 52, 55, 38, 55, 54, 23, 22, 7, 6, 0, 21, 22, 33, 32, 25, 1, 51, 17, 16, 37, 36, 1,169,128,128,254,212,
+182,183, 1, 1,229,237, 1, 1,254,236, 1, 1, 37, 1, 60,184,254, 12,254, 29, 3,238,128,253,210,218,196, 38,182,196, 2, 2,
+188,151,254,209,168,203, 1, 39, 4,104,251,152,254, 66, 1, 1, 0, 3, 0, 99,255,239, 4,246, 5, 27, 0, 11, 0, 23, 0, 74,
+ 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 5, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 1, 43, 1, 38, 39, 6,
+ 35, 34, 39, 38, 53, 17, 52, 51, 50, 21, 6, 39, 16, 21, 20, 51, 50, 53, 17, 51, 17, 20, 55, 54, 53, 17, 38, 55, 52, 23, 22, 23,
+ 54, 53, 38, 39, 55, 22, 23, 22, 7, 19, 20, 7, 6, 3,132, 36, 28, 32, 32, 37, 27, 32,253,146, 36, 28, 32, 32, 38, 26, 32, 1,
+224, 2, 2, 99,103,101,133,126, 80, 76,210,216, 1,241,102,138,184,114,116,243, 1,208,179, 27, 30, 1, 74,119, 84, 1, 3,152,
+ 2, 92, 85, 3,250, 32, 32, 38, 26, 34, 30, 36, 28, 1, 32, 32, 37, 27, 34, 30, 37, 27,251,246, 1, 73, 74, 84, 79,154, 2, 98,
+223,197,199, 23,254,111, 59,132,132, 1, 52,254,203,139, 5, 5,130, 1,204, 8,168,209, 1, 1,152, 22, 80, 54, 65, 94,103, 91,
+195,111,254, 6,164, 80, 73, 0, 0, 2, 0, 99,255,239, 4, 98, 6, 20, 0, 36, 0, 48, 0, 0, 1, 20, 7, 6, 43, 2, 38, 39,
+ 6, 35, 34, 39, 38, 53, 17, 52, 51, 50, 21, 6, 39, 16, 21, 20, 51, 50, 53, 17, 51, 17, 20, 55, 54, 53, 17, 51, 1, 34, 6, 21,
+ 20, 22, 51, 50, 54, 53, 52, 38, 4, 98, 92, 85,123, 2, 2, 99,103,101,133,126, 80, 76,210,216, 1,241,102,138,184,114,116,184,
+252,212, 36, 28, 32, 32, 38, 26, 32, 1, 44,164, 80, 73, 1, 73, 74, 84, 79,154, 2, 98,223,197,199, 23,254,111, 59,132,132, 1,
+ 52,254,203,139, 5, 5,130, 4,232,253,229, 32, 32, 37, 27, 34, 30, 37, 27, 0, 0, 2, 0,101,255,238, 4,108, 4,126, 0, 11,
+ 0, 44, 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 19, 50, 53, 17, 51, 17, 6, 55, 54, 53, 17, 51, 17, 16, 37, 38,
+ 39, 6, 35, 32, 17, 52, 55, 38, 55, 54, 23, 22, 7, 6, 0, 23, 20, 1, 98, 36, 28, 32, 32, 36, 28, 32, 48,110,184, 1,117,104,
+184,254,224,105,103,101,143,254,222,152,138, 2, 2,228,237, 1, 2,254,214, 2, 3,210, 32, 32, 37, 27, 34, 30, 37, 27,252,179,
+167, 1, 52,254,203,174, 5, 5,165, 3, 47,252,209,254,192, 3, 1, 73, 74, 1, 61,240,166, 37,158,249, 1, 1,219,143,254,170,
+144,167, 0, 0, 0, 2, 0,101,255,238, 4,108, 6, 20, 0, 11, 0, 44, 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38,
+ 19, 50, 53, 17, 51, 17, 6, 55, 54, 53, 17, 51, 17, 16, 37, 38, 39, 6, 35, 32, 17, 52, 55, 38, 55, 54, 23, 22, 7, 6, 0, 23,
+ 20, 1, 98, 36, 28, 32, 32, 36, 28, 32, 48,110,184, 1,117,104,184,254,224,105,103,101,143,254,222,152,138, 2, 2,228,237, 1,
+ 2,254,214, 2, 3,210, 32, 32, 37, 27, 34, 30, 37, 27,252,179,167, 1, 52,254,203,175, 6, 5,165, 4,232,251, 24,254,192, 3,
+ 1, 73, 74, 1, 61,240,166, 37,158,249, 1, 1,219,143,254,170,144,167, 0, 0, 0, 1, 0, 16,255,227, 4, 96, 4, 96, 0, 23,
+ 0, 0, 1, 51, 17, 16, 51, 50, 25, 1, 51, 17, 16, 33, 34, 39, 6, 35, 34, 53, 52, 51, 50, 7, 50, 53, 1, 99,184,189,208,184,
+254,120,240, 41, 51,182,198,156,144, 2, 41, 4, 96,253, 44,254,237, 1, 19, 2,212,252,197,254,190, 56, 56,156,150,123,139, 0,
+ 0, 2, 0,114,255,238, 4, 92, 6, 20, 0, 11, 0, 44, 0, 0, 1, 50, 54, 53, 52, 38, 39, 38, 6, 21, 20, 22, 3, 20, 33, 32,
+ 25, 1, 51, 17, 16, 37, 36, 17, 52, 53, 54, 55, 38, 55, 18, 5, 22, 21, 20, 7, 6, 39, 22, 23, 22, 55, 21, 7, 6, 1,215, 36,
+ 28, 33, 31, 37, 27, 32,130, 1, 47, 1, 64,184,254, 8,254, 15, 3,162,166, 1, 1, 1,108,180,192,126, 46, 2, 90, 65,144,141,
+147, 3,164, 32, 32, 36, 27, 1, 1, 33, 32, 36, 28,253,140,174, 1,184, 3,218,252, 38,253,180, 1, 1, 1, 61, 2, 1,145, 81,
+109,234, 1, 46, 2, 1,176,186, 2, 1,117,189, 71, 52, 12,161, 23, 24, 0, 0, 0, 2, 0,100,255,238, 4,109, 4,140, 0, 11,
+ 0, 43, 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 5, 38, 33, 32, 19, 18, 33, 32, 23, 7, 38, 7, 4, 23, 22, 5,
+ 4, 3, 2, 37, 36, 38, 55, 54, 23, 22, 21, 20, 7, 22, 55, 54, 1, 61, 36, 28, 32, 32, 36, 28, 32, 2, 87, 1,254,189,253,243,
+ 1, 1, 2, 21, 1, 54,184,116,177,211,254,169, 3, 5, 1,109, 1,225, 3, 2,254, 50,254,167,223, 1, 1,210,224, 22, 74,142,
+219, 1, 88, 32, 32, 36, 28, 32, 32, 36, 28, 16,232, 1, 56, 1, 36,220,123,188, 1, 2,138,158, 1, 1,254,144,254,154, 1, 1,
+178,123,204, 1, 1,209, 78, 20, 38, 1, 2, 0, 0, 2, 0, 96,255,238, 4,112, 4,141, 0, 11, 0, 46, 0, 0, 37, 34, 6, 21,
+ 20, 22, 51, 50, 54, 53, 52, 38, 1, 4, 25, 1, 20, 37, 38, 2, 39, 38, 7, 22, 7, 6, 39, 38, 55, 18, 33, 50, 18, 55, 54, 53,
+ 17, 16, 33, 34, 7, 6, 7, 39, 54, 55, 54, 1, 70, 37, 27, 32, 32, 36, 28, 32, 1, 8, 2, 2,254,244,232, 87,139, 68, 12,227,
+ 2, 2,207,250, 1, 1, 1, 78,232, 98,102, 80,254,198,229, 39, 26, 2,183, 6, 17, 71,248, 33, 31, 36, 28, 32, 32, 36, 27, 3,
+149, 1,254,137,253,212,250, 1, 1, 1,221, 2, 1, 84, 1,183,214, 1, 1,235, 1,137,254, 30, 2, 2,174, 1,168, 1, 24,114,
+ 74, 99, 20,111, 60,249, 0, 0, 0, 2, 0,111,255,228, 4, 98, 4,123, 0, 5, 0, 31, 0, 0, 1, 34, 20, 51, 50, 54, 1, 18,
+ 33, 32, 25, 1, 16, 37, 38, 36, 39, 52, 23, 50, 23, 22, 7, 22, 51, 32, 53, 17, 52, 33, 32, 7, 1, 80, 64, 64, 60, 8,254,244,
+ 41, 1,189, 1,244,254, 34,240,254,220, 1,229,217, 4, 1, 70, 25,127, 1, 30,254,204,254,233, 24, 1, 84,128,128, 1,206, 1,
+ 89,254,215,253,184,254,217, 2, 1,156,143,211, 1,215, 61, 73, 8,216, 1,196,204,213, 0, 0, 0, 3, 0, 97,255,238, 5, 35,
+ 5,156, 0, 11, 0, 50, 0, 58, 0, 0, 37, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 37, 17, 6, 33, 36, 55, 54, 33, 32, 23,
+ 54, 39, 38, 39, 55, 22, 23, 22, 7, 17, 20, 37, 38, 2, 39, 38, 7, 22, 7, 6, 39, 38, 55, 18, 33, 50, 18, 55, 54, 1, 32, 53,
+ 52, 33, 32, 21, 20, 1, 72, 38, 26, 32, 32, 36, 28, 32, 2, 74, 70,254,234,254, 10, 2, 2, 1,242, 1,142,114, 28, 2, 11, 99,
+158,128, 2, 2,178,254,244,232, 88,138, 68, 12,226, 2, 2,206,251, 1, 2, 1, 78,232, 98,102, 80,254,164, 1,116,254,140,254,
+182,248, 33, 31, 36, 28, 32, 32, 36, 27, 61, 1,153, 14, 1,252,233,154, 49, 18, 84,132,118,174,160,146,151,253,195,250, 1, 1,
+ 1,221, 2, 1, 84, 1,183,214, 1, 1,235, 1,137,254, 30, 2, 2, 2,209, 69,109, 77,100, 0, 0, 3, 0, 19,255,231, 4,189,
+ 4,154, 0, 6, 0, 13, 0, 54, 0, 0, 0, 34, 21, 6, 51, 50, 55, 36, 34, 21, 6, 51, 50, 55, 3, 36, 17, 16, 55, 38, 55, 54,
+ 23, 22, 7, 14, 1, 17, 20, 51, 54, 53, 17, 6, 43, 1, 38, 55, 54, 51, 50, 23, 54, 55, 54, 25, 1, 35, 17, 52, 35, 34, 7, 19,
+ 16, 1, 26,128, 1, 65, 63, 1, 1,145,128, 1, 65, 63, 1,238,254, 96,130,140, 1, 1,198,190, 1, 1,186,223,225, 20, 29, 2,
+185, 1, 1,166,162, 53, 64, 86,247,184, 67, 63, 47, 1, 4, 26, 64, 64, 64, 76, 64, 64, 64,252, 2, 1, 1, 69, 1, 62,169, 47,
+153,181, 1, 1,178,125,204,254,159,182, 1,181, 2, 8, 9, 6,183,169, 99, 98, 1, 4,254,186,252,169, 3, 87,157, 90,253,154,
+254,179, 0, 0, 0, 3, 0,119,255,238, 4,106, 4,141, 0, 11, 0, 37, 0, 45, 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53,
+ 52, 38, 55, 36, 17, 16, 5, 4, 25, 1, 20, 37, 38, 39, 38, 55, 54, 23, 22, 21, 20, 7, 22, 51, 32, 53, 17, 6, 19, 52, 5, 4,
+ 7, 6, 5, 4, 1, 92, 36, 28, 32, 32, 37, 27, 32,244,254, 7, 1,249, 1,250,254, 10,202,170,134, 1, 1,220,237, 61, 65, 56,
+ 1, 41, 83, 85,254,196,254,192, 1, 1, 1, 66, 1, 60, 1, 83, 32, 32, 37, 27, 34, 30, 36, 28,208, 1, 1, 51, 1, 54, 1, 1,
+254,209,253,140,251, 2, 1, 72, 57,170,215, 1, 1,216, 71, 41, 35,175, 1, 36, 54, 1, 55,156, 1, 1,154,159, 1, 1, 0, 0,
+ 0, 2, 0, 84,255,238, 4,218, 4,216, 0, 11, 0, 54, 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 1, 36, 39, 38,
+ 37, 36, 55, 54, 33, 50, 23, 22, 51, 50, 19, 23, 2, 7, 6, 39, 38, 35, 34, 23, 22, 5, 4, 3, 2, 37, 36, 39, 38, 55, 54, 23,
+ 22, 21, 20, 21, 6, 7, 22, 1, 50, 36, 28, 32, 32, 37, 27, 32, 1, 0, 1, 84, 1, 1,254,192,253,254, 3, 3, 1,158,136, 92,
+111, 69,104, 64,148, 77,243,135,113, 75, 85,210, 5, 5, 1, 80, 1,230, 1, 1,253,240,254,236,136,110, 1, 1,224,215, 1, 94,
+153, 1,139, 32, 32, 37, 27, 34, 30, 37, 27,254,249, 2,254,195, 43, 68,231,252, 89,108, 1, 4, 48,254,149, 1, 1,121, 80, 94,
+100, 54, 81,254,193,254,113, 2, 1,116, 94,125,223, 1, 1,214, 2, 1, 93, 70, 28, 0, 0, 0, 0, 2, 0, 48,255, 38, 4,169,
+ 4,161, 0, 3, 0, 36, 0, 0, 0, 34, 20, 50, 3, 39, 1, 0, 39, 38, 15, 1, 6, 39, 36, 3, 2, 33, 32, 7, 6, 39, 38, 53,
+ 34, 21, 20, 51, 50, 63, 1, 54, 23, 22, 21, 20, 1, 2, 42,128,128,202,129, 2, 43, 1, 24, 61, 25,120,165,130,215,254,226, 7,
+ 9, 1,136, 1, 15, 1, 1,211,212, 35,101,115, 90,140,175,104,224,254,225, 4, 13,128,251,153,134, 2, 78, 1, 41, 61, 25,137,
+187,147, 1, 1, 1,109, 1,144,206,216, 3, 4,205,205,195,100,157,196, 2, 5,189,157,254,207,255,255, 0, 90,255,229, 4,101,
+ 4,128, 16, 39, 4,101, 4,209,250,201, 16, 7, 4,101, 4,209,253,117, 0, 0, 0, 2,251,137, 5, 28,255,148, 7, 11, 0, 19,
+ 0, 26, 0, 0, 3, 2, 33, 32, 38, 55, 54, 23, 50, 7, 6, 7, 22, 51, 36, 53, 52, 39, 55, 22, 4, 52, 7, 34, 21, 6, 23,109,
+ 2,254, 5,254,182,195, 1, 1,229,241, 3, 1, 35, 33, 65, 1, 28, 86,138,168,253, 28, 66, 56, 1, 63, 6, 29,254,255,168,107,
+217, 1,216, 80, 36, 4, 1, 85, 46, 70,138,143,140,126, 1, 62, 61, 1, 0, 0, 0, 2, 0,157, 0, 0, 4, 33, 4,123, 0, 16,
+ 0, 22, 0, 0, 1, 32, 25, 1, 35, 17, 16, 35, 34, 7, 50, 21, 20, 35, 34, 53, 16, 18, 20, 51, 50, 52, 35, 2,106, 1,183,184,
+255,164, 61,218,229,225,166, 59, 67, 62, 4,123,254,106,253, 27, 2,203, 1, 25, 86,193,199,199, 1,174,254,137,110,110, 0, 0,
+255,255,252,197, 0, 0, 4, 33, 6,114, 16, 38, 4,102, 0, 0, 16, 7, 4,117,251, 47, 0, 0, 0, 1, 0, 83, 4,236, 4,126,
+ 7,105, 0, 17, 0, 0, 1, 20, 33, 21, 32, 17, 16, 33, 32, 17, 16, 33, 53, 32, 55, 52, 33, 32, 1, 18, 1, 36,254, 30, 2, 38,
+ 2, 4,254, 62, 1, 2, 2,254,186,254,152, 6, 37,187,126, 1, 63, 1, 62,254,194,254,193,126,187,197, 0, 0, 0, 1, 0, 83,
+ 4,230, 5, 19, 7,105, 0, 21, 0, 0, 1, 20, 33, 21, 32, 17, 16, 33, 32, 17, 20, 7, 51, 21, 33, 61, 1, 32, 55, 52, 33, 32,
+ 1, 17, 1, 37,254, 29, 2, 38, 2, 4, 62,212,253,169, 1, 1, 2,254,186,254,152, 6, 37,187,126, 1, 63, 1, 62,254,194,119,
+ 74,132, 6,126,187,197, 0, 0, 0, 2, 0, 83, 4,236, 4,126, 7,105, 0, 17, 0, 21, 0, 0, 1, 20, 33, 21, 32, 17, 16, 33,
+ 32, 17, 16, 33, 53, 32, 55, 52, 33, 32, 5, 21, 35, 53, 1, 18, 1, 36,254, 30, 2, 38, 2, 4,254, 62, 1, 2, 2,254,186,254,
+152, 1,222,238, 6, 37,187,126, 1, 63, 1, 62,254,194,254,193,126,187,197, 78,220,220, 0, 0, 0, 2, 0, 83, 4,230, 5, 19,
+ 7,105, 0, 21, 0, 25, 0, 0, 1, 20, 33, 21, 32, 17, 16, 33, 32, 17, 20, 7, 51, 21, 33, 61, 1, 32, 55, 52, 33, 32, 5, 21,
+ 35, 53, 1, 17, 1, 37,254, 29, 2, 38, 2, 4, 62,212,253,169, 1, 1, 2,254,186,254,152, 1,221,238, 6, 37,187,126, 1, 63,
+ 1, 62,254,194,119, 74,132, 6,126,187,197, 84,220,220, 0, 0, 0, 2, 1,207,253, 51, 3,135,255,178, 0, 4, 0, 21, 0, 0,
+ 4, 34, 20, 51, 54, 3, 54, 53, 52, 39, 6, 35, 34, 53, 52, 51, 50, 23, 22, 21, 20, 7, 2,191,130, 65, 65, 92,144, 5, 40, 68,
+179,170,101, 78, 91,204,188,129, 1,254,207,111, 91, 17, 16, 36,158,186, 78, 91,139,117,214, 0, 0, 2, 1,120,253,142, 3,153,
+255,175, 0, 5, 0, 26, 0, 0, 4, 34, 20, 51, 50, 53, 19, 34, 53, 52, 55, 38, 53, 52, 50, 21, 20, 6, 21, 20, 51, 50, 53, 17,
+ 51, 17, 20, 2, 5, 44, 23, 21,114,243, 62, 74,234,109,130,158,132,178, 44, 21,254, 87,146,115, 62, 10, 91,121,117, 63,123, 69,
+ 66, 88, 1, 70,254,186,195, 0, 0, 2, 0, 68, 5, 28, 4,141, 7, 11, 0, 20, 0, 27, 0, 0, 1, 22, 7, 39, 54, 53, 54, 37,
+ 34, 7, 22, 7, 6, 7, 6, 39, 38, 55, 54, 33, 32, 0, 52, 7, 34, 23, 20, 51, 4,140, 1,168,138, 86, 1,254,165, 65, 33, 46,
+ 10, 21,217,229, 1, 1,123,120, 1, 26, 2, 57,252,225, 60, 63, 1, 56, 6, 10, 95,143,138, 70, 46, 85, 1, 4, 68, 87,176, 1,
+ 1,217, 84, 95, 96,254,174,126, 1, 63, 61, 0, 0, 2,255,240,253,199, 4,225,255,177, 0, 7, 0, 26, 0, 0, 19, 50, 53, 52,
+ 35, 34, 21, 20, 5, 34, 2, 35, 22, 21, 20, 35, 34, 53, 16, 33, 50, 18, 51, 50, 55, 23, 6,176, 48, 48, 43, 2,201,218,172,184,
+ 92,196,184, 1, 76,222,222, 96, 93,166,134,191,254, 78, 48, 47, 46, 49,105, 1, 51, 32,114,191,167, 1, 67,254,208,198,114,240,
+ 0, 1, 2, 14, 4,241, 2,195, 6, 86, 0, 3, 0, 0, 1, 51, 17, 35, 2, 14,180,180, 6, 86,254,155, 0, 0, 0, 2, 0, 86,
+ 4,224, 4,123, 7, 33, 0, 7, 0, 27, 0, 0, 19, 22, 39, 54, 7, 34, 23, 6, 37, 20, 2, 41, 1, 53, 54, 53, 6, 55, 52, 23,
+ 22, 29, 1, 20, 7, 32, 54, 53,241, 42, 1, 1, 42, 44, 2, 2, 3,181,214,254,132,254, 85,144,183, 1,157,145, 71, 1,177,243,
+ 6,109, 1, 43, 43, 2, 41, 44,125,229,254,221,133, 46,112, 7,157,136, 1, 1,131,183, 92, 40,141,250, 0, 0, 0, 1, 0, 95,
+ 4,199, 5, 80, 6,243, 0, 52, 0, 0, 1, 34, 17, 16, 33, 50, 22, 55, 54, 55, 54, 51, 50, 21, 20, 7, 22, 55, 54, 55, 51, 6,
+ 7, 6, 33, 35, 53, 54, 53, 52, 35, 34, 7, 6, 39, 38, 39, 38, 35, 34, 21, 20, 59, 1, 38, 53, 52, 51, 22, 7, 6, 7, 6, 1,
+ 80,240, 1, 36, 50,126, 42, 38, 74, 72, 72,220,158,132, 66, 80, 4,154, 2,104, 40,254,226,196,208, 76, 24, 66, 68, 92,106, 36,
+ 62, 24,146,102, 62, 46, 96,104, 2, 2, 62, 52, 4,200, 1, 20, 1, 23,130, 1, 1, 65, 63,215,126, 61, 4, 13, 16,104,130, 92,
+ 36,133,107, 98, 56, 58, 59, 1, 1, 45, 70,144,161, 2, 95, 90, 1,107,102, 50, 41, 0, 0, 0, 0, 1, 1, 73, 4,224, 3,136,
+ 7, 30, 0, 11, 0, 0, 1, 53, 51, 53, 51, 21, 51, 21, 35, 21, 35, 53, 1, 74,216,142,216,216,142, 5,184,142,216,216,142,216,
+216, 0, 0, 0,255,255,255,240, 5, 23, 4,225, 7, 1, 16, 7, 4,111, 0, 0, 7, 80, 0, 0, 0, 2, 1,150, 4,246, 3, 59,
+ 6,114, 0, 7, 0, 12, 0, 0, 1, 52, 51, 50, 21, 20, 35, 34, 18, 20, 51, 50, 52, 1,150,212,208,212,208,132, 76, 84, 5,190,
+180,180,200, 1, 16,144,144, 0, 0, 1, 0,160, 0, 0, 4, 51, 4,122, 0, 21, 0, 0, 1, 2, 33, 32, 17, 52, 55, 51, 6, 21,
+ 16, 33, 32, 17, 52, 39, 36, 3, 51, 22, 23, 4, 4, 51, 1,254, 49,254, 61, 80,190, 85, 1, 15, 1, 17,189,254,220, 2,181, 1,
+126, 1,105, 1,239,254, 17, 1,201,105, 98, 99, 87,254,183, 1, 79,214, 74,102, 1, 20,161, 51,130, 0, 0, 0, 0, 2, 0,158,
+ 0, 0, 4, 52, 6, 22, 0, 18, 0, 26, 0, 0, 1, 16, 33, 32, 3, 18, 37, 53, 54, 39, 38, 53, 51, 20, 23, 22, 29, 1, 4, 3,
+ 18, 33, 4, 17, 16, 33, 32, 4, 52,254, 60,254, 49, 3, 3, 1,131, 1,163,141,181,126,161, 1,107,188, 1,254,239,254,241, 1,
+ 22, 1, 9, 2, 32,253,224, 2, 33, 1,171, 84,138,120, 28, 27,189, 89, 27, 57,185,144,118,254,119, 1,115, 3,254,149,254,107,
+ 0, 2, 0,110,254, 87, 4, 98, 4, 21, 0, 25, 0, 33, 0, 0, 37, 16, 33, 32, 17, 18, 37, 54, 55, 52, 35, 34, 23, 20, 23, 7,
+ 38, 53, 16, 33, 32, 3, 20, 7, 21, 4, 3, 16, 37, 32, 3, 16, 37, 4, 4, 97,254, 9,254, 4, 1, 2, 28,108, 2,213,183, 1,
+ 15,137, 46, 1, 95, 1,139, 1,122, 1, 45,179,254,190,254,182, 2, 1, 70, 1, 72, 43,254, 44, 1,212, 1,205, 5, 83,169,142,
+139, 46, 43, 82, 76,111, 1, 9,254,219,164, 84, 20,110,254,181, 1, 66, 1,254,189,254,192, 1, 1, 0, 0, 0, 0, 2, 0, 55,
+254, 87, 4,154, 4, 12, 0, 33, 0, 44, 0, 0, 23, 54, 55, 53, 0, 17, 16, 5, 50, 23, 51, 54, 51, 32, 17, 21, 16, 33, 32, 17,
+ 53, 52, 43, 1, 34, 17, 21, 16, 0, 23, 7, 38, 36, 7, 1, 53, 52, 43, 1, 34, 29, 1, 16, 51, 50,221, 40, 84,254,222, 1, 88,
+ 91, 80, 20, 60,170, 1,102,254,166,254,170, 73, 43,129, 2,121,104,202, 90,254,203,116, 2,212,149, 71,119,186,153,225, 44, 18,
+ 11, 1, 22, 1,200, 1,198, 1, 98, 98,254, 43, 20,254, 6, 2, 15,234, 93,254,196,109,254, 76,254,255,200, 1,167, 14, 86, 3,
+ 3,212,241,182,247,254,232, 0, 0, 1, 0,160,254, 87, 4, 51, 4, 22, 0, 26, 0, 0, 5, 2, 33, 32, 17, 52, 55, 51, 6, 21,
+ 16, 33, 32, 53, 17, 16, 32, 21, 20, 23, 7, 38, 53, 16, 5, 32, 19, 4, 51, 1,254, 73,254, 37,141,188,144, 1, 36, 1, 6,254,
+ 38, 62,176, 56, 1,150, 1,157, 1, 32,254,119, 1,146,143,106,115,133,254,251,241, 2,164, 1, 13,222,111,101, 1, 75,133, 1,
+114, 1,254,100, 0, 1, 0,158,254, 87, 4, 50, 4, 21, 0, 39, 0, 0, 5, 16, 33, 32, 3, 54, 55, 51, 6, 21, 16, 33, 32, 61,
+ 1, 52, 43, 1, 53, 51, 22, 55, 52, 35, 32, 7, 22, 23, 35, 38, 53, 16, 33, 32, 17, 20, 7, 21, 22, 17, 4, 50,254, 52,254, 58,
+ 2, 2,105,192,112, 1, 13, 1, 20,237, 73, 73,226, 1,225,254,252, 1, 1, 45,161, 60, 1,177, 1,158,229,237, 45,254,132, 1,
+152, 93,109,120, 82,254,246,223, 98,243,140, 1,240,243,202, 88,120, 82,126, 1, 88,254,123,209, 92, 20, 43,254,254, 0, 0, 0,
+ 0, 3, 0,158, 0, 0, 4, 50, 6, 20, 0, 17, 0, 24, 0, 32, 0, 0, 1, 2, 33, 32, 17, 16, 55, 53, 38, 55, 2, 33, 32, 17,
+ 6, 7, 21, 4, 3, 16, 5, 4, 19, 2, 32, 3, 52, 39, 34, 21, 6, 23, 54, 4, 50, 1,254, 53,254, 56,200,200, 1, 1, 1, 84,
+ 1, 87, 1, 92, 1, 70,185,254,235,254,245, 1, 1, 2, 32,205,190,168, 1,186,175, 1,248,254, 8, 1,249, 1, 73, 74, 20, 58,
+233, 1, 81,254,189,155, 85, 20, 45,254, 92, 1,112, 2, 1,254,144,254,152, 4, 33,212, 2,214,218, 1, 1, 0, 0, 2, 0, 55,
+ 0, 0, 4,154, 4, 11, 0, 26, 0, 37, 0, 0, 1, 21, 16, 7, 35, 54, 17, 53, 16, 43, 1, 34, 29, 1, 16, 33, 32, 17, 53, 16,
+ 33, 50, 23, 51, 54, 51, 32, 1, 17, 54, 35, 7, 38, 17, 21, 16, 51, 50, 4,154,239,162,212,132, 33, 83,254,203,254,135, 1,125,
+146, 71, 14, 74,116, 1, 65,253,170, 2, 70, 87,180,165,172, 2, 72, 67,254,162,167,174, 1, 66,117, 1, 25,182,220,254, 20, 2,
+ 7, 30, 1,230, 99, 99,253,121, 1,105,145, 1, 1,254,239,189,254,225, 0, 0, 0, 1, 0,159, 0, 0, 4, 51, 4, 21, 0, 17,
+ 0, 0, 1, 16, 7, 35, 18, 3, 16, 33, 32, 17, 16, 19, 35, 38, 19, 2, 33, 32, 4, 50,240,146,201, 1,254,252,254,230,198,148,
+238, 2, 2, 1,210, 1,195, 2, 35,254,165,200, 1, 4, 1, 31, 1, 99,254,160,254,230,254,244,207, 1, 90, 1,236, 0, 0, 0,
+ 0, 1, 0,158,254, 89, 4, 52, 4, 2, 0, 31, 0, 0, 5, 2, 33, 32, 17, 52, 55, 51, 6, 21, 16, 33, 32, 61, 1, 16, 43, 1,
+ 53, 51, 50, 53, 52, 33, 53, 32, 17, 22, 5, 21, 4, 19, 4, 52, 1,254, 67,254, 40,112,173, 98, 1, 29, 1, 2,238, 65, 65,228,
+254, 90, 2, 90, 1,254,245, 1, 26, 2, 30,254,119, 1,167,139,102,113,128,254,230,252, 50, 1, 16,152,198,230,154,254,128,208,
+ 49, 20, 49,254,216, 0, 0, 0, 0, 1, 0,160,254, 87, 4, 50, 4, 21, 0, 27, 0, 0, 1, 32, 17, 16, 0, 21, 35, 38, 36, 7,
+ 39, 54, 63, 1, 2, 17, 16, 33, 32, 17, 20, 6, 23, 7, 38, 54, 53, 16, 2,108,254,237, 2, 95,190, 36,254,179, 94, 77, 62,112,
+ 13,249, 1,204, 1,198,118, 20,159, 20, 92, 3,136,254,189,254, 89,254, 49,120,176, 79,104, 95, 91, 13, 14, 1, 5, 1,130, 1,
+203,254, 41,101,181,156, 1,157,168,117, 1, 71, 0, 2, 0,158, 0, 0, 4, 52, 6, 21, 0, 21, 0, 28, 0, 0, 1, 16, 33, 32,
+ 17, 16, 33, 50, 23, 51, 17, 52, 33, 6, 29, 1, 35, 53, 16, 33, 32, 17, 3, 16, 32, 17, 2, 33, 32, 4, 52,254, 69,254, 37, 1,
+203,196, 68, 20,254,228,232,187, 1,163, 1,203,188,253,226, 1, 1, 30, 1, 1, 1,239,254, 17, 2, 13, 2, 9,125, 1, 2,237,
+ 1,152, 62, 62, 1, 38,254,134,253, 84, 1,151,254,137,254,130, 0, 2, 0,158, 0, 0, 4, 51, 5,251, 0, 17, 0, 25, 0, 0,
+ 1, 18, 33, 32, 25, 1, 2, 41, 1, 21, 33, 34, 21, 17, 51, 54, 51, 4, 3, 16, 33, 32, 17, 16, 37, 4, 4, 50, 1,254, 50,254,
+ 58, 1, 1, 77, 1,206,254, 30,141, 35, 64,184, 1,205,185,254,234,254,239, 1, 17, 1, 22, 2, 36,253,220, 1,234, 2,182, 1,
+ 91,143,176,254,218,128, 1,254, 12, 1,103,254,133,254,132, 1, 1, 0, 0, 0, 0, 1, 0, 55, 0, 0, 4,154, 4, 11, 0, 35,
+ 0, 0, 1, 20, 7, 35, 54, 53, 17, 52, 7, 35, 34, 21, 17, 35, 17, 52, 43, 1, 34, 21, 17, 6, 23, 35, 38, 61, 1, 16, 33, 50,
+ 23, 51, 54, 51, 32, 17, 4,154,188,179,179,153, 75, 64,160, 66, 77,148, 2,203,194,199, 1,123,104, 73, 17, 70, 96, 1,128, 1,
+198,236,218,192,207, 1, 25,215, 1,207,254,235, 1, 21,207,228,254,252,214,192,225,236,102, 1,216,104,104,254, 38, 0, 0, 0,
+ 0, 1, 0,159, 0, 0, 4, 52, 6, 15, 0, 33, 0, 0, 1, 16, 33, 32, 19, 52, 55, 51, 6, 21, 16, 33, 32, 17, 16, 33, 35, 53,
+ 51, 50, 55, 52, 37, 36, 53, 51, 20, 23, 4, 17, 20, 7, 21, 22, 4, 52,254, 68,254, 39, 1,101,175, 91, 1, 31, 1, 0,254,236,
+ 63, 82,215, 1,254,233,254,220,172,239, 1, 87,186,232, 1,218,254, 38, 1,178,183, 90,126,147,254,223, 1, 73, 1, 74,135,200,
+149, 33, 54,176, 71, 41, 41,254,251,203, 61, 20,105, 0, 0, 0, 0, 1, 0,159,254, 89, 4, 51, 4, 50, 0, 23, 0, 0, 5, 2,
+ 33, 32, 3, 51, 6, 33, 32, 25, 1, 5, 21, 22, 21, 16, 5, 53, 32, 39, 18, 37, 53, 37, 4, 51, 1,254, 48,254, 62, 1,187, 1,
+ 1, 4, 1, 39,254, 77,221,253,241, 1,104, 1, 1,254,152, 3,148, 18,254,107, 1,111,227, 1, 11, 3,168, 52, 60, 89,238,254,
+206, 1,167,140, 1, 3, 75,130,129, 0, 0, 0, 0, 1, 0, 55, 0, 0, 4,154, 6, 21, 0, 41, 0, 0, 1, 21, 20, 7, 35, 54,
+ 61, 1, 16, 43, 1, 34, 21, 17, 35, 19, 54, 43, 1, 34, 17, 21, 20, 23, 35, 38, 17, 53, 52, 0, 37, 23, 4, 3, 51, 55, 50, 23,
+ 51, 54, 51, 32, 4,154,208,197,216,132, 88, 65,160, 1, 1, 74,124,103,230,210,210, 1, 90, 1,167, 25,254,150,218, 24, 86,165,
+ 72, 15, 73,160, 1, 58, 2, 84,142,244,210,184,219,193, 1, 42,167,254,195, 1, 61,167,254,219,165,252,184,210, 1, 24,103,251,
+ 2, 78,123,148, 82,254,159, 61, 98, 98, 0, 0, 0, 1, 0,159, 0, 0, 4, 51, 5,241, 0, 21, 0, 0, 1, 16, 33, 32, 25, 1,
+ 51, 17, 16, 33, 32, 17, 52, 36, 53, 52, 55, 23, 6, 21, 20, 4, 4, 51,254, 61,254, 47,182, 1, 27, 1, 9,254,241,206, 87,142,
+ 1, 50, 2, 3,253,253, 2, 3, 3,238,252, 18,254,142, 1,114,175,161,103,148,125,124, 56, 59, 67,188, 0, 0, 0, 2, 0, 45,
+254, 89, 4,164, 4,234, 0, 10, 0, 21, 0, 0, 19, 16, 37, 3, 51, 3, 4, 17, 2, 33, 32, 19, 16, 33, 32, 17, 16, 37, 19, 35,
+ 19, 4, 45, 1,250, 15,166, 15, 1,245, 2,253,202,253,193,188, 1,127, 1,134,254,193, 15,165, 14,254,194, 1, 34, 2,117, 82,
+ 1, 1,254,251, 78,253,133,253, 61, 2,201,253,195, 2, 61, 1,231,111,253,229, 2, 26,110, 0, 0, 1, 0, 55,254, 89, 4, 74,
+ 4, 12, 0, 41, 0, 0, 5, 2, 33, 32, 17, 52, 55, 51, 6, 21, 16, 33, 32, 53, 17, 52, 35, 6, 17, 7, 35, 39, 16, 39, 14, 1,
+ 35, 34, 39, 55, 22, 51, 50, 54, 51, 50, 23, 51, 54, 23, 36, 19, 4, 74, 2,254, 77,254, 31,145,179,138, 1, 39, 1, 3,130,132,
+ 10,133, 9,110, 62, 62, 62, 72, 83, 50, 62, 43, 51, 60, 76,103, 69, 20, 72,137, 1, 43, 1, 43,254,132, 1,164,159, 90,123,126,
+254,232,240, 2,234,191, 1,254,242,193,193, 1, 14, 1, 1,134, 95,181, 98, 99,184,184, 1, 1,254,179, 0, 0, 0, 2, 0, 55,
+254, 87, 4,157, 4, 11, 0, 45, 0, 56, 0, 0, 5, 16, 33, 35, 32, 17, 51, 20, 59, 1, 32, 61, 1, 52, 39, 35, 53, 51, 54, 61,
+ 1, 52, 43, 1, 34, 29, 1, 16, 33, 4, 17, 53, 16, 33, 50, 23, 51, 54, 51, 32, 17, 20, 7, 21, 22, 21, 1, 52, 43, 1, 34, 17,
+ 21, 16, 51, 50, 17, 4,157,254, 52, 56,254, 82,183,249, 47, 1, 22, 57, 80, 80, 54,100, 83, 59,254,190,254,142, 1,119,138, 67,
+ 17, 96,139, 1, 35,158,161,253,165, 94, 77,162,176,157, 61,254,148, 1,133,247,222,101,166, 2,151, 1,148,182,204,123,202,254,
+ 32, 1, 1,153,128, 1,154, 99, 99,254,109,251, 84, 20, 91,142, 2,171,167,254,250,120,254,215, 1, 5, 0, 0, 0, 1, 0,160,
+254, 87, 4, 49, 5,241, 0, 30, 0, 0, 37, 16, 33, 32, 17, 52, 55, 23, 6, 21, 16, 33, 32, 3, 19, 16, 5, 38, 21, 20, 23, 35,
+ 38, 53, 16, 33, 22, 23, 51, 19, 51, 4, 49,254, 84,254, 27,134,176,125, 1, 41, 1, 1, 1, 2,254,223,197, 82,179, 70, 1,113,
+142,124, 17, 1,173, 67,254, 20, 1,169,132,100, 1,121,113,254,232, 1, 94, 1, 40, 2, 30, 3, 3,164,182, 89,111,160, 1, 49,
+ 1,189, 2,153, 0, 1, 0, 55,254, 86, 4,154, 4, 12, 0, 43, 0, 0, 23, 54, 55, 53, 0, 17, 53, 16, 33, 22, 23, 51, 54, 55,
+ 4, 17, 21, 20, 15, 1, 54, 61, 1, 52, 43, 1, 34, 21, 17, 35, 17, 52, 43, 1, 34, 17, 21, 16, 0, 23, 39, 38, 36, 7,237, 57,
+ 65,254,208, 1, 95,131, 74, 16, 70,149, 1, 76,169,140,120,134,100, 58,160, 65, 76,151, 2,150, 69,203, 25,254,196,130,201, 83,
+ 2, 22, 1, 5, 1, 39, 80, 1,238, 1,103,103, 1, 1,254, 63, 70,244,177, 1,167,174,219,240,175,254,203, 1, 53,175,254,250,
+138,254,141,254,179,216, 1,142,112,122, 0, 0, 0, 1, 0,158,254, 89, 4, 50, 3,247, 0, 26, 0, 0, 5, 16, 33, 32, 17, 51,
+ 16, 5, 36, 61, 1, 35, 6, 35, 32, 17, 16, 37, 51, 4, 21, 16, 33, 32, 53, 17, 51, 4, 50,254, 70,254, 38,188, 1, 30, 1, 7,
+ 20, 88,175,254, 58, 1, 23,216,254,204, 1, 11, 1, 27,179, 47,254,136, 1,144,254,252, 1, 1,240,244, 98, 1,229, 1, 4,167,
+206,221,254,175,235, 2, 9, 0, 0, 2, 0, 55, 0, 0, 4, 52, 6, 20, 0, 31, 0, 39, 0, 0, 1, 16, 33, 32, 3, 16, 37, 22,
+ 23, 51, 17, 52, 35, 34, 29, 1, 35, 53, 52, 35, 34, 21, 35, 16, 51, 50, 23, 51, 54, 51, 32, 11, 1, 2, 33, 32, 19, 2, 33, 50,
+ 4, 52,254, 89,254, 18, 1, 1,198,193, 70, 20,142,141,157,160, 85,155,220,186, 63, 20, 58,172, 1, 46, 2,184, 1,254,233,254,
+247, 1, 1, 1, 56,232, 1,221,254, 35, 2, 13, 2, 8, 1, 1,129, 1, 33,213,210, 33, 35,208,226, 1,108,193,193,254,192,253,
+ 47, 1,133,254,133,254,132, 0, 0, 2, 0,158, 0, 0, 4, 52, 6, 20, 0, 19, 0, 29, 0, 0, 1, 22, 19, 2, 5, 35, 36, 19,
+ 16, 37, 36, 25, 1, 35, 19, 16, 33, 32, 19, 22, 39, 38, 35, 34, 21, 17, 51, 54, 5, 54, 3, 77,230, 1, 1,254,233,178, 1, 14,
+ 1,254,250,254,221,178, 2, 1,112, 1,127, 30, 1,164, 30,217,195, 30, 63, 1, 37, 56, 3,218,104,254,146,254,184,188,199, 1,
+ 65, 1,106, 1, 19,254,197,253,181, 4,190, 1, 86,254,199, 96, 77,191,214,254,228,128, 30,134, 0, 1, 0, 86,254, 89, 4,122,
+ 4, 37, 0, 35, 0, 0, 1, 20, 7, 21, 22, 21, 2, 33, 32, 17, 53, 16, 19, 23, 6, 3, 21, 18, 33, 32, 3, 54, 43, 1, 53, 51,
+ 50, 39, 54, 39, 38, 39, 51, 20, 23, 22, 4, 92,171,201, 2,253,247,253,231,209,145,164, 1, 1, 1, 92, 1, 88, 1, 1,183,184,
+176,164, 1, 1,161,143, 1,183,130,167, 2,133,153, 88, 20,123,191,254, 19, 2,195, 97, 1, 68, 1,100, 76,250,254,219,158,253,
+201, 1,130,218,136,184,119, 47, 46,173,125, 46, 56, 0, 0, 0, 0, 2, 0,158, 0, 0, 4, 52, 5,241, 0, 11, 0, 19, 0, 0,
+ 1, 18, 33, 32, 17, 16, 33, 50, 23, 51, 17, 51, 3, 16, 33, 32, 17, 16, 33, 32, 4, 51, 2,254, 47,254, 58, 1,198,215, 50, 20,
+178,186,254,234,254,246, 1, 9, 1, 23, 2, 5,253,251, 1,253, 2, 25,115, 2, 78,252, 22, 1,128,254,118,254,148, 0, 0, 0,
+ 0, 2, 0,160, 0, 0, 4,156, 6, 20, 0, 31, 0, 39, 0, 0, 19, 2, 33, 50, 23, 51, 54, 51, 50, 17, 35, 52, 35, 34, 29, 1,
+ 35, 53, 52, 35, 34, 21, 17, 51, 54, 55, 32, 17, 2, 5, 32, 17, 55, 18, 51, 36, 3, 18, 5, 32,161, 2, 1, 48,172, 58, 20, 63,
+186,218,153, 85,160,157,141,142, 20, 70,193, 1,193, 1,254, 43,254, 69,186, 1,252, 1, 34, 1, 1,254,249,254,233, 4,212, 1,
+ 64,193,193,254,148,226,208, 35, 33,210,213,254,223,129, 1,253,238,253,253, 1, 2, 15, 38,254, 92, 1, 1,114, 1,133, 1, 0,
+ 0, 2, 0,159,254, 89, 4, 52, 5,241, 0, 37, 0, 45, 0, 0, 5, 16, 33, 32, 19, 52, 55, 23, 6, 21, 20, 5, 32, 3, 52, 39,
+ 38, 39, 7, 32, 17, 16, 33, 23, 17, 51, 17, 22, 23, 51, 21, 35, 20, 15, 1, 22, 23, 22, 1, 20, 51, 22, 39, 54, 35, 38, 4, 52,
+254, 52,254, 54, 2, 81,143, 38, 1, 14, 1, 17, 1,176,113, 3, 89,254,203, 1, 65, 77,157, 94, 1,184,189, 82, 1, 1,172,141,
+253, 66,163,171, 1, 1,162,172, 20,254,109, 1,149,105, 94,105, 36, 73,250, 1, 1, 8,160, 99,111,102, 19, 1, 72, 1, 77, 9,
+ 1,180,254, 1, 59,105,162,105, 55, 72, 65,105, 97, 2, 66,201, 3,204,193, 1, 0, 2, 0,159, 0, 0, 4, 52, 5,241, 0, 11,
+ 0, 19, 0, 0, 1, 2, 33, 32, 25, 1, 51, 17, 51, 54, 51, 4, 3, 16, 33, 32, 17, 16, 33, 32, 4, 52, 1,254, 57,254, 51,171,
+ 41, 74,175, 1,200,187,254,242,254,238, 1, 20, 1, 12, 2, 13,253,243, 2, 13, 3,228,253,161,132, 1,253,248, 1,123,254,131,
+254,134, 0, 0, 0, 1, 0,159,254, 89, 4, 52, 4,215, 0, 31, 0, 0, 37, 16, 33, 32, 17, 52, 55, 23, 6, 21, 16, 5, 32, 17,
+ 54, 39, 38, 39, 53, 37, 53, 5, 53, 51, 17, 5, 21, 37, 21, 20, 23, 22, 4, 52,254, 46,254, 61,107,144, 64, 1, 8, 1, 22, 1,
+194,170, 1,254,185, 1, 71,146, 1, 80,254,176,215,190, 41,254, 48, 1,207,125,140, 89,105, 71,254,190, 1, 1, 66,173,157,171,
+135,160,120,180,128,232,254,243,127,177,134,125, 72,186,183, 0, 0, 1, 0,158, 0, 0, 4, 52, 6, 20, 0, 43, 0, 0, 1, 16,
+ 33, 32, 17, 53, 51, 21, 2, 33, 32, 39, 52, 39, 35, 53, 51, 50, 53, 54, 43, 1, 53, 51, 50, 55, 52, 37, 38, 53, 51, 20, 5, 22,
+ 21, 20, 7, 21, 22, 21, 20, 7, 21, 22, 4, 52,254, 55,254, 51,188, 1, 1, 12, 1, 21, 2,108,251,251,100, 1,101,251,249, 91,
+ 1,255, 0,233,166, 1, 20,233,144,154,148,158, 1,104,254,152, 1,160,101,101,254,236,212,174, 1,150,122,115,152,132, 85, 32,
+ 33,208,120, 26, 26,190,140, 47, 20, 54,137,126, 58, 20, 95, 0, 0, 1, 0,118,254, 89, 4, 51, 6, 20, 0, 61, 0, 0, 5, 2,
+ 33, 32, 17, 16, 19, 54, 3, 51, 18, 3, 6, 3, 18, 33, 50, 39, 52, 39, 35, 53, 51, 54, 53, 52, 43, 1, 53, 51, 50, 53, 52, 7,
+ 35, 53, 51, 50, 53, 38, 39, 38, 39, 51, 20, 23, 22, 23, 6, 7, 21, 22, 23, 6, 7, 21, 22, 23, 6, 7, 21, 22, 4, 51, 1,254,
+ 84,253,240, 55, 54,104,185, 84, 37, 49, 1, 1, 1, 84,251, 2,134,136,136,134,132,138,138,132,134,136,136,134, 1,185,145, 1,
+166,189,156, 1, 1,178,178, 1, 1,178,178, 1, 2,177,178,124,254,213, 1,216, 1, 43, 1, 13,227, 1, 63,254,249,254,229,225,
+254,169,254,179,160,198, 2,142, 1,134,164,138,156,132, 1,145,142, 82, 33, 34,178, 72, 54, 49,152,165, 34, 20, 40,159,187, 30,
+ 20, 38,183,146, 48, 20, 58, 0, 0, 2, 0,160,254,243, 4, 52, 4, 22, 0, 17, 0, 25, 0, 0, 23, 50, 55, 36, 17, 18, 37, 32,
+ 17, 16, 5, 22, 55, 21, 36, 39, 6, 7, 19, 16, 5, 36, 3, 18, 33, 32,201,149, 80,254,242, 3, 1,197, 1,204,254,231, 92,143,
+254,248,150,193,222,144, 1, 15, 1, 18, 1, 1,254,233,254,246, 60, 89,170, 1, 64, 2, 14, 1,253,241,254,192,170, 94, 5,209,
+ 69,194,193, 70, 3, 20,254,196, 85, 85, 1, 60, 1,127, 0, 0, 0, 1, 0,159,254, 87, 4, 52, 4, 21, 0, 29, 0, 0, 5, 2,
+ 5, 32, 17, 55, 23, 7, 18, 33, 32, 17, 53, 16, 5, 35, 53, 51, 32, 19, 39, 5, 21, 35, 17, 37, 16, 5, 4, 17, 4, 52, 1,254,
+ 48,254, 60, 31,180, 21, 1, 1, 10, 1, 14,254,194,114,114, 1, 30, 1, 2,254, 32,173, 3,108,254,236, 1, 20, 20,254,109, 2,
+ 1,149,111, 20, 91,254,249, 1, 7, 32, 1, 43, 1,160, 1,101, 74, 30,204, 1, 93, 29,254, 48,185,113,254,241, 0, 1, 0,159,
+254, 87, 4, 52, 6, 22, 0, 36, 0, 0, 5, 16, 33, 32, 17, 51, 16, 33, 32, 17, 53, 52, 33, 35, 53, 51, 36, 17, 6, 35, 4, 17,
+ 16, 5, 21, 32, 21, 20, 33, 50, 55, 17, 18, 5, 21, 4, 21, 4, 52,254, 52,254, 55,190, 1, 11, 1, 13,254,237,156,156, 1, 20,
+125,143,254, 53, 1,203,254,200, 1, 54,238,221, 1,254,203, 1, 53, 20,254,107, 1,149,254,248, 1, 8, 55,236,157, 11, 1,158,
+ 37, 3, 1,100, 1,133, 1,142,246,210,168,254,248,254,117,105, 20, 62,246, 0, 0, 3, 0,139, 0, 0, 4,124, 6, 21, 0, 23,
+ 0, 31, 0, 39, 0, 0, 1, 21, 16, 33, 32, 17, 16, 37, 33, 53, 33, 36, 17, 16, 33, 32, 17, 21, 51, 21, 35, 21, 51, 21, 37, 33,
+ 32, 21, 20, 33, 32, 53, 1, 20, 41, 1, 53, 52, 33, 32, 4, 10,254, 73,254, 56, 1,196, 1, 17,254,239,254, 60, 1,204, 1,179,
+114,114,114,254,228,254,239,254,250, 1, 14, 1, 9,253,233, 1, 6, 1, 17,254,247,254,242, 2, 5,182,254,177, 1, 79, 1,102,
+ 2,161, 1, 1,107, 1, 81,254,175,216,148,161,178, 30,206,201,211, 3, 99,214,216,195, 0, 0, 0, 2, 0, 55,254, 88, 4,154,
+ 4, 22, 0, 33, 0, 44, 0, 0, 1, 16, 33, 34, 39, 35, 21, 2, 33, 53, 50, 39, 17, 52, 35, 7, 38, 21, 17, 20, 51, 21, 36, 17,
+ 53, 16, 33, 50, 23, 51, 54, 51, 4, 17, 3, 17, 52, 43, 1, 34, 21, 17, 20, 51, 50, 4,154,254,205,126, 26, 15, 11,254,179,183,
+ 9, 77, 97,115,128,254,194, 1, 49,183, 68, 16, 62,182, 1, 51,189,136, 76, 73,167,118, 1,150,254,106,116,152,254,124,142,231,
+ 3, 9,178, 1, 1,189,254,193,217,148, 3, 1,120,240, 1,140,145,145, 1,254,117,254,174, 1,161,175,167,254,131,211, 0, 0,
+ 0, 1, 0,107,254, 89, 4,102, 4, 22, 0, 31, 0, 0, 33, 2, 33, 32, 3, 16, 37, 36, 53, 52, 35, 34, 7, 23, 7, 39, 16, 33,
+ 32, 17, 6, 5, 4, 17, 2, 33, 32, 19, 52, 39, 55, 22, 4,102, 1,253,245,254, 18, 1, 1, 71, 1, 68,152,181, 1, 5,165, 10,
+ 1, 96, 1, 85, 1,254,175,254,200, 1, 1, 54, 1, 73, 1, 64,154, 98,254, 89, 1,167, 1,115,114,103,127,188,159, 56, 21, 65,
+ 1, 58,254,168,212,131, 77,254,238,254,220, 1, 41,123, 54, 92,108, 0, 0, 0, 0, 1, 0,161,254, 89, 4, 52, 4, 40, 0, 27,
+ 0, 0, 19, 51, 17, 22, 33, 32, 17, 52, 37, 55, 4, 19, 16, 37, 35, 34, 39, 35, 21, 2, 37, 32, 17, 51, 2, 33, 32, 17,161,173,
+ 1, 1, 35, 1, 7,254,249,171, 1, 22, 1,254, 62, 2,185, 85, 20, 2, 1, 38, 1, 7,187, 1,254, 59,254, 51, 3,254,253,204,
+191, 1, 48,253,177, 63,226,254,245,254, 55, 1, 89,227,254,251, 1, 1, 4,254,112, 1,140, 0, 0, 2, 0,109,254, 87, 4, 99,
+ 4, 36, 0, 22, 0, 30, 0, 0, 19, 2, 33, 4, 17, 16, 5, 4, 21, 20, 23, 54, 61, 1, 51, 21, 2, 33, 32, 17, 52, 55, 36, 19,
+ 22, 5, 36, 53, 16, 33, 32,110, 1, 2, 0, 1,246,254,150,254,218,158,195,178, 1,254,140,254,170,239,254,100,191, 1, 1, 63,
+ 1, 59,254,197,254,192, 2,107, 1,185, 1,254, 72,254,235,169,117,158,181, 1, 1,140, 76, 76,254,230, 1, 56,231, 84, 87, 1,
+ 74,255, 38, 41,252, 1, 42, 0, 0, 1, 0,160,255,121, 4, 51, 4, 22, 0, 26, 0, 0, 5, 53, 52, 38, 35, 34, 7, 39, 54, 55,
+ 53, 38, 17, 16, 37, 4, 1, 39, 0, 37, 32, 3, 30, 1, 23, 22, 23, 2,239,116, 95,130, 67,130, 67,116,236, 1,228, 2,167,254,
+121,145, 1, 17,254, 96,254,220, 1, 3, 94,113,178,124,135, 1, 5,121,116, 74,102, 24, 30,173, 1, 73, 1,181, 1, 56,253, 5,
+ 61, 2, 92, 11,254,219,163,202, 98, 42,147, 0, 0, 3, 1, 35, 0, 50, 3,174, 3,227, 0, 3, 0, 7, 0, 11, 0, 0, 1, 51,
+ 21, 35, 5, 51, 21, 35, 5, 51, 21, 35, 1, 35,192,192, 1,209,186,186,254, 47,189,189, 3,227,176,189,174,232,174, 0, 0, 0,
+ 0, 2, 1,149, 2,245, 3, 60, 6, 20, 0, 15, 0, 23, 0, 0, 1, 50, 3, 16, 7, 34, 25, 1, 52, 59, 1, 21, 37, 34, 29, 1,
+ 23, 52, 35, 34, 7, 20, 51, 50, 2,108,208, 1,213,209,185,235,254,254, 70,237,124,112, 1,117,120, 5, 36,254,239,254,227, 1,
+ 1, 30, 1, 76,181, 82, 2, 81,158,194,180,186,201, 0, 0, 0, 0, 3, 0, 41,255,227, 4,176, 4,123, 0, 10, 0, 18, 0, 66,
+ 0, 0, 1, 21, 51, 50, 54, 53, 52, 38, 35, 34, 6, 1, 21, 20, 22, 50, 54, 61, 1, 37, 33, 62, 1, 53, 52, 38, 35, 34, 6, 7,
+ 53, 62, 1, 51, 50, 22, 23, 62, 1, 51, 50, 22, 21, 20, 6, 43, 1, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 39, 14,
+ 1, 35, 34, 38, 17, 2,186, 49,169,120, 89, 83, 92, 74,254, 19, 77,174, 76,254, 21, 1,235, 1, 1,101,112, 79,129, 50, 55,132,
+ 71,110,149, 32, 39,133, 97,156,163,200,191,117, 99, 94, 56,132, 62, 77,132, 60, 91,124, 37, 33,132, 89,174,145, 2,164, 72, 90,
+113, 89, 97,133,254,113, 52,151,133,136,157, 43,143, 15, 35, 34,161,144, 51, 51,172, 41, 43, 82, 78, 80, 80,172,164,171,179, 88,
+120,128, 43, 39,168, 35, 33, 63, 64, 61, 66,237, 1, 50, 0, 0, 0, 1, 0,169,255,234, 4, 40, 4,123, 0, 48, 0, 0, 1, 22,
+ 23, 22, 21, 20, 6, 35, 34, 39, 38, 39, 53, 22, 23, 22, 51, 50, 54, 53, 52, 39, 38, 43, 1, 53, 51, 50, 54, 53, 52, 39, 38, 35,
+ 34, 7, 6, 7, 53, 54, 55, 54, 51, 50, 23, 22, 21, 20, 6, 3, 16,119, 65, 64,244,209, 81, 91, 92,105,104, 87, 86, 76,138,148,
+ 72, 72,135,166,159,150,168, 90, 91,173, 99, 91, 91, 77, 97, 90, 91, 86,254,139,138,148, 2, 6, 25, 65, 64, 94,134,158, 12, 12,
+ 24,167, 27, 13, 12, 86, 74, 61, 43, 44,144,110, 81, 98, 53, 52, 18, 17, 34,173, 28, 14, 14, 91, 92,166,109,148, 0, 2, 0,178,
+254, 80, 4, 68, 4,100, 0, 9, 0, 13, 0, 0, 37, 33, 17, 33, 53, 33, 21, 33, 17, 33, 1, 35, 53, 51, 3,246,254, 41,254,147,
+ 3,146,254,147, 1, 31,254,225,184,184, 4, 3,209,143,143,252,190,253,189,233, 0, 3, 0, 14,255,227, 4,186, 4,123, 0, 10,
+ 0, 21, 0, 54, 0, 0, 19, 20, 6, 21, 20, 22, 51, 50, 54, 61, 1, 1, 34, 6, 21, 16, 22, 51, 50, 54, 16, 38, 1, 33, 53, 52,
+ 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 23, 62, 1, 51, 50, 18, 16, 2, 35, 34, 38, 39, 14, 1, 35, 34, 38, 17,177, 2, 80,
+ 86, 87, 77, 1, 90,102, 82, 80,104,103, 80, 80,252, 84, 1,235, 99,112, 80,131, 47, 59,125, 74, 98,147, 48, 52,128, 84,189,170,
+170,189, 89,128, 47, 37,130, 87,175,144, 1,205, 11, 38, 9,145,135,137,158, 43, 2, 22,168,239,254,221,174,167, 2, 26,167,254,
+121, 84,163,144, 53, 51,172, 43, 41, 67, 66, 68, 65,254,236,253,144,254,236, 62, 65, 62, 65,237, 1, 50, 0, 0, 0, 1, 0,137,
+ 2, 47, 4, 72, 4,123, 0, 12, 0, 0, 19, 16, 18, 32, 18, 17, 35, 52, 38, 35, 34, 6, 21,137,246, 1,210,247,195,144,141,140,
+144, 2, 47, 1, 30, 1, 46,254,210,254,226,214,218,218,214, 0, 0, 1, 0,136,255,227, 4, 71, 2, 47, 0, 12, 0, 0, 1, 16,
+ 2, 32, 2, 17, 51, 20, 22, 51, 50, 54, 53, 4, 71,246,254, 46,247,195,144,141,140,144, 2, 47,254,226,254,210, 1, 46, 1, 30,
+214,218,218,214, 0, 1, 0, 43, 0, 2, 4,166, 3, 91, 0, 19, 0, 0, 37, 33, 53, 33, 50, 54, 53, 52, 38, 35, 33, 53, 33, 21,
+ 35, 30, 1, 21, 20, 6, 2,225,253, 74, 2,182,151,142,183,171,253,135, 4, 94,168, 97,100,225, 2,184,108,112,130,138,184,184,
+ 50,168,114,172,168, 0, 0, 0, 0, 3, 0, 63,255,254, 4,146, 3, 87, 0, 3, 0, 7, 0, 27, 0, 0, 55, 53, 51, 21, 3, 53,
+ 51, 21, 1, 33, 53, 33, 50, 54, 53, 52, 38, 35, 33, 53, 33, 21, 35, 30, 1, 21, 20, 6, 63,142,142,142, 2,136,254, 26, 1,230,
+105,100,128,120,254, 69, 3, 15,118, 68, 70,158,122,204,204, 1,136,202,202,253,252,184,108,112,130,138,184,184, 50,168,114,172,
+168, 0, 0, 0, 0, 1, 0, 43, 0, 1, 4,166, 4, 3, 0, 34, 0, 0, 1, 30, 1, 21, 20, 6, 41, 1, 53, 33, 50, 54, 53, 52,
+ 38, 35, 33, 53, 33, 50, 54, 53, 52, 38, 35, 33, 53, 33, 21, 35, 30, 1, 21, 20, 6, 4, 25, 72, 69,209,254,223,253,119, 2,129,
+237,115,123,229,253,127, 2,129,240,112,123,229,253,127, 4, 96, 96, 60, 63, 70, 1,204, 34,105, 74,135,111,168, 53, 70, 80, 59,
+168, 57, 74, 73, 57,167,167, 33, 99, 63, 76,101, 0, 2, 0,252, 2,156, 3,214, 5,224, 0, 2, 0, 10, 0, 0, 1, 3, 33, 3,
+ 51, 1, 35, 39, 33, 7, 35, 2,104,134, 1, 12,210,154, 1, 32,132, 68,254,182, 68,132, 5,124,254, 85, 2, 15,252,188,218,218,
+ 0, 2, 0,245, 2,156, 3,220, 5,224, 0, 15, 0, 19, 0, 0, 1, 21, 35, 21, 51, 21, 35, 17, 51, 21, 33, 53, 35, 7, 35, 1,
+ 23, 3, 51, 17, 3,208,213,194,194,225,254,170,221, 64,116, 1, 2, 76,127,194, 5,224, 95,248, 95,254,209, 95,214,214, 3, 68,
+ 95,254, 80, 1,176, 0, 0, 0, 0, 3, 1, 55, 2,156, 3,154, 5,224, 0, 8, 0, 17, 0, 32, 0, 0, 1, 17, 51, 50, 54, 53,
+ 52, 38, 35, 3, 21, 51, 50, 54, 53, 52, 38, 35, 37, 33, 50, 22, 21, 20, 6, 7, 30, 1, 21, 20, 6, 35, 33, 1,182,151,111, 94,
+ 99,106,151,149, 91, 83, 81, 93,254,236, 1, 22,144,157, 83, 83, 93,105,167,166,254,234, 4, 43,254,206, 69, 79, 82, 76, 1, 88,
+252, 63, 70, 63, 56, 93,111,101, 77, 88, 12, 12,116, 89,114,116, 0, 2, 1, 55, 2,156, 3,154, 5,224, 0, 8, 0, 17, 0, 0,
+ 1, 50, 54, 53, 52, 38, 43, 1, 17, 19, 50, 22, 21, 20, 6, 43, 1, 17, 1,244,160,128,127,161, 61, 63,216,204,204,216,191, 2,
+249,141,183,186,140,253,118, 2,231,204,215,214,203, 3, 68, 0, 0, 1, 1, 76, 2,156, 3,134, 5,224, 0, 11, 0, 0, 1, 33,
+ 21, 33, 21, 33, 21, 33, 17, 33, 21, 33, 1, 76, 2, 46,254, 80, 1,156,254,100, 1,188,253,198, 5,224, 95,248, 95,254,209, 95,
+ 0, 1, 1, 76, 2,156, 3,134, 5,224, 0, 11, 0, 0, 1, 33, 21, 33, 21, 33, 21, 33, 17, 33, 21, 33, 3,134,253,210, 1,174,
+254,100, 1,156,254, 70, 2, 58, 5,224, 95,248, 95,254,209, 95, 0, 1, 1, 44, 2,140, 3,164, 5,239, 0, 28, 0, 0, 1, 14,
+ 1, 35, 34, 38, 16, 54, 51, 50, 22, 23, 21, 46, 1, 35, 34, 6, 21, 20, 22, 51, 50, 54, 55, 53, 35, 53, 33, 3,164, 52,126, 76,
+178,200,202,180, 60,108, 50, 52,106, 60,124,124,120,124, 42, 64, 26,136, 1, 2, 2,225, 42, 43,228, 1,154,229, 29, 31,116, 43,
+ 41,170,172,174,167, 17, 18,225, 93, 0, 0, 0, 0, 1, 1, 58, 2,156, 3,150, 5,224, 0, 11, 0, 0, 1, 51, 17, 33, 17, 51,
+ 17, 35, 17, 33, 17, 35, 1, 58,128, 1, 94,126,126,254,162,128, 5,224,254,169, 1, 87,252,188, 1,142,254,114, 0, 1, 1,100,
+ 2,156, 3,110, 5,224, 0, 11, 0, 0, 1, 33, 21, 35, 17, 51, 21, 33, 53, 51, 17, 35, 1,100, 2, 10,198,198,253,246,196,196,
+ 5,224, 95,253,122, 95, 95, 2,134, 0, 0, 0, 0, 1, 1, 94, 2,140, 3,115, 5,224, 0, 17, 0, 0, 1, 53, 30, 1, 51, 50,
+ 54, 53, 17, 35, 53, 33, 17, 20, 6, 35, 34, 38, 1, 94, 57,122, 66, 90, 71,240, 1,111,133,155, 61,119, 2,190,132, 45, 45, 83,
+114, 1,212, 95,253,205,158,131, 24, 0, 0, 0, 0, 1, 1, 18, 2,156, 3,192, 5,224, 0, 11, 0, 0, 1, 51, 17, 1, 51, 9,
+ 1, 35, 1, 7, 17, 35, 1, 18,128, 1,142,148,254,146, 1,122,154,254,204, 96,128, 5,224,254,140, 1,116,254,170,254, 18, 1,
+163, 92,254,185, 0, 1, 1, 69, 2,156, 3,140, 5,224, 0, 5, 0, 0, 1, 51, 17, 33, 21, 33, 1, 69,128, 1,199,253,185, 5,
+224,253, 27, 95, 0, 1, 1, 27, 2,156, 3,182, 5,224, 0, 12, 0, 0, 1, 51, 27, 1, 51, 17, 35, 17, 3, 35, 3, 17, 35, 1,
+ 27,170,163,164,170,117,168, 96,169,117, 5,224,254, 86, 1,170,252,188, 2,227,254, 71, 1,185,253, 29, 0, 0, 0, 1, 1, 60,
+ 2,156, 3,149, 5,224, 0, 9, 0, 0, 1, 51, 1, 17, 51, 17, 35, 1, 17, 35, 1, 60,161, 1, 61,123,161,254,194,122, 5,224,
+253, 80, 2,176,252,188, 2,176,253, 80, 0, 0, 0, 1, 1, 60, 2,156, 3,149, 5,224, 0, 9, 0, 0, 1, 35, 1, 17, 35, 17,
+ 51, 1, 17, 51, 3,149,161,254,194,122,161, 1, 61,123, 5,224,253, 80, 2,176,252,188, 2,176,253, 80, 0, 0, 0, 2, 1, 46,
+ 2,140, 3,163, 5,239, 0, 10, 0, 19, 0, 0, 0, 16, 38, 35, 34, 6, 21, 20, 22, 51, 50, 19, 20, 6, 32, 38, 16, 54, 32, 22,
+ 3, 30, 85, 97, 96, 85, 85, 96, 97,218,156,254,194,155,155, 1, 62,156, 3,133, 1,112,158,158,184,183,158, 1, 85,218,215,214,
+ 1,182,215,215, 0, 2, 1, 63, 2,156, 3,146, 5,224, 0, 8, 0, 18, 0, 0, 1, 17, 51, 50, 54, 53, 52, 38, 35, 37, 33, 50,
+ 22, 20, 6, 43, 1, 17, 35, 1,190,148, 88, 99, 98, 89,254,237, 1, 19,157,163,162,158,148,127, 5,131,254,198, 83, 74, 75, 82,
+ 93,127,246,127,254,176, 0, 0, 0, 2, 1, 17, 2,156, 3,192, 5,224, 0, 19, 0, 28, 0, 0, 1, 30, 1, 31, 1, 35, 39, 46,
+ 1, 43, 1, 17, 35, 17, 33, 50, 22, 21, 20, 6, 1, 17, 51, 50, 54, 53, 52, 38, 35, 2,150, 49, 69, 52,128,137,112, 49, 77, 62,
+122,128, 1, 6,155,165,101,254,159,139, 92, 89, 95, 91, 4, 39, 11, 63, 93,228,211, 90, 52,254,159, 3, 68,124,118, 83,104, 1,
+ 80,254,215, 73, 75, 72, 77, 0, 0, 1, 1, 2, 2,156, 3,207, 5,224, 0, 7, 0, 0, 1, 33, 21, 33, 17, 35, 17, 33, 1, 2,
+ 2,205,254,218,128,254,217, 5,224, 95,253, 27, 2,229, 0, 0, 0, 1, 1, 65, 2,140, 3,144, 5,224, 0, 29, 0, 0, 1, 17,
+ 51, 17, 20, 22, 23, 30, 1, 51, 50, 54, 55, 62, 1, 53, 17, 51, 17, 20, 6, 7, 14, 1, 35, 34, 38, 39, 46, 1, 1, 65,127, 8,
+ 10, 20, 76, 54, 55, 75, 21, 10, 7,128, 36, 44, 42,107, 67, 66,107, 42, 44, 36, 3,221, 2, 3,253,201, 61, 52, 14, 33, 33, 33,
+ 33, 14, 52, 60, 2, 56,253,253,128,108, 36, 33, 32, 32, 33, 35,110, 0, 0, 0, 0, 1, 0,228, 2,156, 3,237, 5,224, 0, 12,
+ 0, 0, 19, 51, 27, 1, 51, 27, 1, 51, 3, 35, 11, 1, 35,228,124, 90,107,133,109, 90,124,141,120,128,127,121, 5,224,253, 89,
+ 1,193,254, 62, 2,168,252,188, 1,241,254, 15, 0, 2, 1, 69, 2,140, 3,140, 5, 30, 0, 11, 0, 41, 0, 0, 1, 35, 34, 6,
+ 21, 20, 22, 51, 50, 54, 55, 53, 55, 17, 35, 53, 14, 1, 35, 34, 38, 53, 52, 54, 59, 1, 53, 46, 1, 35, 34, 6, 7, 53, 62, 1,
+ 51, 50, 22, 23, 30, 1, 2,171, 38,102,102, 77, 68, 95,110, 1,116,116, 38,112, 81,108,128,158,153,156, 1, 84, 93, 59,121, 58,
+ 65,118, 55, 88,124, 38, 24, 20, 3,215, 63, 63, 56, 63,118,104, 23, 43,254,154, 93, 56, 53,108, 91,104,109, 16, 75, 68, 30, 29,
+103, 21, 22, 46, 46, 28, 82, 0, 0, 2, 1, 69, 2,140, 3,140, 5, 30, 0, 11, 0, 41, 0, 0, 1, 51, 50, 54, 53, 52, 38, 35,
+ 34, 6, 7, 21, 7, 17, 51, 21, 62, 1, 51, 50, 22, 21, 20, 6, 43, 1, 21, 30, 1, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 39,
+ 46, 1, 2, 38, 38,102,102, 77, 68, 95,110, 1,116,116, 38,112, 81,108,128,158,153,156, 1, 84, 93, 59,121, 58, 65,118, 55, 88,
+124, 38, 24, 20, 3,211, 63, 63, 56, 63,118,104, 23, 43, 1,102, 93, 56, 53,108, 90,105,109, 16, 75, 68, 30, 29,103, 21, 22, 46,
+ 46, 28, 82, 0, 0, 2, 1, 71, 2,140, 3,138, 5, 30, 0, 16, 0, 26, 0, 0, 1, 53, 51, 17, 35, 53, 14, 1, 35, 34, 38, 53,
+ 52, 54, 51, 50, 22, 4, 20, 22, 51, 50, 54, 52, 38, 35, 34, 3, 22,116,116, 29, 96, 63,128,147,147,128, 63, 97,254,199, 86, 84,
+ 83, 88, 88, 83, 84, 4,191, 78,253,143, 79, 47, 48,176,155,153,174, 48,161,240,122,123,238,123, 0, 3, 0,251, 2,140, 3,214,
+ 5, 30, 0, 10, 0, 18, 0, 66, 0, 0, 1, 21, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 21, 20, 22, 50, 54, 61, 1, 37, 33, 52,
+ 54, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 23, 62, 1, 51, 50, 22, 21, 20, 6, 43, 1, 21, 20, 22, 51, 50, 54, 55,
+ 21, 14, 1, 35, 34, 38, 39, 14, 1, 35, 34, 38, 53, 2,153, 31,107, 75, 56, 52, 58, 47,254,202, 48,110, 48,254,202, 1, 54, 1,
+ 64, 70, 50, 81, 32, 35, 83, 45, 69, 94, 20, 25, 84, 61, 98,103,126,121, 73, 62, 59, 35, 84, 39, 49, 83, 38, 57, 78, 24, 20, 84,
+ 56,109, 92, 4, 23, 41, 51, 63, 50, 54, 74,224, 29, 85, 74, 76, 88, 24, 80, 9, 19, 19, 90, 81, 28, 29, 96, 23, 24, 46, 43, 45,
+ 44, 96, 92, 96,100, 49, 67, 72, 24, 22, 94, 20, 18, 35, 36, 34, 37,132,172, 0, 0, 2, 1, 71, 2,140, 3,138, 6, 3, 0, 7,
+ 0, 24, 0, 0, 0, 52, 38, 34, 6, 20, 22, 50, 3, 62, 1, 51, 50, 22, 21, 20, 6, 35, 34, 38, 39, 21, 35, 17, 51, 3, 16, 86,
+168, 87, 87,168,255, 28, 97, 65,127,146,147,128, 63, 96, 29,116,116, 3, 93,240,122,123,238,123, 1,220, 46, 49,174,153,155,176,
+ 48, 47, 79, 3,103, 0, 0, 0, 0, 2, 1, 71, 2,140, 3,138, 6, 3, 0, 16, 0, 26, 0, 0, 1, 17, 51, 17, 35, 53, 14, 1,
+ 35, 34, 38, 53, 52, 54, 51, 50, 22, 4, 20, 22, 51, 50, 54, 52, 38, 35, 34, 3, 22,116,116, 29, 96, 63,128,147,147,128, 63, 97,
+254,199, 86, 84, 83, 88, 88, 83, 84, 4,191, 1, 68,252,153, 79, 47, 48,176,155,153,174, 48,161,240,122,123,238,123, 0, 0, 0,
+ 0, 2, 1, 49, 2,140, 3,160, 5, 30, 0, 21, 0, 28, 0, 0, 1, 21, 33, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38,
+ 53, 52, 54, 51, 50, 22, 7, 46, 1, 35, 34, 6, 7, 3,160,254, 10,120,110, 55,121, 69, 66,123, 57,165,185,181,152,134,156,116,
+ 2, 92, 85, 84,109, 10, 3,239, 50, 3,103,112, 31, 32,102, 24, 24,175,154,150,179,162,110, 90, 95, 99, 87, 0, 0, 2, 1, 49,
+ 2,140, 3,160, 5, 30, 0, 21, 0, 28, 0, 0, 1, 53, 33, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 21, 20, 6, 35,
+ 34, 38, 55, 30, 1, 51, 50, 54, 55, 1, 49, 1,246,120,110, 55,121, 69, 66,123, 57,165,185,181,152,134,156,116, 2, 92, 85, 84,
+109, 10, 3,187, 50, 3,103,112, 31, 32,102, 24, 24,175,154,150,179,162,110, 90, 95, 99, 87, 0, 0, 1, 1, 79, 2,144, 3,130,
+ 5, 30, 0, 40, 0, 0, 1, 46, 1, 53, 52, 54, 51, 50, 22, 23, 21, 46, 1, 35, 34, 6, 21, 20, 22, 59, 1, 21, 35, 34, 6, 21,
+ 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 53, 52, 54, 1,255, 75, 81,153,132, 51,115, 67, 66,109, 48, 87, 93, 91, 85,104,
+100, 94,106,114,109, 62,115, 48, 61,114, 54,160,174, 93, 3,240, 14, 72, 53, 75, 88, 13, 14, 93, 15, 14, 48, 42, 34, 48, 81, 62,
+ 45, 55, 59, 20, 19, 97, 16, 15,102, 93, 61, 83, 0, 1, 1, 79, 2,144, 3,130, 5, 30, 0, 40, 0, 0, 1, 30, 1, 21, 20, 6,
+ 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 38, 43, 1, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22,
+ 21, 20, 6, 2,210, 75, 81,153,132, 51,115, 67, 66,109, 48, 87, 93, 91, 85,104,100, 94,106,114,109, 62,115, 48, 61,114, 54,160,
+174, 93, 3,190, 14, 72, 53, 75, 88, 13, 14, 93, 15, 14, 48, 42, 34, 48, 81, 62, 45, 55, 59, 20, 19, 97, 16, 15,102, 93, 61, 83,
+ 0, 2, 1, 71, 1,166, 3,138, 5, 30, 0, 9, 0, 39, 0, 0, 0, 52, 38, 35, 34, 6, 20, 22, 51, 50, 23, 20, 6, 35, 34, 38,
+ 39, 53, 30, 1, 51, 50, 54, 61, 2, 14, 1, 35, 34, 38, 53, 52, 54, 51, 50, 22, 23, 53, 51, 3, 22, 85, 81, 85, 90, 90, 86, 80,
+201,150,145, 48,105, 52, 62,100, 43, 93, 86, 28, 95, 69,124,147,147,124, 68, 94, 30,116, 3,103,232,120,120,232,122, 41,141,145,
+ 15, 15,102, 25, 25, 91, 98, 5, 70, 53, 51,175,148,147,176, 48, 50, 81, 0, 0, 0, 2, 1, 73, 1,170, 3,136, 5, 17, 0, 9,
+ 0, 13, 0, 0, 1, 33, 17, 35, 53, 33, 21, 35, 17, 51, 3, 35, 53, 51, 3, 87,254,216,230, 2, 63,230,181,181,115,115, 2,158,
+ 2, 35, 80, 80,254, 45,254,188,131, 0, 0, 0, 0, 1, 1, 56, 2,156, 3,153, 6, 3, 0, 11, 0, 0, 1, 51, 17, 1, 51, 5,
+ 1, 35, 1, 7, 21, 35, 1, 56,120, 1, 48,141,254,234, 1, 66,142,254,251, 86,120, 6, 3,254, 8, 1, 4,236,254,121, 1, 68,
+ 73,251, 0, 0, 0, 1, 1, 37, 2,156, 3,172, 5, 30, 0, 34, 0, 0, 1, 62, 1, 51, 50, 22, 21, 17, 35, 17, 52, 38, 35, 34,
+ 6, 21, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51, 50, 22, 2,139, 21, 66, 47, 85, 70,106, 34, 44, 50,
+ 37,106, 36, 47, 46, 35,106,106, 20, 63, 39, 48, 64, 4,207, 41, 38,117,162,254,149, 1,103,133, 64, 69,128,254,153, 1,103,134,
+ 63, 69,128,254,153, 2,115, 54, 34, 35, 39, 0, 0, 1, 1, 91, 1,173, 3,118, 5, 30, 0, 31, 0, 0, 1, 17, 20, 7, 6, 43,
+ 1, 53, 51, 50, 55, 54, 53, 17, 52, 38, 35, 34, 7, 6, 21, 17, 35, 17, 51, 21, 54, 55, 54, 51, 50, 22, 3,118, 56, 57,104,129,
+117, 57, 28, 28, 67, 71, 82, 44, 43,116,116, 31, 53, 52, 73,108,106, 4, 33,254,112,109, 59, 60, 88, 35, 34, 71, 1,144, 84, 80,
+ 51, 52, 96,254,158, 2,115, 94, 54, 28, 27,126, 0, 2, 1, 58, 2,140, 3,151, 5, 30, 0, 11, 0, 22, 0, 0, 1, 34, 6, 21,
+ 20, 22, 51, 50, 54, 53, 52, 46, 1, 32, 22, 21, 20, 6, 35, 34, 38, 53, 52, 2,104, 88, 91, 91, 88, 89, 91, 91,236, 1, 38,156,
+155,148,147,155, 4,199,122,120,119,123,123,119,120,122, 87,169,160,161,168,168,161,160, 0, 0, 0, 1, 1, 88, 2,140, 3,121,
+ 5, 30, 0, 23, 0, 0, 1, 62, 1, 51, 50, 22, 16, 6, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 52, 38, 35, 34, 6, 7, 1, 88,
+ 46, 99, 52,164,184,184,164, 51, 97, 49, 46, 92, 59,109,117,118,108, 61, 95, 41, 4,238, 24, 24,174,254,202,174, 23, 25,108, 36,
+ 33,126,232,126, 33, 35, 0, 0, 0, 1, 1, 58, 3,213, 3,151, 5, 30, 0, 12, 0, 0, 1, 52, 54, 32, 22, 21, 35, 52, 38, 35,
+ 34, 6, 21, 1, 58,155, 1, 38,156,123, 91, 89, 88, 91, 3,213,160,169,169,160,120,122,122,120, 0, 1, 1, 58, 2,140, 3,151,
+ 3,213, 0, 12, 0, 0, 1, 20, 6, 32, 38, 53, 51, 20, 22, 51, 50, 54, 53, 3,151,155,254,218,156,123, 91, 89, 88, 91, 3,213,
+160,169,169,160,120,122,122,120, 0, 2, 1, 71, 1,173, 3,138, 5, 30, 0, 16, 0, 24, 0, 0, 1, 17, 35, 17, 51, 21, 62, 1,
+ 51, 50, 22, 21, 20, 6, 35, 34, 38, 36, 52, 38, 34, 6, 20, 22, 50, 1,188,117,117, 29, 96, 63,128,146,146,128, 64, 96, 1, 56,
+ 85,168, 87, 87,168, 2,235,254,194, 3, 98, 80, 47, 48,176,155,153,174, 48,161,240,122,123,238,123, 0, 0, 0, 0, 1, 1, 77,
+ 2,156, 3,132, 5,193, 0, 19, 0, 0, 1, 21, 33, 21, 33, 17, 20, 22, 59, 1, 21, 35, 34, 38, 53, 17, 35, 53, 51, 53, 2,125,
+ 1, 7,254,249, 59, 74,130,141,131,107,188,188, 5,193,178, 80,254,172, 70, 55, 82, 93,114, 1, 84, 80,178, 0, 0, 1, 1, 91,
+ 2,140, 3,118, 5, 14, 0, 19, 0, 0, 1, 17, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 35, 53, 14, 1, 35, 34, 38, 1, 91,
+116, 67, 71, 82, 87,116,116, 31,107, 71,108,106, 3,137, 1,133,254,123, 84, 80,103, 96, 1, 98,253,142, 94, 54, 56,126, 0, 0,
+ 0, 1, 0,255, 2,157, 3,210, 4,125, 0, 19, 0, 0, 1, 33, 53, 33, 50, 54, 53, 52, 38, 35, 33, 53, 33, 21, 35, 30, 1, 21,
+ 20, 6, 2,180,254, 75, 1,181, 96, 89,115,108,254,113, 2,193,106, 61, 63,142, 2,157,103, 60, 63, 73, 77,104,104, 27, 95, 63,
+ 97, 94, 0, 0, 0, 1, 1, 37, 2,156, 3,172, 5, 30, 0, 34, 0, 0, 1, 14, 1, 35, 34, 38, 53, 17, 51, 17, 20, 22, 51, 50,
+ 54, 53, 17, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 35, 53, 14, 1, 35, 34, 38, 2, 70, 21, 66, 47, 85, 70,106, 34, 44, 50,
+ 37,106, 36, 47, 46, 35,106,106, 20, 63, 39, 48, 64, 2,235, 40, 39,117,162, 1,107,254,153,132, 65, 69,128, 1,103,254,153,134,
+ 63, 69,128, 1,103,253,141, 54, 34, 35, 39, 0, 0, 1, 1, 35, 2,156, 3,174, 5, 15, 0, 6, 0, 0, 1, 51, 27, 1, 51, 3,
+ 35, 1, 35,120,205,206,120,251,149, 5, 15,253,242, 2, 14,253,141, 0, 0, 0,255,255, 1, 72, 0, 0, 3,136, 3,103, 16, 7,
+ 6,169, 0, 0,253,100, 0, 0,255,255, 1,153, 0, 0, 3, 56, 2,131, 16, 7, 2, 81, 0, 0,253,100, 0, 0,255,255, 1, 91,
+255,240, 3,118, 2,114, 16, 7, 4,214, 0, 0,253,100, 0, 0,255,255, 1, 35, 0, 0, 3,174, 2,115, 16, 7, 4,217, 0, 0,
+253,100, 0, 0, 0, 2, 0,123,254, 72, 4, 18, 4,123, 0, 10, 0, 40, 0, 0, 37, 20, 22, 51, 50, 54, 16, 38, 35, 34, 6, 3,
+ 52, 18, 51, 50, 22, 23, 21, 46, 1, 35, 34, 6, 29, 2, 62, 1, 51, 50, 18, 17, 16, 2, 35, 34, 38, 39, 21, 35, 1, 51,135,129,
+135,142,143,136,127,135,184,238,231, 76,166, 83, 98,160, 67,149,136, 44,152,109,196,234,234,196,108,150, 47,184,138,207,215,215,
+ 1,158,217,218, 1, 35,252, 1, 4, 28, 27,182, 46, 44,162,176, 8,125, 94, 92,254,198,254,249,254,248,254,198, 86, 90,145, 0,
+255,255, 1, 58, 2,156, 3,150, 5,224, 16, 6, 4,179, 0, 0, 0, 1, 0,156, 0, 0, 4, 53, 4, 96, 0, 19, 0, 0, 1, 21,
+ 33, 17, 33, 21, 33, 53, 33, 17, 33, 53, 33, 17, 33, 53, 33, 21, 33, 17, 4, 53,254,143, 1,110,252,110, 1,108,254,144, 1,112,
+254,148, 3,146,254,146, 2,104,164,254,203,143,143, 1, 53,164, 1,105,143,143,254,151, 0, 0, 0, 1, 0,160,254, 86, 4, 10,
+ 6, 31, 0, 27, 0, 0, 1, 20, 22, 59, 1, 29, 2, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 61, 1, 35, 34, 38, 53, 17, 33, 53,
+ 33, 2,127, 91, 89,215, 89, 90,165,205,185, 90, 45, 44, 48,165,181,254,217, 1,223, 1,150,124,126, 28,128, 20,195,105,106,156,
+ 62, 62,126, 20,212,194, 3,249,144, 0, 0, 0, 0, 2, 1, 71, 2,140, 3,138, 5, 30, 0, 16, 0, 26, 0, 0, 1, 21, 35, 17,
+ 51, 21, 62, 1, 51, 50, 22, 21, 20, 6, 35, 34, 38, 36, 52, 38, 35, 34, 6, 20, 22, 51, 50, 1,187,116,116, 29, 96, 63,128,147,
+147,128, 63, 97, 1, 57, 86, 84, 83, 88, 88, 83, 84, 2,235, 78, 2,113, 79, 47, 48,176,155,153,174, 48,161,240,122,123,238,123,
+ 0, 1, 1, 88, 2,140, 3,121, 5, 30, 0, 24, 0, 0, 1, 14, 1, 35, 34, 38, 16, 54, 51, 50, 22, 23, 21, 46, 1, 35, 34, 6,
+ 21, 20, 22, 51, 50, 54, 55, 3,121, 46, 99, 52,164,184,184,164, 51, 97, 49, 46, 92, 59,109,117,118,108, 61, 95, 41, 2,188, 24,
+ 24,174, 1, 54,174, 23, 25,108, 36, 33,125,117,116,126, 33, 35, 0, 2, 1, 81, 2, 73, 3,128, 5, 28, 0, 7, 0, 43, 0, 0,
+ 1, 22, 51, 50, 53, 38, 35, 34, 7, 6, 21, 7, 52, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 23, 21, 46, 1, 35, 34, 7,
+ 6, 20, 23, 22, 23, 54, 51, 50, 23, 20, 35, 34, 2,100, 38, 47, 92, 1, 82, 64, 53, 3, 97, 8, 36, 30, 94, 96, 94,165, 54, 51,
+ 51, 48, 50, 98, 51,113, 62, 62, 62, 4, 4, 53,124,188, 1,210, 52, 2,236, 11, 32, 42,154, 32, 38, 2, 58, 47, 20, 29, 90,150,
+153, 88, 88, 9, 11, 19, 96, 24, 24, 64, 63,230, 64, 4, 3, 98,138,106, 0, 0, 0, 2, 1, 58, 2,140, 3,151, 6, 3, 0, 26,
+ 0, 41, 0, 0, 1, 30, 1, 21, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 23, 46, 1, 39, 7, 39, 55, 39, 51, 23, 55, 23, 3,
+ 46, 1, 35, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 2,168,124,115,159,144,143,159,159,141, 21, 22, 10, 21, 46, 24,175, 19,
+149,115,138, 80,183, 20,109, 22, 52, 28, 92, 97, 94, 85, 86, 94, 37, 5,131,119,212,112,150,166,166,150,148,166, 1, 1, 25, 50,
+ 24, 51, 55, 44,112, 81, 53, 55,254,238, 7, 8,118,111,110,119,119,110, 61,114, 0, 1, 1, 79, 2,144, 3,130, 5, 30, 0, 40,
+ 0, 0, 1, 30, 1, 21, 20, 6, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 38, 43, 1, 53, 51, 50, 54, 53, 52, 38, 35, 34,
+ 6, 7, 53, 62, 1, 51, 50, 22, 21, 20, 6, 2,209, 84, 93,174,161, 53,115, 60, 47,115, 63,109,114,106, 95, 99,104, 85, 91, 94,
+ 87, 47,109, 66, 67,115, 50,133,153, 82, 3,240, 13, 83, 61, 93,102, 15, 16, 97, 19, 20, 59, 55, 45, 62, 81, 48, 34, 42, 48, 14,
+ 15, 93, 14, 13, 88, 75, 53, 72, 0, 1, 1, 87, 2,156, 3,122, 6, 3, 0, 19, 0, 0, 1, 21, 35, 34, 6, 29, 1, 51, 21, 35,
+ 17, 35, 17, 35, 53, 51, 53, 52, 54, 51, 3,122,132, 62, 49,243,243,116,188,188,107,113, 6, 3, 85, 46, 57, 56, 80,253,221, 2,
+ 35, 80, 44,103, 97, 0, 0, 0, 0, 1, 1, 98, 1,173, 3,111, 5, 15, 0, 23, 0, 0, 1, 53, 51, 17, 35, 53, 33, 17, 51, 21,
+ 35, 21, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 61, 1, 1,206,153,200, 1, 60,148,148, 57, 56,104,160,147, 57, 28, 29, 2,156,
+ 92, 1,199, 80,253,233, 92, 11,109, 59, 60, 88, 35, 35, 70, 11, 0, 2, 1, 71, 1,166, 3,138, 5, 13, 0, 10, 0, 36, 0, 0,
+ 1, 48, 53, 39, 34, 6, 20, 22, 51, 50, 54, 23, 20, 6, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 61, 2, 14, 1, 35, 34, 38, 53,
+ 52, 54, 51, 33, 3, 22,166, 85, 90, 90, 86, 80, 85,116,150,145, 48,105, 52, 62,100, 43, 93, 86, 28, 95, 69,124,147,145,126, 1,
+ 52, 3,219,119,117,120,232,122,122,163,141,145, 15, 15,102, 25, 25, 91, 98, 5, 70, 53, 51,175,148,127,179, 0, 0, 1, 1, 91,
+ 1,171, 3,118, 5, 14, 0, 19, 0, 0, 1, 17, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 35, 17, 14, 1, 35, 34, 38, 1, 91,
+116, 67, 71, 82, 87,116,116, 31,107, 71,108,106, 3,137, 1,133,254,123, 84, 80,103, 96, 1, 98,252,157, 1, 79, 54, 56,126, 0,
+ 0, 2, 1, 67, 2,156, 3,142, 6, 3, 0, 3, 0, 21, 0, 0, 1, 51, 21, 35, 7, 33, 17, 51, 21, 35, 21, 51, 21, 33, 53, 51,
+ 53, 35, 53, 51, 53, 35, 2, 52,116,116,181, 1, 41,223,223,230,253,192,230,241,241,181, 6, 3,130,114,254,230, 92,173, 80, 80,
+173, 92,202, 0, 0, 1, 1, 97, 2,156, 3,112, 5, 15, 0, 13, 0, 0, 1, 35, 34, 38, 53, 17, 35, 53, 33, 17, 6, 22, 59, 1,
+ 3,112,129,104,113,181, 1, 41, 1, 57, 57,117, 2,156,117,110, 1, 64, 80,254,112, 70, 70, 0, 0, 1, 1, 73, 2,156, 3,136,
+ 5, 15, 0, 11, 0, 0, 1, 33, 21, 35, 17, 51, 21, 33, 53, 51, 17, 35, 1, 73, 2, 63,230,230,253,193,230,230, 5, 15, 80,254,
+ 45, 80, 80, 1,211, 0, 0, 0, 0, 1, 1, 71, 2,156, 3,138, 5, 15, 0, 19, 0, 0, 1, 21, 35, 21, 51, 21, 33, 53, 51, 53,
+ 35, 53, 51, 53, 35, 53, 33, 21, 35, 21, 3,138,232,230,253,193,230,232,232,230, 2, 63,230, 3,245, 92,173, 80, 80,173, 92,202,
+ 80, 80,202, 0, 0, 3, 1,100, 1,173, 3,109, 6, 3, 0, 3, 0, 18, 0, 28, 0, 0, 1, 51, 21, 35, 3, 34, 53, 52, 59, 1,
+ 17, 51, 17, 51, 21, 35, 6, 7, 6, 39, 48, 35, 34, 23, 22, 51, 50, 55, 54, 2,135,116,116,100,191,170,121,116,114,120, 12, 33,
+ 51, 21,114, 74, 1, 3, 77, 66, 24, 11, 6, 3,130,252, 44,124,115, 2,115,253,141, 87, 63, 35, 53,152, 29, 36, 27, 13, 0, 0,
+ 0, 1, 1, 85, 1,173, 3,124, 6, 10, 0, 13, 0, 0, 1, 20, 22, 59, 1, 21, 35, 34, 38, 53, 17, 35, 53, 33, 2,131, 57, 56,
+136,147,100,118,186, 1, 46, 2,145, 70, 70, 88,116,112, 3, 40, 81, 0, 0, 0, 0, 1, 1, 85, 1,173, 3,124, 6, 10, 0, 25,
+ 0, 0, 1, 20, 22, 59, 1, 21, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 61, 1, 35, 34, 38, 53, 17, 35, 53, 33, 2,131, 57, 56,
+136, 56, 57,104,129,116, 57, 29, 27, 30,104,114,186, 1, 46, 3,127, 69, 71, 98,109, 59, 60, 88, 35, 34, 71, 11,119,108, 2, 58,
+ 81, 0, 0, 0, 0, 1, 1,126, 2,156, 3, 83, 5, 30, 0, 5, 0, 0, 1, 51, 17, 33, 21, 33, 1,126,128, 1, 85,254, 43, 5,
+ 30,253,221, 95, 0, 1, 1, 37, 1,173, 3,171, 5, 30, 0, 48, 0, 0, 1, 62, 1, 51, 50, 23, 22, 21, 17, 21, 20, 7, 6, 43,
+ 1, 53, 51, 50, 55, 54, 61, 1, 49, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1,
+ 51, 50, 22, 2,138, 22, 66, 46, 86, 34, 35, 50, 51, 95,117,106, 51, 26, 25, 34, 44, 50, 37,106, 36, 47, 46, 36,105,105, 21, 62,
+ 40, 48, 64, 4,207, 41, 38, 58, 59,162,254,221, 83,109, 59, 60, 88, 35, 34, 71, 11, 1,103,133, 64, 69,128,254,153, 1,103,134,
+ 63, 69,128,254,153, 2,115, 54, 34, 35, 39, 0, 0, 1, 1, 37, 1,171, 3,172, 5, 30, 0, 34, 0, 0, 1, 14, 1, 35, 34, 38,
+ 53, 17, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 20, 22, 51, 50, 54, 53, 17, 51, 17, 35, 17, 14, 1, 35, 34, 38, 2, 70, 21,
+ 66, 47, 85, 70,106, 34, 44, 50, 37,106, 36, 47, 46, 35,106,106, 20, 63, 39, 48, 64, 2,235, 40, 39,117,162, 1,107,254,153,132,
+ 65, 69,128, 1,103,254,153,134, 63, 69,128, 1,103,252,141, 1, 54, 34, 35, 39, 0, 1, 1, 85, 1,173, 3,124, 5, 30, 0, 27,
+ 0, 0, 1, 20, 6, 43, 1, 53, 51, 50, 54, 53, 17, 51, 21, 62, 1, 51, 50, 22, 21, 17, 35, 17, 52, 38, 35, 34, 6, 21, 2, 24,
+ 77, 85, 33, 23, 49, 36, 88, 31, 84, 56, 91, 93, 86, 59, 59, 70, 81, 2,145,120,108, 88, 54, 86, 2,126, 97, 56, 56,134,129,254,
+133, 1,119, 89, 89,107, 92, 0, 0, 1, 1, 85, 1,173, 3,124, 5, 30, 0, 36, 0, 0, 1, 53, 17, 52, 39, 38, 35, 34, 7, 6,
+ 21, 17, 35, 17, 51, 21, 54, 55, 54, 51, 50, 23, 22, 21, 17, 29, 1, 20, 22, 59, 1, 21, 35, 34, 39, 38, 53, 2,185, 29, 30, 58,
+ 71, 40, 41, 87, 87, 31, 42, 43, 55, 91, 47, 47, 36, 49, 23, 33, 85, 38, 39, 2,156, 72, 1, 47, 89, 44, 45, 53, 54, 92,254,158,
+ 2,115, 97, 56, 28, 28, 66, 68,129,254,205, 72, 11, 86, 54, 88, 54, 54,120, 0, 0, 1, 1, 63, 2,156, 3,146, 5, 30, 0, 9,
+ 0, 0, 1, 51, 1, 17, 51, 17, 35, 1, 17, 35, 1, 63,171, 1, 45,123,171,254,211,123, 5, 30,254, 7, 1,249,253,126, 1,250,
+254, 6, 0, 0, 0, 3, 1, 58, 2,140, 3,151, 5, 30, 0, 14, 0, 23, 0, 32, 0, 0, 0, 32, 23, 22, 21, 20, 7, 6, 35, 34,
+ 39, 38, 53, 52, 55, 23, 34, 7, 6, 7, 33, 38, 39, 38, 19, 33, 22, 23, 22, 51, 50, 55, 54, 1,213, 1, 38, 78, 78, 78, 77,148,
+147, 77, 78, 78,224, 88, 45, 40, 5, 1,101, 5, 40, 45, 87,254,161, 9, 33, 45, 88, 89, 45, 33, 5, 30, 84, 85,160,161, 84, 84,
+ 84, 84,161,160, 85, 3, 61, 53, 99, 99, 53, 61,254,207, 74, 44, 61, 61, 44, 0, 0, 3, 1, 58, 1,174, 3,151, 6, 3, 0, 29,
+ 0, 38, 0, 47, 0, 0, 1, 35, 53, 33, 21, 35, 21, 22, 23, 22, 21, 20, 7, 6, 7, 21, 51, 21, 33, 53, 51, 53, 38, 39, 38, 53,
+ 52, 55, 54, 55, 23, 17, 54, 55, 54, 53, 52, 39, 38, 3, 17, 6, 7, 6, 21, 20, 23, 22, 2, 51,151, 1,162,151,102, 60, 78, 78,
+ 60,102,151,254, 94,151,108, 63, 78, 78, 63,108,116, 44, 27, 46, 46, 27,160, 50, 30, 46, 46, 30, 5,167, 92, 92,141, 15, 65, 85,
+160,161, 84, 65, 15,134, 92, 92,133, 13, 68, 84,161,160, 85, 68, 13, 93,254, 47, 14, 37, 62,119,120, 61, 37,254, 59, 1,214, 13,
+ 41, 61,120,119, 62, 41, 0, 0, 0, 1, 1, 91, 1,173, 3,118, 5, 30, 0, 60, 0, 0, 1, 21, 46, 1, 35, 34, 7, 6, 21, 20,
+ 23, 22, 31, 1, 22, 23, 22, 21, 20, 7, 6, 35, 34, 47, 1, 21, 20, 22, 59, 1, 21, 35, 34, 39, 38, 61, 3, 22, 23, 22, 51, 50,
+ 54, 53, 52, 39, 38, 47, 1, 46, 1, 53, 52, 55, 54, 51, 50, 23, 22, 3, 80, 49,106, 56, 87, 42, 44, 31, 31, 93, 40,123, 52, 52,
+ 77, 78,137, 56, 62, 13, 48, 66,147,160,114, 51, 52, 64, 62, 63, 61, 82, 88, 31, 33,107, 41,107, 96, 70, 71,130, 64, 57, 56, 4,
+253, 98, 23, 22, 23, 24, 47, 36, 21, 20, 18, 8, 24, 43, 42, 77, 87, 51, 51, 9, 3, 7, 86, 54, 88, 54, 54,120, 34, 49, 57, 29,
+ 15, 15, 50, 45, 42, 23, 22, 21, 8, 20, 84, 73, 88, 48, 48, 8, 8, 0, 0, 0, 0, 1, 1,120, 1,173, 3, 89, 6, 3, 0, 20,
+ 0, 0, 1, 2, 3, 52, 54, 59, 1, 21, 35, 34, 6, 21, 19, 20, 6, 43, 1, 53, 51, 50, 54, 2, 9, 1, 1,106,123,109,111, 62,
+ 49, 2,103,114, 44, 31, 66, 48, 2,145, 1, 93, 1, 77,101, 99, 85, 45, 58,253, 74,120,108, 88, 54, 0, 0, 0, 0, 1, 1, 77,
+ 1,173, 3,132, 5,193, 0, 33, 0, 0, 1, 21, 33, 21, 33, 17, 20, 23, 22, 59, 1, 21, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54,
+ 61, 1, 35, 34, 39, 38, 53, 17, 35, 53, 51, 53, 2,125, 1, 7,254,249, 30, 29, 74,130, 56, 56,104,130,117, 57, 28, 28, 25,131,
+ 53, 54,188,188, 5,193,178, 80,254,172, 70, 27, 28, 93,109, 59, 60, 88, 35, 34, 71, 11, 46, 47,114, 1, 84, 80,178, 0, 0, 0,
+ 0, 2, 0,208, 2,140, 4, 1, 5, 15, 0, 23, 0, 33, 0, 0, 19, 53, 51, 17, 51, 17, 33, 17, 51, 17, 51, 21, 35, 21, 35, 53,
+ 6, 7, 6, 35, 34, 38, 61, 1, 41, 1, 21, 20, 23, 22, 51, 50, 55, 54,208,109,116, 1,103,116,117,117,116, 42, 56, 55, 74,122,
+126, 1,219,254,153, 39, 39, 78, 94, 55, 49, 3,153, 92, 1, 26,254,230, 1, 26,254,230, 92,253, 96, 57, 28, 27,134,130, 5, 2,
+ 89, 44, 45, 54, 47, 0, 0, 0, 0, 1, 1, 32, 2,139, 3,177, 5, 15, 0, 29, 0, 0, 1, 53, 33, 21, 14, 1, 21, 20, 22, 50,
+ 54, 53, 52, 38, 39, 53, 33, 21, 35, 30, 1, 21, 20, 6, 32, 38, 53, 52, 54, 55, 1, 32, 1, 22, 68, 82,111,182,111, 87, 63, 1,
+ 19,149, 72, 69,178,254,228,179, 66, 75, 4,179, 92,123, 39,121, 75, 89,109,109, 89, 82,118, 35,123, 92, 56,125, 76,131,164,163,
+128, 82,121, 58, 0, 1, 1, 70, 2,156, 3,139, 5, 15, 0, 26, 0, 0, 1, 51, 49, 30, 1, 21, 20, 6, 43, 1, 34, 38, 53, 17,
+ 51, 17, 20, 22, 63, 1, 50, 54, 53, 52, 38, 39, 38, 2, 51,203, 72, 69,179,141, 45,114,102,116, 49, 65, 32, 91,110, 91, 58, 48,
+ 4,196, 56,125, 76,131,164,108,119, 1,144,254,112, 85, 56, 1, 1,109, 89, 81,123, 31, 24, 0, 0, 1, 1, 17, 2,156, 3,192,
+ 5, 15, 0, 6, 0, 0, 1, 35, 11, 1, 35, 1, 51, 3,192,123,221,220,123, 1, 9,157, 2,156, 2, 14,253,242, 2,115, 0, 0,
+ 0, 1, 1, 97, 2,156, 3,112, 5, 16, 0, 9, 0, 0, 1, 33, 21, 1, 33, 21, 33, 53, 1, 33, 1,112, 2, 0,254,107, 1,149,
+253,241, 1,149,254,122, 5, 16, 94,254, 62, 84, 95, 1,195, 0, 0, 1, 1, 94, 1,173, 3,115, 5, 15, 0, 22, 0, 0, 1, 33,
+ 21, 1, 33, 21, 35, 21, 20, 22, 59, 1, 21, 35, 34, 39, 38, 61, 1, 33, 53, 1, 33, 1,106, 1,157,254,185, 1, 71, 1, 36, 50,
+ 23, 33, 86, 38, 39,254,175, 1, 71,254,197, 5, 15, 94,254, 61, 82, 11, 86, 54, 88, 54, 54,120, 11, 94, 1,195, 0, 2, 1, 77,
+ 2, 94, 3,132, 5, 15, 0, 20, 0, 28, 0, 0, 1, 6, 21, 35, 52, 55, 35, 53, 1, 33, 53, 33, 21, 1, 51, 54, 51, 50, 21, 22,
+ 35, 39, 48, 51, 50, 53, 52, 35, 6, 2,146, 2, 97, 3,229, 1,180,254, 92, 2, 39,254, 76,110, 38,138,143, 1,210, 13, 13,109,
+ 44, 56, 2,156, 29, 33, 33, 29, 94, 1,195, 82, 94,254, 61,162,138,106, 82, 31, 51, 1, 0, 0, 0, 1, 1, 51, 1,168, 3,158,
+ 5, 15, 0, 28, 0, 0, 1, 50, 23, 30, 1, 21, 20, 6, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 38, 43, 1, 53, 1, 33,
+ 53, 33, 21, 2,100, 67, 80, 62,105,191,177, 59,125, 67, 53,126, 68,120,126,117,104,110, 1, 15,254, 92, 2, 39, 3,167, 32, 23,
+120, 77,124,135, 21, 20,109, 27, 28, 84, 80, 74, 83, 93, 1, 24, 82, 94, 0, 0, 0, 3, 1, 58, 2,140, 3,151, 5,228, 0, 6,
+ 0, 13, 0, 24, 0, 0, 1, 46, 1, 35, 34, 6, 7, 5, 33, 30, 1, 51, 50, 54, 0, 32, 22, 21, 20, 6, 35, 34, 38, 53, 52, 3,
+ 26, 4, 85, 89, 88, 85, 4, 1, 99,254,157, 3, 86, 88, 89, 86,254,190, 1, 38,156,155,148,147,155, 4,108,126,162,162,126,103,
+126,163,163, 2, 93,220,208,209,219,219,209,208,255,255, 0, 37,254, 10, 4,172, 5,213, 16, 38, 2,161, 0, 0, 16, 6, 0, 36,
+ 0, 0, 0, 0,255,255, 0,133,254, 10, 4, 35, 4,123, 16, 38, 2,161, 0, 0, 16, 6, 0, 68, 0, 0, 0, 0,255,255, 0,166,
+ 0, 0, 4,113, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 37, 0, 0, 0, 0,255,255, 0,193,255,227, 4, 88, 6, 20, 16, 38,
+ 2,131, 50, 0, 16, 6, 0, 69, 0, 0, 0, 0,255,255, 0,166,254, 99, 4,113, 5,213, 16, 38, 2,159, 0, 0, 16, 6, 0, 37,
+ 0, 0, 0, 0,255,255, 0,193,254, 99, 4, 88, 6, 20, 16, 38, 2,159, 0, 0, 16, 6, 0, 69, 0, 0, 0, 0,255,255, 0,166,
+254,155, 4,113, 5,213, 16, 38, 2,173, 0, 0, 16, 6, 0, 37, 0, 0, 0, 0,255,255, 0,193,254,155, 4, 88, 6, 20, 16, 38,
+ 2,173, 0, 0, 16, 6, 0, 69, 0, 0, 0, 0,255,255, 0,139,254,117, 4, 49, 7,107, 16, 39, 11,177, 0, 90, 1,117, 16, 38,
+ 2,163,100, 0, 16, 6, 0, 38, 0, 0, 0, 0,255,255, 0,195,254,117, 4, 37, 6,102, 16, 38, 0,118, 90, 0, 16, 38, 2,163,
+104, 0, 16, 6, 0, 70, 0, 0,255,255, 0,137, 0, 0, 4, 82, 7, 80, 16, 38, 11,185,206, 0, 16, 6, 0, 39, 0, 0, 0, 0,
+255,255, 0,123,255,227, 4, 18, 6, 20, 16, 38, 2,131,206, 0, 16, 6, 0, 71, 0, 0, 0, 0,255,255, 0,137,254, 99, 4, 82,
+ 5,213, 16, 38, 2,159,206, 0, 16, 6, 0, 39, 0, 0, 0, 0,255,255, 0,123,254, 99, 4, 18, 6, 20, 16, 38, 2,159, 0, 0,
+ 16, 6, 0, 71, 0, 0, 0, 0,255,255, 0,137,254,155, 4, 82, 5,213, 16, 38, 2,173,206, 0, 16, 6, 0, 39, 0, 0, 0, 0,
+255,255, 0,123,254,155, 4, 18, 6, 20, 16, 38, 2,173, 0, 0, 16, 6, 0, 71, 0, 0, 0, 0,255,255, 0,125,254,117, 4, 82,
+ 5,213, 16, 39, 2,163,254,242, 0, 0, 18, 6, 0, 39, 0, 0,255,255, 0,123,254,117, 4, 18, 6, 20, 16, 38, 2,163,236, 0,
+ 18, 6, 0, 71, 0, 0, 0, 0,255,255, 0,137,254, 27, 4, 82, 5,213, 16, 38, 2,169,206, 0, 16, 6, 0, 39, 0, 0, 0, 0,
+255,255, 0,123,254, 27, 4, 18, 6, 20, 16, 38, 2,169, 0, 0, 16, 6, 0, 71, 0, 0, 0, 0,255,255, 0,197,254, 27, 4, 78,
+ 5,213, 16, 38, 2,169, 18, 0, 16, 6, 0, 40, 0, 0, 0, 0,255,255, 0,123,254, 27, 4, 88, 4,123, 16, 38, 2,169, 14, 0,
+ 16, 6, 0, 72, 0, 0, 0, 0,255,255, 0,197,254, 27, 4, 78, 5,213, 16, 38, 2,172, 18, 0, 16, 6, 0, 40, 0, 0, 0, 0,
+255,255, 0,123,254, 27, 4, 88, 4,123, 16, 38, 2,172, 14, 0, 16, 6, 0, 72, 0, 0, 0, 0,255,255, 0,197,254,117, 4, 78,
+ 7,109, 16, 38, 11,184, 18, 0, 16, 38, 0, 40, 0, 0, 16, 6, 2,163, 50, 0,255,255, 0,123,254,117, 4, 88, 6, 72, 16, 38,
+ 2,130, 14, 0, 16, 38, 0, 72, 0, 0, 16, 6, 2,163, 50, 0,255,255, 0,233, 0, 0, 4, 88, 7, 80, 16, 38, 11,185, 54, 0,
+ 16, 6, 0, 41, 0, 0, 0, 0,255,255, 0,195, 0, 0, 4, 39, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 73, 0, 0, 0, 0,
+255,255, 0,102,255,227, 4, 80, 7, 48, 16, 38, 11,189, 50, 0, 16, 6, 0, 42, 0, 0, 0, 0,255,255, 0,123,254, 72, 4, 18,
+ 5,246, 16, 38, 2,128, 0, 0, 16, 6, 0, 74, 0, 0, 0, 0,255,255, 0,137, 0, 0, 4, 72, 7, 80, 16, 38, 11,185, 0, 0,
+ 16, 6, 0, 43, 0, 0, 0, 0,255,255, 0,195, 0, 0, 4, 27, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 75, 0, 0, 0, 0,
+255,255, 0,137,254, 99, 4, 72, 5,213, 16, 38, 2,159, 0, 0, 16, 6, 0, 43, 0, 0, 0, 0,255,255, 0,195,254, 99, 4, 27,
+ 6, 20, 16, 38, 2,159, 0, 0, 16, 6, 0, 75, 0, 0, 0, 0,255,255, 0, 20,254,117, 4, 72, 5,213, 16, 39, 2,163,254,137,
+ 0, 0, 16, 6, 0, 43, 0, 0,255,255, 0, 55,254,117, 4, 27, 6, 20, 16, 39, 2,163,254,172, 0, 0, 16, 6, 0, 75, 0, 0,
+255,255, 0,137,254, 25, 4, 72, 5,213, 16, 38, 2,170, 0, 0, 16, 6, 0, 43, 0, 0, 0, 0,255,255, 0,195,254, 25, 4, 27,
+ 6, 20, 16, 38, 2,170, 0, 0, 16, 6, 0, 75, 0, 0, 0, 0,255,255, 0,201,254, 27, 4, 6, 5,213, 16, 38, 2,172, 0, 0,
+ 16, 6, 0, 44, 0, 0, 0, 0,255,255, 0,178,254, 27, 4, 68, 6, 20, 16, 38, 2,172, 0, 0, 16, 6, 0, 76, 0, 0, 0, 0,
+255,255, 0,137, 0, 0, 4,201, 7,107, 16, 39, 11,177, 0, 0, 1,117, 16, 6, 0, 46, 0, 0,255,255, 0,236, 0, 0, 4,178,
+ 7,107, 16, 39, 11,177,255, 37, 1,117, 16, 6, 0, 78, 0, 0,255,255, 0,137,254, 99, 4,201, 5,213, 16, 38, 2,159, 0, 0,
+ 16, 6, 0, 46, 0, 0, 0, 0,255,255, 0,236,254, 99, 4,178, 6, 20, 16, 38, 2,159, 50, 0, 16, 6, 0, 78, 0, 0, 0, 0,
+255,255, 0,137,254,155, 4,201, 5,213, 16, 38, 2,173, 0, 0, 16, 6, 0, 46, 0, 0, 0, 0,255,255, 0,236,254,155, 4,178,
+ 6, 20, 16, 38, 2,173, 50, 0, 16, 6, 0, 78, 0, 0, 0, 0,255,255, 0,215,254, 99, 4,115, 5,213, 16, 38, 2,159, 50, 0,
+ 16, 6, 0, 47, 0, 0, 0, 0,255,255, 0,160,254, 99, 4, 10, 6, 31, 16, 38, 2,159, 0, 0, 16, 6, 0, 79, 0, 0, 0, 0,
+255,255, 0,215,254, 99, 4,115, 7, 48, 16, 38, 11,189, 0, 0, 16, 6, 5, 52, 0, 0, 0, 0,255,255, 0,160,254, 99, 4, 10,
+ 7, 48, 16, 38, 11,189, 0, 0, 16, 6, 5, 53, 0, 0, 0, 0,255,255, 0,215,254,155, 4,115, 5,213, 16, 38, 2,173, 50, 0,
+ 16, 6, 0, 47, 0, 0, 0, 0,255,255, 0,160,254,155, 4, 10, 6, 31, 16, 38, 2,173, 0, 0, 16, 6, 0, 79, 0, 0, 0, 0,
+255,255, 0,215,254, 27, 4,115, 5,213, 16, 38, 2,169, 50, 0, 16, 6, 0, 47, 0, 0, 0, 0,255,255, 0,160,254, 27, 4, 10,
+ 6, 31, 16, 38, 2,169, 0, 0, 16, 6, 0, 79, 0, 0, 0, 0,255,255, 0, 86, 0, 0, 4,121, 7,107, 16, 39, 11,177, 0, 0,
+ 1,117, 16, 6, 0, 48, 0, 0,255,255, 0,109, 0, 0, 4,111, 6,102, 16, 38, 0,118, 0, 0, 16, 6, 0, 80, 0, 0, 0, 0,
+255,255, 0, 86, 0, 0, 4,121, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 48, 0, 0, 0, 0,255,255, 0,109, 0, 0, 4,111,
+ 6, 16, 16, 38, 2,131, 0, 0, 18, 6, 0, 80, 0, 0, 0, 0,255,255, 0, 86,254, 99, 4,121, 5,213, 16, 38, 2,159, 0, 0,
+ 16, 6, 0, 48, 0, 0, 0, 0,255,255, 0,109,254, 99, 4,111, 4,123, 16, 38, 2,159, 0, 0, 16, 6, 0, 80, 0, 0, 0, 0,
+255,255, 0,139, 0, 0, 4, 70, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 49, 0, 0, 0, 0,255,255, 0,195, 0, 0, 4, 27,
+ 6, 16, 16, 38, 2,131, 0, 0, 16, 6, 0, 81, 0, 0, 0, 0,255,255, 0,139,254, 99, 4, 70, 5,213, 16, 38, 2,159, 0, 0,
+ 16, 6, 0, 49, 0, 0, 0, 0,255,255, 0,195,254, 99, 4, 27, 4,123, 16, 38, 2,159, 0, 0, 16, 6, 0, 81, 0, 0, 0, 0,
+255,255, 0,139,254,155, 4, 70, 5,213, 16, 38, 2,173, 0, 0, 16, 6, 0, 49, 0, 0, 0, 0,255,255, 0,195,254,155, 4, 27,
+ 4,123, 16, 38, 2,173, 0, 0, 16, 6, 0, 81, 0, 0, 0, 0,255,255, 0,139,254, 27, 4, 70, 5,213, 16, 38, 2,169, 0, 0,
+ 16, 6, 0, 49, 0, 0, 0, 0,255,255, 0,195,254, 27, 4, 27, 4,123, 16, 38, 2,169, 0, 0, 16, 6, 0, 81, 0, 0, 0, 0,
+255,255, 0,197, 0, 0, 4,117, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 51, 0, 0, 0, 0,255,255, 0,190,254, 86, 4, 84,
+ 6, 16, 16, 38, 2,131, 0, 0, 18, 6, 0, 83, 0, 0, 0, 0,255,255, 0,143, 0, 0, 4,209, 7, 80, 16, 38, 11,185,206, 0,
+ 16, 6, 0, 53, 0, 0, 0, 0,255,255, 1,106, 0, 0, 4,131, 6, 16, 16, 38, 2,131, 0, 0, 16, 6, 0, 85, 0, 0, 0, 0,
+255,255, 0,143,254, 99, 4,209, 5,213, 16, 38, 2,159,206, 0, 16, 6, 0, 53, 0, 0, 0, 0,255,255, 1,106,254, 99, 4,131,
+ 4,123, 16, 38, 2,159, 0, 0, 16, 6, 0, 85, 0, 0, 0, 0,255,255, 0,143,254, 99, 4,209, 7, 48, 16, 38, 11,189,206, 0,
+ 16, 6, 5, 78, 0, 0, 0, 0,255,255, 1, 61,254, 99, 4,131, 5,246, 16, 38, 2,128, 0, 0, 16, 6, 5, 79, 0, 0, 0, 0,
+255,255, 0,143,254,155, 4,209, 5,213, 16, 38, 2,173, 0, 0, 16, 6, 0, 53, 0, 0, 0, 0,255,255, 1, 61,254,155, 4,131,
+ 4,123, 16, 38, 2,173, 0, 0, 16, 6, 0, 85, 0, 0, 0, 0,255,255, 0,139,255,227, 4, 74, 7, 80, 16, 38, 11,185, 0, 0,
+ 16, 6, 0, 54, 0, 0, 0, 0,255,255, 0,213,255,227, 4, 6, 6, 16, 16, 38, 2,131, 0, 0, 18, 6, 0, 86, 0, 0, 0, 0,
+255,255, 0,139,254, 99, 4, 74, 5,240, 16, 38, 2,159, 0, 0, 16, 6, 0, 54, 0, 0, 0, 0,255,255, 0,213,254, 99, 4, 6,
+ 4,123, 16, 38, 2,159, 0, 0, 16, 6, 0, 86, 0, 0, 0, 0,255,255, 0,139,254, 99, 4, 74, 7, 80, 16, 38, 11,185, 0, 0,
+ 16, 38, 0, 54, 0, 0, 16, 6, 2,159, 0, 0,255,255, 0,213,254, 99, 4, 6, 6, 16, 16, 38, 2,131, 0, 0, 16, 38, 0, 86,
+ 0, 0, 16, 6, 2,159, 0, 0,255,255, 0, 47, 0, 0, 4,162, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 55, 0, 0, 0, 0,
+255,255, 0,131, 0, 0, 4, 8, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 87, 0, 0, 0, 0,255,255, 0, 47,254, 99, 4,162,
+ 5,213, 16, 38, 2,159, 0, 0, 16, 6, 0, 55, 0, 0, 0, 0,255,255, 0,131,254, 99, 4, 8, 5,158, 16, 38, 2,159, 0, 0,
+ 16, 6, 0, 87, 0, 0, 0, 0,255,255, 0, 47,254,155, 4,162, 5,213, 16, 38, 2,173, 0, 0, 16, 6, 0, 55, 0, 0, 0, 0,
+255,255, 0,131,254,155, 4, 8, 5,158, 16, 38, 2,173, 0, 0, 16, 6, 0, 87, 0, 0, 0, 0,255,255, 0, 47,254, 27, 4,162,
+ 5,213, 16, 38, 2,169, 0, 0, 16, 6, 0, 55, 0, 0, 0, 0,255,255, 0,131,254, 27, 4, 8, 5,158, 16, 38, 2,169, 0, 0,
+ 16, 6, 0, 87, 0, 0, 0, 0,255,255, 0,147,254,100, 4, 61, 5,213, 16, 38, 2,160, 0, 0, 16, 6, 0, 56, 0, 0, 0, 0,
+255,255, 0,195,254,100, 4, 27, 4, 94, 16, 38, 2,160, 0, 0, 16, 6, 0, 88, 0, 0, 0, 0,255,255, 0,147,254, 27, 4, 61,
+ 5,213, 16, 38, 2,172, 0, 0, 16, 6, 0, 56, 0, 0, 0, 0,255,255, 0,195,254, 27, 4, 27, 4, 94, 16, 38, 2,172, 0, 0,
+ 16, 6, 0, 88, 0, 0, 0, 0,255,255, 0,147,254, 27, 4, 61, 5,213, 16, 38, 2,169, 0, 0, 16, 6, 0, 56, 0, 0, 0, 0,
+255,255, 0,195,254, 27, 4, 27, 4, 94, 16, 38, 2,169, 0, 0, 16, 6, 0, 88, 0, 0, 0, 0,255,255, 0, 57,254, 99, 4,152,
+ 5,213, 16, 38, 2,159, 0, 0, 16, 6, 0, 57, 0, 0, 0, 0,255,255, 0,100,254, 99, 4,109, 4, 96, 16, 38, 2,159, 0, 0,
+ 16, 6, 0, 89, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 4,209, 7,114, 16, 39, 11,179, 0, 0, 1,124, 16, 6, 0, 58, 0, 0,
+255,255, 0, 0, 0, 0, 4,209, 6,109, 16, 38, 0, 67,192, 7, 16, 6, 0, 90, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 4,209,
+ 7,114, 16, 39, 11,177, 0, 0, 1,124, 16, 6, 0, 58, 0, 0,255,255, 0, 0, 0, 0, 4,209, 6,109, 16, 38, 0,118, 64, 7,
+ 16, 6, 0, 90, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 4,209, 7, 52, 16, 39, 0,106, 0, 0, 1, 36, 16, 6, 0, 58, 0, 0,
+255,255, 0, 0, 0, 0, 4,209, 5,191, 16, 38, 0,106, 0,175, 16, 6, 0, 90, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 4,209,
+ 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 58, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 4,209, 6, 16, 16, 38, 2,131, 0, 0,
+ 16, 6, 0, 90, 0, 0, 0, 0,255,255, 0, 0,254, 99, 4,209, 5,213, 16, 38, 2,159, 0, 0, 16, 6, 0, 58, 0, 0, 0, 0,
+255,255, 0, 0,254, 99, 4,209, 4, 96, 16, 38, 2,159, 0, 0, 16, 6, 0, 90, 0, 0, 0, 0,255,255, 0, 18, 0, 0, 4,190,
+ 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 59, 0, 0, 0, 0,255,255, 0, 76, 0, 0, 4,133, 6, 16, 16, 38, 2,131, 0, 0,
+ 16, 6, 0, 91, 0, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7, 80, 16, 38, 11,185, 0, 0, 16, 6, 0, 60, 0, 0, 0, 0,
+255,255, 0,104,254, 86, 4,129, 6, 16, 16, 38, 2,131, 0, 0, 16, 6, 0, 92, 0, 0, 0, 0,255,255, 0,156,254, 99, 4,145,
+ 5,213, 16, 38, 2,159, 50, 0, 18, 6, 0, 61, 0, 0, 0, 0,255,255, 0,203,254, 99, 4, 16, 4, 98, 16, 38, 2,159, 0, 0,
+ 18, 6, 0, 93, 0, 0, 0, 0,255,255, 0,156,254,155, 4,145, 5,213, 16, 38, 2,173, 50, 0, 16, 6, 0, 61, 0, 0, 0, 0,
+255,255, 0,203,254,155, 4, 16, 4, 98, 16, 38, 2,173, 0, 0, 16, 6, 0, 93, 0, 0, 0, 0,255,255, 0,195,254,155, 4, 27,
+ 6, 20, 16, 38, 2,173, 0, 0, 16, 6, 0, 75, 0, 0, 0, 0,255,255, 0,195, 0, 0, 4, 39, 7, 80, 16, 38, 11,185, 0, 0,
+ 16, 6, 1, 65, 0, 0, 0, 0,255,255, 0, 37,254, 99, 4,172, 5,213, 16, 38, 2,159, 0, 0, 16, 6, 0, 36, 0, 0, 0, 0,
+255,255, 0,133,254, 99, 4, 35, 4,123, 16, 38, 2,159, 0, 0, 16, 6, 0, 68, 0, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172,
+ 7,249, 16, 38, 11,184, 0,128, 16, 38, 0, 36, 0, 0, 16, 7, 11,179, 0, 0, 2, 3, 0, 0,255,255, 0,133,255,227, 4, 35,
+ 7,162, 16, 39, 2,124, 0, 0, 1, 60, 18, 6, 0,197, 0, 0,255,255, 0,197,254, 99, 4, 78, 5,213, 16, 38, 2,159, 18, 0,
+ 16, 6, 0, 40, 0, 0, 0, 0,255,255, 0,123,254, 99, 4, 88, 4,123, 16, 38, 2,159, 14, 0, 16, 6, 0, 72, 0, 0, 0, 0,
+255,255, 0,197, 0, 0, 4, 78, 7, 94, 16, 39, 11,178, 0, 42, 1,117, 16, 6, 0, 40, 0, 0,255,255, 0,123,255,227, 4, 88,
+ 6, 55, 16, 38, 2,110, 0, 0, 16, 6, 0, 72, 0, 0, 0, 0,255,255, 0,201,254, 99, 4, 6, 5,213, 16, 38, 2,159, 0, 0,
+ 16, 6, 0, 44, 0, 0, 0, 0,255,255, 0,178,254, 99, 4, 68, 6, 20, 16, 38, 2,159, 0, 0, 16, 6, 0, 76, 0, 0, 0, 0,
+255,255, 0,117,254, 99, 4, 92, 5,240, 16, 38, 2,159, 0, 0, 16, 6, 0, 50, 0, 0, 0, 0,255,255, 0,137,254, 99, 4, 72,
+ 4,123, 16, 38, 2,159, 0, 0, 16, 6, 0, 82, 0, 0, 0, 0,255,255, 0,147,254, 99, 4, 61, 5,213, 16, 38, 2,159, 0, 0,
+ 16, 6, 0, 56, 0, 0, 0, 0,255,255, 0,195,254, 99, 4, 27, 4, 94, 16, 38, 2,159, 0, 0, 16, 6, 0, 88, 0, 0, 0, 0,
+255,255, 0, 37, 0, 0, 4,172, 7,114, 16, 39, 11,179, 0, 0, 1,124, 16, 6, 0, 60, 0, 0,255,255, 0,104,254, 86, 4,129,
+ 6,109, 16, 38, 0, 67,204, 7, 16, 6, 0, 92, 0, 0, 0, 0,255,255, 0, 37,254, 99, 4,172, 5,213, 16, 38, 2,159, 0, 0,
+ 16, 6, 0, 60, 0, 0, 0, 0,255,255, 0,104,254, 86, 4,129, 4, 96, 16, 39, 2,159, 0,250, 0, 0, 16, 6, 0, 92, 0, 0,
+255,255, 0, 37, 0, 0, 4,172, 7, 94, 16, 39, 11,178, 0, 0, 1,117, 16, 6, 0, 60, 0, 0,255,255, 0,104,254, 86, 4,129,
+ 6, 55, 16, 38, 2,110, 0, 0, 16, 6, 0, 92, 0, 0, 0, 0,255,255, 0, 70,255,230, 4,149, 6,114, 16, 38, 2,237, 0, 0,
+ 16, 6, 6, 66, 0, 0, 0, 0,255,255, 0, 70,255,230, 4,149, 6,114, 16, 38, 2,237, 0, 0, 16, 6, 6,122, 0, 0, 0, 0,
+255,255, 0, 70,255,230, 4,149, 6,114, 16, 38, 2,237, 0, 0, 16, 6, 6, 79, 0, 0, 0, 0,255,255, 0, 70,255,230, 4,149,
+ 6,114, 16, 38, 2,237, 0, 0, 16, 6, 6, 92, 0, 0, 0, 0,255,255, 0, 70,255,230, 4,149, 6,114, 16, 38, 2,237, 0, 0,
+ 16, 6, 6, 80, 0, 0, 0, 0,255,255, 0, 70,255,230, 4,149, 6,114, 16, 38, 2,237, 0, 0, 16, 6, 6, 93, 0, 0, 0, 0,
+255,255, 0, 70,255,230, 4,149, 7,209, 16, 38, 2,237, 0, 0, 16, 6, 6, 81, 0, 0, 0, 0,255,255, 0, 70,255,230, 4,149,
+ 7,209, 16, 38, 2,237, 0, 0, 16, 6, 6, 94, 0, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172, 6,114, 16, 38, 2,206, 0, 0,
+ 16, 7, 6, 66,254,162, 0, 0,255,255, 0, 37, 0, 0, 4,172, 6,114, 16, 38, 2,206, 0, 0, 16, 7, 6,122,254,112, 0, 0,
+255,255,254,107, 0, 0, 4,172, 6,114, 16, 38, 2,206, 0, 0, 16, 7, 6, 79,253,118, 0, 0,255,255,254,107, 0, 0, 4,172,
+ 6,114, 16, 38, 2,206, 0, 0, 16, 7, 6, 92,253,118, 0, 0,255,255,255, 26, 0, 0, 4,172, 6,114, 16, 38, 2,206, 0, 0,
+ 16, 7, 6, 80,253,243, 0, 0,255,255,255, 6, 0, 0, 4,172, 6,114, 16, 38, 2,206, 0, 0, 16, 7, 6, 93,253,243, 0, 0,
+255,255,255,193, 0, 0, 4,172, 7,209, 16, 38, 2,206, 0, 0, 16, 7, 6, 81,254,162, 0, 0,255,255,255,143, 0, 0, 4,172,
+ 7,209, 16, 38, 2,206, 0, 0, 16, 7, 6, 94,254,112, 0, 0,255,255, 0,169,255,234, 4, 40, 6,114, 16, 38, 2,241, 0, 0,
+ 16, 6, 6, 66, 0, 0, 0, 0,255,255, 0,169,255,234, 4, 40, 6,114, 16, 38, 2,241, 0, 0, 16, 6, 6,122, 0, 0, 0, 0,
+255,255, 0,169,255,234, 4, 40, 6,114, 16, 38, 2,241, 0, 0, 16, 6, 6, 79, 0, 0, 0, 0,255,255, 0,169,255,234, 4, 40,
+ 6,114, 16, 38, 2,241, 0, 0, 16, 6, 6, 92, 0, 0, 0, 0,255,255, 0,169,255,234, 4, 40, 6,114, 16, 38, 2,241, 0, 0,
+ 16, 6, 6, 80, 0, 0, 0, 0,255,255, 0,169,255,234, 4, 40, 6,114, 16, 38, 2,241, 0, 0, 16, 6, 6, 93, 0, 0, 0, 0,
+255,255,255,126, 0, 0, 4, 78, 6,114, 16, 38, 2,210, 0, 0, 16, 7, 6, 66,253,143, 0, 0,255,255,255,126, 0, 0, 4, 78,
+ 6,114, 16, 38, 2,210, 0, 0, 16, 7, 6,122,253,143, 0, 0,255,255,253,138, 0, 0, 4, 78, 6,114, 16, 38, 2,210, 0, 0,
+ 16, 7, 6, 79,252,149, 0, 0,255,255,253,138, 0, 0, 4, 78, 6,114, 16, 38, 2,210, 0, 0, 16, 7, 6, 92,252,149, 0, 0,
+255,255,254, 7, 0, 0, 4, 78, 6,114, 16, 38, 2,210, 0, 0, 16, 7, 6, 80,252,224, 0, 0,255,255,253,243, 0, 0, 4, 78,
+ 6,114, 16, 38, 2,210, 0, 0, 16, 7, 6, 93,252,224, 0, 0,255,255, 0,195,254, 86, 4, 27, 6,114, 16, 38, 2,243, 0, 0,
+ 16, 6, 6, 66, 0, 0, 0, 0,255,255, 0,195,254, 86, 4, 27, 6,114, 16, 38, 2,243, 0, 0, 16, 6, 6,122, 0, 0, 0, 0,
+255,255, 0,195,254, 86, 4, 27, 6,114, 16, 38, 2,243, 0, 0, 16, 6, 6, 79, 0, 0, 0, 0,255,255, 0,195,254, 86, 4, 27,
+ 6,114, 16, 38, 2,243, 0, 0, 16, 6, 6, 92, 0, 0, 0, 0,255,255, 0,195,254, 86, 4, 30, 6,114, 16, 38, 2,243, 0, 0,
+ 16, 6, 6, 80, 0, 0, 0, 0,255,255, 0,195,254, 86, 4, 30, 6,114, 16, 38, 2,243, 0, 0, 16, 6, 6, 93, 0, 0, 0, 0,
+255,255, 0,195,254, 86, 4, 27, 7,209, 16, 38, 2,243, 0, 0, 16, 6, 6, 81, 0, 0, 0, 0,255,255, 0,195,254, 86, 4, 27,
+ 7,209, 16, 38, 2,243, 0, 0, 16, 6, 6, 94, 0, 0, 0, 0,255,255,255, 76, 0, 0, 4, 72, 6,114, 16, 38, 2,212, 0, 0,
+ 16, 7, 6, 66,253, 93, 0, 0,255,255,255, 76, 0, 0, 4, 72, 6,114, 16, 38, 2,212, 0, 0, 16, 7, 6,122,253, 93, 0, 0,
+255,255,253, 63, 0, 0, 4, 72, 6,114, 16, 38, 2,212, 0, 0, 16, 7, 6, 79,252, 74, 0, 0,255,255,253, 63, 0, 0, 4, 72,
+ 6,114, 16, 38, 2,212, 0, 0, 16, 7, 6, 92,252, 74, 0, 0,255,255,253,163, 0, 0, 4, 72, 6,114, 16, 38, 2,212, 0, 0,
+ 16, 7, 6, 80,252,124, 0, 0,255,255,253,143, 0, 0, 4, 72, 6,114, 16, 38, 2,212, 0, 0, 16, 7, 6, 93,252,124, 0, 0,
+255,255,254, 99, 0, 0, 4, 72, 7,209, 16, 38, 2,212, 0, 0, 16, 7, 6, 81,253, 68, 0, 0,255,255,254, 99, 0, 0, 4, 72,
+ 7,209, 16, 38, 2,212, 0, 0, 16, 7, 6, 94,253, 68, 0, 0,255,255, 1, 54, 0, 0, 3,207, 6,114, 16, 38, 2,245, 0, 0,
+ 16, 6, 6, 66, 0, 0, 0, 0,255,255, 1, 54, 0, 0, 3,207, 6,114, 16, 38, 2,245, 0, 0, 16, 6, 6,122, 0, 0, 0, 0,
+255,255, 0,245, 0, 0, 3,240, 6,114, 16, 38, 2,245, 0, 0, 16, 6, 6, 79, 0, 0, 0, 0,255,255, 0,245, 0, 0, 3,240,
+ 6,114, 16, 38, 2,245, 0, 0, 16, 6, 6, 92, 0, 0, 0, 0,255,255, 1, 39, 0, 0, 4, 30, 6,114, 16, 38, 2,245, 0, 0,
+ 16, 6, 6, 80, 0, 0, 0, 0,255,255, 1, 19, 0, 0, 4, 30, 6,114, 16, 38, 2,245, 0, 0, 16, 6, 6, 93, 0, 0, 0, 0,
+255,255, 1, 31, 0, 0, 3,207, 7,209, 16, 38, 2,245, 0, 0, 16, 6, 6, 81, 0, 0, 0, 0,255,255, 1, 31, 0, 0, 3,207,
+ 7,209, 16, 38, 2,245, 0, 0, 16, 6, 6, 94, 0, 0, 0, 0,255,255,255,126, 0, 0, 4, 6, 6,114, 16, 38, 2,214, 0, 0,
+ 16, 7, 6, 66,253,143, 0, 0,255,255,255,126, 0, 0, 4, 6, 6,114, 16, 38, 2,214, 0, 0, 16, 7, 6,122,253,143, 0, 0,
+255,255,253,163, 0, 0, 4, 6, 6,114, 16, 38, 2,214, 0, 0, 16, 7, 6, 79,252,174, 0, 0,255,255,253,163, 0, 0, 4, 6,
+ 6,114, 16, 38, 2,214, 0, 0, 16, 7, 6, 92,252,174, 0, 0,255,255,254, 7, 0, 0, 4, 6, 6,114, 16, 38, 2,214, 0, 0,
+ 16, 7, 6, 80,252,224, 0, 0,255,255,253,243, 0, 0, 4, 6, 6,114, 16, 38, 2,214, 0, 0, 16, 7, 6, 93,252,224, 0, 0,
+255,255,254,174, 0, 0, 4, 6, 7,209, 16, 38, 2,214, 0, 0, 16, 7, 6, 81,253,143, 0, 0,255,255,254,174, 0, 0, 4, 6,
+ 7,209, 16, 38, 2,214, 0, 0, 16, 7, 6, 94,253,143, 0, 0,255,255, 0,137,255,227, 4, 72, 6,114, 16, 38, 2,251, 0, 0,
+ 16, 6, 6, 66, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72, 6,114, 16, 38, 2,251, 0, 0, 16, 6, 6,122, 0, 0, 0, 0,
+255,255, 0,137,255,227, 4, 72, 6,114, 16, 38, 2,251, 0, 0, 16, 6, 6, 79, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72,
+ 6,114, 16, 38, 2,251, 0, 0, 16, 6, 6, 92, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72, 6,114, 16, 38, 2,251, 0, 0,
+ 16, 6, 6, 80, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72, 6,114, 16, 38, 2,251, 0, 0, 16, 6, 6, 93, 0, 0, 0, 0,
+255,255,255,201,255,227, 4, 92, 6,114, 16, 38, 2,220, 0, 0, 16, 7, 6, 66,253,218, 0, 0,255,255,255,126,255,227, 4, 92,
+ 6,114, 16, 38, 2,220, 0, 0, 16, 7, 6,122,253,143, 0, 0,255,255,253,138,255,227, 4, 92, 6,114, 16, 38, 2,220, 0, 0,
+ 16, 7, 6, 79,252,149, 0, 0,255,255,253,138,255,227, 4, 92, 6,114, 16, 38, 2,220, 0, 0, 16, 7, 6, 92,252,149, 0, 0,
+255,255,254,157,255,227, 4, 92, 6,114, 16, 38, 2,220, 0, 0, 16, 7, 6, 80,253,118, 0, 0,255,255,254,137,255,227, 4, 92,
+ 6,114, 16, 38, 2,220, 0, 0, 16, 7, 6, 93,253,118, 0, 0,255,255, 0, 51,255,255, 4,105, 6,114, 16, 38, 3, 1, 0, 0,
+ 16, 6, 6, 66, 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105, 6,114, 16, 38, 3, 1, 0, 0, 16, 6, 6,122, 0, 0, 0, 0,
+255,255, 0, 51,255,255, 4,105, 6,114, 16, 38, 3, 1, 0, 0, 16, 6, 6, 79, 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105,
+ 6,114, 16, 38, 3, 1, 0, 0, 16, 6, 6, 92, 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105, 6,114, 16, 38, 3, 1, 0, 0,
+ 16, 6, 6, 80, 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105, 6,114, 16, 38, 3, 1, 0, 0, 16, 6, 6, 93, 0, 0, 0, 0,
+255,255, 0, 51,255,255, 4,105, 7,209, 16, 38, 3, 1, 0, 0, 16, 6, 6, 81, 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105,
+ 7,209, 16, 38, 3, 1, 0, 0, 16, 6, 6, 94, 0, 0, 0, 0,255,255,254,232, 0, 0, 4,172, 6,114, 16, 38, 2,225, 0, 0,
+ 16, 7, 6,122,252,249, 0, 0,255,255,253, 63, 0, 0, 4,172, 6,114, 16, 38, 2,225, 0, 0, 16, 7, 6, 92,252, 74, 0, 0,
+255,255,253, 68, 0, 0, 4,172, 6,114, 16, 38, 2,225, 0, 0, 16, 7, 6, 93,252, 49, 0, 0,255,255,254, 24, 0, 0, 4,172,
+ 7,209, 16, 38, 2,225, 0, 0, 16, 7, 6, 94,252,249, 0, 0,255,255, 0, 70,255,227, 4,140, 6,114, 16, 38, 3, 5, 0, 0,
+ 16, 6, 6, 66, 0, 0, 0, 0,255,255, 0, 70,255,227, 4,140, 6,114, 16, 38, 3, 5, 0, 0, 16, 6, 6,122, 0, 0, 0, 0,
+255,255, 0, 70,255,227, 4,140, 6,114, 16, 38, 3, 5, 0, 0, 16, 6, 6, 79, 0, 0, 0, 0,255,255, 0, 70,255,227, 4,140,
+ 6,114, 16, 38, 3, 5, 0, 0, 16, 6, 6, 92, 0, 0, 0, 0,255,255, 0, 70,255,227, 4,140, 6,114, 16, 38, 3, 5, 0, 0,
+ 16, 6, 6, 80, 0, 0, 0, 0,255,255, 0, 70,255,227, 4,140, 6,114, 16, 38, 3, 5, 0, 0, 16, 6, 6, 93, 0, 0, 0, 0,
+255,255, 0, 70,255,227, 4,140, 7,209, 16, 38, 3, 5, 0, 0, 16, 6, 6, 81, 0, 0, 0, 0,255,255, 0, 70,255,227, 4,140,
+ 7,209, 16, 38, 3, 5, 0, 0, 16, 6, 6, 94, 0, 0, 0, 0,255,255,255,201, 0, 0, 4,135, 6,114, 16, 38, 2,229, 0, 0,
+ 16, 7, 6, 66,253,218, 0, 0,255,255,255,101, 0, 0, 4,135, 6,114, 16, 38, 2,229, 0, 0, 16, 7, 6,122,253,118, 0, 0,
+255,255,253,138, 0, 0, 4,135, 6,114, 16, 38, 2,229, 0, 0, 16, 7, 6, 79,252,149, 0, 0,255,255,253,138, 0, 0, 4,135,
+ 6,114, 16, 38, 2,229, 0, 0, 16, 7, 6, 92,252,149, 0, 0,255,255,254,182, 0, 0, 4,135, 6,114, 16, 38, 2,229, 0, 0,
+ 16, 7, 6, 80,253,143, 0, 0,255,255,254,162, 0, 0, 4,135, 6,114, 16, 38, 2,229, 0, 0, 16, 7, 6, 93,253,143, 0, 0,
+255,255,254,249, 0, 0, 4,135, 7,209, 16, 38, 2,229, 0, 0, 16, 7, 6, 81,253,218, 0, 0,255,255,254,174, 0, 0, 4,135,
+ 7,209, 16, 38, 2,229, 0, 0, 16, 7, 6, 94,253,143, 0, 0,255,255, 0, 70,255,230, 4,149, 6,102, 16, 38, 2,237, 0, 0,
+ 16, 6, 0, 67, 0, 0, 0, 0,255,255, 0, 70,255,230, 4,149, 6,102, 16, 6, 2,232, 0, 0,255,255, 0,169,255,234, 4, 40,
+ 6,102, 16, 38, 2,241, 0, 0, 16, 6, 0, 67, 0, 0, 0, 0,255,255, 0,169,255,234, 4, 40, 6,102, 16, 6, 2,233, 0, 0,
+255,255, 0,195,254, 86, 4, 27, 6,102, 16, 38, 2,243, 0, 0, 16, 6, 0, 67, 0, 0, 0, 0,255,255, 0,195,254, 86, 4, 27,
+ 6,102, 16, 6, 2,234, 0, 0,255,255, 1, 23, 0, 0, 3,207, 6,102, 16, 38, 2,245, 0, 0, 16, 6, 0, 67, 0, 0, 0, 0,
+255,255, 1, 54, 0, 0, 3,207, 6,102, 16, 6, 2,235, 0, 0,255,255, 0,137,255,227, 4, 72, 6,102, 16, 38, 2,251, 0, 0,
+ 16, 6, 0, 67, 0, 0, 0, 0,255,255, 0,137,255,227, 4, 72, 6,102, 16, 6, 3, 8, 0, 0,255,255, 0, 51,255,255, 4,105,
+ 6,102, 16, 38, 3, 1, 0, 0, 16, 6, 0, 67, 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105, 6,102, 16, 6, 3, 9, 0, 0,
+255,255, 0, 70,255,227, 4,140, 6,102, 16, 38, 3, 5, 0, 0, 16, 6, 0, 67, 0, 0, 0, 0,255,255, 0, 70,255,227, 4,140,
+ 6,102, 16, 6, 3, 10, 0, 0,255,255, 0, 70,254, 86, 4,149, 6,114, 16, 38, 5,146, 0, 0, 16, 6, 2,193,156, 0, 0, 0,
+255,255, 0, 70,254, 86, 4,149, 6,114, 16, 38, 5,147, 0, 0, 16, 6, 2,193,156, 0, 0, 0,255,255, 0, 70,254, 86, 4,149,
+ 6,114, 16, 38, 5,148, 0, 0, 16, 6, 2,193,156, 0, 0, 0,255,255, 0, 70,254, 86, 4,149, 6,114, 16, 38, 5,149, 0, 0,
+ 16, 6, 2,193,156, 0, 0, 0,255,255, 0, 70,254, 86, 4,149, 6,114, 16, 38, 2,193,156, 0, 16, 6, 5,150, 0, 0, 0, 0,
+255,255, 0, 70,254, 86, 4,149, 6,114, 16, 38, 2,193,156, 0, 16, 6, 5,151, 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,149,
+ 7,209, 16, 38, 5,152, 0, 0, 16, 6, 2,193,156, 0, 0, 0,255,255, 0, 70,254, 86, 4,149, 7,209, 16, 38, 5,153, 0, 0,
+ 16, 6, 2,193,156, 0, 0, 0,255,255, 0, 37,254, 86, 4,172, 6,114, 16, 38, 5,154, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,
+255,255, 0, 37,254, 86, 4,172, 6,114, 16, 38, 5,155, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,255,255,254,107,254, 86, 4,172,
+ 6,114, 16, 38, 5,156, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,255,255,254,107,254, 86, 4,172, 6,114, 16, 38, 5,157, 0, 0,
+ 16, 6, 6, 65, 0, 0, 0, 0,255,255,255, 26,254, 86, 4,172, 6,114, 16, 38, 6, 65, 0, 0, 16, 6, 5,158, 0, 0, 0, 0,
+255,255,255, 6,254, 86, 4,172, 6,114, 16, 38, 6, 65, 0, 0, 16, 6, 5,159, 0, 0, 0, 0,255,255,255,193,254, 86, 4,172,
+ 7,209, 16, 38, 5,160, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,255,255,255,143,254, 86, 4,172, 7,209, 16, 38, 5,161, 0, 0,
+ 16, 6, 6, 65, 0, 0, 0, 0,255,255, 0,195,254, 86, 4, 27, 6,114, 16, 38, 5,174, 0, 0, 16, 7, 2,193,254,200, 0, 0,
+255,255, 0,195,254, 86, 4, 27, 6,114, 16, 38, 5,175, 0, 0, 16, 7, 2,193,254,200, 0, 0,255,255, 0,195,254, 86, 4, 27,
+ 6,114, 16, 38, 5,176, 0, 0, 16, 7, 2,193,254,200, 0, 0,255,255, 0,195,254, 86, 4, 27, 6,114, 16, 38, 5,177, 0, 0,
+ 16, 7, 2,193,254,200, 0, 0,255,255, 0,195,254, 86, 4, 30, 6,114, 16, 39, 2,193,254,200, 0, 0, 16, 6, 5,178, 0, 0,
+255,255, 0,195,254, 86, 4, 30, 6,114, 16, 39, 2,193,254,200, 0, 0, 16, 6, 5,179, 0, 0,255,255, 0,195,254, 86, 4, 27,
+ 7,209, 16, 38, 5,180, 0, 0, 16, 7, 2,193,254,200, 0, 0,255,255, 0,195,254, 86, 4, 27, 7,209, 16, 38, 5,181, 0, 0,
+ 16, 7, 2,193,254,200, 0, 0,255,255,255, 76,254, 86, 4, 72, 6,114, 16, 38, 5,182, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,
+255,255,255, 76,254, 86, 4, 72, 6,114, 16, 38, 5,183, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,255,255,253, 63,254, 86, 4, 72,
+ 6,114, 16, 38, 5,184, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,255,255,253, 63,254, 86, 4, 72, 6,114, 16, 38, 5,185, 0, 0,
+ 16, 6, 6, 65, 0, 0, 0, 0,255,255,253,163,254, 86, 4, 72, 6,114, 16, 38, 6, 65, 0, 0, 16, 6, 5,186, 0, 0, 0, 0,
+255,255,253,143,254, 86, 4, 72, 6,114, 16, 38, 6, 65, 0, 0, 16, 6, 5,187, 0, 0, 0, 0,255,255,254, 99,254, 86, 4, 72,
+ 7,209, 16, 38, 5,188, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,255,255,254, 99,254, 86, 4, 72, 7,209, 16, 38, 5,189, 0, 0,
+ 16, 6, 6, 65, 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,140, 6,114, 16, 38, 5,230, 0, 0, 16, 6, 2,193, 0, 0, 0, 0,
+255,255, 0, 70,254, 86, 4,140, 6,114, 16, 38, 5,231, 0, 0, 16, 6, 2,193, 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,140,
+ 6,114, 16, 38, 5,232, 0, 0, 16, 6, 2,193, 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,140, 6,114, 16, 38, 5,233, 0, 0,
+ 16, 6, 2,193, 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,140, 6,114, 16, 38, 2,193, 0, 0, 16, 6, 5,234, 0, 0, 0, 0,
+255,255, 0, 70,254, 86, 4,140, 6,114, 16, 38, 2,193, 0, 0, 16, 6, 5,235, 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,140,
+ 7,209, 16, 38, 5,236, 0, 0, 16, 6, 2,193, 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,140, 7,209, 16, 38, 5,237, 0, 0,
+ 16, 6, 2,193, 0, 0, 0, 0,255,255,255,201,254, 86, 4,135, 6,114, 16, 38, 5,238, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,
+255,255,255,101,254, 86, 4,135, 6,114, 16, 38, 5,239, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,255,255,253,138,254, 86, 4,135,
+ 6,114, 16, 38, 5,240, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,255,255,253,138,254, 86, 4,135, 6,114, 16, 38, 5,241, 0, 0,
+ 16, 6, 6, 65, 0, 0, 0, 0,255,255,254,182,254, 86, 4,135, 6,114, 16, 38, 6, 65, 0, 0, 16, 6, 5,242, 0, 0, 0, 0,
+255,255,254,162,254, 86, 4,135, 6,114, 16, 38, 6, 65, 0, 0, 16, 6, 5,243, 0, 0, 0, 0,255,255,254,249,254, 86, 4,135,
+ 7,209, 16, 38, 5,244, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,255,255,254,174,254, 86, 4,135, 7,209, 16, 38, 5,245, 0, 0,
+ 16, 6, 6, 65, 0, 0, 0, 0,255,255, 0, 70,255,230, 4,149, 6, 72, 16, 38, 2,130, 0, 0, 16, 6, 2,237, 0, 0, 0, 0,
+255,255, 0, 70,255,230, 4,149, 5,246, 16, 38, 2,128, 0, 0, 16, 6, 2,237, 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,149,
+ 6,102, 16, 38, 5,246, 0, 0, 16, 6, 2,193,156, 0, 0, 0,255,255, 0, 70,254, 86, 4,149, 4,122, 16, 38, 2,237, 0, 0,
+ 16, 6, 2,193,156, 0, 0, 0,255,255, 0, 70,254, 86, 4,149, 6,102, 16, 38, 2,232, 0, 0, 16, 6, 2,193,156, 0, 0, 0,
+255,255, 0, 70,255,230, 4,149, 6, 55, 16, 38, 2,237, 0, 0, 16, 6, 6, 67, 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,149,
+ 6, 55, 16, 38, 6, 57, 0, 0, 16, 6, 2,193,156, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7,109, 16, 38, 11,184, 0, 0,
+ 16, 6, 2,206, 0, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7, 48, 16, 38, 11,189, 0, 0, 16, 6, 2,206, 0, 0, 0, 0,
+255,255,255,135, 0, 0, 4,172, 6,102, 16, 38, 2,206, 0, 0, 16, 7, 6,110,254,112, 0, 0,255,255, 0, 25, 0, 0, 4,172,
+ 6,102, 16, 6, 2,197, 0, 0,255,255, 0, 37,254, 86, 4,172, 5,213, 16, 38, 2,206, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,
+255,255, 1,239, 4,194, 2,225, 6,114, 16, 6, 6, 66, 0, 0,255,255, 2, 30,254, 86, 2,250,255,164, 16, 6, 2,193, 0, 0,
+ 0, 1, 1,239, 4,194, 2,225, 6,114, 0, 8, 0, 0, 1, 16, 35, 53, 50, 53, 35, 53, 51, 2,225,241,142,142,241, 5,195,254,
+255,100,157,175,255,255, 1, 31, 5, 29, 3,178, 6, 55, 16, 6, 2,110, 0, 0,255,255, 1, 31, 5, 70, 3,178, 7,139, 16, 38,
+ 0,106, 0, 0, 16, 7, 6, 67, 0, 0, 1, 84,255,255, 0,195,254, 86, 4, 27, 6,102, 16, 38, 5,250, 0, 0, 16, 7, 2,193,
+254,200, 0, 0,255,255, 0,195,254, 86, 4, 27, 4,123, 16, 38, 2,243, 0, 0, 16, 7, 2,193,254,200, 0, 0,255,255, 0,195,
+254, 86, 4, 27, 6,102, 16, 38, 2,234, 0, 0, 16, 7, 2,193,254,200, 0, 0,255,255, 0,195,254, 86, 4, 27, 6, 55, 16, 38,
+ 2,243, 0, 0, 16, 6, 6, 67, 0, 0, 0, 0,255,255, 0,195,254, 86, 4, 27, 6, 55, 16, 38, 6, 72, 0, 0, 16, 7, 2,193,
+254,200, 0, 0,255,255,254,141, 0, 0, 4, 78, 6,102, 16, 38, 2,210, 0, 0, 16, 7, 6,110,253,118, 0, 0,255,255,255, 31,
+ 0, 0, 4, 78, 6,102, 16, 6, 2,199, 0, 0,255,255,254, 91, 0, 0, 4, 72, 6,102, 16, 38, 2,212, 0, 0, 16, 7, 6,110,
+253, 68, 0, 0,255,255,254,237, 0, 0, 4, 72, 6,102, 16, 6, 2,200, 0, 0,255,255, 0,137,254, 86, 4, 72, 5,213, 16, 38,
+ 2,212, 0, 0, 16, 6, 6, 65, 0, 0, 0, 0,255,255, 0,245, 4,194, 3,240, 6,114, 16, 39, 6, 66,255, 6, 0, 0, 16, 7,
+ 6,110, 0,250, 0, 0, 0, 0,255,255, 1, 39, 4,194, 4, 30, 6,114, 16, 39, 6, 66,255, 56, 0, 0, 16, 6, 6,121,100, 0,
+255,255, 1, 31, 4,194, 3,178, 7,209, 16, 38, 6, 66, 0, 0, 16, 7, 6, 67, 0, 0, 1,154,255,255, 1, 47, 0, 0, 3,207,
+ 6, 72, 16, 38, 2,130, 0, 0, 16, 6, 2,245, 0, 0, 0, 0,255,255, 1, 54, 0, 0, 3,207, 5,246, 16, 38, 2,128, 0, 0,
+ 16, 6, 2,245, 0, 0, 0, 0,255,255, 1, 23, 0, 0, 3,207, 7,216, 16, 38, 2,245, 0, 0, 16, 6, 6,108, 0, 0, 0, 0,
+255,255, 1, 54, 0, 0, 3,207, 7,216, 16, 6, 2,205, 0, 0,255,255, 1, 31, 0, 0, 3,207, 6, 55, 16, 38, 2,245, 0, 0,
+ 16, 6, 6, 67, 0, 0, 0, 0,255,255, 1, 31, 0, 0, 3,207, 7,139, 16, 38, 2,245, 0, 0, 16, 6, 6, 68, 0, 0, 0, 0,
+255,255, 0,201, 0, 0, 4, 6, 7,109, 16, 38, 11,184, 0, 0, 16, 6, 2,214, 0, 0, 0, 0,255,255, 0,201, 0, 0, 4, 6,
+ 7, 48, 16, 38, 11,189, 0, 0, 16, 6, 2,214, 0, 0, 0, 0,255,255,254,191, 0, 0, 4, 6, 6,102, 16, 38, 2,214, 0, 0,
+ 16, 7, 6,110,253,168, 0, 0,255,255,255, 31, 0, 0, 4, 6, 6,102, 16, 6, 2,201, 0, 0,255,255, 0,245, 4,194, 3,240,
+ 6,114, 16, 39, 6,122,255, 6, 0, 0, 16, 7, 6,110, 0,250, 0, 0, 0, 0,255,255, 1, 19, 4,194, 4, 30, 6,114, 16, 39,
+ 6,122,255, 36, 0, 0, 16, 6, 6,121,100, 0,255,255, 1, 31, 4,194, 3,178, 7,209, 16, 38, 6,122, 0, 0, 16, 7, 6, 67,
+ 0, 0, 1,154,255,255, 0, 51,255,255, 4,105, 6, 72, 16, 38, 2,130, 0, 0, 16, 6, 3, 1, 0, 0, 0, 0,255,255, 0, 51,
+255,255, 4,105, 5,246, 16, 38, 2,128, 0, 0, 16, 6, 3, 1, 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105, 7,216, 16, 38,
+ 3, 1, 0, 0, 16, 6, 6,108, 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105, 7,216, 16, 6, 2,236, 0, 0,255,255, 0,190,
+254, 86, 4, 84, 6,114, 16, 38, 2,253, 0, 0, 16, 6, 6, 66, 0, 0, 0, 0,255,255, 0,190,254, 86, 4, 84, 6,114, 16, 38,
+ 2,253, 0, 0, 16, 6, 6,122, 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105, 6, 55, 16, 38, 3, 1, 0, 0, 16, 6, 6, 67,
+ 0, 0, 0, 0,255,255, 0, 51,255,255, 4,105, 7,139, 16, 38, 3, 1, 0, 0, 16, 6, 6, 68, 0, 0, 0, 0,255,255, 0, 37,
+ 0, 0, 4,172, 7,109, 16, 38, 11,184, 0, 0, 16, 6, 2,225, 0, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7, 48, 16, 38,
+ 11,189, 0, 0, 16, 6, 2,225, 0, 0, 0, 0,255,255,254, 91, 0, 0, 4,172, 6,102, 16, 38, 2,225, 0, 0, 16, 7, 6,110,
+253, 68, 0, 0,255,255,254,112, 0, 0, 4,172, 6,102, 16, 6, 2,203, 0, 0,255,255,255,126, 0, 0, 4,117, 6,114, 16, 38,
+ 2,222, 0, 0, 16, 7, 6,122,253,143, 0, 0,255,255, 1, 23, 5, 70, 3,145, 7,216, 16, 38, 0,106, 0, 0, 16, 7, 6,110,
+ 0, 0, 1,114,255,255, 1, 63, 5, 70, 3,186, 7,216, 16, 6, 2,196, 0, 0,255,255, 1, 23, 4,238, 2,246, 6,102, 16, 6,
+ 0, 67, 0, 0,255,255, 0, 70,254, 86, 4,140, 6,102, 16, 38, 6, 2, 0, 0, 16, 6, 2,193, 0, 0, 0, 0,255,255, 0, 70,
+254, 86, 4,140, 4, 96, 16, 38, 3, 5, 0, 0, 16, 6, 2,193, 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,140, 6,102, 16, 38,
+ 3, 10, 0, 0, 16, 6, 2,193, 0, 0, 0, 0,255,255, 0, 70,255,227, 4,140, 6, 55, 16, 38, 3, 5, 0, 0, 16, 6, 6, 67,
+ 0, 0, 0, 0,255,255, 0, 70,254, 86, 4,140, 6, 55, 16, 38, 6,114, 0, 0, 16, 6, 2,193, 0, 0, 0, 0,255,255,254,166,
+255,227, 4, 92, 6,102, 16, 38, 2,220, 0, 0, 16, 7, 6,110,253,143, 0, 0,255,255,255,181,255,227, 4, 92, 6,102, 16, 6,
+ 2,202, 0, 0,255,255,254,166, 0, 0, 4,135, 6,102, 16, 38, 2,229, 0, 0, 16, 7, 6,110,253,143, 0, 0,255,255,255,206,
+ 0, 0, 4,135, 6,102, 16, 6, 2,204, 0, 0,255,255, 0, 74,254, 86, 4,135, 5,180, 16, 38, 2,229, 0, 0, 16, 6, 6, 65,
+ 0, 0, 0, 0,255,255, 1,219, 4,238, 3,186, 6,102, 16, 6, 0,118, 0, 0, 0, 1, 1,239, 4,194, 2,225, 6,114, 0, 8,
+ 0, 0, 1, 53, 51, 21, 35, 6, 51, 21, 34, 1,240,240,141, 1,143,241, 5,195,175,175,157,100, 0, 1, 1,100, 1,223, 3,109,
+ 2,131, 0, 3, 0, 17,182, 0,160, 2, 4, 1, 0, 4, 16,212,196, 49, 0, 16,212,236, 48, 1, 33, 21, 33, 1,100, 2, 9,253,
+247, 2,131,164,255,255, 1,100, 1,223, 3,109, 2,131, 16, 6, 6,134, 0, 0, 0, 1, 0, 0, 1,236, 4,209, 2,121, 0, 3,
+ 0, 16,182, 2,182, 0,253, 4, 1, 0, 47,198, 49, 0, 16,252,236, 48, 17, 33, 21, 33, 4,209,251, 47, 2,121,141, 0, 0, 0,
+ 0, 1, 0, 0, 1,236, 4,209, 2,121, 0, 3, 0, 16,182, 2,182, 0,253, 4, 1, 0, 47,198, 49, 0, 16,252,236, 48, 17, 33,
+ 21, 33, 4,209,251, 47, 2,121,141, 0, 0, 0, 0, 1, 0, 0, 1,236, 4,209, 2,121, 0, 3, 0, 15,181, 2,182, 0, 4, 1,
+ 0, 47,196, 49, 0, 16,212,236, 48, 17, 33, 21, 33, 4,209,251, 47, 2,121,141, 0, 1, 0, 0, 1,236, 4,209, 2,121, 0, 3,
+ 0, 15,181, 2,182, 0, 4, 1, 0, 47,196, 49, 0, 16,212,236, 48, 17, 33, 21, 33, 4,209,251, 47, 2,121,141,255,255, 0, 0,
+254, 29, 4,209,255, 93, 16, 38, 0, 66, 0, 0, 16, 7, 0, 66, 0, 0, 0,240, 0, 1, 1,207, 3,199, 3, 45, 6, 20, 0, 5,
+ 0, 24, 64, 11, 0,163, 3,181, 6, 3, 4, 0, 29, 1, 6, 16,212,252,212,204, 49, 0, 16,252,236, 48, 1, 35, 53, 19, 51, 3,
+ 2,203,252,196,154, 98, 3,199,207, 1,126,254,130, 0, 0, 0, 0, 1, 1,207, 3,199, 3, 45, 6, 20, 0, 5, 0, 24, 64, 11,
+ 3,163, 0,181, 6, 3, 4, 1, 29, 0, 6, 16,212,236,212,204, 49, 0, 16,252,236, 48, 1, 51, 21, 3, 35, 19, 2, 49,252,197,
+153, 98, 6, 20,206,254,129, 1,127, 0, 0, 0, 0, 1, 1,147,254,225, 2,242, 1, 47, 0, 5, 0, 26,178, 3,163, 0,184, 1,
+ 1,182, 6, 3, 4, 1, 29, 0, 6, 16,212,236,212,204, 49, 0, 16,252,236, 48, 1, 51, 21, 3, 35, 19, 1,246,252,197,154, 99,
+ 1, 47,207,254,129, 1,127, 0, 0, 1, 1,207, 3,199, 3, 45, 6, 20, 0, 5, 0, 0, 1, 21, 19, 35, 3, 53, 2,203, 98,153,
+197, 6, 20,206,254,129, 1,127,206, 0, 0, 0, 0, 2, 0,211, 3,199, 3,254, 6, 20, 0, 5, 0, 11, 0, 37, 64, 18, 6, 0,
+163, 9, 3,181, 12, 3, 4, 0, 29, 1, 7, 29, 6, 9, 10, 12, 16,212,204,212,236,212,252,212,204, 49, 0, 16,252, 60,236, 50,
+ 48, 1, 35, 53, 19, 51, 3, 5, 35, 53, 19, 51, 3, 3,156,252,196,154, 98,254, 53,254,199,153, 98, 3,199,207, 1,126,254,130,
+207,207, 1,126,254,130, 0, 0, 0, 2, 0,211, 3,199, 3,252, 6, 20, 0, 5, 0, 11, 0, 39, 64, 19, 9, 3,163, 6, 0,181,
+ 12, 9, 10, 6, 3, 4, 1, 29, 0, 6, 29, 7, 12, 16,212,236,212,236,212,204, 16,212,206, 49, 0, 16,252, 60,236, 50, 48, 1,
+ 51, 21, 3, 35, 19, 37, 51, 21, 3, 35, 19, 3, 0,252,197,153, 98,254, 53,252,196,154, 98, 6, 20,206,254,129, 1,127,206,206,
+254,129, 1,127, 0, 2, 0,211,254,225, 3,252, 1, 47, 0, 5, 0, 11, 0, 42,180, 9, 3,163, 6, 0,184, 1, 1, 64, 13, 12,
+ 9, 10, 6, 3, 4, 1, 29, 0, 6, 29, 7, 12, 16,212,236,212,236,212,204, 16,212,206, 49, 0, 16,252, 60,236, 50, 48, 1, 51,
+ 21, 3, 35, 19, 37, 51, 21, 3, 35, 19, 3, 0,252,197,153, 98,254, 53,252,196,154, 98, 1, 47,207,254,129, 1,127,207,207,254,
+129, 1,127, 0, 0, 2, 0,211, 3,199, 3,252, 6, 20, 0, 5, 0, 11, 0, 0, 1, 21, 19, 35, 3, 53, 33, 21, 19, 35, 3, 53,
+ 1,207, 98,153,197, 2,199, 98,154,196, 6, 20,206,254,129, 1,127,206,206,254,129, 1,127,206, 0, 1, 0,162,255, 59, 4, 47,
+ 5,213, 0, 11, 0, 39, 64, 20, 8, 4,203, 10, 2, 0,136, 6,202, 12, 3, 82, 5, 1, 81, 9, 82, 7, 0, 12, 16,212, 60,236,
+252, 60,236, 49, 0, 16,228,244,212, 60,236, 50, 48, 1, 51, 17, 33, 21, 33, 17, 35, 17, 33, 53, 33, 2, 16,177, 1,110,254,146,
+177,254,146, 1,110, 5,213,254, 92,153,251,163, 4, 93,153, 0, 0, 1, 0,162,255, 59, 4, 47, 5,213, 0, 19, 0, 60, 64, 31,
+ 18, 6,203, 0, 16, 8,203, 14, 10, 12, 4, 0, 2,202, 12,136, 20, 15, 0, 82, 17, 13, 1, 81, 9, 5, 82, 11, 7, 3, 20, 16,
+212, 60, 60,236, 50,252, 60, 60,236, 50, 49, 0, 16,228,244,196, 50, 16,212, 60,238, 50, 16,238, 50, 48, 37, 33, 17, 35, 17, 33,
+ 53, 33, 17, 33, 53, 33, 17, 51, 17, 33, 21, 33, 17, 33, 4, 47,254,146,177,254,146, 1,110,254,146, 1,110,177, 1,110,254,146,
+ 1,110,223,254, 92, 1,164,154, 2, 31,153, 1,164,254, 92,153,253,225, 0, 0, 0, 1, 1, 63, 1,209, 3,145, 4, 33, 0, 11,
+ 0, 18,183, 9,208, 3, 12, 6, 86, 0, 12, 16,212,236, 49, 0, 16,212,228, 48, 1, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38,
+ 1, 63,172,125,124,173,174,125,124,171, 2,250,124,171,172,123,124,173,171, 0, 0, 1, 1, 63, 1,129, 3,225, 4,113, 0, 2,
+ 0, 0, 1, 17, 1, 1, 63, 2,162, 1,129, 2,240,254,136, 0, 0, 3, 0, 80, 0, 0, 4,127, 1, 49, 0, 3, 0, 7, 0, 11,
+ 0, 35, 64, 17, 8, 4, 0,162, 10, 6, 2, 4, 29, 5, 8, 29, 9, 1, 29, 0, 12, 16,212,252,212,236,212,236, 49, 0, 47, 60,
+ 60,236, 50, 50, 48, 19, 51, 17, 35, 1, 51, 17, 35, 1, 51, 17, 35, 80,252,252, 3, 51,252,252,254,102,252,252, 1, 49,254,207,
+ 1, 49,254,207, 1, 49,254,207, 0, 7, 0, 0, 0, 0, 4,209, 5,152, 0, 3, 0, 15, 0, 27, 0, 39, 0, 51, 0, 63, 0, 75,
+ 0,116, 64, 14, 3, 2, 37, 31, 1, 49, 0, 61, 13,200, 19, 31,200, 49,184, 1, 2,181, 37,200, 43,145, 67, 19,184, 1, 2, 64,
+ 38, 55, 7,200, 73, 25, 3, 70, 2, 58, 52, 1, 40, 0, 28, 16, 58, 80, 70,122, 52, 80, 64, 10, 80, 22,122, 4, 80, 16, 34, 80,
+ 46,122, 16, 28, 80, 64, 40, 47,196,236,196,244,236, 16,238,246,238, 16,238,246,238, 17, 18, 57, 18, 57, 17, 18, 57, 17, 57, 49,
+ 0, 47, 60,238, 50,238, 50,246,238,254,238, 16,238, 50, 57, 18, 57, 17, 18, 57, 57, 48, 19, 39, 1, 23, 1, 20, 22, 51, 50, 54,
+ 53, 52, 38, 35, 34, 6, 7, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 19, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 52,
+ 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 52, 54, 51, 50, 22, 21, 20, 6, 35,
+ 34, 38, 72, 37, 4, 20, 39,252, 72, 95, 69, 68, 98, 99, 67, 69, 95,121,165,120,120,166,167,119,121,164, 76, 97, 69, 69, 97, 99,
+ 67, 69, 97,121,166,121,120,166,166,120,121,166, 3, 12, 97, 69, 70, 96, 98, 68, 69, 97,121,166,121,120,167,167,120,121,166, 2,
+ 55, 97, 1,159, 96,253, 74, 71, 97, 99, 69, 67, 99, 97, 69,121,165,166,120,121,168,166, 3,211, 69, 97, 97, 69, 67, 99, 97, 69,
+120,167,167,120,121,168,167,253, 34, 71, 97, 97, 71, 67, 99, 97, 69,120,166,166,120,121,168,167, 0, 7, 0, 0, 0, 0, 4,209,
+ 5,152, 0, 11, 0, 21, 0, 25, 0, 68, 0, 80, 0, 92, 0,104, 0, 0, 17, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 54, 20,
+ 22, 50, 54, 53, 52, 38, 35, 34, 3, 39, 1, 23, 1, 52, 54, 50, 23, 22, 23, 54, 55, 54, 51, 50, 23, 22, 23, 54, 55, 54, 51, 50,
+ 22, 21, 20, 6, 35, 34, 39, 38, 39, 6, 7, 6, 35, 34, 39, 38, 39, 6, 7, 6, 35, 34, 38, 55, 20, 22, 51, 50, 54, 53, 52, 38,
+ 35, 34, 6, 5, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6,166,121,120,166,166,
+120,121,166,121, 97,138, 97, 99, 67, 69,146, 37, 4, 20, 39,251,162,138,200, 69, 10, 9, 9, 10, 70,101,100, 69, 11, 8, 9, 10,
+ 70,101,100,139,139,100,101, 70, 10, 9, 8, 11, 69,100,101, 70, 10, 9, 9, 10, 70, 99,101,137,101, 79, 58, 56, 82, 82, 56, 58,
+ 79, 1,120, 81, 58, 58, 80, 82, 56, 58, 81, 1,122, 81, 58, 58, 80, 82, 56, 58, 81, 4,121,120,167,167,120,121,168,167,191,138,
+ 97, 97, 69, 67, 99,253, 24, 97, 1,159, 96,253, 74,121,165, 83, 12, 14, 14, 12, 83, 83, 12, 13, 13, 12, 83,166,120,121,168, 84,
+ 12, 13, 13, 12, 84, 84, 12, 14, 13, 13, 84,166,123, 71, 97, 99, 69, 67, 99, 97, 69, 71, 97, 97, 71, 67, 99, 97, 69, 71, 97, 97,
+ 71, 67, 99, 97, 0, 1, 1, 90, 0,141, 3, 47, 4, 35, 0, 6, 0, 26, 64, 12, 2, 4,252, 0,172, 7, 2, 3, 0,118, 5, 7,
+ 16,212,236, 50, 57, 49, 0, 16,244,236, 57, 48, 1, 21, 9, 1, 21, 1, 53, 3, 47,254,211, 1, 45,254, 43, 4, 35,191,254,244,
+254,244,191, 1,162, 82, 0, 0, 0, 1, 1,164, 0,141, 3,121, 4, 35, 0, 6, 0, 26, 64, 12, 5, 3,252, 0,172, 7, 5, 1,
+118, 3, 0, 7, 16,212, 60,236, 57, 49, 0, 16,244,236, 57, 48, 9, 1, 21, 1, 53, 9, 1, 1,164, 1,213,254, 43, 1, 45,254,
+211, 4, 35,254, 94, 82,254, 94,191, 1, 12, 1, 12, 0, 0, 0,255,255, 0,208, 0, 0, 4, 3, 5,213, 16, 39, 0, 4,254,204,
+ 0, 0, 16, 7, 0, 4, 1, 52, 0, 0, 0, 0, 0, 3, 0,244, 0, 0, 4, 16, 5,240, 0, 23, 0, 27, 0, 37, 0, 0, 1, 35,
+ 17, 6, 7, 6, 7, 53, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 15, 1, 14, 1, 21, 3, 53, 51, 21, 3, 17, 55, 54, 55, 54,
+ 53, 52, 39, 38, 2,172,190, 31, 32, 89, 98, 94, 96, 95,104,186,111,110, 34, 33, 94, 88, 69, 38,197,203, 6, 45, 62, 23, 24, 66,
+ 37, 1,145, 3,173, 8, 12, 35, 68,188, 57, 28, 28, 96, 96,161, 76, 65, 66, 92, 86, 66, 84, 61,253,197,254,254, 5, 66,254, 82,
+ 45, 59, 44, 44, 49, 89, 55, 31,255,255, 0, 0, 5,187, 4,209, 6, 11, 16, 7, 0, 66, 0, 0, 7,158, 0, 0, 0, 1, 1,207,
+254,242, 3,119, 6, 20, 0, 11, 0, 0, 1, 33, 21, 35, 17, 51, 21, 35, 17, 51, 21, 33, 1,207, 1,168,240,240,240,240,254, 88,
+ 6, 20,143,253, 69,143,253, 70,143, 0, 0, 0, 0, 1, 1, 90,254,242, 3, 2, 6, 20, 0, 11, 0, 0, 1, 17, 33, 53, 51, 17,
+ 35, 53, 51, 17, 35, 53, 3, 2,254, 88,240,240,240,240, 6, 20,248,222,143, 2,186,143, 2,187,143, 0, 0, 0,255,255, 0, 33,
+ 0, 0, 4,177, 5,241, 16, 39, 11,188,254,188, 0, 0, 16, 7, 11,188, 1, 28, 0, 0, 0, 0,255,255, 0, 33, 0, 0, 4, 3,
+ 5,241, 16, 39, 11,188,254,188, 0, 0, 16, 7, 0, 4, 1, 52, 0, 0, 0, 0,255,255, 0,208, 0, 0, 4,177, 5,241, 16, 39,
+ 0, 4,254,204, 0, 0, 16, 7, 11,188, 1, 28, 0, 0, 0, 0, 0, 3, 1, 61, 2,141, 3,149, 5,240, 0, 12, 0, 28, 0, 44,
+ 0, 0, 0, 52, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 34, 19, 34, 7, 6, 21, 20, 23, 22, 51, 50, 55, 54, 53, 52, 39, 38, 39,
+ 50, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 2, 22, 24, 23, 34, 37, 23, 24, 24, 25, 70, 36, 87, 43, 44, 44, 43,
+ 87, 88, 43, 44, 44, 43, 88,149, 76, 76, 76, 76,149,150, 74, 75, 75, 76, 4, 32, 64, 23, 22, 22, 23, 32, 33, 20, 21, 1,161, 85,
+ 85,175,174, 85, 85, 85, 85,174,175, 85, 85, 89,110,109,215,214,110,109,109,110,214,215,109,110, 0, 2, 1, 72, 2,156, 3,136,
+ 6, 3, 0, 9, 0, 13, 0, 0, 1, 33, 17, 51, 21, 33, 53, 51, 17, 35, 19, 51, 21, 35, 1,122, 1, 40,230,253,192,230,180,180,
+116,116, 5, 15,253,221, 80, 80, 1,211, 1, 68,130, 0, 0, 0, 0, 2, 1, 12, 2,156, 3,141, 5,223, 0, 10, 0, 13, 0, 53,
+179, 11, 0, 12, 2,184, 1, 9,178, 8, 4, 6,186, 1, 10, 0, 0, 1, 21, 64, 11, 14, 12, 9, 11, 7, 87, 3, 5, 1, 9, 14,
+ 16,212,212, 60,196,236, 50, 17, 57, 49, 0, 16,244,244,212, 60,236, 50, 17, 57, 48, 1, 51, 17, 51, 21, 35, 21, 35, 53, 33, 53,
+ 9, 1, 33, 2,119,162,116,116,138,254,125, 1,131,254,238, 1, 18, 5,223,253,230,111,186,186,121, 1,147,254, 99, 0, 0, 0,
+ 0, 1, 1, 63, 2,141, 3,125, 5,223, 0, 33, 0, 0, 1, 33, 21, 33, 21, 62, 1, 51, 50, 23, 22, 21, 20, 7, 6, 35, 34, 38,
+ 39, 53, 22, 23, 22, 51, 50, 54, 53, 52, 38, 35, 34, 7, 6, 7, 1,102, 1,214,254,157, 26, 54, 28,144, 84, 84, 88, 89,153, 74,
+122, 48, 52, 63, 57, 60,104,112,116,103, 51, 47, 48, 44, 5,223, 95,204, 9, 8, 77, 76,131,132, 76, 76, 18, 18,114, 26, 15, 14,
+ 98, 91, 89,100, 10, 11, 20, 0, 0, 2, 1, 73, 2,141, 3,161, 5,240, 0, 29, 0, 41, 0, 0, 1, 21, 46, 1, 35, 34, 7, 6,
+ 21, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 35, 34, 38, 53, 52, 54, 51, 50, 23, 22, 3, 34, 6, 20, 22, 51, 50, 55, 54, 52,
+ 39, 38, 3, 93, 39, 88, 48,119, 62, 61, 32, 50, 53, 68,135, 73, 74, 76, 76,137,161,150,180,171, 46, 46, 46,180, 80, 92, 92, 80,
+ 83, 42, 42, 42, 42, 5,207,104, 20, 22, 81, 81,158, 59, 28, 30, 74, 74,137,135, 75, 74,208,225,212,222, 9, 8,254,142,104,184,
+104, 50, 49,194, 49, 50, 0, 0, 0, 1, 1, 61, 2,156, 3,133, 5,223, 0, 6, 0, 0, 1, 33, 21, 1, 35, 1, 33, 1, 61, 2,
+ 72,254,180,131, 1, 67,254, 68, 5,223, 48,252,237, 2,228, 0, 0, 3, 1, 59, 2,140, 3,150, 5,238, 0, 14, 0, 46, 0, 61,
+ 0, 0, 1, 34, 7, 6, 20, 23, 22, 51, 50, 55, 54, 53, 52, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 21, 20, 7,
+ 6, 7, 22, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 55, 20, 23, 22, 51, 50, 55, 54, 53, 52, 38, 35, 34, 7, 6,
+ 2,104, 84, 45, 46, 46, 47, 82, 85, 45, 46, 46, 47,192, 80, 45, 45, 75, 75,129,130, 75, 75, 45, 45, 80, 93, 49, 50, 80, 80,142,
+141, 80, 80, 50, 49, 48, 39, 40, 75, 76, 40, 39, 78, 77, 75, 40, 39, 4, 41, 43, 42,154, 43, 43, 42, 43, 78, 77, 42, 43, 47, 18,
+ 50, 51, 71, 99, 59, 58, 58, 59, 99, 71, 51, 50, 18, 19, 56, 56, 89,113, 63, 64, 63, 64,112, 90, 56, 56,198, 67, 35, 36, 36, 35,
+ 67, 68, 72, 36, 36, 0, 0, 0, 0, 2, 1, 48, 2,141, 3,136, 5,240, 0, 15, 0, 46, 0, 0, 1, 50, 55, 54, 53, 52, 39, 38,
+ 35, 34, 7, 6, 21, 20, 23, 22, 3, 53, 30, 1, 51, 50, 55, 54, 53, 14, 1, 35, 34, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 21,
+ 20, 7, 6, 35, 34, 39, 38, 2, 83, 80, 45, 46, 46, 45, 80, 83, 43, 42, 42, 42,140, 40, 88, 47,120, 61, 61, 29,106, 68,136, 72,
+ 73, 75, 76,137,162, 75, 75, 90, 91,172, 45, 46, 46, 4, 15, 52, 52, 93, 92, 52, 52, 50, 49, 97, 98, 50, 49,254,159,104, 20, 22,
+ 81, 80,158, 56, 60, 74, 75,137,135, 74, 74,104,105,225,211,111,111, 8, 9, 0, 0, 1, 1, 28, 2,219, 3,182, 5, 44, 0, 11,
+ 0, 0, 1, 21, 33, 21, 33, 21, 35, 53, 33, 53, 33, 53, 2,158, 1, 24,254,232,106,254,232, 1, 24, 5, 44,249, 95,249,249, 95,
+249, 0, 0, 0, 0, 1, 1, 28, 3,212, 3,182, 4, 51, 0, 3, 0, 0, 1, 33, 21, 33, 1, 28, 2,154,253,102, 4, 51, 95, 0,
+ 0, 2, 1, 28, 3, 97, 3,182, 4,165, 0, 3, 0, 7, 0, 0, 1, 33, 21, 33, 17, 33, 21, 33, 1, 28, 2,154,253,102, 2,154,
+253,102, 3,193, 96, 1, 68, 95, 0, 1, 1,216, 2, 5, 2,250, 6, 2, 0, 12, 0, 0, 1, 14, 1, 21, 20, 22, 23, 35, 46, 1,
+ 52, 54, 55, 2,250, 84, 84, 84, 84,102, 94, 94, 94, 94, 6, 2,127,254,129,128,254,129,133,253,250,253,132, 0, 0, 1, 1,216,
+ 2, 5, 2,249, 6, 2, 0, 13, 0, 0, 1, 51, 30, 1, 21, 20, 6, 7, 35, 62, 1, 53, 52, 38, 1,216,101, 95, 93, 93, 95,101,
+ 84, 83, 83, 6, 2,132,253,125,126,253,132,130,254,127,128,254, 0, 1, 1, 65, 2,156, 3,144, 5, 31, 0, 19, 0, 32, 64, 6,
+ 0, 3, 14, 10, 11, 20, 16,212,220, 60, 47,204, 75, 49, 0, 64, 6, 6, 17, 12, 2, 11, 20, 16,212, 60,196,212,204, 48, 1, 17,
+ 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51, 50, 22, 3,144,116, 78, 78, 94,108,117,117, 41,113, 74,121,125,
+ 4, 23,254,133, 1,119, 89, 89,107, 92,254,158, 2,115, 97, 56, 56,134, 0, 0,255,255, 1, 61,255,241, 3,149, 3, 84, 16, 7,
+ 6,168, 0, 0,253,100, 0, 0,255,255, 1, 88, 0, 0, 3,147, 3, 67, 16, 7, 0,123, 0, 0,253,100, 0, 0,255,255, 1, 66,
+ 0, 0, 3,125, 3, 84, 16, 7, 0,116, 0, 0,253,100, 0, 0,255,255, 1, 70,255,241, 3,156, 3, 84, 16, 7, 0,117, 0, 0,
+253,100, 0, 0,255,255, 1, 12, 0, 0, 3,141, 3, 67, 16, 7, 6,170, 0, 0,253,100, 0, 0,255,255, 1, 63,255,241, 3,125,
+ 3, 67, 16, 7, 6,171, 0, 0,253,100, 0, 0,255,255, 1, 73,255,241, 3,161, 3, 84, 16, 7, 6,172, 0, 0,253,100, 0, 0,
+255,255, 1, 61, 0, 0, 3,133, 3, 67, 16, 7, 6,173, 0, 0,253,100, 0, 0,255,255, 1, 59,255,240, 3,150, 3, 82, 16, 7,
+ 6,174, 0, 0,253,100, 0, 0,255,255, 1, 48,255,241, 3,136, 3, 84, 16, 7, 6,175, 0, 0,253,100, 0, 0,255,255, 1, 28,
+ 0, 63, 3,182, 2,144, 16, 7, 6,176, 0, 0,253,100, 0, 0,255,255, 1, 28, 1, 56, 3,182, 1,151, 16, 7, 6,177, 0, 0,
+253,100, 0, 0,255,255, 1, 28, 0,197, 3,182, 2, 9, 16, 7, 6,178, 0, 0,253,100, 0, 0,255,255, 1,216,255,105, 2,250,
+ 3,102, 16, 7, 6,179, 0, 0,253,100, 0, 0,255,255, 1,216,255,105, 2,249, 3,102, 16, 7, 6,180, 0, 0,253,100, 0, 0,
+255,255, 1, 69,255,240, 3,140, 2,130, 16, 7, 4,193, 0, 0,253,100, 0, 0,255,255, 1, 49,255,240, 3,160, 2,130, 16, 7,
+ 4,199, 0, 0,253,100, 0, 0,255,255, 1, 58,255,240, 3,151, 2,130, 16, 7, 4,208, 0, 0,253,100, 0, 0,255,255, 1, 18,
+ 0, 0, 3,191, 2,115, 16, 7, 2,116, 0, 0,253,100, 0, 0,255,255, 1, 49,255,240, 3,160, 2,130, 16, 7, 4,200, 0, 0,
+253,100, 0, 0, 0, 5, 0, 0, 0, 0, 4,209, 5,213, 0, 2, 0, 6, 0, 34, 0, 38, 0, 41, 0, 0, 1, 39, 21, 19, 39, 35,
+ 21, 3, 33, 19, 51, 17, 51, 17, 51, 21, 35, 21, 51, 21, 35, 17, 33, 3, 35, 17, 35, 17, 35, 53, 51, 53, 35, 53, 51, 5, 23, 51,
+ 53, 3, 23, 53, 1,181, 79,183, 57,126,196, 1, 16,211,230,196,162,162,162,162,254,240,211,230,196,162,162,162,162, 2, 18, 57,
+126, 79, 79, 3,175,206,206,254,242,147,147, 3, 52,253,218, 2, 38,253,218,123,147,123,253,218, 2, 38,253,218, 2, 38,123,147,
+123,123,147,147,254,242,206,206, 0, 1, 0, 37,255,227, 4, 37, 5,240, 0, 51, 0,112, 64, 60, 13, 0,231, 49, 15, 38, 24,231,
+ 22, 31,179, 32,178, 28,151, 40, 22, 35, 7,179, 6,178, 10,151, 3,150, 35,153, 52, 51, 40, 39, 49, 41, 45, 24, 22, 16, 3, 19,
+ 15, 23, 14, 38, 0, 45, 25, 13, 23, 19, 14, 50, 39, 19, 30, 31, 6, 23, 45, 52, 16,212,196,196, 50,236,196, 50,196, 17, 18, 57,
+ 57, 18, 57, 57, 17, 18, 57, 17, 23, 57, 18, 57, 57, 17, 57, 57, 49, 0, 16,228,244,236,244,236, 16,198, 50,238,246,238, 16,238,
+ 50,213, 60,238, 50, 48, 19, 18, 0, 51, 50, 22, 23, 21, 46, 1, 35, 34, 6, 7, 33, 7, 33, 14, 1, 21, 20, 22, 23, 33, 7, 33,
+ 30, 1, 51, 50, 54, 55, 21, 14, 1, 35, 34, 0, 3, 35, 55, 51, 38, 39, 38, 53, 52, 55, 54, 55, 35, 55,211, 48, 1, 18,223, 84,
+147, 74, 66,159, 78,146,174, 24, 1,225, 49,254, 70, 2, 1, 1, 1, 1,105, 49,254,211, 23,174,147, 79,157, 67, 72,148, 85,226,
+254,237, 44,174, 49,117, 1, 1, 2, 2, 1, 1,166, 49, 3,180, 1, 27, 1, 33, 40, 42,207, 61, 68,208,204,108, 20, 45, 46, 15,
+ 38, 23,110,203,209, 67, 62,207, 42, 40, 1, 32, 1, 28,110, 12, 20, 45, 15, 18, 47, 19, 11,108, 0, 4, 0,106, 0, 0, 4,209,
+ 5,213, 0, 26, 0, 31, 0, 36, 0, 41, 0, 0, 19, 33, 32, 19, 51, 21, 35, 22, 7, 51, 21, 35, 6, 7, 6, 43, 1, 17, 35, 17,
+ 35, 53, 51, 53, 35, 53, 51, 55, 21, 33, 38, 35, 19, 33, 21, 51, 50, 55, 54, 39, 33, 21,197, 1,180, 1,130, 94,120, 95, 9, 8,
+ 94,114, 38, 97,126,225,234,202, 91, 91, 91, 91,202, 1,220, 77,165,253,254, 25,234,177,117, 7, 9,253,242, 5,213,254,247,116,
+ 58, 57,115,123, 70, 89,253,168, 3,114,115,115,116, 99, 99, 99,254, 67,116,231, 59, 56,115, 0, 0, 1, 0, 0,255,227, 4,209,
+ 5,240, 0, 54, 0, 0, 1, 54, 55, 54, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 4, 21, 20, 7, 51, 21, 35, 6, 15, 1,
+ 33, 21, 33, 6, 21, 20, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 36, 53, 52, 55, 35, 53, 51, 54, 55, 54, 55, 33, 53, 3, 63, 10,
+ 9, 55,166,143, 94,185, 92,105,190, 86,223, 1, 13, 21,156,233, 94,204, 39, 2, 58,252,167, 44,170,153,104,205,115,107,212,105,
+252,254,248, 18,157,217, 9, 9, 72,136,254, 69, 3,175, 7, 9, 52, 99,113,133, 60, 59,205, 39, 39,241,200, 75, 61,123, 91, 47,
+ 9,123, 57, 98,123,137, 68, 73,215, 45, 45,224,213, 78, 64,123, 11, 10, 79, 47,123, 0, 0, 0, 0, 2, 0,130,254,211, 4, 79,
+ 6, 20, 0, 33, 0, 44, 0, 0, 1, 21, 38, 39, 38, 35, 17, 50, 55, 54, 55, 21, 6, 7, 6, 7, 17, 35, 17, 38, 39, 38, 17, 53,
+ 16, 55, 54, 55, 53, 55, 21, 22, 23, 22, 1, 3, 6, 7, 6, 7, 6, 23, 22, 23, 22, 4, 79, 91, 84, 85,101,101, 85, 84, 91, 89,
+ 92, 89, 91,100,185,115,212,212,121,178,101, 93, 89, 92,254,138, 1, 91, 67,118, 15, 14, 14, 25,108, 67, 4,164,213,105, 45, 45,
+251,241, 45, 45,105,211, 72, 36, 34, 2,254,240, 1, 21, 23,117,214, 1, 57, 17, 1, 66,203,116, 23,230, 2,226, 2, 34, 35,251,
+163, 3,249, 23, 66,117,170,161,102,180,108, 67, 0, 2, 0,140,255,228, 4, 49, 5,240, 0, 23, 0, 32, 0, 0, 37, 22, 51, 50,
+ 54, 55, 21, 14, 1, 35, 32, 0, 17, 16, 0, 33, 50, 22, 23, 21, 46, 1, 34, 15, 1, 6, 7, 6, 17, 16, 23, 22, 23, 2, 1, 95,
+124,100,157, 84, 9,200,132,254,248,254,184, 1, 69, 1, 22,125,144, 61, 91,126,232,111,105, 8, 11,137,134, 12, 10,131, 55, 64,
+ 44,131, 5, 76, 1,168, 1, 93, 1,114, 1,149, 52, 30,130, 42, 58, 48, 78, 8, 14,178,254,175,254,204,190, 17, 11, 0, 0, 0,
+ 0, 1, 0, 84, 0, 0, 4, 72, 6, 20, 0, 26, 0, 0, 1, 3, 35, 19, 54, 55, 54, 53, 52, 38, 35, 34, 6, 7, 3, 35, 1, 51,
+ 3, 62, 1, 51, 50, 22, 21, 20, 6, 4, 51,135,184,135, 1, 2, 15, 93, 87,127,178, 33,123,184, 1, 47,184,116, 75,175, 98,139,
+154, 11, 2,182,253, 74, 2,183, 4, 10, 71, 39, 81, 87,186,168,253,135, 6, 20,253,164, 97, 98,145,130, 32, 94, 0, 4, 0, 10,
+ 0, 0, 4,199, 5,213, 0, 3, 0, 9, 0, 13, 0, 35, 0, 0, 0, 32, 16, 32, 19, 34, 16, 51, 50, 16, 3, 33, 21, 33, 1, 17,
+ 51, 19, 17, 52, 54, 51, 21, 34, 6, 21, 17, 35, 3, 17, 20, 6, 35, 53, 50, 54, 3,101, 1, 98,254,158,177, 50, 50, 51,228, 1,
+ 98,254,158,253, 32,245,204, 87,220, 85, 38,245,204, 87,220, 85, 38, 3, 12,253,234, 1,149,254,236, 1, 20,254, 9,148, 1, 49,
+ 4,164,251, 81, 3,126,131,174,184, 62, 59,251, 92, 4,175,252,130,131,174,184, 62, 0, 0, 0, 0, 2, 0, 0, 3,147, 4,102,
+ 5,213, 0, 7, 0, 20, 0,104, 64, 54, 15, 9, 10, 9, 14, 10, 10, 9, 17, 8, 9, 8, 16, 9, 9, 8, 66, 17, 14, 9, 3, 1,
+ 15, 18, 12, 3, 5, 1,215, 10, 8, 0,136, 21, 16, 15, 10, 9, 8, 5, 17, 13, 96, 11, 17, 96, 19, 0, 95, 2, 96, 4, 95, 6,
+ 47,252,254,236,213,238,214,238, 17, 23, 57, 49, 0, 16,244, 60, 60,236, 50,212, 60, 60,196, 17, 23, 57, 48, 75, 83, 88, 7, 16,
+ 5,201, 7, 16, 4,201, 7, 16, 4,201, 7, 16, 5,201, 89, 34, 1, 21, 35, 17, 35, 17, 35, 53, 33, 27, 1, 51, 17, 35, 17, 3,
+ 35, 3, 17, 35, 17, 1,182,162,114,162, 2,180,137,125,172,114,156, 55,166,113, 5,213, 94,254, 28, 1,228, 94,255, 0, 1, 0,
+253,190, 1,226,254,211, 1, 45,254, 30, 2, 66,255,255, 0, 74, 0, 0, 4,135, 5,180, 16, 6, 2,229, 0, 0,255,255, 0,137,
+ 0, 0, 4,201, 5,213, 16, 6, 0, 46, 0, 0,255,255, 0, 37, 0, 0, 4,172, 7,109, 16, 6, 0,135, 0, 0,255,255, 0, 27,
+254,227, 4,101, 6,123, 16, 39, 0,117, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 0,123,254,254, 0,156,255,255, 0, 27,
+254,227, 4,101, 6,140, 16, 39, 0,117, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 0,116,254,254, 0,156,255,255, 0, 27,
+254,227, 4, 90, 6,123, 16, 39, 6,171, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 0,123,254,254, 0,156,255,255, 0, 27,
+254,227, 4, 90, 6,140, 16, 39, 6,171, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 0,116,254,254, 0,156,255,255, 0, 27,
+254,227, 4, 90, 6,140, 16, 39, 6,171, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 0,117,254,254, 0,156,255,255, 0, 10,
+254,227, 4, 90, 6,123, 16, 39, 6,171, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 6,170,254,254, 0,156,255,255, 0, 27,
+254,227, 4,106, 6,123, 16, 39, 6,172, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 0,123,254,254, 0,156,255,255, 0, 27,
+254,227, 4,106, 6,123, 16, 39, 6,172, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 6,171,254,254, 0,156,255,255, 0, 27,
+254,226, 4, 95, 6,123, 16, 39, 6,174, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 0,123,254,254, 0,156,255,255, 0, 27,
+254,226, 4, 95, 6,140, 16, 39, 6,174, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 0,117,254,254, 0,156,255,255, 0, 27,
+254,226, 4, 95, 6,123, 16, 39, 6,174, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 6,171,254,254, 0,156,255,255, 0, 27,
+254,226, 4, 95, 6,123, 16, 39, 6,174, 0,201,252, 86, 16, 38, 11,182, 0, 0, 16, 7, 6,173,254,254, 0,156,255,255, 0, 27,
+ 1,248, 4, 90, 6,123, 16, 38, 11,182, 0, 0, 16, 7, 0,123,254,254, 0,156, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 9,
+ 0, 0, 19, 53, 1, 23, 7, 33, 21, 33, 23, 7, 66, 1, 35, 90,160, 3,112,252,144,160, 90, 2, 8, 82, 1, 35, 90,160,164,160,
+ 90, 0, 0, 0, 0, 1, 1, 28, 0, 0, 3,181, 4, 77, 0, 9, 0, 0, 9, 1, 7, 39, 17, 35, 17, 7, 39, 1, 2,146, 1, 34,
+ 90,160,164,160, 90, 1, 36, 4, 77,254,221, 90,160,252,144, 3,112,160, 90, 1, 35, 0, 0, 0, 0, 1, 0, 66, 0,229, 4,143,
+ 3,125, 0, 9, 0, 0, 9, 1, 39, 55, 33, 53, 33, 39, 55, 1, 4,143,254,221, 90,160,252,144, 3,112,160, 90, 1, 35, 2, 8,
+254,221, 90,160,164,160, 90,254,221, 0, 0, 0, 0, 1, 1, 28, 0, 0, 3,181, 4, 77, 0, 9, 0, 0, 33, 1, 55, 23, 17, 51,
+ 17, 55, 23, 1, 2, 64,254,220, 90,160,164,160, 90,254,222, 1, 35, 90,160, 3,112,252,144,160, 90,254,221, 0, 0, 1, 0, 66,
+ 0,229, 4,143, 3,125, 0, 15, 0, 0, 1, 33, 23, 7, 1, 53, 1, 23, 7, 33, 39, 55, 1, 21, 1, 39, 3,178,253,109,160, 90,
+254,221, 1, 35, 90,160, 2,147,160, 90, 1, 35,254,221, 90, 1,223,160, 90, 1, 35, 82, 1, 35, 90,160,160, 90,254,221, 82,254,
+221, 90, 0, 0, 0, 1, 1, 28, 0, 0, 3,181, 4, 77, 0, 15, 0, 0, 37, 55, 23, 1, 35, 1, 55, 23, 17, 7, 39, 1, 51, 1,
+ 7, 39, 2,186,160, 90,254,222, 82,254,220, 90,160,160, 90, 1, 36, 82, 1, 34, 90,160,221,160, 90,254,221, 1, 35, 90,160, 2,
+147,160, 90, 1, 35,254,221, 90,160, 0, 0, 0, 0, 1, 0,184, 0, 0, 4, 25, 3, 97, 0, 9, 0, 0, 19, 55, 33, 21, 35, 1,
+ 7, 1, 21, 35,184, 58, 1,156,227, 2,110,116,253,146,127, 3, 39, 58,127,253,146,116, 2,110,227, 0, 0, 0, 0, 1, 0,184,
+ 0, 0, 4, 25, 3, 97, 0, 9, 0, 0, 1, 17, 35, 53, 1, 39, 1, 35, 53, 33, 4, 25,127,253,146,116, 2,110,227, 1,156, 3,
+ 39,254,100,227,253,146,116, 2,110,127, 0, 0, 0, 1, 0,184, 0, 0, 4, 25, 3, 97, 0, 9, 0, 0, 41, 1, 53, 51, 1, 55,
+ 1, 53, 51, 17, 3,223,254,100,227,253,146,116, 2,110,127,127, 2,110,116,253,146,227,254,100, 0, 1, 0,184, 0, 0, 4, 25,
+ 3, 97, 0, 9, 0, 0, 55, 17, 51, 21, 1, 23, 1, 51, 21, 33,184,127, 2,110,116,253,146,227,254,100, 58, 1,156,227, 2,110,
+116,253,146,127, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 17, 0, 0, 1, 51, 21, 33, 7, 39, 55, 33, 23, 7, 1, 53, 1, 23,
+ 7, 33, 55, 23, 3,193,206,254,209,147,142, 99,254,125,160, 90,254,221, 1, 35, 90,160, 1,227,148,142, 2,131,164,250, 82,168,
+160, 90, 1, 35, 82, 1, 35, 90,160,250, 82, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 17, 0, 0, 1, 35, 53, 33, 55, 23,
+ 7, 33, 39, 55, 1, 21, 1, 39, 55, 33, 7, 39, 1, 16,206, 1, 47,147,142, 99, 1,131,160, 90, 1, 35,254,221, 90,160,254, 29,
+148,142, 1,223,164,250, 82,168,160, 90,254,221, 82,254,221, 90,160,250, 82, 0, 0, 1, 0, 89, 1,139, 4,120, 3, 97, 0, 53,
+ 0, 0, 1, 22, 23, 22, 23, 22, 51, 50, 55, 54, 55, 54, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 7, 38, 39, 38, 39,
+ 38, 35, 34, 7, 14, 1, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 47, 1, 21, 35, 17, 55, 33, 21, 1, 36, 7,102, 18, 32, 25, 33,
+ 31, 26, 24, 26, 21, 13, 17, 43, 33, 51, 45, 54, 56, 43, 50, 34, 44, 24,106, 5, 33, 17, 33, 24, 33, 28, 28, 25, 51, 10, 14, 46,
+ 30, 54, 43, 56, 53, 46, 48, 36,109,127, 58, 1,156, 2,226, 12,119, 21, 18, 15, 15, 12, 29, 22, 39, 48, 55, 41, 27, 23, 23, 28,
+ 40, 54, 59, 67, 18, 43, 22, 19, 14, 14, 12, 58, 32, 44, 58, 39, 29, 24, 24, 25, 43,128,224, 1,156, 58,127, 0, 0, 1, 0, 89,
+ 1,139, 4,120, 3, 97, 0, 53, 0, 0, 1, 33, 53, 33, 23, 17, 35, 53, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 46, 1, 39,
+ 38, 35, 34, 7, 6, 7, 6, 7, 39, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 23, 22, 23, 22, 51, 50, 55, 54, 55, 54,
+ 3,173,254,245, 1,156, 58,127,109, 36, 48, 46, 53, 56, 43, 54, 30, 46, 14, 10, 51, 25, 28, 28, 33, 24, 33, 17, 33, 5,106, 24,
+ 44, 34, 50, 43, 56, 54, 45, 51, 33, 43, 17, 13, 21, 26, 24, 26, 31, 33, 25, 32, 18,102, 2,226,127, 58,254,100,224,128, 43, 25,
+ 24, 24, 29, 39, 58, 44, 32, 58, 12, 14, 14, 19, 22, 43, 18, 67, 59, 54, 40, 28, 23, 23, 27, 41, 55, 48, 39, 22, 29, 12, 15, 15,
+ 18, 21,119, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 17, 0, 0, 1, 33, 21, 33, 23, 7, 39, 35, 23, 7, 1, 53, 1, 23,
+ 7, 51, 55, 23, 2,105, 2, 38,253,218,160, 90,250,150,160, 90,254,221, 1, 35, 90,160,150,250, 90, 2,131,164,160, 90,250,160,
+ 90, 1, 35, 82, 1, 35, 90,160,250, 90, 0, 0, 0, 1, 1, 28, 0, 0, 3,181, 4, 77, 0, 17, 0, 0, 1, 7, 39, 55, 53, 7,
+ 39, 1, 51, 1, 7, 39, 21, 23, 7, 39, 17, 35, 2, 22,160, 90,250,160, 90, 1, 36, 82, 1, 34, 90,160,250, 90,160,164, 2, 38,
+160, 90,250,150,160, 90, 1, 35,254,221, 90,160,150,250, 90,160,253,218, 0, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 17,
+ 0, 0, 1, 39, 55, 23, 51, 39, 55, 1, 21, 1, 39, 55, 35, 7, 39, 55, 33, 53, 2,104,160, 90,250,150,160, 90, 1, 35,254,221,
+ 90,160,150,250, 90,160,253,218, 2,131,160, 90,250,160, 90,254,221, 82,254,221, 90,160,250, 90,160,164, 0, 0, 0, 1, 1, 28,
+ 0, 0, 3,181, 4, 77, 0, 17, 0, 0, 1, 55, 23, 7, 21, 55, 23, 1, 35, 1, 55, 23, 53, 39, 55, 23, 17, 51, 2,186,160, 90,
+250,160, 90,254,222, 82,254,220, 90,160,250, 90,160,164, 2, 39,160, 90,250,150,160, 90,254,221, 1, 35, 90,160,150,250, 90,160,
+ 2, 38, 0, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 14, 0, 0, 1, 23, 7, 39, 33, 23, 7, 1, 53, 1, 23, 7, 33, 55,
+ 23, 3,157,242, 90,250,253,228,160, 90,254,221, 1, 35, 90,160, 2, 28,250, 90, 2, 49,242, 90,250,160, 90, 1, 35, 82, 1, 35,
+ 90,160,250, 90, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 14, 0, 0, 1, 39, 55, 23, 33, 39, 55, 1, 21, 1, 39, 55, 33, 7,
+ 39, 1, 52,242, 90,250, 2, 28,160, 90, 1, 35,254,221, 90,160,253,228,250, 90, 2, 49,242, 90,250,160, 90,254,221, 82,254,221,
+ 90,160,250, 90, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 13, 0, 0, 1, 53, 51, 17, 35, 53, 33, 23, 7, 1, 53, 1, 23, 7,
+ 3,235,164,164,253, 52,160, 90,254,221, 1, 35, 90,160, 2,131,250,253,104,250,160, 90, 1, 35, 82, 1, 35, 90,160, 0, 0, 0,
+ 0, 1, 1, 28, 0, 0, 3,181, 4, 77, 0, 13, 0, 0, 37, 17, 7, 39, 1, 51, 1, 7, 39, 17, 51, 21, 33, 53, 2, 22,160, 90,
+ 1, 36, 82, 1, 34, 90,160,250,253,104,164, 2,204,160, 90, 1, 35,254,221, 90,160,253, 52,164,164, 0, 0, 0, 0, 1, 0, 66,
+ 0,229, 4,143, 3,125, 0, 13, 0, 0, 19, 33, 39, 55, 1, 21, 1, 39, 55, 33, 21, 35, 17, 51,230, 2,204,160, 90, 1, 35,254,
+221, 90,160,253, 52,164,164, 2,131,160, 90,254,221, 82,254,221, 90,160,250, 2,152, 0, 0, 0, 0, 1, 1, 28, 0, 0, 3,181,
+ 4, 77, 0, 13, 0, 0, 1, 17, 55, 23, 1, 35, 1, 55, 23, 17, 35, 53, 33, 21, 2,186,160, 90,254,222, 82,254,220, 90,160,250,
+ 2,152, 3,169,253, 52,160, 90,254,221, 1, 35, 90,160, 2,204,164,164, 0, 0, 0, 1, 1, 28, 0, 0, 3,181, 4, 77, 0, 19,
+ 0, 0, 37, 39, 55, 23, 17, 7, 39, 1, 51, 1, 7, 39, 17, 55, 23, 7, 51, 21, 33, 53, 2, 22,250, 90,160,160, 90, 1, 36, 82,
+ 1, 34, 90,160,160, 90,250,250,253,104,164,250, 90,160, 2, 24,160, 90, 1, 35,254,221, 90,160,253,232,160, 90,250,164,164, 0,
+ 0, 1, 0, 66, 0,229, 4,143, 4, 35, 0, 40, 0, 0, 1, 50, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38, 39, 38, 35, 53,
+ 50, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 33, 23, 7, 1, 53, 1, 23, 7, 3,100, 30, 26, 23, 19, 17, 10, 10,
+ 9, 10, 18, 16, 26, 23, 25, 62, 98, 45, 42, 22, 22, 21, 20, 44, 37, 58, 48, 31,253,147,160, 90,254,221, 1, 35, 90,160, 2,131,
+ 10, 9, 18, 17, 23, 24, 25, 27, 21, 23, 18, 16, 11, 10,164, 42, 43, 40, 53, 52, 60, 56, 53, 50, 46, 38, 26, 21,160, 90, 1, 35,
+ 82, 1, 35, 90,160, 0, 0, 0, 0, 1, 0, 66, 0,229, 4,143, 4, 35, 0, 41, 0, 0, 1, 33, 39, 55, 1, 21, 1, 39, 55, 33,
+ 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 21, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22,
+ 1,109, 2, 69,160, 90, 1, 35,254,221, 90,160,253,147, 31, 48, 58, 37, 44, 20, 21, 22, 22, 42, 45, 49, 49, 62, 25, 23, 26, 16,
+ 18, 10, 9, 10, 10, 17, 19, 23, 26, 2,131,160, 90,254,221, 82,254,221, 90,160, 21, 26, 38, 46, 50, 53, 56, 60, 52, 53, 40, 43,
+ 21, 21,164, 10, 11, 16, 18, 23, 21, 27, 25, 24, 23, 17, 18, 9, 10, 0, 0, 0, 0, 2, 0, 66, 0,229, 4,143, 4, 35, 0, 36,
+ 0, 62, 0, 0, 1, 50, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 43, 1, 21, 35, 53, 33, 23, 7, 1, 53, 1, 23, 7,
+ 33, 53, 52, 55, 54, 55, 54, 55, 54, 23, 34, 7, 6, 7, 6, 7, 6, 29, 1, 51, 50, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39,
+ 38, 39, 38, 3,108, 62, 98, 45, 42, 22, 22, 21, 20, 44, 37, 58, 48, 31,151,164,254,206,160, 90,254,221, 1, 35, 90,160, 1, 50,
+ 21, 22, 41, 45, 48, 49, 57, 17, 26, 22, 18, 15, 12, 9,111, 30, 26, 23, 19, 17, 10, 10, 9, 10, 18, 16, 26, 23, 4, 35, 42, 43,
+ 40, 53, 52, 60, 56, 53, 50, 46, 38, 26, 21,213,213,160, 90, 1, 35, 82, 1, 35, 90,160,125, 59, 52, 55, 40, 43, 21, 20,163, 10,
+ 10, 17, 15, 27, 22, 26,125, 10, 9, 18, 17, 23, 24, 25, 27, 21, 23, 18, 16, 11, 10, 0, 0, 0, 0, 2, 0, 65, 0,229, 4,143,
+ 4, 35, 0, 37, 0, 63, 0, 0, 1, 22, 23, 22, 23, 22, 23, 22, 29, 1, 33, 39, 55, 1, 21, 1, 39, 55, 33, 21, 35, 53, 35, 34,
+ 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 23, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 59, 1,
+ 53, 52, 39, 38, 39, 38, 39, 38, 1,101, 57, 49, 48, 45, 41, 22, 21, 1, 50,160, 90, 1, 35,254,221, 90,160,254,206,164,151, 31,
+ 48, 58, 37, 44, 20, 21, 22, 22, 42, 45, 49, 49, 62, 25, 23, 26, 16, 18, 10, 9, 10, 10, 17, 19, 23, 26, 30,111, 9, 12, 15, 18,
+ 22, 26, 4, 35, 1, 20, 21, 43, 40, 55, 52, 59,125,160, 90,254,221, 82,254,221, 90,160,213,213, 21, 26, 38, 46, 50, 53, 56, 60,
+ 52, 53, 40, 43, 21, 21,164, 10, 11, 16, 18, 23, 21, 27, 25, 24, 23, 17, 18, 9, 10,125, 26, 22, 27, 15, 17, 10, 10, 0, 0, 0,
+ 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 88, 0, 0, 1, 51, 22, 23, 22, 23, 30, 1, 50, 54, 55, 54, 55, 54, 55, 54, 55, 54,
+ 51, 50, 23, 22, 23, 22, 23, 22, 23, 30, 1, 50, 54, 55, 54, 55, 54, 63, 1, 39, 55, 1, 21, 1, 39, 55, 35, 38, 7, 6, 7, 6,
+ 7, 6, 34, 39, 38, 39, 38, 39, 38, 39, 38, 39, 38, 34, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 34, 39, 38, 39, 38, 39, 38, 7,
+ 35, 23, 7, 1, 53, 1, 23, 1, 31, 8, 33, 24, 24, 25, 7, 16, 19, 16, 7, 7, 4, 11, 22, 23, 26, 27, 31, 33, 25, 30, 19, 22,
+ 11, 3, 7, 7, 17, 18, 17, 7, 30, 19, 23, 26, 15,160, 90, 1, 35,254,221, 90,160, 6, 12, 6, 9, 7, 27, 21, 27, 62, 27, 27,
+ 22, 25, 8, 3, 7, 7, 9, 8, 19, 8, 8, 7, 7, 3, 8, 26, 21, 28, 26, 62, 27, 24, 25, 7, 9, 6, 11, 7,160, 90,254,221,
+ 1, 35, 90, 2,131, 3, 16, 17, 34, 9, 11, 11, 9, 12, 12, 42, 33, 35, 16, 17, 17, 21, 30, 36, 39, 12, 12, 9, 11, 11, 9, 42,
+ 9, 12, 4, 3,160, 90,254,221, 82,254,221, 90,160, 1, 5, 5, 10, 37, 13, 17, 17, 18, 32, 39, 37, 12, 11, 10, 5, 6, 6, 5,
+ 10, 8, 15, 37, 39, 32, 18, 17, 17, 16, 34, 10, 5, 5, 1,160, 90, 1, 35, 82, 1, 35, 90, 0, 0, 1, 0, 66, 0,209, 4,143,
+ 3,145, 0, 23, 0, 0, 1, 33, 3, 39, 55, 35, 23, 7, 1, 53, 1, 23, 7, 33, 19, 23, 7, 51, 39, 55, 1, 21, 1, 39, 3,178,
+254,232, 60,140, 50,229,160, 90,254,221, 1, 35, 90,160, 1, 6, 60,140, 50,247,160, 90, 1, 35,254,221, 90, 1,223,254,242, 32,
+238,160, 90, 1, 35, 82, 1, 35, 90,160, 1, 14, 32,238,160, 90,254,221, 82,254,221, 90, 0, 0, 0, 1, 0,113, 0, 0, 4, 96,
+ 5,149, 0, 13, 0, 0, 37, 55, 23, 5, 39, 3, 55, 23, 19, 1, 19, 23, 3, 1, 3, 93,184, 74,254,177, 81,239,103,132,122,253,
+ 61,151,160, 90, 2,195,211,132,104,239, 13, 1, 80, 74,185, 2,212,254, 86, 3,125, 30,253,236, 1,170, 0, 0, 0, 1, 0,183,
+ 0, 0, 4, 26, 5,101, 0, 11, 0, 0, 1, 23, 7, 1, 53, 1, 23, 7, 33, 17, 35, 17, 1,148,160, 90,254,222, 1, 34, 90,160,
+ 2,134,164, 3,199,160, 90, 1, 35, 82, 1, 35, 90,160,251,149, 3,199, 0, 0, 0, 1, 0,183, 0, 0, 4, 26, 5,101, 0, 11,
+ 0, 0, 1, 33, 17, 35, 17, 33, 39, 55, 1, 21, 1, 39, 3, 60,254, 32,164, 2,132,160, 90, 1, 36,254,220, 90, 3,199,252, 57,
+ 4,107,160, 90,254,221, 82,254,221, 90, 0, 0, 0, 1, 0,183, 0, 0, 4, 26, 5,101, 0, 11, 0, 0, 1, 33, 17, 51, 17, 33,
+ 23, 7, 1, 53, 1, 23, 1,148, 1,226,164,253,122,160, 90,254,222, 1, 34, 90, 1,158, 3,199,251,149,160, 90, 1, 35, 82, 1,
+ 35, 90, 0, 0, 0, 1, 0,183, 0, 0, 4, 26, 5,101, 0, 11, 0, 0, 1, 39, 55, 1, 21, 1, 39, 55, 33, 17, 51, 17, 3, 60,
+160, 90, 1, 36,254,220, 90,160,253,124,164, 1,158,160, 90,254,221, 82,254,221, 90,160, 4,107,252, 57, 0, 0, 0, 1, 0,186,
+ 0, 0, 4, 23, 4, 82, 0, 11, 0, 0, 37, 17, 33, 53, 33, 17, 55, 23, 1, 35, 1, 55, 2,121,254, 65, 2, 99,160, 90,254,221,
+ 82,254,221, 90,221, 2,209,164,252,139,160, 90,254,221, 1, 35, 90, 0, 0, 0, 0, 1, 0, 63, 0, 0, 4,146, 3, 93, 0, 11,
+ 0, 0, 1, 33, 17, 51, 17, 33, 23, 7, 1, 53, 1, 23, 1, 28, 2,210,164,252,138,160, 90,254,222, 1, 34, 90, 1,158, 1,191,
+253,157,160, 90, 1, 35, 82, 1, 35, 90, 0, 0, 0, 1, 0, 81, 1, 88, 4,128, 3,229, 0, 41, 0, 0, 1, 55, 54, 55, 54, 55,
+ 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 23, 35, 52, 39, 38, 39, 38, 39, 38, 7, 6, 7, 6, 7, 6, 7, 6, 23, 21, 55, 23,
+ 1, 35, 1, 55, 1, 75, 1, 1, 36, 30, 60, 57, 74, 71, 84, 87, 68, 76, 55, 58, 32, 30, 1,152, 19, 19, 37, 35, 48, 40, 55, 57,
+ 41, 46, 37, 36, 20, 17, 2,160, 90,254,221, 82,254,221, 90, 2, 53, 24, 78, 83, 72, 59, 57, 30, 29, 29, 33, 54, 58, 73, 70, 84,
+ 55, 47, 48, 39, 36, 23, 19, 1, 1, 18, 20, 38, 36, 50, 40, 71, 23,160, 90,254,221, 1, 35, 90, 0, 1, 0, 81, 1, 88, 4,128,
+ 3,229, 0, 42, 0, 0, 1, 55, 23, 1, 35, 1, 55, 23, 53, 54, 39, 38, 39, 38, 39, 38, 39, 38, 7, 6, 7, 6, 7, 6, 21, 48,
+ 35, 54, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 23, 3,134,160, 90,254,221, 82,254,221, 90,160, 2, 17, 20, 36,
+ 37, 46, 41, 57, 55, 40, 48, 35, 37, 19, 19,152, 1, 30, 32, 58, 55, 76, 68, 87, 84, 71, 74, 57, 60, 30, 36, 1, 2, 53,160, 90,
+254,221, 1, 35, 90,160, 23, 71, 40, 50, 36, 38, 20, 18, 1, 1, 19, 23, 36, 39, 48, 47, 55, 84, 70, 73, 58, 54, 33, 29, 29, 30,
+ 57, 59, 72, 83, 78, 0, 0, 0, 0, 2, 0, 50, 0, 0, 4,159, 4, 26, 0, 9, 0, 13, 0, 0, 19, 55, 33, 21, 35, 1, 7, 1,
+ 21, 35, 3, 53, 33, 21,184, 58, 1,156,227, 2,110,116,253,146,127,134, 4,108, 3, 39, 58,127,253,146,116, 2,110,227, 2, 63,
+ 80, 80, 0, 0, 0, 2, 0, 66, 0, 0, 4,143, 4,214, 0, 13, 0, 27, 0, 0, 19, 1, 23, 7, 33, 21, 33, 23, 7, 1, 17, 35,
+ 17, 51, 1, 17, 51, 17, 35, 17, 1, 39, 55, 33, 53, 33, 39, 55,230, 1, 35, 90,160, 2,204,253, 52,160, 90,254,221,164,164, 3,
+ 5,164,164,254,221, 90,160,253, 52, 2,204,160, 90, 3,179, 1, 35, 90,160,164,160, 90, 1, 35,254,221, 2,152,252,159, 1, 35,
+253,104, 1, 35,254,221, 90,160,164,160, 90, 0, 0, 1, 0, 88, 0, 0, 4,121, 3,249, 0, 54, 0, 0, 1, 23, 22, 23, 22, 21,
+ 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 23, 6, 7, 6, 21, 20, 22, 23, 22, 23, 22, 50,
+ 55, 54, 55, 62, 1, 53, 52, 39, 38, 47, 1, 21, 35, 17, 55, 33, 21, 3,149, 29, 74, 37, 37, 37, 39, 72, 68, 95, 83,108,104, 88,
+ 91, 72, 74, 37, 37, 37, 37, 74,119, 52, 24, 25, 50, 50, 45, 65, 56,144, 59, 62, 49, 49, 50, 25, 30, 45, 33,127, 58, 1,156, 3,
+122, 29, 74, 90, 91,103,104, 88, 92, 72, 67, 43, 37, 37, 39, 71, 75, 89, 91,101,103, 91, 87, 77,115, 50, 61, 62, 70, 68,123, 50,
+ 44, 30, 25, 25, 27, 47, 50,123, 68, 70, 62, 72, 39, 28,227, 1,156, 58,127, 0, 0, 1, 0, 88, 0, 0, 4,121, 3,249, 0, 54,
+ 0, 0, 1, 35, 53, 33, 23, 17, 35, 53, 7, 6, 7, 6, 21, 20, 22, 23, 22, 23, 22, 50, 55, 54, 55, 62, 1, 53, 52, 39, 38, 39,
+ 55, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 1, 60,227, 1,156, 58,127,
+ 33, 45, 30, 25, 50, 49, 49, 62, 59,144, 56, 65, 45, 50, 50, 25, 24, 52,119, 74, 37, 37, 37, 37, 74, 72, 91, 88,104,108, 83, 95,
+ 68, 72, 39, 38, 38, 38, 73, 3,122,127, 58,254,100,227, 28, 39, 72, 62, 70, 68,123, 50, 47, 27, 25, 25, 30, 44, 50,123, 68, 70,
+ 62, 61, 50,115, 77, 87, 91,103,101, 91, 89, 75, 71, 39, 37, 37, 43, 67, 72, 92, 88,104,103, 91, 91, 73, 0, 0, 0, 1, 0, 66,
+ 1,223, 4,143, 3,125, 0, 6, 0, 0, 19, 53, 1, 23, 7, 33, 21, 66, 1, 35, 90,160, 3,112, 1,223,123, 1, 35, 90,160,164,
+ 0, 1, 0, 66, 0,229, 4,143, 2,131, 0, 6, 0, 0, 19, 33, 21, 33, 23, 7, 1, 66, 4, 77,252,144,160, 90,254,221, 2,131,
+164,160, 90, 1, 35, 0, 0, 0, 0, 1, 2, 22, 0, 0, 3,181, 4, 77, 0, 6, 0, 0, 1, 51, 1, 7, 39, 17, 35, 2, 22,124,
+ 1, 34, 90,160,164, 4, 77,254,221, 90,160,252,144, 0, 0, 0, 0, 1, 1, 28, 0, 0, 2,187, 4, 77, 0, 6, 0, 0, 1, 17,
+ 35, 17, 7, 39, 1, 2,186,164,160, 90, 1, 36, 4, 77,251,179, 3,112,160, 90, 1, 35, 0, 0, 0, 1, 0, 66, 1,223, 4,143,
+ 3,125, 0, 6, 0, 0, 1, 33, 53, 33, 39, 55, 1, 4,143,251,179, 3,112,160, 90, 1, 35, 1,223,164,160, 90,254,221, 0, 0,
+ 0, 1, 0, 66, 0,229, 4,143, 2,131, 0, 6, 0, 0, 1, 21, 1, 39, 55, 33, 53, 4,143,254,221, 90,160,252,144, 2,131,123,
+254,221, 90,160,164, 0, 0, 0, 0, 1, 2, 22, 0, 0, 3,181, 4, 77, 0, 6, 0, 0, 33, 17, 51, 17, 55, 23, 1, 2, 22,164,
+160, 90,254,222, 4, 77,252,144,160, 90,254,221, 0, 1, 1, 71, 0, 0, 2,229, 4, 77, 0, 6, 0, 0, 33, 35, 1, 55, 23, 17,
+ 51, 2,229,123,254,221, 90,160,164, 1, 35, 90,160, 3,112, 0, 0, 2, 0, 66, 0, 0, 4,143, 4,124, 0, 9, 0, 19, 0, 0,
+ 9, 1, 39, 55, 33, 53, 33, 39, 55, 9, 1, 53, 1, 23, 7, 33, 21, 33, 23, 7, 4,143,254,221, 90,160,252,144, 3,112,160, 90,
+ 1, 35,251,179, 1, 35, 90,160, 3,112,252,144,160, 90, 3, 7,254,221, 90,160,164,160, 90,254,221,253,202, 82, 1, 35, 90,160,
+164,160, 90, 0, 0, 2, 0, 42, 0, 0, 4,167, 4, 77, 0, 9, 0, 19, 0, 0, 33, 1, 55, 23, 17, 51, 17, 55, 23, 9, 1, 51,
+ 1, 7, 39, 17, 35, 17, 7, 39, 3, 50,254,220, 90,160,164,160, 90,254,222,253,202, 82, 1, 34, 90,160,164,160, 90, 1, 35, 90,
+160, 3,112,252,144,160, 90,254,221, 4, 77,254,221, 90,160,252,144, 3,112,160, 90, 0, 0, 0, 0, 2, 0, 66, 0, 0, 4,143,
+ 4,124, 0, 9, 0, 19, 0, 0, 1, 21, 1, 39, 55, 33, 53, 33, 39, 55, 37, 1, 23, 7, 33, 21, 33, 23, 7, 1, 4,143,254,221,
+ 90,160,252,144, 3,112,160, 90,252,214, 1, 35, 90,160, 3,112,252,144,160, 90,254,221, 1,117, 82,254,221, 90,160,164,160, 90,
+193, 1, 35, 90,160,164,160, 90, 1, 35, 0, 0, 0, 1, 0, 66, 0, 0, 4,143, 4,124, 0, 17, 0, 0, 1, 39, 53, 1, 23, 7,
+ 33, 21, 33, 23, 7, 33, 21, 33, 23, 7, 1, 53, 1, 11,201, 1, 35, 90,160, 3,112,252,144,160,160, 3,112,252,144,160, 90,254,
+221, 2, 62,201, 82, 1, 35, 90,160,164,160,160,164,160, 90, 1, 35, 82, 0, 0, 0, 1, 0, 42, 0, 0, 4,167, 4, 77, 0, 17,
+ 0, 0, 1, 55, 51, 1, 7, 39, 17, 35, 17, 7, 39, 17, 35, 17, 7, 39, 1, 51, 2,104,202, 82, 1, 34, 90,160,164,160,160,164,
+160, 90, 1, 36, 82, 3,132,201,254,221, 90,160,252,144, 3,112,160,160,252,144, 3,112,160, 90, 1, 35, 0, 0, 0, 1, 0, 66,
+ 0, 0, 4,143, 4,124, 0, 17, 0, 0, 1, 23, 21, 1, 39, 55, 33, 53, 33, 39, 55, 33, 53, 33, 39, 55, 1, 21, 3,198,201,254,
+221, 90,160,252,144, 3,112,160,160,252,144, 3,112,160, 90, 1, 35, 2, 62,201, 82,254,221, 90,160,164,160,160,164,160, 90,254,
+221, 82, 0, 0, 0, 1, 0, 42, 0, 0, 4,167, 4, 77, 0, 17, 0, 0, 37, 7, 35, 1, 55, 23, 17, 51, 17, 55, 23, 17, 51, 17,
+ 55, 23, 1, 35, 2,104,200, 82,254,220, 90,160,164,160,160,164,160, 90,254,222, 82,201,201, 1, 35, 90,160, 3,112,252,144,160,
+160, 3,112,252,144,160, 90,254,221, 0, 0, 0, 0, 2, 0, 66, 0, 65, 4,143, 4, 33, 0, 6, 0, 13, 0, 0, 1, 21, 1, 39,
+ 55, 33, 61, 2, 1, 23, 7, 33, 21, 4,143,254,221, 90,160,252,144, 1, 35, 90,160, 3,112, 1,223,123,254,221, 90,160,164,164,
+123, 1, 35, 90,160,164, 0, 0, 0, 2, 0, 66, 0, 65, 4,143, 4, 33, 0, 6, 0, 13, 0, 0, 19, 33, 21, 33, 23, 7, 9, 1,
+ 33, 53, 33, 39, 55, 1, 66, 4, 77,252,144,160, 90,254,221, 4, 77,251,179, 3,112,160, 90, 1, 35, 1,223,164,160, 90, 1, 35,
+ 1, 31,164,160, 90,254,221, 0, 0, 2, 0, 66, 0,229, 4,143, 3,125, 0, 21, 0, 26, 0, 0, 1, 33, 55, 23, 7, 51, 21, 33,
+ 7, 33, 21, 33, 7, 39, 55, 35, 23, 7, 1, 53, 1, 23, 5, 33, 7, 23, 33, 1,113, 1,163, 86, 97, 54,250,254,210, 90, 1,136,
+254, 69, 86, 96, 54,227, 78, 90,254,221, 1, 35, 90, 1, 34,254, 62, 82, 82, 1,106, 2,213,168, 59,109, 82,164, 82,166, 58,108,
+ 78, 90, 1, 35, 82, 1, 35, 90,160, 82, 82, 0, 0, 3, 0, 66, 0,229, 4,143, 3,175, 0, 4, 0, 28, 0, 33, 0, 0, 1, 33,
+ 7, 23, 51, 55, 51, 39, 55, 1, 21, 1, 39, 55, 35, 7, 39, 55, 35, 23, 7, 1, 53, 1, 23, 7, 51, 55, 23, 3, 7, 33, 55, 39,
+ 2, 33,254,254, 82, 82,223,200,154, 78, 90, 1, 35,254,221, 90, 78,227, 31,140, 27,124, 78, 90,254,221, 1, 35, 90, 78,194, 46,
+140, 57, 35, 1, 33, 82, 82, 2,131, 82, 82,246, 78, 90,254,221, 82,254,221, 90, 78,158, 32,126, 78, 90, 1, 35, 82, 1, 35, 90,
+ 78,218, 32,254,244,164, 82, 82, 0, 2, 0, 66, 0,229, 4,143, 3,125, 0, 21, 0, 26, 0, 0, 1, 33, 7, 39, 55, 35, 53, 33,
+ 55, 33, 53, 33, 55, 23, 7, 51, 39, 55, 1, 21, 1, 39, 37, 33, 55, 39, 33, 3, 96,254, 93, 86, 97, 54,250, 1, 46, 90,254,120,
+ 1,187, 86, 96, 54,227, 78, 90, 1, 35,254,221, 90,254,222, 1,194, 82, 82,254,150, 1,141,168, 59,109, 82,164, 82,166, 58,108,
+ 78, 90,254,221, 82,254,221, 90,160, 82, 82, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 14, 0, 0, 1, 7, 23, 33, 21, 33,
+ 23, 7, 1, 53, 1, 23, 7, 33, 21, 1, 31, 82, 82, 3,112,252,226, 78, 90,254,221, 1, 35, 90, 78, 3, 30, 2,131, 82, 82, 82,
+ 78, 90, 1, 35, 82, 1, 35, 90, 78, 82, 0, 0, 0, 1, 1, 28, 0, 0, 3,181, 4, 77, 0, 14, 0, 0, 1, 17, 35, 17, 7, 39,
+ 1, 51, 1, 7, 39, 17, 35, 19, 39, 2, 22, 82, 78, 90, 1, 36, 82, 1, 34, 90, 78, 82, 1, 83, 3,112,252,144, 3, 30, 78, 90,
+ 1, 35,254,221, 90, 78,252,226, 3,112, 82, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 14, 0, 0, 1, 33, 53, 33, 39, 55,
+ 1, 21, 1, 39, 55, 33, 53, 33, 55, 3,178,252,144, 3, 30, 78, 90, 1, 35,254,221, 90, 78,252,226, 3,112, 82, 2,131, 82, 78,
+ 90,254,221, 82,254,221, 90, 78, 82, 82, 0, 0, 0, 1, 1, 28, 0, 0, 3,181, 4, 77, 0, 14, 0, 0, 37, 3, 51, 17, 55, 23,
+ 1, 35, 1, 55, 23, 17, 51, 17, 23, 2,187, 1, 82, 78, 90,254,222, 82,254,220, 90, 78, 82, 82,221, 3,112,252,226, 78, 90,254,
+221, 1, 35, 90, 78, 3, 30,252,144, 82, 0, 0, 0, 2, 0, 66, 0,229, 4,143, 3,125, 0, 5, 0, 21, 0, 0, 1, 33, 7, 23,
+ 33, 55, 47, 1, 55, 1, 21, 1, 39, 55, 33, 23, 7, 1, 53, 1, 23, 7, 3,178,253,109, 82, 82, 2,147, 82,164, 78, 90, 1, 35,
+254,221, 90, 78,254, 17, 78, 90,254,221, 1, 35, 90, 78, 2,131, 82, 82, 82,164, 78, 90,254,221, 82,254,221, 90, 78, 78, 90, 1,
+ 35, 82, 1, 35, 90, 78, 0, 0, 0, 2, 1, 28, 0, 0, 3,181, 4, 77, 0, 5, 0, 21, 0, 0, 1, 39, 7, 17, 23, 55, 19, 17,
+ 55, 23, 1, 35, 1, 55, 23, 17, 7, 39, 1, 51, 1, 7, 2,187, 83, 82, 82, 83, 81, 78, 90,254,222, 82,254,220, 90, 78, 78, 90,
+ 1, 36, 82, 1, 34, 90, 3,112, 82, 82,253,109, 82, 82, 2, 65,254, 17, 78, 90,254,221, 1, 35, 90, 78, 1,239, 78, 90, 1, 35,
+254,221, 90, 0, 0, 1, 0,155,255,198, 4, 54, 3, 97, 0, 14, 0, 0, 1, 35, 21, 1, 7, 1, 21, 35, 17, 55, 33, 21, 35, 1,
+ 7, 1,142,116, 2,110, 58,253,204,127, 58, 1,156,110, 2, 51, 58, 2,226,116,253,146, 58, 2, 53,112, 1,156, 58,127,253,204,
+ 58, 0, 0, 0, 0, 1, 0,155,255,198, 4, 54, 3, 97, 0, 14, 0, 0, 9, 1, 39, 1, 35, 53, 33, 23, 17, 35, 53, 1, 39, 1,
+ 53, 3, 67,253,146, 58, 2, 51,110, 1,156, 58,127,253,204, 58, 2,110, 2,226,253,146, 58, 2, 52,127, 58,254,100,112,253,203,
+ 58, 2,110,116, 0, 1, 0,155, 0, 0, 4, 54, 3,155, 0, 14, 0, 0, 37, 1, 55, 1, 53, 51, 17, 7, 33, 53, 51, 1, 55, 1,
+ 51, 3,183,253,146, 58, 2, 52,127, 58,254,100,112,253,203, 58, 2,110,116,243, 2,110, 58,253,205,110,254,100, 58,127, 2, 52,
+ 58,253,146, 0, 0, 1, 0,155, 0, 0, 4, 54, 3,155, 0, 14, 0, 0, 37, 1, 23, 1, 51, 21, 33, 39, 17, 51, 21, 1, 23, 1,
+ 21, 1,142, 2,110, 58,253,205,110,254,100, 58,127, 2, 52, 58,253,146,127, 2,110, 58,253,204,127, 58, 1,156,112, 2, 53, 58,
+253,146,116, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 15, 0, 0, 1, 7, 1, 53, 1, 23, 33, 21, 33, 7, 33, 21, 33, 23,
+ 33, 21, 1,191, 90,254,221, 1, 35, 90, 2,208,252,222,119, 3,153,252,103,119, 3, 34, 1, 63, 90, 1, 35, 82, 1, 35, 90, 82,
+119, 82,119, 82, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 15, 0, 0, 1, 33, 53, 33, 55, 33, 53, 33, 39, 33, 53, 33, 55, 1,
+ 21, 1, 3, 18,253, 48, 3, 34,119,252,103, 3,153,119,252,222, 2,208, 90, 1, 35,254,221, 1, 63, 82,119, 82,119, 82, 90,254,
+221, 82,254,221, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 22, 0, 0, 1, 51, 23, 55, 23, 55, 23, 55, 51, 21, 7, 39, 7, 39,
+ 7, 39, 35, 23, 7, 1, 53, 1, 23, 1, 31,129, 58,151,150,150,150, 59, 33, 92,150,150,150,151, 91, 96,160, 90,254,221, 1, 35,
+ 90, 2,131, 67,173,173,173,173, 67,164,106,173,173,173,173,106,160, 90, 1, 35, 82, 1, 35, 90, 0, 1, 0, 66, 0,229, 4,143,
+ 3,125, 0, 22, 0, 0, 1, 39, 55, 1, 21, 1, 39, 55, 35, 7, 39, 7, 39, 7, 39, 53, 51, 23, 55, 23, 55, 23, 55, 3,178,160,
+ 90, 1, 35,254,221, 90,160, 96, 91,151,150,150,150, 92, 33, 59,150,150,150,151, 58, 2,131,160, 90,254,221, 82,254,221, 90,160,
+106,173,173,173,173,106,164, 67,173,173,173,173, 67, 0, 0, 0, 0, 1, 1, 28, 0, 0, 3,181, 4, 77, 0, 25, 0, 0, 37, 21,
+ 35, 53, 35, 53, 51, 53, 35, 53, 51, 53, 7, 39, 1, 51, 1, 7, 39, 21, 51, 21, 35, 21, 51, 21, 2,186,164,250,250,250,250,160,
+ 90, 1, 36, 82, 1, 34, 90,160,250,250,250,188,188,188,164,116,164,248,160, 90, 1, 35,254,221, 90,160,248,164,116,164, 0, 0,
+ 0, 1, 1, 28, 0, 0, 3,181, 4, 77, 0, 25, 0, 0, 1, 53, 51, 21, 51, 21, 35, 21, 51, 21, 35, 21, 55, 23, 1, 35, 1, 55,
+ 23, 53, 35, 53, 51, 53, 35, 53, 2, 22,164,250,250,250,250,160, 90,254,222, 82,254,220, 90,160,250,250,250, 3,144,189,189,164,
+116,164,247,160, 90,254,221, 1, 35, 90,160,247,164,116,164, 0, 0, 3, 0, 66, 0,229, 4,143, 3,125, 0, 9, 0, 13, 0, 17,
+ 0, 0, 1, 21, 33, 23, 7, 1, 53, 1, 23, 7, 5, 53, 51, 21, 51, 53, 51, 21, 2, 33,254,254,160, 90,254,221, 1, 35, 90,160,
+ 1,127,187,123,187, 2,131,164,160, 90, 1, 35, 82, 1, 35, 90,160,164,164,164,164,164, 0, 0, 0, 3, 1, 28, 0, 0, 3,181,
+ 4, 77, 0, 9, 0, 13, 0, 17, 0, 0, 1, 17, 7, 39, 1, 51, 1, 7, 39, 19, 7, 23, 35, 55, 19, 21, 35, 55, 2, 22,160, 90,
+ 1, 36, 82, 1, 34, 90,160, 1, 1, 1,165, 1,163,164, 1, 2,110, 1, 2,160, 90, 1, 35,254,221, 90,160,254,254,125,187,187,
+254,202,187,187, 0, 3, 0, 66, 0,229, 4,143, 3,125, 0, 9, 0, 13, 0, 17, 0, 0, 1, 33, 39, 55, 1, 21, 1, 39, 55, 33,
+ 43, 1, 53, 51, 5, 35, 53, 51, 2,176, 1, 2,160, 90, 1, 35,254,221, 90,160,254,254,125,187,187,254,202,187,187, 2,131,160,
+ 90,254,221, 82,254,221, 90,160,164,164,164, 0, 0, 3, 1, 28, 0, 0, 3,181, 4, 77, 0, 9, 0, 13, 0, 17, 0, 0, 1, 17,
+ 55, 23, 1, 35, 1, 55, 23, 17, 55, 39, 51, 21, 3, 39, 51, 21, 2,186,160, 90,254,222, 82,254,220, 90,160, 1, 1,164,163, 1,
+164, 1,223,254,254,160, 90,254,221, 1, 35, 90,160, 1, 2,125,187,187, 1, 54,187,187, 0, 0, 0, 1, 0, 66, 0,229, 4,143,
+ 3,125, 0, 13, 0, 0, 19, 1, 23, 7, 33, 21, 33, 23, 7, 1, 17, 35, 17, 51,230, 1, 35, 90,160, 2,204,253, 52,160, 90,254,
+221,164,164, 2, 90, 1, 35, 90,160,164,160, 90, 1, 35,254,221, 2,152, 0, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 13,
+ 0, 0, 1, 17, 51, 17, 35, 17, 1, 39, 55, 33, 53, 33, 39, 55, 3,235,164,164,254,221, 90,160,253, 52, 2,204,160, 90, 2, 90,
+ 1, 35,253,104, 1, 35,254,221, 90,160,164,160, 90, 0, 0, 0, 0, 2, 0, 25, 0,188, 4,143, 3,166, 0, 6, 0, 13, 0, 0,
+ 1, 7, 23, 53, 33, 53, 33, 19, 9, 1, 21, 33, 17, 33, 1, 63,194,194, 3, 10,252,246, 79,254,139, 1,117, 3, 1,252,255, 2,
+244,195,195, 93,204,254, 37, 1,117, 1,117,201,254,168, 0, 0, 0, 2, 0,243, 0, 0, 3,222, 4,118, 0, 6, 0, 13, 0, 0,
+ 1, 51, 17, 51, 17, 51, 39, 1, 35, 17, 33, 17, 35, 1, 1,166, 92,204, 94,196, 1,118,202,254,168,200, 1,116, 3, 80,252,246,
+ 3, 10,194,254,239,252,255, 3, 1, 1,117, 0, 0, 2, 0, 66, 0,188, 4,185, 3,166, 0, 6, 0, 13, 0, 0, 1, 21, 33, 21,
+ 33, 21, 55, 1, 53, 33, 17, 33, 53, 1, 3,146,252,246, 3, 10,194,254,240,252,254, 3, 2, 1,116, 2,244, 93,204, 93,195,254,
+139,201, 1, 88,201,254,139, 0, 0, 2, 0,243, 0, 0, 3,222, 4,118, 0, 6, 0, 13, 0, 0, 1, 35, 17, 35, 17, 35, 23, 1,
+ 51, 17, 33, 17, 51, 1, 3, 44, 94,204, 92,194,254,140,200, 1, 88,202,254,138, 1, 38, 3, 10,252,246,194, 1, 17, 3, 1,252,
+255,254,139, 0, 0, 4, 0,243, 0, 0, 3,222, 4,118, 0, 6, 0, 10, 0, 14, 0, 21, 0, 0, 1, 17, 51, 39, 7, 51, 25, 1,
+ 21, 51, 53, 37, 33, 17, 33, 25, 1, 35, 9, 1, 35, 17, 2,206, 94,196,194, 92,204,254,238, 1, 88,254,168,200, 1,116, 1,118,
+202, 1,224, 1,112,194,194,254,144,254,242,140,140, 70,254,232, 1,154, 1,103, 1,117,254,139,254,153, 0, 0, 0, 2, 0,243,
+ 0, 0, 3,222, 4,118, 0, 10, 0, 21, 0, 0, 37, 17, 51, 39, 7, 51, 17, 35, 21, 33, 53, 37, 17, 35, 9, 1, 35, 17, 51, 17,
+ 33, 17, 2,206, 94,196,194, 92,200, 2, 94,254, 36,200, 1,116, 1,118,202,202,253, 22,210, 2,126,194,194,253,130,140,140, 70,
+ 1,233, 1,117,254,139,254, 23,254,232, 1, 24, 0, 3, 0,243, 0, 0, 3,222, 4,118, 0, 11, 0, 14, 0, 25, 0, 0, 1, 35,
+ 7, 51, 17, 35, 21, 33, 53, 35, 17, 51, 47, 1, 7, 3, 17, 35, 9, 1, 35, 17, 51, 17, 33, 17, 2,224,240, 74, 92,200, 2, 94,
+202, 94,124, 72, 71,101,200, 1,116, 1,118,202,202,253, 22, 3,154, 74,253,130,140,140, 2,126,123, 71, 71,253, 77, 1,233, 1,
+117,254,139,254, 23,254,232, 1, 24, 0, 0, 0, 0, 3, 0,243, 0, 0, 3,222, 4,118, 0, 6, 0, 13, 0, 24, 0, 0, 1, 7,
+ 51, 17, 35, 21, 33, 19, 17, 33, 53, 35, 17, 51, 1, 17, 35, 9, 1, 35, 17, 51, 17, 33, 17, 2, 70,160, 92,200, 1, 12, 70, 1,
+ 12,202, 94,254,144,200, 1,116, 1,118,202,202,253, 22, 3,239,159,253,130,140, 3,169,252, 87,140, 2,126,253,200, 1,233, 1,
+117,254,139,254, 23,254,232, 1, 24, 0, 0, 0, 0, 3, 0,243, 0, 0, 3,222, 4,118, 0, 6, 0, 12, 0, 23, 0, 0, 1, 51,
+ 39, 7, 51, 17, 51, 3, 51, 39, 7, 51, 55, 7, 35, 9, 1, 35, 23, 35, 17, 33, 17, 35, 2,206, 94,196,194, 92,204, 8,102,196,
+194,100, 94,172,200, 1,116, 1,118,202,202,202,254,168,200, 2,136,194,194,253,190, 3, 10,194,194, 94,173, 1,117,254,139,200,
+253,199, 2, 57, 0, 3, 0,243, 0, 0, 3,222, 4,118, 0, 10, 0, 16, 0, 31, 0, 0, 1, 17, 35, 21, 33, 53, 35, 17, 51, 39,
+ 7, 37, 51, 39, 7, 51, 55, 3, 35, 55, 35, 9, 1, 35, 23, 35, 17, 51, 17, 33, 17, 51, 2, 2,200, 2, 94,202, 94,196,194, 1,
+ 32,102,196,194,100, 94,172,200,200,200, 1,116, 1,118,202,202,202,202,253, 22,200, 2,136,254, 74,140,140, 1,182,194,194,200,
+194,194, 94,254,139,200, 1,117,254,139,200,254,223,254,232, 1, 24, 0, 0, 0, 0, 2, 0, 66, 0,188, 4,185, 3,166, 0, 10,
+ 0, 21, 0, 0, 1, 39, 35, 17, 51, 53, 33, 21, 55, 39, 21, 1, 21, 33, 17, 33, 21, 33, 53, 9, 1, 53, 1, 21, 1,140,140, 2,
+126,194,194,253,200,254,232, 1, 24, 1,234, 1,116,254,140, 2,151,201,253,162,201, 93,195,195, 93,254,238,201, 2,234,201,201,
+254,139,254,139,201, 0, 0, 0, 0, 2, 0, 69, 0, 0, 4,140, 4, 70, 0, 9, 0, 15, 0, 0, 1, 55, 33, 21, 35, 1, 7, 1,
+ 21, 35, 1, 21, 33, 17, 35, 17, 1, 42, 58, 1,156,227, 2,110,116,253,146,127, 3, 97,252, 4, 73, 3, 39, 58,127,253,146,116,
+ 2,110,227, 2,187, 73,252, 3, 4, 70, 0, 0, 0, 2, 0, 69, 0, 0, 4,140, 4, 70, 0, 9, 0, 15, 0, 0, 37, 33, 53, 51,
+ 1, 55, 1, 53, 51, 17, 19, 17, 33, 53, 33, 17, 3,108,254,100,228,253,146,116, 2,110,126,230,251,186, 3,252,229,127, 2,110,
+116,253,146,227,254,100, 3, 38,251,187, 73, 3,252, 0, 0, 0, 0, 2, 0,243, 0, 0, 3,222, 4,118, 0, 9, 0, 19, 0, 0,
+ 1, 17, 35, 23, 55, 35, 17, 51, 39, 7, 23, 35, 9, 1, 35, 17, 51, 9, 1, 51, 2, 2, 92,194,196, 94, 94,196,194, 22,200, 1,
+116, 1,118,202,202,254,138,254,140,200, 3, 80,253,214,194,194, 2, 42,194,194, 79, 1,117,254,139,254,116,254,139, 1,117, 0,
+ 0, 3, 0, 66, 0,229, 4,143, 3,125, 0, 30, 0, 39, 0, 48, 0, 0, 1, 6, 7, 6, 35, 34, 39, 38, 39, 35, 53, 51, 54, 55,
+ 54, 51, 50, 22, 23, 22, 23, 22, 23, 51, 39, 55, 1, 21, 1, 39, 55, 37, 38, 39, 38, 35, 34, 7, 6, 7, 5, 33, 22, 23, 22, 51,
+ 50, 55, 54, 2,197, 19, 52, 82,118,120, 78, 49, 18,107,107, 19, 50, 79,119, 57,103, 39, 32, 28, 6, 4,237,160, 90, 1, 35,254,
+221, 90,160,254,153, 11, 17, 48, 71, 68, 50, 18, 11, 1, 38,254,219, 12, 15, 43, 74, 68, 53, 17, 1,223, 64, 51, 80, 79, 50, 66,
+164, 66, 52, 82, 44, 40, 32, 58, 12, 14,160, 90,254,221, 82,254,221, 90,160,164, 20, 17, 49, 49, 17, 20,164, 19, 17, 47, 48, 16,
+ 0, 2, 0, 42, 0, 0, 4,167, 4, 77, 0, 9, 0, 19, 0, 0, 33, 35, 1, 55, 23, 17, 51, 17, 55, 23, 19, 1, 7, 39, 17, 35,
+ 17, 7, 39, 1, 1,160, 82,254,220, 90,160,164,160, 90,194, 1, 34, 90,160,164,160, 90, 1, 36, 1, 35, 90,160, 3,112,252,144,
+160, 90, 3, 42,254,221, 90,160,252,144, 3,112,160, 90, 1, 35, 0, 1, 0, 66,255, 1, 4,143, 5, 97, 0, 25, 0, 0, 1, 55,
+ 33, 53, 33, 39, 55, 33, 53, 33, 39, 55, 1, 21, 7, 23, 21, 7, 23, 21, 1, 39, 55, 33, 53, 33, 3, 18,160,252,144, 3,112,160,
+160,252,144, 3,112,160, 90, 1, 35,201,201,201,201,254,221, 90,160,252,144, 3,112, 1, 63,160,164,160,160,164,160, 90,254,221,
+ 82,201,201, 82,201,201, 82,254,221, 90,160,164, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 17, 0, 0, 1, 21, 35, 53, 33, 23,
+ 7, 1, 53, 1, 23, 7, 33, 53, 51, 21, 33, 21, 3, 30,164,254,165,160, 90,254,221, 1, 35, 90,160, 1, 91,164, 1,113, 1,223,
+250,250,160, 90, 1, 35, 82, 1, 35, 90,160,250,250,164, 0, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 17, 0, 0, 1, 33,
+ 53, 33, 53, 51, 21, 33, 39, 55, 1, 21, 1, 39, 55, 33, 21, 35, 1,178,254,144, 1,112,164, 1, 92,160, 90, 1, 35,254,221, 90,
+160,254,164,164, 1,223,164,250,250,160, 90,254,221, 82,254,221, 90,160,250, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 23,
+ 0, 0, 1, 35, 23, 7, 1, 53, 1, 23, 7, 51, 53, 51, 21, 51, 39, 55, 1, 21, 1, 39, 55, 35, 21, 35, 2, 22,247,160, 90,254,
+221, 1, 35, 90,160,247,164,248,160, 90, 1, 35,254,221, 90,160,248,164, 1,223,160, 90, 1, 35, 82, 1, 35, 90,160,250,250,160,
+ 90,254,221, 82,254,221, 90,160,250, 0, 0, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 25, 0, 0, 1, 21, 35, 53, 35, 21,
+ 35, 53, 35, 23, 7, 1, 53, 1, 23, 7, 51, 53, 51, 21, 51, 53, 51, 21, 51, 21, 3,210,164,116,164,247,160, 90,254,221, 1, 35,
+ 90,160,247,164,116,164,189, 1,223,250,250,250,250,160, 90, 1, 35, 82, 1, 35, 90,160,250,250,250,250,164, 0, 0, 1, 0, 66,
+ 0,229, 4,143, 3,125, 0, 25, 0, 0, 19, 35, 53, 51, 53, 51, 21, 51, 53, 51, 21, 51, 39, 55, 1, 21, 1, 39, 55, 35, 21, 35,
+ 53, 35, 21, 35,254,188,188,164,116,164,248,160, 90, 1, 35,254,221, 90,160,248,164,116,164, 1,223,164,250,250,250,250,160, 90,
+254,221, 82,254,221, 90,160,250,250,250, 0, 0, 0, 1, 0, 66, 0,229, 4,143, 3,125, 0, 31, 0, 0, 1, 23, 7, 1, 53, 1,
+ 23, 7, 51, 53, 51, 21, 51, 53, 51, 21, 51, 39, 55, 1, 21, 1, 39, 55, 35, 21, 35, 53, 35, 21, 35, 53, 1, 31,160, 90,254,221,
+ 1, 35, 90,160,167,134, 56,134,168,160, 90, 1, 35,254,221, 90,160,168,134, 56,134, 1,223,160, 90, 1, 35, 82, 1, 35, 90,160,
+250,250,250,250,160, 90,254,221, 82,254,221, 90,160,250,250,250,250, 0, 0, 0, 0, 2, 0, 25, 0,188, 4,143, 3,166, 0, 2,
+ 0, 9, 0, 0, 1, 7, 23, 19, 33, 21, 33, 17, 9, 1, 1, 63,194,194, 79, 3, 1,252,255,254,139, 1,117, 2,244,195,195, 1,
+ 21,164,254,221, 1,117, 1,117, 0, 2, 0, 66, 0,188, 4,184, 3,166, 0, 2, 0, 9, 0, 0, 1, 17, 55, 37, 17, 9, 1, 17,
+ 33, 53, 3,146,194,254,239, 1,117,254,139,252,255, 2,244,254,122,195, 82, 1, 35,254,139,254,139, 1, 35,164, 0, 3, 0, 25,
+ 0,188, 4,184, 3,166, 0, 2, 0, 5, 0, 15, 0, 0, 1, 7, 23, 1, 17, 55, 5, 17, 9, 1, 17, 33, 17, 9, 1, 17, 1, 63,
+194,194, 2, 83,194,253, 58,254,139, 1,117, 1,181, 1,117,254,139, 2,244,195,195, 1,134,254,122,195, 82,254,221, 1,117, 1,
+117,254,221, 1, 35,254,139,254,139, 1, 35, 0, 0, 2, 0,190,255,231, 4, 23, 5, 45, 0, 29, 0, 41, 0, 58, 64, 14, 0, 39,
+ 33, 9, 27, 6, 39, 21, 6, 15, 33, 27, 15, 21,184, 1, 13, 64, 10, 42, 12, 36, 3, 0, 30, 18, 36, 24, 42, 16,212,204,220,204,
+ 57, 57, 17, 57, 49, 0, 16,228,204,220,204, 16,206, 16,206, 17, 18, 57, 17, 18, 57, 48, 1, 62, 1, 53, 52, 38, 35, 34, 6, 35,
+ 34, 38, 53, 52, 54, 51, 50, 18, 17, 16, 0, 35, 34, 38, 53, 52, 18, 51, 50, 22, 7, 52, 38, 35, 34, 2, 21, 20, 22, 51, 50, 18,
+ 3, 74, 15, 15, 73, 72, 55,144, 36, 36, 48,144,101,180,214,254,223,213,152,203,221,162,101,130, 11, 87, 79,109,141, 86, 80,109,
+141, 2,109, 87,163, 75,129,131,116, 44, 31, 62, 98,254,202,254,249,254,177,254, 70,216,163,198, 1, 1, 91,224,116,125,254,254,
+207,116,123, 1, 4, 0, 0, 0, 0, 3, 0, 73, 0, 98, 4,138, 4,163, 0, 33, 0, 48, 0, 63, 0, 0, 1, 23, 7, 22, 23, 22,
+ 21, 20, 7, 6, 7, 14, 1, 34, 39, 38, 39, 7, 39, 55, 38, 39, 38, 53, 52, 55, 54, 55, 62, 1, 50, 23, 22, 23, 6, 34, 7, 6,
+ 7, 14, 1, 21, 20, 23, 22, 23, 1, 38, 39, 23, 1, 22, 23, 22, 50, 55, 54, 55, 62, 1, 53, 52, 39, 38, 4, 38, 99,118, 45, 26,
+ 39, 39, 39, 79, 79,190,221, 95, 64, 56,118, 99,117, 45, 27, 39, 39, 39, 79, 79,190,221, 95, 65, 58,247,163, 71, 69, 58, 59, 57,
+ 28, 17, 26, 2, 40, 36, 40,175,253,216, 35, 38, 71,163, 70, 70, 58, 59, 57, 28, 16, 4,162, 99,118, 56, 64, 95,112,109, 95, 95,
+ 79, 78, 80, 40, 26, 45,118, 99,117, 58, 65, 95,109,112, 95, 95, 79, 79, 80, 40, 28, 45, 28, 30, 30, 57, 59,140, 83, 80, 70, 40,
+ 36, 2, 40, 26, 17,142,253,216, 25, 16, 30, 30, 30, 57, 59,140, 80, 83, 70, 39, 0, 2,255,250, 0, 0, 4,217, 5,143, 0, 3,
+ 0, 6, 0, 79, 64, 42, 4,105, 5, 4, 2, 3, 2, 6,105, 3, 3, 2, 5,105, 0, 1, 0, 4,105, 6, 4, 1, 1, 0, 66, 4,
+ 1, 5,249, 1,251, 0, 6, 5, 4, 2, 1, 5, 7, 3, 0, 7, 16,212,204, 17, 23, 57, 49, 0, 47,228,236, 17, 57, 48, 75, 83,
+ 88, 7, 16, 8,237, 7, 16, 5,237, 7, 16, 5,237, 7, 16, 8,237, 89, 34, 35, 1, 51, 9, 2, 33, 6, 2, 6,209, 2, 8,253,
+143,254,144, 2,225, 5,143,250,113, 4,195,251,233, 0, 0, 0, 0, 2,255,250, 0, 0, 4,217, 5,143, 0, 3, 0, 6, 0, 0,
+ 3, 33, 1, 35, 55, 1, 33, 6, 4,223,253,248,209,104, 1,113,253, 31, 5,143,250,113,204, 4, 23, 0, 0, 0, 0, 1, 0,129,
+ 0, 0, 4, 80, 5,184, 0, 26, 0, 0, 1, 22, 23, 30, 1, 51, 33, 21, 33, 34, 38, 2, 16, 18, 54, 51, 33, 21, 33, 34, 7, 6,
+ 7, 6, 7, 33, 21, 1, 48, 8, 34, 44,152, 90, 1,216,254, 40,136,232,134,134,232,136, 1,216,254, 40, 92, 74, 78, 42, 34, 8,
+ 3, 30, 2,135,102, 95,130,150,170,196, 1, 81, 1,142, 1, 81,196,170, 75, 77,128, 95,102,170, 0, 3, 0,129,255, 79, 4, 80,
+ 6,105, 0, 28, 0, 37, 0, 43, 0, 0, 37, 22, 51, 33, 21, 33, 34, 39, 7, 39, 55, 38, 39, 38, 16, 18, 54, 59, 1, 55, 23, 7,
+ 51, 21, 35, 3, 33, 21, 33, 19, 35, 34, 7, 6, 7, 6, 7, 33, 7, 35, 22, 23, 22, 23, 2, 76, 21, 23, 1,216,254, 40, 48, 44,
+ 58,163, 67,121, 69, 66,134,232,136,170, 54,163, 39,124,176,144, 1, 62,254,142, 18,118, 92, 74, 75, 45, 34, 8, 1, 46, 52,250,
+ 8, 34, 36, 58,174, 4,170, 12,189, 49,221, 99,172,169, 1,142, 1, 81,196,177, 50,127,170,254, 35,170, 2,135, 75, 75,130, 95,
+102,170,102, 95,108, 70, 0, 0, 0, 1, 0,130, 0,165, 4, 79, 4, 93, 0, 23, 0, 66, 0,176, 8, 47,176, 9, 51,176, 10, 51,
+177, 5, 4,237,177, 6, 4,237,177, 7, 4,237,176, 1,176, 5, 16,222,176, 2, 50,177, 0, 4,237,177, 23, 4,237,176, 18,176,
+ 0, 16,222,176, 19, 50,176, 20, 50,177, 15, 4,237,177, 16, 4,237,177, 17, 4,237, 1, 48, 49, 1, 21, 33, 22, 23, 22, 51, 33,
+ 21, 33, 34, 46, 1, 16, 62, 1, 51, 33, 21, 33, 34, 7, 6, 7, 4, 78,252,237, 22, 61, 99,133, 1,216,254, 40,136,230,134,134,
+230,136, 1,216,254, 40,133, 99, 61, 22, 2,214,170, 73, 57, 91,170,127,220, 1, 2,220,127,170, 91, 57, 73, 0, 0, 1, 0,129,
+ 0, 0, 4, 80, 5,184, 0, 26, 0, 0, 1, 38, 39, 46, 1, 35, 33, 53, 33, 50, 22, 18, 16, 2, 6, 35, 33, 53, 33, 50, 55, 54,
+ 55, 54, 55, 33, 53, 3,160, 8, 32, 44,152, 90,254, 40, 1,216,136,232,134,134,232,136,254, 40, 1,216, 92, 74, 76, 44, 32, 8,
+252,226, 3, 49,102, 95,130,150,170,196,254,175,254,114,254,175,196,170, 75, 77,128, 95,102,170, 0, 3, 0,129,255, 79, 4, 80,
+ 6,105, 0, 28, 0, 37, 0, 43, 0, 0, 1, 38, 35, 33, 53, 33, 50, 23, 55, 23, 7, 22, 23, 22, 16, 2, 6, 43, 1, 7, 39, 55,
+ 35, 53, 51, 19, 33, 53, 33, 3, 51, 50, 55, 54, 55, 54, 55, 33, 55, 51, 38, 39, 38, 39, 2,133, 21, 22,254, 40, 1,216, 47, 45,
+ 57,163, 67,121, 68, 68,134,232,136,171, 54,163, 39,123,174,146,254,192, 1,114, 18,120, 92, 74, 74, 46, 32, 8,254,211, 52,249,
+ 8, 32, 37, 58, 5, 10, 4,170, 12,189, 49,221, 99,172,169,254,114,254,175,196,177, 50,127,170, 1,221,170,253,121, 75, 75,130,
+ 95,102,170,102, 95,108, 70, 0, 0, 1, 0,130, 0,165, 4, 79, 4, 93, 0, 23, 0, 0, 19, 53, 33, 38, 39, 38, 35, 33, 53, 33,
+ 50, 30, 1, 16, 14, 1, 35, 33, 53, 33, 50, 55, 54, 55,131, 3, 19, 22, 62, 98,134,254, 40, 1,216,136,230,134,134,230,136,254,
+ 40, 1,216,134, 98, 62, 22, 2, 44,170, 73, 57, 91,170,127,220,254,254,220,127,170, 91, 57, 73, 0, 1, 0,152,254, 76, 4, 57,
+ 5,238, 0, 7, 0, 31,185, 0, 5, 1, 15, 64, 11, 1, 3, 0, 8, 4,128, 2, 6,128, 0, 8, 16,212,236,212,236, 49, 0, 16,
+196, 50,212,236, 48, 19, 17, 33, 17, 35, 17, 33, 17,152, 3,161,155,253,149,254, 76, 7,162,248, 94, 7, 30,248,226, 0, 0, 0,
+ 0, 1, 0,143,254, 76, 4, 61, 5,238, 0, 11, 0, 55,180, 11, 5, 12, 9, 0,191, 1, 15, 0, 2, 0, 9, 1, 15, 0, 7, 1,
+ 14, 0, 2, 1, 16, 64, 11, 12, 11, 10, 8, 5, 0, 5, 1, 6, 3, 12, 16,212, 60,196, 23, 57, 49, 0, 16,228,244,236, 16,238,
+ 17, 18, 57, 57, 48, 1, 33, 21, 33, 53, 9, 1, 53, 33, 21, 33, 1, 1, 76, 2,241,252, 82, 2, 37,253,219, 3,154,253, 35, 2,
+ 10,254,213,137, 92, 3,151, 3, 80, 95,140,252,221, 0, 0, 0, 0, 1, 0, 88, 2, 45, 4,121, 2,215, 0, 3, 0, 17,182, 0,
+160, 2, 4, 1, 0, 4, 16,212,196, 49, 0, 16,212,236, 48, 19, 33, 21, 33, 88, 4, 33,251,223, 2,215,170, 0, 0, 2, 0, 88,
+ 0, 0, 4,121, 4,147, 0, 3, 0, 15, 0, 0, 1, 33, 53, 33, 1, 17, 33, 53, 33, 17, 51, 17, 33, 21, 33, 17, 4,121,251,223,
+ 4, 33,253,155,254, 68, 1,188,168, 1,189,254, 67, 3,233,170,251,109, 1, 73,170, 1, 76,254,180,170,254,183, 0, 1, 0,102,
+255, 66, 4, 55, 5,213, 0, 3, 0, 24, 64, 11, 2, 0,136, 4, 1, 30, 0, 2, 30, 3, 4, 16,212,236,212,236, 49, 0, 16,244,
+196, 48, 1, 51, 1, 35, 3,121,190,252,238,191, 5,213,249,109,255,255, 0,166, 0,175, 4, 43, 4, 85, 16, 7, 0, 13, 0, 0,
+254,101, 0, 0,255,255, 1, 43, 1, 71, 3,166, 3,194, 16, 7, 0,114, 0, 0,253,210, 0, 0,255,255, 1, 63, 1,154, 3,145,
+ 3,234, 16, 6, 6,151, 0,201, 0, 1, 0, 59,255,217, 4,160, 6,160, 0, 10, 0, 47, 64, 26, 10, 3, 2, 1, 0, 5, 11, 5,
+ 4, 8, 6, 11, 10, 9, 8, 7, 4, 3, 2, 7, 5, 0, 11, 5, 1, 11, 16,212,196, 18, 57, 17, 23, 57, 49, 0, 16,212,196,192,
+192, 18, 23, 57, 48, 19, 39, 37, 19, 1, 51, 21, 35, 1, 35, 3,100, 41, 1, 35,219, 1,211,148, 47,254, 6,127,246, 2,221,125,
+ 98,253, 37, 5,191,131,249,188, 3, 57, 0, 0, 0, 2, 0,186, 0,250, 4, 23, 3,240, 0, 11, 0, 37, 0, 0, 1, 46, 1, 35,
+ 34, 6, 21, 20, 22, 51, 50, 54, 1, 34, 38, 39, 14, 1, 35, 34, 38, 53, 52, 54, 51, 50, 22, 23, 62, 1, 51, 21, 34, 6, 7, 30,
+ 1, 51, 2,170, 56, 92, 60, 72, 90, 82, 68, 68,106, 1,154, 80,128, 78, 66,132, 84,126,166,158,132, 94,136, 56, 46,148, 90, 56,
+104, 46, 56, 92, 58, 2,123,134, 99,133,106,109,129,118,254,253,100,131,124,107,214,165,173,206,115,129,117,127,140,117,124,136,
+100, 0, 0, 0, 0, 3, 0, 41, 0,250, 4,168, 3,240, 0, 11, 0, 23, 0, 47, 0, 55, 64, 28, 36, 24, 9, 21, 3,225, 39, 33,
+226, 15, 9,225, 45, 27,223, 48, 12, 0, 36, 24, 18, 6,100, 30, 18,100, 42, 48, 16,212,236,212,236, 17, 57, 57, 57, 57, 49, 0,
+ 16,252, 60,236, 50,252, 60,236, 50, 17, 57, 57, 48, 1, 30, 1, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 46, 1, 35, 34, 6, 21,
+ 20, 22, 51, 50, 54, 19, 62, 1, 51, 50, 22, 21, 20, 6, 35, 34, 38, 39, 14, 1, 35, 34, 38, 53, 52, 54, 51, 50, 22, 2,182, 57,
+ 91, 61, 71, 91, 84, 70, 66,105,203, 56, 92, 61, 71, 91, 83, 68, 67,106,126, 47,147, 91,119,172,163,126, 83,128, 78, 65,132, 85,
+125,166,157,132, 94,136, 2,115,136,100,134,108,107,128,117,116,134, 99,133,106,109,129,118, 0,255,117,127,219,160,167,212,100,
+131,124,107,214,165,173,206,115, 0, 1, 0,125, 1, 31, 4, 84, 4,245, 0, 5, 0, 0, 1, 33, 17, 51, 17, 33, 4, 84,252, 42,
+170, 3, 44, 1, 31, 3,214,252,212, 0, 0, 0, 0, 1, 0,125, 1, 31, 4, 84, 4,245, 0, 5, 0, 0, 1, 33, 1, 51, 1, 33,
+ 4, 84,252, 42, 3, 24,170,253,112, 2,164, 1, 31, 3,214,252,212, 0, 0, 0, 0, 1, 0,164, 0, 0, 4, 44, 4,162, 0, 6,
+ 0, 0, 51, 1, 51, 1, 35, 9, 1,164, 1, 78,237, 1, 77,191,254,251,254,251, 4,162,251, 94, 3,172,252, 84, 0, 1, 0,164,
+ 0, 0, 4, 44, 4,162, 0, 6, 0, 0, 19, 51, 9, 1, 51, 1, 35,164,191, 1, 5, 1, 5,191,254,179,237, 4,162,252, 84, 3,
+172,251, 94, 0, 0, 1, 0,164, 0, 0, 4, 44, 4,162, 0, 36, 0, 0, 19, 52, 55, 54, 55, 54, 55, 54, 51, 50, 22, 23, 22, 23,
+ 22, 21, 17, 35, 17, 52, 39, 38, 39, 38, 39, 38, 35, 34, 7, 6, 7, 6, 7, 6, 21, 17, 35,164, 25, 26, 59, 57, 95, 85,105,106,
+170, 66, 57, 29, 24,172, 12, 10, 7, 29, 75, 71, 76, 86, 60, 83, 21, 13, 4, 12,173, 2, 68,230, 98,103, 58, 56, 32, 29, 58, 59,
+ 51,108, 92,238,253,188, 2,162, 93, 65, 57, 14, 57, 32, 30, 30, 41, 48, 33, 38,112, 48,253, 96, 0, 1, 0,164, 0, 0, 4, 44,
+ 4,162, 0, 36, 0, 0, 19, 17, 51, 17, 20, 23, 22, 23, 22, 23, 22, 51, 50, 55, 54, 55, 54, 55, 54, 53, 17, 51, 17, 20, 7, 6,
+ 7, 14, 1, 35, 34, 39, 38, 39, 38, 39, 38,164,173, 12, 4, 13, 21, 83, 60, 86, 76, 71, 75, 29, 7, 10, 12,172, 24, 29, 57, 66,
+170,106,105, 85, 95, 57, 59, 26, 25, 2, 94, 2, 68,253, 96, 48,112, 38, 33, 48, 41, 30, 30, 32, 57, 14, 57, 65, 93, 2,162,253,
+188,238, 92,108, 51, 59, 58, 29, 32, 56, 58,103, 98, 0, 0, 0, 0, 1, 0,129,254,136, 4, 80, 6,249, 0, 23, 0, 26, 64, 5,
+ 12, 13, 6, 1, 0, 47, 60,252, 60, 49, 0, 64, 6, 5,140, 10, 22,140, 17, 47,236, 47,236, 48, 5, 17, 52, 55, 54, 55, 54, 23,
+ 7, 38, 7, 6, 21, 17, 20, 7, 6, 7, 6, 39, 55, 22, 55, 54, 2, 12, 94, 65,145,134,142,106, 92, 78,120, 93, 65,145,134,142,
+106, 92, 78,119, 68, 6, 34,106,100, 69, 7, 6,113,113, 67, 3, 5,146,249,222,106,100, 69, 7, 6,113,113, 67, 3, 5, 0, 0,
+ 0, 2, 0, 63,254,124, 4,145, 7, 5, 0, 23, 0, 47, 0, 0, 5, 17, 52, 55, 54, 51, 50, 23, 7, 38, 7, 6, 21, 3, 20, 7,
+ 6, 35, 34, 39, 55, 22, 55, 54, 37, 19, 52, 55, 54, 51, 50, 23, 7, 38, 7, 6, 21, 17, 20, 7, 6, 35, 34, 39, 55, 22, 55, 54,
+ 2,228, 57, 67,109,106, 90, 67, 67, 58, 53, 1, 57, 67,109,106, 90, 67, 77, 48, 54,254, 80, 1, 57, 67,109,106, 90, 67, 67, 58,
+ 54, 57, 67,109,106, 90, 67, 77, 48, 53, 68, 6, 34, 98, 92,105, 57,127, 38, 10, 9,155,249,222, 98, 92,105, 57,127, 43, 15, 17,
+147, 6, 34, 98, 92,105, 57,127, 38, 10, 9,155,249,222, 98, 92,105, 57,127, 43, 15, 17, 0, 0, 0, 3, 0, 53,254,150, 4,157,
+ 6,235, 0, 23, 0, 47, 0, 71, 0, 0, 5, 17, 52, 55, 54, 55, 54, 23, 7, 38, 35, 34, 21, 17, 20, 7, 6, 7, 6, 39, 55, 22,
+ 51, 50, 37, 17, 52, 55, 54, 55, 54, 23, 7, 38, 35, 34, 21, 17, 20, 7, 6, 7, 6, 39, 55, 22, 51, 50, 37, 17, 52, 55, 54, 55,
+ 54, 23, 7, 38, 35, 34, 21, 17, 20, 7, 6, 7, 6, 39, 55, 22, 51, 50, 3, 82, 49, 45,113, 50, 74, 36, 34, 50, 27, 50, 45,113,
+ 50, 74, 36, 34, 50, 28,254,188, 49, 45,113, 50, 74, 36, 34, 50, 27, 50, 45,113, 50, 74, 36, 34, 50, 28,254,186, 50, 45,113, 50,
+ 74, 36, 34, 50, 28, 49, 45,113, 50, 74, 36, 34, 50, 27,127, 6, 93,109, 83, 74, 2, 1, 29,142, 14, 78,249,163,111, 81, 74, 2,
+ 1, 29,142, 14, 78, 6, 93,109, 83, 74, 2, 1, 29,142, 14, 78,249,163,111, 81, 74, 2, 1, 29,142, 14, 78, 6, 93,109, 83, 74,
+ 2, 1, 29,142, 14, 78,249,163,111, 81, 74, 2, 1, 29,142, 14,255,255, 0, 88, 2, 45, 4,121, 4,132, 16, 38, 7, 95, 0, 0,
+ 16, 7, 7,208, 0, 2, 1, 36, 0, 3, 0, 74, 0,134, 4,135, 4,132, 0, 3, 0, 7, 0, 11, 0, 0, 1, 51, 17, 35, 3, 51,
+ 17, 35, 1, 33, 21, 33, 3,139,252,252, 2,252,252,252,193, 2,234,253, 22, 4,132,254,207,254,100,254,207, 2, 81,170, 0, 0,
+255,255, 0, 87, 0,134, 4,125, 4,132, 16, 38, 7, 95, 0, 0, 16, 39, 7,208, 1,148, 1, 36, 16, 39, 7,208, 1,152,254, 87,
+ 16, 39, 7,208,254,111, 1, 36, 16, 7, 7,208,254,110,254, 87,255,255, 0, 88, 0,134, 4,121, 4,132, 16, 38, 7,117, 0, 0,
+ 16, 39, 7,208, 0, 2, 1, 36, 16, 7, 7,208, 0, 1,254, 87, 0, 1, 0, 88, 1,241, 4,121, 3, 18, 0, 27, 0, 0, 1, 21,
+ 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 23, 22, 23, 22, 51, 50, 54, 4,121, 75,143, 79, 90,
+113, 22, 11, 77,103, 51, 79,141, 73, 78,146, 83, 53,100, 75, 10, 22,116, 93, 70,137, 3, 18,175, 59, 55, 51, 10, 4, 34, 24, 59,
+ 64,174, 60, 55, 22, 32, 4, 11, 54, 60, 0, 0, 0, 1, 0, 88, 1,241, 4,121, 3, 18, 0, 27, 0, 0, 19, 30, 1, 51, 50, 55,
+ 54, 55, 62, 1, 51, 50, 22, 23, 21, 46, 1, 35, 34, 6, 7, 6, 7, 6, 35, 34, 38, 39, 88, 74,137, 70, 93,116, 22, 10, 75,100,
+ 53, 83,146, 78, 73,141, 79, 51,103, 77, 11, 22,113, 90, 79,143, 75, 3, 18, 63, 60, 54, 11, 4, 32, 22, 55, 60,174, 64, 59, 24,
+ 34, 4, 10, 51, 55, 59, 0, 0, 0, 1, 0, 88, 0,174, 4,121, 4, 71, 0, 31, 0, 0, 1, 38, 39, 38, 35, 34, 6, 7, 53, 62,
+ 1, 51, 50, 23, 22, 23, 19, 23, 3, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 39, 3, 39, 2, 24, 29, 23, 52, 51, 79,141, 73, 78,
+146, 83, 54, 49, 45, 29, 78,136, 83, 88, 73, 70,137, 74, 75,143, 79, 81,100, 83,136, 2, 80, 11, 5, 12, 59, 64,174, 60, 55, 11,
+ 11, 12, 1, 87, 31,254,145, 34, 60, 63,175, 59, 55, 41,254,148, 31, 0, 0, 0, 0, 2, 0, 88, 1, 49, 4,121, 3,162, 0, 3,
+ 0, 29, 0, 0, 19, 33, 21, 33, 5, 21, 14, 1, 35, 34, 47, 1, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 51, 23, 22, 51,
+ 50, 54, 88, 4, 33,251,223, 4, 33, 75,143, 79, 90,113, 33, 83, 99, 49, 78,141, 74, 79,146, 82, 96,130, 1, 33,116, 93, 68,138,
+ 3,162,170,164,176, 59, 56, 51, 15, 36, 23, 60, 65,174, 62, 55, 55, 15, 55, 61, 0, 2, 0, 88, 1, 96, 4,121, 3,195, 0, 3,
+ 0, 31, 0, 0, 19, 33, 21, 33, 1, 21, 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 23, 22, 23,
+ 22, 51, 50, 54, 88, 4, 33,251,223, 4, 33, 75,143, 79, 90,113, 22, 11, 77,103, 51, 79,141, 73, 78,146, 83, 53,100, 75, 10, 22,
+116, 93, 70,137, 2, 12,172, 2, 99,175, 59, 55, 51, 10, 4, 34, 24, 59, 64,174, 60, 55, 22, 32, 4, 11, 54, 60, 0, 1, 0, 88,
+ 0, 98, 4,122, 4,213, 0, 39, 0, 0, 1, 3, 22, 55, 54, 55, 21, 6, 7, 6, 35, 34, 39, 7, 33, 21, 33, 7, 39, 55, 35, 53,
+ 33, 55, 38, 39, 38, 7, 6, 7, 53, 54, 55, 54, 55, 54, 31, 2, 19, 3,199,167,102, 89, 85, 69, 53,107, 73, 81, 37, 92,110, 2,
+ 42,253,120,152,114, 89,233, 1, 81,146, 77,111, 73, 70, 92, 60, 91, 69, 84, 70, 82,130, 13, 29,198, 4,113,254,224, 19, 36, 34,
+ 66,178, 50, 40, 26, 30,178,171,254,100,154,171,231, 37, 5, 4, 31, 40, 57,172, 76, 19, 22, 2, 3, 53, 5, 16, 1, 88, 0, 0,
+ 0, 3, 0, 88, 0,192, 4,121, 4,143, 0, 3, 0, 7, 0, 36, 0, 0, 19, 33, 21, 33, 21, 33, 21, 33, 1, 21, 14, 1, 35, 34,
+ 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 22, 23, 22, 23, 22, 51, 50, 54, 88, 4, 33,251,223, 4, 33,251,223,
+ 4, 33, 75,143, 79, 90,113, 22, 11, 77,103, 51, 79,141, 73, 78,146, 83, 53, 50, 39, 86, 10, 22,116, 93, 70,137, 2,216,172,192,
+172, 3,207,175, 59, 55, 51, 10, 4, 34, 24, 59, 64,174, 60, 55, 11, 9, 34, 4, 11, 54, 60, 0, 0, 2, 0, 88, 0, 49, 4,121,
+ 4,143, 0, 19, 0, 48, 0, 0, 37, 35, 53, 33, 55, 33, 53, 33, 55, 23, 7, 51, 21, 33, 7, 33, 21, 33, 7, 39, 1, 21, 14, 1,
+ 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 22, 23, 22, 23, 22, 51, 50, 54, 1, 81,249, 1,117,139,254,
+ 0, 2,123,104,113, 44,249,254,139,139, 2, 0,253,132,103,113, 3, 84, 75,143, 79, 90,113, 22, 11, 77,103, 51, 79,141, 73, 78,
+146, 83, 53, 50, 39, 86, 10, 22,116, 93, 70,137,192,172,192,172,143, 82, 61,172,192,172,143, 82, 4, 12,175, 59, 55, 51, 10, 4,
+ 34, 24, 59, 64,174, 60, 55, 11, 9, 34, 4, 11, 54, 60, 0, 0, 0, 1, 0, 88, 0, 0, 4,121, 5, 46, 0, 49, 0, 0, 37, 33,
+ 53, 33, 55, 33, 53, 33, 55, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 22, 31, 1, 55, 23, 7, 22, 51, 50, 54, 55,
+ 21, 14, 1, 35, 34, 39, 7, 33, 21, 33, 7, 33, 21, 33, 7, 39, 1,104,254,240, 1, 77, 69,254,110, 1,208, 75, 9, 6, 77,103,
+ 51, 79,141, 73, 78,146, 83, 53, 50, 51, 74, 58, 86,155, 81, 11, 12, 70,137, 74, 75,143, 79, 31, 33, 56, 1,161,254, 33, 69, 2,
+ 36,253,159, 70,156,192,172,192,172,209, 4, 2, 34, 24, 59, 64,174, 60, 55, 11, 11, 32, 25,238, 56,225, 1, 60, 63,175, 59, 55,
+ 6,156,172,192,172,192, 55, 0, 0, 2, 0, 88, 1, 49, 4,121, 3,195, 0, 27, 0, 55, 0, 75, 64, 38, 29, 39, 32, 49, 48, 43,
+ 3, 53, 28, 1, 11, 4, 15, 25, 11,160, 18, 0, 25,160, 14, 4, 42, 32,160, 53, 39,160, 46, 28, 56, 49, 48, 28, 0, 42, 14, 56,
+ 16,212, 60,196, 50, 57, 57, 49, 0, 16,212, 60,236,212,236, 50,220, 60,252,212, 60,236, 18, 57, 17, 18, 57, 17, 18, 23, 57, 17,
+ 18, 57, 48, 1, 21, 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 23, 22, 23, 22, 51, 50, 54, 19,
+ 21, 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 51, 22, 23, 22, 51, 50, 54, 4,121, 75,143, 79,
+ 90,113, 22, 11, 77,103, 51, 79,141, 73, 78,146, 83, 53,100, 75, 10, 22,116, 93, 70,137, 74, 75,143, 79, 90,113, 22, 11, 83, 99,
+ 49, 78,141, 74, 79,146, 82, 96,130, 1, 11, 22,116, 93, 68,138, 3,195,175, 59, 55, 51, 10, 4, 34, 24, 59, 64,174, 60, 55, 22,
+ 32, 4, 11, 54, 60,254,208,176, 59, 56, 51, 10, 5, 36, 23, 60, 65,174, 62, 55, 55, 5, 10, 55, 61, 0, 0, 0, 0, 1, 0, 88,
+ 0, 48, 4,121, 4,195, 0, 56, 0, 0, 1, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 55, 38, 39, 38, 35, 34, 6, 7, 53, 62,
+ 1, 51, 50, 23, 22, 23, 19, 23, 3, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 39, 7, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 47,
+ 1, 3, 39, 1,221, 48, 48, 78,141, 74, 79,146, 82, 58, 71, 54, 55, 39, 52, 51, 79,141, 73, 78,146, 83, 53, 50, 48, 78, 93,138,
+ 97, 57, 49, 70,137, 74, 75,143, 79, 63, 74, 52,114, 91, 68,138, 75, 75,143, 79,100,103, 31, 98,138, 1,163, 11, 60, 65,174, 62,
+ 55, 20,178, 22, 9, 12, 59, 64,174, 60, 55, 11, 11, 33, 1, 55, 41,254,189, 15, 60, 63,175, 59, 55, 25,175, 53, 61, 64,176, 59,
+ 56, 51, 16,254,188, 41, 0, 0, 0, 3, 0, 88, 0,192, 4,121, 4,147, 0, 27, 0, 55, 0, 59, 0, 0, 1, 21, 14, 1, 35, 34,
+ 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 23, 22, 23, 22, 51, 50, 54, 19, 21, 14, 1, 35, 34, 39, 38, 39, 46,
+ 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 51, 22, 23, 22, 51, 50, 54, 1, 33, 21, 33, 4,121, 75,143, 79, 90,113, 22, 11, 77,
+103, 51, 79,141, 73, 78,146, 83, 53,100, 75, 10, 22,116, 93, 70,137, 74, 75,143, 79, 90,113, 22, 11, 83, 99, 49, 78,141, 74, 79,
+146, 82, 96,130, 1, 11, 22,116, 93, 68,138,252, 42, 4, 33,251,223, 4,147,175, 59, 55, 51, 10, 4, 34, 24, 59, 64,174, 60, 55,
+ 22, 32, 4, 11, 54, 60,254,208,176, 59, 56, 51, 10, 5, 36, 23, 60, 65,174, 62, 55, 55, 5, 10, 55, 61,254,136,172, 0, 0, 0,
+ 0, 3, 0, 88, 0,149, 4,121, 4,147, 0, 27, 0, 55, 0, 83, 0, 0, 1, 21, 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6,
+ 7, 53, 62, 1, 51, 50, 23, 51, 22, 23, 22, 51, 50, 54, 19, 21, 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1,
+ 51, 50, 22, 23, 22, 23, 22, 51, 50, 54, 19, 21, 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 51,
+ 22, 23, 22, 51, 50, 54, 4,121, 75,143, 79, 90,113, 22, 11, 83, 99, 49, 78,141, 74, 79,146, 82, 96,130, 1, 11, 22,116, 93, 68,
+138, 75, 75,143, 79, 90,113, 22, 11, 77,103, 51, 79,141, 73, 78,146, 83, 53,100, 75, 10, 22,116, 93, 70,137, 74, 75,143, 79, 90,
+113, 22, 11, 83, 99, 49, 78,141, 74, 79,146, 82, 96,130, 1, 11, 22,116, 93, 68,138, 1,184,176, 59, 56, 51, 10, 5, 36, 23, 60,
+ 65,174, 62, 55, 55, 5, 10, 55, 61, 3, 27,175, 59, 55, 51, 10, 4, 34, 24, 59, 64,174, 60, 55, 22, 32, 4, 11, 54, 60,254,208,
+176, 59, 56, 51, 10, 5, 36, 23, 60, 65,174, 62, 55, 55, 5, 10, 55, 61, 0, 0, 0, 3, 0, 88, 0,192, 4,121, 4,143, 0, 3,
+ 0, 7, 0, 36, 0, 0, 1, 21, 33, 53, 1, 21, 33, 53, 17, 30, 1, 51, 50, 55, 54, 55, 54, 55, 54, 51, 50, 22, 23, 21, 46, 1,
+ 35, 34, 6, 7, 6, 7, 6, 35, 34, 38, 39, 4,121,251,223, 4, 33,251,223, 74,137, 70, 93,116, 22, 10, 86, 39, 50, 53, 83,146,
+ 78, 73,141, 79, 51,103, 77, 11, 22,113, 90, 79,143, 75, 2,216,172,172,254,148,172,172, 3, 35, 63, 60, 54, 11, 4, 34, 9, 11,
+ 55, 60,174, 64, 59, 24, 34, 4, 10, 51, 55, 59, 0, 2, 0, 87, 0,221, 4,121, 4, 39, 0, 8, 0, 17, 0, 0, 0, 32, 37, 53,
+ 4, 23, 50, 37, 21, 0, 32, 5, 21, 36, 39, 34, 5, 53, 3, 49,254,112,254,182, 1, 90,184,185, 1, 86,253, 40, 1,144, 1, 73,
+254,167,184,185,254,169, 2,217,156,178,156, 7,163,178,254,182,156,178,156, 7,163,178, 0, 0, 0, 2, 0, 88, 0, 68, 4,122,
+ 4,190, 0, 29, 0, 59, 0, 0, 37, 22, 55, 54, 55, 54, 55, 33, 21, 35, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 35, 53,
+ 33, 22, 23, 22, 23, 22, 19, 6, 7, 6, 7, 6, 7, 33, 53, 51, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 51, 21, 33, 38,
+ 39, 38, 39, 38, 2,105, 49, 42, 43, 27, 21, 4, 1, 86,225, 9, 25, 27, 87, 74, 82, 78, 77, 82, 32, 25, 9,225, 1, 87, 4, 21,
+ 26, 44, 33, 58, 58, 33, 44, 26, 21, 4,254,169,225, 6, 28, 22, 92, 72, 83, 76, 80, 77, 37, 23, 11,225,254,170, 3, 22, 27, 43,
+ 42,223, 3, 37, 39, 72, 58, 94,168, 50, 58, 65, 60, 51, 51, 54, 71, 56, 52,168, 94, 58, 72, 39, 30, 3, 64, 4, 30, 39, 72, 63,
+ 89,168, 32, 76, 61, 64, 51, 51, 47, 78, 48, 60,168, 94, 58, 72, 39, 37, 0, 0, 0, 2, 0, 88, 1, 96, 4,122, 4,190, 0, 29,
+ 0, 33, 0, 0, 1, 6, 7, 6, 7, 6, 7, 33, 53, 51, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 51, 21, 33, 38, 39, 38,
+ 39, 38, 1, 33, 21, 33, 2,105, 58, 33, 44, 26, 21, 4,254,169,225, 6, 28, 22, 92, 72, 83, 76, 80, 77, 37, 23, 11,225,254,170,
+ 3, 22, 27, 43, 42,253,190, 4, 33,251,223, 4, 35, 4, 30, 39, 72, 63, 89,168, 32, 76, 61, 64, 51, 51, 47, 78, 48, 60,168, 94,
+ 58, 72, 39, 37,253,228,170, 0,255,255, 0, 88, 1, 96, 4,121, 5, 25, 16, 38, 0, 32, 0, 0, 16, 7, 7,208, 0, 2, 1,185,
+255,255, 0, 88,255,233, 4,121, 5, 25, 16, 38, 0, 32, 0, 0, 16, 39, 7,208, 0, 2, 1,185, 16, 39, 7,208, 0, 2, 1,185,
+ 16, 7, 7,208, 0, 1,253,186,255,255, 0, 88,255,236, 4,121, 5, 25, 16, 39, 7,208, 1,148,253,189, 16, 38, 0, 32, 0, 0,
+ 16, 7, 7,208,254,111, 1,185,255,255, 0, 87,255,236, 4,122, 5, 25, 16, 39, 7,208, 1,148, 1,185, 16, 38, 0, 32, 0, 0,
+ 16, 7, 7,208,254,110,253,189, 0, 4, 0, 74, 1, 46, 4,135, 3,213, 0, 3, 0, 7, 0, 11, 0, 15, 0, 0, 19, 51, 17, 35,
+ 17, 51, 17, 35, 5, 21, 33, 53, 1, 21, 33, 53, 74,236,236,236,236, 4, 61,252,251, 3, 5,252,251, 2, 62,254,240, 2,167,254,
+240,185,172,172, 1,150,170,170, 0, 4, 0, 74, 1, 46, 4,135, 3,213, 0, 3, 0, 7, 0, 11, 0, 15, 0, 0, 1, 17, 35, 17,
+ 19, 17, 35, 17, 1, 33, 21, 33, 17, 33, 21, 33, 4,135,236,236,236,252,175, 3, 5,252,251, 3, 5,252,251, 2, 62,254,240, 1,
+ 16, 1,151,254,240, 1, 16,254, 55,172, 2, 66,170, 0, 0, 0, 0, 2, 0, 88, 1, 96, 4,121, 3,162, 0, 9, 0, 27, 0, 0,
+ 1, 6, 21, 20, 23, 51, 54, 53, 38, 39, 23, 33, 21, 33, 53, 33, 38, 53, 52, 55, 33, 53, 33, 21, 33, 22, 21, 20, 2, 37, 52, 51,
+145, 52, 1, 52,141, 1, 56,251,223, 1, 62, 25, 27,254,192, 4, 33,254,201, 26, 2,250, 48, 73, 71, 48, 48, 71, 71, 50,240,170,
+170, 63, 56, 62, 59,168,168, 26, 95, 56, 0, 0, 0, 4, 0, 88, 1, 96, 4,121, 6, 21, 0, 3, 0, 7, 0, 17, 0, 32, 0, 0,
+ 19, 33, 21, 33, 17, 33, 21, 33, 1, 34, 6, 21, 20, 22, 50, 54, 52, 38, 39, 50, 22, 23, 30, 1, 21, 20, 6, 35, 34, 38, 53, 52,
+ 54, 88, 4, 33,251,223, 4, 33,251,223, 2, 17, 73,100,100,146,100,101, 72, 58,108, 39, 42, 42,169,122,123,164,168, 2, 12,172,
+ 2, 66,170, 2,172, 98, 70, 69, 96, 96,139, 98,113, 43, 40, 40,100, 58,115,161,158,118,118,163, 0, 3, 0, 88, 1, 96, 4,121,
+ 5, 75, 0, 3, 0, 7, 0, 17, 0, 0, 19, 33, 21, 33, 17, 33, 21, 33, 1, 50, 23, 21, 38, 39, 6, 7, 53, 54, 88, 4, 33,251,
+223, 4, 33,251,223, 2, 18,230,203,215,218,216,220,210, 2, 12,172, 2, 66,170, 2, 83,151,178,151, 9, 2,158,178,151, 0, 0,
+ 0, 3, 0, 88, 1, 96, 4,121, 6, 68, 0, 3, 0, 7, 0, 14, 0, 0, 19, 33, 21, 33, 17, 33, 21, 33, 55, 19, 51, 19, 35, 11,
+ 1, 88, 4, 33,251,223, 4, 33,251,223,214,234,162,233,143,171,166, 2, 12,172, 2, 66,170,242, 2, 90,253,166, 1,170,254, 86,
+ 0, 3, 0, 88, 1, 96, 4,121, 6, 68, 0, 3, 0, 7, 0, 14, 0, 0, 19, 33, 21, 33, 17, 33, 21, 33, 19, 51, 27, 1, 51, 3,
+ 35, 88, 4, 33,251,223, 4, 33,251,223,214,149,166,171,143,233,162, 2, 12,172, 2, 66,170, 3, 76,254, 86, 1,170,253,166, 0,
+ 0, 3, 0, 88, 1, 96, 4,121, 6,165, 0, 3, 0, 7, 0, 17, 0, 0, 19, 33, 21, 33, 17, 33, 21, 33, 19, 33, 27, 1, 33, 7,
+ 19, 39, 7, 19, 88, 4, 33,251,223, 4, 33,251,223,176, 1, 13, 84, 85, 1, 12,218, 85,220,219, 84, 2, 12,172, 2, 66,170, 2,
+173, 1, 0,255, 0,158,255, 0,159,159, 1, 0, 0, 4, 0, 88, 1, 96, 4,121, 6,176, 0, 3, 0, 7, 0, 10, 0, 14, 0, 0,
+ 19, 33, 21, 33, 17, 33, 21, 33, 1, 3, 33, 3, 51, 1, 33, 88, 4, 33,251,223, 4, 33,251,223, 2, 16,150, 1, 45,201,101, 1,
+ 4,253,147, 2, 12,172, 2, 66,170, 3, 21,254,122, 2, 40,253,105, 0, 0, 0, 0, 7, 0, 69, 1, 96, 4,140, 6, 29, 0, 3,
+ 0, 7, 0, 27, 0, 48, 0, 55, 0, 71, 0, 79, 0, 0, 19, 33, 21, 33, 17, 33, 21, 33, 1, 21, 35, 34, 6, 29, 1, 51, 21, 35,
+ 17, 35, 17, 35, 53, 51, 53, 52, 54, 51, 3, 21, 33, 30, 1, 51, 50, 54, 55, 21, 14, 1, 35, 34, 38, 53, 52, 54, 51, 50, 22, 7,
+ 46, 1, 35, 34, 6, 7, 39, 53, 51, 17, 35, 53, 14, 1, 35, 34, 38, 52, 54, 51, 50, 22, 6, 20, 22, 50, 54, 52, 38, 34, 88, 4,
+ 33,251,223, 4, 33,251,223, 4, 52, 64, 35, 28,109,109, 67, 63, 63, 63, 68,237,254,208, 4, 74, 66, 38, 71, 36, 36, 75, 38, 97,
+113,107, 91, 81, 95, 66, 1, 59, 49, 56, 66, 5,199, 67, 67, 21, 63, 45, 73, 92, 92, 73, 45, 63,204, 60,105, 60, 60,105, 2, 12,
+172, 2, 66,170, 3, 36, 55, 29, 37, 36, 51,254,160, 1, 96, 51, 28, 68, 61,254,170, 32, 68, 72, 19, 18, 62, 15, 16,112, 96, 99,
+116,105, 70, 54, 65, 63, 57,105,218,253,208, 61, 36, 35,116,190,117, 35,103,147, 83, 83,147, 83, 0, 3, 0, 88, 1, 96, 4,121,
+ 6, 20, 0, 3, 0, 7, 0, 42, 0, 0, 19, 33, 21, 33, 17, 33, 21, 33, 1, 62, 1, 51, 50, 22, 21, 17, 35, 17, 52, 38, 35, 34,
+ 6, 21, 17, 35, 17, 52, 38, 35, 34, 6, 21, 17, 35, 17, 51, 21, 62, 1, 51, 50, 22, 88, 4, 33,251,223, 4, 33,251,223, 2, 46,
+ 34, 93, 63, 84, 92, 89, 56, 56, 69, 81, 89, 55, 58, 68, 81, 89, 89, 31, 85, 59, 59, 82, 2, 12,172, 2, 66,170, 2,165, 61, 58,
+120,111,254,181, 1, 72, 79, 77, 93, 81,254,202, 1, 72, 80, 76, 94, 80,254,202, 2, 37, 85, 50, 48, 61, 0, 0, 0, 4, 0, 88,
+ 1, 96, 4,121, 6,218, 0, 3, 0, 7, 0, 11, 0, 44, 0, 0, 19, 33, 21, 33, 17, 33, 21, 33, 1, 51, 21, 35, 55, 35, 53, 52,
+ 54, 63, 1, 62, 1, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 21, 20, 6, 15, 1, 14, 1, 7, 14, 1, 21, 88, 4, 33,
+251,223, 4, 33,251,223, 1,195,102,102, 99, 96, 28, 45, 45, 29, 25, 65, 54, 40, 89, 49, 47, 97, 51, 92,112, 36, 45, 44, 24, 19,
+ 4, 3, 3, 2, 12,172, 2, 66,170, 1,105,127,200, 78, 50, 65, 43, 44, 27, 47, 24, 45, 55, 35, 33, 94, 28, 28, 97, 79, 38, 69,
+ 43, 43, 23, 27, 13, 10, 30, 26, 0, 1, 0, 88, 0, 37, 4,121, 4,221, 0, 19, 0, 60, 64, 32, 13, 12, 10, 3, 2, 4, 0,160,
+ 6, 12, 14, 10,160, 18, 6, 16, 8, 20, 18, 14, 13, 12, 8, 4, 3, 2, 8, 9, 5, 15, 0, 20, 16,212, 60,196, 50, 23, 57, 49,
+ 0, 16,212, 60,196, 50,252, 60,196, 16,254, 60,196, 57, 17, 18, 57, 48, 19, 33, 19, 23, 7, 51, 21, 33, 7, 33, 21, 33, 3, 39,
+ 55, 35, 53, 33, 55, 33, 88, 2,135,246,125,164,203,254,178,184, 2, 6,253,121,248,125,164,201, 1, 74,184,253,254, 3,162, 1,
+ 59,102,213,170,236,172,254,197,104,211,172,236, 0, 3, 0, 88, 0,192, 4,121, 4, 66, 0, 3, 0, 7, 0, 11, 0, 0, 19, 33,
+ 21, 33, 21, 33, 21, 33, 17, 33, 21, 33, 88, 4, 33,251,223, 4, 33,251,223, 4, 33,251,223, 2,216,172,192,172, 3,130,170, 0,
+ 0, 1, 0, 88, 0, 10, 4,121, 4,250, 0, 27, 0, 0, 37, 35, 53, 33, 55, 33, 53, 33, 55, 33, 53, 33, 55, 23, 7, 51, 21, 33,
+ 7, 33, 21, 33, 7, 33, 21, 33, 7, 39, 1, 71,239, 1, 61, 88,254,107, 1,229, 88,253,195, 2,139, 85,141, 55,235,254,200, 89,
+ 1,145,254, 32, 90, 2, 58,253,119, 83,141,192,172,192,172,192,170,184, 65,119,170,192,172,192,172,182, 64, 0, 0, 4, 0, 88,
+ 0, 0, 4,121, 4,238, 0, 3, 0, 7, 0, 11, 0, 15, 0, 0, 55, 33, 21, 33, 17, 33, 21, 33, 21, 33, 21, 33, 17, 33, 21, 33,
+ 88, 4, 33,251,223, 4, 33,251,223, 4, 33,251,223, 4, 33,251,223,172,172, 3,132,172,192,172, 3,130,170, 0, 0, 2, 0, 88,
+ 0, 0, 4,121, 4, 63, 0, 6, 0, 10, 0, 40, 64, 22, 6, 5, 3, 2, 0, 5, 1,229, 4,228, 7,160, 8, 6, 7, 4, 0, 40,
+ 9, 2, 39, 11, 16,252, 60,236, 50, 50, 57, 49, 0, 47,236,244,236, 23, 57, 48, 1, 21, 1, 53, 1, 21, 5, 1, 21, 33, 53, 4,
+121,251,223, 4, 33,252,223, 3, 33,251,223, 1,182,182, 1, 76,168, 1, 75,184,231,254, 10,170,170, 0, 0, 0, 0, 2, 0, 88,
+ 0, 0, 4,121, 4, 63, 0, 6, 0, 10, 0, 40, 64, 22, 5, 4, 2, 1, 0, 5, 6,229, 3,228, 7,160, 9, 1, 8, 4, 40, 7,
+ 2, 0, 39, 11, 16,252, 60, 60,236, 50, 57, 49, 0, 47,236,244,236, 23, 57, 48, 19, 45, 1, 53, 1, 21, 1, 21, 33, 21, 33, 88,
+ 3, 35,252,221, 4, 33,251,223, 4, 33,251,223, 1,182,234,231,184,254,181,168,254,180, 86,170, 0, 3, 0, 86,255, 84, 4,119,
+ 4,159, 0, 3, 0, 10, 0, 14, 0, 0, 51, 33, 21, 33, 1, 21, 1, 53, 1, 21, 5, 1, 21, 33, 53, 86, 4, 33,251,223, 4, 33,
+251,223, 4, 33,252,223, 3, 33,251,223,172, 2,194,182, 1, 76,168, 1, 75,184,231,254, 10,170,170, 0, 0, 0, 0, 3, 0, 86,
+255, 84, 4,119, 4,159, 0, 3, 0, 10, 0, 14, 0, 0, 51, 33, 21, 33, 17, 45, 1, 53, 1, 21, 1, 5, 21, 33, 53, 86, 4, 33,
+251,223, 3, 33,252,223, 4, 33,251,223, 4, 33,251,223,172, 2,194,234,231,184,254,181,168,254,180, 86,170,170, 0, 2, 0, 86,
+254,181, 4,119, 4,159, 0, 19, 0, 26, 0, 0, 5, 35, 53, 33, 55, 33, 53, 33, 55, 23, 7, 51, 21, 33, 7, 33, 21, 33, 7, 39,
+ 1, 21, 1, 53, 1, 21, 5, 1, 32,202, 1,112, 91,254, 53, 2,109,154,123, 42,201,254,149, 91, 1,198,253,148,153,121, 3,126,
+251,223, 4, 33,252,223,172,172, 96,170,161,117, 44,170, 96,172,159,118, 2,235,182, 1, 76,168, 1, 75,184,231, 0, 2, 0, 86,
+254,181, 4,119, 4,159, 0, 19, 0, 26, 0, 0, 5, 35, 53, 33, 55, 33, 53, 33, 55, 23, 7, 51, 21, 33, 7, 33, 21, 33, 7, 39,
+ 3, 45, 1, 53, 1, 21, 1, 1, 32,202, 1,112, 91,254, 53, 2,109,154,123, 42,201,254,149, 91, 1,198,253,148,153,121,163, 3,
+ 33,252,223, 4, 33,251,223,172,172, 96,170,161,117, 44,170, 96,172,159,118, 2,235,234,231,184,254,181,168,254,180, 0, 0, 0,
+ 0, 1, 0, 87, 0, 0, 4,121, 5, 4, 0, 27, 0, 0, 1, 38, 37, 53, 4, 55, 19, 23, 3, 54, 55, 21, 6, 15, 1, 22, 5, 21,
+ 36, 7, 3, 39, 19, 6, 7, 53, 54, 55, 2, 52,189,254,224, 1, 91,216,194,154,130,122,154,216,162, 98,190, 1, 31,254,165,216,
+193,154,129,124,152,219,160, 2,219, 18,136,178,170, 8, 1,127, 77,254,254, 41, 73,178,103, 35,194, 18,136,178,170, 8,254,129,
+ 77, 1, 2, 40, 74,178,104, 35, 0, 2, 0, 88,255,227, 4,121, 5, 32, 0, 15, 0, 18, 0, 0, 1, 37, 53, 37, 19, 23, 7, 37,
+ 21, 5, 3, 5, 21, 37, 3, 39, 19, 5, 23, 1,225,254,119, 2, 50,114,153, 75, 1, 47,254,146,100, 1,210,253,254,116,153,228,
+254,217,233, 1,148,155,166,222, 1,109, 48,241,120,182,138,254,187,174,183,203,254,139, 48, 2,221,111, 86, 0, 0, 2, 0, 88,
+255,227, 4,121, 5, 32, 0, 15, 0, 18, 0, 0, 1, 5, 21, 5, 3, 39, 55, 5, 53, 37, 19, 37, 53, 5, 19, 23, 3, 37, 39, 2,
+240, 1,137,253,206,114,153, 75,254,209, 1,110,100,254, 46, 2, 2,116,153,228, 1, 39,233, 3,111,155,166,222,254,147, 48,241,
+120,182,138, 1, 69,174,183,203, 1,117, 48,253, 35,111, 86, 0, 0, 2, 0, 88,255, 13, 4,121, 5, 8, 0, 2, 0, 26, 0, 0,
+ 1, 5, 23, 3, 33, 53, 33, 19, 37, 53, 37, 19, 23, 7, 37, 21, 5, 7, 5, 21, 37, 7, 33, 21, 33, 7, 39, 2, 88,255, 0,211,
+199,254,244, 1, 67, 95,254, 94, 2, 63,115,161, 77, 1, 27,254,164, 78, 1,170,254, 35, 78, 2, 43,253,158, 80,162, 2,234, 74,
+ 62,253,158,170, 1, 31,131,168,180, 1, 96, 53,237, 89,184,100,241,124,182,150,236,170,243, 53, 0, 2, 0, 88,255, 13, 4,121,
+ 5, 8, 0, 23, 0, 26, 0, 0, 1, 5, 21, 5, 7, 33, 21, 33, 7, 39, 55, 35, 53, 51, 55, 5, 53, 37, 55, 37, 53, 5, 19, 23,
+ 3, 55, 39, 2,224, 1,153,253,203, 78, 2,131,253, 69, 79,162, 62,179,235, 58,254,219, 1,102, 76,254, 78, 1,230,116,161,208,
+248,206, 3,116,128,168,177,241,170,243, 53,190,170,178, 92,182,104,236,125,184,152, 1, 97, 53,253,133, 72, 60, 0, 2, 0, 86,
+255,212, 4,119, 4, 63, 0, 28, 0, 35, 0, 0, 37, 21, 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50,
+ 23, 22, 23, 22, 23, 22, 51, 50, 54, 19, 21, 1, 53, 1, 21, 5, 4,119, 75,143, 79, 90,113, 22, 11, 77,103, 51, 79,141, 73, 78,
+146, 83, 53, 50, 39, 86, 10, 22,116, 93, 70,137, 74,251,223, 4, 33,252,223,245,175, 59, 55, 51, 10, 4, 34, 24, 59, 64,174, 60,
+ 55, 11, 9, 34, 4, 11, 54, 60, 1, 0,182, 1, 76,168, 1, 75,184,231, 0, 0, 0, 2, 0, 86,255,212, 4,119, 4, 63, 0, 33,
+ 0, 40, 0, 0, 37, 21, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 35, 34, 7, 6, 7, 53, 54, 55, 54, 51, 50, 23, 22, 23, 22,
+ 23, 22, 51, 50, 55, 54, 1, 45, 1, 53, 1, 21, 1, 4,119, 75, 72, 71, 79, 90,113, 22, 11, 77, 51, 52, 51, 79, 70, 71, 73, 78,
+ 73, 73, 83, 53, 50, 39, 86, 10, 22,116, 93, 70, 68, 69,252, 41, 3, 33,252,223, 4, 33,251,223,245,175, 59, 27, 28, 51, 10, 4,
+ 34, 12, 12, 29, 30, 64,174, 60, 28, 27, 11, 9, 34, 4, 11, 54, 30, 30, 1, 0,234,231,184,254,181,168,254,180, 0, 2, 0, 86,
+255, 13, 4,119, 5, 8, 0, 43, 0, 46, 0, 0, 37, 34, 6, 7, 53, 62, 1, 51, 50, 23, 55, 37, 53, 37, 19, 23, 7, 37, 21, 5,
+ 7, 5, 21, 37, 7, 22, 23, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 39, 38, 39, 38, 39, 3, 39, 1, 5, 23, 1,125, 81,141, 73,
+ 78,146, 83, 21, 21, 69,254, 94, 2, 65,115,161, 77, 1, 25,254,167, 80, 1,169,254, 35, 66, 24, 29,116, 93, 70,137, 74, 75,143,
+ 79, 90,113, 22, 11, 32, 28, 95,162, 1, 52,254,253,213, 79, 59, 64,174, 60, 55, 2,214,131,168,181, 1, 95, 53,236, 88,184, 99,
+242,124,182,150,207, 8, 15, 54, 60, 63,175, 59, 55, 51, 10, 4, 14, 11,254,223, 53, 3,169, 75, 62, 0, 0, 0, 0, 2, 0, 86,
+255, 13, 4,119, 5, 8, 0, 2, 0, 50, 0, 0, 1, 55, 39, 55, 5, 21, 5, 7, 22, 23, 22, 23, 22, 51, 50, 55, 54, 55, 21, 6,
+ 7, 6, 35, 34, 39, 38, 39, 38, 39, 3, 39, 19, 6, 7, 6, 7, 53, 54, 55, 54, 63, 1, 5, 53, 37, 55, 37, 53, 5, 19, 23, 2,
+131,244,202, 51, 1,151,253,205, 59, 24, 76, 10, 22,116, 93, 70, 68, 69, 74, 71, 76, 71, 79, 90,113, 22, 11, 80, 60,103,162, 85,
+ 31, 29, 71, 73, 78, 73, 53, 58, 34,254,216, 1,103, 78,254, 75, 1,232,116,161, 2, 89, 71, 59,152,127,168,177,184, 5, 31, 4,
+ 11, 54, 30, 30, 63,175, 56, 30, 28, 51, 10, 4, 36, 13,254,199, 53, 1, 3, 7, 12, 30, 64,174, 60, 28, 20, 5,106, 93,182,105,
+234,126,184,153, 1, 98, 53, 0, 0, 2, 0, 86,255, 74, 4,119, 4,211, 0, 6, 0, 13, 0, 0, 51, 45, 1, 53, 1, 21, 9, 1,
+ 21, 1, 53, 1, 21, 5, 86, 3, 33,252,223, 4, 33,251,223, 4, 33,251,223, 4, 33,252,223,234,231,184,254,181,168,254,180, 3,
+ 0,182, 1, 76,168, 1, 75,184,231, 0, 0, 0, 0, 2, 0, 86,255, 74, 4,119, 4,211, 0, 6, 0, 13, 0, 0, 33, 21, 1, 53,
+ 1, 21, 5, 1, 45, 1, 53, 1, 21, 1, 4,119,251,223, 4, 33,252,223,255, 0, 3, 33,252,223, 4, 33,251,223,182, 1, 76,168,
+ 1, 75,184,231, 1, 96,234,231,184,254,181,168,254,180, 0, 0, 0, 3, 0, 86,254,112, 4,119, 5,177, 0, 2, 0, 30, 0, 33,
+ 0, 0, 1, 5, 31, 1, 5, 21, 37, 7, 5, 21, 5, 3, 39, 55, 7, 53, 37, 19, 37, 53, 5, 55, 37, 53, 37, 19, 23, 7, 55, 21,
+ 5, 3, 37, 39, 2,132,254,210,252,163, 1,130,254, 78, 25, 1,203,253,155,109,162, 76,249, 1, 52, 80,254,124, 1,181, 24,254,
+ 51, 2,104,110,162, 76,245,254,206,250, 1, 44,250, 3,139, 87, 74, 47,113,182,136, 78,144,168,193,254,155, 48,248, 78,182, 90,
+ 1, 7,112,184,137, 79,145,168,193, 1,104, 50,249, 77,184, 88,252,207, 88, 72, 0, 3, 0, 86,254,112, 4,119, 5,177, 0, 27,
+ 0, 30, 0, 33, 0, 0, 1, 23, 3, 5, 21, 5, 7, 37, 21, 5, 7, 5, 21, 37, 3, 39, 19, 37, 53, 37, 55, 5, 53, 37, 55, 37,
+ 53, 5, 1, 55, 7, 1, 7, 55, 3, 44,162,126, 1, 39,254, 98, 29, 1,187,254, 10, 48, 2, 38,253,170,124,162,125,254,214, 1,
+162, 29,254, 65, 1,249, 48,253,215, 2, 89,254,255, 17,105, 1,204, 17,102, 5,177, 50,254,101, 92,168,130, 96,139,184,145,159,
+161,182,188,254,106, 48, 1,152, 94,168,131, 95,140,182,147,158,160,184,188,252,185, 56, 30, 2, 99, 55, 30, 0, 0, 1, 0, 86,
+255,211, 4,119, 5, 47, 0, 10, 0, 0, 1, 0, 5, 4, 1, 21, 0, 37, 53, 36, 1, 4,119,254,185,254, 92, 1,172, 1, 63,254,
+185,253, 38, 2,222, 1, 67, 4, 64,254,152, 87, 97,254,162,239, 1,197,150,166,148, 1,199, 0, 0, 1, 0, 88,255,211, 4,121,
+ 5, 47, 0, 10, 0, 0, 19, 53, 0, 5, 21, 4, 1, 53, 0, 37, 36, 88, 1, 67, 2,222,253, 38,254,185, 1, 63, 1,172,254, 92,
+ 4, 64,239,254, 57,148,166,150,254, 59,239, 1, 94, 97, 87, 0, 0, 2, 0, 86,255, 4, 4,119, 5,177, 0, 9, 0, 24, 0, 0,
+ 37, 38, 37, 53, 4, 23, 4, 23, 21, 38, 19, 0, 5, 4, 1, 21, 38, 37, 38, 37, 53, 36, 55, 36, 55, 2,164,224,254,146, 1,112,
+222, 1, 8,203,177,177,254,221,254,108, 1,148, 1, 35,183,254,228,247,254,169, 1, 97,237, 1, 28,183,155,154, 54,200, 56,131,
+156,220,252,207, 4,239,254,208, 79, 93,254,222,239,201,151,130, 57,166, 61,125,150,203, 0, 0, 0, 2, 0, 86,255, 4, 4,119,
+ 5,177, 0, 9, 0, 24, 0, 0, 37, 4, 7, 53, 54, 37, 54, 37, 21, 4, 1, 53, 22, 5, 22, 5, 21, 4, 7, 4, 7, 53, 0, 37,
+ 36, 2, 41,254,222,177,203, 1, 8,222, 1,112,254,146,253, 77,183, 1, 28,237, 1, 97,254,169,247,254,228,183, 1, 35, 1,148,
+254,108,155,200,207,252,220,156,131, 56,200, 54, 3,141,239,203,150,125, 61,166, 57,130,151,201,239, 1, 34, 93, 79, 0, 0, 0,
+ 0, 2, 0, 86,255,142, 4,119, 5,177, 0, 27, 0, 42, 0, 0, 37, 21, 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53,
+ 62, 1, 51, 50, 22, 23, 22, 23, 22, 51, 50, 54, 19, 0, 5, 4, 1, 21, 38, 37, 38, 37, 53, 36, 55, 36, 55, 4,119, 75,143, 79,
+ 90,113, 22, 11, 77,103, 51, 79,141, 73, 78,146, 83, 53,100, 75, 10, 22,116, 93, 70,137, 74,254,221,254,108, 1,148, 1, 35,183,
+254,228,247,254,169, 1, 97,237, 1, 28,183,175,175, 59, 55, 51, 10, 4, 34, 24, 59, 64,174, 60, 55, 22, 32, 4, 11, 54, 60, 4,
+ 82,254,208, 79, 93,254,222,239,201,151,130, 57,166, 61,125,150,203, 0, 0, 0, 0, 2, 0, 86,255,142, 4,119, 5,177, 0, 27,
+ 0, 42, 0, 0, 37, 21, 14, 1, 35, 34, 39, 38, 39, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 23, 22, 23, 22, 51, 50, 54,
+ 1, 53, 22, 5, 22, 5, 21, 4, 7, 4, 7, 53, 0, 37, 36, 4,119, 75,143, 79, 90,113, 22, 11, 77,103, 51, 79,141, 73, 78,146,
+ 83, 53,100, 75, 10, 22,116, 93, 70,137,252, 41,183, 1, 28,237, 1, 97,254,169,247,254,231,186, 1, 35, 1,148,254,108,175,175,
+ 59, 55, 51, 10, 4, 34, 24, 59, 64,174, 60, 55, 22, 32, 4, 11, 54, 60, 4, 82,239,203,150,125, 61,166, 57,130,148,204,239, 1,
+ 34, 93, 79, 0, 0, 2, 0, 86,255, 91, 4,119, 5,167, 0, 21, 0, 26, 0, 0, 1, 23, 3, 54, 55, 21, 6, 7, 3, 22, 23, 21,
+ 38, 37, 3, 39, 19, 38, 39, 53, 36, 55, 3, 55, 6, 7, 22, 3, 52,163,104,155,109,160,181, 85,233,193,178,254,214,160,162,166,
+192,233, 1, 71,246, 99, 32, 95,101, 84, 5,167, 50,254,170,119,153,239,176,110,254,235,119,212,239,247,157,253,244, 50, 2, 34,
+ 79, 48,166, 66,127,254,188,106, 37, 21, 19, 0, 0, 2, 0, 86,255, 91, 4,119, 5,167, 0, 21, 0, 26, 0, 0, 5, 39, 19, 6,
+ 7, 53, 54, 55, 19, 38, 39, 53, 22, 5, 19, 23, 3, 22, 23, 21, 4, 7, 19, 7, 54, 55, 38, 1,153,163,104,155,109,160,181, 85,
+233,193,178, 1, 42,160,162,166,192,233,254,185,246, 99, 32, 95,101, 84,165, 50, 1, 86,119,153,239,176,110, 1, 21,119,212,239,
+247,157, 2, 12, 50,253,222, 79, 48,166, 66,127, 1, 68,106, 37, 21, 19, 0, 0, 0, 1, 0, 88, 0,163, 4,121, 4, 95, 0, 20,
+ 0, 0, 37, 33, 34, 39, 38, 53, 52, 55, 54, 51, 33, 21, 33, 34, 6, 21, 20, 23, 22, 51, 33, 4,121,253,189,201,138,139,139,138,
+200, 2, 68,253,188,137,190, 95, 96,136, 2, 68,163,139,139,200,198,141,139,150,192,136,138, 94, 96, 0, 0, 0, 0, 1, 0, 88,
+ 0,163, 4,121, 4, 95, 0, 20, 0, 0, 55, 53, 33, 50, 55, 54, 53, 52, 38, 35, 33, 53, 33, 50, 23, 22, 21, 20, 7, 6, 35, 88,
+ 2, 68,136, 96, 95,190,137,253,188, 2, 68,200,138,139,139,138,201,163,150, 96, 94,138,136,192,150,139,141,198,200,139,139, 0,
+ 0, 2, 0, 88,255,196, 4,121, 5, 62, 0, 8, 0, 32, 0, 0, 1, 35, 34, 6, 21, 20, 23, 22, 23, 7, 38, 39, 38, 53, 52, 55,
+ 54, 59, 1, 55, 23, 7, 33, 21, 33, 3, 33, 21, 33, 34, 35, 7, 39, 2,127, 74,137,190, 95, 43, 51, 48, 84, 68,139,139,138,200,
+126, 75,161, 57, 1, 19,254,186,221, 2, 35,253,189, 10, 10, 75,162, 3,201,192,136,138, 94, 43, 24,144, 35, 69,139,200,198,141,
+139,223, 53,170,150,253,112,150,223, 53, 0, 0, 0, 2, 0, 88,255,196, 4,121, 5, 62, 0, 8, 0, 32, 0, 0, 1, 51, 50, 54,
+ 53, 52, 39, 38, 39, 55, 22, 23, 22, 21, 20, 7, 6, 43, 1, 7, 39, 55, 33, 53, 33, 19, 33, 53, 33, 50, 51, 55, 23, 2, 82, 74,
+137,190, 95, 43, 51, 48, 84, 68,139,139,138,200,126, 75,161, 57,254,237, 1, 70,221,253,221, 2, 67, 10, 10, 75,162, 1, 57,192,
+136,138, 94, 43, 24,144, 35, 69,139,200,198,141,139,223, 53,170,150, 2,144,150,223, 53, 0, 0, 0, 2, 0, 88, 0, 0, 4,121,
+ 5, 0, 0, 3, 0, 24, 0, 0, 37, 21, 33, 53, 37, 33, 34, 39, 38, 53, 52, 55, 54, 51, 33, 21, 33, 34, 6, 21, 20, 23, 22, 51,
+ 33, 4,121,251,223, 4, 33,253,189,201,138,139,139,138,200, 2, 68,253,188,137,190, 95, 96,136, 2, 68,170,170,170,154,139,139,
+200,198,141,139,150,192,136,138, 94, 96, 0, 0, 0, 2, 0, 88, 0, 0, 4,121, 5, 0, 0, 3, 0, 24, 0, 0, 37, 21, 33, 61,
+ 2, 33, 50, 55, 54, 53, 52, 38, 35, 33, 53, 33, 50, 23, 22, 21, 20, 7, 6, 35, 4,121,251,223, 2, 68,136, 96, 95,190,137,253,
+188, 2, 68,200,138,139,139,138,201,170,170,170,154,150, 96, 94,138,136,192,150,139,141,198,200,139,139, 0, 0, 0, 2, 0, 88,
+255, 44, 4,121, 5,214, 0, 29, 0, 38, 0, 0, 37, 33, 21, 33, 7, 39, 55, 35, 53, 33, 55, 38, 39, 38, 53, 52, 55, 54, 59, 1,
+ 55, 23, 7, 51, 21, 33, 3, 33, 21, 33, 19, 35, 34, 6, 21, 20, 23, 22, 23, 2, 36, 2, 85,253,114, 71,159, 54,227, 1, 27, 58,
+113, 89,139,139,138,200,178, 71,158, 53,226,254,236,220, 1,240,253,221, 94,127,137,190, 95, 61, 82,170,170,212, 53,159,170,172,
+ 32, 89,139,200,198,141,139,214, 53,161,150,253,112,150, 3, 38,192,136,136, 96, 61, 23, 0, 0, 0, 2, 0, 88,255, 44, 4,121,
+ 5,214, 0, 33, 0, 43, 0, 0, 1, 22, 23, 22, 21, 20, 7, 6, 43, 1, 7, 33, 21, 33, 7, 39, 55, 35, 53, 33, 55, 33, 53, 33,
+ 19, 38, 35, 33, 53, 33, 50, 23, 55, 23, 1, 51, 50, 55, 54, 53, 52, 39, 38, 39, 3,131, 57, 50,139,139,138,201, 68, 52, 2, 86,
+253,113, 70,159, 53,226, 1, 27, 51,254,178, 1,129,219, 12, 12,253,188, 2, 68, 38, 35, 73,158,254,188, 20,136, 96, 95, 95, 24,
+ 26, 4,199, 32, 50,141,198,200,139,139,154,170,212, 53,159,170,154,150, 2,143, 1,150, 5,219, 53,252, 57, 96, 94,138,136, 96,
+ 24, 18, 0, 0, 0, 1, 0, 88,255, 48, 4,121, 5, 0, 0, 33, 0, 0, 37, 21, 33, 7, 39, 55, 33, 53, 33, 55, 35, 34, 39, 38,
+ 53, 52, 55, 54, 51, 33, 21, 33, 34, 6, 21, 20, 23, 22, 51, 33, 21, 33, 23, 7, 4,121,254, 24,167,132, 82,254,160, 1,232,124,
+134,201,138,139,139,138,200, 2, 68,253,188,137,190, 95, 97,135, 2, 68,254,177, 65, 81,170,170,208,106,102,170,154,139,140,199,
+198,141,139,150,192,136,138, 94, 96,150, 53,101, 0, 1, 0, 88,255, 48, 4,121, 5, 0, 0, 34, 0, 0, 37, 21, 33, 7, 39, 55,
+ 33, 53, 33, 55, 6, 35, 33, 53, 33, 50, 55, 54, 53, 52, 38, 35, 33, 53, 33, 50, 23, 22, 21, 20, 7, 6, 7, 23, 7, 4,121,254,
+ 24,167,132, 82,254,160, 1,232,124, 16, 17,253,189, 2, 68,135, 97, 95,190,137,253,188, 2, 68,200,138,139,139, 93,122, 84, 81,
+170,170,208,106,102,170,155, 1,150, 96, 94,138,136,192,150,139,141,198,199,140, 94, 30, 68,101, 0, 1, 0, 88, 0,119, 4,121,
+ 4,139, 0, 7, 0, 49, 0,176, 6, 47,176, 7, 51,177, 4, 4,237,177, 5, 4,237,176, 2,176, 4, 16,222,176, 3, 50,177, 0,
+ 4,237,177, 1, 4,237, 1,176, 0, 47,176, 7, 51,177, 3, 4,237,177, 4, 4,237, 48, 49, 19, 33, 21, 33, 17, 33, 21, 33, 88,
+ 4, 33,252,137, 3,119,251,223, 4,139,170,253, 64,170, 0, 0, 0, 1, 0, 88, 0,119, 4,121, 4,139, 0, 7, 0, 49, 0,176,
+ 1, 47,176, 2, 51,177, 3, 4,237,177, 4, 4,237,176, 5,176, 3, 16,222,176, 6, 50,177, 0, 4,237,177, 7, 4,237, 1,176,
+ 4, 47,176, 5, 51,177, 0, 4,237,177, 1, 4,237, 48, 49, 1, 17, 33, 53, 33, 17, 33, 53, 4,121,251,223, 3,119,252,137, 4,
+139,251,236,170, 2,192,170, 0, 0, 2, 0, 88, 0, 14, 4,121, 4,244, 0, 3, 0, 11, 0, 72, 0,176, 2, 47,176, 3, 51,177,
+ 0, 4,237,177, 1, 4,237,176, 10,176, 0, 16,222,176, 11, 50,177, 8, 4,237,177, 9, 4,237,176, 6,176, 8, 16,222,176, 7,
+ 50,177, 4, 4,237,177, 5, 4,237, 1,176, 0, 47,176, 3, 51,176, 4, 51,176, 11, 51,177, 7, 4,237,177, 8, 4,237, 48, 49,
+ 55, 33, 21, 33, 17, 33, 21, 33, 17, 33, 21, 33, 88, 4, 33,251,223, 4, 33,252,137, 3,119,251,223,184,170, 4,230,170,253,152,
+170, 0, 0, 0, 0, 2, 0, 88, 0, 14, 4,121, 4,244, 0, 3, 0, 11, 0, 74, 0,176, 1, 47,176, 2, 51,177, 0, 4,237,177,
+ 3, 4,237,176, 5,176, 0, 16,222,176, 6, 50,177, 7, 4,237,177, 8, 4,237,176, 9,176, 7, 16,222,176, 10, 50,177, 4, 4,
+237,177, 11, 4,237, 1,176, 8, 47,176, 9, 51,177, 0, 4,237,177, 1, 4,237,177, 4, 4,237,177, 5, 4,237, 48, 49, 37, 21,
+ 33, 53, 1, 17, 33, 53, 33, 17, 33, 53, 4,121,251,223, 4, 33,251,223, 3,119,252,137,184,170,170, 4, 60,252, 68,170, 2,104,
+170, 0, 0, 0, 0, 3, 0, 79, 0,105, 4,130, 4,158, 0, 25, 0, 51, 0, 63, 0, 0, 0, 50, 22, 23, 22, 23, 22, 21, 20, 7,
+ 6, 7, 14, 1, 34, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 4, 34, 7, 6, 7, 14, 1, 21, 20, 22, 23, 22, 23, 22, 50, 55,
+ 54, 55, 62, 1, 53, 52, 38, 39, 38, 39, 7, 51, 17, 33, 21, 33, 17, 35, 17, 33, 53, 33, 1,250,221,190, 79, 79, 39, 39, 39, 39,
+ 79, 79,190,221,190, 79, 79, 39, 39, 39, 39, 79, 79, 1,126,163, 71, 69, 58, 59, 57, 57, 59, 58, 69, 71,163, 70, 70, 58, 59, 57,
+ 57, 59, 58, 70,222,140, 1, 20,254,236,140,254,237, 1, 19, 4,158, 80, 79, 79, 95, 95,112,109, 95, 95, 79, 78, 80, 80, 78, 79,
+ 95, 95,109,112, 95, 95, 79, 79, 61, 30, 30, 57, 59,140, 83, 80,140, 59, 57, 30, 30, 30, 30, 57, 59,140, 80, 83,140, 59, 57, 30,
+ 22,254,235,140,254,238, 1, 18,140, 0, 0, 0, 0, 3, 0, 79, 0,105, 4,130, 4,158, 0, 25, 0, 51, 0, 55, 0, 0, 0, 50,
+ 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 14, 1, 34, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 4, 34, 7, 6, 7, 14, 1, 21,
+ 20, 22, 23, 22, 23, 22, 50, 55, 54, 55, 62, 1, 53, 52, 38, 39, 38, 39, 19, 21, 33, 53, 1,250,221,190, 79, 79, 39, 39, 39, 39,
+ 79, 79,190,221,190, 79, 79, 39, 39, 39, 39, 79, 79, 1,126,163, 71, 69, 58, 59, 57, 57, 59, 58, 69, 71,163, 70, 70, 58, 59, 57,
+ 57, 59, 58, 70,194,253, 77, 4,158, 80, 79, 79, 95, 95,112,109, 95, 95, 79, 78, 80, 80, 78, 79, 95, 95,109,112, 95, 95, 79, 79,
+ 61, 30, 30, 57, 59,140, 83, 80,140, 59, 57, 30, 30, 30, 30, 57, 59,140, 80, 83,140, 59, 57, 30,254,213,140,140, 0, 3, 0, 79,
+ 0,105, 4,130, 4,158, 0, 25, 0, 51, 0, 63, 0, 0, 0, 50, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 14, 1, 34, 38, 39, 38,
+ 39, 38, 53, 52, 55, 54, 55, 54, 4, 34, 7, 6, 7, 14, 1, 21, 20, 22, 23, 22, 23, 22, 50, 55, 54, 55, 62, 1, 53, 52, 38, 39,
+ 38, 39, 5, 55, 23, 55, 23, 7, 23, 7, 39, 7, 39, 55, 1,250,221,190, 79, 79, 39, 39, 39, 39, 79, 79,190,221,190, 79, 79, 39,
+ 39, 39, 39, 79, 79, 1,126,163, 71, 69, 58, 59, 57, 57, 59, 58, 69, 71,163, 70, 70, 58, 59, 57, 57, 59, 58, 70,254, 66, 99,196,
+195, 99,195,194, 99,194,194, 99,194, 4,158, 80, 79, 79, 95, 95,112,109, 95, 95, 79, 78, 80, 80, 78, 79, 95, 95,109,112, 95, 95,
+ 79, 79, 61, 30, 30, 57, 59,140, 83, 80,140, 59, 57, 30, 30, 30, 30, 57, 59,140, 80, 83,140, 59, 57, 30,173, 99,196,195, 99,195,
+194, 99,194,194, 99,194, 0, 0, 0, 3, 0, 79, 0,105, 4,130, 4,158, 0, 25, 0, 51, 0, 55, 0, 0, 0, 50, 22, 23, 22, 23,
+ 22, 21, 20, 7, 6, 7, 14, 1, 34, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 4, 34, 7, 6, 7, 14, 1, 21, 20, 22, 23, 22,
+ 23, 22, 50, 55, 54, 55, 62, 1, 53, 52, 38, 39, 38, 39, 31, 1, 1, 39, 1,250,221,190, 79, 79, 39, 39, 39, 39, 79, 79,190,221,
+190, 79, 79, 39, 39, 39, 39, 79, 79, 1,126,163, 71, 69, 58, 59, 57, 57, 59, 58, 69, 71,163, 70, 70, 58, 59, 57, 57, 59, 58, 70,
+ 44, 99,254, 24, 99, 4,158, 80, 79, 79, 95, 95,112,109, 95, 95, 79, 78, 80, 80, 78, 79, 95, 95,109,112, 95, 95, 79, 79, 61, 30,
+ 30, 57, 59,140, 83, 80,140, 59, 57, 30, 30, 30, 30, 57, 59,140, 80, 83,140, 59, 57, 30, 75, 99,254, 24, 99, 0, 0, 3, 0, 79,
+ 0,105, 4,130, 4,158, 0, 3, 0, 29, 0, 55, 0, 0, 1, 51, 17, 35, 18, 50, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 14, 1,
+ 34, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 4, 34, 7, 6, 7, 14, 1, 21, 20, 22, 23, 22, 23, 22, 50, 55, 54, 55, 62, 1,
+ 53, 52, 38, 39, 38, 39, 1,233,252,252, 17,221,190, 79, 79, 39, 39, 39, 39, 79, 79,190,221,190, 79, 79, 39, 39, 39, 39, 79, 79,
+ 1,126,163, 71, 69, 58, 59, 57, 57, 59, 58, 69, 71,163, 70, 70, 58, 59, 57, 57, 59, 58, 70, 3, 16,254,207, 2,191, 80, 79, 79,
+ 95, 95,112,109, 95, 95, 79, 78, 80, 80, 78, 79, 95, 95,109,112, 95, 95, 79, 79, 61, 30, 30, 57, 59,140, 83, 80,140, 59, 57, 30,
+ 30, 30, 30, 57, 59,140, 80, 83,140, 59, 57, 30, 0, 4, 0, 79, 0,105, 4,130, 4,158, 0, 14, 0, 24, 0, 50, 0, 76, 0, 0,
+ 1, 50, 22, 23, 30, 1, 21, 20, 6, 35, 34, 38, 53, 52, 54, 22, 34, 6, 20, 22, 51, 50, 54, 53, 52, 2, 50, 22, 23, 22, 23, 22,
+ 21, 20, 7, 6, 7, 14, 1, 34, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 4, 34, 7, 6, 7, 14, 1, 21, 20, 22, 23, 22, 23,
+ 22, 50, 55, 54, 55, 62, 1, 53, 52, 38, 39, 38, 39, 2,104, 55, 98, 37, 38, 39,156,113,113,151,154,167,110, 78, 76, 56, 56, 79,
+244,221,190, 79, 79, 39, 39, 39, 39, 79, 79,190,221,190, 79, 79, 39, 39, 39, 39, 79, 79, 1,126,163, 71, 69, 58, 59, 57, 57, 59,
+ 58, 69, 71,163, 70, 70, 58, 59, 57, 57, 59, 58, 70, 3,143, 41, 39, 37, 96, 56,110,154,151,113,113,156,135, 77,112, 76, 77, 55,
+ 55, 1,228, 80, 79, 79, 95, 95,112,109, 95, 95, 79, 78, 80, 80, 78, 79, 95, 95,109,112, 95, 95, 79, 79, 61, 30, 30, 57, 59,140,
+ 83, 80,140, 59, 57, 30, 30, 30, 30, 57, 59,140, 80, 83,140, 59, 57, 30, 0, 0, 0, 7, 0, 79, 0,105, 4,130, 4,158, 0, 25,
+ 0, 33, 0, 39, 0, 47, 0, 55, 0, 61, 0, 69, 0, 0, 0, 50, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 14, 1, 34, 38, 39, 38,
+ 39, 38, 53, 52, 55, 54, 55, 54, 5, 17, 37, 38, 39, 38, 39, 38, 13, 2, 54, 53, 52, 3, 39, 17, 54, 55, 54, 55, 54, 5, 17, 7,
+ 22, 23, 22, 23, 22, 45, 2, 6, 21, 20, 19, 5, 17, 6, 7, 6, 7, 6, 1,250,221,190, 79, 79, 39, 39, 39, 39, 79, 79,190,221,
+190, 79, 79, 39, 39, 39, 39, 79, 79, 1,102, 0,255, 15, 18, 58, 70, 45, 1, 6,254,236, 1, 19, 28, 84,254, 49, 45, 70, 58, 17,
+254,158,254, 15, 17, 58, 69, 46,254,251, 1, 19,254,236, 27, 83, 0,255, 49, 46, 69, 58, 18, 4,158, 80, 79, 79, 95, 95,112,109,
+ 95, 95, 79, 78, 80, 80, 78, 79, 95, 95,109,112, 95, 95, 79, 79, 65,254,207,154, 19, 19, 57, 30, 19,238,150,150, 70, 80, 81,254,
+188,153,254,210, 7, 19, 30, 57, 18,131, 1, 46,153, 18, 18, 57, 30, 19,235,150,150, 69, 81, 80, 1, 68,154, 1, 49, 7, 19, 30,
+ 57, 19, 0, 0, 0, 4, 0, 79, 0,105, 4,130, 4,158, 0, 3, 0, 7, 0, 33, 0, 59, 0, 0, 1, 33, 21, 33, 17, 33, 21, 33,
+ 18, 50, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 14, 1, 34, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 4, 34, 7, 6, 7, 14,
+ 1, 21, 20, 22, 23, 22, 23, 22, 50, 55, 54, 55, 62, 1, 53, 52, 38, 39, 38, 39, 1, 43, 2,123,253,133, 2,123,253,133,207,221,
+190, 79, 79, 39, 39, 39, 39, 79, 79,190,221,190, 79, 79, 39, 39, 39, 39, 79, 79, 1,126,163, 71, 69, 58, 59, 57, 57, 59, 58, 69,
+ 71,163, 70, 70, 58, 59, 57, 57, 59, 58, 70, 2, 59,103, 1, 90,102, 1,214, 80, 79, 79, 95, 95,112,109, 95, 95, 79, 78, 80, 80,
+ 78, 79, 95, 95,109,112, 95, 95, 79, 79, 61, 30, 30, 57, 59,140, 83, 80,140, 59, 57, 30, 30, 30, 30, 57, 59,140, 80, 83,140, 59,
+ 57, 30, 0, 0, 0, 3, 0, 79, 0,105, 4,130, 4,158, 0, 25, 0, 51, 0, 55, 0, 0, 0, 50, 22, 23, 22, 23, 22, 21, 20, 7,
+ 6, 7, 14, 1, 34, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 4, 34, 7, 6, 7, 14, 1, 21, 20, 22, 23, 22, 23, 22, 50, 55,
+ 54, 55, 62, 1, 53, 52, 38, 39, 38, 39, 19, 33, 53, 33, 1,250,221,190, 79, 79, 39, 39, 39, 39, 79, 79,190,221,190, 79, 79, 39,
+ 39, 39, 39, 79, 79, 1,126,163, 71, 69, 58, 59, 57, 57, 59, 58, 69, 71,163, 70, 70, 58, 59, 57, 57, 59, 58, 70, 50,254,109, 1,
+147, 4,158, 80, 79, 79, 95, 95,112,109, 95, 95, 79, 78, 80, 80, 78, 79, 95, 95,109,112, 95, 95, 79, 79, 61, 30, 30, 57, 59,140,
+ 83, 80,140, 59, 57, 30, 30, 30, 30, 57, 59,140, 80, 83,140, 59, 57, 30,254, 73,140, 0, 0, 0, 0, 3, 0, 80, 0,105, 4,131,
+ 4,156, 0, 3, 0, 7, 0, 19, 0, 0, 37, 17, 33, 17, 3, 33, 17, 33, 1, 51, 17, 33, 21, 33, 17, 35, 17, 33, 53, 33, 3,244,
+252,232,140, 4, 51,251,205, 1,210,140, 1, 56,254,200,140,254,201, 1, 55,245, 3, 27,252,229, 3,167,251,205, 3,152,254,199,
+140,254,202, 1, 54,140, 0, 0, 0, 3, 0, 80, 0,105, 4,131, 4,156, 0, 3, 0, 7, 0, 11, 0, 0, 37, 17, 33, 17, 3, 33,
+ 17, 33, 1, 21, 33, 53, 3,244,252,232,140, 4, 51,251,205, 3,114,253, 77,245, 3, 27,252,229, 3,167,251,205, 2, 95,140,140,
+ 0, 3, 0, 80, 0,105, 4,131, 4,156, 0, 3, 0, 7, 0, 19, 0, 0, 37, 17, 33, 17, 3, 33, 17, 33, 19, 55, 9, 1, 23, 9,
+ 1, 7, 9, 1, 39, 1, 3,244,252,232,140, 4, 51,251,205,172, 99, 1, 11, 1, 12, 99,254,244, 1, 8, 99,254,248,254,246, 99,
+ 1, 10,245, 3, 27,252,229, 3,167,251,205, 3, 35, 99,254,245, 1, 12, 99,254,244,254,248, 99, 1, 8,254,247, 99, 1, 9, 0,
+ 0, 3, 0, 80, 0,105, 4,131, 4,156, 0, 3, 0, 7, 0, 11, 0, 0, 1, 51, 17, 35, 5, 17, 33, 17, 3, 33, 17, 33, 1,233,
+252,252, 2, 11,252,232,140, 4, 51,251,205, 3, 16,254,207,234, 3, 27,252,229, 3,167,251,205, 0, 1, 1,233, 2, 47, 2,229,
+ 3, 96, 0, 3, 0, 21,185, 0, 2, 1, 1,181, 0, 4, 1, 29, 0, 4, 16,212,236, 49, 0, 16,212,236, 48, 1, 51, 17, 35, 1,
+233,252,252, 3, 96,254,207, 0, 0, 1, 1, 8, 1,155, 3,201, 4, 55, 0, 9, 0, 0, 1, 33, 19, 23, 33, 7, 23, 39, 7, 19,
+ 1, 9, 1, 12, 84, 83, 1, 12,217, 84,218,218, 83, 3, 56, 0,255,255,158,255,158,158, 0,255, 0, 2, 0, 88, 1, 96, 4,121,
+ 3,195, 0, 3, 0, 31, 0, 0, 1, 21, 33, 53, 17, 30, 1, 51, 50, 55, 54, 55, 62, 1, 51, 50, 22, 23, 21, 46, 1, 35, 34, 6,
+ 7, 6, 7, 6, 35, 34, 38, 39, 4,121,251,223, 74,137, 70, 93,116, 22, 10, 75,100, 53, 83,146, 78, 73,141, 79, 51,103, 77, 11,
+ 22,113, 90, 79,143, 75, 2, 12,172,172, 1,183, 63, 60, 54, 11, 4, 32, 22, 55, 60,174, 64, 59, 24, 34, 4, 10, 51, 55, 59, 0,
+ 0, 3, 0, 88,254, 65, 4,121, 6, 21, 0, 6, 0, 13, 0, 17, 0, 0, 55, 53, 1, 21, 1, 53, 37, 19, 21, 1, 53, 1, 21, 5,
+ 1, 21, 33, 53, 88, 4, 33,251,223, 3, 35,254,251,223, 4, 33,252,223, 3, 33,251,223,202,182,254,180,168,254,181,184,231, 3,
+172,182, 1, 76,168, 1, 75,184,231,254, 10,170,170, 0, 0, 0, 0, 3, 0, 88,254, 65, 4,121, 6, 21, 0, 6, 0, 13, 0, 17,
+ 0, 0, 37, 13, 1, 21, 1, 53, 9, 1, 45, 1, 53, 1, 21, 1, 21, 33, 21, 33, 4,121,252,221, 3, 35,251,223, 4, 33,251,223,
+ 3, 33,252,223, 4, 33,251,223, 4, 33,251,223,202,234,231,184, 1, 75,168, 1, 76, 2, 12,234,231,184,254,181,168,254,180, 86,
+170, 0, 0, 0, 0, 2, 0, 86, 0, 0, 4,119, 4, 63, 0, 6, 0, 10, 0, 0, 1, 13, 1, 21, 1, 53, 1, 53, 33, 53, 33, 4,
+119,252,223, 3, 33,251,223, 4, 33,251,223, 4, 33, 2,137,234,231,184, 1, 75,168, 1, 76, 86,170, 0, 0, 0, 0, 2, 0, 88,
+ 0, 0, 4,121, 4, 63, 0, 6, 0, 10, 0, 0, 19, 53, 1, 21, 1, 53, 37, 1, 53, 33, 21, 88, 4, 33,251,223, 3, 35,252,221,
+ 4, 33, 2,137,182,254,180,168,254,181,184,231, 1,246,170,170, 0, 2, 0, 86,255, 4, 4,119, 5,177, 0, 9, 0, 24, 0, 0,
+ 1, 36, 55, 21, 6, 5, 6, 5, 53, 36, 1, 21, 38, 37, 38, 37, 53, 36, 55, 36, 55, 21, 0, 5, 4, 2,164, 1, 34,177,203,254,
+248,222,254,144, 1,110, 2,179,183,254,228,237,254,159, 1, 87,247, 1, 28,183,254,221,254,108, 1,148, 4, 26,200,207,252,220,
+156,131, 56,200, 54,252,115,239,203,150,125, 61,166, 57,130,151,201,239,254,222, 93, 79, 0, 0, 0, 2, 0, 86,255, 4, 4,119,
+ 5,177, 0, 9, 0, 24, 0, 0, 1, 22, 5, 21, 36, 39, 36, 39, 53, 22, 3, 0, 37, 36, 1, 53, 22, 5, 22, 5, 21, 4, 7, 4,
+ 7, 2, 41,224, 1,110,254,144,222,254,248,203,177,177, 1, 35, 1,148,254,108,254,221,183, 1, 28,247, 1, 87,254,159,237,254,
+228,183, 4, 26,154, 54,200, 56,131,156,220,252,207,251, 17, 1, 48, 79, 93, 1, 34,239,201,151,130, 57,166, 61,125,150,203, 0,
+ 0, 2, 0, 86,254,140, 4,119, 6, 41, 0, 37, 0, 42, 0, 0, 1, 23, 7, 54, 55, 21, 6, 7, 3, 22, 23, 21, 38, 39, 7, 23,
+ 4, 23, 21, 38, 37, 38, 39, 3, 39, 19, 38, 39, 53, 22, 23, 55, 38, 37, 53, 36, 63, 1, 3, 55, 6, 7, 22, 3,100,162, 77,106,
+ 84,129,152, 86,202,165,169,254, 51, 7, 1, 8,203,177,254,222, 31, 33,179,162,186,163,208,247,182, 51,210,254,242, 1, 97,237,
+ 52,109, 34, 99,106, 88, 6, 41, 51,245, 83, 93,239,135, 91,254,238,101,165,239,185,143,161, 4,156,220,252,207,200, 21, 20,253,
+200, 51, 2, 78, 64, 30,200, 37, 72,163, 90, 45,166, 61,125, 29,254,164,107, 36, 21, 20, 0, 0, 0, 2, 0, 86,254,140, 4,119,
+ 6, 41, 0, 36, 0, 40, 0, 0, 1, 23, 3, 22, 23, 21, 4, 15, 1, 54, 37, 21, 4, 15, 1, 3, 39, 19, 6, 7, 53, 54, 63, 1,
+ 6, 7, 53, 54, 37, 55, 36, 39, 53, 22, 5, 22, 31, 1, 7, 55, 38, 3, 37,162,165,154,187,255, 0,203, 68,209, 1, 62,254,146,
+224, 22,161,162, 87,119, 90,140,169, 78,231,156,204, 1, 2, 40,254,229,219,183, 1, 28, 43, 47,109, 5, 34, 15, 6, 41, 51,253,
+243, 51, 32,166, 43, 83,216,105, 48,200, 54,154, 15,254, 0, 51, 1, 22,104,105,252,152,121,247,135,172,239,203,106,127,101,229,
+239,203,150, 23, 20,220, 14, 8, 3, 0, 0, 0, 0, 2, 0, 88,255, 91, 4,121, 5,167, 0, 15, 0, 19, 0, 0, 1, 23, 7, 51,
+ 21, 33, 1, 33, 21, 33, 3, 39, 55, 35, 17, 33, 9, 1, 33, 17, 3, 80,158, 89,228,254,216,254,230, 2, 66,253,122,114,158, 89,
+228, 2,134,254,162, 1, 26,254,104, 5,167, 63,221,170,253, 64,170,254,228, 63,221, 4, 20,252,150, 2,192,253, 64, 0, 0, 0,
+ 0, 2, 0, 88,255, 91, 4,121, 5,167, 0, 15, 0, 19, 0, 0, 1, 23, 7, 51, 17, 33, 3, 39, 55, 35, 53, 33, 1, 33, 53, 33,
+ 23, 1, 33, 17, 3, 80,158, 89,228,253,122,114,158, 89,228, 1, 40, 1, 26,253,190, 2,134,115,254,230, 1,152, 5,167, 63,221,
+251,236,254,228, 63,221,170, 2,192,170,170,253, 64, 2,192, 0, 0, 1, 0, 88,255, 62, 4,121, 4,244, 0, 20, 0, 0, 19, 33,
+ 21, 33, 17, 33, 21, 33, 23, 7, 33, 21, 33, 7, 39, 55, 33, 53, 33, 55, 33, 88, 4, 33,252,137, 3,119,254,210, 32, 82, 1, 96,
+254, 24,167,132, 82,254,160, 1,232,103,253,177, 4,244,170,253,152,170, 26,102,170,208,106,102,170,128, 0, 0, 0, 1, 0, 88,
+255, 62, 4,121, 4,244, 0, 20, 0, 0, 37, 21, 33, 7, 39, 55, 33, 53, 33, 55, 33, 53, 33, 17, 33, 53, 33, 17, 33, 23, 7, 4,
+121,254, 24,167,132, 82,254,160, 1,232,103,253,177, 3,119,252,137, 4, 33,254,210, 32, 82,184,170,208,106,102,170,128,170, 2,
+104,170,252, 68, 26,102, 0, 0, 0, 1, 0, 86,254,237, 4,119, 4, 63, 0, 37, 0, 0, 37, 38, 39, 38, 35, 34, 6, 7, 53, 62,
+ 1, 51, 50, 22, 23, 55, 37, 53, 1, 21, 13, 1, 21, 37, 7, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 39, 3, 39, 2, 22, 29, 23,
+ 52, 51, 79,141, 73, 78,146, 83, 58, 90, 29, 48,253,236, 4, 33,252,223, 3, 33,254,120, 50, 88, 73, 70,137, 74, 75,143, 79, 81,
+100, 62,136, 51, 11, 5, 12, 59, 64,174, 60, 55, 22, 12,210,167,168, 1, 75,184,231,234,182,123,223, 34, 60, 63,175, 59, 55, 41,
+254,240, 31, 0, 0, 1, 0, 86,254,237, 4,119, 4, 63, 0, 38, 0, 0, 19, 45, 1, 53, 1, 21, 5, 23, 3, 22, 51, 50, 54, 55,
+ 21, 14, 1, 35, 34, 39, 3, 39, 19, 38, 39, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 23, 55, 5, 86, 3, 33,252,223, 4, 33,
+254, 63, 69, 62, 88, 73, 70,137, 74, 75,143, 79, 81,100, 62,136, 67, 29, 23, 52, 51, 79,141, 73, 78,146, 83, 58, 90, 29, 48,253,
+236, 1,182,234,231,184,254,181,168,141, 16,254,237, 34, 60, 63,175, 59, 55, 41,254,240, 31, 1, 39, 11, 5, 12, 59, 64,174, 60,
+ 55, 22, 12,212,167, 0, 0, 0, 0, 2, 0, 86,254, 75, 4,119, 5,177, 0, 31, 0, 46, 0, 0, 5, 38, 39, 38, 35, 34, 6, 7,
+ 53, 62, 1, 51, 50, 23, 22, 23, 19, 23, 3, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 39, 3, 39, 1, 0, 5, 4, 1, 21, 38, 37,
+ 38, 37, 53, 36, 55, 36, 55, 2, 22, 29, 23, 52, 51, 79,141, 73, 78,146, 83, 54, 49, 45, 29, 78,136, 83, 88, 73, 70,137, 74, 75,
+143, 79, 81,100, 83,136, 2,185,254,221,254,108, 1,148, 1, 35,183,254,228,247,254,169, 1, 97,237, 1, 28,183, 19, 11, 5, 12,
+ 59, 64,174, 60, 55, 11, 11, 12, 1, 87, 31,254,145, 34, 60, 63,175, 59, 55, 41,254,148, 31, 6, 88,254,208, 79, 93,254,222,239,
+201,151,130, 57,166, 61,125,150,203, 0, 0, 0, 0, 2, 0, 86,254, 75, 4,119, 5,177, 0, 31, 0, 46, 0, 0, 5, 38, 39, 38,
+ 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 22, 23, 19, 23, 3, 22, 51, 50, 54, 55, 21, 14, 1, 35, 34, 39, 3, 39, 1, 53, 22, 5,
+ 22, 5, 21, 4, 7, 4, 7, 53, 0, 37, 36, 2, 22, 29, 23, 52, 51, 79,141, 73, 78,146, 83, 54, 49, 45, 29, 78,136, 83, 88, 73,
+ 70,137, 74, 75,143, 79, 81,100, 83,136,254,152,183, 1, 28,237, 1, 97,254,169,247,254,231,186, 1, 35, 1,148,254,108, 19, 11,
+ 5, 12, 59, 64,174, 60, 55, 11, 11, 12, 1, 87, 31,254,145, 34, 60, 63,175, 59, 55, 41,254,148, 31, 6, 88,239,203,150,125, 61,
+166, 57,130,148,204,239, 1, 34, 93, 79, 0, 0,255,255, 0, 80, 1,234, 4,127, 3, 27, 16, 7, 6,153, 0, 0, 1,234, 0, 0,
+255,255, 0, 73, 0, 98, 4,138, 4,163, 16, 6, 7, 84, 0, 0, 0, 1, 0,114, 1, 76, 4, 82, 3,140, 0, 7, 0, 0, 1, 17,
+ 1, 53, 5, 17, 1, 21, 2,162,253,208, 1,176, 2, 48, 2,122,254,210, 1, 74,194,250, 1, 46,254,182,194, 0, 0, 2, 0,146,
+ 0, 0, 4, 63, 4,196, 0, 4, 0, 9, 0, 0, 51, 17, 9, 1, 17, 37, 33, 17, 9, 1,146, 1,214, 1,214,252,206, 2,184,254,
+164,254,164, 2,135, 2, 61,253,195,253,121,122, 1,213, 1,171,254, 85, 0, 0, 0, 1, 0,146, 3, 63, 4, 62, 5,248, 0, 5,
+ 0, 0, 9, 1, 35, 9, 1, 35, 2,104, 1,214,163,254,205,254,205,163, 5,248,253, 71, 1,199,254, 57, 0, 0, 0, 1, 0,146,
+254,242, 4, 62, 1,172, 0, 5, 0, 0, 9, 1, 51, 9, 1, 51, 2,104,254, 42,163, 1, 51, 1, 51,163,254,242, 2,186,254, 56,
+ 1,200, 0, 0, 0, 2, 0,146, 0, 0, 4, 62, 3,142, 0, 3, 0, 9, 0, 0, 19, 33, 21, 33, 5, 1, 35, 9, 1, 35,156, 3,
+153,252,103, 1,204, 1,214,163,254,205,254,205,163, 3,142,114, 99,253, 71, 1,199,254, 57, 0, 0, 3, 0,146, 0, 0, 4, 62,
+ 4,136, 0, 3, 0, 7, 0, 13, 0, 0, 19, 33, 21, 33, 21, 33, 21, 33, 5, 1, 35, 9, 1, 35,156, 3,153,252,103, 3,153,252,
+103, 1,204, 1,214,163,254,205,254,205,163, 4,136,114,136,114, 99,253, 71, 1,199,254, 57, 0, 0, 1, 1,207,254,242, 3,119,
+ 6, 20, 0, 5, 0, 0, 1, 33, 21, 35, 17, 35, 1,207, 1,168,240,184, 6, 20,143,249,109, 0, 0, 1, 1, 90,254,242, 3, 2,
+ 6, 20, 0, 5, 0, 0, 1, 17, 35, 17, 35, 53, 3, 2,184,240, 6, 20,248,222, 6,147,143, 0, 0, 1, 1,207,254,242, 3,119,
+ 6, 20, 0, 5, 0, 0, 1, 17, 51, 17, 51, 21, 1,207,184,240,254,242, 7, 34,249,109,143, 0, 0, 1, 1, 90,254,242, 3, 2,
+ 6, 20, 0, 5, 0, 0, 1, 33, 53, 51, 17, 51, 3, 2,254, 88,240,184,254,242,143, 6,147, 0, 0, 2, 2, 37, 0,150, 4,175,
+ 3, 67, 0, 3, 0, 7, 0, 0, 1, 33, 21, 33, 7, 51, 17, 35, 2,242, 1,189,254, 67,205,114,114, 3, 67,114, 91,254, 32, 0,
+ 0, 2, 0, 13, 0,150, 2,151, 3, 67, 0, 3, 0, 7, 0, 0, 19, 33, 21, 33, 5, 51, 17, 35, 13, 1,189,254, 67, 2, 24,114,
+114, 3, 67,114, 91,254, 32, 0, 0, 2, 2, 37, 2,209, 4,175, 5,126, 0, 3, 0, 7, 0, 0, 1, 33, 21, 33, 3, 51, 17, 35,
+ 2,242, 1,189,254, 67,205,114,114, 3, 67,114, 2,173,254, 32, 0, 2, 0, 13, 2,209, 2,151, 5,126, 0, 3, 0, 7, 0, 0,
+ 19, 33, 21, 33, 1, 51, 17, 35, 13, 1,189,254, 67, 2, 24,114,114, 3, 67,114, 2,173,254, 32, 0, 1, 0, 88, 1,115, 4,121,
+ 3, 94, 0, 5, 0, 0, 1, 21, 33, 17, 35, 17, 4,121,252,135,168, 3, 94,172,254,193, 1,235, 0, 2, 0, 97, 1, 2, 4,112,
+ 5, 18, 0, 7, 0, 15, 0, 0, 19, 36, 5, 2, 19, 4, 37, 18, 1, 18, 3, 4, 37, 2, 19, 36,231, 1,129, 1,129,137,137,254,
+127,254,127,137,254,241,184,184, 2, 7, 2, 8,184,184,253,248, 1,138,137,137, 1,128, 1,130,138,138,254,126,253,248, 1,244,
+ 2, 28,177,177,254, 12,253,229,177, 0, 0, 0,255,255, 0, 6, 1,176, 4,203, 4, 24, 16, 6, 9, 58, 0,156, 0, 2, 0, 6,
+ 1,176, 4,203, 4, 24, 0, 7, 0, 15, 0, 0, 19, 16, 37, 54, 32, 23, 4, 17, 37, 33, 38, 39, 38, 34, 7, 6, 6, 1, 49,152,
+ 1, 49,153, 1, 50,251,192, 3,187, 42,192,122,244,122,192, 1,176, 1, 96,176, 88, 88,176,254,160,114,197,111, 71, 71,110, 0,
+ 0, 2, 0,184, 1, 89, 4, 24, 4, 24, 0, 8, 0, 13, 0, 0, 0, 32, 23, 22, 23, 9, 1, 54, 55, 4, 34, 7, 9, 1, 1,210,
+ 1, 44,155, 74, 53,254, 80,254, 80, 53, 74, 1,173,248,133, 1, 2, 1, 0, 4, 24, 88, 42, 55,253,250, 2, 6, 55, 42, 35, 76,
+254,200, 1, 56, 0, 2, 0,166, 0,229, 4, 21, 4, 80, 0, 7, 0, 25, 0, 0, 0, 34, 6, 20, 22, 50, 54, 52, 3, 50, 23, 30,
+ 1, 21, 20, 6, 35, 34, 39, 7, 39, 55, 38, 53, 52, 54, 3, 4,196,138,135,199,140,238,158,105, 53, 54,216,157,127, 93,204, 81,
+205, 66,214, 3,201,137,199,135,137,195, 1, 18,111, 51,133, 78,152,214, 69,204, 81,204, 92,124,157,216, 0, 0, 0, 6, 0, 71,
+ 0,233, 4,138, 5, 43, 0, 3, 0, 45, 0, 55, 0, 65, 0, 74, 0, 84, 0, 0, 1, 51, 53, 35, 17, 21, 20, 6, 34, 38, 53, 52,
+ 54, 59, 1, 53, 35, 34, 38, 52, 54, 50, 22, 29, 1, 51, 53, 52, 54, 50, 22, 20, 6, 43, 1, 21, 51, 50, 22, 21, 20, 6, 34, 38,
+ 61, 1, 1, 53, 52, 38, 35, 34, 6, 20, 22, 51, 19, 35, 34, 6, 21, 20, 22, 50, 54, 53, 1, 51, 50, 54, 52, 38, 34, 6, 21, 17,
+ 21, 20, 22, 50, 54, 53, 52, 38, 35, 2, 1,207,207,130,183,129,129, 89,120,120, 89,129,129,183,130,207,130,184,128,128, 90,120,
+120, 90,128,128,184,130,254,201, 69, 49, 47, 69, 69, 48,117,117, 48, 69, 69, 96, 69, 1,159,118, 47, 69, 68, 97, 69, 69, 97, 68,
+ 69, 47, 2,162,208,254,200,119, 90,128,129, 92, 90,130,208,130,182,129,128, 90,119,119, 90,128,129,182,130,208,130, 90, 92,129,
+128, 90,119, 1,160,117, 48, 69, 69, 96, 69,254, 96, 69, 47, 49, 69, 69, 48, 2, 21, 69, 96, 69, 69, 48,253,235,117, 48, 69, 69,
+ 49, 47, 69, 0, 0, 1, 0, 88, 1,115, 4,121, 3, 94, 0, 5, 0, 0, 1, 33, 17, 51, 17, 33, 4,121,251,223,168, 3,121, 1,
+115, 1,235,254,193, 0, 0, 0, 0, 1, 1, 43, 2,209, 3,181, 5,126, 0, 5, 0, 0, 1, 33, 17, 35, 17, 33, 3,181,253,232,
+114, 2,138, 5, 12,253,197, 2,173, 0, 0, 0, 0, 1, 1, 28, 2,209, 3,166, 5,126, 0, 5, 0, 0, 1, 53, 33, 17, 35, 17,
+ 1, 28, 2,138,114, 5, 12,114,253, 83, 2, 59, 0, 1, 1, 43,255,142, 3,181, 2, 59, 0, 5, 0, 0, 33, 21, 33, 17, 51, 17,
+ 3,181,253,118,114,114, 2,173,253,197, 0, 0, 0, 1, 1, 28,255,142, 3,166, 2, 59, 0, 5, 0, 0, 41, 1, 17, 51, 17, 33,
+ 1, 28, 2, 24,114,253,118, 2, 59,253, 83, 0, 0, 1, 2, 0,254, 0, 4, 76, 6, 14, 0, 25, 0, 0, 1, 17, 52, 55, 26, 1,
+ 51, 50, 22, 21, 20, 6, 35, 34, 39, 38, 39, 46, 1, 35, 34, 3, 2, 21, 48, 17, 2, 1, 3, 12,190,202, 80,100, 64, 55, 42, 29,
+ 24, 15, 6, 9, 16,104, 17, 8,254, 0, 3,170, 36,129, 2, 3, 1,188, 84, 65, 54, 63, 19, 16, 38, 15, 72,253,149,254,211, 2,
+251,246, 0, 0, 0, 1, 0,124,254, 26, 2,200, 6, 40, 0, 25, 0, 0, 1, 17, 20, 7, 10, 1, 35, 34, 38, 53, 52, 54, 51, 50,
+ 23, 22, 23, 30, 1, 51, 50, 19, 18, 53, 48, 17, 2,199, 3, 12,190,202, 80,100, 64, 55, 42, 29, 24, 15, 6, 9, 16,104, 17, 8,
+ 6, 40,252, 86, 36,129,253,253,254, 68, 84, 65, 54, 63, 19, 16, 38, 15, 72, 2,107, 1, 45, 2, 4, 10, 0, 0, 0, 2, 0,104,
+ 0,233, 4,105, 4,201, 0, 7, 0, 11, 0, 0, 19, 33, 1, 33, 21, 33, 1, 35, 37, 33, 21, 33,104, 1, 92, 1,145, 1, 20,254,
+114,254,111,226, 2, 97, 1,160,254, 96, 4,201,252,222,190, 3, 34,190,190, 0, 0, 5, 0, 6, 1, 40, 4,203, 4, 73, 0, 4,
+ 0, 10, 0, 13, 0, 18, 0, 21, 0, 0, 9, 1, 33, 17, 33, 9, 1, 35, 3, 19, 51, 1, 23, 55, 33, 35, 17, 51, 27, 1, 39, 7,
+ 4,203,254, 81,252,234, 3, 22, 1, 5,254,211, 39,200,200, 39,254, 72,131,131,254,111, 57, 57,200,201,131,131, 2,185,254,111,
+ 3, 33,254,112, 1, 30,254,225,254,226, 2, 61,187,187,253,195, 1, 30,254,226,187,187, 0, 0, 0, 5, 0,125, 1, 40, 4, 84,
+ 4, 73, 0, 4, 0, 8, 0, 11, 0, 16, 0, 19, 0, 0, 1, 17, 35, 3, 19, 23, 33, 17, 33, 5, 23, 55, 33, 35, 17, 51, 27, 1,
+ 39, 7, 3,226,108,200,200,222,252, 41, 3,215,253,145,131,131,254,111,107,107,200,201,131,131, 1,154, 2, 61,254,225,254,226,
+114, 3, 33,114,187,187,253,195, 1, 30,254,226,187,187, 0, 0, 0, 43, 0, 50, 1,179, 4,159, 4, 34, 0, 11, 0, 23, 0, 35,
+ 0, 47, 0, 59, 0, 71, 0, 83, 0, 95, 0,107, 0,119, 0,131, 0,143, 0,155, 0,167, 0,179, 0,191, 0,203, 0,215, 0,227,
+ 0,239, 0,251, 1, 7, 1, 19, 1, 31, 1, 43, 1, 55, 1, 67, 1, 79, 1, 91, 1,103, 1,115, 1,127, 1,139, 1,151, 1,163,
+ 1,175, 1,187, 1,199, 1,211, 1,227, 1,239, 1,251, 2, 7, 0, 0, 19, 33, 50, 21, 17, 20, 35, 33, 34, 53, 17, 52, 23, 17,
+ 20, 51, 33, 50, 53, 17, 52, 35, 33, 34, 19, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59,
+ 1, 50, 55, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 7, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34,
+ 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21,
+ 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59,
+ 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 37, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34,
+ 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21,
+ 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59,
+ 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 39, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 7, 21, 20, 43, 1, 34,
+ 61, 1, 52, 59, 1, 50, 7, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 7, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 7, 21,
+ 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 7, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 7, 21, 20, 43, 1, 34, 61, 1, 52, 59,
+ 1, 50, 7, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 39, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34,
+ 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21,
+ 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59,
+ 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 23, 21, 20, 43, 1, 34,
+ 61, 1, 52, 59, 1, 50, 7, 50, 29, 1, 20, 43, 1, 34, 61, 1, 52, 34, 61, 1, 52, 51, 19, 21, 20, 43, 1, 34, 61, 1, 52, 59,
+ 1, 50, 23, 21, 20, 43, 1, 34, 61, 1, 52, 59, 1, 50, 5, 34, 61, 1, 52, 51, 33, 50, 29, 1, 20, 35,142, 3,181, 92, 92,252,
+ 75, 92, 61, 31, 3,181, 30, 30,252, 75, 31,108, 15, 31, 15, 15, 31, 15, 93, 15, 31, 15, 15, 31, 15,138, 15, 31, 16, 16, 31, 15,
+184, 16, 31, 15, 15, 31, 16, 92, 16, 30, 16, 16, 30, 16,184, 16, 30, 16, 16, 30, 16, 92, 15, 31, 16, 16, 31, 15, 92, 15, 31, 16,
+ 16, 31, 15, 92, 15, 31, 15, 15, 31, 15, 93, 16, 31, 15, 15, 31, 16,166, 16,105, 15, 15,105, 16,252,197, 15, 31, 15, 15, 31, 15,
+ 92, 15, 31, 15, 15, 31, 15, 93, 16, 31, 15, 15, 31, 16, 91, 15, 31, 15, 15, 31, 15, 93, 16, 31, 15, 15, 31, 16, 92, 16, 31, 15,
+ 15, 31, 16, 92, 15, 31, 16, 16, 31, 15, 92, 15, 31, 16, 16, 31, 15, 15, 15, 31, 16, 16, 31, 15, 92, 15, 31, 16, 16, 31, 15, 92,
+ 16, 31, 15, 15, 31, 16, 92, 16, 31, 15, 15, 31, 16, 92, 16, 30, 16, 16, 30, 16, 92, 16, 31, 15, 15, 31, 16, 93, 15, 31, 15, 15,
+ 31, 15, 92, 15, 31, 15, 15, 31, 15, 15, 15, 31, 15, 15, 31, 15, 92, 15, 31, 15, 15, 31, 15, 93, 16, 31, 15, 15, 31, 16, 92, 16,
+ 31, 15, 15, 31, 16, 92, 16, 31, 15, 15, 31, 16, 92, 16, 31, 15, 15, 31, 16, 92, 16, 30, 16, 16, 30, 16, 92, 15, 31, 16, 16, 31,
+ 15, 92, 15, 31, 15, 15, 31, 15,120, 16, 58, 15, 15, 58, 16, 16, 16, 16,102, 18, 30, 15, 62, 16, 31, 15, 15, 31, 16, 93, 16, 31,
+ 15, 15, 31, 16,253, 89, 15, 15, 1,173, 15, 15, 4, 34, 92,254, 73, 92, 92, 1,183, 92, 92,254, 73, 31, 31, 1,183, 31,254, 96,
+ 30, 16, 16, 30, 16, 15, 31, 16, 16, 31, 15, 76, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15,
+ 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31,
+ 16, 76, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15,
+ 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 77, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15,
+ 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31, 15, 15, 31,
+ 15, 75, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16,
+ 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 15, 31, 16, 92, 15,121,
+ 15, 15, 62, 14, 15, 30, 16,254,222, 31, 16, 16, 31, 15, 15, 31, 16, 16, 31, 15, 62, 16, 31, 15, 15, 31, 16, 0, 0, 5, 0, 6,
+ 1, 40, 4,203, 4, 73, 0, 4, 0, 10, 0, 13, 0, 18, 0, 21, 0, 0, 19, 1, 33, 17, 33, 9, 1, 51, 19, 3, 35, 41, 1, 23,
+ 37, 3, 19, 51, 17, 1, 33, 39, 6, 1,175, 3, 22,252,234,254,251, 1, 45, 39,200,200, 39, 1,184,254,250,131, 1, 14,200,200,
+ 57,254, 54, 1, 6,131, 2,185, 1,144,252,223, 1,145,254,225, 1, 30, 1, 31,187,187,254,225,254,226, 2, 61,253,195,187, 0,
+ 0, 1, 0, 72,255,211, 4,136, 2, 74, 0, 5, 0, 0, 5, 1, 55, 9, 1, 23, 2,104,253,224, 72, 1,216, 1,216, 72, 45, 2,
+ 45, 74,254, 28, 1,228, 74, 0, 0, 2, 1, 0,255, 52, 3,209, 6,161, 0, 3, 0, 7, 0, 0, 5, 33, 17, 33, 3, 17, 33, 17,
+ 1,114, 1,237,254, 19,114, 2,209, 90, 6,137,249, 5, 7,109,248,147, 0, 0, 0, 4, 0, 6,255, 52, 4,203, 6,161, 0, 3,
+ 0, 7, 0, 11, 0, 15, 0, 0, 23, 17, 33, 17, 37, 33, 17, 33, 53, 33, 53, 33, 53, 33, 17, 33, 6, 4,197,251,173, 3,225,252,
+ 31, 3,225,252, 31, 3,225,252, 31,204, 7,109,248,147,114, 1,186,172,236,170, 2,141, 0, 0, 0, 5, 0, 6,255, 52, 4,203,
+ 6,161, 0, 3, 0, 7, 0, 11, 0, 15, 0, 19, 0, 0, 1, 51, 21, 35, 17, 51, 21, 35, 1, 17, 33, 17, 37, 33, 17, 33, 53, 33,
+ 17, 33, 1,238,245,245,245,245,254, 24, 4,197,251,173, 3,225,252, 31, 3,225,252, 31, 4,111,246,254, 18,245,254,158, 7,109,
+248,147,114, 2,135,170, 3, 88, 0, 4, 0, 6,255, 52, 4,203, 6,161, 0, 3, 0, 8, 0, 12, 0, 17, 0, 0, 19, 9, 3, 33,
+ 17, 9, 2, 33, 17, 33, 9, 2, 17, 33,195, 1,165, 1,166,254, 90,254, 16, 3,225,254, 15,254, 16, 4, 83,251, 59, 4,197,251,
+173, 1,240, 1,241,252, 31, 2,220,254, 90, 1,166, 1,166,251, 36, 2,196,254, 16, 1,240,252,202, 7,109,252,173, 1,240,254,
+ 16, 2,225, 0,255,255, 0, 6,255, 52, 4,203, 6,161, 16, 38, 11,193, 0, 0, 16, 6, 8, 66, 0, 0, 0, 0, 0, 4, 0, 6,
+255, 52, 4,203, 6,161, 0, 13, 0, 24, 0, 28, 0, 39, 0, 0, 18, 16, 23, 22, 51, 50, 55, 54, 16, 39, 38, 35, 34, 7, 3, 33,
+ 17, 6, 7, 6, 35, 34, 39, 38, 39, 1, 33, 17, 33, 1, 54, 55, 54, 51, 50, 23, 22, 23, 17, 33,128,244,122,122,122,122,245,245,
+122,122,122,122,252, 3,225, 73,119,153,152,153,152,119, 72, 4, 83,251, 59, 4,197,251,173, 72,119,152,153,152,153,119, 73,252,
+ 31, 3,245,253,206,141, 71, 71,141, 2, 50,141, 71, 71,251, 36, 1,202, 95, 69, 88, 88, 69, 94,253,197, 7,109,253,168, 95, 68,
+ 88, 88, 69, 95, 1,231, 0, 0, 0, 3, 0, 6,254,162, 4,203, 7, 51, 0, 19, 0, 27, 0, 35, 0, 0, 18, 16, 37, 54, 55, 17,
+ 51, 17, 22, 23, 4, 16, 5, 6, 7, 17, 35, 17, 38, 39, 2, 16, 23, 22, 23, 17, 6, 7, 37, 17, 54, 55, 54, 16, 39, 38, 6, 1,
+ 49,114,115,152,114,115, 1, 50,254,206,115,114,152,115,114,183,244, 84, 84, 84, 84, 1, 64, 84, 84,245,245, 84, 1,124, 2,192,
+176, 66, 17, 1,244,254, 12, 17, 66,176,253, 64,176, 66, 17,254, 41, 1,215, 17, 66, 3, 41,253,206,141, 49, 15, 3,204, 15, 49,
+ 64,252, 52, 15, 49,141, 2, 50,141, 49, 0, 0,255,255, 0, 6, 0,116, 4,203, 5, 68, 16, 38, 11,193, 0, 0, 16, 7, 9, 37,
+ 0, 0, 0,200, 0, 3, 0, 6,255, 52, 4,203, 6,161, 0, 3, 0, 6, 0, 9, 0, 0, 23, 17, 33, 17, 37, 1, 33, 5, 1, 33,
+ 6, 4,197,251,173, 3, 89,252,167, 3,225,252,158, 3, 98,204, 7,109,248,147,198, 6, 53, 65,249,184, 0, 0, 0, 3, 0, 6,
+255, 52, 4,203, 6,161, 0, 3, 0, 6, 0, 9, 0, 0, 5, 33, 17, 33, 3, 17, 33, 7, 17, 33, 4,203,251, 59, 4,197,114,252,
+167,136, 3, 98,204, 7,109,249, 89, 6, 53, 65,249,184, 0, 0, 0, 4, 0, 6,255, 52, 4,203, 6,161, 0, 3, 0, 7, 0, 11,
+ 0, 14, 0, 0, 23, 17, 33, 17, 37, 33, 17, 1, 53, 1, 17, 33, 1, 17, 1, 6, 4,197,251,173, 3,225,252, 31, 3,225,252, 31,
+ 3,225,252,206,204, 7,109,248,147,114, 1, 88, 1,136,192, 1,136, 1, 97,251,133, 2,101,254,204, 0, 0, 0, 0, 4, 0, 6,
+255, 52, 4,203, 6,161, 0, 3, 0, 7, 0, 10, 0, 14, 0, 0, 23, 17, 33, 17, 37, 33, 17, 1, 25, 1, 9, 2, 17, 33, 6, 4,
+197,251,173, 3,225,252, 31, 3, 50,252,206, 3,225,252, 31,204, 7,109,248,147,114, 2,224,254,120, 3, 27,253,155, 1, 49, 1,
+233,254,120, 2,233, 0, 0, 0, 0, 3, 0, 6,255, 52, 4,203, 6,161, 0, 3, 0, 10, 0, 17, 0, 0, 23, 17, 33, 17, 37, 33,
+ 17, 33, 23, 7, 1, 53, 1, 23, 7, 33, 17, 33, 6, 4,197,251,173, 3,225,252,238,160, 90,254,235, 1, 21, 90,160, 3, 18,252,
+ 31,204, 7,109,248,147,114, 2,207,160, 90, 1, 21,110, 1, 21, 90,160, 3, 22, 0, 3, 0, 6,255, 52, 4,203, 6,161, 0, 3,
+ 0, 10, 0, 17, 0, 0, 5, 33, 17, 33, 3, 17, 1, 39, 55, 33, 17, 1, 17, 33, 17, 33, 39, 55, 4,203,251, 59, 4,197,114,254,
+235, 90,160,252,238, 3,225,252, 31, 3, 18,160, 90,204, 7,109,249, 5, 2,234,254,235, 90,160,253, 49, 3, 88, 3, 49,252,234,
+160, 90, 0, 0, 0, 3, 0, 6,255,196, 4,203, 5,213, 0, 8, 0, 30, 0, 39, 0, 0, 19, 16, 23, 22, 51, 50, 55, 1, 6, 1,
+ 6, 35, 34, 39, 36, 17, 16, 37, 39, 51, 23, 54, 51, 50, 23, 4, 17, 16, 5, 19, 35, 9, 1, 54, 17, 16, 39, 38, 35, 34,128,244,
+122,122, 61, 62,254,108,207, 2,150, 87, 87,153,152,254,207, 1, 21,115,191, 80, 89, 88,152,153, 1, 50,254,231,129,190,254,118,
+ 1,148,210,245,122,122, 62, 2,220,254,231,141, 71, 18, 3,106,140,252,178, 29, 88,176, 1, 96, 1, 79,176,250,174, 29, 88,176,
+254,160,254,175,176,254,233, 4,242,252,149,140, 1, 5, 1, 25,141, 71, 0, 0, 0, 3, 0, 37,254,162, 4,172, 7, 51, 0, 11,
+ 0, 14, 0, 17, 0, 0, 1, 17, 51, 17, 51, 1, 33, 17, 35, 17, 33, 1, 19, 17, 3, 33, 51, 3, 2, 28,152, 47, 1,201,254, 8,
+152,254, 9, 1,201, 46,246, 1,142,246,246, 5,213, 1, 94,254,162,250, 43,254,162, 1, 94, 5,213,250,213, 3,107,252,149, 3,
+107, 0, 0, 0, 0, 3, 0, 6,255, 52, 4,203, 6,161, 0, 4, 0, 8, 0, 14, 0, 0, 19, 17, 9, 1, 17, 55, 17, 33, 17, 19,
+ 17, 33, 17, 1, 35,120, 1,240, 1,241,114,251, 59,114, 3,225,254, 99,166, 6, 47,254,237,251,179, 4, 75, 1, 21,114,248,147,
+ 7,109,252,236,252, 25, 3,229,252,117, 0, 0, 0, 4, 0, 6,255, 52, 4,203, 6,161, 0, 2, 0, 6, 0, 11, 0, 17, 0, 0,
+ 37, 9, 2, 17, 33, 17, 37, 33, 53, 48, 33, 53, 1, 51, 1, 17, 33, 3,138,254,222,254,222,254,192, 4,197,251,173, 3,225,252,
+ 31, 1,130,221, 1,130,252, 31,170, 4,121,251,135,254,138, 7,109,248,147,114, 90, 91, 5,122,250,134, 5,212, 0, 3, 0, 6,
+255, 52, 4,203, 6,161, 0, 3, 0, 10, 0, 17, 0, 0, 19, 33, 17, 33, 37, 33, 17, 33, 1, 7, 39, 3, 17, 7, 39, 1, 33, 17,
+ 6, 4,197,251, 59, 2,180, 1,159,254, 71, 1, 20, 90,160,164,160, 90, 1, 20,254, 72, 6,161,248,147,114, 6,137,254,236, 90,
+160,250, 69, 5,187,160, 90, 1, 20,249,119, 0, 0, 3, 0, 37,254,162, 4,172, 7, 51, 0, 11, 0, 14, 0, 17, 0, 0, 33, 35,
+ 1, 33, 17, 51, 17, 33, 1, 35, 17, 35, 17, 35, 27, 1, 17, 19, 2, 28, 46,254, 55, 1,247,152, 1,248,254, 55, 47,152,246,246,
+152,246, 5,213, 1, 94,254,162,250, 43,254,162, 6,137,252,149, 3,107,252,149, 3,107, 0, 0, 0, 3, 0, 6,255, 52, 4,203,
+ 6,161, 0, 4, 0, 8, 0, 14, 0, 0, 23, 33, 17, 9, 2, 33, 17, 33, 9, 1, 51, 1, 17, 33,120, 3,225,254, 15,254, 16, 4,
+ 83,251, 59, 4,197,251,173, 1,158,166, 1,157,252, 31, 90, 1, 21, 4, 75,251,179,254,123, 7,109,251,167, 3,141,252,117, 3,
+229, 0, 0, 0, 0, 4, 0, 6,255, 52, 4,203, 6,161, 0, 2, 0, 6, 0, 12, 0, 16, 0, 0, 1, 33, 9, 1, 17, 33, 17, 37,
+ 33, 17, 1, 35, 1, 53, 33, 53, 33, 3,138,253,188, 1, 34,253,158, 4,197,251,173, 3,225,254,126,221,254,126, 3,225,252, 31,
+ 5, 43,251,135,254,130, 7,109,248,147,114, 5,212,250,134, 5,122, 91, 90, 0, 0, 3, 0, 6,255, 52, 4,203, 6,161, 0, 3,
+ 0, 10, 0, 17, 0, 0, 23, 17, 33, 17, 1, 17, 55, 23, 1, 33, 17, 41, 1, 17, 33, 1, 55, 23, 6, 4,197,253,239,160, 90,254,
+236, 1,185,253,189,254, 98, 1,184,254,236, 90,160,204, 7,109,248,147, 6,251,250, 69,160, 90,254,236, 6,137,249,119, 1, 20,
+ 90,160, 0, 0,255,255, 1, 0,255, 52, 3,209, 5,213, 16, 38, 11,192, 0, 0, 16, 6, 0, 10, 0, 0, 0, 0,255,255, 0, 6,
+255, 52, 4,203, 5,213, 16, 38, 11,191, 0, 0, 16, 6, 2,209, 0, 0, 0, 0,255,255, 0, 6,255, 52, 4,203, 5, 63, 16, 38,
+ 11,191, 0, 0, 16, 7, 9, 33, 0, 0, 0,200,255,255, 1, 0,255, 52, 3,209, 3,233, 16, 38, 11,192, 0, 0, 16, 6, 11,193,
+ 0, 0, 0, 0,255,255, 0, 6,255, 52, 4,203, 5, 68, 16, 38, 11,191, 0, 0, 16, 7, 9, 37, 0, 0, 0,200,255,255, 0, 6,
+255, 52, 4,203, 6,161, 16, 38, 0, 10, 0, 0, 16, 6, 8, 66, 0, 0, 0, 0,255,255,255,236, 0, 90, 4,229, 5, 94, 16, 39,
+ 9, 73, 0, 0, 0,200, 16, 6, 7,209, 0, 0,255,255, 0, 6,255, 52, 4,203, 6,161, 16, 38, 0, 29, 0, 0, 16, 6, 8, 66,
+ 0, 0, 0, 0,255,255, 1, 8, 1,155, 3,201, 5, 22, 16, 39, 11,194, 0, 0,255, 6, 16, 6, 7,209, 0, 0,255,255, 1, 63,
+ 1,212, 3,145, 5, 72, 16, 39, 11,194, 0, 0,255, 56, 16, 6, 11,193, 0, 0,255,255, 0, 6, 0,116, 4,203, 6,166, 16, 39,
+ 11,194, 0, 0, 0,150, 16, 7, 9, 37, 0, 0, 0,200, 0, 0,255,255, 0, 88, 1,236, 4,121, 5, 72, 16, 39, 11,194, 0, 0,
+255, 56, 16, 6, 0, 97, 0, 0,255,255, 0, 88, 0,141, 4,121, 5, 72, 16, 39, 11,194, 0, 0,255, 56, 16, 6, 0, 33, 0, 0,
+ 0, 3, 0, 37, 0, 0, 4,172, 5,213, 0, 10, 0, 32, 0, 42, 0, 0, 1, 33, 19, 22, 23, 22, 23, 22, 23, 22, 23, 37, 21, 6,
+ 7, 6, 7, 3, 35, 3, 6, 7, 6, 7, 53, 54, 55, 3, 33, 3, 54, 55, 54, 5, 27, 1, 38, 39, 38, 39, 38, 39, 38, 3,170,253,
+124,122, 42, 40, 50, 74, 11, 22, 69, 60, 1,105, 75, 72, 35, 38,186,245,217, 23, 22, 71, 73, 74, 69,194, 4,135,216, 11, 11, 69,
+253,162,151,124, 45, 50, 23, 10, 77, 51, 10, 5, 43,254, 79, 2, 9, 11, 31, 5, 10, 33, 13,114,174, 59, 27, 14, 7,253,159, 2,
+198, 6, 10, 29, 63,174, 57, 27, 2,121,253, 63, 5, 5, 30,112,253,230, 1,184, 13, 22, 10, 4, 33, 12, 2, 0, 0, 3, 0, 88,
+255,227, 4,121, 5,240, 0, 23, 0, 42, 0, 61, 0, 0, 0, 32, 23, 22, 19, 54, 55, 21, 6, 7, 2, 7, 6, 32, 39, 38, 3, 6,
+ 7, 53, 54, 55, 18, 55, 37, 34, 7, 6, 7, 54, 51, 50, 22, 23, 22, 23, 22, 51, 50, 55, 2, 39, 38, 1, 18, 23, 22, 51, 50, 55,
+ 54, 55, 6, 35, 34, 39, 38, 39, 46, 1, 35, 34, 1,121, 1,222,123,104, 15, 24, 24, 23, 23, 9,112,123,254, 34,122,105, 15, 23,
+ 24, 23, 23, 9,112, 1,105,141, 69, 53, 13, 27, 28, 53,100, 74, 11, 22,116, 93, 16, 17, 3, 66, 70,254, 90, 3, 67, 69,141,142,
+ 70, 52, 13, 22, 23, 90,113, 23, 10, 77,103, 51, 23, 5,240,196,167,254,208, 17, 20,174, 18, 15,254,176,180,196,196,168, 1, 49,
+ 17, 21,174, 18, 15, 1, 80,179, 36,152,115,206, 3, 22, 31, 5, 10, 55, 2, 1, 37,146,152,253,130,254,219,146,152,152,115,206,
+ 2, 51, 10, 4, 33, 24, 0, 0, 0, 1, 0, 88,254,162, 4,121, 7, 51, 0, 31, 0, 0, 1, 21, 14, 1, 35, 34, 39, 17, 35, 17,
+ 38, 39, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 22, 23, 17, 51, 17, 22, 51, 50, 54, 4,121, 75,143, 79, 71, 85,152, 31, 25,
+ 52, 51, 79,141, 73, 78,146, 83, 53, 50, 19, 23,152, 94, 78, 70,137, 3,122,174, 59, 55, 32,252, 40, 4, 21, 11, 6, 12, 59, 63,
+174, 60, 54, 11, 4, 7, 3,207,251,243, 39, 61, 0, 2, 1, 0,254,225, 3,209, 4, 39, 0, 3, 0, 17, 0, 0, 1, 51, 17, 35,
+ 19, 51, 21, 7, 33, 21, 33, 7, 35, 55, 35, 53, 51, 55, 1,233,252,252, 13,252, 96, 1, 63,254,135, 43,154, 21,168,198, 48, 4,
+ 39,254,209,254, 55,207,186,114, 83, 83,114,186, 0, 3, 0, 6,255, 52, 4,203, 6,161, 0, 3, 0, 7, 0, 27, 0, 0, 23, 33,
+ 17, 33, 3, 17, 33, 17, 1, 33, 19, 23, 7, 51, 21, 33, 7, 33, 21, 33, 3, 39, 55, 35, 53, 33, 55, 33,120, 3,225,252, 31,114,
+ 4,197,251,247, 2, 5,197,100,131,162,254,245,147, 1,158,253,251,199,100,131,160, 1, 8,147,254,101, 90, 6,137,249, 5, 7,
+109,248,147, 4,110, 1, 59,102,213,170,236,172,254,197,104,211,172,236, 0, 0,255,255, 0, 6,255, 52, 4,203, 6,161, 16, 38,
+ 0, 34, 0, 0, 16, 6, 8, 66, 0, 0, 0, 0,255,255, 1, 54, 0, 0, 3,207, 4, 96, 16, 6, 2,245, 0, 0,255,255, 0,190,
+254, 86, 4, 84, 4,124, 16, 6, 2,253, 0, 0,255,255, 0, 70,255,227, 4,140, 4, 96, 16, 6, 3, 5, 0, 0,255,255, 0, 6,
+255, 52, 4,203, 4,122, 16, 38, 11,191, 0, 0, 16, 6, 2,237, 0, 0, 0, 0,255,255, 0,156,255, 52, 4, 53, 4,123, 16, 38,
+ 11,190, 0, 0, 16, 6, 3, 34, 0, 0, 0, 0,255,255, 1, 0,255, 52, 3,209, 4, 96, 16, 38, 11,192, 0, 0, 16, 6, 2,245,
+ 0, 0, 0, 0,255,255, 0, 6,255, 52, 4,203, 4, 96, 16, 38, 11,191, 0, 0, 16, 6, 3, 5, 0, 0, 0, 0,255,255, 0, 70,
+255,230, 4,149, 4,122, 16, 6, 2,237, 0, 0, 0, 1, 0, 26,254, 46, 4,183, 0,181, 0, 11, 0, 33,183, 6, 6, 10, 8, 5,
+ 6, 1, 3, 47,220,236, 47,220,236, 49, 0,183, 0,182, 6, 9, 2,182, 7, 4, 47, 60,236, 50,220,236, 48, 19, 17, 35, 53, 33,
+ 17, 33, 17, 33, 21, 35, 17,225,199, 1,111, 1,191, 1,111,199,254, 46, 1,218,173,254, 37, 1,219,173,254, 38, 0, 3, 0, 72,
+255,211, 4,136, 4, 58, 0, 5, 0, 17, 0, 48, 0, 0, 5, 1, 55, 9, 1, 23, 37, 35, 34, 6, 21, 20, 22, 51, 50, 54, 61, 1,
+ 55, 17, 35, 53, 14, 1, 35, 34, 38, 53, 52, 54, 59, 1, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 22, 23, 30, 1, 2,
+104,253,224, 72, 1,216, 1,216, 72,254, 24, 35, 91, 93, 69, 62, 86, 99,105,105, 33,102, 72, 97,116,142,138,140, 76, 84, 53,109,
+ 52, 58,106, 50, 79, 56, 53, 37, 22, 18, 45, 2, 45, 74,254, 28, 1,228, 74,243, 63, 63, 56, 63,118,104, 23, 43,254,154, 93, 56,
+ 53,108, 91,104,109, 16, 75, 68, 30, 29,103, 21, 22, 23, 22, 47, 28, 82, 0, 0, 0, 6, 0, 6, 0,218, 4,203, 4, 58, 0, 3,
+ 0, 7, 0, 11, 0, 15, 0, 27, 0, 57, 0, 0, 1, 51, 53, 35, 23, 51, 53, 35, 5, 51, 53, 35, 1, 33, 53, 33, 1, 35, 34, 6,
+ 21, 20, 22, 51, 50, 54, 61, 1, 55, 17, 35, 53, 14, 1, 35, 34, 38, 53, 52, 54, 59, 1, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1,
+ 51, 50, 22, 23, 30, 1, 3, 97,115,115,170,115,115,254,172,115,115, 2, 20,251, 59, 4,197,252,183, 35, 91, 93, 69, 62, 86, 99,
+105,105, 33,102, 72, 97,116,142,138,140, 76, 84, 53,109, 52, 58,106, 50, 79,112, 34, 22, 18, 1,184,127,127,127,127,127,254,163,
+114, 1,167, 63, 63, 56, 63,118,104, 23, 43,254,154, 93, 56, 53,108, 91,104,109, 16, 75, 68, 30, 29,103, 21, 22, 46, 46, 28, 82,
+ 0, 6, 0, 6, 0,218, 4,203, 4, 58, 0, 3, 0, 7, 0, 19, 0, 49, 0, 61, 0, 91, 0, 0, 37, 53, 33, 21, 33, 53, 33, 21,
+ 3, 35, 34, 6, 21, 20, 22, 51, 50, 54, 61, 1, 55, 17, 35, 53, 14, 1, 35, 34, 38, 53, 52, 54, 59, 1, 53, 52, 38, 35, 34, 6,
+ 7, 53, 62, 1, 51, 50, 22, 23, 30, 1, 5, 35, 34, 6, 21, 20, 22, 51, 50, 54, 55, 53, 55, 17, 35, 53, 14, 1, 35, 34, 38, 53,
+ 52, 54, 59, 1, 53, 46, 1, 35, 34, 6, 7, 53, 62, 1, 51, 50, 22, 23, 30, 1, 2,155, 2, 48,251, 59, 2, 48,180, 35, 91, 93,
+ 69, 62, 86, 99,105,105, 33,102, 72, 97,116,142,138,140, 76, 84, 53,109, 52, 58,106, 50, 79,112, 34, 22, 18, 1,127, 34, 91, 93,
+ 69, 62, 86, 98, 1,105,105, 34,101, 73, 97,115,142,138,140, 1, 76, 83, 53,109, 52, 58,106, 50, 79,112, 34, 22, 18,218,114,114,
+114,114, 2, 25, 63, 63, 56, 63,118,104, 23, 43,254,154, 93, 56, 53,108, 91,104,109, 16, 75, 68, 30, 29,103, 21, 22, 46, 46, 28,
+ 82,125, 63, 63, 56, 63,118,104, 23, 43,254,154, 93, 56, 53,108, 91,104,109, 16, 75, 68, 30, 29,103, 21, 22, 46, 46, 28, 82, 0,
+ 0, 8, 0, 6, 1,107, 4,203, 4,138, 0, 30, 0, 42, 0, 46, 0, 50, 0, 54, 0, 58, 0, 62, 0, 66, 0, 0, 1, 17, 35, 53,
+ 14, 1, 35, 34, 38, 53, 52, 54, 59, 1, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51, 50, 23, 22, 23, 30, 1, 7, 35, 34, 6, 21,
+ 20, 22, 51, 50, 54, 61, 1, 1, 21, 37, 61, 1, 33, 21, 33, 17, 37, 21, 5, 45, 1, 21, 5, 21, 33, 21, 33, 21, 5, 21, 37, 3,
+113,105, 33,102, 72, 97,116,142,138,140, 76, 84, 53,109, 52, 58,106, 50, 79, 56, 53, 37, 22, 18,209, 35, 91, 93, 69, 62, 86, 99,
+ 1,202,254,212, 1, 44,254,212, 1, 44,254,212,253,147,254,212, 1, 44,254,212, 1, 44,254,212, 1, 44, 3, 30,254,154, 93, 56,
+ 53,108, 91,104,109, 16, 75, 68, 30, 29,103, 21, 22, 23, 22, 47, 28, 82,125, 63, 63, 56, 63,118,104, 23,254,241,121,140,121,188,
+114, 1, 68,140,121,140,121,140,121,140, 89,114, 74,140,121,140, 0, 7, 0, 82, 0, 56, 4,126, 4,207, 0, 52, 0, 60, 0, 68,
+ 0, 76, 0, 84, 0, 90, 0, 96, 0, 0, 37, 35, 53, 38, 39, 38, 39, 38, 39, 7, 39, 55, 38, 53, 52, 55, 53, 39, 55, 23, 54, 55,
+ 54, 55, 54, 55, 53, 51, 21, 22, 23, 22, 23, 22, 23, 55, 23, 7, 23, 22, 21, 20, 7, 21, 23, 7, 39, 6, 7, 6, 7, 6, 7, 53,
+ 54, 55, 54, 55, 54, 55, 39, 17, 21, 55, 38, 39, 38, 39, 38, 39, 6, 7, 6, 7, 6, 7, 23, 17, 53, 7, 22, 23, 22, 23, 22, 39,
+ 55, 39, 6, 21, 20, 37, 7, 23, 54, 53, 52, 2,154,100, 51, 47, 68, 57, 19, 15,177, 50,176, 28, 28,176, 50,177, 16, 18, 57, 68,
+ 47, 51,100, 52, 46, 69, 57, 18, 15,177, 50,176, 1, 28, 28,175, 50,176, 16, 18, 57, 69, 46, 52, 31, 29, 50, 42, 9, 7,168,168,
+ 7, 9, 42, 50, 29,131, 31, 28, 50, 42, 9, 8,168,168, 8, 9, 42, 50, 28,188,169,169, 16, 2, 42,169,169, 17, 56,203, 6, 20,
+ 29, 56, 19, 19,102, 87,102, 69, 79, 80, 68, 1,102, 87,103, 20, 19, 56, 29, 20, 6,203,203, 6, 20, 29, 56, 18, 20,102, 87,101,
+ 2, 68, 80, 79, 69, 1,101, 87,102, 20, 18, 56, 29, 20, 6,103, 5, 12, 21, 42, 9, 9, 97, 1,112,195, 97, 9, 9, 42, 21, 12,
+ 5, 5, 12, 21, 42, 9, 9, 97,254,144,195, 97, 9, 9, 42, 21, 12,179, 98, 97, 46, 52, 51,149, 97, 98, 45, 52, 53, 0, 0, 0,
+ 0, 4, 0, 70, 0, 94, 4,138, 4,162, 0, 15, 0, 30, 0, 39, 0, 48, 0, 0, 18, 52, 62, 2, 50, 30, 2, 20, 14, 2, 34, 46,
+ 1, 19, 51, 27, 1, 51, 38, 39, 46, 2, 34, 14, 1, 7, 6, 5, 35, 3, 54, 55, 62, 1, 55, 54, 1, 3, 35, 22, 23, 30, 1, 23,
+ 22, 70, 86,147,202,222,202,147, 86, 86,147,202,222,202,147, 28,240,192,193,239, 7, 24, 34,118,160,178,160,118, 34, 24, 3, 90,
+164,207, 56, 51, 80,118, 34, 25,254, 24,206,165, 7, 25, 34,118, 80, 51, 2, 17,222,202,147, 86, 86,147,202,222,202,147, 86, 86,
+147, 1,110,254,152, 1,104, 60, 56, 80,118, 68, 68,118, 80, 56,162,254,130, 8, 22, 34,118, 80, 57,254,193, 1,126, 63, 57, 80,
+118, 34, 22, 0, 0, 5, 0, 70, 0, 94, 4,138, 4,162, 0, 2, 0, 18, 0, 28, 0, 38, 0, 48, 0, 0, 1, 19, 33, 0, 52, 62,
+ 2, 50, 30, 2, 20, 14, 2, 34, 46, 1, 18, 20, 30, 1, 23, 22, 23, 1, 6, 7, 55, 33, 38, 39, 46, 1, 34, 6, 7, 6, 5, 1,
+ 54, 55, 62, 2, 52, 39, 38, 2,104,243,254, 26,254,209, 86,147,202,222,202,147, 86, 86,147,202,222,202,147, 25, 68,118, 80, 52,
+ 55,254,180, 4, 3, 57, 2,176, 17, 19, 59,160,178,160, 59, 19, 2,209,254,180, 55, 52, 80,118, 68, 34, 3, 1, 77, 1,199,254,
+253,222,202,147, 86, 86,147,202,222,202,147, 86, 86,147, 1,146,178,160,118, 34, 22, 8, 2,105, 8, 9, 99, 21, 19, 59, 68, 68,
+ 59, 19,103,253,151, 8, 22, 34,118,160,178, 80, 9, 0, 0, 0, 0, 3, 0, 70, 0, 94, 4,138, 4,162, 0, 2, 0, 9, 0, 37,
+ 0, 0, 1, 55, 39, 23, 1, 7, 1, 7, 3, 5, 1, 51, 20, 30, 2, 50, 62, 2, 52, 46, 2, 35, 53, 50, 30, 2, 20, 14, 2, 34,
+ 46, 2, 1, 5,145,174,205, 1,238, 86,254, 18,151, 70, 1,202,253,250,111, 68,118,160,178,160,118, 68, 68,118,160, 89,111,202,
+147, 86, 86,147,202,222,202,147, 86, 3, 83,146, 28,119,254, 18, 86, 1,238,151, 1,202, 70,254, 95, 89,160,118, 68, 68,118,160,
+178,160,118, 68,111, 86,147,202,222,202,147, 86, 86,147,202, 0, 0, 2, 0, 6,255, 52, 4,203, 6,161, 0, 3, 0, 7, 0, 0,
+ 23, 33, 17, 33, 3, 17, 33, 17,120, 3,225,252, 31,114, 4,197, 90, 6,137,249, 5, 7,109,248,147, 0, 0, 0, 0, 1, 1, 24,
+253,240, 3,184, 7,134, 0, 11, 0, 0, 1, 35, 53, 16, 19, 18, 19, 51, 0, 3, 2, 17, 1,219,195,160,186,166,160,254,252, 90,
+127,253,240,234, 3,151, 1,226, 2, 48, 1, 3,253,243,254,134,253,238,252,237, 0, 1, 1, 24,253,252, 1,219, 7,137, 0, 3,
+ 0, 0, 1, 51, 17, 35, 1, 24,195,195, 7,137,246,115, 0, 0, 0, 1, 1, 24,254, 20, 3,184, 7,137, 0, 11, 0, 0, 1, 21,
+ 16, 19, 18, 19, 35, 2, 3, 2, 17, 53, 1,219,127,147,203,160,208,144,160, 7,137,234,252,165,254, 87,254, 20,254,101, 1, 69,
+ 1,238, 2, 37, 3, 51,234, 0, 0, 1, 1, 25,253,240, 3,185, 7,134, 0, 11, 0, 0, 1, 53, 16, 3, 2, 1, 51, 18, 19, 18,
+ 17, 21, 2,246,127, 90,254,252,160,166,186,160,253,240,234, 3, 19, 2, 18, 1,122, 2, 13,254,253,253,208,254, 30,252,105,234,
+ 0, 1, 2,246,253,252, 3,185, 7,137, 0, 4, 0, 0, 1, 17, 35, 17, 48, 3,185,195, 7,137,246,115, 9,141, 0, 1, 1, 25,
+254, 20, 3,185, 7,137, 0, 11, 0, 0, 1, 51, 21, 16, 3, 2, 3, 35, 18, 19, 18, 17, 2,246,195,160,144,208,160,203,147,127,
+ 7,137,234,252,205,253,219,254, 18,254,187, 1,155, 1,236, 1,169, 3, 91, 0, 0, 1, 1, 24,253,252, 3,184, 7,109, 0, 5,
+ 0, 0, 1, 35, 17, 33, 21, 33, 1,219,195, 2,160,254, 35,253,252, 9,113,195, 0, 1, 1, 24,253,252, 1,219, 7,137, 0, 3,
+ 0, 0, 1, 51, 17, 35, 1, 24,195,195, 7,137,246,115, 0, 0, 0, 1, 1, 24,254, 20, 3,184, 7,137, 0, 5, 0, 0, 1, 17,
+ 33, 21, 33, 17, 1,219, 1,221,253, 96, 7,137,247, 78,195, 9,117, 0, 0, 0, 0, 1, 1, 24,253,252, 3,184, 7,109, 0, 5,
+ 0, 0, 1, 17, 33, 53, 33, 17, 2,245,254, 35, 2,160,253,252, 8,174,195,246,143, 0, 0, 0, 0, 1, 2,245,253,252, 3,184,
+ 7,122, 0, 3, 0, 0, 1, 51, 17, 35, 2,245,195,195, 7,122,246,130, 0, 0, 0, 1, 1, 24,254, 20, 3,184, 7,122, 0, 5,
+ 0, 0, 1, 51, 17, 33, 53, 33, 2,245,195,253, 96, 1,221, 7,122,246,154,195, 0, 1, 2, 12,253,234, 4,193, 7,109, 0, 13,
+ 0, 0, 1, 35, 17, 52, 55, 54, 51, 33, 21, 33, 34, 7, 6, 21, 2,198,186,111,121,186, 1, 19,254,231,101, 68, 57,253,234, 7,
+117,223,145,158,176,102, 87,153, 0, 1, 0, 17,253,252, 2,198, 7,134, 0, 24, 0, 0, 1, 22, 23, 22, 25, 1, 35, 17, 16, 39,
+ 38, 37, 39, 53, 51, 32, 55, 54, 25, 1, 51, 17, 16, 7, 6, 1,253, 58, 42,101,186,110, 75,254,251, 61, 61, 1, 3, 77,110,186,
+101, 40, 2,193, 32, 61,147,254, 67,253,232, 2, 12, 1,183, 95, 65, 4, 1,187, 69, 99, 1,179, 2, 12,253,232,254, 72,152, 60,
+ 0, 1, 2, 12,254, 20, 4,193, 7,134, 0, 13, 0, 0, 1, 17, 20, 23, 22, 51, 33, 21, 33, 34, 39, 38, 53, 17, 2,198, 57, 68,
+101, 1, 25,254,237,184,123,111, 7,134,248,148,154, 86,102,176,158,143,225, 7,100, 0, 0, 0, 0, 1, 2, 12,253,244, 2,198,
+ 7,140, 0, 3, 0, 0, 1, 35, 17, 51, 2,198,186,186,253,244, 9,152, 0, 0, 0, 1, 0, 16,253,234, 2,197, 7,109, 0, 13,
+ 0, 0, 1, 17, 52, 39, 38, 35, 33, 53, 33, 50, 23, 22, 21, 17, 2, 11, 57, 68,101,254,231, 1, 19,186,121,111,253,234, 7,125,
+153, 87,102,176,158,145,223,248,139, 0, 0, 0, 0, 1, 2, 11,253,252, 4,192, 7,134, 0, 24, 0, 0, 1, 38, 39, 38, 25, 1,
+ 51, 17, 16, 23, 22, 33, 51, 21, 7, 4, 7, 6, 25, 1, 35, 17, 16, 55, 54, 2,212, 60, 40,101,186,110, 77, 1, 3, 61, 61,254,
+251, 75,110,186,101, 42, 2,193, 33, 60,152, 1,184, 2, 24,253,244,254, 77, 99, 69,187, 1, 4, 65, 95,254, 73,253,244, 2, 24,
+ 1,189,147, 61, 0, 1, 0, 16,254, 20, 2,197, 7,134, 0, 13, 0, 0, 1, 51, 17, 20, 7, 6, 35, 33, 53, 33, 50, 55, 54, 53,
+ 2, 11,186,111,123,184,254,237, 1, 25,101, 68, 57, 7,134,248,156,225,143,158,176,102, 86,154, 0, 1, 2, 1,254, 0, 2,199,
+ 6, 40, 0, 3, 0, 0, 1, 17, 51, 17, 2, 1,198,254, 0, 8, 40,247,216, 0, 0, 2, 0, 25, 0,188, 4,143, 4,118, 0, 8,
+ 0, 17, 0, 0, 37, 9, 1, 21, 33, 17, 33, 17, 33, 1, 33, 53, 7, 23, 53, 33, 17, 35, 1,142,254,139, 1,117, 1,169, 1, 88,
+252,255, 1,239,253,194,194,194, 3, 10,204,188, 1,117, 1,117,201, 1,153,253, 15, 1, 18, 93,195,195, 93, 2,101, 0, 0, 0,
+ 0, 2, 0, 6, 0, 0, 4,203, 4,196, 0, 2, 0, 6, 0, 0, 1, 33, 9, 1, 33, 17, 33, 4,203,251, 59, 2, 98, 2, 99,251,
+ 59, 4,197, 2,160, 2, 36,251, 60, 1,248, 0, 0, 1, 0,150,254, 46, 4, 58, 0,181, 0, 7, 0, 28,183, 4, 6, 6, 9, 3,
+ 6, 1, 8, 16,220,236, 16,220,236, 49, 0,180, 0,182, 4, 6, 2, 47, 60,220,236, 48, 19, 17, 51, 17, 33, 17, 51, 17,150,168,
+ 2, 84,168,254, 46, 2,135,254, 37, 1,219,253,121, 0, 0, 0, 0, 1,255,236, 1,240, 4,229, 2,156, 0, 3, 0, 0, 3, 53,
+ 33, 21, 20, 4,249, 1,240,172,172, 0, 0, 0, 0, 1,255,236, 1,154, 4,229, 2,242, 0, 3, 0, 0, 3, 17, 33, 17, 20, 4,
+249, 1,154, 1, 88,254,168, 0, 0, 1, 2, 24,253,150, 2,184, 7,200, 0, 3, 0, 0, 1, 17, 51, 17, 2, 24,160,253,150, 10,
+ 50,245,206, 0, 0, 1, 1,200,253,150, 3, 8, 7,200, 0, 3, 0, 0, 1, 17, 33, 17, 1,200, 1, 64,253,150, 10, 50,245,206,
+ 0, 3,255,236, 1,240, 4,229, 2,156, 0, 3, 0, 7, 0, 11, 0, 0, 1, 53, 33, 21, 33, 53, 33, 21, 33, 53, 33, 21, 3,177,
+ 1, 52,252,239, 1, 41,252,239, 1, 52, 1,240,172,172,172,172,172,172, 0, 0, 0, 3,255,236, 1,154, 4,229, 2,242, 0, 3,
+ 0, 7, 0, 11, 0, 0, 1, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 17, 3,177, 1, 52,252,239, 1, 41,252,239, 1, 52, 1,154,
+ 1, 88,254,168, 1, 88,254,168, 1, 88,254,168, 0, 3, 2, 24,253,150, 2,184, 7,200, 0, 3, 0, 7, 0, 11, 0, 0, 1, 17,
+ 51, 17, 3, 17, 51, 17, 3, 17, 51, 17, 2, 24,160,160,160,160,160,253,150, 3, 12,252,244, 3,192, 2,178,253, 78, 3,102, 3,
+ 12,252,244, 0, 0, 3, 1,200,253,150, 3, 8, 7,200, 0, 3, 0, 7, 0, 11, 0, 0, 1, 17, 33, 17, 1, 17, 33, 17, 1, 17,
+ 33, 17, 1,200, 1, 64,254,192, 1, 64,254,192, 1, 64,253,150, 3, 12,252,244, 3,192, 2,178,253, 78, 3,102, 3, 12,252,244,
+ 0, 4,255,235, 1,240, 4,229, 2,156, 0, 3, 0, 7, 0, 11, 0, 15, 0, 0, 3, 53, 51, 21, 51, 53, 51, 21, 51, 53, 51, 21,
+ 51, 53, 51, 21, 21,188,180,179,180,178,180,189, 1,240,172,172,172,172,172,172,172,172, 0, 0, 0, 4,255,236, 1,154, 4,230,
+ 2,242, 0, 3, 0, 7, 0, 11, 0, 15, 0, 0, 3, 17, 51, 17, 51, 17, 51, 17, 51, 17, 51, 17, 51, 17, 51, 17, 20,188,180,179,
+180,178,180,189, 1,154, 1, 88,254,168, 1, 88,254,168, 1, 88,254,168, 1, 88,254,168, 0, 0, 0, 4, 2, 24,253,150, 2,184,
+ 7,200, 0, 3, 0, 7, 0, 11, 0, 15, 0, 0, 1, 17, 51, 17, 3, 17, 51, 17, 3, 17, 51, 17, 3, 17, 51, 17, 2, 24,160,160,
+160,160,160,160,160, 5,150, 2, 50,253,206,248, 0, 2, 50,253,206, 5,115, 1,217,254, 39,253,115, 1,217,254, 39, 0, 0, 0,
+ 0, 4, 1,200,253,150, 3, 8, 7,200, 0, 3, 0, 7, 0, 11, 0, 15, 0, 0, 1, 17, 33, 17, 1, 17, 33, 17, 1, 17, 33, 17,
+ 1, 17, 33, 17, 1,200, 1, 64,254,192, 1, 64,254,192, 1, 64,254,192, 1, 64, 5,150, 2, 50,253,206,248, 0, 2, 50,253,206,
+ 5,115, 1,217,254, 39,253,115, 1,217,254, 39, 0, 1, 2, 24,253,150, 4,229, 2,156, 0, 5, 0, 0, 1, 17, 33, 21, 33, 17,
+ 2, 24, 2,205,253,211,253,150, 5, 6,172,251,166, 0, 0, 0, 0, 1, 2, 24,253,150, 4,229, 2,242, 0, 5, 0, 0, 1, 17,
+ 33, 17, 33, 17, 2, 24, 2,205,253,211,253,150, 5, 92,254,168,251,252, 0, 0, 0, 1, 1,200,253,150, 4,229, 2,156, 0, 5,
+ 0, 0, 1, 17, 33, 21, 33, 17, 1,200, 3, 29,254, 35,253,150, 5, 6,172,251,166, 0, 0, 0, 0, 1, 1,200,253,150, 4,229,
+ 2,242, 0, 5, 0, 0, 1, 17, 33, 17, 33, 17, 1,200, 3, 29,254, 35,253,150, 5, 92,254,168,251,252, 0, 0, 0, 1,255,236,
+253,150, 2,184, 2,156, 0, 5, 0, 0, 1, 17, 33, 53, 33, 17, 2, 24,253,212, 2,204,253,150, 4, 90,172,250,250, 0, 0, 0,
+ 0, 1,255,236,253,150, 2,184, 2,242, 0, 5, 0, 0, 1, 17, 33, 17, 33, 17, 2, 24,253,212, 2,204,253,150, 4, 4, 1, 88,
+250,164, 0, 0, 0, 1,255,236,253,150, 3, 8, 2,156, 0, 5, 0, 0, 1, 17, 33, 53, 33, 17, 1,200,254, 36, 3, 28,253,150,
+ 4, 90,172,250,250, 0, 0, 0, 0, 1,255,236,253,150, 3, 8, 2,242, 0, 5, 0, 0, 1, 17, 33, 17, 33, 17, 1,200,254, 36,
+ 3, 28,253,150, 4, 4, 1, 88,250,164, 0, 0, 0, 1, 2, 24, 1,240, 4,229, 7,200, 0, 5, 0, 0, 1, 17, 51, 17, 33, 21,
+ 2, 24,160, 2, 45, 1,240, 5,216,250,212,172, 0, 1, 2, 24, 1,154, 4,229, 7,200, 0, 5, 0, 0, 1, 17, 51, 17, 33, 17,
+ 2, 24,160, 2, 45, 1,154, 6, 46,251, 42,254,168, 0, 0, 0, 0, 1, 1,200, 1,240, 4,229, 7,200, 0, 5, 0, 0, 1, 17,
+ 33, 17, 33, 21, 1,200, 1, 64, 1,221, 1,240, 5,216,250,212,172, 0, 0, 0, 0, 1, 1,200, 1,154, 4,229, 7,200, 0, 5,
+ 0, 0, 1, 17, 33, 17, 33, 17, 1,200, 1, 64, 1,221, 1,154, 6, 46,251, 42,254,168, 0, 0, 0, 1,255,236, 1,240, 2,184,
+ 7,200, 0, 5, 0, 0, 3, 53, 33, 17, 51, 17, 20, 2, 44,160, 1,240,172, 5, 44,250, 40, 0, 0, 1,255,236, 1,154, 2,184,
+ 7,200, 0, 5, 0, 0, 3, 17, 33, 17, 51, 17, 20, 2, 44,160, 1,154, 1, 88, 4,214,249,210, 0, 1,255,236, 1,240, 3, 8,
+ 7,200, 0, 5, 0, 0, 3, 53, 33, 17, 33, 17, 20, 1,220, 1, 64, 1,240,172, 5, 44,250, 40, 0, 1,255,236, 1,154, 3, 8,
+ 7,200, 0, 5, 0, 0, 3, 17, 33, 17, 33, 17, 20, 1,220, 1, 64, 1,154, 1, 88, 4,214,249,210, 0, 0, 0, 0, 1, 2, 24,
+253,150, 4,229, 7,200, 0, 7, 0, 0, 1, 17, 51, 17, 33, 21, 33, 17, 2, 24,160, 2, 45,253,211,253,150, 10, 50,250,212,172,
+251,166, 0, 0, 0, 1, 2, 24,253,150, 4,229, 7,200, 0, 7, 0, 0, 1, 17, 51, 17, 33, 17, 33, 17, 2, 24,160, 2, 45,253,
+211,253,150, 10, 50,251, 42,254,168,251,252, 0, 0, 1, 1,200,253,150, 4,229, 7,200, 0, 9, 0, 0, 1, 17, 35, 17, 33, 17,
+ 33, 21, 33, 17, 2, 24, 80, 1, 64, 1,221,253,211,253,150, 4, 90, 5,216,250,212,172,251,166, 0, 1, 1,200,253,150, 4,229,
+ 7,200, 0, 9, 0, 0, 1, 17, 51, 17, 51, 17, 33, 21, 33, 17, 1,200, 80,160, 2, 45,254, 35,253,150, 5, 6, 5, 44,250,212,
+172,251,166, 0, 0, 1, 1,200,253,150, 4,229, 7,200, 0, 7, 0, 0, 1, 17, 33, 17, 33, 21, 33, 17, 1,200, 1, 64, 1,221,
+254, 35,253,150, 10, 50,250,212,172,251,166, 0, 0, 1, 1,200,253,150, 4,229, 7,200, 0, 9, 0, 0, 1, 17, 35, 17, 33, 17,
+ 33, 17, 33, 17, 2, 24, 80, 1, 64, 1,221,253,211,253,150, 4, 4, 6, 46,251, 42,254,168,251,252, 0, 0, 0, 0, 1, 1,200,
+253,150, 4,229, 7,200, 0, 9, 0, 0, 1, 17, 51, 17, 51, 17, 33, 17, 33, 17, 1,200, 80,160, 2, 45,254, 35,253,150, 5, 92,
+ 4,214,251, 42,254,168,251,252, 0, 1, 1,200,253,150, 4,229, 7,200, 0, 7, 0, 0, 1, 17, 33, 17, 33, 17, 33, 17, 1,200,
+ 1, 64, 1,221,254, 35,253,150, 10, 50,251, 42,254,168,251,252, 0, 1,255,236,253,150, 2,184, 7,200, 0, 7, 0, 0, 1, 17,
+ 33, 53, 33, 17, 51, 17, 2, 24,253,212, 2, 44,160,253,150, 4, 90,172, 5, 44,245,206, 0, 0, 0, 1,255,236,253,150, 2,184,
+ 7,200, 0, 7, 0, 0, 1, 17, 33, 17, 33, 17, 51, 17, 2, 24,253,212, 2, 44,160,253,150, 4, 4, 1, 88, 4,214,245,206, 0,
+ 0, 1,255,236,253,150, 3, 8, 7,200, 0, 9, 0, 0, 1, 17, 33, 53, 33, 17, 33, 17, 35, 17, 2, 24,253,212, 1,220, 1, 64,
+ 80,253,150, 4, 90,172, 5, 44,250, 40,251,166, 0, 1,255,236,253,150, 3, 8, 7,200, 0, 9, 0, 0, 1, 17, 33, 53, 33, 17,
+ 51, 17, 51, 17, 1,200,254, 36, 2, 44,160, 80,253,150, 4, 90,172, 5, 44,250,212,250,250, 0, 0, 1,255,236,253,150, 3, 8,
+ 7,200, 0, 7, 0, 0, 1, 17, 33, 53, 33, 17, 33, 17, 1,200,254, 36, 1,220, 1, 64,253,150, 4, 90,172, 5, 44,245,206, 0,
+ 0, 1,255,236,253,150, 3, 8, 7,200, 0, 9, 0, 0, 1, 17, 33, 17, 33, 17, 33, 17, 35, 17, 2, 24,253,212, 1,220, 1, 64,
+ 80,253,150, 4, 4, 1, 88, 4,214,249,210,251,252, 0, 0, 0, 0, 1,255,236,253,150, 3, 8, 7,200, 0, 9, 0, 0, 1, 17,
+ 33, 17, 33, 17, 51, 17, 51, 17, 1,200,254, 36, 2, 44,160, 80,253,150, 4, 4, 1, 88, 4,214,251, 42,250,164, 0, 1,255,236,
+253,150, 3, 8, 7,200, 0, 7, 0, 0, 1, 17, 33, 17, 33, 17, 33, 17, 1,200,254, 36, 1,220, 1, 64,253,150, 4, 4, 1, 88,
+ 4,214,245,206, 0, 1,255,236,253,150, 4,229, 2,156, 0, 7, 0, 0, 1, 17, 33, 53, 33, 21, 33, 17, 2, 24,253,212, 4,249,
+253,211,253,150, 4, 90,172,172,251,166, 0, 0, 0, 1,255,236,253,150, 4,229, 2,242, 0, 9, 0, 0, 1, 17, 33, 17, 33, 21,
+ 33, 21, 33, 17, 2, 24,253,212, 2,204, 2, 45,253,211,253,150, 4, 4, 1, 88, 86,172,251,166, 0, 1,255,236,253,150, 4,229,
+ 2,242, 0, 9, 0, 0, 1, 17, 33, 53, 33, 53, 33, 17, 33, 17, 2, 24,253,212, 2, 44, 2,205,253,211,253,150, 4, 90,172, 86,
+254,168,251,252, 0, 1,255,236,253,150, 4,229, 2,242, 0, 7, 0, 0, 1, 17, 33, 17, 33, 17, 33, 17, 2, 24,253,212, 4,249,
+253,211,253,150, 4, 4, 1, 88,254,168,251,252, 0, 1,255,236,253,150, 4,229, 2,156, 0, 7, 0, 0, 1, 17, 33, 53, 33, 21,
+ 33, 17, 1,200,254, 36, 4,249,254, 35,253,150, 4, 90,172,172,251,166, 0, 0, 0, 1,255,236,253,150, 4,229, 2,242, 0, 9,
+ 0, 0, 1, 17, 33, 17, 33, 21, 33, 21, 33, 17, 1,200,254, 36, 3, 28, 1,221,254, 35,253,150, 4, 4, 1, 88, 86,172,251,166,
+ 0, 1,255,236,253,150, 4,229, 2,242, 0, 9, 0, 0, 1, 17, 33, 53, 33, 53, 33, 17, 33, 17, 1,200,254, 36, 1,220, 3, 29,
+254, 35,253,150, 4, 90,172, 86,254,168,251,252, 0, 1,255,236,253,150, 4,229, 2,242, 0, 7, 0, 0, 1, 17, 33, 17, 33, 17,
+ 33, 17, 1,200,254, 36, 4,249,254, 35,253,150, 4, 4, 1, 88,254,168,251,252, 0, 1,255,236, 1,240, 4,229, 7,200, 0, 7,
+ 0, 0, 3, 53, 33, 17, 51, 17, 33, 21, 20, 2, 44,160, 2, 45, 1,240,172, 5, 44,250,212,172, 0, 1,255,236, 1,154, 4,229,
+ 7,200, 0, 9, 0, 0, 3, 17, 33, 17, 51, 17, 33, 21, 33, 21, 20, 2, 44,160, 2, 45,253,211, 1,154, 1, 88, 4,214,250,212,
+172, 86, 0, 0, 0, 1,255,236, 1,154, 4,229, 7,200, 0, 9, 0, 0, 3, 53, 33, 17, 51, 17, 33, 17, 33, 53, 20, 2, 44,160,
+ 2, 45,253, 51, 1,240,172, 5, 44,251, 42,254,168, 86, 0, 0, 0, 1,255,236, 1,154, 4,229, 7,200, 0, 7, 0, 0, 3, 17,
+ 33, 17, 51, 17, 33, 17, 20, 2, 44,160, 2, 45, 1,154, 1, 88, 4,214,251, 42,254,168, 0, 0, 0, 1,255,236, 1,240, 4,229,
+ 7,200, 0, 7, 0, 0, 3, 53, 33, 17, 33, 17, 33, 21, 20, 1,220, 1, 64, 1,221, 1,240,172, 5, 44,250,212,172, 0, 0, 0,
+ 0, 1,255,236, 1,154, 4,229, 7,200, 0, 9, 0, 0, 3, 17, 33, 17, 33, 17, 33, 21, 33, 21, 20, 1,220, 1, 64, 1,221,254,
+ 35, 1,154, 1, 88, 4,214,250,212,172, 86, 0, 0, 1,255,236, 1,154, 4,229, 7,200, 0, 9, 0, 0, 3, 53, 33, 17, 33, 17,
+ 33, 17, 33, 53, 20, 1,220, 1, 64, 1,221,252,227, 1,240,172, 5, 44,251, 42,254,168, 86, 0, 0, 1,255,236, 1,154, 4,229,
+ 7,200, 0, 7, 0, 0, 3, 17, 33, 17, 33, 17, 33, 17, 20, 1,220, 1, 64, 1,221, 1,154, 1, 88, 4,214,251, 42,254,168, 0,
+ 0, 1,255,236,253,150, 4,229, 7,200, 0, 11, 0, 0, 1, 17, 35, 17, 33, 53, 33, 17, 51, 17, 33, 21, 2,184,160,253,212, 2,
+ 44,160, 2, 45, 1,240,251,166, 4, 90,172, 5, 44,250,212,172, 0, 1,255,236,253,150, 4,229, 7,200, 0, 11, 0, 0, 1, 17,
+ 33, 17, 33, 17, 51, 17, 33, 21, 33, 17, 2, 24,253,212, 2, 44,160, 2, 45,253,211,253,150, 4, 4, 1, 88, 4,214,250,212,172,
+251,166, 0, 0, 0, 1,255,236,253,150, 4,229, 7,200, 0, 11, 0, 0, 1, 17, 33, 53, 33, 17, 51, 17, 33, 17, 33, 17, 2, 24,
+253,212, 2, 44,160, 2, 45,253,211,253,150, 4, 90,172, 5, 44,251, 42,254,168,251,252, 0, 0, 0, 1,255,236,253,150, 4,229,
+ 7,200, 0, 11, 0, 0, 1, 17, 33, 17, 33, 17, 51, 17, 33, 17, 33, 17, 2, 24,253,212, 2, 44,160, 2, 45,253,211,253,150, 4,
+ 4, 1, 88, 4,214,251, 42,254,168,251,252, 0, 0, 1,255,236,253,150, 4,229, 7,200, 0, 11, 0, 0, 1, 17, 33, 53, 33, 17,
+ 33, 17, 33, 21, 33, 17, 2, 24,253,212, 1,220, 1, 64, 1,221,253,211,253,150, 4, 90,172, 5, 44,250,212,172,251,166, 0, 0,
+ 0, 1,255,236,253,150, 4,229, 7,200, 0, 11, 0, 0, 1, 17, 33, 53, 33, 17, 51, 17, 33, 21, 33, 17, 1,200,254, 36, 2, 44,
+160, 2, 45,254, 35,253,150, 4, 90,172, 5, 44,250,212,172,251,166, 0, 0, 0, 0, 1,255,236,253,150, 4,229, 7,200, 0, 11,
+ 0, 0, 1, 17, 33, 53, 33, 17, 33, 17, 33, 21, 33, 17, 1,200,254, 36, 1,220, 1, 64, 1,221,254, 35,253,150, 4, 90,172, 5,
+ 44,250,212,172,251,166, 0, 0, 0, 1,255,236,253,150, 4,229, 7,200, 0, 13, 0, 0, 1, 17, 33, 17, 33, 17, 33, 17, 33, 21,
+ 33, 21, 35, 17, 2, 24,253,212, 1,220, 1, 64, 1,221,254, 35, 80,253,150, 4, 4, 1, 88, 4,214,250,212,172, 86,251,252, 0,
+ 0, 1,255,236,253,150, 4,229, 7,200, 0, 13, 0, 0, 1, 17, 35, 53, 33, 53, 33, 17, 33, 17, 33, 17, 33, 17, 2, 24, 80,254,
+ 36, 1,220, 1, 64, 1,221,253,211,253,150, 4, 4, 86,172, 5, 44,251, 42,254,168,251,252, 0, 0, 1,255,236,253,150, 4,229,
+ 7,200, 0, 13, 0, 0, 1, 17, 33, 17, 33, 17, 51, 17, 51, 21, 33, 21, 33, 17, 1,200,254, 36, 2, 44,160, 80, 1,221,254, 35,
+253,150, 4, 4, 1, 88, 4,214,251, 42, 86,172,251,166, 0, 0, 0, 1,255,236,253,150, 4,229, 7,200, 0, 13, 0, 0, 1, 17,
+ 33, 53, 33, 53, 51, 17, 51, 17, 33, 17, 33, 17, 1,200,254, 36, 1,220, 80,160, 2, 45,254, 35,253,150, 4, 90,172, 86, 4,214,
+251, 42,254,168,251,252, 0, 0, 0, 1,255,236,253,150, 4,229, 7,200, 0, 11, 0, 0, 1, 17, 33, 17, 33, 17, 33, 17, 33, 17,
+ 33, 17, 2, 24,253,212, 1,220, 1, 64, 1,221,253,211,253,150, 4, 4, 1, 88, 4,214,251, 42,254,168,251,252, 0, 1,255,236,
+253,150, 4,229, 7,200, 0, 11, 0, 0, 1, 17, 33, 17, 33, 17, 51, 17, 33, 17, 33, 17, 1,200,254, 36, 2, 44,160, 2, 45,254,
+ 35,253,150, 4, 4, 1, 88, 4,214,251, 42,254,168,251,252, 0, 0, 1,255,236,253,150, 4,229, 7,200, 0, 11, 0, 0, 1, 17,
+ 33, 17, 33, 17, 33, 17, 33, 21, 33, 17, 1,200,254, 36, 1,220, 1, 64, 1,221,254, 35,253,150, 4, 4, 1, 88, 4,214,250,212,
+172,251,166, 0, 0, 1,255,236,253,150, 4,229, 7,200, 0, 11, 0, 0, 1, 17, 33, 53, 33, 17, 33, 17, 33, 17, 33, 17, 1,200,
+254, 36, 1,220, 1, 64, 1,221,254, 35,253,150, 4, 90,172, 5, 44,251, 42,254,168,251,252, 0, 0, 1,255,236,253,150, 4,229,
+ 7,200, 0, 11, 0, 0, 1, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 17, 1,200,254, 36, 1,220, 1, 64, 1,221,254, 35,253,150,
+ 4, 4, 1, 88, 4,214,251, 42,254,168,251,252, 0, 2,255,236, 1,240, 4,229, 2,156, 0, 3, 0, 7, 0, 0, 3, 53, 33, 21,
+ 51, 53, 33, 21, 20, 2, 44,160, 2, 45, 1,240,172,172,172,172, 0, 2,255,236, 1,154, 4,229, 2,242, 0, 3, 0, 7, 0, 0,
+ 1, 17, 33, 17, 33, 17, 33, 17, 2,184, 2, 45,251, 7, 2, 44, 1,154, 1, 88,254,168, 1, 88,254,168, 0, 0, 0, 2, 2, 24,
+253,150, 2,184, 7,200, 0, 3, 0, 7, 0, 0, 1, 17, 51, 17, 3, 17, 51, 17, 2, 24,160,160,160, 2,242, 4,214,251, 42,250,
+164, 4, 4,251,252, 0, 0, 0, 0, 2, 1,200,253,150, 3, 8, 7,200, 0, 3, 0, 7, 0, 0, 1, 17, 33, 17, 1, 17, 33, 17,
+ 1,200, 1, 64,254,192, 1, 64, 2,242, 4,214,251, 42,250,164, 4, 4,251,252, 0, 2,255,236, 1, 68, 4,229, 3, 72, 0, 3,
+ 0, 7, 0, 0, 3, 53, 33, 21, 1, 53, 33, 21, 20, 4,249,251, 7, 4,249, 2,156,172,172,254,168,172,172, 0, 0, 2, 1,120,
+253,150, 3, 88, 7,200, 0, 3, 0, 7, 0, 0, 1, 17, 51, 17, 51, 17, 51, 17, 1,120,160,160,160,253,150, 10, 50,245,206, 10,
+ 50,245,206, 0, 0, 1, 2, 24,253,150, 4,229, 3, 72, 0, 9, 0, 0, 1, 17, 33, 21, 33, 21, 33, 21, 33, 17, 2, 24, 2,205,
+253,211, 2, 45,253,211,253,150, 5,178,172,172,172,252, 82, 0, 0, 1, 1,120,253,150, 4,229, 2,156, 0, 9, 0, 0, 1, 17,
+ 33, 21, 33, 17, 35, 17, 35, 17, 1,120, 3,109,254,115,160,160,253,150, 5, 6,172,251,166, 4, 90,251,166, 0, 0, 2, 1,120,
+253,150, 4,229, 3, 72, 0, 5, 0, 11, 0, 0, 1, 17, 33, 21, 33, 17, 51, 17, 33, 21, 33, 17, 1,120, 3,109,253, 51,160, 2,
+ 45,254,115,253,150, 5,178,172,250,250, 4, 90,172,252, 82, 0, 0, 1,255,236,253,150, 2,184, 3, 72, 0, 9, 0, 0, 1, 17,
+ 33, 53, 33, 53, 33, 53, 33, 17, 2, 24,253,212, 2, 44,253,212, 2,204,253,150, 3,174,172,172,172,250, 78, 0, 0, 1,255,236,
+253,150, 3, 88, 2,156, 0, 9, 0, 0, 3, 53, 33, 17, 35, 17, 35, 17, 35, 17, 20, 3,108,160,160,160, 1,240,172,250,250, 4,
+ 90,251,166, 4, 90, 0, 0, 0, 0, 2,255,236,253,150, 3, 88, 3, 72, 0, 5, 0, 11, 0, 0, 1, 17, 33, 53, 33, 17, 33, 17,
+ 33, 53, 33, 17, 2,184,253, 52, 3,108,254, 32,254,116, 2, 44,253,150, 5, 6,172,250, 78, 3,174,172,251,166, 0, 1, 2, 24,
+ 1, 68, 4,229, 7,200, 0, 9, 0, 0, 1, 17, 51, 17, 33, 21, 33, 21, 33, 21, 2, 24,160, 2, 45,253,211, 2, 45, 1, 68, 6,
+132,251,128,172,172,172, 0, 0, 0, 1, 1,120, 1,240, 4,229, 7,200, 0, 9, 0, 0, 1, 17, 51, 17, 51, 17, 51, 17, 33, 21,
+ 1,120,160,160,160, 1,141, 1,240, 5,216,250,212, 5, 44,250,212,172, 0, 0, 0, 2, 1,120, 1, 68, 4,229, 7,200, 0, 5,
+ 0, 11, 0, 0, 1, 17, 51, 17, 33, 21, 1, 17, 51, 17, 33, 21, 2,184,160, 1,141,252,147,160, 2,205, 2,156, 5, 44,251,128,
+172,254,168, 6,132,250, 40,172, 0, 1,255,236, 1, 68, 2,184, 7,200, 0, 9, 0, 0, 3, 53, 33, 53, 33, 53, 33, 17, 51, 17,
+ 20, 2, 44,253,212, 2, 44,160, 1, 68,172,172,172, 4,128,249,124, 0, 0, 0, 0, 1,255,236, 1,240, 3, 88, 7,200, 0, 9,
+ 0, 0, 3, 53, 33, 17, 51, 17, 51, 17, 51, 17, 20, 1,140,160,160,160, 1,240,172, 5, 44,250,212, 5, 44,250, 40, 0, 0, 0,
+ 0, 2,255,236, 1, 68, 3, 88, 7,200, 0, 5, 0, 11, 0, 0, 3, 53, 33, 17, 51, 17, 1, 53, 33, 17, 51, 17, 20, 1,140,160,
+253,212, 2,204,160, 2,156,172, 4,128,250,212,254,168,172, 5,216,249,124, 0, 0, 1, 2, 24,253,150, 4,229, 7,200, 0, 11,
+ 0, 0, 1, 17, 51, 17, 33, 21, 33, 21, 33, 21, 33, 17, 2, 24,160, 2, 45,253,211, 2, 45,253,211,253,150, 10, 50,251,128,172,
+172,172,252, 82, 0, 2, 1,120,253,150, 4,229, 7,200, 0, 3, 0, 11, 0, 0, 1, 17, 51, 17, 51, 17, 51, 17, 33, 21, 33, 17,
+ 1,120,160,160,160, 1,141,254,115,253,150, 10, 50,245,206, 10, 50,250,212,172,251,166, 0, 0, 0, 3, 1,120,253,150, 4,229,
+ 7,200, 0, 5, 0, 9, 0, 15, 0, 0, 1, 17, 51, 17, 33, 21, 1, 17, 51, 17, 51, 17, 33, 21, 33, 17, 2,184,160, 1,141,252,
+147,160,160, 2, 45,254,115, 2,156, 5, 44,251,128,172,250,250, 10, 50,245,206, 4, 90,172,252, 82, 0, 0, 0, 0, 1,255,236,
+253,150, 2,184, 7,200, 0, 11, 0, 0, 1, 17, 33, 53, 33, 53, 33, 53, 33, 17, 51, 17, 2, 24,253,212, 2, 44,253,212, 2, 44,
+160,253,150, 3,174,172,172,172, 4,128,245,206, 0, 2,255,236,253,150, 3, 88, 7,200, 0, 7, 0, 11, 0, 0, 1, 17, 33, 53,
+ 33, 17, 51, 17, 51, 17, 51, 17, 1,120,254,116, 1,140,160,160,160,253,150, 4, 90,172, 5, 44,245,206, 10, 50,245,206, 0, 0,
+ 0, 3,255,236,253,150, 3, 88, 7,200, 0, 5, 0, 11, 0, 15, 0, 0, 3, 53, 33, 17, 51, 17, 3, 17, 33, 53, 33, 17, 51, 17,
+ 51, 17, 20, 1,140,160,160,254,116, 2, 44,160,160, 2,156,172, 4,128,250,212,250,250, 3,174,172,251,166, 10, 50,245,206, 0,
+ 0, 2,255,236,253,150, 4,229, 3, 72, 0, 7, 0, 11, 0, 0, 1, 17, 33, 53, 33, 21, 33, 17, 1, 53, 33, 21, 2, 24,253,212,
+ 4,249,253,211,253, 52, 4,249,253,150, 3,174,172,172,252, 82, 5, 6,172,172, 0, 1,255,236,253,150, 4,229, 2,156, 0, 11,
+ 0, 0, 3, 53, 33, 21, 33, 17, 35, 17, 35, 17, 35, 17, 20, 4,249,254,115,160,160,160, 1,240,172,172,251,166, 4, 90,251,166,
+ 4, 90, 0, 0, 0, 3,255,236,253,150, 4,229, 3, 72, 0, 3, 0, 9, 0, 15, 0, 0, 3, 53, 33, 21, 1, 17, 33, 53, 33, 17,
+ 51, 17, 33, 21, 33, 17, 20, 4,249,252,147,254,116, 2, 44,160, 2, 45,254,115, 2,156,172,172,250,250, 3,174,172,251,166, 4,
+ 90,172,252, 82, 0, 2,255,236, 1, 68, 4,229, 7,200, 0, 3, 0, 11, 0, 0, 3, 53, 33, 21, 1, 53, 33, 17, 51, 17, 33, 21,
+ 20, 4,249,251, 7, 2, 44,160, 2, 45, 1, 68,172,172, 1, 88,172, 4,128,251,128,172, 0, 0, 0, 1,255,236, 1,240, 4,229,
+ 7,200, 0, 11, 0, 0, 3, 53, 33, 17, 51, 17, 51, 17, 51, 17, 33, 21, 20, 1,140,160,160,160, 1,141, 1,240,172, 5, 44,250,
+212, 5, 44,250,212,172, 0, 0, 0, 3,255,236, 1, 68, 4,229, 7,200, 0, 3, 0, 9, 0, 15, 0, 0, 3, 53, 33, 21, 1, 53,
+ 33, 17, 51, 17, 51, 17, 51, 17, 33, 21, 20, 4,249,251, 7, 1,140,160,160,160, 1,141, 1, 68,172,172, 1, 88,172, 4,128,250,
+212, 5, 44,251,128,172, 0, 0, 0, 1,255,236,253,150, 4,229, 7,200, 0, 19, 0, 0, 1, 17, 33, 53, 33, 53, 33, 53, 33, 17,
+ 51, 17, 33, 21, 33, 21, 33, 21, 33, 17, 2, 24,253,212, 2, 44,253,212, 2, 44,160, 2, 45,253,211, 2, 45,253,211,253,150, 3,
+174,172,172,172, 4,128,251,128,172,172,172,252, 82, 0, 0, 0, 0, 1,255,236,253,150, 4,229, 7,200, 0, 19, 0, 0, 3, 53,
+ 33, 17, 51, 17, 51, 17, 51, 17, 33, 21, 33, 17, 35, 17, 35, 17, 35, 17, 20, 1,140,160,160,160, 1,141,254,115,160,160,160, 1,
+240,172, 5, 44,250,212, 5, 44,250,212,172,251,166, 4, 90,251,166, 4, 90, 0, 0, 4,255,236,253,150, 4,229, 7,200, 0, 5,
+ 0, 11, 0, 17, 0, 23, 0, 0, 1, 17, 33, 21, 33, 17, 33, 17, 33, 53, 33, 17, 1, 53, 33, 17, 51, 17, 51, 17, 51, 17, 33, 21,
+ 2,184, 2, 45,254,115,254, 32,254,116, 2, 44,253,212, 1,140,160,160,160, 1,141,253,150, 4, 90,172,252, 82, 3,174,172,251,
+166, 5, 6,172, 4,128,250,212, 5, 44,251,128,172, 0, 0, 0, 0, 1, 2, 24,253,150, 4,229, 2,156, 0, 12, 0, 0, 1, 17,
+ 52, 55, 54, 51, 33, 21, 33, 34, 6, 21, 17, 2, 24, 81, 91,168, 1,121,254,135, 89, 91,253,150, 3, 96,161,127,134,172,126,124,
+252,160, 0, 0, 0, 1,255,236,253,150, 2,184, 2,156, 0, 13, 0, 0, 1, 17, 52, 39, 38, 35, 33, 53, 33, 50, 23, 22, 21, 17,
+ 2, 24, 46, 45, 89,254,136, 1,120,168, 91, 81,253,150, 3, 96,126, 61, 63,172,134,120,168,252,160, 0, 0, 0, 0, 1,255,236,
+ 1,240, 2,184, 7,200, 0, 12, 0, 0, 3, 53, 33, 50, 54, 53, 17, 51, 17, 20, 7, 6, 35, 20, 1,120, 89, 91,160, 81, 91,168,
+ 1,240,172,126,124, 4, 50,251,206,168,120,134, 0, 1, 2, 24, 1,240, 4,229, 7,200, 0, 12, 0, 0, 1, 33, 34, 39, 38, 53,
+ 17, 51, 17, 20, 22, 51, 33, 4,229,254,135,168, 91, 81,160, 91, 89, 1,121, 1,240,134,120,168, 4, 50,251,206,124,126, 0, 0,
+ 0, 1,255,147,253,150, 5, 62, 7,200, 0, 3, 0, 0, 3, 1, 51, 1,109, 4,249,178,251, 7,253,150, 10, 50,245,206, 0, 0,
+ 0, 1,255,147,253,150, 5, 62, 7,200, 0, 3, 0, 0, 1, 35, 1, 51, 5, 62,178,251, 7,178,253,150, 10, 50, 0, 1,255,147,
+253,150, 5, 62, 7,200, 0, 11, 0, 0, 1, 35, 9, 1, 35, 9, 1, 51, 9, 1, 51, 1, 5, 62,178,253,220,253,221,178, 2,125,
+253,131,178, 2, 35, 2, 36,178,253,132,253,150, 4, 99,251,157, 5, 25, 5, 25,251,157, 4, 99,250,231, 0, 0, 0, 1,255,236,
+ 1,240, 2,124, 2,156, 0, 3, 0, 0, 3, 53, 33, 21, 20, 2,144, 1,240,172,172, 0, 0, 0, 0, 1, 2, 24, 2, 70, 2,184,
+ 7,200, 0, 3, 0, 0, 1, 17, 51, 17, 2, 24,160, 2, 70, 5,130,250,126, 0, 0, 1, 2,124, 1,240, 4,229, 2,156, 0, 3,
+ 0, 0, 1, 53, 33, 21, 2,124, 2,105, 1,240,172,172, 0, 0, 0, 1, 2, 24,253,150, 2,184, 2, 70, 0, 3, 0, 0, 1, 17,
+ 51, 17, 2, 24,160,253,150, 4,176,251, 80, 0, 0, 1,255,236, 1,154, 2,124, 2,242, 0, 3, 0, 0, 3, 17, 33, 17, 20, 2,
+144, 1,154, 1, 88,254,168, 0, 0, 1, 1,200, 2, 70, 3, 8, 7,200, 0, 3, 0, 0, 1, 17, 33, 17, 1,200, 1, 64, 2, 70,
+ 5,130,250,126, 0, 1, 2,124, 1,154, 4,229, 2,242, 0, 3, 0, 0, 1, 17, 33, 17, 2,124, 2,105, 1,154, 1, 88,254,168,
+ 0, 1, 1,200,253,150, 3, 8, 2, 70, 0, 3, 0, 0, 1, 17, 33, 17, 1,200, 1, 64,253,150, 4,176,251, 80, 0, 1,255,236,
+ 1,154, 4,229, 2,242, 0, 7, 0, 0, 3, 53, 33, 53, 33, 17, 33, 53, 20, 2,144, 2,105,253,151, 1,240,172, 86,254,168, 86,
+ 0, 1, 1,200,253,150, 3, 8, 7,200, 0, 7, 0, 0, 1, 17, 51, 17, 51, 17, 51, 17, 1,200, 80,160, 80,253,150, 4,176, 5,
+130,250,126,251, 80, 0, 0, 0, 0, 1,255,236, 1,154, 4,229, 2,242, 0, 7, 0, 0, 3, 17, 33, 21, 33, 21, 33, 21, 20, 2,
+144, 2,105,253,151, 1,154, 1, 88, 86,172, 86, 0, 1, 1,200,253,150, 3, 8, 7,200, 0, 7, 0, 0, 1, 17, 35, 17, 33, 17,
+ 35, 17, 2, 24, 80, 1, 64, 80,253,150, 4,176, 5,130,250,126,251, 80, 0, 0,255,255,255,236, 2, 20, 4,229, 6, 40, 16, 7,
+ 8,222, 0, 0, 4, 20, 0, 0, 0, 1,255,236,254, 0, 4,229,255, 5, 0, 3, 0, 0, 3, 17, 33, 17, 20, 4,249,254, 0, 1,
+ 5,254,251, 0, 0, 1,255,236,254, 0, 4,229, 0, 10, 0, 3, 0, 0, 3, 17, 33, 17, 20, 4,249,254, 0, 2, 10,253,246, 0,
+ 0, 1,255,236,254, 0, 4,229, 1, 15, 0, 3, 0, 0, 3, 17, 33, 17, 20, 4,249,254, 0, 3, 15,252,241, 0, 0, 1,255,236,
+254, 0, 4,229, 2, 20, 0, 3, 0, 0, 3, 17, 33, 17, 20, 4,249,254, 0, 4, 20,251,236, 0, 0, 1,255,236,254, 0, 4,229,
+ 3, 25, 0, 3, 0, 0, 3, 17, 33, 17, 20, 4,249,254, 0, 5, 25,250,231, 0, 0, 1,255,236,254, 0, 4,229, 4, 30, 0, 3,
+ 0, 0, 3, 17, 33, 17, 20, 4,249,254, 0, 6, 30,249,226, 0, 0, 1,255,236,254, 0, 4,229, 5, 35, 0, 3, 0, 0, 3, 17,
+ 33, 17, 20, 4,249,254, 0, 7, 35,248,221, 0, 0, 1,255,236,254, 0, 4,229, 6, 40, 0, 3, 0, 0, 3, 17, 33, 17, 20, 4,
+249,254, 0, 8, 40,247,216, 0, 0, 1,255,236,254, 0, 4, 70, 6, 40, 0, 3, 0, 0, 3, 17, 33, 17, 20, 4, 90,254, 0, 8,
+ 40,247,216, 0, 0, 1,255,236,254, 0, 3,167, 6, 40, 0, 3, 0, 0, 3, 17, 33, 17, 20, 3,186,254, 0, 8, 40,247,216, 0,
+ 0, 1,255,236,254, 0, 3, 8, 6, 40, 0, 3, 0, 0, 3, 17, 33, 17, 20, 3, 27,254, 0, 8, 40,247,216, 0, 0, 1,255,236,
+254, 0, 2,104, 6, 40, 0, 3, 0, 0, 3, 17, 33, 17, 20, 2,124,254, 0, 8, 40,247,216, 0, 0, 1,255,236,254, 0, 1,201,
+ 6, 40, 0, 3, 0, 0, 3, 17, 33, 17, 20, 1,221,254, 0, 8, 40,247,216, 0, 0, 1,255,236,254, 0, 1, 42, 6, 40, 0, 3,
+ 0, 0, 3, 17, 33, 17, 20, 1, 62,254, 0, 8, 40,247,216, 0, 0, 1,255,236,254, 0, 0,139, 6, 40, 0, 3, 0, 0, 3, 17,
+ 51, 17, 20,158,254, 0, 8, 40,247,216, 0, 0,255,255, 2,105,254, 0, 4,229, 6, 40, 16, 7, 8,230, 2,125, 0, 0, 0, 0,
+ 0, 12,255,236,254, 0, 4, 70, 6, 40, 0, 3, 0, 7, 0, 11, 0, 15, 0, 19, 0, 23, 0, 27, 0, 31, 0, 35, 0, 39, 0, 43,
+ 0, 47, 0, 0, 1, 17, 51, 17, 33, 17, 51, 17, 19, 17, 51, 17, 33, 17, 51, 17, 1, 17, 51, 17, 33, 17, 51, 17, 19, 17, 51, 17,
+ 33, 17, 51, 17, 1, 17, 51, 17, 33, 17, 51, 17, 19, 17, 51, 17, 33, 17, 51, 17, 3,166,160,252,228,159,159,159,252,229,158, 3,
+ 28,160,252,228,159,159,159,252,229,158, 3, 28,160,252,228,159,159,159,252,229,158,254, 0, 1, 5,254,251, 1, 5,254,251, 1,
+109, 1, 5,254,251, 1, 5,254,251, 1,110, 1, 5,254,251, 1, 5,254,251, 1,109, 1, 5,254,251, 1, 5,254,251, 1,110, 1,
+ 5,254,251, 1, 5,254,251, 1,109, 1, 5,254,251, 1, 5,254,251, 0, 0, 0, 0, 20,255,236,254, 0, 4,229, 6, 40, 0, 3,
+ 0, 7, 0, 11, 0, 15, 0, 19, 0, 23, 0, 27, 0, 31, 0, 39, 0, 47, 0, 55, 0, 63, 0, 71, 0, 79, 0, 87, 0, 95, 0,103,
+ 0,111, 0,119, 0,127, 0, 0, 23, 51, 17, 35, 25, 1, 35, 17, 19, 17, 51, 17, 3, 17, 35, 17, 19, 17, 51, 17, 3, 17, 35, 17,
+ 19, 17, 51, 17, 3, 17, 35, 17, 1, 59, 1, 17, 35, 25, 1, 35, 17, 59, 1, 17, 35, 25, 1, 35, 17, 59, 1, 17, 35, 25, 1, 35,
+ 17, 59, 1, 17, 35, 25, 1, 35, 1, 59, 1, 17, 35, 25, 1, 35, 17, 59, 1, 17, 35, 25, 1, 35, 17, 59, 1, 17, 35, 25, 1, 35,
+ 17, 59, 1, 17, 35, 25, 1, 35, 1, 59, 1, 17, 35, 25, 1, 35, 17, 59, 1, 17, 35, 25, 1, 35, 17, 59, 1, 17, 35, 25, 1, 35,
+ 17, 59, 1, 17, 35, 25, 1, 35,138,160,160,158,158,160,160,158,158,160,160,158,158,160,160,158, 1, 62,159,159,159,159,159,159,
+159,159,159,159,159,159,159,159,159,159, 1, 62,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159, 1, 62,160,159,
+159,160,160,159,159,160,160,159,159,160,160,159,159,160,251,254,251, 1, 5, 1, 5,254,251, 1, 5, 1, 5,254,251, 1, 5, 1,
+ 5,254,251, 1, 5, 1, 5,254,251, 1, 5, 1, 5,254,251, 1, 5, 1, 5,254,251, 1, 5, 1, 5,254,251,249,226,254,251, 1,
+ 5, 1, 5, 1, 5,254,251, 1, 5, 1, 5, 1, 5,254,251, 1, 5, 1, 5, 1, 5,254,251, 1, 5, 1, 5,248,221,254,251, 1,
+ 5, 1, 5, 1, 5,254,251, 1, 5, 1, 5, 1, 5,254,251, 1, 5, 1, 5, 1, 5,254,251, 1, 5, 1, 5,248,221,254,251, 1,
+ 5, 1, 5, 1, 5,254,251, 1, 5, 1, 5, 1, 5,254,251, 1, 5, 1, 5, 1, 5,254,251, 1, 5, 1, 5, 0, 0, 7,255,236,
+254, 0, 4,229, 6, 40, 0, 25, 0, 29, 0, 33, 0, 37, 0, 41, 0, 45, 0, 49, 0, 0, 3, 17, 51, 17, 35, 17, 51, 17, 35, 17,
+ 51, 17, 33, 17, 51, 17, 33, 17, 35, 17, 35, 17, 33, 17, 35, 25, 1, 51, 17, 35, 1, 51, 17, 35, 1, 51, 17, 35, 1, 51, 17, 35,
+ 1, 51, 17, 35, 1, 51, 17, 35, 20,158,158,158,158,158, 1,222,159, 1,222,159,160,254, 35,159,159,159, 2,124,160,160,254,194,
+159,159,254,194,159,159, 2,124,160,160,254,194,159,159,254, 0, 1,109, 1, 5, 1,214, 1, 5, 1,214, 1, 5,254,251, 1, 5,
+247,216, 1, 5,254,251, 1, 5,254,251, 5,182, 1, 5,254,251, 1, 5,253,141, 1, 5,253,142, 1, 5,254,251, 1, 5,253,141,
+ 1, 5, 0, 0,255,255,255,236, 5, 35, 4,229, 6, 40, 16, 7, 8,219, 0, 0, 7, 35, 0, 0,255,255, 4, 69,254, 0, 4,228,
+ 6, 40, 16, 7, 8,233, 4, 90, 0, 0, 0, 0, 0, 1,255,236,254, 0, 2,104, 2, 20, 0, 3, 0, 0, 3, 17, 33, 17, 20, 2,
+124,254, 0, 4, 20,251,236, 0,255,255, 2,105,254, 0, 4,229, 2, 20, 16, 7, 8,240, 2,125, 0, 0, 0, 0,255,255,255,236,
+ 2, 20, 2,104, 6, 40, 16, 7, 8,240, 0, 0, 4, 20, 0, 0,255,255,255,236,254, 0, 4,229, 6, 40, 16, 38, 8,240, 0, 0,
+ 16, 38, 8,241, 0, 0, 16, 6, 8,242, 0, 0,255,255,255,236,254, 0, 4,229, 6, 40, 16, 38, 8,241, 0, 0, 16, 6, 8,242,
+ 0, 0, 0, 0,255,255,255,236,254, 0, 4,229, 6, 40, 16, 38, 8,240, 0, 0, 16, 38, 8,242, 0, 0, 16, 6, 8,247, 0, 0,
+255,255,255,236,254, 0, 4,229, 6, 40, 16, 38, 8,241, 0, 0, 16, 38, 8,242, 0, 0, 16, 6, 8,247, 0, 0,255,255, 2,105,
+ 2, 20, 4,229, 6, 40, 16, 7, 8,240, 2,125, 4, 20, 0, 0,255,255,255,236,254, 0, 4,229, 6, 40, 16, 38, 8,240, 0, 0,
+ 16, 6, 8,247, 0, 0, 0, 0,255,255,255,236,254, 0, 4,229, 6, 40, 16, 38, 8,240, 0, 0, 16, 38, 8,241, 0, 0, 16, 6,
+ 8,247, 0, 0, 0, 1, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 0, 23, 17, 33, 17, 6, 4,197, 78, 4,196,251, 60, 0, 0,
+ 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 0, 55, 33, 17, 33, 3, 17, 33, 17,120, 3,225,252, 31,114, 4,197,
+ 36, 3,224,251,174, 4,196,251, 60, 0, 0, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 11, 0, 23, 0, 0, 19, 20, 51, 33,
+ 50, 53, 17, 52, 35, 33, 34, 21, 3, 17, 16, 41, 1, 32, 25, 1, 16, 41, 1, 32,120,228, 2, 25,228,228,253,231,228,114, 1, 86,
+ 2, 25, 1, 86,254,170,253,231,254,170, 1, 8,228,228, 2, 24,228,228,253,232, 2, 24, 1, 86,254,170,253,232,254,170, 0, 0,
+255,255, 0, 6,255,177, 4,203, 4,119, 16, 38, 9, 4, 0, 0, 16, 6, 8,251, 0, 0, 0, 0, 0, 6, 0, 6,255,177, 4,203,
+ 4,119, 0, 3, 0, 7, 0, 11, 0, 15, 0, 19, 0, 23, 0, 0, 23, 17, 33, 17, 37, 33, 53, 33, 53, 33, 53, 33, 53, 33, 53, 33,
+ 53, 33, 53, 33, 53, 33, 53, 33, 6, 4,197,251,173, 3,225,252, 31, 3,225,252, 31, 3,225,252, 31, 3,225,252, 31, 3,225,252,
+ 31, 78, 4,196,251, 60,114,110,114,106,114,107,114,107,114,106, 0, 6, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 11,
+ 0, 15, 0, 19, 0, 23, 0, 0, 23, 17, 33, 17, 39, 51, 17, 35, 3, 51, 17, 35, 3, 51, 17, 35, 3, 51, 17, 35, 3, 51, 17, 35,
+ 6, 4,197,225,110,110,220,106,106,220,106,106,222,108,108,220,106,106, 78, 4,196,251, 60,114, 3,224,252, 32, 3,224,252, 32,
+ 3,224,252, 32, 3,224,252, 32, 3,224, 0, 0, 0, 26, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 11, 0, 15, 0, 19,
+ 0, 23, 0, 27, 0, 31, 0, 35, 0, 39, 0, 43, 0, 47, 0, 51, 0, 55, 0, 59, 0, 63, 0, 67, 0, 71, 0, 75, 0, 79, 0, 83,
+ 0, 87, 0, 91, 0, 95, 0, 99, 0,103, 0, 0, 19, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35,
+ 19, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35, 19, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35,
+ 17, 51, 53, 35, 17, 51, 53, 35, 19, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35, 19, 51, 53, 35,
+ 17, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35, 17, 51, 53, 35, 5, 17, 33, 17,120,106,106,106,106,106,106,106,106,106,106,220,
+108,108,108,108,108,108,108,108,108,108,222,106,106,106,106,106,106,106,106,106,106,220,106,106,106,106,106,106,106,106,106,106,
+220,110,110,110,110,110,110,110,110,110,110,252, 28, 4,197, 3,154,106,254,185,107,254,184,107,254,185,106,254,182,110, 3, 8,
+106,254,185,107,254,184,107,254,185,106,254,182,110, 3, 8,106,254,185,107,254,184,107,254,185,106,254,182,110, 3, 8,106,254,
+185,107,254,184,107,254,185,106,254,182,110, 3, 8,106,254,185,107,254,184,107,254,185,106,254,182,110,224, 4,196,251, 60, 0,
+ 0, 8, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 11, 0, 17, 0, 21, 0, 25, 0, 28, 0, 31, 0, 0, 23, 17, 33, 17,
+ 1, 21, 1, 51, 1, 21, 1, 55, 1, 21, 1, 51, 53, 1, 51, 1, 53, 1, 51, 1, 53, 1, 51, 23, 53, 1, 21, 51, 6, 4,197,251,
+173, 1, 52,138,254, 66, 2, 96,149,253, 11, 3,151, 74,252,108,161, 2,243,253,164,162, 1,186,254,208,162,142,252, 31,146, 78,
+ 4,196,251, 60, 2, 48,139,254,205, 2,245,150,253,160, 1, 3,224, 74,252,106, 76, 3,148,253, 14,151, 2, 91,254, 70,139, 1,
+ 47,142,142,252,178,146, 0, 0, 0, 8, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 11, 0, 17, 0, 21, 0, 25, 0, 28,
+ 0, 31, 0, 0, 23, 17, 33, 17, 37, 51, 1, 53, 1, 23, 1, 53, 1, 51, 1, 53, 35, 1, 53, 1, 35, 1, 53, 1, 35, 1, 53, 55,
+ 35, 1, 51, 53, 6, 4,197,253,208,138, 1, 52,253, 11,149, 2, 96,252, 31, 74, 3,151, 77,252,108, 2,243,151,253,164, 1,186,
+138,254,208,142,142, 3, 79,146, 78, 4,196,251, 60,114, 1, 51,139,254, 66, 1, 2, 96,150,253, 11, 3,150, 74,252,108,162, 2,
+242,253,165,161, 1,186,254,209,161,142,252, 32,146, 0, 0, 0, 0, 26, 0, 6,255,177, 4,203, 4,119, 0, 4, 0, 9, 0, 14,
+ 0, 19, 0, 23, 0, 28, 0, 33, 0, 37, 0, 41, 0, 45, 0, 50, 0, 55, 0, 59, 0, 63, 0, 67, 0, 71, 0, 75, 0, 80, 0, 84,
+ 0, 88, 0, 92, 0, 97, 0,102, 0,106, 0,111, 0,115, 0, 0, 37, 23, 51, 53, 39, 1, 23, 55, 39, 35, 17, 23, 55, 39, 7, 1,
+ 23, 55, 39, 35, 7, 23, 55, 39, 3, 23, 55, 39, 7, 1, 23, 55, 39, 35, 7, 23, 55, 39, 7, 23, 55, 39, 7, 23, 55, 39, 3, 51,
+ 55, 39, 7, 1, 23, 55, 53, 35, 7, 23, 55, 39, 7, 23, 55, 39, 7, 23, 55, 39, 7, 23, 55, 39, 7, 23, 55, 39, 1, 23, 55, 53,
+ 39, 7, 23, 55, 39, 7, 23, 55, 39, 7, 23, 55, 39, 7, 23, 51, 55, 39, 37, 23, 55, 53, 39, 7, 23, 55, 39, 7, 23, 51, 55, 39,
+ 5, 17, 33, 17, 3,235, 36, 74, 35,252, 66, 34, 76, 33, 77, 28, 76, 70, 34, 1, 15, 69, 76, 27, 85,189, 69, 76, 70,190, 35, 69,
+ 75, 29, 2, 65, 76, 69, 33, 85,183, 75, 76, 76,231, 75, 76, 76,231, 76, 75, 76,184, 74, 36, 75, 35, 3,116, 75, 34, 77,182, 75,
+ 69, 75,226, 76, 75, 75,232, 75, 76, 76,230, 75, 75, 76,224, 75, 69, 75, 2,193, 74, 29, 34,226, 75, 76, 75,232, 75, 76, 76,230,
+ 74, 76, 76,224, 36, 78, 30, 75, 2, 36, 69, 35, 29,231, 69, 75, 69,231, 30, 78, 36, 69,253, 2, 4,197, 72, 36, 76, 35, 3, 39,
+ 34, 76, 32,254,127, 29, 76, 69, 34, 1, 14, 69, 76, 26,189, 69, 76, 69,253,196, 34, 69, 75, 28, 2, 65, 76, 69, 33,183, 75, 75,
+ 76,232, 75, 75, 76,231, 76, 75, 76,253,195, 36, 75, 35, 3,116, 76, 34, 74,182, 76, 69, 76,226, 75, 75, 76,232, 75, 75, 75,230,
+ 76, 75, 75,224, 75, 69, 75, 1,137, 76, 29, 82, 34,226, 75, 76, 75,232, 75, 76, 74,230, 76, 76, 74,224, 36, 30, 75,237, 69, 34,
+ 82, 28,231, 69, 75, 69,231, 30, 36, 69,219, 4,196,251, 60, 0, 0, 1, 0,219, 0,135, 3,245, 3,161, 0, 3, 0, 0, 55, 17,
+ 33, 17,219, 3, 26,135, 3, 26,252,230, 0, 0, 0, 2, 0,219, 0,135, 3,245, 3,161, 0, 3, 0, 7, 0, 0, 37, 33, 17, 33,
+ 3, 17, 33, 17, 1, 77, 2, 54,253,202,114, 3, 26,249, 2, 54,253, 88, 3, 26,252,230, 0, 0, 0, 1, 0, 6, 0,240, 4,203,
+ 3, 56, 0, 3, 0, 0, 37, 33, 17, 33, 4,203,251, 59, 4,197,240, 2, 72, 0, 0, 2, 0, 6, 0,240, 4,203, 3, 56, 0, 3,
+ 0, 7, 0, 0, 1, 17, 33, 17, 5, 33, 17, 33, 4, 89,252, 31, 4, 83,251, 59, 4,197, 1, 98, 1,100,254,156,114, 2, 72, 0,
+ 0, 1, 1, 68,255,177, 3,141, 4,119, 0, 3, 0, 0, 5, 17, 33, 17, 1, 68, 2, 72, 78, 4,196,251, 60, 0, 0, 2, 1, 68,
+255,177, 3,141, 4,119, 0, 3, 0, 7, 0, 0, 37, 33, 17, 33, 3, 17, 33, 17, 1,182, 1,100,254,156,114, 2, 72, 36, 3,224,
+251,174, 4,196,251, 60, 0, 0, 0, 1, 0, 6, 0,240, 4,203, 3, 56, 0, 3, 0, 0, 37, 33, 1, 33, 3,151,252,111, 1, 52,
+ 3,145,240, 2, 72, 0, 0, 0, 0, 2, 0, 6, 0,240, 4,203, 3, 56, 0, 3, 0, 7, 0, 0, 1, 19, 33, 3, 5, 33, 1, 33,
+ 3, 97,188,253, 83,188, 2,227,252,111, 1, 52, 3,145, 1, 98, 1,100,254,156,114, 2, 72, 0, 0, 1, 0, 6,255,177, 4,203,
+ 4,119, 0, 2, 0, 0, 23, 9, 1, 6, 2, 98, 2, 99, 78, 4,196,251, 60, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2,
+ 0, 5, 0, 0, 55, 33, 9, 3,177, 3,111,254, 72,253,158, 2, 98, 2, 99, 36, 3,110,252, 32, 4,196,251, 60, 0, 1, 0,219,
+ 0,135, 3,245, 3,161, 0, 2, 0, 0, 55, 9, 1,219, 1,141, 1,141,135, 3, 26,252,230, 0, 0, 2, 0,219, 0,135, 3,245,
+ 3,161, 0, 2, 0, 5, 0, 0, 37, 33, 3, 9, 2, 1,134, 1,196,226,254,115, 1,141, 1,141,249, 1,196,253,202, 3, 26,252,
+230, 0, 0, 0, 0, 1, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 0, 23, 17, 1, 6, 4,197, 78, 4,196,253,158, 0, 0, 0,
+ 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 5, 0, 0, 55, 9, 1, 3, 17, 1,120, 3,111,252,145,114, 4,197, 92, 1,
+184, 1,184,251,230, 4,196,253,158, 0, 0, 0, 0, 1, 0,219, 0,135, 3,245, 3,161, 0, 2, 0, 0, 55, 17, 1,219, 3, 26,
+135, 3, 26,254,115, 0, 0, 0, 0, 2, 0,219, 0,135, 3,245, 3,161, 0, 2, 0, 5, 0, 0, 1, 45, 1, 3, 17, 1, 1, 77,
+ 1,196,254, 60,114, 3, 26, 1, 50,226,226,253,145, 3, 26,254,115, 0, 0, 0, 0, 1, 0, 6, 0,135, 4,203, 3,161, 0, 2,
+ 0, 0, 55, 17, 1, 6, 4,197,135, 3, 26,254,115, 0, 0, 0, 0, 2, 0, 6, 0,135, 4,203, 3,161, 0, 2, 0, 5, 0, 0,
+ 19, 45, 1, 3, 17, 1,120, 3, 54,252,202,114, 4,197, 1, 50,226,226,253,145, 3, 26,254,115, 0, 1, 0, 6,255,177, 4,203,
+ 4,119, 0, 2, 0, 0, 5, 1, 33, 2,104,253,158, 4,197, 78, 4,196, 0, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2,
+ 0, 5, 0, 0, 37, 1, 33, 9, 1, 33, 2,104, 1,149,252,215, 1,148,253,158, 4,197,205, 3, 40,251,189, 4,196, 0, 0, 0,
+ 0, 1, 0,219, 0,135, 3,245, 3,161, 0, 2, 0, 0, 37, 1, 33, 2,104,254,115, 3, 26,135, 3, 26, 0, 0, 0, 2, 0,219,
+ 0,135, 3,245, 3,161, 0, 2, 0, 5, 0, 0, 1, 19, 33, 19, 1, 33, 2,104,226,254, 60,226,254,115, 3, 26, 1,107, 1,196,
+253, 88, 3, 26, 0, 1, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 0, 19, 1, 17, 6, 4,197, 2, 20, 2, 98,251, 60, 0, 0,
+ 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 5, 0, 0, 19, 1, 17, 9, 1, 17,234, 3,111,251,173, 4,197, 2, 20,254,
+ 72, 3,112,254, 72, 2, 98,251, 60, 0, 0, 0, 0, 1, 0,219, 0,135, 3,245, 3,161, 0, 2, 0, 0, 19, 1, 17,219, 3, 26,
+ 2, 20, 1,141,252,230, 0, 0, 0, 2, 0,219, 0,135, 3,245, 3,161, 0, 2, 0, 5, 0, 0, 1, 5, 17, 5, 1, 17, 1,191,
+ 1,196,253, 88, 3, 26, 2, 20,226, 1,196,226, 1,141,252,230, 0, 1, 0, 6, 0,135, 4,203, 3,161, 0, 2, 0, 0, 19, 1,
+ 17, 6, 4,197, 2, 20, 1,141,252,230, 0, 0, 0, 2, 0, 6, 0,135, 4,203, 3,161, 0, 2, 0, 5, 0, 0, 1, 5, 17, 5,
+ 1, 17, 1, 35, 3, 54,251,173, 4,197, 2, 20,226, 1,196,226, 1,141,252,230, 0, 1, 0, 6,255,177, 4,203, 4,119, 0, 3,
+ 0, 0, 19, 9, 2, 6, 2, 98, 2, 99,253,157, 2, 20, 2, 98,253,158,253,158, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 3,
+ 0, 7, 0, 0, 19, 9, 6,195, 1,165, 1,166,254, 90,253,158, 2, 98, 2, 99,253,157, 2, 20,254, 90, 1,166, 1,166,254, 90,
+ 2, 98,253,158,253,158, 0, 0, 0, 3, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 11, 0, 0, 19, 9, 10,250, 1,110,
+ 1,110,254,146,254, 54, 1,202, 1,203,254, 53,253,158, 2, 98, 2, 99,253,157, 2, 20, 1,110,254,146,254,146, 1,110,254, 54,
+ 1,202, 1,202,254, 54, 2, 98,253,158,253,158, 0, 3, 0, 6,255,172, 4,203, 4,124, 0, 13, 0, 27, 0, 41, 0, 0, 18, 16,
+ 55, 54, 51, 50, 23, 22, 16, 7, 6, 35, 34, 39, 0, 16, 23, 22, 51, 50, 55, 54, 16, 39, 38, 35, 34, 7, 0, 16, 37, 54, 51, 50,
+ 23, 4, 16, 5, 6, 35, 34, 39,220,198, 99, 99, 99, 99,199,199, 99, 99, 99, 99,254,222,244,122,122,122,122,245,245,122,122,122,
+122,254,146, 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152, 1, 47, 1,202,114, 57, 57,114,254, 54,114, 57, 57, 2,113,
+253,204,140, 71, 71,141, 2, 50,141, 71, 71,252,250, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 0, 2, 0,117,254, 35, 4, 92,
+ 6,117, 0, 3, 0, 7, 0, 34, 64, 17, 2, 6, 0, 8, 4, 6, 8, 6, 4, 3, 2, 1, 0, 6, 5, 7, 8, 16,212,204, 23, 57,
+ 49, 0, 16,212,204, 17, 57, 18, 57, 48, 9, 7, 2,104,254,127, 1,129, 1,129,254,127, 1,244,254, 12,254, 13, 5,129,252,207,
+252,199, 3, 57, 4, 37,251,219,251,211, 4, 45, 0, 2, 0, 6,255,172, 4,203, 4,124, 0, 13, 0, 27, 0, 0, 18, 16, 23, 22,
+ 51, 50, 55, 54, 16, 39, 38, 35, 34, 7, 0, 16, 37, 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39,128,244,122,122,122,122,245,245,
+122,122,122,122,254,146, 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152, 3, 46,253,204,140, 71, 71,141, 2, 50,141, 71,
+ 71,252,250, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 0, 0, 0, 8, 0, 6,255,172, 4,203, 4,124, 0, 9, 0, 19, 0, 29,
+ 0, 39, 0, 47, 0, 55, 0, 63, 0, 71, 0, 0, 55, 22, 23, 22, 23, 7, 38, 39, 38, 39, 5, 54, 55, 54, 55, 23, 6, 7, 6, 7,
+ 19, 38, 39, 38, 39, 55, 22, 23, 22, 23, 37, 6, 7, 6, 7, 39, 54, 55, 54, 55, 19, 22, 50, 55, 23, 6, 34, 39, 1, 54, 52, 39,
+ 55, 22, 20, 7, 1, 38, 34, 7, 39, 54, 50, 23, 1, 6, 20, 23, 7, 38, 52, 55,212, 34, 46, 36, 44, 61, 55, 45, 58, 42, 2,237,
+ 44, 36, 41, 39,101, 49, 51, 45, 55, 99, 34, 46, 36, 44, 61, 55, 45, 58, 42,253, 19, 44, 36, 46, 34,101, 42, 58, 45, 55,185, 60,
+120, 60, 30, 75,150, 75, 2,114, 13, 13,119, 16, 16,254, 37, 60,120, 60, 30, 75,150, 75,253,143, 13, 13,119, 16, 16,250, 47, 38,
+ 30, 25,106, 32, 37, 48, 58, 69, 25, 30, 34, 51, 70, 65, 42, 37, 32, 3, 42, 47, 38, 30, 25,106, 32, 37, 48, 58, 69, 25, 30, 38,
+ 47, 71, 58, 48, 37, 32,252, 20, 17, 17,119, 21, 21, 1,219, 57,126, 57, 30, 71,158, 71, 2,114, 17, 17,119, 21, 21,254, 37, 57,
+126, 57, 30, 71,158, 71, 0, 0, 0, 6, 0, 6,255,172, 4,203, 4,124, 0, 13, 0, 23, 0, 27, 0, 37, 0, 47, 0, 51, 0, 0,
+ 54, 16, 37, 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39, 19, 17, 22, 23, 22, 23, 17, 6, 7, 6, 7, 6, 16, 23, 1, 17, 22, 51,
+ 50, 55, 17, 38, 35, 34, 23, 17, 54, 55, 54, 55, 17, 38, 39, 38, 23, 17, 54, 16, 6, 1, 49,152,153,152,153, 1, 50,254,206,153,
+152,153,152, 29, 15, 17, 38, 38, 38, 38, 17,129, 98, 98, 1, 80, 27, 27, 26, 26, 26, 26, 27,193, 39, 39, 14, 14, 14, 14, 39,181,
+103,180, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 3,163,252,218, 10, 9, 22, 15, 3,150, 15, 22, 9,113,122,254,156,122, 3,
+ 21,252, 46, 4, 3, 3,212, 3, 33,252,104, 15, 23, 8, 9, 3, 42, 9, 8, 23,139,253,156,124, 1,108, 0, 0, 0, 4, 0, 6,
+255,172, 4,203, 4,124, 0, 13, 0, 27, 0, 41, 0, 55, 0, 0, 0, 20, 23, 22, 51, 50, 55, 54, 52, 39, 38, 35, 34, 7, 2, 16,
+ 55, 54, 51, 50, 23, 22, 16, 7, 6, 35, 34, 39, 0, 16, 23, 22, 51, 50, 55, 54, 16, 39, 38, 35, 34, 7, 0, 16, 37, 54, 51, 50,
+ 23, 4, 16, 5, 6, 35, 34, 39, 1,226, 67, 34, 33, 34, 33, 68, 68, 33, 34, 33, 34,177,122, 61, 61, 61, 61,123,123, 61, 61, 61,
+ 61,254,146,244,122,122,122,122,245,245,122,122,122,122,254,146, 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152, 2, 97,
+154, 39, 20, 20, 39,154, 39, 20, 20,254,255, 1, 26, 70, 35, 35, 70,254,230, 70, 35, 35, 1,237,253,204,140, 71, 71,141, 2, 50,
+141, 71, 71,252,250, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 0, 1, 0, 6,255,172, 4,203, 4,124, 0, 13, 0, 0, 54, 16,
+ 37, 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39, 6, 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152,180, 2,192,176, 88,
+ 88,176,253, 64,176, 88, 88, 0, 0, 2, 0, 6,255,172, 4,203, 4,124, 0, 7, 0, 21, 0, 0, 37, 50, 55, 54, 16, 39, 38, 35,
+ 0, 16, 37, 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39, 2,104,122,122,245,245,122,122,253,158, 1, 49,152,153,152,153, 1, 50,
+254,206,153,152,153,152, 39, 71,141, 2, 50,141, 71,252,179, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 0, 0, 0, 2, 0, 6,
+255,172, 4,203, 4,124, 0, 7, 0, 21, 0, 0, 1, 34, 7, 6, 16, 23, 22, 51, 36, 16, 37, 54, 51, 50, 23, 4, 16, 5, 6, 35,
+ 34, 39, 2,104,122,122,244,244,122,122,253,158, 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152, 4, 1, 71,140,253,204,
+140, 71,141, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 0, 0, 0, 2, 0, 6,255,172, 4,203, 4,124, 0, 8, 0, 22, 0, 0,
+ 1, 16, 39, 38, 35, 34, 7, 6, 17, 2, 16, 37, 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39, 4, 81,245,122,122,122,122,244,122,
+ 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152, 2, 20, 1, 25,141, 71, 71,140,254,230,254,160, 2,192,176, 88, 88,176,
+253, 64,176, 88, 88, 0, 0, 0, 0, 2, 0, 6,255,172, 4,203, 4,124, 0, 8, 0, 22, 0, 0, 19, 16, 23, 22, 51, 50, 55, 54,
+ 17, 0, 16, 37, 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39,128,244,122,122,122,122,245,251,181, 1, 49,152,153,152,153, 1, 50,
+254,206,153,152,153,152, 2, 20,254,230,140, 71, 71,141, 1, 25,254,160, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 0, 0, 0,
+ 0, 2, 0, 6,255,172, 4,203, 4,124, 0, 12, 0, 26, 0, 0, 1, 34, 7, 6, 16, 23, 22, 51, 50, 55, 54, 17, 33, 0, 16, 37,
+ 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39, 2,104,122,122,244,244,122,122,122,122,245,254, 23,253,158, 1, 49,152,153,152,153,
+ 1, 50,254,206,153,152,153,152, 4, 1, 71,140,253,204,140, 71, 71,141, 1, 25,254,160, 2,192,176, 88, 88,176,253, 64,176, 88,
+ 88, 0, 0, 0, 0, 2, 0, 6,255,172, 4,203, 4,124, 0, 5, 0, 19, 0, 0, 1, 34, 7, 6, 17, 33, 0, 16, 37, 54, 51, 50,
+ 23, 4, 16, 5, 6, 35, 34, 39, 2,104,122,122,244, 1,232,253,158, 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152, 4,
+ 1, 71,140,254,230,254,160, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 0, 0, 0, 1, 1, 55,255,172, 3,154, 4,124, 0, 7,
+ 0, 0, 5, 34, 39, 36, 16, 37, 54, 51, 3,154,154,152,254,208, 1, 48,152,154, 84, 88,176, 2,192,176, 88, 0, 0, 1, 1, 55,
+255,172, 3,154, 4,124, 0, 7, 0, 0, 1, 50, 23, 4, 16, 5, 6, 35, 1, 56,150,154, 1, 50,254,206,154,150, 4,124, 88,176,
+253, 64,174, 90, 0, 2,255,236,255,236, 4,229, 6, 40, 0, 11, 0, 15, 0, 0, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6,
+ 1, 17, 33, 17, 1, 63,171,124,125,174,173,124,125,172,254,173, 4,249, 2,250,126,171,173,124,123,172,171,252,118, 6, 60,249,
+196, 0, 0, 0, 0, 3,255,236,254, 0, 4,229, 6, 40, 0, 13, 0, 27, 0, 31, 0, 0, 54, 16, 55, 54, 51, 50, 23, 22, 16, 7,
+ 6, 35, 34, 39, 0, 16, 5, 22, 51, 50, 55, 36, 16, 37, 38, 35, 34, 7, 1, 17, 33, 17,128,244,122,122,122,122,245,245,122,122,
+122,122,254,146, 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152,254,181, 4,249,250, 2, 52,140, 71, 71,141,253,206,141,
+ 71, 71, 3, 6,253, 64,176, 88, 88,176, 2,192,176, 88, 88,249,220, 8, 40,247,216, 0, 0, 0, 0, 2,255,236, 2, 20, 4,229,
+ 6, 40, 0, 12, 0, 21, 0, 0, 3, 17, 33, 17, 35, 16, 37, 38, 35, 34, 7, 4, 17, 41, 1, 16, 55, 54, 51, 50, 23, 22, 20, 4,
+249, 26,254,206,153,152,153,152,254,207, 4, 75,252, 47,244,122,122,122,122,245, 2, 20, 4, 20,251,236, 1, 96,176, 88, 88,176,
+254,160, 1, 25,141, 71, 71,141, 0, 2,255,236,254, 0, 4,229, 2, 20, 0, 12, 0, 21, 0, 0, 3, 17, 51, 16, 5, 22, 51, 50,
+ 55, 36, 17, 51, 17, 1, 33, 16, 7, 6, 35, 34, 39, 38, 20, 26, 1, 49,152,153,152,153, 1, 50, 26,251,155, 3,209,245,122,122,
+122,122,244,254, 0, 4, 20,254,160,176, 88, 88,176, 1, 96,251,236, 4, 20,254,231,141, 71, 71,141, 0, 0, 0, 0, 1, 1, 55,
+ 2, 20, 3,154, 4,124, 0, 9, 0, 0, 1, 16, 37, 54, 51, 23, 34, 7, 6, 17, 1, 55, 1, 49,152,153, 1,123,121,244, 2, 20,
+ 1, 96,176, 88,123, 71,140,254,230, 0, 0, 0, 0, 1, 1, 55, 2, 20, 3,154, 4,124, 0, 9, 0, 0, 1, 50, 23, 4, 17, 35,
+ 16, 39, 38, 35, 1, 56,150,154, 1, 50,123,244,123,120, 4,124, 88,176,254,160, 1, 25,141, 71, 0, 1, 1, 55,255,172, 3,154,
+ 2, 20, 0, 9, 0, 0, 5, 53, 50, 55, 54, 17, 51, 16, 5, 6, 1, 56,120,123,244,123,254,206,154, 84,123, 71,141, 1, 25,254,
+160,174, 90, 0, 0, 1, 1, 55,255,172, 3,154, 2, 20, 0, 9, 0, 0, 5, 34, 39, 36, 17, 51, 16, 23, 22, 51, 3,153,153,152,
+254,207,123,244,121,123, 84, 88,176, 1, 96,254,230,140, 71, 0, 0, 1, 0, 6, 2, 20, 4,203, 4,124, 0, 17, 0, 0, 19, 16,
+ 37, 54, 51, 50, 23, 4, 17, 35, 16, 39, 38, 35, 34, 7, 6, 17, 6, 1, 49,152,153,152,153, 1, 50,122,245,122,122,122,122,244,
+ 2, 20, 1, 96,176, 88, 88,176,254,160, 1, 25,141, 71, 71,140,254,230, 0, 0, 0, 1, 0, 6,255,172, 4,203, 2, 20, 0, 18,
+ 0, 0, 19, 48, 51, 16, 23, 22, 51, 50, 55, 54, 17, 51, 16, 5, 6, 35, 34, 39, 36, 6,122,244,122,122,122,122,245,122,254,206,
+153,152,153,152,254,207, 2, 20,254,230,140, 71, 71,141, 1, 25,254,160,176, 88, 88,176, 0, 0, 0, 1, 0, 6,255,177, 4,203,
+ 4,119, 0, 2, 0, 0, 23, 1, 17, 6, 4,197, 78, 4,196,251, 60, 0, 0, 0, 0, 1, 0, 6,255,177, 4,203, 4,119, 0, 2,
+ 0, 0, 23, 17, 1, 6, 4,197, 78, 4,196,251, 60, 0, 0, 0, 0, 1, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 0, 23, 17,
+ 33, 6, 4,197, 78, 4,196, 0, 0, 1, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 0, 19, 33, 17, 6, 4,197, 4,118,251, 60,
+ 0, 2, 1, 63, 1,209, 3,145, 4, 33, 0, 11, 0, 23, 0, 0, 1, 20, 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 52, 54, 51,
+ 50, 22, 21, 20, 6, 35, 34, 38, 1,122,137, 99,100,140,139, 99,100,138, 59,172,125,124,173,174,125,124,171, 2,250,101,137,139,
+ 99, 98,138,137, 99,124,171,172,123,124,173,171, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 0, 37, 33, 17, 33,
+ 1, 17, 33, 17, 2,104, 1,240,254, 16,253,158, 4,197, 36, 3,224,251,174, 4,196,251, 60, 0, 0, 2, 0, 6,255,177, 4,203,
+ 4,119, 0, 3, 0, 7, 0, 0, 55, 33, 17, 33, 3, 17, 33, 17,120, 1,240,254, 16,114, 4,197, 36, 3,224,251,174, 4,196,251,
+ 60, 0, 0, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 6, 0, 0, 55, 33, 17, 1, 17, 33, 17,120, 3,224,251,174,
+ 4,197, 36, 3,224,251,174, 4,196,251, 60, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 6, 0, 0, 55, 1, 33, 3,
+ 17, 33, 17,120, 3,225,252, 31,114, 4,197, 36, 3,224,251,174, 4,196,251, 60, 0, 3, 0, 6,255,177, 4,203, 4,119, 0, 3,
+ 0, 7, 0, 11, 0, 0, 37, 33, 17, 33, 1, 33, 17, 33, 3, 17, 33, 17, 2,161, 1,183,254, 73,253,215, 1,183,254, 73,114, 4,
+197, 36, 3,224,252, 32, 3,224,251,174, 4,196,251, 60, 0, 0, 0, 3, 0, 6,255,177, 4,203, 4,119, 0, 11, 0, 14, 0, 17,
+ 0, 0, 1, 52, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 1, 33, 9, 3, 1,226, 78, 56, 56, 78, 79, 56, 56, 77,254,207, 3,111,
+254, 72,253,158, 2, 98, 2, 99, 1,106, 56, 77, 77, 56, 55, 78, 77,254,242, 3,110,252, 32, 4,196,251, 60, 0, 0, 2, 0, 6,
+255,177, 4,203, 4,119, 0, 2, 0, 5, 0, 0, 37, 33, 9, 3, 2,104, 1,184,254, 72,253,158, 2, 98, 2, 99, 36, 3,110,252,
+ 32, 4,196,251, 60, 0, 0, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 5, 0, 0, 55, 33, 17, 9, 2,177, 1,183,
+253,158, 2, 98, 2, 99, 36, 3,110,252, 32, 4,196,251, 60, 0, 0, 2,255,236,255,146, 4,229, 4,150, 0, 13, 0, 27, 0, 0,
+ 18, 16, 5, 22, 51, 50, 55, 36, 16, 39, 38, 35, 34, 7, 0, 16, 37, 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39,107, 0,255,126,
+128,127,128, 0,255,255,128,127,128,126,254,130, 1, 62,158,160,159,159, 1, 63,254,193,159,159,160,158, 3, 58,253,180,147, 73,
+ 73,147, 2, 76,147, 73, 73,252,216, 2,222,184, 91, 91,184,253, 34,184, 91, 91, 0, 3, 0, 6,255,177, 4,203, 4,119, 0, 3,
+ 0, 7, 0, 13, 0, 0, 23, 17, 33, 17, 1, 33, 17, 33, 17, 33, 17, 33, 17, 33, 6, 4,197,251,173, 1,183,254, 73, 3,224,254,
+ 73,253,215, 78, 4,196,251, 60, 2,154, 1,184,252, 32, 3,224,253,214, 0, 0, 0, 3, 0, 6,255,177, 4,203, 4,119, 0, 3,
+ 0, 7, 0, 13, 0, 0, 23, 17, 33, 17, 37, 33, 17, 33, 53, 33, 17, 33, 17, 33, 6, 4,197,251,173, 1,183,254, 73, 2, 41, 1,
+183,252, 32, 78, 4,196,251, 60,114, 1,182,114,253,216, 3,224, 0, 3, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 13,
+ 0, 0, 23, 17, 33, 17, 37, 33, 17, 33, 1, 33, 17, 33, 17, 33, 6, 4,197,253,214, 1,183,254, 73,253,215, 1,183, 2, 41,252,
+ 32, 78, 4,196,251, 60,114, 1,182,254, 74, 2, 40, 1,184, 0, 0, 3, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 13,
+ 0, 0, 23, 17, 33, 17, 1, 33, 17, 33, 1, 33, 17, 33, 17, 33, 6, 4,197,253,214, 1,183,254, 73,253,215, 3,224,253,215,254,
+ 73, 78, 4,196,251, 60, 2,154, 1,184,252, 32, 1,182, 2, 42, 0, 3, 0, 6,255,172, 4,203, 4,124, 0, 13, 0, 19, 0, 32,
+ 0, 0, 54, 16, 37, 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39, 19, 6, 7, 6, 7, 33, 5, 22, 23, 22, 51, 50, 55, 54, 16, 39,
+ 38, 39, 17, 6, 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152,248, 94, 93,219, 22, 1,172,254, 84, 23,218,122,122,122,
+122,245,245, 94, 93,180, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 3,249, 13, 54,126,240,114,238,126, 71, 71,141, 2, 50,141,
+ 54, 13,253,221, 0, 3, 0, 6,255,172, 4,203, 4,124, 0, 13, 0, 26, 0, 32, 0, 0, 54, 16, 37, 54, 51, 50, 23, 4, 16, 5,
+ 6, 35, 34, 39, 37, 54, 55, 54, 16, 39, 38, 35, 34, 7, 6, 7, 33, 5, 22, 23, 22, 23, 17, 6, 1, 49,152,153,152,153, 1, 50,
+254,206,153,152,153,152, 1,106, 93, 94,245,245,122,122,122,122,219, 22, 2, 30,253,226, 23,218, 93, 94,180, 2,192,176, 88, 88,
+176,253, 64,176, 88, 88, 39, 13, 54,141, 2, 50,141, 71, 71,126,240,114,238,126, 54, 13, 1,175, 0, 3, 0, 6,255,172, 4,203,
+ 4,124, 0, 13, 0, 26, 0, 32, 0, 0, 54, 16, 37, 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39, 2, 16, 23, 22, 23, 17, 33, 38,
+ 39, 38, 35, 34, 7, 1, 54, 55, 54, 55, 33, 6, 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152,183,244, 93, 94, 2, 31,
+ 22,220,122,122,122,122, 1, 45, 93, 94,219, 23,254, 83,180, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 3, 41,253,206,141, 54,
+ 13, 2, 33,240,126, 71, 71,252,113, 13, 54,126,238, 0, 0, 0, 0, 3, 0, 6,255,172, 4,203, 4,124, 0, 13, 0, 26, 0, 32,
+ 0, 0, 54, 16, 37, 54, 51, 50, 23, 4, 16, 5, 6, 35, 34, 39, 2, 16, 23, 22, 51, 50, 55, 54, 55, 33, 17, 6, 7, 1, 38, 39,
+ 38, 39, 17, 6, 1, 49,152,153,152,153, 1, 50,254,206,153,152,153,152,183,244,122,122,122,122,219, 23,253,225, 94, 93, 2,218,
+ 22,220, 94, 93,180, 2,192,176, 88, 88,176,253, 64,176, 88, 88, 3, 41,253,206,141, 71, 71,126,238, 2, 35, 13, 54,254,146,240,
+126, 54, 13,254, 79, 0, 0, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 5, 0, 0, 55, 1, 33, 3, 17, 33,120, 3,
+ 54,252,202,114, 4,197,206, 3, 54,251,174, 4,196, 0, 0, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 5, 0, 0,
+ 9, 1, 17, 37, 33, 17, 1, 35, 3, 54,251,173, 4,197, 4, 4,252,202, 3, 54,114,251, 60, 0, 0, 2, 0, 6,255,177, 4,203,
+ 4,119, 0, 2, 0, 5, 0, 0, 55, 33, 1, 3, 17, 1,120, 3, 54,252,202,114, 4,197, 36, 3, 54,252, 88, 4,196,251, 60, 0,
+ 0, 2, 0, 97, 0, 13, 4,111, 4, 27, 0, 3, 0, 7, 0, 0, 55, 33, 17, 33, 3, 17, 33, 17,211, 3, 42,252,214,114, 4, 14,
+127, 3, 42,252,100, 4, 14,251,242, 0, 0, 0, 0, 1, 0, 97, 0, 13, 4,111, 4, 27, 0, 3, 0, 0, 55, 17, 33, 17, 97, 4,
+ 14, 13, 4, 14,251,242, 0, 0, 0, 2, 0,175, 0, 91, 4, 33, 3,205, 0, 3, 0, 7, 0, 0, 37, 33, 17, 33, 3, 17, 33, 17,
+ 1, 33, 2,142,253,114,114, 3,114,205, 2,142,253, 0, 3,114,252,142, 0, 0, 0, 1, 0,175, 0, 91, 4, 33, 3,205, 0, 3,
+ 0, 0, 55, 17, 33, 17,175, 3,114, 91, 3,114,252,142, 0, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 5, 0, 0,
+ 37, 33, 17, 9, 1, 17, 1, 35, 3, 54,251,173, 4,197, 36, 3, 54,252, 88, 4,196,251, 60, 0, 0, 9, 0, 34, 0,164, 4,175,
+ 5, 49, 0, 7, 0, 12, 0, 19, 0, 34, 0, 42, 0, 50, 0, 58, 0, 65, 0, 73, 0, 0, 1, 51, 23, 17, 7, 35, 39, 17, 5, 23,
+ 21, 7, 39, 37, 23, 7, 35, 38, 39, 53, 5, 50, 31, 1, 20, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 5, 33, 23, 21, 7, 33, 39,
+ 53, 37, 33, 23, 21, 7, 33, 39, 53, 7, 51, 22, 23, 21, 7, 39, 53, 37, 51, 23, 21, 7, 39, 53, 37, 51, 23, 17, 7, 35, 39, 17,
+ 2, 78, 60, 4, 4, 60, 5, 1,186, 46,194, 48,253,167,196, 47, 2,157, 35, 1,181,163, 69, 10,148, 55, 36,137, 76, 28,143, 52,
+253,228, 1, 8, 5, 5,254,248, 5, 3,122, 1, 14, 5, 5,254,242, 4, 56, 3,104, 89, 47,194,254, 54, 2, 46,192, 48, 1,165,
+ 60, 4, 4, 60, 5, 5, 49, 5,254,239, 4, 4, 1, 17,121, 49, 2,198, 49,186,199, 50,156, 43, 3,141,176, 75,147, 79, 17,130,
+ 49, 72,141, 80, 22,215, 5, 61, 5, 5, 61, 5, 5, 61, 5, 5, 61,218,102, 94, 2, 49,198, 3, 32, 46, 3,198, 49, 3, 92, 4,
+254,239, 5, 5, 1, 17, 0, 0, 0, 1, 0, 50, 0, 8, 4,159, 1,209, 0, 34, 0, 0, 1, 51, 50, 31, 1, 54, 51, 22, 21, 20,
+ 7, 22, 29, 1, 6, 35, 33, 53, 50, 55, 54, 59, 1, 39, 52, 63, 1, 23, 39, 52, 63, 1, 50, 23, 54, 3, 0, 13,134, 72, 12, 24,
+ 34, 83, 21, 63, 11, 49,251,209, 35, 82, 29, 32, 20, 7, 98, 24, 26, 3,125, 41, 30, 28, 74, 1,209,143, 53, 22, 17, 67, 30, 32,
+ 14, 44, 16, 63, 6,107, 24, 30, 67, 30, 2, 2, 7, 91, 55, 5, 27, 62, 0, 0, 0, 1, 0, 34, 0, 6, 4,175, 4, 45, 0, 63,
+ 0, 0, 1, 51, 23, 21, 51, 32, 19, 22, 29, 1, 35, 38, 39, 38, 43, 1, 34, 7, 21, 20, 7, 39, 38, 35, 17, 20, 15, 1, 34, 47,
+ 1, 53, 55, 51, 23, 21, 22, 59, 1, 50, 63, 1, 17, 34, 7, 6, 35, 39, 53, 55, 35, 38, 39, 35, 34, 15, 1, 35, 53, 54, 55, 54,
+ 51, 53, 2, 97, 41, 4, 2, 1, 56,199, 31, 1, 16, 14, 24, 41, 31,107, 79, 6, 24,107, 97, 75, 21, 65, 26, 2, 4, 31, 4, 7,
+ 45, 7, 39, 14, 4,150, 61, 12, 10, 5, 5, 3, 47,141, 47, 71, 24, 14, 2, 41,137,170,221, 4, 44, 4, 89,254,166, 61, 9, 6,
+ 11, 33, 17, 72, 36, 11, 1, 47, 43,254, 25, 72, 17, 1, 68, 20, 18, 5, 5, 8, 72, 41, 29, 1,225, 43, 41, 4, 9, 36, 46, 19,
+ 44, 12, 1,102,155,159, 89, 0, 0, 15, 0, 89,255,250, 4,120, 5,171, 0, 9, 0, 17, 0, 25, 0, 33, 0, 61, 0, 90, 0,133,
+ 0,177, 0,220, 1, 8, 1, 16, 1, 24, 1, 32, 1, 76, 1,120, 0, 0, 1, 22, 55, 51, 6, 7, 38, 39, 51, 22, 55, 38, 39, 54,
+ 55, 22, 23, 6, 5, 38, 39, 54, 55, 22, 23, 6, 3, 38, 39, 54, 55, 22, 23, 6, 39, 6, 21, 20, 22, 51, 50, 54, 53, 52, 39, 38,
+ 39, 22, 55, 54, 53, 52, 38, 35, 34, 6, 21, 20, 23, 22, 51, 6, 19, 54, 55, 50, 31, 1, 22, 20, 7, 6, 7, 22, 23, 22, 21, 20,
+ 4, 32, 36, 53, 52, 55, 54, 55, 38, 39, 38, 52, 55, 1, 23, 39, 38, 50, 15, 1, 55, 54, 51, 50, 21, 20, 15, 1, 23, 22, 21, 20,
+ 35, 34, 47, 1, 23, 22, 35, 34, 63, 1, 7, 6, 35, 34, 53, 52, 63, 1, 39, 38, 53, 52, 51, 50, 3, 23, 39, 38, 51, 50, 15, 1,
+ 55, 54, 51, 50, 21, 20, 15, 1, 23, 22, 21, 20, 35, 34, 47, 1, 23, 22, 35, 34, 63, 1, 7, 6, 35, 34, 53, 52, 63, 1, 39, 38,
+ 53, 52, 51, 50, 1, 23, 39, 38, 51, 50, 15, 1, 55, 54, 51, 50, 21, 20, 15, 1, 23, 22, 20, 35, 34, 47, 1, 23, 22, 35, 34, 63,
+ 1, 7, 6, 35, 34, 53, 52, 63, 1, 39, 38, 53, 52, 51, 48, 31, 1, 39, 38, 51, 50, 15, 1, 55, 54, 51, 50, 21, 20, 15, 1, 23,
+ 22, 21, 20, 35, 34, 47, 1, 23, 22, 35, 34, 63, 1, 7, 6, 35, 34, 53, 52, 63, 1, 39, 38, 53, 52, 51, 50, 1, 38, 53, 52, 51,
+ 50, 21, 20, 5, 38, 53, 54, 51, 50, 21, 20, 55, 38, 53, 52, 51, 50, 21, 20, 19, 23, 39, 38, 51, 50, 15, 1, 55, 54, 51, 50, 21,
+ 20, 15, 1, 23, 22, 21, 20, 35, 34, 47, 1, 23, 22, 35, 34, 63, 1, 7, 6, 35, 34, 53, 52, 63, 1, 39, 38, 53, 52, 51, 50, 1,
+ 23, 39, 38, 51, 50, 15, 1, 55, 54, 51, 50, 21, 20, 15, 1, 23, 22, 21, 20, 35, 34, 47, 1, 23, 22, 35, 34, 63, 1, 7, 6, 35,
+ 34, 53, 52, 63, 1, 39, 38, 53, 52, 51, 50, 2, 80, 79, 28, 25, 5,128,126, 9, 24, 41,185, 42, 1, 3, 43, 39, 3, 3,254,235,
+ 41, 3, 3, 43, 40, 3, 3, 64, 38, 2, 3, 39, 36, 2, 2,202,124,247,175,174,248,124,101,139, 63, 47, 65,125, 93, 92,138, 66,
+ 45, 55,144, 21, 26,147,132, 49, 2, 83, 76, 20, 24,111, 87,142,254,228,254,106,254,227,143, 92,118, 21, 19, 76, 76, 2,114, 37,
+ 6, 1, 28, 1, 6, 37, 4, 4, 14, 7, 44, 42, 7, 12, 6, 2, 35, 4, 1, 14, 14, 1, 5, 36, 2, 5, 13, 8, 41, 42, 8, 14,
+ 3,110, 36, 5, 1, 13, 16, 2, 6, 37, 4, 4, 13, 7, 43, 41, 8, 12, 6, 2, 36, 5, 1, 15, 13, 1, 4, 35, 2, 5, 14, 8,
+ 42, 43, 8, 15, 4,253, 28, 21, 3, 1, 9, 9, 1, 4, 22, 2, 2, 9, 4, 26, 24, 5, 8, 3, 1, 22, 4, 1, 9, 9, 1, 3,
+ 21, 1, 3, 8, 4, 25, 26, 4, 9, 63, 19, 4, 1, 8, 9, 1, 4, 19, 2, 3, 8, 5, 22, 22, 4, 7, 2, 3, 19, 3, 1, 8,
+ 8, 1, 4, 19, 3, 2, 7, 4, 22, 22, 5, 8, 3, 1,249, 39, 43, 38,254,180, 40, 1, 41, 38,251, 40, 43, 38,112, 23, 4, 1,
+ 9, 9, 1, 3, 21, 2, 2, 8, 3, 26, 25, 4, 8, 3, 1, 21, 2, 1, 8, 9, 1, 3, 22, 1, 3, 8, 6, 24, 25, 5, 9, 2,
+252,242, 37, 5, 1, 13, 14, 1, 5, 37, 4, 4, 13, 7, 43, 41, 8, 12, 4, 4, 36, 4, 1, 14, 13, 1, 4, 36, 4, 2, 14, 8,
+ 42, 43, 8, 15, 2, 3,132, 5, 42, 69, 5, 7, 67, 42, 90, 2, 42, 44, 3, 3, 41, 45, 4, 2, 41, 45, 3, 3, 42, 44,254, 18,
+ 2, 37, 38, 2, 2, 37, 38,158,102,147,145,208,208,145,147,102, 85, 32, 2, 53, 72,104,102,101,101,102,104, 72, 50, 30, 1,217,
+112, 24,117, 19, 94,232, 81, 24, 16, 28, 70,115,165,163,230,230,163,165,115, 75, 26, 15, 22, 81,232, 71,254,129, 31, 52, 13, 13,
+ 52, 31, 3, 16, 9, 3, 20, 19, 3, 9, 14, 2, 30, 50, 15, 15, 50, 30, 2, 14, 8, 4, 19, 20, 4, 8, 16, 1, 48, 31, 52, 14,
+ 14, 52, 31, 3, 16, 7, 3, 21, 19, 4, 9, 14, 2, 30, 50, 14, 14, 50, 30, 2, 14, 9, 4, 19, 21, 4, 6, 16, 1, 57, 17, 29,
+ 10, 10, 29, 17, 3, 10, 4, 2, 13, 10, 2, 14, 1, 17, 30, 7, 7, 30, 17, 1, 7, 7, 2, 10, 13, 2, 4, 10,251, 16, 28, 7,
+ 7, 28, 16, 2, 7, 6, 2, 9, 11, 2, 5, 8, 2, 15, 26, 8, 8, 26, 15, 2, 8, 5, 2, 11, 9, 2, 6, 7,253, 76, 2, 37,
+ 40, 39, 42,222, 2, 37, 41, 40, 42, 2, 2, 37, 41, 40, 42, 4,116, 17, 30, 8, 8, 30, 17, 2, 8, 7, 1, 11, 12, 2, 5, 9,
+ 1, 17, 28, 9, 9, 28, 17, 1, 9, 4, 3, 12, 11, 2, 6, 8,254, 49, 31, 52, 14, 14, 52, 31, 3, 16, 8, 3, 20, 19, 4, 9,
+ 14, 3, 29, 50, 14, 14, 50, 29, 3, 14, 9, 4, 19, 20, 4, 7, 16, 0, 0, 0, 0, 15, 0, 29, 0, 48, 4,180, 5,114, 0, 19,
+ 0, 33, 0, 50, 0, 67, 0, 84, 0,101, 0,118, 0,135, 0,152, 0,169, 0,186, 0,203, 0,220, 0,237, 0,254, 0, 0, 1, 22,
+ 7, 6, 15, 1, 6, 43, 1, 38, 39, 38, 53, 52, 63, 2, 54, 23, 22, 7, 6, 23, 22, 31, 1, 22, 63, 1, 54, 47, 1, 38, 7, 19,
+ 50, 23, 22, 29, 1, 20, 7, 6, 35, 34, 47, 1, 53, 52, 55, 54, 55, 50, 23, 22, 29, 1, 20, 7, 6, 35, 34, 47, 1, 53, 52, 55,
+ 54, 55, 50, 23, 22, 29, 1, 20, 7, 6, 35, 34, 39, 61, 1, 52, 55, 54, 55, 50, 23, 22, 29, 1, 20, 7, 6, 35, 34, 47, 1, 53,
+ 52, 55, 54, 19, 50, 23, 22, 29, 1, 20, 7, 6, 35, 34, 47, 1, 53, 52, 55, 54, 7, 50, 23, 22, 29, 1, 20, 7, 6, 35, 34, 39,
+ 61, 1, 52, 55, 54, 1, 50, 23, 22, 29, 1, 20, 7, 6, 35, 34, 47, 1, 53, 52, 55, 54, 55, 50, 23, 22, 29, 1, 20, 7, 6, 35,
+ 34, 39, 61, 1, 52, 55, 54, 55, 50, 23, 22, 29, 1, 20, 7, 6, 35, 34, 47, 1, 53, 52, 55, 54, 1, 50, 23, 22, 29, 1, 20, 7,
+ 6, 35, 34, 47, 1, 53, 52, 55, 54, 55, 50, 23, 22, 29, 1, 20, 7, 6, 35, 34, 47, 1, 53, 52, 55, 54, 55, 50, 23, 22, 29, 1,
+ 20, 7, 6, 35, 34, 47, 1, 53, 52, 55, 54, 55, 50, 23, 22, 29, 1, 20, 7, 6, 35, 34, 47, 1, 53, 52, 55, 54, 1,108, 61, 46,
+ 15, 37, 16, 71, 92, 17, 38, 29, 35, 45, 31, 9, 76,106, 46,196, 78, 26, 4, 10, 11, 48,100, 38, 75, 17, 24, 52,105,185, 21, 11,
+ 6, 20, 8, 10, 27, 9, 1, 19, 10,125, 22, 11, 5, 19, 8, 10, 27, 9, 1, 19, 10,103, 21, 11, 5, 19, 8, 10, 26, 11, 19, 10,
+115, 21, 11, 6, 20, 7, 11, 26, 10, 1, 19, 10, 2, 21, 12, 5, 20, 7, 11, 26, 10, 1, 20, 9,141, 22, 11, 5, 19, 8, 10, 27,
+ 10, 19, 10, 1, 38, 21, 11, 5, 19, 8, 10, 26, 11, 1, 20, 10,144, 22, 11, 5, 19, 8, 10, 27, 10, 19, 10,145, 21, 11, 6, 20,
+ 8, 10, 27, 9, 1, 19, 10,254, 2, 22, 11, 6, 20, 8, 10, 27, 9, 1, 19, 10,204, 21, 12, 5, 20, 7, 11, 26, 10, 1, 20, 9,
+217, 21, 11, 6, 20, 8, 10, 26, 10, 1, 19, 10,193, 21, 12, 5, 20, 7, 11, 26, 10, 1, 20, 9, 1,198, 72,131, 53, 45, 19, 86,
+ 5, 34, 42, 60, 67, 90, 43, 10, 93, 2, 9, 95, 95,102, 17, 12, 13, 56, 65, 37, 92,109, 36, 61, 70, 1, 14, 23, 9, 12, 4, 23,
+ 14, 5, 33, 10, 3, 23, 15, 6,234, 22, 9, 12, 5, 22, 14, 6, 34, 9, 4, 22, 15, 6,230, 23, 9, 11, 5, 22, 15, 5, 34, 9,
+ 4, 22, 15, 6,236, 23, 9, 11, 4, 23, 14, 5, 33, 9, 3, 24, 14, 6,253,197, 23, 9, 11, 5, 23, 14, 5, 33, 11, 2, 24, 14,
+ 6,194, 23, 9, 11, 4, 24, 14, 5, 34, 10, 3, 23, 14, 6, 1,131, 22, 9, 11, 6, 22, 14, 5, 33, 9, 4, 22, 16, 5,187, 23,
+ 9, 11, 5, 23, 14, 5, 34, 9, 3, 23, 15, 6,194, 24, 9, 11, 4, 23, 14, 6, 34, 10, 3, 23, 14, 7,252, 77, 22, 9, 11, 5,
+ 23, 14, 6, 34, 9, 4, 23, 14, 6,158, 22, 9, 11, 5, 22, 15, 6, 35, 9, 3, 23, 15, 5,172, 23, 9, 10, 5, 24, 13, 5, 33,
+ 10, 2, 24, 14, 6,151, 23, 9, 11, 4, 24, 13, 6, 34, 10, 2, 24, 14, 6, 0, 0, 1, 0, 58, 0, 15, 4,151, 4, 51, 0, 9,
+ 0, 0, 19, 33, 27, 1, 33, 5, 19, 37, 5, 19, 58, 1,170,132,133, 1,170,254,167,133,254,165,254,167,132, 2,158, 1,149,254,
+107,251,254,108,250,250, 1,148, 0, 2, 0, 58, 0, 20, 4,151, 4, 57, 0, 9, 0, 19, 0, 0, 19, 33, 27, 1, 33, 5, 19, 37,
+ 5, 19, 55, 3, 37, 5, 3, 37, 33, 11, 1, 33, 58, 1,170,132,133, 1,170,254,167,133,254,165,254,167,132, 48,100, 1, 9, 1,
+ 18,109, 1, 28,254,167,104,100,254,165, 2,164, 1,148,254,108,251,254,108,250,250, 1,148, 15,254,203,191,201, 1, 64,199, 1,
+ 56,254,200, 0, 0, 1, 0,200, 0, 5, 4, 9, 5,214, 0, 17, 0, 0, 1, 22, 23, 20, 7, 9, 1, 55, 19, 37, 55, 1, 38, 53,
+ 52, 55, 1, 54, 3,206, 57, 2, 9,253,125, 1,238, 86, 38,254, 55,224,253,221, 19, 65, 2,147, 11, 5,214, 2, 54, 36, 12,253,
+133,253,244,230,254, 56, 39, 94, 2, 52, 23, 23, 27, 63, 2,134, 10, 0, 0, 0, 0, 1, 0, 59,255,255, 4,150, 5,217, 0, 25,
+ 0, 0, 19, 33, 50, 21, 20, 7, 9, 1, 55, 19, 37, 55, 1, 38, 53, 52, 55, 1, 33, 17, 20, 35, 34, 53, 17, 52,122, 3,214, 60,
+ 26,253,229, 1,201, 83, 35,254, 78,216,254, 16, 14, 49, 1,199,253, 12, 68, 67, 5,217, 83, 34, 27,253,197,254, 27,213,254, 61,
+ 34,108, 2, 22, 15, 46, 27, 51, 1,223,250,252, 69, 68, 5, 91, 58, 0, 0, 0, 0, 3, 0, 43, 0, 7, 4,166, 4,129, 0, 13,
+ 0, 25, 0, 38, 0, 0, 1, 20, 0, 35, 34, 0, 53, 52, 18, 36, 51, 50, 4, 18, 5, 20, 0, 32, 0, 53, 52, 46, 1, 32, 14, 1,
+ 5, 20, 6, 35, 34, 38, 53, 52, 62, 1, 50, 30, 1, 4,165,254,177,238,237,254,177,154, 1, 19,143,144, 1, 20,153,251,191, 1,
+ 45, 1,173, 1, 46,138,248,254,252,248,138, 2,148, 84, 60, 58, 85, 39, 69, 71, 69, 39, 2, 68,238,254,178, 1, 78,238,149, 1,
+ 20,148,148,254,237,150,214,254,211, 1, 45,214,136,246,133,133,246,136, 60, 83, 83, 60, 38, 69, 36, 36, 69, 0, 0, 3, 0, 15,
+ 0, 5, 4,194, 5, 29, 0, 10, 0, 22, 0, 67, 0, 0, 0, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 37, 34, 6, 21, 20, 22, 51,
+ 50, 54, 53, 52, 38, 37, 22, 23, 22, 21, 20, 6, 35, 34, 38, 53, 52, 55, 54, 55, 54, 53, 52, 36, 32, 4, 21, 20, 23, 22, 23, 22,
+ 20, 6, 35, 34, 38, 52, 55, 54, 55, 38, 53, 52, 0, 51, 50, 0, 21, 20, 4, 11,113, 79, 79, 57, 56, 79,252,164, 56, 80, 80, 56,
+ 56, 79, 79, 3, 34, 19, 17, 70,140, 99, 99,139, 68, 62, 85, 93,255, 0,254,144,255, 0, 92, 96, 67, 68,139, 99, 98,141, 70, 14,
+ 14, 93, 1, 87,246,248, 1, 87, 1,177, 90, 65, 64, 90, 90, 64, 65, 90, 90, 65, 64, 91, 91, 64, 65, 90, 75, 15, 20, 80,114,113,
+160,160,113,114, 80, 71, 8,101,134,157,222,222,157,134,100, 3, 77, 80,228,160,160,228, 80, 15, 13,125,159,217, 1, 50,254,206,
+217,155, 0, 0, 0, 3, 0, 18,255,254, 4,191, 5,107, 0, 10, 0, 22, 0, 65, 0, 0, 1, 52, 38, 35, 34, 6, 21, 20, 22, 50,
+ 54, 37, 52, 38, 35, 34, 6, 21, 20, 22, 51, 50, 54, 1, 20, 0, 35, 34, 0, 53, 52, 55, 38, 39, 38, 52, 54, 51, 50, 22, 20, 7,
+ 6, 7, 6, 21, 20, 4, 32, 36, 53, 52, 39, 38, 39, 38, 52, 54, 51, 50, 22, 20, 7, 6, 7, 22, 4, 88, 80, 55, 57, 78, 78,113,
+ 79,253, 46, 78, 57, 55, 79, 79, 55, 57, 78, 3, 39,254,171,247,245,254,171, 93, 14, 14, 69,139, 97, 99,139, 68, 67, 95, 92, 0,
+255, 1,110, 0,255, 92, 85, 62, 68,139, 98, 99,138, 69, 17, 19, 88, 4, 70, 68, 98, 98, 68, 69, 97, 97, 69, 69, 97, 97, 69, 68,
+ 97, 97,254, 43,232,254,185, 1, 71,232,169,132, 14, 17, 85,242,171,171,242, 85, 83, 3,106,142,169,235,235,169,143,105, 9, 76,
+ 86,242,171,171,242, 86, 21, 16,130, 0, 0, 0, 0, 2, 0, 54, 0, 1, 4,155, 5,202, 0, 11, 0, 27, 0, 0, 1, 34, 6, 21,
+ 20, 22, 51, 50, 54, 53, 52, 38, 55, 22, 23, 22, 16, 0, 35, 34, 0, 16, 0, 51, 50, 23, 1, 23, 2, 63,143,201,201,143,142,201,
+199,190, 19, 18,152,254,206,217,215,254,206, 1, 47,218, 96, 84, 1, 14,154, 3, 99,200,144,142,201,201,142,144,200, 59, 16, 19,
+153,254, 80,254,207, 1, 49, 1,176, 1, 50, 29, 1,211, 89, 0, 0, 3, 0, 46, 0, 3, 4,163, 5,203, 0, 8, 0, 17, 0, 49,
+ 0, 0, 1, 34, 6, 20, 22, 50, 54, 52, 38, 0, 34, 6, 20, 22, 51, 50, 54, 52, 1, 22, 21, 20, 2, 35, 34, 2, 53, 52, 18, 51,
+ 50, 23, 22, 23, 55, 38, 53, 52, 18, 51, 50, 18, 21, 20, 2, 35, 34, 39, 38, 39, 1, 64, 75,106,106,150,106,105, 2, 79,151,105,
+105, 76, 75,105,253,247, 24,161,114,113,161,160,114,116, 80, 1, 1,138, 18,159,115,115,160,161,114,113, 81, 7, 7, 2,220,169,
+240,169,169,240,169, 2, 90,169,240,169,169,240,253,228, 84,100,181,254,255, 1, 1,181,183, 1, 1,128, 3, 2,137, 73, 85,183,
+ 1, 1,254,255,183,181,254,255,129, 11, 12, 0, 0, 14, 0, 20,255,255, 4,189, 4,200, 0, 23, 0, 41, 0, 53, 0, 65, 0, 77,
+ 0, 89, 0,100, 0,112, 0,123, 0,134, 0,145, 0,157, 0,169, 0,181, 0, 0, 1, 51, 4, 23, 22, 21, 6, 47, 1, 38, 55, 54,
+ 39, 33, 6, 23, 22, 15, 1, 6, 39, 52, 55, 54, 1, 53, 51, 21, 20, 23, 22, 21, 17, 33, 17, 52, 55, 54, 61, 1, 51, 21, 3, 20,
+ 22, 51, 50, 54, 53, 52, 38, 35, 34, 6, 5, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 39, 20, 6, 35, 34, 38, 53, 52, 54, 51,
+ 50, 22, 17, 20, 6, 35, 34, 38, 53, 52, 54, 51, 50, 22, 2, 22, 6, 7, 6, 38, 39, 38, 54, 55, 54, 19, 22, 6, 7, 6, 38, 39,
+ 38, 54, 55, 54, 22, 1, 30, 1, 14, 1, 39, 46, 1, 55, 62, 1, 4, 30, 1, 7, 14, 1, 39, 46, 1, 55, 54, 36, 54, 22, 23, 22,
+ 6, 7, 6, 38, 39, 38, 37, 54, 22, 23, 22, 6, 7, 6, 38, 39, 38, 54, 1, 62, 1, 23, 30, 1, 7, 14, 1, 39, 46, 1, 19, 62,
+ 1, 23, 30, 1, 7, 14, 1, 39, 46, 1, 2,102, 5, 1, 60,135,142, 20, 59,214, 46, 21, 61, 43,253,178, 44, 62, 21, 47,214, 59,
+ 20,142,135, 1,187, 75,127,121,252,129,122,126, 76, 90,124, 87, 88,123,123, 88, 88,123, 1, 73, 69, 49, 49, 69, 69, 49, 49, 69,
+ 84, 17, 12, 12, 18, 18, 12, 12, 17, 17, 12, 12, 18, 18, 12, 12, 17,109, 13, 3, 10, 10, 24, 7, 8, 4, 10, 10,226, 7, 3, 11,
+ 10, 23, 8, 7, 4, 10, 10, 24,254,249, 13, 10, 7, 22, 12, 11, 12, 4, 4, 22, 1, 59, 23, 11, 4, 4, 22, 11, 12, 11, 4, 4,
+254,201, 23, 22, 4, 3, 10, 12, 12, 22, 4, 4, 1, 82, 11, 22, 4, 4, 11, 12, 11, 23, 3, 4, 11,254,255, 7, 24, 10, 10, 4,
+ 8, 6, 25, 10, 10, 4,202, 8, 23, 10, 11, 3, 7, 7, 24, 10, 10, 4, 4,200, 14,127,135,139,133, 8,115, 22, 64,100, 6, 6,
+100, 64, 22,115, 8,133,139,135,125,254,189, 62,125, 61, 47, 78,234,254,110, 1,146,234, 78, 47, 61,125, 62,254, 64,137,192,192,
+137,136,193,193,135, 77,108,108, 77, 78,107,107,182, 18, 28, 28, 18, 19, 28, 28,253,233, 20, 27, 27, 20, 19, 28, 28, 1,235, 31,
+ 38, 11, 12, 6, 15, 17, 37, 12, 11,254, 73, 16, 37, 13, 10, 5, 17, 15, 37, 12, 10, 5, 1, 34, 7, 33, 36, 18, 5, 6, 35, 18,
+ 18, 18,160, 12, 34, 18, 18, 17, 6, 6, 33, 19, 18, 5, 12, 17, 18, 19, 34, 7, 4, 17, 18, 18,200, 6, 18, 18, 18, 33, 7, 6,
+ 18, 18, 18, 33,254,214, 15, 5, 10, 12, 38, 14, 17, 5, 10, 13, 37, 1,177, 16, 6, 11, 12, 37, 17, 15, 6, 12, 11, 38, 0, 0,
+ 0, 16, 0, 8, 0, 11, 4,201, 4,201, 0, 17, 0, 29, 0, 37, 0, 45, 0, 53, 0, 65, 0, 77, 0, 89, 0,100, 0,112, 0,124,
+ 0,136, 0,148, 0,166, 0,192, 0,218, 0, 0, 1, 53, 35, 21, 6, 7, 6, 21, 17, 33, 17, 52, 39, 38, 39, 53, 35, 21, 7, 50,
+ 22, 21, 20, 6, 35, 34, 38, 53, 52, 54, 22, 34, 6, 20, 22, 50, 54, 52, 38, 34, 6, 20, 22, 50, 54, 52, 2, 34, 6, 20, 22, 50,
+ 54, 52, 3, 14, 1, 23, 30, 1, 55, 62, 1, 39, 46, 1, 19, 14, 1, 23, 30, 1, 55, 62, 1, 39, 46, 1, 37, 6, 22, 23, 22, 54,
+ 55, 54, 38, 39, 38, 6, 5, 6, 22, 23, 22, 62, 1, 38, 39, 38, 6, 5, 30, 1, 55, 62, 1, 39, 46, 1, 7, 14, 1, 37, 30, 1,
+ 55, 62, 1, 39, 46, 1, 7, 14, 1, 3, 22, 54, 55, 54, 38, 39, 38, 6, 7, 6, 22, 19, 22, 54, 55, 54, 38, 39, 38, 6, 7, 6,
+ 22, 55, 53, 51, 21, 20, 23, 22, 21, 17, 33, 17, 52, 55, 54, 61, 1, 51, 21, 39, 6, 23, 22, 15, 1, 6, 39, 54, 55, 54, 37, 22,
+ 50, 55, 4, 23, 22, 23, 6, 47, 1, 38, 55, 54, 39, 55, 22, 7, 6, 31, 1, 22, 55, 38, 39, 38, 47, 1, 21, 35, 6, 7, 6, 7,
+ 22, 63, 1, 54, 39, 38, 55, 1,212, 26, 8,108,105, 3, 1,105,108, 4, 30,140, 89,122,123, 88, 87,124,123,137, 98, 69, 69, 98,
+ 69,100, 25, 17, 17, 25, 17, 17, 25, 17, 17, 25, 17,145, 10, 4, 7, 8, 24, 10, 10, 3, 7, 7, 24,185, 10, 4, 7, 7, 25, 10,
+ 10, 4, 8, 7, 24,254,236, 4, 12, 11, 12, 22, 4, 3, 10, 13, 11, 22, 1, 56, 4, 11, 11, 12, 22, 7, 11, 11, 12, 22,254,193,
+ 4, 22, 12, 12, 10, 3, 4, 22, 12, 11, 12, 1, 64, 3, 22, 12, 11, 11, 4, 3, 22, 12, 11, 11,241, 10, 24, 7, 8, 4, 10, 10,
+ 24, 8, 7, 4,205, 10, 24, 7, 8, 4, 10, 10, 25, 7, 7, 4, 46, 72,120,116,252,172,116,120, 72,184, 37, 63, 37, 53,200, 69,
+ 36, 7,132,133, 1, 54, 13, 26, 12, 1, 54,133,132, 7, 36, 68,201, 53, 37, 63, 37, 14, 45, 53, 33, 33,174, 49, 40, 5,127,167,
+255, 26, 29,255,167,126, 6, 40, 49,175, 32, 32, 53, 44, 3, 26, 52,116, 52, 40, 52,196,254,178, 1, 78,196, 52, 40, 52,116, 52,
+ 59,188,132,133,187,187,133,132,188,141,104,150,104,104,150,224, 26, 37, 26, 26, 37,254, 35, 26, 37, 26, 26, 37, 1,216, 11, 36,
+ 16, 14, 7, 11, 12, 37, 15, 14, 6,254, 95, 12, 36, 16, 15, 6, 12, 11, 36, 15, 16, 5,248, 18, 33, 6, 5, 16, 19, 17, 34, 5,
+ 6, 18,173, 17, 33, 6, 6, 17, 36, 33, 6, 6, 16, 47, 18, 17, 6, 6, 33, 17, 18, 18, 6, 6, 33,138, 18, 17, 5, 6, 33, 18,
+ 17, 18, 6, 5, 34,254,191, 12, 6, 15, 16, 36, 11, 11, 5, 16, 15, 36, 1,139, 11, 7, 14, 16, 36, 11, 12, 6, 15, 15, 37,234,
+ 58,127, 45, 44, 71,217,254,140, 1,116,217, 71, 44, 45,127, 58,186, 13, 88, 76, 15,134, 8,172,162, 82,113, 14, 1, 1, 14,113,
+ 82,162,172, 8,134, 15, 76, 88, 13, 23, 33, 91, 36, 31,110, 30,147,128, 91,105, 20, 1, 1, 20,105, 91,128,147, 30,110, 31, 36,
+ 91, 33, 0, 0, 0, 2, 0,111, 0, 4, 4, 98, 4, 8, 0, 7, 0, 11, 0, 0, 19, 33, 23, 17, 7, 33, 39, 17, 23, 17, 33, 17,
+116, 3,233, 4, 4,252, 23, 4, 75, 3, 90, 4, 7, 5,252, 7, 4, 4, 3,249, 71,252,149, 3,107, 0, 0, 0, 0, 3, 0, 99,
+255,253, 4,110, 4, 24, 0, 7, 0, 11, 0, 34, 0, 0, 19, 33, 23, 17, 7, 33, 39, 17, 23, 17, 33, 17, 7, 21, 6, 7, 2, 7,
+ 6, 35, 6, 35, 38, 43, 1, 53, 55, 50, 23, 51, 54, 55, 54, 55, 54,104, 4, 1, 5, 5,251,255, 5, 78, 3,110, 95, 53, 29,230,
+ 44, 4, 11, 83, 9, 71,144, 16,114,106, 51, 5, 35, 45, 69,109, 68, 4, 24, 4,251,239, 5, 5, 4, 17, 74,252,130, 3,126,111,
+ 4, 46, 40,254,201,227, 42, 33,182, 4, 52, 92,116, 82,126,131, 85, 0, 0, 0, 0, 3, 0,133, 0, 5, 4, 76, 3,218, 0, 7,
+ 0, 11, 0, 26, 0, 0, 19, 33, 23, 17, 7, 33, 39, 17, 23, 17, 33, 17, 5, 9, 1, 23, 9, 1, 21, 7, 1, 35, 1, 35, 39, 9,
+ 1,138, 3,189, 4, 4,252, 67, 4, 73, 3, 51,253, 90, 1, 13, 1, 12, 62,254,244, 1, 12, 60,254,242, 2,254,245, 3, 60, 1,
+ 12,254,244, 3,217, 4,252, 53, 5, 5, 3,203, 68,252,189, 3, 67, 88,254,245, 1, 11, 60,254,243,254,242, 1, 60, 1, 11,254,
+247, 59, 1, 14, 1, 13, 0, 0, 0, 1, 0,201, 0, 89, 4, 8, 5, 68, 0, 20, 0, 0, 1, 51, 1, 54, 1, 50, 55, 51, 23, 9,
+ 1, 21, 7, 1, 35, 1, 35, 39, 1, 0, 53, 1, 38, 5, 1, 60, 12, 1, 43, 4, 7, 4, 90,254,192, 1, 64, 92,254,193, 2,254,
+191, 3, 92, 1, 68,254,188, 5, 67,253,236, 9, 1,251, 16, 90,253,228,253,232, 3, 89, 2, 23,253,235, 92, 2, 24, 2, 21, 7,
+ 0, 8, 0, 28,255,252, 4,181, 5, 53, 0, 8, 0, 17, 0, 26, 0, 35, 0, 44, 0, 53, 0, 62, 0,126, 0, 0, 1, 51, 6, 43,
+ 1, 38, 61, 1, 52, 37, 51, 6, 43, 1, 38, 61, 1, 52, 37, 51, 6, 43, 1, 38, 61, 1, 52, 23, 51, 6, 43, 1, 38, 61, 1, 52,
+ 37, 51, 6, 43, 1, 38, 61, 1, 52, 23, 51, 6, 43, 1, 38, 61, 1, 52, 23, 51, 6, 43, 1, 38, 61, 1, 52, 37, 51, 23, 21, 51,
+ 32, 19, 22, 29, 1, 35, 38, 39, 38, 43, 1, 34, 7, 21, 20, 7, 39, 38, 35, 17, 20, 15, 1, 34, 47, 1, 53, 55, 51, 23, 21, 22,
+ 59, 1, 50, 63, 1, 17, 34, 7, 6, 35, 39, 53, 55, 35, 38, 39, 35, 34, 15, 1, 35, 53, 54, 55, 54, 51, 53, 1, 31, 2, 21, 64,
+ 4, 41, 1,163, 1, 20, 65, 4, 40, 1,123, 2, 21, 64, 5, 40,173, 2, 21, 64, 4, 41, 1,123, 3, 21, 65, 4, 41,206, 1, 19,
+ 65, 5, 40, 64, 2, 21, 65, 4, 40,254, 94, 41, 4, 1, 1, 52,196, 30, 1, 16, 13, 25, 39, 31,105, 79, 5, 23,106, 95, 74, 21,
+ 64, 26, 1, 4, 30, 4, 7, 44, 7, 38, 14, 4,147, 60, 12, 10, 5, 5, 3, 47,137, 47, 70, 23, 14, 2, 40,134,168,218, 4, 48,
+145, 7, 25, 1, 39,249,144, 5, 25, 2, 38,159,145, 6, 25, 2, 38,130,144, 5, 25, 2, 39,220,144, 5, 25, 2, 39, 74,144, 4,
+ 26, 2, 38,164,145, 6, 25, 1, 40,108, 4, 78,254,210, 53, 9, 5, 9, 29, 15, 62, 33, 9, 1, 41, 38,254, 86, 63, 15, 1, 60,
+ 17, 16, 4, 4, 7, 63, 36, 25, 1,165, 38, 36, 4, 8, 32, 39, 17, 38, 11, 1, 90,135,139, 78, 0, 9, 0, 78, 0, 6, 4,131,
+ 5,130, 0, 9, 0, 15, 0, 24, 0, 47, 0, 62, 0, 69, 0,113, 0,119, 0,134, 0, 0, 19, 6, 23, 33, 54, 55, 52, 35, 33, 6,
+ 19, 22, 23, 33, 54, 63, 1, 6, 7, 54, 55, 54, 39, 52, 35, 39, 6, 7, 51, 50, 21, 20, 7, 6, 7, 6, 7, 51, 50, 55, 54, 55,
+ 54, 55, 54, 53, 52, 35, 1, 51, 20, 6, 7, 20, 22, 23, 35, 38, 39, 38, 39, 38, 54, 3, 22, 37, 54, 55, 33, 22, 5, 54, 55, 50,
+ 23, 21, 20, 15, 1, 23, 20, 7, 33, 38, 61, 1, 55, 53, 36, 47, 1, 53, 54, 51, 22, 23, 38, 17, 52, 51, 33, 22, 21, 51, 50, 21,
+ 20, 7, 6, 7, 6, 43, 1, 39, 1, 22, 23, 33, 54, 55, 3, 6, 7, 6, 7, 35, 62, 1, 53, 52, 38, 53, 51, 30, 1,176, 1, 12,
+ 3, 42, 8, 2, 21,252,236, 19, 44, 4, 11, 2,199, 10, 6, 51, 6, 41, 61, 34, 22, 2, 23, 40, 1, 1, 38, 41, 48, 31, 57, 22,
+ 36, 5, 41, 27, 13, 76, 38, 21, 16, 84,254, 6, 6, 69, 1, 96, 3, 6, 13, 77, 23, 7, 2, 80,206,248, 1, 5, 24, 65,253, 91,
+ 26, 2, 77,178, 72, 13, 4,252, 89, 1, 11,254,142, 12, 3,254,223, 36, 2, 3, 13, 59,151,141, 38, 3, 24, 23, 38,101, 61, 24,
+ 79, 37, 47, 5, 12,253, 78, 4, 7, 2,255, 8, 3,253, 5, 13, 44, 8, 4, 2, 56, 40, 4, 7, 46, 2,143, 55, 76, 49, 82, 21,
+ 4,254,224, 24, 17, 21, 20,187,102,126, 1, 72, 56, 83, 16, 81, 27, 30, 44,122, 72, 37, 1, 57, 68, 54, 13, 29, 41,106, 71, 80,
+ 64, 2,246, 52,128, 82,106,100,166,137, 95, 42, 75,102,115,251, 68, 22, 20, 15,142, 73, 82, 23, 9, 9, 10, 15, 57, 33, 10, 14,
+ 7, 6, 15, 6, 2, 2, 79, 17, 12, 4, 10, 8, 19,238, 1, 28, 45, 2, 22, 93,145,144, 38, 21, 67, 4, 1, 43, 25, 17, 18, 24,
+ 1,213, 47, 26, 60, 85,103, 64, 65, 53, 79, 33, 43, 71, 0, 0, 0, 2, 0, 56, 0, 7, 4,153, 5,223, 0, 7, 0, 12, 0, 0,
+ 9, 1, 19, 7, 33, 39, 19, 9, 1, 3, 33, 3, 1, 2,110, 1,235, 63, 2,251,167, 4, 66, 1,241,254, 90, 57, 3,183, 54,254,
+ 92, 5,223,254,119,251,180, 3, 6, 4, 76, 1,134,254, 53,252, 95, 3,161, 1, 75, 0, 0, 0, 0, 1, 0, 47, 0, 2, 4,162,
+ 5,210, 0, 9, 0, 0, 9, 1, 19, 23, 7, 33, 39, 19, 0, 55, 2,108, 1,241, 66, 2, 2,251,149, 4, 68, 1,230, 16, 5,210,
+254,119,251,191, 3, 3, 6, 4, 68, 1,128, 6, 0, 1, 0, 38, 0, 7, 4,171, 4,196, 0, 66, 0, 0, 1, 39, 38, 53, 52, 55,
+ 54, 51, 50, 22, 54, 51, 50, 23, 22, 21, 20, 15, 1, 55, 54, 23, 22, 23, 22, 21, 20, 7, 14, 1, 22, 7, 6, 7, 6, 35, 34, 39,
+ 38, 47, 1, 18, 7, 35, 54, 3, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 54, 38, 39, 38, 53, 52, 55, 54, 55, 54, 23, 2, 82,165,
+ 56, 67, 28, 29, 67, 66, 67, 44, 71, 42, 10, 69,152,248,104, 93, 27, 26, 54, 6, 13,101, 59, 22, 8, 25, 44, 48, 25, 27, 81, 58,
+157, 31,110, 72,136, 30,157, 59, 80, 27, 25, 48, 43, 26, 9, 21, 59,101, 13, 6, 54, 26, 27, 92,105, 2,126,250, 84, 90, 87, 52,
+ 18, 88, 88, 92, 34, 31,103, 94,225, 82, 41, 32, 10, 22, 53, 54, 17, 17, 46, 39, 95, 69, 30, 22, 33, 10, 27, 83,226,254,190,241,
+241, 1, 66,226, 83, 27, 10, 33, 22, 30, 69, 95, 39, 46, 17, 16, 55, 53, 22, 10, 32, 41, 0, 0, 0, 2, 0, 47, 1,160, 4,162,
+ 4,116, 0, 57, 0, 62, 0, 0, 1, 22, 23, 20, 7, 6, 7, 22, 23, 51, 23, 7, 35, 6, 7, 34, 39, 52, 51, 22, 55, 50, 55, 38,
+ 39, 35, 34, 7, 22, 21, 6, 7, 36, 3, 52, 55, 22, 23, 21, 7, 20, 23, 50, 55, 18, 55, 22, 7, 20, 7, 54, 55, 50, 53, 54, 55,
+ 54, 38, 3, 6, 23, 53, 38, 3,251, 85, 15, 56,134, 15,195, 41, 21, 15, 36, 2, 13,116, 74, 19, 15, 12, 46, 59, 9,199, 5, 3,
+100, 51,102, 7,255,254, 44, 34, 51, 39, 6, 10, 86, 68, 10, 40,227,153, 4, 32, 71, 76, 47, 55, 59, 59, 44,103, 11,185, 24, 4,
+116, 4, 94, 70, 21, 29, 36, 22,221, 60, 10,142, 7, 76, 68, 38, 1, 63, 62,196, 88, 52, 82,200, 13, 2, 1, 33, 47, 8, 3, 35,
+ 19, 32, 73, 10, 63, 1,132, 16, 4,137, 32, 80, 63, 16, 31, 68, 33, 41, 77,254,230,118, 62, 2,147, 0, 0, 0, 0, 1, 0, 47,
+ 1, 14, 4,162, 4,122, 0, 50, 0, 0, 1, 33, 34, 38, 53, 52, 54, 55, 54, 55, 51, 55, 35, 38, 39, 38, 53, 52, 62, 1, 59, 1,
+ 55, 35, 34, 38, 53, 52, 54, 55, 54, 55, 33, 55, 33, 34, 38, 53, 52, 62, 1, 51, 33, 54, 55, 54, 51, 33, 50, 22, 21, 4,104,253,
+244, 33, 46, 21, 19, 14, 14, 41, 3,103, 36, 19, 24, 22, 39, 19,137, 1,196, 51, 48, 23, 19, 15, 17, 1, 1, 2,253,185, 33, 47,
+ 22, 38, 20, 2,106, 6, 13, 23, 33, 1, 29, 32, 47, 1, 14, 58, 40, 26, 47, 12, 9, 3, 11, 2, 24, 29, 41, 25, 47, 26, 10, 57,
+ 41, 24, 47, 13, 11, 2, 9, 57, 41, 26, 48, 24, 21, 16, 29, 58, 42, 0, 0, 0, 0, 1, 0, 47, 1, 14, 4,162, 4,122, 0, 50,
+ 0, 0, 19, 3, 52, 54, 51, 33, 50, 23, 22, 23, 33, 50, 30, 1, 21, 20, 6, 35, 33, 23, 33, 22, 23, 30, 1, 21, 20, 6, 43, 1,
+ 23, 51, 50, 30, 1, 21, 20, 7, 6, 7, 35, 23, 51, 22, 23, 30, 1, 21, 20, 6, 35,105, 57, 47, 32, 1, 29, 33, 23, 13, 6, 2,
+106, 20, 38, 22, 47, 33,253,185, 2, 1, 1, 17, 15, 19, 23, 48, 51,196, 1,137, 19, 39, 22, 24, 19, 36,103, 3, 41, 14, 14, 19,
+ 21, 46, 33, 1, 14, 3, 8, 42, 58, 29, 16, 21, 24, 48, 26, 41, 57, 9, 2, 11, 13, 47, 24, 41, 57, 10, 26, 47, 25, 41, 29, 24,
+ 2, 11, 3, 9, 12, 47, 26, 40, 58, 0, 0, 0, 0, 2, 0, 14, 1, 26, 4,195, 4, 33, 0, 33, 0, 67, 0, 0, 1, 19, 52, 38,
+ 35, 33, 34, 7, 33, 38, 21, 20, 51, 33, 7, 33, 34, 21, 20, 51, 33, 7, 35, 34, 21, 20, 59, 1, 7, 35, 34, 21, 20, 51, 7, 38,
+ 39, 54, 55, 51, 55, 35, 38, 39, 54, 55, 51, 55, 33, 34, 39, 54, 55, 33, 55, 33, 34, 39, 54, 51, 33, 54, 55, 33, 50, 22, 21, 3,
+ 4,101, 59, 39, 27,254,225, 43, 19,253,112, 67, 67, 2,111, 10,254,224, 67, 67, 0,255, 7,180, 67, 67,142, 16, 50, 67, 67, 23,
+ 75, 1, 1, 75, 60, 4,139, 76, 1, 1, 76,185, 2,255, 0, 75, 1, 1, 75, 1, 37, 3,253,147, 74, 1, 1, 74, 2,148, 26, 54,
+ 1, 48, 34, 50, 61, 1, 50, 2,129, 30, 41, 46, 2, 61, 60, 61, 61, 60, 64, 61, 58, 62, 61, 59, 24, 1, 84, 84, 1, 11, 1, 85,
+ 83, 1, 15, 85, 84, 1, 12, 85, 84, 56, 1, 51, 36,253, 81, 0, 0, 2, 0,140, 0, 0, 4, 69, 5,202, 0, 33, 0, 68, 0, 0,
+ 55, 5, 50, 54, 53, 17, 52, 39, 17, 54, 35, 34, 21, 17, 39, 17, 52, 35, 34, 21, 17, 39, 53, 52, 35, 34, 29, 1, 39, 53, 52, 35,
+ 34, 21, 39, 54, 55, 22, 23, 21, 23, 53, 54, 55, 22, 23, 21, 23, 17, 52, 55, 22, 23, 17, 23, 17, 54, 55, 22, 21, 17, 22, 23, 17,
+ 20, 6, 35, 37, 19,170, 3, 21, 36, 52, 58, 2, 74, 73, 76, 76, 72, 79, 75, 72, 76, 75, 73, 29, 1,104,103, 1, 14, 1,104,103,
+ 1, 18,105,103, 1, 15, 1,104,103, 68, 2, 62, 45,252,178, 1,115, 74, 49, 32, 1, 98, 54, 22, 3, 39, 83, 83,253, 2, 13, 1,
+ 99, 82, 82,254,196, 9,223, 83, 83,174, 18, 63, 83, 83, 28, 92, 1, 1, 92, 75, 4,172, 92, 1, 1, 92,228, 3, 1, 59, 92, 1,
+ 1, 92,254,150, 4, 2,253, 93, 1, 1, 93,252,212, 33, 65,254,138, 42, 62, 75, 2,155, 0, 0, 0, 2, 0, 14, 1, 26, 4,195,
+ 4, 33, 0, 33, 0, 68, 0, 0, 19, 33, 50, 53, 52, 43, 1, 39, 51, 50, 53, 52, 43, 1, 39, 33, 50, 53, 52, 35, 33, 39, 33, 50,
+ 53, 52, 7, 33, 38, 35, 33, 34, 6, 21, 1, 48, 33, 3, 52, 54, 51, 33, 22, 23, 33, 50, 23, 6, 35, 33, 23, 33, 22, 23, 6, 35,
+ 33, 23, 51, 22, 23, 6, 7, 35, 23, 51, 22, 23, 6,108, 2, 31, 67, 67, 50, 16,142, 67, 67,180, 7, 0,255, 67, 67,254,224, 10,
+ 2,111, 67, 67,253,112, 19, 43,254,225, 27, 39, 2,113,253,170, 61, 50, 34, 1, 48, 54, 26, 2,148, 74, 1, 1, 74,253,147, 3,
+ 1, 37, 75, 1, 1, 75,255, 0, 2,185, 76, 1, 1, 76,139, 4, 60, 75, 1, 1, 1, 50, 59, 61, 62, 58, 61, 64, 60, 61, 61, 60,
+ 61, 2, 46, 41, 30,253,103, 2,175, 36, 51, 1, 56, 84, 85, 12, 1, 84, 85, 15, 1, 83, 85, 1, 11, 1, 84, 84, 0, 2, 0,140,
+255,249, 4, 69, 5,194, 0, 33, 0, 67, 0, 0, 19, 20, 51, 50, 61, 1, 55, 21, 20, 51, 50, 61, 1, 55, 17, 20, 51, 50, 53, 17,
+ 55, 17, 20, 51, 50, 39, 17, 54, 53, 17, 52, 38, 35, 5, 39, 37, 50, 22, 21, 17, 6, 7, 17, 20, 7, 38, 39, 17, 7, 17, 6, 7,
+ 38, 53, 17, 7, 21, 6, 7, 38, 39, 53, 7, 21, 6, 7, 38, 39,170, 73, 75, 76, 72, 75, 79, 72, 76, 76, 73, 74, 2, 58, 52, 36,
+252,235, 30, 3, 78, 45, 62, 2, 68,103,104, 1, 15, 1,103,105, 18, 1,103,104, 1, 14, 1,103,104, 1, 2,179, 83, 83, 61, 20,
+174, 83, 83,221, 9,254,198, 83, 83, 1, 98, 13,253, 1, 83, 83, 3, 39, 23, 54, 1, 97, 33, 48, 74, 41, 75, 62, 42,254,138, 66,
+ 32,252,212, 92, 1, 1, 92, 2,252, 4,254,152, 93, 1, 1, 93, 1, 58, 2,228, 93, 1, 1, 93,171, 4, 74, 93, 1, 1, 93, 0,
+ 0, 29, 0, 12,255,254, 4,197, 4,191, 0, 79, 0,128, 0,136, 0,144, 0,159, 0,174, 0,181, 0,188, 0,205, 0,211, 0,218,
+ 0,222, 0,226, 0,230, 0,234, 0,238, 0,242, 0,246, 0,250, 0,254, 1, 2, 1, 17, 1, 29, 1, 33, 1, 37, 1, 41, 1, 45,
+ 1, 49, 1, 53, 0, 0, 1, 50, 23, 22, 29, 1, 20, 7, 23, 21, 20, 7, 51, 54, 53, 54, 59, 1, 50, 21, 22, 29, 1, 6, 35, 39,
+ 6, 7, 21, 23, 55, 22, 21, 20, 7, 20, 43, 1, 34, 47, 1, 6, 35, 34, 39, 6, 21, 6, 43, 1, 34, 53, 38, 53, 52, 55, 23, 55,
+ 53, 39, 7, 34, 39, 53, 52, 55, 54, 59, 1, 50, 31, 1, 53, 39, 55, 38, 53, 54, 55, 54, 1, 20, 23, 51, 53, 38, 53, 54, 59, 1,
+ 23, 7, 23, 21, 7, 21, 20, 23, 22, 29, 1, 23, 51, 55, 52, 55, 54, 53, 39, 55, 53, 39, 55, 22, 29, 1, 7, 23, 54, 61, 1, 52,
+ 39, 38, 43, 1, 32, 7, 6, 5, 22, 7, 6, 39, 34, 39, 52, 33, 22, 23, 6, 35, 34, 39, 38, 19, 51, 54, 51, 23, 54, 53, 38, 53,
+ 38, 35, 6, 7, 6, 21, 37, 6, 35, 6, 21, 23, 55, 22, 23, 53, 52, 39, 38, 53, 38, 5, 23, 21, 7, 38, 53, 52, 55, 22, 21, 20,
+ 7, 39, 53, 3, 22, 51, 54, 55, 38, 55, 6, 7, 6, 43, 1, 38, 39, 38, 39, 22, 55, 22, 23, 51, 53, 38, 5, 21, 50, 63, 1, 34,
+ 7, 5, 21, 23, 53, 55, 21, 55, 53, 7, 21, 23, 53, 51, 21, 55, 39, 7, 21, 55, 39, 7, 21, 51, 53, 51, 21, 51, 53, 7, 21, 23,
+ 53, 23, 21, 51, 53, 7, 21, 51, 53, 5, 39, 7, 21, 22, 21, 22, 51, 50, 55, 54, 55, 38, 53, 6, 37, 7, 22, 21, 20, 23, 50, 63,
+ 1, 38, 35, 7, 37, 7, 23, 53, 7, 21, 23, 53, 39, 21, 23, 53, 23, 21, 55, 53, 55, 21, 55, 53, 55, 21, 55, 53, 2,117,233,111,
+ 44, 77, 5, 19, 4,122, 34, 27, 6, 48, 54, 20, 48, 68,189, 47,178, 53, 73, 58, 50, 4, 39, 53,144, 58,131,134, 54,160, 38, 34,
+ 11, 42, 58, 68, 58,173,231, 83, 52, 6, 54, 3, 30, 25, 36, 46,101, 19, 9, 81, 26,201, 78,254,240, 53, 5, 23, 8, 10, 10, 14,
+ 10, 25, 15,117, 52, 77, 68, 97,149, 25, 20, 26, 10, 23, 19, 23, 4, 54,170, 98, 85, 29,254,254, 80, 15, 1, 25, 43, 10, 44, 72,
+ 59, 27, 1, 96,155, 4, 28, 73, 50, 51, 2,181, 4,214, 18, 78, 24, 53, 6, 15, 21, 40,189,253, 13, 13, 10, 40, 35, 73, 48,183,
+ 77,154, 19, 1,211, 10, 39, 29, 94, 53, 31, 37,204, 35,163,165, 33, 5, 25, 27, 21, 58, 88, 43,145, 9, 6, 34, 22, 7, 15, 19,
+ 5, 7, 1, 42, 11, 3, 19, 10, 18,254,236, 14,222, 20,227, 19,155, 21, 2, 54, 18, 3, 87, 24, 15, 19,125, 19, 87, 19, 58, 24,
+254,117, 87, 5, 52, 5, 10, 15, 53,118, 26, 14,142, 2, 84, 13,173, 38, 16, 9, 47, 4, 24, 72,254, 51, 3, 23, 19, 19, 86, 19,
+156, 20, 12, 19, 15, 20, 4,190,156, 88, 68, 57, 92, 83, 76, 5, 43, 38, 51, 49, 46,100, 43, 28, 19, 37, 6, 88, 33, 15, 81, 10,
+ 14, 36, 31, 50, 96, 96, 75, 80, 80, 80, 20, 71, 91, 54, 37, 35, 10, 10, 81, 15,121, 6, 45, 11, 22, 54, 91, 91, 51, 5, 71, 75,
+ 91,175,187, 79, 23,254,194, 96, 95, 65, 91, 45, 41, 15, 36,116, 55,136, 10, 76, 25, 45, 36, 20, 10, 21, 76, 54, 29, 61,152,127,
+ 15, 34, 17, 9, 28, 40,141, 20, 67, 74, 35,171, 82, 34,196, 48,169, 13, 58,130, 4,126, 71, 8, 66,123,126, 69,254,111,106, 4,
+ 6, 8, 60, 30, 52, 8, 83, 91, 16,191, 90, 30, 21, 8, 4, 15, 97, 11, 76, 21, 67, 53, 29, 11, 5,129, 41, 10, 46, 85, 37, 43,
+ 90, 38, 7, 41,131,254,205,162, 12,155, 55,101, 31,141, 60, 18, 73, 76, 65, 97, 77, 30,111, 75, 51, 51, 75, 64, 71, 54, 11, 36,
+ 4, 36, 4, 40, 8, 38, 12, 40, 4, 39, 39, 6, 38, 5, 49, 2, 47, 4, 45, 45, 45, 45, 50, 41, 4, 40, 11, 40, 45, 5, 40, 40,
+100, 4, 4, 16, 46, 39, 45, 84, 63, 24, 30, 24, 79, 75, 56, 84, 36, 12, 33, 84, 51, 15, 4,166, 40, 5, 45, 60, 40, 5, 40, 26,
+ 39, 6, 41, 20, 41, 5, 41, 3, 40, 4, 41, 8, 41, 6, 40, 0, 0, 1, 0, 9,255,251, 4,200, 5,211, 0, 38, 0, 0, 1, 50,
+ 23, 22, 21, 20, 7, 1, 7, 20, 23, 37, 50, 23, 21, 20, 35, 5, 34, 39, 38, 61, 1, 52, 55, 0, 55, 54, 53, 52, 39, 35, 5, 34,
+ 39, 53, 52, 55, 51, 2,244,116, 92, 42,101,253,232, 9, 79, 2,201, 64, 7, 85,253, 67,131, 88, 22,113, 1,249, 16, 9, 80, 9,
+253, 83, 46, 9, 80, 11, 5,211,141, 77, 79,138, 98,253,160, 62, 89, 26,209, 97, 3, 89,198,174, 53, 56, 24,138,108, 2, 55, 27,
+ 27, 22, 80, 32,204, 80, 30, 64, 12, 0, 0, 0, 0, 6, 0, 8, 0, 2, 4,201, 4,195, 0, 17, 0, 36, 0, 48, 0, 60, 0, 70,
+ 0, 88, 0, 0, 1, 32, 19, 22, 21, 16, 5, 6, 43, 1, 32, 3, 38, 61, 1, 16, 37, 54, 5, 38, 35, 34, 7, 6, 21, 16, 23, 22,
+ 51, 32, 19, 54, 61, 1, 16, 37, 38, 3, 35, 34, 39, 19, 22, 59, 1, 50, 55, 19, 6, 3, 6, 29, 1, 33, 53, 52, 55, 54, 55, 19,
+ 6, 37, 22, 23, 33, 38, 39, 38, 39, 19, 22, 5, 50, 23, 22, 21, 20, 7, 6, 43, 1, 34, 39, 38, 61, 1, 52, 55, 54, 2, 94, 1,
+ 55,215, 92,254,255,158,172, 26,254,203,213, 80, 1, 18,151, 1,184,135,135,244,191,103,227,145,181, 1, 21,190, 72,254,236, 4,
+244, 22,137,114,169, 39, 46, 6, 41, 37,173,115,234, 77,254,167,233, 14, 16,170, 5, 2, 13, 77, 2,254,166, 1, 25, 27, 35,170,
+102,254,155, 67, 45, 20, 55, 33, 37, 6, 65, 46, 17, 59, 32, 4,194,254,211,142,174,254,239,206,119, 1, 58,142,144, 23, 1, 19,
+210,107,139, 75,240,143,158,254,255,183,113, 1, 26,122,134, 13, 1, 24,182, 3,252, 43, 72, 1, 42, 25, 24,254,214, 71, 2,144,
+ 59, 77, 4, 13,234,178, 10, 10,254,214, 3,116,117,143, 47, 38, 40, 21, 1, 40, 65,247, 65, 30, 38, 58, 43, 26, 67, 30, 31, 4,
+ 59, 46, 23, 0, 0, 6, 0, 34, 0, 7, 4,175, 4, 47, 0, 9, 0, 19, 0, 29, 0, 56, 0, 80, 0,105, 0, 0, 1, 62, 1, 39,
+ 54, 55, 22, 6, 7, 38, 3, 38, 6, 7, 38, 39, 54, 22, 23, 6, 5, 20, 22, 23, 6, 7, 46, 1, 55, 22, 1, 6, 35, 34, 39, 38,
+ 39, 7, 6, 7, 6, 35, 34, 39, 22, 54, 55, 54, 39, 55, 22, 55, 23, 6, 23, 30, 1, 3, 22, 23, 22, 7, 51, 22, 23, 22, 29, 1,
+ 46, 1, 35, 6, 7, 39, 54, 39, 53, 54, 55, 54, 38, 1, 38, 53, 52, 55, 54, 23, 39, 38, 39, 54, 55, 14, 1, 23, 22, 31, 1, 6,
+ 23, 7, 38, 7, 38, 6, 2,220, 48, 55, 5, 26, 26, 9, 94, 60, 12, 5, 49,120, 44, 23, 15, 66,177, 53, 18,254,177, 64, 50, 2,
+ 11, 74, 86, 8, 30, 2,171, 77,118, 33, 35,117, 65, 1, 43, 85, 66, 68, 88, 91,102,185, 42, 59, 45, 49, 48, 41, 46, 46, 67, 44,
+157,183,115, 66, 35, 72, 2, 75, 85,139, 9,149, 80,130, 93, 49, 5, 50,129, 60, 48, 27,252,209, 3, 86, 81,137, 1, 31, 2, 12,
+196,125, 37, 39, 72,136, 1, 54, 8, 45, 84,125, 94,128, 1, 36, 29,107, 55, 10, 4, 82,151, 26, 27, 1,135, 27, 5, 31, 16, 20,
+ 50, 7, 39, 23,198, 55,102, 23, 27, 24, 33,157, 65, 4,254, 92, 59, 5, 25,121, 1, 63, 49, 33, 53, 48, 66, 69,116,132, 30, 34,
+ 33, 28,122,107, 81, 59, 4, 15, 48,154,113,117, 7, 48, 92,183, 7,111,130, 7,105, 29, 58, 19, 53, 22,111, 80,165,253, 90, 17,
+ 17,106,115, 88, 4, 1, 70, 97,192, 80, 74,194, 71,108, 27, 59, 24, 52, 26,101, 4, 1,106, 0, 0, 23, 0, 78,255,255, 4,131,
+ 5, 94, 0, 3, 0, 19, 0, 25, 0, 29, 0, 49, 0, 70, 0, 91, 0,113, 0,139, 0,149, 0,154, 0,159, 0,164, 0,169, 0,174,
+ 0,179, 0,184, 0,189, 0,194, 0,199, 0,204, 0,209, 0,252, 0, 0, 1, 6, 55, 38, 23, 38, 7, 6, 39, 55, 39, 54, 23, 22,
+ 23, 6, 7, 38, 39, 36, 1, 6, 7, 35, 38, 55, 3, 22, 39, 38, 19, 21, 6, 35, 34, 39, 53, 38, 55, 54, 55, 22, 23, 6, 7, 6,
+ 4, 7, 35, 38, 39, 21, 39, 53, 36, 39, 54, 55, 22, 23, 6, 7, 6, 4, 23, 22, 7, 39, 54, 39, 54, 3, 21, 39, 53, 36, 39, 54,
+ 55, 22, 23, 6, 23, 6, 4, 23, 6, 7, 39, 54, 53, 54, 7, 38, 39, 54, 55, 22, 23, 6, 21, 20, 4, 23, 6, 7, 38, 39, 54, 39,
+ 38, 39, 21, 39, 19, 21, 39, 53, 36, 55, 54, 55, 54, 23, 7, 23, 6, 39, 38, 7, 6, 4, 23, 6, 7, 38, 39, 54, 39, 54, 1, 20,
+ 30, 1, 51, 38, 55, 34, 14, 1, 5, 22, 23, 55, 38, 39, 22, 23, 55, 38, 39, 22, 23, 55, 38, 39, 22, 7, 55, 38, 39, 22, 7, 23,
+ 54, 39, 6, 7, 23, 54, 37, 23, 54, 55, 6, 7, 23, 54, 55, 6, 7, 23, 54, 55, 6, 31, 1, 38, 55, 6, 23, 55, 38, 55, 6, 23,
+ 55, 38, 39, 6, 23, 21, 39, 53, 38, 7, 34, 39, 54, 37, 22, 23, 22, 51, 53, 38, 39, 46, 1, 53, 52, 62, 1, 50, 30, 1, 21, 20,
+ 6, 7, 6, 7, 51, 20, 35, 21, 54, 55, 4, 23, 6, 35, 38, 3, 5, 16, 56, 9,112, 10, 43, 87, 68, 84, 99, 39, 72,188, 12, 2,
+130, 64,145, 1, 1,254,162, 88, 28, 14, 1, 79, 96, 61, 19, 32,220, 10, 24, 31, 3,161, 1, 4, 59, 42, 41, 56, 1, 2, 1, 32,
+ 2, 14, 24,107, 68,254,255, 4, 2,118, 47, 80,157, 3, 5, 1,146, 5, 4,107, 45, 74, 12, 1, 75, 68,254,176, 2, 4,104, 71,
+ 97,202, 13, 9, 2, 68, 1, 4,138, 96,150, 2,235,247, 5, 1,103, 66, 68,150, 1,234, 3, 4,160, 30, 54,166, 5, 2,172, 68,
+ 68, 68,254,159, 1, 12,188, 61, 51,100, 84, 68, 87, 44, 9, 3, 2,155, 6, 6,160, 58,103,242, 1, 11,254,149, 17, 30, 17, 28,
+ 28, 16, 31, 17, 1,151,106, 41, 25, 89,138,105, 35, 39, 87,116, 73, 16, 45, 57,119, 49, 1, 56, 36, 94, 2, 23, 56, 2, 59, 46,
+ 47, 55, 45,253, 73, 25, 41,106, 83, 41, 39, 35,105, 92, 18, 45, 16, 73, 77, 15, 57, 2, 49, 68, 59, 56, 23, 2, 37, 97, 55, 47,
+ 46, 7,216, 68, 61,117,246, 82, 78, 1, 66, 22, 82, 1, 1, 2, 2, 19, 21, 21, 38, 39, 37, 22, 21, 18, 3, 3, 1, 1, 81, 22,
+ 1, 66, 78, 82,246,113, 3,207, 32, 22, 18,100, 50, 10, 31, 14, 21, 23, 68, 13, 3,115, 57, 30, 16, 8, 18,253, 16, 31, 56, 67,
+ 32, 3, 91, 24, 34, 8,252,124, 52, 24, 52, 38, 27, 51, 44, 22, 12, 5, 20, 17, 39, 50, 94, 51,159, 82, 12, 84, 40, 66, 63, 29,
+ 18, 8, 23, 35, 39, 57, 67, 45, 13, 11, 18, 33, 21, 1,121,129, 12,126, 35, 90, 49, 20, 19, 6, 15, 29, 48, 62, 78, 63, 30, 25,
+ 36, 23, 37,151, 30, 89, 52, 28, 11, 7, 30, 41, 37, 70, 78, 63, 19, 13, 10, 29, 40, 28, 27,123, 11, 1,219,117, 8,115, 19,105,
+115, 4, 3, 60, 22, 21, 14, 32, 10, 51, 40, 38, 94, 84, 18, 15, 14, 25, 48, 29, 2, 53, 17, 29, 16, 60, 62, 15, 30, 55, 59, 44,
+ 35, 52, 20, 91, 58, 31, 79, 40,118, 65, 17,102, 71,135, 69, 7,116, 89,143, 66, 10,122, 94,126, 52, 23,106, 10, 35, 44, 59, 16,
+ 98, 31, 58, 91, 39,126, 17, 65,118, 64,126, 7, 69,135, 81,130, 10, 66,143, 97,107, 23, 52,126, 95,170,190, 6,178, 72, 35,152,
+ 84, 6, 50, 27, 1, 22, 1, 1, 10, 36, 20, 19, 36, 20, 20, 36, 19, 20, 36, 10, 1, 1, 1, 20, 27, 50, 6, 84,152, 34, 0, 0,
+ 0, 2, 0, 96,255,255, 4,113, 5,216, 0, 7, 0, 36, 0, 0, 1, 38, 39, 6, 7, 22, 23, 54, 7, 38, 39, 54, 55, 22, 23, 22,
+ 7, 51, 50, 55, 17, 38, 7, 35, 17, 20, 23, 33, 54, 53, 17, 35, 38, 7, 17, 22, 51, 2,214, 2,106,106, 1, 7,100,110,175,104,
+ 10, 2,177,177, 3, 4,119,143,158,152,150,160,143, 87,254,209, 86,147,159,150,152,158, 4,221,177, 2, 2,177,142,113, 90,114,
+101,184,243, 2, 2,243,194, 91, 99,254,247, 55, 1,254, 12,181,174,174,181, 1,244, 1, 55, 1, 9, 99, 0, 0, 0, 3, 0,121,
+255,254, 4, 88, 5,218, 0, 3, 0, 32, 0, 44, 0, 0, 1, 21, 51, 53, 39, 53, 51, 21, 51, 21, 35, 21, 51, 5, 21, 33, 17, 23,
+ 21, 39, 3, 35, 3, 39, 53, 23, 17, 33, 53, 33, 53, 35, 53, 19, 51, 17, 33, 53, 33, 53, 35, 21, 33, 21, 33, 1,252,202,182,170,
+126,126, 10, 1,148,254, 98,144,136, 2,176, 2,134,134,254,108, 1,150,118,164, 70, 1, 12,254,244, 70,254,244, 1, 12, 5, 65,
+ 60, 60, 51,102,102,162, 88, 1,175,253,232,139,156,133,254,238, 1,188,134,155,130, 1,113,176, 88,162,252,207, 1,187, 71, 99,
+ 99, 71, 0, 0, 0, 2, 0, 97, 0, 7, 4,112, 6, 2, 0, 7, 0, 32, 0, 0, 1, 17, 51, 50, 54, 52, 38, 35, 1, 17, 33, 50,
+ 22, 21, 20, 6, 43, 1, 21, 55, 51, 9, 1, 35, 39, 21, 35, 53, 7, 35, 9, 1, 51, 2,109,171, 96,104,104, 96,254,206, 1, 50,
+169,174,174,169,171,179,180,254,177, 1, 96,179,196,136,209,179, 1,104,254,182,181, 5,124,254, 59,118,217,118,252,188, 3,202,
+183,177,178,182,252,194,254,147,254,125,214,214,228,228, 1,138, 1,102, 0, 0, 0, 1, 0,204,255,251, 4, 5, 5,205, 0, 31,
+ 0, 0, 1, 51, 23, 21, 51, 23, 21, 7, 35, 21, 33, 23, 21, 7, 33, 17, 7, 35, 39, 17, 33, 39, 53, 55, 33, 53, 35, 39, 53, 55,
+ 51, 53, 2, 12,182, 6,175, 6, 6,175, 1, 54, 7, 7,254,202, 6,182, 6,254,204, 6, 6, 1, 52,174, 5, 5,174, 5,205, 5,
+154, 6,148, 6,112, 6,152, 5,252,134, 5, 5, 3,122, 5,152, 6,112, 6,148, 6,154, 0, 0, 0, 1, 0, 55, 0, 1, 4,154,
+ 4,100, 0, 43, 0, 0, 1, 33, 23, 21, 7, 35, 17, 33, 53, 55, 51, 23, 17, 7, 35, 39, 53, 33, 17, 51, 23, 21, 7, 33, 39, 53,
+ 55, 51, 17, 33, 21, 7, 35, 39, 17, 55, 51, 23, 21, 33, 17, 35, 39, 53, 1,196, 1, 73, 4, 4,120, 1,172, 5, 79, 5, 5, 79,
+ 5,254, 84,120, 4, 4,254,183, 4, 4,128,254, 83, 5, 86, 4, 4, 86, 5, 1,173,128, 4, 4,100, 5, 89, 4,254, 92,121, 5,
+ 5,254,183, 5, 5,118,254, 86, 4, 80, 4, 4, 80, 4, 1,170,118, 5, 5, 1, 73, 5, 5,121, 1,164, 4, 89, 0, 2, 0, 30,
+ 0, 3, 4,179, 5, 39, 0, 27, 0, 44, 0, 0, 1, 51, 50, 23, 35, 39, 32, 3, 6, 21, 16, 5, 22, 51, 55, 21, 6, 7, 6, 43,
+ 1, 32, 3, 38, 53, 16, 37, 54, 1, 51, 50, 23, 51, 21, 7, 22, 21, 39, 7, 35, 53, 55, 39, 53, 51, 2,109, 16,175,166, 4,189,
+254,240,165, 74, 1, 14,108,123,203,126,109, 64, 43, 22,254,221,188,104, 1, 52,136, 1,250, 2, 5, 49,165,133, 52,140,134, 2,
+ 52,136,168, 5, 39,129, 48,254,239,138,163,254,190,188, 62, 44, 5, 95, 22, 10, 1, 23,169,205, 1,118,210, 78,254,107,177, 3,
+110,165, 15,109,109, 3,177,110, 3, 0, 0, 0, 0, 4, 0, 8, 0, 0, 4,201, 4,193, 0, 22, 0, 79, 0, 98, 0,115, 0, 0,
+ 1, 22, 51, 50, 55, 22, 51, 50, 55, 53, 51, 23, 21, 20, 15, 1, 34, 39, 6, 35, 34, 39, 52, 23, 51, 22, 23, 50, 21, 3, 51, 54,
+ 17, 52, 39, 53, 22, 29, 1, 20, 7, 6, 7, 21, 22, 59, 1, 21, 6, 43, 1, 34, 7, 39, 35, 34, 39, 53, 51, 50, 55, 53, 39, 38,
+ 39, 38, 53, 52, 63, 1, 21, 6, 21, 16, 23, 53, 3, 53, 55, 50, 39, 21, 6, 7, 6, 21, 20, 23, 21, 35, 38, 39, 38, 53, 52, 55,
+ 54, 51, 52, 37, 22, 23, 22, 29, 1, 20, 7, 6, 7, 52, 55, 54, 61, 1, 16, 39, 1,220, 22, 52, 38, 26, 31, 35, 54, 17, 4, 2,
+ 56, 25, 36, 28, 27, 36, 66, 13,144, 2, 41, 27, 7, 8, 1,238, 90,181,182, 62, 38, 65,134, 21, 95, 59,105, 17, 56, 56,117, 45,
+111, 49, 98, 70, 71,102, 29, 81,162, 27, 95,239, 15, 3, 28,208, 77, 53,109,119, 2,128, 76, 31,218, 98, 29, 2, 4,107,106,143,
+135, 73, 25, 44, 75,242, 4,192, 61, 39, 39, 56, 5, 32, 4, 48, 22, 3, 35, 35, 82, 27,109, 52, 9, 4,252,218,185, 1, 43,158,
+168, 2,175,225, 29,220,180, 53, 18, 4, 33, 4, 27, 80, 80, 23, 4, 34, 3, 52, 92, 61,143,144,209,187, 25, 4,156,184,254,232,
+199, 2, 2,142, 18,138, 34, 5, 56, 81,165,195,189,174, 1, 60,189, 87, 84,218,166, 57, 3, 2, 25, 91,148,176, 38,172,148, 66,
+ 5, 6, 67,142,155, 2, 1, 40,198, 0, 0, 0, 0, 3, 0,103,255,249, 4,106, 5, 91, 0, 84, 0, 95, 0,103, 0, 0, 1, 50,
+ 23, 15, 1, 22, 23, 22, 21, 20, 7, 21, 35, 21, 50, 55, 54, 53, 52, 39, 55, 51, 22, 21, 16, 3, 38, 35, 34, 21, 20, 23, 22, 7,
+ 6, 35, 6, 39, 38, 39, 21, 6, 23, 20, 35, 34, 53, 54, 61, 1, 6, 21, 6, 39, 34, 39, 52, 54, 39, 52, 35, 34, 7, 2, 17, 52,
+ 55, 51, 23, 6, 21, 20, 23, 22, 23, 53, 35, 53, 38, 53, 52, 55, 47, 1, 54, 3, 20, 23, 51, 54, 53, 52, 39, 6, 7, 6, 37, 6,
+ 21, 20, 23, 54, 53, 52, 2,105, 61, 75, 17, 14,117, 47, 51,188,110,111,131,124,115, 20, 4,215,137,110, 73, 51,110, 30, 2, 12,
+ 39, 59, 6, 54, 87, 4, 78, 96,102, 73,141, 7, 58, 37, 13,141, 3, 43, 75,107,141,209, 5, 19,115,197, 58,111,109,188,219, 22,
+ 15, 80,189,124, 4, 64, 26, 82, 47, 37, 1, 83, 32, 60,133, 5, 91, 69, 14,114, 42, 74, 75, 78,183, 90, 69,110,118,145,182,162,
+105, 17,152,237,254,247,254,226,160, 41, 26,135, 37, 42, 54, 8, 38,219, 45,138, 67,108, 54, 55,106, 71,135, 86,176, 34, 2, 54,
+ 59,155, 30, 37,159, 1, 10, 1, 50,214,153, 17,112,160,231,150, 43, 16,110, 69, 85,187,175, 95,114, 17, 66,254, 40,134, 69, 97,
+128, 76,116, 23, 68, 58,149,106, 91,126, 94, 57,154,140, 0, 0, 0, 1, 0, 15, 0, 5, 4,194, 5, 34, 0, 50, 0, 0, 1, 50,
+ 23, 22, 21, 20, 7, 23, 7, 35, 39, 6, 35, 34, 39, 21, 3, 35, 38, 39, 54, 1, 54, 51, 22, 51, 50, 55, 39, 7, 35, 38, 39, 55,
+ 22, 21, 7, 22, 23, 53, 54, 61, 1, 52, 39, 38, 43, 1, 34, 7, 54, 2,171,190,169,120,100,156,113, 2,149,133,175,137,115,209,
+ 2,165, 3, 21, 1, 22, 19, 6, 91,127,154,121,174, 87, 5,151, 7,188,227,101,185, 23, 54,202,111, 96, 29, 79, 97,137, 5, 33,
+165,136,188,176,121,129,115,149, 96, 77, 3,254,107,123, 6, 22, 1,101, 26, 75, 91,174,101,102, 10,226, 12, 5,139,153, 12, 1,
+ 79,109, 31,222, 89, 60, 48,125, 0, 5, 0, 27, 0, 5, 4,182, 4,160, 0, 11, 0, 18, 0, 22, 0, 26, 0, 33, 0, 0, 19, 52,
+ 0, 51, 50, 0, 21, 20, 0, 35, 34, 0, 55, 20, 23, 1, 3, 6, 0, 19, 22, 23, 27, 1, 54, 55, 9, 1, 54, 53, 52, 0, 39, 17,
+ 27, 1, 89,244,245, 1, 89,254,167,245,244,254,167,120, 95, 1, 80, 2,154,254,237,136,139,151, 2, 75,161,134,254,217, 1, 92,
+ 89,254,236,166, 2, 81,245, 1, 90,254,166,245,244,254,169, 1, 87,244,180, 95, 1,139, 1, 98, 3,254,237,253,241,140, 4, 1,
+229,254, 25, 6,129, 1, 89,254,228, 88,193,196, 1, 19, 3,254,161, 0, 0, 0, 0, 4, 0, 14, 0, 5, 4,195, 4,186, 0, 18,
+ 0, 30, 0, 40, 0, 52, 0, 0, 1, 21, 30, 1, 51, 50, 54, 53, 52, 0, 35, 34, 0, 7, 62, 1, 51, 50, 22, 5, 20, 6, 35, 34,
+ 38, 53, 52, 54, 51, 50, 22, 5, 52, 38, 34, 6, 21, 20, 22, 50, 54, 37, 20, 0, 35, 34, 0, 53, 52, 0, 51, 50, 0, 2,105, 8,
+158,116,118,161,254,179,228,234,254,199, 16, 19,143,120,115,159, 1,113, 49, 31, 34, 48, 48, 34, 32, 48,253,205, 47, 66, 47, 47,
+ 66, 47, 3, 35,254,160,250,250,254,159, 1, 97,250,250, 1, 96, 2,105, 21,114,155,166,124,224, 1, 72,254,199,250,138,144,155,
+127, 33, 47, 47, 33, 34, 48, 48, 34, 34, 48, 48, 34, 33, 47, 48, 32,250,254,161, 1, 95,250,250, 1, 98,254,158, 0, 10, 0, 5,
+ 0,146, 4,204, 5, 57, 0, 14, 0, 62, 0, 68, 0, 74, 0, 80, 0, 86, 0, 92, 0, 98, 0,104, 0,110, 0, 0, 1, 20, 23, 22,
+ 50, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 5, 38, 55, 51, 54, 55, 39, 54, 55, 23, 54, 55, 53, 54, 23, 21, 22, 23, 55, 22, 23,
+ 7, 22, 23, 51, 22, 7, 35, 6, 7, 23, 6, 7, 39, 6, 7, 21, 6, 39, 53, 38, 39, 7, 38, 39, 55, 38, 39, 37, 54, 55, 39, 6,
+ 7, 5, 22, 23, 55, 38, 39, 1, 54, 55, 39, 6, 7, 37, 22, 23, 55, 38, 39, 1, 38, 39, 7, 22, 23, 37, 6, 7, 23, 54, 55, 5,
+ 6, 7, 23, 54, 55, 37, 38, 39, 7, 22, 23, 1,234, 38, 36,104, 37, 36, 37, 37, 51, 52, 36, 38,254, 49, 43, 43, 88, 21, 83, 65,
+ 11, 78, 64, 96,152, 61, 61,142,107, 62, 80, 13, 67, 82, 22, 88, 43, 43, 88, 15, 89, 67, 13, 80, 62,107,142, 61, 61,141,108, 63,
+ 76, 13, 63, 81, 21, 1,139, 26, 28, 9,111, 76, 1, 43, 32, 23,143, 78,110,254,249, 7, 17,159, 59, 18, 2, 80, 19, 5,214, 15,
+ 63,253,252, 16, 8,212, 17, 59, 2, 28, 6, 18,160, 64, 13,254,203, 26, 29, 10,110, 77,254,211, 22, 31,143, 78,110, 2,228, 51,
+ 37, 37, 37, 37, 51, 52, 37, 38, 38, 37,115, 61, 61,143, 96, 63, 74, 12, 62, 80, 23, 87, 44, 44, 87, 17, 87, 63, 11, 75, 63, 95,
+144, 61, 61,137,102, 63, 72, 8, 63, 80, 23, 87, 44, 44, 87, 18, 85, 63, 8, 72, 63, 94,145,234, 15, 8,210, 17, 60,133, 8, 15,
+155, 61, 16,254,161, 29, 21,133, 75,101, 43, 24, 26, 8, 99, 76,254,171, 24, 32, 13,109, 67,190, 29, 27,134, 80, 96,107, 14, 8,
+213, 24, 60,129, 7, 15,151, 60, 24, 0, 0, 0, 0, 5, 0, 33, 0,164, 4,176, 5, 52, 0, 15, 0, 30, 0, 40, 0, 48, 0, 56,
+ 0, 0, 19, 52, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 55, 20, 23, 22, 51, 50, 55, 54, 53, 52, 0, 35, 34, 7,
+ 6, 1, 38, 7, 35, 18, 37, 4, 19, 35, 38, 55, 38, 39, 54, 55, 22, 23, 6, 5, 38, 39, 54, 55, 22, 23, 6, 33,171,171,241,243,
+171,170,170,171,243,241,171,171,118,137,136,192,193,137,137,254,238,193,192,136,137, 1,211,164, 61, 54, 15, 1, 12, 1, 4, 15,
+ 53, 78, 39, 86, 3, 4, 91, 83, 4, 4,254, 46, 85, 4, 5, 91, 82, 5, 5, 2,234,243,171,172,172,171,243,241,171,170,170,171,
+241,191,137,138,138,137,191,195, 1, 16,136,136,254,222, 10,204, 1, 16, 14, 18,254,245,202,175, 4, 88, 91, 5, 7, 86, 91, 4,
+ 4, 88, 91, 5, 7, 86, 91, 0, 0, 5, 0, 33, 0,164, 4,176, 5, 52, 0, 15, 0, 30, 0, 40, 0, 48, 0, 56, 0, 0, 19, 52,
+ 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 55, 20, 23, 22, 51, 50, 55, 54, 53, 52, 0, 35, 34, 7, 6, 1, 22, 55,
+ 51, 2, 5, 36, 3, 51, 22, 1, 38, 39, 54, 55, 22, 23, 6, 5, 38, 39, 54, 55, 22, 23, 6, 33,171,171,241,243,171,170,170,171,
+243,241,171,171,118,137,136,192,193,137,137,254,238,193,192,136,137, 1,209,166, 61, 54, 15,254,243,254,253, 15, 51, 81, 1, 78,
+ 86, 3, 4, 91, 83, 4, 4,254, 46, 85, 4, 5, 91, 82, 5, 5, 2,234,243,171,172,172,171,243,241,171,170,170,171,241,191,137,
+138,138,137,191,195, 1, 16,136,136,254,119, 9,204,254,240, 14, 19, 1, 10,202, 1, 39, 4, 88, 91, 5, 7, 86, 91, 4, 4, 88,
+ 91, 5, 7, 86, 91, 0, 0, 0, 0, 4, 0, 33, 0,164, 4,176, 5, 52, 0, 15, 0, 25, 0, 33, 0, 41, 0, 0, 19, 52, 55, 54,
+ 51, 50, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 37, 35, 18, 5, 36, 19, 39, 6, 39, 6, 1, 38, 39, 6, 7, 22, 23, 54, 37, 38,
+ 39, 6, 7, 22, 23, 54, 33,171,171,241,243,171,170,170,171,243,241,171,171, 1, 52, 62, 18, 1, 59, 1, 68, 18, 64, 75,199,178,
+ 2, 6, 6, 99,110, 6, 5,103,107,254, 63, 5,100,110, 5, 4,104,107, 2,234,243,171,172,172,171,243,241,171,170,170,171,237,
+254,189, 22, 17, 1, 73, 2,248, 11, 10, 1,214,107, 8, 6,112,105, 7, 7,110,105, 8, 6,112,105, 7, 7, 0, 0, 10, 0, 33,
+ 0,164, 4,176, 5, 52, 0, 7, 0, 12, 0, 19, 0, 34, 0, 42, 0, 50, 0, 58, 0, 65, 0, 73, 0, 88, 0, 0, 1, 51, 23, 17,
+ 7, 35, 39, 17, 5, 23, 21, 7, 39, 37, 23, 7, 35, 38, 39, 53, 5, 50, 31, 1, 20, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 5,
+ 33, 23, 21, 7, 33, 39, 53, 37, 33, 23, 21, 7, 33, 39, 53, 7, 51, 22, 23, 21, 7, 39, 53, 37, 51, 23, 21, 7, 39, 53, 37, 51,
+ 23, 17, 7, 35, 39, 17, 3, 6, 21, 20, 23, 22, 51, 50, 55, 54, 53, 39, 38, 35, 34, 2, 77, 61, 5, 5, 61, 4, 1,188, 44,194,
+ 47,253,165,197, 48, 3,156, 35, 1,182,168, 72, 10,153, 56, 38,141, 79, 29,148, 54,253,227, 1, 9, 5, 5,254,247, 4, 3,124,
+ 1, 14, 5, 5,254,242, 5, 55, 2,105, 89, 48,194,254, 54, 2, 46,193, 47, 1,164, 61, 5, 5, 61, 4, 29,101, 19, 54, 97, 25,
+ 38,105, 7, 49,114, 31, 5, 52, 5,254,238, 5, 5, 1, 18,122, 48, 2,199, 49,185,198, 50,156, 43, 3,142,176, 75,147, 78, 19,
+131, 50, 72,140, 81, 21,214, 5, 62, 5, 5, 62, 5, 5, 62, 5, 5, 62,219,102, 94, 2, 50,198, 3, 34, 47, 3,198, 49, 3, 93,
+ 5,254,238, 5, 5, 1, 18, 1,211, 56, 96, 49, 34, 89, 13, 52,102, 50,121, 0, 0, 2, 0,156, 0, 5, 4, 53, 5,198, 0, 23,
+ 0, 43, 0, 0, 1, 32, 1, 22, 21, 16, 5, 6, 43, 1, 34, 39, 53, 36, 55, 54, 17, 16, 37, 38, 39, 53, 52, 55, 23, 21, 4, 17,
+ 16, 5, 7, 21, 51, 50, 55, 54, 55, 54, 61, 1, 16, 1, 38, 35, 1, 59, 1,133, 1, 12,104,254,122,176,173, 48, 47, 79, 1, 16,
+123,153,254,183,134, 91,146, 40, 1,194,254,180, 42, 6, 84,156,229, 81, 28,254,171,161,155, 5,197,254,141,170,195,254,126,253,
+ 96, 14, 6, 78,174,199, 1, 8, 1,138,220, 79, 16, 3, 10, 14, 61, 3,194,254, 28,254,116,228, 24, 4, 82,150,240, 91, 92, 9,
+ 1, 56, 1, 1,100, 0, 0, 0, 0, 2, 0,149, 0, 7, 4, 60, 5,223, 0, 23, 0, 43, 0, 0, 37, 32, 1, 38, 53, 16, 1, 54,
+ 59, 1, 50, 23, 21, 4, 7, 6, 17, 16, 5, 22, 23, 21, 20, 7, 39, 53, 36, 17, 16, 37, 55, 53, 35, 34, 7, 6, 7, 6, 29, 1,
+ 16, 1, 22, 51, 3,154,254,118,254,238,104, 1,140,178,178, 48, 46, 80,254,236,126,154, 1, 78,136, 94,150, 40,254, 56, 1, 80,
+ 44, 6, 86,160,232, 82, 28, 1, 90,164,158, 7, 1,121,173,198, 1,136, 1, 1, 99, 15, 7, 79,177,203,254,245,254,112,225, 79,
+ 16, 4, 10, 14, 62, 3,197, 1,237, 1,145,232, 24, 3, 83,150,245, 92, 94, 9,254,194,254,252,102, 0, 0, 0, 0, 2, 0,189,
+255, 96, 4, 20, 5,171, 0, 49, 0, 66, 0, 0, 1, 22, 23, 22, 21, 20, 7, 6, 7, 21, 55, 21, 7, 23, 35, 53, 35, 53, 51, 39,
+ 38, 39, 38, 53, 52, 55, 54, 55, 38, 39, 38, 61, 1, 51, 21, 20, 23, 22, 23, 51, 54, 55, 54, 61, 1, 51, 21, 20, 7, 6, 7, 35,
+ 6, 7, 6, 21, 20, 23, 22, 51, 50, 55, 54, 53, 52, 39, 38, 3, 79, 38, 34,125,124,102,135,204,208, 1,122,191,191, 2,139,103,
+125,125, 34, 38, 38, 34,125,134, 85, 81,110, 36,109, 81, 85,134,125, 34,250, 36,110, 81, 85, 86, 86,123,120, 86, 86, 85, 81, 4,
+ 60, 25, 34,123,179,177,117, 94, 14,197, 2, 94, 1,191,192, 92,197, 13, 95,117,177,179,123, 34, 25, 23, 35,124,177, 8, 10,122,
+ 85, 79, 6, 6, 79, 85,122, 10, 8,177,124, 35, 89, 6, 79, 84,123,122, 81, 80, 80, 81,122,123, 84, 79, 0, 0, 0, 2, 0,145,
+255,155, 4, 64, 5, 62, 0, 14, 0, 41, 0, 0, 1, 52, 39, 38, 35, 34, 7, 6, 21, 20, 22, 51, 50, 55, 54, 5, 38, 53, 52, 55,
+ 54, 51, 50, 23, 22, 21, 20, 7, 6, 7, 21, 55, 21, 7, 23, 35, 39, 35, 53, 51, 39, 38, 3,173, 96, 95,132,135, 95, 95,190,135,
+132, 95, 96,253,111,139,138,138,197,194,138,138,137,113,147,223,228, 2,135, 2,209,209, 1,153, 3,107,135, 93, 94, 94, 93,135,
+134,178, 89, 89,193,129,195,197,136,137,137,136,197,195,129,104, 15,217, 1,103, 2,209,211,102,217, 14, 0, 0, 0, 2, 0,145,
+255,155, 4, 64, 5, 62, 0, 12, 0, 39, 0, 0, 1, 34, 7, 6, 16, 22, 51, 50, 55, 54, 16, 39, 38, 39, 55, 35, 53, 51, 55, 51,
+ 7, 23, 21, 39, 21, 22, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 2,106,135, 95, 95,190,135,132, 95, 96, 96, 95,
+200, 1,209,209, 2,135, 2,228,223,147,113,137,138,138,194,197,138,138,139,113, 2,165, 89, 88,254,242,186, 93, 93, 1, 14, 88,
+ 89,134,218,102,211,210, 1,104, 2,218, 15,104,129,195,196,136,137,137,136,196,195,129,106, 0, 0, 2, 0, 21, 0,154, 4,188,
+ 5, 48, 0, 13, 0, 39, 0, 0, 1, 38, 39, 38, 7, 6, 20, 23, 22, 51, 22, 55, 54, 38, 19, 6, 43, 1, 34, 39, 38, 53, 39, 52,
+ 55, 54, 23, 22, 23, 1, 37, 55, 33, 17, 7, 17, 1, 22, 23, 22, 2,162, 90,123,122, 91, 90, 90, 91,126,127, 92, 89, 8, 16,131,
+182, 1,185,130,129, 2,131,130,178,178, 87, 1, 26,254,222,109, 1,130,112,254,231, 78, 7, 6, 3, 35, 90, 4, 4, 88, 91,254,
+ 91, 89, 1, 90, 91,246,254, 80,128,128,129,183, 3,182,131,129, 7, 6, 81, 1, 16, 2,109,254,128,112, 1, 35,254,239, 84,178,
+177, 0, 0, 0, 0, 1, 0, 71, 0, 42, 4,138, 5,174, 0, 31, 0, 0, 1, 53, 50, 55, 54, 52, 39, 38, 35, 34, 7, 6, 29, 1,
+ 35, 52, 54, 51, 50, 23, 22, 21, 20, 7, 51, 17, 51, 17, 35, 17, 33, 53, 1,232,115, 80, 81, 80, 80,116,114, 81, 80,142,244,173,
+177,121,122,103,214,143,143,252, 76, 2, 31, 1, 81, 81,228, 81, 80, 80, 81,114, 2,174,246,123,123,174,159,116, 3,143,250,124,
+ 1,103,142, 0, 0, 1, 0,174, 0, 42, 4, 35, 5,174, 0, 34, 0, 0, 1, 35, 53, 51, 53, 51, 21, 51, 21, 35, 17, 54, 51, 50,
+ 23, 22, 21, 20, 6, 29, 1, 35, 52, 55, 54, 53, 52, 38, 35, 34, 7, 6, 21, 17, 35, 1, 18,100,100,143,168,168,105,144,167,113,
+113,132,143, 67, 66,146,105,103, 73, 73,143, 4,117,143,170,170,143,254,147,103,122,121,177, 85,216,114, 2,125,112,112, 68,116,
+160, 80, 81,115,254, 95, 0, 0, 0, 2, 0, 67, 0,133, 4,142, 5, 83, 0, 13, 0, 55, 0, 0, 1, 34, 7, 6, 21, 20, 22, 50,
+ 55, 54, 53, 52, 39, 38, 55, 22, 23, 22, 21, 20, 7, 6, 35, 34, 38, 53, 52, 55, 54, 55, 17, 35, 17, 35, 53, 51, 17, 35, 53, 51,
+ 17, 51, 17, 51, 17, 51, 17, 51, 21, 35, 17, 51, 21, 35, 17, 35, 2,104, 46, 32, 32, 64, 92, 32, 33, 32, 32, 16, 50, 40, 62, 62,
+ 63, 90, 87,126, 62, 39, 51,237,251,127,127,251,237,124,237,250,125,125,250,237, 1,203, 33, 32, 45, 47, 64, 32, 32, 47, 45, 32,
+ 33, 94, 15, 39, 63, 88, 89, 63, 63,126, 89, 88, 63, 40, 14, 1, 70,254,152,125, 2, 82,125,254,152, 1,104,254,152, 1,104,125,
+253,174,125, 1,104, 0, 0, 0, 0, 1, 0, 76, 0,133, 4,133, 5, 83, 0, 60, 0, 0, 1, 21, 35, 53, 35, 53, 51, 53, 38, 39,
+ 38, 39, 53, 7, 39, 55, 51, 23, 21, 39, 21, 51, 21, 35, 22, 23, 22, 23, 17, 7, 39, 55, 51, 23, 21, 39, 17, 54, 55, 54, 61, 1,
+ 51, 53, 7, 39, 55, 51, 23, 21, 39, 21, 49, 21, 20, 7, 6, 7, 21, 51, 21, 2,167,124,144,144,135,101,123, 1,118, 1,119,125,
+119,119, 2, 2, 1, 85, 65, 84,119, 1,120,124,120,120, 83, 64, 87, 1,119, 1,120,125,118,118,124,100,136,144, 1, 31,154,154,
+124,114, 18,101,123,177, 69,117,115,126,126,115,117, 69, 2,124, 86, 65, 16, 2, 75,116,114,127,127,114,116,253,182, 16, 64, 88,
+123, 1, 73,117,115,126,126,115,117, 73, 4,173,123,100, 19,114,124, 0, 0, 0, 0, 2, 0,215, 0, 42, 3,250, 5,174, 0, 18,
+ 0, 29, 0, 0, 19, 33, 32, 23, 22, 21, 20, 7, 6, 35, 33, 17, 33, 23, 21, 7, 33, 39, 17, 23, 17, 33, 50, 55, 54, 55, 52, 39,
+ 38, 35,223, 1,129, 1, 29, 95, 30,237, 56, 50,254,189, 2, 86, 8, 8,253, 41, 8,137, 1, 51,123, 68, 15, 8,153, 35, 77, 5,
+174,197, 72, 90,251, 87, 16,253,207, 7,123, 8, 8, 5,115,123,254, 63,122, 25, 75,155, 56, 16, 0, 1, 0, 24, 0, 1, 4,185,
+ 5, 33, 0, 32, 0, 0, 37, 16, 2, 35, 34, 2, 23, 35, 38, 53, 52, 54, 51, 32, 19, 22, 23, 54, 55, 18, 33, 50, 22, 21, 20, 7,
+ 35, 54, 2, 35, 34, 2, 17, 2, 59,205,122, 92, 41, 77, 97, 66,117,104, 1, 11, 95, 5, 4, 3, 5, 95, 1, 11,105,116, 66, 97,
+ 77, 40, 93,121,205, 2, 2, 13, 2,164,254,228,142,116,140,116,164,253, 91, 43, 35, 35, 43, 2,165,164,116,140,116,142, 1, 28,
+253, 92,253,243, 0, 2, 0, 53,255,248, 4,156, 4,196, 0, 8, 0, 46, 0, 0, 1, 34, 6, 20, 22, 50, 54, 52, 38, 39, 54, 55,
+ 62, 2, 51, 21, 34, 2, 7, 6, 7, 22, 23, 22, 21, 20, 6, 35, 34, 38, 53, 52, 55, 54, 55, 38, 39, 38, 2, 35, 53, 50, 30, 1,
+ 23, 22, 2,104,113,158,158,225,159,157,114,100, 58, 66, 74,124,141, 94,128,100, 16, 18, 35, 33,112,226,161,160,226,113, 32, 36,
+ 18, 16, 99,131, 93,141,143, 55, 65, 59, 2,186,170,241,169,169,241,170,123, 4, 50, 54,148,142, 88,255, 0, 89, 15, 13, 24, 34,
+122,172,172,242,242,172,172,122, 34, 25, 12, 15, 89, 1, 0, 88,142,148, 54, 50, 0, 2, 0, 27, 0, 12, 4,182, 4,206, 0, 19,
+ 0, 25, 0, 0, 1, 38, 39, 53, 4, 32, 37, 21, 6, 7, 17, 22, 23, 21, 36, 32, 5, 53, 54, 63, 1, 54, 23, 17, 6, 39, 1, 46,
+136,139, 1, 26, 2,106, 1, 23,143,135,135,143,254,233,253,150,254,230,139,136,124,189,189,189,189, 4, 25, 18, 42,120, 73, 73,
+122, 39, 19,252,168, 19, 38,124, 74, 74,120, 44, 17, 9, 21, 21, 3, 70, 21, 21, 0, 4, 0, 52, 0, 50, 4,157, 5, 15, 0, 8,
+ 0, 27, 0, 36, 0, 56, 0, 0, 0, 34, 6, 20, 22, 51, 50, 54, 52, 1, 44, 1, 39, 53, 22, 4, 39, 38, 53, 52, 54, 51, 50, 22,
+ 16, 7, 14, 1, 1, 50, 54, 52, 38, 34, 6, 20, 22, 19, 12, 1, 23, 21, 38, 36, 23, 22, 21, 20, 6, 35, 34, 38, 53, 52, 55, 62,
+ 1, 3,200,156,109,109, 78, 77,109,254,169,255, 0,254,213,125,207, 1,201, 9,108,168,121,122,169, 85, 60,202,254, 22, 77,110,
+110,154,110,109,234, 1, 1, 1, 43,125,207,254, 55, 9,108,168,121,122,169, 85, 60,201, 2,131,124,178,124,124,178,254, 44, 1,
+ 38, 40,117, 79, 31, 35,101,156,138,194,194,254,237, 97, 72, 71, 2,138,124,178,124,124,178,124, 2, 81, 2, 39, 40,115, 79, 30,
+ 35,101,156,139,194,194,139,137, 96, 73, 72, 0, 0, 2, 0, 61,255,253, 4,148, 5, 33, 0, 10, 0, 60, 0, 0, 0, 62, 1, 39,
+ 46, 1, 7, 14, 1, 23, 22, 19, 52, 54, 51, 50, 22, 21, 20, 2, 21, 22, 23, 50, 55, 23, 6, 35, 34, 38, 53, 52, 18, 53, 52, 38,
+ 35, 34, 6, 21, 20, 22, 23, 30, 1, 7, 6, 7, 6, 38, 39, 38, 53, 52, 55, 54, 55, 54, 23, 54, 38, 1, 68,132, 57, 25, 26,130,
+ 66, 66, 56, 26, 26,205,196,158,151,192,255, 3,118, 63, 87, 58,112, 98, 87,126,252,144,116,112,132, 41, 22, 32, 14, 34, 45,102,
+102,201, 41, 20, 24, 45,103,116,112, 21, 81, 1, 64, 51,131, 65, 65, 58, 26, 26,129, 65, 67, 2,106,141,177,194,155,165,254, 71,
+158,109, 3, 78, 63,105,106, 98,175, 1,166,171,118,145,136,114, 53,127, 54, 87,192, 71,101, 40, 40, 87,105, 48, 49, 53, 52,100,
+ 41, 45, 63, 1,195, 0, 0, 0, 0, 2, 0, 47,254,234, 4,162, 4,127, 0, 54, 0, 63, 0, 0, 1, 50, 22, 21, 62, 1, 51, 50,
+ 22, 29, 1, 62, 1, 51, 50, 22, 21, 16, 5, 20, 23, 35, 38, 39, 6, 7, 53, 54, 55, 39, 17, 54, 39, 14, 1, 7, 17, 35, 17, 52,
+ 38, 7, 38, 6, 7, 17, 35, 17, 52, 39, 51, 22, 23, 62, 1, 1, 17, 54, 19, 52, 38, 7, 34, 6, 1,193, 45, 83, 29,139, 53, 44,
+ 57, 34, 92, 48, 43, 70,254,244,103,118, 33, 52,117,124,135, 87, 6, 2, 34, 41, 94, 44,107, 22, 25, 29,127, 13,105,107,100, 83,
+ 26, 16,129, 1,242,182, 17, 33, 21, 21,101, 4,127,152, 98, 91,159,128,168,154, 95, 91,177,209,254,199,245, 72,148, 31,124, 78,
+ 5, 89, 21, 67,166, 2,142,242, 1, 1,166,153,253, 58, 2,194,246, 82, 1, 1,174,164,253, 72, 3, 66,146,146, 61,134, 71,144,
+253, 96,254, 83,191, 1, 3,148,110, 4,158, 0, 0, 2, 0, 85, 0,181, 4,124, 4,234, 0, 3, 0, 35, 0, 0, 19, 33, 21, 33,
+ 1, 33, 53, 51, 38, 53, 52, 54, 51, 50, 22, 21, 20, 7, 33, 21, 33, 53, 35, 54, 55, 54, 53, 52, 38, 34, 6, 21, 20, 23, 22, 23,
+ 85, 4, 39,251,217, 1,140,254,116,252, 48,183,132,132,184, 48, 1, 20,254, 90, 1, 13, 12, 61,121,173,121, 61, 11, 13, 1, 58,
+133, 1, 93,134, 90,115,162,227,227,162,115, 90,134,134, 11, 15, 74,106,107,149,149,107,106, 74, 15, 11, 0, 0, 0, 1, 0, 50,
+255,102, 4,159, 4,198, 0, 52, 0, 0, 37, 20, 22, 23, 51, 53, 51, 23, 7, 39, 53, 35, 34, 39, 38, 39, 3, 18, 39, 14, 1, 7,
+ 17, 35, 17, 16, 38, 7, 38, 6, 7, 17, 35, 17, 52, 39, 51, 22, 23, 62, 1, 51, 50, 22, 21, 62, 1, 51, 50, 22, 29, 1, 17, 3,
+ 89, 69, 59, 60, 2,136,136, 2, 60,135, 45, 30, 5, 14, 2, 33, 38, 89, 42,100, 21, 24, 27,120, 13, 99,102, 95, 79, 24, 15,122,
+ 46, 42, 79, 27,132, 50, 41, 55,226, 90,101, 1, 96,141,142, 3, 96, 98, 60, 96, 2,129, 1, 1, 1, 1,176,163,253, 15, 2,237,
+ 1, 5, 87, 1, 1,184,175,253, 30, 3,117,154,156, 65,143, 76,153,161,104, 96,169,136,178,164,253,251, 0, 0, 0, 1, 0, 56,
+ 0, 6, 4,153, 4,199, 0, 19, 0, 0, 1, 33, 53, 33, 21, 49, 21, 17, 35, 17, 7, 17, 35, 17, 1, 39, 1, 33, 53, 33, 3,213,
+254, 95, 2,100,114,192,114,253,149, 80, 2,107,254, 94, 2, 19, 4, 75,123, 85, 1,253,190, 1,199,209,253,190, 1,198,253, 95,
+ 87, 2,161,123, 0, 2, 0, 21, 0, 3, 4,188, 4,207, 0, 39, 0, 47, 0, 0, 1, 50, 18, 55, 54, 51, 50, 22, 21, 20, 6, 35,
+ 34, 39, 14, 1, 7, 35, 53, 55, 54, 19, 38, 2, 35, 34, 2, 23, 7, 52, 2, 39, 53, 50, 22, 23, 54, 55, 62, 1, 1, 22, 51, 50,
+ 55, 38, 39, 34, 2, 50, 88, 67, 20, 90,159,100,125,117,117,127,100, 36,103,113,138,126,100, 86, 41, 52, 48, 29,132, 5,129,116,
+108,120,132, 33, 38, 37, 34,100, 1, 25, 76,107,132, 7, 5,131,125, 4,206,253, 58, 3,181,155, 85,119,140,109,131,177, 3, 97,
+ 1, 3, 1, 52, 13, 2,136,254,115,170, 2,208, 1,151, 5, 79,182,226,165, 72, 75,123,252,215,119,162,129, 15, 0, 2, 0, 89,
+ 1, 64, 4,120, 3,174, 0, 32, 0, 65, 0, 0, 19, 54, 51, 50, 23, 22, 55, 54, 51, 50, 23, 22, 55, 54, 51, 50, 23, 7, 38, 7,
+ 6, 34, 39, 38, 7, 6, 35, 34, 39, 38, 6, 35, 39, 17, 54, 51, 50, 23, 22, 55, 54, 50, 23, 22, 55, 54, 51, 50, 23, 7, 38, 7,
+ 6, 35, 34, 39, 38, 7, 6, 35, 34, 39, 38, 6, 35, 39, 89,231, 82, 32, 9, 35,123, 61, 40, 39, 17, 37,123, 31, 29, 88, 78, 67,
+ 69,122, 62, 79, 18, 38,122, 62, 39, 40, 17, 35,243, 4, 38,231, 82, 31, 10, 35,123, 61, 79, 16, 38,123, 30, 29, 89, 78, 67, 69,
+122, 62, 39, 40, 19, 37,123, 61, 40, 39, 17, 35,243, 4, 38, 1,136,192, 28,101,101, 50, 50,101,101, 25,224, 36,201,108, 54, 54,
+107,100, 50, 51,100,201, 69, 1, 80,192, 28,100,100, 51, 51,100,100, 25,224, 36,202,108, 55, 54,107,100, 51, 52,101,202, 69, 0,
+ 0, 1, 0, 94, 0, 5, 4,115, 5, 35, 0, 28, 0, 0, 1, 7, 2, 3, 7, 0, 19, 33, 53, 33, 2, 1, 23, 18, 19, 51, 18, 19,
+ 55, 0, 3, 33, 7, 33, 18, 1, 39, 2, 3, 2,210,211, 28,243,145, 1, 13, 24,254,253, 1, 3, 25,254,244,145,243, 28,212, 27,
+244,144,254,244, 24, 1, 2, 1,254,253, 26, 1, 12,145,244, 27, 2, 76, 3,254,216,254,231, 2, 1, 51, 1, 16,151, 1, 15, 1,
+ 52, 3,254,232,254,216, 1, 40, 1, 24, 3,254,204,254,241,151,254,240,254,205, 2, 1, 25, 1, 40, 0, 0, 0, 0, 5, 0, 67,
+ 0, 5, 4,142, 4,128, 0, 15, 0, 32, 0, 36, 0, 84, 0,100, 0, 0, 1, 54, 55, 38, 39, 38, 34, 14, 1, 21, 20, 22, 23, 22,
+ 23, 33, 51, 33, 54, 55, 62, 1, 53, 52, 46, 1, 35, 34, 7, 6, 7, 22, 23, 1, 21, 33, 53, 1, 17, 38, 39, 46, 1, 53, 52, 62,
+ 1, 51, 50, 23, 53, 52, 54, 55, 54, 55, 53, 35, 53, 51, 53, 51, 21, 51, 21, 35, 21, 22, 23, 30, 1, 29, 1, 54, 51, 50, 30, 1,
+ 21, 20, 6, 7, 6, 7, 17, 1, 20, 30, 1, 51, 50, 62, 1, 53, 52, 46, 1, 35, 34, 14, 1, 2, 51, 1, 1, 27, 39, 56,120,112,
+ 65, 63, 57, 17, 17, 1, 7,108, 1, 6, 18, 17, 57, 62, 64,113, 60, 59, 57, 39, 26, 1, 1,254,168, 2, 68,253,125, 32, 29, 53,
+ 82, 84,151, 80, 61, 58, 28, 24, 10, 13, 83, 83, 80, 83, 83, 12, 10, 24, 28, 59, 60, 80,151, 84, 82, 52, 30, 32,254, 88, 19, 35,
+ 17, 19, 34, 19, 19, 34, 19, 17, 35, 19, 2,234, 3, 2, 33, 21, 32, 62,114, 62, 62,112, 30, 11, 6, 6, 11, 30,112, 62, 62,114,
+ 62, 32, 21, 33, 2, 3,254, 65,232,232,254,219, 1, 37, 10, 17, 41,150, 82, 83,151, 81, 24, 2, 27, 49, 13, 6, 3, 41, 54, 66,
+ 66, 54, 41, 3, 6, 13, 49, 27, 2, 24, 81,151, 83, 82,150, 41, 17, 10,254,219, 3,112, 20, 32, 20, 20, 32, 20, 18, 34, 18, 18,
+ 34, 0, 0, 0, 0, 8, 0, 86, 0, 0, 4,123, 4,122, 0, 72, 0, 78, 0, 82, 0,104, 0,124, 0,144, 0,165, 0,187, 0, 0,
+ 19, 38, 39, 52, 62, 1, 51, 50, 30, 1, 21, 6, 7, 19, 3, 34, 39, 52, 62, 1, 51, 50, 30, 1, 21, 6, 7, 27, 1, 38, 39, 52,
+ 62, 1, 51, 50, 30, 1, 21, 6, 7, 27, 1, 38, 53, 52, 62, 1, 51, 50, 30, 1, 21, 6, 7, 3, 19, 38, 53, 52, 62, 1, 51, 50,
+ 30, 1, 21, 6, 35, 3, 17, 33, 17, 5, 53, 7, 33, 39, 29, 2, 33, 53, 1, 23, 3, 54, 55, 62, 1, 53, 52, 46, 1, 35, 34, 14,
+ 1, 21, 20, 30, 1, 51, 50, 51, 19, 23, 3, 54, 55, 62, 1, 52, 46, 1, 35, 34, 14, 1, 20, 30, 1, 51, 50, 51, 1, 55, 19, 22,
+ 51, 50, 62, 1, 52, 46, 1, 35, 34, 14, 1, 20, 22, 23, 22, 23, 1, 51, 3, 50, 55, 62, 1, 53, 52, 46, 1, 35, 34, 14, 1, 21,
+ 20, 22, 23, 22, 23, 19, 55, 19, 22, 51, 50, 62, 1, 53, 52, 46, 1, 35, 34, 14, 1, 21, 20, 22, 23, 22, 23,169, 73, 9, 22, 41,
+ 22, 22, 41, 22, 3, 44,183, 40, 63, 14, 22, 41, 23, 22, 40, 23, 2, 35,144, 33, 51, 1, 23, 40, 21, 22, 41, 23, 3, 51, 29,142,
+ 36, 23, 41, 21, 23, 41, 22, 8, 66, 71,197, 33, 23, 40, 22, 23, 40, 22, 10, 75,123,253,109, 2,103,138,254,234,140, 2, 44,253,
+180, 59,177, 5, 5, 14, 16, 16, 27, 15, 14, 26, 17, 16, 27, 14, 6, 6,238,104,143, 4, 4, 13, 15, 15, 27, 14, 15, 27, 15, 15,
+ 27, 15, 5, 6, 1, 73, 88, 73, 4, 4, 14, 29, 14, 16, 27, 14, 14, 27, 16, 16, 13, 6, 6,254,238, 76, 36, 14, 12, 13, 16, 16,
+ 26, 15, 14, 28, 15, 15, 14, 11, 12,227, 80,127, 8, 9, 14, 27, 15, 16, 26, 14, 16, 26, 15, 15, 13, 3, 3, 3, 12, 2, 72, 22,
+ 39, 21, 21, 39, 22, 49, 16,254,124, 2, 26, 71, 21, 39, 21, 21, 39, 21, 35, 26,253,196, 2,115, 23, 37, 22, 39, 20, 20, 39, 22,
+ 41, 19,253,139, 2, 55, 36, 32, 21, 39, 21, 21, 39, 21, 65, 12,253,236, 1,138, 27, 32, 22, 39, 21, 21, 39, 22, 72,254,158,254,
+ 84, 1,172,221,172, 57, 46,161, 37,126,126, 1, 4, 32, 1,147, 2, 3, 8, 27, 14, 16, 26, 16, 16, 26, 16, 14, 27, 15,254,114,
+ 24, 2, 70, 2, 2, 8, 27, 29, 27, 15, 15, 27, 29, 27, 15,253,195, 20, 2, 41, 1, 15, 27, 29, 28, 14, 14, 28, 29, 27, 8, 3,
+ 2,253,188, 2,126, 8, 8, 26, 16, 14, 27, 15, 15, 27, 14, 16, 26, 8, 6, 2,253,151, 32, 1,119, 2, 16, 26, 16, 14, 28, 14,
+ 14, 28, 14, 16, 26, 8, 2, 1, 0, 5, 0,112, 0, 0, 4, 97, 5, 29, 0, 29, 0, 33, 0, 39, 0, 45, 0, 50, 0, 0, 1, 51,
+ 21, 51, 53, 51, 21, 35, 21, 7, 17, 23, 21, 51, 21, 33, 53, 51, 53, 55, 51, 17, 35, 39, 53, 35, 53, 51, 21, 51, 1, 53, 33, 21,
+ 1, 55, 53, 33, 21, 23, 17, 7, 21, 33, 53, 39, 53, 17, 55, 33, 17, 1,237,242,150,236,101, 80, 80,101,252, 15,101, 81, 1, 1,
+ 81,101,232,149, 2, 68,252,112, 2,225, 72,253, 62, 72, 64, 2,178, 65, 1,253,206, 5, 29,136,136,142,126,131,254, 0,130,125,
+143,143,125,133, 1,252,132,126,142,136,251,156, 48, 48, 3,109,114, 84, 84,114,253,199,101,112,112,101, 45, 1,221, 2,254, 33,
+ 0, 4, 0,222,255,248, 3,243, 4,197, 0, 55, 0, 67, 0, 81, 0, 94, 0, 0, 1, 38, 53, 52, 55, 54, 55, 38, 39, 38, 39, 53,
+ 54, 55, 54, 55, 54, 55, 38, 39, 38, 53, 52, 62, 1, 51, 50, 30, 1, 21, 20, 7, 6, 7, 22, 23, 22, 23, 22, 23, 21, 6, 7, 6,
+ 7, 22, 23, 22, 21, 20, 7, 6, 7, 19, 33, 27, 1, 53, 51, 53, 35, 53, 35, 21, 35, 21, 51, 21, 19, 54, 53, 52, 46, 1, 34, 14,
+ 1, 21, 20, 23, 3, 33, 0, 20, 30, 1, 50, 62, 1, 52, 46, 1, 35, 34, 6, 1,194, 25, 26, 6, 9, 49, 29, 34, 1, 1, 34, 35,
+ 64, 23, 24, 21, 14, 18, 37, 64, 35, 33, 64, 37, 17, 13, 22, 23, 24, 63, 36, 35, 1, 1, 35, 30, 48, 9, 7, 25, 26, 1, 2,231,
+252,237,222,220,141,141, 97,141,141,133, 49, 37, 63, 69, 63, 37, 52,182, 2, 21,254,153, 24, 44, 47, 45, 23, 24, 45, 22, 24, 43,
+ 1, 68, 44, 47, 49, 43, 14, 12, 31, 52, 59, 65, 3, 66, 60, 62, 34, 11, 9, 14, 24, 32, 34, 35, 62, 34, 34, 62, 35, 34, 32, 24,
+ 15, 8, 11, 34, 62, 60, 66, 3, 65, 59, 51, 32, 12, 14, 43, 49, 48, 44, 3, 3,254,188, 1, 75, 1, 18,102, 89,101,101, 89,102,
+254,238, 37, 60, 35, 64, 34, 34, 64, 35, 52, 45,254,233, 4, 47, 48, 43, 23, 23, 43, 48, 43, 23, 23, 0, 0, 0, 0, 4, 0,144,
+ 0, 6, 4, 65, 4,199, 0, 30, 0, 42, 0, 51, 0, 86, 0, 0, 1, 54, 38, 55, 22, 7, 0, 19, 33, 38, 53, 52, 36, 39, 6, 7,
+ 6, 7, 39, 7, 38, 39, 54, 39, 54, 55, 46, 1, 55, 22, 23, 7, 54, 59, 1, 6, 21, 20, 43, 1, 34, 39, 53, 3, 23, 20, 7, 35,
+ 34, 61, 1, 54, 19, 38, 39, 6, 22, 7, 6, 7, 22, 7, 22, 23, 55, 7, 54, 55, 54, 55, 22, 4, 23, 20, 23, 37, 2, 1, 50, 53,
+ 35, 54, 38, 39, 6, 22, 7, 2, 7, 11, 42, 73,125, 32, 1,142, 37,252,235, 10, 1, 71, 7, 73, 46, 37,128, 8, 35,113, 26, 74,
+ 12, 39, 59, 17, 10, 31, 84, 44,132, 31, 78, 4, 35, 56, 17, 6, 3, 5, 5, 58, 8, 23, 33,176, 29, 62, 35, 49, 20, 48, 36, 17,
+ 73, 20, 84, 78, 28,110, 23, 86, 66, 44,254,165, 2, 9, 2,199, 31,254,110, 1, 3, 32, 17, 63, 37, 35, 15, 4, 3, 20, 78, 97,
+106,105,254,249,253, 27, 45, 47,130,246, 52, 94, 2,116, 14, 18, 25, 38, 65,234,171, 89, 99, 26, 27,103, 21, 98,225, 51, 37, 29,
+ 39, 24, 12,254,187, 28, 43, 12, 25, 18, 40, 2, 40, 78, 31, 86, 56, 27, 79, 81,196,191, 62, 19, 58, 60, 8,117, 3,141,121,250,
+103, 42, 42, 1, 2,156, 1, 53, 1, 10,107, 60, 88, 62, 27, 0, 0, 4, 0,156, 0, 6, 4, 53, 4,104, 0, 13, 0, 29, 0, 80,
+ 0, 91, 0, 0, 0, 20, 30, 1, 51, 50, 62, 1, 52, 46, 1, 35, 34, 6, 55, 20, 30, 1, 51, 50, 62, 1, 53, 52, 46, 1, 35, 34,
+ 14, 1, 1, 21, 33, 53, 7, 38, 53, 52, 54, 55, 54, 55, 38, 39, 38, 53, 52, 54, 55, 54, 55, 38, 39, 38, 52, 62, 1, 51, 50, 30,
+ 1, 20, 7, 6, 7, 22, 23, 30, 1, 21, 20, 7, 6, 7, 22, 23, 30, 1, 21, 20, 7, 39, 38, 39, 46, 1, 35, 34, 6, 7, 6, 7,
+ 1,200, 43, 76, 41, 43, 76, 42, 43, 77, 41, 40, 76, 72, 12, 21, 11, 12, 21, 12, 12, 22, 11, 10, 22, 12, 1,196,252,227, 62, 9,
+124,110, 28, 30, 22, 16, 32, 64, 58, 20, 22, 20, 11, 17, 33, 58, 31, 30, 59, 33, 15, 13, 19, 20, 23, 56, 65, 31, 17, 22, 28, 29,
+110,125, 9, 69, 3, 48, 52,184, 96, 97,183, 51, 48, 3, 2,216, 84, 76, 42, 42, 76, 84, 77, 40, 40,202, 12, 20, 11, 11, 20, 12,
+ 11, 22, 12, 12, 22,252, 13, 1, 1, 1, 43, 43,120,220, 58, 16, 12, 21, 29, 56, 62, 62,113, 31, 11, 7, 15, 21, 30, 63, 57, 32,
+ 32, 57, 63, 30, 21, 15, 7, 11, 31,113, 62, 62, 56, 29, 21, 12, 16, 58,220,120, 43, 43, 99, 94, 85, 90, 98, 98, 90, 85, 94, 0,
+ 0, 8, 0,106,255,252, 4,103, 4, 37, 0, 15, 0, 32, 0, 36, 0, 84, 0,100, 0,104, 0,121, 0,138, 0, 0, 1, 52, 55, 38,
+ 39, 38, 34, 14, 1, 21, 20, 22, 23, 22, 23, 59, 2, 54, 55, 62, 1, 53, 52, 46, 1, 35, 34, 7, 6, 7, 22, 23, 1, 21, 33, 53,
+ 1, 17, 38, 39, 46, 1, 53, 52, 62, 1, 51, 50, 23, 53, 52, 54, 55, 54, 55, 53, 35, 53, 51, 53, 51, 21, 51, 21, 35, 21, 22, 23,
+ 30, 1, 29, 1, 54, 51, 50, 30, 1, 21, 20, 6, 7, 6, 7, 17, 1, 20, 30, 1, 51, 50, 62, 1, 53, 52, 46, 1, 35, 34, 14, 1,
+ 1, 21, 33, 53, 55, 35, 38, 39, 46, 1, 53, 52, 62, 1, 51, 50, 23, 22, 23, 6, 21, 51, 52, 39, 54, 55, 54, 51, 50, 30, 1, 21,
+ 20, 6, 7, 6, 7, 35, 2, 55, 2, 25, 36, 53,111,104, 60, 58, 53, 16, 16,244,100,243, 17, 16, 52, 58, 59,105, 56, 54, 53, 37,
+ 24, 1, 1,254,193, 2, 26,253,171, 29, 27, 49, 77, 78,141, 74, 57, 54, 25, 23, 9, 12, 77, 77, 74, 77, 77, 12, 9, 22, 26, 54,
+ 56, 74,141, 78, 77, 48, 28, 29,254,118, 18, 32, 16, 18, 32, 17, 17, 32, 18, 16, 32, 18, 1, 43,254, 48,146,199, 13, 12, 43, 47,
+ 48, 85, 45, 44, 44, 29, 21, 2,172, 2, 21, 29, 43, 44, 46, 84, 49, 47, 44, 12, 13,198, 2,172, 2, 3, 30, 20, 29, 57,106, 57,
+ 58,104, 28, 10, 6, 6, 10, 28,104, 58, 57,106, 57, 29, 20, 30, 3, 2,254, 97,215,215,254,240, 1, 16, 9, 16, 38,140, 76, 77,
+140, 75, 22, 1, 26, 45, 13, 5, 2, 39, 50, 61, 61, 50, 39, 2, 5, 13, 45, 26, 1, 22, 75,140, 77, 76,140, 38, 16, 9,254,240,
+ 3, 49, 18, 31, 17, 17, 31, 18, 17, 32, 16, 16, 32,253,169,142,142,147, 5, 8, 24, 86, 47, 47, 88, 47, 23, 17, 25, 2, 2, 2,
+ 2, 25, 17, 23, 47, 88, 47, 47, 86, 24, 8, 5, 0, 3, 0, 54, 0, 4, 4,155, 4,197, 0, 72, 0, 76, 0, 80, 0, 0, 19, 38,
+ 39, 52, 62, 1, 51, 50, 30, 1, 21, 6, 7, 19, 3, 34, 39, 52, 62, 1, 51, 50, 30, 1, 21, 6, 7, 27, 1, 38, 39, 52, 62, 1,
+ 51, 50, 30, 1, 21, 6, 7, 27, 1, 38, 53, 52, 62, 1, 51, 50, 30, 1, 21, 6, 7, 3, 19, 38, 53, 52, 62, 1, 51, 50, 30, 1,
+ 21, 6, 35, 3, 17, 33, 17, 5, 53, 33, 21, 5, 53, 33, 21,141, 77, 10, 24, 44, 23, 23, 44, 23, 4, 46,194, 42, 67, 15, 23, 44,
+ 25, 23, 43, 23, 2, 37,154, 35, 55, 1, 24, 43, 22, 23, 44, 24, 2, 55, 31,150, 37, 23, 44, 22, 25, 43, 24, 9, 70, 75,209, 35,
+ 24, 43, 23, 24, 43, 24, 11, 80,130,253, 68, 2,141,253,178, 2, 78,253,178, 3, 65, 1, 77, 23, 42, 22, 22, 42, 23, 52, 17,254,
+100, 2, 59, 75, 23, 41, 22, 22, 41, 23, 36, 28,253,160, 2,155, 24, 39, 23, 42, 21, 21, 42, 23, 44, 19,253,100, 2, 89, 38, 34,
+ 22, 42, 22, 22, 42, 22, 69, 13,253,204, 1,163, 27, 35, 23, 42, 22, 22, 42, 23, 76,254,136,254, 58, 1,198,165, 63, 63,242, 64,
+ 64, 0, 0, 0, 0, 4, 0,148, 0, 5, 4, 61, 4,197, 0, 3, 0, 7, 0, 37, 0, 41, 0, 0, 1, 53, 33, 21, 1, 53, 33, 21,
+ 19, 51, 21, 51, 53, 51, 21, 35, 21, 7, 17, 23, 21, 51, 21, 33, 53, 51, 53, 55, 51, 17, 35, 39, 53, 35, 53, 51, 21, 51, 1, 53,
+ 33, 21, 3,109,253,248, 2, 68,253,128,205,225,139,219, 94, 74, 74, 94,252, 87, 94, 75, 1, 1, 75, 94,215,139, 2, 26,252,178,
+ 3,178, 76, 76,252,230, 90, 90, 4, 44,125,125,131,117,122,254, 37,121,117,132,132,117,123, 1,216,123,117,131,125,251,235, 45,
+ 45, 0, 0, 0, 0, 2, 0,226, 0, 6, 3,239, 4,199, 0, 52, 0, 64, 0, 0, 1, 52, 55, 54, 55, 38, 39, 38, 39, 53, 54, 55,
+ 54, 55, 54, 55, 38, 39, 38, 53, 52, 62, 1, 51, 50, 30, 1, 21, 20, 7, 6, 7, 22, 23, 22, 23, 22, 23, 21, 6, 7, 6, 7, 22,
+ 23, 22, 21, 20, 7, 19, 33, 19, 38, 55, 53, 51, 53, 35, 53, 35, 21, 35, 21, 51, 21, 1,170, 26, 7, 9, 49, 29, 33, 1, 1, 33,
+ 35, 63, 23, 24, 21, 14, 18, 37, 63, 35, 33, 63, 37, 17, 13, 21, 22, 24, 62, 36, 34, 1, 1, 34, 30, 47, 9, 6, 26, 26,225,252,
+245,220, 21,238,140,140, 95,140,140, 1,168, 49, 43, 14, 12, 30, 52, 58, 65, 3, 65, 60, 61, 34, 11, 8, 15, 23, 32, 33, 35, 61,
+ 34, 34, 61, 35, 33, 32, 23, 16, 7, 11, 34, 61, 60, 65, 3, 65, 58, 51, 31, 12, 14, 43, 49, 47, 43,254,185, 1, 72, 43,228,101,
+ 88,101,101, 88,101, 0, 0, 0, 0, 4, 0,103, 0, 2, 4,106, 5, 32, 0, 34, 0, 46, 0, 55, 0, 61, 0, 0, 1, 54, 38, 55,
+ 30, 1, 7, 51, 20, 35, 0, 19, 33, 38, 53, 52, 0, 39, 6, 39, 6, 39, 55, 7, 38, 39, 54, 39, 54, 55, 54, 38, 55, 22, 23, 7,
+ 21, 22, 59, 1, 50, 53, 52, 55, 35, 34, 7, 3, 21, 20, 59, 1, 54, 53, 39, 34, 1, 23, 4, 19, 51, 2, 1,248, 54, 71, 74, 75,
+ 21, 38, 4, 2, 1,213, 39,252,175, 11, 1,110, 12, 61,108, 82, 93, 42, 94,100, 23, 87, 12, 42, 87, 9, 62, 33, 91, 49,148, 3,
+ 7, 18, 61, 37, 5, 84, 32,101, 25, 9, 62, 6, 54, 1,144, 46, 1, 72, 5, 67, 39, 4, 76, 34,139, 39, 71,128, 13, 1,254,215,
+252,225, 49, 50,140, 1, 0,104,152, 6,132, 4, 91, 70, 25, 72,229,184, 96, 91, 36, 37,111, 23,107,223, 14, 26, 43, 29, 42, 56,
+254,100, 21, 25, 13, 46, 30, 1,248, 78,235,253, 99, 2,232, 0, 0, 1, 0,118, 0, 5, 4, 91, 4,198, 0, 46, 0, 0, 55, 38,
+ 53, 52, 54, 55, 54, 55, 38, 39, 38, 53, 52, 54, 55, 54, 55, 38, 39, 38, 52, 62, 1, 51, 50, 30, 1, 20, 7, 6, 7, 22, 23, 30,
+ 1, 21, 20, 7, 6, 7, 22, 23, 30, 1, 21, 20, 7,127, 9,134,119, 31, 32, 24, 17, 34, 69, 62, 22, 24, 21, 13, 18, 35, 64, 33,
+ 33, 63, 37, 18, 13, 21, 22, 25, 61, 69, 33, 18, 24, 31, 31,119,135, 10, 6, 46, 47,130,238, 64, 17, 12, 24, 30, 61, 67, 68,122,
+ 34, 12, 8, 15, 24, 31, 69, 62, 34, 34, 62, 69, 31, 24, 16, 7, 12, 34,122, 68, 67, 61, 30, 24, 13, 16, 64,238,130, 47, 46, 0,
+ 0, 1, 0,128, 0,133, 4, 81, 5, 79, 0, 35, 0, 0, 1, 22, 23, 22, 23, 22, 29, 1, 20, 7, 6, 35, 34, 39, 35, 21, 20, 23,
+ 35, 53, 54, 53, 39, 35, 7, 6, 35, 34, 47, 1, 53, 52, 55, 0, 63, 1, 2,107, 77,177,195, 5, 32,133, 44, 52,127, 78, 34, 68,
+177, 70, 2, 32, 38, 70,105,153, 63, 7,154, 1, 2, 74, 2, 5, 79,137,227,228, 47, 70, 66, 33,137, 79, 18,182, 10,233,123, 5,
+124,234, 3, 73,109,172, 60, 38,150,167, 1, 61,136, 2, 0, 0, 0, 2, 0, 14, 0,133, 4,195, 5, 77, 0, 24, 0, 50, 0, 0,
+ 1, 50, 23, 22, 21, 50, 55, 54, 51, 50, 23, 22, 29, 1, 20, 7, 0, 7, 35, 1, 38, 53, 52, 55, 54, 3, 21, 20, 23, 1, 51, 1,
+ 54, 61, 1, 52, 39, 38, 35, 34, 3, 6, 21, 35, 52, 39, 38, 35, 34, 7, 6, 1, 61,179, 96, 23, 5, 10, 93,193,172,100, 31,182,
+254,142, 50, 5,254, 13, 99,164, 66,188,171, 1,134, 3, 1,216, 85,155, 59, 47,217, 71, 8, 5, 59, 83,156,143, 88, 30, 5, 77,
+226, 66, 20, 58,254,174, 64, 66, 10,213,189,254, 59, 55, 2,104,146,150,173,102, 37,254,208, 13,180,187,254, 35, 2, 62,133,124,
+ 31,142, 92, 23,254,144, 31, 21, 64,172,184,146, 57, 0, 0, 0, 0, 2, 0,145, 0,133, 4, 64, 5, 79, 0, 8, 0, 13, 0, 0,
+ 9, 1, 21, 0, 7, 38, 1, 38, 53, 9, 4, 2,105, 1,215,254, 67, 26, 12,254,110, 58, 1,213,254, 94, 1,165, 1,166,254,168,
+ 5, 79,253,158, 5,253,185, 28, 9, 2, 14, 71, 10, 2, 32,253,222,253,219, 2, 37, 1,189, 0, 0, 1, 0, 50, 0,133, 4,159,
+ 5, 79, 0, 55, 0, 0, 1, 50, 23, 22, 23, 20, 15, 1, 51, 54, 59, 1, 50, 23, 22, 21, 20, 7, 6, 7, 34, 39, 35, 21, 16, 23,
+ 21, 35, 39, 54, 17, 53, 35, 6, 35, 34, 39, 38, 53, 52, 55, 54, 59, 1, 50, 23, 51, 53, 38, 39, 38, 61, 1, 52, 55, 54, 2,106,
+176, 83, 10, 3, 99, 49, 2, 61, 69, 16,195, 79, 19,172, 32, 59,199, 83, 2, 67,171, 5, 70, 2, 82,202,157, 84, 20,202, 54, 42,
+ 8, 70, 64, 3, 69, 24, 49,176, 59, 5, 79,186, 43, 46, 96,132, 49, 23,166, 54, 50,168, 86, 10, 5,226, 8,254,230, 89, 5, 5,
+105, 1, 18, 2,228,166, 56, 47,192, 68, 10, 23, 2, 59, 56, 91, 66, 12,165, 86, 15, 0, 0, 0, 0, 3, 0,127, 0,134, 4, 82,
+ 5, 80, 0, 34, 0, 60, 0, 66, 0, 0, 1, 22, 1, 22, 29, 1, 20, 7, 6, 43, 1, 34, 39, 35, 21, 20, 23, 35, 53, 54, 53, 35,
+ 7, 6, 43, 1, 34, 39, 38, 53, 55, 53, 52, 55, 18, 55, 6, 1, 6, 21, 22, 23, 22, 59, 1, 50, 55, 51, 50, 23, 22, 59, 1, 50,
+ 55, 54, 61, 1, 52, 39, 38, 3, 51, 38, 39, 34, 7, 2,105,104, 1, 59, 70,148, 28, 40, 18,119, 81, 34, 68,177, 71, 34, 46, 70,
+ 87, 18,131, 67, 20, 2,169,239, 78,102,254,234, 66, 8,121, 18, 34, 13, 98, 79,150, 6, 26, 68, 85, 15,113, 53, 8,166,189,117,
+ 52, 11, 12, 5, 13, 5, 80,185,254,136,114,111, 2,172, 64, 13,179, 11,230,127, 5,124,239, 83, 96,143, 54, 52, 11, 2,164,175,
+ 1, 39, 60,164,254,183,107,110,153, 44, 7,179, 58,121,137, 33, 25, 25,145,170,236,252, 64, 19, 74, 68, 0, 0, 0, 1, 0, 11,
+ 0,133, 4,198, 5, 79, 0, 23, 0, 0, 1, 50, 23, 22, 23, 51, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 1, 35, 1, 38, 53, 52,
+ 55, 54, 1, 59,167, 95, 35, 2, 2, 29, 75, 89,111,172,104, 26,171,254, 77, 5,254, 50,138,164, 69, 5, 79,193, 76, 41,133, 88,
+ 89,184, 68, 60,206,186,253,246, 2, 54,169,179,173,102, 37, 0, 0, 1, 0,145, 0,133, 4, 64, 5, 79, 0, 8, 0, 0, 9, 1,
+ 22, 21, 1, 38, 1, 52, 55, 2,105, 1,158, 57,254, 41, 10,254, 50, 92, 5, 79,253,231, 69, 11,253,159, 6, 2, 91, 11,114, 0,
+ 0, 3, 0, 49, 0,134, 4,160, 5, 86, 0, 50, 0, 96, 0,103, 0, 0, 1, 50, 23, 22, 21, 20, 15, 1, 54, 59, 1, 50, 23, 22,
+ 21, 20, 7, 6, 7, 34, 39, 35, 21, 16, 23, 21, 35, 39, 54, 17, 53, 35, 6, 35, 34, 39, 38, 53, 52, 55, 54, 59, 1, 50, 23, 38,
+ 39, 53, 52, 55, 54, 3, 20, 31, 1, 21, 38, 43, 1, 34, 15, 1, 20, 23, 22, 51, 50, 55, 54, 55, 51, 22, 23, 22, 51, 50, 55, 54,
+ 61, 1, 52, 47, 1, 35, 34, 7, 53, 54, 55, 54, 53, 52, 39, 38, 35, 34, 7, 19, 20, 7, 51, 53, 38, 53, 2,109,166, 86, 21, 94,
+ 18, 25, 50, 34,204, 76, 13,173, 28, 60,198, 84, 2, 67,172, 5, 70, 2, 82,203,157, 85, 21,203, 55, 42, 32, 50, 25, 81, 23,177,
+ 59,198,139, 10, 88, 97, 7,200, 50, 6,112, 50, 64,173, 94, 13, 18, 6, 30, 68, 74,130,138, 70, 10,208, 44, 5, 97, 88,106, 26,
+ 21,153, 45, 33,152, 68,216, 23, 50, 23, 5, 86,169, 57, 47,109,136, 19, 5,177, 46, 48,173, 82, 10, 6,227, 7,254,228, 90, 4,
+ 4,106, 1, 19, 3,230,167, 57, 47,194, 67, 10, 5, 92,145, 32,167, 86, 15,254,239,128,167, 10, 3, 8,175, 55,121, 77, 31,243,
+ 22, 53, 98,111,109,156, 38, 35, 5,183, 39, 3, 8, 3,112, 91, 63, 36,150, 71, 14,165,252,141, 23, 79, 3, 81, 18, 0, 0, 0,
+ 0, 4, 0, 46, 0, 7, 4,163, 4,198, 0, 14, 0, 29, 0, 44, 0, 72, 0, 0, 1, 51, 20, 6, 7, 20, 22, 23, 35, 38, 39, 38,
+ 39, 38, 54, 37, 51, 20, 6, 7, 20, 22, 23, 35, 38, 39, 38, 39, 38, 54, 5, 51, 20, 6, 7, 20, 22, 23, 35, 38, 39, 38, 39, 38,
+ 54, 19, 30, 1, 21, 20, 6, 4, 32, 36, 38, 53, 52, 54, 55, 51, 6, 7, 6, 20, 30, 1, 32, 62, 1, 52, 39, 38, 39, 1,126, 11,
+118, 1,165, 6, 11, 23,133, 39, 12, 4,138, 1, 5, 11,119, 2,167, 5, 11, 23,132, 40, 12, 3,138, 1, 24, 11,119, 1,166, 5,
+ 10, 23,133, 39, 13, 3,138, 36,136,155,150,254,239,254,217,254,239,150,154,136, 3,107, 61, 70,136,245, 1, 13,246,135, 70, 62,
+106, 4, 71, 51,126, 80,106, 98,164,135, 94, 42, 73,101,114,192, 78,192,123,160,152,249,204,145, 63,113,154,174, 74, 65,159,101,
+131,125,206,169,118, 54, 92,126,144,254,120, 40,143, 79, 78,143, 80, 80,143, 78, 79,143, 40, 33, 56, 63,136,124, 69, 69,124,136,
+ 63, 56, 33, 0, 0, 1, 1,114, 0, 33, 3, 95, 5,170, 0, 17, 0, 0, 1, 51, 23, 17, 20, 15, 1, 35, 34, 47, 1, 52, 63, 1,
+ 50, 23, 51, 17, 3, 21, 68, 6,185, 45, 33,200, 26, 4,199, 31, 93, 85, 4, 5,170, 7,251, 70,154, 43, 3,125, 29,123, 23, 4,
+ 60, 4,142, 0, 0, 1, 0,162, 0, 33, 4, 47, 5,170, 0, 29, 0, 0, 1, 51, 23, 21, 22, 23, 22, 21, 20, 7, 35, 39, 54, 53,
+ 52, 39, 38, 39, 17, 20, 7, 35, 34, 53, 52, 55, 51, 50, 23, 17, 2, 54, 82, 8, 25,163,227,115, 4, 28, 57,215, 87, 23,212, 53,
+229,200, 22, 91, 83, 5,170, 6, 37, 51, 59, 66,131,137, 91, 30, 47, 79, 66, 67, 39, 25,252, 18,144, 42,158,124, 21, 60, 4,144,
+ 0, 1, 0,106,255, 95, 4,103, 5,165, 0, 30, 0, 0, 1, 5, 23, 17, 20, 7, 35, 34, 61, 1, 52, 63, 1, 50, 23, 17, 37, 17,
+ 20, 15, 1, 35, 34, 61, 1, 52, 63, 1, 50, 23, 17, 1,217, 2,140, 2,181, 51,201,167, 37, 81, 77,253,251,142, 63, 25,203,160,
+ 41, 84, 75, 5,165,191, 4,251, 55,146, 40,155, 4,119, 20, 3, 55, 3,209,159,252, 23,129, 53, 7,146, 7,115, 32, 3, 63, 4,
+141, 0, 0, 0, 0, 2, 0, 17, 0,124, 4,192, 5, 79, 0, 24, 0, 28, 0, 0, 1, 23, 17, 20, 7, 34, 39, 52, 55, 50, 23, 51,
+ 17, 33, 17, 6, 7, 35, 34, 53, 52, 55, 50, 23, 17, 23, 21, 33, 53, 4,189, 3,214,192, 15,192, 89, 65, 3,253, 62, 7,199, 3,
+212,194, 82, 72, 73, 2,194, 5, 79, 3,251,243,176, 17,135,113, 12, 49, 2, 32,253,211,171, 29,145,103, 13, 52, 4, 2,170,128,
+128, 0, 0, 0, 0, 2, 1, 68, 0, 37, 3,141, 5,174, 0, 12, 0, 19, 0, 0, 1, 51, 23, 17, 51, 54, 51, 22, 23, 2, 5, 39,
+ 17, 19, 17, 36, 17, 54, 39, 34, 1, 73, 43, 4, 3,161,136,215, 18, 27,253,212, 2, 52, 1,139, 12,152,112, 5,174, 5,252,117,
+224, 3,242,254,111, 83, 2, 5,130,252, 16,254,177, 94, 1, 31,163, 8, 0, 0, 0, 2, 1,177, 0, 42, 3, 32, 5,175, 0, 13,
+ 0, 19, 0, 0, 1, 51, 23, 17, 37, 23, 17, 7, 35, 39, 17, 5, 35, 17, 19, 17, 51, 37, 17, 35, 1,182, 39, 6, 1, 59, 2, 4,
+ 38, 5,254,194, 2, 50, 1, 1, 13, 2, 5,175, 5,254, 73,152, 2,251,166, 5, 5, 1,202,151, 4, 72,253,188,254,147,135, 1,
+106, 0, 0, 0, 0, 2, 1, 55, 0, 42, 3,154, 5,175, 0, 40, 0, 44, 0, 0, 1, 51, 23, 17, 55, 23, 21, 6, 7, 17, 55, 21,
+ 6, 7, 17, 7, 35, 39, 17, 5, 17, 7, 35, 39, 17, 7, 53, 52, 55, 17, 35, 7, 53, 55, 17, 55, 51, 23, 21, 37, 17, 1, 17, 37,
+ 17, 2,246, 44, 5,112, 3, 3,112,115, 1,114, 5, 44, 4,254,240, 5, 39, 5,122,122, 2,120,122, 5, 39, 5, 1, 16,254,240,
+ 1, 16, 5,175, 5,254,225, 57, 2,133, 7, 56,254,160, 52,128, 4, 63,254,232, 4, 4, 1, 2,132,254,185, 4, 4, 1, 47, 57,
+134, 6, 57, 1,101, 53,131, 62, 1, 15, 3, 3,248,127, 1, 58,253,185,254,156,131, 1, 95, 0, 0, 1, 0, 96,255,254, 4,113,
+ 5, 28, 0, 69, 0, 0, 1, 35, 38, 7, 35, 34, 39, 53, 54, 53, 52, 39, 53, 54, 55, 51, 22, 59, 1, 53, 52, 39, 53, 54, 55, 51,
+ 22, 50, 55, 51, 22, 23, 21, 6, 29, 1, 51, 50, 55, 51, 22, 23, 21, 6, 21, 20, 23, 21, 6, 43, 1, 38, 7, 35, 17, 20, 23, 21,
+ 6, 7, 35, 38, 34, 7, 35, 38, 39, 53, 54, 53, 2, 42,148,159, 71, 49, 21, 9, 86, 86, 1, 28, 50, 73,158,147,115, 3, 25, 51,
+ 39,123, 39, 51, 25, 3,115,143,158, 73, 49, 28, 2, 86, 86, 9, 22, 48, 71,160,143,115, 3, 25, 51, 39,123, 39, 51, 25, 3,115,
+ 2,173, 1, 80, 31, 51, 43, 49, 61, 39, 51, 25, 3,115,153,159, 72, 49, 29, 2, 87, 87, 2, 29, 49, 72,159,153,115, 3, 25, 51,
+ 39, 61, 49, 43, 51, 31, 80, 1,254,136,159, 72, 50, 28, 2, 87, 87, 2, 28, 50, 72,159, 0, 0, 0, 6, 0, 46,255,240, 4,163,
+ 5, 15, 0, 6, 0, 13, 0, 20, 0, 27, 0, 59, 0, 71, 0, 0, 19, 6, 7, 22, 23, 55, 53, 5, 21, 23, 54, 55, 38, 39, 1, 38,
+ 39, 6, 7, 23, 51, 3, 35, 7, 22, 23, 54, 55, 3, 51, 55, 22, 23, 6, 7, 39, 35, 17, 23, 6, 7, 38, 39, 55, 17, 35, 7, 38,
+ 39, 54, 55, 23, 51, 53, 39, 54, 55, 22, 23, 15, 1, 21, 35, 21, 51, 17, 51, 17, 51, 53, 35, 53,206, 19, 42, 41, 20, 83, 2,144,
+ 82, 20, 41, 41, 20,254,181, 38, 42, 38, 39, 59, 40, 1, 40, 58, 39, 38, 41, 39, 6,200,182, 8,107,107, 8,182,200,110, 92, 92,
+ 91, 91,110,200,182, 9,107,107, 9,182,200,110, 91, 91, 92, 92,110, 96,102,102, 47,101,101, 3, 46, 40, 40, 38, 40, 59, 40, 1,
+ 40, 58, 40, 38, 40, 40, 1, 64, 20, 41, 41, 20, 83,252,200, 83, 20, 42, 42, 20, 2,152,110, 92, 93, 91, 91,111,254,132,182, 10,
+106,106, 10,182, 1,124,111, 91, 92, 92, 92,110,187,183, 10,106,106, 10,183,101,139, 40,254,176, 1, 80, 40,139, 0, 12, 0, 47,
+255,251, 4,162, 4, 78, 0, 20, 0, 35, 0, 46, 0, 54, 0, 67, 0, 77, 0,104, 0,119, 0,140, 0,151, 0,166, 0,175, 0, 0,
+ 1, 33, 50, 31, 1, 55, 51, 50, 21, 7, 33, 39, 53, 54, 55, 53, 38, 39, 38, 61, 1, 7, 51, 50, 23, 22, 21, 6, 7, 35, 38, 39,
+ 53, 54, 55, 54, 23, 21, 19, 7, 21, 51, 55, 7, 38, 47, 1, 5, 23, 55, 38, 43, 1, 34, 7, 5, 22, 31, 1, 21, 20, 7, 6, 43,
+ 1, 38, 39, 53, 31, 1, 51, 50, 63, 1, 52, 47, 1, 6, 37, 51, 50, 23, 22, 21, 7, 35, 39, 6, 15, 1, 23, 7, 35, 38, 39, 38,
+ 61, 1, 52, 63, 1, 35, 39, 53, 55, 23, 21, 23, 51, 21, 20, 7, 21, 22, 23, 19, 51, 23, 53, 39, 5, 51, 23, 21, 33, 50, 55, 51,
+ 23, 21, 6, 7, 6, 43, 1, 21, 7, 35, 38, 61, 1, 39, 23, 17, 7, 35, 34, 47, 1, 53, 52, 55, 5, 7, 23, 51, 53, 52, 59, 1,
+ 50, 63, 1, 33, 38, 61, 1, 5, 6, 7, 21, 20, 31, 1, 51, 53, 2, 20, 1, 45, 44, 22, 59, 75, 6, 4,132,254,247, 4, 14, 62,
+142, 12, 35, 87, 18, 85, 42, 23,134, 12, 3,229, 3,121, 12, 34,209,154, 17,154, 72, 21, 86, 13, 15,253,206,183,122, 47, 59, 21,
+ 64, 34, 2,191, 14,113, 4, 61, 17, 28,111, 9,137, 41,119,101, 41, 28, 1, 36, 73,173,253,197, 15, 7, 89, 39, 4, 4, 76,137,
+ 11, 3, 4, 5, 2, 17,132, 15, 65, 15, 2, 76, 4, 97, 14, 2, 88, 1,119,152, 2, 21, 72, 1,229, 4, 3, 1, 27, 32, 27, 2,
+ 4, 5,149, 19, 26,149, 3, 7,131, 62, 6, 4,227, 88, 37, 4, 67, 1,201, 73, 73, 4, 6,176, 16, 36, 80,254,204, 6,254, 67,
+ 47, 4, 68, 23,206, 4, 78, 54,103, 43, 5,229, 4, 4, 13, 32, 4,248, 15, 17, 3, 4, 10, 98, 37, 8,239, 13,131, 6, 2,215,
+ 6, 35, 18, 1,254,241, 11, 2,131, 9,150, 10, 3,230,106,213,110, 78,203, 13,208, 32, 15, 58, 51, 14, 8,242, 3, 11,212, 79,
+ 20, 43, 53,123, 98, 81,164, 60, 10, 4, 44,235, 26, 16, 30, 4, 21,229, 20, 23, 6, 21,100, 31, 45, 4, 4, 29, 4, 10, 2, 6,
+150, 8, 20,193, 1, 9, 6, 3,131,229, 4, 88, 25, 4, 1, 16,255, 22, 93, 3,220, 10, 3,136, 5,254,247, 3,102, 29, 9, 39,
+ 94, 9,131,130, 6, 22, 74,137, 1, 15, 6, 22, 74, 28, 7, 65, 33, 4,211, 0, 0, 4, 0, 60, 0, 10, 4,149, 4, 56, 0, 10,
+ 0, 31, 0, 50, 0, 69, 0, 0, 1, 51, 17, 7, 53, 55, 51, 17, 51, 21, 33, 5, 38, 53, 52, 63, 1, 39, 55, 23, 39, 7, 6, 23,
+ 22, 55, 33, 21, 33, 34, 39, 38, 37, 6, 7, 35, 21, 39, 55, 21, 51, 54, 55, 54, 39, 3, 55, 19, 22, 21, 20, 1, 22, 31, 1, 55,
+ 7, 39, 55, 39, 38, 7, 6, 7, 3, 39, 19, 54, 55, 54, 1,220,125,136,147, 93,125,254,158,254,129, 32, 28, 61, 45,171, 18, 45,
+ 72, 15, 27, 29, 87, 1, 40,254,159, 55, 42, 33, 4, 11, 62,128,121,154,154,144, 42, 19, 18, 49,147, 99,177, 27,253,189,123, 70,
+ 61, 46, 18,171, 44, 72, 28, 45, 46, 39,148,100,176, 29, 40, 35, 1, 89, 1, 43, 19, 71, 22,254,139, 67,134, 56, 57, 53, 55,106,
+ 26, 78,187, 26,125, 41, 37, 37, 6,116, 24, 20, 71,108, 7, 53,110,109, 51, 8, 40, 44, 72, 1, 1, 58,254,206, 48, 47, 40, 3,
+ 95, 1,107,105, 26,188, 78, 26,125, 33, 4, 7, 78,255, 0, 57, 1, 50, 48, 24, 20, 0, 0, 0, 0, 4, 0, 75, 0, 9, 4,134,
+ 4, 28, 0, 28, 0, 49, 0, 68, 0, 87, 0, 0, 1, 51, 21, 33, 53, 62, 1, 55, 62, 1, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1,
+ 51, 50, 22, 21, 20, 6, 7, 14, 1, 5, 38, 53, 52, 63, 1, 39, 55, 23, 39, 7, 6, 23, 22, 55, 33, 21, 33, 34, 39, 38, 37, 6,
+ 7, 35, 21, 39, 55, 21, 51, 54, 55, 54, 47, 1, 55, 19, 22, 21, 20, 1, 22, 31, 1, 55, 7, 39, 55, 39, 38, 7, 6, 15, 1, 39,
+ 19, 54, 55, 54, 2, 64,242,254,137, 46,146, 17, 35, 26, 53, 42, 34, 73, 63, 54, 79, 34, 91,109, 27, 34, 10, 99,253,229, 31, 27,
+ 60, 44,167, 17, 43, 71, 14, 26, 28, 85, 1, 32,254,168, 53, 41, 32, 3,240, 60,124,119,149,149,141, 41, 18, 17, 47,144, 97,173,
+ 26,253,203,121, 68, 60, 44, 17,167, 43, 71, 27, 44, 44, 38,145, 97,171, 28, 40, 33, 1, 62, 66, 60, 35,113, 15, 29, 39, 19, 28,
+ 37, 17, 27, 78, 18, 14, 71, 57, 27, 49, 32, 9, 77,232, 55, 56, 51, 53,104, 26, 76,183, 26,123, 39, 36, 36, 5,113, 24, 19, 69,
+104, 8, 51,107,106, 50, 8, 39, 43, 71,250, 56,254,214, 47, 46, 38, 3, 72, 1,103,104, 26,183, 76, 25,123, 32, 5, 6, 76,250,
+ 56, 1, 42, 47, 23, 19, 0, 0, 0, 4, 0, 68, 0, 10, 4,141, 4, 42, 0, 40, 0, 61, 0, 80, 0, 99, 0, 0, 1, 30, 1, 21,
+ 20, 6, 35, 34, 38, 39, 53, 30, 1, 51, 50, 54, 53, 52, 38, 43, 1, 53, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 53, 62, 1, 51,
+ 50, 22, 21, 20, 6, 1, 38, 53, 52, 63, 1, 39, 55, 23, 39, 7, 6, 23, 22, 55, 33, 21, 33, 34, 39, 38, 37, 6, 7, 35, 21, 39,
+ 55, 21, 51, 54, 55, 54, 47, 1, 55, 19, 22, 21, 20, 1, 22, 31, 1, 55, 7, 39, 55, 39, 38, 7, 6, 15, 1, 39, 19, 54, 55, 54,
+ 2,246, 8, 68,124,113, 37, 78, 50, 52, 72, 39, 67, 66, 61, 57, 80, 83, 51, 52, 54, 52, 30, 69, 62, 54, 79, 35, 93,111, 60,253,
+107, 32, 28, 60, 45,170, 17, 44, 71, 15, 26, 29, 86, 1, 36,254,164, 54, 41, 34, 3,254, 61,126,120,152,152,142, 42, 18, 18, 48,
+146, 98,175, 27,253,196,122, 69, 60, 46, 18,169, 43, 71, 27, 45, 45, 38,147, 98,173, 28, 41, 34, 1,237, 1, 60, 43, 66, 73, 10,
+ 13, 78, 22, 13, 36, 37, 32, 36, 66, 28, 27, 28, 30, 10, 15, 71, 11, 9, 64, 54, 37, 54,254,161, 55, 57, 52, 54,105, 26, 77,185,
+ 26,124, 40, 36, 37, 6,115, 24, 20, 69,105, 8, 52,109,107, 51, 8, 40, 44, 71,254, 57,254,210, 48, 46, 39, 3, 83, 1,105,105,
+ 26,185, 77, 26,123, 33, 5, 6, 77,253, 56, 1, 47, 47, 23, 20, 0, 5, 0, 36, 0, 7, 4,173, 4,100, 0, 2, 0, 13, 0, 34,
+ 0, 53, 0, 72, 0, 0, 1, 7, 51, 3, 51, 17, 51, 21, 35, 21, 35, 53, 33, 53, 1, 38, 53, 52, 63, 1, 39, 55, 23, 39, 7, 6,
+ 23, 22, 55, 33, 21, 33, 34, 39, 38, 37, 6, 7, 35, 21, 39, 55, 21, 51, 54, 55, 54, 39, 3, 55, 19, 22, 21, 20, 1, 22, 31, 1,
+ 55, 7, 39, 55, 39, 38, 7, 6, 7, 3, 39, 19, 54, 55, 54, 2,129,175,175, 15,135, 92, 92,120,254,221,254,232, 34, 29, 64, 47,
+179, 18, 46, 75, 16, 28, 30, 91, 1, 53,254,143, 57, 43, 35, 4, 57, 65,133,128,159,159,151, 44, 20, 19, 51,154,103,185, 29,253,
+163,128, 74, 64, 48, 19,179, 46, 75, 29, 48, 48, 40,155,104,184, 29, 43, 36, 2,119,196, 1, 44,254,212, 72,109,109, 73,254,222,
+ 59, 60, 55, 57,111, 28, 81,196, 28,131, 43, 38, 39, 6,121, 25, 21, 74,112, 8, 55,115,113, 53, 8, 42, 47, 75, 1, 12, 60,254,
+193, 50, 50, 41, 3,133, 1,111,111, 28,196, 81, 27,131, 34, 4, 7, 82,254,245, 59, 1, 64, 50, 25, 21, 0, 0, 0, 4, 0, 62,
+ 0, 9, 4,147, 4, 51, 0, 29, 0, 50, 0, 69, 0, 88, 0, 0, 1, 33, 21, 35, 21, 50, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38,
+ 39, 53, 30, 1, 51, 50, 54, 53, 52, 38, 35, 34, 6, 7, 1, 38, 53, 52, 63, 1, 39, 55, 23, 39, 7, 6, 23, 22, 55, 33, 21, 33,
+ 34, 39, 38, 37, 6, 7, 35, 21, 39, 55, 21, 51, 54, 55, 54, 39, 3, 55, 19, 22, 21, 20, 1, 22, 31, 1, 55, 7, 39, 55, 39, 38,
+ 7, 6, 15, 1, 39, 19, 54, 55, 54, 1,202, 1, 72,230, 4, 31, 17,101,118,121,110, 36, 76, 50, 55, 67, 39, 60, 67, 67, 60, 28,
+ 59, 50,254,149, 32, 27, 61, 45,171, 18, 45, 72, 14, 26, 29, 87, 1, 39,254,160, 55, 41, 34, 4, 9, 62,128,121,153,153,144, 42,
+ 18, 19, 49,147, 99,177, 26,253,191,123, 70, 61, 46, 19,170, 44, 72, 28, 45, 46, 38,149, 99,176, 28, 41, 34, 2,184, 69, 82, 5,
+ 85, 72, 72, 83, 10, 11, 83, 23, 13, 47, 40, 42, 46, 9, 18,254,200, 56, 57, 53, 54,106, 26, 78,187, 27,126, 40, 37, 37, 6,116,
+ 24, 20, 71,107, 8, 53,110,109, 51, 8, 40, 44, 72, 1, 0, 58,254,207, 48, 48, 39, 3, 92, 1,106,105, 26,187, 78, 25,125, 33,
+ 4, 7, 78,255, 57, 1, 49, 47, 24, 20, 0, 0, 0, 5, 0, 75, 0, 0, 4,134, 4, 18, 0, 9, 0, 34, 0, 55, 0, 74, 0, 93,
+ 0, 0, 1, 34, 6, 20, 22, 51, 50, 54, 52, 38, 55, 21, 46, 1, 35, 34, 6, 7, 6, 54, 51, 50, 22, 21, 20, 6, 35, 34, 38, 53,
+ 52, 54, 51, 50, 22, 1, 38, 53, 52, 63, 1, 39, 55, 23, 39, 7, 6, 23, 22, 55, 33, 21, 33, 34, 39, 38, 37, 6, 7, 35, 21, 39,
+ 55, 21, 51, 54, 55, 54, 47, 1, 55, 19, 22, 21, 20, 1, 22, 31, 1, 55, 7, 39, 55, 39, 38, 7, 6, 15, 1, 39, 19, 54, 55, 54,
+ 2, 93, 39, 48, 48, 39, 42, 47, 47,108, 43, 50, 24, 62, 65, 2, 5, 66, 40, 83, 96,100, 84, 94,100,121,103, 27, 55,253,157, 31,
+ 27, 60, 44,167, 17, 43, 71, 14, 26, 28, 85, 1, 32,254,168, 53, 41, 32, 3,240, 60,124,119,149,149,141, 41, 18, 17, 47,144, 97,
+173, 26,253,203,121, 68, 60, 44, 17,167, 43, 71, 27, 44, 44, 38,145, 97,171, 28, 40, 33, 1,219, 46, 84, 45, 45, 84, 46,192, 72,
+ 15, 10, 68, 38, 5, 29, 82, 69, 67, 83,117,107,102,123, 8,253,220, 55, 56, 51, 53,104, 26, 76,183, 26,123, 40, 35, 36, 5,113,
+ 24, 19, 69,105, 7, 52,108,106, 50, 8, 39, 43, 71,250, 56,254,214, 47, 46, 38, 3, 72, 1,104,103, 26,183, 76, 25,122, 32, 4,
+ 6, 76,250, 56, 1, 42, 46, 24, 19, 0, 0, 0, 0, 4, 0, 45, 0, 12, 4,164, 4, 88, 0, 6, 0, 27, 0, 46, 0, 65, 0, 0,
+ 1, 33, 21, 3, 35, 19, 33, 1, 38, 53, 52, 63, 1, 39, 55, 23, 39, 7, 6, 23, 22, 55, 33, 21, 33, 34, 39, 38, 37, 6, 7, 35,
+ 21, 39, 55, 21, 51, 54, 55, 54, 39, 3, 55, 19, 22, 21, 20, 1, 22, 31, 1, 55, 7, 39, 55, 39, 38, 7, 6, 7, 3, 39, 19, 54,
+ 55, 54, 1,178, 1,129,204,110,191,254,250,254,156, 33, 29, 63, 47,177, 18, 46, 74, 15, 27, 30, 89, 1, 48,254,149, 56, 43, 34,
+ 4, 40, 64,131,125,158,158,148, 44, 19, 18, 50,151,102,182, 28,253,172,127, 72, 63, 47, 19,175, 45, 74, 29, 46, 48, 39,153,102,
+180, 30, 42, 35, 2,192, 38,254, 75, 1,148,254, 28, 58, 59, 54, 56,110, 27, 80,193, 27,129, 42, 37, 39, 6,119, 25, 20, 73,110,
+ 8, 55,114,112, 53, 8, 41, 46, 74, 1, 8, 60,254,198, 50, 49, 40, 3,118, 1,109,109, 27,193, 81, 26,129, 34, 5, 7, 80,254,
+249, 59, 1, 58, 49, 25, 20, 0, 0, 3, 0, 45, 0, 0, 4,164, 4, 75, 0, 20, 0, 39, 0, 58, 0, 0, 55, 38, 53, 52, 63, 1,
+ 39, 55, 23, 39, 7, 6, 23, 22, 55, 33, 21, 33, 34, 39, 38, 37, 6, 7, 35, 21, 39, 55, 21, 51, 54, 55, 54, 39, 3, 55, 19, 22,
+ 21, 20, 1, 22, 31, 1, 55, 7, 39, 55, 39, 38, 7, 6, 7, 3, 39, 19, 54, 55, 54, 78, 33, 29, 63, 47,177, 18, 46, 74, 15, 27,
+ 30, 89, 1, 48,254,149, 56, 43, 34, 4, 40, 64,131,125,158,158,148, 44, 19, 18, 50,151,102,182, 28,253,172,127, 72, 63, 47, 19,
+175, 45, 74, 29, 46, 48, 39,153,102,180, 30, 42, 35,136, 58, 60, 54, 56,109, 27, 80,192, 27,129, 42, 38, 38, 6,119, 25, 20, 72,
+110, 7, 55,113,112, 53, 9, 41, 46, 74, 1, 8, 59,254,198, 49, 49, 41, 3,119, 1,110,108, 27,193, 80, 26,130, 33, 4, 7, 80,
+254,248, 59, 1, 59, 49, 25, 20, 0, 6, 0, 57,255,255, 4,152, 4, 57, 0, 16, 0, 26, 0, 39, 0, 57, 0, 72, 0, 82, 0, 0,
+ 1, 33, 50, 31, 1, 55, 51, 21, 6, 7, 33, 53, 54, 55, 3, 38, 35, 7, 50, 31, 1, 7, 38, 39, 54, 55, 54, 1, 22, 21, 23, 20,
+ 7, 6, 43, 1, 38, 39, 54, 55, 5, 22, 23, 39, 6, 15, 1, 23, 35, 3, 39, 54, 55, 54, 53, 39, 53, 51, 1, 51, 21, 33, 50, 55,
+ 51, 20, 3, 6, 43, 1, 21, 35, 47, 1, 23, 17, 7, 35, 34, 47, 1, 52, 55, 2, 24, 1, 36, 44, 25, 55, 74, 5,118, 12,254,255,
+ 73, 3,148, 26, 10, 77, 79, 32, 36,144,201, 20,112, 16, 37, 2,132,124, 2, 73, 11, 30, 94, 11,131, 18,151,253, 91,128, 1, 84,
+144, 3, 2, 4, 4,151, 6, 3, 60, 20, 75,171, 2, 34, 1, 1, 40, 25, 22, 2,150, 18, 24,153, 3,126, 71, 4, 4,217, 87, 36,
+ 3, 63, 4, 56, 63, 93, 41, 2,206, 16, 4, 40, 7, 1, 9, 19, 3, 69, 65,247,115, 15,194, 22, 35,254,192,208, 17, 30, 76, 44,
+ 6, 12,235, 17, 84, 20,216, 10, 48,248, 12, 31, 21, 1, 4, 24, 24, 96, 30, 9, 43, 2,254,252, 87, 20, 7,254,251, 17, 86,219,
+132, 4,254,255, 4, 96, 36, 36, 97, 0, 0, 0, 0, 7, 0, 46, 0, 7, 4,163, 4,124, 0, 19, 0, 37, 0, 50, 0, 60, 0, 74,
+ 0, 92, 0,101, 0, 0, 1, 51, 32, 19, 22, 29, 1, 16, 5, 6, 43, 1, 32, 3, 38, 61, 1, 16, 55, 54, 23, 21, 50, 31, 1, 21,
+ 6, 7, 21, 51, 54, 55, 35, 7, 38, 39, 38, 35, 5, 22, 51, 54, 55, 38, 35, 38, 35, 34, 7, 6, 7, 5, 21, 23, 51, 50, 55, 52,
+ 47, 1, 34, 5, 23, 6, 7, 20, 31, 1, 51, 52, 63, 1, 51, 23, 39, 5, 7, 22, 23, 51, 53, 55, 51, 50, 63, 1, 53, 35, 6, 43,
+ 1, 39, 53, 5, 6, 29, 1, 20, 31, 1, 51, 53, 2, 94, 21, 1, 45,185, 74,254,206,124,139, 3,254,183,176, 64,241,145,104, 29,
+ 39, 92, 20, 45,214, 7,101, 2, 64, 60, 14, 16, 19,254, 30,185, 6, 3,114, 50, 18, 22, 38, 72, 41, 59, 10, 1,232,117, 90, 74,
+ 20, 77, 31, 11,252,205, 61, 57, 8,106, 22, 2, 21,108, 7, 58,106, 1,128,103, 5, 98, 3, 4,131, 28, 46, 81, 2, 17, 26,241,
+ 4,254,105, 50, 81, 20,192, 4,124,254,233,133,157, 5,254,182,179, 58, 1, 42,127,125, 40, 1, 11,184,100,112, 2, 82,157, 2,
+ 17, 24, 2, 6,183, 33,104, 17, 9,220,106, 11,196, 96, 14, 93, 95, 23,169, 3,204,105, 36,120, 58, 45, 40, 94, 37, 17,177, 44,
+ 51, 19,189, 34,184,216,191, 2,180, 69, 5, 97,135, 2, 12, 5, 72, 77, 80, 30, 9, 69, 31, 3,222, 0, 0, 0, 0, 8, 0, 55,
+ 0, 4, 4,154, 4,103, 0, 15, 0, 32, 0, 47, 0, 58, 0, 66, 0, 82, 0, 96, 0,106, 0, 0, 1, 32, 19, 22, 21, 16, 5, 6,
+ 35, 32, 3, 38, 53, 16, 37, 54, 1, 16, 5, 22, 59, 1, 32, 19, 54, 53, 16, 37, 38, 35, 32, 3, 6, 1, 51, 50, 31, 1, 55, 21,
+ 6, 7, 35, 53, 55, 38, 47, 1, 35, 50, 31, 1, 7, 35, 38, 39, 54, 55, 54, 1, 22, 29, 1, 6, 43, 1, 39, 37, 51, 23, 7, 35,
+ 39, 35, 6, 7, 21, 38, 47, 1, 52, 55, 39, 5, 51, 21, 51, 50, 55, 21, 15, 1, 35, 7, 21, 35, 39, 37, 51, 23, 21, 7, 35, 34,
+ 47, 1, 54, 2,106, 1, 49,178, 77,254,227,123,157,254,199,174, 71, 1, 38,128,254,122, 1, 10,118,127, 36, 1, 14,172, 69,254,
+240,120,138,254,221,168, 69, 1,197,235, 40, 18, 43, 61, 82, 20,204, 58,110, 19, 20, 58, 68, 23, 33,115, 2,171, 13, 89, 21, 33,
+ 1,250,103, 16, 81, 75,117,253,162,207,109, 2, 2, 59, 2,125, 4, 9,117, 2, 65, 59, 2, 62, 5,245, 15, 18,130, 17,127, 4,
+ 5,101,254,231,225, 4, 4,184, 61, 29, 5, 1, 4,103,254,241,134,158,254,194,175, 67, 1, 23,121,165, 1, 63,176, 63,253,205,
+254,212,162, 66, 1, 3,124,147, 1, 42,168, 62,254,252,119, 1, 18, 52, 73, 32, 2,153, 26, 2, 39,191, 29, 9, 53, 64,194, 96,
+ 12,160, 19, 24,254,253,169, 25, 17, 98,199, 67,183, 2, 36,208, 16, 20, 9,205, 13, 21,106, 36,206, 72, 15, 4,219, 7, 5, 63,
+178,105, 4,207, 4, 77, 33, 37, 0, 5, 0, 46, 0, 7, 4,163, 4,124, 0, 7, 0, 23, 0, 31, 0, 55, 0, 72, 0, 0, 1, 22,
+ 23, 50, 55, 38, 39, 6, 1, 32, 19, 22, 21, 16, 5, 6, 35, 32, 3, 38, 53, 16, 37, 54, 1, 6, 7, 22, 51, 54, 55, 38, 5, 21,
+ 35, 6, 39, 46, 1, 55, 38, 54, 55, 50, 23, 54, 51, 30, 1, 7, 22, 6, 7, 6, 39, 35, 37, 16, 5, 22, 59, 1, 32, 19, 54, 53,
+ 16, 37, 38, 35, 32, 3, 6, 1, 4, 1,140,109, 74, 66,124,133, 1,101, 1, 54,180, 79,254,222,125,159,254,194,176, 73, 1, 43,
+129, 1,111,124, 66, 74,110,139, 2, 2,254,155, 2, 94,143,106, 97, 5, 3,121,103,119, 97, 97,121,103,120, 2, 4, 97,106,143,
+ 94, 2,253,229, 1, 14,119,130, 36, 1, 19,174, 70,254,236,121,141,254,216,170, 70, 2, 71,156, 2,155,148, 3, 2, 1,162,254,
+237,135,162,254,189,177, 68, 1, 28,123,167, 1, 67,180, 63,254, 96, 3,148,155, 2,156,146,205, 22,150, 6, 12,147, 66, 93,119,
+ 1,130,130, 1,119, 93, 66,147, 12, 6,150, 74,254,208,165, 67, 1, 7,125,150, 1, 46,171, 63,254,248,121, 0, 0, 2, 0, 80,
+ 0, 8, 4,129, 5, 37, 0, 24, 0, 46, 0, 0, 1, 50, 21, 6, 7, 23, 51, 50, 23, 7, 35, 23, 33, 22, 19, 55, 23, 6, 7, 38,
+ 3, 33, 34, 3, 52, 1, 6, 35, 34, 46, 1, 53, 52, 55, 54, 55, 23, 6, 7, 20, 30, 1, 50, 54, 55, 23, 6, 1,140,134, 1,112,
+ 21,241, 11, 14, 4,241, 11, 1,133, 11,123,117, 42, 4,240, 14,130,254, 95, 11, 74, 1,185, 99,108,108,198,109, 56, 28, 42, 35,
+ 22, 2, 73,133,145,132, 37, 60, 40, 5, 36,124,143, 1,202,128, 3, 88, 6,254,164, 35,123, 7, 78, 21, 1,119, 2,192,116,251,
+ 27, 55,109,197,110,108,100, 52, 41,190, 53, 58, 73,133, 73, 73, 66,147, 44, 0, 0, 3, 0, 60, 0, 5, 4,149, 4, 95, 0, 23,
+ 0, 27, 0, 31, 0, 0, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 1, 17,
+ 33, 17, 37, 33, 17, 33, 1,255, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14,254, 62, 4, 87,
+252, 36, 3, 96,252,160, 2, 52, 31, 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21,253,241, 4, 90,251,
+166,124, 3, 98, 0, 4, 0, 60, 0, 5, 4,149, 4, 95, 0, 23, 0, 47, 0, 51, 0, 55, 0, 0, 1, 52, 55, 54, 55, 54, 51, 50,
+ 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6,
+ 7, 6, 35, 34, 39, 38, 39, 38, 1, 17, 33, 17, 37, 33, 17, 33, 1, 23, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21,
+ 32, 31, 21, 23, 16, 14, 1,209, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14,253, 85, 4, 87,
+252, 36, 3, 96,252,160, 1, 72, 31, 21, 23, 15, 14, 14, 15, 23, 21, 31, 32, 21, 23, 15, 15, 15, 15, 23, 21, 1,244, 32, 21, 22,
+ 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20,253, 9, 4, 90,251,166,124, 3, 98, 0, 0, 0, 0, 5, 0, 60,
+ 0, 5, 4,149, 4, 95, 0, 23, 0, 47, 0, 71, 0, 75, 0, 79, 0, 0, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20,
+ 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 19, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38,
+ 39, 38, 19, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 1, 17, 33, 17, 37, 33,
+ 17, 33, 1, 23, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14,232, 14, 16, 23, 20, 32, 32, 21,
+ 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14,233, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22,
+ 16, 14,253, 85, 4, 87,252, 36, 3, 96,252,160, 1, 72, 31, 21, 23, 15, 14, 14, 15, 23, 21, 31, 32, 21, 23, 15, 15, 15, 15, 23,
+ 21, 1, 12, 31, 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 1, 8, 32, 21, 22, 16, 14, 14, 15, 23,
+ 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20,253, 9, 4, 90,251,166,124, 3, 98, 0, 6, 0, 60, 0, 1, 4,149, 4, 91, 0, 23,
+ 0, 47, 0, 71, 0, 95, 0, 99, 0,103, 0, 0, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34,
+ 39, 38, 39, 38, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 37, 52, 55, 54,
+ 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22,
+ 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 1, 17, 33, 17, 37, 33, 17, 33, 1, 23, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14,
+ 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 1,209, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14,
+254, 47, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 1,209, 14, 15, 23, 21, 32, 31, 21, 23,
+ 16, 14, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14,253, 85, 4, 87,252, 36, 3, 96,252,160, 3, 24, 32, 21, 23, 15, 15, 15, 15, 23,
+ 21, 32, 31, 21, 23, 15, 14, 14, 15, 23, 21,254, 75, 31, 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21,
+ 32, 31, 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 1,244, 32, 21, 23, 15, 15, 15, 15, 23, 21, 32,
+ 31, 21, 23, 15, 14, 14, 15, 23, 21,253, 8, 4, 90,251,166,124, 3, 98, 0, 0, 0, 7, 0, 60, 0, 5, 4,149, 4, 95, 0, 23,
+ 0, 47, 0, 71, 0, 95, 0,119, 0,123, 0,127, 0, 0, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6,
+ 35, 34, 39, 38, 39, 38, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 37, 52,
+ 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22,
+ 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 7, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6,
+ 35, 34, 39, 38, 39, 38, 1, 17, 33, 17, 37, 33, 17, 33, 1, 23, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31,
+ 21, 23, 16, 14, 1,209, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14,254, 47, 14, 16, 23, 20,
+ 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 1,209, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20,
+ 32, 32, 21, 22, 16, 14,233, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14,254, 62, 4, 87,252,
+ 36, 3, 96,252,160, 3, 28, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20,254, 76, 31, 21, 23, 15,
+ 14, 14, 15, 23, 21, 31, 32, 21, 23, 15, 15, 15, 15, 23, 21, 32, 31, 21, 23, 15, 14, 14, 15, 23, 21, 31, 32, 21, 23, 15, 15, 15,
+ 15, 23, 21, 1,244, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20,200, 31, 21, 23, 16, 14, 14, 16,
+ 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21,253,241, 4, 90,251,166,124, 3, 98, 0, 0, 0, 0, 8, 0, 60,255,252, 4,149,
+ 4, 86, 0, 23, 0, 47, 0, 71, 0, 95, 0,119, 0,143, 0,147, 0,151, 0, 0, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22,
+ 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 37, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34,
+ 39, 38, 39, 38, 17, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 1, 52, 55, 54,
+ 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 37, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22,
+ 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34,
+ 39, 38, 39, 38, 1, 17, 33, 17, 37, 33, 17, 33, 2,231, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23,
+ 16, 14,254, 48, 14, 15, 24, 20, 32, 32, 20, 23, 16, 14, 14, 15, 24, 20, 32, 32, 20, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22,
+ 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 1,209, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22,
+ 16, 14,254, 47, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 1,209, 14, 15, 23, 21, 32, 31,
+ 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14,253, 85, 4, 87,252, 36, 3, 96,252,160, 2, 43, 32, 21, 22, 16, 14, 14,
+ 15, 23, 21, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 32, 21, 22, 16, 14, 14, 15, 23,
+ 21, 1, 46, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21,254, 0, 32, 21, 22, 16, 14, 14, 15, 23,
+ 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 31, 21, 23, 16, 14, 14, 16, 23, 20, 2,
+ 64, 32, 21, 22, 16, 14, 14, 15, 23, 21, 32, 32, 21, 22, 16, 14, 14, 15, 23, 21,252,227, 4, 90,251,166,124, 3, 98, 0, 0, 0,
+ 0, 3, 0, 46, 0, 0, 4,163, 4,116, 0, 12, 0, 27, 0, 41, 0, 0, 1, 50, 4, 18, 16, 2, 4, 32, 36, 2, 16, 18, 36, 1,
+ 20, 30, 1, 32, 62, 1, 53, 52, 46, 1, 35, 34, 14, 1, 4, 52, 62, 1, 51, 50, 30, 1, 20, 14, 1, 35, 34, 38, 2,104,144, 1,
+ 16,154,150,254,240,254,217,254,240,150,153, 1, 16,254,152,133,240, 1, 7,240,133,137,240,128,127,242,135, 2,185, 26, 46, 25,
+ 24, 46, 26, 27, 45, 24, 25, 45, 4,116,147,254,238,254,214,254,242,151,151, 1, 14, 1, 42, 1, 18,147,253,198,132,240,132,132,
+240,132,131,243,130,130,243,156, 50, 46, 25, 25, 46, 50, 47, 24, 24, 0, 0, 0, 0, 4, 0, 46, 0, 5, 4,163, 4,121, 0, 12,
+ 0, 27, 0, 41, 0, 54, 0, 0, 1, 50, 4, 18, 16, 2, 4, 32, 36, 2, 16, 18, 36, 1, 20, 30, 1, 32, 62, 1, 53, 52, 46, 1,
+ 35, 34, 14, 1, 4, 52, 62, 1, 51, 50, 30, 1, 20, 14, 1, 35, 34, 38, 36, 50, 30, 1, 20, 14, 1, 35, 34, 46, 1, 52, 54, 2,
+104,144, 1, 16,154,150,254,240,254,217,254,240,150,153, 1, 16,254,152,133,240, 1, 7,240,133,137,240,128,127,242,135, 2,185,
+ 26, 46, 25, 24, 46, 26, 27, 45, 24, 25, 45,253,230, 49, 46, 26, 26, 45, 26, 24, 46, 26, 27, 4,121,147,254,238,254,214,254,242,
+151,151, 1, 14, 1, 42, 1, 18,147,253,198,132,240,132,132,240,132,131,243,130,130,243,156, 50, 46, 25, 25, 46, 50, 47, 24, 24,
+168, 24, 47, 50, 46, 25, 25, 46, 50, 47, 0, 0, 0, 2, 0, 46, 0, 0, 4,163, 4,116, 0, 12, 0, 26, 0, 0, 1, 50, 4, 18,
+ 16, 2, 4, 32, 36, 2, 16, 18, 36, 1, 50, 62, 1, 52, 46, 1, 35, 34, 14, 1, 20, 30, 1, 2,104,144, 1, 16,154,150,254,240,
+254,217,254,240,150,153, 1, 16, 1,178, 24, 45, 27, 26, 46, 24, 25, 46, 26, 27, 45, 4,116,147,254,238,254,214,254,242,151,151,
+ 1, 14, 1, 42, 1, 18,147,253,102, 24, 47, 50, 46, 25, 25, 46, 50, 47, 24, 0, 0, 3, 0, 46,255,246, 4,163, 4,106, 0, 12,
+ 0, 26, 0, 39, 0, 0, 1, 50, 4, 18, 16, 2, 4, 32, 36, 2, 16, 18, 36, 1, 50, 62, 1, 52, 46, 1, 35, 34, 14, 1, 20, 30,
+ 1, 36, 20, 30, 1, 51, 50, 62, 1, 52, 46, 1, 34, 6, 2,104,144, 1, 16,154,150,254,240,254,217,254,240,150,153, 1, 16, 1,
+178, 24, 45, 27, 26, 46, 24, 25, 46, 26, 27, 45,253,113, 26, 46, 24, 26, 45, 26, 26, 46, 49, 45, 4,106,147,254,238,254,214,254,
+242,151,151, 1, 14, 1, 42, 1, 18,147,253,102, 24, 47, 50, 46, 25, 25, 46, 50, 47, 24,121, 50, 46, 25, 25, 46, 50, 47, 24, 24,
+ 0, 1, 0, 82, 0, 7, 4,127, 0,150, 0, 3, 0, 0, 55, 33, 21, 33, 82, 4, 45,251,211,150,143, 0, 0, 0, 0, 2, 0, 82,
+ 0, 7, 4,127, 0,150, 0, 3, 0, 7, 0, 0, 55, 33, 21, 33, 37, 33, 21, 33, 82, 1,179,254, 77, 2,122, 1,179,254, 77,150,
+143,143,143, 0, 0, 2, 0,150,255,254, 4, 59, 4,187, 0, 9, 0, 26, 0, 0, 1, 54, 4, 55, 17, 6, 39, 38, 7, 47, 1, 35,
+ 39, 51, 21, 35, 21, 54, 23, 22, 55, 17, 6, 36, 7, 17, 35, 1, 37,135, 1,128,215,175,190,143,210, 16, 80, 61, 1,219, 61,205,
+176,204,188,231,254, 98,146, 78, 2, 27, 43,187, 35, 1,240, 33,102,129, 34, 2, 75, 43, 43, 21, 33,124,111, 53,253,155, 60,201,
+ 63,254, 49, 0, 0, 1, 0,115, 0, 5, 4, 94, 5, 30, 0, 16, 0, 0, 19, 35, 39, 51, 21, 35, 21, 54, 23, 22, 55, 17, 6, 36,
+ 7, 17, 35,182, 66, 1,236, 66,221,189,220,203,249,254, 66,157, 84, 4,240, 46, 46, 23, 35,133,120, 58,253,107, 65,217, 68,254,
+ 13, 0, 0, 0, 0, 1, 0, 39,255,255, 4,170, 4, 40, 0, 31, 0, 0, 1, 39, 7, 39, 55, 39, 55, 23, 55, 23, 7, 23, 55, 39,
+ 55, 23, 55, 23, 7, 22, 19, 39, 7, 31, 1, 7, 47, 1, 15, 1, 39, 55, 2, 37,237,132,140,132, 33, 98, 31,131,140,130,236,237,
+131,141,131, 31, 97, 32, 50, 24,214,236,126,227,131,192,128,126,192,131,225, 1,196,239,132,141,133, 31, 98, 31,132,142,132,239,
+238,133,142,133, 32, 98, 31, 80,254,230,220,240,127,193,132,228,127,127,228,132,193, 0, 0, 0, 0, 2, 0, 31, 0, 0, 4,178,
+ 4,211, 0, 15, 0, 82, 0, 0, 1, 20, 30, 1, 51, 50, 62, 1, 53, 52, 46, 1, 35, 34, 14, 1, 19, 21, 35, 6, 35, 34, 39, 53,
+ 35, 21, 35, 34, 38, 39, 38, 39, 7, 3, 23, 7, 48, 23, 22, 23, 22, 23, 17, 33, 53, 33, 53, 38, 39, 46, 1, 52, 62, 1, 51, 50,
+ 30, 1, 20, 6, 7, 6, 7, 21, 33, 21, 33, 17, 54, 55, 54, 55, 54, 55, 39, 55, 3, 39, 6, 7, 6, 7, 6, 1,252, 32, 58, 31,
+ 33, 57, 33, 34, 57, 32, 30, 58, 33,184, 6, 30, 32, 2, 3, 5, 6,137,251, 70, 13, 11, 71, 23,249, 70, 5, 59,107, 89, 95,254,
+207, 1, 49, 21, 21, 50, 55, 56,101, 53, 54,100, 58, 56, 49, 22, 22, 1, 41,254,215, 82, 76,107, 60, 2, 3, 71,250, 24, 71, 10,
+ 14, 69,126, 94, 3,255, 32, 58, 32, 32, 58, 32, 32, 59, 32, 32, 59,251,229, 1, 2, 1, 1, 1, 78, 71, 14, 13, 53, 1, 13,101,
+ 52, 5, 71, 40, 32, 6, 2, 76,105, 41, 7, 11, 28,101,110,102, 55, 55,102,110,101, 28, 11, 7, 41,105,253,182, 9, 27, 40, 71,
+ 3, 2, 52,101,254,243, 53, 13, 14, 71, 40, 29, 0, 4, 0,129, 0, 12, 4, 80, 4,109, 0, 4, 0, 9, 0, 57, 0, 89, 0, 0,
+ 37, 38, 39, 7, 22, 37, 23, 54, 55, 38, 1, 23, 54, 55, 51, 6, 7, 23, 22, 23, 14, 1, 7, 38, 47, 1, 6, 7, 39, 54, 55, 39,
+ 7, 22, 23, 7, 38, 39, 7, 6, 7, 34, 38, 39, 52, 63, 1, 38, 39, 51, 22, 23, 55, 1, 39, 9, 1, 7, 1, 21, 39, 1, 55, 9,
+ 1, 23, 1, 3, 38, 47, 1, 30, 1, 23, 55, 38, 39, 19, 23, 35, 23, 6, 7, 23, 62, 1, 55, 7, 6, 7, 4, 14, 36, 15, 7, 3,
+252,177, 6, 15, 37, 56, 2, 24,208, 56, 20, 69, 19, 70,117, 47, 1, 4, 45, 32, 54, 3,117, 78, 68, 29, 76, 50,183,182, 50, 76,
+ 29, 69, 78,117, 1, 47, 30, 56, 3, 48,117, 70, 19, 68, 21, 56,209,254,106, 24, 1,230, 1,231, 25,254, 85, 24, 1,189, 4,254,
+ 52,254, 53, 3, 1,191,239, 66, 37, 17, 31,121,133, 6, 92, 65,234, 27, 1,204, 64, 89, 7,132,121, 31, 16, 36, 70, 24, 10, 48,
+ 6, 61, 47, 6, 48, 10, 9, 1,159,228, 44, 45, 88, 55,136, 2, 48, 32, 25, 1, 3, 59,126, 42, 6, 50, 12, 37,218,218, 37, 12,
+ 50, 6, 42,126, 54, 8, 22, 27, 57, 2,136, 55, 88, 45, 44,228, 1,227,111,253,236, 2, 20,111,254, 3, 1, 27, 2, 16, 11,253,
+242, 2, 14, 11,253,244,254,243, 43, 70, 1, 57,100, 49, 12, 28, 41, 1, 12, 30,240, 40, 27, 12, 49,100, 57, 1, 67, 49, 0, 0,
+ 0, 5, 0,188,255,253, 4, 21, 5,236, 0, 3, 0, 22, 0, 42, 0, 67, 0, 84, 0, 0, 1, 22, 39, 38, 19, 21, 6, 35, 34, 39,
+ 53, 38, 55, 54, 55, 21, 6, 21, 6, 4, 7, 35, 38, 3, 36, 39, 38, 37, 21, 6, 21, 20, 4, 23, 6, 5, 39, 54, 39, 38, 39, 17,
+ 39, 19, 17, 39, 17, 36, 39, 54, 55, 54, 23, 7, 23, 6, 39, 38, 7, 6, 4, 23, 6, 5, 53, 36, 39, 54, 37, 39, 3, 46, 1, 53,
+ 52, 62, 1, 51, 50, 30, 1, 21, 20, 6, 7, 1,148, 68, 22, 36,250, 12, 28, 34, 4,182, 2, 6,158, 64, 4, 1, 70, 2, 14, 28,
+198,254,232, 6, 2, 1, 16,170, 2, 44, 2, 4,254,238, 2,188, 6, 2,194, 78, 78, 78,254,118, 4, 14,212, 70, 56,112, 94, 76,
+ 98, 50, 10, 4, 2,242, 6, 6,254,150, 1, 18, 2, 12,254,216, 78, 4, 22, 24, 24, 42, 22, 24, 42, 24, 24, 20, 4,181, 30, 43,
+ 11,251,148, 66, 29, 64, 48, 34, 65, 82, 25, 47, 24, 22, 48, 63,119, 65, 1,183, 37,111,100, 47, 68, 38, 51, 46, 89, 97, 81, 47,
+ 53, 35, 51, 36, 34,254,180, 19, 3, 1,254,129, 16, 1,117, 19,138,144, 5, 4, 73, 30, 25, 18, 39, 13, 64, 51, 47,117,138, 16,
+ 61, 32, 61, 35,110, 7, 1, 45, 11, 46, 24, 25, 46, 24, 24, 46, 25, 24, 46, 11, 0, 3, 0, 19, 0, 3, 4,190, 4,119, 0, 3,
+ 0, 7, 0, 51, 0, 0, 37, 11, 1, 22, 37, 11, 1, 22, 1, 51, 50, 29, 1, 20, 43, 1, 19, 6, 7, 14, 1, 35, 34, 46, 1, 55,
+ 19, 33, 19, 22, 14, 1, 34, 38, 39, 38, 39, 19, 35, 38, 61, 1, 52, 59, 1, 55, 23, 51, 55, 23, 51, 55, 4,128,207,207,207,254,
+ 68,207,207,207, 2,175,160, 42, 31,145,207, 2, 36, 35,130, 71, 70,129, 72, 2,204,253,250,205, 2, 72,129,141,130, 37, 35, 1,
+206,153, 24, 43,161, 40, 38,189, 97, 97,189, 39,196, 2,109,253,147, 57, 57, 2,109,253,147, 57, 2,249, 32, 18, 30,253,149, 51,
+ 46, 48, 53, 53, 95, 52, 2,105,253,151, 52, 95, 53, 53, 48, 46, 51, 2,107, 12, 22, 11, 35,116,116,242,242,116, 0, 2, 0, 22,
+ 0, 6, 4,187, 4,107, 0, 22, 0, 34, 0, 0, 1, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 38, 39, 46, 1, 7, 6,
+ 7, 39, 18, 1, 19, 35, 3, 35, 17, 35, 3, 35, 3, 35, 19, 1,214,138,118, 41, 37,151, 56, 27, 13, 32, 95, 94,168, 62, 25, 58,
+107,123,149, 90,172, 3,178, 71, 95, 63,215,103, 1,214, 64, 96, 72, 4, 44, 62, 6, 30,124, 58, 61, 43, 44,106, 44, 44, 60,134,
+ 54, 79, 47, 50,217, 51, 1, 51,254, 29,254, 60, 1, 98,254,158, 1, 98,254,158, 1,196, 0, 0, 0, 2, 0, 74,255,253, 4,135,
+ 5, 30, 0, 13, 0, 49, 0, 0, 0, 20, 30, 1, 51, 50, 62, 1, 52, 46, 1, 35, 34, 6, 19, 21, 51, 22, 54, 55, 20, 4, 7, 6,
+ 7, 35, 38, 55, 38, 36, 3, 30, 1, 55, 51, 53, 38, 39, 46, 1, 52, 62, 1, 50, 30, 1, 20, 6, 7, 6, 1,207, 44, 80, 42, 43,
+ 80, 44, 46, 78, 43, 41, 80,164, 5,133,198,151,254,100, 34, 47, 1, 37, 40, 2, 4,254, 77, 77,174,216,126, 6, 57, 53, 68, 76,
+ 77,137,145,139, 78, 77, 68, 50, 4, 41, 87, 78, 44, 44, 78, 87, 80, 42, 42,254,103,136, 1,168, 33,202,135,132,119,214,156,143,
+115,126, 1, 10, 1,215, 12,135, 6, 31, 38,136,151,138, 74, 74,138,151,136, 38, 28, 0, 0, 0, 0, 3, 0, 30, 0, 0, 4,179,
+ 4,211, 0, 63, 0, 71, 0, 79, 0, 0, 0, 50, 31, 1, 22, 23, 55, 22, 23, 7, 22, 23, 55, 22, 23, 7, 22, 20, 7, 23, 6, 7,
+ 39, 6, 7, 23, 6, 7, 39, 6, 15, 1, 6, 34, 47, 1, 38, 39, 7, 38, 39, 55, 38, 39, 7, 38, 39, 55, 38, 52, 55, 39, 54, 55,
+ 23, 54, 55, 39, 54, 55, 23, 54, 63, 1, 18, 32, 6, 16, 22, 32, 54, 16, 6, 20, 6, 34, 38, 52, 54, 50, 2, 69, 71, 35, 26, 57,
+ 54, 92, 62, 52, 50, 40, 28,112, 30, 13, 95, 4, 4, 95, 13, 30,112, 28, 40, 50, 52, 62, 92, 54, 57, 26, 35, 71, 35, 26, 58, 53,
+ 92, 62, 52, 50, 40, 28,112, 30, 13, 95, 4, 4, 95, 13, 30,112, 28, 40, 50, 52, 62, 92, 53, 58, 26,218,254,217,209,209, 1, 39,
+209,224, 78,109, 78, 78,109, 4,211, 4,128, 11, 25, 85, 37, 52,109, 43, 51, 13, 69, 74, 53, 30, 58, 29, 54, 74, 69, 13, 51, 43,
+109, 52, 37, 84, 24, 12,127, 5, 5,127, 12, 24, 84, 37, 52,109, 43, 51, 13, 69, 74, 54, 29, 58, 30, 53, 74, 69, 13, 51, 44,108,
+ 52, 37, 84, 24, 11,128,255, 0,210,254,217,208,208, 1, 39, 92,110, 77, 77,110, 77, 0, 0, 0, 0, 15, 0, 42, 0, 12, 4,167,
+ 5, 63, 0, 8, 0, 13, 0, 18, 0, 23, 0, 28, 0, 33, 0, 38, 0, 43, 0, 48, 0, 53, 0, 58, 0, 63, 0, 68, 0, 80, 0,145,
+ 0, 0, 0, 20, 30, 1, 51, 38, 55, 34, 6, 5, 22, 23, 55, 38, 39, 22, 23, 55, 38, 39, 22, 23, 55, 38, 39, 22, 7, 55, 38, 39,
+ 22, 7, 23, 54, 39, 6, 7, 23, 54, 37, 23, 54, 55, 6, 7, 23, 54, 55, 6, 7, 23, 54, 55, 6, 31, 1, 38, 55, 6, 23, 55, 38,
+ 55, 6, 23, 55, 38, 39, 6, 23, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 39, 53, 38, 39, 46, 1, 52, 62, 1, 51, 50, 30, 1,
+ 20, 6, 7, 6, 7, 51, 20, 35, 21, 22, 23, 22, 23, 54, 55, 4, 23, 6, 35, 38, 7, 22, 21, 20, 7, 6, 7, 3, 21, 6, 35, 34,
+ 39, 53, 3, 38, 39, 38, 53, 52, 55, 38, 7, 34, 39, 54, 37, 22, 23, 54, 55, 54, 2, 49, 15, 27, 16, 26, 26, 15, 28, 1,180, 97,
+ 36, 23, 79,127, 96, 32, 34, 78,105, 66, 14, 42, 52,108, 44, 1, 52, 34, 85, 2, 21, 52, 2, 55, 41, 44, 51, 40,252,224, 23, 36,
+ 97, 77, 35, 34, 31, 97, 84, 17, 42, 14, 66, 70, 13, 52, 1, 44, 61, 52, 52, 22, 3, 35, 89, 51, 44, 41, 6,253, 48, 66, 66, 48,
+ 47, 67, 66, 79, 3, 2, 16, 19, 19, 34, 18, 18, 33, 19, 18, 17, 1, 3, 1, 1, 45, 36, 3, 3, 70, 19, 1, 36, 70, 74,223, 70,
+ 49, 4, 46, 35, 45, 1, 10, 20, 22, 7, 2, 45, 35, 45, 2, 50, 77,223, 74, 70, 1, 36, 19, 71, 6, 8, 35, 5, 9, 30, 27, 16,
+ 56, 60, 15,103, 55, 42, 33, 50, 17, 85, 54, 29, 74, 37,110, 61, 17, 95, 67,127, 66, 7,110, 84,135, 62, 9,114, 89,119, 48, 23,
+100, 9, 34, 42, 55, 14, 93, 29, 54, 85, 36,117, 17, 61,110, 59,119, 7, 66,127, 76,122, 9, 62,135, 92,101, 23, 48,119, 90, 51,
+ 67, 46, 49, 66, 66, 49, 46, 67, 40, 78, 1, 2, 9, 34, 37, 34, 18, 18, 34, 37, 34, 9, 2, 1, 1, 77, 8, 35, 3, 3,112, 46,
+ 5, 80,143, 22, 22, 17, 18, 65, 46, 36, 7,253, 59, 81, 19, 25, 87, 2,185, 7, 36, 46, 65, 15, 15, 28, 23,142, 80, 5, 45,123,
+ 9, 8, 34, 0, 0, 15, 0, 82, 0, 11, 4,127, 4,199, 0, 15, 0, 26, 0, 38, 0, 46, 0, 70, 0, 82, 0,138, 0,150, 0,158,
+ 0,166, 0,178, 0,186, 0,194, 0,202, 0,214, 0, 0, 1, 50, 30, 1, 21, 20, 14, 1, 35, 34, 46, 1, 53, 52, 62, 1, 7, 38,
+ 39, 6, 7, 6, 22, 55, 54, 55, 38, 37, 6, 7, 22, 23, 22, 55, 54, 39, 38, 39, 6, 39, 22, 21, 20, 7, 54, 55, 38, 39, 38, 39,
+ 38, 39, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 54, 55, 54, 55, 54, 53, 52, 55, 22, 23, 22, 23, 54, 55, 54, 39, 38, 7,
+ 6, 5, 55, 62, 1, 51, 50, 22, 23, 21, 54, 23, 22, 23, 22, 21, 20, 7, 6, 7, 51, 22, 23, 22, 21, 20, 7, 14, 1, 39, 35, 6,
+ 7, 6, 35, 34, 39, 38, 39, 6, 38, 39, 38, 53, 52, 55, 54, 55, 38, 39, 38, 53, 52, 55, 54, 55, 54, 5, 38, 39, 38, 35, 34, 7,
+ 6, 7, 22, 23, 54, 23, 6, 7, 22, 23, 22, 23, 38, 37, 6, 7, 54, 55, 54, 55, 38, 39, 38, 39, 38, 7, 6, 23, 22, 23, 54, 55,
+ 54, 7, 6, 7, 22, 23, 38, 53, 52, 23, 22, 23, 54, 55, 38, 39, 38, 23, 22, 23, 54, 55, 6, 7, 6, 7, 6, 7, 22, 23, 22, 51,
+ 50, 55, 54, 55, 38, 2,104, 16, 29, 16, 16, 29, 16, 16, 29, 16, 16, 29,183, 64, 57,104, 41, 44, 41, 82, 80,124, 12, 1,136, 5,
+ 11,124, 80, 82, 21, 21, 45, 42,103, 58, 62, 2, 2, 47, 42, 42, 89, 38, 40, 41, 40, 40, 39, 41, 38, 1, 1, 38, 41, 39, 41, 40,
+ 40, 41, 37, 3, 20, 12, 5, 64, 57,102, 43, 46, 21, 21, 84, 82,254, 34, 1, 28, 96, 51, 51, 96, 27,138, 92, 95, 26, 9, 28, 46,
+110, 1,112, 44, 27, 9, 26,183,140, 1, 27, 48, 48, 52, 52, 49, 47, 28,139,184, 25, 9, 26, 44,112,110, 44, 28, 9, 26, 93, 93,
+ 1,194, 22, 38, 38, 40, 41, 38, 38, 21, 69, 69, 69, 74, 48, 51, 28, 29, 27, 27, 4,254,217, 7, 5, 27, 28, 28, 28, 50, 87,121,
+ 81, 84, 20, 22, 46, 44,100, 57, 64, 5, 7, 46, 42, 42, 46, 1, 46, 5, 7, 49, 50, 28, 28, 29,174, 51, 48, 8, 4, 26, 28, 29,
+ 73, 68, 69, 21, 37, 38, 42, 42, 37, 38, 21, 70, 2,166, 15, 30, 17, 16, 28, 17, 17, 28, 16, 17, 30, 15,176, 43, 46, 83, 69, 70,
+ 69, 3, 3, 46, 73, 77, 77, 73, 46, 3, 3, 34, 35, 70, 69, 83, 46,136, 32, 33, 31, 32, 31, 32, 34, 59, 24, 23, 23, 21, 21, 23,
+ 23, 24, 45, 48, 46, 45, 25, 23, 23, 21, 21, 23, 23, 25, 45, 46, 48,217, 73, 77, 43, 46, 82, 69, 70, 36, 36, 4, 4, 8, 2,145,
+156,156,145, 2, 49, 1, 2, 46, 16, 22, 37, 50, 83, 95, 96, 81, 50, 37, 22, 16, 45, 4, 49,143, 79, 81, 81, 79,143, 50, 5, 45,
+ 16, 22, 36, 51, 81, 96, 95, 82, 51, 38, 21, 16, 46, 2, 1, 62,131, 71, 73, 73, 71,131, 26, 34, 34, 13, 21, 23, 15, 16, 17, 16,
+ 55, 52, 52, 55, 16, 17, 16, 15, 23, 35, 46, 4, 4, 36, 36, 70, 69, 82, 47, 43, 76,127, 31, 34, 32, 31, 32, 31, 33,174, 55, 53,
+ 20, 24, 14, 17, 16, 47, 24, 20, 53, 55, 17, 16, 17, 37, 34, 27,128, 73, 74, 74, 73,128, 27, 0, 0, 7, 0, 42,255,254, 4,167,
+ 5, 26, 0, 11, 0, 20, 0, 29, 0, 41, 0,112, 0,126, 0,140, 0, 0, 1, 20, 23, 54, 55, 38, 39, 54, 55, 38, 39, 6, 5, 52,
+ 38, 21, 6, 21, 22, 23, 54, 37, 6, 23, 54, 55, 46, 1, 39, 6, 5, 52, 39, 6, 7, 22, 23, 6, 7, 22, 23, 54, 3, 38, 7, 6,
+ 7, 38, 39, 54, 55, 22, 23, 54, 55, 38, 53, 52, 63, 1, 21, 22, 21, 20, 7, 30, 1, 23, 54, 55, 22, 23, 6, 7, 38, 39, 38, 7,
+ 22, 23, 22, 20, 7, 6, 7, 22, 23, 6, 35, 38, 39, 6, 7, 6, 7, 35, 38, 39, 53, 38, 39, 6, 7, 34, 39, 54, 55, 38, 39, 38,
+ 52, 55, 54, 6, 20, 30, 1, 51, 50, 62, 1, 52, 46, 1, 35, 34, 6, 55, 50, 30, 1, 20, 14, 1, 35, 34, 46, 1, 52, 62, 1, 2,
+154, 34, 48, 39, 45, 8, 3, 44, 32, 41, 42,255, 0, 35, 39, 7, 48, 19, 1,163, 6, 20, 53, 3, 3, 37, 1, 34,255, 0, 42, 37,
+ 37, 44, 3, 12, 41, 44, 44, 34,232, 71, 26, 28, 78, 89, 2, 2,160,148, 73, 39, 43, 34,144, 1,143, 34, 36, 40, 5, 74,147,161,
+ 1, 2, 89, 78, 28, 18, 79, 23, 17, 50, 49, 21, 28, 30, 44, 1, 12, 57, 44, 52, 61, 83, 22, 28, 28, 77, 58, 55, 44, 58, 12, 1,
+ 45, 30, 28, 20, 49, 50, 17, 45, 91,165, 91, 90,165, 91, 93,166, 87, 88,166,254, 73,139, 79, 77,139, 75, 76,139, 77, 78,140, 2,
+ 50,142,147, 13, 31, 89,123,149, 92, 25, 13, 98,179, 67, 87, 1, 68, 74,103, 65, 66, 99,112, 55, 76, 94, 66, 77, 1, 76, 48,148,
+ 98, 11, 27, 92,149,117, 93, 33, 13,147, 1, 64, 82, 37, 75, 2, 2,108,104, 2, 6,104, 22, 15, 79, 43,119,213, 1, 1,213,119,
+ 43, 79, 11, 23, 3,104, 6, 2,104,108, 2, 2, 75, 36, 80, 27, 30, 90,192, 88, 39, 31, 64, 68, 10, 48, 58, 41, 19, 30,119,119,
+ 30, 1, 18, 42, 59, 48, 10, 69, 65, 30, 38, 88,192, 90, 30,119,180,165, 91, 91,165,180,167, 91, 91, 71, 74,140,152,138, 77, 77,
+138,152,140, 74, 0, 4, 0, 34, 0, 2, 4,175, 4, 40, 0, 7, 0, 13, 0, 21, 0, 37, 0, 0, 1, 51, 1, 21, 33, 39, 35, 0,
+ 23, 1, 21, 33, 53, 0, 7, 50, 21, 2, 35, 34, 3, 54, 19, 50, 30, 1, 21, 20, 14, 1, 35, 34, 46, 1, 53, 52, 62, 1, 2,111,
+ 5, 2, 58,251,129, 6, 6, 2, 53, 16,254, 40, 3,183,254, 54, 14, 55, 37, 18, 16, 39, 18, 36, 14, 26, 15, 14, 27, 14, 14, 26,
+ 15, 15, 26, 4, 40,251,225, 6, 6, 4, 7,110,252,170, 12, 6, 3, 72,138, 48,254, 76, 1,186, 42,253,231, 14, 25, 15, 15, 25,
+ 14, 14, 25, 15, 15, 25, 14, 0, 0, 1, 0,136, 0, 8, 4, 73, 5, 34, 0, 19, 0, 0, 1, 51, 23, 21, 1, 20, 51, 4, 21, 23,
+ 1, 39, 53, 0, 53, 52, 35, 36, 47, 1, 4, 42, 12, 19,253,220, 80, 1, 82, 7,252,198, 12, 2, 54,104,254,193, 14, 6, 5, 34,
+ 19, 6,254, 38, 62, 73, 12, 62,253,170, 19, 6, 2, 12, 11, 62, 65, 15, 62, 0, 0, 1, 0,243, 0, 0, 3,223, 5,216, 0, 5,
+ 0, 0, 1, 33, 19, 3, 33, 3, 1,174, 1,117,188,188,254,139,187, 5,216,254,137,251,159, 4, 97, 0, 0, 0, 0, 1, 0,222,
+ 0, 0, 3,243, 4,193, 0, 19, 0, 0, 1, 22, 21, 20, 7, 3, 33, 3, 38, 53, 52, 55, 54, 39, 35, 53, 33, 23, 7, 22, 3, 43,
+200, 7,193,254,123,192, 8,200,104, 6, 95, 1,129, 1, 97, 1, 3,246, 54,145, 26, 29,253, 8, 2,248, 31, 27,142, 54, 21,109,
+ 72, 72, 1,109, 0, 3, 0, 46, 1,114, 4,163, 3,243, 0, 90, 0,121, 0,153, 0, 0, 1, 39, 35, 34, 39, 38, 7, 6, 21, 20,
+ 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 50, 31, 1, 22, 51, 50, 55, 54, 55,
+ 54, 55, 54, 39, 38, 39, 38, 39, 38, 47, 1, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 50, 22, 23, 22, 23, 22, 21, 20,
+ 7, 6, 7, 6, 7, 6, 23, 22, 31, 1, 33, 50, 23, 22, 23, 33, 23, 37, 22, 51, 50, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39,
+ 38, 39, 38, 35, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 30, 1, 19, 38, 35, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22,
+ 23, 22, 51, 50, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38, 2,203,151, 80,122, 20, 30, 2, 1, 7, 9, 18, 16, 25, 20, 30,
+ 25, 26, 25, 18, 15, 16, 13, 9, 9, 17, 17, 25, 20, 30, 24, 26, 44, 68, 64, 26, 9, 16, 13, 13, 2, 2, 3, 2, 9, 8, 16, 55,
+ 59, 43, 26, 18, 20, 10, 14, 9, 9, 18, 19, 22, 25, 50, 51, 18, 22, 9, 13, 9, 6, 9, 12, 2, 4, 24, 29, 77, 57, 1, 22,163,
+ 56, 71, 12,254, 41,149,253, 58, 14, 14, 17, 12, 14, 9, 12, 3, 4, 9, 7, 10, 13, 13, 17, 12, 14, 14, 15, 9, 9, 5, 4, 9,
+ 7, 21,214, 13, 16, 20, 8, 15, 9, 12, 3, 4, 9, 7, 10, 11, 15, 15, 14, 17, 11, 15, 9, 11, 3, 5, 10, 7, 10, 8, 1,114,
+145, 4, 6, 10, 5, 17, 12, 16, 23, 17, 15, 9, 8, 10, 10, 18, 14, 26, 20, 27, 26, 20, 23, 16, 16, 9, 8, 10, 18, 27, 2, 3,
+ 9, 11, 5, 5, 17, 16, 13, 14, 13, 48, 24, 17, 11, 17, 19, 21, 26, 21, 26, 20, 23, 17, 17, 7, 8, 21, 17, 21, 20, 25, 23, 24,
+ 21, 17, 8, 12, 5, 9, 15, 19, 76, 58, 22, 29, 53,146, 85, 6, 4, 5, 7, 9, 12, 12, 12, 9, 17, 12, 9, 12, 5, 6, 4, 5,
+ 7, 9, 12, 12, 12, 10, 16, 12, 20, 1,231, 7, 4, 5, 7, 11, 10, 12, 12, 11, 15, 12, 10, 9, 7, 6, 3, 5, 8, 10, 10, 12,
+ 13, 10, 15, 13, 10, 7, 0, 0, 0, 3, 0, 46, 1, 92, 4,163, 4, 11, 0, 25, 0,114, 0,140, 0, 0, 18, 50, 54, 55, 54, 55,
+ 54, 53, 52, 39, 38, 39, 46, 1, 34, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 1, 5, 6, 35, 34, 39, 37, 7, 14, 1, 21, 20,
+ 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 59, 1, 50, 55, 62, 1, 55,
+ 54, 52, 39, 46, 1, 39, 38, 43, 1, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 50, 23, 22, 23, 22, 23, 22, 21,
+ 20, 7, 6, 21, 20, 22, 31, 1, 37, 54, 51, 50, 23, 36, 34, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 30, 1, 50, 54, 55, 54, 55,
+ 54, 53, 52, 39, 38, 39, 38,172, 35, 28, 12, 13, 6, 6, 6, 6, 13, 12, 28, 35, 28, 12, 13, 6, 6, 6, 6, 13, 12, 2, 64, 1,
+210, 33, 82, 60,165,254,237, 79,113, 60, 8, 5, 11, 10, 21, 17, 30, 24, 59, 25, 25, 21, 20, 12, 10, 10, 11, 21, 16, 30, 25, 29,
+ 51, 64, 77, 20, 28, 9, 9, 9, 9, 28, 20, 74, 67, 51, 29, 25, 30, 16, 21, 11, 10, 10, 12, 20, 21, 25, 25, 59, 24, 30, 17, 21,
+ 10, 11, 5, 8, 60,113, 79, 1, 19,165, 60, 82, 33,252, 45, 35, 28, 12, 13, 6, 6, 6, 6, 13, 12, 28, 35, 28, 12, 13, 6, 6,
+ 6, 6, 13, 12, 1,152, 10, 10, 11, 11, 12, 14, 14, 12, 11, 11, 9, 11, 11, 9, 11, 11, 12, 14, 14, 12, 11, 11, 10, 1, 18,190,
+ 47, 65,110, 33, 47, 10, 10, 6, 17, 12, 19, 26, 23, 22, 19, 16, 12, 10, 10, 10, 18, 15, 26, 23, 26, 26, 23, 22, 19, 16, 12, 10,
+ 25, 7, 20, 14, 16, 12, 15, 15, 19, 7, 25, 10, 12, 16, 19, 22, 23, 26, 26, 23, 26, 16, 17, 10, 10, 10, 12, 15, 20, 22, 23, 26,
+ 19, 12, 16, 6, 11, 11, 46, 33,109, 66, 48, 95, 11, 9, 11, 11, 12, 14, 14, 12, 11, 10, 10, 11, 11, 10, 10, 11, 12, 14, 14, 12,
+ 11, 11, 9, 0, 0, 3, 0, 58, 1, 63, 4,151, 3,178, 0, 89, 0,120, 0,151, 0, 0, 1, 51, 7, 33, 6, 7, 6, 35, 33, 7,
+ 6, 7, 6, 21, 20, 23, 22, 23, 22, 21, 20, 7, 6, 7, 14, 1, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 63, 1, 54,
+ 55, 54, 55, 54, 55, 54, 39, 38, 39, 38, 39, 38, 35, 34, 15, 1, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 62, 1, 55, 54,
+ 51, 50, 23, 22, 23, 22, 23, 22, 21, 20, 23, 22, 55, 54, 59, 1, 37, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 51, 50,
+ 54, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38, 39, 38, 35, 34, 19, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38, 39, 38, 35, 34, 6,
+ 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 51, 50, 2,201,147,147, 1,205, 12, 69, 55,159,254,241, 57, 69, 34, 20, 14, 9,
+ 6, 8, 12, 9, 21, 18, 50, 49, 24, 22, 19, 19, 7, 8, 13, 8, 21, 18, 25, 43, 57, 54, 15, 8, 9, 2, 3, 2, 2, 13, 7, 21,
+ 5, 30, 62, 66, 43, 25, 24, 30, 19, 25, 16, 17, 9, 8, 12, 13, 35, 25, 25, 25, 29, 19, 25, 16, 17, 9, 6, 2, 4, 27, 17,122,
+ 79,254,111, 15, 10, 6, 11, 9, 4, 5, 9, 7, 16, 12, 16, 14, 29, 10, 11, 7, 8, 4, 4, 10, 5, 19, 11, 16, 14,180, 15, 10,
+ 6, 11, 9, 4, 5, 9, 10, 13, 12, 15, 15, 29, 10, 10, 7, 9, 4, 5, 9, 11, 13, 13, 14, 10, 3,178,142, 52, 28, 22, 57, 68,
+ 24, 14, 11, 3, 13, 8, 16, 23, 24, 18, 27, 19, 20, 17, 20, 7, 7, 17, 18, 21, 23, 21, 18, 29, 19, 20, 17, 10, 17, 23, 47, 13,
+ 13, 14, 15, 16, 6, 5, 10, 5, 7, 2, 27, 17, 10, 8, 9, 15, 16, 22, 22, 23, 24, 23, 22, 34, 10, 10, 8, 9, 15, 16, 22, 16,
+ 12, 19, 3, 10, 7, 4, 58, 6, 9, 6, 16, 14, 11, 14, 10, 12, 8, 6, 6, 4, 12, 10, 9, 12, 15, 13, 11, 10, 12, 8, 7, 5,
+ 4,254, 24, 6, 9, 5, 17, 13, 11, 15, 10, 11, 9, 8, 4, 3, 12, 9, 10, 12, 13, 12, 15, 9, 11, 9, 9, 3, 4, 0, 0, 0,
+ 0, 9, 0, 61, 1, 74, 4,148, 4, 3, 0, 90, 0,120, 0,150, 0,180, 0,210, 0,254, 1, 45, 1, 52, 1, 72, 0, 0, 1, 54,
+ 55, 38, 39, 38, 39, 38, 43, 1, 34, 39, 38, 39, 38, 39, 38, 52, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20,
+ 7, 22, 31, 1, 55, 54, 51, 50, 23, 22, 21, 20, 7, 13, 1, 22, 21, 20, 7, 6, 35, 34, 47, 1, 7, 6, 7, 22, 21, 20, 7, 6,
+ 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 59, 1, 50, 55, 54, 6, 50, 55, 54, 55, 54, 55,
+ 54, 53, 52, 39, 38, 39, 38, 39, 38, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 18, 50, 55, 54, 55, 54, 55, 54, 53,
+ 52, 39, 38, 39, 38, 39, 38, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 18, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55,
+ 54, 55, 54, 55, 54, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 2, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55,
+ 54, 55, 54, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 5, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 53, 52, 39, 38,
+ 39, 38, 39, 38, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 59, 1, 50, 23, 22, 23, 22, 23, 55, 54, 7, 45, 1,
+ 38, 35, 34, 15, 1, 6, 7, 6, 7, 6, 7, 6, 43, 1, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 50, 55, 54,
+ 55, 54, 55, 54, 53, 52, 39, 38, 53, 52, 55, 54, 37, 23, 22, 51, 50, 55, 37, 38, 20, 7, 6, 7, 6, 34, 39, 38, 39, 38, 52, 55,
+ 54, 55, 54, 50, 23, 22, 23, 1,157, 8, 5, 5, 8, 6, 17, 56, 63, 46, 31, 31, 25, 28, 23, 13, 13, 13, 11, 27, 19, 32, 29, 33,
+ 32, 30, 29, 24, 27, 9, 13, 5, 33, 97, 61,240,155, 63, 94, 39, 6, 21,254,161, 1, 95, 21, 6, 41, 92, 63,155,240, 61, 97, 33,
+ 5, 13, 13, 23, 25, 28, 33, 29, 35, 27, 28, 23, 29, 9, 13, 13, 11, 25, 19, 34, 29, 33, 46, 56, 63, 16,191, 20, 7, 8, 7, 6,
+ 3, 2, 2, 3, 6, 7, 8, 7, 20, 7, 8, 7, 7, 2, 2, 2, 2, 7, 7, 8, 7, 20, 7, 8, 7, 6, 3, 2, 2, 3, 6, 7,
+ 8, 7, 20, 7, 8, 7, 7, 2, 2, 2, 2, 7, 7, 8, 34, 34, 15, 14, 12, 13, 6, 6, 6, 6, 13, 12, 14, 15, 34, 15, 14, 12,
+ 13, 6, 6, 6, 6, 13, 12, 14, 15, 34, 15, 14, 12, 13, 6, 6, 6, 6, 13, 12, 14, 15, 34, 15, 14, 12, 13, 6, 6, 6, 6, 13,
+ 12, 14, 1, 12, 26,102, 27, 15, 8, 11, 8, 4, 9, 9, 18, 14, 26, 22, 50, 22, 22, 18, 17, 10, 9, 9, 9, 18, 14, 26, 22, 25,
+ 46, 63, 69, 21, 12, 16, 5, 24, 19,130, 1, 83, 1,161, 29, 64, 54,149,252,102, 12, 12, 16, 14, 19, 71, 61, 46, 25, 22, 26, 14,
+ 18, 9, 9, 9, 10, 17, 18, 22, 22, 50, 22, 26, 14, 18, 9, 9, 4, 8, 11, 9, 1, 21,197,149, 54, 64, 29,254,136,149, 3, 5,
+ 6, 6, 15, 6, 6, 5, 3, 3, 5, 6, 6, 15, 6, 6, 5, 2,152, 6, 8, 10, 5, 4, 7, 22, 11, 9, 23, 19, 29, 26, 66, 26,
+ 23, 27, 18, 12, 11, 11, 11, 21, 25, 23, 32, 27, 20, 13, 6, 41, 25, 95, 62, 57, 9, 12, 21, 8,143,142, 8, 26, 8, 8, 57, 62,
+ 95, 25, 41, 7, 16, 16, 32, 27, 29, 20, 22, 9, 11, 11, 11, 19, 24, 25, 37, 23, 31, 28, 24, 24, 19, 13, 11, 22, 6,207, 2, 4,
+ 5, 5, 5, 3, 5, 5, 3, 5, 5, 5, 3, 3, 3, 3, 6, 4, 5, 3, 5, 5, 4, 4, 5, 5, 4, 1,137, 3, 3, 6, 4, 5,
+ 3, 5, 5, 4, 4, 5, 5, 4, 2, 2, 4, 5, 5, 5, 3, 5, 5, 3, 5, 5, 5, 3,254, 73, 5, 5, 10, 11, 12, 12, 15, 15,
+ 12, 12, 11, 9, 6, 5, 5, 6, 9, 11, 12, 12, 15, 15, 12, 12, 11, 10, 5, 1,134, 5, 6, 9, 11, 12, 12, 15, 15, 12, 12, 11,
+ 10, 5, 5, 5, 5, 10, 11, 12, 12, 15, 15, 12, 12, 11, 9, 6, 63, 10, 42, 5, 3, 4, 5, 10, 7, 16, 10, 16, 22, 20, 18, 17,
+ 13, 12, 8, 8, 10, 15, 13, 22, 20, 22, 22, 20, 18, 17, 13, 11, 9, 23, 7, 9, 12, 6, 17, 12,186,133,170, 32, 59,100, 46, 21,
+ 20, 11, 9, 7, 24, 8, 11, 13, 17, 19, 19, 22, 23, 19, 22, 13, 15, 10, 8, 8, 11, 13, 18, 18, 19, 23, 16, 9, 17, 7, 14, 1,
+ 1, 63, 80, 60, 33,154, 30, 15, 6, 7, 4, 3, 3, 4, 7, 6, 15, 6, 6, 4, 4, 4, 4, 6, 0, 3, 0, 52, 0, 71, 4,157,
+ 4,180, 0,110, 0,128, 0,146, 0, 0, 1, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 51, 50, 55, 54, 55, 54, 55, 54, 53, 52,
+ 39, 38, 39, 38, 39, 38, 35, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 21, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51,
+ 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 46, 2, 53, 52, 55, 54, 55, 38, 53, 52, 55, 18, 51, 50,
+ 23, 22, 21, 20, 7, 6, 35, 34, 7, 6, 7, 6, 21, 20, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 23, 54, 55, 54, 55, 54, 55, 22,
+ 23, 22, 7, 6, 7, 6, 7, 6, 39, 38, 1, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 54, 55, 54, 53, 52, 1,122, 3, 1,
+ 7, 7, 8, 14, 15, 17, 81,107,100, 89, 87, 71, 74, 35, 35, 35, 34, 75, 69, 89, 88,101, 97, 91, 87, 71, 74, 35, 35, 35, 21, 32,
+ 78, 42, 41, 41, 39, 85, 79,103,103,113,113,104, 98, 84, 81, 43, 41, 41, 39, 85, 81,101,103,114,115,101, 30, 50, 26, 13, 10, 20,
+ 2, 78,133,123, 59, 5, 11, 26, 25, 6, 40, 31, 22, 50, 46, 12, 13, 16, 25, 39, 28, 13, 12, 55, 17, 30, 36, 18, 17, 2, 33, 5,
+ 13, 2, 7, 14, 20, 25, 27, 15, 20, 1, 47, 45, 16, 12, 15, 10, 22, 7, 21, 7, 42, 12, 21, 22, 1, 64, 4, 5, 17, 20, 21, 17,
+ 19, 13, 14, 8, 37, 37, 36, 72, 73, 86, 87, 99,103, 87, 83, 77, 70, 38, 37, 37, 36, 72, 73, 87, 87,103, 98, 88, 49, 46,111, 80,
+ 98,101,113,115,103, 96, 87, 80, 44, 43, 43, 41, 83, 81,102,100,118,111,103, 95, 87, 82, 42, 43, 43, 13, 48, 63, 35, 34, 32, 24,
+ 23, 12, 11,150,174, 1, 36, 6, 14, 41, 42, 50, 47, 31, 22, 91, 84, 71, 23, 16, 20, 22, 6, 33, 51, 30, 20, 40, 9, 24, 31, 45,
+ 41, 18, 28, 6, 15, 11, 35, 24, 37, 21, 23, 3, 5, 3, 3, 16, 12, 9, 36, 33, 39, 26, 28, 8, 7, 13, 40, 42, 48, 38, 0, 0,
+ 0, 6, 0, 37, 0, 63, 4,172, 4,201, 0, 15, 0, 28, 0, 44, 0, 74, 0,105, 0,137, 0, 0, 1, 38, 39, 38, 39, 55, 6, 21,
+ 20, 23, 22, 23, 22, 23, 22, 23, 19, 38, 39, 38, 34, 7, 6, 7, 19, 54, 51, 50, 23, 19, 23, 6, 7, 6, 7, 37, 54, 55, 54, 55,
+ 54, 55, 54, 53, 52, 38, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54,
+ 55, 54, 55, 19, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 30, 1, 51, 50, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38,
+ 39, 38, 39, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54,
+ 55, 54, 1, 36, 48, 24, 5, 3,223, 6, 14, 15, 26, 25, 36, 15, 6,182, 26, 34, 32, 78, 33, 33, 28, 53, 38, 41, 42, 38,102,224,
+ 2, 7, 24, 48,254,238, 10, 11, 36, 24, 27, 15, 14,211, 47, 19, 21, 16, 16, 9, 8, 8, 9, 16, 16, 21, 19, 47, 19, 20, 17, 17,
+ 8, 8, 8, 8, 17, 17, 20, 42,100, 93, 89, 74, 75, 36, 37, 37, 37, 74, 72,182,102,102, 92, 89, 74, 75, 36, 36, 36, 35, 76, 71,
+ 92, 90,104,116,106,101, 86, 84, 44, 43, 43, 40, 88, 82,105,105,117,115,107,100, 86, 84, 44, 42, 42, 40, 88, 81,105,106, 1,110,
+ 55, 60, 11, 12,189, 22, 26, 37, 34, 35, 27, 24, 16, 7, 1, 1, 59, 25, 15, 15, 15, 15, 25, 1, 34, 7, 7,254,136,189, 6, 17,
+ 60, 55, 98, 4, 4, 16, 24, 27, 35, 34, 37, 25, 88, 8, 9, 15, 18, 19, 21, 23, 22, 21, 19, 17, 16, 9, 8, 8, 9, 16, 17, 19,
+ 21, 22, 23, 21, 19, 18, 15, 9, 1,144, 38, 37, 74, 75, 89, 89,106,100, 91, 89, 74, 73, 77, 38, 37, 75, 74, 89, 89,102,106, 89,
+ 85, 79, 72, 39, 38, 75, 44, 42, 86, 83,104,103,121,114,106, 98, 89, 84, 43, 45, 45, 42, 85, 83,104,103,117,118,106, 98, 89, 83,
+ 45, 44, 0, 0, 0, 1, 0, 61, 0, 60, 4,148, 4, 91, 0, 45, 0, 0, 19, 53, 55, 39, 51, 23, 54, 55, 38, 3, 51, 23, 51, 21,
+ 35, 23, 51, 21, 35, 23, 51, 50, 23, 22, 20, 7, 6, 43, 1, 7, 51, 21, 35, 7, 51, 21, 35, 7, 35, 18, 55, 38, 39, 7, 35, 55,
+ 82, 27, 48, 75,110,109,215, 40,128, 92, 86,111, 64, 75,115, 70,114,198, 53, 36, 24, 24, 36, 53,198,114, 70,115, 75, 64,111, 86,
+ 92,128, 40,215,109,110, 75, 48, 2, 61, 30, 3,164,151, 10, 7,208, 1, 15,113, 60, 97, 60,149, 19, 13, 33, 13, 19,149, 60, 97,
+ 60,113, 1, 8,215, 8, 9,150,163, 0, 0, 0, 0, 5, 0, 63, 0,115, 4,146, 3,150, 0, 13, 0, 20, 0, 34, 0, 41, 0, 45,
+ 0, 0, 1, 37, 33, 5, 54, 55, 54, 55, 54, 50, 23, 22, 23, 22, 23, 5, 17, 5, 22, 21, 20, 13, 1, 33, 37, 6, 7, 6, 7, 6,
+ 34, 39, 38, 39, 38, 39, 37, 17, 37, 38, 53, 52, 1, 17, 33, 17, 2,223, 1, 79,252,117, 1, 79, 5, 6, 22, 28, 26, 63, 26, 33,
+ 17, 6, 36, 1, 71,254,185, 2,254,243,254,176, 3,139,254,176, 5, 5, 22, 28, 26, 63, 26, 28, 22, 5, 38,254,186, 1, 70, 2,
+254,111, 4, 83, 2,100,229,229, 7, 6, 21, 13, 11, 11, 15, 19, 7,129,221, 1,241,221, 13, 14, 15, 81,229,229, 6, 6, 21, 12,
+ 11, 11, 12, 21, 6,129,221,254, 15,220, 14, 15, 14,254, 96, 3, 35,252,221, 0, 0, 4, 1, 68, 0, 11, 3,141, 4,234, 0, 75,
+ 0,198, 0,217, 0,233, 0, 0, 1, 52, 55, 54, 63, 1, 54, 55, 50, 59, 1, 38, 39, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22,
+ 23, 22, 31, 1, 22, 23, 54, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 55, 54, 51, 50, 23, 22, 23, 22, 15, 1, 6, 31, 1, 22, 21,
+ 20, 7, 23, 20, 7, 6, 21, 20, 23, 33, 53, 52, 39, 38, 39, 38, 55, 54, 39, 38, 1, 38, 35, 34, 15, 1, 6, 15, 1, 6, 15, 1,
+ 39, 38, 47, 1, 38, 39, 38, 39, 38, 35, 34, 7, 6, 21, 20, 23, 22, 31, 2, 22, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 39, 38,
+ 47, 1, 38, 39, 38, 35, 34, 7, 6, 7, 22, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 21, 20, 23, 22, 23, 22, 23, 22, 21, 20,
+ 7, 38, 39, 38, 39, 38, 63, 1, 54, 39, 38, 39, 6, 35, 34, 39, 38, 39, 38, 35, 34, 23, 22, 23, 22, 31, 1, 22, 21, 7, 33, 39,
+ 52, 55, 54, 47, 1, 54, 53, 52, 39, 38, 55, 19, 54, 39, 1, 7, 22, 23, 22, 23, 22, 23, 22, 51, 50, 55, 54, 53, 52, 39, 38, 39,
+ 38, 7, 6, 7, 22, 23, 22, 51, 50, 55, 54, 53, 52, 39, 38, 47, 1, 1, 68, 31, 18, 14, 43, 17, 31, 2, 2, 3, 21, 34, 25, 16,
+ 28, 19, 22, 30, 13, 14, 40, 14, 60, 62, 31, 12, 12, 15, 5, 4, 9, 4, 10, 4, 1, 5, 30, 22, 33, 45, 24, 11, 1, 9, 2, 7,
+ 1, 2, 2, 3, 1, 3, 17, 3, 1,254, 64, 4, 7, 31, 40, 1, 2, 24, 15, 2, 19, 3, 32, 28, 4, 4, 1, 8, 29, 4, 18, 44,
+ 20, 8, 35, 14, 37, 62, 22, 16, 14, 11, 14, 7, 6, 24, 11, 15, 78,112, 78, 77, 3, 16, 4, 4, 18, 15, 4, 3, 38, 95, 42, 6,
+ 35, 24, 16, 10, 5, 4, 3, 7, 40, 33, 10, 7, 38, 41, 17, 12, 1, 44, 19, 20, 44, 8, 2, 23,102, 38, 5, 6, 11, 1, 6, 2,
+ 6, 6, 12, 23, 33, 11, 13, 19, 14, 40, 8, 3, 2, 8, 6, 3, 8, 75, 1, 1, 1, 95, 1, 10, 11, 1, 1, 2, 7, 5, 1, 9,
+ 1, 2,254, 90, 14, 29, 48, 45, 14, 3, 1, 14, 8, 9, 3, 2, 10, 4, 5, 89,105, 12, 2, 68, 31, 12, 9, 13, 7, 3, 10, 6,
+ 9, 99, 2,112, 45, 41, 5, 26, 76, 30, 9, 38,103, 75, 29, 49, 30, 22, 23, 26, 4, 10, 21, 91,154, 78, 30, 17, 14, 51, 36, 26,
+ 13,110, 47, 5, 9, 9, 34, 33, 24, 48, 21, 15,123, 73,246, 23, 34, 18, 29, 72, 30, 35,102, 24,109, 15,116, 50, 62,149, 15, 27,
+ 44, 55, 72, 31, 66, 73, 46, 2, 59, 47, 56, 91, 24, 44,160, 23, 5, 13, 9, 11, 81, 31, 91,122, 41, 12, 10, 9, 5, 9, 25, 46,
+ 22, 41,209, 83, 57, 76, 10, 7, 15, 3, 1, 16, 5, 6, 42, 69, 31, 3, 25, 18, 8, 6, 9, 18, 32, 26, 15, 9, 39, 43, 40, 29,
+ 52, 37, 26, 2, 40, 52, 23, 13, 32, 14, 5, 4, 13, 7, 42, 88, 13, 8, 19, 18, 62, 12, 9, 9, 4, 21, 3, 4, 10, 55, 3, 28,
+ 65, 41, 18,175, 8, 9,130,150, 48, 39, 45, 53, 55, 48, 43, 73, 59, 45, 37, 1, 10, 14, 42,254,167, 17, 35, 37, 40, 48, 10, 10,
+ 14, 13, 7, 8, 17, 19, 7, 4, 93, 15, 16, 39, 53, 46, 7, 14, 9, 8, 15, 14, 9, 4, 85, 0, 0, 8, 0, 45, 0,149, 4,164,
+ 3,252, 0, 6, 0, 57, 0, 76, 0,112, 0,123, 0,127, 0,137, 0,141, 0, 0, 19, 22, 55, 54, 53, 52, 39, 5, 34, 39, 38, 35,
+ 34, 7, 6, 43, 1, 34, 39, 15, 1, 55, 38, 53, 52, 63, 1, 54, 55, 54, 55, 54, 55, 54, 51, 50, 23, 55, 54, 51, 50, 23, 22, 21,
+ 7, 23, 22, 51, 50, 55, 51, 22, 21, 20, 7, 35, 53, 6, 37, 54, 55, 54, 55, 19, 39, 38, 35, 34, 7, 6, 15, 1, 22, 21, 20, 7,
+ 54, 37, 34, 47, 1, 7, 20, 7, 54, 55, 22, 21, 20, 7, 6, 35, 34, 7, 22, 21, 20, 7, 50, 55, 54, 51, 50, 23, 22, 51, 50, 55,
+ 54, 53, 52, 39, 6, 55, 22, 21, 20, 7, 21, 51, 54, 53, 52, 39, 5, 54, 55, 15, 1, 6, 21, 20, 23, 22, 23, 54, 53, 52, 15, 1,
+ 55, 38,169, 19, 15, 11, 12, 2,116, 33, 77, 35, 20, 27,108, 53, 23, 71, 59, 26, 64,188, 92, 5, 10, 50, 20, 18, 66, 88, 45, 48,
+ 25, 25, 37, 45,109, 32, 42, 27, 21, 9,135,145, 32, 28, 39, 4,161, 63, 44,177, 78,253,171, 24, 21, 6, 3,239, 26, 12, 22, 63,
+168, 39, 24, 14, 33, 31, 28, 2,159, 38, 17,173, 82, 59, 45, 62, 11, 26, 60, 92, 45, 17, 24, 14, 82, 53, 45, 54, 28, 69, 33, 34,
+ 36, 98, 31, 36, 18, 54, 36, 33,113, 34, 44,253,162, 59, 10,116, 64, 80, 34, 22, 31, 16,251, 35, 67, 5, 1,127, 2, 28, 22, 22,
+ 22, 12,223, 10, 3, 11, 6, 42, 70, 83,192, 13, 23, 18, 34,165, 68, 24, 88, 64, 33, 19, 9, 37,122, 36, 40, 18, 21,156, 96, 21,
+ 21, 93,129,148,106, 77, 26,166, 26, 80, 20, 11, 1, 10, 21, 10,166, 38, 79, 47, 43, 28, 64, 25, 6,252, 12,112, 95,117, 60, 2,
+ 30, 10, 15, 13, 11, 28, 1, 28, 51, 30, 32, 9, 8, 9, 4, 26, 68, 77, 75, 90, 5, 21, 82,100, 89, 76, 54, 68,149, 95, 89,171,
+ 66, 73,139, 53, 19, 46, 33, 22, 14, 2, 33, 39, 39,107, 71, 28, 26, 0, 0, 0, 0, 7, 0, 87, 0,132, 4,122, 4,166, 0, 21,
+ 0, 27, 0, 34, 0, 41, 0, 51, 0, 83, 0, 90, 0, 0, 1, 54, 55, 54, 53, 52, 47, 1, 6, 35, 20, 7, 6, 35, 20, 7, 23, 22,
+ 51, 50, 55, 54, 1, 63, 1, 15, 2, 19, 55, 1, 19, 37, 1, 55, 5, 1, 22, 53, 52, 39, 1, 0, 54, 53, 52, 39, 1, 7, 1, 22,
+ 51, 1, 54, 55, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 55,
+ 54, 23, 7, 1, 22, 51, 50, 39, 3,242, 7, 4, 5, 1, 48, 19, 24, 44, 44, 59, 18,192, 7, 6, 8, 12, 9,253, 40,124, 11,119,
+124, 11,107,215, 2, 6,149,253,228,253,251, 14, 1,105, 1,171, 53, 2,254, 46, 1, 85, 44, 5,254, 92, 92, 1,164, 14, 12,253,
+234, 10, 13, 12, 13, 11, 8, 11, 8, 6, 4, 5, 7, 8, 12, 11, 12, 12, 13, 12, 7, 11, 8, 5, 3, 4, 8, 8, 37,103, 1,210,
+ 9, 8, 46, 1, 1, 11, 6, 10, 13, 8, 4, 7,193, 18, 59, 44, 45, 22, 20, 48, 1, 5, 4, 2,106,123,119, 11,123,119, 1, 51,
+ 15,253,251,253,228,150, 2, 4,216, 17,254, 86, 1, 46, 8, 10, 1,210,253, 84, 44, 27, 12, 14, 1,165, 92,254, 91, 5, 2, 94,
+ 11, 9, 8, 4, 3, 6, 7, 11, 8, 11, 13, 12, 14, 10, 12, 8, 8, 4, 3, 6, 5, 13, 9, 11, 13, 11, 13,198, 11,254, 45, 1,
+ 53, 0, 0, 0, 0, 7, 0, 38, 0,224, 4,171, 2,196, 0, 19, 0, 25, 0, 32, 0, 39, 0, 45, 0, 69, 0, 76, 0, 0, 0, 52,
+ 39, 38, 39, 38, 47, 1, 20, 7, 22, 20, 7, 22, 21, 55, 54, 55, 54, 55, 5, 53, 39, 7, 21, 23, 3, 55, 33, 13, 1, 33, 39, 55,
+ 33, 54, 53, 52, 39, 33, 4, 52, 39, 33, 21, 33, 36, 52, 55, 54, 55, 62, 1, 50, 22, 23, 22, 23, 22, 20, 7, 6, 7, 14, 1, 34,
+ 38, 39, 38, 39, 23, 7, 33, 54, 53, 52, 39, 4, 3, 3, 2, 5, 3, 8,149, 15, 36, 36, 15,149, 8, 3, 5, 2,252,230, 67, 67,
+ 67,124,124, 2, 93, 1,170,254, 86,253,163,124,234, 1,236, 18, 25,253,226, 2, 86, 35,254, 27, 1,229,253,117, 3, 2, 5, 5,
+ 13, 14, 13, 5, 6, 2, 3, 3, 2, 6, 5, 13, 14, 13, 5, 5, 2,142, 57, 2, 30, 25, 18, 1,202, 17, 8, 7, 6, 5, 4, 90,
+ 23, 15, 40,102, 40, 14, 23, 89, 4, 5, 7, 7, 60,153, 80, 80,153, 80, 1, 0,142,242,241,142,213, 18, 16, 19, 18,225, 80, 17,
+114, 43, 28, 13, 12, 11, 10, 11, 11, 10, 11, 12, 13, 28, 13, 12, 10, 10, 12, 12, 10, 10, 12, 86, 72, 18, 20, 16, 18, 0, 0, 0,
+ 0, 7, 0, 87, 0,187, 4,122, 4,221, 0, 21, 0, 27, 0, 34, 0, 41, 0, 51, 0, 83, 0, 90, 0, 0, 1, 38, 39, 38, 35, 34,
+ 15, 1, 22, 21, 50, 23, 22, 21, 50, 23, 55, 54, 53, 52, 39, 38, 1, 39, 31, 2, 39, 7, 47, 1, 1, 37, 3, 1, 39, 23, 1, 54,
+ 53, 52, 7, 46, 1, 35, 34, 7, 1, 23, 1, 54, 53, 1, 38, 39, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 23,
+ 22, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 39, 38, 55, 1, 54, 35, 34, 7, 1, 3,242, 7, 9, 12, 8, 6, 7,192, 18, 59, 44,
+ 44, 24, 19, 48, 1, 5, 4,253, 26,119, 11,124,119, 11,136,161, 14, 2, 5, 2, 28,149,253,250, 15, 12, 1,210, 2, 53, 30, 44,
+ 27, 12, 14,254, 92, 92, 1,164, 5,253,163, 12, 8, 8, 4, 3, 5, 8, 11, 7, 12, 13, 12, 12, 11, 12, 8, 7, 5, 4, 6, 8,
+ 11, 8, 11, 13, 12, 13, 15, 1,169, 1, 46, 8, 9,254, 46, 4, 86, 7, 5, 4, 1, 48, 20, 22, 45, 44, 58, 19,193, 7, 4, 8,
+ 13, 10,253,163, 11,119,123, 11,119,173,160,216, 2, 5,149,253,229,253,250,192,104, 1,211, 10, 8, 46, 1,111, 44, 5,254, 91,
+ 92, 1,165, 14, 12,253,232, 12, 13, 11, 13, 11, 9, 13, 5, 6, 3, 4, 8, 8, 12, 10, 14, 12, 13, 11, 8, 11, 7, 6, 3, 4,
+ 8, 9,220, 1,170, 54, 2,254, 46, 0, 0, 0, 0, 2, 0, 59, 1, 43, 4,150, 3, 93, 0, 35, 0, 67, 0, 0, 18, 52, 39, 22,
+ 37, 5, 21, 37, 46, 1, 39, 38, 34, 7, 6, 7, 6, 7, 6, 20, 23, 22, 23, 22, 23, 22, 50, 55, 62, 1, 55, 37, 21, 5, 36, 7,
+ 54, 20, 7, 54, 5, 37, 5, 6, 7, 6, 34, 39, 38, 39, 38, 39, 38, 52, 55, 54, 55, 54, 55, 54, 50, 23, 22, 23, 5, 37, 4, 39,
+ 98, 38,224, 1,162, 1,215,254, 73, 4, 11, 13, 10, 23, 10, 11, 8, 8, 4, 5, 5, 6, 6, 8, 11, 10, 23, 10, 13, 11, 4, 1,
+183,254, 41,254, 94,224,116, 17,131, 1,156, 1, 78,254,241, 17, 20, 20, 47, 20, 21, 16, 17, 9, 8, 8, 9, 17, 16, 21, 20, 47,
+ 20, 20, 17, 1, 15,254,178,254,100,131, 1,201,247, 73, 3, 87,210, 63, 21, 6, 12, 7, 4, 4, 5, 8, 6, 13, 10, 24, 10, 14,
+ 5, 8, 4, 5, 5, 6, 12, 6, 22, 64,209, 86, 2,249,105, 68, 2, 86,141, 18, 16, 9, 9, 9, 9, 16, 17, 20, 21, 47, 20, 20,
+ 18, 16, 9, 8, 8, 9, 16, 19,141, 86, 3, 0, 0, 1, 0, 37, 1, 17, 4,172, 3, 27, 0, 38, 0, 0, 1, 37, 21, 5, 36, 7,
+ 54, 52, 39, 22, 37, 5, 21, 37, 38, 39, 38, 39, 38, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 50, 55, 54, 55,
+ 54, 2,232, 1,196,254, 4,254, 64,203, 41, 41,203, 1,192, 1,252,254, 60, 5, 13, 11, 15, 14, 34, 14, 15, 11, 13, 5, 7, 7,
+ 5, 13, 11, 15, 14, 34, 14, 15, 11, 13, 1,247, 23, 27,226, 93, 2, 78,184, 79, 3, 93,226, 27, 24, 14, 12, 12, 6, 7, 7, 6,
+ 12, 12, 14, 15, 17, 16, 15, 14, 12, 12, 6, 7, 7, 6, 12, 12, 0, 1, 0,152, 0,192, 4, 57, 4,124, 0, 28, 0, 0, 1, 50,
+ 23, 22, 51, 50, 55, 18, 55, 54, 51, 50, 22, 21, 20, 7, 0, 1, 6, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 1, 24, 34, 18, 35,
+ 15, 12, 12,245,210, 54,118, 28, 19, 29,254,174,254,224, 20, 62, 63, 12, 30, 40, 45, 61, 37, 2, 80, 56,106, 18, 1,138,243, 63,
+ 10, 8, 13, 35,254,106,254, 60, 32, 6, 13,121,134, 34, 36, 34, 22, 0, 0, 0, 0, 1, 0, 74, 0,114, 4,135, 4, 66, 0, 29,
+ 0, 0, 1, 50, 23, 22, 51, 50, 55, 18, 55, 54, 51, 50, 23, 22, 21, 20, 7, 0, 7, 6, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54,
+ 1, 7, 34, 18, 34, 15, 12, 12,246,209, 89, 84,111, 22, 10, 20,253,205,107, 37,133, 44, 48, 20, 50, 63, 61, 86, 2,142, 56,106,
+ 18, 1,105,153, 65, 7, 2, 20, 15, 24,253,123,195, 67, 23, 11,123,156,117, 43, 28, 39, 0, 0, 0, 1, 0,129, 0,113, 4, 80,
+ 4, 63, 0, 11, 0, 0, 9, 1, 7, 9, 1, 39, 9, 1, 55, 9, 1, 23, 2,219, 1,115,115,254,141,254,141,115, 1,115,254,141,
+115, 1,115, 1,116,115, 2, 88,254,140,114, 1,115,254,141,114, 1,116, 1,115,115,254,141, 1,115,114, 0, 0, 0, 1, 0, 64,
+ 0,188, 4, 81, 4,207, 0, 11, 0, 0, 9, 1, 7, 9, 1, 39, 9, 1, 55, 9, 1, 23, 3, 53, 1, 28,237,254,228,254,229,237,
+ 1, 28,254,228,237, 1, 27, 1, 28,237, 2,197,254,229,237, 1, 27,254,229,237, 1, 27, 1, 27,237,254,229, 1, 28,237, 0, 0,
+ 0, 1, 0,131,255,236, 4, 78, 4,190, 0, 66, 0, 0, 1, 50, 23, 22, 23, 54, 51, 50, 23, 22, 21, 20, 7, 6, 7, 22, 23, 22,
+ 21, 20, 15, 1, 22, 21, 20, 7, 6, 35, 34, 39, 38, 39, 6, 3, 6, 35, 34, 39, 38, 53, 52, 55, 54, 55, 18, 55, 38, 39, 38, 53,
+ 52, 55, 54, 51, 50, 23, 54, 55, 54, 51, 50, 23, 22, 23, 54, 55, 54, 3,201, 8, 13, 14, 14, 24, 14, 12, 21, 13, 18,169,159, 66,
+116, 10, 25, 26, 3, 17, 22, 9, 21, 17, 97,104,140,180, 26, 62, 29, 4, 41, 9, 4, 22,166,185, 99, 33, 7, 15, 15, 13, 12, 19,
+ 7, 11, 14, 23, 26, 8, 44, 72,115,166, 19, 4,190, 13, 13, 22, 42, 22, 14, 17, 22, 19,183,220,161,194, 17, 9, 19, 20, 18, 10,
+ 16, 25, 13, 14, 21,125,169,182,254,208, 44, 34, 23, 50, 65, 25, 11, 34, 1, 3,216,236,127, 28, 9, 11, 21, 21, 23, 14, 9, 13,
+ 24,137,123,149,166, 20, 0, 0, 0, 1, 0, 51,255,253, 4,158, 5, 43, 0, 81, 0, 0, 1, 50, 23, 22, 23, 54, 23, 22, 23, 22,
+ 21, 20, 7, 6, 3, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 6, 7, 6, 35, 34, 39, 38, 39, 6, 7, 6, 35, 6,
+ 39, 38, 39, 6, 35, 34, 39, 38, 53, 52, 55, 38, 39, 38, 53, 52, 55, 54, 55, 38, 39, 38, 53, 52, 55, 54, 51, 50, 23, 54, 55, 54,
+ 51, 50, 23, 22, 23, 54, 55, 54, 4, 0, 26, 23, 18, 7, 22, 9, 28, 13, 12, 14,211,206,130,129, 15, 26, 18, 32, 2, 12, 21, 28,
+ 32, 26, 7, 12, 31, 24, 20, 23, 78,106,201, 77, 15, 18, 17, 16, 13, 2, 17, 16, 22, 25, 32, 27, 8, 8, 16, 21,114,172,107, 87,
+ 19, 20, 14, 19, 23, 42, 1, 10, 20, 14, 38, 12, 92,132,202,218, 10, 5, 42, 26, 19, 51, 1, 5, 10, 12, 12, 18, 35, 14,192,254,
+239,179,142, 15, 22, 42, 23, 15, 2, 15, 30, 51, 21, 16, 9, 24, 24, 84,167,229,118, 22, 2, 33, 27, 12, 11, 26, 31, 15, 23, 40,
+ 2, 12, 21, 21, 18, 27,154,186,165,234, 53, 25, 22, 43, 28, 34, 12, 22, 44, 23,171,163,231,191, 10, 0, 0, 0, 0, 3, 0, 64,
+ 0, 5, 4,145, 4, 86, 0, 11, 0, 23, 0, 35, 0, 0, 1, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 17, 37, 33, 17, 33, 17, 33,
+ 17, 33, 17, 33, 17, 33, 3, 33, 21, 33, 17, 35, 17, 33, 53, 33, 17, 51, 3, 11,254,187,254,197, 1, 59, 1, 69, 1, 59,255, 0,
+ 1, 74,254,182,254, 69,254,182, 1, 74, 1,187,148, 1, 74,254,182,147,254,182, 1, 74,147, 2,208, 1, 60,254,196,254,187,254,
+197, 1, 59, 1, 69, 59,254, 69,254,182, 1, 74, 1,187, 1, 75,254, 33,148,254,183, 1, 73,148, 1, 75, 0, 0, 0, 1, 0, 86,
+ 0, 7, 4,123, 4, 6, 0, 11, 0, 0, 1, 33, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 2,247, 1,132,254,124,254,227,254,124,
+ 1,132, 1, 29, 2,143,254,238,254,139, 1,117, 1, 18, 1,118, 0, 2, 0, 57, 0, 6, 4,152, 4,102, 0, 11, 0, 15, 0, 0,
+ 1, 33, 21, 33, 17, 35, 17, 33, 53, 33, 17, 51, 3, 51, 53, 35, 2,194, 1,214,254, 42,180,254, 43, 1,213,180,179,178,178, 2,
+144,180,254, 42, 1,214,180, 1,214,253,119,178, 0, 2, 0, 48, 0, 0, 4,161, 4,114, 0, 3, 0, 15, 0, 0, 1, 33, 17, 33,
+ 37, 33, 17, 33, 17, 33, 17, 33, 17, 33, 17, 33, 1,209, 1, 47,254,209, 1, 48, 1,160,254, 96,254,207,254, 96, 1,160, 1, 49,
+ 1,161, 1, 47, 1,254,207,254, 96, 1,160, 1, 49, 1,160, 0, 0, 1, 0,155, 0, 3, 4, 41, 5, 30, 0, 11, 0, 0, 1, 33,
+ 21, 33, 17, 35, 17, 33, 53, 33, 17, 51, 2,203, 1, 94,254,162,210,254,162, 1, 94,210, 3,192,210,253, 22, 2,234,210, 1, 94,
+ 0, 2, 0,126, 0, 1, 4, 83, 5, 28, 0, 15, 0, 27, 0, 0, 1, 51, 23, 17, 33, 17, 33, 39, 17, 35, 39, 17, 33, 17, 33, 23,
+ 7, 17, 35, 17, 33, 21, 33, 17, 51, 17, 33, 53, 3, 76,131,131,254,250,254,188,131,131,132, 1, 7, 1, 68,131,175,193,254,250,
+ 1, 6,193, 1, 7, 4, 21,131,254,188,253,179,131, 1,202,131, 1, 68, 1, 7,132,218, 1, 6,254,250,193,253,179, 2, 77,193,
+ 0, 3, 0,144, 0, 4, 4, 65, 4,194, 0, 11, 0, 23, 0, 35, 0, 0, 1, 53, 33, 21, 35, 17, 51, 17, 33, 17, 51, 17, 39, 51,
+ 17, 35, 17, 33, 17, 35, 17, 51, 53, 33, 3, 51, 21, 35, 17, 35, 17, 35, 53, 51, 53, 51, 3, 6,254,197,245,245, 1, 59,245,175,
+245,245,254, 57,245,245, 1,199,140,245,245,175,245,245,175, 3,157,227,227,254,203,253,221, 2, 35, 1, 53, 65,254, 73,253,221,
+ 2, 35, 1,183,228,254,154,179,253,221, 2, 35,179,228, 0, 0, 0, 1, 0, 48, 0, 3, 4,161, 4,118, 0, 81, 0, 0, 1, 35,
+ 34, 7, 6, 7, 6, 7, 6, 21, 35, 17, 51, 20, 23, 22, 23, 22, 23, 22, 59, 1, 53, 52, 39, 38, 39, 38, 39, 38, 35, 53, 33, 21,
+ 34, 7, 6, 7, 14, 1, 29, 1, 51, 50, 55, 54, 55, 54, 55, 54, 53, 51, 17, 35, 52, 39, 38, 39, 38, 39, 38, 43, 1, 21, 20, 23,
+ 22, 23, 22, 23, 22, 51, 21, 33, 53, 50, 55, 54, 55, 62, 1, 53, 2, 47, 93, 76, 69, 68, 55, 51, 33, 28, 38, 38, 28, 31, 53, 52,
+ 71, 66, 79, 93, 28, 30, 54, 51, 72, 62, 83, 3,107, 83, 62, 72, 51, 56, 56, 93, 79, 66, 71, 52, 53, 31, 28, 38, 38, 28, 33, 51,
+ 53, 70, 69, 76, 93, 28, 30, 54, 51, 72, 62, 83,252,149, 83, 62, 72, 51, 56, 56, 2, 4, 29, 28, 56, 50, 73, 60, 85, 3,106, 84,
+ 60, 70, 54, 54, 30, 27, 93, 76, 69, 70, 54, 50, 33, 28, 38, 38, 28, 33, 50, 56,137, 76, 93, 27, 30, 54, 54, 70, 60, 84,252,150,
+ 85, 60, 73, 50, 55, 29, 29, 94, 76, 69, 70, 54, 50, 33, 28, 38, 38, 28, 33, 50, 56,137, 76, 0, 0, 8, 0, 71, 0, 2, 4,138,
+ 4,238, 0, 11, 0, 17, 0, 20, 0, 23, 0, 26, 0, 29, 0, 32, 0, 35, 0, 0, 1, 19, 33, 3, 19, 33, 11, 1, 33, 19, 3, 33,
+ 23, 7, 23, 33, 55, 47, 1, 7, 51, 31, 1, 55, 3, 7, 51, 5, 35, 23, 47, 1, 7, 19, 55, 35, 2,104,182, 1,108,182,182,254,
+148,182,182,254,149,182,182, 1,107, 48,135,135, 1, 13,135,135,135, 87,175,141, 88, 88, 88, 88,176,254,195,175, 87,228, 88, 88,
+ 88, 88,176, 4,238,254,196,254,198,254,197,254,197, 1, 59, 1, 59, 1, 58, 81,233,234,234,233,233,152, 81,152,152,254,198,153,
+ 81,152,233,153,153, 1, 59,152, 0, 1, 0, 31,255,236, 4,178, 4,127, 0, 67, 0, 0, 1, 53, 52, 39, 38, 53, 52, 55, 54, 50,
+ 23, 22, 21, 20, 7, 6, 29, 1, 51, 50, 55, 54, 51, 50, 23, 22, 20, 7, 6, 35, 34, 39, 38, 43, 1, 21, 20, 23, 22, 21, 20, 7,
+ 6, 34, 39, 38, 53, 52, 55, 54, 61, 1, 35, 34, 7, 6, 35, 34, 39, 38, 52, 55, 54, 51, 50, 23, 22, 51, 2, 67, 58, 33, 41, 42,
+ 91, 42, 41, 33, 58, 24,141, 92, 53, 89, 76, 36, 36, 36, 36, 76, 89, 53, 92,141, 24, 58, 33, 41, 42, 91, 42, 41, 33, 58, 24,141,
+ 92, 53, 89, 76, 36, 36, 36, 36, 76, 89, 53, 92,141, 2, 91, 24,141, 92, 53, 89, 76, 36, 36, 36, 36, 76, 89, 53, 92,141, 24, 58,
+ 33, 41, 42, 91, 42, 41, 33, 58, 25,141, 91, 53, 89, 76, 36, 37, 37, 36, 76, 89, 53, 91,141, 25, 58, 33, 41, 42, 91, 42, 41, 33,
+ 58, 0, 0, 0, 0, 1, 0, 28,255,239, 4,181, 4,137, 0,131, 0, 0, 1, 38, 39, 35, 6, 7, 6, 7, 14, 1, 35, 34, 38, 39,
+ 38, 39, 38, 52, 55, 54, 55, 62, 1, 51, 50, 22, 23, 22, 23, 22, 23, 51, 54, 55, 54, 55, 53, 38, 39, 38, 39, 46, 1, 53, 52, 54,
+ 55, 54, 55, 54, 50, 23, 22, 23, 30, 1, 21, 20, 6, 7, 6, 7, 6, 7, 21, 22, 23, 22, 23, 51, 54, 55, 54, 55, 62, 1, 51, 50,
+ 22, 23, 22, 23, 22, 20, 7, 6, 7, 14, 1, 35, 34, 38, 39, 38, 39, 38, 39, 35, 6, 7, 6, 7, 21, 22, 23, 22, 23, 30, 1, 21,
+ 20, 6, 7, 6, 7, 6, 34, 39, 38, 39, 46, 1, 53, 52, 54, 55, 54, 55, 54, 55, 53, 38, 2, 37, 12, 7,162, 1, 8, 15, 22, 25,
+ 62, 35, 34, 63, 24, 24, 14, 13, 13, 14, 24, 24, 63, 34, 35, 62, 25, 26, 11, 7, 2,162, 7, 12, 13, 16, 12, 15, 32, 23, 25, 26,
+ 26, 25, 25, 30, 30, 71, 30, 30, 25, 25, 26, 26, 25, 27, 28, 18, 9, 16, 13, 12, 7,162, 2, 7, 11, 26, 25, 62, 35, 34, 63, 24,
+ 24, 14, 13, 13, 14, 24, 24, 63, 34, 35, 62, 25, 22, 15, 8, 1,162, 7, 12, 13, 16, 9, 18, 28, 27, 25, 26, 26, 25, 25, 30, 30,
+ 71, 30, 30, 25, 25, 26, 26, 25, 23, 32, 15, 12, 16, 1,249, 13, 16, 12, 16, 32, 22, 26, 25, 25, 26, 24, 30, 31, 70, 30, 31, 24,
+ 25, 26, 26, 25, 26, 29, 17, 10, 16, 13, 12, 8,162, 2, 7, 15, 22, 25, 62, 35, 35, 62, 24, 24, 14, 13, 13, 14, 24, 24, 62, 35,
+ 35, 62, 25, 25, 12, 7, 2,162, 8, 12, 13, 16, 10, 17, 29, 26, 25, 26, 26, 25, 24, 31, 30, 70, 31, 30, 24, 26, 25, 25, 26, 22,
+ 32, 16, 12, 16, 13, 12, 8,161, 3, 7, 11, 26, 24, 63, 35, 34, 62, 25, 23, 14, 13, 13, 14, 23, 25, 62, 34, 35, 63, 24, 22, 15,
+ 8, 2,161, 8, 0, 1, 0, 26,255,237, 4,183, 4,138, 0,155, 0, 0, 1, 52, 39, 38, 39, 38, 39, 38, 39, 46, 1, 53, 52, 55,
+ 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 7, 6, 7, 6, 21, 50, 55, 54, 55, 54, 55,
+ 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 39, 38, 39, 38,
+ 35, 20, 23, 22, 23, 22, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55,
+ 54, 55, 54, 55, 54, 55, 54, 53, 34, 7, 6, 7, 6, 7, 6, 7, 14, 1, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54,
+ 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 23, 22, 23, 22, 2, 66, 15, 18, 28, 10, 12, 19, 7, 31, 30, 15, 17, 29, 24, 44, 35, 44,
+ 43, 37, 41, 27, 29, 17, 15, 15, 17, 29, 7, 20, 6, 15, 32, 14, 15, 51, 33, 44, 25, 10, 9, 14, 8, 30, 38, 38, 42, 45, 35, 39,
+ 29, 28, 18, 16, 16, 18, 28, 29, 39, 35, 45, 42, 38, 38, 30, 8, 14, 9, 10, 31, 38, 36, 48, 15, 20, 26, 9, 13, 19, 7, 30, 16,
+ 15, 15, 17, 29, 27, 41, 36, 87, 36, 41, 27, 29, 17, 15, 15, 16, 30, 7, 19, 13, 9, 30, 16, 15, 48, 36, 39, 30, 10, 9, 14, 8,
+ 29, 76, 43, 44, 36, 38, 29, 26, 20, 17, 17, 18, 28, 29, 38, 36, 44, 47, 34, 38, 29, 8, 14, 4, 15, 31, 38, 36, 2, 98, 51, 34,
+ 41, 26, 11, 9, 14, 7, 29, 77, 42, 44, 37, 38, 29, 24, 22, 16, 16, 19, 27, 29, 38, 37, 44, 46, 34, 39, 29, 7, 14, 4, 16, 30,
+ 37, 37, 48, 15, 21, 25, 10, 12, 19, 8, 29, 16, 16, 16, 16, 29, 28, 41, 36, 87, 35, 41, 28, 29, 17, 15, 15, 16, 30, 8, 19, 12,
+ 10, 30, 16, 15, 52, 33, 44, 25, 10, 9, 14, 7, 30, 38, 38, 43, 44, 36, 39, 29, 27, 18, 16, 16, 18, 27, 29, 39, 36, 44, 43, 38,
+ 38, 30, 7, 14, 9, 10, 31, 38, 36, 49, 15, 16, 30, 11, 12, 18, 8, 30, 31, 15, 17, 29, 25, 44, 35, 44, 43, 36, 41, 28, 29, 16,
+ 16, 16, 16, 29, 8, 20, 6, 15, 31, 15, 15, 0, 0, 1, 0, 23,255,229, 4,186, 4,136, 1, 48, 0, 0, 1, 50, 23, 22, 23, 22,
+ 23, 22, 21, 20, 7, 6, 7, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 14, 1, 7, 6, 35, 34, 39, 38, 39, 38, 39,
+ 21, 51, 38, 39, 38, 39, 38, 53, 52, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 54, 55, 54, 51, 50,
+ 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 22, 23, 22, 21, 20, 6, 7, 6, 7, 6, 35, 34, 39,
+ 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 35, 21, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7,
+ 6, 7, 6, 35, 34, 39, 38, 39, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 6,
+ 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 50, 22, 23, 22, 23, 53, 35, 22, 23, 22, 23, 22, 21,
+ 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 52,
+ 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20,
+ 7, 6, 7, 6, 7, 51, 53, 6, 7, 6, 7, 6, 35, 34, 39, 46, 1, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23,
+ 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 2,104, 23, 18, 21, 14, 15, 8, 8, 8, 8, 15, 8, 15, 19, 22, 23, 18, 20, 15, 15,
+ 8, 8, 8, 8, 31, 19, 19, 22, 23, 18, 19, 15, 11, 8,226, 13, 11, 15, 8, 9, 17, 15, 15, 20, 19, 22, 22, 19, 20, 15, 15, 8,
+ 9, 9, 6, 7, 15, 20, 19, 21, 25, 17, 19, 16, 14, 9, 8, 8, 9, 14, 17, 18, 20, 22, 21, 19, 20, 15, 7, 6, 9, 17, 15, 13,
+ 22, 19, 22, 19, 22, 20, 15, 15, 8, 9, 9, 8, 15, 11, 13,225, 7, 11, 13, 22, 18, 23, 22, 18, 20, 15, 15, 8, 8, 8, 8, 15,
+ 14, 21, 17, 23, 20, 21, 15, 9, 15, 8, 9, 9, 8, 15, 14, 21, 18, 45, 18, 21, 14, 15, 8, 9, 9, 8, 15, 9, 15, 18, 23, 23,
+ 17, 21, 14, 15, 8, 8, 8, 8, 15, 15, 20, 18, 22, 21, 40, 15, 11, 7,225, 13, 10, 17, 7, 8, 8, 8, 16, 16, 18, 20, 21, 23,
+ 19, 19, 15, 15, 9, 8, 8, 6, 8, 17, 18, 19, 22, 22, 19, 20, 15, 14, 9, 8, 8, 9, 14, 13, 22, 19, 22, 22, 19, 20, 15, 8,
+ 6, 8, 8, 9, 15, 14, 20, 19, 23, 21, 20, 19, 15, 16, 8, 8, 8, 9, 15, 10, 13,225, 8, 11, 15, 19, 18, 23, 22, 18, 20, 31,
+ 7, 9, 9, 7, 16, 14, 21, 17, 23, 23, 18, 15, 9, 16, 8, 8, 8, 8, 16, 14, 20, 18, 4,135, 8, 9, 14, 15, 20, 19, 23, 21,
+ 19, 20, 15, 7, 6, 8, 8, 9, 14, 15, 20, 19, 22, 24, 18, 19, 30, 9, 7, 7, 9, 15, 10, 13,224, 7, 11, 15, 19, 18, 23, 22,
+ 39, 15, 15, 9, 7, 7, 9, 15, 15, 20, 18, 23, 21, 20, 15, 8, 15, 8, 8, 8, 8, 15, 14, 21, 18, 22, 23, 19, 20, 14, 17, 7,
+ 7, 7, 9, 15, 9, 15, 19, 21, 20, 42, 14, 13, 10, 9, 9, 7, 16, 15, 20, 18, 23, 23, 17, 19, 16, 10, 8,225, 14, 10, 12, 11,
+ 8, 8, 9, 14, 16, 20, 19, 21, 22, 19, 20, 16, 14, 9, 8, 8, 6, 7, 14, 20, 19, 22, 22, 20, 19, 15, 15, 9, 8, 8, 9, 15,
+ 15, 19, 20, 22, 22, 19, 20, 14, 7, 6, 8, 8, 9, 14, 16, 20, 19, 22, 21, 19, 20, 16, 14, 9, 8, 17, 14, 10, 14,224, 7, 10,
+ 18, 17, 18, 23, 22, 19, 20, 14, 17, 7, 8, 8, 8, 16, 14, 20, 18, 23, 22, 19, 15, 9, 17, 7, 7, 7, 9, 15, 14, 20, 18, 46,
+ 18, 20, 15, 13, 10, 8, 8, 8, 15, 8, 15, 19, 22, 23, 18, 20, 14, 15, 9, 8, 8, 9, 15, 14, 20, 19, 22, 23, 18, 19, 15, 11,
+ 7,224, 13, 10, 15, 9, 7, 7, 9, 30, 19, 20, 22, 19, 22, 20, 15, 14, 9, 8, 8, 6, 7, 15, 20, 19, 21, 23, 19, 20, 15, 14,
+ 9, 8, 0, 0, 0, 1, 0, 43,255,231, 4,166, 4,106, 0, 31, 0, 0, 19, 50, 55, 54, 55, 54, 55, 54, 53, 20, 23, 22, 23, 22,
+ 23, 22, 51, 34, 7, 6, 7, 6, 7, 6, 21, 52, 39, 38, 39, 38, 39, 38, 43,115,105,100, 85, 83, 43, 42, 43, 39, 87, 80,105,104,
+116,116,104,105, 80, 87, 39, 43, 42, 43, 83, 85,100,105, 2, 41, 44, 41, 85, 82,104,101,120,117,104, 98, 88, 82, 44, 44, 44, 44,
+ 82, 89, 97,105,116,119,102,103, 83, 85, 41, 44, 0, 2, 0, 37,255,230, 4,172, 4,116, 0, 31, 0, 63, 0, 0, 19, 50, 23, 22,
+ 23, 22, 23, 22, 21, 52, 55, 54, 55, 54, 55, 54, 51, 34, 39, 38, 39, 38, 39, 38, 53, 20, 7, 6, 7, 6, 7, 6, 33, 50, 55, 54,
+ 55, 54, 55, 54, 53, 20, 23, 22, 23, 22, 23, 22, 51, 34, 7, 6, 7, 6, 7, 6, 21, 52, 39, 38, 39, 38, 39, 38,240, 76, 69, 65,
+ 56, 54, 29, 27, 28, 26, 58, 52, 68, 68, 77, 77, 68, 68, 52, 58, 26, 28, 27, 29, 54, 56, 65, 69,254,234,116,106,100, 86, 84, 44,
+ 42, 43, 40, 88, 81,106,104,118,118,104,106, 81, 88, 40, 43, 42, 44, 84, 86,100,106, 2, 45, 28, 28, 55, 54, 68, 67, 79, 77, 69,
+ 64, 58, 54, 29, 28, 29, 29, 54, 58, 63, 70, 76, 79, 67, 67, 54, 55, 28, 29, 45, 42, 85, 83,104,103,121,118,106, 98, 89, 83, 44,
+ 45, 44, 45, 82, 90, 98,106,118,121,103,104, 84, 85, 42, 44, 0, 0, 2, 0, 40,255,240, 4,169, 4, 56, 0, 9, 0, 19, 0, 0,
+ 19, 37, 27, 1, 5, 3, 19, 37, 5, 19, 1, 3, 33, 1, 3, 9, 1, 3, 1, 33, 41, 1,116,203,204, 1,116,245, 26,254,155,254,
+156, 26, 1, 74,135,254, 72, 1, 99,136, 1,100, 1,101,136, 1, 99,254, 72, 2,149, 93, 1, 70,254,186, 93,254,217,254,130,143,
+143, 1,126, 2,202,254, 93,254,253,254, 94, 1, 3,254,253, 1,162, 1, 3, 0, 0, 2, 0, 67,255,230, 4,142, 4, 53, 0, 9,
+ 0, 41, 0, 0, 1, 3, 33, 5, 3, 37, 5, 3, 37, 33, 3, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34,
+ 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 2,104,122,254,116, 1, 64,122, 1, 64, 1, 65,122, 1, 64,254,116,123,
+110,101, 95, 82, 80, 41, 40, 40, 38, 83, 78, 99,100,111,109,101, 95, 82, 80, 41, 40, 40, 38, 83, 77,100,100, 4, 48,254,135,233,
+254,136,233,233, 1,120,233, 1,125, 42, 40, 81, 79, 98, 98,114,108,101, 93, 84, 80, 41, 42, 42, 40, 81, 79, 98, 98,111,111,101,
+ 93, 84, 78, 43, 42, 0, 0, 0, 0, 2, 0, 40,255,230, 4,169, 4, 46, 0, 29, 0, 39, 0, 0, 0, 34, 7, 6, 7, 6, 7, 6,
+ 21, 20, 23, 22, 23, 22, 23, 22, 50, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38, 39, 3, 19, 33, 1, 19, 9, 1, 19, 1, 33,
+ 2,152, 95, 41, 40, 34, 34, 17, 17, 17, 17, 34, 34, 40, 41, 95, 41, 40, 34, 34, 17, 17, 17, 17, 34, 34, 40, 89,136, 1,184,254,
+157,136,254,155,254,156,136,254,157, 1,184, 2,184, 17, 19, 31, 36, 40, 42, 47, 46, 42, 40, 35, 32, 19, 17, 17, 19, 32, 35, 40,
+ 42, 46, 47, 42, 40, 36, 31, 19, 1,135,254, 93,254,253,254, 94, 1, 3,254,253, 1,162, 1, 3, 0, 3, 0, 35,255,233, 4,174,
+ 4, 60, 0, 9, 0, 39, 0, 49, 0, 0, 19, 37, 27, 1, 5, 3, 19, 37, 5, 19, 0, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6,
+ 7, 6, 7, 6, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 19, 3, 33, 1, 3, 9, 1, 3, 1, 33, 35, 1,120,205,
+206, 1,120,248, 26,254,152,254,153, 26, 1, 29, 97, 41, 40, 35, 34, 17, 17, 17, 17, 34, 35, 40, 41, 97, 41, 40, 35, 34, 17, 17,
+ 17, 17, 34, 35, 40, 89,137,254, 68, 1,103,137, 1,103, 1,104,137, 1,103,254, 68, 2,149, 94, 1, 73,254,183, 94,254,214,254,
+127,144,144, 1,129, 1, 87, 17, 19, 32, 36, 40, 42, 48, 46, 43, 40, 36, 32, 19, 17, 17, 19, 32, 36, 40, 43, 46, 48, 42, 40, 36,
+ 32, 19, 1,139,254, 89,254,251,254, 90, 1, 5,254,251, 1,166, 1, 5, 0, 0, 0, 3, 0, 40,255,240, 4,169, 4, 56, 0, 9,
+ 0, 19, 0, 29, 0, 0, 1, 23, 51, 7, 23, 39, 7, 55, 39, 51, 19, 3, 33, 5, 3, 37, 5, 3, 37, 33, 3, 19, 33, 1, 19, 9,
+ 1, 19, 1, 33, 2,104, 69,219,177, 67,178,177, 67,177,219, 68,101,254,181, 1, 12,103, 1, 11, 1, 12,103, 1, 12,254,181,102,
+136, 1,184,254,157,136,254,155,254,156,136,254,157, 1,184, 3, 10,210,129,209,129,129,209,129, 1,105,254,198,194,254,198,195,
+195, 1, 58,194, 1,209,254, 93,254,253,254, 94, 1, 3,254,253, 1,162, 1, 3, 0, 3, 0, 61,255,252, 4,148, 4, 28, 0, 9,
+ 0, 19, 0, 29, 0, 0, 1, 23, 51, 7, 23, 39, 7, 55, 39, 51, 27, 1, 33, 5, 19, 37, 5, 19, 37, 33, 55, 7, 33, 23, 7, 55,
+ 23, 39, 55, 33, 2,104, 27, 84, 68, 26, 69, 68, 26, 68, 84, 26,131, 1,168,254,170,131,254,168,254,169,131,254,170, 1,168,130,
+ 78,255, 0,207, 80,207,208, 80,207,255, 0, 2, 73, 81, 50, 80, 49, 49, 80, 50, 2, 35,254,109,249,254,109,249,249, 1,147,249,
+172,243,150,243,150,150,243,150, 0, 6, 0, 40,255,246, 4,169, 4, 63, 0, 2, 0, 5, 0, 8, 0, 11, 0, 14, 0, 24, 0, 0,
+ 45, 1, 53, 37, 5, 55, 1, 3, 39, 37, 33, 7, 17, 3, 23, 17, 19, 33, 1, 19, 9, 1, 19, 1, 33, 1, 93, 1, 11,254, 80, 1,
+ 12,164, 1, 12,103,165, 1,177,254,181,102,101,101,136, 1,184,254,157,136,254,155,254,156,136,254,157, 1,184,114,194,173,140,
+194, 54,254,145, 1, 57, 54,140,140, 1,198,254,198,140, 2, 93,254, 94,254,253,254, 94, 1, 3,254,253, 1,162, 1, 3, 0, 0,
+ 0, 2, 0, 46, 0, 17, 4,163, 4, 5, 0, 13, 0, 23, 0, 0, 1, 5, 19, 47, 1, 5, 39, 19, 37, 33, 19, 23, 19, 33, 37, 3,
+ 33, 23, 3, 55, 23, 3, 55, 33, 4,162,254,196,121,114,235,254,226,114,121,254,196, 1,136,121,113,109, 1, 34,254, 0, 95,254,
+208,246, 94,247,246, 94,246,254,208, 2,108,231,254,140, 37,171,208, 37, 1,116,230, 1,117, 37,254,176,253,254,223,180,254,223,
+179,179, 1, 33,180, 0, 0, 0, 0, 1, 0, 54,255,254, 4,155, 4,130, 0, 17, 0, 0, 1, 17, 51, 17, 37, 23, 13, 1, 7, 37,
+ 17, 35, 17, 5, 39, 45, 1, 55, 1,237,247, 1, 58,124,254,198, 1, 58,124,254,198,247,254,198,124, 1, 57,254,199,124, 3, 23,
+ 1,107,254,148,182,214,181,182,214,181,254,149, 1,107,181,214,182,181,214, 0, 0, 2, 0, 87,255,255, 4,122, 4, 96, 0, 5,
+ 0, 23, 0, 0, 1, 7, 23, 51, 55, 39, 5, 37, 55, 5, 17, 23, 17, 37, 23, 13, 1, 7, 37, 17, 35, 17, 5, 39, 2, 14, 90, 90,
+180, 90, 90,254,242,254,163, 90, 1, 93,180, 1, 94, 90,254,162, 1, 94, 90,254,162,180,254,163, 90, 2,203,155,157,157,155,155,
+202,156,203, 1,148, 1,254,109,203,156,202,203,156,202,254,109, 1,147,202,156, 0, 1, 0, 48,255,253, 4,161, 4,111, 0, 23,
+ 0, 0, 9, 1, 7, 1, 17, 35, 17, 1, 39, 1, 33, 53, 33, 1, 55, 1, 17, 51, 17, 1, 23, 1, 33, 21, 2,197, 1, 80, 54,254,
+176, 77,254,176, 54, 1, 80,254, 36, 1,221,254,175, 54, 1, 80, 77, 1, 80, 54,254,175, 1,221, 2, 16,254,175, 54, 1, 82,254,
+ 35, 1,220,254,175, 54, 1, 81, 76, 1, 82, 54,254,175, 1,220,254, 36, 1, 81, 54,254,174, 76, 0, 1, 0, 36,255,240, 4,173,
+ 4,122, 0, 15, 0, 0, 1, 19, 9, 1, 13, 1, 9, 1, 11, 1, 9, 1, 45, 1, 9, 1, 2,104, 60, 1, 95,254,245, 1,181,254,
+ 75, 1, 11,254,161, 60, 59,254,161, 1, 10,254, 76, 1,180,254,246, 1, 95, 4,122,254, 75, 1, 11,254,161, 60, 59,254,160, 1,
+ 12,254, 74, 1,182,254,244, 1, 96, 59, 60, 1, 95,254,245, 0, 0, 9, 0, 26,255,233, 4,183, 4,134, 0, 2, 0, 5, 0, 8,
+ 0, 11, 0, 14, 0, 17, 0, 20, 0, 23, 0, 39, 0, 0, 1, 15, 1, 33, 39, 7, 1, 47, 1, 17, 55, 39, 1, 63, 1, 33, 23, 55,
+ 1, 31, 1, 17, 7, 23, 17, 19, 37, 3, 13, 1, 19, 37, 11, 1, 5, 19, 45, 1, 3, 5, 3,161,222, 91, 1,186,223,219, 1, 57,
+ 94,219, 91, 91,254,200,222, 90,254, 71,223,218,254,200, 94,218, 90, 90,122, 1, 39,125, 1, 42,254,214,125,254,217,122,121,254,
+217,125,254,214, 1, 42,125, 1, 39, 3,113, 94,220, 92, 92,254,200,222, 90,254, 71,223,218,254,200, 94,218, 90, 90, 1, 58,222,
+ 92, 1,187,223,220, 2, 79,254,214,125,254,216,122,121,254,217,125,254,214, 1, 42,125, 1, 39,121,122, 1, 40,125, 0, 0, 0,
+ 0, 1, 0, 50,255,228, 4,159, 5, 0, 0, 11, 0, 0, 1, 19, 37, 9, 1, 37, 11, 1, 5, 9, 1, 5, 2,104, 95, 1,216,254,
+135, 1,121,254, 40, 95, 94,254, 40, 1,122,254,134, 1,216, 4,255,254, 23,163,254,185,254,186,163,254, 21, 1,235,163, 1, 70,
+ 1, 71,163, 0, 0, 1, 0, 31,255,224, 4,178, 4,115, 0, 15, 0, 0, 1, 19, 37, 3, 13, 1, 19, 37, 11, 1, 5, 19, 45, 1,
+ 3, 5, 2,104, 86, 1, 72,207, 1,122,254,134,207,254,184, 86, 85,254,184,207,254,134, 1,122,207, 1, 72, 4,114,254,134,207,
+254,184, 86, 85,254,184,207,254,133, 1,123,207, 1, 72, 85, 86, 1, 72,207, 0, 0, 1, 0, 26,255,234, 4,183, 4,134, 0, 15,
+ 0, 0, 1, 19, 37, 3, 13, 1, 19, 37, 11, 1, 5, 19, 45, 1, 3, 5, 2,104,130, 1, 31,104, 1, 21,254,235,104,254,225,130,
+129,254,225,104,254,235, 1, 21,104, 1, 31, 4,134,254,235,104,254,225,130,130,254,225,104,254,235, 1, 21,104, 1, 31,130,130,
+ 1, 31,104, 0, 0, 1, 0, 36,255,221, 4,173, 4,104, 0, 23, 0, 0, 1, 19, 55, 3, 37, 7, 13, 1, 23, 37, 19, 39, 11, 1,
+ 7, 19, 5, 55, 45, 1, 39, 5, 3, 23, 2,104, 88,203, 53, 1, 10,180, 1, 1,254,255,180,254,246, 53,203, 88, 86,204, 54,254,
+245,179,255, 0, 1, 0,179, 1, 11, 54,204, 4,103,254,255,179,254,246, 53,203, 86, 87,204, 54,254,246,179,254,255, 1, 1,179,
+ 1, 10, 54,204, 87, 86,203, 53, 1, 10,179, 0, 0, 1, 0, 48, 0, 2, 4,161, 4,116, 0, 47, 0, 0, 1, 17, 51, 17, 19, 23,
+ 3, 55, 23, 7, 37, 23, 5, 33, 21, 33, 5, 7, 37, 23, 7, 39, 19, 7, 3, 17, 35, 17, 3, 39, 19, 7, 39, 55, 5, 39, 37, 33,
+ 53, 33, 37, 55, 5, 39, 55, 23, 3, 55, 2, 59, 91,130, 84,129,239, 65,240, 1, 58, 35,254,197, 1, 84,254,175, 1, 56, 35,254,
+198,240, 65,238,128, 84,130, 91,130, 84,129,239, 65,240,254,198, 35, 1, 57,254,174, 1, 84,254,197, 35, 1, 56,238, 65,238,128,
+ 84, 3, 32, 1, 84,254,174, 1, 56, 35,254,199,240, 65,240,130, 84,131, 91,129, 85,131,241, 64,238,254,200, 35, 1, 55,254,175,
+ 1, 83,254,199, 35, 1, 57,239, 64,239,129, 85,129, 91,131, 84,129,239, 65,239, 1, 56, 35, 0, 0, 1, 0, 49,255,240, 4,160,
+ 4,232, 0,159, 0, 0, 1, 53, 52, 39, 38, 53, 52, 55, 54, 50, 23, 22, 21, 20, 7, 6, 29, 1, 23, 22, 23, 55, 54, 55, 54, 55,
+ 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 35, 34, 35, 34, 15, 1, 22, 21, 20, 7, 23, 22, 51, 50, 55, 50, 51,
+ 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 47, 1, 6, 15, 1, 21, 20, 23, 22, 21, 20, 7, 6, 34, 39,
+ 38, 53, 52, 55, 54, 61, 1, 38, 39, 38, 39, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 51,
+ 22, 51, 50, 63, 1, 38, 53, 52, 55, 39, 38, 35, 34, 35, 34, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23,
+ 22, 31, 1, 54, 55, 54, 2, 63, 62, 36, 44, 46, 99, 46, 44, 36, 62, 13, 25, 20, 8, 93, 53, 32, 55, 49, 43, 18, 17, 58, 25, 16,
+ 4, 11, 72, 51, 62, 5, 5, 8, 9,107, 82, 10, 3, 4, 10, 83,107, 9, 8, 5, 5, 62, 51, 72, 11, 4, 16, 25, 58, 17, 18, 43,
+ 49, 55, 32, 55, 90, 12, 22, 20, 13, 62, 36, 44, 46, 99, 46, 44, 36, 63, 7, 7, 23, 19, 12, 90, 55, 32, 55, 49, 43, 18, 17, 58,
+ 25, 16, 4, 11, 72, 51, 62, 5, 5, 8, 9,108, 82, 10, 4, 3, 10, 82,107, 9, 8, 5, 5, 62, 51, 72, 11, 4, 16, 25, 58, 17,
+ 18, 43, 49, 55, 32, 57, 88, 9, 22, 23, 7, 2,248, 10,105, 98, 57, 64, 82, 39, 41, 41, 39, 82, 64, 57,100,103, 10, 5, 11, 19,
+ 5, 56,100, 60, 32, 28, 5, 20, 43, 28, 36, 18, 20, 59, 41, 29, 48, 5, 16, 16, 18, 16, 6, 49, 1, 30, 41, 58, 20, 18, 36, 29,
+ 42, 20, 5, 28, 32, 60,103, 52, 7, 21, 7, 5, 13,104, 99, 57, 64, 82, 40, 40, 40, 40, 82, 64, 57, 99,104, 13, 2, 3, 10, 18,
+ 7, 52,103, 60, 32, 28, 5, 20, 42, 29, 36, 18, 20, 58, 41, 30, 1, 48, 6, 16, 19, 16, 16, 5, 48, 29, 41, 59, 20, 18, 36, 28,
+ 43, 20, 5, 28, 32, 60,107, 48, 5, 20, 9, 3, 0, 2, 0, 55,255,238, 4,154, 4,217, 0, 29, 0,185, 0, 0, 0, 34, 7, 6,
+ 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 50, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38, 47, 1, 53, 52, 39, 38, 53,
+ 52, 55, 54, 50, 23, 22, 21, 20, 7, 6, 29, 1, 23, 22, 23, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7,
+ 6, 43, 1, 34, 35, 34, 15, 1, 22, 21, 20, 7, 23, 22, 51, 50, 59, 1, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39,
+ 38, 39, 38, 47, 1, 6, 15, 1, 21, 20, 23, 22, 21, 20, 7, 6, 34, 39, 38, 53, 52, 55, 54, 61, 1, 38, 39, 38, 39, 7, 6, 7,
+ 6, 7, 6, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 59, 1, 50, 51, 50, 63, 1, 38, 53, 52, 55, 39, 38, 35, 34, 43, 1,
+ 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 31, 1, 54, 55, 54, 2,122, 35, 13, 15, 11, 13, 5, 7, 7,
+ 5, 13, 11, 15, 13, 35, 13, 15, 11, 13, 5, 7, 7, 5, 13, 11, 15, 72, 61, 36, 44, 46, 97, 46, 44, 36, 62, 13, 25, 20, 8, 92,
+ 53, 31, 55, 48, 43, 18, 17, 57, 25, 16, 4, 12, 70, 51, 61, 10, 9, 8,107, 81, 10, 4, 4, 9, 83,106, 9, 8, 10, 61, 51, 70,
+ 12, 4, 16, 25, 57, 17, 18, 43, 48, 55, 31, 55, 89, 12, 22, 20, 13, 62, 36, 44, 46, 97, 46, 44, 36, 63, 8, 6, 24, 18, 12, 89,
+ 55, 31, 55, 48, 43, 18, 17, 57, 25, 16, 4, 11, 71, 51, 61, 10, 9, 8,107, 82, 9, 4, 4, 10, 81,107, 8, 9, 10, 61, 51, 71,
+ 11, 4, 16, 25, 57, 17, 18, 43, 48, 55, 31, 57, 87, 9, 21, 24, 6, 2,183, 7, 6, 12, 12, 14, 14, 17, 17, 14, 14, 12, 12, 6,
+ 7, 7, 6, 12, 12, 14, 14, 17, 17, 14, 14, 12, 12, 6, 62, 10,104, 96, 57, 64, 81, 39, 40, 40, 39, 81, 64, 57, 98,102, 10, 5,
+ 11, 19, 5, 55, 99, 60, 31, 29, 6, 19, 43, 28, 36, 18, 19, 58, 41, 29, 47, 6, 15, 16, 17, 17, 5, 48, 30, 40, 58, 19, 18, 36,
+ 28, 43, 19, 6, 29, 31, 60,102, 51, 7, 21, 7, 5, 12,103, 99, 56, 64, 81, 39, 40, 40, 39, 81, 64, 56, 99,103, 12, 3, 2, 11,
+ 17, 7, 51,102, 60, 31, 29, 6, 19, 43, 28, 36, 18, 19, 58, 40, 30, 47, 6, 16, 18, 16, 15, 6, 47, 29, 41, 58, 19, 18, 36, 28,
+ 43, 19, 6, 29, 31, 60,105, 48, 5, 20, 9, 3, 0, 1, 0, 43,255,235, 4,159, 4,223, 0,106, 0, 0, 1, 39, 38, 7, 6, 39,
+ 38, 39, 38, 55, 54, 55, 54, 23, 22, 23, 22, 31, 1, 53, 52, 39, 38, 53, 52, 55, 54, 50, 23, 22, 21, 20, 7, 6, 29, 1, 55, 54,
+ 55, 54, 55, 54, 23, 22, 23, 22, 7, 6, 7, 6, 39, 38, 15, 1, 23, 22, 55, 54, 23, 22, 23, 22, 7, 6, 7, 6, 39, 38, 39, 38,
+ 47, 1, 21, 20, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 61, 1, 7, 6, 7, 6, 7, 6, 39, 38, 39, 38, 55, 54,
+ 55, 54, 23, 22, 55, 2, 18, 38, 40,151, 90, 68, 76, 14, 23, 34, 35, 90, 58, 76, 71, 35, 58, 46, 39, 87, 52, 44, 67,138, 67, 44,
+ 52, 87, 39, 39, 65, 40, 67, 75, 59, 90, 34, 34, 23, 14, 76, 71, 87,144, 47, 39, 39, 39,152, 91, 67, 76, 14, 23, 34, 36, 88, 62,
+ 72, 72, 35, 58, 46, 39, 87, 52, 44, 67, 69, 72, 64, 44, 52, 87, 39, 42, 62, 38, 68, 76, 58, 90, 35, 35, 24, 15, 75, 71, 87,147,
+ 44, 2,102, 22, 23, 13, 8, 39, 44, 59, 91, 59, 59, 26, 17, 43, 42, 81,132, 27, 23, 45, 45,125, 75, 79, 87, 42, 65, 65, 42, 87,
+ 83, 71,117, 53, 45, 23, 23,136, 85, 38, 43, 17, 26, 59, 59, 91, 59, 44, 41, 10, 16, 26, 22, 23, 23, 13, 7, 39, 43, 59, 91, 60,
+ 62, 23, 16, 42, 42, 81,133, 27, 22, 45, 45,125, 75, 78, 87, 43, 64, 64, 45, 85, 83, 70,117, 53, 45, 22, 25,135, 83, 40, 43, 17,
+ 26, 59, 62, 89, 59, 43, 42, 10, 16, 26, 0, 0, 0, 4, 0, 33,255,229, 4,176, 4,189, 0, 14, 0,153, 0,177, 0,201, 0, 0,
+ 1, 54, 55, 54, 53, 52, 39, 38, 34, 7, 6, 21, 20, 23, 22, 19, 23, 22, 51, 50, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6,
+ 7, 6, 35, 34, 39, 38, 39, 38, 47, 1, 21, 20, 23, 22, 21, 20, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 61, 1, 7, 6, 7, 6,
+ 7, 6, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 51, 50, 63, 1, 39, 38, 35, 34, 7, 6, 35, 34, 39, 38,
+ 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 31, 1, 53, 52, 39, 38, 53, 52, 55, 54, 50, 23, 22, 21, 20, 7, 6, 29,
+ 1, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 35, 34, 7, 5, 6, 35, 34, 39, 38,
+ 35, 34, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 51, 50, 55, 54, 55, 54, 37, 22, 23, 22, 23, 22, 51, 50, 55, 54, 55, 54, 53, 52,
+ 39, 38, 39, 38, 35, 34, 7, 6, 35, 34, 2,105, 23, 47, 31, 25, 41, 70, 41, 26, 31, 47,141, 15, 44, 85, 27, 31, 15, 14, 75, 58,
+ 77, 15, 10, 21, 36, 92, 16, 18, 47, 56, 69, 40, 53, 62, 15, 72, 54, 45, 69, 70, 74, 65, 45, 53, 72, 15, 59, 56, 41, 68, 55, 46,
+ 19, 17, 92, 35, 21, 9, 16, 76, 59, 75, 14, 15, 30, 27, 85, 44, 16, 16, 42, 85, 28, 31, 15, 14, 75, 59, 75, 17, 10, 22, 35, 92,
+ 17, 19, 46, 55, 70, 39, 53, 62, 15, 72, 53, 45, 68,141, 69, 45, 54, 72, 15, 60, 55, 42, 67, 56, 47, 18, 16, 92, 36, 21, 10, 15,
+ 77, 58, 75, 14, 15, 32, 27, 85, 43,254,211, 58, 54, 25, 24, 8, 8, 45, 50, 49, 6, 4, 11, 17, 52, 9, 10, 26, 36, 58, 21, 30,
+ 1,143, 60, 30, 21, 59, 36, 26, 10, 8, 52, 18, 11, 4, 6, 50, 50, 45, 8, 7, 25, 25, 54, 3, 12, 79, 59, 40, 65, 55, 20, 35,
+ 35, 20, 55, 65, 40, 59,254,247, 9, 26, 3, 1, 33, 42, 58, 35, 31, 46, 35, 59, 24, 4, 30, 38, 82,109, 33, 8, 16, 67, 99, 74,
+ 77, 85, 41, 63, 63, 44, 82, 77, 74, 99, 67, 16, 8, 31,111, 83, 37, 31, 5, 26, 57, 35, 46, 31, 35, 59, 41, 33, 1, 3, 26, 9,
+ 8, 25, 2, 1, 32, 41, 59, 35, 31, 45, 36, 58, 25, 5, 30, 39, 81,110, 33, 8, 16, 68, 99, 73, 77, 85, 42, 63, 63, 42, 85, 77,
+ 73, 99, 68, 16, 8, 32,111, 83, 37, 30, 5, 24, 59, 35, 46, 30, 36, 58, 42, 32, 1, 2, 25,102, 14, 3, 1, 28, 27, 31, 20, 16,
+ 27, 18, 29, 16, 3, 19, 32, 47, 68, 59, 59, 68, 47, 32, 19, 3, 16, 29, 18, 27, 16, 20, 31, 27, 28, 1, 3, 0, 0, 2, 0, 36,
+ 0, 0, 4,173, 4,105, 0, 29, 0,141, 0, 0, 0, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 50, 55, 54, 55,
+ 54, 55, 54, 53, 52, 39, 38, 39, 38, 39, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34,
+ 39, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 39, 6, 7, 6, 7, 6, 7, 6, 35, 34,
+ 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 50,
+ 23, 22, 23, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 2,160,111, 48, 48, 39,
+ 41, 19, 20, 20, 19, 41, 39, 48, 48,111, 48, 48, 39, 41, 19, 20, 20, 19, 41, 39, 48, 93, 48, 29, 43, 41, 42, 43, 37, 35, 32, 18,
+ 16, 16, 15, 35, 29, 43, 37, 48, 22, 21, 37, 26, 35, 14, 17, 17, 18, 31, 35, 38, 38, 46, 48, 37, 43, 29, 37, 13, 10, 4, 3, 11,
+ 18, 32, 35, 37, 39, 46, 48, 36, 44, 28, 35, 15, 16, 16, 19, 31, 29, 28, 18, 19, 48, 37, 45, 27, 35, 15, 16, 16, 18, 32, 35, 37,
+ 39, 46, 48, 36, 46, 32, 6, 5, 16, 16, 18, 32, 35, 37, 39, 45, 49, 36, 44, 28, 35, 15, 16, 16, 5, 3, 36, 20, 22, 37, 42, 47,
+ 48, 57, 54, 49, 47, 42, 37, 22, 20, 20, 22, 37, 42, 47, 49, 54, 57, 48, 47, 42, 37, 22, 15, 41, 12, 18, 18, 15, 34, 30, 42, 38,
+ 48, 45, 40, 37, 36, 29, 19, 17, 4, 18, 26, 36, 36, 41, 45, 48, 38, 42, 30, 33, 16, 16, 16, 20, 29, 38, 34, 27, 28, 29, 26, 42,
+ 30, 33, 16, 16, 16, 20, 29, 36, 36, 41, 45, 48, 38, 45, 27, 26, 17, 4, 17, 21, 28, 35, 37, 40, 45, 48, 38, 42, 30, 34, 15, 17,
+ 17, 19, 34, 11, 11, 40, 45, 48, 38, 42, 30, 34, 15, 16, 16, 19, 30, 36, 36, 40, 46, 47, 38, 11, 0, 6, 0, 22, 0, 3, 4,187,
+ 4,134, 0,110, 0,138, 0,163, 0,191, 0,216, 0,244, 0, 0, 37, 6, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38,
+ 53, 52, 55, 54, 55, 54, 55, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 38, 39, 38,
+ 53, 52, 55, 54, 55, 54, 55, 54, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21,
+ 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 2,
+ 50, 23, 22, 23, 55, 54, 53, 52, 39, 38, 39, 38, 39, 38, 34, 7, 6, 7, 6, 7, 6, 21, 20, 31, 1, 54, 55, 19, 38, 39, 38, 39,
+ 38, 39, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 50, 55, 54, 55, 54, 55, 3, 38, 53, 52, 55, 54, 55, 39, 38, 39, 38, 35,
+ 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 23, 5, 23, 22, 23, 22, 23, 22, 50, 55, 54, 55, 54, 55, 54, 53, 52,
+ 39, 38, 47, 1, 6, 7, 6, 7, 6, 63, 1, 54, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38, 39, 38, 35, 34, 7, 6, 15, 1,
+ 22, 23, 22, 21, 20, 2,104, 3, 11, 13, 38, 29, 44, 38, 49, 47, 40, 38, 35, 33, 18, 17, 17, 15, 36, 26, 38, 22, 23, 49, 37, 45,
+ 29, 36, 15, 17, 17, 18, 33, 38, 36, 47, 39, 46, 41, 29, 50, 6, 5, 16, 16, 15, 36, 29, 45, 37, 99, 37, 45, 29, 36, 15, 16, 16,
+ 5, 6, 50, 29, 45, 42, 43, 43, 38, 36, 33, 18, 17, 17, 15, 36, 29, 45, 37, 49, 23, 22, 38, 26, 36, 15, 17, 17, 18, 33, 35, 38,
+ 40, 47, 49, 38, 44, 29, 38, 13, 11, 61,115, 48, 6, 6, 14, 7, 10, 9, 22, 20, 25, 24, 57, 24, 25, 20, 22, 9, 10, 7, 14, 6,
+ 6, 53, 28, 25, 53, 37, 24, 21, 82, 19, 12, 10, 10, 10, 21, 20, 25, 24, 57, 24, 26, 19, 19, 12,178, 3, 21, 17, 33, 95, 7, 5,
+ 28, 25, 28, 24, 25, 20, 19, 12, 11, 11, 9, 22, 20, 25, 17, 12, 1,186, 44, 12, 19, 19, 26, 24, 57, 24, 25, 20, 21, 10, 10, 10,
+ 12, 19, 82, 21, 24, 37, 53, 25,194,115, 12, 17, 25, 20, 22, 9, 11, 11, 12, 19, 20, 25, 24, 28, 25, 28, 5, 7, 95, 33, 17, 21,
+200, 29, 27, 35, 39, 30, 20, 17, 17, 16, 34, 31, 43, 39, 48, 47, 41, 38, 36, 27, 19, 4, 16, 20, 30, 37, 37, 41, 46, 50, 39, 43,
+ 31, 36, 14, 18, 18, 13, 42, 10, 11, 39, 49, 46, 42, 37, 37, 30, 20, 16, 16, 20, 30, 37, 37, 42, 46, 49, 39, 11, 10, 42, 13, 18,
+ 18, 16, 34, 31, 43, 39, 50, 46, 41, 37, 37, 30, 20, 16, 4, 19, 27, 36, 38, 41, 47, 48, 39, 43, 31, 34, 16, 17, 17, 20, 30, 39,
+ 35, 27, 2,142, 20, 3, 3, 76, 37, 16, 28, 26, 24, 21, 19, 11, 11, 11, 11, 19, 21, 24, 26, 28, 16, 37, 76, 3, 3,253,236, 5,
+ 11, 24, 37, 23, 35, 77, 19, 27, 25, 29, 28, 25, 24, 21, 19, 11, 11, 11, 11, 19, 19, 26, 1, 76, 17, 19, 58, 50, 40, 38, 54, 3,
+ 2, 10, 10, 11, 19, 19, 26, 23, 31, 28, 26, 23, 22, 19, 11, 7, 2,251, 95, 26, 19, 19, 11, 11, 11, 11, 19, 21, 24, 25, 28, 29,
+ 25, 27, 19, 77, 35, 23, 37, 24, 11,232, 14, 2, 7, 11, 19, 22, 23, 26, 28, 31, 23, 26, 19, 19, 11, 10, 10, 2, 3, 54, 38, 40,
+ 50, 58, 19, 0, 0, 10, 0, 22,255,237, 4,187, 4,148, 0, 45, 0, 91, 0,213, 1, 4, 1, 51, 1, 98, 1,145, 1,175, 1,221,
+ 2, 11, 0, 0, 1, 38, 39, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 50, 31, 1, 54, 55, 39,
+ 38, 35, 34, 6, 7, 6, 7, 6, 20, 23, 22, 23, 22, 23, 22, 51, 50, 55, 37, 6, 7, 23, 22, 51, 50, 55, 54, 55, 54, 55, 54, 52,
+ 39, 38, 39, 46, 1, 35, 34, 15, 1, 22, 23, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39,
+ 37, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 52, 54, 55, 54, 55, 54, 50, 23, 22, 23, 30, 1, 21, 54, 55,
+ 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 22, 23,
+ 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 20, 6, 7, 6, 7, 6, 34, 39, 38, 39, 46, 1, 53, 6, 7, 6, 35, 34,
+ 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 1, 38, 39, 7, 6, 7,
+ 6, 7, 6, 7, 38, 39, 38, 39, 38, 39, 38, 39, 54, 55, 54, 55, 54, 63, 1, 38, 39, 7, 6, 7, 6, 7, 6, 21, 22, 23, 22, 23,
+ 30, 1, 51, 50, 55, 54, 55, 54, 55, 1, 22, 23, 55, 54, 55, 54, 55, 54, 53, 38, 39, 38, 39, 46, 1, 35, 34, 7, 6, 7, 6, 15,
+ 1, 22, 23, 55, 54, 55, 54, 55, 54, 55, 22, 23, 22, 23, 22, 23, 22, 23, 6, 7, 6, 7, 6, 7, 3, 6, 7, 23, 22, 23, 22, 23,
+ 22, 23, 6, 7, 6, 7, 6, 7, 6, 7, 38, 39, 38, 39, 38, 47, 1, 6, 7, 23, 22, 23, 22, 23, 22, 51, 50, 54, 55, 54, 55, 54,
+ 55, 52, 39, 38, 39, 38, 39, 1, 54, 55, 39, 38, 39, 38, 39, 38, 35, 34, 6, 7, 6, 7, 6, 7, 20, 23, 22, 23, 22, 31, 1, 54,
+ 55, 39, 38, 39, 38, 39, 38, 39, 54, 55, 54, 55, 54, 55, 54, 55, 22, 23, 22, 23, 22, 23, 4, 34, 7, 6, 7, 6, 7, 6, 21, 20,
+ 23, 22, 23, 22, 23, 22, 50, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38, 39, 19, 6, 7, 23, 22, 21, 20, 7, 6, 7, 6, 7,
+ 6, 34, 39, 38, 39, 38, 39, 38, 53, 52, 63, 1, 38, 39, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 50, 55, 54, 55, 54, 55, 54, 53,
+ 52, 39, 3, 22, 23, 55, 54, 53, 52, 39, 38, 39, 38, 39, 38, 34, 7, 6, 7, 6, 7, 6, 21, 20, 31, 1, 54, 55, 39, 38, 53, 52,
+ 55, 54, 55, 54, 55, 54, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 1,139, 4, 2,175, 13, 7, 7, 11, 9, 8, 6, 5, 3, 3, 5,
+ 6, 8, 9, 9, 9, 7, 13,175, 2, 4,158, 27, 16, 21, 40, 17, 15, 10, 7, 7, 10, 15, 17, 20, 20, 21, 16, 27, 2, 98, 2, 4,
+155, 27, 14, 23, 20, 20, 17, 15, 10, 7, 7, 10, 15, 17, 40, 23, 14, 27,155, 4, 2,172, 13, 5, 13, 7, 9, 8, 6, 5, 3, 3,
+ 5, 6, 9, 8, 11, 9, 5, 13,252,205, 28, 13, 13, 13, 12, 25, 25, 31, 31, 35, 33, 34, 31, 28, 26, 25, 25, 30, 31, 71, 31, 30,
+ 25, 25, 26, 30, 29, 34, 33, 35, 31, 31, 25, 22, 15, 13, 13, 11, 30, 42, 30, 29, 26, 27, 11, 13, 13, 13, 25, 21, 34, 32, 39, 29,
+ 11, 13, 13, 12, 25, 25, 31, 31, 35, 35, 32, 31, 28, 26, 25, 25, 30, 31, 71, 31, 30, 25, 25, 26, 31, 28, 33, 34, 34, 32, 31, 25,
+ 25, 12, 13, 13, 13, 27, 39, 32, 29, 26, 27, 12, 12, 12, 14, 25, 26, 29, 30, 1, 89, 15, 13,109, 8, 5, 5, 10, 9, 11, 10, 9,
+ 9, 7, 7, 4, 3, 1, 1, 4, 3, 7, 4, 11,138, 11, 8,141, 26, 10, 17, 7, 9, 1, 8, 7, 17, 16, 40, 22, 24, 19, 20, 16,
+ 11, 14, 1,121, 12, 7,139, 26, 10, 17, 7, 9, 1, 8, 7, 17, 16, 40, 22, 24, 19, 20, 17, 10, 14, 79, 15, 13,107, 8, 4, 8,
+ 8, 9, 11, 10, 9, 9, 7, 7, 4, 3, 1, 1, 4, 4, 6, 4, 11,119, 8, 11,138, 11, 4, 6, 4, 4, 1, 1, 3, 4, 7, 7,
+ 9, 9, 10, 11, 9, 8, 7, 5, 8,109, 13, 15, 81, 14, 11, 16, 20, 19, 24, 22, 40, 16, 17, 7, 8, 1, 9, 7, 17, 10, 26,254,
+ 28, 14, 14, 79, 14, 10, 17, 20, 19, 24, 22, 40, 16, 17, 7, 8, 1, 9, 7, 17, 10, 26,139, 8, 11,136, 11, 4, 7, 3, 4, 1,
+ 1, 3, 4, 7, 7, 9, 9, 10, 13, 7, 10, 6, 4, 8, 1, 26, 63, 27, 27, 23, 22, 12, 11, 11, 12, 22, 23, 27, 27, 63, 27, 27,
+ 23, 22, 12, 11, 11, 12, 22, 23, 27, 2, 17, 16, 21, 1, 3, 4, 7, 8, 8, 10, 19, 10, 8, 8, 7, 4, 3, 1, 21, 17, 16, 43,
+ 8, 9, 7, 17, 16, 20, 19, 47, 19, 20, 16, 17, 7, 9, 8, 76, 18, 16, 42, 8, 9, 7, 17, 16, 20, 19, 47, 19, 20, 16, 17, 7,
+ 9, 8, 42, 17, 17, 21, 1, 3, 4, 7, 8, 8, 10, 19, 10, 8, 8, 8, 3, 3, 1, 2, 3, 17, 17, 21, 2, 5, 3, 7, 8, 8,
+ 9, 11, 9, 9, 9, 8, 6, 5, 3, 2, 20, 17, 16, 43, 7, 15, 17, 17, 20, 18, 46, 20, 20, 16, 16, 8, 9, 7, 77, 18, 16, 43,
+ 7, 9, 8, 16, 16, 20, 20, 46, 18, 20, 17, 17, 15, 7, 42, 17, 17, 20, 2, 3, 5, 6, 8, 9, 9, 9, 11, 9, 8, 8, 9, 1,
+ 5, 2,221, 28, 32, 33, 33, 33, 33, 31, 25, 25, 12, 13, 13, 13, 27, 39, 63, 24, 24, 14, 13, 13, 14, 24, 24, 63, 39, 29, 11, 13,
+ 13, 12, 25, 22, 34, 31, 35, 28, 38, 31, 29, 13, 12, 26, 27, 28, 31, 35, 39, 27, 31, 25, 23, 15, 14, 29, 30, 34, 33, 33, 32, 31,
+ 25, 25, 13, 12, 12, 13, 28, 39, 63, 25, 23, 14, 13, 13, 14, 23, 25, 63, 39, 30, 11, 12, 12, 13, 25, 25, 31, 32, 33, 34, 33, 32,
+ 27, 14, 12, 26, 27, 29, 30, 36, 38, 28, 31, 24, 26, 12, 13,254,140, 9, 10,139, 10, 4, 6, 4, 4, 1, 1, 3, 4, 7, 7, 9,
+ 9, 10, 10, 9, 10, 6, 5, 8,109, 13, 14, 80, 15, 11, 15, 20, 19, 24, 22, 21, 19, 17, 16, 15, 7, 9, 15, 11, 25, 1,229, 13,
+ 15, 79, 15, 10, 16, 20, 19, 24, 22, 21, 19, 17, 16, 15, 7, 9, 16, 10, 25,139, 9, 11,136, 10, 4, 9, 2, 4, 1, 1, 3, 4,
+ 7, 7, 9, 9, 10, 13, 6, 10, 7, 4, 8,254,147, 14, 13,109, 8, 5, 6, 10, 9, 10, 10, 9, 9, 7, 7, 4, 3, 1, 1, 4,
+ 3, 7, 4, 10,139, 11, 8,142, 25, 11, 15, 9, 7, 15, 16, 17, 19, 21, 22, 24, 19, 20, 15, 11, 15, 1,121, 11, 9,139, 25, 10,
+ 16, 9, 7, 15, 16, 17, 19, 21, 22, 24, 19, 20, 16, 10, 15, 79, 15, 13,107, 8, 4, 8, 9, 9, 10, 10, 9, 9, 7, 7, 4, 3,
+ 1, 1, 4, 4, 7, 4, 10,163, 12, 12, 21, 24, 26, 28, 31, 31, 28, 27, 23, 21, 12, 12, 12, 12, 21, 23, 27, 28, 31, 31, 28, 26,
+ 24, 21, 12,254,147, 5, 1,175, 13, 7, 8, 10, 9, 8, 7, 4, 3, 3, 4, 7, 8, 9, 9, 9, 7, 13,175, 1, 5,158, 28, 15,
+ 22, 20, 19, 17, 15, 9, 9, 9, 9, 15, 17, 19, 20, 22, 15, 28, 2, 98, 1, 5,154, 29, 14, 23, 20, 19, 17, 15, 9, 9, 9, 9,
+ 15, 17, 19, 20, 23, 14, 29,154, 5, 1,172, 13, 6, 11, 8, 9, 8, 7, 3, 4, 4, 3, 7, 10, 7, 10, 9, 6, 13, 0, 0, 0,
+ 0, 4, 0, 37,255,223, 4,172, 4,106, 0, 29, 0, 60, 0, 92, 0,108, 0, 0, 0, 34, 7, 6, 7, 6, 7, 6, 21, 20, 23, 22,
+ 23, 22, 23, 22, 50, 55, 54, 55, 54, 55, 54, 53, 52, 39, 38, 39, 38, 47, 1, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6,
+ 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 52, 55, 54, 55, 54, 55, 54, 19, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7,
+ 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 23, 3, 37, 19, 13, 1, 3, 37, 27, 1, 5, 3, 45, 1, 19,
+ 5, 2,150, 91, 39, 39, 33, 32, 16, 16, 16, 16, 32, 33, 39, 39, 91, 38, 40, 32, 33, 16, 16, 16, 16, 33, 32, 40, 84, 66, 51, 57,
+ 41, 43, 24, 23, 23, 23, 44, 43, 55, 54, 63, 65, 51, 58, 40, 43, 24, 23, 23, 23, 44, 43, 55, 54, 62,116,106,101, 86, 84, 44, 43,
+ 43, 40, 88, 82,105,105,117,115,107,100, 86, 84, 44, 42, 42, 40, 88, 81,105,106,116,117,254,223,122,254,222, 1, 34,122, 1, 33,
+117,118, 1, 33,122, 1, 34,254,222,122,254,223, 3, 4, 17, 18, 30, 35, 38, 40, 44, 45, 39, 39, 34, 30, 18, 17, 17, 18, 30, 34,
+ 39, 39, 45, 44, 40, 38, 35, 30, 18,101, 24, 25, 41, 42, 58, 54, 63, 59, 57, 55, 44, 43, 23, 24, 24, 25, 41, 42, 57, 55,122, 56,
+ 56, 44, 43, 23, 24, 1, 17, 44, 42, 85, 84,104,103,121,114,105, 99, 89, 84, 43, 44, 44, 42, 85, 83,105,103,116,118,106, 98, 90,
+ 82, 45, 44, 6,254,222,122,254,223,118,118,254,224,122,254,222, 1, 34,122, 1, 32,118,118, 1, 33,122, 0, 0, 0, 7, 0, 50,
+255,237, 4,159, 5, 57, 0, 8, 0,147, 0,156, 0,167, 0,178, 0,193, 0,208, 0, 0, 1, 17, 34, 7, 6, 21, 20, 23, 22, 19,
+ 23, 22, 51, 50, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 47, 1, 21, 20, 23, 22, 21, 20,
+ 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 61, 1, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50,
+ 23, 22, 51, 50, 63, 1, 39, 38, 35, 34, 7, 6, 35, 34, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 31, 1,
+ 53, 52, 39, 38, 53, 52, 55, 54, 50, 23, 22, 21, 20, 7, 6, 29, 1, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7,
+ 6, 7, 6, 35, 34, 39, 38, 35, 34, 15, 1, 17, 50, 55, 54, 53, 52, 39, 38, 19, 37, 38, 39, 38, 35, 34, 7, 6, 7, 6, 1, 5,
+ 22, 23, 22, 51, 50, 55, 54, 55, 54, 19, 37, 6, 21, 20, 23, 22, 23, 22, 51, 50, 55, 54, 51, 50, 13, 1, 54, 53, 52, 39, 38, 39,
+ 38, 35, 34, 7, 6, 35, 34, 2,105, 34, 40, 25, 31, 45,137, 14, 43, 83, 25, 30, 15, 13, 73, 57, 75, 14, 9, 20, 35, 89, 16, 17,
+ 46, 54, 67, 38, 52, 60, 14, 70, 52, 44, 67, 68, 72, 63, 44, 52, 70, 15, 57, 54, 40, 66, 53, 45, 18, 17, 89, 34, 21, 9, 15, 75,
+ 56, 73, 14, 14, 30, 26, 83, 42, 15, 15, 41, 82, 27, 31, 14, 14, 73, 56, 74, 16, 9, 21, 34, 89, 17, 18, 45, 53, 68, 38, 51, 60,
+ 15, 70, 52, 44, 67,136, 67, 44, 52, 70, 14, 58, 54, 40, 65, 54, 46, 17, 16, 89, 35, 20, 9, 14, 75, 57, 73, 13, 15, 30, 27, 82,
+ 42,128, 34, 40, 24, 30, 45,141, 1, 54, 17, 50, 8, 10, 25, 35, 57, 20, 30,254,126,254,201, 17, 51, 8, 10, 25, 35, 57, 20, 29,
+ 59,254,201, 10, 4, 5, 48, 49, 43, 8, 8, 23, 24, 53, 1,128, 1, 54, 11, 4, 6, 48, 48, 44, 8, 7, 24, 24, 53, 3, 96, 1,
+129, 37, 23, 59, 71, 44, 65,254,222, 10, 28, 3, 1, 36, 46, 63, 39, 33, 51, 38, 64, 27, 5, 33, 42, 89,120, 36, 9, 18, 73,109,
+ 80, 84, 93, 45, 69, 69, 48, 90, 84, 80,109, 73, 18, 9, 34,122, 90, 41, 33, 5, 28, 63, 38, 51, 33, 39, 64, 45, 36, 1, 3, 28,
+ 10, 9, 28, 3, 1, 35, 44, 65, 39, 33, 50, 39, 63, 28, 5, 33, 42, 89,120, 36, 8, 17, 73,109, 81, 84, 92, 46, 69, 69, 46, 92,
+ 84, 81,109, 73, 17, 8, 35,121, 90, 41, 33, 5, 26, 65, 38, 50, 34, 39, 63, 46, 35, 1, 3, 28,214,254,126, 38, 22, 60, 71, 44,
+ 64, 1,137,193, 32, 18, 4, 22, 35, 51, 74,254,243,193, 32, 18, 3, 21, 35, 51, 74, 1, 13,193, 19, 30, 17, 22, 34, 30, 30, 1,
+ 4,220,193, 20, 29, 18, 21, 34, 30, 30, 1, 3, 0, 1, 0, 32, 0, 2, 4,177, 5, 87, 0, 65, 0, 0, 1, 39, 7, 39, 55, 39,
+ 55, 23, 53, 51, 21, 23, 53, 39, 55, 23, 53, 51, 21, 55, 23, 7, 21, 55, 53, 51, 21, 55, 23, 7, 23, 7, 39, 7, 23, 55, 23, 7,
+ 23, 7, 39, 21, 35, 53, 39, 21, 23, 7, 39, 21, 35, 53, 7, 39, 55, 53, 7, 21, 35, 53, 7, 39, 55, 39, 55, 23, 2, 1,207,168,
+ 52,116,169, 52,169,104,207,168, 52,116,103,116, 52,168,207,104,169, 52,169,116, 52,168,207,207,168, 52,116,169, 52,169,104,207,
+168, 52,116,103,116, 52,168,207,104,169, 52,169,116, 52,168, 2,173,126,102, 95, 70,104, 96,105,142,205,127,254,102, 95, 71,208,
+208, 71, 95,102,253,126,205,142,105, 96,104, 70, 95,102,126,127,102, 95, 70,104, 95,104,142,205,127,254,102, 95, 71,208,208, 71,
+ 95,102,254,127,205,142,104, 95,104, 70, 95,102, 0, 7, 0, 48,255,250, 4,161, 4,179, 0, 29, 0, 33, 0, 37, 0, 41, 0, 45,
+ 0, 49, 0, 53, 0, 0, 1, 51, 21, 55, 17, 55, 23, 7, 23, 7, 23, 7, 39, 17, 39, 21, 35, 53, 7, 17, 7, 39, 55, 39, 55, 39,
+ 55, 23, 17, 23, 7, 21, 23, 53, 55, 7, 21, 55, 5, 7, 23, 55, 37, 7, 23, 55, 5, 7, 21, 63, 1, 21, 23, 53, 2, 56, 97,236,
+214, 49,216,237,236,215, 49,214,236, 97,236,214, 49,215,236,237,216, 49,214,236,138,138,235,138,138,254, 91,139,138,138, 1, 76,
+137,138,138,254, 90,138,138, 97,138, 4,179,249,136,254,240,125, 84,125,136,136,123, 85,125,254,239,137,248,248,137, 1, 17,125,
+ 85,123,136,136,125, 84,125, 1, 16,136, 32,159, 80,159, 80, 80,159, 80, 85, 80, 79, 79, 80, 80, 79, 79, 83, 80,160, 80,160,160,
+ 80,160, 0, 0, 0, 1, 0, 25, 0, 5, 4,184, 4,192, 0, 65, 0, 0, 1, 51, 21, 55, 23, 7, 21, 55, 53, 51, 21, 55, 23, 7,
+ 23, 7, 39, 7, 23, 55, 23, 7, 23, 7, 39, 21, 35, 53, 39, 21, 23, 7, 39, 21, 35, 53, 7, 39, 55, 53, 7, 21, 35, 53, 7, 39,
+ 55, 39, 55, 23, 55, 39, 7, 39, 55, 39, 55, 23, 53, 51, 21, 23, 53, 39, 55, 23, 2, 57, 97,114, 81,195,218,162, 72, 49, 74,113,
+ 81,195,216,217,195, 81,114, 73, 49, 75,162,214,195, 81,114, 97,114, 81,195,216,162, 74, 49, 72,114, 81,195,217,215,195, 82,114,
+ 75, 49, 73,162,219,195, 81,114, 4,191, 84, 66,141,113,249,126,226,132, 42, 84, 43, 66,141,112,124,126,113,141, 65, 43, 84, 43,
+131,225,124,247,113,141, 66, 84, 82, 66,140,113,251,124,225,131, 43, 84, 42, 65,142,113,125,124,113,141, 66, 43, 84, 41,131,225,
+126,252,112,141, 66, 0, 0, 0, 0, 1, 0, 50,255,238, 4,159, 4,216, 0,135, 0, 0, 1, 22, 21, 20, 7, 6, 7, 6, 35, 34,
+ 39, 38, 39, 7, 23, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 53, 52, 55, 39, 21, 22,
+ 23, 30, 1, 20, 14, 1, 34, 46, 1, 52, 54, 55, 54, 55, 53, 7, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 53, 52, 55,
+ 54, 55, 54, 50, 23, 22, 23, 55, 39, 6, 7, 6, 35, 34, 46, 1, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 23, 53,
+ 38, 39, 46, 1, 52, 54, 55, 54, 51, 50, 30, 1, 20, 6, 7, 6, 7, 21, 55, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 4,137,
+ 22, 22, 22, 37, 39, 43, 44, 37, 15, 14,196,196, 14, 15, 37, 44, 43, 39, 37, 22, 22, 22, 23, 36, 39, 43, 41, 40, 38, 22, 21, 3,
+196, 17, 16, 37, 44, 44, 75, 87, 75, 44, 44, 37, 16, 17,196, 3, 21, 22, 38, 38, 43, 44, 38, 37, 22, 22, 22, 22, 37, 39, 86, 38,
+ 15, 14,196,196, 13, 16, 40, 41, 44, 75, 44, 22, 22, 37, 39, 43, 41, 40, 38, 22, 21, 3,196, 17, 16, 37, 44, 44, 37, 38, 43, 44,
+ 75, 44, 44, 37, 16, 17,196, 3, 21, 21, 39, 37, 44, 43, 39, 41, 3,157, 44, 37, 43, 39, 37, 22, 22, 22, 9, 12,113,113, 12, 9,
+ 22, 22, 22, 38, 38, 43, 42, 38, 38, 22, 22, 22, 21, 38, 37, 44, 18, 17,114,227, 6, 8, 22, 75, 88, 75, 44, 44, 75, 88, 75, 22,
+ 8, 6,227,114, 17, 18, 44, 37, 38, 21, 22, 22, 21, 38, 37, 44, 43, 38, 38, 22, 22, 22, 9, 12,113,113, 12, 9, 22, 44, 75, 88,
+ 37, 38, 21, 22, 22, 21, 38, 37, 44, 18, 17,114,227, 5, 9, 22, 75, 88, 75, 21, 22, 43, 75, 88, 75, 22, 9, 5,227,114, 17, 18,
+ 44, 37, 36, 23, 22, 22, 24, 0, 0, 9, 0, 41,255,235, 4,168, 4,106, 0, 7, 0, 11, 0, 15, 0, 19, 0, 23, 0, 46, 0, 69,
+ 0, 92, 0,115, 0, 0, 0, 20, 6, 34, 38, 52, 54, 50, 9, 1, 55, 9, 2, 55, 1, 37, 1, 39, 9, 2, 39, 1, 55, 38, 39, 38,
+ 39, 38, 53, 52, 55, 54, 55, 54, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 3, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 34,
+ 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 39, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23,
+ 22, 5, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 2,218, 67, 93, 67, 67, 93, 1,
+ 64,254,220, 64, 1, 36,253,198,254,221, 64, 1, 35, 1,250,254,220, 64, 1, 36,254, 70,254,221, 64, 1, 35,139, 43, 11, 17, 3,
+ 1, 1, 3, 11, 17, 87, 17, 11, 3, 1, 1, 3, 17, 11, 44, 44, 11, 17, 3, 1, 1, 3, 11, 17, 87, 17, 11, 3, 1, 1, 3, 17,
+ 11,120, 45, 18, 28, 51, 22, 62, 52, 23, 49, 24, 37, 37, 24, 49, 23, 52, 62, 22, 51, 28, 18, 1,116, 45, 18, 28, 51, 22, 62, 52,
+ 23, 49, 24, 37, 37, 24, 49, 23, 52, 62, 22, 51, 28, 18, 2,102, 94, 67, 67, 94, 66,253,223, 1, 37, 64,254,219, 1,186, 1, 35,
+ 64,254,221,227,254,219, 64, 1, 37,253,198,254,221, 64, 1, 35,228, 45, 18, 28, 52, 21, 62, 52, 23, 49, 24, 37, 37, 24, 49, 23,
+ 52, 62, 21, 52, 28, 18,254,140, 45, 18, 28, 51, 22, 62, 52, 23, 49, 24, 37, 37, 24, 49, 23, 52, 62, 22, 51, 28, 18,209, 43, 12,
+ 17, 3, 1, 2, 2, 11, 18, 86, 17, 11, 3, 1, 1, 3, 17, 11, 43, 43, 11, 17, 3, 1, 1, 3, 11, 17, 86, 18, 11, 2, 2, 1,
+ 3, 17, 12, 0, 0, 9, 0, 33,255,227, 4,176, 4,114, 0, 7, 0, 11, 0, 15, 0, 19, 0, 23, 0, 43, 0, 63, 0, 83, 0,103,
+ 0, 0, 0, 20, 6, 34, 38, 52, 54, 50, 1, 55, 23, 7, 1, 55, 23, 7, 1, 23, 7, 39, 1, 23, 7, 39, 2, 20, 7, 6, 7, 6,
+ 34, 39, 38, 39, 38, 52, 55, 54, 55, 54, 50, 23, 22, 23, 18, 20, 7, 6, 7, 6, 34, 39, 38, 39, 38, 52, 55, 54, 55, 54, 50, 23,
+ 22, 23, 0, 50, 23, 22, 23, 22, 20, 7, 6, 7, 6, 34, 39, 38, 39, 38, 52, 55, 54, 55, 36, 50, 23, 22, 23, 22, 20, 7, 6, 7,
+ 6, 34, 39, 38, 39, 38, 52, 55, 54, 55, 3, 21,101,143,101,101,143,254, 4,227, 66,228, 2, 3,228, 65,227,253,187,228, 66,227,
+ 2,134,227, 65,228, 6, 14, 16, 30, 35, 85, 35, 30, 16, 14, 14, 16, 30, 35, 85, 35, 30, 16, 14, 14, 16, 30, 35, 85, 35, 30, 16,
+ 14, 14, 16, 30, 35, 85, 35, 30, 16,253,199, 86, 37, 42, 27, 31, 31, 27, 42, 37, 86, 38, 42, 27, 30, 30, 27, 42, 3, 75, 86, 38,
+ 42, 27, 30, 30, 27, 42, 38, 86, 37, 42, 27, 31, 31, 27, 42, 2,126,142,102,102,142,101,253,223,227, 65,227, 2,134,227, 65,227,
+ 1, 36,227, 65,227,253,252,227, 65,227, 2,132, 86, 37, 42, 27, 31, 31, 27, 42, 37, 86, 38, 42, 27, 30, 30, 27, 42,252,181, 86,
+ 38, 42, 27, 30, 30, 27, 42, 38, 86, 37, 42, 27, 31, 31, 27, 42, 1,204, 14, 16, 30, 35, 85, 35, 30, 16, 14, 14, 16, 30, 35, 85,
+ 35, 30, 16, 14, 14, 16, 30, 35, 85, 35, 30, 16, 14, 14, 16, 30, 35, 85, 35, 30, 16, 0, 0, 0, 0, 9, 0, 23,255,234, 4,186,
+ 4,141, 0, 12, 0, 25, 0, 38, 0, 51, 0, 64, 0, 77, 0, 89, 0, 97, 0,109, 0, 0, 1, 20, 7, 6, 43, 1, 37, 53, 37, 51,
+ 50, 23, 22, 5, 52, 55, 54, 59, 1, 5, 21, 5, 35, 34, 39, 38, 1, 22, 21, 20, 15, 2, 39, 63, 1, 54, 51, 50, 1, 38, 53, 52,
+ 63, 2, 23, 15, 1, 6, 35, 34, 3, 54, 51, 50, 31, 2, 7, 47, 1, 38, 53, 52, 1, 6, 35, 34, 47, 2, 55, 31, 1, 22, 21, 20,
+ 0, 50, 23, 22, 29, 1, 3, 35, 3, 53, 52, 55, 18, 20, 6, 34, 38, 52, 54, 50, 2, 34, 39, 38, 61, 1, 19, 51, 19, 21, 20, 7,
+ 4,185, 21, 22, 30, 8,254,193, 1, 63, 8, 29, 23, 21,251, 95, 21, 22, 30, 8, 1, 63,254,193, 8, 29, 23, 21, 3,244, 22, 20,
+ 6,252, 54,198, 5, 21, 32, 32,252,207, 22, 20, 6,252, 54,198, 5, 21, 32, 30, 24, 22, 32, 31, 22, 5,198, 54,252, 6, 20, 3,
+ 93, 23, 31, 32, 21, 5,198, 54,252, 6, 20,254, 39, 63, 23, 22, 38, 77, 38, 22,169, 67, 95, 67, 67, 95, 16, 63, 23, 22, 38, 77,
+ 38, 22, 2, 60, 32, 23, 22, 39, 76, 38, 22, 23, 31, 31, 23, 22, 38, 76, 39, 22, 23, 1,195, 22, 33, 30, 22, 5,198, 54,252, 5,
+ 22,252,162, 23, 32, 30, 22, 5,198, 54,252, 5, 22, 3, 94, 23, 22, 5,252, 54,198, 5, 21, 31, 33,252,207, 23, 22, 5,252, 54,
+198, 5, 21, 31, 32, 3,222, 23, 21, 31, 7,254,194, 1, 62, 7, 30, 22,253,245, 95, 67, 67, 95, 68,253, 60, 22, 21, 31, 7, 1,
+ 62,254,194, 7, 30, 22, 0, 0, 0, 1, 0, 34,255,233, 4,175, 4, 27, 0,108, 0, 0, 1, 50, 23, 22, 21, 20, 7, 3, 19, 54,
+ 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 7, 5, 37, 54, 51, 50, 23, 22, 20, 7, 6, 35, 34, 39, 37, 5, 22, 51, 22, 21, 20, 7,
+ 6, 35, 34, 39, 38, 39, 3, 19, 22, 21, 20, 7, 6, 34, 39, 38, 53, 52, 55, 19, 3, 6, 7, 6, 35, 34, 39, 38, 53, 52, 55, 50,
+ 55, 37, 5, 6, 35, 34, 39, 38, 52, 55, 54, 51, 50, 23, 5, 37, 38, 39, 38, 53, 52, 55, 54, 51, 22, 23, 22, 23, 19, 3, 38, 53,
+ 52, 55, 54, 2,104, 33, 35, 27, 4, 59,214, 15, 2, 39, 38, 49, 24, 22, 39, 8, 18,254,219, 1,104, 19, 9, 57, 26, 35, 35, 27,
+ 56, 5, 28,254,157, 1, 41, 21, 1, 39, 22, 24, 49, 33, 44, 8, 13,210, 59, 4, 27, 35, 65, 35, 27, 4, 59,210, 13, 8, 39, 38,
+ 49, 24, 22, 39, 1, 21, 1, 41,254,157, 28, 5, 56, 27, 35, 35, 26, 57, 9, 19, 1,104,254,219, 18, 8, 39, 22, 24, 49, 27, 50,
+ 2, 15,214, 59, 4, 27, 35, 4, 26, 32, 24, 52, 5, 21,254,181, 1, 16, 20, 1, 37, 22, 21, 46, 38, 33, 6, 12,194, 54, 3, 23,
+ 32, 61, 32, 25, 4, 54,196, 16, 37, 34, 46, 21, 22, 37, 7, 17, 1, 13,254,181, 21, 5, 51, 25, 32, 32, 25, 51, 9, 21, 1, 71,
+254,243, 17, 7, 37, 22, 21, 46, 53, 18, 16,196, 54, 4, 25, 32, 61, 32, 23, 3, 54,194, 12, 6, 37, 34, 46, 21, 22, 14, 23, 1,
+ 20,254,240, 1, 71, 21, 9, 52, 24, 32, 0, 0, 0, 2, 0, 36,255,245, 4,173, 4, 56, 0, 11, 0, 33, 0, 0, 19, 20, 0, 32,
+ 0, 53, 52, 46, 1, 34, 14, 1, 1, 6, 35, 34, 0, 53, 52, 18, 36, 51, 50, 23, 54, 51, 50, 4, 18, 21, 20, 0, 35, 34, 95, 1,
+ 28, 1,148, 1, 28,130,233,246,233,130, 2, 9, 18, 18,224,254,192,147, 1, 6,135, 18, 18, 18, 17,138, 1, 6,146,254,192,226,
+ 17, 2, 22,201,254,227, 1, 29,201,128,232,126,126,232,253, 97, 1, 1, 62,226,141, 1, 7,141, 1, 1,141,254,251,143,226,254,
+194, 0, 0, 0, 0, 2, 0, 69,255,193, 4,140, 4, 9, 0, 3, 0, 11, 0, 0, 37, 17, 33, 17, 23, 35, 17, 33, 21, 51, 17, 33,
+ 4, 14,252,112, 12, 69, 4, 2, 69,251,254, 63, 3,144,252,112, 57, 4, 2, 69,251,255, 0, 0, 0, 2, 0, 61, 0, 0, 4,148,
+ 4, 86, 0, 3, 0, 11, 0, 0, 37, 17, 33, 17, 37, 21, 33, 17, 51, 53, 33, 17, 4, 20,252, 99, 3,215,251,240, 69, 4, 16, 58,
+ 3,156,252,100, 12, 70, 4, 16, 70,251,240, 0, 0, 2, 0, 56,255,184, 4,153, 4, 25, 0, 3, 0, 9, 0, 0, 37, 17, 33, 17,
+ 7, 17, 33, 23, 17, 33, 4, 24,252, 91, 58, 4, 25, 70,251,252, 58, 3,164,252, 92, 59, 4, 25, 91,251,252, 0, 0, 2, 0, 48,
+ 0, 0, 4,161, 4,113, 0, 3, 0, 9, 0, 0, 37, 17, 33, 17, 5, 33, 17, 55, 33, 17, 4, 30,252, 78, 3,237,251,215, 93, 4,
+ 20, 60, 3,178,252, 78, 59, 4, 41, 71,251,237, 0, 4, 0, 43,255,250, 4,166, 4,116, 0, 3, 0, 7, 0, 11, 0, 15, 0, 0,
+ 19, 9, 14, 44, 1, 3, 1, 4,254,252, 1,111, 1, 4, 1, 3,254,253,253,196, 1, 4, 1, 4,254,252,254,252, 1, 4, 1, 4,
+254,252, 2, 57, 1, 3,254,253,254,252, 1, 4, 1, 2,254,254,254,251, 2, 59, 1, 5,254,251,254,253,254,146, 1, 4,254,252,
+254,252, 0, 0, 0, 1, 2, 27,255, 12, 2,182, 5,156, 0, 3, 0, 0, 1, 17, 35, 17, 2,182,155, 5,156,249,113, 6,143, 0,
+ 0, 1, 1,205,255, 10, 3, 4, 5,153, 0, 3, 0, 0, 1, 17, 33, 17, 3, 3,254,203, 5,153,249,114, 6,142, 0, 1, 1, 81,
+254,203, 3,128, 5,107, 0, 3, 0, 0, 1, 17, 33, 17, 3,127,253,211, 5,107,249, 96, 6,160, 0, 1, 1,221, 3,207, 2,244,
+ 5,217, 0, 6, 0, 0, 1, 33, 17, 55, 51, 7, 51, 2,244,254,233,125, 98, 62,118, 3,207, 1, 23,243,243, 0, 0, 1, 1,211,
+ 3,196, 2,254, 5,199, 0, 6, 0, 0, 1, 33, 17, 7, 35, 55, 35, 1,212, 1, 41,133,105, 67,126, 5,198,254,238,239,239, 0,
+255,255, 1, 0, 3,207, 3,209, 5,217, 16, 39, 10, 63, 0,221, 0, 0, 16, 7, 10, 63,255, 35, 0, 0, 0, 0,255,255, 0,246,
+ 3,196, 3,219, 5,199, 16, 39, 10, 64, 0,221, 0, 0, 16, 7, 10, 64,255, 35, 0, 0, 0, 0, 0, 2, 0,103,255, 93, 4,106,
+ 5,129, 0, 79, 0, 83, 0, 0, 1, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6, 35, 34, 7, 6, 7, 6, 7, 6,
+ 20, 23, 22, 23, 22, 23, 22, 51, 50, 55, 54, 55, 54, 55, 54, 53, 17, 35, 34, 39, 38, 53, 52, 54, 59, 1, 53, 55, 21, 33, 7, 35,
+ 17, 20, 7, 6, 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 37, 17, 35, 17, 1,185, 25, 21,
+ 22, 18, 17, 10, 8, 8, 10, 17, 18, 22, 21, 21, 23, 16, 15, 13, 14, 6, 7, 8, 8, 13, 16, 13, 19, 26, 52, 50, 59, 37, 45, 20,
+ 22,250,180,110, 96,212,174,250,114, 1, 21,114,163, 30, 35, 50, 54, 65, 64, 58, 86, 55, 58, 36, 41, 18, 19, 19, 21, 38, 31, 55,
+ 46, 1, 89,155, 1,113, 9, 10, 17, 16, 24, 22, 25, 24, 22, 24, 16, 17, 10, 9, 7, 6, 13, 13, 16, 16, 37, 17, 18, 11, 15, 5,
+ 7, 22, 27, 36, 46, 50, 55, 55, 1, 29,103, 91,149,154,189,163, 40,203,100,252,162, 86, 68, 81, 52, 57, 31, 30, 20, 21, 37, 42,
+ 44, 48, 52, 63, 40, 41, 45, 35, 23, 20,250, 1,230,254, 26, 0, 0, 2, 0,255,255,217, 3,210, 4,201, 0, 23, 0, 53, 0, 0,
+ 1, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 18, 50, 23, 22, 23, 22, 23, 22,
+ 21, 20, 7, 6, 7, 6, 7, 6, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 2,104,130, 99, 34, 36, 31, 15, 16,110,
+145,106,108,142,110, 16, 15, 31, 30, 40, 76,102,101, 42, 43, 36, 36, 18, 17, 17, 18, 36, 36, 43, 42,101, 42, 43, 36, 37, 17, 17,
+ 17, 17, 37, 36, 43, 4,201, 33, 11, 35, 31, 39, 40, 42,100, 82,106,168,168,106, 83, 99, 42, 40, 39, 31, 29, 17, 33,252,249, 18,
+ 20, 34, 37, 42, 44, 50, 48, 44, 43, 37, 34, 20, 17, 17, 20, 34, 37, 43, 44, 48, 50, 44, 42, 37, 34, 20, 0, 0, 0, 2, 0,190,
+255,227, 4, 19, 4,211, 0, 37, 0, 67, 0, 0, 1, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 50, 23, 22, 23, 22, 23, 22, 21,
+ 52, 55, 54, 55, 54, 55, 54, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 2, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6,
+ 7, 6, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 2,104, 99,216,110, 16, 15, 31, 30, 40, 37, 88, 37, 38, 31, 30,
+ 16, 16, 17, 16, 30, 31, 38, 38, 87, 37, 40, 30, 31, 15, 16,110,216,150,101, 42, 43, 36, 36, 18, 17, 17, 18, 36, 36, 43, 42,101,
+ 42, 43, 36, 37, 17, 17, 17, 17, 37, 36, 43, 2, 44,159,131, 68,106, 42, 40, 39, 31, 29, 17, 16, 16, 16, 30, 30, 40, 38, 44, 44,
+ 38, 40, 30, 30, 16, 16, 16, 17, 29, 31, 39, 40, 42,107, 67,131,255, 0, 17, 20, 34, 38, 42, 44, 49, 49, 44, 42, 37, 35, 19, 18,
+ 18, 19, 35, 37, 42, 44, 49, 49, 44, 42, 38, 34, 20, 0, 0, 0, 0, 1, 0, 46, 0,105, 4,163, 4, 15, 0, 37, 0, 0, 37, 38,
+ 37, 38, 53, 52, 55, 54, 55, 54, 55, 54, 50, 23, 22, 23, 22, 23, 22, 21, 52, 55, 54, 55, 54, 55, 54, 50, 23, 22, 23, 22, 23, 22,
+ 21, 20, 7, 4, 2,104,104,254,195,148, 21, 21, 42, 40, 52, 50,117, 50, 52, 41, 40, 22, 21, 22, 22, 40, 41, 52, 50,117, 50, 52,
+ 40, 42, 21, 21,148,254,195,105,194,197, 92,144, 61, 57, 55, 44, 42, 25, 23, 23, 24, 43, 42, 57, 54, 64, 64, 54, 57, 42, 43, 24,
+ 23, 23, 25, 42, 44, 55, 57, 61,146, 90,197, 0, 0, 1, 0,114,255,251, 4, 95, 5, 25, 0, 39, 0, 0, 1, 6, 3, 6, 35, 34,
+ 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 50,
+ 23, 18, 4, 95,209,211,100,156, 65, 61, 59, 48, 45, 26, 25, 25, 24, 47, 46, 61, 58, 68, 68, 58, 61, 46, 47, 24, 25, 25, 26, 45,
+ 48, 59, 61, 65,158, 98,211, 2,138,120,254,148,170, 24, 23, 49, 46, 61, 56, 68, 67, 57, 60, 47, 46, 26, 24, 25, 24, 47, 48, 59,
+ 56, 69, 66, 58, 59, 47, 48, 24, 25,170,254,146, 0, 2, 0, 65, 0, 25, 4,144, 4,137, 0, 13, 0,105, 0, 0, 1, 54, 53, 52,
+ 39, 38, 35, 34, 7, 6, 21, 20, 23, 22, 23, 6, 7, 54, 51, 50, 23, 22, 21, 20, 7, 6, 21, 20, 51, 50, 55, 54, 51, 50, 21, 20,
+ 33, 34, 39, 38, 53, 16, 51, 50, 23, 54, 55, 38, 39, 38, 35, 34, 7, 6, 21, 20, 22, 21, 20, 7, 6, 35, 34, 39, 38, 53, 52, 55,
+ 54, 51, 50, 31, 1, 52, 55, 54, 51, 50, 23, 22, 21, 20, 7, 22, 51, 50, 55, 54, 53, 52, 39, 38, 53, 52, 55, 54, 51, 50, 23, 22,
+ 21, 20, 7, 6, 35, 34, 2,198, 8, 24, 19, 44, 24, 19, 15, 35, 60, 90, 17, 37, 76, 70,101, 48, 36,251,124, 85, 94, 14, 41, 44,
+ 51,255, 0,166,151,161,212, 83, 66, 63, 13, 82,187, 56, 60, 68, 51, 33, 35, 22, 29, 16, 26, 20, 12, 94, 76, 95, 85, 40, 61, 33,
+ 35, 63, 62, 40, 41, 13, 49, 70, 61, 34, 37, 17, 34, 17, 25, 46, 52, 34, 17,116, 78, 97, 53, 3,140, 38, 36, 52, 33, 27, 15, 12,
+ 22, 47, 28, 46,114, 60, 64, 54, 66, 50, 76,178, 95, 48, 62, 81, 35,107, 73,127,124,133,206, 1, 34,114,122, 55, 38,139, 41, 63,
+ 41, 44, 30, 31, 23, 19, 16, 23, 37, 20, 61, 94, 75, 61, 30, 46, 67, 25, 26, 50, 54, 70, 64, 49, 14, 27, 29, 25, 51, 15, 29, 17,
+ 46, 22, 33, 57, 27, 43, 99, 77, 51, 0, 0, 0, 0, 2, 0, 49, 1, 51, 4,160, 3,198, 0, 7, 0, 78, 0, 0, 1, 6, 7, 6,
+ 7, 54, 55, 54, 1, 32, 53, 52, 55, 38, 39, 38, 7, 22, 7, 6, 7, 22, 51, 50, 55, 22, 21, 20, 35, 34, 39, 35, 53, 51, 54, 55,
+ 54, 55, 38, 39, 38, 39, 38, 53, 52, 51, 6, 21, 20, 23, 22, 23, 50, 23, 22, 23, 38, 53, 52, 55, 54, 51, 50, 19, 22, 51, 50, 53,
+ 52, 39, 38, 53, 52, 51, 50, 21, 20, 7, 6, 1, 53, 51, 37, 53, 22, 64, 50, 54, 1,154,254,209, 96, 39, 44, 32, 32, 2, 61, 78,
+ 82, 21, 54, 35, 33, 6,118, 87, 16, 29, 31, 25, 82, 62, 52, 13, 29, 28, 50, 58, 79, 9,116, 53, 4, 49, 34, 34, 46, 25, 49, 38,
+ 88,176, 46, 20, 82, 79, 9, 9, 65, 53,200,143, 2,189, 11, 30, 41, 84, 24, 47, 49,254,165,206, 56, 54, 44, 23, 17, 1, 70, 65,
+ 83, 12, 58, 35, 24, 40, 61,139, 58,116, 65, 48, 2, 15, 14, 15, 11, 14, 57, 83, 24, 28, 31, 68, 32, 20, 16, 16, 39, 65, 35, 53,
+ 31, 24,254,215,125, 49, 24, 15, 14, 22, 49, 66,141, 79, 57, 0, 0, 1, 0,240,255,155, 3,225, 5,130, 0, 32, 0, 0, 5, 34,
+ 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 51, 21, 34, 7, 14, 1, 7, 6, 21, 20, 23, 22, 23, 22, 23, 22, 51, 3,
+225,151,138,131,112,109, 56, 56, 56, 52,113,108,135,138,151, 89, 84, 78,135, 33, 32, 32, 33, 67, 64, 82, 80, 93,101, 58, 54,112,
+108,135,134,152,153,137,128,116,109, 57, 58, 39, 54, 50,213,126,127,149,144,127,126,106,102, 55, 55, 0, 0, 0, 0, 1, 0,240,
+255,155, 3,225, 5,130, 0, 34, 0, 0, 23, 48, 53, 50, 55, 54, 55, 54, 55, 54, 53, 52, 39, 46, 1, 39, 38, 35, 48, 53, 50, 23,
+ 22, 23, 22, 23, 22, 21, 20, 7, 6, 7, 6, 7, 6,240, 93, 80, 82, 64, 67, 33, 32, 32, 33,135, 78, 84, 89,151,138,135,108,113,
+ 52, 56, 56, 56,109,112,131,138,101, 39, 54, 55,102,106,126,127,144,149,127,126,213, 50, 55, 38, 58, 57,109,116,127,138,153,152,
+133,136,108,111, 55, 58, 0, 0, 0, 1, 1,102,255,135, 3,107, 5, 82, 0, 12, 0, 0, 1, 6, 2, 16, 18, 23, 33, 38, 2, 53,
+ 52, 18, 55, 3,106,108,106,106,108,254,239,121,121,120,122, 5, 81,187,254,147,254,137,254,143,186,191, 1,113,182,181, 1,112,
+191, 0, 0, 0, 0, 1, 1,110,255,135, 3, 99, 5, 36, 0, 15, 0, 0, 1, 48, 33, 22, 18, 21, 20, 7, 6, 7, 33, 54, 55, 54,
+ 16, 2, 1,110, 1, 9,119,117, 59, 59,118,254,247,105, 52, 51,102, 5, 36,186,254,156,176,176,179,179,185,181,178,178, 1,108,
+ 1, 99, 0, 0, 0, 1, 1, 67,255,125, 3,142, 5, 85, 0, 5, 0, 0, 5, 35, 9, 1, 51, 1, 3,141,213,254,140, 1,116,213,
+254,138,130, 2,235, 2,236,253, 20, 0, 0, 0, 0, 1, 1, 68,255,125, 3,141, 5, 85, 0, 5, 0, 0, 5, 9, 1, 51, 9, 1,
+ 1, 68, 1,117,254,140,212, 1,116,254,140,130, 2,235, 2,236,253, 20,253, 21, 0, 1, 0,210,255, 86, 3,255, 5, 46, 0, 5,
+ 0, 0, 5, 33, 9, 1, 33, 1, 3,254,254,182,254, 31, 1,225, 1, 74,254, 22,169, 2,235, 2,236,253, 20, 0, 0, 1, 0,210,
+255, 86, 3,255, 5, 46, 0, 5, 0, 0, 23, 9, 1, 33, 9, 1,211, 1,234,254, 22, 1, 74, 1,225,254, 31,169, 2,235, 2,236,
+253, 20,253, 21, 0, 1, 0,205,255, 65, 4, 4, 5,209, 0, 5, 0, 0, 5, 33, 9, 1, 33, 1, 4, 3,254,109,254, 94, 1,162,
+ 1,147,254, 92,190, 3, 71, 3, 72,252,184, 0, 0, 1, 0,206,255, 66, 4, 3, 5,210, 0, 5, 0, 0, 23, 9, 1, 33, 9, 1,
+206, 1,163,254, 94, 1,146, 1,162,254, 94,190, 3, 72, 3, 72,252,184,252,184, 0, 1, 1,201,254,229, 3, 8, 5,118, 0, 7,
+ 0, 0, 33, 23, 7, 39, 17, 55, 23, 7, 2, 68,196, 87,232,232, 87,196,195, 87,231, 4,194,231, 87,195, 0, 0, 0, 1, 1,201,
+254,235, 3, 8, 5,124, 0, 7, 0, 0, 1, 39, 55, 23, 17, 7, 39, 55, 2,141,196, 87,232,232, 87,196, 4, 98,195, 87,231,251,
+ 62,231, 87,195, 0, 1, 1, 25,254,184, 3,184, 5, 94, 0, 36, 0, 0, 5, 21, 35, 34, 38, 61, 1, 52, 38, 43, 1, 53, 51, 50,
+ 54, 61, 1, 52, 54, 59, 1, 21, 35, 34, 6, 29, 1, 20, 6, 7, 30, 1, 29, 1, 20, 22, 51, 3,184,151,178,120, 77,101, 44, 44,
+102, 76,120,178,151, 49,100, 61, 65, 79, 79, 65, 61,100,198,130,133,199,215,136,105,128,104,134,216,199,132,129, 79,127,223,141,
+128, 23, 24,128,140,223,127, 79, 0, 1, 0,249,254,176, 3,216, 5,105, 0, 40, 0, 0, 23, 51, 50, 54, 61, 1, 52, 54, 55, 38,
+ 39, 38, 61, 1, 52, 38, 43, 1, 53, 51, 50, 23, 22, 29, 1, 20, 23, 22, 59, 1, 21, 35, 34, 6, 29, 1, 20, 7, 6, 43, 1,250,
+ 53,110, 67, 70, 86, 85, 36, 35, 67,110, 53,165,194, 66, 66, 42, 41,112, 47, 47,111, 84, 66, 66,194,165,204, 80,128,226,142,129,
+ 25, 22, 65, 65,143,225,129, 80,130, 68, 66,201,219,135, 52, 53,130,105,138,217,201, 68, 67, 0, 0, 1, 0, 83, 1, 47, 4,126,
+ 3,229, 0, 8, 0, 0, 9, 1, 35, 1, 33, 53, 33, 1, 51, 4,125,254,165,227, 1, 6,253, 15, 2,241,254,250,227, 2,138,254,
+165, 1, 6,170, 1, 6, 0, 0, 0, 1, 0,116, 0,146, 4, 93, 4,125, 0, 6, 0, 0, 9, 1, 55, 1, 27, 1, 37, 3, 16,253,
+100,148, 2, 94,186, 61,253,164, 1,138, 2, 93,149,253,100, 1, 14,253,164, 62, 0, 1, 0, 83, 1,162, 4,126, 4, 18, 0, 6,
+ 0, 0, 1, 5, 53, 5, 3, 9, 1, 3, 47,253, 37, 2,219, 48, 1,126,254,130, 2,168, 35,170, 35, 1, 5,254,201,254,201, 0,
+ 0, 1, 0,116, 0,193, 4, 93, 4,171, 0, 6, 0, 0, 9, 1, 39, 1, 45, 1, 3, 3,102,253,162,148, 2,156,254,241, 2, 92,
+ 61, 3, 93,253,100,149, 2, 93,186, 62,253,164, 0, 1, 0, 45, 1,161, 4,164, 3,225, 0, 8, 0, 0, 19, 33, 39, 4, 5, 4,
+ 5, 55, 33, 46, 2, 20,128, 1, 9, 1,216,254, 40,254,247,128,253,236, 2,239,242,192, 96, 96,192,242, 0, 0, 0, 1, 0, 73,
+ 1, 41, 4,136, 4, 61, 0, 50, 0, 0, 0, 20, 7, 6, 7, 1, 6, 7, 6, 34, 38, 39, 38, 39, 38, 53, 52, 55, 54, 63, 1, 33,
+ 34, 46, 1, 39, 38, 52, 55, 62, 2, 51, 33, 39, 38, 39, 38, 53, 52, 55, 54, 55, 62, 1, 50, 23, 22, 23, 1, 22, 4,136, 7, 9,
+ 12,254,212, 12, 18, 17, 39, 33, 13, 14, 7, 7, 7, 8, 13,139,253, 96, 19, 33, 27, 8, 6, 6, 8, 27, 33, 19, 2,160,139, 13,
+ 8, 7, 7, 7, 14, 13, 33, 39, 17, 18, 12, 1, 44, 14, 2,198, 38, 16, 18, 13,254,212, 12, 8, 7, 14, 13, 15, 16, 16, 19, 20,
+ 16, 18, 13,140, 14, 26, 18, 16, 38, 16, 18, 26, 15,139, 13, 18, 17, 19, 19, 16, 17, 14, 13, 15, 7, 9, 12,254,212, 14, 0, 0,
+ 0, 1, 0, 83, 1,182, 4,126, 4, 38, 0, 6, 0, 0, 1, 33, 53, 33, 17, 9, 1, 3, 70,253, 14, 2,242, 1, 55,254,201, 2,
+210, 56, 1, 27,254,201,254,201, 0, 1, 0, 45, 1,120, 4,164, 4, 20, 0, 6, 0, 0, 1, 33, 53, 33, 53, 9, 1, 3, 86,252,
+216, 3, 40, 1, 77,254,179, 2,114,168,250,254,178,254,178, 0, 0, 4, 0, 54, 1,117, 4,155, 4, 6, 0, 3, 0, 7, 0, 11,
+ 0, 18, 0, 0, 1, 35, 17, 51, 3, 35, 17, 51, 3, 35, 17, 51, 1, 33, 17, 33, 53, 9, 1, 1,233,180,180,240, 90, 90,150, 45,
+ 45, 2,239,254,211, 1, 45, 1, 73,254,183, 2, 40, 1, 44,254,212, 1, 44,254,212, 1, 44,254,212, 1, 44,178,254,184,254,183,
+ 0, 4, 0, 83, 1,156, 4,126, 4, 11, 0, 8, 0, 12, 0, 16, 0, 20, 0, 0, 1, 53, 22, 23, 6, 7, 53, 33, 17, 3, 35, 17,
+ 51, 3, 35, 17, 51, 3, 35, 17, 51, 3, 70,131,180,180,131,254,227, 57,171,171,228, 85, 85,142, 42, 42, 3,169, 98,218, 93, 94,
+218, 98, 1,171,254, 85, 1,171,254, 85, 1,171,254, 85, 1,171, 0, 1, 0, 83, 1,132, 4,126, 3,244, 0, 6, 0, 0, 1, 33,
+ 17, 33, 53, 9, 1, 3, 70,253, 14, 2,242, 1, 55,254,201, 2, 46, 1, 28,169,254,201,254,201, 0, 2, 0, 96, 1,116, 4,113,
+ 4, 24, 0, 2, 0, 6, 0, 0, 1, 33, 37, 23, 9, 2, 2, 12, 1,168,253,141,113,254,174, 4, 17,251,239, 2,198,203,203, 1,
+ 82,254,174,254,174, 0, 0, 0, 0, 2, 0,123, 1,164, 4, 86, 4, 36, 0, 2, 0, 6, 0, 0, 1, 7, 37, 33, 9, 2, 2, 16,
+192, 2, 83,254, 24,254,192, 3,219,252, 37, 2,228,193,193, 1, 64,254,192,254,192, 0, 0, 0, 0, 1, 0,123, 1, 31, 4, 86,
+ 4,189, 0, 3, 0, 0, 1, 3, 9, 1, 1,116,249, 3,219,252, 37, 2,238, 1,206,254, 50,254, 50, 0, 0, 0, 0, 1, 0, 54,
+ 1,140, 4,155, 4, 61, 0, 22, 0, 0, 19, 17, 20, 23, 22, 23, 22, 23, 22, 51, 33, 53, 9, 1, 53, 33, 34, 39, 38, 39, 38, 39,
+ 38, 54, 14, 13, 27, 26, 32, 32, 36, 2,104, 1, 73,254,183,253,152, 36, 32, 32, 26, 27, 13, 14, 2,213, 1,104, 36, 32, 32, 27,
+ 25, 15, 13,149,254,183,254,183,149, 13, 15, 25, 27, 32, 32, 0, 0, 1, 0, 54, 1,139, 4,155, 4, 60, 0, 22, 0, 0, 19, 52,
+ 55, 54, 55, 54, 55, 54, 51, 33, 53, 9, 1, 53, 33, 34, 7, 6, 7, 6, 7, 6, 21, 54, 14, 13, 27, 26, 32, 32, 36, 2,104, 1,
+ 73,254,183,253,152, 36, 32, 32, 26, 27, 13, 14, 2,243, 36, 32, 32, 27, 25, 15, 13,149,254,183,254,183,149, 13, 15, 25, 27, 32,
+ 32, 36, 0, 0, 0, 1, 1, 79, 1, 6, 3,130, 4,224, 0, 6, 0, 0, 1, 33, 17, 33, 17, 9, 1, 2,101,254,235, 1, 21, 1,
+ 28,254,228, 2, 18, 1,194, 1, 12,254, 19,254, 19, 0, 0, 0, 0, 1, 0, 54, 1,110, 4,155, 4, 0, 0, 8, 0, 0, 1, 53,
+ 22, 5, 4, 7, 53, 33, 17, 2,226,108, 1, 77,254,179,108,253, 84, 3,137,119,230, 99, 99,230,119, 1,164, 0, 0, 2, 0,101,
+ 1,107, 4,108, 4, 33, 0, 8, 0, 15, 0, 0, 1, 53, 33, 17, 33, 53, 51, 9, 1, 39, 21, 9, 1, 21, 33, 21, 2, 95,254, 6,
+ 1,250,178, 1, 91,254,165,121, 1, 34,254,222,254, 6, 1,107,169, 1,100,169,254,165,254,165,226,169, 1, 34, 1, 34,169,242,
+ 0, 2, 0,101, 1, 47, 4,108, 3,229, 0, 8, 0, 15, 0, 0, 1, 53, 33, 17, 33, 53, 51, 9, 1, 39, 21, 9, 1, 21, 33, 21,
+ 2, 95,254, 6, 1,250,178, 1, 91,254,165, 15, 1, 34,254,222,254, 7, 1, 47,169, 1,100,169,254,165,254,165,226,169, 1, 34,
+ 1, 34,169,242, 0, 2, 0, 53, 0,183, 4,156, 3,252, 0, 11, 0, 18, 0, 0, 27, 1, 33, 55, 51, 19, 21, 1, 35, 53, 55, 33,
+ 37, 7, 1, 3, 7, 33, 7, 54,205, 2, 85, 99, 71,153,253,249,106, 15,253,253, 2,182, 98, 1,202,122, 98,253,170,140, 1,239,
+ 1,100,169,254,147,143,254,184,142, 27,199,169, 1, 34, 1, 34,169,242, 0, 0, 0, 2, 0, 97, 0,214, 4,112, 3,171, 0, 11,
+ 0, 18, 0, 0, 19, 53, 33, 39, 53, 51, 1, 21, 3, 35, 39, 33, 1, 33, 23, 33, 23, 55, 37, 97, 1,220, 15, 99, 1,223,142, 65,
+ 91,253,216, 1,196,253,216,129, 2, 40, 90,113,254, 90, 2,157,123, 23,123,254,228,123,254,196,146, 1, 3,210,146,251,251, 0,
+ 0, 2, 0,125, 0,219, 4, 84, 4, 77, 0, 10, 0, 17, 0, 0, 37, 39, 33, 39, 17, 33, 53, 51, 1, 23, 1, 3, 21, 9, 1, 21,
+ 33, 17, 2,147, 59,254,113, 75, 1,202, 82, 1,110, 75,254,146, 97, 1, 50,254,206,254, 54,219,119,150, 1,238,119,254,146,150,
+254,146, 1, 73,119, 1, 50, 1, 50,119,254,138, 0, 2, 0, 84, 0,130, 4,125, 4, 62, 0, 10, 0, 17, 0, 0, 1, 51, 1, 7,
+ 1, 35, 53, 33, 17, 55, 33, 23, 33, 17, 33, 21, 9, 1, 2,150, 90, 1,140, 81,254,116, 90,254, 16, 81, 1,176, 48,254, 16, 1,
+240, 1, 76,254,180, 4, 62,254,115,162,254,115,129, 2, 24,163,228,254,106,129, 1, 76, 1, 75, 0, 2, 0, 50, 1, 78, 4,159,
+ 4,117, 0, 12, 0, 20, 0, 0, 19, 39, 33, 53, 51, 1, 23, 1, 35, 39, 53, 33, 39, 55, 7, 33, 21, 9, 1, 21, 33,163,112, 2,
+133, 83, 1,110, 37,254,146, 82, 38,253,160, 37,181, 85, 2, 97, 1, 50,254,206,253,159, 3, 7,247,119,254,146, 75,254,146, 74,
+ 44, 76,247,187,119, 1, 50, 1, 50,119, 0, 0, 0, 2, 0, 41, 0,253, 4,168, 4, 49, 0, 12, 0, 20, 0, 0, 19, 39, 55, 33,
+ 53, 55, 51, 1, 7, 1, 35, 53, 33, 55, 7, 33, 21, 9, 1, 21, 33,156,114, 38, 2,106, 38, 83, 1,116, 38,254,140, 83,253,112,
+184, 87, 2,108, 1, 54,254,202,253,148, 2,113,251, 77, 44, 76,254,140, 76,254,140,121,251,190,121, 1, 55, 1, 55,121, 0, 0,
+ 0, 1, 0,145, 0,189, 4, 64, 4,172, 0, 33, 0, 0, 19, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 21, 20, 7, 6,
+ 7, 6, 7, 6, 35, 34, 39, 38, 39, 38, 39, 33, 21, 9, 1, 21,145, 32, 54, 73, 89, 90,103, 98, 94, 85, 77, 73, 37, 38, 38, 34,
+ 76, 70, 92, 90,102, 99, 94, 85, 77, 51, 33, 1,231, 1,116,254,140, 3,167, 58, 54, 73, 38, 38, 38, 35, 76, 72, 90, 90,104, 99,
+ 92, 85, 77, 72, 39, 38, 38, 35, 76, 50, 60,129, 1,116, 1,116,128, 0, 0, 0, 0, 9, 0, 88, 1, 78, 4,121, 3, 22, 0, 3,
+ 0, 7, 0, 11, 0, 15, 0, 30, 0, 34, 0, 38, 0, 42, 0, 46, 0, 0, 1, 7, 51, 55, 35, 7, 51, 55, 35, 7, 51, 55, 35, 7,
+ 51, 55, 35, 53, 39, 33, 23, 33, 53, 22, 23, 6, 7, 53, 33, 7, 33, 1, 51, 39, 35, 23, 51, 39, 35, 23, 51, 39, 35, 23, 51, 39,
+ 35, 2, 8,114, 43,113,127,114, 42,114,128,114, 43,114,128,114, 43,114, 86,133, 1,128,133, 1, 22,123,139,139,123,254,234,133,
+254,128, 1,176, 42,113, 43, 29, 42,114, 42, 28, 43,114, 43, 29, 43,114, 43, 2, 21,171,171,171,171,171,171,171,171, 57,199,199,
+198,134, 92, 93,134,198,199, 1, 0,171,171,171,171,171,171,171, 0, 3, 0,116, 0,185, 4, 93, 4,162, 0, 12, 0, 16, 0, 20,
+ 0, 0, 1, 55, 6, 21, 20, 23, 38, 35, 34, 7, 55, 39, 55, 9, 1, 35, 1, 37, 53, 1, 21, 3,178,142, 6, 35,116,133, 54, 57,
+143,207, 46,254,119, 1, 90,230,254,166, 1, 21, 1, 89, 1,147,143, 57, 54,133,116, 34, 6,143,207, 46, 1, 42,254,168, 1, 88,
+ 47,230,254,167,229, 0, 0, 0, 0, 3, 0, 83, 1,209, 4,126, 3,107, 0, 8, 0, 12, 0, 16, 0, 0, 1, 53, 22, 23, 6, 7,
+ 53, 33, 53, 5, 33, 7, 33, 55, 39, 33, 23, 3,141,110,130,130,110,255, 0,254, 85, 1,170,142,254, 86,142,142, 1,170,142, 2,
+186,177,134, 71, 71,134,177, 56, 58,142,200,143,143, 0, 0, 0, 0, 3, 0,117, 0,129, 4, 92, 4,106, 0, 12, 0, 16, 0, 20,
+ 0, 0, 1, 39, 22, 51, 50, 55, 6, 21, 20, 23, 39, 7, 39, 9, 1, 21, 1, 3, 35, 1, 51, 3,131,142, 57, 53,133,116, 34, 5,
+142,207, 46,254,214, 1, 89,254,167, 47,230, 1, 89,230, 3,191,143, 6, 34,117,132, 54, 57,143,207, 46,254,120, 1, 88,230,254,
+168, 1, 21, 1, 88, 0, 0, 0, 0, 1, 0, 78, 0,185, 4,131, 4,238, 0, 50, 0, 0, 37, 38, 35, 34, 7, 54, 55, 54, 55, 1,
+ 38, 39, 38, 34, 7, 6, 7, 1, 54, 55, 54, 51, 50, 23, 22, 23, 38, 39, 38, 53, 52, 55, 54, 55, 1, 6, 7, 6, 21, 20, 23, 22,
+ 23, 1, 54, 55, 54, 55, 6, 21, 20, 4,130,125,144, 58, 60, 63, 77, 35, 21,254,246, 25, 31, 33, 68, 34, 32, 24,254,141, 31, 36,
+ 40, 42, 38, 42, 38, 29, 29, 15, 17, 17, 15, 29, 1,115, 28, 9, 12, 12, 13, 24, 1, 10, 3, 14, 32, 63, 6,186, 36, 6, 62, 34,
+ 14, 2, 1, 9, 26, 12, 13, 13, 13, 25, 1,115, 32, 14, 16, 16, 15, 31, 31, 37, 42, 38, 42, 40, 38, 30,254,140, 29, 27, 34, 33,
+ 35, 33, 30, 26,254,247, 20, 34, 79, 62, 62, 59,142, 0, 0, 0, 0, 1, 0, 42, 1,137, 4,167, 3, 69, 0, 47, 0, 0, 1, 6,
+ 7, 52, 55, 54, 55, 33, 34, 7, 6, 7, 6, 7, 6, 21, 33, 52, 55, 54, 55, 54, 55, 54, 51, 34, 39, 38, 39, 38, 39, 38, 53, 33,
+ 20, 23, 22, 23, 22, 23, 22, 51, 33, 38, 39, 38, 53, 22, 4,166,140,118, 28, 12, 11,254,184, 31, 27, 28, 22, 21, 12, 12,254, 53,
+ 13, 15, 26, 24, 36, 32, 37, 37, 32, 36, 24, 26, 15, 13, 1,203, 12, 12, 21, 22, 28, 27, 31, 1, 72, 11, 12, 28,118, 2,103, 77,
+144, 77, 69, 30, 14, 11, 12, 22, 20, 30, 27, 31, 37, 33, 35, 25, 24, 16, 14, 14, 16, 24, 26, 34, 33, 37, 31, 27, 30, 20, 22, 12,
+ 11, 14, 30, 69, 77,144, 0, 0, 0, 1, 0,117, 0,175, 4, 92, 4,151, 0, 50, 0, 0, 1, 6, 21, 20, 23, 38, 39, 38, 39, 7,
+ 6, 7, 6, 21, 20, 23, 22, 23, 1, 38, 39, 38, 53, 52, 55, 54, 55, 6, 7, 6, 35, 34, 39, 38, 39, 1, 22, 23, 22, 50, 55, 54,
+ 63, 1, 38, 39, 38, 39, 22, 51, 50, 4, 92, 34, 6, 58, 30, 13, 4,246, 25, 10, 11, 11, 12, 23,254,168, 28, 14, 15, 15, 14, 28,
+ 28, 35, 39, 36, 39, 36, 35, 28, 1, 89, 22, 30, 31, 64, 31, 28, 24,246, 20, 31, 73, 58, 56, 54,134, 4,151,115,133, 54, 58, 58,
+ 73, 32, 18,246, 27, 25, 31, 31, 31, 32, 29, 23,254,167, 27, 35, 38, 39, 35, 39, 34, 29, 29, 13, 15, 15, 14, 28, 1, 88, 22, 13,
+ 12, 12, 12, 23,247, 2, 13, 31, 58, 6, 0, 0, 0, 3, 0, 53, 1, 42, 4,156, 3,236, 0, 22, 0, 43, 0, 66, 0, 0, 1, 54,
+ 55, 6, 7, 6, 7, 6, 7, 6, 34, 39, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 36, 52, 55, 54, 55, 54, 55, 54, 50, 23, 4,
+ 5, 4, 7, 6, 34, 39, 38, 39, 38, 39, 37, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 55, 54, 50, 23, 22, 23, 22, 23, 22, 23,
+ 36, 3, 3,184,224,170, 91, 9, 16, 17, 20, 19, 47, 19, 21, 16, 16, 9, 8, 8, 9, 16, 16,253, 72, 11, 13, 20, 22, 27, 26, 61,
+ 27, 1, 8, 2,141,253, 97,246, 27, 61, 26, 31, 18, 22, 11, 2,194, 21, 16, 16, 9, 8, 8, 9, 16, 16, 21, 19, 47, 19, 20, 17,
+ 13, 12, 90,171,254,239, 2, 4, 73, 61, 88,194, 22, 15, 15, 10, 8, 8, 10, 15, 15, 22, 20, 24, 22, 20, 22, 15, 16,113, 62, 26,
+ 30, 19, 21, 12, 12, 11,100, 40, 42, 99, 10, 11, 14, 19, 24, 25,193, 9, 15, 16, 21, 21, 22, 23, 21, 21, 15, 16, 9, 8, 8, 9,
+ 16, 12, 24,194, 88, 74, 0, 0, 0, 2, 0, 29, 1,110, 4,180, 3,176, 0, 26, 0, 46, 0, 0, 19, 54, 55, 54, 55, 54, 55, 54,
+ 51, 50, 23, 22, 23, 22, 5, 4, 7, 14, 1, 35, 34, 39, 38, 39, 38, 39, 38, 37, 38, 39, 38, 53, 52, 55, 54, 55, 22, 23, 6, 7,
+ 38, 39, 38, 53, 52, 55, 54, 29, 53, 24, 26, 16, 32, 32, 35, 38, 43, 42, 49, 41,132, 1, 70,254,186,132, 45, 89, 41, 41, 32, 46,
+ 18, 23, 19, 23, 3, 69, 30, 15, 16, 16, 15, 30, 79,205,205, 79, 30, 15, 16, 16, 15, 2,143, 31, 47, 51, 16, 29, 15, 15, 15, 18,
+ 26, 83, 62, 62, 83, 28, 31, 15, 24, 20, 29, 38, 47, 31, 32, 35, 36, 41, 41, 37, 35, 31,195, 93, 93,195, 31, 35, 37, 41, 41, 36,
+ 35, 0, 0, 0, 0, 1, 0, 38, 1,190, 4,171, 3,166, 0,101, 0, 0, 0, 20, 6, 15, 1, 6, 7, 6, 34, 39, 38, 39, 46, 1,
+ 53, 52, 63, 1, 54, 53, 52, 39, 38, 39, 38, 39, 38, 43, 1, 34, 7, 6, 7, 6, 15, 1, 6, 7, 6, 7, 6, 35, 33, 34, 46, 2,
+ 52, 63, 1, 54, 52, 47, 1, 38, 52, 54, 55, 54, 55, 54, 51, 33, 50, 23, 22, 23, 22, 31, 1, 22, 23, 22, 23, 22, 59, 1, 50, 55,
+ 54, 55, 54, 55, 54, 53, 52, 47, 1, 38, 53, 52, 54, 55, 54, 55, 54, 50, 23, 22, 31, 1, 22, 4,171, 5, 5,195, 3, 7, 6, 13,
+ 6, 5, 5, 5, 5, 2, 22, 3, 3, 2, 5, 4, 6, 7, 6,229, 6, 6, 6, 5, 4, 3, 73, 4, 3, 4, 7, 5, 6,254, 14, 6,
+ 11, 10, 5, 2, 93, 3, 3, 93, 2, 5, 5, 5, 5, 6, 6, 1,242, 6, 5, 7, 4, 3, 4, 73, 3, 4, 5, 6, 6, 6,229, 6,
+ 7, 6, 4, 5, 2, 3, 3, 22, 2, 5, 5, 5, 5, 6, 13, 6, 7, 3,195, 5, 2,185, 14, 12, 5,195, 3, 4, 2, 2, 3, 4,
+ 5, 12, 7, 3, 9, 81, 9, 4, 5, 6, 6, 5, 4, 3, 3, 2, 4, 4, 4, 6,146, 9, 2, 4, 3, 3, 5, 10, 11, 15, 5,185,
+ 5, 16, 5,185, 5, 15, 11, 5, 4, 3, 3, 3, 2, 5, 2, 9,146, 6, 4, 4, 4, 2, 3, 3, 4, 5, 6, 6, 5, 4, 9, 81,
+ 9, 3, 7, 12, 5, 4, 3, 2, 2, 4, 3,195, 5, 0, 0, 0, 0, 1, 0, 37, 1,101, 4,171, 3,241, 0,103, 0, 0, 0, 20,
+ 7, 6, 7, 1, 6, 7, 6, 34, 39, 38, 39, 46, 1, 53, 52, 63, 1, 54, 53, 52, 39, 38, 39, 38, 39, 38, 43, 1, 34, 7, 6, 7,
+ 6, 15, 1, 6, 7, 6, 7, 6, 35, 33, 34, 46, 2, 52, 63, 1, 54, 52, 47, 1, 38, 52, 54, 55, 54, 55, 54, 51, 33, 50, 23, 22,
+ 23, 22, 31, 1, 22, 23, 22, 23, 22, 59, 1, 50, 55, 54, 55, 54, 55, 54, 53, 52, 47, 1, 38, 53, 52, 54, 55, 54, 55, 54, 50, 23,
+ 22, 23, 1, 22, 23, 4,171, 2, 3, 5,254,187, 4, 6, 6, 13, 6, 5, 5, 5, 5, 2, 71, 3, 3, 2, 5, 4, 7, 6, 6, 75,
+ 6, 6, 6, 4, 5, 3, 97, 4, 3, 5, 6, 5, 7,253,231, 7, 11, 10, 5, 3,117, 2, 2,126, 2, 5, 5, 5, 5, 6, 6, 2,
+ 26, 7, 5, 7, 4, 3, 4,105, 3, 5, 4, 6, 6, 6, 75, 6, 6, 7, 4, 5, 2, 3, 3, 71, 2, 5, 5, 5, 5, 6, 13, 6,
+ 6, 4, 1, 69, 5, 3, 2,178, 14, 6, 6, 5,254,220, 4, 3, 3, 3, 3, 4, 5, 11, 7, 6, 7,178, 6, 7, 5, 6, 7, 4,
+ 4, 3, 3, 2, 4, 4, 4, 6,195, 8, 3, 4, 3, 3, 5, 10, 11, 15, 5,234, 5, 16, 5,250, 5, 15, 11, 5, 4, 3, 3, 3,
+ 2, 5, 2, 9,211, 6, 4, 4, 4, 2, 3, 3, 4, 4, 7, 6, 5, 7, 6,178, 7, 6, 7, 11, 5, 4, 3, 3, 3, 3, 4,254,
+220, 5, 6, 0, 0, 3, 0, 50, 1, 12, 4,159, 3,178, 0, 19, 0, 31, 0, 43, 0, 0, 1, 6, 7, 6, 7, 35, 55, 54, 55, 54,
+ 55, 38, 39, 38, 47, 1, 51, 22, 23, 22, 1, 35, 54, 55, 54, 55, 33, 53, 33, 6, 7, 6, 3, 22, 23, 22, 23, 33, 53, 33, 38, 39,
+ 38, 39, 4,159,103, 63,106, 55, 82, 8, 61,121, 29, 54, 54, 29,121, 61, 8, 82, 54,107, 63,254, 86, 79, 14, 18, 23, 32,253,156,
+ 2,241, 83, 43, 13, 10, 10, 13, 43, 83,253, 15, 2,100, 32, 23, 18, 14, 2, 95, 56, 61,101,121, 17,139,117, 27, 39, 38, 28,117,
+138, 17,116,106, 60,254,117, 44, 42, 52, 52, 71,101,101, 29, 2,135, 29, 29,101,101, 71, 51, 53, 42, 43, 0, 0, 0, 3, 0,117,
+254, 35, 4, 92, 6,117, 0, 3, 0, 6, 0, 9, 0, 0, 9, 5, 33, 9, 1, 33, 2,104, 1,244,254, 12,254, 13, 1,243,254,152,
+ 2,209,254,151, 1,105,253, 47, 6,117,251,219,251,211, 4, 45, 3, 49,253, 8,252,142, 3, 0, 0, 1, 1,134,254,242, 3, 75,
+ 6, 18, 0, 5, 0, 0, 9, 1, 51, 9, 1, 35, 1,135, 1, 25,170,254,231, 1, 25,170, 2,130, 3,144,252,112,252,112, 0, 0,
+ 0, 1, 1,134,254,242, 3, 75, 6, 18, 0, 5, 0, 0, 9, 1, 35, 9, 1, 51, 3, 74,254,231,170, 1, 25,254,231,170, 2,130,
+252,112, 3,144, 3,144, 0, 0, 0, 1, 0,117,254, 35, 4, 92, 6,117, 0, 3, 0, 0, 9, 3, 2,104, 1,244,254, 12,254, 13,
+ 6,117,251,219,251,211, 4, 45, 0, 1, 0, 88, 0,113, 4,121, 4,147, 0, 19, 0, 0, 1, 17, 51, 17, 51, 21, 35, 17, 35, 17,
+ 35, 17, 35, 17, 35, 53, 51, 17, 51, 17, 2,220,168,245,245,168,232,168,244,244,168, 2,215, 1,188,254, 68,170,254, 68, 1,188,
+254, 68, 1,188,170, 1,188,254, 68, 0, 0, 0, 0, 1, 0, 88, 0,113, 4,121, 4,147, 0, 27, 0, 0, 19, 17, 51, 17, 51, 17,
+ 51, 17, 51, 17, 51, 17, 51, 21, 35, 17, 35, 17, 35, 17, 35, 17, 35, 17, 35, 17, 35, 53,202,168,162,168,162,168,115,115,168,162,
+168,162,168,114, 2,215, 1,188,254, 68, 1,188,254, 68, 1,188,254, 68,170,254, 68, 1,188,254, 68, 1,188,254, 68, 1,188,170,
+255,255, 0,150, 0,174, 4, 59, 4, 84, 16, 6, 0,153, 0, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 0,
+ 55, 33, 17, 33, 3, 17, 33, 17,120, 3,225,252, 31,114, 4,197, 36, 1,240,253,158, 4,196,251, 60, 0, 0, 0, 0, 2, 0, 6,
+255,177, 4,203, 4,119, 0, 3, 0, 7, 0, 0, 19, 33, 17, 33, 3, 17, 33, 17,120, 3,225,252, 31,114, 4,197, 2, 20, 1,240,
+251,174, 4,196,251, 60, 0, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 6, 0, 0, 55, 33, 1, 3, 17, 33, 17,120,
+ 3,225,252, 31,114, 4,197, 36, 3,224,251,174, 4,196,251, 60, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 6, 0, 0,
+ 37, 17, 33, 3, 17, 33, 17, 4, 89,252, 31,114, 4,197, 36, 3,224,251,174, 4,196,251, 60, 0, 0, 2, 0, 6,255,177, 4,203,
+ 4,119, 0, 2, 0, 6, 0, 0, 37, 9, 5, 2,104, 1,203,254, 53,253,158, 2, 98, 2, 99,253,157, 74, 1,202, 1,202,254, 54,
+ 2, 98,253,158,253,158, 0, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 6, 0, 0, 19, 1, 17, 9, 3,158, 1,202,
+253,158, 2, 98, 2, 99,253,157, 2, 20,254, 54, 3,148,254, 54, 2, 98,253,158,253,158, 0, 0, 0, 2, 0, 6,255,177, 4,203,
+ 4,119, 0, 2, 0, 6, 0, 0, 19, 9, 1, 33, 9, 2,158, 1,202, 1,203,251,211, 2, 98, 2, 99,253,157, 2, 20,254, 54, 1,
+202, 2, 98,253,158,253,158, 0, 0, 2, 0, 6,255,177, 4,203, 4,119, 0, 2, 0, 6, 0, 0, 19, 33, 9, 4,158, 3,149,254,
+ 53,253,158, 2, 98, 2, 99,253,157, 2, 20, 1,202,254, 54, 2, 98,253,158,253,158, 0, 0, 0, 0, 12, 0, 6,255,177, 4,203,
+ 4,119, 0, 5, 0, 9, 0, 13, 0, 17, 0, 21, 0, 27, 0, 31, 0, 35, 0, 41, 0, 45, 0, 49, 0, 55, 0, 0, 37, 21, 35, 53,
+ 51, 53, 19, 21, 35, 53, 19, 21, 35, 53, 3, 21, 35, 53, 35, 21, 35, 53, 39, 21, 51, 21, 35, 53, 19, 21, 35, 53, 19, 21, 35, 53,
+ 1, 21, 35, 53, 35, 53, 35, 21, 35, 53, 35, 21, 35, 53, 35, 21, 35, 21, 35, 53, 4,203,205, 90,115,115,115,115,244,174,154,180,
+240, 86,200,114,114,114,114, 4,197,115, 90,154,174,154,180,154, 86,114,126,204,114, 90, 1, 72,174,174, 1, 78,179,179,253, 16,
+114,114,114,114, 90, 90,114,204, 1, 72,174,174, 1, 78,179,179, 1, 98,200, 86,114,114,114,114,114,114, 86,200, 0, 1, 0,137,
+ 0, 0, 4, 72, 5,213, 0, 7, 0, 0, 19, 51, 17, 33, 21, 33, 17, 35,137,203, 2,244,253, 12,203, 5,213,253,156,170,253, 57,
+ 0, 1, 0,195, 0, 0, 4, 26, 4, 96, 0, 7, 0, 0, 1, 17, 35, 17, 51, 17, 33, 21, 1,123,184,184, 2,159, 2, 3,253,253,
+ 4, 96,254, 57,150, 0, 0, 0, 0, 2, 0, 76,255,231, 4,133, 4,104, 0, 10, 0, 39, 0, 0, 1, 34, 21, 17, 50, 55, 54, 53,
+ 52, 39, 38, 39, 50, 23, 22, 17, 16, 7, 6, 35, 7, 34, 39, 38, 17, 16, 55, 54, 55, 21, 6, 7, 6, 21, 20, 23, 22, 51, 17, 16,
+ 3, 5, 65, 92, 86, 77, 77, 71, 42,138,119,127,127,129,193,183,199,124,126,126,104,154, 65, 49, 76, 76, 78,101, 3,203,145,253,
+ 82,104, 93,223,221, 99, 91,157,132,141,254,217,254,230,150,152, 1,153,155, 1, 20, 1, 44,132,109, 28,163, 26, 75,115,190,216,
+101,103, 2,175, 1, 46, 0, 0, 0, 3, 0,193,255,229, 3,221, 5,213, 0, 23, 0, 27, 0, 37, 0, 0, 1, 51, 17, 54, 55, 54,
+ 55, 21, 6, 7, 6, 35, 34, 39, 38, 53, 52, 55, 54, 63, 1, 62, 1, 53, 19, 21, 35, 53, 19, 17, 7, 6, 7, 6, 21, 20, 23, 22,
+ 2, 37,190, 31, 32, 89, 98, 94, 96, 95,104,186,111,110, 34, 33, 94, 88, 69, 38,197,203, 6, 45, 62, 23, 24, 66, 37, 4, 68,252,
+ 83, 8, 12, 35, 68,188, 57, 28, 28, 96, 96,161, 76, 65, 66, 92, 86, 66, 84, 61, 2, 59,254,254,250,190, 1,174, 45, 59, 44, 44,
+ 49, 89, 55, 31,255,255, 0,218, 0, 0, 3,247, 5,240, 16, 6, 3,222, 0, 0, 0, 2, 0,137,255,227, 4, 72, 6, 21, 0, 11,
+ 0, 37, 0, 0, 1, 34, 6, 21, 20, 22, 51, 50, 54, 53, 52, 38, 39, 54, 18, 17, 16, 2, 35, 34, 2, 17, 52, 54, 55, 46, 1, 53,
+ 52, 54, 51, 37, 21, 33, 34, 21, 20, 22, 2,104,140,144,144,140,141,144,144,141,232,248,246,234,233,246,123, 49, 80, 65,194,158,
+ 1,252,254, 40,188,114, 3,223,218,214,213,219,219,213,214,218,156, 1,254,209,254,226,254,225,254,211, 1, 45, 1, 31,229,216,
+ 42, 47,142, 49,124,148, 1,150,135, 73, 53, 0, 0, 2, 0, 35, 0, 0, 4, 55, 6, 20, 0, 3, 0, 25, 0, 78, 64, 42, 20, 9,
+ 22, 2, 18, 14,182, 10, 5,140, 4, 2,196, 0,155, 4,155, 10,194, 16, 12, 6, 25, 9, 4, 13, 0, 6, 1, 4, 15, 9, 6, 11,
+ 1, 74, 19, 69, 21, 17, 69, 26, 16,244, 60,228,236, 50,252, 60,196, 16,238, 50, 17, 18, 57, 57, 49, 0, 47, 60,230,236,254,238,
+ 16,238, 16,238, 50, 18, 57, 57, 57, 48, 1, 51, 21, 35, 39, 21, 35, 34, 6, 29, 1, 33, 17, 35, 17, 33, 17, 35, 17, 35, 53, 51,
+ 53, 52, 54, 51, 3,127,184,184,119,180, 99, 77, 2,147,184,254, 37,184,201,201,169,179, 6, 18,233,235,153, 81,103,101,251,162,
+ 3,209,252, 47, 3,209,143, 78,184,174, 0, 0, 0, 1, 0, 35, 0, 0, 4, 55, 6, 20, 0, 21, 0, 66, 64, 35, 16, 7, 18, 3,
+ 14, 10,182, 8, 3,140, 0,155, 8,194, 12, 1, 4, 21, 9, 7, 2, 6, 0, 9, 11, 7, 6, 0, 74, 15, 69, 17, 13, 69, 22, 16,
+244, 60,228,236,252, 60,196, 16,238, 17, 18, 57, 57, 49, 0, 47, 60,230,254,238, 16,238, 50, 18, 57, 57, 57, 48, 1, 17, 35, 17,
+ 33, 34, 6, 29, 1, 33, 21, 33, 17, 35, 17, 35, 53, 51, 53, 52, 54, 51, 4, 55,184,254,213, 99, 77, 1, 37,254,219,184,201,201,
+169,179, 6, 20,249,236, 5,123, 81,103,101,141,252, 47, 3,209,143, 78,184,174,255,255, 0, 69,254, 12, 4,176, 2, 27, 16, 38,
+ 4, 30, 0, 0, 16, 7, 11,204, 2, 30,255, 6,255,255, 0, 69,254, 12, 4,229, 2, 28, 16, 38, 11,198, 0, 0, 16, 7, 11,204,
+ 1,252,255, 6,255,255,255,236,254, 12, 2,188, 2, 88, 16, 38, 10,217, 0, 0, 16, 7, 11,204, 2, 12,255, 6,255,255,255,236,
+254, 12, 4,229, 2, 88, 16, 38, 10,218, 0, 0, 16, 7, 11,204, 2, 12,255, 6,255,255, 0, 69,254, 12, 4,176, 2, 27, 16, 38,
+ 4, 30, 0, 0, 16, 7, 11,203, 1,189,255, 6,255,255, 0, 69,254, 12, 4,229, 2, 28, 16, 38, 11,198, 0, 0, 16, 7, 11,203,
+ 1,120,255, 6,255,255,255,236,254, 12, 3, 28, 2, 88, 16, 38, 10,217, 0, 0, 16, 7, 11,203, 1,140,255, 6,255,255,255,236,
+254, 12, 4,229, 2, 88, 16, 38, 10,218, 0, 0, 16, 7, 11,203, 1,140,255, 6,255,255, 0, 69,254, 12, 4,176, 2, 27, 16, 38,
+ 4, 30, 0, 0, 16, 7, 11,205, 1,147,255, 6,255,255, 0, 69,254, 12, 4,229, 2, 28, 16, 38, 11,198, 0, 0, 16, 7, 11,205,
+ 1,114,255, 6,255,255,255,236,254, 12, 3, 10, 2, 88, 16, 38, 10,217, 0, 0, 16, 7, 11,205, 1,122,255, 6,255,255,255,236,
+254, 12, 4,229, 2, 88, 16, 38, 10,218, 0, 0, 16, 7, 11,205, 1,152,255, 6,255,255, 0, 69,255,235, 4,176, 3,189, 16, 38,
+ 4, 30, 0, 0, 16, 7, 11,204, 2, 55, 3, 39,255,255, 0, 69,255,236, 4,229, 3,195, 16, 38, 11,198, 0, 0, 16, 7, 11,204,
+ 2, 1, 3, 45,255,255,255,236, 0, 0, 2,188, 4,120, 16, 38, 10,217, 0, 0, 16, 7, 11,204, 2, 16, 3,226,255,255,255,236,
+ 0, 0, 4,229, 4,109, 16, 38, 10,218, 0, 0, 16, 7, 11,204, 2, 15, 3,215,255,255, 0, 69,255,235, 4,176, 4, 26, 16, 38,
+ 4, 30, 0, 0, 16, 7, 11,205, 1,147, 3,132,255,255, 0, 69,255,236, 4,229, 4, 26, 16, 39, 11,205, 1,129, 3,132, 16, 6,
+ 11,198, 0, 0,255,255,255,236, 0, 0, 3, 31, 4,121, 16, 38, 10,217, 0, 0, 16, 7, 11,205, 1,143, 3,227,255,255,255,236,
+ 0, 0, 4,229, 4,124, 16, 38, 10,218, 0, 0, 16, 7, 11,205, 1,140, 3,230,255,255, 0, 69,255,235, 4,176, 4, 87, 16, 38,
+ 4, 30, 0, 0, 16, 7, 3,220, 0, 76,253,102,255,255, 0, 69,255,236, 4,229, 4, 72, 16, 39, 3,220, 0, 52,253, 87, 16, 6,
+ 11,198, 0, 0,255,255,255,236, 0, 0, 3,184, 4,245, 16, 38, 10,217, 0, 0, 16, 7, 3,220, 0, 75,254, 4,255,255,255,236,
+ 0, 0, 4,229, 5, 4, 16, 38, 10,218, 0, 0, 16, 7, 3,220, 0, 93,254, 19,255,255,255,181,255,164, 4,140, 5,114, 16, 38,
+ 4, 51, 0, 0, 16, 7, 11,197, 2,116, 3,226,255,255,255,106,255,164, 4,229, 5, 6, 16, 39, 11,197, 2,132, 3,118, 16, 6,
+ 11,202, 0, 0,255,255,255,236, 0, 0, 3, 63, 6, 14, 16, 39, 11,197, 1, 44, 4,126, 16, 6, 11,199, 0, 0,255,255,255,236,
+ 0, 0, 4,229, 5, 16, 16, 39, 11,197, 1,150, 3,128, 16, 6, 11,200, 0, 0,255,255,255,181,255,164, 4,140, 5,126, 16, 38,
+ 4, 51, 0, 0, 16, 7, 11,205, 2,136, 4,232,255,255,255,106,255,164, 4,229, 5, 10, 16, 39, 11,205, 2,140, 4,116, 16, 6,
+ 11,202, 0, 0,255,255,255,236, 0, 0, 3, 63, 6, 14, 16, 39, 11,205, 1, 44, 5,120, 16, 6, 11,199, 0, 0,255,255,255,236,
+ 0, 0, 4,229, 5, 32, 16, 39, 11,205, 1,154, 4,138, 16, 6, 11,200, 0, 0,255,255, 0, 88,254, 11, 4,173, 3,103, 16, 38,
+ 3,235, 0, 0, 16, 7, 11,204, 2,123, 0,175,255,255, 0, 88,254, 11, 4,249, 3,103, 16, 38, 11, 16, 0, 0, 16, 7, 11,204,
+ 2, 47, 0,125,255,255,255,236,254, 62, 4, 92, 3, 47, 16, 39, 11,204, 1, 97,255, 56, 16, 6, 11, 17, 0, 0,255,255,255,236,
+254, 62, 4,252, 3, 47, 16, 39, 11,204, 2, 13,255, 56, 16, 6, 11, 18, 0, 0,255,255, 0, 88,254, 11, 4,173, 3,103, 16, 38,
+ 3,235, 0, 0, 16, 7, 11,196, 2,138, 0, 25,255,255, 0, 88,254, 11, 4,249, 3,103, 16, 38, 11, 16, 0, 0, 16, 7, 11,196,
+ 2, 38,255,231,255,255,255,236,255, 56, 4, 92, 3, 47, 16, 39, 11,196, 0,188,255, 56, 16, 6, 11, 17, 0, 0,255,255,255,236,
+255, 56, 4,252, 3, 47, 16, 39, 11,196, 1,144,255, 56, 16, 6, 11, 18, 0, 0,255,255, 0, 88,254, 11, 4,173, 3,103, 16, 38,
+ 3,235, 0, 0, 16, 7, 11,203, 2, 42, 0,150,255,255, 0, 88,254, 11, 4,249, 3,103, 16, 38, 11, 16, 0, 0, 16, 7, 11,203,
+ 1,197, 0, 66,255,255,255,236,254, 22, 4, 92, 3, 47, 16, 39, 11,203, 0,240,255, 16, 16, 6, 11, 17, 0, 0,255,255,255,236,
+254, 62, 4,252, 3, 47, 16, 39, 11,203, 1,144,255, 56, 16, 6, 11, 18, 0, 0,255,255, 0, 88,254, 11, 4,173, 3,103, 16, 38,
+ 3,235, 0, 0, 16, 7, 11,205, 2, 50, 0,175,255,255, 0, 88,254, 11, 4,249, 3,103, 16, 38, 11, 16, 0, 0, 16, 7, 11,205,
+ 1,197, 0, 94,255,255,255,236,254, 22, 4, 92, 3, 47, 16, 39, 11,205, 0,252,255, 16, 16, 6, 11, 17, 0, 0,255,255,255,236,
+254, 62, 4,252, 3, 47, 16, 39, 11,205, 1,144,255, 56, 16, 6, 11, 18, 0, 0,255,255,255,204,254, 8, 4, 97, 4, 55, 16, 38,
+ 3,239, 0, 0, 16, 7, 11,197, 2,208, 2,166,255,255,255, 96,254, 12, 4,229, 4, 68, 16, 39, 11,197, 2, 92, 2,180, 16, 6,
+ 11, 28, 0, 0,255,255,255,204,254, 8, 4,194, 4,155, 16, 39, 3,220, 1, 85,253,170, 16, 6, 3,239, 0, 0,255,255,255, 96,
+254, 12, 4,229, 4,132, 16, 39, 3,220, 0,233,253,147, 16, 6, 11, 28, 0, 0,255,255, 0, 10,255,167, 5, 93, 6, 20, 16, 6,
+ 4, 53, 0, 0, 0, 1,255,131,255,167, 5, 26, 6, 20, 0, 50, 0, 0, 37, 6, 7, 6, 7, 6, 35, 34, 39, 36, 17, 52, 55, 51,
+ 6, 21, 20, 23, 22, 51, 50, 54, 55, 54, 53, 52, 39, 3, 38, 53, 52, 55, 54, 55, 1, 21, 1, 6, 21, 20, 23, 1, 22, 59, 1, 21,
+ 35, 34, 39, 38, 39, 3,245, 25, 48, 81,128, 99,207,112,108,254,182, 63,184, 65,203, 79, 76,162,218, 54, 52, 41,182, 62, 18, 46,
+ 86, 2, 14,254,104, 70, 18, 1,100, 40, 40, 38, 42, 61, 35, 62, 20,182, 50, 40, 73, 61, 47, 32, 98, 1, 11,138, 92, 94,136,120,
+ 72, 28,106, 60, 57, 34, 49, 66, 1, 44,102, 37, 84, 31, 79, 65, 1,142,209,254,194, 55, 46, 78, 29,253,194, 63,184, 18, 30, 30,
+255,255,255,236, 0, 0, 4, 43, 6, 20, 16, 6, 11, 73, 0, 0,255,255,255,236, 0, 0, 4,230, 6, 20, 16, 6, 11, 74, 0, 0,
+255,255, 0, 10,255,167, 5, 99, 7, 71, 16, 38, 4, 53, 0, 0, 16, 7, 11,206, 2,172, 0, 14,255,255,255,131,255,167, 5, 26,
+ 7, 74, 16, 39, 11,206, 2, 84, 0, 18, 16, 6, 10,204, 0, 0,255,255,255,236, 0, 0, 4, 43, 7, 57, 16, 39, 11,207, 0,143,
+ 0, 0, 16, 6, 10,205, 0, 0,255,255,255,236, 0, 0, 4,230, 7, 57, 16, 39, 11,207, 0,156, 0, 0, 16, 6, 10,206, 0, 0,
+255,255, 0, 54,254,181, 4,141, 2,176, 16, 6, 4, 56, 0, 0, 0, 1,255,213,254, 12, 4,230, 2, 12, 0, 38, 0, 0, 1, 6,
+ 7, 6, 35, 34, 39, 38, 17, 52, 55, 51, 6, 21, 20, 23, 22, 51, 50, 55, 54, 55, 54, 53, 52, 39, 51, 22, 23, 22, 23, 22, 59, 1,
+ 21, 35, 34, 39, 6, 3,200, 71,142,140,129,172,123,234, 53,184, 55,161, 57,129, 84, 63,157, 58, 33,101,184, 17, 35, 34, 31, 35,
+ 86, 52, 94, 87, 14, 6,254,247,116, 60, 59, 63,120, 1, 18,174,142,174,142,180, 67, 24, 20, 51,167, 94,119,184,203, 51, 85, 84,
+ 56, 64,184, 48,173, 0, 0, 0,255,255, 0, 0,255,189, 4,147, 3,229, 16, 6, 4, 57, 0, 0, 0, 3, 0, 0,255,255, 4,242,
+ 3,229, 0, 38, 0, 54, 0, 68, 0, 0, 37, 51, 21, 33, 34, 39, 6, 7, 6, 39, 38, 53, 52, 55, 51, 6, 21, 20, 23, 22, 51, 50,
+ 55, 38, 39, 38, 53, 52, 55, 54, 23, 38, 39, 53, 22, 23, 22, 23, 22, 37, 54, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 21, 20, 23,
+ 22, 37, 22, 7, 6, 7, 22, 51, 50, 55, 54, 39, 38, 39, 38, 4,144, 98,254,136,190, 74,131,164,145, 68,118, 16,184, 14, 30, 45,
+ 40, 48,103, 58, 23, 18, 45, 48, 77, 44, 81,212,227,249, 71, 24,253,205, 36, 34, 39, 15, 22, 58, 65, 23, 22, 7, 21, 1, 71, 13,
+ 22, 25, 53, 28, 39,129, 13, 5, 5, 6, 20, 51,184,184, 52, 51, 1, 1, 37, 64,128, 75, 53, 58, 44, 43, 11, 16, 16, 67,102, 78,
+ 64, 84, 83, 90, 9, 39, 14,185, 65,182,200,231, 79, 29, 27, 64, 72, 61, 46, 37, 52, 45, 43, 35, 30, 37,118,188, 95, 85, 91, 49,
+ 21, 67, 31, 32, 34, 38, 95, 0,255,255,255,236,255,189, 3,227, 3,229, 16, 6, 11, 89, 0, 0, 0, 3,255,236, 0, 0, 4,242,
+ 3,229, 0, 28, 0, 44, 0, 58, 0, 0, 37, 38, 39, 38, 53, 52, 55, 54, 23, 38, 39, 53, 22, 23, 22, 23, 22, 7, 51, 21, 33, 34,
+ 39, 6, 43, 1, 53, 51, 50, 55, 54, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 21, 20, 23, 22, 37, 22, 7, 6, 7, 22, 51, 50, 55,
+ 54, 39, 38, 39, 38, 1, 92, 58, 23, 18, 45, 48, 77, 44, 81,212,227,249, 71, 24, 13,202,254, 32,190, 74,134,161,247,238, 70,226,
+ 36, 34, 39, 15, 22, 58, 65, 23, 22, 7, 21, 1, 71, 13, 22, 25, 53, 28, 39,129, 13, 5, 5, 6, 20, 51,200, 67,102, 78, 64, 84,
+ 83, 90, 9, 39, 14,185, 65,182,200,231, 79, 56,184, 52, 52,184, 85, 27, 64, 72, 61, 46, 37, 52, 45, 43, 35, 30, 37,118,188, 95,
+ 85, 91, 49, 21, 67, 31, 32, 34, 38, 95, 0, 0, 0, 1,255,236, 0, 0, 2,188, 2, 88, 0, 13, 0, 0, 37, 6, 33, 35, 53, 51,
+ 32, 55, 54, 61, 1, 51, 21, 20, 2, 96, 72,254,169,213,158, 1, 29, 44, 49,184, 86, 86,184, 44, 49,106,217,217,187, 0, 0, 0,
+ 0, 1,255,236, 0, 0, 4,229, 2, 88, 0, 20, 0, 0, 37, 6, 35, 33, 53, 33, 50, 55, 54, 61, 1, 51, 21, 20, 23, 22, 51, 33,
+ 21, 33, 34, 2, 94, 76,215,254,177, 1, 24,162, 44, 48,184, 50, 44,163, 1, 42,254,159,214, 86, 86,184, 44, 49,106,217,217,106,
+ 49, 44,184, 0,255,255, 0, 25,254,243, 4,209, 3, 28, 16, 6, 4, 2, 0, 0,255,255,255,123,254,240, 4,229, 2, 2, 16, 6,
+ 11, 94, 0, 0,255,255,255,236,254,212, 3, 23, 2, 88, 16, 39, 11,196, 1,135,254,212, 16, 6, 10,217, 0, 0,255,255,255,236,
+254,212, 4,229, 2, 88, 16, 39, 11,196, 1,147,254,212, 16, 6, 10,218, 0, 0,255,255, 1, 68, 4,186, 3,140, 6,154, 16, 6,
+ 4, 4, 0, 0,255,255,255,236, 0, 0, 4,229, 6,154, 16, 38, 4, 4, 0, 0, 16, 6, 3,249, 0, 0, 0, 0,255,255, 1, 68,
+ 4,186, 3,140, 6,253, 16, 6, 4, 5, 0, 0, 0, 1, 3, 34, 0, 0, 4,229, 1,107, 0, 13, 0, 0, 1, 20, 23, 22, 59, 1,
+ 21, 35, 34, 39, 38, 61, 1, 51, 3,218, 49, 44, 99, 75,130,142, 92, 87,184, 1, 76, 55, 49, 44,184, 92, 87,141, 43, 0, 0, 0,
+255,255, 1, 68,254, 22, 3,140,255,246, 16, 6, 4, 6, 0, 0,255,255, 1, 68, 4,186, 3,140, 5,170, 16, 6, 4, 7, 0, 0,
+255,255,255,236, 0, 0, 4,229, 5,170, 16, 38, 3,249, 0, 0, 16, 6, 4, 7, 0, 0, 0, 0,255,255, 1, 68, 4,185, 3,140,
+ 6,253, 16, 6, 4, 8, 0, 0,255,255,255,236, 0, 0, 4,229, 6,253, 16, 38, 3,249, 0, 0, 16, 6, 4, 8, 0, 0, 0, 0,
+255,255, 1, 68,254,232, 3,140,255,216, 16, 6, 4, 9, 0, 0,255,255,255,236,254,232, 4,229, 0,184, 16, 38, 3,249, 0, 0,
+ 16, 6, 4, 9, 0, 0, 0, 0,255,255, 1, 48, 4,202, 3,161, 6,244, 16, 6, 4, 10, 0, 0,255,255,255,236, 0, 0, 4,229,
+ 6,244, 16, 38, 3,249, 0, 0, 16, 6, 4, 10, 0, 0, 0, 0,255,255, 1, 86, 4,225, 3,122, 7, 6, 16, 6, 4, 11, 0, 0,
+255,255,255,236, 0, 0, 4,229, 7, 6, 16, 38, 4, 11, 0, 0, 16, 6, 3,249, 0, 0, 0, 0,255,255, 1,178, 0, 85, 4, 45,
+ 3,222, 16, 6, 3,223, 0, 0,255,255, 1, 0, 0, 0, 3,208, 7,131, 16, 38, 3,229, 0, 0, 16, 7, 4, 12, 0, 0, 1,194,
+255,255, 1, 0, 0, 0, 4,230, 7,131, 16, 39, 4, 12, 0, 0, 1,194, 16, 6, 10,252, 0, 0,255,255, 1,179, 0, 0, 3, 10,
+ 8, 58, 16, 38, 3,229, 0, 0, 16, 7, 4, 13,255,246, 1,194,255,255, 1,228, 0, 0, 4,230, 8, 58, 16, 39, 4, 13, 0, 39,
+ 1,194, 16, 6, 10,252, 0, 0,255,255, 0, 76,254, 12, 4, 51, 4,182, 16, 38, 4, 1, 0, 0, 16, 7, 4, 13, 0, 96,254, 62,
+255,255, 0, 90,254, 12, 4,229, 4,182, 16, 39, 4, 13, 0, 50,254, 62, 16, 6, 11, 92, 0, 0,255,255, 1,182,254, 12, 3, 13,
+ 6, 20, 16, 38, 3,229, 0, 0, 16, 6, 4, 14,249, 0, 0, 0,255,255, 2, 19,254, 12, 4,230, 6, 20, 16, 38, 4, 14, 86, 0,
+ 16, 6, 10,252, 0, 0, 0, 0,255,255, 0, 25,254,243, 4,209, 4, 87, 16, 38, 4, 2, 0, 0, 16, 7, 4, 13,255, 89,253,223,
+255,255,255,123,254,240, 4,229, 3, 96, 16, 39, 4, 13,254,228,252,232, 16, 6, 11, 94, 0, 0,255,255,255,236, 0, 0, 2,254,
+ 4,232, 16, 39, 4, 13,255,234,254,112, 16, 6, 10,217, 0, 0,255,255,255,236, 0, 0, 4,229, 4,232, 16, 39, 4, 13, 0, 0,
+254,112, 16, 6, 10,218, 0, 0,255,255, 2, 12, 0, 0, 2,196, 6, 20, 16, 6, 3,229, 0, 0, 0, 1, 2, 76, 0, 0, 4,230,
+ 6, 20, 0, 13, 0, 0, 1, 17, 51, 17, 20, 23, 22, 59, 1, 21, 33, 34, 39, 38, 2, 76,184, 50, 44,180,208,254,248,234, 80, 88,
+ 1,115, 4,161,251,107,106, 49, 44,184, 92,101,255,255, 0, 69,254,162, 4,176, 2, 27, 16, 38, 4, 30, 0, 0, 16, 7, 11,195,
+ 2, 27,254,162,255,255, 0, 69,254,162, 4,229, 2, 28, 16, 39, 11,195, 1,209,254,162, 16, 6, 11,198, 0, 0,255,255,255,236,
+254,212, 2,188, 2, 88, 16, 38, 10,217, 0, 0, 16, 7, 11,195, 1,248,254,212,255,255,255,236,254,212, 4,229, 2, 88, 16, 38,
+ 10,218, 0, 0, 16, 7, 11,195, 2, 20,254,212,255,255, 0,222,255,198, 3,243, 4, 26, 16, 38, 4, 0, 0, 0, 16, 7, 11,196,
+ 1,106, 3,132,255,255, 0,242, 0, 0, 4,229, 4, 26, 16, 39, 11,196, 1,198, 3,132, 16, 6, 11, 88, 0, 0,255,255, 0, 69,
+255,235, 4,176, 3, 32, 16, 38, 4, 30, 0, 0, 16, 7, 11,196, 1,191, 2,138,255,255, 0, 69,255,236, 4,229, 3, 32, 16, 39,
+ 11,196, 1,156, 2,138, 16, 6, 11,198, 0, 0,255,255,255,236, 0, 0, 3, 35, 3,232, 16, 39, 11,196, 1,147, 3, 82, 16, 6,
+ 10,217, 0, 0,255,255,255,236, 0, 0, 4,229, 3,232, 16, 39, 11,196, 1,147, 3, 82, 16, 6, 10,218, 0, 0,255,255, 0, 69,
+255,235, 4,176, 4, 26, 16, 38, 4, 30, 0, 0, 16, 7, 11,197, 1,186, 2,138,255,255, 0, 69,255,236, 4,229, 4, 26, 16, 39,
+ 11,197, 1,168, 2,138, 16, 6, 11,198, 0, 0,255,255,255,236, 0, 0, 3, 44, 4,226, 16, 38, 10,217, 0, 0, 16, 7, 11,197,
+ 1,156, 3, 82,255,255,255,236, 0, 0, 4,229, 4,188, 16, 38, 10,218, 0, 0, 16, 7, 11,197, 1,155, 3, 44,255,255, 0, 88,
+254, 11, 4,173, 3,103, 16, 38, 3,235, 0, 0, 16, 7, 11,195, 2,159, 0, 25,255,255, 0, 88,254, 11, 4,249, 3,103, 16, 39,
+ 11,195, 2,112,255,206, 16, 6, 11, 16, 0, 0,255,255,255,236,254,212, 4, 92, 3, 47, 16, 39, 11,195, 2, 13,254,212, 16, 6,
+ 11, 17, 0, 0,255,255,255,236,254,212, 4,252, 3, 47, 16, 39, 11,195, 2, 13,254,212, 16, 6, 11, 18, 0, 0,255,255, 0, 88,
+254, 11, 4,173, 3,103, 16, 6, 3,235, 0, 0, 0, 1, 0, 88,254, 11, 4,249, 3,103, 0, 46, 0, 0, 37, 51, 21, 35, 34, 39,
+ 38, 39, 38, 39, 6, 7, 6, 21, 20, 23, 22, 5, 50, 55, 21, 6, 7, 4, 39, 38, 53, 16, 55, 54, 55, 38, 7, 6, 7, 53, 36, 23,
+ 4, 23, 21, 6, 7, 23, 22, 23, 22, 4,209, 40, 49,129,123, 82, 61, 6, 73,114, 98,224, 74,129, 1, 19,193,212,150,250,254,148,
+169,131,212, 96,137,101,159,135, 95, 1, 20,195, 1, 36,196,109, 31, 29, 51, 72, 90,184,184,150,100,156, 15,178, 24, 80,183,252,
+138, 93,163, 1,118,184, 98, 1, 2,196,152,222, 1, 2,223,101, 52, 3, 22, 19, 41,184, 64, 1, 1, 53,154, 3, 10, 91,160, 95,
+119, 0, 0, 0, 0, 1,255,236, 0, 0, 4, 92, 3, 47, 0, 30, 0, 0, 1, 38, 39, 38, 39, 38, 7, 53, 54, 55, 50, 23, 4, 23,
+ 21, 6, 7, 6, 7, 6, 7, 6, 43, 1, 53, 51, 50, 55, 54, 55, 54, 3, 83, 83,103, 85,180, 82,161, 72, 75,162,172, 1, 2,220,
+ 76, 88,166, 74,145, 75,221,163,128,100,227,129,104,116, 94, 2, 29, 23, 23, 19, 16, 7, 6,184, 7, 1, 35, 52, 98,154, 24, 52,
+ 98, 66,129, 27, 80,184, 72, 58,106, 86, 0, 0, 0, 1,255,236, 0, 0, 4,252, 3, 47, 0, 41, 0, 0, 1, 4, 23, 21, 6, 7,
+ 22, 23, 22, 59, 1, 21, 35, 34, 39, 38, 39, 6, 7, 6, 7, 6, 43, 1, 53, 51, 50, 55, 54, 55, 54, 55, 38, 39, 38, 39, 38, 7,
+ 53, 54, 55, 50, 2,126, 1, 2,220, 65, 73, 50, 30,104, 54, 60, 80,151,124, 40, 59, 69, 41,145, 75,221,163,128,100,227,129,104,
+116, 94,101, 83,103, 85,180, 82,161, 72, 75,162, 3, 12, 52, 98,154, 20, 41, 78, 34,119,184,168, 54, 97, 46, 37,129, 27, 80,184,
+ 72, 58,106, 86, 35, 23, 23, 19, 16, 7, 6,184, 7, 1, 0, 0,255,255, 0, 88,254, 11, 4,173, 4,176, 16, 38, 3,235, 0, 0,
+ 16, 7, 11,195, 1,220, 4, 26,255,255, 0, 88,254, 11, 4,249, 4,176, 16, 39, 11,195, 1,216, 4, 26, 16, 6, 11, 16, 0, 0,
+255,255,255,236, 0, 0, 4, 92, 4, 76, 16, 39, 11,195, 2, 13, 3,182, 16, 6, 11, 17, 0, 0,255,255,255,236, 0, 0, 4,252,
+ 4, 76, 16, 39, 11,195, 2, 13, 3,182, 16, 6, 11, 18, 0, 0,255,255, 0,232,255,218, 3,232, 3,106, 16, 6, 3,237, 0, 0,
+ 0, 1, 0,232,255,218, 4,229, 3,106, 0, 32, 0, 0, 1, 52, 39, 38, 39, 35, 22, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39,
+ 21, 22, 51, 50, 55, 54, 55, 22, 59, 1, 53, 35, 34, 39, 38, 3,232, 82, 72,107,227,170, 69, 60, 8, 34,173, 34, 82,133,115,103,
+151, 94, 46,206, 94, 97,147, 83, 28, 99, 44, 82, 1,122,108,149,131,108,184,115,101, 93, 42, 27,115, 46, 9, 42,184, 38, 7, 31,
+130,130,184, 44, 82, 0, 0, 0,255,255, 0,232,255,218, 3,232, 4,176, 16, 38, 3,237, 0, 0, 16, 7, 11,195, 2, 12, 4, 26,
+255,255, 0,232,255,218, 4,229, 4,176, 16, 39, 11,195, 2, 21, 4, 26, 16, 6, 11, 24, 0, 0,255,255,255,204,254, 8, 4, 68,
+ 2, 34, 16, 6, 3,239, 0, 0, 0, 1,255, 96,254, 12, 4,229, 2, 38, 0, 24, 0, 0, 1, 51, 22, 23, 22, 23, 22, 59, 1, 21,
+ 35, 34, 39, 6, 5, 4, 33, 53, 32, 55, 36, 55, 54, 53, 52, 2,238,184, 30, 3, 10, 73, 42,101, 60,115,130, 50, 57,254,215,254,
+228,254, 32, 1,189,219, 0,255, 34, 10, 2, 38,112, 30,103, 77, 44,184, 62,253,158,151,184,128,149,197, 58, 72,126, 0, 0, 0,
+255,255,255,204,254, 8, 4, 68, 3,182, 16, 38, 3,239, 0, 0, 16, 7, 11,195, 3, 93, 3, 32,255,255,255, 96,254, 12, 4,229,
+ 3,182, 16, 39, 11,195, 2,239, 3, 32, 16, 6, 11, 28, 0, 0,255,255,255, 33,254, 20, 4,152, 2,238, 16, 6, 3,241, 0, 0,
+ 0, 1,254,213,254, 20, 4,229, 2,238, 0, 70, 0, 0, 5, 34, 39, 38, 39, 6, 7, 6, 7, 6, 39, 6, 7, 6, 7, 6, 35, 34,
+ 39, 38, 55, 54, 55, 51, 6, 23, 22, 23, 22, 51, 50, 55, 54, 55, 54, 39, 38, 47, 1, 51, 23, 22, 23, 22, 23, 22, 55, 54, 53, 51,
+ 6, 23, 22, 51, 50, 25, 1, 51, 17, 20, 23, 22, 59, 1, 21, 35, 34, 39, 6, 7, 6, 3, 52, 65, 25, 64, 26, 31, 69, 50, 74, 47,
+ 49, 8, 30, 37, 61, 71,113, 95,101,118, 18, 20, 60,164, 87, 5, 8, 33, 46, 48, 53, 50, 35, 26, 24, 2, 1, 16, 41,159, 18, 17,
+ 21, 49, 39, 47, 45, 37,164, 4, 37, 32, 42,105,164, 41, 44, 59, 8, 63,100, 60, 31, 71, 33, 29, 25, 67,126,109, 56, 40, 2, 2,
+ 80,168, 94,121, 77, 92,100,115,213,232,130,225,137,172, 43, 59, 72, 50,122,109,165, 94, 92,234,156,145, 35, 80, 3, 3,125,103,
+194,163,141,120, 1, 24, 1, 38,254,170,139, 41, 44,184, 96, 97, 19, 9, 0, 0, 0, 1,255,236,255,221, 4,148, 2,232, 0, 49,
+ 0, 0, 37, 34, 39, 38, 61, 1, 35, 21, 20, 7, 6, 43, 1, 21, 51, 50, 55, 54, 55, 22, 23, 22, 51, 50, 55, 54, 55, 22, 23, 22,
+ 51, 50, 55, 54, 55, 54, 53, 17, 35, 17, 16, 35, 34, 39, 38, 55, 35, 20, 7, 6, 1,230, 71, 21, 26,164, 70, 36, 76, 42, 70,101,
+ 59, 69, 21, 12, 44, 81, 50, 73, 51, 70, 31, 25, 65, 24, 66, 78, 22, 85, 33, 62,164,104, 43, 31, 38, 5,165, 37, 42,181, 84,100,
+ 79,156,192,118, 71, 35,184, 37, 44, 57, 63, 35, 64, 42, 56,109,126, 67, 25, 9, 34, 82,153,159, 1, 86,254,218,254,232,120,141,
+163,194,103,116, 0, 1,255,236,255,221, 4,230, 2,232, 0, 55, 0, 0, 1, 20, 23, 22, 51, 50, 25, 1, 51, 17, 20, 23, 22, 59,
+ 1, 21, 35, 34, 39, 6, 7, 6, 35, 34, 39, 38, 39, 6, 7, 6, 35, 34, 39, 38, 39, 6, 7, 6, 43, 1, 53, 51, 50, 55, 54, 61,
+ 1, 51, 21, 20, 23, 22, 50, 55, 54, 53, 2,209, 33, 29, 53,100,164, 42, 44, 34, 34, 64,101, 59, 54, 58, 22, 72, 79, 55, 42, 12,
+ 30, 70, 51, 53, 67, 37, 38, 24, 20, 70, 58, 68, 70, 42, 55, 31, 64,162, 26, 22, 96, 42, 37, 2, 82,166,138,120, 1, 24, 1, 38,
+254,170,139, 41, 44,184, 96, 88, 27, 10, 73, 54, 91,109, 56, 42, 54, 55, 53, 57, 44, 37,184, 35, 71,118,192,156, 79,100, 84,116,
+103,194, 0, 0,255,255,255, 33,254, 20, 4,152, 4,176, 16, 38, 3,241, 0, 0, 16, 7, 11,197, 1, 54, 3, 32,255,255,254,213,
+254, 20, 4,229, 4,176, 16, 39, 11,197, 0,236, 3, 32, 16, 6, 11, 32, 0, 0,255,255,255,236,255,221, 4,148, 4,176, 16, 39,
+ 11,197, 1,150, 3, 32, 16, 6, 11, 33, 0, 0,255,255,255,236,255,221, 4,230, 4,176, 16, 39, 11,197, 1, 82, 3, 32, 16, 6,
+ 11, 34, 0, 0,255,255,255, 16,254, 20, 4,192, 2,143, 16, 6, 3,243, 0, 0, 0, 2,254,197,254, 20, 4,229, 2,143, 0, 12,
+ 0, 71, 0, 0, 37, 51, 50, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 37, 20, 7, 22, 23, 22, 59, 1, 21, 35, 34, 47, 1, 6, 43,
+ 1, 34, 39, 38, 53, 20, 7, 6, 7, 6, 35, 34, 39, 38, 53, 52, 55, 51, 6, 21, 20, 23, 22, 55, 54, 55, 54, 53, 52, 39, 38, 39,
+ 51, 6, 23, 22, 23, 54, 55, 54, 51, 50, 23, 22, 1,253,129,140, 73,106, 40, 36, 63, 71,104, 75, 2, 61, 31, 16, 14, 46, 28, 39,
+ 59, 52,102, 28,172,136,218, 38, 52, 45, 47, 47, 51,102, 74,130, 90,125,101,172,104, 60, 50, 60, 67, 37, 64, 9, 33, 13,171, 1,
+ 14, 10, 40, 76, 49,146,150,171, 91, 87,184, 46, 68, 70, 45, 37, 33,109, 78, 78, 52, 71, 10, 13, 44,184, 94, 26,120, 30, 26, 16,
+175,131,129, 43, 86, 90,125,205,188,172,204,156,145, 50, 41, 3, 4, 59,103,139,104, 62,212, 72, 15, 55, 40, 50,128, 60,177, 82,
+ 78, 0, 0, 0, 0, 2,255,236, 0, 0, 4,193, 2,143, 0, 12, 0, 44, 0, 0, 37, 51, 50, 55, 54, 53, 52, 39, 38, 35, 34, 7,
+ 6, 3, 34, 39, 38, 39, 6, 43, 1, 53, 51, 50, 55, 54, 61, 1, 51, 21, 20, 22, 23, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6,
+ 35, 2, 73,129,140, 73,106, 40, 36, 63, 71,104, 75, 82, 74, 78, 65, 39,102, 94,130, 75, 43, 37, 65,184, 18, 45, 76, 49,146,150,
+171, 91, 87,184,126,127,184, 46, 68, 70, 45, 37, 33,109, 78,254,216, 42, 35, 61,138,184, 44, 80,100,114, 78, 24, 80, 50,128, 60,
+177, 82, 78,121,190,109, 75, 0, 0, 2,255,236, 0, 0, 4,229, 2,143, 0, 12, 0, 54, 0, 0, 37, 51, 50, 55, 54, 53, 52, 39,
+ 38, 35, 34, 7, 6, 3, 34, 39, 38, 39, 6, 43, 1, 53, 51, 50, 55, 54, 61, 1, 51, 21, 20, 22, 23, 54, 55, 54, 51, 50, 23, 22,
+ 21, 20, 7, 22, 23, 22, 59, 1, 21, 35, 34, 47, 1, 6, 35, 1,253,129,140, 73,106, 40, 36, 63, 71,104, 75, 82, 74, 78, 65, 39,
+102, 68, 80, 26, 31, 42, 45,184, 18, 45, 76, 49,146,150,171, 91, 87, 31, 16, 14, 46, 28, 39, 59, 52,102, 28,172,136,184, 46, 68,
+ 70, 45, 37, 33,109, 78,254,216, 42, 35, 61,138,184, 46, 50,128,114, 78, 24, 80, 50,128, 60,177, 82, 78,121, 52, 71, 10, 13, 44,
+184, 94, 26,120,255,255,255, 16,254, 20, 4,192, 3, 52, 16, 38, 3,243, 0, 0, 16, 7, 11,195, 1, 79, 2,158,255,255,254,197,
+254, 20, 4,229, 3, 52, 16, 39, 11,195, 1, 4, 2,158, 16, 6, 11, 40, 0, 0,255,255,255,236, 0, 0, 4,193, 3,118, 16, 39,
+ 11,195, 1, 87, 2,224, 16, 6, 11, 41, 0, 0,255,255,255,236, 0, 0, 4,229, 3,104, 16, 39, 11,195, 1, 52, 2,210, 16, 6,
+ 11, 42, 0, 0,255,255, 0, 10, 0, 0, 4,164, 6, 20, 16, 6, 3,245, 0, 0, 0, 2, 0, 20, 0, 0, 4,229, 6, 20, 0, 12,
+ 0, 39, 0, 0, 37, 51, 50, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 37, 20, 7, 22, 59, 1, 21, 35, 34, 47, 1, 6, 35, 33, 35,
+ 53, 51, 17, 51, 17, 54, 55, 54, 51, 50, 23, 22, 2, 8,129,140, 73,106, 40, 36, 63, 71,104, 75, 2, 61, 42, 61, 37, 45, 58, 93,
+ 85, 28,125,149,253,251,178,178,184, 76, 49,146,150,171, 91, 87,184, 46, 68, 70, 45, 37, 33,109, 78, 78, 53, 70, 67,184, 79, 26,
+105,184, 5, 92,251, 14,128, 60,177, 82, 78, 0, 0, 2,255,236, 0, 0, 4,164, 6, 20, 0, 12, 0, 31, 0, 0, 37, 51, 50, 55,
+ 54, 53, 52, 39, 38, 35, 34, 7, 6, 19, 33, 35, 53, 51, 17, 51, 17, 54, 55, 54, 51, 50, 23, 22, 21, 20, 7, 6, 2, 44,129,140,
+ 73,106, 40, 36, 63, 71,104, 75,136,253,251,254,254,184, 76, 49,142,154,171, 91, 87,184,126,184, 46, 68, 70, 45, 37, 33,109, 78,
+254,216,184, 5, 92,251, 14,128, 60,177, 82, 78,121,190,109, 75, 0, 2,255,236, 0, 0, 4,229, 6, 20, 0, 12, 0, 39, 0, 0,
+ 37, 51, 50, 55, 54, 53, 52, 39, 38, 35, 34, 7, 6, 37, 20, 7, 22, 59, 1, 21, 35, 34, 47, 1, 6, 35, 33, 35, 53, 51, 17, 51,
+ 17, 54, 55, 54, 51, 50, 23, 22, 2, 8,129,140, 73,106, 40, 36, 63, 71,104, 75, 2, 61, 42, 61, 37, 45, 58, 93, 85, 28,125,149,
+253,251,218,218,184, 76, 49,146,150,171, 91, 87,184, 46, 68, 70, 45, 37, 33,109, 78, 78, 53, 70, 67,184, 79, 26,105,184, 5, 92,
+251, 14,128, 60,177, 82, 78, 0,255,255, 0, 10, 0, 0, 4,164, 6, 20, 16, 38, 3,245, 0, 0, 16, 7, 11,195, 2, 67, 3, 0,
+255,255, 0, 20, 0, 0, 4,229, 6, 20, 16, 39, 11,195, 2, 67, 3, 0, 16, 6, 11, 48, 0, 0,255,255,255,236, 0, 0, 4,164,
+ 6, 20, 16, 39, 11,195, 2, 67, 3, 0, 16, 6, 11, 49, 0, 0,255,255,255,236, 0, 0, 4,229, 6, 20, 16, 39, 11,195, 2, 67,
+ 3, 0, 16, 6, 11, 50, 0, 0,255,255, 0,122,254, 12, 4,183, 4, 42, 16, 6, 3,247, 0, 0, 0, 2, 0,148,254, 11, 4,244,
+ 3, 14, 0, 44, 0, 55, 0, 0, 51, 52, 55, 38, 39, 38, 53, 52, 55, 54, 55, 54, 50, 23, 22, 23, 22, 21, 20, 7, 6, 7, 22, 23,
+ 22, 59, 1, 21, 35, 32, 39, 6, 21, 20, 23, 22, 33, 50, 55, 21, 6, 7, 4, 39, 38, 0, 34, 7, 6, 21, 20, 23, 54, 55, 54, 39,
+148,187, 61, 38, 30, 13, 16,104, 89,238, 89,101, 19, 13, 69,118, 55, 68, 87, 95,148,224,208,254,183,248,154, 41,107, 1, 95,193,
+212,150,250,254, 82,157, 98, 1,169, 52, 30, 47, 70,134, 2, 1, 48,212,140, 50, 72, 57, 27, 31, 41, 55, 52, 45, 45, 51, 56, 38,
+ 34, 62, 56, 96, 19, 64, 37, 40,184,228,129,106,109, 61,158,118,184, 98, 1, 2,190,119, 3, 22, 7, 12, 32, 36, 65, 55, 46, 32,
+ 12, 0, 0, 0, 0, 1,255,236, 0, 0, 3,249, 4, 42, 0, 26, 0, 0, 55, 50, 55, 38, 39, 38, 53, 16, 55, 54, 51, 21, 34, 6,
+ 20, 23, 22, 51, 50, 55, 37, 21, 5, 4, 43, 1, 53, 61,161,202, 75, 52, 88,204,125,251,218,186, 62, 83, 70, 56, 73, 1, 32,254,
+ 92,254,162,178, 89,184, 93, 24, 59,100,140, 1, 8,125, 77,169,137,255, 52, 70, 33,129,184,197,164,184, 0, 0, 0, 2,255,236,
+ 0, 0, 4,229, 3, 14, 0, 36, 0, 47, 0, 0, 37, 6, 43, 1, 53, 51, 50, 55, 54, 55, 38, 39, 38, 53, 52, 55, 54, 55, 54, 50,
+ 23, 22, 23, 22, 21, 20, 7, 6, 7, 22, 23, 22, 59, 1, 21, 35, 34, 2, 34, 7, 6, 21, 20, 23, 54, 53, 52, 39, 2,104,194,202,
+240,218,107, 66, 59, 40, 97, 68, 30, 13, 16,104, 89,238, 89,102, 18, 13, 30, 77, 88, 31, 68, 61,112,219,241,202,168, 52, 30, 47,
+103,103, 47,185,185,184, 40, 36, 39, 85, 90, 39, 45, 31, 41, 55, 52, 45, 45, 51, 56, 41, 31, 45, 39, 98, 77, 31, 44, 40,184, 2,
+ 85, 7, 12, 32, 29, 95, 95, 29, 32, 12, 0, 0,255,255, 0,122,254, 12, 4,183, 5, 70, 16, 38, 3,247, 0, 0, 16, 7, 11,195,
+ 1,119, 4,176,255,255, 0,148,254, 11, 4,244, 4, 76, 16, 39, 11,195, 1,214, 3,182, 16, 6, 11, 56, 0, 0,255,255,255,236,
+ 0, 0, 3,249, 5, 70, 16, 39, 11,195, 1,119, 4,176, 16, 6, 11, 57, 0, 0,255,255,255,236, 0, 0, 4,229, 4, 76, 16, 39,
+ 11,195, 2, 27, 3,182, 16, 6, 11, 58, 0, 0,255,255,255,181,255,164, 4,140, 4,192, 16, 38, 4, 51, 0, 0, 16, 7, 11,195,
+ 2,240, 4, 42,255,255,255,106,255,164, 4,229, 4, 76, 16, 39, 11,195, 2,246, 3,182, 16, 6, 11,202, 0, 0,255,255,255,236,
+ 0, 0, 3, 63, 5, 20, 16, 39, 11,195, 1,169, 4,126, 16, 6, 11,199, 0, 0,255,255,255,236, 0, 0, 4,229, 4,126, 16, 39,
+ 11,195, 2, 34, 3,232, 16, 6, 11,200, 0, 0,255,255, 0, 31,254,124, 4,116, 5, 20, 16, 38, 4, 31, 0, 0, 16, 7, 11,196,
+ 2, 93, 4,126,255,255,255,237,254, 19, 4,229, 4, 1, 16, 39, 11,196, 2, 78, 3,107, 16, 6, 11,201, 0, 0,255,255,255,236,
+ 0, 0, 3, 63, 5, 20, 16, 38, 11,199, 0, 0, 16, 7, 11,196, 1, 44, 4,126,255,255,255,236, 0, 0, 4,229, 4,126, 16, 38,
+ 11,200, 0, 0, 16, 7, 11,196, 1,150, 3,232,255,255, 0, 8,255,200, 4,159, 6, 20, 16, 6, 3,252, 0, 0, 0, 2,255,161,
+255,200, 4,229, 6, 20, 0, 33, 0, 68, 0, 0, 1, 21, 6, 7, 6, 21, 20, 23, 22, 23, 22, 21, 20, 7, 6, 35, 34, 39, 53, 22,
+ 51, 50, 55, 54, 53, 52, 39, 38, 39, 38, 55, 54, 55, 54, 1, 35, 17, 16, 7, 6, 7, 6, 35, 34, 39, 38, 53, 52, 55, 35, 6, 21,
+ 20, 23, 22, 55, 54, 55, 54, 55, 22, 59, 1, 53, 35, 34, 39, 38, 53, 2, 20, 74, 38, 80, 14, 12, 68,102, 88, 82, 78, 66, 56, 68,
+ 45, 60, 57, 60, 78, 74, 18, 32, 1, 2, 75, 85, 2,130,184, 52, 74, 81, 98,117, 87,121,154, 14,184, 16,217,163,173,199,103, 79,
+ 91,113, 80,130, 75, 26, 44, 49, 4, 76, 82, 4, 14, 30, 33, 28, 18, 16, 10, 15, 88,110, 42, 39, 11, 88, 10, 26, 26, 30, 38, 17,
+ 16, 28, 47, 46, 81, 38, 43, 1,204,252, 79,254,249, 67, 95, 35, 38, 35, 45, 93, 44, 58, 53, 75,184, 76, 57, 2, 2, 53, 45, 78,
+123,184, 44, 49,106, 0, 0, 0, 0, 1,255,236, 0, 0, 4, 43, 6, 20, 0, 31, 0, 0, 41, 1, 53, 33, 50, 55, 54, 53, 52, 39,
+ 1, 38, 53, 52, 55, 54, 55, 1, 21, 5, 6, 7, 6, 21, 20, 23, 1, 22, 21, 20, 7, 6, 1,146,254, 90, 1,146,147, 46, 16, 54,
+254,202, 50, 10, 31,104, 2,233,253,173, 71, 21, 6, 31, 1, 19,102, 62, 95,184,104, 36, 36, 69, 66, 1,124, 61, 81, 30, 38,118,
+ 43, 1, 54,186,250, 30, 40, 11, 25, 32, 37,254,182,122,124,113,101,155, 0, 0, 0, 1,255,236, 0, 0, 4,230, 6, 20, 0, 41,
+ 0, 0, 41, 1, 53, 33, 50, 55, 54, 53, 52, 39, 1, 38, 53, 52, 55, 54, 55, 1, 21, 5, 6, 7, 6, 21, 20, 23, 1, 22, 23, 22,
+ 59, 1, 21, 35, 34, 39, 38, 47, 1, 6, 7, 6, 1,156,254, 80, 1,156,147, 47, 16, 54,254,202, 50, 10, 30,104, 2,234,253,172,
+ 70, 22, 6, 32, 2, 70, 22, 38, 44, 64, 88,132, 66, 58,102, 34, 96, 22, 16, 96,184,104, 36, 36, 69, 66, 1,124, 61, 81, 30, 38,
+118, 43, 1, 54,186,250, 30, 40, 11, 25, 32, 37,253, 63, 26, 14, 16,184, 24, 43, 41,120, 46, 27,155, 0, 0, 0,255,255, 0, 66,
+254,200, 4, 75, 6, 20, 16, 6, 3,253, 0, 0, 0, 1, 0, 9,254,200, 4,229, 6, 20, 0, 36, 0, 0, 1, 35, 17, 16, 7, 6,
+ 7, 6, 35, 34, 39, 38, 53, 52, 55, 35, 6, 23, 18, 23, 22, 51, 50, 55, 54, 55, 54, 55, 22, 59, 1, 53, 35, 34, 39, 38, 53, 4,
+ 18,184, 30, 69, 99, 84,105, 73, 40,166, 65,184, 64, 1, 1,242,119, 99,125, 94,129,104, 51, 15, 78, 56,130, 75, 43, 44, 49, 6,
+ 20,251,150,254,216, 57,131, 41, 34, 16, 66,126,115,115, 92,138,254,253, 86, 42, 34, 47,126, 63, 93, 51,184, 44, 49,106, 0, 0,
+ 0, 1,255,236, 0, 0, 3,233, 6, 20, 0, 13, 0, 0, 1, 20, 7, 6, 41, 1, 53, 33, 50, 55, 54, 53, 17, 51, 3,233, 87, 80,
+254,240,253,186, 2, 14,218, 44, 49,184, 1,115,178,101, 92,184, 44, 49,106, 4,149, 0, 0, 0, 0, 1,255,236, 0, 0, 4,229,
+ 6, 20, 0, 20, 0, 0, 37, 6, 41, 1, 53, 51, 50, 55, 54, 53, 17, 51, 17, 20, 23, 22, 59, 1, 21, 33, 32, 2,104, 76,254,240,
+254,224,234,218, 44, 48,184, 50, 44,218,233,254,223,254,244, 86, 86,184, 44, 49,106, 4,149,251,107,106, 49, 44,184, 0, 0, 0,
+255,255, 0,130,254, 20, 4, 84, 2,243, 16, 6, 3,254, 0, 0, 0, 2, 0, 71,254, 20, 4,229, 2,116, 0, 17, 0, 52, 0, 0,
+ 37, 22, 51, 50, 55, 54, 53, 52, 39, 38, 39, 38, 35, 34, 7, 6, 21, 20, 5, 6, 7, 6, 35, 34, 39, 38, 7, 6, 21, 17, 35, 17,
+ 52, 55, 54, 51, 38, 53, 52, 55, 54, 51, 50, 23, 22, 23, 30, 1, 59, 1, 21, 35, 34, 2, 12,122, 76, 44, 21, 53, 6, 21, 59, 40,
+ 46, 59, 27, 68, 1,192, 15, 13,133, 75,210,112, 35, 73, 25,200,120, 65, 73, 2,162, 77, 92, 72, 84,170, 40, 14, 82,102, 31, 86,
+173,168, 42, 22, 57, 58, 24, 20, 88, 17, 12, 27, 68, 68, 40,169, 14, 8, 80, 78, 25, 75, 26, 79,254,147, 1,109,173,102, 55, 42,
+ 40,148,132, 63, 36, 71,179, 64, 94,184, 0, 0, 0, 2,255,236,255,205, 3,166, 2,109, 0, 24, 0, 42, 0, 0, 37, 6, 7, 6,
+ 39, 6, 43, 1, 53, 51, 50, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 37, 22, 51, 50, 55, 54, 53, 52, 39, 38, 39,
+ 38, 35, 34, 7, 6, 7, 6, 3,100, 96,140,212,112, 64,104,160,116, 52, 44, 43, 5, 20,135, 94, 93, 69, 69,189, 21, 4,253,240,
+ 62,159, 47, 19, 52, 5, 22, 58, 39, 39, 53, 41, 50, 15, 7, 52,101, 1, 2,100, 48,184, 36, 35, 49,181, 80, 56, 29, 79,171, 36,
+ 42,142, 77, 69, 18, 53, 69, 19, 18, 88, 17, 12, 27, 33, 97, 37, 0, 2,255,236,255,206, 4,229, 2,109, 0, 29, 0, 47, 0, 0,
+ 37, 6, 35, 34, 39, 6, 43, 1, 53, 51, 50, 55, 54, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 23, 22, 59, 1, 21, 35, 34, 37, 22,
+ 51, 50, 55, 54, 53, 52, 39, 38, 39, 38, 35, 34, 7, 6, 7, 6, 3,124, 97,139,214,110, 64,104,184,140, 52, 44, 43, 5, 20,135,
+ 94, 93, 72, 66,193, 17, 5, 51, 38,105,100,155,174,254, 18, 62,159, 47, 19, 52, 5, 22, 58, 39, 39, 53, 41, 46, 19, 7, 52,102,
+ 98, 48,184, 36, 35, 49,181, 80, 56, 29, 83,167, 49, 62, 47,184,199, 69, 18, 53, 69, 19, 18, 88, 17, 12, 27, 30,100, 37, 0, 0,
+255,255, 0, 54,254,181, 4,141, 3,132, 16, 38, 4, 56, 0, 0, 16, 7, 11,195, 1,211, 2,238,255,255,255,213,254, 12, 4,230,
+ 2,175, 16, 39, 11,195, 1,119, 2, 25, 16, 6, 10,212, 0, 0,255,255,255,236, 0, 0, 2,188, 3,232, 16, 38, 10,217, 0, 0,
+ 16, 7, 11,195, 2, 16, 3, 82,255,255,255,236, 0, 0, 4,229, 3,232, 16, 38, 10,218, 0, 0, 16, 7, 11,195, 2, 21, 3, 82,
+255,255, 0,222,255,198, 3,243, 2,222, 16, 6, 4, 0, 0, 0, 0, 2, 0,242, 0, 0, 4,229, 2,238, 0, 10, 0, 36, 0, 0,
+ 1, 38, 39, 38, 39, 6, 7, 6, 23, 30, 1, 19, 38, 39, 51, 22, 23, 22, 23, 22, 59, 1, 21, 35, 34, 39, 38, 39, 6, 35, 34, 39,
+ 38, 53, 52, 55, 54, 3, 5, 15, 13, 13, 12,120, 82,111, 2, 1,180,116, 4, 3,184, 1, 36, 21, 56, 31,112,113,168, 90, 73, 45,
+ 38,138,156, 56, 58,189,204,109, 1, 26, 42, 49, 50,101, 12, 67, 89, 62, 41, 50, 1,209, 39, 43,168,174,101, 79, 44,184, 51, 31,
+ 59, 73, 15, 48,154,173,127, 68, 0, 3,255,236,255,189, 3,227, 3,229, 0, 15, 0, 45, 0, 61, 0, 0, 1, 54, 55, 54, 53, 52,
+ 39, 38, 35, 34, 7, 6, 21, 20, 23, 22, 7, 50, 55, 38, 39, 38, 53, 52, 55, 54, 23, 38, 39, 53, 22, 23, 4, 23, 22, 21, 20, 7,
+ 6, 35, 34, 39, 6, 43, 1, 53, 1, 22, 21, 20, 7, 6, 7, 22, 51, 50, 55, 54, 53, 52, 39, 38, 1,186, 36, 34, 39, 15, 22, 58,
+ 65, 23, 22, 7, 21,249, 52, 78, 45, 15, 18, 45, 48, 77, 44, 81,219,220, 1, 5, 59, 14, 40, 74,175,131,154,120,146,175, 2,209,
+ 6, 98, 12, 17, 52, 49,126, 16, 7, 33, 29, 1, 13, 27, 64, 72, 61, 46, 37, 52, 45, 43, 35, 30, 37,118,136, 11,105, 69, 78, 64,
+ 84, 83, 90, 9, 39, 14,185, 67,180,214,217, 52, 57,103, 61,113,108, 41,184, 1, 68, 37, 39,138,114, 14, 19, 46, 67, 30, 33, 60,
+ 78, 69, 0, 0, 0, 3,255,236,254, 13, 4,229, 2,171, 0, 10, 0, 36, 0, 47, 0, 0, 37, 51, 50, 55, 54, 53, 52, 35, 34, 7,
+ 6, 7, 18, 55, 54, 51, 50, 23, 22, 21, 20, 7, 33, 21, 33, 22, 21, 20, 7, 6, 35, 34, 39, 38, 3, 33, 53, 5, 20, 23, 22, 51,
+ 50, 53, 52, 39, 38, 35, 1,228, 19, 42, 96,114, 84, 75, 74, 38,184, 9,129,108,129,138, 69, 46,163, 1,232,254, 24,163, 46, 69,
+138,129,108,129, 9,254,192, 1,248, 38, 74, 75, 84,114, 96, 42,184, 76, 90, 52,112,141, 72,117, 1, 10,126,107, 99, 67,114,111,
+108,184,108,111,114, 67, 99,107,128, 1, 8,184,184,117, 72,141,112, 52, 90, 76,255,255, 0, 76,254, 12, 4, 51, 2,134, 16, 6,
+ 4, 1, 0, 0, 0, 2, 0, 90,254, 12, 4,229, 2,135, 0, 11, 0, 44, 0, 0, 37, 52, 39, 38, 39, 38, 7, 6, 7, 6, 23, 22,
+ 5, 51, 21, 35, 39, 6, 7, 6, 7, 6, 33, 53, 32, 55, 54, 55, 38, 39, 38, 39, 38, 39, 38, 55, 54, 55, 54, 23, 22, 23, 22, 23,
+ 22, 3, 60, 16, 24, 46, 60, 60, 67, 13, 17, 64, 47, 1,115,246,194, 70, 25,129, 83,105,192,254,147, 1,105,132,168, 62,118, 45,
+139, 51,106, 10, 2, 10, 27,176, 59, 65, 87, 69,133, 22, 13,184, 76, 57, 80, 30, 41, 26, 29, 56, 75, 54, 40, 4,184, 1,156,129,
+ 83, 47, 86,184, 76, 95,148, 3, 7, 24, 43, 89,135, 31, 57,155, 75, 25, 1, 2, 49, 92,141, 83,255,255, 0, 25,254,243, 4,209,
+ 3, 28, 16, 6, 4, 2, 0, 0, 0, 1,255,123,254,240, 4,229, 2, 2, 0, 55, 0, 0, 37, 38, 39, 38, 39, 38, 53, 52, 55, 54,
+ 55, 54, 51, 50, 23, 22, 59, 1, 21, 35, 34, 39, 38, 35, 6, 7, 6, 21, 20, 23, 22, 21, 20, 7, 6, 7, 6, 35, 34, 39, 38, 39,
+ 38, 55, 51, 6, 21, 22, 23, 22, 51, 50, 55, 54, 55, 54, 3, 1, 2, 9, 24, 24, 44, 41, 77, 87, 29, 44,130, 46, 64, 34, 35, 35,
+127, 67, 64, 30, 34, 16, 20, 42, 53, 78,104,181,140, 76,121,147,228, 12, 6, 36,178, 26, 1,141, 69,113,130, 58,128, 20, 60, 51,
+ 44, 12, 36, 25, 46, 61, 78, 47, 91, 17, 6,138,192,184,172,165, 1, 16, 18, 32, 3, 69, 87, 60, 83, 83,111, 26, 20, 36, 56,198,
+ 92,138, 80,116,106, 26, 13, 17, 37, 15, 46, 0,255,255, 0, 25,254, 12, 4,209, 3, 28, 16, 38, 4, 2, 0, 0, 16, 7, 11,196,
+ 1, 89,254, 12,255,255,255,123,254, 12, 4,229, 2, 2, 16, 38, 11, 94, 0, 0, 16, 7, 11,196, 0,192,254, 12,255,255,255,236,
+254,212, 3, 18, 2, 88, 16, 39, 11,196, 1,130,254,212, 16, 6, 10,217, 0, 0,255,255,255,236,254,212, 4,229, 2, 88, 16, 39,
+ 11,196, 1,147,254,212, 16, 6, 10,218, 0, 0,255,255,255,150,255,236, 4, 30, 6,237, 16, 39, 4, 12,254,150, 1, 44, 16, 6,
+ 11,105, 0, 0,255,255,255, 64,255,236, 4,229, 6,237, 16, 39, 4, 12,254, 64, 1, 44, 16, 6, 11,106, 0, 0,255,255, 0, 83,
+255,236, 4, 30, 7,164, 16, 39, 4, 13,254,150, 1, 44, 16, 6, 11,105, 0, 0,255,255,255,224,255,236, 4,229, 7,164, 16, 39,
+ 4, 13,254, 35, 1, 44, 16, 6, 11,106, 0, 0,255,255, 0,133,254, 12, 4, 30, 6, 20, 16, 39, 4, 14,254,200, 0, 0, 16, 6,
+ 11,105, 0, 0,255,255, 0, 95,254, 12, 4,229, 6, 20, 16, 39, 4, 14,254,200, 0, 0, 16, 6, 11,106, 0, 0, 0, 1, 0,179,
+255,236, 4, 30, 6, 20, 0, 22, 0, 0, 1, 16, 7, 6, 7, 6, 35, 34, 39, 53, 22, 51, 50, 55, 1, 51, 1, 54, 55, 54, 53, 17,
+ 51, 4, 30,139, 55, 77,205,158,106, 75, 96, 85,113,136,254, 22,179, 1,170, 29, 20, 37,184, 3, 66,254,212,218, 85, 71,180, 32,
+184, 32,152, 4, 70,252, 65, 43, 55,137,184, 2,174, 0, 0, 0, 0, 1, 0, 95,255,236, 4,229, 6, 20, 0, 31, 0, 0, 1, 6,
+ 7, 6, 35, 34, 39, 53, 22, 51, 50, 55, 1, 51, 1, 54, 55, 54, 53, 17, 51, 17, 20, 23, 22, 59, 1, 21, 35, 34, 39, 38, 3, 63,
+ 59, 73,202,161,106, 75, 96, 85,113,136,254, 22,179, 1,170, 29, 20, 37,184, 34, 64, 80,105,129,175,102, 17, 1, 60, 91, 65,180,
+ 32,184, 32,152, 4, 70,252, 65, 43, 55,137,184, 2,174,252, 68,174, 84,158,184,243, 41, 0, 0, 0, 3, 0, 82,255, 84, 4,126,
+ 7, 24, 0, 5, 0, 38, 0, 42, 0, 0, 9, 1, 17, 9, 1, 17, 1, 53, 52, 55, 54, 63, 1, 54, 55, 54, 53, 52, 38, 35, 34, 6,
+ 7, 21, 62, 1, 51, 50, 22, 21, 20, 6, 15, 1, 6, 7, 6, 29, 1, 7, 21, 51, 53, 2,104, 2, 22,253,234,253,234, 2,117, 19,
+ 18, 70, 88, 94, 34, 33,221,186,104,191, 94, 98,178, 78,109,131, 47, 62, 90, 85, 29, 31, 7,203, 7, 24,254, 23,252, 14,254, 23,
+ 1,233, 3,242,252, 98,170, 61, 42, 40, 68, 86, 92, 66, 65, 76,161,192, 56, 57,188, 68, 69,110, 89, 49, 88, 59, 89, 84, 66, 69,
+ 98,154,147,254,254, 0, 0, 0,255,255, 0, 37, 0, 0, 4,172, 5,213, 16, 6, 0, 36, 0, 0,255,255, 0,166, 0, 0, 4,113,
+ 5,213, 16, 6, 0, 37, 0, 0,255,255, 0,139,255,227, 4, 49, 5,240, 16, 6, 0, 38, 0, 0,255,255, 0,137, 0, 0, 4, 82,
+ 5,213, 16, 6, 0, 39, 0, 0,255,255, 0,197, 0, 0, 4, 78, 5,213, 16, 6, 0, 40, 0, 0,255,255, 0,233, 0, 0, 4, 88,
+ 5,213, 16, 6, 0, 41, 0, 0,255,255, 0,102,255,227, 4, 80, 5,240, 16, 6, 0, 42, 0, 0,255,255, 0,137, 0, 0, 4, 72,
+ 5,213, 16, 6, 0, 43, 0, 0,255,255, 0,201, 0, 0, 4, 6, 5,213, 16, 6, 0, 44, 0, 0,255,255, 0,109,255,227, 3,188,
+ 5,213, 16, 6, 0, 45, 0, 0,255,255, 0,137, 0, 0, 4,201, 5,213, 16, 6, 0, 46, 0, 0,255,255, 0,215, 0, 0, 4,115,
+ 5,213, 16, 6, 0, 47, 0, 0,255,255, 0, 86, 0, 0, 4,121, 5,213, 16, 6, 0, 48, 0, 0,255,255, 0,139, 0, 0, 4, 70,
+ 5,213, 16, 6, 0, 49, 0, 0,255,255, 0,117,255,227, 4, 92, 5,240, 16, 6, 0, 50, 0, 0,255,255, 0,197, 0, 0, 4,117,
+ 5,213, 16, 6, 0, 51, 0, 0,255,255, 0,117,254,242, 4, 92, 5,240, 16, 6, 0, 52, 0, 0,255,255, 0,143, 0, 0, 4,209,
+ 5,213, 16, 6, 0, 53, 0, 0,255,255, 0,139,255,227, 4, 74, 5,240, 16, 6, 0, 54, 0, 0,255,255, 0, 47, 0, 0, 4,162,
+ 5,213, 16, 6, 0, 55, 0, 0,255,255, 0,147,255,227, 4, 61, 5,213, 16, 6, 0, 56, 0, 0,255,255, 0, 57, 0, 0, 4,152,
+ 5,213, 16, 6, 0, 57, 0, 0,255,255, 0, 0, 0, 0, 4,209, 5,213, 16, 6, 0, 58, 0, 0,255,255, 0, 18, 0, 0, 4,190,
+ 5,213, 16, 6, 0, 59, 0, 0,255,255, 0, 37, 0, 0, 4,172, 5,213, 16, 6, 0, 60, 0, 0,255,255, 0,156, 0, 0, 4,145,
+ 5,213, 16, 6, 0, 61, 0, 0,255,255, 0,133,255,227, 4, 35, 4,123, 16, 6, 0, 68, 0, 0,255,255, 0,193,255,227, 4, 88,
+ 6, 20, 16, 6, 0, 69, 0, 0,255,255, 0,195,255,227, 4, 37, 4,123, 16, 6, 0, 70, 0, 0,255,255, 0,123,255,227, 4, 18,
+ 6, 20, 16, 6, 0, 71, 0, 0,255,255, 0,123,255,227, 4, 88, 4,123, 16, 6, 0, 72, 0, 0,255,255, 0,195, 0, 0, 4, 39,
+ 6, 20, 16, 6, 0, 73, 0, 0,255,255, 0,123,254, 72, 4, 18, 4,123, 16, 6, 0, 74, 0, 0,255,255, 0,195, 0, 0, 4, 27,
+ 6, 20, 16, 6, 0, 75, 0, 0,255,255, 0,178, 0, 0, 4, 68, 6, 20, 16, 6, 0, 76, 0, 0,255,255, 0,186,254, 86, 3, 16,
+ 6, 20, 16, 6, 0, 77, 0, 0,255,255, 0,236, 0, 0, 4,178, 6, 20, 16, 6, 0, 78, 0, 0,255,255, 0,160, 0, 0, 4, 10,
+ 6, 31, 16, 6, 0, 79, 0, 0,255,255, 0,109, 0, 0, 4,111, 4,123, 16, 6, 0, 80, 0, 0,255,255, 0,195, 0, 0, 4, 27,
+ 4,123, 16, 6, 0, 81, 0, 0,255,255, 0,137,255,227, 4, 72, 4,123, 16, 6, 0, 82, 0, 0,255,255, 0,190,254, 86, 4, 84,
+ 4,123, 16, 6, 0, 83, 0, 0,255,255, 0,137,254, 82, 4, 31, 4,119, 16, 6, 0, 84, 0, 0,255,255, 1,106, 0, 0, 4,131,
+ 4,123, 16, 6, 0, 85, 0, 0,255,255, 0,213,255,227, 4, 6, 4,123, 16, 6, 0, 86, 0, 0,255,255, 0,131, 0, 0, 4, 8,
+ 5,158, 16, 6, 0, 87, 0, 0,255,255, 0,195,255,227, 4, 27, 4, 94, 16, 6, 0, 88, 0, 0,255,255, 0,100, 0, 0, 4,109,
+ 4, 96, 16, 6, 0, 89, 0, 0,255,255, 0, 0, 0, 0, 4,209, 4, 96, 16, 6, 0, 90, 0, 0,255,255, 0, 76, 0, 0, 4,133,
+ 4, 96, 16, 6, 0, 91, 0, 0,255,255, 0,104,254, 86, 4,129, 4, 96, 16, 6, 0, 92, 0, 0,255,255, 0,203, 0, 0, 4, 16,
+ 4, 98, 16, 6, 0, 93, 0, 0,255,255, 0,133,255,227, 4, 76, 5,240, 16, 6, 0, 19, 0, 0,255,255, 0,246, 0, 0, 4, 70,
+ 5,213, 16, 6, 0, 20, 0, 0,255,255, 0,152, 0, 0, 4, 35, 5,240, 16, 6, 0, 21, 0, 0,255,255, 0,137,255,227, 4, 55,
+ 5,240, 16, 6, 0, 22, 0, 0,255,255, 0,102, 0, 0, 4,111, 5,213, 16, 6, 0, 23, 0, 0,255,255, 0,143,255,227, 4, 45,
+ 5,213, 16, 6, 0, 24, 0, 0,255,255, 0,133,255,227, 4, 76, 5,240, 16, 6, 0, 25, 0, 0,255,255, 0,139, 0, 0, 4, 55,
+ 5,213, 16, 6, 0, 26, 0, 0,255,255, 0,131,255,227, 4, 78, 5,240, 16, 6, 0, 27, 0, 0,255,255, 0,127,255,227, 4, 70,
+ 5,240, 16, 6, 0, 28, 0, 0, 0, 1, 1,219, 4,238, 2,230, 6,102, 0, 3, 0, 17, 64, 6, 0, 3, 4, 1, 3, 4, 16,212,
+204, 49, 0, 16,212,204, 48, 1, 51, 3, 35, 2, 32,198,113,154, 6,102,254,136, 0, 2, 1, 63, 5, 14, 3,145, 5,217, 0, 3,
+ 0, 7, 0, 81, 64, 13, 4, 0,222, 6, 2, 8, 5, 97, 4, 1, 97, 0, 8, 16,212,252,212,236, 49, 0, 16,212, 60,236, 50, 48,
+ 0, 75,176, 14, 84, 88,189, 0, 8, 0, 64, 0, 1, 0, 8, 0, 8,255,192, 56, 17, 55, 56, 89, 1, 75,176, 14, 84, 75,176, 13,
+ 84, 91, 88,189, 0, 8,255,192, 0, 1, 0, 8, 0, 8, 0, 64, 56, 17, 55, 56, 89, 1, 51, 21, 35, 37, 51, 21, 35, 1, 63,203,
+203, 1,136,202,202, 5,217,203,203,203, 0, 0, 0, 1, 1,219, 4,238, 3, 90, 5,246, 0, 3, 0,107,181, 0, 2, 4, 1, 3,
+ 4, 16,212,196, 49, 0, 16,212,196, 48, 0, 75,176, 12, 84, 88,189, 0, 4,255,192, 0, 1, 0, 4, 0, 4, 0, 64, 56, 17, 55,
+ 56, 89, 0, 75,176, 14, 84, 88,189, 0, 4, 0, 64, 0, 1, 0, 4, 0, 4,255,192, 56, 17, 55, 56, 89, 64, 38, 15, 0, 15, 1,
+ 10, 2, 10, 3, 31, 0, 31, 1, 31, 2, 31, 3, 47, 0, 47, 1, 47, 2, 47, 3, 12, 15, 0, 15, 1, 31, 0, 31, 1, 47, 0, 47,
+ 1, 6, 93, 1, 93, 1, 51, 3, 35, 2,160,186,229,154, 5,246,254,248, 0, 0, 0, 1, 1, 31, 5, 14, 3,178, 5,233, 0, 29,
+ 0,209, 64, 30, 22, 16, 15, 3, 19, 12, 7, 1, 0, 3, 8, 4,204, 23, 12, 19,204, 27, 8, 30, 16, 1, 15, 0, 7, 22, 24, 7,
+ 9, 30, 16,212,196,212,196, 17, 57, 57, 57, 57, 49, 0, 16,212, 60,252,212, 60,236, 17, 23, 57, 17, 18, 23, 57, 48, 0, 75,176,
+ 14, 84, 75,176, 17, 84, 91, 88,189, 0, 30, 0, 64, 0, 1, 0, 30, 0, 30,255,192, 56, 17, 55, 56, 89, 64,116, 9, 0, 9, 1,
+ 15, 11, 15, 12, 15, 13, 13, 14, 15, 15, 15, 16, 15, 17, 15, 18, 15, 19, 15, 20, 15, 21, 15, 22, 15, 23, 15, 24, 11, 25, 26, 0,
+ 26, 1, 29, 11, 29, 12, 29, 13, 30, 14, 31, 15, 31, 16, 31, 17, 31, 18, 31, 19, 31, 20, 31, 21, 31, 22, 31, 23, 31, 24, 33, 15,
+ 1, 15, 2, 15, 3, 15, 4, 15, 5, 15, 11, 15, 12, 15, 13, 15, 21, 15, 22, 15, 23, 15, 24, 31, 1, 31, 2, 31, 3, 31, 4, 31,
+ 5, 31, 11, 31, 12, 31, 13, 31, 21, 31, 22, 31, 23, 31, 24, 24, 93, 1, 93, 1, 39, 46, 1, 35, 34, 6, 29, 1, 35, 52, 54, 51,
+ 50, 22, 31, 1, 30, 1, 51, 50, 54, 61, 1, 51, 14, 1, 35, 34, 38, 2,100, 57, 25, 31, 12, 35, 40,125,103, 85, 36, 61, 49, 57,
+ 22, 35, 15, 31, 40,125, 2,102, 84, 34, 60, 5, 57, 33, 14, 11, 50, 45, 6,101,118, 16, 27, 30, 13, 12, 51, 41, 6,100,119, 16,
+ 0, 1, 1,121, 4,238, 2,246, 5,246, 0, 3, 0,105,181, 0, 1, 4, 1, 3, 4, 16,212,196, 49, 0, 16,212,196, 48, 0, 75,
+176, 12, 84, 88,189, 0, 4,255,192, 0, 1, 0, 4, 0, 4, 0, 64, 56, 17, 55, 56, 89, 0, 75,176, 14, 84, 88,189, 0, 4, 0,
+ 64, 0, 1, 0, 4, 0, 4,255,192, 56, 17, 55, 56, 89, 1, 75,176, 14, 84, 88,189, 0, 4, 0, 64, 0, 1, 0, 4, 0, 4,255,
+192, 56, 17, 55, 56, 89, 64, 13, 15, 0, 15, 3, 31, 0, 31, 3, 47, 0, 47, 3, 6, 0, 93, 1, 19, 35, 3, 2, 49,197,154,227,
+ 5,246,254,248, 1, 8, 0, 0, 0, 1, 1, 55, 4,238, 3,154, 5,248, 0, 6, 0, 93, 64, 9, 4, 0, 5, 2, 7, 4, 2, 6,
+ 7, 16,212,196, 57, 49, 0, 16,212, 60,196, 57, 48, 0, 75,176, 12, 84, 88,189, 0, 7,255,192, 0, 1, 0, 7, 0, 7, 0, 64,
+ 56, 17, 55, 56, 89, 0, 75,176, 14, 84, 88,189, 0, 7, 0, 64, 0, 1, 0, 7, 0, 7,255,192, 56, 17, 55, 56, 89, 64, 19, 15,
+ 0, 15, 1, 12, 4, 31, 0, 31, 1, 28, 4, 47, 0, 47, 1, 44, 4, 9, 93, 1, 51, 19, 35, 39, 7, 35, 2, 10,189,211,140,166,
+165,140, 5,248,254,246,178,178, 0, 1, 1, 55, 4,238, 3,154, 5,248, 0, 6, 0,105, 64, 9, 3, 4, 1, 0, 7, 3, 5, 1,
+ 7, 16,212,196, 57, 49, 0, 16,212,196, 50, 57, 48, 0, 75,176, 14, 84, 88,189, 0, 7, 0, 64, 0, 1, 0, 7, 0, 7,255,192,
+ 56, 17, 55, 56, 89, 0, 75,176, 12, 84, 88,189, 0, 7,255,192, 0, 1, 0, 7, 0, 7, 0, 64, 56, 17, 55, 56, 89, 64, 31, 15,
+ 1, 15, 2, 10, 3, 15, 4, 15, 5, 31, 1, 31, 2, 26, 3, 31, 4, 31, 5, 47, 1, 47, 2, 42, 3, 47, 4, 47, 5, 15, 93, 1,
+ 3, 51, 23, 55, 51, 3, 2, 10,211,140,165,166,140,211, 4,238, 1, 10,178,178,254,246, 0, 0, 0, 1, 0, 27, 1,248, 4, 90,
+ 3,106, 0, 3, 0, 25, 64, 10, 1, 0, 3, 2, 4, 2, 0, 3, 1, 4, 16,212,196, 57, 57, 49, 0, 16,212,220,212,204, 48, 19,
+ 39, 1, 23, 51, 24, 4, 36, 27, 1,248,108, 1, 6,108, 0, 0, 0, 1, 1, 47, 6,123, 3,162, 7,109, 0, 12, 0, 0, 1, 62,
+ 1, 32, 22, 23, 35, 46, 1, 35, 34, 6, 7, 1, 47, 11,158, 1, 32,159, 11,119, 15, 97, 83, 82,100, 12, 6,123,120,122,123,119,
+ 56, 55, 57, 54, 0, 1, 1, 47, 6,123, 3,162, 7,109, 0, 13, 0, 31,178, 7, 0, 4,184, 1, 3, 64, 9, 11, 14, 7, 80, 8,
+ 1, 80, 0, 14, 16,212,236,212,236, 49, 0, 16,212,252,196, 50, 48, 1, 51, 30, 1, 51, 50, 54, 55, 51, 14, 1, 35, 34, 38, 1,
+ 47,119, 12,100, 82, 83, 97, 15,119, 11,159,144,144,158, 7,109, 54, 57, 55, 56,119,123,122, 0, 0, 1, 2, 1, 6,131, 2,206,
+ 7, 80, 0, 3, 0, 18,183, 0,222, 2, 4, 1, 97, 0, 4, 16,212,236, 49, 0, 16,212,236, 48, 1, 51, 21, 35, 2, 1,205,205,
+ 7, 80,205, 0, 0, 2, 1, 88, 6, 99, 4, 22, 7,107, 0, 3, 0, 7, 0, 25, 64, 10, 0, 4, 3, 7, 8, 1, 3, 5, 7, 8,
+ 16,212,204,212,204, 49, 0, 16,212, 60,204, 50, 48, 1, 51, 3, 35, 3, 51, 3, 35, 3, 92,186,229,154,122,186,229,154, 7,107,
+254,248, 1, 8,254,248, 0, 0, 0, 2, 0,187, 6, 99, 3,121, 7,107, 0, 3, 0, 7, 0, 0, 1, 19, 35, 3, 33, 19, 35, 3,
+ 1,117,197,154,229, 1,249,197,154,229, 7,107,254,248, 1, 8,254,248, 1, 8, 0, 2, 1,102, 0, 0, 3,149, 5,241, 0, 36,
+ 0, 40, 0, 0, 1, 35, 53, 52, 55, 54, 63, 1, 62, 1, 53, 52, 39, 38, 39, 38, 7, 6, 7, 53, 54, 55, 54, 23, 22, 23, 22, 21,
+ 20, 7, 6, 15, 1, 6, 7, 6, 21, 3, 51, 21, 35, 2,174,194, 19, 20, 55, 58, 41, 30, 42, 37, 62, 56, 39, 57, 64, 66, 57, 81,
+ 91,126, 67, 71, 21, 22, 61, 57, 46, 12, 12,199,203,203, 1,145,154, 98, 69, 66, 84, 89, 59, 88, 49, 73, 42, 37, 4, 2, 22, 35,
+ 68,217, 62, 23, 34, 6, 7, 89, 96,161, 76, 65, 66, 92, 86, 69, 39, 42, 61,254,195,254, 0, 0, 0, 1, 1, 61, 6,156, 3,147,
+ 7, 48, 0, 3, 0, 17,182, 2,182, 0, 4, 1, 0, 4, 16,212,204, 49, 0, 16,212,236, 48, 1, 33, 21, 33, 1, 61, 2, 86,253,
+170, 7, 48,148, 0, 1, 0,156,255, 52, 4, 53,255,166, 0, 3, 0, 0, 5, 33, 53, 33, 4, 53,252,103, 3,153,204,114, 0, 0,
+ 0, 1, 0, 6,255, 52, 4,203,255,166, 0, 3, 0, 0, 5, 33, 53, 33, 4,203,251, 59, 4,197,204,114, 0, 0, 0, 1, 1, 0,
+255, 52, 3,209,255,166, 0, 3, 0, 0, 5, 33, 53, 33, 3,209,253, 47, 2,209,204,114, 0, 0, 0, 2, 1, 94, 1,212, 3,115,
+ 3,233, 0, 11, 0, 19, 0, 0, 1, 50, 23, 30, 1, 21, 20, 6, 34, 38, 52, 54, 22, 34, 6, 20, 22, 50, 54, 52, 2,104,114, 76,
+ 38, 39,156,226,151,154,171,118, 85, 82,121, 86, 3,233, 80, 37, 96, 56,110,154,151,226,156,124, 84,121, 82, 84,118, 0, 0, 0,
+ 0, 2, 1, 63, 5, 70, 3,145, 6, 16, 0, 3, 0, 7, 0, 0, 1, 51, 21, 35, 37, 51, 21, 35, 1, 63,203,203, 1,136,202,202,
+ 6, 16,202,202,202, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,150, 0,150, 0, 3, 0, 0, 53, 51, 21, 35,150,150,150,150, 0, 0,
+ 0, 2, 0, 0, 0, 0, 1,144, 0,150, 0, 3, 0, 7, 0, 0, 55, 51, 21, 35, 39, 51, 21, 35,250,150,150,250,150,150,150,150,
+150,150, 0, 0, 0, 3, 0, 0, 0, 0, 1,144, 1,144, 0, 3, 0, 7, 0, 11, 0, 0, 19, 51, 21, 35, 23, 51, 21, 35, 39, 51,
+ 21, 35,125,150,150,125,150,150,250,150,150, 1,144,150,100,150,150,150, 0, 0, 0, 1, 0, 69,255,236, 4,229, 2, 28, 0, 38,
+ 0, 0, 5, 34, 39, 38, 53, 52, 55, 51, 6, 21, 20, 23, 22, 51, 50, 55, 54, 55, 54, 53, 52, 39, 51, 22, 21, 20, 23, 22, 59, 1,
+ 21, 35, 34, 39, 38, 39, 6, 7, 6, 2, 31,186,131,157, 41,184, 43,117, 98,127, 69,130, 87, 45, 55, 29,184, 19, 24, 19, 24, 33,
+ 75, 52, 47, 43, 20, 88, 96,116, 20, 56, 65,219, 62,124,138, 48,108, 30, 25, 55, 37, 53, 65, 56, 62, 55, 75, 90,100, 51, 40,184,
+ 44, 42, 79, 81, 47, 57, 0, 0, 0, 2,255,236, 0, 0, 3, 63, 3,217, 0, 15, 0, 48, 0, 0, 1, 54, 53, 52, 39, 38, 7, 6,
+ 7, 6, 7, 20, 23, 22, 51, 50, 1, 51, 50, 55, 54, 55, 54, 55, 6, 7, 6, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23,
+ 22, 21, 20, 7, 6, 7, 6, 35, 33, 2, 86, 41, 66, 31, 44, 52, 40, 40, 1, 55, 40, 42, 72,253,174,241, 84,151, 79, 60, 31, 15,
+ 63, 97,130, 78, 98, 8, 23,150, 78, 76, 90, 66, 96, 46, 23, 78, 74,124,109,145,254,191, 2, 25, 43, 77, 59, 51, 25, 1, 1, 42,
+ 41, 51, 80, 38, 25,254,183, 23, 12, 93, 48, 50, 55, 2, 2, 69, 87,129, 52, 44,148, 69, 36, 50, 72,102, 51,140,208,143,136, 44,
+ 39, 0, 0, 0, 0, 2,255,236, 0, 0, 4,229, 3, 8, 0, 32, 0, 51, 0, 0, 1, 22, 23, 22, 21, 20, 7, 6, 7, 22, 59, 1,
+ 21, 33, 34, 39, 6, 35, 33, 53, 51, 50, 55, 38, 39, 38, 53, 52, 55, 54, 55, 54, 50, 6, 34, 7, 6, 7, 6, 21, 20, 23, 22, 23,
+ 54, 55, 54, 53, 52, 39, 38, 39, 2,200,183, 25, 8, 22, 28, 36, 38,148,225,254,197,136,186,184,136,254,196,226,146, 40, 30, 36,
+ 20, 8, 23,185, 30,128, 50, 28, 18, 56, 24, 10, 24, 30, 68, 64, 36, 24, 10, 24, 56, 2,250, 80,150, 50, 42, 73, 49, 67, 50, 17,
+184, 57, 57,184, 17, 40, 77, 46, 76, 44, 48,143, 87, 14,184, 10, 32, 53, 21, 29, 43, 53, 68, 22, 21, 69, 50, 46, 24, 26, 52, 33,
+ 0, 2,255,237,254, 19, 4,229, 2,228, 0, 46, 0, 64, 0, 0, 37, 38, 39, 38, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22,
+ 23, 22, 23, 22, 59, 1, 21, 43, 1, 6, 7, 6, 7, 6, 39, 36, 39, 38, 53, 52, 55, 51, 6, 21, 20, 23, 22, 51, 50, 55, 54, 19,
+ 54, 39, 38, 39, 38, 35, 34, 7, 6, 7, 6, 21, 20, 23, 22, 23, 22, 3,140, 66, 46,121, 57,147, 6, 40,147, 41, 87,112, 56, 99,
+ 50, 20, 6, 26, 4, 88, 93, 48, 30, 76,104,142,151,164,254,211, 94, 69, 62,184, 62, 27, 58,195,108,117,158,123, 4, 22, 19, 47,
+ 34, 39, 34, 21, 53, 19, 10, 57, 76,100, 47, 10, 5, 13, 35, 43,109,185, 61, 26,165, 69, 19, 50, 88,145, 58,214, 1,184, 83,109,
+149, 74, 78, 1, 2,190,138,125,166, 96,107,155, 73, 61,130, 60, 81, 1,107,122, 87, 75, 35, 25, 10, 28, 57, 30, 25, 60, 44, 59,
+ 20, 9, 0, 0, 0, 2,255,106,255,164, 4,229, 3, 4, 0, 43, 0, 61, 0, 0, 37, 6, 7, 6, 7, 6, 39, 36, 3, 52, 55, 51,
+ 6, 21, 20, 23, 22, 51, 50, 55, 38, 39, 38, 53, 52, 55, 54, 55, 54, 51, 50, 23, 22, 23, 22, 21, 20, 7, 22, 59, 1, 21, 35, 34,
+ 39, 54, 53, 52, 39, 38, 39, 38, 35, 34, 7, 6, 7, 6, 21, 20, 23, 22, 3,115, 61,118,182,124,139,113,254,218, 2, 64,184, 66,
+170, 71,131,112,151, 34, 29, 82, 4, 22,188, 58, 52, 82, 81,139, 16, 4, 80, 9, 7,149,154,105,111,104, 5, 14, 52, 34, 40, 24,
+ 22, 61, 19, 6, 41, 49, 36, 33, 36, 56, 2, 2, 40,103, 1, 8,138, 92, 94,136,125, 69, 29, 58, 27, 44,124,108, 39, 28,155, 75,
+ 23, 50, 84,149, 37, 30,131,106, 1,184,223, 65,109, 20, 27, 71, 39, 25, 10, 25, 60, 19, 18, 43, 66, 78, 0, 0, 0, 3, 0, 0,
+255, 6, 1,144, 0,150, 0, 3, 0, 7, 0, 11, 0, 0, 23, 51, 53, 35, 55, 51, 53, 35, 7, 51, 53, 35,125,150,150,125,150,150,
+250,150,150,250,150,100,150,150,150, 0, 0, 0, 0, 2, 0, 0,255, 6, 0,150, 0,150, 0, 3, 0, 7, 0, 0, 21, 51, 21, 35,
+ 17, 51, 21, 35,150,150,150,150,100,150, 1,144,150, 0, 0, 0, 0, 4, 0, 0,255, 6, 1,144, 0,150, 0, 3, 0, 7, 0, 11,
+ 0, 15, 0, 0, 23, 51, 21, 35, 17, 51, 21, 35, 7, 51, 21, 35, 17, 51, 21, 35,250,150,150,150,150,250,150,150,150,150,100,150,
+ 1,144,150,100,150, 1,144,150, 0, 1, 0, 0, 4,116, 2,183, 7, 56, 0, 3, 0, 0, 9, 1, 53, 1, 2,183,253, 73, 2,183,
+ 6,134,253,238,178, 2, 18, 0, 0, 1, 0, 0, 4,243, 3,156, 7, 57, 0, 3, 0, 0, 9, 1, 53, 1, 3,156,252,100, 3,156,
+ 6,135,254,109,178, 1,147, 0, 0, 2, 0, 0, 0, 0, 1,182, 1,183, 0, 11, 0, 23, 0, 0, 37, 52, 39, 38, 34, 6, 21, 20,
+ 23, 22, 50, 62, 1, 20, 7, 6, 34, 39, 38, 52, 55, 54, 50, 23, 1, 60, 28, 28, 82, 56, 28, 28, 82, 56,122, 63, 64,184, 63, 64,
+ 64, 63,184, 64,220, 40, 28, 29, 56, 41, 42, 28, 27, 56,133,184, 64, 64, 64, 64,184, 64, 63, 63, 0, 1, 0,149,254, 86, 4, 60,
+ 5,213, 0, 19, 0, 68, 64, 33, 17, 1, 2, 1, 2, 16, 17, 16, 66, 17, 2, 3, 0,180, 19, 11,151, 10, 16, 19, 1, 17, 16, 3,
+ 17, 11, 4, 49, 17, 17, 0, 48, 20, 16,252,236,252,196,236, 50, 17, 57, 49, 0, 47, 60,212,236, 16,236, 50, 57, 57, 48, 75, 83,
+ 88, 7, 16, 4,201, 7, 16, 4,201, 89, 19, 51, 1, 17, 51, 17, 20, 7, 6, 43, 1, 53, 51, 50, 55, 54, 53, 1, 17, 35,149,185,
+ 2, 53,185, 89, 90,165,205,185, 90, 45, 44,253,203,185, 5,213,251,151, 4,105,250, 23,195,105,106,156, 62, 62,146, 4,105,251,
+151, 0, 0, 0, 0, 1, 0, 0, 0, 2, 64, 0, 9,134,133,154, 95, 15, 60,245, 0, 31, 8, 0, 0, 0, 0, 0,196, 90,209, 71,
+ 0, 0, 0, 0,196, 90,209, 71,251,137,253, 1, 5,190, 8, 85, 0, 0, 0, 8, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0,
+ 7,109,254, 29, 0, 0, 4,209,251,137,255, 20, 5,190, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4,
+ 4,209, 0,104, 0, 0, 0, 0, 4,209, 0, 0, 4,209, 0, 0, 2, 4, 1, 82, 0, 2, 0,190, 0, 33, 0, 57, 2, 16, 1,170,
+ 1, 92, 0,166, 0, 88, 1,147, 1,100, 1,233, 0,102, 0,133, 0,246, 0,152, 0,137, 0,102, 0,143, 0,133, 0,139, 0,131,
+ 0,127, 1,233, 1,147, 0, 88, 0, 88, 0, 88, 0,244, 0, 27, 0, 37, 0,166, 0,139, 0,137, 0,197, 0,233, 0,102, 0,137,
+ 0,201, 0,109, 0,137, 0,215, 0, 86, 0,139, 0,117, 0,197, 0,117, 0,143, 0,139, 0, 47, 0,147, 0, 57, 0, 0, 0, 18,
+ 0, 37, 0,156, 1,207, 0,102, 1, 90, 0, 72, 0, 0, 1, 23, 0,133, 0,193, 0,195, 0,123, 0,123, 0,195, 0,123, 0,195,
+ 0,178, 0,186, 0,236, 0,160, 0,109, 0,195, 0,137, 0,190, 0,137, 1,106, 0,213, 0,131, 0,195, 0,100, 0, 0, 0, 76,
+ 0,104, 0,203, 0,221, 2, 18, 0,221, 0, 88, 0, 0, 2, 4, 0,213, 0,139, 0,205, 0, 37, 2, 18, 0,199, 1, 63, 0, 0,
+ 1, 14, 0,119, 0, 88, 1,100, 0, 0, 1, 61, 1, 43, 0, 88, 1, 66, 1, 70, 1,219, 0,195, 0,106, 1,233, 1,139, 1, 88,
+ 0,244, 0,193, 0, 27, 0, 27, 0, 27, 0,193, 0, 37, 0, 37, 0, 37, 0, 37, 0, 37, 0, 37, 0, 0, 0,139, 0,197, 0,197,
+ 0,197, 0,197, 0,201, 0,201, 0,201, 0,201, 0, 8, 0,139, 0,117, 0,117, 0,117, 0,117, 0,117, 0,150, 0, 8, 0,147,
+ 0,147, 0,147, 0,147, 0, 37, 0,201, 0,188, 0,133, 0,133, 0,133, 0,133, 0,133, 0,133, 0, 41, 0,195, 0,123, 0,123,
+ 0,123, 0,123, 0,178, 0,178, 0,178, 0,178, 0,137, 0,195, 0,137, 0,137, 0,137, 0,137, 0,137, 0, 88, 0, 47, 0,195,
+ 0,195, 0,195, 0,195, 0,104, 0,190, 0,104, 0, 37, 0,133, 0, 37, 0,133, 0, 37, 0,133, 0,139, 0,195, 0,139, 0,195,
+ 0,139, 0,195, 0,139, 0,195, 0,137, 0,123, 0, 8, 0,123, 0,197, 0,123, 0,197, 0,123, 0,197, 0,123, 0,197, 0,123,
+ 0,197, 0,123, 0,102, 0,123, 0,102, 0,123, 0,102, 0,123, 0,102, 0,123, 0,137, 0,195, 0, 3, 0, 70, 0,201, 0,178,
+ 0,201, 0,178, 0,201, 0,178, 0,201, 0,178, 0,201, 0,178,255,255,255,252, 0,109, 0,186, 0,137, 0,236, 0,236, 0,200,
+ 0,160, 0,215, 0,160, 0,215, 0,160, 0,215, 0,160,255,246, 0, 76, 0,139, 0,195, 0,139, 0,195, 0,139, 0,195, 0, 24,
+ 0,147, 0,195, 0,117, 0,137, 0,117, 0,137, 0,117, 0,137, 0, 72, 0, 14, 0,143, 1,106, 0,143, 1, 32, 0,143, 1,106,
+ 0,139, 0,213, 0,139, 0,213, 0,139, 0,213, 0,139, 0,213, 0, 47, 0,131, 0, 47, 0,131, 0, 47, 0,131, 0,147, 0,195,
+ 0,147, 0,195, 0,147, 0,195, 0,147, 0,195, 0,147, 0,195, 0,147, 0,195, 0, 0, 0, 0, 0, 37, 0,104, 0, 37, 0,156,
+ 0,203, 0,156, 0,203, 0,156, 0,203, 0,195, 0, 70, 0, 20, 0,166, 0,193, 0, 48, 0, 60, 0,139, 0, 60, 0, 94, 0, 8,
+ 0, 8, 0,131, 0,157, 0,136, 0,197, 0,117, 0,137, 0, 63, 0,195, 0, 52, 0, 28, 0, 65, 0,201, 0,201, 0,110, 0,236,
+ 0,160, 0, 49, 0,109, 0, 29, 0,195, 0,117, 0, 6, 0, 32, 0, 45, 0, 86, 0, 56, 0,190, 0,143, 0,139, 0,213, 0,120,
+ 0,118, 0,131, 0, 47, 0,131, 0, 47, 0, 9, 0, 39, 0, 74, 0,154, 0, 17, 0, 24, 0,156, 0,156, 0, 26, 0, 26, 0,125,
+ 0,152, 0, 26, 0,125, 0,194, 2, 3, 1, 57, 0,164, 2, 3, 0, 37, 0,133, 0,201, 0,178, 0,117, 0,137, 0,147, 0,195,
+ 0,147, 0,195, 0,147, 0,195, 0,147, 0,195, 0,147, 0,195, 0,122, 0, 37, 0,133, 0, 37, 0,133, 0, 0, 0, 41, 0,102,
+ 0,123, 0,137, 0,236, 0,117, 0,137, 0,117, 0,137, 0, 26, 0,125, 0,186, 0,102, 0,123, 0, 61, 0,139, 0,195, 0, 0,
+ 0, 41, 0, 8, 0, 47, 0, 37, 0,133, 0, 37, 0,133, 0,187, 0,123, 0,197, 0,123, 0,187, 0,178, 0,201, 0,178, 0,117,
+ 0,137, 0,117, 0,137, 0,137, 1,104, 0,143, 1,106, 0,147, 0,195, 0,147, 0,195, 0,139, 0,213, 0, 47, 0,131, 0,137,
+ 0,195, 0,147, 0, 18, 0,156, 0,203, 0, 37, 0,133, 0,197, 0,123, 0,117, 0,137, 0,117, 0,137, 0,117, 0,137, 0,117,
+ 0,137, 0, 37, 0,104, 0,160, 0,106, 0,131, 0,186, 0,120, 0,120, 0, 8, 0, 8, 0, 47, 0, 21, 0, 33, 0,213, 0,203,
+ 0, 55, 0, 57, 0,154, 0,123, 0,192, 0,193, 0,184, 0,195, 0,123, 0,123, 0,122, 0,122, 0, 30, 0,169, 0,169, 0, 56,
+ 0,176, 0,186, 0,123, 0,157, 0,122, 0,102, 0,102, 0,188, 0,195, 0,195, 0,142, 0,198, 0,160, 0, 88, 0,157, 0,160,
+ 0, 40, 0,104, 0,104, 0,103, 0,178, 0,136, 0,144, 0,137, 0, 69, 0,170, 0,137, 0,152, 0,152, 0,102, 1,106, 1,106,
+ 0,160, 0,160, 0,122, 0,122, 0,188, 0,125, 0,125, 0,125, 0,118, 0,166, 0,131, 0, 0, 0, 95, 0, 65, 0, 72, 0, 15,
+ 0, 72, 0,102, 0,194, 0,167, 0,125, 0,105, 0,194, 0,194, 0,194, 0,194, 0, 95, 0,209, 0,176, 0, 54, 0,144, 0,202,
+ 0,119, 0,245, 0, 35, 0,194, 0,194, 0, 29, 0, 27, 0, 54, 0,153, 0,153, 0,181, 0,135, 0,230, 0,219, 0,143, 0,143,
+ 0,178, 0,197, 1, 65, 1, 65, 1,230, 1,153, 1,153, 1, 81, 1, 48, 0,143, 1, 17, 1,236, 1,207, 1,207, 1,240, 1,223,
+ 1,223, 1, 94, 1, 94, 1, 41, 1, 41, 2, 36, 1, 61, 2, 36, 1, 61, 1,182, 1,182, 1,223, 1,223, 0,193, 1, 47, 2, 1,
+ 1, 86, 1,164, 1, 31, 1, 88,254,161, 1, 37, 1, 86, 1, 91, 1, 18, 1, 94, 0,214, 0,214, 0,214, 0,214, 0,214, 1,141,
+ 1, 23, 1,219, 1, 41, 1, 31, 1, 61, 0, 0, 1, 47, 2, 1, 1, 63, 1,153, 1, 86, 1, 88, 1, 41, 2, 34, 1, 86, 0,210,
+ 1, 47, 1, 47, 1,213, 1,239, 1,240, 1,219, 1,121, 1,121, 1,156, 1,204, 1,115, 1,163, 1,250, 1, 98, 1, 94, 1, 95,
+ 1,115, 1,246, 0,182, 2, 1, 1, 63, 1,141, 1,152, 1,139, 1,174, 2, 36, 1, 85, 0,206, 1, 41, 1, 41, 1, 47, 1, 47,
+ 1, 31, 1, 61, 0, 0, 0, 0, 0, 88, 0,141, 0, 0, 0, 47, 0, 8, 1,250, 1, 85, 1, 85, 0,206, 1,139, 1,219, 0, 0,
+ 1,239, 4, 2,255, 20, 1,236, 1,230, 2, 30, 1,147, 1,219, 1, 63, 0, 25, 1,233,255, 31,254,237,255, 31,255,181,254,112,
+255,206, 1, 54, 0, 37, 0,166, 0,215, 0, 37, 0,197, 0,156, 0,137, 0,117, 0,201, 0,137, 0, 37, 0, 86, 0,139, 0,137,
+ 0,117, 0,137, 0,197, 0,120, 0, 47, 0, 37, 0,117, 0, 18, 0,117, 0, 74, 0,201, 0, 37, 0, 70, 0,169, 0,195, 1, 54,
+ 0, 51, 0, 70, 0,151, 0, 32, 0,137, 0,169, 0,152, 0,195, 0,137, 1, 54, 0,236, 0, 68, 0,195, 0,116, 0,161, 0,137,
+ 0, 80, 0,190, 0,195, 0,137, 0,159, 0, 51, 0, 76, 0, 89, 0,131, 0, 70, 1, 54, 0, 51, 0,137, 0, 51, 0, 70, 0,149,
+ 0,114, 0, 34,254,112, 0, 34, 0,109, 0, 57, 0, 51, 0,117, 0,137, 0,139, 0,155, 0,233, 0, 0, 0, 96, 0,132, 0, 33,
+ 0, 89, 0, 52, 0,190, 0,195, 0,186, 0,117, 0,162, 0,162, 0,201, 0,190, 0,139, 0, 86, 0,127, 0, 85, 0,139, 0,139,
+ 0,139, 0,197, 0,197,255,190, 0,215, 0,139, 0,139, 0,201, 0,201, 0,109,255,237, 0, 34,255,190, 0,137, 0,139, 0,104,
+ 0,137, 0, 37, 0,166, 0,166, 0,215, 0, 33, 0,197, 0, 15, 0,137, 0,139, 0,139, 0,137, 0, 4, 0, 86, 0,137, 0,117,
+ 0,137, 0,197, 0,139, 0, 47, 0,104, 0, 66, 0, 18, 0, 80, 0,137, 0,114, 0, 60, 0, 32, 0, 65, 0,197, 0,139, 0, 60,
+ 0, 76, 0,133, 0,125, 0,209, 1, 1, 0,105, 0,123, 0, 59, 0,169, 0,195, 0,195, 0,236, 0, 30, 0, 61, 0,195, 0,137,
+ 0,195, 0,190, 0,195, 0,225, 0,104, 0, 99, 0, 76, 0,124, 0,195, 0,125, 0, 80, 0, 30, 0,104, 0,195, 0,195, 0, 78,
+ 0,168, 0,123, 0,123, 0, 35, 1, 1, 0,195, 0,213, 0,178, 0,178, 0,186, 0, 10, 0, 65, 0, 35, 0,236, 0,195, 0,104,
+ 0,195, 0,215, 1, 1, 0, 85, 0,127, 0,215, 1, 1, 0, 15, 0, 59, 0,137, 0,169, 0,137, 0,236, 0, 31, 0, 98, 0,139,
+ 0,195, 0, 47, 0,225, 0, 37, 0, 92, 0, 37, 0, 92, 0, 18, 0, 76, 0,140, 0,195, 0,201, 0, 15, 0, 59, 0,137, 0,236,
+ 0,137, 0,195, 0,140, 0,195, 1,199, 0, 37, 0,133, 0, 37, 0,133, 0, 0, 0, 41, 0,197, 0,123, 0,117, 0,122, 0,117,
+ 0,122, 0, 15, 0, 59, 0,137, 0,169, 0, 26, 0,125, 0,139, 0,195, 0,139, 0,195, 0,117, 0,137, 0,117, 0,137, 0,117,
+ 0,137, 0,139, 0,195, 0,104, 0,104, 0,104, 0,104, 0,104, 0,104, 0,137, 0,195, 0,215, 1, 1, 0, 65, 0,104, 1,214,
+ 1,100, 1,214, 0,218, 1,178, 1, 0, 1,189, 0, 76, 1,189, 0, 25, 2, 12, 0, 69, 0,222, 0, 69, 0, 69, 0, 88, 0, 88,
+ 0, 88, 0,232, 0,232,255,204,255,204,255, 34,255, 34,255, 16,255, 16, 0, 10, 0, 10, 0,122, 0,122,255,236,255,182, 0, 31,
+ 0, 8, 0, 66, 0,130, 0, 54, 0,222, 0, 76, 0, 25, 0, 25, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 68, 1, 48, 1, 86,
+ 1, 0, 1,189, 1,189, 1, 92, 1,250, 1,150, 0,154, 0,134, 0,236, 0,202, 0,154, 0,126, 0,126, 0,161, 0,200, 1, 54,
+ 1,214, 0,146, 0, 69, 0, 31, 1,189, 0, 69, 0, 69, 0, 69, 0, 69, 0, 69, 0, 69, 0, 69, 0, 69, 0, 88, 0, 88, 0, 88,
+ 0, 88, 0, 88, 0, 88, 0, 88,255,204,255,204,255,204,255,182,255,182, 0, 10, 0, 10, 0, 66, 0, 54, 0, 0, 0, 76, 0, 25,
+ 0, 25, 0,222, 1,250, 1,150, 0,154, 0,134, 0,175, 0,172, 1, 8, 0,126, 0,126, 0,161, 0, 62, 0,108, 0,121, 0,246,
+ 0,124, 0, 97, 0,114, 0,123, 0,149, 0, 26, 0,106, 0, 75, 0,124, 0,124, 0, 99, 0, 99, 0,101, 0,101, 0, 16, 0,114,
+ 0,100, 0, 96, 0,111, 0, 97, 0, 19, 0,119, 0, 84, 0, 48, 0, 90,251,138, 0,157,252,198, 0, 83, 0, 83, 0, 83, 0, 83,
+ 1,207, 1,120, 0, 68,255,240, 2, 14, 0, 86, 0, 95, 1, 73,255,240, 1,150, 0,160, 0,158, 0,110, 0, 55, 0,160, 0,158,
+ 0,158, 0, 55, 0,159, 0,158, 0,160, 0,158, 0,158, 0, 55, 0,159, 0,159, 0, 55, 0,159, 0, 45, 0, 55, 0, 55, 0,160,
+ 0, 55, 0,158, 0, 55, 0,158, 0, 86, 0,158, 0,160, 0,159, 0,159, 0,159, 0,158, 0,118, 0,160, 0,159, 0,159, 0,139,
+ 0, 55, 0,107, 0,161, 0,109, 0,160, 1, 35, 1,149, 0, 41, 0,169, 0,178, 0, 14, 0,137, 0,136, 0, 43, 0, 63, 0, 43,
+ 0,252, 0,245, 1, 55, 1, 55, 1, 76, 1, 76, 1, 44, 1, 58, 1,100, 1, 94, 1, 18, 1, 69, 1, 27, 1, 60, 1, 60, 1, 46,
+ 1, 63, 1, 17, 1, 2, 1, 65, 0,228, 1, 69, 1, 69, 1, 71, 0,251, 1, 71, 1, 71, 1, 49, 1, 49, 1, 79, 1, 79, 1, 71,
+ 1, 73, 1, 56, 1, 37, 1, 91, 1, 58, 1, 88, 1, 58, 1, 58, 1, 71, 1, 77, 1, 91, 0,255, 1, 37, 1, 35, 1, 72, 1,153,
+ 1, 91, 1, 35, 0,123, 1, 58, 0,156, 0,160, 1, 71, 1, 88, 1, 81, 1, 58, 1, 79, 1, 87, 1, 98, 1, 71, 1, 91, 1, 67,
+ 1, 97, 1, 73, 1, 71, 1,100, 1, 85, 1, 85, 1,126, 1, 37, 1, 37, 1, 85, 1, 85, 1, 63, 1, 58, 1, 58, 1, 91, 1,120,
+ 1, 77, 0,208, 1, 32, 1, 70, 1, 17, 1, 97, 1, 94, 1, 77, 1, 51, 1, 58, 0, 37, 0,133, 0,166, 0,193, 0,166, 0,193,
+ 0,166, 0,193, 0,139, 0,195, 0,137, 0,123, 0,137, 0,123, 0,137, 0,123, 0,125, 0,123, 0,137, 0,123, 0,197, 0,123,
+ 0,197, 0,123, 0,197, 0,123, 0,233, 0,195, 0,102, 0,123, 0,137, 0,195, 0,137, 0,195, 0, 20, 0, 55, 0,137, 0,195,
+ 0,201, 0,178, 0,137, 0,236, 0,137, 0,236, 0,137, 0,236, 0,215, 0,160, 0,215, 0,160, 0,215, 0,160, 0,215, 0,160,
+ 0, 86, 0,109, 0, 86, 0,109, 0, 86, 0,109, 0,139, 0,195, 0,139, 0,195, 0,139, 0,195, 0,139, 0,195, 0,197, 0,190,
+ 0,143, 1,106, 0,143, 1,106, 0,143, 1, 61, 0,143, 1, 61, 0,139, 0,213, 0,139, 0,213, 0,139, 0,213, 0, 47, 0,131,
+ 0, 47, 0,131, 0, 47, 0,131, 0, 47, 0,131, 0,147, 0,195, 0,147, 0,195, 0,147, 0,195, 0, 57, 0,100, 0, 0, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 76, 0, 37, 0,104, 0,156, 0,203, 0,156, 0,203,
+ 0,195, 0,195, 0, 37, 0,133, 0, 37, 0,133, 0,197, 0,123, 0,197, 0,123, 0,201, 0,178, 0,117, 0,137, 0,147, 0,195,
+ 0, 37, 0,104, 0, 37, 0,104, 0, 37, 0,104, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 37, 0, 37,
+254,108,254,108,255, 27,255, 7,255,193,255,143, 0,169, 0,169, 0,169, 0,169, 0,169, 0,169,255,127,255,127,253,139,253,139,
+254, 8,253,244, 0,195, 0,195, 0,195, 0,195, 0,195, 0,195, 0,195, 0,195,255, 77,255, 77,253, 64,253, 64,253,164,253,144,
+254, 99,254, 99, 1, 54, 1, 54, 0,245, 0,245, 1, 39, 1, 19, 1, 31, 1, 31,255,127,255,127,253,164,253,164,254, 8,253,244,
+254,174,254,174, 0,137, 0,137, 0,137, 0,137, 0,137, 0,137,255,202,255,127,253,139,253,139,254,158,254,138, 0, 51, 0, 51,
+ 0, 51, 0, 51, 0, 51, 0, 51, 0, 51, 0, 51,254,233,253, 64,253, 69,254, 24, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70,
+ 0, 70, 0, 70,255,202,255,102,253,139,253,139,254,183,254,163,254,249,254,174, 0, 70, 0, 70, 0,169, 0,169, 0,195, 0,195,
+ 1, 23, 1, 54, 0,137, 0,137, 0, 51, 0, 51, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70,
+ 0, 37, 0, 37,254,108,254,108,255, 27,255, 7,255,193,255,143, 0,195, 0,195, 0,195, 0,195, 0,195, 0,195, 0,195, 0,195,
+255, 77,255, 77,253, 64,253, 64,253,164,253,144,254, 99,254, 99, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70,
+255,202,255,102,253,139,253,139,254,183,254,163,254,249,254,174, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70, 0, 37,
+ 0, 37,255,135, 0, 25, 0, 37, 1,239, 2, 30, 1,239, 1, 31, 1, 31, 0,195, 0,195, 0,195, 0,195, 0,195,254,141,255, 31,
+254, 91,254,237, 0,137, 0,245, 1, 39, 1, 31, 1, 47, 1, 54, 1, 23, 1, 54, 1, 31, 1, 31, 0,201, 0,201,254,191,255, 31,
+ 0,245, 1, 19, 1, 31, 0, 51, 0, 51, 0, 51, 0, 51, 0,190, 0,190, 0, 51, 0, 51, 0, 37, 0, 37,254, 91,254,112,255,127,
+ 1, 23, 1, 63, 1, 23, 0, 70, 0, 70, 0, 70, 0, 70, 0, 70,254,166,255,181,254,166,255,206, 0, 74, 1,219, 1,239, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,100, 1,100, 0, 0, 0, 0, 0, 0, 0, 0,
+ 0, 0, 1,207, 1,207, 1,147, 1,207, 0,211, 0,211, 0,211, 0,211, 0,162, 0,162, 1, 63, 1, 63, 0, 80, 0, 0, 0, 0,
+ 0, 0, 1, 90, 1,164, 0,208, 0,244, 0, 0, 1,207, 1, 90, 0, 33, 0, 33, 0,208, 0, 0, 1, 61, 1, 72, 1, 12, 1, 63,
+ 1, 73, 1, 61, 1, 59, 1, 48, 1, 28, 1, 28, 1, 28, 1,216, 1,216, 1, 65, 1, 61, 1, 88, 1, 66, 1, 70, 1, 12, 1, 63,
+ 1, 73, 1, 61, 1, 59, 1, 48, 1, 28, 1, 28, 1, 28, 1,216, 1,216, 1, 69, 1, 49, 1, 58, 1, 18, 1, 49, 0, 0, 0, 37,
+ 0,106, 0, 0, 0,130, 0,140, 0, 84, 0, 10, 0, 0, 0, 74, 0,137, 0, 37, 0, 27, 0, 27, 0, 27, 0, 27, 0, 27, 0, 10,
+ 0, 27, 0, 27, 0, 27, 0, 27, 0, 27, 0, 27, 0, 27, 0, 66, 1, 28, 0, 66, 1, 28, 0, 66, 1, 28, 0,184, 0,184, 0,184,
+ 0,184, 0, 66, 0, 66, 0, 89, 0, 89, 0, 66, 1, 28, 0, 66, 1, 28, 0, 66, 0, 66, 0, 66, 1, 28, 0, 66, 1, 28, 1, 28,
+ 0, 66, 0, 66, 0, 66, 0, 65, 0, 66, 0, 66, 0,113, 0,183, 0,183, 0,183, 0,183, 0,186, 0, 63, 0, 81, 0, 81, 0, 50,
+ 0, 66, 0, 88, 0, 88, 0, 66, 0, 66, 2, 22, 1, 28, 0, 66, 0, 66, 2, 22, 1, 71, 0, 66, 0, 42, 0, 66, 0, 66, 0, 42,
+ 0, 66, 0, 42, 0, 66, 0, 66, 0, 66, 0, 66, 0, 66, 0, 66, 1, 28, 0, 66, 1, 28, 0, 66, 1, 28, 0,155, 0,155, 0,155,
+ 0,155, 0, 66, 0, 66, 0, 66, 0, 66, 1, 28, 1, 28, 0, 66, 1, 28, 0, 66, 1, 28, 0, 66, 0, 66, 0, 25, 0,243, 0, 66,
+ 0,243, 0,243, 0,243, 0,243, 0,243, 0,243, 0,243, 0, 66, 0, 69, 0, 69, 0,243, 0, 66, 0, 42, 0, 66, 0, 66, 0, 66,
+ 0, 66, 0, 66, 0, 66, 0, 66, 0, 25, 0, 66, 0, 25, 0,190, 0, 73,255,250,255,250, 0,129, 0,129, 0,130, 0,129, 0,129,
+ 0,130, 0,152, 0,143, 0, 88, 0, 88, 0,102, 0,166, 1, 43, 1, 63, 0, 59, 0,186, 0, 41, 0,125, 0,125, 0,164, 0,164,
+ 0,164, 0,164, 0,129, 0, 63, 0, 53, 0, 88, 0, 74, 0, 87, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88,
+ 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 87, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 87, 0, 74, 0, 74,
+ 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 69, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88,
+ 0, 86, 0, 86, 0, 86, 0, 86, 0, 87, 0, 88, 0, 88, 0, 88, 0, 88, 0, 86, 0, 86, 0, 86, 0, 86, 0, 86, 0, 86, 0, 86,
+ 0, 86, 0, 86, 0, 88, 0, 86, 0, 86, 0, 86, 0, 86, 0, 86, 0, 86, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88,
+ 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 88, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79, 0, 79,
+ 0, 80, 0, 80, 0, 80, 0, 80, 1,233, 1, 8, 0, 88, 0, 88, 0, 88, 0, 86, 0, 88, 0, 86, 0, 86, 0, 86, 0, 86, 0, 88,
+ 0, 88, 0, 88, 0, 88, 0, 86, 0, 86, 0, 86, 0, 86, 0, 80, 0, 73, 0,114, 0,146, 0,146, 0,146, 0,146, 0,146, 1,207,
+ 1, 90, 1,207, 1, 90, 2, 37, 0, 13, 2, 37, 0, 13, 0, 88, 0, 97, 0, 6, 0, 6, 0,184, 0,166, 0, 71, 0, 88, 1, 43,
+ 1, 28, 1, 43, 1, 28, 2, 0, 0,124, 0,104, 0, 6, 0,125, 0, 50, 0, 6, 0, 72, 1, 0, 0, 6, 0, 6, 0, 6, 0, 6,
+ 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 37, 0, 6, 0, 6, 0, 6, 0, 37, 0, 6,
+ 0, 6, 0, 6, 1, 0, 0, 6, 0, 6, 1, 0, 0, 6, 0, 6,255,236, 0, 6, 1, 8, 1, 63, 0, 6, 0, 88, 0, 88, 0, 37,
+ 0, 88, 0, 88, 1, 0, 0, 6, 0, 6, 1, 54, 0,190, 0, 70, 0, 6, 0,156, 1, 0, 0, 6, 0, 70, 0, 26, 0, 72, 0, 6,
+ 0, 6, 0, 6, 0, 82, 0, 70, 0, 70, 0, 70, 0, 6, 1, 24, 1, 24, 1, 24, 1, 25, 2,246, 1, 25, 1, 24, 1, 24, 1, 24,
+ 1, 24, 2,245, 1, 24, 2, 12, 0, 17, 2, 12, 2, 12, 0, 16, 2, 11, 0, 16, 2, 1, 0, 25, 0, 6, 0,150,255,236,255,236,
+ 2, 24, 1,200,255,236,255,236, 2, 24, 1,200,255,235,255,236, 2, 24, 1,200, 2, 24, 2, 24, 1,200, 1,200,255,236,255,236,
+255,236,255,236, 2, 24, 2, 24, 1,200, 1,200,255,236,255,236,255,236,255,236, 2, 24, 2, 24, 1,200, 1,200, 1,200, 1,200,
+ 1,200, 1,200,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,
+255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,
+255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236, 2, 24, 1,200,255,236, 1,120,
+ 2, 24, 1,120, 1,120,255,236,255,236,255,236, 2, 24, 1,120, 1,120,255,236,255,236,255,236, 2, 24, 1,120, 1,120,255,236,
+255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236, 2, 24,255,236,255,236, 2, 24,255,147,
+255,147,255,147,255,236, 2, 24, 2,124, 2, 24,255,236, 1,200, 2,124, 1,200,255,236, 1,200,255,236, 1,200,255,236,255,236,
+255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236,255,236, 2,105,255,236,
+255,236,255,236,255,236, 4, 69,255,236, 2,105,255,236,255,236,255,236,255,236,255,236, 2,105,255,236,255,236, 0, 6, 0, 6,
+ 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0,219, 0,219, 0, 6, 0, 6, 1, 68, 1, 68, 0, 6, 0, 6,
+ 0, 6, 0, 6, 0,219, 0,219, 0, 6, 0, 6, 0,219, 0,219, 0, 6, 0, 6, 0, 6, 0, 6, 0,219, 0,219, 0, 6, 0, 6,
+ 0,219, 0,219, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0,117, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6,
+ 0, 6, 0, 6, 0, 6, 0, 6, 1, 55, 1, 55,255,236,255,236,255,236,255,236, 1, 55, 1, 55, 1, 55, 1, 55, 0, 6, 0, 6,
+ 0, 6, 0, 6, 0, 6, 0, 6, 1, 63, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6,255,236, 0, 6, 0, 6,
+ 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 97, 0, 97, 0,175, 0,175, 0, 6, 0, 34, 0, 50,
+ 0, 34, 0, 89, 0, 29, 0, 58, 0, 58, 0,200, 0, 59, 0, 43, 0, 15, 0, 18, 0, 54, 0, 46, 0, 20, 0, 8, 0,111, 0, 99,
+ 0,133, 0,201, 0, 28, 0, 78, 0, 56, 0, 47, 0, 38, 0, 47, 0, 47, 0, 47, 0, 14, 0,140, 0, 14, 0,140, 0, 12, 0, 9,
+ 0, 8, 0, 34, 0, 78, 0, 96, 0,121, 0, 97, 0,204, 0, 55, 0, 30, 0, 8, 0,103, 0, 15, 0, 27, 0, 14, 0, 5, 0, 33,
+ 0, 33, 0, 33, 0, 33, 0,156, 0,149, 0,189, 0,145, 0,145, 0, 21, 0, 71, 0,174, 0, 67, 0, 76, 0,215, 0, 24, 0, 53,
+ 0, 27, 0, 52, 0, 61, 0, 47, 0, 85, 0, 50, 0, 56, 0, 21, 0, 89, 0, 94, 0, 67, 0, 86, 0,112, 0,222, 0,144, 0,156,
+ 0,106, 0, 54, 0,148, 0,226, 0,103, 0,118, 0,128, 0, 14, 0,145, 0, 50, 0,127, 0, 11, 0,145, 0, 49, 0, 46, 1,114,
+ 0,162, 0,106, 0, 17, 1, 68, 1,177, 1, 55, 0, 96, 0, 46, 0, 47, 0, 60, 0, 75, 0, 68, 0, 36, 0, 62, 0, 75, 0, 45,
+ 0, 45, 0, 57, 0, 46, 0, 55, 0, 46, 0, 80, 0, 60, 0, 60, 0, 60, 0, 60, 0, 60, 0, 60, 0, 46, 0, 46, 0, 46, 0, 46,
+ 0, 82, 0, 82, 0,150, 0,115, 0, 39, 0, 31, 0,129, 0,188, 0, 19, 0, 22, 0, 74, 0, 30, 0, 42, 0, 82, 0, 42, 0, 34,
+ 0,136, 0,243, 0,222, 0, 46, 0, 46, 0, 58, 0, 61, 0, 52, 0, 37, 0, 61, 0, 63, 1, 68, 0, 45, 0, 87, 0, 38, 0, 87,
+ 0, 59, 0, 37, 0,152, 0, 74, 0,129, 0, 64, 0,131, 0, 51, 0, 64, 0, 86, 0, 57, 0, 48, 0,155, 0,126, 0,144, 0, 48,
+ 0, 71, 0, 31, 0, 28, 0, 26, 0, 23, 0, 43, 0, 37, 0, 40, 0, 67, 0, 40, 0, 35, 0, 40, 0, 61, 0, 40, 0, 46, 0, 54,
+ 0, 87, 0, 48, 0, 36, 0, 26, 0, 50, 0, 31, 0, 26, 0, 36, 0, 48, 0, 49, 0, 55, 0, 43, 0, 33, 0, 36, 0, 22, 0, 22,
+ 0, 37, 0, 50, 0, 32, 0, 48, 0, 25, 0, 50, 0, 41, 0, 33, 0, 23, 0, 34, 0, 36, 0, 69, 0, 61, 0, 56, 0, 48, 0, 43,
+ 2, 27, 1,205, 1, 81, 1,221, 1,211, 1, 0, 0,246, 0,103, 0,255, 0,190, 0, 46, 0,114, 0, 65, 0, 49, 0,240, 0,240,
+ 1,102, 1,110, 1, 67, 1, 68, 0,210, 0,210, 0,205, 0,206, 1,201, 1,201, 1, 25, 0,249, 0, 83, 0,116, 0, 83, 0,116,
+ 0, 45, 0, 73, 0, 83, 0, 45, 0, 54, 0, 83, 0, 83, 0, 96, 0,123, 0,123, 0, 54, 0, 54, 1, 79, 0, 54, 0,101, 0,101,
+ 0, 53, 0, 97, 0,125, 0, 84, 0, 50, 0, 41, 0,145, 0, 88, 0,116, 0, 83, 0,117, 0, 78, 0, 42, 0,117, 0, 53, 0, 29,
+ 0, 38, 0, 37, 0, 50, 0,117, 1,134, 1,134, 0,117, 0, 88, 0, 88, 0,150, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6, 0, 6,
+ 0, 6, 0, 6, 0, 6, 0,137, 0,195, 0, 76, 0,193, 0,218, 0,137, 0, 35, 0, 35, 0, 69, 0, 69,255,236,255,236, 0, 69,
+ 0, 69,255,236,255,236, 0, 69, 0, 69,255,236,255,236, 0, 69, 0, 69,255,236,255,236, 0, 69, 0, 69,255,236,255,236, 0, 69,
+ 0, 69,255,236,255,236,255,182,255,106,255,236,255,236,255,182,255,106,255,236,255,236, 0, 88, 0, 88,255,236,255,236, 0, 88,
+ 0, 88,255,236,255,236, 0, 88, 0, 88,255,236,255,236, 0, 88, 0, 88,255,236,255,236,255,204,255, 96,255,204,255, 96, 0, 10,
+255,131,255,236,255,236, 0, 10,255,131,255,236,255,236, 0, 54,255,213, 0, 0, 0, 0,255,236,255,236,255,236,255,236, 0, 25,
+255,124,255,236,255,236, 1, 68,255,236, 1, 68, 3, 34, 1, 68, 1, 68,255,236, 1, 68,255,236, 1, 68,255,236, 1, 48,255,236,
+ 1, 86,255,236, 1,178, 1, 0, 1, 0, 1,179, 1,228, 0, 76, 0, 90, 1,182, 2, 19, 0, 25,255,124,255,236,255,236, 2, 12,
+ 2, 76, 0, 69, 0, 69,255,236,255,236, 0,222, 0,242, 0, 69, 0, 69,255,236,255,236, 0, 69, 0, 69,255,236,255,236, 0, 88,
+ 0, 88,255,236,255,236, 0, 88, 0, 88,255,236,255,236, 0, 88, 0, 88,255,236,255,236, 0,232, 0,232, 0,232, 0,232,255,204,
+255, 96,255,204,255, 96,255, 34,254,214,255,236,255,236,255, 34,254,214,255,236,255,236,255, 16,254,197,255,236,255,236,255, 16,
+254,197,255,236,255,236, 0, 10, 0, 20,255,236,255,236, 0, 10, 0, 20,255,236,255,236, 0,122, 0,148,255,236,255,236, 0,122,
+ 0,148,255,236,255,236,255,182,255,106,255,236,255,236, 0, 31,255,237,255,236,255,236, 0, 8,255,161,255,236,255,236, 0, 66,
+ 0, 9,255,236,255,236, 0,130, 0, 71,255,236,255,236, 0, 54,255,213,255,236,255,236, 0,222, 0,242,255,236,255,236, 0, 76,
+ 0, 90, 0, 25,255,124, 0, 25,255,124,255,236,255,236,255,150,255, 64, 0, 83,255,224, 0,133, 0, 95, 0,179, 0, 95, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 37, 0,166, 0,139, 0,137, 0,197, 0,233, 0,102, 0,137, 0,201, 0,109, 0,137,
+ 0,215, 0, 86, 0,139, 0,117, 0,197, 0,117, 0,143, 0,139, 0, 47, 0,147, 0, 57, 0, 0, 0, 18, 0, 37, 0,156, 0,133,
+ 0,193, 0,195, 0,123, 0,123, 0,195, 0,123, 0,195, 0,178, 0,186, 0,236, 0,160, 0,109, 0,195, 0,137, 0,190, 0,137,
+ 1,106, 0,213, 0,131, 0,195, 0,100, 0, 0, 0, 76, 0,104, 0,203, 0,133, 0,246, 0,152, 0,137, 0,102, 0,143, 0,133,
+ 0,139, 0,131, 0,127, 1,219, 1, 63, 1,219, 1, 31, 1,121, 1, 55, 1, 55, 0, 27, 1, 47, 1, 47, 2, 1, 1, 88, 0,187,
+ 1,102, 1, 61, 0,156, 0, 6, 1, 0, 1, 94, 1, 63, 0, 0, 0, 0, 0, 0, 0, 69,255,236,255,236,255,237,255,106, 0, 0,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 76, 0, 0, 0, 76,
+ 0, 0, 0,152, 0, 0, 0,220, 0, 0, 1,152, 0, 0, 2,152, 0, 0, 3,160, 0, 0, 4,252, 0, 0, 5, 44, 0, 0, 5,132,
+ 0, 0, 5,220, 0, 0, 6,120, 0, 0, 6,208, 0, 0, 7, 12, 0, 0, 7, 56, 0, 0, 7,100, 0, 0, 7,152, 0, 0, 9, 32,
+ 0, 0, 9,120, 0, 0, 10, 40, 0, 0, 10,232, 0, 0, 11,100, 0, 0, 12, 0, 0, 0, 12,184, 0, 0, 13, 20, 0, 0, 13,232,
+ 0, 0, 14,156, 0, 0, 14,224, 0, 0, 15, 52, 0, 0, 15,128, 0, 0, 15,196, 0, 0, 16, 12, 0, 0, 16,244, 0, 0, 18, 8,
+ 0, 0, 18,216, 0, 0, 19,128, 0, 0, 20, 12, 0, 0, 20,128, 0, 0, 20,220, 0, 0, 21, 44, 0, 0, 21,208, 0, 0, 22, 40,
+ 0, 0, 22,128, 0, 0, 22,236, 0, 0, 23,188, 0, 0, 23,244, 0, 0, 24,180, 0, 0, 25, 80, 0, 0, 25,208, 0, 0, 26, 68,
+ 0, 0, 26,236, 0, 0, 27,184, 0, 0, 28,180, 0, 0, 28,248, 0, 0, 29,132, 0, 0, 29,248, 0, 0, 31, 16, 0, 0, 32, 20,
+ 0, 0, 32,156, 0, 0, 33, 16, 0, 0, 33, 84, 0, 0, 33,140, 0, 0, 33,208, 0, 0, 34, 20, 0, 0, 34, 64, 0, 0, 34,132,
+ 0, 0, 35,112, 0, 0, 36, 0, 0, 0, 36,136, 0, 0, 37, 24, 0, 0, 37,192, 0, 0, 38, 56, 0, 0, 39, 0, 0, 0, 39,112,
+ 0, 0, 39,216, 0, 0, 40, 80, 0, 0, 41, 76, 0, 0, 41,164, 0, 0, 42,176, 0, 0, 43, 32, 0, 0, 43,152, 0, 0, 44, 44,
+ 0, 0, 44,192, 0, 0, 45, 80, 0, 0, 46, 60, 0, 0, 46,176, 0, 0, 47, 32, 0, 0, 47,172, 0, 0, 48,248, 0, 0, 49,228,
+ 0, 0, 50,208, 0, 0, 51, 88, 0, 0, 52, 36, 0, 0, 52, 84, 0, 0, 53, 36, 0, 0, 53,164, 0, 0, 53,164, 0, 0, 53,244,
+ 0, 0, 54,184, 0, 0, 55, 76, 0, 0, 56,100, 0, 0, 57, 56, 0, 0, 57,132, 0, 0, 58,168, 0, 0, 58,236, 0, 0, 60, 8,
+ 0, 0, 60,236, 0, 0, 61, 96, 0, 0, 61,152, 0, 0, 61,196, 0, 0, 63, 44, 0, 0, 63, 88, 0, 0, 63,208, 0, 0, 64, 60,
+ 0, 0, 64,240, 0, 0, 65,192, 0, 0, 66, 4, 0, 0, 66,180, 0, 0, 67, 16, 0, 0, 67, 64, 0, 0, 67, 80, 0, 0, 67,184,
+ 0, 0, 68, 72, 0, 0, 68,192, 0, 0, 68,224, 0, 0, 69, 0, 0, 0, 69, 32, 0, 0, 70, 20, 0, 0, 70, 56, 0, 0, 70, 92,
+ 0, 0, 70,140, 0, 0, 70,184, 0, 0, 70,240, 0, 0, 72, 36, 0, 0, 72,220, 0, 0, 72,244, 0, 0, 73, 12, 0, 0, 73, 36,
+ 0, 0, 73, 60, 0, 0, 73, 84, 0, 0, 73,108, 0, 0, 73,132, 0, 0, 73,172, 0, 0, 73,208, 0, 0, 74,108, 0, 0, 74,152,
+ 0, 0, 74,188, 0, 0, 74,224, 0, 0, 75, 16, 0, 0, 75, 60, 0, 0, 75,116, 0, 0, 75,232, 0, 0, 76,236, 0, 0, 77, 16,
+ 0, 0, 77, 52, 0, 0, 77,100, 0, 0, 77,156, 0, 0, 77,192, 0, 0, 78, 64, 0, 0, 79, 36, 0, 0, 79, 60, 0, 0, 79, 84,
+ 0, 0, 79,108, 0, 0, 79,132, 0, 0, 79,156, 0, 0, 79,180, 0, 0, 81, 4, 0, 0, 81, 28, 0, 0, 81, 52, 0, 0, 81, 76,
+ 0, 0, 81,100, 0, 0, 81,132, 0, 0, 81,156, 0, 0, 81,180, 0, 0, 81,216, 0, 0, 81,248, 0, 0, 83, 12, 0, 0, 83, 36,
+ 0, 0, 83, 60, 0, 0, 83, 84, 0, 0, 83,124, 0, 0, 83,172, 0, 0, 83,220, 0, 0, 84, 56, 0, 0, 85, 60, 0, 0, 85, 84,
+ 0, 0, 85,108, 0, 0, 85,148, 0, 0, 85,196, 0, 0, 85,220, 0, 0, 86,112, 0, 0, 86,136, 0, 0, 86,180, 0, 0, 86,204,
+ 0, 0, 86,252, 0, 0, 87, 20, 0, 0, 87, 44, 0, 0, 87, 68, 0, 0, 87, 92, 0, 0, 87,116, 0, 0, 87,140, 0, 0, 87,164,
+ 0, 0, 87,188, 0, 0, 87,212, 0, 0, 87,236, 0, 0, 88, 4, 0, 0, 88, 28, 0, 0, 88, 68, 0, 0, 88, 84, 0, 0, 89, 16,
+ 0, 0, 89, 40, 0, 0, 89, 64, 0, 0, 89, 88, 0, 0, 89,112, 0, 0, 89,136, 0, 0, 89,160, 0, 0, 89,184, 0, 0, 89,208,
+ 0, 0, 89,232, 0, 0, 90, 0, 0, 0, 90, 24, 0, 0, 90, 48, 0, 0, 90, 72, 0, 0, 90, 96, 0, 0, 90,120, 0, 0, 90,144,
+ 0, 0, 90,168, 0, 0, 90,192, 0, 0, 90,240, 0, 0, 91, 36, 0, 0, 91,176, 0, 0, 92, 68, 0, 0, 92,120, 0, 0, 92,144,
+ 0, 0, 92,184, 0, 0, 92,208, 0, 0, 92,248, 0, 0, 93, 16, 0, 0, 93, 40, 0, 0, 93, 64, 0, 0, 93, 88, 0, 0, 93,168,
+ 0, 0, 94, 80, 0, 0, 95, 0, 0, 0, 95, 24, 0, 0, 95, 48, 0, 0, 95, 72, 0, 0, 95, 96, 0, 0, 96, 92, 0, 0, 96,128,
+ 0, 0, 96,180, 0, 0, 96,204, 0, 0, 96,228, 0, 0, 96,252, 0, 0, 97, 20, 0, 0, 97, 44, 0, 0, 97, 68, 0, 0, 97,184,
+ 0, 0, 98, 72, 0, 0, 98, 96, 0, 0, 98,120, 0, 0, 98,144, 0, 0, 98,168, 0, 0, 98,192, 0, 0, 98,216, 0, 0, 98,240,
+ 0, 0, 99,128, 0, 0,100, 24, 0, 0,100, 68, 0, 0,100,100, 0, 0,100,140, 0, 0,100,180, 0, 0,100,204, 0, 0,100,228,
+ 0, 0,101,124, 0, 0,102,148, 0, 0,102,172, 0, 0,102,196, 0, 0,102,220, 0, 0,102,244, 0, 0,103, 12, 0, 0,103, 36,
+ 0, 0,103, 60, 0, 0,103, 84, 0, 0,103,108, 0, 0,103,132, 0, 0,103,156, 0, 0,103,180, 0, 0,103,204, 0, 0,103,228,
+ 0, 0,103,252, 0, 0,104, 20, 0, 0,104, 56, 0, 0,104, 80, 0, 0,104,184, 0, 0,105, 76, 0, 0,105,120, 0, 0,105,160,
+ 0, 0,105,204, 0, 0,105,236, 0, 0,106, 20, 0, 0,106, 60, 0, 0,106, 84, 0, 0,106,108, 0, 0,106,132, 0, 0,106,156,
+ 0, 0,106,180, 0, 0,106,204, 0, 0,106,240, 0, 0,107, 16, 0, 0,107, 52, 0, 0,107, 76, 0, 0,107,112, 0, 0,107,136,
+ 0, 0,107,160, 0, 0,107,184, 0, 0,107,208, 0, 0,107,232, 0, 0,108, 0, 0, 0,108,100, 0, 0,108,216, 0, 0,109,152,
+ 0, 0,109,168, 0, 0,110, 12, 0, 0,110,100, 0, 0,110,212, 0, 0,111, 96, 0, 0,111,212, 0, 0,112, 64, 0, 0,112, 80,
+ 0, 0,112,180, 0, 0,113, 8, 0, 0,113,108, 0, 0,114, 24, 0, 0,114,116, 0, 0,115, 20, 0, 0,115,200, 0, 0,116, 12,
+ 0, 0,116,120, 0, 0,116,252, 0, 0,117, 88, 0, 0,117,208, 0, 0,118, 16, 0, 0,118, 92, 0, 0,118,184, 0, 0,119, 12,
+ 0, 0,119, 84, 0, 0,119,160, 0, 0,120, 8, 0, 0,120, 76, 0, 0,120,144, 0, 0,120,252, 0, 0,121, 20, 0, 0,121, 44,
+ 0, 0,121,144, 0, 0,121,252, 0, 0,122,108, 0, 0,122,240, 0, 0,123, 92, 0, 0,123,212, 0, 0,124, 76, 0, 0,124, 92,
+ 0, 0,124,200, 0, 0,125, 44, 0, 0,125,104, 0, 0,125,196, 0, 0,126, 8, 0, 0,126, 36, 0, 0,126, 64, 0, 0,126,172,
+ 0, 0,127, 0, 0, 0,127, 88, 0, 0,127,188, 0, 0,128, 4, 0, 0,128, 76, 0, 0,128,184, 0, 0,129, 36, 0, 0,129,144,
+ 0, 0,129,252, 0, 0,130,104, 0, 0,130,200, 0, 0,131, 44, 0, 0,131, 72, 0, 0,131,100, 0, 0,131,168, 0, 0,131,184,
+ 0, 0,131,208, 0, 0,131,232, 0, 0,132, 0, 0, 0,132, 24, 0, 0,132, 48, 0, 0,132, 72, 0, 0,132,120, 0, 0,132,144,
+ 0, 0,132,176, 0, 0,132,208, 0, 0,132,240, 0, 0,133, 16, 0, 0,133, 48, 0, 0,133, 80, 0, 0,133,112, 0, 0,133,136,
+ 0, 0,133,152, 0, 0,133,184, 0, 0,133,208, 0, 0,133,240, 0, 0,134, 8, 0, 0,134, 32, 0, 0,134, 56, 0, 0,134, 80,
+ 0, 0,134,104, 0, 0,134,128, 0, 0,134,152, 0, 0,134,176, 0, 0,134,200, 0, 0,134,224, 0, 0,134,248, 0, 0,135, 16,
+ 0, 0,135, 40, 0, 0,135, 64, 0, 0,135, 88, 0, 0,135,112, 0, 0,135,212, 0, 0,135,236, 0, 0,136, 4, 0, 0,136, 28,
+ 0, 0,136, 52, 0, 0,136, 76, 0, 0,136,100, 0, 0,136,124, 0, 0,136,148, 0, 0,136,172, 0, 0,136,196, 0, 0,136,220,
+ 0, 0,136,244, 0, 0,137, 12, 0, 0,137, 36, 0, 0,137, 60, 0, 0,137, 84, 0, 0,137,108, 0, 0,137,132, 0, 0,137,156,
+ 0, 0,137,180, 0, 0,137,204, 0, 0,137,228, 0, 0,137,252, 0, 0,138, 20, 0, 0,138, 44, 0, 0,138, 68, 0, 0,138, 92,
+ 0, 0,138,116, 0, 0,138,140, 0, 0,138,164, 0, 0,138,188, 0, 0,138,212, 0, 0,138,236, 0, 0,139, 4, 0, 0,139, 28,
+ 0, 0,139, 52, 0, 0,139,120, 0, 0,140, 24, 0, 0,140,104, 0, 0,140,184, 0, 0,140,208, 0, 0,140,232, 0, 0,141, 0,
+ 0, 0,141, 24, 0, 0,141, 56, 0, 0,141, 80, 0, 0,141,112, 0, 0,141,136, 0, 0,141,160, 0, 0,141,184, 0, 0,141,216,
+ 0, 0,141,240, 0, 0,142, 8, 0, 0,142, 32, 0, 0,142,132, 0, 0,143, 16, 0, 0,143,132, 0, 0,143,228, 0, 0,144,128,
+ 0, 0,145, 28, 0, 0,145,124, 0, 0,146, 16, 0, 0,146,156, 0, 0,146,212, 0, 0,147, 32, 0, 0,147,192, 0, 0,148, 20,
+ 0, 0,148,104, 0, 0,148,144, 0, 0,149, 12, 0, 0,149,156, 0, 0,150, 44, 0, 0,150,216, 0, 0,151, 96, 0, 0,151,224,
+ 0, 0,152, 84, 0, 0,152,204, 0, 0,153, 48, 0, 0,153,208, 0, 0,154, 88, 0, 0,155, 32, 0, 0,155,212, 0, 0,156,144,
+ 0, 0,157, 16, 0, 0,157, 88, 0, 0,157,232, 0, 0,158, 92, 0, 0,158,200, 0, 0,159, 52, 0, 0,159,132, 0, 0,159,200,
+ 0, 0,160, 36, 0, 0,160,152, 0, 0,160,232, 0, 0,161, 28, 0, 0,161, 76, 0, 0,161,192, 0, 0,162, 32, 0, 0,162, 84,
+ 0, 0,162,220, 0, 0,163, 68, 0, 0,163,172, 0, 0,164, 44, 0, 0,164,140, 0, 0,164,240, 0, 0,165, 32, 0, 0,165,140,
+ 0, 0,165,240, 0, 0,166,128, 0, 0,167, 24, 0, 0,167, 84, 0, 0,167,144, 0, 0,167,224, 0, 0,168, 32, 0, 0,168,116,
+ 0, 0,168,180, 0, 0,168,240, 0, 0,169, 96, 0, 0,169,208, 0, 0,170,116, 0, 0,170,180, 0, 0,171, 20, 0, 0,171, 92,
+ 0, 0,171,192, 0, 0,172, 4, 0, 0,172, 72, 0, 0,172,176, 0, 0,173, 32, 0, 0,173,140, 0, 0,173,180, 0, 0,173,236,
+ 0, 0,174, 44, 0, 0,174, 92, 0, 0,174,164, 0, 0,175, 0, 0, 0,175,104, 0, 0,175,248, 0, 0,176, 84, 0, 0,176,180,
+ 0, 0,177, 20, 0, 0,177,136, 0, 0,178, 12, 0, 0,178,164, 0, 0,179, 44, 0, 0,179,188, 0, 0,179,236, 0, 0,180, 80,
+ 0, 0,180,136, 0, 0,180,168, 0, 0,181, 44, 0, 0,181,156, 0, 0,182, 12, 0, 0,182,136, 0, 0,183, 84, 0, 0,183,248,
+ 0, 0,184,168, 0, 0,185, 52, 0, 0,185,240, 0, 0,186,124, 0, 0,187, 40, 0, 0,187,100, 0, 0,187,200, 0, 0,188, 8,
+ 0, 0,188, 88, 0, 0,188,192, 0, 0,189, 36, 0, 0,189,132, 0, 0,189,188, 0, 0,189,252, 0, 0,190, 60, 0, 0,190,156,
+ 0, 0,191, 8, 0, 0,191, 64, 0, 0,191,128, 0, 0,191,144, 0, 0,191,160, 0, 0,191,176, 0, 0,191,192, 0, 0,191,252,
+ 0, 0,192, 56, 0, 0,192,148, 0, 0,192,240, 0, 0,193, 76, 0, 0,193,168, 0, 0,193,216, 0, 0,193,232, 0, 0,194, 24,
+ 0, 0,194, 40, 0, 0,194, 80, 0, 0,194,108, 0, 0,194,128, 0, 0,194,148, 0, 0,194,192, 0, 0,194,208, 0, 0,194,224,
+ 0, 0,195,132, 0, 0,195,232, 0, 0,197, 0, 0, 0,197, 16, 0, 0,197, 76, 0, 0,197,160, 0, 0,197,212, 0, 0,198, 80,
+ 0, 0,198,136, 0, 0,198,228, 0, 0,199, 4, 0, 0,199, 40, 0, 0,199, 80, 0, 0,199,120, 0, 0,199,152, 0, 0,199,168,
+ 0, 0,199,184, 0, 0,199,200, 0, 0,199,216, 0, 0,199,232, 0, 0,200, 20, 0, 0,200, 36, 0, 0,200,120, 0, 0,200,168,
+ 0, 0,200,184, 0, 0,201, 0, 0, 0,201, 16, 0, 0,201, 96, 0, 0,201,112, 0, 0,201,140, 0, 0,201,168, 0, 0,201,212,
+ 0, 0,201,236, 0, 0,202, 36, 0, 0,202, 64, 0, 0,202,104, 0, 0,202,140, 0, 0,202,168, 0, 0,202,188, 0, 0,202,208,
+ 0, 0,202,244, 0, 0,203, 24, 0, 0,203, 56, 0, 0,203,124, 0, 0,203,172, 0, 0,203,208, 0, 0,203,244, 0, 0,204, 32,
+ 0, 0,204, 60, 0, 0,204,108, 0, 0,204,156, 0, 0,204,200, 0, 0,205, 8, 0, 0,205,116, 0, 0,205,160, 0, 0,206, 28,
+ 0, 0,206, 44, 0, 0,206, 72, 0, 0,206,108, 0, 0,206,180, 0, 0,206,244, 0, 0,207, 48, 0, 0,207,132, 0, 0,207,184,
+ 0, 0,208,152, 0, 0,208,196, 0, 0,208,212, 0, 0,208,228, 0, 0,208,244, 0, 0,209, 16, 0, 0,209, 40, 0, 0,209, 68,
+ 0, 0,209, 96, 0, 0,209,144, 0, 0,209,180, 0, 0,209,224, 0, 0,210, 40, 0, 0,210, 92, 0, 0,210,188, 0, 0,210,212,
+ 0, 0,210,228, 0, 0,210,248, 0, 0,211, 56, 0, 0,211, 88, 0, 0,211,116, 0, 0,211,156, 0, 0,211,172, 0, 0,211,188,
+ 0, 0,211,212, 0, 0,211,236, 0, 0,211,252, 0, 0,212, 20, 0, 0,212, 44, 0, 0,212, 68, 0, 0,212, 92, 0, 0,212,116,
+ 0, 0,212,140, 0, 0,212,164, 0, 0,212,180, 0, 0,212,196, 0, 0,212,212, 0, 0,213, 52, 0, 0,213, 68, 0, 0,213, 84,
+ 0, 0,213,100, 0, 0,214, 4, 0, 0,214, 20, 0, 0,214, 36, 0, 0,214,124, 0, 0,214,140, 0, 0,214,156, 0, 0,214,252,
+ 0, 0,215, 12, 0, 0,215, 28, 0, 0,215, 44, 0, 0,215,160, 0, 0,215,176, 0, 0,215,192, 0, 0,216,160, 0, 0,216,176,
+ 0, 0,217, 84, 0, 0,217,252, 0, 0,218, 20, 0, 0,218, 44, 0, 0,218, 68, 0, 0,218, 92, 0, 0,218,116, 0, 0,218,140,
+ 0, 0,218,164, 0, 0,219, 52, 0, 0,219,168, 0, 0,219,228, 0, 0,220,136, 0, 0,220,152, 0, 0,221, 0, 0, 0,221,112,
+ 0, 0,222, 24, 0, 0,222,112, 0, 0,222,128, 0, 0,222,192, 0, 0,222,208, 0, 0,223, 32, 0, 0,223,156, 0, 0,223,172,
+ 0, 0,223,248, 0, 0,224,136, 0, 0,224,252, 0, 0,225,144, 0, 0,225,240, 0, 0,226, 84, 0, 0,227, 40, 0, 0,227,132,
+ 0, 0,227,224, 0, 0,228,100, 0, 0,228,124, 0, 0,228,148, 0, 0,228,172, 0, 0,228,196, 0, 0,228,220, 0, 0,229,104,
+ 0, 0,229,236, 0, 0,230, 84, 0, 0,230,108, 0, 0,230,132, 0, 0,231, 12, 0, 0,231,128, 0, 0,232, 32, 0, 0,232,136,
+ 0, 0,232,236, 0, 0,233, 92, 0, 0,233,208, 0, 0,233,224, 0, 0,234, 76, 0, 0,234,168, 0, 0,234,212, 0, 0,235, 72,
+ 0, 0,235,164, 0, 0,236, 64, 0, 0,236,176, 0, 0,236,192, 0, 0,236,208, 0, 0,237, 60, 0, 0,237,172, 0, 0,238, 28,
+ 0, 0,238, 44, 0, 0,238, 60, 0, 0,238, 76, 0, 0,238,136, 0, 0,238,192, 0, 0,239, 48, 0, 0,239,140, 0, 0,239,164,
+ 0, 0,239,188, 0, 0,239,212, 0, 0,239,236, 0, 0,240,124, 0, 0,240,148, 0, 0,241, 60, 0, 0,241, 76, 0, 0,241, 92,
+ 0, 0,241,128, 0, 0,241,144, 0, 0,241,244, 0, 0,242, 80, 0, 0,242,192, 0, 0,242,216, 0, 0,242,240, 0, 0,243, 8,
+ 0, 0,243, 56, 0, 0,243, 72, 0, 0,243,208, 0, 0,243,224, 0, 0,244, 24, 0, 0,244,168, 0, 0,244,184, 0, 0,245,132,
+ 0, 0,245,148, 0, 0,246, 0, 0, 0,246, 24, 0, 0,246, 40, 0, 0,246,140, 0, 0,246,156, 0, 0,246,172, 0, 0,246,188,
+ 0, 0,247, 0, 0, 0,247, 16, 0, 0,247, 32, 0, 0,247, 48, 0, 0,247,192, 0, 0,248,156, 0, 0,248,172, 0, 0,249, 0,
+ 0, 0,249,100, 0, 0,249,184, 0, 0,250, 32, 0, 0,250,148, 0, 0,251, 20, 0, 0,251,136, 0, 0,252, 48, 0, 0,252,224,
+ 0, 0,253,124, 0, 0,253,140, 0, 0,254, 88, 0, 0,254,240, 0, 0,255, 40, 0, 0,255,176, 0, 0,255,192, 0, 1, 0,140,
+ 0, 1, 0,156, 0, 1, 1, 8, 0, 1, 1, 32, 0, 1, 1, 48, 0, 1, 1,148, 0, 1, 2, 28, 0, 1, 2,112, 0, 1, 2,128,
+ 0, 1, 2,196, 0, 1, 2,212, 0, 1, 2,228, 0, 1, 3, 40, 0, 1, 3, 56, 0, 1, 4, 16, 0, 1, 4, 32, 0, 1, 4,116,
+ 0, 1, 4,216, 0, 1, 5, 44, 0, 1, 5,144, 0, 1, 6, 4, 0, 1, 6,128, 0, 1, 6,240, 0, 1, 7,164, 0, 1, 8, 76,
+ 0, 1, 8,224, 0, 1, 8,248, 0, 1, 9, 16, 0, 1, 9,116, 0, 1, 9,140, 0, 1, 10, 68, 0, 1, 10, 84, 0, 1, 10,100,
+ 0, 1, 10,132, 0, 1, 10,148, 0, 1, 10,248, 0, 1, 11, 72, 0, 1, 11,160, 0, 1, 11,184, 0, 1, 11,208, 0, 1, 11,232,
+ 0, 1, 12, 24, 0, 1, 12, 92, 0, 1, 12,160, 0, 1, 12,212, 0, 1, 13, 8, 0, 1, 13,100, 0, 1, 13,196, 0, 1, 14, 32,
+ 0, 1, 14,124, 0, 1, 14,148, 0, 1, 14,172, 0, 1, 14,236, 0, 1, 15, 44, 0, 1, 15,104, 0, 1, 15,164, 0, 1, 15,188,
+ 0, 1, 15,212, 0, 1, 16, 4, 0, 1, 16, 52, 0, 1, 16, 68, 0, 1, 16,116, 0, 1, 16,184, 0, 1, 16,244, 0, 1, 17, 60,
+ 0, 1, 17,132, 0, 1, 17,228, 0, 1, 17,244, 0, 1, 18, 4, 0, 1, 18, 28, 0, 1, 18, 52, 0, 1, 18,148, 0, 1, 18,248,
+ 0, 1, 19, 64, 0, 1, 19,136, 0, 1, 19,240, 0, 1, 20, 68, 0, 1, 20, 96, 0, 1, 20,144, 0, 1, 20,168, 0, 1, 20,224,
+ 0, 1, 20,248, 0, 1, 21, 8, 0, 1, 21, 24, 0, 1, 21, 48, 0, 1, 21, 72, 0, 1, 21, 88, 0, 1, 21,104, 0, 1, 21,128,
+ 0, 1, 21,152, 0, 1, 21,176, 0, 1, 21,200, 0, 1, 21,224, 0, 1, 21,248, 0, 1, 22, 8, 0, 1, 22, 24, 0, 1, 22, 48,
+ 0, 1, 22, 72, 0, 1, 22, 96, 0, 1, 22,120, 0, 1, 22,176, 0, 1, 22,220, 0, 1, 22,236, 0, 1, 22,252, 0, 1, 23, 20,
+ 0, 1, 23, 44, 0, 1, 23, 68, 0, 1, 23, 92, 0, 1, 23,116, 0, 1, 23,140, 0, 1, 23,164, 0, 1, 23,188, 0, 1, 23,212,
+ 0, 1, 23,236, 0, 1, 24, 4, 0, 1, 24, 28, 0, 1, 24, 72, 0, 1, 24,116, 0, 1, 24,140, 0, 1, 24,164, 0, 1, 24,196,
+ 0, 1, 25, 32, 0, 1, 25, 80, 0, 1, 25,192, 0, 1, 26, 48, 0, 1, 26, 72, 0, 1, 26, 96, 0, 1, 26,120, 0, 1, 26,144,
+ 0, 1, 26,168, 0, 1, 26,196, 0, 1, 26,220, 0, 1, 26,244, 0, 1, 27, 12, 0, 1, 27, 36, 0, 1, 27, 60, 0, 1, 27,168,
+ 0, 1, 27,192, 0, 1, 28, 20, 0, 1, 28, 44, 0, 1, 28,112, 0, 1, 28,136, 0, 1, 29, 72, 0, 1, 29, 96, 0, 1, 30, 20,
+ 0, 1, 30, 44, 0, 1, 30,144, 0, 1, 30,168, 0, 1, 31, 40, 0, 1, 31, 64, 0, 1, 31, 88, 0, 1, 31,112, 0, 1, 31,136,
+ 0, 1, 32, 68, 0, 1, 32,160, 0, 1, 33, 44, 0, 1, 33, 68, 0, 1, 33,172, 0, 1, 34, 44, 0, 1, 34,208, 0, 1, 34,232,
+ 0, 1, 35, 20, 0, 1, 35,180, 0, 1, 35,224, 0, 1, 35,252, 0, 1, 36,140, 0, 1, 36,168, 0, 1, 37, 44, 0, 1, 37,112,
+ 0, 1, 37,180, 0, 1, 37,196, 0, 1, 37,216, 0, 1, 38, 0, 0, 1, 38, 28, 0, 1, 38, 76, 0, 1, 38,164, 0, 1, 39, 32,
+ 0, 1, 39,164, 0, 1, 40, 16, 0, 1, 40, 88, 0, 1, 40,168, 0, 1, 40,248, 0, 1, 41,120, 0, 1, 41,172, 0, 1, 41,236,
+ 0, 1, 42, 16, 0, 1, 42, 68, 0, 1, 42,152, 0, 1, 43, 72, 0, 1, 43,160, 0, 1, 43,184, 0, 1, 43,208, 0, 1, 43,232,
+ 0, 1, 44, 8, 0, 1, 44, 32, 0, 1, 44, 56, 0, 1, 44, 80, 0, 1, 44,104, 0, 1, 44,128, 0, 1, 44,152, 0, 1, 44,176,
+ 0, 1, 44,200, 0, 1, 44,224, 0, 1, 44,248, 0, 1, 45, 16, 0, 1, 45, 40, 0, 1, 45, 64, 0, 1, 45, 88, 0, 1, 46, 8,
+ 0, 1, 46, 32, 0, 1, 46,168, 0, 1, 46,192, 0, 1, 46,216, 0, 1, 47, 56, 0, 1, 48, 8, 0, 1, 48, 32, 0, 1, 48, 48,
+ 0, 1, 48, 72, 0, 1, 48, 88, 0, 1, 48,104, 0, 1, 48,120, 0, 1, 48,136, 0, 1, 48,152, 0, 1, 49, 24, 0, 1, 49,156,
+ 0, 1, 50, 4, 0, 1, 50, 20, 0, 1, 50, 36, 0, 1, 50, 52, 0, 1, 50,244, 0, 1, 51,132, 0, 1, 52, 60, 0, 1, 52,172,
+ 0, 1, 53, 44, 0, 1, 53,224, 0, 1, 54,116, 0, 1, 55, 0, 0, 1, 55,128, 0, 1, 55,240, 0, 1, 56,176, 0, 1, 57, 24,
+ 0, 1, 57,124, 0, 1, 57,220, 0, 1, 58,180, 0, 1, 59, 64, 0, 1, 59,208, 0, 1, 60, 96, 0, 1, 60,172, 0, 1, 61, 64,
+ 0, 1, 61,216, 0, 1, 62,116, 0, 1, 62,228, 0, 1, 63,164, 0, 1, 64, 80, 0, 1, 64,236, 0, 1, 65,164, 0, 1, 66, 36,
+ 0, 1, 66, 64, 0, 1, 66,160, 0, 1, 66,236, 0, 1, 67, 4, 0, 1, 67, 72, 0, 1, 67,148, 0, 1, 67,228, 0, 1, 68, 60,
+ 0, 1, 68,132, 0, 1, 68,212, 0, 1, 69, 56, 0, 1, 69,140, 0, 1, 69,168, 0, 1, 70, 8, 0, 1, 70,164, 0, 1, 70,208,
+ 0, 1, 70,228, 0, 1, 71, 20, 0, 1, 71,104, 0, 1, 71,204, 0, 1, 72, 72, 0, 1, 72,212, 0, 1, 73, 48, 0, 1, 73,172,
+ 0, 1, 74, 40, 0, 1, 74,160, 0, 1, 74,236, 0, 1, 75, 84, 0, 1, 75,184, 0, 1, 76, 28, 0, 1, 76,128, 0, 1, 76,236,
+ 0, 1, 77, 92, 0, 1, 77,184, 0, 1, 78, 56, 0, 1, 78,136, 0, 1, 78,228, 0, 1, 79,104, 0, 1, 80, 8, 0, 1, 80,112,
+ 0, 1, 80,248, 0, 1, 81, 84, 0, 1, 81,212, 0, 1, 82, 68, 0, 1, 82,188, 0, 1, 83, 12, 0, 1, 83,140, 0, 1, 84, 32,
+ 0, 1, 84,112, 0, 1, 84,220, 0, 1, 85, 92, 0, 1, 86, 20, 0, 1, 86,124, 0, 1, 86,232, 0, 1, 87, 96, 0, 1, 87,228,
+ 0, 1, 88,108, 0, 1, 88,224, 0, 1, 89, 68, 0, 1, 89,180, 0, 1, 90, 24, 0, 1, 90, 76, 0, 1, 90,156, 0, 1, 91, 92,
+ 0, 1, 91,232, 0, 1, 92, 32, 0, 1, 92,200, 0, 1, 92,252, 0, 1, 93, 48, 0, 1, 93,116, 0, 1, 93,208, 0, 1, 94, 56,
+ 0, 1, 94,108, 0, 1, 94,180, 0, 1, 95, 28, 0, 1, 95, 92, 0, 1, 95,140, 0, 1, 95,188, 0, 1, 96, 24, 0, 1, 96, 72,
+ 0, 1, 96,120, 0, 1, 96,184, 0, 1, 96,240, 0, 1, 97, 16, 0, 1, 97, 72, 0, 1, 97,120, 0, 1, 97,168, 0, 1, 97,240,
+ 0, 1, 98, 52, 0, 1, 98,148, 0, 1, 98,188, 0, 1, 99, 32, 0, 1, 99, 88, 0, 1, 99,212, 0, 1,100, 80, 0, 1,100,164,
+ 0, 1,101, 96, 0, 1,101,180, 0, 1,102, 12, 0, 1,102,104, 0, 1,102,196, 0, 1,103, 56, 0, 1,103,172, 0, 1,104, 32,
+ 0, 1,104, 88, 0, 1,104,144, 0, 1,104,248, 0, 1,105, 88, 0, 1,105,164, 0, 1,105,244, 0, 1,106, 36, 0, 1,106, 84,
+ 0, 1,106,168, 0, 1,106,232, 0, 1,107, 44, 0, 1,107,112, 0, 1,107,216, 0, 1,108, 0, 0, 1,108, 20, 0, 1,108, 40,
+ 0, 1,108, 60, 0, 1,108, 80, 0, 1,108,204, 0, 1,108,220, 0, 1,109, 36, 0, 1,109,120, 0, 1,109,204, 0, 1,110, 28,
+ 0, 1,110,160, 0, 1,111, 32, 0, 1,111,148, 0, 1,111,212, 0, 1,112, 28, 0, 1,112,136, 0, 1,112,204, 0, 1,113, 16,
+ 0, 1,113, 68, 0, 1,113,116, 0, 1,113,176, 0, 1,114, 12, 0, 1,114, 64, 0, 1,114,144, 0, 1,114,176, 0, 1,115, 56,
+ 0, 1,115,160, 0, 1,115,244, 0, 1,116, 96, 0, 1,116,144, 0, 1,117, 0, 0, 1,117,148, 0, 1,118, 64, 0, 1,118,136,
+ 0, 1,118,236, 0, 1,119, 84, 0, 1,119,176, 0, 1,120, 4, 0, 1,120, 44, 0, 1,120, 92, 0, 1,120,168, 0, 1,121, 4,
+ 0, 1,121, 96, 0, 1,121,184, 0, 1,121,208, 0, 1,121,232, 0, 1,122, 0, 0, 1,122, 24, 0, 1,122, 48, 0, 1,122, 72,
+ 0, 1,122, 96, 0, 1,122,120, 0, 1,122,152, 0, 1,122,180, 0, 1,122,204, 0, 1,122,228, 0, 1,122,252, 0, 1,123, 20,
+ 0, 1,123, 44, 0, 1,123, 68, 0, 1,123, 92, 0, 1,123,116, 0, 1,123,140, 0, 1,123,164, 0, 1,123,188, 0, 1,123,212,
+ 0, 1,123,236, 0, 1,124, 4, 0, 1,124, 32, 0, 1,124, 60, 0, 1,124, 84, 0, 1,124,108, 0, 1,124,132, 0, 1,124,156,
+ 0, 1,124,180, 0, 1,124,204, 0, 1,124,228, 0, 1,124,252, 0, 1,125, 20, 0, 1,125, 44, 0, 1,125, 68, 0, 1,125, 92,
+ 0, 1,125,116, 0, 1,125,140, 0, 1,125,164, 0, 1,125,188, 0, 1,125,212, 0, 1,125,236, 0, 1,126, 4, 0, 1,126, 28,
+ 0, 1,126, 52, 0, 1,126, 76, 0, 1,126,100, 0, 1,126,124, 0, 1,126,148, 0, 1,126,172, 0, 1,126,196, 0, 1,126,220,
+ 0, 1,126,244, 0, 1,127, 12, 0, 1,127, 36, 0, 1,127, 60, 0, 1,127, 84, 0, 1,127,108, 0, 1,127,132, 0, 1,127,156,
+ 0, 1,127,180, 0, 1,127,204, 0, 1,127,228, 0, 1,127,252, 0, 1,128, 20, 0, 1,128, 44, 0, 1,128, 68, 0, 1,128, 92,
+ 0, 1,128,116, 0, 1,128,140, 0, 1,128,164, 0, 1,128,188, 0, 1,128,212, 0, 1,128,236, 0, 1,129, 4, 0, 1,129, 28,
+ 0, 1,129, 52, 0, 1,129, 76, 0, 1,129,100, 0, 1,129,124, 0, 1,129,152, 0, 1,129,180, 0, 1,129,204, 0, 1,129,228,
+ 0, 1,129,252, 0, 1,130, 20, 0, 1,130, 44, 0, 1,130, 68, 0, 1,130, 92, 0, 1,130,116, 0, 1,130,140, 0, 1,130,164,
+ 0, 1,130,188, 0, 1,130,212, 0, 1,130,236, 0, 1,131, 4, 0, 1,131, 28, 0, 1,131, 52, 0, 1,131, 76, 0, 1,131,100,
+ 0, 1,131,124, 0, 1,131,148, 0, 1,131,172, 0, 1,131,196, 0, 1,131,220, 0, 1,131,244, 0, 1,132, 12, 0, 1,132, 36,
+ 0, 1,132, 60, 0, 1,132, 84, 0, 1,132,108, 0, 1,132,132, 0, 1,132,156, 0, 1,132,180, 0, 1,132,204, 0, 1,132,228,
+ 0, 1,132,252, 0, 1,133, 20, 0, 1,133, 44, 0, 1,133, 68, 0, 1,133,100, 0, 1,133,124, 0, 1,133,148, 0, 1,133,172,
+ 0, 1,133,196, 0, 1,133,220, 0, 1,133,244, 0, 1,134, 12, 0, 1,134, 36, 0, 1,134, 60, 0, 1,134, 84, 0, 1,134,108,
+ 0, 1,134,132, 0, 1,134,156, 0, 1,134,180, 0, 1,134,204, 0, 1,134,228, 0, 1,134,252, 0, 1,135, 20, 0, 1,135, 44,
+ 0, 1,135, 68, 0, 1,135, 92, 0, 1,135,116, 0, 1,135,140, 0, 1,135,164, 0, 1,135,188, 0, 1,135,212, 0, 1,135,236,
+ 0, 1,136, 4, 0, 1,136, 28, 0, 1,136, 52, 0, 1,136, 76, 0, 1,136,100, 0, 1,136,124, 0, 1,136,148, 0, 1,136,172,
+ 0, 1,136,196, 0, 1,136,220, 0, 1,136,244, 0, 1,137, 12, 0, 1,137, 36, 0, 1,137, 60, 0, 1,137, 84, 0, 1,137,108,
+ 0, 1,137,132, 0, 1,137,156, 0, 1,137,180, 0, 1,137,204, 0, 1,137,228, 0, 1,137,252, 0, 1,138, 20, 0, 1,138, 44,
+ 0, 1,138, 68, 0, 1,138, 92, 0, 1,138,116, 0, 1,138,140, 0, 1,138,164, 0, 1,138,188, 0, 1,138,212, 0, 1,138,236,
+ 0, 1,139, 4, 0, 1,139, 28, 0, 1,139, 52, 0, 1,139, 76, 0, 1,139,100, 0, 1,139,124, 0, 1,139,148, 0, 1,139,172,
+ 0, 1,139,196, 0, 1,139,220, 0, 1,139,244, 0, 1,140, 12, 0, 1,140, 36, 0, 1,140, 60, 0, 1,140, 84, 0, 1,140,108,
+ 0, 1,140,132, 0, 1,140,156, 0, 1,140,180, 0, 1,140,204, 0, 1,140,228, 0, 1,140,252, 0, 1,141, 20, 0, 1,141, 44,
+ 0, 1,141, 68, 0, 1,141, 92, 0, 1,141,116, 0, 1,141,140, 0, 1,141,164, 0, 1,141,188, 0, 1,141,212, 0, 1,141,236,
+ 0, 1,142, 4, 0, 1,142, 28, 0, 1,142, 52, 0, 1,142, 76, 0, 1,142,100, 0, 1,142,124, 0, 1,142,148, 0, 1,142,172,
+ 0, 1,142,196, 0, 1,142,220, 0, 1,142,244, 0, 1,143, 12, 0, 1,143, 36, 0, 1,143, 60, 0, 1,143, 84, 0, 1,143,108,
+ 0, 1,143,132, 0, 1,143,156, 0, 1,143,180, 0, 1,143,204, 0, 1,143,228, 0, 1,143,252, 0, 1,144, 20, 0, 1,144, 44,
+ 0, 1,144, 68, 0, 1,144, 92, 0, 1,144,116, 0, 1,144,132, 0, 1,144,156, 0, 1,144,172, 0, 1,144,196, 0, 1,144,212,
+ 0, 1,144,236, 0, 1,144,252, 0, 1,145, 20, 0, 1,145, 36, 0, 1,145, 60, 0, 1,145, 76, 0, 1,145,100, 0, 1,145,116,
+ 0, 1,145,140, 0, 1,145,164, 0, 1,145,188, 0, 1,145,212, 0, 1,145,236, 0, 1,146, 4, 0, 1,146, 28, 0, 1,146, 52,
+ 0, 1,146, 76, 0, 1,146,100, 0, 1,146,124, 0, 1,146,148, 0, 1,146,172, 0, 1,146,196, 0, 1,146,220, 0, 1,146,244,
+ 0, 1,147, 12, 0, 1,147, 36, 0, 1,147, 60, 0, 1,147, 84, 0, 1,147,108, 0, 1,147,132, 0, 1,147,156, 0, 1,147,180,
+ 0, 1,147,204, 0, 1,147,228, 0, 1,147,252, 0, 1,148, 20, 0, 1,148, 44, 0, 1,148, 68, 0, 1,148, 92, 0, 1,148,116,
+ 0, 1,148,140, 0, 1,148,164, 0, 1,148,188, 0, 1,148,212, 0, 1,148,236, 0, 1,149, 4, 0, 1,149, 28, 0, 1,149, 52,
+ 0, 1,149, 76, 0, 1,149,100, 0, 1,149,124, 0, 1,149,148, 0, 1,149,172, 0, 1,149,196, 0, 1,149,220, 0, 1,149,244,
+ 0, 1,150, 12, 0, 1,150, 36, 0, 1,150, 60, 0, 1,150, 84, 0, 1,150,108, 0, 1,150,132, 0, 1,150,156, 0, 1,150,180,
+ 0, 1,150,204, 0, 1,150,228, 0, 1,150,244, 0, 1,151, 12, 0, 1,151, 28, 0, 1,151, 44, 0, 1,151, 80, 0, 1,151, 96,
+ 0, 1,151,120, 0, 1,151,144, 0, 1,151,168, 0, 1,151,192, 0, 1,151,216, 0, 1,151,240, 0, 1,152, 8, 0, 1,152, 24,
+ 0, 1,152, 48, 0, 1,152, 64, 0, 1,152, 88, 0, 1,152,116, 0, 1,152,140, 0, 1,152,164, 0, 1,152,188, 0, 1,152,212,
+ 0, 1,152,236, 0, 1,152,252, 0, 1,153, 20, 0, 1,153, 44, 0, 1,153, 68, 0, 1,153, 92, 0, 1,153,116, 0, 1,153,132,
+ 0, 1,153,160, 0, 1,153,184, 0, 1,153,208, 0, 1,153,232, 0, 1,154, 0, 0, 1,154, 24, 0, 1,154, 40, 0, 1,154, 64,
+ 0, 1,154, 88, 0, 1,154,112, 0, 1,154,136, 0, 1,154,160, 0, 1,154,184, 0, 1,154,208, 0, 1,154,224, 0, 1,154,248,
+ 0, 1,155, 16, 0, 1,155, 32, 0, 1,155, 48, 0, 1,155, 72, 0, 1,155, 96, 0, 1,155,120, 0, 1,155,144, 0, 1,155,168,
+ 0, 1,155,192, 0, 1,155,208, 0, 1,155,232, 0, 1,155,248, 0, 1,156, 16, 0, 1,156, 32, 0, 1,156, 68, 0, 1,156, 68,
+ 0, 1,156, 68, 0, 1,156, 68, 0, 1,156, 68, 0, 1,156, 68, 0, 1,156, 68, 0, 1,156, 68, 0, 1,156, 68, 0, 1,156, 68,
+ 0, 1,156, 68, 0, 1,156, 68, 0, 1,156,112, 0, 1,156,128, 0, 1,156,172, 0, 1,156,216, 0, 1,157, 0, 0, 1,157, 40,
+ 0, 1,157, 64, 0, 1,157,124, 0, 1,157,184, 0, 1,157,244, 0, 1,158, 24, 0, 1,158,116, 0, 1,158,208, 0, 1,159, 48,
+ 0, 1,159,100, 0, 1,159,188, 0, 1,160, 64, 0, 1,160,128, 0, 1,160,156, 0, 1,160,244, 0, 1,160,244, 0, 1,162, 68,
+ 0, 1,163,112, 0, 1,163,180, 0, 1,163,252, 0, 1,164, 24, 0, 1,164,148, 0, 1,164,168, 0, 1,164,216, 0, 1,165, 8,
+ 0, 1,165, 36, 0, 1,165, 64, 0, 1,165, 92, 0, 1,165, 92, 0, 1,165,228, 0, 1,166, 28, 0, 1,166,140, 0, 1,166,244,
+ 0, 1,167,116, 0, 1,167,156, 0, 1,168, 84, 0, 1,168,224, 0, 1,169, 16, 0, 1,169, 44, 0, 1,169, 84, 0, 1,169,136,
+ 0, 1,169,188, 0, 1,170, 32, 0, 1,170, 52, 0, 1,170, 72, 0, 1,170, 92, 0, 1,170,112, 0, 1,170,132, 0, 1,170,152,
+ 0, 1,170,172, 0, 1,170,192, 0, 1,170,212, 0, 1,170,232, 0, 1,170,252, 0, 1,171, 16, 0, 1,171, 36, 0, 1,171, 56,
+ 0, 1,171, 76, 0, 1,171, 96, 0, 1,171,116, 0, 1,171,136, 0, 1,171,156, 0, 1,171,176, 0, 1,172, 52, 0, 1,173, 68,
+ 0, 1,173,196, 0, 1,174,100, 0, 1,174,248, 0, 1,175,108, 0, 1,175,200, 0, 1,176, 68, 0, 1,176,248, 0, 1,177, 8,
+ 0, 1,177, 24, 0, 1,177, 40, 0, 1,177, 72, 0, 1,177,104, 0, 1,177,136, 0, 1,177,168, 0, 1,177,200, 0, 1,177,232,
+ 0, 1,178, 8, 0, 1,178, 40, 0, 1,178, 72, 0, 1,178,104, 0, 1,178,136, 0, 1,178,168, 0, 1,178,192, 0, 1,178,240,
+ 0, 1,179, 36, 0, 1,179, 88, 0, 1,179,136, 0, 1,179,208, 0, 1,180, 24, 0, 1,180, 72, 0, 1,180,120, 0, 1,180,164,
+ 0, 1,180,208, 0, 1,181, 24, 0, 1,181, 96, 0, 1,182, 8, 0, 1,182,176, 0, 1,182,248, 0, 1,183, 64, 0, 1,183,136,
+ 0, 1,183,208, 0, 1,184, 16, 0, 1,184, 80, 0, 1,184,140, 0, 1,184,200, 0, 1,185, 4, 0, 1,185, 64, 0, 1,185,140,
+ 0, 1,186, 20, 0, 1,186,160, 0, 1,187,100, 0, 1,188, 44, 0, 1,189, 68, 0, 1,189,164, 0, 1,189,232, 0, 1,190, 32,
+ 0, 1,190, 88, 0, 1,190,144, 0, 1,190,200, 0, 1,191, 0, 0, 1,191, 56, 0, 1,191,196, 0, 1,192, 84, 0, 1,192,144,
+ 0, 1,192,248, 0, 1,193,160, 0, 1,194, 72, 0, 1,194,108, 0, 1,194,148, 0, 1,194,188, 0, 1,194,228, 0, 1,195, 12,
+ 0, 1,195, 52, 0, 1,195, 88, 0, 1,195,124, 0, 1,195,208, 0, 1,196, 36, 0, 1,196,120, 0, 1,196,192, 0, 1,197, 8,
+ 0, 1,197, 80, 0, 1,197,152, 0, 1,197,212, 0, 1,198, 20, 0, 1,198,120, 0, 1,198,244, 0, 1,199, 88, 0, 1,199,152,
+ 0, 1,199,216, 0, 1,200, 24, 0, 1,200, 88, 0, 1,200,180, 0, 1,201, 16, 0, 1,201, 80, 0, 1,201,144, 0, 1,201,208,
+ 0, 1,202, 16, 0, 1,202, 80, 0, 1,202,144, 0, 1,202,228, 0, 1,203, 60, 0, 1,203,140, 0, 1,203,220, 0, 1,204, 36,
+ 0, 1,204,112, 0, 1,204,184, 0, 1,205, 4, 0, 1,205, 64, 0, 1,205,124, 0, 1,205,188, 0, 1,205,248, 0, 1,206, 52,
+ 0, 1,206,112, 0, 1,206,200, 0, 1,207, 24, 0, 1,207,120, 0, 1,207,216, 0, 1,208, 48, 0, 1,208,160, 0, 1,208,244,
+ 0, 1,209, 56, 0, 1,209,124, 0, 1,209,204, 0, 1,210,108, 0, 1,210,188, 0, 1,211, 24, 0, 1,211, 92, 0, 1,211,160,
+ 0, 1,211,248, 0, 1,212, 72, 0, 1,212,152, 0, 1,213, 0, 0, 1,213, 52, 0, 1,213,104, 0, 1,213,184, 0, 1,214,116,
+ 0, 1,215, 64, 0, 1,215,188, 0, 1,215,232, 0, 1,216, 68, 0, 1,216,212, 0, 1,217,104, 0, 1,217,196, 0, 1,218, 84,
+ 0, 1,218,164, 0, 1,218,236, 0, 1,219, 92, 0, 1,219,136, 0, 1,219,200, 0, 1,219,252, 0, 1,220, 16, 0, 1,220, 36,
+ 0, 1,220, 52, 0, 1,220,152, 0, 1,221, 16, 0, 1,221,212, 0, 1,221,248, 0, 1,222, 32, 0, 1,222, 72, 0, 1,222,112,
+ 0, 1,222,228, 0, 1,223, 92, 0, 1,223,204, 0, 1,224,100, 0, 1,225, 60, 0, 1,225, 84, 0, 1,225,140, 0, 1,225,188,
+ 0, 1,225,220, 0, 1,226, 56, 0, 1,226,148, 0, 1,227, 0, 0, 1,227, 96, 0, 1,227,200, 0, 1,228, 76, 0, 1,228,196,
+ 0, 1,229, 92, 0, 1,229,244, 0, 1,230,232, 0, 1,231,148, 0, 1,232, 76, 0, 1,233, 64, 0, 1,233,184, 0, 1,234, 4,
+ 0, 1,234,192, 0, 1,235, 52, 0, 1,235, 76, 0, 1,235,116, 0, 1,235,148, 0, 1,235,180, 0, 1,235,244, 0, 1,236, 60,
+ 0, 1,236,152, 0, 1,237, 4, 0, 1,237, 76, 0, 1,237,140, 0, 1,237,204, 0, 1,238, 24, 0, 1,238, 96, 0, 1,239, 68,
+ 0, 1,239,200, 0, 1,240, 84, 0, 1,240,216, 0, 1,241, 12, 0, 1,241,104, 0, 1,241,168, 0, 1,242, 8, 0, 1,242,100,
+ 0, 1,242,168, 0, 1,242,232, 0, 1,243, 72, 0, 1,243,172, 0, 1,244, 20, 0, 1,244,104, 0, 1,244,188, 0, 1,245, 36,
+ 0, 1,245,136, 0, 1,246, 0, 0, 1,246,136, 0, 1,247, 40, 0, 1,247,212, 0, 1,248, 24, 0, 1,248, 92, 0, 1,248,224,
+ 0, 1,249,104, 0, 1,249,164, 0, 1,249,220, 0, 1,250, 68, 0, 1,250,172, 0, 1,251, 64, 0, 1,251,208, 0, 1,252, 56,
+ 0, 1,252,160, 0, 1,252,232, 0, 1,253, 44, 0, 1,253,152, 0, 1,254, 4, 0, 1,254, 88, 0, 1,254,168, 0, 1,255, 36,
+ 0, 1,255,176, 0, 2, 0, 24, 0, 2, 0,132, 0, 2, 0,220, 0, 2, 1, 52, 0, 2, 1,176, 0, 2, 2, 48, 0, 2, 2,248,
+ 0, 2, 3,168, 0, 2, 4,116, 0, 2, 5, 40, 0, 2, 5,216, 0, 2, 6,192, 0, 2, 7,176, 0, 2, 8,112, 0, 2, 9, 36,
+ 0, 2, 9,116, 0, 2, 9,172, 0, 2, 10, 12, 0, 2, 10, 68, 0, 2, 10,116, 0, 2, 10,164, 0, 2, 11, 12, 0, 2, 11, 92,
+ 0, 2, 11,176, 0, 2, 11,232, 0, 2, 12, 28, 0, 2, 12,132, 0, 2, 12,236, 0, 2, 13,132, 0, 2, 14, 24, 0, 2, 14,108,
+ 0, 2, 14,188, 0, 2, 15, 8, 0, 2, 15, 84, 0, 2, 15,208, 0, 2, 16, 84, 0, 2, 16,248, 0, 2, 17,152, 0, 2, 17,172,
+ 0, 2, 17,188, 0, 2, 17,232, 0, 2, 18, 32, 0, 2, 18, 72, 0, 2, 18,112, 0, 2, 18,164, 0, 2, 18,228, 0, 2, 19, 4,
+ 0, 2, 19, 36, 0, 2, 19, 68, 0, 2, 19,100, 0, 2, 19,140, 0, 2, 19,180, 0, 2, 19,220, 0, 2, 20, 4, 0, 2, 20, 36,
+ 0, 2, 20,120, 0, 2, 20,136, 0, 2, 20,204, 0, 2, 21, 16, 0, 2, 21,104, 0, 2, 22, 80, 0, 2, 22,116, 0, 2, 22,152,
+ 0, 2, 22,184, 0, 2, 22,216, 0, 2, 22,248, 0, 2, 23, 80, 0, 2, 23,168, 0, 2, 23,224, 0, 2, 24, 68, 0, 2, 24,156,
+ 0, 2, 29, 72, 0, 2, 29,172, 0, 2, 29,212, 0, 2, 30, 0, 0, 2, 30, 68, 0, 2, 30,148, 0, 2, 30,240, 0, 2, 31, 8,
+ 0, 2, 31,148, 0, 2, 32, 24, 0, 2, 32, 48, 0, 2, 32,104, 0, 2, 32,156, 0, 2, 32,232, 0, 2, 33, 52, 0, 2, 33,128,
+ 0, 2, 33,208, 0, 2, 34, 96, 0, 2, 34,176, 0, 2, 34,248, 0, 2, 35, 72, 0, 2, 35,152, 0, 2, 35,228, 0, 2, 36, 48,
+ 0, 2, 36,128, 0, 2, 36,208, 0, 2, 36,232, 0, 2, 37, 0, 0, 2, 37, 24, 0, 2, 37, 48, 0, 2, 37, 72, 0, 2, 37, 96,
+ 0, 2, 37,120, 0, 2, 37,144, 0, 2, 37,168, 0, 2, 37,192, 0, 2, 37,220, 0, 2, 37,244, 0, 2, 38, 12, 0, 2, 38,168,
+ 0, 2, 39,116, 0, 2, 39,216, 0, 2, 40, 24, 0, 2, 40,128, 0, 2, 40,152, 0, 2, 40,168, 0, 2, 40,184, 0, 2, 40,200,
+ 0, 2, 40,224, 0, 2, 40,248, 0, 2, 41, 16, 0, 2, 41, 40, 0, 2, 41, 56, 0, 2, 41,136, 0, 2, 42, 32, 0, 2, 42,204,
+ 0, 2, 43,204, 0, 2, 44,156, 0, 2, 45,204, 0, 2, 46,112, 0, 2, 47, 28, 0, 2, 47,156, 0, 2, 47,200, 0, 2, 48, 0,
+ 0, 2, 48, 28, 0, 2, 48, 84, 0, 2, 48,140, 0, 2, 48,168, 0, 2, 48,224, 0, 2, 49, 0, 0, 2, 49, 28, 0, 2, 49, 64,
+ 0, 2, 49,100, 0, 2, 49,128, 0, 2, 49,160, 0, 2, 49,212, 0, 2, 50, 44, 0, 2, 50,100, 0, 2, 50,128, 0, 2, 50,184,
+ 0, 2, 51, 16, 0, 2, 51, 68, 0, 2, 51, 96, 0, 2, 51,172, 0, 2, 51,216, 0, 2, 52, 28, 0, 2, 52, 56, 0, 2, 52, 84,
+ 0, 2, 52,112, 0, 2, 52,140, 0, 2, 52,192, 0, 2, 52,248, 0, 2, 53, 48, 0, 2, 53,108, 0, 2, 53,164, 0, 2, 53,228,
+ 0, 2, 54, 44, 0, 2, 54,120, 0, 2, 54,156, 0, 2, 54,192, 0, 2, 54,228, 0, 2, 55, 8, 0, 2, 55, 44, 0, 2, 55, 80,
+ 0, 2, 55,116, 0, 2, 55,152, 0, 2, 55,184, 0, 2, 55,220, 0, 2, 56, 0, 0, 2, 56, 36, 0, 2, 56, 68, 0, 2, 56,100,
+ 0, 2, 56,132, 0, 2, 56,168, 0, 2, 56,208, 0, 2, 56,248, 0, 2, 57, 36, 0, 2, 57, 80, 0, 2, 57,120, 0, 2, 57,168,
+ 0, 2, 57,212, 0, 2, 57,252, 0, 2, 58, 36, 0, 2, 58, 76, 0, 2, 58,120, 0, 2, 58,164, 0, 2, 58,204, 0, 2, 58,252,
+ 0, 2, 59, 40, 0, 2, 59, 80, 0, 2, 59,120, 0, 2, 59,164, 0, 2, 59,208, 0, 2, 59,248, 0, 2, 60, 32, 0, 2, 60, 76,
+ 0, 2, 60,120, 0, 2, 60,160, 0, 2, 60,196, 0, 2, 60,240, 0, 2, 61, 28, 0, 2, 61, 68, 0, 2, 61,108, 0, 2, 61,152,
+ 0, 2, 61,196, 0, 2, 61,236, 0, 2, 62, 28, 0, 2, 62, 80, 0, 2, 62,132, 0, 2, 62,184, 0, 2, 62,236, 0, 2, 63, 32,
+ 0, 2, 63, 84, 0, 2, 63,140, 0, 2, 63,196, 0, 2, 63,252, 0, 2, 64, 52, 0, 2, 64,104, 0, 2, 64,156, 0, 2, 64,208,
+ 0, 2, 65, 4, 0, 2, 65, 56, 0, 2, 65, 92, 0, 2, 65,136, 0, 2, 65,180, 0, 2, 65,224, 0, 2, 66, 8, 0, 2, 66, 48,
+ 0, 2, 66, 92, 0, 2, 66,136, 0, 2, 66,188, 0, 2, 66,232, 0, 2, 67, 20, 0, 2, 67, 72, 0, 2, 67,116, 0, 2, 67,160,
+ 0, 2, 67,212, 0, 2, 68, 0, 0, 2, 68, 44, 0, 2, 68, 96, 0, 2, 68,144, 0, 2, 68,196, 0, 2, 69, 8, 0, 2, 69, 56,
+ 0, 2, 69,108, 0, 2, 69,172, 0, 2, 69,224, 0, 2, 70, 16, 0, 2, 70, 80, 0, 2, 70,132, 0, 2, 70,180, 0, 2, 70,244,
+ 0, 2, 71, 60, 0, 2, 71,128, 0, 2, 71,220, 0, 2, 72, 16, 0, 2, 72, 72, 0, 2, 72,120, 0, 2, 72,172, 0, 2, 72,204,
+ 0, 2, 72,232, 0, 2, 73, 40, 0, 2, 73, 68, 0, 2, 73, 96, 0, 2, 73,124, 0, 2, 73,152, 0, 2, 73,180, 0, 2, 73,208,
+ 0, 2, 73,236, 0, 2, 74, 8, 0, 2, 74, 44, 0, 2, 74, 84, 0, 2, 74,120, 0, 2, 74,160, 0, 2, 74,180, 0, 2, 74,208,
+ 0, 2, 74,236, 0, 2, 75, 8, 0, 2, 75, 36, 0, 2, 75, 64, 0, 2, 75, 92, 0, 2, 75,120, 0, 2, 75,148, 0, 2, 75,176,
+ 0, 2, 75,204, 0, 2, 75,232, 0, 2, 76, 4, 0, 2, 76, 32, 0, 2, 76, 60, 0, 2, 76, 88, 0, 2, 76,108, 0, 2, 77, 32,
+ 0, 2, 78,168, 0, 2, 79, 80, 0, 2, 79,100, 0, 2, 79,120, 0, 2, 79,148, 0, 2, 79,168, 0, 2, 79,188, 0, 2, 79,216,
+ 0, 2, 79,240, 0, 2, 80, 12, 0, 2, 80, 40, 0, 2, 80, 60, 0, 2, 80, 84, 0, 2, 80,112, 0, 2, 80,140, 0, 2, 80,184,
+ 0, 2, 81, 12, 0, 2, 81, 36, 0, 2, 81,124, 0, 2, 81,216, 0, 2, 83, 12, 0, 2, 83,148, 0, 2, 84, 28, 0, 2, 85,188,
+ 0, 2, 85,216, 0, 2, 86, 4, 0, 2, 86, 32, 0, 2, 86, 76, 0, 2, 86,104, 0, 2, 86,148, 0, 2, 86,180, 0, 2, 86,228,
+ 0, 2, 87, 0, 0, 2, 87, 40, 0, 2, 87, 68, 0, 2, 87,112, 0, 2, 87,140, 0, 2, 87,184, 0, 2, 87,212, 0, 2, 88, 0,
+ 0, 2, 88, 28, 0, 2, 88, 68, 0, 2, 88, 96, 0, 2, 88,140, 0, 2, 88,168, 0, 2, 88,208, 0, 2, 88,236, 0, 2, 89, 24,
+ 0, 2, 89, 52, 0, 2, 89, 92, 0, 2, 89,120, 0, 2, 89,160, 0, 2, 89,192, 0, 2, 89,244, 0, 2, 90, 56, 0, 2, 90,196,
+ 0, 2, 91, 24, 0, 2, 91,124, 0, 2, 92,116, 0, 2, 93, 40, 0, 2, 93,220, 0, 2, 94, 20, 0, 2, 94,104, 0, 2, 94,188,
+ 0, 2, 95, 20, 0, 2, 95,108, 0, 2, 95,208, 0, 2, 96, 32, 0, 2, 96, 72, 0, 2, 96,112, 0, 2, 96,176, 0, 2, 97, 36,
+ 0, 2, 97,116, 0, 2, 97,200, 0, 2, 97,248, 0, 2, 98, 36, 0, 2, 98, 80, 0, 2, 98,124, 0, 2, 98,192, 0, 2, 99, 4,
+ 0, 2, 99, 32, 0, 2, 99, 60, 0, 2, 99, 84, 0, 2, 99,108, 0, 2, 99,184, 0, 2, 99,228, 0, 2,100, 16, 0, 2,100, 56,
+ 0, 2,100, 96, 0, 2,100,156, 0, 2,100,232, 0, 2,101, 20, 0, 2,101, 60, 0, 2,101,160, 0, 2,101,224, 0, 2,102, 28,
+ 0, 2,102, 92, 0, 2,102,156, 0, 2,103, 16, 0, 2,103,132, 0, 2,103,252, 0, 2,104,116, 0, 2,104,156, 0, 2,104,196,
+ 0, 2,104,236, 0, 2,105, 24, 0, 2,105, 52, 0, 2,105, 96, 0, 2,105,124, 0, 2,105,164, 0, 2,106,148, 0, 2,107, 0,
+ 0, 2,107,180, 0, 2,111,192, 0, 2,114,128, 0, 2,114,180, 0, 2,115, 16, 0, 2,115, 96, 0, 2,115,192, 0, 2,116, 72,
+ 0, 2,117, 16, 0, 2,117,216, 0, 2,118, 60, 0, 2,118,216, 0, 2,121, 12, 0, 2,123,176, 0, 2,123,232, 0, 2,124, 96,
+ 0, 2,124,212, 0, 2,125, 44, 0, 2,126,132, 0, 2,128, 28, 0, 2,128,100, 0, 2,128,152, 0, 2,129,100, 0, 2,130, 40,
+ 0, 2,130,192, 0, 2,131, 88, 0, 2,132, 28, 0, 2,132,228, 0, 2,133,168, 0, 2,134,108, 0, 2,137,220, 0, 2,138, 88,
+ 0, 2,139,112, 0, 2,140,196, 0, 2,143,236, 0, 2,144,104, 0, 2,144,240, 0, 2,145, 96, 0, 2,145,196, 0, 2,146, 72,
+ 0, 2,146,216, 0, 2,148, 24, 0, 2,149, 60, 0, 2,149,212, 0, 2,150, 96, 0, 2,151, 8, 0, 2,152,120, 0, 2,153, 52,
+ 0, 2,153,244, 0, 2,154,136, 0, 2,155,160, 0, 2,156, 52, 0, 2,156,200, 0, 2,157,136, 0, 2,158, 8, 0, 2,158,132,
+ 0, 2,159, 16, 0, 2,159,112, 0, 2,159,212, 0, 2,160,116, 0, 2,161, 32, 0, 2,161,132, 0, 2,161,240, 0, 2,162,128,
+ 0, 2,162,224, 0, 2,163,152, 0, 2,164, 84, 0, 2,165, 24, 0, 2,165,136, 0, 2,166, 40, 0, 2,166,112, 0, 2,167, 8,
+ 0, 2,167,204, 0, 2,168, 72, 0, 2,169,112, 0, 2,171,148, 0, 2,172, 44, 0, 2,173, 72, 0, 2,174, 92, 0, 2,175,108,
+ 0, 2,176,248, 0, 2,177,240, 0, 2,178,112, 0, 2,179, 52, 0, 2,179,252, 0, 2,180,140, 0, 2,180,252, 0, 2,181,156,
+ 0, 2,181,228, 0, 2,182,132, 0, 2,183, 72, 0, 2,183,156, 0, 2,183,204, 0, 2,184,236, 0, 2,185,208, 0, 2,186, 16,
+ 0, 2,186,108, 0, 2,186,208, 0, 2,187, 48, 0, 2,187,128, 0, 2,187,208, 0, 2,188,100, 0, 2,189, 36, 0, 2,190, 8,
+ 0, 2,192, 0, 0, 2,192,228, 0, 2,193,244, 0, 2,195, 28, 0, 2,196, 8, 0, 2,197, 24, 0, 2,198, 56, 0, 2,199, 20,
+ 0, 2,199,212, 0, 2,200,216, 0, 2,202, 8, 0, 2,203, 84, 0, 2,204, 72, 0, 2,204,224, 0, 2,205, 80, 0, 2,206, 8,
+ 0, 2,207, 0, 0, 2,208, 64, 0, 2,209,196, 0, 2,211,140, 0, 2,212, 32, 0, 2,212,216, 0, 2,213, 64, 0, 2,213,204,
+ 0, 2,213,232, 0, 2,214, 16, 0, 2,214,112, 0, 2,214,176, 0, 2,215, 36, 0, 2,216, 24, 0, 2,217, 76, 0, 2,218, 96,
+ 0, 2,219, 8, 0, 2,219,132, 0, 2,220, 36, 0, 2,221, 36, 0, 2,222,240, 0, 2,225,132, 0, 2,227, 48, 0, 2,227,180,
+ 0, 2,228, 0, 0, 2,228, 40, 0, 2,228,112, 0, 2,230, 52, 0, 2,231,208, 0, 2,233,140, 0, 2,237, 68, 0, 2,238,236,
+ 0, 2,240,144, 0, 2,241, 24, 0, 2,241,192, 0, 2,244,100, 0, 2,246, 0, 0, 2,247, 48, 0, 2,248, 44, 0, 2,249, 88,
+ 0, 2,250, 56, 0, 2,250,188, 0, 2,251, 32, 0, 2,251,132, 0, 2,251,200, 0, 2,252, 12, 0, 2,252,212, 0, 2,253,200,
+ 0, 2,254, 72, 0, 2,254,124, 0, 2,254,184, 0, 2,254,252, 0, 2,255, 44, 0, 2,255,140, 0, 2,255,252, 0, 3, 0,228,
+ 0, 3, 1,116, 0, 3, 2, 48, 0, 3, 3,176, 0, 3, 5,120, 0, 3, 8,208, 0, 3, 9, 56, 0, 3, 9,252, 0, 3, 10, 96,
+ 0, 3, 10,244, 0, 3, 11,132, 0, 3, 12, 64, 0, 3, 12,192, 0, 3, 13, 52, 0, 3, 13,172, 0, 3, 14, 20, 0, 3, 14, 96,
+ 0, 3, 14,192, 0, 3, 15, 36, 0, 3, 15,124, 0, 3, 16, 44, 0, 3, 16,112, 0, 3, 16,192, 0, 3, 17, 16, 0, 3, 17,120,
+ 0, 3, 18, 36, 0, 3, 19,216, 0, 3, 21,216, 0, 3, 23, 24, 0, 3, 25, 72, 0, 3, 26,228, 0, 3, 29,176, 0, 3, 35,172,
+ 0, 3, 37, 8, 0, 3, 39, 88, 0, 3, 40, 24, 0, 3, 40,208, 0, 3, 41,148, 0, 3, 43, 20, 0, 3, 44,144, 0, 3, 45,228,
+ 0, 3, 47, 52, 0, 3, 48,120, 0, 3, 48,240, 0, 3, 49, 36, 0, 3, 49, 88, 0, 3, 49,136, 0, 3, 49,184, 0, 3, 50, 16,
+ 0, 3, 50, 44, 0, 3, 50, 72, 0, 3, 50,100, 0, 3, 50,136, 0, 3, 50,172, 0, 3, 50,200, 0, 3, 50,228, 0, 3, 51,220,
+ 0, 3, 52,136, 0, 3, 53, 92, 0, 3, 53,216, 0, 3, 54, 88, 0, 3, 55,120, 0, 3, 56, 92, 0, 3, 56,200, 0, 3, 57, 52,
+ 0, 3, 57,112, 0, 3, 57,176, 0, 3, 57,216, 0, 3, 58, 0, 0, 3, 58, 40, 0, 3, 58, 80, 0, 3, 58,120, 0, 3, 58,160,
+ 0, 3, 58,200, 0, 3, 58,240, 0, 3, 59, 84, 0, 3, 59,196, 0, 3, 59,244, 0, 3, 60, 32, 0, 3, 60, 76, 0, 3, 60,120,
+ 0, 3, 60,168, 0, 3, 61, 76, 0, 3, 61,116, 0, 3, 61,156, 0, 3, 61,236, 0, 3, 62, 60, 0, 3, 62,100, 0, 3, 62,148,
+ 0, 3, 62,196, 0, 3, 62,232, 0, 3, 63, 60, 0, 3, 63,144, 0, 3, 63,188, 0, 3, 63,232, 0, 3, 64, 44, 0, 3, 64,112,
+ 0, 3, 64,192, 0, 3, 65, 12, 0, 3, 65, 88, 0, 3, 65,164, 0, 3, 65,248, 0, 3, 66, 76, 0, 3, 66,192, 0, 3, 67, 92,
+ 0, 3, 67,180, 0, 3, 67,252, 0, 3, 68, 84, 0, 3, 68,252, 0, 3, 69,148, 0, 3, 70, 56, 0, 3, 71, 20, 0, 3, 71,176,
+ 0, 3, 72,220, 0, 3, 74, 16, 0, 3, 74,168, 0, 3, 74,228, 0, 3, 75, 12, 0, 3, 75, 52, 0, 3, 75, 84, 0, 3, 75,152,
+ 0, 3, 75,236, 0, 3, 75,252, 0, 3, 76, 40, 0, 3, 76, 84, 0, 3, 76,124, 0, 3, 76,164, 0, 3, 76,212, 0, 3, 77, 4,
+ 0, 3, 77, 52, 0, 3, 77,100, 0, 3, 78, 8, 0, 3, 78, 44, 0, 3, 78, 84, 0, 3, 78,212, 0, 3, 79, 80, 0, 3, 79, 96,
+ 0, 3, 79,216, 0, 3, 80,120, 0, 3, 81, 0, 0, 3, 81, 24, 0, 3, 81, 48, 0, 3, 81, 72, 0, 3, 81, 96, 0, 3, 81,120,
+ 0, 3, 81,144, 0, 3, 81,168, 0, 3, 81,192, 0, 3, 81,216, 0, 3, 81,240, 0, 3, 82, 8, 0, 3, 82, 32, 0, 3, 82, 56,
+ 0, 3, 82, 80, 0, 3, 82,104, 0, 3, 82,128, 0, 3, 82,152, 0, 3, 82,176, 0, 3, 82,200, 0, 3, 82,224, 0, 3, 82,248,
+ 0, 3, 83, 16, 0, 3, 83, 40, 0, 3, 83, 64, 0, 3, 83, 88, 0, 3, 83,112, 0, 3, 83,136, 0, 3, 83,160, 0, 3, 83,184,
+ 0, 3, 83,208, 0, 3, 83,232, 0, 3, 84, 0, 0, 3, 84, 24, 0, 3, 84, 48, 0, 3, 84, 72, 0, 3, 84, 96, 0, 3, 84,120,
+ 0, 3, 84,144, 0, 3, 84,168, 0, 3, 84,192, 0, 3, 84,216, 0, 3, 84,240, 0, 3, 85, 8, 0, 3, 85, 32, 0, 3, 85, 56,
+ 0, 3, 85, 80, 0, 3, 85,104, 0, 3, 85,128, 0, 3, 85,152, 0, 3, 85,176, 0, 3, 85,200, 0, 3, 85,224, 0, 3, 85,240,
+ 0, 3, 86,140, 0, 3, 86,156, 0, 3, 86,172, 0, 3, 86,196, 0, 3, 86,220, 0, 3, 86,244, 0, 3, 87, 12, 0, 3, 87, 28,
+ 0, 3, 87,148, 0, 3, 87,164, 0, 3, 88,116, 0, 3, 88,132, 0, 3, 89, 56, 0, 3, 89,108, 0, 3, 89,176, 0, 3, 89,192,
+ 0, 3, 89,208, 0, 3, 89,232, 0, 3, 90, 0, 0, 3, 90, 16, 0, 3, 90, 40, 0, 3, 90, 56, 0, 3, 90,108, 0, 3, 90,124,
+ 0, 3, 90,140, 0, 3, 90,164, 0, 3, 90,180, 0, 3, 90,204, 0, 3, 90,220, 0, 3, 90,244, 0, 3, 91, 4, 0, 3, 91, 28,
+ 0, 3, 91, 44, 0, 3, 91, 68, 0, 3, 91, 84, 0, 3, 91,108, 0, 3, 91,132, 0, 3, 91,156, 0, 3, 91,180, 0, 3, 91,204,
+ 0, 3, 91,228, 0, 3, 91,252, 0, 3, 92, 20, 0, 3, 92, 44, 0, 3, 92, 68, 0, 3, 92, 92, 0, 3, 92,116, 0, 3, 92,132,
+ 0, 3, 92,184, 0, 3, 92,208, 0, 3, 92,232, 0, 3, 93, 0, 0, 3, 93, 24, 0, 3, 93, 48, 0, 3, 93, 72, 0, 3, 93, 96,
+ 0, 3, 93,120, 0, 3, 93,144, 0, 3, 93,168, 0, 3, 93,192, 0, 3, 93,216, 0, 3, 93,240, 0, 3, 94, 8, 0, 3, 94, 32,
+ 0, 3, 94, 56, 0, 3, 94, 80, 0, 3, 94,104, 0, 3, 94,120, 0, 3, 95, 16, 0, 3, 95,120, 0, 3, 95,252, 0, 3, 96, 20,
+ 0, 3, 96, 44, 0, 3, 96, 68, 0, 3, 96, 92, 0, 3, 96,108, 0, 3, 96,212, 0, 3, 96,236, 0, 3, 97, 4, 0, 3, 97, 20,
+ 0, 3, 97,108, 0, 3, 97,132, 0, 3, 97,156, 0, 3, 97,172, 0, 3, 98,128, 0, 3, 99, 16, 0, 3, 99,176, 0, 3, 99,200,
+ 0, 3, 99,224, 0, 3, 99,248, 0, 3,100, 16, 0, 3,100, 32, 0, 3,100,240, 0, 3,101,116, 0, 3,102, 16, 0, 3,102, 40,
+ 0, 3,102, 64, 0, 3,102, 88, 0, 3,102,112, 0, 3,102,128, 0, 3,102,248, 0, 3,103, 92, 0, 3,103,212, 0, 3,103,236,
+ 0, 3,104, 4, 0, 3,104, 28, 0, 3,104, 52, 0, 3,104, 68, 0, 3,104,240, 0, 3,105, 72, 0, 3,105,216, 0, 3,105,240,
+ 0, 3,106, 8, 0, 3,106, 32, 0, 3,106, 56, 0, 3,106, 80, 0, 3,106,104, 0, 3,106,128, 0, 3,106,152, 0, 3,106,176,
+ 0, 3,106,200, 0, 3,106,224, 0, 3,106,248, 0, 3,107, 8, 0, 3,107,212, 0, 3,108, 64, 0, 3,108,200, 0, 3,108,216,
+ 0, 3,109, 76, 0, 3,109,132, 0, 3,109,204, 0, 3,109,220, 0, 3,110,120, 0, 3,110,252, 0, 3,111,140, 0, 3,111,164,
+ 0, 3,111,188, 0, 3,111,212, 0, 3,111,236, 0, 3,111,252, 0, 3,112,116, 0, 3,113, 48, 0, 3,113,192, 0, 3,113,208,
+ 0, 3,114,100, 0, 3,114,116, 0, 3,115, 24, 0, 3,115, 48, 0, 3,115, 72, 0, 3,115, 96, 0, 3,115,120, 0, 3,115,144,
+ 0, 3,115,168, 0, 3,115,192, 0, 3,115,216, 0, 3,115,240, 0, 3,116, 8, 0, 3,116, 92, 0, 3,116,196, 0, 3,116,196,
+ 0, 3,116,196, 0, 3,116,196, 0, 3,116,196, 0, 3,116,196, 0, 3,117, 84, 0, 3,117,100, 0, 3,117,116, 0, 3,117,132,
+ 0, 3,117,148, 0, 3,117,164, 0, 3,117,180, 0, 3,117,196, 0, 3,117,212, 0, 3,117,228, 0, 3,117,244, 0, 3,118, 4,
+ 0, 3,118, 20, 0, 3,118, 36, 0, 3,118, 52, 0, 3,118, 68, 0, 3,118, 84, 0, 3,118,100, 0, 3,118,116, 0, 3,118,132,
+ 0, 3,118,148, 0, 3,118,164, 0, 3,118,180, 0, 3,118,196, 0, 3,118,212, 0, 3,118,228, 0, 3,118,244, 0, 3,119, 4,
+ 0, 3,119, 20, 0, 3,119, 36, 0, 3,119, 52, 0, 3,119, 68, 0, 3,119, 84, 0, 3,119,100, 0, 3,119,116, 0, 3,119,132,
+ 0, 3,119,148, 0, 3,119,164, 0, 3,119,180, 0, 3,119,196, 0, 3,119,212, 0, 3,119,228, 0, 3,119,244, 0, 3,120, 4,
+ 0, 3,120, 20, 0, 3,120, 36, 0, 3,120, 52, 0, 3,120, 68, 0, 3,120, 84, 0, 3,120,100, 0, 3,120,116, 0, 3,120,132,
+ 0, 3,120,148, 0, 3,120,164, 0, 3,120,180, 0, 3,120,196, 0, 3,120,212, 0, 3,120,228, 0, 3,120,244, 0, 3,121, 4,
+ 0, 3,121, 20, 0, 3,121, 36, 0, 3,121, 52, 0, 3,121, 96, 0, 3,121,216, 0, 3,122, 96, 0, 3,123,140, 0, 3,124, 20,
+ 0, 3,124,148, 0, 3,125, 36, 0, 3,125, 92, 0, 3,125,144, 0, 3,125,228, 0, 3,126, 16, 0, 3,126, 84, 0, 3,126,128,
+ 0, 3,127, 4, 0, 3,127, 48, 0, 3,127, 76, 0, 3,127,104, 0, 3,127,132, 0, 3,127,204, 0, 3,127,244, 0, 3,128, 12,
+ 0, 3,128, 48, 0, 3,128, 96, 0, 3,128,212, 0, 3,129,112, 0, 3,130, 12, 0, 3,130,208, 0, 3,131,136, 0, 3,131,184,
+ 0, 3,131,220, 0, 3,132, 20, 0, 3,132, 52, 0, 3,132, 84, 0, 3,132,164, 0, 3,133, 48, 0, 1, 0, 0, 11,210, 2, 12,
+ 0, 43, 0,107, 0, 6, 0, 2, 0, 16, 0, 64, 0, 8, 0, 0, 5, 87, 7, 27, 0, 5, 0, 4, 0, 0, 0, 22, 1, 14, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 95, 0,192, 0, 1, 0, 0, 0, 0, 0, 1, 0, 16, 1, 66, 0, 1, 0, 0, 0, 0, 0, 2, 0, 4,
+ 1, 93, 0, 1, 0, 0, 0, 0, 0, 3, 0, 16, 1,132, 0, 1, 0, 0, 0, 0, 0, 4, 0, 16, 1,183, 0, 1, 0, 0, 0, 0,
+ 0, 5, 0, 12, 1,226, 0, 1, 0, 0, 0, 0, 0, 6, 0, 14, 2, 13, 0, 1, 0, 0, 0, 0, 0, 8, 0, 17, 2, 64, 0, 1,
+ 0, 0, 0, 0, 0, 11, 0, 29, 2,142, 0, 1, 0, 0, 0, 0, 0, 13, 9,147, 21,212, 0, 1, 0, 0, 0, 0, 0, 14, 0, 52,
+ 31,210, 0, 3, 0, 1, 4, 9, 0, 0, 0,190, 0, 0, 0, 3, 0, 1, 4, 9, 0, 1, 0, 32, 1, 32, 0, 3, 0, 1, 4, 9,
+ 0, 2, 0, 8, 1, 83, 0, 3, 0, 1, 4, 9, 0, 3, 0, 32, 1, 98, 0, 3, 0, 1, 4, 9, 0, 4, 0, 32, 1,149, 0, 3,
+ 0, 1, 4, 9, 0, 5, 0, 24, 1,200, 0, 3, 0, 1, 4, 9, 0, 6, 0, 28, 1,239, 0, 3, 0, 1, 4, 9, 0, 8, 0, 34,
+ 2, 28, 0, 3, 0, 1, 4, 9, 0, 11, 0, 58, 2, 82, 0, 3, 0, 1, 4, 9, 0, 13, 19, 38, 2,172, 0, 3, 0, 1, 4, 9,
+ 0, 14, 0,104, 31,104, 0, 67, 0,111, 0,112, 0,121, 0,114, 0,105, 0,103, 0,104, 0,116, 0, 32, 0, 40, 0, 99, 0, 41,
+ 0, 32, 0, 50, 0, 48, 0, 48, 0, 51, 0, 32, 0, 98, 0,121, 0, 32, 0, 66, 0,105, 0,116, 0,115, 0,116, 0,114, 0,101,
+ 0, 97, 0,109, 0, 44, 0, 32, 0, 73, 0,110, 0, 99, 0, 46, 0, 32, 0, 65, 0,108, 0,108, 0, 32, 0, 82, 0,105, 0,103,
+ 0,104, 0,116, 0,115, 0, 32, 0, 82, 0,101, 0,115, 0,101, 0,114, 0,118, 0,101, 0,100, 0, 46, 0, 10, 0, 68, 0,101,
+ 0,106, 0, 97, 0, 86, 0,117, 0, 32, 0, 99, 0,104, 0, 97, 0,110, 0,103, 0,101, 0,115, 0, 32, 0, 97, 0,114, 0,101,
+ 0, 32, 0,105, 0,110, 0, 32, 0,112, 0,117, 0, 98, 0,108, 0,105, 0, 99, 0, 32, 0,100, 0,111, 0,109, 0, 97, 0,105,
+ 0,110, 0, 10, 0, 0, 67,111,112,121,114,105,103,104,116, 32, 40, 99, 41, 32, 50, 48, 48, 51, 32, 98,121, 32, 66,105,116,115,
+116,114,101, 97,109, 44, 32, 73,110, 99, 46, 32, 65,108,108, 32, 82,105,103,104,116,115, 32, 82,101,115,101,114,118,101,100, 46,
+ 10, 68,101,106, 97, 86,117, 32, 99,104, 97,110,103,101,115, 32, 97,114,101, 32,105,110, 32,112,117, 98,108,105, 99, 32,100,111,
+109, 97,105,110, 10, 0, 0, 68, 0,101, 0,106, 0, 97, 0, 86, 0,117, 0, 32, 0, 83, 0, 97, 0,110, 0,115, 0, 32, 0, 77,
+ 0,111, 0,110, 0,111, 0, 0, 68,101,106, 97, 86,117, 32, 83, 97,110,115, 32, 77,111,110,111, 0, 0, 66, 0,111, 0,111, 0,
+107, 0, 0, 66,111,111,107, 0, 0, 68, 0,101, 0,106, 0, 97, 0, 86, 0,117, 0, 32, 0, 83, 0, 97, 0,110, 0,115, 0, 32,
+ 0, 77, 0,111, 0,110, 0,111, 0, 0, 68,101,106, 97, 86,117, 32, 83, 97,110,115, 32, 77,111,110,111, 0, 0, 68, 0,101, 0,
+106, 0, 97, 0, 86, 0,117, 0, 32, 0, 83, 0, 97, 0,110, 0,115, 0, 32, 0, 77, 0,111, 0,110, 0,111, 0, 0, 68,101,106,
+ 97, 86,117, 32, 83, 97,110,115, 32, 77,111,110,111, 0, 0, 86, 0,101, 0,114, 0,115, 0,105, 0,111, 0,110, 0, 32, 0, 50,
+ 0, 46, 0, 50, 0, 53, 0, 0, 86,101,114,115,105,111,110, 32, 50, 46, 50, 53, 0, 0, 68, 0,101, 0,106, 0, 97, 0, 86, 0,
+117, 0, 83, 0, 97, 0,110, 0,115, 0, 77, 0,111, 0,110, 0,111, 0, 0, 68,101,106, 97, 86,117, 83, 97,110,115, 77,111,110,
+111, 0, 0, 68, 0,101, 0,106, 0, 97, 0, 86, 0,117, 0, 32, 0,102, 0,111, 0,110, 0,116, 0,115, 0, 32, 0,116, 0,101,
+ 0, 97, 0,109, 0, 0, 68,101,106, 97, 86,117, 32,102,111,110,116,115, 32,116,101, 97,109, 0, 0,104, 0,116, 0,116, 0,112,
+ 0, 58, 0, 47, 0, 47, 0,100, 0,101, 0,106, 0, 97, 0,118, 0,117, 0, 46, 0,115, 0,111, 0,117, 0,114, 0, 99, 0,101,
+ 0,102, 0,111, 0,114, 0,103, 0,101, 0, 46, 0,110, 0,101, 0,116, 0, 0,104,116,116,112, 58, 47, 47,100,101,106, 97,118,
+117, 46,115,111,117,114, 99,101,102,111,114,103,101, 46,110,101,116, 0, 0, 70, 0,111, 0,110, 0,116, 0,115, 0, 32, 0, 97,
+ 0,114, 0,101, 0, 32, 0, 40, 0, 99, 0, 41, 0, 32, 0, 66, 0,105, 0,116, 0,115, 0,116, 0,114, 0,101, 0, 97, 0,109,
+ 0, 32, 0, 40, 0,115, 0,101, 0,101, 0, 32, 0, 98, 0,101, 0,108, 0,111, 0,119, 0, 41, 0, 46, 0, 32, 0, 68, 0,101,
+ 0,106, 0, 97, 0, 86, 0,117, 0, 32, 0, 99, 0,104, 0, 97, 0,110, 0,103, 0,101, 0,115, 0, 32, 0, 97, 0,114, 0,101,
+ 0, 32, 0,105, 0,110, 0, 32, 0,112, 0,117, 0, 98, 0,108, 0,105, 0, 99, 0, 32, 0,100, 0,111, 0,109, 0, 97, 0,105,
+ 0,110, 0, 46, 0, 10, 0, 10, 0, 66, 0,105, 0,116, 0,115, 0,116, 0,114, 0,101, 0, 97, 0,109, 0, 32, 0, 86, 0,101,
+ 0,114, 0, 97, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0,115, 0, 32, 0, 67, 0,111, 0,112, 0,121, 0,114, 0,105, 0,103,
+ 0,104, 0,116, 0, 10, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45,
+ 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45, 0, 45,
+ 0, 45, 0, 10, 0, 10, 0, 67, 0,111, 0,112, 0,121, 0,114, 0,105, 0,103, 0,104, 0,116, 0, 32, 0, 40, 0, 99, 0, 41,
+ 0, 32, 0, 50, 0, 48, 0, 48, 0, 51, 0, 32, 0, 98, 0,121, 0, 32, 0, 66, 0,105, 0,116, 0,115, 0,116, 0,114, 0,101,
+ 0, 97, 0,109, 0, 44, 0, 32, 0, 73, 0,110, 0, 99, 0, 46, 0, 32, 0, 65, 0,108, 0,108, 0, 32, 0, 82, 0,105, 0,103,
+ 0,104, 0,116, 0,115, 0, 32, 0, 82, 0,101, 0,115, 0,101, 0,114, 0,118, 0,101, 0,100, 0, 46, 0, 32, 0, 66, 0,105,
+ 0,116, 0,115, 0,116, 0,114, 0,101, 0, 97, 0,109, 0, 32, 0, 86, 0,101, 0,114, 0, 97, 0, 32, 0,105, 0,115, 0, 32,
+ 0, 97, 0, 32, 0,116, 0,114, 0, 97, 0,100, 0,101, 0,109, 0, 97, 0,114, 0,107, 0, 32, 0,111, 0,102, 0, 32, 0, 66,
+ 0,105, 0,116, 0,115, 0,116, 0,114, 0,101, 0, 97, 0,109, 0, 44, 0, 32, 0, 73, 0,110, 0, 99, 0, 46, 0, 10, 0, 10,
+ 0, 80, 0,101, 0,114, 0,109, 0,105, 0,115, 0,115, 0,105, 0,111, 0,110, 0, 32, 0,105, 0,115, 0, 32, 0,104, 0,101,
+ 0,114, 0,101, 0, 98, 0,121, 0, 32, 0,103, 0,114, 0, 97, 0,110, 0,116, 0,101, 0,100, 0, 44, 0, 32, 0,102, 0,114,
+ 0,101, 0,101, 0, 32, 0,111, 0,102, 0, 32, 0, 99, 0,104, 0, 97, 0,114, 0,103, 0,101, 0, 44, 0, 32, 0,116, 0,111,
+ 0, 32, 0, 97, 0,110, 0,121, 0, 32, 0,112, 0,101, 0,114, 0,115, 0,111, 0,110, 0, 32, 0,111, 0, 98, 0,116, 0, 97,
+ 0,105, 0,110, 0,105, 0,110, 0,103, 0, 32, 0, 97, 0, 32, 0, 99, 0,111, 0,112, 0,121, 0, 32, 0,111, 0,102, 0, 32,
+ 0,116, 0,104, 0,101, 0, 32, 0,102, 0,111, 0,110, 0,116, 0,115, 0, 32, 0, 97, 0, 99, 0, 99, 0,111, 0,109, 0,112,
+ 0, 97, 0,110, 0,121, 0,105, 0,110, 0,103, 0, 32, 0,116, 0,104, 0,105, 0,115, 0, 32, 0,108, 0,105, 0, 99, 0,101,
+ 0,110, 0,115, 0,101, 0, 32, 0, 40, 0, 34, 0, 70, 0,111, 0,110, 0,116, 0,115, 0, 34, 0, 41, 0, 32, 0, 97, 0,110,
+ 0,100, 0, 32, 0, 97, 0,115, 0,115, 0,111, 0, 99, 0,105, 0, 97, 0,116, 0,101, 0,100, 0, 32, 0,100, 0,111, 0, 99,
+ 0,117, 0,109, 0,101, 0,110, 0,116, 0, 97, 0,116, 0,105, 0,111, 0,110, 0, 32, 0,102, 0,105, 0,108, 0,101, 0,115,
+ 0, 32, 0, 40, 0,116, 0,104, 0,101, 0, 32, 0, 34, 0, 70, 0,111, 0,110, 0,116, 0, 32, 0, 83, 0,111, 0,102, 0,116,
+ 0,119, 0, 97, 0,114, 0,101, 0, 34, 0, 41, 0, 44, 0, 32, 0,116, 0,111, 0, 32, 0,114, 0,101, 0,112, 0,114, 0,111,
+ 0,100, 0,117, 0, 99, 0,101, 0, 32, 0, 97, 0,110, 0,100, 0, 32, 0,100, 0,105, 0,115, 0,116, 0,114, 0,105, 0, 98,
+ 0,117, 0,116, 0,101, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0, 32, 0, 83, 0,111, 0,102,
+ 0,116, 0,119, 0, 97, 0,114, 0,101, 0, 44, 0, 32, 0,105, 0,110, 0, 99, 0,108, 0,117, 0,100, 0,105, 0,110, 0,103,
+ 0, 32, 0,119, 0,105, 0,116, 0,104, 0,111, 0,117, 0,116, 0, 32, 0,108, 0,105, 0,109, 0,105, 0,116, 0, 97, 0,116,
+ 0,105, 0,111, 0,110, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0,114, 0,105, 0,103, 0,104, 0,116, 0,115, 0, 32, 0,116,
+ 0,111, 0, 32, 0,117, 0,115, 0,101, 0, 44, 0, 32, 0, 99, 0,111, 0,112, 0,121, 0, 44, 0, 32, 0,109, 0,101, 0,114,
+ 0,103, 0,101, 0, 44, 0, 32, 0,112, 0,117, 0, 98, 0,108, 0,105, 0,115, 0,104, 0, 44, 0, 32, 0,100, 0,105, 0,115,
+ 0,116, 0,114, 0,105, 0, 98, 0,117, 0,116, 0,101, 0, 44, 0, 32, 0, 97, 0,110, 0,100, 0, 47, 0,111, 0,114, 0, 32,
+ 0,115, 0,101, 0,108, 0,108, 0, 32, 0, 99, 0,111, 0,112, 0,105, 0,101, 0,115, 0, 32, 0,111, 0,102, 0, 32, 0,116,
+ 0,104, 0,101, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0, 32, 0, 83, 0,111, 0,102, 0,116, 0,119, 0, 97, 0,114, 0,101,
+ 0, 44, 0, 32, 0, 97, 0,110, 0,100, 0, 32, 0,116, 0,111, 0, 32, 0,112, 0,101, 0,114, 0,109, 0,105, 0,116, 0, 32,
+ 0,112, 0,101, 0,114, 0,115, 0,111, 0,110, 0,115, 0, 32, 0,116, 0,111, 0, 32, 0,119, 0,104, 0,111, 0,109, 0, 32,
+ 0,116, 0,104, 0,101, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0, 32, 0, 83, 0,111, 0,102, 0,116, 0,119, 0, 97, 0,114,
+ 0,101, 0, 32, 0,105, 0,115, 0, 32, 0,102, 0,117, 0,114, 0,110, 0,105, 0,115, 0,104, 0,101, 0,100, 0, 32, 0,116,
+ 0,111, 0, 32, 0,100, 0,111, 0, 32, 0,115, 0,111, 0, 44, 0, 32, 0,115, 0,117, 0, 98, 0,106, 0,101, 0, 99, 0,116,
+ 0, 32, 0,116, 0,111, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0,102, 0,111, 0,108, 0,108, 0,111, 0,119, 0,105, 0,110,
+ 0,103, 0, 32, 0, 99, 0,111, 0,110, 0,100, 0,105, 0,116, 0,105, 0,111, 0,110, 0,115, 0, 58, 0, 10, 0, 10, 0, 84,
+ 0,104, 0,101, 0, 32, 0, 97, 0, 98, 0,111, 0,118, 0,101, 0, 32, 0, 99, 0,111, 0,112, 0,121, 0,114, 0,105, 0,103,
+ 0,104, 0,116, 0, 32, 0, 97, 0,110, 0,100, 0, 32, 0,116, 0,114, 0, 97, 0,100, 0,101, 0,109, 0, 97, 0,114, 0,107,
+ 0, 32, 0,110, 0,111, 0,116, 0,105, 0, 99, 0,101, 0,115, 0, 32, 0, 97, 0,110, 0,100, 0, 32, 0,116, 0,104, 0,105,
+ 0,115, 0, 32, 0,112, 0,101, 0,114, 0,109, 0,105, 0,115, 0,115, 0,105, 0,111, 0,110, 0, 32, 0,110, 0,111, 0,116,
+ 0,105, 0, 99, 0,101, 0, 32, 0,115, 0,104, 0, 97, 0,108, 0,108, 0, 32, 0, 98, 0,101, 0, 32, 0,105, 0,110, 0, 99,
+ 0,108, 0,117, 0,100, 0,101, 0,100, 0, 32, 0,105, 0,110, 0, 32, 0, 97, 0,108, 0,108, 0, 32, 0, 99, 0,111, 0,112,
+ 0,105, 0,101, 0,115, 0, 32, 0,111, 0,102, 0, 32, 0,111, 0,110, 0,101, 0, 32, 0,111, 0,114, 0, 32, 0,109, 0,111,
+ 0,114, 0,101, 0, 32, 0,111, 0,102, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0, 32, 0, 83,
+ 0,111, 0,102, 0,116, 0,119, 0, 97, 0,114, 0,101, 0, 32, 0,116, 0,121, 0,112, 0,101, 0,102, 0, 97, 0, 99, 0,101,
+ 0,115, 0, 46, 0, 10, 0, 10, 0, 84, 0,104, 0,101, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0, 32, 0, 83, 0,111, 0,102,
+ 0,116, 0,119, 0, 97, 0,114, 0,101, 0, 32, 0,109, 0, 97, 0,121, 0, 32, 0, 98, 0,101, 0, 32, 0,109, 0,111, 0,100,
+ 0,105, 0,102, 0,105, 0,101, 0,100, 0, 44, 0, 32, 0, 97, 0,108, 0,116, 0,101, 0,114, 0,101, 0,100, 0, 44, 0, 32,
+ 0,111, 0,114, 0, 32, 0, 97, 0,100, 0,100, 0,101, 0,100, 0, 32, 0,116, 0,111, 0, 44, 0, 32, 0, 97, 0,110, 0,100,
+ 0, 32, 0,105, 0,110, 0, 32, 0,112, 0, 97, 0,114, 0,116, 0,105, 0, 99, 0,117, 0,108, 0, 97, 0,114, 0, 32, 0,116,
+ 0,104, 0,101, 0, 32, 0,100, 0,101, 0,115, 0,105, 0,103, 0,110, 0,115, 0, 32, 0,111, 0,102, 0, 32, 0,103, 0,108,
+ 0,121, 0,112, 0,104, 0,115, 0, 32, 0,111, 0,114, 0, 32, 0, 99, 0,104, 0, 97, 0,114, 0, 97, 0, 99, 0,116, 0,101,
+ 0,114, 0,115, 0, 32, 0,105, 0,110, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0,115, 0, 32,
+ 0,109, 0, 97, 0,121, 0, 32, 0, 98, 0,101, 0, 32, 0,109, 0,111, 0,100, 0,105, 0,102, 0,105, 0,101, 0,100, 0, 32,
+ 0, 97, 0,110, 0,100, 0, 32, 0, 97, 0,100, 0,100, 0,105, 0,116, 0,105, 0,111, 0,110, 0, 97, 0,108, 0, 32, 0,103,
+ 0,108, 0,121, 0,112, 0,104, 0,115, 0, 32, 0,111, 0,114, 0, 32, 0, 32, 0,111, 0,114, 0, 32, 0, 99, 0,104, 0, 97,
+ 0,114, 0, 97, 0, 99, 0,116, 0,101, 0,114, 0,115, 0, 32, 0,109, 0, 97, 0,121, 0, 32, 0, 98, 0,101, 0, 32, 0, 97,
+ 0,100, 0,100, 0,101, 0,100, 0, 32, 0,116, 0,111, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0, 70, 0,111, 0,110, 0,116,
+ 0,115, 0, 44, 0, 32, 0,111, 0,110, 0,108, 0,121, 0, 32, 0,105, 0,102, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0,102,
+ 0,111, 0,110, 0,116, 0,115, 0, 32, 0, 97, 0,114, 0,101, 0, 32, 0,114, 0,101, 0,110, 0, 97, 0,109, 0,101, 0,100,
+ 0, 32, 0,116, 0,111, 0, 32, 0,110, 0, 97, 0,109, 0,101, 0,115, 0, 32, 0,110, 0,111, 0,116, 0, 32, 0, 99, 0,111,
+ 0,110, 0,116, 0, 97, 0,105, 0,110, 0,105, 0,110, 0,103, 0, 32, 0,101, 0,105, 0,116, 0,104, 0,101, 0,114, 0, 32,
+ 0,116, 0,104, 0,101, 0, 32, 0,119, 0,111, 0,114, 0,100, 0,115, 0, 32, 0, 34, 0, 66, 0,105, 0,116, 0,115, 0,116,
+ 0,114, 0,101, 0, 97, 0,109, 0, 34, 0, 32, 0,111, 0,114, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0,119, 0,111, 0,114,
+ 0,100, 0, 32, 0, 34, 0, 86, 0,101, 0,114, 0, 97, 0, 34, 0, 46, 0, 10, 0, 10, 0, 84, 0,104, 0,105, 0,115, 0, 32,
+ 0, 76, 0,105, 0, 99, 0,101, 0,110, 0,115, 0,101, 0, 32, 0, 98, 0,101, 0, 99, 0,111, 0,109, 0,101, 0,115, 0, 32,
+ 0,110, 0,117, 0,108, 0,108, 0, 32, 0, 97, 0,110, 0,100, 0, 32, 0,118, 0,111, 0,105, 0,100, 0, 32, 0,116, 0,111,
+ 0, 32, 0,116, 0,104, 0,101, 0, 32, 0,101, 0,120, 0,116, 0,101, 0,110, 0,116, 0, 32, 0, 97, 0,112, 0,112, 0,108,
+ 0,105, 0, 99, 0, 97, 0, 98, 0,108, 0,101, 0, 32, 0,116, 0,111, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0,115, 0, 32,
+ 0,111, 0,114, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0, 32, 0, 83, 0,111, 0,102, 0,116, 0,119, 0, 97, 0,114, 0,101,
+ 0, 32, 0,116, 0,104, 0, 97, 0,116, 0, 32, 0,104, 0, 97, 0,115, 0, 32, 0, 98, 0,101, 0,101, 0,110, 0, 32, 0,109,
+ 0,111, 0,100, 0,105, 0,102, 0,105, 0,101, 0,100, 0, 32, 0, 97, 0,110, 0,100, 0, 32, 0,105, 0,115, 0, 32, 0,100,
+ 0,105, 0,115, 0,116, 0,114, 0,105, 0, 98, 0,117, 0,116, 0,101, 0,100, 0, 32, 0,117, 0,110, 0,100, 0,101, 0,114,
+ 0, 32, 0,116, 0,104, 0,101, 0, 32, 0, 34, 0, 66, 0,105, 0,116, 0,115, 0,116, 0,114, 0,101, 0, 97, 0,109, 0, 32,
+ 0, 86, 0,101, 0,114, 0, 97, 0, 34, 0, 32, 0,110, 0, 97, 0,109, 0,101, 0,115, 0, 46, 0, 10, 0, 10, 0, 84, 0,104,
+ 0,101, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0, 32, 0, 83, 0,111, 0,102, 0,116, 0,119, 0, 97, 0,114, 0,101, 0, 32,
+ 0,109, 0, 97, 0,121, 0, 32, 0, 98, 0,101, 0, 32, 0,115, 0,111, 0,108, 0,100, 0, 32, 0, 97, 0,115, 0, 32, 0,112,
+ 0, 97, 0,114, 0,116, 0, 32, 0,111, 0,102, 0, 32, 0, 97, 0, 32, 0,108, 0, 97, 0,114, 0,103, 0,101, 0,114, 0, 32,
+ 0,115, 0,111, 0,102, 0,116, 0,119, 0, 97, 0,114, 0,101, 0, 32, 0,112, 0, 97, 0, 99, 0,107, 0, 97, 0,103, 0,101,
+ 0, 32, 0, 98, 0,117, 0,116, 0, 32, 0,110, 0,111, 0, 32, 0, 99, 0,111, 0,112, 0,121, 0, 32, 0,111, 0,102, 0, 32,
+ 0,111, 0,110, 0,101, 0, 32, 0,111, 0,114, 0, 32, 0,109, 0,111, 0,114, 0,101, 0, 32, 0,111, 0,102, 0, 32, 0,116,
+ 0,104, 0,101, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0, 32, 0, 83, 0,111, 0,102, 0,116, 0,119, 0, 97, 0,114, 0,101,
+ 0, 32, 0,116, 0,121, 0,112, 0,101, 0,102, 0, 97, 0, 99, 0,101, 0,115, 0, 32, 0,109, 0, 97, 0,121, 0, 32, 0, 98,
+ 0,101, 0, 32, 0,115, 0,111, 0,108, 0,100, 0, 32, 0, 98, 0,121, 0, 32, 0,105, 0,116, 0,115, 0,101, 0,108, 0,102,
+ 0, 46, 0, 10, 0, 10, 0, 84, 0, 72, 0, 69, 0, 32, 0, 70, 0, 79, 0, 78, 0, 84, 0, 32, 0, 83, 0, 79, 0, 70, 0, 84,
+ 0, 87, 0, 65, 0, 82, 0, 69, 0, 32, 0, 73, 0, 83, 0, 32, 0, 80, 0, 82, 0, 79, 0, 86, 0, 73, 0, 68, 0, 69, 0, 68,
+ 0, 32, 0, 34, 0, 65, 0, 83, 0, 32, 0, 73, 0, 83, 0, 34, 0, 44, 0, 32, 0, 87, 0, 73, 0, 84, 0, 72, 0, 79, 0, 85,
+ 0, 84, 0, 32, 0, 87, 0, 65, 0, 82, 0, 82, 0, 65, 0, 78, 0, 84, 0, 89, 0, 32, 0, 79, 0, 70, 0, 32, 0, 65, 0, 78,
+ 0, 89, 0, 32, 0, 75, 0, 73, 0, 78, 0, 68, 0, 44, 0, 32, 0, 69, 0, 88, 0, 80, 0, 82, 0, 69, 0, 83, 0, 83, 0, 32,
+ 0, 79, 0, 82, 0, 32, 0, 73, 0, 77, 0, 80, 0, 76, 0, 73, 0, 69, 0, 68, 0, 44, 0, 32, 0, 73, 0, 78, 0, 67, 0, 76,
+ 0, 85, 0, 68, 0, 73, 0, 78, 0, 71, 0, 32, 0, 66, 0, 85, 0, 84, 0, 32, 0, 78, 0, 79, 0, 84, 0, 32, 0, 76, 0, 73,
+ 0, 77, 0, 73, 0, 84, 0, 69, 0, 68, 0, 32, 0, 84, 0, 79, 0, 32, 0, 65, 0, 78, 0, 89, 0, 32, 0, 87, 0, 65, 0, 82,
+ 0, 82, 0, 65, 0, 78, 0, 84, 0, 73, 0, 69, 0, 83, 0, 32, 0, 79, 0, 70, 0, 32, 0, 77, 0, 69, 0, 82, 0, 67, 0, 72,
+ 0, 65, 0, 78, 0, 84, 0, 65, 0, 66, 0, 73, 0, 76, 0, 73, 0, 84, 0, 89, 0, 44, 0, 32, 0, 70, 0, 73, 0, 84, 0, 78,
+ 0, 69, 0, 83, 0, 83, 0, 32, 0, 70, 0, 79, 0, 82, 0, 32, 0, 65, 0, 32, 0, 80, 0, 65, 0, 82, 0, 84, 0, 73, 0, 67,
+ 0, 85, 0, 76, 0, 65, 0, 82, 0, 32, 0, 80, 0, 85, 0, 82, 0, 80, 0, 79, 0, 83, 0, 69, 0, 32, 0, 65, 0, 78, 0, 68,
+ 0, 32, 0, 78, 0, 79, 0, 78, 0, 73, 0, 78, 0, 70, 0, 82, 0, 73, 0, 78, 0, 71, 0, 69, 0, 77, 0, 69, 0, 78, 0, 84,
+ 0, 32, 0, 79, 0, 70, 0, 32, 0, 67, 0, 79, 0, 80, 0, 89, 0, 82, 0, 73, 0, 71, 0, 72, 0, 84, 0, 44, 0, 32, 0, 80,
+ 0, 65, 0, 84, 0, 69, 0, 78, 0, 84, 0, 44, 0, 32, 0, 84, 0, 82, 0, 65, 0, 68, 0, 69, 0, 77, 0, 65, 0, 82, 0, 75,
+ 0, 44, 0, 32, 0, 79, 0, 82, 0, 32, 0, 79, 0, 84, 0, 72, 0, 69, 0, 82, 0, 32, 0, 82, 0, 73, 0, 71, 0, 72, 0, 84,
+ 0, 46, 0, 32, 0, 73, 0, 78, 0, 32, 0, 78, 0, 79, 0, 32, 0, 69, 0, 86, 0, 69, 0, 78, 0, 84, 0, 32, 0, 83, 0, 72,
+ 0, 65, 0, 76, 0, 76, 0, 32, 0, 66, 0, 73, 0, 84, 0, 83, 0, 84, 0, 82, 0, 69, 0, 65, 0, 77, 0, 32, 0, 79, 0, 82,
+ 0, 32, 0, 84, 0, 72, 0, 69, 0, 32, 0, 71, 0, 78, 0, 79, 0, 77, 0, 69, 0, 32, 0, 70, 0, 79, 0, 85, 0, 78, 0, 68,
+ 0, 65, 0, 84, 0, 73, 0, 79, 0, 78, 0, 32, 0, 66, 0, 69, 0, 32, 0, 76, 0, 73, 0, 65, 0, 66, 0, 76, 0, 69, 0, 32,
+ 0, 70, 0, 79, 0, 82, 0, 32, 0, 65, 0, 78, 0, 89, 0, 32, 0, 67, 0, 76, 0, 65, 0, 73, 0, 77, 0, 44, 0, 32, 0, 68,
+ 0, 65, 0, 77, 0, 65, 0, 71, 0, 69, 0, 83, 0, 32, 0, 79, 0, 82, 0, 32, 0, 79, 0, 84, 0, 72, 0, 69, 0, 82, 0, 32,
+ 0, 76, 0, 73, 0, 65, 0, 66, 0, 73, 0, 76, 0, 73, 0, 84, 0, 89, 0, 44, 0, 32, 0, 73, 0, 78, 0, 67, 0, 76, 0, 85,
+ 0, 68, 0, 73, 0, 78, 0, 71, 0, 32, 0, 65, 0, 78, 0, 89, 0, 32, 0, 71, 0, 69, 0, 78, 0, 69, 0, 82, 0, 65, 0, 76,
+ 0, 44, 0, 32, 0, 83, 0, 80, 0, 69, 0, 67, 0, 73, 0, 65, 0, 76, 0, 44, 0, 32, 0, 73, 0, 78, 0, 68, 0, 73, 0, 82,
+ 0, 69, 0, 67, 0, 84, 0, 44, 0, 32, 0, 73, 0, 78, 0, 67, 0, 73, 0, 68, 0, 69, 0, 78, 0, 84, 0, 65, 0, 76, 0, 44,
+ 0, 32, 0, 79, 0, 82, 0, 32, 0, 67, 0, 79, 0, 78, 0, 83, 0, 69, 0, 81, 0, 85, 0, 69, 0, 78, 0, 84, 0, 73, 0, 65,
+ 0, 76, 0, 32, 0, 68, 0, 65, 0, 77, 0, 65, 0, 71, 0, 69, 0, 83, 0, 44, 0, 32, 0, 87, 0, 72, 0, 69, 0, 84, 0, 72,
+ 0, 69, 0, 82, 0, 32, 0, 73, 0, 78, 0, 32, 0, 65, 0, 78, 0, 32, 0, 65, 0, 67, 0, 84, 0, 73, 0, 79, 0, 78, 0, 32,
+ 0, 79, 0, 70, 0, 32, 0, 67, 0, 79, 0, 78, 0, 84, 0, 82, 0, 65, 0, 67, 0, 84, 0, 44, 0, 32, 0, 84, 0, 79, 0, 82,
+ 0, 84, 0, 32, 0, 79, 0, 82, 0, 32, 0, 79, 0, 84, 0, 72, 0, 69, 0, 82, 0, 87, 0, 73, 0, 83, 0, 69, 0, 44, 0, 32,
+ 0, 65, 0, 82, 0, 73, 0, 83, 0, 73, 0, 78, 0, 71, 0, 32, 0, 70, 0, 82, 0, 79, 0, 77, 0, 44, 0, 32, 0, 79, 0, 85,
+ 0, 84, 0, 32, 0, 79, 0, 70, 0, 32, 0, 84, 0, 72, 0, 69, 0, 32, 0, 85, 0, 83, 0, 69, 0, 32, 0, 79, 0, 82, 0, 32,
+ 0, 73, 0, 78, 0, 65, 0, 66, 0, 73, 0, 76, 0, 73, 0, 84, 0, 89, 0, 32, 0, 84, 0, 79, 0, 32, 0, 85, 0, 83, 0, 69,
+ 0, 32, 0, 84, 0, 72, 0, 69, 0, 32, 0, 70, 0, 79, 0, 78, 0, 84, 0, 32, 0, 83, 0, 79, 0, 70, 0, 84, 0, 87, 0, 65,
+ 0, 82, 0, 69, 0, 32, 0, 79, 0, 82, 0, 32, 0, 70, 0, 82, 0, 79, 0, 77, 0, 32, 0, 79, 0, 84, 0, 72, 0, 69, 0, 82,
+ 0, 32, 0, 68, 0, 69, 0, 65, 0, 76, 0, 73, 0, 78, 0, 71, 0, 83, 0, 32, 0, 73, 0, 78, 0, 32, 0, 84, 0, 72, 0, 69,
+ 0, 32, 0, 70, 0, 79, 0, 78, 0, 84, 0, 32, 0, 83, 0, 79, 0, 70, 0, 84, 0, 87, 0, 65, 0, 82, 0, 69, 0, 46, 0, 10,
+ 0, 10, 0, 69, 0,120, 0, 99, 0,101, 0,112, 0,116, 0, 32, 0, 97, 0,115, 0, 32, 0, 99, 0,111, 0,110, 0,116, 0, 97,
+ 0,105, 0,110, 0,101, 0,100, 0, 32, 0,105, 0,110, 0, 32, 0,116, 0,104, 0,105, 0,115, 0, 32, 0,110, 0,111, 0,116,
+ 0,105, 0, 99, 0,101, 0, 44, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0,110, 0, 97, 0,109, 0,101, 0,115, 0, 32, 0,111,
+ 0,102, 0, 32, 0, 71, 0,110, 0,111, 0,109, 0,101, 0, 44, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0, 71, 0,110, 0,111,
+ 0,109, 0,101, 0, 32, 0, 70, 0,111, 0,117, 0,110, 0,100, 0, 97, 0,116, 0,105, 0,111, 0,110, 0, 44, 0, 32, 0, 97,
+ 0,110, 0,100, 0, 32, 0, 66, 0,105, 0,116, 0,115, 0,116, 0,114, 0,101, 0, 97, 0,109, 0, 32, 0, 73, 0,110, 0, 99,
+ 0, 46, 0, 44, 0, 32, 0,115, 0,104, 0, 97, 0,108, 0,108, 0, 32, 0,110, 0,111, 0,116, 0, 32, 0, 98, 0,101, 0, 32,
+ 0,117, 0,115, 0,101, 0,100, 0, 32, 0,105, 0,110, 0, 32, 0, 97, 0,100, 0,118, 0,101, 0,114, 0,116, 0,105, 0,115,
+ 0,105, 0,110, 0,103, 0, 32, 0,111, 0,114, 0, 32, 0,111, 0,116, 0,104, 0,101, 0,114, 0,119, 0,105, 0,115, 0,101,
+ 0, 32, 0,116, 0,111, 0, 32, 0,112, 0,114, 0,111, 0,109, 0,111, 0,116, 0,101, 0, 32, 0,116, 0,104, 0,101, 0, 32,
+ 0,115, 0, 97, 0,108, 0,101, 0, 44, 0, 32, 0,117, 0,115, 0,101, 0, 32, 0,111, 0,114, 0, 32, 0,111, 0,116, 0,104,
+ 0,101, 0,114, 0, 32, 0,100, 0,101, 0, 97, 0,108, 0,105, 0,110, 0,103, 0,115, 0, 32, 0,105, 0,110, 0, 32, 0,116,
+ 0,104, 0,105, 0,115, 0, 32, 0, 70, 0,111, 0,110, 0,116, 0, 32, 0, 83, 0,111, 0,102, 0,116, 0,119, 0, 97, 0,114,
+ 0,101, 0, 32, 0,119, 0,105, 0,116, 0,104, 0,111, 0,117, 0,116, 0, 32, 0,112, 0,114, 0,105, 0,111, 0,114, 0, 32,
+ 0,119, 0,114, 0,105, 0,116, 0,116, 0,101, 0,110, 0, 32, 0, 97, 0,117, 0,116, 0,104, 0,111, 0,114, 0,105, 0,122,
+ 0, 97, 0,116, 0,105, 0,111, 0,110, 0, 32, 0,102, 0,114, 0,111, 0,109, 0, 32, 0,116, 0,104, 0,101, 0, 32, 0, 71,
+ 0,110, 0,111, 0,109, 0,101, 0, 32, 0, 70, 0,111, 0,117, 0,110, 0,100, 0, 97, 0,116, 0,105, 0,111, 0,110, 0, 32,
+ 0,111, 0,114, 0, 32, 0, 66, 0,105, 0,116, 0,115, 0,116, 0,114, 0,101, 0, 97, 0,109, 0, 32, 0, 73, 0,110, 0, 99,
+ 0, 46, 0, 44, 0, 32, 0,114, 0,101, 0,115, 0,112, 0,101, 0, 99, 0,116, 0,105, 0,118, 0,101, 0,108, 0,121, 0, 46,
+ 0, 32, 0, 70, 0,111, 0,114, 0, 32, 0,102, 0,117, 0,114, 0,116, 0,104, 0,101, 0,114, 0, 32, 0,105, 0,110, 0,102,
+ 0,111, 0,114, 0,109, 0, 97, 0,116, 0,105, 0,111, 0,110, 0, 44, 0, 32, 0, 99, 0,111, 0,110, 0,116, 0, 97, 0, 99,
+ 0,116, 0, 58, 0, 32, 0,102, 0,111, 0,110, 0,116, 0,115, 0, 32, 0, 97, 0,116, 0, 32, 0,103, 0,110, 0,111, 0,109,
+ 0,101, 0, 32, 0,100, 0,111, 0,116, 0, 32, 0,111, 0,114, 0,103, 0, 46, 0, 32, 0, 10, 0, 0, 70,111,110,116,115, 32,
+ 97,114,101, 32, 40, 99, 41, 32, 66,105,116,115,116,114,101, 97,109, 32, 40,115,101,101, 32, 98,101,108,111,119, 41, 46, 32, 68,
+101,106, 97, 86,117, 32, 99,104, 97,110,103,101,115, 32, 97,114,101, 32,105,110, 32,112,117, 98,108,105, 99, 32,100,111,109, 97,
+105,110, 46, 10, 10, 66,105,116,115,116,114,101, 97,109, 32, 86,101,114, 97, 32, 70,111,110,116,115, 32, 67,111,112,121,114,105,
+103,104,116, 10, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45,
+ 45, 45, 10, 10, 67,111,112,121,114,105,103,104,116, 32, 40, 99, 41, 32, 50, 48, 48, 51, 32, 98,121, 32, 66,105,116,115,116,114,
+101, 97,109, 44, 32, 73,110, 99, 46, 32, 65,108,108, 32, 82,105,103,104,116,115, 32, 82,101,115,101,114,118,101,100, 46, 32, 66,
+105,116,115,116,114,101, 97,109, 32, 86,101,114, 97, 32,105,115, 32, 97, 32,116,114, 97,100,101,109, 97,114,107, 32,111,102, 32,
+ 66,105,116,115,116,114,101, 97,109, 44, 32, 73,110, 99, 46, 10, 10, 80,101,114,109,105,115,115,105,111,110, 32,105,115, 32,104,
+101,114,101, 98,121, 32,103,114, 97,110,116,101,100, 44, 32,102,114,101,101, 32,111,102, 32, 99,104, 97,114,103,101, 44, 32,116,
+111, 32, 97,110,121, 32,112,101,114,115,111,110, 32,111, 98,116, 97,105,110,105,110,103, 32, 97, 32, 99,111,112,121, 32,111,102,
+ 32,116,104,101, 32,102,111,110,116,115, 32, 97, 99, 99,111,109,112, 97,110,121,105,110,103, 32,116,104,105,115, 32,108,105, 99,
+101,110,115,101, 32, 40, 34, 70,111,110,116,115, 34, 41, 32, 97,110,100, 32, 97,115,115,111, 99,105, 97,116,101,100, 32,100,111,
+ 99,117,109,101,110,116, 97,116,105,111,110, 32,102,105,108,101,115, 32, 40,116,104,101, 32, 34, 70,111,110,116, 32, 83,111,102,
+116,119, 97,114,101, 34, 41, 44, 32,116,111, 32,114,101,112,114,111,100,117, 99,101, 32, 97,110,100, 32,100,105,115,116,114,105,
+ 98,117,116,101, 32,116,104,101, 32, 70,111,110,116, 32, 83,111,102,116,119, 97,114,101, 44, 32,105,110, 99,108,117,100,105,110,
+103, 32,119,105,116,104,111,117,116, 32,108,105,109,105,116, 97,116,105,111,110, 32,116,104,101, 32,114,105,103,104,116,115, 32,
+116,111, 32,117,115,101, 44, 32, 99,111,112,121, 44, 32,109,101,114,103,101, 44, 32,112,117, 98,108,105,115,104, 44, 32,100,105,
+115,116,114,105, 98,117,116,101, 44, 32, 97,110,100, 47,111,114, 32,115,101,108,108, 32, 99,111,112,105,101,115, 32,111,102, 32,
+116,104,101, 32, 70,111,110,116, 32, 83,111,102,116,119, 97,114,101, 44, 32, 97,110,100, 32,116,111, 32,112,101,114,109,105,116,
+ 32,112,101,114,115,111,110,115, 32,116,111, 32,119,104,111,109, 32,116,104,101, 32, 70,111,110,116, 32, 83,111,102,116,119, 97,
+114,101, 32,105,115, 32,102,117,114,110,105,115,104,101,100, 32,116,111, 32,100,111, 32,115,111, 44, 32,115,117, 98,106,101, 99,
+116, 32,116,111, 32,116,104,101, 32,102,111,108,108,111,119,105,110,103, 32, 99,111,110,100,105,116,105,111,110,115, 58, 10, 10,
+ 84,104,101, 32, 97, 98,111,118,101, 32, 99,111,112,121,114,105,103,104,116, 32, 97,110,100, 32,116,114, 97,100,101,109, 97,114,
+107, 32,110,111,116,105, 99,101,115, 32, 97,110,100, 32,116,104,105,115, 32,112,101,114,109,105,115,115,105,111,110, 32,110,111,
+116,105, 99,101, 32,115,104, 97,108,108, 32, 98,101, 32,105,110, 99,108,117,100,101,100, 32,105,110, 32, 97,108,108, 32, 99,111,
+112,105,101,115, 32,111,102, 32,111,110,101, 32,111,114, 32,109,111,114,101, 32,111,102, 32,116,104,101, 32, 70,111,110,116, 32,
+ 83,111,102,116,119, 97,114,101, 32,116,121,112,101,102, 97, 99,101,115, 46, 10, 10, 84,104,101, 32, 70,111,110,116, 32, 83,111,
+102,116,119, 97,114,101, 32,109, 97,121, 32, 98,101, 32,109,111,100,105,102,105,101,100, 44, 32, 97,108,116,101,114,101,100, 44,
+ 32,111,114, 32, 97,100,100,101,100, 32,116,111, 44, 32, 97,110,100, 32,105,110, 32,112, 97,114,116,105, 99,117,108, 97,114, 32,
+116,104,101, 32,100,101,115,105,103,110,115, 32,111,102, 32,103,108,121,112,104,115, 32,111,114, 32, 99,104, 97,114, 97, 99,116,
+101,114,115, 32,105,110, 32,116,104,101, 32, 70,111,110,116,115, 32,109, 97,121, 32, 98,101, 32,109,111,100,105,102,105,101,100,
+ 32, 97,110,100, 32, 97,100,100,105,116,105,111,110, 97,108, 32,103,108,121,112,104,115, 32,111,114, 32, 32,111,114, 32, 99,104,
+ 97,114, 97, 99,116,101,114,115, 32,109, 97,121, 32, 98,101, 32, 97,100,100,101,100, 32,116,111, 32,116,104,101, 32, 70,111,110,
+116,115, 44, 32,111,110,108,121, 32,105,102, 32,116,104,101, 32,102,111,110,116,115, 32, 97,114,101, 32,114,101,110, 97,109,101,
+100, 32,116,111, 32,110, 97,109,101,115, 32,110,111,116, 32, 99,111,110,116, 97,105,110,105,110,103, 32,101,105,116,104,101,114,
+ 32,116,104,101, 32,119,111,114,100,115, 32, 34, 66,105,116,115,116,114,101, 97,109, 34, 32,111,114, 32,116,104,101, 32,119,111,
+114,100, 32, 34, 86,101,114, 97, 34, 46, 10, 10, 84,104,105,115, 32, 76,105, 99,101,110,115,101, 32, 98,101, 99,111,109,101,115,
+ 32,110,117,108,108, 32, 97,110,100, 32,118,111,105,100, 32,116,111, 32,116,104,101, 32,101,120,116,101,110,116, 32, 97,112,112,
+108,105, 99, 97, 98,108,101, 32,116,111, 32, 70,111,110,116,115, 32,111,114, 32, 70,111,110,116, 32, 83,111,102,116,119, 97,114,
+101, 32,116,104, 97,116, 32,104, 97,115, 32, 98,101,101,110, 32,109,111,100,105,102,105,101,100, 32, 97,110,100, 32,105,115, 32,
+100,105,115,116,114,105, 98,117,116,101,100, 32,117,110,100,101,114, 32,116,104,101, 32, 34, 66,105,116,115,116,114,101, 97,109,
+ 32, 86,101,114, 97, 34, 32,110, 97,109,101,115, 46, 10, 10, 84,104,101, 32, 70,111,110,116, 32, 83,111,102,116,119, 97,114,101,
+ 32,109, 97,121, 32, 98,101, 32,115,111,108,100, 32, 97,115, 32,112, 97,114,116, 32,111,102, 32, 97, 32,108, 97,114,103,101,114,
+ 32,115,111,102,116,119, 97,114,101, 32,112, 97, 99,107, 97,103,101, 32, 98,117,116, 32,110,111, 32, 99,111,112,121, 32,111,102,
+ 32,111,110,101, 32,111,114, 32,109,111,114,101, 32,111,102, 32,116,104,101, 32, 70,111,110,116, 32, 83,111,102,116,119, 97,114,
+101, 32,116,121,112,101,102, 97, 99,101,115, 32,109, 97,121, 32, 98,101, 32,115,111,108,100, 32, 98,121, 32,105,116,115,101,108,
+102, 46, 10, 10, 84, 72, 69, 32, 70, 79, 78, 84, 32, 83, 79, 70, 84, 87, 65, 82, 69, 32, 73, 83, 32, 80, 82, 79, 86, 73, 68, 69,
+ 68, 32, 34, 65, 83, 32, 73, 83, 34, 44, 32, 87, 73, 84, 72, 79, 85, 84, 32, 87, 65, 82, 82, 65, 78, 84, 89, 32, 79, 70, 32, 65,
+ 78, 89, 32, 75, 73, 78, 68, 44, 32, 69, 88, 80, 82, 69, 83, 83, 32, 79, 82, 32, 73, 77, 80, 76, 73, 69, 68, 44, 32, 73, 78, 67,
+ 76, 85, 68, 73, 78, 71, 32, 66, 85, 84, 32, 78, 79, 84, 32, 76, 73, 77, 73, 84, 69, 68, 32, 84, 79, 32, 65, 78, 89, 32, 87, 65,
+ 82, 82, 65, 78, 84, 73, 69, 83, 32, 79, 70, 32, 77, 69, 82, 67, 72, 65, 78, 84, 65, 66, 73, 76, 73, 84, 89, 44, 32, 70, 73, 84,
+ 78, 69, 83, 83, 32, 70, 79, 82, 32, 65, 32, 80, 65, 82, 84, 73, 67, 85, 76, 65, 82, 32, 80, 85, 82, 80, 79, 83, 69, 32, 65, 78,
+ 68, 32, 78, 79, 78, 73, 78, 70, 82, 73, 78, 71, 69, 77, 69, 78, 84, 32, 79, 70, 32, 67, 79, 80, 89, 82, 73, 71, 72, 84, 44, 32,
+ 80, 65, 84, 69, 78, 84, 44, 32, 84, 82, 65, 68, 69, 77, 65, 82, 75, 44, 32, 79, 82, 32, 79, 84, 72, 69, 82, 32, 82, 73, 71, 72,
+ 84, 46, 32, 73, 78, 32, 78, 79, 32, 69, 86, 69, 78, 84, 32, 83, 72, 65, 76, 76, 32, 66, 73, 84, 83, 84, 82, 69, 65, 77, 32, 79,
+ 82, 32, 84, 72, 69, 32, 71, 78, 79, 77, 69, 32, 70, 79, 85, 78, 68, 65, 84, 73, 79, 78, 32, 66, 69, 32, 76, 73, 65, 66, 76, 69,
+ 32, 70, 79, 82, 32, 65, 78, 89, 32, 67, 76, 65, 73, 77, 44, 32, 68, 65, 77, 65, 71, 69, 83, 32, 79, 82, 32, 79, 84, 72, 69, 82,
+ 32, 76, 73, 65, 66, 73, 76, 73, 84, 89, 44, 32, 73, 78, 67, 76, 85, 68, 73, 78, 71, 32, 65, 78, 89, 32, 71, 69, 78, 69, 82, 65,
+ 76, 44, 32, 83, 80, 69, 67, 73, 65, 76, 44, 32, 73, 78, 68, 73, 82, 69, 67, 84, 44, 32, 73, 78, 67, 73, 68, 69, 78, 84, 65, 76,
+ 44, 32, 79, 82, 32, 67, 79, 78, 83, 69, 81, 85, 69, 78, 84, 73, 65, 76, 32, 68, 65, 77, 65, 71, 69, 83, 44, 32, 87, 72, 69, 84,
+ 72, 69, 82, 32, 73, 78, 32, 65, 78, 32, 65, 67, 84, 73, 79, 78, 32, 79, 70, 32, 67, 79, 78, 84, 82, 65, 67, 84, 44, 32, 84, 79,
+ 82, 84, 32, 79, 82, 32, 79, 84, 72, 69, 82, 87, 73, 83, 69, 44, 32, 65, 82, 73, 83, 73, 78, 71, 32, 70, 82, 79, 77, 44, 32, 79,
+ 85, 84, 32, 79, 70, 32, 84, 72, 69, 32, 85, 83, 69, 32, 79, 82, 32, 73, 78, 65, 66, 73, 76, 73, 84, 89, 32, 84, 79, 32, 85, 83,
+ 69, 32, 84, 72, 69, 32, 70, 79, 78, 84, 32, 83, 79, 70, 84, 87, 65, 82, 69, 32, 79, 82, 32, 70, 82, 79, 77, 32, 79, 84, 72, 69,
+ 82, 32, 68, 69, 65, 76, 73, 78, 71, 83, 32, 73, 78, 32, 84, 72, 69, 32, 70, 79, 78, 84, 32, 83, 79, 70, 84, 87, 65, 82, 69, 46,
+ 10, 10, 69,120, 99,101,112,116, 32, 97,115, 32, 99,111,110,116, 97,105,110,101,100, 32,105,110, 32,116,104,105,115, 32,110,111,
+116,105, 99,101, 44, 32,116,104,101, 32,110, 97,109,101,115, 32,111,102, 32, 71,110,111,109,101, 44, 32,116,104,101, 32, 71,110,
+111,109,101, 32, 70,111,117,110,100, 97,116,105,111,110, 44, 32, 97,110,100, 32, 66,105,116,115,116,114,101, 97,109, 32, 73,110,
+ 99, 46, 44, 32,115,104, 97,108,108, 32,110,111,116, 32, 98,101, 32,117,115,101,100, 32,105,110, 32, 97,100,118,101,114,116,105,
+115,105,110,103, 32,111,114, 32,111,116,104,101,114,119,105,115,101, 32,116,111, 32,112,114,111,109,111,116,101, 32,116,104,101,
+ 32,115, 97,108,101, 44, 32,117,115,101, 32,111,114, 32,111,116,104,101,114, 32,100,101, 97,108,105,110,103,115, 32,105,110, 32,
+116,104,105,115, 32, 70,111,110,116, 32, 83,111,102,116,119, 97,114,101, 32,119,105,116,104,111,117,116, 32,112,114,105,111,114,
+ 32,119,114,105,116,116,101,110, 32, 97,117,116,104,111,114,105,122, 97,116,105,111,110, 32,102,114,111,109, 32,116,104,101, 32,
+ 71,110,111,109,101, 32, 70,111,117,110,100, 97,116,105,111,110, 32,111,114, 32, 66,105,116,115,116,114,101, 97,109, 32, 73,110,
+ 99, 46, 44, 32,114,101,115,112,101, 99,116,105,118,101,108,121, 46, 32, 70,111,114, 32,102,117,114,116,104,101,114, 32,105,110,
+102,111,114,109, 97,116,105,111,110, 44, 32, 99,111,110,116, 97, 99,116, 58, 32,102,111,110,116,115, 32, 97,116, 32,103,110,111,
+109,101, 32,100,111,116, 32,111,114,103, 46, 32, 10, 0, 0,104, 0,116, 0,116, 0,112, 0, 58, 0, 47, 0, 47, 0,100, 0,101,
+ 0,106, 0, 97, 0,118, 0,117, 0, 46, 0,115, 0,111, 0,117, 0,114, 0, 99, 0,101, 0,102, 0,111, 0,114, 0,103, 0,101,
+ 0, 46, 0,110, 0,101, 0,116, 0, 47, 0,119, 0,105, 0,107, 0,105, 0, 47, 0,105, 0,110, 0,100, 0,101, 0,120, 0, 46,
+ 0,112, 0,104, 0,112, 0, 47, 0, 76, 0,105, 0, 99, 0,101, 0,110, 0,115, 0,101, 0, 0,104,116,116,112, 58, 47, 47,100,
+101,106, 97,118,117, 46,115,111,117,114, 99,101,102,111,114,103,101, 46,110,101,116, 47,119,105,107,105, 47,105,110,100,101,120,
+ 46,112,104,112, 47, 76,105, 99,101,110,115,101, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,255,126, 0, 90, 0, 0, 0, 1,
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,210, 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6,
+ 0, 7, 0, 8, 0, 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 16, 0, 17, 0, 18, 0, 19, 0, 20, 0, 21, 0, 22,
+ 0, 23, 0, 24, 0, 25, 0, 26, 0, 27, 0, 28, 0, 29, 0, 30, 0, 31, 0, 32, 0, 33, 0, 34, 0, 35, 0, 36, 0, 37, 0, 38,
+ 0, 39, 0, 40, 0, 41, 0, 42, 0, 43, 0, 44, 0, 45, 0, 46, 0, 47, 0, 48, 0, 49, 0, 50, 0, 51, 0, 52, 0, 53, 0, 54,
+ 0, 55, 0, 56, 0, 57, 0, 58, 0, 59, 0, 60, 0, 61, 0, 62, 0, 63, 0, 64, 0, 65, 0, 66, 0, 67, 0, 68, 0, 69, 0, 70,
+ 0, 71, 0, 72, 0, 73, 0, 74, 0, 75, 0, 76, 0, 77, 0, 78, 0, 79, 0, 80, 0, 81, 0, 82, 0, 83, 0, 84, 0, 85, 0, 86,
+ 0, 87, 0, 88, 0, 89, 0, 90, 0, 91, 0, 92, 0, 93, 0, 94, 0, 95, 0, 96, 0, 97, 0,172, 0,163, 0,132, 0,133, 0,189,
+ 0,150, 0,232, 0,134, 0,142, 0,139, 0,157, 0,169, 0,164, 1, 2, 0,138, 0,218, 0,131, 0,147, 0,242, 0,243, 0,141,
+ 0,151, 0,136, 0,195, 0,222, 0,241, 0,158, 0,170, 0,245, 0,244, 0,246, 0,162, 0,173, 0,201, 0,199, 0,174, 0, 98,
+ 0, 99, 0,144, 0,100, 0,203, 0,101, 0,200, 0,202, 0,207, 0,204, 0,205, 0,206, 0,233, 0,102, 0,211, 0,208, 0,209,
+ 0,175, 0,103, 0,240, 0,145, 0,214, 0,212, 0,213, 0,104, 0,235, 0,237, 0,137, 0,106, 0,105, 0,107, 0,109, 0,108,
+ 0,110, 0,160, 0,111, 0,113, 0,112, 0,114, 0,115, 0,117, 0,116, 0,118, 0,119, 0,234, 0,120, 0,122, 0,121, 0,123,
+ 0,125, 0,124, 0,184, 0,161, 0,127, 0,126, 0,128, 0,129, 0,236, 0,238, 0,186, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7,
+ 1, 8, 0,253, 0,254, 1, 9, 1, 10, 1, 11, 1, 12, 0,255, 1, 0, 1, 13, 1, 14, 1, 15, 1, 1, 1, 16, 1, 17, 1, 18,
+ 1, 19, 1, 20, 1, 21, 1, 22, 1, 23, 1, 24, 1, 25, 1, 26, 1, 27, 0,248, 0,249, 1, 28, 1, 29, 1, 30, 1, 31, 1, 32,
+ 1, 33, 1, 34, 1, 35, 1, 36, 1, 37, 1, 38, 1, 39, 1, 40, 1, 41, 1, 42, 1, 43, 0,250, 0,215, 1, 44, 1, 45, 1, 46,
+ 1, 47, 1, 48, 1, 49, 1, 50, 1, 51, 1, 52, 1, 53, 1, 54, 1, 55, 1, 56, 1, 57, 1, 58, 0,226, 0,227, 1, 59, 1, 60,
+ 1, 61, 1, 62, 1, 63, 1, 64, 1, 65, 1, 66, 1, 67, 1, 68, 1, 69, 1, 70, 1, 71, 1, 72, 1, 73, 0,176, 0,177, 1, 74,
+ 1, 75, 1, 76, 1, 77, 1, 78, 1, 79, 1, 80, 1, 81, 1, 82, 1, 83, 0,251, 0,252, 0,228, 0,229, 1, 84, 1, 85, 1, 86,
+ 1, 87, 1, 88, 1, 89, 1, 90, 1, 91, 1, 92, 1, 93, 1, 94, 1, 95, 1, 96, 1, 97, 1, 98, 1, 99, 1,100, 1,101, 1,102,
+ 1,103, 1,104, 1,105, 0,187, 1,106, 1,107, 1,108, 1,109, 0,230, 0,231, 1,110, 1,111, 1,112, 1,113, 1,114, 1,115,
+ 1,116, 1,117, 1,118, 1,119, 1,120, 1,121, 1,122, 1,123, 1,124, 1,125, 1,126, 1,127, 1,128, 0,166, 1,129, 1,130,
+ 1,131, 1,132, 1,133, 1,134, 1,135, 1,136, 1,137, 1,138, 1,139, 1,140, 1,141, 1,142, 1,143, 1,144, 1,145, 1,146,
+ 1,147, 1,148, 1,149, 1,150, 1,151, 1,152, 1,153, 1,154, 1,155, 1,156, 1,157, 1,158, 1,159, 1,160, 1,161, 1,162,
+ 1,163, 1,164, 1,165, 1,166, 1,167, 1,168, 1,169, 1,170, 1,171, 1,172, 1,173, 1,174, 1,175, 1,176, 1,177, 1,178,
+ 1,179, 1,180, 1,181, 1,182, 1,183, 1,184, 1,185, 1,186, 1,187, 1,188, 1,189, 1,190, 1,191, 1,192, 1,193, 1,194,
+ 1,195, 1,196, 1,197, 1,198, 1,199, 1,200, 1,201, 1,202, 1,203, 1,204, 1,205, 1,206, 1,207, 1,208, 1,209, 1,210,
+ 1,211, 1,212, 1,213, 1,214, 1,215, 1,216, 1,217, 1,218, 1,219, 1,220, 1,221, 1,222, 1,223, 1,224, 1,225, 1,226,
+ 1,227, 1,228, 1,229, 1,230, 1,231, 1,232, 1,233, 1,234, 1,235, 1,236, 1,237, 1,238, 1,239, 1,240, 1,241, 1,242,
+ 1,243, 1,244, 1,245, 1,246, 1,247, 1,248, 1,249, 1,250, 1,251, 1,252, 1,253, 1,254, 1,255, 2, 0, 2, 1, 2, 2,
+ 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, 13, 2, 14, 2, 15, 2, 16, 2, 17, 2, 18,
+ 2, 19, 2, 20, 2, 21, 2, 22, 2, 23, 2, 24, 2, 25, 2, 26, 2, 27, 2, 28, 2, 29, 2, 30, 2, 31, 2, 32, 2, 33, 2, 34,
+ 2, 35, 2, 36, 2, 37, 2, 38, 2, 39, 2, 40, 2, 41, 2, 42, 2, 43, 2, 44, 2, 45, 2, 46, 2, 47, 2, 48, 2, 49, 2, 50,
+ 2, 51, 2, 52, 2, 53, 2, 54, 2, 55, 2, 56, 2, 57, 2, 58, 2, 59, 2, 60, 2, 61, 2, 62, 2, 63, 2, 64, 2, 65, 2, 66,
+ 2, 67, 2, 68, 2, 69, 2, 70, 2, 71, 2, 72, 2, 73, 2, 74, 2, 75, 2, 76, 2, 77, 2, 78, 2, 79, 2, 80, 2, 81, 2, 82,
+ 2, 83, 2, 84, 2, 85, 2, 86, 2, 87, 2, 88, 2, 89, 2, 90, 2, 91, 2, 92, 2, 93, 2, 94, 2, 95, 2, 96, 2, 97, 2, 98,
+ 2, 99, 2,100, 2,101, 2,102, 2,103, 2,104, 2,105, 2,106, 2,107, 2,108, 2,109, 2,110, 2,111, 2,112, 2,113, 2,114,
+ 2,115, 2,116, 2,117, 2,118, 2,119, 2,120, 2,121, 2,122, 2,123, 2,124, 2,125, 2,126, 2,127, 2,128, 2,129, 2,130,
+ 2,131, 2,132, 2,133, 2,134, 2,135, 2,136, 2,137, 2,138, 0,216, 0,225, 2,139, 2,140, 2,141, 2,142, 2,143, 2,144,
+ 2,145, 2,146, 2,147, 0,219, 0,220, 0,221, 0,224, 0,217, 0,223, 2,148, 2,149, 2,150, 2,151, 2,152, 2,153, 2,154,
+ 2,155, 2,156, 2,157, 2,158, 2,159, 2,160, 2,161, 2,162, 2,163, 2,164, 2,165, 2,166, 2,167, 2,168, 2,169, 2,170,
+ 2,171, 2,172, 2,173, 2,174, 2,175, 2,176, 2,177, 2,178, 2,179, 2,180, 2,181, 2,182, 2,183, 2,184, 2,185, 2,186,
+ 2,187, 2,188, 2,189, 2,190, 2,191, 2,192, 2,193, 2,194, 2,195, 2,196, 2,197, 2,198, 2,199, 2,200, 2,201, 2,202,
+ 2,203, 2,204, 2,205, 2,206, 2,207, 2,208, 2,209, 2,210, 2,211, 2,212, 2,213, 2,214, 2,215, 2,216, 2,217, 2,218,
+ 2,219, 2,220, 2,221, 2,222, 2,223, 2,224, 2,225, 2,226, 2,227, 2,228, 2,229, 2,230, 2,231, 2,232, 2,233, 2,234,
+ 2,235, 2,236, 2,237, 2,238, 2,239, 2,240, 2,241, 2,242, 2,243, 2,244, 2,245, 2,246, 2,247, 2,248, 2,249, 2,250,
+ 2,251, 2,252, 2,253, 2,254, 2,255, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, 8, 0,159, 3, 9,
+ 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, 15, 3, 16, 3, 17, 3, 18, 3, 19, 3, 20, 3, 21, 3, 22, 3, 23, 3, 24, 3, 25,
+ 3, 26, 3, 27, 3, 28, 3, 29, 3, 30, 0,155, 3, 31, 3, 32, 3, 33, 3, 34, 3, 35, 3, 36, 3, 37, 3, 38, 3, 39, 3, 40,
+ 3, 41, 3, 42, 3, 43, 3, 44, 3, 45, 3, 46, 3, 47, 3, 48, 3, 49, 3, 50, 3, 51, 3, 52, 3, 53, 3, 54, 3, 55, 3, 56,
+ 3, 57, 3, 58, 3, 59, 3, 60, 3, 61, 3, 62, 3, 63, 3, 64, 3, 65, 3, 66, 3, 67, 3, 68, 3, 69, 3, 70, 3, 71, 3, 72,
+ 3, 73, 3, 74, 3, 75, 3, 76, 3, 77, 3, 78, 3, 79, 3, 80, 3, 81, 3, 82, 3, 83, 3, 84, 3, 85, 3, 86, 3, 87, 3, 88,
+ 3, 89, 3, 90, 3, 91, 3, 92, 3, 93, 3, 94, 3, 95, 3, 96, 3, 97, 3, 98, 3, 99, 3,100, 3,101, 3,102, 3,103, 3,104,
+ 3,105, 3,106, 3,107, 3,108, 3,109, 3,110, 3,111, 3,112, 3,113, 3,114, 3,115, 3,116, 3,117, 3,118, 3,119, 3,120,
+ 3,121, 3,122, 3,123, 3,124, 3,125, 3,126, 3,127, 3,128, 3,129, 3,130, 3,131, 3,132, 3,133, 3,134, 3,135, 3,136,
+ 3,137, 3,138, 3,139, 3,140, 3,141, 3,142, 3,143, 3,144, 3,145, 3,146, 3,147, 3,148, 3,149, 3,150, 3,151, 3,152,
+ 3,153, 3,154, 3,155, 3,156, 3,157, 3,158, 3,159, 3,160, 3,161, 3,162, 3,163, 3,164, 3,165, 3,166, 3,167, 3,168,
+ 3,169, 3,170, 3,171, 3,172, 3,173, 3,174, 3,175, 3,176, 3,177, 3,178, 3,179, 3,180, 3,181, 3,182, 3,183, 3,184,
+ 3,185, 3,186, 3,187, 3,188, 3,189, 3,190, 3,191, 3,192, 3,193, 3,194, 3,195, 3,196, 3,197, 3,198, 3,199, 3,200,
+ 3,201, 3,202, 3,203, 3,204, 3,205, 3,206, 3,207, 3,208, 3,209, 3,210, 3,211, 3,212, 3,213, 3,214, 3,215, 3,216,
+ 3,217, 3,218, 3,219, 3,220, 3,221, 3,222, 3,223, 3,224, 3,225, 3,226, 3,227, 3,228, 3,229, 3,230, 3,231, 3,232,
+ 3,233, 3,234, 3,235, 3,236, 3,237, 3,238, 3,239, 3,240, 3,241, 3,242, 3,243, 3,244, 3,245, 3,246, 3,247, 3,248,
+ 3,249, 3,250, 3,251, 3,252, 3,253, 3,254, 3,255, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4, 5, 4, 6, 4, 7, 4, 8,
+ 4, 9, 4, 10, 4, 11, 4, 12, 4, 13, 4, 14, 4, 15, 4, 16, 4, 17, 4, 18, 4, 19, 4, 20, 4, 21, 4, 22, 4, 23, 4, 24,
+ 4, 25, 4, 26, 4, 27, 4, 28, 4, 29, 4, 30, 4, 31, 4, 32, 4, 33, 4, 34, 4, 35, 4, 36, 4, 37, 4, 38, 4, 39, 4, 40,
+ 4, 41, 4, 42, 4, 43, 4, 44, 4, 45, 4, 46, 4, 47, 4, 48, 4, 49, 4, 50, 4, 51, 4, 52, 4, 53, 4, 54, 4, 55, 4, 56,
+ 4, 57, 4, 58, 4, 59, 4, 60, 4, 61, 4, 62, 4, 63, 4, 64, 4, 65, 4, 66, 4, 67, 4, 68, 4, 69, 4, 70, 4, 71, 4, 72,
+ 4, 73, 4, 74, 4, 75, 4, 76, 4, 77, 4, 78, 4, 79, 4, 80, 4, 81, 4, 82, 4, 83, 4, 84, 4, 85, 4, 86, 4, 87, 4, 88,
+ 4, 89, 4, 90, 4, 91, 4, 92, 4, 93, 4, 94, 4, 95, 4, 96, 4, 97, 4, 98, 4, 99, 4,100, 4,101, 4,102, 4,103, 4,104,
+ 4,105, 4,106, 4,107, 4,108, 4,109, 4,110, 4,111, 4,112, 4,113, 4,114, 4,115, 4,116, 4,117, 4,118, 4,119, 4,120,
+ 4,121, 4,122, 4,123, 4,124, 4,125, 4,126, 4,127, 4,128, 4,129, 4,130, 4,131, 4,132, 4,133, 4,134, 4,135, 4,136,
+ 4,137, 4,138, 4,139, 4,140, 4,141, 4,142, 4,143, 4,144, 4,145, 4,146, 4,147, 4,148, 4,149, 4,150, 4,151, 4,152,
+ 4,153, 4,154, 4,155, 4,156, 4,157, 4,158, 4,159, 4,160, 4,161, 4,162, 4,163, 4,164, 4,165, 4,166, 4,167, 4,168,
+ 4,169, 4,170, 4,171, 4,172, 4,173, 4,174, 4,175, 4,176, 4,177, 4,178, 4,179, 4,180, 4,181, 4,182, 4,183, 4,184,
+ 4,185, 4,186, 4,187, 4,188, 4,189, 4,190, 4,191, 4,192, 4,193, 4,194, 4,195, 4,196, 4,197, 4,198, 4,199, 4,200,
+ 4,201, 4,202, 4,203, 4,204, 4,205, 4,206, 4,207, 4,208, 4,209, 4,210, 4,211, 4,212, 4,213, 4,214, 4,215, 4,216,
+ 4,217, 4,218, 4,219, 4,220, 4,221, 4,222, 4,223, 4,224, 4,225, 4,226, 4,227, 4,228, 4,229, 4,230, 4,231, 4,232,
+ 4,233, 4,234, 4,235, 4,236, 4,237, 4,238, 4,239, 4,240, 4,241, 4,242, 4,243, 4,244, 4,245, 4,246, 4,247, 4,248,
+ 4,249, 4,250, 4,251, 4,252, 4,253, 4,254, 4,255, 5, 0, 5, 1, 5, 2, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, 5, 8,
+ 5, 9, 5, 10, 5, 11, 5, 12, 5, 13, 5, 14, 5, 15, 5, 16, 5, 17, 5, 18, 5, 19, 5, 20, 5, 21, 5, 22, 5, 23, 5, 24,
+ 5, 25, 5, 26, 5, 27, 5, 28, 5, 29, 5, 30, 5, 31, 5, 32, 5, 33, 5, 34, 5, 35, 5, 36, 5, 37, 5, 38, 5, 39, 5, 40,
+ 5, 41, 5, 42, 5, 43, 5, 44, 5, 45, 5, 46, 5, 47, 5, 48, 5, 49, 5, 50, 5, 51, 5, 52, 5, 53, 5, 54, 5, 55, 5, 56,
+ 5, 57, 5, 58, 5, 59, 5, 60, 5, 61, 5, 62, 5, 63, 5, 64, 5, 65, 5, 66, 5, 67, 5, 68, 5, 69, 5, 70, 5, 71, 5, 72,
+ 5, 73, 5, 74, 5, 75, 5, 76, 5, 77, 5, 78, 5, 79, 5, 80, 5, 81, 5, 82, 5, 83, 5, 84, 5, 85, 5, 86, 5, 87, 5, 88,
+ 5, 89, 5, 90, 5, 91, 5, 92, 5, 93, 5, 94, 5, 95, 5, 96, 5, 97, 5, 98, 5, 99, 5,100, 5,101, 5,102, 5,103, 5,104,
+ 5,105, 5,106, 5,107, 5,108, 5,109, 5,110, 5,111, 5,112, 5,113, 5,114, 5,115, 5,116, 5,117, 5,118, 5,119, 5,120,
+ 5,121, 5,122, 5,123, 5,124, 5,125, 5,126, 5,127, 5,128, 5,129, 5,130, 5,131, 5,132, 5,133, 5,134, 5,135, 5,136,
+ 5,137, 5,138, 5,139, 5,140, 5,141, 5,142, 5,143, 5,144, 5,145, 5,146, 5,147, 5,148, 5,149, 5,150, 5,151, 5,152,
+ 5,153, 5,154, 5,155, 5,156, 5,157, 5,158, 5,159, 5,160, 5,161, 5,162, 5,163, 5,164, 5,165, 5,166, 5,167, 5,168,
+ 5,169, 5,170, 5,171, 5,172, 5,173, 5,174, 5,175, 5,176, 5,177, 5,178, 5,179, 5,180, 5,181, 5,182, 5,183, 5,184,
+ 5,185, 5,186, 5,187, 5,188, 5,189, 5,190, 5,191, 5,192, 5,193, 5,194, 5,195, 5,196, 5,197, 5,198, 5,199, 5,200,
+ 5,201, 5,202, 5,203, 5,204, 5,205, 5,206, 5,207, 5,208, 5,209, 5,210, 5,211, 5,212, 5,213, 5,214, 5,215, 5,216,
+ 5,217, 5,218, 5,219, 5,220, 5,221, 5,222, 5,223, 5,224, 5,225, 5,226, 5,227, 5,228, 5,229, 5,230, 5,231, 5,232,
+ 5,233, 5,234, 5,235, 5,236, 5,237, 5,238, 5,239, 5,240, 5,241, 5,242, 5,243, 5,244, 5,245, 5,246, 5,247, 5,248,
+ 5,249, 5,250, 5,251, 5,252, 5,253, 5,254, 5,255, 6, 0, 6, 1, 6, 2, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7, 6, 8,
+ 6, 9, 6, 10, 6, 11, 6, 12, 6, 13, 6, 14, 6, 15, 6, 16, 6, 17, 6, 18, 6, 19, 6, 20, 6, 21, 6, 22, 6, 23, 6, 24,
+ 6, 25, 6, 26, 6, 27, 6, 28, 6, 29, 6, 30, 6, 31, 6, 32, 6, 33, 6, 34, 6, 35, 6, 36, 6, 37, 6, 38, 6, 39, 6, 40,
+ 6, 41, 6, 42, 6, 43, 6, 44, 6, 45, 6, 46, 6, 47, 6, 48, 6, 49, 6, 50, 6, 51, 6, 52, 6, 53, 6, 54, 6, 55, 6, 56,
+ 6, 57, 6, 58, 6, 59, 6, 60, 6, 61, 6, 62, 6, 63, 6, 64, 6, 65, 6, 66, 6, 67, 6, 68, 6, 69, 6, 70, 6, 71, 6, 72,
+ 6, 73, 6, 74, 6, 75, 6, 76, 6, 77, 6, 78, 6, 79, 6, 80, 6, 81, 6, 82, 6, 83, 6, 84, 6, 85, 6, 86, 6, 87, 6, 88,
+ 6, 89, 6, 90, 6, 91, 6, 92, 6, 93, 6, 94, 6, 95, 6, 96, 6, 97, 6, 98, 6, 99, 6,100, 6,101, 6,102, 6,103, 6,104,
+ 6,105, 6,106, 6,107, 6,108, 6,109, 6,110, 6,111, 6,112, 6,113, 6,114, 6,115, 6,116, 6,117, 6,118, 6,119, 6,120,
+ 6,121, 6,122, 6,123, 6,124, 6,125, 6,126, 6,127, 6,128, 6,129, 6,130, 6,131, 6,132, 6,133, 6,134, 6,135, 6,136,
+ 6,137, 6,138, 6,139, 6,140, 6,141, 6,142, 6,143, 6,144, 6,145, 6,146, 6,147, 6,148, 6,149, 6,150, 6,151, 6,152,
+ 6,153, 6,154, 6,155, 6,156, 6,157, 6,158, 6,159, 6,160, 6,161, 6,162, 6,163, 6,164, 6,165, 6,166, 6,167, 6,168,
+ 6,169, 6,170, 0,178, 0,179, 6,171, 6,172, 0,182, 0,183, 0,196, 6,173, 0,180, 0,181, 0,197, 6,174, 0,130, 0,194,
+ 0,135, 6,175, 0,171, 6,176, 0,198, 6,177, 0,190, 0,191, 6,178, 6,179, 6,180, 6,181, 6,182, 6,183, 6,184, 6,185,
+ 6,186, 6,187, 6,188, 6,189, 6,190, 6,191, 6,192, 6,193, 6,194, 6,195, 6,196, 6,197, 6,198, 6,199, 6,200, 6,201,
+ 6,202, 6,203, 6,204, 6,205, 6,206, 6,207, 6,208, 6,209, 6,210, 6,211, 6,212, 6,213, 6,214, 6,215, 6,216, 6,217,
+ 6,218, 6,219, 6,220, 6,221, 6,222, 6,223, 6,224, 6,225, 6,226, 6,227, 6,228, 0,140, 6,229, 6,230, 6,231, 6,232,
+ 6,233, 6,234, 6,235, 6,236, 6,237, 6,238, 6,239, 6,240, 6,241, 6,242, 6,243, 6,244, 6,245, 6,246, 6,247, 6,248,
+ 6,249, 6,250, 6,251, 6,252, 6,253, 6,254, 6,255, 7, 0, 7, 1, 7, 2, 7, 3, 7, 4, 7, 5, 7, 6, 7, 7, 7, 8,
+ 7, 9, 7, 10, 7, 11, 7, 12, 7, 13, 7, 14, 7, 15, 7, 16, 7, 17, 7, 18, 7, 19, 7, 20, 7, 21, 7, 22, 7, 23, 7, 24,
+ 7, 25, 7, 26, 7, 27, 7, 28, 7, 29, 7, 30, 7, 31, 7, 32, 7, 33, 7, 34, 7, 35, 7, 36, 7, 37, 7, 38, 7, 39, 7, 40,
+ 7, 41, 7, 42, 7, 43, 7, 44, 7, 45, 7, 46, 7, 47, 7, 48, 7, 49, 7, 50, 7, 51, 7, 52, 7, 53, 7, 54, 7, 55, 7, 56,
+ 7, 57, 7, 58, 7, 59, 7, 60, 7, 61, 7, 62, 7, 63, 7, 64, 7, 65, 7, 66, 7, 67, 7, 68, 7, 69, 7, 70, 7, 71, 7, 72,
+ 7, 73, 7, 74, 7, 75, 7, 76, 7, 77, 7, 78, 7, 79, 7, 80, 7, 81, 7, 82, 7, 83, 7, 84, 7, 85, 7, 86, 7, 87, 7, 88,
+ 7, 89, 7, 90, 7, 91, 7, 92, 7, 93, 7, 94, 7, 95, 7, 96, 7, 97, 7, 98, 7, 99, 7,100, 0,152, 7,101, 0,168, 7,102,
+ 7,103, 7,104, 7,105, 7,106, 7,107, 7,108, 0,154, 0,153, 0,239, 7,109, 7,110, 7,111, 7,112, 7,113, 0,165, 7,114,
+ 0,146, 7,115, 7,116, 7,117, 7,118, 7,119, 7,120, 0,156, 7,121, 7,122, 7,123, 7,124, 7,125, 7,126, 7,127, 7,128,
+ 7,129, 7,130, 7,131, 7,132, 7,133, 7,134, 7,135, 0,167, 7,136, 7,137, 7,138, 7,139, 7,140, 7,141, 7,142, 7,143,
+ 7,144, 7,145, 7,146, 7,147, 7,148, 7,149, 7,150, 7,151, 7,152, 7,153, 7,154, 7,155, 7,156, 7,157, 7,158, 0,143,
+ 7,159, 7,160, 7,161, 0,148, 0,149, 7,162, 7,163, 7,164, 7,165, 7,166, 7,167, 7,168, 7,169, 7,170, 7,171, 7,172,
+ 7,173, 7,174, 7,175, 7,176, 7,177, 7,178, 7,179, 7,180, 7,181, 7,182, 7,183, 7,184, 7,185, 7,186, 7,187, 7,188,
+ 7,189, 7,190, 7,191, 7,192, 7,193, 7,194, 7,195, 7,196, 7,197, 7,198, 7,199, 7,200, 7,201, 7,202, 7,203, 7,204,
+ 7,205, 7,206, 7,207, 7,208, 7,209, 7,210, 7,211, 7,212, 7,213, 7,214, 7,215, 7,216, 7,217, 7,218, 7,219, 7,220,
+ 7,221, 7,222, 7,223, 7,224, 7,225, 7,226, 7,227, 7,228, 7,229, 7,230, 7,231, 7,232, 7,233, 7,234, 7,235, 7,236,
+ 7,237, 7,238, 7,239, 7,240, 7,241, 7,242, 7,243, 7,244, 7,245, 7,246, 7,247, 7,248, 7,249, 7,250, 7,251, 7,252,
+ 7,253, 7,254, 7,255, 8, 0, 8, 1, 8, 2, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8, 8, 8, 9, 8, 10, 8, 11, 8, 12,
+ 8, 13, 8, 14, 8, 15, 8, 16, 8, 17, 8, 18, 8, 19, 8, 20, 8, 21, 8, 22, 8, 23, 8, 24, 8, 25, 8, 26, 8, 27, 8, 28,
+ 8, 29, 8, 30, 8, 31, 8, 32, 8, 33, 8, 34, 8, 35, 8, 36, 8, 37, 8, 38, 8, 39, 8, 40, 8, 41, 8, 42, 8, 43, 8, 44,
+ 8, 45, 8, 46, 8, 47, 8, 48, 8, 49, 8, 50, 8, 51, 8, 52, 8, 53, 8, 54, 8, 55, 8, 56, 8, 57, 8, 58, 8, 59, 8, 60,
+ 8, 61, 8, 62, 8, 63, 8, 64, 8, 65, 8, 66, 8, 67, 8, 68, 8, 69, 8, 70, 8, 71, 8, 72, 8, 73, 8, 74, 8, 75, 8, 76,
+ 8, 77, 8, 78, 8, 79, 8, 80, 8, 81, 8, 82, 8, 83, 8, 84, 8, 85, 8, 86, 8, 87, 8, 88, 8, 89, 8, 90, 8, 91, 8, 92,
+ 8, 93, 8, 94, 8, 95, 8, 96, 8, 97, 8, 98, 8, 99, 8,100, 8,101, 8,102, 8,103, 8,104, 8,105, 8,106, 8,107, 8,108,
+ 8,109, 8,110, 8,111, 8,112, 8,113, 8,114, 8,115, 8,116, 8,117, 8,118, 8,119, 8,120, 8,121, 8,122, 8,123, 8,124,
+ 8,125, 8,126, 8,127, 8,128, 8,129, 8,130, 8,131, 8,132, 8,133, 8,134, 8,135, 8,136, 8,137, 8,138, 8,139, 8,140,
+ 8,141, 8,142, 8,143, 8,144, 8,145, 8,146, 8,147, 8,148, 8,149, 8,150, 8,151, 8,152, 8,153, 8,154, 8,155, 8,156,
+ 8,157, 8,158, 8,159, 8,160, 8,161, 8,162, 8,163, 8,164, 8,165, 8,166, 8,167, 8,168, 8,169, 8,170, 8,171, 8,172,
+ 8,173, 8,174, 8,175, 8,176, 8,177, 8,178, 8,179, 8,180, 8,181, 8,182, 8,183, 8,184, 8,185, 8,186, 8,187, 8,188,
+ 8,189, 8,190, 8,191, 8,192, 8,193, 8,194, 8,195, 8,196, 8,197, 8,198, 8,199, 8,200, 8,201, 8,202, 8,203, 8,204,
+ 8,205, 8,206, 8,207, 8,208, 8,209, 8,210, 8,211, 8,212, 8,213, 8,214, 8,215, 8,216, 8,217, 8,218, 8,219, 8,220,
+ 8,221, 8,222, 8,223, 8,224, 8,225, 8,226, 8,227, 8,228, 8,229, 8,230, 8,231, 8,232, 8,233, 8,234, 8,235, 8,236,
+ 8,237, 8,238, 8,239, 8,240, 8,241, 8,242, 8,243, 8,244, 8,245, 8,246, 8,247, 8,248, 8,249, 8,250, 8,251, 8,252,
+ 8,253, 8,254, 8,255, 9, 0, 9, 1, 9, 2, 9, 3, 9, 4, 9, 5, 9, 6, 9, 7, 9, 8, 9, 9, 9, 10, 9, 11, 9, 12,
+ 9, 13, 9, 14, 9, 15, 9, 16, 9, 17, 9, 18, 9, 19, 9, 20, 9, 21, 9, 22, 9, 23, 9, 24, 9, 25, 9, 26, 9, 27, 9, 28,
+ 9, 29, 9, 30, 9, 31, 9, 32, 9, 33, 9, 34, 9, 35, 9, 36, 9, 37, 9, 38, 9, 39, 9, 40, 9, 41, 0,185, 9, 42, 9, 43,
+ 9, 44, 9, 45, 9, 46, 9, 47, 9, 48, 9, 49, 9, 50, 9, 51, 9, 52, 9, 53, 9, 54, 9, 55, 9, 56, 9, 57, 9, 58, 9, 59,
+ 9, 60, 9, 61, 9, 62, 9, 63, 9, 64, 9, 65, 9, 66, 9, 67, 9, 68, 9, 69, 9, 70, 9, 71, 9, 72, 9, 73, 9, 74, 9, 75,
+ 9, 76, 9, 77, 9, 78, 9, 79, 9, 80, 9, 81, 9, 82, 9, 83, 9, 84, 9, 85, 9, 86, 9, 87, 9, 88, 9, 89, 9, 90, 9, 91,
+ 9, 92, 9, 93, 9, 94, 9, 95, 9, 96, 9, 97, 9, 98, 9, 99, 9,100, 9,101, 9,102, 9,103, 9,104, 9,105, 9,106, 9,107,
+ 9,108, 9,109, 9,110, 9,111, 9,112, 9,113, 9,114, 9,115, 9,116, 9,117, 9,118, 9,119, 9,120, 9,121, 9,122, 9,123,
+ 9,124, 9,125, 9,126, 9,127, 9,128, 9,129, 9,130, 9,131, 9,132, 9,133, 9,134, 9,135, 9,136, 9,137, 9,138, 9,139,
+ 9,140, 9,141, 9,142, 9,143, 9,144, 9,145, 9,146, 9,147, 9,148, 9,149, 9,150, 9,151, 9,152, 9,153, 9,154, 9,155,
+ 9,156, 9,157, 9,158, 9,159, 9,160, 9,161, 9,162, 9,163, 9,164, 9,165, 9,166, 9,167, 9,168, 9,169, 9,170, 9,171,
+ 9,172, 9,173, 9,174, 9,175, 9,176, 9,177, 9,178, 9,179, 9,180, 9,181, 9,182, 9,183, 9,184, 9,185, 9,186, 9,187,
+ 9,188, 9,189, 9,190, 9,191, 9,192, 9,193, 9,194, 9,195, 9,196, 9,197, 9,198, 9,199, 9,200, 9,201, 9,202, 9,203,
+ 9,204, 9,205, 9,206, 9,207, 9,208, 9,209, 9,210, 9,211, 9,212, 9,213, 9,214, 9,215, 9,216, 9,217, 9,218, 9,219,
+ 9,220, 9,221, 9,222, 9,223, 9,224, 9,225, 9,226, 9,227, 9,228, 9,229, 9,230, 9,231, 9,232, 9,233, 9,234, 9,235,
+ 9,236, 9,237, 9,238, 9,239, 9,240, 9,241, 9,242, 9,243, 9,244, 9,245, 9,246, 9,247, 9,248, 9,249, 9,250, 9,251,
+ 9,252, 9,253, 9,254, 9,255, 10, 0, 10, 1, 10, 2, 10, 3, 10, 4, 10, 5, 10, 6, 10, 7, 10, 8, 10, 9, 10, 10, 10, 11,
+ 10, 12, 10, 13, 10, 14, 10, 15, 10, 16, 10, 17, 10, 18, 10, 19, 10, 20, 10, 21, 10, 22, 10, 23, 10, 24, 10, 25, 10, 26, 10, 27,
+ 10, 28, 10, 29, 10, 30, 10, 31, 10, 32, 10, 33, 10, 34, 10, 35, 10, 36, 10, 37, 10, 38, 10, 39, 10, 40, 10, 41, 10, 42, 10, 43,
+ 10, 44, 10, 45, 10, 46, 10, 47, 10, 48, 10, 49, 10, 50, 10, 51, 10, 52, 10, 53, 10, 54, 10, 55, 10, 56, 10, 57, 10, 58, 10, 59,
+ 10, 60, 10, 61, 10, 62, 10, 63, 10, 64, 10, 65, 10, 66, 10, 67, 10, 68, 10, 69, 10, 70, 10, 71, 10, 72, 10, 73, 10, 74, 10, 75,
+ 10, 76, 10, 77, 10, 78, 10, 79, 10, 80, 10, 81, 10, 82, 10, 83, 10, 84, 10, 85, 10, 86, 10, 87, 10, 88, 10, 89, 10, 90, 10, 91,
+ 10, 92, 10, 93, 10, 94, 10, 95, 10, 96, 10, 97, 10, 98, 10, 99, 10,100, 10,101, 10,102, 10,103, 10,104, 10,105, 10,106, 10,107,
+ 10,108, 10,109, 10,110, 10,111, 10,112, 10,113, 10,114, 10,115, 10,116, 10,117, 10,118, 10,119, 10,120, 10,121, 10,122, 10,123,
+ 10,124, 10,125, 10,126, 10,127, 10,128, 10,129, 10,130, 10,131, 10,132, 10,133, 10,134, 10,135, 10,136, 10,137, 10,138, 10,139,
+ 10,140, 10,141, 10,142, 10,143, 10,144, 10,145, 10,146, 10,147, 10,148, 10,149, 10,150, 10,151, 10,152, 10,153, 0,192, 0,193,
+ 10,154, 10,155, 10,156, 10,157, 10,158, 10,159, 10,160, 10,161, 10,162, 10,163, 10,164, 10,165, 10,166, 10,167, 10,168, 10,169,
+ 10,170, 10,171, 10,172, 10,173, 10,174, 10,175, 10,176, 10,177, 10,178, 10,179, 10,180, 10,181, 10,182, 10,183, 10,184, 10,185,
+ 10,186, 10,187, 10,188, 10,189, 10,190, 10,191, 10,192, 10,193, 10,194, 10,195, 10,196, 10,197, 10,198, 10,199, 10,200, 10,201,
+ 10,202, 10,203, 10,204, 10,205, 10,206, 10,207, 10,208, 10,209, 10,210, 10,211, 10,212, 10,213, 10,214, 10,215, 10,216, 10,217,
+ 10,218, 10,219, 10,220, 10,221, 10,222, 10,223, 10,224, 10,225, 10,226, 10,227, 10,228, 10,229, 10,230, 10,231, 10,232, 10,233,
+ 10,234, 10,235, 10,236, 10,237, 10,238, 10,239, 10,240, 10,241, 10,242, 10,243, 10,244, 10,245, 10,246, 10,247, 10,248, 10,249,
+ 10,250, 10,251, 10,252, 10,253, 10,254, 10,255, 11, 0, 11, 1, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9,
+ 11, 10, 11, 11, 11, 12, 11, 13, 11, 14, 11, 15, 11, 16, 11, 17, 11, 18, 11, 19, 11, 20, 11, 21, 11, 22, 11, 23, 11, 24, 11, 25,
+ 11, 26, 11, 27, 11, 28, 11, 29, 11, 30, 11, 31, 11, 32, 11, 33, 11, 34, 11, 35, 11, 36, 11, 37, 11, 38, 11, 39, 11, 40, 11, 41,
+ 11, 42, 11, 43, 11, 44, 11, 45, 11, 46, 11, 47, 11, 48, 11, 49, 11, 50, 11, 51, 11, 52, 11, 53, 11, 54, 11, 55, 11, 56, 11, 57,
+ 11, 58, 11, 59, 11, 60, 11, 61, 11, 62, 11, 63, 11, 64, 11, 65, 11, 66, 11, 67, 11, 68, 11, 69, 11, 70, 11, 71, 11, 72, 11, 73,
+ 11, 74, 11, 75, 11, 76, 11, 77, 11, 78, 11, 79, 11, 80, 11, 81, 11, 82, 11, 83, 11, 84, 11, 85, 11, 86, 11, 87, 11, 88, 11, 89,
+ 11, 90, 11, 91, 11, 92, 11, 93, 11, 94, 11, 95, 11, 96, 11, 97, 11, 98, 11, 99, 11,100, 11,101, 11,102, 11,103, 11,104, 11,105,
+ 11,106, 11,107, 11,108, 11,109, 11,110, 11,111, 11,112, 11,113, 11,114, 11,115, 11,116, 11,117, 11,118, 11,119, 11,120, 11,121,
+ 11,122, 11,123, 11,124, 11,125, 11,126, 11,127, 11,128, 11,129, 11,130, 11,131, 11,132, 11,133, 11,134, 11,135, 11,136, 11,137,
+ 11,138, 11,139, 11,140, 11,141, 11,142, 11,143, 11,144, 11,145, 11,146, 11,147, 11,148, 11,149, 11,150, 11,151, 11,152, 11,153,
+ 11,154, 11,155, 11,156, 11,157, 11,158, 11,159, 11,160, 11,161, 11,162, 11,163, 11,164, 11,165, 11,166, 11,167, 11,168, 11,169,
+ 11,170, 11,171, 11,172, 11,173, 11,174, 11,175, 11,176, 11,177, 11,178, 11,179, 11,180, 11,181, 11,182, 11,183, 11,184, 11,185,
+ 11,186, 11,187, 11,188, 11,189, 11,190, 11,191, 11,192, 11,193, 11,194, 11,195, 11,196, 11,197, 11,198, 11,199, 11,200, 11,201,
+ 11,202, 11,203, 11,204, 11,205, 11,206, 11,207, 11,208, 11,209, 11,210, 11,211, 11,212, 9,115,102,116,104,121,112,104,101,110,
+ 7, 65,109, 97, 99,114,111,110, 7, 97,109, 97, 99,114,111,110, 6, 65, 98,114,101,118,101, 6, 97, 98,114,101,118,101, 7, 65,
+111,103,111,110,101,107, 7, 97,111,103,111,110,101,107, 11, 67, 99,105,114, 99,117,109,102,108,101,120, 11, 99, 99,105,114, 99,
+117,109,102,108,101,120, 10, 67,100,111,116, 97, 99, 99,101,110,116, 10, 99,100,111,116, 97, 99, 99,101,110,116, 6, 68, 99, 97,
+114,111,110, 6,100, 99, 97,114,111,110, 6, 68, 99,114,111, 97,116, 7, 69,109, 97, 99,114,111,110, 7,101,109, 97, 99,114,111,
+110, 6, 69, 98,114,101,118,101, 6,101, 98,114,101,118,101, 10, 69,100,111,116, 97, 99, 99,101,110,116, 10,101,100,111,116, 97,
+ 99, 99,101,110,116, 7, 69,111,103,111,110,101,107, 7,101,111,103,111,110,101,107, 6, 69, 99, 97,114,111,110, 6,101, 99, 97,
+114,111,110, 11, 71, 99,105,114, 99,117,109,102,108,101,120, 11,103, 99,105,114, 99,117,109,102,108,101,120, 10, 71,100,111,116,
+ 97, 99, 99,101,110,116, 10,103,100,111,116, 97, 99, 99,101,110,116, 12, 71, 99,111,109,109, 97, 97, 99, 99,101,110,116, 12,103,
+ 99,111,109,109, 97, 97, 99, 99,101,110,116, 11, 72, 99,105,114, 99,117,109,102,108,101,120, 11,104, 99,105,114, 99,117,109,102,
+108,101,120, 4, 72, 98, 97,114, 4,104, 98, 97,114, 6, 73,116,105,108,100,101, 6,105,116,105,108,100,101, 7, 73,109, 97, 99,
+114,111,110, 7,105,109, 97, 99,114,111,110, 6, 73, 98,114,101,118,101, 6,105, 98,114,101,118,101, 7, 73,111,103,111,110,101,
+107, 7,105,111,103,111,110,101,107, 2, 73, 74, 2,105,106, 11, 74, 99,105,114, 99,117,109,102,108,101,120, 11,106, 99,105,114,
+ 99,117,109,102,108,101,120, 12, 75, 99,111,109,109, 97, 97, 99, 99,101,110,116, 12,107, 99,111,109,109, 97, 97, 99, 99,101,110,
+116, 12,107,103,114,101,101,110,108, 97,110,100,105, 99, 6, 76, 97, 99,117,116,101, 6,108, 97, 99,117,116,101, 12, 76, 99,111,
+109,109, 97, 97, 99, 99,101,110,116, 12,108, 99,111,109,109, 97, 97, 99, 99,101,110,116, 6, 76, 99, 97,114,111,110, 6,108, 99,
+ 97,114,111,110, 4, 76,100,111,116, 4,108,100,111,116, 6, 78, 97, 99,117,116,101, 6,110, 97, 99,117,116,101, 12, 78, 99,111,
+109,109, 97, 97, 99, 99,101,110,116, 12,110, 99,111,109,109, 97, 97, 99, 99,101,110,116, 6, 78, 99, 97,114,111,110, 6,110, 99,
+ 97,114,111,110, 11,110, 97,112,111,115,116,114,111,112,104,101, 3, 69,110,103, 3,101,110,103, 7, 79,109, 97, 99,114,111,110,
+ 7,111,109, 97, 99,114,111,110, 6, 79, 98,114,101,118,101, 6,111, 98,114,101,118,101, 13, 79,104,117,110,103, 97,114,117,109,
+108, 97,117,116, 13,111,104,117,110,103, 97,114,117,109,108, 97,117,116, 6, 82, 97, 99,117,116,101, 6,114, 97, 99,117,116,101,
+ 12, 82, 99,111,109,109, 97, 97, 99, 99,101,110,116, 12,114, 99,111,109,109, 97, 97, 99, 99,101,110,116, 6, 82, 99, 97,114,111,
+110, 6,114, 99, 97,114,111,110, 6, 83, 97, 99,117,116,101, 6,115, 97, 99,117,116,101, 11, 83, 99,105,114, 99,117,109,102,108,
+101,120, 11,115, 99,105,114, 99,117,109,102,108,101,120, 12, 84, 99,111,109,109, 97, 97, 99, 99,101,110,116, 12,116, 99,111,109,
+109, 97, 97, 99, 99,101,110,116, 6, 84, 99, 97,114,111,110, 6,116, 99, 97,114,111,110, 4, 84, 98, 97,114, 4,116, 98, 97,114,
+ 6, 85,116,105,108,100,101, 6,117,116,105,108,100,101, 7, 85,109, 97, 99,114,111,110, 7,117,109, 97, 99,114,111,110, 6, 85,
+ 98,114,101,118,101, 6,117, 98,114,101,118,101, 5, 85,114,105,110,103, 5,117,114,105,110,103, 13, 85,104,117,110,103, 97,114,
+117,109,108, 97,117,116, 13,117,104,117,110,103, 97,114,117,109,108, 97,117,116, 7, 85,111,103,111,110,101,107, 7,117,111,103,
+111,110,101,107, 11, 87, 99,105,114, 99,117,109,102,108,101,120, 11,119, 99,105,114, 99,117,109,102,108,101,120, 11, 89, 99,105,
+114, 99,117,109,102,108,101,120, 11,121, 99,105,114, 99,117,109,102,108,101,120, 6, 90, 97, 99,117,116,101, 6,122, 97, 99,117,
+116,101, 10, 90,100,111,116, 97, 99, 99,101,110,116, 10,122,100,111,116, 97, 99, 99,101,110,116, 5,108,111,110,103,115, 7,117,
+110,105, 48, 49, 56, 48, 7,117,110,105, 48, 49, 56, 49, 7,117,110,105, 48, 49, 56, 50, 7,117,110,105, 48, 49, 56, 51, 7,117,
+110,105, 48, 49, 56, 52, 7,117,110,105, 48, 49, 56, 53, 7,117,110,105, 48, 49, 56, 54, 7,117,110,105, 48, 49, 56, 55, 7,117,
+110,105, 48, 49, 56, 56, 7,117,110,105, 48, 49, 56, 57, 7,117,110,105, 48, 49, 56, 65, 7,117,110,105, 48, 49, 56, 66, 7,117,
+110,105, 48, 49, 56, 67, 7,117,110,105, 48, 49, 56, 68, 7,117,110,105, 48, 49, 56, 69, 7,117,110,105, 48, 49, 56, 70, 7,117,
+110,105, 48, 49, 57, 48, 7,117,110,105, 48, 49, 57, 49, 7,117,110,105, 48, 49, 57, 51, 7,117,110,105, 48, 49, 57, 52, 7,117,
+110,105, 48, 49, 57, 53, 7,117,110,105, 48, 49, 57, 54, 7,117,110,105, 48, 49, 57, 55, 7,117,110,105, 48, 49, 57, 56, 7,117,
+110,105, 48, 49, 57, 57, 7,117,110,105, 48, 49, 57, 65, 7,117,110,105, 48, 49, 57, 66, 7,117,110,105, 48, 49, 57, 67, 7,117,
+110,105, 48, 49, 57, 68, 7,117,110,105, 48, 49, 57, 69, 7,117,110,105, 48, 49, 57, 70, 5, 79,104,111,114,110, 5,111,104,111,
+114,110, 7,117,110,105, 48, 49, 65, 50, 7,117,110,105, 48, 49, 65, 51, 7,117,110,105, 48, 49, 65, 52, 7,117,110,105, 48, 49,
+ 65, 53, 7,117,110,105, 48, 49, 65, 54, 7,117,110,105, 48, 49, 65, 55, 7,117,110,105, 48, 49, 65, 56, 7,117,110,105, 48, 49,
+ 65, 57, 7,117,110,105, 48, 49, 65, 65, 7,117,110,105, 48, 49, 65, 66, 7,117,110,105, 48, 49, 65, 67, 7,117,110,105, 48, 49,
+ 65, 68, 7,117,110,105, 48, 49, 65, 69, 5, 85,104,111,114,110, 5,117,104,111,114,110, 7,117,110,105, 48, 49, 66, 49, 7,117,
+110,105, 48, 49, 66, 50, 7,117,110,105, 48, 49, 66, 51, 7,117,110,105, 48, 49, 66, 52, 7,117,110,105, 48, 49, 66, 53, 7,117,
+110,105, 48, 49, 66, 54, 7,117,110,105, 48, 49, 66, 55, 7,117,110,105, 48, 49, 66, 56, 7,117,110,105, 48, 49, 66, 57, 7,117,
+110,105, 48, 49, 66, 66, 7,117,110,105, 48, 49, 66, 67, 7,117,110,105, 48, 49, 66, 68, 7,117,110,105, 48, 49, 66, 69, 7,117,
+110,105, 48, 49, 67, 48, 7,117,110,105, 48, 49, 67, 49, 7,117,110,105, 48, 49, 67, 50, 7,117,110,105, 48, 49, 67, 51, 7,117,
+110,105, 48, 49, 67, 68, 7,117,110,105, 48, 49, 67, 69, 7,117,110,105, 48, 49, 67, 70, 7,117,110,105, 48, 49, 68, 48, 7,117,
+110,105, 48, 49, 68, 49, 7,117,110,105, 48, 49, 68, 50, 7,117,110,105, 48, 49, 68, 51, 7,117,110,105, 48, 49, 68, 52, 7,117,
+110,105, 48, 49, 68, 53, 7,117,110,105, 48, 49, 68, 54, 7,117,110,105, 48, 49, 68, 55, 7,117,110,105, 48, 49, 68, 56, 7,117,
+110,105, 48, 49, 68, 57, 7,117,110,105, 48, 49, 68, 65, 7,117,110,105, 48, 49, 68, 66, 7,117,110,105, 48, 49, 68, 67, 7,117,
+110,105, 48, 49, 68, 68, 7,117,110,105, 48, 49, 68, 69, 7,117,110,105, 48, 49, 68, 70, 7,117,110,105, 48, 49, 69, 48, 7,117,
+110,105, 48, 49, 69, 49, 7,117,110,105, 48, 49, 69, 50, 7,117,110,105, 48, 49, 69, 51, 6, 71, 99, 97,114,111,110, 6,103, 99,
+ 97,114,111,110, 7,117,110,105, 48, 49, 69, 56, 7,117,110,105, 48, 49, 69, 57, 7,117,110,105, 48, 49, 69, 65, 7,117,110,105,
+ 48, 49, 69, 66, 7,117,110,105, 48, 49, 69, 67, 7,117,110,105, 48, 49, 69, 68, 7,117,110,105, 48, 49, 69, 69, 7,117,110,105,
+ 48, 49, 69, 70, 7,117,110,105, 48, 49, 70, 48, 7,117,110,105, 48, 49, 70, 52, 7,117,110,105, 48, 49, 70, 53, 7,117,110,105,
+ 48, 49, 70, 54, 7,117,110,105, 48, 49, 70, 56, 7,117,110,105, 48, 49, 70, 57, 7, 65, 69, 97, 99,117,116,101, 7, 97,101, 97,
+ 99,117,116,101, 11, 79,115,108, 97,115,104, 97, 99,117,116,101, 11,111,115,108, 97,115,104, 97, 99,117,116,101, 7,117,110,105,
+ 48, 50, 48, 48, 7,117,110,105, 48, 50, 48, 49, 7,117,110,105, 48, 50, 48, 50, 7,117,110,105, 48, 50, 48, 51, 7,117,110,105,
+ 48, 50, 48, 52, 7,117,110,105, 48, 50, 48, 53, 7,117,110,105, 48, 50, 48, 54, 7,117,110,105, 48, 50, 48, 55, 7,117,110,105,
+ 48, 50, 48, 56, 7,117,110,105, 48, 50, 48, 57, 7,117,110,105, 48, 50, 48, 65, 7,117,110,105, 48, 50, 48, 66, 7,117,110,105,
+ 48, 50, 48, 67, 7,117,110,105, 48, 50, 48, 68, 7,117,110,105, 48, 50, 48, 69, 7,117,110,105, 48, 50, 48, 70, 7,117,110,105,
+ 48, 50, 49, 48, 7,117,110,105, 48, 50, 49, 49, 7,117,110,105, 48, 50, 49, 50, 7,117,110,105, 48, 50, 49, 51, 7,117,110,105,
+ 48, 50, 49, 52, 7,117,110,105, 48, 50, 49, 53, 7,117,110,105, 48, 50, 49, 54, 7,117,110,105, 48, 50, 49, 55, 12, 83, 99,111,
+109,109, 97, 97, 99, 99,101,110,116, 12,115, 99,111,109,109, 97, 97, 99, 99,101,110,116, 7,117,110,105, 48, 50, 49, 65, 7,117,
+110,105, 48, 50, 49, 66, 7,117,110,105, 48, 50, 49, 69, 7,117,110,105, 48, 50, 49, 70, 7,117,110,105, 48, 50, 50, 48, 7,117,
+110,105, 48, 50, 50, 49, 7,117,110,105, 48, 50, 50, 52, 7,117,110,105, 48, 50, 50, 53, 7,117,110,105, 48, 50, 50, 54, 7,117,
+110,105, 48, 50, 50, 55, 7,117,110,105, 48, 50, 50, 56, 7,117,110,105, 48, 50, 50, 57, 7,117,110,105, 48, 50, 50, 65, 7,117,
+110,105, 48, 50, 50, 66, 7,117,110,105, 48, 50, 50, 67, 7,117,110,105, 48, 50, 50, 68, 7,117,110,105, 48, 50, 50, 69, 7,117,
+110,105, 48, 50, 50, 70, 7,117,110,105, 48, 50, 51, 48, 7,117,110,105, 48, 50, 51, 49, 7,117,110,105, 48, 50, 51, 50, 7,117,
+110,105, 48, 50, 51, 51, 7,117,110,105, 48, 50, 51, 52, 7,117,110,105, 48, 50, 51, 53, 7,117,110,105, 48, 50, 51, 54, 8,100,
+111,116,108,101,115,115,106, 7,117,110,105, 48, 50, 51, 56, 7,117,110,105, 48, 50, 51, 57, 7,117,110,105, 48, 50, 51, 65, 7,
+117,110,105, 48, 50, 51, 66, 7,117,110,105, 48, 50, 51, 67, 7,117,110,105, 48, 50, 51, 68, 7,117,110,105, 48, 50, 51, 69, 7,
+117,110,105, 48, 50, 51, 70, 7,117,110,105, 48, 50, 52, 48, 7,117,110,105, 48, 50, 52, 49, 7,117,110,105, 48, 50, 52, 53, 7,
+117,110,105, 48, 50, 53, 48, 7,117,110,105, 48, 50, 53, 49, 7,117,110,105, 48, 50, 53, 50, 7,117,110,105, 48, 50, 53, 51, 7,
+117,110,105, 48, 50, 53, 52, 7,117,110,105, 48, 50, 53, 53, 7,117,110,105, 48, 50, 53, 54, 7,117,110,105, 48, 50, 53, 55, 7,
+117,110,105, 48, 50, 53, 56, 7,117,110,105, 48, 50, 53, 57, 7,117,110,105, 48, 50, 53, 65, 7,117,110,105, 48, 50, 53, 66, 7,
+117,110,105, 48, 50, 53, 67, 7,117,110,105, 48, 50, 53, 68, 7,117,110,105, 48, 50, 53, 69, 7,117,110,105, 48, 50, 53, 70, 7,
+117,110,105, 48, 50, 54, 48, 7,117,110,105, 48, 50, 54, 49, 7,117,110,105, 48, 50, 54, 50, 7,117,110,105, 48, 50, 54, 51, 7,
+117,110,105, 48, 50, 54, 52, 7,117,110,105, 48, 50, 54, 53, 7,117,110,105, 48, 50, 54, 54, 7,117,110,105, 48, 50, 54, 55, 7,
+117,110,105, 48, 50, 54, 56, 7,117,110,105, 48, 50, 54, 57, 7,117,110,105, 48, 50, 54, 65, 7,117,110,105, 48, 50, 54, 66, 7,
+117,110,105, 48, 50, 54, 67, 7,117,110,105, 48, 50, 54, 68, 7,117,110,105, 48, 50, 54, 69, 7,117,110,105, 48, 50, 54, 70, 7,
+117,110,105, 48, 50, 55, 48, 7,117,110,105, 48, 50, 55, 49, 7,117,110,105, 48, 50, 55, 50, 7,117,110,105, 48, 50, 55, 51, 7,
+117,110,105, 48, 50, 55, 52, 7,117,110,105, 48, 50, 55, 53, 7,117,110,105, 48, 50, 55, 54, 7,117,110,105, 48, 50, 55, 55, 7,
+117,110,105, 48, 50, 55, 56, 7,117,110,105, 48, 50, 55, 57, 7,117,110,105, 48, 50, 55, 65, 7,117,110,105, 48, 50, 55, 66, 7,
+117,110,105, 48, 50, 55, 67, 7,117,110,105, 48, 50, 55, 68, 7,117,110,105, 48, 50, 55, 69, 7,117,110,105, 48, 50, 55, 70, 7,
+117,110,105, 48, 50, 56, 48, 7,117,110,105, 48, 50, 56, 49, 7,117,110,105, 48, 50, 56, 50, 7,117,110,105, 48, 50, 56, 51, 7,
+117,110,105, 48, 50, 56, 52, 7,117,110,105, 48, 50, 56, 53, 7,117,110,105, 48, 50, 56, 54, 7,117,110,105, 48, 50, 56, 55, 7,
+117,110,105, 48, 50, 56, 56, 7,117,110,105, 48, 50, 56, 57, 7,117,110,105, 48, 50, 56, 65, 7,117,110,105, 48, 50, 56, 66, 7,
+117,110,105, 48, 50, 56, 67, 7,117,110,105, 48, 50, 56, 68, 7,117,110,105, 48, 50, 56, 69, 7,117,110,105, 48, 50, 56, 70, 7,
+117,110,105, 48, 50, 57, 48, 7,117,110,105, 48, 50, 57, 49, 7,117,110,105, 48, 50, 57, 50, 7,117,110,105, 48, 50, 57, 51, 7,
+117,110,105, 48, 50, 57, 52, 7,117,110,105, 48, 50, 57, 53, 7,117,110,105, 48, 50, 57, 54, 7,117,110,105, 48, 50, 57, 55, 7,
+117,110,105, 48, 50, 57, 56, 7,117,110,105, 48, 50, 57, 57, 7,117,110,105, 48, 50, 57, 65, 7,117,110,105, 48, 50, 57, 66, 7,
+117,110,105, 48, 50, 57, 67, 7,117,110,105, 48, 50, 57, 68, 7,117,110,105, 48, 50, 57, 69, 7,117,110,105, 48, 50, 57, 70, 7,
+117,110,105, 48, 50, 65, 48, 7,117,110,105, 48, 50, 65, 49, 7,117,110,105, 48, 50, 65, 50, 7,117,110,105, 48, 50, 65, 51, 7,
+117,110,105, 48, 50, 65, 52, 7,117,110,105, 48, 50, 65, 53, 7,117,110,105, 48, 50, 65, 54, 7,117,110,105, 48, 50, 65, 55, 7,
+117,110,105, 48, 50, 65, 56, 7,117,110,105, 48, 50, 65, 57, 7,117,110,105, 48, 50, 65, 65, 7,117,110,105, 48, 50, 65, 66, 7,
+117,110,105, 48, 50, 65, 67, 7,117,110,105, 48, 50, 65, 68, 7,117,110,105, 48, 50, 65, 69, 7,117,110,105, 48, 50, 65, 70, 7,
+117,110,105, 48, 50, 66, 48, 7,117,110,105, 48, 50, 66, 49, 7,117,110,105, 48, 50, 66, 50, 7,117,110,105, 48, 50, 66, 51, 7,
+117,110,105, 48, 50, 66, 52, 7,117,110,105, 48, 50, 66, 53, 7,117,110,105, 48, 50, 66, 54, 7,117,110,105, 48, 50, 66, 55, 7,
+117,110,105, 48, 50, 66, 56, 7,117,110,105, 48, 50, 66, 57, 7,117,110,105, 48, 50, 66, 66, 7,117,110,105, 48, 50, 66, 67, 7,
+117,110,105, 48, 50, 66, 68, 7,117,110,105, 48, 50, 66, 69, 7,117,110,105, 48, 50, 66, 70, 7,117,110,105, 48, 50, 67, 48, 7,
+117,110,105, 48, 50, 67, 49, 7,117,110,105, 48, 50, 67, 56, 7,117,110,105, 48, 50, 67, 57, 7,117,110,105, 48, 50, 67, 67, 7,
+117,110,105, 48, 50, 67, 68, 7,117,110,105, 48, 50, 68, 48, 7,117,110,105, 48, 50, 68, 49, 7,117,110,105, 48, 50, 68, 50, 7,
+117,110,105, 48, 50, 68, 51, 7,117,110,105, 48, 50, 68, 54, 7,117,110,105, 48, 50, 68, 69, 7,117,110,105, 48, 50, 69, 48, 7,
+117,110,105, 48, 50, 69, 49, 7,117,110,105, 48, 50, 69, 50, 7,117,110,105, 48, 50, 69, 51, 7,117,110,105, 48, 50, 69, 52, 7,
+117,110,105, 48, 50, 69, 53, 7,117,110,105, 48, 50, 69, 54, 7,117,110,105, 48, 50, 69, 55, 7,117,110,105, 48, 50, 69, 56, 7,
+117,110,105, 48, 50, 69, 57, 7,117,110,105, 48, 50, 70, 51, 9,103,114, 97,118,101, 99,111,109, 98, 9, 97, 99,117,116,101, 99,
+111,109, 98, 7,117,110,105, 48, 51, 48, 50, 9,116,105,108,100,101, 99,111,109, 98, 7,117,110,105, 48, 51, 48, 52, 7,117,110,
+105, 48, 51, 48, 53, 7,117,110,105, 48, 51, 48, 54, 7,117,110,105, 48, 51, 48, 55, 7,117,110,105, 48, 51, 48, 56, 13,104,111,
+111,107, 97, 98,111,118,101, 99,111,109, 98, 7,117,110,105, 48, 51, 48, 65, 7,117,110,105, 48, 51, 48, 66, 7,117,110,105, 48,
+ 51, 48, 67, 7,117,110,105, 48, 51, 48, 68, 7,117,110,105, 48, 51, 48, 69, 7,117,110,105, 48, 51, 48, 70, 7,117,110,105, 48,
+ 51, 49, 48, 7,117,110,105, 48, 51, 49, 49, 7,117,110,105, 48, 51, 49, 50, 7,117,110,105, 48, 51, 49, 51, 7,117,110,105, 48,
+ 51, 49, 52, 7,117,110,105, 48, 51, 49, 53, 7,117,110,105, 48, 51, 49, 54, 7,117,110,105, 48, 51, 49, 55, 7,117,110,105, 48,
+ 51, 49, 56, 7,117,110,105, 48, 51, 49, 57, 7,117,110,105, 48, 51, 49, 65, 7,117,110,105, 48, 51, 49, 66, 7,117,110,105, 48,
+ 51, 49, 67, 7,117,110,105, 48, 51, 49, 68, 7,117,110,105, 48, 51, 49, 69, 7,117,110,105, 48, 51, 49, 70, 7,117,110,105, 48,
+ 51, 50, 48, 7,117,110,105, 48, 51, 50, 49, 7,117,110,105, 48, 51, 50, 50, 12,100,111,116, 98,101,108,111,119, 99,111,109, 98,
+ 7,117,110,105, 48, 51, 50, 52, 7,117,110,105, 48, 51, 50, 53, 7,117,110,105, 48, 51, 50, 54, 7,117,110,105, 48, 51, 50, 55,
+ 7,117,110,105, 48, 51, 50, 56, 7,117,110,105, 48, 51, 50, 57, 7,117,110,105, 48, 51, 50, 65, 7,117,110,105, 48, 51, 50, 66,
+ 7,117,110,105, 48, 51, 50, 67, 7,117,110,105, 48, 51, 50, 68, 7,117,110,105, 48, 51, 50, 69, 7,117,110,105, 48, 51, 50, 70,
+ 7,117,110,105, 48, 51, 51, 48, 7,117,110,105, 48, 51, 51, 49, 7,117,110,105, 48, 51, 51, 50, 7,117,110,105, 48, 51, 51, 51,
+ 7,117,110,105, 48, 51, 51, 52, 7,117,110,105, 48, 51, 51, 53, 7,117,110,105, 48, 51, 51, 54, 7,117,110,105, 48, 51, 51, 55,
+ 7,117,110,105, 48, 51, 51, 56, 7,117,110,105, 48, 51, 51, 57, 7,117,110,105, 48, 51, 51, 65, 7,117,110,105, 48, 51, 51, 66,
+ 7,117,110,105, 48, 51, 51, 67, 7,117,110,105, 48, 51, 51, 68, 7,117,110,105, 48, 51, 51, 69, 7,117,110,105, 48, 51, 51, 70,
+ 7,117,110,105, 48, 51, 52, 51, 7,117,110,105, 48, 51, 53, 56, 7,117,110,105, 48, 51, 54, 49, 7,117,110,105, 48, 51, 55, 52,
+ 7,117,110,105, 48, 51, 55, 53, 7,117,110,105, 48, 51, 55, 65, 7,117,110,105, 48, 51, 55, 69, 5,116,111,110,111,115, 13,100,
+105,101,114,101,115,105,115,116,111,110,111,115, 10, 65,108,112,104, 97,116,111,110,111,115, 9, 97,110,111,116,101,108,101,105,
+ 97, 12, 69,112,115,105,108,111,110,116,111,110,111,115, 8, 69,116, 97,116,111,110,111,115, 9, 73,111,116, 97,116,111,110,111,
+115, 12, 79,109,105, 99,114,111,110,116,111,110,111,115, 12, 85,112,115,105,108,111,110,116,111,110,111,115, 10, 79,109,101,103,
+ 97,116,111,110,111,115, 17,105,111,116, 97,100,105,101,114,101,115,105,115,116,111,110,111,115, 5, 65,108,112,104, 97, 4, 66,
+101,116, 97, 5, 71, 97,109,109, 97, 7,117,110,105, 48, 51, 57, 52, 7, 69,112,115,105,108,111,110, 4, 90,101,116, 97, 3, 69,
+116, 97, 5, 84,104,101,116, 97, 4, 73,111,116, 97, 5, 75, 97,112,112, 97, 6, 76, 97,109, 98,100, 97, 2, 77,117, 2, 78,117,
+ 2, 88,105, 7, 79,109,105, 99,114,111,110, 2, 80,105, 3, 82,104,111, 5, 83,105,103,109, 97, 3, 84, 97,117, 7, 85,112,115,
+105,108,111,110, 3, 80,104,105, 3, 67,104,105, 3, 80,115,105, 12, 73,111,116, 97,100,105,101,114,101,115,105,115, 15, 85,112,
+115,105,108,111,110,100,105,101,114,101,115,105,115, 10, 97,108,112,104, 97,116,111,110,111,115, 12,101,112,115,105,108,111,110,
+116,111,110,111,115, 8,101,116, 97,116,111,110,111,115, 9,105,111,116, 97,116,111,110,111,115, 20,117,112,115,105,108,111,110,
+100,105,101,114,101,115,105,115,116,111,110,111,115, 5, 97,108,112,104, 97, 4, 98,101,116, 97, 5,103, 97,109,109, 97, 5,100,
+101,108,116, 97, 7,101,112,115,105,108,111,110, 4,122,101,116, 97, 3,101,116, 97, 5,116,104,101,116, 97, 4,105,111,116, 97,
+ 5,107, 97,112,112, 97, 6,108, 97,109, 98,100, 97, 7,117,110,105, 48, 51, 66, 67, 2,110,117, 2,120,105, 7,111,109,105, 99,
+114,111,110, 3,114,104,111, 6,115,105,103,109, 97, 49, 5,115,105,103,109, 97, 3,116, 97,117, 7,117,112,115,105,108,111,110,
+ 3,112,104,105, 3, 99,104,105, 3,112,115,105, 5,111,109,101,103, 97, 12,105,111,116, 97,100,105,101,114,101,115,105,115, 15,
+117,112,115,105,108,111,110,100,105,101,114,101,115,105,115, 12,111,109,105, 99,114,111,110,116,111,110,111,115, 12,117,112,115,
+105,108,111,110,116,111,110,111,115, 10,111,109,101,103, 97,116,111,110,111,115, 7,117,110,105, 48, 51, 68, 48, 6,116,104,101,
+116, 97, 49, 8, 85,112,115,105,108,111,110, 49, 7,117,110,105, 48, 51, 68, 51, 7,117,110,105, 48, 51, 68, 52, 4,112,104,105,
+ 49, 6,111,109,101,103, 97, 49, 7,117,110,105, 48, 51, 68, 55, 7,117,110,105, 48, 51, 68, 56, 7,117,110,105, 48, 51, 68, 57,
+ 7,117,110,105, 48, 51, 68, 65, 7,117,110,105, 48, 51, 68, 66, 7,117,110,105, 48, 51, 68, 67, 7,117,110,105, 48, 51, 68, 68,
+ 7,117,110,105, 48, 51, 68, 69, 7,117,110,105, 48, 51, 68, 70, 7,117,110,105, 48, 51, 69, 48, 7,117,110,105, 48, 51, 69, 49,
+ 7,117,110,105, 48, 51, 70, 48, 7,117,110,105, 48, 51, 70, 49, 7,117,110,105, 48, 51, 70, 50, 7,117,110,105, 48, 51, 70, 51,
+ 7,117,110,105, 48, 51, 70, 52, 7,117,110,105, 48, 51, 70, 53, 7,117,110,105, 48, 51, 70, 54, 7,117,110,105, 48, 51, 70, 55,
+ 7,117,110,105, 48, 51, 70, 56, 7,117,110,105, 48, 51, 70, 57, 7,117,110,105, 48, 51, 70, 65, 7,117,110,105, 48, 51, 70, 66,
+ 7,117,110,105, 48, 51, 70, 67, 7,117,110,105, 48, 51, 70, 68, 7,117,110,105, 48, 51, 70, 69, 7,117,110,105, 48, 51, 70, 70,
+ 7,117,110,105, 48, 52, 48, 48, 7,117,110,105, 48, 52, 48, 49, 7,117,110,105, 48, 52, 48, 50, 7,117,110,105, 48, 52, 48, 51,
+ 7,117,110,105, 48, 52, 48, 52, 7,117,110,105, 48, 52, 48, 53, 7,117,110,105, 48, 52, 48, 54, 7,117,110,105, 48, 52, 48, 55,
+ 7,117,110,105, 48, 52, 48, 56, 7,117,110,105, 48, 52, 48, 57, 7,117,110,105, 48, 52, 48, 65, 7,117,110,105, 48, 52, 48, 66,
+ 7,117,110,105, 48, 52, 48, 67, 7,117,110,105, 48, 52, 48, 68, 7,117,110,105, 48, 52, 48, 69, 7,117,110,105, 48, 52, 48, 70,
+ 7,117,110,105, 48, 52, 49, 48, 7,117,110,105, 48, 52, 49, 49, 7,117,110,105, 48, 52, 49, 50, 7,117,110,105, 48, 52, 49, 51,
+ 7,117,110,105, 48, 52, 49, 52, 7,117,110,105, 48, 52, 49, 53, 7,117,110,105, 48, 52, 49, 54, 7,117,110,105, 48, 52, 49, 55,
+ 7,117,110,105, 48, 52, 49, 56, 7,117,110,105, 48, 52, 49, 57, 7,117,110,105, 48, 52, 49, 65, 7,117,110,105, 48, 52, 49, 66,
+ 7,117,110,105, 48, 52, 49, 67, 7,117,110,105, 48, 52, 49, 68, 7,117,110,105, 48, 52, 49, 69, 7,117,110,105, 48, 52, 49, 70,
+ 7,117,110,105, 48, 52, 50, 48, 7,117,110,105, 48, 52, 50, 49, 7,117,110,105, 48, 52, 50, 50, 7,117,110,105, 48, 52, 50, 51,
+ 7,117,110,105, 48, 52, 50, 52, 7,117,110,105, 48, 52, 50, 53, 7,117,110,105, 48, 52, 50, 54, 7,117,110,105, 48, 52, 50, 55,
+ 7,117,110,105, 48, 52, 50, 56, 7,117,110,105, 48, 52, 50, 57, 7,117,110,105, 48, 52, 50, 65, 7,117,110,105, 48, 52, 50, 66,
+ 7,117,110,105, 48, 52, 50, 67, 7,117,110,105, 48, 52, 50, 68, 7,117,110,105, 48, 52, 50, 69, 7,117,110,105, 48, 52, 50, 70,
+ 7,117,110,105, 48, 52, 51, 48, 7,117,110,105, 48, 52, 51, 49, 7,117,110,105, 48, 52, 51, 50, 7,117,110,105, 48, 52, 51, 51,
+ 7,117,110,105, 48, 52, 51, 52, 7,117,110,105, 48, 52, 51, 53, 7,117,110,105, 48, 52, 51, 54, 7,117,110,105, 48, 52, 51, 55,
+ 7,117,110,105, 48, 52, 51, 56, 7,117,110,105, 48, 52, 51, 57, 7,117,110,105, 48, 52, 51, 65, 7,117,110,105, 48, 52, 51, 66,
+ 7,117,110,105, 48, 52, 51, 67, 7,117,110,105, 48, 52, 51, 68, 7,117,110,105, 48, 52, 51, 69, 7,117,110,105, 48, 52, 51, 70,
+ 7,117,110,105, 48, 52, 52, 48, 7,117,110,105, 48, 52, 52, 49, 7,117,110,105, 48, 52, 52, 50, 7,117,110,105, 48, 52, 52, 51,
+ 7,117,110,105, 48, 52, 52, 52, 7,117,110,105, 48, 52, 52, 53, 7,117,110,105, 48, 52, 52, 54, 7,117,110,105, 48, 52, 52, 55,
+ 7,117,110,105, 48, 52, 52, 56, 7,117,110,105, 48, 52, 52, 57, 7,117,110,105, 48, 52, 52, 65, 7,117,110,105, 48, 52, 52, 66,
+ 7,117,110,105, 48, 52, 52, 67, 7,117,110,105, 48, 52, 52, 68, 7,117,110,105, 48, 52, 52, 69, 7,117,110,105, 48, 52, 52, 70,
+ 7,117,110,105, 48, 52, 53, 48, 7,117,110,105, 48, 52, 53, 49, 7,117,110,105, 48, 52, 53, 50, 7,117,110,105, 48, 52, 53, 51,
+ 7,117,110,105, 48, 52, 53, 52, 7,117,110,105, 48, 52, 53, 53, 7,117,110,105, 48, 52, 53, 54, 7,117,110,105, 48, 52, 53, 55,
+ 7,117,110,105, 48, 52, 53, 56, 7,117,110,105, 48, 52, 53, 57, 7,117,110,105, 48, 52, 53, 65, 7,117,110,105, 48, 52, 53, 66,
+ 7,117,110,105, 48, 52, 53, 67, 7,117,110,105, 48, 52, 53, 68, 7,117,110,105, 48, 52, 53, 69, 7,117,110,105, 48, 52, 53, 70,
+ 7,117,110,105, 48, 52, 57, 48, 7,117,110,105, 48, 52, 57, 49, 7,117,110,105, 48, 52, 57, 50, 7,117,110,105, 48, 52, 57, 51,
+ 7,117,110,105, 48, 52, 57, 52, 7,117,110,105, 48, 52, 57, 53, 7,117,110,105, 48, 52, 57, 54, 7,117,110,105, 48, 52, 57, 55,
+ 7,117,110,105, 48, 52, 57, 56, 7,117,110,105, 48, 52, 57, 57, 7,117,110,105, 48, 52, 57, 65, 7,117,110,105, 48, 52, 57, 66,
+ 7,117,110,105, 48, 52, 65, 50, 7,117,110,105, 48, 52, 65, 51, 7,117,110,105, 48, 52, 65, 65, 7,117,110,105, 48, 52, 65, 66,
+ 7,117,110,105, 48, 52, 65, 67, 7,117,110,105, 48, 52, 65, 68, 7,117,110,105, 48, 52, 65, 69, 7,117,110,105, 48, 52, 65, 70,
+ 7,117,110,105, 48, 52, 66, 48, 7,117,110,105, 48, 52, 66, 49, 7,117,110,105, 48, 52, 66, 50, 7,117,110,105, 48, 52, 66, 51,
+ 7,117,110,105, 48, 52, 66, 65, 7,117,110,105, 48, 52, 66, 66, 7,117,110,105, 48, 52, 67, 48, 7,117,110,105, 48, 52, 67, 49,
+ 7,117,110,105, 48, 52, 67, 50, 7,117,110,105, 48, 52, 67, 51, 7,117,110,105, 48, 52, 67, 52, 7,117,110,105, 48, 52, 67, 55,
+ 7,117,110,105, 48, 52, 67, 56, 7,117,110,105, 48, 52, 67, 66, 7,117,110,105, 48, 52, 67, 67, 7,117,110,105, 48, 52, 67, 70,
+ 7,117,110,105, 48, 52, 68, 48, 7,117,110,105, 48, 52, 68, 49, 7,117,110,105, 48, 52, 68, 50, 7,117,110,105, 48, 52, 68, 51,
+ 7,117,110,105, 48, 52, 68, 52, 7,117,110,105, 48, 52, 68, 53, 7,117,110,105, 48, 52, 68, 54, 7,117,110,105, 48, 52, 68, 55,
+ 7,117,110,105, 48, 52, 68, 56, 7,117,110,105, 48, 52, 68, 57, 7,117,110,105, 48, 52, 68, 65, 7,117,110,105, 48, 52, 68, 66,
+ 7,117,110,105, 48, 52, 68, 67, 7,117,110,105, 48, 52, 68, 68, 7,117,110,105, 48, 52, 68, 69, 7,117,110,105, 48, 52, 68, 70,
+ 7,117,110,105, 48, 52, 69, 48, 7,117,110,105, 48, 52, 69, 49, 7,117,110,105, 48, 52, 69, 50, 7,117,110,105, 48, 52, 69, 51,
+ 7,117,110,105, 48, 52, 69, 52, 7,117,110,105, 48, 52, 69, 53, 7,117,110,105, 48, 52, 69, 54, 7,117,110,105, 48, 52, 69, 55,
+ 7,117,110,105, 48, 52, 69, 56, 7,117,110,105, 48, 52, 69, 57, 7,117,110,105, 48, 52, 69, 65, 7,117,110,105, 48, 52, 69, 66,
+ 7,117,110,105, 48, 52, 69, 67, 7,117,110,105, 48, 52, 69, 68, 7,117,110,105, 48, 52, 69, 69, 7,117,110,105, 48, 52, 69, 70,
+ 7,117,110,105, 48, 52, 70, 48, 7,117,110,105, 48, 52, 70, 49, 7,117,110,105, 48, 52, 70, 50, 7,117,110,105, 48, 52, 70, 51,
+ 7,117,110,105, 48, 52, 70, 52, 7,117,110,105, 48, 52, 70, 53, 7,117,110,105, 48, 52, 70, 54, 7,117,110,105, 48, 52, 70, 55,
+ 7,117,110,105, 48, 52, 70, 56, 7,117,110,105, 48, 52, 70, 57, 7,117,110,105, 48, 54, 48, 67, 7,117,110,105, 48, 54, 49, 53,
+ 7,117,110,105, 48, 54, 49, 66, 7,117,110,105, 48, 54, 49, 70, 7,117,110,105, 48, 54, 50, 49, 7,117,110,105, 48, 54, 50, 50,
+ 7,117,110,105, 48, 54, 50, 51, 7,117,110,105, 48, 54, 50, 52, 7,117,110,105, 48, 54, 50, 53, 7,117,110,105, 48, 54, 50, 54,
+ 7,117,110,105, 48, 54, 50, 55, 7,117,110,105, 48, 54, 50, 56, 7,117,110,105, 48, 54, 50, 57, 7,117,110,105, 48, 54, 50, 65,
+ 7,117,110,105, 48, 54, 50, 66, 7,117,110,105, 48, 54, 50, 67, 7,117,110,105, 48, 54, 50, 68, 7,117,110,105, 48, 54, 50, 69,
+ 7,117,110,105, 48, 54, 50, 70, 7,117,110,105, 48, 54, 51, 48, 7,117,110,105, 48, 54, 51, 49, 7,117,110,105, 48, 54, 51, 50,
+ 7,117,110,105, 48, 54, 51, 51, 7,117,110,105, 48, 54, 51, 52, 7,117,110,105, 48, 54, 51, 53, 7,117,110,105, 48, 54, 51, 54,
+ 7,117,110,105, 48, 54, 51, 55, 7,117,110,105, 48, 54, 51, 56, 7,117,110,105, 48, 54, 51, 57, 7,117,110,105, 48, 54, 51, 65,
+ 7,117,110,105, 48, 54, 52, 48, 7,117,110,105, 48, 54, 52, 49, 7,117,110,105, 48, 54, 52, 50, 7,117,110,105, 48, 54, 52, 51,
+ 7,117,110,105, 48, 54, 52, 52, 7,117,110,105, 48, 54, 52, 53, 7,117,110,105, 48, 54, 52, 54, 7,117,110,105, 48, 54, 52, 55,
+ 7,117,110,105, 48, 54, 52, 56, 7,117,110,105, 48, 54, 52, 57, 7,117,110,105, 48, 54, 52, 65, 7,117,110,105, 48, 54, 52, 66,
+ 7,117,110,105, 48, 54, 52, 67, 7,117,110,105, 48, 54, 52, 68, 7,117,110,105, 48, 54, 52, 69, 7,117,110,105, 48, 54, 52, 70,
+ 7,117,110,105, 48, 54, 53, 48, 7,117,110,105, 48, 54, 53, 49, 7,117,110,105, 48, 54, 53, 50, 7,117,110,105, 48, 54, 53, 51,
+ 7,117,110,105, 48, 54, 53, 52, 7,117,110,105, 48, 54, 53, 53, 7,117,110,105, 48, 54, 53, 65, 7,117,110,105, 48, 54, 54, 48,
+ 7,117,110,105, 48, 54, 54, 49, 7,117,110,105, 48, 54, 54, 50, 7,117,110,105, 48, 54, 54, 51, 7,117,110,105, 48, 54, 54, 52,
+ 7,117,110,105, 48, 54, 54, 53, 7,117,110,105, 48, 54, 54, 54, 7,117,110,105, 48, 54, 54, 55, 7,117,110,105, 48, 54, 54, 56,
+ 7,117,110,105, 48, 54, 54, 57, 7,117,110,105, 48, 54, 54, 65, 7,117,110,105, 48, 54, 54, 66, 7,117,110,105, 48, 54, 54, 67,
+ 7,117,110,105, 48, 54, 54, 68, 7,117,110,105, 48, 54, 54, 69, 7,117,110,105, 48, 54, 54, 70, 7,117,110,105, 48, 54, 55, 52,
+ 7,117,110,105, 48, 54, 55, 57, 7,117,110,105, 48, 54, 55, 65, 7,117,110,105, 48, 54, 55, 66, 7,117,110,105, 48, 54, 55, 67,
+ 7,117,110,105, 48, 54, 55, 68, 7,117,110,105, 48, 54, 55, 69, 7,117,110,105, 48, 54, 55, 70, 7,117,110,105, 48, 54, 56, 48,
+ 7,117,110,105, 48, 54, 56, 49, 7,117,110,105, 48, 54, 56, 50, 7,117,110,105, 48, 54, 56, 51, 7,117,110,105, 48, 54, 56, 52,
+ 7,117,110,105, 48, 54, 56, 53, 7,117,110,105, 48, 54, 56, 54, 7,117,110,105, 48, 54, 56, 55, 7,117,110,105, 48, 54, 57, 49,
+ 7,117,110,105, 48, 54, 57, 50, 7,117,110,105, 48, 54, 57, 56, 7,117,110,105, 48, 54, 65, 49, 7,117,110,105, 48, 54, 65, 52,
+ 7,117,110,105, 48, 54, 65, 57, 7,117,110,105, 48, 54, 65, 70, 7,117,110,105, 48, 54, 66, 53, 7,117,110,105, 48, 54, 66, 65,
+ 7,117,110,105, 48, 54, 66, 69, 7,117,110,105, 48, 54, 67, 54, 7,117,110,105, 48, 54, 67, 67, 7,117,110,105, 48, 54, 67, 69,
+ 7,117,110,105, 48, 54, 68, 53, 7,117,110,105, 48, 54, 70, 48, 7,117,110,105, 48, 54, 70, 49, 7,117,110,105, 48, 54, 70, 50,
+ 7,117,110,105, 48, 54, 70, 51, 7,117,110,105, 48, 54, 70, 52, 7,117,110,105, 48, 54, 70, 53, 7,117,110,105, 48, 54, 70, 54,
+ 7,117,110,105, 48, 54, 70, 55, 7,117,110,105, 48, 54, 70, 56, 7,117,110,105, 48, 54, 70, 57, 7,117,110,105, 48, 69, 56, 49,
+ 7,117,110,105, 48, 69, 56, 50, 7,117,110,105, 48, 69, 56, 52, 7,117,110,105, 48, 69, 56, 55, 7,117,110,105, 48, 69, 56, 56,
+ 7,117,110,105, 48, 69, 56, 65, 7,117,110,105, 48, 69, 56, 68, 7,117,110,105, 48, 69, 57, 52, 7,117,110,105, 48, 69, 57, 53,
+ 7,117,110,105, 48, 69, 57, 54, 7,117,110,105, 48, 69, 57, 55, 7,117,110,105, 48, 69, 57, 57, 7,117,110,105, 48, 69, 57, 65,
+ 7,117,110,105, 48, 69, 57, 66, 7,117,110,105, 48, 69, 57, 67, 7,117,110,105, 48, 69, 57, 68, 7,117,110,105, 48, 69, 57, 69,
+ 7,117,110,105, 48, 69, 57, 70, 7,117,110,105, 48, 69, 65, 49, 7,117,110,105, 48, 69, 65, 50, 7,117,110,105, 48, 69, 65, 51,
+ 7,117,110,105, 48, 69, 65, 53, 7,117,110,105, 48, 69, 65, 55, 7,117,110,105, 48, 69, 65, 65, 7,117,110,105, 48, 69, 65, 66,
+ 7,117,110,105, 48, 69, 65, 68, 7,117,110,105, 48, 69, 65, 69, 7,117,110,105, 48, 69, 65, 70, 7,117,110,105, 48, 69, 66, 48,
+ 7,117,110,105, 48, 69, 66, 49, 7,117,110,105, 48, 69, 66, 50, 7,117,110,105, 48, 69, 66, 51, 7,117,110,105, 48, 69, 66, 52,
+ 7,117,110,105, 48, 69, 66, 53, 7,117,110,105, 48, 69, 66, 54, 7,117,110,105, 48, 69, 66, 55, 7,117,110,105, 48, 69, 66, 56,
+ 7,117,110,105, 48, 69, 66, 57, 7,117,110,105, 48, 69, 66, 66, 7,117,110,105, 48, 69, 66, 67, 7,117,110,105, 48, 69, 67, 56,
+ 7,117,110,105, 48, 69, 67, 57, 7,117,110,105, 48, 69, 67, 65, 7,117,110,105, 48, 69, 67, 66, 7,117,110,105, 48, 69, 67, 67,
+ 7,117,110,105, 48, 69, 67, 68, 7,117,110,105, 49, 48, 68, 48, 7,117,110,105, 49, 48, 68, 49, 7,117,110,105, 49, 48, 68, 50,
+ 7,117,110,105, 49, 48, 68, 51, 7,117,110,105, 49, 48, 68, 52, 7,117,110,105, 49, 48, 68, 53, 7,117,110,105, 49, 48, 68, 54,
+ 7,117,110,105, 49, 48, 68, 55, 7,117,110,105, 49, 48, 68, 56, 7,117,110,105, 49, 48, 68, 57, 7,117,110,105, 49, 48, 68, 65,
+ 7,117,110,105, 49, 48, 68, 66, 7,117,110,105, 49, 48, 68, 67, 7,117,110,105, 49, 48, 68, 68, 7,117,110,105, 49, 48, 68, 69,
+ 7,117,110,105, 49, 48, 68, 70, 7,117,110,105, 49, 48, 69, 48, 7,117,110,105, 49, 48, 69, 49, 7,117,110,105, 49, 48, 69, 50,
+ 7,117,110,105, 49, 48, 69, 51, 7,117,110,105, 49, 48, 69, 52, 7,117,110,105, 49, 48, 69, 53, 7,117,110,105, 49, 48, 69, 54,
+ 7,117,110,105, 49, 48, 69, 55, 7,117,110,105, 49, 48, 69, 56, 7,117,110,105, 49, 48, 69, 57, 7,117,110,105, 49, 48, 69, 65,
+ 7,117,110,105, 49, 48, 69, 66, 7,117,110,105, 49, 48, 69, 67, 7,117,110,105, 49, 48, 69, 68, 7,117,110,105, 49, 48, 69, 69,
+ 7,117,110,105, 49, 48, 69, 70, 7,117,110,105, 49, 48, 70, 48, 7,117,110,105, 49, 48, 70, 49, 7,117,110,105, 49, 48, 70, 50,
+ 7,117,110,105, 49, 48, 70, 51, 7,117,110,105, 49, 48, 70, 52, 7,117,110,105, 49, 48, 70, 53, 7,117,110,105, 49, 48, 70, 54,
+ 7,117,110,105, 49, 48, 70, 55, 7,117,110,105, 49, 48, 70, 56, 7,117,110,105, 49, 48, 70, 57, 7,117,110,105, 49, 48, 70, 65,
+ 7,117,110,105, 49, 48, 70, 66, 7,117,110,105, 49, 48, 70, 67, 7,117,110,105, 49, 68, 48, 50, 7,117,110,105, 49, 68, 48, 56,
+ 7,117,110,105, 49, 68, 48, 57, 7,117,110,105, 49, 68, 49, 52, 7,117,110,105, 49, 68, 49, 54, 7,117,110,105, 49, 68, 49, 55,
+ 7,117,110,105, 49, 68, 49, 68, 7,117,110,105, 49, 68, 49, 69, 7,117,110,105, 49, 68, 49, 70, 7,117,110,105, 49, 68, 50, 67,
+ 7,117,110,105, 49, 68, 50, 68, 7,117,110,105, 49, 68, 50, 69, 7,117,110,105, 49, 68, 51, 48, 7,117,110,105, 49, 68, 51, 49,
+ 7,117,110,105, 49, 68, 51, 50, 7,117,110,105, 49, 68, 51, 51, 7,117,110,105, 49, 68, 51, 52, 7,117,110,105, 49, 68, 51, 53,
+ 7,117,110,105, 49, 68, 51, 54, 7,117,110,105, 49, 68, 51, 55, 7,117,110,105, 49, 68, 51, 56, 7,117,110,105, 49, 68, 51, 57,
+ 7,117,110,105, 49, 68, 51, 65, 7,117,110,105, 49, 68, 51, 66, 7,117,110,105, 49, 68, 51, 67, 7,117,110,105, 49, 68, 51, 69,
+ 7,117,110,105, 49, 68, 51, 70, 7,117,110,105, 49, 68, 52, 48, 7,117,110,105, 49, 68, 52, 49, 7,117,110,105, 49, 68, 52, 50,
+ 7,117,110,105, 49, 68, 52, 51, 7,117,110,105, 49, 68, 52, 52, 7,117,110,105, 49, 68, 52, 53, 7,117,110,105, 49, 68, 52, 54,
+ 7,117,110,105, 49, 68, 52, 55, 7,117,110,105, 49, 68, 52, 56, 7,117,110,105, 49, 68, 52, 57, 7,117,110,105, 49, 68, 52, 65,
+ 7,117,110,105, 49, 68, 52, 66, 7,117,110,105, 49, 68, 52, 67, 7,117,110,105, 49, 68, 52, 68, 7,117,110,105, 49, 68, 52, 69,
+ 7,117,110,105, 49, 68, 52, 70, 7,117,110,105, 49, 68, 53, 48, 7,117,110,105, 49, 68, 53, 49, 7,117,110,105, 49, 68, 53, 50,
+ 7,117,110,105, 49, 68, 53, 51, 7,117,110,105, 49, 68, 53, 52, 7,117,110,105, 49, 68, 53, 53, 7,117,110,105, 49, 68, 53, 54,
+ 7,117,110,105, 49, 68, 53, 55, 7,117,110,105, 49, 68, 53, 56, 7,117,110,105, 49, 68, 53, 57, 7,117,110,105, 49, 68, 53, 65,
+ 7,117,110,105, 49, 68, 53, 66, 7,117,110,105, 49, 68, 54, 50, 7,117,110,105, 49, 68, 54, 51, 7,117,110,105, 49, 68, 54, 52,
+ 7,117,110,105, 49, 68, 54, 53, 7,117,110,105, 49, 68, 55, 55, 7,117,110,105, 49, 68, 55, 56, 7,117,110,105, 49, 68, 55, 66,
+ 7,117,110,105, 49, 68, 56, 53, 7,117,110,105, 49, 68, 57, 66, 7,117,110,105, 49, 68, 57, 67, 7,117,110,105, 49, 68, 57, 68,
+ 7,117,110,105, 49, 68, 57, 69, 7,117,110,105, 49, 68, 57, 70, 7,117,110,105, 49, 68, 65, 48, 7,117,110,105, 49, 68, 65, 49,
+ 7,117,110,105, 49, 68, 65, 50, 7,117,110,105, 49, 68, 65, 51, 7,117,110,105, 49, 68, 65, 52, 7,117,110,105, 49, 68, 65, 53,
+ 7,117,110,105, 49, 68, 65, 54, 7,117,110,105, 49, 68, 65, 55, 7,117,110,105, 49, 68, 65, 56, 7,117,110,105, 49, 68, 65, 57,
+ 7,117,110,105, 49, 68, 65, 65, 7,117,110,105, 49, 68, 65, 66, 7,117,110,105, 49, 68, 65, 67, 7,117,110,105, 49, 68, 65, 68,
+ 7,117,110,105, 49, 68, 65, 69, 7,117,110,105, 49, 68, 65, 70, 7,117,110,105, 49, 68, 66, 48, 7,117,110,105, 49, 68, 66, 49,
+ 7,117,110,105, 49, 68, 66, 50, 7,117,110,105, 49, 68, 66, 51, 7,117,110,105, 49, 68, 66, 52, 7,117,110,105, 49, 68, 66, 53,
+ 7,117,110,105, 49, 68, 66, 54, 7,117,110,105, 49, 68, 66, 55, 7,117,110,105, 49, 68, 66, 57, 7,117,110,105, 49, 68, 66, 65,
+ 7,117,110,105, 49, 68, 66, 66, 7,117,110,105, 49, 68, 66, 67, 7,117,110,105, 49, 68, 66, 68, 7,117,110,105, 49, 68, 66, 69,
+ 7,117,110,105, 49, 68, 66, 70, 7,117,110,105, 49, 69, 48, 48, 7,117,110,105, 49, 69, 48, 49, 7,117,110,105, 49, 69, 48, 50,
+ 7,117,110,105, 49, 69, 48, 51, 7,117,110,105, 49, 69, 48, 52, 7,117,110,105, 49, 69, 48, 53, 7,117,110,105, 49, 69, 48, 54,
+ 7,117,110,105, 49, 69, 48, 55, 7,117,110,105, 49, 69, 48, 56, 7,117,110,105, 49, 69, 48, 57, 7,117,110,105, 49, 69, 48, 65,
+ 7,117,110,105, 49, 69, 48, 66, 7,117,110,105, 49, 69, 48, 67, 7,117,110,105, 49, 69, 48, 68, 7,117,110,105, 49, 69, 48, 69,
+ 7,117,110,105, 49, 69, 48, 70, 7,117,110,105, 49, 69, 49, 48, 7,117,110,105, 49, 69, 49, 49, 7,117,110,105, 49, 69, 49, 50,
+ 7,117,110,105, 49, 69, 49, 51, 7,117,110,105, 49, 69, 49, 56, 7,117,110,105, 49, 69, 49, 57, 7,117,110,105, 49, 69, 49, 65,
+ 7,117,110,105, 49, 69, 49, 66, 7,117,110,105, 49, 69, 49, 67, 7,117,110,105, 49, 69, 49, 68, 7,117,110,105, 49, 69, 49, 69,
+ 7,117,110,105, 49, 69, 49, 70, 7,117,110,105, 49, 69, 50, 48, 7,117,110,105, 49, 69, 50, 49, 7,117,110,105, 49, 69, 50, 50,
+ 7,117,110,105, 49, 69, 50, 51, 7,117,110,105, 49, 69, 50, 52, 7,117,110,105, 49, 69, 50, 53, 7,117,110,105, 49, 69, 50, 56,
+ 7,117,110,105, 49, 69, 50, 57, 7,117,110,105, 49, 69, 50, 65, 7,117,110,105, 49, 69, 50, 66, 7,117,110,105, 49, 69, 50, 67,
+ 7,117,110,105, 49, 69, 50, 68, 7,117,110,105, 49, 69, 51, 48, 7,117,110,105, 49, 69, 51, 49, 7,117,110,105, 49, 69, 51, 50,
+ 7,117,110,105, 49, 69, 51, 51, 7,117,110,105, 49, 69, 51, 52, 7,117,110,105, 49, 69, 51, 53, 7,117,110,105, 49, 69, 51, 54,
+ 7,117,110,105, 49, 69, 51, 55, 7,117,110,105, 49, 69, 51, 56, 7,117,110,105, 49, 69, 51, 57, 7,117,110,105, 49, 69, 51, 65,
+ 7,117,110,105, 49, 69, 51, 66, 7,117,110,105, 49, 69, 51, 67, 7,117,110,105, 49, 69, 51, 68, 7,117,110,105, 49, 69, 51, 69,
+ 7,117,110,105, 49, 69, 51, 70, 7,117,110,105, 49, 69, 52, 48, 7,117,110,105, 49, 69, 52, 49, 7,117,110,105, 49, 69, 52, 50,
+ 7,117,110,105, 49, 69, 52, 51, 7,117,110,105, 49, 69, 52, 52, 7,117,110,105, 49, 69, 52, 53, 7,117,110,105, 49, 69, 52, 54,
+ 7,117,110,105, 49, 69, 52, 55, 7,117,110,105, 49, 69, 52, 56, 7,117,110,105, 49, 69, 52, 57, 7,117,110,105, 49, 69, 52, 65,
+ 7,117,110,105, 49, 69, 52, 66, 7,117,110,105, 49, 69, 53, 54, 7,117,110,105, 49, 69, 53, 55, 7,117,110,105, 49, 69, 53, 56,
+ 7,117,110,105, 49, 69, 53, 57, 7,117,110,105, 49, 69, 53, 65, 7,117,110,105, 49, 69, 53, 66, 7,117,110,105, 49, 69, 53, 67,
+ 7,117,110,105, 49, 69, 53, 68, 7,117,110,105, 49, 69, 53, 69, 7,117,110,105, 49, 69, 53, 70, 7,117,110,105, 49, 69, 54, 48,
+ 7,117,110,105, 49, 69, 54, 49, 7,117,110,105, 49, 69, 54, 50, 7,117,110,105, 49, 69, 54, 51, 7,117,110,105, 49, 69, 54, 56,
+ 7,117,110,105, 49, 69, 54, 57, 7,117,110,105, 49, 69, 54, 65, 7,117,110,105, 49, 69, 54, 66, 7,117,110,105, 49, 69, 54, 67,
+ 7,117,110,105, 49, 69, 54, 68, 7,117,110,105, 49, 69, 54, 69, 7,117,110,105, 49, 69, 54, 70, 7,117,110,105, 49, 69, 55, 48,
+ 7,117,110,105, 49, 69, 55, 49, 7,117,110,105, 49, 69, 55, 50, 7,117,110,105, 49, 69, 55, 51, 7,117,110,105, 49, 69, 55, 52,
+ 7,117,110,105, 49, 69, 55, 53, 7,117,110,105, 49, 69, 55, 54, 7,117,110,105, 49, 69, 55, 55, 7,117,110,105, 49, 69, 55, 69,
+ 7,117,110,105, 49, 69, 55, 70, 6, 87,103,114, 97,118,101, 6,119,103,114, 97,118,101, 6, 87, 97, 99,117,116,101, 6,119, 97,
+ 99,117,116,101, 9, 87,100,105,101,114,101,115,105,115, 9,119,100,105,101,114,101,115,105,115, 7,117,110,105, 49, 69, 56, 54,
+ 7,117,110,105, 49, 69, 56, 55, 7,117,110,105, 49, 69, 56, 56, 7,117,110,105, 49, 69, 56, 57, 7,117,110,105, 49, 69, 56, 65,
+ 7,117,110,105, 49, 69, 56, 66, 7,117,110,105, 49, 69, 56, 69, 7,117,110,105, 49, 69, 56, 70, 7,117,110,105, 49, 69, 57, 50,
+ 7,117,110,105, 49, 69, 57, 51, 7,117,110,105, 49, 69, 57, 52, 7,117,110,105, 49, 69, 57, 53, 7,117,110,105, 49, 69, 57, 54,
+ 7,117,110,105, 49, 69, 57, 66, 7,117,110,105, 49, 69, 65, 48, 7,117,110,105, 49, 69, 65, 49, 7,117,110,105, 49, 69, 66, 48,
+ 7,117,110,105, 49, 69, 66, 49, 7,117,110,105, 49, 69, 66, 56, 7,117,110,105, 49, 69, 66, 57, 7,117,110,105, 49, 69, 66, 67,
+ 7,117,110,105, 49, 69, 66, 68, 7,117,110,105, 49, 69, 67, 65, 7,117,110,105, 49, 69, 67, 66, 7,117,110,105, 49, 69, 67, 67,
+ 7,117,110,105, 49, 69, 67, 68, 7,117,110,105, 49, 69, 69, 52, 7,117,110,105, 49, 69, 69, 53, 6, 89,103,114, 97,118,101, 6,
+121,103,114, 97,118,101, 7,117,110,105, 49, 69, 70, 52, 7,117,110,105, 49, 69, 70, 53, 7,117,110,105, 49, 69, 70, 56, 7,117,
+110,105, 49, 69, 70, 57, 7,117,110,105, 49, 70, 48, 48, 7,117,110,105, 49, 70, 48, 49, 7,117,110,105, 49, 70, 48, 50, 7,117,
+110,105, 49, 70, 48, 51, 7,117,110,105, 49, 70, 48, 52, 7,117,110,105, 49, 70, 48, 53, 7,117,110,105, 49, 70, 48, 54, 7,117,
+110,105, 49, 70, 48, 55, 7,117,110,105, 49, 70, 48, 56, 7,117,110,105, 49, 70, 48, 57, 7,117,110,105, 49, 70, 48, 65, 7,117,
+110,105, 49, 70, 48, 66, 7,117,110,105, 49, 70, 48, 67, 7,117,110,105, 49, 70, 48, 68, 7,117,110,105, 49, 70, 48, 69, 7,117,
+110,105, 49, 70, 48, 70, 7,117,110,105, 49, 70, 49, 48, 7,117,110,105, 49, 70, 49, 49, 7,117,110,105, 49, 70, 49, 50, 7,117,
+110,105, 49, 70, 49, 51, 7,117,110,105, 49, 70, 49, 52, 7,117,110,105, 49, 70, 49, 53, 7,117,110,105, 49, 70, 49, 56, 7,117,
+110,105, 49, 70, 49, 57, 7,117,110,105, 49, 70, 49, 65, 7,117,110,105, 49, 70, 49, 66, 7,117,110,105, 49, 70, 49, 67, 7,117,
+110,105, 49, 70, 49, 68, 7,117,110,105, 49, 70, 50, 48, 7,117,110,105, 49, 70, 50, 49, 7,117,110,105, 49, 70, 50, 50, 7,117,
+110,105, 49, 70, 50, 51, 7,117,110,105, 49, 70, 50, 52, 7,117,110,105, 49, 70, 50, 53, 7,117,110,105, 49, 70, 50, 54, 7,117,
+110,105, 49, 70, 50, 55, 7,117,110,105, 49, 70, 50, 56, 7,117,110,105, 49, 70, 50, 57, 7,117,110,105, 49, 70, 50, 65, 7,117,
+110,105, 49, 70, 50, 66, 7,117,110,105, 49, 70, 50, 67, 7,117,110,105, 49, 70, 50, 68, 7,117,110,105, 49, 70, 50, 69, 7,117,
+110,105, 49, 70, 50, 70, 7,117,110,105, 49, 70, 51, 48, 7,117,110,105, 49, 70, 51, 49, 7,117,110,105, 49, 70, 51, 50, 7,117,
+110,105, 49, 70, 51, 51, 7,117,110,105, 49, 70, 51, 52, 7,117,110,105, 49, 70, 51, 53, 7,117,110,105, 49, 70, 51, 54, 7,117,
+110,105, 49, 70, 51, 55, 7,117,110,105, 49, 70, 51, 56, 7,117,110,105, 49, 70, 51, 57, 7,117,110,105, 49, 70, 51, 65, 7,117,
+110,105, 49, 70, 51, 66, 7,117,110,105, 49, 70, 51, 67, 7,117,110,105, 49, 70, 51, 68, 7,117,110,105, 49, 70, 51, 69, 7,117,
+110,105, 49, 70, 51, 70, 7,117,110,105, 49, 70, 52, 48, 7,117,110,105, 49, 70, 52, 49, 7,117,110,105, 49, 70, 52, 50, 7,117,
+110,105, 49, 70, 52, 51, 7,117,110,105, 49, 70, 52, 52, 7,117,110,105, 49, 70, 52, 53, 7,117,110,105, 49, 70, 52, 56, 7,117,
+110,105, 49, 70, 52, 57, 7,117,110,105, 49, 70, 52, 65, 7,117,110,105, 49, 70, 52, 66, 7,117,110,105, 49, 70, 52, 67, 7,117,
+110,105, 49, 70, 52, 68, 7,117,110,105, 49, 70, 53, 48, 7,117,110,105, 49, 70, 53, 49, 7,117,110,105, 49, 70, 53, 50, 7,117,
+110,105, 49, 70, 53, 51, 7,117,110,105, 49, 70, 53, 52, 7,117,110,105, 49, 70, 53, 53, 7,117,110,105, 49, 70, 53, 54, 7,117,
+110,105, 49, 70, 53, 55, 7,117,110,105, 49, 70, 53, 57, 7,117,110,105, 49, 70, 53, 66, 7,117,110,105, 49, 70, 53, 68, 7,117,
+110,105, 49, 70, 53, 70, 7,117,110,105, 49, 70, 54, 48, 7,117,110,105, 49, 70, 54, 49, 7,117,110,105, 49, 70, 54, 50, 7,117,
+110,105, 49, 70, 54, 51, 7,117,110,105, 49, 70, 54, 52, 7,117,110,105, 49, 70, 54, 53, 7,117,110,105, 49, 70, 54, 54, 7,117,
+110,105, 49, 70, 54, 55, 7,117,110,105, 49, 70, 54, 56, 7,117,110,105, 49, 70, 54, 57, 7,117,110,105, 49, 70, 54, 65, 7,117,
+110,105, 49, 70, 54, 66, 7,117,110,105, 49, 70, 54, 67, 7,117,110,105, 49, 70, 54, 68, 7,117,110,105, 49, 70, 54, 69, 7,117,
+110,105, 49, 70, 54, 70, 7,117,110,105, 49, 70, 55, 48, 7,117,110,105, 49, 70, 55, 49, 7,117,110,105, 49, 70, 55, 50, 7,117,
+110,105, 49, 70, 55, 51, 7,117,110,105, 49, 70, 55, 52, 7,117,110,105, 49, 70, 55, 53, 7,117,110,105, 49, 70, 55, 54, 7,117,
+110,105, 49, 70, 55, 55, 7,117,110,105, 49, 70, 55, 56, 7,117,110,105, 49, 70, 55, 57, 7,117,110,105, 49, 70, 55, 65, 7,117,
+110,105, 49, 70, 55, 66, 7,117,110,105, 49, 70, 55, 67, 7,117,110,105, 49, 70, 55, 68, 7,117,110,105, 49, 70, 56, 48, 7,117,
+110,105, 49, 70, 56, 49, 7,117,110,105, 49, 70, 56, 50, 7,117,110,105, 49, 70, 56, 51, 7,117,110,105, 49, 70, 56, 52, 7,117,
+110,105, 49, 70, 56, 53, 7,117,110,105, 49, 70, 56, 54, 7,117,110,105, 49, 70, 56, 55, 7,117,110,105, 49, 70, 56, 56, 7,117,
+110,105, 49, 70, 56, 57, 7,117,110,105, 49, 70, 56, 65, 7,117,110,105, 49, 70, 56, 66, 7,117,110,105, 49, 70, 56, 67, 7,117,
+110,105, 49, 70, 56, 68, 7,117,110,105, 49, 70, 56, 69, 7,117,110,105, 49, 70, 56, 70, 7,117,110,105, 49, 70, 57, 48, 7,117,
+110,105, 49, 70, 57, 49, 7,117,110,105, 49, 70, 57, 50, 7,117,110,105, 49, 70, 57, 51, 7,117,110,105, 49, 70, 57, 52, 7,117,
+110,105, 49, 70, 57, 53, 7,117,110,105, 49, 70, 57, 54, 7,117,110,105, 49, 70, 57, 55, 7,117,110,105, 49, 70, 57, 56, 7,117,
+110,105, 49, 70, 57, 57, 7,117,110,105, 49, 70, 57, 65, 7,117,110,105, 49, 70, 57, 66, 7,117,110,105, 49, 70, 57, 67, 7,117,
+110,105, 49, 70, 57, 68, 7,117,110,105, 49, 70, 57, 69, 7,117,110,105, 49, 70, 57, 70, 7,117,110,105, 49, 70, 65, 48, 7,117,
+110,105, 49, 70, 65, 49, 7,117,110,105, 49, 70, 65, 50, 7,117,110,105, 49, 70, 65, 51, 7,117,110,105, 49, 70, 65, 52, 7,117,
+110,105, 49, 70, 65, 53, 7,117,110,105, 49, 70, 65, 54, 7,117,110,105, 49, 70, 65, 55, 7,117,110,105, 49, 70, 65, 56, 7,117,
+110,105, 49, 70, 65, 57, 7,117,110,105, 49, 70, 65, 65, 7,117,110,105, 49, 70, 65, 66, 7,117,110,105, 49, 70, 65, 67, 7,117,
+110,105, 49, 70, 65, 68, 7,117,110,105, 49, 70, 65, 69, 7,117,110,105, 49, 70, 65, 70, 7,117,110,105, 49, 70, 66, 48, 7,117,
+110,105, 49, 70, 66, 49, 7,117,110,105, 49, 70, 66, 50, 7,117,110,105, 49, 70, 66, 51, 7,117,110,105, 49, 70, 66, 52, 7,117,
+110,105, 49, 70, 66, 54, 7,117,110,105, 49, 70, 66, 55, 7,117,110,105, 49, 70, 66, 56, 7,117,110,105, 49, 70, 66, 57, 7,117,
+110,105, 49, 70, 66, 65, 7,117,110,105, 49, 70, 66, 66, 7,117,110,105, 49, 70, 66, 67, 7,117,110,105, 49, 70, 66, 68, 7,117,
+110,105, 49, 70, 66, 69, 7,117,110,105, 49, 70, 66, 70, 7,117,110,105, 49, 70, 67, 48, 7,117,110,105, 49, 70, 67, 49, 7,117,
+110,105, 49, 70, 67, 50, 7,117,110,105, 49, 70, 67, 51, 7,117,110,105, 49, 70, 67, 52, 7,117,110,105, 49, 70, 67, 54, 7,117,
+110,105, 49, 70, 67, 55, 7,117,110,105, 49, 70, 67, 56, 7,117,110,105, 49, 70, 67, 57, 7,117,110,105, 49, 70, 67, 65, 7,117,
+110,105, 49, 70, 67, 66, 7,117,110,105, 49, 70, 67, 67, 7,117,110,105, 49, 70, 67, 68, 7,117,110,105, 49, 70, 67, 69, 7,117,
+110,105, 49, 70, 67, 70, 7,117,110,105, 49, 70, 68, 48, 7,117,110,105, 49, 70, 68, 49, 7,117,110,105, 49, 70, 68, 50, 7,117,
+110,105, 49, 70, 68, 51, 7,117,110,105, 49, 70, 68, 54, 7,117,110,105, 49, 70, 68, 55, 7,117,110,105, 49, 70, 68, 56, 7,117,
+110,105, 49, 70, 68, 57, 7,117,110,105, 49, 70, 68, 65, 7,117,110,105, 49, 70, 68, 66, 7,117,110,105, 49, 70, 68, 68, 7,117,
+110,105, 49, 70, 68, 69, 7,117,110,105, 49, 70, 68, 70, 7,117,110,105, 49, 70, 69, 48, 7,117,110,105, 49, 70, 69, 49, 7,117,
+110,105, 49, 70, 69, 50, 7,117,110,105, 49, 70, 69, 51, 7,117,110,105, 49, 70, 69, 52, 7,117,110,105, 49, 70, 69, 53, 7,117,
+110,105, 49, 70, 69, 54, 7,117,110,105, 49, 70, 69, 55, 7,117,110,105, 49, 70, 69, 56, 7,117,110,105, 49, 70, 69, 57, 7,117,
+110,105, 49, 70, 69, 65, 7,117,110,105, 49, 70, 69, 66, 7,117,110,105, 49, 70, 69, 67, 7,117,110,105, 49, 70, 69, 68, 7,117,
+110,105, 49, 70, 69, 69, 7,117,110,105, 49, 70, 69, 70, 7,117,110,105, 49, 70, 70, 50, 7,117,110,105, 49, 70, 70, 51, 7,117,
+110,105, 49, 70, 70, 52, 7,117,110,105, 49, 70, 70, 54, 7,117,110,105, 49, 70, 70, 55, 7,117,110,105, 49, 70, 70, 56, 7,117,
+110,105, 49, 70, 70, 57, 7,117,110,105, 49, 70, 70, 65, 7,117,110,105, 49, 70, 70, 66, 7,117,110,105, 49, 70, 70, 67, 7,117,
+110,105, 49, 70, 70, 68, 7,117,110,105, 49, 70, 70, 69, 7,117,110,105, 50, 48, 48, 48, 7,117,110,105, 50, 48, 48, 49, 7,117,
+110,105, 50, 48, 48, 50, 7,117,110,105, 50, 48, 48, 51, 7,117,110,105, 50, 48, 48, 52, 7,117,110,105, 50, 48, 48, 53, 7,117,
+110,105, 50, 48, 48, 54, 7,117,110,105, 50, 48, 48, 55, 7,117,110,105, 50, 48, 48, 56, 7,117,110,105, 50, 48, 48, 57, 7,117,
+110,105, 50, 48, 48, 65, 7,117,110,105, 50, 48, 49, 48, 7,117,110,105, 50, 48, 49, 49, 10,102,105,103,117,114,101,100, 97,115,
+104, 7,117,110,105, 50, 48, 49, 53, 13,117,110,100,101,114,115, 99,111,114,101,100, 98,108, 13,113,117,111,116,101,114,101,118,
+101,114,115,101,100, 7,117,110,105, 50, 48, 49, 70, 7,117,110,105, 50, 48, 50, 51, 7,117,110,105, 50, 48, 50, 70, 7,117,110,
+105, 50, 48, 51, 49, 9,101,120, 99,108, 97,109,100, 98,108, 7,117,110,105, 50, 48, 51, 68, 7,117,110,105, 50, 48, 51, 69, 7,
+117,110,105, 50, 48, 52, 53, 7,117,110,105, 50, 48, 52, 54, 7,117,110,105, 50, 48, 52, 55, 7,117,110,105, 50, 48, 52, 56, 7,
+117,110,105, 50, 48, 52, 57, 7,117,110,105, 50, 48, 53, 70, 7,117,110,105, 50, 48, 55, 48, 7,117,110,105, 50, 48, 55, 49, 7,
+117,110,105, 50, 48, 55, 52, 7,117,110,105, 50, 48, 55, 53, 7,117,110,105, 50, 48, 55, 54, 7,117,110,105, 50, 48, 55, 55, 7,
+117,110,105, 50, 48, 55, 56, 7,117,110,105, 50, 48, 55, 57, 7,117,110,105, 50, 48, 55, 65, 7,117,110,105, 50, 48, 55, 66, 7,
+117,110,105, 50, 48, 55, 67, 7,117,110,105, 50, 48, 55, 68, 7,117,110,105, 50, 48, 55, 69, 7,117,110,105, 50, 48, 55, 70, 7,
+117,110,105, 50, 48, 56, 48, 7,117,110,105, 50, 48, 56, 49, 7,117,110,105, 50, 48, 56, 50, 7,117,110,105, 50, 48, 56, 51, 7,
+117,110,105, 50, 48, 56, 52, 7,117,110,105, 50, 48, 56, 53, 7,117,110,105, 50, 48, 56, 54, 7,117,110,105, 50, 48, 56, 55, 7,
+117,110,105, 50, 48, 56, 56, 7,117,110,105, 50, 48, 56, 57, 7,117,110,105, 50, 48, 56, 65, 7,117,110,105, 50, 48, 56, 66, 7,
+117,110,105, 50, 48, 56, 67, 7,117,110,105, 50, 48, 56, 68, 7,117,110,105, 50, 48, 56, 69, 7,117,110,105, 50, 48, 57, 48, 7,
+117,110,105, 50, 48, 57, 49, 7,117,110,105, 50, 48, 57, 50, 7,117,110,105, 50, 48, 57, 51, 7,117,110,105, 50, 48, 57, 52, 7,
+117,110,105, 50, 48, 65, 54, 4, 69,117,114,111, 7,117,110,105, 50, 48, 66, 49, 7,117,110,105, 50, 48, 66, 52, 7,117,110,105,
+ 50, 48, 66, 53, 7,117,110,105, 50, 49, 48, 50, 7,117,110,105, 50, 49, 48, 69, 7,117,110,105, 50, 49, 49, 54, 7,117,110,105,
+ 50, 49, 50, 54, 7,117,110,105, 50, 49, 50, 65, 7,117,110,105, 50, 49, 50, 66, 8,111,110,101,116,104,105,114,100, 9,116,119,
+111,116,104,105,114,100,115, 7,117,110,105, 50, 49, 53, 53, 7,117,110,105, 50, 49, 53, 54, 7,117,110,105, 50, 49, 53, 55, 7,
+117,110,105, 50, 49, 53, 56, 7,117,110,105, 50, 49, 53, 57, 7,117,110,105, 50, 49, 53, 65, 9,111,110,101,101,105,103,104,116,
+104, 12,116,104,114,101,101,101,105,103,104,116,104,115, 11,102,105,118,101,101,105,103,104,116,104,115, 12,115,101,118,101,110,
+101,105,103,104,116,104,115, 7,117,110,105, 50, 49, 53, 70, 9, 97,114,114,111,119,108,101,102,116, 7, 97,114,114,111,119,117,
+112, 10, 97,114,114,111,119,114,105,103,104,116, 9, 97,114,114,111,119,100,111,119,110, 9, 97,114,114,111,119, 98,111,116,104,
+ 9, 97,114,114,111,119,117,112,100,110, 7,117,110,105, 50, 49, 57, 54, 7,117,110,105, 50, 49, 57, 55, 7,117,110,105, 50, 49,
+ 57, 56, 7,117,110,105, 50, 49, 57, 57, 7,117,110,105, 50, 49, 57, 65, 7,117,110,105, 50, 49, 57, 66, 7,117,110,105, 50, 49,
+ 57, 67, 7,117,110,105, 50, 49, 57, 68, 7,117,110,105, 50, 49, 57, 69, 7,117,110,105, 50, 49, 57, 70, 7,117,110,105, 50, 49,
+ 65, 48, 7,117,110,105, 50, 49, 65, 49, 7,117,110,105, 50, 49, 65, 50, 7,117,110,105, 50, 49, 65, 51, 7,117,110,105, 50, 49,
+ 65, 52, 7,117,110,105, 50, 49, 65, 53, 7,117,110,105, 50, 49, 65, 54, 7,117,110,105, 50, 49, 65, 55, 12, 97,114,114,111,119,
+117,112,100,110, 98,115,101, 7,117,110,105, 50, 49, 65, 57, 7,117,110,105, 50, 49, 65, 65, 7,117,110,105, 50, 49, 65, 66, 7,
+117,110,105, 50, 49, 65, 67, 7,117,110,105, 50, 49, 65, 68, 7,117,110,105, 50, 49, 65, 69, 7,117,110,105, 50, 49, 65, 70, 7,
+117,110,105, 50, 49, 66, 48, 7,117,110,105, 50, 49, 66, 49, 7,117,110,105, 50, 49, 66, 50, 7,117,110,105, 50, 49, 66, 51, 7,
+117,110,105, 50, 49, 66, 52, 14, 99, 97,114,114,105, 97,103,101,114,101,116,117,114,110, 7,117,110,105, 50, 49, 66, 54, 7,117,
+110,105, 50, 49, 66, 55, 7,117,110,105, 50, 49, 66, 56, 7,117,110,105, 50, 49, 66, 57, 7,117,110,105, 50, 49, 66, 65, 7,117,
+110,105, 50, 49, 66, 66, 7,117,110,105, 50, 49, 66, 67, 7,117,110,105, 50, 49, 66, 68, 7,117,110,105, 50, 49, 66, 69, 7,117,
+110,105, 50, 49, 66, 70, 7,117,110,105, 50, 49, 67, 48, 7,117,110,105, 50, 49, 67, 49, 7,117,110,105, 50, 49, 67, 50, 7,117,
+110,105, 50, 49, 67, 51, 7,117,110,105, 50, 49, 67, 52, 7,117,110,105, 50, 49, 67, 53, 7,117,110,105, 50, 49, 67, 54, 7,117,
+110,105, 50, 49, 67, 55, 7,117,110,105, 50, 49, 67, 56, 7,117,110,105, 50, 49, 67, 57, 7,117,110,105, 50, 49, 67, 65, 7,117,
+110,105, 50, 49, 67, 66, 7,117,110,105, 50, 49, 67, 67, 7,117,110,105, 50, 49, 67, 68, 7,117,110,105, 50, 49, 67, 69, 7,117,
+110,105, 50, 49, 67, 70, 12, 97,114,114,111,119,100, 98,108,108,101,102,116, 10, 97,114,114,111,119,100, 98,108,117,112, 13, 97,
+114,114,111,119,100, 98,108,114,105,103,104,116, 12, 97,114,114,111,119,100, 98,108,100,111,119,110, 12, 97,114,114,111,119,100,
+ 98,108, 98,111,116,104, 7,117,110,105, 50, 49, 68, 53, 7,117,110,105, 50, 49, 68, 54, 7,117,110,105, 50, 49, 68, 55, 7,117,
+110,105, 50, 49, 68, 56, 7,117,110,105, 50, 49, 68, 57, 7,117,110,105, 50, 49, 68, 65, 7,117,110,105, 50, 49, 68, 66, 7,117,
+110,105, 50, 49, 68, 67, 7,117,110,105, 50, 49, 68, 68, 7,117,110,105, 50, 49, 68, 69, 7,117,110,105, 50, 49, 68, 70, 7,117,
+110,105, 50, 49, 69, 48, 7,117,110,105, 50, 49, 69, 49, 7,117,110,105, 50, 49, 69, 50, 7,117,110,105, 50, 49, 69, 51, 7,117,
+110,105, 50, 49, 69, 52, 7,117,110,105, 50, 49, 69, 53, 7,117,110,105, 50, 49, 69, 54, 7,117,110,105, 50, 49, 69, 55, 7,117,
+110,105, 50, 49, 69, 56, 7,117,110,105, 50, 49, 69, 57, 7,117,110,105, 50, 49, 69, 65, 7,117,110,105, 50, 49, 69, 66, 7,117,
+110,105, 50, 49, 69, 67, 7,117,110,105, 50, 49, 69, 68, 7,117,110,105, 50, 49, 69, 69, 7,117,110,105, 50, 49, 69, 70, 7,117,
+110,105, 50, 49, 70, 48, 7,117,110,105, 50, 49, 70, 49, 7,117,110,105, 50, 49, 70, 50, 7,117,110,105, 50, 49, 70, 51, 7,117,
+110,105, 50, 49, 70, 52, 7,117,110,105, 50, 49, 70, 53, 7,117,110,105, 50, 49, 70, 54, 7,117,110,105, 50, 49, 70, 55, 7,117,
+110,105, 50, 49, 70, 56, 7,117,110,105, 50, 49, 70, 57, 7,117,110,105, 50, 49, 70, 65, 7,117,110,105, 50, 49, 70, 66, 7,117,
+110,105, 50, 49, 70, 67, 7,117,110,105, 50, 49, 70, 68, 7,117,110,105, 50, 49, 70, 69, 7,117,110,105, 50, 49, 70, 70, 8,101,
+109,112,116,121,115,101,116, 8,103,114, 97,100,105,101,110,116, 7,101,108,101,109,101,110,116, 10,110,111,116,101,108,101,109,
+101,110,116, 7,117,110,105, 50, 50, 48, 65, 8,115,117, 99,104,116,104, 97,116, 7,117,110,105, 50, 50, 48, 67, 7,117,110,105,
+ 50, 50, 48, 68, 7,117,110,105, 50, 50, 49, 51, 7,117,110,105, 50, 50, 49, 53, 12, 97,115,116,101,114,105,115,107,109, 97,116,
+104, 7,117,110,105, 50, 50, 49, 56, 7,117,110,105, 50, 50, 49, 57, 12,112,114,111,112,111,114,116,105,111,110, 97,108, 10,111,
+114,116,104,111,103,111,110, 97,108, 5, 97,110,103,108,101, 10,108,111,103,105, 99, 97,108, 97,110,100, 9,108,111,103,105, 99,
+ 97,108,111,114, 12,105,110,116,101,114,115,101, 99,116,105,111,110, 5,117,110,105,111,110, 7,117,110,105, 50, 50, 50, 67, 7,
+117,110,105, 50, 50, 50, 68, 7,117,110,105, 50, 50, 51, 56, 7,117,110,105, 50, 50, 51, 57, 7,117,110,105, 50, 50, 51, 65, 7,
+117,110,105, 50, 50, 51, 66, 7,115,105,109,105,108, 97,114, 7,117,110,105, 50, 50, 51, 68, 7,117,110,105, 50, 50, 52, 49, 7,
+117,110,105, 50, 50, 52, 50, 7,117,110,105, 50, 50, 52, 51, 7,117,110,105, 50, 50, 52, 52, 9, 99,111,110,103,114,117,101,110,
+116, 7,117,110,105, 50, 50, 52, 54, 7,117,110,105, 50, 50, 52, 55, 7,117,110,105, 50, 50, 52, 57, 7,117,110,105, 50, 50, 52,
+ 65, 7,117,110,105, 50, 50, 52, 66, 7,117,110,105, 50, 50, 52, 67, 7,117,110,105, 50, 50, 52, 68, 7,117,110,105, 50, 50, 52,
+ 69, 7,117,110,105, 50, 50, 52, 70, 7,117,110,105, 50, 50, 53, 48, 7,117,110,105, 50, 50, 53, 49, 7,117,110,105, 50, 50, 53,
+ 50, 7,117,110,105, 50, 50, 53, 51, 7,117,110,105, 50, 50, 53, 52, 7,117,110,105, 50, 50, 53, 53, 7,117,110,105, 50, 50, 53,
+ 54, 7,117,110,105, 50, 50, 53, 55, 7,117,110,105, 50, 50, 53, 56, 7,117,110,105, 50, 50, 53, 57, 7,117,110,105, 50, 50, 53,
+ 65, 7,117,110,105, 50, 50, 53, 66, 7,117,110,105, 50, 50, 53, 67, 7,117,110,105, 50, 50, 53, 68, 7,117,110,105, 50, 50, 53,
+ 69, 7,117,110,105, 50, 50, 53, 70, 11,101,113,117,105,118, 97,108,101,110, 99,101, 7,117,110,105, 50, 50, 54, 50, 7,117,110,
+105, 50, 50, 54, 51, 7,117,110,105, 50, 50, 54, 54, 7,117,110,105, 50, 50, 54, 55, 7,117,110,105, 50, 50, 54, 56, 7,117,110,
+105, 50, 50, 54, 57, 7,117,110,105, 50, 50, 54, 68, 7,117,110,105, 50, 50, 54, 69, 7,117,110,105, 50, 50, 54, 70, 7,117,110,
+105, 50, 50, 55, 48, 7,117,110,105, 50, 50, 55, 49, 7,117,110,105, 50, 50, 55, 50, 7,117,110,105, 50, 50, 55, 51, 7,117,110,
+105, 50, 50, 55, 52, 7,117,110,105, 50, 50, 55, 53, 7,117,110,105, 50, 50, 55, 54, 7,117,110,105, 50, 50, 55, 55, 7,117,110,
+105, 50, 50, 55, 56, 7,117,110,105, 50, 50, 55, 57, 7,117,110,105, 50, 50, 55, 65, 7,117,110,105, 50, 50, 55, 66, 7,117,110,
+105, 50, 50, 55, 67, 7,117,110,105, 50, 50, 55, 68, 7,117,110,105, 50, 50, 55, 69, 7,117,110,105, 50, 50, 55, 70, 7,117,110,
+105, 50, 50, 56, 48, 7,117,110,105, 50, 50, 56, 49, 12,112,114,111,112,101,114,115,117, 98,115,101,116, 14,112,114,111,112,101,
+114,115,117,112,101,114,115,101,116, 9,110,111,116,115,117, 98,115,101,116, 7,117,110,105, 50, 50, 56, 53, 12,114,101,102,108,
+101,120,115,117, 98,115,101,116, 14,114,101,102,108,101,120,115,117,112,101,114,115,101,116, 7,117,110,105, 50, 50, 56, 56, 7,
+117,110,105, 50, 50, 56, 57, 7,117,110,105, 50, 50, 56, 65, 7,117,110,105, 50, 50, 56, 66, 7,117,110,105, 50, 50, 56, 70, 7,
+117,110,105, 50, 50, 57, 48, 7,117,110,105, 50, 50, 57, 49, 7,117,110,105, 50, 50, 57, 50, 10, 99,105,114, 99,108,101,112,108,
+117,115, 7,117,110,105, 50, 50, 57, 54, 14, 99,105,114, 99,108,101,109,117,108,116,105,112,108,121, 7,117,110,105, 50, 50, 57,
+ 56, 7,117,110,105, 50, 50, 57, 57, 7,117,110,105, 50, 50, 57, 65, 7,117,110,105, 50, 50, 57, 66, 7,117,110,105, 50, 50, 57,
+ 67, 7,117,110,105, 50, 50, 57, 68, 7,117,110,105, 50, 50, 57, 69, 7,117,110,105, 50, 50, 57, 70, 7,117,110,105, 50, 50, 65,
+ 48, 7,117,110,105, 50, 50, 65, 49, 7,100,111,116,109, 97,116,104, 7,117,110,105, 50, 50, 67, 54, 7,117,110,105, 50, 50, 67,
+ 68, 7,117,110,105, 50, 50, 68, 65, 7,117,110,105, 50, 50, 68, 66, 7,117,110,105, 50, 50, 68, 67, 7,117,110,105, 50, 50, 68,
+ 68, 7,117,110,105, 50, 50, 68, 69, 7,117,110,105, 50, 50, 68, 70, 7,117,110,105, 50, 50, 69, 48, 7,117,110,105, 50, 50, 69,
+ 49, 7,117,110,105, 50, 50, 69, 50, 7,117,110,105, 50, 50, 69, 51, 7,117,110,105, 50, 50, 69, 52, 7,117,110,105, 50, 50, 69,
+ 53, 7,117,110,105, 50, 50, 69, 54, 7,117,110,105, 50, 50, 69, 55, 7,117,110,105, 50, 50, 69, 56, 7,117,110,105, 50, 50, 69,
+ 57, 7,117,110,105, 50, 50, 69, 70, 7,117,110,105, 50, 51, 48, 48, 7,117,110,105, 50, 51, 48, 49, 5,104,111,117,115,101, 7,
+117,110,105, 50, 51, 48, 51, 7,117,110,105, 50, 51, 48, 52, 7,117,110,105, 50, 51, 48, 53, 7,117,110,105, 50, 51, 48, 54, 7,
+117,110,105, 50, 51, 48, 56, 7,117,110,105, 50, 51, 48, 57, 7,117,110,105, 50, 51, 48, 65, 7,117,110,105, 50, 51, 48, 66, 7,
+117,110,105, 50, 51, 48, 67, 7,117,110,105, 50, 51, 48, 68, 7,117,110,105, 50, 51, 48, 69, 7,117,110,105, 50, 51, 48, 70, 13,
+114,101,118,108,111,103,105, 99, 97,108,110,111,116, 7,117,110,105, 50, 51, 49, 49, 7,117,110,105, 50, 51, 49, 50, 7,117,110,
+105, 50, 51, 49, 51, 7,117,110,105, 50, 51, 49, 52, 7,117,110,105, 50, 51, 49, 53, 7,117,110,105, 50, 51, 49, 56, 7,117,110,
+105, 50, 51, 49, 57, 7,117,110,105, 50, 51, 49, 67, 7,117,110,105, 50, 51, 49, 68, 7,117,110,105, 50, 51, 49, 69, 7,117,110,
+105, 50, 51, 49, 70, 10,105,110,116,101,103,114, 97,108,116,112, 10,105,110,116,101,103,114, 97,108, 98,116, 7,117,110,105, 50,
+ 51, 50, 53, 7,117,110,105, 50, 51, 50, 54, 7,117,110,105, 50, 51, 50, 55, 7,117,110,105, 50, 51, 50, 56, 7,117,110,105, 50,
+ 51, 50, 66, 7,117,110,105, 50, 51, 51, 53, 7,117,110,105, 50, 51, 51, 55, 7,117,110,105, 50, 51, 51, 56, 7,117,110,105, 50,
+ 51, 51, 57, 7,117,110,105, 50, 51, 51, 65, 7,117,110,105, 50, 51, 51, 66, 7,117,110,105, 50, 51, 51, 67, 7,117,110,105, 50,
+ 51, 51, 68, 7,117,110,105, 50, 51, 51, 69, 7,117,110,105, 50, 51, 52, 49, 7,117,110,105, 50, 51, 52, 50, 7,117,110,105, 50,
+ 51, 52, 51, 7,117,110,105, 50, 51, 52, 52, 7,117,110,105, 50, 51, 52, 55, 7,117,110,105, 50, 51, 52, 56, 7,117,110,105, 50,
+ 51, 52, 57, 7,117,110,105, 50, 51, 52, 66, 7,117,110,105, 50, 51, 52, 67, 7,117,110,105, 50, 51, 52, 68, 7,117,110,105, 50,
+ 51, 53, 48, 7,117,110,105, 50, 51, 53, 50, 7,117,110,105, 50, 51, 53, 51, 7,117,110,105, 50, 51, 53, 52, 7,117,110,105, 50,
+ 51, 53, 55, 7,117,110,105, 50, 51, 53, 56, 7,117,110,105, 50, 51, 53, 57, 7,117,110,105, 50, 51, 53, 65, 7,117,110,105, 50,
+ 51, 53, 66, 7,117,110,105, 50, 51, 53, 67, 7,117,110,105, 50, 51, 53, 69, 7,117,110,105, 50, 51, 53, 70, 7,117,110,105, 50,
+ 51, 54, 48, 7,117,110,105, 50, 51, 54, 51, 7,117,110,105, 50, 51, 54, 52, 7,117,110,105, 50, 51, 54, 53, 7,117,110,105, 50,
+ 51, 54, 56, 7,117,110,105, 50, 51, 54, 57, 7,117,110,105, 50, 51, 54, 66, 7,117,110,105, 50, 51, 54, 67, 7,117,110,105, 50,
+ 51, 54, 68, 7,117,110,105, 50, 51, 54, 69, 7,117,110,105, 50, 51, 54, 70, 7,117,110,105, 50, 51, 55, 48, 7,117,110,105, 50,
+ 51, 55, 51, 7,117,110,105, 50, 51, 55, 52, 7,117,110,105, 50, 51, 55, 53, 7,117,110,105, 50, 51, 55, 54, 7,117,110,105, 50,
+ 51, 55, 55, 7,117,110,105, 50, 51, 55, 56, 7,117,110,105, 50, 51, 55, 57, 7,117,110,105, 50, 51, 55, 65, 7,117,110,105, 50,
+ 51, 55, 68, 7,117,110,105, 50, 51, 56, 48, 7,117,110,105, 50, 51, 56, 49, 7,117,110,105, 50, 51, 56, 50, 7,117,110,105, 50,
+ 51, 56, 51, 7,117,110,105, 50, 51, 56, 56, 7,117,110,105, 50, 51, 56, 57, 7,117,110,105, 50, 51, 56, 65, 7,117,110,105, 50,
+ 51, 56, 66, 7,117,110,105, 50, 51, 57, 53, 7,117,110,105, 50, 51, 57, 66, 7,117,110,105, 50, 51, 57, 67, 7,117,110,105, 50,
+ 51, 57, 68, 7,117,110,105, 50, 51, 57, 69, 7,117,110,105, 50, 51, 57, 70, 7,117,110,105, 50, 51, 65, 48, 7,117,110,105, 50,
+ 51, 65, 49, 7,117,110,105, 50, 51, 65, 50, 7,117,110,105, 50, 51, 65, 51, 7,117,110,105, 50, 51, 65, 52, 7,117,110,105, 50,
+ 51, 65, 53, 7,117,110,105, 50, 51, 65, 54, 7,117,110,105, 50, 51, 65, 55, 7,117,110,105, 50, 51, 65, 56, 7,117,110,105, 50,
+ 51, 65, 57, 7,117,110,105, 50, 51, 65, 65, 7,117,110,105, 50, 51, 65, 66, 7,117,110,105, 50, 51, 65, 67, 7,117,110,105, 50,
+ 51, 65, 68, 7,117,110,105, 50, 51, 65, 69, 7,117,110,105, 50, 51, 67, 69, 7,117,110,105, 50, 51, 67, 70, 7,117,110,105, 50,
+ 52, 50, 51, 8, 83, 70, 49, 48, 48, 48, 48, 48, 7,117,110,105, 50, 53, 48, 49, 8, 83, 70, 49, 49, 48, 48, 48, 48, 7,117,110,
+105, 50, 53, 48, 51, 7,117,110,105, 50, 53, 48, 52, 7,117,110,105, 50, 53, 48, 53, 7,117,110,105, 50, 53, 48, 54, 7,117,110,
+105, 50, 53, 48, 55, 7,117,110,105, 50, 53, 48, 56, 7,117,110,105, 50, 53, 48, 57, 7,117,110,105, 50, 53, 48, 65, 7,117,110,
+105, 50, 53, 48, 66, 8, 83, 70, 48, 49, 48, 48, 48, 48, 7,117,110,105, 50, 53, 48, 68, 7,117,110,105, 50, 53, 48, 69, 7,117,
+110,105, 50, 53, 48, 70, 8, 83, 70, 48, 51, 48, 48, 48, 48, 7,117,110,105, 50, 53, 49, 49, 7,117,110,105, 50, 53, 49, 50, 7,
+117,110,105, 50, 53, 49, 51, 8, 83, 70, 48, 50, 48, 48, 48, 48, 7,117,110,105, 50, 53, 49, 53, 7,117,110,105, 50, 53, 49, 54,
+ 7,117,110,105, 50, 53, 49, 55, 8, 83, 70, 48, 52, 48, 48, 48, 48, 7,117,110,105, 50, 53, 49, 57, 7,117,110,105, 50, 53, 49,
+ 65, 7,117,110,105, 50, 53, 49, 66, 8, 83, 70, 48, 56, 48, 48, 48, 48, 7,117,110,105, 50, 53, 49, 68, 7,117,110,105, 50, 53,
+ 49, 69, 7,117,110,105, 50, 53, 49, 70, 7,117,110,105, 50, 53, 50, 48, 7,117,110,105, 50, 53, 50, 49, 7,117,110,105, 50, 53,
+ 50, 50, 7,117,110,105, 50, 53, 50, 51, 8, 83, 70, 48, 57, 48, 48, 48, 48, 7,117,110,105, 50, 53, 50, 53, 7,117,110,105, 50,
+ 53, 50, 54, 7,117,110,105, 50, 53, 50, 55, 7,117,110,105, 50, 53, 50, 56, 7,117,110,105, 50, 53, 50, 57, 7,117,110,105, 50,
+ 53, 50, 65, 7,117,110,105, 50, 53, 50, 66, 8, 83, 70, 48, 54, 48, 48, 48, 48, 7,117,110,105, 50, 53, 50, 68, 7,117,110,105,
+ 50, 53, 50, 69, 7,117,110,105, 50, 53, 50, 70, 7,117,110,105, 50, 53, 51, 48, 7,117,110,105, 50, 53, 51, 49, 7,117,110,105,
+ 50, 53, 51, 50, 7,117,110,105, 50, 53, 51, 51, 8, 83, 70, 48, 55, 48, 48, 48, 48, 7,117,110,105, 50, 53, 51, 53, 7,117,110,
+105, 50, 53, 51, 54, 7,117,110,105, 50, 53, 51, 55, 7,117,110,105, 50, 53, 51, 56, 7,117,110,105, 50, 53, 51, 57, 7,117,110,
+105, 50, 53, 51, 65, 7,117,110,105, 50, 53, 51, 66, 8, 83, 70, 48, 53, 48, 48, 48, 48, 7,117,110,105, 50, 53, 51, 68, 7,117,
+110,105, 50, 53, 51, 69, 7,117,110,105, 50, 53, 51, 70, 7,117,110,105, 50, 53, 52, 48, 7,117,110,105, 50, 53, 52, 49, 7,117,
+110,105, 50, 53, 52, 50, 7,117,110,105, 50, 53, 52, 51, 7,117,110,105, 50, 53, 52, 52, 7,117,110,105, 50, 53, 52, 53, 7,117,
+110,105, 50, 53, 52, 54, 7,117,110,105, 50, 53, 52, 55, 7,117,110,105, 50, 53, 52, 56, 7,117,110,105, 50, 53, 52, 57, 7,117,
+110,105, 50, 53, 52, 65, 7,117,110,105, 50, 53, 52, 66, 7,117,110,105, 50, 53, 52, 67, 7,117,110,105, 50, 53, 52, 68, 7,117,
+110,105, 50, 53, 52, 69, 7,117,110,105, 50, 53, 52, 70, 8, 83, 70, 52, 51, 48, 48, 48, 48, 8, 83, 70, 50, 52, 48, 48, 48, 48,
+ 8, 83, 70, 53, 49, 48, 48, 48, 48, 8, 83, 70, 53, 50, 48, 48, 48, 48, 8, 83, 70, 51, 57, 48, 48, 48, 48, 8, 83, 70, 50, 50,
+ 48, 48, 48, 48, 8, 83, 70, 50, 49, 48, 48, 48, 48, 8, 83, 70, 50, 53, 48, 48, 48, 48, 8, 83, 70, 53, 48, 48, 48, 48, 48, 8,
+ 83, 70, 52, 57, 48, 48, 48, 48, 8, 83, 70, 51, 56, 48, 48, 48, 48, 8, 83, 70, 50, 56, 48, 48, 48, 48, 8, 83, 70, 50, 55, 48,
+ 48, 48, 48, 8, 83, 70, 50, 54, 48, 48, 48, 48, 8, 83, 70, 51, 54, 48, 48, 48, 48, 8, 83, 70, 51, 55, 48, 48, 48, 48, 8, 83,
+ 70, 52, 50, 48, 48, 48, 48, 8, 83, 70, 49, 57, 48, 48, 48, 48, 8, 83, 70, 50, 48, 48, 48, 48, 48, 8, 83, 70, 50, 51, 48, 48,
+ 48, 48, 8, 83, 70, 52, 55, 48, 48, 48, 48, 8, 83, 70, 52, 56, 48, 48, 48, 48, 8, 83, 70, 52, 49, 48, 48, 48, 48, 8, 83, 70,
+ 52, 53, 48, 48, 48, 48, 8, 83, 70, 52, 54, 48, 48, 48, 48, 8, 83, 70, 52, 48, 48, 48, 48, 48, 8, 83, 70, 53, 52, 48, 48, 48,
+ 48, 8, 83, 70, 53, 51, 48, 48, 48, 48, 8, 83, 70, 52, 52, 48, 48, 48, 48, 7,117,110,105, 50, 53, 54, 68, 7,117,110,105, 50,
+ 53, 54, 69, 7,117,110,105, 50, 53, 54, 70, 7,117,110,105, 50, 53, 55, 48, 7,117,110,105, 50, 53, 55, 49, 7,117,110,105, 50,
+ 53, 55, 50, 7,117,110,105, 50, 53, 55, 51, 7,117,110,105, 50, 53, 55, 52, 7,117,110,105, 50, 53, 55, 53, 7,117,110,105, 50,
+ 53, 55, 54, 7,117,110,105, 50, 53, 55, 55, 7,117,110,105, 50, 53, 55, 56, 7,117,110,105, 50, 53, 55, 57, 7,117,110,105, 50,
+ 53, 55, 65, 7,117,110,105, 50, 53, 55, 66, 7,117,110,105, 50, 53, 55, 67, 7,117,110,105, 50, 53, 55, 68, 7,117,110,105, 50,
+ 53, 55, 69, 7,117,110,105, 50, 53, 55, 70, 7,117,112, 98,108,111, 99,107, 7,117,110,105, 50, 53, 56, 49, 7,117,110,105, 50,
+ 53, 56, 50, 7,117,110,105, 50, 53, 56, 51, 7,100,110, 98,108,111, 99,107, 7,117,110,105, 50, 53, 56, 53, 7,117,110,105, 50,
+ 53, 56, 54, 7,117,110,105, 50, 53, 56, 55, 5, 98,108,111, 99,107, 7,117,110,105, 50, 53, 56, 57, 7,117,110,105, 50, 53, 56,
+ 65, 7,117,110,105, 50, 53, 56, 66, 7,108,102, 98,108,111, 99,107, 7,117,110,105, 50, 53, 56, 68, 7,117,110,105, 50, 53, 56,
+ 69, 7,117,110,105, 50, 53, 56, 70, 7,114,116, 98,108,111, 99,107, 7,108,116,115,104, 97,100,101, 5,115,104, 97,100,101, 7,
+100,107,115,104, 97,100,101, 7,117,110,105, 50, 53, 57, 52, 7,117,110,105, 50, 53, 57, 53, 7,117,110,105, 50, 53, 57, 54, 7,
+117,110,105, 50, 53, 57, 55, 7,117,110,105, 50, 53, 57, 56, 7,117,110,105, 50, 53, 57, 57, 7,117,110,105, 50, 53, 57, 65, 7,
+117,110,105, 50, 53, 57, 66, 7,117,110,105, 50, 53, 57, 67, 7,117,110,105, 50, 53, 57, 68, 7,117,110,105, 50, 53, 57, 69, 7,
+117,110,105, 50, 53, 57, 70, 9,102,105,108,108,101,100, 98,111,120, 6, 72, 50, 50, 48, 55, 51, 7,117,110,105, 50, 53, 65, 50,
+ 7,117,110,105, 50, 53, 65, 51, 7,117,110,105, 50, 53, 65, 52, 7,117,110,105, 50, 53, 65, 53, 7,117,110,105, 50, 53, 65, 54,
+ 7,117,110,105, 50, 53, 65, 55, 7,117,110,105, 50, 53, 65, 56, 7,117,110,105, 50, 53, 65, 57, 6, 72, 49, 56, 53, 52, 51, 6,
+ 72, 49, 56, 53, 53, 49, 10,102,105,108,108,101,100,114,101, 99,116, 7,117,110,105, 50, 53, 65, 68, 7,117,110,105, 50, 53, 65,
+ 69, 7,117,110,105, 50, 53, 65, 70, 7,117,110,105, 50, 53, 66, 48, 7,117,110,105, 50, 53, 66, 49, 7,116,114,105, 97,103,117,
+112, 7,117,110,105, 50, 53, 66, 51, 7,117,110,105, 50, 53, 66, 52, 7,117,110,105, 50, 53, 66, 53, 7,117,110,105, 50, 53, 66,
+ 54, 7,117,110,105, 50, 53, 66, 55, 7,117,110,105, 50, 53, 66, 56, 7,117,110,105, 50, 53, 66, 57, 7,116,114,105, 97,103,114,
+116, 7,117,110,105, 50, 53, 66, 66, 7,116,114,105, 97,103,100,110, 7,117,110,105, 50, 53, 66, 68, 7,117,110,105, 50, 53, 66,
+ 69, 7,117,110,105, 50, 53, 66, 70, 7,117,110,105, 50, 53, 67, 48, 7,117,110,105, 50, 53, 67, 49, 7,117,110,105, 50, 53, 67,
+ 50, 7,117,110,105, 50, 53, 67, 51, 7,116,114,105, 97,103,108,102, 7,117,110,105, 50, 53, 67, 53, 7,117,110,105, 50, 53, 67,
+ 54, 7,117,110,105, 50, 53, 67, 55, 7,117,110,105, 50, 53, 67, 56, 7,117,110,105, 50, 53, 67, 57, 6, 99,105,114, 99,108,101,
+ 7,117,110,105, 50, 53, 67, 67, 7,117,110,105, 50, 53, 67, 68, 7,117,110,105, 50, 53, 67, 69, 6, 72, 49, 56, 53, 51, 51, 7,
+117,110,105, 50, 53, 68, 48, 7,117,110,105, 50, 53, 68, 49, 7,117,110,105, 50, 53, 68, 50, 7,117,110,105, 50, 53, 68, 51, 7,
+117,110,105, 50, 53, 68, 52, 7,117,110,105, 50, 53, 68, 53, 7,117,110,105, 50, 53, 68, 54, 7,117,110,105, 50, 53, 68, 55, 9,
+105,110,118, 98,117,108,108,101,116, 9,105,110,118, 99,105,114, 99,108,101, 7,117,110,105, 50, 53, 68, 65, 7,117,110,105, 50,
+ 53, 68, 66, 7,117,110,105, 50, 53, 68, 67, 7,117,110,105, 50, 53, 68, 68, 7,117,110,105, 50, 53, 68, 69, 7,117,110,105, 50,
+ 53, 68, 70, 7,117,110,105, 50, 53, 69, 48, 7,117,110,105, 50, 53, 69, 49, 7,117,110,105, 50, 53, 69, 50, 7,117,110,105, 50,
+ 53, 69, 51, 7,117,110,105, 50, 53, 69, 52, 7,117,110,105, 50, 53, 69, 53, 10,111,112,101,110, 98,117,108,108,101,116, 7,117,
+110,105, 50, 53, 69, 55, 7,117,110,105, 50, 53, 69, 56, 7,117,110,105, 50, 53, 69, 57, 7,117,110,105, 50, 53, 69, 65, 7,117,
+110,105, 50, 53, 69, 66, 7,117,110,105, 50, 53, 69, 67, 7,117,110,105, 50, 53, 69, 68, 7,117,110,105, 50, 53, 69, 69, 7,117,
+110,105, 50, 53, 69, 70, 7,117,110,105, 50, 53, 70, 48, 7,117,110,105, 50, 53, 70, 49, 7,117,110,105, 50, 53, 70, 50, 7,117,
+110,105, 50, 53, 70, 51, 7,117,110,105, 50, 53, 70, 52, 7,117,110,105, 50, 53, 70, 53, 7,117,110,105, 50, 53, 70, 54, 7,117,
+110,105, 50, 53, 70, 55, 7,117,110,105, 50, 53, 70, 56, 7,117,110,105, 50, 53, 70, 57, 7,117,110,105, 50, 53, 70, 65, 7,117,
+110,105, 50, 53, 70, 66, 7,117,110,105, 50, 53, 70, 67, 7,117,110,105, 50, 53, 70, 68, 7,117,110,105, 50, 53, 70, 69, 7,117,
+110,105, 50, 53, 70, 70, 7,117,110,105, 50, 54, 48, 48, 7,117,110,105, 50, 54, 48, 49, 7,117,110,105, 50, 54, 48, 50, 7,117,
+110,105, 50, 54, 48, 51, 7,117,110,105, 50, 54, 48, 52, 7,117,110,105, 50, 54, 48, 53, 7,117,110,105, 50, 54, 48, 54, 7,117,
+110,105, 50, 54, 48, 55, 7,117,110,105, 50, 54, 48, 56, 7,117,110,105, 50, 54, 48, 57, 7,117,110,105, 50, 54, 48, 65, 7,117,
+110,105, 50, 54, 48, 66, 7,117,110,105, 50, 54, 48, 67, 7,117,110,105, 50, 54, 48, 68, 7,117,110,105, 50, 54, 48, 69, 7,117,
+110,105, 50, 54, 48, 70, 7,117,110,105, 50, 54, 49, 48, 7,117,110,105, 50, 54, 49, 49, 7,117,110,105, 50, 54, 49, 50, 7,117,
+110,105, 50, 54, 49, 51, 7,117,110,105, 50, 54, 49, 52, 7,117,110,105, 50, 54, 49, 53, 7,117,110,105, 50, 54, 49, 54, 7,117,
+110,105, 50, 54, 49, 55, 7,117,110,105, 50, 54, 49, 56, 7,117,110,105, 50, 54, 49, 57, 7,117,110,105, 50, 54, 49, 65, 7,117,
+110,105, 50, 54, 49, 66, 7,117,110,105, 50, 54, 49, 67, 7,117,110,105, 50, 54, 49, 68, 7,117,110,105, 50, 54, 49, 69, 7,117,
+110,105, 50, 54, 49, 70, 7,117,110,105, 50, 54, 50, 48, 7,117,110,105, 50, 54, 50, 49, 7,117,110,105, 50, 54, 50, 50, 7,117,
+110,105, 50, 54, 50, 51, 7,117,110,105, 50, 54, 50, 52, 7,117,110,105, 50, 54, 50, 53, 7,117,110,105, 50, 54, 50, 54, 7,117,
+110,105, 50, 54, 50, 55, 7,117,110,105, 50, 54, 50, 56, 7,117,110,105, 50, 54, 50, 57, 7,117,110,105, 50, 54, 50, 65, 7,117,
+110,105, 50, 54, 50, 66, 7,117,110,105, 50, 54, 50, 67, 7,117,110,105, 50, 54, 50, 68, 7,117,110,105, 50, 54, 50, 69, 7,117,
+110,105, 50, 54, 50, 70, 7,117,110,105, 50, 54, 51, 56, 7,117,110,105, 50, 54, 51, 57, 9,115,109,105,108,101,102, 97, 99,101,
+ 12,105,110,118,115,109,105,108,101,102, 97, 99,101, 3,115,117,110, 7,117,110,105, 50, 54, 51, 68, 7,117,110,105, 50, 54, 51,
+ 69, 7,117,110,105, 50, 54, 51, 70, 6,102,101,109, 97,108,101, 7,117,110,105, 50, 54, 52, 49, 4,109, 97,108,101, 7,117,110,
+105, 50, 54, 52, 51, 7,117,110,105, 50, 54, 52, 52, 7,117,110,105, 50, 54, 52, 53, 7,117,110,105, 50, 54, 52, 54, 7,117,110,
+105, 50, 54, 52, 55, 7,117,110,105, 50, 54, 52, 56, 7,117,110,105, 50, 54, 52, 57, 7,117,110,105, 50, 54, 52, 65, 7,117,110,
+105, 50, 54, 52, 66, 7,117,110,105, 50, 54, 52, 67, 7,117,110,105, 50, 54, 52, 68, 7,117,110,105, 50, 54, 52, 69, 7,117,110,
+105, 50, 54, 52, 70, 7,117,110,105, 50, 54, 53, 48, 7,117,110,105, 50, 54, 53, 49, 7,117,110,105, 50, 54, 53, 50, 7,117,110,
+105, 50, 54, 53, 51, 7,117,110,105, 50, 54, 53, 52, 7,117,110,105, 50, 54, 53, 53, 7,117,110,105, 50, 54, 53, 54, 7,117,110,
+105, 50, 54, 53, 55, 7,117,110,105, 50, 54, 53, 56, 7,117,110,105, 50, 54, 53, 57, 7,117,110,105, 50, 54, 53, 65, 7,117,110,
+105, 50, 54, 53, 66, 7,117,110,105, 50, 54, 53, 67, 7,117,110,105, 50, 54, 53, 68, 7,117,110,105, 50, 54, 53, 69, 7,117,110,
+105, 50, 54, 53, 70, 5,115,112, 97,100,101, 7,117,110,105, 50, 54, 54, 49, 7,117,110,105, 50, 54, 54, 50, 4, 99,108,117, 98,
+ 7,117,110,105, 50, 54, 54, 52, 5,104,101, 97,114,116, 7,100,105, 97,109,111,110,100, 7,117,110,105, 50, 54, 54, 55, 7,117,
+110,105, 50, 54, 54, 56, 7,117,110,105, 50, 54, 54, 57, 11,109,117,115,105, 99, 97,108,110,111,116,101, 14,109,117,115,105, 99,
+ 97,108,110,111,116,101,100, 98,108, 7,117,110,105, 50, 54, 54, 67, 7,117,110,105, 50, 54, 54, 68, 7,117,110,105, 50, 54, 54,
+ 69, 7,117,110,105, 50, 54, 54, 70, 7,117,110,105, 50, 54, 55, 48, 7,117,110,105, 50, 54, 55, 49, 7,117,110,105, 50, 54, 55,
+ 50, 7,117,110,105, 50, 54, 55, 51, 7,117,110,105, 50, 54, 55, 52, 7,117,110,105, 50, 54, 55, 53, 7,117,110,105, 50, 54, 55,
+ 54, 7,117,110,105, 50, 54, 55, 55, 7,117,110,105, 50, 54, 55, 56, 7,117,110,105, 50, 54, 55, 57, 7,117,110,105, 50, 54, 55,
+ 65, 7,117,110,105, 50, 54, 55, 66, 7,117,110,105, 50, 54, 55, 67, 7,117,110,105, 50, 54, 55, 68, 7,117,110,105, 50, 54, 55,
+ 69, 7,117,110,105, 50, 54, 55, 70, 7,117,110,105, 50, 54, 56, 48, 7,117,110,105, 50, 54, 56, 49, 7,117,110,105, 50, 54, 56,
+ 50, 7,117,110,105, 50, 54, 56, 51, 7,117,110,105, 50, 54, 56, 52, 7,117,110,105, 50, 54, 56, 53, 7,117,110,105, 50, 54, 56,
+ 54, 7,117,110,105, 50, 54, 56, 55, 7,117,110,105, 50, 54, 56, 56, 7,117,110,105, 50, 54, 56, 57, 7,117,110,105, 50, 54, 56,
+ 65, 7,117,110,105, 50, 54, 56, 66, 7,117,110,105, 50, 54, 57, 48, 7,117,110,105, 50, 54, 57, 49, 7,117,110,105, 50, 54, 57,
+ 50, 7,117,110,105, 50, 54, 57, 51, 7,117,110,105, 50, 54, 57, 52, 7,117,110,105, 50, 54, 57, 53, 7,117,110,105, 50, 54, 57,
+ 54, 7,117,110,105, 50, 54, 57, 55, 7,117,110,105, 50, 54, 57, 56, 7,117,110,105, 50, 54, 57, 57, 7,117,110,105, 50, 54, 57,
+ 65, 7,117,110,105, 50, 54, 57, 66, 7,117,110,105, 50, 54, 57, 67, 7,117,110,105, 50, 54, 65, 48, 7,117,110,105, 50, 54, 65,
+ 49, 7,117,110,105, 50, 54, 66, 48, 7,117,110,105, 50, 54, 66, 49, 7,117,110,105, 50, 55, 48, 49, 7,117,110,105, 50, 55, 48,
+ 50, 7,117,110,105, 50, 55, 48, 51, 7,117,110,105, 50, 55, 48, 52, 7,117,110,105, 50, 55, 48, 54, 7,117,110,105, 50, 55, 48,
+ 55, 7,117,110,105, 50, 55, 48, 56, 7,117,110,105, 50, 55, 48, 57, 7,117,110,105, 50, 55, 48, 67, 7,117,110,105, 50, 55, 48,
+ 68, 7,117,110,105, 50, 55, 48, 69, 7,117,110,105, 50, 55, 48, 70, 7,117,110,105, 50, 55, 49, 48, 7,117,110,105, 50, 55, 49,
+ 49, 7,117,110,105, 50, 55, 49, 50, 7,117,110,105, 50, 55, 49, 51, 7,117,110,105, 50, 55, 49, 52, 7,117,110,105, 50, 55, 49,
+ 53, 7,117,110,105, 50, 55, 49, 54, 7,117,110,105, 50, 55, 49, 55, 7,117,110,105, 50, 55, 49, 56, 7,117,110,105, 50, 55, 49,
+ 57, 7,117,110,105, 50, 55, 49, 65, 7,117,110,105, 50, 55, 49, 66, 7,117,110,105, 50, 55, 49, 67, 7,117,110,105, 50, 55, 49,
+ 68, 7,117,110,105, 50, 55, 49, 69, 7,117,110,105, 50, 55, 49, 70, 7,117,110,105, 50, 55, 50, 48, 7,117,110,105, 50, 55, 50,
+ 49, 7,117,110,105, 50, 55, 50, 50, 7,117,110,105, 50, 55, 50, 51, 7,117,110,105, 50, 55, 50, 52, 7,117,110,105, 50, 55, 50,
+ 53, 7,117,110,105, 50, 55, 50, 54, 7,117,110,105, 50, 55, 50, 55, 7,117,110,105, 50, 55, 50, 57, 7,117,110,105, 50, 55, 50,
+ 65, 7,117,110,105, 50, 55, 50, 66, 7,117,110,105, 50, 55, 50, 67, 7,117,110,105, 50, 55, 50, 68, 7,117,110,105, 50, 55, 50,
+ 69, 7,117,110,105, 50, 55, 50, 70, 7,117,110,105, 50, 55, 51, 48, 7,117,110,105, 50, 55, 51, 49, 7,117,110,105, 50, 55, 51,
+ 50, 7,117,110,105, 50, 55, 51, 51, 7,117,110,105, 50, 55, 51, 52, 7,117,110,105, 50, 55, 51, 53, 7,117,110,105, 50, 55, 51,
+ 54, 7,117,110,105, 50, 55, 51, 55, 7,117,110,105, 50, 55, 51, 56, 7,117,110,105, 50, 55, 51, 57, 7,117,110,105, 50, 55, 51,
+ 65, 7,117,110,105, 50, 55, 51, 66, 7,117,110,105, 50, 55, 51, 67, 7,117,110,105, 50, 55, 51, 68, 7,117,110,105, 50, 55, 51,
+ 69, 7,117,110,105, 50, 55, 51, 70, 7,117,110,105, 50, 55, 52, 48, 7,117,110,105, 50, 55, 52, 49, 7,117,110,105, 50, 55, 52,
+ 50, 7,117,110,105, 50, 55, 52, 51, 7,117,110,105, 50, 55, 52, 52, 7,117,110,105, 50, 55, 52, 53, 7,117,110,105, 50, 55, 52,
+ 54, 7,117,110,105, 50, 55, 52, 55, 7,117,110,105, 50, 55, 52, 56, 7,117,110,105, 50, 55, 52, 57, 7,117,110,105, 50, 55, 52,
+ 65, 7,117,110,105, 50, 55, 52, 66, 7,117,110,105, 50, 55, 52, 68, 7,117,110,105, 50, 55, 52, 70, 7,117,110,105, 50, 55, 53,
+ 48, 7,117,110,105, 50, 55, 53, 49, 7,117,110,105, 50, 55, 53, 50, 7,117,110,105, 50, 55, 53, 54, 7,117,110,105, 50, 55, 53,
+ 56, 7,117,110,105, 50, 55, 53, 57, 7,117,110,105, 50, 55, 53, 65, 7,117,110,105, 50, 55, 53, 66, 7,117,110,105, 50, 55, 53,
+ 67, 7,117,110,105, 50, 55, 53, 68, 7,117,110,105, 50, 55, 53, 69, 7,117,110,105, 50, 55, 54, 49, 7,117,110,105, 50, 55, 54,
+ 50, 7,117,110,105, 50, 55, 54, 51, 7,117,110,105, 50, 55, 54, 52, 7,117,110,105, 50, 55, 54, 53, 7,117,110,105, 50, 55, 54,
+ 54, 7,117,110,105, 50, 55, 54, 55, 7,117,110,105, 50, 55, 54, 56, 7,117,110,105, 50, 55, 54, 57, 7,117,110,105, 50, 55, 54,
+ 65, 7,117,110,105, 50, 55, 54, 66, 7,117,110,105, 50, 55, 54, 67, 7,117,110,105, 50, 55, 54, 68, 7,117,110,105, 50, 55, 54,
+ 69, 7,117,110,105, 50, 55, 54, 70, 7,117,110,105, 50, 55, 55, 48, 7,117,110,105, 50, 55, 55, 49, 7,117,110,105, 50, 55, 55,
+ 50, 7,117,110,105, 50, 55, 55, 51, 7,117,110,105, 50, 55, 55, 52, 7,117,110,105, 50, 55, 55, 53, 7,117,110,105, 50, 55, 57,
+ 52, 7,117,110,105, 50, 55, 57, 56, 7,117,110,105, 50, 55, 57, 57, 7,117,110,105, 50, 55, 57, 65, 7,117,110,105, 50, 55, 57,
+ 66, 7,117,110,105, 50, 55, 57, 67, 7,117,110,105, 50, 55, 57, 68, 7,117,110,105, 50, 55, 57, 69, 7,117,110,105, 50, 55, 57,
+ 70, 7,117,110,105, 50, 55, 65, 48, 7,117,110,105, 50, 55, 65, 49, 7,117,110,105, 50, 55, 65, 50, 7,117,110,105, 50, 55, 65,
+ 51, 7,117,110,105, 50, 55, 65, 52, 7,117,110,105, 50, 55, 65, 53, 7,117,110,105, 50, 55, 65, 54, 7,117,110,105, 50, 55, 65,
+ 55, 7,117,110,105, 50, 55, 65, 56, 7,117,110,105, 50, 55, 65, 57, 7,117,110,105, 50, 55, 65, 65, 7,117,110,105, 50, 55, 65,
+ 66, 7,117,110,105, 50, 55, 65, 67, 7,117,110,105, 50, 55, 65, 68, 7,117,110,105, 50, 55, 65, 69, 7,117,110,105, 50, 55, 65,
+ 70, 7,117,110,105, 50, 55, 66, 49, 7,117,110,105, 50, 55, 66, 50, 7,117,110,105, 50, 55, 66, 51, 7,117,110,105, 50, 55, 66,
+ 52, 7,117,110,105, 50, 55, 66, 53, 7,117,110,105, 50, 55, 66, 54, 7,117,110,105, 50, 55, 66, 55, 7,117,110,105, 50, 55, 66,
+ 56, 7,117,110,105, 50, 55, 66, 57, 7,117,110,105, 50, 55, 66, 65, 7,117,110,105, 50, 55, 66, 66, 7,117,110,105, 50, 55, 66,
+ 67, 7,117,110,105, 50, 55, 66, 68, 7,117,110,105, 50, 55, 66, 69, 7,117,110,105, 50, 55, 69, 48, 7,117,110,105, 50, 55, 69,
+ 56, 7,117,110,105, 50, 55, 69, 57, 7,117,110,105, 50, 57, 69, 66, 7,117,110,105, 50, 57, 70, 65, 7,117,110,105, 50, 57, 70,
+ 66, 7,117,110,105, 50, 65, 50, 70, 7,117,110,105, 50, 66, 49, 50, 7,117,110,105, 50, 66, 49, 51, 7,117,110,105, 50, 66, 49,
+ 52, 7,117,110,105, 50, 66, 49, 53, 7,117,110,105, 50, 66, 49, 54, 7,117,110,105, 50, 66, 49, 55, 7,117,110,105, 50, 66, 49,
+ 56, 7,117,110,105, 50, 66, 49, 57, 7,117,110,105, 50, 66, 49, 65, 7,117,110,105, 50, 67, 55, 53, 7,117,110,105, 50, 67, 55,
+ 54, 7,117,110,105, 50, 67, 55, 55, 7,117,110,105, 50, 69, 49, 56, 7,117,110,105, 50, 69, 50, 69, 7,117,110,105, 70, 54, 67,
+ 53, 7,117,110,105, 70, 66, 53, 50, 7,117,110,105, 70, 66, 53, 51, 7,117,110,105, 70, 66, 53, 52, 7,117,110,105, 70, 66, 53,
+ 53, 7,117,110,105, 70, 66, 53, 54, 7,117,110,105, 70, 66, 53, 55, 7,117,110,105, 70, 66, 53, 56, 7,117,110,105, 70, 66, 53,
+ 57, 7,117,110,105, 70, 66, 53, 65, 7,117,110,105, 70, 66, 53, 66, 7,117,110,105, 70, 66, 53, 67, 7,117,110,105, 70, 66, 53,
+ 68, 7,117,110,105, 70, 66, 53, 69, 7,117,110,105, 70, 66, 53, 70, 7,117,110,105, 70, 66, 54, 48, 7,117,110,105, 70, 66, 54,
+ 49, 7,117,110,105, 70, 66, 54, 50, 7,117,110,105, 70, 66, 54, 51, 7,117,110,105, 70, 66, 54, 52, 7,117,110,105, 70, 66, 54,
+ 53, 7,117,110,105, 70, 66, 54, 54, 7,117,110,105, 70, 66, 54, 55, 7,117,110,105, 70, 66, 54, 56, 7,117,110,105, 70, 66, 54,
+ 57, 7,117,110,105, 70, 66, 54, 65, 7,117,110,105, 70, 66, 54, 66, 7,117,110,105, 70, 66, 54, 67, 7,117,110,105, 70, 66, 54,
+ 68, 7,117,110,105, 70, 66, 54, 69, 7,117,110,105, 70, 66, 54, 70, 7,117,110,105, 70, 66, 55, 48, 7,117,110,105, 70, 66, 55,
+ 49, 7,117,110,105, 70, 66, 55, 50, 7,117,110,105, 70, 66, 55, 51, 7,117,110,105, 70, 66, 55, 52, 7,117,110,105, 70, 66, 55,
+ 53, 7,117,110,105, 70, 66, 55, 54, 7,117,110,105, 70, 66, 55, 55, 7,117,110,105, 70, 66, 55, 56, 7,117,110,105, 70, 66, 55,
+ 57, 7,117,110,105, 70, 66, 55, 65, 7,117,110,105, 70, 66, 55, 66, 7,117,110,105, 70, 66, 55, 67, 7,117,110,105, 70, 66, 55,
+ 68, 7,117,110,105, 70, 66, 55, 69, 7,117,110,105, 70, 66, 55, 70, 7,117,110,105, 70, 66, 56, 48, 7,117,110,105, 70, 66, 56,
+ 49, 7,117,110,105, 70, 66, 56, 65, 7,117,110,105, 70, 66, 56, 66, 7,117,110,105, 70, 66, 56, 67, 7,117,110,105, 70, 66, 56,
+ 68, 7,117,110,105, 70, 66, 56, 69, 7,117,110,105, 70, 66, 56, 70, 7,117,110,105, 70, 66, 57, 48, 7,117,110,105, 70, 66, 57,
+ 49, 7,117,110,105, 70, 66, 57, 50, 7,117,110,105, 70, 66, 57, 51, 7,117,110,105, 70, 66, 57, 52, 7,117,110,105, 70, 66, 57,
+ 53, 7,117,110,105, 70, 66, 57, 69, 7,117,110,105, 70, 66, 57, 70, 7,117,110,105, 70, 66, 65, 65, 7,117,110,105, 70, 66, 65,
+ 66, 7,117,110,105, 70, 66, 65, 67, 7,117,110,105, 70, 66, 65, 68, 7,117,110,105, 70, 66, 69, 56, 7,117,110,105, 70, 66, 69,
+ 57, 7,117,110,105, 70, 66, 70, 67, 7,117,110,105, 70, 66, 70, 68, 7,117,110,105, 70, 66, 70, 69, 7,117,110,105, 70, 66, 70,
+ 70, 7,117,110,105, 70, 69, 55, 48, 7,117,110,105, 70, 69, 55, 49, 7,117,110,105, 70, 69, 55, 50, 7,117,110,105, 70, 69, 55,
+ 51, 7,117,110,105, 70, 69, 55, 52, 7,117,110,105, 70, 69, 55, 54, 7,117,110,105, 70, 69, 55, 55, 7,117,110,105, 70, 69, 55,
+ 56, 7,117,110,105, 70, 69, 55, 57, 7,117,110,105, 70, 69, 55, 65, 7,117,110,105, 70, 69, 55, 66, 7,117,110,105, 70, 69, 55,
+ 67, 7,117,110,105, 70, 69, 55, 68, 7,117,110,105, 70, 69, 55, 69, 7,117,110,105, 70, 69, 55, 70, 7,117,110,105, 70, 69, 56,
+ 48, 7,117,110,105, 70, 69, 56, 49, 7,117,110,105, 70, 69, 56, 50, 7,117,110,105, 70, 69, 56, 51, 7,117,110,105, 70, 69, 56,
+ 52, 7,117,110,105, 70, 69, 56, 53, 7,117,110,105, 70, 69, 56, 54, 7,117,110,105, 70, 69, 56, 55, 7,117,110,105, 70, 69, 56,
+ 56, 7,117,110,105, 70, 69, 56, 57, 7,117,110,105, 70, 69, 56, 65, 7,117,110,105, 70, 69, 56, 66, 7,117,110,105, 70, 69, 56,
+ 67, 7,117,110,105, 70, 69, 56, 68, 7,117,110,105, 70, 69, 56, 69, 7,117,110,105, 70, 69, 56, 70, 7,117,110,105, 70, 69, 57,
+ 48, 7,117,110,105, 70, 69, 57, 49, 7,117,110,105, 70, 69, 57, 50, 7,117,110,105, 70, 69, 57, 51, 7,117,110,105, 70, 69, 57,
+ 52, 7,117,110,105, 70, 69, 57, 53, 7,117,110,105, 70, 69, 57, 54, 7,117,110,105, 70, 69, 57, 55, 7,117,110,105, 70, 69, 57,
+ 56, 7,117,110,105, 70, 69, 57, 57, 7,117,110,105, 70, 69, 57, 65, 7,117,110,105, 70, 69, 57, 66, 7,117,110,105, 70, 69, 57,
+ 67, 7,117,110,105, 70, 69, 57, 68, 7,117,110,105, 70, 69, 57, 69, 7,117,110,105, 70, 69, 57, 70, 7,117,110,105, 70, 69, 65,
+ 48, 7,117,110,105, 70, 69, 65, 49, 7,117,110,105, 70, 69, 65, 50, 7,117,110,105, 70, 69, 65, 51, 7,117,110,105, 70, 69, 65,
+ 52, 7,117,110,105, 70, 69, 65, 53, 7,117,110,105, 70, 69, 65, 54, 7,117,110,105, 70, 69, 65, 55, 7,117,110,105, 70, 69, 65,
+ 56, 7,117,110,105, 70, 69, 65, 57, 7,117,110,105, 70, 69, 65, 65, 7,117,110,105, 70, 69, 65, 66, 7,117,110,105, 70, 69, 65,
+ 67, 7,117,110,105, 70, 69, 65, 68, 7,117,110,105, 70, 69, 65, 69, 7,117,110,105, 70, 69, 65, 70, 7,117,110,105, 70, 69, 66,
+ 48, 7,117,110,105, 70, 69, 66, 49, 7,117,110,105, 70, 69, 66, 50, 7,117,110,105, 70, 69, 66, 51, 7,117,110,105, 70, 69, 66,
+ 52, 7,117,110,105, 70, 69, 66, 53, 7,117,110,105, 70, 69, 66, 54, 7,117,110,105, 70, 69, 66, 55, 7,117,110,105, 70, 69, 66,
+ 56, 7,117,110,105, 70, 69, 66, 57, 7,117,110,105, 70, 69, 66, 65, 7,117,110,105, 70, 69, 66, 66, 7,117,110,105, 70, 69, 66,
+ 67, 7,117,110,105, 70, 69, 66, 68, 7,117,110,105, 70, 69, 66, 69, 7,117,110,105, 70, 69, 66, 70, 7,117,110,105, 70, 69, 67,
+ 48, 7,117,110,105, 70, 69, 67, 49, 7,117,110,105, 70, 69, 67, 50, 7,117,110,105, 70, 69, 67, 51, 7,117,110,105, 70, 69, 67,
+ 52, 7,117,110,105, 70, 69, 67, 53, 7,117,110,105, 70, 69, 67, 54, 7,117,110,105, 70, 69, 67, 55, 7,117,110,105, 70, 69, 67,
+ 56, 7,117,110,105, 70, 69, 67, 57, 7,117,110,105, 70, 69, 67, 65, 7,117,110,105, 70, 69, 67, 66, 7,117,110,105, 70, 69, 67,
+ 67, 7,117,110,105, 70, 69, 67, 68, 7,117,110,105, 70, 69, 67, 69, 7,117,110,105, 70, 69, 67, 70, 7,117,110,105, 70, 69, 68,
+ 48, 7,117,110,105, 70, 69, 68, 49, 7,117,110,105, 70, 69, 68, 50, 7,117,110,105, 70, 69, 68, 51, 7,117,110,105, 70, 69, 68,
+ 52, 7,117,110,105, 70, 69, 68, 53, 7,117,110,105, 70, 69, 68, 54, 7,117,110,105, 70, 69, 68, 55, 7,117,110,105, 70, 69, 68,
+ 56, 7,117,110,105, 70, 69, 68, 57, 7,117,110,105, 70, 69, 68, 65, 7,117,110,105, 70, 69, 68, 66, 7,117,110,105, 70, 69, 68,
+ 67, 7,117,110,105, 70, 69, 68, 68, 7,117,110,105, 70, 69, 68, 69, 7,117,110,105, 70, 69, 68, 70, 7,117,110,105, 70, 69, 69,
+ 48, 7,117,110,105, 70, 69, 69, 49, 7,117,110,105, 70, 69, 69, 50, 7,117,110,105, 70, 69, 69, 51, 7,117,110,105, 70, 69, 69,
+ 52, 7,117,110,105, 70, 69, 69, 53, 7,117,110,105, 70, 69, 69, 54, 7,117,110,105, 70, 69, 69, 55, 7,117,110,105, 70, 69, 69,
+ 56, 7,117,110,105, 70, 69, 69, 57, 7,117,110,105, 70, 69, 69, 65, 7,117,110,105, 70, 69, 69, 66, 7,117,110,105, 70, 69, 69,
+ 67, 7,117,110,105, 70, 69, 69, 68, 7,117,110,105, 70, 69, 69, 69, 7,117,110,105, 70, 69, 69, 70, 7,117,110,105, 70, 69, 70,
+ 48, 7,117,110,105, 70, 69, 70, 49, 7,117,110,105, 70, 69, 70, 50, 7,117,110,105, 70, 69, 70, 51, 7,117,110,105, 70, 69, 70,
+ 52, 7,117,110,105, 70, 69, 70, 53, 7,117,110,105, 70, 69, 70, 54, 7,117,110,105, 70, 69, 70, 55, 7,117,110,105, 70, 69, 70,
+ 56, 7,117,110,105, 70, 69, 70, 57, 7,117,110,105, 70, 69, 70, 65, 7,117,110,105, 70, 69, 70, 66, 7,117,110,105, 70, 69, 70,
+ 67, 7,117,110,105, 70, 69, 70, 70, 7,117,110,105, 70, 70, 70, 57, 7,117,110,105, 70, 70, 70, 65, 7,117,110,105, 70, 70, 70,
+ 66, 7,117,110,105, 70, 70, 70, 67, 7,117,110,105, 70, 70, 70, 68, 6,117, 49, 68, 54, 55, 48, 6,117, 49, 68, 54, 55, 49, 6,
+117, 49, 68, 54, 55, 50, 6,117, 49, 68, 54, 55, 51, 6,117, 49, 68, 54, 55, 52, 6,117, 49, 68, 54, 55, 53, 6,117, 49, 68, 54,
+ 55, 54, 6,117, 49, 68, 54, 55, 55, 6,117, 49, 68, 54, 55, 56, 6,117, 49, 68, 54, 55, 57, 6,117, 49, 68, 54, 55, 65, 6,117,
+ 49, 68, 54, 55, 66, 6,117, 49, 68, 54, 55, 67, 6,117, 49, 68, 54, 55, 68, 6,117, 49, 68, 54, 55, 69, 6,117, 49, 68, 54, 55,
+ 70, 6,117, 49, 68, 54, 56, 48, 6,117, 49, 68, 54, 56, 49, 6,117, 49, 68, 54, 56, 50, 6,117, 49, 68, 54, 56, 51, 6,117, 49,
+ 68, 54, 56, 52, 6,117, 49, 68, 54, 56, 53, 6,117, 49, 68, 54, 56, 54, 6,117, 49, 68, 54, 56, 55, 6,117, 49, 68, 54, 56, 56,
+ 6,117, 49, 68, 54, 56, 57, 6,117, 49, 68, 54, 56, 65, 6,117, 49, 68, 54, 56, 66, 6,117, 49, 68, 54, 56, 67, 6,117, 49, 68,
+ 54, 56, 68, 6,117, 49, 68, 54, 56, 69, 6,117, 49, 68, 54, 56, 70, 6,117, 49, 68, 54, 57, 48, 6,117, 49, 68, 54, 57, 49, 6,
+117, 49, 68, 54, 57, 50, 6,117, 49, 68, 54, 57, 51, 6,117, 49, 68, 54, 57, 52, 6,117, 49, 68, 54, 57, 53, 6,117, 49, 68, 54,
+ 57, 54, 6,117, 49, 68, 54, 57, 55, 6,117, 49, 68, 54, 57, 56, 6,117, 49, 68, 54, 57, 57, 6,117, 49, 68, 54, 57, 65, 6,117,
+ 49, 68, 54, 57, 66, 6,117, 49, 68, 54, 57, 67, 6,117, 49, 68, 54, 57, 68, 6,117, 49, 68, 54, 57, 69, 6,117, 49, 68, 54, 57,
+ 70, 6,117, 49, 68, 54, 65, 48, 6,117, 49, 68, 54, 65, 49, 6,117, 49, 68, 54, 65, 50, 6,117, 49, 68, 54, 65, 51, 6,117, 49,
+ 68, 55, 70, 54, 6,117, 49, 68, 55, 70, 55, 6,117, 49, 68, 55, 70, 56, 6,117, 49, 68, 55, 70, 57, 6,117, 49, 68, 55, 70, 65,
+ 6,117, 49, 68, 55, 70, 66, 6,117, 49, 68, 55, 70, 67, 6,117, 49, 68, 55, 70, 68, 6,117, 49, 68, 55, 70, 69, 6,117, 49, 68,
+ 55, 70, 70, 9,100,108, 76,116, 99, 97,114,111,110, 9, 68,105, 97,101,114,101,115,105,115, 5, 65, 99,117,116,101, 5, 84,105,
+108,100,101, 5, 71,114, 97,118,101, 10, 67,105,114, 99,117,109,102,108,101,120, 5, 67, 97,114,111,110, 13,102,114, 97, 99,116,
+105,111,110,115,108, 97,115,104, 12,117,110,105, 48, 51, 49, 49, 46, 99, 97,115,101, 12,117,110,105, 48, 51, 48, 54, 46, 99, 97,
+115,101, 12,117,110,105, 48, 51, 48, 55, 46, 99, 97,115,101, 12,117,110,105, 48, 51, 48, 66, 46, 99, 97,115,101, 12,117,110,105,
+ 48, 51, 48, 70, 46, 99, 97,115,101, 12,116,104,105,110,113,117,101,115,116,105,111,110, 12,117,110,105, 48, 51, 48, 52, 46, 99,
+ 97,115,101, 8,117,110,100,101,114, 98, 97,114, 13,117,110,100,101,114, 98, 97,114, 46,119,105,100,101, 14,117,110,100,101,114,
+ 98, 97,114, 46,115,109, 97,108,108, 3,106,111,116, 17,100,105, 97,101,114,101,115,105,115, 46,115,121,109, 98,111,108,115, 10,
+ 97,114, 97, 98,105, 99, 95,100,111,116, 12, 97,114, 97, 98,105, 99, 95, 50,100,111,116,115, 12, 97,114, 97, 98,105, 99, 95, 51,
+100,111,116,115, 12,117,110,105, 48, 54, 54, 69, 46,102,105,110, 97, 12,117,110,105, 48, 54, 65, 49, 46,105,110,105,116, 12,117,
+110,105, 48, 54, 65, 49, 46,109,101,100,105, 12,117,110,105, 48, 54, 54, 70, 46,102,105,110, 97, 12,117,110,105, 48, 54, 65, 49,
+ 46,102,105,110, 97, 14, 97,114, 97, 98,105, 99, 95, 51,100,111,116,115, 95, 97, 14, 97,114, 97, 98,105, 99, 95, 50,100,111,116,
+115, 95, 97, 12, 97,114, 97, 98,105, 99, 95, 52,100,111,116,115, 14, 97,114, 97, 98,105, 99, 95,103, 97,102, 95, 98, 97,114, 16,
+ 97,114, 97, 98,105, 99, 95,103, 97,102, 95, 98, 97,114, 95, 97, 11, 97,114, 97, 98,105, 99, 95,114,105,110,103, 7, 69,110,103,
+ 46, 97,108,116,185, 2,128, 1, 21,178,148, 93, 5, 65, 28, 1, 21, 0,150, 0, 3, 1, 21, 0,128, 0, 4, 1, 20, 0,254, 0,
+ 3, 1, 19, 0,254, 0, 3, 1, 18, 0, 18, 0, 3, 1, 17, 0,254, 0, 3, 1, 16, 0,254, 0, 3, 1, 15, 0,154, 0, 3, 1,
+ 14, 0,254, 0, 3, 1, 13,178,235, 71, 5, 65, 37, 1, 13, 0,125, 0, 3, 1, 12, 0, 37, 0, 3, 1, 11, 0, 50, 0, 3, 1,
+ 10, 0,150, 0, 3, 1, 9, 0,254, 0, 3, 1, 8, 0, 14, 0, 3, 1, 7, 0,254, 0, 3, 1, 6, 0, 37, 0, 3, 1, 5, 0,
+254, 0, 3, 1, 4, 0, 14, 0, 3, 1, 3, 0, 37, 0, 3, 1, 2, 0,254, 0, 3, 1, 1, 64, 89,254, 3,254,254, 3,253,125,
+ 3,252,254, 3,251,254, 3,250, 50, 3,249,187, 3,248,125, 3,247,246,140, 5,247,254, 3,247,192, 4,246,245, 89, 5,246,140,
+ 3,246,128, 4,245,244, 38, 5,245, 89, 3,245, 64, 4,244, 38, 3,243,242, 47, 5,243,250, 3,242, 47, 3,241,254, 3,240,254,
+ 3,239, 50, 3,238, 20, 3,237,150, 3,236,235, 71, 5,236,254, 3,236,184,255,209, 64,255, 4,235, 71, 3,234,233,100, 5,234,
+150, 3,233,100, 3,232,254, 3,231,230, 27, 5,231,254, 3,230, 27, 3,229,254, 3,228,107, 3,227,254, 3,226,187, 3,225,224,
+ 25, 5,225,250, 3,224, 25, 3,223,150, 3,222,254, 3,221,254, 3,220,219, 21, 5,220,254, 3,219, 21, 3,218,150, 3,217,216,
+ 21, 5,217,254, 3,216,141, 11, 5,216, 21, 3,215,125, 3,214, 58, 3,213,141, 11, 5,213, 58, 3,212,254, 3,211,210, 10, 5,
+211,254, 3,210, 10, 3,209,254, 3,208,254, 3,207,138, 17, 5,207, 28, 3,206, 22, 3,205,254, 3,204,150, 3,203,139, 37, 5,
+203,254, 3,202,254, 3,201,125, 3,200,254, 3,199,254, 3,198,254, 3,197,154, 13, 5,196,254, 3,195,254, 3,194,254, 3,193,
+254, 3,192,141, 11, 5,192, 20, 3,191, 12, 3,190,189,187, 5,190,254, 3,189,188, 93, 5,189,187, 3,189,128, 4,188,187, 37,
+ 5,188, 93, 3,188, 64, 4,187, 37, 3,186,254, 3,185,150, 3,184,143, 65, 5,183,254, 3,182,143, 65, 5,182,250, 3,181,154,
+ 13, 5,180,254, 3,179,100, 3,178,100, 3,177, 14, 3,176, 18, 3,175,254, 3,174,254, 64,253, 3,173,254, 3,172,254, 3,171,
+ 18, 3,170,254, 3,169,168, 14, 5,169, 50, 3,168, 14, 3,167,166, 17, 5,167, 40, 3,166, 17, 3,165,164, 45, 5,165,125, 3,
+164, 45, 3,163,254, 3,162,254, 3,161,254, 3,160,159, 25, 5,160,100, 3,159,158, 16, 5,159, 25, 3,158, 16, 3,157, 10, 3,
+156,254, 3,155,154, 13, 5,155,254, 3,154, 13, 3,153,152, 46, 5,153,254, 3,152, 46, 3,151,143, 65, 5,151,150, 3,150,149,
+187, 5,150,254, 3,149,148, 93, 5,149,187, 3,149,128, 4,148,144, 37, 5,148, 93, 3,148, 64, 4,147,254, 3,146,254, 3,145,
+144, 37, 5,145,187, 3,144, 37, 3,143,139, 37, 5,143, 65, 3,142,141, 11, 5,142, 20, 3,141, 11, 3,140,139, 37, 5,140,100,
+ 3,139,138, 17, 5,139, 37, 3,138, 17, 3,137,254, 3,136,254, 3,135,254, 3,134,133, 17, 5,134,254, 3,133, 17, 3,132,254,
+ 3,131,254, 3,130, 17, 66, 5,130, 83, 3,129,254, 3,128,120, 3,127,126,125, 5,127,254, 3,126,125, 3,125, 30, 3,124,254,
+ 3,123, 14, 3,122,254, 3,119,254, 3,118,254, 3,117,116, 12, 5,117, 15, 3,117,184, 1, 0, 64,218, 4,116, 12, 3,116,192,
+ 4,115, 18, 3,115, 64, 4,114,254, 3,113,254, 3,112,254, 3,111,110, 83, 5,111,150, 3,110,109, 40, 5,110, 83, 3,109, 40,
+ 3,108,254, 3,107, 50, 3,106,254, 3,105, 50, 3,104,250, 3,103,187, 3,102,254, 3,101,254, 3,100,254, 3, 99, 98, 30, 5,
+ 99,254, 3, 98, 0, 16, 5, 98, 30, 3, 97,254, 3, 96,254, 3, 95,254, 3, 94, 90, 11, 5, 94, 14, 3, 93,100, 3, 92,200, 3,
+ 91, 90, 11, 5, 91, 20, 3, 90, 11, 3, 89,254, 3, 88, 20, 3, 87,254, 3, 86,254, 3, 85, 27, 25, 5, 85, 50, 3, 84,254, 3,
+ 83,254, 3, 82,254, 3, 81,125, 3, 80,254, 3, 79, 20, 3, 78,254, 3, 77, 1, 45, 5, 77,254, 3, 76,187, 3, 75, 40, 3, 74,
+ 73, 24, 5, 74, 55, 3, 73, 67, 18, 5, 73, 24, 3, 72, 69, 24, 5, 72,254, 3, 71, 67, 18, 5, 71,100, 3, 70, 69, 24, 5, 70,
+187, 3, 69, 24, 3, 68, 67, 18, 5, 68, 55, 3, 67, 66, 17, 5, 67, 18, 3, 67,184, 2, 64, 64, 9, 4, 66, 65, 15, 5, 66, 17,
+ 3, 66,184, 2, 0, 64, 9, 4, 65, 64, 14, 5, 65, 15, 3, 65,184, 1,192, 64, 9, 4, 64, 63, 12, 5, 64, 14, 3, 64,184, 1,
+128, 64, 9, 4, 63, 12, 9, 5, 63, 12, 3, 63,184, 1, 64, 64,100, 4, 62,254, 3, 61, 1, 45, 5, 61,250, 3, 60,254, 3, 59,
+ 40, 3, 58,254, 3, 57, 17, 66, 5, 57,100, 3, 56, 49, 26, 5, 56, 75, 3, 55,254, 3, 54, 45, 20, 5, 54,254, 3, 53, 75, 3,
+ 52, 48, 26, 5, 52, 75, 3, 51, 48, 26, 5, 51,254, 3, 50, 17, 66, 5, 50,254, 3, 49, 45, 20, 5, 49, 26, 3, 48, 26, 3, 47,
+ 45, 20, 5, 47, 24, 3, 46, 9, 22, 5, 46,187, 3, 45, 44, 19, 5, 45, 20, 3, 45,184, 2,128, 64, 9, 4, 44, 16, 17, 5, 44,
+ 19, 3, 44,184, 2, 64, 64,150, 4, 43, 42, 37, 5, 43,254, 3, 42, 9, 22, 5, 42, 37, 3, 41, 2, 58, 5, 41,254, 3, 40,254,
+ 3, 39,254, 3, 38, 15, 3, 37, 22, 66, 5, 37, 69, 3, 36, 15, 3, 35,254, 3, 34, 15, 15, 5, 34,254, 3, 33, 32, 45, 5, 33,
+125, 3, 32, 45, 3, 31, 75, 3, 30, 17, 66, 5, 30,254, 3, 29,254, 3, 28, 27, 25, 5, 28,254, 3, 27, 0, 16, 5, 27, 25, 3,
+ 26,254, 3, 25,254, 3, 24,254, 3, 23, 22, 66, 5, 23, 70, 3, 22, 21, 45, 5, 22, 66, 3, 21, 20, 16, 5, 21, 45, 3, 20, 16,
+ 3, 19, 0, 16, 5, 19, 20, 3, 18, 17, 66, 5, 18,254, 3, 17, 1, 45, 5, 17, 66, 3, 16, 15, 15, 5, 16, 17, 3, 16,184, 2,
+ 0, 64, 9, 4, 15, 14, 12, 5, 15, 15, 3, 15,184, 1,192, 64, 9, 4, 14, 13, 10, 5, 14, 12, 3, 14,184, 1,128, 64, 9, 4,
+ 13, 12, 9, 5, 13, 10, 3, 13,184, 1, 64,180, 4, 12, 9, 3, 12,184, 1, 0, 64, 55, 4, 11,254, 3, 10, 9, 22, 5, 10,254,
+ 3, 9, 22, 3, 8, 16, 3, 7,254, 3, 6, 1, 45, 5, 6,254, 3, 5, 20, 3, 3, 2, 58, 5, 3,250, 3, 2, 1, 45, 5, 2,
+ 58, 3, 1, 0, 16, 5, 1, 45, 3, 0, 16, 3, 1,184, 1,100,133,141, 1, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 0, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43,
+ 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 29, 0,
+ 0};
+
diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h
index 5fceea63d32..08c5f752fd1 100644
--- a/source/blender/editors/include/ED_anim_api.h
+++ b/source/blender/editors/include/ED_anim_api.h
@@ -243,7 +243,7 @@ short ANIM_animdata_context_getdata(bAnimContext *ac);
void ANIM_deselect_anim_channels(void *data, short datatype, short test, short sel);
/* Set the 'active' channel of type channel_type, in the given action */
-void ANIM_action_set_active_channel(void *data, short datatype, void *channel_data, short channel_type);
+void ANIM_set_active_channel(void *data, short datatype, int filter, void *channel_data, short channel_type);
/* --------------- Settings and/or Defines -------------- */
diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h
index 2aeec16f852..290c7bfbcad 100644
--- a/source/blender/editors/include/ED_armature.h
+++ b/source/blender/editors/include/ED_armature.h
@@ -37,6 +37,7 @@ struct bPoseChannel;
struct wmWindowManager;
struct ListBase;
struct View3D;
+struct RegionView3D;
typedef struct EditBone
{
@@ -102,6 +103,8 @@ struct Bone *get_indexed_bone (struct Object *ob, int index);
float ED_rollBoneToVector(EditBone *bone, float new_up_axis[3]);
EditBone *ED_armature_bone_get_mirrored(struct ListBase *edbo, EditBone *ebo); // XXX this is needed for populating the context iterators
+void add_primitive_bone(struct Scene *scene, struct View3D *v3d, struct RegionView3D *rv3d);
+
void transform_armature_mirror_update(struct Object *obedit);
void clear_armature(struct Scene *scene, struct Object *ob, char mode);
void create_vgroups_from_armature(struct Scene *scene, struct Object *ob, struct Object *par);
diff --git a/source/blender/editors/include/ED_curve.h b/source/blender/editors/include/ED_curve.h
index b79d69e7d07..c619ee80f70 100644
--- a/source/blender/editors/include/ED_curve.h
+++ b/source/blender/editors/include/ED_curve.h
@@ -28,12 +28,13 @@
#ifndef ED_CURVE_H
#define ED_CURVE_H
-struct wmWindowManager;
-struct Scene;
-struct Object;
-struct bContext;
struct Base;
+struct bContext;
+struct Object;
+struct Scene;
+struct Text;
struct View3D;
+struct wmWindowManager;
/* curve_ops.c */
void ED_operatortypes_curve(void);
@@ -57,5 +58,7 @@ void make_editText (struct Object *obedit);
void load_editText (struct Object *obedit);
void free_editText (struct Object *obedit);
+void ED_text_to_object(struct bContext *C, struct Text *text, int split_lines);
+
#endif /* ED_CURVE_H */
diff --git a/source/blender/editors/include/ED_datafiles.h b/source/blender/editors/include/ED_datafiles.h
index 89f28c67533..5d24b93418b 100644
--- a/source/blender/editors/include/ED_datafiles.h
+++ b/source/blender/editors/include/ED_datafiles.h
@@ -49,5 +49,8 @@ extern char datatoc_Bfont[];
extern int datatoc_bfont_ttf_size;
extern char datatoc_bfont_ttf[];
+extern int datatoc_bmonofont_ttf_size;
+extern char datatoc_bmonofont_ttf[];
+
#endif /* ED_DATAFILES_H */
diff --git a/source/blender/editors/include/ED_fileselect.h b/source/blender/editors/include/ED_fileselect.h
index c0efaab3786..df5cf13df55 100644
--- a/source/blender/editors/include/ED_fileselect.h
+++ b/source/blender/editors/include/ED_fileselect.h
@@ -30,6 +30,10 @@
struct SpaceFile;
+#define FILE_SHORTDISPLAY 1
+#define FILE_LONGDISPLAY 2
+#define FILE_IMGDISPLAY 3
+
typedef struct FileSelectParams {
int type; /* the mode of the filebrowser, FILE_BLENDER, FILE_SPECIAL, FILE_MAIN or FILE_LOADLIB */
char title[24]; /* title, also used for the text of the execute button */
diff --git a/source/blender/editors/include/ED_image.h b/source/blender/editors/include/ED_image.h
index 99a8a02e7cf..566105109b2 100644
--- a/source/blender/editors/include/ED_image.h
+++ b/source/blender/editors/include/ED_image.h
@@ -30,6 +30,9 @@
struct SpaceImage;
struct bContext;
+struct Image;
+struct ImageUser;
+struct uiBlock;
/* space_image.c, exported for transform */
struct Image *ED_space_image(struct SpaceImage *sima);
@@ -50,6 +53,9 @@ int ED_space_image_show_paint(struct SpaceImage *sima);
int ED_space_image_show_uvedit(struct SpaceImage *sima, struct Object *obedit);
int ED_space_image_show_uvshadow(struct SpaceImage *sima, struct Object *obedit);
+void ED_image_uiblock_panel(const struct bContext *C, struct uiBlock *block, struct Image **ima_pp,
+ struct ImageUser *iuser, short redraw, short imagechanged);
+
/* image_render.c, export for screen_ops.c, render operator */
void ED_space_image_output(struct bContext *C);
diff --git a/source/blender/editors/include/ED_keyframes_edit.h b/source/blender/editors/include/ED_keyframes_edit.h
index c0646514d1a..1da1196a462 100644
--- a/source/blender/editors/include/ED_keyframes_edit.h
+++ b/source/blender/editors/include/ED_keyframes_edit.h
@@ -134,6 +134,12 @@ void duplicate_fcurve_keys(struct FCurve *fcu);
void clean_fcurve(struct FCurve *fcu, float thresh);
void smooth_fcurve(struct FCurve *fcu);
+/* ----------- */
+
+void free_anim_copybuf(void);
+short copy_animedit_keys(struct bAnimContext *ac, ListBase *anim_data);
+short paste_animedit_keys(struct bAnimContext *ac, ListBase *anim_data);
+
/* ************************************************ */
#endif /* ED_KEYFRAMES_EDIT_H */
diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h
index b289994c1ee..f431b5d5f84 100644
--- a/source/blender/editors/include/ED_mesh.h
+++ b/source/blender/editors/include/ED_mesh.h
@@ -75,9 +75,10 @@ void EDBM_Tesselate(struct EditMesh *em);
/* meshtools.c */
-intptr_t mesh_octree_table(Object *ob, struct EditMesh *em, float *co, char mode);
-struct EditVert *editmesh_get_x_mirror_vert(Object *ob, struct EditMesh *em, float *co);
-int mesh_get_x_mirror_vert(Object *ob, int index);
+intptr_t mesh_octree_table(struct Object *ob, struct EditMesh *em, float *co, char mode);
+struct EditVert *editmesh_get_x_mirror_vert(struct Object *ob, struct EditMesh *em, float *co);
+int mesh_get_x_mirror_vert(struct Object *ob, int index);
+int *mesh_get_x_mirror_faces(struct Object *ob, struct EditMesh *em);
/* mesh_ops.c */
void ED_operatortypes_mesh(void);
diff --git a/source/blender/editors/include/ED_particle.h b/source/blender/editors/include/ED_particle.h
index b20db0cb7e8..0e5d7302837 100644
--- a/source/blender/editors/include/ED_particle.h
+++ b/source/blender/editors/include/ED_particle.h
@@ -30,19 +30,15 @@
#ifndef ED_PARTICLE_H
#define ED_PARTICLE_H
+struct bContext;
struct Object;
-struct ParticleSystem;
struct ParticleEditSettings;
+struct ParticleSystem;
struct RadialControl;
-struct ViewContext;
struct rcti;
struct wmWindowManager;
/* particle edit mode */
-void PE_set_particle_edit(struct Scene *scene);
-void PE_create_particle_edit(struct Scene *scene, struct Object *ob, struct ParticleSystem *psys);
-void PE_free_particle_edit(struct ParticleSystem *psys);
-
void PE_change_act(void *ob_v, void *act_v);
void PE_change_act_psys(struct Scene *scene, struct Object *ob, struct ParticleSystem *psys);
int PE_can_edit(struct ParticleSystem *psys);
@@ -51,38 +47,17 @@ int PE_can_edit(struct ParticleSystem *psys);
struct ParticleSystem *PE_get_current(struct Scene *scene, struct Object *ob);
short PE_get_current_num(struct Object *ob);
int PE_minmax(struct Scene *scene, float *min, float *max);
-void PE_get_colors(char sel[4], char nosel[4]);
struct ParticleEditSettings *PE_settings(Scene *scene);
-struct RadialControl **PE_radialcontrol(void);
/* update calls */
void PE_hide_keys_time(struct Scene *scene, struct ParticleSystem *psys, float cfra);
void PE_update_object(struct Scene *scene, struct Object *ob, int useflag);
-void PE_update_selection(struct Scene *scene, struct Object *ob, int useflag);
-void PE_recalc_world_cos(struct Object *ob, struct ParticleSystem *psys);
/* selection tools */
-void PE_select_root(void);
-void PE_select_tip(void);
-void PE_deselectall(void);
-void PE_select_linked(void);
-void PE_select_less(void);
-void PE_select_more(void);
-
-void PE_mouse_particles(void);
-void PE_border_select(struct ViewContext *vc, struct rcti *rect, int select);
-void PE_circle_select(struct ViewContext *vc, int selecting, short *mval, float rad);
-void PE_lasso_select(struct ViewContext *vc, short mcords[][2], short moves, short select);
-
-/* tools */
-void PE_hide(int mode);
-void PE_rekey(void);
-void PE_subdivide(Object *ob);
-int PE_brush_particles(void);
-void PE_remove_doubles(void);
-void PE_selectbrush_menu(Scene *scene);
-void PE_remove_doubles(void);
-void PE_radialcontrol_start(const int mode);
+int PE_mouse_particles(struct bContext *C, short *mval, int extend);
+int PE_border_select(struct bContext *C, struct rcti *rect, int select);
+int PE_circle_select(struct bContext *C, int selecting, short *mval, float rad);
+int PE_lasso_select(struct bContext *C, short mcords[][2], short moves, short select);
/* undo */
void PE_undo_push(Scene *scene, char *str);
diff --git a/source/blender/editors/include/ED_text.h b/source/blender/editors/include/ED_text.h
new file mode 100644
index 00000000000..873777affe8
--- /dev/null
+++ b/source/blender/editors/include/ED_text.h
@@ -0,0 +1,36 @@
+/**
+ * $Id:
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2009 Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef ED_TEXT_H
+#define ED_TEXT_H
+
+struct bContext;
+
+void ED_text_undo_step(struct bContext *C, int step);
+
+#endif /* ED_TEXT_H */
+
diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h
index 1ab61da83bb..128af0fd36a 100644
--- a/source/blender/editors/include/ED_view3d.h
+++ b/source/blender/editors/include/ED_view3d.h
@@ -127,6 +127,8 @@ void view3d_get_transformation(struct ViewContext *vc, struct Object *ob, struct
/* XXX should move to arithb.c */
int edge_inside_circle(short centx, short centy, short rad, short x1, short y1, short x2, short y2);
+int lasso_inside(short mcords[][2], short moves, short sx, short sy);
+int lasso_inside_edge(short mcords[][2], short moves, int x0, int y0, int x1, int y1);
/* modes */
void ED_view3d_exit_paint_modes(struct bContext *C);
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index 936508cdc63..60d504c21fe 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -70,7 +70,7 @@ typedef struct uiPopupBlockHandle uiPopupBlockHandle;
#define UI_CENTER 16
#define UI_SHIFT_FLIPPED 32
-/* uiBlock->autofill */
+/* uiBlock->autofill (not yet used) */
#define UI_BLOCK_COLLUMNS 1
#define UI_BLOCK_ROWS 2
@@ -415,7 +415,7 @@ typedef void (*uiIDPoinFunc)(struct bContext *C, struct ID *id, int event);
uiBut *uiDefIDPoinBut(uiBlock *block, uiIDPoinFuncFP func, short blocktype, int retval, char *str,
short x1, short y1, short x2, short y2, void *idpp, char *tip);
-int uiDefIDPoinButs(uiBlock *block, struct Main *main, struct ID *parid, struct ID **id_p, int id_code, short *pin_p, int x, int y, uiIDPoinFunc func, int events);
+int uiDefIDPoinButs(uiBlock *block, struct Main *main, struct ID *parid, struct ID *id, int id_code, short *pin_p, int x, int y, uiIDPoinFunc func, int events);
uiBut *uiDefPulldownBut(uiBlock *block, uiBlockCreateFunc func, void *arg, char *str, short x1, short y1, short x2, short y2, char *tip);
uiBut *uiDefMenuBut(uiBlock *block, uiMenuCreateFunc func, void *arg, char *str, short x1, short y1, short x2, short y2, char *tip);
diff --git a/source/blender/editors/include/UI_resources.h b/source/blender/editors/include/UI_resources.h
index 1b3c4f17ea3..e644c0aa019 100644
--- a/source/blender/editors/include/UI_resources.h
+++ b/source/blender/editors/include/UI_resources.h
@@ -606,7 +606,7 @@ typedef enum {
ICON_LONGDISPLAY,
ICON_SHORTDISPLAY,
ICON_GHOST,
- ICON_BLANK283,
+ ICON_IMGDISPLAY,
ICON_BLANK284,
ICON_BLANK285,
ICON_FOLDER_DEHLT,
diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c
index c98d5fdf4a1..588615675cf 100644
--- a/source/blender/editors/interface/interface_handlers.c
+++ b/source/blender/editors/interface/interface_handlers.c
@@ -659,7 +659,7 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data,
if(mode=='v') {
/* extract first line from clipboard in case of multi-line copies */
- char *p = NULL; /* XXX 2.48 getClipboard(0); */
+ char *p = WM_clipboard_text_get(0);
if(p) {
int i = 0;
while (*p && *p!='\r' && *p!='\n' && i<UI_MAX_DRAW_STR) {
@@ -667,6 +667,7 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data,
p++;
}
buf[i]= 0;
+ MEM_freeN(p);
}
}
@@ -676,7 +677,7 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data,
if(but->poin==NULL && but->rnapoin.data==NULL);
else if(mode=='c') {
sprintf(buf, "%f", ui_get_but_val(but));
- /* XXX 2.48 putClipboard(buf, 0); */
+ WM_clipboard_text_set(buf, 0);
}
else {
if (sscanf(buf, " %lf ", &val) == 1) {
@@ -696,7 +697,7 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data,
ui_get_but_vectorf(but, rgb);
sprintf(buf, "[%f, %f, %f]", rgb[0], rgb[1], rgb[2]);
- /* XXX 2.48 putClipboard(buf, 0); */
+ WM_clipboard_text_set(buf, 0);
}
else {
@@ -716,7 +717,7 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data,
else if(mode=='c') {
button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING);
BLI_strncpy(buf, data->str, UI_MAX_DRAW_STR);
- /* XXX 2.48 putClipboard(data->str, 0); */
+ WM_clipboard_text_set(data->str, 0);
data->cancel= 1;
button_activate_state(C, but, BUTTON_STATE_EXIT);
}
@@ -1065,7 +1066,7 @@ static int ui_textedit_autocomplete(bContext *C, uiBut *but, uiHandleButtonData
static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste, int copy, int cut)
{
char buf[UI_MAX_DRAW_STR]={0};
- char *str, *p;
+ char *str, *p, *pbuf;
int len, x, y, i, changed= 0;
str= data->str;
@@ -1074,10 +1075,11 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste
/* paste */
if (paste) {
/* extract the first line from the clipboard */
- p = NULL; /* XXX 2.48 getClipboard(0); */
+ p = pbuf= WM_clipboard_text_get(0);
if(p && p[0]) {
- while (*p && *p!='\r' && *p!='\n' && i<UI_MAX_DRAW_STR) {
+ i= 0;
+ while (*p && *p!='\r' && *p!='\n' && i<UI_MAX_DRAW_STR-1) {
buf[i++]=*p;
p++;
}
@@ -1102,6 +1104,9 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste
changed= 1;
}
+
+ if(pbuf)
+ MEM_freeN(pbuf);
}
/* cut & copy */
else if (copy || cut) {
@@ -1112,7 +1117,8 @@ static int ui_textedit_copypaste(uiBut *but, uiHandleButtonData *data, int paste
else
buf[(x - but->selsta)] = str[x];
}
- /* XXX 2.48 putClipboard(buf, 0); */
+
+ WM_clipboard_text_set(buf, 0);
/* for cut only, delete the selection afterwards */
if(cut)
@@ -1279,9 +1285,9 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle
if(event->ctrl || event->oskey) {
if(event->type == VKEY)
changed= ui_textedit_copypaste(but, data, 1, 0, 0);
- else if(event->type == XKEY)
- changed= ui_textedit_copypaste(but, data, 0, 1, 0);
else if(event->type == CKEY)
+ changed= ui_textedit_copypaste(but, data, 0, 1, 0);
+ else if(event->type == XKEY)
changed= ui_textedit_copypaste(but, data, 0, 0, 1);
retval= WM_UI_HANDLER_BREAK;
diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c
index 4ee5de85675..6775f6362b8 100644
--- a/source/blender/editors/interface/interface_panel.c
+++ b/source/blender/editors/interface/interface_panel.c
@@ -243,7 +243,7 @@ void uiFreePanels(ListBase *lb)
void uiNewPanelHeight(uiBlock *block, int sizey)
{
- if(sizey<64) sizey= 64;
+ if(sizey<0) sizey= 0;
if(block->panel) {
block->panel->ofsy+= (block->panel->sizey - sizey);
diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c
index 6633e34c06a..58563166847 100644
--- a/source/blender/editors/interface/interface_utils.c
+++ b/source/blender/editors/interface/interface_utils.c
@@ -405,7 +405,7 @@ int uiDefAutoButsRNA(uiBlock *block, PointerRNA *ptr)
typedef struct uiIDPoinParams {
uiIDPoinFunc func;
- ID **id_p;
+ ID *id;
short id_code;
short browsenr;
} uiIDPoinParams;
@@ -416,12 +416,16 @@ static void idpoin_cb(bContext *C, void *arg_params, void *arg_event)
ListBase *lb;
uiIDPoinParams *params= (uiIDPoinParams*)arg_params;
uiIDPoinFunc func= params->func;
- ID **id_p= params->id_p;
- ID *id= *id_p, *idtest;
+ ID *id= params->id, *idtest;
int nr, event= GET_INT_FROM_POINTER(arg_event);
bmain= CTX_data_main(C);
lb= wich_libbase(bmain, params->id_code);
+
+ if(event == UI_ID_BROWSE && params->browsenr == 32767)
+ event= UI_ID_ADD_NEW;
+ else if(event == UI_ID_BROWSE && params->browsenr == 32766)
+ event= UI_ID_OPEN;
switch(event) {
case UI_ID_RENAME:
@@ -442,17 +446,18 @@ static void idpoin_cb(bContext *C, void *arg_params, void *arg_event)
for(idtest=lb->first, nr=1; idtest; idtest=idtest->next, nr++) {
if(nr==params->browsenr) {
- if(*id_p == idtest)
+ if(id == idtest)
return;
- *id_p= idtest;
+ id= idtest;
+
break;
}
}
break;
}
case UI_ID_DELETE:
- *id_p= NULL;
+ id= NULL;
break;
case UI_ID_FAKE_USER:
if(id) {
@@ -480,21 +485,20 @@ static void idpoin_cb(bContext *C, void *arg_params, void *arg_event)
}
if(func)
- func(C, *id_p, event);
+ func(C, id, event);
}
-int uiDefIDPoinButs(uiBlock *block, Main *bmain, ID *parid, ID **id_p, int id_code, short *pin_p, int x, int y, uiIDPoinFunc func, int events)
+int uiDefIDPoinButs(uiBlock *block, Main *bmain, ID *parid, ID *id, int id_code, short *pin_p, int x, int y, uiIDPoinFunc func, int events)
{
ListBase *lb;
uiBut *but;
- ID *id= *id_p;
uiIDPoinParams *params, *dup_params;
char *str=NULL, str1[10];
int len, oldcol, add_addbutton=0;
/* setup struct that we will pass on with the buttons */
params= MEM_callocN(sizeof(uiIDPoinParams), "uiIDPoinParams");
- params->id_p= id_p;
+ params->id= id;
params->id_code= id_code;
params->func= func;
diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c
index 15b345e5992..693f540128f 100644
--- a/source/blender/editors/interface/view2d.c
+++ b/source/blender/editors/interface/view2d.c
@@ -1375,61 +1375,65 @@ void UI_view2d_scrollers_draw(const bContext *C, View2D *v2d, View2DScrollers *v
/* scroller 'button'
* - if view is zoomable in x, draw handles too
* - handles are drawn darker
- * - no slider when view is > total
+ * - no slider when view is > total for non-zoomable views
+ * (otherwise, zoomable ones tend to flicker)
*/
- if (v2d->tot.xmax-v2d->tot.xmin <= v2d->cur.xmax-v2d->cur.xmin);
- else if (v2d->keepzoom & V2D_LOCKZOOM_X) {
- /* draw base bar as rounded shape */
- UI_ThemeColorShade(TH_SHADE1, dark);
- uiSetRoundBox(15);
-
- /* check that box is large enough for round drawing */
- if ((vs->hor_max - vs->hor_min) < (V2D_SCROLLCAP_RAD * 2)) {
- /* Rounded box still gets drawn at the minimum size limit
- * This doesn't represent extreme scaling well, but looks nicer...
- */
- float mid= 0.5f * (vs->hor_max + vs->hor_min);
+ if ( (v2d->scroll & V2D_SCROLL_SCALE_HORIZONTAL) ||
+ ((v2d->tot.xmax - v2d->tot.xmin) > (v2d->cur.xmax - v2d->cur.xmin)) )
+ {
+ if (v2d->keepzoom & V2D_LOCKZOOM_X) {
+ /* draw base bar as rounded shape */
+ UI_ThemeColorShade(TH_SHADE1, dark);
+ uiSetRoundBox(15);
- gl_round_box_shade(GL_POLYGON,
- mid-V2D_SCROLLCAP_RAD, (float)hor.ymin+2,
- mid+V2D_SCROLLCAP_RAD, (float)hor.ymax-2,
- V2D_SCROLLCAP_RAD, V2D_SCROLLBAR_SHADE, -V2D_SCROLLBAR_SHADE);
+ /* check that box is large enough for round drawing */
+ if ((vs->hor_max - vs->hor_min) < (V2D_SCROLLCAP_RAD * 2)) {
+ /* Rounded box still gets drawn at the minimum size limit
+ * This doesn't represent extreme scaling well, but looks nicer...
+ */
+ float mid= 0.5f * (vs->hor_max + vs->hor_min);
+
+ gl_round_box_shade(GL_POLYGON,
+ mid-V2D_SCROLLCAP_RAD, (float)hor.ymin+2,
+ mid+V2D_SCROLLCAP_RAD, (float)hor.ymax-2,
+ V2D_SCROLLCAP_RAD, V2D_SCROLLBAR_SHADE, -V2D_SCROLLBAR_SHADE);
+ }
+ else {
+ /* draw rounded box as per normal */
+ gl_round_box_shade(GL_POLYGON,
+ (float)vs->hor_min, (float)hor.ymin+2,
+ (float)vs->hor_max, (float)hor.ymax-2,
+ V2D_SCROLLCAP_RAD, V2D_SCROLLBAR_SHADE, -V2D_SCROLLBAR_SHADE);
+ }
}
else {
- /* draw rounded box as per normal */
+ /* base bar drawn as shaded rect */
+ UI_ThemeColorShade(TH_SHADE1, dark);
+ uiSetRoundBox(0);
gl_round_box_shade(GL_POLYGON,
(float)vs->hor_min, (float)hor.ymin+2,
(float)vs->hor_max, (float)hor.ymax-2,
V2D_SCROLLCAP_RAD, V2D_SCROLLBAR_SHADE, -V2D_SCROLLBAR_SHADE);
+
+ /* 'minimum' handle */
+ uiSetRoundBox(9);
+ UI_ThemeColorShade(TH_SHADE1, darker);
+
+ gl_round_box_shade(GL_POLYGON,
+ (float)vs->hor_min-V2D_SCROLLER_HANDLE_SIZE, (float)hor.ymin+2,
+ (float)vs->hor_min+V2D_SCROLLER_HANDLE_SIZE, (float)hor.ymax-2,
+ V2D_SCROLLCAP_RAD, V2D_SCROLLCAP_SHADE, -V2D_SCROLLCAP_SHADE);
+
+ /* maximum handle */
+ uiSetRoundBox(6);
+ UI_ThemeColorShade(TH_SHADE1, darker);
+
+ gl_round_box_shade(GL_POLYGON,
+ (float)vs->hor_max-V2D_SCROLLER_HANDLE_SIZE, (float)hor.ymin+2,
+ (float)vs->hor_max+V2D_SCROLLER_HANDLE_SIZE, (float)hor.ymax-2,
+ V2D_SCROLLCAP_RAD, V2D_SCROLLCAP_SHADE, -V2D_SCROLLCAP_SHADE);
}
}
- else {
- /* base bar drawn as shaded rect */
- UI_ThemeColorShade(TH_SHADE1, dark);
- uiSetRoundBox(0);
- gl_round_box_shade(GL_POLYGON,
- (float)vs->hor_min, (float)hor.ymin+2,
- (float)vs->hor_max, (float)hor.ymax-2,
- V2D_SCROLLCAP_RAD, V2D_SCROLLBAR_SHADE, -V2D_SCROLLBAR_SHADE);
-
- /* 'minimum' handle */
- uiSetRoundBox(9);
- UI_ThemeColorShade(TH_SHADE1, darker);
-
- gl_round_box_shade(GL_POLYGON,
- (float)vs->hor_min-V2D_SCROLLER_HANDLE_SIZE, (float)hor.ymin+2,
- (float)vs->hor_min+V2D_SCROLLER_HANDLE_SIZE, (float)hor.ymax-2,
- V2D_SCROLLCAP_RAD, V2D_SCROLLCAP_SHADE, -V2D_SCROLLCAP_SHADE);
-
- /* maximum handle */
- uiSetRoundBox(6);
- UI_ThemeColorShade(TH_SHADE1, darker);
-
- gl_round_box_shade(GL_POLYGON,
- (float)vs->hor_max-V2D_SCROLLER_HANDLE_SIZE, (float)hor.ymin+2,
- (float)vs->hor_max+V2D_SCROLLER_HANDLE_SIZE, (float)hor.ymax-2,
- V2D_SCROLLCAP_RAD, V2D_SCROLLCAP_SHADE, -V2D_SCROLLCAP_SHADE);
- }
/* scale indicators */
// XXX will need to update the font drawing when the new stuff comes in
@@ -1512,60 +1516,65 @@ void UI_view2d_scrollers_draw(const bContext *C, View2D *v2d, View2DScrollers *v
/* scroller 'button'
* - if view is zoomable in y, draw handles too
* - handles are drawn darker
+ * - no slider when view is > total for non-zoomable views
+ * (otherwise, zoomable ones tend to flicker)
*/
- if (v2d->tot.ymax-v2d->tot.ymin <= v2d->cur.ymax-v2d->cur.ymin);
- else if (v2d->keepzoom & V2D_LOCKZOOM_Y) {
- /* draw base bar as rounded shape */
- UI_ThemeColorShade(TH_SHADE1, dark);
- uiSetRoundBox(15);
-
- /* check that box is large enough for round drawing */
- if ((vs->vert_max - vs->vert_min) < (V2D_SCROLLCAP_RAD * 2)) {
- /* Rounded box still gets drawn at the minimum size limit
- * This doesn't represent extreme scaling well, but looks nicer...
- */
- float mid= 0.5f * (vs->vert_max + vs->vert_min);
+ if ( (v2d->scroll & V2D_SCROLL_SCALE_VERTICAL) ||
+ ((v2d->tot.ymax - v2d->tot.ymin) > (v2d->cur.ymax - v2d->cur.ymin)) )
+ {
+ if (v2d->keepzoom & V2D_LOCKZOOM_Y) {
+ /* draw base bar as rounded shape */
+ UI_ThemeColorShade(TH_SHADE1, dark);
+ uiSetRoundBox(15);
- gl_round_box_vertical_shade(GL_POLYGON,
- (float)vert.xmin+2, mid-V2D_SCROLLCAP_RAD,
- (float)vert.xmax-2, mid+V2D_SCROLLCAP_RAD,
- V2D_SCROLLCAP_RAD, V2D_SCROLLBAR_SHADE, -V2D_SCROLLBAR_SHADE);
+ /* check that box is large enough for round drawing */
+ if ((vs->vert_max - vs->vert_min) < (V2D_SCROLLCAP_RAD * 2)) {
+ /* Rounded box still gets drawn at the minimum size limit
+ * This doesn't represent extreme scaling well, but looks nicer...
+ */
+ float mid= 0.5f * (vs->vert_max + vs->vert_min);
+
+ gl_round_box_vertical_shade(GL_POLYGON,
+ (float)vert.xmin+2, mid-V2D_SCROLLCAP_RAD,
+ (float)vert.xmax-2, mid+V2D_SCROLLCAP_RAD,
+ V2D_SCROLLCAP_RAD, V2D_SCROLLBAR_SHADE, -V2D_SCROLLBAR_SHADE);
+ }
+ else {
+ /* draw rounded box as per normal */
+ gl_round_box_vertical_shade(GL_POLYGON,
+ (float)vert.xmin+2, (float)vs->vert_min,
+ (float)vert.xmax-2, (float)vs->vert_max,
+ V2D_SCROLLCAP_RAD, V2D_SCROLLBAR_SHADE, -V2D_SCROLLBAR_SHADE);
+ }
}
else {
- /* draw rounded box as per normal */
+ /* base bar drawn as shaded rect */
+ UI_ThemeColorShade(TH_SHADE1, dark);
+ uiSetRoundBox(0);
gl_round_box_vertical_shade(GL_POLYGON,
(float)vert.xmin+2, (float)vs->vert_min,
- (float)vert.xmax-2, (float)vs->vert_max,
+ (float)vert.xmax-2, (float)vs->vert_max,
V2D_SCROLLCAP_RAD, V2D_SCROLLBAR_SHADE, -V2D_SCROLLBAR_SHADE);
+
+ /* 'minimum' handle */
+ UI_ThemeColorShade(TH_SHADE1, darker);
+ uiSetRoundBox(12);
+
+ gl_round_box_vertical_shade(GL_POLYGON,
+ (float)vert.xmin+2, (float)vs->vert_min-V2D_SCROLLER_HANDLE_SIZE,
+ (float)vert.xmax-2, (float)vs->vert_min+V2D_SCROLLER_HANDLE_SIZE,
+ V2D_SCROLLCAP_RAD, V2D_SCROLLCAP_SHADE, -V2D_SCROLLCAP_SHADE);
+
+ /* maximum handle */
+ UI_ThemeColorShade(TH_SHADE1, darker);
+ uiSetRoundBox(3);
+
+ gl_round_box_vertical_shade(GL_POLYGON,
+ (float)vert.xmin+2, (float)vs->vert_max-V2D_SCROLLER_HANDLE_SIZE,
+ (float)vert.xmax-2, (float)vs->vert_max+V2D_SCROLLER_HANDLE_SIZE,
+ V2D_SCROLLCAP_RAD, V2D_SCROLLCAP_SHADE, -V2D_SCROLLCAP_SHADE);
}
}
- else {
- /* base bar drawn as shaded rect */
- UI_ThemeColorShade(TH_SHADE1, dark);
- uiSetRoundBox(0);
- gl_round_box_vertical_shade(GL_POLYGON,
- (float)vert.xmin+2, (float)vs->vert_min,
- (float)vert.xmax-2, (float)vs->vert_max,
- V2D_SCROLLCAP_RAD, V2D_SCROLLBAR_SHADE, -V2D_SCROLLBAR_SHADE);
-
- /* 'minimum' handle */
- UI_ThemeColorShade(TH_SHADE1, darker);
- uiSetRoundBox(12);
-
- gl_round_box_vertical_shade(GL_POLYGON,
- (float)vert.xmin+2, (float)vs->vert_min-V2D_SCROLLER_HANDLE_SIZE,
- (float)vert.xmax-2, (float)vs->vert_min+V2D_SCROLLER_HANDLE_SIZE,
- V2D_SCROLLCAP_RAD, V2D_SCROLLCAP_SHADE, -V2D_SCROLLCAP_SHADE);
-
- /* maximum handle */
- UI_ThemeColorShade(TH_SHADE1, darker);
- uiSetRoundBox(3);
-
- gl_round_box_vertical_shade(GL_POLYGON,
- (float)vert.xmin+2, (float)vs->vert_max-V2D_SCROLLER_HANDLE_SIZE,
- (float)vert.xmax-2, (float)vs->vert_max+V2D_SCROLLER_HANDLE_SIZE,
- V2D_SCROLLCAP_RAD, V2D_SCROLLCAP_SHADE, -V2D_SCROLLCAP_SHADE);
- }
/* scale indiators */
// XXX will need to update the font drawing when the new stuff comes in
diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c
index 506e299f890..95df3ef9c53 100644
--- a/source/blender/editors/interface/view2d_ops.c
+++ b/source/blender/editors/interface/view2d_ops.c
@@ -368,15 +368,8 @@ static int view_scrolldown_exec(bContext *C, wmOperator *op)
}
/* set RNA-Props */
- /* automatically fall back to horizontal on this exception: */
- if( ELEM(vpd->v2d->scroll, V2D_SCROLL_BOTTOM, V2D_SCROLL_TOP) ) {
- RNA_int_set(op->ptr, "deltax", -20);
- RNA_int_set(op->ptr, "deltay", 0);
- }
- else {
- RNA_int_set(op->ptr, "deltax", 0);
- RNA_int_set(op->ptr, "deltay", -20);
- }
+ RNA_int_set(op->ptr, "deltax", 0);
+ RNA_int_set(op->ptr, "deltay", -20);
/* apply movement, then we're done */
view_pan_apply(C, op);
@@ -421,15 +414,8 @@ static int view_scrollup_exec(bContext *C, wmOperator *op)
}
/* set RNA-Props */
- /* automatically fall back to horizontal on this exception: */
- if( ELEM(vpd->v2d->scroll, V2D_SCROLL_BOTTOM, V2D_SCROLL_TOP) ) {
- RNA_int_set(op->ptr, "deltax", 20);
- RNA_int_set(op->ptr, "deltay", 0);
- }
- else {
- RNA_int_set(op->ptr, "deltax", 0);
- RNA_int_set(op->ptr, "deltay", 20);
- }
+ RNA_int_set(op->ptr, "deltax", 0);
+ RNA_int_set(op->ptr, "deltay", 20);
/* apply movement, then we're done */
view_pan_apply(C, op);
@@ -1284,6 +1270,7 @@ void UI_view2d_keymap(wmWindowManager *wm)
/* pan/scroll */
WM_keymap_add_item(keymap, "View2D_OT_view_pan", MIDDLEMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "View2D_OT_view_pan", MIDDLEMOUSE, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "View2D_OT_view_rightscroll", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "View2D_OT_view_leftscroll", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0);
diff --git a/source/blender/editors/mesh/editmesh_add.c b/source/blender/editors/mesh/editmesh_add.c
index b2b6e855bbd..8651abac0a9 100644
--- a/source/blender/editors/mesh/editmesh_add.c
+++ b/source/blender/editors/mesh/editmesh_add.c
@@ -1280,13 +1280,13 @@ static float new_primitive_matrix(bContext *C, float primmat[][4])
Object *obedit= CTX_data_edit_object(C);
Scene *scene = CTX_data_scene(C);
View3D *v3d =CTX_wm_view3d(C);
- ARegion *ar= CTX_wm_region(C);
+ RegionView3D *rv3d= CTX_wm_region_view3d(C);
float *curs, mat[3][3], vmat[3][3], cmat[3][3], imat[3][3];
Mat4One(primmat);
- if(ar)
- Mat3CpyMat4(vmat, ((RegionView3D *)ar->regiondata)->viewmat);
+ if(rv3d)
+ Mat3CpyMat4(vmat, rv3d->viewmat);
else
Mat3One(vmat);
diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c
index 22857b0718b..d835fdb8eed 100644
--- a/source/blender/editors/mesh/meshtools.c
+++ b/source/blender/editors/mesh/meshtools.c
@@ -713,7 +713,7 @@ intptr_t mesh_octree_table(Object *ob, EditMesh *em, float *co, char mode)
if(MeshOctree.table) {
Mesh *me= ob->data;
bt= MeshOctree.table + mesh_octree_get_base_offs(co, MeshOctree.offs, MeshOctree.div);
- if(me->edit_mesh)
+ if(em)
return mesh_octree_find_index(bt, NULL, NULL, co);
else
return mesh_octree_find_index(bt, MeshOctree.orco, me->mvert, co);
diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c
index 6e2b38acd8d..cc07c334aec 100644
--- a/source/blender/editors/object/object_edit.c
+++ b/source/blender/editors/object/object_edit.c
@@ -582,6 +582,8 @@ void OBJECT_OT_text_add(wmOperatorType *ot)
static int object_add_armature_exec(bContext *C, wmOperator *op)
{
Object *obedit= CTX_data_edit_object(C);
+ View3D *v3d= CTX_wm_view3d(C);
+ RegionView3D *rv3d= NULL;
int newob= 0;
if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) {
@@ -591,10 +593,12 @@ static int object_add_armature_exec(bContext *C, wmOperator *op)
}
else DAG_object_flush_update(CTX_data_scene(C), obedit, OB_RECALC_DATA);
- //nu= add_nurbs_primitive(C, RNA_enum_get(op->ptr, "type"), newob);
- //editnurb= curve_get_editcurve(CTX_data_edit_object(C));
- //BLI_addtail(editnurb, nu);
+ if(v3d)
+ rv3d= CTX_wm_region(C)->regiondata;
+ /* v3d and rv3d are allowed to be NULL */
+ add_primitive_bone(CTX_data_scene(C), v3d, rv3d);
+
/* userdef */
if (newob && (U.flag & USER_ADD_EDITMODE)==0) {
ED_object_exit_editmode(C, EM_FREEDATA);
diff --git a/source/blender/editors/physics/editparticle.c b/source/blender/editors/physics/editparticle.c
index 4751bd7bb33..b3c7be688f2 100644
--- a/source/blender/editors/physics/editparticle.c
+++ b/source/blender/editors/physics/editparticle.c
@@ -70,6 +70,7 @@
#include "BIF_gl.h"
#include "BIF_glutil.h"
+#include "ED_mesh.h"
#include "ED_particle.h"
#include "ED_view3d.h"
@@ -84,21 +85,11 @@
#include "physics_intern.h"
+static void PE_create_particle_edit(Scene *scene, Object *ob, ParticleSystem *psys);
static void ParticleUndo_clear(ParticleSystem *psys);
-#define LOOP_PARTICLES(i,pa) for(i=0, pa=psys->particles; i<totpart; i++, pa++)
-#define LOOP_KEYS(k,key) if(psys->edit)for(k=0, key=psys->edit->keys[i]; k<pa->totkey; k++, key++)
-
-/* XXX */
-static void error() {}
-static int lasso_inside() {return 0;}
-static void *mesh_get_x_mirror_faces() {return NULL;}
-
-#define RADIALCONTROL_SIZE 0
-#define RADIALCONTROL_STRENGTH 0
-#define RADIALCONTROL_NONE 0
-/* XXX */
-
+#define LOOP_PARTICLES(i, pa) for(i=0, pa=psys->particles; i<totpart; i++, pa++)
+#define LOOP_KEYS(k, key) if(psys->edit)for(k=0, key=psys->edit->keys[i]; k<pa->totkey; k++, key++)
/**************************** utilities *******************************/
@@ -130,10 +121,10 @@ static int PE_poll_3dview(bContext *C)
return (psys && psys->edit && (G.f & G_PARTICLEEDIT));
}
-void PE_free_particle_edit(ParticleSystem *psys)
+static void PE_free_particle_edit(ParticleSystem *psys)
{
- ParticleEdit *edit=psys->edit;
- int i, totpart=psys->totpart;
+ ParticleEdit *edit= psys->edit;
+ int i, totpart= psys->totpart;
if(edit==0) return;
@@ -164,6 +155,7 @@ void PE_free_particle_edit(ParticleSystem *psys)
MEM_freeN(edit);
psys->edit= NULL;
+ psys->free_edit= NULL;
}
/************************************************/
@@ -180,45 +172,6 @@ ParticleEditSettings *PE_settings(Scene *scene)
return &scene->toolsettings->particle;
}
-void PE_change_act(void *ob_v, void *act_v)
-{
- Scene *scene= NULL; // XXX
- Object *ob= ob_v;
- ParticleSystem *psys;
- short act= *((short*)act_v) - 1;
-
- if((psys=psys_get_current(ob)))
- psys->flag &= ~PSYS_CURRENT;
-
- if(act>=0) {
- if((psys=BLI_findlink(&ob->particlesystem,act))) {
- psys->flag |= PSYS_CURRENT;
-
- if(psys_check_enabled(ob, psys)) {
- if(G.f & G_PARTICLEEDIT && !psys->edit)
- PE_create_particle_edit(scene, ob, psys);
- PE_recalc_world_cos(ob, psys);
- }
- }
- }
-}
-
-void PE_change_act_psys(Scene *scene, Object *ob, ParticleSystem *psys)
-{
- ParticleSystem *p;
-
- if((p=psys_get_current(ob)))
- p->flag &= ~PSYS_CURRENT;
-
- psys->flag |= PSYS_CURRENT;
-
- if(psys_check_enabled(ob, psys)) {
- if(G.f & G_PARTICLEEDIT && !psys->edit)
- PE_create_particle_edit(scene, ob, psys);
- PE_recalc_world_cos(ob, psys);
- }
-}
-
/* always gets atleast the first particlesystem even if PSYS_CURRENT flag is not set */
ParticleSystem *PE_get_current(Scene *scene, Object *ob)
{
@@ -239,7 +192,9 @@ ParticleSystem *PE_get_current(Scene *scene, Object *ob)
psys->flag |= PSYS_CURRENT;
}
- if(psys && psys_check_enabled(ob, psys)) // XXX && (ob == scene->obact) && (G.f & G_PARTICLEEDIT))
+ /* this happens when Blender is started with particle
+ * edit mode enabled XXX there's a draw error then? */
+ if(psys && psys_check_enabled(ob, psys) && (ob == OBACT) && (G.f & G_PARTICLEEDIT))
if(psys->part->type == PART_HAIR && psys->flag & PSYS_EDITED)
if(psys->edit == NULL)
PE_create_particle_edit(scene, ob, psys);
@@ -268,11 +223,11 @@ void PE_hide_keys_time(Scene *scene, ParticleSystem *psys, float cfra)
ParticleData *pa;
ParticleEditKey *key;
ParticleEditSettings *pset=PE_settings(scene);
- int i, k, totpart=psys->totpart;
+ int i, k, totpart= psys->totpart;
if(pset->draw_timed && scene->selectmode==SCE_SELECT_POINT) {
- LOOP_PARTICLES(i,pa) {
- LOOP_KEYS(k,key) {
+ LOOP_PARTICLES(i, pa) {
+ LOOP_KEYS(k, key) {
if(fabs(cfra-*key->time) < pset->draw_timed)
key->flag &= ~PEK_HIDE;
else {
@@ -283,8 +238,8 @@ void PE_hide_keys_time(Scene *scene, ParticleSystem *psys, float cfra)
}
}
else {
- LOOP_PARTICLES(i,pa) {
- LOOP_KEYS(k,key) {
+ LOOP_PARTICLES(i, pa) {
+ LOOP_KEYS(k, key) {
key->flag &= ~PEK_HIDE;
}
}
@@ -337,6 +292,9 @@ static void PE_set_view3d_data(bContext *C, PEData *data)
view3d_set_viewcontext(C, &data->vc);
view3d_get_transformation(&data->vc, data->ob, &data->mats);
+
+ if((data->vc.v3d->drawtype>OB_WIRE) && (data->vc.v3d->flag & V3D_ZBUF_SELECT))
+ view3d_validate_backbuf(&data->vc);
}
/*************************** selection utilities *******************************/
@@ -386,7 +344,7 @@ static int key_test_depth(PEData *data, float co[3])
}
}
-static int key_inside_circle(PEData *data, float co[3], float *distance)
+static int key_inside_circle(PEData *data, float rad, float co[3], float *distance)
{
float dx, dy, dist;
short sco[2];
@@ -400,7 +358,7 @@ static int key_inside_circle(PEData *data, float co[3], float *distance)
dy= data->mval[1] - sco[1];
dist= sqrt(dx*dx + dy*dy);
- if(dist > data->rad)
+ if(dist > rad)
return 0;
if(key_test_depth(data, co)) {
@@ -432,7 +390,7 @@ static int key_inside_rect(PEData *data, float co[3])
static int key_inside_test(PEData *data, float co[3])
{
if(data->mval)
- return key_inside_circle(data, co, NULL);
+ return key_inside_circle(data, data->rad, co, NULL);
else
return key_inside_rect(data, co);
}
@@ -448,7 +406,7 @@ static int particle_is_selected(ParticleSystem *psys, ParticleData *pa)
sel= 0;
i= pa - psys->particles;
- LOOP_KEYS(k,key)
+ LOOP_KEYS(k, key)
if(key->flag & PEK_SELECT)
return 1;
@@ -486,7 +444,7 @@ static void for_mouse_hit_keys(PEData *data, ForKeyFunc func, int nearest)
key= edit->keys[i] + pa->totkey-1;
if(nearest) {
- if(key_inside_circle(data, key->world_co, &dist)) {
+ if(key_inside_circle(data, dist, key->world_co, &dist)) {
nearest_pa= i;
nearest_key= pa->totkey-1;
}
@@ -502,7 +460,7 @@ static void for_mouse_hit_keys(PEData *data, ForKeyFunc func, int nearest)
if(key->flag & PEK_HIDE) continue;
if(nearest) {
- if(key_inside_circle(data, key->world_co, &dist)) {
+ if(key_inside_circle(data, dist, key->world_co, &dist)) {
nearest_pa= i;
nearest_key= k;
}
@@ -539,16 +497,16 @@ static void foreach_mouse_hit_particle(PEData *data, ForParticleFunc func, int s
key= psys->edit->keys[i] + pa->totkey-1;
if(selected==0 || key->flag & PEK_SELECT)
- if(key_inside_circle(data, key->world_co, &data->dist))
+ if(key_inside_circle(data, data->rad, key->world_co, &data->dist))
func(data, i);
}
else {
/* do all keys */
- LOOP_KEYS(k,key) {
+ LOOP_KEYS(k, key) {
if(key->flag & PEK_HIDE) continue;
if(selected==0 || key->flag & PEK_SELECT) {
- if(key_inside_circle(data, key->world_co, &data->dist)) {
+ if(key_inside_circle(data, data->rad, key->world_co, &data->dist)) {
func(data, i);
break;
}
@@ -577,7 +535,7 @@ static void foreach_mouse_hit_key(PEData *data, ForKeyMatFunc func, int selected
Mat4One(imat);
Mat4One(mat);
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
psys_mat_hair_to_global(data->ob, psmd->dm, psys->part->from, pa, mat);
@@ -588,16 +546,16 @@ static void foreach_mouse_hit_key(PEData *data, ForKeyMatFunc func, int selected
key= psys->edit->keys[i] + pa->totkey-1;
if(selected==0 || key->flag & PEK_SELECT)
- if(key_inside_circle(data, key->world_co, &data->dist))
+ if(key_inside_circle(data, data->rad, key->world_co, &data->dist))
func(data, mat, imat, i, pa->totkey-1);
}
else {
/* do all keys */
- LOOP_KEYS(k,key) {
+ LOOP_KEYS(k, key) {
if(key->flag&PEK_HIDE) continue;
if(selected==0 || key->flag & PEK_SELECT)
- if(key_inside_circle(data, key->world_co, &data->dist))
+ if(key_inside_circle(data, data->rad, key->world_co, &data->dist))
func(data, mat, imat, i, k);
}
}
@@ -612,7 +570,7 @@ static void foreach_selected_particle(PEData *data, ForParticleFunc func)
totpart= psys->totpart;
- LOOP_PARTICLES(i,pa)
+ LOOP_PARTICLES(i, pa)
if(particle_is_selected(psys, pa))
func(data, i);
}
@@ -626,12 +584,12 @@ static void foreach_selected_key(PEData *data, ForKeyFunc func)
totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
key= psys->edit->keys[i];
- LOOP_KEYS(k,key)
+ LOOP_KEYS(k, key)
if(key->flag & PEK_SELECT)
func(data, i, k);
}
@@ -656,7 +614,7 @@ static int count_selected_keys(Scene *scene, ParticleSystem *psys)
totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
key= psys->edit->keys[i];
@@ -698,7 +656,7 @@ static void PE_update_mirror_cache(Object *ob, ParticleSystem *psys)
tree= BLI_kdtree_new(totpart);
/* insert particles into kd tree */
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
psys_mat_hair_to_orco(ob, psmd->dm, psys->part->from, pa, mat);
VECCOPY(co, pa->hair[0].co);
Mat4MulVecfl(mat, co);
@@ -711,7 +669,7 @@ static void PE_update_mirror_cache(Object *ob, ParticleSystem *psys)
if(!edit->mirror_cache)
edit->mirror_cache= MEM_callocN(sizeof(int)*totpart, "PE mirror cache");
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
psys_mat_hair_to_orco(ob, psmd->dm, psys->part->from, pa, mat);
VECCOPY(co, pa->hair[0].co);
Mat4MulVecfl(mat, co);
@@ -727,7 +685,7 @@ static void PE_update_mirror_cache(Object *ob, ParticleSystem *psys)
}
/* make sure mirrors are in two directions */
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(edit->mirror_cache[i]) {
index= edit->mirror_cache[i];
if(edit->mirror_cache[index] != i)
@@ -818,7 +776,7 @@ static void PE_apply_mirror(Object *ob, ParticleSystem *psys)
/* we delay settings the PARS_EDIT_RECALC for mirrored particles
* to avoid doing mirror twice */
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_EDIT_RECALC) {
PE_mirror_particle(ob, psmd->dm, psys, pa, NULL);
@@ -827,7 +785,7 @@ static void PE_apply_mirror(Object *ob, ParticleSystem *psys)
}
}
- LOOP_PARTICLES(i,pa)
+ LOOP_PARTICLES(i, pa)
if(pa->flag & PARS_EDIT_RECALC)
if(edit->mirror_cache[i] != -1)
psys->particles[edit->mirror_cache[i]].flag |= PARS_EDIT_RECALC;
@@ -856,21 +814,21 @@ static void pe_deflect_emitter(Scene *scene, Object *ob, ParticleSystem *psys)
if((pset->flag & PE_DEFLECT_EMITTER)==0)
return;
- edit=psys->edit;
- totpart=psys->totpart;
+ edit= psys->edit;
+ totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(!(pa->flag & PARS_EDIT_RECALC))
continue;
psys_mat_hair_to_object(ob, psmd->dm, psys->part->from, pa, hairmat);
- LOOP_KEYS(k,key) {
+ LOOP_KEYS(k, key) {
Mat4MulVecfl(hairmat, key->co);
}
//}
- //LOOP_PARTICLES(i,pa) {
+ //LOOP_PARTICLES(i, pa) {
key=psys->edit->keys[i]+1;
dist_1st=VecLenf((key-1)->co,key->co);
@@ -904,11 +862,11 @@ static void pe_deflect_emitter(Scene *scene, Object *ob, ParticleSystem *psys)
}
//}
- //LOOP_PARTICLES(i,pa) {
+ //LOOP_PARTICLES(i, pa) {
Mat4Invert(hairimat,hairmat);
- LOOP_KEYS(k,key) {
+ LOOP_KEYS(k, key) {
Mat4MulVecfl(hairimat, key->co);
}
}
@@ -929,10 +887,10 @@ void PE_apply_lengths(Scene *scene, ParticleSystem *psys)
if((pset->flag & PE_KEEP_LENGTHS)==0)
return;
- edit=psys->edit;
- totpart=psys->totpart;
+ edit= psys->edit;
+ totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(!(pa->flag & PARS_EDIT_RECALC))
continue;
@@ -963,10 +921,10 @@ static void pe_iterate_lengths(Scene *scene, ParticleSystem *psys)
if((pset->flag & PE_KEEP_LENGTHS)==0)
return;
- edit=psys->edit;
- totpart=psys->totpart;
+ edit= psys->edit;
+ totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(!(pa->flag & PARS_EDIT_RECALC))
continue;
@@ -1018,36 +976,14 @@ static void recalc_lengths(ParticleSystem *psys)
totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
key= psys->edit->keys[i];
for(k=0; k<pa->totkey-1; k++, key++) {
key->length= VecLenf(key->co, (key + 1)->co);
}
}
}
-/* calculate and store key locations in world coordinates */
-void PE_recalc_world_cos(Object *ob, ParticleSystem *psys)
-{
- ParticleSystemModifierData *psmd= psys_get_modifier(ob, psys);
- ParticleData *pa;
- ParticleEditKey *key;
- int i, k, totpart;
- float hairmat[4][4];
- if(psys==0)
- return;
-
- totpart= psys->totpart;
-
- LOOP_PARTICLES(i,pa) {
- psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, pa, hairmat);
-
- LOOP_KEYS(k,key) {
- VECCOPY(key->world_co,key->co);
- Mat4MulVecfl(hairmat, key->world_co);
- }
- }
-}
/* calculate a tree for finding nearest emitter's vertice */
static void recalc_emitter_field(Object *ob, ParticleSystem *psys)
{
@@ -1107,7 +1043,7 @@ static void recalc_emitter_field(Object *ob, ParticleSystem *psys)
BLI_kdtree_balance(edit->emitter_field);
}
-void PE_update_selection(Scene *scene, Object *ob, int useflag)
+static void PE_update_selection(Scene *scene, Object *ob, int useflag)
{
ParticleSystem *psys= PE_get_current(scene, ob);
ParticleEdit *edit= psys->edit;
@@ -1123,12 +1059,12 @@ void PE_update_selection(Scene *scene, Object *ob, int useflag)
/* flag all particles to be updated if not using flag */
if(!useflag)
- LOOP_PARTICLES(i,pa)
+ LOOP_PARTICLES(i, pa)
pa->flag |= PARS_EDIT_RECALC;
/* flush edit key flag to hair key flag to preserve selection
* on save */
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
key= edit->keys[i];
for(k=0, hkey=pa->hair; k<pa->totkey; k++, hkey++, key++)
@@ -1141,7 +1077,7 @@ void PE_update_selection(Scene *scene, Object *ob, int useflag)
psys_cache_child_paths(scene, ob, psys, cfra, 1);
/* disable update flag */
- LOOP_PARTICLES(i,pa)
+ LOOP_PARTICLES(i, pa)
pa->flag &= ~PARS_EDIT_RECALC;
}
@@ -1156,7 +1092,7 @@ void PE_update_object(Scene *scene, Object *ob, int useflag)
/* flag all particles to be updated if not using flag */
if(!useflag)
- LOOP_PARTICLES(i,pa)
+ LOOP_PARTICLES(i, pa)
pa->flag |= PARS_EDIT_RECALC;
/* do post process on particle edit keys */
@@ -1165,7 +1101,7 @@ void PE_update_object(Scene *scene, Object *ob, int useflag)
PE_apply_lengths(scene, psys);
if(pset->flag & PE_X_MIRROR)
PE_apply_mirror(ob,psys);
- PE_recalc_world_cos(ob,psys);
+ psys_update_world_cos(ob,psys);
PE_hide_keys_time(scene, psys, cfra);
/* regenerate path caches */
@@ -1175,121 +1111,10 @@ void PE_update_object(Scene *scene, Object *ob, int useflag)
psys_cache_child_paths(scene, ob, psys, cfra, 1);
/* disable update flag */
- LOOP_PARTICLES(i,pa)
+ LOOP_PARTICLES(i, pa)
pa->flag &= ~PARS_EDIT_RECALC;
}
-/************************ particle edit toggle operator ************************/
-
-/* initialize needed data for bake edit */
-void PE_create_particle_edit(Scene *scene, Object *ob, ParticleSystem *psys)
-{
- ParticleEdit *edit=psys->edit;
- ParticleData *pa;
- ParticleEditKey *key;
- HairKey *hkey;
- int i, k, totpart=psys->totpart, alloc=1;
-
- if((psys->flag & PSYS_EDITED)==0)
- return;
-
- if(edit) {
- int newtotkeys= psys_count_keys(psys);
- if(newtotkeys == edit->totkeys)
- alloc=0;
- }
-
- if(alloc) {
- if(edit) {
- error("ParticleEdit exists allready! Poke jahka!");
- PE_free_particle_edit(psys);
- }
-
- edit=psys->edit=MEM_callocN(sizeof(ParticleEdit), "PE_create_particle_edit");
-
- edit->keys=MEM_callocN(totpart*sizeof(ParticleEditKey*),"ParticleEditKey array");
-
- LOOP_PARTICLES(i,pa) {
- key= edit->keys[i]= MEM_callocN(pa->totkey*sizeof(ParticleEditKey),"ParticleEditKeys");
- for(k=0, hkey=pa->hair; k<pa->totkey; k++, hkey++, key++) {
- key->co= hkey->co;
- key->time= &hkey->time;
- key->flag= hkey->editflag;
- }
- }
-
- edit->totkeys= psys_count_keys(psys);
- }
-
- recalc_lengths(psys);
- recalc_emitter_field(ob, psys);
- PE_recalc_world_cos(ob, psys);
-
- if(alloc) {
- ParticleUndo_clear(psys);
- PE_undo_push(scene, "Original");
- }
-}
-
-static int particle_edit_toggle_poll(bContext *C)
-{
- Scene *scene= CTX_data_scene(C);
- Object *ob= CTX_data_active_object(C);
-
- if(!scene || !ob || ob->id.lib)
- return 0;
-
- return (ob->particlesystem.first != NULL);
-}
-
-static int particle_edit_toggle_exec(bContext *C, wmOperator *op)
-{
- Scene *scene= CTX_data_scene(C);
- Object *ob= CTX_data_active_object(C);
- ParticleSystem *psys= PE_get_current(scene, ob);
-
- if(psys==NULL) {
- psys= ob->particlesystem.first;
- psys->flag |= PSYS_CURRENT;
- }
-
- if(!(G.f & G_PARTICLEEDIT)) {
- if(psys && psys->part->type == PART_HAIR && psys->flag & PSYS_EDITED) {
- if(psys_check_enabled(ob, psys)) {
- if(psys->edit==NULL)
- PE_create_particle_edit(scene, ob, psys);
-
- PE_recalc_world_cos(ob, psys);
- }
- }
-
- G.f |= G_PARTICLEEDIT;
- WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_PARTICLE, NULL);
- }
- else {
- G.f &= ~G_PARTICLEEDIT;
- WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, NULL);
- }
-
- DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
-
- return OPERATOR_FINISHED;
-}
-
-void PARTICLE_OT_particle_edit_toggle(wmOperatorType *ot)
-{
- /* identifiers */
- ot->name= "Particle Edit Toggle";
- ot->idname= "PARTICLE_OT_particle_edit_toggle";
-
- /* api callbacks */
- ot->exec= particle_edit_toggle_exec;
- ot->poll= particle_edit_toggle_poll;
-
- /* flags */
- ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-}
-
/************************************************/
/* Edit Selections */
/************************************************/
@@ -1355,9 +1180,9 @@ static int de_select_all_exec(bContext *C, wmOperator *op)
edit= psys->edit;
totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
- LOOP_KEYS(k,key) {
+ LOOP_KEYS(k, key) {
if(key->flag & PEK_SELECT) {
sel= 1;
key->flag &= ~PEK_SELECT;
@@ -1367,9 +1192,9 @@ static int de_select_all_exec(bContext *C, wmOperator *op)
}
if(sel==0) {
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
- LOOP_KEYS(k,key) {
+ LOOP_KEYS(k, key) {
if(!(key->flag & PEK_SELECT)) {
key->flag |= PEK_SELECT;
pa->flag |= PARS_EDIT_RECALC;
@@ -1400,9 +1225,8 @@ void PARTICLE_OT_de_select_all(wmOperatorType *ot)
/************************ pick select operator ************************/
-void PE_mouse_particles(void)
+int PE_mouse_particles(bContext *C, short *mval, int extend)
{
- bContext *C= NULL; // XXX
PEData data;
Scene *scene= CTX_data_scene(C);
Object *ob= CTX_data_active_object(C);
@@ -1410,33 +1234,25 @@ void PE_mouse_particles(void)
ParticleEdit *edit= 0;
ParticleData *pa;
ParticleEditKey *key;
- short mval[2];
int i, k, totpart;
- int shift= 0; // XXX
- if(!PE_can_edit(psys)) return;
+ if(!PE_can_edit(psys))
+ return OPERATOR_CANCELLED;
edit= psys->edit;
-
totpart= psys->totpart;
- bglFlush();
- glReadBuffer(GL_BACK);
- glDrawBuffer(GL_BACK);
-// persp(PERSP_VIEW);
-
- if(shift)
- LOOP_PARTICLES(i,pa) {
+ if(!extend) {
+ LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
- LOOP_KEYS(k,key) {
+ LOOP_KEYS(k, key) {
if(key->flag & PEK_SELECT) {
key->flag &= ~PEK_SELECT;
pa->flag |= PARS_EDIT_RECALC;
}
}
}
-
- // XXX mval
+ }
PE_set_view3d_data(C, &data);
data.mval= mval;
@@ -1445,7 +1261,9 @@ void PE_mouse_particles(void)
for_mouse_hit_keys(&data, toggle_key_select, 1); /* nearest only */
PE_update_selection(scene, ob, 1);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, data.ob);
+ return OPERATOR_FINISHED;
}
/************************ select first operator ************************/
@@ -1530,6 +1348,8 @@ static int select_linked_exec(bContext *C, wmOperator *op)
mval[0]= location[0];
mval[1]= location[1];
+ view3d_operator_needs_opengl(C);
+
PE_set_view3d_data(C, &data);
data.mval= mval;
data.rad=75.0f;
@@ -1575,64 +1395,60 @@ void PARTICLE_OT_select_linked(wmOperatorType *ot)
/************************ border select operator ************************/
-void PE_border_select(ViewContext *vc, rcti *rect, int select)
+int PE_border_select(bContext *C, rcti *rect, int select)
{
- Scene *scene= vc->scene;
- Object *ob= vc->obact;
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
ParticleSystem *psys= PE_get_current(scene, ob);
PEData data;
- if(!PE_can_edit(psys)) return;
+ if(!PE_can_edit(psys))
+ return OPERATOR_CANCELLED;
- memset(&data, 0, sizeof(data));
- data.vc= *vc;
- data.scene= scene;
- data.ob= ob;
- data.psys= psys;
+ PE_set_view3d_data(C, &data);
data.rect= rect;
data.select= select;
for_mouse_hit_keys(&data, select_key, 0);
PE_update_selection(scene, ob, 1);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, ob);
- /* XXX undo, notifier */
- PE_undo_push(scene, "Border Select");
+ return OPERATOR_FINISHED;
}
/************************ circle select operator ************************/
-void PE_circle_select(ViewContext *vc, int selecting, short *mval, float rad)
+int PE_circle_select(bContext *C, int selecting, short *mval, float rad)
{
- Scene *scene= vc->scene;
- Object *ob= vc->obact;
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
ParticleSystem *psys= PE_get_current(scene, ob);
PEData data;
- if(!PE_can_edit(psys)) return;
+ if(!PE_can_edit(psys))
+ return OPERATOR_FINISHED;
- memset(&data, 0, sizeof(data));
- data.vc= *vc;
- data.scene= scene;
- data.ob= ob;
- data.psys= psys;
- data.mval=mval;
- data.rad=rad;
+ PE_set_view3d_data(C, &data);
+ data.mval= mval;
+ data.rad= rad;
data.select= selecting;
for_mouse_hit_keys(&data, select_key, 0);
- /* XXX undo, notifier */
- PE_undo_push(scene, "Circle Select");
+ PE_update_selection(scene, ob, 1);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, ob);
+
+ return OPERATOR_FINISHED;
}
/************************ lasso select operator ************************/
-void PE_lasso_select(ViewContext *vc, short mcords[][2], short moves, short select)
+int PE_lasso_select(bContext *C, short mcords[][2], short moves, short select)
{
- Scene *scene= vc->scene;
- ARegion *ar= vc->ar;
- Object *ob= OBACT;
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
+ ARegion *ar= CTX_wm_region(C);
ParticleSystem *psys= PE_get_current(scene, ob);
ParticleSystemModifierData *psmd;
ParticleEdit *edit;
@@ -1642,19 +1458,20 @@ void PE_lasso_select(ViewContext *vc, short mcords[][2], short moves, short sele
short vertco[2];
int i, k, totpart;
- if(!PE_can_edit(psys)) return;
+ if(!PE_can_edit(psys))
+ return OPERATOR_CANCELLED;
psmd= psys_get_modifier(ob, psys);
- edit=psys->edit;
- totpart=psys->totpart;
+ edit= psys->edit;
+ totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, pa, mat);
if(scene->selectmode==SCE_SELECT_POINT) {
- LOOP_KEYS(k,key) {
+ LOOP_KEYS(k, key) {
VECCOPY(co, key->co);
Mat4MulVecfl(mat, co);
project_short(ar, co, vertco);
@@ -1690,9 +1507,9 @@ void PE_lasso_select(ViewContext *vc, short mcords[][2], short moves, short sele
}
PE_update_selection(scene, ob, 1);
+ WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_SELECT, ob);
- /* XXX undo, notifier */
- PE_undo_push(scene, "Lasso select particles");
+ return OPERATOR_FINISHED;
}
/*************************** hide operator **************************/
@@ -2071,7 +1888,7 @@ static int remove_tagged_particles(Scene *scene, Object *ob, ParticleSystem *psy
psmd= psys_get_modifier(ob, psys);
totpart= psys->totpart;
- LOOP_PARTICLES(i,pa)
+ LOOP_PARTICLES(i, pa)
if(pa->flag & PARS_TAG)
PE_mirror_particle(ob, psmd->dm, psys, pa, NULL);
}
@@ -2140,7 +1957,7 @@ static void remove_tagged_keys(Scene *scene, Object *ob, ParticleSystem *psys)
/* mirror key tags */
psmd= psys_get_modifier(ob, psys);
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
LOOP_KEYS(k,ekey) {
if(ekey->flag & PEK_TAG) {
PE_mirror_particle(ob, psmd->dm, psys, pa, NULL);
@@ -2150,7 +1967,7 @@ static void remove_tagged_keys(Scene *scene, Object *ob, ParticleSystem *psys)
}
}
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
new_totkey= pa->totkey;
LOOP_KEYS(k,ekey) {
if(ekey->flag & PEK_TAG)
@@ -2164,7 +1981,7 @@ static void remove_tagged_keys(Scene *scene, Object *ob, ParticleSystem *psys)
totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
new_totkey= pa->totkey;
LOOP_KEYS(k,ekey) {
if(ekey->flag & PEK_TAG)
@@ -2293,7 +2110,7 @@ static int subdivide_exec(bContext *C, wmOperator *op)
data.psys->edit->totkeys= psys_count_keys(data.psys);
recalc_lengths(data.psys);
- PE_recalc_world_cos(data.ob, data.psys);
+ psys_update_world_cos(data.ob, data.psys);
PE_update_object(data.scene, data.ob, 1);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_DATA, data.ob);
@@ -2342,7 +2159,7 @@ static int remove_doubles_exec(bContext *C, wmOperator *op)
tree=BLI_kdtree_new(totpart);
/* insert particles into kd tree */
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(particle_is_selected(psys, pa)) {
psys_mat_hair_to_object(ob, psmd->dm, psys->part->from, pa, mat);
VECCOPY(co, pa->hair[0].co);
@@ -2354,7 +2171,7 @@ static int remove_doubles_exec(bContext *C, wmOperator *op)
BLI_kdtree_balance(tree);
/* tag particles to be removed */
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(particle_is_selected(psys, pa)) {
psys_mat_hair_to_object(ob, psmd->dm, psys->part->from, pa, mat);
VECCOPY(co, pa->hair[0].co);
@@ -2389,7 +2206,7 @@ static int remove_doubles_exec(bContext *C, wmOperator *op)
BKE_reportf(op->reports, RPT_INFO, "Remove %d double particles.", totremoved);
- PE_recalc_world_cos(ob, psys);
+ psys_update_world_cos(ob, psys);
DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_DATA, ob);
@@ -2413,47 +2230,119 @@ void PARTICLE_OT_remove_doubles(wmOperatorType *ot)
RNA_def_float(ot->srna, "threshold", 0.0002f, 0.0f, FLT_MAX, "Threshold", "Threshold distance withing which particles are removed", 0.00001f, 0.1f);
}
-/********************* radial control operator *********************/
+/************************ cursor drawing *******************************/
-/* XXX static */
-void PE_radialcontrol_callback(const int mode, const int val)
+static void brush_drawcursor(bContext *C, int x, int y, void *customdata)
{
- ParticleEditSettings *pset= NULL; // XXX PE_settings(scene);
+ ParticleEditSettings *pset= PE_settings(CTX_data_scene(C));
+ ParticleBrushData *brush;
+
+ if(pset->brushtype < 0)
+ return;
- if(pset->brushtype>=0) {
- ParticleBrushData *brush= &pset->brush[pset->brushtype];
+ brush= &pset->brush[pset->brushtype];
- if(mode == RADIALCONTROL_SIZE)
- brush->size= val;
- else if(mode == RADIALCONTROL_STRENGTH)
- brush->strength= val;
+ if(brush) {
+ glPushMatrix();
+
+ glTranslatef((float)x, (float)y, 0.0f);
+
+ glColor4ub(255, 255, 255, 128);
+ glEnable(GL_LINE_SMOOTH );
+ glEnable(GL_BLEND);
+ glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size, 40);
+ glDisable(GL_BLEND);
+ glDisable(GL_LINE_SMOOTH );
+
+ glPopMatrix();
}
+}
- (*PE_radialcontrol())= NULL;
+static void toggle_particle_cursor(bContext *C, int enable)
+{
+ ParticleEditSettings *pset= PE_settings(CTX_data_scene(C));
+
+ if(pset->paintcursor && !enable) {
+ WM_paint_cursor_end(CTX_wm_manager(C), pset->paintcursor);
+ pset->paintcursor = NULL;
+ }
+ else if(enable)
+ pset->paintcursor= WM_paint_cursor_activate(CTX_wm_manager(C), PE_poll, brush_drawcursor, NULL);
}
-struct RadialControl **PE_radialcontrol(void)
+/********************* radial control operator *********************/
+
+static int brush_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
- static struct RadialControl *rc= NULL;
- return &rc;
+ ParticleEditSettings *pset= PE_settings(CTX_data_scene(C));
+ ParticleBrushData *brush;
+ int mode = RNA_enum_get(op->ptr, "mode");
+ float original_value;
+
+ if(pset->brushtype < 0)
+ return OPERATOR_CANCELLED;
+
+ brush= &pset->brush[pset->brushtype];
+
+ toggle_particle_cursor(C, 0);
+
+ if(mode == WM_RADIALCONTROL_SIZE)
+ original_value = brush->size;
+ else if(mode == WM_RADIALCONTROL_STRENGTH)
+ original_value = brush->strength;
+
+ RNA_float_set(op->ptr, "initial_value", original_value);
+
+ return WM_radial_control_invoke(C, op, event);
}
-void PE_radialcontrol_start(const int mode)
+static int brush_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event)
{
- ParticleEditSettings *pset= NULL; // XXX PE_settings(scene);
- int orig= 1;
+ int ret = WM_radial_control_modal(C, op, event);
- if(pset->brushtype>=0) {
- ParticleBrushData *brush= &pset->brush[pset->brushtype];
-
- if(mode == RADIALCONTROL_SIZE)
- orig= brush->size;
- else if(mode == RADIALCONTROL_STRENGTH)
- orig= brush->strength;
-
-// if(mode != RADIALCONTROL_NONE)
-// (*PE_radialcontrol())= radialcontrol_start(mode, PE_radialcontrol_callback, orig, 100, 0);
- }
+ if(ret != OPERATOR_RUNNING_MODAL)
+ toggle_particle_cursor(C, 1);
+
+ return ret;
+}
+
+static int brush_radial_control_exec(bContext *C, wmOperator *op)
+{
+ ParticleEditSettings *pset= PE_settings(CTX_data_scene(C));
+ ParticleBrushData *brush;
+ int mode = RNA_enum_get(op->ptr, "mode");
+ float new_value = RNA_float_get(op->ptr, "new_value");
+ char str[256];
+
+ if(pset->brushtype < 0)
+ return OPERATOR_CANCELLED;
+
+ brush= &pset->brush[pset->brushtype];
+
+ if(mode == WM_RADIALCONTROL_SIZE)
+ brush->size= new_value;
+ else if(mode == WM_RADIALCONTROL_STRENGTH)
+ brush->strength= new_value;
+
+ WM_radial_control_string(op, str, 256);
+
+ return OPERATOR_FINISHED;
+}
+
+void PARTICLE_OT_brush_radial_control(wmOperatorType *ot)
+{
+ WM_OT_radial_control_partial(ot);
+
+ ot->name= "Brush Radial Control";
+ ot->idname= "PARTICLE_OT_brush_radial_control";
+
+ ot->invoke= brush_radial_control_invoke;
+ ot->modal= brush_radial_control_modal;
+ ot->exec= brush_radial_control_exec;
+ ot->poll= PE_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
/*************************** delete operator **************************/
@@ -2538,14 +2427,14 @@ static void PE_mirror_x(Scene *scene, Object *ob, int tagged)
edit= psys->edit;
psmd= psys_get_modifier(ob, psys);
- mirrorfaces= mesh_get_x_mirror_faces(ob);
+ mirrorfaces= mesh_get_x_mirror_faces(ob, NULL);
if(!edit->mirror_cache)
PE_update_mirror_cache(ob, psys);
totpart= psys->totpart;
newtotpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
if(!tagged) {
@@ -2650,7 +2539,7 @@ static int mirror_exec(bContext *C, wmOperator *op)
PE_mirror_x(scene, ob, 0);
- PE_recalc_world_cos(ob, psys);
+ psys_update_world_cos(ob, psys);
WM_event_add_notifier(C, NC_OBJECT|ND_GEOM_DATA, ob);
DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
@@ -3162,7 +3051,6 @@ static int brush_edit_init(bContext *C, wmOperator *op)
if(pset->brushtype < 0)
return 0;
- // XXX
initgrabz(ar->regiondata, ob->obmat[3][0], ob->obmat[3][1], ob->obmat[3][2]);
bedit= MEM_callocN(sizeof(BrushEdit), "BrushEdit");
@@ -3193,10 +3081,10 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr)
RNA_int_get_array(itemptr, "mouse", mouse);
flip= RNA_boolean_get(itemptr, "flip");
- bglFlush();
- glReadBuffer(GL_BACK);
- glDrawBuffer(GL_BACK);
-// persp(PERSP_VIEW);
+ if(bedit->first) {
+ bedit->lastmouse[0]= mouse[0];
+ bedit->lastmouse[1]= mouse[1];
+ }
dx= mouse[0] - bedit->lastmouse[0];
dy= mouse[1] - bedit->lastmouse[1];
@@ -3211,6 +3099,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr)
(sqrt(dx * dx + dy * dy) > pset->brush[PE_BRUSH_ADD].step) : (dx != 0 || dy != 0))
|| bedit->first) {
+ view3d_operator_needs_opengl(C);
selected= (short)count_selected_keys(scene, psys);
switch(pset->brushtype) {
@@ -3359,7 +3248,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr)
if(pset->brushtype == PE_BRUSH_ADD && (pset->flag & PE_X_MIRROR))
PE_mirror_x(scene, ob, 1);
- PE_recalc_world_cos(ob,psys);
+ psys_update_world_cos(ob,psys);
psys_free_path_cache(psys);
DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
}
@@ -3518,7 +3407,7 @@ static void get_ParticleUndo(ParticleSystem *psys, ParticleUndo *undo)
HairKey *hkey;
int i, k, totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(pa->hair)
MEM_freeN(pa->hair);
@@ -3600,14 +3489,14 @@ void PE_undo_step(Scene *scene, int step)
ParticleEdit *edit= 0;
if(!PE_can_edit(psys)) return;
- edit=psys->edit;
+ edit= psys->edit;
if(step==0) {
get_ParticleUndo(psys,edit->curundo);
}
else if(step==1) {
- if(edit->curundo==NULL || edit->curundo->prev==NULL) error("No more steps to undo");
+ if(edit->curundo==NULL || edit->curundo->prev==NULL);
else {
if(G.f & G_DEBUG) printf("undo %s\n", edit->curundo->name);
edit->curundo= edit->curundo->prev;
@@ -3617,7 +3506,7 @@ void PE_undo_step(Scene *scene, int step)
else {
/* curundo has to remain current situation! */
- if(edit->curundo==NULL || edit->curundo->next==NULL) error("No more steps to redo");
+ if(edit->curundo==NULL || edit->curundo->next==NULL);
else {
get_ParticleUndo(psys, edit->curundo->next);
edit->curundo= edit->curundo->next;
@@ -3702,12 +3591,6 @@ void PE_undo_menu(Scene *scene, Object *ob)
/************************ utilities ******************************/
-void PE_get_colors(char sel[4], char nosel[4])
-{
- UI_GetThemeColor3ubv(TH_EDGE_SELECT, sel);
- UI_GetThemeColor3ubv(TH_WIRE, nosel);
-}
-
int PE_minmax(Scene *scene, float *min, float *max)
{
Object *ob= OBACT;
@@ -3723,12 +3606,12 @@ int PE_minmax(Scene *scene, float *min, float *max)
psmd= psys_get_modifier(ob, psys);
totpart= psys->totpart;
- LOOP_PARTICLES(i,pa) {
+ LOOP_PARTICLES(i, pa) {
if(pa->flag & PARS_HIDE) continue;
psys_mat_hair_to_global(ob, psmd->dm, psys->part->from, pa, mat);
- LOOP_KEYS(k,key) {
+ LOOP_KEYS(k, key) {
if(key->flag & PEK_SELECT) {
VECCOPY(co, key->co);
Mat4MulVecfl(mat, co);
@@ -3746,6 +3629,214 @@ int PE_minmax(Scene *scene, float *min, float *max)
return ok;
}
+/************************ particle edit toggle operator ************************/
+
+/* initialize needed data for bake edit */
+static void PE_create_particle_edit(Scene *scene, Object *ob, ParticleSystem *psys)
+{
+ ParticleEdit *edit= psys->edit;
+ ParticleData *pa;
+ ParticleEditKey *key;
+ HairKey *hkey;
+ int i, k, totpart= psys->totpart, alloc=1;
+
+ if((psys->flag & PSYS_EDITED)==0)
+ return;
+
+ if(edit) {
+ int newtotkeys= psys_count_keys(psys);
+
+ if(newtotkeys == edit->totkeys)
+ alloc=0;
+ }
+
+ if(alloc) {
+ if(edit) {
+ printf("ParticleEdit exists already! Poke jahka!");
+ PE_free_particle_edit(psys);
+ }
+
+ edit= psys->edit=MEM_callocN(sizeof(ParticleEdit), "PE_create_particle_edit");
+ psys->free_edit= PE_free_particle_edit;
+
+ edit->keys=MEM_callocN(totpart*sizeof(ParticleEditKey*),"ParticleEditKey array");
+
+ LOOP_PARTICLES(i, pa) {
+ key= edit->keys[i]= MEM_callocN(pa->totkey*sizeof(ParticleEditKey),"ParticleEditKeys");
+ for(k=0, hkey=pa->hair; k<pa->totkey; k++, hkey++, key++) {
+ key->co= hkey->co;
+ key->time= &hkey->time;
+ key->flag= hkey->editflag;
+ }
+ }
+
+ edit->totkeys= psys_count_keys(psys);
+
+ UI_GetThemeColor3ubv(TH_EDGE_SELECT, edit->sel_col);
+ UI_GetThemeColor3ubv(TH_WIRE, edit->nosel_col);
+ }
+
+ recalc_lengths(psys);
+ recalc_emitter_field(ob, psys);
+ psys_update_world_cos(ob, psys);
+
+ if(alloc) {
+ ParticleUndo_clear(psys);
+ PE_undo_push(scene, "Original");
+ }
+}
+
+static int particle_edit_toggle_poll(bContext *C)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
+
+ if(!scene || !ob || ob->id.lib)
+ return 0;
+
+ return (ob->particlesystem.first != NULL);
+}
+
+static int particle_edit_toggle_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
+ ParticleSystem *psys= PE_get_current(scene, ob);
+
+ if(psys==NULL) {
+ psys= ob->particlesystem.first;
+ psys->flag |= PSYS_CURRENT;
+ }
+
+ if(!(G.f & G_PARTICLEEDIT)) {
+ if(psys && psys->part->type == PART_HAIR && psys->flag & PSYS_EDITED) {
+ if(psys_check_enabled(ob, psys)) {
+ if(psys->edit==NULL)
+ PE_create_particle_edit(scene, ob, psys);
+
+ psys_update_world_cos(ob, psys);
+ }
+ }
+
+ G.f |= G_PARTICLEEDIT;
+ toggle_particle_cursor(C, 1);
+ WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_PARTICLE, NULL);
+ }
+ else {
+ G.f &= ~G_PARTICLEEDIT;
+ toggle_particle_cursor(C, 0);
+ WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, NULL);
+ }
+
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+
+ return OPERATOR_FINISHED;
+}
+
+void PARTICLE_OT_particle_edit_toggle(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Particle Edit Toggle";
+ ot->idname= "PARTICLE_OT_particle_edit_toggle";
+
+ /* api callbacks */
+ ot->exec= particle_edit_toggle_exec;
+ ot->poll= particle_edit_toggle_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+
+/************************ set editable operator ************************/
+
+static int set_editable_exec(bContext *C, wmOperator *op)
+{
+ Scene *scene= CTX_data_scene(C);
+ Object *ob= CTX_data_active_object(C);
+ ParticleSystem *psys= PE_get_current(scene, ob);
+
+ if(psys->flag & PSYS_EDITED) {
+ if(1) { // XXX okee("Lose changes done in particle mode?")) {
+ if(psys->edit)
+ PE_free_particle_edit(psys);
+
+ psys->flag &= ~PSYS_EDITED;
+ psys->recalc |= PSYS_RECALC_HAIR;
+
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+ }
+ }
+ else {
+ if(psys_check_enabled(ob, psys)) {
+ psys->flag |= PSYS_EDITED;
+
+ if(G.f & G_PARTICLEEDIT)
+ PE_create_particle_edit(scene, ob, psys);
+ }
+ else
+ BKE_report(op->reports, RPT_ERROR, "Particle system not enabled, skipping set editable");
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+void PARTICLE_OT_set_editable(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Set Editable";
+ ot->idname= "PARTICLE_OT_set_editable";
+
+ /* api callbacks */
+ ot->exec= set_editable_exec;
+ ot->poll= particle_edit_toggle_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
+/*********************** change active **************************/
+
+void PE_change_act(void *ob_v, void *act_v)
+{
+ Scene *scene= NULL; // XXX
+ Object *ob= ob_v;
+ ParticleSystem *psys;
+ short act= *((short*)act_v) - 1;
+
+ if((psys=psys_get_current(ob)))
+ psys->flag &= ~PSYS_CURRENT;
+
+ if(act>=0) {
+ if((psys=BLI_findlink(&ob->particlesystem,act))) {
+ psys->flag |= PSYS_CURRENT;
+
+ if(psys_check_enabled(ob, psys)) {
+ if(G.f & G_PARTICLEEDIT && !psys->edit)
+ PE_create_particle_edit(scene, ob, psys);
+ psys_update_world_cos(ob, psys);
+ }
+ }
+ }
+}
+
+void PE_change_act_psys(Scene *scene, Object *ob, ParticleSystem *psys)
+{
+ ParticleSystem *p;
+
+ if((p=psys_get_current(ob)))
+ p->flag &= ~PSYS_CURRENT;
+
+ psys->flag |= PSYS_CURRENT;
+
+ if(psys_check_enabled(ob, psys)) {
+ if(G.f & G_PARTICLEEDIT && !psys->edit)
+ PE_create_particle_edit(scene, ob, psys);
+
+ psys_update_world_cos(ob, psys);
+ }
+}
+
/*********************** specials menu **************************/
static int specials_menu_invoke(bContext *C, wmOperator *op, wmEvent *event)
@@ -3801,10 +3892,12 @@ void ED_operatortypes_particle(void)
WM_operatortype_append(PARTICLE_OT_set_brush);
WM_operatortype_append(PARTICLE_OT_brush_edit);
+ WM_operatortype_append(PARTICLE_OT_brush_radial_control);
WM_operatortype_append(PARTICLE_OT_specials_menu);
WM_operatortype_append(PARTICLE_OT_particle_edit_toggle);
+ WM_operatortype_append(PARTICLE_OT_set_editable);
}
void ED_keymap_particle(wmWindowManager *wm)
@@ -3826,6 +3919,8 @@ void ED_keymap_particle(wmWindowManager *wm)
WM_keymap_add_item(keymap, "PARTICLE_OT_brush_edit", ACTIONMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PARTICLE_OT_brush_edit", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0);
+ RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_brush_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
+ RNA_enum_set(WM_keymap_add_item(keymap, "PARTICLE_OT_brush_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
WM_keymap_add_item(keymap, "PARTICLE_OT_specials_menu", WKEY, KM_PRESS, 0, 0);
}
diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c
index 49acfed859c..8bc6cb6e567 100644
--- a/source/blender/editors/screen/screen_ops.c
+++ b/source/blender/editors/screen/screen_ops.c
@@ -303,7 +303,7 @@ callbacks:
typedef struct sActionzoneData {
ScrArea *sa1, *sa2;
AZone *az;
- int x, y, gesture_dir;
+ int x, y, gesture_dir, modifier;
} sActionzoneData;
/* used by other operators too */
@@ -372,6 +372,8 @@ static void actionzone_apply(bContext *C, wmOperator *op)
{
wmEvent event;
wmWindow *win= CTX_wm_window(C);
+ sActionzoneData *sad= op->customdata;
+ sad->modifier= RNA_int_get(op->ptr, "modifier");
event= *(win->eventstate); /* XXX huh huh? make api call */
event.type= EVT_ACTIONZONE;
@@ -433,25 +435,30 @@ void SCREEN_OT_actionzone(wmOperatorType *ot)
ot->modal= actionzone_modal;
ot->poll= ED_operator_areaactive;
+ RNA_def_int(ot->srna, "modifier", 0, 0, 2, "modifier", "modifier state", 0, 2);
}
-/* *********** Rip area operator ****************** */
+/* *********** Duplicate area as new window operator ****************** */
/* operator callback */
/* (ton) removed attempt to merge ripped area with another, don't think this is desired functionality.
conventions: 'atomic' and 'dont think for user' :) */
-static int screen_area_rip_op(bContext *C, wmOperator *op)
+static int screen_area_dupli_new_op(bContext *C, wmOperator *op, wmEvent *event)
{
wmWindow *newwin, *win;
bScreen *newsc, *sc;
ScrArea *sa;
rcti rect;
+ sActionzoneData *sad= event->customdata;
+
+ if(sad==NULL)
+ return OPERATOR_CANCELLED;
win= CTX_wm_window(C);
sc= CTX_wm_screen(C);
- sa= CTX_wm_area(C);
+ sa= sad->sa1;
/* poll() checks area context, but we don't accept full-area windows */
if(sc->full != SCREENNORMAL)
@@ -475,13 +482,12 @@ static int screen_area_rip_op(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
-void SCREEN_OT_area_rip(wmOperatorType *ot)
+void SCREEN_OT_area_dupli_new(wmOperatorType *ot)
{
- ot->name= "Rip Area into New Window";
- ot->idname= "SCREEN_OT_area_rip";
+ ot->name= "Duplicate Area into New Window";
+ ot->idname= "SCREEN_OT_area_dupli_new";
- ot->invoke= WM_operator_confirm;
- ot->exec= screen_area_rip_op;
+ ot->invoke= screen_area_dupli_new_op;
ot->poll= ED_operator_areaactive;
}
@@ -896,6 +902,10 @@ static int area_split_invoke(bContext *C, wmOperator *op, wmEvent *event)
if(event->type==EVT_ACTIONZONE) {
sActionzoneData *sad= event->customdata;
int dir;
+
+ if(sad->modifier>0) {
+ return OPERATOR_PASS_THROUGH;
+ }
/* verify *sad itself */
if(sad==NULL || sad->sa1==NULL || sad->az==NULL)
@@ -1259,6 +1269,10 @@ static int area_join_invoke(bContext *C, wmOperator *op, wmEvent *event)
if(event->type==EVT_ACTIONZONE) {
sActionzoneData *sad= event->customdata;
+
+ if(sad->modifier>0) {
+ return OPERATOR_PASS_THROUGH;
+ }
/* verify *sad itself */
if(sad==NULL || sad->sa1==NULL || sad->sa2==NULL)
@@ -1741,7 +1755,6 @@ static int testing123(bContext *C, wmOperator *op, wmEvent *event)
uiMenuItemO(head, ICON_PROP_CON, "SCREEN_OT_screen_full_area");
uiMenuItemO(head, ICON_SMOOTHCURVE, "SCREEN_OT_region_foursplit");
uiMenuLevel(head, "Submenu", newlevel1);
- uiMenuItemO(head, ICON_PROP_ON, "SCREEN_OT_area_rip");
uiPupMenuEnd(C, head);
@@ -2295,7 +2308,7 @@ void ED_operatortypes_screen(void)
WM_operatortype_append(SCREEN_OT_area_move);
WM_operatortype_append(SCREEN_OT_area_split);
WM_operatortype_append(SCREEN_OT_area_join);
- WM_operatortype_append(SCREEN_OT_area_rip);
+ WM_operatortype_append(SCREEN_OT_area_dupli_new);
WM_operatortype_append(SCREEN_OT_region_split);
WM_operatortype_append(SCREEN_OT_region_foursplit);
WM_operatortype_append(SCREEN_OT_region_flip);
@@ -2326,13 +2339,16 @@ void ED_keymap_screen(wmWindowManager *wm)
/* standard timers */
WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", TIMER0, KM_ANY, KM_ANY, 0);
- WM_keymap_verify_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, 0, 0);
+ /*WM_keymap_verify_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, 0, 0);*/
+ RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "modifier", 0);
+ RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "modifier", 1);
+ RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "modifier", 2);
/* screen tools */
WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0);
- WM_keymap_verify_item(keymap, "SCREEN_OT_area_split", EVT_ACTIONZONE, 0, 0, 0);
- WM_keymap_verify_item(keymap, "SCREEN_OT_area_join", EVT_ACTIONZONE, 0, 0, 0);
- WM_keymap_verify_item(keymap, "SCREEN_OT_area_rip", RKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
+ WM_keymap_verify_item(keymap, "SCREEN_OT_area_split", EVT_ACTIONZONE, 0, KM_ANY, 0);
+ WM_keymap_verify_item(keymap, "SCREEN_OT_area_join", EVT_ACTIONZONE, 0, KM_ANY, 0);
+ WM_keymap_verify_item(keymap, "SCREEN_OT_area_dupli_new", EVT_ACTIONZONE, 0, KM_ANY, 0);
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", 1);
RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1);
WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", UPARROWKEY, KM_PRESS, KM_CTRL, 0);
diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c
index ee5aa1ee4a7..fd6719d63bb 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -4759,6 +4759,110 @@ void PAINT_OT_image_paint(wmOperatorType *ot)
RNA_def_collection_runtime(ot->srna, "stroke", &RNA_OperatorStrokeElement, "Stroke", "");
}
+static int get_imapaint_zoom(bContext *C, float *zoomx, float *zoomy)
+{
+ RegionView3D *rv3d= CTX_wm_region_view3d(C);
+
+ if(!rv3d) {
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+ ARegion *ar= CTX_wm_region(C);
+
+ ED_space_image_zoom(sima, ar, zoomx, zoomy);
+
+ return 1;
+ }
+
+ *zoomx = *zoomy = 1;
+
+ return 0;
+}
+
+/************************ cursor drawing *******************************/
+
+static void brush_drawcursor(bContext *C, int x, int y, void *customdata)
+{
+ Brush *brush= image_paint_brush(C);
+
+ if(brush) {
+ float zoomx, zoomy;
+ glPushMatrix();
+
+ glTranslatef((float)x, (float)y, 0.0f);
+
+ if(get_imapaint_zoom(C, &zoomx, &zoomy))
+ glScalef(zoomx, zoomy, 1.0f);
+
+ glColor4ub(255, 255, 255, 128);
+ glEnable( GL_LINE_SMOOTH );
+ glEnable(GL_BLEND);
+ glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size*0.5f, 40);
+ glDisable(GL_BLEND);
+ glDisable( GL_LINE_SMOOTH );
+
+ glPopMatrix();
+ }
+}
+
+static void toggle_paint_cursor(bContext *C, int enable)
+{
+ ToolSettings *settings= CTX_data_scene(C)->toolsettings;
+
+ if(settings->imapaint.paintcursor && !enable) {
+ WM_paint_cursor_end(CTX_wm_manager(C), settings->imapaint.paintcursor);
+ settings->imapaint.paintcursor = NULL;
+ }
+ else if(enable)
+ settings->imapaint.paintcursor= WM_paint_cursor_activate(CTX_wm_manager(C), image_paint_poll, brush_drawcursor, NULL);
+}
+
+/* ************ image paint radial control *************/
+static int paint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ float zoom;
+ ToolSettings *ts = CTX_data_scene(C)->toolsettings;
+ get_imapaint_zoom(C, &zoom, &zoom);
+ toggle_paint_cursor(C, !ts->imapaint.paintcursor);
+ brush_radial_control_invoke(op, ts->imapaint.brush, 0.5 * zoom);
+ return WM_radial_control_invoke(C, op, event);
+}
+
+static int paint_radial_control_modal(bContext *C, wmOperator *op, wmEvent *event)
+{
+ ToolSettings *ts = CTX_data_scene(C)->toolsettings;
+ int ret = WM_radial_control_modal(C, op, event);
+ if(ret != OPERATOR_RUNNING_MODAL)
+ toggle_paint_cursor(C, !ts->imapaint.paintcursor);
+ return ret;
+}
+
+static int paint_radial_control_exec(bContext *C, wmOperator *op)
+{
+ float zoom;
+ int ret;
+ char str[256];
+ get_imapaint_zoom(C, &zoom, &zoom);
+ ret = brush_radial_control_exec(op, CTX_data_scene(C)->toolsettings->imapaint.brush, 2.0 / zoom);
+ WM_radial_control_string(op, str, 256);
+
+ return ret;
+}
+
+void PAINT_OT_image_paint_radial_control(wmOperatorType *ot)
+{
+ WM_OT_radial_control_partial(ot);
+
+ ot->name= "Image Paint Radial Control";
+ ot->idname= "PAINT_OT_image_paint_radial_control";
+
+ ot->invoke= paint_radial_control_invoke;
+ ot->modal= paint_radial_control_modal;
+ ot->exec= paint_radial_control_exec;
+ ot->poll= image_paint_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
/************************ grab clone operator ************************/
typedef struct GrabClone {
@@ -4962,50 +5066,6 @@ void PAINT_OT_set_clone_cursor(wmOperatorType *ot)
RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Cursor location in world space coordinates.", -10000.0f, 10000.0f);
}
-/************************ cursor drawing *******************************/
-
-static void brush_drawcursor(bContext *C, int x, int y, void *customdata)
-{
- Brush *brush= image_paint_brush(C);
- RegionView3D *rv3d= CTX_wm_region_view3d(C);
-
- if(brush) {
- glPushMatrix();
-
- glTranslatef((float)x, (float)y, 0.0f);
-
- if(!rv3d) {
- SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
- ARegion *ar= CTX_wm_region(C);
- float zoomx, zoomy;
-
- ED_space_image_zoom(sima, ar, &zoomx, &zoomy);
- glScalef(zoomx, zoomy, 1.0f);
- }
-
- glColor4ub(255, 255, 255, 128);
- glEnable( GL_LINE_SMOOTH );
- glEnable(GL_BLEND);
- glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size*0.5f, 40);
- glDisable(GL_BLEND);
- glDisable( GL_LINE_SMOOTH );
-
- glPopMatrix();
- }
-}
-
-static void toggle_paint_cursor(bContext *C, int enable)
-{
- ToolSettings *settings= CTX_data_scene(C)->toolsettings;
-
- if(settings->imapaint.paintcursor && !enable) {
- WM_paint_cursor_end(CTX_wm_manager(C), settings->imapaint.paintcursor);
- settings->imapaint.paintcursor = NULL;
- }
- else if(enable)
- settings->imapaint.paintcursor= WM_paint_cursor_activate(CTX_wm_manager(C), image_paint_poll, brush_drawcursor, NULL);
-}
-
/******************** texture paint toggle operator ********************/
static int texture_paint_toggle_poll(bContext *C)
@@ -5076,3 +5136,47 @@ void PAINT_OT_texture_paint_toggle(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
+/************* texture paint radial control *************/
+
+static int texture_paint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ ToolSettings *ts = CTX_data_scene(C)->toolsettings;
+ toggle_paint_cursor(C, !ts->imapaint.paintcursor);
+ brush_radial_control_invoke(op, ts->imapaint.brush, 0.5);
+ return WM_radial_control_invoke(C, op, event);
+}
+
+static int texture_paint_radial_control_exec(bContext *C, wmOperator *op)
+{
+ int ret = brush_radial_control_exec(op, CTX_data_scene(C)->toolsettings->imapaint.brush, 2);
+ char str[256];
+ WM_radial_control_string(op, str, 256);
+
+ return ret;
+}
+
+static int texture_paint_poll(bContext *C)
+{
+ if(texture_paint_toggle_poll(C))
+ if(G.f & G_TEXTUREPAINT)
+ return 1;
+
+ return 0;
+}
+
+void PAINT_OT_texture_paint_radial_control(wmOperatorType *ot)
+{
+ WM_OT_radial_control_partial(ot);
+
+ ot->name= "Texture Paint Radial Control";
+ ot->idname= "PAINT_OT_texture_paint_radial_control";
+
+ ot->invoke= texture_paint_radial_control_invoke;
+ ot->modal= paint_radial_control_modal;
+ ot->exec= texture_paint_radial_control_exec;
+ ot->poll= texture_paint_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+}
+
diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h
index a5ac3264eee..7e1ecd9629a 100644
--- a/source/blender/editors/sculpt_paint/paint_intern.h
+++ b/source/blender/editors/sculpt_paint/paint_intern.h
@@ -47,10 +47,12 @@ void PAINT_OT_vertex_paint(struct wmOperatorType *ot);
/* paint_image.c */
void PAINT_OT_image_paint(struct wmOperatorType *ot);
+void PAINT_OT_image_paint_radial_control(struct wmOperatorType *ot);
void PAINT_OT_grab_clone(struct wmOperatorType *ot);
void PAINT_OT_sample_color(struct wmOperatorType *ot);
void PAINT_OT_set_clone_cursor(struct wmOperatorType *ot);
void PAINT_OT_texture_paint_toggle(struct wmOperatorType *ot);
+void PAINT_OT_texture_paint_radial_control(struct wmOperatorType *ot);
/* paint_utils.c */
int imapaint_pick_face(struct ViewContext *vc, struct Mesh *me, int *mval, unsigned int *index);
diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c
index 0918e8c9b94..6b3a36de826 100644
--- a/source/blender/editors/sculpt_paint/paint_ops.c
+++ b/source/blender/editors/sculpt_paint/paint_ops.c
@@ -12,7 +12,9 @@ void ED_operatortypes_paint(void)
{
/* image */
WM_operatortype_append(PAINT_OT_texture_paint_toggle);
+ WM_operatortype_append(PAINT_OT_texture_paint_radial_control);
WM_operatortype_append(PAINT_OT_image_paint);
+ WM_operatortype_append(PAINT_OT_image_paint_radial_control);
WM_operatortype_append(PAINT_OT_sample_color);
WM_operatortype_append(PAINT_OT_grab_clone);
WM_operatortype_append(PAINT_OT_set_clone_cursor);
diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c
index 1623c7feef1..a9860402f74 100644
--- a/source/blender/editors/sculpt_paint/paint_vertex.c
+++ b/source/blender/editors/sculpt_paint/paint_vertex.c
@@ -1890,7 +1890,6 @@ static int vpaint_invoke(bContext *C, wmOperator *op, wmEvent *event)
void PAINT_OT_vertex_paint(wmOperatorType *ot)
{
-
/* identifiers */
ot->name= "Vertex Paint";
ot->idname= "PAINT_OT_vertex_paint";
@@ -1903,6 +1902,5 @@ void PAINT_OT_vertex_paint(wmOperatorType *ot)
/* flags */
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
-
}
diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c
index 8987479bbfc..40aaee758b9 100644
--- a/source/blender/editors/sculpt_paint/sculpt.c
+++ b/source/blender/editors/sculpt_paint/sculpt.c
@@ -1261,7 +1261,7 @@ static void SCULPT_OT_brush_curve_preset(wmOperatorType *ot)
static int sculpt_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *event)
{
toggle_paint_cursor(C);
- brush_radial_control_invoke(op, CTX_data_scene(C)->toolsettings->sculpt->brush);
+ brush_radial_control_invoke(op, CTX_data_scene(C)->toolsettings->sculpt->brush, 1);
return WM_radial_control_invoke(C, op, event);
}
@@ -1275,7 +1275,7 @@ static int sculpt_radial_control_modal(bContext *C, wmOperator *op, wmEvent *eve
static int sculpt_radial_control_exec(bContext *C, wmOperator *op)
{
- int ret = brush_radial_control_exec(op, CTX_data_scene(C)->toolsettings->sculpt->brush);
+ int ret = brush_radial_control_exec(op, CTX_data_scene(C)->toolsettings->sculpt->brush, 1);
char str[256];
WM_radial_control_string(op, str, 256);
diff --git a/source/blender/editors/space_action/action_draw.c b/source/blender/editors/space_action/action_draw.c
index 75ff73de56e..b87fdf65904 100644
--- a/source/blender/editors/space_action/action_draw.c
+++ b/source/blender/editors/space_action/action_draw.c
@@ -630,7 +630,15 @@ void draw_channel_names(bAnimContext *ac, SpaceAction *saction, ARegion *ar)
indent= 0;
special= -1;
- offset= (ac->datatype == ANIMCONT_DOPESHEET) ? 16 : 0;
+ if (ale->id) {
+ /* special exception for materials */
+ if (GS(ale->id->name) == ID_MA)
+ offset= 25;
+ else
+ offset= 14;
+ }
+ else
+ offset= 0;
/* only show expand if there are any channels */
if (agrp->channels.first) {
@@ -658,21 +666,17 @@ void draw_channel_names(bAnimContext *ac, SpaceAction *saction, ARegion *ar)
group= (fcu->grp) ? 1 : 0;
grp= fcu->grp;
- switch (ale->ownertype) {
- case ANIMTYPE_NONE: /* no owner */
- case ANIMTYPE_FCURVE:
- offset= 0;
- break;
-
- case ANIMTYPE_DSMAT: /* for now, this is special case for materials */
+ if (ale->id) {
+ /* special exception for materials */
+ if (GS(ale->id->name) == ID_MA) {
offset= 21;
indent= 1;
- break;
-
- default:
+ }
+ else
offset= 14;
- break;
}
+ else
+ offset= 0;
if (fcu->flag & FCURVE_MUTED)
mute = ICON_MUTE_IPO_ON;
diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c
index 68e61d24b62..53403a4e699 100644
--- a/source/blender/editors/space_action/action_edit.c
+++ b/source/blender/editors/space_action/action_edit.c
@@ -68,6 +68,7 @@
#include "BKE_material.h"
#include "BKE_object.h"
#include "BKE_context.h"
+#include "BKE_report.h"
#include "BKE_utildefines.h"
#include "UI_view2d.h"
@@ -236,255 +237,46 @@ void ACT_OT_view_all (wmOperatorType *ot)
/* GENERAL STUFF */
/* ******************** Copy/Paste Keyframes Operator ************************* */
-/* - The copy/paste buffer currently stores a set of temporary F-Curves containing only the keyframes
- * that were selected in each of the original F-Curves
- * - All pasted frames are offset by the same amount. This is calculated as the difference in the times of
- * the current frame and the 'first keyframe' (i.e. the earliest one in all channels).
- * - The earliest frame is calculated per copy operation.
- */
-
-/* globals for copy/paste data (like for other copy/paste buffers) */
-ListBase actcopybuf = {NULL, NULL};
-static float actcopy_firstframe= 999999999.0f;
-
-/* This function frees any MEM_calloc'ed copy/paste buffer data */
-// XXX find some header to put this in!
-void free_actcopybuf ()
-{
- FCurve *fcu, *fcn;
-
- /* free_fcurve() frees F-Curve memory too, but we don't need to do remlink first, as we're freeing all
- * channels anyway, and the freeing func only cares about the data it's given
- */
- for (fcu= actcopybuf.first; fcu; fcu= fcn) {
- fcn= fcu->next;
- free_fcurve(fcu);
- }
-
- actcopybuf.first= actcopybuf.last= NULL;
- actcopy_firstframe= 999999999.0f;
-}
-
-/* ------------------- */
+/* NOTE: the backend code for this is shared with the graph editor */
-/* This function adds data to the copy/paste buffer, freeing existing data first
- * Only the selected action channels gets their selected keyframes copied.
- */
static short copy_action_keys (bAnimContext *ac)
{
ListBase anim_data = {NULL, NULL};
- bAnimListElem *ale;
- int filter;
+ int filter, ok=0;
/* clear buffer first */
- free_actcopybuf();
+ free_anim_copybuf();
/* filter data */
filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_CURVESONLY);
ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype);
- /* assume that each of these is an ipo-block */
- for (ale= anim_data.first; ale; ale= ale->next) {
-#if 0
- bActionChannel *achan;
- Ipo *ipo= ale->key_data;
- Ipo *ipn;
- IpoCurve *icu, *icn;
- BezTriple *bezt;
- int i;
-
- /* coerce an action-channel out of owner */
- if (ale->ownertype == ANIMTYPE_ACHAN) {
- bActionChannel *achanO= ale->owner;
- achan= MEM_callocN(sizeof(bActionChannel), "ActCopyPasteAchan");
- strcpy(achan->name, achanO->name);
- }
- else if (ale->ownertype == ANIMTYPE_SHAPEKEY) {
- achan= MEM_callocN(sizeof(bActionChannel), "ActCopyPasteAchan");
- strcpy(achan->name, "#ACP_ShapeKey");
- }
- else
- continue;
- BLI_addtail(&actcopybuf, achan);
-
- /* add constraint channel if needed, then add new ipo-block */
- if (ale->type == ANIMTYPE_CONCHAN) {
- bConstraintChannel *conchanO= ale->data;
- bConstraintChannel *conchan;
-
- conchan= MEM_callocN(sizeof(bConstraintChannel), "ActCopyPasteConchan");
- strcpy(conchan->name, conchanO->name);
- BLI_addtail(&achan->constraintChannels, conchan);
-
- conchan->ipo= ipn= MEM_callocN(sizeof(Ipo), "ActCopyPasteIpo");
- }
- else {
- achan->ipo= ipn= MEM_callocN(sizeof(Ipo), "ActCopyPasteIpo");
- }
- ipn->blocktype = ipo->blocktype;
-
- /* now loop through curves, and only copy selected keyframes */
- for (icu= ipo->curve.first; icu; icu= icu->next) {
- /* allocate a new curve */
- icn= MEM_callocN(sizeof(IpoCurve), "ActCopyPasteIcu");
- icn->blocktype = icu->blocktype;
- icn->adrcode = icu->adrcode;
- BLI_addtail(&ipn->curve, icn);
-
- /* find selected BezTriples to add to the buffer (and set first frame) */
- for (i=0, bezt=icu->bezt; i < icu->totvert; i++, bezt++) {
- if (BEZSELECTED(bezt)) {
- /* add to buffer ipo-curve */
- //insert_bezt_icu(icn, bezt); // XXX
-
- /* check if this is the earliest frame encountered so far */
- if (bezt->vec[1][0] < actcopy_firstframe)
- actcopy_firstframe= bezt->vec[1][0];
- }
- }
- }
-#endif
- //FCurve *fcu= (FCurve *)ale->key_data;
- //FCurve *fcn;
- //BezTriple *bezt;
- //int i;
-
-
- }
-
- /* check if anything ended up in the buffer */
- if (ELEM(NULL, actcopybuf.first, actcopybuf.last))
- return -1;
+ /* copy keyframes */
+ ok= copy_animedit_keys(ac, &anim_data);
- /* free temp memory */
+ /* clean up */
BLI_freelistN(&anim_data);
-
- /* everything went fine */
- return 0;
+
+ return ok;
}
+
static short paste_action_keys (bAnimContext *ac)
-{
-#if 0 // XXX old animation system
+{
ListBase anim_data = {NULL, NULL};
- bAnimListElem *ale;
- int filter;
-
- const Scene *scene= (ac->scene);
- const float offset = (float)(CFRA - actcopy_firstframe);
- char *actname = NULL, *conname = NULL;
- short no_name= 0;
-
- /* check if buffer is empty */
- if (ELEM(NULL, actcopybuf.first, actcopybuf.last)) {
- //error("No data in buffer to paste");
- return -1;
- }
- /* check if single channel in buffer (disregard names if so) */
- if (actcopybuf.first == actcopybuf.last)
- no_name= 1;
+ int filter, ok=0;
/* filter data */
- filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_IPOKEYS);
+ filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY);
ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype);
- /* from selected channels */
- for (ale= anim_data.first; ale; ale= ale->next) {
- Ipo *ipo_src = NULL;
- bActionChannel *achan;
- IpoCurve *ico, *icu;
- BezTriple *bezt;
- int i;
-
- /* find suitable IPO-block from buffer to paste from */
- for (achan= actcopybuf.first; achan; achan= achan->next) {
- /* try to match data */
- if (ale->ownertype == ANIMTYPE_ACHAN) {
- bActionChannel *achant= ale->owner;
-
- /* check if we have a corresponding action channel */
- if ((no_name) || (strcmp(achan->name, achant->name)==0)) {
- actname= achant->name;
-
- /* check if this is a constraint channel */
- if (ale->type == ANIMTYPE_CONCHAN) {
- bConstraintChannel *conchant= ale->data;
- bConstraintChannel *conchan;
-
- for (conchan=achan->constraintChannels.first; conchan; conchan=conchan->next) {
- if (strcmp(conchan->name, conchant->name)==0) {
- conname= conchant->name;
- ipo_src= conchan->ipo;
- break;
- }
- }
- if (ipo_src) break;
- }
- else {
- ipo_src= achan->ipo;
- break;
- }
- }
- }
- else if (ale->ownertype == ANIMTYPE_SHAPEKEY) {
- /* check if this action channel is "#ACP_ShapeKey" */
- if ((no_name) || (strcmp(achan->name, "#ACP_ShapeKey")==0)) {
- actname= NULL;
- ipo_src= achan->ipo;
- break;
- }
- }
- }
-
- /* this shouldn't happen, but it might */
- if (ipo_src == NULL)
- continue;
-
- /* loop over curves, pasting keyframes */
- for (ico= ipo_src->curve.first; ico; ico= ico->next) {
- /* get IPO-curve to paste to (IPO-curve might not exist for destination, so gets created) */
- //icu= verify_ipocurve(ale->id, ico->blocktype, actname, conname, NULL, ico->adrcode, 1);
-
-
- if (icu) {
- /* just start pasting, with the the first keyframe on the current frame, and so on */
- for (i=0, bezt=ico->bezt; i < ico->totvert; i++, bezt++) {
- /* temporarily apply offset to src beztriple while copying */
- bezt->vec[0][0] += offset;
- bezt->vec[1][0] += offset;
- bezt->vec[2][0] += offset;
-
- /* insert the keyframe */
- //insert_bezt_icu(icu, bezt); // XXX
-
- /* un-apply offset from src beztriple after copying */
- bezt->vec[0][0] -= offset;
- bezt->vec[1][0] -= offset;
- bezt->vec[2][0] -= offset;
- }
-
- /* recalculate channel's handles? */
- //calchandles_fcurve(fcu);
- }
- }
- }
+ /* paste keyframes */
+ ok= paste_animedit_keys(ac, &anim_data);
- /* free temp memory */
+ /* clean up */
BLI_freelistN(&anim_data);
-
- /* do depsgraph updates (for 3d-view)? */
-#if 0
- if ((ob) && (G.saction->pin==0)) {
- if (ob->type == OB_ARMATURE)
- DAG_object_flush_update(G.scene, ob, OB_RECALC_OB|OB_RECALC_DATA);
- else
- DAG_object_flush_update(G.scene, ob, OB_RECALC_OB);
- }
-#endif
-
-#endif // XXX old animation system
- return 0;
+ return ok;
}
/* ------------------- */
@@ -503,8 +295,8 @@ static int actkeys_copy_exec(bContext *C, wmOperator *op)
}
else {
if (copy_action_keys(&ac)) {
- // XXX errors - need a way to inform the user
- printf("Action Copy: No keyframes copied to copy-paste buffer\n");
+ BKE_report(op->reports, RPT_ERROR, "No keyframes copied to keyframes copy/paste buffer");
+ return OPERATOR_CANCELLED;
}
}
@@ -544,8 +336,8 @@ static int actkeys_paste_exec(bContext *C, wmOperator *op)
}
else {
if (paste_action_keys(&ac)) {
- // XXX errors - need a way to inform the user
- printf("Action Paste: Nothing to paste, as Copy-Paste buffer was empty.\n");
+ BKE_report(op->reports, RPT_ERROR, "No keyframes to paste");
+ return OPERATOR_CANCELLED;
}
}
@@ -582,88 +374,6 @@ EnumPropertyItem prop_actkeys_insertkey_types[] = {
{0, NULL, NULL, NULL}
};
-#if 0
-void insertkey_action(void)
-{
- void *data;
- short datatype;
-
- short mode;
- float cfra;
-
- /* get data */
- data= get_action_context(&datatype);
- if (data == NULL) return;
- cfra = frame_to_float(CFRA);
-
- if (ELEM(datatype, ACTCONT_ACTION, ACTCONT_DOPESHEET)) {
- ListBase act_data = {NULL, NULL};
- bActListElem *ale;
- int filter;
-
- /* ask user what to keyframe */
- if (datatype == ACTCONT_ACTION)
- mode = pupmenu("Insert Key%t|All Channels%x1|Only Selected Channels%x2|In Active Group%x3");
- else
- mode = pupmenu("Insert Key%t|All Channels%x1|Only Selected Channels%x2");
- if (mode <= 0) return;
-
- /* filter data */
- filter= (ACTFILTER_VISIBLE | ACTFILTER_FOREDIT | ACTFILTER_ONLYICU );
- if (mode == 2) filter |= ACTFILTER_SEL;
- else if (mode == 3) filter |= ACTFILTER_ACTGROUPED;
-
- actdata_filter(&act_data, filter, data, datatype);
-
- /* loop through ipo curves retrieved */
- for (ale= act_data.first; ale; ale= ale->next) {
- /* verify that this is indeed an ipo curve */
- if ((ale->key_data) && ((ale->owner) || (ale->id))) {
- bActionChannel *achan= (ale->ownertype==ACTTYPE_ACHAN) ? ((bActionChannel *)ale->owner) : (NULL);
- bConstraintChannel *conchan= (ale->type==ACTTYPE_CONCHAN) ? ale->data : NULL;
- IpoCurve *icu= (IpoCurve *)ale->key_data;
- ID *id= NULL;
-
- if (datatype == ACTCONT_ACTION) {
- if (ale->owner)
- id= ale->owner;
- }
- else if (datatype == ACTCONT_DOPESHEET) {
- if (ale->id)
- id= ale->id;
- }
-
- if (id)
- insertkey(id, icu->blocktype, ((achan)?(achan->name):(NULL)), ((conchan)?(conchan->name):(NULL)), icu->adrcode, 0);
- else
- insert_vert_icu(icu, cfra, icu->curval, 0);
- }
- }
-
- /* cleanup */
- BLI_freelistN(&act_data);
- }
- else if (datatype == ACTCONT_SHAPEKEY) {
- Key *key= (Key *)data;
- IpoCurve *icu;
-
- /* ask user if they want to insert a keyframe */
- mode = okee("Insert Keyframe?");
- if (mode <= 0) return;
-
- if (key->ipo) {
- for (icu= key->ipo->curve.first; icu; icu=icu->next) {
- insert_vert_icu(icu, cfra, icu->curval, 0);
- }
- }
- }
- else {
- /* this tool is not supported in this mode */
- return;
- }
-}
-#endif
-
/* this function is responsible for snapping keyframes to frame-times */
static void insert_action_keys(bAnimContext *ac, short mode)
{
diff --git a/source/blender/editors/space_action/action_header.c b/source/blender/editors/space_action/action_header.c
index 9723a7f7b03..c7fafece4ba 100644
--- a/source/blender/editors/space_action/action_header.c
+++ b/source/blender/editors/space_action/action_header.c
@@ -1563,6 +1563,7 @@ static void saction_idpoin_handle(bContext *C, ID *id, int event)
switch (event) {
case UI_ID_BROWSE:
case UI_ID_DELETE:
+ saction->action= (bAction*)id;
/* we must set this action to be the one used by active object (if not pinned) */
if (saction->pin == 0)
obact->adt->action= saction->action;
@@ -1691,7 +1692,7 @@ void action_header_buttons(const bContext *C, ARegion *ar)
//uiClearButLock();
/* NAME ETC (it is assumed that */
- xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID**)&saction->action, ID_AC, &saction->pin, xco, yco,
+ xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID*)saction->action, ID_AC, &saction->pin, xco, yco,
saction_idpoin_handle, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_ADD_NEW|UI_ID_DELETE|UI_ID_FAKE_USER|UI_ID_ALONE|UI_ID_PIN);
xco += 8;
diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c
index 311ac8ec6b4..5cf92abb664 100644
--- a/source/blender/editors/space_action/action_select.c
+++ b/source/blender/editors/space_action/action_select.c
@@ -839,13 +839,20 @@ static void mouse_action_keys (bAnimContext *ac, int mval[2], short selectmode)
deselect_action_keys(ac, 0, SELECT_SUBTRACT);
if (ELEM(ac->datatype, ANIMCONT_ACTION, ANIMCONT_DOPESHEET)) {
+ int filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CHANNELS); /* this should suffice for now */
+
+ /* deselect all other channels first */
ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR);
- /* Highlight Action-Group? */
+ /* Highlight Action-Group or F-Curve? */
if (agrp) {
agrp->flag |= AGRP_SELECTED;
- ANIM_action_set_active_channel(ac->data, ac->datatype, agrp, ANIMTYPE_GROUP);
+ ANIM_set_active_channel(ac->data, ac->datatype, filter, agrp, ANIMTYPE_GROUP);
}
+ else if (fcu) {
+ fcu->flag |= FCURVE_SELECTED;
+ ANIM_set_active_channel(ac->data, ac->datatype, filter, fcu, ANIMTYPE_FCURVE);
+ }
}
else if (ac->datatype == ANIMCONT_GPENCIL) {
ANIM_deselect_anim_channels(ac->data, ac->datatype, 0, ACHANNEL_SETFLAG_CLEAR);
diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c
index 29faf660575..72da15ccd9d 100644
--- a/source/blender/editors/space_file/file_draw.c
+++ b/source/blender/editors/space_file/file_draw.c
@@ -262,7 +262,7 @@ void file_calc_previews(const bContext *C, ARegion *ar)
int width=0, height=0;
int rows, columns;
- if (params->display) {
+ if (params->display == FILE_IMGDISPLAY) {
sfile->prv_w = 96;
sfile->prv_h = 96;
sfile->tile_border_x = 4;
@@ -531,39 +531,41 @@ void file_draw_fsmenu(const bContext *C, ARegion *ar)
int bmwidth = ar->v2d.cur.xmax - ar->v2d.cur.xmin - 2*TILE_BORDER_X;
int fontsize = U.fontsize;
- sx = ar->v2d.cur.xmin + TILE_BORDER_X;
- sy = ar->v2d.cur.ymax-2*TILE_BORDER_Y;
- for (i=0; i< nentries && (sy > ar->v2d.cur.ymin) ;++i) {
- char *fname = fsmenu_get_entry(i);
+ if (params->flag & FILE_BOOKMARKS) {
+ sx = ar->v2d.cur.xmin + TILE_BORDER_X;
+ sy = ar->v2d.cur.ymax-2*TILE_BORDER_Y;
+ for (i=0; i< nentries && (sy > ar->v2d.cur.ymin) ;++i) {
+ char *fname = fsmenu_get_entry(i);
- if (fname) {
- int sl;
- BLI_strncpy(bookmark, fname, FILE_MAX);
-
- sl = strlen(bookmark)-1;
- while (bookmark[sl] == '\\' || bookmark[sl] == '/') {
- bookmark[sl] = '\0';
- sl--;
- }
- if (params->active_bookmark == i ) {
- glColor4ub(0, 0, 0, 100);
- UI_ThemeColor(TH_HILITE);
- uiSetRoundBox(15);
- uiRoundBox(sx, sy - linestep, sx + bmwidth, sy, 6);
- // glRecti(sx, sy - linestep, sx + bmwidth, sy);
- UI_ThemeColor(TH_TEXT_HI);
+ if (fname) {
+ int sl;
+ BLI_strncpy(bookmark, fname, FILE_MAX);
+
+ sl = strlen(bookmark)-1;
+ while (bookmark[sl] == '\\' || bookmark[sl] == '/') {
+ bookmark[sl] = '\0';
+ sl--;
+ }
+ if (params->active_bookmark == i ) {
+ glColor4ub(0, 0, 0, 100);
+ UI_ThemeColor(TH_HILITE);
+ uiSetRoundBox(15);
+ uiRoundBox(sx, sy - linestep, sx + bmwidth, sy, 6);
+ // glRecti(sx, sy - linestep, sx + bmwidth, sy);
+ UI_ThemeColor(TH_TEXT_HI);
+ } else {
+ UI_ThemeColor(TH_TEXT);
+ }
+
+ file_draw_string(sx, sy, bookmark, bmwidth, fontsize);
+ sy -= linestep;
} else {
- UI_ThemeColor(TH_TEXT);
+ glColor4ub(0xB0,0xB0,0xB0, 0xFF);
+ sdrawline(sx, sy-1-fontsize/2 , sx + bmwidth, sy-1-fontsize/2);
+ glColor4ub(0x30,0x30,0x30, 0xFF);
+ sdrawline(sx, sy-fontsize/2 , sx + bmwidth, sy - fontsize/2);
+ sy -= linestep;
}
-
- file_draw_string(sx, sy, bookmark, bmwidth, fontsize);
- sy -= linestep;
- } else {
- glColor4ub(0xB0,0xB0,0xB0, 0xFF);
- sdrawline(sx, sy-1-fontsize/2 , sx + bmwidth, sy-1-fontsize/2);
- glColor4ub(0x30,0x30,0x30, 0xFF);
- sdrawline(sx, sy-fontsize/2 , sx + bmwidth, sy - fontsize/2);
- sy -= linestep;
}
}
}
diff --git a/source/blender/editors/space_file/file_header.c b/source/blender/editors/space_file/file_header.c
index ef86eb5b7f3..be734ec971d 100644
--- a/source/blender/editors/space_file/file_header.c
+++ b/source/blender/editors/space_file/file_header.c
@@ -141,6 +141,7 @@ void file_header_buttons(const bContext *C, ARegion *ar)
}
/* SORT TYPE */
+ uiBlockSetEmboss(block, UI_EMBOSSX);
xco+=XIC;
uiBlockBeginAlign(block);
uiDefIconButS(block, ROW, B_SORTIMASELLIST, ICON_SORTALPHA, xco+=XIC,0,XIC,YIC, &params->sort, 1.0, 0.0, 0, 0, "Sorts files alphabetically");
@@ -151,7 +152,16 @@ void file_header_buttons(const bContext *C, ARegion *ar)
xco+=XIC+10;
if (sfile->params->type != FILE_MAIN) {
- uiDefIconButBitS(block, TOG, 1, B_RELOADIMASELDIR, ICON_BOOKMARKS,xco+=XIC,0,XIC,YIC, &params->display, 0, 0, 0, 0, "Toggles Bookmarks on/off");
+ uiDefIconButBitS(block, TOG, FILE_BOOKMARKS, B_RELOADIMASELDIR, ICON_BOOKMARKS,xco+=XIC,0,XIC,YIC, &params->flag, 0, 0, 0, 0, "Toggles Bookmarks on/off");
+ xco+=XIC+10;
+ }
+
+ if (sfile->params->type != FILE_MAIN) {
+ uiBlockBeginAlign(block);
+ uiDefIconButS(block, ROW, B_RELOADIMASELDIR, ICON_SHORTDISPLAY, xco+=XIC,0,XIC,YIC, &params->display, 1.0, 1.0, 0, 0, "Displays short file description");
+ uiDefIconButS(block, ROW, B_RELOADIMASELDIR, ICON_LONGDISPLAY, xco+=XIC,0,XIC,YIC, &params->display, 1.0, 2.0, 0, 0, "Displays long file description");
+ uiDefIconButS(block, ROW, B_RELOADIMASELDIR, ICON_IMAGE_COL /* ICON_IMGDISPLAY */, xco+=XIC,0,XIC,YIC, &params->display, 1.0, 3.0, 0, 0, "Displays files as thumbnails");
+ uiBlockEndAlign(block);
xco+=XIC+10;
}
xcotitle= xco;
diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c
index 1cedc7b0282..ae989194527 100644
--- a/source/blender/editors/space_file/file_ops.c
+++ b/source/blender/editors/space_file/file_ops.c
@@ -417,7 +417,7 @@ int file_hilight_set(SpaceFile *sfile, ARegion *ar, int mx, int my)
numfiles = filelist_numfiles(sfile->files);
params = ED_fileselect_get_params(sfile);
- if (params->display) {
+ if (params->display == FILE_IMGDISPLAY) {
actfile = find_file_mouse_hor(sfile, ar, mx , my);
} else {
actfile = find_file_mouse_vert(sfile, ar, mx, my);
diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c
index 48f501f0173..70d7ad9cde5 100644
--- a/source/blender/editors/space_file/space_file.c
+++ b/source/blender/editors/space_file/space_file.c
@@ -36,6 +36,8 @@
#include "MEM_guardedalloc.h"
+#include "BIF_gl.h"
+
#include "BLO_readfile.h"
#include "BLI_blenlib.h"
@@ -50,7 +52,8 @@
#include "ED_screen.h"
#include "ED_fileselect.h"
-#include "BIF_gl.h"
+#include "IMB_imbuf_types.h"
+#include "IMB_thumbs.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -206,7 +209,7 @@ static void file_main_area_draw(const bContext *C, ARegion *ar)
glClear(GL_COLOR_BUFFER_BIT);
/* Allow dynamically sliders to be set, saves notifiers etc. */
- if (sfile->params && sfile->params->display)
+ if (sfile->params && (sfile->params->display == FILE_IMGDISPLAY) )
v2d->scroll = V2D_SCROLL_RIGHT;
else
v2d->scroll = V2D_SCROLL_BOTTOM;
@@ -225,7 +228,7 @@ static void file_main_area_draw(const bContext *C, ARegion *ar)
file_hilight_set(sfile, ar, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin);
}
- if (params->display) {
+ if (params->display == FILE_IMGDISPLAY) {
file_draw_previews(C, ar);
} else {
file_draw_list(C, ar);
@@ -414,6 +417,7 @@ void ED_file_init(void)
BLI_make_file_string("/", name, BLI_gethome(), ".Bfs");
fsmenu_read_file(name);
filelist_init_icons();
+ IMB_thumb_makedirs();
}
void ED_file_exit(void)
diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c
index 577ff79c402..859aab9283e 100644
--- a/source/blender/editors/space_graph/graph_buttons.c
+++ b/source/blender/editors/space_graph/graph_buttons.c
@@ -79,10 +79,13 @@
#include "graph_intern.h" // own include
-/* ******************* view3d space & buttons ************** */
+/* ******************* graph editor space & buttons ************** */
+
#define B_NOP 1
#define B_REDR 2
+/* -------------- */
+
static void do_graph_region_buttons(bContext *C, void *arg, int event)
{
//Scene *scene= CTX_data_scene(C);
@@ -95,34 +98,156 @@ static void do_graph_region_buttons(bContext *C, void *arg, int event)
//WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob);
}
-
-static void graph_panel_properties(const bContext *C, ARegion *ar, short cntrl, bAnimListElem *ale) // GRAPH_HANDLER_SETTINGS
+static void graph_panel_properties(const bContext *C, ARegion *ar, short cntrl, bAnimListElem *ale)
{
+ FCurve *fcu= (FCurve *)ale->data;
uiBlock *block;
char name[128];
block= uiBeginBlock(C, ar, "graph_panel_properties", UI_EMBOSS, UI_HELV);
- if(uiNewPanel(C, ar, block, "Properties", "Graph", 340, 30, 318, 254)==0) return;
+ if (uiNewPanel(C, ar, block, "Properties", "Graph", 340, 30, 318, 254)==0) return;
uiBlockSetHandleFunc(block, do_graph_region_buttons, NULL);
/* to force height */
uiNewPanelHeight(block, 204);
- // XXX testing buttons
+ /* Info - Active F-Curve */
uiDefBut(block, LABEL, 1, "Active F-Curve:", 10, 200, 150, 19, NULL, 0.0, 0.0, 0, 0, "");
- getname_anim_fcurve(name, ale->id, (FCurve *)ale->data);
- uiDefBut(block, LABEL, 1, name, 30, 180, 300, 19, NULL, 0.0, 0.0, 0, 0, "Name of Active F-Curve");
+ if (ale->id) {
+ // icon of active blocktype - is this really necessary?
+ int icon= geticon_anim_blocktype(GS(ale->id->name));
+
+ // xxx type of icon-but is currently "LABEL", as that one is plain...
+ uiDefIconBut(block, LABEL, 1, icon, 10, 180, 20, 19, NULL, 0, 0, 0, 0, "ID-type that F-Curve belongs to");
+ }
+
+ getname_anim_fcurve(name, ale->id, fcu);
+ uiDefBut(block, LABEL, 1, name, 30, 180, 300, 19, NULL, 0.0, 0.0, 0, 0, "Name of Active F-Curve");
-#if 0
- uiBlockBeginAlign(block);
- uiDefButF(block, NUM, B_REDR, "Spacing:", 10, 200, 140, 19, &v3d->grid, 0.001, 100.0, 10, 0, "Set the distance between grid lines");
- uiDefButS(block, NUM, B_REDR, "Lines:", 10, 180, 140, 19, &v3d->gridlines, 0.0, 100.0, 100, 0, "Set the number of grid lines in perspective view");
- uiDefButS(block, NUM, B_REDR, "Divisions:", 10, 160, 140, 19, &v3d->gridsubdiv, 1.0, 100.0, 100, 0, "Set the number of grid lines");
- uiBlockEndAlign(block);
-#endif
+ /* TODO: the following settings could be added here
+ * - F-Curve coloring mode - mode selector + color selector
+ * - Access details (ID-block + RNA-Path + Array Index)
+ * - ...
+ */
}
+/* -------------- */
+
+#define B_IPO_DEPCHANGE 10
+
+static void do_graph_region_driver_buttons(bContext *C, void *arg, int event)
+{
+ Scene *scene= CTX_data_scene(C);
+
+ switch(event) {
+ case B_IPO_DEPCHANGE:
+ {
+ /* rebuild depsgraph for the new deps */
+ DAG_scene_sort(scene);
+
+ /* TODO: which one? we need some way of sending these updates since curves from non-active ob could be being edited */
+ //DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA);
+ //DAG_object_flush_update(scene, ob, OB_RECALC_OB);
+ }
+ break;
+ }
+
+ /* default for now */
+ //WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob);
+}
+
+static void graph_panel_drivers(const bContext *C, ARegion *ar, short cntrl, bAnimListElem *ale)
+{
+ FCurve *fcu= (FCurve *)ale->data;
+ ChannelDriver *driver= fcu->driver;
+ uiBlock *block;
+ uiBut *but;
+ int len;
+
+ block= uiBeginBlock(C, ar, "graph_panel_drivers", UI_EMBOSS, UI_HELV);
+ if (uiNewPanel(C, ar, block, "Drivers", "Graph", 340, 30, 318, 254)==0) return;
+ uiBlockSetHandleFunc(block, do_graph_region_driver_buttons, NULL);
+
+ /* to force height */
+ uiNewPanelHeight(block, 204);
+
+ /* type */
+ uiDefBut(block, LABEL, 1, "Type:", 10, 200, 120, 20, NULL, 0.0, 0.0, 0, 0, "");
+ uiDefButI(block, MENU, B_IPO_DEPCHANGE,
+ "Driver Type%t|Transform Channel%x0|Scripted Expression%x1|Rotational Difference%x2",
+ 130,200,180,20, &driver->type, 0, 0, 0, 0, "Driver type");
+
+ /* buttons to draw depends on type of driver */
+ if (driver->type == DRIVER_TYPE_PYTHON) { /* PyDriver */
+ uiDefBut(block, TEX, B_REDR, "Expr: ", 10,160,300,20, driver->expression, 0, 255, 0, 0, "One-liner Python Expression to use as Scripted Expression");
+
+ if (driver->flag & DRIVER_FLAG_INVALID) {
+ uiDefIconBut(block, LABEL, 1, ICON_ERROR, 10, 140, 20, 19, NULL, 0, 0, 0, 0, "");
+ uiDefBut(block, LABEL, 0, "Error: invalid Python expression",
+ 30,140,230,19, NULL, 0, 0, 0, 0, "");
+ }
+ }
+ else { /* Channel or RotDiff - RotDiff just has extra settings */
+ /* Driver Object */
+ but= uiDefBut(block, TEX, B_IPO_DEPCHANGE, "OB: ", 10,160,150,20, driver->id->name+2, 0.0, 21.0, 0, 0, "Object that controls this Driver.");
+ uiButSetFunc(but, test_idbutton_cb, driver->id->name, NULL);
+
+ // XXX should we hide these technical details?
+ if (driver->id) {
+ /* Array Index */
+ // XXX ideally this is grouped with the path, but that can get quite long...
+ uiDefButI(block, NUM, B_IPO_DEPCHANGE, "Index: ", 170,160,140,20, &driver->array_index, 0, INT_MAX, 0, 0, "Index to the specific property used as Driver if applicable.");
+
+ /* RNA-Path - allocate if non-existant */
+ if (driver->rna_path == NULL) {
+ driver->rna_path= MEM_callocN(256, "Driver RNA-Path");
+ len= 255;
+ }
+ else
+ len= strlen(driver->rna_path);
+ uiDefBut(block, TEX, B_IPO_DEPCHANGE, "Path: ", 10,130,300,20, driver->rna_path, 0, len, 0, 0, "RNA Path (from Driver Object) to property used as Driver.");
+ }
+
+ /* for rotational difference, show second target... */
+ if (driver->type == DRIVER_TYPE_ROTDIFF) {
+ // TODO...
+ }
+ }
+}
+
+/* -------------- */
+
+static void do_graph_region_modifier_buttons(bContext *C, void *arg, int event)
+{
+ //Scene *scene= CTX_data_scene(C);
+
+ switch(event) {
+
+ }
+
+ /* default for now */
+ //WM_event_add_notifier(C, NC_OBJECT|ND_TRANSFORM, ob);
+}
+
+static void graph_panel_modifiers(const bContext *C, ARegion *ar, short cntrl, bAnimListElem *ale)
+{
+ //FCurve *fcu= (FCurve *)ale->data;
+ //FModifier *fcm;
+ uiBlock *block;
+
+ block= uiBeginBlock(C, ar, "graph_panel_modifiers", UI_EMBOSS, UI_HELV);
+ if (uiNewPanel(C, ar, block, "Modifiers", "Graph", 340, 30, 318, 254)==0) return;
+ uiBlockSetHandleFunc(block, do_graph_region_modifier_buttons, NULL);
+
+ /* to force height */
+ uiNewPanelHeight(block, 204); // XXX variable height!
+
+
+}
+
+/* -------------- */
+
/* Find 'active' F-Curve. It must be editable, since that's the purpose of these buttons (subject to change).
* We return the 'wrapper' since it contains valuable context info (about hierarchy), which will need to be freed
* when the caller is done with it.
@@ -169,13 +294,16 @@ void graph_region_buttons(const bContext *C, ARegion *ar)
if (ale == NULL)
return;
- // XXX temp panel for testing
+ /* for now, the properties panel displays info about the selected channels */
graph_panel_properties(C, ar, 0, ale);
/* driver settings for active F-Curve (only for 'Drivers' mode) */
- if (sipo->mode == SIPO_MODE_DRIVERS) {
- //graph_panel_drivers(C, ar, 0);
- }
+ if (sipo->mode == SIPO_MODE_DRIVERS)
+ graph_panel_drivers(C, ar, 0, ale);
+
+ /* modifiers */
+ graph_panel_modifiers(C, ar, 0, ale);
+
uiDrawPanels(C, 1); /* 1 = align */
uiMatchPanelsView2d(ar); /* sets v2d->totrct */
diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c
index 04cf54e67bc..1efa257c317 100644
--- a/source/blender/editors/space_graph/graph_draw.c
+++ b/source/blender/editors/space_graph/graph_draw.c
@@ -390,7 +390,7 @@ static void draw_fcurve_samples (SpaceIpo *sipo, ARegion *ar, FCurve *fcu)
/* get verts */
first= fcu->fpt;
- last= (first) ? (first + fcu->totvert) : (NULL);
+ last= (first) ? (first + (fcu->totvert-1)) : (NULL);
/* draw */
if (first && last) {
@@ -401,6 +401,84 @@ static void draw_fcurve_samples (SpaceIpo *sipo, ARegion *ar, FCurve *fcu)
/* Curve ---------------- */
+/* helper func - draw a samples-based F-Curve */
+// TODO: add offset stuff...
+static void draw_fcurve_repeat_samples (FCurve *fcu, View2D *v2d)
+{
+ FPoint *prevfpt= fcu->fpt;
+ FPoint *fpt= prevfpt + 1;
+ float fac, v[2];
+ int b= fcu->totvert-1;
+
+ glBegin(GL_LINE_STRIP);
+
+ /* extrapolate to left? */
+ if ( (fcu->modifiers.first == NULL)/* || ( ((FModifier *)fcu->modifiers.first)->type != FMODIFIER_TYPE_CYCLES) */) {
+ /* left-side of view comes before first keyframe, so need to extend as not cyclic */
+ if (prevfpt->vec[0] > v2d->cur.xmin) {
+ v[0]= v2d->cur.xmin;
+
+ /* y-value depends on the interpolation */
+ if ((fcu->extend==FCURVE_EXTRAPOLATE_CONSTANT) || (fcu->flag & FCURVE_INT_VALUES) || (fcu->totvert==1)) {
+ /* just extend across the first keyframe's value */
+ v[1]= prevfpt->vec[1];
+ }
+ else {
+ /* extrapolate linear dosnt use the handle, use the next points center instead */
+ fac= (prevfpt->vec[0]-fpt->vec[0])/(prevfpt->vec[0]-v[0]);
+ if (fac) fac= 1.0f/fac;
+ v[1]= prevfpt->vec[1]-fac*(prevfpt->vec[1]-fpt->vec[1]);
+ }
+
+ glVertex2fv(v);
+ }
+ }
+
+ /* if only one sample, add it now */
+ if (fcu->totvert == 1)
+ glVertex2fv(prevfpt->vec);
+
+ /* loop over samples, drawing segments */
+ /* draw curve between first and last keyframe (if there are enough to do so) */
+ // XXX this doesn't take into account modifiers, or sample data
+ while (b--) {
+ /* Linear interpolation: just add one point (which should add a new line segment) */
+ glVertex2fv(prevfpt->vec);
+
+ /* get next pointers */
+ prevfpt= fpt;
+ fpt++;
+
+ /* last point? */
+ if (b == 0)
+ glVertex2fv(prevfpt->vec);
+ }
+
+ /* extrapolate to right? (see code for left-extrapolation above too) */
+ if ( (fcu->modifiers.first == NULL)/* || ( ((FModifier *)fcu->modifiers.first)->type != FMODIFIER_TYPE_CYCLES) */) {
+ if (prevfpt->vec[0] < v2d->cur.xmax) {
+ v[0]= v2d->cur.xmax;
+
+ /* y-value depends on the interpolation */
+ if ((fcu->extend==FCURVE_EXTRAPOLATE_CONSTANT) || (fcu->flag & FCURVE_INT_VALUES) || (fcu->totvert==1)) {
+ /* based on last keyframe's value */
+ v[1]= prevfpt->vec[1];
+ }
+ else {
+ /* extrapolate linear dosnt use the handle, use the previous points center instead */
+ fpt = prevfpt-1;
+ fac= (prevfpt->vec[0]-fpt->vec[0])/(prevfpt->vec[0]-v[0]);
+ if (fac) fac= 1.0f/fac;
+ v[1]= prevfpt->vec[1]-fac*(prevfpt->vec[1]-fpt->vec[1]);
+ }
+
+ glVertex2fv(v);
+ }
+ }
+
+ glEnd();
+}
+
/* helper func - draw one repeat of an F-Curve */
static void draw_fcurve_repeat (FCurve *fcu, View2D *v2d, float cycxofs, float cycyofs, float *facp)
{
@@ -726,7 +804,11 @@ void graph_draw_curves (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar)
}
/* draw F-Curve */
- draw_fcurve_repeat(fcu, &ar->v2d, 0, 0, &fac); // XXX this call still needs a lot more work
+ if (fcu->bezt)
+ draw_fcurve_repeat(fcu, &ar->v2d, 0, 0, &fac); // XXX this call still needs a lot more work
+ else if (fcu->fpt)
+ draw_fcurve_repeat_samples(fcu, &ar->v2d);
+ /*else modifiers? */
/* restore settings */
setlinestyle(0);
@@ -783,6 +865,7 @@ void graph_draw_channel_names(bAnimContext *ac, SpaceIpo *sipo, ARegion *ar)
*/
height= (float)((items*ACHANNEL_STEP) + (ACHANNEL_HEIGHT*2));
+#if 0
if (height > (v2d->mask.ymax - v2d->mask.ymin)) {
/* don't use totrect set, as the width stays the same
* (NOTE: this is ok here, the configuration is pretty straightforward)
@@ -791,6 +874,7 @@ void graph_draw_channel_names(bAnimContext *ac, SpaceIpo *sipo, ARegion *ar)
}
/* XXX I would call the below line! (ton) */
+#endif
UI_view2d_totRect_set(v2d, ar->winx, height);
/* loop through channels, and set up drawing depending on their type */
@@ -1013,7 +1097,15 @@ void graph_draw_channel_names(bAnimContext *ac, SpaceIpo *sipo, ARegion *ar)
indent= 0;
special= -1;
- offset= (ale->id) ? 16 : 0;
+ if (ale->id) {
+ /* special exception for materials */
+ if (GS(ale->id->name) == ID_MA)
+ offset= 25;
+ else
+ offset= 14;
+ }
+ else
+ offset= 0;
/* only show expand if there are any channels */
if (agrp->channels.first) {
@@ -1041,21 +1133,17 @@ void graph_draw_channel_names(bAnimContext *ac, SpaceIpo *sipo, ARegion *ar)
group= (fcu->grp) ? 1 : 0;
grp= fcu->grp;
- switch (ale->ownertype) {
- case ANIMTYPE_NONE: /* no owner */
- case ANIMTYPE_FCURVE:
- offset= 0;
- break;
-
- case ANIMTYPE_DSMAT: /* for now, this is special case for materials */
+ if (ale->id) {
+ /* special exception for materials */
+ if (GS(ale->id->name) == ID_MA) {
offset= 21;
indent= 1;
- break;
-
- default:
+ }
+ else
offset= 14;
- break;
}
+ else
+ offset= 0;
/* for now, 'special' (i.e. in front of name) is used to show visibility status */
if (fcu->flag & FCURVE_VISIBLE)
@@ -1141,23 +1229,54 @@ void graph_draw_channel_names(bAnimContext *ac, SpaceIpo *sipo, ARegion *ar)
gl_round_box(GL_POLYGON, x+offset, yminc, (float)ACHANNEL_NAMEWIDTH, ymaxc, 8);
}
else {
- /* most of the time, only F-Curves are going to be drawn here */
- if (ale->type == ANIMTYPE_FCURVE) {
- /* F-Curve channels are colored with whatever color the curve has stored */
- FCurve *fcu= (FCurve *)ale->data;
- glColor3fv(fcu->color);
- }
- else
- UI_ThemeColorShade(TH_HEADER, ((indent==0)?20: (indent==1)?-20: -40));
+ short shadefac= ((indent==0)?20: (indent==1)?-20: -40);
indent += group;
offset += 7 * indent;
+
+ /* draw channel backdrop */
+ UI_ThemeColorShade(TH_HEADER, shadefac);
+
glBegin(GL_QUADS);
glVertex2f(x+offset, yminc);
glVertex2f(x+offset, ymaxc);
glVertex2f((float)ACHANNEL_NAMEWIDTH, ymaxc);
glVertex2f((float)ACHANNEL_NAMEWIDTH, yminc);
glEnd();
+
+ /* most of the time, only F-Curves are going to be drawn here */
+ if (ale->type == ANIMTYPE_FCURVE) {
+ /* F-Curve channels need to have a special 'color code' box drawn, which is colored with whatever
+ * color the curve has stored
+ */
+ FCurve *fcu= (FCurve *)ale->data;
+ glColor3fv(fcu->color);
+
+ // NOTE: only enable the following line for the fading-out gradient
+ //glShadeModel(GL_SMOOTH);
+
+ glBegin(GL_QUADS);
+ /* solid color for the area around the checkbox */
+ glVertex2f(x+offset, yminc);
+ glVertex2f(x+offset, ymaxc);
+ glVertex2f(x+offset+18, ymaxc);
+ glVertex2f(x+offset+18, yminc);
+
+#if 0 // fading out gradient
+ /* fading out gradient for the rest of the box */
+ glVertex2f(x+offset+18, yminc);
+ glVertex2f(x+offset+18, ymaxc);
+
+ UI_ThemeColorShade(TH_HEADER, shadefac); // XXX does this cause any problems on some cards?
+
+ glVertex2f(x+offset+20, ymaxc);
+ glVertex2f(x+offset+20, yminc);
+#endif // fading out gradient
+ glEnd();
+
+ // NOTE: only enable the following line for the fading-out gradient
+ //glShadeModel(GL_FLAT);
+ }
}
/* draw expand/collapse triangle */
diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c
index e252a75532d..932b22c0a6e 100644
--- a/source/blender/editors/space_graph/graph_edit.c
+++ b/source/blender/editors/space_graph/graph_edit.c
@@ -68,6 +68,7 @@
#include "BKE_material.h"
#include "BKE_object.h"
#include "BKE_context.h"
+#include "BKE_report.h"
#include "BKE_utildefines.h"
#include "UI_view2d.h"
@@ -241,246 +242,48 @@ void GRAPHEDIT_OT_view_all (wmOperatorType *ot)
/* ************************************************************************** */
/* GENERAL STUFF */
-#if 0 // XXX stuff to be sanitised for the new anim system
-
-// TODO:
-// - insert key
+// TODO: insertkey
/* ******************** Copy/Paste Keyframes Operator ************************* */
-/* - xxx...
- * - All pasted frames are offset by the same amount. This is calculated as the difference in the times of
- * the current frame and the 'first keyframe' (i.e. the earliest one in all channels).
- * - The earliest frame is calculated per copy operation.
- */
-
-#if 0
-/* globals for copy/paste data (like for other copy/paste buffers) */
-ListBase actcopybuf = {NULL, NULL};
-static float actcopy_firstframe= 999999999.0f;
+/* NOTE: the backend code for this is shared with the dopesheet editor */
-/* This function frees any MEM_calloc'ed copy/paste buffer data */
-// XXX find some header to put this in!
-void free_actcopybuf ()
-{
- FCurve *fcu, *fcn;
-
- /* free_fcurve() frees F-Curve memory too, but we don't need to do remlink first, as we're freeing all
- * channels anyway, and the freeing func only cares about the data it's given
- */
- for (fcu= actcopybuf.first; fcu; fcu= fcn) {
- fcn= fcu->next;
- free_fcurve(fcu);
- }
-
- actcopybuf.first= actcopybuf.last= NULL;
- actcopy_firstframe= 999999999.0f;
-}
-#endif
-
-/* ------------------- */
-
-/* This function adds data to the copy/paste buffer, freeing existing data first
- * Only the selected action channels gets their selected keyframes copied.
- */
static short copy_graph_keys (bAnimContext *ac)
{
-#if 0 // XXX old animation system
ListBase anim_data = {NULL, NULL};
- bAnimListElem *ale;
- int filter;
+ int filter, ok=0;
/* clear buffer first */
- free_actcopybuf();
+ free_anim_copybuf();
/* filter data */
- filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_SEL | ANIMFILTER_IPOKEYS);
+ filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_CURVESONLY);
ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype);
- /* assume that each of these is an ipo-block */
- for (ale= anim_data.first; ale; ale= ale->next) {
- bActionChannel *achan;
- Ipo *ipo= ale->key_data;
- Ipo *ipn;
- IpoCurve *icu, *icn;
- BezTriple *bezt;
- int i;
-
- /* coerce an action-channel out of owner */
- if (ale->ownertype == ANIMTYPE_ACHAN) {
- bActionChannel *achanO= ale->owner;
- achan= MEM_callocN(sizeof(bActionChannel), "ActCopyPasteAchan");
- strcpy(achan->name, achanO->name);
- }
- else if (ale->ownertype == ANIMTYPE_SHAPEKEY) {
- achan= MEM_callocN(sizeof(bActionChannel), "ActCopyPasteAchan");
- strcpy(achan->name, "#ACP_ShapeKey");
- }
- else
- continue;
- BLI_addtail(&actcopybuf, achan);
-
- /* add constraint channel if needed, then add new ipo-block */
- if (ale->type == ANIMTYPE_CONCHAN) {
- bConstraintChannel *conchanO= ale->data;
- bConstraintChannel *conchan;
-
- conchan= MEM_callocN(sizeof(bConstraintChannel), "ActCopyPasteConchan");
- strcpy(conchan->name, conchanO->name);
- BLI_addtail(&achan->constraintChannels, conchan);
-
- conchan->ipo= ipn= MEM_callocN(sizeof(Ipo), "ActCopyPasteIpo");
- }
- else {
- achan->ipo= ipn= MEM_callocN(sizeof(Ipo), "ActCopyPasteIpo");
- }
- ipn->blocktype = ipo->blocktype;
-
- /* now loop through curves, and only copy selected keyframes */
- for (icu= ipo->curve.first; icu; icu= icu->next) {
- /* allocate a new curve */
- icn= MEM_callocN(sizeof(IpoCurve), "ActCopyPasteIcu");
- icn->blocktype = icu->blocktype;
- icn->adrcode = icu->adrcode;
- BLI_addtail(&ipn->curve, icn);
-
- /* find selected BezTriples to add to the buffer (and set first frame) */
- for (i=0, bezt=icu->bezt; i < icu->totvert; i++, bezt++) {
- if (BEZSELECTED(bezt)) {
- /* add to buffer ipo-curve */
- //insert_bezt_icu(icn, bezt); // XXX
-
- /* check if this is the earliest frame encountered so far */
- if (bezt->vec[1][0] < actcopy_firstframe)
- actcopy_firstframe= bezt->vec[1][0];
- }
- }
- }
- }
-
- /* check if anything ended up in the buffer */
- if (ELEM(NULL, actcopybuf.first, actcopybuf.last))
- // error("Nothing copied to buffer");
- return -1;
+ /* copy keyframes */
+ ok= copy_animedit_keys(ac, &anim_data);
- /* free temp memory */
+ /* clean up */
BLI_freelistN(&anim_data);
-#endif // XXX old animation system
-
- /* everything went fine */
- return 0;
+
+ return ok;
}
static short paste_graph_keys (bAnimContext *ac)
-{
-#if 0 // XXX old animation system
+{
ListBase anim_data = {NULL, NULL};
- bAnimListElem *ale;
- int filter;
-
- const Scene *scene= (ac->scene);
- const float offset = (float)(CFRA - actcopy_firstframe);
- char *actname = NULL, *conname = NULL;
- short no_name= 0;
-
- /* check if buffer is empty */
- if (ELEM(NULL, actcopybuf.first, actcopybuf.last)) {
- //error("No data in buffer to paste");
- return -1;
- }
- /* check if single channel in buffer (disregard names if so) */
- if (actcopybuf.first == actcopybuf.last)
- no_name= 1;
+ int filter, ok=0;
/* filter data */
- filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_IPOKEYS);
+ filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY);
ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype);
- /* from selected channels */
- for (ale= anim_data.first; ale; ale= ale->next) {
- Ipo *ipo_src = NULL;
- bActionChannel *achan;
- IpoCurve *ico, *icu;
- BezTriple *bezt;
- int i;
-
- /* find suitable IPO-block from buffer to paste from */
- for (achan= actcopybuf.first; achan; achan= achan->next) {
- /* try to match data */
- if (ale->ownertype == ANIMTYPE_ACHAN) {
- bActionChannel *achant= ale->owner;
-
- /* check if we have a corresponding action channel */
- if ((no_name) || (strcmp(achan->name, achant->name)==0)) {
- actname= achant->name;
-
- /* check if this is a constraint channel */
- if (ale->type == ANIMTYPE_CONCHAN) {
- bConstraintChannel *conchant= ale->data;
- bConstraintChannel *conchan;
-
- for (conchan=achan->constraintChannels.first; conchan; conchan=conchan->next) {
- if (strcmp(conchan->name, conchant->name)==0) {
- conname= conchant->name;
- ipo_src= conchan->ipo;
- break;
- }
- }
- if (ipo_src) break;
- }
- else {
- ipo_src= achan->ipo;
- break;
- }
- }
- }
- else if (ale->ownertype == ANIMTYPE_SHAPEKEY) {
- /* check if this action channel is "#ACP_ShapeKey" */
- if ((no_name) || (strcmp(achan->name, "#ACP_ShapeKey")==0)) {
- actname= NULL;
- ipo_src= achan->ipo;
- break;
- }
- }
- }
-
- /* this shouldn't happen, but it might */
- if (ipo_src == NULL)
- continue;
-
- /* loop over curves, pasting keyframes */
- for (ico= ipo_src->curve.first; ico; ico= ico->next) {
- /* get IPO-curve to paste to (IPO-curve might not exist for destination, so gets created) */
- //icu= verify_ipocurve(ale->id, ico->blocktype, actname, conname, NULL, ico->adrcode, 1);
-
-
- if (icu) {
- /* just start pasting, with the the first keyframe on the current frame, and so on */
- for (i=0, bezt=ico->bezt; i < ico->totvert; i++, bezt++) {
- /* temporarily apply offset to src beztriple while copying */
- bezt->vec[0][0] += offset;
- bezt->vec[1][0] += offset;
- bezt->vec[2][0] += offset;
-
- /* insert the keyframe */
- //insert_bezt_icu(icu, bezt); // XXX
-
- /* un-apply offset from src beztriple after copying */
- bezt->vec[0][0] -= offset;
- bezt->vec[1][0] -= offset;
- bezt->vec[2][0] -= offset;
- }
-
- /* recalculate channel's handles? */
- //calchandles_fcurve(fcu);
- }
- }
- }
+ /* paste keyframes */
+ ok= paste_animedit_keys(ac, &anim_data);
- /* free temp memory */
+ /* clean up */
BLI_freelistN(&anim_data);
-#endif // XXX old animation system
- return 0;
+ return ok;
}
/* ------------------- */
@@ -495,8 +298,8 @@ static int graphkeys_copy_exec(bContext *C, wmOperator *op)
/* copy keyframes */
if (copy_graph_keys(&ac)) {
- // XXX errors - need a way to inform the user
- printf("Action Copy: No keyframes copied to copy-paste buffer\n");
+ BKE_report(op->reports, RPT_ERROR, "No keyframes copied to keyframes copy/paste buffer");
+ return OPERATOR_CANCELLED;
}
/* set notifier tha things have changed */
@@ -531,8 +334,8 @@ static int graphkeys_paste_exec(bContext *C, wmOperator *op)
/* paste keyframes */
if (paste_graph_keys(&ac)) {
- // XXX errors - need a way to inform the user
- printf("Action Paste: Nothing to paste, as Copy-Paste buffer was empty.\n");
+ BKE_report(op->reports, RPT_ERROR, "No keyframes to paste");
+ return OPERATOR_CANCELLED;
}
/* validate keyframes after editing */
@@ -558,8 +361,6 @@ void GRAPHEDIT_OT_keyframes_paste (wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
-#endif // XXX code to be sanitied for new system
-
/* ******************** Duplicate Keyframes Operator ************************* */
static void duplicate_graph_keys (bAnimContext *ac)
@@ -753,7 +554,90 @@ void GRAPHEDIT_OT_keyframes_clean (wmOperatorType *ot)
RNA_def_float(ot->srna, "threshold", 0.001f, 0.0f, FLT_MAX, "Threshold", "", 0.0f, 1000.0f);
}
+/* ******************** Bake F-Curve Operator *********************** */
+/* This operator bakes the data of the selected F-Curves to F-Points */
+
+/* Bake each F-Curve into a set of samples */
+static void bake_graph_curves (bAnimContext *ac, int start, int end)
+{
+ ListBase anim_data = {NULL, NULL};
+ bAnimListElem *ale;
+ int filter;
+
+ /* filter data */
+ filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY);
+ ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype);
+
+ /* loop through filtered data and add keys between selected keyframes on every frame */
+ for (ale= anim_data.first; ale; ale= ale->next) {
+ FCurve *fcu= (FCurve *)ale->key_data;
+ ChannelDriver *driver= fcu->driver;
+
+ /* disable driver so that it don't muck up the sampling process */
+ fcu->driver= NULL;
+
+ /* create samples */
+ fcurve_store_samples(fcu, NULL, start, end, fcurve_samplingcb_evalcurve);
+
+ /* restore driver */
+ fcu->driver= driver;
+ }
+
+ /* admin and redraws */
+ BLI_freelistN(&anim_data);
+}
+
+/* ------------------- */
+
+static int graphkeys_bake_exec(bContext *C, wmOperator *op)
+{
+ bAnimContext ac;
+ Scene *scene= NULL;
+ int start, end;
+
+ /* get editor data */
+ if (ANIM_animdata_get_context(C, &ac) == 0)
+ return OPERATOR_CANCELLED;
+
+ /* for now, init start/end from preview-range extents */
+ // TODO: add properties for this
+ scene= ac.scene;
+ start= PSFRA;
+ end= PEFRA;
+
+ /* bake keyframes */
+ bake_graph_curves(&ac, start, end);
+
+ /* validate keyframes after editing */
+ ANIM_editkeyframes_refresh(&ac);
+
+ /* set notifier tha things have changed */
+ ANIM_animdata_send_notifiers(C, &ac, ANIM_CHANGED_KEYFRAMES_VALUES);
+
+ return OPERATOR_FINISHED;
+}
+
+void GRAPHEDIT_OT_keyframes_bake (wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Bake Curve";
+ ot->idname= "GRAPHEDIT_OT_keyframes_bake";
+
+ /* api callbacks */
+ ot->invoke= WM_operator_confirm; // FIXME...
+ ot->exec= graphkeys_bake_exec;
+ ot->poll= ED_operator_areaactive;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ // todo: add props for start/end frames
+}
+
/* ******************** Sample Keyframes Operator *********************** */
+/* This operator 'bakes' the values of the curve into new keyframes between pairs
+ * of selected keyframes. It is useful for creating keyframes for tweaking overlap.
+ */
// XXX some of the common parts (with DopeSheet) should be unified in animation module...
diff --git a/source/blender/editors/space_graph/graph_header.c b/source/blender/editors/space_graph/graph_header.c
index cbd5372b0e2..e223696c3bf 100644
--- a/source/blender/editors/space_graph/graph_header.c
+++ b/source/blender/editors/space_graph/graph_header.c
@@ -65,6 +65,7 @@
/* button events */
enum {
B_REDR = 0,
+ B_MODECHANGE,
B_GRAPHCOPYKEYS,
B_GRAPHPASTEKEYS,
} eActHeader_ButEvents;
@@ -137,6 +138,10 @@ static uiBlock *graph_viewmenu(bContext *C, ARegion *ar, void *arg_unused)
static void do_graph_buttons(bContext *C, void *arg, int event)
{
switch (event) {
+ case B_MODECHANGE: /* change mode with mode selector */
+ ED_area_tag_refresh(CTX_wm_area(C));
+ /* no break, as we need redraw flush too... */
+
case B_REDR:
ED_area_tag_redraw(CTX_wm_area(C));
break;
@@ -171,7 +176,7 @@ void graph_header_buttons(const bContext *C, ARegion *ar)
uiBlockSetEmboss(block, UI_EMBOSS);
/* mode selector */
- uiDefButS(block, MENU, B_REDR,
+ uiDefButS(block, MENU, B_MODECHANGE,
"Editor Mode %t|F-Curve Editor %x0|Drivers %x1",
xco,yco,110,YIC, &sipo->mode, 0, 1, 0, 0,
"Editing modes for this editor");
diff --git a/source/blender/editors/space_graph/graph_intern.h b/source/blender/editors/space_graph/graph_intern.h
index f37fbdca9b9..6144556378a 100644
--- a/source/blender/editors/space_graph/graph_intern.h
+++ b/source/blender/editors/space_graph/graph_intern.h
@@ -87,6 +87,7 @@ void GRAPHEDIT_OT_keyframes_duplicate(struct wmOperatorType *ot);
void GRAPHEDIT_OT_keyframes_delete(struct wmOperatorType *ot);
void GRAPHEDIT_OT_keyframes_clean(struct wmOperatorType *ot);
void GRAPHEDIT_OT_keyframes_sample(struct wmOperatorType *ot);
+void GRAPHEDIT_OT_keyframes_bake(struct wmOperatorType *ot);
void GRAPHEDIT_OT_keyframes_smooth(struct wmOperatorType *ot);
void GRAPHEDIT_OT_keyframes_handletype(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c
index f9900306c53..80b8dcbf0ff 100644
--- a/source/blender/editors/space_graph/graph_ops.c
+++ b/source/blender/editors/space_graph/graph_ops.c
@@ -116,14 +116,16 @@ void graphedit_operatortypes(void)
WM_operatortype_append(GRAPHEDIT_OT_keyframes_interpolation_type);
WM_operatortype_append(GRAPHEDIT_OT_keyframes_extrapolation_type);
WM_operatortype_append(GRAPHEDIT_OT_keyframes_sample);
+ WM_operatortype_append(GRAPHEDIT_OT_keyframes_bake);
WM_operatortype_append(GRAPHEDIT_OT_keyframes_smooth);
WM_operatortype_append(GRAPHEDIT_OT_keyframes_clean);
WM_operatortype_append(GRAPHEDIT_OT_keyframes_delete);
WM_operatortype_append(GRAPHEDIT_OT_keyframes_duplicate);
-#if 0 // XXX code to be sanitied for new system
+
WM_operatortype_append(GRAPHEDIT_OT_keyframes_copy);
WM_operatortype_append(GRAPHEDIT_OT_keyframes_paste);
-#endif // XXX code to be sanitied for new system
+
+ //TODO: insertkey...
}
/* ************************** registration - keymaps **********************************/
@@ -172,19 +174,22 @@ static void graphedit_keymap_keyframes (wmWindowManager *wm, ListBase *keymap)
/* destructive */
WM_keymap_add_item(keymap, "GRAPHEDIT_OT_keyframes_clean", OKEY, KM_PRESS, 0, 0);
- WM_keymap_add_item(keymap, "GRAPHEDIT_OT_keyframes_sample", OKEY, KM_PRESS, KM_SHIFT, 0);
WM_keymap_add_item(keymap, "GRAPHEDIT_OT_keyframes_smooth", OKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "GRAPHEDIT_OT_keyframes_sample", OKEY, KM_PRESS, KM_SHIFT, 0);
+
+ WM_keymap_add_item(keymap, "GRAPHEDIT_OT_keyframes_bake", CKEY, KM_PRESS, KM_ALT, 0);
WM_keymap_add_item(keymap, "GRAPHEDIT_OT_keyframes_delete", XKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "GRAPHEDIT_OT_keyframes_delete", DELKEY, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "GRAPHEDIT_OT_keyframes_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0);
-#if 0 // XXX code to be sanitied for new system
+ /* insertkey */
+ // TODO..
+
/* copy/paste */
WM_keymap_add_item(keymap, "GRAPHEDIT_OT_keyframes_copy", CKEY, KM_PRESS, KM_CTRL, 0);
WM_keymap_add_item(keymap, "GRAPHEDIT_OT_keyframes_paste", VKEY, KM_PRESS, KM_CTRL, 0);
-#endif // XXX code to be sanitied for new system
/* auto-set range */
WM_keymap_add_item(keymap, "GRAPHEDIT_OT_set_previewrange", PKEY, KM_PRESS, KM_CTRL|KM_ALT, 0);
diff --git a/source/blender/editors/space_graph/graph_select.c b/source/blender/editors/space_graph/graph_select.c
index be2f6dda0e0..e4cb2f64071 100644
--- a/source/blender/editors/space_graph/graph_select.c
+++ b/source/blender/editors/space_graph/graph_select.c
@@ -661,6 +661,7 @@ static void mouse_graph_keys (bAnimContext *ac, int mval[], short selectmode)
FCurve *fcu;
BezTriple *bezt;
short handle;
+ int filter;
/* find the beztriple that we're selecting, and the handle that was clicked on */
handle= findnearest_fcurve_vert(ac, mval, &fcu, &bezt);
@@ -719,16 +720,16 @@ static void mouse_graph_keys (bAnimContext *ac, int mval[], short selectmode)
}
/* select or deselect curve? */
- if (selectmode == SELECT_INVERT) {
+ if (selectmode == SELECT_INVERT)
fcu->flag ^= FCURVE_SELECTED;
+ else if (selectmode == SELECT_ADD)
+ fcu->flag |= FCURVE_SELECTED;
- if (fcu->flag & FCURVE_SELECTED)
- fcu->flag |= FCURVE_ACTIVE;
- else
- fcu->flag &= ~FCURVE_ACTIVE;
+ /* set active F-Curve (NOTE: sync the filter flags with findnearest_fcurve_vert) */
+ if (fcu->flag & FCURVE_SELECTED) {
+ filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY);
+ ANIM_set_active_channel(ac->data, ac->datatype, filter, fcu, ANIMTYPE_FCURVE);
}
- else if (selectmode == SELECT_ADD)
- fcu->flag |= (FCURVE_ACTIVE|FCURVE_SELECTED);
}
/* Option 2) Selects all the keyframes on either side of the current frame (depends on which side the mouse is on) */
@@ -881,7 +882,6 @@ static int graphkeys_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *ev
else {
/* select keyframe under mouse */
mouse_graph_keys(&ac, mval, selectmode); // xxx curves only should become an arg
- // XXX activate transform...
}
/* set notifier tha things have changed */
diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c
index 11922a2b383..a43f8ee3502 100644
--- a/source/blender/editors/space_graph/space_graph.c
+++ b/source/blender/editors/space_graph/space_graph.c
@@ -337,6 +337,8 @@ static void graph_buttons_area_init(wmWindowManager *wm, ARegion *ar)
UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_LIST_UI, ar->winx, ar->winy);
+ keymap= WM_keymap_listbase(wm, "View2D Buttons List", 0, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
keymap= WM_keymap_listbase(wm, "GraphEdit Generic", SPACE_IPO, 0);
WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
}
@@ -567,7 +569,7 @@ void ED_spacetype_ipo(void)
art= MEM_callocN(sizeof(ARegionType), "spacetype graphedit region");
art->regionid = RGN_TYPE_UI;
art->minsizey= 160;
- art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES;
art->listener= NULL; // graph_region_listener;
art->init= graph_buttons_area_init;
art->draw= graph_buttons_area_draw;
diff --git a/source/blender/editors/space_image/image_header.c b/source/blender/editors/space_image/image_header.c
index 8f981b6982b..2b6078b71a8 100644
--- a/source/blender/editors/space_image/image_header.c
+++ b/source/blender/editors/space_image/image_header.c
@@ -686,7 +686,7 @@ static void sima_idpoin_handle(bContext *C, ID *id, int event)
switch(event) {
case UI_ID_BROWSE:
case UI_ID_DELETE:
- ED_space_image_set(C, sima, scene, obedit, sima->image);
+ ED_space_image_set(C, sima, scene, obedit, (Image*)id);
ED_undo_push(C, "Assign Image UV");
break;
case UI_ID_RENAME:
@@ -768,7 +768,7 @@ void image_header_buttons(const bContext *C, ARegion *ar)
/* image select */
pinflag= (show_render)? 0: UI_ID_PIN;
- xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID**)&sima->image, ID_IM, &sima->pin, xco, yco,
+ xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID*)sima->image, ID_IM, &sima->pin, xco, yco,
sima_idpoin_handle, UI_ID_BROWSE|UI_ID_BROWSE_RENDER|UI_ID_RENAME|UI_ID_ADD_NEW|UI_ID_OPEN|UI_ID_DELETE|pinflag);
xco += 8;
diff --git a/source/blender/editors/space_image/image_intern.h b/source/blender/editors/space_image/image_intern.h
index cfd58d13495..20f12fecaf5 100644
--- a/source/blender/editors/space_image/image_intern.h
+++ b/source/blender/editors/space_image/image_intern.h
@@ -39,6 +39,7 @@ struct Image;
struct ImBuf;
struct wmOperatorType;
struct Scene;
+struct bNodeTree;
/* space_image.c */
struct ARegion *image_has_buttons_region(struct ScrArea *sa);
@@ -82,6 +83,7 @@ void IMAGE_OT_record_composite(struct wmOperatorType *ot);
void draw_uvedit_main(struct SpaceImage *sima, struct ARegion *ar, struct Scene *scene, struct Object *obedit);
/* image_panels.c */
+struct ImageUser *ntree_get_active_iuser(struct bNodeTree *ntree);
void image_buttons_area_defbuts(const struct bContext *C, struct ARegion *ar);
void IMAGE_OT_properties(struct wmOperatorType *ot);
diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c
index 0652196842c..8038e6a00ff 100644
--- a/source/blender/editors/space_image/image_ops.c
+++ b/source/blender/editors/space_image/image_ops.c
@@ -621,7 +621,6 @@ static int open_exec(bContext *C, wmOperator *op)
RNA_string_get(op->ptr, "filename", str);
ima= BKE_add_image_file(str, scene->r.cfra);
- MEM_freeN(str);
if(!ima)
return OPERATOR_CANCELLED;
diff --git a/source/blender/editors/space_image/image_panels.c b/source/blender/editors/space_image/image_panels.c
index a9ddc855fdf..c0fe8afd036 100644
--- a/source/blender/editors/space_image/image_panels.c
+++ b/source/blender/editors/space_image/image_panels.c
@@ -29,13 +29,17 @@
#include <string.h>
#include <stdio.h>
+#include "DNA_color_types.h"
#include "DNA_image_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_object_types.h"
+#include "DNA_packedFile_types.h"
+#include "DNA_node_types.h"
#include "DNA_space_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
+#include "DNA_userdef_types.h"
#include "MEM_guardedalloc.h"
@@ -46,10 +50,18 @@
#include "BKE_colortools.h"
#include "BKE_context.h"
+#include "BKE_customdata.h"
#include "BKE_image.h"
+#include "BKE_global.h"
+#include "BKE_library.h"
+#include "BKE_main.h"
+#include "BKE_node.h"
+#include "BKE_packedFile.h"
#include "BKE_screen.h"
#include "BKE_utildefines.h"
+#include "RE_pipeline.h"
+
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
@@ -58,6 +70,7 @@
#include "ED_space_api.h"
#include "ED_screen.h"
#include "ED_uvedit.h"
+#include "ED_util.h"
#include "BIF_gl.h"
#include "BIF_glutil.h"
@@ -73,21 +86,140 @@
#include "image_intern.h"
+#define B_REDR 1
+#define B_IMAGECHANGED 2
+#define B_TRANS_IMAGE 3
+#define B_CURSOR_IMAGE 4
+#define B_NOP 0
+#define B_TWINANIM 5
+#define B_SIMAGETILE 6
+#define B_IDNAME 10
+#define B_FACESEL_PAINT_TEST 11
+#define B_SIMA_RECORD 12
+#define B_SIMA_PLAY 13
+#define B_SIMARANGE 14
+#define B_SIMACURVES 15
+
+#define B_SIMANOTHING 16
+#define B_SIMABRUSHCHANGE 17
+#define B_SIMABRUSHBROWSE 18
+#define B_SIMABRUSHLOCAL 19
+#define B_SIMABRUSHDELETE 20
+#define B_KEEPDATA 21
+#define B_SIMABTEXBROWSE 22
+#define B_SIMABTEXDELETE 23
+#define B_VPCOLSLI 24
+#define B_SIMACLONEBROWSE 25
+#define B_SIMACLONEDELETE 26
+
+/* XXX */
+static int okee() {return 0;}
+static int simaFaceDraw_Check() {return 0;}
+static int simaUVSel_Check() {return 0;}
+static int is_uv_tface_editing_allowed_silent() {return 0;}
+/* XXX */
+
+/* proto */
+static void image_editvertex_buts(const bContext *C, uiBlock *block);
+static void image_editcursor_buts(const bContext *C, View2D *v2d, uiBlock *block);
+
+
+static void do_image_panel_events(bContext *C, void *arg, int event)
+{
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+ ARegion *ar= CTX_wm_region(C);
+
+ switch(event) {
+ case B_REDR:
+ break;
+ case B_SIMACURVES:
+ curvemapping_do_ibuf(sima->cumap, ED_space_image_buffer(sima));
+ break;
+ case B_SIMARANGE:
+ curvemapping_set_black_white(sima->cumap, NULL, NULL);
+ curvemapping_do_ibuf(sima->cumap, ED_space_image_buffer(sima));
+ break;
+ case B_TRANS_IMAGE:
+ image_editvertex_buts(C, NULL);
+ break;
+ case B_CURSOR_IMAGE:
+ image_editcursor_buts(C, &ar->v2d, NULL);
+ break;
+ }
+ /* all events now */
+ WM_event_add_notifier(C, NC_IMAGE, sima->image);
+}
+
+
+
+static void image_info(Image *ima, ImBuf *ibuf, char *str)
+{
+ int ofs= 0;
+
+ str[0]= 0;
+
+ if(ima==NULL) return;
+ if(ibuf==NULL) {
+ sprintf(str, "Can not get an image");
+ return;
+ }
+
+ if(ima->source==IMA_SRC_MOVIE) {
+ ofs= sprintf(str, "Movie ");
+ if(ima->anim)
+ ofs+= sprintf(str+ofs, "%d frs", IMB_anim_get_duration(ima->anim));
+ }
+ else
+ ofs= sprintf(str, "Image ");
+
+ ofs+= sprintf(str+ofs, ": size %d x %d,", ibuf->x, ibuf->y);
+
+ if(ibuf->rect_float) {
+ if(ibuf->channels!=4) {
+ sprintf(str+ofs, "%d float channel(s)", ibuf->channels);
+ }
+ else if(ibuf->depth==32)
+ strcat(str, " RGBA float");
+ else
+ strcat(str, " RGB float");
+ }
+ else {
+ if(ibuf->depth==32)
+ strcat(str, " RGBA byte");
+ else
+ strcat(str, " RGB byte");
+ }
+ if(ibuf->zbuf || ibuf->zbuf_float)
+ strcat(str, " + Z");
+
+}
+
+/* gets active viewer user */
+struct ImageUser *ntree_get_active_iuser(bNodeTree *ntree)
+{
+ bNode *node;
+
+ if(ntree)
+ for(node= ntree->nodes.first; node; node= node->next)
+ if( ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER))
+ if(node->flag & NODE_DO_OUTPUT)
+ return node->storage;
+ return NULL;
+}
-#if 0
/* ************ panel stuff ************* */
/* this function gets the values for cursor and vertex number buttons */
-static void image_transform_but_attr(int *imx, int *imy, int *step, int *digits) /*, float *xcoord, float *ycoord)*/
+static void image_transform_but_attr(SpaceImage *sima, int *imx, int *imy, int *step, int *digits) /*, float *xcoord, float *ycoord)*/
{
- ImBuf *ibuf= imagewindow_get_ibuf(G.sima);
+ ImBuf *ibuf= ED_space_image_buffer(sima);
if(ibuf) {
*imx= ibuf->x;
*imy= ibuf->y;
}
- if (G.sima->flag & SI_COORDFLOATS) {
+ if (sima->flag & SI_COORDFLOATS) {
*step= 1;
*digits= 3;
}
@@ -99,20 +231,25 @@ static void image_transform_but_attr(int *imx, int *imy, int *step, int *digits)
/* is used for both read and write... */
-void image_editvertex_buts(uiBlock *block)
+static void image_editvertex_buts(const bContext *C, uiBlock *block)
{
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+ Object *obedit= CTX_data_edit_object(C);
static float ocent[2];
float cent[2]= {0.0, 0.0};
int imx= 256, imy= 256;
int nactive= 0, step, digits;
- EditMesh *em = G.editMesh;
+ EditMesh *em;
EditFace *efa;
MTFace *tf;
+ if(obedit==NULL || obedit->type!=OB_MESH) return;
+
if( is_uv_tface_editing_allowed_silent()==0 ) return;
- image_transform_but_attr(&imx, &imy, &step, &digits);
+ image_transform_but_attr(sima, &imx, &imy, &step, &digits);
+ em= ((Mesh *)obedit->data)->edit_mesh;
for (efa= em->faces.first; efa; efa= efa->next) {
tf= CustomData_em_get(&em->fdata, efa->data, CD_MTFACE);
if (simaFaceDraw_Check(efa, tf)) {
@@ -144,7 +281,7 @@ void image_editvertex_buts(uiBlock *block)
if (nactive) {
ocent[0]= cent[0]/nactive;
ocent[1]= cent[1]/nactive;
- if (G.sima->flag & SI_COORDFLOATS) {
+ if (sima->flag & SI_COORDFLOATS) {
} else {
ocent[0] *= imx;
ocent[1] *= imy;
@@ -168,7 +305,7 @@ void image_editvertex_buts(uiBlock *block)
cent[0]= cent[0]/nactive;
cent[1]= cent[1]/nactive;
- if (G.sima->flag & SI_COORDFLOATS) {
+ if (sima->flag & SI_COORDFLOATS) {
delta[0]= ocent[0]-cent[0];
delta[1]= ocent[1]-cent[1];
}
@@ -198,28 +335,28 @@ void image_editvertex_buts(uiBlock *block)
}
}
}
-
- allqueue(REDRAWVIEW3D, 0);
- allqueue(REDRAWIMAGE, 0);
+
+ WM_event_add_notifier(C, NC_IMAGE, sima->image);
}
}
/* is used for both read and write... */
-void image_editcursor_buts(uiBlock *block)
+static void image_editcursor_buts(const bContext *C, View2D *v2d, uiBlock *block)
{
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
static float ocent[2];
int imx= 256, imy= 256;
int step, digits;
if( is_uv_tface_editing_allowed_silent()==0 ) return;
- image_transform_but_attr(&imx, &imy, &step, &digits);
+ image_transform_but_attr(sima, &imx, &imy, &step, &digits);
if(block) { // do the buttons
- ocent[0]= G.v2d->cursor[0];
- ocent[1]= G.v2d->cursor[1];
- if (G.sima->flag & SI_COORDFLOATS) {
+ ocent[0]= v2d->cursor[0];
+ ocent[1]= v2d->cursor[1];
+ if (sima->flag & SI_COORDFLOATS) {
} else {
ocent[0] *= imx;
ocent[1] *= imy;
@@ -231,169 +368,285 @@ void image_editcursor_buts(uiBlock *block)
uiBlockEndAlign(block);
}
else { // apply event
- if (G.sima->flag & SI_COORDFLOATS) {
- G.v2d->cursor[0]= ocent[0];
- G.v2d->cursor[1]= ocent[1];
+ if (sima->flag & SI_COORDFLOATS) {
+ v2d->cursor[0]= ocent[0];
+ v2d->cursor[1]= ocent[1];
}
else {
- G.v2d->cursor[0]= ocent[0]/imx;
- G.v2d->cursor[1]= ocent[1]/imy;
+ v2d->cursor[0]= ocent[0]/imx;
+ v2d->cursor[1]= ocent[1]/imy;
}
- allqueue(REDRAWIMAGE, 0);
+ WM_event_add_notifier(C, NC_IMAGE, sima->image);
}
}
-
-void image_info(Image *ima, ImBuf *ibuf, char *str)
+static void image_panel_game_properties(const bContext *C, ARegion *ar)
{
- int ofs= 0;
-
- str[0]= 0;
-
- if(ima==NULL) return;
- if(ibuf==NULL) {
- sprintf(str, "Can not get an image");
- return;
- }
-
- if(ima->source==IMA_SRC_MOVIE) {
- ofs= sprintf(str, "Movie ");
- if(ima->anim)
- ofs+= sprintf(str+ofs, "%d frs", IMB_anim_get_duration(ima->anim));
- }
- else
- ofs= sprintf(str, "Image ");
-
- ofs+= sprintf(str+ofs, ": size %d x %d,", ibuf->x, ibuf->y);
-
- if(ibuf->rect_float) {
- if(ibuf->channels!=4) {
- sprintf(str+ofs, "%d float channel(s)", ibuf->channels);
- }
- else if(ibuf->depth==32)
- strcat(str, " RGBA float");
- else
- strcat(str, " RGB float");
- }
- else {
- if(ibuf->depth==32)
- strcat(str, " RGBA byte");
- else
- strcat(str, " RGB byte");
- }
- if(ibuf->zbuf || ibuf->zbuf_float)
- strcat(str, " + Z");
-
-}
-
-static void image_panel_game_properties(short cntrl) // IMAGE_HANDLER_GAME_PROPERTIES
-{
- ImBuf *ibuf= BKE_image_get_ibuf(G.sima->image, &G.sima->iuser);
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+ ImBuf *ibuf= BKE_image_get_ibuf(sima->image, &sima->iuser);
uiBlock *block;
- block= uiNewBlock(&curarea->uiblocks, "image_panel_game_properties", UI_EMBOSS, UI_HELV, curarea->win);
- uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl);
- uiSetPanelHandler(IMAGE_HANDLER_GAME_PROPERTIES); // for close and esc
- if(uiNewPanel(curarea, block, "Real-time Properties", "Image", 10, 10, 318, 204)==0)
+ block= uiBeginBlock(C, ar, "image_panel_game_properties", UI_EMBOSS, UI_HELV);
+ if(uiNewPanel(C, ar, block, "Real-time Properties", "Image", 10, 10, 318, 204)==0)
return;
+ uiBlockSetHandleFunc(block, do_image_panel_events, NULL);
if (ibuf) {
char str[128];
- image_info(G.sima->image, ibuf, str);
+ image_info(sima->image, ibuf, str);
uiDefBut(block, LABEL, B_NOP, str, 10,180,300,19, 0, 0, 0, 0, 0, "");
uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, IMA_TWINANIM, B_TWINANIM, "Anim", 10,150,140,19, &G.sima->image->tpageflag, 0, 0, 0, 0, "Toggles use of animated texture");
- uiDefButS(block, NUM, B_TWINANIM, "Start:", 10,130,140,19, &G.sima->image->twsta, 0.0, 128.0, 0, 0, "Displays the start frame of an animated texture");
- uiDefButS(block, NUM, B_TWINANIM, "End:", 10,110,140,19, &G.sima->image->twend, 0.0, 128.0, 0, 0, "Displays the end frame of an animated texture");
- uiDefButS(block, NUM, B_NOP, "Speed", 10,90,140,19, &G.sima->image->animspeed, 1.0, 100.0, 0, 0, "Displays Speed of the animation in frames per second");
+ uiDefButBitS(block, TOG, IMA_TWINANIM, B_TWINANIM, "Anim", 10,150,140,19, &sima->image->tpageflag, 0, 0, 0, 0, "Toggles use of animated texture");
+ uiDefButS(block, NUM, B_TWINANIM, "Start:", 10,130,140,19, &sima->image->twsta, 0.0, 128.0, 0, 0, "Displays the start frame of an animated texture");
+ uiDefButS(block, NUM, B_TWINANIM, "End:", 10,110,140,19, &sima->image->twend, 0.0, 128.0, 0, 0, "Displays the end frame of an animated texture");
+ uiDefButS(block, NUM, B_NOP, "Speed", 10,90,140,19, &sima->image->animspeed, 1.0, 100.0, 0, 0, "Displays Speed of the animation in frames per second");
uiBlockEndAlign(block);
uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, IMA_TILES, B_SIMAGETILE, "Tiles", 160,150,140,19, &G.sima->image->tpageflag, 0, 0, 0, 0, "Toggles use of tilemode for faces (Shift LMB to pick the tile for selected faces)");
- uiDefButS(block, NUM, B_SIMA_REDR_IMA_3D, "X:", 160,130,70,19, &G.sima->image->xrep, 1.0, 16.0, 0, 0, "Sets the degree of repetition in the X direction");
- uiDefButS(block, NUM, B_SIMA_REDR_IMA_3D, "Y:", 230,130,70,19, &G.sima->image->yrep, 1.0, 16.0, 0, 0, "Sets the degree of repetition in the Y direction");
+ uiDefButBitS(block, TOG, IMA_TILES, B_SIMAGETILE, "Tiles", 160,150,140,19, &sima->image->tpageflag, 0, 0, 0, 0, "Toggles use of tilemode for faces (Shift LMB to pick the tile for selected faces)");
+ uiDefButS(block, NUM, B_REDR, "X:", 160,130,70,19, &sima->image->xrep, 1.0, 16.0, 0, 0, "Sets the degree of repetition in the X direction");
+ uiDefButS(block, NUM, B_REDR, "Y:", 230,130,70,19, &sima->image->yrep, 1.0, 16.0, 0, 0, "Sets the degree of repetition in the Y direction");
uiBlockBeginAlign(block);
uiBlockBeginAlign(block);
- uiDefButBitS(block, TOG, IMA_CLAMP_U, B_SIMA3DVIEWDRAW, "ClampX", 160,100,70,19, &G.sima->image->tpageflag, 0, 0, 0, 0, "Disable texture repeating horizontaly");
- uiDefButBitS(block, TOG, IMA_CLAMP_V, B_SIMA3DVIEWDRAW, "ClampY", 230,100,70,19, &G.sima->image->tpageflag, 0, 0, 0, 0, "Disable texture repeating vertically");
+ uiDefButBitS(block, TOG, IMA_CLAMP_U, B_REDR, "ClampX", 160,100,70,19, &sima->image->tpageflag, 0, 0, 0, 0, "Disable texture repeating horizontaly");
+ uiDefButBitS(block, TOG, IMA_CLAMP_V, B_REDR, "ClampY", 230,100,70,19, &sima->image->tpageflag, 0, 0, 0, 0, "Disable texture repeating vertically");
uiBlockEndAlign(block);
}
}
-static void image_panel_view_properties(short cntrl) // IMAGE_HANDLER_VIEW_PROPERTIES
+static void image_panel_view_properties(const bContext *C, ARegion *ar)
{
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+ Object *obedit= CTX_data_edit_object(C);
uiBlock *block;
- block= uiNewBlock(&curarea->uiblocks, "image_view_properties", UI_EMBOSS, UI_HELV, curarea->win);
- uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl);
- uiSetPanelHandler(IMAGE_HANDLER_VIEW_PROPERTIES); // for close and esc
- if(uiNewPanel(curarea, block, "View Properties", "Image", 10, 10, 318, 204)==0)
+ block= uiBeginBlock(C, ar, "image_view_properties", UI_EMBOSS, UI_HELV);
+ if(uiNewPanel(C, ar, block, "View Properties", "Image", 10, 30, 318, 204)==0)
return;
+ uiBlockSetHandleFunc(block, do_image_panel_events, NULL);
+ uiDefButBitI(block, TOG, SI_DRAW_TILE, B_REDR, "Repeat Image", 10,160,140,19, &sima->flag, 0, 0, 0, 0, "Repeat/Tile the image display");
+ uiDefButBitI(block, TOG, SI_COORDFLOATS, B_REDR, "Normalized Coords", 165,160,145,19, &sima->flag, 0, 0, 0, 0, "Display coords from 0.0 to 1.0 rather then in pixels");
- uiDefButBitI(block, TOG, SI_DRAW_TILE, B_REDR, "Repeat Image", 10,160,140,19, &G.sima->flag, 0, 0, 0, 0, "Repeat/Tile the image display");
- uiDefButBitI(block, TOG, SI_COORDFLOATS, B_REDR, "Normalized Coords", 165,160,145,19, &G.sima->flag, 0, 0, 0, 0, "Display coords from 0.0 to 1.0 rather then in pixels");
-
-
- if (G.sima->image) {
+ if (sima->image) {
uiDefBut(block, LABEL, B_NOP, "Image Display:", 10,140,140,19, 0, 0, 0, 0, 0, "");
uiBlockBeginAlign(block);
- uiDefButF(block, NUM, B_REDR, "AspX:", 10,120,140,19, &G.sima->image->aspx, 0.1, 5000.0, 100, 0, "X Display Aspect for this image, does not affect renderingm 0 disables.");
- uiDefButF(block, NUM, B_REDR, "AspY:", 10,100,140,19, &G.sima->image->aspy, 0.1, 5000.0, 100, 0, "X Display Aspect for this image, does not affect rendering 0 disables.");
+ uiDefButF(block, NUM, B_REDR, "AspX:", 10,120,140,19, &sima->image->aspx, 0.1, 5000.0, 100, 0, "X Display Aspect for this image, does not affect renderingm 0 disables.");
+ uiDefButF(block, NUM, B_REDR, "AspY:", 10,100,140,19, &sima->image->aspy, 0.1, 5000.0, 100, 0, "X Display Aspect for this image, does not affect rendering 0 disables.");
uiBlockEndAlign(block);
}
-
- if (EM_texFaceCheck()) {
- uiDefBut(block, LABEL, B_NOP, "Draw Type:", 10, 80,120,19, 0, 0, 0, 0, 0, "");
- uiBlockBeginAlign(block);
- uiDefButC(block, ROW, B_REDR, "Outline", 10,60,58,19, &G.sima->dt_uv, 0.0, SI_UVDT_OUTLINE, 0, 0, "Outline Wire UV drawtype");
- uiDefButC(block, ROW, B_REDR, "Dash", 68, 60,58,19, &G.sima->dt_uv, 0.0, SI_UVDT_DASH, 0, 0, "Dashed Wire UV drawtype");
- uiDefButC(block, ROW, B_REDR, "Black", 126, 60,58,19, &G.sima->dt_uv, 0.0, SI_UVDT_BLACK, 0, 0, "Black Wire UV drawtype");
- uiDefButC(block, ROW, B_REDR, "White", 184,60,58,19, &G.sima->dt_uv, 0.0, SI_UVDT_WHITE, 0, 0, "White Wire UV drawtype");
+ if (obedit && obedit->type==OB_MESH) {
+ Mesh *me= obedit->data;
+ EditMesh *em= me->edit_mesh;
- uiBlockEndAlign(block);
- uiDefButBitI(block, TOG, SI_SMOOTH_UV, B_REDR, "Smooth", 250,60,60,19, &G.sima->flag, 0, 0, 0, 0, "Display smooth lines in the UV view");
+ if(EM_texFaceCheck(em)) {
+ uiDefBut(block, LABEL, B_NOP, "Draw Type:", 10, 80,120,19, 0, 0, 0, 0, 0, "");
+ uiBlockBeginAlign(block);
+ uiDefButC(block, ROW, B_REDR, "Outline", 10,60,58,19, &sima->dt_uv, 0.0, SI_UVDT_OUTLINE, 0, 0, "Outline Wire UV drawtype");
+ uiDefButC(block, ROW, B_REDR, "Dash", 68, 60,58,19, &sima->dt_uv, 0.0, SI_UVDT_DASH, 0, 0, "Dashed Wire UV drawtype");
+ uiDefButC(block, ROW, B_REDR, "Black", 126, 60,58,19, &sima->dt_uv, 0.0, SI_UVDT_BLACK, 0, 0, "Black Wire UV drawtype");
+ uiDefButC(block, ROW, B_REDR, "White", 184,60,58,19, &sima->dt_uv, 0.0, SI_UVDT_WHITE, 0, 0, "White Wire UV drawtype");
+
+ uiBlockEndAlign(block);
+ uiDefButBitI(block, TOG, SI_SMOOTH_UV, B_REDR, "Smooth", 250,60,60,19, &sima->flag, 0, 0, 0, 0, "Display smooth lines in the UV view");
+
+
+ uiDefButBitI(block, TOG, ME_DRAWFACES, B_REDR, "Faces", 10,30,60,19, &me->drawflag, 0, 0, 0, 0, "Displays all faces as shades in the 3d view and UV editor");
+ uiDefButBitI(block, TOG, ME_DRAWEDGES, B_REDR, "Edges", 70, 30,60,19, &me->drawflag, 0, 0, 0, 0, "Displays selected edges using hilights in the 3d view and UV editor");
+
+ uiDefButBitI(block, TOG, SI_DRAWSHADOW, B_REDR, "Final Shadow", 130, 30,110,19, &sima->flag, 0, 0, 0, 0, "Draw the final result from the objects modifiers");
+
+ uiDefButBitI(block, TOG, SI_DRAW_STRETCH, B_REDR, "UV Stretch", 10,0,100,19, &sima->flag, 0, 0, 0, 0, "Difference between UV's and the 3D coords (blue for low distortion, red is high)");
+ if (sima->flag & SI_DRAW_STRETCH) {
+ uiBlockBeginAlign(block);
+ uiDefButC(block, ROW, B_REDR, "Area", 120,0,60,19, &sima->dt_uvstretch, 0.0, SI_UVDT_STRETCH_AREA, 0, 0, "Area distortion between UV's and 3D coords");
+ uiDefButC(block, ROW, B_REDR, "Angle", 180,0,60,19, &sima->dt_uvstretch, 0.0, SI_UVDT_STRETCH_ANGLE, 0, 0, "Angle distortion between UV's and 3D coords");
+ uiBlockEndAlign(block);
+ }
+ }
+
+ }
+ image_editcursor_buts(C, &ar->v2d, block);
+}
+
+void brush_buttons(const bContext *C, uiBlock *block, short fromsima,
+ int evt_nop, int evt_change,
+ int evt_browse, int evt_local,
+ int evt_del, int evt_keepdata,
+ int evt_texbrowse, int evt_texdel)
+{
+// SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+ ToolSettings *settings= CTX_data_tool_settings(C);
+ Brush *brush= settings->imapaint.brush;
+ ID *id;
+ int yco, xco, butw, but_idx;
+// short *menupoin = &(sima->menunr); // XXX : &(G.buts->menunr);
+ short do_project = settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE ? 0:1;
+
+ yco= 160;
+
+ butw = fromsima ? 80 : 106;
+
+ uiBlockBeginAlign(block);
+ but_idx = 0;
+ uiDefButS(block, ROW, evt_change, "Draw", butw*(but_idx++),yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_DRAW, 0, 0, "Draw brush");
+ if (fromsima || do_project==0)
+ uiDefButS(block, ROW, evt_change, "Soften", butw*(but_idx++), yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SOFTEN, 0, 0, "Soften brush");
+ uiDefButS(block, ROW, evt_change, "Smear", butw*(but_idx++), yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_SMEAR, 0, 0, "Smear brush");
+ if (fromsima || do_project)
+ uiDefButS(block, ROW, evt_change, "Clone", butw*(but_idx++), yco,butw,19, &settings->imapaint.tool, 7.0, PAINT_TOOL_CLONE, 0, 0, "Clone brush, use RMB to drag source image");
+
+ uiBlockEndAlign(block);
+ yco -= 30;
+
+ uiBlockSetCol(block, TH_BUT_SETTING2);
+ id= (ID*)settings->imapaint.brush;
+ xco= 200; // std_libbuttons(block, 0, yco, 0, NULL, evt_browse, ID_BR, 0, id, NULL, menupoin, 0, evt_local, evt_del, 0, evt_keepdata);
+ uiBlockSetCol(block, TH_AUTO);
+
+ if(brush && !brush->id.lib) {
+ butw= 320-(xco+10);
- uiDefButBitI(block, TOG, G_DRAWFACES, B_REDR, "Faces", 10,30,60,19, &G.f, 0, 0, 0, 0, "Displays all faces as shades in the 3d view and UV editor");
- uiDefButBitI(block, TOG, G_DRAWEDGES, B_REDR, "Edges", 70, 30,60,19, &G.f, 0, 0, 0, 0, "Displays selected edges using hilights in the 3d view and UV editor");
+ uiDefButS(block, MENU, evt_nop, "Mix %x0|Add %x1|Subtract %x2|Multiply %x3|Lighten %x4|Darken %x5|Erase Alpha %x6|Add Alpha %x7", xco+10,yco,butw,19, &brush->blend, 0, 0, 0, 0, "Blending method for applying brushes");
- uiDefButBitI(block, TOG, SI_DRAWSHADOW, B_REDR, "Final Shadow", 130, 30,110,19, &G.sima->flag, 0, 0, 0, 0, "Draw the final result from the objects modifiers");
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG|BIT, BRUSH_AIRBRUSH, evt_change, "Airbrush", xco+10,yco-25,butw/2,19, &brush->flag, 0, 0, 0, 0, "Keep applying paint effect while holding mouse (spray)");
+ uiDefButF(block, NUM, evt_nop, "", xco+10 + butw/2,yco-25,butw/2,19, &brush->rate, 0.01, 1.0, 0, 0, "Number of paints per second for Airbrush");
+ uiBlockEndAlign(block);
- uiDefButBitI(block, TOG, SI_DRAW_STRETCH, B_REDR, "UV Stretch", 10,0,100,19, &G.sima->flag, 0, 0, 0, 0, "Difference between UV's and the 3D coords (blue for low distortion, red is high)");
- if (G.sima->flag & SI_DRAW_STRETCH) {
+ if (fromsima) {
+ uiDefButBitS(block, TOG|BIT, BRUSH_TORUS, evt_change, "Wrap", xco+10,yco-45,butw,19, &brush->flag, 0, 0, 0, 0, "Enables torus wrapping");
+ yco -= 25;
+ }
+ else {
+ yco -= 25;
uiBlockBeginAlign(block);
- uiDefButC(block, ROW, B_REDR, "Area", 120,0,60,19, &G.sima->dt_uvstretch, 0.0, SI_UVDT_STRETCH_AREA, 0, 0, "Area distortion between UV's and 3D coords");
- uiDefButC(block, ROW, B_REDR, "Angle", 180,0,60,19, &G.sima->dt_uvstretch, 0.0, SI_UVDT_STRETCH_ANGLE, 0, 0, "Angle distortion between UV's and 3D coords");
+ uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_DISABLE, B_REDR, "Project Paint", xco+10,yco-25,butw,19, &settings->imapaint.flag, 0, 0, 0, 0, "Use projection painting for improved consistency in the brush strokes");
+
+ if ((settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)==0) {
+ /* Projection Painting */
+
+ uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_XRAY, B_NOP, "Occlude", xco+10,yco-45,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Only paint onto the faces directly under the brush (slower)");
+ uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_BACKFACE, B_NOP, "Cull", xco+10+butw/2,yco-45,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Ignore faces pointing away from the view (faster)");
+
+ uiDefButBitS(block, TOGN|BIT, IMAGEPAINT_PROJECT_FLAT, B_NOP, "Normal", xco+10,yco-65,butw/2,19, &settings->imapaint.flag, 0, 0, 0, 0, "Paint most on faces pointing towards the view");
+ uiDefButS(block, NUM, B_NOP, "", xco+10 +(butw/2),yco-65,butw/2,19, &settings->imapaint.normal_angle, 10.0, 90.0, 0, 0, "Paint most on faces pointing towards the view acording to this angle");
+
+ uiDefButS(block, NUM, B_NOP, "Bleed: ", xco+10,yco-85,butw,19, &settings->imapaint.seam_bleed, 0.0, 8.0, 0, 0, "Extend paint beyond the faces UVs to reduce seams (in pixels, slower)");
+ uiBlockEndAlign(block);
+
+ uiBlockBeginAlign(block);
+ uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_MASK, B_NOP, "Stencil Layer", xco+10,yco-110,butw-30,19, &settings->imapaint.flag, 0, 0, 0, 0, "Set the mask layer from the UV layer buttons");
+ uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_MASK_INV, B_NOP, "Inv", xco+10 + butw-30,yco-110,30,19, &settings->imapaint.flag, 0, 0, 0, 0, "Invert the mask");
+ uiBlockEndAlign(block);
+
+ }
uiBlockEndAlign(block);
}
+ uiBlockBeginAlign(block);
+ uiDefButF(block, COL, B_VPCOLSLI, "", 0,yco,200,19, brush->rgb, 0, 0, 0, 0, "");
+ uiDefButF(block, NUMSLI, evt_nop, "Opacity ", 0,yco-20,180,19, &brush->alpha, 0.0, 1.0, 0, 0, "The amount of pressure on the brush");
+ uiDefButBitS(block, TOG|BIT, BRUSH_ALPHA_PRESSURE, evt_nop, "P", 180,yco-20,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
+ uiDefButI(block, NUMSLI, evt_nop, "Size ", 0,yco-40,180,19, &brush->size, 1, 200, 0, 0, "The size of the brush");
+ uiDefButBitS(block, TOG|BIT, BRUSH_SIZE_PRESSURE, evt_nop, "P", 180,yco-40,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
+ uiDefButF(block, NUMSLI, evt_nop, "Falloff ", 0,yco-60,180,19, &brush->innerradius, 0.0, 1.0, 0, 0, "The fall off radius of the brush");
+ uiDefButBitS(block, TOG|BIT, BRUSH_RAD_PRESSURE, evt_nop, "P", 180,yco-60,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
+ uiDefButF(block, NUMSLI, evt_nop, "Spacing ",0,yco-80,180,19, &brush->spacing, 1.0, 100.0, 0, 0, "Repeating paint on %% of brush diameter");
+ uiDefButBitS(block, TOG|BIT, BRUSH_SPACING_PRESSURE, evt_nop, "P", 180,yco-80,20,19, &brush->flag, 0, 0, 0, 0, "Enables pressure sensitivity for tablets");
+ uiBlockEndAlign(block);
+
+ yco -= 110;
+
+ if(fromsima && settings->imapaint.tool == PAINT_TOOL_CLONE) {
+ id= (ID*)brush->clone.image;
+ uiBlockSetCol(block, TH_BUT_SETTING2);
+ xco= 200; // std_libbuttons(block, 0, yco, 0, NULL, B_SIMACLONEBROWSE, ID_IM, 0, id, 0, menupoin, 0, 0, B_SIMACLONEDELETE, 0, 0);
+ uiBlockSetCol(block, TH_AUTO);
+ if(id) {
+ butw= 320-(xco+5);
+ uiDefButF(block, NUMSLI, evt_change, "B ",xco+5,yco,butw,19, &brush->clone.alpha , 0.0, 1.0, 0, 0, "Opacity of clone image display");
+ }
+ }
+ else {
+ if (
+ (fromsima==0) && /* 3D View */
+ (settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)==0 && /* Projection Painting */
+ (settings->imapaint.tool == PAINT_TOOL_CLONE)
+ ) {
+ butw = 130;
+ uiDefButBitS(block, TOG|BIT, IMAGEPAINT_PROJECT_LAYER_CLONE, B_REDR, "Clone Layer", 0,yco,butw,20, &settings->imapaint.flag, 0, 0, 0, 0, "Use another UV layer as clone source, otherwise use 3D the cursor as the source");
+ }
+ else {
+ MTex *mtex= brush->mtex[brush->texact];
+
+ uiBlockSetCol(block, TH_BUT_SETTING2);
+ id= (mtex)? (ID*)mtex->tex: NULL;
+ xco= 200; // std_libbuttons(block, 0, yco, 0, NULL, evt_texbrowse, ID_TE, 0, id, NULL, menupoin, 0, 0, evt_texdel, 0, 0);
+ /*uiDefButBitS(block, TOG|BIT, BRUSH_FIXED_TEX, evt_change, "Fixed", xco+5,yco,butw,19, &brush->flag, 0, 0, 0, 0, "Keep texture origin in fixed position");*/
+ uiBlockSetCol(block, TH_AUTO);
+ }
+ }
}
- image_editcursor_buts(block);
+
+#if 0
+ uiDefButBitS(block, TOG|BIT, IMAGEPAINT_DRAW_TOOL_DRAWING, B_SIMABRUSHCHANGE, "TD", 0,1,50,19, &settings->imapaint.flag.flag, 0, 0, 0, 0, "Enables brush shape while drawing");
+ uiDefButBitS(block, TOG|BIT, IMAGEPAINT_DRAW_TOOL, B_SIMABRUSHCHANGE, "TP", 50,1,50,19, &settings->imapaint.flag.flag, 0, 0, 0, 0, "Enables brush shape while not drawing");
+#endif
}
-static void image_panel_paint(short cntrl) // IMAGE_HANDLER_PAINT
+static void image_panel_paintcolor(const bContext *C, ARegion *ar)
{
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+ ToolSettings *settings= CTX_data_tool_settings(C);
+ Brush *brush= settings->imapaint.brush;
uiBlock *block;
- if ((G.sima->image && (G.sima->flag & SI_DRAWTOOL))==0) {
+ static float hsv[3], old[3]; // used as temp mem for picker
+ static char hexcol[128];
+
+ block= uiBeginBlock(C, ar, "image_panel_paintcolor", UI_EMBOSS, UI_HELV);
+ uiBlockSetHandleFunc(block, do_image_panel_events, NULL);
+ if(uiNewPanel(C, ar, block, "Paint Color", "Image", 10, 22, 318, 204)==0)
+ return;
+
+ if ( (brush && sima->image && (sima->flag & SI_DRAWTOOL))==0) {
+ uiNewPanelHeight(block, 0);
return;
}
+ uiNewPanelHeight(block, 204);
- block= uiNewBlock(&curarea->uiblocks, "image_panel_paint", UI_EMBOSS, UI_HELV, curarea->win);
- uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl);
- uiSetPanelHandler(IMAGE_HANDLER_PAINT); // for close and esc
- if(uiNewPanel(curarea, block, "Image Paint", "Image", 10, 230, 318, 204)==0)
+ uiBlockPickerButtons(block, brush->rgb, hsv, old, hexcol, 'f', B_REDR);
+}
+
+
+
+static void image_panel_paint(const bContext *C, ARegion *ar)
+{
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+ uiBlock *block;
+
+ block= uiBeginBlock(C, ar, "image_panel_paint", UI_EMBOSS, UI_HELV);
+ uiBlockSetHandleFunc(block, do_image_panel_events, NULL);
+ if(uiNewPanel(C, ar, block, "Image Paint", "Image", 10, 20, 318, 204)==0)
return;
- brush_buttons(block, 1, B_SIMANOTHING, B_SIMABRUSHCHANGE, B_SIMABRUSHBROWSE, B_SIMABRUSHLOCAL, B_SIMABRUSHDELETE, B_KEEPDATA, B_SIMABTEXBROWSE, B_SIMABTEXDELETE);
+ if ((sima->image && (sima->flag & SI_DRAWTOOL))==0) {
+ uiNewPanelHeight(block, 0);
+ return;
+ }
+ uiNewPanelHeight(block, 204);
+
+ brush_buttons(C, block, 1, B_SIMANOTHING, B_SIMABRUSHCHANGE, B_SIMABRUSHBROWSE, B_SIMABRUSHLOCAL, B_SIMABRUSHDELETE, B_KEEPDATA, B_SIMABTEXBROWSE, B_SIMABTEXDELETE);
}
-static void image_panel_curves_reset(void *cumap_v, void *ibuf_v)
+static void image_panel_curves_reset(bContext *C, void *cumap_v, void *ibuf_v)
{
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
CurveMapping *cumap = cumap_v;
int a;
@@ -407,52 +660,54 @@ static void image_panel_curves_reset(void *cumap_v, void *ibuf_v)
curvemapping_changed(cumap, 0);
curvemapping_do_ibuf(cumap, ibuf_v);
- allqueue(REDRAWIMAGE, 0);
+ WM_event_add_notifier(C, NC_IMAGE, sima->image);
}
-static void image_panel_curves(short cntrl) // IMAGE_HANDLER_CURVES
+static void image_panel_curves(const bContext *C, ARegion *ar)
{
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
ImBuf *ibuf;
uiBlock *block;
uiBut *bt;
/* and we check for spare */
- ibuf= imagewindow_get_ibuf(G.sima);
+ ibuf= ED_space_image_buffer(sima);
- block= uiNewBlock(&curarea->uiblocks, "image_panel_curves", UI_EMBOSS, UI_HELV, curarea->win);
- uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl);
- uiSetPanelHandler(IMAGE_HANDLER_CURVES); // for close and esc
- if(uiNewPanel(curarea, block, "Curves", "Image", 10, 450, 318, 204)==0)
+ block= uiBeginBlock(C, ar, "image_panel_curves", UI_EMBOSS, UI_HELV);
+ if(uiNewPanel(C, ar, block, "Curves", "Image", 10, 40, 318, 204)==0)
return;
+ uiBlockSetHandleFunc(block, do_image_panel_events, NULL);
if (ibuf) {
rctf rect;
- if(G.sima->cumap==NULL)
- G.sima->cumap= curvemapping_add(4, 0.0f, 0.0f, 1.0f, 1.0f);
+ if(sima->cumap==NULL)
+ sima->cumap= curvemapping_add(4, 0.0f, 0.0f, 1.0f, 1.0f);
rect.xmin= 110; rect.xmax= 310;
rect.ymin= 10; rect.ymax= 200;
- curvemap_buttons(block, G.sima->cumap, 'c', B_SIMACURVES, B_REDR, &rect);
+ curvemap_buttons(block, sima->cumap, 'c', B_SIMACURVES, B_REDR, &rect);
/* curvemap min/max only works for RGBA */
if(ibuf->channels==4) {
bt=uiDefBut(block, BUT, B_SIMARANGE, "Reset", 10, 160, 90, 19, NULL, 0.0f, 0.0f, 0, 0, "Reset Black/White point and curves");
- uiButSetFunc(bt, image_panel_curves_reset, G.sima->cumap, ibuf);
+ uiButSetFunc(bt, image_panel_curves_reset, sima->cumap, ibuf);
uiBlockBeginAlign(block);
- uiDefButF(block, NUM, B_SIMARANGE, "Min R:", 10, 120, 90, 19, G.sima->cumap->black, -1000.0f, 1000.0f, 10, 2, "Black level");
- uiDefButF(block, NUM, B_SIMARANGE, "Min G:", 10, 100, 90, 19, G.sima->cumap->black+1, -1000.0f, 1000.0f, 10, 2, "Black level");
- uiDefButF(block, NUM, B_SIMARANGE, "Min B:", 10, 80, 90, 19, G.sima->cumap->black+2, -1000.0f, 1000.0f, 10, 2, "Black level");
+ uiDefButF(block, NUM, B_SIMARANGE, "Min R:", 10, 120, 90, 19, sima->cumap->black, -1000.0f, 1000.0f, 10, 2, "Black level");
+ uiDefButF(block, NUM, B_SIMARANGE, "Min G:", 10, 100, 90, 19, sima->cumap->black+1, -1000.0f, 1000.0f, 10, 2, "Black level");
+ uiDefButF(block, NUM, B_SIMARANGE, "Min B:", 10, 80, 90, 19, sima->cumap->black+2, -1000.0f, 1000.0f, 10, 2, "Black level");
uiBlockBeginAlign(block);
- uiDefButF(block, NUM, B_SIMARANGE, "Max R:", 10, 50, 90, 19, G.sima->cumap->white, -1000.0f, 1000.0f, 10, 2, "White level");
- uiDefButF(block, NUM, B_SIMARANGE, "Max G:", 10, 30, 90, 19, G.sima->cumap->white+1, -1000.0f, 1000.0f, 10, 2, "White level");
- uiDefButF(block, NUM, B_SIMARANGE, "Max B:", 10, 10, 90, 19, G.sima->cumap->white+2, -1000.0f, 1000.0f, 10, 2, "White level");
+ uiDefButF(block, NUM, B_SIMARANGE, "Max R:", 10, 50, 90, 19, sima->cumap->white, -1000.0f, 1000.0f, 10, 2, "White level");
+ uiDefButF(block, NUM, B_SIMARANGE, "Max G:", 10, 30, 90, 19, sima->cumap->white+1, -1000.0f, 1000.0f, 10, 2, "White level");
+ uiDefButF(block, NUM, B_SIMARANGE, "Max B:", 10, 10, 90, 19, sima->cumap->white+2, -1000.0f, 1000.0f, 10, 2, "White level");
}
}
}
+
+#if 0
/* 0: disable preview
otherwise refresh preview
*/
@@ -460,7 +715,6 @@ void image_preview_event(int event)
{
int exec= 0;
-
if(event==0) {
G.scene->r.scemode &= ~R_COMP_CROP;
exec= 1;
@@ -493,7 +747,7 @@ void image_preview_event(int event)
scrarea_do_windraw(curarea);
waitcursor(0);
- allqueue(REDRAWNODE, 1);
+ WM_event_add_notifier(C, NC_IMAGE, ima_v);
}
}
@@ -501,6 +755,7 @@ void image_preview_event(int event)
/* nothing drawn here, we use it to store values */
static void preview_cb(struct ScrArea *sa, struct uiBlock *block)
{
+ SpaceImage *sima= sa->spacedata.first;
rctf dispf;
rcti *disprect= &G.scene->r.disprect;
int winx= (G.scene->r.size*G.scene->r.xsch)/100;
@@ -520,13 +775,13 @@ static void preview_cb(struct ScrArea *sa, struct uiBlock *block)
/* correction for gla draw */
BLI_translate_rcti(disprect, -curarea->winrct.xmin, -curarea->winrct.ymin);
- calc_image_view(G.sima, 'p');
+ calc_image_view(sima, 'p');
// printf("winrct %d %d %d %d\n", disprect->xmin, disprect->ymin,disprect->xmax, disprect->ymax);
/* map to image space coordinates */
mval[0]= disprect->xmin; mval[1]= disprect->ymin;
- areamouseco_to_ipoco(G.v2d, mval, &dispf.xmin, &dispf.ymin);
+ areamouseco_to_ipoco(v2d, mval, &dispf.xmin, &dispf.ymin);
mval[0]= disprect->xmax; mval[1]= disprect->ymax;
- areamouseco_to_ipoco(G.v2d, mval, &dispf.xmax, &dispf.ymax);
+ areamouseco_to_ipoco(v2d, mval, &dispf.xmax, &dispf.ymax);
/* map to render coordinates */
disprect->xmin= dispf.xmin;
@@ -561,6 +816,7 @@ static int is_preview_allowed(ScrArea *cur)
return 1;
}
+
static void image_panel_preview(ScrArea *sa, short cntrl) // IMAGE_HANDLER_PREVIEW
{
uiBlock *block;
@@ -573,13 +829,13 @@ static void image_panel_preview(ScrArea *sa, short cntrl) // IMAGE_HANDLER_PREVI
return;
}
- block= uiNewBlock(&sa->uiblocks, "image_panel_preview", UI_EMBOSS, UI_HELV, sa->win);
+ block= uiBeginBlock(C, ar, "image_panel_preview", UI_EMBOSS, UI_HELV);
uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | UI_PNL_SCALE | cntrl);
uiSetPanelHandler(IMAGE_HANDLER_PREVIEW); // for close and esc
ofsx= -150+(sa->winx/2)/sima->blockscale;
ofsy= -100+(sa->winy/2)/sima->blockscale;
- if(uiNewPanel(sa, block, "Preview", "Image", ofsx, ofsy, 300, 200)==0) return;
+ if(uiNewPanel(C, ar, block, "Preview", "Image", ofsx, ofsy, 300, 200)==0) return;
uiBlockSetDrawExtraFunc(block, preview_cb);
@@ -592,10 +848,10 @@ static void image_panel_gpencil(short cntrl) // IMAGE_HANDLER_GREASEPENCIL
sima= curarea->spacedata.first;
- block= uiNewBlock(&curarea->uiblocks, "image_panel_gpencil", UI_EMBOSS, UI_HELV, curarea->win);
+ block= uiBeginBlock(C, ar, "image_panel_gpencil", UI_EMBOSS, UI_HELV);
uiPanelControl(UI_PNL_SOLID | UI_PNL_CLOSE | cntrl);
uiSetPanelHandler(IMAGE_HANDLER_GREASEPENCIL); // for close and esc
- if (uiNewPanel(curarea, block, "Grease Pencil", "SpaceImage", 100, 30, 318, 204)==0) return;
+ if (uiNewPanel(C, ar, block, "Grease Pencil", "SpaceImage", 100, 30, 318, 204)==0) return;
/* allocate memory for gpd if drawing enabled (this must be done first or else we crash) */
if (sima->flag & SI_DISPGP) {
@@ -623,57 +879,539 @@ static void image_panel_gpencil(short cntrl) // IMAGE_HANDLER_GREASEPENCIL
uiDefBut(block, LABEL, 1, " ", 160, 180, 150, 20, NULL, 0.0, 0.0, 0, 0, "");
}
}
+#endif
+
+
+/* ********************* callbacks for standard image buttons *************** */
-static void image_blockhandlers(ScrArea *sa)
+/* called from fileselect or button */
+static void load_image_cb(bContext *C, char *str, void *ima_pp_v, void *iuser_v)
{
- SpaceImage *sima= sa->spacedata.first;
- short a;
+ Image **ima_pp= (Image **)ima_pp_v;
+ Image *ima= NULL;
+
+ ima= BKE_add_image_file(str, 0);
+ if(ima) {
+ if(*ima_pp) {
+ (*ima_pp)->id.us--;
+ }
+ *ima_pp= ima;
+
+ BKE_image_signal(ima, iuser_v, IMA_SIGNAL_RELOAD);
+ WM_event_add_notifier(C, NC_IMAGE, ima);
+
+ /* button event gets lost when it goes via filewindow */
+// if(G.buts && G.buts->lockpoin) {
+// Tex *tex= G.buts->lockpoin;
+// if(GS(tex->id.name)==ID_TE) {
+// BIF_preview_changed(ID_TE);
+// allqueue(REDRAWBUTSSHADING, 0);
+// allqueue(REDRAWVIEW3D, 0);
+// allqueue(REDRAWOOPS, 0);
+// }
+// }
+ }
+
+ ED_undo_push(C, "Load image");
+}
- /* warning; blocks need to be freed each time, handlers dont remove */
- uiFreeBlocksWin(&sa->uiblocks, sa->win);
+static char *layer_menu(RenderResult *rr, short *curlay)
+{
+ RenderLayer *rl;
+ int len= 64 + 32*BLI_countlist(&rr->layers);
+ short a, nr= 0;
+ char *str= MEM_callocN(len, "menu layers");
- for(a=0; a<SPACE_MAXHANDLER; a+=2) {
- switch(sima->blockhandler[a]) {
- case IMAGE_HANDLER_PROPERTIES:
- image_panel_properties(sima->blockhandler[a+1]);
- break;
- case IMAGE_HANDLER_GAME_PROPERTIES:
- image_panel_game_properties(sima->blockhandler[a+1]);
- break;
- case IMAGE_HANDLER_VIEW_PROPERTIES:
- image_panel_view_properties(sima->blockhandler[a+1]);
- break;
- case IMAGE_HANDLER_PAINT:
- image_panel_paint(sima->blockhandler[a+1]);
- break;
- case IMAGE_HANDLER_CURVES:
- image_panel_curves(sima->blockhandler[a+1]);
- break;
- case IMAGE_HANDLER_PREVIEW:
- image_panel_preview(sa, sima->blockhandler[a+1]);
- break;
- case IMAGE_HANDLER_GREASEPENCIL:
- image_panel_gpencil(sima->blockhandler[a+1]);
- break;
+ strcpy(str, "Layer %t");
+ a= strlen(str);
+
+ /* compo result */
+ if(rr->rectf) {
+ a+= sprintf(str+a, "|Composite %%x0");
+ nr= 1;
+ }
+ for(rl= rr->layers.first; rl; rl= rl->next, nr++) {
+ a+= sprintf(str+a, "|%s %%x%d", rl->name, nr);
+ }
+
+ /* no curlay clip here, on render (redraws) the amount of layers can be 1 fir single-layer render */
+
+ return str;
+}
+
+/* rl==NULL means composite result */
+static char *pass_menu(RenderLayer *rl, short *curpass)
+{
+ RenderPass *rpass;
+ int len= 64 + 32*(rl?BLI_countlist(&rl->passes):1);
+ short a, nr= 0;
+ char *str= MEM_callocN(len, "menu layers");
+
+ strcpy(str, "Pass %t");
+ a= strlen(str);
+
+ /* rendered results don't have a Combined pass */
+ if(rl==NULL || rl->rectf) {
+ a+= sprintf(str+a, "|Combined %%x0");
+ nr= 1;
+ }
+
+ if(rl)
+ for(rpass= rl->passes.first; rpass; rpass= rpass->next, nr++)
+ a+= sprintf(str+a, "|%s %%x%d", rpass->name, nr);
+
+ if(*curpass >= nr)
+ *curpass= 0;
+
+ return str;
+}
+
+static void set_frames_cb(bContext *C, void *ima_v, void *iuser_v)
+{
+ Scene *scene= CTX_data_scene(C);
+ Image *ima= ima_v;
+ ImageUser *iuser= iuser_v;
+
+ if(ima->anim) {
+ iuser->frames = IMB_anim_get_duration(ima->anim);
+ BKE_image_user_calc_imanr(iuser, scene->r.cfra, 0);
+ }
+}
+
+static void image_src_change_cb(bContext *C, void *ima_v, void *iuser_v)
+{
+ BKE_image_signal(ima_v, iuser_v, IMA_SIGNAL_SRC_CHANGE);
+}
+
+/* buttons have 2 arg callbacks, filewindow has 3 args... so thats why the wrapper below */
+static void image_browse_cb1(bContext *C, void *ima_pp_v, void *iuser_v)
+{
+ Image **ima_pp= (Image **)ima_pp_v;
+ ImageUser *iuser= iuser_v;
+
+ if(ima_pp) {
+ Image *ima= *ima_pp;
+
+ if(iuser->menunr== -2) {
+ // XXX activate_databrowse_args(&ima->id, ID_IM, 0, &iuser->menunr, image_browse_cb1, ima_pp, iuser);
+ }
+ else if (iuser->menunr>0) {
+ Image *newima= (Image*) BLI_findlink(&CTX_data_main(C)->image, iuser->menunr-1);
+
+ if (newima && newima!=ima) {
+ *ima_pp= newima;
+ id_us_plus(&newima->id);
+ if(ima) ima->id.us--;
+
+ BKE_image_signal(newima, iuser, IMA_SIGNAL_USER_NEW_IMAGE);
+
+ ED_undo_push(C, "Browse image");
+ }
}
- /* clear action value for event */
- sima->blockhandler[a+1]= 0;
}
- uiDrawBlocksPanels(sa, 0);
}
-#endif
+
+static void image_browse_cb(bContext *C, void *ima_pp_v, void *iuser_v)
+{
+ image_browse_cb1(C, ima_pp_v, iuser_v);
+}
+
+static void image_reload_cb(bContext *C, void *ima_v, void *iuser_v)
+{
+ if(ima_v) {
+ BKE_image_signal(ima_v, iuser_v, IMA_SIGNAL_RELOAD);
+ }
+}
+
+static void image_field_test(bContext *C, void *ima_v, void *iuser_v)
+{
+ Image *ima= ima_v;
+
+ if(ima) {
+ ImBuf *ibuf= BKE_image_get_ibuf(ima, iuser_v);
+ if(ibuf) {
+ short nr= 0;
+ if( !(ima->flag & IMA_FIELDS) && (ibuf->flags & IB_fields) ) nr= 1;
+ if( (ima->flag & IMA_FIELDS) && !(ibuf->flags & IB_fields) ) nr= 1;
+ if(nr) {
+ BKE_image_signal(ima, iuser_v, IMA_SIGNAL_FREE);
+ }
+ }
+ }
+}
+
+static void image_unlink_cb(bContext *C, void *ima_pp_v, void *unused)
+{
+ Image **ima_pp= (Image **)ima_pp_v;
+
+ if(ima_pp && *ima_pp) {
+ Image *ima= *ima_pp;
+ /* (for time being, texturefaces are no users, conflict in design...) */
+ if(ima->id.us>1)
+ ima->id.us--;
+ *ima_pp= NULL;
+ }
+}
+
+static void image_load_fs_cb(bContext *C, void *ima_pp_v, void *iuser_v)
+{
+ ScrArea *sa= CTX_wm_area(C);
+// Image **ima_pp= (Image **)ima_pp_v;
+
+ if(sa->spacetype==SPACE_IMAGE)
+ WM_operator_name_call(C, "IMAGE_OT_open", WM_OP_INVOKE_REGION_WIN, NULL);
+ else
+ printf("not supported yet\n");
+}
+
+/* 5 layer button callbacks... */
+static void image_multi_cb(bContext *C, void *rr_v, void *iuser_v)
+{
+ BKE_image_multilayer_index(rr_v, iuser_v);
+}
+static void image_multi_inclay_cb(bContext *C, void *rr_v, void *iuser_v)
+{
+ RenderResult *rr= rr_v;
+ ImageUser *iuser= iuser_v;
+ int tot= BLI_countlist(&rr->layers) + (rr->rectf?1:0); /* fake compo result layer */
+ if(iuser->layer<tot-1)
+ iuser->layer++;
+ BKE_image_multilayer_index(rr, iuser);
+}
+static void image_multi_declay_cb(bContext *C, void *rr_v, void *iuser_v)
+{
+ ImageUser *iuser= iuser_v;
+ if(iuser->layer>0)
+ iuser->layer--;
+ BKE_image_multilayer_index(rr_v, iuser);
+}
+static void image_multi_incpass_cb(bContext *C, void *rr_v, void *iuser_v)
+{
+ RenderResult *rr= rr_v;
+ ImageUser *iuser= iuser_v;
+ RenderLayer *rl= BLI_findlink(&rr->layers, iuser->layer);
+ if(rl) {
+ int tot= BLI_countlist(&rl->passes) + (rl->rectf?1:0); /* builtin render result has no combined pass in list */
+ if(iuser->pass<tot-1) {
+ iuser->pass++;
+ BKE_image_multilayer_index(rr, iuser);
+ }
+ }
+}
+static void image_multi_decpass_cb(bContext *C, void *rr_v, void *iuser_v)
+{
+ ImageUser *iuser= iuser_v;
+ if(iuser->pass>0) {
+ iuser->pass--;
+ BKE_image_multilayer_index(rr_v, iuser);
+ }
+}
+
+static void image_pack_cb(bContext *C, void *ima_v, void *iuser_v)
+{
+ if(ima_v) {
+ Image *ima= ima_v;
+ if(ima->source!=IMA_SRC_SEQUENCE && ima->source!=IMA_SRC_MOVIE) {
+ if (ima->packedfile) {
+ if (G.fileflags & G_AUTOPACK) {
+ if (okee("Disable AutoPack ?")) {
+ G.fileflags &= ~G_AUTOPACK;
+ }
+ }
+
+ if ((G.fileflags & G_AUTOPACK) == 0) {
+ unpackImage(ima, PF_ASK);
+ ED_undo_push(C, "Unpack image");
+ }
+ }
+ else {
+ ImBuf *ibuf= BKE_image_get_ibuf(ima, iuser_v);
+ if (ibuf && (ibuf->userflags & IB_BITMAPDIRTY)) {
+ // XXX error("Can't pack painted image. Save image or use Repack as PNG.");
+ } else {
+ ima->packedfile = newPackedFile(ima->name);
+ ED_undo_push(C, "Pack image");
+ }
+ }
+ }
+ }
+}
+
+static void image_load_cb(bContext *C, void *ima_pp_v, void *iuser_v)
+{
+ if(ima_pp_v) {
+ Image *ima= *((Image **)ima_pp_v);
+ ImBuf *ibuf= BKE_image_get_ibuf(ima, iuser_v);
+ char str[FILE_MAX];
+
+ /* name in ima has been changed by button! */
+ BLI_strncpy(str, ima->name, FILE_MAX);
+ if(ibuf) BLI_strncpy(ima->name, ibuf->name, FILE_MAX);
+
+ load_image_cb(C, str, ima_pp_v, iuser_v);
+ }
+}
+
+static void image_freecache_cb(bContext *C, void *ima_v, void *unused)
+{
+ Scene *scene= CTX_data_scene(C);
+ BKE_image_free_anim_ibufs(ima_v, scene->r.cfra);
+ WM_event_add_notifier(C, NC_IMAGE, ima_v);
+}
+
+static void image_generated_change_cb(bContext *C, void *ima_v, void *iuser_v)
+{
+ BKE_image_signal(ima_v, iuser_v, IMA_SIGNAL_FREE);
+}
+
+static void image_user_change(bContext *C, void *iuser_v, void *unused)
+{
+ Scene *scene= CTX_data_scene(C);
+ BKE_image_user_calc_imanr(iuser_v, scene->r.cfra, 0);
+}
+
+static void uiblock_layer_pass_buttons(uiBlock *block, RenderResult *rr, ImageUser *iuser, int event, int x, int y, int w)
+{
+ uiBut *but;
+ RenderLayer *rl= NULL;
+ int wmenu1, wmenu2;
+ char *strp;
+
+ /* layer menu is 1/3 larger than pass */
+ wmenu1= (3*w)/5;
+ wmenu2= (2*w)/5;
+
+ /* menu buts */
+ strp= layer_menu(rr, &iuser->layer);
+ but= uiDefButS(block, MENU, event, strp, x, y, wmenu1, 20, &iuser->layer, 0,0,0,0, "Select Layer");
+ uiButSetFunc(but, image_multi_cb, rr, iuser);
+ MEM_freeN(strp);
+
+ rl= BLI_findlink(&rr->layers, iuser->layer - (rr->rectf?1:0)); /* fake compo layer, return NULL is meant to be */
+ strp= pass_menu(rl, &iuser->pass);
+ but= uiDefButS(block, MENU, event, strp, x+wmenu1, y, wmenu2, 20, &iuser->pass, 0,0,0,0, "Select Pass");
+ uiButSetFunc(but, image_multi_cb, rr, iuser);
+ MEM_freeN(strp);
+}
+
+static void uiblock_layer_pass_arrow_buttons(uiBlock *block, RenderResult *rr, ImageUser *iuser, int imagechanged)
+{
+ uiBut *but;
+
+ if(rr==NULL || iuser==NULL)
+ return;
+ if(rr->layers.first==NULL) {
+ uiDefBut(block, LABEL, 0, "No Layers in Render Result,", 10, 107, 300, 20, NULL, 1, 0, 0, 0, "");
+ return;
+ }
+
+ uiBlockBeginAlign(block);
+
+ /* decrease, increase arrows */
+ but= uiDefIconBut(block, BUT, imagechanged, ICON_TRIA_LEFT, 10,107,17,20, NULL, 0, 0, 0, 0, "Previous Layer");
+ uiButSetFunc(but, image_multi_declay_cb, rr, iuser);
+ but= uiDefIconBut(block, BUT, imagechanged, ICON_TRIA_RIGHT, 27,107,18,20, NULL, 0, 0, 0, 0, "Next Layer");
+ uiButSetFunc(but, image_multi_inclay_cb, rr, iuser);
+
+ uiblock_layer_pass_buttons(block, rr, iuser, imagechanged, 45, 107, 230);
+
+ /* decrease, increase arrows */
+ but= uiDefIconBut(block, BUT, imagechanged, ICON_TRIA_LEFT, 275,107,17,20, NULL, 0, 0, 0, 0, "Previous Pass");
+ uiButSetFunc(but, image_multi_decpass_cb, rr, iuser);
+ but= uiDefIconBut(block, BUT, imagechanged, ICON_TRIA_RIGHT, 292,107,18,20, NULL, 0, 0, 0, 0, "Next Pass");
+ uiButSetFunc(but, image_multi_incpass_cb, rr, iuser);
+
+ uiBlockEndAlign(block);
+
+}
+
+// XXX HACK!
+static int packdummy=0;
+
+/* The general Image panel with the loadsa callbacks! */
+void ED_image_uiblock_panel(const bContext *C, uiBlock *block, Image **ima_pp, ImageUser *iuser,
+ short redraw, short imagechanged)
+{
+ Scene *scene= CTX_data_scene(C);
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
+ Image *ima= *ima_pp;
+ uiBut *but;
+ char str[128], *strp;
+
+ /* different stuff when we show viewer */
+ if(ima && ima->source==IMA_SRC_VIEWER) {
+ ImBuf *ibuf= BKE_image_get_ibuf(ima, iuser);
+
+ image_info(ima, ibuf, str);
+ uiDefBut(block, LABEL, 0, ima->id.name+2, 10, 180, 300, 20, NULL, 1, 0, 0, 0, "");
+ uiDefBut(block, LABEL, 0, str, 10, 160, 300, 20, NULL, 1, 0, 0, 0, "");
+
+ if(ima->type==IMA_TYPE_COMPOSITE) {
+ iuser= ntree_get_active_iuser(scene->nodetree);
+ if(iuser) {
+ uiBlockBeginAlign(block);
+ uiDefIconTextBut(block, BUT, B_SIMA_RECORD, ICON_REC, "Record", 10,120,100,20, 0, 0, 0, 0, 0, "");
+ uiDefIconTextBut(block, BUT, B_SIMA_PLAY, ICON_PLAY, "Play", 110,120,100,20, 0, 0, 0, 0, 0, "");
+ but= uiDefBut(block, BUT, B_NOP, "Free Cache", 210,120,100,20, 0, 0, 0, 0, 0, "");
+ uiButSetFunc(but, image_freecache_cb, ima, NULL);
+
+ if(iuser->frames)
+ sprintf(str, "(%d) Frames:", iuser->framenr);
+ else strcpy(str, "Frames:");
+ uiBlockBeginAlign(block);
+ uiDefButI(block, NUM, imagechanged, str, 10, 90,150, 20, &iuser->frames, 0.0, MAXFRAMEF, 0, 0, "Sets the number of images of a movie to use");
+ uiDefButI(block, NUM, imagechanged, "StartFr:", 160,90,150,20, &iuser->sfra, 1.0, MAXFRAMEF, 0, 0, "Sets the global starting frame of the movie");
+ }
+ }
+ else if(ima->type==IMA_TYPE_R_RESULT) {
+ /* browse layer/passes */
+ uiblock_layer_pass_arrow_buttons(block, RE_GetResult(RE_GetRender(scene->id.name)), iuser, imagechanged);
+ }
+ return;
+ }
+
+ /* the main ima source types */
+ if(ima) {
+// XXX uiSetButLock(ima->id.lib!=NULL, ERROR_LIBDATA_MESSAGE);
+ uiBlockBeginAlign(block);
+ uiBlockSetFunc(block, image_src_change_cb, ima, iuser);
+ uiDefButS(block, ROW, imagechanged, "Still", 10, 180, 60, 20, &ima->source, 0.0, IMA_SRC_FILE, 0, 0, "Single Image file");
+ uiDefButS(block, ROW, imagechanged, "Movie", 70, 180, 60, 20, &ima->source, 0.0, IMA_SRC_MOVIE, 0, 0, "Movie file");
+ uiDefButS(block, ROW, imagechanged, "Sequence", 130, 180, 90, 20, &ima->source, 0.0, IMA_SRC_SEQUENCE, 0, 0, "Multiple Image files, as a sequence");
+ uiDefButS(block, ROW, imagechanged, "Generated", 220, 180, 90, 20, &ima->source, 0.0, IMA_SRC_GENERATED, 0, 0, "Generated Image");
+ uiBlockSetFunc(block, NULL, NULL, NULL);
+ }
+ else
+ uiDefBut(block, LABEL, 0, " ", 10, 180, 300, 20, 0, 0, 0, 0, 0, ""); /* for align in panel */
+
+ /* Browse */
+ IMAnames_to_pupstring(&strp, NULL, NULL, &(CTX_data_main(C)->image), NULL, &iuser->menunr);
+
+ uiBlockBeginAlign(block);
+ but= uiDefButS(block, MENU, imagechanged, strp, 10,155,23,20, &iuser->menunr, 0, 0, 0, 0, "Selects an existing Image or Movie");
+ uiButSetFunc(but, image_browse_cb, ima_pp, iuser);
+
+ MEM_freeN(strp);
+
+ /* name + options, or only load */
+ if(ima) {
+ int drawpack= (ima->source!=IMA_SRC_SEQUENCE && ima->source!=IMA_SRC_MOVIE && ima->ok);
+
+ but= uiDefBut(block, TEX, B_IDNAME, "IM:", 33, 155, 177, 20, ima->id.name+2, 0.0, 21.0, 0, 0, "Current Image Datablock name.");
+ uiButSetFunc(but, test_idbutton_cb, ima->id.name, NULL);
+ but= uiDefBut(block, BUT, imagechanged, "Reload", 210, 155, 60, 20, NULL, 0, 0, 0, 0, "Reloads Image or Movie");
+ uiButSetFunc(but, image_reload_cb, ima, iuser);
+
+ but= uiDefIconBut(block, BUT, imagechanged, ICON_X, 270,155,20,20, 0, 0, 0, 0, 0, "Unlink Image block");
+ uiButSetFunc(but, image_unlink_cb, ima_pp, NULL);
+ sprintf(str, "%d", ima->id.us);
+ uiDefBut(block, BUT, B_NOP, str, 290,155,20,20, 0, 0, 0, 0, 0, "Only displays number of users of Image block");
+
+ but= uiDefIconBut(block, BUT, imagechanged, ICON_FILESEL, 10, 135, 23, 20, 0, 0, 0, 0, 0, "Open Fileselect to load new Image");
+ uiButSetFunc(but, image_load_fs_cb, ima_pp, iuser);
+ but= uiDefBut(block, TEX, imagechanged, "", 33,135,257+(drawpack?0:20),20, ima->name, 0.0, 239.0, 0, 0, "Image/Movie file name, change to load new");
+ uiButSetFunc(but, image_load_cb, ima_pp, iuser);
+
+ if(drawpack) {
+ if (ima->packedfile) packdummy = 1;
+ else packdummy = 0;
+ but= uiDefIconButBitI(block, TOG, 1, redraw, ICON_PACKAGE, 290,135,20,20, &packdummy, 0, 0, 0, 0, "Toggles Packed status of this Image");
+ uiButSetFunc(but, image_pack_cb, ima, iuser);
+ }
+
+ }
+ else {
+ but= uiDefBut(block, BUT, imagechanged, "Load", 33, 155, 100,20, NULL, 0, 0, 0, 0, "Load new Image of Movie");
+ uiButSetFunc(but, image_load_fs_cb, ima_pp, iuser);
+ }
+ uiBlockEndAlign(block);
+
+ if(ima) {
+ ImBuf *ibuf= BKE_image_get_ibuf(ima, iuser);
+
+ /* check for re-render, only buttons */
+ if(imagechanged==B_IMAGECHANGED) {
+ if(iuser->flag & IMA_ANIM_REFRESHED) {
+ iuser->flag &= ~IMA_ANIM_REFRESHED;
+ WM_event_add_notifier(C, NC_IMAGE, ima);
+ }
+ }
+
+ /* multilayer? */
+ if(ima->type==IMA_TYPE_MULTILAYER && ima->rr) {
+ uiblock_layer_pass_arrow_buttons(block, ima->rr, iuser, imagechanged);
+ }
+ else {
+ image_info(ima, ibuf, str);
+ uiDefBut(block, LABEL, 0, str, 10, 112, 300, 20, NULL, 1, 0, 0, 0, "");
+ }
+
+ /* exception, let's do because we only use this panel 3 times in blender... but not real good code! */
+ if( (FACESEL_PAINT_TEST) && sima && &sima->iuser==iuser)
+ return;
+ /* left side default per-image options, right half the additional options */
+
+ /* fields */
+ uiBlockBeginAlign(block);
+ but= uiDefButBitS(block, TOG, IMA_FIELDS, imagechanged, "Fields", 10, 70, 65, 20, &ima->flag, 0, 0, 0, 0, "Click to enable use of fields in Image");
+ uiButSetFunc(but, image_field_test, ima, iuser);
+ uiDefButBitS(block, TOG, IMA_STD_FIELD, B_NOP, "Odd", 75, 70, 45, 20, &ima->flag, 0, 0, 0, 0, "Standard Field Toggle");
+
+ uiBlockSetFunc(block, image_reload_cb, ima, iuser);
+ uiDefButBitS(block, TOG, IMA_ANTIALI, B_NOP, "Anti", 10, 50, 45, 20, &ima->flag, 0, 0, 0, 0, "Toggles Image anti-aliasing, only works with solid colors");
+ uiDefButBitS(block, TOG, IMA_DO_PREMUL, imagechanged, "Premul", 55, 50, 65, 20, &ima->flag, 0, 0, 0, 0, "Toggles premultiplying alpha");
+ uiBlockEndAlign(block);
+
+ if( ELEM(ima->source, IMA_SRC_MOVIE, IMA_SRC_SEQUENCE)) {
+ sprintf(str, "(%d) Frames:", iuser->framenr);
+
+ uiBlockBeginAlign(block);
+ uiBlockSetFunc(block, image_user_change, iuser, NULL);
+ uiDefButBitS(block, TOG, IMA_ANIM_ALWAYS, B_NOP, "Auto Refresh", 120, 70, 190, 20, &iuser->flag, 0, 0, 0, 0, "Always refresh Image on frame changes");
+
+ if(ima->anim) {
+ uiDefButI(block, NUM, imagechanged, str, 120, 50,170, 20, &iuser->frames, 0.0, MAXFRAMEF, 0, 0, "Sets the number of images of a movie to use");
+ but= uiDefBut(block, BUT, redraw, "<", 290, 50, 20, 20, 0, 0, 0, 0, 0, "Copies number of frames in movie file to Frames: button");
+ uiButSetFunc(but, set_frames_cb, ima, iuser);
+ }
+ else
+ uiDefButI(block, NUM, imagechanged, str, 120, 50,190, 20, &iuser->frames, 0.0, MAXFRAMEF, 0, 0, "Sets the number of images of a movie to use");
+
+ uiDefButI(block, NUM, imagechanged, "Offs:", 120,30,100,20, &iuser->offset, -MAXFRAMEF, MAXFRAMEF, 0, 0, "Offsets the number of the frame to use in the animation");
+ uiDefButS(block, NUM, imagechanged, "Fie/Ima:", 220,30,90,20, &iuser->fie_ima, 1.0, 200.0, 0, 0, "The number of fields per rendered frame (2 fields is 1 image)");
+
+ uiDefButI(block, NUM, imagechanged, "StartFr:", 120,10,100,20, &iuser->sfra, 1.0, MAXFRAMEF, 0, 0, "Sets the global starting frame of the movie");
+ uiDefButS(block, TOG, imagechanged, "Cyclic", 220,10,90,20, &iuser->cycl, 0.0, 1.0, 0, 0, "Cycle the images in the movie");
+
+ uiBlockSetFunc(block, NULL, iuser, NULL);
+ }
+ else if(ima->source==IMA_SRC_GENERATED) {
+
+ uiBlockBeginAlign(block);
+ uiBlockSetFunc(block, image_generated_change_cb, ima, iuser);
+ uiDefButS(block, NUM, imagechanged, "SizeX:", 120,70,100,20, &ima->gen_x, 1.0, 5000.0, 0, 0, "Image size x");
+ uiDefButS(block, NUM, imagechanged, "SizeY:", 220,70,90,20, &ima->gen_y, 1.0, 5000.0, 0, 0, "Image size y");
+ uiDefButS(block, TOG, imagechanged, "UV Test grid",120,50,190,20, &ima->gen_type, 0.0, 1.0, 0, 0, "");
+ uiBlockSetFunc(block, NULL, NULL, NULL);
+ }
+ }
+ uiBlockEndAlign(block);
+}
+
static void image_panel_properties(const bContext *C, ARegion *ar)
{
+ SpaceImage *sima= (SpaceImage*)CTX_wm_space_data(C);
uiBlock *block;
block= uiBeginBlock(C, ar, "image_panel_properties", UI_EMBOSS, UI_HELV);
- if(uiNewPanel(C, ar, block, "Image Properties", "Image", 10, 10, 318, 204)==0)
+ if(uiNewPanel(C, ar, block, "Image Properties", "Image", 10, 50, 318, 204)==0)
return;
-
+ uiBlockSetHandleFunc(block, do_image_panel_events, NULL);
+
/* note, it draws no bottom half in facemode, for vertex buttons */
-// uiblock_image_panel(block, &G.sima->image, &G.sima->iuser, B_REDR, B_REDR);
-// image_editvertex_buts(block);
+ ED_image_uiblock_panel(C, block, &sima->image, &sima->iuser, B_REDR, B_REDR);
+ image_editvertex_buts(C, block);
uiEndBlock(C, block);
}
@@ -684,7 +1422,12 @@ void image_buttons_area_defbuts(const bContext *C, ARegion *ar)
{
image_panel_properties(C, ar);
-
+ image_panel_game_properties(C, ar);
+ image_panel_view_properties(C, ar);
+ image_panel_paint(C, ar);
+ image_panel_paintcolor(C, ar);
+ image_panel_curves(C, ar);
+
uiDrawPanels(C, 1); /* 1 = align */
uiMatchPanelsView2d(ar); /* sets v2d->totrct */
diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c
index 703b309f2ab..419eb913edd 100644
--- a/source/blender/editors/space_image/space_image.c
+++ b/source/blender/editors/space_image/space_image.c
@@ -233,6 +233,8 @@ void image_keymap(struct wmWindowManager *wm)
WM_keymap_add_item(keymap, "PAINT_OT_image_paint", ACTIONMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PAINT_OT_grab_clone", SELECTMOUSE, KM_PRESS, 0, 0);
WM_keymap_add_item(keymap, "PAINT_OT_sample_color", SELECTMOUSE, KM_PRESS, 0, 0);
+ RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_image_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
+ RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_image_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
WM_keymap_add_item(keymap, "IMAGE_OT_sample", ACTIONMOUSE, KM_PRESS, 0, 0);
RNA_enum_set(WM_keymap_add_item(keymap, "IMAGE_OT_set_curves_point", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "point", 0);
@@ -483,6 +485,8 @@ static void image_buttons_area_init(wmWindowManager *wm, ARegion *ar)
{
ListBase *keymap;
+ keymap= WM_keymap_listbase(wm, "View2D Buttons List", 0, 0);
+ WM_event_add_keymap_handler(&ar->handlers, keymap);
keymap= WM_keymap_listbase(wm, "Image Generic", SPACE_IMAGE, 0);
WM_event_add_keymap_handler(&ar->handlers, keymap);
@@ -603,6 +607,7 @@ void ED_spacetype_image(void)
/**************************** common state *****************************/
+/* note; image_panel_properties() uses pointer to sima->image directly */
Image *ED_space_image(SpaceImage *sima)
{
return sima->image;
diff --git a/source/blender/editors/space_info/info_header.c b/source/blender/editors/space_info/info_header.c
index 32c01b53a9e..8b72e20ec51 100644
--- a/source/blender/editors/space_info/info_header.c
+++ b/source/blender/editors/space_info/info_header.c
@@ -333,7 +333,6 @@ static void do_info_buttons(bContext *C, void *arg, int event)
static void screen_idpoin_handle(bContext *C, ID *id, int event)
{
-
switch(event) {
case UI_ID_BROWSE:
/* exception: can't set screens inside of area/region handers */
@@ -360,7 +359,6 @@ static void screen_idpoin_handle(bContext *C, ID *id, int event)
static void scene_idpoin_handle(bContext *C, ID *id, int event)
{
-
switch(event) {
case UI_ID_BROWSE:
/* exception: can't set screens inside of area/region handers */
@@ -391,7 +389,6 @@ void info_header_buttons(const bContext *C, ARegion *ar)
wmWindow *win= CTX_wm_window(C);
bScreen *screen= CTX_wm_screen(C);
ScrArea *sa= CTX_wm_area(C);
- SpaceInfo *si= sa->spacedata.first;
uiBlock *block;
int xco, yco= 3;
@@ -407,7 +404,7 @@ void info_header_buttons(const bContext *C, ARegion *ar)
uiBlockSetEmboss(block, UI_EMBOSSP);
xmax= GetButStringLength("File");
- uiDefMenuBut(block, info_filemenu, NULL, "File", xco, yco-2, xmax-3, 24, "");
+ uiDefMenuBut(block, info_filemenu, NULL, "File", xco, yco, xmax-3, 24, "");
xco+= xmax;
xmax= GetButStringLength("Add");
@@ -433,13 +430,11 @@ void info_header_buttons(const bContext *C, ARegion *ar)
uiBlockSetEmboss(block, UI_EMBOSS);
- if(screen->full==NULL) {
- si->screen= win->screen;
- xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID**)&si->screen, ID_SCR, NULL, xco, yco,
+ if(screen->full==0) {
+ xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID*)win->screen, ID_SCR, NULL, xco, yco,
screen_idpoin_handle, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_ADD_NEW|UI_ID_DELETE);
xco += 8;
- si->scene= screen->scene;
- xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID**)&si->scene, ID_SCE, NULL, xco, yco,
+ xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID*)screen->scene, ID_SCE, NULL, xco, yco,
scene_idpoin_handle, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_ADD_NEW|UI_ID_DELETE);
xco += 8;
}
diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c
index f1968114b14..66d807eb69c 100644
--- a/source/blender/editors/space_info/space_info.c
+++ b/source/blender/editors/space_info/space_info.c
@@ -160,6 +160,7 @@ static void info_main_area_draw(const bContext *C, ARegion *ar)
glColor3f(0.0, 0.0, 1.0);
BLF_size(11, 96);
BLF_position(200.0, 50.0, 0.0);
+ BLF_enable(BLF_ROTATION);
BLF_rotation(45.0f);
BLF_draw("Another Hello Blender, size 11 and dpi 96!!");
@@ -172,7 +173,7 @@ static void info_main_area_draw(const bContext *C, ARegion *ar)
glColor3f(0.8, 0.7, 0.5);
BLF_size(12, 96);
BLF_position(5.0, 200.0, 0.0);
- BLF_rotation(0.0f);
+ BLF_disable(BLF_ROTATION);
BLF_draw("And this make a new glyph cache!!");
/* reset view matrix */
diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c
index 85812438a2e..68e9d38e192 100644
--- a/source/blender/editors/space_node/node_edit.c
+++ b/source/blender/editors/space_node/node_edit.c
@@ -1047,7 +1047,7 @@ static void snode_bg_viewmove(SpaceNode *snode)
window_set_cursor(win, oldcursor);
}
-#endif;
+#endif
/* ********************** size widget operator ******************** */
@@ -2231,20 +2231,6 @@ void clear_scene_in_nodes(Scene *sce)
}
}
-
-/* gets active viewer user */
-struct ImageUser *ntree_get_active_iuser(bNodeTree *ntree)
-{
- bNode *node;
-
- if(ntree)
- for(node= ntree->nodes.first; node; node= node->next)
- if( ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER))
- if(node->flag & NODE_DO_OUTPUT)
- return node->storage;
- return NULL;
-}
-
void imagepaint_composite_tags(bNodeTree *ntree, Image *image, ImageUser *iuser)
{
bNode *node;
diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c
index 3fb640e34ba..220fd7b8dc8 100644
--- a/source/blender/editors/space_outliner/outliner.c
+++ b/source/blender/editors/space_outliner/outliner.c
@@ -3127,7 +3127,7 @@ static void tree_element_to_path(SpaceOops *soops, TreeElement *te, TreeStoreEle
/* step 1: flatten out hierarchy of parents into a flat chain */
for (tem= te->parent; tem; tem= tem->parent) {
- ld= MEM_callocN(sizeof(LinkData), "LinkData for ks_editop_add_cb()");
+ ld= MEM_callocN(sizeof(LinkData), "LinkData for tree_element_to_path()");
ld->data= tem;
BLI_addhead(&hierarchy, ld);
}
@@ -3145,7 +3145,6 @@ static void tree_element_to_path(SpaceOops *soops, TreeElement *te, TreeStoreEle
/* just 'append' property to path
* - to prevent memory leaks, we must write to newpath not path, then free old path + swap them
*/
-
if(tse->type == TSE_RNA_PROPERTY) {
if(RNA_property_type(ptr, prop) == PROP_POINTER) {
/* for pointer we just append property name */
@@ -3249,9 +3248,12 @@ static void do_outliner_keyingset_editop(SpaceOops *soops, KeyingSet *ks, ListBa
short flag= 0;
short groupmode= KSP_GROUP_KSNAME;
- /* get id + path + index info from the selected element */
- tree_element_to_path(soops, te, tselem,
- &id, &path, &array_index, &flag, &groupmode);
+ /* check if RNA-property described by this selected element is an animateable prop */
+ if ((tselem->type == TSE_RNA_PROPERTY) && RNA_property_animateable(&te->rnaptr, te->directdata)) {
+ /* get id + path + index info from the selected element */
+ tree_element_to_path(soops, te, tselem,
+ &id, &path, &array_index, &flag, &groupmode);
+ }
/* only if ID and path were set, should we perform any actions */
if (id && path) {
diff --git a/source/blender/editors/space_outliner/outliner_ops.c b/source/blender/editors/space_outliner/outliner_ops.c
index 295d7ade97c..8ed4c9ed986 100644
--- a/source/blender/editors/space_outliner/outliner_ops.c
+++ b/source/blender/editors/space_outliner/outliner_ops.c
@@ -58,6 +58,8 @@ void outliner_keymap(wmWindowManager *wm)
/* keying sets - only for databrowse */
WM_keymap_verify_item(keymap, "OUTLINER_OT_keyingset_add_selected", KKEY, KM_PRESS, 0, 0);
WM_keymap_verify_item(keymap, "OUTLINER_OT_keyingset_remove_selected", KKEY, KM_PRESS, KM_ALT, 0);
-
+
+ WM_keymap_verify_item(keymap, "ANIM_OT_insert_keyframe", IKEY, KM_PRESS, 0, 0);
+ WM_keymap_verify_item(keymap, "ANIM_OT_delete_keyframe", IKEY, KM_PRESS, KM_ALT, 0);
}
diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c
index 1194d4b254c..da53057c5eb 100644
--- a/source/blender/editors/space_script/script_edit.c
+++ b/source/blender/editors/space_script/script_edit.c
@@ -66,7 +66,7 @@ static int run_pyfile_exec(bContext *C, wmOperator *op)
char filename[512];
RNA_string_get(op->ptr, "filename", filename);
#ifndef DISABLE_PYTHON
- BPY_run_python_script(C, filename);
+ BPY_run_python_script(C, filename, NULL);
#endif
ED_region_tag_redraw(ar);
diff --git a/source/blender/editors/space_script/space_script.c b/source/blender/editors/space_script/space_script.c
index 52ef016497d..054033fd987 100644
--- a/source/blender/editors/space_script/space_script.c
+++ b/source/blender/editors/space_script/space_script.c
@@ -60,6 +60,10 @@
#include "script_intern.h" // own include
+
+//static script_run_python(char *funcname, )
+
+
/* ******************** default callbacks for script space ***************** */
static SpaceLink *script_new(const bContext *C)
@@ -139,7 +143,7 @@ static void script_main_area_init(wmWindowManager *wm, ARegion *ar)
static void script_main_area_draw(const bContext *C, ARegion *ar)
{
/* draw entirely, view changes should be handled here */
- // SpaceScript *sscript= (SpaceScript*)CTX_wm_space_data(C);
+ SpaceScript *sscript= (SpaceScript*)CTX_wm_space_data(C);
View2D *v2d= &ar->v2d;
float col[3];
@@ -151,7 +155,12 @@ static void script_main_area_draw(const bContext *C, ARegion *ar)
UI_view2d_view_ortho(C, v2d);
/* data... */
+ // BPY_run_python_script(C, "/root/blender-svn/blender25/test.py", NULL);
+ if (sscript->script) {
+ //BPY_run_python_script_space(scpt->script.filename, NULL);
+ BPY_run_script_space_draw(C, sscript);
+ }
/* reset view matrix */
UI_view2d_view_restore(C);
@@ -190,6 +199,8 @@ static void script_header_area_draw(const bContext *C, ARegion *ar)
static void script_main_area_listener(ARegion *ar, wmNotifier *wmn)
{
/* context changes */
+ // XXX - Todo, need the ScriptSpace accessible to get the python script to run.
+ // BPY_run_script_space_listener()
}
/* only called once, from space/spacetypes.c */
@@ -213,7 +224,7 @@ void ED_spacetype_script(void)
art->init= script_main_area_init;
art->draw= script_main_area_draw;
art->listener= script_main_area_listener;
- art->keymapflag= ED_KEYMAP_VIEW2D;
+ art->keymapflag= ED_KEYMAP_VIEW2D| ED_KEYMAP_UI|ED_KEYMAP_FRAMES; // XXX need to further test this ED_KEYMAP_UI is needed for button interaction
BLI_addhead(&st->regiontypes, art);
diff --git a/source/blender/editors/space_text/Makefile b/source/blender/editors/space_text/Makefile
index fb685389d56..33e12dc1abb 100644
--- a/source/blender/editors/space_text/Makefile
+++ b/source/blender/editors/space_text/Makefile
@@ -43,7 +43,9 @@ CPPFLAGS += -I../../windowmanager
CPPFLAGS += -I../../blenloader
CPPFLAGS += -I../../blenkernel
CPPFLAGS += -I../../blenlib
+CPPFLAGS += -I../../blenfont
CPPFLAGS += -I../../makesdna
+CPPFLAGS += -I../../makesrna
CPPFLAGS += -I../../imbuf
CPPFLAGS += -I../../python
CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include
diff --git a/source/blender/editors/space_text/SConscript b/source/blender/editors/space_text/SConscript
index c3438dd7695..c35772becbc 100644
--- a/source/blender/editors/space_text/SConscript
+++ b/source/blender/editors/space_text/SConscript
@@ -2,8 +2,12 @@
Import ('env')
sources = env.Glob('*.c')
-
+defs = []
incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf'
incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include'
+incs += ' #/intern/bmfont ../../python ../../makesrna ../../blenfont'
+
+if not env['WITH_BF_PYTHON']:
+ defs.append('DISABLE_PYTHON')
env.BlenderLib ( 'bf_editors_space_text', sources, Split(incs), [], libtype=['core'], priority=[95] )
diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c
index 4187bd13cb1..160b93d185e 100644
--- a/source/blender/editors/space_text/space_text.c
+++ b/source/blender/editors/space_text/space_text.c
@@ -34,6 +34,7 @@
#include "DNA_space_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
+#include "DNA_userdef_types.h"
#include "MEM_guardedalloc.h"
@@ -57,6 +58,8 @@
#include "UI_resources.h"
#include "UI_view2d.h"
+#include "RNA_access.h"
+
#include "ED_markers.h"
#include "text_intern.h" // own include
@@ -70,7 +73,10 @@ static SpaceLink *text_new(const bContext *C)
stext= MEM_callocN(sizeof(SpaceText), "inittext");
stext->spacetype= SPACE_TEXT;
-
+
+ stext->font_id= 5;
+ stext->lheight= 12;
+ stext->tabnumber= 4;
/* header */
ar= MEM_callocN(sizeof(ARegion), "header for text");
@@ -85,9 +91,6 @@ static SpaceLink *text_new(const bContext *C)
BLI_addtail(&stext->regionbase, ar);
ar->regiontype= RGN_TYPE_WINDOW;
- /* channel list region XXX */
-
-
return (SpaceLink *)stext;
}
@@ -115,7 +118,185 @@ static SpaceLink *text_duplicate(SpaceLink *sl)
return (SpaceLink *)stextn;
}
+static void text_listener(ScrArea *sa, wmNotifier *wmn)
+{
+ SpaceText *st= sa->spacedata.first;
+
+ /* context changes */
+ switch(wmn->category) {
+ case NC_TEXT:
+ if(!wmn->reference || wmn->reference == st->text) {
+ ED_area_tag_redraw(sa);
+
+ if(wmn->data == ND_CURSOR) {
+ ARegion *ar;
+
+ for(ar=sa->regionbase.first; ar; ar= ar->next)
+ if(ar->regiontype==RGN_TYPE_WINDOW)
+ text_update_cursor_moved(st, ar);
+ }
+ }
+ else if(wmn->data == ND_DISPLAY)
+ ED_area_tag_redraw(sa);
+
+ break;
+ }
+}
+
+static void text_operatortypes(void)
+{
+ WM_operatortype_append(TEXT_OT_new);
+ WM_operatortype_append(TEXT_OT_open);
+ WM_operatortype_append(TEXT_OT_reload);
+ WM_operatortype_append(TEXT_OT_save);
+ WM_operatortype_append(TEXT_OT_save_as);
+ WM_operatortype_append(TEXT_OT_make_internal);
+ WM_operatortype_append(TEXT_OT_run_script);
+ WM_operatortype_append(TEXT_OT_refresh_pyconstraints);
+
+ WM_operatortype_append(TEXT_OT_paste);
+ WM_operatortype_append(TEXT_OT_copy);
+ WM_operatortype_append(TEXT_OT_cut);
+
+ WM_operatortype_append(TEXT_OT_convert_whitespace);
+ WM_operatortype_append(TEXT_OT_uncomment);
+ WM_operatortype_append(TEXT_OT_comment);
+ WM_operatortype_append(TEXT_OT_unindent);
+ WM_operatortype_append(TEXT_OT_indent);
+
+ WM_operatortype_append(TEXT_OT_clear_all_markers);
+ WM_operatortype_append(TEXT_OT_next_marker);
+ WM_operatortype_append(TEXT_OT_previous_marker);
+
+ WM_operatortype_append(TEXT_OT_select_line);
+ WM_operatortype_append(TEXT_OT_select_all);
+
+ WM_operatortype_append(TEXT_OT_jump);
+ WM_operatortype_append(TEXT_OT_move);
+ WM_operatortype_append(TEXT_OT_move_select);
+ WM_operatortype_append(TEXT_OT_delete);
+ WM_operatortype_append(TEXT_OT_toggle_overwrite);
+
+ WM_operatortype_append(TEXT_OT_set_cursor);
+ WM_operatortype_append(TEXT_OT_scroll);
+ WM_operatortype_append(TEXT_OT_scroll_bar);
+ WM_operatortype_append(TEXT_OT_line_number);
+
+ WM_operatortype_append(TEXT_OT_line_break);
+ WM_operatortype_append(TEXT_OT_insert);
+
+ WM_operatortype_append(TEXT_OT_find_and_replace);
+ WM_operatortype_append(TEXT_OT_find);
+ WM_operatortype_append(TEXT_OT_find_set_selected);
+ WM_operatortype_append(TEXT_OT_replace);
+ WM_operatortype_append(TEXT_OT_replace_set_selected);
+ WM_operatortype_append(TEXT_OT_mark_all);
+
+ WM_operatortype_append(TEXT_OT_to_3d_object);
+
+ WM_operatortype_append(TEXT_OT_resolve_conflict);
+}
+
+static void text_keymap(struct wmWindowManager *wm)
+{
+ ListBase *keymap= WM_keymap_listbase(wm, "Text", SPACE_TEXT, 0);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_new", NKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_open", OKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_reload", RKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_save", SKEY, KM_PRESS, KM_ALT, 0);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_run_script", PKEY, KM_PRESS, KM_ALT, 0);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_cut", XKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_cut", XKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_copy", CKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_paste", VKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0);
+
+ if(U.uiflag & USER_MMB_PASTE) // XXX not dynamic
+ RNA_boolean_set(WM_keymap_add_item(keymap, "TEXT_OT_paste", MIDDLEMOUSE, KM_PRESS, 0, 0)->ptr, "selection", 1);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_jump", JKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_find", FKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_find_and_replace", FKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_find_and_replace", FKEY, KM_PRESS, KM_CTRL, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_replace", HKEY, KM_PRESS, KM_ALT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_replace", HKEY, KM_PRESS, KM_CTRL, 0);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_to_3d_object", MKEY, KM_PRESS, KM_ALT, 0);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_select_all", AKEY, KM_PRESS, KM_CTRL, 0);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_indent", TABKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_unindent", TABKEY, KM_PRESS, KM_SHIFT, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_uncomment", DKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0);
+
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", HOMEKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_BEGIN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, KM_OSKEY, 0)->ptr, "type", LINE_BEGIN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, KM_OSKEY, 0)->ptr, "type", LINE_BEGIN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", EKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", LINE_END);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", EKEY, KM_PRESS, KM_CTRL|KM_SHIFT, 0)->ptr, "type", LINE_END);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_CHAR);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_CHAR);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", PREV_WORD);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", NEXT_WORD);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", UPARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_LINE);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", DOWNARROWKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_LINE);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", PAGEUPKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_PAGE);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move", PAGEDOWNKEY, KM_PRESS, 0, 0)->ptr, "type", NEXT_PAGE);
+
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", HOMEKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", LINE_BEGIN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", ENDKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", LINE_END);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", LEFTARROWKEY, KM_PRESS, KM_SHIFT|KM_OSKEY, 0)->ptr, "type", LINE_BEGIN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", RIGHTARROWKEY, KM_PRESS, KM_SHIFT|KM_OSKEY, 0)->ptr, "type", LINE_BEGIN);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", LEFTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", PREV_CHAR);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", RIGHTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", NEXT_CHAR);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", LEFTARROWKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "type", PREV_WORD);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", RIGHTARROWKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "type", NEXT_WORD);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", UPARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", PREV_LINE);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", DOWNARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", NEXT_LINE);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", PAGEUPKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", PREV_PAGE);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_move_select", PAGEDOWNKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "type", NEXT_PAGE);
+
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", DELKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_NEXT_CHAR);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", DKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", DEL_NEXT_CHAR);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_PREV_CHAR);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", DELKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", DEL_NEXT_WORD);
+ RNA_enum_set(WM_keymap_add_item(keymap, "TEXT_OT_delete", BACKSPACEKEY, KM_PRESS, KM_CTRL, 0)->ptr, "type", DEL_PREV_WORD);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_toggle_overwrite", INSERTKEY, KM_PRESS, 0, 0);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_scroll", MIDDLEMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_scroll_bar", LEFTMOUSE, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_set_cursor", LEFTMOUSE, KM_PRESS, 0, 0);
+ RNA_boolean_set(WM_keymap_add_item(keymap, "TEXT_OT_set_cursor", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "select", 1);
+ RNA_int_set(WM_keymap_add_item(keymap, "TEXT_OT_scroll", WHEELUPMOUSE, KM_PRESS, 0, 0)->ptr, "lines", -1);
+ RNA_int_set(WM_keymap_add_item(keymap, "TEXT_OT_scroll", WHEELDOWNMOUSE, KM_PRESS, 0, 0)->ptr, "lines", 1);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_to_3d_object", MKEY, KM_PRESS, KM_ALT, 0);
+
+ WM_keymap_add_item(keymap, "TEXT_OT_line_break", RETKEY, KM_PRESS, 0, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_line_number", KM_TEXTINPUT, KM_ANY, KM_ANY, 0);
+ WM_keymap_add_item(keymap, "TEXT_OT_insert", KM_TEXTINPUT, KM_ANY, KM_ANY, 0); // last!
+}
+
+static int text_context(const bContext *C, bContextDataMember member, bContextDataResult *result)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+
+ if(member == CTX_DATA_EDIT_TEXT) {
+ CTX_data_pointer_set(result, st->text);
+ return 1;
+ }
+ return 0;
+}
+
+/********************* main region ********************/
/* add handlers, stuff you only do once or on area/region changes */
static void text_main_area_init(wmWindowManager *wm, ARegion *ar)
@@ -132,8 +313,8 @@ static void text_main_area_init(wmWindowManager *wm, ARegion *ar)
static void text_main_area_draw(const bContext *C, ARegion *ar)
{
/* draw entirely, view changes should be handled here */
- // SpaceText *stext= (SpaceText*)CTX_wm_space_data(C);
- View2D *v2d= &ar->v2d;
+ SpaceText *st= CTX_wm_space_text(C);
+ //View2D *v2d= &ar->v2d;
float col[3];
/* clear and setup matrix */
@@ -141,31 +322,23 @@ static void text_main_area_draw(const bContext *C, ARegion *ar)
glClearColor(col[0], col[1], col[2], 0.0);
glClear(GL_COLOR_BUFFER_BIT);
- UI_view2d_view_ortho(C, v2d);
+ // UI_view2d_view_ortho(C, v2d);
/* data... */
-
+ draw_text_main(st, ar);
/* reset view matrix */
- UI_view2d_view_restore(C);
+ // UI_view2d_view_restore(C);
/* scrollers? */
}
-static void text_operatortypes(void)
-{
-
-}
-
static void text_cursor(wmWindow *win, ScrArea *sa, ARegion *ar)
{
WM_cursor_set(win, BC_TEXTEDITCURSOR);
}
-static void text_keymap(struct wmWindowManager *wm)
-{
-
-}
+/****************** header region ******************/
/* add handlers, stuff you only do once or on area/region changes */
static void text_header_area_init(wmWindowManager *wm, ARegion *ar)
@@ -195,11 +368,38 @@ static void text_header_area_draw(const bContext *C, ARegion *ar)
UI_view2d_view_restore(C);
}
-static void text_main_area_listener(ARegion *ar, wmNotifier *wmn)
+/****************** find & replace region ******************/
+
+/* add handlers, stuff you only do once or on area/region changes */
+static void text_find_area_init(wmWindowManager *wm, ARegion *ar)
{
- /* context changes */
+ UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_HEADER, ar->winx, ar->winy);
+}
+
+static void text_find_area_draw(const bContext *C, ARegion *ar)
+{
+ float col[3];
+
+ /* clear */
+ if(ED_screen_area_active(C))
+ UI_GetThemeColor3fv(TH_HEADER, col);
+ else
+ UI_GetThemeColor3fv(TH_HEADERDESEL, col);
+
+ glClearColor(col[0], col[1], col[2], 0.0);
+ glClear(GL_COLOR_BUFFER_BIT);
+
+ /* set view2d view matrix for scrolling (without scrollers) */
+ UI_view2d_view_ortho(C, &ar->v2d);
+
+ text_find_buttons(C, ar);
+
+ /* restore view matrix? */
+ UI_view2d_view_restore(C);
}
+/********************* registration ********************/
+
/* only called once, from space/spacetypes.c */
void ED_spacetype_text(void)
{
@@ -214,14 +414,14 @@ void ED_spacetype_text(void)
st->duplicate= text_duplicate;
st->operatortypes= text_operatortypes;
st->keymap= text_keymap;
+ st->listener= text_listener;
+ st->context= text_context;
/* regions: main window */
art= MEM_callocN(sizeof(ARegionType), "spacetype text region");
art->regionid = RGN_TYPE_WINDOW;
art->init= text_main_area_init;
art->draw= text_main_area_draw;
- art->listener= text_main_area_listener;
- art->keymapflag= ED_KEYMAP_VIEW2D;
art->cursor= text_cursor;
BLI_addhead(&st->regiontypes, art);
@@ -237,6 +437,16 @@ void ED_spacetype_text(void)
BLI_addhead(&st->regiontypes, art);
+ /* regions: find & replace */
+ art= MEM_callocN(sizeof(ARegionType), "spacetype text region");
+ art->regionid = RGN_TYPE_UI;
+ art->minsizey= HEADERY;
+ art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D;
+
+ art->init= text_find_area_init;
+ art->draw= text_find_area_draw;
+
+ BLI_addhead(&st->regiontypes, art);
BKE_spacetype_register(st);
}
diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c
new file mode 100644
index 00000000000..456060d77a7
--- /dev/null
+++ b/source/blender/editors/space_text/text_draw.c
@@ -0,0 +1,1381 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <math.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "BLF_api.h"
+
+#include "BLI_blenlib.h"
+
+#include "DNA_text_types.h"
+#include "DNA_space_types.h"
+#include "DNA_screen_types.h"
+
+#include "BKE_global.h"
+#include "BKE_main.h"
+#include "BKE_suggestions.h"
+#include "BKE_text.h"
+#include "BKE_utildefines.h"
+
+#include "BIF_gl.h"
+#include "BIF_glutil.h"
+
+#include "ED_datafiles.h"
+#include "UI_interface.h"
+#include "UI_resources.h"
+
+#include "text_intern.h"
+
+/******************** text font drawing ******************/
+
+static void text_font_begin(SpaceText *st)
+{
+ static int mono= -1; // XXX needs proper storage
+
+ if(mono == -1)
+ mono= BLF_load_mem("monospace", (unsigned char*)datatoc_bmonofont_ttf, datatoc_bmonofont_ttf_size);
+
+ BLF_set(mono);
+ BLF_aspect(1.0);
+
+ BLF_size(st->lheight, 72);
+}
+
+static void text_font_end(SpaceText *st)
+{
+}
+
+static int text_font_draw(SpaceText *st, int x, int y, char *str)
+{
+ BLF_position(x, y, 0);
+ BLF_draw(str);
+
+ return BLF_width(str);
+}
+
+static int text_font_draw_character(SpaceText *st, int x, int y, char c)
+{
+ char str[2];
+
+ str[0]= c;
+ str[1]= '\0';
+
+ BLF_position(x, y, 0);
+ BLF_draw(str);
+
+ return text_font_width_character(st);
+}
+
+int text_font_width_character(SpaceText *st)
+{
+ // XXX need quick BLF function, or cache it somewhere
+ return (st->lheight == 12)? 7: 8;
+}
+
+int text_font_width(SpaceText *st, char *str)
+{
+ return BLF_width(str);
+}
+
+/****************** flatten string **********************/
+
+static void flatten_string_append(FlattenString *fs, char c, int accum)
+{
+ if(fs->pos>=fs->len && fs->pos>=sizeof(fs->fixedbuf)-1) {
+ char *nbuf; int *naccum;
+ int olen= fs->len;
+
+ if(olen) fs->len*= 2;
+ else fs->len= 256;
+
+ nbuf= MEM_mallocN(sizeof(*fs->buf)*fs->len, "fs->buf");
+ naccum= MEM_mallocN(sizeof(*fs->accum)*fs->len, "fs->accum");
+
+ if(olen) {
+ memcpy(nbuf, fs->buf, olen);
+ memcpy(naccum, fs->accum, olen);
+
+ if(fs->buf != fs->fixedbuf) {
+ MEM_freeN(fs->buf);
+ MEM_freeN(fs->accum);
+ }
+ }
+
+ fs->buf= nbuf;
+ fs->accum= naccum;
+ }
+
+ fs->buf[fs->pos]= c;
+ fs->accum[fs->pos]= accum;
+
+ if(c==0) fs->pos= 0;
+ else fs->pos++;
+}
+
+int flatten_string(SpaceText *st, FlattenString *fs, char *in)
+{
+ int r = 0, i = 0;
+
+ memset(fs, 0, sizeof(FlattenString));
+ fs->buf= fs->fixedbuf;
+ fs->accum= fs->fixedaccum;
+
+ for(r=0, i=0; *in; r++, in++) {
+ if(*in=='\t') {
+ if(fs->pos && *(in-1)=='\t')
+ i= st->tabnumber;
+ else if(st->tabnumber > 0)
+ i= st->tabnumber - (fs->pos%st->tabnumber);
+
+ while(i--)
+ flatten_string_append(fs, ' ', r);
+ }
+ else
+ flatten_string_append(fs, *in, r);
+ }
+
+ return fs->pos;
+}
+
+void flatten_string_free(FlattenString *fs)
+{
+ if(fs->buf != fs->fixedbuf)
+ MEM_freeN(fs->buf);
+ if(fs->accum != fs->fixedaccum)
+ MEM_freeN(fs->accum);
+}
+
+/* Checks the specified source string for a Python built-in function name. This
+ name must start at the beginning of the source string and must be followed by
+ a non-identifier (see text_check_identifier(char)) or null character.
+
+ If a built-in function is found, the length of the matching name is returned.
+ Otherwise, -1 is returned. */
+
+static int find_builtinfunc(char *string)
+{
+ int a, i;
+ char builtinfuncs[][11] = {"and", "as", "assert", "break", "class", "continue", "def",
+ "del", "elif", "else", "except", "exec", "finally",
+ "for", "from", "global", "if", "import", "in",
+ "is", "lambda", "not", "or", "pass", "print",
+ "raise", "return", "try", "while", "yield"};
+ for(a=0; a<30; a++) {
+ i = 0;
+ while(1) {
+ /* If we hit the end of a keyword... (eg. "def") */
+ if(builtinfuncs[a][i]=='\0') {
+ /* If we still have identifier chars in the source (eg. "definate") */
+ if(text_check_identifier(string[i]))
+ i = -1; /* No match */
+ break; /* Next keyword if no match, otherwise we're done */
+
+ /* If chars mismatch, move on to next keyword */
+ }
+ else if(string[i]!=builtinfuncs[a][i]) {
+ i = -1;
+ break; /* Break inner loop, start next keyword */
+ }
+ i++;
+ }
+ if(i>0) break; /* If we have a match, we're done */
+ }
+ return i;
+}
+
+/* Checks the specified source string for a Python special name. This name must
+ start at the beginning of the source string and must be followed by a non-
+ identifier (see text_check_identifier(char)) or null character.
+
+ If a special name is found, the length of the matching name is returned.
+ Otherwise, -1 is returned. */
+
+static int find_specialvar(char *string)
+{
+ int i = 0;
+ /* Check for "def" */
+ if(string[0]=='d' && string[1]=='e' && string[2]=='f')
+ i = 3;
+ /* Check for "class" */
+ else if(string[0]=='c' && string[1]=='l' && string[2]=='a' && string[3]=='s' && string[4]=='s')
+ i = 5;
+ /* If next source char is an identifier (eg. 'i' in "definate") no match */
+ if(i==0 || text_check_identifier(string[i]))
+ return -1;
+ return i;
+}
+
+/* Ensures the format string for the given line is long enough, reallocating
+ as needed. Allocation is done here, alone, to ensure consistency. */
+int text_check_format_len(TextLine *line, unsigned int len)
+{
+ if(line->format) {
+ if(strlen(line->format) < len) {
+ MEM_freeN(line->format);
+ line->format = MEM_mallocN(len+2, "SyntaxFormat");
+ if(!line->format) return 0;
+ }
+ }
+ else {
+ line->format = MEM_mallocN(len+2, "SyntaxFormat");
+ if(!line->format) return 0;
+ }
+
+ return 1;
+}
+
+/* Formats the specified line. If do_next is set, the process will move on to
+ the succeeding line if it is affected (eg. multiline strings). Format strings
+ may contain any of the following characters:
+ '_' Whitespace
+ '#' Comment text
+ '!' Punctuation and other symbols
+ 'n' Numerals
+ 'l' String letters
+ 'v' Special variables (class, def)
+ 'b' Built-in names (print, for, etc.)
+ 'q' Other text (identifiers, etc.)
+ It is terminated with a null-terminator '\0' followed by a continuation
+ flag indicating whether the line is part of a multi-line string. */
+
+static void txt_format_line(SpaceText *st, TextLine *line, int do_next)
+{
+ FlattenString fs;
+ char *str, *fmt, orig, cont, find, prev = ' ';
+ int len, i;
+
+ /* Get continuation from previous line */
+ if(line->prev && line->prev->format != NULL) {
+ fmt= line->prev->format;
+ cont = fmt[strlen(fmt)+1]; /* Just after the null-terminator */
+ }
+ else cont = 0;
+
+ /* Get original continuation from this line */
+ if(line->format != NULL) {
+ fmt= line->format;
+ orig = fmt[strlen(fmt)+1]; /* Just after the null-terminator */
+ }
+ else orig = 0xFF;
+
+ flatten_string(st, &fs, line->line);
+ str = fs.buf;
+ len = strlen(str);
+ if(!text_check_format_len(line, len)) {
+ flatten_string_free(&fs);
+ return;
+ }
+ fmt = line->format;
+
+ while(*str) {
+ /* Handle escape sequences by skipping both \ and next char */
+ if(*str == '\\') {
+ *fmt = prev; fmt++; str++;
+ if(*str == '\0') break;
+ *fmt = prev; fmt++; str++;
+ continue;
+ }
+ /* Handle continuations */
+ else if(cont) {
+ /* Triple strings ("""...""" or '''...''') */
+ if(cont & TXT_TRISTR) {
+ find = (cont & TXT_DBLQUOTSTR) ? '"' : '\'';
+ if(*str==find && *(str+1)==find && *(str+2)==find) {
+ *fmt = 'l'; fmt++; str++;
+ *fmt = 'l'; fmt++; str++;
+ cont = 0;
+ }
+ /* Handle other strings */
+ }
+ else {
+ find = (cont & TXT_DBLQUOTSTR) ? '"' : '\'';
+ if(*str == find) cont = 0;
+ }
+
+ *fmt = 'l';
+ }
+ /* Not in a string... */
+ else {
+ /* Deal with comments first */
+ if(prev == '#' || *str == '#')
+ *fmt = '#';
+ /* Strings */
+ else if(*str == '"' || *str == '\'') {
+ find = *str;
+ cont = (*str== '"') ? TXT_DBLQUOTSTR : TXT_SNGQUOTSTR;
+ if(*(str+1) == find && *(str+2) == find) {
+ *fmt = 'l'; fmt++; str++;
+ *fmt = 'l'; fmt++; str++;
+ cont |= TXT_TRISTR;
+ }
+ *fmt = 'l';
+ }
+ /* Whitespace (all ws. has been converted to spaces) */
+ else if(*str == ' ')
+ *fmt = '_';
+ /* Numbers (digits not part of an identifier and periods followed by digits) */
+ else if((prev != 'q' && text_check_digit(*str)) || (*str == '.' && text_check_digit(*(str+1))))
+ *fmt = 'n';
+ /* Punctuation */
+ else if(text_check_delim(*str))
+ *fmt = '!';
+ /* Identifiers and other text (no previous ws. or delims. so text continues) */
+ else if(prev == 'q')
+ *fmt = 'q';
+ /* Not ws, a digit, punct, or continuing text. Must be new, check for special words */
+ else {
+ /* Special vars(v) or built-in keywords(b) */
+ if((i=find_specialvar(str)) != -1)
+ prev = 'v';
+ else if((i=find_builtinfunc(str)) != -1)
+ prev = 'b';
+ if(i>0) {
+ while(i>1) {
+ *fmt = prev; fmt++; str++;
+ i--;
+ }
+ *fmt = prev;
+ }
+ else
+ *fmt = 'q';
+ }
+ }
+ prev = *fmt;
+ fmt++;
+ str++;
+ }
+
+ /* Terminate and add continuation char */
+ *fmt = '\0'; fmt++;
+ *fmt = cont;
+
+ /* Debugging */
+ //print_format(st, line);
+
+ /* If continuation has changed and we're allowed, process the next line */
+ if(cont!=orig && do_next && line->next) {
+ txt_format_line(st, line->next, do_next);
+ }
+
+ flatten_string_free(&fs);
+}
+
+#if 0
+/* Formats every line of the current text */
+static void txt_format_text(SpaceText *st)
+{
+ TextLine *linep;
+
+ if(!st->text) return;
+
+ for(linep=st->text->lines.first; linep; linep=linep->next)
+ txt_format_line(st, linep, 0);
+}
+#endif
+
+/* Sets the current drawing color based on the format character specified */
+static void format_draw_color(char formatchar)
+{
+ switch (formatchar) {
+ case '_': /* Whitespace */
+ break;
+ case '!': /* Symbols */
+ UI_ThemeColorBlend(TH_TEXT, TH_BACK, 0.5f);
+ break;
+ case '#': /* Comments */
+ UI_ThemeColor(TH_SYNTAX_C);
+ break;
+ case 'n': /* Numerals */
+ UI_ThemeColor(TH_SYNTAX_N);
+ break;
+ case 'l': /* Strings */
+ UI_ThemeColor(TH_SYNTAX_L);
+ break;
+ case 'v': /* Specials: class, def */
+ UI_ThemeColor(TH_SYNTAX_V);
+ break;
+ case 'b': /* Keywords: for, print, etc. */
+ UI_ThemeColor(TH_SYNTAX_B);
+ break;
+ case 'q': /* Other text (identifiers) */
+ default:
+ UI_ThemeColor(TH_TEXT);
+ break;
+ }
+}
+
+/*********************** utilities ************************/
+
+int text_check_bracket(char ch)
+{
+ int a;
+ char opens[] = "([{";
+ char close[] = ")]}";
+
+ for(a=0; a<3; a++) {
+ if(ch==opens[a])
+ return a+1;
+ else if(ch==close[a])
+ return -(a+1);
+ }
+ return 0;
+}
+
+int text_check_delim(char ch)
+{
+ int a;
+ char delims[] = "():\"\' ~!%^&*-+=[]{};/<>|.#\t,";
+
+ for(a=0; a<28; a++) {
+ if(ch==delims[a])
+ return 1;
+ }
+ return 0;
+}
+
+int text_check_digit(char ch)
+{
+ if(ch < '0') return 0;
+ if(ch <= '9') return 1;
+ return 0;
+}
+
+int text_check_identifier(char ch)
+{
+ if(ch < '0') return 0;
+ if(ch <= '9') return 1;
+ if(ch < 'A') return 0;
+ if(ch <= 'Z' || ch == '_') return 1;
+ if(ch < 'a') return 0;
+ if(ch <= 'z') return 1;
+ return 0;
+}
+
+int text_check_whitespace(char ch)
+{
+ if(ch == ' ' || ch == '\t' || ch == '\r' || ch == '\n')
+ return 1;
+ return 0;
+}
+
+/************************** draw text *****************************/
+
+/***********************/ /*
+
+Notes on word-wrap
+--
+All word-wrap functions follow the algorithm below to maintain consistency.
+ line The line to wrap (tabs converted to spaces)
+ view_width The maximum number of characters displayable in the region
+ This equals region_width/font_width for the region
+ wrap_chars Characters that allow wrapping. This equals [' ', '\t', '-']
+
+def wrap(line, view_width, wrap_chars):
+ draw_start = 0
+ draw_end = view_width
+ pos = 0
+ for c in line:
+ if pos-draw_start >= view_width:
+ print line[draw_start:draw_end]
+ draw_start = draw_end
+ draw_end += view_width
+ elif c in wrap_chars:
+ draw_end = pos+1
+ pos += 1
+ print line[draw_start:]
+
+*/ /***********************/
+
+int wrap_width(SpaceText *st, ARegion *ar)
+{
+ int x, max;
+
+ x= st->showlinenrs ? TXT_OFFSET + TEXTXLOC : TXT_OFFSET;
+ max= (ar->winx-x)/text_font_width_character(st);
+ return max>8 ? max : 8;
+}
+
+/* Sets (offl, offc) for transforming (line, curs) to its wrapped position */
+void wrap_offset(SpaceText *st, ARegion *ar, TextLine *linein, int cursin, int *offl, int *offc)
+{
+ Text *text;
+ TextLine *linep;
+ int i, j, start, end, chars, max, chop;
+ char ch;
+
+ *offl= *offc= 0;
+
+ if(!st->text) return;
+ if(!st->wordwrap) return;
+
+ text= st->text;
+
+ /* Move pointer to first visible line (top) */
+ linep= text->lines.first;
+ i= st->top;
+ while(i>0 && linep) {
+ if(linep == linein) return; /* Line before top */
+ linep= linep->next;
+ i--;
+ }
+
+ max= wrap_width(st, ar);
+
+ while(linep) {
+ start= 0;
+ end= max;
+ chop= 1;
+ chars= 0;
+ *offc= 0;
+ for(i=0, j=0; linep->line[j]!='\0'; j++) {
+
+ /* Mimic replacement of tabs */
+ ch= linep->line[j];
+ if(ch=='\t') {
+ chars= st->tabnumber-i%st->tabnumber;
+ if(linep==linein && i<cursin) cursin += chars-1;
+ ch= ' ';
+ }
+ else
+ chars= 1;
+
+ while(chars--) {
+ if(i-start>=max) {
+ if(chop && linep==linein && i >= cursin)
+ return;
+ (*offl)++;
+ *offc -= end-start;
+ start= end;
+ end += max;
+ chop= 1;
+ }
+ else if(ch==' ' || ch=='-') {
+ end = i+1;
+ chop= 0;
+ if(linep==linein && i >= cursin)
+ return;
+ }
+ i++;
+ }
+ }
+ if(linep==linein) break;
+ linep= linep->next;
+ }
+}
+
+static int get_char_pos(SpaceText *st, char *line, int cur)
+{
+ int a=0, i;
+
+ for(i=0; i<cur && line[i]; i++) {
+ if(line[i]=='\t')
+ a += st->tabnumber-a%st->tabnumber;
+ else
+ a++;
+ }
+ return a;
+}
+
+static int text_draw_wrapped(SpaceText *st, char *str, int x, int y, int w, char *format)
+{
+ FlattenString fs;
+ int basex, i, a, len, start, end, max, lines;
+
+ len= flatten_string(st, &fs, str);
+ str= fs.buf;
+ max= w/text_font_width_character(st);
+ if(max<8) max= 8;
+ basex= x;
+
+ lines= 1;
+ start= 0;
+ end= max;
+ for(i=0; i<len; i++) {
+ if(i-start >= max) {
+ /* Draw the visible portion of text on the overshot line */
+ for(a=start; a<end; a++) {
+ if(st->showsyntax && format) format_draw_color(format[a]);
+ x += text_font_draw_character(st, x, y, str[a]);
+ }
+ y -= st->lheight;
+ x= basex;
+ lines++;
+ start= end;
+ end += max;
+ }
+ else if(str[i]==' ' || str[i]=='-') {
+ end = i+1;
+ }
+ }
+
+ /* Draw the remaining text */
+ for(a=start; a<len; a++) {
+ if(st->showsyntax && format)
+ format_draw_color(format[a]);
+
+ x += text_font_draw_character(st, x, y, str[a]);
+ }
+
+ flatten_string_free(&fs);
+
+ return lines;
+}
+
+static int text_draw(SpaceText *st, char *str, int cshift, int maxwidth, int draw, int x, int y, char *format)
+{
+ FlattenString fs;
+ int r=0, w= 0;
+ int *acc;
+ char *in;
+
+ w= flatten_string(st, &fs, str);
+ if(w < cshift) {
+ flatten_string_free(&fs);
+ return 0; /* String is shorter than shift */
+ }
+
+ in= fs.buf+cshift;
+ acc= fs.accum+cshift;
+ w= w-cshift;
+
+ if(draw) {
+ if(st->showsyntax && format) {
+ int amount, a;
+ format = format+cshift;
+
+ amount = strlen(in);
+
+ for(a = 0; a < amount; a++) {
+ format_draw_color(format[a]);
+ x += text_font_draw_character(st, x, y, in[a]);
+ }
+ }
+ else
+ text_font_draw(st, x, y, in);
+ }
+ else {
+ while(w-- && *acc++ < maxwidth)
+ r+= text_font_width_character(st);
+ }
+
+ flatten_string_free(&fs);
+
+ if(cshift && r==0)
+ return 0;
+ else if(st->showlinenrs)
+ return r+TXT_OFFSET+TEXTXLOC;
+ else
+ return r+TXT_OFFSET;
+}
+
+/************************ draw scrollbar *****************************/
+
+static void calc_text_rcts(SpaceText *st, ARegion *ar)
+{
+ int lhlstart, lhlend, ltexth;
+ short barheight, barstart, hlstart, hlend, blank_lines;
+ short pix_available, pix_top_margin, pix_bottom_margin, pix_bardiff;
+
+ pix_top_margin = 8;
+ pix_bottom_margin = 4;
+ pix_available = ar->winy - pix_top_margin - pix_bottom_margin;
+ ltexth= txt_get_span(st->text->lines.first, st->text->lines.last);
+ blank_lines = st->viewlines / 2;
+
+ /* when resizing a vieport with the bar at the bottom to a greater height more blank lines will be added */
+ if(ltexth + blank_lines < st->top + st->viewlines) {
+ blank_lines = st->top + st->viewlines - ltexth;
+ }
+
+ ltexth += blank_lines;
+
+ barheight = (ltexth > 0)? (st->viewlines*pix_available)/ltexth: 0;
+ pix_bardiff = 0;
+ if(barheight < 20) {
+ pix_bardiff = 20 - barheight; /* take into account the now non-linear sizing of the bar */
+ barheight = 20;
+ }
+ barstart = (ltexth > 0)? ((pix_available - pix_bardiff) * st->top)/ltexth: 0;
+
+ st->txtbar.xmin = 5;
+ st->txtbar.xmax = 17;
+ st->txtbar.ymax = ar->winy - pix_top_margin - barstart;
+ st->txtbar.ymin = st->txtbar.ymax - barheight;
+
+ CLAMP(st->txtbar.ymin, pix_bottom_margin, ar->winy - pix_top_margin);
+ CLAMP(st->txtbar.ymax, pix_bottom_margin, ar->winy - pix_top_margin);
+
+ st->pix_per_line= (pix_available > 0)? (float) ltexth/pix_available: 0;
+ if(st->pix_per_line<.1) st->pix_per_line=.1f;
+
+ lhlstart = MIN2(txt_get_span(st->text->lines.first, st->text->curl),
+ txt_get_span(st->text->lines.first, st->text->sell));
+ lhlend = MAX2(txt_get_span(st->text->lines.first, st->text->curl),
+ txt_get_span(st->text->lines.first, st->text->sell));
+
+ if(ltexth > 0) {
+ hlstart = (lhlstart * pix_available)/ltexth;
+ hlend = (lhlend * pix_available)/ltexth;
+
+ /* the scrollbar is non-linear sized */
+ if(pix_bardiff > 0) {
+ /* the start of the highlight is in the current viewport */
+ if(ltexth && st->viewlines && lhlstart >= st->top && lhlstart <= st->top + st->viewlines) {
+ /* speed the progresion of the start of the highlight through the scrollbar */
+ hlstart = ( ( (pix_available - pix_bardiff) * lhlstart) / ltexth) + (pix_bardiff * (lhlstart - st->top) / st->viewlines);
+ }
+ else if(lhlstart > st->top + st->viewlines && hlstart < barstart + barheight && hlstart > barstart) {
+ /* push hl start down */
+ hlstart = barstart + barheight;
+ }
+ else if(lhlend > st->top && lhlstart < st->top && hlstart > barstart) {
+ /*fill out start */
+ hlstart = barstart;
+ }
+
+ if(hlend <= hlstart) {
+ hlend = hlstart + 2;
+ }
+
+ /* the end of the highlight is in the current viewport */
+ if(ltexth && st->viewlines && lhlend >= st->top && lhlend <= st->top + st->viewlines) {
+ /* speed the progresion of the end of the highlight through the scrollbar */
+ hlend = (((pix_available - pix_bardiff )*lhlend)/ltexth) + (pix_bardiff * (lhlend - st->top)/st->viewlines);
+ }
+ else if(lhlend < st->top && hlend >= barstart - 2 && hlend < barstart + barheight) {
+ /* push hl end up */
+ hlend = barstart;
+ }
+ else if(lhlend > st->top + st->viewlines && lhlstart < st->top + st->viewlines && hlend < barstart + barheight) {
+ /* fill out end */
+ hlend = barstart + barheight;
+ }
+
+ if(hlend <= hlstart) {
+ hlstart = hlend - 2;
+ }
+ }
+ }
+ else {
+ hlstart = 0;
+ hlend = 0;
+ }
+
+ if(hlend - hlstart < 2) {
+ hlend = hlstart + 2;
+ }
+
+ st->txtscroll.xmin= 5;
+ st->txtscroll.xmax= 17;
+ st->txtscroll.ymax= ar->winy - pix_top_margin - hlstart;
+ st->txtscroll.ymin= ar->winy - pix_top_margin - hlend;
+
+ CLAMP(st->txtscroll.ymin, pix_bottom_margin, ar->winy - pix_top_margin);
+ CLAMP(st->txtscroll.ymax, pix_bottom_margin, ar->winy - pix_top_margin);
+}
+
+static void draw_textscroll(SpaceText *st, ARegion *ar)
+{
+ UI_ThemeColorShade(TH_SHADE1, -20);
+ glRecti(2, 2, 20, ar->winy-6);
+ uiEmboss(2, 2, 20, ar->winy-6, 1);
+
+ UI_ThemeColor(TH_SHADE1);
+ glRecti(st->txtbar.xmin, st->txtbar.ymin, st->txtbar.xmax, st->txtbar.ymax);
+
+ UI_ThemeColor(TH_SHADE2);
+ glRecti(st->txtscroll.xmin, st->txtscroll.ymin, st->txtscroll.xmax, st->txtscroll.ymax);
+
+ uiEmboss(st->txtbar.xmin, st->txtbar.ymin, st->txtbar.xmax, st->txtbar.ymax, st->flags & ST_SCROLL_SELECT);
+}
+
+/************************** draw markers **************************/
+
+static void draw_markers(SpaceText *st, ARegion *ar)
+{
+ Text *text= st->text;
+ TextMarker *marker, *next;
+ TextLine *top, *bottom, *line;
+ int offl, offc, i, cy, x1, x2, y1, y2, x, y;
+
+ for(i=st->top, top= text->lines.first; top->next && i>0; i--)
+ top= top->next;
+
+ for(i=st->viewlines-1, bottom=top; bottom->next && i>0; i--)
+ bottom= bottom->next;
+
+ for(marker= text->markers.first; marker; marker= next) {
+ next= marker->next;
+
+ for(cy= 0, line= top; line; cy++, line= line->next) {
+ if(cy+st->top==marker->lineno) {
+ /* Remove broken markers */
+ if(marker->end>line->len || marker->start>marker->end) {
+ BLI_freelinkN(&text->markers, marker);
+ break;
+ }
+
+ wrap_offset(st, ar, line, marker->start, &offl, &offc);
+ x1= get_char_pos(st, line->line, marker->start) - st->left + offc;
+ y1= cy + offl;
+ wrap_offset(st, ar, line, marker->end, &offl, &offc);
+ x2= get_char_pos(st, line->line, marker->end) - st->left + offc;
+ y2= cy + offl;
+
+ glColor3ub(marker->color[0], marker->color[1], marker->color[2]);
+ x= st->showlinenrs ? TXT_OFFSET + TEXTXLOC : TXT_OFFSET;
+ y= ar->winy-3;
+
+ if(y1==y2) {
+ y -= y1*st->lheight;
+ glBegin(GL_LINE_LOOP);
+ glVertex2i(x+x2*text_font_width_character(st)+1, y);
+ glVertex2i(x+x1*text_font_width_character(st)-2, y);
+ glVertex2i(x+x1*text_font_width_character(st)-2, y-st->lheight);
+ glVertex2i(x+x2*text_font_width_character(st)+1, y-st->lheight);
+ glEnd();
+ }
+ else {
+ y -= y1*st->lheight;
+ glBegin(GL_LINE_STRIP);
+ glVertex2i(ar->winx, y);
+ glVertex2i(x+x1*text_font_width_character(st)-2, y);
+ glVertex2i(x+x1*text_font_width_character(st)-2, y-st->lheight);
+ glVertex2i(ar->winx, y-st->lheight);
+ glEnd();
+ y-=st->lheight;
+
+ for(i=y1+1; i<y2; i++) {
+ glBegin(GL_LINES);
+ glVertex2i(x, y);
+ glVertex2i(ar->winx, y);
+ glVertex2i(x, y-st->lheight);
+ glVertex2i(ar->winx, y-st->lheight);
+ glEnd();
+ y-=st->lheight;
+ }
+
+ glBegin(GL_LINE_STRIP);
+ glVertex2i(x, y);
+ glVertex2i(x+x2*text_font_width_character(st)+1, y);
+ glVertex2i(x+x2*text_font_width_character(st)+1, y-st->lheight);
+ glVertex2i(x, y-st->lheight);
+ glEnd();
+ }
+
+ break;
+ }
+
+ if(line==bottom) break;
+ }
+ }
+}
+
+/*********************** draw documentation *******************************/
+
+static void draw_documentation(SpaceText *st, ARegion *ar)
+{
+ TextLine *tmp;
+ char *docs, buf[DOC_WIDTH+1], *p;
+ int len, i, br, lines;
+ int boxw, boxh, l, x, y, top;
+
+ if(!st || !st->text) return;
+ if(!texttool_text_is_active(st->text)) return;
+
+ docs = texttool_docs_get();
+
+ if(!docs) return;
+
+ /* Count the visible lines to the cursor */
+ for(tmp=st->text->curl, l=-st->top; tmp; tmp=tmp->prev, l++);
+ if(l<0) return;
+
+ if(st->showlinenrs) {
+ x= text_font_width_character(st)*(st->text->curc-st->left) + TXT_OFFSET + TEXTXLOC - 4;
+ }
+ else {
+ x= text_font_width_character(st)*(st->text->curc-st->left) + TXT_OFFSET - 4;
+ }
+ if(texttool_suggest_first()) {
+ x += SUGG_LIST_WIDTH*text_font_width_character(st) + 50;
+ }
+
+ top= y= ar->winy - st->lheight*l - 2;
+ len= strlen(docs);
+ boxw= DOC_WIDTH*text_font_width_character(st) + 20;
+ boxh= (DOC_HEIGHT+1)*st->lheight;
+
+ /* Draw panel */
+ UI_ThemeColor(TH_BACK);
+ glRecti(x, y, x+boxw, y-boxh);
+ UI_ThemeColor(TH_SHADE1);
+ glBegin(GL_LINE_LOOP);
+ glVertex2i(x, y);
+ glVertex2i(x+boxw, y);
+ glVertex2i(x+boxw, y-boxh);
+ glVertex2i(x, y-boxh);
+ glEnd();
+ glBegin(GL_LINE_LOOP);
+ glVertex2i(x+boxw-10, y-7);
+ glVertex2i(x+boxw-4, y-7);
+ glVertex2i(x+boxw-7, y-2);
+ glEnd();
+ glBegin(GL_LINE_LOOP);
+ glVertex2i(x+boxw-10, y-boxh+7);
+ glVertex2i(x+boxw-4, y-boxh+7);
+ glVertex2i(x+boxw-7, y-boxh+2);
+ glEnd();
+ UI_ThemeColor(TH_TEXT);
+
+ i= 0; br= DOC_WIDTH; lines= 0; // XXX -doc_scroll;
+ for(p=docs; *p; p++) {
+ if(*p == '\r' && *(++p) != '\n') *(--p)= '\n'; /* Fix line endings */
+ if(*p == ' ' || *p == '\t')
+ br= i;
+ else if(*p == '\n') {
+ buf[i]= '\0';
+ if(lines>=0) {
+ y -= st->lheight;
+ text_draw(st, buf, 0, 0, 1, x+4, y-3, NULL);
+ }
+ i= 0; br= DOC_WIDTH; lines++;
+ }
+ buf[i++]= *p;
+ if(i == DOC_WIDTH) { /* Reached the width, go to last break and wrap there */
+ buf[br]= '\0';
+ if(lines>=0) {
+ y -= st->lheight;
+ text_draw(st, buf, 0, 0, 1, x+4, y-3, NULL);
+ }
+ p -= i-br-1; /* Rewind pointer to last break */
+ i= 0; br= DOC_WIDTH; lines++;
+ }
+ if(lines >= DOC_HEIGHT) break;
+ }
+
+ if(0 /* XXX doc_scroll*/ > 0 && lines < DOC_HEIGHT) {
+ // XXX doc_scroll--;
+ draw_documentation(st, ar);
+ }
+}
+
+/*********************** draw suggestion list *******************************/
+
+static void draw_suggestion_list(SpaceText *st, ARegion *ar)
+{
+ SuggItem *item, *first, *last, *sel;
+ TextLine *tmp;
+ char str[SUGG_LIST_WIDTH+1];
+ int w, boxw=0, boxh, i, l, x, y, b, *top;
+
+ if(!st || !st->text) return;
+ if(!texttool_text_is_active(st->text)) return;
+
+ first = texttool_suggest_first();
+ last = texttool_suggest_last();
+
+ if(!first || !last) return;
+
+ text_pop_suggest_list();
+ sel = texttool_suggest_selected();
+ top = texttool_suggest_top();
+
+ /* Count the visible lines to the cursor */
+ for(tmp=st->text->curl, l=-st->top; tmp; tmp=tmp->prev, l++);
+ if(l<0) return;
+
+ if(st->showlinenrs) {
+ x = text_font_width_character(st)*(st->text->curc-st->left) + TXT_OFFSET + TEXTXLOC - 4;
+ }
+ else {
+ x = text_font_width_character(st)*(st->text->curc-st->left) + TXT_OFFSET - 4;
+ }
+ y = ar->winy - st->lheight*l - 2;
+
+ boxw = SUGG_LIST_WIDTH*text_font_width_character(st) + 20;
+ boxh = SUGG_LIST_SIZE*st->lheight + 8;
+
+ UI_ThemeColor(TH_SHADE1);
+ glRecti(x-1, y+1, x+boxw+1, y-boxh-1);
+ UI_ThemeColor(TH_BACK);
+ glRecti(x, y, x+boxw, y-boxh);
+
+ /* Set the top 'item' of the visible list */
+ for(i=0, item=first; i<*top && item->next; i++, item=item->next);
+
+ for(i=0; i<SUGG_LIST_SIZE && item; i++, item=item->next) {
+
+ y -= st->lheight;
+
+ strncpy(str, item->name, SUGG_LIST_WIDTH);
+ str[SUGG_LIST_WIDTH] = '\0';
+
+ w = text_font_width(st, str);
+
+ if(item == sel) {
+ UI_ThemeColor(TH_SHADE2);
+ glRecti(x+16, y-3, x+16+w, y+st->lheight-3);
+ }
+ b=1; /* b=1 colour block, text is default. b=0 no block, colour text */
+ switch (item->type) {
+ case 'k': UI_ThemeColor(TH_SYNTAX_B); b=0; break;
+ case 'm': UI_ThemeColor(TH_TEXT); break;
+ case 'f': UI_ThemeColor(TH_SYNTAX_L); break;
+ case 'v': UI_ThemeColor(TH_SYNTAX_N); break;
+ case '?': UI_ThemeColor(TH_TEXT); b=0; break;
+ }
+ if(b) {
+ glRecti(x+8, y+2, x+11, y+5);
+ UI_ThemeColor(TH_TEXT);
+ }
+ text_draw(st, str, 0, 0, 1, x+16, y-1, NULL);
+
+ if(item == last) break;
+ }
+}
+
+/*********************** draw cursor ************************/
+
+static void draw_cursor(SpaceText *st, ARegion *ar)
+{
+ Text *text= st->text;
+ int vcurl, vcurc, vsell, vselc, hidden=0;
+ int offl, offc, x, y, w, i;
+
+ /* Draw the selection */
+ if(text->curl!=text->sell || text->curc!=text->selc) {
+ /* Convert all to view space character coordinates */
+ wrap_offset(st, ar, text->curl, text->curc, &offl, &offc);
+ vcurl = txt_get_span(text->lines.first, text->curl) - st->top + offl;
+ vcurc = get_char_pos(st, text->curl->line, text->curc) - st->left + offc;
+ wrap_offset(st, ar, text->sell, text->selc, &offl, &offc);
+ vsell = txt_get_span(text->lines.first, text->sell) - st->top + offl;
+ vselc = get_char_pos(st, text->sell->line, text->selc) - st->left + offc;
+
+ if(vcurc<0) vcurc=0;
+ if(vselc<0) vselc=0, hidden=1;
+
+ UI_ThemeColor(TH_SHADE2);
+ x= st->showlinenrs ? TXT_OFFSET + TEXTXLOC : TXT_OFFSET;
+ y= ar->winy-2;
+
+ if(vcurl==vsell) {
+ y -= vcurl*st->lheight;
+ if(vcurc < vselc)
+ glRecti(x+vcurc*text_font_width_character(st)-1, y, x+vselc*text_font_width_character(st), y-st->lheight);
+ else
+ glRecti(x+vselc*text_font_width_character(st)-1, y, x+vcurc*text_font_width_character(st), y-st->lheight);
+ }
+ else {
+ int froml, fromc, tol, toc;
+
+ if(vcurl < vsell) {
+ froml= vcurl; tol= vsell;
+ fromc= vcurc; toc= vselc;
+ }
+ else {
+ froml= vsell; tol= vcurl;
+ fromc= vselc; toc= vcurc;
+ }
+
+ y -= froml*st->lheight;
+ glRecti(x+fromc*text_font_width_character(st)-1, y, ar->winx, y-st->lheight); y-=st->lheight;
+ for(i=froml+1; i<tol; i++)
+ glRecti(x-4, y, ar->winx, y-st->lheight), y-=st->lheight;
+
+ glRecti(x-4, y, x+toc*text_font_width_character(st), y-st->lheight); y-=st->lheight;
+ }
+ }
+ else {
+ wrap_offset(st, ar, text->sell, text->selc, &offl, &offc);
+ vsell = txt_get_span(text->lines.first, text->sell) - st->top + offl;
+ vselc = get_char_pos(st, text->sell->line, text->selc) - st->left + offc;
+
+ if(vselc<0) {
+ vselc= 0;
+ hidden= 1;
+ }
+ }
+
+ if(!hidden) {
+ /* Draw the cursor itself (we draw the sel. cursor as this is the leading edge) */
+ x= st->showlinenrs ? TXT_OFFSET + TEXTXLOC : TXT_OFFSET;
+ x += vselc*text_font_width_character(st);
+ y= ar->winy-2 - vsell*st->lheight;
+
+ if(st->overwrite) {
+ char ch= text->sell->line[text->selc];
+ if(!ch) ch= ' ';
+ w= text_font_width_character(st);
+ UI_ThemeColor(TH_HILITE);
+ glRecti(x, y-st->lheight-1, x+w, y-st->lheight+1);
+ }
+ else {
+ UI_ThemeColor(TH_HILITE);
+ glRecti(x-1, y, x+1, y-st->lheight);
+ }
+ }
+}
+
+/******************* draw matching brackets *********************/
+
+static void draw_brackets(SpaceText *st, ARegion *ar)
+{
+ TextLine *startl, *endl, *linep;
+ Text *text = st->text;
+ int b, c, startc, endc, find, stack;
+ int viewc, viewl, offl, offc, x, y;
+ char ch;
+
+ if(!text->curl) return;
+
+ startl= text->curl;
+ startc= text->curc;
+ b= text_check_bracket(startl->line[startc]);
+ if(b==0 && startc>0) b = text_check_bracket(startl->line[--startc]);
+ if(b==0) return;
+
+ linep= startl;
+ c= startc;
+ endl= NULL;
+ endc= -1;
+ find= -b;
+ stack= 0;
+
+ if(b>0) {
+ /* opening bracket, search forward for close */
+ c++;
+ while(linep) {
+ while(c<linep->len) {
+ b= text_check_bracket(linep->line[c]);
+ if(b==find) {
+ if(stack==0) {
+ endl= linep;
+ endc= c;
+ break;
+ }
+ stack--;
+ }
+ else if(b==-find) {
+ stack++;
+ }
+ c++;
+ }
+ if(endl) break;
+ linep= linep->next;
+ c= 0;
+ }
+ }
+ else {
+ /* closing bracket, search backward for open */
+ c--;
+ while(linep) {
+ while(c>=0) {
+ b= text_check_bracket(linep->line[c]);
+ if(b==find) {
+ if(stack==0) {
+ endl= linep;
+ endc= c;
+ break;
+ }
+ stack--;
+ }
+ else if(b==-find) {
+ stack++;
+ }
+ c--;
+ }
+ if(endl) break;
+ linep= linep->prev;
+ if(linep) c= linep->len-1;
+ }
+ }
+
+ if(!endl || endc==-1)
+ return;
+
+ UI_ThemeColor(TH_HILITE);
+ x= st->showlinenrs ? TXT_OFFSET + TEXTXLOC : TXT_OFFSET;
+ y= ar->winy - st->lheight;
+
+ /* draw opening bracket */
+ ch= startl->line[startc];
+ wrap_offset(st, ar, startl, startc, &offl, &offc);
+ viewc= get_char_pos(st, startl->line, startc) - st->left + offc;
+
+ if(viewc >= 0){
+ viewl= txt_get_span(text->lines.first, startl) - st->top + offl;
+
+ text_font_draw_character(st, x+viewc*text_font_width_character(st), y-viewl*st->lheight, ch);
+ text_font_draw_character(st, x+viewc*text_font_width_character(st)+1, y-viewl*st->lheight, ch);
+ }
+
+ /* draw closing bracket */
+ ch= endl->line[endc];
+ wrap_offset(st, ar, endl, endc, &offl, &offc);
+ viewc= get_char_pos(st, endl->line, endc) - st->left + offc;
+
+ if(viewc >= 0) {
+ viewl= txt_get_span(text->lines.first, endl) - st->top + offl;
+
+ text_font_draw_character(st, x+viewc*text_font_width_character(st), y-viewl*st->lheight, ch);
+ text_font_draw_character(st, x+viewc*text_font_width_character(st)+1, y-viewl*st->lheight, ch);
+ }
+}
+
+/*********************** main area drawing *************************/
+
+void draw_text_main(SpaceText *st, ARegion *ar)
+{
+ Text *text= st->text;
+ TextLine *tmp;
+ char linenr[12];
+ int i, x, y, linecount= 0;
+
+ /* if no text, nothing to do */
+ if(!text)
+ return;
+
+ /* make sure all the positional pointers exist */
+ if(!text->curl || !text->sell || !text->lines.first || !text->lines.last)
+ txt_clean_text(text);
+
+ if(st->lheight) st->viewlines= (int)ar->winy/st->lheight;
+ else st->viewlines= 0;
+
+ /* update rects for scroll */
+ calc_text_rcts(st, ar);
+
+ /* update syntax formatting if needed */
+ tmp= text->lines.first;
+ for(i= 0; i<st->top && tmp; i++) {
+ if(st->showsyntax && !tmp->format)
+ txt_format_line(st, tmp, 0);
+
+ tmp= tmp->next;
+ linecount++;
+ }
+
+ /* draw line numbers background */
+ if(st->showlinenrs) {
+ UI_ThemeColor(TH_GRID);
+ glRecti(23, 0, (st->lheight==15)? 63: 59, ar->winy - 2);
+ }
+
+ text_font_begin(st);
+
+ /* draw cursor */
+ draw_cursor(st, ar);
+
+ /* draw the text */
+ UI_ThemeColor(TH_TEXT);
+
+ y= ar->winy-st->lheight;
+ x= (st->showlinenrs)? TXT_OFFSET + TEXTXLOC: TXT_OFFSET;
+
+ for(i=0; y>0 && i<st->viewlines && tmp; i++, tmp= tmp->next) {
+ if(st->showsyntax && !tmp->format)
+ txt_format_line(st, tmp, 0);
+
+ if(st->showlinenrs) {
+ /* draw line number */
+ if(tmp == text->curl)
+ UI_ThemeColor(TH_HILITE);
+ else
+ UI_ThemeColor(TH_TEXT);
+
+ if(((float)(i + linecount + 1)/10000.0) < 1.0) {
+ sprintf(linenr, "%4d", i + linecount + 1);
+ text_font_draw(st, TXT_OFFSET - 7, y, linenr);
+ }
+ else {
+ sprintf(linenr, "%5d", i + linecount + 1);
+ text_font_draw(st, TXT_OFFSET - 11, y, linenr);
+ }
+
+ UI_ThemeColor(TH_TEXT);
+ }
+
+ if(st->wordwrap) {
+ /* draw word wrapped text */
+ int lines = text_draw_wrapped(st, tmp->line, x, y, ar->winx-x, tmp->format);
+ y -= lines*st->lheight;
+ }
+ else {
+ /* draw unwrapped text */
+ text_draw(st, tmp->line, st->left, 0, 1, x, y, tmp->format);
+ y -= st->lheight;
+ }
+ }
+
+ /* draw other stuff */
+ draw_brackets(st, ar);
+ draw_markers(st, ar);
+ draw_textscroll(st, ar);
+ draw_documentation(st, ar);
+ draw_suggestion_list(st, ar);
+
+ text_font_end(st);
+}
+
+/************************** update ***************************/
+
+/* Moves the view to the cursor location,
+ also used to make sure the view isnt outside the file */
+void text_update_cursor_moved(SpaceText *st, ARegion *ar)
+{
+ Text *text= st->text;
+ int i, x;
+
+ if(!text || !text->curl) return;
+
+ i= txt_get_span(text->lines.first, text->sell);
+ if(st->top+st->viewlines <= i || st->top > i)
+ st->top= i - st->viewlines/2;
+
+ if(st->wordwrap) {
+ st->left= 0;
+ }
+ else {
+ x= text_draw(st, text->sell->line, st->left, text->selc, 0, 0, 0, NULL);
+
+ if(x==0 || x>ar->winx)
+ st->left= text->curc-0.5*(ar->winx)/text_font_width_character(st);
+ }
+
+ if(st->top < 0) st->top= 0;
+ if(st->left <0) st->left= 0;
+}
+
diff --git a/source/blender/editors/space_text/text_header.c b/source/blender/editors/space_text/text_header.c
index b8898e40f01..ea0005fd716 100644
--- a/source/blender/editors/space_text/text_header.c
+++ b/source/blender/editors/space_text/text_header.c
@@ -26,12 +26,26 @@
* ***** END GPL LICENSE BLOCK *****
*/
+#include <stdlib.h>
#include <string.h>
#include <stdio.h>
+/* file time checking */
+#include <ctype.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#ifndef _WIN32
+#include <unistd.h>
+#else
+#include <io.h>
+#include "BLI_winstuff.h"
+#endif
+
#include "DNA_space_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
+#include "DNA_text_types.h"
#include "DNA_windowmanager_types.h"
#include "MEM_guardedalloc.h"
@@ -39,7 +53,11 @@
#include "BLI_blenlib.h"
#include "BKE_context.h"
+#include "BKE_global.h"
+#include "BKE_library.h"
+#include "BKE_main.h"
#include "BKE_screen.h"
+#include "BKE_text.h"
#include "ED_screen.h"
#include "ED_types.h"
@@ -53,81 +71,591 @@
#include "UI_interface.h"
#include "UI_resources.h"
+#include "UI_text.h"
#include "UI_view2d.h"
+#include "RNA_access.h"
+
+#ifndef DISABLE_PYTHON
+#include "BPY_extern.h"
+// XXX #include "BPY_menus.h"
+#endif
+
#include "text_intern.h"
+#define HEADER_PATH_MAX 260
/* ************************ header area region *********************** */
-static void do_viewmenu(bContext *C, void *arg, int event)
+#ifndef DISABLE_PYTHON
+static void do_text_template_scriptsmenu(bContext *C, void *arg, int event)
{
-
+ // XXX BPY_menu_do_python(PYMENU_SCRIPTTEMPLATE, event);
}
-static uiBlock *dummy_viewmenu(bContext *C, ARegion *ar, void *arg_unused)
+uiBlock *text_template_scriptsmenu(bContext *C, void *args_unused)
{
- ScrArea *curarea= CTX_wm_area(C);
+ ARegion *ar= CTX_wm_region(C);
uiBlock *block;
- short yco= 0, menuwidth=120;
-
- block= uiBeginBlock(C, ar, "dummy_viewmenu", UI_EMBOSSP, UI_HELV);
- uiBlockSetButmFunc(block, do_viewmenu, NULL);
+ // XXX BPyMenu *pym;
+ // int i= 0;
+ // short yco = 20, menuwidth = 120;
- uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Nothing yet", 0, yco-=20,
- menuwidth, 19, NULL, 0.0, 0.0, 1, 3, "");
+ block= uiBeginBlock(C, ar, "text_template_scriptsmenu", UI_EMBOSSP, UI_HELV);
+ uiBlockSetButmFunc(block, do_text_template_scriptsmenu, NULL);
- if(curarea->headertype==HEADERTOP) {
- uiBlockSetDirection(block, UI_DOWN);
- }
- else {
- uiBlockSetDirection(block, UI_TOP);
- uiBlockFlipOrder(block);
- }
+ /* note that we acount for the N previous entries with i+20: */
+ /* XXX for (pym = BPyMenuTable[PYMENU_SCRIPTTEMPLATE]; pym; pym = pym->next, i++) {
+
+ uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, menuwidth, 19,
+ NULL, 0.0, 0.0, 1, i,
+ pym->tooltip?pym->tooltip:pym->filename);
+ }*/
- uiTextBoundsBlock(block, 50);
+ uiBlockSetDirection(block, UI_RIGHT);
+ uiTextBoundsBlock(block, 60);
+
uiEndBlock(C, block);
+ uiDrawBlock(C, block);
+
+ return block;
+}
+
+static void do_text_plugin_scriptsmenu(bContext *C, void *arg, int event)
+{
+ // XXX BPY_menu_do_python(PYMENU_TEXTPLUGIN, event);
+}
+
+uiBlock *text_plugin_scriptsmenu(bContext *C, void *args_unused)
+{
+ ARegion *ar= CTX_wm_region(C);
+ uiBlock *block;
+ // XXX BPyMenu *pym;
+ // int i= 0;
+ // short yco = 20, menuwidth = 120;
+
+ block= uiBeginBlock(C, ar, "text_plugin_scriptsmenu", UI_EMBOSSP, UI_HELV);
+ uiBlockSetButmFunc(block, do_text_plugin_scriptsmenu, NULL);
+ /* note that we acount for the N previous entries with i+20: */
+ /* XXX for (pym = BPyMenuTable[PYMENU_TEXTPLUGIN]; pym; pym = pym->next, i++) {
+
+ uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, menuwidth, 19,
+ NULL, 0.0, 0.0, 1, i,
+ pym->tooltip?pym->tooltip:pym->filename);
+ }*/
+
+ uiBlockSetDirection(block, UI_RIGHT);
+ uiTextBoundsBlock(block, 60);
+
+ uiEndBlock(C, block);
+ uiDrawBlock(C, block);
+
return block;
}
+#endif
+
+static void text_editmenu_viewmenu(bContext *C, uiMenuItem *head, void *arg_unused)
+{
+ uiMenuItemEnumO(head, "Top of File", 0, "TEXT_OT_move", "type", FILE_TOP);
+ uiMenuItemEnumO(head, "Bottom of File", 0, "TEXT_OT_move", "type", FILE_BOTTOM);
+}
+
+static void text_editmenu_selectmenu(bContext *C, uiMenuItem *head, void *arg_unused)
+{
+ uiMenuItemO(head, 0, "TEXT_OT_select_all");
+ uiMenuItemO(head, 0, "TEXT_OT_select_line");
+}
+
+static void text_editmenu_markermenu(bContext *C, uiMenuItem *head, void *arg_unused)
+{
+ uiMenuItemO(head, 0, "TEXT_OT_clear_all_markers");
+ uiMenuItemO(head, 0, "TEXT_OT_next_marker");
+ uiMenuItemO(head, 0, "TEXT_OT_previous_marker");
+}
+
+static void text_formatmenu(bContext *C, uiMenuItem *head, void *arg_unused)
+{
+ uiMenuItemO(head, 0, "TEXT_OT_indent");
+ uiMenuItemO(head, 0, "TEXT_OT_unindent");
+
+ uiMenuSeparator(head);
+
+ uiMenuItemO(head, 0, "TEXT_OT_comment");
+ uiMenuItemO(head, 0, "TEXT_OT_uncomment");
+
+ uiMenuSeparator(head);
+
+ uiMenuLevelEnumO(head, "TEXT_OT_convert_whitespace", "type");
+}
-static void do_text_buttons(bContext *C, void *arg, int event)
+static void text_editmenu_to3dmenu(bContext *C, uiMenuItem *head, void *arg_unused)
{
+ uiMenuItemBooleanO(head, "One Object", 0, "TEXT_OT_to_3d_object", "split_lines", 0);
+ uiMenuItemBooleanO(head, "One Object Per Line", 0, "TEXT_OT_to_3d_object", "split_lines", 1);
+}
+
+static void text_editmenu(bContext *C, uiMenuItem *head, void *arg_unused)
+{
+ uiMenuItemO(head, 0, "ED_OT_undo");
+ uiMenuItemO(head, 0, "ED_OT_redo");
+
+ uiMenuSeparator(head);
+
+ uiMenuItemO(head, 0, "TEXT_OT_cut");
+ uiMenuItemO(head, 0, "TEXT_OT_copy");
+ uiMenuItemO(head, 0, "TEXT_OT_paste");
+
+ uiMenuSeparator(head);
+
+ uiMenuLevel(head, "View", text_editmenu_viewmenu);
+ uiMenuLevel(head, "Select", text_editmenu_selectmenu);
+ uiMenuLevel(head, "Markers", text_editmenu_markermenu);
+
+ uiMenuSeparator(head);
+
+ uiMenuItemO(head, 0, "TEXT_OT_jump");
+ uiMenuItemO(head, 0, "TEXT_OT_find_and_replace");
+
+ uiMenuSeparator(head);
+
+ uiMenuLevel(head, "Text to 3D Object", text_editmenu_to3dmenu);
+}
+
+static void text_filemenu(bContext *C, uiMenuItem *head, void *arg_unused)
+{
+ SpaceText *st= (SpaceText*)CTX_wm_space_data(C);
+ Text *text= st->text;
+
+ uiMenuItemO(head, 0, "TEXT_OT_new");
+ uiMenuItemO(head, 0, "TEXT_OT_open");
+
+ if(text) {
+ uiMenuItemO(head, 0, "TEXT_OT_reload");
+
+ uiMenuSeparator(head);
+
+ uiMenuItemO(head, 0, "TEXT_OT_save");
+ uiMenuItemO(head, 0, "TEXT_OT_save_as");
+
+ if(text->name)
+ uiMenuItemO(head, 0, "TEXT_OT_make_internal");
+
+ uiMenuSeparator(head);
+
+ uiMenuItemO(head, 0, "TEXT_OT_run_script");
+
+#ifndef DISABLE_PYTHON
+ if(BPY_is_pyconstraint(text))
+ uiMenuItemO(head, 0, "TEXT_OT_refresh_pyconstraints");
+#endif
+ }
+
+#ifndef DISABLE_PYTHON
+ // XXX uiMenuSeparator(head);
+
+ // XXX uiDefIconTextBlockBut(block, text_template_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Script Templates", 0, yco-=20, 120, 19, "");
+ // XXX uiDefIconTextBlockBut(block, text_plugin_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Text Plugins", 0, yco-=20, 120, 19, "");
+#endif
+}
+
+/*********************** datablock browse *************************/
+
+static void text_unlink(Main *bmain, Text *text)
+{
+ bScreen *scr;
+ ScrArea *area;
+ SpaceLink *sl;
+
+ /* XXX this ifdef is in fact dangerous, if python is
+ * disabled it will leave invalid pointers in files! */
+
+#ifndef DISABLE_PYTHON
+ // XXX BPY_clear_bad_scriptlinks(text);
+ // XXX BPY_free_pyconstraint_links(text);
+ // XXX free_text_controllers(text);
+
+ /* check if this text was used as script link:
+ * this check function unsets the pointers and returns how many
+ * script links used this Text */
+ if(0) // XXX BPY_text_check_all_scriptlinks (text))
+ ; // XXX notifier: allqueue(REDRAWBUTSSCRIPT, 0);
+
+ /* equivalently for pynodes: */
+ if(0) // XXX nodeDynamicUnlinkText ((ID*)text))
+ ; // XXX notifier: allqueue(REDRAWNODE, 0);
+#endif
+
+ for(scr= bmain->screen.first; scr; scr= scr->id.next) {
+ for(area= scr->areabase.first; area; area= area->next) {
+ for(sl= area->spacedata.first; sl; sl= sl->next) {
+ if(sl->spacetype==SPACE_TEXT) {
+ SpaceText *st= (SpaceText*) sl;
+
+ if(st->text==text) {
+ st->text= NULL;
+ st->top= 0;
+
+ if(st==area->spacedata.first)
+ ED_area_tag_redraw(area);
+ }
+ }
+ }
+ }
+ }
+
+ free_libblock(&bmain->text, text);
+}
+
+static void text_idpoin_handle(bContext *C, ID *id, int event)
+{
+ SpaceText *st= (SpaceText*)CTX_wm_space_data(C);
+ Text *text;
+
switch(event) {
+ case UI_ID_BROWSE:
+ st->text= (Text*)id;
+ st->top= 0;
+
+ text_update_edited(st->text);
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
+
+ ED_undo_push(C, "Browse Text");
+ break;
+ case UI_ID_DELETE:
+ text= st->text;
+
+ /* make the previous text active, if its not there make the next text active */
+ if(text->id.prev) {
+ st->text = text->id.prev;
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
+ }
+ else if(text->id.next) {
+ st->text = text->id.next;
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
+ }
+
+ text_unlink(CTX_data_main(C), text);
+ WM_event_add_notifier(C, NC_TEXT|NA_REMOVED, text);
+
+ ED_undo_push(C, "Delete Text");
+ break;
+ case UI_ID_RENAME:
+ break;
+ case UI_ID_ADD_NEW:
+ WM_operator_name_call(C, "TEXT_OT_new", WM_OP_INVOKE_REGION_WIN, NULL);
+ break;
+ case UI_ID_OPEN:
+ WM_operator_name_call(C, "TEXT_OT_open", WM_OP_INVOKE_REGION_WIN, NULL);
+ break;
}
}
+/********************** header buttons ***********************/
void text_header_buttons(const bContext *C, ARegion *ar)
{
+ bScreen *sc= CTX_wm_screen(C);
+ SpaceText *st= (SpaceText*)CTX_wm_space_data(C);
+ PointerRNA spaceptr;
+ Text *text= st->text;
ScrArea *sa= CTX_wm_area(C);
uiBlock *block;
- int xco, yco= 3;
+ int xco, yco= 3, xmax, oldcol;
+ RNA_pointer_create(&sc->id, &RNA_SpaceTextEditor, st, &spaceptr);
+
block= uiBeginBlock(C, ar, "header buttons", UI_EMBOSS, UI_HELV);
- uiBlockSetHandleFunc(block, do_text_buttons, NULL);
xco= ED_area_header_standardbuttons(C, block, yco);
if((sa->flag & HEADER_NO_PULLDOWN)==0) {
- int xmax;
-
/* pull down menus */
uiBlockSetEmboss(block, UI_EMBOSSP);
- xmax= GetButStringLength("View");
- uiDefPulldownBut(block, dummy_viewmenu, CTX_wm_area(C),
- "View", xco, yco-2, xmax-3, 24, "");
- xco+=XIC+xmax;
+ xmax= GetButStringLength("Text");
+ uiDefMenuBut(block, text_filemenu, NULL, "Text", xco, yco-2, xmax-3, 24, "");
+ xco+=xmax;
+
+ if(text) {
+ xmax= GetButStringLength("Edit");
+ uiDefMenuBut(block, text_editmenu, NULL, "Edit", xco, yco-2, xmax-3, 24, "");
+ xco+=xmax;
+
+ xmax= GetButStringLength("Format");
+ uiDefMenuBut(block, text_formatmenu, NULL, "Format", xco, yco-2, xmax-3, 24, "");
+ xco+=xmax;
+ }
}
uiBlockSetEmboss(block, UI_EMBOSS);
+ uiBlockBeginAlign(block);
+ uiDefIconButR(block, ICONTOG, 0, ICON_LINENUMBERS_OFF, xco, yco,XIC,YIC, &spaceptr, "line_numbers", 0, 0, 0, 0, 0, NULL);
+ uiDefIconButR(block, ICONTOG, 0, ICON_WORDWRAP_OFF, xco+=XIC, yco,XIC,YIC, &spaceptr, "word_wrap", 0, 0, 0, 0, 0, NULL);
+ uiDefIconButR(block, ICONTOG, 0, ICON_SYNTAX_OFF, xco+=XIC, yco,XIC,YIC, &spaceptr, "syntax_highlight", 0, 0, 0, 0, 0, NULL);
+ // uiDefIconButR(block, ICONTOG, 0, ICON_SCRIPTPLUGINS, xco+=XIC, yco,XIC,YIC, &spaceptr, "do_python_plugins", 0, 0, 0, 0, 0, "Enables Python text plugins");
+ uiBlockEndAlign(block);
+
+ /* warning button if text is out of date */
+ if(text && text_file_modified(text)) {
+ xco+= XIC;
+
+ oldcol= uiBlockGetCol(block);
+ uiBlockSetCol(block, TH_REDALERT);
+ uiDefIconButO(block, BUT, "TEXT_OT_resolve_conflict", WM_OP_INVOKE_DEFAULT, ICON_HELP, xco+=XIC,yco,XIC,YIC, "External text is out of sync, click for options to resolve the conflict");
+ uiBlockSetCol(block, oldcol);
+ }
+
+ /* browse text datablock */
+ xco+= 2*XIC;
+ xco= uiDefIDPoinButs(block, CTX_data_main(C), NULL, (ID*)st->text, ID_TXT, NULL, xco, yco,
+ text_idpoin_handle, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_ADD_NEW|UI_ID_OPEN|UI_ID_DELETE);
+ xco+=XIC;
+
+ /*
+ if(st->text) {
+ if(st->text->flags & TXT_ISDIRTY && (st->text->flags & TXT_ISEXT || !(st->text->flags & TXT_ISMEM)))
+ uiDefIconBut(block, BUT,0, ICON_ERROR, xco+=XIC,yco,XIC,YIC, 0, 0, 0, 0, 0, "The text has been changed");
+ if(st->text->flags & TXT_ISEXT)
+ uiDefBut(block, BUT,B_TEXTSTORE, ICON(), xco+=XIC,yco,XIC,YIC, 0, 0, 0, 0, 0, "Stores text in project file");
+ else
+ uiDefBut(block, BUT,B_TEXTSTORE, ICON(), xco+=XIC,yco,XIC,YIC, 0, 0, 0, 0, 0, "Disables storing of text in project file");
+ xco+=10;
+ }
+ */
+
+ /* display settings */
+ if(st->font_id>1) st->font_id= 0;
+ uiDefButR(block, MENU, 0, NULL, xco,yco,100,YIC, &spaceptr, "font_size", 0, 0, 0, 0, 0, NULL);
+ xco+=105;
+
+ uiDefButR(block, NUM, 0, "Tab:", xco,yco,XIC+50,YIC, &spaceptr, "tab_width", 0, 0, 0, 0, 0, NULL);
+ xco+= XIC+50;
+
+ /* file info */
+ if(text) {
+ char fname[HEADER_PATH_MAX], headtxt[HEADER_PATH_MAX+17];
+ int len;
+
+ if(text->name) {
+ len = strlen(text->name);
+ if(len > HEADER_PATH_MAX-1)
+ len = HEADER_PATH_MAX-1;
+ strncpy(fname, text->name, len);
+ fname[len]='\0';
+ if(text->flags & TXT_ISDIRTY)
+ sprintf(headtxt, "File: *%s (unsaved)", fname);
+ else
+ sprintf(headtxt, "File: %s", fname);
+ }
+ else
+ sprintf(headtxt, text->id.lib? "Text: External": "Text: Internal");
+
+ UI_ThemeColor(TH_MENU_TEXT);
+ UI_RasterPos(xco+=XIC, yco+6);
+
+ UI_DrawString(G.font, headtxt, 0);
+ xco += UI_GetStringWidth(G.font, headtxt, 0);
+ }
+
+ uiEndBlock(C, block);
+ uiDrawBlock(C, block);
+
/* always as last */
UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin);
+}
+
+/************************* find & replace ***************************/
+
+void text_find_buttons(const bContext *C, ARegion *ar)
+{
+ bScreen *sc= CTX_wm_screen(C);
+ SpaceText *st= CTX_wm_space_text(C);
+ PointerRNA spaceptr;
+ uiBlock *block;
+ int xco= 5, yco= 3;
+
+ RNA_pointer_create(&sc->id, &RNA_SpaceTextEditor, st, &spaceptr);
+
+ block= uiBeginBlock(C, ar, "find buttons", UI_EMBOSS, UI_HELV);
+
+ /* find */
+ uiBlockBeginAlign(block);
+ uiDefButR(block, TEX, 0, "Find: ", xco, yco,220,20, &spaceptr, "find_text", 0, 0, 0, 0, 0, NULL);
+ xco += 220;
+ uiDefIconButO(block, BUT, "TEXT_OT_find_set_selected", WM_OP_INVOKE_DEFAULT, ICON_TEXT, xco,yco,20,20, "Copy from selection");
+ xco += 20+XIC;
+ uiBlockEndAlign(block);
+
+ /* replace */
+ uiBlockBeginAlign(block);
+ uiDefButR(block, TEX, 0, "Replace: ", xco, yco,220,20, &spaceptr, "replace_text", 0, 0, 0, 0, 0, NULL);
+ xco += 220;
+ uiDefIconButO(block, BUT, "TEXT_OT_replace_set_selected", WM_OP_INVOKE_DEFAULT, ICON_TEXT, xco,yco,20,20, "Copy from selection");
+ xco += 20+XIC;
+ uiBlockEndAlign(block);
+
+ uiBlockBeginAlign(block);
+ uiDefButR(block, TOG, 0, "Wrap", xco, yco,60,20, &spaceptr, "find_wrap", 0, 0, 0, 0, 0, NULL);
+ xco += 60;
+ uiDefButR(block, TOG, 0, "All", xco, yco,60,20, &spaceptr, "find_all", 0, 0, 0, 0, 0, NULL);
+ xco += 50+XIC;
+ uiBlockEndAlign(block);
+
+ uiBlockBeginAlign(block);
+ uiDefButO(block, BUT, "TEXT_OT_find", WM_OP_INVOKE_REGION_WIN, "Find", xco,yco,50,20, "Find next.");
+ xco += 50;
+ uiDefButO(block, BUT, "TEXT_OT_replace", WM_OP_INVOKE_REGION_WIN, "Replace", xco,yco,70,20, "Replace then find next.");
+ xco += 70;
+ uiDefButO(block, BUT, "TEXT_OT_mark_all", WM_OP_INVOKE_REGION_WIN, "Mark All", xco,yco,80,20, "Mark each occurrence to edit all from one");
+ xco += 80;
+ uiBlockEndAlign(block);
uiEndBlock(C, block);
uiDrawBlock(C, block);
+
+ /* always as last */
+ UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin);
}
+ARegion *text_has_find_region(ScrArea *sa)
+{
+ ARegion *ar, *arnew;
+
+ for(ar= sa->regionbase.first; ar; ar= ar->next)
+ if(ar->regiontype==RGN_TYPE_UI)
+ return ar;
+
+ /* add subdiv level; after header */
+ for(ar= sa->regionbase.first; ar; ar= ar->next)
+ if(ar->regiontype==RGN_TYPE_HEADER)
+ break;
+
+ /* is error! */
+ if(ar==NULL) return NULL;
+
+ arnew= MEM_callocN(sizeof(ARegion), "find and replace region");
+
+ BLI_insertlinkafter(&sa->regionbase, ar, arnew);
+ arnew->regiontype= RGN_TYPE_UI;
+ arnew->alignment= RGN_ALIGN_BOTTOM;
+
+ arnew->flag = RGN_FLAG_HIDDEN;
+
+ return arnew;
+}
+
+static int find_and_replace_poll(bContext *C)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text= CTX_data_edit_text(C);
+
+ return (st && text);
+}
+
+static int find_and_replace_exec(bContext *C, wmOperator *op)
+{
+ ScrArea *sa= CTX_wm_area(C);
+ ARegion *ar= text_has_find_region(sa);
+
+ if(ar) {
+ ar->flag ^= RGN_FLAG_HIDDEN;
+ ar->v2d.flag &= ~V2D_IS_INITIALISED; /* XXX should become hide/unhide api? */
+
+ ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa);
+ ED_area_tag_redraw(sa);
+ }
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_find_and_replace(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Find and Replace";
+ ot->idname= "TEXT_OT_find_and_replace";
+
+ /* api callbacks */
+ ot->exec= find_and_replace_exec;
+ ot->poll= find_and_replace_poll;
+}
+
+/******************** XXX popup menus *******************/
+
+#if 0
+{
+ // RMB
+
+ uiMenuItem *head;
+
+ if(text) {
+ head= uiPupMenuBegin("Text", 0);
+ if(txt_has_sel(text)) {
+ uiMenuItemO(head, 0, "TEXT_OT_cut");
+ uiMenuItemO(head, 0, "TEXT_OT_copy");
+ }
+ uiMenuItemO(head, 0, "TEXT_OT_paste");
+ uiMenuItemO(head, 0, "TEXT_OT_new");
+ uiMenuItemO(head, 0, "TEXT_OT_open");
+ uiMenuItemO(head, 0, "TEXT_OT_save");
+ uiMenuItemO(head, 0, "TEXT_OT_save_as");
+ uiMenuItemO(head, 0, "TEXT_OT_run_script");
+ uiPupMenuEnd(C, head);
+ }
+ else {
+ head= uiPupMenuBegin("File", 0);
+ uiMenuItemO(head, 0, "TEXT_OT_new");
+ uiMenuItemO(head, 0, "TEXT_OT_open");
+ uiPupMenuEnd(C, head);
+ }
+}
+
+{
+ // Alt+Shift+E
+
+ uiMenuItem *head;
+
+ head= uiPupMenuBegin("Edit", 0);
+ uiMenuItemO(head, 0, "TEXT_OT_cut");
+ uiMenuItemO(head, 0, "TEXT_OT_copy");
+ uiMenuItemO(head, 0, "TEXT_OT_paste");
+ uiPupMenuEnd(C, head);
+}
+
+{
+ // Alt+Shift+F
+
+ uiMenuItem *head;
+
+ if(text) {
+ head= uiPupMenuBegin("Text", 0);
+ uiMenuItemO(head, 0, "TEXT_OT_new");
+ uiMenuItemO(head, 0, "TEXT_OT_open");
+ uiMenuItemO(head, 0, "TEXT_OT_save");
+ uiMenuItemO(head, 0, "TEXT_OT_save_as");
+ uiMenuItemO(head, 0, "TEXT_OT_run_script");
+ uiPupMenuEnd(C, head);
+ }
+ else {
+ head= uiPupMenuBegin("File", 0);
+ uiMenuItemO(head, 0, "TEXT_OT_new");
+ uiMenuItemO(head, 0, "TEXT_OT_open");
+ uiPupMenuEnd(C, head);
+ }
+}
+
+{
+ // Alt+Shift+V
+
+ uiMenuItem *head;
+
+ head= uiPupMenuBegin("Text", 0);
+ uiMenuItemEnumO(head, "Top of File", 0, "TEXT_OT_move", "type", FILE_TOP);
+ uiMenuItemEnumO(head, "Bottom of File", 0, "TEXT_OT_move", "type", FILE_BOTTOM);
+ uiMenuItemEnumO(head, "Page Up", 0, "TEXT_OT_move", "type", PREV_PAGE);
+ uiMenuItemEnumO(head, "Page Down", 0, "TEXT_OT_move", "type", NEXT_PAGE);
+ uiPupMenuEnd(C, head);
+}
+#endif
diff --git a/source/blender/editors/space_text/text_intern.h b/source/blender/editors/space_text/text_intern.h
index 9fb2f0e07c3..b7e45501047 100644
--- a/source/blender/editors/space_text/text_intern.h
+++ b/source/blender/editors/space_text/text_intern.h
@@ -17,7 +17,7 @@
* along with this program; if not, write to the Free Software Foundation,
* Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
- * The Original Code is Copyright (C) 2008 Blender Foundation.
+ * The Original Code is Copyright (C) 2009 Blender Foundation.
* All rights reserved.
*
*
@@ -30,10 +30,128 @@
/* internal exports only */
+struct ARegion;
+struct bContext;
+struct BMF_Font;
+struct ReportList;
+struct ScrArea;
+struct SpaceText;
+struct Text;
+struct TextLine;
+struct wmOperatorType;
+struct wmWindowManager;
/* text_header.c */
-void text_header_buttons(const bContext *C, ARegion *ar);
+void text_header_buttons(const struct bContext *C, struct ARegion *ar);
+void text_find_buttons(const struct bContext *C, struct ARegion *ar);
+/* text_draw.c */
+void draw_text_main(struct SpaceText *st, struct ARegion *ar);
+
+int text_check_bracket(char ch);
+int text_check_delim(char ch);
+int text_check_digit(char ch);
+int text_check_identifier(char ch);
+int text_check_whitespace(char ch);
+
+int text_font_width_character(struct SpaceText *st);
+int text_font_width(struct SpaceText *st, char *str);
+
+void text_update_line_edited(struct Text *text, struct TextLine *line);
+void text_update_edited(struct Text *text);
+void text_update_cursor_moved(struct SpaceText *st, struct ARegion *ar);
+
+#define TEXTXLOC 38
+
+#define SUGG_LIST_SIZE 7
+#define SUGG_LIST_WIDTH 20
+#define DOC_WIDTH 40
+#define DOC_HEIGHT 10
+
+#define TOOL_SUGG_LIST 0x01
+#define TOOL_DOCUMENT 0x02
+
+#define TMARK_GRP_CUSTOM 0x00010000 /* Lower 2 bytes used for Python groups */
+#define TMARK_GRP_FINDALL 0x00020000
+
+typedef struct FlattenString {
+ char fixedbuf[256];
+ int fixedaccum[256];
+
+ char *buf;
+ int *accum;
+ int pos, len;
+} FlattenString;
+
+int flatten_string(struct SpaceText *st, FlattenString *fs, char *in);
+void flatten_string_free(FlattenString *fs);
+
+void unlink_text(struct Text *text);
+
+int wrap_width(struct SpaceText *st, struct ARegion *ar);
+void wrap_offset(struct SpaceText *st, struct ARegion *ar, struct TextLine *linein, int cursin, int *offl, int *offc);
+
+int text_file_modified(struct Text *text);
+
+int text_do_suggest_select(struct SpaceText *st, struct ARegion *ar);
+void text_pop_suggest_list();
+
+
+/* text_ops.c */
+enum { LINE_BEGIN, LINE_END, FILE_TOP, FILE_BOTTOM, PREV_CHAR, NEXT_CHAR,
+ PREV_WORD, NEXT_WORD, PREV_LINE, NEXT_LINE, PREV_PAGE, NEXT_PAGE };
+enum { DEL_NEXT_CHAR, DEL_PREV_CHAR, DEL_NEXT_WORD, DEL_PREV_WORD };
+
+void TEXT_OT_new(struct wmOperatorType *ot);
+void TEXT_OT_open(struct wmOperatorType *ot);
+void TEXT_OT_reload(struct wmOperatorType *ot);
+void TEXT_OT_save(struct wmOperatorType *ot);
+void TEXT_OT_save_as(struct wmOperatorType *ot);
+void TEXT_OT_make_internal(struct wmOperatorType *ot);
+void TEXT_OT_run_script(struct wmOperatorType *ot);
+void TEXT_OT_refresh_pyconstraints(struct wmOperatorType *ot);
+
+void TEXT_OT_paste(struct wmOperatorType *ot);
+void TEXT_OT_copy(struct wmOperatorType *ot);
+void TEXT_OT_cut(struct wmOperatorType *ot);
+
+void TEXT_OT_convert_whitespace(struct wmOperatorType *ot);
+void TEXT_OT_uncomment(struct wmOperatorType *ot);
+void TEXT_OT_comment(struct wmOperatorType *ot);
+void TEXT_OT_unindent(struct wmOperatorType *ot);
+void TEXT_OT_indent(struct wmOperatorType *ot);
+
+void TEXT_OT_line_break(struct wmOperatorType *ot);
+void TEXT_OT_insert(struct wmOperatorType *ot);
+
+void TEXT_OT_clear_all_markers(struct wmOperatorType *ot);
+void TEXT_OT_next_marker(struct wmOperatorType *ot);
+void TEXT_OT_previous_marker(struct wmOperatorType *ot);
+
+void TEXT_OT_select_line(struct wmOperatorType *ot);
+void TEXT_OT_select_all(struct wmOperatorType *ot);
+
+void TEXT_OT_jump(struct wmOperatorType *ot);
+void TEXT_OT_move(struct wmOperatorType *ot);
+void TEXT_OT_move_select(struct wmOperatorType *ot);
+void TEXT_OT_delete(struct wmOperatorType *ot);
+void TEXT_OT_toggle_overwrite(struct wmOperatorType *ot);
+
+void TEXT_OT_scroll(struct wmOperatorType *ot);
+void TEXT_OT_scroll_bar(struct wmOperatorType *ot);
+void TEXT_OT_set_cursor(struct wmOperatorType *ot);
+void TEXT_OT_line_number(struct wmOperatorType *ot);
+
+void TEXT_OT_find_and_replace(struct wmOperatorType *ot);
+void TEXT_OT_find(struct wmOperatorType *ot);
+void TEXT_OT_find_set_selected(struct wmOperatorType *ot);
+void TEXT_OT_replace(struct wmOperatorType *ot);
+void TEXT_OT_replace_set_selected(struct wmOperatorType *ot);
+void TEXT_OT_mark_all(struct wmOperatorType *ot);
+
+void TEXT_OT_to_3d_object(struct wmOperatorType *ot);
+
+void TEXT_OT_resolve_conflict(struct wmOperatorType *ot);
#endif /* ED_TEXT_INTERN_H */
diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c
new file mode 100644
index 00000000000..a77bea4c640
--- /dev/null
+++ b/source/blender/editors/space_text/text_ops.c
@@ -0,0 +1,2551 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <stdlib.h>
+#include <string.h>
+#include <ctype.h> /* ispunct */
+#include <sys/stat.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "DNA_constraint_types.h"
+#include "DNA_object_types.h"
+#include "DNA_action_types.h"
+#include "DNA_scene_types.h"
+#include "DNA_screen_types.h"
+#include "DNA_space_types.h"
+#include "DNA_text_types.h"
+#include "DNA_windowmanager_types.h"
+
+#include "BLI_blenlib.h"
+#include "PIL_time.h"
+
+#include "BKE_context.h"
+#include "BKE_depsgraph.h"
+#include "BKE_global.h"
+#include "BKE_main.h"
+#include "BKE_report.h"
+#include "BKE_suggestions.h"
+#include "BKE_text.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "ED_curve.h"
+#include "ED_screen.h"
+#include "UI_interface.h"
+#include "UI_resources.h"
+
+#include "RNA_access.h"
+#include "RNA_define.h"
+
+#ifndef DISABLE_PYTHON
+#include "BPY_extern.h"
+#endif
+
+#include "text_intern.h"
+
+/************************ poll ***************************/
+
+static int text_new_poll(bContext *C)
+{
+ return 1;
+}
+
+static int text_valid_poll(bContext *C)
+{
+ return CTX_data_edit_text(C) ? 1:0;
+}
+
+static int text_edit_poll(bContext *C)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ if(!text)
+ return 0;
+
+ if(text->id.lib) {
+ // BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata");
+ return 0;
+ }
+
+ return 1;
+}
+
+static int text_space_edit_poll(bContext *C)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text= CTX_data_edit_text(C);
+
+ if(!st || !text)
+ return 0;
+
+ if(text->id.lib) {
+ // BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata");
+ return 0;
+ }
+
+ return 1;
+}
+
+static int text_region_edit_poll(bContext *C)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text= CTX_data_edit_text(C);
+ ARegion *ar= CTX_wm_region(C);
+
+ if(!st || !text)
+ return 0;
+
+ if(!ar || ar->regiontype != RGN_TYPE_WINDOW)
+ return 0;
+
+ if(text->id.lib) {
+ // BKE_report(op->reports, RPT_ERROR, "Can't edit external libdata");
+ return 0;
+ }
+
+ return 1;
+}
+
+
+/********************** updates *********************/
+
+void text_update_line_edited(Text *text, TextLine *line)
+{
+ if(!line)
+ return;
+
+ /* we just free format here, and let it rebuild during draw */
+ if(line->format) {
+ MEM_freeN(line->format);
+ line->format= NULL;
+ }
+}
+
+void text_update_edited(Text *text)
+{
+ TextLine *line;
+
+ for(line=text->lines.first; line; line=line->next)
+ text_update_line_edited(text, line);
+}
+
+/******************* new operator *********************/
+
+static int new_exec(bContext *C, wmOperator *op)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text;
+
+ text= add_empty_text("Text");
+
+ if(st) {
+ st->text= text;
+ st->top= 0;
+ }
+
+ WM_event_add_notifier(C, NC_TEXT|NA_ADDED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_new(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "New";
+ ot->idname= "TEXT_OT_new";
+
+ /* api callbacks */
+ ot->exec= new_exec;
+ ot->poll= text_new_poll;
+}
+
+/******************* open operator *********************/
+
+static int open_exec(bContext *C, wmOperator *op)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text;
+ char str[FILE_MAX];
+
+ RNA_string_get(op->ptr, "filename", str);
+
+ text= add_text(str, G.sce);
+
+ if(st) {
+ st->text= text;
+ st->top= 0;
+ }
+
+ WM_event_add_notifier(C, NC_TEXT|NA_ADDED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+static int open_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ Text *text= CTX_data_edit_text(C);
+ char *path= (text && text->name)? text->name: G.sce;
+
+ if(RNA_property_is_set(op->ptr, "filename"))
+ return open_exec(C, op);
+
+ RNA_string_set(op->ptr, "filename", path);
+ WM_event_add_fileselect(C, op);
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+void TEXT_OT_open(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Open";
+ ot->idname= "TEXT_OT_open";
+
+ /* api callbacks */
+ ot->exec= open_exec;
+ ot->invoke= open_invoke;
+ ot->poll= text_new_poll;
+
+ /* properties */
+ RNA_def_string_file_path(ot->srna, "filename", "", FILE_MAX, "Filename", "File path of image to open.");
+}
+
+/******************* reload operator *********************/
+
+static int reload_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ if(!reopen_text(text)) {
+ BKE_report(op->reports, RPT_ERROR, "Could not reopen file");
+ return OPERATOR_CANCELLED;
+ }
+
+#ifndef DISABLE_PYTHON
+ if(text->compiled)
+ BPY_free_compiled_text(text);
+
+ text->compiled = NULL;
+#endif
+
+ text_update_edited(text);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_reload(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Reload";
+ ot->idname= "TEXT_OT_reload";
+
+ /* api callbacks */
+ ot->exec= reload_exec;
+ ot->invoke= WM_operator_confirm;
+ ot->poll= text_edit_poll;
+}
+
+/******************* make internal operator *********************/
+
+static int make_internal_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ text->flags |= TXT_ISMEM | TXT_ISDIRTY;
+
+ if(text->name) {
+ MEM_freeN(text->name);
+ text->name= NULL;
+ }
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_make_internal(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Make Internal";
+ ot->idname= "TEXT_OT_make_internal";
+
+ /* api callbacks */
+ ot->exec= make_internal_exec;
+ ot->poll= text_edit_poll;
+}
+
+/******************* save operator *********************/
+
+static int save_poll(bContext *C)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ if(!text_edit_poll(C))
+ return 0;
+
+ return (text->name != NULL && !(text->flags & TXT_ISMEM));
+}
+
+static void txt_write_file(Text *text, ReportList *reports)
+{
+ FILE *fp;
+ TextLine *tmp;
+ struct stat st;
+ int res;
+ char file[FILE_MAXDIR+FILE_MAXFILE];
+
+ BLI_strncpy(file, text->name, FILE_MAXDIR+FILE_MAXFILE);
+ BLI_convertstringcode(file, G.sce);
+
+ fp= fopen(file, "w");
+ if(fp==NULL) {
+ BKE_report(reports, RPT_ERROR, "Unable to save file.");
+ return;
+ }
+
+ tmp= text->lines.first;
+ while(tmp) {
+ if(tmp->next) fprintf(fp, "%s\n", tmp->line);
+ else fprintf(fp, "%s", tmp->line);
+
+ tmp= tmp->next;
+ }
+
+ fclose (fp);
+
+ res= stat(file, &st);
+ text->mtime= st.st_mtime;
+
+ if(text->flags & TXT_ISDIRTY)
+ text->flags ^= TXT_ISDIRTY;
+}
+
+static int save_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ txt_write_file(text, op->reports);
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_save(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Save";
+ ot->idname= "TEXT_OT_save";
+
+ /* api callbacks */
+ ot->exec= save_exec;
+ ot->poll= save_poll;
+}
+
+/******************* save as operator *********************/
+
+static int save_as_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+ char str[FILE_MAX];
+
+ if(!text)
+ return OPERATOR_CANCELLED;
+
+ RNA_string_get(op->ptr, "filename", str);
+
+ if(text->name) MEM_freeN(text->name);
+ text->name= BLI_strdup(str);
+ text->flags &= ~TXT_ISMEM;
+
+ txt_write_file(text, op->reports);
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+static int save_as_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ Text *text= CTX_data_edit_text(C);
+ char *str;
+
+ if(RNA_property_is_set(op->ptr, "filename"))
+ return save_as_exec(C, op);
+
+ if(text->name)
+ str= text->name;
+ else if(text->flags & TXT_ISMEM)
+ str= text->id.name+2;
+ else
+ str= G.sce;
+
+ RNA_string_set(op->ptr, "filename", str);
+ WM_event_add_fileselect(C, op);
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+void TEXT_OT_save_as(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Save As";
+ ot->idname= "TEXT_OT_save_as";
+
+ /* api callbacks */
+ ot->exec= save_as_exec;
+ ot->invoke= save_as_invoke;
+ ot->poll= text_edit_poll;
+
+ /* properties */
+ RNA_def_string_file_path(ot->srna, "filename", "", FILE_MAX, "Filename", "File path to save image to.");
+}
+
+/******************* run script operator *********************/
+
+static int run_script_exec(bContext *C, wmOperator *op)
+{
+#ifdef DISABLE_PYTHON
+ BKE_report(op->reports, RPT_ERROR, "Python disabled in this build");
+
+ return OPERATOR_CANCELLED;
+#else
+ Text *text= CTX_data_edit_text(C);
+
+ if (BPY_run_python_script( C, NULL, text ))
+ return OPERATOR_FINISHED;
+
+ BKE_report(op->reports, RPT_ERROR, "Python script fail, look in the console for now...");
+ return OPERATOR_CANCELLED;
+#endif
+}
+
+void TEXT_OT_run_script(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Run Script";
+ ot->idname= "TEXT_OT_run_script";
+
+ /* api callbacks */
+ ot->exec= run_script_exec;
+ ot->poll= text_edit_poll;
+}
+
+
+/******************* refresh pyconstraints operator *********************/
+
+static int refresh_pyconstraints_exec(bContext *C, wmOperator *op)
+{
+#ifndef DISABLE_PYTHON
+ Text *text= CTX_data_edit_text(C);
+ Scene *scene= CTX_data_scene(C);
+ Object *ob;
+ bConstraint *con;
+ short update;
+
+ /* check all pyconstraints */
+ for(ob= CTX_data_main(C)->object.first; ob; ob= ob->id.next) {
+ update = 0;
+ if(ob->type==OB_ARMATURE && ob->pose) {
+ bPoseChannel *pchan;
+ for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) {
+ for(con = pchan->constraints.first; con; con= con->next) {
+ if(con->type==CONSTRAINT_TYPE_PYTHON) {
+ bPythonConstraint *data = con->data;
+ if(data->text==text) BPY_pyconstraint_update(ob, con);
+ update = 1;
+
+ }
+ }
+ }
+ }
+ for(con = ob->constraints.first; con; con= con->next) {
+ if(con->type==CONSTRAINT_TYPE_PYTHON) {
+ bPythonConstraint *data = con->data;
+ if(data->text==text) BPY_pyconstraint_update(ob, con);
+ update = 1;
+ }
+ }
+
+ if(update) {
+ DAG_object_flush_update(scene, ob, OB_RECALC_DATA);
+ }
+ }
+#endif
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_refresh_pyconstraints(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Refresh PyConstraints";
+ ot->idname= "TEXT_OT_refresh_pyconstraints";
+
+ /* api callbacks */
+ ot->exec= refresh_pyconstraints_exec;
+ ot->poll= text_edit_poll;
+}
+
+/******************* paste operator *********************/
+
+static char *txt_copy_selected(Text *text)
+{
+ TextLine *tmp, *linef, *linel;
+ char *buf= NULL;
+ int charf, charl, length= 0;
+
+ if(!text) return NULL;
+ if(!text->curl) return NULL;
+ if(!text->sell) return NULL;
+
+ if(!txt_has_sel(text)) return NULL;
+
+ if(text->curl==text->sell) {
+ linef= linel= text->curl;
+
+ if(text->curc < text->selc) {
+ charf= text->curc;
+ charl= text->selc;
+ }
+ else{
+ charf= text->selc;
+ charl= text->curc;
+ }
+ }
+ else if(txt_get_span(text->curl, text->sell)<0) {
+ linef= text->sell;
+ linel= text->curl;
+
+ charf= text->selc;
+ charl= text->curc;
+ }
+ else {
+ linef= text->curl;
+ linel= text->sell;
+
+ charf= text->curc;
+ charl= text->selc;
+ }
+
+ if(linef == linel) {
+ length= charl-charf;
+
+ buf= MEM_callocN(length+1, "cut buffera");
+
+ BLI_strncpy(buf, linef->line + charf, length+1);
+ }
+ else {
+ length+= linef->len - charf;
+ length+= charl;
+ length++; /* For the '\n' */
+
+ tmp= linef->next;
+ while(tmp && tmp!= linel) {
+ length+= tmp->len+1;
+ tmp= tmp->next;
+ }
+
+ buf= MEM_callocN(length+1, "cut bufferb");
+
+ strncpy(buf, linef->line+ charf, linef->len-charf);
+ length= linef->len-charf;
+
+ buf[length++]='\n';
+
+ tmp= linef->next;
+ while(tmp && tmp!=linel) {
+ strncpy(buf+length, tmp->line, tmp->len);
+ length+= tmp->len;
+
+ buf[length++]='\n';
+
+ tmp= tmp->next;
+ }
+ strncpy(buf+length, linel->line, charl);
+ length+= charl;
+
+ buf[length]=0;
+ }
+
+ return buf;
+}
+
+static int paste_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+ char *buf;
+ int selection= RNA_boolean_get(op->ptr, "selection");
+
+ buf= WM_clipboard_text_get(selection);
+
+ if(!buf)
+ return OPERATOR_CANCELLED;
+
+ txt_insert_buf(text, buf);
+ text_update_edited(text);
+
+ MEM_freeN(buf);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_paste(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Paste";
+ ot->idname= "TEXT_OT_paste";
+
+ /* api callbacks */
+ ot->exec= paste_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+
+ /* properties */
+ RNA_def_boolean(ot->srna, "selection", 0, "Selection", "Paste text selected elsewhere rather than copied, X11 only.");
+}
+
+/******************* copy operator *********************/
+
+static void txt_copy_clipboard(Text *text)
+{
+ char *buf;
+
+ buf= txt_copy_selected(text);
+
+ if(buf) {
+ WM_clipboard_text_set(buf, 0);
+ MEM_freeN(buf);
+ }
+}
+
+static int copy_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ txt_copy_clipboard(text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_copy(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Copy";
+ ot->idname= "TEXT_OT_copy";
+
+ /* api callbacks */
+ ot->exec= copy_exec;
+ ot->poll= text_edit_poll;
+}
+
+/******************* cut operator *********************/
+
+static int cut_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ txt_copy_clipboard(text);
+ txt_delete_selected(text);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_cut(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Cut";
+ ot->idname= "TEXT_OT_cut";
+
+ /* api callbacks */
+ ot->exec= cut_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* indent operator *********************/
+
+static int indent_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ if(txt_has_sel(text)) {
+ txt_order_cursors(text);
+ indent(text);
+ }
+ else
+ txt_add_char(text, '\t');
+
+ text_update_edited(text);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_indent(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Indent";
+ ot->idname= "TEXT_OT_indent";
+
+ /* api callbacks */
+ ot->exec= indent_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* unindent operator *********************/
+
+static int unindent_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ if(txt_has_sel(text)) {
+ txt_order_cursors(text);
+ unindent(text);
+
+ text_update_edited(text);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+ }
+
+ return OPERATOR_CANCELLED;
+}
+
+void TEXT_OT_unindent(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Unindent";
+ ot->idname= "TEXT_OT_unindent";
+
+ /* api callbacks */
+ ot->exec= unindent_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* line break operator *********************/
+
+static int line_break_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+ int a, curtab;
+
+ // double check tabs before splitting the line
+ curtab= setcurr_tab(text);
+ txt_split_curline(text);
+
+ for(a=0; a < curtab; a++)
+ txt_add_char(text, '\t');
+
+ if(text->curl) {
+ if(text->curl->prev)
+ text_update_line_edited(text, text->curl->prev);
+ text_update_line_edited(text, text->curl);
+ }
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_CANCELLED;
+}
+
+void TEXT_OT_line_break(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Line Break";
+ ot->idname= "TEXT_OT_line_break";
+
+ /* api callbacks */
+ ot->exec= line_break_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* comment operator *********************/
+
+static int comment_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ if(txt_has_sel(text)) {
+ txt_order_cursors(text);
+ comment(text);
+ text_update_edited(text);
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+ return OPERATOR_FINISHED;
+ }
+
+ return OPERATOR_CANCELLED;
+}
+
+void TEXT_OT_comment(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Comment";
+ ot->idname= "TEXT_OT_comment";
+
+ /* api callbacks */
+ ot->exec= comment_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* uncomment operator *********************/
+
+static int uncomment_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ if(txt_has_sel(text)) {
+ txt_order_cursors(text);
+ uncomment(text);
+ text_update_edited(text);
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+ }
+
+ return OPERATOR_CANCELLED;
+}
+
+void TEXT_OT_uncomment(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Uncomment";
+ ot->idname= "TEXT_OT_uncomment";
+
+ /* api callbacks */
+ ot->exec= uncomment_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* convert whitespace operator *********************/
+
+enum { TO_SPACES, TO_TABS };
+static EnumPropertyItem whitespace_type_items[]= {
+ {TO_SPACES, "SPACES", "To Spaces", NULL},
+ {TO_TABS, "TABS", "To Tabs", NULL},
+ {0, NULL, NULL, NULL}};
+
+static int convert_whitespace_exec(bContext *C, wmOperator *op)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text= CTX_data_edit_text(C);
+ TextLine *tmp;
+ FlattenString fs;
+ size_t a, j;
+ char *text_check_line, *new_line;
+ int extra, number; //unknown for now
+ int type= RNA_enum_get(op->ptr, "type");
+
+ tmp = text->lines.first;
+
+ //first convert to all space, this make it alot easier to convert to tabs because there is no mixtures of ' ' && '\t'
+ while(tmp) {
+ text_check_line = tmp->line;
+ number = flatten_string(st, &fs, text_check_line)+1;
+ flatten_string_free(&fs);
+ new_line = MEM_callocN(number, "Converted_Line");
+ j = 0;
+ for(a=0; a < strlen(text_check_line); a++) { //foreach char in line
+ if(text_check_line[a] == '\t') { //checking for tabs
+ //get the number of spaces this tabs is showing
+ //i dont like doing it this way but will look into it later
+ new_line[j] = '\0';
+ number = flatten_string(st, &fs, new_line);
+ flatten_string_free(&fs);
+ new_line[j] = '\t';
+ new_line[j+1] = '\0';
+ number = flatten_string(st, &fs, new_line)-number;
+ flatten_string_free(&fs);
+
+ for(extra = 0; extra < number; extra++) {
+ new_line[j] = ' ';
+ j++;
+ }
+ }
+ else {
+ new_line[j] = text_check_line[a];
+ ++j;
+ }
+ }
+ new_line[j] = '\0';
+ // put new_line in the tmp->line spot still need to try and set the curc correctly
+ if(tmp->line) MEM_freeN(tmp->line);
+ if(tmp->format) MEM_freeN(tmp->format);
+
+ tmp->line = new_line;
+ tmp->len = strlen(new_line);
+ tmp->format = NULL;
+ tmp = tmp->next;
+ }
+
+ if(type == TO_TABS) // Converting to tabs
+ { //start over from the begining
+ tmp = text->lines.first;
+
+ while(tmp) {
+ text_check_line = tmp->line;
+ extra = 0;
+ for(a = 0; a < strlen(text_check_line); a++) {
+ number = 0;
+ for(j = 0; j < (size_t)st->tabnumber; j++) {
+ if((a+j) <= strlen(text_check_line)) { //check to make sure we are not pass the end of the line
+ if(text_check_line[a+j] != ' ') {
+ number = 1;
+ }
+ }
+ }
+ if(!number) { //found all number of space to equal a tab
+ a = a+(st->tabnumber-1);
+ extra = extra+1;
+ }
+ }
+
+ if( extra > 0 ) { //got tabs make malloc and do what you have to do
+ new_line = MEM_callocN(strlen(text_check_line)-(((st->tabnumber*extra)-extra)-1), "Converted_Line");
+ extra = 0; //reuse vars
+ for(a = 0; a < strlen(text_check_line); a++) {
+ number = 0;
+ for(j = 0; j < (size_t)st->tabnumber; j++) {
+ if((a+j) <= strlen(text_check_line)) { //check to make sure we are not pass the end of the line
+ if(text_check_line[a+j] != ' ') {
+ number = 1;
+ }
+ }
+ }
+
+ if(!number) { //found all number of space to equal a tab
+ new_line[extra] = '\t';
+ a = a+(st->tabnumber-1);
+ ++extra;
+
+ }
+ else { //not adding a tab
+ new_line[extra] = text_check_line[a];
+ ++extra;
+ }
+ }
+ new_line[extra] = '\0';
+ // put new_line in the tmp->line spot still need to try and set the curc correctly
+ if(tmp->line) MEM_freeN(tmp->line);
+ if(tmp->format) MEM_freeN(tmp->format);
+
+ tmp->line = new_line;
+ tmp->len = strlen(new_line);
+ tmp->format = NULL;
+ }
+ tmp = tmp->next;
+ }
+ }
+
+ text_update_edited(text);
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_convert_whitespace(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Convert Whitespace";
+ ot->idname= "TEXT_OT_convert_whitespace";
+
+ /* api callbacks */
+ ot->exec= convert_whitespace_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+
+ /* properties */
+ RNA_def_enum(ot->srna, "type", whitespace_type_items, TO_SPACES, "type", "Type of whitespace to convert to.");
+}
+
+/******************* select all operator *********************/
+
+static int select_all_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ txt_sel_all(text);
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_select_all(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Select All";
+ ot->idname= "TEXT_OT_select_all";
+
+ /* api callbacks */
+ ot->exec= select_all_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* select line operator *********************/
+
+static int select_line_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ txt_sel_line(text);
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_select_line(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Select Line";
+ ot->idname= "TEXT_OT_select_line";
+
+ /* api clinebacks */
+ ot->exec= select_line_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* previous marker operator *********************/
+
+static int previous_marker_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+ TextMarker *mrk;
+ int lineno;
+
+ lineno= txt_get_span(text->lines.first, text->curl);
+ mrk= text->markers.last;
+ while(mrk && (mrk->lineno>lineno || (mrk->lineno==lineno && mrk->end > text->curc)))
+ mrk= mrk->prev;
+ if(!mrk) mrk= text->markers.last;
+ if(mrk) {
+ txt_move_to(text, mrk->lineno, mrk->start, 0);
+ txt_move_to(text, mrk->lineno, mrk->end, 1);
+ }
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_previous_marker(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Previous Marker";
+ ot->idname= "TEXT_OT_previous_marker";
+
+ /* api callbacks */
+ ot->exec= previous_marker_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* next marker operator *********************/
+
+static int next_marker_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+ TextMarker *mrk;
+ int lineno;
+
+ lineno= txt_get_span(text->lines.first, text->curl);
+ mrk= text->markers.first;
+ while(mrk && (mrk->lineno<lineno || (mrk->lineno==lineno && mrk->start <= text->curc)))
+ mrk= mrk->next;
+ if(!mrk) mrk= text->markers.first;
+ if(mrk) {
+ txt_move_to(text, mrk->lineno, mrk->start, 0);
+ txt_move_to(text, mrk->lineno, mrk->end, 1);
+ }
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_next_marker(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Next Marker";
+ ot->idname= "TEXT_OT_next_marker";
+
+ /* api callbacks */
+ ot->exec= next_marker_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* clear all markers operator *********************/
+
+static int clear_all_markers_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ txt_clear_markers(text, 0, 0);
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_clear_all_markers(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Clear All Markers";
+ ot->idname= "TEXT_OT_clear_all_markers";
+
+ /* api callbacks */
+ ot->exec= clear_all_markers_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/************************ move operator ************************/
+
+static EnumPropertyItem move_type_items[]= {
+ {LINE_BEGIN, "LINE_BEGIN", "Line Begin", ""},
+ {LINE_END, "LINE_END", "Line End", ""},
+ {FILE_TOP, "FILE_TOP", "File Top", ""},
+ {FILE_BOTTOM, "FILE_BOTTOM", "File Bottom", ""},
+ {PREV_CHAR, "PREVIOUS_CHARACTER", "Previous Character", ""},
+ {NEXT_CHAR, "NEXT_CHARACTER", "Next Character", ""},
+ {PREV_WORD, "PREVIOUS_WORD", "Previous Word", ""},
+ {NEXT_WORD, "NEXT_WORD", "Next Word", ""},
+ {PREV_LINE, "PREVIOUS_LINE", "Previous Line", ""},
+ {NEXT_LINE, "NEXT_LINE", "Next Line", ""},
+ {PREV_PAGE, "PREVIOUS_PAGE", "Previous Page", ""},
+ {NEXT_PAGE, "NEXT_PAGE", "Next Page", ""},
+ {0, NULL, NULL, NULL}};
+
+static void wrap_move_bol(SpaceText *st, ARegion *ar, short sel)
+{
+ Text *text= st->text;
+ int offl, offc, lin;
+
+ lin= txt_get_span(text->lines.first, text->sell);
+ wrap_offset(st, ar, text->sell, text->selc, &offl, &offc);
+
+ if (sel) {
+ txt_undo_add_toop(text, UNDO_STO, lin, text->selc, lin, -offc);
+ text->selc= -offc;
+ } else {
+ txt_undo_add_toop(text, UNDO_CTO, lin, text->curc, lin, -offc);
+ text->curc= -offc;
+ txt_pop_sel(text);
+ }
+}
+
+static void wrap_move_eol(SpaceText *st, ARegion *ar, short sel)
+{
+ Text *text= st->text;
+ int offl, offc, lin, startl, c;
+
+ lin= txt_get_span(text->lines.first, text->sell);
+ wrap_offset(st, ar, text->sell, text->selc, &offl, &offc);
+ startl= offl;
+ c= text->selc;
+ while (offl==startl && text->sell->line[c]!='\0') {
+ c++;
+ wrap_offset(st, ar, text->sell, c, &offl, &offc);
+ } if (offl!=startl) c--;
+
+ if (sel) {
+ txt_undo_add_toop(text, UNDO_STO, lin, text->selc, lin, c);
+ text->selc= c;
+ } else {
+ txt_undo_add_toop(text, UNDO_CTO, lin, text->curc, lin, c);
+ text->curc= c;
+ txt_pop_sel(text);
+ }
+}
+
+static void wrap_move_up(SpaceText *st, ARegion *ar, short sel)
+{
+ Text *text= st->text;
+ int offl, offl_1, offc, fromline, toline, c, target;
+
+ wrap_offset(st, ar, text->sell, 0, &offl_1, &offc);
+ wrap_offset(st, ar, text->sell, text->selc, &offl, &offc);
+ fromline= toline= txt_get_span(text->lines.first, text->sell);
+ target= text->selc + offc;
+
+ if (offl==offl_1) {
+ if (!text->sell->prev) {
+ txt_move_bol(text, sel);
+ return;
+ }
+ toline--;
+ c= text->sell->prev->len; /* End of prev. line */
+ wrap_offset(st, ar, text->sell->prev, c, &offl, &offc);
+ c= -offc+target;
+ } else {
+ c= -offc-1; /* End of prev. line */
+ wrap_offset(st, ar, text->sell, c, &offl, &offc);
+ c= -offc+target;
+ }
+ if (c<0) c=0;
+
+ if (sel) {
+ txt_undo_add_toop(text, UNDO_STO, fromline, text->selc, toline, c);
+ if (toline<fromline) text->sell= text->sell->prev;
+ if(text->sell) {
+ if (c>text->sell->len) c= text->sell->len;
+ text->selc= c;
+ }
+ }
+ else if(text->curl) {
+ txt_undo_add_toop(text, UNDO_CTO, fromline, text->curc, toline, c);
+ if (toline<fromline) text->curl= text->curl->prev;
+ if(text->curl) {
+ if (c>text->curl->len) c= text->curl->len;
+ text->curc= c;
+ txt_pop_sel(text);
+ }
+ }
+}
+
+static void wrap_move_down(SpaceText *st, ARegion *ar, short sel)
+{
+ Text *text= st->text;
+ int offl, startoff, offc, fromline, toline, c, target;
+
+ wrap_offset(st, ar, text->sell, text->selc, &offl, &offc);
+ fromline= toline= txt_get_span(text->lines.first, text->sell);
+ target= text->selc + offc;
+ startoff= offl;
+ c= text->selc;
+ while (offl==startoff && text->sell->line[c]!='\0') {
+ c++;
+ wrap_offset(st, ar, text->sell, c, &offl, &offc);
+ }
+
+ if (text->sell->line[c]=='\0') {
+ if (!text->sell->next) {
+ txt_move_eol(text, sel);
+ return;
+ }
+ toline++;
+ c= target;
+ } else {
+ c += target;
+ if (c > text->sell->len) c= text->sell->len;
+ }
+ if (c<0) c=0;
+
+ if (sel) {
+ txt_undo_add_toop(text, UNDO_STO, fromline, text->selc, toline, c);
+ if (toline>fromline) text->sell= text->sell->next;
+ if(text->sell) {
+ if (c>text->sell->len) c= text->sell->len;
+ text->selc= c;
+ }
+ }
+ else if(text->curl) {
+ txt_undo_add_toop(text, UNDO_CTO, fromline, text->curc, toline, c);
+ if (toline>fromline) text->curl= text->curl->next;
+ if(text->curl) {
+ if (c > text->curl->len) c= text->curl->len;
+ text->curc= c;
+ txt_pop_sel(text);
+ }
+ }
+}
+
+/* Moves the cursor vertically by the specified number of lines.
+ If the destination line is shorter than the current cursor position, the
+ cursor will be positioned at the end of this line.
+
+ This is to replace screen_skip for PageUp/Down operations.
+ */
+static void cursor_skip(Text *text, int lines, int sel)
+{
+ TextLine **linep;
+ int oldl, oldc, *charp;
+
+ if (sel) linep= &text->sell, charp= &text->selc;
+ else linep= &text->curl, charp= &text->curc;
+ oldl= txt_get_span(text->lines.first, *linep);
+ oldc= *charp;
+
+ while (lines>0 && (*linep)->next) {
+ *linep= (*linep)->next;
+ lines--;
+ }
+ while (lines<0 && (*linep)->prev) {
+ *linep= (*linep)->prev;
+ lines++;
+ }
+
+ if (*charp > (*linep)->len) *charp= (*linep)->len;
+
+ if (!sel) txt_pop_sel(text);
+ txt_undo_add_toop(text, sel?UNDO_STO:UNDO_CTO, oldl, oldc, txt_get_span(text->lines.first, *linep), *charp);
+}
+
+static int move_cursor(bContext *C, int type, int select)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text= CTX_data_edit_text(C);
+ ARegion *ar= CTX_wm_region(C);
+
+ /* ensure we have the right region, it's optional */
+ if(ar->regiontype != RGN_TYPE_WINDOW)
+ ar= NULL;
+
+ switch(type) {
+ case LINE_BEGIN:
+ if(st && st->wordwrap && ar) wrap_move_bol(st, ar, select);
+ else txt_move_bol(text, select);
+ break;
+
+ case LINE_END:
+ if(st && st->wordwrap && ar) wrap_move_eol(st, ar, select);
+ else txt_move_eol(text, select);
+ break;
+
+ case FILE_TOP:
+ txt_move_bof(text, select);
+ break;
+
+ case FILE_BOTTOM:
+ txt_move_eof(text, select);
+ break;
+
+ case PREV_WORD:
+ txt_jump_left(text, select);
+ break;
+
+ case NEXT_WORD:
+ txt_jump_right(text, select);
+ break;
+
+ case PREV_CHAR:
+ txt_move_left(text, select);
+ break;
+
+ case NEXT_CHAR:
+ txt_move_right(text, select);
+ break;
+
+ case PREV_LINE:
+ if(st && st->wordwrap && ar) wrap_move_up(st, ar, select);
+ else txt_move_up(text, select);
+ break;
+
+ case NEXT_LINE:
+ if(st && st->wordwrap && ar) wrap_move_down(st, ar, select);
+ else txt_move_down(text, select);
+ break;
+
+ case PREV_PAGE:
+ if(st) cursor_skip(text, -st->viewlines, select);
+ else cursor_skip(text, -10, select);
+ break;
+
+ case NEXT_PAGE:
+ if(st) cursor_skip(text, st->viewlines, select);
+ else cursor_skip(text, 10, select);
+ break;
+ }
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+static int move_exec(bContext *C, wmOperator *op)
+{
+ int type= RNA_enum_get(op->ptr, "type");
+
+ return move_cursor(C, type, 0);
+}
+
+void TEXT_OT_move(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Move Cursor";
+ ot->idname= "TEXT_OT_move";
+
+ /* api callbacks */
+ ot->exec= move_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+
+ /* properties */
+ RNA_def_enum(ot->srna, "type", move_type_items, LINE_BEGIN, "Type", "Where to move cursor to.");
+}
+
+/******************* move select operator ********************/
+
+static int move_select_exec(bContext *C, wmOperator *op)
+{
+ int type= RNA_enum_get(op->ptr, "type");
+
+ return move_cursor(C, type, 1);
+}
+
+void TEXT_OT_move_select(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Move Select";
+ ot->idname= "TEXT_OT_move_select";
+
+ /* api callbacks */
+ ot->exec= move_select_exec;
+ ot->poll= text_space_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+
+ /* properties */
+ RNA_def_enum(ot->srna, "type", move_type_items, LINE_BEGIN, "Type", "Where to move cursor to, to make a selection.");
+}
+
+/******************* jump operator *********************/
+
+static int jump_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+ int line= RNA_int_get(op->ptr, "line");
+ short nlines= txt_get_span(text->lines.first, text->lines.last)+1;
+
+ if(line < 1 || line > nlines)
+ return OPERATOR_CANCELLED;
+
+ txt_move_toline(text, line-1, 0);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+
+ return OPERATOR_FINISHED;
+}
+
+// XXX invoke
+// short tmp= txt_get_span(text->lines.first, text->curl)+1;
+// button(&tmp, 1, nlines, "Jump to line:"))
+
+void TEXT_OT_jump(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Jump";
+ ot->idname= "TEXT_OT_jump";
+
+ /* api callbacks */
+ ot->exec= jump_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+
+ /* properties */
+ RNA_def_int(ot->srna, "line", 1, INT_MAX, 1, "Line", "Line number to jump to.", 1, 10000);
+}
+
+/******************* delete operator **********************/
+
+static EnumPropertyItem delete_type_items[]= {
+ {DEL_NEXT_CHAR, "NEXT_CHARACTER", "Next Character", ""},
+ {DEL_PREV_CHAR, "PREVIOUS_CHARACTER", "Previous Character", ""},
+ {DEL_NEXT_WORD, "NEXT_WORD", "Next Word", ""},
+ {DEL_PREV_WORD, "PREVIOUS_WORD", "Previous Word", ""},
+ {0, NULL, NULL, NULL}};
+
+static int delete_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+ int type= RNA_enum_get(op->ptr, "type");
+
+ if(type == DEL_PREV_WORD)
+ txt_backspace_word(text);
+ else if(type == DEL_PREV_CHAR)
+ txt_backspace_char(text);
+ else if(type == DEL_NEXT_WORD)
+ txt_delete_word(text);
+ else if(type == DEL_NEXT_CHAR)
+ txt_delete_char(text);
+
+ text_update_line_edited(text, text->curl);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_delete(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Delete";
+ ot->idname= "TEXT_OT_delete";
+
+ /* api callbacks */
+ ot->exec= delete_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+
+ /* properties */
+ RNA_def_enum(ot->srna, "type", delete_type_items, DEL_NEXT_CHAR, "Type", "Which part of the text to delete.");
+}
+
+/******************* toggle overwrite operator **********************/
+
+static int toggle_overwrite_exec(bContext *C, wmOperator *op)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+
+ st->overwrite= !st->overwrite;
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_toggle_overwrite(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Toggle Overwrite";
+ ot->idname= "TEXT_OT_toggle_overwrite";
+
+ /* api callbacks */
+ ot->exec= toggle_overwrite_exec;
+ ot->poll= text_space_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+}
+
+/******************* scroll operator **********************/
+
+/* Moves the view vertically by the specified number of lines */
+static void screen_skip(SpaceText *st, int lines)
+{
+ int last;
+
+ st->top += lines;
+
+ last= txt_get_span(st->text->lines.first, st->text->lines.last);
+ last= last - (st->viewlines/2);
+
+ if(st->top>last) st->top= last;
+ if(st->top<0) st->top= 0;
+}
+
+typedef struct TextScroll {
+ short old[2];
+ short hold[2];
+ short delta[2];
+
+ int first;
+ int characters;
+ int lines;
+ int scrollbar;
+} TextScroll;
+
+static int scroll_exec(bContext *C, wmOperator *op)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ int lines= RNA_int_get(op->ptr, "lines");
+
+ if(lines == 0)
+ return OPERATOR_CANCELLED;
+
+ screen_skip(st, lines*U.wheellinescroll);
+
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, st->text);
+
+ return OPERATOR_FINISHED;
+}
+
+static int scroll_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ TextScroll *tsc;
+
+ if(RNA_property_is_set(op->ptr, "lines"))
+ return scroll_exec(C, op);
+
+ tsc= MEM_callocN(sizeof(TextScroll), "TextScroll");
+ tsc->first= 1;
+ op->customdata= tsc;
+
+ st->flags|= ST_SCROLL_SELECT;
+
+ WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+static void scroll_apply(bContext *C, wmOperator *op, wmEvent *event)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ TextScroll *tsc= op->customdata;
+ short *mval= event->mval;
+
+ if(tsc->first) {
+ tsc->old[0]= mval[0];
+ tsc->old[1]= mval[1];
+ tsc->hold[0]= mval[0];
+ tsc->hold[1]= mval[1];
+ tsc->first= 0;
+ }
+
+ if(!tsc->scrollbar) {
+ tsc->delta[0]= (tsc->hold[0]-mval[0])/text_font_width_character(st);
+ tsc->delta[1]= (mval[1]-tsc->hold[1])/st->lheight;
+ }
+ else
+ tsc->delta[1]= (tsc->hold[1]-mval[1])*st->pix_per_line;
+
+ if(tsc->delta[0] || tsc->delta[1]) {
+ screen_skip(st, tsc->delta[1]);
+
+ tsc->lines += tsc->delta[1];
+
+ if(st->wordwrap) {
+ st->left= 0;
+ }
+ else {
+ st->left+= tsc->delta[0];
+ if(st->left<0) st->left= 0;
+ }
+
+ tsc->hold[0]= mval[0];
+ tsc->hold[1]= mval[1];
+
+ ED_area_tag_redraw(CTX_wm_area(C));
+ }
+
+ tsc->old[0]= mval[0];
+ tsc->old[1]= mval[1];
+}
+
+static void scroll_exit(bContext *C, wmOperator *op)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+
+ st->flags &= ~ST_SCROLL_SELECT;
+ MEM_freeN(op->customdata);
+}
+
+static int scroll_modal(bContext *C, wmOperator *op, wmEvent *event)
+{
+ switch(event->type) {
+ case MOUSEMOVE:
+ scroll_apply(C, op, event);
+ break;
+ case LEFTMOUSE:
+ case RIGHTMOUSE:
+ case MIDDLEMOUSE:
+ scroll_exit(C, op);
+ return OPERATOR_FINISHED;
+ }
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+static int scroll_cancel(bContext *C, wmOperator *op)
+{
+ scroll_exit(C, op);
+
+ return OPERATOR_CANCELLED;
+}
+
+void TEXT_OT_scroll(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Scroll";
+ ot->idname= "TEXT_OT_scroll";
+
+ /* api callbacks */
+ ot->exec= scroll_exec;
+ ot->invoke= scroll_invoke;
+ ot->modal= scroll_modal;
+ ot->cancel= scroll_cancel;
+ ot->poll= text_space_edit_poll;
+
+ /* properties */
+ RNA_def_int(ot->srna, "lines", INT_MIN, INT_MAX, 1, "Lines", "Number of lines to scroll.", -100, 100);
+}
+
+/******************** scroll bar operator *******************/
+
+static int scroll_bar_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ ARegion *ar= CTX_wm_region(C);
+ TextScroll *tsc;
+ short *mval= event->mval;
+
+ if(RNA_property_is_set(op->ptr, "lines"))
+ return scroll_exec(C, op);
+
+ /* verify we are in the right zone */
+ if(!(mval[0]>2 && mval[0]<20 && mval[1]>2 && mval[1]<ar->winy))
+ return OPERATOR_PASS_THROUGH;
+
+ tsc= MEM_callocN(sizeof(TextScroll), "TextScroll");
+ tsc->first= 1;
+ tsc->scrollbar= 1;
+ op->customdata= tsc;
+
+ st->flags|= ST_SCROLL_SELECT;
+
+ WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+void TEXT_OT_scroll_bar(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Scrollbar";
+ ot->idname= "TEXT_OT_scroll_bar";
+
+ /* api callbacks */
+ ot->invoke= scroll_bar_invoke;
+ ot->modal= scroll_modal;
+ ot->cancel= scroll_cancel;
+ ot->poll= text_region_edit_poll;
+
+ /* properties */
+ RNA_def_int(ot->srna, "lines", INT_MIN, INT_MAX, 1, "Lines", "Number of lines to scroll.", -100, 100);
+}
+
+/******************* set cursor operator **********************/
+
+typedef struct SetCursor {
+ int selecting;
+ int selc, sell;
+ short old[2];
+} SetCursor;
+
+static void set_cursor_to_pos(SpaceText *st, ARegion *ar, int x, int y, int sel)
+{
+ FlattenString fs;
+ Text *text= st->text;
+ TextLine **linep;
+ int *charp;
+ int w;
+
+ if(sel) { linep= &text->sell; charp= &text->selc; }
+ else { linep= &text->curl; charp= &text->curc; }
+
+ y= (ar->winy - y)/st->lheight;
+
+ if(st->showlinenrs)
+ x-= TXT_OFFSET+TEXTXLOC;
+ else
+ x-= TXT_OFFSET;
+
+ if(x<0) x= 0;
+ x = (x/text_font_width_character(st)) + st->left;
+
+ if(st->wordwrap) {
+ int i, j, endj, curs, max, chop, start, end, chars, loop;
+ char ch;
+
+ /* Point to first visible line */
+ *linep= text->lines.first;
+ for(i=0; i<st->top && (*linep)->next; i++) *linep= (*linep)->next;
+
+ max= wrap_width(st, ar);
+
+ loop= 1;
+ while(loop && *linep) {
+ start= 0;
+ end= max;
+ chop= 1;
+ chars= 0;
+ curs= 0;
+ endj= 0;
+ for(i=0, j=0; loop; j++) {
+
+ /* Mimic replacement of tabs */
+ ch= (*linep)->line[j];
+ if(ch=='\t') {
+ chars= st->tabnumber-i%st->tabnumber;
+ ch= ' ';
+ }
+ else
+ chars= 1;
+
+ while(chars--) {
+ /* Gone too far, go back to last wrap point */
+ if(y<0) {
+ *charp= endj;
+ loop= 0;
+ break;
+ /* Exactly at the cursor, done */
+ }
+ else if(y==0 && i-start==x) {
+ *charp= curs= j;
+ loop= 0;
+ break;
+ /* Prepare curs for next wrap */
+ }
+ else if(i-end==x) {
+ curs= j;
+ }
+ if(i-start>=max) {
+ if(chop) endj= j;
+ y--;
+ start= end;
+ end += max;
+ chop= 1;
+ if(y==0 && i-start>=x) {
+ *charp= curs;
+ loop= 0;
+ break;
+ }
+ }
+ else if(ch==' ' || ch=='-' || ch=='\0') {
+ if(y==0 && i-start>=x) {
+ *charp= curs;
+ loop= 0;
+ break;
+ }
+ end = i+1;
+ endj = j;
+ chop= 0;
+ }
+ i++;
+ }
+ if(ch=='\0') break;
+ }
+ if(!loop || y<0) break;
+
+ if(!(*linep)->next) {
+ *charp= (*linep)->len;
+ break;
+ }
+
+ /* On correct line but didn't meet cursor, must be at end */
+ if(y==0) {
+ *charp= (*linep)->len;
+ break;
+ }
+ *linep= (*linep)->next;
+ y--;
+ }
+
+ }
+ else {
+ y-= txt_get_span(text->lines.first, *linep) - st->top;
+
+ if(y>0) {
+ while(y-- != 0) if((*linep)->next) *linep= (*linep)->next;
+ }
+ else if(y<0) {
+ while(y++ != 0) if((*linep)->prev) *linep= (*linep)->prev;
+ }
+
+
+ w= flatten_string(st, &fs, (*linep)->line);
+ if(x<w) *charp= fs.accum[x];
+ else *charp= (*linep)->len;
+ flatten_string_free(&fs);
+ }
+ if(!sel) txt_pop_sel(text);
+}
+
+static void set_cursor_apply(bContext *C, wmOperator *op, wmEvent *event)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ ARegion *ar= CTX_wm_region(C);
+ SetCursor *scu= op->customdata;
+
+ if(event->mval[1]<0 || event->mval[1]>ar->winy) {
+ int d= (scu->old[1]-event->mval[1])*st->pix_per_line;
+ if(d) screen_skip(st, d);
+
+ set_cursor_to_pos(st, ar, event->mval[0], event->mval[1]<0?0:ar->winy, 1);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
+ }
+ else if(!st->wordwrap && (event->mval[0]<0 || event->mval[0]>ar->winx)) {
+ if(event->mval[0]>ar->winx) st->left++;
+ else if(event->mval[0]<0 && st->left>0) st->left--;
+
+ set_cursor_to_pos(st, ar, event->mval[0], event->mval[1], 1);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
+ // XXX PIL_sleep_ms(10);
+ }
+ else {
+ set_cursor_to_pos(st, ar, event->mval[0], event->mval[1], 1);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
+
+ scu->old[0]= event->mval[0];
+ scu->old[1]= event->mval[1];
+ }
+}
+
+static void set_cursor_exit(bContext *C, wmOperator *op)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text= st->text;
+ SetCursor *scu= op->customdata;
+ int linep2, charp2;
+ char *buffer;
+
+ if(txt_has_sel(text)) {
+ buffer = txt_sel_to_buf(text);
+ WM_clipboard_text_set(buffer, 1);
+ MEM_freeN(buffer);
+ }
+
+ linep2= txt_get_span(st->text->lines.first, st->text->sell);
+ charp2= st->text->selc;
+
+ if(scu->sell!=linep2 || scu->selc!=charp2)
+ txt_undo_add_toop(st->text, UNDO_STO, scu->sell, scu->selc, linep2, charp2);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, st->text);
+
+ MEM_freeN(scu);
+}
+
+static int set_cursor_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ ARegion *ar= CTX_wm_region(C);
+ SetCursor *scu;
+
+ op->customdata= MEM_callocN(sizeof(SetCursor), "SetCursor");
+ scu= op->customdata;
+ scu->selecting= RNA_boolean_get(op->ptr, "select");
+
+ scu->old[0]= event->mval[0];
+ scu->old[1]= event->mval[1];
+
+ if(!scu->selecting) {
+ int curl= txt_get_span(st->text->lines.first, st->text->curl);
+ int curc= st->text->curc;
+ int linep2, charp2;
+
+ set_cursor_to_pos(st, ar, event->mval[0], event->mval[1], 0);
+
+ linep2= txt_get_span(st->text->lines.first, st->text->curl);
+ charp2= st->text->selc;
+
+ if(curl!=linep2 || curc!=charp2)
+ txt_undo_add_toop(st->text, UNDO_CTO, curl, curc, linep2, charp2);
+ }
+
+ scu->sell= txt_get_span(st->text->lines.first, st->text->sell);
+ scu->selc= st->text->selc;
+
+ WM_event_add_modal_handler(C, &CTX_wm_window(C)->handlers, op);
+
+ set_cursor_apply(C, op, event);
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+static int set_cursor_modal(bContext *C, wmOperator *op, wmEvent *event)
+{
+ switch(event->type) {
+ case LEFTMOUSE:
+ case MIDDLEMOUSE:
+ case RIGHTMOUSE:
+ set_cursor_exit(C, op);
+ return OPERATOR_FINISHED;
+ case MOUSEMOVE:
+ set_cursor_apply(C, op, event);
+ break;
+ }
+
+ return OPERATOR_RUNNING_MODAL;
+}
+
+static int set_cursor_cancel(bContext *C, wmOperator *op)
+{
+ set_cursor_exit(C, op);
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_set_cursor(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Set Cursor";
+ ot->idname= "TEXT_OT_set_cursor";
+
+ /* api callbacks */
+ ot->invoke= set_cursor_invoke;
+ ot->modal= set_cursor_modal;
+ ot->cancel= set_cursor_cancel;
+ ot->poll= text_region_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+
+ /* properties */
+ RNA_def_boolean(ot->srna, "select", 0, "Select", "Set selection end rather than cursor.");
+}
+
+/******************* line number operator **********************/
+
+static int line_number_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text= CTX_data_edit_text(C);
+ ARegion *ar= CTX_wm_region(C);
+ short *mval= event->mval;
+ double time;
+ static int jump_to= 0;
+ static double last_jump= 0;
+
+ if(!st->showlinenrs)
+ return OPERATOR_PASS_THROUGH;
+
+ if(!(mval[0]>2 && mval[0]<60 && mval[1]>2 && mval[1]<ar->winy-2))
+ return OPERATOR_PASS_THROUGH;
+
+ if(!(event->ascii>='0' && event->ascii<='9'))
+ return OPERATOR_PASS_THROUGH;
+
+ time = PIL_check_seconds_timer();
+ if(last_jump < time-1)
+ jump_to= 0;
+
+ jump_to *= 10;
+ jump_to += (int)(event->ascii-'0');
+
+ txt_move_toline(text, jump_to-1, 0);
+ last_jump= time;
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_line_number(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Line Number";
+ ot->idname= "TEXT_OT_line_number";
+
+ /* api callbacks */
+ ot->invoke= line_number_invoke;
+ ot->poll= text_region_edit_poll;
+}
+
+/******************* insert operator **********************/
+
+static int insert_exec(bContext *C, wmOperator *op)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text= CTX_data_edit_text(C);
+ char *str;
+ int done, ascii;
+
+ str= RNA_string_get_alloc(op->ptr, "text", NULL, 0);
+ ascii= str[0];
+ MEM_freeN(str);
+
+ if(!ascii)
+ return OPERATOR_CANCELLED;
+
+ if(st && st->overwrite)
+ done= txt_replace_char(text, ascii);
+ else
+ done= txt_add_char(text, ascii);
+
+ if(!done)
+ return OPERATOR_CANCELLED;
+
+ text_update_line_edited(text, text->curl);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+
+ return OPERATOR_FINISHED;
+}
+
+static int insert_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ char str[2];
+
+ /* XXX old code from winqreadtextspace, is it still needed somewhere? */
+ /* smartass code to prevent the CTRL/ALT events below from not working! */
+ /*if(qual & (LR_ALTKEY|LR_CTRLKEY))
+ if(!ispunct(ascii))
+ ascii= 0;*/
+
+ str[0]= event->ascii;
+ str[1]= '\0';
+
+ RNA_string_set(op->ptr, "text", str);
+
+ return insert_exec(C, op);
+}
+
+void TEXT_OT_insert(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Insert";
+ ot->idname= "TEXT_OT_insert";
+
+ /* api callbacks */
+ ot->exec= insert_exec;
+ ot->invoke= insert_invoke;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER;
+
+ /* properties */
+ RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position.");
+}
+
+/******************* find operator *********************/
+
+/* mode */
+#define TEXT_FIND 0
+#define TEXT_REPLACE 1
+#define TEXT_MARK_ALL 2
+
+static int find_and_replace(bContext *C, wmOperator *op, short mode)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *start= NULL, *text= st->text;
+ int flags, first= 1;
+ char *tmp;
+
+ if(!st->findstr[0] || (mode == TEXT_REPLACE && !st->replacestr[0]))
+ return OPERATOR_CANCELLED;
+
+ flags= st->flags;
+ if(flags & ST_FIND_ALL)
+ flags ^= ST_FIND_WRAP;
+
+ do {
+ if(first)
+ txt_clear_markers(text, TMARK_GRP_FINDALL, 0);
+
+ first= 0;
+
+ /* Replace current */
+ if(mode!=TEXT_FIND && txt_has_sel(text)) {
+ tmp= txt_sel_to_buf(text);
+
+ if(strcmp(st->findstr, tmp)==0) {
+ if(mode==TEXT_REPLACE) {
+ txt_insert_buf(text, st->replacestr);
+ if(text->curl && text->curl->format) {
+ MEM_freeN(text->curl->format);
+ text->curl->format= NULL;
+ }
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+ }
+ else if(mode==TEXT_MARK_ALL) {
+ char color[4];
+ UI_GetThemeColor4ubv(TH_SHADE2, color);
+
+ if(txt_find_marker(text, text->curl, text->selc, TMARK_GRP_FINDALL, 0)) {
+ if(tmp) MEM_freeN(tmp), tmp=NULL;
+ break;
+ }
+
+ txt_add_marker(text, text->curl, text->curc, text->selc, color, TMARK_GRP_FINDALL, TMARK_EDITALL);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+ }
+ }
+ MEM_freeN(tmp);
+ tmp= NULL;
+ }
+
+ /* Find next */
+ if(txt_find_string(text, st->findstr, flags & ST_FIND_WRAP)) {
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ }
+ else if(flags & ST_FIND_ALL) {
+ if(text==start) break;
+ if(!start) start= text;
+ if(text->id.next)
+ text= st->text= text->id.next;
+ else
+ text= st->text= G.main->text.first;
+ txt_move_toline(text, 0, 0);
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ first= 1;
+ }
+ else {
+ BKE_reportf(op->reports, RPT_INFO, "Text not found: %s", st->findstr);
+ break;
+ }
+ } while(mode==TEXT_MARK_ALL);
+
+ return OPERATOR_FINISHED;
+}
+
+static int find_exec(bContext *C, wmOperator *op)
+{
+ return find_and_replace(C, op, TEXT_FIND);
+}
+
+void TEXT_OT_find(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Find";
+ ot->idname= "TEXT_OT_find";
+
+ /* api callbacks */
+ ot->exec= find_exec;
+ ot->poll= text_space_edit_poll;
+}
+
+/******************* replace operator *********************/
+
+static int replace_exec(bContext *C, wmOperator *op)
+{
+ return find_and_replace(C, op, TEXT_REPLACE);
+}
+
+void TEXT_OT_replace(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Replace";
+ ot->idname= "TEXT_OT_replace";
+
+ /* api callbacks */
+ ot->exec= replace_exec;
+ ot->poll= text_space_edit_poll;
+}
+
+/******************* mark all operator *********************/
+
+static int mark_all_exec(bContext *C, wmOperator *op)
+{
+ return find_and_replace(C, op, TEXT_MARK_ALL);
+}
+
+void TEXT_OT_mark_all(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Mark All";
+ ot->idname= "TEXT_OT_mark_all";
+
+ /* api callbacks */
+ ot->exec= mark_all_exec;
+ ot->poll= text_space_edit_poll;
+}
+
+/******************* find set selected *********************/
+
+static int find_set_selected_exec(bContext *C, wmOperator *op)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text= CTX_data_edit_text(C);
+ char *tmp;
+
+ tmp= txt_sel_to_buf(text);
+ BLI_strncpy(st->findstr, tmp, ST_MAX_FIND_STR);
+ MEM_freeN(tmp);
+
+ if(!st->findstr[0])
+ return OPERATOR_FINISHED;
+
+ return find_and_replace(C, op, TEXT_FIND);
+}
+
+void TEXT_OT_find_set_selected(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Find Set Selected";
+ ot->idname= "TEXT_OT_find_set_selected";
+
+ /* api callbacks */
+ ot->exec= find_set_selected_exec;
+ ot->poll= text_space_edit_poll;
+}
+
+/******************* replace set selected *********************/
+
+static int replace_set_selected_exec(bContext *C, wmOperator *op)
+{
+ SpaceText *st= CTX_wm_space_text(C);
+ Text *text= CTX_data_edit_text(C);
+ char *tmp;
+
+ tmp= txt_sel_to_buf(text);
+ BLI_strncpy(st->replacestr, tmp, ST_MAX_FIND_STR);
+ MEM_freeN(tmp);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_replace_set_selected(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Replace Set Selected";
+ ot->idname= "TEXT_OT_replace_set_selected";
+
+ /* api callbacks */
+ ot->exec= replace_set_selected_exec;
+ ot->poll= text_space_edit_poll;
+}
+
+/****************** resolve conflict operator ******************/
+
+enum { RESOLVE_IGNORE, RESOLVE_RELOAD, RESOLVE_SAVE, RESOLVE_MAKE_INTERNAL };
+static EnumPropertyItem resolution_items[]= {
+ {RESOLVE_IGNORE, "IGNORE", "Ignore", ""},
+ {RESOLVE_RELOAD, "RELOAD", "Reload", ""},
+ {RESOLVE_SAVE, "SAVE", "Save", ""},
+ {RESOLVE_MAKE_INTERNAL, "MAKE_INTERNAL", "Make Internal", ""},
+ {0, NULL, NULL, NULL}};
+
+/* returns 0 if file on disk is the same or Text is in memory only
+ returns 1 if file has been modified on disk since last local edit
+ returns 2 if file on disk has been deleted
+ -1 is returned if an error occurs */
+
+int text_file_modified(Text *text)
+{
+ struct stat st;
+ int result;
+ char file[FILE_MAXDIR+FILE_MAXFILE];
+
+ if(!text || !text->name)
+ return 0;
+
+ BLI_strncpy(file, text->name, FILE_MAXDIR+FILE_MAXFILE);
+ BLI_convertstringcode(file, G.sce);
+
+ if(!BLI_exists(file))
+ return 2;
+
+ result = stat(file, &st);
+
+ if(result == -1)
+ return -1;
+
+ if((st.st_mode & S_IFMT) != S_IFREG)
+ return -1;
+
+ if(st.st_mtime > text->mtime)
+ return 1;
+
+ return 0;
+}
+
+static void text_ignore_modified(Text *text)
+{
+ struct stat st;
+ int result;
+ char file[FILE_MAXDIR+FILE_MAXFILE];
+
+ if(!text || !text->name) return;
+
+ BLI_strncpy(file, text->name, FILE_MAXDIR+FILE_MAXFILE);
+ BLI_convertstringcode(file, G.sce);
+
+ if(!BLI_exists(file)) return;
+
+ result = stat(file, &st);
+
+ if(result == -1 || (st.st_mode & S_IFMT) != S_IFREG)
+ return;
+
+ text->mtime= st.st_mtime;
+}
+
+static int resolve_conflict_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+ int resolution= RNA_enum_get(op->ptr, "resolution");
+
+ switch(resolution) {
+ case RESOLVE_RELOAD:
+ return reload_exec(C, op);
+ case RESOLVE_SAVE:
+ return save_exec(C, op);
+ case RESOLVE_MAKE_INTERNAL:
+ return make_internal_exec(C, op);
+ case RESOLVE_IGNORE:
+ text_ignore_modified(text);
+ return OPERATOR_FINISHED;
+ }
+
+ return OPERATOR_CANCELLED;
+}
+
+static int resolve_conflict_invoke(bContext *C, wmOperator *op, wmEvent *event)
+{
+ Text *text= CTX_data_edit_text(C);
+ uiMenuItem *head;
+
+ switch(text_file_modified(text)) {
+ case 1:
+ if(text->flags & TXT_ISDIRTY) {
+ /* modified locally and externally, ahhh. offer more possibilites. */
+ head= uiPupMenuBegin("File Modified Outside and Inside Blender", 0);
+ uiMenuItemEnumO(head, "Reload from disk (ignore local changes)", 0, op->type->idname, "resolution", RESOLVE_RELOAD);
+ uiMenuItemEnumO(head, "Save to disk (ignore outside changes)", 0, op->type->idname, "resolution", RESOLVE_SAVE);
+ uiMenuItemEnumO(head, "Make text internal (separate copy)", 0, op->type->idname, "resolution", RESOLVE_MAKE_INTERNAL);
+ uiPupMenuEnd(C, head);
+ }
+ else {
+ head= uiPupMenuBegin("File Modified Outside Blender", 0);
+ uiMenuItemEnumO(head, "Reload from disk", 0, op->type->idname, "resolution", RESOLVE_RELOAD);
+ uiMenuItemEnumO(head, "Make text internal (separate copy)", 0, op->type->idname, "resolution", RESOLVE_MAKE_INTERNAL);
+ uiMenuItemEnumO(head, "Ignore", 0, op->type->idname, "resolution", RESOLVE_IGNORE);
+ uiPupMenuEnd(C, head);
+ }
+ break;
+ case 2:
+ head= uiPupMenuBegin("File Deleted Outside Blender", 0);
+ uiMenuItemEnumO(head, "Make text internal", 0, op->type->idname, "resolution", RESOLVE_MAKE_INTERNAL);
+ uiMenuItemEnumO(head, "Recreate file", 0, op->type->idname, "resolution", RESOLVE_SAVE);
+ uiPupMenuEnd(C, head);
+ break;
+ }
+
+ return OPERATOR_CANCELLED;
+}
+
+void TEXT_OT_resolve_conflict(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "Resolve Conflict";
+ ot->idname= "TEXT_OT_resolve_conflict";
+
+ /* api callbacks */
+ ot->exec= resolve_conflict_exec;
+ ot->invoke= resolve_conflict_invoke;
+ ot->poll= save_poll;
+
+ /* properties */
+ RNA_def_enum(ot->srna, "resolution", resolution_items, RESOLVE_IGNORE, "Resolution", "How to solve conflict due to different in internal and external text.");
+}
+
+/********************** to 3d object operator *****************/
+
+static int to_3d_object_exec(bContext *C, wmOperator *op)
+{
+ Text *text= CTX_data_edit_text(C);
+ int split_lines= RNA_boolean_get(op->ptr, "split_lines");
+
+ ED_text_to_object(C, text, split_lines);
+
+ return OPERATOR_FINISHED;
+}
+
+void TEXT_OT_to_3d_object(wmOperatorType *ot)
+{
+ /* identifiers */
+ ot->name= "To 3D Object";
+ ot->idname= "TEXT_OT_to_3d_object";
+
+ /* api callbacks */
+ ot->exec= to_3d_object_exec;
+ ot->poll= text_edit_poll;
+
+ /* flags */
+ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
+
+ /* properties */
+ RNA_def_boolean(ot->srna, "split_lines", 0, "Split Lines", "Create one object per line in the text.");
+}
+
+
+/************************ undo ******************************/
+
+void ED_text_undo_step(bContext *C, int step)
+{
+ Text *text= CTX_data_edit_text(C);
+
+ if(!text)
+ return;
+
+ if(step==1)
+ txt_do_undo(text);
+ else if(step==-1)
+ txt_do_redo(text);
+
+ text_update_edited(text);
+
+ WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ WM_event_add_notifier(C, NC_TEXT|NA_EDITED, text);
+}
+
diff --git a/source/blender/editors/space_text/text_python.c b/source/blender/editors/space_text/text_python.c
new file mode 100644
index 00000000000..4fa54cdf27b
--- /dev/null
+++ b/source/blender/editors/space_text/text_python.c
@@ -0,0 +1,541 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * The Original Code is Copyright (C) 2008 Blender Foundation.
+ * All rights reserved.
+ *
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <ctype.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "DNA_screen_types.h"
+#include "DNA_space_types.h"
+#include "DNA_text_types.h"
+
+#include "BKE_suggestions.h"
+#include "BKE_text.h"
+
+#include "BLI_blenlib.h"
+
+#include "WM_api.h"
+#include "WM_types.h"
+
+#include "text_intern.h"
+
+int text_do_suggest_select(SpaceText *st, ARegion *ar)
+{
+ SuggItem *item, *first, *last, *sel;
+ TextLine *tmp;
+ int l, x, y, w, h, i;
+ int tgti, *top;
+ short mval[2];
+
+ if(!st || !st->text) return 0;
+ if(!texttool_text_is_active(st->text)) return 0;
+
+ first = texttool_suggest_first();
+ last = texttool_suggest_last();
+ sel = texttool_suggest_selected();
+ top = texttool_suggest_top();
+
+ if(!last || !first)
+ return 0;
+
+ /* Count the visible lines to the cursor */
+ for(tmp=st->text->curl, l=-st->top; tmp; tmp=tmp->prev, l++);
+ if(l<0) return 0;
+
+ if(st->showlinenrs) {
+ x = text_font_width_character(st)*(st->text->curc-st->left) + TXT_OFFSET + TEXTXLOC - 4;
+ }
+ else {
+ x = text_font_width_character(st)*(st->text->curc-st->left) + TXT_OFFSET - 4;
+ }
+ y = ar->winy - st->lheight*l - 2;
+
+ w = SUGG_LIST_WIDTH*text_font_width_character(st) + 20;
+ h = SUGG_LIST_SIZE*st->lheight + 8;
+
+ // XXX getmouseco_areawin(mval);
+
+ if(mval[0]<x || x+w<mval[0] || mval[1]<y-h || y<mval[1])
+ return 0;
+
+ /* Work out which of the items is at the top of the visible list */
+ for(i=0, item=first; i<*top && item->next; i++, item=item->next);
+
+ /* Work out the target item index in the visible list */
+ tgti = (y-mval[1]-4) / st->lheight;
+ if(tgti<0 || tgti>SUGG_LIST_SIZE)
+ return 1;
+
+ for(i=tgti; i>0 && item->next; i--, item=item->next);
+ if(item)
+ texttool_suggest_select(item);
+ return 1;
+}
+
+void text_pop_suggest_list()
+{
+ SuggItem *item, *sel;
+ int *top, i;
+
+ item= texttool_suggest_first();
+ sel= texttool_suggest_selected();
+ top= texttool_suggest_top();
+
+ i= 0;
+ while(item && item != sel) {
+ item= item->next;
+ i++;
+ }
+ if(i > *top+SUGG_LIST_SIZE-1)
+ *top= i-SUGG_LIST_SIZE+1;
+ else if(i < *top)
+ *top= i;
+}
+
+static void get_suggest_prefix(Text *text, int offset)
+{
+ int i, len;
+ char *line, tmp[256];
+
+ if(!text) return;
+ if(!texttool_text_is_active(text)) return;
+
+ line= text->curl->line;
+ for(i=text->curc-1+offset; i>=0; i--)
+ if(!text_check_identifier(line[i]))
+ break;
+ i++;
+ len= text->curc-i+offset;
+ if(len > 255) {
+ printf("Suggestion prefix too long\n");
+ len = 255;
+ }
+ BLI_strncpy(tmp, line+i, len);
+ tmp[len]= '\0';
+ texttool_suggest_prefix(tmp);
+}
+
+static void confirm_suggestion(Text *text, int skipleft)
+{
+ SuggItem *sel;
+ int i, over=0;
+ char *line;
+
+ if(!text) return;
+ if(!texttool_text_is_active(text)) return;
+
+ sel = texttool_suggest_selected();
+ if(!sel) return;
+
+ line= text->curl->line;
+ i=text->curc-skipleft-1;
+ while(i>=0) {
+ if(!text_check_identifier(line[i]))
+ break;
+ over++;
+ i--;
+ }
+
+ for(i=0; i<skipleft; i++)
+ txt_move_left(text, 0);
+ for(i=0; i<over; i++)
+ txt_move_left(text, 1);
+
+ txt_insert_buf(text, sel->name);
+
+ for(i=0; i<skipleft; i++)
+ txt_move_right(text, 0);
+
+ texttool_text_clear();
+}
+
+// XXX
+#define L_MOUSE 0
+#define M_MOUSE 0
+#define R_MOUSE 0
+#define LR_SHIFTKEY 0
+#define LR_ALTKEY 0
+#define LR_CTRLKEY 0
+#define LR_COMMANDKEY 0
+
+// XXX
+static int doc_scroll= 0;
+
+short do_texttools(SpaceText *st, char ascii, unsigned short evnt, short val)
+{
+ ARegion *ar= NULL; // XXX
+ int qual= 0; // XXX
+ int draw=0, tools=0, swallow=0, scroll=1;
+ if(!texttool_text_is_active(st->text)) return 0;
+ if(!st->text || st->text->id.lib) return 0;
+
+ if(st->doplugins && texttool_text_is_active(st->text)) {
+ if(texttool_suggest_first()) tools |= TOOL_SUGG_LIST;
+ if(texttool_docs_get()) tools |= TOOL_DOCUMENT;
+ }
+
+ if(ascii) {
+ if(tools & TOOL_SUGG_LIST) {
+ if((ascii != '_' && ascii != '*' && ispunct(ascii)) || text_check_whitespace(ascii)) {
+ confirm_suggestion(st->text, 0);
+ text_update_line_edited(st->text, st->text->curl);
+ }
+ else if((st->overwrite && txt_replace_char(st->text, ascii)) || txt_add_char(st->text, ascii)) {
+ get_suggest_prefix(st->text, 0);
+ text_pop_suggest_list();
+ swallow= 1;
+ draw= 1;
+ }
+ }
+ if(tools & TOOL_DOCUMENT) texttool_docs_clear(), doc_scroll= 0, draw= 1;
+
+ }
+ else if(val==1 && evnt) {
+ switch (evnt) {
+ case LEFTMOUSE:
+ if(text_do_suggest_select(st, ar))
+ swallow= 1;
+ else {
+ if(tools & TOOL_SUGG_LIST) texttool_suggest_clear();
+ if(tools & TOOL_DOCUMENT) texttool_docs_clear(), doc_scroll= 0;
+ }
+ draw= 1;
+ break;
+ case MIDDLEMOUSE:
+ if(text_do_suggest_select(st, ar)) {
+ confirm_suggestion(st->text, 0);
+ text_update_line_edited(st->text, st->text->curl);
+ swallow= 1;
+ }
+ else {
+ if(tools & TOOL_SUGG_LIST) texttool_suggest_clear();
+ if(tools & TOOL_DOCUMENT) texttool_docs_clear(), doc_scroll= 0;
+ }
+ draw= 1;
+ break;
+ case ESCKEY:
+ draw= swallow= 1;
+ if(tools & TOOL_SUGG_LIST) texttool_suggest_clear();
+ else if(tools & TOOL_DOCUMENT) texttool_docs_clear(), doc_scroll= 0;
+ else draw= swallow= 0;
+ break;
+ case RETKEY:
+ if(tools & TOOL_SUGG_LIST) {
+ confirm_suggestion(st->text, 0);
+ text_update_line_edited(st->text, st->text->curl);
+ swallow= 1;
+ draw= 1;
+ }
+ if(tools & TOOL_DOCUMENT) texttool_docs_clear(), doc_scroll= 0, draw= 1;
+ break;
+ case LEFTARROWKEY:
+ case BACKSPACEKEY:
+ if(tools & TOOL_SUGG_LIST) {
+ if(qual)
+ texttool_suggest_clear();
+ else {
+ /* Work out which char we are about to delete/pass */
+ if(st->text->curl && st->text->curc > 0) {
+ char ch= st->text->curl->line[st->text->curc-1];
+ if((ch=='_' || !ispunct(ch)) && !text_check_whitespace(ch)) {
+ get_suggest_prefix(st->text, -1);
+ text_pop_suggest_list();
+ }
+ else
+ texttool_suggest_clear();
+ }
+ else
+ texttool_suggest_clear();
+ }
+ }
+ if(tools & TOOL_DOCUMENT) texttool_docs_clear(), doc_scroll= 0;
+ break;
+ case RIGHTARROWKEY:
+ if(tools & TOOL_SUGG_LIST) {
+ if(qual)
+ texttool_suggest_clear();
+ else {
+ /* Work out which char we are about to pass */
+ if(st->text->curl && st->text->curc < st->text->curl->len) {
+ char ch= st->text->curl->line[st->text->curc+1];
+ if((ch=='_' || !ispunct(ch)) && !text_check_whitespace(ch)) {
+ get_suggest_prefix(st->text, 1);
+ text_pop_suggest_list();
+ }
+ else
+ texttool_suggest_clear();
+ }
+ else
+ texttool_suggest_clear();
+ }
+ }
+ if(tools & TOOL_DOCUMENT) texttool_docs_clear(), doc_scroll= 0;
+ break;
+ case PAGEDOWNKEY:
+ scroll= SUGG_LIST_SIZE-1;
+ case WHEELDOWNMOUSE:
+ case DOWNARROWKEY:
+ if(tools & TOOL_DOCUMENT) {
+ doc_scroll++;
+ swallow= 1;
+ draw= 1;
+ break;
+ }
+ else if(tools & TOOL_SUGG_LIST) {
+ SuggItem *sel = texttool_suggest_selected();
+ if(!sel) {
+ texttool_suggest_select(texttool_suggest_first());
+ }
+ else while(sel && sel!=texttool_suggest_last() && sel->next && scroll--) {
+ texttool_suggest_select(sel->next);
+ sel= sel->next;
+ }
+ text_pop_suggest_list();
+ swallow= 1;
+ draw= 1;
+ break;
+ }
+ case PAGEUPKEY:
+ scroll= SUGG_LIST_SIZE-1;
+ case WHEELUPMOUSE:
+ case UPARROWKEY:
+ if(tools & TOOL_DOCUMENT) {
+ if(doc_scroll>0) doc_scroll--;
+ swallow= 1;
+ draw= 1;
+ break;
+ }
+ else if(tools & TOOL_SUGG_LIST) {
+ SuggItem *sel = texttool_suggest_selected();
+ while(sel && sel!=texttool_suggest_first() && sel->prev && scroll--) {
+ texttool_suggest_select(sel->prev);
+ sel= sel->prev;
+ }
+ text_pop_suggest_list();
+ swallow= 1;
+ draw= 1;
+ break;
+ }
+ case RIGHTSHIFTKEY:
+ case LEFTSHIFTKEY:
+ break;
+ default:
+ if(tools & TOOL_SUGG_LIST) texttool_suggest_clear(), draw= 1;
+ if(tools & TOOL_DOCUMENT) texttool_docs_clear(), doc_scroll= 0, draw= 1;
+ }
+ }
+
+ if(draw)
+ ; // XXX redraw_alltext();
+
+ return swallow;
+}
+
+#if 0
+#ifndef DISABLE_PYTHON
+ /* Run text plugin scripts if enabled */
+ if(st->doplugins && event && val) {
+ if(BPY_menu_do_shortcut(PYMENU_TEXTPLUGIN, event, qual)) {
+ do_draw= 1;
+ }
+ }
+#endif
+ if(do_draw)
+ ; // XXX redraw_alltext();
+#endif
+
+short do_textmarkers(SpaceText *st, char ascii, unsigned short evnt, short val)
+{
+ Text *text;
+ TextMarker *marker, *mrk, *nxt;
+ int c, s, draw=0, swallow=0;
+ int qual= 0; // XXX
+
+ text= st->text;
+ if(!text || text->id.lib || text->curl != text->sell) return 0;
+
+ marker= txt_find_marker(text, text->sell, text->selc, 0, 0);
+ if(marker && (marker->start > text->curc || marker->end < text->curc))
+ marker= NULL;
+
+ if(!marker) {
+ /* Find the next temporary marker */
+ if(evnt==TABKEY) {
+ int lineno= txt_get_span(text->lines.first, text->curl);
+ TextMarker *mrk= text->markers.first;
+ while(mrk) {
+ if(!marker && (mrk->flags & TMARK_TEMP)) marker= mrk;
+ if((mrk->flags & TMARK_TEMP) && (mrk->lineno > lineno || (mrk->lineno==lineno && mrk->end > text->curc))) {
+ marker= mrk;
+ break;
+ }
+ mrk= mrk->next;
+ }
+ if(marker) {
+ txt_move_to(text, marker->lineno, marker->start, 0);
+ txt_move_to(text, marker->lineno, marker->end, 1);
+ // XXX WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ evnt= ascii= val= 0;
+ draw= 1;
+ swallow= 1;
+ }
+ }
+ else if(evnt==ESCKEY) {
+ if(txt_clear_markers(text, 0, TMARK_TEMP)) swallow= 1;
+ else if(txt_clear_markers(text, 0, 0)) swallow= 1;
+ else return 0;
+ evnt= ascii= val= 0;
+ draw= 1;
+ }
+ if(!swallow) return 0;
+ }
+
+ if(ascii) {
+ if(marker->flags & TMARK_EDITALL) {
+ c= text->curc-marker->start;
+ s= text->selc-marker->start;
+ if(s<0 || s>marker->end-marker->start) return 0;
+
+ mrk= txt_next_marker(text, marker);
+ while(mrk) {
+ nxt=txt_next_marker(text, mrk); /* mrk may become invalid */
+ txt_move_to(text, mrk->lineno, mrk->start+c, 0);
+ if(s!=c) txt_move_to(text, mrk->lineno, mrk->start+s, 1);
+ if(st->overwrite) {
+ if(txt_replace_char(text, ascii))
+ text_update_line_edited(st->text, st->text->curl);
+ }
+ else {
+ if(txt_add_char(text, ascii)) {
+ text_update_line_edited(st->text, st->text->curl);
+ }
+ }
+
+ if(mrk==marker || mrk==nxt) break;
+ mrk=nxt;
+ }
+ swallow= 1;
+ draw= 1;
+ }
+ }
+ else if(val) {
+ switch(evnt) {
+ case BACKSPACEKEY:
+ if(marker->flags & TMARK_EDITALL) {
+ c= text->curc-marker->start;
+ s= text->selc-marker->start;
+ if(s<0 || s>marker->end-marker->start) return 0;
+
+ mrk= txt_next_marker(text, marker);
+ while(mrk) {
+ nxt= txt_next_marker(text, mrk); /* mrk may become invalid */
+ txt_move_to(text, mrk->lineno, mrk->start+c, 0);
+ if(s!=c) txt_move_to(text, mrk->lineno, mrk->start+s, 1);
+ txt_backspace_char(text);
+ text_update_line_edited(st->text, st->text->curl);
+ if(mrk==marker || mrk==nxt) break;
+ mrk= nxt;
+ }
+ swallow= 1;
+ draw= 1;
+ }
+ break;
+ case DELKEY:
+ if(marker->flags & TMARK_EDITALL) {
+ c= text->curc-marker->start;
+ s= text->selc-marker->start;
+ if(s<0 || s>marker->end-marker->start) return 0;
+
+ mrk= txt_next_marker(text, marker);
+ while(mrk) {
+ nxt= txt_next_marker(text, mrk); /* mrk may become invalid */
+ txt_move_to(text, mrk->lineno, mrk->start+c, 0);
+ if(s!=c) txt_move_to(text, mrk->lineno, mrk->start+s, 1);
+ txt_delete_char(text);
+ text_update_line_edited(st->text, st->text->curl);
+ if(mrk==marker || mrk==nxt) break;
+ mrk= nxt;
+ }
+ swallow= 1;
+ draw= 1;
+ }
+ break;
+ case TABKEY:
+ if(qual & LR_SHIFTKEY) {
+ nxt= marker->prev;
+ if(!nxt) nxt= text->markers.last;
+ }
+ else {
+ nxt= marker->next;
+ if(!nxt) nxt= text->markers.first;
+ }
+ if(marker->flags & TMARK_TEMP) {
+ if(nxt==marker) nxt= NULL;
+ BLI_freelinkN(&text->markers, marker);
+ }
+ mrk= nxt;
+ if(mrk) {
+ txt_move_to(text, mrk->lineno, mrk->start, 0);
+ txt_move_to(text, mrk->lineno, mrk->end, 1);
+ // XXX WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text);
+ }
+ swallow= 1;
+ draw= 1;
+ break;
+
+ /* Events that should clear markers */
+ case UKEY: if(!(qual & LR_ALTKEY)) break;
+ case ZKEY: if(evnt==ZKEY && !(qual & LR_CTRLKEY)) break;
+ case RETKEY:
+ case ESCKEY:
+ if(marker->flags & (TMARK_EDITALL | TMARK_TEMP))
+ txt_clear_markers(text, marker->group, 0);
+ else
+ BLI_freelinkN(&text->markers, marker);
+ swallow= 1;
+ draw= 1;
+ break;
+ case RIGHTMOUSE: /* Marker context menu? */
+ case LEFTMOUSE:
+ break;
+ case FKEY: /* Allow find */
+ if(qual & LR_SHIFTKEY) swallow= 1;
+ break;
+
+ default:
+ if(qual!=0 && qual!=LR_SHIFTKEY)
+ swallow= 1; /* Swallow all other shortcut events */
+ }
+ }
+
+ if(draw)
+ ; // XXX redraw_alltext();
+
+ return swallow;
+}
+
diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c
index d449b0cc774..6f5860ea4b5 100644
--- a/source/blender/editors/space_view3d/view3d_buttons.c
+++ b/source/blender/editors/space_view3d/view3d_buttons.c
@@ -77,10 +77,11 @@
#include "ED_armature.h"
#include "ED_curve.h"
-#include "ED_particle.h"
+#include "ED_image.h"
#include "ED_keyframing.h"
#include "ED_mesh.h"
#include "ED_object.h"
+#include "ED_particle.h"
#include "ED_screen.h"
#include "ED_types.h"
#include "ED_util.h"
@@ -1063,8 +1064,8 @@ static void weight_paint_buttons(Scene *scene, uiBlock *block)
static void sculptmode_draw_interface_tools(Scene *scene, uiBlock *block, unsigned short cx, unsigned short cy)
{
-#if 0
- Sculpt *sd= scene->toolsettings->sculpt;
+ Sculpt *s = scene->toolsettings->sculpt;
+ Brush *br = s->brush;
uiBlockBeginAlign(block);
@@ -1072,14 +1073,14 @@ static void sculptmode_draw_interface_tools(Scene *scene, uiBlock *block, unsign
cy-= 20;
uiBlockBeginAlign(block);
- uiDefButS(block,ROW,B_REDR,"Draw",cx,cy,67,19,&sd->brush_type,14.0,DRAW_BRUSH,0,0,"Draw lines on the model");
- uiDefButS(block,ROW,REDRAWBUTSEDIT,"Smooth",cx+67,cy,67,19,&sd->brush_type,14.0,SMOOTH_BRUSH,0,0,"Interactively smooth areas of the model");
- uiDefButS(block,ROW,B_REDR,"Pinch",cx+134,cy,67,19,&sd->brush_type,14.0,PINCH_BRUSH,0,0,"Interactively pinch areas of the model");
- uiDefButS(block,ROW,B_REDR,"Inflate",cx+201,cy,67,19,&sd->brush_type,14,INFLATE_BRUSH,0,0,"Push vertices along the direction of their normals");
+ uiDefButC(block,ROW,B_REDR,"Draw",cx,cy,67,19,&br->sculpt_tool,14.0,SCULPT_TOOL_DRAW,0,0,"Draw lines on the model");
+ uiDefButC(block,ROW,B_REDR,"Smooth",cx+67,cy,67,19,&br->sculpt_tool,14.0,SCULPT_TOOL_SMOOTH,0,0,"Interactively smooth areas of the model");
+ uiDefButC(block,ROW,B_REDR,"Pinch",cx+134,cy,67,19,&br->sculpt_tool,14.0,SCULPT_TOOL_PINCH,0,0,"Interactively pinch areas of the model");
+ uiDefButC(block,ROW,B_REDR,"Inflate",cx+201,cy,67,19,&br->sculpt_tool,14,SCULPT_TOOL_INFLATE,0,0,"Push vertices along the direction of their normals");
cy-= 20;
- uiDefButS(block,ROW,B_REDR,"Grab", cx,cy,89,19,&sd->brush_type,14,GRAB_BRUSH,0,0,"Grabs a group of vertices and moves them with the mouse");
- uiDefButS(block,ROW,B_REDR,"Layer", cx+89,cy,89,19,&sd->brush_type,14, LAYER_BRUSH,0,0,"Adds a layer of depth");
- uiDefButS(block,ROW,B_REDR,"Flatten", cx+178,cy,90,19,&sd->brush_type,14, FLATTEN_BRUSH,0,0,"Interactively flatten areas of the model");
+ uiDefButC(block,ROW,B_REDR,"Grab", cx,cy,89,19,&br->sculpt_tool,14,SCULPT_TOOL_GRAB,0,0,"Grabs a group of vertices and moves them with the mouse");
+ uiDefButC(block,ROW,B_REDR,"Layer", cx+89,cy,89,19,&br->sculpt_tool,14, SCULPT_TOOL_LAYER,0,0,"Adds a layer of depth");
+ uiDefButC(block,ROW,B_REDR,"Flatten", cx+178,cy,90,19,&br->sculpt_tool,14, SCULPT_TOOL_FLATTEN,0,0,"Interactively flatten areas of the model");
cy-= 25;
uiBlockEndAlign(block);
@@ -1088,17 +1089,18 @@ static void sculptmode_draw_interface_tools(Scene *scene, uiBlock *block, unsign
cy-= 20;
uiBlockBeginAlign(block);
- if(sd->brush_type != SMOOTH_BRUSH && sd->brush_type != GRAB_BRUSH && sd->brush_type != FLATTEN_BRUSH) {
- uiDefButC(block,ROW,B_NOP,"Add",cx,cy,89,19,&sculptmode_brush()->dir,15.0,1.0,0, 0,"Add depth to model [Shift]");
- uiDefButC(block,ROW,B_NOP,"Sub",cx+89,cy,89,19,&sculptmode_brush()->dir,15.0,2.0,0, 0,"Subtract depth from model [Shift]");
- }
- if(sd->brush_type!=GRAB_BRUSH)
- uiDefButBitC(block, TOG, SCULPT_BRUSH_AIRBRUSH, B_NOP, "Airbrush", cx+178,cy,89,19, &sculptmode_brush()->flag,0,0,0,0, "Brush makes changes without waiting for the mouse to move");
+ //XXX if(sd->brush_type != SMOOTH_BRUSH && sd->brush_type != GRAB_BRUSH && sd->brush_type != FLATTEN_BRUSH) {
+ {
+ /*uiDefButBitS(block,ROW,B_NOP,"Add",cx,cy,89,19,&br->dir,15.0,1.0,0, 0,"Add depth to model [Shift]");
+ uiDefButBitS(block,ROW,B_NOP,"Sub",cx+89,cy,89,19,&br->dir,15.0,2.0,0, 0,"Subtract depth from model [Shift]");
+ */}
+ //XXX if(sd->brush_type!=GRAB_BRUSH)
+ uiDefButBitS(block, TOG, BRUSH_AIRBRUSH, B_NOP, "Airbrush", cx+178,cy,89,19, &br->flag,0,0,0,0, "Brush makes changes without waiting for the mouse to move");
cy-= 20;
- uiDefButS(block,NUMSLI,B_NOP,"Size: ",cx,cy,268,19,&sculptmode_brush()->size,1.0,200.0,0,0,"Set brush radius in pixels");
+ uiDefButI(block,NUMSLI,B_NOP,"Size: ",cx,cy,268,19,&br->size,1.0,200.0,0,0,"Set brush radius in pixels");
cy-= 20;
- if(sd->brush_type!=GRAB_BRUSH)
- uiDefButC(block,NUMSLI,B_NOP,"Strength: ",cx,cy,268,19,&sculptmode_brush()->strength,1.0,100.0,0,0,"Set brush strength");
+ //XXX if(sd->brush_type!=GRAB_BRUSH)
+ uiDefButF(block,NUMSLI,B_NOP,"Strength: ",cx,cy,268,19,&br->alpha,0,1.0,0,0,"Set brush strength");
cy-= 25;
uiBlockEndAlign(block);
@@ -1106,9 +1108,9 @@ static void sculptmode_draw_interface_tools(Scene *scene, uiBlock *block, unsign
uiDefBut( block,LABEL,B_NOP,"Symmetry",cx,cy,90,19,NULL,0,0,0,0,"");
cy-= 20;
uiBlockBeginAlign(block);
- uiDefButBitC(block, TOG, SYMM_X, B_NOP, "X", cx,cy,40,19, &sd->symm, 0,0,0,0, "Mirror brush across X axis");
- uiDefButBitC(block, TOG, SYMM_Y, B_NOP, "Y", cx+40,cy,40,19, &sd->symm, 0,0,0,0, "Mirror brush across Y axis");
- uiDefButBitC(block, TOG, SYMM_Z, B_NOP, "Z", cx+80,cy,40,19, &sd->symm, 0,0,0,0, "Mirror brush across Z axis");
+ uiDefButBitI(block, TOG, SCULPT_SYMM_X, B_NOP, "X", cx,cy,40,19, &s->flags, 0,0,0,0, "Mirror brush across X axis");
+ uiDefButBitI(block, TOG, SCULPT_SYMM_Y, B_NOP, "Y", cx+40,cy,40,19, &s->flags, 0,0,0,0, "Mirror brush across Y axis");
+ uiDefButBitI(block, TOG, SCULPT_SYMM_Z, B_NOP, "Z", cx+80,cy,40,19, &s->flags, 0,0,0,0, "Mirror brush across Z axis");
uiBlockEndAlign(block);
@@ -1117,13 +1119,12 @@ static void sculptmode_draw_interface_tools(Scene *scene, uiBlock *block, unsign
uiDefBut( block,LABEL,B_NOP,"LockAxis",cx+140,cy,90,19,NULL,0,0,0,0,"");
cy-= 20;
uiBlockBeginAlign(block);
- uiDefButBitC(block, TOG, AXISLOCK_X, B_NOP, "X", cx+140,cy,40,19, &sd->axislock, 0,0,0,0, "Constrain X axis");
- uiDefButBitC(block, TOG, AXISLOCK_Y, B_NOP, "Y", cx+180,cy,40,19, &sd->axislock, 0,0,0,0, "Constrain Y axis");
- uiDefButBitC(block, TOG, AXISLOCK_Z, B_NOP, "Z", cx+220,cy,40,19, &sd->axislock, 0,0,0,0, "Constrain Z axis");
+ uiDefButBitI(block, TOG, SCULPT_LOCK_X, B_NOP, "X", cx+140,cy,40,19, &s->flags, 0,0,0,0, "Constrain X axis");
+ uiDefButBitI(block, TOG, SCULPT_LOCK_Y, B_NOP, "Y", cx+180,cy,40,19, &s->flags, 0,0,0,0, "Constrain Y axis");
+ uiDefButBitI(block, TOG, SCULPT_LOCK_Z, B_NOP, "Z", cx+220,cy,40,19, &s->flags, 0,0,0,0, "Constrain Z axis");
uiBlockEndAlign(block);
cx+= 210;
-#endif
}
@@ -1303,6 +1304,7 @@ static void view3d_panel_background(const bContext *C, ARegion *ar, short cntrl)
block= uiBeginBlock(C, ar, "view3d_panel_background", UI_EMBOSS, UI_HELV);
if(uiNewPanel(C, ar, block, "Background Image", "View3d", 340, 10, 318, 204)==0) return;
+ uiBlockSetHandleFunc(block, do_view3d_region_buttons, NULL);
if(v3d->flag & V3D_DISPBGPIC) {
if(v3d->bgpic==NULL) {
@@ -1327,7 +1329,7 @@ static void view3d_panel_background(const bContext *C, ARegion *ar, short cntrl)
uiDefButF(block, NUM, B_REDR, "X Offset:", 10, 205, 150, 20, &v3d->bgpic->xof, -250.0*v3d->grid,250.0*v3d->grid, 10, 2, "Set the horizontal offset of the background image");
uiDefButF(block, NUM, B_REDR, "Y Offset:", 160, 205, 150, 20, &v3d->bgpic->yof, -250.0*v3d->grid,250.0*v3d->grid, 10, 2, "Set the vertical offset of the background image");
-// XXX uiblock_image_panel(block, &v3d->bgpic->ima, &v3d->bgpic->iuser, B_REDR, B_REDR);
+ ED_image_uiblock_panel(C, block, &v3d->bgpic->ima, &v3d->bgpic->iuser, B_REDR, B_REDR);
uiBlockEndAlign(block);
}
uiEndBlock(C, block);
diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c
index 706ce8c9d40..80728a77244 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -1082,6 +1082,7 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d)
if(G.f & G_VERTEXPAINT || G.f & G_WEIGHTPAINT);
else if((G.f & G_TEXTUREPAINT) && scene->toolsettings && (scene->toolsettings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE));
+ else if((G.f & G_PARTICLEEDIT) && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT));
else if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT));
else {
v3d->flag &= ~V3D_NEEDBACKBUFDRAW;
@@ -2090,6 +2091,12 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar)
v3d->flag |= V3D_NEEDBACKBUFDRAW;
// XXX addafterqueue(ar->win, BACKBUFDRAW, 1);
}
+
+ if((G.f & G_PARTICLEEDIT) && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)) {
+ v3d->flag |= V3D_NEEDBACKBUFDRAW;
+ // XXX addafterqueue(ar->win, BACKBUFDRAW, 1);
+ }
+
// test for backbuf select
if(scene->obedit && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)) {
diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c
index 6d071056b78..7ff6e6b88a8 100644
--- a/source/blender/editors/space_view3d/view3d_ops.c
+++ b/source/blender/editors/space_view3d/view3d_ops.c
@@ -209,8 +209,10 @@ void view3d_keymap(wmWindowManager *wm)
RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_vertex_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_weight_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
+ RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_texture_paint_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE);
RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_vertex_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_weight_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
+ RNA_enum_set(WM_keymap_add_item(keymap, "PAINT_OT_texture_paint_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH);
/* TODO - this is just while we have no way to load a text datablock */
RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_run_pyfile", PKEY, KM_PRESS, 0, 0)->ptr, "filename", "test.py");
diff --git a/source/blender/editors/space_view3d/view3d_select.c b/source/blender/editors/space_view3d/view3d_select.c
index f4525b97128..b6098e52a89 100644
--- a/source/blender/editors/space_view3d/view3d_select.c
+++ b/source/blender/editors/space_view3d/view3d_select.c
@@ -689,7 +689,7 @@ static void do_lasso_select_node(short mcords[][2], short moves, short select)
}
#endif
-void view3d_lasso_select(ViewContext *vc, short mcords[][2], short moves, short select)
+void view3d_lasso_select(bContext *C, ViewContext *vc, short mcords[][2], short moves, short select)
{
if(vc->obedit==NULL) {
if(FACESEL_PAINT_TEST)
@@ -697,7 +697,7 @@ void view3d_lasso_select(ViewContext *vc, short mcords[][2], short moves, short
else if(G.f & (G_VERTEXPAINT|G_TEXTUREPAINT|G_WEIGHTPAINT))
;
else if(G.f & G_PARTICLEEDIT)
- PE_lasso_select(vc, mcords, moves, select);
+ PE_lasso_select(C, mcords, moves, select);
else
do_lasso_select_objects(vc, mcords, moves, select);
}
@@ -747,7 +747,7 @@ static int view3d_lasso_select_exec(bContext *C, wmOperator *op)
view3d_set_viewcontext(C, &vc);
select= RNA_enum_is_equal(op->ptr, "type", "SELECT");
- view3d_lasso_select(&vc, mcords, i, select);
+ view3d_lasso_select(C, &vc, mcords, i, select);
return OPERATOR_FINISHED;
}
@@ -1349,8 +1349,7 @@ static int view3d_borderselect_exec(bContext *C, wmOperator *op)
return OPERATOR_FINISHED;
}
else if(obedit==NULL && (G.f & G_PARTICLEEDIT)) {
- PE_border_select(&vc, &rect, (val==LEFTMOUSE));
- return OPERATOR_FINISHED;
+ return PE_border_select(C, &rect, (val==LEFTMOUSE));
}
if(obedit) {
@@ -1580,6 +1579,8 @@ static int view3d_select_invoke(bContext *C, wmOperator *op, wmEvent *event)
mouse_nurb(C, event->mval, extend);
}
+ else if(G.f & G_PARTICLEEDIT)
+ PE_mouse_particles(C, event->mval, extend);
else
mouse_select(C, event->mval, extend, 0);
@@ -1799,7 +1800,7 @@ static int view3d_circle_select_exec(bContext *C, wmOperator *op)
if(CTX_data_edit_object(C))
obedit_circle_select(&vc, selecting, mval, (float)radius);
else
- PE_circle_select(&vc, selecting, mval, (float)radius);
+ return PE_circle_select(C, selecting, mval, (float)radius);
}
else {
Base *base;
diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c
index 0dd4d072d72..b1bd39a66da 100644
--- a/source/blender/editors/space_view3d/view3d_view.c
+++ b/source/blender/editors/space_view3d/view3d_view.c
@@ -520,6 +520,7 @@ float read_cached_depth(ViewContext *vc, int x, int y)
{
ViewDepths *vd = vc->rv3d->depths;
+ x -= vc->ar->winrct.xmin;
y -= vc->ar->winrct.ymin;
if(vd && vd->depths && x > 0 && y > 0 && x < vd->w && y < vd->h)
diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c
index e6b8662ce4c..e7749e6eb3a 100644
--- a/source/blender/editors/transform/transform.c
+++ b/source/blender/editors/transform/transform.c
@@ -2449,7 +2449,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
Mat3MulVecfl(pmtx, vec); // To Global space
Mat3MulVecfl(mat, vec); // Applying rotation
Mat3MulVecfl(imtx, vec); // To Local space
-
+
VecAddf(vec, vec, center);
/* vec now is the location where the object has to be */
@@ -2457,9 +2457,9 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
Mat3MulVecfl(pmtx, vec); // To Global space
Mat3MulVecfl(td->smtx, vec);// To Pose space
-
+
protectedTransBits(td->protectflag, vec);
-
+
VecAddf(td->loc, td->iloc, vec);
constraintTransLim(t, td);
@@ -2467,19 +2467,40 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
/* rotation */
if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't rotate objects itself
- Mat3MulSerie(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
-
- Mat3ToQuat(fmat, quat); // Actual transform
-
- QuatMul(td->ext->quat, quat, td->ext->iquat);
- /* this function works on end result */
- protectedQuaternionBits(td->protectflag, td->ext->quat, td->ext->iquat);
+ /* euler or quaternion? */
+ if (td->flag & TD_USEQUAT) {
+ Mat3MulSerie(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
+
+ Mat3ToQuat(fmat, quat); // Actual transform
+
+ QuatMul(td->ext->quat, quat, td->ext->iquat);
+ /* this function works on end result */
+ protectedQuaternionBits(td->protectflag, td->ext->quat, td->ext->iquat);
+ }
+ else {
+ float eulmat[3][3];
+
+ Mat3MulMat3(totmat, mat, td->mtx);
+ Mat3MulMat3(smat, td->smtx, totmat);
+
+ /* calculate the total rotatation in eulers */
+ VECCOPY(eul, td->ext->irot);
+ EulToMat3(eul, eulmat);
+
+ /* mat = transform, obmat = bone rotation */
+ Mat3MulMat3(fmat, smat, eulmat);
+
+ Mat3ToCompatibleEul(fmat, eul, td->ext->rot);
+
+ /* and apply (to end result only) */
+ protectedRotateBits(td->protectflag, eul, td->ext->irot);
+ VECCOPY(td->ext->rot, eul);
+ }
constraintRotLim(t, td);
}
}
else {
-
if ((td->flag & TD_NO_LOC) == 0)
{
/* translation */
@@ -2506,7 +2527,8 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short
/* rotation */
if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't rotate objects itself
- if(td->flag & TD_USEQUAT) {
+ /* euler or quaternion? */
+ if (td->flag & TD_USEQUAT) {
Mat3MulSerie(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0);
Mat3ToQuat(fmat, quat); // Actual transform
diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c
index 641b538a3ed..b47f4edc7da 100644
--- a/source/blender/editors/transform/transform_conversions.c
+++ b/source/blender/editors/transform/transform_conversions.c
@@ -551,7 +551,11 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr
VECCOPY(td->center, vec);
td->ob = ob;
- td->flag= TD_SELECTED|TD_USEQUAT;
+ td->flag = TD_SELECTED;
+ if (pchan->rotmode == PCHAN_ROT_QUAT)
+ {
+ td->flag |= TD_USEQUAT;
+ }
if (bone->flag & BONE_HINGE_CHILD_TRANSFORM)
{
td->flag |= TD_NOCENTER;
@@ -568,12 +572,21 @@ static void add_pose_transdata(TransInfo *t, bPoseChannel *pchan, Object *ob, Tr
td->loc = pchan->loc;
VECCOPY(td->iloc, pchan->loc);
- td->ext->rot= NULL;
- td->ext->quat= pchan->quat;
td->ext->size= pchan->size;
-
- QUATCOPY(td->ext->iquat, pchan->quat);
VECCOPY(td->ext->isize, pchan->size);
+
+ if (pchan->rotmode) {
+ td->ext->rot= pchan->eul;
+ td->ext->quat= NULL;
+
+ VECCOPY(td->ext->irot, pchan->eul);
+ }
+ else {
+ td->ext->rot= NULL;
+ td->ext->quat= pchan->quat;
+
+ QUATCOPY(td->ext->iquat, pchan->quat);
+ }
/* proper way to get parent transform + own transform + constraints transform */
Mat3CpyMat4(omat, ob->obmat);
@@ -1601,13 +1614,11 @@ static void createTransLatticeVerts(bContext *C, TransInfo *t)
/* ******************* particle edit **************** */
static void createTransParticleVerts(bContext *C, TransInfo *t)
{
- // TRANSFORM_FIX_ME
-#if 0
TransData *td = NULL;
TransDataExtension *tx;
- Base *base = BASACT;
- Object *ob = OBACT;
- ParticleSystem *psys = PE_get_current(ob);
+ Base *base = CTX_data_active_base(C);
+ Object *ob = CTX_data_active_object(C);
+ ParticleSystem *psys = PE_get_current(t->scene, ob);
ParticleSystemModifierData *psmd = NULL;
ParticleEditSettings *pset = PE_settings(t->scene);
ParticleData *pa = NULL;
@@ -1715,15 +1726,13 @@ static void createTransParticleVerts(bContext *C, TransInfo *t)
if (propmode && head != tail)
calc_distanceCurveVerts(head, tail - 1);
}
-#endif
}
void flushTransParticles(TransInfo *t)
{
-#if 0 // TRANSFORM_FIX_ME
Scene *scene = t->scene;
Object *ob = OBACT;
- ParticleSystem *psys = PE_get_current(ob);
+ ParticleSystem *psys = PE_get_current(scene, ob);
ParticleSystemModifierData *psmd;
ParticleData *pa;
ParticleEditKey *key;
@@ -1755,7 +1764,6 @@ void flushTransParticles(TransInfo *t)
}
PE_update_object(scene, OBACT, 1);
-#endif
}
/* ********************* mesh ****************** */
@@ -2753,7 +2761,7 @@ static int count_fcurve_keys(FCurve *fcu, char side, float cfra)
BezTriple *bezt;
int i, count = 0;
- if (fcu == NULL)
+ if (ELEM(NULL, fcu, fcu->bezt))
return count;
/* only include points that occur on the right side of cfra */
@@ -4630,11 +4638,9 @@ void special_aftertrans_update(TransInfo *t)
// allqueue(REDRAWBUTSEDIT, 0);
}
-#if 0 // TRANSFORM_FIX_ME
else if(G.f & G_PARTICLEEDIT) {
;
}
-#endif
else {
/* Objects */
// XXX ideally, this would go through context iterators, but we don't have context iterator access here,
@@ -4999,8 +5005,7 @@ void createTransData(bContext *C, TransInfo *t)
}
CTX_DATA_END;
}
-#if 0 // TRANSFORM_FIX_ME
- else if (G.f & G_PARTICLEEDIT && PE_can_edit(PE_get_current(ob))) {
+ else if (G.f & G_PARTICLEEDIT && PE_can_edit(PE_get_current(scene, ob))) {
createTransParticleVerts(C, t);
if(t->data && t->flag & T_PROP_EDIT) {
@@ -5011,7 +5016,6 @@ void createTransData(bContext *C, TransInfo *t)
t->flag |= T_POINTS;
}
-#endif
else {
View3D *v3d = t->view;
RegionView3D *rv3d = t->ar->regiondata;
diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c
index 9308cf73af8..99d7805b938 100644
--- a/source/blender/editors/transform/transform_manipulator.c
+++ b/source/blender/editors/transform/transform_manipulator.c
@@ -405,16 +405,18 @@ int calc_manipulator_stats(ScrArea *sa)
ParticleEditKey *ek;
int k;
- if(psys->edit){
- for(a=0; a<psys->totpart; a++,pa++){
+ if(psys->edit) {
+ for(a=0; a<psys->totpart; a++,pa++) {
if(pa->flag & PARS_HIDE) continue;
- for(k=0, ek=psys->edit->keys[a]; k<pa->totkey; k++,ek++){
- if(ek->flag & PEK_SELECT){
+
+ for(k=0, ek=psys->edit->keys[a]; k<pa->totkey; k++, ek++) {
+ if(ek->flag & PEK_SELECT) {
calc_tw_center(ek->world_co);
totsel++;
}
}
}
+
/* selection center */
if(totsel)
VecMulf(G.scene->twcent, 1.0f/(float)totsel); // centroid!
diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c
index a54d590c2af..0b0919ff981 100644
--- a/source/blender/editors/util/undo.c
+++ b/source/blender/editors/util/undo.c
@@ -47,6 +47,7 @@
#include "BKE_depsgraph.h"
#include "BKE_global.h"
#include "BKE_object.h"
+#include "BKE_text.h"
#include "BLI_blenlib.h"
#include "BLI_editVert.h"
@@ -62,6 +63,7 @@
#include "ED_screen.h"
#include "ED_sculpt.h"
#include "ED_util.h"
+#include "ED_text.h"
#include "WM_api.h"
#include "WM_types.h"
@@ -124,7 +126,10 @@ static int ed_undo_step(bContext *C, int step)
Object *obedit= CTX_data_edit_object(C);
ScrArea *sa= CTX_wm_area(C);
- if(obedit) {
+ if(sa && sa->spacetype==SPACE_TEXT) {
+ ED_text_undo_step(C, step);
+ }
+ else if(obedit) {
if ELEM7(obedit->type, OB_MESH, OB_FONT, OB_CURVE, OB_SURF, OB_MBALL, OB_LATTICE, OB_ARMATURE)
undo_editmode_step(C, step);
}
@@ -133,7 +138,7 @@ static int ed_undo_step(bContext *C, int step)
if(G.f & G_TEXTUREPAINT)
undo_imagepaint_step(step);
- else if(sa->spacetype==SPACE_IMAGE) {
+ else if(sa && sa->spacetype==SPACE_IMAGE) {
SpaceImage *sima= (SpaceImage *)sa->spacedata.first;
if(sima->flag & SI_DRAWTOOL)
undo_imagepaint_step(step);
diff --git a/source/blender/imbuf/IMB_thumbs.h b/source/blender/imbuf/IMB_thumbs.h
index 4f4b77ff000..53b63b4d304 100644
--- a/source/blender/imbuf/IMB_thumbs.h
+++ b/source/blender/imbuf/IMB_thumbs.h
@@ -67,7 +67,8 @@ void IMB_thumb_delete(const char* dir, const char* file, ThumbSize size);
/* return the state of the thumb, needed to determine how to manage the thumb */
ImBuf* IMB_thumb_manage(const char* dir, const char* file, ThumbSize size, ThumbSource source);
-
+/* create the necessary dirs to store the thumbnails */
+void IMB_thumb_makedirs();
#endif /* _IMB_THUMBS_H */
diff --git a/source/blender/imbuf/intern/thumbs.c b/source/blender/imbuf/intern/thumbs.c
index 14d6cb2d54b..86ca43824f3 100644
--- a/source/blender/imbuf/intern/thumbs.c
+++ b/source/blender/imbuf/intern/thumbs.c
@@ -232,6 +232,16 @@ static int thumbpath_from_uri(const char* uri, char* path, ThumbSize size)
return rv;
}
+void IMB_thumb_makedirs()
+{
+ char tpath[FILE_MAX];
+ if (get_thumb_dir(tpath, THB_NORMAL)) {
+ BLI_recurdir_fileops(tpath);
+ }
+ if (get_thumb_dir(tpath, THB_FAIL)) {
+ BLI_recurdir_fileops(tpath);
+ }
+}
/* create thumbnail for file and returns new imbuf for thumbnail */
ImBuf* IMB_thumb_create(const char* dir, const char* file, ThumbSize size, ThumbSource source)
diff --git a/source/blender/makesdna/DNA_particle_types.h b/source/blender/makesdna/DNA_particle_types.h
index 7dd69b2151c..2e232c2e1d4 100644
--- a/source/blender/makesdna/DNA_particle_types.h
+++ b/source/blender/makesdna/DNA_particle_types.h
@@ -179,7 +179,8 @@ typedef struct ParticleSystem{ /* note, make sure all (runtime) are NULL's in
ParticleData *particles; /* (parent) particles */
ChildParticle *child; /* child particles */
- struct ParticleEdit *edit; /* particle editmode (runtime) */
+ struct ParticleEdit *edit; /* particle editmode (runtime) */
+ void (*free_edit)(struct ParticleSystem *sys); /* free callback */
struct ParticleCacheKey **pathcache; /* path cache (runtime) */
struct ParticleCacheKey **childcache; /* child cache (runtime) */
diff --git a/source/blender/makesdna/DNA_scene_types.h b/source/blender/makesdna/DNA_scene_types.h
index ce3d627863e..047fcd3b94e 100644
--- a/source/blender/makesdna/DNA_scene_types.h
+++ b/source/blender/makesdna/DNA_scene_types.h
@@ -370,6 +370,7 @@ typedef struct ParticleEditSettings {
short brushtype;
ParticleBrushData brush[7]; /* 7 = PE_TOT_BRUSH */
+ void *paintcursor; /* runtime */
float emitterdist;
int draw_timed;
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index 678179f6f60..8cca610b698 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -285,7 +285,7 @@ typedef struct SpaceText {
int showlinenrs;
int tabnumber;
- int currtab_set;
+ int pad;
int showsyntax;
int overwrite;
float pix_per_line;
@@ -294,6 +294,8 @@ typedef struct SpaceText {
int wordwrap, doplugins;
+ char findstr[256]; /* ST_MAX_FIND_STR */
+ char replacestr[256]; /* ST_MAX_FIND_STR */
} SpaceText;
typedef struct Script {
@@ -609,6 +611,12 @@ enum {
#define ST_SCROLL_SELECT 0x0001 // scrollable
#define ST_CLEAR_NAMESPACE 0x0010 // clear namespace after script
// execution (see BPY_main.c)
+#define ST_FIND_WRAP 0x0020
+#define ST_FIND_ALL 0x0040
+
+
+/* stext->findstr/replacestr */
+#define ST_MAX_FIND_STR 256
/* SpaceOops->type */
#define SO_OOPS 0
diff --git a/source/blender/makesdna/DNA_text_types.h b/source/blender/makesdna/DNA_text_types.h
index 48ecccd517a..8f9d4b5f4b4 100644
--- a/source/blender/makesdna/DNA_text_types.h
+++ b/source/blender/makesdna/DNA_text_types.h
@@ -78,7 +78,7 @@ typedef struct Text {
/* text flags */
#define TXT_ISDIRTY 0x0001
-#define TXT_ISTMP 0x0002
+#define TXT_DEPRECATED 0x0004 /* deprecated ISTMP flag */
#define TXT_ISMEM 0x0004
#define TXT_ISEXT 0x0008
#define TXT_ISSCRIPT 0x0010 /* used by space handler scriptlinks */
diff --git a/source/blender/makesdna/intern/SConscript b/source/blender/makesdna/intern/SConscript
index 4aa8d6a9d54..6c8f48da251 100644
--- a/source/blender/makesdna/intern/SConscript
+++ b/source/blender/makesdna/intern/SConscript
@@ -42,18 +42,22 @@ targetdir = root_build_dir + '/makesdna'
if not (root_build_dir[0]==os.sep or root_build_dir[1]==':'):
targetdir = '#' + targetdir
+ #root_build_dir = "#"
makesdna = makesdna_tool.Program (target = targetdir, source = source_files, LIBS=['bf_guardedalloc'])
dna_dict = dna.Dictionary()
dna.Depends ('dna.c', makesdna)
dna.Depends ('dna.c', header_files)
+
+ap = os.path.abspath
+
if env['OURPLATFORM'] != 'linuxcross':
if USE_WINE:
- dna.Command ('dna.c', '', 'wine ' + root_build_dir+os.sep+"makesdna $TARGET")
+ dna.Command ('dna.c', '', 'wine ' + ap(root_build_dir+os.sep+"makesdna $TARGET"))
else:
- dna.Command ('dna.c', '', root_build_dir+os.sep+"makesdna $TARGET")
+ dna.Command ('dna.c', '', ap(root_build_dir+os.sep+"makesdna $TARGET"))
else:
- dna.Command ('dna.c', '', root_build_dir+os.sep+"makesdna.exe $TARGET")
+ dna.Command ('dna.c', '', ap(root_build_dir+os.sep+"makesdna.exe $TARGET"))
obj = ['intern/dna.c', 'intern/dna_genfile.c']
Return ('obj')
diff --git a/source/blender/makesrna/RNA_access.h b/source/blender/makesrna/RNA_access.h
index f286cd46479..8bc8c58f425 100644
--- a/source/blender/makesrna/RNA_access.h
+++ b/source/blender/makesrna/RNA_access.h
@@ -222,6 +222,7 @@ extern StructRNA RNA_SoundSequence;
extern StructRNA RNA_Space;
extern StructRNA RNA_SpaceImageEditor;
extern StructRNA RNA_SpaceUVEditor;
+extern StructRNA RNA_SpaceTextEditor;
extern StructRNA RNA_SpeedControlSequence;
extern StructRNA RNA_SpotLamp;
extern StructRNA RNA_StringProperty;
@@ -252,6 +253,7 @@ extern StructRNA RNA_ThemeTimeline;
extern StructRNA RNA_ThemeUserInterface;
extern StructRNA RNA_ThemeUserPreferences;
extern StructRNA RNA_ThemeView3D;
+extern StructRNA RNA_TimelineMarker;
extern StructRNA RNA_ToolSettings;
extern StructRNA RNA_TouchSensor;
extern StructRNA RNA_TransformSequence;
diff --git a/source/blender/makesrna/RNA_define.h b/source/blender/makesrna/RNA_define.h
index b732ab8479a..d80a4e4573e 100644
--- a/source/blender/makesrna/RNA_define.h
+++ b/source/blender/makesrna/RNA_define.h
@@ -57,6 +57,10 @@ void RNA_struct_free(BlenderRNA *brna, StructRNA *srna);
PropertyRNA *RNA_def_boolean(StructRNA *srna, const char *identifier, int default_value,
const char *ui_name, const char *ui_description);
+PropertyRNA *RNA_def_boolean_array(StructRNA *srna, const char *identifier, int len, int *default_value,
+ const char *ui_name, const char *ui_description);
+PropertyRNA *RNA_def_boolean_vector(StructRNA *srna, const char *identifier, int len, int *default_value,
+ const char *ui_name, const char *ui_description);
PropertyRNA *RNA_def_int(StructRNA *srna, const char *identifier, int default_value, int hardmin, int hardmax,
const char *ui_name, const char *ui_description, int softmin, int softmax);
diff --git a/source/blender/makesrna/intern/CMakeLists.txt b/source/blender/makesrna/intern/CMakeLists.txt
index 0d35f7cb1aa..15be45ae59b 100644
--- a/source/blender/makesrna/intern/CMakeLists.txt
+++ b/source/blender/makesrna/intern/CMakeLists.txt
@@ -66,6 +66,7 @@ SET(DEFSRC
rna_space.c
rna_text.c
rna_texture.c
+ rna_timeline.c
rna_userdef.c
rna_vfont.c
rna_vpaint.c
diff --git a/source/blender/makesrna/intern/SConscript b/source/blender/makesrna/intern/SConscript
index 330153f0a7f..ac05eab14d1 100644
--- a/source/blender/makesrna/intern/SConscript
+++ b/source/blender/makesrna/intern/SConscript
@@ -2,10 +2,12 @@
import sys
import os
+ap = os.path.abspath
+
Import ('env')
cflags = '-Wall'
defines = []
-root_build_dir=env['BF_BUILDDIR']
+root_build_dir=ap(env['BF_BUILDDIR'])
source_files = env.Glob('*.c')
@@ -74,17 +76,17 @@ rna_dict = rna.Dictionary()
rna.Depends (generated_files, makesrna)
# this seems bad, how to retrieve it from scons?
-build_dir = root_build_dir + '/source/blender/makesrna/intern/'
+build_dir = ap(root_build_dir + '/source/blender/makesrna/intern') + "/"
if env['OURPLATFORM'] != 'linuxcross':
- rna.Command (generated_files, '', root_build_dir+os.sep+"makesrna " + build_dir)
+ rna.Command (generated_files, '', ap(root_build_dir+os.sep+"makesrna ") + " \"" + build_dir + "\"")
else:
- rna.Command (generated_files, '', root_build_dir+os.sep+"makesrna.exe " + build_dir)
+ rna.Command (generated_files, '', ap(root_build_dir+os.sep+"makesrna.exe") + " \"" + build_dir + "\"")
if USE_WINE:
- rna.Command (generated_files, '', 'wine ' + root_build_dir+os.sep+"makesrna.exe " + build_dir)
+ rna.Command (generated_files, '', ap('wine ' + root_build_dir+os.sep+"makesrna.exe") + " \"" + build_dir + "\"")
else:
- rna.Command (generated_files, '', root_build_dir+os.sep+"makesrna.exe " + build_dir)
+ rna.Command (generated_files, '', ap(root_build_dir+os.sep+"makesrna.exe") + " \"" + build_dir + "\"")
obj = ['intern/rna_access.c', 'intern/rna_dependency.c']
diff --git a/source/blender/makesrna/intern/makesrna.c b/source/blender/makesrna/intern/makesrna.c
index 33af7945878..4b7b5babc2e 100644
--- a/source/blender/makesrna/intern/makesrna.c
+++ b/source/blender/makesrna/intern/makesrna.c
@@ -1285,6 +1285,7 @@ RNAProcessItem PROCESS_ITEMS[]= {
{"rna_sequence.c", RNA_def_sequence},
{"rna_space.c", RNA_def_space},
{"rna_text.c", RNA_def_text},
+ {"rna_timeline.c", RNA_def_timeline_marker},
{"rna_sound.c", RNA_def_sound},
{"rna_userdef.c", RNA_def_userdef},
{"rna_vfont.c", RNA_def_vfont},
diff --git a/source/blender/makesrna/intern/rna_action.c b/source/blender/makesrna/intern/rna_action.c
index d52881598f1..ba5423f0408 100755
--- a/source/blender/makesrna/intern/rna_action.c
+++ b/source/blender/makesrna/intern/rna_action.c
@@ -270,7 +270,7 @@ void rna_def_action(BlenderRNA *brna)
prop= RNA_def_property(srna, "pose_markers", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "markers", NULL);
- RNA_def_property_struct_type(prop, "UnknownType"); /* implement when timeline rna is wrapped */
+ RNA_def_property_struct_type(prop, "TimelineMarker");
RNA_def_property_ui_text(prop, "Pose Markers", "Markers specific to this Action, for labeling poses.");
}
diff --git a/source/blender/makesrna/intern/rna_define.c b/source/blender/makesrna/intern/rna_define.c
index f2b39e76354..48c93955784 100644
--- a/source/blender/makesrna/intern/rna_define.c
+++ b/source/blender/makesrna/intern/rna_define.c
@@ -1530,6 +1530,30 @@ PropertyRNA *RNA_def_boolean(StructRNA *srna, const char *identifier, int defaul
return prop;
}
+PropertyRNA *RNA_def_boolean_array(StructRNA *srna, const char *identifier, int len, int *default_value, const char *ui_name, const char *ui_description)
+{
+ PropertyRNA *prop;
+
+ prop= RNA_def_property(srna, identifier, PROP_BOOLEAN, PROP_NONE);
+ if(len != 0) RNA_def_property_array(prop, len);
+ if(default_value) RNA_def_property_boolean_array_default(prop, default_value);
+ RNA_def_property_ui_text(prop, ui_name, ui_description);
+
+ return prop;
+}
+
+PropertyRNA *RNA_def_boolean_vector(StructRNA *srna, const char *identifier, int len, int *default_value, const char *ui_name, const char *ui_description)
+{
+ PropertyRNA *prop;
+
+ prop= RNA_def_property(srna, identifier, PROP_BOOLEAN, PROP_VECTOR);
+ if(len != 0) RNA_def_property_array(prop, len);
+ if(default_value) RNA_def_property_boolean_array_default(prop, default_value);
+ RNA_def_property_ui_text(prop, ui_name, ui_description);
+
+ return prop;
+}
+
PropertyRNA *RNA_def_int(StructRNA *srna, const char *identifier, int default_value, int hardmin, int hardmax,
const char *ui_name, const char *ui_description, int softmin, int softmax)
{
diff --git a/source/blender/makesrna/intern/rna_internal.h b/source/blender/makesrna/intern/rna_internal.h
index 528cac6fda6..2665d8eab09 100644
--- a/source/blender/makesrna/intern/rna_internal.h
+++ b/source/blender/makesrna/intern/rna_internal.h
@@ -135,6 +135,7 @@ void RNA_def_sequence(struct BlenderRNA *brna);
void RNA_def_space(struct BlenderRNA *brna);
void RNA_def_text(struct BlenderRNA *brna);
void RNA_def_texture(struct BlenderRNA *brna);
+void RNA_def_timeline_marker(struct BlenderRNA *brna);
void RNA_def_sound(struct BlenderRNA *brna);
void RNA_def_userdef(struct BlenderRNA *brna);
void RNA_def_vfont(struct BlenderRNA *brna);
diff --git a/source/blender/makesrna/intern/rna_material.c b/source/blender/makesrna/intern/rna_material.c
index de25be7d22f..6054d4e6a42 100644
--- a/source/blender/makesrna/intern/rna_material.c
+++ b/source/blender/makesrna/intern/rna_material.c
@@ -340,7 +340,7 @@ static void rna_def_material_raymirror(BlenderRNA *brna)
prop= RNA_def_property(srna, "gloss_anisotropic", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "aniso_gloss_mir");
RNA_def_property_range(prop, 0.0f, 1.0f);
- RNA_def_property_ui_text(prop, "Gloss Anisotropic", "The shape of the reflection, from 0.0 (circular) to 1.0 (fully stretched along the tangent.");
+ RNA_def_property_ui_text(prop, "Gloss Anisotropy", "The shape of the reflection, from 0.0 (circular) to 1.0 (fully stretched along the tangent.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "gloss_samples", PROP_INT, PROP_NONE);
@@ -364,13 +364,13 @@ static void rna_def_material_raymirror(BlenderRNA *brna)
prop= RNA_def_property(srna, "distance", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dist_mir");
RNA_def_property_range(prop, 0.0f, 10000.0f);
- RNA_def_property_ui_text(prop, "Max Dist", "Maximum distance of reflected rays. Reflections further than this range fade to sky color or material color.");
+ RNA_def_property_ui_text(prop, "Maximum Distance", "Maximum distance of reflected rays. Reflections further than this range fade to sky color or material color.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "fade_to", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "fadeto_mir");
RNA_def_property_enum_items(prop, prop_fadeto_mir_items);
- RNA_def_property_ui_text(prop, "End Fade-out", "The color that rays with no intersection within the Max Distance take. Material color can be best for indoor scenes, sky color for outdoor.");
+ RNA_def_property_ui_text(prop, "Fade-out Color", "The color that rays with no intersection within the Max Distance take. Material color can be best for indoor scenes, sky color for outdoor.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
}
@@ -550,43 +550,43 @@ static void rna_def_material_halo(BlenderRNA *brna)
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "ring", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_RINGS); /* use bitflags */
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_RINGS);
RNA_def_property_ui_text(prop, "Rings", "Renders rings over halo.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "lines", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_LINES); /* use bitflags */
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_LINES);
RNA_def_property_ui_text(prop, "Lines", "Renders star shaped lines over halo.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "star", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_STAR); /* use bitflags */
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_STAR);
RNA_def_property_ui_text(prop, "Star", "Renders halo as a star.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "use_texture", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALOTEX); /* use bitflags */
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALOTEX);
RNA_def_property_ui_text(prop, "Use Texture", "Gives halo a texture.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "use_vertex_normal", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALOPUNO); /* use bitflags */
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALOPUNO);
RNA_def_property_ui_text(prop, "Use Vertex Normal", "Uses the vertex normal to specify the dimension of the halo.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "xalpha", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_XALPHA); /* use bitflags */
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_XALPHA);
RNA_def_property_ui_text(prop, "Extreme Alpha", "Uses extreme alpha.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "shaded", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_SHADE); /* use bitflags */
- RNA_def_property_ui_text(prop, "Shaded", "Lets halo receive light and shadows.");
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_SHADE);
+ RNA_def_property_ui_text(prop, "Shaded", "Lets halo receive light and shadows from external objects.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
prop= RNA_def_property(srna, "soft", PROP_BOOLEAN, PROP_NONE);
- RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_SOFT); /* use bitflags */
- RNA_def_property_ui_text(prop, "Soft", "Softens the halo.");
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_HALO_SOFT);
+ RNA_def_property_ui_text(prop, "Soft", "Softens the edges of halos at intersections with other geometry.");
RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
}
@@ -657,7 +657,7 @@ void rna_def_material_specularity(StructRNA *srna)
prop= RNA_def_property(srna, "specularity", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "spec");
RNA_def_property_range(prop, 0, 1);
- RNA_def_property_ui_text(prop, "Specularity", "");
+ RNA_def_property_ui_text(prop, "Specularity Intensity", "");
/* XXX: this field is also used for Halo hardness. should probably be fixed in DNA */
prop= RNA_def_property(srna, "specular_hardness", PROP_FLOAT, PROP_NONE);
@@ -668,7 +668,7 @@ void rna_def_material_specularity(StructRNA *srna)
prop= RNA_def_property(srna, "specular_refraction", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "refrac");
RNA_def_property_range(prop, 1, 10);
- RNA_def_property_ui_text(prop, "Specular Refraction", "");
+ RNA_def_property_ui_text(prop, "Specular IOR", "");
/* XXX: evil "param" field also does specular stuff */
@@ -758,7 +758,7 @@ void RNA_def_material(BlenderRNA *brna)
prop= RNA_def_property(srna, "cubic", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shade_flag", MA_CUBIC);
- RNA_def_property_ui_text(prop, "Cubic", "Use cubic interpolation for diffuse values, for smoother transitions.");
+ RNA_def_property_ui_text(prop, "Cubic Interpolation", "Use cubic interpolation for diffuse values, for smoother transitions.");
prop= RNA_def_property(srna, "object_color", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "shade_flag", MA_OBCOLOR);
@@ -779,6 +779,113 @@ void RNA_def_material(BlenderRNA *brna)
RNA_def_property_range(prop, 0.001, 1);
RNA_def_property_ui_text(prop, "Shadow Casting Alpha", "Shadow casting alpha, only in use for Irregular Shadowbuffer.");
+ prop= RNA_def_property(srna, "light_group", PROP_POINTER, PROP_NONE);
+ RNA_def_property_pointer_sdna(prop, NULL, "group");
+ RNA_def_property_struct_type(prop, "Group");
+ RNA_def_property_ui_text(prop, "Light Group", "Limit lighting to lamps in this Group.");
+
+ /* flags */
+
+ prop= RNA_def_property(srna, "light_group_exclusive", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_GROUP_NOLAY);
+ RNA_def_property_ui_text(prop, "Light Group Exclusive", "Material uses the light group exclusively - these lamps are excluded from other scene lighting.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "traceable", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_TRACEBLE);
+ RNA_def_property_ui_text(prop, "Traceable", "Include this material and geometry that uses it in ray tracing calculations.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "shadows", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_SHADOW);
+ RNA_def_property_ui_text(prop, "Shadows", "Allows this material to receive shadows.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "shadeless", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_SHLESS);
+ RNA_def_property_ui_text(prop, "Shadeless", "Makes this material insensitive to light or shadow.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "wireframe", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_WIRE);
+ RNA_def_property_ui_text(prop, "Wireframe", "Render the edges of faces as wires (not supported in ray tracing).");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "vertex_color_light", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_VERTEXCOL);
+ RNA_def_property_ui_text(prop, "Vertex Color Light", "Add vertex colors as additional lighting.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "vertex_color_paint", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_VERTEXCOLP);
+ RNA_def_property_ui_text(prop, "Vertex Color Paint", "Replaces object base color with vertex colors (multiplies with 'texture face' face assigned textures).");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "invert_z", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_ZINV);
+ RNA_def_property_ui_text(prop, "Invert Z Depth", "Renders material's faces with an inverted Z buffer (scanline only).");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "sky", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_ENV);
+ RNA_def_property_ui_text(prop, "Sky", "Renders this material with zero alpha, with sky background in place (scanline only).");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "only_shadow", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_ONLYSHADOW);
+ RNA_def_property_ui_text(prop, "Only Shadow", "Renders shadows as the material's alpha value, making materials transparent except for shadowed areas.");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "face_texture", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_FACETEXTURE);
+ RNA_def_property_ui_text(prop, "Face Textures", "Replaces the object's base color with color from face assigned image textures");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "face_texture_alpha", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_FACETEXTURE_ALPHA);
+ RNA_def_property_ui_text(prop, "Face Textures Alpha", "Replaces the object's base alpha value with alpha from face assigned image textures");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "cast_shadows_only", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_ONLYCAST);
+ RNA_def_property_ui_text(prop, "Cast Shadows Only", "Makes objects with this material appear invisible, only casting shadows (not rendered).");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "exclude_mist", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_NOMIST);
+ RNA_def_property_ui_text(prop, "Exclude Mist", "Excludes this material from mist effects (in world settings)");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "radiosity", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_RADIO);
+ RNA_def_property_ui_text(prop, "Radiosity", "Include this material in radiosity calculations");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "transparent_shadows", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_SHADOW_TRA);
+ RNA_def_property_ui_text(prop, "Transparent Shadows", "Allow this object to receive transparent shadows casted through other objects");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "ray_shadow_bias", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_RAYBIAS);
+ RNA_def_property_ui_text(prop, "Ray Shadow Bias", "Prevents raytraced shadow errors on surfaces with smooth shaded normals (terminator problem)");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "full_oversampling", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_FULL_OSA);
+ RNA_def_property_ui_text(prop, "Full Oversampling", "Force this material to render full shading/textures for all anti-aliasing samples");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "cast_buffer_shadows", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_SHADBUF);
+ RNA_def_property_ui_text(prop, "Cast Buffer Shadows", "Allow this material to cast shadows from shadow buffer lamps");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
+ prop= RNA_def_property(srna, "tangent_shading", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "mode", MA_TANGENT_V);
+ RNA_def_property_ui_text(prop, "Tangent Shading", "Use the material's tangent vector instead of the normal for shading - for anisotropic shading effects");
+ RNA_def_property_update(prop, NC_MATERIAL|ND_SHADING, NULL);
+
/* nested structs */
prop= RNA_def_property(srna, "raytrace_mirror", PROP_POINTER, PROP_NEVER_NULL);
RNA_def_property_struct_type(prop, "MaterialRaytraceMirror");
diff --git a/source/blender/makesrna/intern/rna_particle.c b/source/blender/makesrna/intern/rna_particle.c
index fbf4e048f96..1e5ccfd9750 100644
--- a/source/blender/makesrna/intern/rna_particle.c
+++ b/source/blender/makesrna/intern/rna_particle.c
@@ -966,7 +966,7 @@ static void rna_def_particlesettings(BlenderRNA *brna)
RNA_def_property_range(prop, 0.0f, 200.0f);
RNA_def_property_ui_text(prop, "Brownian", "Specify the amount of brownian motion");
- prop= RNA_def_property(srna, "damp_factorq", PROP_FLOAT, PROP_NONE);
+ prop= RNA_def_property(srna, "damp_factor", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "dampfac");
RNA_def_property_range(prop, 0.0f, 1.0f);
RNA_def_property_ui_text(prop, "Damp", "Specify the amount of damping");
diff --git a/source/blender/makesrna/intern/rna_pose.c b/source/blender/makesrna/intern/rna_pose.c
index f3fd9350710..dbaf4279884 100755
--- a/source/blender/makesrna/intern/rna_pose.c
+++ b/source/blender/makesrna/intern/rna_pose.c
@@ -35,8 +35,18 @@
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
+#include "WM_types.h"
+
#ifdef RNA_RUNTIME
+#include "BKE_context.h"
+#include "BKE_depsgraph.h"
+
+static void rna_Pose_update(bContext *C, PointerRNA *ptr)
+{
+ DAG_object_flush_update(CTX_data_scene(C), ptr->id.data, OB_RECALC_DATA);
+}
+
#else
/* users shouldn't be editing pose channel data directly -- better to set ipos and let blender calc pose_channel stuff */
@@ -128,24 +138,28 @@ static void rna_def_pose_channel(BlenderRNA *brna)
prop= RNA_def_property(srna, "location", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "loc");
RNA_def_property_ui_text(prop, "Location", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_POSE|ND_TRANSFORM, "rna_Pose_update");
prop= RNA_def_property(srna, "scale", PROP_FLOAT, PROP_VECTOR);
RNA_def_property_float_sdna(prop, NULL, "size");
RNA_def_property_ui_text(prop, "Scale", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_POSE|ND_TRANSFORM, "rna_Pose_update");
prop= RNA_def_property(srna, "rotation", PROP_FLOAT, PROP_ROTATION);
RNA_def_property_float_sdna(prop, NULL, "quat");
RNA_def_property_ui_text(prop, "Rotation", "Rotation in Quaternions.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_POSE|ND_TRANSFORM, "rna_Pose_update");
prop= RNA_def_property(srna, "euler_rotation", PROP_FLOAT, PROP_ROTATION);
RNA_def_property_float_sdna(prop, NULL, "eul");
- RNA_def_property_ui_text(prop, "Rotation", "Rotation in Eulers.");
+ RNA_def_property_ui_text(prop, "Rotation (Euler)", "Rotation in Eulers.");
+ RNA_def_property_update(prop, NC_OBJECT|ND_POSE|ND_TRANSFORM, "rna_Pose_update");
prop= RNA_def_property(srna, "rotation_mode", PROP_ENUM, PROP_NONE);
RNA_def_property_enum_sdna(prop, NULL, "rotmode");
- RNA_def_property_flag(prop, PROP_NOT_EDITABLE);
RNA_def_property_enum_items(prop, prop_rotmode_items);
RNA_def_property_ui_text(prop, "Rotation Mode", "");
+ RNA_def_property_update(prop, NC_OBJECT|ND_POSE|ND_TRANSFORM, "rna_Pose_update");
/* These three matrix properties await an implementation of the PROP_MATRIX subtype, which currently doesn't exist. */
/* prop= RNA_def_property(srna, "channel_matrix", PROP_FLOAT, PROP_MATRIX);
diff --git a/source/blender/makesrna/intern/rna_scene.c b/source/blender/makesrna/intern/rna_scene.c
index a287846f716..281ab5b097b 100644
--- a/source/blender/makesrna/intern/rna_scene.c
+++ b/source/blender/makesrna/intern/rna_scene.c
@@ -470,6 +470,11 @@ void RNA_def_scene(BlenderRNA *brna)
RNA_def_property_struct_type(prop, "SceneRenderData");
RNA_def_property_ui_text(prop, "Render Data", "");
+ prop= RNA_def_property(srna, "timeline_markers", PROP_COLLECTION, PROP_NONE);
+ RNA_def_property_collection_sdna(prop, NULL, "markers", NULL);
+ RNA_def_property_struct_type(prop, "TimelineMarker");
+ RNA_def_property_ui_text(prop, "Timeline Markers", "Markers used in all timelines for the current scene.");
+
rna_def_tool_settings(brna);
rna_def_scene_render_data(brna);
}
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 793727d4d7b..c889a0ec195 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -31,6 +31,8 @@
#include "DNA_space_types.h"
+#include "WM_types.h"
+
#ifdef RNA_RUNTIME
#include "DNA_scene_types.h"
@@ -58,12 +60,12 @@ static StructRNA* rna_Space_refine(struct PointerRNA *ptr)
/*case SPACE_INFO:
return &RNA_SpaceUserPreferences;
case SPACE_SEQ:
- return &RNA_SpaceSequenceEditor;
+ return &RNA_SpaceSequenceEditor;*/
case SPACE_TEXT:
return &RNA_SpaceTextEditor;
//case SPACE_IMASEL:
// return &RNA_SpaceImageBrowser;
- case SPACE_SOUND:
+ /*case SPACE_SOUND:
return &RNA_SpaceAudioWindow;
case SPACE_ACTION:
return &RNA_SpaceDopeSheetEditor;
@@ -93,6 +95,14 @@ static void rna_SpaceImage_paint_update(bContext *C, PointerRNA *ptr)
brush_check_exists(&scene->toolsettings->imapaint.brush);
}
+void rna_SpaceTextEditor_word_wrap_set(PointerRNA *ptr, int value)
+{
+ SpaceText *st= (SpaceText*)(ptr->data);
+
+ st->wordwrap= value;
+ st->left= 0;
+}
+
#else
static void rna_def_space(BlenderRNA *brna)
@@ -304,10 +314,80 @@ static void rna_def_space_image(BlenderRNA *brna)
rna_def_space_image_uv(brna);
}
+static void rna_def_space_text(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static EnumPropertyItem font_size_items[] = {
+ {12, "SCREEN_12", "Screen 12", ""},
+ {15, "SCREEN_15", "Screen 15", ""},
+ {0, NULL, NULL, NULL}};
+
+ srna= RNA_def_struct(brna, "SpaceTextEditor", "Space");
+ RNA_def_struct_sdna(srna, "SpaceText");
+ RNA_def_struct_ui_text(srna, "Space Text Editor", "Text editor space data.");
+
+ /* text */
+ prop= RNA_def_property(srna, "text", PROP_POINTER, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Text", "Text displayed and edited in this space.");
+
+ /* display */
+ prop= RNA_def_property(srna, "syntax_highlight", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "showsyntax", 0);
+ RNA_def_property_ui_text(prop, "Syntax Highlight", "Syntax highlight for scripting.");
+ RNA_def_property_update(prop, NC_TEXT|ND_DISPLAY, NULL);
+
+ prop= RNA_def_property(srna, "word_wrap", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "wordwrap", 0);
+ RNA_def_property_boolean_funcs(prop, NULL, "rna_SpaceTextEditor_word_wrap_set");
+ RNA_def_property_ui_text(prop, "Word Wrap", "Wrap words if there is not enough horizontal space.");
+ RNA_def_property_update(prop, NC_TEXT|ND_DISPLAY, NULL);
+
+ prop= RNA_def_property(srna, "line_numbers", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "showlinenrs", 0);
+ RNA_def_property_ui_text(prop, "Line Numbers", "Show line numbers next to the text.");
+ RNA_def_property_update(prop, NC_TEXT|ND_DISPLAY, NULL);
+
+ prop= RNA_def_property(srna, "overwrite", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Overwrite", "Overwrite characters when typing rather than inserting them.");
+ RNA_def_property_update(prop, NC_TEXT|ND_DISPLAY, NULL);
+
+ prop= RNA_def_property(srna, "tab_width", PROP_INT, PROP_NONE);
+ RNA_def_property_int_sdna(prop, NULL, "tabnumber");
+ RNA_def_property_range(prop, 2, 8);
+ RNA_def_property_ui_text(prop, "Tab Width", "Number of spaces to display tabs with.");
+ RNA_def_property_update(prop, NC_TEXT|ND_DISPLAY, NULL);
+
+ prop= RNA_def_property(srna, "font_size", PROP_ENUM, PROP_NONE);
+ RNA_def_property_enum_sdna(prop, NULL, "lheight");
+ RNA_def_property_enum_items(prop, font_size_items);
+ RNA_def_property_ui_text(prop, "Font Size", "Font size to use for displaying the text.");
+ RNA_def_property_update(prop, NC_TEXT|ND_DISPLAY, NULL);
+
+ /* find */
+ prop= RNA_def_property(srna, "find_all", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", ST_FIND_ALL);
+ RNA_def_property_ui_text(prop, "Find All", "Search in all text datablocks, instead of only the active one.");
+
+ prop= RNA_def_property(srna, "find_wrap", PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "flags", ST_FIND_WRAP);
+ RNA_def_property_ui_text(prop, "Find Wrap", "Search again from the start of the file when reaching the end.");
+
+ prop= RNA_def_property(srna, "find_text", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "findstr");
+ RNA_def_property_ui_text(prop, "Find Text", "Text to search for with the find tool.");
+
+ prop= RNA_def_property(srna, "replace_text", PROP_STRING, PROP_NONE);
+ RNA_def_property_string_sdna(prop, NULL, "replacestr");
+ RNA_def_property_ui_text(prop, "Replace Text", "Text to replace selected text with using the replace tool.");
+}
+
void RNA_def_space(BlenderRNA *brna)
{
rna_def_space(brna);
rna_def_space_image(brna);
+ rna_def_space_text(brna);
}
#endif
diff --git a/source/blender/makesrna/intern/rna_timeline.c b/source/blender/makesrna/intern/rna_timeline.c
new file mode 100755
index 00000000000..d42603e1952
--- /dev/null
+++ b/source/blender/makesrna/intern/rna_timeline.c
@@ -0,0 +1,62 @@
+/**
+ * $Id$
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ *
+ * Contributor(s): Blender Foundation (2008), Roland Hess
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include <stdlib.h>
+
+#include "RNA_define.h"
+#include "RNA_types.h"
+
+#include "rna_internal.h"
+
+#include "DNA_scene_types.h"
+
+#ifdef RNA_RUNTIME
+
+#else
+
+static void rna_def_timeline_marker(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ srna= RNA_def_struct(brna, "TimelineMarker", NULL);
+ RNA_def_struct_sdna(srna, "TimeMarker");
+ RNA_def_struct_ui_text(srna, "Marker", "Marker for noting points in the timeline.");
+
+ /* String values */
+ prop= RNA_def_property(srna, "name", PROP_STRING, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Name", "");
+ RNA_def_struct_name_property(srna, prop);
+
+ prop= RNA_def_property(srna, "frame", PROP_INT, PROP_NONE);
+ RNA_def_property_ui_text(prop, "Frame", "The frame on which the timeline marker appears.");
+}
+
+void RNA_def_timeline_marker(BlenderRNA *brna)
+{
+ rna_def_timeline_marker(brna);
+}
+
+
+#endif
diff --git a/source/blender/render/intern/source/shadeoutput.c b/source/blender/render/intern/source/shadeoutput.c
index 4c627056c1d..aafd81a5b56 100644
--- a/source/blender/render/intern/source/shadeoutput.c
+++ b/source/blender/render/intern/source/shadeoutput.c
@@ -377,25 +377,6 @@ void renderspothalo(ShadeInput *shi, float *col, float alpha)
/* ---------------- shaders ----------------------- */
-static double Normalize_d(double *n)
-{
- double d;
-
- d= n[0]*n[0]+n[1]*n[1]+n[2]*n[2];
-
- if(d>0.00000000000000001) {
- d= sqrt(d);
-
- n[0]/=d;
- n[1]/=d;
- n[2]/=d;
- } else {
- n[0]=n[1]=n[2]= 0.0;
- d= 0.0;
- }
- return d;
-}
-
/* mix of 'real' fresnel and allowing control. grad defines blending gradient */
float fresnel_fac(float *view, float *vn, float grad, float fac)
{
diff --git a/source/blender/windowmanager/WM_api.h b/source/blender/windowmanager/WM_api.h
index 2dd1aa871c2..5a059b72e27 100644
--- a/source/blender/windowmanager/WM_api.h
+++ b/source/blender/windowmanager/WM_api.h
@@ -105,7 +105,7 @@ void WM_event_remove_handlers(struct bContext *C, ListBase *handlers);
void WM_event_add_mousemove(struct bContext *C);
int WM_modal_tweak_exit(struct wmEvent *evt, int tweak_event);
-void WM_event_add_notifier(struct bContext *C, unsigned int type, void *data);
+void WM_event_add_notifier(const struct bContext *C, unsigned int type, void *data);
void wm_event_add (struct wmWindow *win, struct wmEvent *event_to_add); /* XXX only for warning */
@@ -206,5 +206,10 @@ void WM_jobs_start(struct wmJob *);
void WM_jobs_stop(struct wmWindowManager *wm, void *owner);
void WM_jobs_stop_all(struct wmWindowManager *wm);
+ /* clipboard */
+char *WM_clipboard_text_get(int selection);
+void WM_clipboard_text_set(char *buf, int selection);
+
+
#endif /* WM_API_H */
diff --git a/source/blender/windowmanager/WM_types.h b/source/blender/windowmanager/WM_types.h
index 9dc2d5cf0b2..d3cb60d90fe 100644
--- a/source/blender/windowmanager/WM_types.h
+++ b/source/blender/windowmanager/WM_types.h
@@ -156,6 +156,7 @@ typedef struct wmNotifier {
#define NC_GROUP (9<<24)
#define NC_IMAGE (10<<24)
#define NC_BRUSH (11<<24)
+#define NC_TEXT (12<<24)
/* data type, 256 entries is enough, it can overlap */
#define NOTE_DATA 0x00FF0000
@@ -205,6 +206,10 @@ typedef struct wmNotifier {
#define ND_LIGHTING_DRAW (45<<16)
#define ND_SKY (46<<16)
+ /* NC_TEXT Text */
+#define ND_CURSOR (50<<16)
+#define ND_DISPLAY (51<<16)
+
/* subtype, 256 entries too */
#define NOTE_SUBTYPE 0x0000FF00
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 6eb71d3d314..8c06be7a37e 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -96,7 +96,7 @@ void wm_event_free_all(wmWindow *win)
/* ********************* notifiers, listeners *************** */
/* XXX: in future, which notifiers to send to other windows? */
-void WM_event_add_notifier(bContext *C, unsigned int type, void *reference)
+void WM_event_add_notifier(const bContext *C, unsigned int type, void *reference)
{
wmNotifier *note= MEM_callocN(sizeof(wmNotifier), "notifier");
@@ -151,12 +151,15 @@ void wm_event_do_notifiers(bContext *C)
}
if(note->window==win) {
if(note->category==NC_SCREEN) {
- if(note->data==ND_SCREENBROWSE)
+ if(note->data==ND_SCREENBROWSE) {
ED_screen_set(C, note->reference); // XXX hrms, think this over!
+ printf("screen set %p\n", note->reference);
+ }
}
else if(note->category==NC_SCENE) {
if(note->data==ND_SCENEBROWSE) {
ED_screen_set_scene(C, note->reference); // XXX hrms, think this over!
+ printf("scene set %p\n", note->reference);
}
else if(note->data==ND_FRAME)
do_anim= 1;
@@ -218,18 +221,20 @@ void wm_event_do_notifiers(bContext *C)
}
}
- /* update all objects, ipos, matrices, displists, etc. Flags set by depgraph or manual,
- no layer check here, gets correct flushed */
- /* sets first, we allow per definition current scene to have dependencies on sets */
- if(scene->set) {
- for(SETLOOPER(scene->set, base))
+ if(G.rendering==0) { // XXX make lock in future, or separated derivedmesh users in scene
+
+ /* update all objects, ipos, matrices, displists, etc. Flags set by depgraph or manual,
+ no layer check here, gets correct flushed */
+ /* sets first, we allow per definition current scene to have dependencies on sets */
+ if(scene->set) {
+ for(SETLOOPER(scene->set, base))
+ object_handle_update(scene, base->object);
+ }
+
+ for(base= scene->base.first; base; base= base->next) {
object_handle_update(scene, base->object);
- }
-
- for(base= scene->base.first; base; base= base->next) {
- object_handle_update(scene, base->object);
- }
-
+ }
+ }
}
CTX_wm_window_set(C, NULL);
}
diff --git a/source/blender/windowmanager/intern/wm_init_exit.c b/source/blender/windowmanager/intern/wm_init_exit.c
index 9c13a321cf1..01e959715d3 100644
--- a/source/blender/windowmanager/intern/wm_init_exit.c
+++ b/source/blender/windowmanager/intern/wm_init_exit.c
@@ -170,7 +170,7 @@ extern wchar_t *copybuf;
extern wchar_t *copybufinfo;
// XXX copy/paste buffer stuff...
-extern void free_actcopybuf();
+extern void free_anim_copybuf();
/* called in creator.c even... tsk, split this! */
void WM_exit(bContext *C)
@@ -220,8 +220,7 @@ void WM_exit(bContext *C)
ED_preview_free_dbase(); /* frees a Main dbase, before free_blender! */
free_blender(); /* blender.c, does entire library and spacetypes */
// free_matcopybuf();
-// free_ipocopybuf();
- free_actcopybuf();
+ free_anim_copybuf();
// free_vertexpaint();
// free_imagepaint();
diff --git a/source/blender/windowmanager/intern/wm_window.c b/source/blender/windowmanager/intern/wm_window.c
index 43871ba5a7f..a57fff58948 100644
--- a/source/blender/windowmanager/intern/wm_window.c
+++ b/source/blender/windowmanager/intern/wm_window.c
@@ -661,6 +661,57 @@ void WM_event_remove_window_timer(wmWindow *win, wmTimer *timer)
}
}
+/* ******************* clipboard **************** */
+
+char *WM_clipboard_text_get(int selection)
+{
+ char *p, *p2, *buf, *newbuf;
+
+ buf= (char*)GHOST_getClipboard(selection);
+ if(!buf)
+ return NULL;
+
+ /* always convert from \r\n to \n */
+ newbuf= MEM_callocN(strlen(buf)+1, "WM_clipboard_text_get");
+
+ for(p= buf, p2= newbuf; *p; p++) {
+ if(*p != '\r')
+ *(p2++)= *p;
+ }
+ *p2= '\0';
+
+ free(buf); /* ghost uses regular malloc */
+
+ return newbuf;
+}
+
+void WM_clipboard_text_set(char *buf, int selection)
+{
+ /* do conversion from \n to \r\n on Windows */
+ char *p, *p2, *newbuf;
+ int newlen= 0;
+
+ for(p= buf; *p; p++) {
+ if(*p == '\n')
+ newlen += 2;
+ else
+ newlen++;
+ }
+
+ newbuf= MEM_callocN(newlen+1, "WM_clipboard_text_set");
+
+ for(p= buf, p2= newbuf; *p; p++, p2++) {
+ if(*p == '\n') {
+ *(p2++)= '\r'; *p2= '\n';
+ }
+ else *p2= *p;
+ }
+ *p2= '\0';
+
+ GHOST_putClipboard((GHOST_TInt8*)newbuf, selection);
+ MEM_freeN(newbuf);
+}
+
/* ************************************ */
void wm_window_get_position(wmWindow *win, int *posx_r, int *posy_r)
diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h
index 9b9af1844b6..4ccfc7e8a81 100644
--- a/source/blender/windowmanager/wm_event_types.h
+++ b/source/blender/windowmanager/wm_event_types.h
@@ -190,7 +190,8 @@
#define GRLESSKEY 173
/* for event checks */
-#define ISKEYBOARD(event) (event >='a' && event <=255)
+ /* only used for KM_TEXTINPUT, so assume that we want all user-inputtable ascii codes included */
+#define ISKEYBOARD(event) (event >=' ' && event <=255)
/* **************** BLENDER GESTURE EVENTS ********************* */