move around - flatter.
authorraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 17 Aug 2008 07:44:18 +0000 (07:44 +0000)
committerraster <raster@7cbeb6ba-43b4-40fd-8cce-4c39aea84d33>
Sun, 17 Aug 2008 07:44:18 +0000 (07:44 +0000)
git-svn-id: svn+ssh://svn.enlightenment.org/var/svn/e/trunk/evas@35497 7cbeb6ba-43b4-40fd-8cce-4c39aea84d33

543 files changed:
.cvsignore [new file with mode: 0644]
AUTHORS [new file with mode: 0644]
COPYING [new file with mode: 0644]
COPYING-PLAIN [new file with mode: 0644]
ChangeLog [new file with mode: 0644]
Doxyfile [new file with mode: 0644]
INSTALL [new file with mode: 0644]
Makefile.am [new file with mode: 0644]
NEWS [new file with mode: 0644]
README.in [new file with mode: 0644]
autogen.sh [new file with mode: 0755]
configure.in [new file with mode: 0644]
debian/.cvsignore [new file with mode: 0644]
debian/changelog.in [new file with mode: 0644]
debian/compat [new file with mode: 0644]
debian/control [new file with mode: 0644]
debian/copyright [new file with mode: 0644]
debian/libevas-dev.install [new file with mode: 0644]
debian/libevas-doc.dirs [new file with mode: 0644]
debian/libevas-doc.doc-base [new file with mode: 0644]
debian/libevas-engine-buffer.install [new file with mode: 0644]
debian/libevas-engine-fb.install [new file with mode: 0644]
debian/libevas-engine-gl-x11.install [new file with mode: 0644]
debian/libevas-engine-software-generic.install [new file with mode: 0644]
debian/libevas-engine-software-x11.install [new file with mode: 0644]
debian/libevas-engine-xrender.install [new file with mode: 0644]
debian/libevas-engines-extra.install [new file with mode: 0644]
debian/libevas-engines.install [new file with mode: 0644]
debian/libevas-loader-eet.install [new file with mode: 0644]
debian/libevas-loader-gif.install [new file with mode: 0644]
debian/libevas-loader-jpeg.install [new file with mode: 0644]
debian/libevas-loader-png.install [new file with mode: 0644]
debian/libevas-loader-svg.install [new file with mode: 0644]
debian/libevas-loader-tiff.install [new file with mode: 0644]
debian/libevas-loader-xpm.install [new file with mode: 0644]
debian/libevas-loaders.install [new file with mode: 0644]
debian/libevas-saver-eet.install [new file with mode: 0644]
debian/libevas-saver-jpeg.install [new file with mode: 0644]
debian/libevas-saver-png.install [new file with mode: 0644]
debian/libevas-saver-tiff.install [new file with mode: 0644]
debian/libevas-savers.install [new file with mode: 0644]
debian/libevas0.install [new file with mode: 0644]
debian/rules [new file with mode: 0644]
doc/.cvsignore [new file with mode: 0644]
doc/e.css [new file with mode: 0644]
doc/evas.css [new file with mode: 0644]
doc/foot.html [new file with mode: 0644]
doc/head.html [new file with mode: 0644]
doc/img/_.gif [new file with mode: 0644]
doc/img/b.png [new file with mode: 0644]
doc/img/evas.eps [new file with mode: 0644]
doc/img/evas.fig [new file with mode: 0644]
doc/img/evas.png [new file with mode: 0644]
doc/img/evas.xcf [new file with mode: 0644]
doc/img/evas_big.eps [new file with mode: 0644]
doc/img/evas_big.png [new file with mode: 0644]
doc/img/evas_mini.png [new file with mode: 0644]
doc/img/evas_small.png [new file with mode: 0644]
doc/img/hilite.png [new file with mode: 0644]
doc/img/n.gif [new file with mode: 0644]
doc/img/n.png [new file with mode: 0644]
doc/img/t.gif [new file with mode: 0644]
doc/img/t.png [new file with mode: 0644]
doc/img/tl.gif [new file with mode: 0644]
doc/img/tl.png [new file with mode: 0644]
evas-cairo-x11.pc.in [new file with mode: 0644]
evas-direct3d.pc.in [new file with mode: 0644]
evas-directfb.pc.in [new file with mode: 0644]
evas-fb.pc.in [new file with mode: 0644]
evas-glitz-x11.pc.in [new file with mode: 0644]
evas-opengl-glew.pc.in [new file with mode: 0644]
evas-opengl-x11.pc.in [new file with mode: 0644]
evas-software-16-ddraw.pc.in [new file with mode: 0644]
evas-software-16-wince.pc.in [new file with mode: 0644]
evas-software-16-x11.pc.in [new file with mode: 0644]
evas-software-buffer.pc.in [new file with mode: 0644]
evas-software-ddraw.pc.in [new file with mode: 0644]
evas-software-qtopia.pc.in [new file with mode: 0644]
evas-software-sdl.pc.in [new file with mode: 0644]
evas-software-x11.pc.in [new file with mode: 0644]
evas-software-xcb.pc.in [new file with mode: 0644]
evas-xrender-x11.pc.in [new file with mode: 0644]
evas-xrender-xcb.pc.in [new file with mode: 0644]
evas.c.in [new file with mode: 0644]
evas.pc.in [new file with mode: 0644]
evas.spec.in [new file with mode: 0644]
gendoc [new file with mode: 0755]
m4/evas_converter.m4 [new file with mode: 0644]
src/.cvsignore [new file with mode: 0644]
src/Makefile.am [new file with mode: 0644]
src/lib/.cvsignore [new file with mode: 0644]
src/lib/Evas.h [new file with mode: 0644]
src/lib/Evas_Data.h [new file with mode: 0644]
src/lib/Makefile.am [new file with mode: 0644]
src/lib/cache/.cvsignore [new file with mode: 0644]
src/lib/cache/Makefile.am [new file with mode: 0644]
src/lib/cache/evas_cache.h [new file with mode: 0644]
src/lib/cache/evas_cache_engine_image.c [new file with mode: 0644]
src/lib/cache/evas_cache_image.c [new file with mode: 0644]
src/lib/canvas/.cvsignore [new file with mode: 0644]
src/lib/canvas/Makefile.am [new file with mode: 0644]
src/lib/canvas/evas_async_events.c [new file with mode: 0644]
src/lib/canvas/evas_callbacks.c [new file with mode: 0644]
src/lib/canvas/evas_clip.c [new file with mode: 0644]
src/lib/canvas/evas_data.c [new file with mode: 0644]
src/lib/canvas/evas_events.c [new file with mode: 0644]
src/lib/canvas/evas_focus.c [new file with mode: 0644]
src/lib/canvas/evas_font_dir.c [new file with mode: 0644]
src/lib/canvas/evas_key.c [new file with mode: 0644]
src/lib/canvas/evas_key_grab.c [new file with mode: 0644]
src/lib/canvas/evas_layer.c [new file with mode: 0644]
src/lib/canvas/evas_main.c [new file with mode: 0644]
src/lib/canvas/evas_name.c [new file with mode: 0644]
src/lib/canvas/evas_object_gradient.c [new file with mode: 0644]
src/lib/canvas/evas_object_image.c [new file with mode: 0644]
src/lib/canvas/evas_object_inform.c [new file with mode: 0644]
src/lib/canvas/evas_object_intercept.c [new file with mode: 0644]
src/lib/canvas/evas_object_line.c [new file with mode: 0644]
src/lib/canvas/evas_object_main.c [new file with mode: 0644]
src/lib/canvas/evas_object_polygon.c [new file with mode: 0644]
src/lib/canvas/evas_object_rectangle.c [new file with mode: 0644]
src/lib/canvas/evas_object_smart.c [new file with mode: 0644]
src/lib/canvas/evas_object_text.c [new file with mode: 0644]
src/lib/canvas/evas_object_textblock.c [new file with mode: 0644]
src/lib/canvas/evas_rectangle.c [new file with mode: 0644]
src/lib/canvas/evas_render.c [new file with mode: 0644]
src/lib/canvas/evas_smart.c [new file with mode: 0644]
src/lib/canvas/evas_stack.c [new file with mode: 0644]
src/lib/data/.cvsignore [new file with mode: 0644]
src/lib/data/Makefile.am [new file with mode: 0644]
src/lib/data/evas_array.c [new file with mode: 0644]
src/lib/data/evas_array_hash.c [new file with mode: 0644]
src/lib/data/evas_hash.c [new file with mode: 0644]
src/lib/data/evas_inline_array.x [new file with mode: 0644]
src/lib/data/evas_list.c [new file with mode: 0644]
src/lib/data/evas_mempool.c [new file with mode: 0644]
src/lib/data/evas_mempool.h [new file with mode: 0644]
src/lib/data/evas_object_list.c [new file with mode: 0644]
src/lib/data/evas_stringshare.c [new file with mode: 0644]
src/lib/engines/.cvsignore [new file with mode: 0644]
src/lib/engines/Makefile.am [new file with mode: 0644]
src/lib/engines/common/.cvsignore [new file with mode: 0644]
src/lib/engines/common/Makefile.am [new file with mode: 0644]
src/lib/engines/common/evas_blend.h [new file with mode: 0644]
src/lib/engines/common/evas_blend_main.c [new file with mode: 0644]
src/lib/engines/common/evas_blend_private.h [new file with mode: 0644]
src/lib/engines/common/evas_blit_main.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_color.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_color.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_colorspace.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_colorspace.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_gry_1.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_gry_1.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_gry_4.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_gry_4.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_gry_8.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_gry_8.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_main.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_main.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_rgb_16.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_rgb_16.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_rgb_24.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_rgb_24.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_rgb_32.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_rgb_32.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_rgb_8.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_rgb_8.h [new file with mode: 0644]
src/lib/engines/common/evas_convert_yuv.c [new file with mode: 0644]
src/lib/engines/common/evas_convert_yuv.h [new file with mode: 0644]
src/lib/engines/common/evas_cpu.c [new file with mode: 0644]
src/lib/engines/common/evas_draw.h [new file with mode: 0644]
src/lib/engines/common/evas_draw_main.c [new file with mode: 0644]
src/lib/engines/common/evas_font.h [new file with mode: 0644]
src/lib/engines/common/evas_font_draw.c [new file with mode: 0644]
src/lib/engines/common/evas_font_load.c [new file with mode: 0644]
src/lib/engines/common/evas_font_main.c [new file with mode: 0644]
src/lib/engines/common/evas_font_query.c [new file with mode: 0644]
src/lib/engines/common/evas_gradient.h [new file with mode: 0644]
src/lib/engines/common/evas_gradient_angular.c [new file with mode: 0644]
src/lib/engines/common/evas_gradient_linear.c [new file with mode: 0644]
src/lib/engines/common/evas_gradient_main.c [new file with mode: 0644]
src/lib/engines/common/evas_gradient_private.h [new file with mode: 0644]
src/lib/engines/common/evas_gradient_radial.c [new file with mode: 0644]
src/lib/engines/common/evas_gradient_rectangular.c [new file with mode: 0644]
src/lib/engines/common/evas_gradient_sinusoidal.c [new file with mode: 0644]
src/lib/engines/common/evas_image.h [new file with mode: 0644]
src/lib/engines/common/evas_image_data.c [new file with mode: 0644]
src/lib/engines/common/evas_image_load.c [new file with mode: 0644]
src/lib/engines/common/evas_image_main.c [new file with mode: 0644]
src/lib/engines/common/evas_image_private.h [new file with mode: 0644]
src/lib/engines/common/evas_image_save.c [new file with mode: 0644]
src/lib/engines/common/evas_line.h [new file with mode: 0644]
src/lib/engines/common/evas_line_main.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add/.cvsignore [new file with mode: 0644]
src/lib/engines/common/evas_op_add/Makefile.am [new file with mode: 0644]
src/lib/engines/common/evas_op_add/op_add_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add/op_add_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add/op_add_mask_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add/op_add_mask_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add/op_add_pixel_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add/op_add_pixel_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add/op_add_pixel_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add/op_add_pixel_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add/op_add_pixel_mask_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add/op_add_pixel_mask_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_add_main_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/.cvsignore [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/Makefile.am [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/op_blend_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/op_blend_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/op_blend_mask_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/op_blend_mask_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/op_blend_pixel_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/op_blend_pixel_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/op_blend_pixel_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_blend_main_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/.cvsignore [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/Makefile.am [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/op_copy_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/op_copy_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/op_copy_mask_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/op_copy_mask_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/op_copy_pixel_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/op_copy_pixel_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/op_copy_pixel_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/op_copy_pixel_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/op_copy_pixel_mask_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy/op_copy_pixel_mask_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_copy_main_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/.cvsignore [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/Makefile.am [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/op_mask_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/op_mask_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/op_mask_mask_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/op_mask_mask_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/op_mask_pixel_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/op_mask_pixel_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/op_mask_pixel_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/op_mask_pixel_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/op_mask_pixel_mask_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask/op_mask_pixel_mask_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mask_main_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/.cvsignore [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/Makefile.am [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/op_mul_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/op_mul_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/op_mul_mask_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/op_mul_mask_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/op_mul_pixel_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/op_mul_pixel_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/op_mul_pixel_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/op_mul_pixel_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/op_mul_pixel_mask_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul/op_mul_pixel_mask_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_mul_main_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/.cvsignore [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/Makefile.am [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/op_sub_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/op_sub_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/op_sub_mask_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/op_sub_mask_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/op_sub_pixel_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/op_sub_pixel_color_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/op_sub_pixel_color_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/op_sub_pixel_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/op_sub_pixel_mask_.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub/op_sub_pixel_mask_i386.c [new file with mode: 0644]
src/lib/engines/common/evas_op_sub_main_.c [new file with mode: 0644]
src/lib/engines/common/evas_pipe.c [new file with mode: 0644]
src/lib/engines/common/evas_pipe.h [new file with mode: 0644]
src/lib/engines/common/evas_polygon.h [new file with mode: 0644]
src/lib/engines/common/evas_polygon_main.c [new file with mode: 0644]
src/lib/engines/common/evas_rectangle.h [new file with mode: 0644]
src/lib/engines/common/evas_rectangle_main.c [new file with mode: 0644]
src/lib/engines/common/evas_regionbuf.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_main.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_main.h [new file with mode: 0644]
src/lib/engines/common/evas_scale_sample.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_smooth.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_smooth.h [new file with mode: 0644]
src/lib/engines/common/evas_scale_smooth_scaler.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_smooth_scaler_down.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_smooth_scaler_downx.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_smooth_scaler_downx_downy.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_smooth_scaler_downy.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_smooth_scaler_noscale.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_smooth_scaler_up.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_span.c [new file with mode: 0644]
src/lib/engines/common/evas_scale_span.h [new file with mode: 0644]
src/lib/engines/common/evas_tiler.c [new file with mode: 0644]
src/lib/engines/common_16/.cvsignore [new file with mode: 0644]
src/lib/engines/common_16/Makefile.am [new file with mode: 0644]
src/lib/engines/common_16/evas_soft16_dither_mask.c [new file with mode: 0644]
src/lib/engines/common_16/evas_soft16_font.c [new file with mode: 0644]
src/lib/engines/common_16/evas_soft16_image_scaled_sampled.c [new file with mode: 0644]
src/lib/engines/common_16/evas_soft16_image_unscaled.c [new file with mode: 0644]
src/lib/engines/common_16/evas_soft16_line.c [new file with mode: 0644]
src/lib/engines/common_16/evas_soft16_main.c [new file with mode: 0644]
src/lib/engines/common_16/evas_soft16_polygon.c [new file with mode: 0644]
src/lib/engines/common_16/evas_soft16_rectangle.c [new file with mode: 0644]
src/lib/engines/common_16/evas_soft16_scanline_blend.c [new file with mode: 0644]
src/lib/engines/common_16/evas_soft16_scanline_fill.c [new file with mode: 0644]
src/lib/file/.cvsignore [new file with mode: 0644]
src/lib/file/Makefile.am [new file with mode: 0644]
src/lib/file/evas_module.c [new file with mode: 0644]
src/lib/file/evas_module.h [new file with mode: 0644]
src/lib/file/evas_path.c [new file with mode: 0644]
src/lib/file/evas_path.h [new file with mode: 0644]
src/lib/imaging/.cvsignore [new file with mode: 0644]
src/lib/imaging/Makefile.am [new file with mode: 0644]
src/lib/imaging/evas_imaging.c [new file with mode: 0644]
src/lib/include/.cvsignore [new file with mode: 0644]
src/lib/include/Makefile.am [new file with mode: 0644]
src/lib/include/evas_blend_ops.h [new file with mode: 0644]
src/lib/include/evas_cairo_common.h [new file with mode: 0644]
src/lib/include/evas_common.h [new file with mode: 0644]
src/lib/include/evas_common_soft16.h [new file with mode: 0644]
src/lib/include/evas_inline.x [new file with mode: 0644]
src/lib/include/evas_macros.h [new file with mode: 0644]
src/lib/include/evas_mmx.h [new file with mode: 0644]
src/lib/include/evas_options.h [new file with mode: 0644]
src/lib/include/evas_private.h [new file with mode: 0644]
src/lib/main.c [new file with mode: 0644]
src/modules/.cvsignore [new file with mode: 0644]
src/modules/Makefile.am [new file with mode: 0644]
src/modules/engines/.cvsignore [new file with mode: 0644]
src/modules/engines/Makefile.am [new file with mode: 0644]
src/modules/engines/buffer/.cvsignore [new file with mode: 0644]
src/modules/engines/buffer/Evas_Engine_Buffer.h [new file with mode: 0644]
src/modules/engines/buffer/Makefile.am [new file with mode: 0644]
src/modules/engines/buffer/evas_engine.c [new file with mode: 0644]
src/modules/engines/buffer/evas_engine.h [new file with mode: 0644]
src/modules/engines/buffer/evas_outbuf.c [new file with mode: 0644]
src/modules/engines/cairo_common/.cvsignore [new file with mode: 0644]
src/modules/engines/cairo_common/Makefile.am [new file with mode: 0644]
src/modules/engines/cairo_common/evas_cairo_common.h [new file with mode: 0644]
src/modules/engines/cairo_common/evas_cairo_main.c [new file with mode: 0644]
src/modules/engines/cairo_common/evas_cairo_private.h [new file with mode: 0644]
src/modules/engines/cairo_x11/.cvsignore [new file with mode: 0644]
src/modules/engines/cairo_x11/Evas_Engine_Cairo_X11.h [new file with mode: 0644]
src/modules/engines/cairo_x11/Makefile.am [new file with mode: 0644]
src/modules/engines/cairo_x11/evas_engine.c [new file with mode: 0644]
src/modules/engines/cairo_x11/evas_engine.h [new file with mode: 0644]
src/modules/engines/cairo_x11/evas_x_main.c [new file with mode: 0644]
src/modules/engines/direct3d/.cvsignore [new file with mode: 0644]
src/modules/engines/direct3d/Evas_Engine_Direct3D.h [new file with mode: 0644]
src/modules/engines/direct3d/Makefile.am [new file with mode: 0644]
src/modules/engines/direct3d/evas_direct3d_buffer.c [new file with mode: 0644]
src/modules/engines/direct3d/evas_direct3d_main.cpp [new file with mode: 0644]
src/modules/engines/direct3d/evas_engine.c [new file with mode: 0644]
src/modules/engines/direct3d/evas_engine.h [new file with mode: 0644]
src/modules/engines/direct3d/evas_outbuf.c [new file with mode: 0644]
src/modules/engines/fb/.cvsignore [new file with mode: 0644]
src/modules/engines/fb/Evas_Engine_FB.h [new file with mode: 0644]
src/modules/engines/fb/Makefile.am [new file with mode: 0644]
src/modules/engines/fb/evas_engine.c [new file with mode: 0644]
src/modules/engines/fb/evas_engine.h [new file with mode: 0644]
src/modules/engines/fb/evas_fb.h [new file with mode: 0644]
src/modules/engines/fb/evas_fb_main.c [new file with mode: 0644]
src/modules/engines/fb/evas_outbuf.c [new file with mode: 0644]
src/modules/engines/gl_common/.cvsignore [new file with mode: 0644]
src/modules/engines/gl_common/Makefile.am [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_common.h [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_context.c [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_font.c [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_gradient.c [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_image.c [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_line.c [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_misc.c [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_polygon.c [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_private.h [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_rectangle.c [new file with mode: 0644]
src/modules/engines/gl_common/evas_gl_texture.c [new file with mode: 0644]
src/modules/engines/gl_glew/.cvsignore [new file with mode: 0644]
src/modules/engines/gl_glew/Evas_Engine_GL_Glew.h [new file with mode: 0644]
src/modules/engines/gl_glew/Makefile.am [new file with mode: 0644]
src/modules/engines/gl_glew/evas_engine.c [new file with mode: 0644]
src/modules/engines/gl_glew/evas_engine.h [new file with mode: 0644]
src/modules/engines/gl_glew/evas_glew_main.c [new file with mode: 0644]
src/modules/engines/gl_x11/.cvsignore [new file with mode: 0644]
src/modules/engines/gl_x11/Evas_Engine_GL_X11.h [new file with mode: 0644]
src/modules/engines/gl_x11/Makefile.am [new file with mode: 0644]
src/modules/engines/gl_x11/evas_engine.c [new file with mode: 0644]
src/modules/engines/gl_x11/evas_engine.h [new file with mode: 0644]
src/modules/engines/gl_x11/evas_x_main.c [new file with mode: 0644]
src/modules/engines/glitz_x11/.cvsignore [new file with mode: 0644]
src/modules/engines/glitz_x11/Evas_Engine_Glitz_X11.h [new file with mode: 0644]
src/modules/engines/glitz_x11/Makefile.am [new file with mode: 0644]
src/modules/engines/glitz_x11/evas_engine.c [new file with mode: 0644]
src/modules/engines/glitz_x11/evas_engine.h [new file with mode: 0644]
src/modules/engines/glitz_x11/evas_engine_font.c [new file with mode: 0644]
src/modules/engines/glitz_x11/evas_engine_glitz.c [new file with mode: 0644]
src/modules/engines/glitz_x11/evas_engine_gradient.c [new file with mode: 0644]
src/modules/engines/glitz_x11/evas_engine_image.c [new file with mode: 0644]
src/modules/engines/glitz_x11/evas_engine_ximage.c [new file with mode: 0644]
src/modules/engines/software_16/.cvsignore [new file with mode: 0644]
src/modules/engines/software_16/Makefile.am [new file with mode: 0644]
src/modules/engines/software_16/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_16_ddraw/.cvsignore [new file with mode: 0644]
src/modules/engines/software_16_ddraw/Evas_Engine_Software_16_DDraw.h [new file with mode: 0644]
src/modules/engines/software_16_ddraw/Makefile.am [new file with mode: 0644]
src/modules/engines/software_16_ddraw/evas_ddraw_buffer.cpp [new file with mode: 0644]
src/modules/engines/software_16_ddraw/evas_ddraw_main.cpp [new file with mode: 0644]
src/modules/engines/software_16_ddraw/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_16_ddraw/evas_engine.h [new file with mode: 0644]
src/modules/engines/software_16_sdl/.cvsignore [new file with mode: 0644]
src/modules/engines/software_16_sdl/Evas_Engine_SDL_16.h [new file with mode: 0644]
src/modules/engines/software_16_sdl/Makefile.am [new file with mode: 0644]
src/modules/engines/software_16_sdl/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_16_sdl/evas_engine.h [new file with mode: 0644]
src/modules/engines/software_16_wince/.cvsignore [new file with mode: 0644]
src/modules/engines/software_16_wince/Evas_Engine_Software_16_WinCE.h [new file with mode: 0644]
src/modules/engines/software_16_wince/Makefile.am [new file with mode: 0644]
src/modules/engines/software_16_wince/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_16_wince/evas_engine.h [new file with mode: 0644]
src/modules/engines/software_16_wince/evas_wince_ddraw_buffer.cpp [new file with mode: 0644]
src/modules/engines/software_16_wince/evas_wince_fb_buffer.c [new file with mode: 0644]
src/modules/engines/software_16_wince/evas_wince_gapi.rc [new file with mode: 0644]
src/modules/engines/software_16_wince/evas_wince_gapi_buffer.c [new file with mode: 0644]
src/modules/engines/software_16_x11/.cvsignore [new file with mode: 0644]
src/modules/engines/software_16_x11/Evas_Engine_Software_16_X11.h [new file with mode: 0644]
src/modules/engines/software_16_x11/Makefile.am [new file with mode: 0644]
src/modules/engines/software_16_x11/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_16_x11/evas_engine.h [new file with mode: 0644]
src/modules/engines/software_16_x11/evas_x_buffer.c [new file with mode: 0644]
src/modules/engines/software_ddraw/.cvsignore [new file with mode: 0644]
src/modules/engines/software_ddraw/Evas_Engine_Software_DDraw.h [new file with mode: 0644]
src/modules/engines/software_ddraw/Makefile.am [new file with mode: 0644]
src/modules/engines/software_ddraw/evas_ddraw_buffer.c [new file with mode: 0644]
src/modules/engines/software_ddraw/evas_ddraw_main.cpp [new file with mode: 0644]
src/modules/engines/software_ddraw/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_ddraw/evas_engine.h [new file with mode: 0644]
src/modules/engines/software_ddraw/evas_outbuf.c [new file with mode: 0644]
src/modules/engines/software_generic/.cvsignore [new file with mode: 0644]
src/modules/engines/software_generic/Makefile.am [new file with mode: 0644]
src/modules/engines/software_generic/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_qtopia/.cvsignore [new file with mode: 0644]
src/modules/engines/software_qtopia/Evas_Engine_Software_Qtopia.h [new file with mode: 0644]
src/modules/engines/software_qtopia/Makefile.am [new file with mode: 0644]
src/modules/engines/software_qtopia/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_qtopia/evas_engine.h [new file with mode: 0644]
src/modules/engines/software_qtopia/evas_outbuf.c [new file with mode: 0644]
src/modules/engines/software_qtopia/evas_qt_main.cpp [new file with mode: 0644]
src/modules/engines/software_sdl/.cvsignore [new file with mode: 0644]
src/modules/engines/software_sdl/Evas_Engine_SDL.h [new file with mode: 0644]
src/modules/engines/software_sdl/Makefile.am [new file with mode: 0644]
src/modules/engines/software_sdl/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_sdl/evas_engine.h [new file with mode: 0644]
src/modules/engines/software_win32_gdi/.cvsignore [new file with mode: 0644]
src/modules/engines/software_win32_gdi/Evas_Engine_Software_Win32_GDI.h [new file with mode: 0644]
src/modules/engines/software_win32_gdi/Makefile.am [new file with mode: 0644]
src/modules/engines/software_win32_gdi/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_win32_gdi/evas_engine.h [new file with mode: 0644]
src/modules/engines/software_win32_gdi/evas_outbuf.c [new file with mode: 0644]
src/modules/engines/software_win32_gdi/evas_win32_buffer.c [new file with mode: 0644]
src/modules/engines/software_win32_gdi/evas_win32_main.c [new file with mode: 0644]
src/modules/engines/software_x11/.cvsignore [new file with mode: 0644]
src/modules/engines/software_x11/Evas_Engine_Software_X11.h [new file with mode: 0644]
src/modules/engines/software_x11/Makefile.am [new file with mode: 0644]
src/modules/engines/software_x11/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_x11/evas_engine.h [new file with mode: 0644]
src/modules/engines/software_x11/evas_outbuf.c [new file with mode: 0644]
src/modules/engines/software_x11/evas_x_buffer.c [new file with mode: 0644]
src/modules/engines/software_x11/evas_x_color.c [new file with mode: 0644]
src/modules/engines/software_x11/evas_x_main.c [new file with mode: 0644]
src/modules/engines/software_xcb/.cvsignore [new file with mode: 0644]
src/modules/engines/software_xcb/Evas_Engine_Software_Xcb.h [new file with mode: 0644]
src/modules/engines/software_xcb/Makefile.am [new file with mode: 0644]
src/modules/engines/software_xcb/evas_engine.c [new file with mode: 0644]
src/modules/engines/software_xcb/evas_engine.h [new file with mode: 0644]
src/modules/engines/software_xcb/evas_outbuf.c [new file with mode: 0644]
src/modules/engines/software_xcb/evas_xcb_buffer.c [new file with mode: 0644]
src/modules/engines/software_xcb/evas_xcb_color.c [new file with mode: 0644]
src/modules/engines/software_xcb/evas_xcb_main.c [new file with mode: 0644]
src/modules/engines/xrender_x11/.cvsignore [new file with mode: 0644]
src/modules/engines/xrender_x11/Evas_Engine_XRender_X11.h [new file with mode: 0644]
src/modules/engines/xrender_x11/Makefile.am [new file with mode: 0644]
src/modules/engines/xrender_x11/evas_engine.c [new file with mode: 0644]
src/modules/engines/xrender_x11/evas_engine.h [new file with mode: 0644]
src/modules/engines/xrender_x11/evas_engine_font.c [new file with mode: 0644]
src/modules/engines/xrender_x11/evas_engine_gradient.c [new file with mode: 0644]
src/modules/engines/xrender_x11/evas_engine_image.c [new file with mode: 0644]
src/modules/engines/xrender_x11/evas_engine_ximage.c [new file with mode: 0644]
src/modules/engines/xrender_x11/evas_engine_xrender.c [new file with mode: 0644]
src/modules/engines/xrender_xcb/.cvsignore [new file with mode: 0644]
src/modules/engines/xrender_xcb/Evas_Engine_XRender_Xcb.h [new file with mode: 0644]
src/modules/engines/xrender_xcb/Makefile.am [new file with mode: 0644]
src/modules/engines/xrender_xcb/evas_engine.c [new file with mode: 0644]
src/modules/engines/xrender_xcb/evas_engine.h [new file with mode: 0644]
src/modules/engines/xrender_xcb/evas_engine_font.c [new file with mode: 0644]
src/modules/engines/xrender_xcb/evas_engine_gradient.c [new file with mode: 0644]
src/modules/engines/xrender_xcb/evas_engine_image.c [new file with mode: 0644]
src/modules/engines/xrender_xcb/evas_engine_ximage.c [new file with mode: 0644]
src/modules/engines/xrender_xcb/evas_engine_xrender.c [new file with mode: 0644]
src/modules/loaders/.cvsignore [new file with mode: 0644]
src/modules/loaders/Makefile.am [new file with mode: 0644]
src/modules/loaders/edb/.cvsignore [new file with mode: 0644]
src/modules/loaders/edb/Makefile.am [new file with mode: 0644]
src/modules/loaders/edb/evas_image_load_edb.c [new file with mode: 0644]
src/modules/loaders/eet/.cvsignore [new file with mode: 0644]
src/modules/loaders/eet/Makefile.am [new file with mode: 0644]
src/modules/loaders/eet/evas_image_load_eet.c [new file with mode: 0644]
src/modules/loaders/gif/.cvsignore [new file with mode: 0644]
src/modules/loaders/gif/Makefile.am [new file with mode: 0644]
src/modules/loaders/gif/evas_image_load_gif.c [new file with mode: 0644]
src/modules/loaders/jpeg/.cvsignore [new file with mode: 0644]
src/modules/loaders/jpeg/Makefile.am [new file with mode: 0644]
src/modules/loaders/jpeg/evas_image_load_jpeg.c [new file with mode: 0644]
src/modules/loaders/pmaps/.cvsignore [new file with mode: 0644]
src/modules/loaders/pmaps/Makefile.am [new file with mode: 0644]
src/modules/loaders/pmaps/evas_image_load_pmaps.c [new file with mode: 0644]
src/modules/loaders/png/.cvsignore [new file with mode: 0644]
src/modules/loaders/png/Makefile.am [new file with mode: 0644]
src/modules/loaders/png/evas_image_load_png.c [new file with mode: 0644]
src/modules/loaders/svg/.cvsignore [new file with mode: 0644]
src/modules/loaders/svg/Makefile.am [new file with mode: 0644]
src/modules/loaders/svg/evas_image_load_svg.c [new file with mode: 0644]
src/modules/loaders/tiff/.cvsignore [new file with mode: 0644]
src/modules/loaders/tiff/Makefile.am [new file with mode: 0644]
src/modules/loaders/tiff/evas_image_load_tiff.c [new file with mode: 0644]
src/modules/loaders/xpm/.cvsignore [new file with mode: 0644]
src/modules/loaders/xpm/Makefile.am [new file with mode: 0644]
src/modules/loaders/xpm/evas_image_load_xpm.c [new file with mode: 0644]
src/modules/savers/.cvsignore [new file with mode: 0644]
src/modules/savers/Makefile.am [new file with mode: 0644]
src/modules/savers/edb/.cvsignore [new file with mode: 0644]
src/modules/savers/edb/Makefile.am [new file with mode: 0644]
src/modules/savers/edb/evas_image_save_edb.c [new file with mode: 0644]
src/modules/savers/eet/.cvsignore [new file with mode: 0644]
src/modules/savers/eet/Makefile.am [new file with mode: 0644]
src/modules/savers/eet/evas_image_save_eet.c [new file with mode: 0644]
src/modules/savers/jpeg/.cvsignore [new file with mode: 0644]
src/modules/savers/jpeg/Makefile.am [new file with mode: 0644]
src/modules/savers/jpeg/evas_image_save_jpeg.c [new file with mode: 0644]
src/modules/savers/png/.cvsignore [new file with mode: 0644]
src/modules/savers/png/Makefile.am [new file with mode: 0644]
src/modules/savers/png/evas_image_save_png.c [new file with mode: 0644]
src/modules/savers/tiff/.cvsignore [new file with mode: 0644]
src/modules/savers/tiff/Makefile.am [new file with mode: 0644]
src/modules/savers/tiff/evas_image_save_tiff.c [new file with mode: 0644]

diff --git a/.cvsignore b/.cvsignore
new file mode 100644 (file)
index 0000000..bd35322
--- /dev/null
@@ -0,0 +1,28 @@
+config.guess
+config.sub
+ltmain.sh
+aclocal.m4
+*.cache
+config.h.in
+Makefile.in
+configure
+config.log
+Makefile
+libtool
+config.status
+evas-config
+*.pc
+config.h
+stamp-h1
+evas_docs.tar.gz
+compile
+depcomp
+missing
+install-sh
+doc
+*.tar.gz
+*.oe
+*.bb
+*.spec
+README
+mkinstalldirs
diff --git a/AUTHORS b/AUTHORS
new file mode 100644 (file)
index 0000000..a93633a
--- /dev/null
+++ b/AUTHORS
@@ -0,0 +1,15 @@
+Carsten Haitzler <raster@rasterman.com>
+Till Adam <till@adam-lilienthal.de>
+Steve Ireland <sireland@pobox.com>
+Brett Nash <nash@fluffyspider.com.au>
+Tilman Sauerbeck <tilman@code-monkey.de>
+Corey Donohoe <atmos@atmos.org>
+Yuri Hudobin <glassy_ape@users.sourceforge.net>
+Nathan Ingersoll <ningerso@d.umn.edu>
+Willem Monsuwe <willem@stack.nl>
+Jose O Gonzalez <jose_ogp@juno.com>
+Bernhard Nemec <Bernhard.Nemec@viasyshc.com>
+Jorge Luis Zapata Muga <jorgeluis.zapata@gmail.com>
+Cedric Bail <cedric.bail@free.fr>
+Gustavo Sverzut Barbieri <barbieri@gmail.com>
+Vincent Torri <vtorri at univ-evry dot fr>
diff --git a/COPYING b/COPYING
new file mode 100644 (file)
index 0000000..474fcc5
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,28 @@
+Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies of the Software and its Copyright notices. In addition publicly
+documented acknowledgment must be given that this software has been used if no
+source code of this software is made available publicly. This includes
+acknowledgments in either Copyright notices, Manuals, Publicity and Marketing
+documents or any documentation provided with any product containing this
+software. This License does not apply to any software that links to the
+libraries provided by this software (statically or dynamically), but only to
+the software provided.
+
+Please see the COPYING.PLAIN for a plain-english explanation of this notice
+and it's intent.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 
+IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/COPYING-PLAIN b/COPYING-PLAIN
new file mode 100644 (file)
index 0000000..376875e
--- /dev/null
@@ -0,0 +1,33 @@
+Plain English Copyright Notice
+
+This file is not intended to be the actual License. The reason this file
+exists is that we here are programmers and engineers. We aren't lawyers. We
+provide licenses that we THINK say the right things, but we have our own
+intentions at heart. This is a plain-english explanation of what those
+intentions are, and if you follow them you will be within the "spirit" of
+the license.
+
+The intent is for us to enjoy writing software that is useful to us (the
+AUTHORS) and allow others to use it freely and also benefit from the work we
+put into making it. We don't want to restrict others using it. They should
+not *HAVE* to make the source code of the applications they write that
+simply link to these libraries (be that statically or dynamically), or for
+them to be limited as to what license they choose to use (be it open, closed
+or anything else). But we would like to know you are using these libraries.
+We simply would like to know that it has been useful to someone. This is why
+we ask for acknowledgement of some sort.
+
+You can do what you want with the source of this software - it doesn't
+matter. We still have it here for ourselves and it is open and free to use
+and download and play with. It can't be taken away. We don't really mind what
+you do with the source to your software. We would simply like to know that
+you are using it - especially if it makes it to a commerical product. If you
+simply e-mail all the AUTHORS (see COPYING and AUTHORS files) telling us, and
+then make sure you include a paragraph or page in the manual for the product
+with the copyright notice and state that you used this software, we will be
+very happy. If you want to contribute back modifications and fixes you may have
+made we will welcome those too with open arms (generally). If you want help
+with changes needed, ports needed or features to be added, arrangements can
+be easily made with some dialogue.
+
+Carsten Haitzler <raster@rasterman.com>
diff --git a/ChangeLog b/ChangeLog
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/Doxyfile b/Doxyfile
new file mode 100644 (file)
index 0000000..0f1a4da
--- /dev/null
+++ b/Doxyfile
@@ -0,0 +1,139 @@
+PROJECT_NAME           = Evas
+PROJECT_NUMBER         =
+OUTPUT_DIRECTORY       = doc
+INPUT                  = evas.c.in ./src/lib
+IMAGE_PATH             = doc/img
+OUTPUT_LANGUAGE        = English
+GENERATE_HTML          = YES
+HTML_OUTPUT            = html
+HTML_FILE_EXTENSION    = .html
+HTML_HEADER            = doc/head.html
+HTML_FOOTER            = doc/foot.html
+HTML_STYLESHEET        = doc/e.css
+HTML_ALIGN_MEMBERS     = YES
+ENUM_VALUES_PER_LINE   = 1
+GENERATE_HTMLHELP      = NO
+CHM_FILE               = 
+HHC_LOCATION           = 
+GENERATE_CHI           = NO
+BINARY_TOC             = NO
+TOC_EXPAND             = NO
+DISABLE_INDEX          = YES
+EXTRACT_ALL            = NO
+EXTRACT_PRIVATE        = NO
+EXTRACT_STATIC         = NO
+EXTRACT_LOCAL_CLASSES  = NO
+HIDE_UNDOC_MEMBERS     = YES
+HIDE_UNDOC_CLASSES     = YES
+HIDE_FRIEND_COMPOUNDS  = YES
+BRIEF_MEMBER_DESC      = YES
+REPEAT_BRIEF           = YES
+ALWAYS_DETAILED_SEC    = NO
+INLINE_INHERITED_MEMB  = NO
+FULL_PATH_NAMES        = NO
+STRIP_FROM_PATH        = 
+INTERNAL_DOCS          = NO
+STRIP_CODE_COMMENTS    = YES
+CASE_SENSE_NAMES       = YES
+SHORT_NAMES            = NO
+HIDE_SCOPE_NAMES       = NO
+VERBATIM_HEADERS       = NO
+SHOW_INCLUDE_FILES     = NO
+JAVADOC_AUTOBRIEF      = YES
+MULTILINE_CPP_IS_BRIEF = NO
+DETAILS_AT_TOP         = NO
+INHERIT_DOCS           = YES
+INLINE_INFO            = YES
+SORT_MEMBER_DOCS       = YES
+DISTRIBUTE_GROUP_DOC   = NO
+TAB_SIZE               = 2
+GENERATE_TODOLIST      = YES
+GENERATE_TESTLIST      = YES
+GENERATE_BUGLIST       = YES
+GENERATE_DEPRECATEDLIST= YES
+ALIASES                = 
+ENABLED_SECTIONS       = 
+MAX_INITIALIZER_LINES  = 30
+OPTIMIZE_OUTPUT_FOR_C  = YES
+OPTIMIZE_OUTPUT_JAVA   = NO
+SHOW_USED_FILES        = NO
+QUIET                  = NO
+WARNINGS               = YES
+WARN_IF_UNDOCUMENTED   = YES
+WARN_FORMAT            = "$file:$line: $text"
+WARN_LOGFILE           = 
+FILE_PATTERNS          =
+RECURSIVE              = YES
+EXCLUDE                = 
+EXCLUDE_SYMLINKS       = NO
+EXCLUDE_PATTERNS       = 
+EXAMPLE_PATH           = 
+EXAMPLE_PATTERNS       = 
+EXAMPLE_RECURSIVE      = NO
+INPUT_FILTER           = 
+FILTER_SOURCE_FILES    = NO
+SOURCE_BROWSER         = NO
+INLINE_SOURCES         = NO
+REFERENCED_BY_RELATION = YES
+REFERENCES_RELATION    = YES
+ALPHABETICAL_INDEX     = YES
+COLS_IN_ALPHA_INDEX    = 2
+IGNORE_PREFIX          = 
+GENERATE_TREEVIEW      = NO
+TREEVIEW_WIDTH         = 250
+GENERATE_LATEX         = YES
+LATEX_OUTPUT           = latex
+LATEX_CMD_NAME         = latex
+MAKEINDEX_CMD_NAME     = makeindex
+COMPACT_LATEX          = NO
+PAPER_TYPE             = a4wide
+EXTRA_PACKAGES         = 
+LATEX_HEADER           = 
+PDF_HYPERLINKS         = YES
+USE_PDFLATEX           = NO
+LATEX_BATCHMODE        = NO
+GENERATE_RTF           = NO
+RTF_OUTPUT             = rtf
+COMPACT_RTF            = NO
+RTF_HYPERLINKS         = NO
+RTF_STYLESHEET_FILE    = 
+RTF_EXTENSIONS_FILE    = 
+GENERATE_MAN           = YES
+MAN_OUTPUT             = man
+MAN_EXTENSION          = .3
+MAN_LINKS              = YES
+GENERATE_XML           = NO
+XML_SCHEMA             = 
+XML_DTD                = 
+GENERATE_AUTOGEN_DEF   = NO
+ENABLE_PREPROCESSING   = YES
+MACRO_EXPANSION        = NO
+EXPAND_ONLY_PREDEF     = NO
+SEARCH_INCLUDES        = NO
+INCLUDE_PATH           =
+INCLUDE_FILE_PATTERNS  = 
+PREDEFINED             = 
+EXPAND_AS_DEFINED      = 
+SKIP_FUNCTION_MACROS   = YES
+TAGFILES               = 
+GENERATE_TAGFILE       = 
+ALLEXTERNALS           = NO
+EXTERNAL_GROUPS        = YES
+PERL_PATH              = /usr/bin/perl
+CLASS_DIAGRAMS         = NO
+HIDE_UNDOC_RELATIONS   = YES
+HAVE_DOT               = NO
+CLASS_GRAPH            = NO
+COLLABORATION_GRAPH    = NO
+TEMPLATE_RELATIONS     = NO
+INCLUDE_GRAPH          = NO
+INCLUDED_BY_GRAPH      = NO
+GRAPHICAL_HIERARCHY    = NO
+DOT_IMAGE_FORMAT       = png
+DOT_PATH               = 
+DOTFILE_DIRS           = 
+MAX_DOT_GRAPH_WIDTH    = 512
+MAX_DOT_GRAPH_HEIGHT   = 512
+GENERATE_LEGEND        = YES
+DOT_CLEANUP            = YES
+SEARCHENGINE           = NO
diff --git a/INSTALL b/INSTALL
new file mode 100644 (file)
index 0000000..a4b76cb
--- /dev/null
+++ b/INSTALL
@@ -0,0 +1,17 @@
+COMPILING and INSTALLING:
+
+please see the README file.
+
+NB: you will need pkgconfig package (available for debian and for redhat -
+try www.rpmfind.net if you're lost, or go to the pkgconfig website:
+http://www.freedesktop.org/software/pkgconfig/ ) if your are taking this from 
+CVS and having to run ./autogen.sh)
+
+NOTE: for compilation with MinGW, fnmatch.h is probably missing.
+      That file can be found here:
+http://www.koders.com/c/fid2B518462CB1EED3D4E31E271DB83CD1582F6EEBE.aspx
+      It should be installed in the mingw include directory.
+
+NOTE: for the OpenGL engine on Windows, the glew library:
+http://glew.sourceforge.net/
+      is needed.
diff --git a/Makefile.am b/Makefile.am
new file mode 100644 (file)
index 0000000..5b16b84
--- /dev/null
@@ -0,0 +1,156 @@
+ACLOCAL_AMFLAGS = -I m4
+
+SUBDIRS = src
+
+MAINTAINERCLEANFILES = \
+Makefile.in \
+aclocal.m4 \
+config.guess \
+config.h.in \
+config.sub \
+configure \
+install-sh \
+ltconfig \
+ltmain.sh \
+missing \
+mkinstalldirs \
+stamp-h.in \
+build-stamp \
+configure-stamp \
+depcomp \
+evas_docs.tar.gz \
+evas.c \
+README \
+evas-cairo-x11.pc \
+evas-directfb.pc \
+evas-fb.pc \
+evas-glitz-x11.pc \
+evas-opengl-x11.pc \
+evas-opengl-glew.pc \
+evas-software-buffer.pc \
+evas-software-qtopia.pc \
+evas-software-x11.pc \
+evas-software-16-x11.pc \
+evas-software-xcb.pc \
+evas-xrender-x11.pc \
+evas-xrender-xcb.pc \
+evas-software-ddraw.pc \
+evas-software-16-ddraw.pc \
+evas-direct3d.pc \
+evas-software-16-wince.pc \
+evas-software-sdl.pc \
+evas.pc \
+evas.spec
+
+bin_SCRIPTS =
+
+EXTRA_DIST = \
+AUTHORS \
+COPYING \
+COPYING-PLAIN \
+autogen.sh \
+evas.c.in \
+gendoc \
+Doxyfile \
+README.in \
+README \
+evas.pc.in \
+evas-cairo-x11.pc.in \
+evas-directfb.pc.in \
+evas-fb.pc.in \
+evas-glitz-x11.pc.in \
+evas-opengl-x11.pc.in \
+evas-opengl-glew.pc.in \
+evas-software-buffer.pc.in \
+evas-software-qtopia.pc.in \
+evas-software-x11.pc.in \
+evas-software-16-x11.pc.in \
+evas-software-xcb.pc.in \
+evas-xrender-x11.pc.in \
+evas-xrender-xcb.pc.in \
+evas-software-ddraw.pc.in \
+evas-software-16-ddraw.pc.in \
+evas-direct3d.pc.in \
+evas-software-16-wince.pc.in \
+evas-software-sdl.pc.in \
+evas.spec.in evas.spec \
+doc gendoc
+
+if BUILD_ENGINE_SOFTWARE_X11
+psoftwarex11 = evas-software-x11.pc
+endif
+
+if BUILD_ENGINE_SOFTWARE_16_X11
+psoftware16x11 = evas-software-16-x11.pc
+endif
+
+if BUILD_ENGINE_SOFTWARE_XCB
+psoftwarexcb = evas-software-xcb.pc
+endif
+
+#if BUILD_ENGINE_DIRECTFB
+#pdirectfb = evas-directfb.pc
+#endif
+
+if BUILD_ENGINE_FB
+pfb = evas-fb.pc
+endif
+
+if BUILD_ENGINE_GLITZ_X11
+pglitzx11 = evas-glitz-x11.pc
+endif
+
+if BUILD_ENGINE_BUFFER
+psoftwarebuffer = evas-software-buffer.pc
+endif
+
+if BUILD_ENGINE_SOFTWARE_QTOPIA
+psoftwareqtopia = evas-software-qtopia.pc
+endif
+
+if BUILD_ENGINE_GL_X11
+popenglx11 = evas-opengl-x11.pc
+endif
+
+if BUILD_ENGINE_GL_GLEW
+popenglglew = evas-opengl-glew.pc
+endif
+
+if BUILD_ENGINE_CAIRO_X11
+pcairox11 = evas-cairo-x11.pc
+endif
+
+if BUILD_ENGINE_XRENDER_X11
+pxrenderx11 = evas-xrender-x11.pc
+endif
+
+if BUILD_ENGINE_XRENDER_XCB
+pxrenderxcb = evas-xrender-xcb.pc
+endif
+
+if BUILD_ENGINE_SOFTWARE_DDRAW
+psoftwareddraw = evas-software-ddraw.pc
+endif
+
+if BUILD_ENGINE_SOFTWARE_16_DDRAW
+psoftware16ddraw = evas-software-16-ddraw.pc
+endif
+
+if BUILD_ENGINE_DIRECT3D
+pdirect3d = evas-direct3d.pc
+endif
+
+if BUILD_ENGINE_SOFTWARE_16_WINCE
+psoftware16wince = evas-software-16-wince.pc
+endif
+
+if BUILD_ENGINE_SDL
+psoftwaresdl = evas-software-sdl.pc
+endif
+
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = \
+       evas.pc $(psoftwarex11) $(psoftwarexcb) $(pdirectfb) $(pfb) \
+       $(psoftwarebuffer) $(psoftwareqtopia) $(popenglx11) $(pcairox11) \
+       $(pxrenderx11) $(pxrenderxcb) $(pglitzx11) $(psoftwareddraw) $(psoftwaresdl) \
+       $(psoftware16x11) $(pdirect3d) $(psoftware16ddraw) $(psoftware16wince) $(popenglglew)
diff --git a/NEWS b/NEWS
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/README.in b/README.in
new file mode 100644 (file)
index 0000000..b0897f9
--- /dev/null
+++ b/README.in
@@ -0,0 +1,277 @@
+Evas @VERSION@
+
+Evas is a clean display canvas API for several target display systems
+that can draw anti-aliased text, smooth super and sub-sampled scaled
+images, alpha-blend objects much and more.
+
+Requirements:
+-------------
+
+Must:
+  libc libm freetype2.1.9+
+
+Recommended:
+  libX11 libXext libXrender fontconfig libpng libjpeg eet libpthread
+
+Optional:
+  XCB SDL OpenGL Qtopia librsvg libtiff libgif edb DirectFB
+
+--------------------------------------------------------------------------
+Evas as of 0.9.9 has a new (and incompatible) API. Why? It's much cleaner
+and more compact. Designed for portable access to different display systems.
+It is also much more optimised internally, uses much less ram than previous
+Evas libraries, and is tiny. Evas when compiled for the Ipaq is a grand
+total of 191Kb (thats all of Evas minus libjpeg, libpng, libz (required for 
+libpng), and minus freetype (required for font rendering)). I have plans that 
+may involve having an alternative font engine other than freetype to minimise
+requirements, and having a native (optional) image loader for an image
+format that may end up being custom to evas, but will minimise code &
+requirements especially for embedded use.
+
+Evas uses very little RAM too (try profiling it in memprof if you want to 
+know) most of the ram allocated, if you look, is for freetype itself,
+image pixel data, and font glyph data. You can't really avoid this, though
+evas tries to share this data as much as possible and not duplicate where it
+can. Feel free to point me at sensible memory optimisations etc. though :) I 
+want this baby to be lean, mean tiny, fast and do everything from your 
+massive multi-cpu desktop with gobs of ram and disk to a tiny watch.
+
+Evas also supports full UTF-8 for text object strings, thus allowing for
+full internationalised text strings (if your font gives you all the
+characters). I've tested with quite a few fonts and it works quite well.
+Though this requires a unicode compatible font with unicode charmap support
+(cyberbit is quite good actually as a font). For now Evas draws the fonts
+only from left to right, so arabic, hebrew etc. won't display quite right,
+direction-wise, but the characters do.
+
+--------------------------------------------------------------------------
+if you want to know what options to enable
+./configure --help
+
+Notes:
+  the small dither mask is faster on the ipaq, but is not as good looking. on
+    desktop machines it makes no speed difference so only use
+    --enable-small-dither-mask if you are compiling for the ipaq
+  you need at least 1 image loader if you want to load images.
+  gcc 3.0.x on solaris screws up the jpeg code so erroring out doesn't work.
+    use gcc 3.2 on solaris.
+
+--------------------------------------------------------------------------
+notes on features:
+
+SCALING:
+--enable-scale-sample
+
+this enables the sampling scaler code. this is the fastest image scaling
+code, but also the lowest quality. when scaling up pixels will become blocky
+and when scaling down you will see shimmering/aliasing artifacts. this is a
+speed vs. quality tradeoff
+
+--enable-scale-smooth
+
+this is the nicest looking scaler that is not that much slower than
+tri-linear, but it looks really good. it also uses mipmaps and is optimised
+heavily. it is recommended to always use this unless you are really
+struggling for speed and are qilling to forego the quality
+
+DITHERING:
+--enable-small-dither-mask
+
+this uses a 4x4 dither mask instead of 128x128. on desktop boxes these days
+(pentium, pentium2, amd etc.) the speed difference is not really measurable,
+but the quality of the 128x128 dither mask is quite a lot better. patterns
+of dithering are much less noticable, so it is recommended to not enable
+this unless you are struggling for speed. the compaq ipaq for example shows
+a slowdown with this large a dither mask so enabling a small dither mask is
+recommended unless you really want to forego the speed.
+
+ENGINES:
+--enable-software-x11
+
+this enables the software x11 rendering engine that renders to X drawable
+targets using highly optimised software routines. there is no hardware
+assist here. this engine requires X11 to be installed to build (and run).
+This is a godo generic engine that is fast and can run in X for good
+development and debugging purposes.
+
+--enable-software-xcb
+this enable the software xcb rendering engine. It allows the same
+features than the software x11 engine. It require the XCB and XCBImage
+libraries. For the test programs, XCBICCCM is also needed.
+
+--enable-fb
+
+this is the software framebuffer driving engine. this uses the linux
+framebuffer device (/dev/fb<x>) and will currently just inherit the current
+framebuffer settings on the fb device and use them to run in. this engine is
+almost fully functional except for the fb management itself. i'd be quite
+happy for people to help out with fixing up the fb init & management code to
+properly set up a vt and release it etc. this engine is specifically geared
+towards peoel writing minimalist display systems for embedded devices such
+as the ipaq, zaurus, etc. it also scales up to high-res desktop systems as
+well and performs outstandingly. i have measured up to 67% speedup over X11
+using the fb driver insetad of X11.
+
+--enable-direcfb
+
+this is the direct fb engine that uses direcftb (http://www.directfb.org) on
+linux to access the framebuffer with (or maybe without) acceleration. for
+people making set-top boxes or just wanting an alternative to X this is
+really good. it may also be useful for embedded devices supported by
+directfb that offer acceleration (otherwise the fb driver will likely be
+faster).
+
+--enable-sdl
+
+this is the sdl engine that uses sdl library (http://www.libsdl.org). This
+library should work on many operating system.
+
+
+CPU:
+--enable-cpu-c
+
+this enabled the c code. you can actually build the code withotu the c
+fallback code and only have the mmx routines for example. it is suggested to
+always use this regardless uness you have some definite size issues with the
+code.
+
+--enable-cpu-mmx
+
+this enables the mmx optimised routines. this works for pentium, pentium2,
+pentium3, pentium4, athlon and duron processors. it can get quite
+considerable speedups, souse it if you can. ppc owners just have to live with
+the c fallback functions unfortunately as no one has provided any ALTIVEC asm 
+routines yet. :) arm owners will also have to rely on the c fallback
+routines as i haven't managed to come up with any arm assembly that actually
+can beat the c code (when compiled with all optimisations) in speed.
+
+--enable-cpu-sse
+
+this enables sse optimizations availbale in he pentium3 and 4 cpus (not
+athlon and duron or pentium 2 or pentium cpu's). ppc owners just have to
+live with the c fallback functions unfortunately as no one has provided any
+ALTIVEC asm routines yet. :) arm owners will also have to rely on the c
+fallback routines as i haven't managed to come up with any arm assembly that 
+actually can beat the c code (when compiled with all optimizations) in speed.
+
+IMAGE LOADERS:
+--enable-image-loader-png
+
+this enables the loader code that loads png files using libpng. there may be
+call for embedded devices later that have custom written small image
+loaders that uses less disk space than libpng to load custom format images.
+for now this is the only loader so you may as well include it.
+
+--enable-image-loader-jpeg
+
+this enables the loader code that loads jpeg files using libjpeg.
+
+CONVERTERS:
+--enable-convert-16-rgb-565
+
+the most common converter you'll want for 16bpp. this means 5 bits for red,
+6 bits for green and 5 bits for blue are used.
+
+--enable-convert-16-rgb-555
+
+this is a converter for what many people know as "15 bit" color. you might
+want to enable this for X output as it used to be common to find many cards
+that do this.
+
+--enable-convert-16-rgb-444
+
+this converter outputs to 12bit packed (int 16 bit WORDS).
+
+--enable-convert-16-rgb-ipq
+
+this converter was written specifically for the ipaq (and may apply to
+similarly configured devices) because it lies about its screen depth. it
+says it is 16bit 565 (that means 5 upper bits of the WORD are red, the next 6
+bits are for green abd the next 5 for blue) but in fact only the upper 4
+bits of each color component (red green and blue) are significant and work,
+so effectively the display is 12 bits of color, not 16, but padded out to
+fill 16bits, with unused bits in the color masks. X on the ipaq advertises
+it as a full 16bpp 565 display (i can't remember what the linux framebuffer
+advertised it as) and so many lumps of code can be fooled into rendering
+data badly because they think the output will look as the expect. This
+renderer assuems the upper 4 bits fo each color primitie only are
+significant and renders accordingly. this produces nice quality images on
+the ipaq and even still works in 16bpp 565 on your pc. it is highly
+recommended to use this renderer if your target is an ipaq or your device
+dislpays similar qualities of the ipaq for display purposes.
+
+--enable-convert-16-rgb-rot-0
+
+this enables the 16bpp converters to run with 0 degrees rotation - this is 
+normal display and you should really include this (though it is optional if you
+only ever want to do portrait mode - perhaps like on an ipaq embedded device)
+
+--enable-convert-16-rgb-rot-270
+
+this enables the portrait mode (270 degree rotation) converteres for 16bpp.
+this is the standard display mode for things like pocketpc on the ipaq and
+the zaurus etc. thsi si a optimized part of the rendering pipeline to allow
+portrait display with a much lower overhead than doing it through X.
+
+--enable-convert-24-rgb-888
+
+To be documented...
+
+--enable-convert-24-bgr-888
+
+To be documented...
+
+--enable-convert-32-rgb-8888
+
+To be documented...
+
+--enable-convert-32-bgr-8888
+
+To be documented...
+
+--enable-convert-32-rgb-rot-0
+
+To be documented...
+
+--enable-convert-32-rgb-rot-270
+
+To be documented...
+
+...
+
+
+------------------------------------------------------------------------------
+COMPILING AND INSTALLING:
+
+  ./configure
+  make
+(as root unless youa re installing in your users directories):
+  make install
+      
+------------------------------------------------------------------------------
+BUILDING PACKAGES:
+
+RPM: To build rpm packages:
+  
+  sudo rpm -ta @PACKAGE@-@VERSION@.tar.gz
+
+You will find rpm packages in your system /usr/src/redhat/* dirs (note you may
+not need to use sudo or root if you have your own ~/.rpmrc. see rpm documents
+for more details)
+
+DEB: To build deb packages:
+
+  tar zvf @PACKAGE@-@VERSION@.tar.gz
+  cd @PACKAGE@-@VERSION@
+  dpkg-buildpackage -us -uc -rfakeroot
+  cd ..
+  rm -rf @PACKAGE@-@VERSION@
+
+You will find all the debian source, binary etc. packages put in the directory
+where you first untarred the source tarball.
+
+
+NOTES:
+
+For the arm optimizations you want to try:
+  export CFLAGS="-O2 -march=armv5te -mcpu=arm1136jf-s -fomit-frame-pointer"
diff --git a/autogen.sh b/autogen.sh
new file mode 100755 (executable)
index 0000000..995ff2f
--- /dev/null
@@ -0,0 +1,16 @@
+#!/bin/sh
+
+rm -rf autom4te.cache
+rm -f aclocal.m4 ltmain.sh
+
+touch README
+
+echo "Running aclocal..." ; aclocal $ACLOCAL_FLAGS -I m4 || exit 1
+echo "Running autoheader..." ; autoheader || exit 1
+echo "Running autoconf..." ; autoconf || exit 1
+echo "Running libtoolize..." ; (libtoolize --copy --automake || glibtoolize --automake) || exit 1
+echo "Running automake..." ; automake --add-missing --copy --gnu || exit 1
+
+if [ -z "$NOCONFIGURE" ]; then
+       ./configure "$@"
+fi
diff --git a/configure.in b/configure.in
new file mode 100644 (file)
index 0000000..e5a3e1d
--- /dev/null
@@ -0,0 +1,1850 @@
+# get rid of that stupid cache mechanism
+rm -f config.cache
+
+AC_INIT(evas, 0.9.9.043, enlightenment-devel@lists.sourceforge.net)
+AC_PREREQ(2.52)
+AC_CONFIG_SRCDIR(configure.in)
+AC_CANONICAL_BUILD
+AC_CANONICAL_HOST
+AC_ISC_POSIX
+
+AM_INIT_AUTOMAKE(1.6 dist-bzip2)
+AM_CONFIG_HEADER(config.h)
+
+AC_PROG_CXX
+AC_PROG_CC
+AM_PROG_CC_STDC
+AC_HEADER_STDC
+AC_C_BIGENDIAN
+AC_C_CONST
+
+AC_LIBTOOL_WIN32_DLL
+define([AC_LIBTOOL_LANG_F77_CONFIG], [:])dnl
+AC_PROG_LIBTOOL
+
+VMAJ=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $1);}'`
+VMIN=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $2);}'`
+VMIC=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $3);}'`
+SNAP=`echo $PACKAGE_VERSION | awk -F. '{printf("%s", $4);}'`
+version_info=`expr $VMAJ + $VMIN`":$VMIC:$VMIN"
+AC_SUBST(version_info)
+
+LT_PROG_RC
+AC_FUNC_ALLOCA
+
+MODULE_ARCH="$host_os-$host_cpu"
+AC_SUBST(MODULE_ARCH)
+AC_DEFINE_UNQUOTED(MODULE_ARCH, "$MODULE_ARCH", "Module architecture")
+
+PKG_PROG_PKG_CONFIG
+
+WIN32_CFLAGS=""
+lt_no_undefined=""
+lt_enable_auto_import=""
+case "$host_os" in
+        mingw*|cegcc*)
+               PKG_CHECK_MODULES(EVIL, evil)
+               AC_DEFINE(HAVE_EVIL, 1, [Set to 1 if evil package is installed])
+               dnl needed for correct definition of EAPI
+               AC_DEFINE(EFL_EVAS_BUILD, 1, [Define to mention that evas is built])
+                if test "$host_os" = "cegcc" ; then
+                        WIN32_CFLAGS="-mwin32"
+                       lt_enable_auto_import="-Wl,--enable-auto-import"
+                fi
+                lt_no_undefined="-no-undefined"
+                ;;
+esac
+AC_SUBST(WIN32_CFLAGS)
+AC_SUBST(lt_no_undefined)
+AC_SUBST(lt_enable_auto_import)
+
+x_dir=""
+x_cflags=""
+x_libs=""
+gl_dir=""
+gl_cflags=""
+gl_libs=""
+qt_dir=""
+qt_cflags=""
+qt_libs=""
+qt_moc="moc"
+
+dnl when used, that option makes configure script fails when
+dnl a requirement is selected, but not met.
+AC_ARG_ENABLE(strict,
+  AC_HELP_STRING(
+    [enable strict mode]),
+  [use_strict="yes"],
+  [use_strict="no"]
+)
+
+
+#####################################################################
+
+# blah-config style checks
+# qtdir setting
+AC_ARG_WITH(qtdir,
+AC_HELP_STRING([--with-qtdir=QT_DIR], [use qt directory specified]),
+[
+  qt_dir=$withval;
+  echo "using "$qt_dir" for qt directory.";
+], [
+  qt_dir="/opt/Qtopia";
+])
+
+# check for freetype
+PKG_CHECK_MODULES(FREETYPE, freetype2 >= 9.3.0)
+
+#######################################
+## Simple X11 build/link
+
+AC_ARG_ENABLE(simple-x11,
+  AC_HELP_STRING([--enable-simple-x11], [enable simple x11 linking]),
+  [ want_evas_simple_x11=$enableval ]
+)
+
+#######################################
+## FontConfig
+
+want_fontconfig="auto"
+have_fontconfig="no"
+AC_ARG_ENABLE(fontconfig,
+  AC_HELP_STRING(
+    [--disable-fontconfig],
+    [disable fontconfig for finding fonts. [[default=enabled]]]
+  ),
+  [ want_fontconfig=$enableval ]
+)
+
+if test "x$want_fontconfig" = "xyes" -o "x$want_fontconfig" = "xauto" ; then
+  # Check if really available
+  PKG_CHECK_MODULES(FONTCONFIG, fontconfig,
+    [
+      have_fontconfig="yes"
+      AC_DEFINE(HAVE_FONTCONFIG, 1, [have fontconfig searching capabilities])
+    ],
+    [
+      if test "x$want_fontconfig" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([Fontconfig not found (strict dependencies checking)])
+      fi
+    ])
+fi
+
+###############
+## dlopen
+
+dlopen_libs=""
+case "$host_os" in
+  mingw32ce*|cegcc*)
+dnl managed by evil
+    AC_DEFINE(HAVE_DLADDR)
+  ;;
+  mingw*)
+dnl nothing on mingw platform
+  ;;
+  *)
+    AC_CHECK_FUNCS(dlopen, res=yes, res=no)
+    if test "x$res" = "xyes"; then
+      AC_CHECK_FUNCS(dladdr, AC_DEFINE(HAVE_DLADDR))
+    else
+      AC_CHECK_LIB(dl, dlopen, res=yes, res=no)
+      if test "x$res" = "xyes"; then
+        AC_CHECK_LIB(dl, dladdr, AC_DEFINE(HAVE_DLADDR))
+        dlopen_libs=-ldl
+      else
+        AC_MSG_ERROR(Cannot find dlopen)
+      fi
+    fi
+esac
+AC_SUBST(dlopen_libs)
+
+AC_CHECK_HEADER(fnmatch.h, , AC_MSG_ERROR([Cannot find fnmatch.h. Make sure your CFLAGS environment variable contains include lines for the location of this file. MinGW users: see the INSTALL file]))
+
+fnmatch_libs=""
+AC_CHECK_FUNCS(fnmatch, res=yes, res=no)
+if test "x$res" = "xno"; then
+  AC_CHECK_LIB(fnmatch, fnmatch, res=yes fnmatch_libs="-lfnmatch", res=no)
+  dnl Test for compilation with MinGW.
+  dnl fnmatch function is in the libiberty library
+  if test "x$res" = "xno"; then
+    AC_CHECK_LIB(iberty, fnmatch, res=yes fnmatch_libs="-liberty", res=no)
+  fi
+  if test "x$res" = "xno"; then
+    AC_MSG_ERROR([Cannot find fnmatch() in neither libc nor libfnmatch, nor libiberty])
+  fi
+fi
+
+AC_SUBST(fnmatch_libs)
+
+#####################################################################
+## Engines
+
+#######################################
+## Check if we should build the software_ddraw engine
+want_evas_software_ddraw="auto";
+have_evas_software_ddraw="no";
+
+AC_MSG_CHECKING(whether software directdraw backend is to be built)
+AC_ARG_ENABLE(software-ddraw,
+  AC_HELP_STRING([--enable-software-ddraw], [enable the Software DirectDraw rendering backend]),
+  [ want_evas_software_ddraw=$enableval ]
+)
+AC_MSG_RESULT($want_evas_software_ddraw)
+
+if test "x$want_evas_software_ddraw" = "xyes" -o "x$want_evas_software_ddraw" = "xauto" ; then
+  AC_CHECK_HEADER(ddraw.h,
+    [
+      have_evas_software_ddraw="yes"
+      AC_DEFINE(BUILD_ENGINE_SOFTWARE_DDRAW, 1, [Software DirectDraw Rendering Backend])
+      ddraw_libs="-lddraw"
+    ],
+    [
+      if test "x$want_evas_software_ddraw"  = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([DirectDraw not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AC_MSG_CHECKING(whether software directdraw backend will be built)
+AC_MSG_RESULT($have_evas_software_ddraw)
+AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_DDRAW, test "x$have_evas_software_ddraw" = "xyes")
+
+#######################################
+## Check if we should build the 16bit software_ddraw engine
+want_evas_software_16_ddraw="auto";
+have_evas_software_16_ddraw="no";
+
+AC_MSG_CHECKING(whether 16 bit software directdraw backend is to be built)
+AC_ARG_ENABLE(software-16-ddraw,
+  AC_HELP_STRING([--enable-software-16-ddraw], [enable the 16bit Software DirectDraw rendering backend]),
+  [ want_evas_software_16_ddraw=$enableval ]
+)
+AC_MSG_RESULT($want_evas_software_16_ddraw)
+
+if test "x$want_evas_software_16_ddraw" = "xyes" -o "x$want_evas_software_16_ddraw" = "xauto"; then
+  AC_CHECK_HEADER(ddraw.h,
+    [
+      AC_DEFINE(BUILD_ENGINE_SOFTWARE_16_DDRAW, 1, [16bit Software DirectDraw Rendering Backend])
+      ddraw_16_libs="-lddraw -lgdi32"
+      have_evas_software_16_ddraw="yes"
+    ],
+    [
+      if test "x$want_evas_software_16_ddraw"  = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([DirectDraw not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AC_MSG_CHECKING(whether 16 bits software directdraw backend will be built)
+AC_MSG_RESULT($have_evas_software_16_ddraw)
+AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_16_DDRAW, test "x$have_evas_software_16_ddraw" = "xyes")
+
+
+#######################################
+## Check if we should build the direct3d engine
+want_evas_direct3d="auto";
+have_evas_direct3d="no";
+
+AC_MSG_CHECKING(whether direct3d backend is to be built)
+AC_ARG_ENABLE(direct3d,
+  AC_HELP_STRING([--enable-direct3d], [enable the Direct3D rendering backend]),
+  [ want_evas_direct3d=$enableval ]
+)
+AC_MSG_RESULT($want_evas_direct3d)
+
+if test "x$want_evas_direct3d" = "xyes"; then
+  AC_CHECK_HEADERS(d3d9.h d3dx9.h,
+    [
+      AC_DEFINE(BUILD_ENGINE_DIRECT3D, 1, [Direct3D Rendering Backend])
+      direct3d_libs="-ld3d9 -ld3dx9d"
+      have_evas_direct3d="yes"
+    ],
+    [
+      if test "x$want_evas_direct3d"  = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([Direct3D not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AC_MSG_CHECKING(whether direct3d backend will be built)
+AC_MSG_RESULT($have_evas_direct3d)
+AM_CONDITIONAL(BUILD_ENGINE_DIRECT3D, test "x$have_evas_direct3d" = "xyes")
+
+
+#######################################
+## Check if we should build the 16bit software_wince engine
+want_evas_software_16_wince="auto";
+have_evas_software_16_wince="no";
+
+AC_MSG_CHECKING(whether 16 bit software WinCE backend is to be built)
+AC_ARG_ENABLE(software-16-wince,
+  AC_HELP_STRING([--enable-software-16-wince], [enable the 16bit Software WinCE rendering backend]),
+  [ want_evas_software_16_wince=$enableval ]
+)
+AC_MSG_RESULT($want_evas_software_16_wince)
+
+if test "x$want_evas_software_16_wince" = "xyes" -o "x$want_evas_software_16_wince" = "xauto"; then
+  AC_CHECK_HEADER(windows.h,
+    [
+      AC_DEFINE(BUILD_ENGINE_SOFTWARE_16_WINCE, 1, [16bit Software WinCE Rendering Backend])
+      wince_16_libs=""
+      have_evas_software_16_wince="yes"
+    ],
+    [
+      if test "x$want_evas_software_16_wince"  = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([WinCE not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AC_MSG_CHECKING(whether 16 bits software WinCE backend will be built)
+AC_MSG_RESULT($have_evas_software_16_wince)
+AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_16_WINCE, test "x$have_evas_software_16_wince" = "xyes")
+
+
+#######################################
+## Check if we should build the software_x11 engine
+want_evas_software_x11="auto";
+have_evas_software_x11="no";
+
+AC_MSG_CHECKING(whether software x11 backend is to be built)
+AC_ARG_ENABLE(software-x11,
+  AC_HELP_STRING([--disable-software-x11], [disable the Software X11 rendering backend]),
+  [ want_evas_software_x11=$enableval ]
+)
+AC_MSG_RESULT($want_evas_software_x11)
+
+if test "x$want_evas_software_x11" = "xyes" -o "x$want_evas_software_x11" = "xauto"; then
+  AC_PATH_X
+  AC_PATH_XTRA
+  AC_CHECK_HEADER(X11/X.h,
+    [
+      AC_DEFINE(BUILD_ENGINE_SOFTWARE_X11, 1, [Software X11 Rendering Backend])
+      if test "x$want_evas_simple_x11" = "xyes"; then
+        x_libs="${x_libs} -lX11 -lXext"
+      else      
+        x_dir=${x_dir:-/usr/X11R6}
+        x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+        x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
+      fi
+      have_evas_software_x11="yes"
+    ],
+    [
+      if test "x$want_evas_software_x11" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([X11 not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_X11, test "x$have_evas_software_x11" = "xyes")
+
+#######################################
+## Check if we should build the software_x11 16bit engine
+want_evas_software_16_x11="no";
+have_evas_software_16_x11="no";
+
+AC_MSG_CHECKING(whether software 16bit x11 backend is to be built)
+AC_ARG_ENABLE(software-16-x11,
+  AC_HELP_STRING([--enable-software-16-x11], [enable the Software 16bit X11 rendering backend]),
+  [ want_evas_software_16_x11=$enableval ]
+)
+AC_MSG_RESULT($want_evas_software_16_x11)
+
+if test "x$want_evas_software_16_x11" = "xyes"; then
+  AC_PATH_X
+  AC_PATH_XTRA
+  AC_CHECK_HEADER(X11/X.h,
+    [
+      AC_DEFINE(BUILD_ENGINE_SOFTWARE_16_X11, 1, [Software 16bit X11 Rendering Backend])
+      if test "x$want_evas_simple_x11" = "xyes"; then
+        x_libs="${x_libs} -lX11 -lXext"
+      else      
+        x_dir=${x_dir:-/usr/X11R6}
+        x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+        x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
+      fi
+      have_evas_software_16_x11="yes"
+    ],
+    [
+      if test "x$want_evas_sofware_16_x11" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([X11 not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_16_X11, test "x$have_evas_software_16_x11" = "xyes")
+
+#######################################
+## Check if we should build the software_xcb engine
+want_evas_software_xcb="no";
+have_evas_software_xcb="no";
+
+AC_MSG_CHECKING(whether software xcb backend is to be built)
+AC_ARG_ENABLE(software-xcb,
+  AC_HELP_STRING([--enable-software-xcb], [enable the Software XCB rendering backend]),
+  [ want_evas_software_xcb=$enableval ]
+)
+AC_MSG_RESULT($want_evas_software_xcb)
+
+if test "x$want_evas_software_xcb" = "xyes"; then
+  PKG_CHECK_MODULES(
+    XCB,
+    xcb xcb-shm xcb-image pixman-1,
+    [
+      AC_DEFINE(BUILD_ENGINE_SOFTWARE_XCB, 1, [Software XCB Rendering Backend])
+      have_evas_software_xcb="yes"
+    ],
+    [
+      if test "x$want_evas_software_xcb" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([XCB not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_XCB, test "x$have_evas_software_xcb" = "xyes")
+
+#######################################
+## Check if we should build the directfb engine
+#want_evas_directfb="no";
+#have_evas_directfb="no";
+#
+#AC_MSG_CHECKING(whether directfb backend is to be built)
+#AC_ARG_ENABLE(directfb,
+#  AC_HELP_STRING([--enable-directfb], [enable the DirectFB rendering backend]),
+#  [ want_evas_directfb=$enableval ]
+#)
+#AC_MSG_RESULT($want_evas_directfb)
+#
+#if test "x$want_evas_directfb" = "xyes"; then
+#  PKG_CHECK_MODULES(DIRECTFB, directfb >= 0.9.16,
+#    [
+#      AC_DEFINE(BUILD_ENGINE_DIRECTFB, 1, [DirectFB Rendering Backend])
+#      have_evas_directfb="yes"
+#    ],
+#    [
+#      if test "x$want_evas_directfb" = "xyes" -a "x$use_strict" = "xyes" ; then
+#        AC_MSG_ERROR([DirectFB not found (strict dependencies checking)])
+#      fi
+#    ]
+#  )
+#fi
+#AM_CONDITIONAL(BUILD_ENGINE_DIRECTFB, test "x$have_evas_directfb" = "xyes")
+
+#######################################
+## Check if we should build the sdl engine
+want_evas_sdl="no";
+have_evas_sdl="no";
+ENGINE_SDL_PRG="";
+
+AC_MSG_CHECKING(whether SDL backend is to be built)
+AC_ARG_ENABLE(sdl,
+  AC_HELP_STRING([--enable-sdl], [enable the SDL rendering backend]),
+  [ want_evas_sdl=$enableval ]
+)
+AC_MSG_RESULT($want_evas_sdl)
+
+if test "x$want_evas_sdl" = "xyes"; then
+  PKG_CHECK_MODULES(SDL, sdl >= 1.2.0,
+    [
+      have_evas_sdl="yes"
+      ENGINE_SDL_PRG="evas_sdl_test"
+      AC_DEFINE(BUILD_ENGINE_SDL, 1, [SDL Rendering Backend])
+    ],
+    [
+      if test "x$want_evas_sdl" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([Sdl not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AM_CONDITIONAL(BUILD_ENGINE_SDL, test "x$have_evas_sdl" = "xyes")
+
+## Check if we want to use some SDL primitive
+sdl_primitive="no";
+
+AC_MSG_CHECKING(whether to use SDL primitive when possible)
+AC_ARG_ENABLE(sdl-primitive,
+  AC_HELP_STRING([--enable-sdl-primitive], []),
+  [ sdl_primitive=$enableval ]
+)
+AC_MSG_RESULT($sdl_primitive)
+
+if test "x$sdl_primitive" = "xyes"; then
+  AC_DEFINE(ENGINE_SDL_PRIMITIVE, 1, [Use SDL primitive when possible])
+fi
+
+#######################################
+## Check if we should build the fb engine
+want_evas_fb="no";
+have_evas_fb="no";
+
+AC_MSG_CHECKING(whether fb backend is to be built)
+AC_ARG_ENABLE(fb,
+  AC_HELP_STRING([--enable-fb], [enable the FB rendering backend]),
+  [ want_evas_fb=$enableval ]
+)
+AC_MSG_RESULT($want_evas_fb)
+
+if test "x$want_evas_fb" = "xyes"; then
+  AC_CHECK_HEADER(linux/fb.h,
+    [
+      AC_DEFINE(BUILD_ENGINE_FB, 1, [Linux FB Rendering Backend])
+      have_evas_fb="yes"
+    ],
+    [
+      if test "x$want_evas_fb" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([FB not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AM_CONDITIONAL(BUILD_ENGINE_FB, test "x$have_evas_fb" = "xyes")
+
+#######################################
+## Check if we should build the buffer engine
+want_evas_buffer="yes"
+have_evas_buffer="no"
+
+AC_MSG_CHECKING(whether buffer backend is to be built)
+AC_ARG_ENABLE(buffer,
+  AC_HELP_STRING([--disable-buffer], [disable the Buffer rendering backend]),
+  [ want_evas_buffer=$enableval ]
+)
+AC_MSG_RESULT($want_evas_buffer)
+
+if test "x$want_evas_buffer" = "xyes"; then
+  AC_DEFINE(BUILD_ENGINE_BUFFER, 1, [Buffer Rendering Backend])
+  have_evas_buffer="yes"
+fi
+AM_CONDITIONAL(BUILD_ENGINE_BUFFER, test "x$have_evas_buffer" = "xyes")
+
+#######################################
+## Check if we should build the software_qtopia engine
+want_evas_qtopia="no";
+have_evas_qtopia="no";
+
+AC_MSG_CHECKING(whether software qtopia backend is to be built)
+AC_ARG_ENABLE(software-qtopia,
+  AC_HELP_STRING([--enable-software-qtopia], [enable the Software Qtopia rendering backend]),
+  [ want_evas_qtopia=$enableval ]
+)
+AC_MSG_RESULT($want_evas_qtopia)
+
+if test "x$want_evas_qtopia" = "xyes"; then
+  AC_LANG_PUSH(C++)
+  AC_CHECK_HEADER(qdirectpainter_qws.h,
+    [
+      AC_DEFINE(BUILD_ENGINE_SOFTWARE_QTOPIA, 1, [Qtopia Rendering Backend])
+      qt_cflags="-fno-exceptions -fno-rtti -I"$qt_dir"/include"
+      qt_libs="-L"$qt_dir"/lib -lqte -lqpe"
+      qt_moc=$qt_dir"/bin/moc"
+      have_evas_qtopia="yes"
+    ],
+    [
+      if test "x$want_evas_qtopia" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([Qtopia not found (strict dependencies checking)])
+      fi
+    ],
+    [
+      #include <qwidget.h>
+      #include <qnamespace.h>
+      #include <qbrush.h>
+      #include <qpainter.h>
+    ]
+  )
+  AC_LANG_POP(C++)
+fi
+AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_QTOPIA, test "x$have_evas_qtopia" = "xyes")
+
+#######################################
+## Check if we should build the gl_x11 engine
+want_evas_gl_x11="no";
+have_evas_gl_x11="no";
+
+AC_MSG_CHECKING(whether gl x11 backend is to be built)
+AC_ARG_ENABLE(gl-x11,
+  AC_HELP_STRING([--enable-gl-x11], [enable the OpenGL X11 display engine]),
+  [ want_evas_gl_x11=$enableval ]
+)
+AC_MSG_RESULT($want_evas_gl_x11)
+
+if test "x$want_evas_gl_x11" = "xyes"; then
+  AC_PATH_X
+  AC_PATH_XTRA
+  AC_CHECK_HEADERS(GL/gl.h GL/glu.h X11/X.h,
+    [
+      AC_DEFINE(BUILD_ENGINE_GL_X11, 1, [OpenGL X11 Rendering Backend])
+      if test "x$want_evas_simple_x11" = "xyes"; then
+        x_libs="${x_libs} -lX11 -lXext"
+      else      
+        x_dir=${x_dir:-/usr/X11R6}
+        x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+        x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
+        gl_cflags="-I/usr/include"
+      fi
+      gl_libs="-lGL -lGLU -lpthread"
+      gl_dir=""
+      have_evas_gl_x11="yes"
+    ],
+    [
+      if test "x$want_evas_gl_x11" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([OpenGL X11 not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AM_CONDITIONAL(BUILD_ENGINE_GL_X11, test "x$have_evas_gl_x11" = "xyes")
+
+#######################################
+## Check if we should build the gl_glew engine
+want_evas_gl_glew="no";
+have_evas_gl_glew="no";
+
+AC_MSG_CHECKING(whether gl glew backend is to be built)
+AC_ARG_ENABLE(gl-glew,
+  AC_HELP_STRING([--enable-gl-glew], [enable the OpenGL Glew display engine]),
+  [ want_evas_gl_glew=$enableval ]
+)
+AC_MSG_RESULT($want_evas_gl_glew)
+
+if test "x$want_evas_gl_glew" = "xyes" -o "x$want_evas_gl_glew" = "xauto"; then
+  AC_CHECK_HEADERS(GL/gl.h GL/glu.h GL/glew.h,
+    [
+      AC_DEFINE(BUILD_ENGINE_GL_GLEW, 1, [OpenGL Glew Rendering Backend])
+      glew_libs="-lglew32 -lopengl32 -lgdi32"
+      gl_libs="-lglu32"
+      have_evas_gl_glew="yes"
+    ],
+    [
+      if test "x$want_evas_gl_glew" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([OpenGL Glew not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AC_MSG_CHECKING(whether gl glew backend will be built)
+AC_MSG_RESULT($have_evas_gl_glew)
+AM_CONDITIONAL(BUILD_ENGINE_GL_GLEW, test "x$have_evas_gl_glew" = "xyes")
+
+# common gl
+have_evas_gl_common="no"
+if test "x$have_evas_gl_x11" = "xyes" -o "x$have_evas_gl_glew" = "xyes"; then
+  AC_DEFINE(BUILD_ENGINE_GL_COMMON, 1, [Generic OpenGL Rendering Support])
+  have_evas_gl_common="yes"
+fi
+AM_CONDITIONAL(BUILD_ENGINE_GL_COMMON, test "x$have_evas_gl_common" = "xyes")
+
+#######################################
+## Check if we should build the cairo_x11 engine
+have_evas_cairo_common="no";
+want_evas_cairo_x11="no";
+have_evas_cairo_x11="no";
+
+#AC_MSG_CHECKING(whether cairo x11 backend is to be built)
+#AC_ARG_ENABLE(cairo-x11,
+#  AC_HELP_STRING([--enable-cairo-x11], [enable the Cairo X11 display engine]),
+#  [ want_evas_cairo_x11=$enableval ]
+#)
+#AC_MSG_RESULT($want_evas_cairo_x11)
+
+if test "x$want_evas_cairo_x11" = "xyes"; then
+  PKG_CHECK_MODULES(CAIRO, cairo >= 1.0.0,
+    [
+      have_evas_cairo_common="yes"
+      AC_CHECK_HEADER(X11/X.h,
+        [
+          AC_DEFINE(BUILD_ENGINE_CAIRO_X11, 1, [Cairo X11 Rendering Backend])
+          AC_DEFINE(BUILD_ENGINE_CAIRO_COMMON, 1, [Generic Cairo Rendering Support])
+          if test "x$want_evas_simple_x11" = "xyes"; then
+            x_libs="${x_libs} -lX11 -lXext"
+          else      
+            x_dir=${x_dir:-/usr/X11R6}
+            x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+            x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
+          fi
+          have_evas_cairo_x11="yes"
+        ], [
+          have_evas_cairo_common="no"
+          have_evas_cairo_x11="no"
+        ]
+      )
+    ],
+    [
+      have_evas_cairo_common="no"
+      have_evas_cairo_x11="no"
+    ]
+  )
+fi
+AM_CONDITIONAL(BUILD_ENGINE_CAIRO_X11, test "x$have_evas_cairo_x11" = "xyes")
+AM_CONDITIONAL(BUILD_ENGINE_CAIRO_COMMON, test "x$have_evas_cairo_common" = "xyes")
+
+#######################################
+## Check if we should build the xrender_x11 engine
+want_evas_xrender_x11="auto";
+have_evas_xrender_x11="no";
+
+AC_MSG_CHECKING(whether xrender x11 backend is to be built)
+AC_ARG_ENABLE(xrender-x11,
+  AC_HELP_STRING([--disable-xrender-x11], [disable the XRender X11 rendering backend]),
+  [ want_evas_xrender_x11=$enableval ]
+)
+AC_MSG_RESULT($want_evas_xrender_x11)
+
+if test "x$want_evas_xrender_x11" = "xyes" -o "x$want_evas_xrender_x11" = "xauto"; then
+  AC_PATH_X
+  AC_PATH_XTRA
+  AC_CHECK_HEADERS(X11/X.h X11/extensions/Xrender.h,
+    [
+      AC_DEFINE(BUILD_ENGINE_XRENDER_X11, 1, [XRender X11 Rendering Backend])
+      if test "x$want_evas_simple_x11" = "xyes"; then
+       x_libs="${x_libs} -lX11 -lXext"
+      else      
+        x_dir=${x_dir:-/usr/X11R6}
+        x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+        x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
+      fi
+      have_evas_xrender_x11="yes"
+    ],
+    [
+      if test "x$want_evas_xrender_x11" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([XRender X11 not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AM_CONDITIONAL(BUILD_ENGINE_XRENDER_X11, test "x$have_evas_xrender_x11" = "xyes")
+
+#######################################
+## Check if we should build the xrender_xcb engine
+want_evas_xrender_xcb="no";
+have_evas_xrender_xcb="no";
+
+AC_MSG_CHECKING(whether xrender xcb backend is to be built)
+AC_ARG_ENABLE(xrender-xcb,
+  AC_HELP_STRING([--enable-xrender-xcb], [enable the Xrender XCB rendering backend]),
+  [ want_evas_xrender_xcb=$enableval ]
+)
+AC_MSG_RESULT($want_evas_xrender_xcb)
+
+if test "x$want_evas_xrender_xcb" = "xyes"; then
+  PKG_CHECK_MODULES(
+    XCBRENDER,
+    xcb xcb-shm xcb-render xcb-image,
+    [
+      AC_DEFINE(BUILD_ENGINE_XRENDER_XCB, 1, [Xrender XCB Rendering Backend])
+      have_evas_xrender_xcb="yes"
+    ],
+    [
+      if test "x$want_evas_xrender_xcb" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([XRender XCB not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AM_CONDITIONAL(BUILD_ENGINE_XRENDER_XCB, test "x$have_evas_xrender_xcb" = "xyes")
+
+#######################################
+## Check if we should build the glitz_x11 engine
+want_evas_glitz_x11="no";
+have_evas_glitz_x11="no";
+
+AC_MSG_CHECKING(whether glitz x11 backend is to be built)
+AC_ARG_ENABLE(glitz-x11,
+  AC_HELP_STRING([--enable-glitz-x11], [enable the Glitz X11 rendering backend]),
+  [ want_evas_glitz_x11=$enableval ]
+)
+AC_MSG_RESULT($want_evas_glitz_x11)
+
+if test "x$want_evas_glitz_x11" = "xyes"; then
+  AC_PATH_X
+  AC_PATH_XTRA
+  AC_CHECK_HEADER(X11/X.h,
+    [
+      PKG_CHECK_MODULES(GLITZ, glitz glitz-glx,
+        [
+          if test "x$want_evas_simple_x11" = "xyes"; then
+            x_libs="${x_libs} -lX11 -lXext"
+          else      
+            x_dir=${x_dir:-/usr/X11R6}
+            x_cflags=${x_cflags:--I${x_includes:-$x_dir/include}}
+            x_libs="${x_libs:--L${x_libraries:-$x_dir/lib}} -lX11 -lXext"
+          fi
+          AC_DEFINE(BUILD_ENGINE_GLITZ_X11, 1, [Glitz X11 Rendering Backend])
+          have_evas_glitz_x11="yes"
+        ],
+        [
+          if test "x$want_evas_glitz_gl_x11" = "xyes" -a "x$use_strict" = "xyes" ; then
+            AC_MSG_ERROR([Glitz X11 not found (strict dependencies checking)])
+          fi
+        ]
+      )
+    ],
+    [
+      if test "x$want_evas_glitz_gl_x11" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([Glitz X11 not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+AM_CONDITIONAL(BUILD_ENGINE_GLITZ_X11, test "x$have_evas_glitz_x11" = "xyes")
+
+#####################################################################
+## Image loaders
+
+#######################################
+## GIF
+want_gif="auto";
+have_gif="no";
+
+AC_MSG_CHECKING(whether to enable gif image loader)
+AC_ARG_ENABLE(image-loader-gif,
+  AC_HELP_STRING([--disable-image-loader-gif], [disable GIF image loader]),
+  [ want_gif=$enableval ]
+)
+AC_MSG_RESULT($want_gif)
+
+if test "x$want_gif" = "xyes" -o "x$want_gif" = "xauto"; then
+  AC_CHECK_HEADER(gif_lib.h,
+    [
+      AC_CHECK_LIB(gif, DGifOpenFileName,
+        [
+          gif_libs="-lgif"
+          have_gif="yes"
+        ],
+        [
+          AC_CHECK_LIB(ungif, DGifOpenFileName,
+            [
+              gif_libs="-lungif"
+              have_gif="yes"
+            ],
+            [ have_gif="no" ]
+          )
+        ]
+     )
+    ],
+    [ have_gif="no" ]
+  )
+fi
+
+if test "x$have_gif" = "xyes"; then
+  AC_DEFINE(BUILD_LOADER_GIF, 1, [GIF Image Loader Support])
+  gif_cflags=""
+else
+  if test "x$want_gif" = "xyes" -a "x$use_strict" = "xyes" ; then
+    AC_MSG_ERROR([GIF not found (strict dependencies checking)])
+  fi
+fi
+
+AM_CONDITIONAL(BUILD_LOADER_GIF, test "x$have_gif" = "xyes")
+
+#######################################
+## PNG
+want_png="auto";
+have_png="no";
+
+AC_MSG_CHECKING(whether to enable png image loader)
+AC_ARG_ENABLE(image-loader-png,
+  AC_HELP_STRING([--disable-image-loader-png], [disable PNG image loader]),
+  [ want_png=$enableval ]
+)
+AC_MSG_RESULT($want_png)
+
+if test "x$want_png" = "xyes" -o "x$want_png" = "xauto"; then
+  PKG_CHECK_EXISTS(libpng12,
+    [ PKG_CHECK_MODULES(PNG, libpng12, [ have_png="yes" ], [ have_png="no"]) ],
+    [
+      PKG_CHECK_EXISTS(libpng10,
+        [ PKG_CHECK_MODULES(PNG, libpng10, [ have_png="yes" ], [ have_png="no"]) ],
+        [ PKG_CHECK_MODULES(PNG, libpng, [ have_png="yes" ], [ have_png="no"]) ]
+      )
+    ]
+  )
+fi
+
+if test "x$want_png" = "xyes" -a ! "x$have_png" = "xyes" -a "x$use_strict" = "xyes" ; then
+  AC_MSG_ERROR([PNG not found (strict dependencies checking)])
+fi
+
+AM_CONDITIONAL(BUILD_LOADER_PNG, test "x$have_png" = "xyes")
+
+#######################################
+## JPEG
+want_jpeg="auto";
+have_jpeg="no";
+
+AC_MSG_CHECKING(whether to enable jpeg image loader)
+AC_ARG_ENABLE(image-loader-jpeg,
+  AC_HELP_STRING([--disable-image-loader-jpeg], [disable JPEG image loader]),
+  [ want_jpeg=$enableval ]
+)
+AC_MSG_RESULT($want_jpeg)
+
+if test "x$want_jpeg" = "xyes" -o "x$want_jpeg" = "xauto"; then
+  AC_CHECK_HEADER(jpeglib.h,
+    [
+      AC_DEFINE(BUILD_LOADER_JPEG, 1, [JPEG Image Loader Support])
+      jpeg_cflags=""
+      jpeg_libs="-ljpeg"
+      have_jpeg="yes"
+      have_jpeg_saver="yes"
+    ],
+    [
+      if test "x$want_jpeg" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR(JPEG not found (strict dependencies checking))
+      fi
+    ]
+  )
+fi
+dnl Windows has no sigsetjmp function, nor equivalent.
+dnl So we disable the jpeg saver.
+case "$host_os" in
+   mingw*|cegcc*)
+   have_jpeg_saver="no"
+   ;;
+esac
+AM_CONDITIONAL(BUILD_LOADER_JPEG, test "x$have_jpeg" = "xyes")
+AM_CONDITIONAL(BUILD_SAVER_JPEG, test "x$have_jpeg_saver" = "xyes")
+
+#######################################
+## EET
+#
+# first, check whether the user WANTS to use EET
+want_eet_image_loader="auto"
+want_eet_font_loader="auto"
+have_eet=no
+AC_ARG_ENABLE(image-loader-eet,
+  AC_HELP_STRING(
+    [--disable-image-loader-eet],
+    [disable EET image loader. [[default=enabled]]]
+  ),
+  [want_eet_image_loader=$enableval]
+)
+
+AC_ARG_ENABLE(font-loader-eet,
+  AC_HELP_STRING(
+    [--disable-font-loader-eet],
+    [disable EET font loader. [[default=enabled]]]
+  ),
+  [want_eet_font_loader=$enableval]
+)
+
+# next, if she does, check whether EET is available
+if test "x$want_eet_image_loader" = "xyes" -o "x$want_eet_font_loader" = "xyes" -o "x$want_eet_image_loader" = "xauto" -o "x$want_eet_font_loader" = "xauto"; then
+  PKG_CHECK_MODULES(EET, eet >= 1.0.1, [have_eet="yes"],
+    [
+      if test "x$want_eet_image_loader" = "xyes" -a "x$use_strict" = "xyes" -o "x$want_eet_font_loader" = "xyes" -a "x$use_strict" = "xyes"; then
+        AC_MSG_ERROR([EET not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+
+# finally, spew out the result
+AC_MSG_CHECKING(whether to enable eet font loader)
+if test "x$want_eet_font_loader" = "xyes" -o "x$want_eet_font_loader" = "xauto" -a "x$have_eet" = "xyes"; then
+  AC_DEFINE(BUILD_FONT_LOADER_EET, 1, [EET Font Loader Support])
+  have_eet_font_loader="yes"
+else
+  have_eet_font_loader="no"
+fi
+AC_MSG_RESULT($have_eet_font_loader)
+
+AC_MSG_CHECKING(whether to enable eet image loader)
+if test "x$want_eet_image_loader" = "xyes" -o "x$want_eet_image_loader" = "xauto" -a "x$have_eet" = "xyes"; then
+  AC_DEFINE(BUILD_LOADER_EET, 1, [EET Image Loader Support])
+  have_eet_image_loader="yes"
+else
+  have_eet_image_loader="no"
+fi
+AC_MSG_RESULT($have_eet_image_loader)
+
+AM_CONDITIONAL(BUILD_LOADER_EET, test "x$have_eet_image_loader" = "xyes")
+
+#######################################
+## EDB
+#
+# first, check whether the user WANTS to use EDB
+have_edb=no
+AC_ARG_ENABLE(image-loader-edb,
+  AC_HELP_STRING(
+    [--enable-image-loader-edb],
+    [enable EDB image loader.]
+  ),
+  [want_edb_image_loader=$enableval],
+  [want_edb_image_loader=no]
+)
+
+# next, if she does, check whether EDB is available
+if test "$want_edb_image_loader" = yes; then
+  PKG_CHECK_MODULES(EDB, edb, have_edb=yes, have_edb=no)
+fi
+
+# finally, spew out the result
+AC_MSG_CHECKING(whether to enable edb image loader)
+if test "$want_edb_image_loader" = yes -a "$have_edb" = yes; then
+  AC_DEFINE(BUILD_LOADER_EDB, 1, [EDB Image Loader Support])
+  have_edb_image_loader=yes
+else
+  have_edb_image_loader=no
+fi
+AC_MSG_RESULT($have_edb_image_loader)
+
+AM_CONDITIONAL(BUILD_LOADER_EDB, test $have_edb_image_loader = yes)
+
+#######################################
+## TIFF
+want_tiff="auto";
+have_tiff="no";
+
+AC_MSG_CHECKING(whether to enable tiff image loader)
+AC_ARG_ENABLE(image-loader-tiff,
+  AC_HELP_STRING([--disable-image-loader-tiff], [disable TIFF image loader]),
+  [ want_tiff=$enableval ]
+)
+AC_MSG_RESULT($want_tiff)
+
+if test "x$want_tiff" = "xyes" -o "x$want_tiff" = "xauto"; then
+  AC_CHECK_HEADER(tiffio.h,
+    [
+      AC_CHECK_LIB(tiff, TIFFReadScanline,
+        [
+          tiff_libs="-ltiff"
+          have_tiff="yes"
+        ],
+        [
+          AC_CHECK_LIB(tiff, TIFFReadScanline,
+            [
+              tiff_libs="-ltiff -ljpeg -lz -lm"
+              have_tiff="yes"
+            ],
+            [
+              AC_CHECK_LIB(tiff34, TIFFReadScanline,
+                [
+                  tiff_libs="-ltiff34 -ljpeg -lz -lm"
+                  have_tiff="yes"
+                ],
+                [
+                  have_tiff="no"
+                ]
+              )
+            ]
+          )
+        ]
+      )
+    ],
+    [ have_tiff="no" ]
+  )
+fi
+
+if test "x$have_tiff" = "xyes"; then
+  AC_DEFINE(BUILD_LOADER_TIFF, 1, [TIFF Image Loader Support])
+  tiff_cflags=""
+else
+  if test "x$want_tiff" = "xyes" -a "x$use_strict" = "xyes" ; then
+    AC_MSG_ERROR([TIFF not found (strict dependencies checking)])
+  fi
+fi
+
+AM_CONDITIONAL(BUILD_LOADER_TIFF, test x$have_tiff = xyes)
+
+#######################################
+## XPM
+have_xpm="yes";
+AC_MSG_CHECKING(whether to enable xpm image loader)
+AC_ARG_ENABLE(image-loader-xpm,
+  AC_HELP_STRING([--disable-image-loader-xpm], [disable XPM image loader]),
+  [ have_xpm=$enableval ]
+)
+AC_MSG_RESULT($have_xpm)
+
+xpm_cflags=""
+xpm_libs=""
+
+AM_CONDITIONAL(BUILD_LOADER_XPM, test x$have_xpm = xyes)
+
+#######################################
+## SVG
+want_svg="auto";
+have_svg="no";
+
+AC_MSG_CHECKING(whether to enable svg image loader)
+AC_ARG_ENABLE(image-loader-svg,
+  AC_HELP_STRING([--disable-image-loader-svg], [disable SVG image loader]),
+  [ want_svg=$enableval ]
+)
+AC_MSG_RESULT($want_svg)
+
+svg_cflags=""
+svg_libs=""
+if test "x$want_svg" = "xyes" -o "x$want_svg" = "xauto"; then
+  # Check if really available
+  PKG_CHECK_MODULES(SVG, librsvg-2.0 >= 2.14.0,
+    [ have_svg="yes" ],
+    [ have_svg="no" ]
+  )
+  if test "x$have_svg" = "xyes"; then
+    PKG_CHECK_MODULES(CAIRO_SVG, cairo-svg,
+      [
+        have_svg="yes"
+        svg_cflags="$SVG_CFLAGS $CAIRO_SVG_CFLAGS"
+        svg_libs="$SVG_LIBS $CAIRO_SVG_LIBS"
+      ],
+      [
+        PKG_CHECK_MODULES(LIBSVG_CAIRO, libsvg-cairo,
+          [
+            have_svg="yes"
+            svg_cflags="$SVG_CFLAGS $LIBSVG_CAIRO_CFLAGS"
+            svg_libs="$SVG_LIBS $LIBSVG_CAIRO_LIBS"
+          ],
+          [
+            have_svg="no"
+          ]
+        )
+      ]
+    )
+  fi
+fi
+
+if test "x$want_svg" = "xyes" -a ! "x$have_svg" = "xyes" -a "x$use_strict" = "xyes" ; then
+  AC_MSG_ERROR([SVG not found (strict dependencies checking)])
+fi
+
+AM_CONDITIONAL(BUILD_LOADER_SVG, test x$have_svg = xyes)
+
+#######################################
+## PMAPS
+have_pmaps="yes";
+AC_MSG_CHECKING(whether to enable pmaps image loader)
+AC_ARG_ENABLE(image-loader-pmaps,
+  AC_HELP_STRING([--disable-image-loader-pmaps], [disable PMAPS image loader]),
+  [ have_pmaps=$enableval ]
+)
+AC_MSG_RESULT($have_pmaps)
+
+pmaps_cflags=""
+pmaps_libs=""
+
+AM_CONDITIONAL(BUILD_LOADER_PMAPS, test x$have_pmaps = xyes)
+
+
+#####################################################################
+## Cpu based optimizations
+
+#######################################
+## PTHREADS
+pthread_cflags=""
+pthread_libs=""
+build_pthreads="no"
+has_pthreads="no"
+# sched_getaffinity pthread_attr_setaffinity_np
+AC_CHECK_HEADERS(pthread.h sched.h,
+      [
+        AC_CHECK_LIB(pthread, pthread_attr_setaffinity_np,
+          [
+            AC_CHECK_LIB(pthread, pthread_barrier_wait,
+              [
+               build_pthreads="yes"
+               has_pthreads="yes"
+             ],
+              [ build_pthreads="no" ]
+            )
+          ],
+          [ build_pthreads="no" ]
+        )
+      ],
+      [ build_pthreads="no" ]
+)
+### disable pthreads by default for now - some wierd deadlock issue with
+# barriers (makes no sense)
+#build_pthreads="no"
+AC_MSG_CHECKING(whether to build pthread code)
+AC_ARG_ENABLE(pthreads,
+  AC_HELP_STRING([--enable-pthreads], [enable threaded rendering]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        if test "x$build_pthreads" = "xyes"; then
+          AC_MSG_RESULT(yes)
+          AC_DEFINE(BUILD_PTHREAD, 1, [Build Threaded Rendering])
+          build_pthreads="yes"
+          pthread_cflags=""
+          pthread_libs="-lpthread"
+        else
+          if "x$use_strict" = "xyes"; then
+            AC_MSG_ERROR(pthreads headers or functions not found (strict dependencies checking))
+          else
+            AC_MSG_RESULT(no: pthread headers or functions not found)
+          fi
+        fi
+      else
+        AC_MSG_RESULT(no)
+        build_pthreads="no"
+      fi
+  ],
+  [
+    AC_MSG_RESULT($build_pthreads)
+    if test "x$build_pthreads" = "xyes" ; then
+      AC_DEFINE(BUILD_PTHREAD, 1, [Build Threaded Rendering])
+      pthread_cflags=""
+      pthread_libs="-lpthread"
+    fi
+  ]
+)
+
+#######################################
+## Async events
+build_async_events="auto"
+AC_MSG_CHECKING(whether to build Async Events support)
+AC_ARG_ENABLE(async-events,
+  AC_HELP_STRING([--enable-async-events], [enable async events support]),
+  [ build_async_events=$enableval ]
+)
+AC_MSG_RESULT($build_async_events)
+
+AC_MSG_CHECKING(whether we can build Async Events support)
+if test \( "x$build_async_events" = "xyes" -o "x$build_async_events" = "xauto" \) -a "x$has_pthreads" = "xyes"; then
+  AC_MSG_RESULT(yes)
+  AC_DEFINE(BUILD_ASYNC_EVENTS, 1, [Build async events support])
+  build_async_events="yes"
+else
+  AC_MSG_RESULT(no)
+  build_async_events="no"
+fi
+
+#######################################
+## MMX
+build_cpu_mmx="no"
+case $host_cpu in
+  i*86)
+    build_cpu_mmx="yes"
+    ;;
+  x86_64)
+    build_cpu_mmx="yes"
+    ;;
+esac
+AC_MSG_CHECKING(whether to build mmx code)
+AC_ARG_ENABLE(cpu-mmx,
+  AC_HELP_STRING([--enable-cpu-mmx], [enable mmx code]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(BUILD_MMX, 1, [Build MMX Code])
+        build_cpu_mmx="yes"
+      else
+        AC_MSG_RESULT(no)
+        build_cpu_mmx="no"
+      fi
+  ],
+  [
+    AC_MSG_RESULT($build_cpu_mmx)
+    if test "x$build_cpu_mmx" = "xyes" ; then
+      AC_DEFINE(BUILD_MMX, 1, [Build MMX Code])
+    fi
+  ]
+)
+
+#######################################
+## SSE
+build_cpu_sse="no"
+case $host_cpu in
+  i*86)
+    build_cpu_sse="yes"
+    ;;
+  x86_64)
+    build_cpu_sse="yes"
+    ;;
+esac
+AC_MSG_CHECKING(whether to build sse code)
+AC_ARG_ENABLE(cpu-sse,
+  AC_HELP_STRING([--enable-cpu-sse], [enable sse code]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(BUILD_SSE, 1, [Build SSE Code])
+        build_cpu_sse="yes"
+      else
+        AC_MSG_RESULT(no)
+        build_cpu_sse="no"
+      fi
+  ],
+  [
+    AC_MSG_RESULT($build_cpu_sse)
+    if test "x$build_cpu_sse" = "xyes" ; then
+      AC_DEFINE(BUILD_SSE, 1, [Build SSE Code])
+    fi
+  ]
+)
+
+#######################################
+## ALTIVEC
+build_cpu_altivec="no"
+case $host_cpu in
+  *power* | *ppc*)
+    build_cpu_altivec="auto"
+    ;;
+esac
+altivec_cflags=""
+AC_MSG_CHECKING(whether to build altivec code)
+AC_ARG_ENABLE(cpu-altivec,
+  AC_HELP_STRING([--enable-cpu-altivec], [enable altivec code]),
+  [ build_cpu_altivec=$enableval ],
+  [
+    if test ! "x$build_cpu_altivec" = "xauto"; then
+      build_cpu_altivec="no"
+    fi
+  ]
+)
+AC_MSG_RESULT($build_cpu_altivec)
+
+if test "x$build_cpu_altivec" = "xyes"; then
+   AC_CHECK_HEADER(altivec.h,
+     [
+        AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
+        AC_DEFINE(HAVE_ALTIVEC_H, 1, [Have altivec.h header file])
+        build_cpu_altivec="yes"
+     ],
+     [
+       save_CFLAGS=$CFLAGS
+       save_CPPFLAGS=$CPPFLAGS
+       CFLAGS=$CFLAGS" -maltivec"
+       CPPFLAGS=$CPPFLAGS" -maltivec"
+       unset ac_cv_header_altivec_h
+       AC_CHECK_HEADER(altivec.h,
+         [
+            AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
+            AC_DEFINE(HAVE_ALTIVEC_H, 1, [Have altivec.h header file])
+            build_cpu_altivec="yes"
+         ],
+         [
+            if test "x$build_cpu_altivec" = "xyes" -a "x$use_strict" = "xyes" ; then
+              AC_MSG_ERROR(Altivec not found (strict dependencies checking))
+            fi
+            build_cpu_altivec="no"
+         ]
+       )
+       CFLAGS=$save_CFLAGS
+       CPPFLAGS=$save_CPPFLAGS
+     ]
+   )
+fi
+
+if test "x$build_cpu_altivec" = "xyes"; then
+   AC_MSG_CHECKING(whether to use altivec compiler flag)
+   if test "x$GCC" = "xyes"; then
+      if echo "int main(){return 0;}" | ${CPP} -faltivec - > /dev/null 2>&1; then
+         altivec_cflags="-faltivec"
+         AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
+      elif echo "int main(){return 0;}" | ${CPP} -maltivec - > /dev/null 2>&1; then
+         altivec_cflags="-maltivec"
+         AC_DEFINE(BUILD_ALTIVEC, 1, [Build Altivec Code])
+      fi
+   fi
+   AC_MSG_RESULT($altivec_cflags)
+   CFLAGS="$CFLAGS $altivec_cflags"
+fi
+
+
+#######################################
+## C
+build_cpu_c="no"
+build_cpu_c="yes"
+AC_MSG_CHECKING(whether to build c code)
+AC_ARG_ENABLE(cpu-c,
+  AC_HELP_STRING([--enable-cpu-c], [enable C code]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(BUILD_C, 1, [Build plain C code])
+        build_cpu_c="yes"
+      else
+        AC_MSG_RESULT(no)
+        build_cpu_c="no"
+      fi
+  ], [
+      AC_MSG_RESULT($build_cpu_c)
+      if test "x$build_cpu_c" = "xyes" ; then
+        AC_DEFINE(BUILD_C, 1, [Build plain C code])
+      fi
+  ]
+)
+
+#####################################################################
+## ARGB engine options
+
+#######################################
+## Nearest sampling scaler
+scaler_sample="no"
+scaler_sample="yes"
+AC_MSG_CHECKING(whether to build sampling scaler)
+AC_ARG_ENABLE(scale-sample,
+  AC_HELP_STRING([--enable-scale-sample], [enable sampling scaler code]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(BUILD_SCALE_SAMPLE, 1, [Sampling Scaler Support])
+        scaler_sample="yes"
+      else
+        AC_MSG_RESULT(no)
+        scaler_sample="no"
+      fi
+  ], [
+      AC_MSG_RESULT($scaler_sample)
+      if test "x$scaler_sample" = "xyes" ; then
+        AC_DEFINE(BUILD_SCALE_SAMPLE, 1, [Sampling Scaler Support])
+      fi
+  ]
+)
+
+#######################################
+## Smooth super and sub sampling scaler
+scaler_smooth="no"
+scaler_smooth="yes"
+AC_MSG_CHECKING(whether to build smooth scaler)
+AC_ARG_ENABLE(scale-smooth,
+  AC_HELP_STRING([--enable-scale-smooth], [enable smooth scaler code]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(BUILD_SCALE_SMOOTH, 1, [Smooth Scaler Support])
+        scaler_smooth="yes"
+      else
+        AC_MSG_RESULT(no)
+        scaler_smooth="no"
+      fi
+  ], [
+      AC_MSG_RESULT($scaler_smooth)
+      if test "x$scaler_smooth" = "xyes" ; then
+        AC_DEFINE(BUILD_SCALE_SMOOTH, 1, [Smooth Scaler Support])
+      fi
+  ]
+)
+
+#######################################
+## YUV -> ARGB converter
+conv_yuv="no"
+conv_yuv="yes"
+AC_MSG_CHECKING(whether to build yuv converter code)
+AC_ARG_ENABLE(convert-yuv,
+  AC_HELP_STRING([--enable-convert-yuv], [enable yuv converter code]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(BUILD_CONVERT_YUV, 1, [YUV Converter Support])
+        conv_yuv="yes"
+      else
+        AC_MSG_RESULT(no)
+        conv_yuv="no"
+      fi
+  ], [
+      AC_MSG_RESULT($conv_yuv)
+      if test "x$conv_yuv" = "xyes" ; then
+        AC_DEFINE(BUILD_CONVERT_YUV, 1, [YUV Converter Support])
+      fi
+  ]
+)
+
+#####################################################################
+## Output rendering features
+
+#######################################
+## Small dither mask instead of big one (lower quality)
+conv_small_dither="no"
+AC_MSG_CHECKING(whether to build small dither mask code)
+AC_ARG_ENABLE(small-dither-mask,
+  AC_HELP_STRING([--enable-small-dither-mask], [enable small dither mask code]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(BUILD_SMALL_DITHER_MASK, 1, [Small Dither Mask Support])
+        conv_small_dither="yes"
+      else
+        AC_MSG_RESULT(no)
+        conv_small_dither="no"
+      fi
+  ], [
+      AC_MSG_RESULT($conv_small_dither)
+      if test "x$conv_small_dither" = "xyes" ; then
+        AC_DEFINE(BUILD_SMALL_DITHER_MASK, 1, [Small Dither Mask Support])
+      fi
+  ]
+)
+
+#######################################
+## No dither mask at all for 16bpp
+conv_no_dither="no"
+AC_MSG_CHECKING(whether to build without dither mask for 16bpp)
+AC_ARG_ENABLE(no-dither-mask,
+  AC_HELP_STRING([--enable-no-dither-mask], [enable conversion to 16bpp without dither mask]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_MSG_RESULT(yes)
+        AC_DEFINE(BUILD_NO_DITHER_MASK, 1, [No Dither Mask Support])
+        conv_no_dither="yes"
+      else
+        AC_MSG_RESULT(no)
+        conv_no_dither="no"
+      fi
+  ], [
+      AC_MSG_RESULT($conv_no_dither)
+      if test "x$conv_no_dither" = "xyes" ; then
+        AC_DEFINE(BUILD_NO_DITHER_MASK, 1, [No Dither Mask Support])
+      fi
+  ]
+)
+
+#######################################
+## Convert to 8bpp RGB 332
+EVAS_CONVERT_COLOR(8, RGB, 332, [yes])
+## Convert to 8bpp RGB 666
+EVAS_CONVERT_COLOR(8, RGB, 666, [yes])
+## Convert to 8bpp RGB 232
+EVAS_CONVERT_COLOR(8, RGB, 232, [yes])
+## Convert to 8bpp RGB 222
+EVAS_CONVERT_COLOR(8, RGB, 222, [yes])
+## Convert to 8bpp RGB 221
+EVAS_CONVERT_COLOR(8, RGB, 221, [yes])
+## Convert to 8bpp RGB 121
+EVAS_CONVERT_COLOR(8, RGB, 121, [yes])
+## Convert to 8bpp RGB 111
+EVAS_CONVERT_COLOR(8, RGB, 111, [yes])
+## Convert to 16bpp RGB 565
+EVAS_CONVERT_COLOR(16, RGB, 565)
+## Convert to 16bpp BGR 565
+EVAS_CONVERT_COLOR(16, BGR, 565)
+## Convert to 16bpp RGB 555
+EVAS_CONVERT_COLOR(16, RGB, 555)
+## Convert to 16bpp RGB 444
+EVAS_CONVERT_COLOR(16, RGB, 444)
+
+#######################################
+## Convert to 16bpp RGB 565 (444 ipaq)
+conv_16_rgb_ipq="yes"
+AC_MSG_CHECKING(whether to build 16bpp 565 (444 ipaq) converter code)
+AC_ARG_ENABLE(convert-16-rgb-ipq,
+  AC_HELP_STRING([--disable-convert-16-rgb-ipq], [disable 16bpp 565 (444 ipaq) converter code]),
+  [
+      if test "x$enableval" = "xyes" ; then
+        AC_DEFINE(BUILD_CONVERT_16_RGB_454645, 1, [16bpp 565 (444 ipaq) Converter Support])
+        conv_16_rgb_ipq="yes"
+      else
+        conv_16_rgb_ipq="no"
+      fi
+  ], [
+      if test "x$conv_16_rgb_ipq" = "xyes" ; then
+        AC_DEFINE(BUILD_CONVERT_16_RGB_454645, 1, [16bpp 565 (444 ipaq) Converter Support])
+      fi
+  ]
+)
+AC_MSG_RESULT($conv_16_rgb_ipq)
+
+#######################################
+## Convert to 16bpp RGB with rotation of 0
+EVAS_CONVERT_ROT(16, RGB, 0)
+## Convert to 16bpp RGB with rotation of 180
+EVAS_CONVERT_ROT(16, RGB, 180)
+## Convert to 16bpp RGB with rotation of 270
+EVAS_CONVERT_ROT(16, RGB, 270)
+## Convert to 16bpp RGB with rotation of 90
+EVAS_CONVERT_ROT(16, RGB, 90)
+
+#######################################
+## Convert to 24bpp RGB 888
+EVAS_CONVERT_COLOR(24, RGB, 888)
+## Convert to 24bpp BGR 888
+EVAS_CONVERT_COLOR(24, BGR, 888)
+## Convert to 32bpp RGB 8888
+EVAS_CONVERT_COLOR(32, RGB, 8888)
+## Convert to 32bpp RGBX 8888
+EVAS_CONVERT_COLOR(32, RGBX, 8888)
+## Convert to 32bpp BGR 8888
+EVAS_CONVERT_COLOR(32, BGR, 8888)
+## Convert to 32bpp BGRX 8888
+EVAS_CONVERT_COLOR(32, BGRX, 8888)
+
+#######################################
+## Convert to 32bpp RGB with rotation of 0
+EVAS_CONVERT_ROT(32, RGB, 0)
+## Convert to 32bpp RGB with rotation of 180
+EVAS_CONVERT_ROT(32, RGB, 180)
+## Convert to 32bpp RGB with rotation of 270
+EVAS_CONVERT_ROT(32, RGB, 270)
+## Convert to 32bpp RGB with rotation of 90
+EVAS_CONVERT_ROT(32, RGB, 90)
+
+## valgrind
+want_valgrind="no"
+have_valgrind="no"
+
+AC_MSG_CHECKING(whether to enable build with valgrind)
+AC_ARG_ENABLE(valgrind,
+  AC_HELP_STRING([--enable-valgrind], [enable valgrind fixes to stop false reports]),
+  [ want_valgrind=$enableval ]
+)
+AC_MSG_RESULT($want_valgrind)
+
+if test x$want_valgrind = "xyes"; then
+  PKG_CHECK_MODULES(VALGRIND, valgrind >= 2.4.0,
+    [
+      AC_DEFINE(HAVE_VALGRIND, 1, [Valgrind support])
+      have_valgrind=yes
+    ],
+    [
+      if test "x$want_valgrind" = "xyes" -a "x$use_strict" = "xyes" ; then
+        AC_MSG_ERROR([Valgrind not found (strict dependencies checking)])
+      fi
+    ]
+  )
+fi
+
+### if software 16 x11 is enabled - build software_16 (the generic 16bit
+### engine). later enable it fb_16 or other "16" bit engines are enabled.
+have_evas_software_16="no"
+if test "x$have_evas_software_16_x11" = "xyes"; then
+   have_evas_software_16="yes"
+fi
+if test "x$have_evas_sdl" = "xyes"; then
+   have_evas_software_16="yes"
+fi
+if test "x$have_evas_software_16_ddraw" = "xyes"; then
+   have_evas_software_16="yes"
+fi
+if test "x$have_evas_software_16_wince" = "xyes"; then
+   have_evas_software_16="yes"
+fi
+AM_CONDITIONAL(BUILD_ENGINE_SOFTWARE_16, test "x$have_evas_software_16" = "xyes")
+
+#####################################################################
+## Fill in flags
+
+AC_SUBST(ddraw_libs)
+AC_SUBST(ddraw_16_libs)
+AC_SUBST(direct3d_libs)
+
+AC_SUBST(glew_libs)
+
+AC_SUBST(x_cflags)
+AC_SUBST(x_libs)
+
+AC_SUBST(gl_cflags)
+AC_SUBST(gl_libs)
+
+AC_SUBST(qt_cflags)
+AC_SUBST(qt_libs)
+AC_SUBST(qt_moc)
+
+AC_SUBST(gif_cflags)
+AC_SUBST(gif_libs)
+AC_SUBST(jpeg_cflags)
+AC_SUBST(jpeg_libs)
+AC_SUBST(tiff_cflags)
+AC_SUBST(tiff_libs)
+AC_SUBST(xpm_cflags)
+AC_SUBST(xpm_libs)
+AC_SUBST(svg_cflags)
+AC_SUBST(svg_libs)
+AC_SUBST(pmaps_cflags)
+AC_SUBST(pmaps_libs)
+AC_SUBST(altivec_cflags)
+AC_SUBST(pthread_cflags)
+AC_SUBST(pthread_libs)
+
+#####################################################################
+## Output
+
+AC_OUTPUT([
+Makefile
+evas-cairo-x11.pc
+evas-fb.pc
+evas-glitz-x11.pc
+evas-opengl-glew.pc
+evas-opengl-x11.pc
+evas-software-buffer.pc
+evas-software-qtopia.pc
+evas-software-x11.pc
+evas-software-16-x11.pc
+evas-software-xcb.pc
+evas-xrender-x11.pc
+evas-xrender-xcb.pc
+evas-software-ddraw.pc
+evas-software-16-ddraw.pc
+evas-direct3d.pc
+evas-software-16-wince.pc
+evas-software-sdl.pc
+evas.pc
+src/Makefile
+src/lib/Makefile
+src/lib/canvas/Makefile
+src/lib/data/Makefile
+src/lib/file/Makefile
+src/lib/imaging/Makefile
+src/lib/cache/Makefile
+src/lib/engines/Makefile
+src/lib/engines/common/Makefile
+src/lib/engines/common/evas_op_add/Makefile
+src/lib/engines/common/evas_op_blend/Makefile
+src/lib/engines/common/evas_op_copy/Makefile
+src/lib/engines/common/evas_op_mask/Makefile
+src/lib/engines/common/evas_op_mul/Makefile
+src/lib/engines/common/evas_op_sub/Makefile
+src/lib/engines/common_16/Makefile
+src/modules/Makefile
+src/modules/engines/Makefile
+src/modules/engines/software_generic/Makefile
+src/modules/engines/software_ddraw/Makefile
+src/modules/engines/direct3d/Makefile
+src/modules/engines/software_16_wince/Makefile
+src/modules/engines/software_x11/Makefile
+src/modules/engines/software_xcb/Makefile
+src/modules/engines/fb/Makefile
+src/modules/engines/buffer/Makefile
+src/modules/engines/software_win32_gdi/Makefile
+src/modules/engines/software_qtopia/Makefile
+src/modules/engines/gl_common/Makefile
+src/modules/engines/gl_glew/Makefile
+src/modules/engines/gl_x11/Makefile
+src/modules/engines/cairo_common/Makefile
+src/modules/engines/cairo_x11/Makefile
+src/modules/engines/xrender_x11/Makefile
+src/modules/engines/xrender_xcb/Makefile
+src/modules/engines/software_sdl/Makefile
+src/modules/engines/glitz_x11/Makefile
+src/modules/engines/software_16/Makefile
+src/modules/engines/software_16_x11/Makefile
+src/modules/engines/software_16_ddraw/Makefile
+src/modules/engines/software_16_sdl/Makefile
+src/modules/loaders/Makefile
+src/modules/loaders/edb/Makefile
+src/modules/loaders/eet/Makefile
+src/modules/loaders/gif/Makefile
+src/modules/loaders/jpeg/Makefile
+src/modules/loaders/png/Makefile
+src/modules/loaders/tiff/Makefile
+src/modules/loaders/xpm/Makefile
+src/modules/loaders/svg/Makefile
+src/modules/loaders/pmaps/Makefile
+src/modules/savers/Makefile
+src/modules/savers/edb/Makefile
+src/modules/savers/eet/Makefile
+src/modules/savers/jpeg/Makefile
+src/modules/savers/png/Makefile
+src/modules/savers/tiff/Makefile
+src/lib/include/Makefile
+README
+evas.spec
+])
+
+#####################################################################
+## Info
+
+echo
+echo
+echo
+echo "------------------------------------------------------------------------"
+echo "$PACKAGE $VERSION"
+echo "------------------------------------------------------------------------"
+echo
+echo "Configuration Options Summary:"
+echo
+echo "Engines:"
+echo "  Software Memory Buffer.....: $have_evas_buffer"
+echo "  Software X11...............: $have_evas_software_x11"
+echo "  XRender X11................: $have_evas_xrender_x11"
+echo "  OpenGL X11.................: $have_evas_gl_x11"
+echo "  Glitz X11..................: $have_evas_glitz_x11"
+echo "  Cairo X11..................: $have_evas_cairo_x11"
+echo "  Software XCB...............: $have_evas_software_xcb"
+echo "  XRender XCB................: $have_evas_xrender_xcb"
+echo "  Software DirectDraw........: $have_evas_software_ddraw"
+echo "  Direct3d...................: $have_evas_direct3d"
+echo "  OpenGL Glew................: $have_evas_gl_glew"
+echo "  Software SDL...............: $have_evas_sdl (primitive: $sdl_primitive)"
+echo "  Software Framebuffer.......: $have_evas_fb"
+echo "  Software Qtopia............: $have_evas_qtopia"
+echo "  Software 16bit ............: $have_evas_software_16"
+echo "  Software 16bit X11.........: $have_evas_software_16_x11"
+echo "  Software 16bit Directdraw..: $have_evas_software_16_ddraw"
+echo "  Software 16bit WinCE.......: $have_evas_software_16_wince"
+echo "  Software 16bit SDL.........: $have_evas_sdl (primitive: $sdl_primitive)"
+# FIXME: opengl engine needs to be fixed and tested lots for all drivers
+# FIXME: xrender engine to be written
+echo
+echo "Image Loaders:"
+echo "  GIF.....................: $have_gif"
+echo "  PNG.....................: $have_png"
+echo "  JPEG....................: $have_jpeg"
+echo "  EET.....................: $have_eet_image_loader"
+echo "  EDB.....................: $have_edb_image_loader"
+echo "  TIFF....................: $have_tiff"
+echo "  XPM.....................: $have_xpm"
+echo "  SVG.....................: $have_svg"
+echo "  PMAPS...................: $have_pmaps"
+# FIXME: need to add modular image loader system
+# FIXME: add more image loader modules
+echo
+echo "Font Sourcing Systems:"
+echo "  EET.....................: $have_eet_font_loader"
+echo
+echo "Font Searching Systems:"
+echo "  Fontconfig..............: $have_fontconfig"
+# FIXME: add non freetype2 font engine support
+# FIXME: make freetype2 optional
+echo
+echo "CPU Specific Extensions:"
+echo "  Fallback C Code.........: $build_cpu_c"
+echo "  MMX.....................: $build_cpu_mmx"
+echo "  SSE.....................: $build_cpu_sse"
+echo "  ALTIVEC.................: $build_cpu_altivec"
+echo "  Thread Support..........: $build_pthreads"
+echo
+echo "Async Events..............: $build_async_events"
+echo
+echo "ARGB Software Engine Options:"
+echo "  Sampling Scaler.........: $scaler_sample"
+echo "  Smooth Scaler...........: $scaler_smooth"
+# FIXME: add an mmx scaler routine
+echo "  YUV Converter...........: $conv_yuv"
+# FIXME: add more YUV format and colorvariant support
+echo
+echo "ARGB Conversion Options:"
+echo "  Smaller Dither Mask.....: $conv_small_dither"
+echo "  No Dither Mask for 16bpp: $conv_no_dither"
+echo "  8bpp RGB 332............: $conv_8_rgb_332"
+echo "  8bpp RGB 666............: $conv_8_rgb_666"
+echo "  8bpp RGB 232............: $conv_8_rgb_232"
+echo "  8bpp RGB 222............: $conv_8_rgb_222"
+echo "  8bpp RGB 221............: $conv_8_rgb_221"
+echo "  8bpp RGB 121............: $conv_8_rgb_121"
+echo "  8bpp RGB 111............: $conv_8_rgb_111"
+# FIXME: add grayscale and B&W support
+echo "  16bpp RGB 565...........: $conv_16_rgb_565"
+echo "  16bpp BGR 565...........: $conv_16_bgr_565"
+echo "  16bpp RGB 555...........: $conv_16_rgb_555"
+echo "  16bpp RGB 444...........: $conv_16_rgb_444"
+echo "  16bpp RGB 565 (444 ipaq): $conv_16_rgb_ipq"
+# FIXME: add 555 (444 ipaq) support
+# FIXME: add 24bpp 666 support
+# FIXME: add 32bpp 666 support
+# FIXME: add 30bpp support
+# FIXME: add palletted support
+# FIXME: add 8bpp and below rotation
+echo "  16bpp Rotation 0........: $conv_16_rgb_rot_0"
+echo "  16bpp Rotation 90.......: $conv_16_rgb_rot_90"
+echo "  16bpp Rotation 180......: $conv_16_rgb_rot_180"
+echo "  16bpp Rotation 270......: $conv_16_rgb_rot_270"
+echo "  24bpp RGB 888...........: $conv_24_rgb_888"
+echo "  24bpp BGR 888...........: $conv_24_bgr_888"
+# FIXME: add 24bpp rotation
+echo "  32bpp RGB 8888..........: $conv_32_rgb_8888"
+echo "  32bpp RGBX 8888.........: $conv_32_rgbx_8888"
+echo "  32bpp BGR 8888..........: $conv_32_bgr_8888"
+echo "  32bpp BGRX 8888.........: $conv_32_bgrx_8888"
+echo "  32bpp Rotation 0........: $conv_32_rgb_rot_0"
+echo "  32bpp Rotation 90.......: $conv_32_rgb_rot_90"
+echo "  32bpp Rotation 180......: $conv_32_rgb_rot_180"
+echo "  32bpp Rotation 270......: $conv_32_rgb_rot_270"
+echo
+echo "------------------------------------------------------------------------"
+echo
+echo "Now type 'make' ('gmake' on some systems) to compile $PACKAGE,"
+echo "and then afterwards as root (or the user who will install this), type"
+echo "'make install'. Change users with 'su' or 'sudo' appropriately."
+echo
diff --git a/debian/.cvsignore b/debian/.cvsignore
new file mode 100644 (file)
index 0000000..6d10dce
--- /dev/null
@@ -0,0 +1 @@
+changelog
diff --git a/debian/changelog.in b/debian/changelog.in
new file mode 100644 (file)
index 0000000..a906310
--- /dev/null
@@ -0,0 +1,5 @@
+evas (@VERSION@-1) unstable; urgency=low
+
+  * a CVS snapshot release.
+
+ -- Falko Schmidt <falko@alphagemini.org>  Fri,  4 Apr 2008 15:13:56 +0000
diff --git a/debian/compat b/debian/compat
new file mode 100644 (file)
index 0000000..1e8b314
--- /dev/null
@@ -0,0 +1 @@
+6
diff --git a/debian/control b/debian/control
new file mode 100644 (file)
index 0000000..5cd8edd
--- /dev/null
@@ -0,0 +1,319 @@
+Source: evas
+Section: libs
+Priority: optional
+Maintainer: Falko Schmidt <falko@alphagemini.org>
+Build-Depends: debhelper (>= 6), cdbs, libeet-dev, libfreetype6-dev, libpng12-dev | libpng-dev, libx11-dev, libxrender-dev, x11proto-xext-dev, zlib1g, libjpeg62-dev, libtiff4-dev, libgif-dev, libfontconfig1-dev, libglu1-mesa-dev, mesa-common-dev, libxpm-dev, librsvg2-dev, doxygen
+Standards-Version: 3.7.3
+Homepage: http://www.enlightenment.org
+
+Package: libevas0
+Architecture: any
+Depends: ${shlibs:Depends}, libevas-loaders, libevas-savers
+Suggests: libevas0-engines
+Provides: libevas
+Description: enlightenment advanced canvas library
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains the core library.
+
+Package: libevas-doc
+Architecture: all
+Section: doc
+Enhances: libevas-dev
+Description: Evas API Documentation
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package provides development documentation (html and manpages) for the
+ Evas library.
+
+Package: libevas-dev
+Section: libdevel
+Architecture: any
+Depends: libevas0 (= ${binary:Version}), libjpeg62-dev, libx11-dev, libfreetype6-dev, libfontconfig1-dev, libeet-dev, pkg-config
+Suggests: libevas-doc
+Description: Enlightenment DR17 advanced canvas library development files
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package provides headers and static libraries required to develop against
+ evas.
+
+Package: libevas-dbg
+Architecture: any
+Section: libdevel
+Depends: libevas0 (= ${binary:Version})
+Priority: extra
+Description: enlightenment advanced canvas library
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ .
+ This package contains unstripped shared libraries. It is provided primarily
+ to provide a backtrace with names in a debugger, this makes it somewhat
+ easier to interpret core dumps. The libraries are installed in
+ /usr/lib/debug and are automatically used by gdb.
+
+Package: libevas-engine-fb
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas-engine-software-generic
+Description: Evas module providing a framebuffer render engine
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas engine module for framebuffer rendering.
+Package: libevas-engine-software-x11
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas-engine-software-generic
+Description: Evas module providing a software X11 render engine
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas engine module for software X11 rendering.
+
+Package: libevas-engine-software-generic
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0
+Description: Evas module providing a generic software render engine
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas engine module for generic software
+ rendering.
+
+Package: libevas-engine-buffer
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas-engine-software-generic
+Description: Evas module providing a buffer render engine
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas engine module for buffer rendering.
+
+Package: libevas-engine-xrender
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas-engine-software-generic
+Description: Evas module providing a Xrender engine
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas engine module for Xrender.
+
+Package: libevas-engine-gl-x11
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas-engine-software-generic
+Description: Evas module providing an OpenGL engine
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas engine module for OpenGl.
+
+Package: libevas-loader-eet
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, libeet1
+Description: Evas module providing an Eet loader
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas loader module for Eet.
+
+Package: libevas-loader-png
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, libpng12-0
+Description: Evas module providing a PNG loader
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas loader module for PNG.
+
+Package: libevas-loader-jpeg
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, libjpeg62
+Description: Evas module providing a JPEG loader
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas loader module for JPEG.
+
+Package: libevas-loader-gif
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, libungif4g
+Description: Evas module providing a GIF loader
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas loader module for GIF.
+
+Package: libevas-loader-tiff
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, libtiff4
+Description: Evas module providing a TIFF loader
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas loader module for TIFF.
+
+Package: libevas-loader-xpm
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, libxpm4
+Description: Evas module providing a X11 pixmap loader
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas loader module for XPM.
+
+Package: libevas-loader-svg
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, librsvg2-2 
+Description: Evas module providing a SVG loader
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas loader module for SVG.
+
+Package: libevas-saver-eet
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, libeet1
+Description: Evas module providing an Eet saver
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas saver module for Eet.
+
+Package: libevas-saver-png
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, libpng12-0
+Description: Evas module providing a PNG saver
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas saver module for PNG.
+
+Package: libevas-saver-jpeg
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, libjpeg62
+Description: Evas module providing a JPEG saver
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas saver module for JPEG.
+
+Package: libevas-saver-tiff
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}, libevas0, libtiff4
+Description: Evas module providing a TIFF saver
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package contains an Evas saver module for TIFF.
+
+Package: libevas-engines
+Architecture: any
+Depends: libevas-engine-buffer, libevas-engine-software-generic, libevas-engine-software-x11, libevas-engine-xrender
+Description: virtual package providing important Evas engine modules
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package will install the following Evas engine modules:
+  - buffer
+  - software/genenric
+  - software/X11
+  - xrender/X11
+
+Package: libevas-engines-extra
+Architecture: any
+Depends: libevas-engine-fb, libevas-engine-gl-x11
+Description: virtual package providing optional Evas engine modules
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This package will install the following Evas engine modules:
+  - GL/X11
+  - Framebuffer
+
+Package: libevas-savers
+Section: graphics
+Architecture: any
+Depends: libevas-saver-eet, libevas-saver-jpeg, libevas-saver-png, libevas-saver-tiff
+Description: virtual package providing all available Evas savers
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This is a virtual package providing all available Evas saver modules.
+
+Package: libevas-loaders
+Section: graphics
+Architecture: any
+Depends: libevas-loader-eet, libevas-loader-jpeg, libevas-loader-png, libevas-loader-tiff, libevas-loader-gif, libevas-loader-xpm, libevas-loader-svg
+Description: virtual package providing all available Evas loaders
+ Evas is an advanced canvas library, providing six engines for rendering: X11,
+ OpenGL (hardware accelerated), DirectFB, the framebuffer, Microsoft Windows
+ and Qtopia.
+ Due to its simple API, evas can be developed with rapidly, and cleanly.
+ .
+ This is a virtual package providing all available Evas loader modules.
diff --git a/debian/copyright b/debian/copyright
new file mode 100644 (file)
index 0000000..3abfc3b
--- /dev/null
@@ -0,0 +1,43 @@
+This package was debianized by Falko Schmidt <falko@alphagemini.org> on
+Fri,  4 Apr 2008 12:37:17 +0000.
+
+The source code is from the e17/libs/evas module of the enlightenment CVS
+tree. For more information, see:
+
+  http://www.enlightenment.org
+
+Upstream Authors
+
+        Enlightenment team <enlightenment-devel@lists.sourceforge.net>
+
+Copyright:
+
+        Copyright (C) 2000 Carsten Haitzler and various contributors (see AUTHORS)
+
+License:
+
+  Permission is hereby granted, free of charge, to any person obtaining a
+  copy of this software and associated documentation files (the "Software"),
+  to deal in the Software without restriction, including without limitation
+  the rights to use, copy, modify, merge, publish, distribute, sublicense,
+  and/or sell copies of the Software, and to permit persons to whom the
+  Software is furnished to do so, subject to the following conditions:
+
+  The above copyright notice and this permission notice shall be included in
+  all copies of the Software, its documentation and marketing & publicity
+  materials, and acknowledgment shall be given in the documentation,
+  materials and software packages that this Software was used.
+
+  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+  THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+  IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+  CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+On Debian systems, the complete text of the BSD License can be found
+in `/usr/share/common-licenses/BSD'.
+
+The Debian packaging is:
+  (C) 2006 2007,Debian Pkg-e Team <pkg-e-devel@lists.alioth.debian.org>
+  and is licensed under the GPL, see `/usr/share/common-licenses/GPL'.
diff --git a/debian/libevas-dev.install b/debian/libevas-dev.install
new file mode 100644 (file)
index 0000000..ecc67bb
--- /dev/null
@@ -0,0 +1,4 @@
+debian/tmp/usr/include/*
+debian/tmp/usr/lib/lib*.so
+debian/tmp/usr/lib/lib*.a
+debian/tmp/usr/lib/pkgconfig/*
diff --git a/debian/libevas-doc.dirs b/debian/libevas-doc.dirs
new file mode 100644 (file)
index 0000000..fc70dc0
--- /dev/null
@@ -0,0 +1 @@
+usr/share/doc/libevas-doc
diff --git a/debian/libevas-doc.doc-base b/debian/libevas-doc.doc-base
new file mode 100644 (file)
index 0000000..397f3dd
--- /dev/null
@@ -0,0 +1,10 @@
+Document: evas
+Title: Evas Guide
+Author: Carsten Haitzler
+Abstract: This document describes Evas API
+ and provides sample C code.
+Section: Programming/C
+
+Format: HTML
+Index: /usr/share/doc/libevas-doc/html/index.html
+Files: /usr/share/doc/libevas-doc/html/*.html
diff --git a/debian/libevas-engine-buffer.install b/debian/libevas-engine-buffer.install
new file mode 100644 (file)
index 0000000..308f4d8
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/engines/buffer/*/*.so
diff --git a/debian/libevas-engine-fb.install b/debian/libevas-engine-fb.install
new file mode 100644 (file)
index 0000000..7699749
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/engines/fb/*/*.so
diff --git a/debian/libevas-engine-gl-x11.install b/debian/libevas-engine-gl-x11.install
new file mode 100644 (file)
index 0000000..a049780
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/engines/gl_x11/*/*.so
diff --git a/debian/libevas-engine-software-generic.install b/debian/libevas-engine-software-generic.install
new file mode 100644 (file)
index 0000000..33d4c72
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/engines/software_generic/*/*.so
diff --git a/debian/libevas-engine-software-x11.install b/debian/libevas-engine-software-x11.install
new file mode 100644 (file)
index 0000000..8fdfca2
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/engines/software_x11/*/*.so
diff --git a/debian/libevas-engine-xrender.install b/debian/libevas-engine-xrender.install
new file mode 100644 (file)
index 0000000..0f774fe
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/engines/xrender_x11/*/*.so
diff --git a/debian/libevas-engines-extra.install b/debian/libevas-engines-extra.install
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/libevas-engines.install b/debian/libevas-engines.install
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/libevas-loader-eet.install b/debian/libevas-loader-eet.install
new file mode 100644 (file)
index 0000000..3b2d85f
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/loaders/eet/*/*.so
diff --git a/debian/libevas-loader-gif.install b/debian/libevas-loader-gif.install
new file mode 100644 (file)
index 0000000..76ac25e
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/loaders/gif/*/*.so
diff --git a/debian/libevas-loader-jpeg.install b/debian/libevas-loader-jpeg.install
new file mode 100644 (file)
index 0000000..03da4b4
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/loaders/jpeg/*/*.so
diff --git a/debian/libevas-loader-png.install b/debian/libevas-loader-png.install
new file mode 100644 (file)
index 0000000..4b2c939
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/loaders/png/*/*.so
diff --git a/debian/libevas-loader-svg.install b/debian/libevas-loader-svg.install
new file mode 100644 (file)
index 0000000..ef17025
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/loaders/svg/*/*.so
diff --git a/debian/libevas-loader-tiff.install b/debian/libevas-loader-tiff.install
new file mode 100644 (file)
index 0000000..8a91a81
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/loaders/tiff/*/*.so
diff --git a/debian/libevas-loader-xpm.install b/debian/libevas-loader-xpm.install
new file mode 100644 (file)
index 0000000..253cd6f
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/loaders/xpm/*/*.so
diff --git a/debian/libevas-loaders.install b/debian/libevas-loaders.install
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/libevas-saver-eet.install b/debian/libevas-saver-eet.install
new file mode 100644 (file)
index 0000000..2b26d8d
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/savers/eet/*/*.so
diff --git a/debian/libevas-saver-jpeg.install b/debian/libevas-saver-jpeg.install
new file mode 100644 (file)
index 0000000..bc210c4
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/savers/jpeg/*/*.so
diff --git a/debian/libevas-saver-png.install b/debian/libevas-saver-png.install
new file mode 100644 (file)
index 0000000..07b3edd
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/savers/png/*/*.so
diff --git a/debian/libevas-saver-tiff.install b/debian/libevas-saver-tiff.install
new file mode 100644 (file)
index 0000000..10802ed
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/evas/modules/savers/tiff/*/*.so
diff --git a/debian/libevas-savers.install b/debian/libevas-savers.install
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/debian/libevas0.install b/debian/libevas0.install
new file mode 100644 (file)
index 0000000..1ba4f52
--- /dev/null
@@ -0,0 +1 @@
+debian/tmp/usr/lib/libevas.so.*
diff --git a/debian/rules b/debian/rules
new file mode 100644 (file)
index 0000000..74c2396
--- /dev/null
@@ -0,0 +1,70 @@
+#!/usr/bin/make -f
+
+include /usr/share/cdbs/1/class/autotools.mk
+include /usr/share/cdbs/1/rules/debhelper.mk
+
+DEB_MAKE_CLEAN_TARGET := clean
+
+#DEB_INSTALL_MANPAGES_libevas-doc := $(DEB_SRCDIR)/doc/man/man3/*.3
+DEB_DH_STRIP_ARGS := --dbg-package=libevas-dbg
+
+DEB_CONFIGURE_EXTRA_FLAGS := --enable-strict \
+       --enable-fontconfig \
+       --enable-software-x11 \
+       --enable-fb \
+       --enable-buffer \
+       --enable-gl-x11 \
+       --enable-xrender-x11 \
+       --enable-image-loader-gif \
+       --enable-image-loader-png \
+       --enable-image-loader-jpeg \
+       --enable-image-loader-eet \
+       --enable-font-loader-eet \
+       --enable-image-loader-tiff \
+       --enable-image-loader-xpm \
+       --enable-image-loader-svg \
+       --enable-scale-sample \
+       --enable-scale-smooth \
+       --enable-convert-yuv \
+       --enable-small-dither-mask \
+       --enable-no-dither-mask \
+       --enable-convert-8-rgb-332 \
+       --enable-convert-8-rgb-666 \
+       --enable-convert-8-rgb-232 \
+       --enable-convert-8-rgb-222 \
+       --enable-convert-8-rgb-221 \
+       --enable-convert-8-rgb-121 \
+       --enable-convert-8-rgb-111 \
+       --enable-convert-16-rgb-565 \
+       --enable-convert-16-bgr-565 \
+       --enable-convert-16-rgb-555 \
+       --enable-convert-16-rgb-444 \
+       --enable-convert-16-rgb-ipq \
+       --enable-convert-16-rgb-rot-0 \
+       --enable-convert-16-rgb-rot-180 \
+       --enable-convert-16-rgb-rot-270 \
+       --enable-convert-16-rgb-rot-90 \
+       --enable-convert-24-rgb-888 \
+       --enable-convert-24-bgr-888 \
+       --enable-convert-32-rgb-8888 \
+       --enable-convert-32-rgbx-8888 \
+       --enable-convert-32-bgr-8888 \
+       --enable-convert-32-bgrx-8888 \
+       --enable-convert-32-rgb-rot-0 \
+       --enable-convert-32-rgb-rot-180 \
+       --enable-convert-32-rgb-rot-270 \
+       --enable-convert-32-rgb-rot-90 \
+       --disable-rpath \
+       --enable-pthreads
+
+build/libevas-doc::
+       cd $(DEB_SRCDIR) && ./gendoc
+
+install/libevas-doc::
+       cp -R $(DEB_SRCDIR)/doc/html debian/libevas-doc/usr/share/doc/libevas-doc/
+       cd $(DEB_SRCDIR)/doc/man/man3 && ls -1 | grep -vi evas | xargs rm
+
+clean::
+       rm -rf $(DEB_SRCDIR)/doc/html $(DEB_SRCDIR)/doc/latex $(DEB_SRCDIR)/doc/man
+       ./autogen.sh --prefix=/usr $(DEB_CONFIGURE_EXTRA_FLAGS) 
+
diff --git a/doc/.cvsignore b/doc/.cvsignore
new file mode 100644 (file)
index 0000000..cc370ed
--- /dev/null
@@ -0,0 +1,3 @@
+html
+latex
+man
diff --git a/doc/e.css b/doc/e.css
new file mode 100644 (file)
index 0000000..604ee7f
--- /dev/null
+++ b/doc/e.css
@@ -0,0 +1,161 @@
+body {
+    background: url("b.png");
+    background-repeat: repeat-x;
+    background-position: top left;
+    background-color: #f4f4f4;
+    text-align: center;
+    font-family: sans-serif;
+    padding: 0;
+    margin: 0;
+}
+
+div.main {
+    margin: 1em auto;
+    vertical-align: top;
+    font-family: "Bitstream Vera", "Vera", "Trebuchet MS", Trebuchet, Tahoma, sans-serif;
+    color: #444444;
+    font-size: 0.8em;
+    text-align: justify;
+    width: 80%;
+}
+
+td.t { background-image:url("t.gif"); }
+td.t[class] { background-image:url("t.png"); }
+td.tl { background-image:url("tl.gif"); }
+td.tl[class] { background-image:url("tl.png"); }
+
+td.nav, td.lnav,  td.rnav {
+   align: middle;
+   text-align: center;
+   vertical-align: middle;
+   width: 100px;
+   height: 25px;
+   font-family: "Bitstream Vera", "Vera", "Trebuchet MS", Trebuchet, Tahoma, sans-serif;
+   color: #000000;
+   font-size: 9px;
+   font-weight: bold;
+   white-space: no-wrap;
+}  
+
+td.lnav[class] { background-image:url("n.png"); }
+td.lnav[class] { background-image:url("n.png"); }
+td.rnav { background-image:url("n.gif"); }
+td.rnav[class] { background-image:url("n.png"); }
+
+hr {
+    width: 200px;
+    height: 1px;
+    background: #dddddd;
+    border: 0;
+}
+
+p { color: #444444 ;}
+p.tiny, small {
+    color: #888888;
+    font-size: 0.5em;
+}
+
+h1 { 
+    text-align: center;
+    font-size: 1.3em; 
+}
+
+h2 { font-size: 1.1em; }
+h3 { font-size: 0.9em; }
+
+span.keyword { color: #008000; }
+span.keywordtype { color: #604020; }
+span.keywordflow { color: #e08000; }
+span.comment { color: #800000; }
+span.preprocessor { color: #806020; }
+span.stringliteral { color: #002080; }
+span.charliteral { color: #008080; }
+
+a:link {
+    color: #445566;
+    text-decoration: underline;
+}  
+   
+a:visited {
+    color: #667788;
+    text-decoration: underline;
+}  
+
+a:active {                
+    color: #88cccc;
+    text-decoration: none;
+}
+
+a:hover {
+    color: #112266;
+    text-decoration: underline;
+}  
+
+a.nav {
+    text-decoration: none;
+    display: block;
+}
+a.nav:link, a.nav:visited { color: #888888; }
+a.nav:active { color: #000000; }
+a.nav:hover { color: #444444; }
+a.code:link, a.code:visited { text-decoration: none; }
+
+div.fragment {
+    font-size: 1em;
+    border: 1px dotted #cccccc;
+    background-color: #ffffff;
+    text-align: left;
+    vertical-align: middle;
+    padding: 2px;
+    margin-left: 25px;
+    margin-right: 25px;
+    overflow: auto;
+}
+
+td.indexkey {
+    font-weight: bold;
+    padding-left: 10px;
+    padding-right: 0;
+    padding-top: 2px;
+    padding-bottom: 0px;
+    margin: 0;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px dotted #cccccc;
+    border-right: 0px dotted #cccccc;
+}
+
+td.indexvalue {
+    font-style: italic;
+    padding-right: 10px;
+    padding-left: 0;
+    padding-top: 2px;
+    padding-bottom: 2px;
+    margin: 0;
+    margin-top: 2px;
+    margin-bottom: 2px;
+    border: 1px dotted #cccccc;
+    border-left: 0px dotted #cccccc;
+}
+
+.mdescRight { font-style: italic; }
+.memitem {
+    padding-left: 2px;
+    padding-right: 2px;
+    border: 1px dotted #cccccc;
+    background-color: #ffffff;
+}
+.memname {
+    white-space: nowrap;
+    font-weight: bold;
+}
+.paramname { font-weight: normal; }
+
+div.ah {
+    border: thin solid #888888;
+    font-weight: bold;
+    margin-bottom: 3px;
+    margin-top: 3px;
+}
+
diff --git a/doc/evas.css b/doc/evas.css
new file mode 100644 (file)
index 0000000..6117b39
--- /dev/null
@@ -0,0 +1,178 @@
+td.md { 
+ background-color: #ffffff;
+ font-family: monospace;
+ text-align: left;
+ vertical-align: center;
+ font-size: 10;
+ padding-right  : 1px; 
+ padding-top    : 1px; 
+ padding-left   : 1px; 
+ padding-bottom : 1px; 
+ margin-left    : 1px; 
+ margin-right   : 1px; 
+ margin-top     : 1px; 
+ margin-bottom  : 1px  
+}
+td.mdname { 
+ font-family: monospace;
+ text-align: left;
+ vertical-align: center;
+ font-size: 10;
+ padding-right  : 1px; 
+ padding-top    : 1px; 
+ padding-left   : 1px; 
+ padding-bottom : 1px; 
+ margin-left    : 1px; 
+ margin-right   : 1px; 
+ margin-top     : 1px; 
+ margin-bottom  : 1px  
+}
+h1
+{
+ text-align: center;
+ color: #333333
+}
+h2
+{
+ text-align: left;
+ color: #333333
+}
+h3
+{
+ text-align: left;
+ color: #333333
+}
+a:link
+{
+ text-decoration: none;
+ color: #444444;
+ font-weight: bold;
+}
+a:visited
+{
+ text-decoration: none;
+ color: #666666;
+ font-weight: bold;
+}
+a:hover
+{
+ text-decoration: none;
+ color: #000000;
+ font-weight: bold;
+}
+a.nav:link
+{
+ text-decoration: none;
+ color: #444444;
+ font-weight: normal;
+}
+a.nav:visited
+{
+ text-decoration: none;
+ color: #666666;
+ font-weight: normal;
+}
+a.nav:hover
+{
+ text-decoration: none;
+ color: #000000;
+ font-weight: normal;
+}
+a.qindex:link
+{
+ text-decoration: none;
+ color: #444444;
+ font-weight: normal;
+}
+a.qindex:visited
+{
+ text-decoration: none;
+ color: #666666;
+ font-weight: normal;
+}
+a.qindex:hover
+{
+ text-decoration: none;
+ color: #000000;
+ font-weight: normal;
+}
+p
+{
+ color: #000000;
+ font-family: sans-serif;
+ font-size: 10;
+}
+body { 
+ background-image: url("hilite.png");
+ background-repeat: no-repeat;
+ background-position: left top;
+ background-color: #dddddd;
+ color: #000000;
+ font-family: sans-serif;
+ padding: 8px;
+ margin: 0;
+}
+div.fragment
+{
+ background-image: url("hilite.png");
+ background-repeat: no-repeat;
+ background-position: left top;
+ border: thin solid #888888;
+ background-color: #eeeeee;
+ padding: 4px;
+ text-align: left;
+ vertical-align: center;
+ font-size: 12;
+}
+hr
+{
+ border: 0;
+ background-color: #000000;
+ width: 80%;
+ height: 1;
+}
+dl
+{
+ background-image: url("hilite.png");
+ background-repeat: no-repeat;
+ background-position: left top;
+ border: thin solid #aaaaaa;
+ background-color: #eeeeee;
+ padding: 4px;
+ text-align: left;
+ vertical-align: center;
+ font-size: 12;
+}
+em
+{
+  color: #334466;
+  font-family: courier;
+  font-size: 10;
+  font-style: normal;
+}
+
+div.nav
+{
+ border: thin solid #000000;
+ background-color: #ffffff;
+ padding: 1px;
+ text-align: center;
+ vertical-align: center;
+ font-size: 12;
+}
+div.body
+{
+ border: thin solid #000000;
+ background-color: #ffffff;
+ padding: 4px;
+ text-align: left;
+ font-size: 10; 
+}
+div.diag
+{
+ border: thin solid #888888;
+ background-color: #eeeeee;
+ padding: 4px;
+ text-align: center;
+ font-size: 8; 
+}
diff --git a/doc/foot.html b/doc/foot.html
new file mode 100644 (file)
index 0000000..0d3303d
--- /dev/null
@@ -0,0 +1,6 @@
+  </div>
+  <hr />
+  <p class="tiny">Copyright &copy; Enlightenment.org</p>
+  <p class="tiny">$projectname Documentation Generated: $datetime</p>
+ </body>
+</html>
diff --git a/doc/head.html b/doc/head.html
new file mode 100644 (file)
index 0000000..ee04610
--- /dev/null
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+            "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html>
+ <head>
+  <title>$title</title>
+  <link href="e.css" rel="stylesheet" type="text/css" />
+ </head>
+
+<body>
+ <table width="100%" border="0" cellpadding="0" cellspacing="0">
+  <tr>
+   <td class="t" width="50%" valign="top" align="left">
+     <table width="100px" height="100px" border="0" cellpadding="0" cellspacing="0">
+     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=index">Home</a></td></tr>
+     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=news">News</a></td></tr>
+     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=about">About</a></td></tr>
+     <tr><td class="rnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=download">Download</a></td></tr>
+    </table>
+   </td>
+   <td class="tl" width="612" height="250" valign="bottom" align="center">
+    <img src="_.gif" width="612" height="1" />
+    <table border="0" cellpadding="0" cellspacing="4px">
+     <tr>
+      <td class='nav'><a class='nav' href="index.html">Main&nbsp;Page</a></td>
+      <td class='nav'><a class='nav' href="modules.html">Modules</a></td>
+      <td class='nav'><a class='nav' href="annotated.html">Data Structures</a></td>
+      <td class="nav"><a class="nav" href="Evas_8h.html">API Reference</a></td>
+      <td class="nav"><a class="nav" href="globals.html">Globals</a></td>
+      <td class="nav"><a class="nav" href="pages.html">Related Pages</a></td>
+     </tr>
+    </table>
+    <hr />
+   </td>
+   <td class="t" width="50%" valign="top" align="right">
+    <table width="100px" height="100px" border="0" cellpadding="0" cellspacing="0">
+     <tr><td class="rnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=support">Support</a></td></tr>
+     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=contribute">Contribute</a></td></tr>
+     <tr><td class="lnav"><a class="nav" href="http://web.enlightenment.org/p.php?p=contact">Contact</a></td></tr>
+     <tr><td class="lnav"><a class="nav" href="http://trac.enlightenment.org/e">Tracker</a></td></tr>
+    </table>
+   </td>
+  </tr>
+ </table>
+
+ <div class="main">
diff --git a/doc/img/_.gif b/doc/img/_.gif
new file mode 100644 (file)
index 0000000..60fa7a1
Binary files /dev/null and b/doc/img/_.gif differ
diff --git a/doc/img/b.png b/doc/img/b.png
new file mode 100644 (file)
index 0000000..04e5ac8
Binary files /dev/null and b/doc/img/b.png differ
diff --git a/doc/img/evas.eps b/doc/img/evas.eps
new file mode 100644 (file)
index 0000000..dccb8e9
--- /dev/null
@@ -0,0 +1,149 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: evas.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Wed Oct 23 16:18:00 2002
+%%For: raster@dugong.fluffyspider.com.au (The Rasterman)
+%%BoundingBox: 0 0 404 396
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 396 moveto 0 0 lineto 404 0 lineto 404 396 lineto closepath clip newpath
+-8.0 450.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add
+  4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+  bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+  4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+       /endangle exch def
+       /startangle exch def
+       /yrad exch def
+       /xrad exch def
+       /y exch def
+       /x exch def
+       /savematrix mtrx currentmatrix def
+       x y tr xrad yrad sc 0 0 1 startangle endangle arc
+       closepath
+       savematrix setmatrix
+       } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Ellipse
+n 3450 4200 3300 3300 0 360 DrawEllipse gs 0.00 setgray ef gr 
+% Ellipse
+n 3825 4200 3000 3000 0 360 DrawEllipse gs col7 1.00 shd ef gr 
+% Ellipse
+n 1725 4200 600 600 0 360 DrawEllipse gs 0.00 setgray ef gr 
+% Ellipse
+n 6238 4200 600 600 0 360 DrawEllipse gs 0.00 setgray ef gr 
+% Rotated Ellipse
+gs
+3225 4200 tr
+-90.000 rot
+n 0 0 600 600 0 360 DrawEllipse 90.000 rot
+gs 0.00 setgray ef gr gr
+
+% Rotated Ellipse
+gs
+4725 4200 tr
+-270.001 rot
+n 0 0 600 600 0 360 DrawEllipse 270.001 rot
+gs 0.00 setgray ef gr gr
+
+% Rotated Ellipse
+gs
+3225 4132 tr
+-90.000 rot
+n 0 0 545 545 0 360 DrawEllipse 90.000 rot
+gs col7 1.00 shd ef gr gr
+
+% Rotated Ellipse
+gs
+4725 4268 tr
+-270.001 rot
+n 0 0 545 545 0 360 DrawEllipse 270.001 rot
+gs col7 1.00 shd ef gr gr
+
+% Arc
+n 6306.0 4200.0 545.0 180.0 0.0 arc
+6306.0 4200.0 l 5761.0 4200.0 l gs col7 1.00 shd ef gr 
+% Arc
+n 6170.0 4200.0 545.0 180.0 0.0 arcn
+6170.0 4200.0 l 5625.0 4200.0 l gs col7 1.00 shd ef gr 
+$F2psEnd
+rs
diff --git a/doc/img/evas.fig b/doc/img/evas.fig
new file mode 100644 (file)
index 0000000..a585901
--- /dev/null
@@ -0,0 +1,25 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+500.00
+Single
+-2
+1200 2
+6 150 900 6825 7500
+1 4 0 0 0 0 48 0 20 0.000 1 0.0000 1725 4200 600 600 1125 4200 2325 4200
+1 4 0 0 0 0 50 0 20 0.000 1 0.0000 3450 4200 3300 3300 150 4200 6750 4200
+1 4 0 0 0 7 49 0 20 0.000 1 0.0000 3825 4200 3000 3000 825 4200 6825 4200
+-6
+6 5625 3600 6900 4800
+6 5625 3600 6900 4800
+5 2 0 0 0 7 30 0 20 0.000 0 0 0 0 6306.000 4200.000 5761 4200 6306 3655 6851 4200
+5 2 0 0 0 7 30 0 20 0.000 0 1 0 0 6170.000 4200.000 5625 4200 6170 4745 6715 4200
+-6
+1 4 0 0 0 0 40 0 20 0.000 1 0.0000 6238 4200 600 600 5638 4200 6838 4200
+-6
+1 4 0 0 0 0 40 0 20 0.000 1 1.5708 3225 4200 600 600 3225 4800 3225 3600
+1 4 0 0 0 7 39 0 20 0.000 1 1.5708 3225 4132 545 545 3225 4677 3225 3587
+1 4 0 0 0 0 40 0 20 0.000 1 4.7124 4725 4200 600 600 4725 3600 4725 4800
+1 4 0 0 0 7 39 0 20 0.000 1 4.7124 4725 4268 545 545 4725 3723 4725 4813
diff --git a/doc/img/evas.png b/doc/img/evas.png
new file mode 100644 (file)
index 0000000..47597a8
Binary files /dev/null and b/doc/img/evas.png differ
diff --git a/doc/img/evas.xcf b/doc/img/evas.xcf
new file mode 100644 (file)
index 0000000..2fdf355
Binary files /dev/null and b/doc/img/evas.xcf differ
diff --git a/doc/img/evas_big.eps b/doc/img/evas_big.eps
new file mode 100644 (file)
index 0000000..97535e4
--- /dev/null
@@ -0,0 +1,45178 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: GIMP PostScript file plugin V 1.11 by Peter Kirchgessner
+%%Title: /home/raster/C/ecore/doc/img/ecore_big.eps
+%%CreationDate: Fri Feb 21 15:39:04 2003
+%%DocumentData: Clean7Bit
+%%LanguageLevel: 2
+%%Pages: 1
+%%BoundingBox: 0 0 171 171
+%%EndComments
+%%BeginPreview: 255 256 1 256
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000001000080000000000000000000000000
+% 0000000000000000000000000000000001400100000000000000000000000000
+% 0000000000000000000000000000020002400240000000000000000000000000
+% 0000000000000000000000000000010005500150000000000000000000000000
+% 0000000000000000000000000000028002900520000000000000000000000000
+% 0000000000000000000000000000014005240a48010000000000000000000000
+% 000000000000000000000000000002500aa80aa4024000000000000000000000
+% 000000000000000000000000000001480a492848048000000000000000000000
+% 000000000000000000000000000005542aaa2a944a2000000000000000000000
+% 0000000000000000000000000100054895525520894800000000000000000000
+% 00000000000000000000000000a005552a94aa55142000000000000000000000
+% 0000000000000000000000000140054a2aa55488294800000000000000000000
+% 00000000000000000000000000a80aa8d5555525525400000000000000000000
+% 00000000000000000000000001542aaaaaaaaaa9548092000000000000000000
+% 00000000000000000000000001520aaaaa955492a52a05000000000000000000
+% 0000000000000000000000000155555555555525524849000000000000000000
+% 00000000000000000000000001541552aaaaaaaaa92294800000000000000000
+% 0000000000000000000000400155aaabffdd552aa49452a00000000000000000
+% 00000000000000000000000001552af5556feaaaaaa54a400000000000000000
+% 00000000000000000000005002aaaf5affd57d55491524980000000000000000
+% 0000000000000000000000280aaab555557bd6d55254a9500000000000000000
+% 00000000000000000000001602aaaaaabdad7d754aaa85200000000000000000
+% 00000000000000000000002952adaab6d56ad7dea952a8824000000000000000
+% 000000000000000000000015456b56aaab5b5d75452a25540000000000000000
+% 00000000000000000000002a8adcaad5b56aabdfdaa549009000000000000000
+% 00000000000000000000002aa563555aadad6ab5655494aa0200000000000000
+% 00000000000000000000002aadad6aab6ab5ad6fdaaa4924a000000000000000
+% 00000000000000000000002ab2aaad6d56d6b5aaba9492520800000000000000
+% 00000000000000000000002aad5555aadaaad557eca92554a100000000000000
+% 0000000000000000000400aab2aad55555b556aabaaa48aa8800000000000000
+% 00000000000000000000002b6d555ab6db56aad56fa92b552200000000000000
+% 00000000000000000002825552aaab55556adaaaaa9244aa4800000000000000
+% 00000000000000000000a02dad55aaadb6ad55555fd493555000000000000000
+% 00000000000000000002a4ab5555556aaad5ab55556a4aaa8480000000000000
+% 00000000000000000000aa2caaaaadadb6b6b55555aa936aa800000000000000
+% 0000000000000000000155d75555557b6d5556aaaaf525550000000000000000
+% 000000000000000000015528aaaabfdfdbedaaaaaaae936aa800000000000000
+% 00000000000000000000ab6f5555ea5576bab555556aaaaa8100000000000000
+% 00000000000000000000acd155555adfddef5555555b45552800000000000000
+% 00000000000000000002ab2eaaafd5a9775ad55554ad76d48000000000000000
+% 00000000000000000000ad52aabaab56ddf7f5555292aaaa5000000000000000
+% 00000000000000000004b555556ead6ab75d5aaaaaadaaa90000000000000000
+% 00000000000000000001555555b155b6ddf7f6aa95555554a000000000000000
+% 00000000000000001408755556eebaaaaaad5f555492aaa20000000000000000
+% 000000000000000009129aaaab515555557bf5aaaaab55548000000000000000
+% 0000000000000000056aaaaaadaeaaab6aaeaf555294aaa10000000000000000
+% 0000000000000000055555555b52aaad5555faf4aa52aa941000000000000000
+% 000000000000000002aaaaaad4ad55555555afaa9548aaa10000000000000000
+% 000000000000000001552aab6aaaaaaaaaaafafaa928554a0000000000000000
+% 00000000000000000156d556aaaaaaaaaaaaadad25402a900000000000000000
+% 00000000000000000155555555555555555556d6aa482aa48000000000000000
+% 000000000000000000aaaaaad555555555555b5a928015280000000000000000
+% 000000000000000004aaaaad9555555555552aab540015420000000000000000
+% 0000000000000000006aaab66aaaaaaaaaaaa75521000aa84000000000000000
+% 000000000000000005555555555555555554aaaac80005520000000000000000
+% 0000000000000000006aaad555555555554a955540000aa48000000000000000
+% 00000000000000000915555aaaaaaaaaaaa952aaa00005520000000000000000
+% 0000000000000000005555aaaaaaaaaaaa9528aaa00002489000000000000000
+% 000000000000000005555555555555555554a57aa00012aa2000000000000000
+% 0000000000000000002aab555555555554aa880d500042554000000000000000
+% 0000000000000000095555555552aaaaaa912036a80201548000000000000000
+% 000000000000000000555555554a55554954000d501000952800000000000000
+% 000000000000000002aaaaaaaaaaaaa92a420017284000554100000000000000
+% 0000000000000000005555555554952552900004d40000952800000000000000
+% 000000000000000005aaaaaaaa8952aa4920000ba8000052a200000000000000
+% 000000000000000000aaad555552554954400005540000954800000000000000
+% 000000000000000000aaaaaaaa8494aa42800002d200004aa480000000000000
+% 0000000000000000035555555528a510942a0002aa00002aa900000000000000
+% 0000000000000000015555555480094400000004ea0000495200000000000000
+% 0000000000000000015555555554922800000001540000255440000000000000
+% 000000000000000002aaaaaaa4aa0000000000015400004aa900000000000000
+% 000000000000000002aaaaaa95494400000000027500002aaa48000000000000
+% 000000000000000002aad55554aa5020000000005a0000456a80000000000000
+% 000000000000000005552aaaaa928a8900000000a90000125420000000000000
+% 00000000000000000552d55524aa5250000000015a0000256a80000000000000
+% 0000000000000000054aa924aa912484400000002d00000aaaa8000000000000
+% 0000000000000000052aa55549254929000000013a000024b500000000000000
+% 000000000000000005555aaaaa489540080000002500000aad50000000000000
+% 00000000000000000aaaaa5492a52914000000013c000022b544000000000000
+% 00000000000000000aaaaaa2aa925241000000005500000a6d28000000000000
+% 00000000000000000aaaab552a554a9400000000950000255aa0000000000000
+% 000000000000000015555554b554a921000000002c000009754a000000000000
+% 00000000000000000aaaaaa97d529244000000012a0000252ea0000000000000
+% 00000000000000002aaab5452f4aa510000000002d0000095aaa000000000000
+% 00000000000000000aa556a8fbd52880000000002a0000255d50000000000000
+% 0000000000000000252aaa856ef4852400000000b400000936a5000000000000
+% 00000000000000001aa56a28ddbd280000000000ac0000255b50000000000000
+% 00000000000000005255ad457bef4aa0000000005400000956aa400000000000
+% 0000000000000000154aa8926f7bd10a000000002c0000253d50800000000000
+% 00000000000000002a52b524dadef450000000002a000012abaa000000000000
+% 00000000000000005495a89277b5bd00000000003400004a7ea8800000000000
+% 000000000000000012a55249dd6fef040000000004000012ab52000000000000
+% 0000000000000000552ab524b7dabbd0000000000000004abed4800000000000
+% 000000000000000014a9a092ed6feef000000000000000126b52000000000000
+% 000000000000000092a55524b55abbbc000000000000004abea8800000000000
+% 000000000000000035556249d6ab6eef0000000000000092b5d5000000000000
+% 000000000000000044958892aab5bbbbc0000000000000253f54200000000000
+% 00000000000000009552aa48b5556eeef000000000000094b5a9400000000000
+% 00000000000000000aaaa125555555bbbc0000000000004afed4000000000000
+% 0000000000000000a9254a90aaaaad6eef0000000000012555aa800000000000
+% 00000000000000000aaa944a544556dbdbc0000000000094ff54000000000000
+% 0000000000000000aaa952a4a91255b6bef000000000012ab5a9400000000000
+% 00000000000000000a4a49125249555df7bc000000000252ff6a000000000000
+% 0000000000000000aaa924a948922aab5def000000000095d5a9200000000000
+% 00000000000000000a92aa9252008556f77bc00000000554ff54400000000000
+% 0000000000000000a52a49254892295aaddef00000000125aad5000000000000
+% 000000000000000014a49254920044a5bb77be0000000a55ff54400000000000
+% 00000000000000008a92aa924400092aaeddeb80000002ab6ad5000000000000
+% 0000000000000000255492495000809555b77f4000001491ff54400000000000
+% 00000000000000004a4a495524000a22aaeddbf000000557aad2800000000000
+% 80000000000000009551552490800049555b76de00002aab7f54000000000000
+% 0000000000000000052a4a9552000004aad6dff700001257ead5000000000000
+% 80000000000000005549245244000091155bb55de0004aa6df50400000000000
+% 00000000000000000aaa92aaa80000024aaaefff7800155ff5aa800000000000
+% 8000000000000000a54929492100000011555aabde00952dbea8000000000000
+% 00000000000000000aaa452aaa000004a4ab6ffef780355feb55000000000000
+% 8000000000000000254928a494000000024aaaabbde128bb7d50400000000000
+% 000000000000000009524a955200000008955b7eef786937d6aa000000000000
+% 800000000000000052c952524a0000000122aad5bbdf104efda4800000000000
+% 00000000000000000554894aa900000000092abbeef6d0abaaa8000000000000
+% 000000000000000012a92aaa552000000444a2aebbbfe012fea5000000000000
+% 800000000000000024b252494a80000000110155d6eda02baaa8000000000000
+% 800000000000000002a9255552400000000200aabdbbc011fb52000000000000
+% 000000000000000014aa949295400000000000256bef000aad44000000000000
+% 800000000000000001592aaa54a0000000020014aebb00057550000000000000
+% 0000000000000000155651254a9000000008200a95d600026d49000000000000
+% 800000000000000000ad4aaaa954000000008015557c00055aa0000000000000
+% 00000000000000000a569494952a00000054000495a80000aa88000000000000
+% 8000000000000000015552aaaaa4800001010002aaaf50013551000000000000
+% 000000000000000008aba525249540000454240252b1ea004a80000000000000
+% 8000000000000000022d54a955525000910080009552b5402aa8000000000000
+% 000000000000000000abd295292a8aa524aa0000a4a2afe81500000000000000
+% 800000000000000004556952a549524892009200554152be0aa8000000000000
+% 00000000000000000112b52a54aa552a495400019200ab6bc500000000000000
+% 800000000000000000554aa54a9292a5240148056a0152dd5150000000000000
+% 00000000000000000220aa54a955544892aa008aaa00a555aa02000000000000
+% 8000000000000000008a5392952492aa4840a215d4004ab6aad0000000000000
+% 00000000000000000029285552aaaa9292950856a00029555504000000000000
+% 80000000000000000084956a4a4924a449204156a0004aaaaa50000000000000
+% 000000000000000000292a955555552aa44a955aa80012aaaa80000000000000
+% 800000000000000000024554a924929112900576aa00292aaa54800000000000
+% 000000000000000000549a954aaaaa4a49255ad4158005555540000000000000
+% 800000000000000000012a55a92524a95248ab541520148aaa94000000000000
+% 00000000000000000014d552aaa8aa9224935da0165402a95549000000000000
+% 80000000000000000022b4955a4a924a922cb54014880a455522200000000000
+% 0000000000000000002aad24a7a95528a555f500192501155554400000000000
+% 80000000000000000045a95296d692a52afd8a08125442a2aaa9000000000000
+% 0000000000000000002d6c8a51fd6a556b5552204a92814a5552400000000000
+% 80000000000000000055aa52aa57b7db5daaa58004aa2892aaa9100000000000
+% 000000000000000000aab52552bd6aaaaa5506a109294254aaaa420000000000
+% 8000000000000000005b5496cb47dd6b555055500a952892aaa9100000000000
+% 000000000000000001aaad25527577aaa92505240455422aaaaa400000000000
+% 80000000000000000155684d490b2d6d54885494054a54925555290000000000
+% 0000000000000000005b5d35a4aa5bb542e28249225549255552400000000000
+% 80000000000000000002a8aa9295445295142927849552555554920000000000
+% 000000000000000000295955492a2aa924a904aac2a54aa4aaaa440000000000
+% 8000000000000000000552aaa4aaa4aa49545247a11554955551100000000000
+% 00000000000000000052b9556955495492a90492f2aaaaaaaaa4a08000000000
+% 8000000000000000000552ada255255525244257a8455555554a040000000000
+% 000000000000000000aaaab568aa92aa4955148afd5555555524a00000000000
+% 800000000000000000055555e355495492aa82a3544aaaaaaa91080000000000
+% 00000000000000000052b555a95525552512a916ea92aaaaaa4a200000000000
+% 8000000000000000008aaaabe2aa92aa48abc2535d5555555490000000000000
+% 00000000000000000012aaab6aaaa55592a5648ad549555aaa44800000000000
+% 80000000000000000084aaafc555c954a529c92555b6aaab5490080000000000
+% 00000000000000000029577aeaabc54bc49572536aaad5b55221000000000000
+% 80000000000000000082aad7aaab55559253d12555555aaaaa84000000000000
+% 00000000000000000014556d4aabc52b454ab49556aaab555420000000000000
+% 800000000000000000214ab7d55754abe893d922aab6d55aa940000000000000
+% 00000000000000000084955a9557e556c52aaa4aaaaaaaaaa408000000000000
+% 800000000000000000012aadeaaed54da947752aaaaab55552a0000000000000
+% 000000000000000000124ab7555dea57f22dac92aad6d6aa9400000000000000
+% 8000000000000000000012aadf5ba556b4956b65555aaaaa4940000000000000
+% 000000000000000000024955b5f7692fe2a75aaaaaab55555208000000000000
+% 8000000000000000000012aadeaeeaad5915ab5555556aa88440000000000000
+% 0000000000000000000084ab55fbd24ffa4b756aaadaaaa52880000000000000
+% 80000000000000000000292ab6aeff5aafa6ad56d556d5524200000000000000
+% 00000000000000000000025555fbabf7faddd5aaadaaaa889010000000000000
+% 80000000000000000000088aad56feaeaf76b6b5555b55520480000000000000
+% 00000000000000000000212955bbabfbfadb5ad6daaaaa24a000000000000000
+% 800000000000000000000245556d7eaeafb6eb5b555555480000000000000000
+% 0000000000000000000000125557d5fbfadb5ab56aaaaa410400000000000000
+% 8000000000000000000004a4955abb56adb6d6d6ad5554941000000000000000
+% 0000000000000000000000012aaad6fdf76dbb6db55552200000000000000000
+% 80000000000000000000004a49555b575adb6aaaaaaaa9400000000000000000
+% 00000000000000000000000092ab6aedb76dadb6d55524088000000000000000
+% 800000000000000000000009255556b6dadb7555555249400000000000000000
+% 000000000000000000000020089555556db6ab6daaa492100000000000000000
+% 8000000000000000000000009252aadbaaaad555551244400000000000000000
+% 0000000000000000000000000125555555b6ad5554a490800000000000000000
+% 800000000000000000000000244895555aaab555524904000000000000000000
+% 000000000000000000000000011252aaaaaaaaaaaa9020800000000000000000
+% 80000000000000000000000004448a5555555555442244000000000000000000
+% 000000000000000000000000001124aaaaaaaa49294000000000000000000000
+% 8000000000000000000000000104491252aaa492440800000000000000000000
+% 0000000000000000000000000020024924952924912080000000000000000000
+% 8000000000000000000000000001289249224489240000000000000000000000
+% 0000000000000000000000000004022492492922008000000000000000000000
+% 8000000000000000000000000000008924924208540000000000000000000000
+% 0000000000000000000000000000121000249441000000000000000000000000
+% 8000000000000000000000000000002249010008000000000000000000000000
+% 0000000000000000000000000000000000482200240000000000000000000000
+% 8000000000000000000000000000004001024020000000000000000000000000
+% 0000000000000000000000000000000220000000000000000000000000000000
+% 8000000000000000000000000000000000080000000000000000000000000000
+% 0000000000000000000000000000000000004000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+% 8000000000000000000000000000000000000000000000000000000000000000
+% 0000000000000000000000000000000000000000000000000000000000000000
+%%EndPreview
+%%BeginProlog
+% Use own dictionary to avoid conflicts
+10 dict begin
+%%EndProlog
+%%Page: 1 1
+% Translate for offset
+0.000028 0.000028 translate
+% Translate to begin of first scanline
+0.000000 170.078740 translate
+170.078740 -170.078740 scale
+% Image geometry
+1720 1720 8
+% Transformation matrix
+[ 1720 0 0 1720 0 0 ]
+% Strings to hold RGB-samples per scanline
+/rstr 1720 string def
+/gstr 1720 string def
+/bstr 1720 string def
+{currentfile /ASCII85Decode filter /RunLengthDecode filter rstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter gstr readstring pop}
+{currentfile /ASCII85Decode filter /RunLengthDecode filter bstr readstring pop}
+true 3
+%%BeginData:      3234763 ASCII Bytes
+colorimage
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcC<$JcC<$JcC<$JcEjlJ,~>
+JcC<$JcC<$JcC<$JcF=$jo0i2JcC<$JcC<$OT0h~>
+JcC<$JcC<$JcC<$JcF=$jo0i2JcC<$JcC<$OT0h~>
+JcC<$JcC<$JcC<$JcF=$jo0i2JcC<$JcC<$OT0h~>
+JcC<$JcC<$JcC<$JcFX-d/JUrJcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$JcFX-d/JUrJcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$JcFX-d/JUrJcC<$JcC<$SH"*~>
+JcC<$JcC<$JcC<$JcFg2a8UYiJcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$JcFg2a8UYiJcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$JcFg2a8UYiJcC<$JcC<$T`9N~>
+JcC<$JcC<$JcC<$JcFs6^]&faJcC<$JcC<$V#Pr~>
+JcC<$JcC<$JcC<$JcFs6^]&faJcC<$JcC<$V#Pr~>
+JcC<$JcC<$JcC<$JcFs6^]&faJcC<$JcC<$V#Pr~>
+JcC<$JcC<$JcC<$JcG'9]DdB]JcC<$JcC<$V>l&~>
+JcC<$JcC<$JcC<$JcG'9]DdB]JcC<$JcC<$V>l&~>
+JcC<$JcC<$JcC<$JcG'9]DdB]JcC<$JcC<$V>l&~>
+JcC<$JcC<$JcC<$JcG3=[/PXVJcC<$JcC<$W;hA~>
+JcC<$JcC<$JcC<$JcG3=[/PXVJcC<$JcC<$W;hA~>
+JcC<$JcC<$JcC<$JcG3=[/PXVJcC<$JcC<$W;hA~>
+JcC<$JcC<$JcC<$JcG<@Y5X"PJcC<$JcC<$X8d\~>
+JcC<$JcC<$JcC<$JcG<@Y5X"PJcC<$JcC<$X8d\~>
+JcC<$JcC<$JcC<$JcG<@Y5X"PJcC<$JcC<$X8d\~>
+JcC<$JcC<$JcC<$JcG?AW;_AJJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcG?AW;_AJJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcG?AW;_AJJcC<$JcC<$YlB4~>
+JcC<$JcC<$JcC<$JcGHDU],iEJcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$JcGHDU],iEJcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$JcGHDU],iEJcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$JcGNFT)QJ(qu20HJcC<$JcC<$rr7K~>
+JcC<$JcC<$JcC<$JcGNFT)QJ(qu20HJcC<$JcC<$rr7K~>
+JcC<$JcC<$JcC<$JcGNFT)QJ(qu20HJcC<$JcC<$rr7K~>
+JcC<$JcC<$JcC<$JcGTHRJt_9ec(."JcC<$JcCl4J,~>
+JcC<$JcC<$JcC<$JcGTHRJt_9ec(."JcC<$JcCl4J,~>
+JcC<$JcC<$JcC<$JcGTHRJt_9ec(."JcC<$JcCl4J,~>
+JcC<$JcC<$JcC<$JcG]KeGeq8dJhu%bPm(mJcC<$JcD&9J,~>
+JcC<$JcC<$JcC<$JcG]KeGeq8dJhu%bPm(mJcC<$JcD&9J,~>
+JcC<$JcC<$JcC<$JcG]KeGeq8dJhu%bPm(mJcC<$JcD&9J,~>
+JcC<$JcC<$JcC<$JcFF&hYkq&m/O]sJcC<$JcC<$Sc=3~>
+JcC<$JcC<$JcC<$JcFF&hYkq&m/O]sJcC<$JcC<$Sc=3~>
+JcC<$JcC<$JcC<$JcFF&hYkq&m/O]sJcC<$JcC<$Sc=3~>
+JcC<$JcC<$JcC<$K)aX*eG[hpr;Wr!JcC<$JcC<$U&TW~>
+JcC<$JcC<$JcC<$K)aX*eG[hpr;Wr!JcC<$JcC<$U&TW~>
+JcC<$JcC<$JcC<$K)aX*eG[hpr;Wr!JcC<$JcC<$U&TW~>
+JcC<$JcC<$JcC<$L&^$/bPd"krVhBJJcC<$JcDJEJ,~>
+JcC<$JcC<$JcC<$L&^$/bPd"krVhBJJcC<$JcDJEJ,~>
+JcC<$JcC<$JcC<$L&^$/bPd"krVhBJJcC<$JcDJEJ,~>
+JcC<$JcC<$JcC<$aT(c/df82'm/?DNm/;M7rVhBJJcC<$JcDSHJ,~>
+JcC<$JcC<$JcC<$aT(c/df82'm/?DNm/;M7rVhBJJcC<$JcDSHJ,~>
+JcC<$JcC<$JcC<$aT(c/df82'm/?DNm/;M7rVhBJJcC<$JcDSHJ,~>
+JcC<$JcC<$JcC<$dJq_qm/Pi>nbq;Anbn%<s8ITLJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$dJq_qm/Pi>nbq;Anbn%<s8ITLJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$dJq_qm/Pi>nbq;Anbn%<s8ITLJcC<$JcDYJJ,~>
+JcC<$JcC<$JcC<$f`.38oDR2:o)4.=!<.QLJcC<$JcDbMJ,~>
+JcC<$JcC<$JcC<$f`.38oDR2:o)4.=!<.QLJcC<$JcDbMJ,~>
+JcC<$JcC<$JcC<$f`.38oDR2:o)4.=!<.QLJcC<$JcDbMJ,~>
+JcC<$JcC<$JcC<$h>`Z;o_n+Rq"sCToDO7>!<.QLJcC<$JcDkPJ,~>
+JcC<$JcC<$JcC<$h>`Z;o_n+Rq"sCToDO7>!<.QLJcC<$JcDkPJ,~>
+JcC<$JcC<$JcC<$h>`Z;o_n+Rq"sCToDO7>!<.QLJcC<$JcDkPJ,~>
+JcC<$JcC<$JcC<$i;\u>p&4IZj88BEo_j@?JcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$i;\u>p&4IZj88BEo_j@?JcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$i;\u>p&4IZj88BEo_j@?JcC<$JcC<$YQ'+~>
+JcC<$JcC<$JcC<$jo:GAp&4O\fDG4<oDQQ*nbpr9JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcC<$jo:GAp&4O\fDG4<oDQQ*nbpr9JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcC<$jo:GAp&4O\fDG4<oDQQ*nbpr9JcC<$JcC<$Z2]=~>
+JcC<$JcC<$JcC<$kl6bDpAO^_bkq)2o_m)7i;MC/JcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$kl6bDpAO^_bkq)2o_m)7i;MC/JcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$kl6bDpAO^_bkq)2o_m)7i;MC/JcC<$JcC<$ZN#F~>
+JcC<$JcC<$JcC<$l2QqGp&4X_`r#H,o_mD@eG\5&JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcC<$l2QqGp&4X_`r#H,o_mD@eG\5&JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcC<$l2QqGp&4X_`r#H,o_mD@eG\5&JcC<$JcC<$[Jta~>
+JcC<$JcC<$JcC<$li3.Ip&4X__>Es(o)7YK`r4ipJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$li3.Ip&4X__>Es(o)7YK`r4ipJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$li3.Ip&4X__>Es(o)7YK`r4ipJcC<$JcC<$\,Us~>
+JcC<$JcC<$JcC<$mJi@KpAOa`l20fCkkk,PnGVeSjSeTGli#iBJcC<$JcC<$\c70~>
+JcC<$JcC<$JcC<$mJi@KpAOa`l20fCkkk,PnGVeSjSeTGli#iBJcC<$JcC<$\c70~>
+JcC<$JcC<$JcC<$mJi@KpAOa`l20fCkkk,PnGVeSjSeTGli#iBJcC<$JcC<$\c70~>
+JcC<$JcC<$JcC<$n,JXOp&4[`m/,W8m/-PTbPgAsnGVGIJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC<$n,JXOp&4[`m/,W8m/-PTbPgAsnGVGIJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC<$n,JXOp&4[`m/,W8m/-PTbPgAsnGVGIJcC<$JcC<$])R9~>
+JcC<$JcC<$JcC<$nc+mRp&4X_n,)\PnbMbPmec\Tg&9=roDReMJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$nc+mRp&4X_n,)\PnbMbPmec\Tg&9=roDReMJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$nc+mRp&4X_n,)\PnbMbPmec\Tg&9=roDReMJcC<$JcC<$]`3K~>
+JcC<$JcC<$JcC<$oDdGAi;Md:nbr7\n,)kUi;**CmecYSjSd-so_mtPJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcC<$oDdGAi;Md:nbr7\n,)kUi;**CmecYSjSd-so_mtPJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcC<$oDdGAi;Md:nbr7\n,)kUi;**CmecYSjSd-so_mtPJcC<$JcC<$^&NT~>
+JcC<$JcC<$JcC<$p&EhHd/ES8meunXnb`(Wo(i"SnbMtVn,)VPp&4+PiVW3DpAO1RJcC<$JcC<$
+^]/f~>
+JcC<$JcC<$JcC<$p&EhHd/ES8meunXnb`(Wo(i"SnbMtVn,)VPp&4+PiVW3DpAO1RJcC<$JcC<$
+^]/f~>
+JcC<$JcC<$JcC<$p&EhHd/ES8meunXnb`(Wo(i"SnbMtVn,)VPp&4+PiVW3DpAO1RJcC<$JcC<$
+^]/f~>
+JcC<$JcC<$JcC<$pAa%LY5S+m!W/qhqt^*_q;_8Dq>'mUqpkVoqt9m\rTO63s+13$s+13ds*t~>
+JcC<$JcC<$JcC<$pAa%LY5S+m!W.oKqt^*_q;_8Dq>'mUqpkVoqt9m\rTO63s+13$s+13ds*t~>
+JcC<$JcC<$JcC<$pAa%LY5S+m!W,siqt^*_q;_8Dq>'mUqpkVoqt9m\rTO63s+13$s+13ds*t~>
+JcC<$JcC<$JcC<$pAa+NYl4:nrVQW.p\Xg`q"`S;q"aa^mebr?bPV#2p\j@UJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcC<$pAa+NYl4:nrVQVWp\Xg`q"`S;q"aa^mebr?bPV#2p\j@UJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcC<$pAa+NYl4:nrVQUrp\Xg`q"`S;q"aa^mebr?bPV#2p\j@UJcC<$JcC<$_>f#~>
+JcC<$JcC<$JcC<$q#BCRmeu2Dir/NIqYU9*qtp6dq>&D4q>'j_lhg/K^AI[&p\j@UJcC<$JcC<$
+`;b>~>
+JcC<$JcC<$JcC<$q#BCRmeu2Dir/NIqYU8Sqtp6dq>&D4q>'j_lhg/K^AI[&p\j@UJcC<$JcC<$
+`;b>~>
+JcC<$JcC<$JcC<$q#BCRmeu2Dir/NIqYU7nqtp6dq>&D4q>'j_lhg/K^AI[&p\j@UJcC<$JcC<$
+`;b>~>
+JcC<$JcC<$JcC<$qu>dWnboflp\OrjrOr7.qYL'ameH8FmJ-MQqYHKSq#'pclMcA7JcC<$JcE^h
+J,~>
+JcC<$JcC<$JcC<$qu>dWnboflp\OrLrK7-WqYL'ameH8FmJ-MQqYHKSq#'pclMcA7JcC<$JcE^h
+J,~>
+JcC<$JcC<$JcC<$qu>dWnboflp\OqkrE'$rqYL'ameH8FmJ-MQqYHKSq#'pclMcA7JcC<$JcE^h
+J,~>
+JcC<$JcC<$JcC<$rVu!YoDPrlp%ncj]`#P@qYU*XpuD,<q"jg_qSi?sqW[nPr;$<Vrdk*#s+13$
+s2P(h~>
+JcC<$JcC<$JcC<$rVu!YoDPrlp%n`Jr/pmQqt]aVj7i'<qYC!a`V\rsl218Rq>KUXJcC<$JcC<$
+`rCP~>
+JcC<$JcC<$JcC<$rVu!YoDPrlp&"Vfqtg3cnG)&<nG)kUqYJ2.lMBcBq#'sdlMcA7JcC<$JcEai
+J,~>
+JcC<$JcC<$JcC<$rr;-[o_n1Tm/,T9nG<9g]Y+6W!P\F,q=OIVpZhJHp[\+Uq>'m9qq:i6qt^0c
+rTjH6s+13$s+13js*t~>
+JcC<$JcC<$JcC<$rr;-[o_n1Tm/,T9nG<6FOSk4@qYL$[q"OOJp@n=Pq"jg^qU>>pqX47Vr;$<W
+rdk*#s+13$s2Y.i~>
+JcC<$JcC<$JcC<$rr;-[o_n1Tm/,T9nG<5h<r?#!qYL$[q"OOJp@n=Pq"jg^qU>>pqX47Vr;$<W
+rdk*#s+13$s2Y.i~>
+JcC<$JcC<$JcC<$!<;6]pAOU\e,/\5lMCVYXT#m3]`>eFq=OIXpYY]?p[e1Vq>'m]qZ+\"qsXCM
+q=FIPqt^0crTsN7s+13$s+13ks*t~>
+JcC<$JcC<$JcC<$!<;6]pAOU\e,/\5lMCYZN0*q!rV?*\q=ie?q=jLUqYBs`p\OrUkPO`En+lSO
+nGE%Zq>K[ZJcC<$JcC<$aT$b~>
+JcC<$JcC<$JcC<$!<;6]pAOU\e,/\5lMCYZ=]YE$rV?*\q=ie?q=jLUqYBs`p\OqmkPO`En+lSO
+nGE%Zq>K[ZJcC<$JcC<$aT$b~>
+JcC<$JcC<$JcC<$kl1;Sp&(lfrqcYrrOi0Ds1\1$qY0aXl1OfEqY0XWqYBj]rVQW8n,)YOhtd!B
+nb`1\q>K[ZJcC<$JcC<$b5Zt~>
+JcC<$JcC<$JcC<$kl1;Sp&(lfrqcYRs,d,?p%\CXp\*kEp\+IXo_A:YpA4abs-<'MnbV/=pA4=V
+qY^0fm/DS9JcC<$JcEmmJ,~>
+JcC<$JcC<$JcC<$kl1;Sp&(lfrqcXt!EW>!=7u@bp\4CGp%S1Vp[n7Wq=a[`qu9deqsjO?q=a[T
+qtg6drTsN7s+13$s+13ms*t~>
+JcC<$JcC<$JcC?%l2LDTpACugqtg>nrOi-Cs1\=(qtKs\g\(F:qY0XWq>'g^!3?+>kPFZCoD%nP
+q>0[Zqu$9gli)J8JcC<$JcEsoJ,~>
+JcC<$JcC<$JcC?%l2LDTpACugqtg>OrfI#>q=sj]qY&\:qY'd[o_A7Xq"auOrfu[Cn+lSMo(i+X
+o)&=^q>KXYJcC<$JcC<$bl<1~>
+JcC<$JcC<$JcC?%l2LDTpACugqtg=qpfI:dqtKs\g\(F:qY0XWq>'g^!*T;'kPFZCoD%nPq>0[Z
+qu$9gli)J8JcC<$JcEsoJ,~>
+JcC<$JcC<$JcCE'l2LGUp\_)hq>1-es/H(2rOi0DrkA@+r:g']de3M2qtKaXq"aja!36%<!6=U*
+o(h2<p\FX]o_\L_qYf^YJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcCE'l2LGUp\_)hq>1-es,-l<rfI#>rV6<bqY&A1qtBp]o_A4Wr;$DSrKZmKo(h2<
+p\FX]o_\L_qYf^YJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcCE'l2LGUp\_)hq>1-es&o2"!a&N*rV6<bqY&A1qtBp]o_A4Wr;$CrrE/Rco(h2<
+p\FX]o_\L_qYf^YJcC<$JcC<$ci8L~>
+JcC<$JcC<$JcCH(l2LJVq#'"G!;b(>q"jpas/Q+2rk/-AqtL$^nb)2>o(DnRqtKaXp\=lja2e.u
+q"jOVeG/k8qYKj]qY^3gl2H86JcC<$JcF0uJ,~>
+JcC<$JcC<$JcCH(l2LJVq#'"G!;b(>q"jpas,?u=rfI#>qtL$^nb)2>o(DnRqtKaXp\=fMqj$sQ
+nbL]0q>'m`o_\L_qYf[XJcC<$JcC<$df4g~>
+JcC<$JcC<$JcCH(l2LJVq#'"G!;b(>q"jpas'#5"!a&N*qtL$^nb)2>o(DnRqtKaXp\=emqcNXi
+nbL]0q>'m`o_\L_qYf[XJcC<$JcC<$df4g~>
+JcC<$JcC<$JcCK)lMgVXq#'ITh"p=5pA4U\ri5t0rk/3C!kuABqtB^Up[n"Ip@S%NqtBp]o(`1Z
+!ij;]r5S:&aS>W-qtfs^qu$<hk5Kr3JcC<$JcF=$J,~>
+JcC<$JcC<$JcCK)lMgVXq#'ITh"p=5pA4U\rf$i;rK.#@!g8]?qtB^Up[n"Ip@S%NqtBp]o(`1Z
+!0?uAnbL9$qYC$bo_\O`qYfRUJcC<$JcC<$f)L7~>
+JcC<$JcC<$JcCK)lMgVXq#'ITh"p=5pA4U\r`],!r`B2&p\X[Wp%S+KoChhLp&"I[p[\+Xq#FUp
+=Rl4.q"jg`qXj[^r;-BSrdk*#s+13$s474#~>
+JcC<$JcC<$JcCN*li-\Xq>B[X\GH$srqQJmr4;sAqRun%p@\:Siq*$=p@\=VqtK[Vs/Q(=rPn[/
+j7r$9meH\Tqtg!_qu$9gir4N/JcC<$JcFR+J,~>
+JcC<$JcC<$JcCN*li-\Xq>B[X\GH$srqQJOr/^i=r/q!Pp@\:Siq*$=p@\=VqtK[Vs,[#Aq>'(G
+mJ$&Dqt^-cp&"Xaq>K=PJcC<$JcC<$h>`!~>
+JcC<$JcC<$JcCN*li-\Xq>B[X\GH$srqQIrpfIGs!*B0np@\:Siq*$=p@\=VqtK[Vs&f>'qcN[i
+j7r$9meH\Tqtg!_qu$9gir4N/JcC<$JcFR+J,~>
+JcC<$JcC<$JcCW-lMgVXq>BaZo_RSCjne`IqY:&i!5/6A!5/0Aq"=OVqX`n@q=FLUp@\=VqtKgZ
+s/Q+>!QN1Y`o[!Op[\+Vq>C*_qtg6erS@I(s+13$s+141s*t~>
+JcC<$JcC<$JcCW-lMgVXq>BaZo_RSCjne`IqY:&K!0I,>rfI)@!0[-Mqt0aVkOSH?qt0UTqtBp]
+pA"ZKs-3SKr0?C=h=pL8qt^0dpA=^aqYf7LJcC<$JcC<$j8XW~>
+JcC<$JcC<$JcCW-lMgVXq>BaZo_RSCjne`IqY:%n!*K%ur)iaeqt0aVkOSH?qt0UTqtBp]pA"Yj
+r`B#"jnR[+o(`+Xr;--aqY^3gh>W!*JcC<$JcFd1J,~>
+JcC<$JcC<$JcCZ.lMgVXqY]m\p\N84q>0[Xq"XfeqRZa?qRuh"r:KmXh"(@6qt0XUqtBm\qtU/j
+s2Y/Zs2FuWmJ->Jkk=cFp%\F[r;--aqu$9gg\ud(JcC<$JcFp5J,~>
+JcC<$JcC<$JcCZ.lMgVXqY]m\p\N84q>0[Xq"XfGs,d,=s,d2A!0[9Qr:KmXh"(@6qt0XUqtBm\
+qtU/Os-<PIrfumGo_7SCp\4@Uqt^0dpA=abq>K(IJcC<$JcC<$kPp&~>
+JcC<$JcC<$JcCZ.lMgVXqY]m\p\N84q>0[Xq"Xejs&f(ur)imir:KmXh"(@6qt0XUqtBm\qtU.n
+qcEc!mJ->Jkk=cFp%\F[r;--aqu$9gg\ud(JcC<$JcFp5J,~>
+JcC<$JcC<$JcCZ.m/HhZqY]s^q"jXYk4ms3o(W3`rhoS(s1J6Br:KmXnac;AnacSKr:KaVqtBgZ
+s/Q%<s2P&Ws2Od-p%S"Mp@\%NqY0^Yr;$9epA=abq>JtFJcC<$JcC<$m/MS~>
+JcC<$JcC<$JcCZ.m/HhZqY]s^q"jXYk4ms3o(`0A!g/S+qi:`=rK7,Cr:KmXnac;AnacSKr:KaV
+qtBgZs,d2Er075HpA"=Tnb2\LoCi%TpA"R]r;--aqu$9gf`$I%JcC<$JcG*:J,~>
+JcC<$JcC<$JcCZ.m/HhZqY]s^q"jXYk4ms3o(`/dr`K"uqcNdgqt'@KoC;AAqt'aXp\"FWq"Oel
+pfIJtpA"=Tnb2\LoCi%TpA"R]r;--aqu$9gf`$I%JcC<$JcG*:J,~>
+JcC<$JcC<$JcC]/li-bZqY^!_q>0j]eG/b5m.gVTrMTJ'rk/-A!;-3\p%%26o^_qOr:KaVqY'm^
+ri5q;s2OuU!64R'p%IJ>q"FUZpA"R]r;--aqu$<hbl31nJcC<$JcGQGJ,~>
+JcC<$JcC<$JcC]/li-bZqY^!_q>0j]eG/b5m.gVTrJLc@Ocbb&NrY:?OoLREo_e=Ro&T?5o)/+W
+o_8%TpAOabOStI@PQ7!=p\"7@p%\7Xp\+C[q>C*_qtp<frQP7ls+13$s+14Gs*t~>
+JcC<$JcC<$JcC]/li-bZqY^!_q>0j]eG/b5m.gVTr)s#$qH*Pr!;-3\p%%26o^_qOr:KaVqY'm^
+r`]"s!*Jdcp%IJ>q"FUZpA"R]r;--aqu$<hbl31nJcC<$JcGQGJ,~>
+JcC<$JcC<$JcCc1li-bZqY^!_qYL$`ZhXIms/,dnpq-O<qn<%$p[\1Nkj\H=p@A.Qr:K^UqXsui
+WiH!;s2OrTq=jRUfCf"6qtKj[rV?BfpA=abq>J;3JcC<$JcCB&J,~>
+JcC<$JcC<$JcCc1li-bZqY^!_qYL$`ZhXImr/CZ=s,d;Cqi:`=rfR2Cs7?!UqXNe=qXO:Mr:BjY
+p@\:U!frG)r0@)Bq=jRUfCf"6qtKj[rV?BfpA=abq>J;3JcC<$JcCB&J,~>
+JcC<$JcC<$JcCc1li-bZqY^!_qYL$`ZhXImqH<f"qcEVrs7?!UqXNe=qXO:Mr:BjYp@\:U"'Jf2
+=S5bkp\"73p%nCZp\4I]q>C*_qtp<erPebes+13$s+C?%~>
+JcC<$JcC<$JcCi3li-bZqY^$`qYL'aZhXCks7ZAes18'=rOi!?qss[TqXEe=q=+=Pp[\7Rr:K[T
+!;?Ajr5\fVqo/:&kOnWBmIgAMr:g!]rV?Bfp\Xgbq>J#+JcC<$JcC`0J,~>
+JcC<$JcC<$JcCi3li-bZqY^$`qYL'aZhXCks7ZAKrK72DOSb(=OT(C@P5FhJnbVb?n+lJNnb;VP
+oDJ7Ro`4^aO8P:<PkOh6p%\1Hp&"I\p\=O^q>C*`qtg6drOr2]s+13$s,I&/~>
+JcC<$JcC<$JcCi3li-bZqY^$`qYL'aZhXCks7Z=lr`T8'qcESqqss[TqXEe=q=+=Pp[\7Rr:K[T
+!;?@o!*Jkpp@d\Bq"3tHqtBs^q"Xg`r;-0bqY^0f^&ET_JcC<$NW4M~>
+JcC<$JcC<$JcCu7l2LMWqu$9e"0''4qtp6dq<n%>pZ;2Fp\X[^V>e(&]DT>=]`@X$nbhn5n,)VP
+nbD\QoDJ7Tp&1lea8a0V`;mpBp#>W9p&+O]p\=O^q>C*`qtp<drOVuZs+13$s-!D4~>
+JcC<$JcC<$JcCu7l2LMWqu$9e",r?=qtp6dq<n%>pZ;2Fp\X[^MYrV<Oc]L%rf@,Br/q'Nr:0^S
+hXC@2r:0RQr:BjYp\"KGqj$uA!0ugAiq2m9r:^'_q"Xg`r;-0bqu$6f])I9\JcC<$P5g%~>
+JcC<$JcC<$JcCu7l2LMWqu$9e"'AY%qtp6dq<n%>pZ;2Fp\X[]<rcA%=oVV%=85kto)/%UnD<X2
+nGMhOo)/+Wo_8%W=oVUr=6]D;o^qhSpAF[[q#1$dqY0mar:p6%rdk*#s+135s*t~>
+JcC<$JcC<$JcD,;k5P5Uqu$3c!iWlKr;-<do(]rnq=aj]s.oUir4;^9rk/-A!:g!VoC)5;oC)VH
+r:0RQr:BjYr:U#fq8`NTqo&QTnFcJHmIU)Ep@\@WrV-*^rV?Bfp\Xjcq#.i(JcC<$JcCr6J,~>
+JcC<$JcC<$JcD,;k5P5Uqu$3c!fW5&r;-<do(]rnq=aj]qhbB9r/q&BqiC`<!0R2B!:g!VoC)5;
+oC)VHr:0RQr:BjYr:U#Lrfm>Gq31lEnFcJHmIU)Ep@\@WrV-*^rV?Bfp\Xjcq#.i(JcC<$JcCr6
+J,~>
+JcC<$JcC<$JcD,;k5P5Uqu$3cs&]8&r;-<do(]rnq=aj]q,[Pur`K5'qcEPp!:g!VoC)5;oC)VH
+r:0RQr:BjYr:U"kn5o,Pp%7YCp[n1Pr:^*`q"Xg`r;-0bqu$6f]DdB]JcC<$PQ-.~>
+JcC<$JcC<$JcD8?jSnuRqu$0b!3#n3!P\F.q=OIVpYPW2p\4CXp&(TdV7HK7qn)g>qn3"!p[@nF
+o^2GAp@%qKrUKXQr:BgXs/>ssrPnoXrl>&YqS`HSq=XLSo(2VHp%/%Pp\"LYrV-*^rV?Egp\Xgb
+q#.f'JcC<$JcD&9J,~>
+JcC<$JcC<$JcD8?jSnuRqu$0b!0$o=!K[*Tq=OIVpYPW2p\4CXp%sXHOo1@BOo1:=OSb1@nFuDH
+me#oAme6,InGVnOo)/+Vo`'sOO8Y=AQ2$RDQ21+Io^_VJo(DVNo_8%WpAOa\q#1$eqY0m`r:p6%
+rdk*#s+139s*t~>
+JcC<$JcC<$JcD8?jSnuRqu$0br`B5'=Shsko_A1ThY-@2p\+IVqc=#)='&L+=]nl)=8,esnFuDH
+me#oAme6,InGVnOo)/+Vo`&%n=moGfp%S+LoCqhKoD8+Rp&4U_p\=O^q>L0aqtg6crOVuZs+13$
+s-E\8~>
+JcC<$JcC<$JcDGDi;WTOqu$0bs7u_nrk8EJ^Ads%q"a[Vp@.b2p@\+UV#Rt+]"@mOr4Dp?qn;mq
+r9j:Gq<[hBqsO7JrUBaTq""=R!;-8gs/>q:s2Y#Vqo/TTp[n4OiUZj:qt0[VrV$3aqY:!arVH9c
+qY^*d\c.0[JcC<$Rf@m~>
+JcC<$JcC<$JcDGDi;WTOqu$0bs7u_SrK%#?rqZ9_q=jOTnFbW2p%A3>rK7&A!0I,>rK%#Ar0$sG
+r9j:Gq<[hBqsO7JrUBaTq""=R!;-2Lr07/Fq3:oEp[n4OiUZj:qt0[VrV$3aqY:!arVH9cqY^*d
+\c.0[JcC<$Rf@m~>
+JcC<$JcC<$JcDGDi;WTOqu$0bs8)[r!EWD&q=aUZp[n1Kp"f?7p%h_p=BAR+=BSd/r)`VpqsXIN
+p?h\Bp?hbFq!\1Nr:0RQqssg[r)iAgp[n4OiUZj:qt0[VrV$3aqY:!arVH9cqY^*d\c.0[JcC<$
+Rf@m~>
+JcC<$JcC<$JcDVIh>[6Kqu$0brqcYmr4_n"qtKmZeb/h5m.CGPUnmpbrji$?rOVs>rOi!?!:TmS
+qX*G3qsF=Lq!\1NrUKUP!V</cV?"U2`WF-!`r!aT`W5Z)o@<F/oDJ7Vp&4U`p\FU_q>C*`qtg6`
+rOVuZs+13$s.01?~>
+JcC<$JcC<$JcDVIh>[6Kqu$0brqcYRrfI/@pA"OZq"E82qtBCL!;-,Fr/h,FOcklhrK$o=s,m5B
+!:TmSqX*G3qsF=Lq!\1NrUKUP!;$2Lrf6o@rK[/Bs-3TVp@Hi*qt'aXq=X^[rqH6`rV?Bfp\Xgb
+p&2K$JcC<$JcD;@J,~>
+JcC<$JcC<$JcDVIh>[6Kqu$0brqcInpA"OZq"E82qtBCL!;-%f!*K5%"'A]/=T)=p=9.ggmeZ>5
+m/-2JmeH8LnGVnNnc8:\=9D].=B=ik!;-!VeaiV/r:KgXrV$6bq=spar;-0bqY^$b])I9\JcC<$
+Sc=3~>
+JcC<$JcC<$JcDbMgA^sIqu$0brV?TkVl0F+qtU'_qY%Glr:L#br2'D'!4r0Ar4;m>rOi!?r9`5)
+r9aINq="7NrUK^S!iDfjrh]_7`VIOL`W!mWoBc&5nauDMoDS=Wp&4U`p\FU_q>L0`qtg6^rO`&[
+s+13$s.KCB~>
+JcC<$JcC<$JcDbMgA^sIqu$0brV?TkN/[atrf?sOqtKs\\FodlqMP<7qiLrCOc]O&rK.#@rK@*G
+g?eb)rU0LMr:'[Tq=4THN/[aqqiq&Eq3:lDs7>UJlLFN;r:BmZq=X^[rqH6`rV?EgpA=^aoDQ<#
+JcC<$JcDDCJ,~>
+JcC<$JcC<$JcDbMgA^sIqu$0brV?Niq,mOhqtKs\\FodlqH*\t!EWD&<s2W.=BJW'=8Q)"=8c8!
+mFpq)mJZJKn,2\RnbM_U=o;D%<pj&hoBc&5nauDMoDS=Wp&4U`p\FU_q>L0`qtg6^rO`&[s+13$
+s.KCB~>
+JcC<$JcC<$JcE"Tec,FDqY^*br;-Hhs/5_-rqQEcqtB@Kp@R,4q=O[Xrh]Ogrj`$?rk&$<!5&6C
+q7ZOhkNhj.rU'ROq!\1Nr:0dWrMBUlVZ+L6`VIOI`UiZonaQ&Cnb2PPoDS=Xp&4U`p\FU_q>L0`
+qtU*ZrP/>_s+13$s.]OD~>
+JcC<$JcC<$JcE"Tec,FDqY^*br;-Hhs,?r=rK$sQr:g*^lh0uDg\(C7rq$,Hr/(E7r/h&DOc]R'
+rK-u?rK?pAkNhj.rU'ROq!\1Nr:0dWqi(K<!gT"7r0@)Brg!*Gp@7YAq!n(KrU^![qXsg\rqH6`
+rV?EgpA=X_nbp6%JcC<$JcDJEJ,~>
+JcC<$JcC<$JcE"Tec,FDqY^*br;-Hhs&f;&r)isnr:g*^lh0uDg\(C7rq$+jqc3c"=BPQ(#?Y,2
+=B8I(=8Z2#=8c7qm-!^.m/?>MmeH8LnGMhUo)Dhl=oVV(<W?+f=7c"VnaQ&Cnb2PPoDS=Xp&4U`
+p\FU_q>L0`qtU*ZrP/>_s+13$s.]OD~>
+JcC<$JcC<$JcE=]c2RS<qu$3cr;-Bfs/5\,r:g-_oC^f/p%A"Mqt'iaqP=)#!4r0AqRQ[=rk/'?
+rTsFIl0A-2q!@tHrU0LMr:'[TqkaG6`5MYoqo8<Jr:9XQp$hYCp@.tLq""CTrq-'[rV$6bq=spa
+rVH6bp\a=T`r:PhJcC<$V>l&~>
+JcC<$JcC<$JcE=]c2RS<qu$3cr;-Bfs,?o<rK$mNr:]aTg%=t1p%8.Qs,-Z0rK%&BOT(@DP*(k*
+O8Y1=Oo:IAm/-,5lMBiAm/?>MmeQ>LnGVnSMu].>Pl6mBPl?sGo(_bJnFc8DnGDbNo)81Zo_S7Z
+pAXg^q#1$eqY'g\r9F7#rdk*#s+13Hs*t~>
+JcC<$JcC<$JcE=]c2RS<qu$3cr;-Bfs&f2#r`K*mr:]aTg%=t1p%8.Qs&\tr!`rK+r`9>,=]ed,
+<``B#=T;J$=T.U`lfm^2lhKiFmJZJKn,2\RnbuYi=TVW(<W6%f=8_Xanb)DEn+Q8JnbD\RoD\CY
+p&4U`p\FU_q>L0`qtL$RrPnhfs+13$s/#aG~>
+JcC<$JcC<$JcELbbPq>9qu$0brVHHf!r/[krP&<Frk8C,r:]gVq"3Y=lLalCr:9c^s.o[kr42d<
+qmud=!5/*?rp0IHl08*1r9O.ErU'ROq!\4OqPO50rl+fToYp^tp[I53qsaORq==LUrq-'[rq?<b
+qY:$br;--apAEhHdf+gtJcC<$VuM8~>
+JcC<$JcC<$JcELbbPq>9qu$0brVHHf!r._5rK-r<!;HEbp%A+PjR_[/q"+FSr/1N2s,-Z7r/h&B
+O,s7$qiUl@rp0IHl08*1r9O.ErU'ROq!\4OqMb-4s-<DErK[9Mp[I53qsaORq==LUrq-'[rq?<b
+qY:$br;--apAEhHdf+gtJcC<$VuM8~>
+JcC<$JcC<$JcELbbPq>9qu$0brVHHf!r,l"q,[T!p\aaXp%\1?oBPuCoDJ1W=8u>$=8l5%='/T(
+=8c8$<rQ2"=T)>#=T7X`lKRR1lMTuCm/?>MmeH8MnG68b<W?+g=8VO^nDj!7nGMhPo)81Zo_S7[
+pAOa^q#1$dqY'g[r87J$rdk*#s+13Js*t~>
+JcC<$JcC<$JcEai`r>f4qY^*br;-BfrqQJjrkA<D!l"C%p@\:Sp%.bFht-R4q5".g\@DLJ!4r0A
+rji0C]"7mQ!5/*?rp&A)r9F7Hq<\(IrU0ILqPO2/rl+oWo#:IpeaNG*rUK^Srq$*\qt9s^rV-0`
+rV?Bfp&"F[gAT_(JcC<$JcD_LJ,~>
+JcC<$JcC<$JcEai`r>f4qY^*br;-BfrqQJOrfI#<s7Z0ZqXjIPo((]0p@A$:!/^N5rfR2As,[,?
+qiUl@rp&A)r9F7Hq<\(IrU0ILqMaa)rg!?LeaNG*rUK^Srq$*\qt9s^rV-0`rV?Bfp&"F[gAT_(
+JcC<$JcD_LJ,~>
+JcC<$JcC<$JcEai`r>f4qY^*br;-BfrqQIppfILhp@\:Sp%.bFht-R4q,dJp!`rK+r`B&#r`9&#
+r`K,#s&]8&rp&A)r9F7Hq<\(IrU0ILqH3Vps&SVjqXE&(r:'[Tq==OVrUg![rq?<bqY:$br;-*`
+p&*PBg&?R&JcC<$WW.J~>
+JcC<$JcC<$JcEso_Z'?/qu$3cr;-Bfr:p8hrkA3AqXsaXqX_Dk!:ff[!kGhNrODp>rO`!=rjr0C
+pq?LflKIs+rTa@Iq<\(IrU0XQrMTUkqo&HP!64TKnF,Q.p@%qKrpfjUrq$*\qt9s^rqH6`rV?Bf
+o_\.Uh>Q..JcC<$JcDeNJ,~>
+JcC<$JcC<$JcEso_Z'?/qu$3cr;-Bfr:p8MrfI#<s,QsKqt0aV^%)0npPSa-rfR2A!0@)?q2t]?
+q<@2.p?DP@rTj:GrU'ROrU9Q@o996?qNUrDnF,Q.p@%qKrpfjUrq$*\qt9s^rqH6`rV?Bfo_\.U
+h>Q..JcC<$JcDeNJ,~>
+JcC<$JcC<$JcEso_Z'?/qu$3cr;-Bfr:p7np/h+`qt0aV^%)0np/h5o!*B/%r`B)$"'8K'<rQ2#
+=Su5$=BG=_lKIs+rTa@Iq<\(IrU0XQq,mJns&SVjnF,Q.p@%qKrpfjUrq$*\qt9s^rqH6`rV?Bf
+o_\.Uh>Q..JcC<$JcDeNJ,~>
+JcC<$JcC<$JcF*s_#F--qY^*brVHHfqtU/f!kl=^pq?\"r:KmX^%2'j!2]Xir1j;&s1&$<!4r-@
+r4;m>!5/*?!9sFFki_j,q<@kCrTj:GrU'ROqPOA4_u%C>`VT&tmcs39me?2LnGVnSo)A7[o_S7[
+pAXg_q#'scqXXOIr8dh7rdk*#s+13Os*t~>
+JcC<$JcC<$JcF*s_#F--qY^*brVHHfqtU/L!frG)qiC`:rq63]qt%MlqsjE;p5o<:q2kE7s,mBH
+r93A-qrmk?rTa@Iq<\(IrU0N@!LB#CPl?sFPl6mDn+Z88mJ?8Fn,DhTnb_nVoD\CYp&=[ap\O[_
+q>C*[qrmt=rS[[+s+13$s/c6N~>
+JcC<$JcC<$JcF*s_#F--qY^*brVHHfqtT_`rq63]qt%MlqsaYfpf@Dsr`0##r`K/$r`B8(<E3*!
+<rc@u<rhL_kih4,kkXKAlM^&Em/?>MmeU#d='#2us&SSiqX=1HlL"H9p[A+NrUKdUrq$-]qXsj]
+rqH9ar;$9eo)%YKjSe$9JcC<$JcDhOJ,~>
+JcC<$JcC<$JcF7"^Adp+qY^*br;-BfqY:#cs1SHHpq?\!r:BLMj72R.p[S1NpS7_us1&$<!4r-@
+r4;p?s1J3A!PZ8FkNM(*kPaW?l2BoGlhToHmJa!\VZ=[6_u7OH`W!gR`VT#tmHX'7mJQDJn,DhU
+nb_nVoD\CZp&4U`p\O[_q>C*Yqqq><rSmg-s+13$s0)HQ~>
+JcC<$JcC<$JcF7"^Adp+qY^*br;-BfqY:#Js,[2AqiC`:rq--[o((i2mdg,Br:'H;oT0'8qN1K7
+s-!<CkiVd*rTO(ArTa@Iq<\+Jrep]5!g]+:oT]9=rfm>GqX4.GlKnB7r9jCLrp]pWqssaXrq-*\
+rV$6bqY:!ar;,p[hu)j>ir4N/JcC<$YQ'+~>
+JcC<$JcC<$JcF7"^Adp+qY^*br;-BfqY1%kr`/Slrq--[o((i2mdg,Br:'G]r`K/#!*B/%r`B)$
+"'8K&<rQ/#=Sl/#=BGF`kiVd*rTO(ArTa@Iq<\+Jr`B#"!`rE'qc3YsmoTARq!IA5qX+4Kq="=P
+rpfmVrq$-]qt9p]rqH9ar;$9enGD,@m/>rCJcC<$JcDqRJ,~>
+JcC<$JcC<$JcF=$^]*s*qY^*brVHKgq=jsarM9LioY(4pp%%kIm-s3.q!e:Op7qVtrj_p;!4r-@
+r4;p?rk/'?o]H#3o&fl5rTO+BrTa@Iqs=<YqkjD3r58NPqSi9Kr5JR#g[+k*rU0ONrUBgVqssdY
+rq-*\rq?<bqY:!ar;,aVi;E'Bj8OW0JcC<$Z2]=~>
+JcC<$JcC<$JcF=$^]*s*qY^*brVHKgq=jsarJU`7plGB6rU]^Qp[RV>kOJ?:rpTQ;l]Ck'!0[!:
+qW7;1r9+%BqW[tDrTj@Is,-Z2s-EYLop#?=s-3GHqsE/)r9aINqX=CPrpfmVs7?6^qt9s^rV-0`
+r;$9elhfW<n,;;GJcC<$JcE"TJ,~>
+JcC<$JcC<$JcF=$^]*s*qY^*brVHKgq=k$c<E9$!oN2"_p%%kIm-s3.q!e:Op/_/p!*B/#!*B/%
+r`B)$"'8K&<qTPdk5+31k5=E@kkaQBlM^&Gm/L,]=8u=u<W?,"<rc@o<rc:umG%"*mJZJLn,;bT
+nb_nWoD\CZp&=[`p\O[_q>C*Tqr%D@rT!m.s+13$s0;TS~>
+JcC<$JcC<$JcFC&_>a-+q>C!ar;-BfqY:'a!2]Xirk/<Er4W-Crk8'sqsj=Jp$^i.p[A$TqkF,$
+!P#]>\G`r<])B5A]"@sQ!5&3Bq7ZgjpuV;3puV84rTF1Dq<@kCrTjLMs.oLf!lMspqSN<Oqo/?K
+r5J6nmHaE2rU'UPqX=FQrpfpWrq$-]qt9s^rqH6`r;$6dj87s9oDRbLJcC<$JcE%UJ,~>
+JcC<$JcC<$JcFC&_>a-+q>C!ar;-BfqY:'a!0$l7rf7&>r/^c9p[\4Oo^MPBi:-L0r/(<,s,[5A
+mZ@.)!g;^.puV;3puV84rTF1Dq<@kCrTjLMs,-Z2!gK":rg!2Aq3:rEr0?j>mHaE2rU'UPqX=FQ
+rpfpWrq$-]qt9s^rqH6`r;$6dj87s9oDRbLJcC<$JcE%UJ,~>
+JcC<$JcC<$JcFC&_>a-+q>C!ar;-BfqY:'ar)WDjp[\4Oo^MPBi:-L0p/_2q"]nf-<`W<#=T2D$
+=9DT(<EAcos5s+<puM53pZDG;roj1BrTa@Is6TbdqH!f"='&F'qc3Yss&T2&o2bomo'Gc0o^)PD
+rpKXOrp]pWr:9jYrq-*\rq??cq=sm`qtf@Mjo"`KjSj`1JcC<$ZN#F~>
+JcC<$JcC<$JcFI(_uB9+q>Bs`rVHKgqY:$`!;?>drOi3DrOr0Bs1S@$qsjOP_X@KmoqMGr!P#]=
+\Gj&=])K;F]">Pb]=\$Sq7Qdiq;h80q;hG7q<%Y=roj1BrTXCKpnS%h_o'F2q8<*Kq8E0Lr9X4E
+mcsW6q!@tHrpK[Prp]pWr:9jYrq-*\rq??cq=sm`qtetBmel_Uk5Kr3JcC<$Zi>O~>
+JcC<$JcC<$JcFI(_uB9+q>Bs`rVHKgqY:$`!VVHMMZ8_:NrY4=O8Ft8o)%tRnA=VomeVb;L]3A8
+O84k;O8"b/OT=M=jS%X0jSS'7k5FKBkkXKAl2^/FM?Jj%Pa7X7Q1gI6Q2L"DlgF'6lhKiFmJcPN
+n,DhUnbhtWoD\CZp&=[ap\FU^q>:$@qsOCSrT=*1s+13$s0M`U~>
+JcC<$JcC<$JcFI(_uB9+q>Bs`rVHKgqY:$`!;?=knlPb[qsjOP_X@Kmoi:un"]nf-<`W<"=T;J%
+=9DW)<`\lp!9O%;p>bu0qrRY9rTF1Dq<@kC!:0D\#$4f)='&F'qc3Ys!*B/%oiM/or9X4EmcsW6
+q!@tHrpK[Prp]pWr:9jYrq-*\rq??cq=sm`qtetBmel_Uk5Kr3JcC<$Zi>O~>
+JcC<$JcC<$JcFO*`r>K+q>Bs`r;-BfqY:'arq?8c!5/<Es1J?EqRch!r:0^S_XI?hoqMGrs0r'>
+rODj;s18-?s1/3Br4Mj=jl?:"rT3k;roa7Dq<7qFV>6qc_uI[O_uI[O`V[UN`Vo,slL4!6lMKoD
+m/?>NmelPQnG_tUo)A7[o_eC\pAXg^q"sm`qUPK6r:U$Mrdk*#s+13Ys*t~>
+JcC<$JcC<$JcFO*`r>K+q>Bs`r;-BfqY:'arq?8Irf.&@NfO+"qi1]:o)/%UnA=Yjmeqq:LAm;7
+O84n;O84n0OlbX$jSe39k5OQBkkXHClM-88PQ@&8rK[/Bns01>pZh53qWdtDqX"1JrpK^Qrp]pW
+r:9jYrq--]rV$6bq=sj_qYJb>o)/1Zjo0i2JcC<$[f:j~>
+JcC<$JcC<$JcFO*`r>K+q>Bs`r;-BfqY:'arq?@mr`9)#nlGh^r:0^S_XI?hoi:uns&T>*=&r@'
+r)iu#r`B5'<`\iojl?:"rT3k;roa7Dq<7nEpf@Dos&B/%=&rB"<W?,"=8uCp=8u>"lhB]5l2']B
+lh]uHmJcPOn,DhUnbhtWoD\C[p&4U`p\FU]q>0s<qss[XrT4$0s+13$s0hrX~>
+JcC<$JcC<$JcFU,c2R#,q#'j_r;-BfqY:'arUp6ar1j;)rk8?Erk80@!:g!Vp$^#jqsF'NrOMd7
+rji'?r4E!?!5&3Bpq?XdnDa-$rT*t>q<%\>rTO4Eq5++e!6"lSs2=lR!6"lSs2=`PrP\QOs6AG)
+r9F7HqX"4KrpK^Qrp]sXqssdYrq-*\rq?<bq=sj_q"iG9o_eF]kl-/5JcC<$\,Us~>
+JcC<$JcC<$JcFU,c2R#,q#'j_r;-BfqY:'arUp6ar/(H5r/Uc;qi1]:nbhnLn&b"pmIc54OT1C:
+O8t@<ORnV5j7)($j8J'<jn\'<kPaWCl1^&8Q2[$EQ2$U7Q2g.*l29iFlh]uImJcPOn,DhVnb_nW
+oD\CZp&=[`p\FU]q=sg7qt0g[rTO63s+13$s0r#Y~>
+JcC<$JcC<$JcFU,c2R#,q#'j_r;-BfqY:'arUp6ar)`o!nlGh]r:'CJamT&noi:rmr`B)"!*B)#
+!*B,$!`rE'oN2"OnDa-$rT*t>q<%\>rTO4EpK%8m!*/tuqc3Yss&]5&oN2&ns6AG)r9F7HqX"4K
+rpK^Qrp]sXqssdYrq-*\rq?<bq=sj_q"iG9o_eF]kl-/5JcC<$\,Us~>
+JcC<$JcC<$JcFX-e,JP/pAFU\rVHKgq=ss`rq??aqkO2(s1SBD!583@!5&!oq<m)+rU0:Er9X'M
+r42[6rji'?r4E!?!5&3Bpq?^emc"'&puD>6roNt<roa:Ep8%c-rPSZRrPJWRrkncSpr36NrPefT
+!6+]sm-+0-rTa@Iqs==Ls6fgRrp]pWr:9mZ!n6f6qt9s^rV-*^qYBj]eGJt;p\j=TJcC<$JcE7[
+J,~>
+JcC<$JcC<$JcFX-e,JP/pAFU\rVHKgq=ss`rq??as,$]1s,Ho9!0@#;s,@#=p[@qGh<k1/oBlJB
+oS3:*s,[2A!0R/?s,[&=o9'(4mc"'&puD>6roNt<roa:Ep5/j8rKR/Dplt`B!1*AEpZ_&.p?DP@
+rTj@IrpBaRr9sXSrpfpWs76;^o^r%Rrq?<bq"X^]pA3;9pAF[`kl-/5JcC<$\Gq'~>
+JcC<$JcC<$JcFX-e,JP/pAFU\rVHKgq=ss`rq??as&](unQ5JRq<m)+rU0:Er9X&Ur)ir"s&T/$
+r)`r#rE',&<`\ios5NJ*qr7D2rT*t>q<%\>roj&Vr`&ntrDreqs&T/$s&eqqr`8dXm-+0-rTa@I
+qs==Ls6fgRrp]pWr:9mZ!`\gaqt9s^rV-*^qYBj]eGJt;p\j=TJcC<$JcE7[J,~>
+JcC<$JcC<$JcF^/f`(%3o_e=XrVHHfqY:'arq?9_qkX5(s1S*<s1A3tr9j@IiU$I/md0nHpn@Vr
+q7-C6!4r*?!P5oA]_B,+i;;L2iqh^6jSn9:k5XW<V>nO5_u@UR_Z7XS_uI[L`W*mT`W!gOkj.F.
+kkXKBlM^&Hm/HDPmelPQnGi%VncJF3e,K":p&=[`p\4IYq="18qtBs_rTX<4s+13$s1//[~>
+JcC<$JcC<$JcF^/f`(%3o_e=XrVHHfqY:'arq?9_qhb<3ooB!1r9sROq!I&,qsEh<rJ(*$r/go=
+s,[5CqiLf<r/gN4m,7d"r8RS5rT*t>q<%_?p58m8rKR>I!1*SKr0.2HrfmDIrg*>Eq<7/-qWRb>
+rp'IJr9XFMs6fgRrp]sXr:0p\S=KTNqt9s^rV-']q>'LUh#$gCq#0IVJcC<$JcE:\J,~>
+JcC<$JcC<$JcF^/f`(%3o_e=XrVHHfqY:'arq?9_pf?odr9sROq!I&,qsEh<rDiVlr)io!s&K,$
+qcEi"rE')%<qBDZi;;L2iqh^6jSn9:k5XWA<WlE'<`N/u<<#tu<WQ9&qc3Yss&]5&oiM,nq<7/-
+qWRb>rp'IJr9XFMs6fgRrp]sXr:0p\<)ikhqt9s^rV-']q>'LUh#$gCq#0IVJcC<$JcE:\J,~>
+JcC<$JcC<$JcFa0h#?C5o)/.Wr;-BfqY:$`rq?9_rM9Ffpq-U=r4E0E]Xteer9jLM`U*QhqP*h[
+qmlO4rODp>qRc^=pV$@[s53A)r8IV6qW%S9rT4"?s.oCc!li3urPSWQrkncSs2+iTn\tIFqrd5+
+qrdqAqW\"Erp0LKrpBaRr9sXSs7-*Z"M3(2oCMtRqt9s^rV-$\p\F%LjSS`Mq#0IVJcC<$JcE@^
+J,~>
+JcC<$JcC<$JcFa0h#?C5o)/.Wr;-BfqY:$`rq?9_rJCN0r/LH2r/LXBr9_JirTj<7qM"g.rJpu@
+Oo1=>O8G%2Ondl7hsoY&iVhd4j8S-<jo+?AM>)o,Q2QsIPlR-JQ2[$JQ2d*IQ2HsEQ2Bb/k54??
+kkaQClMg,Im/HDPmelPQnGi%XncY;LSFc@Oo_\=\pAOaZq"OUJqW.PKr:p6Trdk*#s+13^s*t~>
+JcC<$JcC<$JcFa0h#?C5o)/.Wr;-BfqY:$`rq?9_r`/_onlPbWr9_JirTj;[qGd>or`B)"!*B&"
+!*B)#!*8\mpu)20n_j?(rSm\6roF%>rT=,[qc<VprD`ess&K/%<r5l"<``@)=S5bo<r;(Ek54??
+kkaQClMg,Im/HDPmelPQnGi%XncW2s<:f_\o_\=\pAOaZq"OUJqW.PKr:p6Trdk*#s+13^s*t~>
+JcC<$JcC<$JcFj3i;Vp<m/6GOr;-Bfq=ss`rq?6^!q`:ar1j#!!5&0Ark&3ArU'1Bjm2[-p$;SA
+!297`qk<ksq7-C6s18*>rk.s<s53J*q;:u*ro*h8qW%S9rT4'TpSIo0s2FoRs2=rTrknlU`5M2b
+rP[RTrTF.Cqs"+Frp0LKs6]jSr9s[Trp^!"rR:c;s7H0\rq?9ao_@tPl2'`Cq#'sdl2H86JcC<$
+^&NT~>
+JcC<$JcC<$JcFj3i;Vp<m/6GOr;-Bfq=ss`rq?6^!q_>+r.t3/pl>93rU'1Bjm2[-p$;SA!/:9(
+qh=m.rJpu@Oo1==O8"b3OoO>2hYH((i;V^6iqh^7jSe3?M>)o+Q2QsIPlR-JQ2[$JQ2d*IQ2?mE
+Q/:[%kPaWAl2KuIlhp,LmJlVPn,MnVnGnpSSGr-[o_S7[pAF[Wq!n1EqWn%Rr;$<Urdk*#s+13`
+s*t~>
+JcC<$JcC<$JcFj3i;Vp<m/6GOr;-Bfq=ss`rq?6^!;,nanlPeWo'GK(p[%S=rTXA^qGmDlqH3c!
+rDio"oiUcds53J*q;:u*ro*h8qW%S9rT4&Zqc<SorD`ess&K5'<E)rs<W?,"=8uCq=8c1Vk5FKA
+kkjWDlMg,Im/QJQmelPRnG_qX>l@Y$oDeIZp&=[_p[n7Nq<@bAqtU*brTX<4s+13$s1SG_~>
+JcC<$JcC<$JcFm4iVr3BlMU,Jr;-?eqY:'arq?6^rq-#]pq6X=rOi*@s17skq!7)-q!7V<r9<gH
+s1&'=!k>eOppg=6s18*>rk.s<n_O&urSRG/ro*h8qW%V:rhTFfrhKP7rl+uX`;IOQ`;daS_udip
+`::hF`;eu_jnIp9kPj]Bl2U&Jlhp,LmJlVPn,MkZ\[p8=rmCl=oCMtRqXsg\rV,mXlM9oFmJH_W
+q>KUXJcC<$JcEIaJ,~>
+JcC<$JcC<$JcFm4iVr3BlMU,Jr;-?eqY:'arq?6^rq-,Ere^K2q2Y?3p[%\@k3Da-p$2J>o7d+(
+!frG)rK$u@r/gf:n<!1rqVM2.q;D82rSm\6s5a09pkf';r0@8Gs-<VMr0@8Gs-<VKrg!;Fr0@<E
+kN2I#rTF1Dqs".Grp0LKs6]jSr9s[T!LB)MSHABRoD\CYp&4U_p[\+Eq="1Iqt^0crTaB5s+13$
+s1\M`~>
+JcC<$JcC<$JcFm4iVr3BlMU,Jr;-?eqY:'arq?6^rq-+hr`AttnlPSPq!7)-q!7V<r9<fPr)a#%
+=BPQ(s&T/$oiUcdn_O&urSRG/ro*h8qW%V:r`/\nr`/qss&K)"s&T8%<)iiss&T/$s&eqqrDrs\
+kN2I#rTF1Dqs".Grp0LKs6]jSr9s[Ts'5J$!qPsSrq-'[rV$3ao(_MGn+uGKq>C'elMcA7JcC<$
+^Ai]~>
+JcC<$JcC<$JcFs6ir8HGkksfEqtg9eq=ss`rq?6^rq$3^qkO1c!5&0A!5&6Crk&3CrO`*@!4i'p
+r9O.CjQZU-n*0D:rj_s<!P#]8\GWl;])B8>]_/u(h>H..htl:1iVhd7j85YNV>d7ja8O!Z`Pf^n
+_u@RS_u%CC`Vd[IjS\'3jS\-8k5OQCkks]ElMp2Jm/QJQmelMT\^T%*dK&k;oD\CYp&4U^pZqV>
+q=OOQqt^0crTjH6s+13$s1eSa~>
+JcC<$JcC<$JcFs6ir8HGkksfEqtg9eq=ss`rq?6^rq$9`Lku"ds+pH0qi:N4rTsIJq!-r)r9Eb8
+nqHt&!KW??O8k@?OSY%.OR(a#hYl@.i;V^6ir.p7M>E)0QMQmHPlI$KQMZsIPl?pJPl?sDQMd$@
+jS\'3jS\-8k5OQCkks]ElMp2Jm/QJQmelMRQMR-Po)A7[o_S7ZpAF[Nq!.\IqXFCXr;$<Wrdk*#
+s+13bs*t~>
+JcC<$JcC<$JcFs6ir8HGkksfEqtg9eq=ss`rq?6^rq$9`<`]0#pf?rerTsIJq!-r)r9Eb8nl5Kg
+!EWD%=8u;'='/R-pK6ufleVKqrSRJ0ro*h8rT!cTq,[Gos&Atts&T/$!`i9"r`/u!r`9)%p/h/m
+p#Q&2p>l/5q<%\>roj:Erp'OLr9XINs6fgR!*oA"!:p-\rq-'[rV$0`lhKc@o_S(Sq>C'eli)J8
+JcC<$^]/f~>
+JcC<$JcC<$JcG!7jSn`KlMTlCqtg6dq=ss`rq?6^rq-3]q4[l#rk&0B!kZ+XrOW'BrO`*@s1/-p
+qs);frTO9SoV)2ms1&0?\bEW4\H'5>]D]D8^$shOh>Q40htl:1iVhd0U][HhaN+4us2=lRrknfS
+qo&'Er5@^Wr8dh<qr[n@roj=Frp'OLrTsONs6fpUs1.sRs760\rq-'[r:^$^jS83>p\OFWqY^0f
+li)J8JcC<$_#Jo~>
+JcC<$JcC<$JcG!7jSn`KlMTlCqtg6dq=ss`rq?6^rq-3]re^Q/pPo*2q2PC>qs);frTNg+qN(`=
+OSk1>OoLLCO8b7<O7A>$h"TY'hYuF/i;V^6ir"W0M>rG5QMHgGPlI$KQMZsIPl$a@QMd$0j8A!:
+jnn3>kPj]Dl2KuJli$2LmJlVSn,J^LScA9[oD\CYp&+O\pZ2,<q=jaUqtg6drTjH6s+13$s1nYb~>
+JcC<$JcC<$JcG!7jSn`KlMTlCqtg6dq=ss`rq?6^rq-3]r`B&!!*Aqro2kqWqs);frTNfOqH*c"
+=T)>$<WH4n=RoP_h"TY'hYuF/i;V^6iq?CP<WQ9&r)E_rr`/u!s&T2#r`&nts&S\lr)Vq>r8dh<
+qr[n@roj=Frp'OLrTsONs6fpUs',:us760\rq-'[r:^$^jS83>p\OFWqY^0fli)J8JcC<$_#Jo~>
+JcC<$JcC<$JcG'9jo4lMmel)Aqtg6dq=sp_rq?6^s7H<^s76,_rLj8(])K>A]`5VD]_f>>])K8?
+lLX8hkksWAT`:_\T_c/#\[]2\ppg:5!4r-@rk.m:pY,Gtr7q,(rndV2qr%M5rh]Ccs.oe=a2e+t
+s2=lRrknfSr5A0Fr5AQonDa-$rT*t>qr[n@s60CFs6BXMrTsON"7E_1e+hAjo)A7[o_J1XpA+I=
+q"=IYqXXO[r;-BXrdk*#s+13es*t~>
+JcC<$JcC<$JcG'9jo4lMmel)Aqtg6dq=sp_rq?6^s7H<^s76,ErJ1'*rf6c5s6B4?e*-_mnV-e#
+!frG)rK$u@s,[5ArfI#<nW<M!q:ki&q;)&,rSRM1s5Es4reUH.s,$iDQMHgGPlI$KQMZpIPkp[@
+QMd$Hj7)($j8J'<jnn3>kPscDl2U&Kli$2Lm/l^AQM6sLo)A7[o_J1XpA+I=q"=IYqXXO[r;-BX
+rdk*#s+13es*t~>
+JcC<$JcC<$JcG'9jo4lMmel)Aqtg6dq=sp_rq?6^s7H<^s76+io2bHas6B4?e*-_mnPo<d!`rK+
+r`B,#!*AepnlPS>q:ki&q;)&,rSRM1s5EWNs&T/$!*9"t!*&qts&T/$!*0"t!``9%nlP`irT!D,
+p#H#3roO%>roa=Fr9=7Hs6KXMrp9dT>?gi$rpp'[rq-$Zr:]s\h>$[=q>0[ZqY^3gli)J8JcC<$
+_Z,,~>
+JcC<$JcC<$JcG*:k5P#Onbh>Bq>1$bq=sp_rq?6^rq-6^rUTo\rLa.arjr-As1J?C"2)7W])K>?
+])K5?\GPOdkg\emk4,)E\+mK5\bN]5\H'5>])oXY]_/r<]^FMPg\oq(h>Q40hu2L3V>$bfbK7fF
+r5ScTrknKKo#:OF!93A(qr7G3roF(?r9""As60CFs6BXMrTjOOrj`$XpX9$2rq$-]q"=OXq"NV>
+p\FX]o_\L_q>K[ZJcC<$JcEXfJ,~>
+JcC<$JcC<$JcG*:k5P#Onbh>Bq>1$bq=sp_rq?6^rq-6^rUKrEreLH,!/L6,rf6`4qs!q?eE?_k
+pkAR!!0?u<s,[2Arf75EOcb`eO8b7<O7A>"gATe)h"ok*hYuF2huSXjrJ:9+!go=?p6GZDo9K*:
+r079Am,@j$q;_J8roO(?roa=Fr9=7Hs6KXM!:BcOp7;0Qrq$-]q"=OXq"NV>p\FX]o_\L_q>K[Z
+JcC<$JcEXfJ,~>
+JcC<$JcC<$JcG*:k5P#Onbh>Bq>1$bq=sp_rq?6^rq-6^rUTnfrDiMko2khRq<6>kqr[EJpfIT!
+=BPQ(!`iB(oN:]d!*8OArS.;+qVD,,rnm\4s&AYkr`9)#r)Ebs<W6&!<rl?%r_rr!<`\cmr)NgW
+m,@j$q;_J8roO(?roa=Fr9=7Hs6KXM!:Bbip/M"]rq$-]q"=OXq"NV>p\FX]o_\L_q>K[ZJcC<$
+JcEXfJ,~>
+JcC<$JcC<$JcG0<kPk2RoDIGAq"jm`q"Xj_rq?6^rq-3]rUTiYrLs2$s18BG]=YZR]D9&;\c92;
+kkaJek4YJGTDuCp\,a)7\G`r>]">TR]E,^Yot:@<o@`llrnID,qVD/-s53jOoV;T4b/hX$`rF$V
+_tV+?`Vd[?i;;L3iqqd8jSn9=k5XWEkl'cFlMp2Lm/FQqe,%MldJWS7oDS=Vp%nCQpYtuDq>0s[
+qtg6erTsN7s+13$s2=qf~>
+JcC<$JcC<$JcG0<kPk2RoDIGAq"jm`q"Xj_rq?6^rq-3]rUTi?rJ1!(rf6c5r94"?c0"_Sr.Y03
+qN1];!0I2@r/^o>rfI#<nW<@qpY,W$rS78*rnd\4s+p<(!go=?op,QCo9K*:r0?U+qr.M5qr@\:
+roO(?s6'FGrTX=Hs6K[Nrg*>Mrg`oWrq$*\q"=LWo(V/=q>'m`o_\L_qYfd[JcC<$JcE[gJ,~>
+JcC<$JcC<$JcG0<kPk2RoDIGAq"jm`q"Xj_rq?6^rq-3]rUThcrDinupK$idr94"?c0"OqpK7Gs
+!*K5%s&S_no2bomo@`llrnID,qVD/-s5*fSr)<Pnr)N_t!*8tsr)Wi!!*9%t!``9%nlP`ileq[!
+rSm_7roF(?r9"%Bs60FGrp'OLrp9Vgoi1k[rq$*\q"=LWo(V/=q>'m`o_\L_qYfd[JcC<$JcE[g
+J,~>
+JcC<$JcC<$JcG3=kl1;Sp&*\DpA4[^p\=a^rV$-]s7H<^r:0jXrh0+]!5&0?"M;=Y]=S!R!P5i>
+])K8>\GbU:k5"-;T`(M]T)PA^T)Q4n\,a)6\Gj#A]">Se]^ri:]_pCVf_jFugATe*h"oh,UA:S]
+U]nucbK@oHr5ScUrPSBJo>UUFk2?3srSmb8roF+@r9"%Bs60FGs6BULrji!VqpPJks7-$XrU^$\
+p@\.Qm.]lAqYC!ap&"XaqYfg\JcC<$JcE[gJ,~>
+JcC<$JcC<$JcG3=kl1;Sp&*\DpA4[^p\=a^rV$-]s7H<^r:0jXreC9)rf$o<p5T'3pl578cfY&b
+rIt9+pkAa$rf?o;rf7&@rK$r>rf@)@qiC9/r7C_rr7Uo"rS.>,qV;.,q2"p)rg3_QQM$OCQLgC;
+QMZs0i;MX5ir%j9jT"?>k5XWEkl'cGlMg,KQMI*LSH&-Wo)81Zo_.tOp?_P?q"jg_qXsa_r;-BZ
+rdk*#s+13gs*t~>
+JcC<$JcC<$JcG3=kl1;Sp&*\DpA4[^p\=a^rV$-]s7H<^r:0jXr`/eqr`/_opf@Grr)`j[cfY&b
+rD`\nq,I&is&T2&rDs##=7o\e=8u>!fD+"rg%jA#g]$")h>C1H;u]es<rH)"<r5np<rZ5$<rGu!
+<E</l=8Q%\i;MX5ir%j9jT"?>k5XWEkl'cGlMg,K>P(npnbhtVoD\CUp%J+Gp[%\Oq>0s\qtp<f
+rU'T8s+13$s2=qf~>
+JcC<$JcC<$JcG9?kl1;SpAEkGo_SF[p\=^]rq?6^rq-3]r:9mX!hc6\rh'7brh0(us1A9A!kZ%T
+rji'?rji$<!4V^bg#_th!oolErLWhUrgj+\rjVX3!4hj6rj`0C]=Y_go=b1:o%3flrRq&$rnIG-
+rn[CE!2KFes31Md!m8R(r5ScUrPSBJo>UUFs53M+q;:u*ro*k9r8[e;s5j4As6'FGrTX@IrOM^P
+s3gnorpfmVrq$'[o_%_Inb;MIqt^-cp&"XaqYfj]JcC<$JcE^hJ,~>
+JcC<$JcC<$JcG9?kl1;SpAEkGo_SF[p\=^]rq?6^rq-3]r:9mX!/CB+reCB2!06`3s,Ql6pZC/j
+pZ)>7q1\Qrrf?o;rf7&@rK$r>rf7&@qN(60!KW?5fDO;"g%sG%g]$"-h>)g+M#3&-QiWP>oT]EB
+q3:rGrK[/Dqj%3=p"oN%pu)/1ro3k9roF+@rT=.Cs60FGs6BQKpmq>QrpfmVrq$'[o_%_Inb;MI
+qt^-cp&"XaqYfj]JcC<$JcE^hJ,~>
+JcC<$JcC<$JcG9?kl1;SpAEkGo_SF[p\=^]rq?6^rq-3]r:9mX!*/nsrD`o"<E8fpq,dSsr)`XT
+g#_th!9<cOqG[GrpK7Gs!*K2$!EN:p=S#Vo<q=l?f_sM"gA]k+h#?.,;YX2j<rH)"<r5no<WQ9&
+rDWhu<`\fnqc<aSp"oN%pu)/1ro3k9roF+@rT=.Cs60FGs6BPerD`\pr)E[cqssaXr:KXSnFlDH
+n+ceUqtg!_qu$<hmf%e;JcC<$`W(G~>
+JcC<$JcC<$JcG<@l2LGUp\a+LnbW%Vp\=[\rq?6^rq-3]r:9mXs7#`TpppI;rji0C]"7aKrj`!;
+s5s4?g>qqem[a?dp:(+5pUL76!4r0As1J!;s1J$UpXfDsrRq&$rnI1@s.]Ogs.fkDbfn8RaiF:u
+s2FrSpr)dCqS_p[qVM2.qV_D4ro3k9s5a4ArT=.Cs60IHrODpXpXB/jrm:`8rpfmVrU]sZme-#A
+p@n.Qqt^0dpA=abqYfj]JcC<$JcEaiJ,~>
+JcC<$JcC<$JcG<@l2LGUp\a+LnbW%Vp\=[\rq?6^rq-3]r:9mXs7#i>s+UN-rf-r<oo9!3pl5=9
+qrQPmp#H"(!/:#trf?o;rJpr?rK$r>rf7&@qN(91s,Zj(pXfDsrRq&$rnI.%reUT2r0RMOQL'n:
+QMm*EQMQm:h>6",htl:2iVqj7j8\3?jo+?AkPscFl2?nJT(efRS,i'Xnb_nUoDJ7Kp$VPIp[\+V
+q>C*_qtp<frU0Z9s+13$s2P(h~>
+JcC<$JcC<$JcG<@l2LGUp\a+LnbW%Vp\=[\rq?6^rq-3]r:9mXs7$%hr`/hr"'&B&<VTVk=8l7u
+=9%F[jkAegirE$S;Z9Vl<<#tu=85ns<rcA$<rl?'oiUifs&SgDpXfDsrRq&$rnI9J!)iVks&T&!
+!*8tsqGmSrr_rr!<`\fnqH!.BqVM2.qV_D4ro3k9s5a4ArT=.Cs60IHrEK.ur)NYo!:^!Xqss^W
+r:KFMme6AKo(`+Xr;--aqu$<hmf%e;JcC<$`rCP~>
+JcC<$JcC<$JcGBBl2LGUq#'CRnG;hRp%\L[rV$-]rq-3]r:9mXrpTpVp7MN!\[o?M\cB;?])T>@
+](ro9\Gs&8jO*#dipN?;[f3c4\,a#;\,a)6\Gj&=]DfJ8]`>_CeG7Ymf(mqrf`'S%gAdfCT_P2d
+U<Us,bfe2OaSWs[`Pf^4_tV+@`VRO=h>H./htu@3iVqj8j8\3?jo+?AkPs`G\,Nl=\^].'df@hq
+d/q\anG_tSo)81Wo]>c<pA"CTq"smbqY'g`r;6H\rdk*#s+13js*t~>
+JcC<$JcC<$JcGBBl2LGUq#'CRnG;hRp%\L[rV$-]rq-3]r:9mXrpTpVr.k6*s+UE2rf6Z2!06i6
+qrH/brSm6u!07&>qN1Z:!0I)=!0I2@!0I&<oT0'6r7(Pmr7:\qrRh,&r7^Xqqj@DM!L8o;Q2d0K
+Q2-aBQ0[9(hYuF0i;_d8ir.p;jT"??k5XWEkl$bJQCa]BSc##XnG_tSo)81Wo]>c<pA"CTq"smb
+qY'g`r;6H\rdk*#s+13js*t~>
+JcC<$JcC<$JcGBBl2LGUq#'CRnG;hRp%\L[rV$-]rq-3]r:9mXrpU!X<E8lrrDikus&Jqs"BAK(
+='#9$r`8quqrH/brSmiUrDNPlr)EYqrE&esr`9)%qcEGmoN)#nr7(Pmr7:\qrRh,&r7_$H!)iPi
+r`8qu!*9"tq,[Mqs&9&"<`\fnqGuq<r8.G1qr%M5ro3n:s5a4ArT=.Cs6'Gcr`T;+qGdAmr)E^c
+rpfjUrU]pYjn89>q"OIVqt^0dpA=abqu,s^JcC<$JcEdjJ,~>
+JcC<$JcC<$JcGECl2LJVq>BUVnG;bPoD&:YrV$*\rq-6^r:9jWs7$$Vqk3kZ"M2.S]".gOs1/-?
+rj`$?rOE!>\[h^LrjVO[guA4irgrbQrLEnrrjVa6s0qX1rji'@s1J!;!5.jOrRLktqUb`!rRh1A
+rLWt[rh01_rltJe"3\j/a8EsW`W*mV_tV+A`VIIAh"]_)hYuF1i;V^8ir.p;jT"??k5XWE[KO(L
+\CB%&e,RkrdJqSmnG_tRo)/+To]#Q=pA+IVq#'scqY'g`r;6H\rdk*#s+13ls*t~>
+JcC<$JcC<$JcGECl2LJVq>BUVnG;bPoD&:YrV$*\rq-6^r:9jWs7$$VqhP0*s+UB1rf6<(o]+`d
+qr.'urIb-1rf?o;nrNg4r/^K3!0?["rRLktqUb`!rRq+'onWF3s-E_Orfll:rg*PKqNgrBnD*fp
+rndY3r8@S5s5O";s5a4ArT=.Cr0@;RpRV2Orp]pWq==ITq=N\>q"FOXpA"R]r;--aqu$?imf%e;
+JcC<$ao?k~>
+JcC<$JcC<$JcGECl2LJVq>BUVnG;bPoD&:YrV$*\rq-6^r:9jWs7$$Vqc<Vp!`W0"r`0#!qc<_s
+!`iB'r`B"urE&XOguA4i!)renr_rSks&Jtuq,mAmoiUlg!*8X>rRLktqUb`!rRq*H!)rbmr)3Sq
+r`8u!!*9)!!`i<$q,[Mqs&AtuoN1ihnD*fprndY3r8@S5s5O";s5a4ArT=.Cr`T8)qGdAmqc*Ra
+rpfgTr:BaViq<*?q=jUXr;$9epA=abqu,s^JcC<$JcEjlJ,~>
+JcC<$JcC<$JcGHDlMgSWq>B[XoD8%RnG)qUrV$*\rq-3]r:9mXs7$!UrLj"Z!MI%%\c02>\H'5<
+\HKFQ\@B*K\Gir=[c?EDinWMgi;0#BSG\lUS,g%t[K*f4\Gs&2\G`u;])]M9^%KkKeG[qsf)!tu
+f_qB>T),)YT`348bQH&2aiF>!s2G#Vs24TLoYpXEp=fAtrS78*rnd\4r8@V6s5O";s5a4AroO?h
+ZaI6MrRCSjs3^nprm:]6rp]pWq"":Qp%7D>q=a^[p\=[^r;-0bqu$?imf%e;JcC<$b5Zt~>
+JcC<$JcC<$JcGHDlMgSWq>B[XoD8%RnG)qUrV$*\rq-3]r:9mXs7$!UrJ1?+rIt93rJgf:l](r)
+q;U2gq;D+&r.Fp!rdt33rf-u>q2k3/rfI&=oT8appXK/lrmpqt!8.+%pP8[6"IYXDQ^7W8n!3m<
+s-<DGq3C[-qV1u(qVD/-s53b4s5F";rT!q=s5j7B"Hnt5Q'M<>pRV5P!h8ZIrp]pWq"":Qp%7D>
+q=a^[p\=[^r;-0bqu$?imf%e;JcC<$b5Zt~>
+JcC<$JcC<$JcGHDlMgSWq>B[XoD8%RnG)qUrV$*\rq-3]r:9mXs7$!UrDr_o!*&qtr`9&!rDrnt
+rDio"qc<Yss5Wq7gu8(er)3DjqGdJpqH*MqpK.#ioiLh8pXK/lrmpqt!8-m@rDW_rs&K/%=T2A%
+<rQ,!<WH.q<rZ/#<)rouoN1ihp=fAtrS78*rnd\4r8@V6s5O";s5a4AroX5^!a&T.pf./kqc*Ua
+rp]pWq"":Qp%7D>q=a^[p\=[^r;-0bqu$?imf%e;JcC<$b5Zt~>
+JcC<$JcC<$JcGHDli-_Yq>BaZpA4@Um.gMQr:^![rq-3]r:9mXrp]mT!:KNQ!M?t$\c98>\H9@Q
+\G`u7\Giu:[eet5i;_[7SbnrWRfJoPRfT%grO)^8qRHL5p:(48]",EO])]M:^&$.QdeqSieGe"s
+f)O@tSc,/WT)kV1rltGd"3\j/a8EsW`W*mV_t_1@`VROAgATe*h##q-hYuF2i;_d9ir.p;jT"<A
+Z2V$0ZaK_\pX92ldF%s?rpTjUrUKXQp[dqIm.L8LqtKj[rV?Bfp\Xmdqu,s^JcC<$JcEpnJ,~>
+JcC<$JcC<$JcGHDli-_Yq>BaZpA4@Um.gMQr:^![rq-3]r:9mXrp]mT!:Kc?s+^H*#_\4uNK0!X
+NfN@`qVfu_s53[*on!3sO8Y(=O8=t/NrkE*OSk14OS[B$deqSieGe"sf)O@pLAHZ*RJ`ETR@'>-
+QN!-KPlR'?Q2R$KQ2$[AQ1*H*g]$"*h>c@2hu2L5iW%p9j8\3?jnt8CPF\9DT(efRS,f&Xn,DhT
+nb;VKoC;J>p&"I[p\4I]q>C*`qu$BhrU0Z9s+13$s3(Fm~>
+JcC<$JcC<$JcGHDli-_Yq>BaZpA4@Um.gMQr:^![rq-3]r:9mXrp]mT!:Kbcq,IDorDiht!*/tu
+r`/Ymr)`aRe_pJbrDNDhqc!Pqq,dGqoiM,p!a/W,r)iYoqU,/fr6tJkrmgtus47?N;c?Tm;ZK_p
+;uKVn;uTes<WQ9(r`9)#r`/u!!*/hqrDikunlPZgn(R`prnRD,s5*b4rS[_7s5O";s5a4Ar)Wl#
+pJh&jr)<YprpTjUrUKXQp[dqIm.L8LqtKj[rV?Bfp\Xmdqu,s^JcC<$JcEpnJ,~>
+JcC<$JcC<$JcGKEli-_YqY]m\p\ORYl1k/Mr:]sZrq-3]r:9jWs7#sTs6fWS".u0V])9)E\@T8^
+\[]/[\c0)=\bWc7\,Wl:[Hlc7hu2F1SGerQRK/iURfBkq[K*f5\G`o1\-':Q\[qdP!5/$=nBq3_
+rR:Vmrm_&#SFrHQT)PA^cN)8ic2Gifb/q^%`rF$X_uR^N_u[iqn\tCDo\'#nrnIG-r8%D0s53e5
+s5F";rSmn=ricO1ZEhs.psf5js3gqprm:T3rp]mVoCDMEoCVSGr:^'_p\=^_rVH9cr;?Hjmf%e;
+JcC<$bl<1~>
+JcC<$JcC<$JcGKEli-_YqY]m\p\ORYl1k/Mr:]sZrq-3]r:9jWs7#sTs6flA!/CB)re192rJgi;
+l&G#ekhl?qpOiHsq1A^.O8Y(=O8=t/NrkE*OSk15ORUZrdf%YkeGdu!eqNXK!/LN@rL!VQs-EtV
+Q'@MuQ'@O,Pl[29rKdJKpQk]Ao\'#nrnIG-r8%D0s53e5s5F";rSmn=qi^fHrLWqXr1*eVr9sXS
+rUKLMoCMSGnb)hRr:fs\rV?Egp\Xmdqu,s^JcC<$JcEsoJ,~>
+JcC<$JcC<$JcGKEli-_YqY]m\p\ORYl1k/Mr:]sZrq-3]r:9jWs7#sTs6fV^r`&qtr)N\r!*0#!
+!``3!p/_,n!*8FDkhl?qrDNDhq,I)ir)iVnr`B;+=BAU+r`JnrnBq3_rR:Vmrm_/&;GpFlqc*Ai
+s&]/!$s$G3=BAR)<`N.#<`Srrr`'##='"imqc<@BptG`%rnRG-s5*e5rS[_7s5O";!9F#Ypf.)i
+r)E\pr9sXSrUKLMoCMSGnb)hRr:fs\rV?Egp\Xmdqu,s^JcC<$JcEsoJ,~>
+JcC<$JcC<$JcGQGli-_YqY]s^q"ja\kP4lIr:]pYrq-3]r:9jWs7#sTs6fpSqOdh\r13o"rji!;
+!4r0?rO;s=\@B*K\Gir;\Giu:[K<kpi:l-ghYQ(-S,/TRS,JfRR0'h+\,Ni9\,*W5\+[<6\[o>_
+rk%m;r6P/bpsK)hrR:\opRM#Lrm(\lbg"E2bQQ)0a2Z*t`WX9!`5BLg`9kPC`;/$]f_sM"gA]k,
+h#-".hZ)L3i;_d9iW/$9YQ1s-e+hGje,Ri!dEp7dmeZDNnGMhEo()DIo^qhSpAF[\q#'sdqY9sb
+r;6H]rdk*#s+13ps*t~>
+JcC<$JcC<$JcGQGli-_YqY]s^q"ja\kP4lIr:]pYrq-3]r:9jWs7#sTs6fpSs+^H*qh4p.rJ^f;
+r/C]8mZ%8)pYXueqVC[o!.t0%qi:];qN1Z:!0Hr9!g&P+rK$Z6r6P/bpsK)hrR:\opP&Bsr0dMN
+s-X(XQBd`"Q'M<4pQbT@!1!5Crg!<2qUkc"qV(r's4mP.s5*e5rS[_7s5F+?OcfR)qORPUr13bU
+!LrNRn,;bRna>u=oD%tMp&+O]p\FU^q>L0bqtp<grU9`:s+13$s3:Ro~>
+JcC<$JcC<$JcGQGli-_YqY]s^q"ja\kP4lIr:]pYrq-3]r:9jWs7#sTs6fpSpf@>ns&AnrrDinu
+r`0)#<)iQlrDs&$i8F@einjOfpJ^cboiM)or`9)%q,dPt#$G&0=BAU,pK.:=psAf`rmLbor7(^D
+qG[5is&/u"=',?#"BJT+=BGK&!*/Yls&B&"m8s9fq:GJqrRq&$rnIJ.r8%D0s53e5s5F";!omBb
+r)`VlqGmGm!E8F_n,;bRna>u=oD%tMp&+O]p\FU^q>L0bqtp<grU9`:s+13$s3:Ro~>
+JcC<$JcC<$JcGTHm/HhZqY]s^qYL!_kkOoHqtBgXrUg*\qssdWrp]mTs6fmR!:9ZW!2'(Y!4r0?
+r4)a:s0r3@\@B#Wrj_g6rO2a6q;0i]!o0<9oUGlLrgEeRs0hs:rjDg9ppg=4!P#W7\-TXV]",D`
+]=Y`N^%]hLchu/ddJhSne+K7,Sc-k:c-4DVrlbPhb/hWC`W!mV`;daN`9bGC`:;IXf_sM$gA]k,
+h#6(/hZ)L3i;_a:iii9as4%(tpXK,i"k(fGd*U,<meZDMnGDb=o(VbPo_.tUpAOa]q#1$dqY9sc
+r;6H]rdk*#s+13qs*t~>
+JcC<$JcC<$JcGTHm/HhZqY]s^qYL!_kkOoHqtBgXrUg*\qssdWrp]mTs6fmR!:9Z<pk8[,s,R)<
+!0$f7rf$<*q;0i]!8R@%oR[(&qi1Z;plPK9!0Hu:"-AY-OSt77OS@&tchu/ddJhSne,P.!K`-W#
+LARD<R/`QZR$X,(Q'@Q!r06r@qj%5IoTfKBn^m`lrRq,&rnIJ.rS@M1s53e5s5="<Oo1C;Sc#)W
+Sc"uXS,VjPn,2\Pn`TK;oD8+Qp&+O^p\FU_q>C*aqu$BhrU9`:s+13$s3CXp~>
+JcC<$JcC<$JcGTHm/HhZqY]s^qYL!_kkOoHqtBgXrUg*\qssdWrp]mTs6fmR!:9S`r)Nbtr`&eq
+rDrqus&T+uoiD)os&SsPg>)bar)<)aoN1unr`9)%q,dSus&f>(r`B,%pfI48qp52eqU,;jrmUO=
+q,@Gr<``B$<<Q?)=BAT'<WH.l<WZ9%<pWlf<q4f?f_sM$gA]k,h#6(/hZ)L3i;_a9ir3'^=BASt
+<;BPl;ufkrmeZDMnGDb=o(VbPo_.tUpAOa]q#1$dqY9scr;6H]rdk*#s+13qs*t~>
+JcC<$JcC<$JcGTHm/Hk[qY^!_qYL'alM1)Iq=aRUrUg*\qssaVs7#sTs6fpSs6T`Xs.B4\rgj(Z
+!4r0?#.V.P\%&rYrj_g6$FmRS[^W]S[^NTPrjChCo%a6!s.'(Xp6tuKrg<Yms0r$:!4Va5rjMp<
+\,!N6\bs&=]DoP?^&?4IcMc)fd/),idf#[7SGeuYSGA`ScN2>9qof/cb/q^&`W4!W`;[[N`9bJ@
+ebRelfDaG%g&0S(g]-(-h>c@3hu2L3YPtcteGReqdf7_ociEJ4meQ>KnFuJ9o(qtTo_8%WpAOa]
+q#1$eqY9scr;6H^rdk*#s+13qs*t~>
+JcC<$JcC<$JcGTHm/Hk[qY^!_qYL'alM1)Iq=aRUrUg*\qssaVs7#sTs6fpSs6TK6re1<(s,I&=
+s,I&;qi1T6mu?Dao%a6!s+C<&n:CV!qi1Z;plPK9!0Hu:"H\b.OHBI&plPI!o?R<\rQtDg!n)aT
+rIb!#s+U?)!1<\PrL!VQ!go=?r0@,CpQb35r71Voq:GVurn75's4dS/rS@M1s53e5rK7)B"J20T
+S=KMJrLWqXr1*eV!:BdRq="4Mp[RG;qXaUVp\"LYrV--_rV?Egq"t!equ-$`JcC<$JcF$qJ,~>
+JcC<$JcC<$JcGTHm/Hk[qY^!_qYL'alM1)Iq=aRUrUg*\qssaVs7#sTs6fpSs6T;WrD`_qrDrqu
+s&K5%<)clk<WH5#<oi*-h#?(+<;TVf<:X,i=T2A%=SZ%u=T;P&=8uCu=8gD8cMc)fd/),idecr<
+;u9Po<<?3&<rQ)&<``C*='+ll!``9%lrX,8q:>Anrn.5'r7_2*s4mS/s5*e5rS[QU!E`@q<;KVm
+<<#ksmJcPLn,)VKn`TK>oDA1Sp&4U_p\FU_q>L0bqu$BhrUBf;s+13$s3CXp~>
+JcC<$JcC<$JcGWImJcq[qu$-aqYL'ameHJLq"FCRrUg'[qssaVs7#sTs6fpSrTjQXTDY;ZSH,2Z
+RfL&!\c9/E\%&oV\@K,ZrO2j:\$l7Er3lL1s5!>&l.c*h!h5XIqjIANr0dPO!13Vls0r$:!4Va5
+rjMs=\$u4D!4i'>rk&0Br4VjKqp"r^rQkJis3^Y2!h5^Mr13eV!1j&6!RAsebQH&2aiOG#!6+rU
+rkn]Q!QE"E`V@s[ebn"qfDaG&g&0S(g]-(.h>c@3hZ2U2Y5kfteGReqdK%\nd/NG2me?2GnFQ2<
+o)&%Vo_A+XpAOa]q#:*fqY9scr;6H]rdk*#s+13ss*t~>
+JcC<$JcC<$JcGWImJcq[qu$-aqYL'ameHJLq"FCRrUg'[qssaVs7#sTs6fpSrTsB7q1SU(s,?i7
+rJ^6*s5!>&l.c*h#(hDWJ:N-!rIFlupji=&r/Uf<q2kT:!0Hu:"H\b.OHBI&q2k?pqp"r^rQkJi
+s3^IkrIk0(!/CK?rL*VOs-WtVQ^3s9Q2-[=Q1C79eGIeof)+(uf`0Y&gAfq-h#?.0hZ)I5i;/Q=
+P+J89Sc5/YSc#)WSc##XS,VgRme?2GnFQ2<o)&%Vo_A+XpAOa]q#:*fqY9scr;6H]rdk*#s+13s
+s*t~>
+JcC<$JcC<$JcGWImJcq[qu$-aqYL'ameHJLq"FCRrUg'[qssaVs7#sTs6fpSrTsJ_p/_,kr)N\r
+s&K)""'&<"<Us2jh=TLeg\]\+<)Z`n;Z9Vf<<$"j=8l>$<rc@u=8l;%=oDD%=SZ%mbkoZ\cMc)g
+d/VMh;Y<rm<)lq!='&H%<<ZE)=BJX+n5]Qk<p`u`eGIeof)+(uf`0Y&gAfq-h#?.0hZ)I5i;$OU
+<W,ns;uBVk<W#hr;uZ1_me?2GnFQ2<o)&%Vo_A+XpAOa]q#:*fqY9scr;6H]rdk*#s+13ss*t~>
+JcC<$JcC<$JcG]KmJcq[qu$0b!3Q.pqt]aVp%S1Ro_&.SrU]pWrpg$Xr9s[Rs6]aN!:0QS!1j(Y
+r0m\trji'=rO2g9\,Nl>\$i`SrjMj9qR6:/q:jc[!87@?rL*VQqjIDMs-E_nr3lX7s0_p:ppg@5
+rj`!;qmZX:rOW!?rk/3CoZR0VrQY/`s3L8)rL<eVqp,;gc25`bb5o`+rPeoX`5MVlrPS`U`9tVD
+e+;)fec+.tfDaG&g&9Y)g]-(-h#Q=-Y6!)#o$mTd#h%,Jd*^4em-O`=r9j4Gp$hYEo()_MrUfpY
+rV$3aqY:$brVH?er;?Hjn,@n<JcC<$dJn^~>
+JcC<$JcC<$JcG]KmJcq[qu$0b!/UOKqt]aVp%S1Ro_&.SrU]pWrpg$Xr9s[Rs6]aN!:0Q:qLnj%
+q2PB4qi1T6qi1W7pl5+(hV%t_rdaZks+'urs,?r:r/Uf<q2kW;rfHr:!0I2B!g&J(q2k6lr65,a
+q9K#drdsZmre:<<rL*VOs-`nSs-EVKpltK;op5U+o@3`hrmq#!rn.8(rS%;+s4mS/!8dO6rLX%[
+rLEnYr1<hWr1*eVs6TaPr9j4Gp$hYEo()_MrUfpYrV$3aqY:$brVH?er;?Hjn,@n<JcC<$dJn^~>
+JcC<$JcC<$JcG]KmJcq[qu$0b!)rdkqt]aVp%S1Ro_&.SrU]pWrpg$Xr9s[Rs6]aN!UEbW<rH"s
+<<-"t<W6%u<<Q?&<)clg<r(M,g&Th&;tEug;uThg=8uD&=8l=u=8Z1o=7j]6bl,f^cMu5i;u9Jb
+;uTc!<``@'r`/u!s&f;&n5]Qk<pj&ge+;)fec+.tfDaG&g&9Y)g]-(-h#Q=-=oVP&<W?#!;cN]o
+s&Aeor)E\ps6TaPr9j4Gp$hYEo()_MrUfpYrV$3aqY:$brVH?er;?Hjn,@n<JcC<$dJn^~>
+JcC<$JcC<$JcG`LmJct\qY^'a!rBI0rqcNfoD&(Sp@e%Lqt0jYqXXXUs7#sTs6fmRrTsRM"R;SM
+SXobMpmV>r\[h^LrjVp9#e.=R\$i`Q[^Q1C!k5VHqmHI2rjD+HnCdcms-inSrL3bSqj@DMr0@>j
+r3lX7s0h[3s0r!;s0qs:rji!=rk&-As1S0LpWNNZrQY;dr0mPOp6kuNqTf2fc25]lbK@rI`l5s:
+`Pf^n_u7LS`Ph5aqU55hq:,Dos47,"s4IA)rS%;+s4mY1poabIe'mm;rR:bos3^hmrTsLMqsNqA
+o^M\Hp@A.QrUfpYrq?<bqY:'crVH<drVZQkn,@n<JcC<$df4g~>
+JcC<$JcC<$JcG`LmJct\qY^'a!rA+:rqcNfoD&(Sp@e%Lqt0jYqXXXUs7#sTs6fmRrTsRM!pYJn
+qLn^!q2PB4qi1T6qi1Q5qMjjqnCdcms+'`kq0r?ns,?o9rJpl<qN1`<rfI#<s,d2A!g&J(qN1Ho
+pWNNZrQY;dpO`*k!/19;rL*VOs-X(YQ^3o%Pa1p+pQbT@rg!?.qU>8irmh&"r7Cu$s4RA)s4dS/
+s5!I4r1<qZr1!bXr1<kXr1*bUrTsLMqsNqAo^M\Hp@A.QrUfpYrq?<bqY:'crVH<drVZQkn,@n<
+JcC<$df4g~>
+JcC<$JcC<$JcG`LmJct\qY^'a!r?%urqcNfoD&(Sp@e%Lqt0jYqXXXUs7#sTs6fmRrTsRM!:'8Y
+r)N\pr`/tts&K&!r`'##<E/rto2b53nCdcms&8_ms&8Vjs&8ksnlGlp=',B'qcEYspK.+3pWNNZ
+rQY;dr)E/arD`r#='&H%<W?,"=9)G$<WH.l<WQ9&moTA6qU>8irmh&"r7Cu$s4RA)s4dS/s5!HQ
+rDiu"<)i`ns&Ahpr)EYorTsLMqsNqAo^M\Hp@A.QrUfpYrq?<bqY:'crVH<drVZQkn,@n<JcC<$
+df4g~>
+JcC<$JcC<$JcGcMmJct\qu$0brqZW*riZ4qo_A7Vp@dqIqt0jYq==OTs7#sTrpKgRrTsRMs69[M
+SXobMp6u,q]".dL!4Vm7"1YhL[edE2[f3Z8['fn?rj;a5pY"lbq:GP4rg3\RrL!JKqj.)es0r$:
+pUL74rjW$=\@;IIrOMp=rO`$@rQ+cUr6"iYrQG>fR$[N6rL*PO!7(Ge"4#08bPo`cb6,o/a2\+t
+rl"`Prl"]Q!6"iT!6"`Qp<ifdrR:Yns4.,"rR_)%s4RA)!ScE)YQ)uNdaRd:r6tYnr6bB-r9a@K
+lL4Q<qXO@Or:Bp[qXsg\rqH9arV?Hhq"t$fqu-$`JcC<$JcF0uJ,~>
+JcC<$JcC<$JcGcMmJct\qu$0brqZVYre^ULo_A7Vp@dqIqt0jYq==OTs7#sTrpKgRrTsRMs69UK
+pOrO"re191s,?o9rf$`6rf$`6qi(E3pY"lbq:GXsrdXorr."Bgrf$f8rJpl<qN1`<rf@/AOSt7?
+OSt:COH5J"OT!8qao'<WbPfWdc%(<BJGt,rK)1,sR/NHPR/`TSQii\@Q'Ls*op#NCqj$m&r6kPm
+qpbYrrmq&"s4IA)rRq;,h"m05OT1mMT)YAYS,f,YT)>/WSGo#Sm/68Imcs9:nG;\Mo)/+Yo_S7Z
+pAXg_q#1$fqY9sdr;6H^rdk*#s+13us*t~>
+JcC<$JcC<$JcGcMmJct\qu$0brqZUtr_rdko_A7Vp@dqIqt0jYq==OTs7#sTrpKgRrTsRMs69UK
+q,[;ks&8kqs&K(us&K&!r)E_rr`/MipY"lbq:GODpf$lc!EWD&<q9;n=BAT'=92K*rE&kupfIF8
+prWHVq9/`\!mOYAlr3j_s&T/$#Zar*<`W:(=',?$s&J_mp/_5pqH*C<r6kPmqpbYrrmq&"s4IA)
+rRq;,h"Y%P<W,r!<E/fns&Ahpr)EYoqX".IqX3Y;q=+7Nq""@Srq-'[rV$6bqY:$brqcEerVZQk
+nG\"=JcC<$df4g~>
+JcC<$JcC<$Jc>`MmJct\qu$0brV?Q)\,NN1q=XOZp\FOMp%n=XoD.tVnc&%Un,DbTmJZDOli68M
+l2R:ES,U"t\Gs&;[f<c8\,Wl;[C#q@"gk\G[^EO>[/[Q6[/JY9fDjFtR.lsCQ2n>h[f<i:[e@32
+\,Nl>\%&oVrj_s<rOW!?rk.dBr5no[r6+c"r0[ALrm(De%F35Bbfe2Rbfe2PaiML$`W!gR_u@UP
+`W*mT`W*mS`V\$UdJ_Mme,7_qec45!fDjM'g&9Y)Y5b^(Xp)#UdF$Cko$mTds3gels6KIHqX+%F
+mI0o@r:0URrU^![qt9p]rqH9arqZNhq>:-gqu-$`JcC<$JcF4!J,~>
+JcC<$JcC<$Jc>`MmJct\qu$0brV?\\ObejNq=XOZp\FOMp%n=XoD.tVnc&%Un,DbTmJZDOli68M
+l1p#2L&?W'NW+n8NW+n6NW+n7NVSP2NW%MgfDjG#J,OiqI/n`oI/n`pIK+crIJf''NW"n9O8=q<
+O8b4AO-'=$s,d2A!K`B>OR^Eiao0B[bPltfJ,b$!Jc(,tK*$XmRJN<MRJrTRRK&WVQ^3o%o9A^/
+qp>&arR1\or7(bss47/#s4IA)rS%:5s,m5@!h>gPrLX%[r1!bXr1<hWr1*bUs6KIHqX+%FmI0o@
+r:0URrU^![qt9p]rqH9arqZNhq>:-gqu-$`JcC<$JcF4!J,~>
+JcC<$JcC<$Jc>`MmJct\qu$0brV?Ot=T25!q=XOZp\FOMp%n=XoD.tVnc&%Un,DbTmJZDOli68M
+l2"HV<W?,!;uK\q<W?%u<W6%s<<-"t<Us2hf\tH^f)/M?;ts;o<``C)r`8Sk!E`G&=92K*rE&o!
+pfI",r5no[r6+h4s&8kqqbmJmqc*`!='&H%<W?)%='/O*rDrquoiCcfs&T&!qp>&arR1\or7(bs
+s47/#s4IA)rS%9Rs&o;&"'JT'<W,r!<E/ios&Aeor)EYos6KIHqX+%FmI0o@r:0URrU^![qt9p]
+rqH9arqZNhq>:-gqu-$`JcC<$JcF4!J,~>
+JcC<$JcC<$JcG-:qYg?ipA=da!r9=7rN>qjqtKp[n+HJJqt'URrUKmVr9sXQs6]dOs6K^MrTX<O
+pRD,O"1u.U\c0,<\,Ni9[19XS[^ENM['d<K[C*HN[JI61[JmQ,fC%5dec2$4Qi*0HQ2d0LQiFJi
+[f<i:[dpp1\%&rWrODj;rjr*@s1J9LprE0NrlP/^s-N\MqNpuEs-Wl3rm(De"4#08bl5ckbfe2P
+b/_N@`VmaQ_uI[P`W*mT`W!gT`V7^Vd/)/hdf7eoeGn)!f)=5#fE'[ZpTFPCs3Ukqe+2#ee,Ien
+dJrM1lh9]>mIfo<n,2\RnbMbToDS=Yp&=[ap\O[aq>L0cqu-HirUBf;s+13$s4%(!~>
+JcC<$JcC<$JcG-:qYg?ipA=da!r7t@reLQ2q"Xa\q=a:Mq"4ITq""CRrp]jSrpKgRrTsRMs6BRI
+n:Uk'NK*mqrJgf8qi1T6r/LH0rf-X'mah6b!IoR_IJ]!&NW"n8O8"_;O-#J&O8k=?Ont1;`q[UL
+aSs<\b5HbgIf4cqJH(3"JcLB$Jcp^XR$jB=R/WNQR/`TSR/`NQQ1U=0Q1rW&d/)/hdf7eoeGn)!
+f)=5#fE'[ZpQ5EFs.0+[s.0(X!1j%ZrLNkVrgWrQrTj1Dp[.YAo'cMGrUK^Srq$*\qt9s^rqH9a
+rqZNhq>:-gqu-$`JcC<$JcF7"J,~>
+JcC<$JcC<$JcG-:qYg?ipA=da!r5r#rDWLdqtKp[n+HJJqt'URrUKmVr9sXQs6]dOs6K^MrTX8]
+qGmDn!*&qrrD`ess&B"ur`8bno2bS:mah6bs&AVhqc*Jns&K2&=BGK&nlP`k!`rK+r`B#"q,dL6
+prE0NrlP/^peq&hqGdGm!)i_pr`9&#!*9)!s&T)"rDrqup/^ifr`9#"pWrcaqU,;js3pnqs4./#
+rR_)%&)#Z;='/O*=BJX,=B&7"<W,r!<E/ios&Ahpr)EYos6BRKp?_P@p$VD>r:'[Tq==OVrUg![
+rq??cqY:'crVH?erVZQknG\"=JcC<$eGk%~>
+JcC<$JcC<$JcG0;qYg?ip\XmbrqZT&r3#tmqtL!]nFcSKq=F@OrUKmVqsXOPs6]dOrp0ULrosIH
+pRD,OrL3o$]"5HO\Gs&;[f3]6[K*`6Zi[S@[/RK/ZiIN5[/AMDeb.GjR/<6LQM6[CQN+;l[J@64
+\$id:\-BFP\@8rW\G`u;])TDA]_BDB`r3sRaS;)!QhZpPREWn#c-FW4cNDJ;bfot-"Nnj,`Pqeo
+qnrHPqo/QQrl+fRp!3N^rQtJirmLhqrRCkts47/#!8.%KrQtSl!RfHgeGRepdeqJml2BoFlgjE9
+mJ-,Bn,;bSnbVhUoDS=Yp&=[ap\Xabq>L0cqu-HirUBf;s+13$s4.."~>
+JcC<$JcC<$JcG0;qYg?ip\XmbrqZSUrJ1H1r:p0`qtBOPq"4CRp[\:Qrp]gRrpKgRrTsOLs6BUJ
+s60'-rIY-2NVe\6NW+n7NVnb7NV&/0NVqAreb.GjIeJ3eIf+TqI#X-`N;\b8Nr4t4O9Uc-OH5Ha
+OSk7;OS?`k`r3sRaSgPbIf4cpJ-(:PJGk'!QiNQMR/WNQR/`TSQi`V?Q1L70Q1`H$ci)5gdJhSo
+e,@erec45!f)XItOSt^LSc,/[Sc"uXSc,/XSc##WRfM^OlMTu=m.TiAme-&InGVnRo)A7Zo_\=\
+pAXg`q#:*fqYC$er;6H^rdk*#s+14#s*t~>
+JcC<$JcC<$JcG0;qYg?ip\XmbrqZRqr)<OgqtL!]nFcSKq=F@OrUKmVqsXOPs6]dOrp0ULrosIH
+s&T"sqGmSrr`&kqrD`br!`W0"r`8bno2be?n(%*\!*0"tqc!Gmoi1ukr`9&$!*B,"nlPcl"BS]-
+=',9$q,d=0qo8TTq8i>/r)<Gkr_r\or`9&#!*9)!s&T)"r`9"up/^ifr)WL9rQkGhr6bMls3pqr
+s4./#rRV&%rDresrD`esrDir!<;TVo<;KVm<;oerl2BoFlgjE9mJ-,Bn,;bSnbVhUoDS=Yp&=[a
+p\Xabq>L0cqu-HirUBf;s+13$s4.."~>
+JcC<$JcC<$K)b9<qYg?ip\XmbrV6cp[C!0AYHG%3q#'m`p@ItPo_J+No)8+WnGD\Rmf2\Pm/QDO
+lM]uIkQ'fAReN<O])oOS\c'&<[emH6[^EOAZi[S@[/RK,ZiJY=eG@YeQiEBFQ2d0LZiIN0[f3c3
+\,a#5\Gs&<\G`rB]">Pc]=bfR`:_+J`r3pZaHi+iQMm*KQMQsFR/bA7c-FSZcHjl:cNDJ;bfp".
+s2kGca2Q$r`;@IP`;@OQ`;[aT`:hIOcMl/hd/;;kdf7epeGn)!ec==qY5Q`Id/qbFe+;)ee,Rkq
+d/qbDdJ`>-lMKo8m.fuFme?2KnGVnSo)A7[o_\=\pAXg`q#1$fqYC$er;?N_rdk*#s+14#s*t~>
+JcC<$JcC<$K)b9<qYg?ip\XmbrV6QjO,o.rL]NA-r:g*^oC_nNq=F7LrUKjUqsXOPs6]aNs6K^M
+rTX@G!9a64on3:)qMbB4s,?l8r/CW7oS`e#k1'7Vn9t4`r-eR(r/CT6rf6l:s,[5AplPN:s,d/@
+qiL]nou6mLrPnu\IX_6DqgSBkqge@,rgEbQ#+:jGQ^=#'o9B-;s-3AFp<EEYrm1Sjr6bPms3pqr
+s4./#!8%42q2kQFs.0(Zs.0(X!1j([r13_Ts-ruOr9F1Fmd0`9qsO4IrUBdUqssaXrq-*\rq??c
+qtU-crqcHfrVZTlnG\"=JcC<$ec1.~>
+JcC<$JcC<$K)b9<qYg?ip\XmbrV6Qj<`W2t;ZQUjp\X[Up%\1ToCVVPnbqtSn,DbTmJQ>Nli68K
+l2TrIkOqmV<)rcor_r_os&B%ur`/qupf6re!7g5]qU>FDr)E)arDrr#!*B,"nlPZis&])"qH*R4
+ou6mLrPnoZqbdDmr_iSkq,@Ap<;]`"<``='='#<#s&T,#rDrkspK$rgr`8a;q9Jucrm:Sjs3gqr
+rRCkts4.2%r)W\rrD`esr)Nhu<;TSo<;BPk<<#nql29iDlgF-7mJH>Gn,;bSnb_nVoD\CZp&=[a
+p\Xaaq>U6dqu-HjrUBf;s+13$s4.."~>
+JcC<$JcC<$KE(B=qu-Hjp\XmbrV?Hfs0Vg1s0)F)s7cHbo_&%Pq=F1Jr:0aTqsXOPrpBXMs6K^M
+rTX@Gs5sCEqjR2Is189Brj`$<rj`!:qm?O7[C!=>Zi7<3[Ipp(eFD#]df,U1QN*<KQMd$GPQmDZ
+Za@*I[JI?1\,*T7\,!Q5\,Wu;\H]XW]=PVd]_02?`;.@R`g2q_Q2R$FQi>5.c2Z&icd;[;!mSs5
+qof#^#KXp(`Pf[4`;@IP`;@OQ`;dgU`;@aSbl,f`cMl/id/;;kdf7eqeGn(lY5HZHd/h\Eo$mTd
+rR1Ylq<@eAq!7A7qsF=Lq=":OrpfmVrq$-]qt9s^rqH<brqZQiq>:-gr;H-aJcC<$JcF=$J,~>
+JcC<$JcC<$KE(B=qu-Hjp\XmbrV?Hfs,[2:r.tCIr:]dUq=OLSo()_KrUB^QrpKdQr9XILs6BRI
+s60LG!9X65o7R('!0-u:!/pf7rf$o:r/LT4rf-Q/qpb/bp<rqgqgAElrd=Tks*jrqrd=[(r/CW7
+r/U]9s,[5Aq2kT:s,d2AqiLKgr5AEM!64GUqLA.)s-`kRs-`nSs-EbPQ1L7;Q2[$GQ2Ac$bl,f`
+cMl/id/;;kdf7eqeGn(rO8G%:SH#/YT)YAXS,f/VSc,)WS,)=GlM0]5m/-2JmeQ>MnG_tTo)A7[
+o_\=\pAXg`q#:*gqYC$er;?N_rdk*#s+14$s*t~>
+JcC<$JcC<$KE(B=qu-Hjp\XmbrV?Hfs&T/!r)<Xir:]dUq=OLSo()_KrUB^QrpKdQr9XILs6BRI
+s60LG!p3K_mo93`rD`ess&B"ur`8eooN(k=n^I3[r`/hpoMtcfr)Wi"qc<8hr)ir"r)iesou$^G
+q8E?Rr)3Pnr`&\lq,@Dr<E/lr"BJT)=',?#s&T,#rDrkspK$uhr`8p>qTSo_qp,2es3U\ks3gqr
+rm^tuqH!Mqr)E\rrDir!<;KMn<;BPm<;fbkl20c@lgF-:mJQDJn,;bTnb_nVoD\CZp&=[ap\Xab
+q>U6dqu-HjrUBf;s+13$s474#~>
+JcC<$JcC<$K`CK>qu-Hjp\Xpcr;$<drj;^1rilF+rV#sXqXjXUnacSIrUBXOrpKdQrTsOLs6BRI
+s60LGs5s9Ko:,cMrjr-?"h;%O\@8pA[K!W3Zi@B4[J%!-e+M/WdIW\%Q2?dPPE_<=['R-H[C,k>
+rO;X5!4Vd6s0r!;rj`$?r4DR;r58KOrl+o%!1!MIpQbWArg*W.rlk>c$I6uEcd0n]bfn8QrQG5`
+#KXp(`Pf[3`;@FP`;@OP`;dgV_uRsObPfZac2>leci;AjdJqYpe,RqsXn]%!chl)hd/h\Eo@3]e
+r6kPks601@q!.V>oBcDBr9jFMrp]pWqssaXrq--]rq??cqtU0drqcHfrVZTlnG\"=JcC<$fDg@~>
+JcC<$JcC<$K`CK>qu-Hjp\Xpcr;$<drf@):re^Z2rV#sXqXjXUnacSIrUBXOrpKdQrTsOLs6BRI
+s60LGs5j<7mXtLus,?u9rJ^N2qi(Q7oSih!p!W9Uo6gRbpjE'fr/LW5rf-i9qi:c>O84n;O8b7>
+Oo1=4_Yh=M`;[aPIJeQiIJnWpIfPi.R/NHQR/`TSR/`KRQBh*,rKRDJQ2QsGPlStubPfZac2>le
+ci;AjdJqYpe,RqmO8b4@S,8`USc,/[SbnrPSc##VS,_^Gl1jQ<lgsK@mJQDKn,DhUnb_nVoD\C[
+p&=[ap\Xabq>U6dqu-HjrUBf;s+13$s4@:$~>
+JcC<$JcC<$K`CK>qu-Hjp\Xpcr;$<dr`8kprV#sXqXjXUnacSIrUBXOrpKdQrTsOLs6BRIs60LG
+s5j;]mSs*_!E)kp<<#qu<;ons<qo\f<r^YAddGNW<;T\p<r>tt<<#no<WQ9(qc<5grE0)$qcN_s
+o>:FCrP\]Sr)3PnpJh/ks&Atts&B#!!EE+s<<-)!<rc;!<W?,"=8c1u<VTVf=8u;$b4EgTbl5lb
+cMu5jd/DAldf7ere,`NKqc<Ys!*/nqs&K"u!EE+r;u]hn<W#hp;uc(Tl1jQ<lgsK@mJQDKn,DhU
+nb_nVoD\C[p&=[ap\Xabq>U6dqu-HjrUBf;s+13$s4@:$~>
+JcC<$JcC<$L&^T?qu-Hjq"t!crV??cs0Md4riu[3Yct=7p\"FUqXa:KqXOIPq="=NrpBXMrp0UL
+rTX@Gs6'@Cs-iPKrLEku#e@IU\@8uW\$l+?s0VX/osF,6pX&rdpm1]?rfm5B"1#;@Zi7?3[JRE2
+\,*T7\,!Q6\,Wu:\H'5>]DfV@_=thG_tfPfPlR-LQiG8.bl,cncd:%bcd'eZbfe0-bQ#]faMu3<
+`;.=M`;IUP_u[iqqoS`Xq9/c]s3:Jes3L_lrR(YnriPpts3LShs3Ukqe+;)ee,7YmdJrD.kjn!4
+lM9c>m/?>MmeZDOnG_tUo)A7[o_eC]pAamaq#:*gqYC$er;?N_rdk*#s+14&s*t~>
+JcC<$JcC<$L&^T?qu-Hjq"t!crV??crf@&9re^Z2p\"FUqXa:KqXOIPq="=NrpBXMrp0ULrTX@G
+s6'@Cm=Y@ss,?u9",r.sN;8J0N;nn1N:#$ed/VGeI/&$gHMi-fHM`^"N;eh7Nr+k<OH94!s,[2A
+r/pr>rkS<FpVQpIq0i0ipO3!hrg3>GrL*\Qs-`nSs-EbPQ1U=>Q26^GQ'D0fqo\`XrlkDer6G>g
+s3U_ls3g\'rK.&Kqjd\WrLX%[qjdGPr1*_Ts6'@Eo',o6q<Rb@rU'ROqX=FQrpfpWrq$-]r:U'_
+s7cEcrqZQiq>:-gr;H-aJcC<$JcFC&J,~>
+JcC<$JcC<$L&^T?qu-Hjq"t!crV??cr`8hop\"FUqXa:KqXOIPq="=NrpBXMrp0ULrTX@Gs6'@C
+r)EVnp/Lof!E)kp<<#qu<;ont<qfVf<pe</d/VGi<:3ca;ufqq<WQ9(qc<5grE0)$qcNbtrkS<F
+pVQpIr)3Yp;cE?gqGmMq!EE+u<W?+u<rc;!<W?,"=8c2!<VKPe<rc:uans6VbPo`cc2>leci;Aj
+dJqYo<Vfbq<rl9#qG[GprDir!<;TSo<;BPl<;fbqkPaW8l1aK=lh9]DmJZJLn,DhUnbhtWoD\C[
+p&=[bp\Xabq>U6dqu-HjrUBf;s+13$s4I@%~>
+JcC<$JcC<$L&^W@qu-Hjq"t!crV?<brj2R/riuI,r:U![qt'CLqXOIPp[A+LrU'OLrp0ULrTX@G
+s6'@Cs5iX;rjr*>!4_s9!4Dg5rO)X3qQon&rmCGdp!<N\rg*AFs-3GFoo]Td['[0G['[6KqmQI4
+qmc[8q7-I6s1&$<!4r0ApV6U@rPAHLs-*/@op,NBrlb5`s31tud*U+bcHXSWbKA#OrlPAca2Q$9
+pr!*Lr5JTP!6+]RrQ5#\qof#`rltDes3L_lrmCYGqQBhDqU#8i!RfHgeGReodeqJmk5=E>kjRd3
+lMKoBm/HDNmecJPnGi%Uo)J=\o_eC]pAamaq#:*gqYL*er;?N`rdk*#s+14&s*t~>
+JcC<$JcC<$L&^W@qu-Hjq"t!crV?<bs,[2?repc5re^RGr:KmXo()YIqsa@KrpKaPr9XFKs6BRI
+s60LGrT=.Am=Y:q!0$l7rf$`6q2><5oo/mtp<`KYqp,1gq0VOUqi1N4s,Ho9q2b?5s,[2Ar/pu?
+pV6U@rPAHLs*XNg!.ONfr0R/FrL*\Qs-X"WQ^=#'o9B3=qNLuFpW3<TrQ>#\s31JerQbGhs3Ubm
+!KE-;O8P+=S,/ZTSc,/[SbnrPSc,)VRfMUKkPOK3l1sWAlhKiGmJZJMn,DhVnb_nWoD\C[p&=[b
+p\Xabq>U6equ$BirUKl<s+13$s4I@%~>
+JcC<$JcC<$L&^W@qu-Hjq"t!crV?<br`0##pf.1ar:KmXo()YIqsa@KrpKaPr9XFKs6BRIs60LG
+rT=.Ar`&nrr_ibppJgufs&/bor)N_spJpuhrmCGdp!<N\p/V,lpJq&h!*/nsr`B"un5oTks&])"
+rE&a.qnW0HrPJS4p/CcdqGmJp#$"W%<E3(#rDru"r)Nbt!*B,"rDiSmoiLn/rQ5#\qof#`rltDe
+s3L_lrmCF?!EW:p<;fhu<E/io!*&borD`\n!9X4BqrmM5q<IkCq!A"IrU0ROrp]sXqssdYrq--]
+rq?BdqtU0drqcKgr;?Kknc"+>JcC<$f`-I~>
+JcC<$JcC<$LB$`Aqu-Hjq"t$drV?9a!;HGt!4;^2s0DX/!;69^r:BROqXOFOp@%tJrU'LKs6K[L
+rTX@Gs6'@Cs5a:Bj6W97])T>@\,a#:[K*`7[/IE4[.q!%[/828cMu/cQ2d*KPQ-gDOnk1<OoM`e
+[/[K4[/RK2[f*]4\Giu7\Giu;\Gj#=])K>=^@]2=_"s8jPkLCBQN,2.bP]Tabm_qFd*L%`c-4DS
+b0/!-aooi,`Podj_u.IP`Vd[Na8!aSaoBN]bPo`cc2Gohcd:&<XT#?uY5Q]Dd/VJpdaQ\;eGRen
+deqMjk5+9:kjdp7lMTuDm/HDOmecJPnGi%Vo)A7\o_\=]pAXgaq#:*gqYC$er;?N_rdk*#s+14(
+s*t~>
+JcC<$JcC<$LB$`Aqu-Hjq"t$drV?9a"o"%;O,o7uMuS\6M#d5Ho_e=Qo(qnQnFl>LmeuPMm/QDN
+lM]uIkl9iEk5XNDjQ#TZqi(T7rJUZ6qi0s$qp4TRs3:CerHe<coQp@nr/CZ8qi:H4qiLf<s,d2A
+rfI#koY:@?qL&*er-nHiqNprDrL*\Q#+:jGQ^=#'o9B3=qNUisprNEUs2t8_rlkDerQYSmd*R`2
+NW+t7OSt[GSH#/XT)YAYSGA`RSG\lSk5+9:kjdp7lMTuDm/HDOmecJPnGi%Vo)A7\o_\=]pAXga
+q#:*gqYC$er;?N_rdk*#s+14(s*t~>
+JcC<$JcC<$LB$`Aqu-Hjq"t$drV?9a!V]Xo=8Gqr;ulUho_e=Qo(qnQnFl>LmeuPMm/QDNlM]uI
+kl9iEk5XNGjPs3<;uT\p;tO&c;u]_q;uK\n<W6%n<VTVlcg/mVc2(H=<;ohr<<#tr<rZ1s<<#tq
+<rZ7u<q'2j=T2D"=T)=u^@]2=_"pt);tX)i<W#kt<W5tt<W?+u<rc;!<W?)"=8c1u<VKPf=8Ku4
+aSj6\b5BH^bl>rdc2u>=d.LE@=&i8p<<#tt<WQ3"qbmJoqGmGmr)<OUqWI\<n`fr9r9O1FrpB^Q
+qsXORs7-$Xrq$0^qt:!_rqH?crqZQiq>:-gr;H-aJcC<$JcFI(J,~>
+JcC<$JcC<$L]?iBqu-Hjq"t$drV?<brqHGu!jSr4r3ZL0riuLqrU]^QqXOFOp$_hHrU'LKrp0UL
+r9=7Fs6'@Cs5j:A!9<F8"Ics6]".dLqmQI1s0_j5qm-@0Za9G6p<N?UqTJr)rfmDGs-!)<rK@#>
+s0;d6['[0Grj;^5r3lR5qmcX7qmcX7s1&'="1l+V]_9&:^AG\APP17@Q2HsJPld8pbl#Z^bR)P?
+d*U+ac-4DTrlY8as2kJda2Q$9pr!!I!6+lSrl+`RrQ"cUs2k8_rQG5bs3:Mfri?%"riQ+$!7(Ph
+qp>Aj!RfHgeGRendf%Snjn@j4kP496l29iFlh]uImJcPOn,DhVnbhtXoD\C[p&Fabp\agcq>L0d
+qu-HjrUBf;s+13$s4dR(~>
+JcC<$JcC<$L]?iBqu-Hjq"t$drV?<brqHGRrf6o8s,6l6s7H9]p%%tLqXF1Hr9jONqs==Js6BOH
+s60LGrT=.As5X1?o7Hdj!06r9!0$l7rJ^Z6m>Ubap!*?W!.4Nfpj)LXq2P?3rJg`8plG<6rf@)@
+rK7,A!5/$=r4`'CqL&!bqL/KoIX_*ZpmD#Jqj@DMs-E8@rKRGKPEZ!1rl+`RrQ"cUs2k8_rQG5b
+s3:Mfr/C]:rf?u=!1NkUqjd\WrLX%[qOIAPr1*_Ts5it:q<.P:p$)D>rTj=HrpB^Qr9sXSs7-$X
+s7?6^r:U*`rqH?crqZNhqYU6hr;H-aJcC<$JcFL)J,~>
+JcC<$JcC<$L]?iBqu-Hjq"t$drV?<brqHFor`8kqr`&pirU]^QqXOFOp$_hHrU'LKrp0ULr9=7F
+s6'@Cs5j:A!om3Xr_`_pr)EVpq,I2hs&/kqr`&eqr`8bnq,[47p!*?W!*/horDN\qoMtlir`/eq
+s&](umoKKkr`B#"r`9*4p:^C<qnMu*p/C]bqc3\sr`&nts&T,#s&T"sqc<YqpK%#irl+`RrQ"cU
+s2k8_rQG5bs3:Mfo2Yol<E8cmr`'##<E/fn!*&epr)EVns5it:q<.P:p$)D>rTj=HrpB^Qr9sXS
+s7-$Xs7?6^r:U*`rqH?crqZNhqYU6hr;H-aJcC<$JcFL)J,~>
+JcC<$JcC<$M#ZrCqu-Hjq"t'erV?<brV$KhZ*:I9Y5>U*Zi@?2oCqhQnbVbIn,)POmJ?2Kli-2I
+l2TuIkPaQCjo=E@j7Jf<S,\rWRK'o!\d,dU\@8rU[^H+CrNlR4rj;O.!4)U1qR$.EpWW9Qs-*5@
+oTB!3#a)BtZEpmEZa9Y<rjD[4rjVd7rjMp<\,Ei9[fEr:\H0:Rn\"h6s1\;mp6>TBq3D*)bfp".
+r6,Jlcd:"acHXSWbPoZabQ#]faN)9=`;%7D`:_+J`r=$UaT'B^b5KN`bl>raX8f:#XoGR'cMc)d
+d/VJodaRg;r6tVmr6YN*r8mM3q<.Y=pZ_YArTj@IrpB^Qr9s[TrpfsXrq$0^r:U'_s7cEcs7uWi
+qYU6hr;H-aJcC<$JcFO*J,~>
+JcC<$JcC<$M#ZrCqu-Hjq"t'erV?<brV$<cr/Uc9rf$i7s,-jJp[\4OqXF.GqsOFMqX"4Irp'FG
+s60LGrT=.As5a1>l[o.sqi(T7rJUW5r/LH0!/pZ3qp"lZoZQrSs*=<aqKW*fN;/D3N;\b6NqeY9
+OH9@%rf@)@rK.)An\"h6s1\;VoR6Oapm;#J!13PLrgEYNs-NbOoT]<>s-3MH!0m/qrPniWqoJfZ
+s2t;`s31MfqMkN8rf@)@!goCErL<\Ss.0+[s.0%WpmqARr0m]Ir8mM3q<.Y=pZ_YArTj@IrpB^Q
+r9s[TrpfsXrq$0^r:U'_s7cEcs7uWiqYU6hr;H-aJcC<$JcFO*J,~>
+JcC<$JcC<$M#ZrCqu-Hjq"t'erV?<brV$Ef<``B#<r5ns<<)Rao)%tRnFZ2HmeuPLm/H>MlMToH
+kl9iEk5XQCjSn3=;?0Y_<;KPn;ZB\p<;fhq<qfVj<r:/9bk0*P<<#ks<;0Dh<;fhn<rZ7t<pWoc
+=T;Im]`#PD^A1\!;u'Dh<WH/!<<#tu<rQ2#<r5no<rH%n<qf\g`VmgUa8<sXaoBN^bQ#fdc1>!8
+<<#tq;ufkr<;fhs<;TSo<;BPm<;]YpjS\-1k5"3;kkF??lM^&Gm/HDOmelPRnG_tVo)A7\o_eC]
+pAamaq#C0gqYL*fr;?N_rdk*#s+14*s*t~>
+JcC<$JcC<$M?!&Dqu-Hjq>:-erV?<brqHEc"gG25XfST%[/[Q5[/RE.o)/%TnFZ2HmelJJm/H>M
+lMToGkl9iEk5XQCjSn3>iq&T<ReiHP]DfAA\Gir;[f3Z?[^EKK['[6J[/.*3['I!DZhq-0bjWaM
+b5%4iOnt1>Z2_-0ZN@M?Zi7?2[J[K3\,Ei8[fO"JrODj9!4`!<q7?F7qRlTeoT]0;s2kAcbl#Z^
+bR)S@d*L%`c-4DTrlY8as2kGb`l5mq_uIUM_tq=K_u.IK`W!mWa8F$YaoBN^bPnO<X8f:$XT5O&
+cMu2kd*MX:rm:bpe+D/fe,7Yld/`5)jSJ!/k5+9=kkXKAlMg,Im/HDOmelPRnGi%Vo)J=]o_eC]
+pAambq#:*gqYC$er;?N^rdk*#s+14,s*t~>
+JcC<$JcC<$M?!&Dqu-Hjq>:-erV?<brqHEcrf6c5rf$i7qXXRSqsa7HqsOCLq<\+Hrp'FGrojCF
+rT=.As5a1>s5NHurIb-1qi(T7rJLc:Mi<VmNV\S9NJrdRqMbHun&tLKnTt4^qKi!`s,?`4rf$f8
+qi:K5!K`B@OT(=@OSt=<])'&8]`*?VI.Vj_IeT3/R/`NLR/`TOR/`KRQBh0.!L8oJQ2d*KPP`8q
+`;.CO`rF*WaT'B^b5KKbMi<VkNW5%=NsLi7R$jD4S",uFSH#/YT)YAYSGA`RSG\iVj8A!7jmqR1
+kPXQ>l2BoHlhp,KmJcPOn,MnWnbhtXoDeI\p&=[bp\agcq>U6dqu-HjrU9`:s+13$s5*d+~>
+JcC<$JcC<$M?!&Dqu-Hjq>:-erV?<brqHEc!*Abmr`/gcr:0[Ro^D\Fr9a=Hrp0RKr9=4Es6'@C
+s5j:Aro=%<s&82^qG[Dls&8nrrDiespf7/ks30rTpr`8/rDikuqGmMorDWYpq,RJsqGurar)`r#
+qRZO8qRlf)qbm&bq,@>orDj#%<`W6";ufqt<rQ2#<r5no<rQ+p<WQ9&q,dI2r5AEMrl4uYr5eo[
+s2t;`r`/VlrD`esqc*Sos&Aqss&Ako!*&epr)ESm!9="<qW7;1qWIe?q<@kCrp0LKrpB^Qr9s[T
+s7-$Xs7?9_r:U'_s7cHdrqZQiq>:-gr;H*`JcC<$JcFU,J,~>
+JcC<$JcC<$M?!&Dr;HQkq>:-erV?<brqHEc#5,1&XK8J&qm6@2rj;[2rpp$Xqsa:IqsO@Kq<\(G
+rp'CFs60LGr9"%@s5a1>s5O(;lBqge]=YYc\brr9[0*eD['T\;q6U+,s0MU0r6+lXprWKUrf[;D
+r0$W5q2kT\!4)U1!jo;?rj;X3rO2^7r4)^7!P#W<\G`l:\Gj#=](NW3])K;AP4t15Pl$aGQN##-
+bKTn-rlbbnbg+P]cd0n]bfn90ap6,4b/q`E`PhbnrkeNLr5ABIr58NPqo/TTrl=uYs2b;abPnL?
+WqrdrXT$QGcMu5dcihbEdF-MBe,[tneGRendeqMij8.j4jn.^5kPaW@l2KuIlhg&KmJcPPn,DhV
+nbr%XoDeI\p&Facp\Xabq>U6equ$BirU'T8s+13$s5O'/~>
+JcC<$JcC<$M?!&Dr;HQkq>:-erV?<brqHEc!qhS6rf-r:qi1T6repdHrUKdSp$_eGqsF4GrTjIJ
+qs".Es6'=Bs5j:Aro=%<s5EO$s+:3%s+:91#`an(N/WaUN/[[mrf$f8pl,62qMb?qpr`BRrQ+MT
+r-SBgq0Dsu!KE-9NW4t9NVeb6NrY4<O8b7>O8b7@OnH9_])K>?IJS?[IK+cjQi<BOQhm'LRJ`HO
+QN<D;p65TCPl6mIPQ6pB_Yh=N`;@OR`r=$WaT'?_b00dBrf$]5s,R)G".>UIS+rNRSc,/[SbnrQ
+Sc##US,;7BjS@p0k5=E@kkaQClMg,Hm/QJPmeuVRnGi%Wo)A7\o_eC^pAamaq#:*gqYL*er;?N\
+rdk*#s+140s*t~>
+JcC<$JcC<$M?!&Dr;HQkq>:-erV?<brqHEc!;64i!*/epr`/sgrUKdSp$_eGqsF4GrTjIJqs".E
+s6'=Bs5j:Aro=%<s5E-?q,78kr_rhrr)N_spf7/kr6+lXprWKUqGdDnpf@;mr)EYorDi>flrX-f
+!*Aj(r4;m>qbd8hmo06cs&K"u!`rE'r`&ntr`8u!!*8tsqc<\rq,RMt<r,nm_Yh=N`;@OR`r=$W
+aT'?_b00Z^pf@;ls&Jnpr_ierrDiksqbmJoqGmGmr)<LQqW.J6o]H)7rTO+Brp'LKqs=@MrpKaR
+rp]sXrUTsZs7H6^s7ZKeqtU0drqcKgr;?KkmJ_\:JcC<$ir=N~>
+JcC<$JcC<$MZ</Er;HQkq>:-erqZEcrqHBbs7HZ"XK/A#Wi<A3r3QO5[']h=rpfsVp@%nHqsF.E
+r9O@Iqs"+Ds6'=Bs5j:Aro=%<s5<t9nX96@"IZj4]=\'Qr3u^6rNlR2r3Z7*s0D[2rNuFCn&YOL
+qN:]=nr`g2!4)U/!4)U1qR$70rO2^7r4)X5rj_p9!4`$=!4qs8pUU<drf[/Bns'';rQ55cbfe0.
+bPo]mbKS8Xd*L%`bfn90b5]Whb/qcH`l5mq_u7IK_u@UN_>(nH_u@UQ`W!mWa8X-aaeku6W2Zcq
+WqrdocN;D<chbuidF-JBe,@eqe,.Yme,7Ymd/hVRp#Gl/qW7J6rTF.Cqs"+Frp0LKs6]jSr9s[T
+s7-$Xs7?9_r:U*`rqH?crqZQiqYU3gqu,j[JcC<$JcFm4J,~>
+JcC<$JcC<$MZ</Er;HQkq>:-erqZEcrqHBbs7QDOqMb<2s,?r8rpfsVp@%nHqsF.Er9O@Iqs"+D
+s6'=Bs5j:Aro=%<s5<t9nUpakrdk'.!07#:rf%)?Mi3IMMuJ\6NVJJ4Mu/J0am[=Na7+EQHi/3e
+GlWj'MueouqMkN6rJg]7r/Ui<r/^i=rK$r>s,m)dpUU3Mqg@dZp6YcGrKm2ErKdMLp65TCPl6mI
+Pkr5k_Z%IP`;R[S`rF*Ya8j?ZMuJ\3NW#4HR@9V7q4.JUr1<qZqjdJQr1*\S!93\3q;hD6pZDG;
+rTO.Crp'LKr9XINs6fgRs7$'Yr:9mZs7H6^s7ZHdr:p9erqcKgr;?Hjli)J8JcC<$k5Tr~>
+JcC<$JcC<$MZ</Er;HQkq>:-erqZEcrqHBbs7Q:js&T5%<V]\p<W;OenFl>JmecDGm/62KlMKiF
+kl9iDk5XQCjSn3>ir@s;i:0eC;uBSr;c6Nm;[69#;GpFl<)icqs&K,$pf72lqT83Is2Y"9!*/kr
+r)E_rrDiYm!)reqn5emWrE'&$ppg(/s%rborDEMkm8F'e<E9$!s&T5%<W5tt<W6%t=8Ptu<`f3"
+r`/bp!EW>!=8Kc._Z%IP`;R[S`rF*Ya8j?]<r5nn<r5kr<Vobo;ZKeq<W?%q;ZKen<W#ho;ZPhM
+j8%d4jnIp9kPaWAl2KuIlhp,LmJlVPn,MnWnbhtXoDeI\p&Fabp\agcq>U6equ$BhrTjH6s+13$
+s5s?3~>
+JcC<$JcC<$MuW8Fr;HQkq>:-erqZEcrqHEcr:U)j"feQ#W4',2ZiIN3[/TRhn,2VNmIooFli$,F
+l2KoHkPXKBjo=E?j8\-=iVqd-RJE6KRK'hs])T>=[fa(G['Tb=!42X2pp:"+s0M^3ouQsLqo7KT
+s0;^2ZEjJ9qR$4/rjMg8r4)U4s1&';!4`!<qmQ@1r4)]es,m2Bm?@UmrQ>,_!6Y;arlb_mbg"J\
+cd'eZbfg".s2tVhaiVWD`Ph_mr5/?K!6"iNqnW0Hqni?Ms2=iSs2G5_aJG`1VZ*IoW2]crr2]V=
+qToAmdaHUnrRCborRCbor6kMj!RTg&iq)4,jS\-8k5FKBkkjWElMg,Im/QJQmeuVSnG_tVo)J=]
+o_eC^pAXgaq#:*gqYL*er;6HVrdk*#s+148s*t~>
+JcC<$JcC<$MuW8Fr;HQkq>:-erqZEcrqHEcr:TrG!/pi8r/LW5rp][Nr9jILp?_bDrTa7DrojCF
+r9"%@s5a.=s5O(;ro!O'rdt-#!.t#ts,?r:rf$i9!K;s9M?&S5N;eh3N;nh6N:k9fa8<jVHMr3_
+HM`'_HN/s,N/`gWqMkN6rJg]7r/^l<r/^l>rK$r>!0R/eqR?C4rI"Wnqg@dZ!1*>Frg<YNopG]E
+!1!8Br0@;HrP/6FrPABJrkncSr5J]U!QW:XMtr>3NVo.GR@9V7q4.JUrLX%[qOIDQr1*YR!9*h7
+oAf].r8mb:rTF1Dqs".Grp0LKs6]jSrU9dUrpfsXs7?9_r:U*`rqH?crqZQiqYU3gqu,aXJcC<$
+JcG$8J,~>
+JcC<$JcC<$MuW8Fr;HQkq>:-erqZEcrqHEcr:U"is&K,"pK%8nrp][Nr9jILp?_bDrTa7DrojCF
+r9"%@s5a.=s5O(;ro!EJq,@2js&8qss&/kqs&Anpr`&hrs&K/%<qo\n<qXQ0a8<mQ<;KVc<;]_r
+<;]bc<pWod=SoQ'\,<c7;=mc^;uK\p;Zg*%<E9$!s&T5%<W5tt<W6%t=8Ptu<`f3"r`/bpqH*X1
+qnW0Hqni?Ms2=iSs2G)[aST$8<W#no<<#tq<;fbq<<#tu<;KMn<;T\n<;TSoiVVX+j8.j7jn\';
+kPj]Bl2U&Jlhp,LmJlVQn,MnVnbr%YoDeI\p&Fabp\agcq>U6equ$BhrTO63s+13$s6BW7~>
+JcC<$JcC<$N;rAGqu-Kkq>:-erqZEcrqHEcqt1#jWMofq"1>SE[Ipp(n,2VNmIooEli$,El2KoG
+kPXKBjo=E?j8\-=iVqd8htEK7R/NHPQiak0\c02?\-TRP[^W`R['R+<ZiIH2[.q!-ZMh-,a8*aJ
+`TrZcOS=n:Z2q59rNl@-rO)X5s0qp9q7$C6rjMm;rji':o!\LX!0I/As-!DGm?@Xlao9H]b5f]a
+bPo]ebKS92cNMP<bfn90b5]Wgb/qcH`Ph\lrPJEK!5A0ArP8EKr5/KOs2=lT!QLr7V>R1rVl6Pn
+WiE,#d.bl_cihbEdaQ\DeGI_oeGRendf%Pqd*LY.qr.D2o],l1rT3n<roa:Er9=4Gs6KULs6]jS
+rU9dUs7-'Ys7?9_r:U*`rqH?crqZQiqYU3gqu,^WJcC<$JcG*:J,~>
+JcC<$JcC<$N;rAGqu-Kkq>:-erqZEcrqHEcqt9lGrep`6rJg]5qsXINqsF+Dr9O=Hq<@nBroa4A
+s5j:ArT!q;s5Et8s53X)!.s`lrf$i9rf$i9!K;s9M?&S5N;eh3N;nh7N;LZk`q@:NHMi-dHMDjZ
+HN&m)N/dgsqi1W7rJg`8r/^f:rK$u?rK$r>s0_F+r-[US!L8uEQiEHMQhHgFQhH[DPlR'JPl[,`
+p:pRArk\NLs24lTrP\cVregQ1qMYKCQ^@Z<".>UIS,&TSSc,/[SbnrQSc##URf]&:i;;L0iq2:/
+jSe3:k5OQCkks]ElMp2Jm/QJQmeuVSnGi%Wo)J=]o_eC^pAXgaq#:*gqYL*er;6HUrdk*#s+14:
+s*t~>
+JcC<$JcC<$N;rAGqu-Kkq>:-erqZEcrqHEcqt9tjrDrqup/_/mqsXINqsF+Dr9O=Hq<@nBroa4A
+s5j:ArT!q;s5Et8s53WPr`&_mpf.8ls&9"t;Z9Sp<;TVo<;fhs<WQ9&pf7;oqoANPou5oipf6c`
+lrX0gs0_F+r)*2dr)*GkrDW\p%TQJ-=BAO'<``=&='&F&r`&ntr`8u!qc*Yt=8c2!<V]\q<rc;"
+<rfu.^\ttI_>M1M_uI[R`;mpQ<r5ns<qoYo<Vobo;u9Pk;ZKen<W#hn;ubeQiVMR+j8A!:jne-=
+kPj]Cl2KuJlhp,LmJlVQn,MnWnbr%YoDeI\p&Fabp\agcq>U6equ$BhrTF02s+13$s6Tc9~>
+JcC<$JcC<$NW8JHqu-Kkq>:-erqZHdrqHEcqt:!]!36$tri5t*oX+YerU0UNp?__Cr9F+BrTO7D
+r9"%@roF%<s5O(;ro!h6s5*O<p6krJrg3Yrr42j;rjDp<[^EL@ZN@M?Zi7?,Zi790ZN/#9`VRLQ
+_s3B^OSP"=Z2V$0Z*O>7qm?7.s0hp9rOD[4s1&';!k>eOpU'h*qN(Q9!g8b2mZ[dla3">'s2tem
+bK@uNbKS2RbK\?3cNMP<bfn90b5]Wgb/q`F`Ph\lr5&KP_Z%IM^&5V@^])%K_>M1M_Z@]prM9Ii
+r20Ll#,nGuWN+=lpWr``s3^kps3pqrq9o>nr6kMjrQtSjq;D,.qVq80rT*q=qr[n@roj=Frp'OL
+rTsROs6fjSs7$'YrUTsZs7H9_s7ZHdr:p9erqcKgr;?Hjk5Kr3JcC<$mf.e~>
+JcC<$JcC<$NW8JHqu-Kkq>:-erqZHdrqHEcqt:!]rf$`4r/CW7qi(RDrU0UNp?__Cr9F+BrTO7D
+r9"%@roF%<s5O(;ro!h6s5*X)mXb=qrf-l8s,@5AMi3IMMi7Rnrf-]3repc7!64TKqSWBOrHe*_
+mWnklrf$r;NW+t8N<"q8NW5(=Nr4t:Nr>%=OSt7?OS?-Z[JP@DIK"]gI0,XuQM-[FR/30DR/WEP
+QM$ICQ'D95qn;pAqS3$Fs2"WMs2+lU`VYPiMu/J5R/WHOQiibFS"'5Ds.0+[s.0%WrgieRrL<hU
+q;D,.qVq80rT*q=qr[n@roj=Frp'OLrTsROs6fjSs7$'YrUTsZs7H9_s7ZHdr:p9erqcKgr;?Hj
+k5Kr3JcC<$mf.e~>
+JcC<$JcC<$NW8JHqu-Kkq>:-erqZHdrqHEcqt:!]!*B,"s&T2#r)Netqc<\rs6opSr9a4Er9O:G
+q<@kAroa4As5j7@rT!q;s5Et8s53k5qc3)as&K(us&8qs"]J;s;c?Zm;ZKep<W?)#='#&qs&K->
+o#:ID!5n;*s&8bnnQ#$YlW4'gpU'h*ohkWbq,./ir_ierr`/r"s&BA+=&r@'=&r=#<;ons<rH+s
+<<6-%rDrntpf7Ds<rQ1t^&5V@^])%K_>M1M_Z@]poiD)mrDrYls&JqqrDWSmqc!Mo!*/bmqc!=K
+qVh;1pZ)55rT3q=roa:ErTX=Hs6KXMs6]jSrU9dUs7-'Yrq$0^rUp3arqH?crqZQiqYU3gqu,[V
+JcC<$JcG0<J,~>
+JcC<$JcC<$O8nYIr;HQkq>:-erqZHdrqHEcqt9s\!i`3"rMfe(pU'n,s6fjQp[%hDqs*t@roj=D
+r9""?s5a+<s5O(;ro!h6s5!b3q3^lD!go=@r0I>nrOMp:%^rdR[^<EJZEpmEZa7$GpTsh(!42XC
+qS`6Jqni&hrK-r>pQ597s0;L-rNlC.qmHF3s0qs:q7$C6s0r$<!4h^-!4;BZ"-AY-P5^[9PQJeC
+aSj9]b65u2b0%p,bl>iebg-46#0tK;bfe/OrlYJfaiMNB`;ION_?7]m_o)8^rOr3EqnN0Hs2"ZN
+!5nf2rM9Cg!2fXk!iXJmpWr]_!7Ceos3pqrq:#8ir6bGh!71Z%o\fW*qr7G3rT*t>qr[qAroj=F
+rp'OLrTsROs6fjSs7$'YrUU![s7H9_s7ZHdr:p9erqcKgr;?HjjSj`1JcC<$nc++~>
+JcC<$JcC<$O8nYIr;HQkq>:-erqZHdrqHEcqt9s\rf$f6s,$f7o8N_;rU'@Gr9O7Fq!%eArTF+@
+roO1@r8[h:s5Et8s53k5!8[R)!.juspjr?nr/CZ8r/:l?N/NUOMMmDkMu\k3N;eb8N;^`l`;7CK
+_Z+rWHi89bH1lRaN;S\8Nr"_8N;S\8O8b1;O8P%:NrY:?NrY:5ZN.B2I.;X`IeJ0kPa.R.Qi<BK
+QhHgHQN<D;p65ZEPa.O/]`#PC^AG\F_#M7L_>qLHMZ/P4N;o:CQNW\DR[]fASH#/YT)YAYSH#/S
+SG\iVRf;4:i;;L1iq_X5jSn9<k5XWDkl'cFlMp2Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#:*g
+qYL*er;6HRrdk*#s+14?s*t~>
+JcC<$JcC<$O8nYIr;HQkq>:-erqZHdrqHEcqt9s\rDro!!E3"q<rQ+u<rQ,!meuPIm/62HlM0WC
+kl']Bk5OKBjS\'<irA!:i;_^7h>lC0<Us,`<W?"t<!?2u;H$LnqbmJoqc*\u='#&q!*9';qS`6J
+qni&+pf%2llrEISlrWeb!jkj'o25Ncq,./irDW\pr`BJ.<E3($<`W:&<W5tr<W?+u<rc;"<<-)!
+=8c2"<VTSs=&rC(pq6R=rkA9Es1nZNrPAQPr`/JhpJh/mqGdDlqc*Gkoi1fernmA+qr.G3q;_G7
+roO%>s6'CFrTX=Hs6KXMs6]jSrU9dUs7-'Ys7?9_rUp3arqH?crqZQiqYU3gqu,UTJcC<$JcG9?
+J,~>
+JcC<$JcC<$PQ1"Kqu-Hjq>:0frV??crqHHdqt9s\s7?&crO)[4s0_a2rj;anq!@qEr9F%@rTO4C
+qr[n>s5a+<s5O(;rS[_5!8d\1qj@,Gs-WhQqN_5n\[oBN\Giu;[0*kF[Bok<"LGJAZaBG4riuO1
+qnr$Brk\DmpQ5<8pQ5?9rilR2Z*L\4Zi%3,[K!]7\,Wu5\,Wu<[fO"Lr3?+(s0M3U!0I2Bs-!AF
+plkot_o0R9rQ>/`rQ5,`rlkDc"jG9;cd0l8bl>idb5TQfb/q`F`l.blrPAZS_SWn]]D9,=^&GbE
+^]2+L_#V@OUAgqeV#@.iVZ!Fkd.bl_ciDJke,@ele,7YldJV>kci)_tht5k)iVhd4j8S-=jo"9?
+kPscEl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\agcq>U6equ$BhrT*s/s+13$s762?~>
+JcC<$JcC<$PQ1"Kqu-Hjq>:0frV??crqHHdqt9s\s765LqMYB2s,6N.!:BRJr9O:GpZ_Y?rTF(?
+roO1@r8[h:s5Eq7s5*h5rS@L*s+0Hcs,6i7s,Hr8"-&7uMuJS6Mt2i+MZA_5_t1bE_>/HUHLlFV
+HN&m%NW+t1NW5(=Nr>%9Nr>"=OSt7<Z21d+Zhf(<I/nZiI0>[qPEhF,Qi<BPQMd'MR$[T8s-EbP
+Q1gFEQ'@NEqn)[:rk8<FrP/BJs1nfSLl$uaMZ8P5MZ/M6N;].AQNW\DR[]fBSH#/XT)YAYSH#/S
+SG\iVRf2+?ht5k)iVhd4j8S-=jo"9?kPscEl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\agc
+q>U6equ$BhrT*s/s+13$s762?~>
+JcC<$JcC<$PQ1"Kqu-Hjq>:0frV??crqHHdqt9s\s7?7kqc<es<Vohq<W?,!<<2F]m/62IlM'QA
+kl']Ak5OKBjS\'<irA!9i;_[7hYl:1<Uj&\<W?"t<!?2u;H$LnqbmJoqc*f#='&C%<r,hn_t1bE
+_>.($;ZKeh<<-(s<UEiS=8]?"ZN%64;c6Na;#jMi;?'Pk;u]qu=:&&/<E<1%<``=%r`&hrs&T,#
+s&T(u!*9)#rDrqupf7Ju<`Zg/]D9,=^&GbE^]2+L_#V@L<V0>b<<#tq<;fbl<;TVe<;TVmhYZ4&
+i;DR4iqh^7jSn9=k5OQDkl'cGlMp2Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#:*gqYL*er;6HR
+rdk*#s+14@s*t~>
+JcC<$JcC<$Q2g1Lqu-Hjq>:0frV??cs7cNdqt:!]rpp-\rMfaqr3ZO3rO)O0rjD^kr9O:Gq!%_?
+rTF%>roO.?rT!n:s5Eq7s5*h5rS7M0g\mN6R/r\Ap6Gij\@K2^rO<-B[^NTO[^ENLriuR2[.:O)
+ZEpn6_YV+F^]BOXrK-u?jcBJHrilR2Z*CV4Zhq-+[K!]7\,Wu5\,Nl<\%24:riu6Zr/U]9rK.#@
+!0[8DrfdT%_Sa@5ao0?^bP]KabKS30b6?,8cd0n]rlkDc!6Y;a"j4p-a2Z'p_u%=K\bs&;]DT>@
+^&PhF^Au(HUAgqeV#@.iVZ3OodJ_GdchbugdJhVmeG.MjdeqMkd/VGih>?(*htQ(-iVqj6j8S-=
+jo+?@kPscEl2U&Kli$2Mm/ZSQn,MnWnbr%YoDeI]p&Fabp\agcq>U6equ$BhrT!m.s+13$s7H>A~>
+JcC<$JcC<$Q2g1Lqu-Hjq>:0frV??cs7cNdqt:!]rpp0]N;eb6N;nh9M?&S,Mu\k9m/62IlM0WA
+kl']@k5OKAjSe-<irA!9i;_[7hYl74gtRC2k^W_nMi7Oms,Hr8"-&7uMuJS6Mt)`-Mi<Vk_YV+F
+_#&HVHi&-\H22dbN;\b8NqA>2O8k7<O8=n8NrkE(O7ogWZ1NG>IK+]pIJS?jIK,E3P*;/rp6YfH
+!13\Nrg3YPs-NPKs-EbPQ1U==\bs&;]DT>@^&PhF^Au(JM#W>3M?&M4MZ8P5L]`KkMi7M#r0IPR
+R@9V7q4.GTrgs.\qOISVpRM2Os-ilAqqh2,pYc#/ro3h8roF(?rT=+Bs60FGs6BXMrTsRO!:KgS
+s7$'YrUU![s7H9_s7ZHdr:p9erqcKgr;?Hjj8OW0JcC<$o`'F~>
+JcC<$JcC<$Q2g1Lqu-Hjq>:0frV??cs7cNdqt:!]rpp-\rE&r"s&/qt<W#nr<W?+u<W2:^lhp&C
+l29cDkPF??jo4?>j8S'<iVh^7hZ2O3h#Z<cmo8mY#uji%<)Z[m;c?Zm;ZKeo<<ZE)=&i7$qGmC/
+qSE$D!E2np;uK\f;u]hg<<-(s<UEiT=8&ltZ2IW!;X[K\;Z9Vo=8l;.<`N.#='&F(<`T)tr`&r!
+rE'#"rD`hur`B&!s&Jbnr42a:rO`!?rk8?GrP&?Jq,R)g!*/\ks&Jqqr)<MmqG[&dqc!FKqqh2,
+pYc#/ro3h8roF(?rT=+Bs60FGs6BXMrTsRO!:KgSs7$'YrUU![s7H9_s7ZHdr:p9erqcKgr;?Hj
+j8OW0JcC<$o`'F~>
+JcC<$JcC<$RK)ONqYg?iq>:0frqZHdrqHEcr:U']s7?6\s/Gjp"1>MD[JmN5[e@--li$,Cl2BiD
+kPF?>jo=E=j8\-=iVh^7huDR3h#cBdg]!T;RJiNQQh6RJQ+"03]"5EM\,Wo9[0!eDZi763Za@+0
+Zi7f;_"PMENfT7qOSt71OSk1>Yl:m0ZE^[?r3Q:-q6^42rO2d:pp^43pTOS#!06r;p5]$2rK%&B
+P5CIC^]_Kk`Q-+!aoKW_ao]c1bl5chc-FY]cHZ=3!R&Xbb65u/a2Z*p_u.CM\G<]6])TD?]`5\E
+^A=T(U&UheU].(fV$!TmdF%p>pWr]_!7L_m!7^hnr6kMjr6YJip"fN%r87>.rSdb8r8[e;s5j1@
+s6'FGrTOCKlg+N9s6]jSrpTmVs7-'Ys7?9_rUp3arqH?crqZQiq>:*fqu,FOJcC<$JcGTHJ,~>
+JcC<$JcC<$RK)ONqYg?iq>:0frqZHdrqHEcr:U']s7?6\s,6`4regi8Mi77e!0-sCrTa.ArTO1B
+qW@b<s5a(;s5O(;rS[_5s5*_1"5MYcJ`VF]MtW,0N<+urre^]6mu77^qS;g>oQoeJs*=['rJ^]7
+s,Q`2"HJP(NfO$uqMtH6pTOS#!.4Tjr-SHkq0hj^rfI;HPa.O-QiEESQ^3s9QiEHOQi!-OQ^3p/
+Pl8,f\c',>]DT>A^&Gb@M#N81M?&M4L]N?jqj@;J"IPUFS"'5DrLNt[s.0%Ws./nSr1!_Tp"fN%
+r87>.rSdb8r8[e;s5j1@s6'FGrTOCKlg+N9s6]jSrpTmVs7-'Ys7?9_rUp3arqH?crqZQiq>:*f
+qu,FOJcC<$JcGTHJ,~>
+JcC<$JcC<$RK)ONqYg?iq>:0frqZHdrqHEcr:U']s7?6\s&]/$r`0,!;cHcp<Wc?$<)rou!``3!
+rTjFIpZ_Y?r9*q=rT4(?qr@_9s5Eq7s53k5rS7P1gY;L&qbmJooMtlis&B2$;c?Xpr_`er<)i`n
+qGdMsrDreqrk\HHp:gZ+;H!'arD`Smqc*Mo!*8tsm8j-d!*8bopTOS#!)i\mpJUW\qbmAor`B5&
+<EB*#"'/K(<W,ns<W?,"<s)K)<`]0!!*9)#rDinup/_.%q76I8s1A3As1SEGs&StroiD)moi1rk
+qc*GkrD`YmrD`>dp"fN%r87>.rSdb8r8[e;s5j1@s6'FGrTOCKlg+N9s6]jSrpTmVs7-'Ys7?9_
+rUp3arqH?crqZQiq>:*fqu,FOJcC<$JcGTHJ,~>
+JcC<$JcC<$SH%dOqu-Hjq"t'erqZHdrqHEcr:U']s7?3[qPsRprNug;[C!<L[eI3/lM0WAkl']?
+k5FE@jSS!;ir7p8i;_^7hYu@2h#H./g&RN;RJiKQQh6UBPm4Y)\%&uZ\G`o:[f3W8[C!:>Z3%A>
+[.CU([._92^AknGN<G9&O-#IsO84n8O84e:YH[o/qm6=0!42[3q6^42rO2d:pp^43qQ9_!m>h()
+rf@2DP*5a,%)9Tn_8O=5b0%iKb00_*s31Gb"jP?<cd'f6bR)J8bKJ&MaN)<>qSW<Ls0hg6rODa8
+rjr-Ar4Mm#r1O1dUSI^_r6bMjpWr``!R]?ce,7YldJV>mcd(;Bh"KS%hYl@.i;V^7ir%j:jT"?>
+k5XTEkl'cGlMp2Lm/QJQmeuSUnF?&Io)J=]o_nI_pAXgaq#:*gqYC$dr;-BIrdk*#s+14Ms*t~>
+JcC<$JcC<$SH%dOqu-Hjq"t'erqZHdrqHEcr:U']s7?3[qMbH4!/gZ3oo&m1rp':Cr94+Bq<%Y;
+roEt:s5O%:rS[_5s5*b2s4mY/s4[L'q1%g_qMY--!f`.sre^f9N/W\eMu\k2^\Y\E^%m!5H2ig%
+N;eh9NqA;6NfT6]Nr4t6Nr4t7Xo5EoHiJKiIIhjbOTUf3Q'V-1!LT5QQMm0MR/E<JQiWM<p6>Tc
+qmZO6qml^;s1A3As+gN.r.b?0M2D4h!f;_hq3_)H"IPUFR[a,CrLNt[s.0%Ws./nSr1!_T!8ID+
+p>,Z'rSRJ0ro*k9r8[h<s5j1@s5sCGrTX@Is6K[Ns6]jSrU0gWnaZSKs7?9_rUp3arqH?crqZQi
+q>:*fqYf4KJcC<$JcGcMJ,~>
+JcC<$JcC<$SH%dOqu-Hjq"t'erqZHdrqHEcr:U']s7?3[r`K2%s&T/""Ar&q<)rfrs&8tur`0)#
+<)ik^q!%_?rTF"=rT4%>qr@_9ro*h6s53k5rn[V0s4dS-qGdAks&APh!)rkrs&B%ur_j##;c6Ll
+;cNWmq,R>nr`&r!p:pI<s1SA.s&/kqr)3Gk!*&\moi(um<`]0!lrO$cs&ShpqQ9_!!)rGdr_rGd
+r)3Gos&]A)<`N3"<s)K)<`T)ts&K)"s&T5%=8l5(<E<+#='+rns0hg6rODa8rjr-Ar4N&0rDrhr
+pK%2loi(okqc*GkrD`Yms&AJd!8ID+p>,Z'rSRJ0ro*k9r8[h<s5j1@s5sCGrTX@Is6K[Ns6]jS
+rU0gWnaZSKs7?9_rUp3arqH?crqZQiq>:*fqYf4KJcC<$JcGcMJ,~>
+JcC<$JcC<$TE"$Pqu-Hjq"t'erqZHdrqHEcr:U*^rq$'Yr2Taq%&g)3[^ENO[C!<K[^Pt=qW[tB
+rTEt<rT4%>qW%V8ro*h6s53k5rS@M/s4dP,!87@<s-WbOo9TEAr075h!OfK:\Gs&;[K*`7ZiIN5
+Zi@?#ZN.c;^AGV?]_mchNr+n:Nr>%<OSFn6NrP(?Yck;0Yl_/7ZMh-/ZiIH3[.q'#\,No9XS]-c
+Nr+n:OT1ICP5^[F^]2(R_SjI8b0%j&ao]c1bl,]bc2Gofc2Prbb6?&1aN)<>q833Lp9st0rj_m:
+rjr-ApnIYZ!huHcrMBA<!7:JdqTo8jddbfadf7_od/;5icMuVqg\]e$h>Q4/htu@3iVqj8j8\3>
+jo+<CkNM..l2U#Kli$2Mm/ZSQn,MnWnc&+ZoDeI]p&=[bp\agcq>U6dqtp<frS.=&s+13%s*t~>
+JcC<$JcC<$TE"$Pqu-Hjq"t'erqZHdrqHEcr:U*^rq$'Yr/CQ3!/gW2oo/b3rTO4Cpu_P:roEq9
+s5O%:rS[_5s5*_1s4mY/rn7A*r.+Ehpji?nqMY--!0-u9s,-`4oo&mcqnDs@qRlfRpNca_l$<8d
+rf$i9rf6W1"HJP(NfO(!pQ#66rN,munTt7`pjMg_rK.5GPEhE!p6PfIQi<<LQiEHMQi*3OQBh3/
+p9st0rj_m:rjr-Ar.b9.rJ1E-reCQ2M2D4h!/^N=r0IPRR@0M5pmh;Rrgj+\qjd\WpRM/Ns-iuA
+qqM#'ptbo*rSRM1s5Et:rT!q=roO+@!pAe2rTX@I!:0UMs6TgSrU9dUs7-*Zs7?9_rUp0`s7cHd
+rqZQiq>:'eqYf1JJcC<$K)^?~>
+JcC<$JcC<$TE"$Pqu-Hjq"t'erqZHdrqHEcr:U*^rq$'Ys&]2#r)Ent;H$Lo<W,r#<E)ptr`0)#
+<)i_YrTO4Cpu_P:roEq9s5O%:rS[_5s5*_1s4mY/rn7A*r)ESmqc*8hr_rkrr`&nt!*&qr##nN!
+;H$Lnqc!Moqc3Vr!EW>$<<0f2^AGV?]E1u.;>*of;uK\p<W?%u<VBDl;Zp*"<E</u<UEic=8l7p
+=8f5tXT2;i;Z0Pm;Ya2f;?0br=8l;(=&i7$r`9/%=&o/ts&K)"s&T5%=8Q%t=7]Jd[f3c8\GWo:
+])TD?<W,tt<VKPj<UWoa;uK\m;u]hd;ubSKg\]e$h>Q4/htu@3iVqj8j8\3>jo+<CkNM..l2U#K
+li$2Mm/ZSQn,MnWnc&+ZoDeI]p&=[bp\agcq>U6dqtp<frS.=&s+13%s*t~>
+JcC<$JcC<$U&X3QqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7-&fri$=)Vl$l0[^NQN[^<ELosOkb
+rTO4Cq<%V:roEq9ro3q9r8@V4s5*_1s4dV/rRq>+f\$1in!=!=qNM,j['d?OrjVs;rjMj7rNuR1
+s0;d6ZEpmCqQg1-rj)[5]tO*OrO_ocs,I)?q2YH8!fi>%pQ,<6s,I&;s0)O-Yl1j,YQ2!-Zi7<3
+Zi7?2[/dZ6[/dZ-\,Nl;Wqi^]Nq\V7OT1IBP5`3%^qmn+`lQ<Fanj-]bKS3/b5ffdc2c,fbl#Wf
+b/q`F`l.em!lW!or3ZF1qR6C4s1&!;oqM>W"JVZeV5<t7pWr]_!7C;brR1\ms3U\irm(>nqqM))
+q;)#+rnmY3ro*n:rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3arqH?crqZQi
+q"t!eq>K%HJcC<$L&ZZ~>
+JcC<$JcC<$U&X3QqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7-&Hr/:Q3qMY$*!KH@Bkl']?k5=??
+jSIp9ir7p7i;_^7hYl:1g]6+-g&fs[f`$E`J,"rsN;eb8MYrD/Mu\e8Muo!P^%K&:]D$UHGj9SQ
+MuJ\7NW5%2NW+t7O8+b7NrZ3UX7(E6I/A?cI/K*0P*;/rQM-XGR$[f<rg3YPq3V&I!LB#JPQI,7
+Pl.oe[JI?2\,Wu9\bCmWLAlr2Ll$tGMYNS:QNW\DR@9W@SG\rVScG>ZSH#/TSG\lUReb\7g\oq'
+h>Q40hu)F3iW%p9j8\3?jo+?AkPscFl2U&Kli-8NmJlVRn,MnWnc&+ZoDeI]p&Fabp\agcq>U6c
+qu$BfrS%7%s+13(s*t~>
+JcC<$JcC<$U&X3QqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7-%gr)F#%;Gg=i;cHasr`08(<)cjt
+<`W6";ul1]kl']?k5=??jSIp9ir7p7i;_^7hYl:1g]6+-g&fs[f]uN:<Vf\p;u]hr<W#eq;ZBYq
+<;TVo<;T\n<rZ/$<kZ3>]`#GB;t<id;sRBe;cQgs<E</u<V'5k=8Z+t=8c1q<rf8rWrQ)f;Z0Pm
+;Ys>k;Z9Vp;?0bq=8l;(=&i7$r)Wkur)E\rs&K,$pf@AqpJq>s<`].*rO)L1rjVp;r42W'rDrqu
+pf@/inPo?`rD`Yms&AJdq:b`#rS75)rSIP2r8@S5s5O";s5a4ArT=.Cs60IHs6BXMrp9[Ps6fmT
+s7$'Yrpp*\s7H9_s7ZHdr:p9erqcEer;?BhgAZ['JcCH(J,~>
+JcC<$JcC<$U]9BRqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7$*Yr2KdsVu<Ll[K!Z<[C3HM[Iq!,
+kP=9=jo+9:j8J!;iVVR5huDR3h>c:1g\oh0g"=s/Q^@0,!1!;Cs0_m6s0hm8!4Mg5s0D^4rj2R/
+pp9t*s0M[:r4Dj;rjhiaq2YH6q2Y<4s,R,=rf$l]ric:*s0)L/rNlL1!jf8@rNuX6r3ZO5osat2
+po=1NrK$f8s,[2?pQ,<8!0R8DrP&WR_8=13ai_cJqT8l_bfp%/!6tMgs3:Per6#8daiDHA`;RUR
+_uR^NZi.91[J[K4\,Wu/UALYaUB&[8d/_PgchbugdJ_Mce,@_odJqSkcN2>Dr7Uhur7h2*qq_8.
+rnmY3s5F";rT!q=s5j4A!pAe2rTOCKlg+Q:s6]jSrpTmVs7-*Zs7?9_rUp3arqH?crqZQiq"ssd
+q>K"GJcC<$M#Vu~>
+JcC<$JcC<$U]9BRqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7$*Yr/CZ6re^]4regT2oo&m1rTF"=
+rT4"=qW%P6s5Ek5s53k5rS@M/s4dM+"khP\f78D4J+nlrN;eb8MYrD/N;nh9N;^Ee]DK2=\bCCE
+GjBYPMuJ\7N<#"2NW+t7O8+b8O8,aOHi8?gHi&3hIJ/'cOTgo4Q'IZ$pQkoJQi<9PQ^F-=R/**J
+QiWM<r075H!0m;crNuR3r3lU6s1%fYq1em(!f2]"pR(lF"IPUFR[a,CrLNnYrgj"Xs./qTr0m_U
+f_jFsgAK_(h##q,hYuF1i;_d9ir.p;jT"??joX`0kl'`IlKdd8m/QJQmf)\TnGi%Xo)J=]o_nI_
+pAXgaq#:*gqY9sbr;$<Erdk*#s+p]*~>
+JcC<$JcC<$U]9BRqYg?iq>:0frqZHdrqHHdr:U']s7?0Zs7$*Yr)WhtrD`bns&/krs&K)"!*0"t
+#$"])<E3!trTF"=rT4"=qW%P6s5Ek5s53k5rS@M/s4dM+"52>ZfA]a3<`E!rr)ESms&/kq!*&kp
+r`&\nr`9&!rOi'?qmud;!E<"h;Z9Vk<<#ni<!$!!<W5tt<r>th<WH4u<rQ2!<r,nmWqoWl;u0Dj
+;uKVk;?'Pl;u0Sp=9DW*<EB$!s&K"ss&B,$=',/tr`Akqs&T2$q6U%,rjD[4rjVp;oi2&o=',2u
+!*&\mnPoBarD`Miqbm5g!8.5&pY,Q"rS7;+rndY3r8@V6s5O";s5a4ArT41Ekii!0!p]+;rp9[P
+s6fmTs7$'Yrpp*\s7H9_s7ZHdr:p9erqcEequ$9gg&?R&JcCQ+J,~>
+JcC<$JcC<$VZ5WSqu-Eiq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xri-+#W2HMirMBM$s0hp7!4;C,
+qW@b<rT*h8rSmh8qr%M3rndV0s4mY/rn@D*s4I>&n<X*>s-3DEr07/e!4Dd6!OoN:[K!W4ZN7A<
+rNcF/!4)O/riuO1r4;U4!4_c_rf6f6q2YB6rf6u;!K<$:YlCp+Z2Us-ZMh-0[/[K4[/IB6[^ELA
+[0*kH\$l(@!4_j'q2Y31!06Z3rK.#Ar4`BM_8F74rQ4oY!mAg3rlY>dc2Q#gc2GlcbQ#]faN)??
+`;RUR_uR(?ZMCj+[/[Q3[K*#kUALVcU<q9]d/_Pgchc#dde2)edf7_od/;5hfDO;!g%a;"g]$"*
+h>c@2hu2L5iW%p9j8\3?jo4EBkPscFl2U#Kli$/OmI'EAn,MnWnc&+ZoDeI]p&Fabp\agcq>U6c
+qtp<drRh+#s+13.s*t~>
+JcC<$JcC<$VZ5WSqu-Eiq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xrf$l8reg`4s+pZ3qMY'+!0-j;
+rT4"=qW%P6ro*b4s53h4rS@M/s4dP,s4RG)rn$+YpP\g*repf6qht?1s,-l9r4;U4!4_]Iq0;UY
+rcn9b!.+U%!fW%qrf$i9!06]2rf6l:pPo67q5F+9pNusfqgA?jp3c_!"Ho"7Q'V-1#FLjDQC!r*
+Qi<BIQNW\BQBda6PlI!KZ2Cp'Zi7?3[J[K,L\QW(LBE?hQ^@H6r0IPRR@0M5q4.DSrLWtYs.'+[
+pRM/Nrn%)#r7Ul!rS.>,qq_;/rnm\4s5F";rT!q=s5j7Bs6'FGrosIJ!:0UM!q#FDrpTmVs7-*Z
+s7?9_rUp3arqH?crqZQiq"ssdq#/kEJcC<$MuS;~>
+JcC<$JcC<$VZ5WSqu-Eiq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xr`9&!r)E\r$W0f!;GpFm<)lq!
+<W5qt<W6##<E)rok5FE?jSIp8ir7p6i;_^6hYl:1h#H..gAfk+f`'L]<<#tt;uBVj;ZKep;uTbl
+<W6#!<W'H%\H'/<<<#ks;Z'Gn;Yj>k<;KMn<;ohm<!ZK'<`N.!<*!&t<V'5k=8Q%u=8Q%r=8Afj
+;YO)i;Z0Pm;Ya2i;Z9Sp=Sc+u=9;Q)<r5tu<W5tt<W?,"=85hq=85hr<rfN'ZMCj+[/[Q3[e*Q"
+<rQ1s<rZ.n<Uj&c;uK\k;u0Df;uYDHf_jFtgATe*h##q-hYuF2i;_d9ir.p;jT"?@k5XWEkl0iH
+l2^/KliQSBmf)\TnGi%Xo)J=]o_nI_pAXgaq#:*gqY9sbr:p6Crdk*#s,6o-~>
+JcC<$JcC<$WW1oUqYg?iq"t'erqZHds7cNdr:U*^s7?0Zs7--Ys6g5oWiE"pVPg;grh]V%rjMd5
+oX=e^roO+>q;_G5ro*b4rnmb4r8%D.s4dM+s4ID)rRV/&eX)X!QMZsGPk:.CZEppFZaB\>!k5VG
+rNuO0"1#8=Zi.01Za0M8riuO1r42^7rO;'OpQ#!-r364)#-bD<YctC<rj2U2s0Ma4#.:nI[^NTN
+rj;j:\$rgC[fX(K\,*#sNp2W&OT1FC^AP_K^qmq-aSj6Xao]c1bl,]cbg$.4s3:Mds3(Gb"j+j+
+a2Q!q_Z7XQYl(d*ZMV!.[/[Q3U%4rVT`EF:d.u)hd.u#dciVVAdJVGke,7Yne,@_odJqSkcN)Pj
+fDXA"g%sG%g]$"+h>c@3hu)C6iSrkqj8\0?jo+<CkNM./l2U#Kli$/OmI'EAn,MnWnc&+ZoDeI]
+p&=[bp\agcq>L0bqtp<crR_%"s+132s*t~>
+JcC<$JcC<$WW1oUqYg?iq"t'erqZHds7cNdr:U*^s7?0Zs7--Ys6ouH!/pf5s,$c3!/LQ2rJLZ7
+repK/!fc@)roO+>q;_G5ro*b4rnmb4r8%D.s4dM+s4ID)rRV/&eUW23J,autMZ8V7MYi>,N;ne9
+MY`8.N;ne9N;U6`\G`o.H2Dj]H2DjbH2W'eMZSiqMuAV,N<,'!rJpc9qMkW<NfNt6pNuFXqgJ6e
+!0I&>"Ho"7QBq62rKdJM!LT5QR.cjJQBda6PQ7!HYl(d*ZMV!.[/[Q*L\QT)LRA(-pR(lF"IPUF
+R[a8G!1j+ZrLNnYq47;Nr0m];pXfArr7Ur#rnIG-r8%D0s53b4!o`.urT!q=!9O1A!pAe2rosIJ
+!:0UM!q#FDrpTmVs7-*Zs7?9_rUp0`s7cHdrqZNhq"ssdp\i_CJcC<$O8j_~>
+JcC<$JcC<$WW1oUqYg?iq"t'erqZHds7cNdr:U*^s7?0Zs7--Ys6oqf!*/qrs&K/#;uBMn;uTbr
+<<-)!;ufqt<WlE%<9E?Bjo+99j8J!:iVVR4huDR2h>c:1g\ok+f`9\'f)sUS<E8Nfs&8\ls&8ns
+!`W)sr)EJjs&Atrr)EJlr`8s-qmcU6qc*Pnr)EPls&AtrrDNMkrD`_qs&Atts&9#!<r>ti<rZ7u
+<rZ7u<rH+rVZKan;>O2^;uKVf;?'Ph=8l>$<r5tu<W5tt<W?,"=8>nr=8,_q=8]<#Z2V'+Zi@E4
+[II5s<rQ2!<rH"l<V'/j<E/iorD`SkqGR/g!7pnrrRh&$qV(r'rnRG-s5*e5r87Y8io9pss5X1A
+rT41Ekii$1s69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_rq?Bdr:p9erVH<dqu$3efD^@$JcCf2J,~>
+JcC<$JcC<$XT./VqYg?iq"t'erqZHdrqHHdr:U*^s7?0Zs7--YrpKlgWrAprVZ*FkV#Ib'[^ERA
+[K!Z8[J.-/jS@j7ir7p5i;_^6hYc40h#H.-gAfk+f`'M&f)O8#Qhm$EQ2[$>P6[8UZEggDZaB_>
+s0_p8rNuO0s0DX1rNZI1ZM_'.ZN%H4\,!K+N:`)0Nq&,.N;Tp[Y6(r6Z2Us-ZMq30[/[K4Zj*qH
+[C3NO[/RH9[^W`S[f!T8\@;I6rh][Vqi:];s,Q]3s,d8Arf@,@q2bZ?^:sQ\"i.sk`5]mrans3]
+bKTq."3f$8cMl)ebl>ldap#o.a2c0;rPST;q69k's0DR/q4[JUr1X/:q9])frQtGfr6YGjr6kPm
+p!Wies3Ubkrmgqtpt,JsrRq)%rnIG-rS@M1rnm_5s5F";rSmt?jlQL(s5sCGrTOCKlg+Q:!q#FD
+rpTmVs7-*Zs7?9_rUp0`s7cHdrV?Hhp\XgbpANYCJcC<$P5g%~>
+JcC<$JcC<$XT./VqYg?iq"t'erqZHdrqHHdr:U*^s7?0Zs7--YrpKlHMuJV6M>i>1L]320MuSb8
+MtW)0NW/#7j8J!:iVML4hu;L1h>c:1g\ok+g&K_(fDjG%eGt-hJ,FcqJ,OirI0"eFreg`6qhkE3
+pl+p)r/CZ6s1&!9q6oj>!-n0^q0;j`!.+Wir/1W8Mi7OmoSim3NW"n7O8=k;O,j49rh][Cqg8?j
+s*O9`qgJ9f!e$/lqiM&FPEhE!QM-[DQN*<LR.cjJQBda6Pl7f]Yl:p-ZM_',L]3&'L\ZZ*Q^Ic=
+pmCuG!1<bR!1NhUrga%ZrLNnYq47;NrgWo;r7:YprRh)%qqD&(rnRJ.s5*b4ro!h8s5O";!p&J)
+roX7D!9jCG!p]+;rp0^RmdC)Cs7$'Yrpp*\s7H9_rq?Bdr:p6drqcBdqY^'cf`$I%JcCo5J,~>
+JcC<$JcC<$XT./VqYg?iq"t'erqZHdrqHHdr:U*^s7?0Zs7--YrpKkh<W5tt<W6%u<<,tq;?0Yo
+<<#r#;cH^rr`0#!r`&mXq;_G5ro*_3s53h4r8%D.s4dM+s4RG)rn%2$s4%*Ln5T!X!)ibq!`W)s
+r)EMkr_rkrqGd5i!`lh@r3uL1qc!Jls&8kq!)r_nr_rbnqc!Gm!*/qrr`/tt!EE1u<V0>l=8Q%u
+=8Gtt=8o&qVZ'Kn;?'Po;u]be;u0De;#jMh=8c5&=&rB"=8u;$<W5tt<W?,"=8>nr=8,boYPGF%
+Z2_--ZgLij<r>ql<Us,h<<-"r;uK\k;u0Di;uY>Ff(dkqf_sM#gA]k+h#6(/hYuF3i;_d9ir.m=
+jQ5M&k5XTEkl'`IlKdd8liQSBmf)\TnGi%Xo)J=]o_nI^pAambq#1$fqY0m`r:^*Ardk*#s-!D4~>
+JcC<$JcC<$YlEMXqYg<hq"t'erqZHds7cNdr:U*^s7?3[s7-*XrU1&mW2QVkVPU/dV>d7j[/IB:
+[^EQO[C3L8[eo+air.j4i;VX5hYc40h#?(,gAfk+f`'M&f)O;#eGGR.Q2[$EPPUI@PQ%ieZi@?1
+[K!Z8[JmN6Za0S:rj)R1rNZL2ZEjG8s0DI/r3ZR4N:r2.N9ZE$N;nh5YlCm2Yd1O<Yd(M5Zi@E2
+ZNmkG[^EQP[']h?"LbeK[^Q+C!P#W;V#68RNpr,.OT(C@OSb1?O9:WX^:sQ\"i.sk`5]mrans6X
+b6#o4cMc#dbl>ldb5]T``rX/trknc<r3$"%qlp+*s0D?l!huB^qkEt]rm1)\r6P>grR(PkrR:Gf
+s3^hms3LSlrRLhsq:GVurn72&s4dS/r8%D0s53h6s5F";ro=%>!9O1A!pAe2rojLLlg+Q:s6TgS
+rpTmVs7-*Zs7?9_rUp0`s7cEcrqZNhq"smbpAN\DJcC<$PQ-.~>
+JcC<$JcC<$YlEMXqYg<hq"t'erqZHds7cNdr:U*^s7?3[s7-*XrU9]Bs+pc4M>i>2L]!&.MuSb9
+MtW)0NVhc8ir.j4i;VX5hYc40h#?(,gAfk+f`'M&f)O;#eG+OlJGt&nIe\?jMZ8V3MZ/P0N:r2.
+N;nh3[f!N5[,ZH0GklXbGl3L"N;nh6N:r82NWb?%NfB(rO8=k;O,j17k'[#Rq0W0jrK-r>"d5(7
+Q'Ra0Qi36MQi*6EQNEJ<Q2[$JXo,@#YPYR(Z2_--L]3#3Knb>;L5,S\qhG-;s-NeQpR(lF!1<bR
+!1NkVpmqATq47;Ns-ro8rRLhsq:GVurn72&s4dS/r8%D0s53h6s5F";ro=%>!9O1A!pAe2rojLL
+lg+Q:s6TgSrpTmVs7-*Zs7?9_rUp0`s7cEcrqZNhq"smbpAN\DJcC<$PQ-.~>
+JcC<$JcC<$YlEMXqYg<hq"t'erqZHds7cNdr:U*^s7?3[s7-*XrU0tk<)cjt<`W<$<rZ2!;uBMn
+;uKZ'<E)mr<E3(#<E3!tqr@\8rSdV2rnm_3r8%D.rnID*s4RG)rn%2$s4./!nPoHcs&&ns;H!Kk
+s&/eorD`nu;cETnqG[)epf7-ur3ZO3rDNVn!)iens&&hqp/LcbrD`bp!`W)sr`&kss&9#!<r>th
+<WH4u<rZ7t<rZ8"U]OFk;Z9Pn;XIEU;ZBSp;HEQorE',&<`]-"s&K,"r`&nts&K5'<`N/s<rQ1q
+<r]<"Y5PR$YlD!.ZKtTh<WH.u<;0Da<<#qu<;TVm<;BJi;Z'JjeG[qqf(mqsf`'S$gAfq-h#-".
+hZ)L4i;_d9ir8!<j8e<?joX`0kl0fJlKdd8m/QGQmf)\TnGi%Xo)J=]o_nI^pAamaq#:*fqY9s`
+r:^*Brdk*#s-*J5~>
+JcC<$JcC<$ZiAeZq>L3gq>:-erqZHds7cNdrUp0^s7?3[s7--Yr9jdVWMl_mrh]^mV#6tf[/IB8
+[^EQO[IUd)ir.j4i;VX5hYZ./h#?(,gAfk+f_sD'f%&=MeGn"kQ2[$EPOt"?Z*:L<rNZF1rjDd7
+s0Vg4riuO1rNZF0rNZL2ZEjG8s0DX3r3ZC.oS`[,qi1T6pPo-1s,6l6"0\r5YPtd+Y6_D=ZEUR<
+ZEpn:[/I<9['mEN[^NTNrj;d8\,Ec6[fEr;U\TuIOSk1>OT1C?OSFq=P*,[*s1JBGrP&NO_8F74
+aSa0Wb5BH_bl>udc2PrebQ#`baTBN&`;[XSXSApsY5YX'YkFdiT`1YbUACPabg-46n'M$ZrQtMj
+rR1Ynp!Wies3UelrmUYlrRLktqUb`!rn75's4dS/rS@M1s53h6s5<t;rSmt?jlQL(!pAe2rojLL
+lg+Q:s6TgSrpTmVs7-*Zs7?9_rUp0`s7cEcrqZNhp\Xdao_mPDJcC<$Q2c@~>
+JcC<$JcC<$ZiAeZq>L3gq>:-erqZHds7cNdrUp0^s7?3[s7--Yr9j^TMMh:f!/UQ.r/1H2rf$l8
+pP]*3rSme7qV_A1rndP.s4mV.rS%;)s4I;%!nPoPrm^tsqLAHordX]lp3d1'M2I1KMi*AhMZ8V2
+N:`&-N;nh8[J[E0Zf??2GklX_Gl*F!Mu\e5N:r82NWb?%NfB(sO84e9O8bpSHi/9kIJ/'gIJ\Eg
+IJJ6jIJf3)OTgo4Q'IZ$p6YcEs-NSLpQkoHQ2[!JXSApsY5YX'Yl0@ULAll.KS>-ZLAQc*L'!^/
+Qh-UBQN3EPR/i`TSGA`ST(nlPSH#)Xe+hGkec"(qfDaG%g&0S(g]-(-h>c@3hu;R6i;hm9ir\<'
+jo4BDkNM./klU/9li-8Nm/ZSRn,MnWnc&+ZoDeI]p&=[bp\Xabq>L0aqt^0^rS.=&s+138s*t~>
+JcC<$JcC<$ZiAeZq>L3gq>:-erqZHds7cNdrUp0^s7?3[s7--Yr9j^T<E9$!!*B/#r)N\o"B&/r
+;H*Hls&8qsrDiksrSme7qV_A1rndP.s4mV.rS%;)s4I;%!nPoPrm^tso2PZe!)iYjs&/hpr_`bs
+<;fhs;u9Po;u]hr;tj8d<W9E([/@9/;#jMn;ZK_p;?'Mo;ta/j;uTbr;uK\i;uTbq<W?##<E<+!
+r`/Pj!*B%u!*Ats!*B/pr_i\l!)iJgs&Ahno25Wg<`\usrE')%<r5tu<rZ2"<!QE(<``@'<E8os
+r`Anr!3GstriZ7(rNPTfrDrqur)EDjo2P`i!*&kprD`PjqbmAkrmUYlrRLktqUb`!rn75's4dS/
+rS@M1s53h6s5<t;rSmt?jlQL(!pAe2rojLLlg+Q:s6TgSrpTmVs7-*Zs7?9_rUp0`s7cEcrqZNh
+p\Xdao_mPDJcC<$Q2c@~>
+JcC<$JcC<$[K#"\q#1*fq>:-erqZHds7cNdrUp0^s7?3[s7--YrU9dS!puqarMBRjqP4(trNuX6
+r3cL3!4DU1s5Eh4rSRV2qq_8,s4dJ*s4RG)rR_)#s4.+us3h"sdJ0"+PkpU8Oogc-Z2V!-Z2q59
+rj;^5!OfB7ZN.9,Z2h60ZN%92ZLkL&Z2fdRMtDu(NW"h8MuJV4YQ1m+YlCm4Z*L[>Z*CU@Zi7?1
+ZN.B1[Ka.H['d<M\,<]6\,W/sNrY:>On+V0OoLUCP5pjH]`5_F^]2(Q_8F74aN=G&s2k2]r6,,a
+s3CPerlkDcrlPDc`l?!8_u-S6XS]."Y5b^)T_Y;YT`:\cT_b>abg"GYrQju[rm1Sjr6bJkrR:Gf
+rmCbms3^enr6tJkrRLnuqq(l#rn78(s4dS/rS@M1!8mb5!o`.uro=%>!9O4Bs5sCGrosIJ!:0XN
+s6TgSrU0gWnaZVLs7?9_r:U*`s7cEcrqZNhp&"R_oDRJDJcC<$R/_[~>
+JcC<$JcC<$[K#"\q#1*fq>:-erqZHds7cNdrUp0^s7?3[s7--YrU9dS!UYdAM>i>1LB*)+MZ&J4
+N;nh1Muo!tiVML2hu;L0h>Z40g\fe*g&K_'fDjG%ec+(udfInEr."ZqrdXWjpO3'h!/gc4s,-r9
+M2D1gs,6`4oS`[,pp9t*!-mRMs*F]js*FWhqfqsqs,6r9qi(6.r/Uf:!07#=qMkW<TqVI4r-\?h
+qgA?jqgA<iq0W3kO8G%;OT^i3Q'I[/Qi36MQhm*DQiEBOPl.T\XS]."Y5b^)L&d#-LAlo*K`?c*
+LAZi,LB!V1R/E9NR/WKRS,JlQSc,/USbS`TdJ_Mke+qMlec+.sfDjM&g&9Y)g]-(-h>c=3hu2I7
+iSrkrj8\0?jo4EBk5a`Fl2U#Kli-8Nm/ZSQmfN"Knc&+ZoDeI\p&Facp\Xabq>L0_qt^0]rS7C'
+s+13;s*t~>
+JcC<$JcC<$[K#"\q#1*fq>:-erqZHds7cNdrUp0^s7?3[s7--YrU9dS!:BV`qc3Vpr)<Smqc*So
+s&Aqss&B$WqV_>0rndP.rnRP.r7_2(s4I;%s475#rm^ts!RfBg<;f_q;Yj8j;Z9Vn;ZBSo<W5tt
+<W?"p<<#ns<;ohj<;BPhZi79-;#jMn;u]bq;?'Pn;t*c[;uK\p<W?%t<<-"s<V0;l=8Q"u=8Gr!
+=.u>d;Z'Al;Z'Mk;uK\o;ZTcnoMPci<E</q=8l>%<rc:t<t&,0<E)su<`W:'<`N/s<rH+s<rB#s
+XS]."Y5b^*<9mQ`<rQ+s<;0Da<<#qu<;]\n<;BJh;ZB\qdJ_Mke+qMlec+.sfDjM&g&9Y)g]-(-
+h>c=3hu2I7iSrkrj8\0?jo4EBk5a`Fl2U#Kli-8Nm/ZSQmfN"Knc&+ZoDeI\p&Facp\Xabq>L0_
+qt^0]rS7C's+13;s*t~>
+JcC<$JcC<$\Gt:^q#1*fq"t$drqZHds7cNdrUp0^s7?3[s7--YrU9dSs6Tfarh]^mV"pbeU9h6$
+[JdQ6[J730i;MR4hYZ..h#?(+gAfk+f_sG%f)O;!e-+7Kda?J<Q2?gEPOjq@OcYWbZ*F;4riuL/
+"gbSD[C3IAZN@G;Z2Cm-Zi.30Zi@?0Zi.3-YlM$#MZ&J,N;/D0N;\\4YQ1m+YQV/6Z*L\7Yl_5;
+Zi.91ZN7G@rO)d8[']h?!4Vm7s0r$$rf7&@rK$r>qiUN4pQ5H=rf[PN]Xthh^:sT]s1efS`5]m?
+ao9B\ao0B[bQ#fdcMYrebl>lbaoof*`l5jlWr9!tXSo:#TDbG[U%k;XT`iQ_c-FW5cgT6\ci2;h
+dJ_Mle+V5hdJqSgdJ_Mle,%Snec+.tfDjM'g&0P*gYCT_h>c=3hu;R6iW%p:irS6&roX7D!9jFH
+s69UMrp9[P!:KjTs7$'Yrpp*\s7H6^s7ZKeqtU-crVH3ap\aX]hYr*+JcD2=J,~>
+JcC<$JcC<$\Gt:^q#1*fq"t$drqZHds7cNdrUp0^s7?3[s7--YrU9dSs6]`@rJ:K/rIt</qhkB2
+rJU`7pPf-3ro!b4rndP.rnRM-r7_2(s4I;%s475#rR:u!daHOjq1/?lrI4cps*jin$%@;MI!^3f
+I#<g\M>iD3M>iD3MuJ\8MZA_.MuJY8Zi.3-YlM$,Gj0MKHM`!fGlN'bMuS_9NW+k:MuJ\/NW"n;
+N<#";O8=n:T`0<9I/&-gI/SKlHiSNbHineYO,s1"rfI>IQ'IZ$p6Y`Ds-NSLpQtoG!0m>[rN#q!
+rN6'QqM,!'qh5!'!/CB+rg3/Br0IPRR@0M5rLE\SrLWhUq4.6-rR1YnqUGMprmq#!s4IA)r7V5,
+gt_kas5!b5ro!h8s5O%<!T`AAk5XTEkl0iHl2^/Lm/QGQmf)\TnGi%Xo)J=]o_eC^pAamaq#1$e
+qXsa[r:BmDrdk*#s-it<~>
+JcC<$JcC<$\Gt:^q#1*fq"t$drqZHds7cNdrUp0^s7?3[s7--YrU9dSs6]edq,R;kr)<Smqc*So
+s&Aqsr`&mTrSRV2qq_8,rnIA)s4RG)rR_)#s4.(t"OkfIdF%Pb!)rVirDW\nrDESprDWbsr_r_o
+s&8nrs&8YkqGdO%rNc@+!O,Ju;#jMn;u]bp;#jMn;t3i[;uK\p<<-"s<<-"s<V0;l=8Q"u=8Gtt
+T`.gh;uTYs;,U=kqc*MmrD`_o!)i\kq,.>o<`N1$q,dMss&T2$qH")+<E3!u<E<.%=&r=$r)W_s
+r)WZorN#q!rN6#to2YchrDihtrDibppJpfas&B%ur)<Pnq,@/gs&8^?rR1YnqUGMprmq#!s4IA)
+r7V5,gt_kas5!b5ro!h8s5O%<!T`AAk5XTEkl0iHl2^/Lm/QGQmf)\TnGi%Xo)J=]o_eC^pAama
+q#1$eqXsa[r:BmDrdk*#s-it<~>
+JcC<$JcC<$]`6X`q#1'eq"t'erV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]jQrh]anUndp`rM0Ce
+s0;X2p9jq/"LkhI[^Q1ErO2a`rndM-rnRM-r7_2(rn.2$s475#rm^tss3gno!mm0rrK[5Drfd&=
+r/gu@rK$u`ril@+$*pnE[C*HMZa6t:Z2Cm-Zi%-/Zi@?2ZN.9*YQ0U[MZ&D0MZ&J/N;\_9N;eh2
+N;\\4YlCm/Z*:F9rNQI/ZEgh7[/RB4['fnAs0_m6rjDU2!1s1Os,[/@s,[2AqiUN4pQ>E;!0dAo
+!PQ5H^BhWk_8=.1a2uI&aSs<Zb5KN`bl>udc2Z#fbPfQeaMu6=W2TZoqPsOq"0A#aT)P>^T_P5X
+T`:VaT`1Yab6,u5cHcC7nBh3]r6YDirR1Ynq9o/f!mo9>rQtAfrR1YnqpbVqs47,"s4IA)rRq>-
+gt_ka!oDhlrnmk:_o)K6!p&J)roO7Ekl0iHl2^/Lm/QGQmeuSUnF?&Jo)J=]o_eC^pAXg`q#:*e
+qXsaZr:BmFrdk*#s-s%=~>
+JcC<$JcC<$]`6X`q#1'eq"t'erV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]jQs+pc6M>i>1L]3&.
+L&Zr/M>W80MuJ\8Mt`/3NSiXmhYQ(-h#?(+gAfk*f_sG%f)O;"eGn"tdf.Vqd!pQDJGOcpIeA-h
+I/83iMZ/J3MZ/J3MZ/P5N:;c*Mu^-XYQ/tIGl)ddHLuL]H2r6iHM)OaH?o@Frepu>N/W[Qrf$Q1
+rf6u;!07#=qi1ZJr-S?hq0hp`qKr$c!e$/lrf?r<#*G(4Q'IZ$p6Y`Ds-N_P!1EhRpQtoGs/>mq
+qPsOq"0@-.K`6]%LAlo(K`?`+LAlr.R/NBBR/E9NR/WKRRf&]OSc,/USbelVci)5ddJ_Mle,.Yo
+ec44ufDjM'g&9V+gYCT_h#cHjhu;O8iK00#ir\<'jo4BCkNMp0s69UMrp9[P!:KgS!q>aMrpp*\
+s7H6^s7ZHdqtU0dr;-*`pAFO\i;S<-JcD5>J,~>
+JcC<$JcC<$]`6X`q#1'eq"t'erV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]jQpJpufrDW\n!)rep
+s&8qsrDihrs53h4qVD/+rnIA)s4RD(rR_)#s4.+us3q"rrm:_moMkfgqGR/gs&/bls&Jtr!``2u
+r)E\p"BAE#;cEBhqc*X$poj`srDNYmrDNYos&/hn!)i_nqc!Por`&Ddr)E\r!*&qtr`&ksk#MJR
+r_rhpr_rhps&8eoohtigqbd/e!)rhspfIDrpK.Aq$<:&*<E<.%=&r=$r)W_srDrrsrMfXnri6%#
+r)E8fr)EYq!*8tsr)EGkq,IAmr)E\r!*&kprD`SkqbdJocd2R:q9f/hrR:Ynrmh&"r7Cu$s4RA)
+!o)McrS7P3hr"Fk!oZpNro4(@jlQL(!U&\Gl2U#Kli-8Nm/ZSQmfN"Knc&+ZoDeI\p&Fabp\Xab
+q>C*^qtBsZrS[[+s+13>s*t~>
+JcC<$JcC<$^AlmcpAOmdp\XpcrqZHds7cNdrUp3_rq$*Zs7$*YrU9dSs6]gPs/#mpUnja_U]-tk
+TqJZrZaBJ7s0`*?[^ENO[emQ1h>Z4/g\fe)g&K_&fDjG%ec!u!e'c\DdJqSnch<V%PP:7<OT:LA
+O8k4AYd(J2YlCs4ZEpmE['d:?ZMh'&ZN%92Z2q;9r3-+&"-&7tMuJV4M>W80Mt)`+Mtr>1Mu0aY
+Y6;,7YHY81Ylh59ZEsJ9rj)X4[JmT7[JmQ3[J[H8O-#HcplPK;rf@,@ooT39rK@#>!Kt(m]E,^[
+rkA`S_84",a2lBErlG&[r6"u]"O,09bfp%1!mJj2rQ52^`l@qSrM]^prMg9pS"-%@StD[KTqS3T
+rLs.^rLa+_!29A7"3f$8cMl/aciDDgd/MAjd/DAidf%YjdeqMjcMc)fd.u)gdf._neGe"uf)=5#
+f`0Y'g&g$ah#?.0h?Mlqi;^^4ir8!<j8e<@jp1)5kiq?slKeH9s6TgSrU0gWnaZVLs7?9_r:U*`
+rqH<brV?EgoDA7ZoDR\JJcC<$SH"*~>
+JcC<$JcC<$^AlmcpAOmdp\XpcrqZHds7cNdrUp3_rq$*Zs7$*YrU9dSs6]gPs,$i6M#<&.LAZ`,
+LPUfaMZ/P5N;nh1Mu\k6h>Z4/g\fe)g&K_&fDjG%ec!u!e'c\DdJqSnch;kgIK=kGomQjfs*OWh
+!f2\jrJCQ3r/(H2s,6l8n;@=+Yl(^(Y5`hAH2`-WGlW*`Gl`5:q2>62!f`.trepc7pPo04rf$o<
+rf?r:!.+Nhr-\Hkrd4]mp3c[_qg8EmO8Y1>O8P(DOckroQ'Ra0Qi36MQi<?PRJiNLQNEJ>QMdZZ
+W;`dpWr%DMKS>-VLAlo,K`$Q(L'!-sR/NBBR/E9NR/WKSR[a;HpmqATq47GRr6G8erQtAfrmLep
+r7(_rs47/#s4IA)rRq>-gt_nbs5!t;i8DtCOQ-9"s5X1AroOIKkih9qlK[^7m/QGQmeuSUnF?&J
+o)J=]o_eC^pAXg`q#1$eqXaUXr:BmHrdk*#s.'+>~>
+JcC<$JcC<$^AlmcpAOmdp\XpcrqZHds7cNdrUp3_rq$*Zs7$*YrU9dSs6]gPpf6udrDW_o!)rep
+r_rhrrDiksqVD/+rnIA)rn7>(r7Cu"s4.(t!n5TGrmCbms3L77qbm2f!)ibms&&ns<)riq!*/kp
+s&8nrs&8Vjr)Ea$r3-+&qG[8hr_iepr_WYnnl#Ndo2GNcs&B%ur`/qsr`/,^"&r9"<;9Dk<;oer
+;YF#h;Yj8f;?9]tr)WPnr`Jnrs&KA)<)lq!<``?#<<H9'<`]-"r`8rprM]^prMolrrD`;erD`es
+!*8qrs&9#!<;0Dg<;ohq<<#tu<;]\n<;BJj;Z+i=ci)5ddJhSne,7_pec45!fDjM'g&9V+gYCT`
+h>c=9hr*F::/BmKj8\0?jo4BIkNM-ol0@R"rp9[P!:KgS!q>aMrpp*\s7H6^s7ZHdqtU-crVH-_
+pAFO\ir4N/JcD8?J,~>
+JcC<$JcC<$_>i3fpAOgbq"t$drV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]gP!:0W\"/M]fV#I+i
+U7qRZ#bS9(Z*L^D[C5n=#.D"M[C*HOqmZU]rnRM-qqD)'rn./#s475#rRCkrs3gnos3LhncHc0K
+qNLc=qiUf<rf7YqZ*CO<Yct=8Z*CU?Za7$H[/RB2Yl_/7Z1tX(ZN@G8Y557$NK!jponr[*oo/^)
+rJ^`6s0)@)s/uR1Yck:8rilR0ZEgh7[/RB4['fnA!4Dg5rO)X5s,R/ArK6l:!0R8BqN(N8s,m8C
+qN1c@qRcjB^AbkQ^qmk)`Q-'Aao0<Zao0B\b6#o4c2PrdblZ,4bPfQaaMn+TqPX=k%&oY`R[]h<
+SXuFFTqVFZ!297^rLa+_!6Y8`s31Jfs3LGdrQkGhrQkMjrR(Slr6tJirR(Vhq9JrbrQtGhrmLep
+rRChss47/#s4@>)rRq>-gt_nb!oDi7rPSZps5X.?!9O4B!pAe2rojIKli-8Nm/ZSQmfN"Knc&+Z
+oDeI\p&Fabp\Xaaq>C*[qt9mZrSmg-s+13Bs*t~>
+JcC<$JcC<$_>i3fpAOgbq"t$drV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]gP"7(f"M#E,.LAQ](
+LB`QkMMd=LMZ/P5N;eb1Muo!ph>Z4/g\]_)g&BY%fDjG%ec""te,RkqdJqPpcd'i1J,auhIK+]p
+Hhi!fM#W;3MZ&A3MYr>1MZ8V7N!"uqMi..bs/u4#s*EXLq0;g_!IB%eMuAS9NJrhqMuJ\0NW+t;
+N<#"<O8Y+=HMMpbHiSToI/83fI/&$gI/SHnIf#6+O8P(FOcu#pQ'R`&R/!$IQMm0MQiNQQR/*'K
+QMm]WVuEUpWVD)IKS>-VLA6K&LAI8-R/E9NR/WKVR[]e:SGA`RT)"rUSGpe/cMc)fd/25idf._o
+eGe"uf)=5#fDsV'g&g$ah#?+2hVZWXNsCd+ioB([jQ6C'!pAe2rojIKli-8Nm/ZSQmfN"Knc&+Z
+oDeI\p&Fabp\Xaaq>C*[qt9mZrSmg-s+13Bs*t~>
+JcC<$JcC<$_>i3fpAOgbq"t$drV?BdrqHHdr:U*^s7?3[s7--YrU9dSs6]gP!:0J]pf%Q"<)cdq
+<)Zap;uT\l<<#ns<;fhs<<(eRh#?(*gAfk*f_jA$f)O;!eGn"tdf.YociVP=cLXs(;u';o<)Zaq
+<W,ks<Vf\p;uTbr;ta2h<WB5uXoD;i;uBPd;u'>g;ZK_p;uBVk<W5ts<U!Qa<;fes<;9Aq<)Z[m
+;,R6hr)3Snpeguf!`N0%r)WPnr`Jnrs&T,!r)Wbr"'/K(<r?&!<rJolVuEUpWVf]o<<#ts<qfVm
+<;9Jm;uouupJq#grDW_qs&K%tr_r_oq,@5irlt8arQkGhqpGDkrmUhqrmh&"rR_)%!87>)!o)Mc
+rnRY4hfeuo#>a@=j5]4]jo4BDkNM./klL)8rp9[P!:KgS!q>aMrpp*\s7H6^s7ZHdqtU-cr;-!]
+p&+I\ir4N/JcDABJ,~>
+JcC<$JcC<$_Z/?hp&4abp\XpcrV?BdrqHEcrUp3_s7?3[s7--YrU9dS!:BaOs6BZ]r1s@f"eq]`
+TV%kUSd2F%Yd1UB[C5n=s0`-@[C*HO\%)@Fs4dG)rn7>(r7Cr!s4.(ts3q"rrmCbms3L\i!6t)!
+!0d8BqiUZ8(6>])Z*:I9Yck77Yd(L>Za7$GZEga?rilC,qm-1,!j\r1r2fpX!0$l7pknm*repi8
+rJ^E-rf$i7ric7(s0)I-!jAi4rNZC.!42U1s0Ma4"LY\H[C-"@rNug;O,f6]O8P.6OSOt6OSt:A
+OSk7@OoW,j]F;Kf^V@S"_84%.a2uI#aSs<Zb5TQcbg"E2bl>ogbfft-!QiF^V#@.hVZ!CmRJ`NR
+SH#,bStD[LTq\9TqOmbY!m/U-rlb>c!6tMgs3LGdp!<ZbrR(SlqpYGjrQtVgrQP5bq9Jucrm:Pi
+s3gnqrRCkts47/#!nc2Zrn@D,!8RS0!<;r6s5O%<!T`AAjoX`0kl0fIlKeH9s6TgSrpTmVs7-*Z
+s7?9_r:U*`rqH9arV?Bfnb`"Wo_mkMJcC<$T`9N~>
+JcC<$JcC<$_Z/?hp&4abp\XpcrV?BdrqHEcrUp3_s7?3[s7--YrU9dS!:BaOs6BZ@r.k<,r.Y*&
+reCW4M2@+Jre^`8MuAV7Mu8M6NW+n:NW7c1gA]e*f_jA#f)O;!eGn"tdf.Yod/VGkc2c,bJ,aug
+IK+]pHhVjcM#W;3M#N52MYr>1MZ8V7Mu\e8MY)i,Xo,:#HK0;DGl)adMYW2/MunutN;eb6N;/D4
+Nr=q;NrG+>NWaZRH$Xf6HhVp`Hi8?fHi/9kI/o?*OT(==O9gu4Pa.Q#Q^=*8Qi36KQiEEQRJiNK
+Qi<fZV>d@jVu;5JK)1*$KS>-VLAur-LAZ`+Q'V<6nX06@!1<bR"IbgLS=KDGqk!\UrL<l2rQP5b
+q9Jucrm:Pis3gnqrRCkts47/#!nc2Zrn@D,!8RS0!6Y5#!g)F$ro4%?jo4BDkNM./klL)8rp9[P
+!:KjTs7$'Yrpp*\s7H6^s7ZHdqY:$br;,s\p&+I\jSj`1JcDDCJ,~>
+JcC<$JcC<$_Z/?hp&4abp\XpcrV?BdrqHEcrUp3_s7?3[s7--YrU9dS!:BaOs6KP^p/D,o<)cfp
+<;ohr;YsGn;uTbq<W5ttg\]_(g&K_&fDaA$ec""te,RkqdJqSnci22ic1P!*;ZTcpq,75k!E<"s
+;ufkr;ufqo;ufkr<;ohj<;fhsXo,:";WLdL;ZB\p;?0Sn;u9Pj<W5ts<V9Am<VTSt<)Z^p<;ont
+<;9Al;YX,f;YO&f;ZB\p=8Z+n=8uCr<rc;"<W#nr<<?3&<r?&!<rSonV>d@jVuBZp;u]hp<W,to
+<W#es<EArrr`&Pjq,I;ks&B"urD`eqqc*GkrDEX=rQP5bq9Jucrm:Pis3gnqrRCkts47/#!nc2Z
+rn@D,!8RS0!cq(1r_<Mjio9st!T`AAjoX`0kl0fIlKeH9s6TgSrpTmVs7-*Zs7?9_r:U*`rqH9a
+rV?Bfnb`"Wo_mkMJcC<$T`9N~>
+JcC<$JcC<$`;eTkp&4^apA=gbrqZHdrqHHdr:U*^s7?3[s7--YrU0gUmHsl=!pf.:r1s@f!MZ:d
+TDb>fSZ]-"Z*LaE[^Q%?s0`'>[^EQPrjVj9rn@A)rn./#s472"rRCkrs3gkns3LblrQYJhbfosK
+!0d;ErKI/BrK.,BOnOn:YQ(j-Yl(^(YQ1s,Z2h61Z2Cj+Z2Cp*Zi7$)WW\<?NJrh[MuAV/MuAV6
+MZA_8YPbX)Y6;)7YHY80Z2_*0Zi%31ZN[_D[C3NOrNuR3!0@)=!KW?@OnOn4O7n\8Oo:ICP5r2i
+]FMWi^VIY$_Sa=3a2uHEa8O*Yans6\b6#o4c2>cec-+</b5S14V#I1jVYuq]RfAoXSc>8]TDkM_
+U&1M]TE!%5b5TTabQ,oecMl/bd.P]bd/;;ide_Gjdf7\pb5'6[bl,f_cMu5id/;;kdf._oe,n1O
+f)=2%f\+sWg'$0ch#%'H_ZA`Uro4%?jo4BDkNM./klL)8rp9[P!:KgS!q>aMrUU![s7H9_rq??c
+qY:$bqtfdYp&+L]jo0i2JcDMFJ,~>
+JcC<$JcC<$`;eTkp&4^apA=gbrqZHdrqHHdr:U*^s7?3[s7--YrU0gUmHsl=!pf.:r.k<,s+U6$
+rJ(]8M2I4LMMd@OMuJ\8Mu&D2NW.Z2g&BY%fDjG$ec""te,RkpdJqPnci),jc-4E/J,aufIK+]p
+HhMd]M#W;3MYi81MZ8V7N;nh9MY2o,X8]-VH1uRZGlW`tMuAS9NJrhqMuAV0NW5%;N<#"<NrXM)
+H2W'fHiJKmHi8?fHi8?fHi/9kI/o?)OT1CAO:723OHG]iQ'IZ$Q^=*8Qi36KQiEEQRJiNMQi<cV
+V#I1jVYu/GK)1*$KS>-TLAcf-Pa.R3Qi!-MQhZsGQN3EPR08tJS"-#ESberUSc>2[b5'6[bl,f_
+cMu5id/;;kdf._oe,n1Of)=2%f\+sWg'$0cgr@J5NrkF%ir7s=jQ6C'!pAe2rojIKli-8Nm/ZSQ
+mfN"Knbr%YoDeI]p&=[ap\O[`q>:$Wqt9m[rT4$0s+13Fs*t~>
+JcC<$JcC<$`;eTkp&4^apA=gbrqZHdrqHHdr:U*^s7?3[s7--YrU0gUmHsl=!pf.:rDibpr_r\n
+s&K(u#uaf&<E)mq;GpHk<<#np<;fhrgA]e)f_jA$f)F4ueGn"tdf%SnciDDjc2u87bkG$.;u9Jk
+;>jAp;cH^pr`&hps&8tuq,@>mr`&kqpJh,lri?$u!)rhojAY\Kr)*Glqc*Dlr`&ksoiD)mqc<_r
+r_rhrr`&qtpJV&ilr!^Zs&/nur`Attq,dSup/h8prDibrr`'&$='&H#=8nukV#I1jVY='Z<W#et
+<E</t<W5tt<<-"n<V]Vm;u]hs<W#er;u0Jk;u]_qb5'6[bl,f_cMu5id/;;kdf._oe,n1Of)=2%
+f\+sWg'$0cgi7B6:&[lh:Z:=4irS6&roO:Fkii$1!UB"Mm/QGQmeuSUnF?&Io)J=]o_nI^pAXg_
+q#1$cqX==Sr:U$Mrdk*#s.fUE~>
+JcC<$JcC<$`rFloo_nR_pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^M!9sKYrhBLf
+T`(M]T)Y>gXfeh1Yd(OA[C3O?[0="J[^EQPrjVj9!87A(qq(l!rmgtss3q"rrR(Yls3L\is31Vh
+bKKgJooo?;rK6r<rK$r>#*4eJYHY:9ric@)rNQ:+!OB'2Z2Cj*Z2M!,Zi-p(WW.qWN<"q-MZAY0
+MuAS7MuJ\7Mt`2/YPbX)YQ(j,YQ(j+Z2V$0['Tb=s0Da5[JmT7[JdH6[?$CHNWY?(OHK@#!0R5A
+qN(?3!0R5Crf[Ao]D9)O]t_=t^qmn*`5]j>aiMNCaN4>%qo\r^!R/gdbQH,6bfg".s.TCcrhKFf
+qO.AP!LoVXSc>8]TDkM`U%k;\aT0K]bQ#cdc2Q#fchYr[cN;J@df.YmdeM;jdK%\oao0BYbPo`a
+c2>ldci;AidJqYpe,@ereH"2!f)jUXg&B\,p%ZK$_ZA`Uro47EjlPXekND(.klL)8rp9[P!:KgS
+!q>aMrUU![s7H6^s7ZHdq=spaqtfaXpAFU^k5Kr3JcDPGJ,~>
+JcC<$JcC<$`rFloo_nR_pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^M!9sK<re:E,
+p4W<u#)J+nMi3INr/CW5qi(K5!87A(qq(l!rmgtss3q"rrR(Yls3L\is31VhbKKg5s*jQfs*Xip
+!.=cmom6@g!/gZ1reg`6"H87sMMh+crMomskB[)RqKW'crd"KfpNZdrMYW2/MunutN;eb5N;AP5
+Nr4k<O*Z-MH2N!gHNJM?HMi-iI/83^I/\KlHi]=iqN1`<s,d8A$BUC5Pa.N"QC!r*q3V&GrKdSQ
+R@4#@r0RGWrM':drM9CEqL\Qr!ec8]p4iU3!1*JJqj7AMq3_)H!1<bR!1NnVs.&nUpn%JU!1a&1
+rQ=u[rlk>cr6G;fs3U\ks3gqrrRCkt!7q,#!nc2Zrn7Cg`;>VpO9+>"ro47EjlPXekND(.klL)8
+rp9[P!:KgS!q>aMrUU![s7H6^s7ZHdq=spaqtfaXpAFU^k5Kr3JcDPGJ,~>
+JcC<$JcC<$`rFloo_nR_pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^M!U3V^<;fbk
+<;ont<<#nq<!-&s;H*Kms&8hprD`jNrn.,"s472"rRCkrs3gkns3Uelrm(Pg!mJj2pepc`rDNJh
+rDEVorDWbqr`&hps&8tuq,@>mr`&kqpJh/mrMomsr_ieroi(cds%rbop/:rhr_r_mq,.)hqGd>l
+r`&ks!EN4p<rZ1u<rZ/"<;ohr<;ons<;]Yt<)Z^n;X.-Y;ZBer=8Z+p=8uCr=8u>"<W,ts<<-(r
+=9"umUAgqdV"RdT<<Q9"<*!&r<W5tt<<-"o<V]Vl;u]hs<Us,g;ZK_pao0BYbPo`ac2>ldci;Ai
+dJqYpe,@ereH"2!f)jUXg&B\+DK,MJr_<MjiSsjs#NY".k2tjikl0fIlKeH9s6TgSrU0gWnaZSK
+s7?9_r:U*`rqH6`rV??emec_Up&4%PJcC<$V#Pr~>
+JcC<$JcC<$aT(,ro_nO^p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^Ms69QZs.]Uh
+T`(M^T)5&cXfeh1YHbF@[C3O?[0X4M[^ENO[^WaE\GXtYf)F4teGn"tdf%Snd/VGjc2u87bl5cc
+b5RXuPPgUBOnt.@O,f8!O8k4?NW-*fYd(I9Y-5"2YHRl.!O8s0YlM!+Yl:p+ZMh-.W;_bTN<5&s
+MuJV-MZAY0MsZK&Xobf0YPbU/YHY77YHY81Z2V'/Zi7<6Za@*IrjDg7rj2`eO,s-trf?r<rfR2A
+qiCH4!0R)?s1/3Bq7I0N^V@S"_8=+/`lH3CaSs3[aSj6Xb5]Z]bQc>9bfe/OT_Y;]UA:5TRK8nJ
+rLEt\TCnlUaT0K]bQ#fdc2Z)fchc#\cN)>kdK%\mdeD5jdeq2bao0BZbPo`bc2>leci2;idJqVp
+e,@ereH"2"fDjJ*g"Plarl"WM!TE&;is4Z,jlY^gkNMp0!UB"Mm/QGQmeuSUnF?&Io)J=]o_eC^
+pAOa^q#'saqX47Sr:^*Prdk*#s/#aG~>
+JcC<$JcC<$aT(,ro_nO^p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^Ms69Q=s+^Q-
+p4WI"!/CE,#)J+nMi3INr/CW5qi(K5r7Cu"rmgqrs3q"rrR(Yls3LYh!mSs5rlY;ardXfos*alo
+!.Fios*a]j!.4BbqhY9-reLT3M#<,/MYrD4MY;u,W;(Z;Gk64ZHKoeUM>iD0MuAS9NJrhqMu8P1
+NW+t:NW+8#H1lRYHh;^^HiK0-O84kJO-#HaO-#HdPa.N"QC!r*q3V&Grg3YPs-`hQrKdMWq4[h_
+q1JNqr.>!&re:3's+gT<!L8uIQi*6MQhm*IQN3EPR08tJS"-#DSbJ`USc$S-ao0BZbPo`bc2>le
+ci2;idJqVpe,@ereH"2"fDjJ*g"O'OqiCZ:!TE&;is4Z,jlY^gkNMp0!UB"Mm/QGQmeuSUnF?&I
+o)J=]o_eC^pAOa^q#'saqX47Sr:^*Prdk*#s/#aG~>
+JcC<$JcC<$aT(,ro_nO^p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6K^Ms69J]r)<;g
+r`';);c?Xq<E)mp;cETnr_rbprDidIs472"r7(bqs3gkns3UelrQYJhbfp(0!6Y.9oMbWbr)*Gk
+s&8kq!`N&sr_rtu;GpHe<<#nr<<#nj;ufqsVu]jrrD`Gg!)i\k!)iDes&/Pfr)<Gkqc3Vpr)NJl
+s&K)"r`&qtr_reqs&K%trDW\pr_iepkY_=[rE&ntq,dSup/h8prDiesrD`huqc<cjq4[h_nl5'X
+s&/qt<W6%r<W5qt<W5to<V]Vm;u]hr<Vobq<V]Vo;uF`8ao0BZbPo`bc2>leci2;idJqVpe,@er
+eH"2"fDjJ*g"L1Wqb@#a!`.e7ro47EjlPXekND(.klL)8rp9[P!:KgS!q>aMrUU![s7H6^s7ZEc
+qY:!aqYKXWpAFX_kPg&4JcDSHJ,~>
+JcC<$JcC<$aoC8to_nO^p&"[`rV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrTOH\USFQV
+rLX(]q4.qaX/rJ,YHP18['d?Nq6^I9\$`WP[^WaD\Gt.Zec""se,RkpdJqSnci)/hblGudb6,o/
+acuF]rK@,Aq2bT;pPo65riZC-Z*F50qQBq(Z2(X'Z2M!-Zi6m#N!#&uN/RUks,6`2s,-l7pl"^%
+",i+sMuBd[YHG),YQD#4Yl:j+YlD!-ZN%9/[/[Q6[K<kD[/5j`NVeb9O8b4AOc]O(s,d,=pQ5E;
+q3(`g!5&'>%)0Kk^qde'`5Ta:aiXM%!6G)[rQ>,_qTK)ebfn8QrLa%]s.T.Sr0dYUSGo)ZScGDW
+TE*.5aT0K]bQ#cfc-FW3chl)]cN)Agde;,i`r3sSaSs<\b59B]bl5lccMu5jd/DAldf7eqe,n1O
+f)F8'io]OorP\QM%H-4)ioB([jlPXekND(.km-M>lg4!*mI'rA!q>aMrUU![s7H6^rq??cq"Xd_
+qYKUVp\adakPg&4JcDYJJ,~>
+JcC<$JcC<$aoC8to_nO^p&"[`rV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrTOE>L5(EU
+K`6Z,KS>0XLBWNlMi3IMqi(N4r/CQ5s472"rRChqs3gkns3UelrQbGf!6kDb"3Sa-J,+QmIIhj_
+Hi&-hHN8BhM#W8/L]N?gqhb?1rJU]5pP]$Kqg&!^s*=Hcqg&0ems,+^H$OXjLl)+gqht<0rep]5
+qMkN8rf-Pqr-A?gr-J0coR-L^"-8P*O84kJO-#HaO-#HePa.N"Q^=),q3V)HrKmPOs-`hQrg3SU
+rLj1ap4N3nre(3'pP&[5rfdGKQMQsGR/NBKR/NBOR/WKVR[]e:SGA`LScHe/a83mVao9H[bPo`b
+c2Grfci;AjdJqYpe,Ihue^i=Nf)r4^\%DR!qiD9FiSrkWj5f=`k2tjikl0fOlKdd&m-X3.rU0gW
+naZSKs7?9_r:U'_rqH3_r;$3cmJHYUp\j:SJcC<$VuM8~>
+JcC<$JcC<$aoC8to_nO^p&"[`rV??crqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrTX;\r)<>h
+!`N&trDikr!*&qt"&r2t;YsGn;uK\n<WCYLec""se,RkpdJqSnci)/hblGudb6#i.ao#'/;t<fd
+;u0Gp;cH]p<!-&s;H**bs&8hps&K"srhoWmpJ_#gqGI8jpJV&io25B`qGd>lr`&eqpf@Aor)EYo
+p/D#jrD`eq!)iAbr_iSirDrkur)WVps&etrs&T,!r)Wbr!*9#!rLa%]s.Ss^nl>Zgr_ihs<W6%r
+<W?%u<W,no<V]Vm;u]hq<W,ns<VTMn`r3sSaSs<\b59B]bl5lccMu5jd/DAldf7eqe,n1Of)F8'
+A7fOjqG$o`%H-4)ioB([jlPXekND(.km-M>lg4!*mI'rA!q>aMrUU![s7H6^rq??cq"Xd_qYKUV
+p\adakPg&4JcDYJJ,~>
+JcC<$JcC<$bQ$Q#oDSF]oDAL_rV?<bs7cNdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rosIHs.]Rf
+rLa+]q47MTs/ZO/Y-+t3Z*UjG[e[<3[^Z4DrjVj9r7(bqrmLbms3UelrQbGfs31Jcs2kDbaN3k7
+!0[;Cq2bT;qMtK5r3$.+ZMUd*YHIi-!O/j(Yl:p,ZN%63VPX$G!/p`3r/(9-q2>!+r/:T6s,6cW
+!3c=)s/uF,ric@+s0;R/s0MX1!4Dg7!O[paNr=t8NWP9'OT(@EOHGZepQ,-3!KiQAP5r5o\cBA<
+]F;Nh^VIY$_SjF5aN;O%`rO3Yao0B\bP]Tac2Yufb5._0TD"]KRKT+MSXlAOTD>/[b5TN_b5BH_
+bQ?&7cMPrbd.u#fcMl,idJ;5be,I>b`r=$TaSs<\b5BH_bl5lccMu5jd/MGmdK%bpe-=ISf%Jj;
+jnm!m_[YP_io9"YjQ,Fbk3(pkroj[Qlg*p(mHs??mfN"Knbr%YoD\C[p&=[ap\=O\q>'mSqtU*`
+rTO63s+13Ls*t~>
+JcC<$JcC<$bQ$Q#oDSF]oDAL_rV?<bs7cNdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rosIHs+UN-
+pk8R!re1<+qhG?2MMd=LMYiA3Mu/J3NVq<+e,IeodJqSnci)/hc2Z#ebQ#]daiMQuIfFiiI.;R]
+HMWHsL]3)1M2;%cs,-c5regN0!N)^iH1uR]GPcUdH$FT(H2MpeH2i-hL]E;2MYi>.N;eb4N;S\7
+NW>(.H2`-hH2;jaHglF_O8k:AO84kJO-#HaO-#HeQ'IZ$Q^=),qNq/HrKmPOs-`kRrg3JQs.At:
+q1ATu!/1?*qM#',Q'M?5!L8uIQi*6LQi!0KQiEHPR08tJS"-#@Sc#)Y`VmgUa83mVao9H\bQ#fc
+c2Grfci;AkdJqVpe,@c#e^i<LWiiZ*O84kHi8N\Tj5]4]jlY^gkNMp0#O:X@m-O-,meuSUnF?&I
+o)J=\o_eC]pAXg]q"sm_qX+1Tr:g0Rrdk*#s/H$K~>
+JcC<$JcC<$bQ$Q#oDSF]oDAL_rV?<bs7cNdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rosIHs&Aqq
+p/M#i!EE+t<W>tt<;okt<;ohg<;fhpeGn"sdf%Snd/VGjcMu/hbl5fcao]]+aSo*<;X[Q_;Z9Vn
+;?0Yo<;]\p<<#nr<;oec<<#nq<;ons<!0"o;cETnpJV&ipJLofpf%2jpJLrgs&&YlqGd>lrD`_q
+qc3f#<`W5t<;ohc;ufkl;Yj>d;Z'So=8Z+q=8uCr=8u>"<W#nr<W#qpT)YGY<<#ni<;0Dl<;f_r
+<)rltr`/nrs&K"sqc3GkrDW_qr)N_qs&Jkorl+iUrl=lVrlP/^r6,,arltDes3L_lrmCbo!7Unr
+#1_;U?=75RpeC]^%H-4)ioB([jQ5OdkND(.km-M>lg4!*mI'rA!q>aMrUU![rq--]rq??cq"Xa^
+q>0LUq#'mbkl-/5JcD_LJ,~>
+JcC<$JcC<$bl?]%o_nL]oDAI^rV??crqHEcr:U*^s7?3[s7$*YrU9dS!:BdPs6K^MrosIH!p?>P
+rh'1]r13YR%'-J3Y-+t3Yd1XD[C5q>qmQL5rODjUs3ghms3UelrQbGfs31Jcs2tA`rl>)[nWX!9
+!g/S,qN(]<q2Y<2r3$1,ZEO,-rN?7+Z2Lm,YPk[2Z*:L<ZEggCV#H>QMu/G5Mu/D0M><&+Mt`2.
+MuJY9MlllZ!3cC+!O8m,YPtd*Z2_-/Zi.6:[C3N&N/`gWNqeV5NrP1?O9:W,O-''rq2bW>P5:@C
+]"@sQ!5&*?!58BH$,FBo_o0O6aN;O%`rO3Yao0B\bPfWhc-FSXbab4%Sc>;\R/`TSR/<<IRK]1N
+SXl@Drh'1`rh'>6b0'_*!6Y5_rlbGgcHc=5qp>/brQYGjdJ;5ce,RA_`W!mUa8F$Xao9H]bPo`c
+c2Q#gci;AkdJqVpe,Ii#e^2dtgr9-.qSNd#iSieVj5f:_k2tjikl0fIlKeH9s6TgSrU9dU!:g$Y
+s7?6^r:U'_rV-']qt^$`n,)kWq#0IVJcC<$WrIS~>
+JcC<$JcC<$bl?]%o_nL]oDAI^rV??crqHEcr:U*^s7?3[s7$*YrU9dS!:BdPs6K^MrosIH!p>;l
+q1Sa$q1Jd&LAHZ/M2I1KMMqCkrJUT4rJgg*s3ghms3UelrQbGfs31Jcs2tA`rl>)[qL8Elq0`3h
+!.=WirHeBgqKhsns+gN.qhb?1rJUZ4q256Kq0D^Zr-.p\np1.XrcnKgreUT2s,-]3qMbE3qi(H4
+s,Q8fr-J6en9k4rs,[5ApQ5B8$BUC6Q'IZ$Q^=),qNq/HrKmPO!1EeQs-NbUrLNt[rdt0&s+:'!
+r.=j!s+LB*qhG6;Q'M?5!L8uHQi3<MQhm*KQiEHPR08tJS"-#<Sc?Y)`W!mUa8F$Xao9H]bPo`c
+c2Q#gci;AkdJqVpe,Ii#eY&\8Wf[1?pQ,jBiSieVj5f:_k2tjikl0fIlKeH9s6TgSrU9dU!:g$Y
+s7?6^r:U'_rV-']qt^$`n,)kWq#0IVJcC<$WrIS~>
+JcC<$JcC<$bl?]%o_nL]oDAI^rV??crqHEcr:U*^s7?3[s7$*YrU9dS!:BdPs6K^MrosIH"6WW^
+;tj8e;u]hp<W>tt<;okt<;ohh<;fhre,RkodJqSnci)/hc2Z#ebQ#`bao9?]a5p8!;?0Yn<;BGo
+<)Z`p<!#ur;Xm`c;uTbq<W5r!Uf(.g<;9Dl;Z'Df;YX2j;Ya/i;Z9Sp;Yj>g<;T\o<;]bo<WQ9&
+rDWYos&8_mrDWSmpeprepJUlhrE&quq,dSup/h8prDibrr`'/'='&F(S=KPKs.9$cr)<8fpf7>n
+!)ibo!E<(u<rH%s<<#ts<;T\k<;fbq<;T\q<<#tp<<'o5`W!mUa8F$Xao9H]bPo`cc2Q#gci;Ak
+dJqVpe,Ii"eQQ0`@.m=o:(C(XiSieVj5f:_k2tjikl0fIlKeH9s6TgSrU9dU!:g$Ys7?6^r:U'_
+rV-']qt^$`n,)kWq#0IVJcC<$WrIS~>
+JcC<$JcC<$cMuu)o_nL]nb`7\rV?<brqHHdr:U*^s7?3[s7--YrU0gUmHso>s6B[MrTOIKkND!$
+rh'1]s./hQs/QF,Xfeh1YHY:<p9je+s0r!;s3gknrm:\krQbGfs31Gb!m8X,rlG,[!lgFfrK@)B
+rK78HP*(n&OT(=;Nqn\3Y6(r5YPbR'Xo5F%Yl1d)YR.M;Yd(I=ZEoLKrJUN2rep9'qht6.qhtK5
+!/piYr3$('s0)O/Yl([)Yl(d+ZMq3/ZiIN4Muo!!NqA>2Nr>"=Nr4t9NW>.:O91Q-P5:CB\cBAA
+](ru=^&GbQ^qmn*`5Ta;aiOG$qoSfZrlb5`"3o-9bl!t1SGnlOR.m$JRfAiWSGo,ZT`1VgTZ>-p
+b0'_*!6Y5_rlbGgcHc=5qp>2cr6>>idJ;5ee,R;`_u@UO`W!mVa8<sXaoBN^bQ#fdc2Gohcd:&<
+dJqW#e'u=ZcdULb`VROL_[YP_iSrnXjQ,Fbk3(pkrojLLlg+Q:!q#FDrpTmVs7-'Ys7?9_qt9s^
+rV-$\qYBs`n,)nXq#0LWJcC<$X8d\~>
+JcC<$JcC<$cMuu)o_nL]nb`7\rV?<brqHHdr:U*^s7?3[s7--YrU0gUmHso>s6B[MrTOLLkNCu]
+L&?W(L%U-!K`Hl(LB*//MZ8V5N;\\4N;eh:df%Smd/VGjcMu/hbl,]db/qd)aT'9^`dWC8I0>"I
+I=-G@HN8HhHNJM?Hi/3fHhr$gH2*3qL\uu)M>rJ4MuJV1MtqYdGl;jcGk64XGlN$hGl<HuM>rJ0
+Mu8P4MuJY8MuJ\6NV.PsHLlF[HMi$gHN&9_I/K&uOT(:JOHGcmQ'R`&Q^F0:Qi36LQi<?PRJiKQ
+Qi*?QSGn*9K):2sK)UE%K`6`)L]!G:PQ@&8q3V&IrKm>I!gf:Arg<bTrgWqXnt#ftrPSWQqo/QS
+rl=oWs2k;`rQG5bs3:Mf!mf6?rmCbo$IdLlSY2aTOH>NapQ5E;%H-4(ioB([jQ5OdkND(.klU/9
+li-5PmI'EAn,MnWnbr%YoDeI[p&=[`p\+CYq>'mUqtU*arTaB5s+13Ns*t~>
+JcC<$JcC<$cMuu)o_nL]nb`7\rV?<brqHHdr:U*^s7?3[s7--YrU0gUmHso>s6B[MrTOFJkND"&
+<:j)h<;T\q;ZKeq<W?"u;tX,h<WCMGdJhMmci)/hc2Z#db6#i.ao9B]`ra7Z;uKVl;uKV`;uBVj
+;Zp&u<)cfq<!#ur;Xm`b;u]hr<W?%u;ZB\q<;0>[;YX/j;Yj8i;ZBYq;Ya8f<;]bo<;]br<WZ9%
+<r>nf<;]\m<;oho;Yj>j;YsAm;YsMm=8c1q=8uCr=8u>"<W#ns<<H9'='#6gs.''erD`eq!)iGf
+r`&Vlr_i\n!E<(u<rH%s<<#ts<;T\l<;]\p<;0Dj<<'i6_u@UO`W!mVa8<sXaoBN^bQ#fdc2Goh
+cd:&<dJqW!e'qB"=^,2):&[lt:Z13jioB([jQ5OdkND(.klU/9li-5PmI'EAn,MnWnbr%YoDeI[
+p&=[`p\+CYq>'mUqtU*arTaB5s+13Ns*t~>
+JcC<$JcC<$ci<,+o_nL]nb`7\r;$3arqHHdr:U*^rq$-[s7--YrU0gUmHso>s6B[MrosIHs6'FE
+!2'4]!1ihRr0m\eri?I/Y-+t3Z*UgF[C5q>qmQO6rj`!Us3UbkrQbGfs31Gbs2k>`rQ#,^`l?!:
+plYW@rK@2CpQ5B8qi:B0!3Z7'!jJr6riZ4%r2p((Yl(^)YQ1m+YQ;#7rf$c5qMbE3onrI$r/CE/
+rf$fX!NrR'Xp)#5Yd(F:ric@+qm$1,s0M^3rJU]7mZ%4+!0-r;r/L`:qMtZ=Oo1CBPQ&,q]=PSc
+q7H^@rkAZQ_8=./`Q%nurl5#[qoSi[rQG,_!mT$8rL3bUqj7/HpR2#L!h5^Nrh'1_s.Kh?a2l?E
+b/qcJbKJ-/bPo]ec-FW4chl)bci),icd;F7r6kY^qni<Lrl"]Qs2P&Yr5eo[s2t;`s3(JfrQYJj
+d*Vd>"k(-#_o^4&`VROL_uJX&iSrnXjQ,Fbk3(pkrojLLlg+Q:!q#FDrpTmVs7-'Ys7?6^qt9s^
+rV-$\q>'j_n,)qYq>KRWJcC<$XoEn~>
+JcC<$JcC<$ci<,+o_nL]nb`7\r;$3arqHHdr:U*^rq$-[s7--YrU0gUmHso>s6B[MrosIHs6'FE
+re1E,Kn]5Rr.>!'reC<*#De4oMMm@MMuJ\6Mu8P5NW7E+d/MAicMu/hbl,`baoKQ^a99Q'`l5pr
+I/eWmI.Vd]HMr3dHN&3bM#W8.M#)u.MYrA4MYrD,H16(UGQ)j]H2)X`H2EC!M2I2eMu8P5MuJ\8
+MuJ\8NVdtsH2W'_GlW*fH2W!eH2W'`HiJKjO7eV6Ns:]/Pa.N"QM-[EQMm0GR/NKRS,7d5K):3"
+K)L?$K`6])LB!&+Q2d'MQ'Ra3Qi<BNQhZpLQ^F0=RK&cVSFW3N_>D+J_u@UO`W*sWa8F$YaoBN^
+bQ#cdc2Gohcd:&<d0J*`Pa@l3Ocf<urK7-<$fU+*j5f:_k2tjikl0fJlKdd8liQSBmf)\TnGi%W
+o)J=\o_\=\pAOaZq"aa]qX==Wr;$<Urdk*#s/l<O~>
+JcC<$JcC<$ci<,+o_nL]nb`7\r;$3arqHHdr:U*^rq$-[s7--YrU0gUmHso>s6B[MrosIHs6'FE
+qc*&`!`W0!rD`nu;cN`r!EN4l<;ontdJqSmci)/hc2Z#dbQ#]bao09`a2Z-<`V<=2;u'>f;tj8b
+;Zp&u<)cfq<!6,t;H$Te<<#kt<)`cqs&K%rs&8nrpJ^W\p/CuhqGI8jr_ierrDN\or_rYmr)NYo
+r)Nbt!*/nor_rMir)<Sor)<Mkr)<Jjr)3Vq;u0Pn=8Z+p=8uD$<rc:u=8u>#<Vohr<<?3&=8eTf
+S,6+c<)Z`o;Y3oe<;BMo;uT\o;[$-#<`W:&rDieq!*/tsqc3Gk"]J;t;cH`i<W,ks_>D+J_u@UO
+`W*sWa8F$YaoBN^bQ#cdc2Gohcd:&<d07rs;cQn$o1f3Z%Su$@iSrnXjQ,Fbk3(pkrojLLlg+Q:
+!q#FDrpTmVs7-'Ys7?6^qt9s^rV-$\q>'j_n,)qYq>KRWJcC<$XoEn~>
+JcC<$JcC<$dJr>-p&4U^nGE+ZrV?<brV-?cr:U*^s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+!9O0N!1j+Z!1WnVq3qemX/rD)Xfeh1YHY=>p9jh,rjN!>d*L&9cMu/hbl,`bb5]T_aT'9\`r3jW
+`09kWs,m&;rf@#<s,I#:qMbT;O0#M]Y5tl4riZ:'s/c.$!O&a*YQ(g,YPta+Z2T^ZMu&D3MtMu-
+MuJV2MuJ\/MuS_9Mu0XTXp)#5Yd(F:ric@+qm$1,s0D^4rJLT4s,>utqMkW<OHKF's-!Gprji3D
+]"5NL]E#YE^Bq]l_SjC3`lQ9Crl>&[qoSl\rQG,_!R8phQiNQKQhm*ERJiQUS=Q8NT*V*`TuP*m
+aN2O'aTK]/bKTt/rlbGgcHc@6rQkSkd.u#dc2l8<p<rrhrkSNLqni?Mrl"]Qs2P)Zr5eo[s2t>a
+s31MfrltVld*U2>^&c$dqo/HNq8<6j$fU+*j5f:_k2tjikl0fJlKdd8liQSBmf)\TnGi%Wo)A7\
+o_S7[pAF[Xq"aa]qXOIYr;$<Vrdk*#s/uBP~>
+JcC<$JcC<$dJr>-p&4U^nGE+ZrV?<brV-?cr:U*^s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+!9O36!JZ=-KE-Z&K_^9#L&Zo(LBWKjMM[4Jrepc7rJUT4"-([Rchu)gc2Z#dbQ#`bao9B]`rO-X
+`;mjPI.Vd]HN&9kHN&3fHMr*hLA6T)L\uu)M>rJ5MZ\ipMi.Ikpj):Pqfi'bpj)RXs*4ThqhY9/
+!/gW2r/CW5rf$l8rf$\urH\'^qg%p\qfr0fpj<$gqN(W;!0@#=!KiKCNs1W.Pa.N"qj.;KrKmJK
+rKm8G!1ES4qL\?lre19)!euJcqj%/F!gT(;q3V)JrKmJM!13PLrL!\TS,JlMSc6G(_>D+K_u@UO
+`W*sXa8F$YaoBN_bQ#fdc2Puucd:%dQBd\uQBIAmOHG\$OSb1?i!\N'j5]4]jlY^gkNMp0!p]+;
+rp0^RmdC)Cs7$'YrUTsZs7H0\rq?9ap%\@Yq>0XYq>C'elMcA7JcDnQJ,~>
+JcC<$JcC<$dJr>-p&4U^nGE+ZrV?<brV-?cr:U*^s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+!9O,Xn5BBd;cNWo!`W)tr`'##<E8Wi"'*^ochu)gc2Z#dbQ#`bao9B]`rO-X`<!nUnP]6_pf.8l
+r_iJh!E<"p<!6,t;H$Tb;ufkr<!-,u;cETnp/;#j;cE9cpeq/jrDEGis&/qr<;ohr;Z9Vk<;]bo
+<;]_r<r,_j;ts>g;ts8h;u9Ji;ZTirq,[Gqr)WVps&f8%s&T/$!*9)#!*9%uqc<\r!EN;$QiNQR
+<;BJi;Y3o_<<6&tr_i_o"]SK&<``?#<W5tt<W,no<V]St;c6Ll<)iQkr`&m4rk\KKrkn`Rqo/TT
+s2Y&Ys2k;`rlb>cs3:Pg#g^lEd8j7G;cN?_r([_ti8ESRj5]4]jlY^gkNMp0!p]+;rp0^RmdC)C
+s7$'YrUTsZs7H0\rq?9ap%\@Yq>0XYq>C'elMcA7JcDnQJ,~>
+JcC<$JcC<$df8J/pAO^_nGE+Zr;$0`rqHEcr:U*^s7?3[s7--YrpTmTs6]gP!pf.:rosIH!9a@D
+s5j9Ps.'.[rgWhUqO@JS"0/E&XT#@%Y5b[,Z*Uh3[/m_FrjMg8!4`$RrltJerQG5`s2k8]s2Y/Z
+rl+oU!5n_us-!>E!0[8BqN1`<qi:]9rJ^T4"HJP(XKMH(s02L*riQ4%riH:*YHY50Xobf2Yl:j(
+N;JP1N;nh)MZ8V7MZ8V6N:Vu(XoGO/Xfek3Yd(F:riZ=+riuL/s0;R/r/1K3s,>utqMtT:rK.&A
+s,mGI]"@sQ"1u.U]D9,>^AkqS_8=+.`Q#s>aiOJ%s2b5^!6G/]s2t;`rQGJjcBjocQ'V02r0[8I
+rgNkVs-s:aStDXJTuI#N!QW:ZaT0K\bPo`bcMZ#ed.biicHXVZcdDF6qnN-Grk\KKrkn`RrPecU
+s2Y)Z!m/U-rQ>8dc-?75!71SW!5JBLqo&?Krnmh9ir7s=jQ6C'!U&\GklU/9li-5PmI'EAn,MnW
+nbhtXoD\CYp&4U^p[n7Wq>'mXqt^0crTjH6s+13Rs*t~>
+JcC<$JcC<$df8J/pAO^_nGE+Zr;$0`rqHEcr:U*^s7?3[s7--YrpTmTs6]gP!pf.:rosIH!9a@D
+s5j67!JQ4+KD^DtK*6j^KnY9WLBNHkM2I2hMuSb7Mu8M6NW.6&c2Z#dbQ#`bao9B]a8a0Y`W*jV
+_tJKPHhi!eHiJEjH2N!dGlWToM#W8-M#W;3M#E2/MZ8V6MYDDaGl)^aGklXVGl!6rM>rJ1MZ\or
+N/[aorJ^`6q0;g_s*FTgpNl^^rHS3brHeBgrd=^+!0I/?s,d8Ar/gr@rf7/COcu(0QM[!OQC!r(
+Qi36KQi!-OQ^F05Jc(,mKDU?%K`[!aPkp[EPQI,9QMQsHR/NBMR/`NMR/NERR[a,CqjmW!rkSNL
+qni?Mrl"cSrl4uYrQ#&^b0'\+!mJp6rlteqR$X,(P`q;or/pl<qN:d8!TE&;irS6&roO7Ekl0fJ
+lKdd8liQSBmf)\TnGi%Vo)J=\o_S7ZpAF[Wq"jg^qXXOZr;$<Wrdk*#s0)HQ~>
+JcC<$JcC<$df8J/pAO^_nGE+Zr;$0`rqHEcr:U*^s7?3[s7--YrpTmTs6]gP!pf.:rosIH!9a@D
+s5j2YmSa3b;c?Zm<W?"s<W?,"<V05j<W:;Cc2Z#dbQ#`bao9B]a8a0Y`W*jV_u*I5;Z0Pn;Y!cc
+<<#nq;YF&h;ufkp<!?2u;H$Rqr`&ksrDWbqr)EYos&/boohtigr_rAc!`Mupr)<;er_rhrr_rhp
+r_rYm!EE+u<W#hp<V]Ph;tj8g;u]be;u9Jk;ZK_j<r?%u<r#hs=T)>$<rZ5(<``@'<rH%s<X;c-
+<E3($Q^F0;<;TSp<)`cooi(ihr)Nbts&B/#;c?Tm;[$-#<`W:'rDihrs&K"sr)NMk"]J;s;cH`i
+<<-"q^])%J_>D+K_u@UQ`W!mWa8O'\ai_d)b6#o4c2PumcWO@N<Duff:&7WahuVfrro4%?jo4BC
+kNMp0!p]+;rp0^RmdC)Cs7$'Yr:9mZrq-'[rV$0`o_A:Yq>0[Zq>C'eli)J8JcDqRJ,~>
+JcC<$JcC<$e,SV1p\jg`n,*"Yr;$0`rV-<br:U*^s7?3[s7--YrpTmTs6]gP!pf.:rojLJkNDj,
+"m+h+SXl;MS,AfPS,]#XRg,mnX/rD)Xo>I+YHbC?[.q'/[K<qH[f3c9c2Z#cbQ#`bao9B]a8a0Y
+`W*mV_uIUJPPpXEOnk+=O8Fq;NVnb2NW+q>X/rH#Y5tl4rN6.&riH(#!NrX)Y5b[+Ycmq_qMY<2
+s,6i5s,$]3s,$H,p5Ag*s,6]Ts/la3Y-5%5Z*:I9YHY81Z2_-/Z29FXMu&CsNVSV3O8b4AOcoUQ
+s18<C]D9,>^AkqS^r""-`Q#s>aiOJ%s2b5^!6G/]s2t;`rQGMkQBmc"Q'I[3Qhm*JRK&ZQRJr]S
+Sc>;]TDlh0`W=-$r5er]qTJo_rm(GfrQt;b"jYB;cHsu4df7#[^AG\E_#D1J_Z%IQ`;R[T`rF*X
+aT'?^b5KKbbg"E3^&>\@`Vd[N_uIUQhuVfrro4%?jo4BCkNMp0!p]+;rp9[P!:KgSs7$'YrUTsZ
+rq-'[rV$-_o_A7XqYKd[qY^0fm/DS9JcDtSJ,~>
+JcC<$JcC<$e,SV1p\jg`n,*"Yr;$0`rV-<br:U*^s7?3[s7--YrpTmTs6]gP!pf.:rojLJkNDj,
+"m+h+L5(B\KD^DuKDpQ(KD^K#LBWKjMM[4JrJLZ7r/:N4s3:Sfr6,,_s2k8]s2Y/Zrl+oUs24lR
+o6gF^q0N$es*FWhqKi*cs+UN/pk\s*r.tB0s+pZ2rJLW5!/gZ!!-nKgoQ^C[rHS-^s*4Edq0;d\
+s*4?qs,$c5q2>93repc7s,6Ysnp0kRp3HX`r-SEjrJpr?rK$u?s,[)>s,m;A"-AY/Q2[*LQN3?N
+QNWV@Q^4!:QMm0JR/`KPJG4WkK)L?%K)L>sK`?c*Pl$aFPQI,9QMQsHR/NBMR/`NMR/NERR[`u?
+!hI$<rkA9ErkSNLr5/HNs2=lTs2P)ZrQ,#\!6Y8`!mJp6rKmYQQBqN6s-!ADr/g]9rnmh9ir7s=
+jQ6C'!U&\GklU/9li-8Nm/ZSQn,MnWnbr%XoD\CYp&4U]p[n7Vq>0sYqtg6drTsN7s+13Ss*t~>
+JcC<$JcC<$e,SV1p\jg`n,*"Yr;$0`rV-<br:U*^s7?3[s7--YrpTmTs6]gP!pf.:rojLJkNDj,
+"Qe_*<)i0^"&Vur<;TYs<)Zcq<W?,"<V9>kc2Z#cbQ#`bao9B]a8a0Y`W*mV_uIUQ;XIE^;Yj>j
+;YF#l<)Zaq;u9Ms;c6Lm<W5tq<<?,u;uBSq;c<Tns&B"ss&/\lr)*MnmS`p\p/:ohs&B%ur_rhp
+r_rSkr`/kqs&Jhls&8hnq,I)eq,I/grDNSm!)iPlrE&quq,dSurE'#"s&T>(='&F'rDies#Zk&,
+<E>EO;cENlr_reqq,@;krDW\ppJq5ms&/nqrDNl!<E<.%=8Z(u<<#ts<;]bk<!?2u;H$Oop/V.+
+rkA9ErkSNLr5/HNs2=lTs2P)ZrQ,#\!6Y8`$-^Z=>?b96=B8Go:&%K_huVfrro4%?jo4BCkNMp0
+!p]+;rp9[P!:KgSs7$'YrUTsZrq-'[rV$-_o_A7XqYKd[qY^0fm/DS9JcDtSJ,~>
+JcC<$JcC<$ec4h3p\jjan,*"Yqt^'_rV-<br:U']s7?3[s7--YrpTmT!:BdPs6K^MrojgSkND!i
+jlPR`j.2_>S,AfKRg#7ZWiE,$riQ1&"L#&7ZaBM8s0hp9!k,SIrQG2_s2k8]s2Y/ZrP\iV_o)Jj
+s2"Al!0[;CrK.#>r/Uf:q2G'-"0/E(Y5>C'Z*4/0"0JZ*XSo7%Y-7c+!jAhfrf$T0!0$o8regW1
+!/g]2pkf'.regZ4pPK$1MMh22%'H_7YHP18Yct=7Yd",3s0;X0pPJs/pl,64s,?i7q2G<4q2Y?5
+s,[AEOcm8cr4;p?!4qs<&&#]l^VI_(`5Ta:aN;NDa8X0[aT0E]aoBN_bP]QcQ'7F2PlI!KQMQsG
+R/WNOR/`QWR[]e:SbnuY`;[^X`lH0Ar5er]q9&c_rm(GfrQt>c!7(Sg!m]0?pX9#Qrk8<FqnN0H
+rk\NLs24lTrPefVs2Y,[s2b8`rQG5RrOr6Fpr33MqnrBL"Q/.qiSsjs!T`AAjoOZ/rosIJ!:0XN
+s6]jSrpTmVs7-$Xrq$-]q=X[ZqtKaXq>'m`o_\L_qYfd[JcC<$Z2]=~>
+JcC<$JcC<$ec4h3p\jjan,*"Yqt^'_rV-<br:U']s7?3[s7--YrpTmT!:BdPs6K^MrojdRkND!i
+jlPR`j+RA`re1#us+CK,JqAROLA6N-M2I.HMMh1erJ^]urlY8_rlG,[s2P#V!lW!orke]OoR-I]
+qg/9hrd+Kfq0N!breC0'!/LK.s,$c3re^T2s,-l'rd"He!."6^r-&-cqfhm]!."BbpNH[`GB`h<
+!f;elq2>93repc7qKVISr-IdVrd+Qjr-\F'!0I/?s,d8Ar/gr@rf7/CP*D72QN*9WQC!r(QC!r(
+Qi36LQi*3PQ%+;_JG4WmK)UE#K)UDsK`./3Q2d'LQ'V64rL!PMrL!SNrL!POs-`qWopkunrk8<F
+qnN0Hrk\NLs24lTrPefVs2Y,[s2b8`rQG5-r0RJNrKI8ErfR2Ap5oL8i8ESRro4%?jo4BCkNMp0
+s69UMrp9[Ps6fmTs7$'Yr:9jYrq-$Zr:^$^o_A7XqYKj]qY^3gm/DS9JcE"TJ,~>
+JcC<$JcC<$ec4h3p\jjan,*"Yqt^'_rV-<br:U']s7?3[s7--YrpTmT!:BdPs6K^MrojaQkND!i
+jlPR`j6KYD;ZBSq;cH`n<<?,u;uTer<rZ1n<;k#>b5]T_aT'<\`r3jX`5BLl_Z.IL;Xm]b;Yj>i
+;YX2j;?]uu<)Zapqc*So!`Dutr`&eq!`W)sr)ESms&&hor_iVlrDNYmlVd^\p/:oh##\K%<)Zap
+r_i_oq,I;mrD`Jg!)rbmqbmJoqG[Akqc!MoqG[;irDN\opK%2nrDr_qs&f5$s&K>*<`W:'<`]0!
+r`9&#s&K/#Q2FSQ<;]\m;Z9Vn<;9Jn<;KMs<)lt#='#6!s&B"urD`\pq,@>mr_`er<)iTlrOi-C
+rkA9Es1nWMr5/KOs2=lTs2P)ZrlG,]!6Y8`s'#D+!a8`.ohG-T"Q/.qiSsjs!T`AAjoOZ/rosIJ
+!:0XNs6]jSrpTmVs7-$Xrq$-]q=X[ZqtKaXq>'m`o_\L_qYfd[JcC<$Z2]=~>
+JcC<$JcC<$fDk(6p\jjan,)tXqt^$^rqHBbr:U*^rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+s5a7Aro4'MS"';FoUGiK"K/9"X/u9%riQC-Z*UgEppL.1rO2pQb0%iJrQ,#Zs2P#V!lW!orke]O
+s1nJpqNCl@qiCf=qi1Z9o8N^/rJ^cV!irE*ql^7/YHG%1XfST$XT,F'YPkU,N/`gUN;8D2N;eb4
+M>rA5M26ueM>N2-M>`>2M$&QjM2M4f!K)a4XT5O%XTkr1Xfek3Z2Us.YH\#2s0;W]pPS^'pPf*0
+r/CZ8pl>95s,d8A!K`HC\bs&=])]G;]FV]i^V@S$_o0O6a2lBDa2e2#s2bDbaiV]JrQG/`!L/fG
+PQ7!JQMQsIR/WNMQj&nHR[]h<rLO).`5MYo"3/C&aSs<]b4s-[c2Pugd/MAid.biicHXVZcd;F7
+rk&'?rk8<Fr4i9Irk\QMs24lTrPefV!6>)[s2b;abPo-R]`,SE`:q7L`;RUN_?AcSi8N\pirS6&
+roO7Ekl0iHl2^/Lm/QJQmf)\TnG_tUo)J=[o_J1XpA=UUq"jg`qXj[]r;$<Yrdk*#s0DZT~>
+JcC<$JcC<$fDk(6p\jjan,)tXqt^$^rqHBbr:U*^rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+s5a7Aro<s0!/19&!/10#rdk3&J:RQPpkJm,MZ/J4MYN,0N!.>Hb/qd(aT'<\`r3jX`5BLl_Z.IP
+_"N0THi&-hHi89iHi89hH2N!gH2i3hH2WHtL[p9$M>rD1M>iD3HN/9gGQ<$bGk6.VGlN!fGl)^a
+Foul1G'Ek-!I&_cL]E;0M#W;3MYW/1N;\Y7N;.Y`H2`'YH2`-iHiAElHi&j(OSt7?OT1C>OT1IB
+NsCc0Pa.Q$QC%T:#+(XAQ^=#)rg*MLrL!G3p4<3pre('!re('#r06r@s-EJIrL!SNrL!SN!LT;S
+R/NERR[`u?rk&'?rk8<Fr4i9Irk\QMs24lTrPefV!6>)[s2b;abPmh-Qi<?PP5LODP5^RDOS"Y<
+hr*GOir7s=jQ6C'!U&\Gl2U#Kli-8NmJlVRn,MnVnbhtXoDS=Wp&+O\p[e1Vq>:$\qtg6drU'T8
+s+13Us*t~>
+JcC<$JcC<$fDk(6p\jjan,)tXqt^$^rqHBbr:U*^rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+s5a7Aro<NI!`DrqrDNYm"Ahrn;cNTns&8nsr`9"upf%C>b0%iJrQ,#Zs2P#V!lW!orke]Os1nJ/
+k>V=Wr)<Vns&8kor`&kqqc*Mm!*0"tr)Eet;cEZpr)3Snr_`Vlqc!DikYhCW!`2`kqbd\u;HHn"
+<)lmsr_i_oq,I;ms&9%s;H!Bhr)3Plr)3PnpJLugr)3Pnr`&_mrDNVns&&hop/_)mrDr_qs&f8%
+r`05)<`W:'<`]3"rDrr"s&K,!qc!#a!)r_lr_ierqc3Ysr`/ttqc!Mps&T/$!*8ts!`W0"r`&eq
+pf%Dq;GpFm<;0Dl]DK8?^&GbD^]2+K_>V7N_uI[R`W*pXa8X0[aT9Q-r`T8)s'#M-9_M3Q:'BJ4
+i8N\pirS6&roO7Ekl0iHl2^/Lm/QJQmf)\TnG_tUo)J=[o_J1XpA=UUq"jg`qXj[]r;$<Yrdk*#
+s0DZT~>
+JcC<$JcC<$f`117q#1!cn,)qWqt^$^rV-<bqt:!]s7?0Z!qGdLrU9dS!:BdPs6B[MrosIH!9a@D
+!p/M(ro4"<qjd5Hr0dbdWN*#"rN6%$!O8s0[/%-0[f*Z8ao0<\a8a0X`W*jV_u7FR_8*kc^\j;o
+P5UO<O9(E&r/LB.s,-r;Mi@Um"cTI]X/rK$Y5kg+Y5bU)XK29#!3Q4&rJ^N0rJUf9MMh@hq2#$,
+rJLN0!/UN/!/UW0",MejM#<)0XT#@%Y5GC+Y,nb.YHY;2YQ:r3rilK[M=QPsMuSY7Mu8J3MuSb7
+NW"n2NrY:?\bs&<]D0#L^;%Fu_8=+/`lH-AaiMNCrQ#/aaN;QHb5KN`bkdS(Q2[*FQi<BNRJiNQ
+RK&`URg>OTSXuFk_o0Lm`<4-#aN4>%rlY,]"3f$8cMZ#ed.biicHXVZcd;L9rji$>rk&'?s1SEG
+r4i9Is2"ZNs24lTrl+oW!6>)[!QhqO]DoMD^&GtE`VmaS_u%:S_;F2/iSsjs!T`AAjoOZ/rosIJ
+!:0XNs6]jSrU9dUs7-!Wrq$*\q"=RYqtK^Wqt^-cp&"U`qYfg\JcC<$Zi>O~>
+JcC<$JcC<$f`117q#1!cn,)qWqt^$^rV-<bqt:!]s7?0Z!qGdLrU9dS!:BdPs6B[MrosIH!9a@D
+!p/M(ro4"<q1J^#q1JZur.4j%!JcF)LB33grJ:N3pl#02!6P2\s2Y/ZrPefT!5ncP!l;[frkJ5U
+s*OBard46_pNZamre:E.nqd=&reUQ1"H%MOH$T41!."Ken9=nWqKDp_rce?br,qgY!/LN/!/^W0
+s,$c5qMP?4repMqms,"[GB\<0GPHF]H2DpfHN8HmHhrd'OSt7?OT1C>O9gu1O,oBbPEhI4Qhm!J
+Qi*0JQiEHQJ,k0!JFnElK)L?"K)UE!K_q#.Q2d0GQNEP@R/NBMR/WETR$jA0R/NERR[a&Arji$>
+rk&'?s1SEGr4i9Is2"ZNs24lTrl+oW!6>)[!6P/)s-E_Qrf[2Cs-!DE!0Zr9"Q/.qiSsjs!T`AA
+joOZ/rosIJ!:0XNs6]jSrU9dUs7-!Wrq$*\q"=RYqtK^Wqt^-cp&"U`qYfg\JcC<$Zi>O~>
+JcC<$JcC<$f`117q#1!cn,)qWqt^$^rV-<bqt:!]s7?0Z!qGdLrU9dS!:BdPs6B[MrosIH!9a@D
+!p/M(ro4"<pJ^ufr_rVj"Ahrm<)iZn"&i0!<W,tt<V]Soao0<\a8a0X`W*jV_u7FR_8*kc^\h"%
+;u]h`;tj2h<;ohn<;fbo<;]_u<)Z^pr)3et;,L4h;c<Kks&/_kmns-_r_i_mrD3JkqbmGms&TA)
+=&i7"<;oep;uT_r<W,nq<W>qr;Y3i\;Z0Gm;Ya2i;Ya5k<;ohr;Z9Sr;Gg<a<r?%t<r#es=T)=t
+<WQ9&rDiess&T8#<)ifpmSj0br)3Mms&Anr"BSW)<E9#tr)3i"<E3(#='&H"<<6'!rD`\ppf%Dq
+;GpFm<;BPn\c02>]DK8@^&GbD^]2+L_>V7N_uI[S`W*pXa8X-]a]_mI=oVY*>Q.=k:%M*`:Z(*g
+iSsjs!T`AAjoOZ/rosIJ!:0XNs6]jSrU9dUs7-!Wrq$*\q"=RYqtK^Wqt^-cp&"U`qYfg\JcC<$
+Zi>O~>
+JcC<$JcC<$g&L=9q#1!cnGE%Xqt^!]rV-9ar:U']s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+$0C7/j5].YiLHG3RfJoTS,/Q[W2HSoX/i>(XfVK(s02R0rj;L/!4Mm9s2b5\s2P#Vs24oTrPJTN
+!5STKs1SPtPEYp-q2tZ;"-AS)Nr4n/N:r/5W2ckuXKDB'#I(D7Y-"h-X8T+#X0)B(rJ^K/s,6u:
+MZ/J+M#<,/L]E;0M#N82M#2u,M#<)0XT#@%Y5GC+Y,nb.YHY;0YQM.cLktk`onrR'qMP60!0$f7
+r/UQ5!4`!<r4;m>pq.-O^V@S#_Sa@4a2c<DaN)?ta9'K+b5TQaQ26aEQ2d0DQiEHPRK&`TRK&`S
+S,]#YSc-M*`W*sXaSa0[b59?^bl5occi)5bcNVV=c-FY_qU5DRqml^;rk&*@s1SEGrP/BJs2"ZN
+!lMsprl+oW"NSTo]"7jPs1J?Lp;R$LrPSTNrkS`pi8ESRro4%?jo4BIkNM-ol0@R"rTsRO!:KgS
+rp]sXqssaXrUfmXqtBp]o_A=Zqtg!_qu$<hmJ_\:JcE+WJ,~>
+JcC<$JcC<$g&L=9q#1!cnGE%Xqt^!]rV-9ar:U']s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+#Nb%-j5].YiVJ3,K_pE#K)^B%K)L9#L'NEeLPCP=LPG\]!JlX4M>rJ.MuUlua8a0X`W*jV_u7IP
+_#V:M^]2%BI/\KSHM2XaL'*-aL55>Ure^Z2re^Z$s*=Ebs*=Whp36IYr-/*_!-e?as*"HdpiZFV
+!/LN/!/^W0s,$c5qMPB5MtqSrGjfqXGkuXYGl)dbH3&A?rd+X*qMtW<rJpr?rf?u=#a(41O-#Kf
+Q'VB8pm(oFrg*PMs*auuJGt*"JFS3jK)UB)KS+o/re($"qNU`>s-EMJs-NhRR/NBMR/WEPR/WKR
+R/NESR[]fBSH$+r\c02>]DT>A^&GbE^]2+L_>V4P_o0Lm`W*pZa2jPCQN*<NP5LO@P4Oe=hr*GO
+ir7s=jQ6C'#Nt=7l07Kuli$2Mm/ZSQn,DhVnb_nVoDS=Vp&"I[p[n7Xq>:$]qtp<frU'T8s+13W
+s*t~>
+JcC<$JcC<$g&L=9q#1!cnGE%Xqt^!]rV-9ar:U']s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D
+#Nb%-j5].YiV6@L;?0Yh;?Kio:f73ks&B%urDikr!`W0"r`8ttqc*U:s2Y/ZrPefT!5ncPs1n]N
+rkJKIs&/nqnP]Eelr3XV!)`Yns&8eorDNet;c?Zn<<-"p;uT\h;tNr\;Z0Jm;Z9Pn;#O8j;Z9Vp
+;Z0\s<W?%t;Z9Vo<<#tt<<#tr;>X2_;>a>k;>j>g;?'P`;Z]io;=moe=8Z+q<rcA$=85hp<W6%u
+;uKYq;tj8j;tj5l;c<TnrD`_qr`9/%<E8uss&05';cHas<`W:'<r5kt<)rlrrDiSk"]J;s;cH`m
+<WBT+\c02>]DT>A^&GbE^]2+L_>V4P_o0Lm`W*pYa2n*[s'#Cqq+^BS"]+%6i8N\pirS6&roOIK
+kih9qlK[^6m/QGQmeuVRnGi%Uo)A7Zo_A+VpA=UVq"smaqXsa_r;-BZrdk*#s0VfV~>
+JcC<$JcC<$gAgF:q#1$dnb`.YqYBm\rV-9aqt:!]rq$*Zs7--YrU0gUmHso>s6B[MrojLJkNDj,
+!TiDAj8\*>iSaO$r0mSRr0mPO$E0l#WiN2%Xf\\,riQ=+Z*O>8q6^@6\$sAsrPefT!5ncPs1n]N
+rP&HK]tM)XP5g^GP5(1>O91K'Nr"b-N:`#4VlHbtX0&Q%YPt^)XTGT)X8]1%X/rK$N;eb8N;e_=
+MMm@LM2D+cs+gQ/pP8L!q1es+r/(HTriQ4'r2g.*XK8S.YPbX)L]<2+M<ToqMZSiqMuJ\8NVSV7
+NrY:?O8l`h\biu;]D0#L^;%Fu_8=.0`lH-AaiMNCqT&f]b0%nmq3:iCo9TNGR@3uAqO7MUSbpA(
+`W*pXaSX*Zb59?^bl,icci)5bcNVV=c-F\`qpGJQrjVm:qmla<rk&*@s1SHHrP/BJs2"]Os2+iT
+rl"lWrji'?rO`!Gp;R$Lrkn`PrP8Zohr*GOir7s=jQ6C'!pAe2rojLLlg+Q:s6]jSrU9dUrpfmV
+rq$'[p\"FWqtKaXr;$6dpA=abqYfg\JcC<$[f:j~>
+JcC<$JcC<$gAgF:q#1$dnb`.YqYBm\rV-9aqt:!]rq$*Zs7--YrU0gUmHso>s6B[MrojLJkNDj,
+!TiDAj8\*CiS]??JqJ^TK_pDuK):*-Knb;9LPCP=LPCP=M#N/1Ll2.fs,-W1s2P#Vs24oTrPJTN
+!5SQJ"2;I^]_d*THN8BkHiJEkH0fkLGlWQsL&d#"M#N82L]E;1HN/9aGlDpdG5c^[G5HF\Fp)r2
+G'.p&Fo$:]L]*#/M>W20M>rJ0MZA"tGQ)jVGlW*fG5ugbGQ2mfH2;d]H2i0jI/SElNr"e:OSt4?
+OT(==O9gu1OH5KcPEhI4QhZjHQ2['LQi;F7It6j9!eQ&Vr.Fj!s+LH<q3:W=s-EMJs-W\MrL!SN
+!1<bR!1<_Q!1NnVqj[YprjVm:qmla<rk&*@s1SHHrP/BJs2"]Os2+iTrl##[Q'IZ%r0I8Dr0.#@
+oT9=6hr*GOir7s=jQ6C'!pAe2rojLLlg+Q:s6]jSrU9dUrpfmVrq$'[p\"FWqtKaXr;$6dpA=ab
+qYfg\JcC<$[f:j~>
+JcC<$JcC<$gAgF:q#1$dnb`.YqYBm\rV-9aqt:!]rq$*Zs7--YrU0gUmHso>s6B[MrojLJkNDj,
+!TiDAj8\*AiS[X5;Z'J^;ZBYs;,C-h<<#tu<;ol#<)Zar<W6%s<W#hr`r3mV_uR^R_Z.FP_#;"M
+^:h4mnPfEblr3OS!)reps&8hprDN\qr_rhrr`&qtr_reqr_rhrr_ikr;cEZnoMP?\rDEPlr)*>h
+r_rhp!*K2$s&K(ur_i_or`&ntr`&blqbZcZqG@)erDN8d"]A8s;Gg<_<r?%r<r5qu=T)=r<rH"u
+<r>ng<;]Yp<;ohn<<#nn<<#qu<rQ/#<rQ+t<!uW(<)Zar<E<.%='#2uqc*MopJ_;p;GpFm<;TYq
+[f3c8\GNi:])K>>]`5\F^AYhH_#M7M_Z.LR`;[^V``i1@!DZAg9_hEQ:'KM3i8ESRro4%?jo4BD
+kNM./klU/9li-8NmJlVQn,MnVnb_nVoDJ7Tp&"I[p[n7Yq>:$^qtp<frU'T8s+13Ys*t~>
+JcC<$JcC<$g]-R<q#1$do)&7ZqYBj[rV-9aqt9s\s7?0Zs7--YrpTmTs6]gP!pf.:roj[OkND!i
+jlPS&irnB#iS`YjS,A]TS,/TLR0T[gVl?\sXK;E'riQ@,Yd(P6[/%-0[f48G_uR^R_Z.IP_#D+K
+^&YkG]E#S=P5LIBO8k7;NUr,+MuSb9MuSb8M[-2YWiE,#XKME'riZ:'s/Z.#!3>aNreg]3reUH,
+!/CK.reCE+reCH.pk\^#qhY9Q!3H1%s/u:%"g4u/Xfnr-Yl':PM#N7tMYN)0N;8J4Nr+k;OT)ch
+\biu;]DoPD^&>SS]tV7r^qmn+`Q#s=aiVWEq8`WZb*2gh!0d;Erg!MLoU#NEs-ihSrLE`&rP\iX
+a2n/"s2t5^!6kDerQkGhps/rcrlkMid*_g?!4D^4rjVm:r42j=rk&-As1SHHrP&EL_86,fs2+oV
+\@DLJs186Bs2FoSp;R$L!5nfQqnWHmhr*GOir7s=jQ6C'!pAe2rojLLlg+N9!q#FDr9s[TrpfmV
+rU]sZp\"FWqtKdYr;$9epA=abqYfg\JcC<$\,Us~>
+JcC<$JcC<$g]-R<q#1$do)&7ZqYBj[rV-9aqt9s\s7?0Zs7--YrpTmTs6]gP!pf.:roj[OkND!i
+jlPS&is=Z'iS`XGJqJ^TK_pDsK)L9#J..-dL4tA;L5(J=L51T`L\lo.MY`81`W*jV_u7IP_>h=M
+^]2"J^&GYE]Dd3VHi89cH1-(VH2i3jH2i3iGl`YRr.Y3,o8*C&!/UMus*=Ebrce9`rce0]q/l[\
+r,qs[q/u^\rH/0tLPPha!/^W0s,$c5r/:T"q02UYp3?X_rHJ9brce*]q0E!dr-SF'qMtW<rJpr?
+rf?u=#a(41O-#NhQ'VB8rg!PLr0@DLQBqJu!e5`Nl[f"dre(-%rIt9:q3:W=s-EMJs-W\MrL!SN
+!1<VNs-iqVrL<kqqmQL5rj_m:s183ArOi0Ds1\HH!l2Xgrke]Q!6"f#!1*VN!1*JEr0.#@oT9=6
+hr*GOir7s=jQ6C'!pAe2rojLLlg+N9!q#FDr9s[TrpfmVrU]sZp\"FWqtKdYr;$9epA=abqYfg\
+JcC<$\,Us~>
+JcC<$JcC<$g]-R<q#1$do)&7ZqYBj[rV-9aqt9s\s7?0Zs7--YrpTmTs6]gP!pf.:roj[OkND!i
+jlPS&irnB#iS`Ym;Z9V`;?p,u;H$Ii:f@9ls&B%ur`')#;c?Xqr`9&!!*9)!r`&m9s24oTrPJTN
+s1nWKs1SKHrk&<E;H!0ds&/emr_i;cqbmGms&/kqr_ibpr)E\pqc*Djs&B"urDWJjqblu^pJUre
+r_ibno2>TjrE'#!s&Atqr_reqr`/bkr(ul[pJClerDN8dr_i_m!*B/#!*/borE&eqr)Wl#rE'#"
+!*B%ur`/nq!`Drqoi1Zaoi1lis&T,#!*9)!rDWbqrD`ess&K/%<r,hn<;fhl;ufkr;?Bcr<;fes
+[JRE3\,No8\c98?]D]DB^&PhF^B23e_>_=O_Z7XR>5_S->$4Ws:/1^]qG$HS"lA.pi8N\pirS6&
+roO:Fkii$1!p]+;rTjUQmdC#As7$$Xqss^Wr:KaVqtBp]p%\I\r;--aqu$<hmJ_\:JcE4ZJ,~>
+JcC<$JcC<$h#H[=q>L-eo)&:[qYBj[r:g0`qt9s\rq$*Zs7--YrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnme6rgNhUrgNkVq3q/Js-O1kVl6MlWiN2%XfSW'Xotr4Z*Ue9[/%*3[`$)$rke]O
+s1nWKs1\NHrk&9D](V<eOoLOCNrY4=NV\V6MtW,0Mtr>2M[-2YW2ckuXKMN*!j8`1riZ:'s/Z1$
+oo/m.s,$l7Lku%cre:T3L5(D:LAHW'LAlu,M"6<$M#N/3Lo[SXrN-(&r2g1+XfSY.YH[VRs+gZ3
+m#(Rrs,?f6rJpl<!fi>&rj_p;qmug>rk/9ErO`KN^;%Fu_8=.0`Q.qu!6=oVs,mMKPa%Aqqiq)F
+s-E>Es-WeRqj[MRq8E9Os2G)[aSO$Tb5oi3rm(Mhs3Lemd.biicHXVZcd;X=!42[3s0_a4rjVp;
+r42j=s1A6Bs1SHHrkJKK!5\ZOrODg:s1/3Brl+fRp;R'Ms24lRqS<?lhr*GOir7sCjQ5Lck3(pk
+rosIJ!:0UMs6]jSr9s[TrpfjUr:BmZp@\=VqtKgZr;$9ep\XjcqYfj]JcC<$\Gq'~>
+JcC<$JcC<$h#H[=q>L-eo)&:[qYBj[r:g0`qt9s\rq$*Zs7--YrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnmn9JqJ^TK`$K$K)L?%K)U?"J-gm_L5(D:LPCP=re:H/M#N2,M>rJ1MZUi7_u@OQ
+_>h=M^]2%J^&GYF]=RuhrHnKhs*4Thp3HU_s*=Heqg&!`rcnO!L&?Z*L]*#/L\Zc*M>DMuH2)Ua
+GPQF]GPQFWFng(QFoHIbFbkg.rJ1H1r.tB0s,-f6rcn3^q0;g_qfr$_s*"Bcqfi*drHS0as*F]l
+"F>EANK*pt!KW9>NrY:@O8k=?O8Y.GOcYZcOHPinQ2[-KQ2m3JQ2m3KIf=isJEh^bK)L?%K`$Q(
+Q2$U=Q2d0FQN3ENQi3<NQN3EKR/i]TS,JiWZi7?3[JRE3\,Wu9\c98@]D]DB^&PhG^]2(L_>_=J
+PlR-LQhcgDPPLC6OTjV!i8ESRro47EjlPXekND(.l2U#Kli$2MmJlVPn,MnVnbVhSoDS=Tp&"I[
+p\+C[q>C*`qtp<frU0Z9s+13[s*t~>
+JcC<$JcC<$h#H[=q>L-eo)&:[qYBj[r:g0`qt9s\rq$*Zs7--YrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnme6r_i_ol;IX\!`;ckr_rktr`&nt"B8;u<)iitr`&r!r`/tt!lW!orke]Os1nWK
+s1\NHrk&9D])>P);uK\q;ZK_m;>jDl;u]bl;u9Jg;uT\p;uBVp;uT_t;cH`m;u]hq;u]es<W#hq
+;u]ba;>*o_;>jDj;#jMn;#jMn=T2A(<`N*tr_i_orD`\ls&/kor(ur]ohbZcrDN8dr_i_ms&]2#
+s&Jkqr)`Yoq,dPr!*B%u!*/qqs&/kqoMkWbp/Lriqc<bur`/_m"]\T(='&H!<W#hp<VKGr;c6Ll
+<)ifr!42[3s0_a4rjVp;r42j=s1A6Bs1SHHrkJKK!5\ZOqc`r$!*]@t!DZAg9_qKQ:'KM3i8ESR
+ro47EjlPXekND(.l2U#Kli$2MmJlVPn,MnVnbVhSoDS=Tp&"I[p\+C[q>C*`qtp<frU0Z9s+13[
+s*t~>
+JcC<$JcC<$h>cg?q>L-eoDAC\qYBgZr:g0`qXsj[s7?0Zs7--YrU9dS!:BaO!pf.:rojIIkPjWD
+jT+B@irS/urnn%=hO9n&S!ofES,/TLRJiKXVPgAjW2ckurN$"$riQC-Yd1UArj;O0rke]Os1nWK
+s1\NHrk/9C!kPqQr0%#@$BUC3OH5E]NfB$WqhkH5qhtE3s,H]1rJM2FVl-JnWiN5'YHP16Y-5&.
+Y5bU*XK/GqN!5,sMM[1GreLE+qh>$&r.Y0*reCK0q1nm&pP8aKs/c4%!NrO&XTbl0XKA[\nqR7%
+M<TopMuAV4NW5"=NVnh:O8cZe\c0/C\[oAa]DfGD^:jKX!58BHs1niT`Poj;pW3AurK@,Cr07/F
+rg*8Erg<\RrL<_TpVd*Ns2G)[aSO!Yb59?abg"GYrQkMjp!3fec-=P[d/MJjZi@E3[J[K4\,Wu:
+\c98@]D]DB]`>eG^]2(L_>Cb@\H'5=`Vd[J`W*mV_uIUM_%>J\i8ESRioB([jlPXekND(.l2U&K
+li-8NmJcPOn,MnVnbMbSoDJ7Sp&"I\p\4I\q>C*_qu$BgrU0Z9s+13\s*t~>
+JcC<$JcC<$h>cg?q>L-eoDAC\qYBgZr:g0`qXsj[s7?0Zs7--YrU9dS!:BaO!pf.:rojIIkPjWD
+jT+B@irS/urnmt;hLgH6K`$K%K)C6$K)C2sJ-:OZKnb<WL&m'creCK0qhY<1r/:Qks2"`NrkJKI
+s1SEEs18EF\[d*8rd4Qhrd"Kfn9OhUs*=Edr-89rre:E,reCH/!f;_gq2#'-rHeHgq0;m_o61+U
+s*"?`!-J0^!-@gT!-S'Ys+pZ0reLQ2r.tB0regZ!pilOYr-A![s*"Bcqfi*drHS0aqg&6hrf-o;
+!KW9:O8k=?O84k?Ocu&qQN!6LQ2m3LQN)I5If4cqJF.pbK)UB&K`$Q'Q2-[=Q2d0FQN3ENQi3<N
+QN3EKR/i]TS,SrTZi@E3[J[K4\,Wu:\c98@]D]DB]`>eG^]2(L_>'8rQC%?/!0d/?oT9^Ahr*GO
+io9"YjQ5Lck3(pkrosIJs6K[Ns6]gRr9s[TrpfgTrU]sZp@\=Vr:fs\r;$9epA=dcqYfj]JcC<$
+\c70~>
+JcC<$JcC<$h>cg?q>L-eoDAC\qYBgZr:g0`qXsj[s7?0Zs7--YrU9dS!:BaO!pf.:rojIIkPjWD
+jT+B@irS/urnn(>hGR6M;c6Lll;IX\"&_rm;u9Pn<<Q9";cH`q<rZ2"<rZ/"<;sc7_>h=M^]2%J
+^&G\E])oRS\boA';ZKep;uTYp;>jDl;ts8g;u]bk;uKVn;uBVp;uT_t;cH`h;ts>l;u9Gk;"dc[
+;X.-X=T2A(<`N*tr_i_os&Akms&/kor(ur]ohbZcrDNMk!)i_nrDNVls&]/"s&Jkqr)`Yoq,dPr
+!*B,"qc!Gks&8MgqG[8js&B%uqc3Jo!`i<$pf.8ns&T/$!*8qrr)EVppJ_;p;GpFm<;onpZi@E3
+[J[K4\,Wu:\c98@]D]DB]`>eG^]2(L_>.:6=o;%r:/1^]qG$HS&Dl=&i8N\Tj5]4^jlY^gkNMp0
+s6BXMrp9[PrpK^Qs7$$Xq==LUr:K^UqtBs^p\=[^r;--ar;?Eimf%e;JcE:\J,~>
+JcC<$JcC<$hZ)p@q>L0foDAF]qYBgZr:g-_qXsj[rq$'Ys7--YrU0gUmHso>s6B[MrosIH!9a@D%
+cud4j5].YiS`YOhqm1XqO@;LrL!YSrgEYN%&]u$W2HVpX/rD)XKDK)"L#&7ZEsM:qm?LA^qfras
+1\NHrk/9C!4r->rf[/@rf@2BNfEsqoo&9tqMPKQVl6Pori6:+Y->.6Y-+u-Y5bU(XS7\RMuS\6M
+$&QhLPG\[s+CB)re(?*KS98Wr.b6,onN3rrN#t"rN-($rN-4*XfR83reL0$!JcL0M=-8tMuJ\1N
+V\\6\GWo:\d>pY]">Se]Y2%mrO`-ErkJKL"N/3t`lInrrKI5Dr0.,EqN_)Hpm;#JrL*\SrL<eV!
+5nNKs2G#X!QW:XaoBN]bQ#iecMc)hd.P]kcHXVZcdC1hZ*F;6r3QC0s0_d5s0r$<rOMs>s1A9Cs
+1SHHs1\TC\,3]7\ba;D`:h1L`;daT_YV(VhV[8LiSrkWj5f:_roO:Fkii$1!p]+;rTsROrpK^Qr
+p]pWq==ITr:K^Ur:^'_p\=^_r;-0bqu$?imf%e;JcE=]J,~>
+JcC<$JcC<$hZ)p@q>L0foDAF]qYBgZr:g-_qXsj[rq$'Ys7--YrU0gUmHso>s6B[MrosIH!9a@D
+&EW!6j5].YiS`YOhqm1AKS9>Wr.=p#s+:0"pj`O%KS>/7L&H`-LPCQ]L]<2.M#`G2MZU`1_#D+K
+^AknG]`5SD])B2=I/J?iHN/9fGk?:NHMVmfK8'/V"c/"lLkgc`L]N?grd+QhrcnEds*4Neq/ua^
+r-&*_"*A[.G5cX[FSp4LFT.*qL]3)0M>W20M#rQYGQ)jVG5umeGlW*`GQ)dcGPZOaH2W!aH2Dmf
+Hi8s'NWG3$q2bQ;rK$c9"Hen5Q'VE9rKdJKrI=fqr."]rmt(:drdt3(re1?:rK[2Cr078JrK[DK
+nsB<Brg*VPq3_5OrgWqXs0;R/r3QC0s0_d5s0r$<rOMs>s1A9Cs1SHHs1\PupQb'-o8sF;hr*GO
+io9"YjQ,G%joX`0kl0fJlKdd7m/QJPmelPQnG_tRo)/+Wo_.tUpAF[Zq#1$dqY0mar;6H\rdk*#
+s185\~>
+JcC<$JcC<$hZ)p@q>L0foDAF]qYBgZr:g-_qXsj[rq$'Ys7--YrU0gUmHso>s6B[MrosIH!9a@D%
+cud4j5].YiS`YOhqm0er)<2b!)rShs&8qo!)rkr!``3!r`&qtr_ierr`9&!r`0/%<5HAcrkJKIs
+1SEEs189BrOM`%oi(ifr_rVjs&&bnp/Cid"&i)r;uBVp;uTbr;ZKej;uK\l;ZK_p;>a8a;>F,g;
+>sD[;>aPq<s)K'<)`cor_rYjr_ibnqG?l_ohbWbrDNMkr)*MnrDNVlr`B&!s&Jkqr)`VnqH*\ts
+&]5$qG[;i!)rDe"&i/u;u'Dh<<-(q<ruE&<Vo`%<E)pt<E<.%='#/tr)EVppJ_Gt;GpFm<)lr'Z
+2V',Zi7?3[J[K5\,Wu:\c98@]DfJC^&PhH^AqF3=o__%:B4/h9_hEP:(,q9i8ESRioB([jQ6C'!
+pAe2rojLLlg+N9s6]gRr9sXSrpfgTr:BjYp@\@Wr:fs\rV?Bfp\Xjcqu,s^JcC<$])R9~>
+JcC<$JcC<$i;`-Bq>L0fo_\L]qt]p[qtL'_q=XaZrq$'Ys7--YrU9dSs6]gPs6B[MrosIH!9a@D
+!TiDAis=Z'iS`YOhqm2bS,&KQRJiTRRJN9\VPg;hW2HVpWiW;(XK8Q'Y5ba+Z2h60[/IE3^]2%J
+^&G\E]DoJA\HKFO[uupOOoCFDO,f4uN:MnsN;8A8N2<GNW2]cs#HY)4YHY45YPt[)Xn[kTMuS\6
+M>rA5LPCQ_L&H])K*6dYK7\aSK`6]$LAur/L4t?YLA-K$X8f7(XfSY,XT#@%Y5X1TL\-<&LPUca
+M=HJuMuSb3N<5-"NW"n8\,j.Orj`HK\[o>_]">Se]Y2%mrk&9F^AbnI_$.`q`Q#s=r5ei"s-!GG
+qNLlBrK[AJpQtlHrg<bTr1!_Vs24QKs2G#X!6>)[r5nu]rQ>>fc-=PZrQkMjp!3fec-=P\dJU6J
+Z2_--Zi7?3[JdQ6\,Wu:\c98@]DfGH]sb>V[^Z.Ds1.sEs2=QKrl"iSs2+ZL%,Kdti8ESQioB([
+jQ6C'!pAe2rosIJs6KXMs6]gRr9sXSrUK[Rr:BjYp\"IXr:g!]rV?Bfp\Xmdqu,s^JcC<$]DmB~>
+JcC<$JcC<$i;`-Bq>L0fo_\L]qt]p[qtL'_q=XaZrq$'Ys7--YrU9dSs6]gPs6B[MrosIH!9a@D
+!TiDAis=Z'iS`YOhqm2gK`6W%K)^K&K)C2oJ-L[\KS>/8L&H`+L]3&-LBE?fLku"d!/g`5rkJKI
+s1SEEs1A<Brj`0A\$pa4qg8<gl$;lHpiummL&-N.Ll$qELkgcaM#Vf#H2i-^GP64[Fo-7\Fng(Y
+F8p:\F7=;OL]iKhLkgcbL]E;1M#W>2GQ)j[GPu^bGPudWGP-4WH2DmfHi&g$Nqn_9OSk19O9Lc0
+Pa.N"rg3SLrI4cr!.OcorIFBgqh"d!s+LE+s-3JIrfdDJrKR8Gs-EVKs-E5BrL!SN!1<SM!1NnV
+r361*s0DR/rj;^5rO2a8s1&$<s186Brk&6Erf[>Hpm(--oT9R<hV[8LiSieVj5f:_roO:Fkii$1
+s6BXMrTsROrpK^Qrp]mVq""@Sr:KaVr:^'_q"Xg`r;-0br;?Hjmf%e;JcE@^J,~>
+JcC<$JcC<$i;`-Bq>L0fo_\L]qt]p[qtL'_q=XaZrq$'Ys7--YrU9dSs6]gPs6B[MrosIH!9a@D
+!TiDAis=Z'iS`YOhqm2d;ta,f;tNuf;[?8t;H$Oo<E)rs<<-"t;[$-#<`W4#rDrp4s1\NHrk/9C
+s183?!k>_Kp/:K\q,7,fs&/Vjq,.;n;H$Nl<<#nq<9[?[;>a8a;>jAn;c<QkrD;oZ!*B)#s&T>(
+<E3!sr_`_ppeh&hr_`Jfpeglar_`\lr_`Jhs&8hns&8emrE&qus&Jkqr)`VnqH*\ts&\tor)2WU
+s&B%urDikuq,dPqr)E\rs&B"us&T/$!*8qrr)EVppJ_;p;GpFm<;a!"Z2_--Zi7?3[JdQ6\,Wu:
+\c98@]DfGG]j"WA=nl1r:B=3apJ(0Q%,Kdti8ESQioB([jQ6C'!pAe2rosIJs6KXMs6]gRr9sXS
+rUK[Rr:BjYp\"IXr:g!]rV?Bfp\Xmdqu,s^JcC<$]DmB~>
+JcC<$JcC<$i;`0Cq>L3gpA4liqtp6eq=XO[p\aa\p&=U_oDJ1Ync/+Wn,MhUmJcGRlg!d7klU)3
+kPjTEjlHF$!TN);huV`lrn[F?opYoKr0[MPrL!V_!N)doW;ik$X/rG)XKDK)s0)U1ZEpn9[/RH7
+^:h5Z]`5VD])K8?\,a#;[K)KfOoCFEO,f3ZrJ^E-s,6r9pPf*0!0$T/&Z)A'Vl?\tX/rJ-YHY45
+YHG&)N;eb8MZ/J3L]W?dLAci)K`?]'JcLH%KE-`&L@p9"LAZi)LA\(VXKAS*Xf\](Xo3tCLB!&-
+L]E;!MYrD1N;SY8Nr4k;Njnqr!P,f@\I6!Z]",D`]=Y_g]tOBW%_]Tk^VIY%_o0O6a2c9BqNCiA
+s-3GFrKR>Irg*;Frg<VO!1NkUs.')+p;I!Ms2OrWrlP/^rlYGgc-=PZrQkMjp<N`arlkVld&sOT
+YPYR(Z2V'-Zi@E3[JdN8\%&sH\HBFT]=e-Orj;a8qmbk/s2=oSs2+ZL#Mn7oi8ESQir7s=jQ6C'
+s5sCGrTX@Is6KXMs6]gRqsXORrUK[Rr:BjYp\"IXrV-*^rV?Egp\XmdqYfm^JcC<$]`3K~>
+JcC<$JcC<$i;`0Cq>L3gpA4lEqtp6eq=XO[p\aa\p&=U_oDJ1Ync/+Wn,MhUmJcGRlg!d7klU)3
+kPjTEjlHF$!TN);huV`lrn[U-!/(-"s+C<&r.4Nks+LT/KnY88rIt<-reCE-rJ:E/s,-f6!ku@]
+rk/9Cs183?s0r'<rjDfSqg80cpj)j`pNcU]rcnKiom-RjqM#0/LkpnDL]3,/HN&0iGk6.TG5cXS
+FT-@\EWC1QFSp4[L]`EgLkkqbs,$`2rHA0apicX\rHA-`s*3sUq0;a]qK`.#qi1Q7q2YN;r/^]9
+$B^L9Q'IZ$Q^="dqgSNos+(#srIFHirdsrus+LE+rfmAHq3:iCrg*PKs-E5BrL!SN!1<VNrgEtZ
+Y-+t3qlp+*rj)L/s0Vd5rO)d:\@DLJ"1l+V]_dolPlR'JQ0=D/OoLUAOU'_!hr*GOiSsjs!T`AA
+k5XTEkl'cGlMp2Km/QJPmecJPnGVnPo)/+Wo_8%VpAOa\q#1$eqY0mbr;-B\rdk*#s1JA^~>
+JcC<$JcC<$i;`0Cq>L3gpA4kiqtp6eq=XO[p\aa\p&=U_oDJ1Ync/+Wn,MhUmJcGRlg!d7klU)3
+kPjTEjlHF$!TN);huV`lrn[QPpJUido25Qcr_its;,^Fn<W5tt<<-"s;u]i!<`N/u<W^"K^&G\E
+]DoJA\c9/>\,Ni.;YO,c;Yj8j;YX2c;?Kiq;cENl!)rkr!E2tq;uK\g;ZK_p;>sDb;>sJm;ZK_o
+;>a5j;>a8d;>a5j=8l;'='/Q'<rZ2";ZK_f;>3le;>sDi;>O,a;=mcc;u9Gm<rH,!<rQ+p<rH+n
+<r,kt<qTDi;?0YS<<#tt<r,kt<rQ+s<;ol%<)lq!<``>t<W#hp<VTMn;uTYu;cKp&YHRi-s0;R/
+rNlO2rjD^5!k5\LrOE6G]=Y^Z>?b64=T2J(=oMV!:B4/b:%(g^h;7&Ii8NYSro4%?jo4EBk5a`E
+l2U&Kli$2MmJcPNn,DhTnbD\QoDJ7Tp&+O^p\=O^q>L0aqu$BgrU9`:s+13_s*t~>
+JcC<$JcC<$iW&9Dq>L3gp%nd\W;ZSiq=XO\p\aa[p&=U_oDA+Ync&%Vn,MeUmJZAQlg!d7km-G8
+kN:pgjlHF$!TN);huV`lrnRS0qj[ALr0dMNrgEYNs/5mori#gr"K\`,XKDH(!jJr7rj2R1!4Dd<
+!kZ%Trji'=s0r!9!O\*cOTCN'rJg]5qMXs(rJU]5p5AsI$)XZ!W2Zl!X0&T)YQM&3Y)N@>rJ^c7
+!fDhkreUT0s+^H*s+L<&rIP3*KS4u2L&HbtL&Qf,L\QW$X8f=%X9,N*XS[_>LAlu.M"li#MYrD1
+N:r82NW?Qd\Gs/>\I6!Z]",A_]=Y_g]tOBW!58BH"Mhjj`5V_q!6=kts-*GHrKI5Frg!MLpQtoI
+qjIGPr1!Z&p;I!Ms2G&Zr5eo[rQ>,_"O,-8cHcF8s3UGbs3:\jcHlKlriZ7(r364+s0DR/s0Vg6
+rjMj9s1&'=!kPeIrjMg6!4Vp:s2O9As24oTrPJHJ!o;_jrnmh9ir7s>jQ5M&joX`0kl0iHlMp2J
+m/QJPmecJOnGVnOo)/+Xo_8%WpAOa]q#'sdqY9scr;-B\rdk*#s1SG_~>
+JcC<$JcC<$iW&9Dq>L3gp%nd#L&LlFq=XO\p\aa[p&=U_oDA+Ync&%Vn,MeUmJZAQlg!d7km-G8
+kN:pgjlHF$!TN);huV`lrnRY2KS0,Qs+C<&r.4Kj#ChG]KS5&6L&H`+L]3&,L]3,-M>rG5MuC9i
+]=PTQ\c92>\,Nf:[=%arqg/*ar-7s]r-J<es*46_re1*%!/UW2!f)SfrHeEenTXnSrcS'ZrcA$[
+r,_gWolU(PreLQ0q1o$-qf_p^!-\6^s*"EdrH@@JqKVj^qK`0hN;S\5Nqn_9OSk.?OH9@%"Hek2
+Q'M<6!.FZls*t#ur."`snq$gmpk/KtrKR;Hplt`Brg*SLs-E5Br0[MN!1<SMs-`qWriQ1&ric7(
+s0;U0r3QF1s0_j7s0r$<rj`$?q31fCs-3PIk`Yq-rK@&?!o;_jrnmh9ir7s>jQ5M&joX`0kl0iH
+lMp2Jm/QJPmecJOnGVnOo)/+Xo_8%WpAOa]q#'sdqY9scr;-B\rdk*#s1SG_~>
+JcC<$JcC<$iW&9Dq>L3gp%nbt<;l[jq=XO\p\aa[p&=U_oDA+Ync&%Vn,MeUmJZAQlg!d7km-G8
+kN:pgjlHF$!TN);huV`lrnRV1;ta,c;t<fn;c-Fk;c-Cj;cHcr<;onr;uTc"<`N.#<rKZ4]=PTQ
+\c92>\,Nf9[J*T!;ZK_p;ZK_m;u9Gm;uTZ!;,U7h;,U<b;u';l;c<Tnr)E\pr_rqt<)`Tlq,@;m
+!E2nh;?'Mo;>O2j;ZK_m;?'Jm;>a8h;><rh<``B$=9)G%<rZ1i;>O,g;>j>i;>O,`;=.9];ZKks
+=8l8"<V]\o=8,bl=7]Ah;?0YR<;fko<rc;#<W#hq<<cE&<`W:'<r#bo<;fhk<<#ku;H$QoXo>L&
+YPbX)Z2_--Zi@E4[JmW7\,Wu;\HocK=B\p5>$+o+>5qb*;#!id:AR]P:'08.hu;O7iSsjs!p&J)
+roO:Fkii$1s6BXMr9XINrpK[PrUBdUp[\7RrUfjWrV$3aq=sm`rVH<dr;?Ein,@n<JcEF`J,~>
+JcC<$JcC<$irABEqYg<hp&"ab!Vr\kq=XO\p\X[Zp&=U^oDJ1Ync/+Wn,MhUmJcJPli68Lkm-G8
+kN:pgjlHF$!TN);huV`lrnRV1g\dQ:Rf&TOR/`TLR/WuaVPjEls/Q+#"0JZ+Xo>I*YHY:;rj2R1
+!kZ%Trji'=s0r!9#dq%HZ]L92OHBF'!KW9>NV8>2MuSb7NW4q;Mu8P5Mu/D+MuKRPVZ<^qWr]?*
+ricC*r/LZ6s,-u:M2@&fL]<,*K`Hf)KD^?"K*$^[LAci+K^sisLAZc)LAS%OXoGI&Xnmb;L&m'c
+pke[$rJUT4pPo04!OfK9\,s4P])K5J]",D_\[oDb]Y(qkrO`-ErkAZQ_8=.0`l@b9!0d8D#*Y:9
+Q'IZ$p6Y]EqjRGPqnr-G!6+rWqoJfZrQ>,_"3f$7cMc)hd.P`ac2apEXSf4"Y5b^'YlD!.ZMh-0
+[/[Q5[f<f:\Gif;['d<M[f3Z7\,No;`ok;B`5BLk_Y_.Nh;7&ghuVfrro4(@jlQL(s5sCGrTX@I
+s6KULrpB^QqX=CPrUK[Rr:BjYq=X^[rV--_rV?Egq"ssdr;H'_JcC<$^Ai]~>
+JcC<$JcC<$irABEqYg<hp&"ab!Q'Qfq=XO\p\X[Zp&=U^oDJ1Ync/+Wn,MhUmJcJPli68Lkm-G8
+kN:pgjlHF$!TN);huV`lrnRY2gOo?Ss+C<&r.4Kj!e5ZJre1K.Knb>9rItE0L4tB]L]*&-M>iA6
+]=PTQ\c92>\,Nf<[C!<Ipj;maqK_p^pNcaard"Bcrd"Nir-A<q!J?+&L&d#.M#`>1HN&3gGk-%_
+G'A.RG'.s*FSg+ZFSKqWErU4SFS^(PL]DSpG5ZUbG5ZOcFEMbMrce?bms"bUr-/!^qK_p`!dflb
+r/LW7qi:f?O-':#!K`B@O9^o2PEhE!Q@8OW!.XosrI4ftnq$^jqLea"qiq)Fq31oFQN!0JQ3*>;
+QL^C?R/`KQR/*-NR]HFhr2ot$s0)@)s0;U0rNlO2s0_j7s0i$=P4t1>Pld26PNS)/Oo(==OTO@q
+hu;O7iSsjs!p&J)roX7D!9jCGs6BXMr9XFMrpKXOrUBdUq""@Sr:KgXrV$3aq=sparVH<dqu$Bj
+mf%e;JcEIaJ,~>
+JcC<$JcC<$irABEqYg<hp&"ab!G>C/q=XO\p\X[Zp&=U^oDJ1Ync/+Wn,MhUmJcJPli68Lkm-G8
+kN:pgjlHF$!TN);huV`lrnRV1g\k"M;u9Jh;t<id;Z]io;Z9T":fC:l<)lmsr`/nq!*&krs&K35
+]"7mOs1&*<rjDp:['[17;YsDk;Z9Vl;Z0Pn;?Bcp;Yj;l;Yj;n;H$Ni;ZB\p<!$'!;uKYq;tj8h
+;ZTcpr_s,$;Gg=i;,U<j;>*lg;c<Kis&/hnr)!DjohY]j=',?&"BSW(<D`6`q,%&frD<Gir(mJm
+:f1*h;Z'D[;Z9Vp<WZ?'=8c2!<Vof#=&rC(<`f#rr)`hq!*&YjrDEVom8X'bq,I5lqH!Ytr`/kq
+r)Nbts&T2$q,RAmrDiSkr_iftriH%"riZ:)r364+s0DU0s0Vg6rjMj9!4_r/"^,#4=]ef*=oqi'
+;"mcc:AdiP:'08.hu;O7iSsjs!p&J)roX7D!9jCGs6BXMr9XFMrpKXOrUBdUq""@Sr:KgXrV$3a
+q=sparVH<dqu$Bjmf%e;JcEIaJ,~>
+JcC<$JcC<$j8\KFqYg<hpA=da!;uhps7uB`qtL$^q"=UXrq$$Xrpg$Xr9s[R!:BaOs6B[MrosIH
+!9a@D''838j5].YiS`YOhqm2FgtUT;rL<VOr0d)B!LKY^VZEZmri#js"fn`,XK8Q'Xokl3Yd+/5
+s0Va8!k>_KrjMj7!4;a3q2bZ?O,j-tpl,64repi:rJpl9!/pc6!/pZ1pl#*I"/_uoW;Wb(Y->-i
+NJrjUN/NYnMuS\7M#W81LA?N'K`-Q%K):3!L&H]%L&ZhtL&Qi'X8f:%XS%;8L&d#-M#<,'MYrD1
+N:`)2[C3RC\,s4P])9)@]",A_rk&3Cs1SEE!58BH"2Maj`:fAoPQ$gFQ2[!OQ'R`&R$dl>s-NeQ
+qO%;NrgN_R!1`l&pr*3Orl+rYr5eo[rQ>,_"3f$8cMc)hd.P`bcMjjCX8f:!Xo>L'YPk^*Z2_-.
+ZN@MA[JmW5Zi@E4[K!]7[/mbHrPn'?!6"lSrPJHJ%Gfmuhr*GOio9"YjQ,G%k5XWEkl'cGlMp2J
+m/HDOmeZDMnGVnPo)/+Xo_J1YpAOa]q#1$eqY9scr;6H]rdk*#s1eSa~>
+JcC<$JcC<$j8\KFqYg<hpA=da"ic4LL&(Q<q"sg`pA"=Zo`"IZo)A1ZnGMbTmJuYQm/QAOlMg&J
+kQ'fFjq?e:jQ#:[io/hRhr!;Hh;$c>gA?L%KDgE"Jb4HmJ,XlsKDpT)KE?j^L&H`.LPCM;reLH.
+rJCQ3rOE!>\$u@Fs0Vj6rj2BHqg/9fs*4NgpiuOYrd"Qir-86e!IB+jHN&0mK7no1K_gE+LP^k6
+HN&3dGjoqWFoZ[^FR4)BFSg.WL]E5/M#VVkFoZ[`F96T.G4p.YG5-:\Gl2d^Gku^]HN&m$NVeb6
+O8b7>O8k=AO8b4COcu#pp4!$krdY3(J:N-!J:RTLs+:6$s+16%qL\NqrIk!2s-<DE"I5:=Q'M<6
+!gT(;nsB6@!13JKri5sus/c.#riZ:)rNQ=,s0DU0!joACrjMcgq3(lEQ'M<3i0*u"%Gfmuhr*GO
+io9"YjQ,G%k5XWEkl'cGlMp2Jm/HDOmeZDMnGVnPo)/+Xo_J1YpAOa]q#1$eqY9scr;6H]rdk*#
+s1eSa~>
+JcC<$JcC<$j8\KFqYg<hpA=da!,;F3s7uB`qtL$^q"=UXrq$$Xrpg$Xr9s[R!:BaOs6B[MrosIH
+!9a@D''838j5].YiS`YOhqm2FgtUT;r_ihs;uBPi;t<id;[lT&;,U7h;c?Ok;cH^rr`&ntrDN\q
+r)E_trOE!>\$u@Fs0Vj6rj28qr_r\l!)rbmn5K<ap/Cle"&i)r;uT_r<U`uf;uKSr;cH[or_ibp
+s&/emo2>Nar_i_mqb[;ip/(chs&]/$!EW:n;>*fg;,U:hq,%#e!)WVkr_i\ll;IU^!`rE(rDrnt
+qc<Ys!EN:r<rZ7h;u]bq;smW_<Vf\j<r5r"<`N/s<;]br<rZ5$<r,ho<;fhp;ufkq<<#nrWrB(!
+XSf4"Y5b^(YlD!.ZMh*2['d=@[K0Q7r)a>0>$>'2=B\m':Jam^:BXEe:/+IW:&n)^:(?%9hr!AM
+iSrkWj5f:_roX7Ds60FGs6BXMr9XFMrpKXOr:'[Tq""@SrUfpYrV$3aq=sparVH<dr;?Hjn,@n<
+JcELbJ,~>
+JcC<$JcC<$jT"TGqYg<hpA=da"o8/tWMlciq#'map@n7Yo`"IZo)A1YnGVhUmf2\QliQM<lMg&J
+kQ'fFjoOT)ro4CGiSi_Qhqm5Gh;$cagA[T<RerNOQiNQMR/<3RV5C/gVPa?k!i`3#r2]n#riQ@,
+Yd(M5Zi@B6\@8sH[f<`8[/I<3ZEa4e!KW9;NV\V5NW+n:NW5"?NJrhpMuJY8Mu/D,MuJ\6V$X#t
+Vl6VsWiN:^rf$W1"cA.nLkpi\L&Zi)KDpK"K*,=\>$Lo.s'#M,>5hY(>5X*QK`-W)LA@kNXbQM&
+m=tXrs+pN.pko!-qMbE5rf$c7s0Vm9\,Ef<\[oBM\HBFR\[qdPs1JBFrk&6ErkAKL_Y'&lPPp^P
+Q'R`&QBd]"QC%00rgEeTqj[VUpqumFs2G#Xs2Y&Ys2k5^s2tPhc-=PZrQkMjp!3]bWN#cps/Z1$
+r2p"%s0)C*s0;U0rj2X3!O]62Zi@E4[K!]7[/d]6`r<sW`:(\E`;[[R_YV(Sh;7&Hi8ESQir7s>
+jQ5M&k5XWEkl'cGlMp2Jm/HDNmeZDMnGVnPo)81Xo_S7ZpAOa^q#1$eqY9scr;6H]rdk*#s1nYb~>
+JcC<$JcC<$jT"TGqYg<hpA=da"o66^KS5'Rq#'map@n7Yo`"IZo)A1YnGVhUmf2\QliQM<lMg&J
+kQ'fFjoOT)ro4CGiSi_Qhqm5Gh;$cag@p3rJb4HmJ,F`rK7s5X",)A_L%pE%L]3,.M>rG7\@8sH
+[f<`8[/I<5ZE\e)rd4Wlqg/9f!I/h[GkZL`H2r6hGQ<$gHN&9fH3AkRKS+sRL&cT!H22^^G5ug\
+G62r1Fo$4YF8o#:;,I0dr_NSjr_NVk;#GG0F8LapLPUccFnTtYFo?C`F`qs%GPu^]GPud`GPZRY
+H2MsgNW+n7NW5"=NW+t9O8b7>O8k=AO8k=AOT:UDIKP(KIXh<F!.Xrts+(3$Jc:3!Jb"EfKDgJu
+PlI$FPlI$KQN*6HQL^C=R/*0MWV`^qX8f:!XoGR(YPk^*Z2_-/Zi@B5[?CKP!0[2Bs-*MKr0.,C
+s,lH,qN2'>hV[5Ki8NYSro4(@jlQL(s6'FGrTX@Is6KULrpB[PqX=@OrUK[RrU]sZqXsg\rV-0`
+rV?Egq"t!equ-!_JcC<$_#Jo~>
+JcC<$JcC<$jT"TGqYg<hpA=da!r6VJr`&Xer:g-_p\"LWrq$$Xrpg!WrU9dSs6]dO!pf.:rosIH
+!9a@D!TiDAisXl*iS`YOhVR)EgtVh^r_rkrrDNGinl#Hc$WKu$;,U7h;c?Rk;u9Po<<6&sr_ier
+rD`r#\@8sH[f<`8[/I<3ZE`Oin5K3^oMYcf;Z0P];ufkp;Z'Gn;Z9Vo;Z0Jf;?/iW49%AA4T@JH
+3]fDa3]m:;!)WViqb[8ls&]2%!*Abhp.tig;GpBf;#4&f;Z0Gn;H*0br_`Sk!*0#!!`rE(rDrnt
+qc<Ys!EN:r<p`fc<;ohb<;]bn;uouupf@8nr`/hpr)Nbts&T2$qGmGmrDibps&8nr!`Q(tql9[s
+s/c.#s/uC*rNQ=,s0DX1s0Mg7=oMS)=o;D$=oVS->#%gg:f.-es%`Jfs%WPgpJ1]`oM,\JhV[5K
+i8NYSro4(@jlQL(s6'FGrTX@Is6KULrpB[PqX=@OrUK[RrU]sZqXsg\rV-0`rV?Egq"t!equ-!_
+JcC<$_#Jo~>
+JcC<$JcC<$jT"WHqu-EipA=darV?KnrM]Yhr:g-_p\"LWrU]pWrpg!Wr9s[Rs6]gPs6K^MrojLJ
+kNDj,!TiDAirS/urnmh7hYu=3gtVh^!nj'4qO7;L!1<_Qq3^uEs/#^m#H"DtW2ZesX8T+"Xo>L'
+Y6(r5ZMq07['mEN[C!=?ZNIM<Z*=%c!KW9:NVe\6NVn_:NJrkqN;\Y7N;eb6MYN,-MufcPrhTds
+Vl-PrWr@tVMuS\7MZnurMi*CKreUT/re1H+>$G81>Q%b)=oMS)>l%\(>5h\)=oqo3=T2P)>5qh,
+=o__%=9D^-X/c-!s+^3#qh>*)o7d=%Lktnapko!-qMbH6qi(N6rj;g9\$u@H!kGnRr4)p@\[f<N
+]DoMD^&GYH]tV7roTK6<rfdJLQBqN:rg*SNpmD)Lrg<\Qs-ieR!M%+&_t_1M`W*pXa8<sXao9H]
+bQ#iecMc)hd.P`bVuN^pWVidrX8f:!XoGR(YPtd+Z2_*4Za$d@ZMh*0[/IE2[ee#A`::hE`;[[R
+_Y_1Lh>c=3hu;O7iSsjss5X1ArT41Ekihs/s6BXMqs=:KrpKUNr:'[Tq==LUrUfpYrq?<bqY:$b
+rVH?er;?Hjn,@n<JcERdJ,~>
+JcC<$JcC<$jT"WHqu-EipA=darV6W?b_1Y'L&C`Dp\aaZp&4O]oDA+Xnc&%Un,MhUmJcJPli68L
+klU)3kPjTEjlHF$!TN);huV`lrnRV1g]#n,g%^0rJb4HmJ,OiqJ,b0$K`[!^K_U9)KnbA=L]3,-
+M$AjG[^ENM[/RB6ZE^[=q0W0hr-JBg!-n?apNZ=Us*4Qho6LOlKS4u1r.Y9.H@#O8qKVm]rc\<c
+!+l+,s&&Yi"]8)l:f1'd:]=/r:Jah_:/4V]:&[rh:]=,_:]#qJL])AhFoZ[`F96T.G4p.YG5?F[
+Gl;j_GkH@]HN0!(N;S\8NW>(<Nr4t;OSt7?OT1@BOHKEhr."`qs*t#uqge`trIO`qs+C6$q1J["
+!1!;Cs-<SJs-<VKs-<VM!1!AGnsB3?qO.A]s/>prr2Tdts/c.#s/uC*rilF-s0;d6Ocbfip65N@
+qNLi>k*#V(s5!_3!8me6!TE&;j8\0?jo+<CkNM.-l2U&Klhg&ImJcPLn,2\RnbMbSoDS=Wp&=[`
+p\O[`q>L0cqu$BhrU9`:s+13ds*t~>
+JcC<$JcC<$jT"WHqu-EipA=darV?J1!)rkrr:p3ar:]mXrUg'[qssaVrp]jSs6fpSrp9[Ns6BUJ
+!pJh1roO7CjSn0?io0mp!T2c5h#Z<crn7M.<)cdor_rhrp/C]`r_rers&&eo#>nAs;c?Ol;u9Po
+<<,qr;u]hq<WBN-[K!W5ZNIM<Z*<7dqG[Dnr)<Gio2>`g;H$Km;t*cc;uBPm;ZSg?r]^<ErB:9E
+4ZrX(!'L6B!'L6B#Wb%04$,Pf4?EI)ofN:;3]d7?s&]5&nko*W"&Vro;>F&b;>=&h;tX&c;>sGo
+<)ris!*B,"r`/hrrDs##=8Gtt;u]bj;ZK_l;uT_r;sdQ`<VfYq<EJoqr)Wl!r`/kqqc3Yss&]"r
+r)EVpr)E\pr`&oqs/>prr2Tdts/c.#s/uC*rilF-s0;d6=BJ^/r`T;)r)io#r_EJhs%rVgr(m#]
+r(lu\s5!_3!8me6!TE&;j8\0?jo+<CkNM.-l2U&Klhg&ImJcPLn,2\RnbMbSoDS=Wp&=[`p\O[`
+q>L0cqu$BhrU9`:s+13ds*t~>
+JcC<$JcC<$jo=`Iqu-EipA=dar;$?l"fS>tW;-/cp\aa[p&+I\oDA+Xnc&%Un,MhUmJZDOlN$5K
+km-G8kN:pgjlHF$!TN);huV`lrnRh7gY1B7f[u\mRfAlWReiEPRf8`NR.lsIV>d@nVPjEls/H("
+rN$"$rN6I1YctF=Za7'H[/RE3Z2h0/YQ:qiqiCi>NqJD3N;eh/N;SS6N:Vu)MuolQVZ*FkVZNm!
+N;eb3M?&M2KE[!]KN_Vcr`]P2>$G06=o;G'>l@n*>QA"-=T_i4>$Lr.s'#D+r*&u#s&f;(s'#E'
+rN#s&!*]>(q1\g&qh=`us+gW1rJC6*rJU6*rf-la"h(nL\@B*K])9)@]",A_rO`!?"22F3PP(+=
+PQ$dLQ'Rc(R/E<FR/!*FRf]+t`:h+E`;dgV`W4'Va8j?\b5KN`c2Z)fci;Adci9m?VuEXpWVidr
+X8f:"XoGO(YPk^'Z2_-.ZN.B2[K!]8a8EsW`Vd[F`V[UQ_u@OM_>`6khV\=j!o`.uro4(@jlQL(
+s6'FGr9=7Hrp0IJrU'ROq=":OrUK^SrU^![qXsj]rqH9arV?Egq>:*fqu-$`JcC<$_>f#~>
+JcC<$JcC<$jo=`Iqu-EipA=dar:pWCcH_)rKn]<sr:g-_q"=RWrU]pWrpg!Wr9s[Rs6]dOs6B[M
+rTORNkND!ijlPS&irS/urnmh7hYu=8gtUQ:g"=sQK):,kJG4NoKS08Xs+CH-L5#MZ!JQ:,L]3,.
+M#t)l[/RE3Z2h0/YQD"UHi/6kHi/3iGlW*`GQ)jeH2MpZH1?1]KS08W!J?+)L&cQ!H2;amG@tN"
+A7T7`APuJ+;?0Sn:^Koo:f1(d:f1%cr_NDf!DcPk:BOEg9ht=VrD*AerD*6G!/LDFrcS0_!-S6^
+!-S6`q02a[qfhm]qfhs_om-O_rJgi9rJgf:s,I#<rK$r>rK$u?s,R20J,FcqIfP#uIfb(KJ,Xut
+JcC?"JbOcpKD^?!KDgH(Pa1s,!1!PJs-<VKs-3YOQ'M64n<a$>qjIJ]r29Oms/Gprs/Z1$rN6+&
+!3c@*!3uKbs-!/@s-3ADs-!;Bk*#V(rnRV3hu;O8iSrkrir\<'jo4EBkPscDl2U&Jlhg&ImJZJK
+n,;bSnbMbSoDS=Xp&=[ap\O[`q>L0cqu$BhrUBf;s+13ds*t~>
+JcC<$JcC<$jo=`Iqu-EipA=dar:pV9Df8NP<)iYfr:g-_q"=RWrU]pWrpg!Wr9s[Rs6]dOs6B[M
+rTORNkND!ijlPS&irS/urnmh7hYu=9gtUQ:g"=qVr_rbpqG[Am!)rkps&&\ls&/nsr)Eer;,dHk
+"]A8t;H$Nk<<#tu;ZB\p<<#r"[C!=?Zi@<2Z2Us-YN/UX;uTbn;uKVa;Zfop;H!Hlo2G`h2?#H4
+2$>fr4[)(/4oRVK4[(qj4?WL&!B`OD48h8H4Zkkh3]fGbqDnO9rB(9G3]]>a4?WUC"]e],=?&;=
+2ZPc3;>3lh;,U:hq,$rcpeq)iohtZar_`o#<)lt"<Vfbq<Vohq=8Gts;uT\j;u]bm;r1IS<`euq
+rDru"r`/kqqc*`!='&Gu<W#hq<W#hq;Z]pqVYm@kW;ijpWrK."XSo:$XoP[(YQ1s,=T;P'=o__'
+=T;P%:Amud:Ado_:ARcZ:B'&MhV\=j!o`.uro4(@jlQL(s6'FGr9=7Hrp0IJrU'ROq=":OrUK^S
+rU^![qXsj]rqH9arV?Egq>:*fqu-$`JcC<$_>f#~>
+JcC<$JcC<$k5XiJqu-Eip\XmbrV?Hfrr<"r!iW#qrqH?aq"=RWrU]mVrpg!Wr9s[Rs6]dOs6K^M
+rosIH!9a@Ds5aFFj5].YiVqaDhqm2Fgt^Z<g=b-1fDM-<Rf&TQRf8`PR.lsIQ33JLUo"'f#cFPt
+W2Q\qX/l6$s/l:'s/uL.Z*O>7s0;X0rNH@,Y*&UC!KW9>NW4q=NJrhlNV&2+MZSiqMuJ\4Mti81
+VZ*FkVu;PPJcLB#JcgR0?!R>4$sZt>>Zt95>$>-6>?q,2rETA*#$P59>?b96r*')($X-Y9>Zt?8
+>$4s0=o);%>Q.h*XT#7&W`r\2qcWr&rE9/Tqh=d!rJ(B/pPJg*rJLZ7rJUN2s,-l9rf-i`!OfK:
+\,a)=])9)@]",A_rO`!?s-!DGpQGK="I,1;QC%K9!13JJpmM,MqO@N&!6"TKq8<9PrPncVrlP/^
+rQ>;ec-FW6ci;AdcN'd?V>mFjVuEXpWVrjsX8f:"XTbl2YHY::ricI/ZEjG8!4;^4"1H:ka8O$W
+`Vd[G`V[UQ_u7IL_$\uRh;7&Hi8ESQir8!<jT"?@k5XWEkks]ElMg,Hm/?>MmeQ>MnGVnQo)A7Z
+o_\=[pAXg_q#:*fqYC$dr;?N^rdk*#s2+ed~>
+JcC<$JcC<$k5XiJqu-Eip\XmbrV?HfrltY"K7no3rqH?aq"=RWrU]mVrpg!Wr9s[Rs6]dOs6K^M
+rosIH!9a@Ds5aFFj5].YiVqaDhqm2Fgt^Z<g=b-1fD:*rJbFWgJ,as(ItNE,KS>,7KSB5V!elA`
+reLK/rJCQ\s0;X0rNH@,Y'g1ps*Ofnr-JBg!-n3]s*4Ngqfqg[ms=nb"+u;^LAcAtAc?3E@q9([
+A7JR9;?0Sn:^0cm:f1+f;#X>e;#=&e:Amrg;#X5p:/+JX9hnIW:]=,dL]E5*:&@W_Fo?LZGPlXW
+G5umbGPl^\H2i*hH2`-fN<5&uNrG%;NrP+<Nr>%<OSt4DOH4j>It.BFrdalq!.b$!qgng!rIP$#
+qh"g"qL\Wts+LE:!1!,>rfmYOQ'R`$Q2Hs;Qi!0IR/j&^V>mFjVuEXpWVrjsX8f:"XTP`0YH[qe
+!0[&>!0m>Drf[2Ak*#V($JaInhV[5Ki8NYSro=%>s5j7Bs6'FGr9=4Grp0IJrU'ROq=":OrUK^S
+rq$*\qt9p]rqH9arqZNhq>:*fr;H*`JcC<$_Z,,~>
+JcC<$JcC<$k5XiJqu-Eip\XmbrV?Hfrbqg6!`DrrrqH?aq"=RWrU]mVrpg!Wr9s[Rs6]dOs6K^M
+rosIH!9a@Ds5aFFj5].YiVqaDhqm2Fgt^Z<g=b-1fDAPC;uT_s;c<Qkr)*Mnr`&nts&9G-;,U7h
+:f1(f;H$Ll;u9Po<<H/t;cEZps&K**s0;X0rNH=+Y3Jmb;uBPm;u]bo;ZKem;u]ba;uKVm;uBVl
+2#]?42#]];4oRVL5<V+k4Zkk*3sIf/4$>\f48h8H4Zkhg4$>Yer]($@3B@'us#9m9q`4U9s#C'=
+r`',&='/N`3;b]82Z,H42ZHYO;#aDm;?0Sl;#!od;ZBVn;ZB\f;Ys>j;ZBc%<*!%"<E<,t<rQ)!
+=8l5$='#9$r)Weq"&_un;Yj>j;Z'JM<<#u!=8#\n<rc;#<W#ho<W6#"='#,srD`_qr)EYo!2TUj
+s/,^lri#jrrMomus/c1$"0Si2Yl%W&=oMS)=o;A%=o1tm:]*uc:B=3dqbHu`oM,bKh;-rFhr*GO
+iSsjss5a4AroX7Ds60CFrp'LKqs=:KrU0LMrUBdUq==OVrUg![rV$6bqY:'crVH?er;?Kkn,@n<
+JcEUeJ,~>
+JcC<$JcC<$kPsrKqu-Eip\Xpcr;$9crr;qps/>niq"=UXrU]jUrpg!Wr9sXQs6]dOs6B[MrTOCI
+kNDj,&EW!6j5].XiS`YOhVR)EgtVh^"PMGZf@Knis-itUqjRMPr0[8GrKdGLs.o[k"K/,pVPjEl
+!ii<%riH.%riZ:)s0)X2ZEga?rilF+"0Sc.Oo1=@NrY4>NW+n9MuSb6NVJJ4NW"h5Mu&D2MtW)7
+V5C)dV5:&erdk6)>[:Y4>QA"-=o_e+=o__)>52>%>Qn>8>$5$5r*&u%rE9J3>$>'2='&L+r)Wr%
+=]tW*s'#J+riH+""0,R0>5MJ&>5_V'=T2CqLAlu.M"cc)MYrA4N;AJ2N;eb7N;Bp^\,Nl;\c029
+\H'5=])]MCP5ga?P5UUEPQI,9QgpI<RJ`NPS,]#X_Z7XJ_u%CP`VmdVa8O*Yao9H]b6#o5cMc)h
+d.krbV#I4jVYm@lW;ijqWrK."XT#@"Z2Us-Z2Cp-Zi7?7b/q`FrPnfTr5A3GqnrKPqni<Js1efn
+h;-rEhu;O8iSrkrj8\0?jo+?AkPj]Cl2KuIlh]uHmJcPLn,;bSnbVhUoDS=Yp&=[ap\O[aq>L0c
+qu$BirU9`:s+13fs*t~>
+JcC<$JcC<$kPsrKqu-Eip\Xpcr;$9cs3:VgrIk3)rV$$ZrUg'[q==OTrp]jSrpKgRrTsRM!:'OI
+!pJh1roOdRjQ,@]io/kSi8<DJh;-l@rn7M.f[na+pk&Krr.+furdacnrI4`q$%dh_K8##6KS5'Y
+L&d#-L&m!_reLN0rJ:T]Z*F;4s/uL,Xf_AFrd+Qhp36O]rd"<apj)7Q#_Re_KS4u2L1C3nq,.2i
+rD3hu:Jakb;Gg7e;Gm?gr_`PhqbR5es%`_n:Jajd9`e'a:&Ic_:&Icb:&B_HL\X[=9EIp^9_`i1
+G4'SOGkcR`GlE!cN<5&uNrG%;NrP+;NrG+=OT(=?IfFopIKG"LJGaosJGt,nK)L6(Jq8K)JqNiM
+s+C?)s+UH:!1!,>r0@;Jrg!GJn<a$>r0dJYrh]Xlr29Rns/Gsss/Z1$riQ!Y!0[)?!0m;Crf[2A
+k*#\*s,[E>h;-rEhu;O8iSrkrj8\0?jo+?AkPj]Cl2KuIlh]uHmJcPLn,;bSnbVhUoDS=Yp&=[a
+p\O[aq>L0cqu$BirU9`:s+13fs*t~>
+JcC<$JcC<$kPsrKqu-Eip\Xpcr;$9crbqd5!`N&trV$$ZrUg'[q==OTrp]jSrpKgRrTsRM!:'OI
+!pJh1roOdRjQ,@]io/kSi8<DJh;-l@rn7M.f[na+rD`Pj!*&qr!)ibmrDNYos&8turD`br!)i\k
+s&/kq!E)kn<<#r#<)QXnr_ru"ZE^\6YlCm.Y-"hq;ZBVn;Z9Vm;?0Ym;W:UW;,U7hrDWYPs#pEI
+r]pHIrB:BL4[(tj4o@GB3s.T+4$<@$!'L6B"?eh-3&pgr#<4Y%2`N`V3W1r83<;)ur]'m9r]'mW
+"]e],=#`2;2ZPc62>f?62`Nhs;?'Mo;>a8c;>sJl;?'Po;tNu_;>sT#<E<.#<E<,t<rZ/#<`f9$
+!EW>$=8l5#;Z9Sp;Z0Gm;YsDl;YsDL<!--$<`erpr`9/%<E8oqr)N_s!EW=u<W#hp<W#hr;uEHj
+V>mFjVuN^qWVrjsX8f:#Xo)?$=Sl8!=9).n:Amud:ARcb:A@WW:'KG/h;7#Grnmk:io9sts5X1A
+rT=.Croj:Erp'LKqX"1JrpKUNrUBdUqXXXWrUg![rq??cqY:'crVH?er;?Kkn,@n<JcEXfJ,~>
+JcC<$JcC<$kl:&Lqu-Eiq"t!crV?<bs8N,up\^oiW:p&[r:KsZqXXUTrp]jSrpKgRrTsRMs6BUJ
+s6'IGroX7B!9F.>!TN);huV`lrnRq:gY1B7g"=p.f%'bhqO7;Lr0[8GrKdDK$'qE`V5:&dVl$?j
+W;ijtX8T+"Xo5C&YPta0ZEUR:YHIl,s/c6_rfI/@!07&<rf$l8re^`7N;eh6MunorN;\b8N;AJ.
+Mu\e1N":8[Gbq:6VPU,dW*N\6?!R82r*',)!a8f5r`]G->[%,3rEB5*r)s2,>$P>3>7"J;>[1H9
+=BJX,r`KA-=BJ^/r`B2(>5DD$=T;G$X9P]*X/]B.=o;A&=^(`+r`K&!s&T#Os+gN.qMG0.oS`^-
+qhkK6[/.01\,Nl;\c',9\bs)=P5^[>P5URIPa.Q#Qh$O>RJ`NOS,]#I_tq:O`VmdVa8O*XaoBN_
+bQ#cec-H:6s3USfs.]Lfr1s@hs/,^ls/>ssri6"!!j&T0r3?7*!3uI-s0Ds;[E?Y6aN)<s`VmaG
+`VdXS_tq7M_>V.Lh#?+1hV\=js5<t;rSmt?jlQI'roa=Fqs"+Frp0FIrU'ROq="=PrUKdUrU^$\
+qt9s^rqH9arqZNhq>:-gqu-$`JcC<$`;b>~>
+JcC<$JcC<$kl:&Lqu-Eiq"t!crV?<b"4#03_Yf&fL%b?8r:KsZqXXUTrp]jSrpKgRrTsRMs6BUJ
+s6'IGroX7B!9F.>!TN);huV`lrnRq:gY1B7g"=p.f%'\Ms+:<'rdjfopj`6krI4isK)UB-KS>/6
+KS>/7qh></L5(J=Lku"ds02O,!3Z='s/c$Crd+Qhs*4Hcs*4Qfs*4NgpNZLZms5.B>?c`5KDgH'
+LAk!L;>j;k;>a;l;>sAn;,U9g;#4&h;#F)k:eje^r_WJe!)<Gf!)NShs%WMgr_;uZqhP6-q+^BQ
+s%<?9olfqNr-8$_qfi*dqMbQ8NK4!trJgl;rJpo=rK%#?rdOirr-nWp!.aus!.b$!pO`$gr.=j!
+s+Tg(r0@;Jrg!GJn<a$>rL*\[rhKCes/#amr29Rns/H!ts/Q4&O-'1"!0[,@s-3>Crf[5Bjc]Y+
+rK%$7rnRV3hu;R6i;hm9ir\<'jo+?@kPscCl2KuIlh]uHmJZJKn,DhTnb_nUoD\CZp&=[ap\O[a
+q>L0cqu-HirUBf;s+13gs*t~>
+JcC<$JcC<$kl:&Lqu-Eiq"t!crV?<bs).pSC&Us3;H$Qgq=X[XrU]mVrUKmVr9sXQs6]dOs6K^M
+rosIH!9a@Ds5a7Aro4%=iVqa9hqn@g$JaCig=b03f@SU(r`&Mgr)*Gks&/nsr`/nrrDikrr_Wu"
+:f1+g;c?Rm;u9Po<<?&s;uT`"<Nr^2YHIl,s/b`gs&&eo"&i/u;t<iK;[4p,/Q#DC;H!Kmr]U<H
+r]^0ArB(?I4?P\e4?GScr]L*?!'L0@!BE+:3<2#;3"7f+3''&Y3&ir[3&ir[rAjd:!]W+trAXd;
+r`',&='/N`3;b]82Z,H12?Gfs3W(l8;#X;l;Ys>j;Z0Jm;ZBYq;Z9Pe;Ys;k;Z0W#<E<.#<E<,s
+<WZ9%=8l7u<sD]';H$Ll;Z9Mn;Ya8k;YsDK<<#ti<rQ/%<`N/s<;]bo<r5no<;]bq<!-&sU8%X^
+r1s@hs/,^ls/>ssri6"!"0>U->5_V'=T;P(=T;P&=T;1n:Amue:AI]c:A.KU:&s)Kh#ZBiro!h8
+!93t;!p&J)rT=+Bs60@Erp'LKqX"1JrU0LMrp]mVqss^Wrq-*\rq??cqY:'crVH?erVZQknG\"=
+JcE[gJ,~>
+JcC<$JcC<$l2U2NqYg?ip\XpcrV?6`"TSDnna-.N!3#hgrUg'[q==OTrUBaRrpKgRrTsRMs6BRI
+!pJh1roO:DjQ-=#!TN);huV`lrnRb5gY1B7f`'J'f%'\frgN_PqO%&ErKdDKrg"(lUnji`VP^8g
+Vl6PoWiN3"XT,F$XoP[)YlCm*XTY`+X-&PDOT(:BNfB%tN;nh8MZ8V7Mu\k7N;\\7N!#&uMi@Fh
+oo/os!dJp6rH\p+V5C)dV5:&e>[1Q?>lIt-?2n.+>Qe89?!LY4=oqr5>5MM6>[:Q<=^#'7>$>$2
+=]ei)>5hY+=BSf)=Sl8#=T)D%=T>H,WiN2#>?b8.=92Q.r)s#$qcEbtrDilQqM>*,r/1-)rf$`4
+!fXLnqm?I5\,No8])&u;]D[oiPQ$^FPPpXEPPp^IQ'Rd2QiNQRR.ZmFRf&WT_X>>=_uRdU`r=$X
+aSj3\b5KN`bl>rdci;AhchsL9UAq"eV#I4jVZ!CoW2ZcqWrK4&YH[r0ricC-r3H@/s2tSgaiVWE
+`r!aQ`:CnH`;[[N_Y_+Kh#?+2hV[5ihu_lsir8!<jT"?>k5XWDkkjWDlMg,Fm/HDNmeZDNnG_tT
+o)A7[o_\=\pAXg_q#:*gqYC$dr;?N_rdk*#s2=qf~>
+JcC<$JcC<$l2U2NqYg?ip\XpcrV?6`"O+m%]<qHg!/:@DrUg'[q==OTrUBaRrpKgRrTsRMs6BRI
+!pJh1roO:DjQ-=#!TN);huV`lrnRb5gY1B7f`'J)f%#A(r.>!$rdjfopj`6krI=fq"G28ZK7j/W
+!JH1*L&d#-L&m!_reLN0re^ZXriH7'X/l&Crd+Qhs*4Hcqfr*cs*+NfqKVa[p3HdH?!I84s'5_<
+K7nmUKEd-,:f1(d;#O8d;#aDm;#O8k:]X?erD*Vo:Jah`:f%$b!DcGb:'F?e9heAXr(R5f9hkU^
+r_<>dr_<<H!/LAEnP&pTrClm-pilOYr-A0a!."C""H8>#NK*jr!0-r;rf7&@rI4WnrdOir!e,WK
+rIFlupOWI!JqEWGrIY'%rIjO%qj%2IrK[AJn<`s<r1X+as.fOgrh]XlrMK^qWN#lss,[2AqN:f@
+qNCuGPa(s,s-!;Bjc]M&!8RS0!oDhlrnmk:io9sts5a4Ar9"%Broj7Drp'LKq<\+JrU0ONrUBgV
+qssaXrq-*\rq??cqY:'crqcHfr;?KknG\"=JcE[gJ,~>
+JcC<$JcC<$l2U2NqYg?ip\XpcrV?6`"E/*iARYO7!`Drqr:U$\rU]jUrpfsVr9sXQs6]dOs6K^M
+rTOCIkNDj,!p/M(ro4%=iVqa9hqn@g"l.kdg=b-Xf*0aU<)cjspJ_)irDEPlr_ierr`/nrrDa5)
+;GpFj;Gg:f;,L6h;u9Po<W>ts;uTbrY5YO)XK/Dt;?Tor;H$Nn;ZBVo;?0Yp;ufkf;X@<_0/!5U
+s"FC)"YrqQ;,U<k;u\u[4T[`-48qAA49%GC3rh>@4Sh,A4?Ybgr]:0A3&pmt(-"642`E]U3]T/Z
+3BB2]3&`fW3'')[r\jg;q`=^:rAsp<s&B&"r`B+Zr&4U6r&+C1!]N)!r&FU5!Dubn;>jDj;#jMn
+;ZK_p;>*ob;#sQprDj,&<`W4#<`T-""]\T(<E<3#<rQ2!;ZB\o;?9WmnPf0]r_r5as&/nur_rr!
+<`Scm!EW>$<W#hn<W#np<Vobm<W?%rU&LedU]%"fV>mFkVZNfrWW&n"=]ed/r)s5+=BJ^/qcNhn
+q+gobr(cTSoM,DArnRY4hr"Fk!o`.uro=%>s5j1@s6'CFqs"+Frp0CHrpB[PqX=CPrpfmVrq$-]
+qt9s^rqH9arqZQiq>:*fr;H-aJcC<$`;b>~>
+JcC<$JcC<$l2U2Nqu-Hjp\XpcrV?9arq?TinE]/mVYm=mW:g)\rU]mVrUKmVqsXOPs6]aNs6K^M
+rosIHs6'CD($4N;j5].YiS`YOhqm2Fgt^Z<g=b-Xf)jOReGYm9Rf&TPQiNKPR/!$HQMm0JQ3jIc
+UnsobV5L2grhot!X/i>'riQ.%#HtA9Xf\\*X8]-tOT(=@NrP+<N;e_:MMmDfN;JM5N;&81Mu\e4
+Mu\2'GlDspH?k-qJqAW/KVeXEs.o^nqHWr(s',P.qca#)!aAi5r`fA,#@1P;=B\p5>5VP&>5h_,
+>$:i.r)ru%!*T,$r`T,#"'M_,WrB(!>6%h(=92Q.r)s#$qcEbtr)Ei"<E<3#M#E2-MXu`+N;AJ3
+[/762[f3c:\bs&8\bqWaPPp[DPQI,9QhQmGR/i]TR/i]ORJiTPRff1u_SYcZqo&KQ!65#YrlG)\
+s2t;`s31MfrQkMjrm(bpc_$i&T_tM`UAgqdV#R:kVZ!CmW;Ne"YHY80Z2_'.Z2Ls8ZcpY:bK@rK
+aN)<t`Vd[L`V@CN_u.CO_>M+KgAp%.h#ZBiro!h8s5O%<s5a1@rT=+Broj7Drp'IJqX"4KrU0ON
+rp]pWqssaXrq-*\rq??cqtU0drVHBfr;?KknG\"=JcE^hJ,~>
+JcC<$JcC<$l2U2Nqu-Hjp\XpcrV?9arq?T4]!JN;L&?T)L%YB9rU]mVrUKmVqsXOPs6]aNs6K^M
+rosIHs6'CD($4N;j5].YiS`YOhqm2Fgt^Z<g=b-Xf)jOReGY%!K)C2uJ,k)uJG=WmIf4cpIK4cn
+KE$W1L4k56L4tA;re:K0KnfS^s+p]3s/c@(X/l6"qKr3frHSBfr-/$_rd"He!-e<bp3HR^r`fV2
+>[(E<>lJ:6AHHIVKD^B'K8'.uoMPTa!`)Qfr_NPjs%iYk!DcPk:'49d:/:darD!Di:/1^_#Ye&g
+:/4MY:/1CVr(R/dqhY)CpIkQ[qb6u^pe:R.rHJ6as*+-\!."Ec!0$]4s,R,=r/Lc:r/Lc<r-n?h
+rdFisrdb!!p4E6qs+19&K)'utK)^K$KE-_lPl$aGQ2m0KQ2[*=Qi*3SR@'V=TV24Vs.]LfrM9Ii
+s/,am!3#gVrfI#>"-Sk4Pl?mHQN!-DPQ-gDOnt4@POF\7Oo1=@gAp%.h#ZBiro!h8s5O%<s5a1@
+rT=+Broj7Drp'IJqX"4KrU0ONrp]pWqssaXrq-*\rq??cqtU0drVHBfr;?KknG\"=JcE^hJ,~>
+JcC<$JcC<$l2U2Nqu-Hjp\XpcrV?9arq?S0A7/\H;Z0Jm;?6Cfo_nCXo)8+XnGD\Rmf2\Pm/QDO
+lMg&Jkl9iFjq["=jQ#:[io/hRhr!;Hh;$f?g=k64rmq>)e^RT!<;9Dk;?0Sn;YsDm<<#ts<;ff$
+<)Z[m;,gHm;$]uq;,U:j;c6Qm<";o-<E2sq;c?XpXf\\*X8]-q;Yj>i;?0Yp;ufki;?0Sn;XmZk
+0.nk//h\k10)dU/1GgsG;>jDl;uJfW49.PA4Sh,A4?Yegr]L3@s#C$=!B<%;3<(r;3!;6#3]T5"
+3!VB&2`NfY2`LUn!&sU2r&4pA3`T0\<``B_3;b]82Z,H12?Gfs3W:u=2`URk!''pTr)*Gkr)*Jl
+s&8kos%rboqGI8mrDiu"<`]0!r`02&<`W4$=8l5$=&])rs&8blr)<Vnqc!Mo!)rYlqbuu`##eK&
+<DugqrDiPls&T2$r`/kqqc3SqqGmDlr)Nbrs.B=ar1X.brhKFfs/#amrMKXor`TG-=BJ^/rE9>,
+=BJ^/rE0(q!_uNeq+gobr(d)a!)W;`ohPPA!8RS0!T)`5i;_d9ir8!<jSn9>k5OQCkkjWDlM^&F
+m/HDNmeZDOnG_tTo)A7[o_\=\pAXg`q#:*fqYL*er;?N_rdk*#s2G"g~>
+JcC<$JcC<$lMp;Oqu-Hjp\XpcrV?9arq?TinE]/mgA.ZHo_nCWo)A1XnGD\Rmf2\Pm/QDOlM]rK
+ki_..k5XNCjSn0Iio/kSi8<DJh;-l@rn7P/f[na+ec+(tS,SlSR/iWPQi<BIQi!*JQi33]V5L/c
+V5:&cVPg;iVl6VrX8]4"Xo5F&YQ1a'WrK'pO91K'Nr=q;N;JP/N;AJ3MY`80Mu\e8Gl`/8rH]!-
+K7ec-K7nl/Kn>#1KqtRDV?3TlW;9^)>[:T>>?b97>?q,2s'5S0"'f&6=T)J&=o__)=o_e+=o__(
+>5qb(=q+V<=^"s1>$G07>$4s0oN;3qXSo4"=o__'=Sc2"=Sl2!<r>r%<`N1%=&rB$M>2trMZC*_
+ZiRSArNuX6rjVs=r4;j;qi^W9rK7;IPa.Q$pR(oIpmV2MqjRMRrgX#+_u@OA_u.IP`;mpV`rO3Z
+aoBN]b6Q89c-FY]d*Va;!7:\9s.B:`rLs7cs.fOgs/#am!iN-%rN?1(s02I,!3lI-rNc@E"j4s.
+aN)<t`TtJ@_u@OO_>M(Mg=tE^h>c=3hu;R6iW%p9j8\3?jo"9?kPj]Bl2KuHlh]uHmJcPNn,;bT
+nbhtWoD\C[p&=[ap\Xabq>L0dqu$BirUBf;s+13is*t~>
+JcC<$JcC<$lMp;Oqu-Hjp\XpcrV?9arq?Zk]!JK:UkOO"K`C]CoD.tVnbqtSn,DbTmJQ>Nli68K
+klU)3kPjWDjT+B@isXl*iS`YOhVR)EgtVh^"khP[f@JLOeGb+"K)C0"JGaorJG=WkIf=isIKFqF
+Jc(0!K`Hf*K`Qp`qhG**s+p]3!3?+!s/GjArHeHg!-nEcqfr*coQ^.Vr`fb6>[1K<?"IPWA,TsD
+AnP[eA7gIHrIb9*Kn`J(:]OAi;#F)h;#X8j;#X8i;#*oe:ARc`:&n#f:B+&f:('ci9MJ5V9he;U
+:/:LW!/LK.qG$]X!)*2_r_)rY!DRb8GPu^`GOTkWMueosqMkN8s,Hr:!0-u<qgS3frI+csJGt,k
+K)L?"K)U?!JcLH&K`6\jPl$^IQBd^5PlR-EQN3?KQi!-MRJi`WTDkM^U&UkeU]%"gV>mCmVu)PR
+OSb.DP*;,pPEZ!2s-38As-!;Bl&u"-r/_!6gYDeas5!b5ro!h8s5O";s5a4Ar9""Aroj7Drp'IJ
+qX"1JrpK[PrUBgVr:9jYrq--]rq??cqtU0drVHBfr;?KknG\"=JcEaiJ,~>
+JcC<$JcC<$lMp;Oqu-Hjp\XpcrV?9arq?ZkA7/\H=]//q;$'Yfo_nCWo)A1XnGD\Rmf2\Pm/QDO
+lM]rKki_..k5XNCjSn0Iio/kSi8<DJh;-l@rn7P/f[na+ec+&"<E)or<;]\l;Yj>l<;onp<<#r'
+;c6Lj;,U@lrD<er;,^@k;GpHj<<#r&<)QXn<)fptWrK'o;Yj>i;?Kis<)`Hfr_`Ympf%/E"t_G\
+0.nk5r\=I0r%nR71c.'e;>jDl;tN3P48h8J3]T2[3&ruY3&ggrs#16F3&`cU3&rrX3W:uE3BB,Y
+2`WiY2`L^q"ZA4q2E!Ml2YT013!E8]<E<1'qD\:/r&+U83'$mrpc&.2r)*Gk##S2n;,L4hr_reo
+r)!GlrDEMnr)W_qr`0;)<`W4$=&r3trDEVoq,7/irDNSmoi1`cq,I;kr`&ks"]e]);c?Zo<VBJn
+<rc;#<W#ho<W#nq<<6'!r)EPn!*&ogs.B:`rLs7cs.fOgs/#am!2o`u"Bei/=]t],"Bei/=]t`+
+rD*AgqG-ubr(cTSohGSBgYDeas5!b5ro!h8s5O";s5a4Ar9""Aroj7Drp'IJqX"1JrpK[PrUBgV
+r:9jYrq--]rq??cqtU0drVHBfr;?KknG\"=JcEaiJ,~>
+JcC<$JcC<$lMp>Pqu-Hjq"t$drV?9arV-?c#jUL.g=F]MVl'Bi!iY_^qXXUTrp]dQs6fmRr9XIL
+s6BRIs60LGroO:DjQ-=#!TN);huV`lrnS.@gY1B7g"=p.f%&:"e'a_TrgNbQ!1<\Nrg<DGrKdDK
+r0@nlVPU)bV5C,dVl$AjW2ZbsriH+$$EgS8Y-4k)WMlbnqiLi=!07#;!0$`3qi(B0r/1E1s,6r)
+rd"Ni%>9@eJV/W/K7ec.K7nmUJd$dXJqBhqrhf^l!N2mk>Q7t)>ln55=oMS+>[(D2>Q7k2>?Y35
+>$5&(=oVS5>$5$4=]np4=]ej2=]kH%pf[u,X/rA%X/fE-=o2=t=oVV$=8l7u<<Q?&<``B"<r.^A
+MuU-_ZiRSArNuX7rjVs=r4;p=qi^W9r/q2HPa.Q#op>`IqjRJQq3q8Os.')*!5ncPnAG4CrP\cV
+rl>&[rQ5)^r6#,bc2Puicd:&;ci0L5T)YG_T_tM`UAq"fU]@IpX8oC%Y5PO(YkbR(Z2r4or6#8d
+aiMNC`r3m@`;RRR_Yh7I^]W<Fgt_nb!oDhlro!h8s5O";s5a1@r9""Aroj7DrTaCJqX"4KrpKXO
+s7$$XqssdYrq-*\s7ZHdqtU0drqcHfrVZQknc"+>JcEaiJ,~>
+JcC<$JcC<$lMp>Pqu-Hjq"t$drV?9arV-?c"gY8/US+7YL&?T*L%Fp4o)8+XnG;VRmf)VOm/QDO
+lM]uIkl9iFjoXZ*jSn0?io0mp!T2c5h%8Arg=k65f[na+e^W*tdY!2OK)U?$JGXiqJG+KkIf4cr
+IL1FMI"R$&K7nl1re1K.Knb;8r.Y</L5(K_L^8j;WMuhpVgNmjHi&*jH$FT4GPcXaH2;acGPQL_
+H2ChNARo@^AS,QRAc?<AAcH9FARo=_A;#U6KE?d[LAFaH:]!ug:]+#k:JO\\r_Ebq:JO\]:/+L_
+:BaHf:JX_]q+go`##%`b:/4MWnP0!X!/LK.qb?fYr_*/_r_)rY!DQ8e9Diu/GPHF^G5umeMueos
+qMkN8s,Hl8qgS3fr-eZrJGt,oK)^DkK)^K%K`?c+PNnD1Q2d-OQ'@O4PlR-EQN3?KQi!0LSc#)Z
+TDtS^U&UkeU].%hNr"h7OSb.BP*;,prK[AHpQPW?r/p<.r/pl<"5;Mbh#?+2hV[5ii;_d9ir.p;
+jSn9=k5OQCkkjWClMg,Gm/HDOmeZDPnG_tTo)J=\o_\=]pAXg`q#:*gqYC$er;6H_rdk*#s2P(h~>
+JcC<$JcC<$lMp>Pqu-Hjq"t$drV?9arV-?c#[^k@>$5!-;H!Ei!`JX]qXXUTrp]dQs6fmRr9XIL
+s6BRIs60LGroO:DjQ-=#!TN);huV`lrnS(>gY1B7g"=p.f%&:"e'e.nr)<Pls&8nrr)3Spr`/hp
+s&B/#;c6Nm;?'T);c-Fi;G^4g;H$Ll;H*Nn"'&<#<;of#<2upsW2QWe;?0Yk;?Bcp;ta,e;>jDl
+;ZJKM/cdUXr%\7.rA4s>1c7*G1c.'J2)R3h;>a>l;u&NU3rV/<3<)#83<(oB3]K)X3'')\r\t*C
+2`NfV2`^jrs#0j8#WO_"1c70L2`L(]"]SK%<``E"2ZP`61]TE12?Giu3W1r42uP`72uZ\Y;,C(d
+;,[Blr_iYks&/emr)NYqr)N_s!*/tun5B0_!)i_nnl5Qdq,I;krD`esr`0/'<DugqrDiPls&T2$
+r`/kqr)NYqr)Ebs<W#hn<W8QeT)YG_T_tM`UAq"fU]=Qo=o__)=9)M&=p8&2=BSd/qbI/eqG-ub
+r(cTSohGVCgYCT`h#cHjhu;R6iW%p9j8\3>jo"9?kPj]Bl2BoHlh]uImJcPMn,MnVnb_nWoD\CZ
+p&Fabp\Xabq>U6dqu-HirUKl<s+13is*t~>
+JcC<$JcC<$li6DPr;HNjq>:-erV?9arqHBb$0:!te^;[cVl-EiVZ<[mo)A1XnGD\Rmf)VOm/QDO
+lM]uIkl9iFk5XNCjSn3>iW.s:i!SAuh;-lAgY1B7f`'J-f%&:"e'cX5rgNbQs-WbOrg<VMrKdJM
+rKdDKqj%SSVl$AgUnsrcV5F3h"f\H$X/rE%XoGO+YHG(-rhoUS!0@,>s,I&;qMY0.r/:E/$]A7n
+>$6)pH?t3sK)UH'K*$a[KDgB'K7\aSJd$d\KS<[-rhf^l!iDo&ra#P/s'#M-=o;G*>?kB9rEK8)
+s'#J+r`T;+rEB)$!a&T/qca,*>[%,0r*')%qH<c#!*fD*!*T<%"feW(W`iR&=Sc2#=92K(rE&u!
+r)El#<E3+%q,[Mss,-W1s,-Q/rj2X3!O]<6[/m_FrjW0C]",D`OcfO(rfdAFplk`@s-!MKQ'V<6
+qO%8MrL*_UrLEnWrL3VQ!1Nl'!5n]No#(FErP\cVrl>&[rQ5)^r6#,bc2Pukcd:%bci0F6SGo)X
+T)PA^T`(SaU'%0iWiQ-#!3Q7'rN?4*qQ^(+s31Pfr6#8daiMNC`r<s@`;[XS_Y_1H_#N*hgYDea
+s5*e5ro!h8s5O";roF+@qr[n@roj4Crp'LKqX"4KrpK[Ps7$$Xr:9jYrq--]rq?BdqtU0drqcHf
+rVZTlnG\"=JcEdjJ,~>
+JcC<$JcC<$li6DPr;HNjq>:-erV?9arqHBb#-Fi"TV%dGrIt3'!/:=@rpfsVqsXOPrpBXMs6K^M
+rTX@Gs6'CDs5a7Aro=%<!9*q8$K'^rh;$f?g=k64rmqD+e^W*tda<^HJcLB#JGXiqJGaoqIfFor
+If4crIK4fpHi\kOrIY*'q1Sj(L]3#6LPCP=LPUbCW;`^kHiSNkHN/9iGQ;sbGl2jbGlN!bGQUoD
+<)ij%!F977Ac?9EB4b^dAH$-JA7]:_ARo@_A7\\lqh+s(r(mPo:f'q`;"RQ`:B+)i:&.Na:]=,h
+:]4&g:]F2i:&duf:&dlg9hnI_9_M0^:/+I^:B-+JL]E5.:%q?[9DqQ`9E.]b9D_B`9hbIXs%N*0
+!-n<`!-nL%!KE'7NW5%=N<P?%NfJO9qgSNos*j`ms*juts+'rsrIXotoRd*qqh+s%rKHQ3r0@;J
+!gT"7rK[/Erg*GJrg<\Ss.'(ZrLX"\s.K=as.TLgrf6l:qiL`<"Hnt4Pa;95rfm2Arf[2Am#q7.
+qiLj3!ScE/h>c@3hu;R6iW%p9j8S->jnn3>kPj]Al2KuIlh]uImJcPNn,MnVnbhtWoD\C[p&=[b
+p\Xabq>U6dqu-HjrUBf;s+13js*t~>
+JcC<$JcC<$li6DPr;HNjq>:-erV?9arqHBb$!g_<=]nj/<)QWl;#jMko)A1XnGD\Rmf)VOm/QDO
+lM]uIkl9iFk5XNCjSn3>iW.s:i!SAuh;-lAgY1B7f`'J-f%&:"e'cWDr`&kqs&Akor`&_mq,IAo
+"&r2s;Z'B"<)Zao;,L4f;,L7jr_`_prDWl!<)lrt;ZTjrrhnUNqG@Vu6:!q(/hSe01,:Zb1^,Zl
+1c@0Hr\XX4!&jg6s"jj:2)RQprDNVnq`47-#Wat*3&`iY3]R'u!]N,!r\jj<3;YZ72ZGZ72ZG`9
+2Z#H)2?5]62ZH_W<EB*#q_nL4rA4L3q_eL73B@$tq_nR92`L[pq`"O7"&Mil;Z9Vp;Ys>j;Z0Jj
+<W#nq<W?)$<E*#u;ZBSq;Gg<j;ZBVj;Y!cZ;ufkk<<#no;ufkq<WuQ);c?XprDiSms&T8&<E8oq
+r)NYqrDiYmrDiids.'(ZrLX"\s.K=as.TLgr`T)$!*T;'!*T8(r)rnlr_NAcrD3>dlqd:Ls4RM.
+h#?.0hZ)L4i;_d9ir.p:jT"?=k5OQCkkaQClMg,Gm/HDOmecJQnG_tUo)A7[o_eC]pAamaq#:*g
+qYC$er;?N_rdk*#s2Y.i~>
+JcC<$JcC<$m/QPRqu-Hjq"t$drV?<brV-<brq-KLe^;[caN""Qs76-Yrp]dQrpKdQr9XILrp'IH
+s6'IGrT41CjQ-=#)rfi8i8EMMhVI#CgY:H9g"=p.f%/C$eC2jndJfU6RK&]VR@*r>s-WhQq3M&I
+rKdDKqNh/H';25#V50raVPU/fVPg>jWN*##XSo7*Y-5"2VP^3eOT(=@NW>(9N;eb0N;SV5M?-sd
+rEB/(s'5S0!+Gh6#(qS]JV&H(rIY9-K7dE7?2\".V>R1kV5O8sq-3f$s&o>*r)s5+>$G05r*')&
+s'#;(!ErV&<WZB+=o;J&=Sc2!>5_Y4>$7l+X/`5$W`iR&=Sl8#=9)G%<rZ8$<r5l"<`N.$=8>nr
+=8u:tMu/D/MuC!\[/RH<[^WcV\[oA_r/p]9p6,NAQMHmFR/NHNRfAlUSG8TRRK18(_>qLL_XtbD
+`;[^U`r=$YaSj6\b5BH_bl5lkcd:%bR[X/Drga"ZrLX%]s.K@brhp($WiN2%Xfei*YQ(j(YlM*.
+blGucb6?&1aN)<?rl+0@rkncQqSE'Es4[M-!8RS0s5*e5ro!h8s5Nt:roF+@qr[n@roj4Crp'IJ
+qs==Ls6fdQrp]sXr:9jYs7H6^rq??cr:p6drqcKgrVZQknc"+>JcEgkJ,~>
+JcC<$JcC<$m/QPRqu-Hjq"t$drV?<brV-<brq->gTV)4S!1a"Ar.P+@rUKmVqX=FOrpBXMs6K[L
+rTX@G!9a=C!p/M(ro4sWiSi_Qhr!;Hh;$c>g=k64f@SU)e^W*tda?JAJcLB#JGXirJH(,pIfFor
+If4cqIK4foHi\_Krdt6)KDgK(K`6]'LB!#1L51Q`M#X=PV>GW?Hi/3eH2`$gH2`'cH2MpeG5umc
+<<#ns;?9]or_rhr!`N&trac(>rac">"(YtRAH#L*;#l7HKE6^Zqb[#_s%`PhqG.&d!_uNerD!>g
+r_EJh!DZGf:AITd9MJ8Wr_3#[qb@0HL]*#/L]'s@9`%K_9`@]b9`@Zc9M>=X!DQ8c9E%Wb9DE`1
+G5QOaGl!BrNVne:NVn4uIeA3iJGXoqK)L8mK)UE$K`?Z)Pl6g3Pl-gHQ2m3LPl?sIQM[$IQMQsJ
+Rf&ZSSH#/YT)YG_T`1Y_Nr4t8OSb.@P*>m2rK[AHplk]?r/pB0qN:Z:s4[M-!8RS0s5*e5ro!h8
+s5Nt:roF+@qr[n@roj4Crp'IJqs==Ls6fdQrp]sXr:9jYs7H6^rq??cr:p6drqcKgrVZQknc"+>
+JcEgkJ,~>
+JcC<$JcC<$m/QPRqu-Hjq"t$drV?<brV-<brq-=s=]t]*"&r2s;Z'Dlo)8+XnG;VQmf)VOm/QDN
+lM]uIkQ'fEjoXZ*jSn0Yio/kSi8<GKh;-l@gY1B7f[na+f%&:"e'cXkqc*Sq!*&kps&B"sqbmDl
+r)E\r"B8;t;cEZns%s/%9N+nh;,U7h;,L9j;ZB\p<;fhq;u`]pV;5&K;#s!NrBUTS5sR_#5Q3nO
+5<V1o1c5%ds"jd82)Y@trB:3Yr)3PnqD\O:3][!qr]9s;!]N,#rAXa9rAP'C2`<QO2E!KP2E1Ro
+!]N"qq`"+)rAXa7##eK$<`W:'q_nL4rA4L3q_eF5q`+I3!]W+trAa[5s#:'?3&pn9!)iVirDNYm
+qGmJpr)Nbt!*0"roMPNaq,78mqbuNSs&/o!r)Nesr_rhrr`/\ns&]2"qc*Jnr)WbrqGdDns-ikT
+rga"ZrLX%]s.K@b!a&T.r`];*r`TG-=BJ^/rEB2'q+gob!_uNerD*;er(cWToM5G?s4[P/rn[V2
+s53h6s5F";r8[e;s5j.?roa:EqW\"ErTj@IrpBaRqsXORs7-$Xrq$0^r:U'_rqH?crV?HhqYU6h
+qu-'aJcC<$aT$b~>
+JcC<$JcC<$mJlYSqu-Hjq"t$drqZEcrV-<br:L<FdE]qWa2GmpVZ<UlVZEadrUB^QrpKdQqs=@K
+rp'IHs60LGroX7B!9F.>s5F%;rnmh7hYu=3gtVh^%GBCcf@JL%eC2mpdF$>;RKAnER/30EQN*<N
+QMd*HQMm'VT;SQ_UnsobV5:)erhodq!3?+#riH=+YHF^tqiLf<s,R&;r/CZ6pl,00!KE!8=TDY'
+>Q7t.?2n==?t!JO?!U]??2In+?2\%.?2n72>6(MtV?*Nkq-3Ss!*T8(!a/]1r`]D,=o;J'>6A,6
+=]t`*"B\`-=',<#!a&T.r*')%qH<c#r*'J2WiN5$X/i7(=o2=u=oMP'=8u;$=8l7t<<Q?&<EE9$
+<WH5!<rZ8$<W6&!Mtr8/Mu9p[[/RH5[f3c:\bM<]P5(4CPa.Q#q3V)JqjI;Ls-rtWr1!\S!Q)bQ
+_>qLJ_Y:tF`;[aSa8a6[aoBN\bQ#fcc3VbCd$U2gR@9TBS,]#YSc,/[TDPPkWN*#"XKAZ(YQ(j(
+Z2`,JblGudbQ#]eaiMNBrPe*@rPSZPqSE'Ern7G.gt_nbs5*e5rS[_7s5Nt:roF+@qr[k?roj7D
+rp'LKqs==LrpK^Qs7$$Xr:9mZrq--]s7ZHdr:p9erVHBfrVZTlnG\"=JcEjlJ,~>
+JcC<$JcC<$mJlYSqu-Hjq"t$drqZEcrV-<br:L;fT:MRES=>uFL&HZ*L%5-2qsXOPrpBULs6K[L
+rTX@Gs6'CDs5a7Aro=%<!9*q8!T2c5h#Z<crn7q:f[na+e^W*te'cXkd"6k#rI=ltr.+`qpjW6m
+rdOcps*arrqgAEl"bVDYK7nmUK`Hf)L&?Z+LPGe`"GinMI!km>pj2j`s*4Ed!dK!9rHJBXB2AM'
+s&B"s!`Drpr_rhr"]JB";cH`k;uT\n;#jMl;>Z"IK8&ejq+grcrD!Vo:/+JY:f'n_pJ1EVs%`Pe
+p.bH[!_nE)rJ1H/rD!#[rC[5d91qtW9E.]b9*%^ZrCd8e9MG@Ws%NGcr_366r-&'`!-n<ur/LZ8
+pjMmcoR?jkqLSWts+BfmrIY*'re(68rK@8HPO=\4Q2d-MQ2[$IQ2HsHQi36IQiEHQRK&`RS,]#Y
+Sc,/[TDjiJNr>%9OSb.CP*_N$QMd$JPkUC@P5UO0P5:=<OT*r8gYCT`h>c@3hu2L5iW%p8j8S->
+jnn3=kPj]Bl2KuIlhg&JmJcPOn,MnVnbhtXoD\C[p&Fabp\agcq>L0dqu-HjrUBf;s+13ls*t~>
+JcC<$JcC<$mJlYSqu-Hjq"t$drqZEcrV-<br:U(m!E`M(=9Mc+<)QWl;#sSbrUB^QrpKdQqs=@K
+rp'IHs60LGroX7B!9F.>s5F%;rnmh7hYu=3gtVh^%GBCcf@JL%eC2mpdF$>;<Vobo;ts5j;uK\p
+<W?%q;uTZ(;bL(h;c-Fi;G^4h;H*Qm!)rhqr`')#;cBNghGOA42>oWI5sdq)5X@Y"5X7P!5!D4&
+4odhF55m\G4?E@;s&/nWrAjj<pGr75s#L*=pbr=82`EWQr\a^7rAad:rAXj;2E(Fko/?M*#<#L[
+<E<.%=8OoV2Z5H42>]962`NcWr]'d6!]W+tq`+L4"#r;#3;tr6;?'Mr;c6Iiq,RDpqc3Smnko?`
+qG[;kr);`Wr_rhur)No!;H$Nn<;onm<WQ9&r`/kqqc3Sqr)NSmr`/ucs-`nUr1!_Vs.0+[s.B6l
+s&oA*rEK5(r`T/&!*T%kqbR/crD3Aelqd7Krn7G.gt_nbs5*e5rS[_7s5Nt:roF+@qr[k?roj7D
+rp'LKqs==LrpK^Qs7$$Xr:9mZrq--]s7ZHdr:p9erVHBfrVZTlnG\"=JcEjlJ,~>
+JcC<$JcC<$mJlYSr;HQkq"t$drqZEcrV-<bqt13AcHF>M`5BIdVZEacqX=FOrpBULs6K[LrTX@G
+s6'CDs5j:Aro47CiSi_Qhr!;ih%SSug=k64f[na+e^W*tda?Ihd*MZZs-`kRs-N>Cs-E_OqNq&E
+r07V]Vl$AgUnsrcV5F3h!i`,uriH(#!jAc%r/go=!06r9pl,62r/;#EN/*.AJ:N&pG]n<0<s;W+
+=-]&:rg*hWIsulu?=3\;s',_5>[:WA?2e(5?!^iC>c":rVZ3IpVl3g(p0%H!r`];*r`T>*>Q.h*
+>6nM=>$4s.<``B#=Su8!<rZ8%=o;J&=Sc2!>5VS2>,nX)WiN2#>$:`)r)ru#s&]5$!*B/#qc*c"
+<E3+%r`0##r)Wi!s&Jqsqhk?1qQp1.rj;g:\@DO#rfI#>qNCT:!L/lJQN*9QR$X0=R.m$HRfAlU
+SG\iZR[h73_u7FP_tCn@_u7OR`;mpVa8a6[aoBN\bQ#cec-H=7!13VNs-`nUr1!_Vs.'.]q5=Ls
+WiN2%XfhZ,ril=*rm(Mfs31Gb"j4s/aN)=!`W*mS_t(bE_uIUM_>M+Kg&B\,gYCT`h>c@3hu2L5
+iVqj7j8S->jne-=kPj]Bl2KuIlhp,KmJlVPn,DhVnbhtXoD\C[p&Fabp\agcq>U6equ$BirUKl<
+s+13ls*t~>
+JcC<$JcC<$mJlYSr;HQkq"t$drqZEcrV-<bqt12dSXuCBS!ocCK`Qp^re(<+nG;VQmf)VNm/QDN
+lM]uIkl9iFk5XQCjSn0Eio/kSi8<GKrnS=EgY1B7f\"g-f%&:"e'cXkd*U*jJbFWnJ,"KmIfOro
+J,artIJ\EkI0+kMK)L<%K_^<&L55b_reCW2LPV^QrHn9bpj)ma!."Nf$YsHhAn>I]?X6o@>l%4q
+Fo?IeG[k/l@oW;&r)!Po;,L9j;?;H'rIb<+Kn`B!r_E)]qG.#a##7rh:JOVYr_<GfrCd2cqbHl[
+s%`Pep.bH[!_nE)rJ1H/r_<)[qF^f^rCd/ar_!;d92#7X!_l?^r(I&`s%E5_!-e?arc\?epl,-1
+s,R),rd=TkqL80gs*jor!.b$!rdt$"oRd$ore1<("-\t6P5^XHP`q="PkgUBPlI$EQ2m9MQM[$H
+R/`TSRf&ZTSH#,[T)=THNr>%9OSb.?P5^gJQMd$JPkUCAP5LI/P5:==OT4#5g&g$ah#?.0hZ)L3
+i;_d8ir%j9jT"?<k5OQCkkjWDlMg,Im/HDPmelPQnGi%Vo)J=\o_eC^pAXgaq#:*gqYL*er;?N`
+rdk*#s2k:k~>
+JcC<$JcC<$mJlYSr;HQkq"t$drqZEcrV-<bqt9tk!a/W-r`T5"r_i\l!E/F`n,DbSmJH8Mli-2J
+l2TuIkPjWDjo=E@is4T&iS`YOhqn@g'\qHsg=b-2f@SU(eC;sqdF$=fcW:$Fpf.5kpeh/l<)icq
+rD`Mi$qaMu<)QRj;Gg=i;cEZn!)rhqr`',$;cBGg;<1Ua3&NQM1GLU;0.eb.3]d4$!'9sFr\OX5
+55d_F56!eG4q'S:4$,Sf4[(r*;,U?l;ZB\q3W1r:3Vk]82u>T62ubf92$Gls2`<QQr]'j8r]'j:
+r\ss<2E(Fko/?M*#<#L[<E<.%=8OoV2Z5H42>T622uku<3;YW93&`en3;b];3&rrXr&Fa:rDESm
+s&8qqpf7;orDihpq,%,gqGI2hq,@;mqGZHSs&/u"=',<#!`W&rrD`brp/_/mrD`VnrDrhrqc*Pp
+!13VNs-`nUr1!_Vs.'.]qcNl$s'#A*rEB2'r*&ehqbR/cr_NGelqd:Ls4RD*!o)Mcrn[V2s53e5
+s5Et:r8[e;s5j+>roa:Eqs"+Frp0LKrpBaRr9sXSs7-$Xs7?6^r:U*`rqH?crqZQiqYU3gr;H0b
+JcC<$ao?k~>
+JcC<$JcC<$mf2bTqu-Hjq>:-erqZEcrqHEcqXsm\!mJd,rkecR_#1)1VZ!FmW;c8amf)VOm/H>N
+lMToHkl9iEjoXZ*jSn3>iW.s:i!\H!hVI#CgY:H9g"?;U$eEkXeC2jndEp4bRf8`PQiNKOQ1pU?
+QhZmEPmin@SYi9^V50rbVPU-fVuN[rWN6$"riH4(O8Y1>NrY4;NVJJ1M[5E)MM6b7IX?D?G6W;E
+JU`3$JGaosJ-^USJR2Ve?<pe7>R+P>?!UcA?!dM8#?tA:?!1:+V>[7mV5L6e>PVJ&>67u4>Q.n-
+>Q7k,=oDD%<r>qt=8c7u=8c2!=SuA%=Sc2!>5VS2>$7o-WiE,">$:`)r)ru#s&]5$!*B/#qc*c"
+<E3+%r`9&#rDrr"s&JkqregZ4"L>A>Za0S:rj;[4!0?o:qiUf>plk`Bs-<VMs-NSLqO.>MrgE\Q
+qO7MSS,L2(_u7FP_t1b>_Z7XS`;mpV`rO3ZaoBN\b6Q89c-FY]QBqN:rL!SPs-inUp8A7rWiN2%
+Xfek2rNQ:+r6G;d!6kAa"j4s/aN)=!`W*mS_t(bE_uIUM_>M(Lf\-8Xs4dS/rn[V2s53b4s5F";
+qr@\:roO%>roa:Eqs".Grp0LKrpBaRr9sXSs7-'Yrq$0^r:U*`rqH?crqZQiqYU3gr;H0bJcC<$
+b5Zt~>
+JcC<$JcC<$mf2bTqu-Hjq>:-erqZEcrqHEcqXsm\!hPpPrgEnUQ\>9j!/CK+s+UI@rU0[Pr9XFK
+s6BOHs60LGrT41CjQ-=#s5F%;rnn1AhVR)EgtUT;g=b-Xf*p6\eC;sqdF$=ec@UW@JGt&nIeeKk
+IK4fnI/eWpHiebKK)UE&K_^?!LAco*HhVj]H2VspGA_/.AS#=Y?<g_6>lS7C@:E_U@:NbV@UinW
+@q8O6;?9]or_X,&;,U7h;Gg:h;G^/BKDgH)K8#$Y;"[WZ:'49e9hkU^r_</]s%WDdpJ(Z_r_3#[
+r(d8d!/LN/!/LPJpItBU!)3>as%NDb!_c6[r_*;dr_38`s%NGcq+Ud2rc\?epPf*2!K;F*IJ\Eh
+IJeQhJ,OipJ,b$!Jc12sKD'oqKDpQ(KDq)7PlHpHP5pjHPOOh4Q2HjHQ1UC?QiEBNQi3<NRK&`S
+S,&'CNr>%9OSb1<QiEBLQ2HmHPPUI?OmJ8-Oo1:Af\-8Xs4dS/rn[V2s53b4s5F";qr@\:roO%>
+roa:Eqs".Grp0LKrpBaRr9sXSs7-'Yrq$0^r:U*`rqH?crqZQiqYU3gr;H0bJcC<$b5Zt~>
+JcC<$JcC<$mf2bTqu-Hjq>:-erqZEcrqHEcqXsm\!EiP(=TVc0=T28";uT\o;#sQnrpTgRrpBXM
+rp0ULr9=7Fs6'@C!p/M(ro=%<!9*q8$fBgth;-l@gY1B7f`'J3f%&:"e'cXkd*L!<<E8ior)<Ag
+!E2tp<W#hk;u]`!8Q/Pe;c3Nls&&epr_ibprD`br!)rkok>E?\2)R3G1,1C6/M/S-1c$mA1GgmF
+1G^jF2)I0I5!T$1rB1TR4$,Jd4Zbbi4Zbei48q5@;Gm?i"B8;Z2`LFis#9s;!]Dtrr\aU3"#r5!
+3;5B23;kl:2uko:2Z,N*2Z,N62?d&[<`W:'q_nL5rA4L3qDS@5!'1$<q_nR92`LRmrAOg<3B0"t
+3<;0$r\t*Z;GpFl;H!6hr`0#!oMPTar)*Aiq,78mqGZKTs&8nts&T5%<W6##<)QZm<;onl<rQ+t
+;up!"rDibrr)NVns&K)brg3SNrgEeTrL<Ras&oA*rEK5(r`T5(oM59ZrD*>fr(cTSohGP?g&B_*
+g]-(.h>c@3hu)F4iW%p7j8S-=jnn3>kPj]Bl2U&Jlhp,KmJlVPn,DhVnbr%XoDeI\p&Fabp\agc
+q>U6equ$BirUKl<s+13ms*t~>
+JcC<$JcC<$mf2eUqu-Hjq>:-erqZEcrqHEcqt9s\$M2E\`5BL0^q[X]rMKXmr20OnrpKdQqs==J
+s6BOHs60LGrT=.A!9F+=!oi1trnmh7hYu=3gtVh^"khP[f@JLOe-jaRdF$=ecH_iGR$df<r0@)D
+p6Y`Ds-<SLs-<SJ%[3'=SYi<^V50raVPU,drMK^rW2fiuriQ-\!frA%qMk6.'T83<O,SjJJ:Dol
+G^"CXK7ST(JV!fM$A!\WJ:<$"JmDYgrEL.E>[:ZB?!LT=>?bB>>Zt<:>[r,CV66ZmVZ3Rm>Q.e-
+>?kD2>m">8=^1l/$X$S8>$4s/<`W4#<r5ks<rH.t=8c/)='/R->$>-6r`K#"rEB,'$!LK4XK&;$
+W`iR&=Su>#=T;J&<WH5#<r5l!<`N.$r)Nf!rDrr"s&Jbnrepf^"1,;>ZMq30[/Z0cNrkE(O8G%9
+Oo:I>PQ-mHQ2d-MQhQmGRJN<NRK&`PS,\oWS,C,'_u7FP_stV>_Z7XS`;mpWa8a6ZaoBN\b6,u5
+c-H6Ps-EYNrL!VQs-iSY#cXi)XK8P,YHRo/s0;IHs3:Sfr6#8daiMQD`r3mV`;IOD`;daR_YV+H
+_#N$eg&B_*g]-(-h>c@3hu2L4iW%p7j8S-=jnn3>kPj]Cl2KuJlhp,KmJlVPn,MnWnbhtXoDeI\
+p&Fabp\agcq>U6equ-HjrUKl<s+13ms*t~>
+JcC<$JcC<$mf2eUqu-Hjq>:-erqZEcrqHEcqt9s\$M0gYS!oe5Q^*hhr.P-*rIb0)rpKdQqs==J
+s6BOHs60LGrT=.A!9F+=!oi1trnmh7hYu=3gtVh^"khP[f@JLOe-OOOdF$=ecH_"?JGaorJGt&p
+IeJ9iIeS6hHO,%OK7\]-KS,$UL&Zl-L]3&-L])Q"HMi'eHM;[mG]7S;BkV'f@UEDFr`fG6raPn;%
+:NaVA7B"X@:NeX;c6Qg;ZBT);Gg:h;Gg7f:Jb)%EIEIlr.P*(rD3>dr(m>f!)<>c!DcJg:%V-Y:
+&Ri]:&duf9_M3Y:B+#gL]*#/L]1$B9_h<]9`.N`9`@Zd9M8%X9E7fd9`7Wa9`I`d9M>:WrCd07!
+I0OsMunucHi8BgI/A?jIeeKlIf=ipJ,k0!K)L>qK):0#K`6W&PQ-mIP5g^GPl6g9PkgUCPlI$?Q
+N*<LQ2d0LQi3<ORK&`MNW5%:O8G%:Oo(LFQMd$HPl?mCP5LI/P5:==OT3r5g&B_*g]-(-h>c@3h
+u2L4iW%p7j8S-=jnn3>kPj]Cl2KuJlhp,KmJlVPn,MnWnbhtXoDeI\p&Fabp\agcq>U6equ-Hjr
+UKl<s+13ms*t~>
+JcC<$JcC<$mf2eUqu-Hjq>:-erqZEcrqHEcqt9s\!;$.l"^5&2=]n]&<;oeo;#jMnmf)VNm/H>N
+lMToHkl9iEk5XNCjSe*?io/kqhuV`lrnRV1g]#n1g"=p.f%'cL#Lh,KdEp4bcM^`9;u0Dk;ZKen
+<W,nn;u9H$92\_g;c-Fi;c-Fj;uT\p;uK\p<W>qq;ZBV_;@5HE3&NQK1GCF6/cI@01c$mA1,LgF
+1c$re2$,Tm2?#f=4WcaJ4?GVf4Zkeh4?PYc3BB5`3BKDm7S-HT;H$Ik<)``Tr&4U6r&+L2rAFd;
+3&`cUrAXa7p,Dt1rAjj:!&sj7rAX=+r&=X6!E<(u<WH4u2ZPc71]TE02ZG`:3W;#:2ubi=3B&nn
+3;kcA3&rrX3]T5^3Vtf8;YF)k<`8Qeqb[5grDN/am8X*cr)EYorDrr"s&K&!!`W&rr)E\rp/_2n
+r)<\s<rH%r<r>tq;ufqrQ2d0LQi3<ORK&`L=T;P(>5VV(>5h\)>4YMd:]=,f:]*uS:\@K_fDsV(
+gAfq-h#6(/hZ)L3i;V^8iqqd8jSn9<k5OQCkks]ElMp2Jm/HDPmelPRnGi%Vo)J=]o_eC^pAXga
+q#:*gqYL*fr;?N`rdk*#s2t@l~>
+JcC<$JcC<$n,MkUr;HQkq>:-erqZEcrqHEcqt9s\s76E7`5BL0_#;"JV>R4kVZ!CmW;c2]m/QDN
+lMToHkl9iEk5XQCjSn3>iW.s:i"Y)*hVI#CgtUQ:g"=s/f@JL%eC2kFd0n=IcHa\&R$a5,QBqE5
+s-E/@s-ESJs-E\MrfdGIP5^RLS=c^VVkg,cVZ*FjVuN[qWVrprO8k79NV\V6QP#CBNerICJ:2ci
+H$X[eJUi6$rdPK1IsulsIXZm!?<plB?!U]?r*9A/?=*V8s'6(;>?kHHIZp\5Y-+k,V>I+iVu9d!
+>Pq\)=T_c/>$Co."B\`+<`T&ur`&r!qc*Yt=8l>!=8c/)='/R->$>-7r`K#"rEB,'$!LK4XK&;$
+X'/['=Su>#=T;J"<r5ku<`N/s<WH5"<WQ9&r`/Vlr3?@0ZMh--Nr"h7OSk7?P5:CBPl?sIQM?jD
+RJiNORJNEORK18'_>qLP_>qLB_Y_4N`;[^U`r=$YaSj6\b59?dbg"CrPE_=0Q2d0MQi<BBW!oZ*
+X/rG*Y-5%5Yd(J/cMu/hbl#Wfb/q`Ga2\(ss2=iQpVd*NrknfSr5/<Hr4iEdf\"mVgAfq-h#6(/
+hZ)L2i;V^7ir%j9jSn9<k5OQDkkjWElMg,Jm/HDPmeuVSnG_tVo)J=]o_eC^pAXgaq#:*gqYL*f
+r;?N`rdk*#s3(Fm~>
+JcC<$JcC<$n,MkUr;HQkq>:-erqZEcrqHEcqt9s\s76DaS!oe5QMm'LK7s2W!JZ=-KE-`*mJH8M
+li-2Il2TuIkPaQCjo=E@j8\*=iVqaLhqm5Gh;$f?g=k64f[na+e^W*tdf.W!d*L"_c%1Cqr."]r
+m!o%ardFQhr-JKmIY7WO!J?(#K`Qp`rJ(5rqg&-dqKWTmEGo`0B4YXa?s[,D?<^q=@L$CP@UiqY
+@:T:G!b>e>r_i_opJV#g%T$#!;,C+jATN?SKS+l-qLej&r_3Dg:]=,h:&Rie:]F2g:&duc:%V-Y
+:&Ri_9`n-b:/:d^p.bK\r_3BJr.tAIp.Y9T!)3;`!)3Ab"&)?\9`7]c9`7Ta9`.Q]9`%K^Mtr>2
+HiJHnIJnQnHi/9hIK"]lJ,FcpJ,4]qJbk#pK(afsPl?mGPlHpHP5pjEPOk%7Q2QsIQ1C7@PQ-mF
+Q2d0MQi<?PN:i/1Nr4t8OSt=?QN3EPQiEBMQ2HmEPPgUAOmeJ-Oo1:Cf@\a/rn@D,s4mS/s5*e5
+r8@S5ro3k9roF(?qr[n@s60@Es6BULrTsONs6fjSs7$$XrUU![s7H6^s7ZHdr:p9erqcKgrVZTl
+nc"+>JcEpnJ,~>
+JcC<$JcC<$n,MkUr;HQkq>:-erqZEcrqHEcqt9s\s7?4m!*]>(s&oM'<)Zcp;Z9Mn;Z?(\m/QDN
+lMToHkl9iEk5XQCjSn3>iW.s:i"Y)*hVI#CgtUQ:g"=s/f@JL%eC2kFd0.hBcHa]6<:*W`<;T\q
+<;9Df;?f`e<`;sp;>a>l;uTYp;uBVo;?'Pm;?'Pm;u0Dl3r_2>2$5Zk1,8b\#qmnf1,:R>1c.)h
+1BfWm2Dd<Lr]^?F#<k434?Ybh48q8@48q>O3]T5]4?Pkr7nH9C8Oi\W"B88s;cEZQ!B)h52?5]6
+2uko:3;5B32YK*/3;kl:2uko92Z5T+2Z,N62??cWr`0##q_nL5rA4L3qDS@5!'1$<rAXa9!'0g6
+rAXU6s#L-?q)ACT<qoYp;Y*c_;#O8i;Xm]R<;fhq<;ohp<rQ2#<W?)%<E)jpr)E\rp/_2nr)<\s
+<rH%r<rH%q<<&0^Pl-gHQN*<NR/^=^=T;P(>5qe.>[(G0>4GAb:]=,f:]*u^:]F8d:\@Hbf@\a/
+rn@D,s4mS/s5*e5r8@S5ro3k9roF(?qr[n@s60@Es6BULrTsONs6fjSs7$$XrUU![s7H6^s7ZHd
+r:p9erqcKgrVZTlnc"+>JcEpnJ,~>
+JcC<$JcC<$n,MnVr;HQkq>:-erqZHdrqHEcqt9s\rpp<a`5BL0_#(kIV5F3h!2f^ms/>n_rp0RK
+r9=7Fs6'@Cs5j:Aro=%<s5Et8!T2c5h$2ZhgY1B7f`'J9f%&:"e'cXkd*L"_c-=J#R$X/*qN_)H
+n!F'?rK[DKrg!MJs-*ADs.01e#cFMpV5C,dV5F6is/6.$X/rC`NfX1"s,I&;rJg`6s-FRcOH>EW
+LOsu#H[0m]K7\])It<'!J:;uurdXs"ra#S0r*9S7>[:Z@?<pc>qcs;3G);^fX9#?%rN$%"V>R1k
+V5O8q!*T;'!*APgr`&r!qc*Yt=8l>!=8c/,='/R-=^#$6=]ef&=oDP%>7"J9X/rA%X/fE,qcNc!
+rE0)$qc<So!`i<$rDiu"<`f6#"BSW(?![)'rNZO3ZEoPdNrP.?Nr>%:OT(CAP5CFCPl6mHQN!6H
+QiNQRR/NEQR/WNQRf&ZRRKAtq_u7IP_u@OQ_sYD>_Z7XS`VmjWaSa0Vb5oi3rf[8Es-3JIrg*#O
+"0&<$XT#=(Y-5(6ps/l`s31Da"j4s.a2c4!`W!gR_th7L`W*mV_u.CJ_>M+KfDjJ'g&9Y)g]-(-
+h>c@3hu)F3iVqj7j8S-=jnn3?kPj]Cl2U&Jli$2MmJlVPn,MnWnbr%YoD\C\p&=[bp\agcq>U6e
+qu-HjrUKl<s+13os*t~>
+JcC<$JcC<$n,MnVr;HQkq>:-erqZHdrqHEcqt9s\rpp<aS!oe4QMm*KQ2uVkr.P</KnP,5L&LB;
+li-2Il2TuIkPaQCjo=E@j8\-=iVqa9hqn@g#2Itfg=k64rmq_4e^W*tda?Ihcd'h\c-1`hrdOrt
+J,OoaJ,autIIMUcIY37OKE$T*L4oGX#DS"hL5'u!HMVpcHMi$rF)c/:Ch[QpA78eMr`fG4raQ%>
+@prpG@g$7N@q8O;;ZBYr;H*?gqG@>n?u'ucK):*!JGb'%KnG*X:&n#e9`Iie:'+-b:&[i\:%M'X
+:&drh9htFWs%WVi9MG.Sr_EDd!/LK.s%W2\q+C]]r(@#`r_!Gh91qrP9hkU\rC[;f91r/\9DhK[
+9E0qJN;S&&I/eQnI/J?hI/\QnIeeKmIf=ilJH(3$KDpK$K*-^XK7`cK!ecc%rfd>Gs,mGIPa)!-
+o9B-;rKR;HoToK>rfdAHrK[AJs,?T0!07#=qiLf>s-NYNs-N_NrK[8ErKI/Br/pN4oo]06s4@;'
+!87>)s4dS/rS@M1s53b4ro*k9r8[e;roO%>s6'CFr9=7Hrp0OLs6]jSr9s[Ts7-'Ys7?6^rUp0`
+s7cHdrqZQiqYU6hr;H0bJcC<$bl<1~>
+JcC<$JcC<$n,MnVr;HQkq>:-erqZHdrqHEcqt9s\rpp6_=]nr,=U826=]eR#<)cfp;ZBSp;H*P\
+rp0RKr9=7Fs6'@Cs5j:Aro=%<s5Et8!T2c5h$2ZhgY1B7f`'J6f%&:"e'cXkd*L"_c-=I3<;ohr
+;YX2i<<#qu<;0Dm<;9Di;Z0Po9*\Ep<)ZXl;H*Qm!)rkp!)rhqq,./irDWVls#LiS3&`WN1G^^:
+/hS_.1GgmA1,LgGr\G9H1c@3L2EsAh4Ztti4ZY_f4?>Vg48q;@4:+)13BBAk77Tm=qaLQUr_`r"
+;GpFm2`L^qq`"F4s#0p9oeuk/p,Dq0r]0s;!&sg6r\sX2!&a[4r&=X6"]SK%<`W<!2ZPc71]TE0
+2ZG`:3W1r:2ubi;3Vtf92ZPi92uYi;56Eo,3]Zsp!`i<%rDikqo25B]r)*>ho2G-XqGmMos&/qt
+<W,r*=&rC&<E<.#;c6Qk;ufqm<rQ+s<<$"t<W,qu<;fhp<;r'[PQ-mGQ2[*L=T;Os=T;P(>5VV'
+=o_@g:B"#h;#X8i:Amud:AI]a;#!iZ:B/rGfDsV'gAfq-h#6(/hZ)L2i;V^7ir%j9jSn9<k5XWD
+kks]FlMg,Jm/QJQmelPRnGi%Wo)J=\o_nI^pAambq#:*gqYL*fr;?N`rdk*#s31Ln~>
+JcC<$JcC<$nGi"Wqu-HjqYU6frqZHdrqHEcqt9s\s7?3[!lMmjqnN0Hs/#Xk!2f^m!N>Aali68J
+l2KoHkPaQCjo=E?ir\6!iVqaHhqm5Gh;$f?g=k65f[na+ec+&.e'cXkd*L"_c-4ASR$X-6PlR-=
+QiEBOPm3J<Q'R`$Q2[!JPPgUDOUR_NVPg>gUnsrcV5:'fVuN[rWfR%;!0-r9s,I&;-^g?gP*(ib
+Lk^V7IXHHfH$G!nJpr3!J:N3$IXcluJV%67?X-lC?2e.3>[:\8>RXnE?!CTA?=S,5R&I(`X9,H&
+X8]+%WMlViV>[7oVcHl$=6N]a<<-(s<<-)!=8uA*=&r@'=8c/"=8l;+=^#$6=]ef%=oMV&>6nD8
+WiW8$WiK:s=T;P&=T;J#<r,er<rQ+u<WZ9%=8c/#='kl3!FB.,<rK<(Nr=t2Nr>%<OT(CAP5CFF
+Pa.Q"rKdDKopGQCrgNhUrL*kY_84"+rPAQPrPJTPm_]"A#/nEs`5T^8rQ"rZr5nfY!mHdhr0%&C
+s-*MKm&15iWiN5'Xfeh1YkQHBc2Z#cb6?&1aN)<?rl+lTr58EMqo/TRs24fPqSE*F!7q/$s4@>)
+rS%;+s4mS/rnd\4r8@S5ro3k9roF(?r9""As60CFs6BXMr9XINs6fjSs7$'YrUTsZs7H9_s7ZHd
+r:p9erqcNhr;?Nlnc"+>JcEsoJ,~>
+JcC<$JcC<$nGi"Wqu-HjqYU6frqZHdrqHEcqt9s\s7?3[!h,LBrK[DK"IGL.K7s)Ts+CE,m/H>N
+lMToGkl9iEk5XQCjSe*?io/kqi"4f&hVI#CgtUQ:g"G$0f@JLOe-sgSdF$=ecHa\YbKGD6IK4lr
+JF%dcIfFidI/\HuIY*3)JqJ]/LAHW(L&d#%H2i3jGn>+=EGo`1BkV'f@piYK>[:S4A,fsJA7K1[
+@UiqX@q8M9;c6OnpJM)j;Gg9i;$9m,CNb7)JcC9#J,Xm&K7nl1KS>)5:&RcM:%M'X:&drh9htIX
+r_<Mh9MG.Sr_EDd!/CE-oM#'R!)3;`!)3Ab!)3Ab!_c<_r_38`!DHGj;?0Yo9_qE^MuSb'HiAEl
+IK"]jIfOrsJ,"QoJbt&hKDpQ'P5pjHPQ-jNPEM)mPa(p+o9B6>r072Gop5W?r0%&Cs-*MKrJ^B.
+s,R)>qiLf>q3_2Krg*MJqiq&Cr0$u?ooem.r/^p0rn%2&!87>)s4dS/rS@J0s53b4ro*k9r8[e;
+roO(?roa=Fr9=7Hs6KULs6]jSrU9dUs7-'Yrq$0^rUp3arqH?crqZQiqtp<hrVc9cJcC<$bl<1~>
+JcC<$JcC<$nGi"Wqu-HjqYU6frqZHdrqHEcqt9s\s7?3["'Si1=T2J%=9MN#<)Zco;ZBSp;XFDK
+s6BOHrojCFrT=.As5a.=!oi1trnn@FhVR)Egt^Z<g=b03f@SU(rmVA*da?Ihcd'h\bfe1.r)3Ai
+s&AMgs&B"sr_i\nqbmDls&/kh#?"N#;c-Fj;uTYp;uT\p;ZKem;>jDm;u]bq3sn#/3Ar]O1c$j>
+0`<U31c$mA1,CaC1c7*Jr\X[6r]gEG(-XfB4$>Yg3]fJd3]fA_3]f;^5=._+qF:KTr^QoV"&Vrn
+;uTYt<&cfq2Z>Q62uGT52uPZ.2ZPc02uGZ83W:u<2uGT52u,B22?#N32ubc:;cWft!EV2W2ZPc7
+1]TE02ZG`:3W1r:2ubi;3Vtf92ZPi92ZPl956=)23VYQ9<`N1#r)3Gis&/YirD<Mk!E)ej;Y3oV
+<;T\n<!$*#<W,r!='#<#s&K5%;c6Qk;ufqm<rQ+t<!H?'<`N+!<W6#"<E/osrD`fZr0%&Cs-*MK
+r)iu%o2u#qr`]>+r`T>!:[q3[:]F8k:]4&e:]*ub:]!u`:]*rf:]*rff)F;$fDsV'gAfq-h#6(.
+hZ)L2i;V^7ir%j9jSn9=k5OQDkks]FlMp2Jm/QJQmeuVSnGi%Wo)A7\o_nI_pAXgaq#:*gqYU0f
+r;HTardk*#s31Ln~>
+JcC<$JcC<$nc/+Xqu-HjqYU6frqZHdrqHEcr:U']rq$'Y!Q)YM^\knIV#[CkVZ<UmVuN^qlMToH
+kl0cDk5XQCjSe*?io/kqi;_[7hYu=3gtVh^!SQ-)f*0aUeC;sqrm;)"cd'h\bfe2PQ^7E3s-E/@
+s-E\Ms-*YOQBmc"rfdAFq2l)USY`6]Vkg,cV5C)crMT[os,R,=s,I)=qhubfQ^<ktO,SmLJq8E"
+G^4OYK7\Z)IXm!!Jpr2uJ:W5W?XI(:?2e.@>[:WA?!U]A?!:TAAp9-&rN,suri-=)W2QSiUnOKV
+Uo"!ds/5luk>qR^!*8qrr`B,%"BSW)=',?$!*B/%#$G,6>?P'1q-!]#r*'G1=fSR(WiE,#nlYlm
+r)WYo!*9)!r`0;)<``=&?=$uFr`oM1ra5G$rNcH-rJ^f;rf$u>NK*msrK$o>r0%&C!L/lFQN!6C
+R/*0FRK/iV_>_@O_>qLP_Z.ON_>qFF_Z.LX`5BL2`Pojq`rO3XaT0K_b6,o1bE)Xas,m5Bl)4id
+WiN5'Xfel#cMu/hbl#Zaaooi-a2Z-u`W!gS_u.IK`W*mV_uIUK_>_4PeCE.$rn%2&s4RD*rnIJ.
+rS@J0s53_3s5Et:r8[e;roO(?s6'FGr9=7Hs6KXMs6]jSrU9dUs7-$Xs7?9_rUp3arqH?cs7uZj
+qYU6hr;H3cJcC<$bl<1~>
+JcC<$JcC<$nc/+Xqu-HjqYU6frqZHdrqHEcr:U']rq$'Y!1<\L!LB)NR/_d=K_gE&K`?c+lMToH
+kl0cDk5XQCjSe*?io/kqi;_[7hYu=3gtVh^!SQ-)f*0aUeC;sqrm;"ucd'h\bfe2PrI4crrda?b
+s*jurpO)[]#CM,UJqAW-K`$N0KS>,7L3\&hGkcOsF`MJ@DJX'$An#7Y?sHr@>[q=C@fKpCARf4Z
+@prkGr_i_o!E)kn;@?E#;,U7f;,UG'CO#c.rI=ltqgSQns*F`urIb9,KS>-A:%M'X:&drh9htIX
+r_<Mh9MG.Ss%`Jd!/CB,pIt<S!)3;`!)3Ab!)3Ab!_c<_r_3>brDWYmr_iejq+L^F!fU#TmX+n\
+r-nBip4*-oqL\<krIk06rfmGHs-*\NP*2#nPkC74PlI$HPl?sAQ2m!FOT1I@P5gI=N:W&/NrP1;
+OT1I;R/`NQQMd$FPl6gDP5(18P4Oh7O9="_f%0iPs4IA)rn@A+s4mS/rnd\4qr%M5ro3k9roF(?
+r9"%Bs60CFs6BXMrTsROs6fjSs7$'Yr:9mZs7H9_s7ZHdr:p<frqcKgrVZTlo)=4?JcEsoJ,~>
+JcC<$JcC<$nc/+Xqu-HjqYU6frqZHdrqHEcr:U']rq$'Y"Bei/=]tZ)!a/](rDWVls%rkr;sNZG
+l2TuHkPaQCjo=E?ir\6!iVqd8hZ2O4h#Z<crn7D+f`'J+f%&:"e'e6C$..#DcHXSVbK<c];Z'Jn
+<:Eof<<#nr;Z0Pd;@Q;m;-$Up;Gg=i;c6Llr_ibpqGI,fr]:oV3&WQM1bpd?0.nk//i,@@0JG=@
+1c$rc2?#i=4UjG84$>Yg3]]Db3^#Mar]1*E5XYK>rC?fUs$[Jg77K^77T!&];c?Rl<)Yb9r&=O3
+r\sa5lSn`$s#L'<!&sg6r\sX2q_e:1s#'pW<E9$!!*B(W!&jd4s#'[3s#:!=rAad8s#:!=q`+U7
+"?8>!4[&[,s$-QKpc&FX<E<*b5lFU[;?'Pe;>!iZ;smWa<Vf\p<rZ1u<WQ9&r`/u!"'&8t;uT_u
+;cH^rpK%8nrDWr#<`W4"<W,r"<E)rs<W5qtO8b7@Oo1C<=T;Oq=T;P$=p%Vu:f$UV!)NSjs%iSg
+rD3Aer(m,bpeUlar_NMg"4YlPf)F;$f`0Y(gA]k,h#6(.hZ)L1i;_d8ir%j9jSn9=k5XWEkks]F
+lMp2Km/QJQmeuVSnGi%Vo)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk*#s31Ln~>
+JcC<$JcC<$nc/+Xqu-Kkq>:0frqZHdrqHEcr:U']rq$'Y!V+#'^\kkIVZ*FiVZ<UnVuN^ol2TuH
+kPaQCjo=E?j8\*=iVqd8hZ2O4h>c71g]#nCg"=p.f%/C$eC2jndEp4bcHXVXbKJ%qr0R>Is-N_P
+o9]HB!1!PJs-<SJ!L&]>OoLs[Uo(#eV50rbVPU,drhodVrJg`6s-XFcP*(faLP:;0I=-?cH$=Lb
+rdk*"&Uo4ZJUi6#JV%07>[:ZA?<pq;?2n72>mOY@?!UfSJWlu0XT#7!W<B/tV5:!cUAghcT`Ld^
+r20Lls&\Aap/M)nr`9,&=8l5#=8c/"=8l;+=^#$6=]ef%=o2D&>6.o1ri?(!s/Y]mr`B"uqGdMr
+r`/qu"'&]9?iF@4?XE_;!+,S1qc3\srNcH-s'5S`"H8>"N/[aqrJpo=!0I,@s-!AF!L/lFQN!6A
+R/<<HRfAiZ_nj1+rkn`P!5ncP!5nZM!5\?Fs24iSrl"lWrPnoZqoJi\rlYAcNfO(!rfI/Bs/5+[
+#-"W'XKAV-oZmK]rlk>as2kGcaN)=!`W*mS_u.IK`W*mV_uIUL_>h:Ne,Ihue^i=NfDjM'g&9Y)
+g]-(,h>Z:2htu@3iVqj7j8S->jo"9@kPscDl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\agd
+q>U6equ-HjrUTr=s+13ps*t~>
+JcC<$JcC<$nc/+Xqu-Kkq>:0frqZHdrqHEcr:U']rq$'Y!V)KTQ2d-MQi*3NK`6T(K_gB(KS>-Y
+l2TuHkPaQCjo=E?j8\*=iVqd8hZ2O4h>c71g]#nBg"=p.f%/C$eC2jndEp4bcHXVXbKJ'*J+nKb
+J,XooI.)CaI"R$&rdt<+KnY3XL&ZGpGlN$uF`VSBDJNs!ARf7Y?=!P8!*fG4!+c(<$tEgY@q/tX
+A5Z?(;cNZm%T?8(;H$Fi;Gg7f>A%u)rdk*""FklLIt.EGs*a`j!d]-<r.P''j\>>?r_<Df!DQ>a
+:&[lh9h\7L:&g"HM"j[;9)qZ`9)qZb9)qZb9*J!`9h\Mcqc!Gkr)<Gbregc8rDN04!.=]ms*jlq
+s+(&tpON9prdk-$rIY'%s+:9's+L?'r.G'7rfd>Gs-*JI"I"t2PEbX%mZda:pm1r?rK$r>s,m>=
+rep]5s,Hl6rf$o<rf@#>rfQoAs-NbOr0@/DrKI8Eoo]'5oo]37!7Uqs!nGlQrn%2&s4RA)s4dS/
+r8%A/s53_3s5Et:r8[e;s5j1@s6'FGr9=7Hs6KXMs6]jSrU9dUs7-'Ys7?9_rUp3arqH?cs7uZj
+qYU6hr;H3cJcC<$c2W:~>
+JcC<$JcC<$nc/+Xqu-Kkq>:0frqZHdrqHEcr:U']rq$'Y!:fke!*T;)##\;r;cHXnr)*Sn;H!JX
+s60IFrT=.As5a.=s5F%;ro!h6!8d_2s4dV/rn8.@f[na+f%&:"e'cXkd*L"_c-=JUbKBWZr`&nt
+r`8Vjr_rkrr_iYmo25ce92\bg<)`co!)rkp!`Muppeh&hs#UWM3B/lP2)6pA0J>%3r[n=/1G^a@
+rA4I2$oTq"1d=2f4[(qi4?`[+%6?R64$#Md3BKAh6:FBC8,Ga^77K^77R]a87Rd;Dr^?``##eDt
+;cG_9q`"I3r\s[3m5Oo%!'1$<!&sg6r\sX2q_e@2s#9s9s&8tur`0##r&4U6rA=O3q_eL73'$ps
+r\sj:!'0p9!]N8+rB1-Er'13H!^Ak4qDeIT!*0"`!'gBZp/(ig;>*oZ;t!]b<V]Vn<rZ1u<WQ9&
+r`/u!!`W)rrDWhs<)rWmr`/nr"]\T(<E)rr<WZ9#<;ol!<0!";O8b7@OoJMY=T;Oo=9Vi2>$5$+
+r_NSjnP0'[r_WVjrD*>fr(d/cq,$l_s%`Jf!D_,Ce,n1Of)F;$f`0Y'gAfq-h#-"-hZ)L1i;_d8
+ir%j9jT"?>k5XWEkks]FlMp2Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk*#
+s3:Ro~>
+JcC<$JcC<$nc/.Yqu-Kkq>:0frqZHdrqHEcr:U*^rq$'Yrpfj"qnN?4VPU,drMT[ms/5mqrojCF
+r9"%@s5a.=s5F%;rSRb7hVS7f!SlH/g'66_f[na+ec+&.e'cXkd*L"_c-4ASb/qa&R/30HR.cmG
+Q2m3LPlI$KPQ6pHP4Xn:S-Y[_VPg8dV5C-hV#[FjNW+khR@'A*OH>EVL4au'H['aWGB\RhJq8N'
+It!!!IsuluK4&"k?!^fC?X?uC?!gk9?2n46?#b[kX8]42XK&;"Vkp2bU8"EXU8"@[TE1aZrLX7b
+SXlUSV>d@lVuKi]<q]Mn<rQ/$=BG<!!*B/%#$G,6>?Y-2q-!Mss&oB&"g"`(X/fY"=T2D"<r,hr
+<rZG-?=-uEra5Y2!FK14>l\4,?iO1,<W06'>Q7q/?!dDerf-o;!frG)r/po@pm1lFnsKBDpmV2O
+"N/*m_8?2hrk\ZQrPAQPqniBLotpaHrl"fT!65#Ys2b)Zs2kJfb)D=>rf6u=rh][nl)=W]"KJN(
+Xj-I_s3:Sfr6#8daiVWE`r3mV`;ION`;7IP`;daT_Y_1K^]Ms5e,Ihue^i=Mf)jUXg&0S(g]-(,
+h>Z:2htu@3iVqj7j8\3>jo+?AkPscEl2KrJli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\jmdq>U6e
+qu-HkrUKl<s+13qs*t~>
+JcC<$JcC<$nc/.Yqu-Kkq>:0frqZHdrqHEcr:U*^rq$'YrpfuQ!1*VNqj@D:s+:<)pP&V1s6'=B
+s5j:ArT!q;!9*n7!oMkkrnRV1g]#n2g"=s/f@JLOe.C*WdF$=ecHa\YbKJ&MaFA^0JG=WoIf=cm
+I.)F^H4#"JJqAW,K7ei3K`6]#GRek<Ec>o4BkM$f@UEJH>Q.e+@f9gK@:EbYA7K(Y@:N56;H$Ol
+;uT\p;u]_r;,I6h"]AWBG_1PHJHC@NJ,XosI/nWnI/A6jH2DpfGm&eQK7npWL$VM69`.WU9`@`d
+:A%?\:'+-`9^b^UL\ur.<;B5]9)qZ`9)qZb9E.]c;?Bft<W5tq;uBPh;uKAgMZA_6;?0YgHiAEj
+IJeTnJH(,sJH(,uJH(3"K)U>tJcLH%K`?](KER!^KTq`#PQ$gHPQ-jMP*(rlPjjn+PlI$FQ33D2
+NK*ptrf?u7rep`6rf-c5rf$u>O,s4#!Ki`AR/`NQQMd$FPl?mGP4at6P4t+9O93kZe,Ihue^i=M
+f)jUXg&0S(g]-(,h>Z:2htu@3iVqj7j8\3>jo+?AkPscEl2KrJli$2MmJlVQn,MnWnbr%YoDeI]
+p&Fabp\jmdq>U6equ-HkrUKl<s+13qs*t~>
+JcC<$JcC<$nc/.Yqu-Kkq>:0frqZHdrqHEcr:U*^rq$'Yrpfkf!*T2&s&&horDWMirojCFr9"%@
+s5a.=s5F%;rSRb7hVS7f!SlH/g'66_f[na+ec+&.e'cXkd*L"_c-4ASb/qa&<;KVl<q]Pm<;fbq
+<;TVe;?Kci8k]+]"&Vro;uTYp;ts5i3sRf,3ArZN1c#%a.kNA+/M8e81GLU>1GgmD1c7-I2*X;g
+4[(qk4$>Yg4$#Jd3]]Ab3^,i!7f>jU7fPmY7R]cE7K>jT6iBCR6ULc;s&')!<)QUm<&cl52ZPc7
+2u5H"2to932uGT52u,B/2>f?82)\E5<W6#"=$?L@!&jd4s#'[3!]N)!rAad8s#C$=r'(-D!'^?E
+!'^<Fs$-QKr'('=r`0#!r]pKJ!^KX]pJLQ\o2G*Wr`/_m!*0#!s&K"u"'8N'<W6##<)Z`p<<#kt
+<)rWmr`/nr!``9%r`&hs!*0"t"BAE[NK*ptrf?tYqH3`"pfRJrr`B8*>$=f$:]O;]:&n)h;#a>i
+:B"&e:Adoa;"7<_daQ\Ee,n1Of)=2%f\+sUgAfq-h#-"-hZ)L1i;_d8ir%j:jSn9>k5XWEkl'cF
+l2^/Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgbq#:*gqYL*fr;HTardk*#s3CXp~>
+JcC<$JcC<$o)J4Yr;HTlq>:0frqZHdrqHEcr:U*^rq$'Ys7-*X!5AEHqnN<M_l'C2V>[=lVZ3Rn
+VuZ#Yk5XQCjSe-=irA!:i;_[7hYu=4gtUT_g'ZNcf@SU)e^W*tdf.W%d*L"_c-4ASb/q`GnX/s8
+!1*GG!L/fIP5(1:OT1gYSY`6]VPL#bV5C)cr/DGMR[KP-OcYNYL4t/)H?sdYG^+dgJ,F`qIK"`r
+IMd]g?=$oD?!grF>[1WA>@(N>?>"YOWi`?$XU2&0Wi;qnU8+KWrLj1aqk*n[rga([S,SiXUo(!e
+V?*Srk#V1Us&T)"q,RJsr`B2(>5h_,=]kK&q-"&,=KAL(X/`2#qI',$r`B"urDaJ:?!UcC?!UcD
+?!UcD?X@&G?XE_;!+,D,!FAe*Z3@L;>?kE=ra,M]rf%&@O,oBarfR5Drf[AIQ2-aDQh-UCRJ`KT
+S!ofFRg>P%_SX.*_Sa:j_Z.OP_>qLN_Z%CG_>qLO`;[^U`r=$YaSa0[b5]Z`N;ee:Nr5aUVl?Z]
+W!96$WiN2Fc1oTaci25ic2Z#cb6?&1aN2EArPefTrPSNNqSiHPs24lRrk\QKrm:eqe'n<Gs4%,#
+rR_)%s4R>(s4dP.r8%D0rnmY3s5Et:rT!n<s5j4As6'FGrTX@Is6KXM!q#FDrU9dUs7-'Ys7?9_
+rUp3as7cHdrqZTjqYU6hr;H3cJcC<$cMrC~>
+JcC<$JcC<$o)J4Yr;HTlq>:0frqZHdrqHEcr:U*^rq$'Ys7-*X"I5:=Q^@T:".>U2K`6W&K`Hf'
+K`L<6k5XQCjSe-=irA!:i;_[7hYu=4gtUT_g'ZNcf@SU)e^W*tdf.W%d*L"_c-4ASb/q`GnUUFb
+!.OlppjD[[qK`QtIY*3(JV/T.KnY26qfr-`&9;c/ChdWpA7AqQ?!:E9>[dS?s'Yn;qdTS8"B&/s
+<)`]m!`Mrnr_N_p=(QK)r.=s"#C_/OIXQTjHiABoH[9u5HN&0jG^'.1s+CQ.KS5&4L$VP69`7]V
+9`@`d:A%?\:B+#g9^b^UL\uu+<<#ns9_M*Z9`.N`9`@ri;u]_s<)lrt<;]\m;YF#h9DseH;Z9Sp
+HMMpdI/\QoIf+]iJGt&tJ-(:RK)C3!K)U<%JqNoQrIt68rfdAHrfdAH"Hnn2PEbL!ns'0>qNh)=
+rf$u>Mi7Ljr/:T6rf-c5rf$u>O,s7$!g/h9pmD)Ls-NkSQBqH6qiq)DrfZr:qNCW9r/gp*!n,QH
+rm^tu!7q,#s4IA)r7_2*rnRG-s5*b4r8@V6ro3n:roF+@rT=.Cs60FGs6BXMrTjUQmdC&Bs7$'Y
+rUU![s7H9_s7ZKer:p9es8)ThrVZTlo)=4?JcF$qJ,~>
+JcC<$JcC<$o)J4Yr;HTlq>:0frqZHdrqHEcr:U*^rq$'Ys7-*X!*B/%!*T2&$X6k6;Gg@k<)QXm
+;>X5kkPXKBjo=E?j8\-=iVqd8hZ2O4h#cBdg]#n6g"=p.f%/C$eC2kFd0n=IcHa\YbKJ&MaN4?[
+s&JbnoMtZcr)<Agqb[Pm9MA;`;cEWm!`MupqbdAT#Wat*2`3HL1,/\\r@\(*r\5NO2)@!D2)R3J
+2*X8f5!1ti4Zkee3]fGb3]oMh6q9g<r($cVr^HiV!(?cQqaCHNs$-WO5=,36"&Vrn<;obr<&jJ.
+!]Dnnr&3t%pG`.3r&4O5q)8%+r\jd6s&8tur`0##r&k'C48^u52?Gfs3W1r;2Zu6,5!M:056!bG
+55m_F55[YF5QF%E4odSA<WH+u5lX(J5kn4J;Y3oU;ufqo<;fhs<rQ+t<WH5#<W?)%<E)mqr`&kq
+!*/ep!EW>#<W5r!<E<-!;ufqt<WlE%<)lrsN;ee:NquiR=T2Iu=T)>#=T;P(;>a5j:[q0]:Jame
+:]4&f:]4&c:\moZ:]A`CdaQ\EeGn&!f)=5#f`0Y&gAfq,h#-".hYuF1i;_d8ir.p:jT"??k5XWE
+kl'cGlMp2KliQSBmeuVSnGi%Wo)J=]o_nI_pAambq#:*hqYL*fr;?Nardk*#s3CXp~>
+JcC<$JcC<$o)J7Zqu-KkqYU6frqZKerqHEcr:U*^rq$*Zrpg$Xs6op$!PlJJ_#M7U_54',V5:'f
+VuNXoVuN^pk5XQCjSe-=irA!:i;_[7hYu@2g]6+.g&]mZrmq2%ec+&1e'cXkd*L"_c-4ASb/q`G
+a2[\;q3V,Irg*VNrg!DG!0dAEplYE7"Hf4FSYc=_"JqojV5F3N&t55TP`h/fM2$_7I!g3aG]n=_
+rdPH-IsufoIXQ]qJ:N8[?X@(<>l\40>mahB>[DN5Vm*>*XT#=0X/rA$WMQDbUS+9Rr1EkX!hGjN
+rgF.]R$X/)QBn>DV>d@lVZ9f\<r>qt<r>ts<rZ7r<WH5#=92Q.r`]D+=SZ+q=p8&2=KAO)ri5Ns
+ra5\3ra5S0r`p"??!UcD?!UcD?X@&G?XE_;!+,D,s'G]1"gM99>[1S5?N,o_NW5%=O8b4@Oo:FF
+PE_;sqj.)FopG]Gr0mMPs.',,s2+fP!lDjmrke]QrPAQPqni?KpVI!L`5V_orl+iVs2b,[s2kAc
+MZ/P6N;0=NWV3:jWVECrWN*#Bbg"E1cMPrecMu/hbl#Wfb/q`Ga2\(ss2=rTq8E-Krl"iSs2+fP
+rP8H[rm:eqe'n<Gs4./#rR_)%s4R>(s4dS/r8%A/s53b4ro*n:rT!n<s5j4As6'FGrTOCKlg+N9
+s6]jSrpTmVs7-'Y!qZ'Vr:U*`s7cHds7uZjqYU9ir;H3cJcC<$cMrC~>
+JcC<$JcC<$o)J7Zqu-KkqYU6frqZKerqHEcr:U*^rq$*Zrpg$Xs6frRrg*YQQi*3RR@9OsK`6T(
+K_L3"k5XQCjSe-=irA!:i;_[7hYu@2g]6+.g&]mZrmq2%ec+&1e'cXkd*L"_c-4ASb/q`Ga2[\#
+q1&<jrI"TkqL&'bqK`9kH?sskrdt-%s+UDrs)eZhEGo].BP(db?srt=!Erb,@fBm9@K0g9A,K71
+;H$Ik;c?Okr_Wi*E.<OnKDgE%Jc1$#I=$?gI//*eH2i*kGBS.RrcSQiFE;MVK7ei1re9]5r_3;c
+rCd8e9MP=Vr_3AfohGE\s%NJeq+Ui_pItXCreLT1M#:6C;u]hs;u]_q;uKSt;c6Lm<E9#tr)<Mk
+oi(gIr)3Jl!.+QiqKr9krI4]pq1/Bms+'lq!.t0#!eQ&Wr.P!%rKR;Fs-3MHs-*YLOctunqi_#C
+oons2!1!DH!/gc6s,?i5qMP<2s,?r:qMbE5!fi>&rfI)FqO%5L"IPOBQBqK7qNUuCrfZr:qNCW9
+rK.'+rm:eqe'n<Gs4./#rR_)%s4R>(s4dS/r8%A/s53b4ro*n:rT!n<s5j4As6'FGrTOCKlg+N9
+s6]jSrpTmVs7-'Y!qZ'Vr:U*`s7cHds7uZjqYU9ir;H3cJcC<$cMrC~>
+JcC<$JcC<$o)J7Zqu-KkqYU6frqZKerqHEcr:U*^rq$*Zrpg$Xs6fqir`K8*=oDP&>Q7S';,U=k
+pJV"Qs5j:ArT!q;s5Et8s5*h5rn[V0!8IM,!SQ-)f)aIQrmV\3da?Ihcd'h\bfe2PaiMQD``,o;
+<VBJh<W?%t<W,nk;ts8e;$^&o9M88`;c6Qn;?0Yo;?&]]3]T/Z2E(Oi!AQ5+0,#rk1GUdB0ekI@
+1G^jE2)R3J5<o-1%m)p;4$>Ye4?>Mc5!qh38GYgV7fGgZ7R]d66iBCY6UF((5X@V"62EqJ5mBS=
+5Yt<T<;obr;`OA-!&jd5r\j1'pG`.3r&4O5q)7h%!E<(t<r>)\4T.A;49I`15<o-2!^/Y.r]U<H
+r'(-D!'^BFs$$?Fs$-QKpce[X!*&q_s$-HIqbd,dr_`VloMamOr)Nbtr`/nt$!1,+<E<.#<)Z`p
+<;oer<V9Dl<W5tt<WH/!<!--$<`T,u!EG$VMuSb1=8Z1q=o;D#=8uA*=]/-p;>j>k:[q0]:Jame
+:]=,f:]F2c:\mo[:]Jf@d/qbFe,Iksec45!fDjM'g&0S(g]-(,h>Z:2hu)F3iW%p9j8S->jo+?A
+kPscEklU/9li$2MmJlVRn,MnWnbr"[oCV\Qp&Facp\agdq>U6equ6NkrUTr=s+13qs*t~>
+JcC<$JcC<$oDe@[qu-KkqYU6frqZKerqHHdr:U']s7?0Zs7-*XrpTj$!PlJJ^];4L^]gR4Vkp5e
+rhoams/5mq"/k8AjSe-=irA!:i;_^7hYu=9gtUT;g=b03rmqt;e^W*tdaHOjd*L"_c-4ASb/q`G
+a2Z*cQhm$JQ2d*KP5pdFPPgU=Oo(7>OTq#>S>E*[VuEM+VMpt2R$3\oNerLEJ:)]hG^+LXrdY-"
+J:N)rrdF`os+:/Ts'Pb2$=@"D>]H%5Yck11rN-C-X/i8"VPU#^U&CYaTDtJ`SXfSG!1EhQ!L9#M
+Q3NS;PE_l>V>[:kVrh%X<<-(t<W6&!=85er=8l;&=^(f/pK@;q"^+r0X/rE%WqBcs?iOI3?i==0
+>n11H?!^lE?!^lF?=$uG?N+45?=.&G?Me+0?N.53Z!1H3>lA"/?2fi_NrP1?O8tFAP5^XHPa.O4
+QMQsER/`QUR$j?@RJ`NNS,]#Y_Z.OR_Z.FR_Sa:j_Z.OQ_Z.ON_Yq=G_?.Wn`W!gT`;mpWa8a6X
+aTBVAM>iD,VZNfrWV3:jWVEClWW('Bbg"E2cMGlecMl)gbQ,iaaooi-a2c4!`Uq+F`W!gU_uIUR
+_>h=Nc2l8<rQt\pe'n<Gs4./#rR_&$s4R>(s4dS/r8%A/s53b4s5F";r8[h<s5j4As5sCGrTX@I
+s6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3as7cHds7uZjqtp?ir;H3cJcC<$ci8L~>
+JcC<$JcC<$oDe@[qu-KkqYU6frqZKerqHHdr:U']s7?0Zs7-*XrpTiQ!LT5JR/Vd<KDpT)K`$N+
+K]V:UrT!q;s5Et8s53k5rnRh7gY:H9g"G$Wf,*#geC;sqda?Ihcd'h\bfe2PaiMQD`l7P"qg\Wp
+rdF`mr-S6epj;mard+fjH@(9rK)L<3Km.W[EH#i4C1q3j@UNUB>R+JA@q/qW@q,FG!FT@8@fKs9
+;uTZ";c6Ol:f1P?re(9(r.4s#JGaiuH[L0frd"isH?jd\G^"=Sr-/-_!d&L)rGqpWre(6(rIsW5
+r_3;cr_38br(I/d9MGF[!)E2]r_E/]rCm&^!/LQ0!JcL/<:Wuf<<#nn;?]us;H-Xrr`&eor)32d
+rJUSOqc!K@qg8Blr-nNms+(-!!.arrrdairrdt0$s+:6&re13'!0d>FrfdAHrfdAH"Hek2Pa)'/
+rf[#>nrs->qj.8=regN0qhkB2s,?r:qi(K5"-/G'OSbCERJ`HNR/r\Arg*MJqiq&Cs-!#:qNCW9
+s,d9+!RK-kd/qbFe,Iksec45!fDaG&g&0S(g]-(,h>Z:2hu)F4iW%p8j8\3?jo+?Ak5a`El2U&K
+li-8NmJlVRn,MnWnbr%YoDeI]p&Facp\agdq>U6fqu-HjrUTr=s+13rs*t~>
+JcC<$JcC<$oDe@[qu-KkqYU6frqZKerqHHdr:U']s7?0Zs7-*XrpThh!ErY)>5MP';?0Sn;u]bq
+;>X5mjlGM$j8\-=iVqd8huDR4h$;`igY1B7g"?;U)V3HgeC2jodF$=ecHa\YbKJ&MaN2EA`Dfi;
+p/_&jpf-lapepudr_`hf9M/4];uTYp;>rZW3<qH$2D[-E1+rMY,q^u.1GU[?1GUdD1GgsH1c7-T
+4Zttj4Zbeh4?>Pc3^5u'8OuGL7fZ$X71;XS7RTU26ps@,5sRa26N9@O5lX(K5lEnL:f1(gr_`bq
+<:i-L2Z,H42XWNu2uko82Z>Z22Y/d,<)rltr&k$BrB'g;"$Jh45Q3hN4Zkhi5!D4/56!bG55m_F
+55[YF5QF%D55nR_<;o/_5Pm_F;>=&g;>jDk;u]bl;s%$\<E<0"<W?,!<W,r)=&i4"<`W4"<)`cq
+s&/qt<V9Dk<<Q9$<`W6"<!--$<`T,us,$`4s&f"sr)i_sr)io!"B\Mu;H!Kkr_NSjn4j$\:f.-e
+r_E&\qG?l]s3:Ykd/D>ndaQ\EeGn)!f)=5"f`0Y&gAfq-h#-"-hZ)L2i;_d9ir%j:jT"??k5XTE
+kl'cGlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYU0gr;?Nardk*#s3L^q~>
+JcC<$JcC<$oDe@[r;HTlq>:0frqZKerqHEcrUp0^s7?0Zs7--Yr9jX"rkJEI"2DXd^AYeNV5C/f
+V5:'fVuNXoVZE`orT!q;s5Et8s53k5rnRY2gY;_]!SQ-)f)aIQrmV,#da?Ihci22tc-4ASb/q`G
+a2Z*;m[*j;rK[AH!0d2@plYH8r/iIgS=?CPVP^2dUm.%*O,JdJKn4]"H?aXWGCb6oIt)lrIXZfr
+J:N*!K7a#-!+5\2#[^hB?$;aBYcmu,s/c7$!i`)prhKFcs.BRgSt;IAS!s>C!LB)LQ3EP:PE_;o
+rfI/@"-01RV>d@lVrh%X<<-(t<W6&!=85er=8l;&=^(f/pK@Gur`KG/=]ee,XK;E$pL*f(ra,V3
+rEfJ/s'G_2$XR1H?!^lF?=$uG?N+7.?Me+0?N7>1YlJ#->lJ(.>le2irf6u=s,m;DrK@;IQ'M?7
+qNq)Hrg<hVR@4#Bs-j"Wqj[STrPAQPrk\ZOrkncQrkn]O!5n]Nrk\?G"N/0s`Ph_o!65#Y!6G&Z
+s+p]3oVVbhWN#Tis/Gdlr6#,bc2Graci;;ic2YufbP]KcaiMNB`r<sL`;7IQ`;daS_Z.FQ^s2l(
+!mf6?rmCbo!7Unrs4./#rR_&$s4R>(s4dS/r8%A/s53e5s5Et:rT!q=!9O1As6'FGrosIJs6K[N
+s6]jSrpTmVs7-'Y!qZ'VrUp3arqHBdrqZQiqtp?ir;H3cJcC<$d/SU~>
+JcC<$JcC<$oDe@[r;HTlq>:0frqZKerqHEcrUp0^s7?0Zs7--Yr9jWOrg3SN!LK2NQi;[;K)gT"
+K`Hf)j8\-=iVqd8huDR4h#cBdg]#n-g"?;U!S5g#e-4=LdF$=erltnrbfe2PaiMQD`l5phJGXir
+If=coI/J?eI/&'cHMi*lD0^J\rdki8K7e/^DJNs!An5C\?sQu@>$GEEr+#b9!b5\Kr+#Y'!)i_n
+s&'%u@<dKZKS05Ts+(6%It.HHs*OopI!^/<HN/6kG]s(1rcJ3_rcA$Ys)J!Vrb_pYDM3XpKS9>Y
+!)2fTrCd2crCm/ar(I/d9MGF[!)E2]r_E/]qFpi^!/LK.r)E2b!`W)sqbmGms&&nt<E9#tr)<Gi
+pJ_!JrDNJj!)i]A!.FcoqL8Kqpj`9nqgnTqre(-%rIt98qih)ErfmGHrfdPJP*;)oqih#BpQP04
+!1!MKs+p]3pko03Mu/D2MuSb8NVe\5N<G9&O-l=5QNEPBRJiNNR/r\Arg*MJqiq&Cs-!#:qNCW9
+!KbS*c2u>=d/MGmdK%bpeGn)!f)=5"f`0Y&gAfq-h#-"-hZ)L3i;_d8ir.p;j8e<?k5XWEkl0iH
+lMp2Lm/QJQmf)\TnGi%WncJFTo_nI_pAXgbq#:*gqYU0gr;?Nardk*#s3Udr~>
+JcC<$JcC<$oDe@[r;HTlq>:0frqZKerqHEcrUp0^s7?0Zs7--Yr9jVfr`T5(r`]G->?_#1r_`hq
+;GpHg;?0Smj8\-=iVqd8huDR4h#cBdg]#n-g"?;U!S5g#e-4=LdF$=erltttbfe2PaiMQD`l5ns
+<VBJj<VTPc;ts8f;>a<$5YOjL;,^Ck;c5V82`:Rks"YEG/hSe1/h]"91GgjA0f([C1c$sF2)[<V
+r]U9C%6Qg94Zb_f3^,r'8OuDK7fZ$W7K5g_6pj=06pj4*5l<tK62s4K5Q<tQ5<_:q5!;+-4U4h^
+;H$Ik;cNBJs#0^2mPji!r&4O5q)7h%!`W0"r`8q[oK34=5!D414pF/44?Yhk5Q!_F4TI\F4o[_A
+5PRGB<Wc?$<'^FIqEP$Fq,7/gr_iYms&/\lk#D@\s&T,!s&]2"r`9&##ZXi(<`N.!<)`cqs&/ns
+o2bij'i\16<`N*u<E3(#<E+d1M2>87='/T!=8Z1q=o;D#=8Ytq;>sAl:[q3[:]F8k:]4&[:\mo^
+:B8Z=c2u>=d/MGmdK%bpeGn)!f)=5"f`0Y&gAfq-h#-"-hZ)L3i;_d8ir.p;j8e<?k5XWEkl0iH
+lMp2Lm/QJQmf)\TnGi%WncJFTo_nI_pAXgbq#:*gqYU0gr;?Nardk*#s3Udr~>
+JcC<$JcC<$o`+I\r;HQkqYU9grqZHds7cNdrUp0^s7?0Zs7--YrU9aRs1eNJ"M_[b]tOEZ#e[dG
+V5L5fV5F6irhf[m"fUJ@io/kqi;_^7hYu@2g]6+.g)o##f[na+f%&:"e'c[ldEp4bcHXSVbK@rJ
+aN)<>`Ph53rg*PKqNLuDplb00qN1`H!M-(dV@KGuLkg_8IXZWjG^4OWGQ*-mIKb4LIt3#urdb$#
+r*B_;?=.#E?=$fAH_gYF!3Z:&ri?=(WMZMeU8%U[s.BUhSt;IAS!o]AQ3NV<P*D/nOo:C@O8b.D
+NJrjVUnspeVZ3RV<r>qt<r>ts<rZ7r<WH5#=92Q.r`f,"rEB,%s&]H*XK8G$WqTos?iFC3?i==1
+?2n72?2n72>le8=ra,V3r*B8-qd9A0s0DX/!*fG-!F9%0>le27rf./COH>TeP5LODPQ7!JQM[$G
+R/WNMReN<NSH$G%_>qFO_uIUR_u.CO_u7IN_=teL_o0O5`;R[T`WF3%aSa-\L558roVhehqPa;7
+s3(JfrQb8cs3CYhrlbAcr5o/aaN)<?rl+QKq8NBPs24iQ"Mr:*c-?75!mf6?rmCbos3pqrs4./#
+rR_&$s4R>(s4dS/r8%D0s53b4s5F";ro=%>s5j4As5sCGrTOCKlg+N9!q#FDrpTmVs7-*Zs7?9_
+rUp3as7cHds7uZjqtp?ir;H3cJcC<$d/SU~>
+JcC<$JcC<$o`+I\r;HQkqYU9grqZHds7cNdrUp0^s7?0Zs7--YrU9aRs-NbQ!gf:@rg*SNrg!PL
+re16&re:B*r.P:6io8qUro!h6s5*b2s4dV/rn8IIf\"g-f%/C$eC2jodF$=ecHa\YbKJ&MaN2EA
+`PodfJGaorIfFfrI.r!aI.;R[H3/A<I/\^@JV/SgB4bX^@UEDG>[(B8@:NeU@UinW@q&nW@q9(Z
+;cEZp!)i\m#>n</I>*B.KDgB&JUm]Ks*jro!.=`krHSQiGB\1OF8^.YEW'kODZ=SRCBT<CK7npW
+L&Od8:&%E\:&I]b9`RlW:&[o]:&.K^9`TtJL]N9er)E)_qbm>jr)ESmqGR&dr/:JNqbmMn;>tqC
+IJeQhJ,aupJ,OoqJbjutKDL9#L&R;5PQ6pHPlHsIPQm>7P*;)oPl6gEP4t1:PQ6pDPQ7!JQ2u_q
+p5As0!/pW0",i+tNV\V5NW5%;R/N?QR$jB@R/E?SR$X,)r0@/DrKI8Eoo]'5q2kd&bg"E3c2u>=
+d/MGmdf7epeGn)!f)=5"f`0Y&gAfq-h#-".hZ)L2i;_d9ir8!<jT"??k5XTEkl'`IlKdd7liQSB
+mf)\TnGi%Xo)J=]o_nI_pAambq#C0hqYU0gr;?Nardk*#s3Udr~>
+JcC<$JcC<$o`+I\r;HQkqYU9grqZHds7cNdrUp0^s7?0Zs7--YrU9aRs&o>)r`fA*r*0.us&&ep
+r_ibnr)*[Xio8qUro!h6s5*b2s4dV/rn8OKf\"g-f%/C$eC2jodF$=ecHa\YbKJ&MaN2EA`Pobp
+<VBJk<Vobb;t3c^;?'<!92SYe;,^@N1c$m@0eWDXs"4j<1G^a@0etUC2)I-I1c7-Tr]U9Cs#gTL
+4Zkbe4$Q778H;<Y8,l'U7K,[R6ioV>62a+S5sRY!5X7R44p!l25578@4T7JG:f1(gr_`_poJce.
+qDI\"p,Mt.r\sX2r&"I2q)&.Or`/u!r&s[7"$Jh35Q3hP4Zkhi4[)(o55[PD55m_F55@G<56"Xc
+<E)p_rBL0Es$-EZrDEMkrDW\nqbuTUr`/u!r`/u"r`/qu"]n`(<)luu<W,nr;ZKeg<rQ)1<)lt"
+<E)pt<E<.#L5/c/<rQ2#=RoPn=Sc2!=T2D!;Z0Jl:]O;]:&n)h;#a>i:@q?X;#*lhbKS5UrltSk
+d*Vd>s3gqrrRCkts47/#rn.8(r7_2*s4mP.s5*e5r8@V6s5O%<s5a4ArT=.C!9jCG!p]+;rTjUQ
+mdC)Cs7$'Yrpp*\s7H9_s7ZKer:p<frqcNhrVZTlo)=4?JcF*sJ,~>
+JcC<$JcC<$o`+I\r;HTlqYU9grqZHds7cNdrUp0^s7?3[rpg$XrU9dSs6]j$s1efQ^:h4m]`,SL
+]XkYaV5:)frh]Ulrhf[m!iW$Uro!h6s5*b2s4dV/rn@D*!8.;&!S5g#e/$N]dF$=fcd'h\bfe2P
+aiMQD`l5p8_t]SlQN!0IPlI!LP`u'/m?.F1s,[)>#*YUJV5C,frhUW]H$4FWGBe^iJUW&tIsl`p
+IXZfrIXm&X?=$uF?iFC3>m+M<?@f0VYQ1m+XoPU'X9,E#VZ*=jUAghjU7e0QSt;MPS,ATTP`q8m
+qiCf=rJgl;repi8rJ^c9!i2]irhf^nlW+!erDrhr!*9"tr`0##pJq8qr`B2(>5hb#=oDP%=oVS-
+X/rD&WN,]#q-X,-s'P_2ra#P1s'>Y2s'>S0!+#S1rE]A.qd9A0s0DX/!*fG-q-=),?!NHiOT1I@
+P6$o5rKdJM!go=@qj@ANqO7)Hs.'))q83-Ks2+fRr5/KOrPJNLpVHpKq8EKVa2c9BrQ,&:mAK?M
+qTAo`c2>l`ci;;jc2PoebP]KbaiMNBrPeHJq8NBPs24lR!6Y;a!mJp6rltSkd*Va=s3^nrrRChs
+s47/#s4I>(rS%8*s4mS/s5*e5r8@V6!93t;s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\
+s7H9_s7ZKer:p<frqcNhrVZTlo)=4?JcF-tJ,~>
+JcC<$JcC<$o`+I\r;HTlqYU9grqZHds7cNdrUp0^s7?3[rpg$XrU9dSs6]iQ"IPOBQBh?5s-3YM
+PCrjfrdt9*Kn]MZrIk9*iVqd8huDR4h>c71g]#q,f`9\(f)aIQrmV_4da?Ihd*L"_c-4ASb/q`G
+a2Z*;`5DP'r.+TmrdFosI!kj=rHnTlrd=*[s*F]jrH\TlFF/@erdt-%!af8;rEBD6@:WhVraQ:E
+@preU@:EbX;cEZp"&`)s<;ohr;#t?]re:B)rdt0$s+(-!#(:lHH[L3frHeHgrc\?crcA0]EW0qU
+Du"8PD/3qdD#J,PKS+o1K`6](9^tjP9`7]`9^tgY:/+I^:A.EX9`@`dL]3)1LPYk-mSj!\r)<Mm
+r)<GipJ_!Jqbm;i!`;inqgS<is*jut!e>cMqgeZsqL\^!pk8[$rKI,C!0dDHs-*JI#*Y45PEV5q
+rKI2CpQPH<rfd8E!gT(;regH.repi8pkf03N/`hnN;ee:Nr5:DQN3EPRJiNNR0/hCQBqH6qiq,E
+rK?i9q3(W;!6Y;a!mJp6rltSkd*Va=s3^nrrRChss47/#s4I>(rS%8*s4mS/s5*e5r8@V6!93t;
+s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKer:p<frqcNhrVZTlo)=4?JcF-t
+J,~>
+JcC<$JcC<$o`+I\r;HTlqYU9grqZHds7cNdrUp0^s7?3[rpg$XrU9dSs6]hhs'#G,s'#G*!*]>*
+s&oD"r_`ns;c6Ol;Z9Pl;?9YRro!h6s5*b2s4dV/rn@D*!8.;&!S5g#e/-T^dF$=fcd'h\bfe2P
+aiMQD`l5p8_c6G4q,R;kr)<Vpqbul[s&&emrD<\o78-?Pr)3_r/h\k1r\+:-!AlV21&s-/1`/)+
+1c7K\4[(qh4[(tk4?>Pc5=\798OuGM7fZ$X7K5gW7/fRR6i]UM63BJ;5="p+rB:0Cs#g?Eq`P$X
+;,L<l;?0Yf2ubf52#oQ&2tf622?Gfq2Z>Z22Z,H22#K32<;fes<r>,Q4T@PF5!T$1!'U<D"?eq5
+5!Jg+s#g9EqEOa=s&K5%<)c-\5Pm\K5<qJ3;Z0Jm;YsDl;Z'JT<!$'!<r5ku<``B%<W6#&=&r:"
+<EB*!rD`bp!*/SjrD`l!<W5tt<W,tt<<-)!=8uCn=8uD&=o)5&='/O*qGR8hr_NSjnP0'[r_WVj
+rD)u\q,$ra!6Y;a!mJp6rltSkd*Va=s3^nrrRChss47/#s4I>(rS%8*s4mS/s5*e5r8@V6!93t;
+s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKer:p<frqcNhrVZTlo)=4?JcF-t
+J,~>
+JcC<$JcC<$p&FR]r;HQkqYU9grqZKerqHHdr:U*^s7?3[s7-*XrU9dSs6U$W^VIV!]tF6S!4r0?
+$+I@>V5C/gV51!fVuERlVZbr8hqm5hh>c:1g]#n-g"?;U*S/ckeC;sqda?Ihcd'h\bfn8Rb/q`G
+a2Z*;`5BIfQhHaFQ2?gFPl[,5rf[#<q2kT<s,d2?(1gucA<WORVPU/fV59u2F`i4`I=6QmrdG<,
+I=H`qIsurV?!^lE@/aI:?!^lACm2.&Yl([(X9,H%VuELlTaRNfTqJ'NSt;I@S"'DE&!rTIP`q5k
+OH5E^NK&jTNVJG4MuJ\7N<#dRV>d=lVs@C`=8l8"<<H9%<`]0!q,RJqr)Nf!r`BG/>$G37=]o0A
+qcWl$r)s&%#-4i,X/W,!pgEo)ra,V3rEfJ/s'G_2s'G_2rE]J0ra,M.ra,J/s'G`2rilH-rET2)
+"']&9>lKiaP5^XGPa235!13JJrgEVOoUGlNs2+fPq83-Ks2+fRr5/KOrPJNLpqd'L`;7IQ`rF*Z
+aT'B^VWt)LW;+O:bg$(2qTo2es3:Sfs3(DarlG5_a2\(sou-gJ!6"lUs2=rT"2`1%b5TQcbg"E3
+cMu5jd/MGmdf7epeGn(uf)=5#f`'S&gAfq-h#-".hZ)L4i;_d9ir.p;j8e<?joX`0kl0iHl2^/K
+liQSBmf)\TnGi%Xo)J=]o_nI_pAamcq#:*hqYL*gr;?Nardk*#s3^js~>
+JcC<$JcC<$p&FR]r;HQkqYU9grqZKerqHHdr:U*^s7?3[s7-*XrU9dSs6TgQrKdMMq3CuE"-\k/
+KDpQ(K)pRWre:B*rIkE.i8<GKhYu@2h#H..g&]mZrmr1Ae^`1!e'c[ldEp4bcHXSWbKJ&MaN2EA
+`Pod5_Xi9TIK=kEqg8-do6^F^rd4ZkrHSBDr_t(^H@1?sJqJZ-K3DD\@:*GO@UikV@q/qV@:E_U
+@T-0(<E/rrrDWkq=`]>sL&Zf'K)^B$Ift1II!^8?HiA?kGmnq@GBS.PF`_YEEH#mpDuX_TD#eDH
+C]A5LCB0%eK)gT(L&4R8:&%B_9ht[^rClWRr_EGes&Akiq+Uc^!/LQ0!f)Sfpf-i`qbm>jr)ESm
+qGR&dr/:GMqbmSo;GpBkIfFltIf"WpIfFomJGt,rK)L>sK`?`.PE_8pqNM;MPa.JsPE_;qP5^[F
+Pl6gEP5(7:Pl-aEPQ@&+rJLB.rJU`7rJLT2"cA4rN/`hnN;nn6R/WERR$jB?R/E?SR$X,)r0@2E
+s-*ADoo]39!0R8Dr/q$$!6Y;a!mJp6rm(Pis3Ubms3gqrrRCktrmq&"s4I>(rS%;+s4mP.s5*e5
+ro!h8s5O";s5X1ArT41Ekii$1s69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKerV6Bfs8)Thrqu]m
+o)=4?JcF-tJ,~>
+JcC<$JcC<$p&FR]r;HQkqYU9grqZKerqHHdr:U*^s7?3[s7-*XrU9dSs6U9^=^#$6>$5!1=]np3
+>Q.h+=TD=u;?Kco;H*Qms&&_m"]=48hqm5hh>c:1g]#n-g"?;U*nJlleC;sqda?Ihcd'h\bfn8R
+b/q`Ga2Z*;`5BGlqH!Jnr)EJjr`&bnoMYWbr_ibnrD<MQs#)Q#9MA>^;c6Ll;D'RT1GU^A1,:X?
+1GpsF1c%!G2*X5e5!(ni5!(ni3]]Dk84Z<Dr^d#Y#=_3Q7R]a87fGdS6j,kD6UO0<63'=M563r1
+r]^?F#!P144$5YhpcSF:"&Mil;uTYp;tN$K2Z#?32XNHt3;b]62uY`84T78:2>]602#pVS<W?+p
+4o%5?4TR`2r]U<Fr]C<H5!M4pqE=j@r]^0Cpce^Y"'&<"5l<kD5Qa595XPHI!)iVks&/_mj&H%Z
+s&B&"r`')%=&r=$rDj)'<`E%!<rQ+t<;oer<Us2i<W?)"<W5ts<W6%u<<-)!=8uCo=8l>%=o)8#
+<rc1p;Z9Pl:]O;]:&n)h;#a>i:@q?\:]O;j;#F,haT0K_b6#o4c2Q#gci;AkdJqYpe,@erec+.u
+fDjM&g&9Y)g]-(,h>c@3hu;R6iW%p9j8\0?jo+<CkNM./l2U#Kli$/OmI'EAn,MnWnc&+ZoDeI]
+p&Facp\jmdq>^<fqu6NkrUTr=s+13ts*t~>
+JcC<$JcC<$p&FR]r;HTlqYU9grqZKerqHHdrUp0^s7?3[s7--YrU9dSrpBaP#/J!f]t:nerOW!=
+"LtnK['Tb.!N;pqV>dClVZ*IpW2JMOh>c:1g]#n3g"=s/f@JO'rmVh7da?Ihd*L"_c-4ASb/q`G
+a2Z*;`5BI/_>0GqQN*6KQ2m3KPl-gGPQ?u2p6#?9ooBJl@q9#GVPK->S>N.^V?E`kIsunGI2I<Z
+IXZ]qIt*#W?!UfD?sd5H?!^i@Jul6UYQ:r0riZ:&#cju)VPL#_TV;=W".u0VRf8c^R$j;.Q^3l"
+P5^OHO,f-XN/R=e!/pf7rf-rRs/#am"H]:XaC5'Ws'Yn;rK%VTR%C%KT:D73P*(ohP*2*$SGlRf
+<V]\q<W,qu=8l;)@:E_WA,0R5@f9g7@fKm:Ws#N)WN)un@/++/?N4C2?N+71?N4=2?N4=0?3":1
+?Mn+.?Me+0?N7>1YlJ#,>l%_,>[@;5!0R8Ds-!MKQ'M?7!13MKrgEbSs-`nUrgNnXrgO1`SXc4>
+S"-"drke]Oq83-Ks2+fRr5/KOrPJNLs2"cPqn`BO`;.@S`lH-@rMJkXnYl3*!R/gdcMPrecMu/h
+bQ,ibb5]T`a8s?$rPeHJs2FuUs2FuU!5nfW!m/U-rlb>c!6tMgs3L_lrR(Yns3pqrs4.,"rR_)%
+s4R>(s4dS/rS@M1s53h6s5F";ro=%>s5j7Bs5sCGrosIJs6K[N!q#FDrpTmV!:g$Ys766_rUp3a
+s7cHds7uZjqtp?ir;H6dJcC<$dJn^~>
+JcC<$JcC<$p&FR]r;HTlqYU9grqZKerqHHdrUp0^s7?3[s7--YrU9dSrpBaPs-EbPQ2-[EP6d>6
+OcYZWK7npVK*$^[L&Qc(K`Qk`rn[V0s4dP,#MIb^f@SU)ec+&9e'cXkd*U+acHXSVbK@rJaN)<>
+`Pf[2_SPkoqgJQoI/\KeI.M^]HMi$q<DujqI=-EYH$b2CJd6jZK4/4u@:T7E$=dOR@q&qW<)Q[q
+rDNr#;cH^mBS)!<K`QgZrIY$"!e>cMr-\Hi!d]-;rceBcrcJ?cF)c/<rGMgVD/=$(qJ>b=!/1?(
+#)%\NI=nG!r`B8*=BT\DEtNM;H@1-fG]n1NF*)JFF`_nRr_<>bmnNa\p/Lidr`&oQs+g`3Lkth*
+oMbTar)<Mmr)<Dhpf%*KqGR5ir_`qt;GhpnIX_*Bpji?ppk&HsqLnm&rf[DJPEYj-$'UU=Q'7Dr
+P`q:0PQ-mGPPp[EP5pdCPPLI?PPp@:MYW2.Mu\e7MZ/G9MMmFPNK*dn!0-fArg*\RR@3u?rL*\Q
+!gf4=r0@5Frfd8Coo]9;rfR5DrK7*#!m/U-rlb>c!6tMgs3L_lrR(Yns3pqrs4.,"rR_)%s4R>(
+s4dS/rS@M1s53h6s5F";ro=%>s5j7Bs5sCGrosIJs6K[N!q#FDrpTmV!:g$Ys766_rUp3as7cHd
+s7uZjqtp?ir;H6dJcC<$dJn^~>
+JcC<$JcC<$p&FR]r;HTlqYU9grqZKerqHHdrUp0^s7?3[s7--YrU9dSrpBaP$!LP;>$+m.=BSf*
+>5h\)=T;7u;ZBSs;c6Ol;Z9Pl;?9YOrn[V0s4dP,#MIb^f@SU)ec+&:e'cXkd*U+acHXSVbK@rJ
+aN)<>`Pf[2_SK7K<r>tp<;]\m<;BJl;ufkn;Yj8g;#`Ec2)IN_5!Vh9;Gg@k;,^@J1,Sna)Ds?-
+1c.'J2*a>g5!(nh4Zbeh3]]Ps84Z<Dr^d#Ys%!>a7R]a87Rd;D"@PUE6::Z;s$6fR5sIRt4T7MN
+4?bni4ZbYb4$3-uqE5Qi;,U=j;F!T8=$],=5<_=u4Zttl4o@JD5Q3hI4?`X,!C/mC2to<12?5l=
+4o%2?48h5;3W;)><;ont<qniQ49@Z05Q3kG4Tml15!M7,4o[VG4[)(*5P[JD<`T,u!'pEGr'1<J
+5X><8pf%2jr);WTrDrqu!*9)!%TZY3<E3($<`W:&<)cn!r`/nrs&0&"<E<.#oN(uls&K2$<)ifr
+r`9"u!*9)#s&ekor`K2'qH*c";ts8i;>j;k:[q0]:Jame:]4&\:]F8j:]F8i:]AE:ai_d*bQ#cd
+c2Q#gci;AjdJqYpe,@erec+.ufDjM'g&0S(g]-(-h>c@3hu;R6iW%p:j8\3?jo4EBk5a`Fl2U&K
+li-5PmI'EAn,MkWnbr%Yo)SF]p&Facp\agdq>U6fqu-HjrU^#>s+13ts*t~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dO"hq[_]=GHK\HKFO
+[^EI@ZMp[(Vl6MiUo+-hs/,^l"PqkggY;_]!nl5Yrmq2%ec+&!e'e6C(XULRcHXSWbKJ&MaN2EA
+`Pod5_SX.)QM[$GQMQmFPkpXHP`q:)OoCIBO8b1;O8ihlA,rS-V@'#iR[T_:VPU/eVuEM0I=-Hl
+IXc`pIXciS?!UfD?XR5H?!^f?K)DnRYQ1g)XpD/2XK/@uV50mcT`q0`TV%jHrgO4_R?s;-Q^*f"
+P5^OGO,f-WN;\\,N!tNAV4!R1PFnPA\>He8N<#%=C]A5XCi=94EcZ>EF`m\*rc8$Y)/a;/DJa6R
+OckihOH>C0WPP1"U7%3G<E3?(?34JA@/aR9@q9*G@K'a7A,Kg9@K3A2XK/>#Wq]uo?i==1?2n72
+?2n72?2\(0?2e1,?2n7/?iOI4ZMq*/>5__&>m=P>>[:T>>Q0chPE_>tQBqN:q3V/MrgNeR".PgN
+Sc,)YSH5=QrL<o-_u@OQ_>1tI_uIUR_u.@O_u.CM_#hKi_>D(M_o2Ai!lh(5r2/bWo;M?*!R/ge
+cMGldcMu/hbQ,ibb5]T`a8s?$rPe9Es2FuU!QN1ZaT'?^b5TTabl>recMu5jd/DAldf7epeGn)!
+f)4/"f`0Y'gAfq-h#6(/hZ)L4i;_d9ir8!<j8e<@k5XTEkl'`IlKdd8liQSBmf)\Tn,W"WncJFT
+o_nI_pAambq#C0hqYU0gr;HTbrdk*#s3gpt~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOs-<YMplbcBOcfX)
+"-8OrKDpQ(K)pRWre:B*rIkE.h;$f?g]#n.g"=sVf)aIQrmUttdf.W0d*L"_c-4DTbK@rJaN)<>
+`Pf[2_SO%[J,F`rI=2!?npL7[q0N'd%TZP/<.97BH?saVF*W(arIP]8KS3cA@:<YT?t*ST@oQB+
+<E)rs;u]f";c%+]LAll-K7s/Srdk*!!.Fcmrd4Zj!dJp5rH8BfFE2DAEH(kps)%jSD#J/FD#A'#
+D1R"UFE;PMH[CR!L21XBD-p[X?sd8K?t!MSA7]@bB4kgfA7K%W@:3JM?XWkOs).jR#]#0GNdH/$
+G]`pZpf.Ap<E8`lq,@8ls+gW1!f)Sfpf-laqGR5ir)ESmq,6udr/:DLr)<Vns%rhq;,@1?qg\<i
+!.jlrrIap!!JQd;P6-u4PPC@IQ'@JrPa%Aprf[>Hr0.)B!gAe1qigl@rKI)8p5Ag,!/pf5reU]6
+Mi@Ik!0$Z>s-NbQs-`ePrL!eUQ^=#(rK[;Frfd8Cn<*a6rfI6$a8X0[aT0K_bQ#fdc2Q#gci;Aj
+dJqYpe,@erec44ufDjM'g&9Y)g]-(-h>c@3hu;R6iW%p:j8\0?jo4EBk5a`EklU/9li-5PmI'EA
+n,MkWnbr"[oCV\Rp&Facp\agdq>U6fqu-HkrUTr=s+13us*t~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dO#[:J8=B8L*=BYW,
+rE9,%!a/Atr_`hq;c6Qn;ZBVm;?]qRgt^Z=rn7G,f\$2T!S5g#e,e%Hrm;P/cd'h\bfn8Rb/q`G
+a2Z*;`5BI/_8'(J<r5np<;TVj<;f_q<;oku<)`Zls&&Sg/iPaJ2F'Ml5!D(i3_N+D;,^Cj;c?RL
+0f([D1G^jE2E!fa4[(tj4$>Yg4$#Dfr^d&\r^cuX!_,[Mr^?iW7K,[S6j#eC6UCZ;s$7,[5<qCq
+4Zkki4?Yhh4?WR&s#U0ApcK!K5rq4n4[)(o5!M4p1B'*06Nf_A6:!s;6iBFQ6O#qG6UX:.6N07`
+6:4$s2)dBL2)R9U5!_@r5X%C23;l&<4T@S?49.JA3r:r:3r`1Y<W?+p4nq,@4[)+055m_F49@]2
+5578C4?Yklq*4[=!EN5"<;JiW5R'G<5X@_&5k@nT<)`Qkr_r>dr)Wht!*9)!%9?P2<E3($<`W:&
+<)cot<W#hr;Zp'"<`N/l<rZ2"<rZ1t<rZ8$<rZ/"<rQ2#=S#Vo=T2J#=T27o;Z9Pm;#a>]:'+3f
+;#X8i:@:pX;#X5k`lJ)"s2b8`rlb>cs3:Pgs3L_lrR(Yns3pqrs4./#r7Cu$s4RA)s4dS/rS@M1
+s53h6s5F";ro=%>!9O4Bs5sCGrTOCKlg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cHds7uZjqtp?i
+rVc<dJcC<$df4g~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKes7cQer:U*^s7?3[s7--YrU9dSs6]dOs6C-+\[T)Z\@B#X
+\@/iRZi.30Z2LL%W2HJfV>dClVZ!Fmg]#q,f`9\(f-8ere^W*te'cXkd*L%`cHXSVbK@rJaN)<>
+`Pf[2_SO%&QMQsGQMQmFPkgRFP`tg'!g&J(r/Uc;+(\tnA#Q9$Un=*ER$*\pP+8DHV5C/eV5/Ng
+I=H]qJ,EUZ?!guF?!goB?^Ubr!O/^*XpV;4XK/A"VPL#^UAgkcTE(S_S,\oVQj/nCQ'IMqOoCFE
+O,T!Uq2>93,^"$EDfBQ_[B-gGNKBBJH$k0nJ:`H0NfT9_MMm:%A7]@bAS(jN#%hFXAnGUaraGe8
+*K>u8MQNo(Mi*7AJ:MrgEc5l5D/58qOG^$EVPA22@00qLA,9X5@f9g7@L-CMX/i>&WMuom@.mq.
+?sin>rE]G0s'>Y2s'>V1s'>V1qHa,-rEoP1rj)R/!*]>+!F8t/?2n.4?!LZ?>lIq/P*D72QMm0H
+Qi`\ERf/WTR[a8Hrg`qYs.01[!lr9trke]Oq83-Ks2+fRr5&HOr5/HLs2+cOr5&KP`;@OQV?!Ii
+VX(/PVuY!4b5oi3rQb8crm(Pg"3f$6bPoZaaTKW)a2\+tn&57F!6"lU!QN1ZaT'?^b5KKbbg"E2
+cMu2jd/;;kdf7epeGn)!f)=5#f`'S'gAfq-h#6(/h>lI3i;_a9ir8!<jT"?@joX`0kl0fJlKdd8
+liQSBmf)\Tn,W"WncJFTo_nI_pAamcq#:*hqYU0gr;?Nbrdk*#s3gpt~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKes7cQer:U*^s7?3[s7--YrU9dSs6]dOs6BZLrfRJLP*1rj
+P*,^)rJpr=re(6(s+:H+K7nr4re19)!ef=_rn@D*!8.;&+kG2oeC;srda?Ihcd0n^c-4ASb/q`G
+a2Z*;`5BI/_8*hXJ,=ZqI=2$@nU1.ZqK`g#<E)ptIXHNhG]\%JDf9E3H@pkKK)^K'@Kp7M@UikG
+;uTbo;Zp&u;,MQ9L&HZ&K)^E%IfOrsIK+]oHNe_@H$FOWrcSBdF)l=#EW'hTD#eDJC]A2fAn#4X
+@UaV:J;&_oDJs'!C2@a(Ci436FT$@aG?eGQ?M7_.?<plDra5\Ms*"j0NM:E3Df'?-BOtZP@1QaS
+DJa6+J;&K#A5uW/<E8`lq,@;m#?-D5LkphAM"jsA;u0Di;u9Pm;u'>f;u]hpMu$?M;uT\p;$Bip
+:Jju<r."Ej!.jrtqh+Zss-3MH!gJn4pll#KP`q;qP`q:0P5pjFPQ$aFPQ$aCPPULDPQ$L:MY;u*
+Mu\e8MZ&A5MMmGiN<#=9R/`TPR/NEYR$X/*QBdc$Q2HmGPPp[5OoLREOoE<#`lJ)"s2b8`rQ>8d
+c-?44s3C\lr6bPms3pqrs4./#rR_)%rn7;)s4dS/rS@M1!8mb5s5<t;ro=%>s5j7B!pAe2rojLL
+lg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cKerqZTjqtp?ir;H6dJcC<$df4g~>
+JcC<$JcC<$pAa[^r;HTlqYU9grqZKes7cQer:U*^s7?3[s7--YrU9dSs6]dOs6Bbh=&rE$=T;M*
+=BSf)=T;S(;?'Mu;,U:j;c6Nm;>sGp;;9k)gAfh+f`'JHf%&=#eC2mpdF$=ecd'h\bfe2PaiMQD
+`l5p8_ns:,^qWnG<r>tp<;]Yq<)`ZnrDN\qr`&qsrDNVlq,%)M"Z/)$5X%F349%;C3&O,ur_`kt
+;GpFkr\XX2s#(KS4?Yhi4$5Yg4?>Mb4%)V18P/nPqF:]X7R]d77/fOY6pj:.6:4(+r]piU5<_7o
+4$>bi3rD,=3rM)=3r_Vh6q0dA5<_4o4u4uP6:F=57R]a87n,s<85;oU:/1[^'22+o9hnM[:ejb]
+9h\5T9hS;Z:&[p);FX/H7Rfg76pj:.6:4*u2)R9U5<h>%r]L3Dq)eX=rAsg9r]:'Yr`/u!pc\C7
+!^/_3r]^<Es#^?H5<ej*"$A_155@G=4p4nd<E)ro5Q*kI5Q<tP5sdk&5sb$>r)<et;GpFlrD`eq
+pf.,ks&B&"r`'D.=&r=$<``=&=&r:"<rQ+s<<#ku<*!'!<V9Am<W6(r<rZ8!<rZ8#=S#Vo=T2J%
+=9)7t;ts8i;>sAl:\d`c:]=,h:]=)j:Jame:]=,W:]F5k:]A<6`lJ)"s2b8`rQ>8dc-?44s3C\l
+r6bPms3pqrs4./#rR_)%rn7;)s4dS/rS@M1!8mb5s5<t;ro=%>s5j7B!pAe2rojLLlg+Q:!q#FD
+rpTmV!:g$Y!qZ'VrUp3as7cKerqZTjqtp?ir;H6dJcC<$df4g~>
+JcC<$JcC<$pAa^_r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dSs6]dO#4(R>\@/lVr3u^6
+#.1\@ZEga?ricBurh]Xn"fA,lVPg?kVYm=og=b03rmq5&e^aZK!RoKrd2C<WcHa\Ybfe2PaiMQD
+`l5p8_ns:,^q[XMqNq#DpQY`Cr0%,DqiUl>s,m>C!0@&<)NSK@@qB2KVPTuZR[9>(O,SmLJW-(g
+VPU2grhT[EIXh?'s'Pe4#@CeD?sR&EGPn]HYc[o-s/l=&"KJDtUndp`rh0CdTqD=S#Fh-LR$X/(
+Q2ZsPOcYWbNf/jTrJM_P^m^@TS[*0MDJsH2K8#&9MN!U.AnPdmBObO`ARtOKr+H%C!G?-GB_c<?
+B)cKIAnYgiAnM$Us'ldQ@uH8hKnP)0I<]p_MNEdZO+;VGP5A\e@f9g7@L-CM@&pB1Wi<#n@.mt-
+?ij\A?N"10?N4=2?N+71?N+41?MRn,?Me(0?N.81YlS$4r*95,r`fS3>[:T>rEK5dr0R;Jqj@e[
+S"-">SXc1>SXo_Nrgj)0!QDtU_Z.FQ_Sc5es24lRs24cO!5ncPrPANNrk\NL!5n`RoqqAZrMKLj
+or.o5oZI9Zc2Graci;8oc-FVZc-6./s2bAaa2c4!`ULhF`W*mV`W*pXa8X0[aoBN_bQ#cdc2Grf
+ci;AjdJqYpe,7_qec45!fDjM'g&9V+gYCT_h#cHjhu;R6iW%p:ir\<'jo4BDkNM./klU/9li-5P
+mI'EAmfN"Knc&+ZoDeI^p&Facp\agdq>U6fqu-HkrUTr=s+14!s*t~>
+JcC<$JcC<$pAa^_r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dSs6]dO#4(R>OcY]gr/pr>
+s,[&;re(3's+:E*KS>-ZK`6]*KEKr]g"?;U!nPoPrmUttdf.W2d*L"_c-4DTbK@rJaN)<>`Pf[2
+_SO%&^\NBZIf"WpIfFiaI//-dHN$qE<%36BH[9mYEcH&8B4badD0^M]JqAW+K7mZB@T-9+;cQdq
+;cH[p;H$G%rIt*#&V>RbIt)oqI!pEjI=$<gH?jc7GQ2giF`MMBEcCtqs(qdSD>\2pCMfA]F*N"c
+@q/tW@:F(kE,p#BG@+]b?XI5L?=@8L@:<MNraGe6!+Gb6s'Yt<@:K.CraH"=@UW\SrF#P3#@LtI
+@!QskE;j_`C1h*oF*2SIF_tr=FSJi2;uKZ!LPUbALPY_)oMbTar)<JlrDWMiqc!Jnr/:DLr_rbn
+s%rqt;,:"c;>u(<J,k/qK)L>sKEHpnPa)02"I,+6Pa2*0!L8oKP6-u4P5^XFPl6gEP5gaFP5LO@
+Pl-I9MYE&/N;JP4MZ&A5MMmGjNW5@9R/`TQR/E?XR$X,*Q^3r&Q2HmGPPp[6OoCOD`;dgV`W4'Y
+aT'B^b5TTabQ,odcMu5jd/DAldf7eoeGn)!f)=5#f`0Y'g&g$ah#6%1hV[5ii;_d9ir7s>jQ5M&
+joX`0kl0fJlKdd8liQSBmf)YVnF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;HTbrdk*#s3q!u~>
+JcC<$JcC<$pAa^_r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dSs6]dO"mbI=<`N2s=9)M%
+=92Q.r`T4tr_`ns;c6Ol;Z9Pm;ZBSrg=b03rmq5&e^aZK!RoKrd2C<WcHa\Ybfe2PaiMQD`l5p8
+_ns:,^q[WaqH!Mor)E/as&B"u!E<"s;Z9Pj:a7nY2Dd6T5<_7n4$#A\2`*?I1-\H+;Gg@k;,^@K
+2E!]^4[&d,$U$U73]fGb5=nC;8cD9[8,l-[7g2=N77K[5r^6]Rr^-ZOr^-WNs$$ZP4?Ybh55dSF
+5!;%+3W_E:5Q3h\5=eIC:/+MQ77Kd;7Rp*G9h\5U9`7]d9`@cd:&n)g:B+,g:]O8`:]sQj:JOX^
+:B+,h:&[oi:eaje8.A$V779^=91hiM8Ou$/q`Fj?rAsg9rAjpXr`/u!pc\C7"[,%65<_:14o[VH
+5!M4nq)ngB4[)(*5Q!_F56*nH<W?%p5Q3qI5Q<tQ5sdk&5X@^,;uT_r;uKVo;u]eu;c6Qh;ug"t
+<rQ,!<rZ2"<sr&/<E<1%<``@%<EB*!rD`bp!`W3$r`/Ymr)`_qpfIGso2kros&o;&s&/eopeq)g
+r_NSjpeL`_s%`Sis%r\jr_DoXr_WX5s2G#X!6>)[s2k;`rlb>c!6tJfs3L_lrR(Yns3pnqs4./#
+rR_)%s4RA)!o)McrS7P3hr"Fks5F";ro4(@jlQL(!pAe2rojLLlg+Q:!q#FDrpKpXnaZVLs7?9_
+rq6<bs7cHds7uZjqtp?irVc<dJcC<$e,Op~>
+JcC<$JcC<$p]'g`r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dS!:BaOs6K^M!U7&l\,Ec8
+ZiIH0Z2_'-Y5kBtV$3`pVkp2crhodnr20PIrn%2$!7h(u!RoKrd/hV?rlt\lbfe2Pao9?ia2Z*;
+`5BI/_8*h#^&=5sQhQg>PlR'HP5:==OT1C>NZ)J=ARq:-VPKoXS!]M*OGnsLIX?EeG+5#!V>d@l
+V>FR%?XR5K?2e.1P5_]fYcb,-Y5YO-X/`(oUna^`UA^c4St):>R[9G/Q^!_tP*;#jO,f6ZN/sBp
+O-lHG\rW"oGC>'[Ci*haBa&'\AnPairb;CF$#+'cC2.HsBP;,WC(=oiBkhF"CMRa%Chmj'C]8,M
+C]%rEC]A2YBl%HrBkhEsAn>Ocrb2=E!fV54raZIcF)l28NJt9YU7#M$@f9g7@L-CM@&pB1Wi<#n
+@.mt-?ij\A?N"10?N4=1?N4=2?N+41?MRn,?Me(0?N.81YlS$4r*95,r`fS3>[:T>rEB8,rg*JK
+r0R\VR[TY4R[a5FrgNtZSXoYL"N\X(`5DPj!l;akqSN9M!5e`QrPJTPrPJNLs2+`Ns2+fR!lW's
+ntu&WrhfOipo+57s2suW!R/gecMPohcHji9cMu,hbl,ZfaiMQD`lA"snAGLL_SX4/`;[^W`lH.!
+a9'K+b5KKbbg"E2cMu5jd/DAldf7epeGn)!f)=5#f`0Y'g&g$ah#?.0hZ)L4hu_lsir7s>jQ5M&
+joX`0kl0fJlKdd8liHMArU0gWnaZVLs766_rUp3as7cKerqZTjqtp?ir;H6dJcC<$e,Op~>
+JcC<$JcC<$p]'g`r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dS!:BaOs6K^M!U5^FOo:@E
+O-#HaO84e9NW"M0K`?Z/JqJ`1KnP-XK`QkZrn%2$!7h(u!RoKrd/hV?rlt\lbfe2Pao9?ia2Z*;
+`5BI/_8*h#^&3BPIK4f`I/J?fH5T^^<E40hH[9p[F`VP@CM7?k@U<;E>BtOIrIP-(KN1tM;uoot
+r)3Yo;KDbjqh+p#s+13"#(CuJIXQTlrd4Zk!."Qg"F#$4FE@G$s)/$ZDf'?/rbW*gG&heQLPK_b
+@V0@mA,]p9?NFJ?r*]M4s'c+>@UinYraGk;r+$"CA7K1]AS1pQ$=m^ZB4baeAnGUbrac:DA7K+[
+A7kdN#%M1Q@UiqYqI'Y;H=gMk?=%AXra>tICkRUlGlC\<;uKZ!L5:Y@LPY_)oMbTaqc!DlrDWMi
+qc!Jns,-r;Mi7F0r_rbns%rtu;,:"c;,[7@!.Xrt!.jlrrIap!s+LN?Pa)02rfdJJPa2*0!L8oK
+P6-u4P5^XFPl6gEP5gaEP5^[DPkp=<MZ8P3MXQK&MZ/J4M?/WorJgcBnsKHFrL!POrg<\Os-E\M
+r075Fr0$Q3"d6a>_o0Lm`<+'"a8X-]ai_d)b6#o4c2Grfci;AjdJqYpe,@erec45!fDjM'g&9V+
+gYCT`h>c@3hu;O8iSrkrir\<'jo4BDkNM./klU/9li-5OmI'rA!q>aMrpp*\!;-6_s7ZKerV6Bf
+s8)WirVZTloDX=@JcF4!J,~>
+JcC<$JcC<$p]'g`r;HTlqYU9grqZKes7cNdrUp3_s7?3[s7--YrU9dS!:BaOs6K^M"R/oe='5H'
+qH3c#"^5&3=BJZ(;>sH!;,^@k;c6Lj;>jAn;:tm"s4.2#rmUttdf.Vpd*M^:"jP97bK@s+a:-,/
+`Pod5_SX.)^V@J[<r#_q<:!N`<;okt<;f_p;>a6'2`<NO4[2.o4?P\c3Ar`P1c$lc0+0C+92\Vc
+;c-Ik5!Am-s#pBE$9C:33]f`#8P)HErC?lYs%!&W!_,RGrBpTQrBpTOr]pQL5lNnG4odbF4;pCG
+4#&ra5!;(o5;G#^6UaI>9MJ5V92/,U9`7`b9a"3c:/4O^:B45g;?'Jm;>sDl;#sKjqG7i$:/=\`
+:f1%c:Jjqc:esnb;G^0g;#a>k:)-K!;,0tX9heAV779I/6o6_a5<_7mrAsg9rAjpXr`/u!pc\C7
+"$Jh45Q*bM4Zkhi5<_4*4Tdf05!Jd,r'(-F!'^B^s&AhZr]pHIs$-fT6:!k%5s[j6;ZK_k;uKVl
+;uTYp;u'Dm=8Z+u<W?)+<E<1&<`N.$='#<%!`W0#r`/nrr_iku<`]0!r)No"<`iK%=8Q%l=8l=n
+=8uD&=oVV(;?'Pm;ts8i;>sAl:]*rg9htO\s%WPir_WVjrD)fW"]3(Q_o0Lm`<+'"a8X-]ai_d)
+b6#o4c2Grfci;AjdJqYpe,@erec45!fDjM'g&9V+gYCT`h>c@3hu;O8iSrkrir\<'jo4BDkNM./
+klU/9li-5OmI'rA!q>aMrpp*\!;-6_s7ZKerV6Bfs8)WirVZTloDX=@JcF4!J,~>
+JcC<$JcC<$q#Bm`r;HTlqYU9gs7uTfrqHHdrUp3_s7?3[s7--YrU0gUmHsl=s6K^Ms69KjrjDd4
+!4)O-rilF+s/lF*Unn!ds/>pn"K&)pVPa6gs4.2#rmV>)daHOjd*U+acHXT4b8&1AaN2EA`Pod5
+_SX.)^V@Lr]U"hJop5N@rKIAKP`u$.rK6r<rf@)>+_>1q@pu:4V4jNNR?s,"NJWC?IscTeG'A.]
+R[p=PV5C0iV#Xj$?jU1H?X6uZY-G79r3$(%#ct)+Vkp2bUSIg_rh0@eTDk;[Rf/U.Q^!YqP*1rg
+Nf/a_Nha>!OHb*CItNN:O)8lLAn5OdB4u!mBkV6rBkh<pBl%U#CMs,i$>s]uDJsH4DfBZ5rbhpZ
+E,fo<rGqjV!cW'rrbhaTs).mVrc&-\E,BE0DJ];f$#FHqChm^!CMRV_C(k5lA7]@bMh6>"F)Gf3
+NO>CQ@q5FG#[q+KX/rD'WN,`$p0S/7?XI,G?!U]@?=*V:s'G_2s'G\1!+,J,s'GS0!+,Z1s02T.
+>Pqb)?2n.4?!LZ?>l@n,>lU,gQi39ORJ`KRS,AfUS,SrXSc>;]T*Cn/aN)??_u%:N_u@LQ_>_=O
+_Z7RQ_u7IP_u7IN_>hCO_>hCO_tp51V>-qZVuERiVtm:kaoBNUb6#o4c2Greci)/hci;;iblGrd
+b5TKaaN)=!`UUkI^qp#e!lMsprl"rYa2e2#s2b8`rQG5bs3:Mfs3L_lrR(Yns3pqrs4./#rn%2&
+s4RD*s4dS/rn[V2!8me6s5<t;ro=%>!9O4B!pAe2rojIKli-8Nm/ZSRn,MkWnbr"[oCV\Ro`Fj]
+p\agdq>U6fqu-HkrUTr=s+14"s*t~>
+JcC<$JcC<$q#Bm`r;HTlqYU9gs7uTfrqHHdrUp3_s7?3[s7--YrU0gUmHsl=s6K^Ms69KD#*4k,
+O-#Haq2YH6!0$l/re19'"GDJ_KS9;Xs+LF'!7h(u$e*PPdF$=fcd'h\bl5cub/q`Ga2Z*;`5BI/
+_8*h#^:h2XJ+S3iIJ/'fIJeKjHiA?kGlUnE<#JS^H[C'_G'%bDDJ<cr@piVK>?Y68@X3<QrIY'%
+!JFGN;[HE$;,LYPKnY25rIb-%s+13"#(CrJIXZZmrd4Zk!dT$8rceBb"*AR'E;a_TDA-`$GB/(g
+LM_!ECM[j-G'@D*?=3V<"CbbI@:T:G"CktRARtdO"Cu(UB4h-V"D;=ZBkdHX!blC_rFu7Erb2LK
+BkV0orb)4D$tj9eAnPgkB4b[dAnCsP!b,_OraQUN@:<PP@:*DeDJE`m@:3M\KR8(C;uKYqLAlu0
+LPY_)oMb]d!Dubk;uBVn;u'>g;uTbrMZSiqMu$?M;uT\n;?'Jm;?'PmJH(,uJH(2qK)L>tK`6Z-
+Q^3l#rfd8E!1!DF"dP=9PE_=0P5pjGPQ$aEPQ$aDP5pjDMuJV5M>`>#Mu/A7M2I4LN;eh8QgpIC
+RJiKQRJWBOQi<<NQ2HmHPPgU6OTE86rk\`S`5MYo!li:$rlG,]!6Y8`s31MfrQbGhs3U_ls3gqr
+rRCkts472$s4IA)rn@D,s4mV0s5!b5ro!h8!94"<s5X1AroO:Fkii$1!UB"Mm/QGQmf)\Tn,W"W
+ncJFTo_nFap@n=Zq#C0hqYU0gr;HTbrdk*#s4%(!~>
+JcC<$JcC<$q#Bm`r;HTlqYU9gs7uTfrqHHdrUp3_s7?3[s7--YrU0gUmHsl=s6K^Ms60Mar`92&
+='/Q&=Sl5$=T)>";>jDl;u]bq;>jDm;?,2Iec+&+e'c[ldEp7dcHa\YrlYqsaiMQD`l5p8_ns:,
+^q[Xu]tF;Eq,IDolr3p`s&K(ur_j_5;,L.d2`ETO1I+/g5!:th3]T/W1G^d@0/*;W$S=)*9N"_c
+;c-Ik;Z8cd4$5Yg3]]Jr8P)HErC?lYs%!&W!(QcP"@GLC5skQ:"[G::5!(h&4<6%;5X%Cs4>\oa
+7n#j984uKG9MSAY9hS5W9heDZr_<nq:f1(c;,0n_:f("c;#O/l;,U:hr_EYk9MJ5TrCmDg92&&S
+rD*Gk;Z0Jm;ZBT!:f:.g;,U7grD3et:f("e;,C%b:]=*!9MSAZ7R]^56:+'s5<_@03W1u=<;ont
+<qniQ49I`15<o*1#<b134[2+m4Sh2C4?Yklq*4d@s$$KIr`/ttqEOpDs$-NKr^$QLs$6ZP62aa^
+;Z0Mo;Z0Po;Z'Jl;ZB\l<!$*%=8Z+u<W?)+<E<.%<`N.$='#<%!`W0#r`/nrs&/nsr`9"ur)Wi!
+r`K)"qc<Dls&ekor`K2'"B\Mu;H!Ekq,72hrD3Pk:/:a^!)EAds%WPir_WVjrD)iX!PlPN_?.Wn
+`;[^W`lH.!aT'?^b5KN`bl>rdcMu5jd/DAldf7epeGn)!f)F;$f`0Y(gAfq-h#?.0h>lI4i;_a9
+ir8!<j8e<@joX`0kl0fIlKeH9s6TgSrpTmV!:g$Y!qZ'VrUg6cp\4U\s7uZjqtp?irVc<dJcC<$
+eGk%~>
+JcC<$JcC<$q#Bm`rVc]mqYU9grqZKes7cQerUp3_s7?3[s7--YrU0gUmHsl=s6B[MrTX?j!4Dg5
+!4)L,rilF+rN67)XJDZkV>mIrVPU)crhodnr29PDs3gtrrm:bnci22nc-4ASb/sY(%`cT.`Pf[2
+_SO%&^V7CorfmMKQ1pUAQ2?gDP5UO@OT1@AOT(:dARo@`W2?DcTUVF<Q^!VjM2$S0I!U!\Fb#$o
+J:NiRV5C)dVuEM!?=7)G?Y>q7Z*=//s/cC)X/W#rV#R4iU+W47TqJ*NS=H(;R[BM1Q^*bsPEV/^
+^QFnTZ&b&pJ;&rDWebA#BP1siB4tsmBDuTTC27R"DJjB1DfBZ6E,]grErU+WEW:%[FE@G's)nZi
+F`VVEF*;\JrGr!]FoHIcEccDEFoHI_ErL1[F8p7\EW1"XE?B4=E,KT4D/=*+C27NtDJa*&An5Xi
+AqGANDf(Sr[ANq4"(>SFX8]4#Wq]uq?OC1J?X@&E?!LZA?N+71?N4=2?N+41?MRn,?N+:=?=.&G
+?*^c@Z<LQ2>l@t)>l@n+>QC)gQiEHPRJrWTS,So\SXc4>S,SrXSc>;[TE!"9aN)??_u%:N_u@OQ
+_#qQl_nuAirPJTPrPJNL!5e]Ns2"c4r2'IjoVV8YrMKFhql'J8s2suW!R/gdcMu5gcMu5jcMl&g
+bPoZ`aTBQ(`r3mI`;dRQ^qp#e!lMsprl+oW!6>&Z!m/U-rQG5bs3:Pgs3L_lrR(Yns3pqrs4./#
+rn%2&s4RD*s4[P/rS7P3hr"Fk!TE&;j8\0?jo4BIkNM-ol0@R"rp9[P!:KjT!q>aMrpp*\s7H<`
+s7ZKerV6Bfs8)WirVZWmo)=4?JcF7"J,~>
+JcC<$JcC<$q#Bm`rVc]mqYU9grqZKes7cQerUp3_s7?3[s7--YrU0gUmHsl=s6B[MrTX?D!KW9<
+O8=n7N<+urrIb*&s+:?(KDpT)K`6]*K`9L$df@hqd/hV?rlt\lbfe2Pao9?ka2Z*;`5BI/_8*h#
+^:h2YJ+A$gIJ&!eIJeKmHiJBlHiA=?<`N*uIXHKgH$"1NEc5f.BP(d_?<pc>=^kiM@UaA'JqJZ,
+K7\`/<)`co!`sZ$re16&!.t3$s*k6$I!pHmI!u!@rd"NgrceBb"E\[(E,kkq&8ISRGBngXDJF!,
+G'Amg?XE_>!b,PFra?"A@V'([ARtaN!+u+@"DDF]Bl!]_!,24Ds(_XMC]8&LCM`i_!GlQLC'&*a
+CAqoKCMIV`B`i$_BPI<V!bZ1ZralLKA7T7_A7K+Y@:9(A$XdjcA78k_Ck[=:;uKYqLAm#/L\Oj@
+;uKSp;,[6hr)EVnq,7)grDWlWN/NYk;Z0Pn;Z0Jm;#aDl;Z)"GJ:W:HK)L>tK`-T-QC!o%Pl?mE
+PQ7!FPQd>:PEV5qr0%,FrKI5Ds-*DEs-!G?r/1Q4repc5s,$Z2mu."!"cJ>!NL6+3QfOP6Qi<<N
+Q2HmHPPgU7OoN/s^qp#e!lMsprl+oW!6>&Z!m/U-rQG5bs3:Pgs3L_lrR(Yns3pqrs4./#rn%2&
+s4RD*s4[P/rS7P3hr"Fk!TE&;j8\0?jo4BIkNM-ol0@R"rp9[P!:KjT!q>aMrpp*\s7H<`s7ZKe
+rV6Bfs8)WirVZWmo)=4?JcF7"J,~>
+JcC<$JcC<$q#Bm`rVc]mqYU9grqZKes7cQerUp3_s7?3[s7--YrU0gUmHsl=s6B[MrTX>`s&K5'
+=BAT'=Su;%=T);&=BAQ%;>sH!;,^@k;c6Lj;>sJn;?#)Fdf@hqd/hV?rlt\lbfe2Pao9?na2Z*;
+`5BI/_8*h#^:h0Z<`\rp!*&;`!*&qts&B"s!*&qq'/qg-1I")f5!1ng3B9#W1c7'E1&W^C/MT"8
+1,26l;,U7i;Gg@j5!:qg4?Q&(8OuGK8,bpW7eoFT6UF+*6N0:N5lX&+4Zb_f4Zkf$4[)"m0f2?g
+7Rp!D:/"GX9MA2T:/=\\:JOY^:/+P^;,Bt]:f1(c:/+P[;,I6f"Ar&o:f.*dqbRDk:/=\`rD3Pj
+:JUmcr(dMn;,9q`;G[9h#Z+8o:f(%d:f@6hs&8qps&/ko'MqS#:esn_:JX\S6UX:/2)[W^3B@%!
+!*&qts&SnXpcJXA5!M:14pO554?Ynm4?WI'"$A_155@G@56!kI56"U`<)rcZrBU?Hs$6TMs$6TM
+!^]1<r)3Pnr_iMirDNYoq,IAps&],!rD`l!<W,r!<EB$!"'/B$<rQ+t<<#ku<*!&u<W?+u=8uD!
+=8Q%l=8uCo=8uD&=oD4t;Z'Jh;ZBVl:]X?er(R/dqG7,d!)NSjs%iSgnPB2"!PlPN_?.Wn`;[aU
+`W4'Xa9'K+b5KN`bl>recMu5jd/DAldf7epeGn)!f)F;$f`0Y(gAfn-h#6%1hV[5ihuVfrro=%>
+!9O4B#Nt=7l07Kuli-8Nm/ZSRmfN"Knc&+ZoDeI^p&Facp\jmdq>^<gqu-HkrUTr=s+14"s*t~>
+JcC<$JcC<$q>^!ar;HTlqtpBhrqZKes7cQer:U*^!;$0[s7--YrpTmTs6]dO!pf.:rTORNkI%\'
+ZEg_5Z2V!,YPkU(Xo>@%T;;I_!iDoprhTUlrhfanr20VGe'e6C!RT0lc2l26rlZ"uaiMQD`l5p8
+_ns:,^q[Xu]tD"irfdDJp6G`EQMZsGPl?mHP5ULCOSOt;AJSfcVkg,_Ssl(5PECi^L4t,(I!Bm[
+GlE<pJ.d<\I#=D_VPU2eVPU+q@[F@(YPbR'XVIq<WMcShUna]ZU8+ESTqS*KS=>t9rg=XjQBm\r
+V4!C7V7r.>ItiiAMJ?g>BP1mjB`;WKBkh?sCi4+hD[:<&F)l;@E,fmrEY3D9G'.tOGBe@XH?jg_
+G^+L[qKr-f%!m2CGBeCXG^"@TG'3_+!-S3_rcS3^.<T`RFE;JAEcH,@Ec>r9DJsE2Df0?+CiF0%
+Anl%?J9GmNCQ<1F?sp&7XT,<q@.mq7?sd8I?<pf@?!^k8>mF\A?=$oB?!d>4s'G\3$=7(H?<skB
+Z*IS<r*92+qcs&'r`fS1Q^=),rL*\S!1WtXrgj%Ys.'7`SXuGOT)d%5aTKW)a2Ihk!5ncP"i8'n
+_ns:i_u7FP_u.CI_>U51VZ!@eVZ*LlVY[4iVuWaoVY[4jW;`[pb5KH^b4EdVbl#cdchu)gci;;j
+bll86bKA!,aTBQ(`r3mK_u[QcrkAKL_>_=O_Z7XS`W*sXa8X0[aoBN_bQ#fdc2Grfci;AjdJqYp
+e,Iksec45"fDjM'g&B_*gAp%.h>c=3hu;O8iSrkrirS6&roOIKkih9qlK[^7liQSBmf)YVnF?&J
+o)J:]o_nI_pAamcq#C0hqYU0gr;HTcrdk*#s4%(!~>
+JcC<$JcC<$q>^!ar;HTlqtpBhrqZKes7cQer:U*^!;$0[s7--YrpTmTs6]dO!pf.:rTOCIkE#V&
+"-8J'O8=n7N<G2uMMcr_KDpQ'K)gT(K`Hf)K`d"Xe'e6C!RT0lc2l26rlZ"uaiMQD`l5p8_ns:,
+^q[Xu]tD"imsY7bmX5"\rHeKE&l_eXH@'p[FE;G@DJ<ctA7AkPrEK;3!+c(;"_1nTH$Y,AJd6p]
+;,h[lKS98Us+1K,J:E&sI!pJCIK+ZoHN/9jGlDpdFV]";EH5iDG&hkXMJd-EDfg/G@:3GM@/XO6
+@f0a@ARo=`BP1uVBEDm_CAqoYCMIX#C27R"Ci!m'C27R"D#J5NDZ=PMD$+ZmCi0&c%;T]nCM[d%
+Ci+!)CMIV`CB/)IC'&*aCAhfOBkV0mBP1piAH$-SA7]7\@UW\Q@<ud'@U`__?XHc3LAm#/L\Oj@
+;uKSp;,[3grD`_oq,7)grDWlWN/NYk;Z0Pn;Z0Jm;#aDk;ZD7HJ,k/qK)L?#K`?c+K`-W)QN*9Q
+Q'7I3PPgXFQ26^KQ'@JrPa(p+s-!AFrf[5;s,6i5s,6i5!/^Q0rep]3pl#$,rJLZ7rg<YNjI#t6
+s-E\M!LB#LPlHsFP4Xk;]tXK\!PlPN_Z.LR`;[aU`rF*YaT'B^b5TTabl>rdcMu5jd/DAldf7eq
+eGn)!f)F;$f`0Y(gAfn-h#?.0h>lI4hu_lsir7s=jQ6C'#Nt=7l07Kuli-5PmI'EAmfN"Knc&+Z
+o)SF]p&Facp\jmeq>U6fqu-HkrU^#>s+14"s*t~>
+JcC<$JcC<$q>^!ar;HTlqtpBhrqZKes7cQer:U*^!;$0[s7--YrpTmTs6]dO!pf.:rTO@HkP\H]
+=8uD&=Thi0=]ef*=8uA&=8l5#;#O8j;Z9Sp<;obq;>jAp;:O(Crm:bnci22jc-611'["P=aN)<>
+`Pf[2_SO%&^V7Co]Y!i:!*&Vir)EVns&B"ur`&hps#1?D1dF5h4?GSb3B&lSr\OR/r%8gA0etL=
+1GpsR9M88\;c6Ik;ER!.8OuEDrC7)^84Q-=77B]B7/fRQ6N07\69me#5<M"\69[Oq5!Ln'72/6_
+9h\8S:/">U:/=VZ:JXe^9i"F[:^9`k:JFSY:/:X]"&Vfg:]4&g:]F/k:esja:]!ug:]=,d:^Bon
+:JOY];,:$e;>sDk:Bs]k:Jaqb;c3Kk"Ahuo;,I0g#uOJp:esq`:/==X6j?"96p`pq<;ont<qniQ
+49I`15<o*1"[+t14[2./4T%>E4?Yklq*4d@s$-NIs&B)!<VerY5lO"J5lX.M5lX.M6N9=N;ZB\o
+;YX2i;ZB\k<;fht=8Q%s<<6-#rDir!<r?#"<`T-"!*/qrs&/u!<`]3"s&f8%!*JDcr`Jhpr)`qs
+rDESmr)<Dhs&&\j!DcJg9`Rr_:]=2j:]4&[:BA/CrkAKL_>_=O_Z7XS`W*sXa8X0[aoBN_bQ#fd
+c2Grfci;AjdJqYpe,Iksec45"fDjM'g&B_*gAp%.h>c=3hu;O8iSrkrirS6&roOIKkih9qlK[^7
+liQSBmf)YVnF?&Jo)J:]o_nI_pAamcq#C0hqYU0gr;HTcrdk*#s4%(!~>
+JcC<$JcC<$qu?0br;HTlqYU9gs7uTfs7cNdrUp3_s7?6\s7--YrU0gUmHsl=!pf.:rosIHs5s`q
+ZEga>Z*:I;Yd",1r3$($rMp!$Unn!d"fS>rV51!fVZ<UkVuP-ed*L%`cHXSWbKJ&MaN2EA`l5p8
+_ns:,^q[Xu]tD"i])IrnQ1gOAQ2HmGP5pdEOoLO@O"#BeA7T8LVPBiRR$X#!O,A[HJ:;omH$=F`
+It<0$IXc`mJU`6%S"6FQrhf[k!3Z=)!3Z='#ct),Vkp2bUSIg_s.KCc/>&K'S"#k7R$j;,QAClj
+T!sfGI"R67X,1P(C1h3pB5)$qBPVF$Ci40/E,tns!HW;\F9cr4GBeR`I!YO6s*FZis*F]lrd+Kh
+rd=Zk!.+Ke"aG<=H@'u;HPV!UG^+FVH$FRWF`hkNF`qqNG'.nIFT->(E-$&@EcH&<DJsK7E,K]:
+DeWm$B7tYPDf0B-BWS;8Wr?B&@.mq7?sd8I?!U]??!^k8?2\(2?!LY0?2n71?OC+H?X@$DZE^]>
+>Pqb)?2In)>Q.k0>?Y0srgEeT!1WtXrLF"]SXo\Mr1F#3rlG8`a2c-q_Z.OP_?Icm_o'@.rkn]O
+!5n`Or4rB/p8.P]s/5dlqPX=k!2odmqksFl"/j>bb5KH^b4EdVc2Greci)/gci;;jbmM\<bK@uL
+aiMNC`r3mL_umZc]tXK\!PlPN_Z.OR`;[^W`lH-uaT'?^b5KN`bl>rdcMu5jd/MGmdf7epe,n1O
+f)F;$fDsV'g'?BfgtgfChV\=j#N=\%j5]4]jo4BCkNMp0s69UMrp0[Qmf)\Tn,W"Xo)J=]o`"O`
+pAamcq#:*hqYU0gr;HTbrdk*#s4.."~>
+JcC<$JcC<$qu?0br;HTlqYU9gs7uTfs7cNdrUp3_s7?6\s7--YrU0gUmHsl=!pf.:rosIHs5sQG
+NK0'[O84h6N<"n7M?$QQKDpQ(K)pRVre1?*r.QAKdF$=ecd'h\bfn8Rb/q`Ga2Z-<`Pf[2_SO%&
+^V7Co]XtcRIfFihIK4f`I/eOBH<aHM<)e9nH?aOQEc>o1B4b^b?sd2E>?YNF@q/qU@UWVR@q9.r
+H\;9Ks+:<)r.G$$s+(N-It)loI=?QlI=(s>rcnKgrce?a&9;c1D00iFL2LpEDKBuYG$k5V&Rf-W
+@:EbX@q9+^AS,LcBP1uVBa\`mC27U$D/=*.DfGJir,)LOqecCNrbVOMqeZ(Fr,2OQrb`'[Ci!m(
+Chmg&CM`rb"_qgfCMIV^C&_icB4bgiAnG[gAnP[b@UWYODeNWi@:3JMLkphApf-larDNYmq,@5k
+"&i)r;u'>g;uK\qMueiqqGR8jrDNVl!)WYlqbdHFJbaorKD^DuL&RD<QN3<KPPpaGQ26^KQ'@Jr
+Pa(p+s-!AF!/^W2s,6i5s,6i5!/^Q0repZ2pl#'-rJL`FR$d]9k*Z+6rg!PLrfmDGr0$`8"2)=\
+^AbkJ^qp#es24lTrl"rYa2e/"s2b8`rQG5bs3:Mfs3L_lrmCbos3pqr!nGlQrn%2&!87>)#M\%h
+h;-rEhu;O=iSrkWj5f:_roO7Ekl0iHl2^/LliHMArpTmV!:g'Zs7?9_rq6<bs7cKerqZTjqtp?i
+rVc<dJcC<$ec1.~>
+JcC<$JcC<$qu?0br;HTlqYU9gs7uTfs7cNdrUp3_s7?6\s7--YrU0gUmHsl=!pf.:rosIHs6'A^
+s&]2%!a/W.rE'&$r`K2%!*9)#!(QoarDE\q;H*Qm!)`Yl-W/:=d*L%`cHXSWbKJ&MaN2EA`l5p8
+_ns:,^q[Xu]tD"i\l;X/<V]Vd;tj8j<W5rP;_0jd1c%?[5!1ke3B9#U2)I-F1+k14/hSq80ekF=
+1GUdE1Ggp\92\Vb;c-Ij;FpaV#Y7ET7n,s:6q-o>rBgQOrBV,^5X.Fq4[2+o5;P,c77]pC:/"DW
+r_=/(:/4V\9MS;X:/FSY:JOYY:JO\]r_<Yn:/=V]:f$LVr_WPhrD<Jhs%r\jr_NSjr_WJhs%i_l
+;>sB%;,:"c;,C+d;,L.d;,U6i;C#+=;,U7h;,:.h;,L4g;,U4c:esh\7n#d46pj=.<E3(#4Ztq)
+4nq,A4[)(prB:BJ4?Pbk55dVA4Tdc.4[&U*r'(-Fs$$H_!E<(q5Q*kH5Q="K5la1L62s:N5QF.L
+;YF#h;Z9Vo;ufqs<;]bs=8Q%t<VTVm<rl?%r`0#!r)E\p!*0#!s&T2&r`9)%k#_Oap/h2p!`Mup
+rDESmrDWJhs&&\j!DcJh:&du_:]F8j:]=,\:BS8C]tXK\!PlPN_Z.OR`;[^W`lH-uaT'?^b5KN`
+bl>rdcMu5jd/MGmdf7epe,n1Of)F;$fDsV'g'?BfgtgfChV\=j#N=\%j5]4]jo4BCkNMp0s69UM
+rp0[Qmf)\Tn,W"Xo)J=]o`"O`pAamcq#:*hqYU0gr;HTbrdk*#s4.."~>
+JcC<$JcC<$rVuBdqu-KkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrU0gUmHso>s6K^MrosIH"R"q0
+ZEa;2"0\r4YPbR'XT5I%X8]+#=/;YkV#mQnW;`XlVZ<UlVZG/jrluM.bfe2Pb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`rKR>IpQk]Aqiq,Es-!>Cs,d8A)gZ..ARq^:UnO6EQB[DhLk^J1I=-<bH$=dj
+Jc1*+IXcs!It<8[@%3\cV#dHkrh]Ur'!/.6W2?DeUSFWZU7n6QTqS'KrgNqWRJrR&NO>(HXL==@
+Ko;(OCM7KsB4u!lC27R$Ci"$,E,fi:EH6)@FEM_LH[bmBs*jurs*OioHMDjeHMr-hHN/?kHMr3h
+I/SBlHM`!fGQ<$eHN&6kI/SKlIf=a$H[0m]G'8+SGlDmdFWkjJEcZ8BEc?&>EH5u9E,p)CFE2A<
+Bl%L:Huj4EMmB@_oO%T(ra,q=?XI,F?!LW?ra,P/rE]P2>[7&0s'G_4s'G_4!FB(1Z2e,+>l@t)
+>l@n+>lRt2=^%5^R[a5Fs./tWqk*l1rlG8`a2c-q_Z.ON_>qLP_Z.OP_>qLO_Z.IPU\(DXVZ3Rl
+VY[4jW;idpVY[4iW;k'@b5KH^b4EdVc2Greci)/gci;;jblQ&3rlY8_"N\X(`lA"spVd*Ds1JBF
+!5AHI!l2Xgrk\`S`5MYos2P)ZrlG,]s2t;`s31Mfrm(Pis3U_l!n,QHrR:o!f%0iPs4@>)rn@D,
+!8RS0#N"@qi8ESQir7s=jQ6C'!U&\GklU/9li-5OmI'uBs6p$Yrpp*\!;-6_s7ZKerV6EgrqcNh
+rqu]moDX=@JcF:#J,~>
+JcC<$JcC<$rVuBdqu-KkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrU0gUmHso>s6K^MrosIH"6\h/
+NV8D1N<+urqhbE2;>c(HK`-N'K`6Z*K`-T+K[A'Ec5b*QbKJ&NaiMQD`l5p8_ns:,^q[Xu]tD"i
+]",BKIJ/*iII)=_HX'VN<=aM*H?j[TEH#Z,B4k^`?XE_:"Bo8E@U]4E$=RIS@q9.L<I/tDrdt-%
+"GDAZJV!fN#Ch/LIXZZmIK"QnHN&1-G]n:SG'.qKBo@(\K8+;ZEHQJJ@UNMN?srtC&7]9^A7fFb
+AnPgjBP2!nC2Elb!H)oQErU.ZE;4AKD?+PND?+PQD#J5KD"qlFDZ=YTDZ4PSDYe;ODZ=SRC]/&U
+CMIX$C2.O!BkdEW'P1liBPM6nA7K(X@;]dh@Ua/,LPPk.mSj*_s&&SjrD`eq!E)kl;YsDk<;hdP
+;Z0Pm;ZBSp;Gd?iqbdGlJbaotKDL8tK`ID;QN*9OQ2HjEPlI$DPlHpJPa2!,s-!D=qMP<2n;@1&
+qhk0,r/1K3s-`nSq3U62rKmPMs-<SJrfd8CpQ>Kfs1JBF!5AHI!l2Xgrk\`S`5MYos2P)ZrlG,]
+s2t;`s31Mfrm(Pis3U_l!n,QHrR:o!f%0iPs4@>)rn@D,!8RS0#N"@qi8ESQir7s=jQ6C'!U&\G
+klU/9li-5OmI'uBs6p$Yrpp*\!;-6_s7ZKerV6EgrqcNhrqu]moDX=@JcF:#J,~>
+JcC<$JcC<$rVuBdqu-KkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrU0gUmHso>s6K^MrosIH"R"q0
+<`]3$rE'&&rE'&$rE0#"r`0"gr)*Gkr_ierr_`_nrDE\od*M^:*6l^NbK@uLaN2EA`Pod5_SX.)
+^V@Lr]Y(kf\[gs'rD`_qr`&kss&9+P2`ETNr]^NJ4$#A]r\Y!<1,:L70.nn11B'!.1B'*02%)2s
+1c7H^92&5\;,dEk"@u!P7n3DFq*Yi_6pj=.5X@Y$5<hCc83K1%4Z*.-$:mic9M8)T:/+JYrCmPk
+:/+S\:JOYZr_EGg!DlYe:]X?gmSX!\r(m8fs%iVjr_NDfrD<Vo;,R0ds%iSiqG.Dp:esnb:fC1f
+;Z9Vp;$Tor:f(+g;,I6i#>n8m:ea\S7/fOV2Et5C4n1W84[/j0r]UKK4?Pbk5Q*_B4o[YE4o%>?
+56!kI55eLX5Q*kH5Q<tM5sdj962s:N5QX8<;Xm]c<;ons<<#ts<WH5!<rH%n<r5qu<W6#!<W#hr
+;u]nt=8uD&=8uCb=8uCq=8l>%;u]bo;?'Pm;ts8j;>j>k:B4/g9`Rr^:]F8j:]=,^:]J',]`5YF
+^AbkK^qmkd_?.Wn`;[aU`rF*YaT'B^b5KN`bl>recMu5jd/D>ndaQ\De,n1Of)F;$fDsV(gAfn-
+h#?+7hV[5Ki8NYSro4%?jo4BCkNMp0!p]+;rp0[Qmf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYU0h
+r;?Nbrdk*#s4.."~>
+JcC<$JcC<$!<;Kdqu-KkqYU9grqZKes7cQerUp3_s7?3[!qGdLrU0gUmHso>s6K^MrojLJkNDj,
+#-kD:YHP17ric4%!j/Q*rN#ms%%MmEUnsobWMcViV5F6i!2f[ls3:Yibl5chb/q`Ga2\+t&B)K'
+_SO%&^V7Co]Xtbc\[_X'rg!,As-<GF!0dDFr/k3FH=pl%AWNacTUM77P`:QUJq/5rH?aUVK7\]*
+JUW)tI=H`sJ:W;[@UtS0Odr2DV5L2fV5:2kVkp2cUS=NXU7n9RU7n0LS=?":R@0D(PE20@Oa;\:
+O,RlPBF/BcCM[^$Ci400rc%mXs)\?cGC+i;JH(-!JGjutIfFfuI!^0cq0W*erH\Eh!IK4nHMr3h
+I/SEgH2i*mH$Xd^H$]F9s*XusI=?YDIJnQkI4BPgGB\1SGB\:SG'.kKFE;PFEH?2CDfK]6F`hkL
+EcH&5CM86ADfCVkU\8'n?N4@<?sd8I?!U]??2e1/?2e11?2n1)?2n72?iOI4?NFJ=rNc9)rE]G.
+!+#P.rEK8+s&oM->$@ElSG8]QTDm"4aoBE`a2Z'p_Z.ON_Z.OQ_Z.OP_>qLP_Z$;1V"CMJVY-kd
+W;k$?bQ#``aoBNUb5oi3rQbDgrQbGhrm(Pg!R/adb5]T`aT'9^`l5pk`!Eob]=Y_g]tM/Z^B23e
+_>_=O_Z7XR`W*pXa8O*ZaoBN^b6#o4c2GrfcN)>jdJqVpe,Iksec45"f*Bs]g"P07gYDea%,Tn!
+i8ESQioB([jQ6C'!U&\GklL)8rp0^RmdC)C!q>aMrpg-^o^r.Us7ZKerV6EgrqcNhrqu]moDX=@
+JcF:#J,~>
+JcC<$JcC<$!<;Kdqu-KkqYU9grqZKes7cQerUp3_s7?3[!qGdLrU0gUmHso>s6K^MrojLJkNDj,
+!KN08Nr+e:N/RUkrJ:Q&D#K"cK`6T(K`6Z*K`$Q(c2l26rlYJfaiMQD`r<pg`5BI/_8*h#^:h1l
+]=PP`\GL^KIf=c`HlZEl<E3"9I!^*\F)l26B4kaa?X@#C>$>HH@prhTr*o\9&7f9M<E+!sEI!.g
+JqAW,K7s5S#CUuJIXQTlIJnNlGli56GQ)apFDZ)=G_L$KDK9rE@UK(Bs'c[P@Urt[AS,OeBP2!n
+C27X$DJsN7noFbMs)@dPqJH:MqecCNrbVOMr+u.Fs).jR#]=R!DJjB2DJo>irGDUPrGDaTDJX0,
+rG;LL");UeCA_c^BPD'mAnPgmBk_6lAmo.VD.R3dD/4Q!mSj*_s&&SjrD`eq!E)kl;YsDk<;hdP
+;Z0Pm;ZBSp;Gd?iqbdGl;#,_<K_pK'Q2['NQ^3p6PQ$gHQ2-[DP6$o5plkE/s,6?'repQ/repf8
+!/pf5repfDs-`nSq3U93r0RGL!1!MI"-\t6PQ$a>OU/M/]=Y_g]tM/Z^B23e_>_=O_Z7XR`W*pX
+a8O*ZaoBN^b6#o4c2GrfcN)>jdJqVpe,Iksec45"f*Bs]g"P07gYDea%,Tn!i8ESQioB([jQ6C'
+!U&\GklL)8rp0^RmdC)C!q>aMrpg-^o^r.Us7ZKerV6EgrqcNhrqu]moDX=@JcF:#J,~>
+JcC<$JcC<$!<;Kdqu-KkqYU9grqZKes7cQerUp3_s7?3[!qGdLrU0gUmHso>s6K^MrojLJkNDj,
+s&K,$nlYfkrDiql9`7if;Z9Sp<;obq;>a>lc2l26rlYJfaiMQD`r<pg`5BI/_8*h#^:h1l]=PP`
+\GK1m;uK\j<>/=_2`ETO4$Pnk4$,J^2)I-F0e`GW#rF@j0JYC>1Gguf1__f34[);/6qgHU;,^@i
+;c6%R779T>6o.1u6pj:+5sRb%5;58b4[(\k77KgB9M8#Q9hnDX:/+DV9i"S]:/4MY:JOY\:Jjtc
+;,I3eohYZb;"%9];#=&e;#a>k;#O2i:]OAl;#O5m;Gg<f:]O;i;"d[&:eje];,C+e;G^1f:f1(d
+<)?Ii:fC4j;H*Qm$W0\r9he)F6UNai54Uf:4[/j0r]UKK4?Pbk5Q*_B4o[YE4o%>?56!kI55eI]
+5l3eE5lX(J5QX5<5lO(L6N04O6:!p.;u]hq<W?%t<W6&!=8Z+t<VTVm<rl?%r`0#!rD`_rrDs,(
+='&L+i)fq\r)`l"rDW_orDESmrDWJhs&&_k!`)QdrCm8ep.t]b"]%rk:JO[Y:C+MB]=Y_g]tM/Z
+^B23e_>_=O_Z7XR`W*pXa8O*ZaoBN^b6#o4c2GrfcN)>jdJqVpe,Iksec45"f*Bs]g"P07gYDea%
+,Tn!i8ESQioB([jQ6C'!U&\GklL)8rp0^RmdC)C!q>aMrpg-^o^r.Us7ZKerV6EgrqcNhrqu]mo
+DX=@JcF:#J,~>
+JcC<$JcC?%mJd"]rVZNhrqcWir:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[Ns6BUJ!pJh1roO7C
+YkbL#Xob`,XSf-uWrK%$W16qbV#I4iW;`XhVZtDibfe2Pao9?ra2Z*;`5BI/_8*h#^:h1l]=PP`
+\@;@#oToKArfmAFrK@,A/:)YUAn>MOUnO?JQ^!PgKS+`!G^"CWGCY6qK7JE#IXHWrItE6(?t*W/
+\$u@H"e2BdV5C-gV>m:mUnXTYrh1p<Tq.^DS"#h6@CM_sYdopFLQ%O9BPD-nB5)*rBk_="D/XE4
+E,p#BFa/@fKDgE%Jc1,uIfP#tJ,autIK+ZrH[:#7Hi89hH2i3jHieY@HMr3hI/\KgH2i*iH$]I8
+"F>EAH@,X=qgJBiqL/9hs*=loGB\4SF`m\,rcAusFE2GGEcQ)<FED\HEcGr3BnLYLDiBOEq-X),
+s'H%>?XI,F?!LW?ra,P/ra,V1s'5>)s'G_4s'G_4!FB(1ZMIi)?2n.0?2\%,>Q.n-=o__)>5auj
+SberST)d(6b5TN_a9'E%`;@FO_u%=N_u7FP_u@OQ_ZI]LUAgqfV"LSFVYR.iW;as>bQ#``aoBNU
+b5oi3rQbGhr6G>grm(Pg!R/adap?,3aiMNC`l5pm_uR=H\Hf^X]=bei]tXK\s1eWNrPAWR`5MYo
+s2P)ZrQ#&^b0'\+s3(JfrQbGh!7:\l!n,QHrm^tu!7q/$s4@>)rn7D-h#?+<hV[5Ki8NYSj5]4]
+jo4BCkNMp0!UB"Mlj)qGmdKW6nF?MKs766_rUp3as7cKes7uZjr;6HjrVc<dJcC<$f)L7~>
+JcC<$JcC?%mJd"]rVZNhrqcWir:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[Ns6BUJ!pJh1roO7C
+NVSV4N<+urqhk9-!IRcBKE$W'K)gT$Ka,fGbfe2Pao9?ra2Z*;`5BI/_8*h#^:h1l]=PP`\@;?`
+p4!$imsG.@?N*q8;gj";F`VSCChRBi?sHr?r`fA2(Lpo_@UWYR@UiqY@oZK,FGl$6Mi2n6KDgE%
+K*?[PIXHQlr-SHhs*,-!GBS.0Nco]#LMppHG'mb,@/aR;?t*VVA,^'>AcQNDBa&6fCMn05rc%pW
+rGhjX!c`7#pi?CSs)@dPq/-1LqecCNrbVOMr+u1Gs).gQ!cDppqel=Mr,)LOokjbHrbVUO!c)Xh
+rbMOK(hm_uBkh?rAnG^iBkh9nART"bAn#1cCO>PLr_ibnq,@5ks&/qr;u'>g;uK\oN;?HN;uKVo
+;#jMm;>X5m;,C*fK)UDtK`$Q'Q2['NQ^3p6PPp^GQ2-[DP6$o5qi_&:M>iD4M>E,0Mu\e*MZ8V/
+MZ8V6Mu\e7MZ8V6R/`TSR/**3R/E<NQ2m3IPlHsHP514?\Gj#D]">Se]Y2"mrkJKK!5\WN!lMsp
+rl+oWs2Y)Z!m/U-rQG5b!6tJfs3C\lrQt\pe'n<Gs4%,#rn%2&!87A*!ScE/h$i/thr*GOiSrnX
+jQ,G%joOZ/rojIKli-5UmI'E2n*oi:rpp*\!;-6_s7ZKerV6EgrqcQirVZWmo)=4?JcF=$J,~>
+JcC<$JcC?%mJd"]rVZNhrqcWir:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[Ns6BUJ!pJh1roO7C
+=7KDj=8u;$<W6#"91SnWs&/bnqGIOBbfn8Rb/sY((!">5`Pf[2_SO%&^V7Co]Xtbc\[]-G;XRK]
+<;KVp/.=Hq2)@K]4Zkee3&WYn1''!\r[nI.0ek@<0ekF>r\OU5r\P3N4Zu5.:/4JU8l8J`;H$Cj
+;>3I*6:=1-69mh%6:".,5!V:g6q0a>:/">U9hnGV9h\5T:f0n_:/+I^:'49i:f.'cs%r_m!)WYj
+qG@2hs%r_k!)W/^r_WJfrD<Mis%rYi"Ahrm:f.'e!`DlmqG7/fr_W8`s%rVhr_Oe6:Jatf;,^=g
+;Gg@i;GpFl;Gp=g;Gp=e;,'eU6:=1!2F$js!BiXG5Q3hM4Zkhi5!T!.r&k-E4$>b&5Q!_F5Q<qG
+<<,;]5Q*kI5Q3nK5skN9s$H]Ms$H`Oo2GZgs&B,"<E/lrr`0##r)WbrpK%5o!EN5!<WZ6$<W#ns
+=8uA&=8l=e=8uA&=8c2"=8l>"=8uD#;u]bo;?'Pm;ts8j;>j>k:]F2h9`Rr^:]4,i:]F2b:B7p(
+\Hf^X]=bei]tXK\s1eWNrPAWR`5MYos2P)ZrQ#&^b0'\+s3(JfrQbGh!7:\l!n,QHrm^tu!7q/$
+s4@>)rn7D-h#?+<hV[5Ki8NYSj5]4]jo4BCkNMp0!UB"Mlj)qGmdKW6nF?MKs766_rUp3as7cKe
+s7uZjr;6HjrVc<dJcC<$f)L7~>
+JcC<$JcC?%mJd%^r;?EgrqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'OI!pJh1roX7B
+!p$PfrN?7)Xo>I)XfSW$X8f4!WW/muVkos`V#R7qVl?VlV5C-hVZ<UnVuOs?ar8CCaN)<>`Pf^4
+_SX.)^V@Lr]Y(kf\[f5Z[el?^QN!0LPl6gEP5gXfH?jgLAn>POV4sTPQ^!SiL4t/)G]n4PJ:N6$
+IsuosIsq<G#D.M7@:N]0\,<`A[Bl<kVPU,dVuELmU\pf6T:MLBS"#gW@V21,OHbBRO-"6mCM7Bs
+BPVBuCMdm,DK9c=Fa&(ZJc13#KD^?$Jc1,uIfP#uJ,ausI0"_Brd+EfrHeEf"aYNCI!^2;Hi8?l
+HN8BiGm&A;H$FT3Gm&G?H?sr;I/SKiI/SKhI/J?jHN&+2G]n1PF`hkLFE;MBEccADE,]i;FE;G@
+CMniOE,KQNU\nKt?Mn.6?<piA>[@>8rE]D/s'5Y1>PMM(?3"@3?N4@9?<skBZa0C3ra#P/!+#P.
+r*02+s&oD*rE92kr13eXpn.T0rlY5^s2b5[!6"cO!5n]Nrkn]O!5nfQrM'7c!2T=bl)+BTs/,Xj
+!3#k=rlb>arQ5)^oZI9Zc2Grfchu)gci;;iblc25b00e,#0Fp+`l?!:qSWHD\%)FJ#J.OZ]Y(qk
+^AYeJ^qmkd_Z.LR`;R[T`rF*YaT'B^b5TTabl>recMu5jd/MDodaQ\Ee,n1Of)F8%f\-8X+PY],
+h;-rEhr*GOiSrnXjQ,Fbk3(pkl07Kulg4!*mI'uB!q>aMrpg-^o^r.Us7ZKerV6EgrqcNhrqu]m
+oDX=@JcF=$J,~>
+JcC<$JcC?%mJd%^r;?EgrqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'OI!pJh1roX7B
+!9F$;r/C`9Mu&>/M>`51I/JWsK`6W(K`6Z*K`6]*bQ#^'aiMQD`l5p8`5BI/_8*h#^:h1l]=PP`
+\@8p<IK+cqII_dc>S:=C<)lnGH[0aVEc>o1An5@W>lIkA@:E_U@:<YS@UNYR@q9+L<)Zb=Mi*Dk
+MZellH$Y,BK)UB'KREcG!.+Wis*4Qf(Nrk]=F#=3EG]`>H"18j?t!PS@q0%[Ac?9HBkV3qCMRj0
+rcJ0]!-8$X!-%jU"*/C%EVOSSE<'tQDt7cGD>nAMD>\5GD#eJPD$4`pDJj=jDZ+M<DZ=VaDJa3+
+D/3p'C27X#C2*Z\'5)#nAnG^kBP;!iA7BIk@q&k^Ie-M;;ZBVi;uK\q;ZTcpq,7)gs&B"srJU_T
+qGR;krDNYm!)ibmqbdDkr_NTHr.FctrIt69rK[MOQBh?2oT]?=!L/lKPQ-I=M#`G3M>N/4Mi<UQ
+mu%.'pPT!/repi8re^]6rL!SP!1<)=s-W>Cs-E\Mr0.2FrK@#>!k,SJrj`9F]=Y_g]tM/Y^B23e
+_>_=O_Z7XR`W*sXa8X0[aoBN_bQ#fdc2Q#gci;Akd/qbFe,Ihue^i=Nf)aOWrn8LLgt^`AhVR/J
+i8NYSj5]4]jlY^gkNM0plK[^%m-X3.rpKpXnaZVL!qZ'Vrq6<bs7cKes7uZjqtpBjr;H6dJcC<$
+f)L7~>
+JcC<$JcC?%mJd%^r;?EgrqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'OI!pJh1roX7B
+!9ElV"'J`-=Sl/$<`N0!<rQ/#9DhZd;ZB\q<;obq;>sJnbQ#^'aiMQD`l5p8`5BI/_8*h#^:h1l
+]=PP`\@8pD;Y*ie;ZB\m<;fhs//Kfr2Dd9V5!D(j3B9#T1c$j>/1rM+1GJe_"#;Sd2?#E72)I-S
+r]L?P9hnF^9E%Ne92\Va;c3NlrC$TOs$@bl5sR_$5s@If1djf':esbY:/F\]9hnDX;,'h^9MPI\
+!Du\m;>sDi:]F8j;#jGl:]!uf;?'Jm:B45];>j>g:]4,i:B=<hrD*Pm;,L.dr)!Sp;,C(brD<Mi
+!)W8_!)WVir_WPhrD3Vo:f:1grDE\o:K.6j&Q;P);,L4g:Jan^7mfU075[:(497T/r]gBG"[+t1
+4[)+/4T%>E4?G\hq*4d@s$-NIs&B,$<C-IGr]pKJrBL?Lr':<Lr]pKMs$6WMoi(cfpf7>p!*B)!
+rDiPlr`92&<E<0!<W6%s=8uA&=8l=e=8l;%=8c2"=8l>#<rcA!;u]bo;?'Pm;u'>j;>j>k:B4/g
+9`Rr`:]!rg:]=,b:BIu6\Gj#D]">Se]Y2"mrP&EL_86,fs2+iTrPefVs2Y,[s2k;`rlb>cs3:Pg
+s3L_lrm:eqe'n<G!nGlQrmq2'g&B\JgYCT?h;7#Gi8ESQioB([jQ5OdkND'nl0@R"m-O-,mf)YV
+nF?&JncJFTo`"O`pAamcq#C0hqYU0hr;?Nbrdk*#s474#~>
+JcC<$JcCE'm/Hq]r;?EgrqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs60LGroOaQ
+jQ,@(YHG(4Y-"h/Xf\]#WrT0uW<&rprhKXdA#,q"V>dFnV#[ChV]Eq%aN2EB`l5p8_ns:,^q[Xu
+]tD"i]",A]\$i`QmZn!@QBd]!rfd8Cs*>K/B4b^dW2?>^R[98#N/34;I!^']Fb,,CJ,as+I=H`u
+ItE9*?t!JORJaPp[JdEBZBC`RVPU2gV5:&_TUhXDrgP(!@:a+gFaA[tP&G2QCM7<qC2@U!D/F31
+DfKoEH[UHsKD:#uKDgE$Jc:2qJ,ausI0"_Brd+Hgs*=`lH@#O8"+#<AI/A9gI/eNnHMr-hGlN'g
+Gl;pfHiJBlHiAElIJ\BmH[Pg@qgA3dr-JBg#'tN=GB\4Src\<a(3FS=EH?5DEH6&>FEDMBC2L5$
+E,TQLra5V1rEoP1#$kJ=?!UcCrE]D/s'5Y1>PMM(?3"@3?N4@:?<skCZa*m5>lJ%+>l.b*>QS,5
+=oDM(>Pt&lT(elVbPoZ`aTT]*`l5jm_>qLN_Z%IO_>qLNUA^kdV"geMVYm:jVYm@lW;Og<bQ#``
+aoBNTb5fcacMu5gcMu5jcMl)gbl>lcaoTW)rl4uWr58TCrjDj:\Gj#?]">TR]E5d\^AbnI^];4L
+_?.Wn`;RXV`lH-uaT'?^b5KKbbg"E3cMu5jd/MDtdaQ[peCE+#rmrXPg"G*5gY:N>h;7#Gi8ESQ
+ioB([jlPXekNM-ol0@U#m-O--mdKW6nF?MKs766_rUp3a!;HEds7u]kqtp?irVc?eJcC<$f)L7~>
+JcC<$JcCE'm/Hq]r;?EgrqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs60LGroO=E
+jQ,A!Nr=t;Mu\e3MYr>2L]iKfL4!,$KE$W(KE$W%KcS=XaN2EB`l5p8_ns:,^q[Xu]tD"i]",A]
+\$i`QqgS?hs*jrq!doEEpO*!G(LL3B<)n?nH$47MEG]B$A78eM>?b9@@esO5@K9p;AH5a0;Z_3$
+MZ/M6M>`2:KQ29iK7\].JqJaUH2i-gG7f""=^5<EBQ%s9ARf.W?t*VTraZ@IA7]FeBPM:!DK>`"
+s)n<_s)\3\rc.sWpi6(Ls)A$Xpi#_@!c;air,)@JoPOVH"`A0oDJa:jDs2'=DuFYTDuX_QC]S<f
+rbE9aBPD0oC2%9mB5)$nB4k^`PA"H8?u#C6s&&qt;Gg<e;uK\q;ZTcpq,7)gs&B"srJU_TqGR;k
+rDNJhqbdDkr_NSlr.Fctre1?<rg!JKs-EbPPl$[:Pl?jKPa.#[p5/^)"cJ=tMMmDdMY2o*MZ8V7
+N;SV3R/`QSR-U+<R.$@BQBhB4!0dAEr/guerjDj:\Gj#?]">TR]E5d\^AbnI^];4L_?.Wn`;RXV
+`lH-uaT'?^b5KKbbg"E3cMu5jd/MDtdaQ[peCE+#rmrXPg"G*5gY:N>h;7#Gi8ESQioB([jlPXe
+kNM-ol0@U#m-O--mdKW6nF?MKs766_rUp3a!;HEds7u]kqtp?irVc?eJcC<$f)L7~>
+JcC<$JcCE'm/Hq]r;?EgrqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs60LGroO=E
+jQ,@s=T;M(=Sc)!<rQ+u<r?#"91]"Yr_i_o!E<"p;B<p%aN2EB`l5p8_ns:,^q[Xu]tD"i]",A]
+\$i`QnPfBa"&i/t;uBVo<W4Nd2`<KN5X%@o3]T2Z1c.!B0.ee//2K"71B'$.2#fE82Dm<Kr]L?D
+7nuhY9DhC18OZ<N;Gg@j;,^@[6pj:-5X@\$5X@\&6:F=685E#U92A8W9hnAV:]3ri9hnDX;#=/i
+;>j>h:]F8j;#jGl:]!uf;?'Jl:\%B\;#F,c:]XEirD*Pm;,L.dqGI5frD;uZ!)WVir_WMgs%r\j
+s%`Sjs%rkp;,L6i:_Q]%;,U7i;c-Ik:JaeZ;a`r?6oFg'#X(@85<_7q5!Am-!^8h3r]L*A"$AY.
+4o%>?56!kI4p=qe<`MIOq`k'Fs$-HIq`t3Kr]pKMs$6ZM5k\.T;uouupf7/krDiPlr`9)#qc3Ys
+r)`_ss&]5&mT0Bjr`K5&rDrr"qH*_qqc!MmrDESmr)<Dhs&&\js%`VirCm8eqbQu`!)NShqbI4"
+rjDj:\Gj#?]">TR]E5d\^AbnI^];4L_?.Wn`;RXV`lH-uaT'?^b5KKbbg"E3cMu5jd/MDtdaQ[p
+eCE+#rmrXPg"G*5gY:N>h;7#Gi8ESQioB([jlPXekNM-ol0@U#m-O--mdKW6nF?MKs766_rUp3a
+!;HEds7u]kqtp?irVc?eJcC<$f)L7~>
+JcC<$JcCE'm/Hq]r;?Egs8)`jr:p<ds7ZEas7H?_rUL$[nF6GGs6]mSrp9[N!:'OI!pJh1roOLJ
+jQ,@]YHG(3riH7)XfVN&"feW(WiN2uW<fE!V50o^U7><aV#R7qW2Z_mV5C-eVuOgAa2Z*;`5DSk
+&])8t^V7Co]Xtbc\[],W[^EL<QN!6FQN!-MP`u*0+d%(sHt[/)AuDN#TUV@7OH#-OIX-9aG'/:b
+JU`,tI=HbGJ-UXW?t!JO@%[D-!OoK8Zi@<:Z*9=ZV5C)dV#I4iRj"2uNf\.#G_:j<Df9E+BP2$p
+Chmd%Df9T8F*N(aLPCJ7mt(Ojr.+Wns*jop!IT7nHMi-iHN/9jHMr*kH@($eqg86gs*FfnH$T@5
+!."Qgs*4]kH$Xi:H2r<kHiSTnHi\SArd4TlrI"EfqKi0erd"frI!^0aG]e91FoQV"FE;GCF*2YG
+Ec?)BEcQ/5D1d"NDMn?urEoS2!+#S/s'>Y2rE]D/s'5Y1>PMM(?3+D>rEfV4?*aI9!+#G+ra#D+
+qcj)*!aAi2qc`rhqOdeZs.B>6s3(DarlG;aa2Z*9oYUUFs2+Z-qP4%cq5*;Pr2'Cir29D6s3(Gb
+rQ5)^o?.-Xr6G>gr6G>grltMgrlkDcrlP>aa2Z-u`Vm^VZa@.>[K3kIrji'?!5&6Cs1JEHrP&EL
+_86,fs24lTrl+oWs2Y,[s2k;`rlb>c!6tMgs3C\lrmCbo!7Uqs)V*Eif@S[-g"P07gYCW@hVR/J
+i8N\Tj5]4^roO7Ekl0fIlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmeq>U6fqu6NlrU^#>s+14$
+s*t~>
+JcC<$JcCE'm/Hq]r;?Egs8)`jr:p<ds7ZEas7H?_rUL$[nF6GGs6]mSrp9[N!:'OI!pJh1roO@F
+jQ,@]r/Uc9!K;s3MYr>2L]E5/L&lWur.G$&re(6(qh>'k"inX%`Pf[n_@aW"^V@Lr]Y(kf\[f5Z
+[^NTNr-nHirdOTirHoen>[LK3<E4HpH$4:OE,B9$AR\qN>?Y0<@U`bR@UWbT@UoCJ#$"W$<E+=&
+rJLZ4reCc6KS5&4EI!1hrIY'%rc]K.G].Y1@qTV!H":Gn@:<VR@Us"\AnGUfBPD3uEHZJIqfVs^
+rH&*^EcV+urc%[Qpi?CSpM]V?!GuZMD>\5CD$+ZoDJoDi!H)iND?+PFDZ+MPE;skSE;shUD$Ffn
+CMdj%CAqrIBE;m^ralROBP;$k@:O1e@UX(NqbmMn;uKVo;>F/h<<#kt;H*Bhr_j#!;c?Xp;cEXR
+!)r_lr_rbnqGI,f!)`YjrIalus+UK=rg!JKs-EbPPkpU:PlHsIL]<2'M>`;4Mi@Rlpkn^%r/1K3
+s,?r8qO%;N!1<)=s-W5@!LB#KPQ6pGP5ULEZa@.>[K3kIrji'?!5&6Cs1JEHrP&EL_86,fs24lT
+rl+oWs2Y,[s2k;`rlb>c!6tMgs3C\lrmCbo!7Uqs)V*Eif@S[-g"P07gYCW@hVR/Ji8N\Tj5]4^
+roO7Ekl0fIlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmeq>U6fqu6NlrU^#>s+14$s*t~>
+JcC<$JcCE'm/Hq]r;?Egs8)`jr:p<ds7ZEas7H?_rUL$[nF6GGs6]mSrp9[N!:'OI!pJh1roO@F
+jQ,@]qH*l'=BAL'rDru"r)NbtqH!\j8Gl?a;ZBYr<)`Zls2YAa`l5p8_u@Lb_8*h#^:h1l]=PP`
+\@8oT[C#I&rDEVoq,@>or[e(.s"tWY5!D(i3B9#U1bpd=/M/S,1,1L=1,1OBrAFU3r]U9C"@u9]
+92#.Sr^dGf6qU<S;,U=h;c<T\(-jZ=4[;A'7Rp!F:/">U9h\8T9hnJXr_EVj:/4[\;Z0Jl;#3ud
+;$'Qi:]!ue;?'Jm:B45_;>a8g:\mof;#jGk:BOEj:f.'e!`Dllr_NJhnPB0]r_NJhr(m>hs%iPh
+s%a_3;,C+d:Jaqe:f:4k:f:1g;Gg7k:f1%]9LhH<6T$t(49I`15!T!0!'U<D!^8h3r]L*A"$AY.
+4o%>?56!kI4oeU^<WPNPq`k'Fs$-HIq`t3Kr]pKMs$?WKp/CohpJq&jr)NJl#Zk&,<E<.#<`]#t
+p/p`a"B\f0=BGK&r`B#"r_iVls&/em!)i\mq,75ir)!Dh!)EJe!)EMhohYWar_EAe!jf8ArjDj:
+\Gj&=\cBAA]`5YF^AYeJ^qmkd_Z.OR`;[aU`rF*YaT'B^b5TTabQ,oecMu2jd/MGmdK%bqe/Hlg
+f%8O+f\,!4gY:N>h;7#Gi8ESRioB([jo4BCkNMp0!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cKe
+s7uZjqtpBjrVc?eJcC<$f)L7~>
+JcC<$JcCK)li-e[rVZNhrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>"6-GbY5PL&X8o<uWWK6$WrAt$W2HMhUnn!a#b[ZXPGG"NV5F6j!i;ckqkjG6rl#Yk_ns:,
+^q[Xu]tD"i]",A]\$i`Q['TOns-NGFs-3VLPQ$^gH@(!OB4b_RV5'WOR?s(sLkUA,HZs[VIXcp!
+J:;orJ:RWK#%1nJ?XR?GrjW!<[f*Q4ZMq*VYck42R]**[V5C,dMO0Zp\W_K!OD\rOCM@NuCi*s)
+Ci=95EHQSXr.k<,!/19%s+0ors+1&tqg\Wpr-\TnHiA?iHiJEkH2i3hGli;=I/83fI/eNoH?oF5
+!."Qg"*o-9H2MsgHhr-fHN8HlI/nZgHi&-gH2i3jHi/7*I=-<cH?XRUG'8"MF)l>CF`VMCDuOeb
+Ec#KMHZ3k\ZX-u:?NshB?!LW=?2e1/?2e11>le27pg!u.?XI.<?NOP>ZMq01?2@h*?2In*>Q7n,
+>QS,5=o)>%SH,8ZTDtM_T)d"4aoKW`b5TKdaN)<>_o)/as24`.s.]Rgq4dqcq5)uGrMTJ6s3(Gb
+rQ5)^o?.-Yr6G>grQb>e!RAshbl>ldaooi-a2Z-u`W*j[ZEpmE['fnA!OoT<\c95@]DfJC^&PhG
+^]2(L_>V4P_o0Ll`<+'"a8X0[aoBN_b6#o4c2Q#gcN)>kd0J+Ke'umte^j`O!SH*)g'ZTih;-rE
+hr*GOir7s=jQ6C'$g6a<l0@R"m-O-,mf)YUnF?MKs766_rUg6cp\4X]rqZTjqtpBjr;H6dJcC<$
+fDg@~>
+JcC<$JcCK)li-e[rVZNhrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>$0$u)NfK*YN/NVgMZ&D3L]E5-L&u^LGl<9oK`?](K`$N(`r<pm`5BI/_8*h#^:h1l]=PP`
+\@8oT[C!:;IeeEkIK=kEq0i9j)-^BQ<`N.#IX?B`FEDP@BkM!e?X6l?=^kh=@KBnFqdTJ&#$$;5
+Mi3IMrJ1B+s+CT/JqAW#KS08Us+:_pDKU,YDJO39@q9%WrF-+EARo@aAnYglCN',orcS-^s)n<_
+s)\3\rc.mUrc%pYrGhUQ!HE)TDZXfpDt7fAD>e;CD>eAMD>e>PD>e>PD=qfCDuO_TDu+GODuOVn
+Ci*s(CMR[!BPD-pBOtdfBP2$l@:4Cq@ps8/rDN_p;uKVo;#jMj;uTbq;Z]iq;u0Al;uT\p;u]hs
+;uMXT;u0Dk;u9Jk;#sKjr)*Mlqb[9EqLnm&rKdGJrg*SN!L8oGPP::APPg19M"QW%MYrD-MX-3#
+N;nh3R/`QSR-U+=R-p:AQBhB4!0dAEs,dJjZa7$G[JmT8\%)FJs1/3Brk/9Es1\KIs1eWNrPAWR
+`5MVn!li:$rlG,]s2t>a!mJp6rm(Pi!7:_m#L_)MeC<%!f)F8%f\-8X$JX@lh;7#Gi8ESRro4%?
+jo4BMkNM0plK[^%m-X3.rpKmWnc&+Zo)SF]o`Fj]p\jmdq>^<gqu6NkrU^#>s+14%s*t~>
+JcC<$JcCK)li-e[rVZNhrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>!od<`r`K2'"'AT(<rQ/#<r5ns<rZ5$<rQ2"<WYld:]4/i;Z9Sp<;TPn`r<pm`5BI/_8*h#
+^:h1l]=PP`\@8oT[C!:0;uT\p;u0H8/1iD42E!EX5!D(i3]T,V1c$mA0.ee.0etI=1,1OBr\a^3
+$U$^;4$,W":.n5P8c;9\8cM="7n-$>8l8J`:fC4i1bM!V5;>Sq85N)U9MJ:]:&dui9ht[^s%WPj
+oMYTarD<>drD<Vm:J^mbr)*Jj!`)WhoMPN_qbR&bs%rbmrD*DipJCoer_NPjr(d;fohYTar_EVm
+;,L0f:B45j:\moc:C9ip:esh`;G^.f;#X>n;c*Hk&5uG&:/";L6:3^s4?Pbi5!T!0rB13G5<]!.
+r&k0F4$>_jqEOmAs$-NI!*0#!!CB'K5Q3qJ5Q*kE5la7N5lX1N62a%C;uTbh<Vfbo<V0>l<rc:q
+=8#b`<s)Q-=]kN%rE0"rqc!MmrD<Pmr)<Ags&&\js%`Vir_<Df!)N2_!`)QdrD*U&Za7$G[JmT8
+\%)FJs1/3Brk/9Es1\KIs1eWNrPAWR`5MVn!li:$rlG,]s2t>a!mJp6rm(Pi!7:_m#L_)MeC<%!
+f)F8%f\-8X$JX@lh;7#Gi8ESRro4%?jo4BMkNM0plK[^%m-X3.rpKmWnc&+Zo)SF]o`Fj]p\jmd
+q>^<gqu6NkrU^#>s+14%s*t~>
+JcC<$JcCN*li-e[rVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6fpSrp0mUlK[Wukih4/k5XNC
+jSn3>ir?+aXKAV+XK2)qri$1%Vkp5cUSFQWrgs=^S6)M^rhTgtWMl_kVPa<is2>hn_ns:,^qd_"
+^:h1l]=PP`\@8oT[C!9Gm$@X9,F"CTH[0sPB4b_PUnjQOR$EksM2$S0I<TmYG(,!lIsufpJc:0(
+KOS=r?t+9W\-'1GZEsM8rilL.Y5YL7X/qb[V59cmNh*qLLQ.^?Df#Dfs(i!WDJjB5F*)YSK_U<(
+L4t<[K)^B&J:[KIrdjrsqg\Wpr-\TnHiA?iHiJEkH2i3hGlW0dHi&3jHN8BiGlN'eGlN'eHM`*h
+HN8HmHN8HmI/nZlHiJEkHhr'fH2i3jHi/9kI/n`qIK+R3H?XOTG&qhLEH6)@FEDMBE--2CB52:7
+F)YuSrEfb8?!U]?>@%57rE]D/s'5Y1>PVP-?=.&G?N"44?<sl9ZN.<->lJ%+>l@n,>5qh1>?Y05
+>Pq\(T)PA]T)YD_ao0?^bPoZ`aoBEaa2Q!7otpO!!i)Kaq4dqcq5*/Lrho[kpWENZs2t;^s2srV
+!6tJfrm1Pgr6GJjc-4E2bQ#]faiMNB`r<p_`3HSQZa7$G[JmT9\%&sI\H9@S]DfJC]`>eF^B23e
+_>_=O_uI[S`W*pXa8O'\ai_d*b6#o4c2Puncd:%ddF-IlrmUu!f)F8%f\-8X$JX@lh;7#Gi8ESR
+ro4@HjlY^gkih9qlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmeq>^<gqu-HkrU^#>s+14%s*t~>
+JcC<$JcCN*li-e[rVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6fpSrp0mUlK[Wukih4/k5XNC
+jSn3>iW5%!rf$u<Mi7:drJ:Q2L\c`-KmJ,Dr.G$&re(6(rIt9j(rX>/_SO%'^V@Lr]Y(kf\[f5Z
+[^NTNZa0LXpjN0ks*aZis'$=G<`W4$I!U*]FEDJ?C1q0g?XI&B=^,<Era?"=@:N_U@qGX=s&B),
+MZ/M7MMV7e!/CH+rdt6'Jc:02H?k-pFGt3bM/dHVHt6_p@fBm;AH-3@B)ZKGC2J"dG5cX`Foul/
+FERS)!crC&rc.jTrc%pYrGhUQ!HE)TDZXfpDt7fAD>nACD>eAMD?"MQD>nGQD=qfCDuO_TDu+GO
+DZXlrDuOVaD/=')Chmg$BkV-mBk_2YBE)ZF@L6O]A7B"a;c?RmrDNYm!)iYlr`&kq!`Drqp/:oh
+s&B"s!/pf7qGR;kqbmAi!DlYk;ZBVl;#Z+EK`?c(QN!0KQ33J>Q'D*.qNV#8!/UW0s+g]4M"cc'
+MZ&J-MXZQ'N;SV6Qhd$KR/iW?QiEHAQiE?OQ2HjHPPpXMOg20sZa7$G[JmT9\%&sI\H9@S]DfJC
+]`>eF^B23e_>_=O_uI[S`W*pXa8O'\ai_d*b6#o4c2Puncd:%ddF-IlrmUu!f)F8%f\-8X$JX@l
+h;7#Gi8ESRro4@HjlY^gkih9qlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmeq>^<gqu-HkrU^#>
+s+14%s*t~>
+JcC<$JcCN*li-e[rVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6fpSrp0mUlK[Wukih4/k5XNC
+jSn3>iW<1`=8l>-=B/@%<``@'qc3Pp!*B"t!_Q*Vr)*Jlr_ihs;uKVo`>HP2_SX.)^q[Xu]tD"i
+]",A]\$i`Q['R(.;uKSo;u9N2.k3,12`ETZ5!D(i3B9#V1G^a?/hJ\-/c@C61,1XD1c@0J5<V(j
+4[;a@9*%XVrC[&\"\;-R84Q/K71r6e;Gf5A4[2+f7Rp$F:/+JW9`@`l:/+JW:J=M[;"@Na;#jGk
+;>sDg:B45i;>F&d;?'Go:Jam[;>j>f:\mof;>a5`;$9]k:Jamd:]=,^:B45i:BF?i;#F,h;#X8e
+;#O09:esk`:JXe`:Janc;c$=e;,^Cm;,C(g;G]qY91;396T7.k5!T!0rB13G5<]!.r&k0F4$>_j
+q`jsAs$-NI!*/tu!'pEGr]pKJrBU6G!(-ZM!(-ZNrBL'Us&8u!p/Uohr)NYqs&K"uo2kZglrX3h
+s&o(uqbm;is&/em!)i_npeq,hrD<Jh!)EMf!_uNeo2#Ka:/:das02a5Za7$G[JmT9\%&sI\H9@S
+]DfJC]`>eF^B23e_>_=O_uI[S`W*pXa8O'\ai_d*b6#o4c2Puncd:%ddF-IlrmUu!f)F8%f\-8X
+$JX@lh;7#Gi8ESRro4@HjlY^gkih9qlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmeq>^<gqu-Hk
+rU^#>s+14%s*t~>
+JcC<$JcCT,lMg\ZrVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Aio/juriH+"pT"7m&ZDV*V59u_US=HST:hjKSsu>NV#R:kW!'#sV5C-gV]!Fj_SX.)^V@Lr
+]Y(kf\[f5Z[^NTNZa6sBm$@X9)jGVpHY7#)AS@p8S=5e/P)Y9PK78/lGB\4\Jc:--J:E'"It<5]
+?XI8OOT)`p[^39GZEpjBrim]PYH=n-WiW8$V5'0=S?8!+MN`""DJO$&Ci!m)D/aQ;GC+uAM"c])
+L&m!]rdk6'J:N4GK)^DtJGam!IXQWlrd=lrH[:#:HiJEjH2i3hH2i3eHi/9jHi&'fH2MpeH2W$h
+Hi/9eHN8HmI/nZnHi89iHhr'gH2`*iHhr-dIK+[%H$Xd^G'%nLG'.j(F8p7pE,p#ACM7LgG]I\[
+?XI,F?!LW=?2e1/?2e10>l\+(?2n:3?N"48?<skB['R(7>lJ%+>lIt,>5qh1>?Y04>PhV(T)YG]
+ScYP*ao0?^bPoZ`aoBEaa2Q!7q83-)p7hAX!2TFej/2gRrMBS<pWENZs2t;^s2suW!R/gecMl/g
+cMYujcHXSWrlb>a"3JX)`r<paYHY79ZEggC['[7?[f<f:\Gj&=\cBAA]`5\F^AbnI^];4L_?.Wn
+`;[aU`rF*Ya9'K+b5TQhbg"DXcHjh`rm:bpe,Ihte^j`O!SH*)g'-6dh;-rFrnn.BioB([jlPXe
+kNMp0#3tO@m-X3.rpKmWnc&+Zo)SF^p&Facp\jmeq>U6gqu-HkrU^#>s+14%s*t~>
+JcC<$JcCT,lMg\ZrVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Dio/jVNK&nrMti/1Mi.IireL?)"bhV_H[LGDKDpQ(KDpQ'Kc.hH_SX.)^V@Lr]Y(kf\[f5Z
+[^NTNZa6sBr-nHirdFiqq0X)b>[:E4<E3(HH$+1KEGoN'AS#7T>[(B8@UoCG#%M(M@U`kZr_rr!
+<-%tr!K)^3L])o?KS+o/K7ST(J:E#sC34]QDJaE=raZ";raQ7F@qB4`BkV6tE:\8QFo?I`Fo6@]
+F8p:[EVseUEW1"XEVOSSE;OSRDZ=YGDYe5LD";HADZ">ODZ+GOD?+PLD?+VRDYnANE;skPE;jeU
+E;skTD?"MPD>\/VBkV3oC2%?mBkV5[@Kr!/@q':Q;uKVo;#jMh;ZKer;Z]iq;ta,h;u]hs;u_dT
+N;?HO;u9Jl;?'Gm;>a>l;>X2iKDU<%L&@88Q2['RQ^3o$PEV1,PQ-mHLB<<gM#N2-M"li'M?&S.
+MXHE%N;\\6Qhd$KR/iW?QiEHAQiE?OQ2HjHPQ$^PYHY79ZEggC['[7?[f<f:\Gj&=\cBAA]`5\F
+^AbnI^];4L_?.Wn`;[aU`rF*Ya9'K+b5TQhbg"DXcHjh`rm:bpe,Ihte^j`O!SH*)g'-6dh;-rF
+rnn.BioB([jlPXekNMp0#3tO@m-X3.rpKmWnc&+Zo)SF^p&Facp\jmeq>U6gqu-HkrU^#>s+14%
+s*t~>
+JcC<$JcCT,lMg\ZrVZNhrqcWir:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Mio/iu='/U-=&r=$<``@'q,R#es%E8er_i_o!*&np)8sG0_SO%&^V7Co]Xtbc\[],W[^EKK
+Za-k+;uKSo;uKZ0.kN>32`3HL5!:tg3&rrU1G^d@0E*R(/c@F(1(c?#2)[9K5<V(k4@Mk89M.lJ
+r_!/]s%!Mf84Q0>77K^76:<L+57]M=77U'J9hS2S9MS8V:/(R\m8<p]r_WVlrD<Aes%rVjqb[/e
+rD<,`rD<;cqG72i;#O/i;"mfe;#X8j;#X8h:A%B_;#O2i;#jGj:]F8k:\did:]F5k:]!rr:Jah_
+;,C%d;,U1gr_ibp%8g&&;G'SS:.@T<2a0J)55dVG5!M404Sq8D4$>_jq`jsAs$-NIs&K&!!($KH
+r]pKJrBU6G!(-ZM!(-ZNr'1!U!E<+m<VTVn<<-)!<<#ts<qBDg=S5bq=SGks=T2Iu=Sbqm;u]bo
+;#jMl;ts8j;>O)h:B!rg:/CFW%Sohp:Tq",Z*L[AZa@*IrjMj9!4`$=s1/3Brk/9Es1\KIs1eWN
+rPAWR`5MYos2P)Zrl>/_b0'_,#L(H;cHab^d/MDndaS3F!S,d#f)aOWrn7P1gtgfChu;O@iSrnX
+jQ5Lck3(t-km$G=m-O-,mf)YUnF?MKs766_rq6<bs7cKes7uZjr;6HjrVc?eJcC<$fDg@~>
+JcC<$JcCZ.l2LSYrVZKgrqcZjr:p9cs7ZEa!qc*UrUL$[nF6GG!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Hio/kSXK/G'X/`/nWXl),Vl$>fUna]ZTqJ'PTV)4T%[ro3UnjiaVPpJmVkp8frhgRL_8*h#
+^:q:n]Xtbc\[],W[^EKKZE^Y%QMd$JBJ=d\BkM$jV5'ZPR$3VkLkpY3H?aXWG(5'oJ:E#sIt3*#
+JRMnm@Uc(A\$iTJZa-q:ZMq*PYcY".X/`8$VPB6?UV`7NN1G!-D/3j"Chmm*Df^)HI>%QSs+pB(
+s+UQ-KDpH*JUi9%JbjutJbaioIfb(II/\QoHi\S?rHnQjr-A<grH\EhqKr-fs*F`lqfr-dr-86e
+rH\Hjr-\<e!.=co!.=`lrd+Niqg/6es*FQhrd=]npO!9mH?jg\G'S7QFoHFsFa%kFEHH57Bk`TV
+EcGuR?!U]?>@%57rE]G0s'>Y0!*fG-qcs;1?X@(;?NXV?ZEjJ9qHWu)r*95*s&oY1>[1K:=]nu*
+>5FflaN;R&aoKWab5TN_a90H$`5DMiqk<t_s.T@bqP4(dqPF"brho.\rhodns3(DarQ5#\s3(Gb
+rQ5)^o?.?^c-=PZcd2O7!71Sg!mSs5rlb>a%EZ]2`l5p"YHP17Z*L\7ZN7G@rjMj9!4`$=s186B
+rk&<G^:sT]s1nZNrke]Q!6"lUs2P)Zrl>>db0%oNbfn?2c4J=Kd*^7he'lgre^i='f@\dUg'-6d
+h;-rFrnmt=ioB([jo4BRkNM0plKdd&m-X6/n*fc9nc&(\oCV\Sp&Facp\sseq>^<gqu6NlrU^#>
+s+14%s*t~>
+JcC<$JcCZ.l2LSYrVZKgrqcZjr:p9cs7ZEa!qc*UrUL$[nF6GG!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Fio/kSNJrgSMti2/MuJS5M#W52L55\]r.G,tHtE5.s+LB(s+LB*(W+#(^V@Ls]tD"i]",A]
+\$i`Q['R'CYkrnJIJSBmIJ\C,>?Y<==&r@%H[0dVF)Yu1B4k^]?!RA4$XmOS@UW_S@:E_W@fB@,
+<<IZ-Mi.FfrIkE.K7ec.Jc:0<Isui]FF/pcE-6YAA7T+XA7T1\AS#OgC2\1]G5l^bFoZ[`F9HZ,
+F)l=#EVj_SEW:(YEVXVVEH#mpDuOYSDt7fBD?"GBD>nGND?"MPD>nDQD>S5MDuOYNDuO_TDZFbR
+DuX_TDuXeVDZ4JQDZ"GPD@gZ$CMI[$CM@NtBPM3mAnYlW@0LslARf.ar_ibn!)iJgnl#Kds&B"s
+s,6l8qGR;kqbmDjs%i\mr)3PlqG70Eqh4j4rg!GJ!gf4<rfdAFrKI59r.t<,r.t-)nqu^jrf$l8
+pm:rHs-WkSfpD](s-<PIs-*JG#Hk86YctC<ZMq02['fnAs0i!<rji'?s1A9C!kl=^rkJKKs2"]O
+s2+iTrl+oWs2Y,[#Kb-2bKJ,Rc2Q!"cd:%ddF-LmeC<%"f%8O+g&B\/gYCW@hV\=j"l\J$j5f>$
+jq-_>l07L!lg4!*mdBQ4nF?&JncJFTo`"O`pAamdq#:*hqYU0hr;HTcrdk*#s4@:$~>
+JcC<$JcCZ.l2LSYrVZKgrqcZjr:p9cs7ZEa!qc*UrUL$[nF6GG!q,ICrp0^PlK\B5!U/_Gk5XNC
+jSn0Jio/kS='/U-=&r=$<rQ1u<W?%u<Us/l8kVkU;?'Pn;ZKeq;A[3d^q[Xu^:h1l]=PP`\@8oT
+[C!9GZ*<^rr)*_t<'s#(/NE_es#p`O3]K,Y2)I*D1B&p+/cRR/0etL<2#]B42#f]E4$Get91qlK
+8cD?]8cM<a7n-!>7fGgf7RTQr4Zttd7n-'H:JOSW:B!oe:]=)j9i"XM;Z0Dl;>sDg:]F8h;>a8e
+;$'Qk;"RW_;#*o^;#O/i;"mfe;#X8j;#X8h:A7Q`;#X5m:f1(dr(d;hr_EMjpJ:fc!)N>c!`)Zh
+rD3et;G^:k;H$On;#XB!8P2TJ7RKR22?#f<4T[f34oRS@4Tdc.4[/^,r'(-Fs$$H_r`0"bq`k$E
+!'gEIq`t3Kr]pEJr'(0HqG[Dpoi:cfs&Jqq!``9$r`8Vlr)i\ppK78n!*K5'qH3Ynr_WYnqc!Mm
+rD<Pmr)<AgrDEMi!DcJi9`\!bo2,H_s%Wg%YHP17Z*L\7ZN7G@rjMj9!4`$=s186Brk&<G^:sT]
+s1nZNrke]Q!6"lUs2P)Zrl>>db0%oNbfn?2c4J=Kd*^7he'lgre^i='f@\dUg'-6dh;-rFrnmt=
+ioB([jo4BRkNM0plKdd&m-X6/n*fc9nc&(\oCV\Sp&Facp\sseq>^<gqu6NlrU^#>s+14%s*t~>
+JcC<$JcCc1kl1JXr;?BfrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp!T0sWWWT6#WN#cp!i`,rrh][krM'@erLj4`rgj7`S<KFCrhTRj#,nN!W26AgrhgOI
+^V@Lr]Y(kf\[f5Z[^NTNZa6sBYd!P]rfo-LBk:jbA79#HV4a?HQB[AfL4FYuG]n:SIt*$!I=?Zo
+J:W<(@:<MOA"C-=[Bm4;ZN%0QZEUL6XKAM(Wi9QABUcr*M4/F)EGTB)D/a</DfKlDH\;-L!/U<'
+s+UQ-KDpH&Jc:3"Jbt'!JbXcnIfb(II/\QoHi\S?rHnQjr-A<grH\EhqKr-fs*F`lqfr-dr-86e
+rH\Hjr-\<erI+Tjrd+Qjom6L^s*XcnpO*!fs*Po6H?sj[Fa%nLFE;MGG&qYCF*2/2Bo[^`EG\ud
+>?bD4?N"10?N4=2>QA"->l.h*?N"45?<skBrj2H+rE]>+r`fD+#?b;:>?Y04>P_M'=o=ina2lBE
+rQ5,`rlY5^#0=j)`5BL0rh0.^s.]Icr1X4eUAUedV#."dVZ*ClVZ!F^VZ*LlVZ+d=b5KHYb5]Zb
+b5]T`b4EdXbg"E'c32D9bfe3/apuP6`l>*^Xfek2YctC;ZMq03['d=@[K<qJ\Gj&=\cBAA]`5\F
+^AbnI^];4M_Z.OR`;[^W`lH.!a8sE*rlb>c"jP?<cd0u;d0e=NeC<%!f%8O+g&B\<gYCW@hV[8L
+iSrkWj5f=ak3(t-klL)8rp0[Qmf)YUnF?MKs766_rq6<bs7cKes7u]kqtpBjr;H6dJcC<$f`-I~>
+JcC<$JcCc1kl1JXr;?BfrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp!T/h/MZ8S9MM[2hM#W52L55_^s+UE)s+:ApHVjWmre1<()h`isKn[=W^V7Co]Xtbc
+\[],W[^EKKZa-j?Yjm2BIJnO=>$G-3='/R'I=$6`FE)55BOt^\?<gW:>%(iK@:3PQ?t*SVAH#O7
+<E+:&Mi*:FL5,Y\re(f7JqAQ)J:E&R?!_c7Ec?F*A.2pU@Us"ZAS,RfC2ItUG5cUcG'.p(F8p:[
+EVaYSEW:(ZEVOPUEH#mpDuOYSDt7fBD#eDAD>nGND?"MQD>e>PD>\;MDuOYNDZFbLDuX\YDfBZ6
+DJoGj!,hRM!cDporG;pWCM@HpBPV9pB5)&Y@0CmmA7K'I;?9Wmoi(BY##eK#;cAU4rf$\Or_r\l
+r_`\l!)`Yls&&Sgr.G'8qj.5HrK[SQQBdYtrfR>;LPP\]",DVcL\uu'M#`G4MtW%pMuJ\6MtiY7
+QiNKKQK"81Q2m3JPlHpSXKAV-YHP17Z*CV6ZN@MA[JmT9\%&sI\c95@]DfJC^&PhG^]2(L_>_=O
+_uI[S`<+'"a8X-\aiaV+s3(YkcHab^d/ME"daQ^qe^`7&f@\dUg(N/qh;-rFi8ESRioB([jlY^g
+kl0fIlKeH9!U]=SmfDqJrpp*\!;-9`s7ZKerV6Egs8)Wirqu]moDX=@JcFC&J,~>
+JcC<$JcCc1kl1JXr;?BfrqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp"lEE`=&r?#<WQ9&rDihrr`/Pjs&B+g91\tXs&/bnr_aNI^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYd!Xrqbm>Zs$@S\5<_1k4#o8X2)6mA/h\h0/Mf.:0f(L>2#]?>1d*u`5!2;,91__S9)_E]
+8.\9^84H';7R]a<8k_E52+C.8:('ck:JFMX:/=SZ:/L"L!)`ShqbR/erDEJhqG@;j;,Hm^rD<8b
+pe^ob!)WDerD3Gir_NMgpeUfar_ESl;,Q^Vs%i\knkf9\(/n(+;,U7i:fC:i:fC=k8P2TJ770I2
+r]^<E!^8h4r]L'@"$8V.55IMA56!kI56"X^<WGG_5Q*hI5Q*kE5la7N5lX+N5XG<4!C/mI;Z]s"
+<qTJh<qoYl<<-)!=8uCt<rcA%=oVV!=8,et=]kQ&"^"o1>$4u+=8Ytq;#jMn;u9Jk;#jMl;ts8h
+;>j;l:JUm`!DZG^;#a;uXKAV-YHP17Z*CV6ZN@MA[JmT9\%&sI\c95@]DfJC^&PhG^]2(L_>_=O
+_uI[S`<+'"a8X-\aiaV+s3(YkcHab^d/ME"daQ^qe^`7&f@\dUg(N/qh;-rFi8ESRioB([jlY^g
+kl0fIlKeH9!U]=SmfDqJrpp*\!;-9`s7ZKerV6Egs8)Wirqu]moDX=@JcFC&J,~>
+JcC<$JcCl4k5P8Vr;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNC
+jSn0?io0mp"5ht8Wr/joWWB)trMBUlV#@&!U7n<TTq@pJSXl:@Ru*T)rhKUlVl0Nm#H">pVPg?+
+^&GYU]=PP`\@8oT[C!9HZ*:I9Y3qT.Q"F`BARf1X@U`_P?CI4EO,8XBI!g0`GBJFdJUW#tIt*!"
+J:WA_?X[H4\@B!GZi@?2Yop?VY-"e+WiN2#P%J?@Dj?9PEcGo1Bl%[(CMn*4G'JK)L]<)7LPCS>
+L4t>6KDpK&JcC9#Jc(-"JbO]mIft4JI!pGBI/J?kHM`!fHN&3hHMW!dI/eNnHM_seH2MpeH2W$h
+Hi8?fHNSYDI!kj=rHeHiom6O_rd=]np3c[_*-usXG'A.TG'7kHF*2PEFE2P<Ch\lZE,ge?>@%57
+r*9J4?!U]?>Q.n)?2e1.?NXV?ZEjJ9qHWu)r*95*s&oY1>?kB9=]nu*>5qb)Scm'SaN;R"b5TKe
+aN)<=T:_eNT`CbaU&1SaU]7%iUSO^_V>[:iV>mFlVsgM^VuNXlbQ#``ans6\bPTHRbQ#fdc1B6\
+c2Z#fbPoWeaiDE%XT#=,Y-5%5Yd(I=rj)[5[C-"Bs0i!<rji'?s1A9C!kl=^rkJKK!5\WN!lMsp
+rl"oXa8X0[aT0K_b5oi3rltPjd/MEGdaQ^qe^`7&f@\d1g=tB;h;-rFi8ESRj5]4]jlY^gkiq?s
+lg*p(mI'E2n*ol;rpg*]o_nFap@n=[q#C0hqY^6hr;HTcrdk*#s4I@%~>
+JcC<$JcCl4k5P8Vr;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNC
+jSn0?io0mp!T2c.MZ8V7MZ/J4M#N2-LAuu,K`$H)CjLJ\r.G$&re(6(s+LKf^&GYU]=PP`\@8oT
+[C!9HZ*:I9Y46u@IK+Zs>$G-4r)aJ2=BBTcDJNot@UEGH>?Y50@KKtGA,Tm:A-HOD<)lnBrepf3
+"GhedKnfS[!eZ)WrdbW2Ir8Ou?t=7uI:[#$@U`kYrac4EBkV7"luiPTG'8"OG5cUeG'.nJErC%Z
+ErL(YDuahSE;sqXErU.TErU.ZE;a_RDZ=YGDY.cGDY@rHDZ"AODZ4MPD?+PNDZ4SQDXD?HDJsH4
+E,TXmD#eJJDuOYSDZFYRC_LT!C2%?pCM7?mBkUpa@<ua#@rD9Doi(lg!)`Jg#uOSu;cH^p;i?S5
+N;?HO;u]_q;>sJm;?'Gm;>jDl;><ueKE.85QN!0JQ3<P?Q'7F2L\HT-LPCP=L]3,)M#`G3MtMto
+MuJ\8MtWM6QiNKJQK"81Q2m3JPQI&LXT#=,Y-5%5Yd(I=rj)[5[C-"Bs0i!<rji'?s1A9C!kl=^
+rkJKK!5\WN!lMsprl"oXa8X0[aT0K_b5oi3rltPjd/MEGdaQ^qe^`7&f@\d1g=tB;h;-rFi8ESR
+j5]4]jlY^gkiq?slg*p(mI'E2n*ol;rpg*]o_nFap@n=[q#C0hqY^6hr;HTcrdk*#s4I@%~>
+JcC<$JcCl4k5P8Vr;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNC
+jSn0?io0mp"Q/';=&o,ur`/kqs&K)"!*/borD`r!5"\KF;?'Pn;ZKer;?=MFrk&fS]",A]\$i`Q
+['R*DYct=6nPfBarBg]U5sdn*r^%ej3]AoQ1GL[=0.nk.1GU[>1GL[B1c7-I2*F#a4@Vq98kK"S
+s%32\&4]8^7n,p:77K.,8kVf67S3SS$Va;i9h\8V:ej_Z:uG4O;>X2d:]4,g;>j>U;>j>d:\dib
+:B45d;#jGk:B45i:]=,d:\mod:B=9hr_W&Zs%i\kn5'6b:esn`r_XS4;H$Lk;GpFi;,^Cb8kM`E
+6:<ds4Zttl5<f'0!'L0B"$8V.55IMA56!kI56"X^<WGG_5Q*kI5Q3qE62a%M5sRa656=)75Q4R]
+<;oqk<W,tu;tj8i<W?,"<ruK,=Sc)!=T)D&=SGnn=T2J'=Sl/"=T)A(=BAT#;Z9Mp;H$Nk;Z0Gp
+;H$Oor_rVjr)*Dh!DcJi9`\!bo2#KaX/u<&#Hk86YctC;ZMq03['d=@[f<f:\Gj&=])TDA]E5d\
+^AbnI^];4L_?.Wn`;[^V`lJ)"s2b8`rlY>dc2Puhcd;[=0@J>!eCE+#f@S[.g=k<9gtgfChr*GO
+ioB([jQ5OdkNM0plKdd&m-X6/n*fc9nc&([oCW"S!quB_rV6EgrqcQirVZWmoDX=@JcFC&J,~>
+JcC<$JcCo5k5P5Ur;?EgrqcWir:p<drq??as7H?_rpp*Z!:]sU!Uf@Sm/QAOlMg#Qki_-kk2k^c
+ro4%=iVqa=hqm4iWN#lqs/H4$WiE%srhf^l!2TOfs.]Oe!hc-Vrga%ZrgO"YR@RFYU`ZM3W2Z_o
+V5C,fVnB[S]",A]\$i`Q['R*EZ*:I9Y-%5[s-3_!BkCperaH%@@:3GK@K'XA?\NrTH$=IUJ:E1M
+IfY"JrIG6-@UNSRQFOH5r3ITQZ*LU;XfSS'X/r=aQ]Ys"DfKi<Ec#Q+CiO60E-->LI>.$Cs+Uc6
+L5(J<KnY3XJc^LRJGt,uK)^E%J,+WmIfk+HI!ts@rHnNiqg&3fs*=QhqKr0grd+Wjqfr-dr-/3e
+r-A?ird=Herd=WjrHeHip3QR^r-\KjqL&!`'mt:PH?j[YGB\+MF)uGGF)c8AC2.J^G63,;?2e1.
+>mObB?!LW=>?kG2?2\+,?NON=ZMq3,>l@t+>l@n,=oMV->$5!4q-*f$"J3WRaN4A&qTAfZ!6G/2
+s.JqVpS.Y_qka4frMBOkrho4^rhfdobl#Zab5KHZb5]Z^b4EdVbl5lYc2c,gbl>lcaoKN^WWB0%
+riH7)YHRr0!O8s0Zi@B4[JmW7\,Wu;\H9@S]DfJC]`>eG^]2+L_>_:V_o0L4`Q#p<rl@7Eb0%oN
+bg"DXcHjkadF$CkeC<%!f%8O+g"P07gtgfChV[8LiSrnXjQ5OdkNM-ol0@U$m-X3.n*fc8nc&(\
+oCV\Sp&F^cp\jmdq>^<gqu6NlrU^#>s+14&s*t~>
+JcC<$JcCo5k5P5Ur;?EgrqcWir:p<drq??as7H?_rpp*Z!:]sU!Uf@Sm/QAOlMg#Qki_-kk2k^c
+ro4%=iVqa:hqm5hM?&M2MZ8V7MZ/J3L]E5-LAlo,K_^6%H@&KeKDgK'K,B8oKS@(O]=PP`\@8oT
+[C!9HZE^X<YHG"tIKb.I>$G-4r`B/'rE0)#rDs;9?sR#@>$GHFA,]s;@0pFPA7K1M<)ln@repf3
+!JlL0L&Zf-K7\aSJJ`lSDf]>tARoCaAn,:Z@q9+]AnPjnDfp3fG5l[eG'.tOrH/3aF)l=#F8p:[
+EW9tXDu=SSEW:(ZEVa_UEW:"VDu=MQDt7f=D?"MJD>eAMD?"MQD>nDQD>S5MDuFSBDuOYSD[16"
+DJj<.DJo2er,2OQrb_[OrG2FI%qo]mBkM-n@U`bZB5)'p;Z0Mo;Yj>l;?0Sj;Z0Jl;?]uu<)\^5
+rf$\Os&8blrD<Sl;>jDl;>3lgKTqbuQN!0JQ3!><r.k6,s+gQ/!JcF/L]<2+M>iD1MtW%oMuJY9
+MjX4)qNq8Lq3L$,rK[GKrKR;]!NW=$XTGZ/YPta,Z*OA8s0Md6rjMj9s1&'=!kQ"Urk/9E!5AHI
+s1nZNrk\oX`5KX6`l?'ua?@Yfb0.uPc-=PZcd:%ddF-LneCE+#f@S[.g=k<:h;-rEhr*GOioB([
+jlY^gkih9qlKdg'mHs?1n*oi:rpg-^o^r.Us7QHerV6Bfs8)Wirqu`noDX=@JcFC&J,~>
+JcC<$JcCo5k5P5Ur;?EgrqcWir:p<drq??as7H?_rpp*Z!:]sU!Uf@Sm/QAOlMg#Qki_-kk2k^c
+ro4%=iVqa>hqm3k<`W6"<Wc?$<E8oqrDiVnq,IMt8kV_R;>sGq<)Z^pr_id/'"b`c\[],W[^EKK
+Za-j?Yck43nPfHcr'LTQ6:+%+r^-ZPr]qPl1,1F8/hS\21,1L>0f([E1c7*I5!(kh7S6?H8cD?^
+8cM<q7n?0@7R]d87Puna9M8)T9MJ8V9`@cl:JFVZ9i"Vbh,45Mqb[,brD<GirD<Dh!)W,]rD<8b
+rD3Pk:f.$b!)WGf!)WVi!)WVis%`Jfpe^ob!)`_lmS<j[:[([e:Jate;c-Cj;H$Fh;Gg7h;Z9;f
+7g;OU4[)%o557;@497T/qEOj@s$$QK<E9$!!($KHrBL?IrBU3FrBLHN5X@[65Q="K56=b_<W6%k
+<W#ej<;ons<rZ8#=TDS%=8uD#=TDRt=8Q+u=oVV#=8lA&=92K%qGR;i!`DrqqbmAi!`DrrrDWMi
+r)*Dh!DcJi9`\!boMGOe!NW=$XTGZ/YPta,Z*OA8s0Md6rjMj9s1&'=!kQ"Urk/9E!5AHIs1nZN
+rk\oX`5KX6`l?'ua?@Yfb0.uPc-=PZcd:%ddF-LneCE+#f@S[.g=k<:h;-rEhr*GOioB([jlY^g
+kih9qlKdg'mHs?1n*oi:rpg-^o^r.Us7QHerV6Bfs8)Wirqu`noDX=@JcFC&J,~>
+JcC<$JcCu7jo5,Tr;?BfrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa<hqm2FWVrb"WN)qtWMl`oV?3TiV#6tjU7n9RTDkG^SH,2ZS,\oZR?F%@rhLR2Vl6Sn
+W2?DfVRsFM\[],W[^EKKZa-j?Yck43XmhVZI!0.6Ac?-H@preP?XR8K?sm>Ira,e9@qK:_raQFI
+@:E\S@:3PP?t>J3\[MCA+L/5VY,n\(X/r:`R#n)XEH-#>F)5T+D/aH4F*MqXKSK8W!/C-$!JZ=+
+LAuu-K`$E'JUi:LJcC?%JHC@OJ,+WmIfk+HI!ts@rHnKhr-A<g!."KgqKr3hrd+ZlH2DjdH2i*k
+H$FRZr-JBjpj<$e!.4]mr-SEhrHn6aqKr0grHnBgpNupfrd>?(H$Xa[G'J4SF`MSIF`_\Hrb;[R
+G'e^jJR2[]?2n72?2n10>Q7t+?2\+,?NOQ>ZMq3,>l@t+>l@n,=oMY*=TM]1q-*f$s2G,\aN4>%
+qo\f-!M?%\U&Uk_U&(JbUSO^`V>I.gV>mFkVsgM_VuP!Abl#Zab5KHZb5]Z^b4EdXbg"E'c2c,g
+bl>ldao]\`WW&n&X/rD)Xfeh1ricI/ZEjJ9!joACrjMj9!4`$=s1/3BrO`3F^:sT]!l2Xgrk\]R
+`;[aU`WaE(aN;QHrl[%?c-FV\cd:(edaQ^qe^`7&f@\d1g=tE=h;7&Ii8N\Tj5]4^k2tjjl07Ku
+lg4!*mf)Y[nF?&>o(2JFrq6<bs7cKes7u]kqtpBjr;H9eJcC<$f`-I~>
+JcC<$JcCu7jo5,Tr;?BfrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa>hqm2FMMd8gM?&S6MZ8P3L]E5.LAci*K_^6'Joc99K)L?$K`-N;KY+h+\[],W[^EKK
+Za-j?Yck43XmgcC?!:H8=]bT*r)a)'=BAO)rDj#%=BAT'<WlN+<``B!<<I<$Mi7Ohre:B*!J5t&
+JJN]PE,pAaAn>RcB4GC[@q9._B4u'uF8^7YFoZ[TG4p%\FE;JCrc8'[rc.sWs)7gSs)J'Zs)ImU
+s)J'XrGVUOs)7IGp20eHpMKkHr+uFOrGD:HrbqgS!c;gmq/?1KrbqaQ$#ad%Df0H0D/O7cDu=MQ
+DuO_UD?OlpCi!ncCB%rLC1h6qraH%>BPVI*E;if8;Z'Jn;?0Sj;Z0Jl;?]uu<)\^5rf$\Os&8bl
+"]8)n;,C-g;Z9Pf;#ca[Q26gGQ2d0GLB*/-LB`QkM26tCL]*&-M>E,.MtW%nMuSb9R/iWJQhm'L
+Qhcs,Qi33MQ2[!KW2]cr#HOr-Xf\b/YPta-Z*L\7ZN@MA[JmW7[fEr;\c95@]D]AD]tV5[^B23e
+_>_:P_o2Pns2G5_aN2KFb5TR=bg"GYcd0tcdF-LneCE+#f@S[.g=k<:h;-rFi8ESRioB([jlY^g
+kiq?slKdg'mI'uB#Oq9Ro()DDo`"O`pAamcq#C0iqYU0hr;?Ncrdk*#s4I@%~>
+JcC<$JcCu7jo5,Tr;?BfrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqaDhqm2F<`W4$<E)st<VTPm<W?,!<W6%q<W6#$<CBGLr)*Jlr)4;-]=PP`\@8oT[C!9H
+ZE^X<YHG"0n5BH@-pp?ir'CHP6::`=4$c5$5sRb%69mb"5!D1r5<_:r5X.Fr4?Pbs8kVcJ8P2TH
+8OuBB7n?*<7R]a'1-Rod9he;V:/">V9`@cd:'49g<`/Wi!)_fT!)`Yjq+prcrDEPjqb[>inkfHb
+;,R9gqG.,e:]=2j:]F8g:B45d;#jGl:]F8j:]F2f:\R]a:]4,Y:]F5k:[1dU;%QQ":esnb;c6Li
+<)?Lm;c6Tn8d@gV8kVc?5<ej*s#^<F55IM@56!hK5#kV^<WGG_5Q*hI5Q*kD62<eE5Q="K5Q=[_
+<W6%o<<-"p;u'Dj<W6#%='/U.=Sl2"=T)D&=Sc+n=T)D%=Su7u=T27q;Z9Mp;H$Nk;Z0Go;H$Qo
+;ts8h;>a5j:]=)g:&n)_:][Mori-4(XK8P+Y-+u-YQD)8ZMq03['d=@[f<f:\Gj&=\cBA@]E5d\
+^AbkK^qmkd_?%Qmrl+oW"in^*aiV^)b;%5ccHab^d*^7he'umte^i@(f\,!4gYCW@hV[8LiSrkW
+j5f=ak3(sml0@R"m-O--rpL*]naZ2@oCMVRp&Facp\jmeq>^<gqu6NkrUg)?s+14&s*t~>
+JcC<$JcD#8k5P5Uqu$9erqcWir:p<ds7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@grhfaprM]grVuERnV>d:iU]7%jTqJ'NrLX%[!1a%Xs-itT#\]ZtM56rDW2KTm
+(8Rh)\[f5Z[^NTNZa6sBYct=6Xf\[io9LDFG("abIqN5#@UWSL?t!DM?sd2I?t!GPAn>O`A,Kg8
+@4Ykq?t5;/\[SrP['[0GZ*LU;XK/A&WMc/IUU?GEO)f;\CM@^+EH$)HH@^eKLA6N(L@g6$LAlo*
+L'!'^K`-N&JcC9!JcC?%Jc:/oJGt&uIK=hErI"NirHeBeq0Mmas*Xfms*=Zjr-86e!-nKg!dK!9
+rH\KkI//-fHN&<hHiA?jHhD^^HiABnI=2!?qgA*a!.=Zl)Ld*ZH?sg\GBS1RF)uAEEd;b?Bl%R&
+E,TT"rE]G0!+#G+r*B8-rEoP1!O8s0Zi=>/>l7n*>lIt-=oMY*=TM]1q-*f$s2G&ZrlG&[s2tA4
+qk!h[!204_rM'7as.BIfTV8(WUAq%eV>@(fV>mFlVs^DaVp3K1qof#^rQ4rZs3(;^o?.3Zc-?13
+rQY8cs3:SfrlY;arhfdqWW&muX/u<&s/l@*rilF-!4)U1s0Md6rjMj9!4`$=s186Brk&<G^:sT]
+!PlPN_Z.LR`;[^V`lJ)"!QiL`b7;b@cHab^d*^7he'umtf)F8Hf\,!4gYCW@hV[8LiSrnXjQ5Od
+kND'nl0@U$m-X3.n*fc8nc&(\oCV\So`Fj]p\jmeq>U6gqu-HkrUg)?s+14&s*t~>
+JcC<$JcD#8k5P5Uqu$9erqcWir:p<ds7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@gre^K/re^Q/r.b-'re1*"s+1>LH@0`3KD^B=K7\c0\[f5Z[^NTNZa6sBYct=6
+Xf\[Qo6q0U>$YHA@TQZ7=BAU+=B>E&!a&K(rDs>.='&F'='&F(<`])t"EKH[Mhq@fre:B*s+;2@
+JUr8uDfU5ZEcH86An>I]A7T7`BPVI*FT$=`G'.s)FoZ[TG5-4[F9$C\ErU1\ErL(YDuahRE;sqW
+EXHf,EcH,>EcH)<E;XYOD?+VHDY@rGD?4Tlq/-(Js(qjSD/F1gD>A)JDuOVRDZ"GKDZ4SRDZ=YT
+DujlprbVXQp2BnIrGVUQ!cDjmrbW9aCM[d#BkV3nC1q$b@UN\U@UT16s&/hprDNVlr)3Jjr_i\n
+s,6l8!)rbms&8_k"Ahrm:f70hr_`Dds-*MKqNh/HnV7+#rJC?+s,$Q/rJUB,l&,Y&R@0H8Qhm'L
+Qhcs,Qi33NQ'D9G!N<!sWWB0%riQ4'!3cC+s02R0rj2X3!4Dg7s0i!<rji'?s1A9C!kl=^rkAKL
+_>_=O_Z7XS`<"!!rl>,^b5TQobg"GYcd0tcdF-LneCE.Lf-K#%g=k<:h;-rFi8ESRj5]4^k2tji
+kiq?slg4!*mI'H3nF5uIncJFTo`"Lbp@n=[q#C0hqY^6hr;HTdrdk*#s4I@%~>
+JcC<$JcD#8k5P5Uqu$9erqcWir:p<ds7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@gs&B)!<VKJm;uT_s<EB&us&Sqqr`9&!"B6gB92>I`rDFJ3;c6Rm\[f5Z[^NTN
+Za6sBYct=6Xf\[&o2>iE.P!&&/NEVo%mrWK6:+%*5X@\&5X.Lt55mbr5!M7s5<_7o4$?&+91hcI
+8kMZH84Z6A84H$;7R\pm5<^qo852oS9hS=^:&dri:K:<k;>=#h;<1UT;>a8d:]4)j;,I6h!)WPi
+s%r;as%r_mrD3Mj:Amug:'+3f;#X8j;#=&_;#jGl:B45i:]F2f:\R]a:]4,Y:ZkRO;&`>,:Jjqe
+;,U4h;,gFl;H$Fa8kDWI9gh?55!Jd*s#g<EqEOa=s&K&!!C9!K5PRMC5la7N62<eE5Q="K5Q=[a
+<E</s<VBAk<!$'!<;T\n<rZ8#=Su8#=T)D&=T)=g=Sl1u=T27p;Z9Mp;H$Nk;Z0Go;H-Wp;ts8h
+;>a5j:]=&i:/=[[;#[?nW2]cr!NW=$XoGO(YPtd+YlM*/Zi@B4[JmW7[fEr;\c98@]DfGE]tV5[
+^B)-drke]Q!6"lU!QN1Za8sE*rlYeqc-FV\cd:(edaQ^qe^j`O,hUf(g=tE=h;7&Ii8N\Uj5f=a
+k3(pkl07L!m-O-,mdKW6nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVcBfJcC<$f`-I~>
+JcC<$JcD):k5P2Tr;??erqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqa9hqn@g!8RILs/>sqs/#dmrM9Ffs.]Od!2'1\rgbR0S"#k8R@'A.QBRe=UnjiaW2Q\o
+WMZMg\$i`Q['R*EZ*:I9Y-"h-X/_HXQ48:dI=6HjB5"EKW23j-ra?7D?=.#I@:*JUA7]7]A,Kg9
+@4bqs?t5G3\[]&R['[0GZEg^<XK/A&WiDS]XF,kcEcc;<C2S!1Ecu\TJqf#6r.b$&reC*$!/CK,
+s+^N,!ec2Yrdt#u!.b$!!.b&uq1/En!IfIpI/A9hHMi'aHMW!gI/eQmHMi$^H2N!aHi89jHiJKk
+Hi89iHhMd\HN8HkHhr-aHiJKkIK+cpJ,X^-H?jXWG'A"IFE;PIBkqBsD16MDNrE>a?3":/>QJ&6
+r*B8-!af>Br*BB/rj2W1r*9/*r*95*#[1A7>?b65>$Lf+s&oBA!6>)[s2k51qO[_Z!201^rhBCc
+r1O(`r1X4eV#7(cVYm7jVZ*L_VZ3RmblGubbQ#``ans6\bPTHRb5fcbc2Q#ec2>leblGudb5nH:
+rhfdqWW&n&X/rD)Xfeh1rilF-!4)U1s0Vg6rjDm;\@DOK!kQ"Urk&<G^:sT]!PlPN_Z.L``5T^8
+`lH0AaiV]KbKS61c6gladF$CkeC<%"f@S[.g=k<9gtgfChr*GOioB([jlY^gkiq?sli-5OmI'uB
+!V#XYncJFTo`"O`p&Ojcq#:*hqY^6hr;HTcrdk*#s4RF&~>
+JcC<$JcD):k5P2Tr;??erqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqa9hqn@g!o/WhrJCT3reg`4r.t<+qh>$&q1As)K7ec,FF-i9re(-%rdtim[^NTNZa6sB
+Yct=6Xf\\*WdXPh!FAt/?3t%A<e5gMHWX<LrDru"r`9/%='5E&"^"i,=&rB!<<RB%N/NPlL]<&1
+L4k54rdkE,IsZ?aJSB+JralRL@q0%\Anc!uEclMHr,i'aF`mV*rcRdTpiQX[F*%;#s)\0Zs)A!V
+qf)OS"EJL%EcV(ts)@jRm;DW7qJQ+Grb_^QrbMgVDJj<.DJa7dD?=`oDZ+DPDZ"GKDZ4SOD?+VS
+DZ=SRDYJ)IDZ"GLE!^N%D/O0,CM[d%rb2LMBkh*dra?"HA7BIU;H!KmrDNVlr)3JjrDNSm!/pi8
+qGR>lqGIGn:f1(dr)3MkpJCmS!1!JJrJ:$"s+p]3pk\s,regZ2s,-c5p583ps,?oE!1<GGqNq8L
+q3L`@rg*&?s-EYL!Mu[mVZE`qri-4(XK8P+Y-+u-YlCs.ZMq31[/[Q5[K<qJ\Gj#?]">TR]E5d\
+^AbkJ^qp#es2,>b`Poj:a2l?Dai_fMbg$.4-I:&ddF-LneCE.%f@\d1g=tB;h;-rFi8ESRj5]4^
+k2tjjl07L!rp0[Qmf)YUnF?MK!qZ'Vrq6<b!;HHerqZTjr;6HjrVc?eJcC<$g&HR~>
+JcC<$JcD):k5P2Tr;??erqcWir:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqa9hqn@g!Sg]Q;ufko<;ohr<;TYq<qfSo<rH#%<)QR]91]"Yr_ibqs&0S/\$i`Q['R*E
+Z*:I9Y-"h-X/](j;[Y-+.kN>*3&X,i5X,07r]pTP5sbK:)*pJO5!D1r5<_:r5X.Fr4?G\q91qlK
+8P2VS8HVLR84`_L#t6[75!;A)7nleV9a"3c:/4jc;>F,h;<:^U;>sDe:]4)n;,C(d;,I0fr_W5a
+r_WVlrD<Mhr_NMg!`)Whr_NPjr(d;hpJCoeq+q#c!)WViqG@#arD;rY!DlSV;#!lf;#X6-;,C4i
+;,^7f;cQ^n8P2NF84Gs63'KJg55[SD4T@S@5PI>A<W6&!5l<k@5lX+M6N0:H5l<hN5sIS5<)lut
+<<-"j;uTbs<r#bn<WH5#=Su8"=T)A&=T)=k=S>hr=Su+n;Z9Mp;H$Nk;Z0Go;H-Wp;ts8h;>a5j
+:B!rg:/CU\!Mu[mVZE`qri-4(XK8P+Y-+u-YlCs.ZMq31[/[Q5[K<qJ\Gj#?]">TR]E5d\^AbkJ
+^qp#es2,>b`Poj:a2l?Dai_fMbg$.4-I:&ddF-LneCE.%f@\d1g=tB;h;-rFi8ESRj5]4^k2tjj
+l07L!rp0[Qmf)YUnF?MK!qZ'Vrq6<b!;HHerqZTjr;6HjrVc?eJcC<$g&HR~>
+JcC<$JcD/<jSo#Squ$9erqcWir:p9cs7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtV_("fA2qVPU-gV#@(gU&q$\TDP5[SH>=NS,SiVRJ`BVJsoc<Unjibr2:4'
+V7*e=Za6sBYct=6Xf\\*Wq;SjH$t*gI:m2oXf/+oTU_C:@:!;IrEok@AS#C_@q/sG@LHs\?t!TB
+\[f5XZaB_<)mZ`RYHFq,XGWF,\sA/7FEDJ?CMn-3EclVWKDpT)LAuu+LA?W(LA$B+L4t;6KnfS\
+s+CB)rIXots+(*"rI=WnrdXrs!.Fcmqg89fr-A*aqKi9kH[Ga<!."Ker-A<grd"Kh"F5<?H[>[<
+qK`0hI/A9iHMr3aHMMpfI/J?fI.r!fI/JBmIf"WpJ/`i[H[0mYGB\4QE-?AKCM7HsCi+E<DN%k-
+?=!M7s'#J.r*B;."(,GD?i471ZN%63>[@53rE]>+r`]Y3=^#$6=]np4q-*f$s2P)ZqjmSTrh'4`
+qP!n_s.T=_s.TCc!McIgV>6tgV<FcWVp,+a!6kAarlY2]qo\r^qo\NR!6kDds3CPer6G>e#L(B7
+Unji`VZ*IoW2]crs/Q.$riH7)YHRr0!jT&:rj)[5[C-"Bs0i!<rji'?!5&6C!kl=^rkAKL_>_:P
+_o2Pn!QN1Za?I_gbKJ,Sc-FV\d*^7he'umtf%8O+g"P07gtgfChr*GOioB([jlY^gkih9qlKdg'
+mI'E2n*ol;o()DDo`"O`pAamcq#C0iqYU0hr;HTcrdk*#s4RF&~>
+JcC<$JcD/<jSo#Squ$9erqcWir:p9cs7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtVdbre^Z4re^W1s+gW/q1\g$pO`Htrdb,_H;ONlrIbf9JqLM>['R*EZ*:I9
+Y-"h-X/bf@%pWCI?=6i8JqAGuH?XLREr9#=<WQ9(pfIJr$!C8.<`OX.N/NSmM#W/QL4k23JqAQ)
+C2e0KE,g)6B4b[a@qB4`BkhU,F`heKF`_a(Fnp4[Fn9eOFoQR`F8^.ZF8g1ZE;skRE;jhZEcH)>
+qf2XTqetk>pMKbErGDRPrb_XPrG2OPDJoAhqJH:Orbh[O!,h^QnS\AFr,21GrGMLNqJcFR")r0q
+DuOSdChmg"BPM3p@q&qV@Uj%]@Vo$B;uKVn;>a>j;>jDk;ZMaTN;6?O;u0Ap;,C+e;#F5j;>3oe
+PQ@&8reLH.nV?ams,$c5rJCH0s,6]1l&,S$R/NEQR.ZgBQiNKKQM-[EQLL7@Q3EPLUnsobrhfdq
+WW&ptWrT7#XTGZ/YPta-Z*L\7ZN@MA[JmW7[fEr;\c95@]DfGE]tV5[^B)-drk\]R`;[^V`lJ)"
+50:sjbKS5UcHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjkiq?slg4!*mdBQ4nF?&>
+o(2JFrq6<bs7cKes7u]kqtpBjrVc?eJcC<$g&HR~>
+JcC<$JcD/<jSo#Squ$9erqcWir:p9cs7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtVd,r_r_or_reqrDikupJh8q<E/rt!*&qq"$&tC;Z0Jl;A3#.;H($3['R*E
+Z*:I9Y-"h-X/bej!%Rt!(G7X(6U="%4?P\e3C,tt6:!q'69mb!55mbQ5!M7s5WM"i4?`[:"A23V
+8kT(S"%YpQ8H)'b2)7<[1Iao1:JCa^#u42i9hnG`;,L0c;>F,h;<1UT;>sDe:\mo`;>sDb;>j>k
+;>sAn:JO[a:]=)i:Jh!c!)WPg!)WVks&/em!)WJe!)EGfqb[&`r_W&Zk>:qNqbR\r:f1%f:K(1i
+<)lmqr^mGf91_T@6T.(kpc\I<pHARWr`0%c5l3e@5lX+M6N0:H5l<hP5sIS5<)lsu<:a&g<;oqq
+<Vfbr=8l;%=85nt=TDS&=8uD&=o)7j<rcA";u'>j;$'Wo;u9Jk;$'Zq<;ohk;Z0Jk:]X?er_3Dg
+:\dieV#R7kVZ*IoW2]crs/Q.$riH7)YHRr0!jT&:rj)[5[C-"Bs0i!<rji'?!5&6C!kl=^rkAKL
+_>_:P_o2Pn!QN1Za?I_gbKJ,Sc-FV\d*^7he'umtf%8O+g"P07gtgfChr*GOioB([jlY^gkih9q
+lKdg'mI'E2n*ol;o()DDo`"O`pAamcq#C0iqYU0hr;HTcrdk*#s4RF&~>
+JcC<$JcD5>jSnuRqu$9erVHNhr:p<ds7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnn.@hVI#CgtUP[Vl0Nks/,pqV5=0er1a:dT`1S\T)Y>^S=BJG!13PL*L`R8VPU/fVl6Sn
+WMZMuZa-j?Yck43XfSS'Wi;9XQ61BpH[L0QB:c6)Vl$5ZR$O#!MM?\1H?j^HAS#C^@q#@cs*t2\
+?t!UF\HB@LZaB_<)mZ`RYcb(/X.YiM_h3u/FDu/6DfTo?Fa/LjK_pH)L4t?\LA6Q&LAcl4L51P=
+LPLV<re13'!JH+)K)1&tJH(2uJ,=cqJ,XlsIJnQiHi89gH22d_HNAM@rd+Tir-80cs*FWhs*=`l
+H@#O:r-JBgs*=`nI!YL5rd"Qkq0Mj`s*X`kqgA-bs*X`ms*jlqrIFot%siSJG^4FTG'%eKGB7tC
+D#S/RCiXQ6?=$q9>lS".>l7n-?N4C4?iXR3?N7>2ZNFH<>[@;5rE]>+r`]Y3=^#$6=]np4q-*f$
+s2G&ZqjmSTrLa+_qk="`rh97_rh9:b!McIhV>[:hVs(#SblGucbQ#`_ans6\bPTHRb5fcbc2Z)e
+c2Z)ebm;P:U8+N[V5:'gVZE`qri6"!!3H1%s/l@*rilF-!4)U1s0Md6rjMj9!4`$=!kQ"Urk&9F
+^Abk]^qmk(_Sa:0`Poj;a2l?Db0.uPc2Q!7cd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ5Od
+kNM0plKeH9#4:jIn*oi:rpg*]o_nFap@n=[q#C0iqYU0hr;HTcrdk*#s4RF&~>
+JcC<$JcD5>jSnuRqu$9erVHNhr:p<ds7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnn%=hVI#CgtUQ^MZ/J3MZ8P4M#W80LAQ]&K_^9"K)C0'H@/tMKS0/T&V>YAZa-j?Yck43
+XfSS'Wi:F@IMlBm?!^i>=*]CHI!U*^FE2>:BOtX]?!LQ8qcEf-$XmLT<E3(#Mi<UQM>i>2K`Qp^
+rdtr;JUqrdHAuccG%PAr@q9.^BPM=%ErL1\FoQObF`_a)Fng.YFo$7bF`qqNG'<Y's)\6^r,N'a
+EcQ/>E,]`6qf)IQ!-8$X")r7"E;FM?DYS)EDZ4MQDZ+GPD?+PQD#\>PDYn;JDZ=YSDZ+DPDZ"GC
+DZ=YQDY\5NDuahSD?4ZnrGVRPrc.jT%W?6&Ci+$)C2.EqBkM-grF,k=ARo9L;uKVn;>X8j;>jDk
+;ZMaTN:BdK;,C+e;#F5j;>3oePQ7$JL]*%uL\?Q'M>rJ4L]E;1MZ8V1MWp&qR/iWIQhm'LQhcs@
+Qi<<?QiE?UU8+N[V5:'gVZE`qri6"!!3H1%s/l@*rilF-!4)U1s0Md6rjMj9!4`$=!kQ"Urk&9F
+^Abk]^qmk(_Sa:0`Poj;a2l?Db0.uPc2Q!7cd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ5Od
+kNM0plKeH9#4:jIn*oi:rpg*]o_nFap@n=[q#C0iqYU0hr;HTcrdk*#s4RF&~>
+JcC<$JcD5>jSnuRqu$9erVHNhr:p<ds7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnn.@hVI#CgtUO]<)iiqr)E\prD`brrDrkss&T%ts&B"uqG[Vj91i&Z;>jDm<<#nsZOO4F
+Yct=6Xf\\*WiE$rpJW.`-nQu%3&Wue5sIIq4$,G^3&E?F0J=t/5<qCr5<h@11^,[!4$5Z%r_!5_
+r_!/]"%YpP8H)'a1I")f77TpF9`@cc:B+)q:/b"d:f1(d;#X>l;?0Sh;Z0Jh;?0S];?B]l;"d]^
+;#4&e;"dcb;#aDl:]aEf:B"&g:'"-ep.kZbr_`\nr)*8cs%`JfrD<2`r_NVk;"7?F;"mic;#aB'
+:esn`:Jjtf;,L4g;cHUnr^mAd9M%T?69b0-qEO^<!*0#!!C9!J5PRJD62j4N62<eD56X><5?(T_
+n5B?e<W6%t<W?,!=8c2"=7o\q=o2=t=oMM(='5&qrD`_oqGR8h!`DrqqbmAi!`N&tr_rSirDEMi
+!DcJi9`\!bqG7BjUSO]^V5F6i!N<!sWrK+"XT#@%XoP[)YlCs.ZMq31ZiIN5[f<f:\Gj#?]">TR
+]E,^[rkB/__84"*_o'F3`Q#s=aN2KGbKJ,Srluh9d*^7he'umtf%8O+g"P07gtgfChr*GOioB([
+jlY^gkiq?sli-5TmI'H3nF5uIncA@SrUg6cp\4X]s7u]kqtpBjrVc?eJcC<$g&HR~>
+JcC<$JcD;@jSnuRqu$6drqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+irS/urnn+?hVI#CgtUQ:g&7cNVl$>fV>d:hUB70`T`1S\T)Y>^S=BJGs-WhSqj7SMRolP`Uo!se%
+]$D8Yct=6XfSS'Wi;qppm)tJFa\XbI;!2oWMcYiSX>_.Nf/XEIsQ?_Fb#!kIt@TJ#(M5WJm_tsr
+j`-?[Bm7>ZQ6?VZ*:C5XJhn[Y*Os5O)o>XDfTo?G'S^mKnY25qh5$)re:?+s+^`3LPLV>r.b0*s
++U]4L51P=L&Qc'K`QjZrdsutr.+]pr.+`qrdOfnq0W'drH\3bq0N-iHiA<kH2DjcH2`-dH2i3iH
+i/3hH2i3jHN8BaHh_pXHhr-fHiJKmHiJKkIK+coJ,XusIfk4NH[>[:"a,$5FE;F#FpVr!BkqO2E
+Gf)hrETA,!*oJ.ra,V3s'Ph6r*KB.!OH&1?2\%,?2Rt,>6nD8>$G05=^#&*>5q_-`lH,%rgikVr
+h'1_qP!k^!29@arLs4brhBIhrh]RjqkjFkr29"\prrZZs2t;^qTAi]qo\QSs31Gds3CVgrQb>cs
+.K[lUSFW\V5:'gV['0"WN)u!X/u<&s/l@*rilF-!4)U1s0Md6rjMj9!4`$=!kQ"Urk&9F^AbkJ^
+qp#e!Q2kT`@]*MaN2KGbKJ,Rc-FV\d*^7he'umtf%8O+g"P07h;-rFi8ESRj5]4^k2tjjrojUOl
+g4!*mf)YUnF?MK!qZ'Vrq6<b!;HHes7uZjr;6HjrVcBfJcC<$g&HR~>
+JcC<$JcD;@jSnuRqu$6drqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+irS/urnn.@hVI#CgtUQ:fo#ccreg`4reLQ0rJ(6(qh4ctrIXot!ciWarIb$$%tfJ>Z*:I9Y-"e+
+WiE%sVtb]`>Zk?=?XQr9Jpr)nH?XIODes-"@piVI>$59C@:<YS@fBjDAn4nA<f;oqMi%Fhs+LK.
+L&HW1JU2K^JT>dYG\@"d$"da^C2J!3FEDU&F9?Z-FERS)rcS6a"Eem2Fa!\*qK<6hG'8"OG'.qL
+F`hg*FTQZ+F8BqVEW:"XDu4MOE<(%YEW:"XEVXP?DYe5EDZ=SQDZ+GPD?+PQD#%rED?=`oDYn;L
+Ds;08DuXeTDuX_TDZF\SDu+GPEW'kVE>`e:Df0E1D/F')Bk_<qBP1d_@:E\ZA78D8r_i\lqbmDj
+rDNSms,-r;ND]7E"Aqum;,I6i!Dubo;>3ljPa.P1LPPhamt^[oqhb9-!f;ekp58*mq3_5Mp6YTB
+!13MIpQtiEn<a0K#GRugUnji`VZ*IuW2ZbrWiN2%riQ4'!3cC+s02R0rj2X3!4Dg7s0i!<rj`*A
+]=\'T!PQ5H^B)-drk\]R`;[_-`lH0Aai_fMbfn>WcHjkbdF-LneCE.%f@\d1g=tH>hV[8LiSrnX
+jQ5OdkNMp0"mYF?m-X6?mfDqJrpg-^o^r.Us7QHerV6EgrqcQirVZWmo_sFAJcFF'J,~>
+JcC<$JcD;@jSnuRqu$6drqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+irS/urnn+?hVI#CgtUQ:g&4kI<<#nq<!$'#<W,tt<W6%t<W5tq<Vo_t6qTsIr_`Vl&6)S+ZE^X<
+YHG"/X/`2!W2KDh!\>cOr[emF1dODl4[(ti3]B#S2)?p>/hJV.1G\qcs"js:1c7-R3^$:<9*7aX
+91o1T(J%%c7n6$,2*O/[77p<M:JOVZ:/"DX:]=8n;GmEi!`;cjr_`\n!)`_n!)`\mr)*;g!)`,]
+!`;cjp.tQ^qGI5g!DcPd;>a8j;?'Go:JOX_:]=)i:Jga\r_`YmrD<PkqG7)cr(m>hohYN_mSE%C
+q,.)es%rbmr_F>,;,C%`:f((f;,U@m;c6Id8kMZI7RKQ<4o.D;56"X_<WPKOq`jj@!($TNs$6ZN
+5Q!bH62a"Q5X@Y"<)lsbnl#Qg<W,qu<W6%t=8u>#=8l>%=nPnf=oVUr=8>eq;u0Dk;$'Wo;u0Dj
+;$'Zq<;ohl;Z'Dj:]aEf:&[lf:]+&hTa.<eUSO]^V5F6i#H4W$WiE,#XT#@%XoP[)YlCs.ZMq31
+ZiIN5[f<f:\Gj#?]">TR]E,^[rkAKL_>_:P_o2Pn/]PiPaN;TJbKS2TcHab_dF$CkeC<%"f@S[.
+g=k<;h;7&Ii8N\Uj5f=ak3(t-klpA<m-O--rpKmWnc&(\oCV\Sp&F^cp\jmeq>U6gqu-HkrUg)?
+s+14's*t~>
+JcC<$JcDABjSnuRqY^-crqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp13^lK[Wuki_-kk2k[b
+j5].Xrnmh7hYu=7gtUQ:g"?5"rh]UirhKLf!29=_qk!hY#+V0PR[KS2r0dGL#+J\cVPU/frMU1)
+VQd8,Xf\\*WiE%sVtlVoI<KpbI=>a>Xf87qURmm>Q][/\KRS:IGQW,=J:@HH$@[PXJ72hqVRa7H
+rNuU2!4)U/'X+WuS!(FKLQdpDFE28=EccPOKS98Ws+L-#reCH.!JZC)LAlu*L&cr+K`$N(K`6T!
+JbsurJ,FirJ,OipI//-fHMr-bHMMmgI!bj=!."Kerd"Hgqg&3frd4Qhr-8BjH[C)3HhVjWHi&3g
+Hhr-fIK+coJ,OosJ,Fg5I!^-bH?jXXG][nIF*;>6CMIU#E,gkCr`oJ-s'5P/ra,V3s'Ph6r*KB.
+!OH&1?2e+-?2In+>6nD8=^,'4=^,,+>5qb*`WF1_SbSfTTDkM\U&C_cT`Cb^U&UkdUB%+hV>[:j
+VuN^kVt[(fVuERebQ,icao]c/b5KHZb5]Z^b4EgTbl>ofcMl)dcMu/hbl=@9U&UheU].%iV5F6i
+!iW)tri-%#XK;E'!j8`1ricI/ZEjJ9#ILnH[^NZS\Gj$<]">Se]Y2"m^V@S"_8=(,`5KX6`lH0A
+ai_fMbfn>WcHjkbdF-Lne^i@(f\,!4gYCW@hV[8LiSrnXjQ5OdkNM0plKdg'mHs?1n*ol;o()DD
+o`"O`pAamdq#:*hqY^6hr;HTcrdk*#s4[L'~>
+JcC<$JcDABjSnuRqY^-crqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp13^lK[Wuki_-kk2k[b
+j5].Xrnmh7hYu=7gtUQ:g"?7[s,-f4s+p]1rJ(<*q1SWtq1AKp"aX!nK7nmSKFEI:YHG"0XK/A$
+WMl`jINDj">[CfH<E=^$I!U*`FE2>;BP:pb?sHo?>%(lK@JjU7AH,X5<e$'eMi%Fhs+LN/KnTGX
+&o2B*MK!KYHY6u&AS5RgCM\!3r,hs[rcA-_qfMg[s)nEcG5-4XG5QI_G5cUiFEM_JF`heJF8KtY
+EH;"ts)7sVr,DCMs)A!Xq/>Y<qJGtE!,_[Prb_XP!,_^O!GuZMD>J,ODf0IjD#eJQDs2*7DuXeQ
+DuOYRDu=SREVsbUEVsheDf0H0DJa3+C2%?qB5;&V@KU+N@rM?Er)*Air_`VlrDW`S",r4:;>a;l
+;u';t;,C+e:f1+g;,[BjpJ;$XQ'P4$L]*%uL\ci%M>`81M=ui(MZA_1MuJ\7MZB.>R/iWJQhm'L
+Qhcs@Qi36?QiE`YU&UheU].%iV5F6i!iW)tri-%#XK;E'!j8`1ricI/ZEjJ9#ILnH[^NZS\Gj$<
+]">Se]Y2"m^V@S"_8=(,`5KX6`lH0Aai_fMbfn>WcHjkbdF-Lne^i@(f\,!4gYCW@hV[8LiSrnX
+jQ5OdkNM0plKdg'mHs?1n*ol;o()DDo`"O`pAamdq#:*hqY^6hr;HTcrdk*#s4[L'~>
+JcC<$JcDABjSnuRqY^-crqcWiqtU3cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp13^lK[Wuki_-kk2k[b
+j5].Xrnmh7hYu=7gtUQ:g"?7%pf%5nq,RJqr)WbrrD`_qq,@Mi78QiZ;>jDm<")^0YHG"0XK/A$
+WMl`k;ZfuM-nG9K+u_AF5sIOs4?GV`3&ENK0etC6/1WG21GUaB1c$sF1Hdc_rC[,^r_*5^*_8dj
+84PQk5!gto7nl`S:/=VY9i+S\<)?Fh;c?Rkr_NSlr_WVlqbdDkrDNMir)3Mkm8<p]r(dAj:Jh!c
+qb[,dr_NVk;#!ob;#aAq:esk^:&Rle:'"-epJ1ie;,R9irD<PkqbR/cmSEgYm8)qBq,.)es%rho
+:J^jar_F2(;H$Fh;H$Ur;bB\S8kViF75mC/56!eG55RS=56"X_<WYQP5lEqA5QF+L6N9=P5X503
+!($QJ#=(R?5?(W`61RqT<)rfrpfIAqs&o%tnQ>iooiLle!)r_lr_W_p;cEQkrD<Vo;cN]oq,7,f
+rD3Jir([5frD<Nes.TIe!2KOh!Mu[mVZNfrWW&n!X/rE%XTGZ/YPta-Z*L\7ZNmkF[C3NQ\%)FJ
+<4]]R]Y(qk^;%Fu^qmn)_o0L4`Q#s>aN;TJbKS2TcHab_dF$CkeCE.%f@\d1g=tE=h;7&Ii8N\U
+j5f=ak3(sml0@U$m-X3.n*fc9nac8BoCW%Ts7ZKerqQKgs8)ZjrVZWmoDX=@JcFI(J,~>
+JcC<$JcDDCjo5&Rqu$3crqcThr:p<drq?<`!qc*UrUL$[nF6GG!Uf@Sm/QA]lKRQski_*jjlGL_
+j5T%si!\H!h;-lAgY1B7f[p,"rh]Ogs.]XiTqV@Uqk!hYs-s1[R@0HAR0&bDRJN9WQ^h0SVPU/g
+W2]cps/cR.X/`2!W2HPjqN`+HI!pBlBP;%ZW2?D`R[BG)Mhct:H[Bs[FanpjrI5'$Jq\ed?t,)o
+\H');[/[K3Z4sOHXf%\XXd>!;G&q_CDfKlFH\-qHL&Zi"L%C&uL\c`*L&H]'L&Zf-K7\^RJH1<$
+JbsurJ,OorJ,XosIK+]iHi89iH2)^^HiJHnHiA?hGlE!dH3/A<HN&3iH38M?H[>[:!.+Qg!.+Qi
+"FPQCI!kj=pNlFXqL&3fqL&3hs*jips+(&tr.+cts*PK,H$FRXG'A%GF`qS;C1h9rF`MC!>lS%.
+>lJ%.?N4C4?iXR3?N.52ZX!K8s'5J-qcs,)#[1A6>?Y04>?go,s&oBA!lnDDpn%GVrh0.^rM'%[
+rM'=e!MlRiVZ3RnW;3@dVZ!FmV=i%4bPfT`b5f]aans6\bPTHRbPTN^c2>lec2X@?T:hjNTq\<W
+rhKRkVZ*LnVuWgrWrK+"XT#='Y-5&.YQD)8ZMq08['d<M[^W`Urj`'@]DfGD]tXK\!PlPN_DK0K
+`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-uHi8N\Uj5f=ak3(sml0@U6liukFn*fc8
+nc&([oCW%Ts7ZKerV6Egs8)Wirqu`noDX=@JcFI(J,~>
+JcC<$JcDDCjo5&Rqu$3crqcThr:p<drq?<`!qc*UrUL$[nF6GG!Uf@Sm/QA]lKRQski_*jjlGL_
+j5T%si!nT#h;-lAgY1B7f[kt:reg]3reLQ0rJ(<*pk8Qtpk&?n"+Y_qK)UE#KF<F7XfSS'Wi;qp
+Vl'<>**ccU?=?o;<e5^IH['XRE,B<%A7K"R>?Y0=@U]7Fs'l7DAnG%C<c7nq!/gc3s+M;EKnP)2
+KR%]`JTGp_AnP[f@qB@iCiON;rH/'\!-J3]pN6"Lqf_aW!d&R-rH/'\qf2^WErC"XDuahSE;snX
+E;OYSDujrtq/>Y<qJGe@!,_XO!,_[NqJH+Is)7pTs(qjSD/F1iDs;07DZFbPDuX_RDu=SREW'kV
+EVskVEs6N$Df'B.rbDUNBP_A]@glgT@Us"Y;Gp@h:f1*f;Z9Pl;Z0MtMi<US;,R9is&8_k#uOMr
+;,C+f;Gg?k;>3liPa.P1:]6+<L\uu%M>W/0M>)o)MuSb2MuAV7MZ9(=R/iWOQiEHPQhm'LQhcs@
+Qi36AQiEW^T:hjNTq\<WrhKRkVZ*LnVuWgrWrK+"XT#='Y-5&.YQD)8ZMq08['d<M[^W`Urj`'@
+]DfGD]tXK\!PlPN_DK0K`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-uHi8N\Uj5f=a
+k3(sml0@U6liukFn*fc8nc&([oCW%Ts7ZKerV6Egs8)Wirqu`noDX=@JcFI(J,~>
+JcC<$JcDDCjo5&Rqu$3crqcThr:p<drq?<`!qc*UrUL$[nF6GG!Uf@Sm/QA]lKRQski_*jjlGL_
+j5T%si!nT#h;-lAgY1B7f[j&#q,I;moN(lis&Anrs&Atrr)<_r91SqXr_a5)<)]p$XK/A$WMl_m
+VGm@k!%\%"&hZ.&2a9Pk5<M%i3&`WN1,:R;r[\d>1G^dB1GgsF2)@EX4[_t:91_`K9E%Kj84Q-?
+7l<Fn4Z,c%r_Ebo9heAV;,:0j;?'Gq;,U=j;>O,h;>a>k;>sJk;>X8j;=.6];>a5h;#O2e;#4&h
+;#a;k;#!ob;#aDm:BF9c:&Rle:B+/b:B=9hr)*Yp;Gp@grD3;cohPQaqbR2fmSE%Cpeh#es%rbm
+r_NGgr_`Yk$W0\s;Gg4g;HHgk9E%Nc9LD3:r]^?Fs$$<EpHJUWs&T+ar]g*A#=1[D6:!n&5Q!bH
+62a"R5X@Y"<)lsb5Q4R]<;9An<)lrq<r,no=T;P'=T;J#=RfPo=SPtt<q]Jm;u'>k;$'Wo;u9Jk
+;$'Wo<;fbk;Z9Pj:]O;h:(0op:S+/MTV/!PU8+L_U]I<hrhodp!3,sts/Q.$riH7)YHRr0!jT&:
+rj)j:[C*HO\$rmH\H0:Rrk&9F^AbkJ^qp#e1rI8N`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\d1
+g=tE=h;@/KiSrnXjQ5OdkNM0plKeH9#4:jIn*oi:rpg*]o`"O`pAamcq#C0iqYU0hr;HTcrdk*#
+s4[L'~>
+JcC<$JcDDCk5P/Squ$3crVHNhr:p9cs7ZEas7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#dki_*jjlPR`
+j5T%Vi8EMLh;-lAgY1B7f[naSV?!IjV#R4iU&q$]T_tGZT)YA]S,o+Jr0dSPs-`_Ns-FIi=/Vpl
+Vl-JkW2Q\sX/`2!W2HPjV#6MnG]\=\I:m2(XJi(nSsbt3P)G-MJ:%9?%sNSSIXlouIt*$&JV7H?
+F8i]M\,Nc7Zi76EYcj"TNk1L3RZV]6Ec?#>Fa8RlK_L3#K_C,kLAlr1L4tA9re:E,rIk*&s+:<'
+r.+j"rIP!!!eGlPrI=crrdXlqrd=copj;scs*=Bcq0W-h"+,??H2W!eH2)^bH2W'fH2i3gH2`-g
+Hi8?iHh_pXHi&3gHhr-fIK+clIfP#uJ,=cqJc:3"Hjb7FH$FOWF`VYICi')c$#G!/Dd6OO>?kG4
+?2e11?iOL6?i47/Z2e//>l\.,?2In+>6nD8=^,'4=^,,,>5h\)`WF1_<rS]iSc>;[TDbG\U&C_[
+U&C\cU].%hV>R4_VtHneV=Vn2bPfT`b5f]]aoBN`bPTHRbP]T^c2>ifc(4j*#G7Z^TqS3TU].%o
+V5C,fVl6Pnri6"!!3H1%s/l@*rilF-!4)U1#ILnH[^NZS\Gj#>]"@sS6+t"I^VI\%_SX4/`Poj;
+aN2KGbKJ,ScHab_dF$CkeC<%"f@S^0g=tE=h;7&Ii8N\Uj5f=ak3(sml0@U$m-X6?mfDqJrpg-^
+o^r.U!quB_rV6Egs8)Wirqu`noDX=@JcFI(J,~>
+JcC<$JcDDCk5P/Squ$3crVHNhr:p9cs7ZEas7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#dki_*jjlPR`
+j5T%Vi8EMLh;-lAgY1B7f[naSMYr>2L]E5.LAlo&K_pDrK)C3!J-1*oK7iuQ$*:2-Wi;qpVl$9f
+IN2Tp?=.&@=&jj$I<p*ZF)l/3B4YR\?!CN:@U`aE@LQaWARo@a<`NLbN/W\oM#W/EL4k54K5>OI
+M/RB\HtR,)AS5XlCiOOqFT$7\FSg.RFRsYPG5ZR`FT6L`F9$I_F96N*F8BqSEW9tXDu=SSE<'tT
+EVseODte,LD>A)FD<u0<D#/#GDZ=VWDJa3+rbVXQrbq%=q/?:PqJZ@Nrbq^Rrc.mUs)IpVrcA'Z
+#B4U"D/O3,D#S/MB4V!Os'c7KA7AG6;,C+er)3MkrDNSm"cJ>!NDWRP;Z9Vj;@-2s:f1%d;Gp@i
+r_`Dd"I,1;:J^tGmt^drpPB*3M2@%EM2D"bqhtH4onrg-rL!DKs-W\Ms-WSJ!LT5LQM-[DQLpLD
+Sc52cT:hjNTq\9VrhKdqVP^8hW2Q]pWrK+"XT#@%XoP[)YlCs.ZMq08['d<M[^W`Urj`'@]DfH/
+]tV7r^qmk(_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@em3gYCW@hV[8LiSrnXjQ5OdkNM0p
+lKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#s4[L'~>
+JcC<$JcDDCk5P/Squ$3crVHNhr:p9cs7ZEas7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#dki_*jjlPR`
+j5T%Vi8EMLh;-lAgY1B7f[naO<;fet<)r`p!*/tur)Nbrr)E_rr)<Pnr_ihi7JTj]<!fY,WiE%s
+Vl-DfrDX2*.k)u"/N5RH5s[_!r]:cQ2`*?G0eb42/hA\31GUaB1c.#f2$lE-5>FjF8kM`Lr^dhq
+7n-$-0g.`V84QBM:JO_]:/=__<;oeq;>sAl;>sGn;>O)h;>X8j;>jDk;>X8j;=.6];>j;h;#O2d
+;#4#k:esk`q,-ub##S2m:JOVYr_NJfs%rGc!DlYh;?9Wkr_NDdm8*^XmSE%Cq,.)es%rho:J^ja
+r)*Jj$rTku;H-Lk<Dumq92,:V#X^pG5!D+m5!Jj.pHJUWs&T+as$-3Br]p]T6:!n&5Q!bH62a"R
+5X@Y"<)lsb5Q+RW;u]hs<W#np=8>tr=TV],=8c7j=oVV(=8Gqt;ta2j;u'>j;?'Pn;>sJl;$'Wo
+<;ohm;ZB\q;?9WkqbR,bs%`Wcrgj@eTV/!PU8"F^U^*`nVPg>jW2]crs/Q.$riQ4'!3cC+s02R0
+rj)j:[C*HO\$rmH\H0:Rrk(P1^;%Fu_84"*_o0O5`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(g"P07
+gtgfChr*GOioB([jlY^gkiq?slg4!*mf)YUnF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjrVc?eJcC<$
+gAc[~>
+JcC<$JcDJEk5P/SqY^*brqcThr:p9cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-'BS<8
+j5T%Vi8EMLh;-lAgY1B7f`'J'VPX3drhBUjTqS-PrL`nWs.01["IkjKR@4&ArgEVMs-NbQ"]p8P
+Vl$BiW!KE&W2HPjV50CUQ54jiI=-EjB4md7W2?5YR$EtrM2$Y2H2`$uJUi6$I=H`pIY33&?smLD
+\H04Jrj;^3'XG*NYDU2f^4qZ@F`__GEH65KIY7WRs+L0$s+L*"re:E,pP/[&#)7hbKnb;8r.P!%
+!eZ)Vr.4m"rdjutrI=fsrI=fqrI"ZnrHeNlrHnKh!."?cpj<$g"+,??H2`'fH1uXbGl`5:rd"Wk
+G^0%0rd+TkqgA<gpj)pfo6^@^r-S9frd=ltI=?Y<J,=cqJc:3"JIR'TI<g$]GBe7ODf9K/rb;XQ
+CiaQT>?h)3s'>V1s'Pe6!+5Y1rNZE.pKdZ$r`]Y3=]ns4>$5'6qHEo%#$Amca&lDEr13kZrh'.^
+rLs.`p7_M\s.fRhs/#XjoV_AZr6+lZ!6b;_s2tDbqT8]YrQ4lXq9/][r6>/b!h5^Nrgj@eTV/!P
+U8"F^U]RBiVZ*IpW2ZcqWWB0%riQ4'!3cC+s02R0rj)X4[JmTB\%&rY\[oDb]Y(qlrkC_6_8=(,
+`5T^8a2l?Db0.uPc-FV\d*^7he'uq!f@S[.g=k<:h;7&Ii8N\Uj5f=ak3(sml0@U$m-X6/n*fc9
+rpg-^o^r.Us7QHerV6EgrqcQirqu`noDX=@JcFI(J,~>
+JcC<$JcDJEk5P/SqY^*brqcThr:p9cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-'BS<8
+j5T%Vi8EMLh;-lAgY1B7f`'M&MYr>2L]rQgL51M<re:0$qLeNordjor"ArreKS0/T#cal&Vl-Dg
+Uj`5k(0t$J?!gu@<d9(@H?aUTEH#],ARo4Tr`]V:@:<YR@UimH@g$@B<E>%WN!"omLkkt`re(r$
+S9Tm/G(=4<AS5RdCM[m/FEMa*FS0_MFT-C_FSBqUG5cX_F9$I_F9$I_FT-@YEr0kUDuahSDuanW
+E;aeQE;FMID?=ZmD>S5HD=)3@D>\5ID>J,RDf0H0Ci')frGUq<q/67Pq/?4Ls)7gSs)IsUs)IpV
+rcA!X(N=;3DJa6,CMIQtB4PI\@preUARfUT;#X>j;Z9Pl;Z0N!Mi<XT:f1+gr_rSi$rKht;,C+f
+;Gg=i;,R'a"dG:<:JXg^L]<2,L\ur/LPYSZs+pZ2q25'-rJ^E-r0[;J!1<VLs-WMHop5H@rKd,C
+!h5^Nrgj@eTV/!PU8"F^U]RBiVZ*IpW2ZcqWWB0%riQ4'!3cC+s02R0rj)X4[JmTB\%&rY\[oDb
+]Y(qlrkC_6_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'uq!f@S[.g=k<:h;7&Ii8N\Uj5f=ak3(sm
+l0@U$m-X6/n*fc9rpg-^o^r.Us7QHerV6EgrqcQirqu`noDX=@JcFI(J,~>
+JcC<$JcDJEk5P/SqY^*brqcThr:p9cs7ZEas7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-'BS<8
+j5T%Vi8EMLh;-lAgY1B7f`'M#<;fhs<<#tq<rZ2!<qKAl<;TVo<;KMr78?`Y;>jB";cKcrW2HPj
+V5.)i<@KII.kE8(2`*]a5<V+k3]K)X2DHsA/hAV,0JP@>1,CgF1GgpE4ZYc&r_"5'91qlK8OuBB
+82X4-5=J+89heDX;,0k\;,U7gr)3Plr_N\o;GpBg:]OAl;?Bcp;Z0Jl;Z0Jj;Z'D[;?0Pl:]4,g
+:\moa;$0Wj:Jgmbq+q8m:esk^9ht[`r_<Mj:f-m^!DlYh;?9Wkr_NDdmSEdXmn`(BqGI5gs%rbm
+r_NDfqbd;g'iRt+;c-Ci;cH[j91_`J85)B<2a'>'55[Y>56"X_<rP>a5P7;@5m9VB5s[b#r'16J
+rBCTR5sRY6<`VIM5lOa[;uKYq<W,tp=85nr=oVS(=8c7i=oVS(=8Gtt;ta/j;ts8i;?'Pn;>sJl
+;#jMn;ts8j;u]_r;,I-crD*Ag!h5^Nrgj@eTV/!PU8"F^U]RBiVZ*IpW2ZcqWWB0%riQ4'!3cC+
+s02R0rj)X4[JmTB\%&rY\[oDb]Y(qlrkC_6_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'uq!f@S[.
+g=k<:h;7&Ii8N\Uj5f=ak3(sml0@U$m-X6/n*fc9rpg-^o^r.Us7QHerV6EgrqcQirqu`noDX=@
+JcFI(J,~>
+JcC<$JcDPGk5P/SqY^*brVHKgr:p9cs7ZEas7H?_rpp*Zs7$'Ws6]mSrp0jTlK[Wuki_s-)!0i=
+j5T(Wi8EMLh;-lAgY1B7f[na+etr>@rM0@crh0:`pn%MVs-s(YrgEhTrL!VQo9]M[rMKUn25dCP
+W2HPiUnjcOQ@!h%H[^ETB4\'@VP0WMQB[DeKn=c"H$FL_It)utIt2uuJV/Pa?t6VD\H');[/[HH
+ZEpj?X-]uSM4A^1FE2AAFa8CfKD^H&K_U9$K_L3#LAlo%LB!&/L&m!]rIt0&rIk?,K7\^RJc13"
+Jc1,sJ,b&uJ,OipI/nZnHN8HlHi86jH22d\HiJHsH[:!`G^045p3Q[_s*=`lG^0%0r-A?ir-\Eh
+pj2LXqL&6gqL&6irdONiq1&HrrIFlu*.i`hH[C'`H$FOUE,]Z2ChdU#Cj0o=>?b?;?![G9s'Pe6
+!+5Y1rNZE.pg*`$r`]Y3=]ns4>$5'6qHEo%#$Ajba&lDErLNt[s.B4^rh94`qk=%_rh9=crM9Fh
+r20+apSRf1q98l^r6#&_!6Y/[rQ>)\q9&NVr65)`rltM4rgNqYSc52cT:hjNTq\9VrhTRj!2fan
+!iW)tri-%#XK;E'!NrX*YlCs.ZMq02['fnA!OoT<\Nd[;]Y(ql^;%Fu_8=(,`5T^8a2l?Db0.uP
+c-FV\d*^:jeC<%"f@S[.g=tE=h;7&Ii8N\UjQ5OdkNM0plKeH9$gmBNn*ol;o()DDo`"O`pAamd
+q#C0hqY^6ir;?Ncrdk*#s4[L'~>
+JcC<$JcDPGk5P/SqY^*brVHKgr:p9cs7ZEas7H?_rpp*Zs7$'Ws6]mSrp0jTlK[Wuki_s-)!0i=
+j5T(Wi8EMLh;-lAgY1B7f[na+er'E_reLZ3L51Q`LAuu(K_^8pK)L8qJ36Y\KS4u2K7noWW2HPi
+Unjc7IU62_?!gu>=&sg!H[0jYEH#`.ARf.S>[(B@@:<VR@UinY@qB4O<E=tUMu\b7M#E&-KEZ^F
+JoGaYrb)7C"__XeDfKgsFT6L`FS0_LFT6L_FSL"VG5cX[F96T,FT$:XEr0kODuanVE;jkRE;FMJ
+D?F`nD/K2gphfD9!,_XMqec(F"`8'lD/F1iDs;08DuXeQDu=MQDuFYSEW'kVEVXVTF89heEGo`5
+Df'B-Ch[QsA7K(YraH(EA7AA3;,R9ir_`VlrDNlXN/`fn;>sJn;ts6!;,C(d:f1+g;,U:h;>3lj
+Pa.M0:JgnCreUH,rJ:H.s+pB*reUN0r/1<.r/CB.qO%)H!1<VLs-WMHop5H@rKd2E!1NnV!M#_[
+Sd1m\TV8'RU8.^`s.o^mrhfgrWN#ls!irE(riH4(YPtd+YlM*/ZN7G@rjDj:\Gj$']">Vf]tV4q
+^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdaQ^qe^i@(f\,!5gtgfChr*GOioB+]k2tjjl07L!rp1$[
+mdKW6naZ2@oCMVRp&Facp\ssfq>U6gqu6NkrUg)?s+14(s*t~>
+JcC<$JcDPGk5P/SqY^*brVHKgr:p9cs7ZEas7H?_rpp*Zs7$'Ws6]mSrp0jTlK[Wuki_s-(Zj`<
+j5T(Wi8EMLh;-lAgY1B7f[na+f)8SH<W5qt<W#nr<<-(j<<-"q;u]hl;ZK;d;?0Sm;CSTDVl-Ae
+Un^pi.k)u!/1ie<1dF8g4Zkbb3&`]M1,(C7/hJb41G^dBr\Og82)@EW5#2)M!(m/_s%35]'LkVM
+5!^tp7o)rV:f'qa:/b%g;cEKis&&em"Ar&p;,R3e!)`_n!E2no;>jDl;>a>i;=7<a;,C%ar)!;e
+qb[,d!)WYjqGHu`s%`\k9ht[`r_<Mj:f-p_s%i\mq,.2irD3;cpeUobq+pudmSDtAqbd;gs&&bk
+q+q&gqbR8irD3i!:f:4h;,U=k9MGFX#Y7WW6:3n!5!Jm/pHJUWs&T+as$-6CrBUTS6:!n&5Q!bH
+62WqS5sRY6<`VIM5ZC_\;uBSp<W6%t=8l8#=8>tr=o2=h=oVS(=8Z+t;ta/j;ts8i;?'Pn;>sJl
+;#jMn;ts8j;u]_r;,I-crD!?]rgNqYSc52cT:hjNTq\9VrhTRj!2fan!iW)tri-%#XK;E'!NrX*
+YlCs.ZMq02['fnA!OoT<\Nd[;]Y(ql^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\d*^:jeC<%"f@S[.
+g=tE=h;7&Ii8N\UjQ5OdkNM0plKeH9$gmBNn*ol;o()DDo`"O`pAamdq#C0hqY^6ir;?Ncrdk*#
+s4[L'~>
+JcC<$JcDSHkPk8TqY^'arVHKgr:p9cs7ZEas7H?_rUL$[nF6GG&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh$Vrlg=k64f@SU(ebu<CUB%%fU&L\bTD5#VSc>5[RfStGrg3bRR$mH2!36$q1oI:M
+W2HMhUnjc[Q?I\(H[TR?AZDZ*U7[j?Q&UWSKReAoG]n=^Jq&9$IXcs#KS+td@@dD.!4Vm5rj!,V
+MiG!.NMCW;EH#r?G^G$rK_gE$K_U6$K_L3#LAlo%LB!#3L4t>7K`6]'K`-W)KE-Z&Jc(-"Jc1,s
+IfP#tJ,XopI/nZoHiAElHh;XYHiJHrH[9s_GlE!]HMr-hH3/A:GklX_H2r<iI/J?dHLcF[I/J?f
+I/\QnIK=qIp4)mg!.k*!r.4m"%"EYPG'SCZG'%bFD/K8d$#47&F)P8f>[:Y7?N4C4?iXR3?N%/0
+>khV$>lIq5>$5!4>$>'5>P_P'=ThjGa2_<]=8nciTDP;\U&:Y`U&:S`U&UheU\pqeV>R4fVt$Y[
+bPBB^bPfT_b5f]]ao0B\ana*SbPfZ_c2Z)hR/i]TRfT%Mrgj1`TV2:X#GRugUnji`VZ*LnVuWgr
+WWK6&XT#=&Y-7i/s03'>Za7$G[C3NQ\%&uZ]"@sS5/"\F^VI\&_Sa=2`Q#s>aN;TJbKS5Vcd:(e
+daQ^qe^rF*g"P07gtgiEi8ESRj5]4^k2tjjl07L!m-O--rpKmWnc&([oCW%Ts7ZKerqQKgs8)Zj
+rVZWmo_sFAJcFI(J,~>
+JcC<$JcDSHkPk8TqY^'arVHKgr:p9cs7ZEas7H?_rUL$[nF6GG&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh$Vrlg=k64f@SU(ebt@)M#<&-L&cr)K_L,nK)C2nJ.REeKS+r2K7p/"V50o^U4-;F
+>o@$O=&j`sH[0gVEH,c-ARo4U>[(B:@UikVraQ=I@q9._<E=F(N/WYnL]E2/Kb8uFDK(5JFF\"9
+An>ReCi+-4qfMj\s)dpT!H`J[FT6L_FSL"VG5cXXFT-@YErL%[E,fmgE;sqRE;FMKDZ=PTDJa7h
+DYS)8D?+POD#8)ED?+PQD#\>PDZ4S=DX_TCDZ4PXE,T]7EH1nqs)IjT!-A!WrG`$\DfBT4DJoGg%
+;]NbA7B(Y@;9=_:f1*g;Z9Pl;Z0MoMuJ\?:f1(f;H$Nl;?0Sn;@HE!:f1%d;Gp@i;Gg<c:^3/LP
+tt1P;#H+IM#2u-M#<#.M"li)M#<,-MY`8/N;&8+R/*-MR/<3OR$j?8Qh?[@Qi36FQiEHRRf8cWS
+=TYN!hZ-Yrh0RkUSFW\V5:'gVuN[qWW&n!X/rE%XT>T.rilF-%^NFI['[6L[^W`U\[f;`rk(G.^
+;%Fu_8=(,`5T^8a2l?Db0.uPc-FY^dF$CkeC<%#f@\d1g=tE=hV[8LiSrnXjQ5OdkNM0plKdg'm
+I'uB!V#XYncA@Srq6<bs7cNfrqZTjr;6HjrVcBfJcC<$gAc[~>
+JcC<$JcDSHkPk8TqY^'arVHKgr:p9cs7ZEas7H?_rUL$[nF6GG&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh%8Arg=k64f@SU(ePoLJ<`N/u<;ont<qoYp<;]br<r>qt<;]\o<:s2i;?0Sm;C\TA
+V50o^U/`Wn/1W>42Dm]`5!:th3B/rS1G^a>0.nh-1,CaB1c%!G2#]?:4$6&.91qnV9E.T`8.A'N
+5!;+f7nQNN:esh_r_W\p;Z'Jh;?Kcm:f73ir_`Yks&&bns&8knrDNSkr)3Dhn5B9`!`2Zgqb[5e
+qb[,d!)WYjqbd&`s%`\k9ht[`r_<Mj:f-s`r_WAf!)WYjqG-i^r_E8br_W&Zk"tnOr_WVl!)WYj
+q+q&gr)!DjqbRAn:f(*i;@$6'92%rL91hbS6NTD755[Y>4oeU^<rYGa5PdVH5<qL45m9VB5s[b#
+r'16Jr'(TU5X/4K<^8l65u^c]qGdJpr`9&#rDrr"q,mMsr)i>hs&]8&rDrhpp/D#jqGI>m;Z9Pn
+;Z9Pm;Z0Gm;Z9Vj;Z9Vp;?9WkpeUpX!1NnV!M#_[ScYOWT`1ViU8+KZUnsobrhodp!3,st!irE(
+riH4(YPtd+Yn"(GZa@*I[^NZS\@K/]]DfH,]tV7r^qmn)_o0O5`lH0Aai_fMbg"GZd*^7he'umt
+f@S[.g=k<:h;7&Ii8N\Uj5f=ak3(sml0@U$m-X6?mfDqJrpg*]o`"O`pAamdq#:*hqY^6hr;HTd
+rdk*#s4[L'~>
+JcC<$JcDYJkPk5SqY^'arVHKgqtU3cs7ZB`s7?<_rUL$[nF6GG)=HnZm-O'(lKRQski_*jjlGL_
+j5T%Ui8<Djh$`#mg=k64f@SU(eC=Jns.]Rgrh9:`!2'%Xr13kXs-s%Vs-WhQpQtrIq3_2K!2fan
+s/7cOUnjc[TqQm`I=,^@Bm-DNUS4'DQ][,[L4FYsH$FRcJ:E*!Isum!K7\bb@>2;(\[]&Trj;^2
+&%$J[QEGt2Q?@=kEHHGRJbt,tL&?W"K`Hf$L&Qi*L%pB(LPCN^K`6])KE6d[rIt9)!/(6$qh"ct
+!.arr!.b&urI4Zm!.=cmrd=]lom6=Ys*Xims*4ZjH$T(/r-8<hH2`'aH2N!cI/\KeHLcFZI/J?g
+I/SKjIeS?aJGausJf'#cH[0p_GBe=SC3"3/C2%I$PB1YI>[:Y7?N4C4@/F:/Z2e/)?27b*>6nD8
+=^,'5=^,,,>5q_5=N/>$=BAU+SXl@Eqk3n]rM'7aqk*q_rhBFf!2TLgqkj:hntu0)q98l^rQ>/`
+!6Y,ZrQ>)\q9&KUrQP2a$C@-IR@9S6S"-">rgj1`TV2:X!huHbrhKRkVZ*LnVuWgrWWK6&XT#=&
+Y-7i/$aI"CZa7$H[C3NQ\Gj$)]">Vf]tV7r^qmn)_o0O5`lH0Aai_fMc-FV\d*^7he'uq!f@S[.
+g=tE=h;7&IiSrnXjQ5OdkNM0plKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#
+s4[L'~>
+JcC<$JcDYJkPk5SqY^'arVHKgqtU3cs7ZB`s7?<_rUL$[nF6GG)=HnZm-O'(lKRQski_*jjlGL_
+j5T%Ui8<Djh$`#mg=k64f@SU(eC=JSs+pW/rIt<+rIjlspO`6mp430m!/(6's+C?I+etd*Tj;#5
+?<(!,?@.!DGB7hFD.mQo@UNGG>?bTH@:E^F@g?OSAS+tCCQ&1NreUN-&qj\DFb+IYI:m/'AnPst
+E--2CqK2a[s)dpT!d&R-qfMg[rH.gWr,r'_olU1Src/'[EcV/!!cW.!rbqjUr,;XUrbqsXE,fmn
+E;FMKDZ"AMDYS)8D?+PPD#/#DD?=ZkD#S;ODs2*.Du=MMDuObTE;jkJErC"WEXm)-Df0E/Ci!m$
+AnPXbA,]p?Ht6\`;>jDl;>jDk;ZMaTN<W3V;,U:j;uKVo;>sH%;,C(d:f1+g;,U:h;>3lkPa.M0
+:JamdL]*&+L]3,.LB*/*M>W2-M>N2-Mu/J/Mu&eBQ^F09R/iWPQi<BFQh?[AQi*0FQiEEXR@9S6
+S"-">rgj1`TV2:X!huHbrhKRkVZ*LnVuWgrWWK6&XT#=&Y-7i/$aI"CZa7$H[C3NQ\Gj$)]">Vf
+]tV7r^qmn)_o0O5`lH0Aai_fMc-FV\d*^7he'uq!f@S[.g=tE=h;7&IiSrnXjQ5OdkNM0plKdg'
+mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s4[L'~>
+JcC<$JcDYJkPk5SqY^'arVHKgqtU3cs7ZB`s7?<_rUL$[nF6GG)=HnZm-O'(lKRQski_*jjlGL_
+j5T%Ui8<Djh$`#mg=k64f@SU(eC=Iu!*/tsnl>]hrDiht"]\N%<E)rr;uK\f;u0DlUb&:8TqO"g
+/M&h=2E*ia4Zkef2`NWP1,1L:/M/M/1G^dB1GpsF2)I-Q3^Z^B9,:,m91_]G7n>^,5!DG,;,C"`
+:esqa;u9Jk;u'>k;#sKjr_i\ls%i\mr_i_o!)ien"&`&r;Z'Dk;Yj8^;?fur;Gg:f:\mod:]!ud
+;$'Wm;#X5j;#F2a;#a>j:B"&g:'+3f;#3ue:]OAg;?0Sm:\mi_:]4&b:]F8Y:ZbLN;>j>k;>sA_
+;#aDk;#aAm;Z9K";,gFj;,U:k<(p$b8d%mU6p<g45PI>A<W6&!5lO"E5Qa595skQ:s$H`O!C/mI
+5QF+J5Q="T5?(Za5X.M";u'Dm<W6%u=8l8#=8H%q=o;Cg=oVV'=8>eh;ufkm;Z0Jm;Z9Pm;Z0Gm
+;Z9Vj;ZB\p;?9WkqG.HbR$a;1R[]e:S=TYN!hZ-Yrh0CfUSIga!Mu[mVuN[qWW&n!X/rE%XT>T.
+ricd8ZEggC['d<M[^WdG\O!g=]Y(ql^V@S#_SX4/`Poj;aN2KGbKJ/UcHjkbdF-Lne^i@(f\,!5
+gtgfChr*JQj5]4^k2tjjl07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jmeq>^<hqu-HkrUg)?s+14(
+s*t~>
+JcC<$JcD\KkPk8TqY^'ar;-EgqY:*brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-(?OW;
+j5T%Ui8<GKh;-l@g=k64f@SU(rm^tD!McCfU&L_aTDG/VSc>5[Rf]%HRJrQKR/NBIQk>[NQDpdZ
+Vl-JkUS=HUTV%firb!=OV5'WOQ^!YmLkU>+G^4OWJU`/uIt*!!Jq8K)@:=T_])B#O['R'EGF"i<
+LR`O2F`_\JH[g[&L5#MXrIt-%nq@."Kn]M\rIss"s+UK+re:?)!JQ4+L&Q`*K)L8rK)^B%JG4Ql
+If+TuI!^3fI!pDAHhMdYHiJHnHMi'\HMVpdGklX`H2r<iI/SEdHLcF[I/J?jI/eQnI/\QjIeS?b
+JGaurK)UB:I!U*aG'J:WEcH&7BkhC"DNo3^>lJ%/?N"7.?Mq,(?27b*>6\86=^,'5=oMY&>5q_-
+=N/>$r`B;)=Iu.Wr1O"^rhB:`rLa.ar1X1eq5+"dr29Rlqka.dp<39Us3(A`s2tDbqT8]Yr5ncW
+q9/][rQPS5Q^=),R@0NCRfT%Mrgs.^!20=bs.TLgrhKUlVPa?j!N<!sWrK+"XT#=&Y-7i/!O8s0
+ZUM7/[^NZS\@K/]]=bei^;%Fu_8=(,`5T^8a2l?Db0/#RcHab_dF-LneCE.%f\,!4gYCWAhr*GO
+ioB(\k2tjjl07L!rp0gUmdKW6nc&(\oCV\So`Fj]p\jmeq>^<gqu6NlrUg)?s+14(s*t~>
+JcC<$JcD\KkPk8TqY^'ar;-EgqY:*brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-(?OW;
+j5T%Ui8<GKh;-l@g=k64f@SU(rm^q(!/UT/reCE+re0utpk&<momm$k!JH+'KEn9HTqS-OSlbnk
+&Uo(QG'.hDDJEfp@p`JF>?PG7@K0dCA7K.ZA7S\?AW-PH!/^]2re;,?A9<0XEI;G4AnPdkDfKi=
+F`_\GqK)^[rcIgS!-J3_s)\<bFEIM)rH.dVrH80`p2p:Ts)S*Y!-8'YrbqjWrbqjUpi$=RE,fmn
+E;FMLDYn;MDYJ#7DZ">JD>.oQD/=$*D/O91k\fm.rGMLN!cW.!r,DXTnoF_Lqf3EmE,TZ4Df'?,
+C2%Bl@U`bS@XM]q;>jDl;>jDk;[JAANJrfn;,U:jrDNVlr_a)#:f("c:f:1g;H!KkpeV*XQ'G-@
+r_NTMr.t6*reUT0reUB,r.t6,qhjd!q3_2K!1<SM!1<\Nrg<DGoToB@r0I5H#F:^CR$a;0Rf8cW
+S=TYNs.9:arh9@d!2KOh!i;ckrhfdqWW&ptWrT7#XT>T.ricF.ZMq1!['d?N\$rlX\[oDc]Y2%o
+^VI\&_Sa=2`Q#s>aN;TJbg"GYcd:(fe'umtf%8R-g=k<:h;7&Ii8N\Uj5oFckNM0plKeH9"mtaH
+n*olHncJFTo`"Lbp@n=[q#C0iqYU0hr;HTdrdk*#s4[L'~>
+JcC<$JcD\KkPk8TqY^'ar;-EgqY:*brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-(?OW;
+j5T%Ui8<GKh;-l@g=k64f@SU(rm^sK!``2ur`&Mir`&hrr`02&<)cjt<;oho<:Wua;CeN:TqS-O
+SiAVb2F'Gi4?P\`2`*EJ0JP43/hJb41GUaB2D[0H1Gh6U6;RSR!)!5`s%*bl839!u5"8(<:JOb^
+;,U:hr_r\lrDWMir_`Vl#Z4Js;,C.h;H!Km!)ien"&`&r;Z'Dk;Yj8`;Z9Mn;Z9Mq:esnbr)!>f
+qb[2f##\;p:JXe`r)*/as%`\j:/:dar_<Mj:f.$brD3Jkq,.2hrD3;cq+pubq+q#emSDtApe_5l
+;,L.d:J^RYs&&bls&&_ms%sG+;GU1g;,L7l;bTeV91hfM6Ua3:5PI>A<W,qu5lO"E5Qa595skQ:
+s$H`O!C/mI5QF+J5Q="W5?(Z`5X.M"6W@&cr)<Yrr`9#"!*9&"r)i\rr)ieuqcNYss&f;&pJ^id
+!)r\krD<Pmr_`Ymr)!Glr_rVjs&8np!Du\j:C!2PQ^F/.R@=,E!M#_[T)YD_T`1YbU&^tfU]RBi
+VZ*IoW2]crs/Q.$riH4(YPta,Z*OA87C9J2[^W`U\[f;`]Y(ql^V@S#_SX4/`Poj;aN2KGbKS5V
+cHjkbdaQ^qe^i@)g"P07gtgiEi8ESRj5]7`k3(sml0@U6lileEn*fc9rpg-^o^r.U!quB_rV6Eg
+s8)Wirqu`no_sFAJcFI(J,~>
+JcC<$JcDbMkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0jTlK[Wuki_s-"m+h*
+j5T%si!nT#h;-l@g=k64f@SU(rmV"uUS@[[rh04^qk!YTs.'+X!h#FCrg3MLr0R8Is-NYL!1!M\
+.&`i4T:VXFS7SUqU7Rg@QBR8_KReDqH?aXaJUi6!J:<$#JqJed@=%m`!4Mm7(UUNSZ@A:RQ&D8X
+G'.nJG^b:!L51M<L&-K%L&?VoL&Zl/Knb?ZL%pE%L&Q`*L&Qc*K`Hf*L&Q`*K)L8sK)U>qJ,Fcn
+I0"_Brd4`pI/\KdHM)UcI!bd:o6U:Zrcn6ar-A?irI"QjpNl@VqgA<grd=`m!.=`nqgSQps*jfo
+p43!jrdt'#'SLp_H['g^GB\4ODeWs'BkqO%FE%4b!FB(1?i+1-ZM7`$>lS"0>$5#-=p%o2>?gu.
+s&fG+`Q-$r=9+ukT`1Y`UALYaT`(SaUAptgV"pkaVYm@lVYd4fVZ+a=bl#Z_aoKW]bl>lbb5]Wb
+b506Yb5KHWb5'6Ybl>rePl[2;rg3bTR[X5F#Fq?USt;RHT`1YbU&^tfU]RBiVZ*IoW2]cr&?Dn6
+Xf\b/YHY79Z*L^B['fnA::IaD\[oDc]Y2%o^VI\&_Sa=2`Q#s>ai_fMbg"GZd*^7he'uq!f@S[/
+g=tE=h;7)JiSrnXjQ5OdkNM0plKdg'mI'H3nF?&>o(2JFrq6<b!;HHes7u]kqtpBjrVcBfJcC<$
+gAc[~>
+JcC<$JcDbMkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0jTlK[Wuki_s-"m+h*
+j5T%si!nT#h;-l@g=k64f@SU(rmV&!M2@&eL]3&,L&Qc*K)gT%KD:&oJb=QiIfOrsK`?ZATqJ$L
+St2BNI=-<`FE;D=C1^sc?sR#A>Q/+3@K'a@ARf7`<E3T.Mu\b7L_kf"L4s8_M/[NdBk_0kBPVR.
+F*;_LF`dV(qfDg\rcIgS!-J3_s)e9`!d&R-qfMRTs*"Ebs)\6^q/lUW!-8$X!-8'Yqf)RRq/H@P
+!cW.!q/H1KqJQ4JrbhFHm;;o@r+u7IpMTtHs(qdSDs)$.Du=MNDZXltEVseSEV"5LEVjeUErg2u
+rbi*\D/<s$D.I-d@K'^:A7P=2rDO#\NK&mU;,L4h;uKVn;>jDm:^9io;,U:h;H!KkpeV*XQ'G-@
+r_NSirJ:?+qhY0,!/gc4qhY0,qMO^!rg3\Rr0[GL!1<VN!1<\Nrg<VMrg*PMoToB@r0I;JrfmMM
+Qi<?RR@9TDRg5ISSXuFFT:l1Ws.TLgrhKUlVPa?j!N<!sWXu54XKAV-Y-5(6Z*CU@Za@.>[SF<A
+\[f;`]Y(ql^V@S#_SX4/`Poj;aN;TJbKS5Vcd:(edaQ^rf%8O+g=k<:h;-rGi8N\Uj5f=ak3(sm
+l0@U$m-X60n*ol;o()DDo`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#s4[L'~>
+JcC<$JcDbMkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rpp*Z!:^!Vs6]mSrp0jTlK[Wuki_s-"m+h*
+j5T%si!nT#h;-l@g=k64f@SU(rmV"u<E/rr!*&ep!*8tsrD`_q#?Fi(;c?Xq<Vf\a;u]es;uTZ:
+;,X*\T:VXFS2EPr5!1ng2E*TP0etI:/1iG-1,C^ArA=L2"$J\3:]<ue9)_H`8cD6h4?l4j7S6HN
+:/FV^;>sJl;u0Dk;ts8j;>O2j;$Bir;c6Omr_ibn!)iepr)*GkqGHrarD<Pmr_`GerD3;erDESm
+!`;cir_WMip/(cbs%`Mgr_<Ji;#=&d:]OAi;ZBSo;#O2e:AI]b:AIZc;!q-@;#*ug:]OA]:^9iq
+;,C(b;,R9ir)*Jl#>e>s;,C4n9`@Zf8kVfF7/]@M5kmMC<W,qu5lO"E5R]kB5sdn(5sdn(5sR[4
+5QF+J5Q="]5?(Z`5X.M"6UFdP<E)su<`]#tr)iVpr)ieuqH3Pr!E`G&;ZKel;u'Am;u'>e;>sJl
+;#jMn;uT\p;>jDm;u]_s;,C*f:]?U[QC%T<!h#LGrgO._SXl@DT:_eUU&UheU].%jV5C-hVZE`q
+ri-O1XK8P+Y-+t4Yd(I=Za7$HrjGS2\@K/]]=bei^;%Fu_8=(,`5T^8a2lBFbKJ,ScHjkbdF-Ln
+e^i@(f\5'6gtgfCi8ESRj5]4^k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHerV6Egs8)Wirqu`n
+o_sFAJcFI(J,~>
+JcC<$JcDeNkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rUL$[nF6GG-1:0fm-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-1f@JLOe,n+IUALY`T`1S[T)+u\S=>t8R/WHPQiNQQR/<6KR/WHMQMd!e
+VPg>jSt;LCS"#k7T:;46PE(HQJUVrjG]e.ZrI,$%IY*3)Jmi(urON!<rj<WNZa,gaNNnk3ZupP9
+EccVYJVJu:LPLV=L&?T,K7no3L&?VoL&Zl/Knb?ZL%pE$L&Zf+L&Qc&L&Q`*KDgAtK)U>qJ,Fcn
+IJnQnI/nZoHhVjYHNAM?rcnKgqg&6fq0MsarHS-`r-A?ird=WjpNlCWqgA<grI"Wl!.=coqL/Eo
+rI4Zos+(-!q1/?nrdt'#rIb6'I=(m;$[Qu-BPqX#BPVL,E;a&B?N+=/?Mq,)?2.\)>7"J9=^#!5
+=^#$6qca#&$!>3ea&lGH=BS`'T_b>^T_G/YU&q*cV"pkbVYd7kVY[.fVYA:5b5]Z]bQ,i^b506Y
+b5KHWb5'6YbQ?%QPl?pKQC%T<s-WkUrgNtZSXobO#G7Z^TqS3TU].(hV#[ClVZE`qri-@,XK8P+
+Y-5%5Yd(M5ZVe*;[^NZT\[f;`]Y(ql^V@S#_SX4/`Pom=aN;TJbK\>Xcd:(fe'umtf%8R-g=k?<
+h;7&Ii8WeWjQ5OdkNM0plKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]kqtpBjrVc?eJcC<$g])d~>
+JcC<$JcDeNkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rUL$[nF6GG-1:0fm-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-1f@JLOe-"1JM2;(breCE+qLng"pk&9lomlphr-nWu'SE!KSXc1=R[JAB
+F)c,6B4YR]?<dD4r*fV8#%_:TA5uW1rJU`7reMGHKnXD_E.`1SMJ-^:BPD=&EcZGKG'8"NFT-@]
+F9$CYFS9eUFT$=cFEM_JF`mS'p2pCZFoHI_F89qWEr^7ZE<(%YEVj\TDtn;ODZXltEVXSMDu+AL
+D?"MHD>7uKD>.oJD>\5JD>.oLD/=%fD?"P<DXhZCDYn>QE,kborc.XP!-/!YrGh[Ss)\0[$#jg#
+D/O6.Chm\_@fTs:@KC"LpJUrg$&jk'N/UV2;GpHl;Z0Jl;ZBPu;,C+f;Gg=ir_`Ge"I,1::J^sd
+!)EKKqhP0,r/(E1re^Q/qhb0,qhkH5oo&R3rg3YPqO%>Nr0RDMr0RDKrg3SLrKmGJqj78IrKdPK
+Pl?pKQC%T<s-WkUrgNtZSXobO#G7Z^TqS3TU].(hV#[ClVZE`qri-@,XK8P+Y-5%5Yd(M5ZVe*;
+[^NZT\[f;`]Y(ql^V@S#_SX4/`Pom=aN;TJbK\>Xcd:(fe'umtf%8R-g=k?<h;7&Ii8WeWjQ5Od
+kNM0plKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]kqtpBjrVc?eJcC<$g])d~>
+JcC<$JcDeNkl1AUq>Bp_rVHKgqtU0brq?<`s7H?_rUL$[nF6GG-1:0fm-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-1f@JLOe,n+I<;oer<:X&g<;TYt<)Z^pr`&tu<W,nd;ZKep;uKVoSg0er
+S"#k74?GS_3&icO1,(C6/hJV01G^dB1c7*H2)IHW5>V,K#t[ZY/hfCQ2+C@?:BXKh;,gEl;Z'Jk
+;?Tip;H$Nh;?0Si;ZBSt;H$Ll;cEZn"]8/q;c?Tk;#jMi;>*od;#jMm;><ue:]!ue;?'Mo;>j>g
+;>*ff:JO[`:]4#h:JgsbqbR8iqbmGk!)WViqbHr_r_E;cs%r,Zk"tkNlVIX[;GmEi!)`YlrD<Vm
+;,[<h"]A/o<D?6e8chXR7/fFN5QF%E55\F]5lO"E5lX%U5sdn(5sdn(5sR[45QF+J56=)95Q4X_
+62j+M6:(QMs&T"uqcNc!rEB2'q,mJrqH3Ss!E`Ls;u]hs<W#er;u'>e;>sJl;?'Po;ZK_o;>jDm
+;u]_r;,I3e!L&cIPl[2;rg<_R!1NnV!h>gPrgj@eTV/!PU8"F^V#R7kVZ*IoW2]cr$`gA1Xf\b0
+YHY79ZMq1-['d?N\%&uZ]">Vf]tV7r^qmn)_o0O5a2l?Db0.uQcHab_dF-LneCE.%f\,!4gtgfC
+hr*GPj5]4^k2tjjl07L!m-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFL)J,~>
+JcC<$JcDhOkl1AUqY^$`r;-BfqtU0brq?<`s7H?_rUL$[nF6GG#O_!Hm-O'(lMg#Oki_*jjlHF$
+(ZOE3i8<DIh;$c=g=b-1f@JL&eC;sqdJT^9T`1PbStDYST),#WS,\l[R$X2-R@3u?qj7>Mrg3JI
+rKSe&R]!'\Vk'?IS!ob4R$<ksM2$_6H?aXWG(G-lIt)osJUrK+KOJD`rji*=rj<]PZa,U\S@=3A
+Q#h(kF*<%^K8>DALkphAL4t?ZK`?])KE-`(K_^<%K_pK"LAci#LAci'K`?`/KS>,5K`6W&Jbt&u
+JH15qJ,=ZqI=2$Bs*Xcn!.=cmpj2LX!.+Thr-JBgq0N!br-8$_rHeKjrd=Wjpj2IWqgA<grd=]l
+rI+Qls*t#sqgSTrrdX`oqgn`ur.G!%rIkl5I!9gZG^+FRA8,jpC1qF$F)V%`!+,Y3qd03+!*oA+
+pg!i'!*]A)s&oM->$G5.=q=b<=N8A$=BJ^.=BD/fT:l.V"/)?\T_Y;YU&q*cV"pkaVZ*LmVY[.f
+V?"j7bPoZabPTK`bP96Vao0B\ammLRbPfZbP5g^GPl?pQQC!r*R$jA2rgWqX!1j+\!hZ-Yrh0@e
+U].(hV#[ClVZE`qri-""XT#=&Y-7i/9!P\.Za@-K[^WcW\[oDc]Y2%o^VI\&_Sa=2`lH0Aai_fN
+c-FV]dF$CkeCE.%f@em3gYCWAhr*GOioB+]k2tjjl07L!m-O--rpKmWnc&([oCW%Ts7ZKerqQNh
+rqcQirqu`noDX=@JcFL)J,~>
+JcC<$JcDhOkl1AUqY^$`r;-BfqtU0brq?<`s7H?_rUL$[nF6GG#O_!Hm-O'(lMg#Oki_*jjlHF$
+(ujN4i8<DIh;$c=g=b-1f@JL&eC;sqd>7aVr.b3)!ec8]re19'pk&6komlmgrI+cjE;kM*K:SO%
+S!ob4Qu?q[BP(d`?<g]<>%7J>s'l"<s().@!``9Jrepi8reLo9KnX>aG_U*aIVSjq"_r!sF*;g-
+GQ2gfF`_a)F8p@^F8L(QEr^=TFo?FRFoHL_F8g7aF*)MFF8g4VEVj_TDu"AODZk$!EH#jnE;FML
+DZ"AODZ+DPD#/#EDZ=SJDZ=SQD#J5EDZ=SRD#\>RDJsIWDXhZCDZ"DSE,fmsE;OYLErU.YEr9qS
+EWU<&ErC(ZDuOV`D/=!'An5F]@UikVARkL5rDO#]NK&mU:f1+g;uKVm;>sJn;#X>l;ZBSo;Z9Pg
+;#cabPtt1P:esiBq1ns*re^Q1re^Q/r/(9-qMYB4p58p=pR(rHs-W\O!1<YMrg<VMrg*PMrKdDK
+rKd;HrKdJMs-!DG!0mJJ#F:^CR$a;0Rf8fVS,f,ZScYOWT`1VcU8.^`s.o^mrhfdqWW&muX/u<&
+!NrX*YY)1+Za7$H[^NZT\[f;`]Y(ql^V@S#_SX4/`Q#s>aN;TJbg"GYd*^7he'uq!f@S^0g=tE=
+hV[8LiSrnYjlY^gkiq?slg4!*mf)YUnF?MK!V>s_p&Facp\ssfq>U6gqu6NlrU^#>s+14)s*t~>
+JcC<$JcDhOkl1AUqY^$`r;-BfqtU0brq?<`s7H?_rUL$[nF6GG#O_!Hm-O'(lMg#Oki_*jjlHF$
+)rfi7i8<DIh;$c=g=b-1f@JL&eC;sqd8NtC<;0Dm<rQ+u<;TYq<;oer<;fhp<:j,e<;f_r3Ape6
+,>k#%S"#k7R$]fm3&WTK0eb74/M&S21GUaB2D[0I1Gq6Y8GYsl8OuB01-[rk8P`,W:Jabb;,L0f
+;Z0Pl;ZBVo;?0Yd;ZB\o;YsDk;Z9Sp;Ys;k;Ya2`;YX,f:]O;i;#X8f;#X;q:f:1g:f-sbp.tfd
+:/:a`rD*2bqbR8iqbmGkrD38bqG7)cq+q#emn`%Aq,.,fs&&;_#>nAs;,C%b;>jDg;?'Gn;,I3h
+&5uS/9h\/Q8kDWD6pEn$5X5'.r)Ne_r]g6Es$$lW6:*t(6:*t(5X.L35QF+J56=)95Q4X_62j.L
+5lapa<r5tr=Sc2!>5h\#=Sc1s=SQ#!<:j,h<<#ts;ufkl;Ya2h;Z0Jm;ZBYq;Z9Pk;ZB\q;@$,r
+:J[.:PEV71Pm<VAQ^F/.R@=,Es-s([rgj1`TV2:X!MZ@gV#R7kVZ*IoW2]cr!NW=$XT>T.rif#"
+ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=(,`5Ta:aN2KGbKS5VcHstddaQ^rf%8O,g=k<:h;7&Ii8N\U
+jQ5OdkNM0plKdg'mI'uB!V#XYncA@Srq6<bs7cNfs7uZjr;6KkrVc?eJcC<$g])d~>
+JcC<$JcDkPl2LMWq>Bp_r;-BfqY:'arq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#nki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@JL&eC;sqdF$=7U&1MZTDkG[Sc>2^S!ob5rg<_Rr0[>Irg<\OqNh,G
+"IbU9L40'!%%E]RR$a5+Q&13IIsV*<%sEMSI=6WpIXm!&JqINAB)]@A\,NcJ['R'#V4ktfSTT+#
+F`hnWJVB![M>rD3LB<3aL&?W(KDC2rK`Hf'L&-Q&L%^9#L&-K$K`Hf*K)gN$Jc(-!JH15qJ,=Zq
+I=2$Bs*Xcn!.=cmpj2mc!.+Bd!.+ThrHeKhq0Msar-8$_rHeKjrd=ZkpNlCWq0`0grI"Wl!.=co
+s*arrrI+`rrI4Zos+(&tqgeWrs*t0%JqElPs+L6&'n:UYH[9s_G'@\8D/*m$Ci+64?!Ue8?i47/
+Z2q::qH`l$s'#J,r`T8)"'Jf3>Pq\)=oVV(`X'Ue=BSa.=*pS7T_kGYUAptgV"pkaVZ*LmVZ*Fg
+V?5,ibkK<[b5]Z^bQ,i]b506Yb5KHPaoKWabl<h*P5g^GPl?pQQC!r*R$jA2rgWqX!1j+\!hZ-Y
+rh0@eU].(hV$3`oVl6Pnri0&#XKAV-Y-5(6Z*L^B['d?N\%&uZ]">Vf]tV7r^qmn)`5T^8a2lBF
+bKJ,TcHjkbdaQ^qe^rF*g"P39h;-rGi8N\Uj5f=akNM0plKdg'mI'E2n*olHncA@Srq6<bs7cNf
+s7uZjr;6KkrVc?eJcC<$g])d~>
+JcC<$JcDkPl2LMWq>Bp_r;-BfqY:'arq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#nki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@JL&eC;sqdF$<rL\li&K`Hf)KD:&pJan9eJ,Xm>Ec5]&?A*uaS!ob4
+R$X,(BP(a`?X$]<>%1oK?t*PSA,^!@AQ;c3repi8reM2AKnXAjH]N5sBk_<pBl.j0F*RS+s)nHd
+FEIM's)e9^r,hUQ!-ImVrH.XRs)e0["E\^,FE@G%r,DdWEH1kps)7^PrbhpYEH,r9qf)CMqJH=N
+DZ4MQDZ4MQD#/#FDZ=SIDZ=SQD#S;ED?+PQC]eNlDK"`VnSe>Cs).mTrbhgVEW'kSEV=DQEW1"U
+EVOSSEr^7[F8p4ZDZF\SD?"DNA-HFP@UWhWq,7/i$&jk'N/US1;GpHl;Z0Jl;ZBSm;>sGo;,[Bj
+pe_!T#F/(\:f'q_A,:u[M#N8.MYr;2M#E/2MM_1eqhtH4pPT*AR@3f:rg3YPqj@GOrg*\RQ^@]=
+r0RDKrg3SLrKmJKqNq/H#FCR8P*2#mPl?pQQC!r*R$jA2rgWqX!1j+\!hZ-Yrh0@eU].(hV$3`o
+Vl6Pnri0&#XKAV-Y-5(6Z*L^B['d?N\%&uZ]">Vf]tV7r^qmn)`5T^8a2lBFbKJ,TcHjkbdaQ^q
+e^rF*g"P39h;-rGi8N\Uj5f=akNM0plKdg'mI'E2n*olHncA@Srq6<bs7cNfs7uZjr;6KkrVc?e
+JcC<$g])d~>
+JcC<$JcDkPl2LMWq>Bp_r;-BfqY:'arq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#mki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@JL&eC;sqdF$<?p/V)mpJq5mr_rhrrDihroMbTcr_j^n1bp[6;GpA]
+R[KP1Q^3mp2)6m@0.\\,0J`S_$oBgu2)I-P5!2M391o1V&kPVb2F0Jj7S$9N9hnGX:f:1ir_`Sk
+r_r_ms&&5_r_rhpqG[>jr_iepr)*GkrD<Vm;,R3g!)`_nr)!GjrDEMi"A_ij;,I6fqb[8h"]/)p
+;,C*b;>*fe:JUjar(d)aqb[,e!)`YiqbHr_r_E8b!)W)Zk"u(T!)WSjrD<Jjs%r_mpJCle##\;p
+:JakbrDNJhrD3Jkr_aA+:f11k<D6(Y9MA)O77BF+5X5'.r)Wh_s$-<E$pR$E6:!n(6:!n&5<o-4
+s$6WMrBC?K5sYEL!($TLs$6ZU<r?%q=Sc2!>5h\#=T2Ir=Sl5'=B/="r_ierpf%2ls&K"s!)rYj
+q,.,hrDESms&/nqr_`Sks&8qq#uOMpOcbfiPEV71Pm<VAQ^F/.R@=,Es-s([rgj1`TV2:X!MZ@g
+V#R7pVPg>jW2]cr=0&F)Xfeh1YctC<Za7$H[^NZT\[f;`]Y(ql^V@S#_SX71`Q#s>ai_fMbg+M[
+d*^:jeC<%#f@\d1gYCW@hVd>NioB([jlYail07L!m-O--mdKW6nc&([oCW%Ts7ZKerqQNhrqcQi
+rqu`noDX=@JcFL)J,~>
+JcC<$JcDqRl2LJVqY^!_r;-BfqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-$0C7.
+j5T%Ui8<Djh%AGsg=k64f@SU(eC;sqdF$=eq4RVWrLX"ZrgX@cR[TY4R$jA0R$X37Qi<?PQhZjt
+Q(OM*L4XZ!IAa!?R@'A.QBd`"PBqFtG]eReIXQZpIY!$&K7dWBA@/qZ\,E]I['GgXR[&f(GB\1R
+FaAOhLl@8iM#`A1LB*&*K`6W#K_^?%K`$Q"LAlo)L&cr*LAci'K`-T)K`6T(K)C2tK)U<$JG=Wk
+IfFfnI/n`qI/nZoHhi!dHNJM?HMMmfHN&0jG^9:7rd"<cr-A3bqK`!b!.4]mr-S3bnU'kTrd4Tl
+!.Olp!e,WKrdOcps+(#sqge]trdb$"s+:*"!/16're;/;I!g6cH$X^ZD/4*)C1qF$F`(Jk?hn%,
+Z2q::qH`l$s'#J,r`T8)"'Jf3>Pq\)=oVV(`WsRe=BSa.=+^4?rLrnY!2TIfr20CioVM];d*D@.
+rlY8aqof&`pr`HTrQ>)\n]D6_bfl-0OcbfiPEV71Pld8<Qi<?WR@9S6S"-">rgs.^!20=b!MZ@g
+UgU$rVPg>jW2ZesX/rD)Xfek3Yd(L?Za@*I[^NZU\[oDc]Y2%o^VI\&_o0O5`lQ6Cb0/#RcHaea
+dF-Lne^i@)g"P07h;-rFi8EVTj5f=ak3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqY^6i
+r;HTcrdk*#s4dR(~>
+JcC<$JcDqRl2LJVqY^!_r;-BfqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-$0C7.
+j5T%Ui8<Djh%AGsg=k64f@SU(eC;sqdF$=eq1ed#!/1?(pk&9loRQ[c#_$r;Ch7$[?XNec%[i]O
+Q^3o%P`oHY>[1HBrF,_8#\7FUA7ehC<J^X5reLi8L4sJbGAqVQrb2XOC2J!3F*DhOr-/-`!HiM_
+F8p@]F8^4QF7aVSFSp7]FS^.ZFSp1_FE;PGF8g4XE<:*!EVj_TDu"AODZk$!EGodmE;FMLD?4Tl
+rb_[Qrb_[OqJH+Irb_@Hs)%dPrb_:F#An9nD/F0.Ds2*/Du=JQDuFPTE,fmsE;X_PEWC+YErU.Z
+Er'eMEWL6%rcA*]"*&9uDuOS]Ci*or@q9%Y@U`qZq,72j#)nP$N/US1qGR8hr_ibmr_`Ym!Dubo
+;><ufPR!IL:Jak`:2'HY!/UW2qhk6,p58a*qi(?/!h5XHp6biGs-W\O!1<bPqj@;Jrg*PMrKdDK
+rKd;HrK[_MOHGZgP*;)orfmPNQ^@]=#FV$LS"#q<Sc55\T)bP`T`Lm_rhNquVP^8hW2Q\qWiN5&
+Xf\b0YctC<Za7$G[C3NQ\[f;`]Y(ql^V@S#_Sa=2`Q$!?ai_fNc-FV]dF$CkeCE.%f\,!4gYL]B
+hr*GPj5]4^k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6Egs8)Zjrqu`noDX=@JcFL)J,~>
+JcC<$JcDqRl2LJVqY^!_r;-BfqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-$0C7.
+j5T%Ui8<Djh%AGsg=k64f@SU(eC;sqdF$=epf.>o<W6%n<W5r!;cH`n<Uj#a<!ZD^2)6j:.4m.N
+;@f1_R$X,(Q'@Id/hAV,0JWM^+uD/62)R0P4ZlD29M.oM91hcH2Ej8[7n6EQ9M\D\;c6Olr)*>h
+!)rbmr_`/_r_rhpq,@8js&8qqr)*GkrD<Pkr_`Sk!)`_nr)!GjrDEMi"A_ij;,I6f!DlYl;#aDm
+;#aGm;#jMj;>*i`:]4&a:]+#h;>O/j;#F,e:A@Wa:AIZc;"%3A:]OAk;#X>k;#O5k;#O8d:^Bor
+;G^1c:f1*h;Ya2g;#O8k:^'Wm;,gOtr(@5c91)*45X5'.r)Wh_s$-BG!^T(9r^-WNs$H`O!^Jt7
+r]pKL!'pKI!^K%:r`&qar]pKL"@uTq=BG<#pfRT#qcWi!s&nqqrE0;+='&C%<;f_q<;9Dl<<#ts
+;ufkl;Ya2h;Z0Jm;ZBYq;Z9Pk;ZB\q;@68tO-#KdP*2#mPl?pLQC!s;Qj9%JR[]e:S=TYNs.9:a
+rh0@eU].&sV5C,fVl6PnWiE,$XKAV-YHY79ZEpmE['d?N\%0&\]=bei^;%Fu_8=+.`Poj<aN;TJ
+bg"GYd*^7he'uq!f@\d1g=tH>hV[8LioB([jlY^gkiq?slg4!*mdKW6nc&(\oCV\So`Fj]p\jme
+q>^<hqu6NlrU^#>s+14)s*t~>
+JcC<$JcDtSl2LMWqY^!_r;-BfqY:'arq?9_s7H?_rUU!Y!:]sU!Uf@SljrFIlKRQskND!ijlGI^
+io0mp(>n!)h;$c=g=b-1f@JL%eC2jndEp4bqk3kZrLWqXs.'+Y!1NhRs-WDEs-WhQpm*D!P`CHG
+IXQWnB5OQEQ^3o%P`q8nOa2(mJUi3!JUW*!K7ebb@Usbq]!qXG&@ActO-l2kWHNN1F*2t^Jr9Pd
+!/pc3!/UT/!/CE)r.Fm"qM"p%r.Xs$re:9)"GMSbKnfMZs+CB)rIk3)#)%V]JqJZ,rIOlurIFs!
+pj`6k!e#HDr-\Qord=iqH[GO6rHeTlH[>O8s*F]js*+Nhrd+Qhpj2marHS-`r-A?ird=Wjq0MRX
+npLIa!.=cos*jrqs*artrI4Zos+(&tqLJTsrdb$"rdt'#!/16'qh>c7I<p0bH$FRWAnu@#C2%I%
+F`1R\?N%/1:gEm'pK[`&!*]A)s&oM->$G5/>5qb*=:3'gaB2PI=BJU\\GMruU%=uZUSRgaqkj7g
+p87l:!n#B?p<3HXs3(;`!R&X`ans6Zao0B\ammLSbDuR_!K`HCP5g^GPl?pLQC!s;Qj9%JR[]e:
+S=TYN!hZ-Yrh0@eU].%iV5F6i!N<!sWWfH)Xf\b0rif8)ZEpmE[C3NQ\[f;`]Y(ql^V@V%_Sa=2
+`lH0Ab0.uPc-FY^dF-LneCN7'f\5'6gtgiEi8ESRj5f=ak3(sml0@U$m-X60n*ol;o()DEo`"Lb
+p@n=[q#C0iqY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcDtSl2LMWqY^!_r;-BfqY:'arq?9_s7H?_rUU!Y!:]sU!Uf@SljrFIlKRQskND!ijlGI^
+io0mp(>n!)h;$c=g=b-1f@JL%eC2jndEp4bqhG$&rIjlrqLS3fp4!p#De`cg?XI2K<a(00Q^3o%
+P`q8nO]u!nraH"=@prnXrac"/!+c(frJ:K.%V]m+E--bHCM@ErE,ouBpNQU[s)n'WrcIdR!-ImV
+rcJ'\#BY*2FEM\JFoHLXF8p7]EH;"ts)7sXqf)OQpi-4Ns)A!Vqf)FNq/-4MDZ4MQDZ=SQD#8)G
+DZ4MHDZ=SRD#\AEDZ=SRD#\>RDJsIXDXhZCDZ=YSDZ=VTEW'kSEVa_UE<(%XE<(%TEVFMPF8g7_
+F`DC"DZ4J[ChI<iA7AtV@:a!G;Z9T"N/`gU:f("dqbmAir_ibmr_`Ym!Dubo;><rpPa.M0:Jak`
+9l,[`L]</1M>W8-M=lc&Mu/J0MuK1HR[Nl:rg3YPqj@GOrg3DIs-N_Nrg3SLrKmJKqNq5J!07&>
+!K`HCP5g^GPl?pLQC!s;Qj9%JR[]e:S=TYN!hZ-Yrh0@eU].%iV5F6i!N<!sWWfH)Xf\b0rif8)
+ZEpmE[C3NQ\[f;`]Y(ql^V@V%_Sa=2`lH0Ab0.uPc-FY^dF-LneCN7'f\5'6gtgiEi8ESRj5f=a
+k3(sml0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcDtSl2LMWqY^!_r;-BfqY:'arq?9_s7H?_rUU!Y!:]sU!Uf@SljrFIlKRQskND!ijlGI^
+io0mp(>n!)h;$c=g=b-1f@JL%eC2jndEp4bqc3Vpqc3Yqr)NVnr)N_qnPf9`+#Yr0/h8G'/hK%A
+;GrjIQ'IStP*1q[/M&S31GgpE2#]?O1H[c_5tXgC8kVfL8P(a$4YoW$:esk^:/b%erDNPjoht]b
+n5B6a!)iVkr_ibps&/blrDNVlr_NSlr_i_m!`DlnrDESk"&Vll;>sDk:C'co;,C%b:f1*d;#aGm
+;#jMk;>*i_:]4&a:]+#h;>X5l;,I-cr_E2`r_E;cs%r/[k"u(Tr(mAjrD<8dq+q&gr_`kq:JXea
+r_iPhr)!Dj!DlSj;?'N(:f:1k9M.rN8kM`D6pO!455eLb:d@915Pm\L5sRY#6:1Z;"[YL@5X.L4
+5lX+M5lEnK5X@[7<<,>a5QjA<8PrXd=Su>%=SGtu=Su=n=T2G.=BAR(<E<+!rDN\qpf%2ls&K"s
+!)rPgr)*GkrDESms&/nqr_`Vlr_rhp!07&>!K`HCP5g^GPl?pLQC!s;Qj9%JR[]e:S=TYN!hZ-Y
+rh0@eU].%iV5F6i!N<!sWWfH)Xf\b0rif8)ZEpmE[C3NQ\[f;`]Y(ql^V@V%_Sa=2`lH0Ab0.uP
+c-FY^dF-LneCN7'f\5'6gtgiEi8ESRj5f=ak3(sml0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0i
+qY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcE"TlMgSWqY^$`r;-?eqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+)rfi7i8<DIh;$c=g=b-1f@JL%eC2jndEp4bcMaF9TDP5VSc>5ZRfJoVRK&ZQQN3EIQi<BPQhm!`
+SXP[sJTlQmIV<DsX/MqoQ'@JqP*(k*Nt?hiIXZfrJ:`H-K4AG$]"5EM[2--UKT2=`N3IMOG'J7]
+J;&rBNfB!VMu8D3M#E)0L5#SZr.Fp#q1\d#rIt$$!/:<)"GMSaKnfMZs+CB)re19)!ec2YrIY!!
+rIP'&K)U<$JG=WmIK=kEr-eTord=iqH[GO6rd4TiqKi9iH$TC6!."Qird"<crH\<cq0Dpbs*O`m
+rHn<cnU'kTrd4Tl!.OlpqgS3fqLAWuJ:IQKs+13%rIb-'s+LH+re:<*(57EqKn+SuH$Xa[G^!_6
+E,99&CmB*^pKmj)!Dm%u?2%V(>Q.e)=ohc0r`fA*s&o>'$HC--=BJ^.=&tBlrLj.`qP+"bqk=+d
+V#."gVYI(_VZ"jBccu1,rlP5aqTJu`b43URb4<[PaofhHNfO+"!K`HCP5g^GPl?sJQ2m9NQi`\E
+Rf8cWS=TYNs.9:arh0@eU].%iV5F6i"fSE#WiN6#X]2I,YctC<Za7$H[^N]V\[oDc]Y2%o^qmn)
+`5T^8a2lBFbKS5VcHstddaZdsf%8R-g=tE=h;7)JiSrnXjlY^gkiq?slg4!*mdKW6nF?)?oCMVR
+o`Fj]p\jmeq>^<hqu-HkrUg)?s+14)s*t~>
+JcC<$JcE"TlMgSWqY^$`r;-?eqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+)rfi7i8<DIh;$c=g=b-1f@JL%eC2jndEp4bcM`LtL&6Q'KD0umJb"?dIg't7D.R*Yra-+:<e5gM
+KS5VTPEM)kOT(:Q@UNVQ@q&qXA7]@Q<`Y3=N/@Ois+V,!Dg$)AM.pa>C2S$2Ed)eSGkcL^G5l[b
+FSKqVFS'VSFS'\UFSg1cFEM\IF`__JrcJ0]!-7sXs)S!Vs)7sXqf)OQpi-4Ns)A!Vqf)FNpMU"J
+rb_^QrG;@JqJQ:Lp20qKCi')foPX\Gs(hdSDJjCVDXhZCD?+VRD?+VQE;FSPErL%YEr9nWE;FSL
+ErC(WFT6IdEH#l7DZ+DYAn,@^@UikoAn1^9rDNoZNJp\1;,R6hr)*Gks%r\l"B&/r;,[?iq+qE_
+Q'G-@:esh\EJaUKs+pW2qMFg$qht?1q2>6A!h,OFp6biG!1<VN!1<bPq3_2KrK[MOR$di=s-WhQ
+qj.2Is-<_GNfO+"!K`HCP5g^GPl?sJQ2m9NQi`\ERf8cWS=TYNs.9:arh0@eU].%iV5F6i"fSE#
+WiN6#X]2I,YctC<Za7$H[^N]V\[oDc]Y2%o^qmn)`5T^8a2lBFbKS5VcHstddaZdsf%8R-g=tE=
+h;7)JiSrnXjlY^gkiq?slg4!*mdKW6nF?)?oCMVRo`Fj]p\jmeq>^<hqu-HkrUg)?s+14)s*t~>
+JcC<$JcE"TlMgSWqY^$`r;-?eqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+)rfi7i8<DIh;$c=g=b-1f@JL%eC2jndEp4bcM^cC<<#ks<;onq<<#tq<;BPo<:Eia<#.GO1G::/
+/1rM62FTnr;GrdEPEM)kOT(==1]B3;2)I*P4[2S591f+Us%*DP4?YJj9i:mc#u4Aq;,^@k;c6Nj
+;>X5k;uKVl;=IKU;ZK_p;ZK_m;>jDl;>sAl;>sJm;#jMk;?'Gn;,I6hs%r\j"]/&n:espe;>O,h
+;ZBVo;Ys>b;#3ue:A@W_:]OAi;?9WkqbR2dpeUlaq+guemn`%A!)`Jep/1Z_"&Vro;>s>l:f73i
+q,.)es&&emr_NPk!DlYl;@??"91_cK9M8#H76gQ2r`0.u5X7Ouq`k<N5X.P$6Mj%M5X.L45QX5<
+5lEnK5X@[7<<,>_5Qs_V=]eg0r`K,%r)iDjoiV5s!*K5%r`'##<E/oq!*&_l!*&qtrDWbqp/:cb
+r_i_m"B&/s;H!Bhs&/kqs&&oXNfO+"!K`HCP5g^GPl?sJQ2m9NQi`\ERf8cWS=TYNs.9:arh0@e
+U].%iV5F6i"fSE#WiN6#X]2I,YctC<Za7$H[^N]V\[oDc]Y2%o^qmn)`5T^8a2lBFbKS5VcHstd
+daZdsf%8R-g=tE=h;7)JiSrnXjlY^gkiq?slg4!*mdKW6nF?)?oCMVRo`Fj]p\jmeq>^<hqu-Hk
+rUg)?s+14)s*t~>
+JcC<$JcE%UlMgVXqY^$`qtg9eq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#rki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHW#STDY8]SY#VI!1a%Xs-`qUrg<_PrL!>Gs-NeQ
+qNa<XS!/haI"-KkJ7rStW2HMhVl,`AP*(ieO,f3YIt*!"JqSf/@q9&1]"#2U[C*BKDiC$JNNIDM
+GC"RaJqs>bs,I2@N/WYlM#`A1LB<3aL&H]'KD^DuL&H]'L%pB&L&?]'K`Hl*L&Zf+KDgK'K`Zp[
+KDgE#Jc:9$K)gN&JH15qJ,XosI/nZmIK+cqI0"_BpNljdr-J<g"F>E@H$T@5rHeHgq0N!br-8'`
+r-A?irI"Qjq0MOWo6gOa"FPWGIX_9EqL8$c!J#[tJH(-!JH(3#K)L?%KE-`*K`?c*L'r]gKS>,7
+Lk'l"H@#R8$[69"DJs<(D3Ap6:AJ5rZN!`$>l.h$>lS"5=]eg1=^"s2r`fA*s&o>'%`ZQ1=BJ^.
+=&tZsTV/!Pq4dna!MlLgU&h$bqka:hq5<q`r6PJjc2#Nabfe3/aoKW]bQ5o0o#^pSn]CaPrepo<
+NfO+"!K`HCP5g^GPl?sJQ2m9NQi`\ERf8cWS=TYN&>,VgTqS3TUSO]^V5C/gW2]cr=0&F)Xfek3
+Yd(L?Za@-K\%&uZ]">Vg^;%Fu_8=+.`Q#s>aND]Lbg+M[d*^:jeCE.%f\,!4gtgfChr*JQj5]4^
+k3(sml0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0iqY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcE%UlMgVXqY^$`qtg9eq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#rki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHV)tL&$E$KD:&tJcC8uJb"?fIk+K>DJ<Qd?s[5L
+<`am%I<p6nKThR^OcYWbNfB!,@Us"YA7]:O<`X:$N/IUjs+UtiDg$)ALM:O=CMn-4FT-ObH2i-b
+GQ)dcFoQR_Er^=\F8^4RF8p@TFT?O]Fo6=bF`__JFEIM'#]b!-EcQ5BEcV(tpi-4NpMg+Ms)A!V
+qf)IOp20kIrGDUPrG;@JqJQ:Lp20qKCi')foPOYGrbMRPrbq"<no+GDs)7mSs)7gSq/Q@Rrc&!Y
+EH(ns!-%dSq/ZFTs)\6^rcJ0_#'P31E,]`5rG;RJAc?0C@:FUq9htXbrDN`UNW)cS;>a>i;>sJn
+;#X;n;H$Kj;>O)s;3[?2:JXe_:/,nhrJ1E0regK-reg`4qMP--qi(?/rgWqVs-`\M!h#FCrg*VP
+qO%>Nrg3GJs-N_N!gf:ArKmPOs-NSJrKmMB!f`5#rf7)AOoCODP5pjHQ2d-MQi<?RR@9TDRfT%M
+rgj[nTV/!PU8"EYUnsobVl-Jmri0&#XKAV-YHY79ZEpmE[C3QS\[f;`]Y2%o^VI\&_o0O6a2l?E
+bKJ,TcHjkbdaQ^rf%8R-g=k?<h;7&IiSrnXjQ5Oekiq?slg4!*mdKW6nF?)?oCMVRp&F^cp\jme
+q>^<hqu-HkrUg)?s+14)s*t~>
+JcC<$JcE%UlMgVXqY^$`qtg9eq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#rki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHT?g<;fbq<<#tr<;ons<;fhs<;]br<:Noc<&QEg
+1GCC2/1iJ+3&Eod5<_;0;Nm9,OcYWbNfAuR1GgsF2)R0R4[)8-91_`K91_]B4?YJj9`.]i;c-Im
+<;]Yp;Yj8g;ZB\o;Z0J];Y<rg;Z9Sp;Ys>i;ZBVm;#4#h;Z'Di;#X>l;#X5l:f1*h;#X>i:^9cm
+;Gp@h;H!EioMGE\r_EDf!)EMhqbR8iqbdDkqG7)cpeUlaqbR2fmn`(Bs&&MeohkW`s&&eo!)WYj
+!`2cmp/1ids&&emr_E_p;,U4f:fRBk"&i)l8cD?c9MIlK:AI*R<rZ"r5lX(G5QsG=5=%V&rBUQO
+5sRY!r]gcU69mb"5!M:u5lOa`62WtK8l>Rj!*K/%qcN;ioiV5ss&f;&rD`o"<E/oq!*&qr!*&kp
+!`W0"r)<Ypp/:fcr_i_m"B&/s;H!?gs&/kqrepo<NfO+"!K`HCP5g^GPl?sJQ2m9NQi`\ERf8cW
+S=TYN&>,VgTqS3TUSO]^V5C/gW2]cr=0&F)Xfek3Yd(L?Za@-K\%&uZ]">Vg^;%Fu_8=+.`Q#s>
+aND]Lbg+M[d*^:jeCE.%f\,!4gtgfChr*JQj5]4^k3(sml0@U$m-X60n*oi:o()DDo`"O`p&Ojc
+q#C0iqY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcE(VlMgVXqY^$`r;-?eqY:$`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s-,N\"H
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bc-4A'TDkGSSH>=NS,SlMR/WHPR/N?OR/WHLQ9Lh-
+ObeO3I=6W[BWeJ8VPBcOQBJ/.OH5H_NJrgSMh$D3K7m`E@U?XV\$WQN['XalQ^*N1GBnF[H@UU'
+N;SY<NfB!VMYr;2M#E)/LAlo*K`6W%K_^?#K`-VqLA$?$KE-Z'KE?j\KDU9!Jc:9$K)gN&JH15q
+J,XosI/nZmIK+cqI0"_BpNljdr-J?hrH\HhrHJ<frd+Ngqg/-br-8'`r-A?ird=Wjq0MRXo6gOa
+s*Xip!.OoqqL8!b!J#[uJGt&uJGt-"K)UB'KSBAXs+UK-s+UK+s+LZ4Ll%"?H[Ga<%!d&ABPqa*
+CM@U1F%uX/r*BB/r_WGsp07l-=]eg1=^"s2r`fD+r`T5&$WkBj=BJ^.=&tp%[JZd!U&LecV#R4f
+UAq%eV>d@fVt[(bciMJ;qTJl^!6bAa!6b5_!R&XVaoBNRao9E`MMqIm!f`5#rf7;GOcbfiPEV71
+Q2d-MQi<BPR/i]TRfT%MrgjLiTV/!PU8+KZUnssfVbj=kWiE,$Xf\b0YctC<Za7$H[^WcW\[oDc
+]tV7r_8=(,`Poj;aN;TJbg"GZd*^7ieC<($f@\g2gYCWAhr*GPj5]4^k2tmll0@U$m-X6?mfr:O
+o()DDo`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#s4dR(~>
+JcC<$JcE(VlMgVXqY^$`r;-?eqY:$`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s-,N\"H
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bc-4@bL%p?$K*$XWKD^?#Jc1,uJbXceIj9&UCh7$Y
+?=%&B<e>pPI!U$ZEc-PmOH5H_NJrgSMdp4+A7ba@"'(>>MuJP4L'D!oG&VMWCAquNDK9c?r-86e
+rcn9`rc\<arcJ0]s)e6]r,h[SrcIUOpN6@Ts)J*\rGqaSrG_dTrc%jTpMg+Ms)A!VrbqpWE,bbo
+n885CrG;FL!GlWMDZ+GHDZ=SRD#S;EDZ=PUCi+$,rbq%=nSe>C!,qjSs)7gSpi6:RrGh[QqJl=O
+r,Vm\F8g:]FV].EGBe.HE,TT2DJa6)An5F^@Ua"^:&[oc;ZMdU;#X>i;Z9Mo:f73is%r\l!`Drp
+qbd2ds&&f]s%a#!:JOW2MMd1FLl%#_M#`G3M>E,+Mu/J0Mu9(ERfAfPR/WKRR/WEPR/33NR/WHJ
+R/`NPQ3*D?R/NBOR/`NLQN!3OMMqIm!f`5#rf7;GOcbfiPEV71Q2d-MQi<BPR/i]TRfT%MrgjLi
+TV/!PU8+KZUnssfVbj=kWiE,$Xf\b0YctC<Za7$H[^WcW\[oDc]tV7r_8=(,`Poj;aN;TJbg"GZ
+d*^7ieC<($f@\g2gYCWAhr*GPj5]4^k2tmll0@U$m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0iqYU0h
+r;HTdrdk*#s4dR(~>
+JcC<$JcE(VlMgVXqY^$`r;-?eqY:$`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s--0=4J
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bc-4@1<)Z`p<;fhq<;okt<;]bp<;onr<;ohr<;'8i
+<$4.X1G::./1iG42afqr5<V+h4#^'"OH5H_NJrgSM`!<i2&e\@5!2M384cHI8P)6:4YoT#:Jstb
+:f:1i;H*Qor)<DgrDNVnrDNVlmo&[S!)iYjs&/hnr)!&`qb[;is%r\j!`2`kr_WSkr(mVo:f:1g
+;,U<j;=dW]:]=,g:]F2h:]!rg;>X5k;#3ue:A@Wa:A[id;".9B:]OAl:]OAi;"[]`;#aDm;?0Sm
+:B=<johk`cs&&ems%aJ.;,U:j;GU+c;H$Ll;H$Oi8kVfK91;9Dr_EAT!*9(q!C9!M5Q!bM5sRY#
+6:1W:"@,7=5X565$pd3F5<_7q5X@Y"<E8o]!_ZBgr)s&%!*B)#qH<f$q-!Amr`K8(=8Pu!<`N/u
+;Z]os;uTbp;Z]ou<W#er;ta,e;>sJm;$9cq;c6Ni;?'Mq;i6M4Muo!!NrG(EOHGZgP*;)org!ML
+!13\Ps-WkUrgNqYSc52gT:hjNTq\<WUnjiarhiSkWN)u!XKAV-YHY79ZEpmE[C3QS\[f;`]Y2%o
+^VRe(_o9U7a2lBFbKS5Vcd:(ee'umuf@S[/g=tE=hV[8LioB([jlY^hl07L!m-O--rpL'\nac8B
+oCW%Ts7QHerV6Egs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE+WlMgYYqY^3e!*K3sr;-?eq=ss`rq?6^s7H?_rUU!Ys7$$Vs6]mSrp0[OlMg#Kki_s-
+,N\"Hj5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHOJTTDkGSSH57MrgNkTnX'<CrL!SN0UA&l
+Q=l_ON.cY/I!pKXB!&#0VP0HGR$!>_ViQn!NJrgSMM[1GK4AD#@'7#K[C-"@%<6H6J;ps\H$FX]
+JqAmUN<G9$N/W\nM>rD1LB*).L&?W(KD^DuL&H]'L%U0%Knb?]K`Hf)Ka!3bKnP,3rIb6+KS0/R
+r.4m"s+:<'rdb'"pj`9l!e#HDr-eTord=fpHhVgeI!bj="*o3>Hi89jH2VsfH2`-hH2DpaH2W!`
+H2W'hHiJKkHhi!WHh2XaHiJHpI=?YEIJJ?dJ,XoqJ,b&sJ,b'!JcC?%KDpN(KDpN(L&Qi*KER!`
+Ll$ufM@kAbI!L!`H?j^IDf9N/Bl%s5r_EJhra,P"qH`f"#[:J7=^"s3=]t`.r`T;)rE'M1aN7Oe
+=]ea+V73k,UA^ecU&^tfV#R4iUAgqfV#7(hVY-k`VYSR>ccu=0rlbAcrlP5aqoo)`!6XlSs2slR
+"j2[YMMd>kMuo!!NrG(@OHG\)Op@28Pa.N"QC%T<!h#LGrgNqYSc52]T:l1W?)"*iUnsobVl-Jm
+WiE,$Xf\b0YctC<Za7$I[^WcW\\#Me]tV7s_8=+.`Pom=aND]Lbg+M[dF$CleCE.%f\,!5gtgiE
+i8ESSj5f=ak3(smlKdg'mI'E2n*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE+WlMgYYqY^3e!)idmr;-?eq=ss`rq?6^s7H?_rUU!Ys7$$Vs6]mSrp0[OlMg#Kki_s-
+,N\"Hj5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHOJTL&-JsK)gN%Jc1*!Jb=NoIt79C,?/c&
+Bk(LX?XR;D<J#[IHZsRQEc#N&KTD1SNJrgSMM[1GAGoO1KoCrhM#W2??t3baFGjjKC27^-Ecu\Q
+rHS<erHS3`rH80`rcJ0]rcJ0]qfMUSrcI^R!d&R-rcA-]r,hjXr,VRPrc%jTrc%jTpMg+M!-%pU
+rbqpWE,bbonS\ADs(h[Nr+uIND>S5MD>S2ND>eAPD#eDOD=h`DD>nJ;DXq`DDZ=YSDZ=YQE;=MQ
+EW^<#E,k_ns)A$Xr,MRRq/cOWs)eBdGBa%2&TVi0DJa9-DJWosA7]7[@qK9N:B+,h;uKPl;>a>k
+;#sKjr_ibmr_W_p;c<Kiqb[8hs-<U[##J)j9n/%XreU'#qhk0,r/CK1qj[VSs-`_Nrg<bRrg*VP
+qjIJOrg3GJs-N_N!gf:ArKmPOs-NSJ"db(&MMd>kMuo!!NrG(@OHG\)Op@28Pa.N"QC%T<!h#LG
+rgNqYSc52]T:l1W?)"*iUnsobVl-JmWiE,$Xf\b0YctC<Za7$I[^WcW\\#Me]tV7s_8=+.`Pom=
+aND]Lbg+M[dF$CleCE.%f\,!5gtgiEi8ESSj5f=ak3(smlKdg'mI'E2n*olHncA@Srq6<b!;HHe
+s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE+WlMgYYqY^3e!(Qqar;-?eq=ss`rq?6^s7H?_rUU!Ys7$$Vs6]mSrp0[OlMg#Kki_s-
+,3@nGj5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHOJTr`&eqqc*>jrDWbsoi(rj<;KPm<&uZj
+1GCF2.kE;)3&3cc5Wq7l4#f/W1fBBqNfB!VMi*@JLc%=X5!;J18P)QJ8P)6:77B^?:Jstb;#=,j
+;uK\o;ZK_k;>sJm;uBPn;>a;l;tX&Z;u]bm;>jDm;>a8`;>X2i;?'Jl:BXKk;,C*f;>j>k:BjWn
+;Gg:h;Z0Jd:]aKj;#=&f:B"&h:B"&e:]OAi;?0Sk:BOEh:/:R[r_E>dr_W)[j\YtSp/(T_s&&ho
+qbRAl;GpBj:B45_;$9]m;,C*g:BOHl;H*Nl&Pl5";,L7h;cc^g92%uM9LM>K:B+,h55e:Y5sYE6
+r'1EO5X.P$6N'1Q5X@\$5Q3qJ64,tB5!D1q5sRY7<Vo#a9Mn\j=oMM'=8Q+u=oDP(>Q7n(=oVV'
+=o)8"=oVS(<;TZ%<`N.!;c?Xp;cEWor_ikt<E8uss&8Vhr)*Gkr_Wer;c?RlqG@DoM2@+IMuJY:
+NK0%uNrkE*OoCLKPE_;sQ'R`&rg3bTR[X5F!M#_[ScPIVrh3VlUSO]^V5C/gW2ZesX/rG*Y-5(6
+Z*L^B['mEP\@K/^]Y(ql^VI\&_o0O5a2l?EbKJ,TcHjncdaZdsf%8R-g=tE=hV[8LiT&tZjlY^g
+kiqBum-O--mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE.Xli-_Yqu$6ds0D_&r;-?eq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-k
+k2k[aj5T%si#:M0h;-l@g=b-1f@JL%eC2jndEp4bcHOJTb5Iq*Sc>5[S,Si@R/<3kSXGUrJ9ZNn
+Iq`T!XJr%lSXPn0Nf&UFJ9d-5N/NSmM$\unL14SN\@8lRrj32lF*<(o[Wd"BH?t3qMN<enN<bK'
+N/EONM2D4fr.k6)rIk3'r.Om"rIk-'onE[)L5(D9KS92UqLep(KS08U!.k-$rIP!#s+C9$!.aio
+rdFlrI/A?lIf=cqHi86jHi/3iHiJElGm&G?H[:#;H2MmeH2`-hH2W'gGlW0iH2Dj^H2W'hHiJKk
+Hhi!UHhMjdHiJKnI/n`qIJ83cIfY"HrdOlss*t-"If=isJH(3#K)^K'K`?](KEHp_Kn]JY"GV\f
+Ll)%e'7Y=UH?jd^G]RP:DJO!%D09bl:B"&d;#=Pt>QA(*>R4P:=BSg1>$5&.>Q.e+=oDG2=3/Kc
+=]nj.?E:QCUA^ecUAq"fV#@(eV#@.iVY$e`VYAF<ccl7/rlbMgb0%oNqof)ab4`sVaT'B^b43RR
+M#N54MMmDlMuo!!NrG(@OHG\)Op@28Pa.N"QC%T<CRLW[S"#q<SXuFFT:hmOU8+KZUnsrdVl6Sp
+WiN5'Xfek3Yd(L?['d?N\%&u[]=bej^V@S$_Sa=2`lH0Bb0/#RcHjkbdaQ^rf%8R-g=tE=h;@/K
+iSrnYjlY^gkiq?slg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE.Xli-_Yqu$6ds,R0Wr;-?eq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-k
+k2k[aj5T%si#:M0h;-l@g=b-1f@JL%eC2jndEp4bcHOJTb5-ecKE$Q&Jc1*!Jc(&tJ,4]jIi``P
+D.R*Y?XR8D<e>mOH?sdWEc>c*A7K"RNJrgSMZ/G<Lkg^c<cF"UM>i;@L2171CitYMCMIU%F)lI"
+GlE!dGl2d`G5ZL_F8g:]F8L(SF8g:PFTur1F`__HF8^4XF8U(VE<'tWEW:"VDuXeTDte5NDuXeU
+DuXeVDuXeUDt.`ED?"DPC]/,MC]J>LDZ4MODZ=SODZ4JOD=h`ED#eJQDrts0Du=JQDuOYSDu=SM
+EW'nXEVOMQEW:"VEVXYNF8g7^Fa!b.r-/lrE,TW2DJj<-AS,L`@prk[A55o!:]!uf;>a>k;#sKj
+r_ibmr_W_p;c<Kiqb[8hs-<U[#Z+;l;1sgaLktSXqMP--qMb<0q4%DQs-`_Nrg<nVQ^=),qj@GO
+rKm>Is-N_N!gf:ArKmPOs-NSJ!/UW2!fDnorepo<NfO+"!g&P,rfRMMPa%GuQBmm:Qtr+YR[]e:
+S=Q7CT:_dMTq\<WUnjiaVl-JmWiE,$Xf\b0YctC<Za@-K[^WcW]">Vf^;%Fu_SX4/`Q#s>ai_fN
+c-FY^dF-Lne^i@)g"P39h;-uHi8N\UjQ5OdkNM0plKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<g
+qu6NlrUg)?s+14)s*t~>
+JcC<$JcE.Xli-_Yqu$6ds&9!qr;-?eq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-k
+k2k[aj5T%si#:M0h;-l@g=b-1f@JL%eC2jndEp4bcHOJTb5,-8<;TYs<)lrs;ufqr<;ohm<;KPn
+<$""V1bUC//1iG52FKhq5!D(h3]ArR1GLU:NJrgSMZ/GNLkg^K5"&"78P;]K8Mrk'6qC!K;GU(b
+;c6Nm;>sJk<<#nr;Yj8i;Z0Pn;Z9Pk;?0Yg;Y!cc;Z'Dk;ZBVk;#*rg;#X>h;#aDm;#X5n:f1(d
+;#O8i;#a;q:f:1g;,U<k;=[Q\:]=,h:]=,g:]4,i;>jDm;#jGk:BaKi:esh]peUlaqbR2fn5&mW
+r_MuZ!)`Abr)*Djr)!Djs&/kns%`Vkn593^r_EVm;GpHk;ZB\p;#aB&;Gg=j9he8Q8kD]E6r$MV
+:]!rh5sYE6rBU?J"$](<6N0:N5lX+N5X565s$@&Y5<_7q5=%P!<E8r^"[Pj[;HR'#=8H&!=oV\'
+>Q7n"=nc%u<W?%r<=)]+<E)mq<)cdprD`eqs&B"urDWbqoht]br_i_m"B&/s;H!?g!/UW2!fDno
+repo<NfO+"!g&P,rfRMMPa%GuQBmm:Qtr+YR[]e:S=Q7CT:_dMTq\<WUnjiaVl-JmWiE,$Xf\b0
+YctC<Za@-K[^WcW]">Vf^;%Fu_SX4/`Q#s>ai_fNc-FY^dF-Lne^i@)g"P39h;-uHi8N\UjQ5Od
+kNM0plKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrUg)?s+14)s*t~>
+JcC<$JcE1Yli-_Yqu$0bs0D]-rqcThq"Xj_rq?6^rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3l
+k2k\'iud:>i8EMLh;-l@g=k64f@JL%eC2jndEp4bcHXPUb/sURpmqAR!1NkSoU,ZFq3_,I%%`oM
+Ne;_,I=-QZB!2-3)k`^hQB$oZL4F\sG'KpCMM[1GLPCP;KS-_@[JmNFQ)o1[O1KO\H@:*kJr5_Q
+O,j$q!fi8!reg`4reUK-!/CH+rIb0'r.Oj!re16(onNBus+L3%r.G-*KS05Ts+(0%r.4m"s+C9$
+!.aiordFlrI/A<lIf4]pHiA?jHi86jHiA?kH2i6kHN&3eGQ<$gHN&3gHM`!aGku^`H2r<kI/J?f
+HKTYQI/SBoI!pHmrdFKhqL8WsI=6Qnr."`qrdXru!.k*#qh"m%re:6&"GV\fLl)%es,7SAH@'p^
+H$X[UAohj,C2K,U:/:daqb[/qs'5S0q-420>$+p2=^"s3r`fA*rE0)$$cpFl=]nj.A[8eQ[/H["
+U8+L_U]@1dV#@.iVX^S`VYAI;cN)2cbPo]gbK@uNbPTKabKBP#rQ#)_b0%j)aS3gVLB*/0M#rQm
+MuJY:NK0%uNrkE*OoCLKPE_;sQ'R`&rg4(]R[T_8S=Q4BStD\TTj"1cUnjiaVl-JmWiE,$Xf\b0
+YctC<Za@-K[^WfX]">Vg^;%J"_Sa=2`Q-'@b0.uQcHaeadF6Upf%8O,g=k<;h;7&IiSrnYjlY^g
+kiq?slg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE1Yli-_Yqu$0bs,R.XrqcThq"Xj_rq?6^rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3l
+k2k\'iud:>i8EMLh;-l@g=k64f@JL%eC2jndEp4bcHXPUb/sX9!el;\p4N9os+(*"s+(#s!e>cM
+q1/En.<fcLBk(IU?XI5C<e>dKH['^UE,96#ARJnN>$Q`=MM[1GLPCP;KS,0]M%>DsE.MY<G)g9P
+C2@d.Ed7S/qKVp`rcn?br,r'_rH&$\rcA-]qK2OSs)ddRr,hs[rcJ!XrGqdTs)7sXrc%gSs)@pT
+pMg.Ns)@sU!-%pU!-%mTnS\>C!c2Xgrb_XN!,_UNrb_XPrb_UO!c;airGD1ErG;OPrbqXNrbq:D
+rbqdRqeuCMs)7mSs)7jTpi6:R!-.aPs)J'Xrc.[Qq/cRX!HiSbGPl^cH3/,+Du=GQCLd?S"_(th
+Akl,#:]!uf;>a>k;#sKjr_`bo;#X;n;H$Kj;>X2h;?)p]:Bs]l:037/MMUeZqhk9/q2><3rf$i7
+!1N_Qs-itUqO%8M"IPOBR$dc=!1<bPpmD)Jrg!VPR$di=s-WhQqj.8;!/UW2!fDnorepo<NfO+"
+!g&P,rfRMMPa%GuQBmm:Qj]=NR[]e:SXl@DT:l1W>,%dfUnsrdVl6SpWiN5'Xfek3Yd(L?['d?N
+\%0&\]=bhk^VI\&_o0O5a2l?EbKJ/UcHstde'umuf@S^0g=tH>hV[8MioB+]k2tjjl07L!m-O--
+n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#s4dR(~>
+JcC<$JcE1Yli-_Yqu$0bs&8tfrqcThq"Xj_rq?6^rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3l
+k2k\'iud:>i8EMLh;-l@g=k64f@JL%eC2jndEp4bcHXPUb/sW_!`i<$qc*Jns&Atts&B"u!`i<#
+r)3Yr;cEKkrDPj<2)I$@.k</'/N>UR5sIOr4?GM]2Dd0D0.nk1;N$EhM26qAL4t;58P)QJ8kCZu
+6q'[@;,L+c:f:.g;Z0Jl;?0Yo<<#nr;Yj8h;Z0Po;Z9Pk;ZB\i;Xm]c;Ys>k;Z9Pj;#*ug:]OAh
+;#aDm;#X5m:f1(dr)*Dhs%`Yl;Z9Mn;Z0Jd:]O;j;#F,f:&n)g:B"&g;#X>k;Z9Mn;#X5p:/=\_
+:JO[[:]F2d:]=2\:\did:[h3\;=dW_;>sGn;>j>k;?'Mt;,C(b:JgRYr_WVjs%r_n!)rhor_rhp
+rD3u$;GpIo9h\/Q8kMcF:/:daqbR;Z5lO"H5lO%O5=%V&r^$QLs$6ZN5Q3qJ63'=N56!kI5n6+Z
+<Brf65X7Y2;,U=o=8>r!=^(Z+!*\tspfRMqr`&hr#$+`(<)cdqr_rbps&8qss&K"s!)rPgr)*Gk
+r_Wer;c?RlqbdBK!/UW2!fDnorepo<NfO+"!g&P,rfRMMPa%GuQBmm:Qj]=NR[]e:SXl@DT:l1W
+>,%dfUnsrdVl6SpWiN5'Xfek3Yd(L?['d?N\%0&\]=bhk^VI\&_o0O5a2l?EbKJ/UcHstde'umu
+f@S^0g=tH>hV[8MioB+]k2tjjl07L!m-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#
+s4dR(~>
+JcC<$JcE4Zli-bZqY^'as8)c%!*B*oq=sp_rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ.d6'X
+k2k[bj5].Xi8EMLh;-l@g=k64f@SU'eC2jndEp4bcHXSVb/q_rq47DQ!h5XIrL!eUQ^=)+r0[DK
+qO%5J.[lQ]L4=DqIt26GYH4V"V4O'APE(KUKn"DmG^t<rVhp4bLPCP;KS+o/rj3-(R%'G-fQVUe
+I=-[!MuJk@OH5FrN<P9!MMd7IreUK-!/CH+p4W3ps+L?)onNBure1-%r.G-*KS05Ts+(0%r.4m"
+!J?"&JH15qIft4MIXQV@I/n`qI0+eCHiA?jHhr'fGlW3jHN/9eGQ<$gHN&3gHN/6jHN&3dGku^a
+HN/?lI/J?hHK';OI/SBoI!pElrdFHgqL8KorI"`rIt.EGrI4m!JV!fPqh+p%!el;[rIb3*L]3)0
+M>`;3MuASHIX?BdG^4OXEG9B1CMI[qE_cU0qb[/q!*oM/q-420>$+p2=^"s3r`]G-=^(c+s&TTL
+a]M\K=BB@K\$`UBT`Us`U\LVcUSRjbs/,=a!N)dfciVP=bkfN^bQQ,3b0/!*bQ5o0p<!9S"3J^.
+ao0<Vao7"rLPUccM#rQmMuJY:NK0%uNrkE*OoCLKPE_;sQ'R`&rg3_SRf8cWS=TYN?([d`Tq\<X
+UnsrcVl-JnWiN5'Xfek3Yd(O@['d?O\@K/^]Y(qm^VI_'_o9U7aN2KHbKS8WcdC.geC<%#f@\g2
+gYL]Bhr*JQj5]7`k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE4Zli-bZqY^'as8)bV!)`[iq=sp_rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ.HosW
+k2k[bj5].Xi8EMLh;-l@g=k64f@SU'eC2jndEp4bcHXSVb/qa(K`Hf&KDpN)K7`fJs+'opqLJNo
+4*#4R@piJI@:<8>Jq/2qHZsOPDe`lq@UNMG>[q;TKSbM?LPCP;KS+o/M2-h*EHuSKW+g$_Ci4<7
+GPla_Gl)ddGl2d`FoZ[`F9$CTFSp4YFRaMOFT-@]FS^%\EcH)>qf2XT!-/!WrGM[Tr,;=K!,qjU
+qJQ@Qrbq=ErGDRM!c2^jrG;=Jrb_[QrGDLN!c;airGD4FrG;OPrbq^Pqeu"BrGVUOrGVUO!,qjS
+s)7gSq/Q@R!-.dQs)J!V!-.^Qq/cRX!-\<brHJTnH@(!bEGoc7rbW!YBk1ge@q&r5APW5#qb[8h
+r)3Mk!DlYm;?p&q:f1(f;c<Kir)!>hs-<U[#>e2k>DnDsM"?K"MYi>0N;8A3N;f:ARfJoVRJN<M
+R08nDQ^F0;R/iWRQhZsJQi<9PQ^F0=QiEHQQi36LL'!-dM#N54MMmDlMuo!!NrG(@OHG\)Op@28
+Pa.N"QC%T<!L]DURfT%MrgmDfTV8'RUSO]^VP^8hW2ckuXKAV-YHY79Za7$H[^WcW\\#Me]t_=t
+_SX40`Q$!?aihlOcHab`dF-Ooe^rF*g=k<;h;7&IiSrnXjlY^gkiq?slg4!*mdKW6nc&([oCW%T
+s7QHerV6Egs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE4Zli-bZqY^'as8)ap!(Hh]q=sp_rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ.HosW
+k2k[bj5].Xi8EMLh;-l@g=k64f@SU'eC2jndEp4bcHXSVb/qa(<WH.r<;fhq<;]bp<WH+u;u]bp
+;u0Jl;[bTA0eP%-/1iG52FKh0579P63]AoR1,1I9/M@#Y*)_WLLPLV=KnP)2JkJ^-0JYgL8QSef
+:f("f;,R<jrDEPlr_rhrr_rhpq,.)gr_rhpr_`Pjs&8\jnPfHcqbdAkrDEGgqGI8h!)`Shs&&em
+r_EVm;,L0f;$Bcn:f'q`r)!Glr_`>b!)NSjrD32`rD3GirDESmr_WYlrD*Mj:Jame:A@Tb:ARcc
+;".9W;#X8Z:]OA`;#X>j;?0Sm;#aAn;GmEi!)NSjnkoE`r_EVm;,U?k;Z9Vm;?Tip:f($g;@-8q
+91qlL927iLr_NDf!C9!M5Q*kH5m'>:6:1Z;s$6TM!C/mK5ScXP5sIOs5<hG"5?1]K5X.M!6r-ZX
+;YaGp=oV\)>Q%at=nl+s<W,nr<<?3$<W,nr;uK\q;u]hs<W,ks;tX&d;>sJm;$9cq;c6Nl;>u:O
+LPUccM#rQmMuJY:NK0%uNrkE*OoCLKPE_;sQ'R`&rg3_SRf8cWS=TYN?([d`Tq\<XUnsrcVl-Jn
+WiN5'Xfek3Yd(O@['d?O\@K/^]Y(qm^VI_'_o9U7aN2KHbKS8WcdC.geC<%#f@\g2gYL]Bhr*JQ
+j5]7`k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE4Zm/Hk[qu$-arqZf)['Wq;q>'gap\sm`p&=U`oDJ1Znc/+Xn,MeUmJcJPlN$5Lkpko[
+k2tdejQ#:[iS`YOhVI#CgY1B7f[na+e^W'rdF$=ecHa\YbK@rJaS_V-SH#/ZSH#)VRK&ZGQhm*L
+QURF3Nei74I=?ZtAn\?HVP^#UR[B.pL4Xu)H$4F_K7SW-KSP;:KnP)2Jq8K'I]edMO4AH#H@:9q
+K8YqWP*1rhO,f3Yq2PB3s,$f5reUK-!/CH+p4W3ps+L?)p4iHure1-%r.G-*KS08UpjrHs!eZ)V
+rIO`n"FbiLI=1d;$[d;JH?spbI!^0cH2`-gGli>=HN&3dGl;sfGli;;HMVpaGklX`HN/?lI/J?h
+HL6(ZHLcCbI!pHmrdFWl!.FiqqL8KorI+]ps*srqrdP!"JV!fPs+:<'re(3's+C<(!JQ:-M#W>2
+MZ8V4N"_2!IX??eH?aXNDej6-Bl/*9:J^jar_`Jsq-420>$+p2=^"s3r`]G-=^(c+s&TZNa]M\K
+=BBUR\$iZKUAgqbV#I+iU87dbrhfUk!2fFeo[!ZccHQ..rlbMgb0%oNrQGAebfe0&ao09_ai_cJ
+rQ+iWs+UH,!f)SfreU]6Mi7Rns,@#=rf7,BOcfX+#EtC:Q'IZ$Qi<@`R@9V7S=H.AStD[LTq\9V
+UnjiaVl-JmWiN5'Xfek3Z*L^B['mEP\@K2_]Y2%o^qmn*`5Ta:aN;TJbg"GZd*^:jeCE.%f\,!5
+gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>^<gqu6NlrUg)?s+14)s*t~>
+JcC<$JcE4Zm/Hk[qu$-arqcVTs&&jmq=sp_rq?6^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ/a2B[
+k2k^cj5].Xi8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXSVb/q`GKnP-VKDpQ(KE$PsJcC8rJ,4]q
+IlhakCLppZ?=.)M<EFd$I!U!ZFE),1An5=X?!:KEA7K1^A;>noKnP)2Jq8K'@srEXG,8ngCi+*3
+F*IJ+qKVj^s*4Kdr,r'_rH&$\oQ:%QrH.UQqfMgYs)e*Y"*/C$Er9qSE;XVSE;OSKDuahUE;"5@
+DZ"AOCBA<hD>e;IDZ4JQDZ"AMDZ=POD=h`ED#eJQDuX_NDt%ZDDu4GODu=MQDuOVSDu=SLEW0tY
+EVFDPEVsbUEVa\UEW1"SErgB*r-/-bs*=Tjrd+Ta&8uH)DJj9&A7]=_@q01`:J^jarDEJjs&&em
+!)`_n#>n;o;,L4i;Ys>h;#O8kPmU8^:eshpMi3IKL\?T$MYi>0N;8D3Mu]:FRe`EQRf8`OR/WKV
+R$X/,R/NESR$j?@QhZsJQi<9PQ^F0=QiEHQQi<<NL&Qf.LPUccM#rQmMuJ\8N<#"<NrkE*OoCLK
+PE_;sQ'R`&rg78bR[]e:S=Q7CT:hmOU8"EYUnsrdVl6SpX/rG*Y-5(7ZEpmE[^NZT\[oDc]tV7s
+_8=+.`Q#s>ai_fNc-FY^dF-Lne^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4!*mdKW6nc&([oCW%T
+s7ZKerqQNhs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE4Zm/Hk[qu$-arqcUns$d"aq=sp_rq?6^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ/a2B[
+k2k^cj5].Xi8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXSVb/q`G<`N/s<;ono<;fhq<WQ3"r)3Mm
+qGdJn*&fc30.\S)/1iJ42aK_n4Ztkg3&`]P0ek@8/hd/Z)Dj7*L5(D8K7ec,JUfF24[;P=:f1"c
+;c?RkrDNVl!`2`kr_i_o!*&nqs&/em!)WYl$W9i";H$Ll;Gg7f;>X8k;u'>g;Z]os<;TVm;Z'Dl
+;Z0Ji;#=,`;#X>l;#a;k;#*rl:f1%c:Jgg`p/(cbs%rVhrD!>grD*>fr_WPj!`Dlmr_WPh"\qii
+:JO[R:]=2\:\did:[h3\;>3oe:]F8i;>sGn;>j>k;?'Po;#sKhrD<;e!)WSjr_WVj"&Mim;uKVn
+;ZTcnqbmGks%j2(;Gg=g:/";R8kDB<:J^jar_`YZrBU?J"$]%;6N0:N5lX+N5X565'L>&O5<_7q
+5=%S"<E2=M5<qJ&:Jq*hrE0#$r*&VnpK.DprDi_o"BAK'<E8usr_rbps&8qsrDiks!)rPgr)*Gk
+r_Wer;c?Rlr_`]Lre:K0Lku%e!fDnorf$l:!07&>!g&P,rfRMMPa%GuQBmm:Qt;\SS"#q<SXuFF
+TV8'RU8+N[V5C/gW2ZetXKAV-YHY:;Za7$I[^WcW]">Vg^;%J"_Sa=2`lH0Bb0/#RcHjkbdaQ^r
+f%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0iqYU0hr;HTdrdk*#
+s4dR(~>
+JcC<$JcE:\m/HhZqu$0br;$Nk['d=@=Sqmlp\sm`p&=U`oDJ1Znc/+Xn,MeUmJcJPlN$5LklL#2
+roPWjjQ#:[iS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHa\YbK@rJaN'jBrLEhW!1a"W!1NhRs-WeP
+rg*AHqNs@2S<T%cH[L3hIqE;pWMZYhSskt2O,SmJJUDTaJ:N3%J:iN0L4t;6K7ec,J:O,KXc0i9
+G^P!lKS59^PQ-dKOcYWaNW+n6NW"e8M?8WjM#<#.LAci!K_U6$K`-VuLAZc(K`?`/KS>)5L&?T)
+KnK>Upjr?prIOZl!e,NEr-\QmrdFfos*FusH[C-fH[9u9HMr-hHN&3gGQ;seGlE$gGm8S?H$Xa]
+HN&3dGku^`H2r<kI/SEiHL6(YHN&9jHMr3jHN/<oI!pElrdFHgqgSTpr-e?hrdXourdt0&s+:9'
+!/1<'s+CN/L51S@rJCQ3s,6f6'TJ-4H[L-bHZsaZCi*s)Ci+*5E_lR/r_`\nqd'#&#[:J7=^"s2
+>$Co0s&fA+=oMP'=9$DB=UA87>(*lh[^<<7qkX7erLsChUnspeVZ3RmVYm@kW;WXcciMJ<q9/c]
+"O"s1bKKk.rQ>2`prWKU!6P5_!6P2\r5ntk!ec8]re:K0Lku%es,$f7rf$l:!07&>!g&P,rfR;G
+Pl?pUQC!r*R$jD3S"#q=rgm;cTV8'RUSO]^VPg>jWN*##Xf\b0Yd(L?ZaI6M\%0&\]Y(qm^VI_'
+_o9U7aN2NIbK\>Xd*^:jeCE.%f\,!5gtgiEi8EVTj5f=akNM0plKdg'mI'H3nF?MK#kR]\p%A%P
+p\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE:\m/HhZqu$0br;$Ehrf@%VqtU-arq?6^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ!U/_G
+js]?Pj5].Xi8EMLh;-l@g=k64f@SU(eC;spdEp4bcHXSVb/q`Ga+T-EKDgK&KDpJrJH15qJ,Fir
+Il_[iBjt=R?XR8A<e>gJH[0gXEc>i.AR]+T=^#<G@q9([A7fJ.KS4u1Jq8H&FDuePNG33FDK'Z=
+GPHI^GQN/8GklXbGlDpbFoZ[`F9$CSFT$7_FEM_JnoakPrH&!\s)S0\rcA*[s)A$Zr,MUQol'MB
+qJQ@Orbq=ErG;[RCMRa'rG2INqelCM!,h[Nrb_dSCi'&eoPXYFs).jTs).UMn8A5Dr,2IOr,)LQ
+rbhaSr,DIOrc/!Yp2C"Or,DIP!-/!YqJu^[Fa!Y+s*4Qhs*OWhs)A!U%<$'"Ch76jARf.YB4Xm9
+;#X>h;ZBVn;#X>t;,C(d;,U=jqbd8frDET[!DZGi:^(EgMi*=GpPJd)qht<0qMYB4rgEeTq3qGS
+R@3l<rg<nVQ^=),rL*SN!13MKs-N_N!13\PrKmPOs-EnTK7ei2L&Qf.LPUccM>rG5MuJ\8N<#"<
+NrkE*OoCLEPEc'3$^R-GR$a;1R[]e:Sc53aT:hmOU8+N[V5C/gW2ZetXKAV-YHY:;Za7'J[^WfX
+]"G\h^V@S$_Sa@3`lQ6DbKJ/UcHstee'uq!f@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X60n*olH
+nd+jZo_%nNp@n=\q#C0iqYU0hr;HTdrdk*#s4dR(~>
+JcC<$JcE:\m/HhZqu$0br;$Ehr`&kdqtU-arq?6^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ!U/_G
+js]?Pj5].Xi8EMLh;-l@g=k64f@SU(eC;spdEp4bcHXSVb/q`Ga&Q.<<;fhl<;fhq<WQ/ur)3Mm
+qG\S92`*3?.k</'/iPXR5s@Ls4?>J]2Dm6E0eY+11c$pEr\G?I22-^:K7ec,J:KO?5"A7@:esqd
+;c6Ki;Z9Pm;#aDm;Ya8j;ZBVn;#O8k;?p,u;Gg7e;,R6hs&8hns&/nqqbmPq<E/iorDNPjs&/em
+qb[/eohbZcs%r\j!)WGfs%i_l;#O5k;#X>c;#X8j;#F,g:&n)f:B"&g;#X;n;Gg<j;#O2i:'=?h
+:JO[R:]=2\:\did:[h0\;>*id:]F8j;>sGn;>a5l;,U<k;#sKhrD<;e"Ahrm;GmBh!`)WiqbmAk
+!E)el;ZBZ':f1%d;c-Ik9MJ2Sr^m5[78NeWr_`\n!'gEIr]pWN5XIg:62s4M5lj58r]h/`69mau
+4[2.r5sJ@L5sRY!5XnOHr_`_ukZRR\r`&ksqGdJq!*/qrr_rbps&8qsrDiksr_rSir)*Djr_X##
+;c?Rl;1jLSKn]M\!f)Sfre^Z4!/pi8s,@#=rf7,BOcfX+!L&cIPm`nEQ^F/.R[T_8S=TYN>+_I]
+Tq\<XUnsrdVl6SpX/rG*Y-5(7ZEpmF[^NZU\[oGd]t_=t_SX40`Q$!?b0.uQcHaeadaQ^rf%8R-
+g=tE=hV[8LioB([jlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhs8)Wirqu`no_sFAJcFL)
+J,~>
+JcC<$JcE=]m/Hk[qu$0br;-Bf"gthL\6)l4q#0sdpA=O^o`"I\o)J7[nGVhUmJuYRm/QAOlMg#K
+ki_s-.coaOj5T%Ui8<GKh;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD`grZjrLNtYqjRSSr0dSP
+!13VLqNq&G4(k"CMLp)$I=PsBR]NBaUS"!CQ]R)ZKn+PsG'A@eJUrE*KS>,8LUr+iJUi99Qc+WY
+GBnI_JV8`9P5LODP5gXGOH,>"N;JV4MZ\inM2;(b!/CH+on<*o!/1<)p4`U%K`6](KER!^KS>*Y
+L&?T(KDgDtJc:6&JV&LQJHULQIsukCIfY"GrI"frI=-Hkrd=`m#C:`DI!g9eH2`-fH2i3iH2Vsi
+GBe@Xrd+He#'tQ?H?a^\qKVj^r-AKmI!g9fq0MIUpj2jbrd"]oI!pHmrdFWl!.FiqqL8KorI+Hi
+rdXrurdjrus+:]4K7\`.KS5&6LPL]aM>rJ5Mu8P6NrP.PKm\8pH[0p]EGBB1D/3pMF&2^1r_`Ym
+s&8l%q-3u*>$1`+s'#D+s&fA+=oMP'=9$DB=U826@>),![^<=;U]@1eU'@BgV5:&cV>I.fVuEXo
+Vt87;cd:"`q9/c]s2tGcbP]T_b5f][ao09_ai_cJrQ+oY!.t3&!ec8]re:K0Lku%es,$f7rf$l:
+!07&>!g&P,rfR;GPl?pKQC%T<@[W[SS"-">St;RITqS3UUnjiaVl-JnWiN5'Xfnt5Z*L^C[C3QS
+\[oDc]tV7s_8=+.`Q#s>aihlOcHaeadF6Upf%8R-g=tE=h;@/KiT&tZjlYail07L!m-O--n*fc9
+rpg?do^qhLp@e7TrqQNhs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE=]m/Hk[qu$0br;-Bf"cne.P#>3Wq#0sdpA=O^o`"I\o)J7[nGVhUmJuYRm/QAOlMg#K
+ki_s--fsFLj5T%Ui8<GKh;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD`r:VhK_pE%JcULUpjrHq
+s*t#urdXfq*e.11ChI-[?<pu@=*9(BI!KsZF)c&1An>@X?!:HAqd^ISAS#M6K7\Z)J8o[kEJ8+B
+D/XB8Fa3n2!.+KerHS?f!-n9a!-nKer,r'_rH&$\oQ:%Q"*A[.FRjPTFE@G'"ESU)F*.D&!ci@'
+rc7gSr,D:Hs)A!Vq/H7M"E&-qDf>/`rGDRNs(_XOD>e8ND>S5JD?"DWD/O3.DJa3+rGD4FrGDFL
+pi#\?rbq[Or,;RPs)7mS!,qdSpMp4R!-.sV!-.^Os)IpVrc.sYqJua\F`qs+GQ2mhH$Xi5H4b:=
+E,TZ4Df'2tAn5F^@XMc`r)!Air_ibpr_`_nr_WSl"Aqul;,R<jqbd;gr)*KZ$;OAn:fV:hMi*=G
+q2+s*qht<0q2>0=s-ieRs-itUq3_/Ls-NhRR/EBDR/`NPQ3*D?R/NBOR/`KRQ@f*g!ec8]re:K0
+Lku%es,$f7rf$l:!07&>!g&P,rfR;GPl?pKQC%T<@[W[SS"-">St;RITqS3UUnjiaVl-JnWiN5'
+Xfnt5Z*L^C[C3QS\[oDc]tV7s_8=+.`Q#s>aihlOcHaeadF6Upf%8R-g=tE=h;@/KiT&tZjlYai
+l07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhs8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcE=]m/Hk[qu$0br;-Bf"]SK%<^oRXq#0sdpA=O^o`"I\o)J7[nGVhUmJuYRm/QAOlMg#K
+ki_s-.coaOj5T%Ui8<GKh;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD``6#<rDiMirDihts&8ts
+r)3PnqG[VP2Dd*=.fM"53&a)g5X%=m4?GJ\1c7$C0/+t2qD8(-$VZ2)JUi8/5!VP/:&[ug;ZBVo
+;?0Yo;Z9Mr:esna;>jAn;cNZnr_`_nr_WMirDEVmr_WVlr)*Mnr)3Pn!)i\m"&r9"<;]\n;Z'Al
+;Ys>h;#=,_;#aDm;#X8i;#4&g;#X;p:f1%d;>!cb:B45g:]=)h:]*ue:]F8f;?'Jm:C0cl:JOY]
+:esh]qbI2ep.tZank]'Xr_NMis%i;as&&Mer_EMjr)*Jl!)`\ks%rborD<PjrD<;er_NYn;Gm<f
+!)`Vkr_ikr;,R6hr_jG/:Jjte;,L7j;+s_X91hcL6VmVVr_`Yms&8n^r]pWN5XIg:62s4M62s1K
+5SQLN5X.Cp5<hD!5?1]L5X.Iu85E+^;X%?W=Su.t<<6&trDWl!<`W5t<<#np;uoosr)NbrrDWMi
+r)*Gkr_Wkt;c?Rl;1ee"!ec8]re:K0Lku%es,$f7rf$l:!07&>!g&P,rfR;GPl?pKQC%T<@[W[S
+S"-">St;RITqS3UUnjiaVl-JnWiN5'Xfnt5Z*L^C[C3QS\[oDc]tV7s_8=+.`Q#s>aihlOcHaea
+dF6Upf%8R-g=tE=h;@/KiT&tZjlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhs8)Wirqu`n
+o_sFAJcFL)J,~>
+JcC<$JcE@^m/Hk[qu$0br;-Bf"o,O8\@K0L=T8'npA=O^o`+O\o)J7[nGVhUmJuYRm/QAOlMg#K
+ki_s-.-9OMj5T(Wi8EMLh;-l@g=k32f@JL%eC2jndEg+`c-4ASb/hZE`l7kHs.&tUrgNkT"dk^G
+R$X0;QMm0FQmQF6Nei:1I=-NWBs"A3VP0EEQ'@;cKn4]"G'ALgJq8Q,KSG/7L]4jq]7GKuOdql0
+G'\LaIt`Q6rf[2Cs-!DE!g&J&rf$`6!0$i6re^T/s+^H*re(9*q1SBop4`U%K`6]%KER!^KS>-Z
+K`6W'K(sorJdR'\Jq8H'J:E&tIenNpI=2!Ard=`ord=Zkrd4iqH$O^^qg&3frd"Kfs*+Kf!."Qi
+r-A<grcnQiH$T72rH\Ef!."Nhs*Ocnpj2=Srd"<cs*O`ks*FfpI=D0DqL/EmrI4Wn!.OlppjW0k
+s+(*"s+1]2Jq8N*K7ec-K7ei2LAlu+M>rJ5Mu8P6NrP1?OV!"jH?jg^H$=1BDK0N/D=r&L;#X>k
+;Z0Po?27b*>6%e(=TDY(>Q7h,>$:i,s&TWMa]VeN=_Wi(\$iZKrM0Fgqk=+dV#7(dVYd:kW;`^c
+d/VDmcHZ4/rQP5`rQP2_!6Y)YrQ#)_b0%j)aSj3^JV&LQK*$^[L&Qi,LB*/0M>rG5MuJ\8N<#"<
+O*m%OOcklkPE_>tQBml)R$jD3S"#q=St;RITqS3UUnjiaVl6SpWiN5'Y-5(6ZEpmE[^NZU\[oGd
+]t_=u_SX71`lH0Bb0/#RcHjncdaZdtf@S^0g>(N?hr*GOj5]4^k2tmll0@U$m-X60n*ol;o()DE
+o_%nNp@n=\q#C0iqYU0hr;HTdrdk*#s4dR(~>
+JcC<$JcE@^m/Hk[qu$0br;-Bf#l'LDP*1r+;H!MgrV$-]rq-6^r:9mXs7$!Us6]mSrp9[N!:'RJ
+!U/_GjsoKRj5].YiS`YOhVI#CgY1B6f@SU(eC;sqdF$:ccHXSVbK@oIa2Z)NKDpPtK)gMuJcC9#
+J+\<q<,l_c@9WY;&li"bIscNdF)u>=CM.0e?s[&AraZ"=raZdVAS,M6NK&mJJ8fLSEdVS:D/XB8
+FF*\,!dK!9rHRs[rc\NhF`qqNFmjGNEr^=NFTHT*rcA6`EcZ:"F8p7aF)l;@EH(hqqJc4J#&\?t
+E,]`6qJc=MrbhaSno"ABs(q^N!GlWOC]J>LDZ"AND#S;OD?4Tjr,)+Erb_LLq/>b?rbq^Pr,;OO
+!,qjSs)7dRpi-=TEW'kVEV=AOEVskUEW:(VErgB*rc\3`s*+NhpNlje"EJI"DJoGj#\[a]ARo7[
+^LmC?r_`YmrDN_p;>sDk;?Tin:f1*h;Ys>i;#O6#:m@5?:JakkDi9O2LkkkaqMP0.q2G--qj@GQ
+q4%DQs-`_NrL*VOrL*5Ds-N_N!gf:ArKmPOs-Ee<JqEuS!ec8]reCH.!/UW2s,$f7rf$l:!07&>
+I#sJQP*2#mPa.N"QC!u+R@9S6S"-%@StD[LTq\<XUnsrdW2ZesX/rG+YHY7:Za7$I[^WfX]"G\h
+^V@V%_SjF5a2lBFbKS5VcdC.geC<($f@em3gtgfDi8ESSj5f=ak32'olKdg'mI'H3nF?&>o(2MG
+p%A%Pp\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcE@^m/Hk[qu$0br;-Bf!r,_pr`9"frqHBbqt9s\s7?0Zs7--YrU9dS!:BdPs6B[MrojII
+kPjTljlGI^io8qTi8<DIh;$c=g=Y$/f%&:"e'cXkcd'h\bfe2PaN2EA`V`a-<;TYs<)Z`n;?0Yk
+<#dJI1+t1./1`D42F0Vm5!:qf3&``P1,1I9/1rdV1DM`(1c%g":/-:i/j;KV8P`/[:fC7irDEDh
+r_Wep:JXearDE\q<)icor_`ep:f.$dr_`_nrD3Jkp/:Za"&r9#<;]\m;YEud:]X?grDE2`s&&em
+s%iSiqGI5gr_`Yks&&Jdp.tZ_!)NMfr_NPjqbdAis%iYis%`_l:Jajd:Amuf:A.K_;"IKX;#X8i
+;#X8a:]OAd;#X5j;#F/k;GmBhs&&eor_`PhqGI5g!`;inqbR8iqbmGms&/hnr)3PnrDX>);G^4e
+;GpIj92%uP8P2fJr)!Air_i\ns$6TM"[>7=6:!p:5lX.M5Q3n^5sdh$4Zu"o5X@Y8<C&l75=.q;
+;>sJY=nl+u=8Ptr<<?,u;uTbp<Vo_q;u'Dk<W5tr;tj2h;>sJm;$Tut;c6MEJqEuS!ec8]reCH.
+!/UW2s,$f7rf$l:!07&>I#sJQP*2#mPa.N"QC!u+R@9S6S"-%@StD[LTq\<XUnsrdW2ZesX/rG+
+YHY7:Za7$I[^WfX]"G\h^V@V%_SjF5a2lBFbKS5VcdC.geC<($f@em3gtgfDi8ESSj5f=ak32'o
+lKdg'mI'H3nF?&>o(2MGp%A%Pp\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcEC_m/Hk[qu$3cr;-?erqQK&!P5oB=9/*ppA4I^o`"I[o)J7[nGVhUmJuYRm/QAOlMg#P
+ki_-kk2k\'j!E^Di8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/hZE`l5ogrgj(Zr1!YR!h#FC
+rg<hTQ^@W9!13JJs-G.)QB6fLG'\OcA9+ZJVP0TKQBR;bKnFi$H$=I]It<3)K7nu6LkiRQrjrSJ
+Cn[,ZG'JF_JV8f<r0$uAs-!DE!g&J&rf$]5r/1Z7M26ueL]<,,L&Q`*L%p>oL%^6%KnTGZqLf',
+KS5&5KS9>WrIXfqs+:9%!ePuSrdb#us*jfo!I]@pIJnNnIJnQlHiABnH[5U:qg&3frd"NgrceBe
+!."Qir-A<gqg&'`rH\Be!."Nh"+,ECHh_pTHNJM=H2`-hH2W$hHiA?kHNJSCIf=cmIfFiqIenNo
+If4]mIK4lsIf=isJGk$!K)L8tK)^H,KSG5:LPYncreg`6rJUl=NfT6_rK7,/rd"oqH['@CE,KN,
+DfttSr_`\nqc!N#qHX&)!*K2&!*]>*s&fA+=oMP'<t*0l=^#!3E0Ic?[^<==U]@1fU&q*cV"pkd
+VY?tgcgfB^cN2>9qTJi]rQG/`rQG5`prWHTprWPds+(0%rIY0)Kn]M\!f)Sfre^Z4!/pi8!f`5#
+rf7)AOoCLEPEc'3!LB)OQtr+YS"#q=St;RITqS3UUnjibVl6SpWiN8(Y-5(7ZEppG[^WcW]">Vg
+^;%J"_Sa@3a2l?EbKS5Vcd:(fe'uq"f@\g2gYL]Bi8ESRj5f=ak32'olKdg'mI'H3nF?&>o(2MG
+p%A%Pp\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcEC_m/Hk[qu$3cr;-?erqQGS"HlV[;YU1aqXsm\rq$'Ys7--YrU9dS!:BdPs6B[MrojXN
+kND!ijlHF$.,s4Di8<DIh;$c=g=b-1f%&:"e'cXkd*Bq]bfe2PaN2EA`PmI^KS9&O!.srroRQsk
++*DR>@UE8D?XQl>IscQeG]RkCC1_'f?sd2D>@V,QAH$-BB4bagr/D.h?[?^=BkhL&EHH;JHM2Xa
+GQ<$eGkH=fG^"=SF`hkMFo6=]F7jYREr^=NFTHT*rcA-]rc7sYr,MjYE,b_pqJc4J#&\?tE,]`6
+qJc@NrGDURnS\8A!,VXMs)%^N!,_UNrGDOMrb_XPs(qXNoPOYGq/5tGnS\>Er,2CMrbhaSrb_^S
+qJc.JrG_aUpi-7Qr,VaUrc7mWs)n<ar-&-crd"<c#((`FI=6*QrGN!XChI9jARo:\BDbU*;?'Pk
+;u]_p;#O;l;#aDl;Ys>j;#F0":m@5?:JakoFGl'7Lkknbqhk0,qi(B0!1<VN!1N_Qs-itUqO%5L
+rL!POnsKHDrKdJMs-WhQs-Wh:s+(0%rIY0)Kn]M\!f)Sfre^Z4!/pi8!f`5#rf7)AOoCLEPEc'3
+!LB)OQtr+YS"#q=St;RITqS3UUnjibVl6SpWiN8(Y-5(7ZEppG[^WcW]">Vg^;%J"_Sa@3a2l?E
+bKS5Vcd:(fe'uq"f@\g2gYL]Bi8ESRj5f=ak32'olKdg'mI'H3nF?&>o(2MGp%A%Pp\4[^s7u]k
+qtpBjrVcBfJcC<$g])d~>
+JcC<$JcEC_m/Hk[qu$3cr;-?erqQIns&T:k7Rm.OpA4I^o`"I[o)J7[nGVhUmJuYRm/QAOlMg#P
+ki_-kk2k\'j!<XCi8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/hZE`l5pq<VBDl;ZKeo<W?%u
+;uBMn;uBVp;]IbT1G::-/1iG33']\k4Zb\c2`3BK0eb77/MAs[1D_l(1c70K1eg\>9h\&M4YoT(
+:Jjnc;c<KiqGR;i"Ahli:f70h!`N&tqc!Mm!`;cjqbd>j!)`\ks&&Mgpeq8o<E3#r;uBPe;>sDl
+:B45i;=m]b;>sAl:]4,d;?'Jl;>j;k;>!c[:]=,h:]*ue:]F8h;#jGl:]F2h:B4/h:]F2g:]4&^
+:]F8^:\did:]=2i:\IWb;>3od:B45e;>j;m;,U<j;>a8j;#jMm;>sAo;,U:hr(mAjqbmGm!)i_l
+rDNYoqG[Glr_NSlr_s,!9MS2Q8Ou8I;#X>l;YsAq5XIb$5lO(M62j.L62s1K5Sl^Q5X.Fq5<hD!
+5ZLfM5X.J#8P`2];Gla_pfRPt!)r_nr`&qtr_rhrs&B)!<Us,f<W?%r;tj2g;>X8k;u_CJJH1<#
+K*$^[L&Qf.LPUccM>rG5MuJY:NK0%uNrb?)rfR;GPl?pKQC%T<CRLW\S"-%@StD[LTq\<XUnsue
+W2ZesX0&M,YHY:;Za@-K\%&u[]=bhk^VI\&_o9U8aN2NIbg"GZd*^:jeCE1&f\5'6h;-rGi8N\U
+jQ5Odkiq?slg4!*mdKW6naZ2@oCV\Jp%J+Rp\ssfq>^<gqu6NlrUg)?s+14)s*t~>
+JcC<$JcEC_mJct\qu$3cr;-Bfr:gK+\%0)_^;'YLqXsj[rq$*Zrpg$XrU0gUmHso>s6B[MrojXN
+kND!ijlHF$-K="Bi8<DIh;$c=g=b-1f@JI$e'cXkd*L"^bfe2PaiMNB`Pocergj(ZrL<eT"IYXE
+Q^Ic?!go=@rK[GMqj@>K->B$9Mh6;*It20EXf/+pSXPq3Nf/[JJUD`eG(5!mJ:`<)L4t><rjr-A%
+:<^[^67&mH[L?rLQ.GmP5UUEP5gXGOH5G$N;AM6N;\\7MZ8M3L]<,+L&Zi)L&6PrL%g?%L&Zi+L%
+g9"K`Hf*KDgDsJcC?%JHg^WJUi9#J,XonJ,F`nHiSTnI/\KkHi\P=rd+Kfrd+Qhs*4QfrceEgrd
++Kf!.+Wi!dK!9qKW!brHS6d!df<Br-J?fs*FTi!.=Ec!d]-;rd+QhqKi0gs*XcnqL8El!.Oco!.
+Olpr-nZqs*jrss+(#u!.t0#s+16%rdk?,KS>/8LPYncrJLW5rf$l:s,[2AqiUl+%!d5FH?X4FDJ
+O'+\9.^Hr_`Ymqc!Mo!F/k,>lS".=T)A&>5_\*=TM]/r`K2%&'2jq>$>'QS%#l8['<N)U\phfUS
+O^]V>d@dVZG)hn^.<^!RAsbb5fcabPfZ`b5f]Zao'6UaT-hiJH(0#K)L<'KS>-ZL'!-dM#N82M?
+&S6N!G?&NfT6_OHKO*F-DiRQ'R`&R$a;1S"#q=St;RITqS3UUnjibVl6SpWiW>)Y->.8Za7$I[^
+WfX]"G\i^V@V%_o0O6a2lBGbK\>Yd*^:jeCE.%f\5'6h;-rGi8N\UjQ5OdkNV6rlg4!*mdKW6na
+Z2@oCV\Jp%J+Rp\ssfq>^<gqu6NlrUg)?s+14)s*t~>
+JcC<$JcEC_mJct\qu$3cr;-Bfr:g;TOSt:DP#G7VqXsj[rq$*Zrpg$XrU0gUmHso>s6B[MrojXN
+kND!ijlHF$.H9=Ei8<DIh;$c=g=b-1f@JI$e'cXkd*L"^bfe2PaiMNB`PocJK7npQKDpJsJbXco
+Ij\3;E+rce?sd>E=+YmKH?OFPE,00#AR]"P>?YNG@q0%YAS,RdB9)qM%p*%CM0Ph2DJsH8G'J@\
+HM2X[GkH=aG^"=Sr,qFLrc8']n9+bQs)S6`F*%>$s)\$W!c`0ur,MRPphp7PDf9UoDu+GNDuFPR
+Dt.`DD?"GPCBA<hD>e;IDZ+GOD#S;OD?4Tjr,)+E!,_LKpi#\?rbq^Pr,;OOrbhjUDf>Mlp2U%M
+rGhXPs)IpVrc.mWr,Vp]F`m\,!I&_dG5umeH2;jeHiJKlIK"0oDJsB/Ch@6iA7K/8B)YX+;>sJj
+;u]hs;#O;l;#aAo;Gg?h;>sDi;%QQgPtk+O:h+d/Mi*=G8Vr<$MYE&+N;AG5Q^IW;!1N_Qs-itU
+pm;&Lr0[GNnsKHDrKdJMs-WeP!.Xuus+(0%rIY0)Kn]M\!f)Sfre^Z4!/pi8#E=b(O,oBaOoCMb
+PE_>tQBml)R$jD4S"-%@StD[LTq\<XUnsueW2ZesXKAV-YctC=Za@0L\%0&\]Y(tn^VRe)`5Ta:
+aN;WKc-FY^dF-Lne^i@)g=k<;h;7)JiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^qhLp@e7TrqQNh
+s8)Wirqu`no_sFAJcFL)J,~>
+JcC<$JcEC_mJct\qu$3cr;-Bfr:p+hr^QbWrq-3]rUTsXs7$!U!q,ICrp9[N!:'RJ#3b75k2tdd
+ro5<aiS`YOhVI#CgY1B7f[na+eC;sqdF$=ecHXSVbK@rJa2Z*;`;N^2<;f_q<;T\q<<#ns;Z0Mo
+<;f`C0K1gC/h8J(/N>UR5X.Fo4?GJ\2Dm6E0/"k/1GgjA1G^jE2)I-`r_3bo7S-6:7o)rY:f:6j
+;Z'Dg;Z9Mr:esk`;>sJn;u]et;c<Nls&&kp;#4&h;?0Sn;#X>d;Ya8k<;okt<;fbo;Y<od;#a;k
+;#O8`;#aDl:]O;i;#4&h;#X>j:]OAd;"d]a:B+,g:Amug;#F/j;#X8j:B+,i:B"&h:B"&f:A.K_
+;"IKX;#X8i;#X8h;#aD_;#O2c;>j>k;?'Pn;>a8j;?'Pm;?'Gr;,U:h:f73g!)`Vks&/nqqbd>j
+s&8\l&5uG&;G^@k;,U+]9hJ&N:.,"Wr_`Ymqc!Mo!^T%9r^$TNr]pKLs$-HI(I:;N5!;+p5X@Y8
+<'`c65=A.?;,U:h3pg)E=9;Q&;u0Jm<<-"s;Zp'"<E)uh<;fhs<;fbh;Z0Ji;?9^Grdb$"!.t0%
+!ec8]re:K0Lku%es,$f7req)ANfK0]OH>V(P&lhOQ'IZ$Q^F/.R[]e:SXuFFTV8'RUSO]^Vl-Jm
+WiE/&Xfen4Z*UdD[^NZU\[oGd^;%G!_Sa=2`lH0BbKJ/Ucd:(fe'uq!f@\g2gYL]Bi8ESRj5f=a
+k3)!nlKdg'mI'H3nF?&>o(2MGp%A%Pp\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcEF`mJct\qu$3crVHHfqY19)\[oJg^Vg%QrUp0^rq$'Ys7--YrU9dSs6]gPs6B[Mrol-#
+kND!ijlGL_j5T%Ui8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfe2PaiMNB`Pod4rLNtYrL<eT"IYXD
+Q^Ic?!go=@rg*SNs-WYL(hfD#M1^/'IXc$DXJi"kSXPk/NJ`IDIX1p;s*bi;J:`H-KnbA<]"5Mc
+?Y<tbF5;%bI"?p)MZ&\5P5gaGP5gXKOH5E]NJrhnN<"q9MuS\7M>`5*K`Hf)L&6PrL%g<%L&Qc)
+L%p?$L&Zi+KDgE$JH15tJcC?%JH:@Rrdb#urdO`o!.OiorHnTnrI"TkrHnTjrd+Hes*FWhs*4Qf
+s*+Nhrd+He!.+Wi!dK!9qKW!brceEgr-AEkI!bd;s*=WjmX#"]H$TC8rd"<cs*F`nr-eHkrdFfq
+qg\Tos*acn!e5ZJrI=itpOW?rs+13%#(qS_L5(J>re^Q1s,6o9s,@/AO,oBarK7)B!/gc'%XEDI
+G&hG=Dej-,G&pJVr_`Ymqc!Jn!EEA&>lS".=T)A&>5_Y-=]ej1r`K2%!Q`C^=p\G_U:7V?['?j1
+r1X7fUnmd^s/,Og!m]-<n^.<^!RApab5fcabPfZ`b5f]Zao'6VaT?p@J,XuuJH1<#K*$^[L&Qi,
+LB*/0M>rG5MuJZ_NK0$[O-#KdP*2#nPa.N"Q^F/.R[]e:SXuFFTV8'RUSO]_Vl-JmWiN5'Y-5(7
+ZEppG[^WcW]">Vg^V@S$_SjF5a2lBFbKS8Wd*^:jeCE.%f\,!5gtgiEi8N\UjQ5OdkNV6rlg4!*
+mdKW6naZ2@oCV\Jp%J+Rp\ssfq>^<gqu6NlrUg)?s+14)s*t~>
+JcC<$JcEF`mJct\qu$3crVHHfqY1&PrfI8FPEl,FrUp0^rq$'Ys7--YrU9dSs6]gPs6B[Mrol0$
+kND!ijlGL_j5T%Ui8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfe2PaiMNB`Pod4KDpQ#KD^>rJbsuo
+Ii)1*ChI0^?=7/B<e5^IH$=@NDe`oq@UEF?>7+kLA7K+\AS,RdBDmeu=C#3?AuTN]DJsN<GPujg
+HM2XZGkQCbG^"=SrcJ9cF`m.ps)\3^n9"_Qrc8-_F*%"p!c`0urGhgU!,qgTq/?:Ns).mVrbq[Q
+qeuFN!,qFGr,)IMs(_[PD/K8g!,_UNr,)FLrb_[Q!GuZND<u09Dt%ZDDu=MMDuOYODu+GHEW0qU
+EVOMQEVskUEVskUErpH+FoHObGBWt0!-nKgqKi0g!.=]m!If7lD[pZ'DJX#tAn>L_@qK:K;#X>k
+;YsDl;uourr_ibms%rhq;,[9gr_WPjs%j/hPtk+O;.tB9Mi*@HLAHf$Mu8P3MuS_;Q^F0:R/i]O
+S,\oXR$m`:!1EbPrL*5Ds-N\Ms-NbQs-Ee9It.HJs+(0%rIY0)Kn]M\s+^T1re^Z4!/pi8I#X/H
+O,oBbOcklkPa%GuQC!u+R@9V7S=Q7CT:hmOU8+N[VPg>jWN*##Xfek3Z*L^C[C3QS\[oDc]t_=t
+_SX71`lH0Bb0/#ScHstee'uq!f@\d1gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?&>o(2MGp%A%P
+p\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcEF`mJct\qu$3crVHHfqY9th"BAAg7Rm@Lrq-3]r:9mXs7$!Us6fpSrp9[N!:'RJ0^.]_
+k2tddjQ#:[iS`YOhVI#CgY1B7f[na+e^W'rdF$=ecHXSVbK@rJa2Z*;`5;IQpf.2j!*&hqs&AYi
+(G@[%0J+b*/M9"?5sRXt4$#A\2Dd-D0`<X+1bpoe1Dr#,2Dm<c9i"JS8kDWM<DH@f;,U7h;c?Rl
+r)*;gr_`\l$;XJq;,U:j;cH^pr_iYmpJCrh;>sDk;>3ua;u]hr<<-"s;uKVc;$0Wj:Jh!es%i\k
+pe^rer_NSjrD<>fs%r\lrD3Jkp/(HYr_EJhrD*>fr_WMi!)WYjs%`Sis%`Sir_EGgrD*&^r_W2^
+q,%&dr_WSir)!Air_NSlp/(`a!)WJgr_WVlr_ibnqb[;ir_i_ms%iep;GpBi:]OAi;ZBYq;Ys>k
+;Z9Vg<<#c+:Jahc:fC4a:/";S8OPsC;#X>k;YsDl;uou`r^$iU5X7P"5sIU45Sl^O5<_4p5<qM"
+<E)7L5<hV2:Jk"f;,d9n!*JtupK.Dsr_rYmr`/kp!`W0"p/D#lr)EVps&Aqqp/:idqbdKEIt.HJ
+s+(0%rIY0)Kn]M\s+^T1re^Z4!/pi8I#X/HO,oBbOcklkPa%GuQC!u+R@9V7S=Q7CT:hmOU8+N[
+VPg>jWN*##Xfek3Z*L^C[C3QS\[oDc]t_=t_SX71`lH0Bb0/#ScHstee'uq!f@\d1gYCWAhr*JQ
+j5f=ak3)!nlKdg'mI'H3nF?&>o(2MGp%A%Pp\4[^s7u]kqtpBjrVcBfJcC<$g])d~>
+JcC<$JcEIamJct\qu$6dr;-Bfq=k9j\@K8c^;7e0>5hV(p&=U_oDJ1Znc/+Wn,MhUmJcJPlN$5L
+kqVDbkN:pgjQ,@]io/hRhqm2FgtUQ:g"=p.f%&:"da?Ihcd'h[bKJ&MaN)<>`Pf[2rLNkUs-itU
+!LT5QR/WKWR$X,)Q^@Z<r0JUBB:4j:Is?EhJ7`JpVPU)YR$NekKS4o(H$4=\J:W6&K7s5X!f+@u
+rjrT0B4u:,G^4[eKnYDFr/pc;!0dDFs,d>DNrG%<N;JV5MuS\7M#`A2LB*)$L&?VsL%g<%L&Qc)
+L%g6%KnP-YK*$UUK)U<$JGXltK)C3!JH(,uIf"TpIf4]mHiSTnI/\KlHi\S>rd+Hes*FZis*4Ne
+s*+Nhrd+Kfrd+Kfqfr*crHJTnH?sj^H@1'dr-A?grd+!Z!d]-;rd+QhqKi-fs*X`mrI4]n!.Oco
+rdOlqrI4`q!.Olrs+'Zks+1E,KnY89L]3/-MZ8S?N/`gWNfT6_OSt=?OqEn2I!pEiG^+CLD/O6,
+DL$A$r_`Ymqc!Jnr`/o%s'#J*r`K5'r*02'!ErY*=T;G3aN7Xi>%<;e\$rfQZ*=,"!McIiV>d:i
+V>d@fVuG!Acgf?accsbZpri]]rQG/`rQ>2`pW<?Sr5ntes*jutrdb$"!.t3&s+LE+re:K0Lku%e
+#E"FtN/WaUNrG(?OHKO*E0HNOQ'Rc(R$jD4S"-%@StD[LTq\<XV5C/gWN)u!Xf\b1Yd(O@['mEP
+\[f>b]tV7s_8=+/`Q-'Ab0/#ScHjnce'uq!f@\d1gYCWAhr*JQj5f=ak3(smlKdg'mI'H3nF?&>
+o(2MGp%A%Pp\4[^s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcEIamJct\qu$6dr;-Bfq=k6iOH>TePE_?!rDEXgrq-3]r:9mXs7$!Us6fpSrp9[N!:'RJ
+1$If`k2tddjQ#:[iS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHaYWbK@rJa2Z*;`5BIjK`$K!K)1&o
+JGamD<`3pRA6rJJ?=?l8J9uTgF`_S=Bk1a`?X6i<@U`kXA7T7_B4YZPN=0i6?tEtdCi435Fa<k2
+s*FBapiuOY"*f$5G5cXaG5l^RF96N*FRXDQFT-=^FE@(p!-.sVs)J$W!,qgTq/?:Ns).mVrbq[Q
+r,;LN!,qFGr,)IMs(_XOD>e8ND>S5KD>nAOD>nDQD#A/9DYe;?DZ4SQDYnANDYnALE:n5ME;jkP
+E;sqUErC"TErL+[FT-F\G5c^cGlN'cHN/?iIJnU+FDl/:Df'?-An,C`@q04b;#X>k;YsDl<;ons
+;ZBSl;#jMk;>sDj;?'H%Pa,$?:f_CcMi3ILLPG_aoo&a,!/pc6rg3YPqjIJQq3qDRRJ*$JRJiNO
+RIZaFQi36MQiEHQIK+crJ,XuuJH1<$KE$W)L&Qf.LPUccM$JorMi<USNK4"!!K`HCP&QVLQ'IZ%
+R$a;1S"#q=St;RITqS3UUnsrdVl?\rX0&M,YctC=Za@0L\%0&]]Y2%o^qmn*`Pom=ai_fNcHab`
+dF6Uqf%8R-g=tE=hV[8MioB+]k2tjjl0@U$m-X60n*ol;o()DEo_%nNp@n=\q#C0iqY^6hr;HTd
+rdk*#s4dR(~>
+JcC<$JcEIamJct\qu$6dr;-Bfq=k-f<`N1$<;oer7K,aVp&=U_oDJ1Znc/+Wn,MhUmJcJPlN$5L
+kqVDbkN:pgjQ,@]io/hRhqm2FgtUQ:g"=p.f%&:"da?Ihcd'h[bKJ&MaN)<>`Pf[2rDiVlrDN\q
+r)N_q!)rhqr)4[l0/bU?/1N2&/N5RR5<_7m3]K&V1bg^</hJ\21GU`b1D;T&1c%j#:JFM?8kM`P
+:/Feb;H!Eks&/blq,72hr_WSk"]A8t<)cfp;Z0Mo;Y<oe;#aDd;Ya5k<;fhs<;fbp;Y*`c;#X5j
+;#X>l:]O;d;#X>k:]O;i;#4&h;#aDj:]OAd;"d]a:&n)f:B"&h;#=,h:]F2h:B4/h:]F2h:]*u]
+:]F8_:\[cc:]=2i:]4,e;>!ca:\[fd;#aDl;ZBVl;#aDk;Z9Mr:f1+g;>a5j;>O/k;c<Kis&/eo
+oMcB!:Jk"d;Gp@e92A5S8P)<Hr_`Ymqc!Jnr`/qa#=1U>5=%S"5Q*hd5sIRt4[)(q5sSFL5s[_#
+7SQZU;Gp@j=]eg0rE/espK7Gpr_r\nrDibo!`W0"p/M&lrD`_qs&Aqqp/:idrDNZDs*jutrdb$"
+!.t3&s+LE+re:K0Lku%e#E"FtN/WaUNrG(?OHKO*E0HNOQ'Rc(R$jD4S"-%@StD[LTq\<XV5C/g
+WN)u!Xf\b1Yd(O@['mEP\[f>b]tV7s_8=+/`Q-'Ab0/#ScHjnce'uq!f@\d1gYCWAhr*JQj5f=a
+k3(smlKdg'mI'H3nF?&>o(2MGp%A%Pp\4[^s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcEIamf*(]r;?<dr;-Bfq=ss`#eRa`^r+47cIDeprq$'Yrpg$XrU9dSs6]gPs6B[Mrol?)
+kND!ijlPR`j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-+;QaiMNB`Pod5_SMe6S=KSJrgNhS
+s-W\O!1<bPqj@>K2enkKO+i"2I"-]\YH"LtTUV@9NerLDI<g']JUi6&JV8]1L5(D:]"5McTX/6J
+FEi+ZJ:rW6NW,%<On=h:OTCQ)rf-r:qi(T7repf6!f;_hreLN.onE9rp4`6q#).__KS5&5pOiO#
+re1<(!eGrTrdb'"qgea!r.+p"It.BFqgSTprI+Efrd4Wl!.4Zjqg&3frd"NgrceBe!."Qir-8Km
+H$Xa\H$T72rd"Herd+Tird4Qhs*=QhmsG([rd+Qhq0N'fr-\HkrI4cps*jiprI+`prI+m!J:E#s
+rI4ftnUUpsK7nr4L51TaM>W81MuJ_9NrP1?OSt=@P5g^XP*:BDH[L3cG'.S>CMdm+JUdYrs&/\l
+r`&ks!ENJ(>6%e)=TDS%>Q7e+>$:i,s&TZNa]hqPCQ>^0\$iZKYl(3qU].%kUSOZ\rh]Ukq5=2:
+s3LDc!71Vj"4,6:bk]H[bl>lbbl,]bb4s*TaSs9]I/\QoIfFosJH(0#K)L<'KS>-ZL'!-dM#N5F
+MMmCON/`jXO,oBbOcklkPa.N"Qi<@`R@B\9SXuFFTV8'SUnjiaVl6SpX/rG+YHY:;Za@-K\%&u[
+]Y(tn^qmn*`5Ta;aND]Mc-FY_dF6Upf%8R-g=tE=hV[8MioB+]k2tjjl0@U$m-X60n*ol;o()DE
+o_%nNp@nO\s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcEIamf*(]r;?<dr;-Bfq=ss`s,dMKPE_B"R@X:Srq$'Yrpg$XrU9dSs6]gPs6B[Mrol9'
+kND!ijlPR`j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-+;QaiMNB`Pod5_SLnYr.Fs"s+10$
+qLSHmrI5niFDu#)?=.&I@T\84I!U!ZF)c#/@q&eN>?YKG@Us$KAHQOWAS(h"$Zq53@qKIkCiFH<
+Gkl^dHM2XYGkcOcG^"?0FoHRaFmsJRF*-kn!d&L(rc@^Ps)J$Ws)J$W!,qgTq/?:Nqeu@Nr,:q>
+r+uFMrbDOND>e8ND>S5LD>nAND?"MMD<l*9Dt%ZDDu=MMDuX_ODu+GHEW0qUEVOJQEVjeSEVskW
+Er^=\FoQUdF`qs-GQ2pfH2;gfH[Pd?qL/rpE,TZ6DJX#tAn>L_A8lJd;?'Pj;uTbq<<Q?#;,C*f
+;#jMk;>sDj;?'H%Pa,$?:g7srMi3ILLPGecoSWd0Mi7Ci!1<bPs-W\Os-iqV!1NkU!LfGNR/EBP
+R/NHER/WHNQN*9PR!em]s*jutrdb$"!.t0%!ec8]re:K0Lku%e'T.g,N/WaVNfT6_OcbfiPE_>t
+QC%T<AXT$WS=Q7CT:hmOUSO]^VPgAlWiN5'Y-5(7ZEppG[^WcW]"G\i^VI\&_o0O6aN2NIbg"GZ
+dF$FmeCN7(g"P39h;7&IiSrnYjlY^gkiqBum-O--n*fc9nac8Bo^qhLp@e7Zq#C0iqY^6hr;HTd
+rdk*#s4dR(~>
+JcC<$JcEIamf*(]r;?<dr;-Bfq=ss`s&K,!rDW_o!(?fUrq$'Yrpg$XrU9dSs6]gPs6B[Mrol9'
+kND!ijlPR`j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-+;QaiMNB`Pod5_SK5Ppf.,h!*&qt
+pJh)i(,7a)1+k(-/M/S66U<q!4Zb_a2Dd6Fr[n@-1GgjD1]B3D2)[<J9hnDV018N.:/Fba:Jt0j
+;Z9Vp;Z'Df;Z0Jm;#O8k;u]f";c6Ij;Z9Vo;YEuf:]OAd;YX/j<;]_r<;fbp;Y*cc;#a;k;#O5l
+:f$j_r_`Yk!)NPiqGI8hs&&8^pJ:`_!)NMfr_NPjr)!Gjr_NPhs%iYir_NPhr_NJfp.tZao2#-X
+s%iVjr_NPjpJLW\r_EMjq,.,fs&&bns&&Yi!)`YlqGI/e!)`MhqbdAkr)<Gk!)r_n%oQ8&;,U1g
+;G9bY9M8#N9)_]f;Yj>k<;ol)<^K)<5X.J!5sR[55QX595Q3hY5<qM"<E)7M5=%h9:f1+g;,d3k
+qH<Ppr`&kqqc*Pp!`W)rr_ikt<E8cmr)NbrrDiksrDWDfrDEPl!.=cos*jutrdb$"!.t0%!ec8]
+re:K0Lku%e'T.g,N/WaVNfT6_OcbfiPE_>tQC%T<AXT$WS=Q7CT:hmOUSO]^VPgAlWiN5'Y-5(7
+ZEppG[^WcW]"G\i^VI\&_o0O6aN2NIbg"GZdF$FmeCN7(g"P39h;7&IiSrnYjlY^gkiqBum-O--
+n*fc9nac8Bo^qhLp@e7Zq#C0iqY^6hr;HTdrdk*#s4dR(~>
+JcC<$JcELbmJd"]qu$6drVHKgq=sp_s7Qo7^V[t2bgG,&>$+j.oDJ1Znc/+Vn,MeUmJZAQlg!d7
+kqhPdkN:pgjlGI^io/hRhr!;Hh;$c=g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`Pf[2_8,u=s-s%W
+pmM)J!13MKs-FjUB:G-DJUDorIqNGtWMZJaR@'4uM2$V2GBe:\It3-(re1H0KSI):]*l$2Rr`e!
+I=[$(M2qFos,lr:s,dMIO,f6[N/[Xn!0$o8"H&%mLku"b!/C0#qh4ZspP&m+KS+o1Kn]8S!/:E*
+s+:T.JqAQ)J:N3$rIFs#r.+p"It.BFqgSTprI+Wl!.Ffnrd4TkrHe?drd+Qh!-nKercnEgqg&3f
+s*4ZjH$T72rd"Kf#C1WAH$O^_Hi&*hH2W'XHNJM=H2`-hH2`-iH2i3iHi&3hI/n`pI/n`lJ,+Nq
+It3#tr."3e!J5t'Ka*9eLl$tGM>iD2MuSe:NrP1>OSt=AP5g^KP*;)oMZ/&'H4"h7DJsE.DMj!B
+;>sJj;uTbp<W6%u>6%e)=TDS%>6A#1>$:i,#Zk-LaBMhOF-cg7"Lb\BY[d[,rM'FgUSId`s.o^m
+q5=/9s3LDcs3L\k"4#08bk]HZbQ,ibbl,]bb4s*UaT'B^HiJKmIK+crJ,XuuJH1<$KE$W)L&Qf3
+LPUbCM2I1Krepl;NrG(COHG]hPEc'3BU5!PR$jG5S=Q7CT:hmPUSO]^Vl-JnWiN5'Y->.8Za7$I
+[^`lZ]=bhl^VRe)`5Ta;aND]Lc-FY^dF-Oof%8R-g=tE=hV[8MioB(\k2tjjl0@U$m-X60n*ol;
+o()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcELbmJd"]qu$6drVHKgq=sp_s7QnaPEV5sR%'eK;Gg:hoDJ1Znc/+Vn,MeUmJZAQlg!d7
+kr.bgkN:pgjlGI^io/hRhr!;Hh;$c=g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`Pf[2_8(\UK)L?%
+K)L9#K):,nJH(*A>uPi_BOP4S?sm#9Jpr)mG]\"FBkCmb?X6l?@q&qZAH$-AB4YZPN=1A[FD#<&
+D/XH;G^B.3s*FBap3?CY!dJp4rH8-`rcS!X!-S'Ymr\eUF)l;BF7XDPEW0qWEW:"XDuFYNDuX_P
+Du4MODuFPRDt7fCD$=`kCM[j)rG;@Kr,)FLrb_[Q!,VRMlYcN:n8A5DrGMLNrbhRN!cW'rrG_LN
+rG_aUpMg"Mqf2OS$ZgE4F`_bKG'.qNG5c^cGlN'dH3/G@I/\QhIK4TkE"-`'Des#sB4YU`F)OoQ
+r_iVlr`&hrr`9%qrD<PmqGI5gr_`\ls-3OZ$;b,SN/NUOM2-gap5Ap-repT2s-WePs-W\Os-iqV
+s-iqV!LfGNR/<9OR/NHER/`NOQN*<OHiJKmIK+crJ,XuuJH1<$KE$W)L&Qf3LPUbCM2I1Krepl;
+NrG(COHG]hPEc'3BU5!PR$jG5S=Q7CT:hmPUSO]^Vl-JnWiN5'Y->.8Za7$I[^`lZ]=bhl^VRe)
+`5Ta;aND]Lc-FY^dF-Oof%8R-g=tE=hV[8MioB(\k2tjjl0@U$m-X60n*ol;o()DEo_%nNp@nO\
+s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcELbmJd"]qu$6drVHKgq=sp_s7QIn<;ohr;?g-*77K^8oDJ1Znc/+Vn,MeUmJZAQlg!d7
+kqhPdkN:pgjlGI^io/hRhr!;Hh;$c=g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`Pf[2_8,hFq,78m
+r`/bnrDOac/iPUA0.JM(/N>UR5s@Fo4$,AY1bga>0J5"81,Ahc%Poq"2)@s$:JFMA4u?#1r_N\p
+<)HNk;Z9Vp;Z'Df;YO#o;H$Oo;c6Ii;Z9Vn;YErg:f7!c!Dubi;ZKep<W5tt;uT\c;$0Wj:Jh!e
+s%iDdr_`Yk!)NPiqGI8hs&&_k!)`GdrD*DgqbR2ds%iSgr_NMir)!Gjr_NPhs%iYis%iVhr_NJf
+p.tZaoM>6Yr_NMir_EMjpJLW\r_EMjq,.)e!)`\m!)`Shqbm;gr(mAjpeprcs&/eoqGdJnqG[c"
+;,C+e:f1.g:Ad`e8k`)Zr_iVlr`&hrr`07i5X.J!5sR[55QX5:5Q3hZ5<qM"<E2=N5=8"=:f1+g
+;,]XR=T2Ip=T;D$<;ohn<;ol'<)Z[m;c?Xq<VKJi<<-"s<W?%s;tj2g;?'PoHiJKmIK+crJ,Xuu
+JH1<$KE$W)L&Qf3LPUbCM2I1Krepl;NrG(COHG]hPEc'3BU5!PR$jG5S=Q7CT:hmPUSO]^Vl-Jn
+WiN5'Y->.8Za7$I[^`lZ]=bhl^VRe)`5Ta;aND]Lc-FY^dF-Oof%8R-g=tE=hV[8MioB(\k2tjj
+l0@U$m-X60n*ol;o()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$g])d~>
+JcC<$JcEOcmJd"]r;?<drVHKgq=ss`rUpf9_8O@8cdpt7l!%:l=BP.brpg$XrU9dSs6]dO!pf.:
+rojgSkND!ijlPR`j5T%si$I:;h;-l@g=k64f@JL%eC2jnd*L"_c-4ARaiMQC`Pod5_SO%&r1*eV
+qjHl>+`(h[OGA@2IXZ$EAuqr-Un!m>P`(6NJ:)QbG(5$nK7ejVL'!-l])K;LMj_;7T6Yd5JqSu@
+plPN<oTK6:"H\\)NfF$sr/C]8regf7M>i>0L]<,&L&-JsL%pE&Ka!-^K7no3pOiO#re1<(!J,k%
+JcC6$JUm]M!.t-"!e>cMrI4Wns*joprHnTnrI"TkrI"Qiqg&3frHSBfrceBe!."Qir-A9fs*4Zj
+H$T:3rd"He#C1WAH$O^_Hi&*hH2W'XHiA<jHN&3gH2r6iHN/?lHiSNlI/SKnIfFfrIe\EhIKY.N
+J:E%GJ+/!iK7s5X!JZC-M>rJ3MZo'!NK0$[rK-u?!0[8Ds-3PK%tT.VH[C']F`)&6Chdg+K)S[E
+;uTbq<W#nt>Q%\)=SuA*=]ej1r`B_5=NJQf>$?6C\$rfS['HoMqP*q`rhKRkVZ!FmV?!OjcMu5a
+d/MAkcj%e?bfn8Rb5BHWbl#Wab4s*Ua9Kb4H@(!dI/\QoIfFosJH(0#K)UE&K`?c+LB!#/M#N6L
+MMmCON/`jXO,oBbP*2#mPa.N"Q^F//S"#q=St;RJTq\<XV5C/gWN)u"Xfek3Z*L^C[C3QT\\#Mf
+^;%J#_SjF5a2lBGbK\>Yd*^:keCN7'g"P39h;7&IiSrnXjlY^gkiqBum-O--n*fc9rpg*]o`"O`
+p&Ojcq#C0iqY^6hr;QZdrdk*#s4dR(~>
+JcC<$JcEOcmJd"]r;?<drVHKgq=ss`rUpecPEV8tR\-IXY>\=r;H!)Vrpg$XrU9dSs6]dO!pf.:
+rojgSkND!ijlPR`j5T%si$I:;h;-l@g=k64f@JL%eC2jnd*L"_c-4ARaiMQC`Pod5_SO%&rdt*$
+qgnd!qgnHk(fjUVD.R*Z?sm);<e5^HH?OCNDJE`o@:0"<"CknNAS(jQ!bZ+brJ_2%G)C?jC2S!1
+FEW!*Hi89aH1cFYGli57G5ZR`G5cXZF9$IYFRXGQF9$CNEWC+YDuanWE;skTE;FMPDZ"GME;OSP
+D?+VGDZ"AOD#\8PCi+%gC]J>LDZ"AND#S;ODZ"A:DYe;?DZ=YQDZ"GPDYe;OE;skUE;OVTE;aeT
+E;sqOE;FVQEVsh[FEM_JFSp:]G5ldcGlN'eHN/<lI/\QeILgO=E,KT3DJNcpAn5@\A8qNGqG[Am
+r`/ks"]/&n;Gg?g;>sDk;?'JmPlFMd:h>$5Mi3ILLPAq+Mu8J4MuAV7MZA_6R/`NQR/<<ORf8fU
+RfAiXR[No;pR1T>s-N\M#+'X^H[C-frdFfqs*t#us+(0%re(6(s+UK-s+^T1reYQNMi3OQNK0$[
+O-#KeP*;)oQ'IZ%R$a>3S"-%@StD^MU8+N\VPg>kWiE/&Y-5(7ZEppG[^WfX]=bhk^VI_'`5Ta:
+aN;WKc-FY^dF-Oof%8O,g=tE=hV[8MioB(\k2tjjl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]k
+r;6Hjrr)HfJcC<$g])d~>
+JcC<$JcEOcmJd"]r;?<drVHKgq=ss`rUp4jr_rhp"]JQ1@73Q`7fW&Ync/+Wn,MhUmJZAQlg!d7
+kmQ_<kN:pgjlGI^io0mp-/[S8h;$c=g=b-1f%&:"e'cXjcd'h\bfe/NaN2B?`Pf[2_8*h^<;0;k
+<;onq<;fbq;BIVI2D[!<.P!)13&X&e5!:tg3B&iQ1,1F8/h]%:1Gf"e%lH7&786QQ9K#+"77^3N
+;#X>p;,U:jrDNYos&/blq,6ra$;sf%<)Z[l;,U:jr)3/a!E)km;?B]n;Z0Mo<;oer<;T\q<<#ns
+;Z'Dl;#!li:esk`rDESjq,%&frD3Jir_WDf!)WYlrD3Jkp/(]`!)EDer_EJhrD*>fs%rSir_NMg
+s%`Vir_NPhr_NGepJ:cboM>3Xr_NPjr_NPjpJLW\r_EMjr_WYlrDEMi!)`_ns&&VhqGR5gr)!>i
+!)`\mq,./irDWSmr_r\n!)rkr%o?,#:Jt(i:eaYX91hcK8cDWa;uTbq<W#l%5X.M"5sR[55S-4H
+5<_7q5<qM"<E2=N5=A*B;#aDp;,][M=T;P#=Su1t;u9Pn<<6&tr_`hs<)lrm<;0Dl<;fbi;Z0Gs
+;L3Y9H[L5?IK+crJ,XuuJH1<$KE$W)L&Zo-LB*/0M/S90Mi<USNfK0]OHG]hPEV5rQ'Rc(R$sM6
+S=Q7CT:qsQUSO``Vl-MoWiW>*YHY:;Za@-K\%0&]]Y2%o^r!t,`Q#s>aihlPcHjkbdaZdtf@S^0
+gYCWAhr*JQj5]7`k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HlrU^#>s+14)s*t~>
+JcC<$JcERdmJd"]r;?<drVHKgqY:$`rq??a&B)Q.c-tG,kNhO&>$+j.naZVJrU9dSs6]gPs6K^M
+rojgSkND!ijlPR`j5T%si$[F=h;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`Pod5_SO%&^Rb@o
+!h5XIrgE,?-#&j8O,&7/DJNotBWJ,2UR[g>OGegFJ9uQeJ:N6&Kn=u3L4k<[]*k=(WM#`*G^P0u
+M2V(hrK6f:s,dGGO,f6[rf$c7!0$o8!/g`2rJ1B,p4`BspP&Bs!el;\rdt6)L%g6#L&Qc*K)pOT
+rdk*"!J,e"JH1<"JHC@OJ,OinIfOrrIJeHmIJnQmHi8?jHM`!fHN&3iGlDpeGQ<$gHMi'fH38G;
+H$T72rd"Kf!dT*<rd"Njqg&6frHdpZ!d]-;rd+Qhrd+TirH\QmI!^5=I/89kIeeKhIfFrpJ,b&h
+JH:CVre1W4LP^kDM2@+Irepf8s,I&=!0@)?rK6u@s-3MJ&!)0dIX6BdG&_;9C2.O%FoG;9;uTbp
+<Vfbp=TDS%>6A#1>$:i,&6DuTaBMkVJY]ca[^NQJY]0K6rM0@f!i;cjqkj27!71>br6PDf!6kGc
+!6Y5_q98]Y!6Y)YqoJ_^s*OcnrdFfqs*t#us+(0%re(6(!/:E,s+^T1reUZ5MuJZKNK0'\OHGZg
+P*;,qQ'Rc(R$sM6S=Q7CTV8'RUnjiaVl6SpX/rG+YctC=ZaI6N\@K2`]Y;.r_8=+/`Q-'AbKJ/U
+cd:(feC<%#f@em4gtgiEi8N\UjQ5OdkNM0qlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Zjrqu`n
+oDX=@JcFL)J,~>
+JcC<$JcERdmJd"]r;?<drVHKgqY:$`rq??as-+"YR@U+PY-G:;;Gp@inaZVJrU9dSs6]gPs6K^M
+rojgSkND!ijlPR`j5T%si$R@<h;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`Pod5_SO%&^]&fb
+KDpK"JH1<#Jb4I2<HE.qA7/SE=]\X)J:2cjG'%\>BP(d`?X$e6@g?RTAS#LcAWHbL$[6cCGC4.?
+E,fuBH1lUbHLuLUGku[eG^"?/FT?UaFng(YFnp.KFTQZ+F74,LEW0nWEW0qWDuFYODuOYPDu4MO
+Du=JQDt7fDD?"GPCB86grG2INqel@LrbVRNs).^Nl>HH:n8A5DrGMLNrbhRN!-%mTs)@mUs)@sW
+r,D[UpMg.Pr,VgW!-%pWr,Mp^F`heJr,r$_s*+Hes*=Ng!IK4nIIqt"I=#pPDJsK3ChI<jA7T1\
+B)Y^*;uTbp<Vf_s;,[0dr_O8*;Gg7ePa"s><,-rBMi3IML5&t/Mu8J4MZAY3Mu/nAQN3ELRK&`T
+S,8WSRJ3*ERIHUDQi36KHN/?lI/\QoIfFosJH(0#K)UE&KE-`*LB!#/M#N53MMqImBT8%5O-#Kd
+P*2#nQ'IZ%R$a>3S"-%@StMdNU84T]VPgAlWiN5'Y->.8Za7'J\%&u[]Y(tn^qmn*`Pom=aihlP
+cHjkbdaZdsf@S^0gYCWAhr*JQj5f=ak3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6Nl
+rU^#>s+14)s*t~>
+JcC<$JcERdmJd"]r;?<drVHKgqY:$`rq??a$<:#&;H$\'@:E\Sr^?lXnaZVJrU9dSs6]gPs6K^M
+rojgSkND!ijlPR`j5T%si$R@<h;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`Pod5_SO%&^\q.)
+;tj8k;uTZL0K1gD/hJJ33&ifR5sIRt4$#>[2)R*B0/"q71,:[B1GgpH2)@s&:J<K!4uPr+:Jq*h
+!)`\mr_rhps&8qqr)*8fpJD/n;cH^p;Gg<i;?0Sn;Y3ff;H$Nk;ZBSo;Z9Vp<;oer<;T\q<<#ns
+;Z'Dl;#X;l;#F/m:esk`rDESjq,%&frD3Jir_WDf!`2`kr(mAjp/(HYr_<Ghr(d5es%rVj!)WYj
+s%`Sis%`Phs%`PhrD*&^r_W5_pe^rcr_WSi!)WDep/(`a!)WYls%r\l!DlSk;#XAm;>O,h;>a>i
+;>X2g;?0Sm;?0Pi;?'Pm;uK\q;Z]iq;u0Gr<E)su;uKN"<)QRg:/+AS8kVSO;YsDl<;fhn<WkZR
+5sR[35Rp"B5!M:t5s\LN5s[b)9)_Wi;H$Fk5P/(W=o2=u<W5qn<;oku<)`co!)rkspJgrgrD`\n
+pJUrerHeKjs*Xfos*jutrdb$"!.t3&s+CB+reCH.!/UW2!K)g7N+e32O,oBbOcklkPa.N"Q^F//
+S"#q=St;UKTq\?YV5C/hWN*##Xfen4Z*UdE[^WcW]"G\i^VI\&_o9U8aN;WKc-FY^dF-Ooe^rF+
+g=tE=hV[8MioB+]k2tjjl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVc?eJcC<$g])d~>
+JcC<$JcERdmf*+^qu$6drVHKgqY:'arV$3_s2>/`d+I4;l2BuQ='A[,=Rc7Ws6fpSrp9[Ns6BUJ
+3p>bik2tdejQ#:[iSi_Qhqm2FgtUQ:g"=p.f$r3uda?IhcHa\YbKJ#KaN)<>`5BI.^q[XuSXc1=
+rgNhSp6bZB-@0BrOc!deDJO$&BWeA5VP0HFQ&^fVKn"GnG_(EuJqSf4L4tGKrOWE<NlI'FH$k-s
+L5kherK6f:s,dGGO,f6[rf$c7!0$o8!/g`2rJ1?+p4`BspkAKt!JQ4*KCsltL&Q`-K7\Z+rdk*"
+!J,e"JH1<"JHC@OJ,OinIfOrrIJ8-hHi8?jHMVpeHN&0iGl;jdGQ<$gHMi'gHN/6lG^4T2GlE!f
+GR&M?H?jd^H[GL5mX+qYrd+TirH\HhrHeEhrI"Nk"+5NFIeeKhIKG"LJGXiqJF\6mJqSgVKa<Hi
+M2@%FM2I2iMuSb9NW5%;OSk7<PQ-mGPnB=7I!g9fH?FFKDf0<*D/XGmqc!Gmr`/bp!*B/&!*K/'
+"'J`/=o;D%aT#HOB8EUt\$i`PZESNMUA^kbU^*`nVPU,dVTnq^!71>br6GGhbfp(0s2t;`q98`Z
+!6Y&XrQ#%bH$T@7s*F`nrI+]p!.Xrt!eGrTrdt9*Kn]M\!JcL1M/8'-Mi<USNfT6_OHG]hPE_>t
+QC+&-R[]e:SXuIHTq\<XUo(&fWN)u"Xfek3Z*L^C[^N]V]">Vg^V@V%_o9U8aN;TJbg+M\dF-Ln
+e^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVcBfJcC<$
+gAc[~>
+JcC<$JcERdmf*+^qu$6drVHKgqY:'arV$3_&X/HGS"Z^\Yd1R>Y>/"n;,Zo]n,MhUmJcJPli68L
+kr.bgkN:pgjlGI^io/kSi8<DIh;$c=g=b-1f@JI$e'cXkd*Bq]bfe2OaN2EA`Pf[2_8*h#^A<HT
+JbFTs>ZGi^BDl$6=W:IpJ:)`gFE2>:BkCmb?<^ZF@qB1^AS5XfB6O65$@ZuVFae(BE-$/IoR$R`
+om-4TqKW-eGBW_'q/lUYqK24L!H`DNEWC+YDuanWE;skTE;FMPDZ"GME;XYADYn8ND#S2NCi0,e
+!,_UNrGDOMrb_[Qr,(_:qJYh?rbqdRqeuLPq/?:PrGM[Tqf2US!-.pUs)IdPrc.mW!-/!Ws)IsW
+!crL,rcJ'\s*"Eds*4NgrHeKjrdFEfrI#6!E,]`6DJa-#An>O_@Us%Jqc!Gmr`/bp!EW1o;>sB*
+;,U7f:m@2?:K_RiN/NUOMMHpoqMY0,qhkH@qNq;MR/33NRf/`QRK/cLR/36?R/`NQQ3);VH2W'h
+HN8HlIK+`rJ,Om!JV&LQK*$^[L&Qf-LPYqdCl4./N/WaVO,oBaOcklkPa.N"R$a;1S"#q=StD[L
+U8+N[VPg>kWiE/&Y-5(7ZEppH[^`lZ]=bhl^VRe)`Pom=ai_fNcHaeadaQ^rf@S^0gYCWAhr*JQ
+j5f=ak3)!nlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrUg)?s+14(s*t~>
+JcC<$JcERdmf*+^qu$6drVHKgqY:'arV$3_&Q;S);H@"0@U`bR>sCbI77QeEn,MhUmJcJPli68L
+kr@nikN:pgjlGI^io/kSi8<DIh;$c=g=b-1f@JI$e'cXkd*Bq]bfe2OaN2EA`Pf[2_8*h#^/S))
+;u]hs<V]Vo;[?8K0/bXA4$#G%3#";;5sILq4$#;Z2)@!B0.nk61Gpuf2#fHB2+1/79M@E/5t=[H
+;>3ub;uT\n;>=&a;$Bir<)cdor_WYnrDESmr)!GlqG@5jr_r_ms&&eos&8nr!`N&tqc3Yq!)rkp
+r)*Jjr_WYlr)!Pm:JXgc;?'Gf;#X>j:]O;j;#4&h;#aD_;#O/i:A[ic:&n)f:B"&h;#F/j;#X8j
+:B+,i:B+,h:B"&f:A.Ha:f6j\pJCibr_WVjs%rJfohbW`rDEPj##S2m:Jakbr_ibnqb[8hrDNPj
+qbR8ir_ibnr_`bo;#=,h;Z0Pn<<#ns;ZB\m<;TZ-<)?Fh:f1(g:eaPV91qiI6W3e[rD`brq,RW"
+5s[b#q`t*Es$6TMs&K%a!Coi_:]sZp;,]aQ=T2J#=9)=t<<?,u;u0Jm<<6&tr_`_pr`/\lq,R;k
+r_rPhs%riBH$T@7s*F`nrI+]p!.Xrt!eGrTrdt9*Kn]M\!JcL1M/8'-Mi<USNfT6_OHG]hPE_>t
+QC+&-R[]e:SXuIHTq\<XUo(&fWN)u"Xfek3Z*L^C[^N]V]">Vg^V@V%_o9U8aN;TJbg+M\dF-Ln
+e^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVcBfJcC<$
+gAc[~>
+JcC<$JcEUemf*+^qu$6drVHNhqY:$`rq?6^#P?$\e_K3Km/HAVm-*P6=]\`)n,MhUmJZDOlN$5K
+kre1mkN:pgjlGI^io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfe2PaN2EA`Pf[2_SEq$^:g&,
+S"#lFRJ<0DQR-TfD/*cuC2[m'B4nBGVPTuQQ^3\iLOsu#H$"OgJqJ]/KnkA;rOWH$PeDjIG^Fpn
+KoM/bOSt=8P5gXIOH5B]NW"h7N<"q:MZAY5M#E,-LA$>uK_U8rL&m!]rIacr!/:E*"+u2VK)U?$
+J,t4OpjiKsIt.BFqgSTprI+Efs*O]lrHe?drd+Qh!-nKercnEgr-A9f"F56:H$T:3rd"Hes*FZi
+rd4Qh!."Nhrd+Wmo6UObH$TC8rd"Khs*=Tir-SBir-\WoI=D$B!J#[rIKG"LJGOcpJFe=(JqJ`0
+KnY8;Ll$qDM2@+IMi7Rns,@&>O8Y1=OT:RDP6@&4PE_=1PnKCLPC@n,H?sj\EGTT2Ci"!3;YsDl
+<;fhn<rQ2#=TDS%>6A#1=]tZ)s2b4E$>ts3\$rfS['HobrM'7cqkX.d!m8a3q9Audp<```"4#08
+bl5fcb5KNZbkoQ`b4j$Wa96^3G^4T5HN/<lI/SKnIK4lrJ-(:RK)UB6KS>,7L51P?M2@+IMi<US
+NrG)JOHG]hPE_>tQ^F/.R[]e;St;RJTq\<XV5C/hWN*#$Xfnt5ZEppG[^WfY]=bhl^VRe)`5Td<
+ai_fNcHaeadaQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<h
+qu6NlrUg)?s+14(s*t~>
+JcC<$JcEUemf*+^qu$6drVHNhqY:$`rq?6^&bM?UT;/BhZ*LX=Xf83q;Gg?kn,MhUmJZDOlN$5K
+kr7hhkN:pgjlGI^io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfe2PaN2EA`Pf[2_SEq$^:jGr
+oRZae*aW)W>[(?7>?P*1=+YmKH?aINEGK3!@piVJ>@V2Srac^SBP(k:NK&s:F,=jdC2@g/Fa3J(
+rd+6_om$=Y!dJp4pN?:RrcS'Zn9"bRF7+&KEW0nWEW0qWDuFYODuOYPDu4MODs_H>D#eDOC]A8M
+D#8,JD>nAND?"MPD<Ys7Dt%ZDDuFSNDuX_ODuXeSDZFbSEW0qWEVsbUEV=ANEW'nXEW0nWEVshY
+F*)R'FSp:]G5ladGl;pdH38MAI=:a:r-]0+I;s1CDf9N0B4Y^eA7K.^;YsDl<;fhn<rQ1q;>sB+
+;,U7f:m@2>:L&"!NJi^PMMHpsHiAp(N/RLhr/:Q@pmCoG!1NnVr0dYSRdujERIHUDQN`\!G^+LZ
+rHeKj!.=`ns*artrI=s#JqEuS&;5akL5(J=Ll$tGMMmFPNK4"!@??V7P*;,qQ'[l*R@9V7SXuFF
+TqS3UUnsrdW2ZetXf\e2Yd1UB[C3QT]">Vg^V@V%_o0O7aN;TJbg+M\dF-Lne^rF+g=tE=hV[8M
+ioB+]k2tjkl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVcBfJcC<$gAc[~>
+JcC<$JcEUemf*+^qu$6drVHNhqY:$`rq?6^"nYYi<*EW-@K^+G>Zt8/70#gVn,MhUmJZDOlN$5K
+krItjkN:pgjlGI^io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfe2PaN2EA`Pf[2_SEq$^:dKF
+p/:rjrDiYms&1"%4$5Vd3BB2[3&ic]5X.Co3]]2Y1bpg?0.nh51,C`c1_MZ(1ege@9K,.#77g9P
+;GpFj;u0Dg;uT\n;>3ua;$Bir<)cdope_#hr)!GlqG@5jr_r_mr_Wnu;cH^r<)Zck<<-"t;Z'Dl
+;#X>l;#O5n:esk`rDESjq,%&fq,$obs%r_mnPK0[!)EDer_EJhrD*>fr_WMir_NMgs%`Vir_NPh
+r_NJfp.tZaohY<Yr_NMir_EMjpe_)h:J^^]s%`Vkr_`Yks%s(u:/=\_;,L4g;>O,g;>jDk;>X/i
+;>sJm;?'Mq;,C*e;>jDk;u]hs;u]bq;u9Pj<=2]*<DZIf:fC:i:B!oi91hiF;YsDl<;fhn<rQ2#
+5la.H5lEqI5lX.M<W>>m6V1!J;,L4i;,]bQr`B/'qcNi#r)iqtqc*f!;c?Xp<W,nr<<-"s;?Bcr
+<VBDf<Vobn;u';p;0R80H$T@7s*F`nrI+]p!.Xrt!eGrTrdtc8KnY89LPL\BM2I1KN/WaVrf:KL
+OcklkPa.N#R$a;1S"#t?StD^MU8+N\VPgAlWiN8(YHY7:Za@-K\%0)^]Y2(p_8=+.`Q-'Ab0/#S
+cHstee'uq"f@em4gtgiEi8N\UjQ5OdkNV6rlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Zjrqu`n
+o_sFAJcFI(J,~>
+JcC<$JcEUemf*+^r;??erVHNhqY:$`rq?6^s7?K:dFmI?li-8\m-3Wlj&]Dd='4nYmHsl=s6B[M
+rosIH!9a@Ds5c6$j5].XiS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@oIa2Z*:_ns:+^V@Lr
+]UYL]R[TY4pmCcA-#[[<BkhC"D/3isBrS)/U7Id@P)G0OJp_ihGCbBtK7nr3LP9LB]*jC^Tq%Ws
+H[LI&M2h"drK6i;s,d>DO8b.;N;\_9N;e_8MZ/G0L\uo%L&$DtL%pB(KnP-YKCsltL&Q`-K7\Z+
+rdk*""+buRJGOfuJ:E(HIf"TpIf4]hI/eQlI/SBgH2`-hH2VpgG^"H4HMi'fH38G;H$T72rd"Kf
+!I9"jGli;=Hi/0iH2W'WHiA?kGlW0iH2`-hH2i3hHi8<mI=2$B"+5NFIenNoJGFZoJGOcoJFnBt
+JqJ]/KS>/9r.tB0s,-i7rf$l:s,[,?rfI2Drf[JJPEV5qrKS(_Q^F/.MLBo"H?saYD/F3.C2Im1
+r)<Pnr`/bprE'#$r*'2)=T2J%=:`Kp>[)B=[^W`S[^<?EKVJ@=qP=(d"3Sg2c2#Wbch>``cN)8i
+bl>lcb5KNZbkoQ`b4j$XaSpD`GlN'fHN/<lI/SKnIK4lsJH(3#K)^K'KE-`*L&m'creY?HMi<US
+NK0'\OHG]hPE_>uQ^F/.R[]h<St;UKTqeEZVPg>kWiN5'Y->.8Za7'J\%0&]]Y2%o_8=+.`Q$!?
+b0/#ScHstee'uq"f@em4gtgiEi8N\UjQ5OdkNV6rlg4!*mdKW6nc&([oCW%T!quB_rV6Egs8)Zj
+rqu`no_sFAJcFI(J,~>
+JcC<$JcEUemf*+^r;??erVHNhqY:$`rq?6^s7@(nS=uj_Yd1O=XfA:rVbU,e;,ZiMmHsl=s6B[M
+rosIH!9a@Ds5burj5].XiS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@oIa2Z*:_ns:+^V@Lr
+]_mBTJc:3"J,=cr?N4:/>5q_T<`ad#H?j^VEc,W)A7JtQ>[1cK@V'+_B4kd[NK&s3EdMqWC2@g-
+Fa&0%HiA?aH1cFYGlr;8G'<V&qK2a[q/l+K!d&L)n8ePKrbqjWrc%mUrc%[OrbhXPqf)IOm;Di=
+s(q^N!c2^jrbMXQDJf>irGDOMrb_[Qr,(_:qJYnAs)7pT!,qjSqeuLPq/67Pr,;RRrc.mU!-.pU
+s)IdPrGhgW!-.sV!-.sX!-A$ZqfVp^s*+BdrHeKks*aQhr-eNm!-eE]rb`!VAnG[f@q&t\r)<Pn
+r`/bprDru$q,./g'N%b*:f*CA:JYGENK&jSMMd1DBm]i<!/pW0rJUW@pmCoG!1NnVr0mYRs-WhQ
+iL'Y3rceBes*=Qhs*F`nrI+]p!.Xuus+13%s+C?)!/:E,!JcL1M.qj*N/WaUNfT6_OcklkPa.Q$
+R$a;1S"-%@StMdNUSO]_Vl-MoX/rG+YctC=ZaI6N\[f>b]tV7t_Sa=2`lQ6DbKS8Wd*^:jeCE1&
+g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9rpg*]o`"Lbp@n=[q#C0iqY^6ir;HTdrdk*#s4[L'~>
+JcC<$JcEUemf*+^r;??erVHNhqY:$`rq?6^s7@((;cm:5@U`bQ>?Y-1=[5DF77Q_5mHsl=s6B[M
+rosIH!9a@Ds5c&tj5].XiS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@oIa2Z*:_ns:+^V@Lr
+]Mql);ZKer<W5tt;u9NI4$5Se4$#D_2`N]Q69m^t4?GP^2Dm6F0.nk11,:XA1c7*I1cnE-9J8.c
+1eCD<r_`_npJUcb!)i_lpepob"]A8u<)Z]i;#jMl;?'Pk;$'Wo;u9Gt;,C+f;cHasr`&Ym"&r2s
+;Z'Dl;#X>l;#X>l;#a;k;#O8k:]=/j:]4,h;>F&b;?'Jm;=RK]:B4/e:]=,h:]4#k:JO\^;#F/j
+;#X8j:B+,i:B"&h:B"&f:A.Hb:f1'^:\7K`:B45j:B45d;#sKhpJClc!)WYlrD3Yp:ejb^;#F2e
+;#O8j;Z'Di:]OAl;Z9Pn;?0Sn;#O8h;Z0Mq<)Z`p;?0Ym<;KSq<)rlr%T$"u;G^7e9h\5R8k;NA
+r)<Pnr`/bprDs#%5Pm_F5Q="J5n?sp5s[q2:/=_a;H$Fk6V@>\s&eqsrD`Yo"]SE!<)clr<;okt
+<;oeq;tO&b<Vobh;u]bpGQ2pfH2W'hHN8HlIK+`rJ,XuuJcC?%KE$T)L&Qf-LPYqdBo7h-N/`gW
+O,oBbP*2#nQ'Rc(R$jD4S=Q7CTV8'SUnjlcVl?\sXKAY0Yd(O@[C3QT\\#Mf^;%M$_o0O6aN2NI
+bg+M\dF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6Kk
+rVcBfJcC<$gAc[~>
+JcC<$JcEXfmf*+^r;??erqcThqY:'arq?6^rq-6^"4c5gli$2OlK/$)#3"QH>$"g.rTsRMs6BUJ
+s6'IGroQ-#jQ,@]io/kSi8<DIh;$c=g=b-1f@JL%eC)ald*L"_bfe2PaiMNB`Pf[2_SO"%^:h1k
+S=BMHp6bWA-?*j>C2.HtDJXo<BWS2/VP0QKQB@/\K7J>pG(5-rJq\l4L5:\]rjrZ?Njk%tH$t3r
+LQ.CWO,rgmrfR,A!0R5C#*G"/O,f3ZrJ^]7!0$o8!/gc3r.k3)pP&Hsq1\Tu!el;\rIafs!/:E*
+"+u2VK)U?"J,t4OqLJ]uIt.BFr-n]qrI+Efs*O]l!.4]kqK`*ercnKgrHJ9d!."Qir-A9f"*o-:
+H2DjcH2VsgH$]I8!d]3?rH\Hhr-J?h!.=EcrHeKhqKi*c!.+Qird=`os*Xip"+5NFIf"WpJ,k)u
+IKb4MIXcluqg\QpoRR!ordt?,KnbA<r.tB0s,$f7rf$l:!fi>&rK.&As-!DGs-!DGs-3JIs-NbQ
+&Xf#SIscTgH[9mWCiXE0CMn:m;uTbp<Vfbo=8uD#>6.l/r`T5&&6[)r>[2]L[^W`S[^<?EMk^-E
+qP=(drlP8cc2,`cch>``cN)5hbl>lcb5KNZbkoQ`b4j$XG5ZXbGlN'fHN/<lI/SHpIXckHJH(0#
+K)UB1KS>,7L51P?M2@+Jret?HNfT6_OckllQ'IZ%R$a>3S"-%@T:hmPUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGd^;%J#_SjF5aN2NIbg+M\dF-Lne^rF+g=k?<hV[8MioB+]k2tjkl0@U$m-X60n*olH
+ncA@Srq-?dp\4X]s7u]kr;6KkrVcBfJcC<$gAc[~>
+JcC<$JcEXfmf*+^r;??erqcThqY:'arq?6^rq-6^".uBhYPtd8Y,\CrVP^2e;c6Ij;Z5t^li68L
+l2TrIkPjU#jlGL_j5T%Vi8EMLh;-l@g=k64f@SU(eC;podEp4bcHOJTb/q`F`l5m6_SX.(^V7Co
+]DR9ZJH1<!JH16!J,Om>?<g`=>Zt96>%:T6JU_umGB\+ID/!Qk@UEAE@q9%YrFZ(C&q5h"NdPf$
+FeihkEH65IH[C'bo6^I_qKW'crH\'\rHSWmH$OXYGBS0)Fo$4ZFo$4LFTQZ+F7=5MEW9tYDfPbq
+s)7mUqJZ=Mr,;LPr,:t?qec@Ls(_XOD>e8ND>S5LD>nAND?"MPD<Ys7Dt.]HDf0IdDuX_ODuXeS
+DuO_TEW0qWEW'kVEVFGNEW0tYEW'hVEW'nXF8L(UFoQXbGPugcH3&A?rdFKhr-eEj%WZK,DJsB/
+Bk:mgAR]1^r)<SorDi\pr)`o#qGI8h(f=1.:f*CA:JbYPNK&jSMMd1DD0q5#Mi7CgrJUT?pmCoG
+!1NnVr0mYRs-WePigBahrHJ9ds*=Qhs*F`nrI"`rIt.HJs+(0%rdtT3KnY89LPL\BM2I5jN+7j-
+O,oBbP*2&pQ'Rc(R$sM6S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE[^WcW]"G\i^VI_'`5Ta;aND]M
+cHaeadaQ^rf@S^0g>(N@hr*JQj5f=ak3)!nlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6Nl
+rUg)?s+14(s*t~>
+JcC<$JcEXfmf*+^r;??erqcThqY:'arq?6^rq-6^!`iK3raH.@?!:<1=BJX-r^HiVrTsRMs6BUJ
+s6'IGroQ*"jQ,@]io/kSi8<DIh;$c=g=b-1f@JL%eC)ald*L"_bfe2PaiMNB`Pf[2_SO"%^:h1k
+<;'5k<)rosrDWYo!^8\.rAkKM3%m6K5X@Rs5!1h`2`ENIr\+=(r\=I0r\P?J2)Ij":J<Z/5Y4sQ
+;G^1e;H$Ij;>O2b;ZK_o;>=&b;$Bir<)cdonkoEbqb[>kr_r_m"]8)n;H$Nn<W?%n<<H3!;H!Ei
+s%r\ls%r\ls%r_k!)WVks%iVj!)NPis&&_k!)NPiqGI8h!)`5^r_NPhqbR2d!)NMfr_NPjr)!Gj
+r_NPhs%iYis%iYir_NGepJ1ie;,Hp]oMGQ`r)!/c!`2ZgpJClc!)WYlr_WVl"&DZf;#=,e;#O8j
+;Z'Di:]OAl;Z9Pn;?0Sm;#O8i;Yj>k;?0Ym<;0Dj<";\u;,:+h:f'hY9MA#N7/U!_<;fhn<r?&!
+=SkA_5Q="J5n?sp5se%6:/=_a;H$Fk6V@2Xs'#8%r)EPn#ZO`$<)cjt<)ifr!)rkps&8Phq,R;k
+p/D!7rHJ9ds*=Qhs*F`nrI"`rIt.HJs+(0%rdtT3KnY89LPL\BM2I5jN+7j-O,oBbP*2&pQ'Rc(
+R$sM6S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE[^WcW]"G\i^VI_'`5Ta;aND]McHaeadaQ^rf@S^0
+g>(N@hr*JQj5f=ak3)!nlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6NlrUg)?s+14(s*t~>
+JcC<$JcEXfn,E4_r;??erqcThqY:'arq?6^rq-3]"5;\sm/HAQlK8**%cH=*iE08c='4hUlg*j$
+rojLJkNDj,3p#G`j5].XiS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHaYWbK@rJa2Z*;_ns:,^V@Lr
+]XtbER[TY4p6bfF!1<bP1N75KC2%BtD1@(KB<.u.Un4!AP`:NTK785nG^tI#K7er5LPCYt]Y'Z"
+\Y?$II"-g(NVnn;O7SJ3Oo:ICOoCLJOcYWbNfB%sN;\_9N;e_8MZ/G0L\uo$L&$DuL&$K'L&Zi)
+KD'ruL&Q`/K7\Z+JV!`L!J,dtJHC@OJ,FcnIft4KI=-J;I/eQlHiSNmHMVpeHN&0iGl2afG^4U]
+r-A9f"*o-9H2;dbH2VsfHMr-hHhVjcHiJKeHi&-hH2;jcGlW0hHi8<lIJeKmI/n`nJ,b'!J,Xm"
+IsultJGOcpJFe<lK)UB'KSBD\!JlO1M#W;4MMqFls,@)?O,s7$!0R8D!0dDFrf[>HrfmPNQ^@Z<
+&=JoFI=-?gH?OILDes6(Dfu"Wr`&hrq,[GqrE'&'r`]M/=BSg1r`B_7aN7[tKVl2e\$i`PZETLd
+r1j.brhTV:rQ>/aqTf,ep<```"jP67bfe3/b5KNZbkoQ`b4s*YFoQX`GQ2pfH2`-iHiJKmIK+cr
+J,Xs'JV&K+K7no3re:T3Ll$tGMuJZJNK0'\OHPcjPa.N"Q^F20S"#t?StMdNUSO]_Vl6SpX0&M-
+Yd(L?['mEQ\[oGd^;%J#_SjF5aN2NIbg"G[dF-Lne^rF+g=k?<hV[8MioB+]k2tmll0@U$m-X60
+n*ol<o(2JFrq-?dp\4[^s7uZjr;6KkrVcBfJcC<$gAc[~>
+JcC<$JcEXfn,E4_r;??erqcThqY:'arq?6^rq-3]%&'W%Yd(I:X/MkkVPF-e$;OJs;,ZcIlg*j$
+rojLJkNDj,2<Eo[j5].XiS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHaYWbK@rJa2Z*;_ns:,^V@Lr
+]XtcSK)C3"K):-!JH(,tJ-94b>ZtD3=qk@R<`Xd"I!TsWEc5`*An5=W>[:k<AH?FUrb)b$NK%q$
+Lj4PdD/aN<Gl2pfHM)XaHMVpeGlE!]Gl;pfGQE)7rceBcq/uLTs)n-ZnoatSs)[[Ms)J'X")i0u
+E;jeTE;FMPDYnAME;jbVDK"o[qec@Ls(_XOD>e;ND>eAMD>nAND#eJOD<c$7Dt7fGDuX_LDuX_N
+DZFbSDu=PSEW0qWEVsbUEV=ANEW'qVDuanUEWC1YFT$=^FT-F_Focf3rH\Bgs*O]mpO<$gqL8Ho
+!.+W`s).pUC]7oJAR]4arDW\prDiYorE&r"qb\5-;,L4g:f*CA:K2+]NK&jSMMd1DEdNb'Mtr80
+MZB%>QhZsER/i]TS,A]TRJrTPQfOP6FoQX`GQ2pfH2`-iHiJKmIK+crJ,Xs'JV&K+K7no3re:T3
+Ll$tGMuJZJNK0'\OHPcjPa.N"Q^F20S"#t?StMdNUSO]_Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J#
+_SjF5aN2NIbg"G[dF-Lne^rF+g=k?<hV[8MioB+]k2tmll0@U$m-X60n*ol<o(2JFrq-?dp\4[^
+s7uZjr;6KkrVcBfJcC<$gAc[~>
+JcC<$JcEXfn,E4_r;??erqcThqY:'arq?6^rq-3]&6W:I@U`bP>$+g,=B/I+=[2mS#"ItGlg*j$
+rojLJkNDj,2<Eo[j5].XiS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHaYWbK@rJa2Z*;_ns:,^V@Lr
+]XtcI;ZKeo;uK\p4>AoY4$#DR/iY^S5!M1l4$#;Z2)I'C0.ee31Gq!G2)I3K1egh@/j;NZ92/8\
+;c?OlrDNVlr)38fr_ibnpJUib"]A8u<)Z]c;?'Pk;#jMn;uKVo;$9]m;H$Nn<W?%n<<H3!;H!Ei
+s%r\ls%r\ls%r_k!)WYl!`2Zgr_NSjr_WSkrD3JirD<>fs%i\mn50*[!)EAdr_<GhqbI/es%rVj
+!`2Zgr_EJh!)EMhs%`PhrD*&^!`2`jp.t9Vs%iPhq,./g!)NPi!)`Yjs%iVj!)`_ls%rnp:/=\_
+r)*;er_`VlrD<Sl;>j;k;>sJn;?'Mq;,C'f;#O8i;Yj>l;?0Yl<;0Di<!ZE!;,C+f;c?Bh9E.Ta
+7/^'`<;fhm<rH+u=StGa5Q3qI5mLCh5sn1::/Cjd"B//q78!P^r*&u#s&Jtrqc*bu;c?Xpr`&qt
+rD`hrr_ibpoMkWdqc*;gs)n?brHJ9ds*=Tis*OcnrdFfqs*t#u#D%JYK7ei1L&Qf1LPUeDMMqIm
+B8qq4O-#NfPE_>tQC!u,R[]e;St;UKTqeEZVPgAlWiN8(YHY:;Za@0L\@K2`]Y;.r_SX71`lQ6D
+bKS5Vd*^:jeCE1&g"P08h;7&IiSrnYjlY^hl07L!m-O--n*fc9o()DDo`"Lbp@n=\q#C0hqY^6i
+r;HTdrdk*#s4[L'~>
+JcC<$JcE[gn,E4_r;??erqcThqY:'arq?6^rq-6^rpg9Tm-O-,lK8**%H-4)iS`SJ?!CE4=R,2M
+klU)3kPjTEjlHF$1ZIBPi8EMLh;-l@g=k64f@SU(eC;sqdEp4bcHXSVb/q`F`l5p8_SX.)^V7Co
+]=PPBRf8`KR/`NPR/`L/EGfW-NeDk3It)'CWi;niS!]P(MM[+>I!KmZJV&N+K8,)8Ll/gWEjM"S
+S!SGJK858CqiLf<nrWj5rK@,A#Ek41O,f6[NW"h6N<Y?"Mi*@IM#<&+LA$>tK_gDuLAuu-K`-Pt
+K`?c*KE[![JV&H(r."g!JGOfuJ:E(HIf+ZuIXQWlIJ8-hHi8?jHMVpeHN&3gG63#5GlE$eH2`*l
+H$FU[qfr'brceHhHN&3iH2r<jH2r6gHN/?lI.hpaHN/9eHMr*hHN&6lH@,X=s*ainrd=cqqgSTr
+rI5!"It)osJGOcpJFe<lK)L?%L&Qi0LkgeBre^Z5rJ^c9s,[)>q3(cAs-3PKs-E\O!LT5PR/`Qc
+Jp_rmH?j^TD/aE/C2\2m;uK\p<V]\o=8Z/+=^,*6>$+p2=oMM6=ie]iCQ#='\$rfS['Hp'r1j+a
+s/#b;rQ52bc-?.2s3LDcr6GAfr6,)^r6+u]qTAl]q8rYYs)n?brHJ9ds*=Tis*OcnrdFfq!.Xuu
+s+(0%rdt6)L&Qf1LPUeDMMqImArVk4OHG]hPE_>tQ^F/.R[]h<StD[LU8+N\Vl-MoX/rG+YctF>
+['d?P\[oDc^;%J"_SjF5a2lEHbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k2tmll0@U$m-X60n*ol<
+o(2JFrq-?dp\4[^s7u]kqtpBjrVcBfJcC<$gAc[~>
+JcC<$JcE[gn,E4_r;??erqcThqY:'arq?6^rq-6^rpgGsYd(I:X/VtmVPBsdV$Nll<)ZXk;X3QG
+klU)3kPjTEjlHF$1ZIBPi8EMLh;-l@g=k64f@SU(eC;sqdEp4bcHXSVb/q`F`l5p8_SX.)^V7Co
+]=PP)K):,uK)U?$JcLB!J0A6)?!M,S?=72M<`ad!H?aRREG]H'A7AnO>$GKHA7T7`rFl4j$X8.(
+OaMUnD/aQ?H2DsfHM;aeI!bj=qK`$a!."6^s*4WiH2W!eGQ)d^FTHT*qfMg[qK2:Ns)e9^n8ePK
+s)8'YEH#mrDuO_PDuOYODu=SRDZO`om;Df<!,VXMs)%^N!H)cQDZ"AOD#S;ODZ+GMD?+VDDYe;F
+D?+PPD?=`oDYA#KDYe;OE;a_PDuanWDuanUE;sqPE;jkUEWC+YDuanUEWC1XFT$=`FEMa*G5lgc
+H2i3jHN8HlIJA9hIJSElIhI9_F)Q#9Df'<(AnP[c@qB7N;uK\p<V]\o=8Z/A=]&$m;,L.e;,U:g
+:m@5@>&]7VNJi^PMMR"1I#EpXMZ8V7Q2I!CR/33NRf8fSRK/cTR/<65R/_:.FoQX`GQ2pfH2`-i
+HiJKmIK+`rJ,XuuJH1<$K)pXZre:T3Ll$tGMuJZINK9-^OcklkPa.N#R$a;1S"-%@T:hmPUSO`a
+Vl?\sXKAY0Yd1UB[C3TU]">Vh^VI\&`5Ta:aND]Mc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak32'o
+lKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?s+14(s*t~>
+JcC<$JcE[gn,E4_r;??erqcThqY:'arq?6^rq-6^rpg%rraH+>>$+g+=B/H$=U/%s77K^8lK\?4
+!pJh1roO7CjSn0oio/kSi8<DIh;$c=g=b-1f@JL%eC2jnd*L"_c-4ARaiMNB`Pod4_SO%&^:h1k
+]".6-rD`_X'JV3k/1iJ42aBSk4Zb\a2E!BJ0eiS[s"Y9G1c.'G2Dm?d:G"Ff5Y4dJ;,L.eqGR;i
+r)38fn5B0]"]A8u<)Z]d;>sJj;#jMm;uT\p;$Bcn;H$Lnr`&qtpf.Ap;c<Kis%r\ls%r\ls%r_k
+!)WYl!`2Zgr_NSjr_WSkrD3JirD<>fs%i\mnPK0[!)EDer_EJhrD!Jk:/=\_qbd>gs%`Sis%`Ph
+!)EJgrD*&^s&&Jcq+q&er)!Dhr)!2d!)WYjr_WVlrD<Jhr_NSlr_Nbq:ejb];#F2e;#X>j;Yj8i
+:]OAl;Z9Pn;ZBPp:Jamc;>jDi;u]_q;u'De<V]T*;,:%d;c?Oh9MA)P8P;HM;uK\p<V]\o=8Z/+
+=[55:5X.Iu5lEtR<E)7P8PW#Vr_Wht;,TkU=o2D"=oMG"<;KVo;ZKem<<6&tr_ibpo2PTeqGd5g
+s)e9`s*"?bs*4Qhrd+Tks*Xfos*artrdb$"!.t3&!JH1+L'<?gM2@+JretHKO,oBbP*2#nQ'I]'
+R$jD4S=Q7DTV8*TUnsueWN*##Xfen4ZEppG[^`lZ]=bkm^qmn+`Q#s>b0/#RcHjnde'uq"f@em4
+gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Wirqu`no_sFAJcFI(J,~>
+JcC<$JcE^hmf*._r;??erqcThqY:'arq?9_rq-3]rUL`fm-X6-kMtR]iSieUiSWJHgeh6X='5Id
+s60LGroO7CjSn0?io0mp0AkXBh;$c=g=b-1f@JL%eC2jnd*L"_c-4ARaiMQC`Pod4_SO%&^:h1k
+]",A?Rf8`HR/WElI@lmkMLg/)JV.QGWMQGaR[98!M1pY5I!9gcJc:97KS+o4LmkrgOdWe?dWg1j
+KnkZ`OT(=3OT(C@P5C@AOSt1>NW"h6NW4q?Mi*@IM#<&+LA$>sK_pK!LAuu-K`-PtK`6]*KE6^W
+rIOls!J,duJHC@OJ,=]mIfOrrIJ8-hHiABmHiA?fH2`-hH2VpiG^"FZHMi'eHN/3iH2;dbH2W!c
+Gl`5<pNlgcs*XTgq0N'dqg/0c!IB+lHMr3kIJeKmIK+crIft4MIt3(JIfOrsJ,XurJ,OohJc13&
+KS>0YL]<21M#iKlr/:`;NfT8"OS=nCPE_;sQ'Rc'qj8%bR$jA%IXQTjH$41CDf0B,DK\tW<;onn
+<r?%t=T2G->?Y34=^"u-=:\QUaBWbL['mHQ[^NQKYd")$qP=.frlGAebK@uNc-?.2s3LDcr6GAf
+r6,,_qoel\qTAl]qoSeYrcS6arHJ9d!."Nhs*Ocnrd=isIt.HJ!J,k%K6)^"Knb>;Ll$tGMi<US
+NfT6_OcklkPa.Q$R$a>3S"6.BTV8'SUnsrdW2cl!Xfek3Z*UgF[^WfY]=bhl^qmn*`Q#s>aihoQ
+cHjnde'uq"f@em4gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nac8Bo^r.U!quB_rqQNhs8)ZjrVZWm
+o_sFAJcFI(J,~>
+JcC<$JcE^hmf*._r;??erqcThqY:'arq?9_rq-3]rUL`+Yd(F7Wi)\jV50raVPU&_Ude6\;,[DX
+s60LGroO7CjSn0?io0mp0AkXBh;$c=g=b-1f@JL%eC2jnd*L"_c-4ARaiMQC`Pod4_SO%&^:h1k
+]",A'K):,uJcLB#K)^E#J21DREGfGu?!q)N=&j`sHZsRPDes&sA78eK>@D#PA7]@`AnPe&NK%k!
+M0,G,DJsT?H22gdHM;dcI/eNhH16(YGl`/8rHS<crc\-\!H`D[FT-FYFRsYTFT6FOErU.ZDuahU
+E;jeTE;FMPDYnAME;XYDD?4TlqJ?CPCMRa'D>n>QD/O4iDZ"AND#S8ODZ+GMD?+VCDYe;HDZ=SP
+DZ=YTDYJ)LDY\2NE;XYOE!1)uE,fmqDuanPE;aeUEWC+XDuanUEr0tWFoQR`FoQUdGBeB2H2i3j
+Hi8BfIf+WjIf=fsJGt*1H?!nBE,KK,AnP^d@Uj"KrD`brq,[DprE0&%)c9F/;,C+e;Gp=fPa,$N
+Fc26=Mi3IMLk^Y3Mti20MuJtBQ^Ic=pR(fF!1NnVr0dVRrL!GJl^7WmrcS6arHJ9d!."Nhs*Ocn
+rd=isIt.HJ!J,k%K6)^"Knb>;Ll$tGMi<USNfT6_OcklkPa.Q$R$a>3S"6.BTV8'SUnsrdW2cl!
+Xfek3Z*UgF[^WfY]=bhl^qmn*`Q#s>aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5Odkiq?slg4!*
+mdKW6nac8Bo^r.U!quB_rqQNhs8)ZjrVZWmo_sFAJcFI(J,~>
+JcC<$JcE^hmf*._r;??erqcThqY:'arq?9_rq-3]rULS0@U`bO=]\X+='/U.>$4s0=Z-1I!(QtP
+s60LGroO7CjSn0?io0mp/`5F@h;$c=g=b-1f@JL%eC2jnd*L"_c-4ARaiMQC`Pod4_SO%&^:h1k
+]",B>;uT`7.Q]OG0eFn,/MB%>5s@Fp4#o5Y2)?s@0J5!W1(Q2t1c$sG2FUA:2a0Js<)EQl!*&_k
+r_`SkpJ^NYrD<_r;cH^p;Y*cb;Ys;k;Z0Pn;?p&q:f1+h;cN`r!*&\m!E2nn;?'Jl;?'Jl;?'Jm
+:B45j;>sAj:]O;j;#X>e;#4#l:f1(d:\.E^:]F2e:]=,h:]4#k:JO\^;#F/j;#X8j:B+,i:B+,i
+:B"&e:A7Nc:f1'_:]!ug:]!ug:]+&b;>sAi:]OAj;#a>f;#aAq:JO\];#=,f;#O8j;Ya2i:]OAl
+;Z9Pn;?0Pm:]F8k;$'Qk;>jDj;u]_q;u'De<VKGo;c-Ek:^Kup91qrO8kMKMrD`brq,[DprE0&%
+#!bC<5<hCurBUZg<'`rF:JO^b;$9fp;H$3b>5MJ#<W5to<W5nt<EArr!E<"s;ZB\o;ufqn<;T\l
+<;KPlFT-F_G5ZXbGQ<$fHN/?lI/\NqIXckHJ,t4Qre#9FKnY89LPUeDMMmFPNK0'\OHG]hPE_>u
+Q^F//S"#t?StMdNUSO``Vl6VqXKAY/Yd(OA[C3QT]">Vg^VI\&_o9X9aN;WLc-FY_daQ^rf@S^0
+gYCWAhr*JQj5f=ak32'olKdg'mI'H3nF?)?oCV\So`Fj]p\ssfq>^<hqu-HkrUg)?s+14(s*t~>
+JcC<$JcE^hn,E7`r;??erqcThqtU0brq?6^rq-3]r:1$]mI'B*jndsHhqm2FgXt"W>$+j.kih4/
+k5XNCjSn0?io0mp/`5F@h;$c=g=b-1f@JL%eC2jndEg+`c-4ARaiMQD`Pod5_SO%&^:h1l]",BN
+Rf8`HQo(.VCndA\Lk0l$Jq@X7W26AaR[91tMhck4H[0d`JV&Q/KnbA<MS$N?Ybe"lR<sF8Ll7>i
+OSk1<OT1C;OSt=@P5LFCOH9="r/CT6rf$l7s+pT.r.ap!pk8R!q1ep's+L?'pOrO"s+CE*K)L8u
+J,t4Oqgeg!It.?ErI4frr-e<e!.4Zl!.4]kqK`*ercnKgr-&6fH$Xf8H2W$kH$FRZqfr'brHJ<g
+rd"Ni!.4Hds*Ocnpj;g_s*=EdrcnNjHiA<kHiAEmIJnQmIJeQoIfP#pJ,OoqJ,XuhJc:<%K`6]3
+LPCS>LkpnEMYrG5N<5-$O8b4@Onk.FPEM,oQ'IZ$rKdSQQ^@Z<&Xf)VJpVlmH$=FNCiX?,CN<AQ
+<;fhn<r?%t=Su>%=p%l0>$:i,%p?up>^;dH[^W`S[^<?EYl:EoU]RC6aSs9cb0.rMbKS6.cMu5a
+d/D8kcHZ:1s2t5^qonr\s2t8]s)\-\rcS6arHJ9d!."Nhs*F`nrdFfq!.Xuus+,NKK7ei1Knb>;
+Ll$tGMi<USNfT6_OckllQ'IZ&R$jD4S=Q7DTqS3VUo(&gWN*#$Xfnt6Za7'J\%0&]]Y2(p_8=+/
+`lH0BbKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlYail07L!m-O--n*fc9o()DEo_%nNp@n=\q#C0i
+qY^6hr;QZdrdk*#s4[L'~>
+JcC<$JcE^hn,E7`r;??erqcThqtU0brq?6^rq-3]r:1$]Z*CI4W;`[nV#[CkU^EroUJ=]a;,ZWA
+kPjWDjT+B@irS/urnoBchVI#CgY1B7f[na+e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Us]Y(hd
+\c.3XJbaorJ2:G3H#db5@9d/K@9.l,H[BsZEc5`,ARo1T>ZtQGA7]@bBP2$mNf@1jI!:9qCi=?:
+GC'%2rHeEhs*FZkrd=`mqK_RTs*=Hcs*+HcqK;gZqfMg[piQ.Ns)e9^n8ePK!cW'rrc%jTrc%^P
+rbhUOrG_XPn888DDYn;ND#\8OCi0,es)%^Pr,)FLrbVXQrGDIM!,q=DqJZ.Hrb_UO!cMsop2BtK
+qJZCQrGVRPs)7pV!-.pUs)IdPrc.pX!-.sV!-.mVr,hm[rcJ0_s)nHfG^014s*=]mI/SKgIf4]k
+If4cpJcC<3F)Gr9DJX*$AS#Ia@V&L;<;fhn<r?%t=Su;3:f1(d;,L4h:f*FB:Le_MNW4q:M?J`i
+L4"pTM?&S5Pld8<R/WHHR/33NRf8fTRfAfSR/!$9R/_7+FT-F_G5ZXbGQ<$fHN/<lI/\QoIK4ls
+JH(1IJqJ]/KS>/8LPUeDMMmFPNK0'\OHG]hPa.N"R$a;1S"-%@T:qsQUnjlcW2ZetXf\e2Z*UdE
+[^WfX]=bhl^VRe)`Q#s>aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5Oekiq?slg4!*mdKW6nac8B
+o^qhLp@e7TrqQNhs8)ZjrVZZnoDX=@JcFI(J,~>
+JcC<$JcE^hn,E7`r;??erqcThqtU0brq?6^rq-3]r:1-`@U`YI='&L+r`K5)r`T5(#[9M^7R]f1
+ki_s-s5a7Aro4%=iVqaehqm2FgtUQ:g"=p.f%&:"e'cXkcd'h\bfe/NaN2E@`Pf[2_8*h"]tD"h
+\[hQ8s&/Ph),qt=3ArZI/1E,%/iGpZ5!;%k3]8oR1GLT_/eTlo1GgpG2)I-J9i3H!4uGu1;"IT`
+;>X8e;smQ_;$Bir<)cdoo25Kbqb[>krDW\n#>n;o;,U:j<;okt<;0An;c<Njr_WSks%r\ls%r_k
+!)WYlr_NMi!)NSjr_`GeqG@Al;,L.co2,E^s%`Ger_<GhqbI/es%rVj!)WYjs%`Si!)EMh!)EJg
+rD*&^s%rbmpJ:Z_r_NGgs%iPhq,%2i:J^pcs&&_kr_NAe"]8)k:JXg`;>a8i;>sJg;?'Go;,U<k
+;?'Mo;>j;j:]XEir_`VlrDW_os&8bnp/Uid&62\+:/Fec;,BkX9M8#N8Q5UfrDi\pr)`i!r)j1f
+5X.Iu5lEtR<E)7R92JAZr_Wes;,U=br`]/$!*&hqrD`\p!*&qr!``9%qc*Yr;uTYp;uBSp<VTPj
+<Vobl;u^q;FT-F_G5ZXbGQ<$fHN/<lI/\QoIK4lsJH(1IJqJ]/KS>/8LPUeDMMmFPNK0'\OHG]h
+Pa.N"R$a;1S"-%@T:qsQUnjlcW2ZetXf\e2Z*UdE[^WfX]=bhl^VRe)`Q#s>aihoQcHjnde'uq"
+f@em4gtgiEi8N\UjQ5Oekiq?slg4!*mdKW6nac8Bo^qhLp@e7TrqQNhs8)ZjrVZZnoDX=@JcFI(
+J,~>
+JcC<$JcEain,E4_r;?BfrVHNhqtU0brq?6^rq-6^r:9jWs6]pQk5FB@iXb)-hqm5Gg=F]saBVkM
+=6KSFs5a7Aro4%=iVqahhqm2FgtUQ:g"=p.f%&:"e'cXkd*Bq]bfe2OaN2E@`Pf[2_8*h"]tD"h
+\[f5=Rf8`TR/`NKR/WF/Hto7?PDFd>IY)9GXf/%iS=5b,M26q<I<g$\JV/Q.KSG/8LP`XUR@:aN
+k'DE,LPUtQOnk+:O8P+=O8=t;OoCOAOTLW*O8Y(=NW"h6NW4t;M?/Qir.k3)p4`9prIt$$s+UK+
+rIaitre:B*!J?"&JbjooJHC@OJ,=]nIg(:LI=-HkpNusfrHnTlrd+Eds*FZiqf`$brd+NgrHeKg
+!."EcrH\Ber-8<hHhMacHiAEgHh_peH2;jcH2i6jHMr3kIJeKlIJeNpIt7<DrIFirrdaQj"bMAZ
+KS5'WLB!&/M#W;3MuAV7NW5%=O8k=AOoCLDOo1CBP6R8:Q'R`&QMm-QR$X2-RJiQcMgg#$H?XRS
+CM[g&BlJ2o<;fhm<rH+u=Sc/<>$+p2=]ea-=ieZkJ>0K\\$rfR['Hp?USI[]"/X&YaSs<\b6,o1
+bg$%1!71>brQbMibl#Zab59B]bQ>u3bkoQ`b5B?]ErL.YFT6L`G5ZXbGlN'fH3/G@I/\PDIXcit
+J:W9'K7ei1Knb>;Ll$tGMi<USNfT6_P*2#nQ'Rc(R$sM6SXuIHTq\<XV5L5jWiN5'Y->1:Za@0M
+\@K5a]t_=u_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k3(sml0@U$mI'H3nF5u=o(2MG
+p%A%P!;HHes7u]kr;6KkrVcBfJcC<$g&HR~>
+JcC<$JcEain,E4_r;?BfrVHNhqtU0brq?6^rq-6^r:9jW"0o&2WVrapV%9H"UnjiaVPKrXRo3-]
+;<Rr@s5a7Aro4%=iVqaghqm2FgtUQ:g"=p.f%&:"e'cXkd*Bq]bfe2OaN2E@`Pf[2_8*h"]tD"h
+\[f5%q18Hqrdk'!+C.ujE,9&n?sd>C<e>dIH$4:LDJ<]oA7/\I>@V2SAnM$T%VTI7NH00!Gd;.'
+E--;Mp3Zaar-SEh!.4]ms*Oclr-A-`!."?as*=Hcs*+HcqK;gZqfMg[piQ.Ns)e9^n8ePK!cW'r
+rc%jTs)@dPrbhUOrG_aS!cDppmV_o=s(q^N!GlWOD#\ANDZ"AND#\>PDZ+GMDZ=YDDYe;IDZ4MO
+DZ=YTDYJ)LDY\2NE;XYOE!(#tE,kbo!-.pU!-.sVrc.mW!-/!W!-.mV!-A'[rcS0]s)n?bs*4He
+s*=]mI/SKmIK4fpIf4]jIf=fsJGt,uJcL&oE!pQ"Bk:me@Uiq\<)ifrq,[GqrE/o!s%rbmrDESk
+s-3X`BR]r?s,6o7",M\dI//X"Mu8h?QN!9OQhZsDRJiWRRfAfRR/**JQiNKEQiM1+F8^4\FoQX`
+GQ2pfH2W$jH[L5?I=H]qIt3'#JV&N,KS5&6L51SAM2I4MN/`jYO-#NfPE_>uQ^F//S"#t?T:hmP
+USO`aVl?\sXKAY0Z*L^C[^WcW]=bhl^VRe)`Pom=aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5Oe
+kiq?slg4$,n*fc8nac8Bo^qhLp@\L\rV6Egs8)Zjrqu`no_sFAJcFF'J,~>
+JcC<$JcEain,E4_r;?BfrVHNhqtU0brq?6^rq-6^r:9jW"CbbC=BPQ+s&f>*r`KV4>?kE:>$49_
+7RcM>k5XNCjSn0?io0mp0&POAh;$c=g=b-1f@JL%eC2jndEp1ac-4ASaiMQD`Pod5_SO%&^:h1l
+]",A]r)<Plq,@8l*@ER$2)6j:.kE;42*jJk4Zb_c2`<NL0eb750/>?_1_Vc(2)@*a:GG$u7Slr[
+:fL=j;cEHhrDEAgq,?ra!)renr_Wes<)cdoo25Kbr)*JlrDW\ns%rqr;,U:j<;okt<;0An<)WWk
+r_WSks%r\ls%r_k!)WYlr_NPjs%iVjr_`GeqbdAis&&;_r_NPhqbR2d!)NJe!)NSjr)*Ghs%`Ph
+!)EMh!)EJgrD*)_!`2`jpJ:Z_r_NDfs%iPhq,.,erD3Jkr)!DhqG7An:esh^:f.!crD<JjrDNPj
+!)ien"Ahrm;H!Kk!`DllrD3Ags&&\lrDN\or_req!`N&tp/Uuh"B/8u<)ros#ZFPq;,L7h9hkRY
+"&)*^<;fhm<rH+u=Sc/%5X.L45lO%S<E):T9MeM\r_Wes;,U=bpf[Vrqc3Sor)Er#;c?Xq<`])t
+!E<"s;?0Yn<<#to<;ol!<)lrq<;TSoErL.YFT6L`G5ZXbGlN'fH3/G@I/\PDIXcitJ:W9'K7ei1
+Knb>;Ll$tGMi<USNfT6_P*2#nQ'Rc(R$sM6SXuIHTq\<XV5L5jWiN5'Y->1:Za@0M\@K5a]t_=u
+_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k3(sml0@U$mI'H3nF5u=o(2MGp%A%P!;HHe
+s7u]kr;6KkrVcBfJcC<$g&HR~>
+JcC<$JcEain,E7`r;?BfrVHNhqtU0brq?6^s7H<^r:9jWs6pB]kN1jgkN(X_iSXXk'\qBkd)sAD
+='A^-=Q\`+jQ#:[io0mp1uI0Gh;$c=g=b-1f@JL%eC2jndEp1ac-4ASaiMQD`l5m6_SO%&^:h1l
+]",A][[NYQR$di=pm<n)IV>7=NeW"6IXu*FX/W"lSXGe,MMR">H?aX`K7\c/K8##8LPrc]\"'(i
+H$k*pLQ.FZrfR&=r/^c;r/^c;rfR2Cr/gu@rf@&=!0-r9qi(`;Mi*@Ir.k3)p4`9prIt$$s+UK+
+rIaitre:B*!J?"&JbjopJcC6#J,=]mIg(:LI=-HkpjE*grHnZnH@#C4s*FZiqf`*eH@#O8r-JBf
+!."HdrH\?dr-@s]s*Ocnpj;g_s*=EdrcnNjHiA<kHiAEmIJeKlI0P.KI=?WpJGF]mJGt&sJFe?l
+K)^K'K`?c*LAlu.L]WEkMuJ\7N<#"<NrY:@OoLUEOo1CBP6-u6Q2R!KQi<9gQ^F,,R@9S4R@9@i
+I=$BfG]n"BDJWs&G#\E?q,[GqrE/ht(g'pE=]ea-=ieZrLoIhk\$rfR['Hp?USI^^!2]Y7s2b8`
+r6#,bc25cdch5Z`cN2>8r6,,_qoeu_s2tDdqo\u^rlP1[s)S-\r,hs]s*"?bs*4Qhrd+Tk!.=co
+s*artrd]'@JqJ]/KS>/8LPUeDMMmFPNK0']OcklkQ'IZ%R$jD4S=Z=ETqS6WV5C/hWiE/&Y->.9
+Za@0M\@K5a]tV7t_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k3(sml0@X%mI'H3nF?&>
+o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+14's*t~>
+JcC<$JcEain,E7`r;?BfrVHNhqtU0brq?6^s7H<^r:9jWs6q57Wi2kqWhuViV50o`VPg;dTq.X=
+:/Xqd;Wd*%jQ#:[io0mp0AkXBh;$c=g=b-1f@JL%eC2jndEp1ac-4ASaiMQD`l5m6_SO%&^:h1l
+]",A][ePFRK)1$BJ6l5tE+rfg@:3ME=+YmJH?XFMD.mQn@pN;D@Us"\A7]EQBF\a9=+bdAKkbFD
+F*;hUI.hpcHMi-gH3ASBI!^5>HMr-cGlN'bGlN'cGlN!eG5?@\F8U.ZFng(NFT?O_F7=5ME<U<"
+DfBW6rbqgUr,2UTDuFSODu=SRDZXfpDu+>OD>A&MD/T2e!,VXMs)%^Ns)%aQr,)FLrbVXQrGDIM
+!,q=DqJZ.Hrb_UO!cMsoq/6:QDuOYNDuXeSDuFYSDuXbVEV=AOEW0qUEW0tYEW'kRErU4YFT6L]
+FT6IcG'A1UrH\Eh!df<BrI+]ps*alqr-eBis*k$!rIOlu%t8P<Df9N1CM.6kARf4_<;fhm<rH+u
+=SQ&!;#O8k;#cd^<c*KgNW4q:M?AZhL4&iT#E+k4Pa%GuQMm0NQhZsDRJiWRRfAfQR/30KR/`KQ
+R.lsIEW:(ZF8U.[FoQX`GQ2pfH2`-iHN8HmIK+`rJ,Xt>JV&N,KS5&6L51SAM2I4MN/`jYOHG]h
+PEhE!Q^F20S"-(AT:qsRUnsrdW2cl!Xfen4ZEppH\%&u\]Y2%o_8=+/`Q-'AbKS5VcdC1ieCE1&
+g"P39h;7&IiSrnYjlYail07L"m-X60n*ol;o()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$g&HR~>
+JcC<$JcEain,E7`r;?BfrVHNhqtU0brq?6^s7H<^r:9jWs6p4u>$5$5>[%&.$!LP<?!LW==]drg
+70uHGjlGL_j5T(WrnoHehVI#CgY1B7f[na+e^W*tda?IhcHa\YbKJ#KaN)<>`5BI.^q[Us]Y(hd
+\[]*I;u9Ji;uKZ;-nmV=1G:4//1rk>5X7Ot4$#>Z2`*6C0.nk41GUdCr\Op=1c8#Z2a0)k;#X;o
+<)QXor_rVjrDE;eqG[)cs&8kor_Wer<)cdoo25HarDESmrDW\ns%s)!;,U:j<)cjt<;0An<)WWk
+rD3Jkr_WSks%r_k!)WYlr_NPjs%iYkr_`GeqGI8hs&&;_s%iYiqbR2ds%iMe!`)Whr)!Gjr_NPh
+s%iYis%`VirD3Aep.k`d;,I!_qb[8fr)!Dhr)!2d!`2ZgrD<Mkr(mAhq+q8m:JO\]:f.!cr_WPj
+r_iYks&/ko!)WYl!)i_l!)WSh"].uk:f1*f;Ya8k<<#ks<;'>i<<#kt<)``prDNqu:f0ta;,C$e
+9*7dZ6WF"aq,[GqrE/hts$-KJr]pch<'s5O:esmd;$9fp;H$3`=oD=t<W#hp<<Q9";cHcr<r>qu
+<)`co!)rhqr`/bnr`/tt!*/nqrDW`9s)S-\r,hs]s*"?bs*4Qhrd+Tk!.=cos*artrd]'@JqJ]/
+KS>/8LPUeDMMmFPNK0']OcklkQ'IZ%R$jD4S=Z=ETqS6WV5C/hWiE/&Y->.9Za@0M\@K5a]tV7t
+_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k3(sml0@X%mI'H3nF?&>o(2MQp&F^cp\jme
+q>^<hqu6NlrUg)?s+14's*t~>
+JcC<$JcEdjn,E4_rVZKgrVHNhqtU0brq?6^s7H<^r:9mXrpUorl/q3nl0%'dio/hQhqd)>e'6"O
+^:LdZ>$+j.ro=%<38rfRhr!;Hh;$c=g=b-1f@JL%eC2jndEp4bc-4ASaiMQD`l5m6_SO%&^V.:m
+]",A][^MWmR@*o=qj@DM+FSWMR?NYcIXcftBP+3?VP'HGR#[,[L4OYqGCY6tK7s5Y%Z-"R]Si#e
+No521K8>DHrf[8CqN1W9s,d8A!0I&<r/go?!0[8B!0I/?s,I)=rJ^T4",i%nM#<&+LA$>rK`-W"
+LAuu,K`6VuK`6]*KE6^WrIP!!!.XrtqgecuJ,=]mIg(:LI=-Hkpj<'grI"Wls*FNerd+Ti!-nEc
+"*f*;HMr-fH2r6cGl;peGl2jZH2r<kI/A6kH@,F5s*=HerH\Eird+Qks*aclqgJKnpj`0krdXot
+o7?pnrdt<+Knb<\LAlu.L]iTnMi<VoN<#";O8Y1@P5^UAOp$u5Pa.O2Q3ihBQ^=),R@9P3rL+4K
+IXQQhG'7bADf'3'EHD+Zq,[GqrE/es(KspE>$+j-=ie[%O0H($\$rfR['Hp?U].(gV>J=5aT0K]
+b5fc_c2c2ad/;2jcHQ40s2t8_rQP&[!m8X,rGhjXs)\*[s)n?brHJ9d!."Nh!df<Brd=frJ,Xt8
+JV&N,KS5&6L51SAM2I4MN/is[OHG]iPa.Q$R$jD4S=Q7DTV8*UUo(&gWiE/&Y->.9Za@0L\@K2`
+]tV7t_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hVd>Nj5]4^k3(sml0I^&mI'H3nF?MK!V>s_p&F^c
+p\jmeq>^<hqu6NlrUg)?s+14's*t~>
+JcC<$JcEdjn,E4_rVZKgrVHNhqtU0brq?6^s7H<^r:9mXrpU6_XJr5"XJr%nVZ*D&Vl6MiU7[sC
+QB[S3;c-Ciro=%<1u[BNhr!;Hh;$c=g=b-1f@JL%eC2jndEp4bc-4ASaiMQD`l5m6_SO%&^V.:m
+]",A][^Ps^!.t-"s*uk0>ubl^Bk(FV?t*5=IX?BbF`MJ<Bk:gb?!CNB@qB1_B4tplB9%seF,>(D
+Ci468GC0=:o6UXeH[C'bHi/3gHiA?iH2;dbH2;dcH2;dcGQ)daFTQZ-FoHI[FT-FXFS'\UFT$:N
+ErU+_E,TZ6DfG\os)@mS!H;uUDZ"GNE;jbWDJsIiD?+PLD?4TlqJ?@OCMRa'rG;LNrGMOMrbVFJ
+r,2OQmr%u?q/61KrGMXRs).XN")r0rDYe;OE;OSQE;jeHE;sqWE;jkVEWC+XDuanUErU4YFT-F\
+FT6L`GQ2peH2`*kH[L5>I/n`qIK+cnIJSBpIsultrIOlus+:f'E,]`6Chm]qAn>O`AnM$Bq,[Gq
+rE/es!Er=u;?'JmPmpr;LQ.:PMi3IMLk^Y3reg]5rK[DIs-3SMrKmSOpmCoG!1NnVr0mYRqj@8I
+rL!8ErGhjXs)\*[s)n?brHJ9d!."Nh!df<Brd=frJ,Xt8JV&N,KS5&6L51SAM2I4MN/is[OHG]i
+Pa.Q$R$jD4S=Q7DTV8*UUo(&gWiE/&Y->.9Za@0L\@K2`]tV7t_Sa@3a2lBGbg"GZdF-Lne^rF+
+g=tE=hVd>Nj5]4^k3(sml0I^&mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrUg)?s+14's*t~>
+JcC<$JcEdjn,E4_rVZKgrVHNhqtU0brq?6^s7H<^r:9mXrpU-\>?Y69?X3M3!a8i7ra#V1>5hY.
+=@>SI77R::s5Gloi8EMMhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ#KaN)<>`5BI.^q[Xt]Y(hd
+\[])Vr_r\lr_r_o(apgd2Dd-@.kE5(3&Wuc4Ztkf2`EWN1G\q^(,I^'1Gh!G1c7-b:c:I$7p8_d
+;,U@lr`&kqs&/korDNSkoht]dqGI;lr_i_or_i_m"B&2u;c<0`rDNVl!)i_nrDEu":f1+g;cH^r
+<E/]m!E<"q;?'Go:Japf;#X>l;#a;k;#X>k:]F8k:]F8j;><ua;?'Jm;#jD_;#a>k:A[id:&n)e
+:B+,i;#F/j;#X8j:B+)i:B"#h:Amue:A7Nc:f1*a:]!uf:]!ug:]4,b;>sAj;#aD_;#a8j:]4,e
+;>sDk;>sJj;?'Mp;,I6h!)ibm!E)bi:]F8k;>jDf;ZKer;ta5h<;]Yr<)Zcn;[uZ$;,C(d;G0\V
+91hiN6iL*]<rH+u=SGr!>!N!Or]pch<(';Q:espe;$9co;H$3b=o21r<W,np<<Q9";cHcq<rH"u
+<;f\p;uK\p<Vf\n<W5tt;uK\p;uL_9ErU4YFT6L`G5ZXbGQ<$fH3/G@I/\NpIXh?ID1R:kK7no3
+L5(J>M2@+JN/WdXO-#KePE_>uQ^F20S"-%@T:hmPUnjlcW2cl!Xfen4ZEppH[^`lZ]Y2%o_8=+/
+`Q-'AbKS5VcdC1ieCE1&g"P39h;7)JiT&tZjlYail07O#m-X60n*olHncA@Srq6<b!;HHes7u]k
+r;6KkrVcBfJcC<$g&HR~>
+JcC<$JcEdjnG`=`rVZKgrVHNhqtU0brq?9_rq-6^r:9jWs7$!Us6<MJl/gsbio/hRhqd#:d*'DD
+]XYDWZW^L5=QAE"iS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaN2EA`Pf[2_8*h#]tD"i
+\[f5Y[^H+&!1<\NrL!SNs*ZP4RZWGZI"$TsAn7m=W1TNJQ&UZSJUMfgG(G9sKnG/7Lkgi!Ek%@(
+W1&'_L51feP5^U?OSk1=OSFn6OSP"=OSt7?NW>(;N;AM9N/EIKr.k3)p4`9prIt$$s+UH*re'ru
+re:B*!/(3#s*t*!rIFlu"G22UIt.?ErI=fq!e#HEpNusfrHnTlrd+Eds*FZiqf`*dH$]F7r-AEi
+G^912r-A9dr-@s]s*Ocnqg/BjH[GR7s*=EdrcnNjHiA?iHiSTlI/\O!I!pElIXcitqLABms*sut
+oR[$ordt3(r.Y0*s+gT0",`"pN;\b7O84q8Op.&6Q'@Q!rg*SL#*tUAQ^F20rgE_R&Y"`-I!U-a
+GB.M;Dej!'G#_Q<<rH+u=SQ%r>5hS8=ie[,QFF<2\$rfR['Hp?USIdaqSrZYaiaP)!6k;b!71Ac
+r6GDhbl5cfb0.rMqof#`pWET[ao$/XErU4YFT6L`G5c^cGlN'gH3/G@I/\NpIXh?ICk71jK7nr4
+L5(J>M2I4MN/`jYO-,TgPEhE!R$a;2S"6.CTV8*UUo(&gWN*#$Y-5(8Za@0L\@K2`]tV7t_Sa@3
+a2lBGbg"G[dF-Lne^rF+g=tE=hVd>Nj5]4_k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<h
+qu6NlrUg)?s+14's*t~>
+JcC<$JcEdjnG`=`rVZKgrVHNhqtU0brq?9_rq-6^r:9jWs7$!U"KSW,XJl&o8uJYfVkg&YR@';(
+OcYW%;c-HQio/kSi8<DJh;-l@g=k64f@SU(eC;sqdF$=ecHXSVbK@oIa2Z*:_ns7*^V@Ip]Xt_b
+\@/iRoR[!ls'@?XEc#H!?=72N<E=TsH?XIQDeiur@piPG>@V2RAS#OfBP1t<?%d<CK7[oWF*;j,
+I/&'gI/83dHMr3iHMr-cGl;paGQ<$bGQ;seG5ZR`F9$I_F8U.ZFng(NFT?O^F7F;NE<U<"DfBW6
+rbqgUr,2UTDuFSODuFYRDZO`oq/-1Lq/-4MDYn;ND#\8OCi0,es)%aQqec=Ks(qaRrGDLNrbq7C
+qeu7Irb_UO!cMsoq/?:PrbhRN!-%gRrc%jTrGVaVpMg+Os)@pVrc7sV!-.mVs)\*[s)n6]rcS6b
+s*4QhrH\KkI//3jIf"QgIKG"LJGt,sK)UB(I;s6*D[L;pARoC_@q94P<V]\o=8c7r=oDP&;?'Jm
+PlY99rf%5CMi3IMLk^Y3I/T!$Q2[!KQ'V$/qO%>PrgWhSs-`bO!1*PLrg<AFr,M^Vs)\*[s)n?b
+rceBes*=Ti!df<Brd=frJ,Xt7JV&N,KS>,7L51SAMMmFPNK0'\OcklkQ'IZ&R$jG5SXuIHTq\?Y
+VPgAlWiN8)YHY==['mEQ\[oGe^;%M$_o9U8aN;WLc-F\`daQ^rf@S^0gYCWAi8ESSj5f@bkNM0q
+lg4!*mdKW6nc&([oCW%T!quB_rV6Egs8)Zjrqu`no_sFAJcFF'J,~>
+JcC<$JcEdjnG`=`rVZKgrVHNhqtU0brq?9_rq-6^r:9jWs7$!U"C,5??X*J3%U*+C?XR8J>Zt<6
+=BAO(r^Ah:j5T%Vi8EMLhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ&LaN)<>`5BI.^q[Xt]Y(ke
+\[])V[Jj,&;ZB\m<#d;90/bXA0.SS*0/b^Q5<V+j3]K&U1b^U8/hSpY1D)H$1GpsG:,=gl1e^\B
+:Jk(hr)EYos&/ems&/emohkfh<;ohm;ZB\q;Z0Po;Z9Mr;H$On;Z'Al;YO&f;Z9Mn;Z'Jl;?p&q
+;,U:j;cNBh!E<"q;$9]k:Japf;#X>l;#a;k;#X>k:]F8k:]F8j;><ua;?'Go;,C'[;#X8j:A[id
+:&n)e:B+,i;#F2i:]F2h:B4/c:]4&_:BF?i;#!i_;#X8g;#a>h;#*ri:esmc:]OA_:]jKg:J^pc
+qbdAirDEPlr)*Gk!Du\h;#jGi:BjWk:Jakb;>jDc;tX/i<;BGm<;KMo<)``l$WBnr9hS2Q91hTP
+<V]\o=8c7r=oDP'5lO%S<E)F[:f'qar_Whs;,L4`9)Vog<;fhq<;]`!<)Z^p<W#ns<<,ts;ZB\o
+<;oku<)`]or`/nrrDW_qs&8i8rc8$[r,hs]s*"Bcs*4Qhrd"WmI!kpA!IfOtJ8BdgK7ei2Knb>;
+Ll%"IN/WaVO,oEdP*;/rQC+&-S"#t?T:hmPUnjlcW2ZetXfek3ZEppH[^`lZ]Y2%o_8=+/`Q-'A
+bKS5Vd*^:jeCE1&g"P39h;7)JiT&tZk2tjjl0@U$m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6Kk
+rVcBfJcC<$g&HR~>
+JcC<$JcEgkn,E7`r;?BfrqcThqtU3crq?9_rq-6^r:9jWs7$!U=RPPClfdEiio9"WiSNDDe'5tM
+^:C\ZZa$^:>$+j.iS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaN2EA`Pf[2_SEq$]tD"i
+\[f5Z[^EK1R@*l<s-WbO21985S</MXH%(?sBOn->Un3s@P)bEUJphlhG_1O#KnG,6LPLc"Ocm\C
+h0OL%LP_+TOckn*Ont1;O8b79O8=t7OT:LAO8k4?NW"h4N<G2uMM[/eL])u$L%p?#L%g?%L&Qc)
+KD1'!L&Q`*KDgB#J,k)tJGas"J:E(GIf4a"IXQWlI!ta:!.4Zls*F`lq0E!drd"Bb!dK$;rH\Bg
+!IK.fGl;pdGl;p[H2r<kI/SEkH2r<eHN/9eHMr-hHiJBlHiAEmIJ\EkIK+]pIK+fsJGOcmJ,k)s
+JFnEmK)^H*KS>,5re:B,s+gW1s,$l9N/[aq!07&>!0I#=rfRAGP*;+.Pl6jOPa.Q#Q^=*;RJrZS
+Rh(j:I!g6aG]dnADe`s"QW<i^rE&r"pK@Gu!F&b,<tSTVaF'Pf[^NZS[^EKJYcsmtrhTV7qSrZY
+aiaP)!6k>cs3LDcr6GAfrQG,]nB:fMr,M^Vs)\-\s)n?brHJ9d!."Qis*F`nrd=frJ,Xt;JV&N,
+KS>/8LPUeDMMmFPNK9-^OckomQ'Rc(R@9V8St;UKU8+N\Vl-MoX0&M-Yd(OA[C3TU]"G_j^VRe)
+`Pom=aihoQcHstee'uq"f\,!5h;-rGi8WeWjQ>UfkiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0i
+qYU0hr;HTdrdk*#s4RF&~>
+JcC<$JcEgkn,E7`r;?BfrqcThqtU3crq?9_rq-6^r:9jWs7$!U"n&LrY,eK"VG*qfWi;tpUS"$C
+Q^!VoO,f3Z;Gg:hiS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaN2EA`Pf[2_SEq$]tD"i
+\[f5Z[^EL<JHC@QJc1*>>uu8kCh7$[?XdJG<I]@@GB@nECM.3g?X$c?@q>RM!,2@E$ttW;EfP:E
+Ci=<8GC0:9p3Zacr-S9dr-SHir-A-`rH[pXrc\6_rcJ-\r,hp\piQ.N!-J0\noF_L")r0sE;XYS
+E;a\VE,T[nDZ"GOE;jeUD?+VOD?+PLDYS)KD#\8OCi0,es)%aQr,)FLqJH.Js)7@DqJZ1Irb_UO
+s)7pTq/6@SDf0IhDuXeRDuO_TDuO_UEVOMOE<'tUEW:%ZEW0nWEVa_UF8U+[Fo-:\FoHUbGR&M?
+H?jg`H[PX;"+GZHI/SKgIK=qKrIOitrIYW3Ec>u9DJa-$An>L`@XhDR<rH+u=SGts=o_e+;?'Jm
+PlYEBrf%5CMi3IMLk^Y3I/]$(Pl-gGPQ@&9o9fBB!1NnVr0dVRqO%;KrKmMNpQtkur,M^Vs)\-\
+s)n?brHJ9d!."Qis*F`nrd=frJ,Xt;JV&N,KS>/8LPUeDMMmFPNK9-^OckomQ'Rc(R@9V8St;UK
+U8+N\Vl-MoX0&M-Yd(OA[C3TU]"G_j^VRe)`Pom=aihoQcHstee'uq"f\,!5h;-rGi8WeWjQ>Uf
+kiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqYU0hr;HTdrdk*#s4RF&~>
+JcC<$JcEgkn,E7`r;?BfrqcThqtU3crq?9_rq-6^r:9jWs7$!U"R]W*@:&n89Nte/?t!JO?<^T:
+=]\X(<E)sd77B])i8EMLhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xt]Y(ke
+\[],W[C#p3r_i_oqc"C\0fV'I0.\P'/M8n<5sILo4$#8Y1c-p?r\"4+">hnk1Go(g#Z!?A5XnpQ
+;GmElrD`\ns&/emr)*Mlohkcgr_rkrqGR8j!)ibo!)ien!)iep!)i_ls&/Sgr_`ep;H!EkrDEkt
+:f1+g;c?Zf<<?,u;Z0Gq:esk`;>sDl;>sDl:B45j;>sAk;#a>k;#X>e;#4&h:]aKj:\.E_:]=,e
+:]4#g:]!lg:Jamc;#jGl:]F2i:]F2i:B4/g:]4&^:]F;e:\moe:]!ug:]4,b;>sAj;#aD_;#X8g
+;#=)i;#F2j;Z'Dj;?0Ph;#jGf:]=2j;>jDd;ZKei<W?%g;u]f#<Du[i;,@0f#>@c`8kDWL<V]\o
+=8c7q=oDM*><kIQ5mLCh7nZZT:Jh$f"]A2p;G'R\=TDCr<;fhq<;]`!<)Z^p<W,ts<<,ts;ZB\o
+<;ol!<)Z`o<;ons<;]\p<;pk7EW1"YF8^4\FoQX`GQ2mfH2`-iHN8HmI0"eHrd\s=JqJ]/Knb>;
+Ll$tGMi<USO,oBbP*;,qQC!u,R[]h=StMdOUSO`aVl?\sXf\e2Z*UgF[^`lZ]Y2%o_8=+/`Q-'A
+bKS5Vd*^:jeCE1'g"P3:h;7)JioB([k2tjjl0@U$m-X60n*ol<o(2JFrq-?dp\4[^s7u]kqtpBj
+rVcBfJcC<$g&HR~>
+JcC<$JcEgknG`@ar;?BfrqcThr:p9crq?9_rq-6^r:9mXs7#sTs6_&tmd'&sj5]4\io&_Lf$VUX
+^Ugk\Za$^;XfSR+=BOM=hYu=cgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pf[2_SEq$^:_+j
+]",>[[^EKKR$dQ5s(a6VQ]?iMIsur`Bp,KqURms@Oc,'PJUD`fItE6+L5:S=M2SudZ]q&ZGC"dn
+M2hIrs-!ADpQ5?7rfHo9q2kK9!0I/?s,I)=r/CN4"H87sMMV.breC<(!/1<)pk8X#pP/^%re19'
+pOrR#re(9(rIOru!.Xuuqgeg!It.?ErI=ir"+>QFIJ8*hHiAElHN8BfH2i3jGlW*eG6<)8H@#R9
+r-A?gq0;g_rcn?dom6Xbrd=]lrd+Tkq0N'dqKi*c!IB+lHMr3kIJ\EkIK"TqI=?\FJGOcgJG"Kn
+K)^H-KS>,5KS>-ZLB!#9Ll%"HMi<USNK0%uNuX7DOHGWeOHGZgP*(liPE_8pPa.JuQ'@Q!QBmm:
+Qi`\CRJiTQRgtmBI=-BgGBS"CDf9<'E;<Q5=8c7r=o;J'>6%h*<t\ZWaF^4s[^NZS[^EKJYcsmt
+V>eL2`ra?(b5BE_bko]cch>``cN)5gbP]NQbPuM[E;X_UErL.YFT6L`G5c^cGQ<$gHN/<lI/\Np
+IXh?IDh3LmK7nr5L51SAM2I4MNK0'\OckllQ'I]'R$sM7SXuIITqeE[Vl-MoX0&M-Yd(OA[C3TU
+]"G_j^VRe)`Pom=aihoQcHstee'ut#f\,!5h;-uHi8WeWjlY^gl07L!m-O--n*fc9o()DEo`"Lb
+p@n=\q#C0iqY^6hr;QZdrdk*#s4RF&~>
+JcC<$JcEgknG`@ar;?BfrqcThr:p9crq?9_rq-6^r:9mXs7#sTs6^0[Ycb"(VPgDmri-^4V4sNL
+R$EhrO,f3ZN/NTm;,Z?0hYu=agtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pf[2_SEq$^:_+j
+]",>[[^EKKqLSKns'IC#E,&oj@:*GF=)i_<H?aOOD/*Zo@p`MH@Uit^B4tskBkiZ5Jol0gC2Ip1
+G'Wt4p3Zacr-S9dr-SHir-A-`rH\!Z"F569G'<h,s)e0[rcJ*]pN6(N!-J0\noF_L")r0sE;XYS
+E;a\VE,T[nDZ"GOE;jbWDJsIiD?+PLD?4TlqJ?4KrbDLNrG;IMrbhXNrbVFJrGMUQmr%u?q/61K
+rGD[TDJo8gs)A!Uq/67PqeuIQrbqdTrc.^PpMg4SEW'kPErU4ZF9$I[F9?Z/GBa%2s*F]j$@7&G
+I!pBjI!pBirdFforI+Hi!IoXuJc(,rK+3$DDfBT2CM@BnB4>C_q,[GqrE/htr*',)r_`\ls-3V!
+J,YE:N/NUOMMR"AI!gj9PEc!1rfdGKQh-U@R/i]TS,A]TRJN<NQMm0LR/!$JDuO_REW:(YF8^4\
+FoQXaGQ2mfH2`-iHN8HmI0"eHrd\p<JqJ]/Knb>;Ll$tGMi<XUO,oEdP*D5sQ^F//S"-%@T:qsR
+UnsueWN*#$Xfnt6Za@-K\@K2`]tV7t_Sa@3a2lBGbg"G[dF-Lnf%8R-g=tH>hr*GPj5]7`k3)!n
+lKdg'mI'H3nF?)?oCV\So`Fj]p\ssfq>^<hqu-HlrU^#>s+14's*t~>
+JcC<$JcEgknG`@ar;?BfrqcThr:p9crq?9_rq-6^r:9mXs7#sTs6^!V@UWO@=V4kD?=75O@:3AF
+>$+j,<E3!tr`'+j7Rl=nhYu=cgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pf[2_SEq$^:_+j
+]",>[[^EKK;cEZnrDWVn)FHqQ2)-d9.kE842EO2h4Zkbd2`<KK0eY.3r\FL1!&aa4"u]433'K)k
+r_NYo<)WTmr_r_m"&Vlk;>a>l;tj2i;uTbm;YX/j;Z9Mn;Z9Sp;Z'Dk;YX,d;Z'Jl;Z9Pm;?9]q
+oMkrl;c<Qk#uFDn:f1%b:f1*h;#a;k;#X>k:]F8k:]F8j;><ua;$9]m;,:!Z;#a>k:A[id:&n)d
+:'+3f;#F/j;#X8j:B+)i:AI]a:A7Nc:f1'a:\moe:]+&h:]+&b;>sAi:]OA_;#X8f;"[Zc;Z'Dj
+;YX)h;#3rj:/=Y^;#X>j;Z'Gs;H$Il;cNBh!*&Jes&Aqs!E)_l:^9ci9hS2P9254_rE&r"pf[Mu
+s'#Lg5lO(L<<Yld:f'qar_Wu";,L4`8m,%i;u'Dl<W#ho<<H3!;cNZqr`&tu;uT\p;uK\q<W?%u
+;uK\p<W5tq;Z]p:DuO_REW:(YF8^4\FoQXaGQ2mfH2`-iHN8HmI0"eHrd\p<JqJ]/Knb>;Ll$tG
+Mi<XUO,oEdP*D5sQ^F//S"-%@T:qsRUnsueWN*#$Xfnt6Za@-K\@K2`]tV7t_Sa@3a2lBGbg"G[
+dF-Lnf%8R-g=tH>hr*GPj5]7`k3)!nlKdg'mI'H3nF?)?oCV\So`Fj]p\ssfq>^<hqu-HlrU^#>
+s+14's*t~>
+JcC<$JcEjln,E7`r;?EgrVHNhqtU0bs7ZB`rq-6^r:9mXs7#sTs6fmR(?suAjQ>OaiSiYHe'#bH
+]XG2QZ*1@6ri61$>$+j.rnT?bgY1B7f[na+e^W*tda?Ihcd'h[bKJ&MaN)<>`P]R0_8!b!]tCtg
+\[],W[C!9GR$dW7rbMOK/89fdIXZi\Br\21Tq.R;PDt<OIsQBaJV&W0KnkA;Ll8m@P/N=9H[UO%
+M3%Rsrf[;DpQ5<6s,d#:plPN<"H\b.OHBI&s,R,=rJ^W5"cS@tMM[/eL])u%L&$E#L%g?%L&Qc)
+KD1'!L&Q`.K7SQ(JbjorJHURUJ:N.GIf4crIKP"GI=:^7s*OclqK`'ds*4Thr-&3eH$]I8rH\Nl
+H?o=2rH\?dr-@s]!.4]mrd4Ti!.4Kes*=HercnZnH[C'bHiAEmIJ\EkIK+ZsI=?ZqrIFfqoRQXd
+s+:6&!JH1+K`?c+LAlu.M$8cpMi<XTrf7#>q2kW=!0[>D!0[;Es-3PKs-3PKs-<YOrL!VQrL3bU
+rL+4[IsuZiH$F@HDf9?&DKYhWrE&r"pf[MurEK8&#$K$gM6"+prO*'@['Hp?USGfI`l@nrs2Y5_
+b5BE_c25fdch>``cN)5gbP]NRb5cGZDuXeREW:(ZF8^4\FoQXaGQ2pfH2`*jH[Pg@!IfOtJ9-9n
+K7ei2L5(J>M2I4MN/`mZOHG]iPa.Q%R$jG5SXuIHTq\?ZVPgAmX/rG,Yd(O@[C3TU]"G\i^VRe)
+`Pom=b0/#ScHsteeC<($f\,!5h;-uHiSrnYjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]k
+r;6KkrVcBfJcC<$f`-I~>
+JcC<$JcEjln,E7`r;?EgrVHNhqtU0bs7ZB`rq-6^r:9mXs7#sTs6fpS'X4^=VPpMpX/`5$Vk]lR
+R?j%uNfO*urego:;Gg:hrnT9`gY1B7f[na+e^W*tda?Ihcd'h[bKJ&MaN)<>`P]R0_8!b!]tCtg
+\[],W[C!9Gr.4]p!a]5@r`oM6ra-FM<`ss%H['^UEc,W'ARf"O>@V/UAS1pS%;9I9H#epeX_hur
+FEi--I.r!dI/J?fHMi-gHN&0jG^'(1rH\!Z"F569GBWq-s)e0[rcJ*]pN6(N"E\^*F*$nmrc&9a
+DJsK4Df0K3E,bbo!H;uTDZ"GOE;jbWDJsIiD?+PMDZ=PRDYe2QChmg&D>e;ND>nGMD>nAJD>nGP
+DsqT?Du";MD>eAPDuX_NDZarsDJo;hs)@jRrc%jTrc%gUr,;[VE:n5LDuanSErL.ZFT6L[FT6Oa
+GQ2pfHN&0jH@,I8!e#HErd=]npjW6m!.b'"r.=`s%toIRE,]`5D/*ZoB4PL_B)>X-=8c7r=o;J%
+>6%P";#cd]D2%qJs,.5AM26n@I!h-APa)*2rfdGKQh-U@R/i]TS,A]TRJW?QQ^3s9Qi<BJQN1q&
+DuXeREW:(ZF8^4\FoQXaGQ2pfH2`*jH[Pg@!IfOtJ9-9nK7ei2L5(J>M2I4MN/`mZOHG]iPa.Q%
+R$jG5SXuIHTq\?ZVPgAmX/rG,Yd(O@[C3TU]"G\i^VRe)`Pom=b0/#ScHsteeC<($f\,!5h;-uH
+iSrnYjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$f`-I~>
+JcC<$JcEjln,E7`r;?EgrVHNhqtU0bs7ZB`rq-6^r:9mXs7#sTs6fpS&n50N=]o!8?XR>S@UWPI
+>?P$.r)EVpr^?fVrnTBcgY1B7f[na+e^W*tda?Ihcd'h[bKJ&MaN)<>`P]R0_8!b!]tCtg\[],W
+[C!9G;c?Tm;uBVo74q%s6n^&@/1rk?5<qCq4$#A\2`!3B0J4q51,^pF2)@*H2GQ:q5Y"sT;H$Fk
+;Ya;l;uBMq;,C(dqbmGmpeq,jr_rkrqbm2fs&/ko!)iep!)i_lrDNDfqbmAkrDNVlr_`bq<:j/l
+<)Z]n;$g&p:Janb:Jancr_WVj!)WYlr_NPjs%iYks&&MeqG@Al;,L+bo2,H_s%`Ger_<GhqbI/e
+s%rVj"Ahli:/:da!)EAdr(cu^!`2`jq+pi`r_NDfs%iSiq,%,gr_NMis&&;_r_NGgmSWs]qb[Gl
+;,L0d:]F2i:]F8k;>a>j;uT\o;tO&i<:Wue<<#r2<)lq!;bp4f:fC7f9h\5Q8k;>H<rH+u=SQ%s
+>5_\*5lX.M<<5ZdrD<Jj#uXVt;G'P[;H$Ni<;onq<;]bq;ZKhq<rQ)$<)Z[mr_rbps&B%ur_rbp
+r`/qsrDN_rDZ4SSE;OYTErU4ZFT6L`G5c^cGlN'gH3&A?rd=frJ,Xt>JV&N,KS>/8LPUeEMi<US
+O,oBbP*;,qQC+&-S"#t?T:hmPUnsrdW2co"Xfnt6Za7'J\@K2`]Y;.s_Sa@3a2lEHbg+M\dF-Oo
+f%8R-g=tH>hr*JQj5f=ak32'olKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcFC&
+J,~>
+JcC<$JcEjlnG`=`rVZKgrqcWiqtU0bs7ZB`rq-6^r:9mXs7$!UrpKgRs6LKajlP[fjl>@Ygss]k
+_S*FcZE^U:Y5YL%WB$oS=]ee^gtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Poa3_SO"%^:h1k
+]",>[[^EKKZE]dapm:tq05>38BP(k*JnJbsW2?8WR[B+pKSY/)H?OpmKS5&7KnkMB]W@<hW-E`@
+KntbPP5LIAP5g[=OSk1>OS=h3OT1I@OT(=@NrG%;N;JS7N;e_9M2;(brJ('#q1S^#pP/^%re16&
+pk8[$re(E+JUi<&qgeWr"G22TJ:IEErI=ir"+>QFIJA0iHi8?lHiJEgH2i3iH2MmdGlN*hH2`-i
+HN8BfGl2jcGl;p[H2r<kI/eQkH2r<fHN/9eHMr*iH@,X;rHnTnqgABkrd4cqIXh<Hqg\6gp433q
+rIb-(re1<*s+^Q/reUl;Mi3ORNK0%uNrb?'qiCi@P5^UBOoU^FPQ7!JPlI!KQMm0MR/`TRRfAlT
+RfAidKmnDrH?XROD/X6'Cj#YVrE&r"pf[Q!r*02+r`B-@"-Kmu\,E`B[C!6DYbRu4`Q#ppa8a3]
+aiaP)!6tDdrm1>cr6GAfrQG&[p<3DPrbqdTr,MaWs)\-\s)n?brc\EgH$TC8!IK4nI;s^cJ:N3&
+K7ei2L5(J>M2@+JN/`jYOHG]iPa.Q$R$jG5SXuIHTq\?YVPgAmX/rG,Yd(OA[C3TU]"G_j^VRe)
+`Q#s>b0/#ScHsteeC<($f\5'7h;7&IiSrnYjlYail07L!m-X60n*ol;o()DErq6<b!;HHes7u]k
+r;6KkrVcBfJcC<$f`-I~>
+JcC<$JcEjlnG`=`rVZKgrqcWiqtU0bs7ZB`rq-6^r:9mXs7$!UrpKgRs6KoiW2ZesXT#7,WhlAY
+R?s,!NfO*urepc52Mk@0;Vg-_g=k64f@SU(eC;sqdF$=ecHaYWbK@rJa2Z*;_ns:,^V@Lr]Xtbc
+\@8oS['R'Crdjlqs'Gb4rEU:G>@Cu@<e#LDG]\%JChdKl@UEDFAn5IaB)ZHCBF9`JFE`=OD/jW@
+H1u^\Hi8?iHNJM=H2W'eHi/3iGlW*gGQ)jcH1Q:\H2i'gG5ZR`FSp4ZFT$@VFS0bZFE;JDF7OAN
+E=$Q$DfBW5DJsH4rGV^T!,qdQr,;OQrbhjUDf>Ji!,_OL!Gu`OD?"GPCB86grG;LNrbhUMs(qOK
+rGMUQmr%u?q/61KrGD[TDJo8gs)A!Uq/67PqeuIQrbqdTrGh^Ro5XbK!-.pW!c`7$rcA'\s)n3\
+rc\<cs*4Qis*=Wj#((`EI!^6frd4]ord=ZmpjN6nJGk&tK)(&tKE-2pE!^E!CM.6kAR]1^r)Wbt
+rE/htrEB,'s'5P"s-3V+M>`G6M[G>uLk^Y3I$9bYPl-gGPQ@&9nsK<B!1NnVr0dVRqj7GOQBqK9
+rg<SLrGMUQrc%dTs)S-\rH/'^s*"Bc!dK!9rd"TlI/\P6IXcluJV&N,KS>/8LPUeDMMmFQNfT9a
+P*;,qQC!u,S"#t?T:hmPUnjlcW2co"Xfnt6Za@-K\@K2`]tV7t_Sa@4a2lEHbg+M\dF-Oof%8R.
+g>(N@hr*JQj5f=akNM0plKdg(mdKW6naZ2@oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcFC&J,~>
+JcC<$JcEjlnG`=`rVZKgrqcWiqtU0bs7ZB`rq-6^r:9mXs7$!UrpKgRs6LJ*=]o!8?XR>SA7AkM
+>?Y-/<)Z^p<;]`T<)Z4T7bukSg=k64f@SU(eC;sqdF$=ecHaYWbK@rJa2Z*;_ns:,^V@Lr]Xtbc
+\@8oS['R'Cr)<Jl,"+jf6UX:06UE@X2`<lb4?Ybe2`EWN1GLO9/i5=@1Gh!Hr\Y$X3'8uj:Janc
+;c<?hs&8hn"&Vlk;>X8k;Z]io;>O/j;uT_r;u'>f;uTYq;,[Bl!)i_lrDNDfqbmAkr)3Plr_`er
+<)iNj!`W)rrD<kt:JXea:esnb;>sDl:B45j;>s>k;#X5j;#X>d;#4#k:f1(co2,E^s%`Ger_<Gh
+qb@,er_WMir_NPhs%iYiqG7&bpJ1ie;,I'aq,%&dr)!Dhr)!2dr_NJh!)`8_r_NDfmns$]r_`Vj
+s%rbmqbR5er_NPjs&&_mrDW\nr_ieroi1uknl,Nes&K(us&K&!s%j)#:f:.f9hJ&O8PDPM<rH+u
+=SQ%t>5VV)>R!GZ5ZLfV:]4,h;$g,t;,U"Y;c6Omq,I>nr)ESor_ierr)Wes##nN!;H$OnrD`es
+!*&qrrD`brs&AqqrGMUQrc%dTs)S-\rH/'^s*"Bc!dK!9rd"TlI/\P6IXcluJV&N,KS>/8LPUeD
+MMmFQNfT9aP*;,qQC!u,S"#t?T:hmPUnjlcW2co"Xfnt6Za@-K\@K2`]tV7t_Sa@4a2lEHbg+M\
+dF-Oof%8R.g>(N@hr*JQj5f=akNM0plKdg(mdKW6naZ2@oCW%Ts7QHerV6Egs8)Zjrqu`no_sFA
+JcFC&J,~>
+JcC<$JcEjlnG`@ar;?EgrVHNhr:p9crq?<`rq-6^r:9mXs7$!Us6fpSrTkTgk3(mhjQ,=Wf[7gY
+^:1MVZ*:F7XK/D%WMl\jUnmuls4T0[f[na+e^W*tda?Ihcd'h[bKJ&MaN)<>`P]R0_8!b!]tCtg
+\[],W[C!9GZ*9U_qNh2JrbF*#Bk_6nAn>RcAZDZ)TUD47NJiODIscNcJ:iK.KnbA<Ll%I]]StWm
+I=I$.OT(F@OoCODOnXt8O8k=9O84n;Oo1=>NrY4=NW4t7N<"q:MZSclM#E,-LA-DtK`6]!LAuu,
+K`-Q!K`6])KEQmXJ:W:KJGk$%Jq8H&J,4WmJ,as"I=-Hkpj<'grI"Wls*FNes*FZirHJ9d"F5<>
+H$T@7!df6=q0;g_rcn?dom-Ubrd=]lrH\Hjpj2scqKi-d"aYNBH?sr;HiSTlI/\QnHie_FJ,Fip
+J+eBoIt3(CJc13%KSBAXs+UK-s+gW2s,$i8N;eh:NrP.@OH9:#qiUi?s-*AFs-<VMrKdSQR@4#B
+".PaJRJrZSRgkC,J9u]fF`M;=C2%ILr`8u!rE/htr*'&'r*98's2Y2-rjVj7$FR7IYcsq!`Poj:
+qoA`X!6P,]!6tDdrm1>crQbMibl,`[b5'6YDZ4SRE;X_UErU4ZFT6L`G5c^cGQ<$gH3&A?rdAR2
+It3'#JqJ]/Knb>;Ll%"IN/WdXO-#NfPEhE"R$jD4S=Z=FTq\?YVPgAmWiW>+Yd(O@[C3TU]"G_j
+^VRe)`Q#s>b0/#Scd:(feCE.%f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4X]
+!;ZWjr;6KkrVcBfJcC<$f`-I~>
+JcC<$JcEjlnG`@ar;?EgrVHNhr:p9crq?<`rq-6^r:9mXs7$!Us6fpSrTk,rWN3)$X/i>&VkKZM
+Q]mPmNrG%:MuSYpM26qB;,L6Fg=b-1f@JL%eC2jndEp4bcHOJTb/q`F`l5p7_SX.(^V7Co]=PP_
+\$i]OZa-j?JV!WIs'Gb4rE]G-(L:6K>CV$GG]\"HCM79i@:*;FA7T7`Ac??BBF8ZuM0#V4D/jZA
+HhMj]Hi8?iHN8BjH2i3gHi/3iGlW*fGQ2pdH1Q:\Gli57GPu[`FT$:[FT$@VFS0bZFE;JDF7OAN
+E<0uqrGMdUDf9UnDuXbVDuFSNDuFYSDZXfpDt.]GD/T5fs(q^Ns)%^Ns)%aQr,)FLqJH4LrGV1C
+qJZ1Irb_UOs)7pTq/6@SDf0IhDZFbRDuO_TDuO_REVseLE<1#urGVaVqf2gZEcQ5BrcJ-^qfMj]
+rc\EgH$]I8s*F]l"akZEH[L2;I/\QgIfFrsJc:8sKD^B4Km[lZDfBQ/BP(gd@q're<rH+u=SQ%s
+>5_\'>lRY#PlQ%+NW4nAMM[.DL4"B4rfm>GrfdDKnX03A!1NnVrL3bSqj7GOQBqK9rg<VMr,2LP
+rc%dTs)S-\rH/'^s*"Bcs*+Nhrd"TlI/\P0IXcluJV&N,KS>/8LPUeEMi<UTO,oBcP*;/rQ^F20
+S"-(ATV8*UUo(&gWiE/&YHY:<ZaI6O\[oGe^;%M$_o9X9aND]McHjkbdaZguf@\g2gtgiEi8N\U
+jQ5Oekiq?tm-O--n*fc9rpg*]o`"Lbp@n=[p]1-hqY^6ir;HTdrdk*#s4I@%~>
+JcC<$JcEjlnG`@ar;?EgrVHNhr:p9crq?<`rq-6^r:9mXs7$!Us6fpSrTk5%=^56>?t*_Z@piSI
+>$"a(;c?Xpr)GjY;c?Xp77Kc#g=b-1f@JL%eC2jndEp4bcHOJTb/q`F`l5p7_SX.(^V7Co]=PP_
+\$i]OZa-j?;cH[oqc*Sa*CN7`6UX:.6UO1/5sILo4?>G\2Dd'@0.nk41,Llf2#fE@1bLpU7oW;^
+:fC7jp/D#jqbmAiqbmGm!)ibmr)3Pns&8tspepufr)3Mm!)i\k"&`&q;Ya2e;Z0Pl;ZBVn;?Bcr
+<:j/k;c<Qk#uFDn:f1%b:f1*h;#a;k;#X>k:B45j:B45j;>3oa;?'Jm;#jD`;#X8j:Adoe:B+,e
+:'+3f;#F/j;#X8j:B+)i:AI]a:A7Nc:f1'c:\did:]!ug:]4,c;$'Qi:]4)i;=RK^:]!u^;#jGi
+;>jDl;>a5k;,I*bs%`Sir_WVlrDNVnr_i\noi1uknl,Kd!*0"t!*/qt%9$)#:f:.b:/+AT8kMeV
+<rH+u=SQ%s>5_\'>Qd>X<E2Zh;#X>l;ZBVo9)V]a<;onq<;fes<;oer<;]er<<Q9";GpHj<<#qu
+<;ohp<;okt<;fbnDZ4SRE;X_UErU4ZFT6L`G5c^cGQ<$gH3&A?rdAR2It3'#JqJ]/Knb>;Ll%"I
+N/WdXO-#NfPEhE"R$jD4S=Z=FTq\?YVPgAmWiW>+Yd(O@[C3TU]"G_j^VRe)`Q#s>b0/#Scd:(f
+eCE.%f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4X]!;ZWjr;6KkrVcBfJcC<$
+f`-I~>
+JcC<$JcEjlnc&FarVZKgrqcWiqtU3crq?9_s7H?_r:9mXs7$!Us6fpSrTkNikNM*ljlPR]gX=6_
+^U^bYZEUO8XfJM&WMcShrM0Fgr`Cl,f@SU(eC;sqdF$=ecHa\XbK@rJaMu3<`59C-^q[Us]Xtbc
+\@8oS['R*DYcsL^r0RGL"`.siC2%G^AcQEAAg1\oA"8mOP`1EOJphoiGCbC#KnbD=LQ&j0Nm+/a
+I=Hp,Nr,";OoLUDOnb%9O8k=9O7JD1O8Ot;N;JS7N;e_:MM[/fL])u)K`Hf*L&$E$L%^9$L&Qc(
+KDC3"L&Zf0K7\Z)JV!]Krdk*$"+buQJ,=]nJ,XluI=-J;HiSNlI/eQnHMVpeHN&3gGQ2miH$Xd^
+rHeKj"+#6;H2DjbH2W!cH1cI`HiAEmHi/0iHhi!fH2;jcGl`5<rd+Qks*aclrdFcn!e#QJrIFfq
+omd*nJ:R?Ere(*$s+UH,#)A"kM2I1Krf-o;rK$i;!KiK@OT:RDPQ-jMPE_;sQ2R!QQ^F/.R@9QB
+RK/cSRf/]dQ%X[7I!BaSCiO?-CN!6SrE&r"pf[Q!rEK)&"'<RbTDl=u[L0FLZ`p[0UrC<m`r!gV
+a8j?Zb5ffacMl/ad/D8kcHQ71!m8X,qo\o]s2tAb!,_UNrbqdTrGhgWs)\0]s)n?brc\EgH$TC8
+DgQk[I=?WpJ:N3&K7ei2L51SAM2I7NNK0']OckonQ'Rf)R[]h<StMdOUSOcbW2cl!Xfen5Za7'J
+\@K2`]tV7t_Sa@4a2lEHbg+P]dF6Uqf%8R.g>(N@hr*JQj5f=akNM0qlg4!*mdKW6nc&([oCW%T
+!quB_rqQNhs8)Wirqu`no_sFAJcFC&J,~>
+JcC<$JcEjlnc&FarVZKgrqcWiqtU3crq?9_s7H?_r:9mXs7$!Us6fpSrTjRNX8]1/X/rJ*WM5uQ
+Q^!SmNrG"<N;\Y9M26ucLGMe*;V9UQf%&:"e'cXkd*L"_c-+;QaiMQC`Pod4_SO%&^:h1k]",>[
+[^EKKZa$a=JV!`Ls*k)X?XE_;s'#J/rEBh<>?Z2jEc>`)@q8qP?!ClOrau1D$tj=8EH..kJ8K7H
+G'W_-p3ZacrHnQjrd"Niqg89fs*4ThrHJ9drH\!Zs*=Wh!I&_dFoHL]F8g:[Fn^"NFTcf-EcZ<m
+ErU+\E,TXmDZalqDfGYns)7sVrGMOOrG_^R!H)iID?+VRDYn8SChmg&D/K8gs)%^Pr,)FLs(qaR
+rGDRPrGV.BqJZ1Irb_UO!cMsoq/6@SDf0IhDuXeRDuO_TDuO_SEVseKEVj\TEVskWEW:%ZF8g:\
+FoQO`FoHIdF`qqPGBj"1!.+EeqgAEl!IfOoIKG"LJGt,uK)1,tK`6Z+Jogp1"`A-kAS5TRAH,^/
+=8c7r=oDP&>PVM+:mI;or/L`7#)\7nL5()'rKR5FrfdDKnX03ArL<bSs-`bO!gf4=rKmMNrKdM$
+qelCOrc%gUrc8$[rcJ0_s*"Bc!dK!9rd&L0I!pElIXcluJV&N,KS>/9Ll$tGN/WaVO-#KePEhE!
+R$a>3S=Q7ETq\<XVPgAmWiW>*Yd(O@[C3TU]"G_j^VRe)`Q#s>b0/#Scd:(geCE.%f\5'7h;7&I
+iSrnYjlYail0@U$m-X60n*olHncA@Srq-?dp\4[^s7u]kqtpBjrVcBfJcC<$f`-I~>
+JcC<$JcEjlnc&FarVZKgrqcWiqtU3crq?9_s7H?_r:9mXs7$!Us6fpSrTk6a>$P?>?t*_[ARSkL
+>$+g);c?Xpr)N_ps&B"u!*&qe0%ee-f%&:"e'cXkd*L"_c-+;QaiMQC`Pod4_SO%&^:h1k]",>[
+[^EKKZa$a=qGdJn*C`Ic6UO7/6:4+,6UaC069@.f2`EQL0eb43/M]*\1_2H#1cA)d4[;S6:Jt"f
+;H*6f"B/2r;,R9is&&Yks&8qqr_`Sks&8qss&8_kqc!GkrDN\oqb[Jo;c?RlqGI5i!`MuprDWVl
+s&&bns&/nsoMkoj;Z0H#:esk`;,C%b;,L.dr_EMjr_`Yj!)WYj!)WYlpe^fas%ibo:f$[Zr_EMh
+qbR2ds%iPfs%iYkr)*Ghs%`Sis%`DdrD*&^s&&Sfq,%&dr)!DhrD<8dr_NMis&&;_r_NGgohb]c
+qbd>jr_`\l!)NPiqG7)cs%iYkr_`Vls&8nprDN\qp/M)lo2GE`s&B)#<W,r/;c$=h;,U4a92&)R
+8kW2crE&r"pf[Q!rEK)&"$fjd9DhWc;?'Po;?'8e;u'Dl<W#hp<<-"t;ZKhq<rQ)%<)Z[m;u9Po
+<<-"t;uK\p<<-"t;ZL\3DZ4SRE;aeUErU4[FT6L`G5c[eG^4T6H>e.XI=6QnIt3'#JqJ]/KnbA=
+M2@+KN/`jYOHG]iQ'IZ&R$sM7SXuLJU8+N]Vl6VqXKAY0Z*UdE[^`lZ]Y2%o_8=+/`lH0CbKS8X
+d*^=le^i@)g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<gqu6NlrUg)?
+s+14&s*t~>
+JcC<$JcEmmnc&FarVZKgrqcWir:p9crq?<`rq-6^rUTsXs7$!Us6fpSrTsRM!p]"5roFjRh:9`g
+^Ugk\ZE^X;Y,eV&W2HJgrM26EU8"EX=P)-SeC;sqdF$=ecHa\XbK@rJaMu3<`59C-^q[Us]Xtbc
+\@8oT['R*DYcsMmQi<9TI;,?gBPD,WAcuXQ@q90MA/gD_L4Xf!H@pg%KnY>;KnkP+Su@S(H[gR#
+M3.Rsr/q#BrfQu;n;m.%qiC]8!0$f7!0$o8s,$f4rJ1<*r.P-(re:3%rIss"s+UH*rIap!re:B*
+"bVDXJ:W:KJGt-"JcgRSIt.?ErI=fqrdFQhs*O]l!df6>qK`*ercnKgrce?drd"QirHeKj"+#3:
+H2DjbH2`'dH1cL`HiJKmHi86jHh_peH2;jdGl`5<rd"Qkrd4]oqgABkrd4cqIXh9Gr."Ejs*k$!
+p4<3qqLej&rJ(?.s+pl9Mi<XTrJpi;q2kN:s-!8Cs-3PKs-<eQQC!u+rgEbSrgEbSr1!_T%>]FZ
+I<g!VD/X6*BPhki=8c7s=oDP%>PVP(>lr)QVZ+('[Ka.HZ`p[0V#J=5`r!gVa8jB\b5oi3qp,2e
+p<`fb!RApfb5f]aao'9abKA#Nb5H2SDZ4SSE;X_UErU4ZF96T.G5c]2G^4R\H@(!dI=6QoJ:N3&
+K7ei2L5(J>M2I4MNK0']OckomQ'Rf)R[]h<StD^NUSO`aW2cl!Xfen5Za7'J\@K2`]tV7t_Sa@4
+aN2NIbg+P]dF6Uqf@S^0gYCWAi8ESSj5f@bkNM0qlg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Zj
+rVZWmo_sFAJcFC&J,~>
+JcC<$JcEmmnc&FarVZKgrqcWir:p9crq?<`rq-6^rUTsXs7$!Us6fpSrTsRM&*g6tX0&S-Whc8V
+Q^*\oNrG"<N;e_;MM[.FqhP0*/lUBQe^W*tda?Ihcd'h\bKJ&MaN2B?`PfX1_8*h"]tCtg\[],W
+[^<BIZ*:H`r.+cr"^Y5R>[:S5>l._+>[%,0)JWkp@p`PKAn,CaAnPagB4tIkIrqf0DK0`AnpL.X
+rI"Qjs*FZird+Efs*F]j!-nHds*4HeoQ^C]s*+QgG5cX`F9Q`-F)uGFr,qaUolUCZF)l>CnoFbM
+!cW'qrGMdUDf9UoDuO\UDuFSODuFYPDt@iHDuOYOD?"GPCB86grG;LNrGMRNrbVRN!,hdQrbh[Q
+mr&#@q/61KrGMXR!,hUNs)8$XDJo;h!-%gRrc%jTrc%dTr,D@LqeuOTr,VgWrc8![rH/-_FoHL_
+FoQXbGPZUbH3&A=qg86gs*afo!.Ffps*k$!rIOp!qLea"rIt9)$$L<,DJj6)An>ZTA,p3>=8c7s
+=oDP%>PVP(>lp9sJc(N-M[#&qLk^Y3I/T<.Q2QpIQLU@?R/i]RS,SlVRJW?PQ^7Q9"IPOCQ^@Yf
+qelCOs)@mUs)S-\rH&*`G'<k/H$FU[H?spbI!pElIt3'#JqJ]/Knb>;Ll%"IN/`jYOHG]iPa.Q%
+R$sM7SXuIIU8+N\Vl6VqXKAY0Z*UdE[^`lZ]Y2%o_8=+/`lQ6DbKS8Xd*^=le^rF+g=tE=hVd>N
+j5]4_k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu-HkrUg)?s+14&s*t~>
+JcC<$JcEmmnc&FarVZKgrqcWir:p9crq?<`rq-6^rUTsXs7$!Us6fpSrTsRM''`b/?t*_\An#(O
+>$+g);c?XprD`hsr_req!*0"ts&L^Af@JL%eC2jndEp4bcHXPUb/q`G`l5p8_SX.)^V7Co]=PP_
+\$i`PZa6p@YkqE!;ZeI'3^id2'1G8U6:=1-68g\W0eP%11,:[C2>o?;2Cp[K7p&Sc:]+/a<!#ur
+;Z0Je;ZB\q;Z9Pk;ZB\p;ufkm;Yj>k;Z0Mo;Ys>k;?Bcp;Ya2i;?Bcp;Z0Pl;ZBVn;ZBYq<:j/k
+;c<Qk$W'Vp:f1%b:f1(d;#X5j;#X>k:BXKi:Jame;><ua;$9]m;,C'[;#a>k:A[id:&n)e:&n)h
+;#O5k;#X8j:B+)i:B"#h:Amue:A7Nc:f1'c:\did:]!ug:]4,c;$'Qi:]4)i;=RK^:]!u^;?'Jj
+;>sJm;?'Jm:]=2e:]4&g:]F8k;>a;l;uT\n;u]hk<<-"h;ts>k<W#nt<=Mc%;,U:g:J4AT8kM`C
+rE&r"q-!Z"r*/u%s'5\+>tt5nr_`\ns&&egrDWMkr`/kqrD`hsr_iku<`T-"r`')#;c?Rmqc*Sq
+!`W)sr)<f!<)lmrrGDFLrbqgUr,MaWs)\-\!d/[0rc`X4H$O^^H[C-gI=?ZrJ:W<)K7nr5L51SA
+MMmFQNfT9aP*;,qQC+&.S"-%@T:r!SUnsufWiE/&Y->1;ZaI6O\[oGe^;%M$_o9X:aND]McHjkb
+e'uq"f@em4gtgiFi8N_VjQ>UfkiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6hr;HTdrdk*#
+s4I@%~>
+JcC<$JcEpnnG`@ar;?EgrqcWiqtU3crq?9_s7H?_rUTsXs7$!Us6fpSrp9[Ns6BXKroOjShUg&n
+_7[7aZa-j>YH4b(W2KWkrhM?FU7n<VUnaYdeC;sqdF$=ecHa\XbK@rJaMu3<`5BI.^q[Us]Xtbc
+\[T#U['R*DYct;/Qi<:*KR[a/S<JbAAnGUdAn,:[A7]4\A7]@aBkh=-J:`E+KnkG<Ar*FU_3C@:
+It``?PEYj+r/puAs,m)<q2bQ9qN(Q9!0?o:qi:`;rf$o:qi(T7repf6!/^Z0r.b-'!/1?*qLng$
+p4iU$re16&qLng$s+CQ.Jq8H'Jc(&tJc:6'JUi6"qgSKnrdOippjE*grHnZnH@#F5s*FZi!dJp5
+rceEgq0E3kH?ja[H2DjbH2`'dH1cI`HiAElHi86jHhi!fH2;jcH2i6kH2r<kI/eWlI/\QnHiebH
+J,OoqJ+eElIfP#nJH1<$K)pXXr.P$'s+pZ2",`%rNW"n9O84n8Oo:IAPQ-jJQ'D95".#:?R/NEQ
+Rf/ZQRf8fSRLbF.H@1$]Ec>o6C2%R/=',?&q-!W!rEK&%rETG1Xo>g.[Ka.HZ`p[;V#J@0`ra?(
+b5BE_bkfWach,Qccd'c5bPfQ]b5]ZaaoH8VD>S5MDuO_SEW:(ZF8^1^F`qs-G6W;;H$Xd`I/\P8
+IXcluJV&N,KS>/9Ll$tHN/WdXO-,TgPa.Q$R$jG5SXuIITqeE[Vl6VqXKAY0Z*UdE[^`lZ]Y2(p
+_8=.0`lQ9EbK\>YdF$Fme^rF+g=tH>hVd>Oj5]7`k3)!nlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Eg
+s8)Zjrqu`noDX=@JcFC&J,~>
+JcC<$JcEpnnG`@ar;?EgrqcWiqtU3crq?9_s7H?_rUTsXs7$!Us6fpSrp9[Ns6:-ZXfSY.Y,eFm
+S!]M(O,o>#NW+h:MM_=gr.k3)/;I-QeC2jndEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]=PP`\$i`P
+Za6p@YcdqTrdP;b?WMAlDJ*3Z>?Y50>6J,6>$4u,=oV\*>81@Q@qB4`AnPaWDL$AaH%BjPF*;iu
+I.hpdI/J<kHN&3hHMW!gHN/6jGl;jdGl2jZGlN'gGQ;pdFoHIdF*)JEFEIG'p2p"N"E\^*F*$nm
+s)A*ZDf5Ml"`A6sE,T[nDuahTDZ"GOE;OSMD?+PODZ=YSDYn;ND#\;ND>n>QD/O4hDZ+GPD#J5N
+DZ=SQDZ+MCDYe;IDZ4MOD?=`oDY\2QE,TW3qJZCQqeuIQrbqdTrGhaSp2TtK"`\R'EH6+!EW:%\
+F*)O#FoQR`FoHOdGBeCXrH\Eh!IK.iHi/9jIJnWpIK"]qJ,b&tJc:9#K)gN&KDgK&L&?T7HZF+E
+Df'9%AS,I_A7ntFrE/kur*'&'pg!c'!FCNYNW4n@MM[.DL4t$SPl-gGPQ@&8nX06B!1NbR!h,OF
+qj7DNQMm0MR/WEPD#J5JDZ4SRE;aeVErU4ZF96T.G5c[iG^4R\H@(&=I<0jeJ:N3&K7ei2L51SA
+M2R=ONfT6`P*2&pQC!u,S"#t?T:qsRUnsufWiE/&Y->1;ZaI6O\[oGe^V@V%`5Ta;ai_fOcHjnc
+e'uq"f@em4h;-rGi8WeWjlY^gl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVc?eJcC<$
+f`-I~>
+JcC<$JcEpnnG`@ar;?EgrqcWiqtU3crq?9_s7H?_rUTsXs7$!Us6fpSrp9[Ns6:3\?=./RB4k^]
+>[(<2<)cdq<;fes<;ohm<%q<Q=&i3heC;sqdF$=ecHa\XbK@rJaMu3<`5BI.^q[Us]Xtbc\[T#U
+['R*DYct;/<;of%.k*242DQsR6iKCQ6U^o?"%5LC6iKFO5Qrbq0f:aEr\P-L6SL\i85;rY;,^=i
+;H$Nd<!-#q:f.-gs&&hqqbmDl!)ienr)3Mms&8tsq,7&fr_i\n!)i\ks&/kq!)iVis&&ns;H!Hl
+r)3PlrDEYp<:j/k<)WZl$W'Vp:f1%b:f1(d;#X5j;#X>k:BXKi:Jame;><ua;$'Qk;=[Q_:]F2e
+:]F2i:]4#k:JO\^;#F/j;#X8j:B+)i:B"#h:Amuf:A.K`;>O)`;#X8g;#a>i;#!oe:]=2j;=[Q_
+:]!u^;>sDj;>jDm;#jGk:B45e:]4&f:B45j;>jAm;uT\n;u]hk<<-"h;ts>j<W6#'<E)pt<Dufo
+;$'Ne:&[cf8jl`^rE/kur*'&'pg!c'!FAP!;#X>l;Z9Mn9)_cb<;fhq<;]_r<;oet<E<-!<rQ)!
+<;ohn<<#tu<<#nq<<#tt;ugb5D>S5MDuO_SEW:(ZF8^1^F`qs-G6W;;H$Xd`I/\P8IXcluJV&N,
+KS>/9Ll$tHN/WdXO-,TgPa.Q$R$jG5SXuIITqeE[Vl6VqXKAY0Z*UdE[^`lZ]Y2(p_8=.0`lQ9E
+bK\>YdF$Fme^rF+g=tH>hVd>Oj5]7`k3)!nlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`n
+oDX=@JcFC&J,~>
+JcC<$JcEpnnG`@arVZNhrVHNhr:p9cs7ZB`s7H?_rUU!Ys7$!Us6fpSrTsRMs6BUJs5t$ViRuT!
+_nNXfZa-j>Y-"_(W2KTjs.f^kU7qCW.FZ_mdEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]=PP`\$i`P
+Za6p@Yck2.Qi<9WJpqI*R?E;WItIZ3,%>%mARf4\A7]@aC27KqB4tsjAnPXbB=>+1U;(u'JVT/F
+rKI,Ar/puAs,m&;qN(Z:qN(Q9rf?o;qiCc;s,I&;r/C]8rJL]6M>W/-LAZ`*K`6]%K`-VuLAuu,
+K`-Q"K`6Z2L4k54Jq8H'Jc1,tJc:6'JUi6"qgSKns*joppjE*grHnZnH@#F5s*FZi!dJp5rceEg
+qKi0g"F>?<H$T:3rd"HerH\'^s*Ocnrd4Tis*OQfs*=HercnNjHiA?iHiSTlI/\QnHie_GJ,Fiq
+J+eElIfP#nJcC?$K)pXXrIb0)re:`7LkpnEMMmFQNW"n9O84n8Oo1CAPQ$gHPm<P=QC!u+R@*i=
+rgNhUqO.nWJ:)ZiF`_S=DJ<g&Qrj5gq-!Z"rEK&%rE]D/!4Dg8rO*'@['R!@YGB+U`Q%eq!m&L+
+r6#)aqp,/dp!E`b!R8jebPfQ]b5]Zbb5Q5VD>J/MDuO_SEW:(ZF8^1^F`qs-G6)r6rd&7)I!pEl
+It3'#JqJ]/Knb><M2@+KN/`mZOHPckQ'Rc(R@B\:StD^MUSO`aW2ZeuXfen5Za7'J\@K2`]t_=u
+_SjF5aN;TJc-FY_daQ^rf@\d1gYL]Ci8EVTj5oFckiq?slg4!*rpL6anac8Bo^qhLp@e7Zq#C0i
+qY^6ir;HTdrdk*#s4@:$~>
+JcC<$JcEpnnG`@arVZNhrVHNhr:p9cs7ZB`s7H?_rUU!Ys7$!Us6fpSrTsRMs6BUJ'X"[DXJ_b]
+R$NnsO,f3ZN/W[QMM_:fs+^W0L\uo,L]<)Xe'cXkd*L"_c-+;QaiMQC`Pod5_SO%&^:h1k]",A\
+[^NQLZa$a=YH@eSrdP_l?<2/fCh7'`@U!#?>$G-5=^"s2=BSf*>7t%A=^"s1='/L\JTQ0uC2Is4
+GOBkYHN8BfHiAEjHN8BkH2`-iHN8HlHiA<lH$K:3s*4HeoQ^@\s*+NerH8-^"`nd,F*)O%FnTqN
+FTcf-EcZ<mErU+\E,TXmDZt#sE,]`6rGVaTrGMOOrG_XPoksbIrbhUM"`.siCi+%gC]J>LDZ+DP
+D#J5NDZ=SPDZ4SCDYnAIDZ=SPDZ=VTDY\5NDusrqDYe8OE;OSQE;jeTE;X_SE;";KE!C<&EcH)>
+ErL%ZEc_5%qK2d[rcS6a!-eBdrH\?fr-S?hqgANpI=;*DrdXrurdk$"s+:<'rIb*&re:3%$%I#8
+DfBQ/C1h2YA-%3^rE/kurEB/(pg!c'ra#S_r/L`7#)\7nL5(D0rfm>GrfdGKQgpI@R/i]QS,\rW
+RJWBOQMm0MR/`NPD#S;JDZ=YSE;aeVErU4ZF96T.G5c[dG^9:7BR>,TI=?ZrJ:W<)K7nr5L5:\C
+MN!LRO,oBcP*D5tQ^F21S"6.CTqS6WV5L8kWiW>*Yd(O@[C3TU]"G_k^VRe*`Q$!@b0/&TcdC1i
+eCE1'g"P3:h;@/KioB(\k2tmll0@U$m-Xf@$h3]Wo(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14%
+s*t~>
+JcC<$JcEpnnG`@arVZNhrVHNhr:p9cs7ZB`s7H?_rUU!Ys7$!Us6fpSrTsRMs6BUJ'4PNdBOkLT
+>?Fs,<)Zar<E<+"<;ohm<!--$<E8us.FZ_mdEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]=PP`\$i`P
+Za6p@Yck2.<;of*.4R)41bp^8/1s:V6ppr?!(6`P!^T.>r]pHI&O&HF5sRRs9K,*o8l/A];H$Nn
+;ZB\f;uooprD3Pm;H!KmrDNVn!)ienr)3Jl!E<"n;Yj>k;Z9Vp;Ys>k;ZBYq;Ya2i;?Bcp;Z0Pl
+;Z9Pm;?9]qoMkok;Z9Pn;#a;s:f1%b:f1(d;#X5u:f1(d:JXe`:JXe`r_`GeqbdAis&&>`r_EMh
+qbR2ds%iSgr_NPj!)ibmr_NPhs%iYis%iYir_NMgp.k`d;,I*bpe^udqb[;grD<;e!`2ZgrD3Jk
+nPK3\r)!)ar_WPjrDNYm!)WVis%rMerD*Ag!)WVkq,72js&B"u!*&hqs&Ako!*&_l!E<"o<;ons
+<WH.u<;oer;#X;q;GKnZ:/1^]!*B,$q-!Z"rEK&%rE]D/!)NMhr_`\nr_WYfrDWPlrDieqr)E_r
+r_ir"<`N.#rDiepqc*Sqs&B"srD`ess&Au6rb_LLs)7mUrGhjXs)\-\!d/[0rc\BfH2`,'H[L6i
+IXcluJV&N,KS>/8Ll$tGN/WaWO-#NfPa.Q$R$jG5SXuIITqeE[Vl6SpXKAY0Z*UdE[^`lZ]Y2(p
+_8=.0`lQ9EbK\>YdF-Lne^rI,g=tH>hr*GPj5]7`k32'olKdg'mJcP^nF?)?oCV\Jp%J+RrV6Eg
+s8)Zjrqu`no_sFAJcF@%J,~>
+JcC<$JcEpnnc&Ibr;?EgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!U!q,ICrTsRMs6BUJs6(HbinMo&
+`4rmk['Hs?Y,nY&W2HJfV59u`US=HUr1X1brLt[ed*L"_bfe2PaiMQC`Pod5_SO%&^:h1k]",A\
+[^NQLZa$a=YH=r+QiE@(J:V@(P`UWLJqJehXK>rCAR]+ZAS,LdCMINpBP;$jAn>LaB6'WDMq`T0
+KSY]dPP^O@OoCODOnXt6O8k7:O8P+<O8G%9O8k7?NW4t8N<"q9MZJ]lr.k3)rIt9)re:6&rIss"
+s+UE)re('#re1W4KS4u0JUi<&rIFlurIP-&J:E(GIf4crIf=ciI/eQlI/\HhH2i3iGli57GQ)ge
+H22aiH[:!`G^9.1rd"Kfr-A0c!.4Wi!.4]mrd4Ti!.4Nfs*=HerH\Eis*=Zlrd=`or-\Klrd4cq
+IXh9Gr."Ejs*k-$JUr@IJcC?%K*$^YKDpN(L&Qi,L]<21M>rJ7N/daqrK$c9r/pr@rKI5F"dP=;
+QBmm:R/WKRR/WNPRfAlPRLPU:J:)]eFE;;:Chda)rE/kurEB/(q-<l(rE]J2rO;a6$FR7JYct=,
+`5T^8qo8cZaiaP)!6k>crm15`s3C\irQ>2`rQ5#\s3(FXrG;IMqelCOs)@mU!ci@'rH*4*G'8(R
+G^+L[H@(!dI=6QoJ:N3&K7el4L51SAMMmFQNfT9aP*;/rQ^F21S"6.CTqS6WV5L8kWiW>*Yd(OA
+[C3TU]"G_k^qmn+`Q$!@bKJ/UcdC1ieCN7(g"P3:h;@/LioB+]k3(sml0@X%mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>U6gqu6NlrUg)?s+14%s*t~>
+JcC<$JcEpnnc&Ibr;?EgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!U!q,ICrTsRMs6BUJ'^2d*Xf8%a
+R$X"uOH,<[N/W[QMM_:fs+^]2LPCN^LB!&.L+.n4dEp4bcHOJTb/q`G`l5p8_ns7*^V7Co]=PP`
+\$i`PZa6p@Yck12rdb#u%piXCF_tr*?=IDS<e5j+>Q.h(=Tr&6>?b65r`Th7='&F0FaeD3D/XH;
+H%(21I._jbI/\HmHMr-hHN/?lI/\KkHN/6hGQ2pcH1Z@\H2i*hG5ZR`F9Q`-FE;MFqfVXTp2pFY
+F)q8$o5akN!cW'qqeuLRs)7jT!,qgRr,;OQr,;4FrbqdRqeZIPCMRa'rG2INr,2IMs(qXNs).jR
+rGMUQn8A)@q/61KrGDXSDYS,PE,TW3qJZCQr,;RRrbqdTr,MXRp2TtKs)S*Y!-8'Y!HN8\FS0eV
+G5Z[`H2W'fHi/9gI0+kGIK"]qJ,XusJc:9$KE$Q&KDgK'L%g6#F8g+aDJX!"An>I^AGoX+=oDP&
+>PVP&?2\(0?i,i_MuSY;Lk^Y<I/]B.Q2[!KQ'_'/qj@GQqj[VS!1E\Ns-EVMs-Wh%rG;IMqelCO
+s)@mU!ci@'rH*4*G'8(RG^+L[H@(!dI=6QoJ:N3&K7el4L51SAMMmFQNfT9aP*;/rQ^F21S"6.C
+TqS6WV5L8kWiW>*Yd(OA[C3TU]"G_k^qmn+`Q$!@bKJ/UcdC1ieCN7(g"P3:h;@/LioB+]k3(sm
+l0@X%mI'H3nF?MK!V>s_o`Fj]p\ssfq>U6gqu6NlrUg)?s+14%s*t~>
+JcC<$JcEpnnc&Ibr;?EgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!U!q,ICrTsRMs6BUJ%HqA:Bk:^W
+>?P$-<E)rq<<-"t;u0Gq<E<+"qG\iid*L"_bfe2PaiMQC`Pod5_SO%&^:h1k]",A\[^NQLZa$a=
+YH=r+<<#l+-Rpc-1bp^7/M/Y96:(T;!(6ZNs$?ZM'gFrI5<qJ"5Wq:m1He309i4Y`;,^Em;ZB\f
+;uooqrD3Pm;H!Kmr)3Pn!)ibmrDNPlpeprer_i_os&/_ks&/kq!)iVir_`bq;Z'Jk;ZBVn;?9]q
+oMkok;uTYo;#a>j:^'Wk;,L.dr_F##;,L.c:Jak`:Jakb;Gm3cqb[Dk;,Qj[r_EMhqbR2d!)NMf
+s%iYkr)!Gjr_NPhs%`Vir_NPhr_NMgp.k`d;,I-cpe^rcr)!DhrD<8dr_NMis&&>`r_NDfp/1fc
+r_`Sks%rbmr_NPjpeUi`s%iSjpeq,js&B"us&Anrs&Akos&A_kqGdDns&K5%<)Zco;[l]&;,L.e
+:eXSU:/"8PrE/kurEB/(q-<l(rE]J2qb[8hs&/ko!DlDe;u0Jm<W#ho<<Z?#;cHduqGmMnqG[Gp
+r`&nrrD`ess(hRLrb_OMrbqgUr,DdYF*%;%G'.tOGB\:VH$Xd`H[L6iIXcluJV&N,Knb>;Ll%"I
+N/`jYOHG]iQ'I]'R@B\:StD^MUSO`aW2ZeuXfen5Za@-K\@K2`]t_A!_SjF5aN;WKc-FY_daQ^s
+f@\d1gYL]Ci8N\UjQ5Oekiq?sm-O--n*fc9rpg*]o`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s4@:$~>
+JcC<$JcEsonG`@arVZNhrVHQiqtU3crq?<`s7H<^rUU!Ys7$!U!q,ICrTsRMs6BUJs6(?`jPA>/
+`k]3q['R$AY,nY&W2?DeUnsl_U]$nbUApqdUA^c2cHOJTb/q`G`l5p8_ns7*^V7Co]XkYa\$i`P
+Za6sAYck12XT"P>Q@41SS!K"_IY!-*BWS;5V5.R2A7]@aBkqEsAnbpiB4YXbAnH1U^m'%jJ;/rD
+plkW=r/q#BrfQu;qN(Z:qN(Q9r/^c;qiCc;!0-u:r/C]8rJL`7M2;+cr.b0(s+LB*qh4p%p4iU$
+rIk0&qh4s&s+^Q,"bVDXJ:W:NJGk&uK)^B'J:E(HIf+]qIf=cjI/\KlHiSNmHM`!fHN&0jG^'+2
+!."Bd!IK.kH2;dcH2VsfHN&3eH2r<iHN/?lI/\KkHN/?fHN/9eHN&0jH@,X;rHnTnqgABkrd4cr
+It.EIr."Ejs*k0%JUr?%qLSWtrIb'%!/:E,s+^f7M2@+JN/[[prK$c9"d+n/OHG\(P5^[BPQI,9
+Qhd$JRJiQSS+W3[M10l"H?F7HE,06&EHPCZ=oDP&>PVP&?2\+/?i@J4[L9LM['6d<V8U<k`l@qs
+!m&L+r6#)aqp,,cp<`ic!6tJc!6Y8^rQ5,`rbMIKrGDFLs)7pVr,DdYF*%>&s)e<brc`L0H$O^^
+H[L6iIXcluJV&N,KS>/9Ll%"IN/`jYOHG]iQ'I]'R@9V9StD^MUSO`aW2cl!Xfnt6Za@0L\@K5a
+]t_A"_SjF6aN;WLc-F\`daZdtf@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9o()DDo`"Lbp@n=\
+q#C0iqYU0hr;HTdrdk*#s4@:$~>
+JcC<$JcEsonG`@arVZNhrVHQiqtU3crq?<`s7H<^rUU!Ys7$!U!q,ICrTsRMs6BUJs6(*YY,\7f
+R$X&"OH5B\N/NROMM_:fs+gW/re:B,s+^W0L&-NLcHOJTb/q`G`l5p8_ns7*^V7Co]XkYa\$i`P
+Za6sAYck12XT!_UIp66'F)Yi$?2e=<=+PpNH[8lo=WCOH>[(B7>$5$4=]ea,<ap62H"q5:Ed)hZ
+IXZ_7I._jaI/eQnHN&3iHN/?jHiSNkH2r3hGQ2pcH1Z@\H2i*hGPu[aF9Q`-FE;MFqfVXTp2pFY
+F)q8$o5akN!-%mT!-%pUs)7sVrG_dTrbhXPr,DRPoksbIrGMOMs(q^Ns)%aO!,_UNrG;ONrGDRP
+rb_UOs)7@Dqeu7Is)%^Pp2BtMrbhRN!-%gRrc%jTrc%gUr,D@LqJZFTqJlOUrcA0`G5HC^FT-F_
+FoZabGl;pdHMr3gI/&-hIfForJGt,qK)UE$KE-`!KFW-EEGfZ1BkM'iA7B+^=SZ+u>5_\$>l@t,
+?N+=/NW4q:M?J`iL4t$SPl-gGPQ@&9nsK<B!1NeSs-`qUqO%;KrKdMOrbMIKrGDFLs)7pVr,DdY
+F*%>&s)e<brc`L0H$O^^H[L6iIXcluJV&N,KS>/9Ll%"IN/`jYOHG]iQ'I]'R@9V9StD^MUSO`a
+W2cl!Xfnt6Za@0L\@K5a]t_A"_SjF6aN;WLc-F\`daZdtf@\g2gtgiEi8N\UjQ5OekiqBum-O--
+n*fc9o()DDo`"Lbp@n=\q#C0iqYU0hr;HTdrdk*#s4@:$~>
+JcC<$JcEsonG`@arVZNhrVHQiqtU3crq?<`s7H<^rUU!Ys7$!U!q,ICrTsRMs6BUJs6'dPBkCdY
+>?P'/<W5tt<<?-"<;ohm<;fhq<%CsJ<)lq!<mJq4bK@rJaMu3<`5BI.^q[Us]Y(hd\[T#U['R*E
+Yct=5XfVM$'N6A.3]8iM/LrJ,0/l3`5!;"q6::`=s$7Dc5<_=t5<qG!5Wq7l5!VY6:/Onf;cN`p
+r_ibpoi(uk;GmBhr_ibpr)3Pn!)ibmrDNPlpeprerDNVn!)iYjs&&kr;Ya2h;?9]or)<Mks&&bn
+!`N&toi2#l;uTYo;#a>j:^'Wk;,L.dr_Enu;,L.c:Jak`:Jame;>F&b;$'Qk;=[Q^:B4/e:]F2i
+:]4&f:]F8h;$]uo:JOY\:JO[a:]F2i:]=,_:BF?i;#=&_;#a>g;#a>i;#*uf:]4)i;=[Q_:]!u^
+;>sDj;>a;m;,I6fs%rJdrD*Ag!)WVkq,75ks&B"us&Att"&r9"<;f_t<)Zaqp/CferD`o"<E/]k
+#uFJr:f(%c:.n1X8c_=^q-!Z"rEK)&rE]A.ra5P!r_`\ns%rkp92eaf;u9Pn<W#ho<<Z?#;cHdu
+qc*Vqr_rYm!*0"ts&8kq!*0#6rG;FLqelFPs)@mU!ci@'rcJ0_!-\?cFa/1WH?spcI=6QoJ:N3&
+K7ei2L51SAMMmFQNfT9aP*;/rQ^F20S"6.CTqS6WV5L8lWiW>+Yd(OA[^N]V]=bhl^r!t,`Q-'A
+bKS5Vd*^:keCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6Nl
+rUg)?s+14%s*t~>
+JcC<$JcEsonc&Ibr;?EgrqcWir:p<drq?<`s7H<^rUU!Ys7$$Vs6fpSrTsRM!:'OIs6(?`k24b7
+a2,I!['R$AY,nY&W2?DeUnsl^UA^eaUApqeUAU_aTH_S%aiMQC`Pod5_SO%&^:h1l]",A][^NTM
+Za-g>YH=q.X8\G<IXe&YPDb'AIt35bXJr+rU77R:O(Ms<CM7<mBkV*kAn>LbFaTFKd<U4lLQ.Gj
+PPUIAOoLUDOnb%7O8b1:O8P+;O8P+:O8k4?NW+n7N<"q9MZScmM#E,,LAci+K`6]'K`$PtLAuu+
+K`6W$K`6]*LAuo-K7a&Qrdarurdt0$!e>cMr-nNm!.OoqrHnTnrI"Tkrd4]mrd+Hes*FZi!I/hf
+GlN'cHN/<pH?ja\H2DjcH2`$hH$]I8!IB+kH2r<iH2r<kI/\KkH2r<fHN/9eHMr-hHiJBlHiABm
+IJ\EkIK"TqI=?\DJGjukJGt$#J:W6$qLSTsre(0&s+UK-s+gW1s+pi8Mi<YpNWG3$rf?r<!0R/?
+s,dAGOco^-qiq,G!LB)OQiNKPR/NHPRK/iLRLYgIJU;ciGB7_@Df'0*G5>A?>5_\$>l@t,?Me+/
+[h#pV[^NTN['6d<V8U<k`l@tts2Y5_b5BE_c25f^chYrfcN)5gb5f]`ao0B[C]/)KD>S5NDuO_S
+E<:0%F8g:]FT?UaG6)r6rd&L0I!pElIt3'#K7ei2L5(M@M2R=ONfT9aP*;,qQ^F20S"6.CTV8-V
+V5L8lWiW>+Yd(OA[^N]V]=bhl^r""-`Q-'AbKS8Wd*^:ke^i@)g=k?<hV[8Mj5]4_k3(smlKdg'
+mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu-HkrUg)?s+14%s*t~>
+JcC<$JcEsonc&Ibr;?EgrqcWir:p<drq?<`s7H<^rUU!Ys7$$Vs6fpSrTsRM!:'OIs6'sUk,Y>M
+R?s2%OcPK]N/R[ms,$`2!/LQ.re:B,s+^`3Knb>9rJ(<*,0S-NaN2B?`Pf[2_8*h"]tD"h\[f5Y
+[^EHJZEUR:Xf\\*rdb#T/9l,OBOP7V@UrJiIXQQgF`VM==]ej4>?Y-4=^"s2=BAR3Ap&EmCMe$4
+G^fXA!IfIdI.Vd_I/S?oH$Xd`Hi/9hH2r6iGQ2pcH1Q:\H2i*hGPu[^FT6C^FSg4TFS9hYFE;L%
+F7XGPE<U<"DfBW6rbqgU!,qgTs)7mSr,;LPr,;OO!,q^OrbqaQr+uURCMRa'D>n>OD>\;GD?"MQ
+D>nGPDt%Z@Du";MD>e>QDf5>g")r0rDYe8OE;OSQE;jeTE;X_SE;";JE;stTE<^H)FEDYKG5$.Z
+FoZabGl;pdHMr3hI/&-hIf=irJGk&uJcLB$K)L?$KE-_tKFN6IE,TW1CM.9lARf:aqH<c#rEK)&
+rE]A.qd9;]$&je#MMd4EL4t$SPl-gGPQ@&9nsK<B!1NeSs-`qUqO%;KrKmFtrG;IMqelFPrc%gU
+!ci@'rcJ0_!-\?c!I/nhH>e.XI=6QoJ:N3'K7nr5L5:\CMi<UTO-#KePE_?!R$jD4SXuIHTqeE[
+Vl6VqXKA\1Z*UgG[^`l[]Y2(q_Sa=2a2lBGbg+M\dF-Opf%8R.g>(N@hr*JRj5f@bkNM0qlg4!*
+mdKW6nac8BoCW%T!quB_rqQNhs8)ZjrVZWmo_sFAJcF@%J,~>
+JcC<$JcEsonc&Ibr;?EgrqcWir:p<drq?<`s7H<^rUU!Ys7$$Vs6fpSrTsRM!:'OIs6'dPk%8%-
+>?P'0<rQ(u<W5ts;u0Jm<W#hr<W?"u<W6#E<E./aaiMQC`Pod5_SO%&^:h1l]",A][^NTMZa-g>
+YH=q.X8Z)u.2Y''1bgU5/M8Y56:!e!4?PVa2aThr5sRX55Q3nW5sRV"4$GW(:/Fhd<)`cqs&8ko
+!)rPis&/nqr_`\ls&&epr)3Pn!)ibmrDNPlpeprerDNVn!)iYjs&&kr;Ya2h;?9]or)<Mks&&bn
+!`N&toi;#jr_`\ls%iVj"]%rl;,C*g:]=2s:esk`:esk`;#X>f;#4#j:f1*g:]OAe;"mcb:B+,g
+:B"&h;#F2i:]F2i:B4/h:]F2h:]F2_:BF?i;#F,`;#X8g;#a>i;#*ri:esmc:]OA_;#X8g;"dcb
+;#X>i;?9WkrD*DipJ:`_s%`VkrDEDhs&8nrs&K(us&K"srDN_r;uTbi;u0Jm<<?3#<:s2i;ZBQ"
+;,9t^:.n2O91/PYrEB/(q-<l(rEfA.r)!Ais&/ko"&MWh;Z9Vl<;onq<;]bq;Z]p!<r5ks<;ohm
+;ufqt<<#nq<;^P1D#S;KDZ=YSE;abXEcZ=$FT6I`G5c[dG^9:7DgQk[I=?ZrJ:W?*KS>/8Ll$tH
+N/WdXOHG]iPa.T&R@9V9StD[LUSO`aW2cl!Xfnt6Za@0L\@K5a]t_A"_o0O7aN;WLcHaeadaZgu
+f@\g2gtgiEi8N_VjQ>UfkiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6hr;HTdrdk*#s4@:$~>
+JcC<$JcEsonc&IbrVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4)sHJJk2t=A
+aMYa&['R'BY,nY&W2?DeUna`\U]$nbUA1G]T`(KYaMu3<`5BI.^q[Xt]Y(hd\[])V[Bm3FYct=6
+XfSS'Q\0^$U77@$JpW'%LhEihV5BuXS<f4mKSG,,B4tskAnG[dA7oqH]8aOPJ;&f@ooo-5r/pc9
+qN(W9qN(T:r/^c;rJq)AO,f6[rf$c7s,?r8!fDhjrJ1<*rIt9)re:9'r.Xj!s+UE)re(-%rIt9+
+s+CE*K)L9"JGt,uK)^B'J:E(HIf"TpIf=coHiSTnI/\KlHiSNmHMi'gHN&3fGlN'bH3S_BH$OX[
+H2DjdH2W!fHN/6lH@(#<H2r<iHN/?lI/SEkHN/?fHN/9gH3&A=rcnNjHiA?jI/eWlI/\QoHie_F
+J,FipJ+eEmIft:QJUi:JJc(-"KDgK&L&Zo-LB`QkM2I4LN;AP7O8G"=Oo(7?OTgo1P*2#mr072G
+"dYLAR$a6=R/E?QR[Nf:&=]2\Oaqk.H['^QD/O*'DnPsMrEB/(q-<l(rEf>-rjN6C\$i`Q['['A
+YGM6:rl4rXs2Y2^qo\uaqp+o]r6PPlcHXT4b5f]`ao9H[C]/)KD>S5NDuXeTEW:(ZF8g91F`qqP
+GBe@XH?spcI=6QoJ:N3&K7nr5L5:\CMN!LSO,oEdPE_>uR$jD4SXuIITqeE[Vl6VqXKA\1Z*UgG
+\%&u\]Y;.r_Sa@3a2lEHbg+P]dF6Uqf@S^0gYCWAi8EVTj5oFckNV6rlg4!*mdKW6nac8Bo^qhL
+p@e7Zq#C0iqY^6ir;HTcrdk*#s4@:$~>
+JcC<$JcEsonc&IbrVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4&Er<?k2rP4
+R[9>(OcYT_N/R[ms,$c3s+gT.re:B,s+^T/r.P9.Knb;8rId=daMu3<`5BI.^q[Xt]Y(hd\[])V
+[Bm3FYct=6XfSS'J7;hdH#mk7?sR5OAQ=>3H[0jZF)c&/An5@X>Q.b9>$4s/=BAmNLin\pDfKoG
+r-n`rII_dVHi&3jHi/3hHi8<lHi86oH$FOWG^0.3o6C:\s*+NfrH8$[s)S0^qfVXTp2pFYF)q5#
+oQ'tO"`SBuE,T^pDu+GQDuOYPDu=SPDuFPRDu4GNDuFSOD$4ZjCM[kdD#8,KD#eDND>nGPD>nGQ
+DsqT@Dtn5MD>eAGDuXeVDYe;OE;OSQE;skUE;X_RE;";KDujs!qJlOU"ES[-G'<V&s)nBdr-80c
+rHeEhrd=Hgs*jorrdarus+16%rIXs"!JH*sKF`ckIrfRIDf0?(BOt[`A=36srEB/(q-<l(rEf>-
+rJ_,BMi3ILLk^Y<I/]B.Q2[!JQLU@>R/i]QRfJoVRJWBOQN!6JC]/)KD>S5NDuXeTEW:(ZF8g91
+F`qqPGBe@XH?spcI=6QoJ:N3&K7nr5L5:\CMN!LSO,oEdPE_>uR$jD4SXuIITqeE[Vl6VqXKA\1
+Z*UgG\%&u\]Y;.r_Sa@3a2lEHbg+P]dF6Uqf@S^0gYCWAi8EVTj5oFckNV6rlg4!*mdKW6nac8B
+o^qhLp@e7Zq#C0iqY^6ir;HTcrdk*#s4@:$~>
+JcC<$JcEsonc&IbrVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4&Er<?k2p,Y
+>?Y-1<`N*u<E9#tr_rVls&Jtrs&K(us&K&!s&K(u:fYTV`Pod5_SO%&^V.:m]",A][^NTMZa-g>
+YHG"/X/],L.5<kA1GCC2/MAb85s[_"4?Y\a2`*9H0ebgW5!D4s5sRUt4$Gl!8kr5[;Gm?ks&8ko
+!)rVkrDW\nr)*;gs&8qqr_`SkrDWJhqG[>jr_iepqGI8j!E2nl;>sGo;c<Nlr)3Plr_ibp!*&Vk
+s&8nos%r_k$W'\s:Janc:f'q`;#X>k:]F5k:]=2i;>F&c;?'Jm;>j;k;>3o]:]=)h:]4&f:]F8h
+;#jGl:]F2i:B4/h:]F2i:]F2_:BF?i;#F,_;#a>g;#a>i;#*uf:]=2j;=[Q_:]!u^;>sDj;>jAn
+;,HdYr_EJh!)WSjqbmGmrDWo"<)cjtrD`_oqc*So!)iYlpf%;p<)iBd$rBf!;GU+b91qiK92>@e
+rEB/(q-<l(rEf>-r)!Ais&/ko"Ah`i;H!Kmr)EYqr)EVp!*&qr!`W3$qc*Vqr_rbp"'&<"<W5tt
+;uTbnC]/)KD>S5NDuXeTEW:(ZF8g91F`qqPGBe@XH?spcI=6QoJ:N3&K7nr5L5:\CMN!LSO,oEd
+PE_>uR$jD4SXuIITqeE[Vl6VqXKA\1Z*UgG\%&u\]Y;.r_Sa@3a2lEHbg+P]dF6Uqf@S^0gYCWA
+i8EVTj5oFckNV6rlg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTcrdk*#s4@:$~>
+JcC<$JcF!pnG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s60LGroOgS
+ai(p)[Bm0DY,nY&W2?DeV#@%gUAgkbUA1G]TECgXT:c(R9>n`b_8*h#]tD"h\[f5Y[^EHJZEUR:
+Y-"e+Wi:JsBUkHOL4au.K4SYsW26;_R[TJ%M2-k:I!^U&LPh"HMi3U<SAhRSI=I!0Oo(=<PP:7;
+OnXt7O8k7:O8Y1:O8b7>O8b1>NW4t7NW4t:MZScmM#E,+LAlo,K`6]'K_pJtLAuu+K`6W%K`-W)
+LAuo-K7a&Qrdb!!rIY'#!e>cMr-nNm!.OoqrHnTnrI"Tkrd=Zjr-A<grd"Eds*=Hes*F`lrH\9b
+rd"Kf$$giCH$O^_H[:#;Hi86jHiAEjHiJBlHhi!fH2MshH[>[:"aYNBH?sr;HiSTlI/\QnHie_G
+J,OoqJ+eEmIft:QJUi:JJc(-"KE$T*K7s5XreCH.s,$c5!fN"sqMkQ:r/_/GOH>NbO-#J%OTL]0
+PPg[DPm*J?R$a5,rg<\Q".5LFRIcjISGo&gR"Kg9H?XLRD/X<+CR4m$rEB2)q-<l(rEf;,s'Yl9
+$F[FP[^EKLYct=-rl"fUrl>&[!6P,]!6tAcp!<Wa!RK'jbl>idb5KE^b5#iOD#S;KDZ=YTE;aeV
+EWC1[FT6I`G5c]&G^4U]H[L6iIXcluJV&N,Knb>;M2@+KN/`mZOckomQ'Rf*R[]h=T:qsRUnsuf
+WiN5'YHY==['mHS\\#Mg^VRe)`Q$!?b0/&TcdC.heCE1'g"P3:h;@/LioB+]k3(sml0@X%mI'H3
+nF?MK!V>s_o`Fj]p\ssfq>U6gqu6NlrUg)?s+14$s*t~>
+JcC<$JcF!pnG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s60LGroORL
+S!]M+P*(fcN/R[mreU]4LPPk`re:B,s+^T/pP&R!rI[:c`5BI.^q[Xt]Y(hd\[])V[Bm3FYct=6
+XfSS'WF'"4FDu#+@:3ST<E4X"H[BsXF)Po-ARo4V?>!k_BP@?Y$"8"<KP>@DF*E!0IfFosIe.sX
+Hhr-iHi89iHi8?kHiJBoH$FRXrcnBeo6C:\s*+NfrH8!Z!HWA[FnTqOFTQZ+ErC(OErU+_E,TZ6
+DfG\oqJcIQrbhXPr,DRPrGDURr,2FNrGMRNs(q^Ns)%aO!,_UNphg"Jrb_[Qrbq:DqJZ1Is)%[O
+qelIRrGMdWDf0IhDZFbRDuO_TDuO_SEVseLEVaVSEr'eUEWgH*F`qs&FoQXbGPudbH2W'fHi8?e
+I/n`oJ,OosJcC?%Jc:9#K*-^XKS/lL!/:E,#D@2=DfBN/C&V`E@fUuU=oDP'>PVP&?2\+*?iOO5
+N<tQ%Mi*@IL5(D0rfm>GrfdDKnX03AqO7JRrL*VO".,=>QhbFqD#S;KDZ=YTE;aeVEWC1[FT6I`
+G5c]&G^4U]H[L6iIXcluJV&N,Knb>;M2@+KN/`mZOckomQ'Rf*R[]h=T:qsRUnsufWiN5'YHY==
+['mHS\\#Mg^VRe)`Q$!?b0/&TcdC.heCE1'g"P3:h;@/LioB+]k3(sml0@X%mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>U6gqu6NlrUg)?s+14$s*t~>
+JcC<$JcF!pnG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s60LGroORL
+>?Y-2=&i4!<E9#ts&8Yk!*/qrr`&qtr`/u!s&K%trDbhq_ns7*^V@Ip]XkYa\@/iRZa6sAYck43
+XK/A#-n-l12DHm9/M8\81-n,g4Ztnf3]ArR0etF9qDAR92EX2j9MA5Y;YF&g;?0Yi<;TVo;Z0Jl
+;?0Yp;Z9Vp;ZBVl;Z0Ph;Yj>i;ZBYq;Yj8h;Ya2h;?9]or)<Mks&&_m!E2tj<<6&tr_`\ls%a#!
+;,C%b;,L.d:JXgd;>sAk:]O;j;#X>f;#=,i;#aDk:]OAe;"mcc:B+,g:B"&h;#F0!:esk^:/=Y\
+:/=Y\:B"&h:A%Ba:f1'f:\IWa:]+&h:]4,c;$'Qi:]4)i;=RK^:]+&_;>sDj;>a;l;#F)h;"d]b
+:B+,i;#O8g;ZB\o;ufqt;ufqs<;f_u<)lpt<;ohr;Yj>h<!6-!<E)re;[l]);Gg7e:/">U91hfL
+r)ru%r`f2'rE]A.q-X/0rD<Jjs&/ko"Ah`i;H!Kmr)EYqr)EVp!*&qr"'&B&<;]_r<;ohp<<#r#
+<)lmsr_ierq.oqFrb_OMs)7pVrGhjX!-A-]s)e<brc`4(H$Xd`I!pElIt3'#JqJ]0L5(J?M2I7N
+NK9-_P*;,qQC+)/S"-(BTqS6WV5L8lX/rG,Yd1UB[^WfX]=bkm_8=+/`lQ6DbK\>YdF$Fme^rI,
+g=tH>hr*JQj5f=akNM0plKmm)mdKW6nc&([oCW%T!quB_rqQNhrqcQirqu`no_sFAJcF=$J,~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\B5s60LGroOgS
+jMepH\$NBFYH=h(W2HJfV#@(gUApqcUA1G]T`:YaSc,/YSO^K1^V.:m]=GJ^[^NTMZa-j?YHG"/
+X/`.tJ8(L>NJ3"7J;%X8XJVegSsu(2O,/LDJ:2m"LPUeFM2R@KJ=i[jH%1O&N03t"rKHl:plYB6
+r/^i;qN(W;q2bN:rf@&=rf$o:qMbK6regl9M26ueL\li*L&Qc*L&?W$L%g?%L&Qc(KDgK%L&Zl1
+KnP,3K)L6#JGausK)^B'J:E(IIenNoIf=coHiSToI/\KkI/SBhH2i3iH2W!eH2;gkH[:!`G^4T3
+GlE!fGR/S@H?jd_H[:#:Hi86jHiAEgHhi!fH2MsgHi83jH@,X;rd=`or-\Klrd4cqIXh9GrI=Nk
+rdXs!rdalsr.=s$!ec2YrIt9+s+gW2re^u>NK0!YNK0!Yrf?r<rK$u?rfI8FPEYp/rK[DK$C@-H
+Q^F,+R$jA0rL*>I!LoVXSIV6]ML^,$G'7qED/O*'DuNo<>5_\%>l@t,?M\%-@/jXC\$icS[^EKM
+Yct=,rl"fUrl>&[!6Y2^!6t;ao?RK`bfp(0!6Y8^phThErb_OMs)7pVrG_mZF*%>&EclPKGB\:W
+H$Xd`I!pElIt3*%K7ei2L51SAMMmFQO,oEdPE_>uR$jD4S=Z@HTqeE\Vl6VrXKA\1ZEppH\%0)_
+]Y;.s_Sa@4aN;TJc-FY_daQ^sf@\d1gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9rpg*]o`"Lbp@n=\
+q#C0iqYU0hr;HTdrdk*#s474#~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\B5s60LGroORL
+jHu:!PEM#fNK!gnre^W0rItK0L5(J=LA-E#K`$K$JOdMj^V.:m]=GJ^[^NTMZa-j?YHG"/X/`.t
+?WM5eBk(U[@:N>gJUMfhGBInECM%-g?sd;RB4bgiBPD0jBR+s%D/O?9GCBC<s*t#s!.FKenU(.\
+rHnNis*O]lrd4Zk!."HdrH\!Zs*=Whs*+HbqfDm\FEIG'p2p%O!d&L(rH%UOs)A9_DfBZ6E,T[j
+E;skUDZ+MNE;XYQD?+VQDZ"GODZ+DUChmg&D/K8g!,_XOphftIrb_[Qrbq:DqJZ1Is)%^Pp2BtM
+s).[Os)@mSrc%jTrc%dTrG_IMqJZITEr0kVErU1`FEMbLFSU(ZG5c^aGl;pdHMr3hI/\NoI/SHn
+If"WoJGk$#Jq8LOK)^H'K)L>oKE-`(L(/iZE,]`5CM@EnAn5C_r`T2'rEK,'rE]A.qHs2/s'bqe
+$&je#MM[.DL4t$SPl6mGPQ7$>R/<<JRfJoVRJ`ERQ^3s4C]/)KD>S5NDuXeTE<:0%F8g9%F`qqP
+GBeCYH?spcI=6QoJ:W<)K7nr5LPUeEMi<XVO-,ThPa.Q%R@9V8StD^MUSOcbW2co"Xfnt7Za@0M
+\[oGd^;%M$_o9X:ai_fOcHjnde'ut#f\,!5h;-uHiSrnYjlYail07O#m-X60n*olHncA@Srq-?d
+p\4[^s7u]kqtpBjrVcBfJcC<$f)L7~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\B5s60LGroORL
+jB>\g=B8F$<E8us"]JB#<)clk<;BPo<WH.u<;KTb^q[Xt]Y(ke\[])V[Bm3FZ*:F7XfSS'WMh7!
+2Dm6C/M&M,3'ono5!;%j3&iiR1bg^<0JkXE2Dm<K2(C^P2c*4F;Gp@ip/Cuhs&8\lq,78krDESm
+r_iepr_rPhr_rSiqG[;is&/nqqGI/gq,./iqG[8h!)`\m!E2tj<<6&srD<bq:JXea:f.-gs%r_k
+!)WYls%iVj!)NSjr_`Yk!)NSjqGI8hs&&_k!)`JepeUlas%iSgr_NPjr)!\q:JX_\:JXab:]F2h
+:B4/^:]F8h:\IWb:]!ug:]4,c;>sAj;#aD`;#X8g;"dcc;#F2h;?9WknPB0[s%iVjrD<et;,U7h
+;H$Ne<;f_u<)lpt<;ohr;Yj>h;ufkq<:3Zk;Gg:h:f1"`9M>=Vr`T2'rEK,'rE]A.qHs2/s'bn'
+r_Wr!;c-Cg92e_dr_r_or`/kqrD`hsr_ir"<`N*urD`hsr_rbprDiksr_rT-rG;IMqelFPs)@pV
+!ci@'rcE1'G'8(RG^4R\H@($fI=?ZrJV&N,KS>/9Ll%"IN/`mZOckomQ'Rf*R[]h=T:qsRUo(&g
+WiN5'YHY==['mHS]"G\i^VRe)`Q$!@b0/&TcdC1ieCN7(g"P3:h;@/LioB+]k3(sml0I^&mI'H3
+nF?MK!V>s_o`Fj]p\ssfq>^<gqu6NlrUg)?s+14$s*t~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s6'IGrT4^R
+jQ+.j\?rQGYH=k*W2QShV#@(gUApqcUA1G]T`:VbSt,bMs.'(Z8"?'<]Y(ke\[])V[C!9GZ*:F7
+XfSS'WMl_lS<8haJ:N6*B!/24VPTiPQB$u_KS+f%I"d<2Ll7+KNJaLMOHb*CKo(hRPPLC@POjt3
+Oo(7<O8b.CO,f9^NfO+"s,d/>"-/G'OSt7?Nr=q;N;AM6N;e_;MM[1GreLB*re:?)s+UB(qh=d!
+s+UH*re(-%rIt9+"GMM^K7a&Q!.b'"!J5n$K)^B'J:E(IIenQmIK"WoIK"WnHi8?jHMr-hHN&3g
+GlE!aH3/G>HN&3eGlE!fGQ<$gH3AM>I!^2<Hi86jHiAEgHhi!fH2MshH[>[:!IB+lH2r<kHiSTl
+I/\QnHiebHJ,OoqJ+eEmIfY(Nrdalsr.=s$s+CE*K`-W)L'!-dM>iA5Mi@Ll!07&>!K`BAOSt7?
+OSt=APPg[BPl[5=rg*SN#FLpIR$a;/RJ!$KS,JoXT)YDmNIZA&H$==LD/=$'Dcp6B>5_\%>l@t,
+?MRt-@/XO5\,Wl<[C!=?YQgoA`5T^8`r=$Ya8jB\b6#o4c2#ZVcN;D9bl5faanKTLD#S;KDZ=YT
+E;jkWErU4\FT6I`G5c]0G^4U]H[L6iIXcluJV/T.KnbA=M2I4MNK9-_P*;,qQC+)/S"6.CTqS6W
+VPgAmX0&M-Yd1UC[^WfY]Y2(p_8=.0`lQ9FbK\>ZdF-Oof%8R.g>(N@hr*JRj5f@bkNM0qlg4!*
+mdKW6nac8Bo^qhLp@e7TrqQNhs8)Zjrqu`noDX=@JcF=$J,~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s6'IGrT4LL
+jQ)YnP`h/hNJrepMZ/G4M#N2,LB!#/LA-E#K`$H&K)C3"K)`J9]=GJ^[^NTNZa-j?YHG"/X/`.t
+Vl"NOC1CX[@UiGjJ:2ciG'%\>C1q-f?sR.=B)cKPBPM6qHB35uD/XH=HMW*iJ,artIIhj]HN8Hk
+Hi&3gHiJElHiJHuH[L3fH[:!`qfr-d!I/n]GlN'gGQ;seFo-7^F*)O%FnTqOFTQZ+ErC(OErU+a
+E,T]7DfBW5q/H@Ps).aQqf)IOrbhaSrGMLNrGMRN"DhjhCi0,eqel4HrGMRN!,hdSn8A)@q/64L
+r,24H")r0rDYe8OE;OSQE;jeTE;aeSE;";KDujs!qJcd]F)uGGG'8"MqK;g]rce9brH\?frd4Tk
+rd=corI"Zpqg\Qp"+buRK)U?#K)^K'K)UDoK_gE6KmRfYE,KN.B4kge@qAeGr`]8)qHWu)rEf;,
+ra>\5rf-r9!fDhjre:K%Q'D33rKI;JnX06B!1NbR!1NnTr0RMOQM51nD#S;KDZ=YTE;jkWErU4\
+FT6I`G5c]0G^4U]H[L6iIXcluJV/T.KnbA=M2I4MNK9-_P*;,qQC+)/S"6.CTqS6WVPgAmX0&M-
+Yd1UC[^WfY]Y2(p_8=.0`lQ9FbK\>ZdF-Oof%8R.g>(N@hr*JRj5f@bkNM0qlg4!*mdKW6nac8B
+o^qhLp@e7TrqQNhs8)Zjrqu`noDX=@JcF=$J,~>
+JcC<$JcF!pnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\B5s6'IGrT4@H
+jQ'HG=BAQ&<Vobq<<?-"<VKJg<W6#!<W5tk<WB]K]=GJ^[^NTNZa-j?YHG"/X/`.tVkuC01B&g@
+/MB"M5s@Ls4?>J^2Dm6E0eY4;2)R<Lr\Y'<3'To,:/Xnc;H-Wp;u9Jm;uTYp;tj8f;ZK_n;#jMj
+;tX&g;tj2h;ZTcpr)3Pn!)iVis&&kr;Ya2i;Yj>h;?0Sm;?9]qoi2#l;Z0Gs:esnb;,C*g;?'Jm
+:B45j;?'Gk:]O;j;#X>k:]O;j;#4#h;#X>k;#aDe;#X5j;#F,g:&n)g:B"&h;#=)t:esk^:JX_\
+:JX_\r_EMhoM>H_rD3,`r_NGgs%iSiq,%2i:J^pc!)`;`r_NDfp/1fcrDEMk!Du\_:BF9e:]=2c
+;?'Po;ZTirpf.2j!*&qt!*&qrs&/Ykr)E\pr`&;a&QDb1;G^1e:f1"_9M8#N7p0!o>5_\%>l@t,
+?MRt-@/XO5;#X;m;H*Ql!D?Aj;ZB\n<;onr<;]_r<;oet<E<-!<;okt<;ohp<;fhs<<#nkC]/)K
+D>S5NDuXeUEW:(ZF8p@^FT?UaGB\:WH?spcI=6QoJ:N3'K7nr5LPUeEMi<XVO-,ThPa.Q%R@9V9
+StD^MUSOcbW2co#Xfnt7ZaI6N\[oGe^V@V%`5Ta;aihlPcHsteeC<($f\5'7h;7&IiT&tZk2tjj
+l0@U$m-X60n*ol<o(2MGp%A%Pp\4[^s7u]kr;6KkrVc?eJcC<$f)L7~>
+JcC<$JcF!pnc&Lcr;?HhrqcWir:p<drq?<`s7H?_rUL$[nF6DFs6]mSrTjUOlK\B5s6'IGrT4^R
+jQ,@]\[AcJYH=n+WMcViV#@(fU&^nbUALVbTV;@Xs.9FcSXc7AqOIDO4h.r/[C!9GZ*:F7XfSS'
+WMl_lV50l=I=Hj&B<A,0VPK`MQ]I/_KS+f%H\I93M2R7KNKoIC\9N@NKoD,mPPLCAPQ$^FOnb+2
+Oo:C>O8b1>O8P%;NrY:?O8b1:O8k4CNK0!XN;AM6N;eb8M?/QireLB*re1K.K7nr4rIk$$pP/^%
+re19'r.P$&s+UZ1KS4u0rIFs!rdbE.JV&N+Jq8K'It.EGqgSTprI+Zms*alord4Wl!.4ZjrH\Eh
+rd"Herd"?ds*Ocl!dK!9qfr*crceEgrd"]mH[L0drHnKh!.4]mpj;j`s*=Qhs*O]is*Ocl!.4]m
+!.F`lrdFcn!e#QJrIFfqp430m"Fu&SJ:RNJr.=s$s+LE)r.Y0*s+pW2!fW+tr/L`:s,RPLO-#Ea
+O,o<^O-#J&OT:R@Pl-gEQN!3PR$j<>QiNQIRK/lUSH,8[T+$j4I=-?aFE228D/=.h>5hb%>lJ%-
+?MRt-@/XO5@fNn?[^WZO[/R96Y/J8t`Q#ps`ra?(b5BE_bl,f`cL]?`cHON3bQ#]aCA2NBD#S;L
+DZ=YTE;aeVEWC1[F9-N-rc`""H$Xd`I!pElIt3'#JqJ`1L51SAMMmFQO,oEdPE_>uR$jD4SXuII
+U8+N]Vl6VrXfen4ZEpsI\@K2`]t_A!_SjF6aN;WLcHaeadaZguf@em4gtgiFi8N_VjlY^gl07L!
+m-O-=mfi4No()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$ec1.~>
+JcC<$JcF!pnc&Lcr;?HhrqcWir:p<drq?<`s7H?_rUL$[nF6DFs6]mSrTjUOlK\B5s6'IGrT4LL
+jQ,@]Q'7>jNJrepMZ/J4M#W81L&d#.LB!#/LAQZ)K`6]'K`6W'K)C2sJhX^C[^EKKZE^X;Y-"e+
+Wi;qpVPU)`@U<MQ@on51I!^-]F)c&3B4PL\?!_,UAnYlWBaJcuO,RgkEH6;Oq0r<ms*jrqpO)[]
+rd=]lqgA0cs*Xin"akZDH?sl6GlN$iG^8n*s*=Tg!-eEbqfDm\FEIG'p2p%O!d&L(rH%UOs)A9_
+DfBZ6E,T[jE;skVDZ"GME;XYRDZ=YRDYnANDZ4MQD#\8OCi0/f!,_UNq/-(JrG;OPrbq:DqJYtC
+qelIRrGMdWDf0IhDZFbRDuO_TDuO_SEVseLEVj\UEH:nqs)J<bFEMbMF`dJ&s*"?brHS9drHeEh
+rI"Wns*XcnqLAKp"+buRJGt,uJc^RVK)UDpKE-`&LAll8Ir]LIDf0B)B4YU`Ac5g3>PVP'?2\+*
+?iFI3@K'a9NW4n<MM[/gL'!'oPl-gGPQ@&9nX06B!1NeSs-iqTr0[M!pM9_Drb_RNs)7pVrGhjX
+!-A-]!HiSbG@u/GH?spcI=6QoJ:N3&K7nr5LPUeEMi<XVO-,ThPa.Q%R@9V9StD^NUSOcbW2co#
+Y->.9ZaI6O\[oGe^VI\&`5Td<aihoRcHsteeCE.%g"P39h;7)JiT&t[k2tjkl0@U$m-Xf@"n;'Q
+o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+14#s*t~>
+JcC<$JcF!pnc&Lcr;?HhrqcWir:p<drq?<`s7H?_rUL$[nF6DFs6]mSrTjUOlK\B5s6'IGrT4@H
+jQ,@]=BJW'<W#hn<VKJj<<?-"<W,r"<E)rf<B[k#[^EKKZE^X;Y-"e+Wi;qpVPU)`/hAV-0/l6a
+5!D+l3B9&X1c$j@0/#.=2)d?L1c.-R5Yb!J;,C4jr`&kqqbmDls&&hqq,I,f!)i_l!)iYloMPZf
+pJUuh!E)ko;ZBYq;Ya2g;Ya2i;Yj>h;?0Sm;?9]qoi2#l;Z0Gs:esnb;,C*g;?'Jm:B45j;?'Gk
+:]O;j;#X>k:]O;j;#=,i;#X>k;#aDe;#X5j;#F,g:&n)g:B"&h;#F2j;#a;n:/=Y\r_NPhn5''\
+rD3&^!)NJgs%iSiq,.,e"&Vlk;=RK^:]+&_;>sDj;>jAn;,HXUrD<;es&/kq#?4W$;cH[p;uTbp
+;ZKer<<-"t;u]bk;uBVp;u]h`;uK\r;uTW";Gg1a9M8#N8c;il>PVP'?2\+*?iFI3@K'a9;#X>l
+;uTVp:fI?ks&0#!;cH`p<W,np<<-"t;Z]s"<W5ts<W,kp<;fhs<<$_-C]/)KD>\;ODuXeTEW:%Z
+F8g7^Fa!b.B6\]JH@($fI=?ZrJ:W<)KS>/9Ll%"IN/`mZOckomQ'Rf*R[]k>T:r!SUo(&gWiN8)
+YctF>[C3TU]"G_k^qmn+`Q-'AbKS8Wd*^:ke^i@*g=tE=hVd>Nj5]7`k3)!nlKdg'mJcPXnF?)?
+oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcF:#J,~>
+JcC<$JcF$qnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sUs6]mSrTjUOlK\B5s6'IGroX7B
+!9F.>%H=h'Z*1:2Wi;qoV5:!dU\LS]U&:S`T*1aVS=H/LS-#1MSGJ`TS,f&XRQ.XZZ*:F7XfSS'
+WMl_lV50l\TmqcNB<A,2VP0KLR#m5]L4al#H\@-1M2R:ON3T(Ufm/(#LQ.MoP5LIBOopo2P*,O&
+nWEg4qi:uBO,o<]NK0%pO8Y+:O8Y+=N<"q6N<"q:MuSY9M26ueL\li+K`m']KS>-YK_gDsLAuu,
+K`6W&K`$Q(L'33`KS+mPJc:6+K7\]+JUi6"rI4Wn!.Olprd4]ord=Zkrd4]mrHeEfs*FZirHS?f
+q0E6lH?sj]H$T:3rd"Kfr-ABjI/J?iH2r<kI.hpbHN/9hHN/<lHN&0jH@,X;"FGNDI=;!?s*alo
+!e#NIr.+`qp43-ls+10"qgnZs"bVJ]K7ejUL&Zl/LPUfdM?&S5N!53"NK&sYqN(Z:s,[2ArfI2D
+qNUoCqj.8Ks-WhQrg3\RopYoNr1+OnT:_^HSXG+ZI!KmWE,BQ0D/WT]rEK,'ra#J/q-X,/rF,V5
+s0i->\$`TMricI,`5MYorPnu\aiaP)!6k>brQb#\!mSs5rlY;`rbD1CrG;IMr,2OQs)@sWs)J*\
+rcE+%G'8(RG^4U]H[L6iIXcluJV&N-KnbA=M2I4MNK9-_P*;,qQC+)/S"6.CTq\?YVPgDnX0&P/
+Z*UdE[^`l[]Y2(q_Sa=2a2lEHbg+P]dF6Uqf@S^0gYL]Ci8EVTjQ5Oekiq?sm-O--n*fc9rpg*]
+o`"Lbp@n=\q#C0iqY^6hr;HTdrdk*#s4.."~>
+JcC<$JcF$qnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sUs6]mSrTjUOlK\B5s6'IGroX7B
+!9F.>#3(i0O,]*VregZ2!/UW0#_n+iL5(J=L5,V[s+LB*rIk0&rIXruqL\]t34#oqYck43XK/A#
+W2HMhUnaZX?t<hKJpr,pGB@nHD/!Wm@:*;HAnG[hB5)*oJ9uaECi499G^o:5s*aWhom?^drHnBg
+qKr3hrHnQj!."Hds*4ZjH$T%,s*=Tg"*\p2Fng(VFnTqOFTQZ+ErC(OErU.VE;skPE;skVDZ"GM
+E;XYRD?+VRDYe;MDZ4JVChmg&D/K8g!,_XOq/-(JrGDRPrbq=EqJYtCqelIRrGV^T!cMsoqeuLR
+qeuLRrbqdTr,M[Sp2TqJqJlLTs)S?cG'8"MFSg4[G5ZX`GQW59H$T@7rHnNks*aoprI+NlqLJNq
+qL\a"oS!6uqM+s&%YJkBEGfW0BkCpd@q8bHrEK,'ra#J/q-X,/rF,V5s,I&:!fDhjre:E,qN_&E
+!L9#HQiNKMR/E?PRerTSRf8`RR/UjpC]/)KD>\;ODuXeUEW:%ZF8g9#F`qqPGBeCZH@($fI=?Zr
+J:W<)KS>/9Ll%"IN/`mZOckomQ'Rf*R[]k>T:r!TUo(&hWiN8)Yd(O@[C3TU]=bhl^r""-`Q-'B
+bKS8Xd*^=le^rF+g=tH>hr*GPj5f=akNM0plKmm)mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZWm
+o_sFAJcF:#J,~>
+JcC<$JcF$qnc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sUs6]mSrTjUOlK\B5s6'IGroX7B
+!9F.>"6*Ea<rQ+t<<#qu<rH%o<;T\q;ufqr<rQ(f<W5oUZa-j?YHG"/X/`.tVl$;dUS=G60/#1K
+5X.Fq4?5G_2`!6D0J>(91c73K2)R9O4Z?;6;,U7hrD`_o!)ibms&/kqs&&hqq,I,f!)i_l!)iSj
+lVd^\!`DrqrDNYos&/\jr)3Pl!)ibm!)iVkqbdDkrDEYp<:s5l;c<Qk##J)l;,L.dr_`\ls%`Vk
+r_`\kqG@/gr_NSjr_WJhs%r\lr_NSlp/(`a!)WVir_EJhrD*Agr_WMis%ikp:/4S\:B"&h:@V-Z
+;#X8X;#a>i;#*uf:BXKk:f1*\;#X8g;"dcc;#F2h;?0S]:]+&b;#jMg;uTbp;ZKer<<-"t;u]bj
+;uTbp;ZKe`;ZKep<<,ts;$p6!:esbW84uNX>5_\%>lJ%-?MRt-@/XO3@fK:(;?'So;#sKlrDNYp
+!`N&tr)N_qr`'#!<E/rr!``9$rD`esrDW\pr)E_rrbD1CrG;IMr,2OQs)@sWs)J*\rcE+%G'8(R
+G^4U]H[L6iIXcluJV&N-KnbA=M2I4MNK9-_P*;,qQC+)/S"6.CTq\?YVPgDnX0&P/Z*UdE[^`l[
+]Y2(q_Sa=2a2lEHbg+P]dF6Uqf@S^0gYL]Ci8EVTjQ5Oekiq?sm-O--n*fc9rpg*]o`"Lbp@n=\
+q#C0iqY^6hr;HTdrdk*#s4.."~>
+JcC<$JcF$qnc&IbrVZNhs8)`jr:p<drq?<`s7H?_rpp*Zs7$$Vs6fpSrp0^PlK\B5s6'IGroX7B
+!9F.>s5FIGZEUI4X/W"pV59u`rM0.^rLs7a#+qQ]T:VXFrgX._S=H(<SGJ]TSGo#RRPV(IX/`.t
+Vl$;dUS=HTT:TbuVPU)^R[0.rMM6b7H?t:"LPUeDN/MJE]9/D,JVArAPEYj+r/puArK6o=mu[U3
+qMt`=O,f8"N<#"8O8Y+9O8k7?NW4t6N<"q9MZ\inLku%cqhG-)"GDD\KSBAXqM"Zus+UH*re(0&
+r.Y0*"bhV_K7\^OJc:6$KDpH'JUm`LrdO`o!.Olprd4]ord=Zkrd4]mrd+Ngs*FZircnBeq0E*h
+H@#R9qfr'bs*+NhrH\KkI/A9jH3/G>HiAEbHiJElH2W'gHi86iHiJBlHiABmIJ\EkIK"TqIXckG
+JGaokJGt$!J:[]MqgnZs"bVJ]K7ejTK`d'bLPc"f!fN"qr/CZ8!06o:rf7#>s,d8C!KrZCPl6mE
+QM[$IQiNQJRK8nJr1+RoT:_^HSXl@AL44PsG'7hBE,09.>5hb&>l@t-?MRt-@/XO1@Kp>O[^WZO
+[/R92Xi/0W`VmgYaN;U&b5fc`c2Q#ZcN;A8bl5faCA2NBD#S;MDZ=YTE;abXEcZ=$FEDYKGB\:V
+H$Xd`I!pEmJ:N3&K7nr5LPUeEMi<XVO-,ThPa.T&R@B\:StD^NUnjlcWN*&%Y->1;['mEQ\\#Mg
+^VI_(`Q#s>b0/&TcdC.heCE1'g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssf
+q>^<hqu6NlrU^#>s+14#s*t~>
+JcC<$JcF$qnc&IbrVZNhs8)`jr:p<drq?<`s7H?_rpp*Zs7$$Vs6fpSrp0^PlK\B5s6'IGroX7B
+!9F.>s5F7AOH,9XMi.Cg!/UN-!euJcreCB*re1<*rIk-%rIXruqL\`u!.t-"+0DWFWi;qpVPU)`
+U7n6PSl^JjH[9pXEGfN(AR](S?2J7DC2$UkLj"5bDfU#HIt.$<s*aWhom?^drHn?fqKr6irHnQj
+s*=NercnNhH1Z@\H2i*kGBS+OpiQFVp2p%O!d&L(rH%UOs)J'X!-/!Ws)7^Ps)7pT!H2rVDu4MO
+DuOVSDuFSMDuOYQD$4ZjCM[kdD#8,HD>\;MD#eJPDt.`ADtIrEDuXeTDZarsDJo;h!-%gRrc%jT
+rc%gUr,DCMqJZITEr9qVErU1aFEVhMFEID&rc\6aqKW$crd+NirHnTnrd=]n!.OcoqLJQrqL\a"
+oS!6uqM+s&%u,jmFE);=DJNouB4GI_>5hb&>l@t-?MRt-@/XO1@Kp>%Mi3ILM#N,/L&.)6PQ@&9
+pm;&Jr0[AL!1NeSs-iqTrg<Y!pM9_Drb_UOs)7pVrG_mZF*%>&FEMbNGBe@XH?spcI=6TqJ:W<)
+KS>/9Ll%"IN/`mZOckomQ'[l+S"#t?T:r!TUo(&hWiW>*Yd(OA[^N]V]=bkm^r"".`lH0CbK\>Y
+dF$Fme^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`noDX=@
+JcF:#J,~>
+JcC<$JcF$qnc&IbrVZNhs8)`jr:p<drq?<`s7H?_rpp*Zs7$$Vs6fpSrp0^PlK\B5s6'IGroX7B
+!9F.>s5F(<=8c,'<)Z^q<E<0!<VfYq<EB&ur_rktrDiu"<)i?e!*&hos&:kXXK/A#W2HMhUnaZX
+TV%f65s@Iq5!1ea2`<NK1,(@<2)R3K1c7*=2*OK':/Fbb;H$Ln<;]\p;Z9Pi;?0Yl<;0;k;Z0Gm
+;YO,e;?0Sb;Z9Sq;H*Nlr_iepq,.)gs%rborDESmqG[8h!)`\m!E2tj<<6#rrD<bq:Janc:f.-g
+s%r_kr_W_n:J^g`r_`MgqbdAir_`Yk!)`Gds%`Vkr(m;e!)NPgr_NPjqbdAi#u=;l:JOY]:JO[S
+:]F8j:[M!Y:]+&c;$'Qi:]4)i;=RK_:]!u_;>j>i;>jAn;,H[Vr)!/cp/CujrDN\qr`&qtr_rhp
+pf%/ks&/ts;cN*^!*&hq%TZM);,^:g:eaYX84uNXr`f5(rE]D/q-X,/rF,P3!Fnt*;?'So;#jGj
+;ZB_r;ZKep<W5ts<<Z?%<)Z^pr`/nr!EE+u;uK\n<W-\,C]/)KD>eAPDuXeTE<:0%F8g9'F`qtQ
+G^+L[H@($fI=HctJV&N-KnbA=M2I4MNK9-_P*;,qQ^F21S"6.CTq\?YVPgDnXKAY0Z*UgG[^`l[
+]Y;.r_Sa@4a2lEHc-FY_dF6Uqf@\d1gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DDo`"Lbp@n=\
+q#C0iqY^6ir;HTcrdk*#s4.."~>
+JcC<$JcF$qnc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs6'IGroX7B
+!9F.>s5F=Ci308aX/`(qrhTUjrM0.^rLs4`s.B=_s.0%W"e1sLS!ofAS+rHNR4P;7VPU)`U7n6P
+St;IAV59`OQB[DcKS4o'H\R92MM[.IN,=okZZpkLLPq>pPQ$a>OoLU@Oo1C1OT:L=NrY4<NVSY6
+Nr4t<NrP+=N;AM6N;\Y:MM[.FreLB*s+LT/K7no3rIk$$pP/^%re19're10&s+U]2KS4r.K):,t
+JcLH&JcUFQrdXrsqgSWsIf4]pI/eWoI/\KlI/eNpH@'u:H2i3iH2`'fH2`*tH[:!bH@(!bH?a^\
+qfr'bs*4Kgs*F`nr-SEhs*O`moQp[dH$Xc7HN&6kHN&0jH@,X;rd=`or-\Klrd4cqIXh<Hr."Ej
+s*k0%JUr?%qgnZss+:H-K7ei1r.P</LPUeEMZ/P2N!,-#NfT5"O8P%<Ns(Q,Ockq)Pl-gDQMQsJ
+QiNQJRKAtKSGf#YScPITrLFOlT:CjhI=$0]Ec5l2C2e?#>P_V(?2\++?i=C3@JOC4@g0?M\$`WN
+ricR.`5KX6`r=$Ya8sE*r6#)aqp#,co$7H`bfn8Rr+btArbVRNr,2OQs)@sWs)J*\rcA0`G5c]-
+G^4U]H[L6iIt3'#JqJ`1L51SAMMmFQO,oEdPE_?!R$jG5SXuLJU84W`Vl?\tXfnt6Za@0M\[f>b
+^;%M$_o9X:ai_fOcHjndeC<($f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*ol<o(2MGp%A%Pp\jme
+q>^<hqu6NlrUg)?s+14"s*t~>
+JcC<$JcF$qnc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs6'IGroX7B
+!9F.>s5F.>i/WfrMu/A2M"ui)LAlo*K`?`-KS+sVKDgDuJbjulJJtJbVPU)`U7n6PSt;IAH[9jW
+E,TN(ARo1T?2eIHBP2!mBjPq<M/$pIFEi65J,XopIJSElIJA3_HiJKlHh`!bHN8HkHiJBlH2Mpd
+Gl`/8oQ^@\s*+WiG'.s&FSp:TFSBnZFE;L$F7aMQEW9tXEW0qWDu"APDuX\WDfBW5qJc@Ns).jT
+rbhOMrbh[O"DhjhCi0/f!,_UNs(qaRrb_OMrG;OPrGV7EqJYtCr,;USrGV^Ts).[Os)@mSrc%jT
+rc%gUr,D@LqeuRUEr9qVErU1_FEMbLrcJ$[rc\6aqfr-drHeEhqL&9j!.OcoqLJNqqLS^"oS!3t
+qM,!'s+V,@LkKnjE,KN.C1q6k@q04W>P_V(?2\++?i=C3@JOC4@g.jMMi*CJre:N/Q'I[6Q2[!K
+Q'_95s-N\Oqj@GQqO7JRrgEeRr+btArbVRNr,2OQs)@sWs)J*\rcA0`G5c]-G^4U]H[L6iIt3'#
+JqJ`1L51SAMMmFQO,oEdPE_?!R$jG5SXuLJU84W`Vl?\tXfnt6Za@0M\[f>b^;%M$_o9X:ai_fO
+cHjndeC<($f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?
+s+14"s*t~>
+JcC<$JcF$qnc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs6'IGroX7B
+!9F.>s5F(<i;HX[<)Z^q<E<0!<Vf\o<rQ+u;ufqs<WH/!<:Nuf<;ohp<<#ns<#V^5VPU)`U7n6P
+St;IA5!M.j3B9&V1bga=0E*g@2Dm<K1dXDl9MA2Y:f:4i;H*Qo!)renrDEGi!)r_npJV&ir)!Gl
+pJ^re!)`>cr_ihq;uKVn;ZK_k;>jDm;#jMl;#jMj;u9Gm;>jAn;cNEi!E2np;$Kim:f1(d;#X>l
+:]X?gr_W_n:J^g`r_`\l!)NSjqGI8hr_`\ls&&Jds%`Vkr(m;e!)NPgr_NPjr_X/';,L.d:JO\]
+:/=\^:/:=Tr_WVjmnj$[!`2ZgrD<;er_NMis&&>`r_NGgp/1fcrDEMk!Du\]:]!ua;#jMf;ZKeq
+;ZKer<<?,u;uT\h;u]eu;c6NY;u]ho<<H9';,[?i!`2Zdr^m8`6sEml>lJ%-?M\%-@/aU1@fKpA
+:f1(d;cEZm!)WVl"]JB";c?Zm<W?%t<W?%t;ZKer<W,kt<E/rr"&r9"<;fhpCA2NCD#S;LDZ=YT
+E;jkWEWC1[F9-N-rc`I/H$Xd`I!pEmJ:N3&K7nr5LPUeEMi<XVO-,ThPa.T&R@B\:StMdOUnsue
+WN*&%YHY:<['mHS\\#Mg^VRe)`Q$!@b0/&TcdC1jeCN7(g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3
+nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcF7"J,~>
+JcC<$JcF$qo)ARcrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>s5F@Di8C`=X/`(qVZ*FjU\UY^U&L_bTDtJ_SbeiVS,8ZNS+rHOR4NiQL4H+rUS=HUT:VXE
+S"#h:S!K%nLkLJ4H[^['MMR1HN/_h9b0kN`KSkcePQ$a4Oo1C2OoCI=O8Ot;Nr"h8Nr4q<NrG%<
+N;AM6N;\Y8MM_=gs+gK+s+UE)!/:E*q1\Qtre:B*re(3'qh>')"bhV^Jq8ONJbam%JUi9#IsukE
+J,WCD;ufkq<!cQ*='/U-='&a9rF#J.rEoS2ra5k8H@'sbrd+Tiqfr$a!I/ngH3&A?qg8?hrd4Wl
+oR$U`r-J<grH\Eis*=Zlrd4]oqgABks*OlrIXh9GrI=Nks*k*#JV!fNqgn]ts+C?)!eZ/Zr.Y0*%
+YojsMMd=LMi3OPN/WaUrJpo=r/Uf<s,d8Cs-*;Dr07;KQ2R$KQiEBOQiEHQRJ30MRfJuVSc55ZS
+c>8lT:VX5I=6BeG&qV?Chn$:qHX#*rEf>-ra>\5qI9D5s'u8@\$`WNricR.`5KX6`r=$Ya8sE*r
+6#)aqp#,co?RNac-4E/CA2NCD#S;LDZ=YTE;jkWEWC1[F9-N-rc`7)H$Xd`I!pEmJ:N3&K7nr5L
+PUeEMi<XVO-,ThQ'I]'R@B_;StMdOUnsufWN*&%YHY==['mHS]"G_j^VRe*`Q$!@bKS5Vd*^:ke
+^i@)g=tE=hVd>Oj5]7`k3)!nlKdg'mdKW6naZ2@oCW%T!quB_rqQNhrqcQirqu`no_sFAJcF7"J
+,~>
+JcC<$JcF$qo)ARcrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>s5F.>i8BUoMu/A1M#2u)LAuu+K`6Z*K`$K#K)1&rK(aa:?>a:]V50l\TqS*MSt):>R<E[k
+Ch[KmARJbNB4koWB*rBf@W7I%Bl7s7H2N0kIf+WjIf=ciI.hpdI/SEeI.VadH?oC4s*=-Zs*=Wh
+!I&_dFnp.WFnTqOFT?O\F7aJQEW0nWEW0nWDtn;ODZt#sDfBW5r,DL*oh>?Xs&/qr;uKSp<)`co
+r)<Pl!`<fPrb_RNrG;OPr,;.DqJZ"Dr,;RRs).mVrbqgSqJQ@QqeuIQs)7mUr,M[Sp2TqJqf2RT
+#BP!/G'8"MFSg4ZG5ZXaGQ`58G^4T5HN&9eI/eWpIenQjJGk&rK(FZpL&-Q'L&Zo-L]</>LO!lY
+D/O0(B4b^c@qb^Dra#J/qHs50rF,P3rF>k<s,6o7!/UW/",3#*QMd$JPQ@):pmD&Irg<SN!1NbR
+!1NnTqeGk@rbVRNr,2OQs)@sWs)J*\rcA0`G5c]'G^4U]H[L6iIt3'#JqJ`1L51SAMMmFQO,oEd
+PEhE"R$jG6SXuLJU84W`W2ZeuXfnt7Za@0M\[oGe^;%M$`5Ta;aihoQcHsteeCE.%f\5*8h;7)J
+ioB(\k2tjkl0@U$m-a?2nF?&>o(2MQo`Fj]p\ssfq>U6gqu6NlrUg)?s+14"s*t~>
+JcC<$JcF$qo)ARcrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sU!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>s5FIGi8@U7<E)mq<)lq!rDi\n!*0#!s&K%t!*/qt!``3!nl>Tes&8kqr_jmc0J"]MUnaZX
+Tq@pJS=?"94?>M^2Dm6E0J>+:2)[Dm2$l*+4[;t>;,:%frDNSmqbmAiqbdDmq,I,f!)i_l!)iMh
+r)3MkoMY]fqGR>l!)iVir)3Ag!)iYlqbdDkrDEYp<;';n<)Z]n;$Kim:f1(d;#X;o:esk`r_W\m
+:\did;?'Gm:]=2g;>rKQ2u5K62uY`82uY];4?GScpcS=7"ZoRZ;,L0g:]F2i;#a;[:]F8j:[_-[
+:]!ua;$'Qi:]4)i;=RK_:]+&_;>sDi;>jAm;!h'U;#X;l;#O8b;ZKeq;ZKer<<?,u;uT\g;ZTir
+r_i#[!*&hqs&T/$!*9(r"Ahrk;+pj[!(?Zgra#J/qHs50rF,P3rF>k<s%rho;cEZm!)WVl!`N&t
+r_r\os&Atts&Atr!*&qtrDWet<;of"<)lms<E8p2pM9bErb_RNs)7pVrc.sY!-A-]!HiSbGA_YN
+H?spcI=6TqJ:W<)KS>/9Ll%"IN/`mZOckonQ'[l+S"-%@TV8*UV5L8kWiW>+Yd1UB[^WfY]Y2%o
+_8=.0`lQ9Fbg"G[dF-Opf%8R.gYCWAi8EVTj5oFckNV6rlg4!+n*fc9nac8Bo`"Lbp@n=\q#C0h
+qY^6ir;HTdrdk*#s4%(!~>
+JcC<$JcF'rnc&IbrVZQirqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>&)uR,i8EMMX/`+rVP^2dV#I.bUALVaT`1S`T)YA]S,f&WS-,7LR@4&Cr1!JMrL"XSP_F['
+TU_aMTq@pJS=?"9R$a5#Lkg\8IX?BoreLu@M2R@6G,<Z5JqSuCrKI/Bm#h70s,d;Cnr`j3r/Ui<
+rJ^f;qN(Q7rJpr=rJ^f9qMkN6regf7M>i>1L\uo+L&Q`*L&Qc$L%g?$L&Zi+KDgK#Ka3?dKnP)1
+JV*iO!J5n%JcLH%Jd-dVJ5fNJ<;fbq<;ohn;ufkq<!cQ*='/U-='&a9rF#G-ra5\3"CGPE?X<V:
+r`oM/r-8-b!I/nhHN/<lI/J?jH2r<jI.VaeH?jf6HN&6kHN&0mH@'saHiAEmIJeKlIK"TqI=HbF
+JGaokJGt$!J:[]Mqgn]ts+C?)s+:<)r.Y0*$AXFoMMd=LMi3OPrepi:rJpo=qi1Z;rf@2DP*>a,
+q3CrF!13YMs-EeSR@3f<s-s%YrLNqZrLNt[&YGYdT:V'oIX??aF)c,5Ci@#b>lJ%-?M\%.@/XO1
+@f9g8AH0.=[/dT5YQ_/I`5T^8rl>&[!6P,]!6kGe!mJp6rm(,]!m]$6qeGk@rG;IMrGMXRs)@sW
+s)J*\rcE%#G'8(RG^4U]H[L6iIXls"JqJ`1L51SAMMmFQO,oEdPEhE"R$jG6St;UKUSO`aW2co"
+Xfnt7ZaI6N\[oGe^VI_'`5Td<aihoRcd:(geCE1&g"P3:h;@/KioB+]k3(sml0@X%mI'H3nF?MK
+!V>s_o`Fj]p\ssfq>^<hqu-HlrU^#>s+14"s*t~>
+JcC<$JcF'rnc&IbrVZQirqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>$0'q&i8EMMMi3JiM>i>.L\c`*L&Qc)K`Hf(KD^>sJc:8oJK.s5@pi>\F/#A%T:VXES"#h5
+R$VT#AS#7W?!_.AB+&BeBk(_$T58FcG'a+:r-nQlq0r?lpO*!f!.+Hfrd=ZkpjD^\!IB%gGlN'f
+GQ<$_GlN'hGQE#3rcS!XrH7gUpN6IXqfDCM!-/!W!-/!W!,qXOs).pUDuE<.9DqQ[9D2'Y9E%lf
+;?9`qrDNPlrDE\o;H!BhrG;OPr,;IM!,_OLqeu+Eo5FYHqJZCQr,;RRrbqdTrGhaSpMp%Kqf2RT
+#BP!/G'8"MFSg4ZG5ZXaGQ`58G^4T5HMr3dHie_FIenQiJGt,sJcgXYKS0#PrIt*&!/:E,s+gT0%
+Z-!hEcH&9D/3cqA7T2:r*95,rEf>-ra>\5qI9D5rF?%iMi*CJre:N/Q'I[5Q2d'KQM6dGQi<BLR
+JE<RR[KT@CA2NBD#S;MDZ=YTE;jkWEWC1[FDc5EG'A.TH$Xd`I!pElJ:N3&K7nr5LPUeEMi<XVO
+-,ThQ'I]'R@B_<StMdPUnsufWiN5'YHY==[C3QT]"G_k^r!t,`Q-'AbKS8Xd*^=le^rF+g=tH>h
+r*GPj5f=akNM0plKmm)mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@JcF7"J,~>
+JcC<$JcF'rnc&IbrVZQirqcWirV6Bds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroX7B
+!9F.>#iah%i8EMM<E/rr!*&hqqGdJprDj##<)clq<rZ/"<:Nu`<;f`;-86r"0f_+cTqS*MSt):>
+R@'A.2`3BI0eb761c7-LrA=jJ6oe(=;G^:jqGR>lqbmAiqbmGmqGdJn!)i\m!)i_l!)iMhr)3Mk
+oMY]fqGR>l!)iVi!E)eo;ZBSo;Z0Jm;YsDi;?0Sm;?9]qp/M,m;uBJs:esnb;,C*g;$0Wj:Jh$f
+!DlSf;#aDl:]NBM2Z>Z72Z>Z32uko:2ZG`82ZGo>3WM8:4S_,B4?GYfr&Y'F:Jah^:@V-Z;#a>[
+;#X8j;#X5j;#*uf:]=2j;=[Q`:]!u_;>j>i;>jAm;=.0V;#X;l;#O8];ZKer<<?,u;uT\g;ZTir
+r_i;c!*&en!*&hqs&T,#%Tle0:Jt"b:JaeY8P2QLr*95,rEf>-ra>\5qI9D5rFGq*!`2for_WYl
+rDE\q<)iiqqGdMpr`&qtrDNbs<E8uss&B%ur_ir!<E3!uqeGk@rG;IMrGMXRs)@sWs)J*\rcE%#
+G'8(RG^4U]H[L6iIXls"JqJ`1L51SAMMmFQO,oEdPEhE"R$jG6St;UKUSO`aW2co"Xfnt7ZaI6N
+\[oGe^VI_'`5Td<aihoRcd:(geCE1&g"P3:h;@/KioB+]k3(sml0@X%mI'H3nF?MK!V>s_o`Fj]
+p\ssfq>^<hqu-HlrU^#>s+14"s*t~>
+JcC<$JcF'ro)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>&E;[-i8EMMhPmHOVP^2dUnn!bqP*n]s.K@`s.97]!1a"Ws-s+ZRf8`SRfAlRRK/cTRf/Wr
+J!5S;BqCiVL7t62St):>R[BJ/Q'I)XJp_ljK8GMDreh)"F*E\?H\-p-OSk=?P3S20P5g[COSP"=
+OSt=?OSk.>Nr=q;Nr"h7NrP.ANfT4mN<"q:MZJ]lreUQ/r.b3)re(?,KS9,SpP/[$s+LE)re1-%
+#DRqdKS+l-K)L6$Jq<oQ"BJT(<)rfp!EE+t;u]hq;uBVp;uTbr<<lQ+=BS^,?XNb>q-O&-s'>h8
+?sm>IrEfJ/!aJr7r*0/GrH\NlI!kj=s*F]lrI"6as*=Kfrd4Wi!IB+lHMr3kIJ\ElIK"TqI=?\E
+JGaojJH(*"J:[]MqgnZs#(qS^K7ei1r.PE2LPUeDMMd=LrJUZ6"c\P%NfK1tNW>.>O9:W.P*>d-
+q3;&JQ'R^5Q3<PAR$jB;Rf8cVSG\oXT)>/VT)P>jOb%n,H?aILE,0</Qi:7g?2e1,?i=C3@JXI3
+A,Ts;AHTEL[C#q;"g,_]`Pojra8a3\ans6]bl5lebQ,oecL]?_cHZ3#pM9bErb_RNs).mVrGd7+
+F)uGFF`qqPGBeCZH@($fI=?]sJV&N-KnbA=M2I4MNK90`P*;/sQ^F52S=Z@GTqeE\Vl6VrXfen4
+ZEpsI\@K5a]t_A"_o9U8aND]McHjnce'uq"f\,!5h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MG
+p%A%Pp\jmeq>^<hqu6NlrUg)?s+14!s*t~>
+JcC<$JcF'ro)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>$0'q&i8EMMhM[9fM>i>.L\uo+L&Zi*K`Hf(KD^?$JHLFRJUm6@/7*.%?rhDkCh063St;IA
+S!o_3Q^*hK@pr_L?=[_`BkM-o?=RSiJo,IKGC9=<r-nQlq0r<kpjE*grHe?fs*XclpO)U[!."Ec
+!."Nf!."9_s*=Whs*+HbpiQIWp2p%O!-J*ZoPsqOrbqjWpi-7,s%EAar_*2^r_*5aq+LKV"A;E^
+92#7_r)*Sp<)`cor_ihq;uKSq;,U<a;?(S3DZ=SNDYe;EDZ"DQE;4AODYe8OE;OSRE;jeTE;aeS
+E;";KDujs!rGhdVs)S9aG'8$-FSp:ZG5ZXbGlN!fGlN'fHMr3eI/eWpIenQjJGt,sJcp^ZKS+pO
+K`6]%L&cr,LAlu-M#N5>IWBFIDes0&An>I^J,W^O?2e1,?i=C3@JXI3A,Ts;AHRjJMMV7d",3#*
+QMZpJPa;'2rg3VOqjI8L!LfGQCA2NCD#S;LDZ=VTE;ad)EcZ;DFEMbMGB\:WH?spcI=6QpJ:W<)
+KS>/9Ll%"IN/`m[OckonQC!u-S"-(BTV8-VVPgAmX0&P/Yd1UC[^`l[]Y2(q_Sa@3a2lEHbg+P^
+dF6Uqf@\d1gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$
+e,Op~>
+JcC<$JcF'ro)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[N!:'RJs6'IGroX7B
+!9F.>#iah%i8EMMhGjJQ!*&epqGdJps&T,!!E<(s<piuc;ufkr<;f`H-86r"0fV$G0;5#0St):>
+R[BJ/Q'F3^0eb761c7-L1c7-W6q'R::/Fed;u'>k;u0Dl;?'Po;uKSo;u0Jn;uKVn;u]bo;#jMe
+;Zfop;,[?ioMPZfqGR>l!)iPgr_ibn!)ibms&/_mqbdDkrDEYp<;';m<)`]l"].uk;,L0g;$0Wj
+:Jh$f!DlSi:]i[92E:[orAFU5!]N"qr\sd6r\s^6!&sj7s#9s9s#g<Br]Bs=q)ngB4$5Y'3rhGB
+56!_F54hYN;#a>Z;#a>j;#X8d;$'Qi:]4)i;=RK_:]+&_;>sDj;>jAn;,H[VqG@2hs%r\l!)iAd
+!*&qts&8tsr_i\n!*&bmrDEYp<:!N`<;]bq<rQ2"=T21t:^9im:/+>Q8P]7irE]D/qHs2/raGY4
+rF>e:rac1/:fC<l;#jGk;?9]qrDN\qpJh2mrDW\qrD`es!*&qr!*&qtqJ,b?rbVRNr,2OQ!-%mV
+I<'CMFEDYKG'A.TH$Xd`I!pElJ:N3&K7nr5LPUeEMi<XVOHG]iQ'Rc(R[]h=T:hmQUo(&gWiN8)
+YctF>[C3TU]=bhl^r"".`Q-'BbKS8XdF$Fme^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8B
+o^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s3q!u~>
+JcC<$JcF*snc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6fpSrp0^PlK\B5!U/_Gk5XNC
+jSn0Lio/kSi8<GKh5I6KVPU-gV#I.dUAU_`TEUsZSt2FBr0mbXR[X,A!LfMSRfAcURf&R(J!>V;
+C7LcUM1^M<St):>R[BJ/Q'IStP'q_5LPCVAMi*F?G'][$IY*<4q31`>nr`m4rfR5DrfR/@qN:c=
+s,m8AqiC]8s,Qu;r/Uf<!fi>%oSij0regf7M>i>1L\li+L&Q`,KnP-SL%g?%L&Qc*KDpQ#KaEKf
+KnP)1JV&H(qcWr$"BST'<*&lq!EE+t;u]hq;uBVo;u]hs<<ZE)=BS^,ra5Y4!FK./?N+:4?=3\>
+!+#P0r`oV2>?kG2>6eD;>[2T%I!kj=s*=ZlrI"6a!IB%gHN&6kHN&3iHiJBlHiABmIJ\EkIK"Tp
+IXh9GrI=Nks*k*#JV!fNqgn]ts+:H-K7ei1r.Y0*#D\+lMMd=LMYrA4N;eh:NW>.:Nr>%@Ockq*
+Pl$^GPl?pKQBhB6s-EeSR@3i=rgWqXpRV2Qr1=IcJphrjGBIhDChmsT>[786rEfA.rF#V5q-s>5
+rFGh;"1P\G[/R91Xi14X!65#Ys2Y2_r6,,arltJe!6tMgo?RE^qeGh?rbVRNr,2OQ!-%mVGB.bG
+FEDYKG'A.TH$Xd`I!pElJ:N3&K7nr5LPUeEN/WdXOHG]jQ'Rf)R[]h=T:qsRUo(&hWiN8)Yd(OA
+[^N]V]=bkm_8=+/`lQ9EbK\>YdF-Oof%8R.g>(N@hr*JRj5f@bkNV6rlg4!*mdKW6nac8Bo`"O`
+p&Ojcq#C0iqY^6ir;HTdrdk*#s3q!u~>
+JcC<$JcF*snc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6fpSrp0^PlK\B5!U/_Gk5XNC
+jSn0Gio/kSi8<GKh2;#breUH,rJ(-%!ec2Xre(3%"+c&TJc(&hJLuCYCgpdQFE220@Us)BS=?":
+R$a5*Q'@Jq?X@AXAnPdiBk_!eBmXT4EH?>QqLAElr-eEjrdFQhrd4Tir-SHkr-S3doR$U`qfi*d
+rHJ<fp3?U_s*4Qf!d8^/piQIWp2p%Os)e0[oPsqOrbr![E,\QIrCmMj9h\5Q91qnU9E%Q_9E%W]
+9D;*_92&#P9E%lg;?Kco<)``ns&8qq!)rkp!)`_nqb[>kr_Wnu;,C+d;,_B3D>S5JDtS#GDZFbO
+DuX_ODZFbRDuO_TDuXeSEW'kMEVsePEW'qXF8p=_G'3e+r,qp\r-/0cs*+Kfs*=TirHn?f!e#NH
+r-n`rJ,Fg"It3'#Jbt'!K*$^YKD1&tL%g?$L]3,-M%5&VE,TZ2CM@BmA7U-o>lJ%-?Me+.@/aU1
+@fBm9AGg!@Mi*CJrItB=QBqE5!L/rFQi`S?Qi<BMR/i]ORfJoSCA)HBD#S;LDZ=VTE;ad#EcZ;D
+FEMbMGB\:WH?spcI=6QpJ:W<)KS>/9Ll%"JN/is\OckroQC+&.S"-(BTqS6WVPgDnX0&P/Z*UgG
+[^`l[]Y;.s_Sa@4aN;TJc-FY_daZdtf@\g2gtgiEi8N_VjQ>Ufl07L!m-O--n*fc9o()DErq6<b
+!;HHes7u]kr;6KkrVcBfJcC<$e,Op~>
+JcC<$JcF*snc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6fpSrp0^PlK\B5!U/_Gk5XNC
+jSn0Fio/kSi8<GKh>U=Q<;BPj<<#qu<r>tq<piuc<<#ks<;]ZF,qg_t0fV$G0.\b1St):>R[BJ/
+Q'IStOt\RH2)I0L1c7-E6q'X?:JanemSa$]!`Drqr)3Pnr)EYorDNVn!)ibm!)iJg!)iViohkcg
+qGR>l!)iPgr_ibn!)ibms&/_mqbdDkrDEYp<;';m<)`]l!DlSk;#jGk;$0Wj:Jh$fs#10B2Dm?M
+2`<Vm2Z5N52?Gfq2Z>Z62Z>Z33;kc82ubf949@T*3rV5;4S_,?48qA@3se#55<_7o4?bqnr]^3T
+r_NSjmSNmYs%r\j!)WJgr_NMi!)`8_s%iPhp/1fcr)*Gk!Du\]:\die;?'Jm;?'Pc;ZKer<W?%u
+;u]bo;ZKel;uT\[;ZKep<W6%u=8c5'=]83qrD3_p9hS&M8R,O"?2\+,?i=C3@JOC3A,Ts9AHPe+
+;cEZm!)WVl!E2tr;ta5h;uTeq<<#qu<;oet<)lrqCA)HBD#S;LDZ=VTE;ad#EcZ;DFEMbMGB\:W
+H?spcI=6QpJ:W<)KS>/9Ll%"JN/is\OckroQC+&.S"-(BTqS6WVPgDnX0&P/Z*UgG[^`l[]Y;.s
+_Sa@4aN;TJc-FY_daZdtf@\g2gtgiEi8N_VjQ>Ufl07L!m-O--n*fc9o()DErq6<b!;HHes7u]k
+r;6KkrVcBfJcC<$e,Op~>
+JcC<$JcF*snc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp0^PlK\B5#O(@6k2tde
+jSn0Jio/kSi8<GKh;-k`VZ*FkV#I.eUAU_`TEUsZSt2FBrgO"YS"#lGR08nFR$a<?RKAnGRe`@'
+R"(KTJn^^AObJC?L5;t$S!o_3Q^*i#PEM&iL4tG?MMd7LZZ^i:GC>.#Nfs4%r0$W5r/gr@rf[;D
+r/gf<plPB6!07#;!06o:r/Lo@NfT6]oo/s1regf7M>`81L\li+L&Qc*K`Hf%L%^9$L&Zi+KDpQ"
+Ka!3bKnNT5qcO>2>?P'0=B&:$<E3("r)<\s<;fbp<;ohn<;oer<;ol#='/U-=8lS,@/jU6?2It-
+?NFJ?ra5b5?2e10?2\%+>6S89>[1H9r`oGL!d]3?rI"6as*=NgrHnNh!.+Wk!.+Wls*afmrdFcn
+!e#QJrIFfqpON6ms+10"qgn]ts+C?)!eZ/Zr.Y0*!f)Sgr/1B0!0$o:pl><7"-Jb0PPg[BPlR'G
+Q2R$JQNEPBRJE<MRfJuQSbo#TT+%*>I=$6`F`VG<Ci41j?2\+,?i=C3@JXI3A,Ts6AcK.<[/R91
+Xi14X!65#Ys2Y2_qoer_s3(Jfrm(/^qJ,_>rbVRNr,2OQ!-%mVEcQ5BFEDYKG'A.TH$Xd`I!pEm
+J:N3&K7nr5LP^kFN/WdXOHPckQ'Rf*R[]k>T:r!TUo(&hWiW>*Yd(OA[^WfY]Y(tn_8=.0`lQ9F
+bg"G[dF-Opf%8U/gYCWAi8EVTj5oFckiq?slg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6hr;HTd
+rdk*#s3q!u~>
+JcC<$JcF*snc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp0^PlK\B5#O(@6k2tde
+jSn0Hio/kSi8<GKh;-l`M>W2.L\uo&Ka!-^JqAW-rdt*"s+(-!s+'`ms*u"nDdd$RFE),,@:NhZ
+Jt&6uR$a5*Q'@JqOc]NS%VTKgBnKu5ODAZRFaALcqLAElr-eBis*aWhs*OZirHnQlr-S3do6UI_
+qfr-drceEgp3?U_s*4Qf!d8^/piQFVpiQ4Ps)e-Zol:+R:/Cd_rD!5a"\ME[8kVeT9DqK_9E%W`
+9*.^Y9D;*_92&#P9E%lg;ZBSp<)``nr_r_ms&&bnr)!Glr)!bs;,C+g;c6Lj;>tJ0Dt\)HDuXeV
+DZFbRDuX_PDuXeSDuO_TDuO_SEVseMEVsePEW'qXF8p@^G5cU\Fo?L]GQ2pfGQ2pfH2W'fHhr-i
+IK+cpIfb(KJ,Om#It3'#Jbt&rKD:,uL%g?$L]*&-M>rA?J9#RIDes0%AnGR`Ac?!6?Me+.@/aU2
+@f9g8AGKg:M?&J2L'!X+QMQjHQhQjKQC!s;R/EBORf&ZOCA)HBD#S;LDZ=VTE;acsEcZ;DFEMbM
+GB\:WH?spcI=6TqJ:W<)KS>/9M2@+KN/is\P*2&pQC+)/S"6.CTq\?YVPgDnXKAY0Z*UgG\%0)_
+]Y;.s_SjF5aN;WLc-F\`daZguf@em4gtgiFi8WeWjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^
+s7u]kr;6HjrVcBfJcC<$e,Op~>
+JcC<$JcF*snc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp0^PlK\B5#O(@6k2tde
+jSn0Jio/kSi8<GKh;-jb<;9Ji<;KVm<piud<;BH";C4+J.PNb;1G16X0+C4:S!o_3Q^*i#PEM&i
+rA>!A2)R3J6UXRA:JXkgpeq&fp/:ifr_i_or)E\pr)3Pn!)i_l!)iMh!)ien!)ibmohtfgqbmGm
+s&/VhrDEYn;Z0Jm;Yj>i;?0Sn;ZBYq<;';m<)WWks%r\l!)WVk"].3=3B&tt2[))s2E!KRpbr+/
+r\jX4r\ja7qDeF3s#9s9s#^BF3]T8#48V/94o[VC4T7DK4?btn5!;"j5!T!0#!G.54]"sNm83gY
+r_WVj!)WJg!`2Zgr_WVlnkf?^qb[#ar_WMirDEVlmSEXTs&&ems&&eoo2>Wgr`/tts&8qqrDW_q
+q,@8jnl#Nfq,78mrDihtrE'#$rE0,!r_WPh"ADH\8PB%grEfA.rF#V5qI9D5rFG_8!`2for_WYl
+rDEYp<;oer<;'>i;uTeq<<#qu<;oer<;LA'C]8/LD>\;ODZFbTEH6)@F*)MHG'8(RG^4U]H[L6i
+It3'#JqJ`1L51VBMN!LSO-#NfPa.Q%R@9V9StD^NUnjlcWN*&%Y->1;['mHS]"G\i^VRe*`Q$!@
+bKS5Vd*^:ke^i@*g=tE=hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZWm
+o_sFAJcF4!J,~>
+JcC<$JcF*so)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0Kio/kSi8<GKh;-lAVPa?hs.oXhrM'4`r1F4cSt;LDSGo#WRf/ZPR/WKUR[KS4rL*\Qs-Y!s
+J!5G:Bq1KML4Y/6Lomh`VjNj<Q'IStP*(ieNfApQre^uEFb6W>JV8f?rf[2CqNCE3r/gc;r/gc;
+plPE7!07#;!06o:r/Lo@NfK0\oo/s1regi8M2D4fs+gK+s+UH*p4`3ps+UK+s+C<(qLo)T>$>'3
+>5MG/>$G*3=BJR&<`]3"!EN5"<!--"<E8urr`&kqr_rqt<)iiqs&B"u#$4o0=BAj:ra>b5!FB(/
+?N+=3?3FVC?sd4=?N+7/>l7e7>[(E;>?Y69>[:W>Hi/9aHNAG<qg/6g!.+Wird+ZlHiABmIJ\Ek
+IK+ZrI=?\EJGaokJGt$!J:[]Mqgn]ts+C?)s+:<)qh50-LPUeDrJLW5$Asb!Mi<XSNK&sXqi1oB
+OH5KbOckq+Pl$aGPQ@&6rg!GJs-NbQs-`\OrL<hWpmq>Spn&(iRY6*:H$=FRD/F*+E*ZcK?M\%.
+@/aU2@f9g8AGKg:B)f7=[/R91Xi14X!65#Ys2Y2_qoeu`rlbAerm(2_qeGe>rbVRNr,)RSE,bbq
+!HN8\F9-N-rc`C-H$Xd`I!pHnJ:N3'K7nu6LP^kGN/`jYOHPckQ'Rf*S"#t?TV8*UV5L8kWiW>+
+Yd1UC[^WfY]Y2(q_SX71a2lEHbg+P]dF6Uqf@\d1gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DE
+o_%nNp@nO\s7u]kr;6KkrVc?eJcC<$e,Op~>
+JcC<$JcF*so)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0Iio/kSi8<GKh;-lAr/(?-rJ1<*q1Sj&KDpH&KDpK$JH16!J,XuoJc($K?#3nW<-3%nA7/tZ
+AqYbeI@-CgQ'IStP*(ieNf@[aBPD."ASm$7DfTuIrI4]pqL8?jq0r?lpO*!fr-J<grd=ZkpjD[[
+!."Ec!."Qg!."9_s*=Tg"*\p2Fng(VFng(PFoQR\F89hX:JO^a:&n)h:'F?e9h\8Ur_*>c9`@Wb
+91o.UrC[)_r_38`s%<;ape1f`9MA)PrDW_o"Ar&o;cEWmr_r_ms&&bnr)!GlqGI8hs&8qqs&&eo
+!)`W3pMTnIs)@aOs).[O!-%gRrc%mUrc%gUr,DCMr,DXT!-8'Yr,N$`FED\LF`_a&Fo6F]GQ2pe
+GQ2pfH2W'gHiABmHiAEmIK+cqJ,XlsJ,OotJ,b$!Jc(,rKD:,tL%pE$L]3,.M>i;<M1TefE,TT/
+BkM&WAH,s7?M\%.@/aU2@f9g8AGKg:B)d_gM#E&0Q'Ra4PlR0GQii\@QC%T<r0dGN!1Wk#okXPC
+rb_RN!cN$srG_jYF8g7^Fa!b.Ed2kUH@($fIXcluJV/T.L5(J?M2R=PNfT9bP*D5tR$jG5SXuLJ
+U84W`W2ZeuXfnt7ZaI6N\[oGe^VI_'`5Td<b0/#Scd:(geCE1'g"P3:h;@/LioB+]k3(smlKdg'
+mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`noDX=@JcF4!J,~>
+JcC<$JcF*so)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0Kio/kSi8<GKh;-lA<)iZnpJh)kr)W2br`&\l+&XF=.4[)12)6g90J>(E5sdc&R$X)'P`q8m
+OH5E]2Z>Q?1H.Zi852rX:fI0fqGHubpJ^uhs&8hns&/nqr)!Glp/:rhpeg]^!)rho"]8/q;c?Tj
+;$'Qk;>sGo;,[?is&/\lr)3Pls&/kq!*&Yl!E;tp;?'Jl;&2tg2``lX3&roX2`EWQ2)R9O3&W`S
+2u5H32?,T22uY`62u>Q72uY`82ubf949dl.3]T5_48V/94TRZ,r]L-@!Bi[H56!_G4[8m/rB:-D
+mnj!Zs%r\j!)WMh!`2ZgrD3Jknkf<]r)!,brD<GirDEVmm8*RTs&&bls&&eooMbch!*0"tr_iep
+r_reqpeq/jr_ierohtiiq,78mrDiesr`B,%qcOD.;,C(b:esk\91hcK?![G9qHs50raGY4rF>e:
+q.9S<!`2cmr_WYlrDEYp<;oer<;0Am<;]\o<W,ns<W,knC@uBAD#S;LD?=`qE;abWEc_5%!HiSb
+GB.qRH?spcI=?ZrJ:W?*KSG5:M2@.LNK0']P*2&pQC+)0S"6.DTq\?ZVl6SpXKA\1ZEpsI\%0)_
+]t_A"_SjF6aND]McHjkbe'uq"f\,!5h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%Pp\jme
+q>^<hqu6NlrU^#>s+14!s*t~>
+JcC<$JcF*so)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!pJh1roO7C
+jSn0Kio/kSi8<GKh;-lAgSXtHrhTOgrhB=arLj1_s.97]!1a%Xs-ikRs-NeQrg<_R!1<_Qq3W[_
+PCe=!SskanJVJo9YH=h&UnsECQ'@JqOcYWaNJrgQM1<.GMk>BKL5(ljOT:RBPPLC4Oo:C<Oo1=;
+Onb%8NrY4>N<#"8O8Fq>O,f9]oo/s1rJL]6M>i>2L\li+L&Qc!L%U0&KnP,3rIk0("'f&6=T)G$
+=Tqo1>$G*3r`B/"qGdPs<W5r"<E)ptr)<Vpr_req!`N&tr_rhrs&B2&='/U5ra5\5s'Gh6?![>6
+s'Pe4!+5_5!+#P0r`oS1>?q)1!*oJ,!Er_,>R"J=>?b?;I._gdH2DpdHiA9nH@(!bHiAEmIJeKl
+IK"TpIXh9GrI=Nks*k*#JV!fNqgn]t#(qS^K7ei1r.P9.LPUbCr/(l?MMm@MMi<USNK0"qNrG+>
+O9:W.P*>j/qj%,ErK[AJs-NbQrgEVOrL<hWpRV8Spn.PY%%2m"I<p'[F_u&5CiB;ZqHs50rF,P3
+raYn;q.9M:s0Vj6ricF*`;[aSa8a3\b59B]blZ,4bl,i\chqPNC]/)KD>eAPDuXeUEW:%ZF8g7^
+Fa!b.Cj:5OH@('gIXcluJqJ]/L5(M@M2R=PNfT<cPE_?!R$jG6SXuLJUSO`aW2co#Xfnt7ZaI6O
+\\#Mf^VI_(`Q#s>b0/&TcdC1ieCN7(g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?)?oCW%Ts7QHe
+rV6Egs8)Zjrqu`no_sFAJcF0uJ,~>
+JcC<$JcF*so)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!pJh1roO7C
+jSn0Jio/kSi8<GKh;-lAg\m!-M#<&+LA6H(K7\[RK):*#J:E%IJ,XuqJbssJ?>O"U<-<4s@UNbX
+B7tkdI<p7,Q'IStP*(ieNfB!VB4tV-L2qc\E-$2MrdFcprdX<ardFQhs*OZir-SHkrHn<eo6UI`
+qKN!crceEgp3?R^s*+WiG'.s,F9$I]FSp:VFS0bVFSg.XErSrA:/=V\:/=V[:]=,h9`\!_rCm>e
+92,7U"A;?Z92#1Ts%E>brCd/_s%E,\s%EAcr)<Pl"&Vrp;uKVo;uBPn;>jDa;$0]p;H!Kk##\;q
+:f1).photIs)@dPs).[Os)@mSrc%jTs)@mUrG_IMrG_UQr,VgY"*A^0FoHL\Fo6F\G5umeGQ2pf
+H2W'fHiJKnHiJKmIK+crJ,XosJ,XuuJ,b$!Jc(,qKDC2uL%g?$L]3,/M>`80M$\iVE,]`3CM@Bm
+rac"7qHs50rF,P3raYn;q.9M:s,$f4rItB=QBqH6s-EDH!gf4=rL!MNqjRFtokXMBrb_UOs)7pV
+rc.sY!-A-]!HiSbGAMMLH?spdI=?ZrJ:`E+KSG5;M2@.LNK0'^P*;,qQ^F21S=Q7ETqeE[Vl6Vr
+Xf\e2ZEpsI\@K5a]t_A"_o9X9aND]NcHjnde'ut#f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*ol<
+o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+13us*t~>
+JcC<$JcF*so)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!pJh1roO7C
+jSn0Kio/kSi8<GKh;-lAgJmrJp/D#lqc<)ar`&_ms&(3k/h/;(2`<HF/28h46:4"%4[#-sQ'@Jq
+OcYWaNJrfR2(1OQ7n6AS;>3ua;?'Ph;u]ho;uBVp;uBPn;ZK_n;#jMf;u]bk;>!fe;uKSt;,U:j
+;c<?er_`bo;Z0Jm;Yj>i;ZBVo;ZBYq<;';m<)WWks%j(`3]]8[3]B&Y3B&qs2[))s2)[ERr\aj;
+2Dd;f2Z>Q92E*TTrAX^6rAXU5!&sj7s#9m=s#U0?!]iD)q`O[;!'C-Ar]:*CrB:9G4?`U+r&sp@
+oMGQ`r_WVj!)WJg!`2Zgr_WVlr(mAhq,%&dr)!)ar_WMir_`bo;!q-T:]OAl;#aDm;Y3of;ufqt
+<;oer;Z9Vo<;9Al;Z9Sp<:s2i<;KPn<;fhr<rQ/#=Sl8#=9;E!;>a5n9M7uK9`AAp?iFI3@JXI4
+A,Ts6Ac63B:f:3j;#jGk;ZB_p;u]ht<;KSu<)Z^p;cN`rrD`esr_r`0okXMBrb_UOs)7pVrc.sY
+!-A-]!HiSbGAMMLH?spdI=?ZrJ:`E+KSG5;M2@.LNK0'^P*;,qQ^F21S=Q7ETqeE[Vl6VrXf\e2
+ZEpsI\@K5a]t_A"_o9X9aND]NcHjnde'ut#f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*ol<o(2MQ
+p&F^cp\jmeq>^<hqu6NlrUg)?s+13us*t~>
+JcC<$JcF-tnc&LcrVZNhs8)`jr:p<ds7ZEa!qc*Urpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4RLiSi_Qhqm5Gh;$f?g=iC"rhTOgrhB=arLj1_s.0:_S=KSJs-inSs-WeP#+1aER@'A0rKmSO
+rg57'R!k-LJSCU>NeN%;Knuh5Wi;kjR[KD)PEM&iO,f3YN/EI:VSSO>I=m<2rf[;D!0[5CqNCN6
+!K`H@OSY+<OSY+7OSb+=NrP(=Nr"h6NW>.>NqJA3N;\Y8MM_=gs+gK+s+UH*p4`0o&VYmkK7nn`
+>[(H<>?Y06>?Y5/=U&&3>$G36=oMM+<*!%!<;]br<rQ(u<<?-"<;]Yp<;ohq<!#ut<;f`%<)lq!
+='/U5?XNe?ra5\2qHaD6?=.&I?sd4<?N+44>[(H<rEK;,r`]D,>Q.k0?!LT<r`oJ-q0Vp`rd4Wi
+r-SBi!.FfnrI"ZnrdFfrrIFfqpON9n!e>iQrdalsrIY'%"GDD[KS98Ws+UT1Ll)%e"cJ7rMMmDl
+N;\b6Nr>%=O91Q-PPpaCQ2QsGQ2[*LQiEHPRJNBOS,SrPSc,/TTDY>lS;DcDHZsXTDf9B-DdHcI
+?iFI3@JaO4A,Ts7Ac66>B*#EIrica3`5T^8a2c9AaN4A'rQG2b!mJj3rm(5`rbD%?rbVRNr,2OQ
+s)@sWs)J*\rcDt!G'A.TH$Xd`I!pElIt3*%K7el4L5:\DMi<XVO-,ThQ'I]'R[]h=T:hmQUo(&g
+WiN8)Yd(OA[C3TU]=bkm_8=+/`lQ9FbK\>ZdF-Oof%8R.gYCWAi8EVTj5oFckiq?slg4$,n*fc9
+rpg*]o`"Lbp@n=\q#C0iqY^6hr;HTdrdk*#s3gpt~>
+JcC<$JcF-tnc&LcrVZNhs8)`jr:p<ds7ZEa!qc*Urpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4RLiSi_Qhqm5Gh;$f?g=hC?rJ:B,r.b!##D@\[JV&K)JGt*#J:IQIrdXot"+buQJbjmM>\meT
+<-*"nA7/nWAqGV`IXHE_FDmD-P*(ieNfB!VMMYYgNHo8TEccMRIXZ]nrI4`qmXG1apO)serHeBg
+rd=ZkpjD^\!.+?`!."9_rd"Ng"*\p2FoHI_Fo6@ZFng(OFT?O]F8o&>:Jah_:B"#l:/=SZ:]4#h
+9htU\"&)E^8c)*d91hfL91hiK8kT(Us%NAar^m/`pe:]\s%N>hrDNYms&8hn!)rens&&_mr)!Gl
+pegufs%rkr;,L0f;>b>/DuXeODuX_ODZFbTDuFYSDuO_SEVseMEW'kQEVskWEs$N,G'3e+r,qp\
+r-&-crce?ds*=Qhrd4Zms*OcnrI"`rIt.EG!.XuurdOs!Jc(,qKDL8uL%g?#L]3,0M>`8.M$\i[
+EGoc5CM@Kqrac%8qd9>1rF,S4rF>e:qITV;rFZ.gM#E&0Pa7X7Plm>;QBq94!gf4=rg<SNr0mV"
+o5">Arb_RNs)7pVrc.sY!-A-]CisoFGBeCZH@($fI=?ZrJV&N,Knb><M2I4MNK9-_P*;/rQ^F52
+S=Z@GTqeE\Vl6VrXfen5Za@-K\@K5a^;%M$_o9X:aihlPcHsteeC<($f\5*8h;7)JioB(\k2tml
+l0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu-HkrUg)?s+13us*t~>
+JcC<$JcF-tnc&LcrVZNhs8)`jr:p<ds7ZEa!qc*Urpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4LJiSi_Qhqm5Gh;$f?g=l=%pJ_,mqGuu`r`&_m.T.TG.4Qu/2)6g90JG.G6U3h!4?GP^P`q8m
+OH5E]N/WXN/iu<f9MSG_rDWJhqGI5iq,@8lqc!Gmr_rbnr_ieprD<PmohtigpegQZs%rkr;c?Tg
+;>sGo;,[?is&/\lr)3Pls&&ns<)iQk&QDY+;)gQs3B0#\3&irX3B&tq2Zkoq2E:Um">qtk1c>+f
+r\a^6r]'m9rAOX6qDeF3s#9m=s#U0?s#L-AqE4d@!'^BF!B`IB4T7DL4?btn5!;"k5!M704T[f1
+4oIPF5<f'0q,%&ds%r\jpe_&g:]4)i;>j>k:\[cd:]!u_;>sDi;>sGo;,H[Vq+q&gr_WSks&/Mg
+qc*Djr`&Mgs&A_kr`&\l!*&nsrDrr"!*K,$r)aG/:f1"c;,C%_91hfN?=*M9ra>\5qdTM6rFGb9
+rFZ"@s&/hn!)WYm!)rkrr_rhs!*&ep"]SE!<)Zcq<W,l!<E)mqrbD%?rbVRNr,2OQs)@sWs)J*\
+rcDt!G'A.TH$Xd`I!pElIt3*%K7el4L5:\DMi<XVO-,ThQ'I]'R[]h=T:hmQUo(&gWiN8)Yd(OA
+[C3TU]=bkm_8=+/`lQ9FbK\>ZdF-Oof%8R.gYCWAi8EVTj5oFckiq?slg4$,n*fc9rpg*]o`"Lb
+p@n=\q#C0iqY^6hr;HTdrdk*#s3gpt~>
+JcC<$JcF-to)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_Gjr!4@
+jQ#:[iSi_Qhr!;Hh;$f?g=k5VUnsmdU]."bU&L_bT)tUTSc5/YRg,=LR$jA0R/<6MQiNKPR/*'u
+D3BF&BUtHLK7\f3MQO"ZVPBoWR[0%lP*(ieNfB!VMM\@(aj,*ZKSPQdP5pdFOT:RBPPUI6Oo(7=
+OT:RDOo:C=Onb%8O8k7>N<#"9O8"\-NW4t:MZJ]lreUT0qhG*(s+L*"onEm/KO.ng?!CN=>[(<6
+r`^+@=^#!3>$5$6>Zk33='&=$<E<+!<;TZ!<`N*u<E9#tqbmPq;cEZp!`N&trDN\qr`/u""Bf/@
+?XNe?s'Pe3pg3u-s'Pn8?![G9r`oV2>?kG3>Q7t->Q7n+>6%q+>Q7t,>Q0!IH3/G>HN&9iHMi-h
+HiSTnI//0kIXh<Hr."HkrdXs!rdalsrIY'%"GDD[KS98Ws+UT1Ll)%e"cJ7rMMd>kN;\b9NrP+=
+NX1]+O-#HcP*2%.Pl$aDPl?sHQ3*D?R/WNNRf/`SSG/TRT(elSTF@EPJU;cgG&qV?C2@hc?i=C3
+@JXI4A,Ts7Ac66=B*)bS[/R96Xi/2t`lH.!a8j?ZaoKZbblZ,4bl5ofcN)8eci7bOC]/)KD>\;O
+DuXeUE<:0%F8g9*F`qtQG^4U]H[L6iIXcm!JqJ`1L51SAMN!LSO-#KePa.Q%R$sM8StD^NUnjlc
+WN*&%Y->1;['mHS]"G\i^VRe*`Q-'AbKS8Wd*^=le^rF+g=tH>hr*JQj5f=akNM0plg4!*mdKW6
+nac8BoCV_Kp@e7TrqQNhs8)Zjrqu`noDX=@JcF0uJ,~>
+JcC<$JcF-to)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_Gjq["=
+jQ#:[iSi_Qhr!;Hh;$f?g=k5:r.t?-r.b$$%YTOhK7\Z*Jq8H&JUr?$rI4`qoRJGmCgUXOFE)&)
+@:Nh]K7\N!H?aUUEG]BPOcYWaNJrgRM0sN1Rqlk]FEr<6If=coIfFobIK4fiI/eQkHMr3gI/eQl
+HiSNlI.VadH?o70s*=<_s*=Wh!I&_dFoQO`Fo6@ZFng(OFTQZ+;>sAq:Jak`:JUg`!_lEcrD!Af
+:Adfl9MJ,O8P2QH9DqH`91o1V"%l-V9)_K`9`7W_9(u$Z9*%^crDWYms&&epqbdDmrDNVlr_iYk
+!)iShrDNYm"B&)o:f.*fr_NT4r,;RRq/?:NqJQ@QrGVUQs)7mUrGhaSpMp.NqJlFRs)\3^!HrVb
+FSp:ZG5QOaGl;jdGlN'fHMr0jI/\HmI/SKnIK4lrIfFotJGt&uJGb#oKDU>uL%g?$L]3)0M>N,+
+M%#)`EH#i6CM@KqA7]<K?i=C3@JXI4A,Ts7Ac66=B*)b(M#E&0Pa7X7Q2R$CQi`V?Qi<BLRJiTS
+C@c6>D#S;LDZ=YTE;jhYEcZ=$FE_kNGB\:WH?spcI=6QoJ:W<)KS>/9Ll%"JN/is\OckroQC+&.
+S"6.CTq\?YVPgDnXKAY0Z*UgG\%0)_]Y;.s_SjF6aN;WLcHaeae'uq"f@em4h;-uHiSrnYjlYai
+l07O#m-X60n*ol<o(2JFp%A%Pp\4[^s7u]kr;6KkrVc?eJcC<$df4g~>
+JcC<$JcF-to)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_GjqQq<
+jQ#:[iSi_Qhr!;Hh;$f?g=k6T<W#hr;u]hs<W?)"<W6%c<W#ho;^s=O-n?o.2DHg90JG.G6U<n!
+4ZbY`2`-\[OH5E]N/WXN1Hn-%9MeSa;Z0Ph;YX)h;YX2j<;TVl<<#np;ZBYq;Z0Jm;YsAm;Z0Mo
+;YX,Y;?Tip;H$Kf;>sJj;?'Po;ZK_o;uBPn;?'Mq;cH`i<W>/^4#m4"#rjq*3&s#Z3]K+r2Zkoq
+2`Udp!]N"qrA+I22>K002#oQ53;tl92Z>Z33;bZ82a..&#!4k+3BB2_q)e[@55m_F49.JB4T7DL
+4?btn5!;%k5!M7.4TIVA55dYE55nCX:]=2j:B45e;$'Qi:]=/j;>j>j:\did:]+&`;>sDi;>jAm
+;!q-T:]OAk;#aDm;YF&b<;KPn<:j,h<;0>i<;KMn<;]bq<rZ5$=Su=t=:A8/;,C(d:f'n[8kDbS
+?i=C3@JXI4A,Ts7Ac66=B*)aE;Z9Mn;#X>m;uTbq;u]kt<;TYs<)Z`p<;onr<!63#;eg(=C]/)K
+D>\;ODuXeUE<:0%F8g9*F`qtQG^4U]H[L6iIXcm!JqJ`1L51SAMN!LSO-#KePa.Q%R$sM8StD^N
+UnjlcWN*&%Y->1;['mHS]"G\i^VRe*`Q-'AbKS8Wd*^=le^rF+g=tH>hr*JQj5f=akNM0plg4!*
+mdKW6nac8BoCV_Kp@e7TrqQNhs8)Zjrqu`noDX=@JcF0uJ,~>
+JcC<$JcF0unc&LcrVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:]sU!Uf@Sm/QAOlMg#Kki_s-)!0i>
+j5].YiS`YOhqm2FgtUT;g=b,SV5=0drhB:`rh0:`!M5k[SH#&ZR[O)@qj.;Kqj.;Kqj/gMP(J=#
+S<]%fJ;/c5Y-"UuV4a<GP)Y?VL4kVKNJrgSM5$$:T6Pg=L67`"P5pdFOT:RBPQ$^FOo:I9Ont15
+OT:L>Onb%9O8b1>N<#"8O84h-N<"q:MZJ]lreUT0qhG*(s+L*"pP/NMs',M.#?k56>?kB:=oDM1
+=^#'7=]nj.=&]*!"]\N#;cH`o<W?,"<<#tt<;TSq<)Z`p;ufkr<;ohr<<#tu<s2W7@:3IA@/jU6
+?2%\*?NX\C?=!P:ra#P/!F8t.>6%q->Q7n+>Q7t,>Q7t->6%q->Q/pKHiA?jHiA?kHiJHnHiAEm
+IJnQmI/n`qI0+kIJ,XurJ+eEmIfY(NrIFcrrdt0&s+CB)re13'",;SeM>W52MuAM5MuJ\5N=Co-
+NK0$[NfT6_OHG]irKR5Fr07/Frg!VPR$dl@qjRJQrLEVQrgrkVq4J.gNdc>'G'7qHD/=!+r*TG2
+raGY4raYn;qITV;r+H"B!O]<6YQh5J`Poj;a8X-[ans3\bl5igbfe60cMu2jcMZ#XC]/)KD>\;O
+DZFbTEHZADF*)MHF`qtQG^4U]H[L6iIXls"JqJ`1L51SAMN!LSO-#NfPa.Q%R@9V9StMdOUnsuf
+WN*&%YHY==[C3QT]"G_k^r""-`Q-'BbKS8XdF$Fmf%8R-g>(N@hr*JQj5f@bkNM0qlg4!*mdKW6
+nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s3^js~>
+JcC<$JcF0unc&LcrVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:]sU!Uf@Sm/QAOlMg#Kki_s-($4N;
+j5].YiS`YOhqm2FgtUT;g=b-UM#N2.LA?Q&K`?Z,Jq8N)r."csqgSQpr."csqg^.sCg^[OFDkl(
+?Y!YXK7\MuHZsURDJNs!AR^^]NJrgSM0X)lI;<_BFF*q7s*jrqr-eWqm=#%`qgAElrd=`mr-J<g
+pj<0jI!g;?I.M[bHMDaaH1lL_H2i*iGBWt.!d&R-r,hjZpiQ7Qr_Wbo;,L0g:BF9e;#O/k9hnL_
+:'"'arD!;b#>If_8P;ZJ8c)-X9*e-]8P2TJ92&%W9E%N`9DD3[9E.uj;uKVo;#sQnp/:ler_iYk
+!)i_l!)WYlrDNYm!)ien!)WVks%ihq:f1).rc%XNs).^Ps)@pTrG_aSrc%jVr,D@Lrc%[Qr,Ms^
+FED\LFoHL\Fo?L]G5umdGQ2pfH2MsjH[:$drd+Wmr-\TpJ,F`sIt3(JIfP#sK)(&pK_pJtLAlu&
+M"ul9L3moZE,KH*BP1jdAc,p7@/aU2@fBm9AGTm9B)H<@BE=!IrIt<:r07AMQ^4!:QiNKNQi`V?
+Qi<BLRK&`FC]/)KD>\;ODZFbTEHZADF*)MHF`qtQG^4U]H[L6iIXls"JqJ`1L51SAMN!LSO-#Nf
+Pa.Q%R@9V9StMdOUnsufWN*&%YHY==[C3QT]"G_k^r""-`Q-'BbKS8XdF$Fmf%8R-g>(N@hr*JQ
+j5f@bkNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s3^js~>
+JcC<$JcF0unc&LcrVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:]sU!Uf@Sm/QAOlMg#Kki_s-($4N;
+j5].YiS`YOhqm2FgtUT;g=b-R<W,nr;uK]!<`N.#<r,hr<;]_r<;KVp<&%BP<)Zap;_0UP.P3S9
+0eP%30/#XX5s@Fp4#o5X2)?s@O,o9ZN/NNL4??#-;,:%gr)<Agpe_#hpf%2lqc!Dls&8hns&/nq
+r)!GlqGRAlr_ieppJLHY"Ar&p;c<?er_iVjs&/kq!)ibor)3Pls&&ns<)i]o#<Y(14$>\c3W:uC
+3]K)[3B0&ZqDSd>2E*TR2)[BO2D[8h1B9912?5]82Z>Q72E1Upr\sg7r\s[5!&sg6s#pBE#!4k+
+3BB2_pcJXA5!;(+4T.>B4[8p0"?ek05<es-!'L*ArB19J5!;&)r_WSipe_&g:]=2j;>j>k:\did
+:]+&_;>sDi;>sGn;=76U:]OAk;#aDm;YF&b<;KPn<:j,g<;0>j<;BJm<;ons<rZ5$=Su=t=T;G2
+=A_pl;,U4e:.n2M9Di/r@/aU2@fBm9AGTm9B)H<@B`D!0;#jGl;?Bcr<;oet<)lrt<;]_t<)Z`p
+<;onr;ufqfC]/)KD>\;ODZFbTEHZADF*)MHF`qtQG^4U]H[L6iIXls"JqJ`1L51SAMN!LSO-#Nf
+Pa.Q%R@9V9StMdOUnsufWN*&%YHY==[C3QT]"G_k^r""-`Q-'BbKS8XdF$Fmf%8R-g>(N@hr*JQ
+j5f@bkNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s3^js~>
+JcC<$JcF0uo)ARcrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg&JkQU/3k2k^c
+ro4%=iVqaFhqm2Fgt^Z<g=b-1f;5;BU]."cU&L\dT:VVPS->CPS"#k7r0[AJrKdGLs-ESL.;=]j
+K:SKsMhle8L52n5VPU)^SX>V%M2?t>JU`Z<N/NO"R^JZ4JVJpXPlHsIP5g[EP5LODP44S7OHKI&
+mZI:+qiCc;s,@#=qN(B2oo/s1regu<M27"ELPPb]re:B*p4`?t!*oJ.s'5S0$<pb>>Zk36>?kB:
+qH=S<>$5!1=BAF&='TE[BN8#1<)cjsr`/u!"'&<#<W5tl;[$0#;c?Xpr_rhrs&B8(=(#KH@:0"A
+s'Gh6?![84ra5\5!af5=ra,V1r`fG/r*'/+rEB8*r`fD-s'#S/>?kG4>6%q,>Q7n,HN&9iHN/<n
+I!^5>HiSTnI/\O"IXQZnIXZcsJGOciJH(*#J:W:NJGXosK)UB*KS+o1K`$N,L51SAM>W52MuJV6
+MuJ\6N<#"<NW"kAO-#HcP*;+/Pl?pKPa202rK[AJ!gf:ArgEYPrgWeTpmqGVoq2&Q%ABGUIscTe
+FE;J>C2K.5?iFI4@JXI4A,Ts7Ac66>BDQ9A[/R96Xi/2t`lH.!a8j?ZaoKZbblZ,4c2Q#gci;;i
+cgbfLD#S;LDZ=YTE;jkWEWC1[F9-N-rc`""H$Xd`I!pHnJ:N3'K7nu6LP^kGN/`jYOHPflQ'[l+
+S"-%@TV8-VV5L8lX0&P.Yd1UC[^`l[]Y;.r_Sa@4aN2NIc-FY_daZdtf@\g2gtgiFi8WeWjlY^h
+l07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Hjrr)HfJcC<$dJn^~>
+JcC<$JcF0uo)ARcrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg&JkQU/3k2k^c
+ro4%=iVqaDhqm2Fgt^Z<g=b-1fDLI(L]3&(L&Qc)KDpK#J,k)qIf=irJH(,sJ1=K0?=J)!DJ3Te
+@q9/&JphulG]n+GChREk@:EZ)N/W[O>'GUICiFH<Hi8BlIfFioIfFocIfFioI/\QoI/eQkHMi-b
+HieYBHiAEaHN8BeGlE!^GlN'hGlMskG'.qLF`m\*!HWA\Fng(TFT>><;?'Gn;,Hs^#Yn/k:/=V[
+9ht[^!DH,b9+"Ep?<9fm8kDTH8cD?[9)qT`8H;B^9)qZ`9E%N`9DD3\9)qoi<;ohr;?]oq;,L7j
+p/:ofrDNPj!)ibm!)WVkrDEYn;Z9Mn;#O8k:^0cn;,L4f;#,&0DYe8OE;a_RDusrsDuO_UEVaYK
+EW0qQEVsh\F*)MHG'3e+r,qp\r-&-crceBerd"Hg!IK.iHi/<gIfFltJGjruJ:[ZNq1JKrqM"Zu
+reL6(pPB9+EcH#7CM@HpA7U,f?iFI4@JXI4A,Ts7Ac66>BDQ9AM>`//Pl-dKQC!o(rKmSOr0RPP
+QC%T<qj@GQnSA)>rb_RNs)7pVrc.sY!-A-]!HiSbG@u/GH?spcI=?ZrJ:W?*KSG5:M2@.LNK0']
+P*;,qQ^F21S=Q7ETqeE[Vl6VrXfek3ZEpsI\@K5a^;%J#_o9X:aND]NcHjndeC<($f\5'7h;7)J
+ioB(\k2tmll0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu-HlrU^#>s+13ts*t~>
+JcC<$JcF0uo)ARcrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!q,ICrp0[OlMg&JkQU/3k2k^c
+ro4%=iVqaDhqm2Fgt^Z<g=b-1fD/GG<;oer<;KSp<r,hr<;]_u<)Zaqr)NSm),i%<.4R>:1bgU6
+0JG.I5sRUr5!(ba2`3Dj0b,msN/W[O8No1+:Jakd;Yj>e;Ya2i;Ya8j<;]\m<<#np;ZBYq;Z'Al
+;Yj;l;Z9Vp;YX,Z;ZBSq;H$Kf;$'Wo;Ys>j;?9]orDWVls&&eo!E2tq<<53Dr]C<F4?PVbr\t!@
+3&itu2uku82ubc>2`N`R3&ggp"$/D"2#T312#T?42uY`72#oT63<(r:2Z5T32uko92?5l=4o[YE
+3r_5?3WM8;4T@VE4o7A@3se&65<_7o4?Pekq`OsB4o7GA4UF>:5!;%k5#4sNq,%/h:]4)i;>j>k
+:\[cd:]!u_;>sDi;>sGo;,H^WpeUrfr_WVlr_iSk!`Drqq,I/g!*&VirD`Mir`&kq!)i_n!*&ns
+r`0##r)s&%s&]/$s&T_3='/R&;G^1e:eshZ8kMbU?iFI4@JXI4A,Ts7Ac66>BDQ<?;#jGl;?Bcr
+<;oet<)lrt<;]`!<)Z^p<;onr;ufqgC]/)KD>\;ODuXeUEW:%ZF8g7^Fa!b.B6\]JH@($fIXclu
+JV/T.L5(J?M2R=PNfT9bPE_?!R$jG6SXuLJUSO`aW2co#Y-5(8ZaI6O\\#Mg^VI_(`Q$!?b0/&T
+cdC1jeCN7(g=k?<hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@
+JcF-tJ,~>
+JcC<$JcF4!nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4OKiS`YOhqm2Fgt^Z<g=b-XfDhZGU]."eU&L_bT)kOSrLEkV!h,OFr0[AJr0@>LrKdDK.qsrk
+K;"d"NJ)b9LM3imVPU/_R[B8!MM[(@J:ET=NJiX%CR0'iJVT#FQ2[$IP5pdFOT:RBPQ$a7Ont1<
+OoCO;Onb"=O,j1"rf7#<qN(B2oo/s1repf6s+pf5LPPb]re:B*p4`L#!aK&<r`on:?!LW?>[(H;
+>Zt;0>Q7k/>?P-6r`Tk<>$5$3=BJO;H\RN<MhuRcrDWet<;ont<Wc?$<E8uspf%#gs&8qss&B5'
+=(#HG@JsU6?NOP>?2._/?sd;L?iF@2?N4=1>lS+.>Q7t->6%k+>Q7t.>6A&5>[7)/s'#G*s*O`k
+s*FfpH[Ga>s*ains*alq"atiKIt3(GJ+nKmJ,b*!JGXorK)^H+KS+o1K`$Q(L'!-dM>W57Mi*FM
+Mi7RnrJgi;s,Hu;s,[2A"Hek2Pa)-3qipuCs-<eSR$a;0qO7DQqjdGPs.8nUpn/.kU7mZuH[C$[
+EcGu3Cm&0)@/aU2@fBm9AGTm:B)H<:BF2&NYct7J`Poj;rQ"u\qoSo_rlkMgbK^%3!71Vh!717P
+r+u@Lr,2OQs)@pVHua:LFEDYJG'A.TH$Xd`I!pElIt3*%K7el4LPUeEMi<XVO-,ThQ'Rc(R[]h=
+T:qsRUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0`lQ9Fbg+M\dF-Opf@S^0gYL]Ci8N\UjQ5Oekiq?t
+m-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$d/SU~>
+JcC<$JcF4!nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4OKiS`YOhqm2Fgt^Z<g=b-XfDLI(L]<,)L&H])KE$Q'Jc1*!J,+QmIfP#tJ,OmH;eTHFG]Rb;
+@p`bX=+c*RI!g-\Ec5c.An5@Y@;0FjMhtVEH>7;;F`dM/rdOipr-eWqm=#%`qgAElr-\Hhqg8-d
+"+,EBHiAEbHNAG<q0;map3?U_rceWkG'.qLF`m\*!HWA\Fng(XFoG;<;$Kio:f("c;#3uf:B+*$
+:/=V\:/4MY9MA/S8kW5pB`;fLCL:$>9)_E]8c_RWr_!5`r^d)^r_*8brCd,^s%E/]s%EAjs&Atr
+s&'"t;Gg:i;ta,h;>jDj;?'Pi;>jAs;,U:h;,C*f;>sDl;#jMn:]OAjDZF\ODuXeTDu=PSDuO_U
+EVaYKEW0qQEVskWEs$N,G'3e+r,qp\r-&-crce?ds*=Qhq0W$fq0r3js+1-#q1JKrqM"ZureLK/
+!/^T/pPBB;M1'A_E,KK+C1h$fI:)t]raGY4raYn;qITY<r+Ge<!/^Z/!0mGIs-EYNrg<\OrKmYQ
+QC%T<qjI%kr+u@Lr,2OQs)@pVHua:LFEDYJG'A.TH$Xd`I!pElIt3*%K7el4LPUeEMi<XVO-,Th
+Q'Rc(R[]h=T:qsRUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0`lQ9Fbg+M\dF-Opf@S^0gYL]Ci8N\U
+jQ5Oekiq?tm-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$d/SU~>
+JcC<$JcF4!nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4OKiS`YOhqm2Fgt^Z<g=b-XfD/GH<;f_q<:a,i<;fhs<;oer<;fhm<%BFN-S%8;1bpX50JGIR
+5sRUr4ZbYa2`3BG1,(C?2)U;K8P;ZM:Jk(i;H3Kkpepla!)iVkr`&bnqGdDkr_ieprD<PmqG[Dl
+r_ieppJLKZs%rkr;c?Ti;>jDh;?'Mp;c<Qmr)3Pls&&tu<)l(Cr]CEI3]oJd4?5M&3!VH'3B9&Y
+2`gan%lQ@+2`3TU4$,Sh4?GS_2#T321c>4i!&sm8r\X[6rAag9rAOX6qDeF3s#g<Es#^KI3]T2]
+3]m."!Bi[H4oRPF4$5Y)3se#55<h=p4Zkklq`OsB4o7GA4oRYF4Tdf05=#$As%iVj!)`Yjs%iGe
+r_NGgpJLodr)*Gk!Du\]:\dfe;>sDk;?'Pj;Z]iq;u'DZ;uK\i;uK\q;ZK_n;u]hr<W6&!=T)D&
+=T;J$=T;J&<Y/>7=]eR":f'qa:ejYT91rXk@/aU2@fBm9AGTm:B)H<:B`1d.;#X>o;cH`q;Z]ou
+<W,nq<<6&tr`&ksrD`B(r+u@Lr,2OQs)@pVHua:LFEDYJG'A.TH$Xd`I!pElIt3*%K7el4LPUeE
+Mi<XVO-,ThQ'Rc(R[]h=T:qsRUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0`lQ9Fbg+M\dF-Opf@S^0
+gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$d/SU~>
+JcC<$JcF7"nc&IbrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=7gtUQ:g"?;U!nO0CrhKIes.TIcrgs4_Sc5/ZS,SlURJiNNQh6UDQS4_bK7]ee
+PDt3DK8=3BXehqkTpqF5Nf&UIKn,&@NfB'(@r-(+IY<K9Pa%GuPa)02!0[>D!0[8DrfZc5qN1W;
+r0$l<plP?5s,R)<qiCN4oSij0rJLi:M2@%DL\li*L&Zi"Ka)^+?!^cB?N".<>[CZ>>[(E9>$G37
+>Q%_9>?Y67>Zt96=BK6^NfT-Yr/1W-DHm*>s&B%ur`',&<E3!u<W5tm;ZTitqc*So!*&qts'P_5
+rF#Y4s'5Y3?i"+-?iXR4>ln><?2e+/?2\"->lIt->5h_2>[(E9>?b?;rEB>,>?h)1#[(85H?spb
+I!bg>!.FfnrdFfq!e#NHpODmes*k'"Jc1,rJc:9$K*6j[K7npUL&Zl:LPUeEMM[4JMi*FMMi7Rn
+rJgi;rf-l:#`k(/OckolPa)04qipuCs-<eSR$a;0qO7DQqjdJQrgrhUq4Ie]TV;@Z%&&f7I!^-]
+Ec>r4Cm4j+raG\5rF>h;qITV;rFbn=rb2J>Yct8/`<"!!rQ"u\qo\l^s2tDerltMirQb%Nr+u@L
+qelFPs)@sWs)J*\rcE.&G'8(RG^4U]H[L6iIXls"JqJ`1L51SAMN!LSO-#NfPa.Q%R@9V9StD^N
+UnsueWN*&%YHY==['mHS]"G_k^r!t,`Q-'BbKS8XdF$Fme^rI,g>(N@hr*JQj5f@bkNM0qlg4!*
+mdKW6nac8Bo`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s3Udr~>
+JcC<$JcF7"nc&IbrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=7gtUQ:g"?;U!nN0areUQ/!/C<'re1<(rdt-#rdXuupjW!fs*u&.BOY@nF)>W#
+?X[MIJqAAuH['[RDej&tARf-IC&_oR<E`gABl.j2GkldfIf=cYIK4fnI/eWmI/\HmHMW!bI/SEk
+I.VadH?o=2rd"3^rd"Ng!I&_bFoHI`F*.;%q/cXA;uTYq;,[9gr_WJfr([>i9hnI_:&R`f<+0W]
+qJ6FM>#%[^8P)NGrCR;f9M7uM8P)PQ9)qZa9DqK_9DV<^9Dqch<;ohr;?]oq;Gg=jp/:le!`Dln
+r)*Jlq,.)gs%rns;,L.drDEMir_`\ls%rkpDf0IhDZFbTDu=SSDt\/DEW:"REVskWF8p=_G'3e+
+r,qp\s*"QgGB\<2GQ)jeH2W'hHNJM?HN&6kI/SKhIf"TrJ:W:NK)(&oK_pJtLAco&M"cc+MZ8M@
+I;s4FDJNs#An,D$ra>_6qdTM6rabk:rFZ"@ph9Y@rJ(68s-EYNrg<\OrL!VN!13\Pr0d1mr+u@L
+qelFPs)@sWs)J*\rcE.&G'8(RG^4U]H[L6iIXls"JqJ`1L51SAMN!LSO-#NfPa.Q%R@9V9StD^N
+UnsueWN*&%YHY==['mHS]"G_k^r!t,`Q-'BbKS8XdF$Fme^rI,g>(N@hr*JQj5f@bkNM0qlg4!*
+mdKW6nac8Bo`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s3Udr~>
+JcC<$JcF7"nc&IbrVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=7gtUQ:g"?;U!7psG!*&nqs&AVjs&Anr!*&qrs&Attq,A@i/Li512Dd0@/2&\:
+6U<n#4$>Yc3B&fN0etF?2Z>Q>77U$G9i"Vb;Z0Sl;ts8c;#jMh;u]ho;u0Jm;ZK_p;ZK_o;?'Pk
+;u]bp;ZK_i;#sQnoMY]ds&&kr;Ya2g;Yj8j;?9]or)<Pls&&eo%Pg114$5Sf4?P\f4?GSbr\t'B
+3''&Z3W;#82uY`82[q`/4Ztnj4Zb_f4?GP]r%e=0rAO[7r\jd6!&jd8s#9m7r\s[5r\j^;!'U<D
+#<Fk*3]]>b4o.8C5<_4nrB(*B4T7DL4?bto5!D+l4[2(+4TIVA55[SD56!eG49If55<o*D!DlSe
+;#a>e:]aEf:]+&_;>sDi;?'Mp;,H[Vr(mJk:f($g;#X>l;Yj>l;?0Yk<:!Q]<;0>j<!#ur;Z'Jn
+<;ons<WQ9(r`T8'r`B)$s&]2#!EWD&=U\D0;,C(b:f'k[8P;bV@/aU3@f9g9AGTm9B)QB;B`;`F
+;#jGl;?Bcr<;oet<)lrs<;fhs;uTbq<W5tiC]&#JD>S5NDuXeUEW:%ZF8g9$F`qqPGBeCZH@($f
+I=?]sJV&N-KnbA=M2I7NNfT9bP*D5tR$jD4SXuIIU84W`Vl?\tXfnt7Za@0M\[oGe^VI_'`5Td<
+b0/#ScdC.heCE1'g"P6;hV[8MioB+^k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhrqcQirqu`n
+o_sFAJcF*sJ,~>
+JcC<$JcF7"nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Uki_-kk2k[b
+j5].Xrnn.@hVI#CgtUQ:g"?;U"4l#PV#I.hUApqeT`1S`SckUSS=?#IRf/ZSR/<6HQ2m3IQ5u<V
+LkBK;Ss>1cI>3SkXKA=rUS+'EQ&^]WL4k&7rf%5E>[qViGC>.!OStCDQ2[$JPQ-gGOoLUBPQ-g8
+Ont1;Oo(=;Onb%7O8k7?NVee3NqA;2N;\Y<MM[1GLPPb]re:B*q1T0$G^*M"?<gfC?!dJ8s',_5
+>[(B8>PD;0=^,*5>%DuBOH>N^N;8A4HY<=Ws&K(us&K)"rDihrpeq;p<E3!ur`&nrs&B"u"^YPE
+@:E[D@/jU6>le8=qHa//ra5b6?M[t->lS+0>Q7k->?q/3s'#G,!Erb->6A&5>[753!*]A+s'#A(
+"'U)!HiABmIJnQnIJSEeJ+nKnIfY(NrIFcrrdt0&!ec2Yre13'%YfapM2I1IMMd=LMi*CMrf$c7
+!07&<rJpo=#*=t1P*;,prg!AFqj%2Is-NbQ!1E_QrgW_RqORVWp7M/R!hZ-Zr1XXoOb.t,G'.hE
+DeX!NM>gr[@fBm:AGTm9B)QB;B`)QMZ*:I7`l5p:a8O'Zao9H_aT0K^c2Yrec2Puicd'i/C\qrH
+D>\;ODuXeTE<:0%F8g8tF`qtQG^+L[H@($fIXcluJV/T.L5(J?M2R=PNfT9bPE_?!R$jG5SXuLJ
+U84W`W2co#Xfnt7ZaI6O\\#Mf^VI_(`Q$!?b0/&TcdC1jeCN7(g=k?<hVd>Nj5]7`k32'olKdg(
+mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@JcF*sJ,~>
+JcC<$JcF7"nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Uki_-kk2k[b
+j5].Xrnn.@hVI#CgtUQ:g"?;U"4l#PM>i>2LB*)*L&H])KDpK$JcC8rIK4fqIK=qIqgTT9DIm9Y
+H#dh:@:!GT=+Z$OI!U$ZFE))0ARo7Xrb2^SBieJJASZ1(FF!Y0rdOlqkC*DZqgABkrI"9br-\Kj
+"FPQCI!kR5s*=ZjqKVsap3?U_s*+QgG5QL^F9-H)qfVgYra#P&r_ibn#Z=Mr;,:"b:Jgm`r([_t
+9heAX9MADpDJsH2Ci/ua"(G;'9)M9[8dJ'`91qlK8P2VS9)qZa9DqK_9DV<_92baf!*&qrs&'"t
+;Gp@i;ta,g;?'Pk;?'Po;>sDk;>jDm;$9co;,C*f;?'H#;,C+e;G^1e;G^1eqelIRrGVRP!,qOL
+pMp4Ppi67Qs)\3^!HrVaFSp:[G5lagG'A.TrHJ9ds*=Ng"+,?@HN&6kI/SKhIf"TrJ:W:NK)(&p
+K_^>sLAQc%M"lf,MZ/GBMMZ_%EH#c0Bk_0hA:87m@JXI4A,^$8Ac66>BD?0<C&WheL&@59QN!6M
+R/WHNR/`HPQi<BORIt@mD#J5KDZ=YTE;abXEcZ=$FDQ)CGB\:VH$Xd`I!pHnJ:N3'K7nu6LP^kG
+N/`jYOHPflQ'[l+S"#t?TV8*UV5L8lX0&M-Yd1UC[^`l[]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g2
+gtgiFi8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Hjrr)HfJcC<$d/SU~>
+JcC<$JcF7"nc&IbrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Uki_-kk2k[b
+j5].Xrnn.@hVI#CgtUQ:g"?;U!nPoOqc*VqrDW_qo2Pcir)E_rrDWVoqG\Ii/1NA72`*6?.ki\;
+6U<n#4$>Yc3Ar`M0etF?2Z>T67KuO\:Jane;uBVk;ts8d;?'Pi;u]ho;u0Ji;u]bo;#jMj;u]bq
+;ZK_i;#sQno25]g;GpFkq,.)gqGI8j!E2no;uKSt;(sa\4[&a+"?S_-4?WU(r]'p<!':*>r]'j8%
+Q67)2E!NW5<_7o4?Yehr]C-B!^/V(r%e@12?#N62uY`82?,T53<(r:2Z>Z33!2)t2EUn#!'U<Ds
+#L<D3]]>b4o.8C5!M1nrB0s=$9^U<5!D+l4?ktkr&k$Bq`ap@!C&dI4UF585X7Ou5Z(<Qq,%)eq
++q/h:/=[`;"mid;#F2i;?0P]:]+#k:JakbrD<Mks&/\ls&&hqq,H]Zr)EGir`&nrr_iYm!*&qts
+&T/$rE9/&rE'#$s&]2#!EWD%=oVS4;,U4e:/=_]91_`L2u[7^@fBm:AGTm9B)QB;B`)TD;$Kiq;
+GpFm<;oet<)lrs<;fhs;Z]ou<;okt<:t&(D#J5KDZ=YTE;abXEcZ=$FDQ)CGB\:VH$Xd`I!pHnJ
+:N3'K7nu6LP^kGN/`jYOHPflQ'[l+S"#t?TV8*UV5L8lX0&M-Yd1UC[^`l[]Y2(q_Sa@4aN2NIc
+-FY_daZdtf@\g2gtgiFi8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Hjrr)HfJ
+cC<$d/SU~>
+JcC<$JcF=$nG`@arVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T%Vi8EMLrnRb5gY1B7f`'J1f%&:"Unjc\U7n9RrLa+]!M,b[S,SlTRJrTOQi<9PQ'Ra7Q2?jq
+MLfH7SWnq`KntS"XfSCrVOs9BPE1TVKn4]2NfB$YJ7NP:H%:U&P5LREQ2d*JPPgUCPPgU?OT:R>
+Ont1<Oo(=;Onb%7O8k7?N<#"9O84h-N<"q:MZ\inM2;.dr.b3)!/16'#'P99G^!FurEfM0"C>A?
+?![G7!*]A+rE9Y7>$>'5=^#'6Apoi,Pl?aFNK!Ui!f1r,r_s)%<)cjt<`]0!r`&Vjs&B)!<W5tt
+;u]f"<F&p<@/XO5@/jR:?<piC?i+.0?i=@4?i"(->R"J=>?b98>l@k/>$G37rEBA->?kG4>6%q,
+>Q.e4=]eg1>$66#I=;'As*XrtIt.HH!.aiopON9n"Fu&SJ:RKIrdt-%!JH+)K`$N,L51SAM>`;3
+MuAM5MuJ\5N<#"<NW"n;Ns:].P*2#mPl?sFPkp[FQ3<PAR$jB?Rf8fPSGJfVT),&ZT`1SZT`:Ya
+TE(\aUApu!TostSI!9^TE,KH,PB()?qdTP7rabk:rau+Aph9S>rb;_DYct7L`Pom<rQ"u\rlY8_
+!6bAd!mJj3rQYGicM),OD#A/JDZ4SSE;jkWEWC1[FE_kNG'A.TH$Xd`I!pElIt3*%K7el4LPUeE
+Mi<XVO-,ThQ'Rc(R[]h=T:hmQUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0`lQ9Fbg"G[dF-Opf@S^0
+gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$ci8L~>
+JcC<$JcF=$nG`@arVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T%Vi8EMLrnRb5gY1B7f`'J)f%&:"rJ1N1L5,V[rIk0&rdt*"s*t*!qgSNmqgSHm)fTCs<HrV(
+An#=`AQOJ7I<p9bF)c,6Bk:g_?i4UDA6`VUCN"9:I.r'YIf=iiIK4fmHiSTnI.Vd_I/J<kI.M[c
+H?o@3rH\*]s*=Wh!I&_bFoHI`F*.;%s)\HL?!L]B;cEZnr_`\l#uOMr:esn_:JXga:]F/u:JOVY
+:/kbDEc>r7DZ+GJC]eEY;G-jYr^m;d9MA)Or^m,^s%<>crCd)]r_*,^qbml%;c?Rl;,L4g;,^Ef
+;Z9Pn;Yj5j;Z9Mn;#F2h;?]oq;,L.drDESkrD<Pmr_NSmr_Nbq:iC8kE;a_QE;shWE,kYlpMp4P
+r,MaWs)J!Xs)\3^!d/[/rcJ'\r-&$_!-nHds*4Qhr-A?ird+Qj!.=`npjW-js*t*#rIXp!pk8Hs
+pkJ[$"GhhhLPPkbqM>90M2;.f!/gc4%XiD;Df0<(BkCjcIU$;iqdTP7rabk:rau+Aph9S>rbDFe
+!/:?9s-EVMs-WePrg3bRQBqK:s-`UsqeZ1Ir,2LPs)@sWs)J*\rcE@,G'8(RG^4U]H[L6iIXcm!
+JqJ]0L51SAMMmFQO,oEdPEhH#R$sM7StD[LUSOcbWN*#$Y->1;['mHS\\#Mg^VRe*`Q$!@bKS5V
+d*^:ke^rF+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#
+s3L^q~>
+JcC<$JcF=$nG`@arVZNhs8)`jrV6Ees7ZEas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T%Vi8EMLrnRb5gY1B7f`'J)f%&:"r)Nbrr_rhro2YfirDiksr_rhrqc3So*AT/r0KD$I0J>%4
+0fVNd5!M.m4#o;[2)@!B0/YZe2$P^(92/2Z;>sMk<;KPj;YErf;Ya8j<;TVk<;KPm;Z9Mn;Yj>k
+;?9]opJLrg!)rMf"Ar&p;c<EgrDNJhs&&kr;Z'Jn;Z8EN1&sK949n#24$5Vg3]d4!!BE.;3<2&<
+2[_T(2`<TR4?l(r5!Js/s#^WM4?P\e4?Pbi3]6jl!Al\52Z>Z82Z>Q72E1Ups#9p8rAXU5!B2q6
+4:=;74?>M`3BB2_4?`R(!BraI4oRS@3s%Q/5Q3kH4T@SF4T%>C4?`U+r&t'E#!P154?btpr]^EK
+5P\.U:]!rk;,C"`:]+&`;>sDj;>jAn;,H^Wq+q&grD<Mks&/\ls&&hqq,H]Zqc*Air`&nrr_iYm
+s&B"ur`0##rE0,&r)Wr%=',?$s&T2&r`Kk9='&L%;,L.c:JjhY84lQ2@:B%BraYq<qITY<rFbn=
+r+Z.Fr_Wbo;c6Nm<;of#<)lms;cH`q<<?,u;u9ShC\qrGD>\;NDuXeUEW:%ZF8g9*F`qqPGBeCZ
+H@($fI=?ZrJV&N,KnbA=M2I4MNK9-_P*;/sQ^F52S=Z@GTqeE\Vl?\sXfen5Za@0M\[f>b^;%M$
+`5Ta;aihoQcHsteeCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zj
+rqu`no_sFAJcF'rJ,~>
+JcC<$JcF@%nG`@arVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+iuR.<i8EMLhVI#CgY1B7f\"g-f%&:"e"rk8US4BSrLa+]"eD0QS!ofER/r\CrL!SNrKdJK!g]+9
+rg!GJ.#Eh4BqUoWM1UA7LM3lmV5L,^R[94uM2I"=IZ08FNfBNsE--JXKnfDf!1!PJs-*ADrfd8C
+qN:c?qN:W9rK6u?q2tH6q2YW<NK&tqO8"\-N<"q:MZ\inM2;.dr.b*&s*"Efrc\BL?2S"9?!^fC
+?<g]??!LS2>Q%_9>?P-4>&AkXPa.JsOHGWarepl6MYN)5J8SRj<)ros!EE1u<W,nl;ZKeq<W?%u
+;u]hs?2n42@/XO4?j0nD?!UcDqHj,."(,>>>l@t->lS+0>6A&5>[784$!LP;>$>08>?Y50>l%\(
+=oqi/=oMS1=^$3$I=-HkIf=isIfFroJ+nKmIfk4PJ:RKIrIY'%"GDD[KS98W"GV\fLl(nas,6l8
+rJ^f;rf-l:rf@)A!g8b2pQYT@$C$gAQC!r*R@0M3rgNhUq4.;Ps.9(Z!20=`q4R_Z!MH.aU(F)q
+UnO!&I!^'[FDl)6CoDLR@fBm:AGTm:B)QB<B_uNAC'1cGYc[oEs2Y)Z!6P5_s2b8arlkMgbKTt2
+s3LRXq/#tGqelCOs)@sWs)S-\s)e9`E-?GLG^+L[H@($fIXcluJV/T.KnbA>M2I7NNfT9bP*D5t
+R$jD4SXuIIU84W_Vl?\tXfnt7Za@0M\[oGe^VI_'`5Td<b0/#ScdC.heCE1'g"P6;hV[8Mj5]4_
+k3)!nlKdg'mI0N5naZ2@oCW%T!quB_rqQNhs8)Wirqu`no_sFAJcF'rJ,~>
+JcC<$JcF@%nG`@arVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+itgY5i8EMLhVI#CgY1B7f\"g-f%&:"e,>+&LAZc(K`?])K)L6(J:W6$It.BFrI+]p!.FiqrI=i[
+).6KhEc#Dr@qB1PK7SDtH?aOODej$!@praBBa8a'@q][sF*7,'nUCIeomQmhoR-=Yr-\Bgs*XHc
+!d]-;qfr'bp3?U_s*+QgG5QL^F9-H)rH8-Es'5b4?!UB.rDNYm%oQ2#:f("b:Jae^:Jah_:Amug
+:('ck=D)buF)l5<DJoDis(hCG!bPS1qapcZ"%u<\9)_E]9)D9[9)_K]9`@rj;Z9T&<)Z^n;Gg:h
+;,L4ipJV#g!`2cmqGI8js%rbmr)*Djs%rns;,L.drDESkr_WYnr_WVls%r_ms%rZ4qeuXUE,fmn
+Dujrtq/QFRr,MaWs)J!Xrc80`F`qp,FSp:ZG5-:]GlE!eH2r<kHN&6kI/JEgIf+]qJH(0%Jq8ON
+KD:,pL&-Q#LBNEgLkgcbM#E/6MM[.FM2:q`%"<8:DJa0'BP(ddKj+@_raYq<qITY<rFbq>qe>tC
+re:E,r0@;Jpm:uI!gf4=r0[@sq/#tGqelCOs)@sWs)S-\s)e9`E-?GLG^+L[H@($fIXcluJV/T.
+KnbA>M2I7NNfT9bP*D5tR$jD4SXuIIU84W_Vl?\tXfnt7Za@0M\[oGe^VI_'`5Td<b0/#ScdC.h
+eCE1'g"P6;hV[8Mj5]4_k3)!nlKdg'mI0N5naZ2@oCW%T!quB_rqQNhs8)Wirqu`no_sFAJcF'r
+J,~>
+JcC<$JcF@%nG`@arVZNhrqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+itgY5i8EMLhVI#CgY1B7f\"g-f%&:"e,<;H<;oer<:j/k<)ros$rp8,<E)pr;cH^r<E/osr_s.W
+/1N>61bpa:r\#BQ6U<n"4?Yed3B&fP1,:L@2DmBM1d=]/:/Fed;,U:jr)EJjr)35c!)iSjs&Ako
+qGd;ir_ibn!)iYlr_ibp!)iPgs&8Pf"Ar&p;c<EgrDNJhs&';);GpFl0JG791,C^L55mYL4Zkeg
+4?GVbqD\^@3B9&Z2`E_p2Zc$'62a%L5!]*1!B`OE49%GB49%DF5!1b\r\FU42)Y@ks#9s9r\Xm<
+2`E]U2`L[nr\s[5r]C0Br]CQO4?P\d3]T5^4$5\'49Rf35!;(.4Sq2I4?bto5!D+l4[2(,4o[YA
+55dVM5!M4o4Zkkl5lO"J5QO)7rD<Miqb[;i!`)Qer)!,brD<JjrDEYn;"%3P;#aDl;YsDm;?0Yk
+<;]\p;YF#i;H*Ekq,@8ls&8kor)3Vq<W,r!='5H)s&f5$!a&N*r)Ni"=T2J'=T2A2=Ai$n:ejb]
+9M7uL:Fl<OraYq<qITY<rFbq>qe>tC"&_un;#XDm<;of#<)lms;cH`q<<?,u;uBYmC\_fED>S5M
+DuXeUEW:(ZF8p@^F`;MJGBe@XH?spcI=?ZrJ:W?*KS>/9M2@+KN/is\P*2&pQC+)/S"6.CTq\?Z
+VPgDnXKA\1ZEppH\%0)_]t_A"_SjF6aND]McHjnce'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-X91
+nF?&>o(2MQo`Fj]p\ssfq>^<gqu6NlrUg)?s+13rs*t~>
+JcC<$JcFC&n,E7`rVZNhs8)`jrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+*TH&9i8<GKh;-l@g=k64f[na+e^W*td\W_6U7n:ZTDtJdSXc1=R[X2CrKm_SR$X,*rg*JIs-3MJ
+/=)QdClF*`Tp_%"K8>>=B<A54VPToSQB@2bM2$S4N/`gWNiJ2HGC>$sLR%Osrfd8Cs-*ADq2t]?
+qN:];qN:]=q2tH6q2YZ=NK&sYr/^W5oSij0regc6re^W0r.b0(!-nHfs*+Nhra#;*s'5S0r`fD-
+s'#J+r`TP2>$5!PQ^F';PR!D6P)bN]N/[al!f;hmq25E&BN.r2<W5tt<r>tr<;BGm<;]br<<#ks
+<;p2'?N"=2@/jU6>le8=qd'8.rEoV4r`oM/ra#M.s'>Y/s'#G-s'#q9>?Y68>$P99>$>-8?2@e)
+=pS85=]np3=^##-IK"]uIXcitq1&*gs*k-$JUi:IJc13#K*6j[K7npUL&Zl/LPUf^MZ8V6N;\_9
+NrG%9NrP1?OoLUEPP:=?Pm<P=Q'Rc'R$dl@rgNhUq4.>QrgrtY!hc0Xq4R\Y!MH.aUAgqfU^a#_
+IsZNeG'%YAD/>_grF5_8rabn;rFZ%Aph9V?qeH+Gs0)L*rl4uYrQ"u\rlY8_!6bAd!mJj3rltSk
+CMWW[r,)=KrbqgUrGhjX!-A-]D0:#FGB\:WH?spcI=6QoJ:N6(K8#&7Ll$tHN/`jYOHPflQ'[l+
+S"#t?TV8*UV5L8lX/rG,Yd1UC[^`l[]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g2gtgiFi8WeWjlY^h
+l07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$cMrC~>
+JcC<$JcFC&n,E7`rVZNhs8)`jrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+(ZOE3i8<GKh;-l@g=k64f[na+e^W*tdf,%(LPCQ]L&Qc*KE$Q%Jc1-!J,XonI0+kGIK"[GIsuiH
+BOb(fEc#DsB4b[TJUi/rH['XPDJNru@pre\Bkh?rJ9$9UCiFH:npU%Ws*s]j!.Ffns*a`koR$Oa
+qKi3ioQpXcH$T=4!I8qhH1lL_H2`$gGPlU_F9Q`-F`gqqrETY7?W9s%;Gg<j;ZBSu:f1%b:esmd
+;#a>k:B+*&:/=Y[?upI5F)l;?Df0H0D/O4hC\MWH@T?%t8cD<c9M7uM8P/nRqb-iZs%E8`r_rhp
+s&8qss&8hn!`;iopJV#g!`2`lqGI8js&&emr)*Gks%s,$;,L.d;,L4h:f.'er_Nkt:f("d:f'r+
+qeuXUE,]gkE:S#KErU.XErL+^FEMbLrcJ'\r-%jZs*4NgrH\Hjrd+Qjs*Xcnq0r6krdY-&Jq8N*
+r.FctpkAR!onWO&qhb9-p5'3,Ec>o5Ch[QpAS$<rrF5_8rabn;rFZ%Aph9V?qeH+Gs+UN-r078J
+pQtlH!gf4>rL!V#p2'YDqelCOs)@pVs)J*\rcE""G'8(RG^4U]H[L6iIXcluJqJ]0L5(M@M2R=P
+NfT9bPE_?!R$jG5SXuLJU84W`W2co"Xfnt7ZaI6O\\#Mf^VI_(`Q$!?b0/&TcdC1jeCN7(g=k?<
+hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcF$qJ,~>
+JcC<$JcFC&n,E7`rVZNhs8)`jrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+(ZOE3i8<GKh;-l@g=k64f[na+e^W*tdf!2G<!#ut<;TYq<;T\o;ufkr;ufqp<!$'!<;fhs<!Xs*
+.ks%A1,(9Y0,ul<69[Rq4ZbV_2`<KI1,(UE2)[<P5!2S8;,L<k;?0Yn<;BJj;YEuf;Ya8k<;fbj
+<;KPm;Z9Mn;YsDk;?9]opJCrh;tNrk;,U:j;c<HhrDNJhs&&tu;Go5'r\4L11G_2m49.PD4;^4C
+3]T2[3&rrX3]]8]3&ifT3&`cS4@):25QO)7rB1-Eq`Fg?s#^6C"$Jh/2Z>N42#fH42?5]82ZGZ7
+2?5]82uko92Z>Z72uko:3;u&?49%GC4TRZ,r&Om@4?`O'"$\t44oIM@3se#55<h=q4Zkklr]L-B
+!'L-B!BiXG4o[bH4o[VF5=#34s$-ZN5XJ<H:]!rk;,9q_:]4,`;?'Jk;>a;l;!q-P;#aDl;YsDm
+;?0Yk<;]\p;YsAm<;f_s;H$Nk<;BJl;ufkp;Z'Jn<;fhu='5H)s&f5$!E`G#<WQ9(r`T8'r)X/+
+;Gp=f:/4SYrC[,BrF5_8rabn;rFZ%Aph9V?qeH+Gs%rbmr_reqr_j##<E)pr;cN`r!`W)trDil5
+p2'YDqelCOs)@pVs)J*\rcE""G'8(RG^4U]H[L6iIXcluJqJ]0L5(M@M2R=PNfT9bPE_?!R$jG5
+SXuLJU84W`W2co"Xfnt7ZaI6O\\#Mf^VI_(`Q$!?b0/&TcdC1jeCN7(g=k?<hVd>Oj5]7`k32'o
+lKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcF$qJ,~>
+JcC<$JcFC&nG`=`rVZQirqcWirV6Ees7ZEa!qc*Urpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si!&#ph;-l@rn7n9f[na+e^W*tda?I;U8"@\TDkDbSXZ+;Rf&TPR/WHMQMd$HPl6jrClNmt
+Tq.@%K8##7B<A25VkfoPQ]I/bL4t8/Mi3UTNK9C4c[CD"LR%Lrrfd8Crfd8CqN:f@q2t]=!KiK?
+Oo(=;Onb%6NrtE%NK3ptpl>?5!06i6!0$l7!fDhkreLE+"GM#DGBa%3s*+TO?![G9!FK.3?3O\B
+>[1T?r`]n<>?b97=^,*8>%*)QR[KH?PR3P9P)bQ^NJr[MreLW4Mi.=g"bq),<)lrt;up!"r`&tu
+<W,nm;ZKer<=Do.<E)mq>[1Q??=%%=@JsR<?X@#D?=.(;?3+>=ra5k9?<piAr`ot<>?kH>>?b97
+>?kB:>5_Y*=oMY*=oqo5?27_)>5_V(=p8&4>?P'Wr-n]sq1&*gs*k-$JUr@KJc(-"K*$^YKDpQ&
+L&Zl5LPUeEMM[4JMuJV5MuSb7N<#"<NVnh:O8k@BP5g^IP`q=/PQ@&6rg!MJs-<VM!gf:ArgEbS
+rgWbSqORVWqOde\!2'([rLX.aTqVFZrM'q"V50fLIsZQfF`_SACMfA9raPk:rabn;rFZ%Aq.T\?
+r+c+Es0)L*rl4uYrQ"u\rlY8_!6bAd!mJj3rm(:TqJH(HrbqgUrGhjX!-A-]s)eHfGB\:Wrd&I/
+I!pHnJ:N3&K7nr5LPUeEN/WdXOHG]iQ'Rc(R[]h=T:qsRUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0
+`lQ9Fbg+M\dF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6Kk
+rVcBfJcC<$cMrC~>
+JcC<$JcFC&nG`=`rVZQirqcWirV6Ees7ZEa!qc*Urpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si!&#ph;-l@rn7n9f[na+e^W*tda?HuLPLW^L&Zi+KE$Q$Jc1-!J,XooIK+cpIJnUD<bYiK
+G]R_6@:`t\<IoXLH[9jVEG]K*A7K(VBk_?sBlJ3KR;HnbFFNb.np^RfomZmg!doEEpjDa]rd=Qh
+!.=Ec!d]-;r-/6fGlE!^GlE!gGQ;scFoHI`F'JWKra#P1r_rhpr_Whs;,C+d;Z0Am:espd:BsTj
+:/4S`BQjAt!HW;\E;skVD$"TlD#A)CC]\<V;>Wra8cqa[8kT(Sr_!)]r(?r]r_38hs&/hp!`W)s
+r)*Vo;H$Ng;?Tin;,U<h;?'Po;?'Jj;>jB#:f:.f:f("d;Gp@grD<Pmr_Nnu:f("d:f'qa:&Al0
+EVFGCEVXYSF8p=_G'3b*rH8$]s*"QgGB\<2GQ)jeH2W$hHiA?jHiJKlIJJ?jJ,OosJcC?"KD:,q
+L&$JqLB*/,M>W2)M>rGBM10JaDf'<)BkCpeHq+*EraYq<qdo_<rb)%?r+Z(DqeQ4d!/:?9!1*>F
+s-NkSQC%T<ph]eDqJQ:Ns)@pVs)J*\rcJ0_"Eo!5G^9:7DL6bZIXcluJV&N-KnbA=M2I7NNfT9a
+P*;/sQ^F52S=Z@HTqeE\Vl?\sXfen5Za@0M\[f>b^;%M$`5Ta;aihoRcHstfeCE1&g"P3:h;@/L
+ioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcF$qJ,~>
+JcC<$JcFC&nG`=`rVZQirqcWirV6Ees7ZEa!qc*Urpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si!&#ph;-l@rn7b5f[na+e^W*tda?JA<W?%p<W5tq<W,ns;ts>l<W,nr<=)VU/gi,/2_m'<
+r\"d@6pa+%4$5P`2`EWN0etE\2@26"5!M_;:f11krDNYor)EJjr)35c!)iVkr)<Ypp/Lofr_ibn
+!)iYlr_`bq;YO#i;H$Ne;?]oq;H$LlqGI2hqGI8j$8F4g0/51:1GM'Wr]C]S4?GYe4Zk_b3&rrY
+3&s&!3WD&=2?#N=3'9Jn5sRa85QX/655dY?48q>I4$5Vg5!1e^r\FU42)Y@k!&sm8r\Xm<2`E]U
+2`L^or\s^6"$Sk14T7GB49@Z.4T%5B4$5Yhq`FsE5<V1.4Sq2J4[2.p5!;"j5<V+krB10C4o@JE
+4[/j.s$-KG$p6a>5X.Iu5X.M"69tEE"Aquj:J^pcp/1idrDEJj!)`5]!DlSi:]jKi:f73gr_`\n
+qc!Mm!)r\mr)<Vnr_inu;cH`q;u]bq;u9Pi;uT_r;uKVk;ZTitrDir#=T)A&=T2D%=T;J$<rZ5$
+=T)A&=Su8"=9h`$:f'n^:JLd\!%InVraYq<qdo_<rb)%?r+Z(DqeQ4/!)WYnr`&kqrD`eq!*&qt
+!`W)tr`/`0qJH(HrbqgUrGhjX!-A-]s)eHfGB\:Wrd&I/I!pHnJ:N3&K7nr5LPUeEN/WdXOHG]i
+Q'Rc(R[]h=T:qsRUo(&hWiN8)Yd(OA[^WfX]=bkm_8=.0`lQ9Fbg+M\dF6Uqf@S^0gYL]Ci8N\U
+jQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$cMrC~>
+JcC<$JcFF'n,E7`rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTRjlGI^
+io/kSi8<DIh;$cag(E#jf@SU(eC;sqdF$=8U7n3OrLO:cS=>t9R@0G1rL!VOqNh)Fqiq)F-u4lp
+Jt\ZuM1^S>LM3fiWi2_aR@'(sLl$h9IuB;IO,gWUNS]&8LPYJbs-*ADrfd>EplYQ=qN:f>plYH:
+q2tH6q2YZ=NK&sYrK$`6rf-r<q2GB5rJL`7M2D4ereCGu$[-c>GC"LYGB[A"?2%Y@>@(W?>[(B9
+>?P'2>$G9:EKlu^R[KH?PQI&3OT(7BNJiXMqhY90pko9*D-L"?r_rnu<rQ)"<)riqqGRAnqGdi$
+>?kE=?!^iE@/aU5?j9tE?!UcD?i+1.?km$S?!LW??!LT=>[:T=>?Y69>?b97r`]A+r`fD+!*fG-
+qHNr&rE0M3=^#$5=BL*'It3(HJ+\?lIfk4PJUmWKr.=s$s+CB)re13'%YfapM2I1IMMd=LMi*CM
+rf$f8!07#;rJpo=#*=t1P*;)orfd2Cs-<SJ"dPC>Q^=*<R/i]TS,&TNSc>;XTCnlTTDtV^UApth
+Uo"'d%\],;H[L'\FDu58D/i0WraYq<qdo_<rb)%?rFu1EphTo6!3Z=@s2Y)ZrQ>/^!6kGe"3es4
+cMMGQD>A)KDuXeTEW:(ZF8g7^Fa!b.D0U>PH@($fI=?ZrJV&N,Knb><M2@.LNK0']P*;,qQC+)0
+S"6.DTq\?ZVl6SpXKA\1ZEpsI\%0)_]t_A"_o0O7aND]McHjnce'ut#f\,!6h;7&IiT&tZk2tjk
+l0@U$m-X91nF?&>o(2MQo`Fj]p\ssfq>^<gqu6NlrUg)?s+13qs*t~>
+JcC<$JcFF'n,E7`rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTRjlGI^
+io/kSi8<DIh;$cag(2lhf@SU(eC;sqdF$<rLPG_\s+LE)s+:3#rIFirs*jin!.OfnrdH7qBjY7m
+Ec5T!AnGUTJU`/qH?F:LD/3cr@pi_[C27U"KnaZLDK0cBl@&PYrI"`rIt.-?qL/-dp3Zacm<ekZ
+!."Ke!I8qgH1lL_H2i*hGPlRpFB`!R>[:T@>?tQ@<)cdo;>jDl;#aDm:]=/j:Amro:/=Y\:L/$c
+GQ)^cF)q8!s)7mRs(qRJ!GlQGC]\0N:&@N^8cq^[8kT(Sr_!)]qb$l]s%N;gs&/bns&')!;Gp@h
+;H$Nh;Z9Pn;Yj5j;Z9Mn;#=,h;?]oq;,L.dr_`\n!)WVk!)iem!)`_l$W0_s:Jae^EH#l:EVj\T
+EW0qKEVXYSF8p@^G5ZO\Fo?L`G6<#4GBj(1s*4QhrH\HjrHeKjs*Xcnq0r9lrIFit!.t-$q1SNs
+q1eNs!/UK.r.t-)rJD)AIrfRID/<p#B4PRc5%=M$rabn;rFZ%Aq.T_@r+c"Bs+UN-r078Jo9TNE
+Q^IYdphfhErbqgUrGhjXs)\0]!HiSbGAVSMH?spcI=6QoJ:W<)K8#&7Ll$tHN/`jYOHPflQ'Rf*
+S"#t?TV8*UV5L8kWiW>+Yd1UC[^WfY]Y2(q_Sa=2a2lEHbg+P^dF6Urf@\d1gtgiEi8N_VjQ>Uf
+l07L!m-O-.n*ol;o()DErq-?dp\4[^s7u]kqtpBjrVcBfJcC<$cMrC~>
+JcC<$JcFF'n,E7`rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTRjlGI^
+io/kSi8<DIh;$cag'lZef@SU(eC;sqdF$>?<<-"p<W5tr<W,nq;u'Am<Vobp<@BCN-n7572)-^:
+0/,:O5sIRr4?5G^2Dm<H0ebLE2E!ES6:b9T;,U6g;Z9Vm<;BJj;YErf;YX2[<;TVn;?9WmqG[;i
+pJCui;cE<d"Ar&q;c<HhrDNMis"XI+s"XO/"u/;)4?Pbir]C3E48h2>3!)*"3;toD3&W]Q3&`oa
+5l<qJ5lX%K4T7MD4SLr:4:=554?Ykk3]AoP1Go(gs#0m9s#0j6s#(!=3&iiUr\j^6r\t!=5!D./
+4T7GB497T-q`4g@4?Yk*497T0r]U6Cq`=jB5!T$1s#g<Fr]L0C!^&V/rBC-Bs$$]O4Ztnk5=#34%
+R<6D5XI_%;,C(d;,9q_r_W8bs%rYkr)*Pm;"%3X:]jKi:f70fs&&eoqc!Jlq,I8jr_ibp!E<"s<
+<#nr;?0Ym<;KPm<<#nq;Yj;l<W,tu<rcA%=TDS'=8uD&=8Z)(='/U/=]nj/rE&o!%9$,#:ejb]9
+h\/N:*jBKA,^$9Ac66?BDH6>C&D`@C]@63;#XDn<;fbo<<#ks<;ol"<)ZarqeZ%Eq/61Ms)@pVs
+)S-\rcA0`G5c]&G^4U]H[L6iIXcm!JqJ]0L5(M@M2R=PNfT9bPE_>uR$jG5SXuLJU84W`W2ZeuX
+fnt7ZaI6N\[oGe^VI_(`5Td<b0/#ScdC.heCN7(g"P6;hV[8Mj5]4_k3)!nlKdg'mI0N5naZ2@o
+CW%T!quB_rqQNhs8)Wirqu`no_sFAJcF$qJ,~>
+JcC<$JcFI(n,E7`r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh%e`"g=k64f@SU(eC;sqdF$=eU8"<QrLX%Zs-j(YR@3r>s-NVKqN^uCs-5!_Oai%W
+RZiY`L5(P"XfA@uUn*s?NfK$RL4Xo7MiNgE_6B&EI"[-3nWX-@Pa%C0P5^[FP4t+=P5:=@OS=n8
+P5178OSt4?OSt7?NW5%:O8"Y9NK0%oN<"q:MuSY7M>i87H?XUXGBeB3Gm&A9?<pk5?4:1H?<pfC
+>[(H;>?Y81=V+eBBo8IOS=5k5Q'@PuPEM%,NWkE#M2@+HqhY90pko34H>*:Xs&9#!<rQ)#<)lrs
+<;KMn<;feu<`N/u>lS+0?3+D@raGb5"CGJA?!dM;r*BA1ra5n:?!U]??2Rq7?!LT<>$G6:>?Y50
+>Q7n+>Q7n,>QA(+>Q.h)=UA87=^#!3=BJ^VqLA0g!e5`Nq18Hqs+C?)!/(9(r.PH3LPUbCMM[4J
+MuAM5MuJ\4N<5&uNW"n;Ns:].P*2#mPl?mCPlI$JPlI$KQ2m9NR0&bDRf8fPSGSlVT),)OT`1S`
+TE(\]UAq"fV#R8#Tp:1WI!TmWEH#`2EDHLCrabn;rau.Bq.T_@r+bq@s0)U.a2Z-ta8a6[b5]Qa
+b09k0"3es5D"_`@DZ4SRE;aeVErU4[F9-N-rc`7)H$Xd`I!pElIt3'#JqJ`1L51SAMMmFQO,oEd
+PEhE"R$jG6St;UKUSO`aW2co#Y->.9ZaI6O\\#Mg^VI_(`Q$!@b0/&Td*^:keCN7(g=tE=hVd>O
+j5f=akNM0plKmm)mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcF!pJ,~>
+JcC<$JcFI(n,E7`r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh%e`"g=k64f@SU(eC;sqdF$=eLPLV=rIt3&!.t-"rdalq!.OlprI4Zms*cA&CL1Fn
+Ec,Q"AS#IUJU`)oH?F:KChm`rARf.aBkhBeNeDUjD/s`Dq0`6jnU:=ar-e0cqL/-dp3ZacqKi3i
+oQpUbH2MpaH1lL_H2i*hGQ)^f?!CQ<>Ph\3?;a^#;Gp@h;Z9N!:f1(d:JXea;#=#s:ek&-H$FOW
+G'.qKErL"XDuOSUDJX*'qJ5_>!b#)$r(6l[!)*;`r^m,^r(HoZs%<>cqG[Dlr)<Vn!)`_n!Dubo
+;u'>k;$Kip;Gg:f;#X;l;Z9Mn;#=,h;ZBSp;GmEis&&eos%r\l!)ibl"&Vlk;>sDl:BO?f:iZ5K
+o5XSHrGr'_G'8$-FSp:ZFp*#4GB\<1GQ2pfH2)^cHiJKlIJJ?jJ,OorJcC?$KD:,pL&$JqL\Zf)
+M"cc(M@GDkEc>r6Ch[QpA7T7:raYq<qdob=rb)%?rFu1Ep1j_`L5#Skrg*2C!g]0hp20SBrbqdT
+rGhjXs)\0]!HiSbGA_YNH?spcI=6QoJ:N3&K7nr5LPUeEMi<XVO-,ThQ'I]'R@B_<StMdPUnsuf
+WiN8)YctF>[C3TU]=bkm^r"".`lQ9EbK\>ZdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?sm-O--n*fc9
+o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s3:Ro~>
+JcC<$JcFI(n,E7`r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+"leM!i8<Djh%JMtg=k64f@SU(eC;sqdF$=e<W6%r<W5tq<W5tr;u0Jl<W#hr<<jj(.P!S<1bek]
+)`U2N5<h7m3BB,X2)R*D0/b^G2C:RP7nlcV;>F)i;uK\i;u9Je;?'Pi;t*c_;u]_s;,U<h;uKSp
+;c<?es&8Pf"Ar&q;c<HhrDNVl!&+=*s"Om81,1L=1Hdoa4?Yn-497N,r](-A3B&rY3;toE3&`fS
+2`X,h5sYB7"@,1:5<f'0"["q24$,S"48M)>4p=)12Dd3HrAFU5!&sm8r\a^6s#C$;r\j^6s#:-?
+4Zttlr]L0As#^?G4?NL&r]C*BrB(3G5!D+mr]L0As#L6D4?c"/4p*r14[8p.r]U9D!'U9Es#hDe
+4Zttn5<V.l4[21s5<hCt5<qM#5X@\5:eje^:f-d]!)WSjrDEYn;"%3X:]jKi:f70fs&&eoqc!Jl
+q,I8jr_ibpr)E\pr_ibpr)EMkr_rkrr)3Dj!E<(s<WQ9(r`T8'!*B,$!*B)!#?P#1>$>'2=Su7t
+=:A,*:f("`:J4>Q7nk?0A,^$9Ac?<@BDH6>C&D`>C]@68:fL@l<)iiqrD`bp!*&qt"&r2uD"_`@
+DZ4SRE;aeVErU4[F9-N-rc`7)H$Xd`I!pElIt3'#JqJ`1L51SAMMmFQO,oEdPEhE"R$jG6St;UK
+USO`aW2co#Y->.9ZaI6O\\#Mg^VI_(`Q$!@b0/&Td*^:keCN7(g=tE=hVd>Oj5f=akNM0plKmm)
+mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcF!pJ,~>
+JcC<$JcFL)mf*._rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rol3%kN:pgjlGI^
+io/hRhr!;Hh;$c=g=b-1f@JL%eC2jndEp4bU7n6PSt;LDS=?":R@3o=!13SKq3CiA*.F*%JrH1_
+MhQn@M.`oiVl$5[R?`kkMhZt<IuF;d#]-TTR!3q2KTQ.ss-<8A"-o+7P5UUDPQ?u2mZIL1plYH:
+q2tH6q2bN7s,R&=pPo<7NfNmo!0$o8s,%)=LO"/hH$FOXrcn`pGB[D"?!gt<?41+H?=.#D>[CZ?
+>?h)1'3JF@@>:AESXc1<R@';)Q'@JqOoC@GN/NOMM2@+HqhY90pko<7LNHs)<W5qt<rQ)#<)lrs
+<;KPn<;ont<WQN4r`oG.s'G_5s'bk6!+5Y1s'P_2"^PJB?sm@@>le29r*0S7>[(E9>$P<:>$Cl/
+!*T;*s&oJ.>[@,/!*]>($!LJ7>$>'2=BSf)J+A-cJc(-"KDU?"Ka*9eLPUeEM>E)0MuJ\5N<#"<
+NW"n;Ns:].P*2#mPl?mCPlI$IPR3V@QC!u,R@'G3rgW_Rqjm\Wqk*h[!294]rh'4`!291^"/DZe
+V#I2$VP99*I<g-\F`D>:Dffi+rabn;rau+AqIohArG(t?#&LNJY/eQ%r5SfYrlY8_!QrXcc2Z#`
+D>%lGDuXeSEW:(ZF8g9,F`qqPGBeCYH?spcI=6QoJ:W<)K8#&7Ll$tHN/`jYOHPckQ'Rf)R[]k>
+T:r!TUo(&hWiW>*Yd(OA[^WfY]=bkm_8=.0`lQ9Fbg+M\dF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBu
+m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$c2W:~>
+JcC<$JcFL)mf*._rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rokipkN:pgjlGI^
+io/hRhr!;Hh;$c=g=b-1f@JL%eC2jndEp4bLkph@re1?*rdt3&qgn`sqgSTprdF]nqgBDhCgUUd
+F)G]$AS#ISJU`&nH?O@KD/!WoA7K'HC'[glML'&UEccR)IK+crIK"WbIJeQlIIhpaIK"ToHi&3b
+Hi8?YHNAG<rHS0ap3?U_s*+]kF^86V?2e+.?2n45>uFU"rDEnu;G^4g;,U1cr_WSis%`Si!E3\2
+Gl`/6rcSKfF)l8?E,Y_ms(h[NrbD:FoP=SC>uCMkr_!2`s%<5]s%<5_qb$l]qG[Akr)<Vn!)`Vk
+s&8_ks%rts;,U7g:f.-g!)iens%rVjrDE\n;GmEis&&eos%rYkrD3Sn:f($g;#a;n:/=\_q/GqF
+pi?@T"*A^0FoHL\Fo6C`GBWh,s*4Qhr-ATpH@'sbH[L5>IJJ?jJ,OoqJH1<$KD:,pL%pDqLB*/-
+M>W2'M>N/@Mi)t(E,KN/BkV-jA7ebMrabn;rau+AqIohArG(t?")N[GL&I;8QLpO>D>%lGDuXeS
+EW:(ZF8g9,F`qqPGBeCYH?spcI=6QoJ:W<)K8#&7Ll$tHN/`jYOHPckQ'Rf)R[]k>T:r!TUo(&h
+WiW>*Yd(OA[^WfY]=bkm_8=.0`lQ9Fbg+M\dF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9
+o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$c2W:~>
+JcC<$JcFL)mf*._rVZNhrqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rok]lkN:pgjlGI^
+io/hRhr!;Hh;$c=g=b-1f@JL%eC2jndEp4br`8nrs&Ahpr`&nrq,I8lqc!eI0.JG02Dd,d0,ul<
+5s@Lq4?5A\2D[-E1+tLC2)ZpH6:jpK;,U?k;Z0Pk<;0>f;YX)h;Ya8b;ufko<;TVn;?B]n;YsDj
+;YO#h;H*3c"]8/r;c6Ni;>sH9;(jRV1,1O>0etI=1G_3Y4?Pek4?GYf4$#A^3&rrZ3;bc?2`Nc]
+77-l;s$6QJ!^8_0r]C3E4T7DB4SV#74T@SL4ZbY^1Ggrf2?,Q72uY`62$>fr3&`ep2Z>Z83;kuJ
+5!1qh4$#Gb4?Yegr&OsC4$5Yhr&asCr]U3Bs#^6A"$8V/5Q3hK4Zkklr]L-B!BWIC56!bG55m_F
+5Q<nH4:=A=5X.Iu5<hD!5sYE8"&;Wg;!q3Y;?0P^:]+#h:\mof;?'Pj;u]bk<;]\o;ZB\n<<#nq
+;?0Yn<;KPm;ufkp;Yj>l<W,r!='5H)s&]8&rE'&$r)Ni"=T2M(=TDS%=8Q,"=Ue2':esq`:.n5P
+8PUaFrabn;rau+AqIohArG(t?#]*@8:fL@l<)iiqrD`bpr_rr!<)i[1p29hIs)@mUs)S-\rcEF.
+G'8(RG^4R\H@($fI=?ZrJV&N,Knb><M2@.LNK0']P*2&pQC+&.S"6.CTq\?YVPgDnXKAY0Z*UgG
+\%0)^]Y;.s_SjF5aN;WLcHaeae'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%P
+p\jmeq>^<hqu6NlrUg)?s+13ps*t~>
+JcC<$JcFO*mf*._r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V1[aYtm-O'(lKRQskND!ijlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHW#ST)G2dS=>t8R$a5-R$[f>qj.#Br0/UYP_+U%
+RZrecItrhnY,S@uV4F$>OGSjNKn"W2NfK*BPfL@]I"[0;qN^T8r0./Fs-!GGmZIO2plYH:q2tH6
+plGH7s,R&=oT&^+!0$l7!IB"iGnkRJGBnIYGBeCW?<piD?=.&G?X@#ErE]G.s'$7B>?G!3As&[V
+SXc4=R@0D-QBd\uP*#['!K;s8MZ8P5MYi22M2I2cMZeuhD-L$>;uftu<<-"t<W,ns;ZKer;u]hr
+<<-)!?N+4/?2n45?XR8MrEoV4r*KD1rE]h:?=.&I?X@#D>[@>6$sQtB>[(E8>$G69>$Cl/!*T;*
+s&oJ.>[@,/!*]>(s&oM->$>).=9Mc/=+>_kJGFcpK)L?#K_pK'L'!-dM>2u.MuJ\6N<#"<NW"n;
+Ns:].P*2#mPl?mBPQ7!IPlI!RQC!u,R@'G3rgWbSqORSVqk*h[!294]s.B=arh9.^rhKLhrh]Xl
+&#,8>I<p3^F`MD:DK8E]AG]s:B)ZH>B`2ZDCA)H?C]UcCrl4lV!6G/^s2b8`rQP>drb_7ErGV[S
+r,MaWs)\0]Dfp5HGB\:VH$Xd`I!pElIt3'#K7ei2L51SAMMmFQO,oEdPEhE"R$jG6SXuLJU84W`
+W2cl!Xfnt7ZaI6O\[oGe^VI_(`Pom=b0/#ScdC1ieCN7(g=k?<hV[8Mj5]4_k3)!nlKdg(mdKW6
+nc&([oCW%T!quB_rqQNhs8)Zjrqu`noDX=@JcF!pJ,~>
+JcC<$JcFO*mf*._r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V1@FPsm-O'(lKRQskND!ijlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHV-!re:B*s+:<'rdb-$JV!cMqg\TnqgSHk)d[>g
+@T@GcBk(L\AQXP6IX6<_FDl#/B4YU^@f:$I?ZV?gCN"67Hhr3jIK"WbIJeQlIIhpaIK+ZpHi&3b
+Hi8?YHNJM=H2`'bH1lL^Glq>V>[@;5r`oV2?!gq;;[QE";,U7h;,C.g;>a8j:]F2i:B=L8rd"Ng
+$?pW9G'%eGEH,r9rbV[OD#S5LCAVcIChrZZ!bGJ.rCQu\s%E>`r^m,^rCd#[!_ZEhqc!Jlr)<Vn
+!`;iorDNYoq,75i##J/p;Gg7er_WYnr_`\lr)*Dj$W'_u;,C(d;,U:h;#F2f;#aDm:]sQj:/=[b
+;#G;(EVXYSEs6Z.G'.nKqfVg[pila_rd"Hg!.4]krd+WmrI+KjrI=crr.4m"s+C*"q1\Qtp4r[(
+qhb9-oniO&s,.DEIWKIHD/F$%An5Fa4_/+#Ac66?BDQ<?C&Mf?C\qoKL5#Skr0I&Crb_7ErGV[S
+r,MaWs)\0]Dfp5HGB\:VH$Xd`I!pElIt3'#K7ei2L51SAMMmFQO,oEdPEhE"R$jG6SXuLJU84W`
+W2cl!Xfnt7ZaI6O\[oGe^VI_(`Pom=b0/#ScdC1ieCN7(g=k?<hV[8Mj5]4_k3)!nlKdg(mdKW6
+nc&([oCW%T!quB_rqQNhs8)Zjrqu`noDX=@JcF!pJ,~>
+JcC<$JcFO*mf*._r;?HhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V1%+Grm-O'(lKRQskND!ijlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHTDd<<-"s<<?-"<W,ks;u'Di<W#fE-86r#/iPXC
+0.\b02afts5<M%g3&icO1GUU:2)dBN00MTp:/=Ya<;0>h;ufkp;Z0Pi;Z'Dl;?9Wmpf$od!)rbo
+qG[;iqc!DjpJCrh;tNrk;,U:j;c<Hh"]I*./hf!Y1B0'?1,1O?1Hmub4Zkki4Zkhe3rV/>2uu$!
+rAjm;"$&Y87/B1L5lEnI55[MD4ZrX(s#g'<qE,!H4Zthb2)I/g2$#TorAOX4"?&1u3&gdor\jm<
+5!Js/$U-^94$,Ja4$,Sf48_,B4?GYg4o@DE4[)"lrB1*As#U0A!Bi[H4pF/44?ktk4T.DD4$EL*
+!BiXG4o[_H4oRPO5<qIu5<qIu5X7Y$r^$QLmSWm[!)`2\oMGQbr_iVls&&hqqGdAkr_ibprD`bp
+rDNYor)EPls&B"srDNGis&K"u!EWD%=o2>$=8l8#<sMi1>$>'3=BPN'pfIN!rD3hu9hnAU8P)T"
+A7YRKrFZ%AqIohArG)%AqeQI6:fL@l<)iiqrD`bpr)EZ4o5=MFrc%dTs)S-\rcE($G'8(RG^+L[
+H@($fI=?ZrJ:W?*KS>/9Ll%"IN/`mZOckonQ'[l+S"-%@TV8*UV5L8lWiW>+Yd1UC[^`lZ]Y2(q
+_Sa@3a2lEHbg+P^daQ^sf@\g2gtgiEi8N_VjQ>Ufl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]k
+r;6KkrVc?eJcC<$c2W:~>
+JcC<$JcFU,mJd"]rVZNhrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rokipkN:pgjQ,@]
+io/hRhqm2FgtUQ:g"G$0f@JL%eC2jndEp4bc-2fOrga7`S!oe6R$df<s-NeQr0I,Cr0/X[PD"L#
+S<o4eJVT%pY,\@tURdd<OH#'OK7JK1NfK*HRE3<oItWK?QMHg:PQ6pGPl?pKP`kHsrfHo;r0$r>
+!K`H=OSFn:NW5%:O7\J.N>.>0MgBVnH$FUZGBnI[H$X[Y?<pk9?N"71?N".9>[(H<=^+s1DjpZs
+s.'OeR[KP/Q'R]#PEM%,NWG)sqhkE1s,-]0!f;elpPT-4H>$=X<;]_r<;ons<<#ks<;ohr<<#r!
+<aG]2rETA.ra#\6?smFA?iXR3?3"@2?3+><ra,t>?X6rB>[:T>>Q.n->6e>7>?kB:>$Co0!*]A+
+r`];+rEK;*s',M,#[(>6=^"s3>$:i,s&fA)=8[RKJ,+WlJc(,uKDgK#L&Zl2LPUeEMM_4frepf8
+rJ^f;rf-l:s,RJJOcklkPE_8qPPLFCQ2QsIQ2d-QR$jA0RJr]OSGJfTT),)YT`:_ZT`1Y^UApqe
+U&q*cV#I4jVZ3P(UQ^=XH?jXUEc5i3F&-?DAc?<@BDQ<?C&Mf?C\_cIYcduFr5SfZrlY8_!6Y;c
+!6k"OrGVXRr,MaWs)\0]!d/[0rc`I/H$Xd`I!pElIt3'#JqJ`1L5(M@M2R=PNfT9bP*D5tR$a>3
+S=Z@HU8+N]Vl?\sXfen5Za@0L\@K5a^;%M$_o9X:aihlPcHsteeCE.%g"P39h;7)JioB+]k3(sm
+l0I^&mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`no_sFAJcEsoJ,~>
+JcC<$JcFU,mJd"]rVZNhrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rol*"kN:pgjQ,@]
+io/hRhqm2FgtUQ:g"G$0f@JL%eC2jndEp4bc-1orKnP,3K7\^SJbaioJ,artIJ\KkI2cL/@UN2X
+E+r`gA7\hoIscQfF`VP?C1_$d?t0(L#\%q>P&"uVFFEq5s*aino6pOcr-e0cqL/Bks*OZkpNugc
+m!AbZH2`'aH1uOaH!^GS"C58;?![A7%8p,';Gp@i;Gg=h;,U<j:]X?hr_EVk;-S5BGli57GQ)dc
+Es-N'EH#jqD#nEgr+l:HqeP_<!F]"+8cME_9DqK^8H;B]9DhB^9E%id;uKVm;uTYr;,U?k;?0Yk
+;ZBSu:f1+g;,L0c;#jGi;>sGq;,U7gr_WVls&'"s;,L.d;>O)o;,C(b:eje^r_NYlE,ber!-%[P
+q/ZIU"a"m1G'%j'Fo6F_G5ug`GQ)jeH2W$hHiA?jHN8HlIJJ?jJ,OoqJcC?%KDC2pL%pE%LB*)+
+L]3,+M>i>'M>N20M[tc'IWTOHD/=!%An>Le5\0b'rau.BqIohArG)%Aq.p(dL&I;7QN!3NQM[$>
+DZ+MPE;X_UErU4[F96T.G5c]-G^4U]H[L6iIXcluJV&N-Knb><M2@.LNK0']P*2&pQC+&.S"-(B
+Tq\<XVPgDnX0&P/Z*UgG[^`l[]Y;.s_Sa@4aN;WKc-F\`daZguf@em4gtgiFi8WeXjlYail07O#
+m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+13os*t~>
+JcC<$JcFU,mJd"]rVZNhrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rokcnkN:pgjQ,@]
+io/hRhqm2FgtUQ:g"G$0f@JL%eC2jndEp4bc-5i\nPoBcr)>'k0InV+2Dm6B/2/_96pX"#4$5M`
+3&NHH0eb:=2Dm?F5!i">:f:1goi(cf!)renrDWPjr)*Aiq,@#es&8hpqG[8hr)<Jjpe_)j;cE6b
+s&/nqqb[JN0J>(5r\FL.r\FL0"?eq24?`[+!^/Y-r](*@3B0&Zq`+[?62j:K5m0G;5<qF0497T-
+r]:!>s#g'<qE4^>"$/=r2#T942E1Olr\Xg;3&ifTr\jd8"#rG-55m\H5!;%-49%AA3s%Q-48h2C
+4$5Se4o@DC4[/j.r]L0A"$/M*4o@JG4Zknlr]L0C!^&V/rBC-Bs$$KHr]CQP5<qIu5<qFu5XIa8
+62s1M62XR[;"dcb;?9Wkmn`jX!)NJgr_`\nqc!Mm!)r_nr)<Sms&8kqr_rbns&8hp!E2nq;uTbr
+;uBPj;u]es<W,r"='/T(=o2>$=8u>#<sMi1>$>'3=BPK&pK.o.:f'n`:JOYY91qiO,\6d`rau.B
+qIohArG)%Aq.p(/;#F;l;uK\p;uK\dDZ+MPE;X_UErU4[F96T.G5c]-G^4U]H[L6iIXcluJV&N-
+Knb><M2@.LNK0']P*2&pQC+&.S"-(BTq\<XVPgDnX0&P/Z*UgG[^`l[]Y;.s_Sa@4aN;WKc-F\`
+daZguf@em4gtgiFi8WeXjlYail07O#m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+13o
+s*t~>
+JcC<$JcFX-mJd"]rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTMjlGI^
+io/hRhqn@g(>RZug=b-1f@JL%eC2jndEp4bcHOJ'rga4_S!ob4R/WEPQM[$IQM?aCPT>4:KRmd*
+R#crQLkf`HY,A.lSsbt/NJWIFJ:W]>rf.2Q[bQ4\KST8dr072Gqiq,Gr075H!gJn3mudU2plYH:
+r/h&BOcfI$plGH7s,R#<q2PH9rJp]5!K;@(Gm/G=H$OXZrd"Ng#('Z^?!goEra5\3&78aJ?!U]?
+>?kE:=]]pBT:c+S'V1_]R@'>,QBd\tP)t`cNf8pSM2D.freUZ5M>W/2M2I2bMZ\omFCG/Jr)E_r
+rDihr!`N&tr_j)%<E3=1?=$uErETA.s'>e7?smFA?iXR3?N4C3?34D=?N"72?2n.:?!LW=>[1Q>
+>?Y2/>QS,5>5_Y,>$G51>5qh-?2e(->5h_4>$5$3=^"s2>$Co-s&fP.=''p&It.?GqLSQrrIb'%
+qh>')"c%njMMd8eMZ8V7N;\_9NrG%:NrP.@OHKO*s-!GIrfd2C!1!JH"-o1<Qi<?PRJr]OSGSlU
+T),)YT`:_ZT`(S^UAgkdUAptgV#I4jVZ!D%UQ^=XH@'aVEc,`4GC07!rau.BqIohArG)(BqeZ1I
+!O/d+`r3pXao9H_aTBW0c1GoODuFYQEW:(ZF8^1^F`qs-GAh_OH?spcI!pElJ:N3&K7ei3L51VB
+MN!LSO-#KePEhE"R$jG6SXuLJU84W`W2ZeuXfnt7Za@0M\[oGe^VI\&`5Td<aihoRcd:(geCE1'
+g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcEsoJ,~>
+JcC<$JcFX-mJd"]rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTMjlGI^
+io/hRhqn@g*8K<&g=b-1f@JL%eC2jndEp4bcHOIcKnP,3JqEuQpON6mpO<'h*.2"-@pi;XE,/ul
+AS"tpK7/)lF`VS@C1h-g@:K1M#AeX:X(uWoF7t(^IJnQbIJeQmIIhpaIK"WoHi/9dHi/9XHNAG<
+rcn6apim-N?!L]@?!UcA?=!P:!FK75;uBPn;?'Po;>X/m:/+MpHMi'gGRAS:G'%eHEcH&;DuOVR
+C]\BeCAhrHCAhr;C]\9T;>j)d9)hQ^9)hH_9)VE\9)VZa;uT\n;uBMn;uKVo;u]_q;uKVo;?'Jm
+;ZBVo;#X;l;Z9Mn;#=,g;Z9Pm;#aDm;Z'>k;>j;n;,C(dr_WPhrD3VlEH,r:pi6(Ls)S?cF`qqN
+FSg4YG5ladG5?F_GlN'fH2r<kHN&6kI/SKgIf=iqJGXm!JqJ^OK_L2rLAcl-LAQc*M#)u.M"?K#
+MZ&J5N"(VmFDu/8ChdTpA7TC[r+5k>rb)(@rFu4FpM9YBr+uIhK`.26QN!6MQN*<DDZ"GOE;X_U
+ErU4ZF96T.G5c](G^4U]H[L3hI=?]sJV&N,KSG5:M2@+KN/is\OckonQ'[l+S"-%@TV8*UV5L8k
+WiW>+Yd1UB[^WfY]Y2(q_8=.0a2lBGbg+P]dF6Uqf@\d1gYL]Ci8N\UjQ5OekiqBum-O--n*fc9
+o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$bl<1~>
+JcC<$JcFX-mJd"]rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTMjlGI^
+io/hRhqn@g(>RZug=b-1f@JL%eC2jndEp4bcHOI4pf6i`qGmGm-m^Pt.PNb=1,(7500)?c5!;"j
+3BB,W1GU[>1,h*K2)%9V=%uLf;Gm$arDWbqr)3JlohkcgrDNGip/M&jr)EPlqGR8jqbm/cs&8_k
+!)rbms&/nqrD<_P0eb760`Eg-1&`pP1GgmO5!1qj4Zkeg4?5G_3&rrX3B/uZ3&ru^6UO706U<s7
+5m'>:5=#31!'U<D"$Jb,3W;);3rhD<48M)<4Tdc+2Dk@i!]Dtrr&4R4"?&5!2`L^os#9s@r]^?F
+$pHg:4?GVc3]fDd4?NL&!'C0Bs#pBE!BiRC4oRSC49%>D4$5\kr]^<E!'gHFrB10D4oISE4T[f1
+4oRYE4:+/85X@V!5X.Iur'C?J"[PCN;,C*`;>sJn;#jGk:B45`:]+#h:]!uf;?'Pk;u]_q;u'Dj
+;uTYp;uK\p;uBMn;uK\q;ZK_p;uT_r;u9Ji;ZTitr)Ni"=T)D&=9)G$=:&&0<``@)=BSg2r`K5'
+r)`Pn%9ZM':esna9hS)N9hdD@Ac?<@BDQ<?C&Mf@C\qrGD#mL1qc*SorD`bps&AW.r,;OQr,MaW
+s)\-\!d/[0rc`:*H$Xd`I!g?jIXls"JqJ]/L5(J?M2I7NNfT9aP*;/rQ^F21S=Q7ETq\?ZVl6Sp
+XKA\1ZEppH\%0)_]t_A!_SjF6aN;WLcHjkbe'uq"f\,!5h;-uHiSrnYjlYail0@U$m-X60n*ol<
+o(2MQp&F^cp\jjeq>U6gqu6NlrUg)?s+13os*t~>
+JcC<$JcF[.m/Hq]r;?EgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@Slo"+ol07EqkN:pgjQ#:[
+iSi_Qhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2#SXc4>R[KP1rg3VMrKmGJpm(fB*,h*rKP-jE
+NeDq;M.`rlVP^)YR[9+qMMQt<JrTbi#`k4Ta*WAkLmIIoqNLuFr075H!gJn3mZIO2pQ>B:!KiKB
+OTCQ+plP<4rf$o<r/^`8!frA&rJpc7s)@s`!I9"jH2i*fGmAS??=$oC?=*S;s'?1B?<^]@>ZtB;
+>$G*bTV2:V)4mCiR[KS0Q^*l%PEV,jOcGH]N/EIKMMd8hMZ/G5MM_4dregK/s,7)2D-Kt=qc*Vq
+r`/nr!E2ts;Zg!(?![G9!FK13>lS+0?N4C0?iXR3?N4C2?3OV@?=.&Gr`p+@?!LW=>[1Q>>?Y06
+>[1K:>5_Y,=^,,0=oqo5?2\"->5h_1>$5$3=^"u->5hY(=TDS'<rdaIJGOipK)L?#K_pK'LB!&>
+M2I1IMMd=LM2I1KMi<VnN<#"<NVnh:O8k@BP5g^GPl?mGPQ6pHPQ7!IPl?pKQC%T<!1EhUq4.>Q
+rLWkXrh0:bpRqGXr1a.`"/;QcV#@+iVZ!FmW"#McJUMcdG'%Y>DK'iJrFQ"@rFc"@rFu7GpM9YB
+q/$/:YPlK>`rO6\b5]Qab09TtqeuFPqf2XVs)\-\!d/[0rc\BfH2`,%H[L6iIXcluJV/T.KnbA=
+M2I4MNK0']P*2&pQC+&.S"-(BTqS6WVPgAmX0&P/Z*L^D[^`l[]Y2(q_Sa@4aN2NIc-FY_daZdt
+f@\g2gtgiFi8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$bQ!(~>
+JcC<$JcF[.m/Hq]r;?EgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@Slndtml07EqkN:pgjQ#:[
+iSi_Qhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_bfe1_KS+o/Jq<TFrdXWjrd?2B=DhVX;g*1r@UEYX
+<e>mNI!BdUEc#Q(ARf.XC27R!DKCGpCN"69npURerI"6cr-nQlo7$Oas*XfmrI"Wl!.+Nhr-[jX
+"+#6;GkcR]GQh,J?!^fCr`oe9>[:ZB?X@);r_rbn!)`_n!`;imqG7;i9l,0'r-8]qGBJ(OFE;MC
+EGoc5rb_[O"`%jeCMR\aC]/#HCB86enSA8;=AAcdr_!2`!(m/^r^m#\s%38gr)*Po<;]\o;Z0Pm
+;ZB\o;ZB\p;?0Yp;ZBVo:^']o;,L.dr_WYnr_`\lr)*Dj!`2clr_WVls&&np;,R0d##S2n;,C+d
+rD3Ag!`)R1pi64P!-A-[s)\3^s)nEcFSg4YG5lagG'A.TrHJ9ds*=Qh!.4]krd4ZmrI+KjrI=fs
+r.4j!!/(*#pP&EtreLN.qM5'+qhY</o83:#rep`6%>fOSE,TT/CM.6jASYWNAcHB@BDZB@C&VlA
+C\qrDD#oBErK[;Hrg3SLpMTkHrG_XRs)S-\rH&*`G'<k/!I/nhH=hMOI=6QoJ:N3'K7nr5LPUeE
+Mi<XUO-#NfPa.Q%R$sM7StD^MUSOcbW2co#Y->1:ZaI6O\\#Mf^VI_(`Q$!?b0/&TcdC1jeCN7(
+g=k?<hVd>Nj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcEpnJ,~>
+JcC<$JcF[.m/Hq]r;?EgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@Sln%Jfl07EqkN:pgjQ#:[
+iSi_Qhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_bfe3+<UWo_<W,lG/hnh*0K1jD0.SY.3(#tp4utee
+3B&iQ1GLX?2`<NN0g.Tj9i4ee;,[-er`&nrr`&nrr)3JlohtE\pJh,jrD`eq!)iboqbm>jr)38d
+!E)kl;?0Ym;ZBYt;Getqr\=F+$o'Ln1,1O>1G^jN5!8g-'KeQA4Zb\c3B0#Y3B/uY3B0#b5stW>
+"@5:<5skQ:#=(R>4Zkeg55[PC3WD,?3W;)<3rhD;48M)<4T[Z'2Z5N52?Gfq2?#N52?,W92uPW9
+4?Yk+55m\J5!1qh48q8H4$5Ve3]]>`3rV8A4oRPE4Zr[+rB1*As#L6D4?c"/55m\F5Q3eD4TRW-
+rBC6E!'^BF!C&dH49e#869d\"5Q3qG5m0G=5X80?;>sJn;#jGk:B45`:]+#k:Jakbr_WSks&/_m
+s&&hqq,I8jr_`_prD`bprDNVnr`&nr!)iepr_rkrqbm;i!E<(s<WQ9(r)j)'=',B'rE&u#qcNo$
+rE&Pl!a/Dsr_WVi"\_Q]8kh&=AcHB@BDZB@C&VlAC\qrDD#mL1qc*SorD`bp!*&]1qeuFPqf2XV
+s)\-\!d/[0rc\BfH2`,%H[L6iIXcluJV/T.KnbA=M2I4MNK0']P*2&pQC+&.S"-(BTqS6WVPgAm
+X0&P/Z*L^D[^`l[]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g2gtgiFi8N_VjlY^hl07L!m-X60n*olH
+ncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$bQ!(~>
+JcC<$JcF^/m/Hn\rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTnjlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ARadeihR@'B@QiE?QQ'Ra8Qi!*CQ2d'gD4$32
+B:YKPL4P2;LSq8OVkflNQ]R/_LP181NW+qCR?4\XI"I!*p6GWCq3CiA!1!JHrfmMKP4"J4OS4h8
+P5CC8OSOq>NfB$Yr/^`8!frA&rJpi9$ZL**H?sj_H$OX[H2`+/H$FXA?<poE?=.&G?!^lF?!CT?
+>[1K>>&'J"rh0:`(7q(fR[TY1Q^3r%P`q5kOcYT_Mhm4IreUZ5M>`>0M>N,.MYN,/Mue3:r`&ks
+"]eW&<)lrs;uoosr_io'>[:Y7?N4@4?2e+/?2e11?i4:3?i471?i=:2?2e.G?X@&E?!LZ?>[(E;
+?!LT<=^#'8>?Y5/>6%h*>Q7k.>?kJ4>Q7n+>Q.h+=oVY-=^#!3r`B2(=Su8"JGOipK)L?#K`$Q(
+L'`WkLl%"HM2I1KrJLW5s,?o9!07#;rJpo=s,m>Es-!GIrfd>G!0dDH!1!MIrfmMMQi<?QR@=,E
+qjdMRrLWkXrh0:bpRqJYr1a+_"JVZdUnn!d!2f^m!3#mp&#58=IWp!ZF)c):E-d+IAc?<@BDZB@
+C&MfBC\qrDD>e>PYPlK>`rO6\b5]Q`bPQ2RDu=SOEW1"YF8^1^F`qs-G6)r6rd&R2I!pElIt3'#
+JqJ`1L5(J?M2I7NNfT9aP*;/rQ^F21S=Q7ETq\?ZVl-MoXKA\1Z*UgG\%0)^]Y;.s_SjF5aN;WL
+c-F\`daZguf@em4h;-uHiSrnYjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?
+s+13ns*t~>
+JcC<$JcF^/m/Hn\rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTljlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ARab,1sJb4KlJ+S3iHm`$9B4"S[Ebf2oAS,J%
+Jp_okGB@kBBkCpd@UX"eC27m2KS=5]F*I>,rdXor!.FfnomQaer-e0cqL/BkrHnNkpj;mcm<\q]
+H$FT/H2Vsl<*!%*?!^n;>n::J?XI,H?=-W1;c?Rl;cEQks&&bl"]8/m=E]&jHMr*iG]s(/"a"g,
+EH,srD?F`lCMNf^!buLcrbMFHrbLq<!FSn+8cD?^9E.T`9)_E[9*.^_;>a>l;ZKeq;uT\n;uKVo
+;uKVo;uTYp;uT\p;?'H!;,U:h:f("e;,[Bjs%rSir_`eo;GmEis%rborDE;cs&&em!DcPk:]=/m
+:JOSWqJlIS!-A-[s)\3^"*Jd0FS^.YG5lagG'A.TrHJ9ds*=Qh!.4Zjs*OcnrI+KjrI=fsr.4j!
+s+C-#pkANureLN.qM5'+qhY</o83:#repc7reh;CI<'4DChmd!An5Lg@:a$LB)ZH?B`2ZDCADZB
+D#%rHD?,@gQ2HsIQi<<JDYe;LE;OYSErU4ZF96T.G5c[dG^9:7EI3(]I=?ZrJ:W<)KS>/8LP^kF
+N/WdXOHG]iQ'I]'R@B_;StMdOUnsueWN*&%YHY:<['mHS]">Vh^VRe*`Q$!@bKS5Vd*^:ke^i@*
+g=tH>hr*JQj5f=akNM0plg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s3(Fm~>
+JcC<$JcF^/m/Hn\rVZNhrqcWirV6Ees7ZEas7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjThjlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ARao,6.<;'>l<#[DE/h/S82)?m:0/#"F5s@Io
+4ZYV_2`*?H0erYc#W4D$4%N(C:f%'gpf%)is&8nr!)renrDWAeoMbK`rDW\pqG[5grDWVlpJCrh
+;u';k;u9Jm;uS?J1&im.0JYE^1C#Zk1Gh9Z4Zr^,s#^9Er]:$=%QHI/3'9/^6q0O26ps@,qEb-H
+"[5(34$5\)49.J@3<;0$r]9U3!B`OC4T%>D3]Ano2?#N62?,T62?#T72ZGo>4Tdl25!Js/!BrXF
+48h5>49%>C4$#G%4T@SD497T-rB:*As#^6A"$8V.5Q3kG4Tdo34?WR*!BWIB4omf1r]L9H55dVD
+56sP?5<qIu5X7[762s1P5sRCiqGI5ir_WYlr_EMjoM>B]"&D`i;>sDk;?'Pk;uT\j<;]\o;?0Yo
+<;ohp;Z9Vo<<#ns;?0Yp<<#no;Z'Jn;ufqr<rZ;#=TDS'=8l>#=8c8!=oVV'=7]Pn<rlK&r_Nr!
+:/+DT8ki&8AS(jQrb)+ArFu4Fq.okDq/-(J!)WMk!)rhqr_r]3qJZ:Nqf2UUs)\-\!d/[0rc\Bf
+H2`,0H[L6iIXcluJV&N-Knb>;M2@+KN/is\OckonQ'[l+S"-%@TV8*UV5L5jWiW>+Yd(OA[^WfY
+]=bkm_8=.0`lQ9Fbg"G[dF-Opf%8U/gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\
+s7u]kr;6KkrVcBfJcC<$bQ!(~>
+JcC<$JcFa0m/Hn\rVZKgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@Sln[nll07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'h\bfe2OaIAWdR/N?OQMm'KQMm0KQM6[EPUC@5N.bl:
+RZE;VL5:UuXJ_kgSsu+1NJWIEJqJr@OH6`.Z)N,&Jqs;irg*GHs-EJGqNLuFr075H!gJn3mZ@L2
+p6#99!KiKCOnOn3O8k1>Nr+n8NWP9%O8P%<E!UH&H?sj_H?jc7H2`*mH$Wb&>l@tC?X@#D?=.#D
+>[:T=>[(NUU8"<RU&LYcSt2AMRf8WQPld,2O8b7@N<5#pM>`>3M#rQkM>iD1M>N)/M>iD.MuJY<
+L3$a%<;ol$<`N.!<E8oq!)rl$s',P0rE]M3?2e+/?2\+0?i4:3?h.M0?X@#D>[1Q>>?h)3s',M+
+s',P.r`T;+rEB5*s&oV2>[:T=>[.22r`fD+r`KA-=^#!3r`K2'rDs##=o*^JK)C9"K`$Q(L'*3e
+M2D.f!/pf5s,6o9rJ^r?NJrjVrJpo=s,m>Es-!GIrfd>G!0d5CrfmJLrg*\RR@=,EqjdPSrLWkX
+rLj1apRqMZqkF"^s.]Og!2TUjs/,go!3#dm#GRB4I<KjWF8g([DL##hrau1CqIokBrG).DqeZ.H
+q/-29rPniW!6G,]s2k:Yq/?1MqJlLTs)\-\s)n?brc\BfH2`,+H[L6iIXcluJV&N,KSG5:Ll%"I
+N/`mZOHPckQ'Rf)R[]h=T:qsRUo(&gWiN8)YHY==[C3TU]"G_k^r""-`Q-'BbKS8XdF$Fme^rI,
+g>(N@hr*JRj5f@bkNV6rlg4!+n*fc9nac8Bo`"Lbp@n=\q#C0iqY^6hr;QZdrdk*#s3(Fm~>
+JcC<$JcFa0m/Hn\rVZKgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@SlnRhkl07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'h\bfe2OaF]"pnpg^ioR86;Hrt<"@o[\mCh@$bAS"qo
+I<p0_FE)87AnGU`@q]UnCkHb]K5>LJGk?IbJ,XlsIJeKcIJeQmII_jaIK"WnHi8?fHi/9WHNJM<
+Gl;mfHMi$o<`N1#?!^fD?iF=H?X6uE?X@);<)Z^n;Gg@i;,U7g;Gg<i:]aKl?2]-KH3JS=G]e1P
+rcA6_EGodoD?=TiD#.iLC27R!CMWi_rG1k<"DD%;8P/nRs%<Ab8cD?^8H;B^9E.oh;>a;m;cN]o
+rDNSmrDNYorDEVor_ibpr_ibn!)WYms%rkp;,U<i;#jGf;$'Qk;>a8g;>*fh;,C(b;#X8i:]sQh
+:/"=ZEW'nXF8g4[F8p=`F`qs(Fo?L]G5umdGQ2pfH2W$hHi89jHiJKlIJJ?jJ,XurJc:9$KDC2p
+L&6W'L]3&*L]3,#M#`G2M><&.MuSb5M[kMjEc5l6Ch[KoA7]RDAc?<ABDQ<@C&MfBC\qrFD>A&L
+K_q&7QMm0MQN(juDu=SNEW1"YF8^4\FoQXaG6)r6rd&C-I!pElIt3'#JqJ]/L5(J>M2I4MNK9-^
+P*2&pQC+&.S"-(BTqS6WVPgAmX0&P.Yd1UC[^`lZ]Y2(q_Sa=2a2lEHbg+P^dF6Uqf@\d1gtgiE
+i8N_VjQ>Ufl07L!m-O0/n*ol;o()DErq-?dp\4[^s7u]kr;6Hjrr)HfJcC<$bQ!(~>
+JcC<$JcFa0m/Hn\rVZKgrqcZjr:p<ds7ZEa!qc*Urpg-\nF6GG!Uf@Sln7Vhl07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'h\bfe2OaSo3;;ufqp<<#tu<:s8k<#[DD/LrM81bpa9
+0/#"85sIRq4Zk_`2`*BH1,Ahe#;nD&4@i1E;#F5c;uK\p;u]hs;uBPm;tX&\;ZTitpf.5krD`eq
+!)iepq,72jqbm/cpeh)jr)*nR/M&G-0/5+60JYH^1'KHj4[)"kr]LHL4?P\c3]d4!#WFb'4?Q)&
+6::`?pd"sH5=#!+!'C$;"?JP'3]cgn!B`OB4T.DE4#o4s2?#K82)[Al2$5ct3&^[s"?eq34[/j.
+!Br[G48_,I4?GVc3]fAa4$5Vgr]L$?!^&V.r]:0B4$<C(s#pBGr]L0Cs#^9ErBC-B!^Ak4r]CNO
+5X@\#5<qFu5XPE8s$-]Q5X.4fr)*Gks%rbmr_EMjoM>9Z!)`_lr_`\nqc!Jlq,I8jr_`_prD`bp
+rDNVnr_s#!;GpFlr_rkrq,7/i!E<(s<rZ8!=TDS'=8c8$=8c7u=oVV(=7]Pj<sDT#:f'q_:&[cf
+9hZsHrau1CqIokBrG).DqeZ.Hq/-1/qG[GnrD`eqs).XNr,DLPrc8$[rH/'^s*"Bc!I/nhH>IqU
+I=6QoJ:N3&K7ei3L51SAMMmFQO,oBcP*D5tR$a>3S=Z@HTqeE\Vl6VrXfek3ZEpsI\@K2`]t_A"
+_o0O7aND]McHjnce'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-a?2nF?&>o(2MQo`Fj]p\ssfq>^<h
+qu-HlrU^#>s+13ns*t~>
+JcC<$JcFg2li-e[r;?EgrqcWirV6Ees7ZEas7?<_rUL!ZnG_l8md9E.m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+eC;sqdF$=ecHa\YbKJ&LaI8NarKmPMrK[DKrg3PKqN_&E$#Z)dKP@'H
+PDFhiM&U-0V5C&\S!T=uMMR%?K8kqQOL:.TUjRfHLQqV#r0@8Iq3CN8!L&]7OoLO:Oo:FEOcY\(
+OnFh4O8k1>Nr+n8NY@J6NfT3\EcH&=EI<(ZH?sj]H$K:5s*>,]?<poE?=.&F?!^lF?2\%.>6.uH
+rhBFc$DF)aSt2FAR[TY2rg!nVP)t`dOH5B[MMh@hregT0s,-`2qhP6/regK/repr/Cg'g;<W?)&
+<E)pt<W#er>lIt,>QA(/?3+D>r`oG.ra,V3rF#Y4r*BA1oj/28>[1Q>>[(H=?!LT;=^539r`T;+
+r`Te7>$G06>?kH>>?kB9=^(f/r`]>)"Bnr3>$:f+!*T8%!``?(rdk!!r.Fs$r.Y0*s+^T2re_)A
+MMd=LMi*CMMi<VlN<5&uNW"n;Ns:].P*2#mPl?mGPQ6pCPl?pJQN!3PR$jEBS,8`QSc,/VTDkM_
+U%b5ZU&(M^U&UkeUB%+hV>mFdV[oJ_J:2ciF*)A=D/XbsAnM$Tqe5tCrG).Dr+u:Jokjc5rPniW
+!6G,]!6P+Vqf)@Nrc8!ZrH/'^!-\<b!I/nhH>S"VI=6QoJ:N3&K7ei2L51SAMMmFQNfT9aP*;/r
+Q^F21S=Q7ETq\?ZVPgDnXKAY0Z*UgG\%&u\]Y;.s_Sa@4aN;TJc-F\`daZdtf@\g3gtgiFi8WeW
+jlY^hl07L"m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$b5Zt~>
+JcC<$JcFg2li-e[r;?EgrqcWirV6Ees7ZEas7?<_rUL!ZnG_l7md9E.m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+eC;sqdF$=ecHa\YbKJ&LaF]!@J,k)nJG"BjI2c7-An"eaEc,JsB4baW
+JUMomGB@kDC1q0i@q5LQ#]568KRdlYEd.,(rdXrss*ainomQaer-e0cqL/BkrHnNks*F`lqg8?j
+!IK4[HNJM<Gl2h/H?jd;<`E+#?X7#F?<piD?<plD?XI2><)cdo;,^CjqbdYp:f1"b;-SGHHO4tD
+H?ja[GBJ(OrcANgEGoc5D/F0+Ch[Y`B`MiFC&D]GC\qlGC[Q!RA6;Pt8P2TJ91hcI8kMZH8kVfU
+;H!HjrDEYp<;]\o;Z0Pm;ZB\o;ZB\q;Z9Vp;ZBT!:f1+g;,L.drDNVl!)WDe!`2`krD3Ml;Z9Ph
+:]jQk:f73grD3Ags%WYi92'@(EWC1ZEWpN+FEMbMq/u[[qf`$brHJ9ds*=Bcs*OcnrI+KjrI=fs
+r.4j!s+C-#pP&L!reLH,qhP-+oSNR)rJC?-regc8pkoZ9HuX(CDJO!"An5Ih6=sj/BDZBAC&MfB
+C]&#HD=qcHK_^o3QN3?KDu4MLEW1"XF8^4\FT?U`G6)r6rd&F.I!pElIt3'#JqJ]/KnbA=M2I4M
+NK0']OckonQ'[l+S"-%@TV8*UV5C/iWiW>*Yd(OA[^WcW]=bkm_8=+/`lQ9EbK\>ZdF-Oof%8R.
+gYCWAi8EVTj5oFckiq?sm-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2t@l~>
+JcC<$JcFg2li-e[r;?EgrqcWirV6Ees7ZEas7?<_rUL!ZnG_l7md9E.m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+eC;sqdF$=ecHa\YbKJ&LaAl7><;fho<;okt<;'>k<!b-2/1WD61bpa;
+r\+g>5s@Lp4Zk\a2`3HI1,Aed#WFn085E)[;c3-brD`YmlVd@RpJh)ir`&nrs&/hpqGR8jr)38d
+pJM)l;Go%D/-dm_0J>.71,Jnb!&=I/r]^<E#!P144ZYSar]1!<s#1?G4[_b/6UO706U3t)qa(3G
+s#^$=oJln4niHn85!Ad*rB13C3&^^mr\jd6s#0m7"#`/!4o7>D4[)"mr]L9G4oIJ@3rV5@3XIl/
+3]fGd4ZtniqE=g?r]C-@"$A_25Q3hN4[)%o4Zkk*4TRW-rBC6E!^8b1r]^<D#sCL=69d\"5<qL3
+62s1T5sR[p3B0l5r_ibn!)WYjs%r>`qG7/hrD<Mks&/_mr_iPkr)<Sm!)rhqr_rbnr_req"B/2r
+;cEZp!)r\krDN_r<W#nt=8Z2$=T)>#=9)G#=Sc/$=BG)rpf@u+;G^.a9MJ8T8kVfR-Y?uiBDZBA
+C&MfBC]&#HD=qcH;"[cf;u:M1E;=MQErL.YFT6I`G5ZUcG^9:7D0pYYI=?ZrJ:W<)K7nr5LPUeE
+Mi<XUO-#KePEhE"R$jG6SXuLJU84W_Vl?\tXfen5Za@0M\@K5a^;%M$_o9X:ai_fOcHsteeC<($
+f\5*8h;7)JioB(\k2tmll0@X%mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+13ms*t~>
+JcC<$JcFg2m/Hn\r;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@SlnRhkl07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?FfcHa\YbKJ&MaN'^9rKmJKs-<VMrKmPMs-E_Oqj%2G.[+_9
+Mh#Q8R?E>WKo(Y!Xf&(lTpq=2NJ`IHJqArAOH-9$Z_2YsK85_Wq3LoCs-EJGqNLuFqNM#EP4"J4
+OS+b8Oogc-OT(C8OSY"?NfB$Yr/^`8#EOn+E,]f:E;P"]H3SY@H?ja^Hi@=R?X@)Hra#Y3?s`b9
+s'$"OU8+KXTV8$NT:VUDR@9TDQiE?WP`h)gOH>N^MuJV2M>rJ1M>rJ1M>W/0M>iD,MuS_BMg/l6
+<E3("<`T,u!*0"tr`oG,r`fG/ra#V4?N"./?2e10?iFI5?i441?hIb*>n1+F>[1K<?!U]>>$5'7
+>Q.h+>Q7k,=o;G)>[:Y6>6.l1rEK;*s&fA+=oMV'=9)M&<s)Q+=B59Nr.Fp#rIt9+!f)Sgre^u>
+MMd=LMi*CMrf$`6!fW+urJpo=#*=t1P*;)orfd>G!0d5CrfmJLrg*\RR@=)DrLE_TrLWkXrh0:b
+p7VGZq4de\s.TOhV#I4jV?*Tlp88IpO*lA%G]RqFE,KZG<+]cUqe5qBrbD7ErG;@Jo54Q3r5ScW
+!6G/^!m,A!qJc4Lrc8!ZrH/'^s*"Bcs*+Nhrd&F.I!pElIt*!!JqJ]/Knb><M2@+KN/is[Ockom
+Q'Rf*R[]k>T:qsRUo(&gWiN8(YHY==[C3QT]"G_k^qmn+`Q-'AbKS8Xd*^=le^rF+g=tH>hr*JQ
+j5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-hqY^6ir;HTdrdk*#s2t@l~>
+JcC<$JcFg2m/Hn\r;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@SlnRhkl07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?FfcHa\YbKJ&MaN&j_rIFotq1/Kpp4!!h-Wb;#?rqSmD.[0d
+AS"knI=6EdF`;86BOk^b@VTXnC4C8WIr0.FGO^.^J,XlsIJeKcIHl:XIK+]mHiJKnHN8BgHNJSA
+I-Z+[H?f=4%XM2X<`W4+?=%#H?X@&Hra$UP?=7/><)Z^m;,^=h;G^4g;Gg7f;,0tmI=-EhHiA<p
+H[9p]G'<h,$?U<-E,TW2DJX*)rbDCGs(M@FrFu=JqeH+GmVE#A?rT]hr^m2a9)_E^9)hK^;uT\o
+;>jAn;cNZnr_a&$<)Z^n;H$Il;uKVn;u]bq;u]bo;?'Po;?'Gm;>sJm;?'Jf;$'Qk;>j;l;,[?i
+qG78k:f($g;#O2g;#a8n:J=GTErL.ZEWC1[FT6O[FoHR]G5umdGQ2pfH2)^cHiJKlIJJ?jJ,Xur
+Jc:9$KD:,pL&6W(L])u(L]3,*M#`G3M>iD1M>E,/MZAY.M\(ViEH#f3CMIHnAS5pMAnPcRB`2ZE
+CADZDD#8)@D?,@dPlR-LQNEIkDu+GJEW1"XF8^4\FoQXaGQ2mfH2`,,H[L6iIXcitJ:`E+KS>/8
+Ll$tGN/WdXO-,ThPa.Q%R@9V9StD^MUSOcbW2co#Xfnt7ZaI6N\[oGe^VI\&`5Td<aihoRcd:(g
+eCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcEmm
+J,~>
+JcC<$JcFg2m/Hn\r;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@SlnRhkl07EqkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?FfcHa\YbKJ&MaN%:\r`&eqrD`Yos&Strr_t<u0eOq13AiTH
+/h\n52F0Sl4$G_d3Ar`O0ekFA2`<NQ5!DJ4:f:7i;Y!cd<;KP_;X[QY<;]\p<<#ns;Z9Vj;Z9Vm
+;YO&_;@ZVX.kE2$0J>.60/57<1]B-A0f(XB5!D+n4Zttk4?GJ_3][-u#<=b*6psL56iKLP6Mj(K
+579V94$5Yg4?GYf3][1!p,N+6q`=d?q)\X?5!Ad*rB13E3]Hsos#0j6"u\=r2EsDhq`G0J5!;%m
+4Zttm4T7G?3rV2F3]fA`4$5Y)4o[YA4o[VN4Zkef3]]>c5<o-2s#gBH5PdMD4$EO+s#g?Gr]L9H
+55mYL4[25!5<hCtr]pBI$p[*D5X.7g3DraP;,I6fs%r>`qG7/hrD<Mks&/_mr_iPkr)<Sm!)rhq
+r_rbnr_req"&i)q;uKYq;u'>i;ZTitr)Ni"=T)A&=Su8"=9)G$=SZ+j=SPtr=9DGt:f%'brC[8h
+.V<=+qe5qBrbD7ErG;@Jo54P)p/D)lDf>Jkpi6:RrcA$[s)n?brceBe!."QiD0pYYI=?ZqJ:N6(
+K7nr5L5:\CMN!LSO,oEdPE_>uR$jD4SXuIITqeE\Vl6VrXf\e2ZEpsI\%0)_]t_A!_SjF6aN;WL
+cHjkbe'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MQp&F^cp\jjeq>U6gqu6NlrUg)?
+s+13ms*t~>
+JcC<$JcFj3li-e[rVZKgrqcWirV6Bds7ZHbs7H?_rpgcnnF5o8mdBK/m-Es%l07Epk2tddro56_
+iS`YOhVI#CgY1?5f@SU(eC;sqdF$=ecHXSVbK@rJaMu3uQi!*KPlR-GQN3?KPq&#^PAk5oKl!KQ
+P)"UEM2Q#LW2QJbS=,V&MMI"@JrPePOK4SPT6c*AM#EV7QMd$IQMHg;PlHpIP4"G4OS+b7Op$o/
+OHG[uOT(:@OT(:CNfB$YqiCZ8"-7MCErL"cH@(!bH$Xa^G^4R\rd+]o?=*P:#[LbC?XI)E>[@>6%
+<SGBUSFKTTqJ$NSXl8LRf8ZRQ3rh=O-#KcNJi^PMZ/G4M#N55Ll%"HqM>30qhb3+rJLB.req>@F
+'r!J<`N1$<)Zar<)ig$rEK;,!+#S1s'Gb4r`oJ/ra,S2ra>b5r*BA1oj7Z(rETA,&6rLG>?b66>
+[(E9>$G37>$:c,s',P0rEB;*>5_\*>5qb*=oqi1>5hV*='8Z'<rlE'rdt*$r.P$&re:K0Ll)+g#
+`FRuMi*FMMi7Rnqi(Z9NK*mss,RAGOcklkPEc'1rfdDHq3:lD!1*VN".5LFRf8fTSGJfUT)##XT
+`:_ZTE(\\UAU_bU&h$brM9RmVl'*a&"nr1H[9mWEc5u9EdUi!BDZBAC&VlCC]/)ID=VTEDZI!=`
+rF'\aND[%E;+AOErL.XFT6L`G5c^cGQ<$gH>._RI=6QnIt3'#JqJ`1L5(J?M2I4MNK0']P*2&pQ
+C!u-S"-%@TV8*UV5C/iWiW>*Yd(OA[^N]V]=bkm^r"".`lQ6DbK\>YdF-Lnf%8R.g>(N@hr*JRj
+5oFckNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTcrdk*#s2t@l~>
+JcC<$JcFj3li-e[rVZKgrqcWirV6Bds7ZHbs7H?_rpgcnnF5o8mdBK/m-Es%l07Epk2tddro56_
+iS`YOhVI#CgY1?5f@SU(eC;sqdF$=ecHXSVbK@rJaMu3uJGaooJGjumIf=aD=]8sC=F"t)ARK+^
+B2sP3I<p-]F)Yu1AS,F^C2.O#J96HoD/jT@J*_XaIJnQdIHc4WIK+]nHiAEfHiJHoH[PX9!.=Ec
+!.+Qg$s?Y6<`W4+?=$uE?=!M9%:<LM?scl4;c6Lj;c$?h;ZBSn;$Tj'IXZZlH[Pd<s*+Nfrc\9`
+!HW8[E;sbXDJO')C&VlFC&_lFC%c<?C\qoJC\;KGBNn>*r^m;d8kDQFr^m8h;H$Nn;Z9Pl;ZBYq
+<;fbo;@$6#;c6Ll;H$Nm;Z9Vp;ZB\q;Z0Jl;?Kcm:f73ir_`\lr_`\lrD<Vm;,R6f!)ibmpJCle
+s%rVhr_Ntu:/4JV965/pEcZ=$F9-N-q/u[[r-/0crce?ds*=Bcs*OcnrI+KjrI=fsr.4j!s+C*"
+pP&R#rJ1?+qM5'+qMG3/s,$]3qhb0,s,-l7onsB?KmI`XDJX*&B4PReD+/)Mqe5tCrbD7ErG;CK
+no"JG!/136!g]1>qJc1Krc8!Zr,hs]s*"Bcs*+Nhrd&:*I!pElIXcluJV&N-Knb>;M2@+JN/`jY
+OHPckQ'Rc(R[]h<StMdOUnsrdWN*&%Y->1;['mEQ\\#Mg^VI_(`Q$!?b0/&TcdC1ieCN7(g=k?<
+hV[8Mj5]7`k3)!nlKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`noDX=@JcEmmJ,~>
+JcC<$JcFj3li-e[rVZKgrqcWirV6Bds7ZHbs7H?_rpgcnnF5o8mdBK/m-Es%l07Epk2tddro56_
+iS`YOhVI#CgY1?5f@SU(eC;sqdF$=ecHXSVbK@rJaMu3t<;fhq<;]bq<r,hq<#dM>/h8Y:2)?p=
+0/,+=69mau4Zk_c2`3EI1,1`e2@DN/5"ACG;H$Fi;H!3e!)iPimS`LPpJh)ir`&nrs&/kqq,72j
+rDEYp;YX,a;ZABJ/-[d_0eY481&Ea*1]KWF4?Ykk5!(kf3BI+!#rjq*4@M\.7RKQB7/fLS5sdp:
+5n#tC4Zb_g4Zkhg4$5P"3;,?43rD&>4SUu=4[/^)rB13D3B$dm!&jg6"u\=r4$Gklq`FmB55RJD
+5!8g+q`=a=#!+h,3]fGdr]U9Dq`XsA#sCC54$#Da4[)+056!bI5!M7.4TRZ.rBC6E"[5(45!M70
+4:+5;5sRY"5X.M!r'C?J"[PC<3B0%u;>j8j;"RQ\;#aDl;#X>l;YsDl;Ya;i;uTYp;uK\p;uKVn
+;uT`!;c6Lm<W5tt;u'>j;ZKhq<rZ5$=T)A&=Su7s=SQ%s=9)M!=SZ%q=:\J0:esk^:JFJT9MA/0
+B4q*Trb;@Hq.oqFr,)"Bs).m6pJh!.pMp1QrcA!Zs)n?brceBe!."QiBmY5UI=?WpJ:N3&K7nr5
+L51VBMMmFQNfT9bP*D5tQ^F52S=Q7ETq\?ZVPgDnXKAY0Z*UgG[^`l[]Y;.r_Sa@4aN2NIc-FY_
+daQ^sf@\g2gtgiEi8N_VjlY^gl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVc?eJcC<$
+b5Zt~>
+JcC<$JcFp5li-bZr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Sln[nll07EpkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[n^)eC;sqdF$=ecHXSVbK@rJaN)9=Qi<9NQ2[*KPmNbCQBml'Q^=#(r08ar
+PELQ6N.Yf;SWSb]M2I+%Y,S:rURRR7OGemLK7T&DOH,9bZ_2VsK8KMkr0@DLQBqE5s-EJGpQYT>
+s,uf4!0Hi8rfR8DrfI/BooT'3"-/A#Nr+n9NrF,!E<:*,HiA9kH?oL9!IK.lHOO4d?=7&G?sd5H
+?XR4>>lS(>>^iTHU8+KVTV8$NTV%eSRK/`SQO9%CP`h)iOcPK\MuJV0M$&QjMMh7e!/gZ1qhY3.
+pP]$0"Fk5k<E9$!"&r2t<;Tr!>Q.k-?iF@4?XE_:s'>V1ra5V3s'P8%s'>Y0&RAXG>?kH=>?b65
+>[1K:>$G51=o__(=p%u6?!RA5#?b56>?b?9>5hY2>$5$4=]ed-=]tZ("'JZ*K)UE#K`-W(L'!-d
+M>iA5Mi.Ik!fDnorf$`6!fW+urJpo=#*=t1P*;)orfd>G!0d5CrfmJLrg*_SR@9TDS,JlSSc,/T
+T)bP_U%Y/SUA^eaU&h$brh]UkoVW4uVjr`oH['aUEc5u9Fa/Q9B`;`ECAM`ED#A/CDYe8OYPcE?
+`rX<)rc%RNrGqmYr,hs]s*"?b!dK!9rd&[5I!pElIXcluJV&N,Knb>;Ll%"IN/`jYOHG]iQ'I]'
+R@9V9StD^MUSOcbW2co#Xfnt7ZaI6N\[oGe^;%M$`5Td<aihoQcHsteeCE.%g"P39h;@/KioB+]
+k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcEjlJ,~>
+JcC<$JcFp5li-bZr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Sln[nll07EpkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[n^)eC;sqdF$=ecHXSVbK@rJaN)9=JGt#uIf=iqJGXilIf=aE@8plK<HrV%
+B45IdAQFD2I!p9_F)Yu0An>C[CMIX"DKU\`D/sZAIt-d5!.FfnomQ(RqL/Bkr-SHkpNlshH[P.+
+!.+Wi&6`4==&rC&?=$oD?!goF?s`h?s'Pe)"]SDt;H$Nm;?'N';,C+f:1Sj'I=-BhI!P^;s*+Nf
+rcSBdFEDR&E!C5tDJj9,C\qlEC&_lFC%c<?C\qoJC\2EEA6;S*8de9a8OuBD;,L.f;cEZnrDEMk
+!E2tr;uKSo<;ohr;?Kiq;cEWmr_ikr;cEZnr_`Yms%ren;>sJm;?'Jl;?'Jm;$9]m:f($e;#F2g
+:]OAj:]OAl;#O2h:]O;j:B!ogEcZ=$F9-N-q/u[[r-/-bs*+Hes*=Bcs*OcnrI+KjrI=fsr.4j!
+s+C*"pP&R#reLB*qhP3-q2,*.!/^W2qhb0,!fMqnoSX6=Mh?:pE,KN,BkCsgBPVVbB`;`ECAM`E
+D#A/CDYe8OK_gr7QC%Sip2U%OrcA!Zs)n?brHA<fH$TC8FF/C`I=?WpJ:N3&K7el4L51SAMMmFQ
+NfT9aP*;/rQ^F20S"6.CTqS6WVPgAmX0&M-Yd1UC[^WfY]Y2%o_8=.0a2lBGbg"G[dF-Opf%8U/
+gYCWBi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$ao?k~>
+JcC<$JcFp5li-bZr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Slndtml07EpkN:pgjQ#:[
+iS`YOhVI#CgY1B7f[n^)eC;sqdF$=ecHXSVbK@rJaN)9=<)`cq!*/nq#$"W%<E3(#qGmMo-RUAp
+.PWqA1,(@70ekRR5s@Iq4#f8[2)I'C0fM!L2E*f`7o)u[;uKPn;Z'Ji;Yj>X;X[QY<;]\p<<#nr
+;ZB\l;Z0Pl;YX,c;?eg./M&D(/H.C(0FTZi0ekF=0etR@5!;+/4o[_G4T@DM3]T/\3&rr^7R]^7
+7fGdT7/K=N5mBS=5<_4m3rV5F4$5Ve3][!qp,N+6r&ap@q)\X@5!Ad*r&k'A3;bW62Z5N43s%Q0
+55IAA55RJD5!Aj+q`=a=#!+h,3]fGdr]L6DqE50J4Zkhg4$#Gc5!T!0"$Jh35PmVD49.PC55dVH
+5!M4pr]L3Fs$?ZL"$f(95l<qJ5R0S?5<h+f3)KTM!)WAb!DZGf;#X>l;#X>l;YsDl;Ya;i;uTYp
+;uK\p;uKVn;uT`!;c6Lm<W5tt;u'>j;ZKhp<WZ?)=T2J'=T2Ct=SQ%t=T;P"=SZ%t=9)M&=:SD5
+;,9t_:/">S8kViT8Gd*"C&MfCC]/)ID=qfCDZEW/<;pk1EW'qWF8U.[FoQX`G63#7H2`,3H[L6i
+IXZcsJ:W<)K8#&7LPUeEMi<XUO-#KePEhE"R$jD4SXuIITqeE\Vl6VrXf\e2ZEpsI\%0)_]tV7t
+_SjF6aN;WLc-F\`daZguf@em4gtglGi8WeXjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<h
+qu6NlrUg)?s+13ls*t~>
+JcC<$JcG!7lMg\Zqu$<frqcWir:p<ds7ZEas7?<_rUL!ZnG_l:md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXPUb/q`Ga2Z*:QBqN8s-<bPPa%I1Q3*D=QMm*KPTH$O
+KPca#K:eWqL4Y5<M/')jWMZG[R$EbmLk^S6NrG(FOdibaH@pp/PkLCAQMd$IQMHg@Pl-aEP4k"<
+OSb.?OSP"=P5UOBOoUXDOT1I9OSb(=NrG%8O8k4sG]e+LEH#l:H[0j^G^+OZH?jd^H[L6J?=7,H
+?XR2H?XI2I>[(H=?APVXV4s`YTV%pMTDkG]RKf.EQ^<u%Pl6aENWtH#MMm=HM"ul1Ll$tGMY)c&
+M#E5)MuS_CMg/l7<E<1&<`<5u>l@n,>R4YC?=$uF?!LY6?2e11?iOL9?XR5Jr*BA1oj/><>[1Q>
+>?b?<?!LT;=^,-8>$>-7r)s2,>$>/0>mOY>>?Y05>?bA3>5q_3>$5$4=]ed-=BYQ'"Bef*<eL='
+rIt6*!f)Sfre^i:MMmCOrJUZ6qi(Z9NK*mss,RAGOcklkPEc'1rfdDHq3:lD!1*VN"dk^HR[]fE
+SGSlUT(nrXT`1YZTE(\\UAgkaU&h$brMBOkoVW;"Vl-D[MLKnsFEMP@EH62HMYq/eC&VlDC]/)J
+D=qfBDuXbVYPcE?`rO6SEW'qWF8L(ZFoQX`GBJ.UH$Xd`H[L6iIXZcsJ:W<)K7nu6LPUeEMi<UT
+O,oEdPE_>uR$a>3S=Z=FTq\?ZVl-MoXKAY0Z*UgF[^`l[]Y2(q_Sa@3a2lEHbg+P^dF6Uqf@\d1
+gYL`Di8N\UjQ>UfkiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6HjrVcBfJcC<$ao?k~>
+JcC<$JcG!7lMg\Zqu$<frqcWir:p<ds7ZEas7?<_rUL!ZnG_l:md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXPUb/q`Ga2Z*:It.HHs*t#upj`0ird>_o<G>fKGB7V4
+@:s4b=+PgLH[0aTEG]H&AR]-JC'eZpGDD2qEcQGSrdX9`s*alooR6"RqL/?jrHnQlpNm$jH[L0f
+m<]=hH!FQW=]SO'='f3=?=!P:r*LCN@8g-(;c-Cj;,L4h;,U:h:f(#(IsufmI!U2<HN/6iGQ2jc
+F9$=[E;j_\D/=$(C27QuC&VlFC&VfEC%lB?C]%uKC\2EECLC-@9)hNd8k;`SrDEPmr_i\lr_`bq
+<;]\o;Z0Po;Z0Pm;YsDj;ZBVo;Z9Mn;#O;l;$'Qk;#X;n:f1*c:]jKi:f@9ir(mSp:f("c:f70f
+s%`VirD<Jgs%EGc9`B/.FoHR^GQ)jeGQ2peH2)^cHiJKlIJJ?jJ,b&rJc:9$KD:,oL&Hc*L\li'
+L]<2,M>)o(M>2u#MuJYFMh6.lDf0B,C1h-kC2A"iB`;`FCAM`ED#J5DDY\5NDut]WPl-dHQM#7r
+ErL.WFT6L`G5ZW-G^4R\H@(!dI=6QnIt3'#JqJ]/L5(J>M2I4MN/is[OckomQ'Rf)R[]h=StMdO
+UnsueWN*&%Y->1;['d?P\\#Mf^VI_(`Pom=b0/#ScdC.heCE1'g"P3:hV[8MioB+^k3(smlKdg'
+mI'H3nF?)?oCW%T!quB_rqQNhs8)ZjrVZWmo_sFAJcEjlJ,~>
+JcC<$JcG!7lMg\Zqu$<frqcWir:p<ds7ZEas7?<_rUL!ZnG_l:md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXPUb/q`Ga2Z*:;cE6dq,RDn-RLAs-n7271GCI80JGFP
+5X%@o4?5A\2Dd0D0fM!L2E!]_:/Fec<;]Vn;ZB\k;ZBSo;Z'Jk;?0Yb;XdWY<;fbq<<#nr;ZB\l
+;Z0Pl;YO&e;ZABN0J*/S!\uJar\=F.,;Cr/0etL?5!D(l5!;(l5!(bc3B9&Z3BBDp77K^86pj:/
+7/B4T5sR\"5<_4lr]C?G4?G\f3qYK,3<2,<48qA@49%DF4$>bjq`Od>!^&M&r&"O62*1[t"$Jk4
+4o7>B4[/d,!Br[F48M#;49%>C4$5Y!4oIMB3s7T,5!M:/4p+#54[/g-!B`OD56!bH5!Aj.r]CKN
+5=%V#5<qFu5l<qJ5RKeB5<h.f3''i3;"m`e:/=[`;#X>l;#aDl;YsDl;Ya;i;uTYp;uK\p;uKVn
+;uT`!;c6Lm<W5qt;ts8j;ZTitqc<\ur`K5'rE&htpK@JtrE9#"q,dPts&o2#%9$)":JOVY9M7uQ
+9M\:YB`;`FCAM`ED#J5DDY\5NDu``1<:t80ErL.WFT6L`G5ZW-G^4R\H@(!dI=6QnIt3'#JqJ]/
+L5(J>M2I4MN/is[OckomQ'Rf)R[]h=StMdOUnsueWN*&%Y->1;['d?P\\#Mf^VI_(`Pom=b0/#S
+cdC.heCE1'g"P3:hV[8MioB+^k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)ZjrVZWmo_sFA
+JcEjlJ,~>
+JcC<$JcG$8lMgYYr;?BfrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Sln[nll07EpkN:pgjQ#:[
+iS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_toYtPl?sFQMm*KPUVfZJq/u5Jt\Zu
+N/!1FLhEfhW2QScR$EelL5:P9Nf]9^VQ,Z]H%^j.rfm,As-EPIs-<_OQBqB4qiq,G!0mAEooT69
+mZII2!0R8B!0Qr9qMt]<NK*gr"*f!1F8g.iE-chUH?jjbH[9p`H@1-fra#e:?!guI?!dM;#[LY=
+>[EDiVl'Hfs.KCcrLX+\Rf8]hQC!r'P`q5lP)t]aN/<FMM2-h@M"ul1Ll$tGMY)c&L]E;2MY;u-
+N!Y2Z@9$?0<aK$8r*0;->[753s',b7?X@&G?=!P8s'>V1ra,e9?XR5JrEfM2oj7Z(&6rLG>[(H=
+?!LT;=^#$6>$Co0s&oD*rE9;->[:Y6>6.l1rEK8)%9Zk;>$>'2=BAR,='&N&<ruB'<W7[ML&Qf.
+LPUfdMZ&G5N;eb6N;\b9NrG%:NrP.EOHG]hPEV71PQ$dHPPLIBQ2d0MQN`bER[T_8rLE_TrLWeV
+s.K@bpn7Y\pnIe^qk==jUnso`V5:'ZVuN\*V433gH?aRRDf0Q8GB/T?B`;`FCAM`ED#J5EDYe;K
+Dum/]rPnlXpi67QrH%jXs)n?brHJ9d!."Qis*J[3I=6QoIt3'#JqJ]/KnbA=M2@.LN/`mZOckll
+Q'Rc(R@B_;StD^NUSOcbW2co#Xfnt7ZaI6N\[oGe^;%M$`5Ta;aihlPcHsteeCE.%f\5*8h;7)J
+ioB(\k2tmll0@X%mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+13ks*t~>
+JcC<$JcG$8lMgYYr;?BfrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Slndtml07EpkN:pgjQ#:[
+iS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_ghW6!.Xuuq1&0g*IVC'CL1CmF)G]&
+B4b^UJUW#oHZsLNChRBl@q09QCCGN<FHC<ZF*W1_IXck5If+WoIeS9TIenKmI/SEkI/&'dI-l7c
+?!CH6=&r@'ra$+B?!q&H?X7)I?XR5>;cH]p;@HK$;,U7g;Gg7e;/Ca]IfFcpI/\EoH[0j\rc\Tj
+FEDSDE,]apD>nANCBSBdBPD2[CA_cIBPD/XC%lB?C]/&LC\)?SB3S5*8kVfT:esna;,U7h;cEZn
+rDESms&/nsr)<SmrDW_os&0&";c?RlqG[8h!`;inr)*GkrDEPj!Du\m;>O,h:B=9irDEDf"&Vlk
+;>j>k:B4/g:]O;j:'=6`9M'@$FoHR^GQ)jeGQ2peH2W'hHiA?kHiJKlIJJ?jJ,b&rJc:9$KD:,o
+L&Hc*L\li'LB*/,M=ui'M>W52M>iD)MuJ\8N=LhtG&VA:Chm]rAnPjlF8fkPC&VlDC]/)JD>%lD
+Du4JRK`./7Q2#@tErC(VFT6L`G5ZXbGQ<$gHN/>1I!pElIt*!!JV&N,KS>/9Ll$tHN/WaWO-,Tg
+Pa.Q$R$jG6SXuIIU8+N]Vl6VrXf\e2ZEpsI\%0)_]tV7t_SjF5aN;WKc-F\`daZguf@\g3gtgiF
+i8WeWjlY^hl07L"m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$aT$b~>
+JcC<$JcG$8lMgYYr;?BfrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!V!Uf@Slndtml07EpkN:pgjQ#:[
+iS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_c-&(q,JD6-7:Gr.QTIE1+k460/c-^
+5!M1n3B9#U1bpg@rAFm?5=SCE;,C3f;#jMn;u]bl;?'Pl;uBPn;tEoT;tj8i;uTbr;uTYp;u0Dj
+;u9Jf;?'ND0J>%1/1`;&1,:R;0f(R?1GLX?0etLJ4[(tk5<V1l4ZYSa3B0&Z3^?147K,[S7/B7M
+62s1[5<V+j4?Y\e4Zkhg3]K.m3;5E53r;#=4T%;?4T@VA4T%>K4#o2V2Dm?S4$*=%"$Ab34o7>B
+4[/d,s#pEFrB'm;r]C-@!BWF94T[`/4T%8B5!M:-4omf1q`XmAs#gNL4Zttn55mYL4[25!5X.Lu
+r]pEJs$-iU5X7Ou3&ru[pJ1ic:J^mbr_`\ls&&bnqG[Dlq,I8jr_`_prD`bprDNVnr_s#!;GpIo
+r_rkrpeq,j!E<(r<rQ5#=TDS'=8H%m=oVV%=o;Ct=8l>$=nu/0<`Dmm:JOYZ9hJ&R:/+@[B`;`F
+CAM`ED#J5EDYe;KDuid6qc*?1rGqjXqfMj\s*"?bs*+Nhrd+TkDgZt]IXcitJ:W<)K7nr5LPUeD
+Mi<USO,oEdP*D5tQ^F21S=Q7DTq\<XVPgAmX0&M-Yd1UC[^WfY]Y2%o_8=.0`lQ9FbK\>ZdF-Op
+f%8R.gYCWAi8EVTj5oFckiq?sm-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2b4j~>
+JcC<$JcG'9lMgYYr;?BfrqcWir:p<ds7ZEas7H?_rpi5BnF5o8mdBK/m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/hZE`l5p7_Y]VrPlI$GQMm*KPUr#]J<PP&BUtHH
+K8,/;BWeJ9VPKfPQ'./_LPCG6O-#Eo[#_J;K8,>JPa%C2PkgUDQN*6GQMHgDPlI!KPl$[EP5^RD
+P5CCAORnS7OSt=@OoUXDOT1I9OT1@AOT(:BNfB%sNs^5ZGB7bBE,]iDHMr+5H@'saI!^3fIpQGh
+?sR,H?sR)G?sm5D>@)cXWhuVeUS4C[TGX;oT:;:<R@0D.QB[VtOcklfNf8mQMMd8fL\Zc.Ll$uf
+MY)c'L]E;2MY2o,N!XuM>ZP0<?X6l?qHWu's',b6?X@&G?=*V9s'>V1ra,Y5r*TG0s'PJ+ra#G,
+$!UY?>[(E8=^,,0>5qh+=o__(=oqr7?2e%0>$5#,>Q.e6=^#!3>$>$1=&rI+r)X#'<E<+"rIt9+
+s+^W2M>iA8Mi<RPN;eb8N;JV7NrG%9NX(W,OcklkPEc'1rfdDHq3:lDs-E\O"dk^GR[]fFSGA`T
+T(noXT`(SZT`:_[U&^naU'IHhV50o`V5Ed\rMU:(RY-!5GBIqDE,frCEfXmIrb;@HqeQ.HrGD:H
+qeu:Ls)A(C`W!mWa89lSErC(VFT6L_G5ZUdG^4T6H?":ZI!pElIt*!!JV&N,KS>/9Ll$tGN/WaV
+O-#NfPEhE"R$jD4S=Z@GTqeE[Vl6SpXKAY0Z*UgF[^`l[]Y2(q_Sa=2a2lEHbg+P]dF6Uqf@S^0
+gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$aT$b~>
+JcC<$JcG'9lMgYYr;?BfrqcWir:p<ds7ZEas7H?_rpi8CnF5o8mdBK/m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/hZE`l5p7_LMQ6s*k$!pj`$e-[f<;?s-HOE+iZk
+An>"pJ:2cjG'%\@C1Use@UX%gCj1SVO_f#YH2W0UIf+WnIe\?UIenKmI/J?kI/A6lI!^5<I/80i
+I.qt(?<g`;=B8F&=']*<?!UfD?XI,J?sd;MrDW\n!`MrnrDF&$:f:kSIsuinI!U0erd"]oH$FRX
+rc\<`#BFd&Df'?0D>e;NCBA6aB`2ZECAMWEB`)T=CA_lGC]J8AC_1,Z:.eA];G^.b:f:1g;H$Nm
+;Z9Pn;ZB\q<;fbo;Z9Vp;ZB\q<!#ur;Ya8d;Z0Jl;Z0Ji;#aDl:]O;i:]aEh;Z9Pe;#aDl;#a;l
+:/Cjc!)NSh!)<DbqfVj\rHJ3bs*+Kfs*=Ngs*FlpH[:$crd=]nq0r9ls+'utrdt0&pk8?preCE-
+qhFs&qMFm&qhb9/s,$`4oo&d-rJ_AEJou!LD/*fuAS,RkApA!&rb;@HqeQ.HrGD:Hqeu:Ls)A$l
+rKR>Iqf2OSrH%jXs)n<arHA<fH$TC8EI3(\I=6QoIt3'#JqJ]/KnbA=M2@+KN/`jYOHPcjQ'I]'
+R@9V8StD[LUSO`aW2ZeuXfen5Za@-K\@K5a]t_A"_o0O7aND]McHjkbe'uq"f@em4h;-uHiSrnY
+jlYail0@U$m-X60n*ol<o(2MQp&F^cp\jjeq>U6gqu6NlrUg)?s+13ks*t~>
+JcC<$JcG'9lMgYYr;?BfrqcWir:p<ds7ZEas7H?_rpi5BnF5o8mdBK/m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/hZE`l5p7_XCJ"<>ea_0.Jb22Dm0@/h\k96U<n"
+4Zkbc2`<KLr\=C1!]`P9r_WVmq,./ir_ieppeh#gs&8hnr_rGe!)rhqo2GB_r)<Vps&8nps&8em
+r)<Sm!E2nk;$A[.0J4t0r[e"&"u7th1,C[ArA"I=4Zu".4W?RH4?>J`3B0#Z5"8"17R]d76UF..
+6UF.,5skQ:"[YI=4Ztq,4U3u14$,Pd3B6stp,Me,!':!=r]L-@"[+t04[)%+4Sq8D3]K#UrB($?
+r]:3E5!M4-497T/q`OsD4T.A=3rM,A3]fIp4o[YD3s.T.5!Sg+qE=d@s#gNL4Zu"n55mYO4[21t
+5X.M!5<qL362a(K56Nr+2`j(t:]F2i:]4,g;?'Jm;?'Pi;u]_q;u0Jk;uTYp;uK\p;uKVn;uT`!
+;c6Lm<W5qt;tj/k;cHcp<WH5#=T2G'=T2Cu=S5es=Su>#=SPts=T2It=:eP5;G^+a:JFPU8kr,T
+8SDf:C&VlEC]/)JD>.rFDu"APE</m7r)EQ5r,VaWqfMj\rc\6a!dK!9rd&R2I!g?jIXcitJ:W<)
+K7nr5LPUeDMN!LRNfT9bP*;/rQ^F20S"-(BTV8-VV5L8kWiW>*Yd(OA[C3TU]=bhl^r""-`Q-'B
+bKS8Xd*^=le^rF+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-hqY^6ir;HTd
+rdk*#s2b4j~>
+JcC<$JcG*:lMgYYr;?BfrVHQiqtU3cs7ZEa!qc*Urpp*Z!:^!V!Uf@Slp^7*l07EpkN:pgjQ#:[
+iS`YOhVHuAg=k64f@SU(eC2jndEp4bc-4ASb/q`F`l5p8_SVP&Q'@PuPE_;qPa%GuQBd`$qir[r
+PCf'PDe>Q)Ne`1ALhNomW2HD^S!T:sMMQq>Jrl%S['c%'H%Ud/Ocbh+PQ$gBQ1UC=Q2?gGPlR'G
+P5pdEOT:RAOoLO3OoLUDOoLOCOnFh9NrY:@O!KaFNK0'JH[0aTEcH#=H$Xd^H[0j^H@1*eI!pKn
+?XI2I?=71??N4CA?<g`>DQBe:VPBl[T`1YbTE:aYT)P/fR@';,QBd\uPECodO,X$p!/^]2r.k*)
+!/UW2s,-]1!/UN/qhY3.oo&j/!fM;CrEf\6>?b?<r`fJ.>l@n,>QJ,;r*KA-s'>V1ra5\5r*TG0
+!+5D*s'>J+$sd+B>?P*5>?Y37>[783!*T8($sR"C>[1K:=]np4>?q/2s&fY3=^#!2=BAO+=o;>)
+<`N1#<E/sPs+^W2M>iA=Mi<RQN/NXQN/[Xns,R)<rJpo=#*=t1P*;)orfd>G!0d5Crg!MLs-EnV
+R@0M5S,SrQSH>CRT(elUT`Lg[qk3q^n=foXrM9Iis/,=ari#jr&Z(tKI!^-]Ec6#:F*_hlWG-)G
+CAM`FD#J5GDYnAKE;FSS`W*pXa8U)VErC(UFT-F_G5ZXbGlN'gH3&A?rd=frJ,Xt.JV&N,KS>/8
+Ll$tGMi<XUO-#KePE_>uR$a>3S=Z=FTq\?YVPgDnX0&P.Yd1UC[^WfY]Y(tn_8=.0`lQ9EbK\>Y
+dF-Oof%8R.g>(N@hr*JRj5oFckNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#
+s2Y.i~>
+JcC<$JcG*:lMgYYr;?BfrVHQiqtU3cs7ZEa!qc*Urpp*Z!:^!V!Uf@Slndtml07EpkN:pgjQ#:[
+iS`YOhVHuAg=k64f@SU(eC2jndEp4bc-4ASb/q`F`l5p8_SZ8#pODmc-[f?=@9HQPDe`fkAn>"o
+JUVulF`hYABkV'fA797hCkIFcP&,)ZH2E$iIK4f_If+WoIeS9TIf"QmI/SElI/A6rI!^3fI!^6f
+I/A6jI//-h?3XY<>$"a(=T)M5?X6rD?X[AN?XI5Kr)3Vo;u9Jl;#jeuIfOrrHN8HmHN/7!G^"@T
+G'.kJEcH&:DZ+GPC]eEfCMNf]rFu7Gqe6%FqJ#_>qeQ1Is(hFH!,_XM!c).KrDEer:JXea;uTYp
+;uKVn;?'Pn;ZKeq;uKVm;u]bq;u]eu;c6Ni;ts8h;>sJm;>O,h;>sAl:]4)j:Jh!eqbR8ir(mAj
+r_WVj!DZGi:]O;i:'"!]r_*65rHA-`rHJ<drcnHgr-J<g!.+Wk!.=`nq0r9ls+'utrdt0&pk8?p
+!euD`reL?)r.b9.qhas&qhb<0re^T2pP\s.qi)2DJ9,[IDJO!#B4bgnApT)DC&VlDC]8/KD>8#G
+Du+GLEW)+%Q2Ye$ErC(UFT-F_G5ZXbGlN'gH3&A?rd=frJ,Xt.JV&N,KS>/8Ll$tGMi<XUO-#Ke
+PE_>uR$a>3S=Z=FTq\?YVPgDnX0&P.Yd1UC[^WfY]Y(tn_8=.0`lQ9EbK\>YdF-Oof%8R.g>(N@
+hr*JRj5oFckNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2Y.i~>
+JcC<$JcG*:lMgYYr;?BfrVHQiqtU3cs7ZEa!qc*Urpp*Z!:^!V!Uf@Slndtml07EpkN:pgjQ#:[
+iS`YOhVHuAg=k64f@SU(eC2jndEp4bc-4ASb/q`F`l5p8_SY_?qc+V8-86o+0/kaD0.\b02FBbo
+5!1qg3B&iR1bga?r\b!A5Y"[K:Jb!b;?'Pn;ZK_i;?'Pn;uBPn;tEle;uTbf;ta2h;u]hr;u]bq
+;u0Dj;uTYq;c<Hh$nj=h0.nh-.P*8.0JNJ]!])Sfr\FL0"#<&(4T7JU5!1ti3]]8\3BB8l7R]a8
+77I2Cs$ZlSrBgHKs$6NG#!=t/4Zkegpc8%-p,W"3r]L-@"["q14?bq*4Sq8J4?>Yh4?GVe3]d4$
+r]^0@!^8b0rB10F4oIJ=3rM,C3]fGe4S:l;4T7DE4?Ykmp-/@:rBC0C&3i?B4Zkhi5<hG!5<hCt
+5X>65r]pHI!^8S&r]:$Ss%`SirD<Gi!)WYls&/Yks&&hqqGdAkr_`_prD`bprDNVnr_s#!;H$Op
+r_rkrpJV#i!*/qt!*B,$s&f>(r`Au!mTKNkpK.>rr`Skq##nJs:JX\ZrCdAj92&/rC&VlDC]8/K
+D>8#GDu+GLEW8u:<;pn8ErC(UFT-F_G5ZXbGlN'gH3&A?rd=frJ,Xt.JV&N,KS>/8Ll$tGMi<XU
+O-#KePE_>uR$a>3S=Z=FTq\?YVPgDnX0&P.Yd1UC[^WfY]Y(tn_8=.0`lQ9EbK\>YdF-Oof%8R.
+g>(N@hr*JRj5oFckNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2Y.i~>
+JcC<$JcG-;lMgYYr;?BfrVHNhr:p<ds7ZEas7?<_rUL!ZnG_l;md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k32f@JL%eC2gmd*L"_bfe2PaiMNB`Pod5_SO%dPlHpIPl6gGPlI$HPl?pfP]h(a
+DeGZ/OGACEMe9,pW2HD_R['+uM26n?LAm5@]s*X+H%Ug1OH>V(OoU^FPkgU:QMHgDPlI$KPl-^F
+P5UOCP5LIAOS"Y8OT(C@Op$o/OHG[uOT1@AOT(=@NWtJkIX?B_FT-7oE-ZeWH?spaH@'paH[:-i
+?sd8K?N+=3?N4@B?sR#A@&p?.WMZGcU7e4ZTG=)lT:D@=R@9J.QBdc$P*:ugNfAsRre^]4reCE.
+rJ13*!/UT1s,-K+r.k?0rJL9+s,7&KP(.9G?Nsb>>[:W?>l%\)>lS10?34D;>lJ%.?N4C4@/OC2
+?N4@4?2%\*?27_0?!LT;=^,,0>5qh1>?Y35=oMS7>[:W?>[(B8=^#$6>Zt>1=oDM-=]ed,=BYN&
+"]eT'<E+_PLB*20M?/ZorJUc8N;\b9NWb?%NfB%rNrP.EOHG]hPEV71PQ$dHPPLIBQ2d0MQN`bE
+R@9V7rg`bS!hPsSpRhDX!MH.`T`1YSUAq"eU]RBiVX^S`W;W\,UR?UZHZaLPE,or@HZbjXC&VlE
+C]/)KD>8#HDu4MIEW=#X`r'lTF8C"XFoQX`GQ2pfH2`-iHN8HmI0"eHrd\m;JqJ]/Knb><M2@+J
+N/`jYOHG]iPa.Q$R$jG5SXuIITqeE[Vl6VqXKA\1Z*UgF[^`l[]Y2(q_Sa=2a2lBGbg+M\dF6Uq
+f@S^0gYCWBi8EVTjQ5Oekiq?tm-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$a8^Y~>
+JcC<$JcG-;lMgYYr;?BfrVHNhr:p<ds7ZEas7?<_rUL!ZnG_l=md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k32f@JL%eC2gmd*L"_bfe2PaiMNB`Pod5_SO$:Ie\EdIfFgC?sQl;<H`@tA70%_
+=+Z!PI!KmWDfKQ*AS#C_CMRaFKQiSqE-6L$II)F\IK"]jIHc4WIK+]nHiAEkHiJKmHi/9gHN8Hj
+HiIIV?<gZ:=8l52?!^lD?=.&G?sd;L?=@2?r)3et;c6Ll;H!Kk!`ac$rdP3&I!^3fH[:!brco6&
+G'8(OF)u>@E,TW3D/F**CMR[#CAMWCC&VlEB`MoEC%uH?C]8/MC\_cHD>\2PGB%1trDNYk"&Mim
+;ts5j;>sJn;ZKeq;uBPm;ZK_p;u]eu;c6Ni;u0Am;c<QkrDNYm!DlYk;#aDl;#a>j;#a;k;#X>h
+:]OAj;#aDl:]aBf:B"&i:]4#l9M.uO96L2VrHJ'^s*=Ngq0N*hrI+KjrI=itqgn`us+C*"p4WR&
+KnfS^qM+p'!/UN/oSWO&s,-`2regK/r/CE1&;YmXDf0B-CM.6kBl.R5K5(="qeQ.Hrb_FJr,;IO
+p2U%qr,V^VqK2^Zs*"?bs*4Qhrd+Tk!.=co!IfOtJ8TpiK7ei2L5(M@M2I4MNK0']OckomQ'Rc(
+R@B\:StD^MUSO`aW2cl!Xfnt6Za@-K\@K5a]t_A"_o0O7aN;WLcHaeae'uq"f@em4gtglGi8WeX
+jlYail07O#m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+13js*t~>
+JcC<$JcG-;lMgYYr;?BfrVHNhr:p<ds7ZEas7?<_rUL!ZnG_l;md9E.m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=k32f@JL%eC2gmd*L"_bfe2PaiMNB`Pod5_SO%T<;olF<&ZZj1GC^E1G::40fDEd
+5<_1l3]T,W2)I$C1,UsI4?uD6;,:%epJLofr_ieppJLrgs&8hnr_rJf!)repo2GB_rDW\ps&8qq
+s&8blrDW\n!`MuprD<_S0ek@60)dC..ki_50etO>1,Jkas"jX<s#giS4Ztni3]T5\3'')j7RmAG
+!CfNW6iTRP6N9=P6:(T8!'^BF#s::44ZYYd3B9/!3<2,>3VGH+3<2,<48h;@3s@`04?Pbiq`Oa=
+&48`K4Zkef4?>Mb4?GYg5!Aa)s#pEFrB10F4o@D=3rM,D3]fGe4ZrC#!'L3A!'U<GpHJU?s$$HG
+rBC0C!'gHHr]C?J5=%S"5Q*kF62j.J5Q<\F3]T5sr_<GhrD<;es&/Yk!`DrqqGdAkr_`_prD`bp
+rDNVnr_s#!;H$Opr_rkrpJV#i!*&kss&]2%!a/W-r`Au!mTKQlp/h5qr`Shp&6Dk.:esh\:JFJS
+9M\>V;/-#EqeQ.Hrb_FJr,;IOp2U+2s&Ao:r,_^VrcS6arHJ9ds*=Tis*F`nrd=frJ,Xt9JV&N,
+KS>/8Ll$tGMi<XUO-#KePE_>uQ^F21S"6.CTqS6WV5L8lWiW>+Yd(OA[C3TU]=bhl^r""-`Q-'A
+bKS8Wd*^=le^rF+g=tE=hr*GPj5f=akNM0plg4!*mdKW6nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTd
+rdk*#s2Y.i~>
+JcC<$JcG0<lMgYYr;??erqcWir:p<drq??as7H?_rpg-\nF6GG!Uf@Slil_?l07EproPlqjQ#:[
+iS`VMh;-l@g=k64f@JL%eC2jnd*L"_c-4ARaiMQD`Pod5_SO%&PE_=,PPpaFPQ-mIPpUZpD/a3Y
+RZWAYM2>lKXJ_tkT:2+.Nf&XJKnPPJO1M0SPBhe6NrG.=OTCW/r07)DoToKAs-E\Mqih)Grfm>E
+!0[>Drf[5BrK-]7s,d5BrfR8DrfI/BpQ,oJOH5HaO,o<OIXHHeFE;O&E<gc8H[0p`H[5R:s*b3$
+?sd;L?!gt<?41.J?X6o?TW>,mW29Kg$_j>gTV/!OSXZ(9RJrQPQ3NV<P*(ieN;eb8M?o&pLPLV=
+LPUcbLB*/,M>rD2M>iD2M>rD0M>i>1M>`>)MZB1ERKAClAc?$@?!CQ>?!LY4>6S27?!LZBrE]J0
+r`oJ/ra,S2!+>\2s'G_4!+#>*r`oP0?2@e2>?Y04>[(B8r`oG+!*T;)$!^bA>[1K:>$5&->6A&3
+>$:f-#[(83<``F*='5H'#?Ff*<)cePM>`>-N;\b6NrP+:NrP.EOHG]hPEV71PQ$dHPPLIBQ2d0M
+QNrnGR[T_8S=K>E!hPsSpn%PZqk<n[rh8eTs.fRh!i;cknYcAb!35sr&YPJ?H[0^UEH#o=H%((3
+WbQ;FC]8/LD>8#HDu=SHE<:1"`VsoUF89qWFoQX_GQ2pfH2`*kH[L5?I;XL`J:N3%JqJ]/Knb><
+M2@+JN/`jYO-,TgPa.Q$R$jD4SXuIHTq\?ZVPgDnX0&P.Yd1UC[^WfY]Y(tn_8=+/`lQ9EbK\>Y
+dF-Lnf%8R-g>(N@hr*JQj5f@bkNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6hr;HTdrdk*#
+s2Y.i~>
+JcC<$JcG0<lMgYYr;??erqcWir:p<drq??as7H?_rpg-\nF6GG!Uf@Slil_?l07EproPfojQ#:[
+iS`VMh;-l@g=k64f@JL%eC2jnd*L"_c-4ARaiMQD`Pod5_SO%&Ie\EeIf=aB@:!)><HE1sART4`
+<J,jNI<fsWE,KH(ARo=\ChmjDIX-BZE--EtII;R`I04qHIX_$>l@/SXs*X`ks*X`ks*Xinr-\?f
+!.=cm#@V"H?<^W9=T2A$>le8;r*TJ3!+5_5rDWhs;H*Bh!`=8ordPH-I!g9fI!^0cH$OXYGBJ*.
+F:WD3EH#i6DJa9-Chmj&BkmEVrFu:HqIoqEqJ#b?qeQ1Is(hFHs)%dPrc\HfD.6QF;?]lm:f1.i
+peq,hs&/kq!*&kprDNVns&/kqr`&nqqG[2f!)remr_ibn"&Mij;>sDk;>sAl:]4)j:Jh$fqG7An
+:esna;,R<h!_uNdr_WVjrD!Ph9M%iJG'<h.qKW!brHe6c!.=`nq0r9ls+'utrdt0&pk8?p!euD`
+rJ19)r.b9.qhas&qhY<1qhb<0pP]$0qi(T9r/Cr;IWB@EChmebB*N-kCjgtOCAM`FD#S;HDZ"GN
+E:e,OEg2gfEr:"SFT-F_G5QRaGlN'gH3/G@I/\P3IXcluJUrE*K7nr5L5:\CMMmFQNfT6`P*2&p
+QC!u,R[]k>T:hmPUnsrdWN*#$Y-5(8ZaI6N\[oGd^;%M$_o9X:ai_fOcHjnde'ut#f\,!6h;7&I
+iSrnYk2tjjl0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu-HkrUg)?s+13js*t~>
+JcC<$JcG0<lMgYYr;??erqcWir:p<drq??as7H?_rpg-\nF6GG!Uf@Slil_?l07EproPcnjQ#:[
+iS`VMh;-l@g=k64f@JL%eC2jnd*L"_c-4ARaiMQD`Pod5_SO%&lr=!b(cO</1GLgG1G::40fMHc
+5<h4l3]T)V2)P:es"t'?4@)J6;,:(gp/1fer_iepp/(ffr_reorDWAes&8kqo2GB_r)<Vps&8np
+s&8emr)<Sm%oZA';)9p\0/"q0/M&G'0`Eg*1(c;t0etO?1-Rla4Zkhi4?PYcr&G$O7n,p:77B[7
+r^6]R!(6]O'gP&M69me#5!;(m4$>bi4?GSa3BB4q3VGH,3<2,<48_5@3s7Z/4?Pe'4T.GA6O5tB
+4Zb_g4$#J&49@Z04o.8C4[(tjr]L<H4Zr[)q`=U9"$A_04S1f83rhDB5Q*bH4[8m/s#p?F!'U9E
+rB:*Cr]C?I5X@\$5Q!eF62j+W5<qFt4ubSa3BKu3rD<;es&/Yk!`DrqqGdAkr_`_prD`bprDNVn
+r_s#!;H$Opr_rkrpJV#i!*&kss&]2%!EiP'=8Q+f=oVUt=8l>%=nYqt=o;A6=&Vsm:JFMW91hrR
+:J=DYC23T\rbVRNphp"Jr,D:J!ch4<rc7pXq/lUYs*"<as*4Qhrd"WmI!kpADLR(cJ:W9'K7ei2
+L5(M@M2I4MNK0'\OckllQ'Rc(R@9V9StD[LU84W_Vl?\sXfek3ZEpsI\%0)_]Y;.s_Sa@4aN;TJ
+c-FY_daQ^sf@\d1gtgiEi8N\UjQ>UfkiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6HjrVcBf
+JcC<$a8^Y~>
+JcC<$JcG3=lMgYYr;??erqcWiqtU3cs7ZEas7?<_rUL!ZnG_nVmQ9h&m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*L"^bfe2OaN2EA`Pf[2_SEq$PEbO"-^9m>Ec5i1S=5RpKSbMC
+XKA@uUnF6IOH,6TL5(ACOH6fITpBtWKDpr2OT(@CP*>d-r0?`:rg!AFrg!MJrf[>FrK7,Cr/pr>
+oo]99s,m>E#*G(2OH>TepQ-_aOH5HaO+Mn2I!U$\F)l8=EI<%YG^+R^H$XgbI=HZn?XI2I?"!P:
+(g^HPQE@3gWMZJeUS4EUU7e-PTU_L?R@4&@rg!tXPECuhNf8mRMi3IMrJ1W4L5(J>M#E)/M#)u.
+M#E21MZ&D1M#N81M#N80MYN,.RJrWZR>#Zi?XI.=>Qe>;>?b;/>6A,9?!mP:!+#S/s'>V1ra,Y5
+qHjA3?XI,Fpg3r*q-<o's&oA+s&oJ.>[783!*T;)!aAr:r`fP0>$+r+>6A&3>$:f-#$G&1=&rI+
+r)X8,<E<+";c8L1Mi<YmN!#'"NK*jrs,Hr:s,RAGOcklkPEc'1rfdDHq3:lDs-E\O"IPUGR[a;H
+opu,Sq4@Y[r1WqZs.SnUs.fRhs.o^mnYcDcpo+gsP(7n)FE2G@EccSSGGD3RqeQ1IrGDCKr,;LP
+ol9nM!6+kWq/lRXs*"<as*4Qhrd+Tk!.=cos*e[3J:N3&JqJ]/Knb>;M2@+JN/WdXO-#NfPEhE"
+R$jD4S=Z=FTq\<XVPgAmX/rG,Yd(OA[^N]V]=bhl^r!t,`Q-'AbKS8Wd*^:ke^i@*g=tE=hVd>O
+j5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcEaiJ,~>
+JcC<$JcG3=lMgYYr;??erqcWiqtU3cs7ZEas7?<_rUL!ZnG_nVmQ'\$m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*L"^bfe2OaN2EA`Pf[2_SEq$q1&0gr-]u$?<^Q6FE;;1@V04b
+JqAH"H?XIODJNotA7]4dChn`SJ:DEVFEr:_rd=Efmsb1_rdOTil@/SXs*Xcls*X`ks*XinrHnWo
+I/A7&I!]@4?s[,D>Zk-0<E<I4?=!M:#@:eH?t!AL;uT`#;c6Ol;H$Nm;?h5oJ:N-!IK"TpH[Pd<
+s*4Qfs*"B`s)J'X#&\?sCi+$*rb;IJCA)?>C&_rIB`MoIB`MoEC&)N?C]A5NC\V`GGl;jdFpi"j
+;c6Lj:Jakc;cEQk#ZFW!;,U:j<)icorDNVns&&ks;uT_s;c<Hjs&&hor)*Po;Z0Jl;ZBSp:f7*d
+s&&bl!)NPi!DcPj;$'Qi:]=/p;,C%b:f1*h:]aBf:Amuh:]4&g9E.Td8P42Nq0;pbr-J-b!.=`n
+q0r9ls+'utrdt0&pk89ns+^N.qhG$(!/UK.onrBuregH.rf$c7!06u:rf.5=I<':ED/3kbAd)pe
+C4CnOqeQ1IrGDCKr,;LPol9nM!0mD&q/lRXs*"<as*4Qhrd+Tk!.=cos*e[3J:N3&JqJ]/Knb>;
+M2@+JN/WdXO-#NfPEhE"R$jD4S=Z=FTq\<XVPgAmX/rG,Yd(OA[^N]V]=bhl^r!t,`Q-'AbKS8W
+d*^:ke^i@*g=tE=hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFA
+JcEaiJ,~>
+JcC<$JcG3=lMgYYr;??erqcWiqtU3cs7ZEas7?<_rUL!ZnG_nVmQ'\$m-Es%l07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*L"^bfe2OaN2EA`Pf[2_SEq$m8X*c(cO</1GLjG1+t760JZ!]
+5!D+m3]T)V2)P:er\ag>5Y:rP!`Drppegodr_iepqGI8hr_`Skr)<;es&8hpo2GB_rDW_qr_rhp
+s&8emr)<Sm'2qdb2)$a=0.nk/.kE5*0JY@=1&Ng,1]K614qKh>4?Yhi4?>J_3&ird7n,uI7K5jV
+6iTRR6iKFP62j+M5<f'0$TgC54Ztnh3]T5^3W;);3<2,>3Vk]83W;#43<2,<48_5@3s@`04Zkhi
+r&b!C4ShDT69mat4$5Vd4$,Pd4[)(+49I`14ZrX*"["k.4?GY&3r:uA4?Yhi4S:i;4T7DE4[)(p
+rB:3Er'(*Cs#pEGrBC-B!^Ak3r]C?I5X7V#5Q!eF62X"J56sG53'')^3`&ZI;>=&k;H$Nj<;]\o
+;?0Yo<;ohp;Z9Vo<!6,t;cHcr;ufkj;?Bcr<W,tu=8Z2!=8H%e=TDRt=7TGn=nu/2<`2dk:JFPW
+91_fP;+sPYCAVfGD#J5IDZ"GNE:n5KEWB&9F89qVFoQX_GQ2pfH2`-iHN8HmIK+b1It3'#JqAW-
+KS>/8LP^kFMi<UTO,oBcP*;/rQ^F20S"-(ATV8*TUo(&gWiN5'YHY:<['mEQ\\#Mf^VI_'`5Td<
+aihoRcHsteeCE.%g"P39h;7)JioB(\k2tmll0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6Nl
+rUg)?s+13is*t~>
+JcC<$JcG6>lMgYYr;??erqcThr:p<ds7ZEas7H?_rpg-\nF6GG!Uf@Slil_?l07EproPfojQ#:[
+i8EMLh;-l@g=k63f@JL%eC2gmd*L"^bfe2PaiMNB`Pf[2_SO"%^?q+2P]h+bD1n^SO,8LFMMl8O
+VP^/]R[B>#MM?n?KohCYU9^,OH%gtMO8k=?OTCW/r07)Dn!=!=qiq&E!0mGG!0[>Drf[5Br/gW7
+s,d5BrfRMKOH>TeOH>V$O;O+AO,oBRI=6KgF`VVDE,^,KH?sd]I!U,<HQ.?]I:6Mj?s[2J?XI,H
+?sd5FQ`R<jWMubjUn[g]#G@]_T:DC=RJrTQQOT4EP*1rfNf8mSN/NRLreLN0#)S.kL51P?rJ(B/
+qMG6.rJCN2re^T0rJCQ1",VnlM>iD/MZK65r0dPQ!g8%Mra5Y0s'>Y/!*]>*"'Sr8>l.k,>lS+/
+?N+:3@/4.4?=.#E?2.b+?2.\)>Q7h5>$G06>?kE;>$>)-=ohl7r`f_5>$4s2>?kB:q-*f#"'8N+
+=o;>$<rH#'<)AL3NJrgUrepr=NfB%qNW>(;NrP1?O9Lc0P*;)orfd>G!0d5Crg!MLs-EqWR@9S6
+S=K5Bs.9(Zs.K:`qOmk^m\9`VrhTRj!2fan!3#Rgs/>[k&?;@dIsQB`EcQ&:Fa&+TU8n*+rbVRN
+qJQ4Lr,D@Lqf;UUq/lRXs*"<as*4QhrHeKj!.=co#(D&OJ:N3&re"g9Knb>;M2@+JN/WaWO-#Nf
+PEhE!R$a>3S=Q7DTqS6WV5L8kWiW>*YctF>[C3QT]"G\i^VRe)`Q$!?b0/&TcdC.heCE1'g"P3:
+h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcEaiJ,~>
+JcC<$JcG6>lMgYYr;??erqcThr:p<ds7ZEas7H?_rpg-\nF6GG!Uf@Slil_?l07EproPfojQ#:[
+i8EMLh;-l@g=k63f@JL%eC2gmd*L"^bfe2PaiMNB`Pf[2_SO"%^AEETIf"O0@:!,?@X<$0B4>Fb
+B3Be7I!U!XEH#`,rac(>rbMjcKR//cEccVSr-\3dmXG(^s*j]jl@/SXs*X`ks*Xcls*XinrHnWo
+I/A6oHt-Pl?X*M5"BSW)?=!P:s'Ph6ra5n:?sm>?;uTbr;uT\p;[$&t;KRJ@rI=]ls*Ocls*,?(
+G'8"NFE2DAE,TZ4D/='+Chda#C2%>XBEDm]C&VfEC&_rIB`MoIC&_rEC&)N@C]A5NC\hlIGQ2pd
+GQ2gfEFi>Q;ZBMn:f@9kq,.;l;GpHm<;fbo;Z9Vp;ZB\r;uT_s;c<Kks&/korDEYp;Z0Jk;ZBVo
+:]O;i;#aDl:]O;i:]aEh;#X>l:^Tup:f1(d:JXea;>sAn:/=X`:]O;i:'"!]r_!5`r-/?iG^+LZ
+r-J-br-eBirI=itqgn`us+C*"oS*="reLB*r.k<.qhb!'qhY<1qhb<0regc8qhtH4rJgf:rJgc9
+&<2EkEGo`2C2%9lBl%[%H\;32rbVRNqJQ4Lr,D@Lqf;UUq/lRXs*"<as*4QhrHeKj!.=co#(D&O
+J:N3&re"g9Knb>;M2@+JN/WaWO-#NfPEhE!R$a>3S=Q7DTqS6WV5L8kWiW>*YctF>[C3QT]"G\i
+^VRe)`Q$!?b0/&TcdC.heCE1'g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-Bg
+rqcQirqu`no_sFAJcEaiJ,~>
+JcC<$JcG6>lMgYYr;??erqcThr:p<ds7ZEas7H?_rpg-\nF6GG!Uf@Slil_?l07EproPfojQ#:[
+i8EMLh;-l@g=k63f@JL%eC2gmd*L"^bfe2PaiMNB`Pf[2_SO"%^@"u#<?X7X1G^OB2DQs=0JG7?
+5sIUt4ZbY`2Dm9G0etXF2`a2mr_W_r;H!3cr)3Mms&/emr)!Djr)3Gkp/1lhqc*/cpJh&hs&B"s
+s&/kqqbm>jr_a##1c$d>0J5"3r[\=/0ekF<1,:O>rA+C/&jANB4?Ybi4?P\d3]T5]6V'a;r^HiV
+!(?fRs$ZlS'gtAT5s[b&5X.Lt4[)%j4$>bj4?G\&3W2#73Vk]83W;#43<2,;48_5@49%J>497f9
+q*PTW5X%7l4ZYVc4?Pbj55@;B5!;%+4Tdf.4$<L("$/M)3r1o=4?`[+p-&F<s#U6D55meG56!eD
+56!eG4odbD55dVG5<_:149[o55X@Y"r':0Gr]pHI#!P"+3]]>apJLT^qGdAkr_`_prD`bprDNVn
+r_s#!;H$Opr_rkrp/1rj<)ris!*B)#r)`btmTBNlp/h5q"'8T+=8H%u=nu/'=]JEu:JUm`#>.Z_
+:/FVJ;#>&-D#S;JDZ"GNE;";KEr:"SFT$@^G5QRaGlN'fHN/<lI/\NuIXcitJ:W=OK4]djL5(J?
+M2I4MN/`mZOHPcjQ'IZ&R$sM7SXuIITqeE[Vl6SpXKAY0Yd1UC[^WfY]Y(tn_8=+/`lQ6DbK\>Y
+dF$Fme^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-hqY^6ir;HTdrdk*#
+s2P(h~>
+JcC<$JcG9?li-bZqu$6drqcThr:p<drq?<`!qc*Urpp*Z!:^!V#4CmGm-O''rol9'kN:pgjQ#:[
+iS`YOhVI#Bg=k64f@SR&eC2jnd*L"_c-+;QaiMNB`Poa3_SO%&^:fbqqi_#Cp6-eGGB%GNAY#$E
+Jqf2>BW\20US+0FP`UfZLP1>AOcbg5P*L<GK_gc0OT(@CP*>d-r0?`:rg!AFrg!MJrf[>FrK7,C
+r/pr>ooT69rfR2C!g/S+rfI5COo(7>OU.&$JU`,rH$49.E>EJ<H@($cI!U3eI!pBmIXY[3?XR2J
+@/O@K?<r;fXfSS'Vkp2bU8"?TTV%mMSt)7;RJrTQQO&k@P*1oeNK&nrM[YK"LPU_ALPUbCLkpf^
+LB*/,M>rD0M>rJ4M>W2.M>rD/MZ&J5RK&ZORJrWbR>Z<&?XI)D>[:Z@>?Y50>6A&6?![>6s',V0
+?![D8s'Pe6pL!r+pg3u+pg!i'"'Si2>Q.h+>Qe87>$5#-=p\G>?!LW=>$>$3rEB;+=o2A+=]ed,
+=BYK%"]\T'<)HKkNW4t;NUr21O8k=@P5g^GPl?mGPQ6pCPlI$JQN*9UR$jD3S"-#@Sc>;XT)bP^
+U%tA]U$\QSU].(hV#[C_VuN^gW=Z)#NI?+uG'%_EE-ZbQGbqG=C]8/KD>J/KDu=SKEVjeSF89qV
+FoHR^GQ2pfH2W$jH[L5?I0"eHrd\X4JqJ]/Knb>;Ll$tGMi<USO,oBbP*;,qQC!u,S"#t?T:hmP
+UnsrdWN*#$Xfnt6Za@0L\@K5a]t_A"_SjF6aN;WLc-F\`daZdtf@\g2gtgiEi8N_VjlY^gl07L!
+m-O0/n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$`W(G~>
+JcC<$JcG9?li-bZqu$6drqcThr:p<drq?<`!qc*Urpp*Z!:^!V#4CmGm-O''rol3%kN:pgjQ#:[
+iS`YOhVI#Bg=k64f@SR&eC2jnd*L"_c-+;QaiMNB`Poa3_SO%&^:jJppO<!fs'R0Y=^b6LDJ<Nj
+B4Y+qI=-<aF`VM=BP(dc@V]drEJ/OaDK9iFH[GX;p3lCYr-eQnpjMCUqgJHkrHnQlrHnNk!.4Tj
+r-KVt@U`\M>Zt94='&C-?=%#J?s[5J@:<PQ?slo4<E)pq;c<Tn%8p&%CP%+gIt3#tI!gAAHiSNm
+H2i*qGBS.PF`_YEEH(nq$>aQqD/=!'C2.Hrrb).B"DMO`BP@<Xs(_OIs(_RJrbD=Eq.feBs(q^N
+rG;CUrcnEds)n]kD.?[G;G^.c;>sMi;?0Sn;?Bcr<;fbn;Z9Sq;H*Kmq,@;ks&&_m!E2np;>jDm
+;?'Gm:]4,i;>sDl:]=2j:B45j;?'Gm:]=2j;$9]j:f1*h:]jKg:J^sd!)NMfs%NGc#Y7R4G^4OY
+H$T=6rHnQlrd4TlpjW0ks+'uts+:6&pk89ns+^N.qhG$(s+pQ/oSWU(s,-]1regH.rf$i9rJpl:
+qMl,GKR%QSDJX'$B4ksqChe?NrG2CKrGDCKrGVUQpMp(Nr,_[UrH8*_r-/0cs*=Qh!df<Brd=fr
+J,Xt2JV&N,KS>/8LPUeDMMmFPNK9-^OckomQ'Rc(R@B\:StD[LU84W_Vl?\sXf\e2Z*UgG[^`l[
+]Y2(q_SX71a2lBGbg"G[dF-Oof%8R.g>(N@hr*JRj5oFckNV6rlg4!+n*fc9rpg*]o`"Lbp@n=\
+q#C0iqY^6ir;HTdrdk*#s2G"g~>
+JcC<$JcG9?li-bZqu$6drqcThr:p<drq?<`!qc*Urpp*Z!:^!V#4CmGm-O''rol3%kN:pgjQ#:[
+iS`YOhVI#Bg=k64f@SR&eC2jnd*L"_c-+;QaiMNB`Poa3_SO%&^:j#8r`(4&2Dd3>0/k^C/h\q5
+2F0Vm4[(qf3B/lQ1GU[C2E3W]7SloZr_iepp/1T_r)*AgqbdAkr)<;e!)rbooMbH_rDW_qs&8qq
+r_r\lr)3o"1c$sC0/>.50)dC(0/51;r\=L11&`s.1B]Hs5!1t,4V9e>4#o;\3C$,+7n,s:77K[5
+r^-ZRrBpTO!C9'N5R]h>4[)"i4?bnk4?>S!3W;)73Vtf93WD)53<2,;48M)>4o@G@6MNnR6:!h!
+4$>Yd48qAB4odbB49Ic14?WO)s#^6Cs#^->q`=pC4Ztnip-&C;s#U3Er]g?F!'U9Er]U9Fs#p<E
+rB1NQ5!D+l4?Ykn5sR[35lF"J5lEnO4ubSa4$,M";>!la<;]\o;?0Yo<;ohp;ZB\o<!6,t;cHcr
+;ufkj;?Bcr<W#kt=8Z1u=8Q+f=oVUt<rcA#=8Q+u=nl)2='8R':ea_[9h\5U9288W7T',"rbVOM
+qJQ7Mr,DCMqf;UUq/lRXrc\3`s*4QhrH\NlI!kpA!IfOtJ7jFbK7ei2L5(J>M2@+JN/WaWO-#Ke
+PE_>uQ^F21S"6.CTV8*UV5C/iWiN8(YHY:<['mEQ\\#Mf^VI_'`5Td<aihoQcHsteeC<($f\5'7
+h;7&IiT&t[k2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+13hs*t~>
+JcC<$JcG?AlMgYYqu$6drVHNhr:p9cs7ZEas7H?_rpg-\nF6GG!Uf@Slo==rl07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*Bq]bfe/NaN2B?`PfX1_8*h"]tBU,PQ-g?P9u$7P(\I$R?NS`
+Ll$q#Xf8.mUS!m>O,JgOKnPPMOH$#uQ$J"8Nqn_9OSt:BP*>g.qj$W9s-<GFrfmJJrK@5ErfR2C
+rK7&?oo]99s,m8C"Hee-OcfI$s,fR#K7JH$I!TmVEcQ/>H@(!`H$apdH@:6jJ:;rT?X[;J@:*AJ
+?sd8HCTab@XK/@uUnj`ZUS4BST:hjJS=5n7r0RbUP`q;nOH,<[reh8DM2I%CLPU_ALPUbCM2:t_
+!/UH-!/UN/!/g`3$AaInLl$tGM26tEqhbB3r0[PPqO.AP"dta3FCAPT>ln>;>Q.h+>6J,6?<pk7
+?3OV>>?kH>ra,V3s'YY0!FB.4?2e.1?i==1?27b*>6A&3=^1l/r`oG+!*T;)%pWCG>[1K:>$+s3
+>?kB9=o2A.=]ed,<`rL*=T);*<E<+!;Gg9hNW"k;O8FqCO,f6]O-#HdP5^XFPl?mGPQ6pCPlI$J
+QN*9UR$jD3S"-#@SH,8XTDtS^U&(G^U$SKRU].(hV>mFaVuEXdW=YttLOFJoF)u>BFF8:VHr[9I
+C]8/LD>J/KDuFYLEVskTF80kVFoHR]GQ2pfH2W'hHN8HmIK+`rJ,Xt=JV&N,KS>/8LPUeDMMmFP
+NK0']OckomQ'Rc(R@9V8St;UKU84T^Vl6VqXKAY0Z*L^D[^WfY]Y(tn_8=+/`lQ6DbKS8XdF$Fm
+e^rF+g=tH>hr*JQj5f=akNM0plg4!*mdKW6nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#s2G"g~>
+JcC<$JcG?AlMgYYqu$6drVHNhr:p9cs7ZEas7H?_rpg-\nF6GG!Uf@Slo47ql07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*Bq]bfe/NaN2B?`PfX1_8*h"]tF>opjW'f-Y-M!@UW5UD/!Kl
+B4Y(pIX?BcG&hS=BP(mf@r,ssDL?YWCiXTBHN&9hI.i!VIf+WoIe\?UIenKmI/SEkI/SElI/eQl
+Hk:^RH[B:5@UW\N>Zt93=&rB$?3OVA?XR8KraGh7#[pY3<)lmr;H!Km!`Dj!rdt0#s*k9%I!g?i
+I!^5>H2i-gG5l^bEt<;2E,]]3Ci*s)C27U"C2*Z\rb).BrFl7Frb2FKBkmQ[s(VOJrbD=Eq.feB
+s(q[M!,VUX!-nKercnHes*"Eb");4B;Z9Jm;>sMj;?p,u;,U:j<)icorDNVn!E)ko<<#ks;Z'Jn
+;ZBVl;?0Yn;>sJn;?'Gm:]4,h;>sAl:]4)j:Jh$fs%i\kr_WVl!`2Wgr_`\l"&DZf:B")i:]4#m
+92%rM8P)JOH2W'eHiJKmHi8BfIf4crJGXotK)UDtK_0ruLAco(LAco-M#W;3M#N8'MZ&D3MYi8/
+MYN,/N;\b8NrG%5NY%)%G&_D:CM@HpB5DF"CeKH\C]8/LD>J/KDuFYLEVskTF80kVFoHR]GQ2pf
+H2W'hHN8HmIK+`rJ,Xt=JV&N,KS>/8LPUeDMMmFPNK0']OckomQ'Rc(R@9V8St;UKU84T^Vl6Vq
+XKAY0Z*L^D[^WfY]Y(tn_8=+/`lQ6DbKS8XdF$Fme^rF+g=tH>hr*JQj5f=akNM0plg4!*mdKW6
+nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#s2G"g~>
+JcC<$JcG?AlMgYYqu$6drVHNhr:p9cs7ZEas7H?_rpg-\nF6GG!Uf@Slo47ql07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JL%e'cXkd*Bq]bfe/NaN2B?`PfX1_8*h"]tF;Cs&Jemr`/tG'JM$f0K(aB
+0/#%72FB_m5!:tf3]R*r$SjFq2E*KY7nc]U<;oho;Ya2c;Z'Dh;#=)i;Z'Je;?0Ym<:a&_<;fbp
+<<#ns;ZB\m;Z0Mu2DR'E0ek?\/cR@*.ki_71GSka$o'Ln1,C[@5<_1l4[/j-!':*>"Zo4F84Q/K
+705qH7/fOR7/]IX5sRb&5X7P"r]UWO4?G\i4?Ybd47tW63r(c:3]['ss#C'=pGi47q`FU9!'U<D
+rB^NP6MNnO6:!k$4?`[*r]L3E!'U0@"$Jh14T%>E4?GVer&ap>q`Fg?!'U<Dp-&C;!BWID5Q*bG
+4o@MD4oRVF4oISC4oRYF4o[VG5!VF05lF"J5RTeA5<_7k3]T2^3B@%8oi(]dr)<Sm!)rhqr_rbn
+s&8kqs&&ns<)ros!)rSh!E2tp<WH5!=Su7t=RK>l=R]Di=Su=s=T);,<)QOf;,'eZ9)_Ne:/!QB
+rbMLLrb_LLrGVXRpMp+Or,_XTrcS3`qfi'bs*=Qhs*F`nrdFfq!.XuuEe/gpK7nr5L51SAM2I4M
+N/`jYOHG]iPa.Q$R$jD4S=Z=FTq\?YVPgAmWiW>*Yd(L?[C3QT]"G\i^VRe)`Q$!?b0/#ScdC.h
+eCE1&g"P3:h;@/LioB+]k3(sml0I^&mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`no_sFAJcE^h
+J,~>
+JcC<$JcGBBlMgYYqu$6drVHNhqtU3cs7ZEas7H?_rpp*Z!:^!V#4CmGm-O''rol9'kN:pgjQ#:[
+iS`YOhVHuAg=k64f@JL%eC2gmd*L"^bfe2OaN2EA`Pf[2_8*h#]tD"hr0.)Bq3*.`KU%:GBpt<E
+L44o6B<A23US=?JPE1Z\LP:DDOcYutO-Y'BKT5_e!0I/A!0[5Dr0?c;!1!>DrfmJJrK@5ErK7,C
+r/pu?oo]99rfR2C!g/S+rfI5COo1:MMM6Y3IscThF`VPDDfPc&)L6XUI!U-fIXciq?sm>K?=.)H
+?s[2J?XBS3ri?=)W2?AdU8%X\rh(.#SXc.:R@'D0Q^<r$PEV)gNfB!UMi*CKM>i20L55Y^reUW2
+qM,',q2#*-qhY<1rJ:c8LPL\AM2I2iM>W52R/E?PR/*0LRK]+AIr/P"r`oS3?!I;3s'#V0>?tQ@
+r*BP4>[(H=?2e11?iOO0?iFC3?2\(0?iFC2?27b)>Q7h+>Q.e->?kG4=qb%B=^#$8?<g`>>?Y-3
+>$G69>$:`+#[(83=&rI+='5E&s&T+us%rcUr/Lc<qi:T8s,d8Ds-*GHs-*GH!0d5Cs-<SLs-EqW
+R@9S6S=K5B!1s"Yr1WqZs.SeR!2KLg!i;ckoV_\en>R"sRY-!5F)u;>EHcbUG(*MnC]8/LD>J/K
+DuFYMEVskTF80kVFo?L]GQ2peH2`-iHiJKmI<0jeIt3'#JV&N,KS>/8LPUeDMMmFPNK0']Ockom
+Q'Rc(R@9V8SXuIIU8+N\Vl-MoX0&P.Yd1UB[^WcW]=bhl^r!t,`Q-'AbKS5Vd*^:keCN7(g=k?<
+hV[8Mj5]4_k3)!nlKdg'mI'H4nF?)?oCW%T!quB_rqQNhs8)ZjrVZZno_sFAJcE[gJ,~>
+JcC<$JcGBBlMgYYqu$6drVHNhqtU3cs7ZEas7H?_rpp*Z!:^!V#4CmGm-O''rol<(kN:pgjQ#:[
+iS`YOhVHuAg=k64f@JL%eC2gmd*L"^bfe2OaN2EA`Pf[2_8*h#]tD"hJ,OirIK"]lI3rQ7DId3V
+Ec>`&?Y3kMJUW#mG]e(GCM@Bm@q0=lCNFZBIVa%IH2`-iHi&3aIIDXSIJeQoIIVd_IK+]mHiJHq
+H[L0erd4]mrHo-(Ht[)%@:<JK>[(B5=B8K%?N+:5?sd:>@1$C@;cQaq;c?Ol;uTZ#;14%JJUr?$
+If4]pI/\EoH$FRXrcSfpFE;JCEH#l8Ci+$)ChmhcC&huGB`2TBB_uKHC2%EsCA_fGC&huHCA_fA
+CAVfHD#\8NG5HIbG^"B2GlN!eFp3#.B3\>4r_WSmq,.2kr_`er<)ifpr)*Yr;H$Ikr)E\ps&/eo
+s&/kor)*Po;Z0Jl;ZBVo:]O;h;#aDl:^0]l:Jak`;#O5l:f%'es%rho:/Cjdr_NYk:JUmcs%iSg
+#>[ua8kDTFH2N!dHiJKnHN8HlIJA9iJ,b&rJcC?$KD:,lK`Hl+L\cc(L]<21M#`A2M=c])M>iD/
+M>iD-MuJ\6NW+t<NV/;DMhQ4kDJX*&AnPgoD/4&_K5:I&rb_LLrGVXRpi64Pr,_XTrcS0_r-/0c
+rd"Khs*OcnrdAj:It*!!JUrE*K7nr5L51SAM2I4MN/`jYOHG]iPa.Q$R$jD4S=Q7DTq\<XV5L5j
+WiN8)YHY==['mHR\\#Mf^VI_'`5Td<aihoQcHsteeC<($f\5'7h;7&IiT&tZk2tjkl0@U$m-X60
+nF5u=o(2MQo`Fj]p\ssfq>^<hqu-HlrUg)?s+13gs*t~>
+JcC<$JcGBBlMgYYqu$6drVHNhqtU3cs7ZEas7H?_rpp*Z!:^!V#4CmGm-O''rol?)kN:pgjQ#:[
+iS`YOhVHuAg=k64f@JL%eC2gmd*L"^bfe2OaN2EA`Pf[2_8*h#]tD"h<)iispf.5ms!K$F/1WA4
+2)?m90/,:O5X%=n4#o8[2)R3F1,_'L3B]l-:Jt0i;uKVi;>X8e;>a8f;=RQ`;u9Pc;ts>i;u]hs
+;u]bp;uBPn;Zep81,Stb$8=(b/M/M)0JYC<r\=g:1,C[@1GV-X4?WU+!]rP-r](9G77Tm=7n,s:
+7fGgO6NTS?6N04O5<qF24U=/54ZY\d4#o@o3WD/;3<M<&3]['ss#C'=q)SC7r&ad<"?ek14@B!4
+p-T!M5sRUs4oRPC49@Z055IAD4[)"kr&k-E4$,S&49%A=48V/64oIJF4[)(prBC6ErBC3Ds#pEG
+rBC-B#!Y:74ZkhjpH\[Cr':9H#sLR63]fD`3`/fH;uBVm;uTYp;uK\p;uKVo;uK\q;?Bcr<W5qt
+;ta)i;cNWps&]/$r)`btmTKQln5oQjqcW\rr)XJ4;Gg7d9he;T9h\8U:/!NAC]8/LD>J/KDuFYM
+EVskTF80kVFo?L]GQ2peH2`-iHiJKmI<0jeIt3'#JV&N,KS>/8LPUeDMMmFPNK0']OckomQ'Rc(
+R@9V8SXuIIU8+N\Vl-MoX0&P.Yd1UB[^WcW]=bhl^r!t,`Q-'AbKS5Vd*^:keCN7(g=k?<hV[8M
+j5]4_k3)!nlKdg'mI'H4nF?)?oCW%T!quB_rqQNhs8)ZjrVZZno_sFAJcE[gJ,~>
+JcC<$JcGEClMgYYqu$6drVHNhqtU3crq?<`s7?<_rUL3`nF5o8mdBKAloFCsl07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JI$e'cXjcd'h[bKJ&MaN)<>`5BI/^q[Xt]Y(kerKI/BqNE7_K:%FKBUkEJ
+KRno8B!&&0V50]OQBI2aLPUSEP*2u5[]k%-K8fMbs,d5B!KrZDPl-gCQMQmHQN*6GPl6jIPl6dG
+P5^UDP5LIAOS"Y8OT(C@Oo^],rfI5COo:@]M1pP2J:2`eFDl2?EI<.\HZsj_H[L6hI=6To@/aL6
+?=<Y;$snprXf\\+Wi)\hUS@a]rh(1'St2@<R@0G1R$X/)PEV,iO,f3WMi3FLM22"_"GV\fLl)(d
+s+p`3qM,',m>:k!#)A"jM2I1Ir/1K@r0[PPq3h5Ns-WtIH=pUa>m"D=>?h)1"^>/6?!^h6?3FM;
+>[:Y7?N4C4@/++/?N4=2?34D=?i==2?2\%.?2e+/>Q7hC>$G06>?kE;>$>'4=^#!6?<g`>>?P*2
+>5h_,>$:`+#[(83=&rI+='5B%$W^8-<)?IgO,f6]O8P%:O8b7@P5gaFPQ6pGPQ6pCPlI$JQN*9U
+R$jD3S"-#@SH,8XT)bP^U&(G]U&LbdU%"cVU]$tiV5C-_Vu<R^W=YnoIX6<^EcGu<G^F^VJ6AuQ
+D#S;KDZ+MPE;=MOEr:"RFT-F]G5QR`GlN'fHN/<lI/SHoIXh?IC4UtgK7ei2L5(J>M2@+JN/WaV
+O-#KePE_>tQ^F//S"-%@T:qsRUnsrdWN*##Xfnt6Za@-K\@K2`]tV7t_Sa@4aN2NIbg+P]dF6Uq
+f@S^0gYCWAi8EVTj5oFckiq?slg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2=qf~>
+JcC<$JcGEClMgYYqu$6drVHNhqtU3crq?<`s7?<_rUL3`nF5o8mdBKAloFCsl07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JI$e'cXjcd'h[bKJ&MaN)<>`5BI/^q[Xt]Y(kerI4`o!.O`l-=pV*ARnb]
+EG8liAS"nnIXHKgF`_V@BkM$j@r-"!K6<!3C3"HBrHeHiqgA*comZ4TqgSQnnUC=_s*Xcls*Ooq
+I!g;?HiSNlHjY:8AR]+W?<g]<=T2AH?X@)G?=7,I?t!DN?t!JB<)cjr;c6Ll;Gp@hDhE[oJUi6"
+rI"s!H[L-bH?sg\rc\`nF`_\FF)c/:D/=(gD#\8TC27NsBPD2ZB`)NBB_uKEC2*Z^qe>nArFu(B
+rbDLMrbDLMrc\0_!-nKes*4Qfrc\<a")h[O;Z9Jm;Z9Vk;?0Yo;Z9Yp;uBMr;c6Ol;YsGn;ZK_n
+;ZK_p;>jAn;c<Tl#uXVu;Gg:f:esmc;#aDl:^9cm:Jak`:f.-gs%i\kr_Ner:esk`;,R<h#>S&i
+:f'qa:]4#h:J:XY!D,c[HMi-iI/eQnI/\QiIf+]qJGXotK)UDtK_0ruLAco(LAco-L]WEhM#N8'
+MZ8P3MY`2/MYN,/N;\b9NrG%0NY%)"Ec5l4C2%?nCMdp$E(Yc^D#S;KDZ+MPE;=MOEr:"RFT-F]
+G5QR`GlN'fHN/<lI/SHoIXh?IC4UtgK7ei2L5(J>M2@+JN/WaVO-#KePE_>tQ^F//S"-%@T:qsR
+UnsrdWN*##Xfnt6Za@-K\@K2`]tV7t_Sa@4aN2NIbg+P]dF6Uqf@S^0gYCWAi8EVTj5oFckiq?s
+lg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2=qf~>
+JcC<$JcGEClMgYYqu$6drVHNhqtU3crq?<`s7?<_rUL3`nF5o8mdBKAloOItl07Epk2tddj5].X
+i8EMLh;-l@g=b-1f@JI$e'cXjcd'h[bKJ&MaN)<>`5BI/^q[Xt]Y(ke<;onm<;olE-RLT".krt@
+0eb.30fDHd5<V.l3]K,W2)I'D2E3WX5!i%A;H-Wl;uT\j;>sJf;>*fd;=RQa;u9Pb;ts>j;u]hr
+;ZK_p;uBMr;`-Ee2#]32/h\jV/-msd1,:X@0JbH^1'KHh5<_1lr]LiU4ZbV`3^H8+84Q-=77B[6
+7/0.K652^M5X7Ls4Ztnh5!1tj4?>Pa3]T1k3WD/<3<VB'3]]:u3;5H43r;#<49.PC4T7_F6M<eH
+63BM=4[&d+"?\h15!Jd)!^8b0r&kBL4$,Pd4$5Se3]d+!r&k!B!'L'?rB('CrBL9Fs#pBG!BiXG
+4o[\G4o@MB4U4285!;%k4[8p2!'gBHrBUNN5<qL356a)/3]fDa2Y9rG<;]\p;ZB\o<;ohp;ZB\o
+<<#ht;cHcr<:s,i;cW]q!*B&"rE&kumTKQln5oTkqH<SqqH"51<)HFe:/">S:/"G[9M76<rbVRN
+qel@NrG_RPr,V^VpiQLXrHA*_rcnHgrHeKj!.=`n!IfOtJ80XeJqJ]/Knb>;Ll$tGMi<USNfT9a
+P*;,qQ'[l*R[]h<StD^MUSO``Vl?\sXKA\1Z*UgF[^`lZ]Y2%o_8=+/`lQ6DbKS8Xd*^=le^rF+
+g=tE=hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcE[gJ,~>
+JcC<$JcGKElMgYYqu$3crVHNhqtU3crq?<`s7H?_rpp*Z!:^!V!Uf@SliHG;rol<(kN:pgjQ#:[
+iS`YOh;-l@g=k63f@JL%eC)ald*Bq]bfe/NaN)<>`P]R0_8!b!]tCtg\c.fjP5UUEOscHVJSU-r
+BV(TPLOtDALodYVV50]OR$3PfM26hHOHHT,[BY",JrK>_!0I/A!KrZEPQI/9Q1pUAQ2['LQ2-[C
+Q2[$JP5pdEOoLUCOo:C7OT:LAOoCLEOc]R)(Qac@OGf$MJq&5rHZjLOE,flEH@'sbHiAC4I=?To
+I=GX3?sd5J?XR2I?XS&[Y-"h-XK&1oU]-tpTqJ*PTq@mHS!]ZDR1#CKQ^*buOcPTbN/RXl",V_b
+K_pH*L51SArJ:K1s+pZ0",M_fM"lf.Ll%#bM>rD3LB<9gM>`>3Qi3<LR/iWMRJrZTR0/h2FC>#Q
+!F/k.=p%u4>$Ul0"C,/8?![D8!+5_5q-X/.s'>Y2s'5V3rEfM0r*05-r`oJ-"^5&3>?Y5/>Q7n,
+=oMS3>[:W?>[(?6=B\o->Q7k'=pJ24=B8O+='5E&$<C,+<E)gl:l^Ttr/U`:s,d8C#*P16Pa%Gs
+oT]B@s-EYN#+1gIS"#q<oUPuRqO[b\r1Wt[rLs7c!28nV!2KLg!i;ckp8@hemAU_uTTahNH$=CN
+EHHYUH?4[>XDIlQqJQ:NrG_RPr,VaWpiQLXrHA'^s*4QhrHeKjs*Xfos*artrdY$#K)UCAKS>/8
+LPUeDMMmFPNK0']OckllQ'I]'R$sM6SXuIHTq\?YVPgAmWiW>*Yd(L?[C3QT\\#Mg^VI_(`5Td<
+aihoQcHsteeC<($f\5'7h;7&IiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+13gs*t~>
+JcC<$JcGKElMgYYqu$3crVHNhqtU3crq?<`s7H?_rpp*Z!:^!V!Uf@SliHG;rol<(kN:pgjQ#:[
+iS`YOh;-l@g=k63f@JL%eC)ald*Bq]bfe/NaN)<>`P]R0_8!b!]tCtg\c.'MI2ZHmB4=h_E,/um
+B4tn.J:DolF`VP@CM.9kAH$BMJTQ^/CiOQBqg/6gr-\3d!e,QGpO;IWqgSNmnUC@`s*X`krHnTl
+rd4]mrd5#dBP(^^?sR#@>5hS3<aK*>?=7,J?t!GO?iFI>;cQdr;c?Rm<;oc0?\<u_Jq8H%Isl]m
+I=-EgH[:!`GlDpeFp`A6F)l;?Df0H/DZ4JOCC"WfBP1skBPD2ZB`2TCB_uNACAV`FC'86cCMIV_
+C&D]GC&VlGC]APUG5HI`Gl;gfG^"B2G5cUgCLC%;:f1*h;u0Al;uBPn<;ohm;ZBYr;H*Kms&8qq
+rDW_os&&_m!E2nn;?'Mo;>O,g;>sDl:]4)j:Jh$fs%i\kr_WVl"Ahii;,R<hs%`Si"&Mci:]*rm
+:J+8Q8P)?srHnNks*OcnrI+NkrI=crr.4m"re(!!oS!:"rJ16(reLK/!/^]2re^<*s,$]3qMG60
+pP]!/rf$o<rf-H.&rh]rEGo]2C1h0nD/F*%Db5Y!rb_LLrbqaSq/Q=QrH%aUrcS0_qfi'bs*=Qh
+s*OcnrdFfq!.Xuu!J,k%K5cKtL5(J>M2@+JN/WaVO-#KeP*D5sQ^F//S"#t?T:hmPUnjlcW2cl!
+Xfen5ZEpsI\%0&]]Y;.r_Sa=2a2lBGbg"G[dF-Oof%8R.g>(N@hr*JQj5f=akNM0qlg4!*mdKW6
+nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s2=qf~>
+JcC<$JcGKElMgYYqu$3crVHNhqtU3crq?<`s7H?_rpp*Z!:^!V!Uf@SliHG;rol<(kN:pgjQ#:[
+iS`YOh;-l@g=k63f@JL%eC)ald*Bq]bfe/NaN)<>`P]R0_8!b!]tCtg\c,V&<$t[F-Rp\s0fV$H
+0.\e30ge5k5<M%h3B/oS1c$mG3&ir^6;CBT<)iWks&/Vhs&/ems%rVjp.t`dnl#Hcr)E5cpf./i
+s&B"s!)iepr_a#!2)R9H2)-d>r[n:(/M&XU1(uGu0f(R?1GU^A1Hmub4?Yhi4[&d)#<bRI84Q0>
+7fGgV7/'%Q5sdn(5X7X74psM73^,\g4$#Da3]c^is#U'<rAjp=q`+U9!]W2$r&Fg>4$*4"rB1!F
+qEjmCs$@,[5X.Co4$5Vg4[)%mqE+jD4Zkk)4o[VD4T7DE4?GSbq`F^<s#pBEs#g?GrB:'@rBL6E
+"?eq44[/j.s$$HGrBC-Bs$$HG#!>%55X@Y"rBU?J"[YL@5<qL556sM<4ukYd4$#:n;u9Pl;Z]iq
+;uBVp;uKVo;uT`!;c6Ll<W,ni;?9]rqc3\uqcNeuqH32hs&eblrE/r"pfRGqrE0(u%o?"s9he;S
+9heAZ:/!K?D#S;JDZ4SQE;=MOErC(SFT-F]G5HL`GlN'fHN/?lI/\QoIK4lsJ,t4Qre#0CKnb>;
+Ll$tGMi<USNfT9aP*2&pQ'[l*R[]e;StD[LU84T^Vl6VqXKAY0Z*L^D[^WfX]=bkm^r""-`Q-'A
+bKS5Vd*^:keCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`n
+o_sFAJcE[gJ,~>
+JcC<$JcGNFlMgYYqu$Ei!3uJ!rVHNhqtU0bs7ZEas7H?_rpp*Z!:^!Vs6`/>m-O'(lKRQskN:pg
+jQ#:[iS`YOhVI#Cg=k64f@SR&eC2jnd*L"^bfe2OaN2E@`PfX1_8*h"]tCtg\[[ier0%#BrK8IK
+F**+jSXGRnKnsJVKWV,KUn+$BOc53SLP1>COgU=YT6Yp=N:W,1OT(@CP*>d-s-<;Dqj%2Is-<GF
+r0@;Hs-*JGrfR5Dr/pr>nWEg6!g/S+rfI2Brf$l0s*c/?HZsRQE,foFH@'scH$k!fIXZ]oJ:M$7
+?sd8K?=7)H?X`r:s/dNIX/VtlUna]ZTqJ*OTUqaFR[BP2R[KM/QBdYtOcYZbN/NVmMZ/>0K_pH+
+L51P@M>`81M#`A1LB<9eL\ci-M"HN3LkgbAM2@+IR$X2,rL!/Ds-iqT!g/"Mr*BD/>PhS(>kq\-
+>[(G3?2e.4?XR;Mq-X/.ra#P1!F9(2?N+7/>QA(/>lS%-=o_e+>5qe0>[(E8=oMS8>[:W?>[(B7
+=BSg3>[(B7qcX8.=BJU)=BAU,rDs5(<`N*s;,Bp`Nr>%=OT1ICPQ$dHQ2$RDQ2QsIQ2d0LQNihF
+R[]e:SFrHQT),&ZT_tM\T_tJbU7n:NUAq"eU]RBiVYI(dW9U>oWh59"H?XRUF)c>UH$FLf=02C<
+qel@Nrc%[QrGqgWq/lUYrHA'^s*4NgrHeKj!.=`n!e,WKrdY$#K)UC7KS>/8LPUeDMMmFPNK0']
+OckllQ'IZ&R$jG5SXuFGTq\<XV5L8kWiN8)YHY==['mEQ\[oGe^V@V%_o9X:aND]McHjkbe'uq"
+f@em4gtgiFi8WeWjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$_uG5~>
+JcC<$JcGNFlMgYYqu$Ei!0@'TrVHNhqtU0bs7ZEas7H?_rpp*Z!:^!Vs6`/>m-O'(lKRQskN:pg
+jQ#:[iS`YOhVI#Cg=k64f@SR&eC2jnd*L"^bfe2OaN2E@`PfX1_8*h"]tCtg\[[*;oR/#p?t!MS
+F`D5-@V&YBBnC_[H?F:KDJEisA7T1eCkZncIr'(FGkuadHN8BkHiAEbIJ/-WIJ\KlII_jaIK"Wm
+Hi8?lHiAC/HYR8.A7K%U?<pc<=B8O*?=$uG?s[2Ira?=E@:E\E<)Zap;c6Om;,L9kKE$N4JUi6!
+I!gBkH[L-cH$TC6s*"QgF`hg*EWU2uDuOVOC]S<crFl4Ds(MFHr+Q%As(M7CrG)1CqJ-"Dr+c7G
+s(_RLrcSEeG'.tOqfi'brc\EgGBa%0s)eEeF(eeV;>sMj;?0Yn;ZB\t;c6Qj;ZBYr;H*Nnr_reo
+r_rhps&&\l!)rhn"B&)p;Gm6dr)!Jk:]!uf;?'Gm:]=2j;$9]j:Jk!g:^Bil:JO_^:esmc:&n)h
+9E.Qc84@lPrd=`ms*Xcnq0r9lrdaots+:9'pOr3ns+^K-qM,!)reLQ0reUQ1onia+rJLE-!/gK.
+rJ^T4muA!>LO!lXD/<s#B5)@$Che#_LAl&eDZ+MQE;=MPEr:"SFT-F]G5HL`GlE!eHN/<lI/SHp
+IXckHJ,t4Qre"g9Knb>;Ll$tGMi<USNfT9aP*2&pQ'Rf)R@B\:St;UKU8+N\Vl6SpX0&P.Yd1UB
+[^N]V]"G_k^VRe)`Q$!?b0/#Scd:(geCE1&g"P39h;7)JioB(\k2tmll0@U$mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>^<hqu6NlrUg)?s+13fs*t~>
+JcC<$JcGNFlMgYYqu$Ei!*&mnrVHNhqtU0bs7ZEas7H?_rpp*Z!:^!Vs6`/>m-O'(lKRQskN:pg
+jQ#:[iS`YOhVI#Cg=k64f@SR&eC2jnd*L"^bfe2OaN2E@`PfX1_8*h"]tCtg\[YX>oMcbm5!CGH
+3&WNF/MK.D4$c%o4Zkbc2`<NM1GU]a3!;E27o<1U;ZK_k;>sGn;>j>h;>*fd;=RQa;u9Pb;ts>j
+;u]hs;u]bp;ZTcUr\X^31]B'N0.ee-/M&V31G^dA0etO?1GU^A1d*ua4?Yhi4Zk\b3rMPS84Q-=
+77K^67/K=X6:4++6:*n%5X563%Qum95!:ti3]fA_3]]8\mlCD/r&O^:!'0p9pGr"1s#g*Eqa1!D
+rB^NM55dVD4o[\H4ZiO'"$Jh14T%AA3s%N+48qAB3r;#94T@SE497T/r&t!@!'^BHrBC6E!'^<D
+"$\t54oISB4o[_G4o[VI5!VD!5Q*kH5nZLM5sIV"5<qFt5!M(g3]fA_2>L2J<;]Yp;Z9Su<)Zaq
+;cEWms&8nr"B/2r;cWcqohkfi<Voes=8Q+t=8Q+g=oVUn=8l=u=nl,!=8Q,!=TVQ$;#X5i9aFEf
+9hnJW9f5cHD>S5LDuO_OEW'qUF89qWFo?L\GQ2peH2W'hHN8HlI0+kIJ,Xs!JV*lRAqYkmL51SA
+M2I4MN/`jYOHG]hPa.N"R$a;2S"6.BTV8*TUnsufWN*#$Y-5(8Za@0L\@K2`]t_=u_Sa@4aN2NI
+bg+P]dF6Uqf@S^0gYCWAi8EVTj5oFckiq?slg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTd
+rdk*#s24ke~>
+JcC<$JcGNFli-bZqu$?gs02P#rVHNhqtU0bs7ZB`s7?<_rUL$[nF6GG!Uf@SloXOul07EqkN:pg
+jQ#:[iS`VMh;-l@g=k32f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[VR%rf[5DrK7/'
+rGs*"CM[d&DJNs"XehnjU7.I6NJ`RJKS5JMXcTo]H%:L)nW*[3rK.,DPPg[EQ1pUAQ2['LQ26aC
+Q2[$JP5pdEOoLUCOo:C7OT:LBOo:FDOc]R)$B:"$K7\T&H[9pXrbqmdI/\I!I!pEjIXlfnJ:IN*
+s'Gt<?XI,H?_RJ%s/cI+Wi)\hV#I.hTcB_tTq7gER$jD3R@'>,QB[PrOcb]aN/W[QMMd2eL&Zi'
+L&Zl/LP^ldM#N59LkgbALkgbAqhY</rJ:N3q2#*-reC]7Q^F,+R$[];o9oWIrL!qNH=gJj?X@#B
+qcWu(qd'M5?<pc>>[:Y7?3=PB@:8n<s'>q9>[:ZB?!^n;?N+7/>lS+0>lIt-=o_e+>5qe.>[(G2
+=oV\*?2n.1>?_#/"^5,8>?Y2,>5q_0=BAO*=BAW'<sMc*<E)mo;,.%M$]gC1O-#HcP*;)oPl?sD
+PQ7!IPlI$KQN!3TR$jD4S"-#ASc>;XT)bP^U&:SYU%+lWU]$tiV5C-bVu3LXWW/t3W18`oH?aUS
+EcQMYH?OOs>H_m\qelCOrG_UQrGqjXq/lRXrc\0_rcnHgrHeKjs*Xfos*artrdb$"Fb56uKS5&6
+L51SAM2I4MN/`jYOHG]hPEhE!R$a;2S"-(ATV8*TUnsueWN*##Xfnt6Za7'J\%0)^]Y;.r_Sa=2
+a2lBGbg"G[dF-Lnf%8R-g=tH>hr*JQj5f=akNM0plg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6i
+r;HTdrdk*#s24ke~>
+JcC<$JcGNFli-bZqu$?gs,[3WrVHNhqtU0bs7ZB`s7?<_rUL$[nF6GG!Uf@SloXOul07EqkN:pg
+jQ#:[iS`VMh;-l@g=k32f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[VQepO**j@U]7D
+!FB%0>8gXF=+YgIH?jRPDej'"A7T1dCjpD\IV`tDGkHC^HiJKbIJ83XIJSEkIIhpaIK+]nHi/6k
+HiAC7CMIKm@U`_O>[1E5<``X7?XI2J?t!GO@:3JP@8g*(rDNkt;c6OkHi8TsJcC3,IXHQmI=$?g
+H?jf7GlMsnG'%eHEcH#8DZ+DUChmj'BkdEW!,):Es(VFFrFZ1FB5%0VrG)1CrFuCLC23]]rbDFH
+!GZcUFoZ[`Foc`/r-/0cqfi$_s)eHfGAq%nr_W\o;u'>k;uKSt;cH[n;H*Ei!`MuprD`bprDNYo
+s&/koqGR;i"]A2p;Gg<f;#F2i:]O;i;#O8h;#aAq:eje`;>j;m:/=Xa;#a>i:B+)i9)_B_84<H)
+!.4]mrI+KjrI=fsr.4m"s+C'!onEF#rJ16(reLK/!/LQ0re^-%q2#*/p5Am.qMjs(s,RhOKm.KR
+D/<s#BPVR'C28)jKl(](DZ4SQE;FSQErC(TFT$@]G5HL_GlN'fHN/?lI/\QoIK4lsJH(1CJqJ]/
+KS>/8LPUeDMMmFPNK0']OcklkQ'IZ&R$jG5S=Z=FTq\<XV5L5jWiN5'YHY:<ZaI6N\[oDc^;%J#
+_o0O7aN;WLc-F\`daQ^sf@\d1gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\s7u]k
+r;6KkrVcBfJcC<$_uG5~>
+JcC<$JcGNFli-bZqu$?gs&K*rrVHNhqtU0bs7ZB`s7?<_rUL$[nF6GG!Uf@SloXOul07EqkN:pg
+jQ#:[iS`VMh;-l@g=k32f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[VQ<p/E8$5!D(l
+4?P\c3]]5[1I42h4?bec3Ar`P1GU[E3&Eca7o<1T;u]bk;>sGn;>j>h;>*fd;=[Wb;u9Pb;ts>j
+;uTbr;ZK_p;]%DM2Dm9I0JG.5/M8S+0JYC>1GLU>1GUcc1(?$'4Zkhi4?bki4#o>ir^R#Z7n<PI
+"%YgI7/91M62j4N5lX%Q4[)%l4$>b+4:+&13]T5^3&rrXr]'s>o/Ze2rAjd:!'0s:rAaj=rAjm=
+qE"[DpI"gEp-\gG"%,@>4oIMC4TR`0qE+jC5!;%+4TIVB48q>C4$*7#rB(0D4?Yk,49.SC4oIJC
+55meF56!bL5!;%m4[&R(rB:-D"$Jb/55IMF5=#-4r]glV5X.Is5<_.h4#o>Zqc!Akpeq>q;cH^p
+;uKVo;uT`!;c6Lm<W,nj;?Bcr<W#nt=8Q+t=8Q+f=TDRn=8uCu=nc"u=8Q+u=VFk9:f'q_:/+DV
+:/"DY9i!fKD/K/frbqaSqJlISrH%dVrH8*_qfi$as*=Qhs*OcnrdFfq!.Xuus+,<EK7ei1Knb>;
+Ll$tGMi<USNfT9aP*2#oQ'Rf)R@B\9St;UKU8+N\Vl-MoX/rG,Yd(O@[C3QT]">Vh^VI_(`5Td<
+aihoQcHstee'ut#f\,!5h;-uHiSrnYjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+13fs*t~>
+JcC<$JcGQGli-bZqu$9eric=trqZHdrqHHdr:U*^s7?6\s7$*YrpN/@mHs9,lg!d"l0.<mk2k[a
+j5T%Ui8<DIh:pZ;g"=p-e^W*sdF$=dcHXSVb/q`F`l5m6_SX+'^V.:m]",A][f2KjP5UUCOsP0l
+FE;G=Ci+!(Df'3#XJhtiT:M@6NJiRHKnPSLQ&i8BG^tC)muRF/!g/Y0r072GpQkQ=qipuCs-3PI
+s-!ADs-!;BrK.&A!0[/?!0I/ArfSLgOHGK^N/E:?IXQ]iGB7hFEI<+XH[C0hIXQZoI=?Zr@:3L=
+?NYb[YHRr-'!/(1V59u^US+<ST:V[HSXZ"8rL!qXQBm_uP)tferJUf9MM_:drIt9)qh>')",D\h
+M>`81M>rA8LPUeCLPYha!/UT1s,-W/$&=b0QC!u*Q^F-:R/*-MRf&TQRf/WTLNEE$!F8q,=ohi5
+r*KD/"^YG<>[:Y7?3=PB@:8q=ra#h8>[1TA?!Uh:?N+7/>lS+/>lS%.=o_e+>5qe/>[(E9rE0J2
+>[:T>>?Y04=Bb].!ErY'>5q_0=BAO*=BAW'<sr&.<)lmp;GTrHOH9C&"d+t3PE_=2Q2-XEQ2QsI
+Q2d0LQNihFR[]e:SFrHQT),&ZT`(S]T_P5OUAq"dV#I7dVu<RXWVrh0VjrHgH?aUSFE2eYH$+:t
+>H_o@DZ4SRE;FSQErC(TFT-F]G5QR`GlN'eHN/?lI/\QoIK4lsJ9$3mJqJ]/KnY89LPUeDMMmFP
+NK0']OcklkQ'IZ%R$jD4S=Z=ETqS6WV5C/hWiE/&Y->.9Za@0M\@K5a]t_=u_SjF5aN2NIbg+P]
+dF6Uqf%8U/gYCWAi8ESSj5f@bkNV6rlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6hr;QZdrdk*#
+s24ke~>
+JcC<$JcGQGli-bZqu$9es,R/?rqcWiqtU0bs7ZB`s7H?_rpp*Z!:^!V614.-m-O''lKRQskN:pg
+jQ#:[iS`YOhVI#Bg=k64f@JL%eC)ald*Bq]bfe/NaN)<>`5BI/^q[Xt]Y(hd\[]*IIe\<rHt$Pn
+?sm5Gr`^=H>$+dUIX??aG&qS<BOt^a@r,q"Eef'YEH6<rHN&9gI.i!_IdVX\If+WcIf"QnI/J?i
+Hn0PkCMRZuA7AtS?X-f<=&rF1?=%#H?smDN@:<PP@:E/7<E)mq;GpFk;eH#]s+:9%s*t&rs*Xus
+H[C/>Gn54GG^"@TF`_\GEcH#8DJ];hrbVULrb):Eqe,tBrb2=Gr+Q"@!,27DrG)1CrG)@Js(_OI
+rb;FIrcA-_q0)d\s*"<a!-nBbrHA3`#^:N/?VsWs;,d6f!)rhos&0#!;c6Qj;?Bcp;Z0Sp;u9Go
+;c6Nm;>X8j;$Bip;,U7gr_NSlr_WMir_WVjrD<Jjs%i\kr_Nbq:esk`;>j;r:/=V]:esn`rD*Ag
+#>.QZ8kDH=HiAEkIJJ?jJ,XurJcC?%KD1&lL&Zo+L\cc)L]<21L]3,/M=HJuM=lf*N;JV&Nr>"O
+MhQ:mDf'<*B4u.#Ch[U0:k`c`DZ4SRE;FSQErC(TFT-F]G5QR`GlN'eHN/?lI/\QoIK4lsJ9$3m
+JqJ]/KnY89LPUeDMMmFPNK0']OcklkQ'IZ%R$jD4S=Z=ETqS6WV5C/hWiE/&Y->.9Za@0M\@K5a
+]t_=u_SjF5aN2NIbg+P]dF6Uqf%8U/gYCWAi8ESSj5f@bkNV6rlg4!*mdKW6nac8Bo`"Lbp@n=\
+q#C0iqY^6hr;QZdrdk*#s24ke~>
+JcC<$JcGQGli-bZqu$9es&8turqcWiqtU0bs7ZB`s7H?_rpp*Z!:^!V614.-m-O''lKRQskN:pg
+jQ#:[iS`YOhVI#Bg=k64f@JL%eC)ald*Bq]bfe/NaN)<>`5BI/^q[Xt]Y(hd\[]*I<W?%u<<6'!
+rDXt)5<_1m4$>Yb3]]8\2*jGj4?Ybd3B/oQ1,CXF2`!W_7o0+]nl#Ndpeh&hs&&_kr)*2b!)`>c
+"&i)r;u9Pc;ts>i;u]hs;[$&t3AiZPr\OR.$nX+a/hJV/1,1R>1,8b`!AcM11CH?04?Pbh4Zkhg
+3C!L5!(d)Zs$crW"%5ID6N'7T6:=1-5skQ9!C&dI4Tdf.4?`[+"?SY(3][."!'1$<s#C'?q`+X9
+q)SI9rAjm="$&D'3W(l83WD/=3<2,=48qMG6MEkD6M<eH63KYD5sIO34T@SE4omc-r&b!C55IDB
+4T%;?4S_);4T@MC4oRSD55dYC49.SD5Q*eG4T[f155m_A4odhG4oRYF4TRZ.rBLKM5X7P!r':EM
+5<qL356*nH49%AA2?$PO<;'8j<<#nq;ZB\p<!6,t;cHcq<;'2k;cHcp<rZ8!=Sl1s=RK;l=Su5#
+=S>er=SQ%h=Sl57>$+g&:esh[9h\8U:/=SW;E@`nqelCOrc%^RrGqjXq/lUYrHA*_rcnHgr-JBi
+s*Xfos*artrd]$?JqAW-KS>,7L51SAM2I4MN/`jYOHG]hPEhE!Q^F20S"-(AT:qsRUnsrdW2cl!
+Xfen4ZEppH\%&u\]Y2(p_8=.0`lQ6DbKS8Xd*^=le^i@*g=tE=hVd>Nj5]4_k3)!nlKdg'mI'H3
+nF?)?oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@JcEXfJ,~>
+JcC<$JcGTHli-bZqu$3c!3cC)rqZHdrqHEcrUp3_s7?6\s7$*YrpTmT!:BdP"mbI<l0.=0jtl,[
+j5].Wi8<DIh;$c=g"=p.f$r3uda?FfcHXSVbK7iH`l5p8_SX.(^V7@n]=GJ^\$l:"!0[>Fr/qn<
+G&qYAE,9B-Ci=0(AZ_l-V4sKHP`L]Xre:`?OdME?S9TO7Mu8V9OS+\4O91Q-PPg[EPlR-KQ2HsB
+Q2?gCQ2d*JP5pdEOoLUCOo:C3OoCLcOcYW`N/*+<It)onGB7kGEI<1[H[:-iI=-EjI=?]traGh6
+ra5h8?sp&7YQ(^1XK&7sV59r]U]-ndTDkDcSXPq7R@4&As-<VK"-Se0Nr=n=Mi*=Fre:B,rIt9)
+qh>')",D\hM>W20M&D,)Ll$qCLl%[iU5kV8SZf*6\WDu#H?ja]rd"Ni%s`JJH#o+/NjlO$X0/"m
+OnP4BRf/WUP_!ZM?NFJ;qH<l(qd'J4?<g]=?![D8"(,GE@/=70?3OV>?!^fBr*KD/s',Y1>[1S6
+>lIt*>5MP&=V+b@?!LW=>$5!1>$>-7>$5#+>5qb*=9)D$<rcA$<t\P5<E3!p;,BoHOH>TeP*;)o
+Pl?sEPlI$IPlI$KQN*<OQj&nHS"#q<opu,SqO[n`TqS3Sqk3_Xo:l8[r1j=hrhfIgrM]Ok!35gn
+!35pqrMomu&Z2%JH?j^WF)cJXI!KgYRourmDZ4SRE;FSQErC(UFT$@]G5HL`GlE!eHN/?lI/SHp
+IXckHJ,t4Qrdt6)L&Qg;LPUeDMMmFPNK0']OcklkQ'IZ%R$jD4S=Q7DTqS3VUo(&gWN*&%Y-5(8
+Za@-K\@K2`]Y;.r_Sa@3a2lBGbg"G[dF-Lnf%8R-g=tH>hr*JQj5f=akNM0plKmm)mdKW6nc&([
+oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcEUeJ,~>
+JcC<$JcGTHli-bZqu$3c!0@,=rqZHdrqHEcrUp3_s7?6\s7$*YrpTmT!:BdP"mbI<l0.=0jtu2\
+j5].Wi8<DIh;$c=g"=p.f$r3uda?FfcHXSVbK7iH`l5p8_SX.(^V7@n]=GJ^\$gb\IK+[!@:N_R
+?XI(;>7OnA=B0s$I!^*\Ec5c-B)Z?@C^4p$L4!cUEd.G-!.4Kes*F`lrd4Zmp3cpirI+TmmX=n[
+rI+9dqL/BkrHnKj(i=&'BkCpb@:3GJ>Zk32='o?B?s[5L?sin@!b#PJr)EYos&&krJc:<%JdI!Y
+J:DroIXQQird+Ti!IB"iGQ2daEr^4ZD[C;uDJa6+Ci!j$rFl1CpLjP@r+Q"@#&%^bC2%EsrFugV
+G'81PGC+UeJ<,J'DJ/l\")2F]B`;WRAn>grC5.IpJ:MrpFEmS)rHA3`#^1H6BN\2/;,dBj!)`_n
+!)ren!`N&spJM&k;H*Nns&8hn!`Mupr_`Pjqb[Dm;,R0dqbdAis%iSir_`\l!)NSjs%rnq:/Feb
+r_WVis%`_n:Jajb:'j]g91qiJ7mq`PrdFQjrI=fsr.4m"s+C'!onEF#reL?)rJ1E/!/LN/re^3'
+pk]!.oo&d-qi1W9"-&>$NV&8.NtI>(F)Pr5C2%?sEc#]-Bmid2r,2LPrc%^RrGqjXqK2[Yrc\0_
+s*4NgrHeKjs*Xcn!e,WKrdY$#K)UB'KSBD[A;>ttM2I4MN/`jYOHG]hPEhE!Q^F20S"-%@T:qsQ
+UnjlcW2ZeuXfek3ZEppG[^`lZ]Y(tn^r"".`Q-'AbKS5Vd*^:jeCN7(g"P3:h;@/LioB+]k3(sm
+l0@X%mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+13es*t~>
+JcC<$JcGTHli-bZqu$3cr_rktrqZHdrqHEcrUp3_s7?6\s7$*YrpTmT!:BdP"mbI<l0.=0jtl,[
+j5].Wi8<DIh;$c=g"=p.f$r3uda?FfcHXSVbK7iH`l5p8_SX.(^V7@n]=GJ^\$l99!*&qtr)=t+
+5<_4n4?GSa3]]8\2*jJk4Ztke3B/lQ1GU^F2_dH]85E/\;Z'Gn<;'5j;Ya2h;?0Sm:]OA`:]OAa
+;Z9Vl<:Wu_<;fbq<<#kt3BI-t"uJ+l0JG.4r[eC,0etI>0ekI?rA"R51,D'U4?`U)!]iG5rC6lZ
+8,bsX8,bmf6UF1.6pX.,6:*t)5X7Ou55dYE4T@PE4T7AA3W;&@3B0%u3rV,=3WD/<3<2&63WD,S
+3BB/]3]T5^5!M:q5!;%o4[D7e1]BlE7f5dW8,bsW6O,D&0g.]a5X563!(6`PpI"pH"%5I@55m\D
+4Tdl24$3@&s$$9Bq`Fd>q)eO;!]rM-r]C3E5Q*bD49.PC5Q*eG4TI\D4o.>B5PmSZ5!;%k4[;7u
+5X.M!5<qP$5sdk&5<qL557KkA4ut_e4$#AY;cH^rr`&Sis&B"srDNYor_s#!;H$OprD`Jg!`N&u
+r)Wi!r`B2(=Su7s=RK;l=T)>$=S>hj=oVS(=nl)!=oMP$=oDM9=&W!m:/+JX92J>V:/+G[3E,in
+rbqdTqJlISrH%gWrH8*_qfi'brd"Hgs*OcnrI"`rIt.HJ!J,k%K)pXZre=s=Ll$tGMi<USNfT9a
+P*2#oQ'Rc(R@9V8SXuIITq\?YVPgAlWiW>*YHY==['d?P\[oGd^;%J#_o9U8aN;WLc-F\`daQ^s
+f@\d1gYL]Ci8N\UjQ5Oekiq?sm-O--n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s2+ed~>
+JcC<$JcGWIli-bZqu$3cs8)buriH1rqtU3crq?<`s7H?_rUL$[nF6GG#4CmGm-O''rolE+kN:pg
+jQ#:[iS`YOhVHuAg=k64f@JL%e'cXkcd'h\bKJ&LaN)9=`5BI.^q[Us]Xtbc\@8oSq31f@-$=<P
+Ec>r9DJF!)Ch@:\Wi;kiS=,V(N/3:FKohFOT!Fl1It<OUO8b76O8P(@Ockq+PkgUBQM6[APkpXJ
+P`q;oP5ULCP5CCAOT(@BP4Xn:P5gOcNK/aHIsuinH$=@PEc?GTH@:6kI=Q`tIt*$#@U`bS?XN_=
+!J%<OYQ(^.X/`(pV5=0ds.KFcrgs7`S=9DEs-O+ZQB[VtPECufNW+k<MM[,cL&Zo+L&Zi&L&Zl-
+M#N80L_Po>O.3&bPBq_5N14d$BPV<sCM7>VBE)N]BPD0oB4kmiB4bdf@q9(_BP)jLH#mk_\%A@5
+RJrZRR0T1@H=gMk?<mJ5!*T;)!*oD-s'5\2>?h)4ra#\6?t!I>?iF@8?!LW??=!J8r`oY3>?b?<
+r`oD+rEB2)!aJr6rE0\8>?tN>>Zt95=BSg3>[(?6qcX8.=BJU)='&L+r`9P0<)lpt;,C(_7Zijs
+PQ$gGQ26aFQ2QsIPlR-LQNrnGR@9V7S=K8Cs.9(Zr1X"\pn@;Rs.fOgs/#^lpS\"hql0Rpq5OCo
+ql0Oori6[2V3?FWH?XLQEdWpoH$+M)=Kh[@rbqdTqf2RTrc@mWrcS3`qfi$as*=Ngs*OcnrdFfq
+s*t'!s+(0%re#*AKnb>;LPUeDMMmFPNK0']OcklkQ'IZ%R$jD4S=Q7DTV8*UUo(&gWN*#$Xfnt6
+Za7'J\%0&]]Y2(q_8=.0`lQ6DbKS8Xd*^=le^i@)g=tE=hV[8Mj5]4_k3(smlKdg'mI'H3nF?)?
+oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcEUeJ,~>
+JcC<$JcGWIli-bZqu$3cs8)YQ!;ZNes7cNdrUp3_s7?3[!qGdLrpL'ZmHs9,lg"K639]Pfk2k[a
+j5T%Ui8<DIgtUQ:g"=p-e^W'rdF$:ccHXPUb/hZE`Pod5_SO%&^:h1k]",>[[^GmYs*Q,&@:EVP
+?=$l@>$>'1=+PjLI!BaSE,B<$An>LhChS'KIVWkBGPlddHhD^bHiAE_IJeQ_IJJ?iIIhpbIK+]n
+HiAC-D/3m$An5=X?s[,C>$+m.?sm>M?sin@"CknM@q5I:!E2tr;ZTd/rIYQ2JUr?%I=-HlI=$?f
+HN&0mH?aXYG5ZLdF)c)9Df5Mjs(_[PC23`]s(;=Frb(t=!,;=Ds(<-]B4u!uGB8%ZNG`HGEH?P;
+@prbR?smF=@fBdA@UW\S@UW\P@JsRD?X[AMDJa)u@;:OSI!9f5G5l[kG'J7N@ocE';H*Kk"&Vro
+;uBPm;tj/k;c6Qm<<#nm;Z9Pj;Z0Gq;Gg=h;>j;k;>sDi;?'Jm:]4,h;?'Gm:]=2j;$9]j:Jk!g
+:^Bil:JXe_:esmc:B+,i9*n0^84>akI=?WpqgSKnrdaots+:9'pOr3ns+^N.qM+s(s+gZ1rJ:H0
+o8<="s,-N.r/CQ5s,R,=!fi8"oT&d/&rhfuF)Po4CM7BtG&1u0DLYE8rGMUQrc%aSrGqmYq/lUY
+rc\0_rcnHgr-JBis*Xfos*juts+(-#!.t3&DM3^uL51P?M2@+JN/WaVO-#KeP*;/rQC!u,R[]h<
+StD[LU84T^Vl6SpX0&M-Yd(O@[C3QT\\#Mf^VI\&`5Ta;aND]McHjkbe'uq!f@\g3gtgiEi8N_V
+jQ>UfkiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$_Z,,~>
+JcC<$JcGWIli-bZqu$3cs8)Xm!;ZNes7cNdrUp3_s7?3[!qGdLrpL'ZmHs9,lg"K639]Pfk2k[a
+j5T%Ui8<DIgtUQ:g"=p-e^W'rdF$:ccHXPUb/hZE`Pod5_SO%&^:h1k]",>[[^Gp2r_t.,4[)"l
+4?P\c3]]8[2aK_o5!1nf3&riQ2)I-L2_RE]85E)Yqc!Jnpf%/iq,./is&&/[o2>Te!E<"p<:a&`
+<;]\p<$XF^2E!BJ2)6j>0/"q//LrS21,C[?1c-sE1G^jD5!;"j4Zkn,49@K.7fGn&7Ros;77Ka7
+6UX:/6psC.6UO+)6:!k%5sILq4?Ybh5!;"jr]1<E3]]>^2`E]Vr]1$>r\ss>3]d1!s#Bg7'KeQB
+4[;4e77B[9786KM:/"AU9MPI\r_NPg"\qcc:/=[b:(^;s:J=JV9M82N7n#d21He#fqa:?Ls$QuU
+5Wq4lr]LBJ4ZkefrB1'Cq`OpAr&am?q)eO;s#UQM4Zkhi5<_4n5!Am-!BiXG5Q*eG4TI\D4o.>B
+5PmSi5!;%k4[21t5X.M!5<qP$5sdk'5<qIu5X.Is5!M%i4$#AY0NJ*Op/Cujs&8kos&8nr"B/2s
+<)rlrp/1rj<)riss&],#r)`_smTBNlr`B&#pfIJtoi_)ms&oA(qcWi#"^"f';GU'e9aOKf9M\AU
+9iF)OrGMUQrc%aSrGqmYq/lUYrc\0_rcnHgr-JBis*Xfos*juts+(-#!.t3&DM3^uL51P?M2@+J
+N/WaVO-#KeP*;/rQC!u,R[]h<StD[LU84T^Vl6SpX0&M-Yd(O@[C3QT\\#Mf^VI\&`5Ta;aND]M
+cHjkbe'uq!f@\g3gtgiEi8N_VjQ>UfkiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBf
+JcC<$_Z,,~>
+JcC<$JcG]Kli-bZqu$3crV?irY-"h-X/i>sq#:$epAO[ao`+O]ncJ@NnG_lEmd9E.m-F!&l07Ep
+k2tddj5].Xi8EMLh;-l@g=b-1f@AC#e'ZRicd'eZbK@rJa2Z*:_ns7*^V7Co]=PP_\$i]OZhfmb
+OsPdKMfE]PChmp+Ch[UcWMl_kSXGh+N/ECFKTVCCT$NpOI=R38qiC`<p5f*4!KiTCPkp[CQM6[A
+PkgUDP5pdDOT:RBOoLOBOT:R8OoL@LMM?_4JUMceGB@kFEdI_3!.Ffp#Ch2RJUh0;@/aL;@:3DL
+@'?a4YQ(^2X/`+qUnj]ZU7qOY*1idmR@9S4R@'A-Q'@MsOcb`aNf8sWM2I%AKnfJY!/CH+s+L6&
+s+VVVOINS>I"[B:DJa-&BP;$kC2.HtC1qF!C2@[%D/F+gCBeTlD/O90DZ"8MD>n;VD/<p$BPM3q
+CAqcLAn?U@DiV;urg==bR[T"Q?XI,E>$>'4=^#!5qd0;."^G89>[:Y7?3=PB@:8q=ra#Y3>[755
+rEfJ/s'5S.s'>Y0qcj)(r`]Y5>?b65=BSg2rEKA->5hY.>$G69>$:`+s&fP.=&rC)='5H'$W^8,
+<E)jn:eO<BPQ$gGQ26aFQ2QsIPm`nER$X2.R[T_8S=K8Cs.9(Zr1X%]pS%5Rs.fOgrh]Ukp8@qh
+s/?!sri,msql0Ooql0Oor2UO3T9=_PG]n1NEe0p1Fa/A*=KcU[rbqdTqJlLTrH%jXrH8*_qfi$a
+s*=Ngs*OcnrdFfq!.Xuus+(0%re"s=Knb>;LkpnEMMmFPNK0']OcklkPa.Q$R$jD4S=Q7DTV8*T
+UnsueWN*##Xfen4ZEppH\%&u[]Y2%o_8=+/`Q-'AbKS5Vd*^:jeCN7(g"P3:h;@/KioB+]k2tml
+l0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+13ds*t~>
+JcC<$JcG]Kli-bZqu$3crV?NirJgf8s7lTfrq?<`s7H?_rUL$[nF6GG7.0I0m-O'(lKRQskN:pg
+jQ#:[iS`YOhVI#CgY1?5f@SR&eC2gmd*L"^bfe/NaN)<>`5BI.^q[Us]Xtbc\@8oS['TUWrd4iV
+E+WNbr`^@I>$4s0JUW#nH?=4JD/!WpA7KIm@<e/fCN+<;qKi-fp3Q^brd=9br-n*_pjW0io7$Oa
+s*Xfm%X`24CMIKn@:<PN>[(E9r`B5-?XN_=raGh:!+bt+r)3TKrIYB-JUr?%I=-Hjrd4Wj#C1W@
+G^"@SFoHI`EcD"rs(r$XD/F'(D/*g"r+H+DB`2T8BFf''G_BsKD/s`.@pi\Q@:T4E$"IFS@q91^
+AS#NQAcQE@AcZOXrau1@rac+@Ac6-=@K9p;@fKgJ?Z'UeD2*C[F`qtRG\^V^:f73i#>nAs;,U:j
+;uBMn;ta)j;c6Nm<;ohl;Z9Pi;Z9Mn;Z0Jk:]ODm;#=,i:]O;i;#O8h;#aB#:eje`;,C%b:eje^
+r_WVjrD!_r:.e,M8Ou67IXZeEIf+]pJGauuK)^JtK_:'!LAlu)LAco-L]E5/M#N8&MYW,.MY;u+
+N:i2&NqeYLNJDh#Df0B+BkM@9D/3m*J5(`8DZ4SRE;FSRErC(VFT$@]G5HL_GlN'eHN/?lI/\Qo
+IK4lsJH(0#K)UC;KS>/8LPUbCM2I4MN/`jYOHG]hPE_>uQ^F20S"-%@T:hmPUSO`aVl?\sXKAY0
+Yd1UB[^WcW]"G_j^VRe)`Pom=aihoQcHstee'ut#f\,!5h;-uHi8WeXjlY^hl07L!m-X60n*olH
+ncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$_>f#~>
+JcC<$JcG]Kli-bZqu$3crV?Nir_rkrr_idkrqHEcrUp3_s7?3[!qGdLrpN8CmHs9,lg*j#l0.<m
+k2k[aj5T%Ui8<DIh;$c=g"=p.e^W*tdF$=ecHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKqGmMo
+"=GuW4Zr[(s#CrV2a]hp5<V(h3&riR1c$pI2_I?a852rY;Yj>k<;BJm;?Bcp;Ys>j;?0Sc;#4&\
+;?0Yk<:a&_<;fbq3WCuA2)I'E0eY6[/eKTc.l&h71,1O@1,:XA1c$pNr&b-G4?>Sa8c)!^7R]a8
+6ps??6iTOl6:"",5XIe'5<qLu4Zkhi4?bni4?Y_e3]R+"rAY!?3&ioZ3][-u!BE4=3WD)=4W$@I
+1.4Q#7SccP9hnGZ:/4JX:/+GX:/=[\;#aDl;#aAo:espe;?'E*:esnb;GL%b:/F\[:/+5J68Uki
+r^$`T6pj7)r]L3Ds#pKI4$3C'!^/_2q`XsArB's?qE+X<s#^-@"[>164[)%.497T/r]g?Fq*"L:
+r&t'Dr]L6FqEP*H5skN9r]guY5X.Fr5<_+g4#o;Y0iV-G;u]hs;uKVo;uT`!;c6Lm<W,nj;?Bcr
+<W#nt=8Z1u=8H%e=TV],=8Z1r=8uD"=TDS$=o2>"=oVV$=o);9=]\R!:JOSX9h\;Z:JOSV;EIfp
+DZ4SRE;FSRErC(VFT$@]G5HL_GlN'eHN/?lI/\QoIK4lsJH(0#K)UC;KS>/8LPUbCM2I4MN/`jY
+OHG]hPE_>uQ^F20S"-%@T:hmPUSO`aVl?\sXKAY0Yd1UB[^WcW]"G_j^VRe)`Pom=aihoQcHste
+e'ut#f\,!5h;-uHi8WeXjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$
+_>f#~>
+JcC<$JcG]Km/HhZqu$6dr;-Hhs/l=%rN-%nrq?9_s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg$/ki_*j
+jlGI^io/hRhqd,DgY1B7f@SU(eC2jnd*L"_bfe2OaN2B?`P]R0^q[Xt]Y(hd\[T#U['R+8PQ-dk
+Jng:$BqCfTM1LPABWS84VPToTR$*JdLPLSIP&-T2S9TF6MuJb7O8b76O8P(@Ockq+PkgUBQM6[B
+Pk^ODP5pd=OoLO6OVj.@Nf8gMJq&?"H[0dVEcQ8MH[U6hIslbEILUjYIplep?XI2K@9m<+rNH7(%
+BQV0W2?AcU8+HVTV.qVScP=KrgF1^R$X,(Pa%>nO,s:"s,?u7re:?+qh5$)rIt9))MO?;O/g<dJ
+r4MbCMI["BkqKuC2Rg&DJsH4r,Dg]EccI$EW:(VF8g25FE;MFF)c2?F)l8@D/='.Ci4$(BkV9qA
+nGV)G&E2=RZr>>?X@#B>$>'3>$5'8r*KA.s'#M/?2\(3?XR;MqHs5.#@1S>?!U]@?2e10?2n10>
+6.u7r`oA*s'#D+$!^\=>$4s1=^#&/>QJ&4rE9,(!a8`0r*','#$=r-='/O+r`9,$<W5r#;c-Cd9
+E(1TQ2?gFQ2[$JQ2d-MQi<?UR@9V7S=K5Bs.9(Zr1X%]pS%5R!2KIfrh]Ukp8@qh!i`,sri,msr
+2KUoql0Rpr2]gu';qI\J9cB^EcZ8TP^7CrJ<m7>DZ4SRE;OYSErC(VFT$@]G5HL`GlE!eHN/?lI
+/SHpIXckHJ.$p[JqJ]/KS>/8LPYqdCl4.0N/`mZOHG]hPE_>uQ^F20S"#t?T:hmPUSO``Vl6VqX
+KAY0Yd1UB[C3TU]"G\i^VI_'`5Ta;ai_fOcHjkbe'uq!f@\g2gtgiEi8N\UjQ5OekiqBum-O--n
+*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$_>f#~>
+JcC<$JcG]Km/HhZqu$6dr;-Hhs,Ho7s7cNdr:U*^s7?6\s7$*YrpTmT!:BdP!UK%MkrS%kk2tdd
+j5].Xi8EMKh;$c=g=b*0f%&:!da?FfcHaYWbK7iH`l5p7_SX+'^V.:m]",A\[^NQLZhf+MHmE*!
+BOk+cEbo>rB4b7sIslTgF`_V@CM.9jAT)EdGa<_mE,p-tHN&9aHN&9kI.;X_Idhd\If+WdIenKm
+I/\HrDJa0'B4_'N$XI(E=]nj/=^PND?iFI3@K'a;<)rlrs&0"t;fdWjK.2D'Jq/B!I"$KjH[:$c
+H?a^[GB\4QF`_bJEGof7DJa9-D/F')Ch[WuqIob=qe-a\EcZbmDf0T,A7B"V@UWbT@q9.]A7b^O
+$>4$cB52*pBkqO$p1k%MCMIQtC27QuC2%D]BEr-^An>RcA7Y[Ls'cCE@;TUcC4UVNAlql,rDEhs
+;Gg:h;H*Hj!)rVi!`Mupr`&kqq,7/gqbmDj!)ibmrD3Jlr_WJhs%r_krD<JjqbRGn:esh_;>j;r
+:/=Y^:esn`rD*Ag#>Ic]8k;?:J,FcnJ,XusJcC?%KD1&kL&Zo,L\cc)L]3)0L]3,.M=c]#M>iD,
+Mu/J+NV&8)Nt[M/H#[b=C2.EqF*VS9CiFfXKl6m.rc%aSrc7sYqfMdZrc\0_s*4NgrHeKjs*Xcn
+!e,WKrdYB-JqAW-KS5&6L51TaM/8'-N/WaWO-#KeP*;,qQC!u,R[]e;StD[LU8+N\VPgAmWiW>*
+YctF>['d?P\[oGd^;%J#_SjF5aN;TJc-FY^dF6Uqf%8R.g>(N@hr*JQj5f=akNM0qlg4!*mdKW6
+nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s2"_c~>
+JcC<$JcG]Km/HhZqu$6dr;-Hhs&Akns7cNdr:U*^s7?6\s7$*YrpTmT!:BdP!UK%MkrS%kk2tdd
+j5].Xi8EMKh;$c=g=b*0f%&:!da?FfcHaYWbK7iH`l5p7_SX+'^V.:m]",A\[^NQLZhd]%<$We@
+/hA_:2D['>0JPLS5X%Cq4?GM_2Dd9H1H7?E5Xe4=;GgHi;uTbh;Z]io;Z'Dl;ZBVc;#=,];ZB\k
+<:a&`<;of*3'&rT2Dd3H0eb:7/hd2U%Pogp0ekF>1GUaB1c$pNqE+j@4@Da>8,l-[7fl+K7fGgT
+6iTRS5lX1X5XIb%5<qLu4Zr^,r&js>"#r>&3Vtc@2`NcW3]]8]r\t6F00MH_5;G_u;,@0d#>\#f
+:Jae];#X2t9i+Y]:f0q`:/Y"dr_WVj#>e2k9hnGZ;#F,h:(9on:Jjqa;,U7h:f(%drD=/':JFSZ
+7mo^"5XRk'5!1qj4oRYE48q>B4oRYC4o[YB48qA=48h;A49%DK4$5Vh5<V.n4oIM@5Q*eG4TI\D
+4TR`2r]UBH5!Sp-!'^?ErBLNN5X7P"6N'1Q5X.Lu5lEnP5!:th3]],Sp/:rjr_reos&8kq!`Mup
+r)<Ypp/1rj<)riss&],#r)`_smTBTn=',<%qH*Yur)s&%qcWi!r)s&%r)rbts&TD%:ejbZ9hbO\
+#>\&f9Mn_eDZ4SRE;OYSErC(VFT$@]G5HL`GlE!eHN/?lI/SHpIXckHJ.$p[JqJ]/KS>/8LPYqd
+Cl4.0N/`mZOHG]hPE_>uQ^F20S"#t?T:hmPUSO``Vl6VqXKAY0Yd1UB[C3TU]"G\i^VI_'`5Ta;
+ai_fOcHjkbe'uq!f@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6Kk
+rVcBfJcC<$_>f#~>
+JcC<$JcGcMli-bZqu$3crVHKg"8JsuX8]4!WrVkkp&F[aoD\=\nc/+XmfDkDrp2o9lK[Wuki_*j
+jlGI^io/hRhqm2FgY1B7f[n^)eC;podEp1ac-+;QaN2E@`PfX1_8!b!]Y(ke\[])V[Bm3Fqih&C
+,_p/pJ;0_dOc5$QM2Q&JUo'rZSXY\$MMR(@Kop/^c('$*Jr9Pe!06r;!0Hi6qiCi@PP^U@Q2?mB
+Q2HmAQ2d'LPEPj+!0[8Bs,d5B!0[,>'pO`>Nf8jMKReQ"H['^UEcZYVI!U2=IL:RTJUi<%@:<VP
+?iFF8?ZE<Qri[TMXfSV'Vl$;bU8+HVTqJ'NT:MI>R[]b6R$a2)Q'@GoOH5B]repl8M>;o%KhS#&
+U:-;?NH&iOChd["C2Ig*Df0N5EcQ,?F)lAEGBS1TG^4^cI"-ZtJ:E&tIXccnI=6HjI!L!]GBS.R
+GBe@SFa%tOF`qeIFE2L&DZO`lrbMOK$ta3cIW1:PAmSbI>$Cl-!Ere,?N+71>6.u7r*BJ4?t!I>
+?iF@9?!LW?>[1S5?N4=2>lIt+>l7h+>5DG,=]eg0>$Lu2!F&b+=Tqu5>?Y04r*','#$=r-<``@)
+r`9P0<E)pt<)?If9L>&1Q2?gFQ2[$JQ2d-MQi<?UR@9V7S=K5Bs.9+[!207`r1NeXoV25Yrh]Uk
+p8@heri,msri,aoql0Rpr2]as&u_CZH[0gXEcQD^JU2B^L7,!DrbqdTr,M[Urc@sYrH8*_r-/-b
+s*=Ngs*OcnrI"`rIt.HJ$\<n]K7ei1Knb>;M#N6DMMmFPNK9-^OcklkPa.Q$R$a>3S"6.BTV8'S
+UnsrdW2ZetXfek3Z*UdE[^WfX]=bhl^VRe)`Q#s>b0/#RcHstee'ut#f\,!5h;-rGi8WeWjlY^g
+l07L!m-O0/n*oi:o()DErq-?dp\4[^s7u]kr;6Hjrr)KgJcC<$_#Jo~>
+JcC<$JcGcMli-bZqu$3crVHKg!VhZON;e_8pAFU`o`+O^o)J7[nG_kWmd:#?5jR_#l07Epk2tdd
+j5].Xi8EMLh;-i>g=b-1f%&:"da?IhcHa\XbK@oIa2Q$9_SX.(^V7@n]=GJ^[^NTMZa0CT,\'hg
+?Xn;$CM@<mAnY7rH[:![FE257B4YXaA8G;+Q@*IdEd%2'!.4?ard4WlnpUCan9t(\rI+9dqgJHk
+&8l<$CM@Ho@q&hP?<gZ:=BPQ0!FB.3@1$IR@q&tZ<)lpt<;f_r?%i0/!.t0#!IoLrIK+X)H@'s`
+H$X^ZGBS.PFEM\Frbi3_D/F*+D/=$(Bkh?rph9S<(NX_GKl1gNA7T.X@U`hXA7]=aAS,ReB`;`G
+CAr#VCM[g(D/XB6F)uC"E=?f)E,fi7D/=!(D/3qbCaa%7C2@[$C2.NuC2%BqAnGRbA7K+X@Ua+_
+DM(nc;Gg=i;,U7g;GpHj;?0Yh;?Bcp;uTbq;uBMo;c<Qkqbm;g!E)en;#aDm;#=,i;#a>i;#X>h
+;#aAp:ejharD<Mhs%`_n:Jaja:&n#f8cqXT6ot<rr."]rrIP!#s+C'!oS*="reL?)reLN0s+gT0
+rJC0(pkf!-pl#!-oo8R'ooB`EL3ITSCMIQrC34<0Bkqd=LkYhHrc%dTrGqmYqfMdZrc\3`rcnHg
+r-JBis*Xcn!e,WKrdYB-JqAW-KS5&6L51TaM._^(N/WaWO-#KeP*;,qQC!u+R[]e;St;UKTqeE[
+VPgAlWiN8)YHY:<ZaI6N\[f>b]t_=u_Sa@4a2lEHbg"G[dF-Lnf%8R-g=tH>hVd>Oj5]7`k3)!n
+lKdg'mdKW6nF?)?oCW%T!quB_rqQNhs8)ZjrVZZno_sFAJcEOcJ,~>
+JcC<$JcGcMli-bZqu$3crVHKg!VfUi;ZBYqpAFU`o`+O^o)J7[nG_kWmd:#?5jR_#l07Epk2tdd
+j5].Xi8EMLh;-i>g=b-1f%&:"da?IhcHa\XbK@oIa2Q$9_SX.(^V7@n]=GJ^[^NTMZa0C,(agje
+.4mM;1,:L;1,:aR5!;%k4#o5Y2)P:f#WOJ+77^0N;,[-e!*&Mf!)i_lr_`_no2#Ebqbcr_!)r\m
+o2GB_"Zn\'2DmDl1]oHd0/!2Tr\FL."u7ni1GUdDr\OO:r&b'C4@r*C7fZ*Z7fc%JrC$ZQs$R8^
+5XIh(5sdh%5=%Our]L]Q4Zkhi4$,Ja3B9&[3V>??3BAo[4[1\m85N#T9`@`e:JLg`"\VTc:ejdb
+:]F/u:JOY\:JO\^;,U4f;>sDk;>j>k:DHW%:/+P\:f("d;G^4f:Jjqc:/atdr_j>*;,L.d;,Bt_
+:I[Z,5<V..4o[\I4?GY'4T.JA4TIVB48h;<48h;A3se#24$5\k4ZttmrB('DrBL6Es#g?Gr&ssA
+!^/_3q`XsCr]U9H#=1U>5X7P!6N'1N5X565s$$iU5!;(j4?GSa2(SK$!*&qrr_ibprDWhs;H!El
+!)rSh!`N&ur)Nf!qcNbt!E`M&=RK;m=BGB%q,[Pur)s#$qcWo#qH3f#qcWSq&m&(1:ej_Y91quR
+:/FY[:/Y"hrbqdTr,M[Urc@sYrH8*_r-/-bs*=Ngs*OcnrI"`rIt.HJ$\<n]K7ei1Knb>;M#N6D
+MMmFPNK9-^OcklkPa.Q$R$a>3S"6.BTV8'SUnsrdW2ZetXfek3Z*UdE[^WfX]=bhl^VRe)`Q#s>
+b0/#RcHstee'ut#f\,!5h;-rGi8WeWjlY^gl07L!m-O0/n*oi:o()DErq-?dp\4[^s7u]kr;6Hj
+rr)KgJcC<$_#Jo~>
+JcC<$JcGcMm/Hk[qu$3crVHKgrqHJorN,msrq6<`s7?3[!qGdLrpN>EmHs9,lg*j#l0.<nk2tdd
+j5].Xi8<DIh;$c=g"=p.f$r3uda?FfcHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKZEX7js-!Ct
+,&Dg_TUh:)KSteHAuqr.V4O-COH><VLPCPGPdJc-G^=surJgi;rK$u=o8ig2!g/Y0r07#Br0I)B
+rKR&A!gJn3r/guBqiLl?rfI2Dq2l8RP)bK\Lk^S3J:)`fG'%\FJ,F^-J:2lrItE6%@UWYQ?XI2L
+?X^,8YQ(a)X<+@=V59r]UnaWWTV8!LSsu1<R[TV2Q^<u&P`_&iO8Y%>N/NJjL&d#+LAurLSrA`+
+PD>3=E,99(Bk_I#Ci4*0EH?2DG'8+YJ;&]1rIt9)s+C<&s+(3&Jc(&tIf4cqJ-CFQIt3'#rdY*%
+J9lP?GQi;9GBJ(PrH&TiEH#o;CiF3(CM%m4NOE"orE0/)>l7q->m">9>[@55!aoGEqHs5.!+#S/
+!aT&:rE]S3>[:V6>Q%h(>7Fb?>[(E;>?b64=]np4r`fJ.>5_S,>$G68=o2D&=VY%?<`W:'=BJX+
+<`N+!<)c[j:J=6Cqiq)FrfmGJs-EVNs-itWs.&_P!1s%Z!20:aqk3\WoV25Yrh]Ukp87qiVuEXo
+WW&ptWVNRkWW0!rX88n6X/DA@I!BjYF`Dl&I!Ba[Pan_VDf9T6qf2UUrc@sYrcS3`qfi$as*=Ng
+s*OcnrdFfqs*t#u!J,k%K5uX!Knb>;Ll$tGMi<USNfT6_OcklkPa.Q$R$a>3S"6.BTV8'SUnjlc
+W2ZetXf\e2Z*L^C[^WcW]"G_j^VI_(`5Td<ai_fOcHjkbe'uq!f@\g2gtgiEi8N\UjQ5Oekiq?t
+m-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s1nYb~>
+JcC<$JcGcMm/Hk[qu$3crVHKgrqQALs,6l6rq6<`s7?3[!qGdLrpN>EmHs9,lg*j#l0.<nk2tdd
+j5].Xi8<DIh;$c=g"=p.f$r3uda?FfcHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKZEX1R(h$cZ
+?t"8$D.mBkBPCLuI=$9_F)c&6B4h-S#]+C6R!iagF*7D,!."Nhs*=3^rd4ZmnU:=an9t(\r-e3d
+qL'!(E,KK-C1_$d?sm>J>?Y-1=CM,8$"@:N@U`kXA5uV-<W>u";H/:%rIb-%rdk&s#(CrHI!U-d
+rcnosG'A+PF`_bHEGf]5qec@LrG):FqIh!nDf^AFDfoZ%@:NbV@qB1^AS,RgBPM<uD/=-0G'.qN
+rH8!Z"*J^-F8BqTEW'hVEW'h`EH#l:EGfZ2ChmneD#S5MBbG/pBP;$kAnGR_@q&k]@;LWp;Z0Jm
+;?0Ya;?Bcp;uTbq;u'>j;>jAn;,[?i"&_uo;>j;p;,U4e;,[<h!`2ZgrD<Gis%its:f("d:eska
+rD3Sl:/=[b;#a>i:'aWj9hS&L845Z=J,XusJcC?%KD1&kK`Hl+L\cc)L]<21L]3,.M=c]#M>iD-
+Mu&D)NV&8'Nu*h7Jou!KCi!g!Dh)_CBPi*IKnXG`E,b\orc8!ZqfMg[rc\0_rcnHgr-JBis*Xfo
+s*jutrdY$#K)UCCKS>,7L51SAM2I4MN/`jYO-#KeP*;,qQC!u+R[]e;St;UKTqeEZVPgAlWiN8(
+YHY:;Za@0M\@K2`]tV7s_Sa=2a2lBFbK\>Yd*^=le^i@)g=k?<hV[8MioB+]k3(sml0I^&mI'H3
+nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+13cs*t~>
+JcC<$JcGcMm/Hk[qu$3crVHKgrqQ=f"&i)r;uZIio`+O]ncJ@NnG_lGmd9E.m-F!&l07EpkN:pg
+jQ#:[iS`VMh;-l@g=b-1f@JI$e'cXjcd'eZbK@rJa2Z*:_ns7*^V7Co]=PP_\$i]OZa-h3<?Xh"
+6n0]H2DR!=0ekFA5sILo4?>G\2`3HJ1GUpG5t"7?r_`Dgs&/Dds&&hoqGI;jpe^Z]o2>Teq,Hub
+pf%;U3B7!r&N)@#0ek@8/M/M*1,1O>0ekH^1BTKj1Hte$rB(0C4@i'C8,l*_7n,s:7K#US6iKIX
+5sRb'5sdm:564#6rB:*A#<b.13]]8^3;bf53#4>64[(Vj85N)U9MSAY:/"AX;GKt`:&[lp:Jjqd
+;Gg=i;,L0e:'FEi;,L.dr_`\ls%iYk!)`\k!)`Yjs%iYks&&\j*DoX2;,C%d;c-Fk;,U:j9i+V\
+:IRT+5Wq:p4Zbb(49.PD55[PD4Sq5>4Sh/<4T7DK4?GYg5<_4o5!Am-!'U9FrBC6E!'^<Ds#pEI
+rB:3Gq`XsCs#gNL5<qM#5Q*hI6N'1^5X.M!5<qFt5!D1p4?>M`1bef*!*&qrr_ibprDWkt;GpHl
+;ufkj;?9]qqc3\ur)ihtqH3/gq,mGor)ru#qcWr$nlbTg(Kjg<;GU%^:.n5T:esk]:/=hf;f?Sn
+E;OYSErL.WFT-F^G5HL_GlN'eHN/?lI/\QoIfFosJ,t4Qre#6EKnY89LPUeDMMmFPNK0'\OHG]h
+PE_>uQ^F//S"#t?StMdNUSO]_Vl6SpX0&M-Yd(L?['mHR\[oGe^;%J#_o0O7aN;TJc-FY^dF6Uq
+f%8R.g>(N@hr*JQj5f=akNM0plg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcEOc
+J,~>
+JcC<$Jc>`Mm/Hk[qu$3crVHKgr:p8mql9^uri6+moCMqOs7$*YrpTmT!:BdP!UK%Mkrn7nk2tdd
+j5].Xi8EMLh;$c=g=b-1f%&:!da?IgcHaYWbK7iH`l5p7_SX+'^V.:l]",>[[^EKKZE^WsrfdAF
+rG2FL*h&@TKo:eFB<A,1Un='BP)bBVLP:GGP.S<$H$Y(!qi(Z;O,s7"nrN^1!KiQBPkp[CQM6[C
+PkUICPQ?u2rK7,Cr/q#@s,m>Er/hJUPE1fcN/3.>IXlckG'*_)#(CuJI=6KkrI5!%J:D!:@K'U:
+?t!B$Z2Cg)XTY]'W2?BhU]7%fTGsMpSsu4>R[TV2Q^3l$PEM#hO,]-ZN/igNLP>SZ+If('[tKd"
+E,BE)Ci"!*Df0N6EHHJRJVf2;LPLV<L5,\]s+UQ0LAll3KS+o/Jq8N)rI=ltrdOirq1/Krs+(*"
+s*t*#qgeZk(3k%HGB@qLFE2MGE--5AFDbi0P]CZPr`K8*>Pqh,>m+D:?!L\5?34JB@/=70?3":.
+>QA(/?3":1>lIt+>l.b*=pnS>>?kB9=]nj0>$Co1!aAi3r`KD.>?kB8=o2D&=VFn<<``C)=BAR)
+<E)st;c-@f91SrFrK[DIs-<VM$(%$IR$jD4S"-#BSHGCQSt>eNr1X%]p7_/R!2KFerh]UkoV_\e
+ri,ms!3,anr2K[qr2]Uo'<7stJUD`dF`V\b\U/REH^gh2YPrM<EW1"XF8L(YFoHR^GQ)jeH2N!g
+HiJKmIK+`rJ,OluJV*lREeK.#L5(J>M2@+JN/WaVO,oBbP*2#nQ'Rc(R$sM6S=Z=ETqS3VUo(&f
+WN*##Xfen4ZEppH[^`lZ]=bkm^qmn+`Q$!?b0/#ScHstee'ut#f\,!5h;-rGi8WeWjlY^gl07L!
+m-O--n*fc9o()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$_#Jo~>
+JcC<$Jc>`Mm/Hk[qu$3crVHKgr:p2Ks,6o7s,6o7!qc*UrUU!Y!:^!Vs6]mSrp0[OlMg$2ki_*j
+jlGI^io/hRhqm2EgY1B7f[n^)eC2jndEg+`bfe2OaN2B?`P]R0^q[Xt]Xtbc\@8oS['R'CY^H@s
+ra5Y4,'.X:@V9:d<e>aHH?aIMDJWruARf7fCl+%!Ci+38H[C'brd"NirH[s[s*O`mnpUFbn9t%[
+rI+9dr-]#pDes<-C1^sb?t!AI>5_P*@:3GNra5t?@:E\UA7S[;<W>u";Jq2ArIb*$s+(&r!do?B
+rd4Zjs*4Qf!-\<`s)J'V")i'oD#S;OD#J)LBPIHZs(NBbF*W7iDKU/8@prhV@qB7`AnGajCMRd,
+G^012rc\9`!-\<`r,hs]s)\6^r,VgYr,M^Trc.jT&ohr5EcQ5AEcH)<Ec#Z0DJX*)rbMLJ$u'Be
+BkV0j@ps^q@>=_X!E)kb;?Bcp;Z9Yp;u'>j;>jDm;#jMn;#jMm;>j;m;G^3f;$9]m:esmd;#O5k
+;Z'Ak;%QQ":Jjqb:Jak_:JXea:esmc:'aWj9hIuK845]@J,b&tJcC?$KD:,nK`d!^L5,Y^qM,!)
+s+gZ1rJ:H0o8<="regN0q2Fs*oT&R)s,[nSMh,neDJO!$Bm>VSChmp;KS>-ZE;OYSErL.WFT-F^
+G5QR`GlN'eHN/?lI/\QoIK4lrJ,t4Qre#6EKnY89LPUeDMMmFPNK0'\OHG]hPE_>uQ^F//S"#q>
+StD^MU84T^Vl-MoX/rG+YctF>['mEQ\[oDc^;%J"_SjF5aN2NIbg+M\dF-Lnf%8R-g=tH>hVd>O
+j5]7`k3)!nlKdg'mI'H3nF?)?oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcEOcJ,~>
+JcC<$Jc>`Mm/Hk[qu$3crVHKgr:p.e!`MuqrDWjjoCMqOs7$*YrpTmT!:BdP!UK%Mkrn7nk2tdd
+j5].Xi8EMLh;$c=g=b-1f%&:!da?IgcHaYWbK7iH`l5p7_SX+'^V.:l]",>[[^EKKZE^W5r)Fn.
+779R67Q3.[0/5.91dXAi4$>Vc3&`]P1G^dH2Ea>q:B",j<;KPl;Xm]\;?0Sh;#*rg;Z9Pb;?0Yk
+<:a&c;uf#Z3=n,-2)R3H0ek=6/1iA(0etN`1&j$51,C^D1Gf"nr]L3D"$&_?8cD3`8Ou?A77I/C
+!CK3Q6ioY>6N'1]5X.J!5<V+k4$5Yf4?Yeg48q8@3;tu<3<(uQ3&<``4[hn9;,'_[9heAW:JFMW
+:&[lf;#4&k;cH]n;?B]l:]*rh:Jk!f:]XEir(m>irD3Jkr_WSi"]/&n:f($d:]sQj:JXgd;%c]'
+:fC:i;GpFj;bp1`:ddZ74oRPA49.PD55dYE4T7DC3]m='q`F^<q`=sD5<_4n55dSD4oIVD55@AA
+4odkF55[SD55m\I5<qJ"r]gQO5=.^862j+N5<qI44pO;83BB2]2)"c(s&/kqr)<bs;GpHm<<#nl
+;?Kco<)riss&],#r)`_sm906eqH!Z!rE9&#qcNo$nQGKfs'#P-=&])o!)*;b#uFJp:.n5Y<Duiq
+E;OYSErL.WFT-F^G5QR`GlN'eHN/?lI/\QoIK4lrJ,t4Qre#6EKnY89LPUeDMMmFPNK0'\OHG]h
+PE_>uQ^F//S"#q>StD^MU84T^Vl-MoX/rG+YctF>['mEQ\[oDc^;%J"_SjF5aN2NIbg+M\dF-Ln
+f%8R-g=tH>hVd>Oj5]7`k3)!nlKdg'mI'H3nF?)?oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcEOc
+J,~>
+JcC<$JcG*9qYg<hp\XpcrV??c!V`\mWrT6uX8VVhnGr(Xn,MeUmJcHBlg!d"l0.<mk2k[aj5T%U
+i8<DIh;$c=g"=p.e^W*tdF$=dcHXSVb/q`F`l5m5_SO"%^:_+i\[f2X[^<BHZ*:EpPEV/mrG)FM
+C]8&fLOt>?B<8#,US40FPDtKWLkUPFPG5C`IX-L"q2P62o8ig2!g/Y0r07#Br0I)Brfm,A!gJn3
+r/guBqiLl?rfI2DrK/:jP`LlcN/*+>I=QZiGB@nIFF8LaIXcfpI=?WqJq/A[@Uf=Ds'Pn7ZEaA3
+!3Z='"0&5tVu3=iTbO/lT:MRCS=H%9R$j;,Pa%AoOHGV'NW4q_MMHq?L4t>9U6hF7M3DpuDJO!)
+D/=02E-$2MIu'#@M2I1IM>i;2L]3&,L&Ql-LAlo+KDpK&Jc:3!If=irJH(3#J-(:PJc:2tJbsur
+JcC6>JU;ZeH?j^YF*2MGF`VSDGBe1GDO>K_ZWUL<rEfJ/r`oJ/r*BG3?srh<ra#S1qHX#+!+#S/
+r`f;*r*02)$s["@>[(B7=]eg0>$Lu2!F&b+=oMV+>$:`+s&fP.<`W:(='5H'r`'5';c6Ih9hI=.
+rK[DIs-<VM$(%$IR$jD4S"-#BSHGCQSt>eNr1X%]p7_2Ss.fIe!i;]hrhf=cri#gqoW%hgri5ms
+p8f".TTFbPH$=CPG*.W+G'JM.XK8V/E;X_TErL.WFT-F^G5QR`GlN'fHN/?lI/SKnIK4lsJH(0#
+K)UB'KSBD[BnqM$M2I4MN/`jYO-#KeP*;,qQC!u+R@B\9SXuIHTq\?YV5L5jWiE/&Y-5(7Za7'J
+\%0&]]Y2(p_8=+/`Q-'AbKJ/UcdC.heCE.%f\5'7h;7&IiSrnYjlYail07L"m-X60n*olHncA@S
+rq-?dp\4[^s7u]kr;6KkrVcBfJcC<$^]/f~>
+JcC<$JcG*9qYg<hp\XpcrV??c!;HJOs,6o7s,6f4rUU!Y!:^!Vs6]mSrp32AlK[Wuki_*jjlGI^
+io/hRhqm2FgtUQ9f[na*eC;spdEp1ac-4ARaiMNB`PfX1_8!b!]Y(hd\[T#U['R'CYciG&I=-EK
+ra-mX?X6oBA79(_=+PdGH?aOPDej$!ARf7eD0^hdCi"-8H[C)3H1Q@]HiJK`IJeQaIJ83gIIr!e
+I2$[>Ci+!'An5@Y@:!2D>$"g.?X[@A@K0a7@fBm<<;ont<<#ku;MKo(KDgB&J:@KG!IfFoHiJBk
+GSkXLG'8"MFE)5;E,TW3Ci+$*D/3m%C2.J]BGYi7H#@VJAS#@]A7T7_AnPglCMRj3G^043rcn?b
+!-\0\r,hp\s)e9^rGhp[ErC"WE;aeSE;stXF8^.ZEW:(`EcH)>EGk_ls(q^Nrb;sWB5)'pBOt\'
+A7:-g;,U?[;Z9Yp;u'>i;>sJn;#jMn;#jMm;>j;u;G^1e;,U7g:f1*h:B45h;#jMn:]jKi:f73f
+$;aSr:Jak_:JXear_NJf!`)Qcr^d;b7m\hXJ:RTLs+:6&pk8?p",)A_LAco)LAco-L]E5/M#N8&
+MYN&-MYW2+N:`,/NrP+7Nq&/GOH#*HF)Gl2C1qC/EGfQ,DL[LrKnXLDEW1"XF8L(YFoHR^GQ)je
+H2W'hHiJKlIK+`rJ,XuuJH1<$K)pXZre>-BLl$tGMi<USNfT6_OcklkPa.Q$R$a;2S"-%@T:hmP
+UnjibVl?\rXKAY/Yd(O@[C3QT\\#Mf^V@V%_o9U8aN;WKc-FY_dF6Uqf%8R.g>(N@hr*JQj5f=a
+kNM0plKmm)mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcELbJ,~>
+JcC<$JcG*9qYg<hp\XpcrV??c!;H@g!)r_nrUU!Y!:^!Vs6]mSrp3#<lK[Wuki_*jjlGI^io/hR
+hqm2FgtUQ9f[na*eC;spdEp1ac-4ARaiMNB`PfX1_8!b!]Y(hd\[T#U['R'CYch%)<<YcZ6psL5
+r^7\Y/2&b95s@Io4ZbYa2`<HK1c%-N3C-84;,L6j<;TVk;Y!c\;?0Sh;#4&h;ZBVc;ZB\k<:j,e
+<#IbX3B/rU2Dm9H0ek=7/M/M*0etL=1,:X@r\FU41,Jnmr]C6F4?<C4r^R&]7n6,L7K,^T6iKLR
+5la7N62a(K5Q<nH4:OG94$,Pe4$,Ga3]T2[r]1BH1d4)Y7S-EO9ht[^#>\/k9i"P[;#XDf;ZBYr
+<)`]m%oH/!:/=V[:Janc:esk`;#=&_;#X8g;>X2h;?'Jm:DZi':esqb;c6Lj:f1%d;c6Rl;,1%X
+69kH2s#^9Er]^9Ds#g9Bs#U-Aq`F^<q`>!E5!M1n5!Am-!'U6ErBC6E!'^<D!BrdJ4p!l25PmSD
+55m\P5!V=u5sIV#5=%X75nQ@H5X.Lu5!M4q4ZYYb3]Jo<r)<Vns&8hp"&i)q;uTbr;ts5m;,^Fo
+r)Wi!r)ikuqH3,frE'&$r`K&!s&f5&r)i5enQHN/=BJHs:/+GX9MJ>Y;,0eZ;Z0MoE;X_TErL.W
+FT-F^G5QR`GlN'fHN/?lI/SKnIK4lsJH(0#K)UB'KSBD[BnqM$M2I4MN/`jYO-#KeP*;,qQC!u+
+R@B\9SXuIHTq\?YV5L5jWiE/&Y-5(7Za7'J\%0&]]Y2(p_8=+/`Q-'AbKJ/UcdC.heCE.%f\5'7
+h;7&IiSrnYjlYail07L"m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$^]/f~>
+JcC<$K)b3:qYg<hp\XpcrV??crqH)ds/c7&s7--YrpNJImHs9,lg*j#l0.?ok2tddj5].Xi8EMK
+h;$c=g=b*0f%&:!da?FfcHXSVb/q`F`l5m6_SO%&^:h1k\[f5Y[^EHJZ*:I8P*>m.rbEZnCMR["
+B4bh6BW\2.US4-EP`CZXLk^VHPDlT/IX$BsN;8J/Nq&20O91Q-PPg[@Q2HsCQ2[$AQ2d'LPEPm,
+s-!;B!0I2Bs,n7^S!T;"O,SsOKnY),I=-6[F`h_QH[C3kI/\WrJ,Op*@:E\R?sd;LEjDqJYPtX8
+XJr1sVPBr^UnaWWTV.pJSc5,ZRf8[+Q^*buP)tcfNf8sWN/WUKLP:JJO.Eb9Q#gt_CM[m*DK'T;
+GC5+%M2@+IMi7Okre^Z2!/LN-s+LK.M#N2.L(AriK7\`-JUr?%IsuirJ:IQKrdk*"rdk*"qgnWp
+rIFs!qgnd!!df0;rc\?brcAQlF)cAGFDblZEGSlcra,P/s'5S0qd'>2@:8q=ra#S1r`fP0>[1S6
+?34D;>l@n*>l@n+>5VV)=peD7=]np4>?kE;>5_S,>$G37=o2D&=TV]+<rQ/#=T2D%<W5r$;c-Ce
+90`E@s-3PKs-<tXR$j>0R[]e:SFiBPT),)WU&:SXU%P/[U\ghgV50seVY$ecW;`dgWr8prWr&jh
+X;%S*Ndl>!G'%bSUj[Q4G_D]lXfnr+EW1"YF8L(YFoHR^GQ2peH2W'hHiJKlIK+`rJ,XuuJH1<$
+K)pXZre>NMLl$tGMi<USNfT6_OcklkPa.Q$R$a;2S"-%@T:hmPUSO``Vl6VqXKAY/Yd(O@[C3QS
+\[oGe^;%J#_SjF5aN2NIbg+M\dF-Oof%8R-g=tH>hVd>Oj5]4_k3(smlKdg'mI'H3nF?)?oCV\J
+p%J+RrV6Egs8)Zjrqu`no_sFAJcELbJ,~>
+JcC<$K)b3:qYg<hp\XpcrV??crqHGOs,6o7s,6i5rJU^Gs7$$V9()*6m-O'(lKRQski_*jjlGI^
+io/hRhqd,DgY1B7f@SU(eC2jnd*L"^bfe/NaN)<>`5BI.^q[Us]Xt_b\@/iRZa6p@Yc`A%rd=]P
+!aoAAr*:.O=+YjHH?aRRDej#uAn>LiD/OiKCMe*7r-J$]nTt4^!.=<br-n3bp3usgo6q7!FDu,6
+Chm]rA7K%U?s[)Ar`K,,!F]C8A,g$<A-$1>r`/tts&/u+L4oMXrdt0$!.Olp!IK7nHiJBkGlN!f
+FpW85F)c,9E,BK1rbVUO%r5oqCMINrDfBuVEI2;.@f0a?B4u!pDfto$rce<cr-&-aq/uXXr,r$]
+!-A*Z!crC&rc.sWr,M[S!HE/YF8KtXF8g1\EH;%u!-8'Y!cDjlrbVRK$u'HkB5)'nAn-:!@8ZGj
+!`Muqr`&kqqGR;ir)*Sn;H!?grD<Mks%j&";Gg:f:f1%b:Jgpcr_O2&:f("c:JXea:esna:/4S\
+;>sAi:B+)q9hn8P8Ou3.JGk'!K)UDtK_0uuLAlu)LAcl/LkgcaM#N8&MYN&-MY`8+N:`)0NrG%5
+Nq&20O;*\0HuNt>C2.I%Jo5F>CN4l\K8#$WEW1"YF8L(YFoHR^GQ2peH2W'hHiJKlIK+`rJ,Xuu
+JH1<$K)pXZre>NMLl$tGMi<USNfT6_OcklkPa.Q$R$a;2S"-%@T:hmPUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGe^;%J#_SjF5aN2NIbg+M\dF-Oof%8R-g=tH>hVd>Oj5]4_k3(smlKdg'mI'H3nF?)?
+oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcELbJ,~>
+JcC<$K)b3:qYg<hp\XpcrV??crqH=g!)rborDimfs7$$V8ac!5m-O'(lKRQski_*jjlGI^io/hR
+hqd,DgY1B7f@SU(eC2jnd*L"^bfe/NaN)<>`5BI.^q[Us]Xt_b\@/iRZa6p@Yc^t(<<P`Y6q0WB
+6l@a;5sRXt5!(bb3&NNL1Gh*O2EsZ*:f1%frDWhs<)iiqqbm5g!)i_npJV#gpe^far_`_no25Qe
+q,Hras&9Xo4#f5\2`3KM1Ggj@0eY+1/1iXV0`X!*1BB6er]U3B!BWID8cM<\8H20[7fGjU6i]UR
+6j#bA6:1Z;!C/mK5QsA94Zbbgr]:-C3rM,K3]T2[3]0&a5"A+>:&[id9a49e9MS>[;>X;m;ta)k
+;cH^pqbd_t:esk^:/=\`;#F)h:B"#i:/CX]r_EMjr)*>fr_W_n:J^sdrD*Sn:Jaqf;uTW,;c6Fh
+;,gFi:/XDG4$,Pf4[)(.4o[YD49%>A48qA>48_5?3s[l/4?Ynl4[)(.49.SD5Q*eG4TI\D4U4/8
+5<_7o5!Sp-s$$HG$9g^>5s[_#5X.M#rBUZR5<qFu5<hF34p=#/4#f)Ir_rhps&8hp"&i)q;uTbr
+;tj/k;cHcp<rZ8!=Su7s=RB8i=9)G%=Sl2"=T2J#=R'&Z>5h_/=&r0n:B!rr9MSG\:JOPW;c$=i
+;uCY7ErU4XFT-F^G5QRaGlE!eHN/?lI/SKnIK4lsJH(0#K)UB'KSBD[FGG[/M2I4MN/`jYO-#Ke
+P*;,qQC!u+R@B\9SXuIHTq\<XV5C/hWiE/&Y-5(7Za7'J\%&u[]Y2%o^r!t,`Q$!?b0/#ScHste
+eC<($f\,!5h;-rGi8WeWjQ>UfkiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$
+^]/f~>
+JcC<$KE(<;qYg<hp\XpcrV??crqHHdrMoq"ql9^uriH7*Yd+2r!q,ICrp0[OlMg$3ki_*jjlGI^
+io/hRhqm2FgtLK8f[n^)eC;podEg+`c-+;QaN2B?`P]R0^q[Us]Xtbc\@8oS['R'BYck2-OoT:s
+D#S2PC1h3nrFQeAVkKWIP`^u`LP:GEP.6d5H?asoN;&>.Npr,/O9(N.r07#Br0I)Brfm,A!gJn3
+rK7,CplP]BS!TS*rf7/>L4b*WI0=k?F*2R'I04kHI=;*E!.b$!!b#PHra5k;@%Xa/rNH4&!3?*u
+!N)XkU]dHcTV8%XT)Y>]SGnp-R$X)&PEM#jO,f3ZN/`dPLPD:`]7c8dEc,].Df0K7Fa8@gM2@+H
+MMd7JMZ/P3MZ8M7Ll$reL]<):LPUbALkg_?LPCM9rIY*$rdY'"IXh6Fq18Qrr.4]pqLJ^"JV!cO
+s+;,@IX-0`G'J7TEcZJHEccGFDfUYOMI'Wf?2n10?2Iq0?XR:@?N=F3?iF@3?2\"6>?kH>?=$oB
+>l@n*>l._<>$G69>?k?8=]eg0>$G39>[(D1=Tho4>?Y2/=pJ88>$5!1='#<%s&f;&s&Bn8<E)po
+;,0ePQ'@Q!QBml(R@0G1S"#q<o:>oQqOd\Zr1NeXoqMJ]q4n"erhf=cri#gqoW%niri5gqrN-%"
+qQ(I7XJq\JH['dUF*<>TH[9gZNgd,MY-._Cs)S*[qfMj\rc\3`rcnHgrHeKjs*Xcns*artrdb$"
+!.t3&!JH1+L2Vj'M2@+JN/WaVO,oBbP*2#nQ'I]'R$jD4S=Q7DTV8*TUnsrdW2ZetXf\e2Z*L^C
+[^N]V]">Vh^VI\&_o9X9aN;WKc-FY_dF6Uqf%8R.g>(N@hr*JQj5f=ak32'olKdg(mdKW6nF?)?
+oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcELbJ,~>
+JcC<$KE(<;qYg<hp\XpcrV??crqHHd"cS@tMMmDjMYrA5N/di*!q,ICrp0[OlMg$3ki_*jjlGI^
+io/hRhqm2FgtLK8f[n^)eC;podEg+`c-+;QaN2B?`P]R0^q[Us]Xtbc\@8oS['R'BYck2-I/RIQ
+?N=F2>o6gP>[2Z'G]n.HD/*]pA7KInLNRTOCiOOoHLuLPH3/G@I.D^`Ie%p\If+WeIMm6IEc5f3
+CM@Bk@:<PO?<^Q7=(#EF@:<POr*o\:!Fo+-<<Q6";gO/sK`?](K)^B$IKFqHIK"TsH@'s`H2Vsp
+G'.nLEcH&<Df0IkD?"GPC]A,`BlJ3NDg#f,A7K.]AS,RiCN"6<GlDpbGQW/7GB`t0r-&9eF`heJ
+rcS-\qfMp]F8BqVE<'tTEW'kVErL.REWC1ZEW:(YEW0t\E,BK0rbVRKs(MaOCM@HoAo_<qpeh)h
+peh/l<)ifpq,75ir)3Pls&/ko!)ienrD3_r;G^1e;Gg<i;#a;k;#4&h:]O;i;#X5t;,C%a:esh^
+:Jjsf:]=)u:JOYZ8kMZF6p6-QJqErRq1S?ns+^N.qM,!)s+p]1reUN0o8<="regQ1pl+^%q2Y00
+s,R&=rK%bTMhH=mDJX*%BR#_XDJ<m2IYWN.K`,ojErL.WFT6L_G5QR`GlN'fHN/?lI/SKnIK4ls
+JH(0#K)UB'KSBD[Dhj.*M2I4MN/`jYO-#KeP*;,qQ'[l*R@9V8SXuIHTq\<XV5C/hWN*#$Xfnt6
+ZEppH[^`lZ]=bkm^qmn*`Q#s>aihlPcHjnce'uq!f@\g2gtgiEi8N\UjQ5Odkiq?slg4$,n*fc8
+nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s1eSa~>
+JcC<$KE(<;qYg<hp\XpcrV??crqHHdr_`_pqGd>l!*9*f!q,ICrp0[OlMg$4ki_*jjlGI^io/hR
+hqm2FgtLK8f[n^)eC;podEg+`c-+;QaN2B?`P]R0^q[Us]Xtbc\@8oS['R'BYck0.r`'.k6psL5
+7Rd/A"@GC:4?NO&%Q-(#1c.3O4$H,0;,L:kpf.5kr)3;g!)ibop/1lfpe^c`mns-aq,Hub'0J?<
+3&irX2Dm<H1,(C:0.e_,0`Eg.0JW>Yr]U3B$9CUI8Ou?A8Ou?Ar'gWR$:@3K6U=%*6U3t)r]gEJ
+s$$HG!^8b/r]L3B(HOW>3B9&R4[;J-:/+GV:/4MX:/4S[;>*rh;tj/i;uTbm;?B]l;#X8j:]XEi
+r(d;fr_EPi:\[cc:]4,j;Yj5h;?'Go:Jamc:]F/i:]=2j;?'N,;c6Ij;,^=i;G^4^7RK!p4Zu",
+4o@AB3]m='r]:0B4$3@&rAt6F4?Ykl4[)(.49.SD5Q*eG4TI\D4o[\M5X%@p5!M7/4o[_G4U"#7
+5=%S"r]gKK6N'1N5X534s$$rV4[2+m4$#AY02kbI;u9Mr;c6Omr_rkrp/1rj<)riss&],#r)Wo$
+=o;Ch=oMP'=8l>!=8uD%=o2=e=nZ&!=oDP&>6S24<)?=cr_*_p:K("a:/4V`:JaqerGhjXrc@sY
+s)n<ar-/-bs*=Qhs*OcnrI+]p!.Xuus+(0%rdt6)L&QgFLPUeDMMmFPNK0'\OHG]hPE_>tQ^F/.
+R[]h<StD[LU8+N\VPgAlWiN8(YHY:;Za@0L\@K2_]Y;.r_8=+/`lH0BbKJ/UcdC.heCE.%f\5'7
+h;7&IiSrnYjlY^hl07L!m-X60n*oi:o()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$^]/f~>
+JcC<$KE(?<qYg<hq"t!crqZEcrqHEc!;6,f!3H1%!j8`2rilO1md:#?!UK%Mks+Cpk2tddjQ#:[
+i8EMLh;-l@g=b-1f@JI$e'ZRicd'eZbK@rJa2Q$9_SX.(^V.:m]",>[[^EKKZE^X;Xf_Sc$B0RQ
+Chmg$CM7EqrFQdXAnIO!Q'.,`LPLSIPECs9QZmt5MY2u*Npr,0O91Q-PPg[@Q2HsBQ2d*APld26
+P5UOCP5g[EOscBROcc*!Q]I5fNfJjIJU`,rG^"7NFF8OcIXQZpJ:N-$JUr>[@:K1C).?pYZEUO:
+YHP(1XK&;"WMQAbUnaWXTVA(XSd1gXS=,e4Q^7T6!g&P,rf._QNf8dPR[&eNG&hA7E,Tc;G^G.#
+M#E21M?&M2MZ/P6M?8]nMZ&D3M#<&,L]N9ereCo:KS4u2Jq8K'J:E#trI=s#J:RNJs+'utq1/Bo
+qh"d!s+LE)'SM*cH$FOXG]e1OF`VSGFE;>=E/jd$!*oM/qd02-!+,Y3ra#S1rETA,"C,5<?=!P8
+r`f>+qcj)(&R8OE>[(B7=]eg1>$G6:>?Y50=Tho4>?Y2/=oqo3>5hYJ=B/C'=BAU+=&r=#<E2so
+;,0bSQ'IZ$Q^=,.R$jG5S=K;D".l'TT),)VU&:SXU%P/[U\U\cV>d@aVuEXoWV*:jWVrjnX8f:"
+X8T-sXVIn6R"g'7G'.hLO2-*fF*j4B<i`C+rc.sYrcA!ZrcS6ar-/-bs*=Qhs*OcnrI+]p!.Xuu
+s+(0%rdt6)L&QgGLPUeDMMmFPNK0'\OHG]hPE_>tQ^F/.R[]h<StD[LU8+N\VPgAlWiN5'Y->.9
+Za@-K\%0&]]Y2(p_8=+.`Q-'Ab0/#ScHsteeC<($f\,!5gtgiFi8N_VjQ>UfkiqBum-O--n*fc9
+o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s1\M`~>
+JcC<$KE(?<qYg<hq"t!crqZEcrqHEc"SI\1Mi7Ljr/:T6s,I&=!Uf@SliHG;rolZ2kN:pgjQ,@]
+io&bPhVI#CgY1?5f@SU'eC2gmd*L"^bfe/NaN)9=`59C-^V@Ip]XkY`\$i]OZa-j?YH=r+Hj41k
+?XR5I?N".I>[:W??!CNUEcH#5B4b^bD/O32M108\F*R\1nTjVM!IK4aIJeQcIJ&'fIJ/+>F)c/:
+DJO$&ARf.W?XI)C>?=p7?t*SQ@U`hW@UikX@oQE-<E)ss<)\PKK`?Z(JHgXRIXQZlIK"TmHN&0h
+G7&M9FE;JBDfK]5DZ4MPD#\8`C2S98F_G?!@q9.`AS,XmFE_s,GlN!fGQ;seGl;j`Gl;ghG'.qL
+FT-F]FS^+\FE@G%!crC&pMp.N!HE/YF8'_TF8p7`EH?/?EVjeVEW:%_Df'?-D/9)bs(DUPBPD!g
+@Vkm=s&&Phs&Aqqq,72hrDNYms&/ko!)ienrD3Sn;G^3f;?'Gq;,9ta;#F0-;G^1c:esna:Jaha
+;,9ta:eje^:f1%b:]=)s:JOYY9h@oI6U-0SrIap!p4WU'Knb?\L\cc)L]<21L]3,.M=ZW"M>iD0
+Mt`2"N<,'!qi:H4rJpi;qiDGOMh#qhDej*$CNttYCh[^7J5-#rrc.sYrcA!ZrcS6ar-/-bs*=Qh
+s*OcnrI+]p!.Xuus+(0%rdt6)L&QgGLPUeDMMmFPNK0'\OHG]hPE_>tQ^F/.R[]h<StD[LU8+N\
+VPgAlWiN5'Y->.9Za@-K\%0&]]Y2(p_8=+.`Q-'Ab0/#ScHsteeC<($f\,!5gtgiFi8N_VjQ>Uf
+kiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s1\M`~>
+JcC<$KE(?<qYg<hq"t!crqZEcrqHEc!qfGhqGd;ks&T/"!Uf@SliHG;rom)>kN:pgjQ,@]io&bP
+hVI#CgY1?5f@SU'eC2gmd*L"^bfe/NaN)9=`59C-^V@Ip]XkY`\$i]OZa-j?YH=p+<)k@q6q0R5
+6psK=6k_[C3B/lR1c$mJ3&*Q`9i"Vc;cEHjr_r\lo2GZer_r_ms&&PfqGH]Z!)r\mohuhm4$#A]
+3&``P1c$m@0J>+3.kED01,:O=1GgpErA4R<4[&d,"Znk.8kDVR7g2IT7n,p9rBpWQr^6uY6:4%*
+5X@[7570Y?5!D(l5!:th4oRMX3]fD`4?bPj:/4MX:/"AW:ej_a;cEHj!)rhq"&i)q;uT\p;u]_t
+;cH^pr_ibpr_`hq:f'se:]OAj:]=)j:JO[[;#X5j;#X>l;Ya,h;>O,g:]=,g;#O/t:esna;,^=g
+:fL=kr_Wko9L:R!5!Jp.r&Y!A4$5Y(3s%H)48_5>3s.N*4?ia-!'^?D!'U9Fr''s?s#pNM5!D./
+55[SD56!bG55meI62j+Q5sI\&5sb?4!'gHH#sUR;3BB,V0N1pI<!-&s;cEZp!)rYjs&/qt<Voes
+=8Q+t=8H%d=oVV'=8l>!=8uD%=o2=e=nl2!=oDP$>8:=C;G^1b9MS>Y:/t%b9heA]3DWONrc.sY
+rcA!ZrcS6ar-/-bs*=Qhs*OcnrI+]p!.Xuus+(0%rdt6)L&QgGLPUeDMMmFPNK0'\OHG]hPE_>t
+Q^F/.R[]h<StD[LU8+N\VPgAlWiN5'Y->.9Za@-K\%0&]]Y2(p_8=+.`Q-'Ab0/#ScHsteeC<($
+f\,!5gtgiFi8N_VjQ>UfkiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s1\M`~>
+JcC<$K`CH=qYg<hq"t$drV?<brqHEcrq6)f!3H1%!j8`2riuL/s0GYjlg*j#l0.<nk2tddj5].X
+i8EMLh;$c=g=b-1f%&:!da?FfcHXSVb/q`F`l5m6_SO%&^:_+j\[f2X[^<BHZ*:F7XfR\KMh7+L
+CM[a#BP2#WAccXXAc?BSOc>9SL51PIEh9Y-H%(F*nr<O,nW3[2!KiQBPkp[CQM6[EPkC:DP`q8n
+rfR5Ds,m;Ds,dh_QBmSmNK/jPK7SQ&I!Tu8F8gOeIf4a"JUi9&JV!f0#@LtJ@:5&"Z2Us5YHY.2
+XK&;"W;`P#V5'cZTV8$NT:VUFS,Sf]Q^*f!PEM#gO8b.PNM;`QQBH<4E,0E4FE2VPK8GH_M#N52
+MZ/J3MY`81M?o&rM2@%ELPU``L]W?fM#N20L&Zf/K7\]+JGt&tJ,k0!JGaruJGOilJGt,sK)('!
+K`-K8JU2ZfGBS.PFED\JFEMY>FE!9=>l\./?2S%,?iOI4?iF@3?2\%.>6%q,?2e+.>Pqb(>Q7k=
+>[(E;>?Y04=BSd1>?kE;>?_#/"Bo#6>$:i.!*fG+s&gCF<E<1'='/R+<`N+!<E)jn:JFA6QC!r+
+R@'D3S"0/B".l'TT),)WU&1MWU%P/[U\U\cV>d@aVuEXoWV3@jWVrjhX8]3rXV\.=Um6FUGB\%I
+JWtY1GBJ>*U0+P#Y&XG]s)\'Zs)n<ar-/0cs*=Ngs*F`nrI+]p!.Xuus+(0%rdt6)L&QgGLPUeD
+MMmCON/`jYO-,TgPE_>tQC+&-R[]h<St;UKTqeEZVPg>kWiN5'Y-5(7Za7'J\%&u[]Y2%o^r!t,
+`Q#s>b0/#RcHjnce'uq!f@\g2gtgiEi8N\UjQ5Odkiq?slg4!+n*fc8nac8Bo`"O`p&Ojcq#C0i
+qY^6ir;HTdrdk*#s1\M`~>
+JcC<$K`CH=qYg<hq"t$drV?<brqHEcrq->MMi7Ljr/1Q6rf-i9:[IE5lKRQskND!ijlGI^io/hR
+hqm2EgY1B7f[n^)eC2jnd*L"^bfe/NaN)<>`5BI.^q[Ur]Xt_b\$i`PZa-j?YHG"/I!fO6Ch@$\
+?M[t->QJ&4r`]nNCM7?kAS#^cG_g`_E-$:'HLH.LHN/<lI.D^`Ie/!\If+WhIMR'GE,BH-CM.9i
+@:<PN?!CH5='o<C@/XO9A7B$I@fTL-<<cE&;c@UhL&?W(K)^B&It%BF"FPWEH@,X;$[?rAGBe7P
+F`VSCE;jbUDZ+DaChn38MK*lRB4YUaAnG[iD05Vu#^CQ<G^"@VGBa%2rce3`rce?brcJ0_rH.gW
+s)S3]F8g4[E<(%TEW9tZEH?1!F80eUF8g4[F8p4]EcZ=$ErU.UEY35-D/F')Bk_<tBPD0n@qB.e
+qbmGkq,75l"&i)r;u'>j;>jDm;>sGo;,[?irD3hu:f("d;Gg:f;,R<g!)WSj!`DikrD*o":Jah`
+;,9ta:eje^:f70es%Wns:/4MY8P)HD67MndqLnNq",;MaLAco(LAlu.M#W80M#N8&MYN&,MYrD+
+N:)]&Nr"h6NrG+7O:mP0JTGaGCMIU(H>dV9C2JKQ:&]eGEW1"YF8L(ZFoHR^GQ2pfH2N!gHN8Hl
+IK+`rJ,XuuJH1<$K)pXZre>BILl$tGMi3OQNK0'\OcklkPa.N"R$a;1S"-%@StMdNUSO]_Vl-Mo
+X/rG+YHY:<ZaI6N\@K2`]tV7s_SX71`lH0CbKS5VcdC.heCE.%f\5'7h;7&IiSrnYjlY^hl07L!
+m-O0/n*oi:o()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$^Ai]~>
+JcC<$K`CH=qYg<hq"t$drV?<brqHEcrq-7iqGd;k!EN5"<<#rnm-F!&l07EpkN:pgjQ#:[iS`YO
+hVHuAg=k64f@JL%e'cXjcd'eZbK@rJa2Z*:_ns7*^V7@n]=GJ][^NQLZE^X;Y-"d)<%04M/OW&&
+6io_D7/fRR2@MH"1,CaI4$Go":/Y'i;ts;l;u'>Z;uBMn;><u`;=@B_;u'De;\V>U3]T/Z2E!EL
+1bpa=0/+t./2AsZ1B0012#]931c,+or]C?G4[Mb48H)*k8Ou?@77BU56psC16UO1-6UL]9s$%Pi
+5<h=o4[(tj4$>Ye3]]5a5Vku+:JFSX9MSDZ:K70hqGdJnrDWkt;GpHm;ZBZ!;H$Ln<)`cos&8ko
+!)`Vir(m>fs%`Yj:\[cd:B45i;#sQlnPK3\s%WVk:f.*d(Jmt+;Gp:d:ejea;GU4j;c6Oj9MIo3
+55dVE4T%8I3]oMd3]fDa3]m7%rAt9G4$5Yi4Zttlr]C0Er'1-Ds#g?Gr&k'E5lNqK4[)+-4TI\F
+4WlsS5=%S"5X@V#6:!n&5sRY"5=%Lt5<_=q4ut\a3\qfS<!-&s;cEZp!)rYjs&/qt<W#nt=8Z1u
+=8H%c=oVV'=8l>!=8uD%=o2=e=o)>!=oMV$>Q7k0=BAHt;#X0!:/"MZ:/4MY<E)%U;GqN6ErU4X
+FT6L_G5QRaGlN'eHN/<lI/SKnIK4lsJH(0#K)UB'KSBD[E/07+M2I4LN/WaVO,oEdP*;,qQ'Rf)
+R@9V8SXuFGTqS6WUo(&fWN*##Xfek3Z*UdE[^WcW]"G_j^VI_'`5Ta:aND]Mc-FY_dF6Uqf%8R.
+g>(N@hr*JQj5f=ak32'olKdg'mdKW6nF?)?oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcEIaJ,~>
+JcC<$L&^N=qu-Eiq"t$drV?<brqHEcrUp#f!3H.$!j8`2rilI/rj2U2rom,?kN:pgjQ#:[iS`YO
+hVI#CgY1?5f@SR&eC2gmd*Bq]bKJ&LaMu3<_ns:+^V7Co]=PP_[^NTMZa$a=Y-"e+P)Y-_N.dms
+C1q6nrFQjZB4YdkBPD7!Ckm[uO`?c3R<a13MN3_fNVnh+O8b4AP*>g.q3ClDpQY`CoT]KBPEPp-
+rfR8Drf[;Ns-E\I$BC+'KnFr-IsZE`rc80iIXHbHIfY+NrdbK0JRW(s?sm>M@'[)CrilF+s/cL,
+WiN.tUSIga!29Cb-(gj&St;RCR[KS1Q'.ArOcYZcNfKg,XG33fF`)&9FEMhVKntQ`M>`8/M#`G4
+M>iD2MuSb9MuJS8Mi*AiL]W?fM>N,.LBE9bKnTGX"G))RIt.HJ!.k&us+10"qLSWrs*t#urdjot
+qLeg$"G;;XK7a)R'nV!^H[0dWF`qnNFEMbLD09i9?!U_7?2It+?iOI4?iOI4?2e+/>6%q+?2n1.
+>Q%h)>Q7n)>7=\<=]eg0>$G39>?b;0=oMV6>$5$4>?b97=]nj,<rQ2#=;4h;<E3!u<)ZUj9hII6
+R@0G2S"#r@SH>CRT)##VU&:SWU%P,[U\LVbV>d@hVZ<UkVuEXoWVELkWVidgX8]3qXV@qAWh5B(
+H$ORTF,%2QHZsX^T<#'mY5WJAF8U.ZFoQX_GQ2peH2W'hHiJKmIK+`rJ,XuuJH1<$K5lQuKnb>;
+Ll$tGMMmFPNK0'\OHPcjPa.N"Q^F20S"#t?StMdNU84T^Vl-MoWiW>*YHY:<ZaI6M\@K2`]Y;.r
+_8=+/`Q-'AbKJ/Ucd:(feC<($f\,!5gtgiFi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"Lbp@n=\
+q#C0iqY^6hr;QZerdk*#s1SG_~>
+JcC<$L&^N=qu-Eiq"t$drV?<brqHEcrUp2Kqhk?1!0$o:qi:Z:rom#<kN:pgjQ#:[iS`YOhVI#C
+gY1?5f@SR&eC2gmd*Bq]bKJ&LaMu3<_ns:+^V7Co]=PP_[^NTMZa$a=Y-"e+HtQl-BOZ./?Me"F
+>[(H:>[(E;>[:TGA7]R_GEmMjE,g,LHgQ+JHN&9kI.VjbIe/!\If4]kIM[*IEH,o8D/*]o@U`bQ
+?X-f<=BJs?@:T:G!+bt:"&r9"<W5r#;MKp[L&H])K)^E%Ig(7LI=6KjrHeHgrceWiFEDSEEH(nq
+'lIl*Ci+<>Jo?$MBOt^bB4u!uF*;a&GQ2pfGPudcG5umeGPHF^GQ2jdFT-F^FSBnXFT-@\ErU+Z
+EqaPREr0qRErL.ZErU1_EcH,@rGhmXr,MdYrc8$Y!-A*V$uB]oBkqEsC2%-g@q#=6s&&Phs&9)!
+;H$Nj;Z9Pk;?0Sn;ZBSo;Z9Pl:]OAl:^U&t;,L.d;,C%a;#4&h;#X8j;#a;u:f1%b:f'n^:Jape
+:]F2h:C'Zi8P2QE68X>kK_:$#L4tB\L\cc(L]</1L]*&.M=ZW"M>`>0MtW+tNVeb5O8=n9O7nYJ
+NJN"%DJX-'Bm#GRDeWs)JVf0]K`6#lF8U.ZFoQX_GQ2peH2W'hHiJKmIK+`rJ,XuuJH1<$K5lQu
+Knb>;Ll$tGMMmFPNK0'\OHPcjPa.N"Q^F20S"#t?StMdNU84T^Vl-MoWiW>*YHY:<ZaI6M\@K2`
+]Y;.r_8=+/`Q-'AbKJ/Ucd:(feC<($f\,!5gtgiFi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"Lb
+p@n=\q#C0iqY^6hr;QZerdk*#s1SG_~>
+JcC<$L&^N=qu-Eiq"t$drV?<brqHEcrUotcpf7;ms&K&"rom/@kN:pgjQ#:[iS`YOhVI#CgY1?5
+f@SR&eC2gmd*Bq]bKJ&LaMu3<_ns:+^V7Co]=PP_[^NTMZa$a=Y-"e+<%01N/hK+D6q'L37K,[T
+6iKLR6iTI[6UW[b1H7BX77L)P;ZBYs;H$Nk<;ohl;X[Q\;?0Sh;#4&X;?0Yk<;BJm49dl.3]T/X
+2Z>N<1,1I90.e\*r\=F.s"a[52#K004oRPJ4$>Yt8kDSQ7fu=R7n3GG"%#FF7/TCP62<bc5<qCp
+5!D+k4$5Pc1d4)l8P`&U9heDZ:/Fth;Ya8e<;ohr<;]\o;YsAp<)Z[mr_rbns&&_kr(m;e"&DZe
+:]=/j;>X/j:Jh!e!E)ea:]O;j:B")g:]=5j;ZBZ-;G^7e:f:+f;H6Xl;c-4]6q.)<!'L0@!':*A
+#!4k-4$#Gbr&js?s#L?H4[)"l5!Js.!BiXF5Q*eG4TI\D4U4/85<_7o5!Sp-s$$HG,!S=W5s[_#
+5sIV$5s[b%5X.Lu5sIOu5!M4p4#oA^1F?(#r)<So!)rYjs&/ntqc<_ur)ikuqH3)es&f8%r`K&!
+s&f8'qcNMo!*K#!qc`i!r`]/&rE9>*<DZCcrCmSn<)6=c9hSGb;uT\oErU4YFT-F_G5QRaGlE!e
+HN/?lI/\QoIK4lsJH(0#K)UCBKS>,7L51SAM2I1KN/WaVO,oBcP*;,qQ'Rc(R@9V7SXuFGTqS3V
+Uo(&fWN)u"Xfek3Z*UdE[^N]V]"G\i^VI\&_o9U8aN;WKc-FY^dF-Oof%8R-g=tE=hVd>Nj5]4_
+k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu-HlrUg)?s+13`s*t~>
+JcC<$L&^Q>qu-Eiq"t$drV?<brqHEcr:L'^r2Th!rN6+&!O&a,Z2M$-Zi[S>ZMrucjlGI^io/hR
+hqd,DgY1B7f@SU(eC2jnd*L"^bfe/NaN)<>`59C-^V@Ip]XkY`\$i]OZa-g>Y-"h,Wi:c?Ne_8?
+S!&YBAn>RdC1q0mBkV3qD>nAOCC+m>c^f9*Jr5SKrJ^f9rf-o9r/L]9m>q:/!g/Y0r07&C!LB#M
+QKaY:P`q8nrfR5D-]sRTS"#_0OcYW_M2-_8JU`&mG]\(LI=6TsIt3'$ItE6(JqINA@K'X;@?@e#
+Z2Lm;YH4h+WiN.sUSFZ^US4BUrh'@cSt;MPRMqQ[Q'.>qOcYZcR@pd>Sp#6uE-$&DI"R63M>i>/
+M>i>-M>`;3Mu/G;Mi*CNMi*AgL]E;.M#W51LAll6KS>&0JUi6"J:N4KJ-:FRJUi:IJc1*!J,Xut
+JbaooK*?s^JqAW,rdk!!&VGLYH['dZF`V_IF`hS;F)d6=?2It+?iF@=?X@&E?!LT=>?bA1?2n1.
+>Q%h(>7t+D>[(E;>$5!1=BSg3>?kE;>5_V'>9mBT>$>-7>$>'3=BAO)<``C*=&r=$;cZjs:f:%^
+6(++/S"#rASc,/UTDYD\T_G/QUAq"`U]@7jVYm=lVY[4iW;`dkWr8poWq<@kXSAn5Y-5%2WLAiq
+G]n1LGDNqZH$"=bS[PTuY5`PBF8U.[FoHR_GQ)jeH2W'hHiJKmIK+`rJ,OluJV*lR#)%\aL5(J>
+reYZQMi<USNfT6_OckomQ'IZ%R$jD4S"6.BT:qsQUnjibVl6VqXKAV.Yd(L?['mEQ\[oDc]t_=u
+_Sa=2`lQ6DbKS8Wd*^:jeCE1&f\5'7h;7&IiSrnYjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\
+s7u]kr;6KkrVcBfJcC<$^&NT~>
+JcC<$L&^Q>qu-Eiq"t$drV?<brqHEcr:L'^qhk?1s,?r:!KN0=Nr4t<NW>(<k"Fgsj5].Xi8EMK
+h;$c=g=b*0f%&:!da?FfcHXSVb/q`F`l5m5_SO"%]tD"h\[],W[C!9GYct:4XfJJ$@rQ-m<-N@u
+B3ebJ?!I;5"^P>;>[:Y4>RGJ<HYRM?G^Fd`HLQ4IHN/?kI._pcIe/!\If+WlIfFKhEW9nhD/*]p
+@q&hR?X6r?=]f'?@:NaF@h)sX@q9([<)lpt<Duh9LAlo*KEd$ZJ:W6#If4ZpHi89jH2i*pH$=FR
+FE;JBE;jbhDJa62G_0m`BP:sgAnYptF*2\Nrc\*]"*f$5GQ)jcG63#5GPuadH2MpdGQ2geF`dV*
+s)e3^!-\9_s)\KeFE;MDEcH-pE<(%XErpB'F80eUF8g4[F8g1[F8'\[F)l;BF)l8@rcAinDJj9-
+CMIR!C1q?l@qB.d;Gp@hqbd\u;GpIn;c6LlqGR;ir)3Pls&/kos&/korD<Mks%iep;Gg<i;#a;k
+;#4&h;#X8j;#X5s;,C%a:esh^:f70es%`Si#Yn)g9M%fH6TP$sp4`I"rJ16(rJ(H1LPPhare^6(
+q2,$,rJU?-mZ%+(rK$`6rf?c7'TnK:K6hKRChd["G`ZcZC2.a>Mhq@cs)S-\r,hs]rc\6arcnHg
+rHeKjs*Xfos*artrI=p"K)UB,KS>,7L51TaM/nK3N/WaVO,oBbP*;,qQ'Rc(R@9V7SXuFFTqS3V
+UnsueW2cl!Xf\e2Z*L^C[^N]V]">Vg^V@V%_o0O6aN2NIbg+M\dF-Lne^rF*g=k?<hV[8MioB+]
+k2tmll0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+13`s*t~>
+JcC<$L&^Q>qu-Eiq"t$drV?<brqHEcr:L'^qc*>jrDWet<r,nsk!nInj5].Xi8EMKh;$c=g=b*0
+f%&:!da?FfcHXSVb/q`F`l5m5_SO"%]tD"h\[],W[C!9GYct:4XfJJ$-o3G+0fV$H0`FHD6UX=0
+6q%#A%73EL5X7P"3'9Q!:Jk$h;uT\p;uTbn;uBP[;u9Jl;>sAl;>sDf;=@B_;u9Mp<E/io$p6[7
+3]]8\2E!BK1G\q`"YMAX/M]'[1'06g2#]9=1,CdN4Zkki4$>u(r^m)Z!_GpPrC$iW5t".1rBgTP
+62j+L5Q*hW5<q@o4[)"k4$,8`5"8-C:]F/h:B48j;uT\j;u0Jl;uTbq;uT\m;[63!<)Z[m;cEQk
+"Aqum:f.'cs%`Si"AV`g:f.-gr)!5emna*^:/4U_:]jKi;,R9iqbn,(;,L.e;,U7k<Dujh92%`2
+4[&^)$9C724?GSc4$#Gbr&js?s#L-BrB:0ErB('DrBL6Es#g?Gr&t'D#!b@94[)(or&t$C#!G19
+5=%S"r]h8a6:!n&5sRY"5=%Ou5X%=r5!M+i3AiAc;uT_r;u'>k;ZTitqc<_ur)iku!E`M&=R9/j
+=T)>#=Sl/"=T)D"=S>kt=SGts>528">5MP$=qb%?;c-@d9MJ2S:Jsta:/+A[;cN`os)S-\r,hs]
+rc\6arcnHgrHeKjs*Xfos*artrI=p"K)UB,KS>,7L51TaM/nK3N/WaVO,oBbP*;,qQ'Rc(R@9V7
+SXuFFTqS3VUnsueW2cl!Xf\e2Z*L^C[^N]V]">Vg^V@V%_o0O6aN2NIbg+M\dF-Lne^rF*g=k?<
+hV[8MioB+]k2tmll0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+13`s*t~>
+JcC<$LB$Z?qu-Eiq"t$drV?<brqHEcr:U*^!;$/ir2p"%"L#&7Z*O>7rj5k8ZEga?Yck4ij5T%U
+i8<DIh:pZ;g"=p-e^W'rdF$:ccHOJTaiMNB`Pf[2_8*h"]Y(hd\[T#T['R'CYck12XK&;!Vi?CE
+U7@I,L5_"$Anl!jBkh<qC2Nrds(_n'NlIf;H\%*8rJgf8s,Hu9q2GB7mZ7C0s,d;Eqipl@rg)f6
+s-!GGrfR/B.@ZioQ&q/hNJW@AIt<&rG^"7PEd`@eJqAQ*Jq8Q,JqJ\b@pi_P@:6G@ZN%-1YHY2/
+X9Yc+Wi)VeUnms_,bUj(T:VXES!f_3QBdYtOcb`gNjsk1GB7kFFEDhZKSbPALl)%crJCQ1r.tH3
+M>`;3MuAV7N<"q:M[,3!Mi*=HM2;.fpkT31Knb;9KnFu.rdX`o!.k*!q18Qr!.Xuurdjls!eZ/Z
+rIY0)KnTGXs+16%r.4s%K`6T8IX?BcG^"4NGB.kMDJaE3?N+7/?3":/?i+10>m=P<>[1K;>l@t.
+>l@n*>l.b*=p/)7>?kD3=UA25>$>-8>[(B8r`T5)#?k86>$G37>5hY?=B/C&=BAU+=&i7"<`N'p
+;GKnSR[]f>Sc,/VT)bP^U&:SXU%P/[U\U_cV>d@jVuNXjVuEXoWVELmWVWXpWrT0oX8]3rXVn:D
+Y-5(8X/;;=I!0^SEIX%1H['XWN17)NriZ6Ar,hs]s*"<as*4QhrHeKjs*Xfos*jutrdYB-JqAW-
+KS>,7L51TaM.hd)N/WaVO,oBbP*2&pQ'Rc(R$sM6S=Z=ETV8*TUnsrdW2ZetXf\b1Yd1UB[C3QT
+\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:keCN7(g"P39h;7)JiT&tZjlYail07L"m-X60n*olHncA@S
+rq-?dp\4[^s7uZjr;6KkrVcBfJcC<$^&NT~>
+JcC<$LB$Z?qu-Eiq"t$drV?<brqHEcr:U*^!;$/Hr/1Q6rJgc9r/Ui<rJaL0Mi6WUio/hRhqm2F
+gY1B7f[n^)eC2jndEg+`bfe2OaN)<>`5BI.^q[Ur]XkYa\$i]OZa-j?YH=q.WiE"qB4=ncF)G`&
+BkULMr`fG/r`oJ/r*0MDE05Q_Df^,LrHe$[s*+NhmX"hY!.=Eer-n9doR?aerI4cg'6.u/Df'9&
+An#1V?sd/B=]ng7@JaR6AH--IA5lQ/<)cdpL5(D9rIk3'"G))SJ:IQIs*Xfms*F]js*+TjG'3e+
+s)A$XrbqgS'5r_HHtR,(B4bjmE-$2FF`qtPFoHR]GQ2mhGBS30GRAY<GB\:UGBe@XH2;dbG5ug`
+FT?O_FoQX_FoQOeF`_\GEcV+u!-7sV!-8'[rc8$[qJuUWrc8!Zs)J0^FE@;!rc83_F)uABrcA*]
+rc8WjDf'<-Chd^#Bk_<l@q9%Hr_`Vl##S;t;H$Onp/:lerDNYms&/kos&/korD<Mks%rVjs%ihq
+:JXe`qbdAir_NPj%8Ter;,L+b:f'n_:Jame:]=)q:JOYY9hIuJ6p:O&onE@!reL<(rJ(H1LPPkb
+rJC0(q2,$,r/:6,mu@1(s,Zl6rf?f8rfInXO,JX7Df0?*BlSB>DJX!%G^kX*re18lr,hs]s*"<a
+s*4QhrHeKjs*Xfos*jutrdYB-JqAW-KS>,7L51TaM.hd)N/WaVO,oBbP*2&pQ'Rc(R$sM6S=Z=E
+TV8*TUnsrdW2ZetXf\b1Yd1UB[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:keCN7(g"P39h;7)J
+iT&tZjlYail07L"m-X60n*olHncA@Srq-?dp\4[^s7uZjr;6KkrVcBfJcC<$^&NT~>
+JcC<$LB$Z?qu-Eiq"t$drV?<brqHEcr:U*^!;$.grD`hsrDieq!``9%qc<burE'$Z8E/Udi8<DI
+h:pZ;g"=p-e^W'rdF$:ccHOJTaiMNB`Pf[2_8*h"]Y(hd\[T#T['R'CYck12XK&;!V_'DR3AiWJ
+0JYCB6U^o@&k#)S6:4()5X.Lg4[MY7;,C.hqbdDmr`&kqpepHWqbmAi!`2`kr_WGgmns-aqc!Sr
+<;]Z44?Ybe3]T/X2Dm9G1,(@8/M/M)1,:X@1Gf"es"XX11H#.p#Wt114A&4;8P&hNs%!,ZrC%#\
+6:=416UX=/6N'.S5<qIu5X.Fqr]CZR4>&c]7S-BO9hnGZ:Jq!fr)3Djq,I>l"&r9"<;ohq;Z'Gr
+;H$Ll;Z9Vl;Z9Mn;#=&g:'scl:/=Y^;,U:h;>j>i;?'Jm;=IE]:\mof;>jDm;uTYq;cN`p&5l>#
+;,L7j;H-Ol<(]_S6p:H0$9C714?GSb4$#Daq`Oj>!]iD*rB1-ErB('DrBL3DqE=jB"$f%64oRYD
+4TIVD4p=)55sR\$r]gTP5=.Y%r]gTN5X7V#r]UTN5Wq=n3]T#Lr_req!)r\ks&/qt<W#nt=8Q+t
+<rlE+r)i>hs&f8%rE/qu!*K5'qH3Jps&f"us'#,!r`]8)q-"J:>Zt3,:Jae\:/+D[9M\>V:/=bd
+rDNW9r,hs]s*"<as*4QhrHeKjs*Xfos*jutrdYB-JqAW-KS>,7L51TaM.hd)N/WaVO,oBbP*2&p
+Q'Rc(R$sM6S=Z=ETV8*TUnsrdW2ZetXf\b1Yd1UB[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:k
+eCN7(g"P39h;7)JiT&tZjlYail07L"m-X60n*olHncA@Srq-?dp\4[^s7uZjr;6KkrVcBfJcC<$
+^&NT~>
+JcC<$L]?c@qYg?iq"t$drV?<brqHEcr:U']s7?8k!3H+#s/lL.Yd(I=rNlO2>-kN>Z*:L:Y-+n.
+Wi4k5hVI#CgY1?5f@SR&eC2gmd*Bq]bKJ&LaN)9=_ns:+^V7Co]=PP_[^NQLZE^X;Y-"e*Wi;no
+V50fSQ&LHTMMnO9VIsRWBk_=!rbVUM#\nplUj%-9M2qOop5Jj-s,QQ/!0I2B!KrZEPkLCBQKj_;
+P`q8nrfItZ>aq1IP`_)hN/37BJUr5rH$=@RFFF.>!J#e$JIdEcKS*`D@pi_P@>(tnZEaA4!NiI&
+X!t-MVk^#_UnXTWU7\-PT:VXDR[]_3QBIJsOcl*&Q()r>EcH/DH@pp-rJ:N1re^T0r.tE0qMG0.
+!fN"rrJg]5#E+IqM2@%FM>;r/M26rdL'39dK7eaQJ,t4QrdY!"rIF`q!.t)us+16%rdk-&r.=m#
+rdt6*K`$H&Jbt'!K`?](KG&ufH@'m]H$4:SF*)25Df]i&?2\+0>m"G??XNY9!+#P.s'#J.rE]G.
+rEK2)r*02)%:!+A>[(B6=]eg0>$G82>6%k+=UJ>:>?Y06>$>-6>5hY==B/C&=BAU,=&i7"<E3!r
+;G^+[S+`EOT)"uYT`(S]T_G/QUAq"aV#R:jVZ*LmVYd:iW;`dkWrB!lWqWRnX9,N*XST%:Y-5(8
+ZEpU.Q@aC.F`DJZ[=ERHG'TFFX/l6&!-A'[s)n<arHJ9ds*=Qhs*OcnrI"`rIt.HJI=[!%K7ei1
+Knb>;LkpnEMMmFPNK0'\OHG]hPEhE!Q^F/.S"#q=StD[LU8+N\VPgAlWiN5'Y->.8Za7'J\%&u[
+]Y(tn^qmn*`Pom=ai_fNcHaeadaQ^rf@S[/g>(N@hr*JQj5]7`k3)!nlKdg'mI'H3nF?)?oCMVR
+o`Fj]p\ssfq>^<hqu6NlrUg)?s+13_s*t~>
+JcC<$L]?c@qYg?iq"t$drV?<brqHEcr:U']s7?5Ir/:N5"-/A$Nr+n8NW+i.MM[1Gi8<DIh;$c=
+g"=p.e^W*tdF$=dcHXPUb/hZE`Poa3_SEq#]tCtg\[])V['R'CYck43XK&;"Vl-AeGB7Y8@qTFg
+JU`(H>QJ,7ra#J-#[;%oIVN_>GC0:7nTk.Zs*=$YrHeNloR6Xdp3lO]rI+]p,#36%E,]]5ChdTq
+A7AqS?<pc;=BT'B@q&qXA7K+\@q9(Kr`/tt(K5%&L4t>7KS>)3K7\W)J:E&sIXHNiHiA?kH2`'g
+FoHIqEc>r9DfBW?DgQ/2An>OhD/j[sG5cXaG6W55F`qqPG5ZUcG^'.1#^:N;GBS.RG^'.3rd"Bc
+rceBcrcJ3ar,r$_r,r$]!HiM`F8g.\EcH-tE<(%XF8g1[F8g4[F8p:[F8p:ZF8p7\FT$:ZEqOMR
+FT6F^FT6CoEGo`3D/<p#C1h9j@q0%Y;,R9is%req;Z9Vg;ZBVl;ZBVn;?B]n;Z9Pl:]aKj;#F2j
+:^9io:JXea;,I6hs%r_k&5H"t:Jah`;,9ta:eje^:f.*ds%Wns:/4JX8P)HD6%nrcrJ(9+q1em(
+s+p]1reUN0oSWI$rJLN2oo/<um>h1,!g&J(qN1]=rfRqUM1BS`Chmd"FcgZ^C27U6J;ApYKE-)k
+FT6L_G5ZXbGlN'fHN/?lI/SHpIXckHJ:3!#JqJ]/KS>/8LPUbCM2I4MN/`jYO-#KeP*;/rQC!u+
+R@B\9SXuIHTq\<XV5C/hWN*##Xfen4Z*UdE[^WcW]"G\i^VI\&_o9U8aN;TJbg+M\dF-Lne^rF*
+g=k?<hV[8MioB(\k2tjkl0@U$m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$]`3K~>
+JcC<$L]?c@qYg?iq"t$drV?<brqHEcr:U']s7?4hrD`hsrDieqs&T"us&T,#r)R%[hqm2FgtUQ9
+f[na*eC;spdEp1ac-+;QaN2E@`P]R0^q[Us]Xtbc\@/iQZa-j?YHG"/WiE%rVkp1L2)@'B1GUdR
+6:!t*6ps@.6UF((5<qIq4\8FH;,C3e;?0Yp<<#nk;XIEZ;Ya2i;#4&X;?0Yn<<#r%<)Z^O4?`[)
+s#L*;$8jXq1+t:7/hJV+rA"@/rA5$?1GUaK5!;%k4$,`#8kDSQ8,c$c7RT^7779L26UguB!(6QI
+s$%,]5!;"j4[(M_1.b89:/+JX:/:dd!E2np;uBPj;uBSq;cN]o!E<(u;ufkq;Z'Jn;?9]or)<Jj
+s&&\i!)WVis%Wep:f1(f;Gg<j;#F2j:]OAk:]aKj;>3od:\mof;>jDm;uKVl;uKVo:CL&u;c-@k
+;Gp+Z8OZ&F3rh>@48_,>48q>D4Zkk+3s%H)4T.DD5!Am-!'^<Fr&t-E55[PK5!M4p4ZttnrB1`T
+4[)%m4[;7s6:!h$5sIY%62j.L56=)762`tQ5s7Fm3]K2W;uT_r;u0Dl;ZTitqc<_ur)ikus&]8(
+r)i>hs&f8%rE/qu!*K5'qH3Mqs&eMgr`T;+oih?!'3J:7:/=SX9MJ8d:/FYZ9MSJe;>sGnF8U.[
+FoHR_GQ2pfH2W'hHiJKlI0+kIJ,XtHJV&K+K7no3L5(J>Ll$tGMi<USNfT6_OcklkQ'IZ%R$a;2
+S"-%@T:hmPUSO``Vl6SpX/rG+YctC=ZaI6N\@K2`]Y;.r_8=+/`Q-'Ab0/#ScHstee'uq"f@\g2
+gtgiEi8N\Uj5oFckNV6rlg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcEC_J,~>
+JcC<$M#ZlAqu-Eiq"t$drV?<brqHEcr:U*^rq$0\!3?%"riQ^6Yd(L>Za-pD['[-DZ2V!-Y5bS.
+X/W"nUnjd@gY1B7f@SU(eC2jnd*L"^bfe/NaN)<>`59C-^V@Ip]=PP_\$i]NZa-g>Y-"e+Wi;qp
+VPL#^ToXkaN/Od<W2QPhBkV6uCi+$)CMK'6RWj%-LAm54NV/8,N<#"-O8k=AOoLREPPg[$Q2d$J
+P5^Rm?(7:KQ'%5kN/31AJ:N&qG^+CRIsup#JUi?'JV/T+K7dWC@UNYP@&j44r364&$*1),X/`(m
+USO[`U)or#Tq7jHS!oh6Q]mSrPGaDTNcfPhEcZGQKS>2:M"li+M"HQ%MZ8Y4NVn_9Mi.@fr.kK4
+Ll$tDre:Q2L4k21r.+furdY!"rdaot"G22UJq<lNrIY!#rIP$%re1<(s+CB+qh+ct&VGaiK7ei1
+Knb>9Kmn>pG'S?3FU!#1CMn*1?2\+0>m+M@?=.(:?3":0>lS%.>l@q.>l7h)>l7h+>5VS/>$+p0
+=]nr+>6%k*=oV_(>5qe8=^"s2=B/C&='&L+<rQ))<)lmt;,9nX1&.=<T)"u]TV8'RU&1MWU%P,[
+U\LYbV>d@lVu<LiVuEXpWV3@lWV3@dX8B!pXW+FHZ*L[AZ`^@#P(It&FEMh`V0[H2H$Z'ZX/u<'
+!-A*\s)n<arHJ9ds*=Qhs*OcnrdFfq!.Xuus+(0%rdt6)L&QgILPUeDMMmFPNK0'\OHG]hPE_>u
+Q^F/.R[]h<StD[LTqeEZVPg>kWiN5'Y-5(7ZEppH[^`lZ]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uq
+f%8R-g=tH>hVd>Nj5]4^k3(sml0@U$mI'H3nF?&>o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+13_
+s*t~>
+JcC<$M#ZlAqu-Eiq"t$drV?<brqHEcr:U*^rq$0\!/g]4!0$i8rf6o;!07#;;N-NlMM[1GLPCM:
+K\Y>9g=b*0f%&:!da?FfcHXSVb/q`F`l5m5_SO"%]tCtg\[],W[Bm3FYct:4XK/A#W2HMgUnXPt
+@qTLhJq/8tH[8q$rE]D-#?u4uH"h)8FoHaeHLZ:[GQ<$VHN&9kI._pcIeJ3\If4[&9ltJtEGfZ2
+C1h-hra5k9>[1E6raH%@@UiqZ@Js[EA5lQ.<E)prJVJo5L&HZ3K7\]+J:N,uI=?SBHiJElH2i*n
+GBS+OFE;I$E!:K,MKNTGrau=MDfTt!FoHRaFoQUbGQ)^kG'A.RG'A.TG^'.1"a>38G'8*.Gl2jb
+Gl2dcFo?L^FoQX\FoHF^ErBtXEr9nWErC(XErU4\ErL+]EcZ=$Er0nXFSg+ZEr:"WFT$:\FSg.Y
+FT67gDJa3*C1qBuBk1^b@o<2&s%rhr;H!KmpJV#gqbdDkr_ibn!)ienrD3Jkr_WPjs%ikr:esk`
+;>sDl;?'Jm:Cp8s:f'q`:f1%b:f'n^:Jamd:]F/s:JOYZ:/"5M7mej&L&Hc)L\cc(L]<21L]3,/
+M=ZW$M>W80MtDtsNU2]&O8G%;OoCLYPECl\IW97AC27X.Kl:gCCMeWTLP,SZ!-A*\s)n<arHJ9d
+s*=Qhs*OcnrdFfq!.Xuus+(0%rdt6)L&QgILPUeDMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[L
+TqeEZVPg>kWiN5'Y-5(7ZEppH[^`lZ]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tH>hVd>N
+j5]4^k3(sml0@U$mI'H3nF?&>o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+13_s*t~>
+JcC<$M#ZlAqu-Eiq"t$drV?<brqHEcr:U*^rq$0\!*&nss&AttrDWet<r5tt<rZ7u<rH#ggtUQ:
+g"4j,e^W'rdEp4bc-4ARaiMNB`PfX1_8!au]Xtbc\@8oSZa6sAYcb+0X/`.tVl$8cU7j@s1,CaQ
+69mat5"%_(r^6WL"#rM8:]=5j;u';k;uT_r;tj2V;u9J];=IH`;uBVp<=)W'1H[f^3]]8\r\b6D
+1,:L80.ne,0etL?1,Jkc%l,jp1H[i`4Zkee7S69E8H)*]8Ou?@rC$uZ6psC16UX=0pHTT\4[)"k
+2EX5q9i4\_:/4bc;Gg:h;H$Ll;Z9Vn;Z9Su;H$Ln<)`cq!E2tr;u]ks;ufkr;Z'Jk;ZBYq<;ohr
+;?Tor;,L0g:]=2i:]F/k:Jape;Ya2h:]OAl;#O8j;#aDk;#=&f;#sKjoMPZfqbmDl%T-"u:f1+h
+;H6Xl8kMZCrAt!?r]C$=s#^3B!BiRE49%AA4T7MD55mYF4[/g/qEFg?rBC6Es$$HG"$A_04T7Mh
+4[21r5s[_#5sIV$5sR\$5X.Lu5sIOu5!V:q5WLha1E]XqqGR>l!E<(r<WH4u=Su7s=R9/j=T)>#
+=Sc)!=T2J#=SQ%u=Qrua>5qb&>5qh,>5qb*<!?#m9MJ2UrD*Vm9h\Ma<)NWm!-A*\s)n<arHJ9d
+s*=Qhs*OcnrdFfq!.Xuus+(0%rdt6)L&QgILPUeDMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[L
+TqeEZVPg>kWiN5'Y-5(7ZEppH[^`lZ]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tH>hVd>N
+j5]4^k3(sml0@U$mI'H3nF?&>o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+13_s*t~>
+JcC<$M#ZoBqYg?iq"t$drV?<brqHEcr:U*^rq$*ZqlTn$!O&a+ZMq0C['Hs@Z*1@6Xf\\*WMcSg
+Una[`Ti%JTT@VQBeC)alcd'h[bKJ#KaMu3;_ns7*^V7@n]",A\[^EKKZEUR:Xf\Y(WMl_lV50l[
+TqIC(N,#JpV5C#[S!K4RD/=$(C;?O$FErClrJpl:pP]03N/[UmrJpK1s,d5B!KrZEPhhW)PQ-dp
+>]?7%QBmSpNK&dLKS"`(H[:!\Fa\aiJq8E(JqAW-JqSbc@q&hT?XWi=!3uO-%'Qb6XfAG%WMcMd
+Undm_&tbkjSt;IAR[]Y1P*2#pZ\aukrcJ<gI"d:QLB*/(M>rD(M>`;;Mi<USNK0$YNVeY8Mi.Cg
+r.t<.!JcF/L]<&/K7a)R!.b$!!J#b"JGausK)^E%J,k0"K)gN%KDpH&KDgK'K*-d\KS9;VrIY$$
+s+LE)"GDJ_L5,\]re(c4H[Bs^GBJ(PG\h89FDq+a!+#S1s'PY0!+#P.s',J-ra#P/rEK5*qcj)(
+"^G89>Zt;0=92Q.r*'/)rE02+>[./1s',G)!E`G&<Y&86=B8I&<Dupt<DZOg8O!!ArgrnW"JDH^
+U7qLXpS%8Ss.f@b!2]Xk!2oalqksIms/G[k!3,XkpT+1mr2ot$*3ZWQZEpmE[B6?uNdZ+qFE;bc
+UO79-H$uBgX/Q$#rH/'^s*"<as*4QhrH\NlI!kpAs*jutrdY$#K)UB'KSBD["c%njM2I5jN+J!0
+O-#KeP*;,qQ'Rf)R@9V8SXuFGTqS6WUo(&fWN)u"Xf\e2Z*L^C[C3QT\\#Mf^;%J#_SjF5a2lBG
+bK\>Yd*^:jeCE1&g"P08h;7&IiSrnXjlY^gkiqBum-O--n*fc9rpg*]o`"Lbp@n=\q#C0iqYU0h
+r;HTdrdk*#s1JA^~>
+JcC<$M#ZoBqYg?iq"t$drV?<brqHEcr:U*^rq$*Zr/1Q6rJgf:r/Ui<rJ_/CMi3IMM26qAKn]GX
+7Y?;Ef%&:"da?IgcHaYWbK7iH`l5m6_SO%&^:_+i\[f2X[C!9GYct=5XfJJ$W2HMhUnaWWTP8(R
+<e>jMH['^UE,Jrer`f_5P'V+^D/j]Erd4WjpiujcqK`'brH[gW!IK4dIJ\KgII_jeI47lnF`VSD
+D/O0)BP(a_?sm;I>Zb*:@U`hV@Us"X@q9(ZA5uW/<E)prreLN-rIb]5K7ST(It2usI=-BgI!^5>
+H2i*hG5cUjFE2>>DKCMPI;/[o")VpsFT-I^FT?UaFoHR_FT?XbG5c[cGl;gbG62r3GPudbH2Djd
+G6<)6GBNe+!-S6`qK2d[rc8'[rc.sYrGhjXrH%sYp2g1QrH%s[pN-4Rs)\3^qK)XXrc8QiE,KN1
+CM@QuC1CaaARk[:"]82r;H$Nf;ZBVk;ZBVo;ZBSo;Z9Pl;#aDm;#O8i;#a;l:f73gs&&emrD3Gi
+r_Eht:esk`:JO\^;#O2i:'scl:/+GV8kDN>2u87-LAco'LAlu-L]E5/M#N8&MYi8-MZ&J*N:;i$
+NrP+5Nr+n8OSk7?P5^XYOGnm?E,KK+C2\?MDJX$'Dh*Y"rIk,ks)n?br-/0cs*=Qh!df<BrdFfq
+s*t#u!J,k%K)pXZre:T3Ll$tGMuJZHNK9-^OcklkPa.N"R$a;1S"-%@StMdNUSO]_Vl-MoWiW>)
+YHY:;Za@-K\%0&]]Y2%o^r!t,`Q#s>aihlPcHjkbdaQ^rf@S^0g>(N@hr*JQj5]7`k3(smlKdg'
+mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<gqu6NlrUg)?s+13_s*t~>
+JcC<$M#ZoBqYg?iq"t$drV?<brqHEcr:U*^rq$*Zr`/qss&K"s"BAK(='#<%"BJN'=',6!pJk#?
+e^W*sdF$:ccHOJTaiMQC`Pf[2_8*h"]Y(hd\[T#T['R'BYck12X/`.tVl$;dUS4BS1,C^F6U3dt
+4utbc3C?/"5X7Y-5"A7B;,^Bl;u';k;uK\h;XRKZ;Z'Al;YEuV;?0Yo<<#tu2$Q0+4$#A_2uY]G
+2)@!B/hen//28n71GgmFr\P-@0etRJ5!2"l3]fl)8kDSQ7fu=R7n3GG#X_!I6ps@0777&>!($HH%
+6Qd+5!DJ5:ejk^;,U9i;ZBVo;?0Yp;?0Ym;Z9Sp;Z9Ss<)Zaqr)<Vps&K%t!)rkpr)<Vn"]J;t;
+cH`n;Z]io;>a2s:f1"b:ejb]:f1*e;Z'Df;#aAr;Gg7e;,R6fr(d;hrDDoZs&/nqqbRc#<)QRm;
+cZL^8OGj,4$*@&r&Xj>r]CBJ4?P\e3]d7&s#pBGrB('DrBL*ArB:0E'gFlG4[)%m4Zkkj4?btn4
+[24s5s[a75SlXO5sR\$5X.Lu5sILt5!D4q5<:hc1Fr<"s&/nsqc<_uqcNbt!E`M&=RB8k=T)>#=
+Sc)!=T2J#=SZ,!=S,br=SGtr>5VOs>5q_==BA<q:/+MY9i+bb:/+JV<)Z^kr_i]:s)n?br-/0cs
+*=Qh!df<BrdFfqs*t#u!J,k%K)pXZre:T3Ll$tGMuJZHNK9-^OcklkPa.N"R$a;1S"-%@StMdNU
+SO]_Vl-MoWiW>)YHY:;Za@-K\%0&]]Y2%o^r!t,`Q#s>aihlPcHjkbdaQ^rf@S^0g>(N@hr*JQj
+5]7`k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<gqu6NlrUg)?s+13_s*t~>
+JcC<$M>uuBqu-Eiq"t$drqZEcrqHEcr:U*^rq$*Z!:fof!j8`2rNcC.s0;U.s/lU/XK8J&W2?Bi
+UBRBcTqJ$Mrgs.[s-cI)cd'eZbK@oIa2Q$8_SX+'^:h1k\[f5Y[^<BHZ*:F6XfSP&W2HMhUnaZX
+TUqaGBWS51VPB]PQB@5eMMZ+`CmMMmH@U_HNrG%;N;e_8N;eb8N;/D3NqAD3OT1ICOoU^DPhqZV
+P`q;8SXZ"3QB78jNeiFBJ:E#qH$FOVIsus!JV&N*KnY,1KnEiE@UNYPHi:;MYmR_<XK/G'X/`.q
+V#I,/U8+KWTV8$MSt2==R?j/%Vj`mCG]n1MGCY@%M>i;/M"ZZ*M"?K%MZ8V8NW"n:NVn_:Mi*Dj
+M>`80M#rKiM#E)3L4t>6K(jiqJGt*#Jq<oQ!eZ)Vrdb*%K`6W(K`?](K)LB&KDL9$KDpH*K7nl0
+K`6W(L&H`,KnfS\&;GmmH@(!^G]n.NG\_)3F)h1c"^G>>?=.(;?N4=/>lS%->lS+0>l@n*>l.b*
+=pnS>>?kB9=BSa/>$Cl/s'#D)rEBD.>?Y68r)j\8<E<.%=BJU*<E3"!<Du^l:/"%RSc,/TT*1g\
+U7n:YT_G/QUAq"aV#R:jVZ3RlVYd7mW2ZcgWW9$kWqi^kXT#@"XragPZEggD['d<MXJVJEH['[T
+FdK.`I!0^ZLS2/WX8]:$FT6L`G5ZXbGlN'fHN/<lI/SHpIXckHJ.$p[JqJ]/KnY89LPYqdAVuD)
+N/`jYO-#KePE_>tQC!u,R[]e;St;RJTq\?YV5L5iWiE,%Xfen4ZEppG[^WcW]"G\i^VI\&_o9U8
+aN;TJbg"GZdF$Fme^i@)g"P3:h;7)JiT&tZjlYail07L!m-O0>mgJXTo()DEo_%nNp@nO\s7u]k
+r;6KkrVcBfJcC<$]DmB~>
+JcC<$M>uuBqu-Eiq"t$drqZEcrqHEcr:U*^rq$*Z!:g#Grf$i9rJpl<!07#;$B0n$MMd7ILPCP;
+r.G'&qgqOnJ:Q"mcHXSVb/hZE`Poa3_SEq#]tCtf\[])V['R'CYck12XK&;!Vl$;dUS=HTSt;KQ
+JU`&nH$4:LD/<s"AmAPHFbtH]E--AOHN&6kHL?(WGlE!WHN/<lI.Vj`IenK_ILJnnFE2A@D/O3*
+B4bWP?j0kB>?G!9raPk;#%D(Q@q0%ZrDiks!+c(are:B*!J?"'JHULQIsleFHl[Q]H[C'aH?a[X
+F`heIEc?8IEIV\9BP2'uF*)\OrcS<dG5cUaG5cX`G5cUfG'A+QFa!b.rHA3b!d8d3r-8-br-86c
+!I/hbFoZaaG5?@]F9HZ,F)c4!ErL(YErC(XEqaYRErC(WFS^(SFT6C^FSg.WFT-=_FE;O&D[L>t
+CM7Ht@UrqZ@fB7/:f:4i;H*Kk!)`Vks&&\ls&&eos%rbor_`Ykr_`\lr)*Jj!`;`hr)!Ais%r_k
+$r0Vq:Jaha:esk`:eq!c!)WYjs%Wns:/4MX9M%fH6Tk=$rJ(9+qM+s(reLQ0reUN0oSWO&qhk?1
+o8N4!pQ#64q2Y93rfI#>rf[/B'9J*)H#RS8C1r*RF)G`-CN=ubL])o*FT6L`G5ZXbGlN'fHN/<l
+I/SHpIXckHJ.$p[JqJ]/KnY89LPYqdAVuD)N/`jYO-#KePE_>tQC!u,R[]e;St;RJTq\?YV5L5i
+WiE,%Xfen4ZEppG[^WcW]"G\i^VI\&_o9U8aN;TJbg"GZdF$Fme^i@)g"P3:h;7)JiT&tZjlYai
+l07L!m-O0>mgJXTo()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$]DmB~>
+JcC<$M>uuBqu-Eiq"t$drqZEcrqHEcr:U*^rq$*Z!:g%gr_rktr)E\r!`rE'r`B,"r`AttoMtih
+8'oT-c-4ARaN2E@`P]R0^q[Us]Xt_b\@/iQZa-j?YH=q.WiE"qVPU)`U7n6OSt.c+5s@Cn4ZYV`
+2`EQN5X@Y!5u(6T<;oep;u0Dl;[$-!;c6Llpeq&h!*&Pgq,7,fs&/Vhmnss#<)cdq<AQg$4ZYVa
+3B&iS2)I*E0J>-Z/H[^_0f/ec))F-,1,1R@4?Yej4utr"8kMZG84Q0@84H)J7K,[\6UX:/77BR.
+5lO%_5<qIu5<q@h4u5f-9i+V_:f("fqbdMn;GpHm;?0Yn;Z0Po;Z0Po<;]Yr<)lrs;ufkr;Z'Jn
+;?9]or`&hp"]SE!;,L0f:]F8r:Jah_:/=^c;>O/l;,U9f;#X;n;G^3h;?'Jg:]+)V;ZBZ3;Gg7e
+;,C(b:Jt(f;GpLo8kVcL6p!Fkq)SL;r]C6F4?WU)!BN=A4T@PE55dSD55d_F4odhE56!eG4psS=
+5!;(n4Ztnj4Zr^-"[,%85X7[85QjA;6:!p:5S-.F5=%Ls5!D+p5!M+i3]&Mg;Z9Sp<;T_r=8Z1t
+<rlE+r)i>hs&f8%rE/qus&f8'qcN\trE/_qr`Ju!r*&u#oih>t'NeF;:JX\Y9hnSh:JOVY9MJJa
+;c*HkrcJ0_s*"?bs*4QhrHeKj!.=`n!e,WKrdYB-JqAW-KS>,7L51TaM.MR&N/WaVO,oBbP*;,q
+Q'Rc(R@9V7SXuFFTqS3VUnsueW2ckuXf\b1Yd1UB[C3QS\[oGd^;%J"_Sa@3a2lBFbKS5VcdC.h
+eCE.%f\,!5h;-rGi8N_VjQ5Oekiq?slg4!+rpL6anac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#
+s1A;]~>
+JcC<$MZ<)Cqu-Hjq"t$drV??crqHEcqt:!]s7?0Zs7$3\Xf\c*XTGZ/Z2Cm<Za-j@Yck75Xf\\*
+Wi2ejrhBXkTqS-PTDkG^SHPFNR[KQAQU-q&Q'B8+_SX.(^V.:l]",>Z[^EHJZ*:F7XfR\KWMcYj
+UnaZXTV%gHS"#kCV4sTPR$<VkN/<@SCQ>crH@LU-qMtQ7rf$]3s,?c5rf6T2s,d5B!g8b2r06f<
+!1*#;%?k+hS=#V.OHPT`M1pZ_J.d0UG^"C^J:W9'It30)KS,#3K`5Ep?t!E<Za6sDYd(L<YH4h*
+XK/A#VZ*CkUB70bU&L_bSd:mVR[KG-R^e7SG7&A6IY3N8M2I.GL\uu*M#`G3M#`A'M>iA;Mi<XU
+NfT3]rJg`6re^c6MM_=gre^Z2!JuX1LBiNdKS+l-JV*iOr.+fur.=s$rdkB+JqSf0KS5'YKE$N'
+KDpQ'KDL8uKDgH*K7nr5r.k3)s+gW/(5IQjH?sj]G]n1GDJX31?<piA?=$uGr*KD/r*98+rEKD0
+>[753r*9/(s&oe8>?b?:>$+p0=]nr+>6%k+=TDY)>6.o3r`]5&"'AQ(<rQ5$=8Z&'<)umm:.UqH
+rLWeV"JDH_TqVCWpS%8S!2K=bs/#^l!2o^kqksInk,S<ZpT+FuXKDE'+L&,VZEppF[C*HOZ`Kmd
+K6h]`FEr\9J:)QdH^(,+WiZ3&s)e9`s*"?bs*4QhrH\NlI!kpAs*artrdb$"!.t3&F+f7%L51P?
+M2@+JN/WaVO,oBbP*2#oQ'Rc(R$sM6S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(O@[C3NR\[oDc]t_=u
+_Sa=2`lH0BbKJ/Ucd:(feC<($f@em4gtgiEi8N\Uj5oFckNM0qlg4!*mdKW6nc&([oCW%T!quB_
+rV6Egs8)Zjrqu`no_sFAJcE@^J,~>
+JcC<$MZ<)Cqu-Hjq"t$drV??crqHEcqt:!]s7?0Zs7$0[Mi7Omrf-o;rK$l9$B0n$MM[1GL5(D9
+rIk3'qgnj"JGt&uJGt&tIQYTf_SX.(^V.:l]",>Z[^EHJZ*:F7XfQkrWMcYjUnaZXTV%gHS"#jp
+H['aVEc,Z-BP1mo?#kaNCiOOqH2i3iHN8B]H2MpdH1#t[H[L56IJJ?hII_h/:Ngi#E,fc5Chm]p
+A78kS?!^`;>%1rN@q9%Y@q&tYrabq,"B9f)LPGe^s+CT/JqAQ)J:RWJs*P`5I!^3dH$Oa]G]n4Q
+FE;JCM/m?FC1h7"F*.D,s*4Nd!I&_`FoHR`FoHRaFT?UaGQ)d`GPl^^H22[bGPlXaGQ)adGBWe)
+"E\^,EcM%us)J$Yr,_mYs)S0\q/cLTrH%mYqfDFPrGr!]Fo?F\F8p@^F8p=^DuOV`Ch[ZuARf4\
+A5Z9%:fI0fs&&\ls&&\ls&&bn!`;inr_`\lr_`\lr)*Jj#uOMp:Janb:f1*h;#a<":/=\^:esna
+:JXe`:B"#h;#O/j:/Cja#Ye&f8Ou?;Kn]J[reL<(rJ1E/!/LN/re^6(r/(9-rJU9+nr<F)r/LT6
+pQ,<8qiUoAplcDQM1BVbChd["G(jpRC2.U3J;],8re1;ns)n?brHJ9ds*=Qh!df<BrdFfq!.Xuu
+s+(0%re#9FKnb>;LPUeDMMmFPNK0'\OHG]hPEhE!Q^F//S"#q=StD[LU8+N\VPgAlWiN5'Y-5(7
+Za7'J[^`lZ]=bhl^VRe)`5Ta:aN;WKc-FY^dF-Oof%8O,g=tE=hV[8MioB(\k2tjjl0@U$m-X60
+n*olHncA@Srq-?dp\4X]s7u]kr;6KkrVcBfJcC<$]DmB~>
+JcC<$MZ<)Cqu-Hjq"t$drV??crqHEcqt:!]s7?0Zs7$-Z<W5tt<W,ns<W6%u<s2Q(<``B"<rZ/"
+<qfVm<!#ut<;oes<)`co.E06B_SO"%]tCtg\[])V[Bm3EYck43XAVrqVl-AeUS=HTT:VUCS!lM>
+4qKe93B/rS2)I?[4[DV6;c?Zo;Z9Vn;YF&b;Z9Vo<:j,`;Z9Pl;?9Wmr)!Jm;t*Zb;uT`%2*O,b
+3]]8^2uY]Y2)@!A/MJe//MT":1GgmE1c7*F1G^mO4?Pej3_)b68P/nP!_5dPrC.2a6pj@26pj@1
+77'1%r]q)[5X7Ou5VbPn:/Oe`:/Xqer_r2^r_reorDN\qr)<Vpr`'&"<E)rs;?0\m;uK\p;u]f(
+;c6Ii:esk`:Japf;#X5j;#X>l;?0Sn;?Kip;Gm9es%rkr;,L0h;#jGf:BOEj;,[BjnPTEe;H!Hl
+!)`\k$VsMn:esna;c?Rn;uTAl8O>L"48Lu<48q>D4Zkk+3rqB(rB(-E5!Am-!'^<Fs$$HIr'(*C
+rBC6Es$$BE!B`OE4paA;5X.S$5<qM!r^$NKs$$QM5=#02#sga>5WUka1f@6N;ZKep<rZ7u=Su7s
+=R92j=T2D$=Sc,!=T2J$=SZ,!=S>nq=Sl7t>5_S)=BY<#s&o>)'NeF;:JX\Z92A;Z:Jab]9hnVd
+<)EQls)e9`s*"?bs*4QhrH\NlI!kpAs*artrdb$"!.t3&F+f7%L51P?M2@+JN/WaVO,oBbP*2#o
+Q'Rc(R$sM6S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(O@[C3NR\[oDc]t_=u_Sa=2`lH0BbKJ/Ucd:(f
+eC<($f@em4gtgiEi8N\Uj5oFckNM0qlg4!*mdKW6nc&([oCW%T!quB_rV6Egs8)Zjrqu`no_sFA
+JcE@^J,~>
+JcC<$MZ<,Dqu-Eiq>:-erV?<brqHHdqt:!]rq$*Zs7--Y!:Tif!j8c4qQ^[;Yct:5Xf\\+Wi;nl
+U8+KXrh0CdT:c+S"J)'PR[O/Bs-NbOq3ClBp65H<,F+.#VPL#^TqJ$LSXc1<R$a53Ssbk+NJ`OK
+PA5,fS:#[8MtrD4NW+k;NK!ams,?c5rf7#>rf6f8rfI,A!KrZEPhqZR?(IORQ^!SoO,]!LK7SW'
+I!U$^FanplJV/Q+KS>&3LP1@i@U`bS@/dJMZEpd?ZEUL5XfAD%Wi;hiUnjc\U8+HVTV2:Us-jFb
+Jt]rEGB\4RI>!E8repf6!/^N-rJCQ3!f;elnqm=&s,7#=O,j4#!07&<r/CW4"Gr"mLku"ds+g]4
+M#E)3L4t;6KDgE#Jc1,uJc13#KE$N0K7\`.KnP,5KnTAVrIk3'qLnd!!/1?*re(9*q1es)r.b?.
+LPPk`'Rb@UH?aXVF`)&4CiWfe>[C`E?XN_;!+#J,!*fA+!F8t.>Q%h)>Q7n)>6\85=]eg0>5VS)
+>5_V'>PhV'=oVS*<E<0"=92K(r`'2&<Dumq:JFFZT(no\TVA0SU&:SXU%Y5\U\LVbV>[7kVu*@h
+VZE`qjf86ZoW/%prN6I1Yd(L>Za@*I[JdNJXf7nTIWp!XFaT%AI<fs]J=W:4X8T1(FEM_LG5ZXb
+GQ<$fHN/<lI/SHpIXckHJ,t4Qrdt6)L&QgKLPUeDMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[L
+U8+N[VPg>kWiN5'Y-5(7ZEppH[^WfX]=bhk^VI_'`5T^9aN;TJbg+M\dF-Lne^i@)g=k<;h;7)J
+iT&tZjlYail07L!m-O--n*fc9o()DEo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s185\~>
+JcC<$MZ<,Dqu-Eiq>:-erV?<brqHHdqt:!]rq$*Zs7--Y!UksFN;eh:Nr>"=Nr=q;N;e_<MM[.E
+LAlo*KE-Z%JcUFQrI=itrdXfoqgJ<gpj43&AlY_(UnXQUT:VUDS!o_3QZdLmDJj3&AnGpcA8H[0
+E,tl%!.+Wks*F?`s*4Ngr-83ds*FZiq0E$fr-ABjI.Vj`If"QbIM>P#F`MJ@DJa6*BOkU^@:*>I
+>Zk2.@L?XUA7K.[@q'"[Ac5X/<<%^RLAlo+KHu/%JqAN'It)oqI!g?iI!^0bH?ja[GBS.OBR#A\
+C2.EsE--4!H2i-hG5c^_Fo6F_FoHRaFT?UaGQ2jdG5umeGQ)gfH$K12q02m`rHA-`"*Sm4G56:[
+F9$C[ErU.ZErU1dEcZ;BEcZ;BEr'kUErC(WFSg.UFT6LYF9$I^FT6F^F9H`.F*)R(FqAV2DJa3*
+C1q0f@q9+I;,C3d;ZBVl;?0Sk;?0Sn;ZBSo;Z9Pn;#X>k;#O8k:^']m:JXear_WVls%r_k"\qii
+:esmd:^9cm:ejb]:Jh!c$VjJn:/4MX9M%cG6N)Z<L\cc'L]</1L]3,.M=ZW'M><&.Mt2huNVJP2
+NVnh0O8k=>OoLU<P8'+<L44,ZChd^(G(jmPC27a;J;AsYKEQC>F`qs,GQ2mfH2W'hHN8HlI0+kI
+J,Xs!JV*lR!JH1+L3/3,M2@+JN/WaVO,oBbP*2#nQ'Rc(R$jD4S=Q7DTV8*TUnjlcVl?\sXKAY/
+Yd(L?['mEP\[f>b]tV7s_SX71`Q-'Ab0/#ScHstee'uq!f@\g2gYL]Bi8ESSj5f=akNM0plKdg'
+mI'H3nF?)?oCV\So`Fj]p\ssfq>^<hqu6NlrUg)?s+13]s*t~>
+JcC<$MZ<,Dqu-Eiq>:-erV?<brqHHdqt:!]rq$*Zs7--Y!:Tnds&K%ts&K"u#$4i+<E3+%r`0)#
+<`]3"!*8hor`&nrs&AnpoMYN_q,/Cf.4_9kUnXQUT:VUDS!o_3QT[Dk3]K#U1c%3X77KgD;,d?i
+r_iepr)3SppJ^odr_reqpJV,m;cE?e!)`\m!`;inrDE#]s&0>*1d4#a3]T2]2`3KNr\F^3/hen0
+/cIL*1]B622?#E31^-$)4?bhgr_!2^r^d&Z!(d&X,Xk*g6UX7-770L15!VA!5sRY"5;bVh7o)lV
+9iP%i;H$Oo;cE3as&8qqr_reopJV&krDa&$<E3!s;H!<hrD`eqrDWnt;,L.cr_WVls%r\js%r\l
+s&/ko"]A8t;,U9f:]XEkqbdAiq+h2k;,L4h;,R0frDWYms&8qqr)<Sl"&Mcg:]4*#;,:%d;c6Rp
+8kquO6omCiq`=a=r]C3E4T.>A3rD,?55mYF4[/g/s$$EHrBC3Dr&uYp5!D+m4?Yhi5!M4p5=%M"
+5sIV"5=%V%5<hCu5<qFu5<_=r5X%=r3]T5Xr_iesr)Wi!r)ihtqH3)e!*K2$r`K"us&f8'rE/ht
+s&ettqcNc!q-!c$rE'&&qcWu&pKIQ!&QVh-:/+GU9i+ba:/+JV;H$]q;?V)aF`qs,GQ2mfH2W'h
+HN8HlI0+kIJ,Xs!JV*lR!JH1+L3/3,M2@+JN/WaVO,oBbP*2#nQ'Rc(R$jD4S=Q7DTV8*TUnjlc
+Vl?\sXKAY/Yd(L?['mEP\[f>b]tV7s_SX71`Q-'Ab0/#ScHstee'uq!f@\g2gYL]Bi8ESSj5f=a
+kNM0plKdg'mI'H3nF?)?oCV\So`Fj]p\ssfq>^<hqu6NlrUg)?s+13]s*t~>
+JcC<$MuW5EqYg?iq"t'erV?<brqHHdqt:!]rq$*Zs7--YrpTff!j8`3riu^4ZEga>YPt[3XfSV)
+WMcSfU8+L^U&UbaT)YA]S,o(Hrg<\Os-EPIr06o=rK8FrMh..JLngZ;T:VUDS!ob4Q^3o)P`Cf_
+M2@F]F+Tg(H@^s5pl>62!0$c4!0$]4q2Y93rfI/Bs,mAGr060*(L:@<S=,b/Octf`LkCA3JU`,o
+G^+F^JGt*,K7no4Knb;7@UWaF@/tZRZi@<9Yd(I;Y,nb+ri-:'Unj`\USFQZT`1YbSdh6[S$ScU
+TQtj0GCY=(rf$i7s,-i5qM>*,r/(N3MY)c)M?AcqNK3pt!07#;rf$l8rJLK/reUT2rJ1E,s+CB)
+rIY$"r.+fu!J5t'K)^H'K)UB)KS>,5re:<(s+C<(re($"rdt3(qM"a#!/CH-!JlL0L])r>KnOl$
+H?j^TF)>c.DMMM&>[IA9rEfJ/oj%E!rET8)r`TJ1>?b?:=oMM)=^##->6%k*=oV_*=o_e+>5h\)
+=9)G%<rQ21<E<+"<)lms=&;[bSt>_L"JDK`TqVCWpn@ATs.fCcs/#[k!2oalr29Rnjf89[nuMhn
+rN7ELYd(L>Za@*I[^NTO[^W`JVO`ZnG]n4PR%9@fH$=RkTr4unrN?0C!-\<bs*4QhrH\NlI!kpA
+s*artrdb$"GCkI"KS5&6L51S@M2@+JN/WaVO,oBbP*;,qQ'Rc(R@9V7SXuFFTqS3VUnsueW2cku
+Xf\e2Yd1UB[C3QS\[oGd^;%J"_Sa=2`lQ6DbKS5VcdC.geC<($f\,!5gtgiEi8N\Uj5oFckNM0q
+lg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcE=]J,~>
+JcC<$MuW5EqYg?iq"t'erV?<brqHHdqt:!]rq$*Zs7--YrpTfErf-r<"-8J'Nr+h8MZelmLPCQ_
+L&H]%K)^B%JGt&tJH(,rIf"QhI//+6F(Sft@qDF/Tq@pIS=>t8R$X,(F)Gc0BP1ppE+*R/CN"6:
+r-A<grd4ZkpNca_rd"Bcq0DUYs*F`nomQXbr-e6es%aAQF`VPADf9H,BObO]@:3GI>?P-=@fBj;
+Abos8<<lH6LPLV<KnfS[-%^c$Jq/B$IsufnI!pBiH[9saH$FRXG'8C^Edqk?C2@s4H$Xf6Gm8M;
+GBS1SG5HF[FoZ[aG5cX[G63#5GPudaH2i3iH2DgdGPu^`G5ugbGPQC]F9$C\EWU<&EW0tbF)l;B
+F)l;BF)q/!s)e3[s)e9^s)e'XqK2^ZrcJ-^s)\6`rH/'\s)e9`"*8R,FoHOcF`_g+D[^JuC27?i
+A7T^X:f10e;ZBVo;?0Si;Z9Pn;ZBSo;Z9Pm;#aDl;#F2i;#a>h;#aDm;#O2i:^g,r:Jjqa:Jae]
+:JXgc:Cg2r:JOYZ9h\8Q7m_rbLPP\[r.k0*rJC0(rJC?-rep<*oSrX+qi1Q7oT0!5rK7)BoTKrN
+MM6CqChmd"IXZT\Chmd-J;/gVK`?/pG5ZXbGlN'fH3/G@I/\QoIK4lsJH(1EJqJ]/KS>/8LPUbC
+M2I4MN/`jYO-#KePE_>tQC!u,R[]e;St;RJTq\?YV5L5iWiE,%Xfnt5ZEppG[^WcW]"G\i^VI\&
+_o0O6aN2NIbg"GZdF$CleCN7(g"P39h;7&IiSrnXjlY^gkiqBum-O--n*fc9rpg*]o`"O`p&Ojc
+q#C0iqY^6ir;HTdrdk*#s185\~>
+JcC<$MuW5EqYg?iq"t'erV?<brqHHdqt:!]rq$*Zs7--YrpKhdr`/qss&B)#<W6%u<<6-%rDir!
+<rQ,!<qo\n<<#ks<;KPe;YX,h;?0Sn;BdY@-o*>*US4BRSt2C@R[KP0QBaKk3&``P1HIQ`77U0O
+;u'>g;uTbi;uT\l;uTbf;s[E^;=7?^1^?3,4?GSa3]I$q%5Tgs0J>(3/hJh61Ggre2?,K61Go%m
+#<k158P2TH8cD9[8,Ym]779L26pj<?6lJ?T5sRY#5<hCk4u>l/:/=V_:f:4j;H$Oo;t*]b;ZK_p
+;uT\f;u0Jt<)Z[n<)ico!E<(p<!?2u;Gg:fr)*Jjr_NJis&',":f1(g;Gg=hqbR;j;Yj5j;#=#m
+:esk`;,L6j;>X8h;uT\p;uT\n;[-,s;,C(a:\mlh:Jjse;@$;r8kViI3]];!3r_;@49@Z.4T.A>
+497T/rB('DrBL9Fs$-HGr]U3D!^/_2r]L]Q4Ztnk5<_7q5X.P$5Q*h`6:!k$5sRY"5<qFr5X.Lu
+5!M7l3&=N6r)Nf!qcNbtq,m#es&f8%rE/nt!*K2&r`Jqur`JntqcNf"pK@Q"rE'&&rEB2'pKIQ!
+'3\L>:JX_Z:/+_g:Jak^9M\Vd<;]YoFT?U`GQ2pfH2W$jH[L5?IK+`rJ,XuuJTl]uK7no3L5(J>
+Ll$tGMi<USNfT6_OckomQ'IZ%R$jD4S"6.BT:qsQUnjibVl6VqX0&M-YctF>['d?O\@K2`]Y;.r
+_8=+.`Q$!?b0/#RcHjncdaZdtf@\d1gYCWAhr*JQj5]7`k3(smlKdg'mI'H3nF?MK!V>s_p&F^c
+p\jmeq>^<hqu6NlrUg)?s+13]s*t~>
+JcC<$MuW5Equ-Hjq"t$drqZEcrqHEcr:U*^rq$*Zs7--YrU0aSriH:*Yd(M5Ylh;:Z*4/0s/cI+
+X/`+qU\pkcT`CbaSckUSS=>rFR/N?OQMd$GPkL==OsQ3DR>lljStVgKSt):>R@'>,Q'@JqNJ`UL
+M3Dk&ST]=0M2[FRpl>62!0$f5s,?c5pl>02s,d5B!KrZDPlI$KQKOMW?<j%mR[BD'P)kQYLOt&,
+IscWfG'8IhJUi<'KS+o2KnP-Y@fBd9VuF%&Z3RY?Z*:C4XfMH$+K205U84QYU8+BUTqS*NSsu7[
+MKX8hG^P$tO,f3YNK*pr$&a[uM2@%EM26udM>2u%M>rJ4MZJcrqN(T7rf$i7s,-Z0s+pZ2reLN.
+!JQ4+K*?jZJqAQ)rIFlurdtK.K7ec-K7nr5re:?+r.G-*KS9>WoS!6ure:H-LAH`)L]</1L]3)0
+L])u-Kc#PuI=-?dG]e7MChmp.Dd6UU?sd8I?<pn9?1qP$>Q%h)>Q.e6>[(E;>?Y-3=BSg2rEK;*
+r`KD/>Zt?8>Q.h*=TV].=T2A#=92E'rDiks"'8>q:&1CaTV8*SU&1MXU%P,[U\LYbV>d=lVu*@h
+VZE`qjf89[o;qtorN6C/Yd(L?Za@+;[JmW7[hPs@SV_]=F`r%dTS7c<GC,XOY,eN"XoWZgrHJ9d
+s*=Tis*Ocnrd=isIt.HJ!J,k%K)pXZre>NMLl$tGMi<USNfT6_OcklkQ'IZ%R$a>3S"-(AT:hmP
+USO``Vl6SpX0&M,YctC=ZaI6N\@K2_]Y2(p_8=+.`Q#s>aihlPcHjkbdaQ^rf%8R.g=tH>hVd>N
+j5]4^k3(sml0@U$m-X60n*ol<o(2JFrq-?dp\4[^s7u]kqtpBjrVcBfJcC<$])R9~>
+JcC<$MuW5Equ-Hjq"t$drqZEcrqHEcr:U*^rq$*Zs7--YrU0aSrf$i9rJgl=qi(i>Mi3ILLPCQ^
+L&Qc*KDgE%JH16!J,XutJ,OinIJ8-cHQm36E+`^(G+kS#St):>R@'>,Q'@JqC1h0jAoD*jHYRA:
+Gku^cHN&9kHMVpaGlE!dGkcRVH3&A?q0i9lrdFWlr-e9f(/IYJG&qYCDf0E,BOtX]@:3DJ>?P-?
+r*p7J@q0%ZARneA<E<*uJ;8pZK`[!^K`6TIJV&H'J:E#rI!g?iI!^3dH$OXZGB\+`F)#N*C2S*8
+H?oI8r-89er-/0arH7jXs)e<bqKMd\r-A<grH\9br-&$_!-\<bqK;dZ!-A-[s)\-Zs)S0\rc8Wk
+F)uABF)uGFF)uGEEcQ5BrcAHhFE;JCF*)MFF89qXFo?F\FoQXaFTur/F*)PIFT-F]G5l[sFEM_F
+E,KQ0C2RWoA7K.Z;,d?i"&Vrn;>*oe;?'Po;#jMn;>sDl;>sDi;?'Go;,:!c;#aDm;#X6%:/Fb_
+:f("c:JXe_:/=\^;#X8j:('im:/+GV9h@iFLPP_\qhP**rJC-'rJC?-rep<*oSrX+qi1Q7ooK*6
+r/q#BnWOZLMM-.kChmd%G(k!UC27X4Jr#58rIb2oG5ZXbGlN'gHN/?lI/\NqIXckHJ,t4Qrdt6)
+L&QgKLPUeDMMmFPNK0'\OHG]hPEhE!Q^F//S"#q>StD[LU8+N\VPgAlWiN8(Y->.8Za7'J\%&u[
+]=bhl^VRe)`5Ta:aN;WKc-FY^dF-Lne^i@)g=k<;h;7)JiT&tZjlYail07L!m-O--n*fc9o()DD
+o`"Lbp@n=\q#C0iqYU0hr;HTdrdk*#s185\~>
+JcC<$MuW5Equ-Hjq"t$drqZEcrqHEcr:U*^rq$*Zs7--YrU0aSr`/qsrD`o"<EB*!!*B,"r)N\r
+q,RDn!E2nn;u]hj;Y![,;Ca.O/hK+DTqJ!KS=?"9R$X,(P`q7h2`!6H3^cD-r_NSnpepufr`&\l
+!*&bmqc*2doMY]fqbmDjn59cQ1d4&c4$#A_2`<NO1,Lcc0EWpZ/Md8\"#Mkl2>o?;4?Yej4uu/(
+9)_E]8H)-X7K>mT6j5qE6pj7)r]gu[5X7+i7o*#W:estf<)Z]l;tNrf;>jAo;c6Nm;uT\f;u'Dr
+<)QXo<;fbh<;oet;Gg9g;#jGl:B45i;?'Po:]jQm;c3Nlqb[;jqG@5hrD*bs:Jah`;,L4h;,R0f
+rDW\n!E2to;[$&r;,C(bpJClc!`2`kr_j&&9hJ&M:..,>3r_;A4T@PE4T%;=49.SD49.SD5Q3kH
+5Q3hK5<_4nrB:9G5!Js/"$A_04T%DB5QF.M5Sl^O6:!n%5sRY"5<qFr5!M4q5!M=o3B@"<!*B/%
+!EiP%=8H%c=oVV'=8c7u=8uD$=oVUu=oVUt=o2>"=nl2#=oMP'=oV\'=nc)"=oDG:=]e^":eaVY
+9hnY^:ea_[:/k1k:]4/lFa!_-s*4Qhrd+Tks*Xfo!e,WKrdY$#K)UB'KSBD[FGG[/M2I4MN/`jY
+O-#KeP*;/rQC!u+R[]e:St;RITq\<XV5C/hWN*#$Xfen4Z*UdE[^WcW]">Vg^V@V%_o0O6a2lBG
+bK\>Yd*^:jeCE.%f\5'6h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nac8BoCW%T!quB_rqQNhs8)Wi
+rqu`no_sFAJcE=]J,~>
+JcC<$MuW8Fqu-Eiq>:-erqZEcrqHEcr:U*^rq$*Zs7--YrU0sYmB*LnY-@i/!j])8riZ:'"g"c)
+W2HHgUApnfTV)1SrgWtWr0[JM!1*PJ!L/lJPl?mHPl$[COs6*DP`LZRTU;%*St2@?R@'A-Q'@Jq
+OcYW\LluV!N-'DuLAm/3NVJP2NVSJ4N;eh:N;eh3NW>.>NrG+=OT(@CP*>g.rg!JKo9K?AqN_(c
+*1`UfQBdPnO,f*OK7JH#I<p-\Fb#$pJV&Q.K7s5X!/1>\s'ZCF['R'EZa-jAZ*:F6XK2?#)5sF-
+U84QYUnOHUTV8!MJWHmuG^F^`JqK']O8b.>NW+n9Mu8G3M#E2*MY;l,MZ/P6Mu\n9Nrb?'rJgf8
+repc5qhb?/s,$c3reCQ0KnT>U!J5n$JGt*"K):0&JqJ`1q1eg#s+UH)re19)qh4s&rIt<-q2#'+
+r.tB0!/UW0q1]W6I<p3bG'.b@Ci=?!?!^oH?X@&E?N"1'>l7h(>l@n+=pnS>>?kB9=BSa/=^(f/
+!a8f3r`KD.>[(E9>Q.h*=TV].=T2A#=:8/2<E<.#<)cps:JCYX"JDH_U7qIWq4[JUs.f@bs/#^l
+!2o^kr20RoWTC/ZX8AsuXnf'uXo5C+YHY:;Za9Y<"1>MD[JmW6[hZ3MSsb1VG]e4fPb`bUH$Fe/
+Tt.5)rN6-DrHJ9ds*=Tis*F`nrI"]qJ,XuuJI-p\K7no3L5(J>reYcTMi<USNfT9aP*2#nQ'I]'
+R$jD4S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['mEQ\[f>b]tV7s_8=+/`Q-'Ab0/#RcHjnce'umu
+f@\d1gYCWAhr*JQj5]7`k3(sml0I^&mI'H3nF5u=o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+13\
+s*t~>
+JcC<$MuW8Fqu-Eiq>:-erqZEcrqHEcr:U*^rq$*Zs7--YrU0jVm>R#%NW"n;N=1])NJrgSMM[.E
+L5,\]re19'rIY$"rdXlss*surrd=cqrI+Zms*ainqg0Q(@VogjAp/-3C7^ucS!fY2QBd\uP*(ie
+An>jdB5qU%EclX&H2i3iHN8BiH2)X`H2Mp^GlW0iH2)[dH[PX;rdOlqqgSHkpO4Vf9m1Z"EH,l5
+D/3ir@preQ?X6l=>%;&Q@qB.\@q9(ZAS"kB<E<'tLkgcaL&Zi*K+*<_JUr?$IXQTlI=-GAH4G1F
+G^3b;JU;*ICMe*5GkuaaH2i-eGQ2jbFng.[FT?U\GPZR_H2`-gH2MmiGBS1RG5-:]G5HF^FT6F^
+ErU4YEWU<&Er0nXErL.YF9?T)Ec_/#"Eeg,Ec^nqs)n9^r,i!_rH8'\rcS3`!-eBbrcS3`s)8<`
+DJa-+@q9+]A5N,#"&Vrn;>*oe;>sGo;,[?is%r_mr_WMis%ikr:esk`;>sAl;>sDl:Cp8s:esna
+;,C%a:esh^:espd:B=3dr_<Vk:/"5N8,@u<L]</1M>i>0M=ZW(M>2u.Msu\uNVAJ1NW+t8NrY:=
+O8b7>OoLU4P7s"4JobjHC28!>KQ1jFCM\NQN/%7`!-\<bs*4Qhrd+Tk!.=`n!IfOtJH(0,JqJ]/
+KS>/8LPYqdFc)*9N/`jYOHG]hPE_>tQ^F/.R[]h<StD[LU8+N\VPgAlWiN5'Y-5(7ZEppH[^`lY
+]=bhk^VI\&_o9U8aN;TJbg"GZdF$FmeCN7(g"P39h;7&IiSrnXjlY^gkiq?tm-O--n*fc8nac8B
+o^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s1//[~>
+JcC<$MuW8Fqu-Eiq>:-erqZEcrqHEcr:U*^rq$*Zs7--YrU0jVm8[0a<;okt<rH%u=8l7t<W6%o
+<W5qu;c<Kk!E<"p;?0Yo;Z9Pn;YO$5.jm,*/2fFF2)1\nS"#h5R$O#%PEM&iO#&UR5t"4:;,U=k
+pJUler`&eorD`Skqc*2doMYZerDNPjo25]I1d4&br]1QM2`<TP1c-p@1,(=4/i#3]2#fE61cG=i
+#r=\,4?bnh8P)PR8cM?]7fc.NrC-cUr'UTR6:Cf='0e`H5qP2^7nurY:fC4g;H$On;YsDm;?0Yj
+;ZBVn;ZB\q;ZB\p;Y<ug<;ff"<)lpt;uTbp;u]eu;cH]m<<#l!<)Z[mr)!Gjr_NJis&'%u:f("e
+;GmEk!)`\k!Dubj;#jGk:BaQl:esnbp/:fes&&ns<)i]ms&&hoqb[8hqb[;g%8]qu;G^7k92%uM
+9fY633r_;A4T@PE4T%;=497W/r]CKN5<h=q5<_7q5Q3kH5Q3hC55m_F49@Z.4oIPU5<qG"5sR\$
+5XIb&5=%P!5lO"J4pXA:5s@Lu3]T2!<rH,$=]kT'q,lud!*K2$r`K"us&f8'r`Jnts&ettqcNi#
+qcWu(r`]>)r`JqupK@Q"rE'8*=]e^):/Cj`#Z4Ds:es\W9N(jg!)WVl!-\<bs*4Qhrd+Tk!.=`n
+!IfOtJH(0,JqJ]/KS>/8LPYqdFc)*9N/`jYOHG]hPE_>tQ^F/.R[]h<StD[LU8+N\VPgAlWiN5'
+Y-5(7ZEppH[^`lY]=bhk^VI\&_o9U8aN;TJbg"GZdF$FmeCN7(g"P39h;7&IiSrnXjlY^gkiq?t
+m-O--n*fc8nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s1//[~>
+JcC<$N;r>Fqu-Hjq>:-erqZEcrqHEcr:U*^s7?0Zs7--YrU0sYmHs8BY-7],!O/d,Xp2#0XK&7t
+V>?ngTqJ'NrLO+^S=5lER/N?OQMm'KPl?sHPQI&5Pl$[COsHHTK9V%FTUV:-LQ.:_R[BJ.Q'IPr
+OcYWaNKS7&Kop_3KT(lgNVAJ3NW4t6Mu&D3NVeb9NVeb9O8b7@OoLREPPg[FQ2R$@Q2[*IPr;lO
+St2::P`_)hNJ<7CJqAH"H?jXVK7JN(JqSi1KnbA:Kk"S$?t+AeZEpjCZE^^?Yck11X8]+"W2BNg
+"JVZbU8%X[$(7*oR!F+,H\%%QNr>"CNfT3[NK0"tN!5)qMM[1Gqhb3-!K2j0M>rJ4MZJcrr/^l>
+!0@,=r/:W6rJLK/"c/"mM26udLB<3`K`-Q'JcLB$J-:FTJUrFPKE$W)K*$^\L\cc)L&Zi+K`Zp[
+KDgK%L&H])L&Zo+L\Zc+L\uu-M#rKgL\ZZ9LPUe;I!U*`F`;27CiGD??N+@3?N+42>[@&.qcj#(
+r*02)r*'A/=BSa/=^(f/r`];(!a8f4qc`r$s&f8$r`B;)<`N.#r_ru#=AVckTDtVbU&^naT_Y;S
+UAq"aV#R:iV?!OlVYd7kWT:)YX8T.!Xnf'uXo5C+YHbC=Za9S:!4Dd6rjVp;'s=I*OaVP!G'grn
+OaVP"HAJ8gZDt#)Y5NSEGlN'gHN/<lI/\QoIK4lsJ,t4Qrdt6)L&QgFLPUeDMMmFPNK0'\OHG]i
+Pa.N"Q^F20S"#t?StMdNU84T]Vl-JnWiW>)YHY:;Za@-K\%&u[]Y(tn^qmn*`5Ta;aND]Lc-FY^
+dF-Lne^rF*g=k<;h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"Lbp@n=[p]1-hqY^6ir;HTd
+rdk*#s1//[~>
+JcC<$N;r>Fqu-Hjq>:-erqZEcrqHEcr:U*^s7?0Zs7--YrU0mWmHs8!r/L]9rf%8DNK&mTMi!7F
+L5,\]re16&rIY'#!.b&urdautrdOiprdOfo!doEEqgA?h,]I@)Ch%%#FDkl(Bkj-+R$a2)Q'7An
+OH5E]DHULfHu!\CG^0"/s*F]ls*FZimWe>KqKi0g!.=WkrI+`pqL8BkpjNWH9m1Z#Ec>o6ChmZp
+raQ.>?<pf=>%IJ>s()+?%TQP0<E!C_L51J:L4t;6rdt6&K)U<;IsufnI=6KjH?sp_H$O@NML0)T
+CN+?:rd"?dqKW'crHJ9br,qm["F#$3Fa!V*qKVp`s*FWhrHJNlG^"=TG'<Y)s*"9^!-J0\!ci@'
+rc8$[s)S'Zs)e3\r,`BhEcQ8DF`__JFE;JDF7s_TFoHL\FT?U[FnU"YFo?L`G6W&+DJj<,C&MQB
+HhgPA;,U7gqGI;jr_ibnr_iVjs%r\lr_WSkr_Nbq:esk`;>O,h:D$>t:f'qa;,C(b:f'n^:JXe`
+r_EPi:]=)m9hnAX84`]6qhP3-!f;_hrJC*&s,$N.s,6B*oSrU*qi1T8rK$r>r/^i=rK7)BrK@5G
+oTT<<'p4H/HuNt>CM]AgH>dV7CN=uXMhQl`K`-,pGlN'gHN/<lI/\QoIK4lsJ,t4Qrdt6)L&QgF
+LPUeDMMmFPNK0'\OHG]iPa.N"Q^F20S"#t?StMdNU84T]Vl-JnWiW>)YHY:;Za@-K\%&u[]Y(tn
+^qmn*`5Ta;aND]Lc-FY^dF-Lne^rF*g=k<;h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"Lb
+p@n=[p]1-hqY^6ir;HTdrdk*#s1//[~>
+JcC<$N;r>Fqu-Hjq>:-erqZEcrqHEcr:U*^s7?0Zs7--YrU0mWmHs7?r)EMm!EN;$<r5nr<qfVo
+;ufkr;Z0Po<<#nq;Z9Vn;?B]n;YO$9/LW&%.kWkA2)6g?1n0r$R$O#&PEM&iO,f2[/42g":Jane
+;cH[oq,7)g!*&kpqc*Aiqc*2doht`erDNVlo2>TEs#h#X4$#D_2`<TQ1c$m@0eb74/i5?]1_)B"
+1c7*H4$>\h4[)G/9)_E^8-;@Q84WVJ"@Y^I6q%#A&4AfL5sIV"/j;Hh:Jak`;c<Tl"B&/s;H!Bj
+s&/kq"&`&q;uKVn;?'Mo;uT\p;u]bf;u]hr<W?%u<<H3!<)ifpr`&kqqc!_t<)cdo;Z9Pn;?Kcm
+:Jh$fr_`ns:f1+g;>sJm;?'Go;,U<f;?'Jm:]F5n;,C(dp/:fer_`bq<;BGo;Gg<h;#X>h;#X8j
+:^g3!;,U:k;bK_U8PD/B3rV5@49@Z.4T.A>497T/r]C6F5!Ss/r]gBG"$\t44o.AB4o@DE5!M4p
+r]gEKrBLHO5s[a55lNtT5!V:s5!D4q3BC4?=T;M(=Su7s=R92j=T2D#=Sc)!=T)D&=S>kt=S5ho
+=T2J%>5hb*>5qb)=T)D%=9)Lu>5qb*=T2D%<rZ>:=&_si9hnDk<)6:b9h\>^;cH[lrDNT<s*4Qh
+rd+Tk!.=cos*artrdY$#K)UB'KSBD[Dhj.*M2I4MN/`jYO-#KePE_>tQC!u,R[]e;St;UKTq\?Y
+V5L5iWiE/&Xfnt6ZEppG[^WcW]"G\i^VI\&_o0O6aN2NIbK\>Yd*^:jeCE1&f\5'6h;-rGi8N_V
+jQ5Oekiq?slg4!*mdKW6nc&([oCW%T!quB_rV-BgrqcQirqu`no_sFAJcE:\J,~>
+JcC<$N;rAGqu-Hjq"t'erV??crqHEcr:U*^rq$*Zs7--YrU9dS!:BdP!O&a(Ym[e>Y-+n.XK/A"
+V5*p^"JMK]T:c+Ss.'.ZrgEbQrKdMMrg!MJrg!>EqNLrB,b0jIP_b$bS=>XsN/Wb!R@'>+Q'7Ao
+OH5E]N.0I/TR2*>NK!aopQ#64rf$c5pl,33rf6o9r/Uc;s,d5B!KrZDPlI$JQLpIAQN!-u>[(L*
+S=>e0OcYWbLkgV6IsuinGBJ([Jq&B'K7nl2L5(D9@q&qU@[I#!riu^4Yck42X8]+9WMcPdUSFQX
+Tq\6TT;/(#SU#U3ItW`BO8b1:O8Y(DNJrjUMi!=KreUW4rJCE/!K2j0M#`G4MuS_9NVeb;OH0="
+r/CZ6s,-T.",_qkM#E)0L4oMX!ec/WrIG3*K7SW,KS+pVKEHj]L55_^s+^`3KnY25re:B*!/(9(
+re1?,re16(r.k$&!/LQ0r/(E/q1em*'T.g$H['a[HZO(@BlK/>?XR8K?=*V:!aK#:p0@N""'f,:
+>l7h*=p8/8>?kB8r`B2(>5_\*>5_V(>PhV&=oVS+=&r@'r`Bb4<`N1"<)Zat:JROSTq\9TU&1MZ
+U%G)ZU\U_cV>d=lVu*@hVZE`qm&C&dqPsOqriH+$poFItr2p1,Z*L[ArNlX4['fnArO;g:(:h#Z
+UR['dH?OOaNhV/SH?X\"UoCDsr3$$Cs*+NhrH\NlI!kpAIsulsJ:N3%JqJ]/KS>/8LPUeDMMmCO
+NK0'\OHG]hPE_>uQ^F/.S"#q=StD[LU8+N\VPgAlWiN5'Y->.8Za7'J[^`lZ]=bhl^VI_'`5Ta:
+aN;TJbg+M\dF$Fme^i@)g"P39h;7&IiSrnXjlY^gkiq?tm-O--n*fc8nc/.coCV\Jp%J+Rp\ssf
+q>^<hqu-HlrU^#>s+13\s*t~>
+JcC<$N;rAGqu-Hjq"t'erV??crqHEcr:U*^rq$*Zs7--YrU9dS!:BdPr/LZ8$]U+(NJrdRMM[+C
+LAlo*K`6W'K)U<$JGt&uJ,t.MrdXrsrI+ZoqL/3fs*H#4B4>^hA9E!7Ch@BqC4_k@Q^*i"P*1of
+NfB!'WL\HQEHHJNp3?[bHi89jH0okKH22aeH[PX;rdOlqqgSNmq0j5X:/5tSFE);<D/4!%AR]+W
+?XI)C>$GKI@V#CH!+c(?rDa,$Fbb^,KnY88re1<(!J,k%JHp^SIXHQlI!km=$[?f<O*tb[D/j]B
+HMr-dHM_shH?jc5GQ2jbFo-=bGBS+OG56@ZGl)adHMr-fGQE)7nTXkQ!-ImT"`e[+FE;O&F96N*
+F8^4ZEs?`/FEDYJFT-=_FEMa&FT$@\FSp:YG5cXXG5cX`G5c^cGRJS3Df9N0Bk:daA:+/NrDESm
+!)`\ms&&eor_`\nqbd>hs&&blrDEMis%iDdr_EMhr(m_t:esk`:/4S\:f.-e!DZGi:B+#l9MJ)K
+L5,V]s+p]3s+pW1o8<R)pPT!/n;R"!pl>31rf6u=rfI&=rK.#@rf[5D!0m)=r/q_MKm7NPChn*:
+LN.3KCM\9KLPLT]K`62qGQ<$fH3/G@I/\PDIXcitJ:W9'K7ei1Knb>;Ll$tGMi3ORNfT6_Ocklk
+Pa.Q$R$a;2S"-%@T:hmPUSO``Vl6SpX/rG+YctC=ZaI6M\@K2_]Y2(p^r!t,`Q#s>ai_fNcHaea
+dF6Uqf%8R-g=tE=hV[8MioB(\k2tjjl07O#m-X60n*oi:s7-Heo^qhLp@e7TrqQNhs8)ZjrVZZn
+oDX=@JcE:\J,~>
+JcC<$N;rAGqu-Hjq"t'erV??crqHEcr:U*^rq$*Zs7--YrU9dS!:BdPr)EPn!EN;#<r>ts<qfVo
+;ufkr;ZBZ";H$Ln<)Z`o;Z9Vk;YX*7/LW#%/1ik@2`*0C1c%OfR$X)'PEM)jO,f3Y.:5V9:/Y"i
+;uTbr;u0Da;u]eu<E)rm;uBVe;tNue;uKVl;>3ri2)@)g4oRJB3W:rL2)I*D0JP76/M8e71GgmE
+1c>1f#Wk.24Zl)'8P8tRs%!5^84Z8L7fGgj7RTU26ps=,5X@[h4[)D5:f1+h;Z'Dg;Z0Mo;Z9Sp
+;Z0Po;Z0Go;H$Nn;ZB\q;Y<uf<;ons;ufqs<;fbp<;ohj<<#nr;$9fq;G^3g;>sJm;?'Mo;>sJl
+;#jGl;YX,f;#X;l;"RZa;u]_r;cNQks&&hoqb[8hr)!AgrD3r#;G^4h;H-Rf92/#P3W2#;3rqH,
+r]L0Ar&b!C55dSM5!M7q5!;(n5<o-2!C&dI4o7GB4oIJD5!T$1s$-NL$p[*D5X@_&5X.M!5=#34
+!'^BI$9gU;5<1]*=BSa.rE&esn6#`nr`T8'r`B&#qcEf"r`T5&l<3scr`T5(r`f>)s&o>'r`T5&
+s&o)"s&f>(rE'#"s&B_8=B86p9hS,T;,g@e:/+GX<)crr;Z:n?GQ<$fH3/G@I/\PDIXcitJ:W9'
+K7ei1Knb>;Ll$tGMi3ORNfT6_OcklkPa.Q$R$a;2S"-%@T:hmPUSO``Vl6SpX/rG+YctC=ZaI6M
+\@K2_]Y2(p^r!t,`Q#s>ai_fNcHaeadF6Uqf%8R-g=tE=hV[8MioB(\k2tjjl07O#m-X60n*oi:
+s7-Heo^qhLp@e7TrqQNhs8)ZjrVZZnoDX=@JcE:\J,~>
+JcC<$NW8GGr;HQkq"t'erV??crqHEcr:U*^rq$*Zs7--YrU0gUmHso>s6KKcs/u^2Xf\\*Wi2ej
+qkF+a!hc0Xrgs.\!M#YYRK&ZQQN3?MPlR'HQ2HmAP9c<PKp[mWTUqO6Mij![XKAV'QBd\tP*(fd
+NJq5gaI%0tJW,Q`NVJP4NW+n:MtN&/N<"q5NVnh8NrY:@OTCW/r072Grg*5BrK\:c?!LX*T:2(3
+OcYT^LkgY7JU`/qH$4@^rIPK3L4b59KnkFn@UieT[/@9/ZN%*0XfJN%WWK,sV#I.hUAghuU6h4j
+V0RH<Itj&LPECrfNfO!tr/Uc9s,-o8MuAP4M>E,0MZAY4M$/]mM2I2iMZSisNr4q@OH5B[NV\S8
+Mi*DfM>rJ5M$AcjL51P=K_pE%JcgRUJV3rR!/(0%",2JbL])r-L]3&*L&6Q'L&Zo-K`6Z/L51S@
+LPPMXre^T2s+pc4L]3&-LB<<iMYrA@LO=GnG^=1BDej9U?iFI5?N+43>[:Y/>l7h)>l7h*=p8/8
+>?kB9r`B2(>5_\)>5h\)>6.o3rE9D.=BSd/=]kZ(r`B\2=&r@%<)Ze!:esf[U7n:YT`(PaUAgkY
+U&^t`V#R:jV?!OkVYm=lW:?kfX8T'uX88jqX8]4"Xnf'uXo5C,YHY:;Za7%;ZN7G@rjMd7)S!>g
+]"5/IT:1@XG^+LrR%o1ZH?Xe-Ts1W!r3$'Ds*+Nhrd+Tks*Xfo!IfOtJ-LRVJqJ]/L&QgFLPUeD
+MMmFPNK0'\OHG]iPa.N"Q^F20S"-%@StMdNUSO]_Vl-MoWiW>*YHY:;Za@-K\%0&]]Y(tn^qmn*
+`Poj<aND]Mc-FY^dF-Ooe^rF*g=k<;h;7)JiSrnYjlY^hl07L!m-O--n*fc9rpg*]o`"O`p&Ojc
+q#C0iqY^6ir;HTdrdk*#s1&)Z~>
+JcC<$NW8GGr;HQkq"t'erV??crqHEcr:U*^rq$*Zs7--YrU0gUmHso>s6KWCrf-u<r/:f;MM[.D
+LAlo*K`6W'K)C3!J,b&tJ,OirIJeQlIJA18HYHr.C1VU4E,93(CMSKOJ:<fLP`h2lO,o9Z<1B/"
+CN"6<Gk64\HMi'SGkQFYH3&A?q0i6k!.F`nrdFWl),F"&FEV_FEGo]0CM.3g@U`_O?!LT<@q9-L
+@g6LTA7]@cAc5U7;M^*_LP:G:L&HZ)K)C0;IsuipIXZZlH?spaEcdIrC2Rp1FaAC]H@#R9qg/-b
+s*=oqG^"CVGBS0/Fo$:]GQ2j]GPcX_Gm&G=H$FW5GlE!fGkQ=^G^'(.!-IdQo5stQ#BY*2FEDYI
+FT-=_FEMa*F96T,FT$=aFEM_Jr,qdXqKMp^!-eEcqfhs_$[6Q.DJa6*A7]7]I/?h?;?'Mo;>jDl
+;#jMn;?'Po;#jMn;>sDl;>sDj;>j>k:\[cd:B=9er(m_t:esk`:JO\^:Jh!c$;OAl:/+GV9h7cC
+rJ1E/s+p`3rJC*&!/^E,s,6E+o8WO*qMkK7rf@&?rK$o=rK7)BrK@5Go99*8'U+T7JoYaFCM\EL
+KQ1mFCM\ENM2;%^s*+Kf!."Qis*Ocnrd=frJ,Xs&JV&K+K7nsXL2Vj'M2@+JN/WaVO,oBbP*;,q
+Q'Rc(R@9V8SXuFGTqS6WUo(&fWN)u"Xfek3Z*L^C[C3QT\\#Me^;%J"_Sa@3`lQ6DbKS5Vcd:(f
+eC<%#f@\g2gYL]Bi8ESRj5f=ak32'olKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrUg)?
+s+13[s*t~>
+JcC<$NW8GGr;HQkq"t'erV??crqHEcr:U*^rq$*Zs7--YrU0gUmHso>s6KV_qc3Ppr)N\rpf7>n
+s&8nps&0"t;cH`p;u]bn;uBPf;$e["1G1:@2`<HHr\PBX69m`#Q'@GpOcPQ_N($<,78QiZ<)`]o
+s&8bloi(iir`&Sir`&MgoMYZerDNPjq,.8O1Go(or]1'?2uY]=1bpg?0JEDXr\F[61GgsIr\Os>
+1HIW[4Zl;.8P8tR"\;-R7S$&K7f>ae7RTU26ps=,5X@(e5=n^K;#O;m;Z'Dg;Z9Vp;Ya8k;Z9Pn
+;ZB\p;Y*ff<)`cqs&K%t"BAE#;cN]or`&hpp/D;q;,L4i;c-@frDEPls&&_m!Dubl;?'Pi;#jMm
+;#jGk;>!ic;u]bq;ZKel;ZTcnr)!;grD<Jhs%rVj!)i_l"]\5h8kMeU3rD)>4oRSC48_2@55dSM
+5!M7q5!;%m5<o-2s$-KGr]UBH5<f'0rB1'C&jJQE5X7V#5sR\$6:!n%5sRY"r]^fT5<qCr4[24m
+3]U;ErE&htlWF3irE&u#qH*]!r`T5&l<3scr`T5(r`f;(!a/W-rE9,%s&o)"s&f>(rDru"r`'_5
+=]nj,9i"JY9i=he:ejY[9MeYe<DiZls*+Kf!."Qis*Ocnrd=frJ,Xs&JV&K+K7nsXL2Vj'M2@+J
+N/WaVO,oBbP*;,qQ'Rc(R@9V8SXuFGTqS6WUo(&fWN)u"Xfek3Z*L^C[C3QT\\#Me^;%J"_Sa@3
+`lQ6DbKS5Vcd:(feC<%#f@\g2gYL]Bi8ESRj5f=ak32'olKdg'mI'H3nF?MK!V>s_p&F^cp\jme
+q>^<hqu6NlrUg)?s+13[s*t~>
+JcC<$NW8JHqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!UK%MYlM$,YmIV:Xf\\*
+Wi;nlr1a1as.B@arLX%["e1sKR@'B>QN3?NQ2d*GQ2QsBP9Q-KClsTeTph:+KoD"mXKSS#USO*:
+OcPQ`N/V.XS991/M=ur(NrG%*N;8J1Nr>"BOHGZgP*>g.s-<SLop,KAr`gA6Ssbk-OHGN_Lkp_7
+JUi2sG]\+[JV8Z.L4oM[!JQC0@fp(I[']b;s0;g5YHG".Xo>=%W2?BiU]7(fTa?@1RB_'dItNH<
+rfdPKOcYWaq2YW<O,o>#N=(W&MMmCMMi*CKM>N20MZScmM>`>3M#`G4MuS_9Nr+kGOH,9YNJrdS
+N/`dTMuAP-M$8ZhL51P<rIY*'re(0$!/(9&qLnj's+^K-s+UQ.LAHW(K`6Z.L51M;L&Qf,L[U'!
+M>N21M#`A0LB*/0MYi;?N/<"1H?sjPDea',FT,YK?XE_;!aK#:p0@T$!F/k,>l@n+=p8/8>?kB9
+r`K2'"'Sr6>Q.h*=TM]1rE9J0>$4s0=]eg/r`9##%9?P2<E<*u<EPVa9VJ0XT`(PcU7n:QUAq"a
+V#R:cVYm=mW2]?fs/Z.!ri>prri?"!riQ4%!3Q1#s/l7&"0\u7ZMUs0['d=@[f3c8\/Moh]">VZ
+Vk/utH?sda^7gU9H[L$gTVB$!X8K+&GBeCYrd+Tk!.=cos*artrdY$#K)UB+KS>/8LPYqdE/KR4
+N/`mZOHG]hPE_>uQ^F/.S"#q>StD[LU8+N\VPgAlWiN8(Y->.9Za7'J\%&u[]=bhl^VRe)`5Ta:
+aN;WKbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4$,mdKW6nac8BoCW%T!quB_rqQNh
+s8)Wirqu`no_sFAJcE7[J,~>
+JcC<$NW8JHqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!UK%LNW5%=NW"h9MZ\fl
+LPGb]re19'r.=p!s*t0#J:RQIrI4cpqgSNmpO"0"AlWVY<-NA#BOkgkJUrE%I!U+&P*(fdNf8p"
+?@6I)EcpYml?N#JqKi0g!.=WkrdOlqqgSQnqgKV^:JQ(UF)c/:D/3p"An,7Y@9m2E>$>EGA7K.^
+A7fBOAcQKC<<?,uM#N20Ka3?dKS+r2JqErPs*kZ1I"$NlI!U-dBQ8*KCi=64FF!h3rd"QiqKi$a
+s*=ZjrHS?ds*"Ebqf_j\s*4Hcqfr!`"F>?<G^974rd"Edq02j`!I&_cFn9\LFT6IaFE78""E\d/
+FERJ&rcS6_qK;g[rcJ3arcRsYm<AGP#^LT4E,TW1BP%0Q!+l(+rDESm!)`YlqbdAk!`MrorDESk
+s&&blrDEJhs%`Yl;>X2h:B=3drD3hu:esh_:JO\^:Jh!c!DZJj:B+#m9R'&sLPUccM#`A1M=ZT)
+M=ui,Msu\sNVJP2NW+t:O8b7@NrtK)OHBC&rK@/Ds-3/>qN;VXP)b9EEG]N.E0u<&E,BE,E.NV#
+LP>YZ"*]!8H2`-iHN8HmIK+`rJ,Xs!JV*lR"b_SaL51TaM/\?1N/WaWO-#KeP*;,qQC!u+R@B\9
+St;RITq\<XV5C/hWN*#$Xfen4ZEpmF[^WcW]">Vg^V@V%_o0O6a2lBGbKS8Wd*^:jeCE.%f\,!5
+gtgiEi8N\Uj5f@bkNM0plKdg(mdBQ4nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?s+13[s*t~>
+JcC<$NW8JHqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!UK%L<;ol"<`N1%r`8nr
+r`8bns&Atr#?"K!;GpFm<;fbq;YsDl;YO#t.jur&/MK.B1b^R=1dh7-r]^mVP*(fdNf8oe8k;ZR
+;,d9i!)r\krDW_qr)3Spr`/qsp/CrioMbE\r_rbnr)*;g+#Pi15!;"i3]]8[2`<QO1,:O:0J4q/
+1G^mG1c@0J1As$54$5Se4A#NEr^d5`7n-!=r^QfS$q<WP6UX@05sR:j1J.RC!*&qqs&/nqrDE2b
+pf%2js%rborDN\oqc!Mor)<Jls&K"s"BAE";cN]or`&kqoi(uj;,R<k!Du\l;>sJm;>sJh;>sJh
+;?'Pj;=[WU;u]bn;#aAm;Z'Al;#X8i;#=)j;Gd<i##nSr92%rHrAsm=!B`OD4T@M@4:XP<4?Pbj
+5<h:p5!;(n5Q3kH56*nH4o[\I4[2.04oIJG4[)(o55mbJ5sRa85QjD>5sI[75l3bN5!V7q5Y4!q
+r`Antlrj?jr`B&#qH!Z!rE9/&kummcr`T2'r`fD+!aAi2r`K,%r`K2'pK@W$=BPQ(s&T,!'NA"0
+='8X(:JOV[9j^mq:Ja\Y9N;!iqbdN?G^4T6HN/<lI/\QoIK4lsJ,t4QrdtB-Knb>;M#N6MMMmFP
+NK9-^OcklkPa.Q$R$a;2S"-(AT:hmPUSO``Vl6SpX0&M,YctF>ZaI6N\@K2_]Y2(p_8=+.`Q#s>
+aihlOcHaeadaQ^rf%8R-g=tE=hV[8MioB([k2tjjl07L!m-X6/n*fc9o()DDo`"Lbp@n=\q#C0i
+qYU0hr;HTdrdk*#s1&)Z~>
+JcC<$NrSSIqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO#4(R>l*7Isrild6YH=q.
+XK/=uV>R(eU&UecTDb>aSXc.:RJrTRQNEJ>QM$O@PkpRfR#?W]Knl:hRZ3,aNKL<DVl$8aTpq=/
+O,f3Y?=n"qH@UeCNV\\5NU)Q#NVnh8O8k=AOTL]0PPg[FQ2[*CQ2['i?X$d+SXGe/PEM#eLk^S9
+JUi5sG]e1\Jq\i3KnfS\s+UN1raQ+=E4!!Y[/RB:ZEpj?Y-+h,ri-!sVZ!:iUApnnQ].H@H@:9s
+L6MP"s,mDFOSFk>NfT6]NrG%<N;ne=MMm@LM>W53Mi.IkqhkE1#)\=sN/WaVr/^l>!0-r9s,./A
+NJrgSMMd=LpPJp)s+^W0K`6W(K`-N'K)UE&JcLH$K`?c*L]<,-L\li(Ka<?cL4t>:LPCQ^L]<2/
+M>`81L]3,0M#`A2M>E)1M2;(b!/^Z4!/gc6rf$u<L40#H$"n<oCN+?&?sd7>?2n.0?2e(/>P_V(
+>Q7q.>Q%h)>Q7n*>6.u4rE'2*>$P99r`];(!a8f4r`TS1>$>$1=]nj/r`9##!*B,"##nN#=GBXG
+r1O%_s.]OeoV)>\pn[qdrh][nqkj:h!N<!gWWK6$Wr/ppWrB'uXST'sXT,F%Xotr4Z*L\4ZN7G@
+rO2[6*k8bk]">Sf^pgPBSVDT=H[C[<UOdf=G^GFHWNNA(r3$'E!."Qis*F`nrdFfq!.Xuu!J,k%
+K6)^"L5(J>M2@+JN/WaVO,oBbP*2&pQ'Rc(R@9V8SXuFGTqS6WUo(&fWN*##Xfek3Z*L^C[^N]V
+\\#Mf^;%J"_Sa@3a2lBFbKS5Vcd:(feC<%#f@em3gtgfCi8ESRj5f=ak32'olKdg'mI'H3nF?MK
+!V>s_p&F^cp\jmeq>^<hqu-HlrU^#>s+13[s*t~>
+JcC<$NrSSIqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO"7,7;l2H\BNW>(;N;ne=
+MMR%BLAlo+K`-Q&JcgRUJV!`LrdOrtJ+S3iIJ8+5EFiQo@qBe'DeWctC2e`RI=-<cG]dqdO,f3Y
+=C#EMCiFUcGlW*fH0TYKH22afH[L5;IK"]qIJeQoIJeO::JOZ,FE;DAE,KQ/An5F^@UNMK>[(BA
+A7]:_AS,IaAc?<@<<?-(M#N20K`Qp^rIb6'Jq3iOs*kW/I"$KkI!^3YEHRF]Df9`?HMDj_HMVpe
+H2r6iGlN!fFoZ[_Focf1rce9br-/'`qg&3f!."Ecrd"Kf!I8qgG6`A:GBe@VGBWt.!-IgRpiHX]
+FE;JCrcA*]r,r!\#'G$0F`heJrH/*`rcJ3_rcJ3arH8*_r-&-ap3-L]qfhs_rd"Nis*4upE,]`5
+D.R6gARoBN;Z'Ar;Gg=i;,U<h;?'Mp;c<Njs%r\lr_WPjrD<Mi!DlYj;#X5k:/Cgb$;jVq:/Fb^
+:/=Y^rD*Gh;#X2o9hnB!84SL4M<9]qMsu\tNVAJ1NW5%;O8+h7Oo1CBPQ$g?PPC:XPa@PqMhZFo
+Ci+$5JVJ/^D/3s2K85;<KD^E&GQ<$gHN/<lI/\QoIK4lsJ,t4Qre#9FKnb>;Ll$tGMi<USNfT6_
+OckllQ'IZ%R$jD4S=Q7CTV8'SUnjlcVl?\sXKAY/Yd(L?['mEQ\[f>b]tV7s_8=+/`Q-'Ab0/#R
+cHjkbdaZdsf@S^0g>(N?hVd>NioB+]k2tmll0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6Hj
+rr)HfJcC<$\Gq'~>
+JcC<$NrSSIqu-Hjq>:-erqZHdrqHEcr:U*^rq$*Zs7--YrU9dS!:BaO"7,7;l2FZ^<W?)"<W#np
+<W?+n<<-"q;Zouq;H$Qe;u]bi;%P9--nd&%3ArcN0JYFJ69md756!\P3foD_NJpA!92&/[p/M#i
+qbmDlr`&hps&Attr`&Sis&ASgohtcfr_iVjr)*SR1c51p"?SY*3B-mp#rFCk0/,"1/i,<^2?,K5
+1As$54$5Se5"Y`Gr^d2_7n-#J7KGqIr'^TRr^-lZ6:!7f1f+*J!`W&pr_`_pr_i_mo2>B_s&&nq
+;H!Hl!)iepr)ESmqc!PqrD`esq,@8lr_rYm!*0"t##eDs;GpFkqbdAkr)!Glpeh&h!`;cjr)*Ai
+r)*#_nl#Qe;>a8j;$Bip;,C+erD3>gqbdJm:f73i##e8i9MJ/Kr]:!>q`Om?r&k!Bs#^NL5!D1p
+4[)%.4odhH4pO;95!;%m5!Am/s#p9B!BraG4pXG>5s[b$6:!p75l<hP5!V7p5Xman=8H%b=oVV'
+=8l=u=8uD%=oMOf=o2>$=oDP#>6.o1r`K/&rE'&&pfdZ"s&]>(<`],u)H9X6<`N:(<_lIb9hS>_
+<)-+`9h\A`;c?Xlr)3Q>!."Qis*F`nrdFfq!.Xuu!J,k%K6)^"L5(J>M2@+JN/WaVO,oBbP*2&p
+Q'Rc(R@9V8SXuFGTqS6WUo(&fWN*##Xfek3Z*L^C[^N]V\\#Mf^;%J"_Sa@3a2lBFbKS5Vcd:(f
+eC<%#f@em3gtgfCi8ESRj5f=ak32'olKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HlrU^#>
+s+13[s*t~>
+JcC<$NrSSIqu-Kkq"t'erqZEcs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rosHes0;U.#d1;3
+XK/A"VPO0brLj:cT:c%Q!M,_ZRK&ZRQNEJ>QMm'KPkgUCPl$XgSr88fLP;FoQB-cZN/asCWMcPf
+TUM44O,f3Y?=[tpIXm1ANW5%:NTuK"NVeb7NrY:@OTCW/r072Gs-EAD*L:#:?<s1oR[08$OcYT[
+LP1;/J:N#lGBe[jK7o!YL&Zl7LPUdr@q/l.[C!:>Zk0RL['Hp=Y,eV'Wi;qmUSFXaUC3cDTU`E:
+H@^d*P*>d-s-!JGOSOq;OSt4?NrG%<N;SV3M?/Wmregf7Mt`,/MZSlsNr>"AOH5KaNW+n9MuJ\;
+N/NSmMuS\2M$JilL51M;KS02Urdt3(r.Fp#s+UH-s+^E+qM+s&reC9)s+g`5MMh@hs+pZ0reUQ1
+s,-Z2!/gc4reLQ3rJUZ4",i+tNW+kFNIlS*H?jdPEbfQ38Gc!Q9)M?^>Q%e.?!LY4>Q.e5>[(E;
+>?P*2=BSi,>6A&3>$Co.s',G*)-L-F=BSd/=BAO(='&L*<EE4%<)Z^rG>:m3T`1VdU7n:QUAq"`
+U]@7iV?!OlVYm=mW2]?fs/Q."qlBUori?%"qQ9[s!3Q4&"L,/9ZEjA6!OT96[f!TW\@K2^]=Yen
+`5o*^TpUI[G^=b*TWWfmI!0t*U9CVtWr0"#G^9:7s*F`nrdB6EIt*!!JUrE*K7nr4L5(J>M2@+J
+N/WaVO,oEdP*;,qQC!u+R@B\9St;RITq\<XV5C/hWiE,%Xfnt5ZEppG[^WcW]"G\i^V@V%_o0O6
+aN2KHbK\>Xd*^:jeCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?PLs766_rq-?dp\4X]
+!;ZWjr;6KkrVcBfJcC<$\,Us~>
+JcC<$NrSSIqu-Kkq"t'erqZEcs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rosHB!KN0;N!5,s
+M26qBre:?)"+u8ZKDpH*JV&K)Jc(&tIfY"Jr-eWoqgSQnpO"0,AmoUg@sN69CLq0oCP%+eI<^'\
+FE2>:NfAuu>@M5^EHUYos*4Qhk]lfHq0E'gI//3jIfFinIK4fqILo=N:JQ(TFE)>=DJa0&A7T0K
+?iXO4>QSDGAGg$:B)Yd3<,m`nLED8)L4t;6K7ni.J:W9$IsufoIsl`mHsq8BPAG/VFa!_2q0Vm_
+qg&3f!."Qgrce9`!I&_dG62r3GPl^aGPl^bH2i0mH$Xa]qfr'bs*4Ngs*4Qfs*+]kG^+FVG5cUd
+FE;PGqf;g\F*%+urcJ9aEcV/#s)e'Z!d&R,q/l[\rcJ6`Fo?L_Fo?L\GP67]H1uR`H2;gqHZO.E
+DJa9(AS#@^8Gc!Q9)M<b;,U=j;Z0Jl;#aDl;#O8i;#a>i;#a>j;#O2e;#X5u:ejb]:Jak`:JOY\
+r_EJf"&*/p8Ge8+M?&S(N:W&'Nr+e9Nr4t6OSk7=P5gaFPk^I8OrBROR[oV&M1B\dD/F3@Ko0he
+DJF$9K8GA;K)C9&G^9:7s*F`nrdB6EIt*!!JUrE*K7nr4L5(J>M2@+JN/WaVO,oEdP*;,qQC!u+
+R@B\9St;RITq\<XV5C/hWiE,%Xfnt5ZEppG[^WcW]"G\i^V@V%_o0O6aN2KHbK\>Xd*^:jeCE.%
+f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?PLs766_rq-?dp\4X]!;ZWjr;6KkrVcBfJcC<$
+\,Us~>
+JcC<$NrSSIqu-Kkq"t'erqZEcs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rosG^s&Jnrm8X-c
+qbmVq;,U=lr)3Snqc!MmpJE(c.O[&'/3,[J2)$dA1dXPp5<_4n3BK2[NfAud84lTQ;>sMh<;]\n
+;YF&h<;oni;uTbg;uBMn;>O2j;uKVk;?'Po2%h]%5!;%j3]]8]2`<QO1bgX90`E^)1]K<32>o?;
+2)I-P4?GYm8cD?]8cM<^7S!GI#=V*N6q0U57K,[^7RA^k1JgqF;H$Hi;?0Yp;?0Sa;Ya8h;YsAo
+;H$Nl<;fbq<!lW)<)lps;cH^r<;KPl<<#np<!-&u<)ros$WBr$;,L4h;,U:h;>sJc;>jAo;,C*e
+;>O2i;=d]V;u]bl;#jMn;?'Mo;>sDi;>X8j;%-?!;,C.g<_l@\8kV_P8bYjT9E.-S4oR\G4TRZ.
+r]UZP5!D1p5!;%m5!Am/s#p9B!BraG4p=5;5X@Y#r^$EHrBL9Hs#gHL76*F+=R92j=T)>#=Sc)!
+=T)D&=Qiob=9)M%>5DG*>$4s0rE9,%s&o2%r)j/)='&F'rDiks)cK^:='8[0=B/'l9MS;\;ccak
+9MJ5W<)cpt:]+)kG^9:7s*F`nrdB6EIt*!!JUrE*K7nr4L5(J>M2@+JN/WaVO,oEdP*;,qQC!u+
+R@B\9St;RITq\<XV5C/hWiE,%Xfnt5ZEppG[^WcW]"G\i^V@V%_o0O6aN2KHbK\>Xd*^:jeCE.%
+f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?PLs766_rq-?dp\4X]!;ZWjr;6KkrVcBfJcC<$
+\,Us~>
+JcC<$O8n\Jqu-Hjq>:0frV??cs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rojIIYl:m7Yck12
+XK/A#Vkp0eUAgkdTE(V]ScbLOR@4&As-N_NrK[AHqN^uCr0&:bKp@UNAXo0PMN<aXY,nY$VPTuX
+R?WhnMi(kMBlSKJK]\9[N;JV3Nr4qAOHGZgP*>g.s-<SLpQbbas'@+FSXYq0OHGZdLkp\6J:`5s
+GBJ.]K7nu7Knb87Ll$qE@UinS['d9Irj3*?ZF$pAYHFt-WiE%srM9Ig%AIHs_ROl>Jqf/GOcu"*
+PQR,4Oc]L%rfI)>s,R)<!0$i6r/1H2s,$f7re^]6r/1N4",r5!NrG+<O9(B$rf$l8s,7)?N/`dR
+rJL`7M2;%c#)J%iL4t;5qLep&KS9>Wr.G3-KnbA=rJ(B/reL6&s+LN/LPGb`!JcL1M>`>2M>rD2
+L]<20M>rJ/MuJS9M26tEr/:Q3s,?o9s,ISMOFhk)H?a^LEGKN78P/YKqb-i\qb7&qr*02)$X6k?
+>?kB9=]ea.>5h_.>$5$4r`K8*>Q%b*=oVV(=TV].=T2>3='/O(=B8I&<)Zb1Zqm?grhBFdoqMJ]
+pn[qdrh][nqkj:h!N<!hWq`XkWrB'uXST'tXT,F&Xp)#5Yd(I=qQg=3[C*HOr3ml[\[oAa]>)/"
+aj/A?Vk/rtH[L'kS?@g!H[BpaTVK*"Y,qQ(!."Qis*F`nrdB6EIt*!!JV&K+K7nr5L51S@M2@+J
+N/`jYO-#KeP*;/rQC!u,R[]h<St;UKTqeEZVPgAlWiN5'Y-5(7Za7$I[^`lZ]=bhk^VI_'`5T^9
+aN;TJbg"GZdF$CleCN7'g"P08h;-rGi8N\UjQ5OdkNV6rlg4!*mdKW6naZYM#kR]\p%A%Pp\4[^
+s7u]kqtpBjrVcBfJcC<$\,Us~>
+JcC<$O8n\Jqu-Hjq>:0frV??cs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rojRLNK0!XrJ^c7
+#)\4lLPCM:qh+s%qLS]ur.+crs*artrI4`orI4`opO",u@W,mh;KZtsB52-rK7JH"H?saWEc5i2
+BP:FO@:a7pFR=A5GkQFZHN/<lI/89jIfFioIN<icIS`d8:3L`$EH,l6D/<ir@prhU?s[)A>[q;U
+rFQ4DAS>^gB)Yd5;i$6bL])r3KnP,3KS"jUJJ3Q`IXQZoI!p?>EK,ilDK'cCI!bg>pj;g_qK`*e
+!dT$8rce9`rHJ9bs*+Bcr-/-brH\9dr-80c!d]-:rHSEgGPl^cGQ2jcFTHT*rcA-]rcA6`FEDU!
+FT-F]ErpH)FSKt[G'.p'FoQX`Fo?L_Fo?L\GP67]H1uR`H2i3gHiAC%I;s4EDJa9(A7K+^8P/YK
+qb-i\qb7&fr_WVls%rVjs%ien:esmb:]O;j;#O2e;#X5u:esh^:esn`:JO\]rD!Pk9N[3CM2C>O
+s,6B*o8WO*qi(T9qiCT8qiUf>s-*GHqNLN6)jQbXSYN*HNeMh"Df0E5IuAGfD/<s)JqK#<L\l`)
+H2`-iHN8HmI=?WpIt3'#JqAW-KS>/8LPUbCM2I4MNK0'\OHG]hPEhE!Q^F20S"-%@StMdNUSO]_
+Vl6SpX/rG+YHY:<Za@0L\@K2_]Y2%o^r!t,`Pom=ai_fNc-FY_dF-Oof%8O,g=k?<h;7)JiSrnY
+jlY^gl07L!m-O--n*fc9nc/.coCV\Jp%J+Rp\ssfq>^<gqu6NlrUg)?s+13Zs*t~>
+JcC<$O8n\Jqu-Hjq>:0frV??cs7cNdr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rojOK<)lro<rQ)!
+<:Nrg<;]Yt;Gg:h;Z'Jm;Z0Pn;YO$(.O[&(/MK+@1GL[A1dXMn5!M1m4$#A"2@2iD8ki#X;,U:j
+pJh/k"&r2t;Y*fh<)lmso2GWfoMbZc!)`Vkr_reoqb[u(2E!?I5!;"i3]]8]3&WZP1,Ah_r\"4,
+&iDI%2)R3I2)I-I4?PYd8P)NHrCR#[)b*=f7Rom:77B[76Ua@1778Xh5YFpM;H$Fj;>!fe;t<i`
+;u0Dj;u]_q;u9Pn;uT`&<E)pt<)Z^p<E8fm!*&kpr`&kq#?4]&<)Z^n;Z'Dk;?9WmnkoBa!)`_l
+r)*;gs&&Acnl,Ncqb[>krD<Sn;>sDi;>*of;[cQ$;,C1g:eOAP9h@qN9)D9Z9`%Nc4Zkk+56!bT
+5!M7q4Zkkk4Zu"n4[&^*r]U<Fr]UWQ5X.P"5X@_&62X"H5Q="K4pF/76r#^D=R'&h=T2D#=Sl2"
+=T2J&=Qruc=9)M$>5DG'>5DD$=T;P&>5MJ%=T;J&<rH#?<)Z^p<EE=/@9Qf7;,C"\:/FYd9i"S\
+:/+\d;cQanr)*N?rd+Tk!.=coIXZcrJ:N3&JqJ]/Knb>;LkpnEMMmFQNfT6_OcklkQ'IZ%R$jD4
+S=Q7CTV8'SUnjlcW2ZetXKAY/Yd(O@['mEQ\[oDc]tV7s_SX71`Q-'Ab0/#RcHjncdaZdtf@S^0
+g>(N?hVd>NioB+]k2tjkl0@U$m-X60n*ol;s7-Heo^qhLp@e7TrqQNhs8)Wirqu`no_sFAJcE4Z
+J,~>
+JcC<$O8n\Jr;HQkq>:-erqZHdrqHHdr:U']s7?3[s7--YrU9dSs6]gP!pf.:rok!XkNB+TYct73
+XK8J&Vl$8brhBCcs.KCar13q[S,SiUR/`NOQMm*IPkp[CPl?jkQA]I<L2*KPR#Zi[NNK@cVl$2_
+SsYh*NfAp]?YOJ)H\.6;r/L`:m>^Fjr/LT6r/^l>s,dAGPEYp/s-<VMqNWCnQ$Z_?>b7LUQ^!Vq
+OH#'QKn=l,I!^']G(YI%L4t>7KSPD?Ll)+?!ai=Br3Q^8ZF$pAYHFu+WWK/uV>R,"Tq&NVH%1F#
+N09?dOckolqiq,E!KiKBO8k:LO-#EaOH5H_NfB$WqhtH2r/:H0$B'e"MMd=MN/WaUrf@#>"HSS'
+NK*pqrf$l:!0$l7"H&%mLktqb",DVbL&6Q'K`Qj\r.G</KS5&6L51Q_L]N9erJ1?+!/LE*reLE-
+s,-i5regZ2!f2VerJ:B/p59$1M2@,gMuJS7Mi@Rn&<;g6OcklYI=$?dF)c/7DftnKqb-i\ohG?Z
+s&on;>?b?:>$4s/=]np5>?h)1r`K8*>Q%b*=oMM*=]eg/r`0/'=BAO*r`02&;cR#-:]@'gU%G)Z
+U\LVbV>[7kVu*@hVZ<^fWq`XkWr9!uXST'sXT,F&XoP[)Z2_-+Zi@B6[C3OA[fO"Lrjj/_^VRn2
+cdUUVY+_D@IX6BmOeSe*I!^'aKqkTOX/l-#rd+Tk!.=co!IfOtJ,t4Qre#9FKnb>;Ll$tGMi<US
+NfT6_P*2#nQ'I]'R$jG5S=Q7DTV8*TUnsrdW2ckuXf\e2Z*L^C[C3QT\[oGd^;%J"_Sa=2`lQ6D
+bKJ/Ucd:(fe'uq!f@\d1gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]k
+r;6KkrVcBfJcC<$[f:j~>
+JcC<$O8n\Jr;HQkq>:-erqZHdrqHHdr:U']s7?3[s7--YrU9dSs6]gP!pf.:rojRLkN@kbrJ^c7
+#E"@nLPCP;L&6N'KDU6#Jc(&sIfb(KJ,OirIJnWmIK"WoIK"U;DIc^]@odhoE,&irBnCnfIXHEc
+F`MJ<Ch[O#>$kiUDfb8jiHY'AqK`3iI!kd=s*jrqqgK\n:/4N,F`_VBDJa3)B4b[a@UWSL>[(EC
+A7fFbARo=`BDuNB<<Q9WLkgfbL(/iiKS+r0K7ST*J:N)srdG<)HZXsgCN"08G^OmcHi/9eHi86j
+HiA<mH$Xf9H2`-iH2MmcG5QR`G5ldbGl;jcGl;pcHN/?lH2i-eH2i3hGl`/6r-80arH8-^!-A$Z
+!-S!WrcS3^!crI*qK2d]rcJ3aq/uUYs)n<arcS0_rHImYs*4ZjH$T=4s*=WjqKi3irI"p"Ec>r8
+D/<kaAH69;9)D9Z9_D-X:B+/h;?'H!:Jak`:Janb:f%'e!DcPk:]4*$;,9t_:esh^:esn`:JO\]
+;#X2m9h\<?8*,U.Msu\sNVJP2N<#"9O8=t8Oo:IBPPpaEPOXeVPEhK'SYN*cP`^iXG&M;8Dgd=n
+EH#f3DK:AaM21q\rd+Tk!.=co!IfOtJ,t4Qre#9FKnb>;Ll$tGMi<USNfT6_P*2#nQ'I]'R$jG5
+S=Q7DTV8*TUnsrdW2ckuXf\e2Z*L^C[C3QT\[oGd^;%J"_Sa=2`lQ6DbKJ/Ucd:(fe'uq!f@\d1
+gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVcBfJcC<$[f:j~>
+JcC<$O8n\Jr;HQkq>:-erqZHdrqHHdr:U']s7?3[s7--YrU9dSs6]gP!pf.:rojRLkN>iFqH!Sq
+s&APh!*&ho!)ien!)i_nrDNYor)3Mks&/hn+tG&l0.\h=2)?p>1G_<`5s[_!4ukYb2`EWO1J(24
+:f1+hr_`_poMk9Xr`&Jfr`&Mgohtfgs&&kp;Z'B+/Mo:>5!;"i3BB,[2`<QO1,:O:0E*R-1GgsF
+2)Y@i$oKju2*F#^4%W"991o1Ts%",!7n6$=77Ka87RTU36UX@21d=N+;,U@l;Gp@hohkcgrDEVo
+pJUle!E)en;Z'Jn;?0Ym<;ohq<;fhq;u]hr;ZKeq;Z]iq;Z'Gs<)Z[m;cEZpr_rbms&&horDNYm
+"B&)o:f.-g!)WYlr_i_m!`2`lrD<Vo;,R<js&&Acr_rhpo2GN`!)iens&/\joht]d$;aSs;c-If
+91qrGqF^WXr(QcXr(d8Ts$$cQ4Zkkk4Zu"nr]U3B"$Jh34oRVI5<qG!r]gZS5s[b%5X>63s$-cP
+5<V4t9fhTCs&f5$r`K"us&f8's&eMgqcEi$qc`i#!*]2$!*K5'rEB&#r`K2%!*9)!*EH0>;GpIo
+='8g;AQ`2?<)?=`9hnVc;,C+`9MS@^;u'>jHN/<lI/\NpIXh?I!J,k%K6)^"L5(J>M2@+JN/WaV
+O,oBcP*;,qQ'[l*R@B\9SXuIHTq\<XV5C/hWiE,%Xfnt6ZEppG[^WfX]"G\i^VI\&_o0O6aN2NI
+bK\>Yd*^:jeCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<h
+qu6NlrUg)?s+13Ys*t~>
+JcC<$O8n_Kqu-Hjq>:0frqZHdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[Mrok!XkND!iYct:4
+XfSS'WMZPgrhB@b"/)9YT)>,]S!ob5rg<_Pr0IAJrKR/Dqiq,E,*e"8Ob/4ZR[9(kMN)8NXf/1o
+U7dm@P)t]^MSj(DFaJ^urf6u;rf6?)m#:h$qi:T8!0I2B!KrZEPl?pJQMHd^HsL#_T:D@;P`q>p
+O,/UGJV&H%H[0gere(?,L5,\]$&==nM.0n%EjW7P[/I94Yck42rMg@*V5'l_Unb<-PBqY/KoQ%o
+s,dAGPEYj-"-\k/OT(:@OSt7?OT1@ENfT3[NVeY5MYrD2M?/WmrJLl;N/NXRNK4"!rK.#=s,@&<
+MuJ\8N<"q9MuSY7M>i>2M#`G4M#`>1L&?T)KnfS\rIk3*!JQ:,L\ci(L]<,.L])r-L\uu-M>E,/
+M>rA3L]*&,MY;u2Mi!:JrJUZ4s,6i8"-/G(Oo:ICP6l\bH?spRF`(u8r(?o\r(QcXqbHr_s'#M-
+=oMM+=^#'7>Q%b*=Tqu5>$>'4r`T8's&oA(r`0,&=BAT&<WuH$<*?P&ntH,Zpn[qdrh][nqkj:h
+!N<!hWqrdkWrB(!XSK!rXT,C(Y-5)/Z2_-+ZNRYC[C3OB[fX(M\c0/_]YD;%b0\\nip*hLTTk(X
+H[L@;X07&#J9ZU-V6-l$X8B("HN/<lI/\NpIXh?II=[!&K7no3L5(J>M2@+JN/WaVO-#KeP*;,q
+QC!u,R[]e;St;UKTqeEZVPg>kWiN5'Y-5(7Za7'J[^`lZ]=bhk^VI_'`5Ta:aN;TJbg+M[dF$Cl
+eCN7'g"P08h;-rGi8N\UjQ5OdkNM0qlg4!*mdKW6nF?)?oCV\So`Fj]p\ssfq>U6gqu6NlrUg)?
+s+13Ys*t~>
+JcC<$O8n_Kqu-Hjq>:0frqZHdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[MrojRLkND!ir/:f;
+MMd4FL]3&-KEQp\KS+pTK)^E"JGt&uIf=isIf=cpIenHmI/\QoHm*B<?Ya(ZG]I\;AnPj[Jq/;u
+H$FOSEc,`0BP3Q:@qfe$rcnKimWmc9pNcR\!IK4iI/n`qIJeNo?2dV4GB@kFE,T]4CM.3h@q&hR
+?<g_6A-Z[XA7f@`AS;!Sr`')/LkphBrIt<+rIbl:K7ST*J:E&rIXZcoJqeMdDfTuHrI"Wlqg8Ek
+I/\HoI!^5>H3S_BH?jd^HN&3gH3&;9rHJ6ar-/-`!-e<bs*+Edrd"Be!IK.kH2i3jH2W'hH22^`
+G6`;6G'.nJFERM'!-S*ZrH8-`!d/U,q/uRXq/uCSrcS0_rce9bo6L7Y!dT*<qg/KoI=?WnIJnTq
+EH(np"D;=Y@q>L0rCd&^ohG<Yq+q#f$;aMp:esk`;,C(br)!Ag'MqS%:f1%b:/Fb^:/=Y^:JX_]
+:/Lpbr_3EO8Ebs2Msu\sNV\\3NW5%:O8=t8Oo1CAPPpaFPOXh9P9-!UR\$=SYID60Ner7.E,BN7
+KntY,D/O--HA%-2L\c](HN/<lI/\NpIXh?II=[!&K7no3L5(J>M2@+JN/WaVO-#KeP*;,qQC!u,
+R[]e;St;UKTqeEZVPg>kWiN5'Y-5(7Za7'J[^`lZ]=bhk^VI_'`5Ta:aN;TJbg+M[dF$CleCN7'
+g"P08h;-rGi8N\UjQ5OdkNM0qlg4!*mdKW6nF?)?oCV\So`Fj]p\ssfq>U6gqu6NlrUg)?s+13Y
+s*t~>
+JcC<$O8n_Kqu-Hjq>:0frqZHdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[MrojUMkND!i<Vfbq
+<W5tk<W#hp;ZK_o;$p3"<)Z^n;Gg:h;u0Al;>sJn;'@G<-nZu#3AiTL0etOE6UF%&5!D"g4#T#V
+2)[rr928>]r)3PnoMkih!*&Mf!*&Jes&AVhr)*MlqGI;lrDNSk(+hC#1Hmr`4$#G`3B/oT2)6p@
+0J>%1r\G`U1c.'H1c%!G1c7EX3^62-8kVcJ8OuBB7S$'?7n#j977I2D#t%*K2`jN*:f10h;ZBVo
+;?Kco;GmBjrDW\n!)rViqc!MlrDNPls&&hqqG[Sr<)cdqr`&qtq,@8ls&8qq!E2nm;u]bp;u]hr
+;ZK_p;$'Wm;>sJm;#sQlr_WVls%i\mrDNMi!)iens&/kor_ibno25QerDN8ds&/Vh!)iVioMP]g
+;Z0N#;,C+f;bp(Z8kf.TrCd&^ohG<Yq+h/X4Zknl4oRYF4o@GB4odbE4pF8:5s[b$6N'4M5l<kH
+5R'D;4[)/-3pg&M=T)>"=Sl2"=T)D&=R0,d=T;P%>5;D&>5MG&=Su>$>5MJ$==RBQ<`N.#<`E!q
+;H-Xt>$bZMCi`c`=B/-o92JA];,g:c9hnGZ<Dusu;>X8kHN/<lI/\NpIXh?II=[!&K7no3L5(J>
+M2@+JN/WaVO-#KeP*;,qQC!u,R[]e;St;UKTqeEZVPg>kWiN5'Y-5(7Za7'J[^`lZ]=bhk^VI_'
+`5Ta:aN;TJbg+M[dF$CleCN7'g"P08h;-rGi8N\UjQ5OdkNM0qlg4!*mdKW6nF?)?oCV\So`Fj]
+p\ssfq>U6gqu6NlrUg)?s+13Ys*t~>
+JcC<$OT4eKr;HQkq>:0frV?BdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[Mrok$YkND!ijlN\J
+XfSS'Wi)bkU]."fU&L\jT:VXFS=H.?Rf8`TR/`NQQ2m9MQ2m3LPkgU@PTucZJsD1KT:;41Ll7:S
+XKAG"Vk]uWQB@8gMMhG/P]V5&Ll_:jm>^Ikqi1H4rK$u?rfI5EPPg[FQ2d0IPph&e?<j(oS=,\,
+PE:l`LkLA3JUW&oH%^d&KnkJ>L5(J>M2@+"@:=igZid_C['T_:"L,)4XK2?#&#Z8!V50r^RuM]@
+Jqf;KPPp[DOTCW/q32)GOH>NaOHBI&rK.#>!fi8"qMYB2!K2p9MuS\1Mu8M:NK9-\O8b4@O8b.>
+NVnb7N<"q8M[PE!LkpnEMMd7HLkkt`r.P!&#_dqbKnkD;LPPhas+gQ/oS<I$r.t?/qMP0,reUT2
+rJCT5pP]*1re^Q2s,-i7!0$l:!frG*rK@2E"-f"6I/\HrG\_;:CioVKr(QiZqbHu`ohbZj!EiV*
+>6A&3>$Co."C#&5=^(f-s&f;(s&]8&r`9#"#ZXr,<`E!s=/YYapS7ecrMBRmqkj:h!3,Riq5a:j
+ri>dqr2^%'Y-+t4riuL/qm6=0s0Vj8r3l^:\c')`]thJ'b0\\pj6Q:3Z)++PJq&/pLml&5IX69b
+I\!7AXK8K"XoiusH[Pg@!IfOtJ-CLUK7ei2re><GLl$tGMi<XUO,oBbP*2&pQ'Rc(R@9V8SXuIH
+Tq\<XV5C/hWN*#$Xfnt5ZEppG[^WfX]"G\i^VI\&_o0O6aN2NIbK\>Yd*^:jeCE.%f\,!5gtgiE
+i8N\Uj5f@bkNM0plKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrUg)?s+13Ys*t~>
+JcC<$OT4eKr;HQkq>:0frV?BdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[MrojXNkND!ijlQK#
+s,-u:M2-lbLAuo,KDpN(KDU6#Jc(&tJ,auqIfb(IIJnWfI3NcH?Z'IdGB@e?AnPgnJq/;uH[9jY
+EGfW/B4oV@GA(i6G5HUSH/NrBH22aeH[P[<s*jrqrdFiQr_F>RGB7eEDf0B-BOt[a@UNPN?!LuO
+AS5ZTAH?CSral.Cr`',:LkphBL]3#.L&HZ*JqO&R&:f7ZI"-ToGBn=GDfKoGI!ts@rd4Qj%=<JL
+H[L3fH[:!bH[:#;H2i3jH2W$iH$K=4"aG67G'A31GQ2jcGPcUbGQ)jdH2DpfHN8BkH2`*iHi/3h
+H2DjbGPu[eF`VVHp2g@YFEIJ(s*"Ebs)\9aG5QIbG'A+Qrc\?cqfVUUrcS0_rHJ0aoQg@Z"*o3=
+Hi&0lI=?YEIK"ZtIsuidrbhsVAnPXaBDkL$9_V9Y:ARcY;#a>i;#a>i;#X5k:f%$d$;XDm:ejb]
+:Jah_r_<\o:/=VZ:/$9(M?&S(N:i/2N/dXnqi1T8rf?i9r/pl>rfd>GrKHc7s-"RjQ^XPBWNitK
+a3Km.LO*rYE,KiKP]^n]D/=-?K8bS@qLersH[C/>I0"eHrdY0'JqJ]/L&QgELPUeDMMmFQNfT6_
+OckllQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2ZetXf\e2Yd1UB[C3QT\[oGd^;%J"_Sa=2`lQ6DbKJ/U
+cd:(fe'uq!f@\d1gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6Hj
+rVcBfJcC<$[f:j~>
+JcC<$OT4eKr;HQkq>:0frV?BdrqHEcr:U*^s7?3[s7--YrU9dSs6]gPs6B[Mroj[OkND!ijlKM?
+<rZ1u<;'>i<;fbq;Z9Mo;H*Qo!E2nq;=d[!/Li,'/hK(A2)6j@1c.Ha5X%@pr]:NH3&``RK0Vk#
+:f1+hrDNVnnPfNf<8pgV<:j,^;ZB\q;AE&,;,Jo'1c%<Y4$,Ja3B9&Y2)I'Dr\4@)"uA"k2)I-I
+q_Sa>4Zb\k8P2TJ8kDTF8H)*\84Q2J7K,[[6UWgs7o)rYr_`_prDNVl"B&)o;GmBjrDW_os&8ko
+s&&bnqbmPo;,R9ir)3Vo;tj8k;u]hs<V]Sk<<#hr;uT\k;ZK_p;u]hs;ZK_p;$'Wm;>jDj;>sAm
+;GmEir_iVj!)ibm!`Dlmm8<p_qbm/er_iPh!)iVio2>Tc!)iep$W9o";G^4g:.n2O:&R`_9_V9Y
+:ARcZ:]NWW56!eD4T@SP4[)"m4?u+r5sR^562s1N5=#03r]pKH!C0BJ=oVV&=8l=u=8uD%=oVUh
+=o2>#=oMV!>Q7n#=oMV$=oMP'=8u>$<@:gI<)Z[n<)m"'?=IPaFF/RB>#nHs9M8,W9ik(c:/+GX
+;,gOr<)EHi"+#<@I/\NpIXh?I"bD8XK7nsXL2Md&M2@+JN/`jYO-#KeP*D5sQC!u,R[]h<StD[L
+U8+N\VPgAlWiN8(YHY7:Za@-K\%0&\]Y(tn^qmn*`5Ta;aND]Lc-FY^dF-Lne^i@)g"P39h;7&I
+iSrnXjQ>Ufkiq?slg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)ZjrVZWmo_sFAJcE1YJ,~>
+JcC<$OT4hLqu-HjqYU6frqZHds7cNdr:U*^s7?0Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D$g$HP
+XfSS(Wi;nnU]."fU&L\jT:VXFS=?%=S,SiUR/WHPQN*<NQ3*>9PkgU?PTc0DQ&LQ2SXGXtN/in"
+XK/:rUS43FP`^r_M0P91Ed`Imrf?f6mZ$Rlpl564rK$r>s,dAGPEYp/s-3SMr08[Y?=$j-SXc+7
+OctlhM2?n:Jq8E!H$Y0sKS>,8Lk^V>MM[4J@q&l/rj2d8['[1=Z5'XKYcb(.X/`1tV5'l_WfW*_
+H\$s0rfR8FrK@/B!KrZBPQI#0OT(:@OT(=>O9CW+O,f7uN;e_@MMmCOMi3OOMZ&G8N/NXQrJV2F
+NfT6]O-#HaNfK0[NW"h7NV\P5MZ/J4M?\onLPLV<L&?T(L&6T/KnbA<L5(K]L]W?fM>i>2LB*)$
+L]*&'MYN&-MZ/P-N"_)*M2I4KMMm@LMi3ORNfK0]OHKO*s-*DGs-="IIX?EhF`258Dg2+QpeCZ]
+qbQ`Yr)*Jts'#S/=^##.=Tho4>$5&.=oMM*=]eg/rDrr"#ZXu-<`E$s<LEHRpn[qdrh][nqkj:h
+!N<!hWqrdjWrK+"XS8jpX9>Z.YHY81Z2V',Zi@B6[C3OA[fO"LrOO8f^r"+7dFR.8m.1#Q[B-*l
+KReDtJXELBK7/,mIXn/j\ZN$9r2p-JH[C/>I<U-iJ:N3%JqJ]/Knb>;Ll$tGMi<USNfT6_Ockom
+Q'I]'R$jG5S=Z=ETqS3VUo(&fWN*##Xfek3Z*UdD[^N]V]">Vg^;%J#_SjF5a2lBFbKS8WcdC.h
+eC<($f@em3gtgfCi8ESRj5f=ak3(smlKdg'mI'uB#4V0Ro(2JFrq-?dp\4X]s7u]kr;6KkrVc?e
+JcC<$[f:j~>
+JcC<$OT4hLqu-HjqYU6frqZHds7cNdr:U*^s7?0Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D"6JU&
+N;e_;M26qBre:E,r.G'&qh"j!r.+crs*jlqrdFouIX^p;+_bD(B4XtaE,9-#C2/EPJ:DlkGB@nE
+D/3fs?ZhuSCiORrHiJBnH[:#,H2W!fH/j/HH2;ggH[L5;I/n`pI4]nR:JX`0G&q\EDJs?-BP1gc
+@UNSM>[1iNAS,LbAn>OcB4bdh<E<+?LkphBrItN1KS+r2JqO#Q%"E_RIsu`aF)#Q4FEme4!.Ffn
+rd4Hg"FGNDH[Ga<!IK.kH2i0jH2W'gGn#"DG^+FUGB\:UGBe=Trce-^rd"?ds*O`jrHeKjr-J?f
+"F,3;G^0+0s*"B`!-S$Xs)n<_s)n<arH8-`rH/*`qKMs_rH7dVs)n6_s*+Bcq0;sdr-A3b"*o3=
+Hi/9kIK+cqI/n`oJ,b$'G&VD=D/<nbAH6HB9__?[:A[iW;#F2g;#a>j;#X5k:f%$ds%`nq:esh^
+:esn`r_<GhrD!Dg9R,o]s,6B*o8WU,qMkK7rf?l:r/pi=rf[>Hr0-Z6s-"^mQ'[u4V5gf2_8ssS
+P`UfVFE2><Eds")EGo`0DJt,ZN/*1Br.G/uH[C/>I<U-iJ:N3%JqJ]/Knb>;Ll$tGMi<USNfT6_
+OckomQ'I]'R$jG5S=Z=ETqS3VUo(&fWN*##Xfek3Z*UdD[^N]V]">Vg^;%J#_SjF5a2lBFbKS8W
+cdC.heC<($f@em3gtgfCi8ESRj5f=ak3(smlKdg'mI'uB#4V0Ro(2JFrq-?dp\4X]s7u]kr;6Kk
+rVc?eJcC<$[f:j~>
+JcC<$OT4hLqu-HjqYU6frqZHds7cNdr:U*^s7?0Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D!p/KC
+rDrqu"&r2u<:s8i<;]\o;ZBSo;Z0Pq;c<Kip/3%a-o*D-0K:pG0JbLA6:*q$4Ztng3]K&W2)R$O
+;bg(b;Z9Vp;Z'Jb<<#qu<;ohr<9$pW<;9Db;?0Yp;ZBT8/N,F@5!:th3]]8\3B&fQ1,:O;0.nn6
+1,CdE1c7/g1^Gs%4?>i$8P2YT8HD=Pr^R&]7n6&H71)CM6SU_o:Jjte;uTYp;uKVh;>X5k;uTYp
+;uKVo;>sJi;ZTcnrDNSm!`W)spJh/ks&9#!<;KPk<<#l";H$Ll;Z'Gn<;f_q;Z'Gs;Gg=i;,R9i
+r)*Jj!Dubo;#F/k:Jgmbs&&hojAPnS"]A8u<)QWh;?'Pk;=mcc;#jMn;u]bq;[H5s;GpFk:J+8P
+qb6cZr(d,bnPK-\!^8b1r&k!Cr]L9G4T7PF62j.J62a(I5Q<tO5<_1o9Cc6b=T2D#=Sc)!=T)D&
+=R0,d=T2J&>5)8$>5hY)>5MJ&>528"=T;J&<YJJ6<`N*t;H$Op='Ap>BPqs>Jr0J1%ouP':J=M\
+<`;di9MS8W<;f_q;#F2nH@(!drdB!>It3'#JV&N,KS>/8LPUeDMMmFPNK0'\OHG]iPa.N#R$a;2
+S"-(AT:qsQUnjlcVl?\sXKAY/Yd(O@['mEQ\[oDc]tV7s_SX71`lH0Bb0/#ScHjnce'umuf@S^0
+g>(N?hVd>NioB+]k2tjjl0@U$m-X6?mfr:Oo()DDo`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s0hrX~>
+JcC<$OT4hLqu-Kkq>:0frqZHdrqHHdr:U*^rq$*Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D$g$I0
+j/oD`Wi;qpV>R%mTqJ'NT:VUDr0m_URJrTQQN3?NQi36MPkp[@PTc6JC6FBdSsl"'KSte%X0/G!
+TqJ$HQ'%&cMgq/2TmV9Br/^]7l](:jpPo*2s,[/@rfI5EPPg[EPlR-LPph&e?<j(nS!f\/PE:la
+LPLG4Jpi#nH\[?0L51YAKnbD@M2R7$@UZ57Zi[YB[/I94Z*:I9ri70AWMcSfUnj0uR!aF>MNF$c
+P*;)mP*(ojOckomP`q>qrKIJJOH>NaOT(=:O9(E%r/CN2rJU`6regf9Mtr;?NK0'[NfT9`O,f6]
+Nr=q9N<5-"N;eb7Mu\e6M?&M3L]<)-K`6]*L]<,/L]<,/LB3-br.tB.s,$c3p4r[(!JcL1LB<<i
+M>2u)M#iKjreg]5p5B'2MMhCkrJCl=N/WaVO,oBbrK@2E!1!PLr0Ib>H[0saCN=?1DG9h"r(d/c
+ohbB[q,.5s=oMV)=T_i3>$Co.r`B;)=]eg/r`9#"#Zb&-<`W4!<J^FE!2K@cs/#[k!2o^kr29Ro
+oW%_fpo=@ps/bprriH.%!j8`2rNZ@-r3HO5[C*HOr3l^:\c0/K]=u(ta3;r_hWF1rqYpL1Z)XL]
+K78;tL8h>GJUDliJ<Qe0YcXu'Y5`hKI/\P@IXcluJUrE*K7nr5L51SAM2I4MN/`jYO-,TgPE_>u
+Q^F20S"#t?StMdNUSO``Vl6SpX/rG+YctF>['d?O\@K2`]Y;.r_8=+.`Q$!?b0.uQcHjkbdaQ^r
+f%8R-g=tE=hV[8LioB([jlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhs8)Wirqu`no_sFA
+JcE.XJ,~>
+JcC<$OT4hLqu-Kkq>:0frqZHdrqHHdr:U*^rq$*Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D($4N:
+j,AnSMM[.ELPCP;KS4u2KS+pTK)U?!JGt#uIenQoIfFoiI3r`?<,6#EF`MG7@qTIUJUr5sG]n7O
+Df'9(BO?"JJ8K7JI!g9fI/\KmHLH+ZGl2jIGl2j_H3&A?q0`6lrd=cPr_NQ<rc8`lDej-'AS#@[
+@:!8G?=me\AnG]TAIN0`AnPaV<`O^,LkgfbL'33`K7nmVK)U<5IsucoIWL[%CiFH>I!pEjI=;$@
+!.4Tj!df<Ard=`ms*=Zlrd+Tiq0MsarcnHer-80apNZ[_qg/6g!IB%jHMr3fHMi$gGl2dcGR8S;
+F`_bKFEDYJqfMj\r,hs^r,i!_rcJ9cFa!\,s*4Qf!d8^/olg4T!d8d3qfqp^!.+Bbs*FrtI=6Kj
+I=;'Cs*aors*t'!rIG?,F)Z#8DJ!NnAS"R1:&Ica:\@QY;>F)k:esmc;#X8h:^^,r:JO_^:/=\^
+:f%'cs%iYi"&DWbD=<A^MslVuN<+utq2Y?3rf6r<qN1W;qNCT:nrj!9,a=R\S=ud[ZFdrpdFd@9
+P)Y?IFDl)8GD_<-EGfZ.DL-njM21q\s*F`nrdB-BIt3'#JV&N,KS>/8LPUeDMMmFPNK0'\Ocklk
+Pa.Q$R$jD4S"6.BTV8'SUnsrdW2ZetXKAY0Yd1UB[C3QS\[oGd^;%J"_Sa=2`lQ6DbKJ/Ucd:(f
+e'uq!f@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X60n*olHnd+jZo_%nNp@n=\q#C0iqYU0hr;HTd
+rdk*#s0_lW~>
+JcC<$OT4hLqu-Kkq>:0frqZHdrqHHdr:U*^rq$*Zs7--YrpTmTs6]gPs6B[MrosIH!9a@D"6JV(
+j8N*Z<W?#";cH`i<Vobo;uTYr;,U?k;ufkq;$'Qk;>3s(.k)u%/2B1B1G:C;1H.Wd5Wq4m3]fG&
+2[2,g5=e:?;"R]Y<;onp<9$pV<;KPc;B8\6;Gf#(1bq6Y4$5Pb3B&oV2Dm6G0J>+50JkRArAFU3%
+lH1#2)RNZ3_)b58kV`I8GG^R71D^Q6UO"%;,C(e;H$Oor_rbn!`Mupqbd5g"&i)q;ts8d;ZTcnr
+)3Pns&8tsp/M&jr`&\lr)ESms&/eor`&nrrDNSmr_`_nqbmGk"]A2p:f1*h;#F/j:\R`K;Z9Mn;
+Z0Ms;H$On;YX,h;Yj8_;ZBVo;ZB\q;Z0N%;Gg7f;,^:c9M7uOpeCZ]r(lu^pJL`arB(*D55[PK5
+!M7t5X7P#r^$NKr'13H"?o%45=kELr`K2%rE/nts&f8's&ePhqcNi#rEAo!"Bnr2>$Cf+s'#5$r
+E0)$!EN5"<[h$J;GpFl<**:1@VKb'I"R<;P$(sk<)6=b:/Fke:JXh^:/4Va;cH^nqbmH@!.=coH
+[^HpJ:W9'K7ei2L5(J>M2@+JN/WaVO,oEdP*;,qQC!u,R[]e;St;UKTqeE[VPgAlWiN5'Y->.9Z
+a@-K\%&u[]Y(tn^qmn*`5Ta;aND]Lc-FY^dF-Lne^i@)g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*m
+dKW6nc&(boCV\Jp%J+Rp\ssfq>^<gqu6NlrUg)?s+13Xs*t~>
+JcC<$OoOnLr;HQkqYU6frqZHds7cNdrUp0^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D!TiDA
+irS/?ri-'uVPL!dU&^ndTECgXSt5eKrgNhRqNq2Ipm(W=+H(o9K8?+hQB-f]MMnX=WhuScT:D42
+OH#-UaN^H(H\D?Yq2Xa"m#:[ur/Lc<rK.#@!KrZEPlI!]QBclH?=$m.T:D@;PEV,lN/*/eK*-[T
+I!bjH!/LQ1!euMere^hf@q&lUqm?=-s03fQYH4e*Wi;nmUSP'0W-WlGMN<p`PEV/nPEM)kP*1rj
+PE_=1PQ$dOOcYZcO-#HaplGQ<NfF$s!f`.trJUZ6r/:?/rf-o;!frG(r/Lf;N;\_;NfB%rN!#&u
+N/R[m!JuX2LC8fhKnP,5KnbA<L5,MZs+gZ3rJ:K1s+pN,!/UW0reUQ/!JlU(MZ8P4M?&M4MZ/P,
+N;\\7MZ/M8N/`hrNrkE*Oo:FDPEl-6rg3\Rrg4%YI<p6dF_Yf4Dg2+Rr(d2dp/(T_pepfas&oS.
+=^#$5>5h\(=9M].=]ef*<rQ/+<``:%<`E!tH2=91V#R:jVZ3RlVYd7kWUm.dX7rXoWrT6oXT5I$
+XTGZ/Yl:p+ZM_$3['d<M[f*ZJ\@K/]]",Ge^qn(9e(ER@mI^;Srtj:kUS!HqJ:E$2U=4mGH[:'h
+Su&ZnX/c'"!IK4nI=$EmJ:N3%JqJ]/Knb>;Ll$tGMi<USNfT9aP*2#oQ'Rc(R@9V8SXuIHTq\<X
+V5C/hWiE/&Xfnt6ZEppH[^`lY]=bhk^VI_'`5Ta:aN;TJbg+M[dF$CleCN7'g"P08h;-rGi8N\U
+jQ5OdkNM0plg4!*mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrUg)?s+13Xs*t~>
+JcC<$OoOnLr;HQkqYU6frqZHds7cNdrUp0^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D!TiDA
+isOe(MMd7HLPLV=L&?T(KDU9#Jc1*"It7BF!.Ofp!.OTh,&Ln#CLUn!FDbi)C1q:5IsuckG]n7L
+DJa-%BU>-:Bl8!<rd=Tis*EsUj*:HHqKi0g!.=Wk"+GZ(?2dY"GQ2^jEGoc3D/3`pA7GOH#$tSH
+AnGUeral1BB)ZEG<`N1#MZ&A0L'NEcK7no1JqEuQ$\*VRIX[9/CiFH=HMr6nI!pG@HiSNjI/\Kl
+I/eQnHN/?lHN/9cH3eeBH$Xa]G^"B.GlN!cGQ<$gGlE!bHN/?jHMi-cHMi$iG^"B0GQ;pdFoQR_
+FoHI`F*.A'rcA-_rc\<arc\<arc\9b!d8d3rceEemrn_R!-\?cr-8$_r-J9d!.4]m!I]FqIJnWo
+I/n`qJGautJ-paFDJsH2AS,LaC&C^':Amu^;#4&a;YF&f;#X5t:esna;,C%`:f'pd:B=9frD!>g
+r_EJf!+YPVs,6B*o8WU,qMkK7rf?o;r/pf<pQP33s-*JG-^9m_S=uj^Zb+)sdb<X=k,jf*L3R`Y
+E,g;YTlk<mD/F6BKStY@KDU<&H[Pg@H[^HpJ:W9'K7ei2L5(J>M2@+JN/WaVO-#KeP*;/rQC!u,
+R[]h<StD[LU8+N\VPgAmWiW>)YHY:;Za@0L\@K/^]Y2%o^r!t,`Q#s>ai_fNcHab`dF-Oof%8O,
+g=k?<h;7)JiSrnYjlY^gkiq?tm-O-,mdKW6nc&([oCW%Ts7QHerV6Egs8)ZjrVZWmo_sFAJcE.X
+J,~>
+JcC<$OoOnLr;HQkqYU6frqZHds7cNdrUp0^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D!TiDA
+irS.?r`'&";c?Zh<V]Vn;uKSu;cH^p<)Z`p;>sDl;>F*6/1;r#.P<_=1Ggd@1,D9_5s7@n3]oJ_
+2`<NO91qiP;,gNo;ZK_j;tO&g<W#hU;uTbm;tX$&;c58%2Dd3R5!1ti3]]5[2`<HH2#]3/0E3j0
+1Go(g!Al\51^l6(4Zb_t8P)NI8P)JP7fl.M8H)*d77K^77RBF"5YFrP;Z0So;uKSq;c6Ni;>jDm
+;u]bq;u0Dd;uKSs;,U:j;tO#h;uK\q;u]ho;uTbp;uT\n;uK\q;uT\n;Z]io;>X8j;$9co;,C-h
+;"7E^;?0Sl;?0S_;ZBSo;Z0Po;?Trt;GpBj;Z9Pm;Ys>`;Z9Mp;H$Qj;[69#;G^1f<)!9aqb?u`
+rD3,`qGI#cp/CuRr&k<L4[2.s5sRY$rB^HKr'13H"?o(65=YBMrE0)$r`Jtt!*K2&s&eSiqH3`"
+r`]#"!ErY)>5VP&>5MJ"=9)G"<\%-J;,L4i<**:2@qfn*I>!N?P*9EZ>#e<n9hnJ];-cso:/+DW
+;H-Rp<)EHi!IK4nI=$EmJ:N3%JqJ]/Knb>;Ll$tGMi<USNfT9aP*2#oQ'Rc(R@9V8SXuIHTq\<X
+V5C/hWiE/&Xfnt6ZEppH[^`lY]=bhk^VI_'`5Ta:aN;TJbg+M[dF$CleCN7'g"P08h;-rGi8N\U
+jQ5OdkNM0plg4!*mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrUg)?s+13Xs*t~>
+JcC<$OoOqMqu-Kkq>:0frqZHds7cNdr:U*^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D%cud4
+j5].XX/`2!VPU)`rhBCb"J;9WSXfYJrgEhTrg<SL!g]+;pQbT>,+aaHP_b$cS<]1lO,T"!Y,\Cq
+UnX<DQ]R2bMW;4RF*`Csrf?l8k`+tgp5T!1rK.#@!g8b2r075H*.EBE?<j(oSsl(3Q'7;gL51G6
+K7\T!I"d6-Ll)+e!Ju^5MuR8h@UQ[Qr3ZF.rim$<XfJM&WMcSgX,i0aIY3N=r0%#Bs-!DErK7;J
+PEM,nrKIPMOH>NaOH>OtO9^i+N/WaUN/[[ms,?l6pl,64rJpo>r/UZ6s,R,=!06r9s,?r8!/g`1
+!euD_re1<*pkS[$qMG*)!/UW0rJ:K/!JlU(MZ/G5MMqFj!fN"roo8p/!K2j7MZ\otNfX.#!0R5D
+"I,1;R$dl@!1NhR%%<$%I!g6^Ec>i79hkR]rD3/ar)*;gl;R^c!aAi4r`KA+='/O+r`K5&rDrr"
+rDj#";cIK0U&^taV#R:iVZ3RlVYm=mW2]BgqQ'@js/Q.$n>ubpYH\#2rj)I.s0Vg6!4Mg7s1&$<%
+(j6h_T:!Ng#2&]p&+^e(U:'8Q\Bs;I=\$%_1[/dGCkpOV73P.Wr&t"I/\PCIXcluJUrE*K7nr5L
+51SAM2I4MN/`mZOHG]hPa.N"R$a;2S"-(AT:qsQUnjlcVl?\sXKAY/Yd(O@[C3QS\[oGd^;%G!_
+Sa=2`lQ6CbKJ/Ucd:(fe'uq!f@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X60n*oi:o()DPo`"Lbp
+@n=[q#C0iqY^6ir;HTcrdk*#s0_lW~>
+JcC<$OoOqMqu-Kkq>:0frqZHds7cNdr:U*^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D&*;m5
+j5].XMi*@JLPLV=L&?T(KDU9#JbjooJ,aupIfOrkI3NfH@;]XdG'%V;Anl$nJq8B!H$OUTEH,i2
+BP=`0M.gaHGlE*eHN8BUH/s5HH2DpfHiJKiI0!Y]r_NQ<)0L"@E,fc4CLq'e@:EYP?!V#QAn>Rc
+AnP`TB*DsM<`W4XrJ:B+s+CH+KS05T$\<eVIX?'UC2S$7HN&BjIJ/'fHi8?lHiJElHiA<kH1ZF_
+H22^bH2MpdH2`'gH2;jcHN8BgHiJBlHi&-hGm&G=G^+H1GQ;seFT?O]FTQZ+F8^7[F:*/6GB\1Q
+G'A.QG5ZXbFoQ[aGl;jdG5laeG'Eb*rcJ9cGB`t0!."Eer-S?f!.4]m"+>WHIJA6kJ,XusJH1<"
+JII-SE,T]4C1q3iB2),!:Amu_;#F2e;X.0\;#X5k;,@-e"&DZf;#O/j:f%$b##@ui:/+JcoSW[,
+mu6t"!fW+uqMtH4rJpl<qN1Z<plbB8n<,8bPa.W,U8P-#]>MkAg>:iNkNS4mMgonjE,]rRPEKs'
+E,'<:Jq]/=L4];V!.=coIXZcsJ:W9'K7ei2L5(J>M2@+JN/WaWO-#KeP*D5sQC+&-S"#q>StD^M
+U84T^Vl-MoX/rG+YHY:<ZaI6N\@K2`]Y;.q_8=+.`Q$!?aihlPcHjkbdaQ^rf%8R-g=tE=hV[8L
+ioB([jlYail07L!m-O--n*fc8nac8Bs7H<`!quB_rV6Egs8)Zjrqu`noDX=@JcE.XJ,~>
+JcC<$OoOqMqu-Kkq>:0frqZHds7cNdr:U*^s7?3[s7--YrU0gUmHso>s6K^Ms69RI!9a@D$K^@0
+j5].X<`N.!r_ierp/UrgrDWVl!*&nqrDEMis&&Yk$8*eV0In_82Dm9Er\OR@&j\ZD5<Cqf3&iiT
+2JGTT9MeSar_reopf$ibr`/hpi`#kVq,?ras"5o^1c%<Z4?Ybe3]K)X2)I$D0ek@80JtXB1c7*H
+2)R3J2)dZ]4$-&+8P2WI8P&hNs$cuZr^RDd7R]d86S^eo:Jjtf;YjAm;uKVo;u]bm;%$9#;GpFl
+;GpFl;H*KkpJ_#gr_W\o;u9Mo<W#hr;uTbq;u]ko;ZKep;u]bo;u9Ms;c6Ll;uKSo;>X5k;uTVu
+:f1%c;,C*e;$Bip:f1(fr)*JlrDEPls&&8`r_WYnr_ins;,^Em;Z0Pk;Ys>j;?0Yp;ZB\k;Z9Sp
+<;ohn<!cQ$:f11k;,'_Vr_<>drD3/ar)*;gl;R^Fs#gTN4?btp5sR[462s4J56*nH5lWtI6hsma
+=T;J$=Sc,!=T2J'=R'&d=T)D%>4u1t>5_V&>5VP%=T)>"<\IHP;c6Ii;H$Os>@1lTE-?\aMiNm_
+Pa#BU=]J<q:JFP]=B83n:/+J\<Dumt;c!9h!.=coIXZcsJ:W9'K7ei2L5(J>M2@+JN/WaWO-#Ke
+P*D5sQC+&-S"#q>StD^MU84T^Vl-MoX/rG+YHY:<ZaI6N\@K2`]Y;.q_8=+.`Q$!?aihlPcHjkb
+daQ^rf%8R-g=tE=hV[8LioB([jlYail07L!m-O--n*fc8nac8Bs7H<`!quB_rV6Egs8)Zjrqu`n
+oDX=@JcE.XJ,~>
+JcC<$OoOqMr;HQkqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaO!pf.:rojIIkPjT]jlGL_
+j5T%Vi2WcTVPU)`U8"?STV%jJSXfVIs-`qUrg3bRQBqN:!1*;Cq33%cLR3mPBqC`VLlI:OXf\S"
+Vkg#VR$<_mM2QSAbAr#\L]3A/Np2PjN:r8/NW>.>OSt:BP*>g.+-h2%?=-s/T:MI?P`q>nN/<4@
+K7ni,H?t:"Ko(VBM#E/:MMktS@UQXP['fn?r3H@-&?i4:X/W(rUgB5-Q[XOCNg'@'rfdAFrfR2C
+qih&Es-3VJOn"M7O,f1tNW4t9MZA_5MZeuuNJrkqN;nn9NWG6&r/U]7rJh/CNfK*ZNK&sXrepo9
+M2;.dre:B*"bh\dLPUcaLB<9gM>i>+M#`A0L]<20L]*&/LB*2*MZ&G9MM[1IMuAM7Mi<VeNW+k=
+Mi*CMrepl<OSt:AP5^XPPa.N#R$sJ3R@9TCRJiQ^IXHEfH#I\>E-=uOrD35cr)*>hnPf!Xs&oD,
+r`KM/='/O+=]ej0rDrr"$<C5/<E3!t=JDObqP=.frMKRlrMKIi!3,RiqQ'@js/Z1$nZ;kqYH[u1
+rj)I.s0N]P[^NZS[^W`U\@K,[]">\l`6$<SgYqAap&+Xc(U9s5O+i(4J;USeRY?-8G^l0ZXg>+0
+XS]4#I<p?lJ:N3%JqJ]/Knb>;Ll$tGMi<UTO,oBbP*;,qQ'[l*R@B\9St;UKTqeEZVPgAlWiN8(
+Y->.9Za@-K\%0&]]Y2%o^qmn*`Pom=ai_fNc-FY^dF-Ooe^rF*g=k<;h;7&IiSrnXjlY^gkiq?s
+lg4!*mdKW6nc&([oCW%Ts7ZKerqQNhs8)Wirqu`no_sFAJcE+WJ,~>
+JcC<$OoOqMr;HQkqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaO!pf.:rojIIkPjTPjlGL_
+j5T%Vi/3AJL]3#.L&H])KD^?#Jbss!IsukGJ,OipIfOrjI3EB9E+WQYF`D81BkM15JU`)pH?OFO
+Df'9&BjGkOBPh^3rd=Qhrd*gSjEUNHqg/6g!.=Zl(gL?B:ec.XFEDSCDf9K.BObO]@pr_M?"O"I
+s()4CBDuKMB4t@I<`P!4M26ucLAuo.K7nmVK)^B.Ist%2Oa_1gFaF%8s*jloomHacr-SNlI/SE_
+HMr-fGQ`;:G^4T6GlDshH?oL7s*=HeoQpXcH[G^;"FGH?H@#I5s*"HdqK2paF`_\HrH8*]!HiSb
+GQ2jdGQ)dbG6E)3G'A0/GkQ@]G5ZUgG'.qNGB`q/q0MscrHeKj!.=cos*jrsr-nWps+(-$s+13%
+rIOp!$Zg<,Df0-!AS#RN:Amua;#F2f;Xm]V<!,om;,@-e"&DZe;#X8j;#a>j:&n)g:B+&_MZ8V'
+N:W&*Nr"b7Nr>%9OSt=:P4t1/Ot;f^Q'n5<W3<VA`6?]`h;RGWkj%MtNei(+EH?/HNi%8GDJj61
+ItNK7LP1?XL&QLHIXcluJUrE*K7nr5L51SAM2I4MN/is[OHG]iPa.N#R$a;2S"-(ATV8'SUnjlc
+W2ZetXf\b1Yd1UB[C3QT\\#Mf^;%J"_Sa@3a2lBFbKS5Vcd:(feC<%#f@\g2gYL]Bhr*JQj5]7`
+k3(sml0@U$m-X60n*olHncA@Srq6<bs7cNfs7u]kqtpBjrVcBfJcC<$[/YX~>
+JcC<$OoOqMr;HQkqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaO!pf.:rojIIkPjTRjlGL_
+j5T%Vi)N`U;c?Zh<Vf\n;Zouq;,U<i;ZK_p;>X/i;>X6+.k!2)/20"?1b^aA1dOGo4Zkkg4$!:!
+s"t!65>b0O;,[Blr)3;goi1rkqc)QRr`&_mp/:oC#rXUq5!D%k4$#G%3".Z$1G^d?0J>+;1c%&h
+1]TE31^l9+4Zb_t8P)QJ8P)JP8,l'X7fZ$X70Q.J-9XXkr_`YnqGdJnr_i_o!`Drpr)!Yr;c?Rn
+;cNZnrDN;es&/ems&&hqr)E\r!)rkrs&8nrr_iht<:a#g;Z'Jj<<#hu<)ZXlrD<r#;,U:j;Gg:f
+:f1'b;?'Mr;,C+fr)*GkrDESmr_`Sk!)ren#Z4Jt;c?Rk;,[Bl"&_uo;uKVn;u0Dh;$'Wo;uT\p
+;Z]io;>X5k;uTbr;u9Mo<W5r*;Gg7f;bKkY8ki&UrD35cr)*>hnPf!Xs#gWO4?bto5sRY"rB^HK
+r'(BL5X7Ot4@&gIrE'&$rE/nts&f5&s&eSiqH3`"rEAo!r*'#$r`]5&s&f,!r`9&!,?.T>;,L4h
+<ENI4ASZ:0IYEZ<O-,WjPa,ET=&Vsk9MeSf?N*_,9MS8Z<Dumr;c*?irdB*AIt3'#JV&N,KS>/8
+LPUeDMMmFPNfT6_OckomQ'I]'R$jG5S=Z=FTqS6WUo(&gWN*#$Xfen4ZEppG[^WfX]=bhk^VI\&
+_o9U8aN;TJbg"GZd*^:keCE1&f\5'6h;-rFi8N\Uj5oFckNM0plKdg'mI'H3nF?MK!V>s_p&Fac
+p\ssfq>^<gqu6NlrUg)?s+13Ws*t~>
+JcC<$OoOqMr;HTlq>:0frqZHds7cNdrUp0^s7?3[s7--YrpTmTs6]gP!pf.:rokKfkND!ijlPR`
+j5T(Wi8CW7Vl-DfUnXQUTV%jJSt,YHs-`kR!gf4=rg*VNp6GH<,F=CBOG.>@R?<D\Nf.VSWMlYg
+St)15PE1]\AEqm=H@L^1NrG+6NpD\kN:i2.Nr>(=OoLREPPp_"H[T7/>Fh=TR[TJ)P`LcZL4k/4
+Jq8;qHA701LP^kFMM[1JMdp7+Fge]b[C*BKZi%*BZ*1:1X/W(sUp7Y4H[UX-Ockolqi^uCs-!>C
+s-!8Cs-*VNP`_+,O8t@7O8t@>N<kQ(N/NUQN/NYoMuSb5N<5&uNVne:O8P%8NVAG@O,f6[NJraO
+M2-k@re:B*s+^Q/q2"X!!/UW0oSEC%regc6r/:Q3s,6i5rf$N0repr=Mi3PnN<,'$rK7,C#a:L<
+QBml*R@=,C!LfGTRf8fVS-tO0I=-<[Ec>o::J^d_r)*Aioi(Tan5THlr`KJ-=BAR,=B\i*<rZ5,
+<``:$=&i4"U\pniV50rarhfXlrMKLj!N<!hWqrdjWrK+"XRN=nY-5)/Z2M!+ZNRYC[C3LB[f*]7
+\.-$^^;._1cdge0kj\<Dq#;/DZD=(NJq/<%Tt&.!IX?BkL7kBKY-"c$YQ'"OIXh?IE.NUnK7nr5
+L51SAM2I4MNK0'\OHG]iPa.Q$R$a>3S"6.CTV8*TUnsrdW2cl!Xf\e2Z*L^C[^N]V]">Vg^V@V%
+_SjF5a2lBGbKS8Wd*^7ieCE.%f\,!5gtgfDi8ESSj5f=ak3)!nlKdg'mI'uB#4V0Ro(2JFrq-?d
+p\4X]s7u]kr;6KkrVc?eJcC<$[/YX~>
+JcC<$OoOqMr;HTlq>:0frqZHds7cNdrUp0^s7?3[s7--YrpTmTs6]gP!pf.:rok'ZkND!ijlPR`
+j5T(Wi8BHKLku%b!/:E*s+C<&!J,k#Jc($"IsukGJ,XoqIfOrjI3WZD@VK=PGB.P6@qo[XJpr,p
+G]e+KE,TQ,B2Z::IVj(HH[Ga>qKr3flZqN8qK_sarHeNlrI+]Os%ibkG'3e*%WH?)D/3cq@prkU
+?s[,EralRMAnPdjAnG^i=&r@2re^Z2s+UZ1L5(A8re(3%s+(K+IY!B/CiFNAHi/<lIf4]fI/eQj
+Hi\SAr-S$]r-A<es*4Thrd"KfrcnZnH$OX[H2`*iHiA?[HNSS@I!bj=!."Kerc\?crcJHhF`hkN
+F`_a#FT?UaG5ugcGQ2jdG6E/7F`hp*GlMsfGl2dcGQE#3r-/-`rce9b!."Eer-SEhs*FcoIJeQn
+J,F`sIt3(KJH1<$JH:@Rpjrm&EH#l7BP(jeAku4u;#F2g;Y<u_<:Eoc:]jKg:/Lpcr_NSjr_<Gh
+r_<Mj9hbGA",i%pMslVuN<5&uNV\\4NW"n:O8G%;OnY%5PP^LCPP^LDPEPp-/X)HcR\-@SYd_<b
+bgY8#i8`q^l0IZ$P`1?AF`DDCL6.^FE,KN1Ee8q#M2-c\L&ZQ%IXh?IE.NUnK7nr5L51SAM2I4M
+NK0'\OHG]iPa.Q$R$a>3S"6.CTV8*TUnsrdW2cl!Xf\e2Z*L^C[^N]V]">Vg^V@V%_SjF5a2lBG
+bKS8Wd*^7ieCE.%f\,!5gtgfDi8ESSj5f=ak3)!nlKdg'mI'uB#4V0Ro(2JFrq-?dp\4X]s7u]k
+r;6KkrVc?eJcC<$[/YX~>
+JcC<$OoOqMr;HTlq>:0frqZHds7cNdrUp0^s7?3[s7--YrpTmTs6]gP!pf.:rok*[kND!ijlPR`
+j5T(Wi8@U7;c?Zh<Vf\m;Zfop;,[<j!)ienqbR8iqbeXi.Ocu#0f_*H0J>1;2F0Sm4Zkkf4$,D\
+2`*+':e+D\;c6Nm;uBPg;u0Jn;ts>M;uTbm;ts6(0.o+=1-Ri_4?GSa3&iiT2)I*Er%S.-s"t0@
+2)R3I2)R9U5!(t-8cMH`8cM?]7fZ$X7fl.M7/fU^6T@;':f:4j:fC<f<<#ns;Z'Gn;Z0Gm;Z0Mq
+<)Zcp;ZTlsr_iAes&/kor_`_pr)<l#<)Z^p<)`cqrDN\qm8Nm]r_inu;Gg9f;>sJn;?'J`;?'Mr
+;,C+er_iYks&/hnrDNYos&/kq&5lA';c?Rk;,U=j;c6Ii;cEZnrDWSkqb[Dm;cEZns&/ts;,I-f
+!)rkrr_rbpr`/tts&B5%:f1.h;>s5j92A@Z;#F2g;Y<u_<:Elm4[)%o5sRY!rB^HKr'(HN5X7Ou
+4?ltOr)`r#rE/nts&f8'r`JJhqcNf"r`\u!r*'&%rEB,%s&f/"rDrqu-W<o>:f1+g<`rX7Ao)L4
+IY3K7NKB<dP`q82=^+j&:JOV];cm$p:]=&m:K17n;cHWj;u_7HIXh?IE.NUnK7nr5L51SAM2I4M
+NK0'\OHG]iPa.Q$R$a>3S"6.CTV8*TUnsrdW2cl!Xf\e2Z*L^C[^N]V]">Vg^V@V%_SjF5a2lBG
+bKS8Wd*^7ieCE.%f\,!5gtgfDi8ESSj5f=ak3)!nlKdg'mI'uB#4V0Ro(2JFrq-?dp\4X]s7u]k
+r;6KkrVc?eJcC<$[/YX~>
+JcC<$OoOtNqu-Kkq>:0frqZKerqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrojLJkNDj,!TiDA
+itUM3i8EMLWMcYkV5'cYTV.pLSt2GKRfJlUQi`V?QN!3NQM-U>PTuc]K9h:HTpq:+KoD"(Y-4e$
+US+3FQB@8eMMf-hSp#I6NfO$uooAF!m#:UsrJgl=rK.&ArfRDJPa$TGr`oZ!SXZ.;rf\OfMMd4E
+KnY/0H[0plL51S@M27"FMMmC%@UkS0['[6K[']h=rj!'>YH=k+WMuhgQ]$-=Ko2#jPP^OCP66u1
+Oc]R)s-!8Cs-3_NP*(ierf@,@q2bcBOH>N`NW+q?O,f3Xr/CT4qi(rCN/`gWNK0!YNK*ptqi1T8
+!0@)=qiCc;s,-u:M26rcL&Qi,L]<21M$&QjLkttc!/gc4s,-f4!/UT/p4ra+MZ&G5MYi>3Mu\e8
+MZ&J5M?AcqNK*ptoo9!1s,I&=!frG)rfIPNPEV8sQBmo*R@=,CrL3bUrga"Z%%NfUIslWgG]%J;
+EL6Q!rDEMkpJ^ofpJpW^s&oA'"^"i/=BSc)<rZ5+<``7#=&i4"rhTLhrMKOkrhfUk!N<!kWWK6$
+WqrdjWrK."XRWFmXoY`1riuI.r3QF1rjD^5r3u^9%D'3d_8a[Fe_T9MnFleRrthrBTp1FbJV/uk
+fqa=LIs?O0VPpf%XfM<%!e#NIrd]<GJqJ]/Knb>;Ll$tGMi<XUO,oBcP*;,qQC!u,R[]h<StD[L
+U8+N\Vl-MoWiW>*YHY:<ZaI6N\@K2`]Y;.r_8=+.`Q$!?b0/#RcHjkbdaQ^rf@S[/g=tE=hV[8M
+ioB([k2tjjl07L!m-O--n*fc9nac8Bo^r.U!quB_rqQNhrqcQirqu`no_sFAJcE(VJ,~>
+JcC<$OoOtNqu-Kkq>:0frqZKerqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrojLJkNDj,!TiDA
+isXl*i8EMLM26qAL5#SZs+C<&qLSTq!e5ZJrdXorrI=irp3e0-C12$k@sE$1Bk1mk<e>pOI!U$[
+Ec>l3BP;%=Q$m@bF*`32I/83hHL#k:Gl)d`HMi*mI!pEM?N*\5G]n.NEc5o6Ch[TrA7K+X?s[,E
+r+6%DAnP`TB`;$4FT%%$Lk^Y<L4t;7rdtZ3K7\Z+IrfaRC2\-:Hhr0jIf4]eHiSNgI/SEaHM`!e
+GlE!eGlDsgHN&0nG^4R\H@,U:om6[dqKi6jHiA<kH2`'cGPQC_F`dG%s*"Eds*+ZiGB\4Rrc\?e
+rc\0`s*+Bc!dAm6rce?drc\HfGBe?1GQN/:HN&9jHM;afI!pG@IfFoqIKG"LJGt*"K)U>rK)L</
+JoPaLDf'-#AS-Dg;#O8i;YO,d<;0D\<rPqq:B=3erD3Gi!)NGd!`)NbregZ4mu6jtqMtE3rf6r<
+r/gi=pQG97rK@2EqiWh#P*1riP*;,rS"QRWZ+.NfbgY4uhr<_Zkiq<ok*;!cIs>sTEdWtGKQ:sL
+CN"QPKo:bBK_gB(I=?\FJ9lcuK7ei2L5(J>M2@+JN/`jYO-#NfPE_>uQ^F20S"-%@T:hmPUSO`a
+Vl?\rXKAY/Yd(O@[C3QS\[oGd^;%J"_Sa=2`lQ6DbKS5Vcd:(fe'uq"f@\g2gYCWAhr*JQj5]4_
+k3(sml0@U$m-X60n*ol;o()DEo`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s0M`U~>
+JcC<$OoOtNqu-Kkq>:0frqZKerqHHdr:U*^s7?3[s7--YrpTmTs6]gPs6B[MrojLJkNDj,!TiDA
+isF`(i8EML<)Z^pp/UrgrDNhs;,L4hr)<Slr)!Air)+(X.O[#&/NP^E1GCR?2a]kqr]LBG3]f5Y
+r\b!L7n6?P;c6Nk;uBPg;uK\n;ts>M;uTbm;u0Am/hd2\)a6DH4?GSa2`N`S2)I*E0JG.60JkUD
+2)I0I2#]?82a0Df6iK[W9E.T`8H20[7fGme7Roj777Amo7Sco[<)W]p"&i/u;u9Po;Zfor;cN]o
+r_`bo;Z0Pm<;ohr<<#km;u]bn;u]_u;,C+f;Z0Pr;cH`p;ZTirr_s&!;c6Ol;Y<rg<;TVn<!$'!
+<;fbq;?'Jj;>jDm;#jGg;#jMk;$9co:f($e;Z9Pn;Z0Jk;?0Yp;ZB\q;>sMo;$p3";c6Lj;,^Ck
+;Z'Jn;?0Sl;Z0Jm;ZB\n;?Kcm;,dEks&8qss&0%u;c?Xpr`/ttrDa2(:f1(d;G9bW925:[rDEMk
+pJ^ofpJpW^#!P7;5sRY$r^$QLqEG*J5<q=qpfRAos&f5&s&eSiqH3`"rEB&%!a8f4qc`r$r*'#$
+!*K)!rDj_7<)ZXj:f1(g<a&d<B5M^8IY3B3N/s)"OV!S6NEK@d;Gg4b:f1;(:espe:'OQn;cQgs
+;#4)lI=?\FJ9lcuK7ei2L5(J>M2@+JN/`jYO-#NfPE_>uQ^F20S"-%@T:hmPUSO`aVl?\rXKAY/
+Yd(O@[C3QS\[oGd^;%J"_Sa=2`lQ6DbKS5Vcd:(fe'uq"f@\g2gYCWAhr*JQj5]4_k3(sml0@U$
+m-X60n*ol;o()DEo`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s0M`U~>
+JcC<$P5k%Nr;HQkqYU9grqZHds7cNdrUp3_s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+it(/.i8EMMhVG*-VPKr[TqMCW!hPsQqjRt^R@'A.QBml(R$X-5Q1pLdLhhs(BUb?NM3!RQX0&:r
+USFNNR$EbmM29KXSTK1/O,j'tq2YK9s,QK+m>U[srJgl=rK%#Arf[;F07A:V?!a.pSXQ%4P*;#f
+M2$\7KS4l'I!UO%LP^kDLl$tHMMkqPA$<>J['d<K[/@6@ZE^U9X/r;#W1_1TI=[37q31]=s-*JF
+s,d8Cs-!8Cs-3_NOcb`drf@,@q2b]@OH>P%NrG(DNfB$WN/`hrMZA_7NW+t<NW5%=N<"q9NW5%=
+N<5&uNW"n;O8k7?O8k=@Nt%,/N/NUOLkg_?L5(J<reCK0qhY</re^T2s,$c5"c8+nM26r\M#W>3
+MYi;3N;eb6N;eb8N;nh8N;eh9Nq856NfT6_OcfX+s-*JJrg!SOR/WQSRJiQSS,/ZdS!oe9OFDV)
+H?*tADK8QMrDEMkpf%)iqGlNUs&TA+='/R-=o;>#<rl?$r`'"u<2BMirMKOkrhfRj!3#Uk!3?+!
+qlBFj!irE(pT4FurN6(%!O&a+Z2V',ZN.B2[JmW3[h$!Z]=kqqa3;r_hrX.op\a^a)#LS7ToFbW
+K7fl'_2F"pH[146V6@J6Y,hE&!IfOtJ89^fK7ei2L5(J>M2@+KN/`jYO-,TgPE_>uQ^F20S"-%@
+T:hmPUnjlcVl?\sXKAY0Yd1UB[C3QT\\#Mf^;%J#_Sa@3a2lBFbKS8WcdC.heC<($f@em3gtgfC
+i8ESRj5f=ak3(sml0A97"mtaHn*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$Zi>O~>
+JcC<$P5k%Nr;HQkqYU9grqZHds7cNdrUp3_s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+isar+i8EMMhVEsBL4t?\K`6W(K)1&sJ-LLPIXcitJ,XoqIfOrjI3NN=<+f`@F)Yu/C2%C5J:2`h
+H$44KDf'9%Ataa$B5M[7Hhr-dHiA?WH/s5IH2DpcHiJKn?3F)":j7*^F:N8.D/F'&ARf.X@UNMJ
+?2A.6B4h-V"BSW)L5Pqd#)7hcL4t;7rdtW2K7\Z+Is@)jDK9lGr-\QorI+]prI+!ZrHn0_qg&0c
+rd"Herd"NirH\?f!."Qiom6[dr-SHkrd+]mH$TC6qKDs`GPlX^FTQ`/FoHR`G6<)6GBj(1s*4Qf
+!Hr\bGlDp_GlN!bGlMsiG^4OYrd"Khrd4WjpNlpgIK"]nJ,ausJ,XruJc:9$JcCB%K)(&uJdZpF
+E,TT,BP(de:f.*frDNDhr)EMmi`6.X:JXa`:]F5k:]!li:JOVZMZ/P&N:i/3N/`hoNr"b6NrG+;
+OSk78P4t1?P5LM,P*;)mP*;)mP*(liPa.W,Tr+ot\\H//db!41iT'%^jlY[biR!dILO45dF*34t
+Oa2"cDJX<DKo(bDLP5MX!IfOtJ89^fK7ei2L5(J>M2@+KN/`jYO-,TgPE_>uQ^F20S"-%@T:hmP
+UnjlcVl?\sXKAY0Yd1UB[C3QT\\#Mf^;%J#_Sa@3a2lBFbKS8WcdC.heC<($f@em3gtgfCi8ESR
+j5f=ak3(sml0A97"mtaHn*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$Zi>O~>
+JcC<$P5k%Nr;HQkqYU9grqZHds7cNdrUp3_s7?3[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+isF`(i8EMMhVD+0p/Uofr_iqt;,L4hr)<Pkr_WPjqbe%X-RpZ!0K1gE0JkRA6:*q!4?ia*$og1)
+2)SH#7SZfX;c<HjrDNAgs&Aqq"]A8t<)cfn<8^^T<;BJj;B.;B2)I0S5!1nh3]T,Y3&`ZN0etI;
+0/5+91c72h2#fE92a0Ae8H)3\9)qQ_8H20[7fGmd7Roj777B(":Jt%g;Ya;l;u9Pn;u]hq;uTYq
+;,[Blr)EYos&B"rqG[Dlr)<Vns%ikr;H$Ln<;BGt<)Zaq;c6Ljr_iDf!*&kprDWet<;f_t;Gg7e
+r)*Aipeh&hqb[>krDEGis&&bnrDEPls&8qqs&8qp#?"K!;Gg=j;uBMn;uT\n;u]_q;>a;m;,I6h
+!`Drqr)*Yp:f11krDEVor`&nqs&8nrq,RGo#?=`#;,U@h9`@]b;#O8i;YX2g<;KVS<WbTQ5X535
+s$6HG!'^BIs#p6]qH*]!rE9,%lrj0erE9,'qcj#&!*f>(r`T/&r)s&%q,dPr(0+:2;,C(d;,^P#
+?=[bfFa8FfL5ChJrJhDJN/<77=B\a(:ejb_<)uor:]F,o:/Y"f<E2soqGREDJ,Xt6JV&N,KS>/8
+LPUeDMN!LRNfT6`P*2#nQ'Rc(R@9V8SXuIHTq\?YVPg>kWiN5'Y->.9Za@-K\%0&]]Y2%o^r!t+
+`Pom=ai_fNcHab`dF6Upf%8O,g=k?<h;7)JiSrnYjlY^gkiq?srp0gUmdKW6nc&([oCW%Ts7QHe
+rV6Egs8)Wirqu`no_sFAJcE(VJ,~>
+JcC<$P5k(Oqu-KkqYU6frqZKes7cNdrUp3_rq$-[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+irS/urnn%=hVI"cVP^-fT`CbbT)bJ^SGeoXR[O/B#a^jCQ^F/,QBq91qNN1lMLpk@LS(*%O+iOR
+XfSP"UnaTOR$*YlN/;P<`c?KXLQ;.jqMtQ9s,QK+mYpasrf7#>rf@,BrK8+IIU?GfStVaHR[',$
+Oc5*MKS>&2IslcnKntQaM$f/tM2R:L@U`iW\,E`6[/@6BZ*1=2XJr4sUQp1UL5_:ZPEPg,qi^uC
+s,m>Cs,m>Er0.,E#*Y13OH5HarK$i;!g/S+rf7)?O8b4BO,f8"N<"q:MuAY7NrG"<NrG%<N;ee:
+Nr4n7NrG+;O8t@@NWtK%N/NRMM#N/0LAcl/Ll$ufMZ&D/M?\opMM[4IM>i>2M>;r/M2I2dMu&D3
+Mu8P5NVeb4N<#"<NW5"=O8b7@OoLUEP6-u6QN!3OR$mrBrg<kWS"#rDSc>/fS=Q4@IXHNiG\h>9
+E;i`6;Ya8h<;]bd<pWoe<WQ<(r`B2)=8c2"=8u;*<E)st<2HGjVYm@lVYd:kW;!:lX8]-qX7rXo
+X8f9nXo,=&YH\#2rj)I.s0Vd5rO2X5s0rQM]=kqraj&;gi9'Csq#'a`(q$iJR#HcXKT3CVWeQ"L
+H%M!NV6mP1XK;9%s*t'!H%CR"K7nr5L51SAM2R=ONK0'\OcklkQ'IZ&R$jD4S=Z=ETqS6WUo(&g
+WN*#$Xfnt6ZEppH[^`lZ]=bhl^VRe)`5Ta:aN;WKc-FV]dF-Lne^i@)g"P39h;7&Ii8WeWjQ5Oe
+kiq?slg4!*mdKW6nF?)?oCMVRo`Fj]p\jmeq>^<hqu6NlrU^#>s+13Vs*t~>
+JcC<$P5k(Oqu-KkqYU6frqZKes7cNdrUp3_rq$-[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+irS/urnn1AhVI"CL5(D9KS>*YK)gN"Jc($&IsuirJ:N.JIfFltIeA+4E+NHl@:aS&DJE]rCP..e
+I!U']FE289CM@EaF.$WVEd%G/qL&3fr-I[Sj`pZJqg/0e!dn<\r_O>QGBJ"KEH#c3CM79h@preQ
+?X@#MB`;TOB4tpiBkV-\=&t9<rJ;8DKnY88K7no1K7\`-JV/2oH#.JCGlE*kI//3jIf4]pHiST^
+HieYBHh;X]H2i-gH2`'eH2W'gH2W'hH2i3`HN8HkHiABoH[:#;H2i-fG5umdGPu[hGBS.PG'A0/
+G5c^cGQ;sbGlN$kG^"@VrceBes*+3^rH\Efs*"HfrH\Bgqg8?hr-JEkrd4Zm!.Fiqr."]p!.Xuu
+s+10$!eGrToRd-qrdtN/E,]`6D.[ElAc>R+;Ya8h<;]bd<pWoe<WZ&l:Amug;#a>j:&n)g:'+.J
+MslVuN<5&uNV\\3NW+t:O8Y1;OnY%+P6@&4PEM+.OYi8dQC=D>W33M=_8jmMf@o*>iT0([j5T"S
+h;+<^N.?1rH#n=pQ%sL$DJX39K7o/?LkLHXL&ZZ&J9c]tK7ei2L5(J>M2@.LN/`jYO-,TgPEhE!
+R$a;1S"-(AT:qsRUnjlcW2ZetXf\e2Z*L^C[^N]V]">Vg^V@V%_o0O6a2lBGbK\>Xd*^:jeCE.%
+f\,!5gtgiEi8EVTj5f=akNM0plKdg'mI'H3nF5u=o(2JFrq-?dp\4X]s7u]kr;6KkrVc?eJcC<$
+Zi>O~>
+JcC<$P5k(Oqu-KkqYU6frqZKes7cNdrUp3_rq$-[s7--YrU0gUmHso>s6B[MrosIH!9a@D!TiDA
+irS/urnmn9hVI#e;uouuqGm>jrDW\m!)i_n!)iVi!E)el;BRM>-nZu%3ArZI0JbOO6:!du4?>J_
+2E*NQ1bCjd92AFY;ZK_b;uT\m;u9PP;u]hn;uKSp/hm8^s#q&Y4?P\c2`NcT1c-sC0eb::0/NSc
+!&X[4%5]q#2Ej;e8kDTH91qkU8H20[7fGmc7Roj775@(u;,U7ir_rkrr)EYoqc*Pn!`W0!rDW_o
+rDWPlrDN\oq,@;krDW\ns%ibo;H*Qoq,7An;cH`q;ZBVo;Y<rg<;fbo<!#ut<;fbq;?'Jj;>a>l
+;#sQlqGR2f!)ienqbmDjs&/emrDE\q;H!Kms&/hps&&eprDNAgs&&hor_a##;G^1e;,U=kr)3Pl
+!`2fprDWYo##eDt;c?Xppf.c&<E<.":Jk"e;GKkX9)_]e;Ya8h<;]bd<pWoe<WYQO5lO(L5l3bL
+5!M=t5!8gHq,[PurE9)$pK7K"pK@>pr`T2'qcibts&o5&r)j#%pfIJr"'&<!;>sDl;))$P>@;#X
+E-?MUJq]#=N/WaTN/EIGK7A>R>?Op':Jjqd='SX!:/+JY:fL@m<DudnqG[EDs+#BGJqJ]/Knb>;
+Ll$tHN/WaVO,oEdP*;/rQC+&-R[]h=StD^MUSO]_Vl6SpX0&M-Yd(L?['mEQ\[oDc]t_=u_Sa=2
+`lH0BbKJ/UcHstee'uq!f@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X60n*oi:o()DDo`"Lbp@n=[
+q#C0iqY^6ir;HTcrdk*#s0M`U~>
+JcC<$PQ1.Or;HQkqYU9grqZKerqHHdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rojIIkPjTJjlGL_
+j5T%si!A5sh;-l@VPU$dT`q*]T:VUErga"X!LfGTR/WHPR/WHFQ2HjiUQ'nlL52CjQB?o^N+T2m
+W2-2]S!]P*NK/m`hq"9EIYIHUqMtQ9s,QQ-m>UXrrJgl=rK%GMP*19C?!^g0TU_O?rfdhRNJWCC
+KnP&0IXHNsreUT2s,6o7!K2j7@KF!JrO)X3!OK04ZOO4EY,n_(WM.@VIY3N?rfd>Eqi_8JPEV/n
+PEM(-O8tFBP5LOCPQm>6OcYWbOT(=;O9^o0OH5HaO,s:%!frA%rf-l8rf-l:s,I&=s,I#:pl5<6
+$]U1,O,oBbOcYZcO8Y+=N<>,tMM_+a!/^Z3reU`7Mi*DkMuJS7Mi.Fg!/^T/re^N1mYq.)s,R&=
+r/Uf:s,R,=!07&>s,d5B"Hnt4Pa;97!goCDr0mVS!1`kUs.'+[&"];\S;_lEHZsLMDf0Sn;Yj>j
+<;]bi<qob_=Sc,!=92T,rDrr"#Zb#,<**(!VPa6g!2fXks/5pspo=@ps/PprpT"7os/bgorN64*
+Yd",3rj)I.s0Vd5rjM^5&@f9^]=l#!b0JPliTKV"q>Kj`'XFa5O+i:BJsrmXOG8.1H%DH_Z+'_5
+qQG*lIt3'#JqJ]/Knb>;Ll$tGN/WaVO-#KeP*;/rQC+&-S"#q>StMdNUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGd^;%J"_Sa@3`lQ6DbKS5Vcd:(feC<%#f@\g2gYL]Bhr*JQj5]7`k3(sml0@U$m-X60
+n*olHncJFTo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s0M`U~>
+JcC<$PQ1.Or;HQkqYU9grqZKerqHHdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rojIIkPjTJjlGL_
+j5T%si!8/rh;-l@L5,Y\",);ZK)1&qJGt&uJGt&rIf"NnIf+U<G\CK'@q9e)DJNctBNB_7IX69_
+F)c2;CM@F$Yb?G\E-6R,Hhr-hHhr'UH/s5IH2DpcHiICj:/=W0G'%hHE,TW2CM@BjA7AtU?X6rL
+BP1rVBE)WMBkV-[=&t9<rJ:]4KnY88KDgK&Jd?pZG`c]XF*E$2I/nZoI/n`fII2C_H[PI3%srVJ
+H$Xa]G^+L[H$FRZH22adH2W'gGlW0bHNSS@H[Pa<rd4]mrd+Qh!-nHd!-nKerHA0arc\9b!d8g4
+r-86ercnEfr-86cq0;marHS3brcnEfrd+TkrI"Wlrd=`ms*Xin!.=cos*jcnrIFlurIP'&K^s`q
+K`6T(Hi@shDJ3ZqA7e_;qG[>lr)NGkpfHfaqc<blrD3Gis%iVh!)NPg!)2m@oo0!2NV\\3NW+t:
+O8Y1:OTL].Oo(=/P5pjHPQ-d^OckomQ'[u5UT1N*]Yhk<e(<=0hVdAOrnn.@hV?oBhNX%WI!>R3%
+tfb$H?F+CCiOoWLlI7GK)11FIXcluJV&N,KS>/8LPUeDMN!LRNfT9aP*2#oQ'Rf)R@B\9St;UKT
+qeE[VPgAmWiW>*YHY:<ZaI6N\@K2`]Y;.r_8=+/`Q$!?b0/#RcHjkbdaZdsf@S[/g=tH>hV[8Mi
+oB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rqQNhrqcQirqu`noDX=@JcE(VJ,~>
+JcC<$PQ1.Or;HQkqYU9grqZKerqHHdr:U*^s7?3[s7$*YrU9dS!:BaO!pf.:rojIIkPjTJjlGL_
+j5T%si!SAuh;-l@<)lpt<;]bk<;oeu;Gg:hr)<VnrDESm"&Vro;uBN<0.JA)/M0"@1c-mA1H%Qb
+5!1qj3]T8\2E*KNAP>Wl:fC=mkYq:Tr_rbphc'MRqG[Dl'J;'s2)@E[4?Pbf4#f5[2Dd6G1,/\^
+""uGg2Z5K52#]?:2Ej;e8kDVR9)qQ^8.\9\7Rp!=7moa62F1,8;GpBk<;ohp<;fbo<;fbq<W#eq
+;Z0Pj<;oer;YX2j;Z9Vo;?p&q:f1(g<)iWks&/kqs&/hn!)iPi#?"K!<)Zaq;uK\p;u]hs;ts5g
+;ZBSq;Gg<j;?0Yp;Z'An;Gg<e;Ys>g;YsDm;Z9Vp;ZB\o;Ya5o<)Z^n;>sJn;u]Yo;>sJn;uBPn
+;#sTprDWYo!`Mupr_ierr`/qsqc+/-<E)ss:Jk%i:J=DS8lAR`;uK\n<VBJg=6s&d<rbJa62s4I
+56a;95sIRq=Sc,!=T2J$=SQ#!>5)1r=T2J%>5MP&=p%o2=]t`-s&o5&r)s&%q,[i(=&r=#;Gg7e
+r_XG2=^5EJD/j`FJ:`K1M2@+IM26tAK7WuM(Kt$F:Jjk`:K17l:/F\\:JFbg;H6[p:\n"6IXclu
+JV&N,KS>/8LPUeDMN!LRNfT9aP*2#oQ'Rf)R@B\9St;UKTqeE[VPgAmWiW>*YHY:<ZaI6N\@K2`
+]Y;.r_8=+/`Q$!?b0/#RcHjkbdaZdsf@S[/g=tH>hV[8MioB(\k2tjjl07L!m-O--n*fc9rpg-^
+o^r.U!quB_rqQNhrqcQirqu`noDX=@JcE(VJ,~>
+JcC<$PQ1.Or;HTlq>:0frqZKes7cNdrUp3_s7?3[s7--YrpTmTs6]gP!pf.:rokNgkND!ijlPR`
+j5T%Vi8EMLh;-l@g=i<rTqS-PT:VYRSHPIPS!ocBR/`KQR/WEPQN!0LPl?pJPl6mFPTY`sOGRS?
+Q]R)`NK1*BVl6AaSsu%0O,o0V[DADWH\@OQO8Ft:O8k70NU2VqNW"k;O8Y._OaVU`?<s1pS=Q.9
+QBdSmM2-h=KS+l*I!g[(L5CkGMuJS7N/R[E!P,`<[0!_AZi7<GZa-g=Xf\Y+Tp0nQLlRacP`q;o
+P5:@DP*;.0P6I,3OcYZer0$r@s-!DE!0@,@s,[#<!g/Y.rf@,@rf@5EOH5G#N<"q8NW+t;NW5%=
+NW4t2N=1c+NK9-^OHP`fOH9="s,@,>Mi*DdM>`>2M><&3MMmCLrJ:H0rJ1Q5Mi*DjMu&D4NV8>1
+NW5%;O8P%;N<bK'NK0$[O-'@'s-!DG!L8uLQN<JAqjRJQs.'.]r1*hXrLOLiS"-">SUPp6H?X=I
+D0#MPr`&hrpK%/mpfQlcpfIQ"=T);#<sD],<)m""<;!0hVuWglWrK.!WqrdjWrK+"XR`LlXoY`1
+riuF-r3HC1rNuX6qR?L7&%T9`]tq\2d+@+6l0n9>r:'^q^WiRANJ<CGMR'dsMM(nT#DAeJ['Qm<
+X89#CIt3'#JqJ]/Knb>;Ll$tGN/WaVO-#KeP*D5sQC+&-S"#t?StMdOUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGd^;%J"_Sa@3a2lBFbKS8WcdC.heC<($f@em3gtgfDi8ESRj5f=ak3(smlKdg'mI'E2
+n*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$ZN#F~>
+JcC<$PQ1.Or;HTlq>:0frqZKes7cNdrUp3_s7?3[s7--YrpTmTs6]gP!pf.:rokNgkND!ijlPR`
+j5T%Vi8EMLh;-l@g=h:9KnY25K7\^OJbjosIfP#uJ,OilIK+cpI3<B;<,#oCFDu&0BPVC8J:2fj
+H$4=MDJX*$B8;RrBlA+iHhi'hHhr'aGlW0bH/s5IH2DpdHRW6,:esi1F`_\HEc>u6ChRHl@q&qW
+?s[,NB4baiB4tskBk_6]='(B?rJ:Z3KnY88r.G'&rdk?&H?j=GFaEt6!.=co!.ONfqg8BlnpCFa
+q0E'gHN&6lH?oL9rHSNlH$OX[qK`?kH?jg`H@#R9!.+Nh!.=cms*FZlrHnQlrHnQjs*4Thrc\?e
+r-&-arHA<fGBWq/#'bE<G^4RZrHSBfrd"Eds*+6_rd"Kfs*4TjrH\Ef!."Nhrd4Tkrd4Zmrd+lt
+H[C-fI=6SDJ,aurJ,OotJc(*$K7npVK)gT%KDgK%K*m9aE,ff7Ch@9jB)>O+<;fhk<r5tn=R92d
+=T)%q:]O;e:&muZN:i/3N/`hnNr"b8Nr>%;OSY(>P5^UAP4"P6Pl6gEOqj1FQC+28V5po2^;S4A
+e(<=/gtgiCrn[Y2rnJ(@hVXd$MhHJ#H$+FpN/`%%rbVm\Jq])@Lk^QYKm%rrJ:W<)K7nr5L51SA
+M2I7NNK0']OckllQ'IZ&R$jG5SXuFGTq\<XV5C/hWiE/&Y-5(7Za7'J\%&u[]Y(tn^qmn*`Pom=
+ai_fNcHab`dF6Upf%8O,g=k?<h;@/KiSrnYjlY^gkiqBum-O--mdKW6nc&([oCW%Ts7QHerV6Eg
+s8)Wirqu`no_sFAJcE%UJ,~>
+JcC<$PQ1.Or;HTlq>:0frqZKes7cNdrUp3_s7?3[s7--YrpTmTs6]gP!pf.:rok<akND!ijlPR`
+j5T%Vi8EMLh;-l@g=fP+<;T\o<!#ut<;fbn;YsDm;Z9Pl;Z9Vn;AC`2.kN;+3&EEG1G^jT69dRp
+4ZYYdr\k*?2EsT":Jk"grD`Pj!*&Vip/:oh!*%`Pr`&_m">2>b2)G4p&Ni3;4#f2Y2Dd6G1,1L;
+0ebE_2%;H$2DmBL2E*f`4\JC=r_!5_rC@Dg7Rfm=7n6!:1-S6*:K.-ir_rbprDWVnr_ikt<E/io
+!E<(n<<#ks;Ya8k;Z'Jn;Z0Gp;H$Ooq,@8js&8qqs&&eopJ_)ipf.5kr_rqt;H!?gr)3Pl!)ien
+!E)kq;Z'Dl;ZBVj;Z0Gu;Gg:h;Gg:h;YF&b;ZB\p<;]Yr;Gg<j;?Toq:f1*b;ZBSo;YsDk<<#kp
+;uTbu<)Zcq<W,r.<E)su<`W$o;H6Ld92&"U;uTbp<VKPk=85na=nu2"62s4H56O/85<q=.=8uD$
+=oDIt=TDY!=o)8"=oMV%>Q%_+=^(f-r`T;)qHEf"s&f/"s&f;&"'/E#;Z'?';H?t-A8,q%GC4pm
+KSG8;Lkkta!J>t#IMc=%=]J?q;,C.l<`Vpi:/+GZ<)Zgu<E2ll;g*Y@J:W<)K7nr5L51SAM2I7N
+NK0']OckllQ'IZ&R$jG5SXuFGTq\<XV5C/hWiE/&Y-5(7Za7'J\%&u[]Y(tn^qmn*`Pom=ai_fN
+cHab`dF6Upf%8O,g=k?<h;@/KiSrnYjlY^gkiqBum-O--mdKW6nc&([oCW%Ts7QHerV6Egs8)Wi
+rqu`no_sFAJcE%UJ,~>
+JcC<$PQ1.Or;HTlqYU9grqZHds7cQer:U*^s7?6\s7--YrU0gUmHso>s6B[MrokNgkND!ijlPR`
+j5T(Wi8EMLh;-l@g=k5TTqS-PT:VYQSc>/[R[O#>!LK2QQN3?NQ2QpIQ2[$IQ2[!kQApN[KSQ4h
+Q&^TWO-HcDVPU&]S!T;#N/NS?VOVdUJ<KPcpl>?7!06Q.m#:LprJgl=rfAX\IU-8dTq@mHS!B8'
+OcP?SL4b24Jpr)qLPUhEMM[7JMMd@MN+-8-\@&dE[/dT5Zi@BMZa-g=Y-"auaEN&`MNO3jQ'RYu
+PEM,nPa)*0"I,+6P*5a*r0$r@s,m_OOH5KbOcYZeOH9C&s,m>E!0R5ArfR5B!KW9:NVne:NW+t9
+N<#";N<"q6N<#"<O9C`.OH5J$NrG">N/NVmMZ8P5MuAP5MZ\inMMh@j!0$i6!K)a4M#<)1Ll21i
+s,?r8qi(N6repi:qi(N6s,R,?rf@,@rJpo;rJgl=rK%#Arf[;F!gK";rKmSQqjRJQ".YpRT)>/W
+T)P8YSI1@*I!^'SEG]Yn;uTbp<V]\n=8Q+O=o;>"<s)E%<`]!nrMT^qq5XFps/PprpT"7os/bgo
+rN64*Yd",3rj)I.s0Vd5s0hd5s1&*?%D0?laNW)bhrO(lp%eORrtr#EUQgUkMhRP6[[W)#H?k(&
+VPpl)Y-"i&YQ',tJV&N,KS>/8LPUeDMN!LRNfT9aP*2&pQ'[l*R[]e;St;UKU8+N\Vl-MoX/rG+
+YctF>['d?O\[f>b]tV7s_SX71`lH0BbKJ/UcHstee'uq!f@\d1gYCWAhr*GPj5]4^k3(sml0@U$
+m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s0DZT~>
+JcC<$PQ1.Or;HTlqYU9grqZHds7cQer:U*^s7?6\s7--YrU0gUmHso>s6B[MrokNgkND!ijlPR`
+j5T(Wi8EMLh;-l@g=k57L4t;6K7\^OJbafsIt7NJrI4QjrdOip+`D"&C11XsEGfN&Bkqa?I=-?d
+G&qYAD/*`sTRM3"D/jt!Hi/9hHhr'dH2W'aH/s5HH2N!fHiIIQ:_Z]MGBJ%MEH#i4ChRHn@UinW
+?s[1:B*r<bBPD0oBieAqN;\S9L4t>9L&?T(KDpH+H')fYEd.J1!.Ofns*jWhqgAElrd4]op3cme
+qKi$c"+#<?HMr*hGl;p]H2r<kHN/6jHN&9kH3/G@Hi86kH[Pd=rd=Zkrd"ZlG^+H3GlN!eGQ`58
+GBeB1G5umYH2`$gH2`'fH2DgjH$FUZG^4T5HMr-fH3ASBH[L5?IJeKmHi8<lIJnWpJ,XorJ,Ffs
+Jc(*"KDpQ'KE$W&KCsm)H?!nCCh@?lAQ)P,<;fhm<r?%r=P6jV:]F5k:]!lf:JUP@o8WU,qMkN8
+r/^i=p6#<:mZ[U6rfd;D)3^;LQC=D=Vld;9^W+LEe(34+gY:N=h;$fbg]-%Ih;I;QP`UfQH$"CU
+JshRJF`)#3DgI%jMhm2aL&Z[JJV&N,KS>/8LPUeDMN!LRNfT9aP*2&pQ'[l*R[]e;St;UKU8+N\
+Vl-MoX/rG+YctF>['d?O\[f>b]tV7s_SX71`lH0BbKJ/UcHstee'uq!f@\d1gYCWAhr*GPj5]4^
+k3(sml0@U$m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s0DZT~>
+JcC<$PQ1.Or;HTlqYU9grqZHds7cQer:U*^s7?6\s7--YrU0gUmHso>s6B[Mrok6_kND!ijlPR`
+j5T(Wi8EMLh;-l@g=k6Z<;]bp<;fbk;Ya8j;>jDk;uTZD/1N&$.kWh=1,(C<1d48k5!;%i4$,>\
+2`<Ng5Y4XH:fC:l<)lms;cN3aoMX@@s&Akos">-G2)@E[4Zbeg3]K&W2Dm?H1GCO;0erVbs"t0B
+2)R3K2`Nua9M.nU9)qQ^8/"K_7Rp!>7n#j*5YXsM;cH[p<)ros!`MuqrD`bpr)EYo!E<(r;u]es
+<Vf\p;u]hl;u9Gm;uT\n;$0]p<)iWk!)iepr_`ep;H!Kms&/hprDEVoq,I>lrD`boqbd8h!Dubn
+;>X8j;?'Pn;>X8i;>a>j;$0]p;H!<hpeq)jr)<Pls&&eos&&Yks&8qqs%rboqc!Gm!E2np;[$-#
+<`E!rr`/kss&9M/<`W:&;bp7e;,'_W8lJ[f<;fhm<r?%r=P6jW5la1H56F)75=,9Ms&f5&r)ibt
+s'#/"qH3`"rEB)&s'#;&r`T;)q-*]!!*K/#rE'5)<`N*t;>j<#;,gY$?Y*qiF*N+_JV3rTrIk<*
+JU[NF)h*<g=Bnp*;,0n`;d`R#;,'e[9i"_e<Dugq;>O5kJ9ZWsK7ei2L5(J>M2@+KN/`jYOHG]h
+Pa.N#R$a>3S"6.BTV8*TUnsueWN*##Xfen4ZEppG[^WfX]=bhk^VI_'`5Ta:aN;WKc-FV]dF-Ln
+e^i@)g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mdKW6nF?)?oCMVRo`Fj]p\jmeq>^<hqu-HkrUg)?
+s+13Us*t~>
+JcC<$PQ1.Or;HTlqYU9grqZKerqHHdrUp3_s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D!TiDA
+it^S4i8EMLhVI#CgY1B7fV,"3T:_^HrLF"[R[O/Bs-N\OrKmJJplkcDrfeS!NeNdULS:0'NJERU
+B<JA8V5'`UR$NhnMMZ/=`H$BWL\$T$NrG(>Npr%qN:Do,NrP.jOFDY,?=8edSt2::P`h2jLl$e<
+L4b#+I!pg,M2I7JMi!=MN/NX(@CitVrjDj8[/RBA[C!9GYck44SYD?pJ;B6aQ3<J=Q'@O4PPg[F
+PQ-jIPQ$aEOnt7<P6$i/rfI/B"H\b.OH9C&s,m>E!0R5ArK7,@"-/A$Nr=t7NWP3#Nr=q=O,f8!
+NW4t8N<G9&OH>V'OSk.:N<+urr/(W8N/NRNp5Ap/rJUW1s,$Z2o8NU,s,6r;qi(N6!07&>s,[GG
+NfK0\NK*ms!0@,@s,m>Erf[DKQC%Q;!1EeSqjRbZSXuFDSGeuYT)G5ZSG\obRXT[4H#[hAD/rVT
+<V]\o=8Z1m=m9,`=TDP%<rQ2#<<6'#qksCks/GjprMopuq5a7is/Q.$nu_nos/uF,rNZ@-r3QF1
+!4Dd6qmZU8s1&ZO]>2A,cILY-k3MR2q>:0ZrtrkeVk&p)MM6hb\Z1^FH[C!jSZ9!-Xf\Z"YB,5F
+JqJ]/Knb>;Ll$tGN/WaVO-#KeP*D5sQ^F//S"#t?T:hmPUSO`aVl?\sXKAY0Yd1UB[C3QT]">Vg
+^V@V%_o0O6aN2NIbK\>Yd*^:jeCE1&f\5'6h;-rFi8N\Uj5oFckNM0plKdg'mI'H3nF?MK!qZ'V
+rq-?dp\4[^s7uZjr;6KkrVc?eJcC<$ZN#F~>
+JcC<$PQ1.Or;HTlqYU9grqZKerqHHdrUp3_s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D!TiDA
+it^S4i8EMLhVI#CgY1B7fS,$4K7ec-rIG!"JbO]nJ,OikI/n`qI3EcI@W#dhG]I_;ASPs\Jq/8r
+G^":NEG]K*B2s/BAo)L1pNujdqg80crd"Bepj)"Hpj)d`)1,[s?;XR:G]n1LF)Z#7CM7?k@q9%W
+?sR+;B+/HcBkM-pBkV3^<fN(:M$&KdKnfP[s+C]2JV/,mG\qGBHi/9nIXQ\DIK"ZrI=D0D!.Ooq
+!e,QGrd4frI!pGBI/SKlI/eQnI/\KiHMMpeHN&3iGlN'`HN/?kHN&0iHN&9kHN&9jHN/<lI/SEl
+I/J?iH2r6dGQ<$_Gk-.YGl;mgH?oC4!I8qfH2N!fH2W$jH[L8@I/eWmI/eQlHiSTnIf=isIfFop
+J,k0!K)^K%K`?])KE6^WrIalurIkT0E,ff6BP;!gAlSb0q,[Gqr)iSol!!d`"A_ij:J^sb!)NSh
+pPe^'q2YB4rf6o;rfHr<!0[>DrfZZ4rfdSMP`q;oP5^[FPS0=PT;/Eh[Ca5qc-Xnhf%8R-g&'M'
+gE,/+i8WeZTp:UlIs60\GDhW>GBIb@CiXuXM2[:HKDC4BJ:W<)K7nr5L51SAM2I7NNK0']Ockll
+Q'I]'R$sM6SXuIHTq\<XV5L5jWiN5'Y->.9Za@-K\%0)^]Y2(p_8=+.`Q$!?b0.uQcHjkbdaQ^r
+f@S[/g=tH>hV[8MioB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rqQNhrqcQirqu`noDX=@
+JcE%UJ,~>
+JcC<$PQ1.Or;HTlqYU9grqZKerqHHdrUp3_s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D!TiDA
+it15/i8EMLhVI#CgY1B7fMkiK<W#hr;ts8c;u]_n;Z'Jn;B[\C.5<G,3]8lQ0JbOE6U<q"4?Y_c
+3B/rU2(Lmc92A>]r_rer"&r9"<;oer<:j,[;VG(L<;f`#/h\k81cdiar]C0ArAOg:1c$rd0aKHk
+1c@6L2)[;j2?,W84p"DM8cD?_8c2-Z7LM^W7n6$(5"AFG;H!Kms&92&<)lmq;H*NnrDWVnpJV&k
+r)N\ps&8qspf%,hs%rns;,L4hrD<Pmp/;#j;cEQkrDW_or_reos&8bnrDNbs;cN]or_`Aes&&eo
+!)rhos&&eo"&Vrn;>X8k;>O2i;#sQnr_iPjq,.2kr`&hprDNMir)*Sp<)iip!Dubl;u]hm;[-3$
+<E)mp<;okt<r>ts<rH),<)-:e;G0\V91i1_<V]\o=8Z1m=m9,`=TC_a56jG;5=%P9=BPQ*r)ibt
+s'#,!qcNf"r`]2'rE95)>5h[u>5VP'=T2D"=T;G*<`N'r;>j<$;H6h(@:j:nFEr:aJ:W=NKE$N+
+J:E#rIK"U6IXm$'?<LK3;G^:g;-$ds9M\DW:J=\f;H6ar;>F.3J:W<)K7nr5L51SAM2I7NNK0']
+OckllQ'I]'R$sM6SXuIHTq\<XV5L5jWiN5'Y->.9Za@-K\%0)^]Y2(p_8=+.`Q$!?b0.uQcHjkb
+daQ^rf@S[/g=tH>hV[8MioB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rqQNhrqcQirqu`n
+oDX=@JcE%UJ,~>
+JcC<$PQ11Pr;HQkqYU9gs7uQes7cQer:U*^s7?6\s7--YrpTmT!:BaO#OC[?l07EqkPjTEjlHF$
+!TN);i"=l'h;-l@g=k64f:ek1T:_^Hrga+\S!j8Crg3SNrg3YNs-<2?+HqOoObIG;R?*2bN/as@
+Vl6AbSsu(2OGo'[g!uX>ItmKSpl><6!06Q.mYp[qrJi+`IslcO??`!3St)45P`q/eMhd"?K7JE"
+I><W5Mi*CJMMmDlN;m>g]"#0I[f<c7ZOXCM['?j=YHFVBGCP7'OoCXHQi36MQ2QsHPl[,5rfdDH
+rf[8CqNC`>"Hnn0OHBI("d4t.O-#J&OoCLFOcY\&OTCQ)r/Uf:p5]04!fi>%rJgf8r/C];qN1`<
+rf6r:s,I/>Mi7Rl!/pi8repW3!fN"sr/:l=M27"FLl%#fMt;o'NVe\6N<5-$O8P+=O8Y+=O8k=A
+OoCOBP6.#8Qi<?PRJWHMS,]#\St2DKSHGCQSXfGF$%dSRG][k@Cii\R<rH+u=SGtp>3B,c>5_V'
+<rH)$<E*'!Vu<RnWV`^nWrT0rX7rXoX8f9mXo5C(YHY81Z2V'+ZN.E2[emQ5\.cEa]"Pu#bL"kr
+iof\!p%S=\rVl6b(pp`KQ&gc^M4(]VUl0\JH[CI@WO9"6YH%E%Ee&^mK7nr5L51SAM2I4MNK0']
+OckllQ'I]'R$sM6SXuIHTq\<XV5L5jWiN5'Y->1:Za@0L\@K2_]Y2(p_8=+.`Q$!?b0/#RcHjnc
+daZdtf@S^0g>(N?hr*GOioB+]k2tjjl0@U$m-X6/n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTd
+rdk*#s0;TS~>
+JcC<$PQ11Pr;HQkqYU9gs7uQes7cQer:U*^s7?6\s7--YrpTmT!:BaO#OC[?l07EqkPjTEjlHF$
+!TN);i!eN"h;-l@g=k64f7enWKE$Q&Jb4KjJ,auhI3EH;;effAF)c#/CM@O8J:)`iH$+:MDf'6%
+D5j1XCN4NFp3Zacqg7jZpj)%Ipj)d`ra,V#(LD<-FE;JADf'<*BOt^a@UNSM?Y=%`B`;ZAB`hF;
+NK!gms+UQ.LAZ`5KS+l/HBDo[F*E(^r-eNms*acnrd=cqrd=isI=;*B!e#HErd=Wlrd=]lrd=`m
+qg/'brd+TircnEf!IB+hHN&9kHN&3iH3JYAH$Oa`rH\Hjrd=`ms*X]jrd+TiqKVp`!dK!8qKW'e
+qg&-bs*=TgrH\Eh!."EcrH\9drcnNjHiA<nI!pBir-eEhrd=cqqg\Wps*srs!.k'"s+C9'rdt?,
+K7\`.r.G-*KS9)R$$1')DJEfrAS+s=<rH+u=SGtp>3B,c>5_S*:esmd:&n)h:ATq?NV\\5NW+t9
+O8b7:OT:RDOo:I1PQ$dKPE_8or0':.QC489V5pi/]Y_b5cI(+ieCE.%f\+s1f\,!5gtq#LjQ>[l
+PEUrUI!:!_JrbqHGAh>:D/t5^Mi3@GKDC1@J:W<)KS>/8LPUeDMMmFQNfT9aP*2&pQ'[l*R[]e;
+StD[LU8+N\Vl-MoX/rG+Yd(L?['mEQ\[oDc]t_=u_Sa=2`lQ6DbKS5VcdC.geC<($f@em3gtgfD
+i8ESRj5f=ak3(smlKdg'mI'E2n*olHncA@Srq6<b!;HHes7u]kqtpBjrVcBfJcC<$Z2]=~>
+JcC<$PQ11Pr;HQkqYU9gs7uQes7cQer:U*^s7?6\s7--YrpTmT!:BaO#OC[?l07EqkPjTEjlHF$
+!TN);i!eN"h;-l@g=k64f2P`J<W,ns;ts8c;u0Dj;uTZ*.k)u%/29.B1GL[@1IFJpr]CWN4?GJZ
+2`<L!91VlU<;ohr<<#r%<`N.!<)`cqoMb*SiD]bUr_rhL'/)1!2a9Ge4$5Sa3&`cS1c-sB0`Eg+
+2#oQ32$Z$"2a0E!8kK"Ts%3/[%n9&Z84Q0>3'^88;H$Om;Z9Sp<;ff";c6Ll<;TVl<;9Al<;T\p
+<;ohq<;KPk;ZBSp;GmEkrD<_r;c?Rm<;0>h;?Bfr;uT\p;u]bp;u0Jk;ZKep;ZK_p;>=#h;u9Go
+;,U<k;>sJn;>X8k;>O2h;>jDh;ts5j;uK\o;u0Ae;?Bft;uKVl;uK\k;u]i"<)Z[or)E_rr`/\o
+#uXVs;+sYV91i4\<rH+u=SGtp>3B,c>5_V$5Q<nJ5sP?OrE/hts'#,!qH3`"rEB,'r`]>)!*]A)
+oih8rpK7Gs"'/B#;Z'?$;c[%,@V9LrFa8=^IXckEJH()rHlmcdJ:`H/M-4%b<)QIc;,^Uu;GU"^
+:/+M`;HHjt<)EBhEe&^mK7nr5L51SAM2I4MNK0']OckllQ'I]'R$sM6SXuIHTq\<XV5L5jWiN5'
+Y->1:Za@0L\@K2_]Y2(p_8=+.`Q$!?b0/#RcHjncdaZdtf@S^0g>(N?hr*GOioB+]k2tjjl0@U$
+m-X6/n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#s0;TS~>
+JcC<$PQ11Pr;HTlqYU9grqZKerqHHdrUp3_s7?3[s7$*YrU0gUmHso>!pf.:rojIIkPjThjlGL_
+j5T%Vi8EMLh;-l@g=k64f@STHTV%jJSt2FBS!f\3R/E<NR/WHNQLg=aR#HW\L52CiQ]?f[Mf#Po
+Vl$5_S=#V(O,Jmt^70:mK9Pecqi:N6!06Q.mYp[qrf/+NIXbX0ELr_nS=>k2PE:`[LP1;4JUi2t
+LPL_DMMm=JrJLf;@UZmYrO2a6rj*-C['[-CYHN/?Q$\(<O-c44Q2m9LQ3!8:rfmbTQ'R]"Pa7Su
+rK7/CplbT>!0[>D!g&P,rfR;EO8b7?Oo:FCOSk7?O9Uc+NfT3[NVnh:NW"n;N<5-$Nr=t;N;ee:
+NrG+9O8t@?Nr=t;NW>(9MuSb9Mu&A4NW+n9NW4q<Mi.Fh!/g`5o8NI(!0$c6s,I)?r/gc9rK.&A
+rf[5D#*bF?Q^F/.qO7>O#Fq?VSXc4@Sc,)OSc>8fSVqrDH$=1GCN9;Rr`B&#pf[MuqHN)eqHNi#
+s&T)"s&8u"rM][or2TCip8S1pXK;#qrN?1(s02L-rj)I.!OT94[f!W5\.lKb]>);*c-k8#iooe"
+o_/(UqY^<[ru(.0W1oE6MMHk[XK7_BI!^-gOeo7hXKAV*q6+smJqJ]/KnbA=M2@+JN/`jYOHG]h
+Pa.N#R$a>3S"6.CTV8*UUo(&gWN*#$Xfnt6ZEppH[^`lZ]Y(tn^qmn*`Pom=ai_fNcHaeadF6Uq
+f%8R-g=tE=hV[8LioB([jlYail07L!m-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu`no_sFA
+JcE"TJ,~>
+JcC<$PQ11Pr;HTlqYU9grqZKerqHHdrUp3_s7?3[s7$*YrU0gUmHso>!pf.:rojIIkPjTZjlGL_
+j5T%Vi8EMLh;-l@g=k64f@SUPKE$Q'Jb4KhJ+J(5E+`Tq@q9e'E,&ouBNTh7I<p-\FE2D=Ch[R7
+NI#;WF*i:^p3Zacqg7p\p3GkHpNcaa+'r;]:Jb5=F`_\HEcGu5C1q3iA7AtT?sdPZAnPajB`;`G
+BE`*O<fN&qreUW1reC<($\X+:G^+(FFF&FdIf+WiIK4lrIKFqHIf=cqIfFfrI/SKmI/SKlI/\Kk
+I/eQlHN&9kI/SElHN&3hGlDsiH@(#8HN/?lHN&3gHN/9gHN/?gI/SBlI/SBjH2;dcH2i3fGlW0i
+H2`-hGm8M;GBe@XH2`$gH2MsgH2DjbH2;ghH$Xgbrd+`pI=6M@I0"_Dr-\Kl!.OfprdFisr."cu
+rIY$$rIk0&"b_M[JqJ^SK`?f!Ka;pCE,]Z,B4PQO<rQ2!=SQ%s>5DIc>l%\%>5qCp:Ap.BNV\\5
+NW+t9O8b76Oo:I1PPgXGPEc!/s-+:cR\$7NXKf7K_T0gCcd:(geC<(#f@U#S,hh#-hVdDSkNV@#
+\Wi)/IsZHaG__-3I!'=FCiF`RL5h"EKnK2SG(G6tK7nr5LPUeDMMmFQNfT9aP*2&pQ'[l*R[]e;
+StD[LU84T^Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J"_Sa@3a2lBFbKS8Wd*^7ieCE.%f\,!5gtgiE
+i8EVTj5f=akNM0plKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]kqtpBjrVcBfJcC<$Z2]=~>
+JcC<$PQ11Pr;HTlqYU9grqZKerqHHdrUp3_s7?3[s7$*YrU0gUmHso>!pf.:rojIIkPjT[jlGL_
+j5T%Vi8EMLh;-l@g=k64f@SSQr`/nrs&8\jpf$udrDW_o&M#=Z0.SY82)@!A1G_!W5X%@03t"#,
+2`3KY6qC*N:f@6js&Atus&JqqoMb*SiD]bU),i.@0JkUE5<V.k4?PV`3&``P1bpj@1,(E]2$,Zn
+2Z,E:2`X&c9M.nU9+jig84c?C7Ros>7n5-q7o)u[;uKVn;ZKeq<<-"t;ZB\q;ZB\l<;BGm<;]bp
+<;ohp<;TVm;Z'Dl;Z0Jj;?9]qrDW_orDWYm%9$5);c6Ll;c6Ll<E)on<;TVn;Z9Vp;>F,h;uKSr
+;c6IiqGR>jr)3MkqbmAirDNJjrDNMkrD`_o"&_un;Z9Ph;?Bft<;KMm;uK\q;ZK_n;[-3$<Dudo
+<W#hr<<-(m<sV`%:fC.`91_bS<rQ2!=SQ%s>5DIc>l%\%>5LMd5!V>8rE/kus'#,!qH3]!r`]2'
+r`]5&oih8roiV5p!``/rrD3o#<**:1A7ob!Fa8:Zrd4cqIXV3E!I]@nHQdfdJV&T3MMu4O>?4U!
+:Janf;,^4b9hnJZ:/k.l;H$Ljq,;HfJqJ]/KnbA=M2@+JN/`jYOHG]hPa.N#R$a>3S"6.CTV8*U
+Uo(&gWN*#$Xfnt6ZEppH[^`lZ]Y(tn^qmn*`Pom=ai_fNcHaeadF6Uqf%8R-g=tE=hV[8LioB([
+jlYail07L!m-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu`no_sFAJcE"TJ,~>
+JcC<$PlL7Pr;HTlqYU9grqZKes7cQer:U*^!;$0[s7--YrpTmT!:BdPs6B[MrokEdkND!ijlPR`
+j5T(Wi8EMLh;-l@g=k64f@SU(rh0:_s.'=`S!oe6R/E<NR/NBMQ2m3CPTlicKUIaSURRR1M2[L/
+Y-"\%URn'HQBR;fMSl!NF*iP(ORJ80Nqe\8Npr%sN:;f?NdcJ-?=%6;StDRBQ^!euNJ`OEre(H*
+It!61MY`58N/NU'@Cs&J[f<`9Za0P:$aR"?Yc5B]It`cCQN!3NQN!6JQN!-TQBdc$Pa.Q"POan8
+PQ-aFOT(CBOopi.O-'=&r0%#@"Hnn0OHB@#s,R,?s,R,=pQ#64s,?r:!fi>&q2bT;rf6i7s,?u9
+r/CZ6$&jk&N/`gUNJrhoN<>,tMM_:hrJU<,!KE'8N<>3#NK3mqs,Q]4rfR/BrKI8Grg3VO"IY^I
+S"'DGrL<hWs.01[rgj%Yr13kXr13kZrga@\IXHKeDK0T3<rQ2"=Sc1u>5VUU>l7e->#n]'<s2K&
+<iDtrWVidfX7rXoX8f9mXo>L'YQ(g.Z*:M3ZMh*1['fe>rO;^7'tLog_8XOBe(NU<kj@m1o_8+T
+qY^<Zru&GZV4!L*PDGX-X/:i+H[:*oSZK61XK8J(qQFjhJqJ]/KnbA=M2@+JN/`jYO-,TgPa.N#
+R$a>3S"6.CTV8*UUo(&gWN*#$Xfnt6ZEppH\%&u[]Y(tn^qmn+`Q#s>aihlOcHaeadaQ^rf%8R-
+g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6Egs8)Zjrqu`noDX=@JcE"T
+J,~>
+JcC<$PlL7Pr;HTlqYU9grqZKes7cQer:U*^!;$0[s7--YrpTmT!:BdPs6B[MrokZkkND!ijlPR`
+j5T(Wi8EMLh;-l@g=k64f@SU(K7ei/Jq8LFJGFZpIeA+6GACZ,B4cI3Deis!CKH+<IXQKaG'%_A
+CMIRJH?a.@Fa\UaoR$Oaqg8!^oQf\Gp3@F"?!gr7:K)R^F`_\GDf9K.C1h'f@V#IG"__O\BP2#T
+B`qL;NJrboM#`>1L&d#,Ka<?aH]2ZWEd3'4IfOrpIJeNqI=?\EIKFqHIf=cqIfFfrI/SKnI/A?l
+I/\KhHieY@HN&9jI/J?kHN/9jGlE!gHN&9fHN/<mH?oI8"+,?>H2Dp`I/\HnI!bj=r-A<es*=Wh
+s*=Tir-8?iH$T=6s*4]kGBeB0H2DpfH2W!dH22aeH[>[=s*OKg!IfIqI/\QnIfP#rJ,b)uJ-(:R
+K)C9"K`?])K`?Z(K)gT(L&Zo"L&Zl6J8fIGChRKnAQJe3r`K#"r*'#&em/,W!Er:s:'49eN/[@f
+q2YE5rJpi;rfHo;!0[>DrfZW3qNUoA)O-MSS"?@RXg>OO_oBg@bg"G[daHXqf%/I*rn/LMh;I>T
+kN_F$mdHL/N.ZS*Is?R)Lkg1oDJj<3It`f>Lkb\XE.NUnK7nr5LPUeDMMmFQNfT6`P*2&pQ'[l*
+R[]e;StD[LU84T^Vl6SpX0&M-Yd(L?['mHR\[oGd^;%J"_SjF5a2lBGbKS8Wd*^:jeCE.%f\,!5
+gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kr;6KkrVc?eJcC<$Z2]=~>
+JcC<$PlL7Pr;HTlqYU9grqZKes7cQer:U*^!;$0[s7--YrpTmT!:BdPs6B[MrokEdkND!ijlPR`
+j5T(Wi8EMLh;-l@g=k64f@SU(r`/nrs&8\jp/CfcrDOk;0IeJ+/hT1C2)?pB1cRig5s7=n3]]8\
+2`<Q_5tF^I;#=/m<)lrt<WH.r<:s2`;ZB\j;W1OV<%]dWr\O[@4[&d,!]`5"r\k*>1,CX?0JG@B
+q)/12"Z\b19M.nU9*e-]84cBD84Q/K8-_%<9hnS_;cEWmrDNhu<E3!sr_ibps&/kqqGd8h!*&hq
+s&Atrr)EJj!)i_l!`DrprDEJj!`N&rr_rhpr)<Vn!`N*!r_ihq;uTYr<)llo<;KN!;Gg:h;c?Rl
+;>F,i;uBMp;c-Ef;?0Sj;?0Sj;Ys>k;Yj>l;Yj>j<;]Yj;>jDm;?'Sp<;]\p;Z9Vo;ufkr;Z0Pm
+;ufhq;uK\p<W?,#<q]T$;bp7e;bg"Y9NM-or`K#"r*'#&em/,W!*]:b"?o(8=BPB%r`]"uqH3`"
+rEB,'r`]>)!*]A)oih8rp/q>r"'/B!;>j<#;H6h(?tF%hE-6ALH$]I:s*Xip!IT7mH5CjRI=Hj$
+L5ChINfI=J=&i-o;,L7n<`Aunr_3Vq<E<+";c-Hh;fI;>K7ei2L51SAM2I4MNK0'\OckllQ'I]'
+R$sM6SXuIHTq\?YVPgAlWiN8(YHY:;Za@0M\@K2`]Y;.r_8=.0`lH0BbKJ,TcHstee'uq!f@\d1
+gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s0;TS~>
+JcC<$PlL:Qr;HQkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrpTmTs6]gP#OC[?l07EqkPjTEjlHF$
+"leM!i8<Djh$r/og=k64f@SR&e=`G*rgj(Z"IkjJR$di=!1<YMs-EYLq33+fPa%JjBoe*`SXPb#
+N/j"%Wi)_jV4X0@QB7)aMP.tOI"7"OORJ51NqJG5Npr%tN:;fJIXQZO?<j+oSXu:;Q'@GlMMQt=
+KS"`(J;K)>Mi3SoMuSb9MZdL2]=>?L[f<c8Zi.6=ZE^TUQEY[dLQRjfrKdSOQ^@Q7s-<MJs-<VM
+!L/f>P5UU@OTUc/OHBI(!K`HCP5UOBP5^RFOHGY(Ns1W+NfT6]rf-]5pl,96rf?o;!0@)=r/C`;
+NVAA5NJrhqN<5-"N;JS8N/RXlrJU9+qMkN8s,I&=s,@#=rf$r=O8=q<Oo:C?OoCOBP6dD<Q'Rc'
+R$a<?RK/iVRf&ZTSH#/USGeuYSGJcVT)P;[S-XUnI!KgQD/47m=Sl8">5_\!>kVIu?M.Ut>lIt,
+=8l5"WVidjWrT0uX7rUqX/rDoXo5F&Y6;)7Yd(J4ZM_$0['fh?rO;a8(q7#d]=l)$b0SVkhrEqf
+n+$#Ap@nC[rVl0`(q$H?P`^l_LSUoISVr#EG^tODXLGI<Y,_<$Dh<UoKS>/8LP^kFMi<XUO,oEd
+P*;/rQ^F//S"-%@T:hmPUnjlcW2ZetXf\e2Z*UdE[^WcW]"G_j^VI_'`5Ta:aN;WKc-FY^dF-Ln
+e^rF*g=k<;h;7)JiSrnYjlY^gkiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu`noDX=@
+JcE"TJ,~>
+JcC<$PlL:Qr;HQkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrpTmTs6]gP#OC[?l07EqkPjTEjlHF$
+"leM!i8<Djh$r/og=k64f@SR&e:`I+rdjors+10"q1&Bmp3e'%AQ*8R;g!+tB4u$rJq&2qH[9jW
+E,f`0BkDXYH>@PEn9b+]qg8'`np0MFp3HXD"&VigGlDjcEsZi(DJX$!A7K+Yra5kBB4bdhrb2CH
+CAqoM=(.)IMZ/G4L]3#0LPCQ_Ka395Fb"7GF*db6!.Ofnr-e]qIXh3CrI+]pqgJKlqgJHks*OZk
+"FYZEH@#R;!.=`l!do?Ard"TjHMr-hHN&9kH2r6hHN&9iHN/?eH2r<gI/eQnHiSNmHMDdcGQ<$g
+HMr-gH2r6fHN/9hGl2j_H2r6iGl;p`HN&9iI//0mIXQZnrI"Tm"+G`LJGaosJ,k0"J,k0!K)L?#
+K`?])KE[![JqJ`0re1?,q1Sg'r.Y*(#]Xg&DJ<]pA7kgCqcWl$rEJu#p0IH"oj.8rr`f@sr_N-F
+q2YK7r/U`:rfHc7rK?Q3qNUoAs-+7aR@KqGWii_=^;@h/aND]McHsteeGduHf%8U.gYUoMjll$s
+mI0Q7gm*nVJp_ojG_q95J9PpLCiFHIL5_"HL%p=>JqJ]/Knb>;M2@+JN/`jYO-,TgPEhE"R$a>3
+S=Q7DTV8*UUo(&gWN*#$Xfnt6Za7'J\%&u[]Y2%o^r!t,`Q#s>aihlPcHjkbdaQ^rf@S[/g=tH>
+hVd>NioB+]k2tjjl07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6ir;HTcrdk*#s0;TS~>
+JcC<$PlL:Qr;HQkqYU9gs7uTfrqHHdrUp3_s7?3[!qGdLrpTmTs6]gP#OC[?l07EqkPjTEjlHF$
+"leM!i8<Djh$`#mg=k64f@SR&e5cEGr_rbns&8qqoi(]b!)rkp+=nrl/hJe:2)?pA1G_Ba5s7@q
+3]]>^3&WZG5>FmI:K%'gs&B"us&K,"qc*,bqGR5ipep*M#VI\^2)I'Q4[&d,$p$@,3&WWN1,L^?
+0JWJ_!&jd5s#1*A5!Ve68cD?s8kDQF8OuBB7Rour4ZQ55;c?Xp;uKVl;Zg!!<E/rq!)rho!)r\m
+qGRAnqc3Vps&8eoqGRAlrDESm!E2nq;>O/r;c6Ll;GpFn<;f_t;H$Rpr)<Sms&B"sr)EYnrDNbq
+;,[Bls&&hqqbmDl!E)eo;?Bcp;<UpU;#jMi;u]bo;Z]os;uT_s;c<Tl!)iYjrDNYm"&`&s<;]\o
+;?0Yo;ufkr;Z'Jm;ufkr;Z'Mn<W?+k<s2>s:f:'e9E&&j=oDP&>P;=q?2.b!?1qP&>Q6ni5X.J!
+qH<f$oi_/orE9,'qcj)(qcWPpr)s&%!*T,""]n`);c6Kl:_6N'<`r^:Anc+%FED\MGBeB3HN/<n
+H?jf8GU@]_I=Hj%LPh%MNfTBP=^"p*;GL%c<E)mo:/">U:/=ef=&i6u;#+%.JqJ]/Knb>;M2@+J
+N/`jYO-,TgPEhE"R$a>3S=Q7DTV8*UUo(&gWN*#$Xfnt6Za7'J\%&u[]Y2%o^r!t,`Q#s>aihlP
+cHjkbdaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6i
+r;HTcrdk*#s0;TS~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQer:U*^!;$0[s7$*YrU0gUmHso>!pf.:rojIIkPjTEjlHF$
++QDA<i8<GKh;-l@g=k64f@SU(eC1(_St2FBS=?":R@*r>s-WYLr0@/Drf\InMh.%FLnC3%N/*FR
+C94G6VP9fVR$3YlM2^'<SpPp?r/g9+rfHu;!06Q.nr3't*e/Wh?sd*1St;RFR?a&#Nf/^IL4b,1
+JV&c:Mi<UPreh&AN/M1TLV((*rjMj7s0M[2%(!4CW1Tc1JW#\VQ'V95qNh/Hq3D)IP`u$.rKI/B
+rfdAFrK.,BOo1=@OTU]-P*5a*rK@2C!g&P,rK-u=!07&<qMk]>NfB$Yqi1W9rf?r<r/U`8s,I)=
+r/CZ8repl;N;eh:NqeS6N;AJ3Mueosrf-i7qi1W9!0@&<s,I&=rf$o=r/gr@s-!>CrK@/DrKR2G
+!LT;RRK/iVRK8nJrgWnWs.0%WoUYrP!1j+Z$(HZuH['UKDJ=.g=oMV'>PVP$?1qUu?h[n(?2%V(
+<rl?%r2TLls/Q$upo=@ps/bgoriZ:)s0)R0Yd+/4rNlO2!4Dd6rO;d9rjN]S]">_pa3;o\g>CuU
+m-a?4o(;YOqY^?Yru&hgVjj$5PDPL#Vl5Z.H[1$pQ):grXfee-q60gNB7ttnL51SAMMmFPNfT6_
+P*2#oQ'Rf)R[]e;StD[LU84T^Vl6SpX0&M-Yd(O@[C3QT\\#Mf^;%J#_SjF5aN2NIbg"GZd*^:k
+eCN7'g"P08h;-uHi8N\UjQ5OdkNM0qlg4!*mf)YUnF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>
+s+13Ts*t~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQer:U*^!;$0[s7$*YrU0gUmHso>!pf.:rojIIkPjTEjlHF$
+)<0W5i8<GKh;-l@g=k64f@SU(eC0)'Jq8LPJGt*(J:W9%It3(GJ,FcjI3<NA?u'4^G&qP8ASZ$]
+JUi2rG]n4MDf'9(C8@VRCN+FaHi8?hHhVjWH0]_LGnjXm?VsTnG]e.PF`_S?DJX$"A7]4Zra?CQ
+B4kmkB4u!mC2%?^=)EqUMZ/G4L]3#.L]3#8KnP,*H[osRGC4r>IfOrpIJ\HpI=?\AIfFilIenKj
+HiSNkI/eTpI/J<kI/J<kI/\KmH38G=H?oI8rd4Zk!."Qi"*o3>Hi89jHhi!eHi&0jHiABmHiA?e
+H2i*hH2W'gH1ZFXH22dbGlE!bHMr3gI/JEmIK4lsIf4]nIf=ioJH(3"J,k0!K)L>tK`?])Jd$d[
+KnY89r.Y*(re:B,qhGH#EH#f3AnYagqcWo%rEK)&qd&o%p0[Q#qd&r$s%`Sioo8a,!0-o:rK$r>
+o9'$8m$%:1r0./F7$j@5U8Fup[CO#f_SjL9b0/&Td*^:jeCE+#f@ep8iT0.cm-X3/nFH2CS<o4h
+JUDokIYW`5G]Rb?D012[LlI7IKnK2Ss+=s;Knb>;Ll%"IN/WdXO-#NfPEhE!R$a>3S"6.CTV8*U
+Uo(&gWN*#$Xfnt6Za7'J\%0&]]Y2%o^r!t,`Q$!?b0/#RcHjkbdaZdtf@S^0g>(N?hr*GOioB+]
+k2tjjl0@U$m-X6?mfDqJrpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s0;TS~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQer:U*^!;$0[s7$*YrU0gUmHso>!pf.:rojIIkPjTEjlHF$
+(#n31i8<GKh;-l@g=k64f@SU(eC.Fr<;TSs;H$Ll;Y*i`;ZBT+/1N&$.kNb=1GLU?1c@Zd5!Am-
+$p-C-2DmBj9h8)W;cNTls&AnrrD`Vlr`&_mr)3Aipep0Os"4F.2D[*Qr]U9D!'C0>!B2q91]oEe
+0f&\b!&ja4s#9sA"%,aS8cD?o8kDQF8OuBB7Rp!)4\/@G;uBSp;uT\m;Zg!!<E/rq!)rhos&8Yk
+rDW_qrDieq!)r\mr)3Snr)*Jl!)rhnr_`_nqbdSr;GpIo<Vo\p<;]\n;?0\p;uT_r;uT\m;u]bo
+;ZTcprDNPlr_W_p;cE![r_rhprDESmoMbchs&8qs"B/2q:f70hr_W\m;>jDm;$0]p<)ifpr_`_p
+r)EYnr)<Vp!)rho!)reprDikuo2c2p:f(+f8k_lLqcWo%rEK)&qd&o%p0[Q#qd&r$r]^BHr)s#&
+oND)orE9)&r*0,'r)r\rr)j#%r`T&!)cp'>;c-@f;,L7k='Ap?Anl1&EH?5EF`qtRGl;peGQ2n+
+H$asiK8#,>N/`m\Q'n.I>$G$*:Jt.j<`N)t:C9ik:JXnf<`;ss;#+&iK4fjkL5(J>M2I4MN/is[
+OHPcjQ'IZ&R$sM6SXuIHTq\?YVPgAlWiN8(YHY:<ZaI6N\[f>b]tV7s_SX71`lQ6DbKS5Vcd:(f
+eC<($f@em3gtgfDi8ESRj5f=ak3(smlKdg'mI'uB!V#XYncA@Srq6<b!;HHes7u]kqtpBjrVc?e
+JcC<$Z2]=~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrokrskND!ijlGL_
+j5T%Vi8EMLh;-l@g=k64f@SU(eC;spT:VXFS=?":R@0H7QN3?LQ2QpmPED$&OG0$XKq4^#P)P?^
+B!886V4jTUR?`qtNeuK!STT=5Pl6[COR/&-OSY"<Npr&"N:Do,Ihc?u?D*p^St)15Q'.2cMhQn?
+KS+c(regc9qi(N4"Cdk4\@;IG"1>MBZi%31Ym%b[G_(U0rg!MLqNq)Frg!;F!gT"6rK@)B!KrZG
+P5URIP*(liOnOk;Oco[*qiUuBP5:=@OT1@?N<5-$O8b1>Nrb9#r/Uc9s,R)>r/^o>qi:]9rf-u<
+r/CW7!0$f7!fi8"rf6u;s,R#9s,6l8q2PB4rJ^r?O,o<^pl>B6s,[,?rfI2Dr/puArfd>G!L8uK
+QN<JArgNeTs-s.]S=BJIrgitWopu#P!1j+Zs-jCdP^e++GAV;7E`lQE>5hb%>l@t*?Jf,e?N"1,
+>Q\&.<3#Vl!36!upo=@ps/bgoriZ:)s02I,rj)L/s0Md6rO2[6s1&$:(q@,g]YVS.c-b.ti8j.g
+m-X93oC_nTqu,dZ)7?oLQ^*VpMPdAIToFPJH%:dDYdV'CYcOr%YQ'5oKnb>;Ll%"IN/WaWO-#Nf
+PEhE!R$a>3S"6.CTV8*UUo(&gWN*#$Y-5(7Za7'J\%0&]]Y2%o_8=+.`Q$!?b0/#RcHjnce'umu
+f@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqYU0hr;HTdrdk*#
+s02NR~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrokcnkND!ijlGL_
+j5T%Vi8EMLh;-l@g=k64f@SU(eC;spK7\]+J:RNJ!.acmqgSBi+a7[1De<O'FDu,2CM[%(IslZg
+GBS%HD/F'&WeYt9DKL<oHi8?hHhVjZH2`*iH0okOH2_.R;,9u5G5cUgF)Pu7Ch[V_A.<$X?=.D[
+B5)$oBk_6prb)F9HB!l@reUc6LPLV>rItQ1Knkb*DfU+!J,auqIK+a!I=?WnIJ83jIJJ?hIJJ6l
+I=-GAI/nZmHN8HlHiJKlHNAG>rHeBgs*FZis*F]j!IB+lHM`'eHN&9hHiSNlI/\HmHMVpdGQ<$e
+H2r6gHN&9jHN/?kH2i3gH22ahG^4OZH22dcHiAEhIK"]qJ,auqIK"]pJ,=cqJcC6#Jc:9!KD^E&
+L&Zi+K)pRVre:?+!/:*#s+gQ/%#9XiEH#i3BP1jf=]t`-r`f2'rE];,hd?7erE];*!_uNdpl5'/
+!0-o:rK$r>o9'!7m$%=2qiaL6Q'n,5USk2u[CX)f_8=.1aN;WMcd:(edaQ^qe_/^6iT0.clg=-/
+nalAFp\L,=MM-J+I<^X,KnFVgD/=07JVK,BLkk_Xs+>9EL5(J>M2I4MN/`mZOHPcjQ'IZ&R$sM6
+SXuIHTq\?YVPgAlWiN8)YHY:<ZaI6N\[f>b]tV7t_Sa=2`lQ6DbKS5VcdC.heC<($f\,!5gtgiE
+i8EVTj5f=akNM0plKdg'mI'H3nF5u=o(2JFrq-?dp\4X]s7u]kqtpBjrVcBfJcC<$YlB4~>
+JcC<$PlL:Qr;HTlqYU9grqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrokQhkND!ijlGL_
+j5T%Vi8EMLh;-l@g=k64f@SU(eC;sprD`SkrDN5cr)3Pl,;1Pr0eP%<2E!BH1Gq-Z5sRRq4ukYc
+3&`cR?U@7Y;,U:k<;KPl;ufqs<;9Dk<;KMn;YX2j;ufkn;WUjW/eTfr1GV-X4Zkhg4#f5[2E!?I
+2>o9-2Z,EC2E3ZZ786BG91qlL8OuBDr^d&Z#"UaA:/=\aqGd5g"&r9";u0Dl;tj8j;uTbo<V9>i
+;u]bo;>jDl;>jAp;,U=kr_ibp##\E#<E)mprDN\or)<Sms&/ts;cEZpr_iYms&AnpqbmAk!)ien
+"&`&q;Z9Vo;ZB\p;ZB\n;ZBYq;Z0Mo;Z0Gm;YF&g<;fbq<!-#q;,I3hr_`\l!)`_ns&&eos&Anp
+s&')#<)cdq;c?Tl;uTbr;uT\n;Z]os<;ons<rQ/&<``@'r`B)$$s-P0:f1.f9M7oK=]t`-r`f2'
+rE];,hd?7erE];*s$$QK=]t`-oND&nr`T2'r*0/(qcWSqpfRW"=o2;(=&r=#;Z'B-;c["*?Xm__
+D/aK8EcZ>EF`qtRGB\6.G:IlcI=Qs(Ll..OO-5ftStr>i=]n[$:ejnf<`;mk9M\AX:K(7p<E2sq
+;Ya8kK5cO!L51SAMMmFPNK9-^P*2#oQ'Rf)R[]e;StD[LU84T^Vl6SpX0&P.Yd(O@[C3QT\\#Mf
+^;%M$_o0O6aN2NIbg"GZdF$FmeCN7(g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mdKW6nF?)?oCMVR
+o`Fj]p\jmeq>^<gqu6NlrUg)?s+13Ss*t~>
+JcC<$PlL:Qr;HTlqYU9gs7uTfrqHHdrUp3_s7?6\s7--YrpKpVmHso>#OC[?l07EqkPjTEjlHF$
++QDA<i8<DIh;$c=g=b-1f@JL%eC2jnd%6f!S=>t9R@*l<rg<YN!1*JHs-+dmP*(llLMMm)BUtQV
+O,]0ZXKA@sV4sZPQ^!\oMJ/U(EdE8!p5]38n;mR1qMtW:n;[(!nr5,MJ:M$7?D4$^T:MF:PELr`
+MMHt?KReZ*N/W[RMMmLSN/`dSN+/*b\[VRH"1>MBZi%08Z=8cPH@h!8rKRAKqNq&ErK[>Is-EkS
+Q'@Msrf[)@!0[8DrfI5EOnOn7OnY"@OckiirfIJJO,f3ZN/`mZrf7#?!KN0:NrG%8O8k:AO8=n:
+NW5"=NV\V0N<#"<NVSV7NW+k:MuJ\7NW5%;NW4t9NW5%;O84h9N<,'$r/pc;rfd8E!g]1>qj7JR
+R[T`FSH#,\St5eLs.0%WoUYuQs.0.ZrgWnW$%I;LF`289Di.`t>Ph\(?2S%$?g_=n?i==0?2e(0
+<`Jgos/Q$uq5XIqs/bjpriZ4'!3lF,rj)L/s0Vg6rjMd7rj_p9)7[8j^;@n3cI:D#iT01elg4'/
+o(;YOqu$HXru':uVk9?=PD>'iVkfE/H[:-rQ_pmoYH=t.q60gNC4q:qLPUeDMi<USO,oBbP*;,q
+QC+&-S"#t?T:hmPUnjlcW2ZetXfek3Z*UdE[^WfX]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-
+g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6Egs8)Zjrqu`noDX=@JcDtS
+J,~>
+JcC<$PlL:Qr;HTlqYU9gs7uTfrqHHdrUp3_s7?6\s7--YrpKpVmHso>#OC[?l07EqkPjTEjlHF$
+(ujN4i8<DIh;$c=g=b-1f@JL%eC2jnd";%D!.acmq0r3h#]4*NBOt1dEc:ql'5N2MI!g9cG'%bC
+DJX&bH(/D_FR"5PI/83aHM)R_H2r6YGklXb?moAZ:eu@\F`qnLEGo`1BkV'h@q/qT?tj=fBP2$o
+BkV6qBPCOlNJrboM#`A1L])r6KMHK.CiOTEIX_0Ds*joprdFiqrdOlqs*t&ts*sur!.FWkr-eEh
+rd=cord=cor-JEkrd4WlqKi<jH[:);HN8BgH2N!bHiA?gHiJKnHiJKjHhr$fGQ<$^HN&9kHN&9h
+HMi'bHMi'bHMi-iI/JEjIf=inIf=imJGk'!J-(:RK):3!K`6Z.KS+o/KDpSpL&d#,M#W81L^JiU
+E,f`-BOtal>5hb'>l@t+?M%Um@.Rb(?N"1/>QIVqqi10,rK$r>o9'!7m$%:1r0./F':5,WTVSQh
+Z*q3U^VI\&`5]m@bl5pBd*g@keCN=.hr<b\lKdj*nFH2CpA"L_VjNI"JpVujHA%*.H$+"ADKL;\
+LQ%+GL\QQ&K5-'nL51SAM2R=ONK9-^OckomQ'Rf)R@B\:StD[LU84T^Vl6SpX0&P.Yd(O@[C3QT
+\\#Mf^V@V%_o0O6aN2NIbg"GZdF$Fme^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4!*mdKW6nc&(\
+oCV\So`Fj]p\jmeq>^<hqu6NlrU^#>s+13Ss*t~>
+JcC<$PlL:Qr;HTlqYU9gs7uTfrqHHdrUp3_s7?6\s7--YrpKpVmHso>#OC[?l07EqkPjTEjlHF$
+(ZOE3i8<DIh;$c=g=b-1f@JL%eC2jnd/6l@;u9Ja;uT\o;'7A<.P<;-3&WQJ1GUaR6:!at5!1ng
+2`N`R.6p[':et$g<;BJi<;KPn;ZB\p<;'8d;ufkn;Wgsa0.nn91c%<Z4oRPP4#])X2`<KK1GLR<
+0`F!02?,QH2)[?P3BT](91hiM8kMZG84ieOs$m5@4@i1C;Z9Vl<;0>j<<#kr;u]bo;tj8k;uK\o
+<VBDi;uBMk;Z'Dl;ZBVo;uT\o;u]bp<<#kp;u]bn;u9Jk;[63!;H$Ll;H*Qor_rYkrDWYl!)rkp
+oMbZcqGRMp;,L4hqGRAnrDW_q!)rkp$r^,(;Gg7g;c?Rl;,R<hqGIDo<)Z]o;ufkr;ZBZ!<)Z^n
+;cENlr)*_t;GpFl<)iiss&K,$qH!Sss&f;&s&]D):fC4fr_*Ad3*Q;cqcs)*r*K#&mU5WnrEfG.
+r`fOi5$D.]=o;D$=oDP%>Q.h'=nGnl=o)5&=&r="r)!f"<**70@:X%dD/]Dm!ci@(rcS-^+a%sO
+GBnRcJqSo9MN!RWPaIr5V5g_,>Zt3.;,^Ci<`N,u:]F/m:JOkg=8l+u;#+&iK5-'nL51SAM2R=O
+NK9-^OckomQ'Rf)R@B\:StD[LU84T^Vl6SpX0&P.Yd(O@[C3QT\\#Mf^V@V%_o0O6aN2NIbg"GZ
+dF$Fme^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4!*mdKW6nc&(\oCV\So`Fj]p\jmeq>^<hqu6Nl
+rU^#>s+13Ss*t~>
+JcC<$PlL:Qr;HTlqYU<hrqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrojIIkPjTEjlHF$
+)rfi7i8<DJh;-l@g=k64f@SU'eC2jndEnJUSGo#XR/iWPQNEPBRJiHPQM?^jP`h2lR>QWZKSQ1h
+P`LT\NG>PrWMZDaT:;(0OH#%Pe=Lr8L>n9nOSY">NfB(jNV&2$N?<RtIXka2TV.jKS<oS,Q'$r\
+M2$\:J:W6%N/NUQMMq@j"CmJ(\[_XI"1>MBZi%08ZA?3AI>*TBrg!JKrKmPMs-NVKrK[>Is-EqU
+Q'@MsP*5a,!0mDF$^?j=P*1rjP*(ifOnb%;OT^i2PEM.,Op7,5OckliOoCCDNJrgVrf@)>!K`B<
+NrP+=Nr+k;OSY";NW+q<NVJJ0N<5-"NVSV4NW"h8NVeb7N;nk;Nr+n;NW>.;NrP1<OnY%=PQ-mH
+PlR-LQi*3RR@9S6SGo)ZT)YAZSH#/XSG/QUSt2GOT)YA[SH#)YSH#2fSqMN=GAhG9EcV"]ra#J/
+pg<l*lXBWtpL!l*r`oP0<;NZpWr9!oWWK6&XRrXoY5PO(Yl1j,ZMh-/[/[Q5[f3c7\G`lT\@K5a
+^r4::d+$e*ioT@el0Ia*nauPMqu$EUru&;]V4*[3Q&E8QUSNs#I!L:'T<#9/Y-"e-q6+RdKS>/8
+Ll$tGN/WaVO-#KePE_>uQ^F21S"6.CTV8*UUo(&gWN*#$Y-5(7Za7'J\%0&]]Y2(p_8=+.`Q-'A
+b0/#ScHstee'uq!f@\d1gYCWAhr*JQj5]7`k3(sml0@U$m-X60n*olHnd+jZo_%nNp@n=\q#C0h
+qY^6ir;HTcrdk*#s02NR~>
+JcC<$PlL:Qr;HTlqYU<hrqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrojIIkPjTEjlHF$
+)<0W5i8<DJh;-l@g=k64f@SU'eC2jndEmL@JH15oJ+nEjI3<K@@;97^F`M>7ASc']JUi8tH$=CQ
+Df0E,A?2APCN4O^HN8HlHiJEkHhVjZH2i3jH1-"SGoL$q?=?Z,G^+@RF)l8=Df'3$B4PL^@:3JO
+BP7<X$Yj?gC2%?q=)j4YMuJP5M#E,-L'WHJMOSO*GCG&@If"WlI0"eFrI4cps*t&ts*sZird=cq
+rd=iqI=;*Bq0i0f#CLlFI!pEjI/A6kI!bj?rd+]mH[>O6rd+BerHe?f"+5HCI/A6jHMMgeG^9"/
+rHnNi!.4]ks*F`lrH\3brH\3brd4TkrI+WnrI=Wls*slq!IoY!JcC6#Jc:9"KD^E&L&HZ-K7no3
+L&6W)L]<)1LPCQ^L]3,0M>i81M#N/8F)c/8B4tmgAbo[2?2\+)?i"0r@JXC+?i==1>le2*rf-K/
+rK$r>nr`p7m$%:1qiaX:Q'e&4U8FrnZa[NY]tV:u_o0U;bK\>Yd*U1fdam.-i8`t`lKms-nalAF
+p\F^bs8S:NMM-S-IsI<8KnXekDJX<<Jqo2DMMLqZCP.:oL5(M@M2I7NNK0']OckomQ'Rc(R@B\:
+StD[LU84T^Vl6SpX0&P.Yd(O@[C3QT\\#Mf^V@V%_o0O7aN;TJbg+M\dF-Lne^i@)g"P39h;7&I
+iSrnXjlY^gkiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssfq>U6gqu6NlrU^#>s+13Ss*t~>
+JcC<$PlL:Qr;HTlqYU<hrqZKes7cQerUp3_s7?3[!qGdLrpTmT!:BdPs6B[MrojIIkPjTEjlHF$
+(ujN4i8<DJh;-l@g=k64f@SU'eC2jndEqbir_r\lnPfEb+]0d?-nm/'3ArZL0f(UD6:!h"4?P\f
+2`WcT03Ch::JXme<;0>i<;KPl;ZB\p<;9Dd;ufkn;X%-Z/f?<!1Hn#d4Zkef3B/uV2Dm<J1,(F:
+0fCpHr&+L5%QHI26qg6G91qlL8OuBDr^d&Z"uSVC:f1.grDWSmq,@5ks&/kqs&/eonPfNh<rQ+u
+<!--"<)rlrr_ieprD<\q;c?Rlr)*Jls&&\ls&9%u;,R<ks&/kq"&_un;Z'Gq;Gg7fr_iSkr_ibp
+!*&nqqGR;k!)ibm!`Dlnp/Cuj!)rhoq,7;l;>sJi;Z]os;uK\p;@6?%;c6Lj;H$Ll;Z9Pn;#aDj
+;ZB\q;?p-"<)Z[m;c<Kkq,@>mqGR;k!*&ns!`iB(qc<\ts&fD)=BPQ*$!:&';G^"]8kVPJ>lJ%-
+?MIn(@-_7t@/"%,?N+42>X.g_rE0#$r`]2's'#8%oigujrE'8*<`N*s;GmEk$<1&.>[ClNBPMC%
+rbhpYEH6,Br,r$]s)fr=H@13oKnkMCNK96gR[p4OXg,:E='\s/;,L:k=B/6t:JFSY:JXqh;ccps
+<)NHiCP.:oL5(M@M2I7NNK0']OckomQ'Rc(R@B\:StD[LU84T^Vl6SpX0&P.Yd(O@[C3QT\\#Mf
+^V@V%_o0O7aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjlY^gkiq?slg4!*mdKW6nc&(boCV\J
+p%J+Rp\ssfq>U6gqu6NlrU^#>s+13Ss*t~>
+JcC<$PlL:QrVc]mqYU9grqZKes7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkmQ_<kN:pgjlGI^
+io0mp)rKN.h;$c=g=b-1f@JL%eC)ald*L"-S=?":RJrTQQNW\DR@'B@QN3?IQ2d'nPEMN!Js2"H
+Tpq=-MN!R,XKACuUSFBLQBI;hMjq5HFaJe*qiCc=l&Yh*qN(W9o8WF%oSjW8I=QiR>G7[[T:MC:
+PEh8hLPU\<KS08S"cS=rN/NVlN!5,LL:b%,rjDp:['[1;ZjO+7[<R1VNKfZmQ2[*IQi<<NQi*0K
+Q2d0MQN3?NQN3?NPQ?u2r0%5IPE_:1Pl?mEOogc-Oo1=@OoCFDOckn*PQ$^TPEM,mOcbfiOcYWa
+NfB%rNrb9%r/Lf;Nr=q;Nqe\5NrG%<NWb?#N/NVlN;eh8NrG%:NW>.>Nr"_8N;eh9NW>.>NWkE$
+N/`gWrJpr?r/^c9#*4k.P*(lip65K?!1!GJqjIJQ!1a"YrLO(]S=TDErgj(\s./tWs.0+Ys-j+\
+SXuJQTEp="I!K^NCi+=o>lJ%.?MRt+@/FBr@esO2@/41/?N4=0X8T'tX8/dqWrT6nXoGR%Y5kg*
+Z2_-.Zi7?3[K!]6\,<c7[i2fg]YD>&aj/;bg>:iNk3(snmI0T:p%\C]rT=+ujM%XeRZ`nnLnCW;
+R#ZQ@H\\)gYdV$D[&gD*YA/`EL5(J?M2I4MNK0']OckomQ'Rc(R@B\9St;UKU8+N]Vl6SpX0&M-
+Yd(O@[C3QT\\#Mf^V@V%_o9U8aN;TJbg+M\dF-Lne^i@)g=k<;h;7&IiSrnYjlY^gkiq?tm-O-,
+mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcDtSJ,~>
+JcC<$PlL:QrVc]mqYU9grqZKes7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkmQ_<kN:pgjlGI^
+io0mp(#Rm(h;$c=g=b-1f@JL%eC)ald*L#6JcC8oJ+S14FD50"AS$+-D/3a!C/oh8I=6EeF`_S>
+CMRX,ML0&TFQ@fIHN&9cHM)R`HN/9[Gl)dd?N4@I:/-"XF`heIF)Pr5CM.6i@q/tU@:B.Krb;CG
+#\n'eBNK#0N/R[l!/UT/rItN0I"?'PFaF%:rdO`o!.OcmrdOip"+G`LIf=iiIf=cqIfFfrI.Vje
+HNAM@r-\Nmrd=]l"+5HCHiABnI=2!?!.+QgrHeEh!IB+jHMMpeI/A9gH2i-gH1cL_HiA?kHiA?k
+HiJEkH2i0jHi/3hH2;jeHi&3iIJeQdJ,OorJcC5sJH1<!KD^E&L&?W%L&Qi!L]<20M#`A-LBr!B
+EG]K(ARoHQ>lJ%.?MRt+@/FBr@esO2@/41/?N4=%Nr>%<OReP5P3nJ.Pl-aFPV8AkS=cUUX08k=
+\\#Mf^;7\)`lQ<Gbg"GZd*gCog>1`KkNV9umdTf=o_%tTr;Q]q)RGimLkL/*G^5""K7.u^D/OEC
+L5CkJLl$e=pk3@8L5(J?M2I4MNK0']OckomQ'Rc(R@B\9St;UKU8+N]Vl6SpX0&M-Yd(O@[C3QT
+\\#Mf^V@V%_o9U8aN;TJbg+M\dF-Lne^i@)g=k<;h;7&IiSrnYjlY^gkiq?tm-O-,mdKW6nc&([
+oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcDtSJ,~>
+JcC<$PlL:QrVc]mqYU9grqZKes7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkmQ_<kN:pgjlGI^
+io0mp(#Rm(h;$c=g=b-1f@JL%eC)ald*L#9<!6,t;c6Qm;XRI-;D'FI0eFt<2)R0D1c.-Y69m^t
+4ZPSb3&``Q3CHD5;,L6j<:s/i<;9Di;ZB\p<;BJd;ufkn;X79]/dF$`1G_3Z4[&d,%llU.2`*BL
+1c$j?0ebLC2#T<32Z>Z=4@2_79)_Hd8kDTF8cD9\8,kRP:/Ohc;Z'Jj<;BJl;ufkr;ZBYq;Z'J_
+<!cQ(<E)su<`N+!rD`eq!*&qpr_ibpr_i_mr_i_mr_`u"<)cdo;,U?l;ZB\p;?'Pq;H*Qms%r_m
+!)i_n!``2urDEYp<;f_s;Gg<j;Z0Pj;#jMf;u]hs;uT\o;ZKep;uT\n;uK\q;uK\p;Z0Po;Z'Gn
+;Ys>i;Z0Po;Z9Yp;u]bn;uTbq;u]es;u'>k;ZKer<<H3#=',9"s&T>*=]nj/qH3epr_Wel:.e/I
+r`oG.ra,D-r*]D1k[OBsr*]>-ra,V1p0%>rrE9,'qcj)(qH<JpoiV?"=]t`+"'8N';uBN$;cQn&
+?!q,RBPVF#rbVjXEH-#?F*.A%s)]r<H$XpiK8#,=N/j!aR%'_EWNWV9\\2TX>?Op(;,^:i<)ZUh
+9hnDY:/t:q<`W0spetp\Knb>;M2@+JN/`jYOHG]iPa.Q$R$jG5S=Z=FTq\<XVPgAlWiN8(YHY:<
+ZaI6N\[f>b]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE.%f\5'6h;-rFi8N\UjQ5OdkNM0plg4!*mI'H3
+nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>s+13Ss*t~>
+JcC<$PlL=Rr;HTlqYU9grqZNfrqHHdrUp3_!;$0[!qGdLrpTmT!:BdPs6B[MrojIIkPjTgjlGI^
+io8qTi8<DIh;$c=g=b-1f@JL%eC2jnd*L"_SXZ+;rgEbQ".,CBRJrTQQN3?JQ2d*JP9?6MBT7g_
+SXPh&NKK7(XJ_niUnO6CQBI8eEKH-#H@hL\O8b4BOcY[jO8b7;O8b12NV8>(N<Xo_It1j4R/WZl
+S",e.P*(c]MMHh:Jq/E&N/NUOMi7Om#)eFMJ%N;&rjMU/#]buhH\70;Pa)04rg*JKrg*SNr0I>I
+s-EMJ!1!PJrfd5Drg!MJs-*GFs-!GGrK7)@s,m;B!0[2B!g8b1rfdAErK7PMO,f6[NfT3\OH#8!
+NrP.?Nr4k:NqeY;OH,?^rf.5CNfK*XN/NVkN;nn7NW>(:NWY?&NfF!tr/Cc=NfO$u!07#;"HJP(
+OH9@%rf@)>rf@)A!0[>D!0[&>rfm>Is-W_Ps-`qWrgitYs.'1^SbnrWSH57OoUZ)USb\fUScGD\
+TF-^/I<]gSDea<Z?2e1,?i=C1@G52g@JsU1?NOQ7X8T'tX8/dqX8f9oXoGR&YQ(j*Z2_-/Zi.92
+[K!]4\,No9[iMui]=l"ua32iYfA#3CjQ5OelL"*2oChqSqu-Nnk5Q=8dA<>#Od;!]WLp&KL4+>r
+NM*G[\Z`*;X8&i.KSG5:Ll%"IN/`jYO-,TgPa.Q$R$jD4S=Z=FTq\<XV5L8kWiN8(YHY:<ZaI6N
+\[f>b]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNV6rlg4!*mf)YZnF?)?
+oCMVRp&F^cp\jmeq>^<gqu6NlrUg)?s+13Rs*t~>
+JcC<$PlL=Rr;HTlqYU9grqZNfrqHHdrUp3_!;$0[!qGdLrpTmT!:BdPs6B[MrojIIkPjTcjlGI^
+io8qTi8<DIh;$c=g=b-1f@JL%eC2jnd*L"_qLSWrp4)aa+E;!kBOt1cEc,N)ChnZRI=$6bG'%_C
+DJX&iF)ko1FFN=uqg/6gpNlLXs*F]jnTatW.UQRj?VjR@GBS+MF)l28D/3j!ARf1X?t!JWBPD-n
+BkV0oBkV0]BT8"1reUW2rJ1?+#uttiD/sfHJ:N.IIf+ZqIf"QlIf=`qIenQgIf=cqIdqghI!^3f
+HiAEjIK+ZrH[L2<HineEI=2!?r-A6erHnBeq0W$erHeNjrH\Efs*4WkH22ddHN8BkHi86jHiA?k
+Hhr$gHi86mH[9s_r-ABjHN&9hI/\QlIe/'gJGk&uJGaruK)C8tKE-`*K`-W)L&m!_qhP0,rJ1?-
+reUW2pP0*%E,]]0BP1jgG?t2SqHs2/r*e;gr*fP3qHj5/o8`g2rK-W5rK?T4plt]?s-,1&R@9\?
+V5UK"[(*WV]=bno_o0R8aN;TJc-FY_eC`R5ioTChlKms.nalGIq>:-fru%,sN.un1IsJ,OKSFbn
+DJa<8JV]/BMMHt>pOrR$@>BYqMMmFQNfT6`P*2&pQC!u,R[]h=StMdOUSO`aW2ZetXf\e2Z*UdE
+[^WfX]=bhl^VRe)`Pom=ai_fNcHaeadaQ^rf@S[/g=tH>hVd>NioB+]k2tjkl0@U$m-X6?mfr:O
+o()DDo`"O`p&Ojcq#C0iqYU0hr;HTdrdk*#s0)HQ~>
+JcC<$PlL=Rr;HTlqYU9grqZNfrqHHdrUp3_!;$0[!qGdLrpTmT!:BdPs6B[MrojIIkPjTjjlGI^
+io8qTi8<DIh;$c=g=b-1f@JL%eC2jnd*L"_;cH^p;,U<k;u]bn;ZK_f;u]`%/1E&%/h]1A1benb
+&jnuO4Zkkk3BK2Z2`3-L7nc`TrD`#[r)3Pnr`&\lp/D#jqGQ]Z#VRe`0JtUJ5<]!.%m)d13&`]Q
+2D[-E0/5.=2Z,H42uYc<4@)[=9E%Km84c?C7n4mg7o)u[;c6Nj;uBVj;uT_r;uT\k;s[Hc;cHat
+rDiksrDW\m!)i_ns&&nq;GmEks&&_mr_rkrr)*Mnr_ibn!E)km;Z9Mn;Z0Mp<EB)ts&&ns<)ifp
+!)iens&/hp!)i\k!)iMhs&Anp!`W)srD`bpr_i_orD`eq!)i_ns&&ns<)`cor)3Snqbd>jrDNhs
+;c?Xpr_rhpp/Cuj!)rens&/qr;u9Po<W#nr=8uD"=oV\(=UJ&(;,9n]9M/#E?2e1,?i=C1@G52g
+@JsU1?N=F-=o;D$=oDP%>Q.h'=nPtk=UJ>8=]eg/=&r@$;uKTL;cHe">[CiKAnc$qC27X&DfBZ8
+EH6&>EH6)@FEVqVIY!0,M2I:RP*MH*U8P)s[(*aI]bsdV=&i3r<*!^5;,g@g:/+MZ;cQat;c?Ri
+rDWVnA;#\lLPUeEMi<XUO,oEdP*D5tQ^F20S"-(ATV8*TUnsufWN*#$Xfnt6Za7'J\%0&]]Y2(p
+_8=+/`Q-'Ab0/#ScHstee'uq"f@\g2gYL]Bi8ESRj5f=ak3)!nlKdg'mI'uB#4V0Ro(2JFrq6<b
+!;HHes7u]kqtpBjrVcBfJcC<$YQ'+~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkpYcYkN:pgjQ,@]
+io/hRhr!;Hh;$c=g=b-1f@AC#e'cXkd*Bq]baY'uRJN<LQiEBKQ2QpiSVr,aKnu@jP`:K^O/8kW
+Vk]r[SsYb,OH>XZetIA=LAR&2OT(CBOR%u,OSb+<Nq/2(N:r82Ii*]c?sd-2T:_[EQ^3o!NJiRH
+L4b,0JUi^XMuJY@NJrdS@sP\u\c0&4ZjV>Vd!g_,PEV5qQ'M<6r0RAJs-NYL!1!PLqNhAOQ'@Ms
+PPp^NQ'@T#Q^3r&rf[>Frf[JJOcklkqiLo@Oo(=BPl$[EOoUXCOp-u/O,f9^rJpo;r/U]7!07#=
+s,d5@!0I,>r/U`7!/pc6s,Hu;!0-i8!0@,>s,[#:s,R/?qN(Z:"-&>%O8Y1?OT:LAO8Y1;P5CFC
+Pl?mFPQ7$JQi<BMRK&`XS=Q5MT)YG_ScYOUT)>,YT)YAWT)YG^ScbUVS=KSLrgX"[TD>,eP(A%+
+F`287ELL52?i=C3@J=7*A+sO.A+sI2@K'[4?i@#(X88jrX8f9oXoGR&YQ(j+Z2V'.Zi.92[K!]4
+\,Wu8[iN&l]YD>'aN`,^g"bKEj5f@dlKn!0oChqRqY^<kjSp(*[%a(SQB$lqYFV5HJ9uZtS#<O!
+^94Q=po\M<KnbA=M2@.LN/`mZOHPckQ'I]'R@9V8St;UKU8+N\Vl-MoX0&M-Yd(O@[C3QT\\#Mf
+^V@V%_o9U8aN;TJbg+M\dF-Lne^rF*g=k<;h;7)JiSrnYjlY^hl07L!m-O--n*fc8nac8BoCW%T
+!quB_rV6Egs8)ZjrVZWmo_sFAJcDqRJ,~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkpGWWkN:pgjQ,@]
+io/hRhr!;Hh;$c=g=b-1f@AC#e'cXkd*Bq]bkZhiJG=WiIK4fqIN`fF?u9@aF`D83ASl73It2um
+G^"7ME,KN/Coa:ZCiOTDja6iMrd4Edom-O_s*=0[rHT)`?XR5<:el7YG'.kHE,KN.BkCpfr*fV=
+s(VFF!,DLH"BT/oNK!jn"GhhhLPPh_$=S:NDKL)PIt3'!r-nQns*jlo"+GZHIf4ZpIf"WgIK4fq
+IdqgeI!bd=qL/-drd=corHeTlH$T:5rd4KfrHnQls*OTird+Wkr-8EiH$O^_qKi!brd"QkrHeEh
+qg&<jH@#R;qg/3fqL&<kr-nEj!.b&uqLJQrs+('!!.t-$qLej&re16(s+gW/qhP-+reLH.reUW2
+onNm)EH#c1B4tdeH=$JUrF#V5pL<l,pLO#.pL=)0ra>Y2ooB'5rK-W5rK?T4pQYT>s-,.&R[]qE
+VQ$`&[(!QU]">\k_Sa@4a2c<Ebg"J^eCi[7ioTCglg=02o(;VLqY^0h(t=k9MM6V3G^4t"K7J;h
+Df0WFL5CkNM21eXD2!_"Ll$tHN/WaWO-#NfPa.N#R$jD4S=Z=FTq\<XV5L5jWiN8(YHY:<ZaI6N
+\[f>b]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE1&f\5'6h;-rGi8N\UjQ5Odkiq?slg4!*mdKW6nF?)?
+oCMVRo`Fj]p\jmeq>^<hqu-HkrUg)?s+13Rs*t~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7--YrpKpVmHso>!UK%MkpYcYkN:pgjQ,@]
+io/hRhr!;Hh;$c=g=b-1f@AC#e'cXkd*Bq]bYqI>;?'Ps<)Z^nrDW\nperJ:;c6LG.4?i!/N>XE
+1+tI?5XIb#4Zkni4#]/Y2DS`985<#[;uTb[;uBPn;uTbl;tj8k;u0D\;\gu=0/,:?1-[rd4ZYYd
+3&rrW2Dm<I1&`m,2Z5K52Z,N:4[;\7rCd/]!(m,[#"M394]"pNrDNJjr)EJjr_rkrr_iSkm8X*a
+!*&eps&9/#<)QUk;Yj;n;H$Nn;Z9Pl;?Trt;c6Qh;?9WnqGIZ!;Gg:j<)Z^p<`T)s!)ieqrDN\o
+r_WYnr)<VnrDE5dr)<YpqGdAk!)ieprD`eqs&/bns&/Si!`W)rr_`SkqG[Amnl,Qfr)3Pos&8nr
+!*0"ts&K)"!EE2!=8?#!>5MG0;c-Cg:J+;P90Q\Z?i=C3@J=7*A+sO.A+sI2@K'[4?i!q'=T;P&
+>5MP(>5MJ$>5qh'>4u,!=p%o0=]kZ)"'&;u;Z9T$<)m%(?!h&OB5.?[s(_^RDJsIkE;sqXEYW\?
+H@13oKnbGBNffQmR\$=SYHkUIr4Eqp=^,!-;c6Li<Dudl:ea\Z9i+hi=&r:!;c<Tnqc%EdL51SA
+M2R=ONK9-^P*2&pQ'[l+R[]h=StMdOUSO`aVl?\sXf\e2Z*UdE[^WfX]=bhl^VRe)`Pom=ai_fN
+cHaeadaQ^rf@S[/g=tH>hVd>NioB+]k2tmll0@U$m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqY^6h
+r;HTdrdk*#s0)HQ~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP0'hffl07EqkN:pgjlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bfcKEqO.8Kqj.;Kr0@5F&?2"NR#d#pS!T:pNK%SP
+XJl,o%@rrRP`_#cOgga$H\@LZO8Y1<OoCFBO8G%1O8b7<O8b11NVJJ,N>d7oJUh-7@@s3aT:M@7
+P`^raM2$b:K7nf,NW+n:NXq,.NJiaS@ro8o\[T#U[C,k<#FN>NIYNiGPQ$gGQ2d0HQiEBMQi<<N
+Q2d0FQiE?OQ2HmGQ2d0MQiEBMPQ7!JP6R26P*;&kOo1@HPEM)mPE_=.PPgUDOo1:>Nr4n9NrG%<
+Nr+n:O91K)OSk1>NX(W*N/WaUN/dgqs,@,@NK&tsNW"k;O8Y(AO,f6]OS"V5NW>.;OT(C?OSt==
+P5CFEP`q=0PQ7!IQi3<NRK&`URg,FTStDXJT`(JaSt2DMSbJ`TTDkDbT:VUDSG\oZStDYNTF.B\
+IslNaDJj92Wr6<(@/aU1@f0a2AFjC.AG]m4@fBg8@/jU6WrK-rWrK."XS&^pY5YX)Yl:p,ZMq3.
+Zi[YD[e7-0\/r2l]Y2,!a3)`Vf%Jj9i8Wh[kj%O'nalGJp\F^aro="rrS=BER?NnqeZY^EOc4[5
+I#O`$ZamEF[B',+DQebKL5:\CMN!LRO,oBcP*;/rQ^F//S"-%@T:qsRUnsueWN*#$Xfnt6Za7'J
+\%0&]]Y2(p_8=+/`Q-'Ab0/#ScHstee'uq"f@\g2gtgfDi8ESSj5f=ak32'olKdg'mI'H3nF5u=
+o(2MGrq-?dp\4X]s7u]kr;6HjrVcBfJcC<$YQ'+~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP/F2Tdl07EqkN:pgjlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bffd4!.afnqgSHk,&^t1Bk;L1Df'-%C0,t:I=-?d
+FEDJ>Ci!j,LjEfSFF/=[ja6iMrd4Edom-O_s*=3\rcn`S?=7,;:JlB9Fq8\9E,TT/BkLse@:<YS
+@;GjW*bfA'BPV9qBie`&NJraOM26qCLPLV=LPBi0C2\3?rI=it!.XusqLAEks*jinrdO`opO3*j
+rI4<c!IT7nHjG.JI=-EjI!pG;HiSToHj>"GI!^0cH[G[:rd4Qhqg8$arHeKhs*=fnH?spbqg/*c
+rH\Hjrd+Khr-J6er-J9fr-\KlqgS9h!e>cMq1/Krrdb!!!.t0%s+L3%s+CN/L4t>9pkSg(reLE-
+reUW2onNm1KQ1sKCM7?kAqBnfra>_6q-s83pgiu-q.0A4q-s>3ra>b5pl>B8rK-T4rfZ]5pQYT>
+s-,1&R@B_>Uo(2qZ*^pJ\[oGe^VRh+`Q#s>aihrSdad%+hr3\[l0Ia*nalGJq>C6eru:s]WJuXa
+I=QX?N.m"4H#IS<G(GL-N/NLLKSB5TD2!_!Ll$tGN/WaWO-#NfPEhE"R$a>3S=Q7DTqS6WV5L5j
+WiN8(YHY:<ZaI6N\[f>b]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE1&f\5'7h;-uHi8N_VjQ5Odkiq?s
+lg4!*mdKW6nF?)?oCV\So`Fj]p\jmeq>^<hqu-HkrUg)?s+13Rs*t~>
+JcC<$PlL=Rr;HTlqYU9gs7uTfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP/aM]el07EqkN:pgjlGI^
+io/kSi8<DIh;$c=g=b-1f@JL%e'cXkd*L"^bf`r`;#jMi;uKVi;uKT:1Fst1/M0"A2)?pB1H%Qc
+5s7Cq3]fA_2`EWT6UsmK;>sMm<9[?Z;ZB\p<;BJe<<#nn;Xm[(/h\k42`*<S5!;"i4?5A[3&NTN
+1bpg@0ebQb2?Gfq2uP]<5!Vb8rCd/]s%32\#"M3B6;C<Sr_rhp!E2tr;u0Jh;ZTirr_iPjqc!Po
+qGdJprD`eqs&Akqs&9M-<)Z[n;H$Ik;c6Om;H-Wo;?0Sl;ZB\q;ZBYs;H$Nk;ZB\n;Z9Vp;?0Yo
+;uouurDWYor)<Slr)<Vn"B/2r;,[*d!`W0"oi1ifqG[Gnr_i\nr_iPjs&9,";Gp@hr_ibp!*&en
+r)E>f"'&<!;Z0Pg<;]_r<rQ2#=Sl8#>5;;-;c$Ch:/">R8jE8]ra>_6q-s83pgiu-q.0A4q-s>3
+ra>b5rE9&#s&o;(qHNu'r)ru%s',>'p0%E!rE0;+='&F%<;f`%<)m"&>[CfIA7kdS"D_giDJfAj
+rbiZnEH-#AG^=aeJq\u;NK96fR@L"KXK](A]D]AR]=PP&?s-K-;H$P$<`2mn:]=)p:K1=n=B/F%
+;#XDj<,I>DL5:\CMN!LRO,oBcP*;/rQ^F//S"-%@T:qsRUnsueWN*#$Xfnt6Za7'J\%0&]]Y2(p
+_8=+/`Q-'Ab0/#ScHstee'uq"f@\g2gtgfDi8ESSj5f=ak32'olKdg'mI'H3nF5u=o(2MGrq-?d
+p\4X]s7u]kr;6HjrVcBfJcC<$YQ'+~>
+JcC<$PlL=Rr;HTlqYU<hrqZKes7cQerUp3_!;$0[!qGdLrpKpVmHso>!UK%MklL#2roO7CjSn0]
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h[bKJ%sqO.;LqNh2JrK[;F+IS1AOb[\DR$E_lO-$KE
+Vl-;bT:M=8PE1]HP)j^2Jt)\!s,[8DOSY+>O9(K*rfR2Ar/Ui>qiC];qiC`:nr<I(pl-2:It)uV
+?='7qSXl:;Q'@JnMi3CFLP1;2JW0Pe!K<*<N!PDQDnEWm\$iaE[K!T6[JmN?VRC`%Lm"!dPE_=0
+Q2d-NQ^7T:s-EVMrg!PLrg*;Fs-EYK"-o+9Q2I!KQMm'MQB[X3P7!J8P*2#lP*;)mP4b%9OoUUB
+O8k7;NVne;O,j'trf@,@rfI)>s,I)?qMkN6qi(T9rf%)ANK&sYO8P">O,f;"ORnP4ORnV7P5LOC
+P5gaAPlI'LQi3<ORK&]ZS!oe9SY#hQs.KCas.BRfSXuCDSY#hQqk!eZs.94^!hGjOrLNt[!2'([
+&>>hmTq6d_H?O=ICiYMe?srtBqI9D5r++_sr+,b9qI9G4s'Pi-qPsOq!3GjqriQC-Y-5(6rNZC.
+rj2O0!k#JFp:("1*kJts^V[t2bg4bhg"kNCiT'%`lL"'2o_%qQq"jpeiVse+\>#L[Q]$ru\"0"O
+M0sc)R\m?t]<AE@WqrmuYQ'>lLPUeEMi<XUO-#KePE_>uR$a>3S=Q7DTqS6WV5C/iWiN5'YHY:;
+ZaI6N\@K5a]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE1&g"P08h;-uHi8N_VjQ5Oekiq?slg4!*mdKW6
+naZ2@oCV\So`Fj]p\sseq>^<hqu6NlrU^#>s+13Rs*t~>
+JcC<$PlL=Rr;HTlqYU<hrqZKes7cQerUp3_!;$0[!qGdLrpKpVmHso>!UK%MklL#2roO7CjSn0\
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h[bKJ'(JH15pJ,FcnI3<NB@V]LSF`;23C27U;Isl`j
+H$4=NEGfT.??C7%D/t.)HLlI`I.Vd_HMr3cHM)R_H2r6^GlN%:>$tZE:f1&6G'7qKEcH&:CM@Nq
+AS#@[@UX"cC2.HsCM@NtC2-gWrf$u:M2D4fs+gW/#D\%^Jo#CKI/\U!IXcitJ:IQI!IoRsJ,F`p
+If"QnIeeHoIXh*@!IoRhIJnQlIHc+[H[>[<rHeEh!IB+lHMi-eHiSToHiSNeH2r<hHMMpeH2r<k
+HMW!cHMVsgHMr3gI/SKjIf+]pIfFonJH(*#J:W:NJH(3#K)C6$K_gE&LAur1L4t>9L]3,-L\6H'
+M>`8(L]</>LPBhhDej$!AS,jm?srtBqI9D5r++_sr+,b9qI9G4s'Y\`!0@)?p5o?<rfR2CmZ[C0
+qi`^uQ'[o.St`'[X08h8[C3TV]Y2(q_Sa=2a2lBFbg=kig"bKDjlkspmdTf>pA+Ubq#CBn)u\Z[
+QAUEJJTlKpN.QP*G&D2<I"dH:Nf&[KKD:-"L2)L"M2I4MNK0']OckomQ'Rf)R[]h<StD^MUSO``
+Vl?\sXKA\1Z*L^D[^WcW]=bhl^VRe)`Pom=ai_fNcHaeadaQ^rf@S^0g>(N?hr*GOj5]4^k3(sm
+l0@U$m-X60n*ol;o()DEo`"Lbp@n=\q#:*hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$PlL=Rr;HTlqYU<hrqZKes7cQerUp3_!;$0[!qGdLrpKpVmHso>!UK%MklL#2roO7CjSn0\
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h[bKJ'-;#jMi;uKVi;uBN=/1N&$/MT4C2)-mD1daSp
+5!D+m3]f>\2E!0O7nlfV<)QUm;uK\i;ZK_f;uBPn;uTbl;tj8k;u0D`;[G!-/ho7@1Hmucr]Dbn
+3&iiT2Dm<K1GLU<2E!EN2)dKR3&rrX5!DS591qrO84Z<E84c?B83&Y';Z9Yn;u]hq;ZTirrD`Sk
+!E<"s;YX2i<<#kt;H*Qo"'&<"<W#hr;uTbn<W5qu;c<Tnr)3Pn!E<"h;YsDk;Z0Mr;H$Ikqc!Jn
+!)rkrs&8qss&/nsrDNer;,L6j;uKVo;u]bh;u]hp<W?%u;uK\o;ZTirqG[Gnr_i_or_`er<)ico
+s&AtrrDEVorD`eq!*&qrs&Att!`Muppeq5n<E/lp!*&qtqc*Jn!*9)#s&f2%rEB/&!*K5'!a&N&
+r_Wqs92%rM3Ak2PraGY4rF>b9i+;gsrF>\5raGh7!*T2$!*T8(qHNr&!a/]0rEB2)qHEPp!*]>(
+s&]J,<`W4";cEZp&QW";?!guLA7oOgBPD6tCi+%gDZ=YTE;snoF*;eSI"-a&Ll7:VPa@i2V5gc+
+[^s)_rk'&Y\[],(=Bns0<)Z[k<Dudk:ese[:/=gf<<Z?%;,:+hqGdKLC57V%MMmFQNfT9aP*;,q
+QC+&.S"-%@T:qsRUnsrdWN*##Xfnt6ZEpsI\%&u\]Y2(p_8=+/`Q-'Ab0/#ScHstee'uq"f@em3
+gtgfDi8ESSj5f=akNM0plKdg'mI'H3nF?&>o(2MGrq-?dp\4[^rqZTjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfrqHHdrq6<`s7?6\s7--YrpKmUmJcJPlON4El0.?ok2tdejQ#:[
+iVqaShqm2FgtUQ:g"=p.e^W*tda?IgcHa\YbK@qrqjIALqNq5Jrg!GH+JY-SObnshS!fCpOcQ$5
+WMQGcU7Rg=P`Uifm+e=\Iu=,a"-AY-P5LIBP5^RNP*(ojOcb`fOH5M&O8k=AO8G%9O8b11NV\V0
+N<XTUJUh-5>lL<>T:DF;PEV#eMM[(AKS4o,MMd@RNfK*WN/WaUA95Ap]"#2WrjDd5%(3ILFH2N2
+K85bYQ';33qj%,GrKdMMrKmPMs-<VMp6YfF!0mDH!LB)OR/`KRQC%Q9s-+"WPa%AqP*(ojPEV/n
+P*5d-s-3GF!gJn4r/q)COT(=@NrP(=NrG%:NrP1?OSk1<OT1@IOH5KaOH5E_Nr+h9N;nk;NrG"<
+Nr=q=NfB%pNrG+:OS+\5OSk77P5LODP5gaAPQ@&8rg3VOrg<nXS!oe9rga:cT:hjLT:hkVTDY;[
+TDbAVT)bJ]Sc52\TD>,mTq\9VU8"EVK782lEc>o9F/*1@@f9g8AG0U#B(fg7AH$*8@K9j6Wr9!l
+Xo5F$Y5kg*Z2_-/Zi%03[C3O;\,EfY]">Vh_8OC:c-b"kg>(QBi8`q_lKn!0o_%qPq>1!fhu=P\
+VkKNDQ&`hmU83p4JpVs'Trk]5\#uj7qQBh$AVPtrM2@.LN/is[OckomQ'Rc(R@B\:StD[LU84W_
+Vl6VrXKAY0Z*L^C[^WcW]=bhk^VRe)`5Td<ai_fNcHaeadaQ^rf@S^0g>(N?hr*GPj5]4^k3(sm
+l0@U$m-X60n*olHncJFTo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfrqHHdrq6<`s7?6\s7--YrpKmUmJcJPlON4El0.?ok2tdejQ#:[
+iVqaRhqm2FgtUQ:g"=p.e^W*tda?IgcHa\YbK@s'Jc:2pJ,FcoI3<cN@r,^hG]Re<Ao)4+J:Dum
+H$=@PE,KK+DRu]pCiFUqHMDjeHiSNmHieYBI/A6jI/\KkHM`'aHM)R_H2r6_GR/Ru?XR2::/6'5
+G5lY,Ec5l4D/!WoA7T.X@;0ChCM@NtBkhBuBie`'NK&jQM>i>2L]<)6LK8D>Cia`JrI5$#It*!!
+It.BFrdOosrI"Zpr-\ZrI=?Y@Ifk.LIXh3Cs*t&t!I]FhIK+]nIJS?kHi8<lIJ&!cHiA?gHi89i
+Hi&0jIK"ToHgc:VHiA?`Hhi!`HiAEiIJSEjJ,autJ,+WpIfP#uJcC9"JH1<"KE$W%L&Zo-K`Hl,
+L&Zr-M#E,-M#W>*M"ZW(M#W81L^J6DDes*#AS,Ls@JaO4A,Ts3Aa<t%Ac60=A,9X7@Jc)`OS4e:
+P5^UBP44\.Pl6gFPV/8hS"-+FVQ$Z#Z*LaE\@K8c^;.S&`5Ta;ai_lTe(31,hr<b]lL"'1oC_kS
+rV-<lrr)d4gpi?!KReT"S<AS[H?jLJDfpYhMiE[PL\?C4L51SAM2R=ONfT6`P*;,qQC!u,S"#t?
+T:hmPUnsrdW2co"Xfen5ZEppH\%&u\]Y2%o_8=+.`Q-'Ab0/#ScHstee'uq"f@em3gtgfDi8EVT
+j5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4[^s7uZjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfrqHHdrq6<`s7?6\s7--YrpKmUmJcJPlON4El0.?ok2tdejQ#:[
+iVqaUhqm2FgtUQ:g"=p.e^W*tda?IgcHa\YbK@q(;,[0fr_iMirDFal.Od)(/NG[G1b^[@5=.V!
+5!1qh4#o;[2)K8M7nul[rDNYor`&Ykr_iYms&/_mrDNVnr`&\lpJh/kqGQub"tM;Y0f:aDr]M&[
+4Zkec3ArfS2)I*G0etF@2)[BO2E*So3#FY?5>"UB92%uM84cEF8Ou>t4\&4D;,^Hl;uT_t;c6Nl
+;uK\n;uTYp;uT\j;[QK(<)cdp;GpFm<;fhk<;ff!<)lptr)<Jj!`N&trDEVopJM#j<;]\o;Y3od
+<<#ks<;ohr<;oeo;u]_q;>jGm;Y*ie<;okt<;fhs;uTbo;u9Po;u]hq;ZB\p;ZBYq<;TSo<;oho
+;Z'Mo;Zp&u;cH`q<<Z?";H$Llqc!Jnr)<Vpr`&qtr_ierqc*`!='&N$=o;J&=TDS&=oVP3=BABt
+;,0hZ8kMN/@JaO4A,Ts3Aa<t%Ac60=A,9X7@Ja1*>5;A'>$Li,r`f5&oiV8urE9/&s&T;'<E2ur
+<"W,3=^,3>@:Nh[AnPajC27X%rb_[QrbiWmEcZDKH[UEtL5CnOPEqT,UStB%[CEi\rk&TL\[T&V
+[Bt^&=]PH"#$"i/;H-Igr_<er;cQe!<`N's;H*BjAVPtrM2@.LN/is[OckomQ'Rc(R@B\:StD[L
+U84W_Vl6VrXKAY0Z*L^C[^WcW]=bhk^VRe)`5Td<ai_fNcHaeadaQ^rf@S^0g>(N?hr*GPj5]4^
+k3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roO7CjSn0a
+io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ#KS=>t9rgE\Oqj75Hr0/:jMeA*,At><RNfT65
+XfA:tU84BNR$<_oNj-?eFaSo?NrkE*OoCOCOnOt9OoLLFO-#HaplPB6rf6Q/qi(B2)L6g_J:V'6
+Tq@mHSt;73P)t`^M2$_<KS"c5req/CNf8pTN/Wa,HiCVY\@/jF[K!W6[0F!oUX"CCM#EY=Pkp[D
+QMm-MR/NBOQ2m3LQM$ROQBdc$Q'R`&Q^F0;QNEJ>QMd!IPQ$a>PQ$gFPQ$dPPE_8pP*;)lOT(:A
+NfF$u!0-o:s,[2Bs,R/?rf@)@s,[)>rK$u<!0$l9!0$i8rf6u;!fi8"q2YK:!0@&>rf@)@q2bN:
+s,d;ErfI8FPEc!/s-*MIrfdJJP*5g.qNM/KQC!r*R/E?\R[]e8S"6+?SY)OITDkM`TDtSaTDtM^
+TDkGVT)kOSrgs%[qOdh^r1j:f$`0YRIscK[Ec,l=I/[URA,^$7Ac$*'BDZ<:Ac?6=A,Tm9Wr9!m
+Xo,@#YQ(j+Z2_-.Zi.92[/dZ3[fEr;\,EfZ\[oGe^V[t2b0JD`f@es8hr3VXl0@[)o(2PJp\=U_
+rndYn]=t&2R$W\oUqiFdP)Og7JsN7?[Ci]F[B$G-Y5PP7L5:\CMN!LRO,oEdP*D5tQ^F21S"6.C
+TV8*UUo(&gWiE/&Y->.9Za@0M\@K2`]tV7t_Sa=2a2lBFbKS8Wd*^:jeCE1&g"P08h;-uHi8WeW
+jQ5Oekiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roO7CjSn0]
+io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ#KqLSQpqg\Nmr-]Z+B2`JS;fm"rBP_HbJpr,s
+H$OOSEGfW/CP%XoC2S1kHLcF\I/SEkI/\KmHMMp_HM)R_H2r6`GS=7f?smD>:O78/FEM\FE,]Z1
+C1mNV"(G\JCAhiHCAqrIC)1MbAr_n2Mi!:HM26qBL5(IrI$nkoG5HdhIfFotJ,k)sIf=isIfFir
+If4]nIe8-dIf=irIe8'gI/JEiI/\KmI/\NpI!u!ArdF`mr-JEiqg86erd4Qjs*alos*F]lo6U4Z
+rHe-`p3HadHN&9kI/89hIf4crJ-(4LIf=imJ-(4NJGXotK):0#K`$Q'LAuu-L'*-aL55barJ(Q4
+LPL\AM=uc%LB<9eL\uu.M$JopF`MG;BPIHX!+l.=rF>h;q.9G8k\'d)q.9P9rF>e8rf6r=p6#B<
+s,m8Cn<<O0rfd;F09qomS"67KVQ-c%Z*L^D\%95c^;%M$_o0R9aihuVe(34-hr<b]lg=02o_81Z
+rqQKnrr)fqr#+"NRYccOJTcKsP(.q,GAh88I"[H;NJ`OKp4Qt2Ll$tGN/WaWO-,TgPa.Q$R$jG5
+SXuIHTq\?YVPgAmWiW>*YctF>['mHR\[oGe^;%M$_o0O7aN;TJbg+M\dF-Lne^rF+g=k?<h;@/K
+ioB([jlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$Q2gCRr;HTlqtpBhrqZNfs7cQerUp3_s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roO7CjSn0^
+io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ#K;YF&g;Ya8h;@b<..P<;*3&NNI1Gh'Y5sYE5
+r]:HI2`EWY7n6?P;c3Hjs&/nspf%)gr_rbnrDWYmr)<Soq,@#es&8blpJVPR0.nq41c7H]5!;"j
+3]d7"$TBq#1c$mA0fM!K2uY`82ubi@3Boc$9MGFYs%*5^9)_Bd7k[)';,L9j<;fbp<!#ur;Z0Pl
+<;fbm;YO,i<<6&tr_`er<)iisr)EYorD`br"B8B$<)icorDE_r<)cfq;Z9Sq;H*Hj!)rkrr)3Sn
+pf%2lrDW_qs&8qsr_inu;c6Nj;u]bp;u]bd;u]hq<W5r!<E)oq<;TVl<!-&u<)`cos&8np!)rbo
+qc!Dj!)rSjrDieps&&ns<)rlrs&8qs!)rkrr`'/%;c6Ll;cN]q"'/K)=Sl8">5_S<=BSg2=]ed/
+=^"s*;Gp=b9M.oF4T8ggA,^$7Ac$*'BDZ<:Ac?6=A,Tm9=T)Fu>P_P$>P_Os=oV\)=oVV'=8l4u
+<"i85=B\s9?X[DSAS#IdBPM<uCi'&e,AqF<E,p&CG^FjhKSPDDOcu*#TVnos[(!WY]=beg\[T#T
+[/RB=HWaZW=B&3t:fLHo;#a8u9MJ;]<`E'u<E)dmpf(dYLl$tGN/WaWO-,TgPa.Q$R$jG5SXuIH
+Tq\?YVPgAmWiW>*YctF>['mHR\[oGe^;%M$_o0O7aN;TJbg+M\dF-Lne^rF+g=k?<h;@/KioB([
+jlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUp3_!;$0[!qGdLrpL*[mHs9,lg*j8kmlq?k2tdejQ#:[
+iS`YOhYu=PgtUQ:f[na+e^W*tda?FfcHaYWbK@oIa./WgR[KT@R/<6LQN*6LPTZT\LQdFJTph7,
+LQ7CuXf/+mUS=9GQ^*SjN0TQmH\7phNrP.AOHG\'OoUX:P5g[EOogc-OoCFBOnb%8O8b11NVnb4
+N?<CpJUi;X?DF0aT:DI=QBIAiN/E@EKS+l,Mi<UTN/mdp!G$l_])oLN[f3]7Zj=(J[%YK`JVT<a
+Q3EP<Pa.N"r0@5Hrg*VPrKmPM!1!PLoTocJQ^*l&Q^@]=pm;#Grfm&=!L/fIPl6gFPQ[27P`h4/
+P6-l.O7nV5O8k:AO8b1:O8P+=Nrb9#rf$`6s,I/?NfO*us,R)<qi1Z;q2kW;rf@,BrfI)>s,d5B
+"-Se0PQ$gHQ2d*JPlm57P`u*0s-*;Ds-3VNQi<BMR0f=OR[]k>SXc:Dr1O%]rh01]rgrtYs.97_
+s.9+[qk3t_!2BIfrM9Cg$&O(XG&hS?EHK>%A,^$8Ac66=BB<h)BDlH=Ac?6>A,g!<WrB%!XSApq
+Y5PR(Yl:p-ZMh--ZiRSCp:("1+h>1r]=u(u`lZHMdF?e$g>1ZEj6,[mmI9]<o_/%SqY^<Iru(g6
+U7@X9N3pa'T9,(dI!^X@X0oRMY-5"/r3$"%A;5kqM2I4MNK0']OckonQ'[l+R[]h=StMdOUSOcb
+W2ZeuXfen4ZEppH[^`lZ]Y2%o^r""-`Q$!@b0/#ScHstee'uq"f@em3gtgfDi8EVTj5f=akNM0p
+lKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUp3_!;$0[!qGdLrpL*[mHs9,lg*j8kmlq?k2tdejQ#:[
+iS`YOhYu=JgtUQ:f[na+e^W*tda?FfcHaYWbK@oIa8U\iJbsupJ,FcpI2@$@@r5^fGB%M7Ao)48
+J:;lkH$FFOE,PYj"a,!>Df^L-HLH4ZI/eQkI.Vd\HM)R_H2r6bGR.JZ?smD=:j[HdFU*#.EGfZ0
+Bk[KV$=[FPC2%BtBkh?rrbDRM=)@kr&;uC%Ll$qCLPCP=G`ZWXFF!b5rI4crs*t*!r-nZqs*jur
+s*joprI4BgqgSKnrdOcn!.OEc"FPWFH[Ga>rd=osI=6KjrdFcn!IK.dHi89hHi/6kIK"TsH[:!b
+Hh;XaHN8BfHN8BaHh;XaHiAEhIJnWnJ,b$!J,XosJ,+WpIfP#sJc13!KE$W)L&6W(L&Zo-L]*&*
+L]</1M=uc%L]<50M#E2/M?S-CDf'3$rac)(raYq<qITV;r+G,)r+Gt?qITY:raYt;!07#>p6#B<
+!0R5Cn<<O0rKI5F09qllR[g"EUo12oYHY==[C<`Z]tV7t_8=.0a2uQMd*pS!gu%)Pkj%R)oChtV
+rqQNnrr)d:r;6?elHG9EL4au$O.:oUH?jRLD01;bMiEXOLPLNWKOfgmLl%"IN/`jYOHG]iQ'I]'
+R@9V8St;UKU8+N]Vl6SpXKAY0Yd1UB[^N]V]"G_j^VI_(`5Ta;ai_fNcHaeadaQ^rf@S^0g>(N?
+hr*GPj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<bs7cNfs7uZjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUp3_!;$0[!qGdLrpL*[mHs9,lg*j8kmlq?k2tdejQ#:[
+iS`YOhYu=JgtUQ:f[na+e^W*tda?FfcHaYWbK@oIa7W@2;YX2h;Bd_C.538(3Ar]L0JkUQ69m[t
+4Ztkf3]ArS0L&'':Jb%g;>sJd;u0Al;u9Jm;uBPj;uTbl;tj8k;u0Df;]I>A0/,(;1d4,e5!1nf
+3]K&X2`3EM1bpjB2`<Sn2ZPc73!D?-5tXgFr_*8_$V3l\84c<15Yk6T;uBVm;ZTirrDNSmrD`_o
+qbm/e"B8B$<)`co!E2ts<W#hq;uBT!<E)mr<E3#o;Zfor<)ifor_ikr;cETl!`N&tr_iepohtrm
+<)QWk;ZKep;uT\f;ZK_e;uTbq<W#hr;uTbr;u]hq;u]hr;Z]os;uKVo;Z]iq;uBVk;uT\p;ta2h
+<W,l#;c6Oo<`T,ur_rhrqc3Yqs&/kq!*&qt"B8B&='5?&!*]5%!E`M(>5_V&>5qJ":^'Tf8kDEO
+raYq<qITV;r+G,)r+Gt?qITY:raYt;!*K2'pKRQ!r*0#$p0%E!rE0,&r`9,$<W,ns<>/D8=^,0<
+?t!MS@q9.`BPM<tCMWocs(rrtDfKf=Fa/7^JV/`8NKKHnSu&HlZaRBT]=Y_f\[T#T['T\9)Nf)D
+<`2gp;c[4&;c$4b:/"D]<)m(&<`N'opf(dYLPUeEMi<XUO-#KePEhE"R$jD4S=Z=FTq\<XVPgAl
+WiW>*YctF>['mEQ\[oGe^;%J#_o0O6aN;TJbg+M\dF-Lne^rF+g=k?<h;@/KioB([jlYail07L!
+m-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUg6aoCMtPs7$*YrpTmT!:BdP#4(R>l07EproPTijQ#:[
+io/hRhqm2FgtUQ:g"=p.f$r3uda?IhcHa\YbK@rJa2X\LS,\oPR/NBNQN!-lPc'e'R#I#tS=5Y$
+OH=.ZX/;_hU7[j>PE1`6q8M38JGtT.O8b7'Oo^],rfR5B!0R/?qiC`:nr<U,r/D/3It<-#?sTM"
+St;LCQN!-ZOH#-PKnY24J:NT=N/iknN<FpI]=YWO[f3W=\$W$;H%Up<qN_,GrfmJLqj%/Hrg3YP
+rKmGJnsBBBrg3SNq3M)IrKRAIp65B<rfd2Cqi_&CO7nV2O8P"<O8=t:Nrb9#r/CW7r/Lo>N/WaV
+rf-i9s,[)>s,R8DO-#J%OTL]-OT(=?O8tFBOp$u5Q'@O1Pl[29rKR8Es-*MIrKIDLQC!s6R/i]T
+Rg#=RSXc7Br1O%]s.K7]s.9(ZrgrqXqOmk^!huHbqkX+c$]]X`G]e"EEd"!PAGTm:B)QB7B_,s1
+B`2TCB)?0=AH--@X/rE!Xo#:"YQ(j*YlM*.Zi%02[C5b;rjX/_]">Sf^V[n/b082[eCWC.h;I8Q
+kNV=#nF?)@p%S7Xr;PLO)Z%._US4-CM3Y$\S!9(oJ9l[+VR3eDY-+t/r3#t$@u#ksMMmFQNfT9a
+P*;,qQC+&.S"-%@T:r!SUnsufWN*#$Y-5(8Za@-K\@K2`]Y;.r_SX71`lQ6DbKS8Wd*^:jeCE1&
+f\5'7h;-uHi8WeWjQ5Oekiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu`noDX=@JcDqR
+J,~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUg6aoCMtPs7$*YrpTmT!:BdP#4(R>l07EproPQhjQ#:[
+io/hRhqm2FgtUQ:g"=p.f$r3uda?IhcHa\YbK@rJa2\(0s+0urrI=]n+an]SAT29qG]e%EBl%We
+KR\AqH?XOQEG]N-:s#$*CN4RsHN8BYHhVp[Hh_p[H2`*iH22[c>$h29#Z4EFG]n4PFE7A"&oDGu
+ARo:\@U`b[CM@NtBkhF!rb;FLrf-u;r/(H/s+U`5I=c9TFaX%8rI4`qs*t*!rI4]pr-nTmrI4Eh
+qgSEl!.Olps*jop!.OKerI"Bg!.=cos*OlpH@#=4rHeHird=]nrHnWmHN&9aHN/?kHN&6kI.Vdc
+H3/G>HMr3eHN/?jI/A?hIfForJGjutJH(*#J:E(IJGauuKE$Q%KDpN(L&6W(L&Zo-L]*&)L\6K"
+LBNEiM26ubM>N/<GB.\@BkV'iApZmUqITY<rFbb9o4di1rFc+Aqdob;s'u%ipQ><8qNCoDplkW?
+!1!DFrfd>G0U7rkR[]k@USXlgXfen6ZaI9R]=kqn^qmk)`lH6GcHt%lg"bKEjQGjrnb)\RrVlQk
+rVZ]ms8)cm)9nP>M26h9G(#15J:)`gE,KQ<Ko1hLMhm,]KO]dnM2I4MNK0']OckomQ'Rf)R[]h<
+StD^NUSO`aW2ZetXfek3ZEppG[^`lZ]Y(tn^r!t,`Q$!?b0/#ScHstee'uq"f@\g2gtgfDi8EVT
+j5f=akNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRr;HTlqtpBhs7uTfs7cQerUg6aoCMtPs7$*YrpTmT!:BdP#4(R>l07EproPTijQ#:[
+io/hRhqm2FgtUQ:g"=p.f$r3uda?IhcHa\YbK@rJa2V*O;ZKen;uKT61Fjq2/M9(B2)I$C1GqKa
+5<V.l4$#D\2`<469`@ff;uKPq;Gg=ir_rhp!E2np;s[EZ;uTbl;uK\p;uTbr;u9Jh;[P*/0J>(<
+1d=2g55mVM3]K)Z2Dm<J1Gf"c"ZA:u2E*Pk3!qrE9MJ2R91hcI9)_Be7lWP);H-Rnqc*Mm!E<"q
+;Z9Vm<;fbn;?9]qq,@;ms&B%trDEVprD`hsqc!Gms&K"ss&B%upeq2m;uT\j;uKVl;uT\g;Z]rt
+;Z0Pn<;fbp;Yj;l;X@<p<)lms<E3!s;cH^p<)lpt;c?Zo;u]hr;uTbr;u]bm;u9Pl;[?8u;H-Rn
+<)clp<;KVp<!ZE#;cHdu<E)rs;u]ho<W?#);c6Ll<)cjs<)rp!o3))q!a/]1rE9&%$s?D(;,9t\
+8kMN:,\6a_rau+AoP!i1oP"29rau%=rac%=r`]&#r`]2'r)s,*>4u,!>5_V(=9DW,<`T)ts&BV2
+='/X2?!guJ@UinZAnYjlrbDCI,A_47DfKi?Fa8=_J:r]8Ng#g#U8Y9$[(!TW]=bef\@8iOZMq-.
+Z5g2h=C5-2<E)jm<*)jl;,0h\:/+Yf<E<(!;c6Kf<+C]>M2I4MNK0']OckomQ'Rf)R[]h<StD^N
+USO`aW2ZetXfek3ZEppG[^`lZ]Y(tn^r!t,`Q$!?b0/#ScHstee'uq"f@\g2gtgfDi8EVTj5f=a
+kNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRr;HWmqYU9gs7uTfs7cQerq6<`s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roPTijQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHXSVbK7iH`l5prRfStGpmD)Jrg*JI#b$a+Oc3nFR[3r6
+'9]H"Vl$5aT:M=8P)t^-a-_'uL&@#2OT1I.P5gaFP5:=<OSb+<Nq/2/N;\_:H?oL@!b,D?rh(("
+SsPb.P)kTZLP:G:K7\W5NK0$XNJrnrN<!qs]E,RPrO2^4#.Cn*OFDn=rg!PLrKdDI!1*MIrKdJM
+rL!PMrK[JNR.ZgFQN!6IQjT1IQ^F,+Q'R`$PkUC<PQ[27PE_:0PkpRJP)t`bNfT8!Nr"h:NWP3#
+O8b4@O8b7>Ns:W(N/NUQN;eh:NW>.>NrG";NW>(<NWP9%Nr"k;O8Y1?P5g[EP5gXROH5KcOHGcl
+PE_;sPa)04s-*SMQBhE5r0%/GPPpaGQ2d0NR/36NRfAiWSGeuZStGqRrgs4aTDkGTTDkG[TD+u]
+Tq\?YV>[4dV$s/pO+)M&Ec>l9G+*XRAc?<@BD?0:C%,m6C&)H@BDuN@AcH9@XST'rY5GI-Yd(I=
+Z*L\7Zi%03[C3O;\,Nl^\[oDb]YD;#`Q63GcdL@pg"YBAioT@gm-a?4nalGKq>1$gf`)heURdp>
+MmDE@R#m>[I!UI<WOBCNY-5(1YPt^%Y@<9DM2I7NNK9-_P*2&pQC!u,S"#t?T:qsRUnsueWN*#$
+Xfnt6Za@-K\%0)^]Y;.r_SX71`lQ6DbKS5Vd*^:jeCE.%f\5'7h;-uHi8N_VjQ5Oekiq?slg4!*
+mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$Q2gCRr;HWmqYU9gs7uTfs7cQerq6<`s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roPTijQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHXSVbK7iH`l5pqJcLAsJH(,pINNQC@V]XTGB%P8C27[<
+JUMokH?XINDJa3*Kp@"#DKY#eq0_d\pj2UYrd"Qiqfio^>$t]G;GL#4G^":RF)l5;D/<ltA7T9N
+@K:-ACAqrIC]8&K?iH&eN/EMlM>rA1L'DdED0'lLIf"WlIfFotJGalrJ,b$!J,FcoIJnWhJ,=]o
+J,Om$IsufpI=D*B!.OHd!doEDoR-afHiA?gHN8BjHiJEjHiJKmIJnQkHhMdaHiA?jHNSYBH[PU8
+s*FWj!.=cms*FZk!IB+kI/89gIfForJGam#J:E'!J:IKIrIG!$KDpK&KDpQ&L&?])K`Qp`qhY*(
+on`F!!/UH-pkfE*EH#f1BOtafH<^>Zrau.Bph9M<n7qf6q.T_>rau(>s'u+kpQ>97nWWm8!1!DF
+rfd>G0pS&lR@Bb>TqeK`WiWA-ZF%$L\\#Ph^VI\%`5]m@bg+Vbf@es:ioK:hn+?AMr;HWjrrN,t
+rVZ]m+o;*5r;HWdcAmd;L4=K1Y_IUQH#dh@EI`k)NfApPLP:HWKOT^nM2I7NNK9-_P*2&pQC!u,
+S"#t?T:qsRUnsueWN*#$Xfnt6Za@-K\%0)^]Y;.r_SX71`lQ6DbKS5Vd*^:jeCE.%f\5'7h;-uH
+i8N_VjQ5Oekiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$Q2gCRr;HWmqYU9gs7uTfs7cQerq6<`s7?6\s7$*YrpTmT!:BdP!UK%MklL#2roPTijQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tdF$=ecHXSVbK7iH`l5pi;u]hp;uBN8/1N)&/hf7C2)6pD1dXMo
+5<_7o4$#D\2`<rm78H]Xq,./i!)rbmrDW&\qc!Jnnl,Nes&8emr)47]/2/_32D[-R4Ztnh4?GP^
+2`3Mm1^c/q1,:dJ2`<NQ3'.$u#rb(A9MJ2R91hhS8I7pO85E)];c6OmrD`VlrDNSms&B"us&Aqq
+rDE\r<E/cm!`W0!r)*MnrDi\mqc!Por_rnu<:s/k;H$Kh;uKVl;u]\p;Z0Mo;Yj>k;ZB\p<;fbo
+;Z9Vo;?Bco;Z9Sp<:s/l<)Z^qqc*SorD`esqG[Sr<)cdprD`eqs&/_mqc*Jl#Z=Ms<)cdq<)rco
+qGmPps&8qs!*/tsr_ierqGe/-;c6Ll;cHas<)cn"='/U.>$CW&s'#A(rEB2's&]7tr_Wkr91_`D
+5:uhFrau.Bph9M<n7qf6q.T_>rau(>s'u+5pKRW#rEB;+>PVIr=TDY(=oVV'<rl?%r`&ks0NV@[
+>?kH??t!MSA7fFdBPD0qBkhEuCM[j*DfKi?G'SF`J:r]8OHc3,Vl[,.[C?+F"h;%L['R(;Z2V$N
+ZaI9PQ#p/0<E)pr>%po2:/=VZ9hnSb<EWC&<DlXlpf(^XM2@+KN/`mZOckllQ'Rc(R@B\:StD^M
+USO`aVl?\sXf\e2Z*UgF[^WfY]=bkm^r!t,`Q$!?b0/#RcHstee'uq!f@\g2gtgfDi8ESSj5f=a
+kNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfrqHHdrq6<`s7?6\!qGdLrpKmUmJcH2lg!d"l0.<nk2tddj5].Y
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHXPUb/q`F`l5lcS!oe6q3_/Js-ESJ+JY$OPDb9iS=,Lq
+OcQB@WhlMdTqIj?QB@5hQ^MrAK9uOtrfI)@qi^uC!0[>FrK@2Es-!5Bs-!8ArfHo9rf6Q/s,?o9
+-@()kJ72kkU7\$LSsl%2P)tW[LPUY<KS"f7O,]0ZNf8sVN/ip/rk&9B\,Ec7Zj*sHN1,6MM#EV>
+Q2HsIPlR-IPm*J?QBml(rL!PMrg!VPR$di=!1*8Dop>rMQBml&Pa)*0!0mJHpQYZ@rfm;Drf[;C
+s,R2BO8P%7Ns1Q'NfT9`rf@&?rf75BN/W[RN;eh9NrP.CNfB$WNW+q=O,j1"rfI/@!0I2@rf@5E
+PEM(-P5g[EOT1IGOcu#oq3;)IPEV8tqNUuCqih2JQ^F08R/rbGrgX(]St;SLT`:YaT)YD_T)##W
+T)PAUT`:\eU84UaV>m@fV#[=jUC*'2I<p$UDK'`eM>h,dBDQ<?C&;Z2C\qlFC&2NBBDuNAAc8b,
+Y5PO*Yd(J3ZMh-.[/[N6[e@3/\0AJp]=bkn_SsR<b082[e^rL/hVdDUkN_F$n+#u?pA"I\rR_&e
+_RlS;SX>;"WlUWiP)4a:I#b#/[C`ZGYH@c+qQF=`M2I4MNK0']P*2&pQ'[l+S"#t?T:hmPUnsrd
+W2co"Xfnt6Za7'J\%0)^]Y2(q_8=.0`lH0CbKS5VcdC.heCE.%f\5'6h;-uHi8N_VjQ5Oekiq?s
+lg4!*mdKW6nc&(boCV\Jp%J+Rp\ssfq>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfrqHHdrq6<`s7?6\!qGdLrpKmUmJcH-lg!d"l0.<nk2tddj5].Y
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHXPUb/q`F`l5mpJcLAtJGt&pINWlM@Vo^hGB@b=Ao2@5
+JUi/oH$4CSE,KN/Dg$G?DKC6gHiJKnHi/9]Hh_p[H2`*iH2Mn6>$kZG;Gg59G]n7PFE2><DJO!!
+An5F]@:EqdBk_<sBkhBuBkg`KNWP/sMZ/J4L]<)69lYMtF*E(^q1&<k!.Xuu$%IDRIXZcrJ:N.I
+If4]nIfFltIeeKkIf=ipJ,k)tIf+ToIf+ToIf+TsIXQZpIe%pdI/\EmH[Pg>rd+?ds*Xip!do?A
+rd=]l"aYH>H?sr8HN&9iHN&6lI!bj?r-JHjHiA?jHiAEmHiJEjHNSYDI!kj?s*arrqgSBk!.arr
+!e>cMq1/QuKDpK&KDgK&L%pE&L\QZ*L[p8uLB*/.M>rD3M>2u.M[FlPE,KE(AS#J"C&V`DBDQ<?
+C&;Z2C\qlFC&2NBBDuNAAbhJaP4Fh.Pl?mFPVADiR@9\<TVA6ZW2cr%Yd1XE\[f>c]tV:u_SjI7
+b0A5ZeCWC/hW!V\md]uFqYgEhrrN,trVZ]m,5V36r;HWos3I.#M26n;G(#47JU;cgE,BK;Ko1hM
+N/<:Dp4Qk1M2I4MNK0']P*2&pQ'[l+S"#t?T:hmPUnsrdW2co"Xfnt6Za7'J\%0)^]Y2(q_8=.0
+`lH0CbKS5VcdC.heCE.%f\5'6h;-uHi8N_VjQ5Oekiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssf
+q>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfrqHHdrq6<`s7?6\!qGdLrpKmUmJcH-lg!d"l0.<nk2tddj5].Y
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHXPUb/q`F`l5mi;u]hp;uBN90.J>(/M9%A2)?m@1I+8l
+5!;%j4?GV`2`<KW85;rX<;9;k;Gm6f!)r/\qc!Jnnl,Nes&8emrDOjj0/#%;1c.E[5!D(k4#o;\
+2E*HM1GggB1,q9R2E!KQ3W:u=2a@77!)*;`r(.&C4@N%C;uKSs;cH[p<;BJl;@-9$;c?Xp<E3!t
+rDWYms&B%ur_iepr)<Vp!)rho!*&qt!*&bm!E<"m;uoosr)3\s;c?Zh;uBPn;Zp&u;Gg<i;uT\k
+;u]bq;u]eu;c6Nm;u]bq;u]`!;,U=j;,[Bls&Aem!E<"r;uouur_ierr_j&$;cHas<)Z`o<<#ns
+<<#nq<;oer;YsDl<;f_q<;ohr;$Kru;c6Ro<W#er<W#hr<Us,a<W,hs<)ros"BJT*=]t],pK@N"
+rE9/(r`T,#rD<bq9M.oG5;iFPrb)(@rFu.DlYHB4rFu+Arb)4BrFPb.s'#A*!Er_'>4u,!=p.u3
+=]ef*<ruE&<W5tt<>/G9=^#'8?!^oI@q0%\AnPdjBkdN\(i*r)DK'T9FEVqVIXm*,N09O!UT(K'
+ZaThBs0i';Za0G4'sb3S\$rec>?t<1<Dudl;cZ[j:JFU`9aF^!;ccpu;c?Qf<+1T>MMmFQNfT9b
+P*D5sQ^F21S"6.CTV8*UV5C/hWiN5'YHY:<ZaI6N\[oDc]t_A!_SjF5a2lEHbg"GZdF$Fme^i@)
+g=k<;h;@/KiT&tZjlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrqQNhrqcQirqu`noDX=@JcDqR
+J,~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfs7cQerUp3_!;$0[#P%<Qn*f]4mJcGQlg"K6!U/_Gjt>cVj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bc-4ARaiMNB`Pf[2S!oe6RJN<LQi**oYF()[NJD5;Q^!Po
+O_1\qWM?2^SXl+4P)a+CaMiFUO-#HaO8b7<Oo:IBP5pjGPQ-gEP5pjHPQ$gHPQ-gBOoLO<O8b11
+N<"q:N>$MfJUr>X?D4$aTq.[@Q'7AiMM_=c%u#[gNK0!ZNK&sYN/`jWAH'4F\[T#V[^Q1B#.7d+
+]mY]prKdGJrKdGJ!1*MI!1*PLrL!PM!1*VNs-WePrg*8EoU,TC!1!MIs-*JIs-*JI!1!AErfd>G
+rfdAHs-*GF"d+k,OH>P&Nqn_;NK0(uO91K'O8Y.@NfF!rrf-r<rK$r<!0-r;r/^f<s,[&=s,d>F
+Oo:ICOT^c.P*2%*PmNbAQ'@JrPa7T"r072Eqih2JQC+'6R/rbGrgX%]T:bnOs.B7]qOdYVrh&qX
+"JMQaUSIda!2TFe!2TUh%]#q`IslT`Ec,i>RY,Zoqe5qBrG(2)rG):Fqe6"Brau1A!3Q%!riZC-
+Z*F85rNlF/!O]B0\,Ef]\[oDb^;.S'`lZEIc-Okhf@es9iT'%`lg=-/nac>Gq"jmdeGgA_Un+3D
+N3W/XQB@5[I!UC3Wj]OQY-5+2riZ+$@>KbsMi<UTO-#KePEhE!R$jD4S=Z=FTq\?YVPgAmWiW>*
+Yd(L?[C3QT\\#Mf^VI\&_o9X9aN;WLc-FY_dF6Uqf%8R.g=tH>hVd>Nj5]4^k3(sml0@U$m-X60
+n*olHnd+jZo_%nNp@n=\q#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfs7cQerUp3_!;$0[#P%<Qn*f]4mJcGQlg"K6!U/_GjsfEQj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bc-4ARaiMNB`Pf[2rdt0$qLJNor-fc?E+Dm\AQ<ejDJF$*
+<IoXLH[0jXFE)28C/T8DSSW:kja6rRs*O]lnU(%Wom-O_!."Qg!*T8.+\ts]G^":QFE)8<D/*`t
+A7K.\@Ua(fC27R"C2@X"BkgcLNWkB!M2I.HreC]49QuJ6FF*q8q1&<k!e5`Nq1&Bo"FklLIt%?E
+rI+`rrdOZmrdOirqg\ZrrdOQhs*jrqrI4cr!.OHd"FPQBH@,X=s*OclqKi9kH[Pd?"+5HAHi8<n
+H[9u:H2r<jHMVsgHMr3hI/J?kHM`'eI/SBoI!^6gqgJ9hr."]p!IoXsIg(@PIt3*$r.=p#s+1?*
+JqJaSL%pB&L\?N(M=l]$L]<2/M>i;2M>)o+M[Y&SE,KE(AS#P$AQiaDB`2ZDC>Nb)CAhlDB`D`E
+B)cH?Onb+2PP::AQ2[$IPPp_#Q'[o-S=Q=HUSOccWN3/*ZF%'M\\#Pg^;.S%`5Tg@c-Fbef@o$;
+io]Rqo_/+Xr;QQm"oeJur;6BjqZ$Epr;HWorVmc(cAd^:LOXW3^5%)_H#dh@EIN_'O-#6UL\?C0
+Ll$tHN/WdXOHG]iQ'IZ&R@9V8St;UKU84T^Vl6VqXKAY0Z*L^D[^WfX]=bhl^qmn*`Q#s>aihoQ
+cHjnce'uq!f@\g2gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF?MK#kR]\p%A%Pp\4[^s7uZjr;6Kk
+rVc?eJcC<$YQ'+~>
+JcC<$Q2gCRrVc]mqYU<hrqZNfs7cQerUp3_!;$0[#P%<Qn*f]4mJcGQlg"K6!U/_GjsfEQj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bc-4ARaiMNB`Pf[2pJ_)krDWVl'0%Nm.kWA+3&WTJ1c.-X
+5X7Ls4oRMN3&W]I5>FsL:K(.hp/1-Rr_rYkr_r\nnl,Ne!)r_ls&0:U0/,+71c.?Z5!:t+49%8L
+2E*KM1G^dB1,h0P2`CUo"$&>#5Q"1V8kVeS8HUA)92>:\r_ierqGRMr;c6Llr)EYqs&9%u<)``n
+"B8B#;cEZnq,@;k!E2ts<VBAe<!#ut<;ohn<:s2g;ZBZ&<)ZXk;H-Uo;c6Nh;ZTcprDWkt;Gg?h
+;uTVt;H$Fj;cEWos&/nsr)<Pns&B%urDWYos&8nrr_rhrrDW_q!)rhqpJ_&jrDN\qr_rhp#?+T#
+;H$Oo<W,ks<Vo_q<W,ks<VKJf<<?,u;u9Mr<E<.&r`\tt!*]5%pfRQ!$rTr":JXYV9LV0#2.uf"
+rFu4FhJ<()rFu.Bs(D=Cs(1k-pKI8ns&oP.>$5!1r`9/%<E9#t'ie:9=BSg3>[1TA?t!MSAS#Id
+B4u#WC):Z%Ci432EclPMH[^O!MNF*mTr4urZF'S=#dq%GZE^[=Z*F83!j]2@rjEiTZB90/<`N.!
+;cmp7:Jak_9heG_<E<4$<)lgn;YX1!Ll$tHN/WdXOHG]iQ'IZ&R@9V8St;UKU84T^Vl6VqXKAY0
+Z*L^D[^WfX]=bhl^qmn*`Q#s>aihoQcHjnce'uq!f@\g2gYL]Bi8ESSj5f=akNM0plKdg'mI'H3
+nF?MK#kR]\p%A%Pp\4[^s7uZjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUp3_!;$3\s7$*YrpTmT!:BdP!UK%Mklp;6k2tddro5He
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`Pod4_OI!^RJE6KQiEBNPp)QWKTV%HUR7@/
+P*)!0XJr%lUS4<KQBIAmZ-8Y]I>*fGqiL];rf[8Erfm5BrfdDHqih/GP*5g,rfR>FOHB3ts,QT.
+*-d!bJ:M!4US4?QStDI9P`^ubLkUM:L4k/=O,j'rs,I(irk&EG\@8oU[f3W<[>Cg)Its0aQ33D:
+Pa2-3qiq/Ir0R>KrKdYQQ^=),rKmMLp6YE=$C@'FQBd]"Q^*f!r0.2HpltfBpQYZ@!KrTCO91K'
+Nqn_;NfT8"OT1=@O8b4AO,j4!!0$o:rf6r<pl><6rfI/@qN1]=rfR8FrK7)B!0mAGs-E\Mrfd>I
+rg!GH!0d;E!L8uLR/WKRRf/WTR[a;H!1j(\rLa:eTV.pLrgrqXrgs"Z!hc6\r1O(`"JVZdUnmRX
+s.o[ks/$0gJ:)WbEGTW>U4cPFB`;`FCA2N<D#J5ED"qfECAqrFB`;WEB)/V/YQ(g,Z2M!-Zhq*1
+[C5e<rO=,`]">Sg^qmt/ai_fOcdC4mf@o$;ioK7dm-X60nalGIq>1!eeGgN+\"odiS;NT5`g`$P
+LjjW!MP7>`]<\TCXfJV-q6+1^M2I7NNK9-_P*;,qQC+&.S"-%@T:r!SUnsufWN*&%Y->.9Za@0M
+\@K5a]t_=u_Sa@3a2lBGbK\>YdF$Fme^i@)g"P3:h;7)JiSrnYjlYail07L!m-O--n*fc9rpg?d
+o^qhLp@e7TrqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUp3_!;$3\s7$*YrpTmT!:BdP!UK%Mklp;6k2tddro5Bc
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`Pod4_LdC<JbsurJ,Fa2EG8ltA7p.+Dej3,
+DM!@eH[9s\F`_U%D$>Z]Hu!YBj*U`Prd4Tkqg8<iqKr$aom-O_!dT#orEob):O@A2rcScmE,]W0
+BkM!eA7]4YCM`ub#A\'iCMIU"=T4<^NJ`VmM>i87L1l%'E--F)IeS?kIKG"LJGOcnJGjs!IXQYC
+IfFosIenQmIf=inJ-(4LIeJ3iIf=a"IXQWnIXckGIK+ckIK+ZqH[>[<rd=`m!.+Nhs*OioI/\Qo
+I/eKmHiAEmHhVjZHiAEjHiJEhHi8<nI=-GAHiJKiIJJ?iJ,OiqJGt&uJ-(:PJGb#uK)gT'K*$XW
+K_pK$LAco*M#)u-M#W>.M#)o+M#E21L]E;,MY`5=IrK@EC1h*iBROM^rFl1ErbD1CpMBeFp2'M>
+rG)=Gr+Q(B!+u4mpQG04o9B6<rKK(&Q^F53SY2[OUo()iWiWA-ZaI6O\\#Mf^;.V'`5]pAc-Ohf
+f@o$;jQQ%&p%\C]rVl`ps8N&ss8;oo!;cZk!rW#rrVmo;rR%$uMhm.AGC>@8J9cNcDf'H9Jr>SJ
+Mhm.CKD1%,Ll%"JN/`mZOckomQ'Rf)R[]h<StD^NUSO`aW2ZeuXfen4ZEppH\%&u\]Y2(p_8=+/
+`Q-'AbKJ/UcdC.heCE.%f\,!5h;-rGi8N\UjQ5Oekiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssf
+q>U6gqu6NlrU^#>s+13Rs*t~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUp3_!;$3\s7$*YrpTmT!:BdP!UK%Mklp;6k2tddro5<a
+iS`YOhVI#CgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`Pod4_XUS&;BIJ?.5*2'3Ar`N1c$sS69m^u
+4Zkef3ArcS6:s^D:fI<jpJL9Tqc!Air_rYmo2GWf!)r_l%P9=f0JPFA5<h:p4?GYdrAY$>1bppE
+1GUle3!VB%3B0&Z3'R=8"&2E]9)M6b8hW>(:f:6b;YsAp<)Z[nr)ESorDWhs;H!Bjr_iSkrDE_r
+<E3#k;u0Gn;uTbo;uK\g;uT\p<!63";GpHm<<#ks;Ya5k;Z0Sp;u]\p;Z0N#<)Z[l;H$Ij;cETn
+!)rkr!`N&sr`&hr!*&qrr)EMkr`&kqs&APfr`&hpr`&kqr`&nqrDWbqr_rktr)E\rr_rktqGd,f
+!*&qrr`&kss&K,%r`\tts'#G*"'A].=o2>!=oVY5;Gg=g:J4>S76iOSrFl1ErbD1CpMBeFp2'M>
+rG)=Gr+Q(B!+u16!*];)pKI8ns&oP.>$5!1r`:(?<E3!u<)lt"=BSg3>[1TA?XR;PA7T7`B4tsm
+r+[!_Ci"!-E-$/FG^FplLQ%FbT;8HhZ*XD:"LPM@Z*F,/'X>!P[^NTNZ`pTP>$P-1=B&0r;-*Wk
+$qsDk9iFtj=B/C$;G[$c@#0YsN/WaWO-,ThPa.Q%R$sM7SXuIIU8+N\Vl6SpXKAY0Yd1UB[^WcW
+]=bhl^VRe)`Pom=aihlPcHjnce'uq!f@\d1gYL]Bi8ESRj5f=akNM0plKdg'mI'H3nF?MK#kR]\
+p%A%Pp\4[^s7uZjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtPs7$*YrpL6_mHs9,lg!d"l0.=0jtGiWj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp1ac-4ARaiMNB`Pf[2_4-m^R@3o=rg3VMs-4t+ObfEaLnL<-
+P)PKaBrnG8W2-)YS=,b.Nd6tZFF&S&P*(lgOcY\%OoCOCPPg[FPQ-jIPPgXFQ26^HPEM.,OoUXD
+OSFn:Nq//0HN&I2J7)Z[Tq@mIT:(t0P`Li_LPLP8KS,9`O8k7?N;\_9B)]FH]=>>Y\$l:C#doH.
+SUuQ]Q^@Z:"I549Q'M64qj%&FrL!GJs-WbOrg*8EoU,TD"I>==Q^.H4s-<JG"-o+8PPUODQ2QsI
+P6$i/r/_&BOH5HaqN(Q9!KW9>OT1@ANr4n8Nr+n;NW>.<NrP1=OT1@AOo1=?Oo1CBOT^i0P*2%*
+Pm*J=P`q>rqN^f>s-<YOrg<\Q!1NkSs-itWs-s1_SXuGOT`:\cTDkGUTDtJ_TDP;]UAgefTq\9V
+r1s1cs/,Rfr2'jiJp_ieE,9N=WeFFOC&VlDC]&#ED=qfBD>\5HC]8)KC&DZEBD\k3YQ(g,Z2M!-
+Zhq*1[C5e<rO=2b]">Sg^qmt/ai_fOcdC4lf@es9iT'%`lKms,nF?,Cp\F[`r;P.E)Q9I&Vj!.G
+l`lY9OFhk-K:/aI]"bGOZE(13poe7cMMmFQNfT9bP*;/rQ^F21S"6.CTV8-VV5L5jWiN8(YHY:<
+['d?P\[oGd^;%J#_o0O7aN;TJc-FY^dF-Oof%8R-g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*ol;
+o()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtPs7$*YrpL6_mHs9,lg!d"l0.=0jsoKRj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp1ac-4ARaiMNB`Pf[2_>]&aJc(&uJ,Fa;GA:]/BOuF3EGT<)
+D-):=I=6EcG'%_CDJNU&H>%/:l?iPYqg86grd4Tkqg8<iqKr$aom-R`!I7oJ?m/BDI<g$ZF`qhF
+E,TQ.C1_$e@q&n^Chmj%Chd^#C2%Hbrf-u<reg`4reCi8CQa9gFaegiIX^m<rdaforIFlss*t-!
+IJnWpJ,XonJ,XorJ,"NpIt%0@rdOips*jrqrI+ouIXZcrIf+ToIf=cqI/\KjHj"eDH[C/>HiAEj
+I04kDH@,X=s*ONes*F`lrd+Wmrd+ZlHi8?iHiJEiHi8?lIJeHnI=1p?q0r<mqgJTrJ:RTJ"+YrQ
+Jc(-!K)gT&K*$XXK`$Q%LAQc+M#)u+L]E;.M#E,.M#)u.L]iQlMMmDjMYN);JT5XIC1_$hB7aee
+rb;@HqJ6"Fq/,eBq/-%GqJ6(Fs(VCEs(D(hoons2rfd;F16n2nR[ftATq\?[Vl?YrXfo%;[^N]V
+]=bhl^r""-a2lEJcdC7og>(ZKlL4?<q>1$gr;Zfqs8;oorqcWk"8r,rrr)j>rr)clqVf\YMhd7?
+HB>FkH[C$ZDJaHEM2[IWMM?tAL%g73M2I4MNK0']P*2#oQ'[l+S"#t?T:hmQUnsueWN*#$Xfnt6
+Za@-K\@K2`]Y;.r_Sa=2a2lBFbK\>Yd*^:keCN7(g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9
+nac8Bo^r.U!quB_rqQNhrqcQirqu`noDX=@JcDqRJ,~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtPs7$*YrpL6_mHs9,lg!d"l0.=0jsoKRj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp1ac-4ARaiMNB`Pf[2_=CP&;BR\D.5NP-3ArfQ0JbOD69me"
+5!;"i4#f/X/jDm%;,:'e;Ya2U;Yj>h;Z9Vk<:j,f;ufkp;CX:P0JP:@1dF;h4Zkeg3]T2[3Ar`N
+1c$pA2)mQU3&`fW3&iiV4\\UD:&[fc8IJ'\8kLs-;,C+f;cE?er)<Vp!E)kn<;fhp<<#kn;uT\k
+;uKSr<)lptoi(Q`qc!Gmr_rhrqGRDm;uT_t;c6Ql<!Q?$;c?Xo;c<Tnr)<_r;GmBks&9A);,L7j
+;,U=k<)cfq;ufqo<;ons<<#nq<;BJm<!?2u;c?Xpo2>WgqG[DnrDW_qs&8kq!)rkr!*/nq!*8em
+r`/qsqGmDk#ZOf(<`W:)>$CT%s'#G*r`K2'r)il"s'#G*$WBo":/=MT9L_9%.fO/]CAM`DD#%r@
+DY\/ID#.rHCB&#GB`D]G>?^r/pKI8nrEB5(!*K5%"'/E%<;ont<Y\\=>$G6:?!^lG@:EbXAS,Rf
+BPD3rrb3<dCM[j)DfB`=G'SIcK8PbVS=uj^YHkOC[C!7<YQ:r3ql_EPZF%'K[C!9EY,eLtJ9"an
+='/F!=CY<+:f0t`:/=Yb<*!%!<DudmpJYX[MMmFQNfT9bP*;/rQ^F21S"6.CTV8-VV5L5jWiN8(
+YHY:<['d?P\[oGd^;%J#_o0O7aN;TJc-FY^dF-Oof%8R-g=tE=hV[8MioB+]k2tjkl0@U$m-X60
+n*ol;o()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s0)HQ~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtP!qGdLrpKmUmJcGQlg"K61?do`k2k^cj5].X
+i8EMLh;-l@g=k64f@JL%eC2jnd*L"_bfe2OaN2B?`P]R0^qZA-rgE\OrKmPMrfnRoM//93BUkKV
+OH>WfX0/CuUnXNOR?a)#P3^r#H%M(UP4t+<P5^[APR!J<Pa.JuPa)04qNUuCqiV&DOHGY"O8k74
+N<+EOrdb/[?ui"@TEq*WQ'7DmO,AenL&Zc6NK9*ZOH#3XNfB$YNr?U"\[T#V[^EKL[CXS,K8'5i
+s-E\MrfdDJqNh&E!1*MKrL!MLs-W\M!1*8DoU,TD(7(;RQ'@N!Q'R]$Q'ISuQ'@MuPa%Aqqiq)F
+rfmGH"-Se0Ont18O8Y1?O8G%=Nr=t;NWP9%Nr4t;NW>.=NrP1;OT1IAOT(C>P5g[DOo^c2rK[AJ
+!gT"6pm(T<"-o1=RJrQRRJE<OS,Ji[SXuFFT`1VbT`1PTT)bP`U&UbeTq\:\T`Lm_qkX%as/#gn
+VYm:cV@Ac@I!BjTD/jd'G#_XZqeQ.Hr,(M4r,)FLqJ6+Grb;=EriZ:)s0)L.rNcF/qm6C3[e@3/
+\0nhu]=Ybl_8F:6b0/&UdF6Xtf\50=ioK7dm-O0/nFH2Dp\=U^rVk7F)of@_URn9=Q*A5sNK]3K
+H%1sNXgYmNYHG%/Y5#4#M.;F%N/is\OckomQ'[l+R[]h=StMdOUnsrdW2co"Xfnt6Za7'J\@K2`
+]Y;.r_SX71`lQ9EbKS8Xd*^:keCN7(g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^r.U
+!quB_rqQKgs8)Zjrqu`noDX=@JcDqRJ,~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtP!qGdLrpKmUmJcGQlg"K61?do`k2k^cj5].X
+i8EMLh;-l@g=k64f@JL%eC2jnd*L"_bfe2OaN2B?`P]R0^qYJQqgn`srdXip+*(pmCh?XhEGoW/
+D/=cSI=-?cGB7eCDJa-uWIeo+H0TbUHineEH[GU:rHnNkqg8<iqKr$aom%9u?!1QD?rKm,H$FOU
+F`VP@Df'<)BDuEP@q'1hC2.R#C27X$Bl%RErf.#;MZ/G<Lkgb?Lm;aqFo6^hIf4`rJGXfsJ:IKI
+q1&?n"FkrPIsq9ErI4frqLAKnrdXZms*k#tqL/<ks*aorrI+Kjs*suqrdOip#(1iGH[L3fqgABi
+!IB+lI/eWpHi\S?rd+]oH[GO6rd4Zk!.4Zls*=Zlrd=?brd=Wlrd=QjrI4TmqL8HordOlsrdY'$
+JqO&S!/(0%s+C?)r.Y$&r.jm"re^Q/reLN0qhb?1re^W3s,-o8MuJV0MuJYEJ8fIFCM76jBS0e`
+95=?>rG;CKjDOm4rbVFHs(_OIrFl"ip65'3rfd;F16n2nR[]n@Tq\?[Vl6SqXKSk7['mHR]">Vh
+^VRe)`Q$!Ac-Xkff\>9CkjJ$7q"agbr;H]prVQ`oqYL0fs82orrr)j@rr)clqt^!4R[9"iL5:)'
+MjJs>I!'CGDg?qlNK9$ULk^WXK`?m=MN!LSO-#KePE_?!R$jD4S=Z=FTq\?ZVPgAmX/rG,Yd(O@
+[C3TU]"G\i^VI_'`5Ta;ai_fNcHjkbdaZdtf@\d1gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?&>
+o(2MGrq-?dp\4[^rqZTjr;6KkrVc?eJcC<$YQ'+~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerUg6aoCMtP!qGdLrpKmUmJcGQlg"K60^.]^k2k^cj5].X
+i8EMLh;-l@g=k64f@JL%eC2jnd*L"_bfe2OaN2B?`P]R0^q]P@qGIhU.4d,(0fM!J1,CaC6:*s9
+4pj>43&ifNDGs,':\doc;<^s[;c6Nm;u0Dk;u0Jc;uKYq;uTZ#/hA\20fCjI5Q3hV3]oJ`3&`fT
+1c$pF1GUid3!_H&3B9&X3B0b49`I`o8kDTF8kMZ:6;UQX;#O>c;YX2f<;fhr;uooqq,78kqG[;i
+!`N)uoMbH_qc!Dlr_rhrq,@5k!`N&uq,I>ls&/hps&B"ss&/bn#ZXf%;GpFk;,dEms&/qt<Vo_r
+<E/osq,I/gr`&kpr_ieprDWYorDN\qoMbchr_iu"<E)mq<;T\q<<#tl<<#tt<;KSp<;]\p<<#r$
+<``F->4u+u>5h\)=T;M)=BYW*qH<f"%TcS+;,0q]9MIr@3[ZRqqeQ.Hr,(M4r,)FLqJ6+Grb;=E
+rEK&#oi_5ss&oA(s&T2$qGmPs$WpS:>[1Q@?XR;OAH$-AAnPfTC&Mc`CMdp+E,p#DH%(="NKfm)
+V5^T#ZF$sDZ2Lj,Ycmr,'sFmJ['d9IZEUL4WMQ;[E*?OL=&r<";%cr,:esh]9MS;\<)d""<E)mn
+;YX2jM.;F%N/is\OckomQ'[l+R[]h=StMdOUnsrdW2co"Xfnt6Za7'J\@K2`]Y;.r_SX71`lQ9E
+bKS8Xd*^:keCN7(g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^r.U!quB_rqQKgs8)Zj
+rqu`noDX=@JcDqRJ,~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerq6<`s7?6\#P%<Qn*f]4mJcH2lg!a!kih3lk2k[aj5T%U
+i8<DIh;$c=g=b-1f@JL%e'cXkcd'h\bfe/NaN)<>`5BI.^V?8,rg<kUR@'B?Qi<<NPolWZJWknF
+Ssl"-MN<q'XfA4pTV7mFQ^*\ns1=VAI>.Q]!0R8DrfR/Bs-*;Dr078JqN_&E!1!PJrfd5BrfI2B
+q2bN8p5L5DG(G3r@:!37TUqmKS=>b,PE(NXKnY26K7f2ENKB-YN;eh:Nr?U"\[T#V[^ENM[B?`^
+KnfJkrg!PLrfdDJqNh)Fs-ESLq3V/Krg<SL!1*5Cop>cHR/E9TQB[Z$QBmm:Q3!88rKRJLPEM.-
+Pl-dHPl?mFOoUX@O9(E(rK$l<!frG*r/gr>!fi8"rf6i9pl>B8r/gr@!g8Y,qN:c?s,m8CrfdDJ
+r0I>Hrg*AFqNV#F"dYRER$a<;Rf8fUSH#/[T)YJ`T`^s[St>bMqk3q^#G@caU8"?UUALbZV>mFk
+V>-qeV[S];HZsXQD/jctHVRZAC]/)KD>.r8Dte/KD>nAKC]A/KBa/7RY-5(7Z2M!-Zi%31[/dZ/
+\,Efb\[oDb]thJ%`lQ9Fbg4\ceCN:+h;@/NjQGgpmI'K6o(;VLq"agbrm:Z`m]!"RYEY0ScE`On
+NIuV.KUSpL[CWTF[&^A(Y@NKIMi<XVO-#NfPa.Q$R$sM7SXuLJU8+N]Vl6VqXKAY0Z*L^D[^WfX
+]=bhl^qmn+`Q$!?b0/#ScHstee'uq"f@em4gtgiEi8N\Uj5oFckNM0qlg4!*mdKW6nF?)?oCV\S
+o`Fj]p\jmeq>^<hqu-HkrUg)?s+13Rs*t~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerq6<`s7?6\#P%<Qn*f]4mJcH1lg!a!kih3lk2k[aj5T%U
+i8<DIh;$c=g=b-1f@JL%e'cXkcd'h\bfe/NaN)<>`5BI.^V>BsJcC9!J,Og<F_P3"A7]q*Dej$&
+D1mIiI=$3^FE;D>Ci%FUH#%;?k^*;WrdF]ls*alord4Tkqg8<iqKr$ap3@-T=^YTF;,L,9G]n:R
+FE@G"!c)I`rFGq<#&@sgChmd#rbDROCQ8=R!K;p8M$SomLPCD5D/samJ,OorJ,+WjJ,=`rJ,Fco
+IfOrnJ,aurJ,=crJ,b$"It%6B"FbcJIXV-Cs*a`ms*k#trI+WnrI+Wls*O]lrd4Wj%XWSOI=-Eh
+H[:!bI!g9fq0N$es*FWj"+5HAHi8?bHiAEiIK+]kIJnWjJ+e?jJ,Xs%JqJ]-JqNlPqh=m$s+^T1
+rJ1'%reUZ3M>`81L\lr,M?&M1MZ/P4MYi>/N!t/TE,TH'AS,V+AjT,hC]/)KD>.r8Dte/KD>nAK
+C]A/KB`MiDP4t11Pl?mFPVSMjR$sM9T:r!TV5C2jX/rM/ZF%$J\%'#]]Y;.s_SjF5aNDcRdFHn)
+i9'CqoChtVr;?Nkr;ZWoqY^3mr;HWorVn/BrVQKgq"FCRf"6s#LQR%6Nh)/VH?aFIDfgJcMi3UR
+Ll$e=pOm(6MMmFQO,oBcP*D5tQ^F52S=Q7ETq\<XVPgAmWiW>*Yd(L?[C3QT\\#Mf^VI\&`5Ta;
+aND]McHaeadaQ^rf@S^0gYCWAhr*JQj5]7`k3(smlKdg'mI'H3nF5u=o(2MGrq-?dp\4X]s7u]k
+r;6HjrVcBfJcC<$YQ'+~>
+JcC<$PlL=RrVc]mqYU<hrqZNfs7cQerq6<`s7?6\#P%<Qn*f]4mJcH0lg!a!kih3lk2k[aj5T%U
+i8<DIh;$c=g=b-1f@JL%e'cXkcd'h\bfe/NaN)<>`5BI.^VBJ@qGJ@e.Od&&/NG^G1GCUA6:*q$
+5<V+j4$#;Y217n^:J^[^r_`Pjs&7oTr_rYmoi(cf(/n*`.ki\42`*BW5!;%j4?PV`2`EWPrA=O.
+"u\G#3B/uZr&=[OrCd>e8kDTFr^d;V4\ejP;,[?kohtQ`r)EJl!*&_l!)iVkrDE\q<)iNhoMk`e
+s&9&"<)iiq!*&_ls&95%<)Zdr<)QZl;ufkq;@$3#<)Z^n;H$Qo;[??&<)cdp;Gg?k<!#ur;uT_r
+;uK\m<VTMo;cNZns&9%u;GmBj"&i)q;u9Po;uTbg;u]hs;?Bft<W5tn<<6-#p/M#krD`\p!*&ho
+r_rr"='>N+s&f>*r)rl"!*T8&s&o;&r)j#%r`B,#%9HJ*:esh[8kVT<4!u]\C]/)KD>.r8Dte/K
+D>nAKC]A/KB`_sP>PMD!=TDS$=oMV)=oVV(<rc:t<W?,4=B\p5>[1TB?t!MTAS#IcB5%3WrbDFJ
+'l7`)E,p&EH[g^,P*_`6W2m&(Z*CP)XragPZa@*GZEg[8WMQ>]S=,aeB3A;<>?"L$<`Msm;>j5r
+;H6dt=&r=";,I!cA;Q2%N/`mZOHPckQ'Rc(R[]h<StMdOUSOcbW2cl!Xfen5ZEpsI\%0&]]Y2(q
+_8=.0`lQ6DbKS8Wd*^:jeCE1&g"P39h;7&IiSrnXjlY^gkiqBum-O--n*fc8nac8Bo^r.U!quB_
+rV6Egs8)ZjrVZWmo_sFAJcDqRJ,~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`s7?6\6h0[8n*f]4mHj3*lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3<_ns7*^V7CNRf&QRR/WHMQ63)fK9hFQCRgcV
+NKK<7XK8=sU8"<OR$O"uN0r7=H%YdQ!0R/A!0d;ErK[>I!LK,MPlR'JQ2[$IPP^OBOT:L=O8b17
+N?<OmJq/E'?<j;"St_dHS!B8&P)P<TKnP)4JrPhOO,j0u"-/A%\c05P]",8Y[^EQN[@3;-KnbnZ
+qj7>Ks-<VKs-<YOqj%AMQBdc%r0R5H!gf:Am$I=2qj.JPQ'Rc'QMm-MQMm*KPQR,4P*>m0qN_&D
+r/q&BrK%#Ar/gr>r/_#AOHGV'OSt7>NrG(?OH9C&!0?r9s,[#<s,d;CrfI2DrfI8FPEPp-rfRDJ
+Pa%GurK[VPPa%H!QM6[APQI,9R/EBPRf8`TRf8fTS,f,ZScGD^TE1[Vr1EeX!MQ7dT`ChcT`Lm_
+rhKRiV"^_bU]I<hrMB:drhodp%$H*gG]n(DEHeI5:f[L2rb_LLqete>r,;CKrb_[Or+l=Is(MP=
+Z*F;6rNlF/s0Vj8osaq1.Cm%%]=l"r_o9^=bK\>ZdaZk$g>1WDj5fCflg4'/nFH2Cp%S4VqYU9<
+ru9%fVPKf]MNkHaR#@/cIsZd7Up.;?]<8<?Wic$!=c&&qN/is\OckonQ'[l+S"#t?T:qsRUnsue
+WN*#$Y-5(8Za@0M\@K5a]t_=u_Sa@4a2lBGbg"GZdF$Fme^i@)g=k?<h;@/KioB([k2tjjl07L"
+m-X6?mfr:Oo()DDo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s0)HQ~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`s7?6\61OI6n*f]4mHj3*lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3<_ns7*^V7DXJc:3!J,Xm>Htm).AS+qbE,B?+
+CfQ%;I=-9aGB@kFDJX!/VIaRbI->nWI/SKmI/SKmHiSNjI/A9iI/83cHMDb,?!:WC?sui,I!KjY
+G'.hFE,BH,BkCmd@Urq`C2.P`CB&&OChmgErf.GIMi!=JLkgb?G'IhEFnU=aJ,k0"J-pdVJ:W9%
+JUi<%JGOcmJ,k)uIe/$hIf4cmJGt&uJ,t.Kr-\QordF]ns*sfm!IoRsIJ\KnIJnQlHiJKmHN8Hl
+H3ASCI=-D>H3/J@Hhi!dHiJEhHN8BkHN8HdHi8?lIK+`rIK"WkIJnWjJ+\9hIfb.OK)C9$K`6W(
+K_gB'L55b_s+gW1rJ(E0L\QZ*M=uc'M=lc*MuAP3Mtr>3N=:8SE,KK)AS,V-BLGAiD#S;JDYnA<
+E;XYMDZ4MQD#A)KCB&#IP5(78PQ7!FPlHsGPV\SjR$sM9T:hpSV5C/iX/rM/ZF%!H\%&u[]Y;+p
+_8=.1`lQ?JcdLCuhW3qio(DbRqu$Hl!;ucls8)Wi"8r,rrr)jCrr)cmqY9gYp%7k$R[/qhLPg>)
+NKnm:HZj=FEIW_$NKB3YLkbSU=c&&qN/is\OckonQ'[l+S"#t?T:qsRUnsueWN*#$Y-5(8Za@0M
+\@K5a]t_=u_Sa@4a2lBGbg"GZdF$Fme^i@)g=k?<h;@/KioB([k2tjjl07L"m-X6?mfr:Oo()DD
+o`"Lbp@n=[q#C0iqY^6hr;HTdrdk*#s0)HQ~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`s7?6\61OI6n*f]4mHj3*lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3<_ns7*^V7DU;u9H.1Fjn1/hSh;2D['D2)die
+5X.Fs4Zb_(3!Luu=\MXg;>*lf;>X8h;r^dT;u0Jd;uBT<0.nq50ebF?5<h:o3]fGb3B0#Y2Dd3H
+1GU[C2`NfW3'$st!]N)6r(I2b8P)JP8I.IL:/Fhb:f1-h;u9Gm;uKVh;uBVn<<-"t<W?%q;ZK_i
+;uBPc;t*`d;uT`"<E)pr;c<?g!*&nq"&r2t;Z'Jq<E)rq;ZB\r;uTYu;cHXn;cWcq!`MuprDWu!
+;c?Xp;cEZpqc3Ais&K(ts&/hqr_`Pjs&8YkoMbch"&i)r<:s8k<qfPn<W6#!<W5qu<E/osr)<Pn
+"'&E)=o;J'=TMW-q-!u*=BJX+=BYT)r)j&&=8c2"<t/8/:f0t_9h7rG5W^AGrbVRNqJQ1KlYuc?
+q/61Ks(qUKs(_RJq-*Yu!*K,$r`]>)s&]>(=B>8us&Tb6>$G39>[C`E@:EbYAS,Oerb2:FrG)@J
+(2Rc'DJsN;H$k4#O-Z9.VQ6f#YHP+3poOLts/n#YYd1UAZEga=XJr(kT:D=9Q'?5h=]ed+<DcRk
+=&Mdj:JFPZ:K:@p=B/=";,C-a;d"s8N/WdXOHG]iQ'I]'R@B\:StD^MUSO`aVl?\sXfek3ZEppH
+\%&u\]Y2(p_8=+/`lH0BbKS5VcdC.heCE.%f\5'7h;-uHi8WeWjQ>Ufkiq?sm-O--rpL'\nac8B
+oCW%T!quB_rV6Egs8)ZjrVZWmo_sFAJcDqRJ,~>
+JcC<$PlL=Rr;HWmqtpBhrqZNfs7cQerq6<`!;$3\s7$*YrpNAFmHs9,lg!d"l0.<mk2k[bj5].X
+i8EMLh;-i>g=b-1f@JL%e'cXkcd'h\bKJ&MaN)<>`59C-^V@IpS"#k7R[KS2R$X0;Q62TTJrkXu
+TpV++PE:m.XehqjU8"3JQBdPne^0t5JW&rZs-*AFrg!GJrg3VMs-<VMrg!JIrfd2As,d;Cq2bN8
+qMckOH@pa!JR2`[StDXGSX>b/Q'%&_LkUP8KS#8FO,o9[N/imYNK:+=]FDH_[^NZQ[^:UJUORuR
+rg*GJrKdJKs-E\O!LB)JQMm0DQj&nFQ^=),qNh8NQ^IZ:!LT5NQiNQOR/WHNQN!3NR/<6LQ2[$I
+PQ-mHPlR'JQ2d*JPPgUCO9(K,r/gr>qiCi@OT(:@OSb(?NfT8#O91Q+O84h8O8Y.?O8Y1>OoLUD
+OT^i2P*(n*P5gdHQ2?mIQ2d0GQ2d*KQ2QpKQ'Rd7RJrZTR/i]SS,SrXSc55YT)bJ\TDG2\U&1Pb
+US@a]!huHcrM0.ar1s:f!MlRfVZ3RlW"+u<I!0RMDKC$.LLl?FD>S5LDu4M=EVseSDu4GOD?"GM
+C]A/KZMh--[/[N6[e7-/\15&#]=Ybl_8F75aihrSd*gFpg"P6<i8`n]kj%L$n*ol<oCV_Kp\=U^
+rltH]e#B.5XHo$S\?V0YNIcJ*NM!;^Zb3NGY,nf#Y?m'CMi<XVO-,ThPa.Q%R$sM7St;UKU84W_
+Vl?\sXf\e2Z*UgF[^`lZ]Y2%o_8=+/`Q-'AbKJ/UcdC.heCE.%f\5'6h;-uHi8N_VjQ5Oekiq?s
+lg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcDtSJ,~>
+JcC<$PlL=Rr;HWmqtpBhrqZNfs7cQerq6<`!;$3\s7$*YrpMu;mHs9,lg!d"l0.<mk2k[bj5].X
+i8EMLh;-i>g=b-1f@JL%e'cXkcd'h\bKJ&MaN)<>`59C-^V@IpqgnZq!.Xrr+*)%'C1:.dE,TN/
+ChnWQI!p9cGB@nFE,KQiS:56oGisGRI/SHnI/A?dI/A9hI/A9dHMVmo?sI,I@:E#/HZs]5FUW>3
+EH#c1BkLsf@q0!IC&i&KC'AEhD/=$?rf.JJMi!:JLkganEdhnIG(0.7s+(-#s+(-#s+'orqLA?l
+"b1uMIt3(GIft:OJ:E%HIfY(LrIFfqs*t*!q0i*gs*srqrdXrsrdFQjrI"Qjs*Xin$[d;JH?spc
+I=-EgH2`*lH[:!bqK`0hHM2[gH@(!dI/J<kHM`'hI/\QnIKFqFI/A?kIe\EdIf+ZsJ:W=MKDpQ'
+KDgK'L&Qi,LB*).L]<2-L]*#/L[g2uM>)o*MuAP4Mtr>0N=LAUDf'9&AnG_1D,G(CD>S5LDu4M=
+EVseSDu4GOD?"GMC]A/EPP:=AQ2?gGPPp_%Q'Rf+S"61EU8+Q^Vl?\tY->1;['dBQ\@K5a]tV:t
+_SjF6aND`Re(EI8kO%g2pA+R^rqlcnqtg0ds82orrr)j'rr)clqY9dXo^r.S#kZN;Nf&UPIt%BW
+&:AhLEGfc@Jr#DFO,JjLKS0#P?AXPtN/`mZOckomQ'Rf)R[]h=StMdOUnsrdWN*#$Xfnt6Za@-K
+\@K2`]tV7t_Sa@3a2lBGbK\>YdF$Fme^i@)g=k<;h;@/KiT&tZjlYail07L!m-O--n*fc9rpg*]
+o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s02NR~>
+JcC<$PlL=Rr;HWmqtpBhrqZNfs7cQerq6<`!;$3\s7$*YrpMu;mHs9,lg!d"l0.<mk2k[bj5].X
+i8EMLh;-i>g=b-1f@JL%e'cXkcd'h\bKJ&MaN)<>`59C-^V@IprDN\qrDWPj*\Alk0.JY92E!<I
+1c%Ea5<h=p4?Pbd2`<Qn9h%oTm8Eg[j&5hSqc*8frDX.X/h\q60JkXP5!1t+3sI])3&``P2#]96
+0fCpL3W:u<3W1oL92/)R92%rM8OuEE/NcO!:f73g!`;inr_r_ms&8hnq,@5krDiksr`/qsrDW\n
+r)3\s;cH]n;?9]op/C<W"BAE#;cEZnoMZ/t;c6On;c?Xp<E)mqr_a/'<)Z^n;,^Fm;GpFnr)E\p
+"B8<!;c<Qns&8nr!*9"tr_rkrqc!`!<)Z^n;Z9Yk;ZB\i<:a#k<)Z[n<;'>k<WZ9#<;T\p<rZ5%
+<`T)trD`hsr_rhrrD`r#='/W(=o__)=Sc5$=oVV(=8Q+t=TMW+rDrr"r`BY,:Jae]91hlH5WpVZ
+2/W5.rGVRPl>c`@rGVRNrb_[Or+l=Ir*&u#s&f5&rEB5(s&]>(=BG?!s&Tb6>$G39>[C`E@:E_X
+AS,Oerb27EqJ$RWCi404GC+jpNKfj'UT(;qriH1%qPsRrs/Z@*Y-5(7rj)R/.BoqRVP9`RR[9;(
+PEM2L<**+%=]A7!;,pIi:ejb[9iG"k<*3+#;,^9b;dP<<Mi<XVO-,ThPa.Q%R$sM7St;UKU84W_
+Vl?\sXf\e2Z*UgF[^`lZ]Y2%o_8=+/`Q-'AbKJ/UcdC.heCE.%f\5'6h;-uHi8N_VjQ5Oekiq?s
+lg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcDtSJ,~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`!;$3\s7$*YrpL'ZmHs9,lg"K61[+#ak2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3;_ns7*^V7CoSGeo]R[KS2R$X0=Q62c[Kp.=K
+T:)+/MN<s8XfJ@qU8+<NR$<hsXK%e5I"UgLrfd>Gr0@;Jr0RGL!13YMrg!JIrfd2As,d;Cq2bN8
+qi)qNG_(Ht?sfe*T:VXHR?s5&OcPHYL4k25K8ttRNK0!XNfB*ZO.ZEa%D'*Y[^W]R[#L'FI><^Y
+QM[!VQ'Rc'QBdc'Q^=#)q3LuGq3V/KrL!VOrg<SLr0[JMs-WhQrL!VQqj7AMrK[YSQC!o'R$dl>
+s-NhQQ2HmHPQ-mHQ2d*JQ2[$JPPp[DOT1IIOH5KcOH9:#s,lr7rfI/Bs,[;CNfX*urK$r>!0@,@
+rfR2Cs,dAGPEYp-s-!GIrg!5Dq3CuE!1!JH!g]1?rL*YR!1EhTrL<hW!1j([p7M;Vs.T@br1a@g
+TqS4[U]7%hUSR^^p7q\bqPO:jqPXjgIX?<]EGfrCX,q@WTDia-DuFYIEVFMGEW0qVDu4GPD>nAN
+CB1[=Zi%31[/dZ2[fEr;\,Nle\[oDb]t_D$`Q-*Dc-F\aeCN=+gYUlKjQ>[jlg4'.nac8Bo^qhM
+q"js5ru:p]Ybn1gUl1JD\<`);Mgp//R]3a(]Y:PP[&iu)?&=JuNK0']P*2&pQC!u,S"-%@T:r!S
+Uo(&gWiE/&Y->1:ZaI6N\[oDc^;%J#_SjF5aN;TJbg+P]dF-Oof%8R-g=tE=hVd>NioB+]k3(sm
+l0@U$m-X60n*olHncA@Srq6<bs7cNfs7uZjr;6KkrVc?eJcC<$YlB4~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`!;$3\s7$*YrpL'ZmHs9,lg"K61?do`k2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3;_ns7*^V7Coqgn]r!.Xrr+*M@,D.R='EcGl-
+Ci*7)J:)ZfH$4:LDJj9AJ9tsJF6@oJI.r'`I/A9hI/A9dHM_sg?!7/8(K""WH?XOTG&hS@DJa3*
+B4GI_@q07iC]8)KC]nNjChnCsNX^u+M2@+HLPKP_J8TFRrdOWlrdb!!!.aco"G2/RIt7NJqLJKn
+s+'urrIFirs+(-!rdarsrdY$!If+TpIXV'ArdXlqs*t#ss*aWj"+>QFI/SBlI/\HmI/\HtH@($f
+I!^-aoQgRcH@#C6!do?Ard"Qlqg8?hrHnKjs*alqqL/<kpODpdqgSZuJqEuS!.t'"rIb6+L5,Y^
+qhY0*s+pZ0nqd1"p5/j/repc5repQ1qMbr5E,]Z0An5OeJob+/HN%g]DuFYIEVFMGEW0qVDu4GP
+D>nANC\j7hPlI$GPlHsHPlI"(QC+)0SY)OJUSOcbWN*&&Yd(OA[C<ZV\[oGd]tV4r_Sa=4aNDfV
+e_8pClgXK;p\F[aqZ-Kkq#L9fqu?QorVZX$rVZTjqYBmZo^r+R*q]-GSW\thLl$J,O-"d8I!9RJ
+Ee&n'NK9-WLPUY<pOlh/Mi<XUO-#NfPa.Q$R$jG6SXuIIU8+N]Vl6VqXKAY0Z*L^D[^WfY]=bkm
+^r!t,`Q$!@b0/#Scd:(feC<($f\,!5gtgiFi8N\UjQ5Oekiq?slg4!*mdKW6nc&([oCW%Ts7ZKe
+rqQNhrqcQirqu`noDX=@JcDtSJ,~>
+JcC<$PlL=Rr;HWmqYU<hrqZNfs7cQerq6<`!;$3\s7$*YrpL'ZmHs9,lg"K61?do`k2k[aj5T%U
+i8<DIh;$c=g=b-1f%&:"e'cXjcd'eZbKJ#KaMu3;_ns7*^V7Cor_reqr_r\l+"o)l0J+k:2)R0D
+2)I3X5X@Os5!:th2`N`Z5t4UG;!h0W;s.$Y;>sJl;u9Pf;uT`%/hA\20K1gR5Q3hG3t4523&rrW
+2Dd0G1bgmHrAag;rAYWc9h\5R9M.oJ8OuE-4@i:G<)HLh:f1+gr_rhps&0,";c?Xo;H!9grD`_q
+"&r2u<W,nq;uT\m;uKYq;uT\e;tX)i;u'Am;uTbr;uKVo;ZKeq;[cQ&;cH[p;c?Xp;GpHm<;of)
+;H$Ln;c6Ii<)can;u0Jl;u]es;uTbr;uT_t<E<)u<W,ns;uKYr<E/rr!E)kp<<#nr;?0Yf<:j)h
+<;ohl<;]br<WlE%<)lrs<r5qu<W,nq<<-"t;ZKeo<rZ8#=oVY*=oMM'=o;J'=oMP'=8Q+u=TDS'
+=8u>#=8Z2";#a8r8kD`F5X-e\7fI<)DuFYIEVFMGEW0qVDu4GPD>nANC]7N7=oMP%=UA87>$5!1
+=BAU*rDaS5<E3+%=BSg3>[1TA?X[AQAS#IdBDuTCC&2QZBkqR'EHQSVKSttZSYE$^X/rG)X/c,s
+s/H$us/Q:(Xfek3rNRrYYH4b$US46JQ^3l"P*D9!CK+G=<``:!:fLLn:/Ob^9i"Pb;cZt$;cQao
+;>4!pM2R=PNfT9bP*D5tQ^F21S=Q7DTq\<XVPgAmWiW>*Yd(L?[C3QT]">Vh^VI_'`5Ta;ai_fN
+cHjkbdaZdtf@\d1gYCWAi8ESRj5f=akNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu6Nl
+rU^#>s+13Ss*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7cQerq6<`!;$3\s7$*YrpKmUmJcH3lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g"=p.f%&:!da?IgcHa\XbK@oIa2Q$9_SX.(^V.:l])J3'S!oe6R@*r>s-=^ZB9%g\
+S!]G"PE2!3Xf/(kU7RsFQBdPCS'dCEJrfVgs,m,?rf[>HqN^`?s-EYLrfmDGqNCl@!0Hu:s,R&;
+,(4`hJq@B9PG+V>Tq7d@QBRGmMi!:FL4t;6O,f9]NfB'[rf-uFrk&<E\[VRHs0W#;OK3e`N;T">
+QO/tCQ'Rc(Q^=),rg3JIr0R,E!1E_OqNq)H!gf:Arg3>G!13YMrg3YN$(%$HQ^=),Q^3p8PQI&5
+Pl?sJPl-dYPa.GqP*;)mOcY]gOcPQbOcfL%s,m>CplGB8rfR2As,[)<s,R;CO-#HarfI)@s,mPJ
+OH>WhPPpXGP`q=1PQ7!DQMHgEPlI$KPQI,9Qi*6ORf&ZSS,f&XS,f,YT(\fVT`:_`UA^keU]mNf
+TqS3Urh9FgV"pk[V"pkfVu*FlV[\i=HZsUPDK^3$N/2\ErbqdTq/Q7OoQ0kLq/QCQrbq^Ps)%dP
+s(hY@r3ZL3!4Md6!k>_LrjVm:/%N7']=ktq_o9X;b0A5YdaZk#g"YBAioK4bl0I^'n*ol;o(2JF
+p%J1XrlP0Y_l9H&X-SpQYc*_FOFhn2Oe].nZb3]LY-"buY?ZsDN/`mZOckonQ'[l+R[]k>T:hmQ
+UnsueWN*#$Y->.9Za@0M\@K5a]t_A!_SjF5aN2NIbg+M\dF-Lne^rF+g=tE=hV[8MioB+]k2tml
+l0@U$m-X60n*olHnd+jZo_%nNp@n=\q#C0hqY^6ir;HTcrdk*#s02NR~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7cQerq6<`!;$3\s7$*YrpKmUmJcH3lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g"=p.f%&:!da?IgcHa\XbK@oIa2Q$9_SX.(^V.:l]).'YJH(,tINNH:;/'W@F)c&3
+DJO0CJ:;olH$4=NEH#enGb07tF*dP,s*F?bqL&$cpO)gard=Tiq0N!b(LL?T@:E)1EHubNF`qkG
+Df9H-C1h0jAc?3;C]A2RD/3s'Fo@=#N;\V5L^$RoJo5[VJ,OimJ,XuhJcC<%Jc1*!J,"NtIt3#u
+J:RKGrIFlss+()us+(&trdb#u!.OlppO<-lr-eWqrI+`prdFisqL/KoI!kp?s*Xins*Xcl#(1iH
+H[9s_om6Xbs*FKf!IT7nH3/G@I/SElHM`'fI/eWpIf"QlIeS?eIf=isJH(*#J:W=NKE$Q$KDgH'
+L&Qi*L]3,0LB*/.LB*/0LB<9gM>N,-M$/WkM2I/^M?o-!N/NUOMMmDdN;JV6N"(5UEG]K)A7fJ*
+E+NI%rbqdTq/Q7OoQ0kLq/QCQrbq^Ps)%dPs(hUtp6>QAr075FrfmGJ)jZkZS"61ETVA6ZVl6Vs
+Y-5+:['d?P\[oAb]`,SV^VI\'`5g!Cd+$_)j65t%oCr7[rqcThs8)Qg!W;onrr;m$qtg*^p@\(M
+rpq<*p%A(ThO'=]LQ6n5NJrX?H$XOLEI3@sOGf0YLkpb;L%g7*MN!LRO,oEdPEhE"R$jD4SXuIH
+TqeE[Vl-MoX0&P/Yd1UB[^WcW]=bhl^qmn+`Q$!?b0/#ScHstee'uq"f@em4gtgiEi8N\UjQ5Od
+kiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssfq>U6gqu6NlrU^#>s+13Ss*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7cQerq6<`!;$3\s7$*YrpKmUmJcH4lg!a!ki_-kk2k[aj5T%U
+i8<DIh;$c=g"=p.f%&:!da?IgcHa\XbK@oIa2Q$9_SX.(^V.:l\l8N+s&8em&h>C\/M/V82)?pC
+2)IZe5X%@rr]:BH2`<6Q;,9taohtfeq,7&fl;IRXrDNVnqc*;gs&9pi/MJq62DdN[4Ztti4ZYS_
+2`N]P2)@'F0etZd3!_H'3B0#Y3(H^A9G0uj84c?D/3QX';H-Lj;Gg7f;Z9Vn;?p-";c?Xp;c<Ei
+r)EYq!*&qrqG[GnrDNMkrD`eq!)iJgp/D)n;cEZps&8qsr_rhrs&8ko!E2tr;uTYr;cH`q;ZTir
+r_`bq<;TT!<)Z[m;,U@mr_r\nrDEVop/M&l!`W0"rD`eqpf%8m;YsDq;c6LloMkK^s&AqqqGdAm
+r`9%ur`/nts&]2#!*/qrrDihr!*/qtr`9)%r`K8*=oMM'=o;G'=oMP&=8Q+u=TDS'=8u;$=8Q,"
+<t8>/:f0t_91_iH5s?h[7K.6)E;=MMEqFGLEqs_SE;jeRDZ=SRD#\;J=oMP#=U/,5=]ed-='#<#
+s&T/"s&Tb6=^#$6>[C`D@:<YWAS,Rfrb27ErbDCG(MIQ!D/XK?I"I39QCFPDWMunuX/`+rVu3Ln
+W<TB'XKAY.YPtd+Y:coUVPBiVS!]M+PED#nQ^OG?IT0BM<`i9t<E)jn:Jah]9hnYf<`E1%<E)mm
+;YO*pMN!LRO,oEdPEhE"R$jD4SXuIHTqeE[Vl-MoX0&P/Yd1UB[^WcW]=bhl^qmn+`Q$!?b0/#S
+cHstee'uq"f@em4gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\ssfq>U6gqu6Nl
+rU^#>s+13Ss*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUp3_!;$3\!qGdLrpKmUmJcGUlg!a!ki_s-3T]>^j5T%U
+i8<DIgtUQ:g"=p.e^W*tda?FfcHXSVbK7iH`l5m6_SO%&^:h1k\X]4\S=>t9R@'B@QQLd;Di]X.
+T:2"(M3*k%X/DqlU8+BPR[9;#Zc\_]IY[TZrfR#>s-*JIr0@;Jop>]Erg!JIrfd2As,d;CplGH8
+s,@eCH%LX!J6cKTTUqgJSXGb-PE:f^LPPk_%#0k)Nf]9]O,f9\NfX1P!kZ%QrO*!>GF5:TLQ7Xb
+r0I;J$'pj@Q'[l*Q^F0>QiEBOQNEJ>QMd*DR/WNNR/<6LQiNQPR/`NIQj&nFR$X,)rKmPM!13SM
+s-EbPQ2HmHPm!D<Pa%L2Pl[,4rK@>HOckk+OT1I=OT(C@OSb(EOcY]gOckigOSt7=NWP9%NrG+=
+OSt=AOoUXDO8tF@Oopo4PEZ!1q3M&Irg*SLs-*MKrfmDI"-f(:Qi*9ORf/`PSH#/ZT)##WT`:_`
+UAUecV#@"fU]$neV"pk[U]@7gV?!OiW;ib-W25W)G^+=LDK^2uLj2p%E,bYnrGqaUnoXbMrGqaS
+rc%mUr,2OOs(qV?s0hg6rODj9s0s8`]">Se^VRh+`lZBIcHjqge_&U1hV[>Rjlksom-X92naZSK
+"SDE^q#&55*<"WtVkp)`Mj1QMP`LudJUE3BY.(gP]rnTIXKV?#@>g)(NfT9bP*D5tR$a>3S=Z=F
+Tq\?YVPgDnX0&M-Yd(OA[^N]V]"G_j^VRe)`Pom=aihoQcHjnce'uq"f@\g2gtgiEi8N\Uj5oFc
+kNM0qlg4!*mdKW6nF?)?oCV\So`Fj]p\jmeq>^<hqu6NkrUg)?s+13Ss*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUp3_!;$3\!qGdLrpKmUmJcGUlg!a!ki_s-0BM9Tj5T%U
+i8<DIgtUQ:g"=p.e^W*tda?FfcHXSVbK7iH`l5m6_SO%&^:h1k\b^jYJ:E(JINN-6=D;5TG&_D6
+Ao):9IXQ]kG^4FSF)c)7KpR1%E-:i#rd+6aqL&3hs*joppjDpbrd=Tiq0N'd!FB"0@1Qa@:jI;/
+F`qkHE,]]2CM<]Ys'l7DChmg&CMiuc!G[VnNWG)rre^Z2"^#r!DKL4$If"WoJGauuJGt-"Jc^LT
+Jc:6$JbairJHULSJ:W7MJ,b&rJ,XuuJ,OotJ,OotJ,FisIfb(IIJ&$hJ+S3hJ,4WnHj"eDI!^5>
+I/J<pI=-BfH$T=6s*OZis*F`lpNm*lH[C'cI!ba:r-S<grd=cqrI+]pp4**mrdXfos*t#u"+PiP
+K)L?$K)L?#K`?c(L&d#.M#W81L]iKhLPL]aL]<5.M#E20M?&S+M?&S5N;nh/N;8J4N"CnmEGoZ/
+BOtgiIr8O]8T8YFEW'qSF7OGMF8^.UEW0qWDu=MQD?"GGPl6mHPl6gFPT5sSR$jG7StMdOUnsuf
+WiWA,Z*UgF[^WfY]"G]T]bJ2q^qdk,a2uWTf%f3HmI9`?q"X[aq?Hcjq>'m`qu6HjqZ6WnrVliq
+s83-!qYBmZp%7nUoDeG+p%S:ZrPkauNerUKH@Lp3I!L*bEG]cILQ.:TNf8gPL5#>S@>g)(NfT9b
+P*D5tR$a>3S=Z=FTq\?YVPgDnX0&M-Yd(OA[^N]V]"G_j^VRe)`Pom=aihoQcHjnce'uq"f@\g2
+gtgiEi8N\Uj5oFckNM0qlg4!*mdKW6nF?)?oCV\So`Fj]p\jmeq>^<hqu6NkrUg)?s+13Ss*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUp3_!;$3\!qGdLrpKmUmJcGUlg!a!ki_s-0]hBUj5T%U
+i8<DIgtUQ:g"=p.e^W*tda?FfcHXSVbK7iH`l5m6_SO%&^:h1k\PrB)!)ren%l#Lb0.SV62)R-C
+1c.Ka5Q3kG4:+&-2`<on7ScfYohtcdq,75ks&&hqrDNYmr)3PlpJUlcrDNVnqc*;gs"FC+,;Cl/
+1I+,e4?>Pc3BB)Y3&WTN1G^dA2`WiV2E<cW3B&oX:Amio91h`H84b0n8PrAar_`\ns%rbor_rbn
+!`N&ur`&eos&9%u<)`]or`&qtrDW\p!)rkr!`MupqG[>lnl,3\s&8nrs&&kr<;fbq<<#ns;Z'Go
+<)`cos&/nsr)<PlqGRPs;cH^o;uT_r;uBVp;uKSr<)lmtr)EVps&8tuqc!Por)E\r"&r2s;uBSp
+;uTYp;ta2j<W5tn;uTbq;u'Dk<W6##<E)rp<W?,(<`N+!<E/fprD`brs&T,#!*K5'!ErY*=9)M%
+=o__)=T)>#=Sl5$=T2A&<`f*!r`9Y5;,C%`:/"2Q76s'd-SB@WqJlISqK)4LqfD^VqJlLRs)7gQ
+s)%dPr`T8'pK7T#='&H$<<-)!<W?,5=BSg3>?kK@?XR;PAS#IdB4tuVC&VlIC&M]ZC27[+G'eao
+Ng,s'USk&iWiE"rVYd:kW'%&ZX/i>)YHY77Y-+h)VPBiVS=,\-PECukQC+/8VQ4K7=]ng,<`;sr
+<_lOf:JOSZ:fULp=BAL&<)HNd;IPKBNK0']P*2&pQC+&.S"-(ATV8*UUo(&hWiN8(YHY:<['mEQ
+\[oGe^;%M$_o9U8aN;WLc-FY_dF6Uqf@S[/g>(N@hr*JQj5]7`k3(smlKdg'mI'H3nF5u=o(2MG
+rq-?dp\4X]s7u]kr;6Kkr;H9eJcC<$YlB4~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP9C_N@n*f]4mHj3*lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:g"4j,e^W'rdF$=dcHXPUb/q`F`l5m5_SO"%]tCtg\[\3$S=H(;RJiKqQ[3UaMhuJC
+R?<AfO_(YrVPU&^T:VF9PE1!RR<<h.OS4k7Ont7>Pl?sHQM[!KR/N?QR$X-<Q2[$HPP^OCOT:L<
+O8k4`JU;otJU_!4V4s]USXl4:P`q5jMM[(AJqSf>OH>N`NK=(!s,[,k!P5c=[Ka-GVk\ToO8b=C
+Q2HsJQiEBNPQ7!HR/WHOQM6aAR/E?QR$mo?".,CAQi<BORIZaFRJrTRQNNVCR$dl>r0[JMs-<nT
+Pa.JtQ'I[7PlR-IQ26[JOckigOHTO(rK-o=rf@8DOH5HarfR,A!KiKANrb9%rf7#>rfI#>!0[;B
+rfR5DrKI5F!1!5Crg!JIs-!GIrK[DK!1<bRs-ihSqjd\W"eM?XT:_eTTDbG_U&:Y^UB76dU]$qa
+U\L\`V#R4gU]@7jVZ!FgVuWaoW"5YcIX$'ZE,U,ISqMAg=BYWCrGqjXj)k6@rc7mUs)A!Vr,)LO
+rj;^6r3uR5s0r!;/%W@)]YD;#`5]m@bKeG^e(*+)gYLcHjQ>[jlKmp,nF?&>o'u8Ap%J.Vrl+mV
+_5X9*b*eI)WLK!-P(S=:P,5Lr[_0,RY-+h-pT@q^N/WdXOHG]iQ'I]'R@B\:StD^NUSOcbW2cl!
+Xfen5Za7'J\%0)^]Y;.r_Sa=2a2lBGbK\>Yd*^=le^i@)g=k<;h;@/KioB([k2tjjl07L!m-O--
+n*fc9o()DDo`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s0;TS~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP7.Kd9n*f]4mHj3*lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:g"4j,e^W'rdF$=dcHXPUb/q`F`l5m5_SO"%]tCtg\[_Nf!.b#t+F[a%;eK]HF)c#.
+Ci37)JUMokH$4=NEGfW#FEqS<F+!\.qg.s_qL&6irdOfopjDpbrd=Tiq0EBV>[UrJ?qsOGH$TC3
+$$1*)Df'9(B4YZR@f^F_rG)URCM[d&CQ8=R!K;p8M$\un8pu5-FaAIaqL8BmrIFfsrIFp!!J5n"
+JcLAuJGXltJGt&tJ-1:OIt.EIs*s`m!.XosrdXor!IoRtIfY"Jn:(=cqgSQnr-SKkr-\Kjrd=`m
+!."Hfrd+Wkp3QderHnNkrHnKhq0W$erd=cqrdFcpnpgOcrdXlss+(0%p4N<ss+UB*s+gc6Lkgcb
+M#W81L]E50L]`KiLl)+e!/^]2reg`6oSNX,mu7(%rJV;IMKs2\DJNlsChS33@7<g_rc.mWrH%"@
+rH%sYqf2XTs)7gQ!,_Lqrg!GHr0./F*0lhWR@Bb=TV8*TV5L8lXKJb3Za@-J\%0)]]=e-V!5AHI
+&Ac9'a32iZg>D#Wn+$&Dp\=a`s7lQgrVHKi!rW#qrr2rrs83,uq=s^Xp%7nTo*+dZpA"L_rr3qm
+R?!5`V1F)ZM19ntHZa:HH\IE@NKB0YLPLTWKOKasN/is\OckonQ'[l+S"#t?T:r!SUo(&gWiE/&
+Y->1;ZaI6N\[oDc^;%J#_o0O7aN;WKc-FY^dF6Uqf%8R.g=tH>hr*GPj5]4_k3(sml0@U$m-X60
+n*ol<o(2JFrq6<b!;HHes7u]kqtpBjrVc?eJcC<$Z2]=~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP7.Kd9n*f]4mHj3*lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:g"4j,e^W'rdF$=dcHXPUb/q`F`l5m5_SO"%]tCtg\[_N9!)ren*\f8r/hSk:2D[$D
+1c7Tb5sIOr4$,J`2`E?Q786WVohtZao2>NarDNVlpJUibr_i_oqc*Ai(GIHp0JP7=2*aAh4Zkef
+3]T/[2E*NO1]B-<3&`fV2`NfW3&`fW:]3ue9)_?l8L?Yn;,U=h:f1(f;Gg=irDWYm"B8B$<)i`n
+q,I>n!*&hos&B"sr_s,$;H$On<)Z`m<:j,`<;onr;ufkq;Z'Gn<;oer;Z'Go<)`cos&/nqr)<Mk
+r)<Pn"BAB"<)`cqs&8qs##eDs;GpFmr`&tu<W5tr<<6'!rD`esq,@Ap<;oho<<#kr;t3i`;u]bq
+;ZKer;u'Di<W,ns<W5tt<rl?%rD`Yo!EN5!<<#tu<WcE(<`f9's&oD*r`K)%!*T8&!*B/%pfRT!
+rE&esrDsP4=]/'n:JFJR6Ua7'1ak"6rc.mWrH%"@rH%sYqf2XTs)7gQ")V1C=SQ&!=9_i-<`N.!
+<;ff/='/R->$G39?!^lG@:Nk[AnV*Vr+Z.Fs(MIHraumYC27d1H%(I*P*hc5V5C/hWMl`nVZ3Lm
+VD5!IWMunuXfek2Y-"e*W268^St)48P`q5kPEhN(TVSTk[((<^='/O9<)Har:JXhbrD!]#<*!"#
+<`N*r:f-ma@>^#&NfT9aP*;/rQ^F21S"6.CTq\<XVPgAmWiW>*Yd(O@[C3QT]">Vh^VI_(`5Td<
+aihlPcHjkbe'uq!f@\g2gYL]Ci8EVTj5f@bkNM0plKdg'mI'H3nF?)?oCMVRp&F^cp\jmeq>^<g
+qu6NlrU^#>s+13Ts*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]4mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2FgtUQ9f[na+eC;sqdEp4bcHOJTaiMQC`Poa3_8*h"]tCtf\[VR/-_-ZqR[KS2R"'6uOFh5>
+R$<SlP*2uNVPg8eURn$EP`q1!ihUjONV8P2Oo1CBPPp^GQ2?mHQhZpKQ^7W9rKR;F!KrZEOo^],
+pl?bPI<gBpJ7)WXTqS'LSXGk1P`q2fMM[(@KnPPKOH,?\O,f6]O-'=Q!P5i>[KL-AVg='pOo^c3
+rg*ML"dYF<Pa.U7R/NBOQM$UBQj&nFR@0M4rL!\RRJiKQQi<BNRJ3'KQi<BPRJWBORK&WSQi*3O
+R@*u?s-ESJqj.,E!0mDFs,mGGOHBF's-!DEs,[GIP*(ojOcfR'"HSY-P*,^+s-!JHOS4b7OSb.@
+P*,^)rfI2DrK@>JQ'@O*QN*6LPlHpIPl-dIQC.W=!1NnVs-s([r1*bW!M5t`T)bP`TDbG_U&:Y`
+U\pnfU\pkcU]7.eV>I(eU]$tgV>[:iVt[.hW=Z#(Ndc=tFDl2IG+=)-;cm3%ErL.SFR=5GFT-@\
+Er9qWE;skTD?.*A\,3]7\,Wrg]">Vg^V[n,`lQ<GcHjnee_&U1h;@5Qk3)!om-X92naZ2@naZ5B
+o_/+Y`;^hFp8k3fUn!L<WM,N9P`LHGLRtZY[(O)VYHk:4p9%VXN/`jYOHPckQ'Rf)R[]h=T:hmP
+UnsueWN*#$Y-5(8Za@0M\@K5a]t_A!_SjF5aN2NIbg+M\dF-Oof%8R-g=tE=hVd>NioB+]k3(sm
+l0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$Z2]=~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]4mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2FgtUQ9f[na+eC;sqdEp4bcHOJTaiMQC`Poa3_8*h"]tCtf\[VHerdb#u+(JVZBjk%bE,B9(
+D/FoVI!p<eGB@tKE,KF,Y(CG/HM2^]HMDj^I/eWlIf=ciI/SBmI!bj?qg83d'jk9O@:3G>:OIG4
+G'.qKEGoc4D/3kbAcH6AChmkdC]A5NCBA<fNW+q=N/R[ls+gkVIt;K[I=D0Dr-nQnrdalsrIFp!
+!ePuSqh"]qqLSZss*k'"Jc1*!J,XuuJ+\<lJ,FimJ,b$#It3%<If4cnIK4fpHi\YBrd4`pI/\Kl
+I/eQkH3AS@H[L5<HN8HkHiJKlHi8?lHi89dHi&3hIJeQaJ,XoqJ,=`sJV*TJrIk-'re:K0Ll(ta
+s+gN.reUW4r/(H0!Ju^5MtDo,MZJcpnVm=(s,?o9&<)KmEGo]-BOtmkHYHkT925D+rc@gUm</2G
+rcA'Zr,MaUs)7jRr07/FrKR5Drfe@fR$jG7StMdOUSXidWiWA,Z*UgF[C<ZV]">WS]`>eG^Ce8u
+_o9dCe(<I:l0\!2p%J.TrqZQgs7uWis82im!rMonrr)io')VP#p\4CRoCMPDoCMVIpA"L^r;RbG
+_N9b6MLp2.M1pA&H?sXMF+T4-N/s!WM2?t>p4QY.N/`jYOHPckQ'Rf)R[]h=T:hmPUnsueWN*#$
+Y-5(8Za@0M\@K5a]t_A!_SjF5aN2NIbg+M\dF-Oof%8R-g=tE=hVd>NioB+]k3(sml0@U$m-X60
+n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$Z2]=~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]4mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2FgtUQ9f[na+eC;sqdEp4bcHOJTaiMQC`Poa3_8*h"]tCtf\[VH8r_rhp*\f?"0.Sb:2)I$E
+2)@Td5<h=r4?Ybd2E*@4=@Z1_ohtT_ohtZas&/_kpeprcr_i_oqc*Gks"=U.0JG.<1I+5)4Td`-
+3B@'u$TBq#1GgmC2`E`V2u>Q93_rKL9`I`b8I.jY.R$F%;,gEl;#aDl;YsDm;?]uu<E<+!qc!;i
+r`&qtqbmJorDW\p!)rep!)rbooMYfj<E8lprD`nu<E/ino2>Wgr_i_os&/kqs&&hoqGI;lq,IAm
+!``3!r)3Vn;Z9Vp<;fhs<;KVe;uouurDWVnrDW5cqG[Aks&B"sr)EYo!*&nspJ_8r='&C%r`&hr
+rDrkrs&B&"r`B,#!E`M(=o__)=9)M%>5;:q=TDS%=8H&!=8Z/2=]&!m:.n8S77BI(1F=b7rc8!Z
+pN5eFpiQLVrc7pVs)A!VrGDU;q-!`"**60A<E3!t<E)pt<`iI,>$G39?!^iF@:Nk[AnV*Vr+Z.F
+s(MIHrb)7E%;Kg%GC5%"O-Z3+USOddVZ<UnV>[2FV5C/hW2ZetXfeh/XK/A!UnXNQS!]M,PECri
+Pa@f0UoCQ(\@f[eCg'qB=]80u;H-Bi;#a8u:Jk+l<*31%<Duglp/5+QN/`jYOHPckQ'Rf)R[]h=
+T:hmPUnsueWN*#$Y-5(8Za@0M\@K5a]t_A!_SjF5aN2NIbg+M\dF-Oof%8R-g=tE=hVd>NioB+]
+k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$Z2]=~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]3mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2EgY1B7f[n^)eC;spdEp4bc-4ARaiMNB`PfX1_8!au]Xtbc\@2@,-(LHoR[KS'GB8n%KV4g$
+Oc#6aFfM@<V59rZSX>_-OIWqMFaf);P517=P5^[EPQ7!EQ2m9GR/`NOQ2[!MPE_;qqiUuBOSOqP
+IX?TtJR;`ZU7e*MSXl17Q'7;gMMV7d#_eD%OH,B^P)fO&!0I/l%(j*[[^W]RFJkCNKTZ.p"-f(:
+QMm-UQBd]!Q'Rc(R/WERR$X-4QiEHQRK&ZQRK&`SR/r\CqO%;Ns-itUq3_2Ks-WeRqO%;Nqj@AN
+!1<bPs-<YMq3LrDqiq,Es-!DE"-A\/Oo(:GOcklkPEM(-O9:Q*Oc]F&rf[AGOSb+<O8t@@OSY(>
+P5UL@OU.,6PE_>uQBda.QN!0LPl?mGQ2d*KQ2m<OR0/nIS"0GJr1*bWs.KCaqk3q^s.]Lf!2BIf
+rhTOgqkF+c!2TLgqkX+as.o[kr20Fjpo+(h&uq[`I=$'VDf9rGRt5la;l4VWq/lOWm<8DMq/lXX
+rc7pVs)A!Vs).eEqmcX7s0sSi]=bkn_Sa=4aND]NcdC4lf@ep7hr<_YkNV9umI0Q7nac8@nac;D
+p%\F"ru8YNV5(PbQa`iXOc,E[Jq9,]ZFRNX['-[>XKV?#s,:9EO-#KePEhE"R$jG6SXuIIU8+N]
+Vl6VrXKA\1Z*UgF[^`lZ]Y2%o_8=+/`Q-'AbKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlY^gl07L!
+m-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcE%UJ,~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]3mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2EgY1B7f[n^)eC;spdEp4bc-4ARaiMNB`PfX1_8!au]Xtbc\@26brdZ)-?X%>V@s<!3ChIU%
+?%79OH@'p[F`MG>D0Ch_BlA1eHhi!aHhMgeIJSElIJ8*hHiAEmHiAEiHi/0j?X<Y>s%jS\H?aUU
+G'%_BDf'9)BP(geA7TOmChmg'D>n;PCho%0NXh&-M2@+HLg#:XDKL5SIf4ZsIXQZor."]rqLSWr
+r.+j"r.4`qqLSZs"+PiOJbafrJ,XruJbaiqJ,OooJ,=`rJ+A'dJ,FcmI0=qEI!gAAHiSNlI/SEk
+HN&9kI/J?jI/\KlI/A6jI/SEkHMMpcI/JEkIdqpdIf=iqJH(,uJHCFUKDpQ%K)pXZre1<*re:E.
+pk\s*qhY9/s,-c3s+g`5MMhCkpPSg*nr3.!&rqfmDf0B*AnPjmHYQhS7X]?!q/lOWm<8DMq/lXX
+rc7pVs)A!Vs).k$rK[>Gr0./F#*kLAR@Bb>rh0t"V5C2jXKA\2ZF%!H\%&u\]=e-V!5AHI&\u6"
+`5p-Lf%f6IlgF<8p%J.Vq#'sdqZ$Emr;QZor!*&pq"OOUo`"F]oDeFdp%J1Wr;QTn*:runNJraZ
+I=IH9I=$6dGB.YLL5_4UO,]'SLP>DSs,:9EO-#KePEhE"R$jG6SXuIIU8+N]Vl6VrXKA\1Z*UgF
+[^`lZ]Y2%o_8=+/`Q-'AbKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8B
+o^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcE%UJ,~>
+JcC<$PlL=Rr;HWmqtpBhs7uTfs7ZNerUg6aoCMtP$h<`Un*f]3mHj3*lMg$*ki_*jjlGI^io/hR
+hqm2EgY1B7f[n^)eC;spdEp4bc-4ARaiMNB`PfX1_8!au]Xtbc\@2<7r)4Xl0J5(3/NP^F1G:O@
+3'ohn5!M1m3]f;[2`X;q9htXb"&i)q;u9Jg;>*oY;>3uc;>sJm;u9Pl;\(N60JP:?1I+2f5!1nh
+4$!:"%6$.%1c.'F3&`iW2`Ebr3!20%:JUm_%80;c84cB'5Yk9S;c-Ej;#aDm;YsDm;?g'!<E<."
+<;]\j<<#qu<:s2h;ufkp;ufkr<!#ut<:s/i<;fho<;TYq<;KMa;uTYp;uKVo;Zouq;,U9h;?0Ym
+;ufqt;ZTltr_ins;c6Kj;ZKef<W5qt<VfYt<E)pr;uBVn;t3i`;uT\l;uK\q;ZKeq<W?%t;uBSq
+<EK0#!``3!rDies!*0"tr`/kt!a&T.r`]>(s&o8'!*T/#pfRT!r)`Jls&fq8;,C(`9M8)K76ipb
+-S.`.F89qUFmXAMFnp.ZF8g4XEW:"XDuX_P=U8,2=&r=$<)cfp<!-0'=BYW-$=$kC?=72OA7]@b
+rb24DrbDII'PM,lAnYjlD/sfHJVT8LR%0kFV5=0g!MuUiUIM&UVP^8iWN*#$XfSS'Wi)YeT:D@;
+Q'IPqOHPioR@^4QY-PRM_8XT^Vd<G,='/F"=&_mj;,U4d9hn\g<``@'<E2sq;>*ofN*_O*OHG]i
+Q'I]'R@B_;StD^NUSOcbW2co"Xfnt6Za@-K\@K2`]tV7t_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=
+hV[8MioB+]k2tjkl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqY^6hr;HTcrdk*#s0DZT~>
+JcC<$PlL=Rr;HWmqtpBhs7uWgs7cQerUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjlGI^iS`YO
+hVI#CgY1B6f@SU(eC2jnd*L"_bfe2OaN2B?`P]R/^q[Us]Xt_b\$i^CSKs_pS!oamFCpGcCRUZT
+NKK?dXfeV"UnXHOR[',#NKi7@H%_:NP517=OoU^FPl6mEQ4B7KR$jA0R$j>0R@'A.QMZsHPQ6pE
+Oo^],qi;J@H\@!$K3qoZTUqaJTUM13OcPKZM#E&9Ko_7SO,oB`OH5HarOi0B!4`!9#E6<?I"d]G
+P5^UDOp$u5Q'Ra7QN3?MPld8<R/WHKR/*'KR.6U@R/<<IQi`VAR/E?QR$mr@rL*VOr0[hXQ^=)+
+QC+#*r0I8GrfdDJrKI;GrK.>JOcklkPEM+*P7<\;OH5HbP*(okP*2#lrK@5DrfI&=r/gc;!KrTD
+OSt=AOogi4Q1(%=PmrtAPE_>tPa%GuQC+).rgEhVpmh>S!M?%aT)bP_U&Le^UB%+hU\gecT`Chd
+UB%.iU]I<foqVP_qPO7ipo*qd&>=](GBS"GFF/5$J9OslRU?#8rH8$]lZ`8MrcS*[rcA*[rGhjV
+s)7qHqmcU6+Lo"p]YD8!`5]m?bKS5WdF6Xtg"Y??ioK4al0@U%n*p>H!:p-Z"S;9Yq"qi+*VfZ7
+W2-D[PH:FHP)PTeKn"oOYIV$Q]W\QDY,ni$Y#^I>NK0']P*;,qQC+)/S"-(BTV8-VV5L8kWiW>*
+Yd(L?[C3QT]">Vh^VI_(`5Td<ai_fOcHjkbe'uq!f@\g2gYL]Ci8EVTj5f@bkNM0plKmm)mf)YZ
+nF?)?oCMVRp&F^cp\jmeq>^<gqu6NlrU^#>s+13Us*t~>
+JcC<$PlL=Rr;HWmqtpBhs7uWgs7cQerUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjlGI^iS`YO
+hVI#CgY1B6f@SU(eC2jnd*L"_bfe2OaN2B?`P]R/^q[Us]Xt_b\$i^AJc:0+AR&,F@odYiChWfb
+s+(`2I!L![FE2>=DJ=6nB5D[9o6^:Z!IK.lHhMjdIK+crJ,XorIIhjdHiAEiHiA<m?X.(>@K0.:
+H['^WG]n1KE,BE,BP1meA7]9MC]A5QChmneC]BCnNXh#)M2I.HC5Q_DFF/FbIf4ZqIXV3ErdXot
+pjrHqon!'lpjrBo!.jusrdXru!.jrrrdXir!IoXuIfb.OJc1*!J,4ToJ,FclJ,Fa#I=?WnIXQTk
+rdFfo"+>QFIJeHrH[:$dH[P^;rd=Zkrd=Wjs*Xcls*FKfqgA?jr-n'`s+()u!.b&urdY$#K(ss"
+KS>-ZK`?c*L@C#nM>iD3Mt`,*Mt;nqN=^kfE,BE)AnPgkHtceR7X.i0FT$@[G3aAMG5cX]FT-@]
+ErC"XE;skTQ2QsGPQ-mIPol<ZR[]k@TqS6VV5C2jXKJb3ZF%!H\%&u[]Y(qk^:sT]&\u6"_oL!J
+f%T'DlL"*3o_%tXq#0seq#1$fqZ$Enr;HTl#Q+Anq"OLTo`"F\o*4j[pA"L^rqQL6_>97QMN349
+Mh?S.G^=^XE,pPeNJrs[Mi*=FKSB/R<f;orNfT9bPE_>uR$jD4S=Z@GTqeE[Vl6SpXKAY0Z*L^D
+[^WfY]=bkm^r""-`Q-'Ab0/&Tcd:(geCE.%f\5'6h;-uHi8WeWjQ>Ufkiq?sm-O--rpL'\nac8B
+oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcE%UJ,~>
+JcC<$PlL=Rr;HWmqtpBhs7uWgs7cQerUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjlGI^iS`YO
+hVI#CgY1B6f@SU(eC2jnd*L"_bfe2OaN2B?`P]R/^q[Us]Xt_b\$i^C<;]Z-2_HR4/2B+@1GCR@
+1daSp5<_:13t"&-2_R@!92JJ^;H!Km!`W)sqbm5eohtBYpJUlcr_i_oqc*Pn!\Z/[r\5QQ1I42f
+4Zbbg3B9&Z2`<QO1c-sC2E<`V2`NfX3&irp:Amir91h]G8M<A(;,U=k;GpBk;#X>l;Yj;m<)rou
+!EE+s;u'Dm<<-"j;u]hr;uT`$;cH^p;H$Llp/:rjr)Ehu<E)ro<W?"p;ZBYt<)Z^ppeq5l;cEZn
+s&8qqs&8norDE\q<E9#ts&B/#;cQlt;uTYs;c6Onr_iernl>]h!*/kp!*0"ts&8kqr);u^r_reo
+s&8np!)rkrr_rhsr)E\pqc!Ss<W6&!<V]Yr<E/lr!*9)#!*K5'r`]>)qHEo%qH*`$qH3f#rE&Sm
+r)j/';,:"_r_!Mb7mK3d.4dnIrH/!\r-%CMr-&'^qfMgYs)S'Xs)A!VrE0\6='&F&<E)mq<)Zar
+='/U/r`]_7?!^iF@:NhZAnM$Ur+Z.F!bl=]rb)7E7VQ[YFaALjMij<oSt`!UVP^2cUS=KVTq\9V
+UnsrdWMur"XK/A$WMZJbSt)79Q'@GoOHG`lQ^jeJY-POL_8XRCeC\H4rE'k6;--Ul:f1"c9hnJ^
+<E<($<`N-u;bp9b;HA^7NK0']P*;,qQC+)/S"-(BTV8-VV5L8kWiW>*Yd(L?[C3QT]">Vh^VI_(
+`5Td<ai_fOcHjkbe'uq!f@\g2gYL]Ci8EVTj5f@bkNM0plKmm)mf)YZnF?)?oCMVRp&F^cp\jme
+q>^<gqu6NlrU^#>s+13Us*t~>
+JcC<$PQ17Rr;HWmqtpBhs7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVI#CgY1?5f@SU'eC2jnd*L"^bfe/NaN)<>`5BI.^V@Ip]=PP_[^NR@SKaSnRt,g*E,]ZdR@0.k
+OcccIVl6DcTq7gAQ'IKceY7;?MXZf+Oo:FGPE_;sPl6mGQN!6FRK&ZSQi<<MQ2[$EOo^],rJr(L
+H\6j!JR;c]TqJ$MSXZ(6P`q,dLl-qAKnbYLNf]?brJpu@Oo;on]=@gJ"cC?HI"d^^P5ULIP*;)p
+Q'Ra7QN3?NPlR-JQiEHNRJ`HPQN3EFRK&`URJWBOR08nFR$jB=R/WEPR/*0MR/33NR/<<KR/`NQ
+Q3!8:rfmSOQ'@O4Pl[,7rfdnVP*(ojOHG]iPEM,nPa)02rfRJJOH>WgPEZ!/r0%,DrK-r<rK-f:
+qN1]=!g8b3rg!AHs-3YOQ^@Z:rfmPLPEZ!2!1*VLs-<YQrgNhUrL<nZSGeu[StMbUTDG;^U]7(e
+UB@<eU8.^]rhBFds.]Fd!i2ZgoqMP`V>7"`W:Qu"T7_K9G&_PEG^#a.P#PMP=8m@@G4TqUGk6.Y
+G5cX^FT-@]ErC"XE;[6E[ii2l]=ktr_o9[<bKS8Xd*gCnf@o$9hr3YYkNM3smI0Q@nHJOVp%\C_
+]`/q\Vl$8dNgI#FQ]I5nNeW+KUp7GB]Wn]E[B-S*Y5aG_NfT9aP*;/sQ^F21S=Q7ETq\?YVPgDn
+X0&M-Yd1UB[^WcW]=bhl^qmn+`Q$!?b0/#ScHsteeC<($f\,!5gtgiFi8N\UjQ5Oekiq?slg4!*
+mdKW6nc&([oCW%Ts7QHerV6EgrqcQirqu`noDX=@JcE%UJ,~>
+JcC<$PQ17Rr;HWmqtpBhs7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVI#CgY1?5f@SU'eC2jnd*L"^bfe/NaN)<>`5BI.^V@Ip]=PP_[^NR@Jc:0AB4P@S>$,uhEGK-'
+D1[=eIX-3_FEMVDDf)JHIqs%Kn9anU"+,ECIJA3hIJnZpIf=cpHiSTiI/\KlI/A78H<sld?smD=
+;13\6G'A(NEc>u5ChmZqAS#@]CMIX&DJa0*rbDONNW+q=NJd[k#&068DKC/Pq0i3jrdXotl[f"b
+nq$XfrI=iuqLJQppj`?ordaots*t*!r-nWprdOir$%@ARJ:E&tIXckHIKY.LIXQV=IK"WoIJ/$d
+I/\KkI/J?kI/J<kHMDjcI/SKkIe\EmIeeKmJH(*!JGt&sJ-:FTK7\^RKDpN(L&Qc*L&Qf,L[g3#
+M>r>2M#N8/M?&S/MYN,&N;S\8N:Dl=K6(sKChREnBkMg+BLPI:9)`u3G4TqUGk6.YG5cX^FT-@]
+ErC"XDuc1%Pl6gGPlI!eQ^O;4StVjQUnsrdW2cr%YHbC?[C*KR\[oHQ^&PhH^]2(__8=+1bg=nn
+hrEqdmd]o@p@n@WqtL-cs7lZkrqQTkqu-F"qtg-`p\4CSoCDJNo*4j[p@nF]rq?@+f)M%pMi*::
+J;f/0H?jm_F)QG[N;enAN/NOLL%U-!N*)+$OHG]iQ'Rc(R@B_;StMdOUnjlcWN*#$Xfnt7Za@0M
+\@K5a]t_A!_SjF5aN2NIbg+M\dF-Oof%8R-g=tE=hVd>NioB+]k3(sml0@U$m-X60n*olHncA@S
+rq6<b!;HHes7uZjr;6KkrVc?eJcC<$ZN#F~>
+JcC<$PQ17Rr;HWmqtpBhs7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVI#CgY1?5f@SU'eC2jnd*L"^bfe/NaN)<>`5BI.^V@Ip]=PP_[^NR@<;of<2`NZO1,1aG1c$g@
+1daSq5<_7m4?GS_3&ar:7nufVrDEVor`&nrqGR2fq,.2irDN5aqbdDmr_iVjr_i_oqc"_;0J5%6
+0JG@B5X.Cq4?GYc3B/uW2`3KM1GU^D3]T/Y3W:u?3BB5trCm5`#=h?W01&H2;Z0Po;?0Sn;#X>l
+;YsAu<)lt"<E3!s;ta/o<E)pr;cN`p!)i\ms&Aqq!*&qr"B88r;H!3e!*&_n!*&ep!`W)sr)*Mn
+r)EVn!)i\ms&/bn##\Au;,L.dr_a,'<E)mr<)lpt<)lrt;u]bq;u]hq;u0Jo<;]bo<<#tr<<#tu
+<;]Yp<;]\i<<#nn<!?3"<)Z^nr)<Sm!)rkr"&i/u<W#hr;u9Pn<VTVp<W?)$<E<0"<W6#!=T)Cu
+>5qh,>5qb&=9D]0>?^o,!E`Fo=SZ)2<`)Ud9h\2P6q'C'.k*&=2#_XrG4TqUGk6.YG5cX^FT-@]
+ErC"XE$&4b=&r@%<)Z^n;c?Xq='/U/>[1Q??=$uH@:NhZAnM$Ur+Z.F!bl=]rFZmZBl%d3H@CO(
+O->s$TV8-VV50l[TqM@Xs._0AV5C/iWN3,$Wi;qnUS+0JR$Eo"P*(igPEhK)U8P,u\%BGpaj/>d
+g"UG`>lIh0<Dlap;b^'e:^p,o:fLFq='&@$<E)jmpJP3mN/WdXOHG]iQ'Rc(R@B_;StMdOUnjlc
+WN*#$Xfnt7Za@0M\@K5a]t_A!_SjF5aN2NIbg+M\dF-Oof%8R-g=tE=hVd>NioB+]k3(sml0@U$
+m-X60n*olHncA@Srq6<b!;HHes7uZjr;6KkrVc?eJcC<$ZN#F~>
+JcC<$PQ17Rr;HTlqtpEis7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVHuAg=k64f@JL%eC)ald*Bq]bKJ&LaN)9=_ns:+^V7Co]=GJ][^EL>SKaSnI!0OND.f?+Oc,Bd
+Aur#2UnaZWSsYh.OKGRRG'eq*OmnP4Oo(=APPpaFQ2R$JR/WKRRf&TRRfA`TQi<<MQ2[$EOs,sL
+O,nsCH@ga$@:,h)U7\'KS=,_-PE:]\LPCM;Ko_=Wr/UrAO-#J%]F2?^\$ifTI`?b`KTZ7srK7,C
+s-!MKQ'V<6!1*VLs-E\O!LB)KR0T+IR$j>.R$dQ7rgNhSs-NeTrgEbQrgEbQ!h#FCrg*VPm@"!C
+r0dMN!LK,MQ2d0MPlR'FQ2d'PPEM,nOcfX+s-*JIrKI)@p65N=s,d,=qiL];q2kT<s-!AG!1!JJ
+rfmMMQi*0GPQI/;QN!-MQC.Z?rgWeT!1j(["eVH\T:hnUUAq"gUA^kdU]dEeU7n:[UAghdUAUbl
+Unso`USFW[V#@(eU]@7hVZ3RiW:?i!Wg\E`G]n%FFEih<G_T0sRT]W5q02XZq0Dd\q02g]rcS0]
+s)\3\rGhkIrO;g:+M,5!^r++2aNMiRcd:+heCN7*gtgoIjQ>[ilKdj+nF6>F"nVBZq"k!$ruB[k
+VkpD^Qb/uXP)YciM1UJSYICpP]<JKDY,\VuY$d0HNK0']P*;,qQC+)/S"6.CTqS6WV5L8lWiW>*
+Yd(O@[C3TU]"G\i^VRe)`Pom=aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5OdkNV6rlg4!*mdKW6
+naZ2@oCV\So`Fj]p\sseq>^<hqu-HkrU^#>s+13Vs*t~>
+JcC<$PQ17Rr;HTlqtpEis7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVHuAg=k64f@JL%eC)ald*Bq]bKJ&LaN)9=_ns:+^V7Co]=GJ][^EL>JcC6CARSnL=As9]Ch@O%
+<e5dMH[9s]F`MJ?DM*IdBPqp<HLQ:UHN/?cI/\TnJ,XosIK+cqIJA3hHiAEjHQ6O%>[h,N;G_ad
+H?XOTFE2>=DJX*'AS#C^@r#lZD#\;ND#S2MNW+q=NJmdn#`2rPCN"?BI!k^;s*jrsrIF0arda]n
+"G22VJV!fN!eGlPrI=ftrdY'$J:RWKomlpjrI=s!IX_6FrdOlsrdFs!J:W7MIfb.MIf4crIfFir
+IK4fnI/eTtI!^3dHM`'fHiSTjI/\KkI.VdaI/SKkIe\ElIdhjdJ-(:RKD^?$KE$Z(K`-T*L552Q
+!JcL1M>)o-MuAP/MtDu-NW"h*N=h2'Ec>o2B4bglDgc,*77MJprc\*]q0;^\q0;^Zrc\9`rH/'\
+s)S'Xs-3JGs-3PK)jZhYR[g"DU8+Q^W2Q\qXfek4ZEpsI\%'#]]`,S^^;%Fu^qmk(_oL!Je_/g=
+kj%O'o(;VKp\4X[rV-?erV6NkqtpBjs8*&tq"OOUo^_PMncnaZpA"I\rq$./qPfO7MMm%9PCn=3
+G^Oj\EH?\fNJrs[MM[.Eon6_2N/`jYOHPflQ'Rf*R[]k>T:qsRUnsufWiE/&Y->1;ZaI6O\[oGd
+^;%M$_o9U8aN;WLc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?&>o(2MGrq-?d
+p\4[^rqZTjr;6HjrVc?eJcC<$Zi>O~>
+JcC<$PQ17Rr;HTlqtpEis7uTf!r)E^rUg6aoCMtP!V,[YmfDkDrp2`4lKRQskN:pgjQ#:[iS`YO
+hVHuAg=k64f@JL%eC)ald*Bq]bKJ&LaN)9=_ns:+^V7Co]=GJ][^EL><<#l;3&WQK0eYFB1b^aC
+2F9Yn4[)"m4$,D[3Bf`":Jh$frDNPms&8emrDEAgrDEPlo25Har_reoqbd>jr_r_o&25ah0JG4>
+1I+/f5!:tj3'$st#rab!1c%!E2`a"s3!20%3`#]J!D6#a8H^Y49i4mg;uKSo;>sDl;#jMj;uTc#
+<`N*u;cEKk!)reps&0)#;c?Rk;Z'Jm<;BGp;Gg:hp/:rjmoB9a!E)ko<;fbp;ZB\q<<#ks;Ya5k
+;Z9Pm;?g*!;GpFn<W,nm;uKYq;uTbp<W,nr<Vo_r;cNZpr`&eo!E<"s;YX5j;u0Ji;u]es;uTYp
+;u'Ao;cH`q;u]es<W5tr<Vf`"<E)pt<`T-"!*/tu!*K/%!a8f4r`TM1>[1K:>$:`)"'So5>5MIm
+=SGr1>#S6o:/+AQ9LUs,4"Mg37Pt*fq02XZq0Dd\q02g]rcS0]s)\3\rG_sA<`N-ur_i_o&li"9
+>$G6;?!^lG?t!JRA7]@crb24Ds(_RJs(M@D'52)rEHQPTKSYYNQCFJ=Tq\<WU&:QZT:hmPUSOcb
+Vl?YrX/`.tV4sTPR[9;'P*(ieOHPioS"QX[Z*q9[`Q?ERf@ep7hVY/9>$+m-;c$at:Janc:ese\
+;H6at=&r:#;c?LhpekNtMi<XUO-#NgPa.Q%R@9V9StD^MUSO`aW2cl!Xfen5Za7'J\@K2`]Y;.s
+_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*ol;o()DEo`"Lbp@n=\
+q#:*hqY^6hr;HTcrdk*#s0M`U~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[YmfDkDrp2c5lKRQskN:pgjQ#:[iS`YO
+h;-l@g=k63f@JL%e'cXjcd'h[bKJ#Ka2Z*:_ns7)^V7@n]",>[[^<BHqjegXFa%kECRplVMMdL[
+XfAD!US=?PR@'8&A=M(gH%M.WOmeJ5Ont7@PPp^GQ2R$KQi3<NRf8`RRK]+HR$X/*rg!MJ!0d8B
+,a"1?I!U<sJRVu`US+6OSt218P*(cbMi!1CKnb_PO-#KcO,s7$rO`0C])B)BD6%u2KTVDrP5ULC
+P5^XHPa.O1QN<D;rg!PNrg!PNrL!YQqjIDMpR1rJ#aq-LR@9S4R[O/BrgEeR!1EhRrg*\SR[W`6
+rgEnVR[O)@s-E_Org!JKp6GT@!0dAEs-*JIq31f@oofB<rfI&=r/^o>qiUZ8rK.2FPE_=/QN*6H
+Q2m3IPQI,:Qi30OQ^O;2rL<hW"J)'QSY#eP"JDBZTV21V!i)KarhKFfrhKIdrh9FeUACVcUo"'d
+rMBLgrM0FirhfXlqPa1g!35mps/H^2Q[O1'F`25@H&ShEH<!t3=^:lKrHS0ap3QR\rHS0_s*"Ba
+rH/'\s)S-Zs0r$<+h>1s^;7_+aND`Ocd:(ge^i@*gYCWCioT=dl0@U%n*oiEnHJLTo_&"V\GmQF
+s/r;uV4s'>V4X$6PEUr^J<H_4\@fJZYctL9or_Y[N/`m[OckonQC!u,S"-%@TV8*UV5C/iWiN8)
+YHY==['mHS\\#Mf^VI_'`5Ta;ai_fOcHjkbdaZguf@\d1gYL]Ci8EVTj5f@bkNM0plKdg(mdBQ4
+nF?)?oCMVRp&F^cp\jmeq>^<gqu6NlrU^#>s+13Vs*t~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[YmfDkDrp2c5lKRQskN:pgjQ#:[iS`YO
+h;-l@g=k63f@JL%e'cXjcd'h[bKJ#Ka2Z*:_ns7)^V7@n]",>[[^<BHqgff$?t!>C<crCuAnZ%!
+Jq&5sH?jXUEcH&:;0\dHCNBB"msFhUs*ONgs*aiprdXor!.XusrdFTirHnNkrd,Pk?<^iJ@8]sN
+H['aYG'%\DE,B?+BkM!fA7PUTs)%aNs(q^N!0-u<%#p4&Mi!9kJSK+GH[Ga>pjN0ks*srsl[f%c
+pOW9pqLSWr!e5`Nrdb'"rIG'$It3(KJbjonJc:0%JUi6!rdXlqrdOuuIt7NLr.+]pqgSEis*aop
+!df6>qg89hrI+TkrHnKjom?[cr-eHkpj`<mn:1Ces+16'r.5!&KSBAXrIt9+!/L<)s,$Q-rJCE/
+s,$c5!/pc4qhtB2s,6`4s,Ho7q2GB7qMkN8&rhK_E,B?'Anl("K3qnQ7s@[&r-/*aqK_d\qK`$a
+qKMs_rcS0]s)\3\s)J(&rfmGJ)jZk[S=Q=IUnsufWN)u"Xfnt6ZEpsI\%'#]]`,SE^Abk\^qmn)
+`5p0Le_/j?kj.X(nalDGq=ag^!;QNg&,Q2#r;?HhqYBp\p\"1Lo)/"^oCVbOq>:-\ruJrHPDtNY
+LO4Q,JphrjI!BaOI>3]AOH>EYMM["=p4Qe2N/`m[OckonQC!u,S"-%@TV8*UV5C/iWiN8)YHY==
+['mHS\\#Mf^VI_'`5Ta;ai_fOcHjkbdaZguf@\d1gYL]Ci8EVTj5f@bkNM0plKdg(mdBQ4nF?)?
+oCMVRp&F^cp\jmeq>^<gqu6NlrU^#>s+13Vs*t~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[YmfDkDrp2c5lKRQskN:pgjQ#:[iS`YO
+h;-l@g=k63f@JL%e'cXjcd'h[bKJ#Ka2Z*:_ns7)^V7@n]",>[[^<BHqc*ST*AoW.0fV$G1,(L@
+6UF(%5!;"i3]T,X/O*6.:ejpf;?'Pn;uK\q;u0Dl;>O2f;#jM`;>sJm;uT\l;>sJm;uTbr0+9Ed
+0ekRC5X7Fp4Zkk+3X[o-2`3NO1GgjG3]['s(-+E9:JFMV9hS,O8P(Hs9i4kg;cH[or)*Mlr_WVl
+qG[;l!*&nqqc!Vq;H*Qor_rhr"&i)p;Z0Pm<;BJl;Z9Vp<;TVo;ufqt<qB<)<)Z^p;c?Xq<)Z^p
+;c?Xp;c6Omr`&SirDNYm##\Au;GpLpr`&kqs&Aqqpf%;p<)rco!*/qr!)rhqs&K"srDN_r;uKSo
+;u'Ap;cHasr)EMkr`&kp!)r\ms&/nsr_rPjr`/nt"'&<"<VKMo=8Z5$>5qh+=p%u6>?_#/r)a#(
+>?gr,nlYTgs&p%<;bp1a9h\5R76*Xo/LN,>1cP>VrHS0ap3QR\rHS0_s*"BarH/'\s)S-Z!E<"r
+;ZBZ1<``F->?kK@?XI2K@Uiq[AS,RgBk[EYs(_RJs(MCEs(E*\D/scEIY<Q=P*VQ,StMdOU7e0O
+rLX%]#GIleUo(&gWW&nbW2HGcT:D@;QBRJnO,oBbPEqZ1VQ6u0]>2D-cI(4qg>1WCi8S@C>$4s0
+;c6Om;GU%`:esk^:fLCo='&@$<E)jlpeq,h?]0l&O-#KePEhH#R$jG6SXuLJU84W_Vl?\sXfek3
+ZEppH\%0&]]Y2(q_SX71`lQ9EbK\>Yd*^:ke^i@)g"P3:h;@/KioB([k2tjjl07L!m-X6/n*fc9
+o()DDo`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s0M`U~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O'(lKRQskN:pgjQ#:[iS`YN
+h;-l@g=b-1f@JI$e'cXjcd'eZbK@rJa2Z*:_SX+'^:h1k\[f2X[C!9GqjedSG&heDB:P9JLl[U-
+Xf/(lV50cUR[02"Z-Ab^J;X8ek`Yk-s-*MKqj%8LR/WNJRK]+HR$X/*rg!MJ!0d>Ds-"7^J9c`u
+JV7E;V4jTTSt)49Q'7>kNJWGiL&cr,NrtK+OH9C&!0R2l!4i';#%FHRI"RQDr0%#@rfdAH!L8uI
+Qi33MQi33QR$j>0R/36LR/!*ARKAnER/WKSR$[];!gf:BrgEkURe3$GRfAfUQirhER$X3>Q2m3K
+QMm*KQMd$IPl6dEP67&5PEc'1!0mGG!g8e4r0%AMPEM,nOcbb'O8b4DOcYWcP5LIAOT1IAO9^o0
+OckomPa204rg!8Er075Hr0@DOR[X2Es.'+[s.'+\rh'+]!29=b!McCgU\U\eU7n:YUAgniUna]\
+rMBFh!i2TdrM0FirMKRlrM]Cgs/H+!Wr8pqWY;=uIsZB^EcZ_TMo^a&<E5Dg??cBnrH[RPrH\Be
+qfi'`s)n6]-?F3JEO`Qk]YD>%`lQBLcd:+he^i@)g>(NAiSrq\kiqC!mdKZ7r:'s]oCV_Oqm?AB
+af2/6VO<j_U6Uk'QB-rYL7PHU[Cs/VYHb72or_GVNK0']P*2&pQC+)/S"6.CTqS6WVPgAmWiW>+
+Yd(OA[C3TU]"G_j^VRe)`Q#s>b0/#RcHstee'uq"f@em4gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6
+nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcE+WJ,~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O'(lKRQskN:pgjQ#:[iS`YN
+h;-l@g=b-1f@JI$e'cXjcd'eZbK@rJa2Z*:_SX+'^:h1k\[f2X[C!9Gqgff!?s[/?;fcklASc0_
+Jpr)lH?j[VF)c,7K:.+%DKbr(msFeTs*ONg!.FfpqLAKnrdFfo!.FcmrHnKj&pmti@:3JP;,DXb
+G]n7PFE2>=rbMdOA7T7^@r)!Y!,MOL!KN0=NW>%:M$?e+Bl8$>HiAEhI/n`qI0+kIJ,FioJH1;m
+JcC9"Jc:9!Jc:8rJc1,tJHp^VJqAW+JUmZL!J#b"JGOisJGt*"JGjusIfFltJGt#uJGk&uJGaoo
+IK4fnHiSToI/\HiHi8<rI=-EjI=-D?I/eQkI/A6jI/\KkI/A?hIeeKmIdqmfJGk$!K)L?%JcgXY
+Kn]JYre:B,!/LQ0!/^Q.!/^T/qhb3-reUZ5Mu8J1Mu/J5Mu/J4NVe\1NW5">NK3ssrJhPMIrTFD
+CM.<sBPs)M?:7;-9Mfs4Gl;pNHMr-gGl)^bG5l^_F<kpJEcI>.Q'I](S"-(DU84ZcWN*##Xfek3
+ZEppF[^WfY]=biV^Akq^^q[\%_o0X@dFR%0jQPpsmd]l>o_J1[p(d>sq=sd]qYL*er;6Bfq=saZ
+p@RtIr:(!_o_%tSqu,s_*;lOlMi<ICJrtY5H[C0eG&q_UM2dIVO,AdNLP>DS=cA?#O-#NfPa.Q%
+R@9V9StD^MUSOcbW2cl!Xfnt6Za@-K\@K2`]tV7t_Sa@4a2lEHbg"G[dF-Lne^rF+g=tE=hV[8M
+ioB+]k2tmll0@U$m-X60n*olHncA@Srq6<bs7cNfs7uZjr;6HjrVc?eJcC<$[/YX~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O'(lKRQskN:pgjQ#:[iS`YN
+h;-l@g=b-1f@JI$e'cXjcd'eZbK@rJa2Z*:_SX+'^:h1k\[f2X[C!9Gqc"%b2)I*D/iPUC0JbLC
+6U1Q5%6cp:3]K&W5>+I?:/Ojd;>sJn;uK\p;tEoN;>sJm;uT\l;>sJl;\rCd/het61Gq$T5!D(k
+4Zk_c3&rrX2)bFi"Z/5"3&s"u3!;9(3_rNM9`I`j8kDT(5Yb-Sr)E\pr)*\q:f("d;Z'Gn<;onr
+<;ohn<!?2u;H$OorDW_q"&_un;Z9Vo<;9Dl;Z0Mo<;TVn<;]bt<EAcmqGdGm"B8;u<)ifprDWhs
+;H!Hl!)iepr_ibnrDEYq<W5ts;uBSp;tj5l<E&`ns&K"ss&/ntpJh,j"]SDt;GpHg<;'>k<<#ns
+<;ohj<!ZE%<)Z^p<)Z`p<;fbq<;fht<W5ts<Wc?&=',?&r)s&'!*fD*"C#,8>$Cl-rE')'>5;=n
+=Su;'>$5&-=oDM;=Ar*o9he8U7R]=.0eOe,75d/MrcnBekBd)Prcn<as*"Ebr,`m!EcQ.s;GpFm
+<`iL.>[C`D?t!JQ@Uiq[AS,TRB`2ZFCB%uJB`;ZEB`Dc[DK9oHIt`c@PF%c0StDXJTV%gHrL?fW
+StD^MUSOcbWN)ttVl$8aT:MF;Q'.8kO,f9`PEhT/V5gc-]"c5*c-b(og>(QBi8N_ViN?Kg='8R&
+;HQak:f1"b:/=V_<)lq"<`E't;c$<d;Z9NrN/`jYOHPckQ'Rf*R[]k>T:qsRUo(&gWiE/&YHY:<
+['d?P\[oGe^;%M$_o9X9aND]Mc-F\`daQ^rf@S^0gYCWAhr*JQj5f=ak32'olKdg'mI'H3nF?MK
+!V>s_p&Facp\ssfq>U6gqu-HkrU^#>s+13Ws*t~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O''lKRQskN:pgjQ#:[i8EML
+h;-l@g=b-1f@AC#da?IhcHa\XbK@oI`l5p7_SO%&^:_+i\[],W[Bm0Dr1+pSFa8.KC7UiXO,o<b
+XfeV"U8"?PR['2'CQk62I"ROZOm%u)PQ-mIQ2[*LQiEHPR/i]TS,8ZSR0/hCQ^7T8rfd>Es-"UY
+I>!0'K3hi[US=?NTpqI<Pa.>gMi!1DL5(hQOH5KbO8b4AOhL_+!P5f?[g-9CGC+t*P*,X)rfIGK
+PEV5qQ'Ra4Qhm$FQN3ELRK&ZRR/i]RRJWEQRJNBPR/iWRR0&bBQhm*GReiETR$jA2RJ`NNRJrQR
+QhZmHQ2d0JQ2d*JP5pdFP5pjHP6-u4PPpaFP5pjFPQ-jNPEM)mOc]L%#`t11Ocb`eOco[*rK.&A
+qiCrDPEV5rrg*SL!g]+:r0@>Jrg!VNPa)-3rKdJMs-WqWS"'DIrga+\SY#hQqk3k]r1j%_qkF(b
+!2TRipne%fr1s@hrMKOkri#gq!3#^mrMogqrMomu&uL_<G][nHG(+\C_hi5/<L6iqrH\*_om?FZ
+rH\Ber-/0as)n9^s)T6n]thP(a3)ZQd*gFof@S^0gt^cEiT0.akiqC!mdL/Erp^3^o(2MIq>@T!
+*;0?5W26DaQ(ak>Q&q;oMMZqIV6RPC]Wn`G[&ir'?]0l&O,oEdPEhH#R$jG6St;UKU84W_Vl?\s
+Xfen4ZEpsI\%0)^]Y;.r_Sa=2a2lBGbK\>YdF$Fme^i@)g=k?<h;@/LioB(\k2tjjl0@U$m-X60
+n*oi:o()DDo`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#s0VfV~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O''lKRQskN:pgjQ#:[i8EML
+h;-l@g=b-1f@AC#da?IhcHa\XbK@oI`l5p7_SO%&^:_+i\[],W[Bm0Dr.,r$@q8nL=*/J"BkqL%
+Jq8>tG^4OUEc?#:<HW\(DKC1'HL6(RHN/?eI/eWoIK4lsJGXirIKP"GI=;'Aqg8?j*+E5a?t!M?
+:OIG5G'8+PEcH&8Chd]tAS#C^D/K5f!,MOLr/M2EMM[1I9nR(rFF8I_rd=Qj!.Ooq!e,WKqgeWr
+rdk0%K)1#uK)C0"JGt,uK)U?!K(sluJ:W7LJHCFSK)UB&K(sosJGauuJH(0#JGk$*J:E*!Isuls
+J:RWKqLJWsrI=Zms*ain!.Fio!I]@lHiABmIJnNsI=-BgI!kp?r-SKkrHn]oI!^5=I/JElIK4ls
+IK=qKqLANor."Wns*suts+1'!!J?()K*6j]L4t<XL&Zl0LPUbCqhP90MZ/J4M#E2*MZ&D+MuAV4
+Mu/J3NVnb2NW"n9NW+qQNK0$VHZ3n>BkV3rBSVjf<^]H%9i1e6p3QCYpNld`rcn?bs*"EbrH/'\
+*gN%XR@Bb?U84ZbWiN5'Xfek3ZEppG[^W`V]"G\hrkAEI'u7T#_Sa@7cI1>!i8s4imI0W:oCV\Q
+oa19`p%J+Rq"X[\rqcWks8!&tq"XRUo^_SCnc&"^o(2PJq>1$UrsQI+OH#0WKm\T-JURNE%X)u7
+I>*W@OcbQZM26h;p4Qe2N/`mZOckonQC!u,S"-(ATV8*UV5C/iWiN8)YctF>[C3QT]">Vh^VI_(
+`5Td<aihlPcHjnce'uq!f@\g2gtgfDi8N\Uj5oFckNM0qlg4!*mdKW6nF?)?oCMVRo`Fj]p\jme
+q>^<gqu6NlrU^#>s+13Ws*t~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymm6C/m-O''lKRQskN:pgjQ#:[i8EML
+h;-l@g=b-1f@AC#da?IhcHa\XbK@oI`l5p7_SO%&^:_+i\[],W[Bm0Dr)E\[*'Z570K1mH1,CaD
+6pX%#5!D+k3]]5Z.6^6s:f.'er)3MmrD`eqo2=dLr_i_or_iYkr)3Pn(,@Kr0JP:>2*aAh5!;%k
+3&ioX3&WWPr\Xg83]]5\rAXp@4$$/5r_*Vk8kMWF-pg[+;>O8l;uBPm;#jMk;ZKer<W#er;u9Mo
+;uKSs;cH^p;uT`";Gg:h;cETnoi(ihr)<Pnq,[5i!EN4u<;ohn<;ohq<!#ut;uT\p;uKSs;c6Lj
+;>jAn;cWfrrDWGis&B/#<E)rs;u9Po<<6'!rDWbspJh/k##nN!;,gImpf.2ls&Stroi1lir_rr!
+<)`cqr_j&$;c6Om<)clr<rQ))<``=%<``@*>5MIt>5qh.>?^o,s&]>*>$Ci,o2tonrEB/&r`U%>
+>$>$+:ej_[92.iD5tWma-7qYF3W46sHM)XZHMr-gGl2dcG5l^`FT6F^;?p0%=B\p7?=3\?s'cXO
+A7fCbAnPdkBkV3oBk_<sBk_8[BE)WRBkhO,GC+jqMia0iRf8oXT/rO5S"#k8S"-%?T:hpQUo(&g
+WMl_kUnXKPR[BD(OH5E]Nf]HiR@^4RYI(mT`5p0Me_&U2hV[8Mir7sUib+3R=BAU':fL=h;,L.e
+:/4MY;cHau<`K&u!E)_h;Z9O#Mi<XVO-,ThQ'Rc(R@B_<StMdOUnsrdWN*#$Y->.9ZaI6N\[oDc
+^;%J#_o0O7aN;WKc-FY_dF6Uqf%8R.g>(N?hr*JQj5]7`k3(smlKdg'mI'H3nF5u=o(2JFrq-?d
+p\4X]s7u]kqtpBjrVc?eJcC<$[/YX~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pgjQ#7Yi8EML
+h;-i>g=b-1f%&:!da?IgcHaYWbK7iG`l5m6_SO"%]tCtg\[])V['R'BYl:19HZaOWF`;8gPE(K\
+OD(bqV5C&^SXu:9P*">LV0INLP5UO4OoUX?P5:CBPlI$JQN*<OQi`\EReiNQRfAcYR$X/*QN!0K
+PQ-diPCnC5JqJ\_@AT`mT:V[ES!]G%OcGBWLPLS<PECuhOcYY'O8tFB^&P_G]".gL"^\Q\H\7IV
+P5LFKP*;)oQ'IZ$Q^7T:qNguE!1<VN!1<bRrL3bSr0mVQqO7AN!go=@qNq8Nq3q)HrL*eUR[X5D
+!1NnTs-NeQoToNBs-*MKrfm;Dqih)Er0.5GPl6dJP`q>qrfR>HOcfX(s,d)>s-!,=r/_2HPE_8p
+Q'IZ$rfdDJr0@>JrKdJJr0@8Is-EeSR@=,Es.'%Y!h>gQrh'4as.B@crM'4bqkO4grhKRiUAL_c
+V"geeVu<LgV>d@jVuEXoW;rmmWVrjqWVidrWt_S0MgT_jEcZDPGc%3h?W'jl=^\6+HMW!\I/A9d
+HN/9iGl;jcFoZ[`F<,G@`lQBLd*gCnf@S^0gt^`DiT'%^kiqBum-jH5qsj^X"8)<`rNH5@^T"-0
+U7%IMU6Uk*QB$lWN1[2Z[Cs8YYHk:2YPPF#XoF>]NfT9bP*D5tR$jD4SXuIITqeE\Vl6VrXKA\1
+Z*UgG[^`lZ]Y2(p_8=.0`lQ6DbKS8Wd*^:keCN7(g"P39h;7)JiT&tZjlYail07L!m-O--n*fc9
+rpg*]o`"O`pAamdq#C0hqY^6hr;HTcrdk*#s0_lW~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pgjQ#7Yi8EML
+h;-i>g=b-1f%&:!da?IgcHaYWbK7iG`l5m6_SO"%]tCtg\[])V['R'BYl91RB)Z<\@p`P^D/*^!
+D,u7;H[:!^F`h_EDJZ2GJo#FPHi89VHh_peHh`!gI0+kIJ,4]pJ,auqIK"WkHQ$@$?"%/O;,M^e
+H$=FTFE2>>Ci!m%B4baeAH$HOCi+!)CMdm'r/M,CMi*@K98."rF*me3qgJHms*XlrrdOs!J,Oos
+Jbt&rJcC>uJbt'!Jc(,iJHCFUK)UE&K(=KlJGk$%J:W9%JGjutJGjunJH16!J,as%IsuirIXZ_E
+I/A?lI/J?fHi\YCrd4Wl"+,ECIJeHmHi8<lHi/9jIJnTpJ,OirJ,aurJ,ausJ,+NnJ,FfsJbt$"
+K7s5V"b_SaL4t<YL&Zl.LPYqds+pW1s,-c3re^]4reg`6rJLQ1!/gZ3!K;s8N;AJ3N;JV4N;8J3
+Nr=t5NY@7nEG]N*B5;6rJ:2$'6UuAp;2+mnqKqj^qg8-bs*=TgrHJ6a!-S6^)KV@;T:r!UVlHi#
+Xfek2Yd(OA[C3NQ\[f;`rk/BI^VBc`(W!u,`QHKSf\GHJl0Rg+o()DEp%@tKoDS:_p%J.Yq#C-i
+qYpBlq@i]"q"FCQoCDGAnF,i9oCVbOqu#^Y*;>n^N/i[EJVo,0H[C3dG&qkYM2[FVO,SpOL5#GV
+rIb-/=,r?'P*2&pQC+)/S"6.CTqS6WVPgAmX/rG,Yd(OA[^N]V]"G_k^VRe*`Q$!?b0/#ScHste
+eC<($f\,!5gtgiFi8N_VjQ5Oekiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@
+JcE.XJ,~>
+JcC<$PQ14QrVc]mqtpEirqZNfs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pgjQ#7Yi8EML
+h;-i>g=b-1f%&:!da?IgcHaYWbK7iG`l5m6_SO"%]tCtg\[])V['R'BYl7T(5!M1or]:rT1G^^@
+1GqHa5!;%j4$5P_2E+W785)cWr)*;gs&8hps&8hn!)r\kl;@LXr_rbnr_`Pj(GIKp1,(F@1dF8f
+4Zkhg3]T2[3B/oU2?#E@4$#D_3&iiW4$,K!:]=#o91hiJ81-Yu;,I'f!)r_ls%rboqbmPq<E8Zj
+!)rho!)rkr!)rkr!`Mupr_r_ooi(lirDN_p;uTbr<V]\j<W?)"<W,ns;[$-#<)ZaqrDW_q!`Muq
+r)*Po;Z9Mn;u';l<)rosrDWYo!)rhq"]\T(<E3#t;[-3$<)cdq<;fhs<;onn;uooqr_iqt;,^Fn
+rDWSmrD`huq,R,fr)Nbrs&B/#;cH`q;u]et;H*Nn!EE1u<=)]-=&i7%='/X0r`T)$s&fG-=^#&/
+>5VP&=T;S(=n5\l=oDP&=TDY(=oMS<=&Ddi9hn;T77KU00e+J$7Q3>+qg/*coR-O_q0N'drcnBc
+rcS9arH&?e='/X2?!guJ@fBm;A-cdYAnPdjBk_>]C&_rJC&_lGB,5/pBkhR-GC4ssN00?lS"?4D
+T:hdGRf8^4R[KY7S=Z=FTqeE[Vl6MjV50fVSXPn1P)t`bN/`m]PaJ#:W3<P<]u.q8d+$\$gtpuI
+iSsjss5G*Xc`18R='8R$;H6Xl:f1%c:JX_`<E3(%<`N-t;Gd0drD<NQ=,r?'P*2&pQC+)/S"6.C
+TqS6WVPgAmX/rG,Yd(OA[^N]V]"G_k^VRe*`Q$!?b0/#ScHsteeC<($f\,!5gtgiFi8N_VjQ5Oe
+kiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcE.XJ,~>
+JcC<$PQ14Qr;HWmqtpBhs7uWgs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pfj5].Xi8EML
+h;$c=g=b*0f%&:!da?FfcHXSVb/q`F`Pod4_SEq#]tCtf\[T#TZa6p@YPt*mGT:jLF)Q&;FDd,"
+P,ta`VPBrXSX>\,P)Q''G^P;GP5g[5P5g[CP5g[EP5:@BPl?sHQ3*D?RJrZQRfT%KrL3bS#+1aC
+QBd`"rf[GIKn"LLK*#LhVuED/StDUCR$<_qN/`XLL4t;COH>NbOH5HaOHG\)]aMKb\[],XJ$PDe
+K9>ql!g/S+rfI>HPEV5rr0I>Ks-<YOrg*>G!1<PLqjI\VR[KS4Rf/ZNRf8]VR$X0<R/`QUR$jB<
+ReiHNRf8`TRKAnGRf&QRQh-LDQ'D64s-3JGoT]B>%@!'?P`q>rPEM)mPEM%,O8k=>OTUc/OcoF#
+s,d8C"-\t5PPpdGPQ7!CQ3!88qiq/IrKmPPs-`tXSGo)XT)PA^T`:\dTV;@Z!MQ7eU\U_bV>6nd
+V>7"eVu<LjV>d@kVt[.dWW0!pWW&psX8f18WM,#mF`_SDGC+M*PbD#T<1R/nWd9!iHi&3^IJ\Ej
+Hi&-gH2i-fGQ2jdFoQP(aj&/Ze(*(&g"P39h;@/MjQ>[jlKdg(n*oi:naQPJ"nM<Xp\OlkrrMAb
+rhgR(QD^FDP`qGqN/3:ZVm*\C]X"fHZE18+Y5GD.N/`mZOckonQ'[l+S"-%@TV8*UV5C/iWiN8)
+YctF>[C3QT]">Vh^VI_(`5Td<aihlPcHjnce'uq"f@em3gtgiEi8N\UjQ5OdkNM0qlg4!*mdKW6
+naZ2@oCV\So`Fj]p\jmeq>^<gqu6NlrU^#>s+13Xs*t~>
+JcC<$PQ14Qr;HWmqtpBhs7uWgs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pfj5].Xi8EML
+h;$c=g=b*0f%&:!da?FfcHXSVb/q`F`Pod4_SEq#]tCtf\[T#TZa6p@YPs(oAn>F^@UEMK?X%;]
+Ck7(bI!U*]F`VM?DJOWHCN"=oHiJEVHhVjdHhi$iI=D0Fs+('!!.b#t!.Oiord=Zk!b5SDraH%/
+;13b9H2_ssEcH&8Chd]sAn>L_Ci+%eD#\>QCMj$1$B:"%MMYYmI;X+QqgA6gqgSElrI=m!o7Hdh
+qLSm%Jq8K)K(=KmK):0#K(=KmJGk&uJH(3!J,OosIfP#pJc:0#It%9Es*ausI//0jI/\HoI!^5<
+I/eTrI!^5:HiSTnI/eNpI!^5;I/\QmIK4lqIfForIK4orJ,"KmJ,OltJbt&tKE$T+Knb?]K`Hl,
+L&Zl3LPUeDLl$udMZ&D/MZ/P6M?/QkrJ:N3qht<0qhtH4s,R&;qi(B2s,Qr8pl6)FG&V;7B5)-s
+Bmk/K77Kak9hU4eHMr3fI.Md`I/SEhHN&3iGl;jdG5l^bF;LUEUo(,lXfeh1YHY:;['d?O\@B)\
+]=e-V!5ABG(W"#-`QQTVf\PQMlKms.o()DEp%@tKo_n@_o_%qWpB13dq"aja'D_Fup\"1MoC;>=
+mdBT7oC_nUr9+(eca/^nNf8[CLkC3VI1:IGF``+fNK9-_N/EIJpk8Qt?Asl)O-,ThQ'I]'R@B_;
+StMdOUnsrdWN*#$Y->.9ZaI6N\[oDc^;%J#_o0O7aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5f=a
+k3(smlKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtpBjrVc?eJcC<$[Jta~>
+JcC<$PQ14Qr;HWmqtpBhs7uWgs7ZNerUg6aoCMtP!V,[Ymfi.Hm-O''rolH,kN:pfj5].Xi8EML
+h;$c=g=b*0f%&:!da?FfcHXSVb/q`F`Pod4_SEq#]tCtf\[T#TZa6p@YPqKB5<_4n4$,Jb3]JoP
+1djVn4Zttk4$#>[3&*]g:Jjsa;>X8j;uK\q;uT\o;u0DX;>O2i;uT\p;>a;u0eP(40JYRD5sYE4
+&3;p93]T/[2E*NP1,UmK3BI.""ueP(4$#H!rCm5a#"_?75tt3Qpf%5lq,7#e!`W0"o2Gfj;GpHg
+<!-&s;cN]os&AYis&Aqqs&&ns<)iisq,[>lrDj/&;c?Xp;cH`q;u]hr;u]es;u0Ao;c6IirDWVl
+!`N)uqG[Dn"&i/t;uTbr<W?)#<E/rr!``3!r_ierr`/tt"'&<"<VfYp;u0Al<;BJh;uftp<W,ns
+;u0Jl<<6&tqc*Pn"&r2s;uBVl<W?,/<`N.$=BJ^.=BSg2=oDP%=o2D$=oVV$=o)5#=8Z1s=oV\!
+=oDM>=]eNr:JOPV9h%Q:5W'r</OhZT;gNcgHi&3^IJ\EjHi&-gH2i-fGQ2jdFoQOt>$YKC@:NeX
+@q9.^AnP^gBPD0qCAqrICB%uJB`)KPBkhF&FEi4cLlIR_R%4/Is.9CbS=,fDQqs0?S"6.CTV8*U
+VPg;fUnaWTSXPn2P)kZ`N/N^YPa7l7W33M;^;J%9dF?e$gYUlIiSrnYj5].Xhqm10='A^0=B&-u
+;,0td;G^.a9i:mi!EN2!<<H2t:f.$dr(p^YNK9-_P*;/rQ^F21S=Q7ETq\?ZVPgDnX0&P/Yd1UC
+[^WfY]=bkm^r""-`Q-'AbKJ/UcdC.heCE1&g"P08h;7&IiSrnYjlY^gkiqBum-O--n*fc9nac8B
+o^r.U!quB_rV6Egs8)Wirqu`noDX=@JcE.XJ,~>
+JcC<$P5k.Qr;HWmqtpBhs7uWgs7cQerq-?boCMtP!V,[YmptkRm-O''l07EqkN:mej5].Xi8EML
+h;$c=g=Y$/f$r3uda?FfcHXPUb/hZD`Poa3_8*h"]Y(hd\@/iQZa-g>Y+;,&GBJ"KEc5o9F)Gf,
+Auqo.U8"<OR[BA(N:5,UG_2(DP5UOBP5^UDP5CICPl?sIQ33J@R$moA!1WnV!1WtVs-WkSrg*SL
+!0mJH(4gsfJV&P\@&BZmT:_XCR$X&%Nf/jPre:Q0OcYWbr/gr@r4NHJ\@/kfVk/3dO-04#!g/S+
+rfR5Ds-!JJQ2HpJQi<<NQiEBGQN3EKRJE<NRK&`SRJ`NQR0&bBQi*6MR/r\Cq3q,IrgNkTqO7AN
+!13DFs-NbO"I5:=Q'M?5rKI&As-3YMPEYj-s-!GGrf[MJOH>NbOT(@GP*(liOcfX+rfI2Dq2tT>
+rK[DI!1!JJr0RDKqiq2JQi<BPR0B%KS=H.@rgj+^r1O"^rh9OhU8"EXq5""d!2TRgrM0FiqPF7j
+ri#jps/#gpVZ*FkVZ*LeVu`lror7tkqlB^r(9=O,IscE^F`r.YG+FMZ;,pSb=]\aQr-[^VrI"Qj
+r-JBgs*4Kds*"Eb(j+3Vf@em4gt^`Ci8WhZkNV9tlg=-/nF6DH#Oq9SoC_nUri5u;\YuI/Tp:t?
+TTkV+P`CWUPGP=f[D0G[YHt=2qQBaus,:$>O-#NfPa.Q%R$sM7StD^MUSOcbW2co"Xfnt6Za@0L
+\@K5a]t_=u_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@S
+rq6<b!;HHes7uZjr;6HjrVc?eJcC<$[f:j~>
+JcC<$P5k.Qr;HWmqtpBhs7uWgs7cQerq-?boCMtP!V,[Ymn3$8m-O''l07EqkN:mej5].Xi8EML
+h;$c=g=Y$/f$r3uda?FfcHXPUb/hZD`Poa3_8*h"]Y(hd\@/iQZa-g>Y(;.6ARf1X@JsLI>?P!,
+JUVulH$+7NEc>o/^7'@`F*ZhnpNlgcq0W3kIf=fsJGk$#Jq8IOJ,=ZnI/\I.?sdAN@Ui52I<g*^
+G'%hGE,TT.Bkh8YAGL$CDJX4gNXC]%M2>8^Ir9=RHi&3iI/n`qIJ\KiJ,OohK)1&mK)U?$K(FNn
+K)(&iJc:3!JcC9"JHLFPJ:[WKs*k$!pOW?p!e5`Nr-n]qpO3!fs*ONg!.4Wk!.F]ks*FfpH[G[<
+rdF`o!.X]k!IoXuJ,=ZpJ,XlsJ,FfsJbt&tK)gVuL&m'cr/(?/!K2j7M>W82MZAY6M>rJ5M>`>2
+Mu&A5NK!dnrepl;Nr=t7Mueoso8WR+s,RnVKlM!HCM@L"C1hs7E^WAeGYUn,Hi/9TIJnQlHi/3i
+H2i-fGQ2jdFW#;!X/rJ-YHY::Za@-L\@B)[]">Sf]tV1orP'2b_8=.1bg=kmhW*eam-aB5o(;SI
+p%7kJr::3dp%J+Rp\=OZrV@6(q"XUWp%7kInaQ#8mdK];p%\C]jo6=us-Se)Ne`%5LkC,&IX??_
+F+&duNK'']N/<CFq1SZus,:$>O-#NfPa.Q%R$sM7StD^MUSOcbW2co"Xfnt6Za@0L\@K5a]t_=u
+_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHe
+s7uZjr;6HjrVc?eJcC<$[f:j~>
+JcC<$P5k.Qr;HWmqtpBhs7uWgs7cQerq-?boCMtP!V,[Ymq2"Tm-O''l07EqkN:mej5].Xi8EML
+h;$c=g=Y$/f$r3uda?FfcHXPUb/hZD`Poa3_8*h"]Y(hd\@/iQZa-g>Y#J@i5Wq4k4?>P`3]T,X
+2F0Mg4?Yhi4?5>[05sZ[:/Fhc;>a8j;>O2j;uK\o;Z0Pl;X%'T;Z9Vo;?0Sl;@YH70JP:;2)@K^
+4Ztnj4T7A@3<(oA2Dm<J1H@Mq3<;*"rAt$U:B!om9hS&L-9t't;>=,i;u0Dk;ZKeq;Zp'"<)Z`f
+<!#ur;ts>l;u]f$;c6Ll;cH`i;ZKeq;uTYp;uKYq<V]\p<<-"s<W6&!;u0Jj;uT_u;c6Omr_a##
+<)QRk<)cdprDNYo!*&en!E<(t;u9Pn<<cE&<E)st<;ohp<W?#"<E)rs<W#hl;YX2f;ufqr<rQ+t
+<;ohn<;fhs<;ohm<;oho<;]bp<rZ/"<r6"u=oMV)=oMP&=o;J&=TDS#=oDG&=8>r!=]k,qrEB5(
+"Bn`":/1[\s$[8[4uOf;/Oq`V3d^dPk^EDWrHnHgs*=WhrHJ9bs)eEc?t3^FA-Z[XAnPdiBPIE[
+s(VLJs(MIHrFc.D%Vfg"Fa/@gLlIR_R%9h?rh!bnS!f\3R$X/,R@9Y9StD[LUSXiaUnaZWSXc+6
+Q'.2gN/NRQOd)0%U8Y3#\A#l%bg=klg>(QBiSieVjQ,@]io&_MgY&Re>ZOj*<DcRk;GU+e:Jae]
+:fLCo<EN=&<Duak;#=,f;#cJUNfT9bP*D5tR$a>3S=Z@HTqeE\Vl6VrXKA\1Z*UgG[^`l[]Y2(p
+_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"O`p&Ojc
+q#C0hqY^6hr;HTcrdk*#s0hrX~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[YmpkeQm-O''l07Epk2tddj5].Xi8EMK
+h;$c=g"=p.e^W*sdF$=dcHOJTaiMNB`Pf[2_8!au]Xtbc\$i]OZa$a<Y+;,%Df0`>Df]i=EG]K+
+XK&.mU7e*JQB[Vqd^krmIYmBRrK.)Aq2t]?r0./FrK[DK#FCgFR@0M5S,8]US,SlVR/iWRQ5c*R
+P`pcMH\6s$?s]Y(Tq7mKS"#h0P)tZ^M2)"`s,d8Cr/gr@r4W-@$+I?eS"=qYO-,S&P5gaGOogc-
+OSt=AP5g^HPa235!13\Np6PcFrg*VPqjI8KrgEeTr0dJOrg<hTQ^@Z<rgEeR!1EYOrg<hTR@=,C
+s-itUq3q;N!1<\Nr0IALqj.8IrKR5Dr07)Dq3:iA"d4t/O-#J&OT:RAOo(=>OTUc1P*>^,rfmDI
+rg*JKrg*MJs-<YOr0dSR!h>gPrgs.^r1O%_qP+"brhKOjrM9Fh!2TRgrhTOirMKRlri#Xjrhf[m
+r29Upq5EtcpT+7o's!jSHZjOPH\-O&TnnLu<E>Mi<a0tFIIr!_IK"WnHi/3iH2i-fG85:DFkb[+
+gtgiEiT'%^kiqF"m-X92qsap\o()DFq#(,iruCs;VlHVcRA$4<Q'do"N/3RiW3<\B^9XuHZE:>-
+Y5>>-N/`jYOckonQ'[l+S"-%@TV8*UV5C/iWiN8)YctF>[C3QT]">Vh^VI_(`Pom=aihoQcHjnd
+e'uq"f@em4gtgiEi8N\UjQ5OdkNV6rlg4!*mdKW6naZ2@oCV\So`Fj]p\jmeq>^<gqu6NlrU^#>
+s+13Ys*t~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[YmpkeQm-O''l07Epk2tddj5].Xi8EMK
+h;$c=g"=p.e^W*sdF$=dcHOJTaiMNB`Pf[2_8!au]Xtbc\$i]OZa$a<Y(;.5?t!SS?=7&G?<LE5
+JU`)nH$=CQE,TZ3U5F;4Dg(2gom6Uaq0WEqIXZcsJ:W:NJcUFQrdXfnrd5Q0@UNGM@UW/3H[C$^
+G'7tKEGoZ/C2.Bmrac"E!c;ajrbVUOr/Uf8s+pn]GC==KHMW$gIK"ZqIJSEhJ,OosJbam!JV&LM
+JbFZsJV&LFJcC>uKE$PrJHC@QJc:3"JcC9#JHp^TIt3*#J:[WK!J,k!JbsutJ,artJ,OinIK"Wo
+I0"_Br-SKkq0W0jqL&3frI"QlrI4crp3m!lr."Tm"+PcKJ,OotJbt'!KDpPsL&m'crJCQ3s,$B*
+!fMqnr/(?/rep`6rJgT2qi1E1oo8m0"HSS'O,s7$'ododDJa*$Ci4!.IVrpe7RhVt9M^'0IIr!_
+IK"WnHi/3iH2i-fG6<#2Fg1kM&[JaM[C3TT\[oAa]=knl^;%D\^D4Q#_o9[@d+-k-jQGjqn+#r>
+o^qhKq""a_p%A%Pp\4I\q>^4%p\+:PoCMMAn*]Z6nac>HqYfFR*5fjZNKB$OJqnr-IXZ]kGBA(]
+LQ.@TPDkEWLkY\Yqh&46NK0'^P*;/rQ^F21S=Q7ETq\?ZVPgDnX0&P/Yd1UC[^WfY]=bkm^r"".
+`Q-'AbKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^r.U!quB_rV6Eg
+s8)Wirqu`noDX=@JcE1YJ,~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[YmmQU2m-O''l07Epk2tddj5].Xi8EMK
+h;$c=g"=p.e^W*sdF$=dcHOJTaiMNB`Pf[2_8!au]Xtbc\$i]OZa$a<Y#JC"7N4KP4?GPa3BK/Y
+5sRRq4?Ybf3B/rW=@>SO:/Ua^s&&Vjs&/nsr_rbnrDWYmkY_4Tr_rYks"=X10JP:?2*aAhr]C0B
+r]0s;s#19C1GgpK3]T/Z2`^gus%iPd#tdc:5"/=I<)clo<;fbm;ZB\p<;oet<)los;tj5n;cH^p
+p/D)l<)``ns&A\js&Anps&/_n!*/krr`&tt<;ff!<`N'sr`&nrr`&hp!*&qt%9-8*;c6Ll<)Z^n
+;cH`q;uTYr;cH`m;u]hq;uBSp;uTc!<)lptr)3Spr`/kqrDieq!)r_lrDN_r<W5qn;ufqr<rQ+t
+<<#no<<#qu<rQ(t;u'Di;uK\p<W6&!<<6-%r)iu%pfRMur`]8's&];)=Su>%=T)=r=S5es>5_Uu
+=p%]":eq!`%7WcI5WgnO-nRnH1HBjVIIr!_IK"WnHi/3iH2i-fG62r1FoGtTAS,RfrFc1Fr+Z4G
+rb<EeBP2!kB4u!oD/scEItWZ=PEqW-StDXJT:MF=rg<\Os-O"ZS"6+BTq_O^-DR</T:MI=QB[Mm
+Nf8mRN0'6hS=uj_Zad`eaNW#\f\5-;hr3STroF+>-K<t@h:pW7eC%iJ>$"g,<)HRl:f("c;,'b]
+;,gOp<E3!u<Dudlqbd5e?Asl(O-,ThQ'I]'R@B_;StMdOUnsrdWN*#$Y->.9ZaI6N\[oDc^;%J#
+_o9U8aN;WLc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?&>o(2MGrq-?dp\4X]
+s7u]kqtpBjrVc?eJcC<$[f:j~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[Ymmca4m-O''l07Epk2tddj5].Xi8EJJ
+h;$c=g"=p-e^W*sdF$:cc-4ARaiMNB`PfX1^q[Us]Xt_a\$i]NZE^X;XfQJ[DZ4MQE>E\<Ci!`r
+XJ_qkU7e*HR$3YEVUfj8K^4g"OoCI<OoLUAP6-u6Q2[*LQiEHQRK&]US,AfVS,JcVR@!o="I54*
+JU@BK+CSQPVOsTTSXu=<P`h)eMi!7ELP:kPP*(ieOH>NcP*,^V$G*dX[u?WHHA%<?rfR/BrfdAF
+!KiKBOoCODP6$o5rK[MOQBqB6!1*VN!1*SM!1<\PqjIPRRf8`TRf/ZSRKAtIRf8]VR$X0<R/E?P
+R/!-JR0&hFRJE9ORJE<OQNEJ>Qi*0KQi*0LQ2QsFPQ-mIPm3J<QBmf%QN!0JPQ7!IP5pdEOT(@B
+P5CC9P5gaGQ2d*FQ2QsIQ2R$KQi<<NQi36LQN3ENR/reIrgj%[qOmk^qkF%arM9:drhBUlV59ua
+qPF7jr2BXnrMTdqVPa<irM]^pqPa7i"KJH#WiGlqqlKh""/qB2H2_mbILLL^Y_/Q[<E>Kb='i!,
+IJ\KcJ,=]jIK+]oHi89jH2i-fG8,5Vh;7)Kj5oFel0@X%mdBT7nac;NncnXToCV_NrM9H4Z`'h2
+U6V.ES!KA,PECc]T;AZs[_BJ]Z*LL4ql]gu=c85uO-#KePa.Q%R$sM7StD^MUSO`aW2cl!Xfnt6
+Za@0L\@K5a]t_A!_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4_k3(sml0@U$m-X60n*olH
+ncA@Srq6<b!;HHes7uZjr;6Kkr;H6dJcC<$\,Us~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[Ymmca4m-O''l07Epk2tddj5].Xi8EJJ
+h;$c=g"=p-e^W*sdF$:cc-4ARaiMNB`PfX1^q[Us]Xt_a\$i]NZE^X;XfQ&A@K'XP?X@)G>$4p,
+JUVumH$=CQEGfVkIACLlEdHbmom6Uaq0W?oIXZcrJGb$!JH(*!If"QnHlZa+?".8Q;,;OeGBnCT
+G&qYAD/=!%B4b[cA8H(!qJ61LDZ,S&N/NOLAp/W?FEr<5HieYBI/\QeIenQlJH(3"JcLB$JcLB$
+K)C2nK)U<$K)L6#K(slsK(suuK(acqJ-(:PJGOg#J:E'"JUm]Mrdb$#q18Hos*surrdOosr-eTm
+!I]FmI/eQiI/eWmI/J?iI/SKmIf4cjIK4lsJH(,pIfFltJGt,pK)UH%L%g?%M#E/1MZ/J2MZ&J3
+M?&S6MZ/J0MZ/P5N;AP1N;AP1N;SY8N;\b6Nr4t9OT(@WMgTM_ChdX$Ch[jBCjJrJ7X'AW:PJaq
+qgS0eqgS?hs*XfmrHeKhs*4Kd!-\@Js0W6C\@K/]]">Sf]t_>Z^_ac$_Sa@6c-b+si8j+emI0T9
+oCV\Jo^r+R!:p-\rq$?dp@n=Vr;$Bf#P[rbo^hYDnG_k\nF?)Ap\OjHru9nrP`:ZdLjjr4JUW)t
+H?sdYJ;9&ANffB]Mi.=`qh&%0N/`m[OckroQC+&.S"-(BTqS6WV5L8lWiW>+Yd(OA[^N]V]=bhl
+^qmn+`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ>Ufkiq?slg4!*mdKW6nc&([oCW%Ts7QHe
+rV6EgrqcQirqu]moDX=@JcE4ZJ,~>
+JcC<$P5k+PrVc]mr;6Kis7uWgs7cQerq-?boCMtP!V,[YmmQU2m-O''l07Epk2tddj5].Xi8EJJ
+h;$c=g"=p-e^W*sdF$:cc-4ARaiMNB`PfX1^q[Us]Xt_a\$i]NZE^X;XfOti7N+ZV4#f5\2`NZ]
+5!1tl4Zb_d2`E<R=%lCd;YEre;>O/k;c<Tnr_iVlrDMiVqbmDlr)+(\0.nq41H.*V5s7@n4$,Pc
+r](EI2E*QN2)I<S3]T/Y3W(r=:]3ue9+"6F5"JOK<)lmt<Vf\n;uKVo;uBSp;uK\p;u9Mo;uT_r
+;t3fe;uKSp;cN]o!*&ho!*&kp!`W)sqG[Gpqc<_s!`W)sr`&u"<Vobq;uK\p;[-3$<)lpt<;oep
+<<#nr<!?3"<)Z[mr`&\ls&8tsqG[Vs<E<+!<;KPm<W#hr<Vf\p;?Tor;c6Nl;Z]ou<;ohh<;onm
+<;of"<)lt!<)iiqr`&nr!`DrrqG[>l"'&<#<W,qu=8Z2#=TV],=8H%t=oVY*=o)8#=oDJ%=8,hk
+=oDM(=nGl4=Ar$l9h\8U77B:)4$+o?/O`&`3`>p)qgS0eqgS?hs*XfmrHeKhs*4Kd%!H8qAnPdj
+Bk_6pC2<W['5;,nB4kmlC2S*8H@LX+O->luT)P>cTV%aCR@*l<0pnAsS"-(BTqeEYU7n6OS=5e0
+P)t]`Mi*COOHZ!#Tr>*"\A#l%bgFqmg>(QBiSrnsjT"6hio&_MgtLB0da$'mb$%qJ=]SEu;c$:g
+:ejb]:Jt+j<*!+&<`W-r:f.'eqbUFRN/`m[OckroQC+&.S"-(BTqS6WV5L8lWiW>+Yd(OA[^N]V
+]=bhl^qmn+`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ>Ufkiq?slg4!*mdKW6nc&([oCW%T
+s7QHerV6EgrqcQirqu]moDX=@JcE4ZJ,~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq-?boCMtP!V,[YmmZ[3m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-4ARaiMNA`P]R/^q[Ur]XkY`[^NQLZEUR9XfSO?r,!<fF)Yu2Brn83
+Uns`TSXPk.O/p3nH%1d:PO4P4Oo1=9OoLUBPQ-pHQN*9OR/WNPS,AcVS,JcVR@*u>$&*t\JqSc1
+?!jK.T`:SpR[BD*P)bKYLk^V<P*(ogP5^OFO-,TfrOiTO\[f/"Nh^oQNK0,"Oo1@BPPp[BOoLUD
+PQ-jIQ2[*JQNW\DR$X0=Q2m9NQMm-MR/WNNRKT%GR$jBARfAfTRf8fVRfAcWR$X0<R/<<JReiHP
+RK/cPRf8`PRK8hDrg!PNrKdAJrKdJKrKR5DrfmGJrKdJM%[NHIQ'IT!Q'@MsPEM&irK7,CqiUl@
+s-*JGrfdAIrKd;FrfmDIrg*SNrK[GMrg*SNrg<VO"e(sOSXuGPT)bP]U&C_^U]%"bV#[=jV>d=l
+V>[:iVtHtnVPg>jVl-Jlr2KLjql'UrX8T'qX8/h6Xfeh(ML0JhEI!%ZG`0F_G>_C>R&<tkYl0%J
+J+\?gJ,OinIK+]oHi89jGlW*fG7``njQ>XilKmm*mdKZ9o(2JOo)J:`o_/+ZUAl4bX/WM&SXH.C
+QC+/-OH#*_VQ@,5]YChXYHb16r3#mus,:3CO-#NgPa.T&R@B\:StMdOUnsrdWN*#$Y->.9ZaI6N
+\[oDc^;%J#_o9U8aN;WLc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF?&>o(2MG
+rq-?dp\4X]s7u]kqtpBjrVc?eJcC<$\,Us~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq-?boCMtP!V,[YmmZ[3m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-4ARaiMNA`P]R/^q[Ur]XkY`[^NQLZEUR9XfSO2r*UCL?!UW8=b2$M
+H?s^UF`MJ>Ck%RrCN+NGI,fSHHN/?eHj5"JIXls"Jc:9$JHLFPIt%9C$"IFO@Us"Z:euN=GQN&2
+F8g+`Chmd!An>L`rbV[PD>e;ND#eJONXC]%MI1@QD01&NIK"WnHiJKmIJ&'cJ,OosJH1<$JH1<$
+Jc:9"Jc:6$Jbt&tJHCFSJc10&JV&H)rdk*$pk&Quq1/U!JV!fNs+(0#qLJg#It3*#JGauuJ,t4Q
+r.+j"rdk#us*srqs*k#tqgJKnrI"isI=-EhHhi'hIJeKkHi/9iIK+cpIfb.MJ,4WoJ,b&rJ,Fcq
+J,OroJcLH&K`-W"L&m'crJ:N3re^K/!/pf5s,.#;Mi3ILrJLQ3rJ^Q3s,?Z2q2G?5rJ^`8rf6o;
+qN1]=s,n+TGAqG7BkhL#BlB)B?pR7OG^rObLAcSuJ+\?gJ,OinIK+]oHi89jGlW*fG6>:_\@MUM
+s1JBF!kuFarP8EKs2#Yk`Q?ERfA,?Gl0Ia*nac;Co_%kKoCMPEo)81ZoE4d[p@nFY#P[rbo^q_E
+nG_k\nF?)Ap\OjEru9.^O,fK_Kn>)3IXZcqH?XR^LPh(PO-5K[MMV+^qLeg,>`Ol,P*;,qQ^F21
+S"6.DTq\?ZVPgDnX0&P/Yd1UC[^WfY]=bkm^r"".`Q-'AbKS5VcdC1ieCE1&g"P39h;7&IiSrnY
+jlY^gl07L!m-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)Wirqu`noDX=@JcE4ZJ,~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq-?boCMtP!V,[YmmQU2m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-4ARaiMNA`P]R/^q[Ur]XkY`[^NQLZEUR9XfSQ$7L_aS76!:e3&X&f
+5<V.lr]:?E2E*`h7ncbY;>*ic;>F)i;uBPk;u9JW;>X8j;uT\p0b,fi0etLA1I+2h4Zkki3rM&B
+2E*NP1c51mr\sm<r&YBa9h\5T92%o/4@i=I<)ifrqc*GkrDNYp!*/ens&0&#<`N*ur_ierr_rVl
+!`N&srDWbqr_ibp!`W)srDWhs<)`cqr)<>hs&K&!rDikr"]SN'<E<,t<;oho<<#nq<!H?%<)QUm
+<W5qt;u0Jn;uTbm;uK\q<<lK'<)cdp<`]3!qbmJor`/PhrDW_o"&i/t;uTbq;ts>l;u]_q;uTbq
+;uBVp;u]hs<rQ(t;u]f";c6Ll<;KPl<!--"<)ris!*B)#s&fA)=8c8#=oDG(=^"u)=T;P'=T;Ip
+=Sc1p=o__(>5VP'=qt.9:/4JV:JF8G3^l(c+t5'46o-i"rI4WnomlmgrI4Wls*XfmrHeKh!-nHd
+!,27D!GZEGC(k;pBkV0oBkqX.G'edpMNF'hS"BSN#G.HSR@'>-QN!3UR$jA2S"6.Drh:a5TV%dE
+R$X&"OH#3VMM[:QPEq`4W3*D:^;S.;dFHn'gtpuJioC%!s5P$WiSWMIg=Oj&cHF8Ga(o6g<a/[*
+;H-Li:Jq*e!DZPl<!$*#<rQ,!;?0Sl;#3ufN*MC(OHPflQ'[l+S"#t?TV8*UV5C/iWiN8)YctF>
+[C3QT]">Vh^VI_(`Pom=aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5OdkNV6rlg4!*mdKW6naZ2@
+oCV\So`Fj]p\jmeq>^<gqu6NlrU^#>s+13Zs*t~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq6<`!;$3\!V,[Ymmca4m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-+;QaN2B?`5BI.^V@Ip]=PP^[^EKKZ*:F6XfJJ$VuCN6Chs#ds(W.F
+V5Br\T:MI<P`fsHQZRV/P5UU6P5^U>OSP%=P5^[FPlI$IQN*9SR$jA2Rf8fSS,f&VRK](FQ@jX4
+rdk_h?)=9fT:hgIS"#Y+OGo'RM>i80Op-o/OcYZcrf[2ms1/0<#FV32KT2"PO8b:8P5UOCP5gaF
+Pl6pIQiEHQR/r\Arg!PNrg*ML!goCDqO.DPrg3\RrgNkTrgNeT#b%0KQ^=),R@*o?pmM8OQ^Ic?
+p6u#LqjI_WR$a5+Q^@];s-N_Ps-N_Ns-<SJ!L8oKPQ$gGQ2[*GQNNP=QBhH6!gAe1rK7)BqiM5K
+Pa%AqP`q>rQ'M*0qN_)HrKmML!13\N!LK2LR08tJS=Q8NTDtS^U&:YaU]%"gV>m@jV>mCsVl$;e
+VP^9jVYR._W;idmW;NXkW;NXpWrK+"Wq`XkXT,F$XqdU[I!9^SI=HTeXjDrL;Me>=E`ZSHrdX-^
+rI=fqqgJKls*O]js*=Wh%!Ujtl0@U%mdBQ5nac\N!;-9^"n_K\p\Ol_ruUe/YGSA/U6V=HR?jA1
+Ock`gV5g`/[_TP^ZEgX6YPkX"X]UOAO,oEdPEhH#R$sM7StD[LUSO`aW2cl!Xfnt6Za@0L\@K5a
+]t_A!_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4_k3(sml0@U$m-X60n*olHncA@Srq6<b
+!;HHes7uZjr;6HjrVc?eJcC<$\Gq'~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq6<`!;$3\!V,[Ymmca4m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-+;QaN2B?`5BI.^V@Ip]=PP^[^EKKZ*:F6XfJJ$Vu:$&?P?RE=FY^G
+G^+@RF)l2;>'"t&DKPf(l$NGXrHn9b!.4Ee#(:rMIt3*$rdt0$$\3_VIXZ]nIXPX3>Q/(L;,DXc
+H$=CSF`VVCD/<s$B4badA8Q1"D/K8g#]=KtNfK0\Nf3mo"Eo00FF!b2rHnQls*aQhq0rHrIt7EI
+!.b'""+YrSK)U?"JcLB!K)U?$K)^DtK)U<'JqJ]/qh"s'K7`uO!.t3$s+('!s+(#us+(-#!.alr
+s+:3#rIY'#r.+WmqL/9jr-e'^rd4Tks*alo"FY`KIX_$@s*jut"+G`KIf4crIKY.LIt*"JJbalt
+KDpQ&L%g?%M#<,0MZ8V4MZ/P5MZ&J5MY`8/N;eh9N;nn;N;nn;Nr"b-N;eh:Nr4t6O8tF>Oqido
+Df'6(D/F$%KW8cl6"rf4>u"1LrdX-^rI=fqqgJKls*O]js*=Wh"a@Pi]=bfU]`Z!`^qfrcrke]Q
+)T9V7b0SPhgu@G[lgF94o(2JGo^qbGoCDMDrU^$\!;6?b!;HKf'`%P!p\+:Po^_P@n*]W4nac;F
+q>B"I*594OOH5Z^It`Z.It<)sH?aagLQ.CUOcYN[MM:q\q1De.NK9-_P*;/sQ^F52S=Z@GTqeE[
+Vl6VqXKA\1Z*UgG[^`l[]Y2(q_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)JiT&tZk2tjjl07L!
+m-O--n*fc9rpg*]o`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s1&)Z~>
+JcC<$P5k+PrVc]mqtpEis7uWgs7cQerq6<`!;$3\!V,[Ymmlg5m-O''l07Epk2tddj5].Xi8<DI
+h;$`<g"=p-e^W'rdEp4bc-+;QaN2B?`5BI.^V@Ip]=PP^[^EKKZ*:F6XfJJ$VagYRr^.>X3Aj)c
+4Zkkh3]fA]2DIB`9i+[a;>F&f;=IK_;u0D_;>sJj;>O2i;]nsl/hJe41,UpS5Wq7o4?PVc3B0&Y
+2E*KL1c.6S3B0"t3s7Z-4&A]O9F"9c8kD3=;,dEmr`/eor_ihs;uTYs;cHasp/D/p<`W4"q,@,h
+r_r_os&0)!;cH^p;ts>i;ta2i<W?)"<W5tt;Zp*$<`N/s<<#np<;fbq<<#tu<<#nq<<6'!oi1cd
+r`&_os&B"u!*&bmrDi\n!EE+u;Z]os;Z9Vp;Yj>p;cHasqGRDo;uTYp<;]\m<;oeu<)lptr`/kq
+s&/kq!*&hor`&kss&AnsrE0#$s&f,#rE',(>$CT$!*B)#!*T/#qH<VtrE9,'qcWl$'ie.-:/+GV
+9gqK:=>D?L3\3]\1HAA4J*;F]J,XooIK+]pHi89jH2i*hGPl4TC\_`FBc^r%C27U(FE`+aLPq:Z
+Q^aS=T:hgIS!o_3Q^=#(Qi<BPROt#!SXuLJTq@sKS=,_0PECocMi*@JMiNsdS"cg^Zad`eaNW#]
+f@es9i8N\UroF+>-fX+BhV?i:eBuO``PT@#[q08W=^"s/;H$Ij;Gp=f:/=bc<)m"#=8l5&<)QOi
+rD<;c=H&6#O-,ThQ'Rc(R[]h=T:hmQUnsufWiE/&YHY:<['mEQ\\#Mf^VI\&`5Ta;aND]McHjkb
+daZdtf@\d1gYL]Bi8ESSj5f@bkNM0plKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>U6gqu-HkrU^#>
+s+13[s*t~>
+JcC<$OoP%Pr;HWmqtpEirqZNf!r)E^rq6<`!;$3\!V,[YmpYYOm-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,e^W'rdEp1ac-+;PaN)<>`59C,^V7Co]=GJ][^EHIZ*:F6XK/A"Vl"<ICMRa%Chp,K
+Vkg,^T9u"4P`X5@Vg3fQqigT6rK6l:q2t]?rKI8G!1!MKs-EkUR@0M4rgWhUs-rtU+..\3H\6s)
+?<j>%TqS-NT:245PELraM2I%CKoqIYOo:@COckn*^&PYK\$iZ%H\.6<rf.&AOcfR)s-*DErfR2C
+rf[JLQ'IZ$rg3YPrL!_RQBqN:!1*SM!goCDq3h;Org3\RrgEhTrgNeTs-a+ZR$X/,R/36MRK/iU
+RK/cTR/WNHRK/cRRfAfUR/E9PQC!s8R/`NPQ3!88rKRMMQ'ISur0I8I!1<_Os-E\Ms-3MHrfR>F
+P*5g,#a1=5Q'IStPa)-3p6PT@s-EMJs-EYL!1<SM"IbgLSXobPs.KCcqP*tar1s@hs.fXkrhf^n
+rMK4bm&9i]rM]XnrMfn!WqWRkXT#@$Y5b[AWh+`fGBJ"dLO+0;^P@5cLf9XC>$e56pON$ip43*k
+s*jlos*XinrHeKh$[?m]m-a?2naZ2Ao`"Lgo^h_Jp@e:ZSGsVBWiF(5R$aY=Q^j_7Q&^p!VQRA8
+]th"ZYd(@6Xo>L!XoF>bNfT9bP*D5tR$jG5SXuIIU84T^Vl?\sXfen4ZEpsI\%0)^]Y;.r_Sa@3
+a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0i
+qYU0hr;HTbrdk*#s1//[~>
+JcC<$OoP%Pr;HWmqtpEirqZNf!r)E^rq6<`!;$3\!V,[Ymmlg5m-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,e^W'rdEp1ac-+;PaN)<>`59C,^V7Co]=GJ][^EHIZ*:F6XK/A"Vl'H$s'Pe4&mp3;
+I!U'\F`MJ@Detu<Jo#FQqg@^VrI"QjpNljdpj<BrIXZcrJ:N3&K)U?$J008iIXQZT?sR5NA5Q-L
+H[0m\G'A"KE,TQ.BkV-kARtdW!H)cRC_CT&DiTj=O,f-VMMd42D0'uLHi/9iHN8HlIJ/-aIfP#u
+Jc(#uJc:2tJc10#Jc:9#KE$N'Jb=WpJcC?%KE$W&KE$T*K7a#Ps+:9%s+('!rdaot!e>iPrdk$"
+!.k*#s+13%!J,k#Jc1,pIfFioIf=irIf"NoI!t^9s*FfpI=2!As*OrtIXZcqp4)merI=itrdXot
+!.jrts+:<)r.Y*(qM,',qhb<1qhkE3re^c8N/[Oir/CW7r/CQ5!06i6p5K!1rf6u=plGK<qiVk]
+P*1l]Ec5c/Bln</BRZ+X?sdY;G>:k.LPPVSpjr-hrI=irr-eTms*O]js*5&uGJ(W&^:q@t^qmk(
+_Z%Fg`5T^8aNW&]g"k]Nl0Rj.nac;Dp%7nUoD\=\o*P'\oCV\Jp%J+RrqI3'q"XUWp%@qHnF,i6
+mdK]:o_/+Yf`)uhR?*B%M1L54J:E0'IXcZgJqo8DNKKB`MMd4DK)LAuKE$m8NfT9bP*D5tR$jG5
+SXuIIU84T^Vl?\sXfen4ZEpsI\%0)^]Y;.r_Sa@3a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]
+k2tjkl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqYU0hr;HTbrdk*#s1//[~>
+JcC<$OoP%Pr;HWmqtpEirqZNf!r)E^rq6<`!;$3\!V,[Ymmlg5m-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,e^W'rdEp1ac-+;PaN)<>`59C,^V7Co]=GJ][^EHIZ*:F6XK/A"Vl'G]#=1^E6ps=)
+4T7JF4?>P&2[)lJ7nlfYqbd5er_`)]!)rYjo25Haqbd2fs&0jk/hSk61,UgR5Wq4m4?Pbg3BB/\
+2`EWO2)IAm3<;3&r]:0D:f%'as%Nbk8OGsE;H$Onr`&ntr)E\r#uji%<)cdo;H$Qo<V]Vn<W6#!
+<;9Di<;fbk;ufko<<#np<;]\h<;KVo<<#ku<)lrn;ufko<;f_q<;ont<;9Jl;ufkq<;]\m<:s5k
+<;]Z!<Dugq<)lrq<<#qu<;fbq;Z'Ji<!-&u<E/oqrDEbs;GpFlr_ibprD`bp!E<(m<;ohr<;TVo
+<;ont;ufqt<rZ8#=9;W/>4u+t=T;Ot=9)G"=T;P&=SQ#">$:c,s&oA(!*T8(r)rr$"'JZ$:]='"
+:I[cA5YEja1HR*V2`*No;YP_:JbFWmJ,auqIK+]pHi89jGlr;8C23``rb<`pC27R!Bk_<sCMRd,
+G'JIfLlIR_R%0b>T:hgIR[KP0QC!o'Qi<?TR@9V8Sc,2\Sg9krR$X)$OcGBXMMR+JNffTqTr+rt
+\%]c$bgG"og>(QCiSrnsjT"6iio/eNgtC6,d*9_Q_7d@dYcPF8>?P$:=&Dgp;Gp=h:f0q_;H$Rq
+=&i<#<<H,t:J^sdq+q$L>`Ol,P*2&pQC+)0S"6.CTq\?YVPgDnX0&P/Yd1UC[^WfY]=bkm^r"".
+`Q-'AbKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^r.U!quB_rV6Eg
+s8)Wirqu`no)=4?JcE:\J,~>
+JcC<$OoP"OrVc`nqtpBhs7uWgs7ZNerq6<`!;$3\>Oh4Pn*f]3m-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,eC;spdEp1abfe/NaN)<>`59C,^V7@n]",>Z[^<BHYct:4XK&7uVkp2aCM[d&Chd^#
+V50fWSc4oZO+!^kG'o)?PP(+;OnFh4OoCOCPQ-mIQ2[*KQN3HQRf8fTSGo#WRNdK<IY*-(L0^UO
+TVA$NT:MC;Q'@8eN/<=EL6@X\OHGZeOSt@@]aDB^\[K#VG_:s:O8b.AO-#Hcr0%)Drf[8Cs-!>E
+"I,1:QBqN:s-WbQ"IPOAQ^Ic="dkXCR$jB?RKo=NS!ob4R$mrB!1EhTr0meWR?s9=R/EBNRfAlU
+Rf/TRRJWESS!oi@RfAcUR/!$HR/`TSQi`V?QM?aFQN*<OR/E<LR/N?SQC!l$Pl6dIP*(q+OTL]0
+Pl?pMPa.Q#rg!5Dr0@8Ir0RGN!1*SK!LK2MR0B%KS"-%@rh'4`s.T@bs.fIerMBOis/,4^po"1l
+q5=@oW2]crri#mrql0Cks/Q."q5aIqriQ.%s0)I,(TEXLH['RZQ@X:BTpMNkL5Jls=^#.4Z2T:L
+Jbt&pJbaiqJ,auqIK+]pHiA?kH2m@5nH/:Qo`"Lhp@\+Pp@n@ZrgWp.jn#OQX/hnZTq@^>U77C2
+O-ciIZa@6X]X+oKYH%Q(poRYWNK0'^P*;/rQ^F52S=Z=FTqeE[Vl6VqXKA\1Z*UgF[^`l[]Y2(p
+_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)JiT&tZk2tjjl07L!m-O--n*fc9rpg*]o`"O`pAamd
+q#C0hqY^6hr;HTcrdk*#s1//[~>
+JcC<$OoP"OrVc`nqtpBhs7uWgs7ZNerq6<`!;$3\Ab#9Zn*f]3m-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,eC;spdEp1abfe/NaN)<>`59C,^V7@n]",>Z[^<BHYct:4XK&7uVkp2a?XI,G?X@&E
+H[0gYF`DD?Ch%j>Bl8+hI-u@XI/SEeHN/?eI/eU!IXcitJ:W=NJcC6@IsuiV@:!ANA7SM`I!9j[
+G]n4MEH,l3C2%<mAn:jWs)&$XCi+*/DN=^W$&je"MMI()Ed<'3Hi/9jHiJKlIJ\HpI=?YBIfP#s
+Ifb.OJbsrtJc1-!Jc:6(K7\]-K)C9#Jc^RVKD:$!JV*iQ!/1<'re(?*JqEuQrIXotrdY$#K(sog
+K)'s!J:W7HIKP(KIt.EGs*srqs*aors*aZi"FYZEI!kj?s*OuuIXZcqIeS<nIXQYBIf=isJGt*#
+J:IQK!.jrts+:<)r.Y*(r.k<.qhY<1rep`4qMYB4pl#-1r/LW5pl595rf-Z2rf-l:s,[,?!0R8B
+rfR&?rKA%VJ8oICBPi'5Ble`IG?8<j7<_L$:ksi*JGFcnK)'unJGt&uIf+WoI/eQmHN/6s^;%Fu
+^qmk(_o)Jls2G#Y)9^@SfA#3DkN_F%nFH/Ao_%kKoCMPEo(2GNoDeI_p&F^cp\agdpCR&ko^hVB
+n*f]4nF?)@pA+X;ruA2TOcYZcKn+u3J:E9(I=$3fL5LtNO-5T`Mhm2eK_U1%N/`jYOckonQ'[l,
+S"-(ATV8-VV5L8lWiW>+Yd(OA[C3TU]=bhl^VRe*`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_V
+jQ>Ufkiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcE:\J,~>
+JcC<$OoP"OrVc`nqtpBhs7uWgs7ZNerq6<`!;$3\Ab#9Zn*f]3m-O''l07Epk2tddj5].Xi8<DI
+h:pZ;g"4j,eC;spdEp1abfe/NaN)<>`59C,^V7@n]",>Z[^<BHYct:4XK&7uVkp2a6:4.06:4./
+4Ztti4$#>[3&Eli9i4a^;>j>k;<1XE;>sJi;>X6%0eb150ekF@69mb!4Zkkjr](KK3ArfS2Dd6O
+3B9&Z4$#G$3ri(U9F4Ec91_63:Jt(ir_rSkr`/nrs&0,";cHas<)``p!``3!rDiku!EE+t;ZKeq
+;uK\p;Z]ou<;ol(<*!%!<)lmt<)iiqrD`_op/Lohpf%5lr_rktpJh#g!*&Pis&B"srD`ep!`N)u
+r`&qtrDihrqc3Vor_rktrDW_q!)r\mrDW_o!)rhqr)El!;c?[qr)<Plr_r_mrDW\p"&i0!<W5tt
+;uBVm;ts>k<W?%u<rQ/#=T2J'>4u+k=9DW,=BGE&rE0,&o3))s$X$Y:=]ed/=^#!5>5MJ&>5_Y-
+=Ahmir_3r!77K=(5Vt&K3\*WY1HAE2rdafqqh"Wpq1/Hos*jlos*Xinrd+TirG)CJr+l:HrbE![
+E-$5MJ;&l@P*VN+St>qR#+V-MR$X/*rKf7+R@9S6SXlCGT:VUFSXPq3P`_&eMi*@HLl7:UPaS2@
+XKf7J_T0mIe_&R1hVdAPj8S->j"03Khqd)?e^Mjga2Ga)\$E3<W2-+jBN\G?=]J<u;H$Ik:f'q_
+;H$Oq<`N6#<rZ.s;#!ggN/`jYOckonQ'[l,S"-(ATV8-VV5L8lWiW>+Yd(OA[C3TU]=bhl^VRe*
+`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ>Ufkiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNh
+rqcQirVZWmoDX=@JcE:\J,~>
+JcC<$OoP"OrVc]mr;6Kis7uWgs7ZNerUg3`oD\;YnaQ&:n*]T0m-Es$l0.<mk2k[aj5T%Uhqm2F
+gY1B6f@SU'eC)alcd'h[bK@rJa2Q$8_SO%&^:_(h\[])U['R'BYHG".Wi;nnV50iZTPSHDC(G*!
+EhSqiQB[YRSBZ)!Js#ekp6,E;o8rj3rK@,C!gJt8rg*SN"IPUGR@=)Drg`tW".G'tI/\a=LL";c
+U7e-PSXl4<Q'%/gN/37DKohF[P*(ohOd#d-rOilW]",5'[!I@_OH>NaNfK0]OH>V&P5gaGP5^UD
+P5LLHPa.Q#Qi<BNRK&ZRQNNVCR$mr@s-`kTs-j"WrL3eUrgEeTs-WkUq3qGSR$[f>qj@GQrgO(]
+S"#k8RJrQTR@9WDRf&ZMRfAc\R$X/*Q^F/,rg3bTR$di?".5FAQMm'OQBd`$QN!6NRK&ZRQi!0M
+QiEE_QBd`"PEV/lP*;#jP*;./Q2d-QQ'R`$Q1pUBQ2[*KQNW\BR$a6>Q2d-MR/NHPRfAi]S=Q4B
+T:_eTU&:YaU]%"aV#[CeVZ<[oVu!@kVuEUpWV`XlWVidoWUd%iX/c0"rN,muriZ:)rid6EVi,tK
+G'&>*I!C[VMigq;O]\#R<aMo2rIO?frIOfqs*t#srI+]ns*O`k#C5n4o_%qPp\sjhp\=R]rKdI'
+];hmNTpD1GS!]qGR?ikpUoLW-\%f_cYd(I8YPt^"X^6pENK90`P*D5tR$jD4SXuIIU8+N]Vl?\s
+Xfek3ZEpsI\%0)^]Y;.r_Sa=2a2lBGbg"GZdF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60
+n*ol;o()DEo`"Lbp@n=[q#C0iqYU0hr;?Nbrdk*#s185\~>
+JcC<$OoP"OrVc]mr;6Kis7uWgs7ZNerUg3`oD\;YnaQ&:n*]T0m-Es$l0.<mk2k[aj5T%Uhqm2F
+gY1B6f@SU'eC)alcd'h[bK@rJa2Q$8_SO%&^:_(h\[])U['R'BYHG".Wi;nnV50iZTO2()?N4@@
+G&q_DDf8g(R:^;VHhVpWHhr-eHhVjdHhi'hIK+`tIt3(HJcC60IqE(p@U`k[;,MdfG^'.0s)TE)
+Ci!m%B4badD/O91D/O6.D/X?1NfK0]Nf8jQCPQ_FG^Oo;Hi/6kHiAElIJSEmIK+coJ,b&tJ,+Wo
+JcC9"JcC?$K)gN!KE$Q%K)gN&KE$N'KDpJtK*[-aKnG#0Jq8OQJcC<&JV*iOs*t0%JqEfLs+16'
+r.=s$!eQ&Von!-ms*jlqnp^Rf"b(lJI!pGAHi\YErd4ouIXQWlI!u!C!e5ZJpOE3ls*Xlrr-ncu
+JUm`Nrdb!!rIXp!!/1<)r.b-)reUH.re^]6regQ1rJ^Z4rJ^T4rJ^N2rf6u;q2G93rJpl<rfHu=
+r0$l>(mL#*E,KH)EI_k=E.r:N77:ucGYLn/LkbkZm=P:fqLJTqrdOfos*Xinrd#T1_84"*_o0L4
+`Q#s=ai_oVe_8j=k3;7"n+#u?oD\@`oCDMPncSLSoCMtRs7HHep\4R[s7[)up%7hEn*f]3mI0Q7
+oCi"Xec-`is7)P>O.qD[Jr,#.L4t2/H?k1#N/s!^P)YBWLkUK\K_U1+Mi<XVOHG]jQ'Rf*R[]k>
+T:r!SUo(&hWiN8)YHY==[C3QT]">Vh^VI_(`5Td<aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5Od
+kNV6rlg4!*mdKW6naZ2@oCV\So`Fj]p\jmeq>^<gqu6NkrU^#>s+13]s*t~>
+JcC<$OoP"OrVc]mr;6Kis7uWgs7ZNerUg3`oD\;lnaQ&:n*]T0m-Es$l0.<mk2k[aj5T%Uhqm2F
+gY1B6f@SU'eC)alcd'h[bK@rJa2Q$8_SO%&^:_(h\[])U['R'BYHG".Wi;nnV50iZTLD176ps@.
+6TdCk3AriR5>=gH:K.!bs%r\ljAPGDr_iSis&(=D;DBmZ0JG4;2)RW`4Zkhg4ZPSa3''&Y2`3EK
+3]]8\3BK;`4$5Ve:JUm_s%<Sh2*ju9;,gNn;u'Dk<W,l&;H$Ln<)lmr;uTbn<W?,"<W,kq<;ohq
+<;f_s<)lor<W?,$<E/osrDWYorDWMkq,IZ!;c?Xq<)lor;u]hs<VTMp;c6Nm;Zp*$<`N2n<W,ns
+;u]_q<;KVj<;ont;ufkr<<#tt;uT_r;ts>i;uK\l<W?"u<W,l";c6Om;Z9Vo;Yj>k<;fhs<<#no
+<;fbj<;TYr<`f9&r`T2'rE9/(!*Stsr)`btkue-m=]eg1rEK;*rE9,'s'$FG>?b?7;,9q]9MA/M
+6odRt2(Bt701IoX3E8uUJaJ'fJbjosJ,XoqIK+]pHiA<kH2VLYD#S2_C27U$Ci499H%(@$N0'9j
+R[p&LT*([SR[F)@s-EYNs-O%ZS"#q>StM_TSkbfDQ^3htNf8jQLkgeENf]KnTV\`p\@oc"bg=nm
+g"bHBiSrnZjQ,@]io&\Kg=Oj%cHF5E^:CYVXf81lTUhOgSR,H%?rg0(;cHXl;Z9H$:/Y%k<EE7&
+<E<*t;,@0fpeP4SN/`m[OckroQC+)/S"6.CTq\<XVPgDnX0&P.Yd1UC[^WfY]=bkm^r""-`Q-'A
+bKS5VcdC1ieCE1&g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)Wi
+rqu]moDX=@JcE=]J,~>
+JcC<$OT4qOrVc]mr;6Kis7uWgs7ZNerUg3`oD\;YnaQ&:n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"%]tCtf\[T#TZa6p@YH=n,Wi2hmUnaZXT:VVQCCY9&
+EcQ&dQBm\]ZCuPmMY*,-P5g[8OSk7<P5UUEPQI,9QN!3SR$jD2R[X5Frg`tW(P7-aJqSe_?)FEj
+Tq@sKR[KD)OcGE[M#N)8PE:ojOcY]hPEM+-]a29_]!eZcH$kGHOT1@BNfX.#!0R5Crfd>DrK@/D
+s-3PK!LB)NR/WNQQi`VAR/NHQR/`TRRe`EWR[KS4R[KWCRfJuVRfJlTR/WNPRfAieSXc4>S!ob4
+R$jD3S"#lAS,A]]S!ob5Q^=#'QC%Q;pmM/L!LB#JQN*9RR$X/,rgEeRs-`kR"dt^DR$a6>Q4T=G
+PEM)mP*(omPa.Q#Q'I[4Q1pUEQ2R$JQi*3NQi<<NQN<JAqjRPS!1a%Zs.B7_!29@crhKCeqP=1h
+oV_J_rMK[pVt[.hWV`[qX6lneX8K(!XoGO(Xo,@"YT'mSZ_<2'H#n%iQ[X1_dtWcV<0ULQ=]\s3
+Y-7hVmXtIirIOlsrdXrsrI+]n!.4]k!ql<^rqHZkq"X[]rKR=)q!>)__k`onURdgGVkB?>P+8PT
+['[Q`\[&NGYH4q1Y4o'uN)kt"OHPflQ'[l+S"-%@TV8*UV5L5jWiW>*Yd(O@[C3TU]"G_k^VRe)
+`Q$!?b0/#ScHsteeC<($f\,!5h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nc&(\oCV\So`Fj]p\jme
+q>^<gqu6NlrUTr=s+13^s*t~>
+JcC<$OT4qOrVc]mr;6Kis7uWgs7ZNerUg3`oD\;]naQ&:n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"%]tCtf\[T#TZa6p@YH=n,Wi2hmUnaZXT:VTZ?!^k:
+?OC+ZDf9K)Kmd`TGP$:RHhr-cHN8BkHi/3iHh_snI=?WpIt3*#rIP!!,%4kb@:WkD:ORP7G^"=R
+F)l2<Chmg#B4POaDf0H2D/F0-rbqgss,RGGMi*CAR;-bdrI"Qjq0`0i!e,QGrI4`ordP!"It.HJ
+rdX`orIG$#JV!fPm=PClrdt0&s+:-#rIbl=KS4u1JqAQ)J:N3&JV&K)JqAQ)r.=itrdk-&qh"g"
+s+9rqrdP'"IsulspO<-lrdOls!e>cLr-eQl%"3SQI!g?jIXQWlI!tm@pO<0lrdF]o!.b$!s+(*"
+rdt$""GDD[KS9>Yr.b-)reUB,!/gK.!0$`3rf$]5!K<$:Mu\k9N;&>/N;\b8Nr"e:OSk7=P4t1>
+Po,@&E,KE(GCF=AL8f',6:>cbGYLn09ne<#K'n9iK)L8uJGt&uIf4]pHiSNmH32"&`VmgVa;)h>
+cI(+mgu7AZlg=02o(2JFp%@tKqss[V!qc0Zrq?Hgq>L*gpCR&ko^_M@n*]T1n*ol=pA+X<s8W'D
+qtBRM^:TPjSr/8RLOt).LOt#(H%Up2NfK9bNJrdOLkCD7K_L-!N)kt"OHPflQ'[l+S"-%@TV8*U
+V5L5jWiW>*Yd(O@[C3TU]"G_k^VRe)`Q$!?b0/#ScHsteeC<($f\,!5h;-rGi8N_VjQ5Oekiq?s
+lg4!*mdKW6nc&(\oCV\So`Fj]p\jmeq>^<gqu6NlrUTr=s+13^s*t~>
+JcC<$OT4qOrVc]mr;6Kis7uWgs7ZNerUg3`oD\;YnaQ&:n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"%]tCtf\[T#TZa6p@YH=n,Wi2hmUnaZXT:VVQ6k)LO
+6UF+%3&`fY5t4XFmSW@L!)r\kn59-^qb\,,;,K##/hf%92DdZb4Zkhg4?P\c3]d7!)`BQ12*3fY
+3]fDa3]fGd;,0eY92&#O3(6V@;>jJm;u9Pk<W5r$;c6Om<)iiqr`&bps&T/"!*&qrrD`eqr`&kq
+"B8B$<)iiss&T"s!*&qrrD`bppf.&h##nN"<)lmtqc!Gnq,@An;Z0Mp<)rispJq2lr)3Ys<)ros
+s&K%sr)EVp!`W)tr`'#!;cEZps&8_mqc!JnpJq,js&/eos&/_ms&8tsr`&hrs&Akos&AqqpJ_,m
+rDrr"!*K/%!*];'rE92(oiV,nr)ii!!*\_lr*';/>?b96qc`r&r`g:A;,9t]9MJ8O77'j52(9k4
+0LdrX3B0i4rdsQjrIY!!r.+crs*jops*Ofnrd+Q['l@c&CM[g(DK0fDH\$p0OHc'!S=Z>OT*1[R
+R[BH>QN!9OR0/nJSY#hQrgk@(R?s2%OcGBXM2-h@MN*^]R\-CVZ+%EaaNW#]f\,':i8N\ojT"6o
+io&\Kg=Fa!c,di<]XP5NX/D_dSsu+2Nf@^g>$#'4<)HRl<)?Ih;,L%b;H6^u<W6#'=&i3r;,C*`
+:]HASNfT9bPE_?!R$jG6SXuLJU84W`Vl?\tXfen5Za7'J\@K2`]t_=u_Sa@4aN2NIbg+M\dF-Oo
+f%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqYU0hr;HTbrdk*#
+s1A;]~>
+JcC<$OT4qOrVc]mqtpEis7uWgs7cQerq0RhoCMPDnaZ,;n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"$]tCtf\@8oSZa-j?Y-"e*Wi2hlUnaWWT:VRBRVm+c
+ErBk\D/>NeF*iP&nrrj3s,lo7rfQu=rfdAHs-<VMs-E_QrgEeTrgWnW'Usl/ItWN1?s]_-T:hmO
+Ssu49Q]h?."c8"gL67SqOoCOEP5W'#]XtbaB=`56Ll_Iqrf?u=!0R8Drf[DHOcfU*s-*GHs-3VN
+Qi3<NRJWBLR08nFR@9T=RfStGrL3bU".G^LSGo#XRf8]PRJiQ\S=Q4@S=?":R@4#BopbrL#+M'M
+R@'A.rg*SNs-WJI!1<\N!1<bP!1EhQ!1<PL&t##QR$j;-QBmf$P`h5oP*D2rqNh&ErK[GMp6P]E
+r0[JMs-NkSR$mi?!LoVYSc>;[T`:_aUAgqdV"geYVZNfrWV`UpVl'EjqksLori#jrrMogso;_hi
+rMfjurN-%$qQBh$s0*TMZEpmE[&fpPH?aU]Y`*sRUW@M_AlVi4R9E^"=KeplKDgE$Jc(&uJ,aur
+IK+ZrH[:#9q#^EirK$spZ`L1.TpDFGR\$IUSsb_)VQI,2\AGqcrilR.YHG&%X](1<O,oEdPEhH#
+R$sM7StD^MUSOcbW2co#Xfnt7Za@0M\[f>b^;%J#_o0O7aN;WKc-FY_dF6Uqf%8R.g>(N@hr*JQ
+j5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<b!;HHes7uZjr;6HjrVc?eJcC<$]DmB~>
+JcC<$OT4qOrVc]mqtpEis7uWgs7cQerq0LfoCMPDnaZ,;n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"$]tCtf\@8oSZa-j?Y-"e*Wi2hlUnaWWT:VRBRUBP$
+?iOF9>BQWNDK>8poR$I_o6^F^rd4Ef"FY`JIt.HJrIGr!@:*MTA5Q0NI<Tp\GBJ"KE,f`1CM@Hm
+A7]XrrG;OPrGV^rs,RJHN/NQkMJ7$RHi/9jHhr-gI/n`qIK+cqI/n`qJ,4ZtIt3'#qgeNos+9ip
+!.t-$s+CK,JqJ^TK)1,rK`?Z1Jq8H&JV&K)Jc(*"Jbt&uJH^XVJqAW-qh"j#!.slps+(-!rI+`p
+pjW*i!e>cMrdOips*b3$IXZ]nI!pJCIJJ?bJ,aosIf4coJc:3!JcC?!KDgH(KnfS\r.b0*s+pH,
+s,-9'rf$f8!K<$;Mueosr/L]7s,@#=qMkN6qMkK7s,[2?rJpr?rK7#@plk`BrKS7]LimWPCMeuP
+CM86h@?jYY7n\)%9MnQ>L$40fK)U?!JH(-!If4]pHlm]]HH4(IaiV]Kc-Xqjg>:oRlg=-1o(2JF
+o_%kJo(2eMrUU9dp%A%Qp\=R^p_*>pp@\(KnF5o6m-O0/nFH;Jqq(irrVQE_nET/qqs0H.O,o!G
+Lk^M4M2$V4I!^R(NK9-`Oc53ULkUJ6K_C$sN/`mZOckonQC!u-S"-(BTqS6WVPgAmX0&M-Yd1UB
+[^WfX]=bkm^r""-`Q-'AbKJ/UcdC.heCE.%f\5'7h;7&IiSrnXjlY^gkiqBum-O--rpL'\nac8B
+oCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcE@^J,~>
+JcC<$OT4qOrVc]mqtpEis7uWgs7cQerq0IeoCMPDnaZ,;n*]T0m-Es$l0.<mk2k[aj5T"Thqm2E
+gY1B6f@SR&eC)akcd'eZbK@oI`l5m6_SO"$]tCtf\@8oSZa-j?Y-"e*Wi2hlUnaWWT:VRBRRI-B
+$UI-I6pWaq<_Z@d;!h-L;Z9Vj;XdQ^;Ys<5;DBgX0ekFB1daMm4Zkef4ZYSa3&roV2Dm<J3]]8]
+qE#-_:J=GT9h\206:t*S;uBVo;u9Pk<W5r";c6Llr`&nrs&Ahps&T/"!*&qrr)<\q<;]Yu<)lmr
+<)icq!*&ns!`W)srD`bpp/Llg#ZO`%<E3!s;H!Hl"B8B#<)`]o!`N&tr)<Spr`8hpqc*So"]\K"
+<)cls;u]hq;ZKen<W5tr<V]So<Vobn;u0Ji<W,no;uT\m;uTbr;?0Yo<<#r"<)Z`p;ZB_p;uBVl
+<W,tt=8H%u<rcA#=o__!=T)>!=Su>$>4Yns=T)A&>5_\)>QA"&>5qh*>lRt,:DHPq9i=DL76sd3
+9I_GC0Le#Z3B0i4k_&hcrdjuts*t&trI+]n"abQADJa4hD%1B&FE`%[KSkeRQC+27rh'CdSt)7:
+rg*YOQ2[*VR$jA2S"#t?T:c(R,FY!dP`h)eMi*@GKnbGCO-5p&UoLZ-]Yhe5cd^S#gYLcFiVVXa
+iSWJGf[\BpbK%H4\@&QBWMH5[S=5_*MhZe2Uki/T=B8F#<`E's;,R<h!_lTmr`'8+=B/C%;Gg:f
+;"d[`N/`mZOckonQC!u-S"-(BTqS6WVPgAmX0&M-Yd1UB[^WfX]=bkm^r""-`Q-'AbKJ/UcdC.h
+eCE.%f\5'7h;7&IiSrnXjlY^gkiqBum-O--rpL'\nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@
+JcE@^J,~>
+JcC<$OT4qOr;HWmqtpEirqZQgs7cQerq-ZkoCMPDnaZ,;n*]TBlqZm3l07Eok2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK@oI`l5m5_SEq#]tCqe\@/iQZa-g>Y-"b)WMcYjUnXQUSt;IAR@'=]
+E;aYYD1oa(H%1bOPk1+6P5^U8OS4k9P6I29Q'R`&rKo1)R[T_7S"-"+KS+o.L50*-VP0]VT:haD
+R$EhrO,f$RL5(kRPED&lOd)&nP5W'"]XtbcI("-EL&R/2O8t@=OT1ICP5gaFOoUXBOoUaEQ2d-M
+Qi<BNRJiNJRK&`PS,\rWS,JfTS,\o]S",t:R@9QCR/EBORK/iUSc>5[S,SiXS!of<S,A`TRK&WQ
+QN*<OR.QdIR$mc;rg3VOrg<bTrg=+[R$a;0R$X,)Q'M<3!gJt8r0@DNQBqH6rg*PMpm1lFqj@DM
+s-WeR#b%6OR[]e8S"9PMrLj1arhBCer1s+a!2fFes/5psri#gos/,[kri#jrri#jrri5ptoW%ni
+ri6"!rN-%$ql]n$ricF.ZMq61[2Gp1I<p'ZP.--kOeJ2"EHkG^=IWGs?WaP:rIa]ppOiHsrdk#u
+s*t&trI+]n!.4_Bs82lrNW1'=X/jU?R@U@KU8k8iR[')/X08q>_8*C_Z*LR7Ycd]%=Gr,tO-#Ke
+Pa.Q%R@9V9StD^NUnsrdWN*&%Y->1:ZaI6O\[oGe^;%M$_o9X9aND]McHaeadaZdtf@\d1gYCWA
+i8ESSj5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjrVc<dJcC<$]`3K~>
+JcC<$OT4qOr;HWmqtpEirqZQgs7cQerq-ZkoCMPDnaZ,;n*]TBlqHa1l07Eok2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK@oI`l5m5_SEq#]tCqe\@/iQZa-g>Y-"b)WMcYjUnXQUSt;IAR@'?>
+?iF@8C6+!_E-M;.o6g.VrI"0_s*FQhq0`3j,(>#kJ:E*#JS&D$@q9+];0[M6H?XOUF`VSADJX*(
+B4kacrbh[OrGV^rs,RPJNJi[!L1kLIH?sr9HiSNhI/\NoIf=a(I!pHmI=6TqJ:E'!JbjosJc1,q
+Jc:8uK)gT%KDpK$K*?p\K7\`.rdt!!q1Sd#s+1<'JqEuQoRd!l"G28XJV!cO!/(9&qLSTs!J,e#
+J,XluI=?YDJ,auoIfb.MJ+nEkIK"]qIK"ZqJ,FchJ,XoqIfk4PJ:RWMs+(-#rdkE.KS+o1KS+r3
+qhG-+reCE-reUN0!/g`3rJLN2s,@#;qhtE3s,Hf4r/L]7s,I&=p5Ss0!0@)=rf@)@r/pr@plk`B
+qir%ZJT#ICC3tqZC3"fKC0Xq37S7o#9MnQ>LAcbrK_L,uK)U?"JH(-!If4]pHl7:SbKS5UdF-V!
+h;[S^mI0T9oCMVHp%J%LqXXXWs7H?a"SVTaq"aj_'DM4op%.bDn*]T0m-a?3o(MkUrnIJQrr;mF
+qY0RJl/U^Wf]0oAOH?>qJV/i3L5:S<J:2`rLl77RP*1f_MM[+@L4o8Q=Gr,tO-#KePa.Q%R@9V9
+StD^NUnsrdWN*&%Y->1:ZaI6O\[oGe^;%M$_o9X9aND]McHaeadaZdtf@\d1gYCWAi8ESSj5f=a
+kNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjrVc<dJcC<$]`3K~>
+JcC<$OT4qOr;HWmqtpEirqZQgs7cQerq-ZkoCMPDnaZ,;n*]TBlriZ>l07Eok2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK@oI`l5m5_SEq#]tCqe\@/iQZa-g>Y-"b)WMcYjUnXQUSt;IAR@'=.
+6:4+.6U<e'8PDrXr_W#[n5B-^r)2u\r_iYk)DO!$0JP:;2*jJm4?P\h4ZPP`3'&uW2Dm<Jr]1$>
+qE+^Q$;F2e9hS,.5Yb0Ur_r_o!)rboqc3Vps&8np!)rkrs&/nsq,RGqs&B"sq,IAm!)ieps&B"s
+s&Attr`&hr"&r2u<;]Yq<)`Zn!E2tm<<-"t<W?"t;Z'Gr<)Z^n;uTbr;uT`#;c6Ll<)lrs<r,hq
+;ufqs<!$&u;uTbq;ZKep;u]ks<;onr<!$'!<Us,e;u0Jn<W?%s<W5to;u]bn;[??&;c6Om;H$Qo
+<W?#$;c6Ll<;fbn<<#qu<r>ts<rQ1u=T);%=BYT+!*T2$r`T5&s&],#r)s#&oND,pr`T5(rEK;,
+!*f2$s',J-r`^7C;GL"]:/FhX763b$1,:C00/,jS1HINn;>l.=K_L,uK)U?"JH(-!If4]pHiSNm
+D@LN'FE`"XJr#AKQC+/5r1F1aS!o_2r0@_WR$a;1R[]h<StDYSSg9kqR$Nu!O,]$RLk^V<M2[LY
+R@^4RYdV-Z`QHNVf@o!8hr*Jji[NgAh:gK1ccjGJ^UgkYY,\@mT:DC<P`L]TIscK`IqN+k>%(H1
+<)lmrr_a>);+seb<E3($=&i7$<Dual;"d[eMi<XVOHG]jQ'Rf*R[]k>T:r!TV5C/iWiW>*Yd(L?
+[C3TU]"G_j^VRe)`Q#s>b0/#ScHsteeC<($f\,!5gtgiFi8N_VjQ5Oekiq?slg4!*mdKW6nc&(\
+oCV\So`Fj]p\jmeq>^<gqu6NlrUTr=s+13_s*t~>
+JcC<$OT4nNrVc]mr;6Kis7uWg!r)E^rq6<`!;$3\@I`jUn*]W2m-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK7iG`l5m5_SEq#]Y(hd\@/fPZa$a<Xf\Y(WMcVhUnXQUSt2@?R@';*
+P\t>UD/OZbG'nr?Pk(%5P5g[;OT1I:P5UUEPQ[8;QC!s;R/`TRRfAikKn4]+Kn`o?V50`VT:MUD
+R?s,$O8b(FLPCSHOckomOcu%/PPr2p]EYp(Q@!n0OSt76OT(CBP5gaAOoU^DQ2R!KR/<9QR$j?<
+RJ`NNRfSqGrgWnUs-s"V#b.?RR@'D1R$dc=s-`tXSG\rXSGeoWSFW-MR[a;F!h#FCrg*SNs-WhS
+!1NeQ&=T)WR[KV6S!oe6R@9P2R$[c=rgEeT!1EhRrL!kVQBmf$P`u'2pm1oErKdGM!13GGs-NYN
+!1EhRs-`kTr1!_Ts.01]!hZ-Yrh9=crhKFfq5+(frhfappo""f!2ognr29Omri#mrrMfaqri>[k
+s/H!ts/Z.#s/l(!s/ua5Z*LX?Za@*I[JdNPWfMRRG'K[gJ9d6YNM;>-JlGjC=^#-7Xg##,K_L2s
+K_g?#K)^E#JH(-!If4ZrI!bgLruUmmXg>:.StDmNTVo#mU7@L7WNNS7]Y_7dZEga;YOnssN)kt"
+OHPflQ'[l+S"-(ATV8-VV5L8lWiW>+Yd(OA[^N]V]=bhl^r!t,`Q$!@b0/&TcdC.heCE.%f\5'7
+h;-uHi8WeWjQ>Ufkiq?sm-O--mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcEC_J,~>
+JcC<$OT4nNrVc]mr;6Kis7uWg!r)E^rq6<`!;$3\@e&sVn*]W2m-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK7iG`l5m5_SEq#]Y(hd\@/fPZa$a<Xf\Y(WMcVhUnXQUSt2@?R@';*
+P[@a'?!q>jBPqm=rHn*_oR$Oal?i>Ss*aorrdXru)Im2^A7]=K:jdS6G^":RFE)8<D/F$&Bk1dd
+rbVpYDf'E3Df9TTrf7;EN/D7kCM\(jH2r<kI/eQjHi\YCrdFfqs*aop$[mJPIXZftIsup!Jc:2s
+JHC@QJGOisK)UE&K`?])K`$K%K(sutK)(&sK`?])K`-Q&JcLAnJcUFSrdk'#s+(<)JUrE*rdt#u
+qLSp&J:N)tIt%BHrdarss+'urn9tLgIXZcrrdOfqrdacns*jut"bD2SJUrFPJcC?$KD^E&KE$Z&
+L&d#-L&d#-M#N81MZ/J2MZ/P5MunutN;SV5N;eh2N;\_9N;\b9Nqn\1NrP1<NrP.?OSt==P5:CB
+PkUF]N.#Y]C2/9WDJF3FEd).]B15F<9h\DZL4t?ZK_L2sK_g?#K)^E#JH(-!If4[-I!a/cdad"*
+i8s4jn*oo>o^qhUp&t'\oCDGNo)A7\oDnR`p&Oj`q#C*gp(6lfnaGo6mHj3-n+$#Cq"t'Fs"46J
+qt^$ZnE]8thV6W0cHF#+P*M2fLP(J8Jqo8=Kn4Z$LPq+POckcaMMm:Eo7R(%<fW6&P*;,qQ^F21
+S=Z=FTqeE[Vl6VqXKA\1Z*UgG[^`l[]Y2(q_SX71`lQ9EbK\>YdF$Fme^i@)g=k?<h;@/KioB([
+k2tjjl07L"m-X6/n*fc9rpg*]o`"O`pAamdq#C0hqY^6hr;HTcrdk*#s1JA^~>
+JcC<$OT4nNrVc]mr;6Kis7uWg!r)E^rq6<`!;$3\@I`jUn*]W2m-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@SR&e'cXjcd'eYbK7iG`l5m5_SEq#]Y(hd\@/fPZa$a<Xf\Y(WMcVhUnXQUSt2@?R@';*
+PX@f+5sRe,:/Fgb;".?N;ZB\q<<#no;XdQ_;Z0H41+t461,CdE5X.Cq4$#Pe4#o;_2`<QQ2)I-N
+48h5?3t4;64&8UF9MJ/Q0g83+qc!/eqc3Yq!)rho!)rkr!`Murr`';)<E3!t<E<+!<)`Tl!)rkp
+qGRAnr`/qs%olS.<E3!u<)Z[n;cH^p;uK\q;ZKeo<W?+u<<Q?%;c6Nh;[$#r;c?Xor`&nrs&'5'
+<)cju<E<.#<E)rs<W5qt<W5r"<E)mqrDWbqr_rkrr`&ntr_rhr"'&8u<;ohq<;fhl<;ohp<;ont
+<<#tu<;oo"<E)rn;ZK_p;uT_s<E/rrs&/krr`&tu;uTYp<;ohn<<#qu<r5ns<rQ1t=T);$=Su>'
+=]kN'q,mJrs'#"sr)iu%"Bo#5>$Lr1!*f8&oihK#;,@0c'MqRq76<k$2D-.7/20IM1HINn:f7.D
+pP&HsqLed!s+1-!s*t&trI#6)HZ4%LG^P'rMia3kS"?:Hrh9RiSt)7:Qi33MQi<@+R[]e:SXlCF
+StDUGS!fV.PE:f`M26q@KnbGCO-5p&V5gc-]>;J0cdUIugYL`DiV_[kiSWJGg"+Qrai2'-\$N9<
+Vk]oUS!TA%N/*%7H?XIMDJNus=BSg0<)Z[l;c6Ro;Gp:br)Eu'<`W4";Gg<`:]HASNfT9bPE_?!
+R$jG6St;UKUSO`aW2cl!Xfnt6Za@0L\@K5a]t_A"_SjF5aN;TJc-FY_dF6Uqf%8R.g>(N?hr*GP
+j5]4_k3(sml0@X%mI'E2n*olHncA@Srq6<bs7cNfs7uZjr;6HjrVc?eJcC<$]`3K~>
+JcC<$O8nhNrVc]mr;6Kis7uWgs7ZNerq6<`!;$3\!V,[Ymp,;Jm-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`l5j4_8*h!]Xtbc\$i]NZa$a<XfSS'W2HMgUS4BRSt):=R$X,(
+PEM&GCiYH<H%1qRPjjn3P5g[;O8tF9P5^[FPlI!KQN!3NR/WL"R[KV#JU`9(L1">bUS+<SSt2FA
+R$<eqNK8mOL5(hSOcblkPEc'1rOiNM]t(V5Tm_QRNr4t4OSt:AP5^XFOo(=APl6mHQ3!8:qj@GQ
+r0[YUR@9QBRerQUR[KWCRfJoRRfo7NR@'EAR/EBORK/iUSH,8\SHk[SS",t<S"0/@r0mYR!gf4=
+rg+@eR@0M4R@0P5R@0P7S"#k9S",t:RJiTRRK&ZRRJrZSR/iWRR0o=JQ^3r&Pa%K!Q2[*LQi!'K
+Q2R!OQ^F/,Qi!'MQ^3s:Qi<BKRJiTQS,\o]S=Q7DT:hkUU&UkeU]%"gV>d@lV>I.iVuN^kVZE`o
+rM]aos/,amrhomtW2TWnr2T^rrMfjuor8"mriH.%poaV"!O/j.ZN.B3[K!]7[iDo[UkX2?Fb.;f
+IX.!cM32@sLfL.@=^#-7Xg,(sL&H]$KE$Q'Jc1-!J,ausIK+\NruJPLX0SIeUS+-QZDXUnQ^=DI
+Z*_!Y^U1;N[BH^:or_VZN/`mZOckonQC+&.S"6.CTq\<XVPgDnX0&P/Yd1UC[^WfY]Y(tn_8=+/
+`Q-'AbKS5Vd*^:jeCE1&g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc9nac8BoCW%T!quB_rV6Eg
+s8)Wirqu]moDX=@JcEF`J,~>
+JcC<$O8nhNrVc]mr;6Kis7uWgs7ZNerq6<`!;$3\!V,[Ymp,;Jm-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`l5j4_8*h!]Xtbc\$i]NZa$a<XfSS'W2HMgUS4BRSt):=R$X,(
+PEM&7?"7l/CiF_!Hgc@SHi8?XHh_tII=?WpIXbp;?X[JU:f)OdH$FRVFEMYEDf'?,CM.9kASl=%
+D/O3/E,TZ6NfK0]Nf8jQEIVkJrHe9dr-\EjrdOfnrd>-&It)oqIXm!#J:R<D!J5n$K)L<%K`6W(
+K`$H&K(aisK)1-!KE?j\K`6T(K`$JjK)U?$K)U<(Jq8K*KDpK"Jbjs"JUi:JIft:QJ:N4KJGjs$
+J:E&tIt.BF!.XrrrdXrsrI4frrI=fss*t#srI=irs*k-$JUi=JK)L?#K`?Z,KS>/9pkAd(rJ:K1
+r/(K2qhkE3s,6r9rf$f6rf$c7pl#96N/[[orf6l8rJgl=rf6r<r/Lf=OT(CBOoU^COo^c2rKI2F
+!1*SKrK\@`Mfs#TBl]>[CMIjHE,ST]C.EVr:/"M[L55,LrIk$"s+:9%rIFots*jrqs*P7,gYUuS
+m-jK8oCV_Kr:^0_s7?9]s7?9_#kR]]p%J.Sq"aj_$2=/ep%.bDn*]TBlj)tInalJMqu5CN1B.4J
+q=s[Smcifkgt:0(c-")Fs43HuOHPEPLk^J8NeW:AI=?j+MiNj^Oc>6UM2$\<on6Y0N/`mZOckon
+QC+&.S"6.CTq\<XVPgDnX0&P/Yd1UC[^WfY]Y(tn_8=+/`Q-'AbKS5Vd*^:jeCE1&g"P39h;7&I
+iSrnYjlY^hl07L!m-O--n*fc9nac8BoCW%T!quB_rV6Egs8)Wirqu]moDX=@JcEF`J,~>
+JcC<$O8nhNrVc]mr;6Kis7uWgs7ZNerq6<`!;$3\!V,[Ymp,;Jm-O''l07Epk2k[aj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`l5j4_8*h!]Xtbc\$i]NZa$a<XfSS'W2HMgUS4BRSt):=R$X,(
+PEM%p5sdq19M\O^;"7EV;?0Sj;?0Yo;ufko;XdQ_;ZBTI0eb771,1^D6U*at4?G\h3]]8]3&`cS
+2Dm<P3]T2^3]fDa4?H>69MA)Q9h[Z?rDNJjs&8tsqGd>lr_reo$r^,);c?Rm<)lpt<)rWk"]\N%
+<)cfq;Ya5k<;ol$<)lpt;cN`r#uji$;c?Xo;GpHl<!6-!<)los<<-)!<W?)%<E)mrq,7>m;,[?k
+"&r9#<;oeq;Zg!"<E/rt"B8<!<)rlr"BAB!<)rWk!*/qrr_reqs&8qs!)rhq!``3"qG[GmrDWYo
+r`/ttr_j##<E<+"<)iiqrD`\nrDWbsr_rhp##eK$<`N*urDNbs;cEWoqc3Yqr`/qus&]5&r`9)%
+r`9/'=]tW*rE9&#!*T8&q-!`$qcNo&qH<_u#$G,6>?Y37r*05+qHEYur`gFK>?=Wr9h\;\77K[*
+76WU[1-7'W7Q<1b3E&dPm=kLlqLeg"s+1-!s*t&trdFfo(41O`M2mgeS"?:HU8"EWTq7dDR@'>,
+rg*nXR@0M4S=H.Arh'4^DOd/`QB[PnNJiXLL4t>:M2[O\R\-FVYdV0[`lcZXf@ep7hr!ANiSrhT
+i838Cf[S6i`koI"['6U0UnO?KQ^!\oMM?\1H$44HChdWqZ#X#N=]\X'<Dl^l<`)go:eaed<E<+$
+<`W4$<Dualoh\tQN/`mZOckonQC+&.S"6.CTq\<XVPgDnX0&P/Yd1UC[^WfY]Y(tn_8=+/`Q-'A
+bKS5Vd*^:jeCE1&g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc9nac8BoCW%T!quB_rV6Egs8)Wi
+rqu]moDX=@JcEF`J,~>
+JcC<$O8nhNrVc]mqtpEis7uWgs7ZNerq6<`!;$3\!V,[Ymp#5Im-O''l07Epk2tabj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`Poa3_8*h!]Xt_b\$i]NZE^X:XfSP%W2HJfUS4?QSt):=R$X)'
+PEM#gFFTg)I>7Q^nWWa2!0Qo8s,m#<rK@AKQ'IZ$rg*VPrg=gcK7ST+Knip%VP9`WTV.gER?s+u
+OH#0VLPCqTP*5^+!0mGqrk&BD^n#q+rJpf:q2kK9rfd2A!L&cIQ2[*KPlR3MRJiTRRJWHQRfJuX
+RfJuRRfo7NS",uIS,o+Jrg<bRrgEeT"IYaLS"0GJs.07^T(nfWS"-#FS,8ZSRJ`EOR/`TQRKK%L
+S!s8F".PgNS,8WTS!s2ArgN\Os-O"WQBd`$Q'M?7rg3DGs-NbQrg3PK!13\Ns-E_QrL!YSrL*VQ
+qO7VYSt;RIr1X.brhKIgs/#[ks.o^mqPO=lrhfgrVl0Nk!2odos/5jns/5^ls/Gdnri?(!ri?(!
+rN#ptri?(#riQ4'!3c@(r3$7-ZEppFrjDd7s0r$<!4i*?)lfB[HZjOkc&-gkXODQh:ksj)StfFl
+?<O83YO@5DL&H]&KE$Q&Jc:3"J,ausI>RtGo[U"HbG1W#Wh$2pWi)P]R[C+Y['[Tb\$NBGYcb13
+or_DTN/is\P*2&pQ^F21S"6.DTq\?ZVl6SpXKAY0Z*UgF[^`l[]Y2(q_8=.0`lQ6DbKS8Xd*^:k
+e^i@)g"P3:h;@/KioB([k2tjjl07L!m-O--n*fc9rpg*]o`"O`pAamdq#:*hqYU0hr;HTcrdk*#
+s1SG_~>
+JcC<$O8nhNrVc]mqtpEis7uWgs7ZNerq6<`!;$3\!V,[Ymp#5Im-O''l07Epk2tabj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`Poa3_8*h!]Xt_b\$i]NZE^X:XfSP%W2HJfUS4?QSt):=R$X)'
+PEM#g@;1%$DKbu*m<nPQrI!mWq0`3js*c,(@:3MSA7\S[I<g*^G^":OEc>o5D/3j"ARoXqD/O3.
+DuFYTNrP.FNfAsSPC%.fr-J9fs*F]lrd=TkrdFiqrd=Zm"b(rMI=?\DJG+QlK(josK_g<$K`$K&
+KE?dXK):0#K`$N(K_pE%KEHjYK7iNB#D%JYJV&K+KDpK&Jbjs"K7\^SJH16!IfP#qJbjm$JUi9#
+J:N.KIK4lrIf4`rIeeKlJGt&uIf4cqIfFm$J:W9'JqO#RrIas"",2JaL\Z](LB*/0M>W82M>`>1
+MZA_8MZA_6MZA_5NV/54NJrjVr/U]7s,R)>s,R,?s,d/>s,[5Crf[5Drf[;Fs-*MIrfmGJrg*SL
+r0I>K)ifSlDJO$6So\X\KWAd06Y:(%H$`7[;,2k%L$scoL&H]&KE$Q&Jc:3"J,ausI1,&tlgF95
+oC_eMp\4X[!ql3Xqt'gZ"SMK^p\4R[rq?Wjo^hS@n*^2A#jq'Lo(;\Pqu5CN2>m=Gp\".HlfR6a
+gXaj!bfRoC^q[t&WKEC>MM$P?Jr#>?L4k),JV]5EO-,QaN/NOLKnG$NKNO.kNfT9bP*D5uR$jG5
+SXuLJU84W`W2ZeuXfen5Za@-K\@K5a]t_A!_SjF5aN2NIbg+P]dF-Opf%8R-g=tH>hr*GPj5]4_
+k3(sml0@U$m-X60n*olHncA@Srq6<bs7cNfrqZTjqtpBjrVc?eJcC<$^&NT~>
+JcC<$O8nhNrVc]mqtpEis7uWgs7ZNerq6<`!;$3\!V,[Ymof)Gm-O''l07Epk2tabj5T%Uhqm2E
+gY1B6f@JL%e'cXjcd'eYbK7iG`Poa3_8*h!]Xt_b\$i]NZE^X:XfSP%W2HJfUS4?QSt):=R$X)'
+PEM#g6:"(8ohb6WpJUufqbmGmrD`eqr)2u\*)]Wg0eb::0JbRN5X.@m4$5Ve3]]5]2`EWR2)Y=n
+!BW@@3t4;J:JFMU9MJ2S8Pi8`r_iDfr)ESo!*&nq!E)kq<!#ur;tEri;cH`q<<-"t;ZK_j;u]hq
+<<-"t;Zg!!<E/rrs&9%u;H!3fqc3Ys!*/tsqG[Dlr_rhr"BAK'<E/oq!EE2!<!$&u;u'Am;tO&g
+<W,ns;uTbr;t*`d;uBMo;cN]qr`&nrs&9#"<W,ns;ZTitr`&hprDWet<;]Ys<)lq!qGdDl!*&bo
+s&9#!<rQ2#<WQ9(r`9)%r`B,%!*T2&rE0,&r`95)=]nj/qH<c#rE9,'s&o;(qcO/->?kB9>$G50
+>QS,5>Q.h$>Q7t-?2n4N?!1-':J=P\=@P_I6<H?0-o!e67R]9m3]U)8;=B8;L&H]&KE$Q&Jc:3"
+J,ausI0PIdP*VQ-U&C_mUnaWUSXZ(9R$[`<#+:pLS=Q4Brh'4^ELWD`Q'7;iMi!7FKnY8:MN*^^
+R\6OYYdM*Y`llc[f@o$:hr!ANio8qUi8*2Bf@/$d_nWdjZ)t"%U7Id@P`h)cLP(&%G]e"DCM@Hn
+@q0._Am&5G=&W!r;H-Um<)?Ii:0(@r<E3+$<``:!;,L-^:frX7NfT9bP*D5uR$jG5SXuLJU84W`
+W2ZeuXfen5Za@-K\@K5a]t_A!_SjF5aN2NIbg+P]dF-Opf%8R-g=tH>hr*GPj5]4_k3(sml0@U$
+m-X60n*olHncA@Srq6<bs7cNfrqZTjqtpBjrVc?eJcC<$^&NT~>
+JcC<$O8nhNr;HWmqtpEis7uWgs7cQerq-<aoD\:]naQPH?1.+Hm-Es$l0.<mk2bR_io/hQhVHuA
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYct:4XK&7tVkp2`TqJ!JS=>q6QBd\t
+OcYW5C34cQOd24.Pjjn5P5g[DO8t@:OT1I9P5^[FPQ7!IQ78/fR>Q`PItNE.?<sD(TVA-NT:;78
+Q][DiNf&^LP*2#lPEV8rPEV5urk8<D$+QD6H%M$9NK&tqO8=t8OTCW/r/q)EP5^XHPa.O3Q3!8;
+rg<bTrL<YP!h5XJrgWtXrgWtXrg`tWq4%GSr0mYRs-itW".GaNSGf#XScYOTSbnoXSXfGDs-ihQ
+rKmPOs-`hSrL<kWrga"Zs-s1^S"#lGRg,CPS=5k7Rf8`TRf]%JRf/WYS!fY2QBmg6QMd*KQN*9P
+R$R];rKmSOrg*MLs-WeRrL3\QrgNhU"e;'OSXlAOTDYD_UAgqfV#I4gVZ!FmW;`^pW;idqVuWap
+VZ3RmVu`fnrhoOi!3,ans/Z.!q5XLsrN#q!s/l:'riZ=)r3-.)"0o/=[/IE3\,X#=\feVr]">SS
+Q[X:&Gam?:HBP"qNd>M?NEDUC>$5-6X0/YlLAlo+K`$K%K)^E$JH(-!IfFhTruq@=s6HkoYGIka
+YFqquXJMbfS"$4VZa70[]X+lKZ`^C6or_VYN/WdXOckonQ'[l,S"-(BTV8-VVPgAmX0&M-Yd1UB
+[^WfX]=bkm^r""-`Q-'AbKJ/UcdC1ieCE1&g"P39h;7&IiSrnYjlY^gkiqBum-O--n*fc8nac8B
+oCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcEIaJ,~>
+JcC<$O8nhNr;HWmqtpEis7uWgs7cQerq-<aoD\:]naQPH?gd=Jm-Es$l0.<mk2bR_io/hQhVHuA
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYct:4XK&7tVkp2`TqJ!JS=>q6QBd\t
+OcYW,?ta@sH@1*eHg?(OHi8?XHhi'hI3<06@p`_V@o-!LH[0m\F`qhGE,f`3CMRTrASl:%Df'Fj
+E!p]HO,o<]Mi)V7CiTE!!.+Qird+Qjs*X]ls*jurrd=Wls*b*!IXZcrrdaruon)pj!ec8]qh+m$
+rIb-'"G;;XK7s2Uqh5$'r.Fs$s+Bop!/(0#rdk!!rdt9(JV!]Mre(0$#(_AWJ:W6&pjiU!JUi9%
+Jc(&uIfOrgIfk4NJ:RQI!.afns+(-#!eQ&WrIY$$rIb3(K`6]"LAlu,M#E2+MZ/P6N;nh9N;\\7
+N;S\,N;nn8NrP+:Nr+n5O8tF@P5^[HPEPm.!gJt7rg!5Ds-NYN(lj/eD/3s;Ui1!hIsc'@;abCo
+H$`7[:eq"Dl\>Cmre13%rdt0$rdb#us*jur"n;*Tp%J+Vp]'pep&=RboCV_To`+Uap&Oj`q#:!l
+p%7hEn*]TBlj3%JnalGKq>:0Is#BrQq"OIPna,N%i8!#9da-+X`l#X-]t:lJ\rr;?N.lkBKntVC
+KnY/0It``=NKB<bN/NRML4k<SKO0OpN/is]P*;/rQ^F52S=Z@GTqeE\Vl6VrXf\e2ZEppH\%0&]
+]Y;.r_Sa=2a2lBGbK\>YdF-Lne^rF+g=tE=hV[8MioB+]k2tjjl0@U$m-X60n*oi:o()DDo`"O`
+p&Ojcq#C0hqY^6hr;HTcrdk*#s1\M`~>
+JcC<$O8nhNr;HWmqtpEis7uWgs7cQerq-<aoD\:]naQPH>41eEm-Es$l0.<mk2bR_io/hQhVHuA
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYct:4XK&7tVkp2`TqJ!JS=>q6QBd\t
+OcYVp92//YoMG3XpepudqbmGmr`&nrqblo\"#DYc0)dU82D[Wa4[(ti4Zb\c3BR4!s#'j7rAsp>
+s#^fR4?QD79M8#P9/o77;H$Nn;Y3oc<!63#<E)rs;Zfut<)iiq!`Drqr)<Ypr`&nt"&r2t<;fes
+<;'8g<;ont<<#nq<<H3!;cN]op/LujrDrnss&J\is&9;)<`W1!;c?Xr<V08j<W?"u;uTbp<<?-"
+<;onq<<#ns<;ohn<<#nm;uouurDNYoq,RAm!*/tsr_r_orDW\ps&K(us&8qsrDi\nr_rhrq,RAo
+s&]5$#$4o/='&L+r`B,%!*T5'r)j5+='&L+=]kQ(r*',)r`T&#!*fD*s&fJ.>[1K:rEK8+r`f>)
+qcj)*ra#P1+CAG\>[1E1:ea_[;-ZRY4$c%e2(L%90LnPj1H@Hm:JpG4re:?)r.G!#s+10"s*t&t
+s*Y!;SY;eUU^<fjT:VRBR[KP1rL*\S".PjPT)PA^SgKtrR?j)#O,]'SLk^Y<LP^qLP*_`5VQ6u1
+]YMP1dF?e$gYUfEi;V^8i'H5Ug=Y!'bJq?0\$E09VP9]PR$EkrNJW@?I<g!WE,BB)B4YU`@U``1
+B3JDA=&`1";cHXn<)HOj:/Y(m<`N4&r`0,";Gg<a:gT$<N/is]P*;/rQ^F52S=Z@GTqeE\Vl6Vr
+Xf\e2ZEppH\%0&]]Y;.r_Sa=2a2lBGbK\>YdF-Lne^rF+g=tE=hV[8MioB+]k2tjjl0@U$m-X60
+n*oi:o()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s1\M`~>
+JcC<$O8neMrVc`nqtpEirqZQgs7cQerq1!toCMPDnaQ&:n*]T0m-Es$l0.<mk2kX`io/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYck43X/`.sVPL#^Tq@pIS!ob4QBd\t
+OcNm^E-QeeQ^3r&Q26a7PPp[DOoLOBO8"b9OnOt;PQ-mIQ2['oQ^EV_JV/T1LKp^PU7n<PSXGq5
+QBRDiNf&XJL6@[]P`q;qrf[>KrOr6D#J#0,G(5C0NrG%7O8=t8Oo1C=P67&7QBqK9!1<bR!1NhT
+!1N_QqO@PVr1!q[S=Q4@SGo)ZSH##XS,A]TS,SrSSc>8^T:Z%QrL<nZSG&EPRerNQQirbCR$jB@
+RK/iRSGJcVSGo#WS,f,YSH#&fR[]e:S!oe6R@9V5R@*i:q3M2NQ^=*;Qi39QQ^3s8QN<JAo:#]K
+"ItsNS=]\O!207`!2BFe!2TUjr2'Ilql'Omri#:`ri#gori#Rks/Z.!rN#[oriQ1&r3-.)#-Y88
+Z*CXBrNuX6rjO;d]">Ve]Xthh]tU\INdH%oMmUQRHBG(jLj)]sP?=<N=]es3WiiP/reC3'p4iR#
+re16&s+:9%rIFot!IfHWs!.O@qtpEn\u`-EU7@gLVlm2"Vl#uTS?&j#[)0\gZa.$EXfqB"?Ajc%
+O,oEdPEhH$R$sM8StD^NUnjlcWN*#$Y->1:ZaI6O\[oGe^;%M$_o9X9aND]McHaeadaZdtf@\d1
+gYCWAi8ESRj5f=akNM0plKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtpBjr;H6dJcC<$^]/f~>
+JcC<$O8neMrVc`nqtpEirqZQgs7cQerq0gooCMPDnaQ&:n*]T0m-Es$l0.<mk2kX`io/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYck43X/`.sVPL#^Tq@pIS!ob4QBd\t
+OcNRLA86%-jF$WIrI!pXq0X63An#+WA7fCLI!^0bG]e.MF)c2:Chmg#B4YXkD/T>k"`SC!E,gp;
+NsC](MdVuhEd%G-s*FTird+Qjrd=ZmrdFiqrd=TkrdOlq"FbiMJ:RTLp4E$ks+LE+!/1?(qh5!%
+re(E,JqAZ/rIY*'r.Y0(rIb-'"GMM^K7icIre(3%rdk$"rIY0'JV!`NrIY*%re(0$!.k$!!J,jt
+Jc:0&JUi6"JG+KmJH(,uJ,k)uIfFotJH(,uJGjs"J:W<(pOiL!rdt3(r.Y!%rJ19+s,$T0repc7
+rJTlu!0-Z3rK$f:rK7)BrfdAHr0%,Frg!;F.[QHfQ^F2.R@0M3R[TFtHZ*b9H&S/-Bl\cKBO!en
+Db>>&:/+P[L5(D9reC3'p4iR#re16&s+:9%rIFot!e,Rjrq?fqq=saZp\+=Rp%7nRp&4Rap\Xab
+pBL?aoC;>=mf)PZmI'K6o_/(Vr;PRQ4T50Pp[n%HmcrrohV6Z3d*9_S`PTF)]Xt_a\_b`$P*;,d
+Jq\u9Mi*7DKn"W(M2[FSPELrbMi!7DK7iiM?Ajc%O,oEdPEhH$R$sM8StD^NUnjlcWN*#$Y->1:
+ZaI6O\[oGe^;%M$_o9X9aND]McHaeadaZdtf@\d1gYCWAi8ESRj5f=akNM0plKdg'mI'H3nF?&>
+o(2MGrq-?dp\4X]s7u]kqtpBjr;H6dJcC<$^]/f~>
+JcC<$O8neMrVc`nqtpEirqZQgs7cQerq0gooCMPDnaQ&:n*]T0m-Es$l0.<mk2kX`io/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`P]R/^V@Ip]=GG\[^<BHYck43X/`.sVPL#^Tq@pIS!ob4QBd\t
+OcN"&8PW#Ynkf*Yr_ibprDNGgqbmGmrD`eqr)3&^%ko^j0JP=;2+0Yo4Zb_f4T.;F2E*TR2Dm>i
+3r_8A4T.>D:JOSWr_!GJ7SQc\<)iipo2GQd!`N&tr_r_oqG[>ls&8qss&B%ur_ir!<E3!tpJ^of
+s&K"s!*9%ur`&kqr`&nrq,IAor)NetrD`Ggr`&kts&B/#;cQlj<!ZK'<Dudo;cH`j<V]Vm;u9Po
+;u0Jn<<cE$;c6Ll<;BMq<)Z`n<;oet<)lrm<!$'!<;oer<;T\k;uoosrD`hur`&r!qcEeupfIGs
+pK7W$='&L+qH<i%r`KD.>?b96=oDP%>Q7n,>6J,4>$G80>6A&5>[753r`]8)s'5S0s'@$Z?sd;K
+?<piC>$"Nq:/"DZ>=M"B5sR1T+t5T-84GHm3B0o5;,R=IpkSQtre:?)rIb-%s+1-!s*kT/IA3U9
+V5C,dUS4<OSXZ(9r0mVS/tAK(T:hgKSt2@>R$EktNf8jOLPCM:Ll.1QPa\2=W3!84]YVY4dact'
+gtprHrSde6-JmM1f@8-f_nN[gYcF[sTU_C7PE1]\L4au&GBIqEChdWqA7K+Yra?pYHZ<7m>Zk*,
+<)Z^p;c6Rl;,9nf<EE1$=&r=%<DudkoMAkPN/`mZOckonQC+&.S"6.CTq\?YVPgDnX0&P/Z*L^D
+[^`lZ]Y2%o_8=+/`lH0CbKS8Wd*^:keCN7(g"P39h;7)JiSrnYjlYail07L!m-O--n*fc9nac8B
+o^r.U!quB_rV6Egs8)Wirqu]moDX=@JcELbJ,~>
+JcC<$NrS_MrVc]mr;6Kis7uWg!r)E^rq6<`B_1fcnaZ,;n*]T0m-Es$l0.<mk2k[aio/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`5BI.^V7Co]",>Z[^<BGYck12X/`+rVPKu]Tq@pHS!o_2QBdYs
+OC2O4Fa8\+R$X/*QBh91nWWm6s,d;Cr/^]9rK6f:rK@;IQ'M?7)NBH$I=m90?XBP*Tq@sKSXGq5
+QBI>gMM[%Brf[;F"dP=9Pa%L4^&P_M]l^])I#!cDrJ^f;qN(K7qiUi?qND/KQ'R`&Q^F0>R/i]S
+Rf]+LSGo#WS,o+Lq4.SYSY#hO!1`tX"J20SSXf\K!1NkUrg`hUr1<bUoU>iLrL*SNs-`eRrLEnW
+!1`qWs.97]rg`nWs.'+[rgX=bS=>t9R@9S4R$dl>rg*PMrg*PMrL!PM!LT;SQiWP@rg3YPs-`_Q
+qO7GRrL<kYrLj(^!2BCdrhK^oVP^8gVY[4fW;WXnW;*:hW;`^oW:m4kX8T$uX8B!tXoGO*Xfei'
+YQ(j)Z2_*4Za@-J[f3`=\@K5a]_oGe^;%J!_5j2\GBS+bXGhLOY.]jZKlM?:=dl9m=^>11Xfnqt
+L\Z](L&Zi)KE$Q'Jc1*#Isuj/rrE#pq]GjYXhq?<TV&HbZEL7*VOjHPV67/3]#;1eZ*Ua=XK_B#
+=c&&qNK90aP*D5uR$jG6SXuLJUSO`aW2cl!Xfnt6Za@0L\@K5a]t_A"_SjF5aN;TJc-FY_dF6Uq
+f%8R.g>(N?hr*GPj5]4_k3(sml0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjrVc<dJcC<$
+_#Jo~>
+JcC<$NrS_MrVc]mr;6Kis7uWg!r)E^rq6<`A+T9^naZ,;n*]T0m-Es$l0.<mk2k[aio/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`5BI.^V7Co]",>Z[^<BGYck12X/`+rVPKu]Tq@pHS!o_2QBdYs
+OB#CjBP_d=IH5eJHi8?YHhr+0B4G:T@q9.J:jdS8GBS+OEcZ2=D/<s$B4YXlDZ4SSE#!;2E,gnu
+O,o<]N)kaKDg$GQH$O^^r-SHirHnNkrdFcps*aloqgJHmrd=isJ:RTLpO`<q!JH+&K`6])KE-Z$
+KE-Z(K`6T(K`-Q&K`-W(K`?](K`?c+K`?\tK)L?%K)L9"K)L<'Jq8LNK):0#K`-PuK)^H'K)U?"
+K)^B&J:[ZL!.k#s!.Oosrdauts*t*!rdFs!J:N.HJGk$!K(afsK`-N'K`$Q%LAQc+M#W80L]E;-
+MZ8V5N;nh8N;nn/Mu\k7N;nn6NW>.=NW>.=OT(@FOHGZgOoCOBPQ-mIPPg[FQ2HsIQi<BPRK&`T
+S,]#YRi\)\LimTOCj1\YCMAN_F)k_n@Rj%8In`[7:54LWL%'lnLAlo,K`-Q'K)^E#J-(4LIfB0C
+q#:$fpAadep@\+UpAam`q#:"#p%7hEn*]T0m-X60nacAIq>:-Is$-JZq"OIPnF#W*jPS_Ee^Dde
+aMu08^qRIm\@B)\]=H.XOe._nL4bG?N/ECGKn+`*Ko1kMOctibMi3CGKSK/Q=c&&qNK90aP*D5u
+R$jG6SXuLJUSO`aW2cl!Xfnt6Za@0L\@K5a]t_A"_SjF5aN;TJc-FY_dF6Uqf%8R.g>(N?hr*GP
+j5]4_k3(sml0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjrVc<dJcC<$_#Jo~>
+JcC<$NrS_MrVc]mr;6Kis7uWg!r)E^rq6<`A+T9^naZ,;n*]T0m-Es$l0.<mk2k[aio/hQhVI#B
+g=k32f%&:!da?FecHOJSaiMNA`5BI.^V7Co]",>Z[^<BGYck12X/`+rVPKu]Tq@pHS!o_2QBdYs
+O@;]49hnJ\;=[QX;#jMn;uBPh;>X5k;uK\q;u9Jb;?&?`0.en51,UjQ5Wq7m4$5Ma3]K2!2ZGW4
+3r_8W4?GYe4&8UH9M8#Q-:1I(;H-Uo;c6Na;uKYr;c<QmrD`Pjs&9/#;GpFn<W5qt;uTbr<W?%n
+;u9Pn<W5r"<E<+!r`/ttr_reqs&8\l!*/qts&K(upJV;r<E)st<E</u<<6-#pf.8l#ZOf';c?Rl
+;cEWpr`9%urD`hsrDWYo!)rGfrDibos&Akq!E;tp;u]f!;cHasp/Lujs&/nsrDihts&Anrr)<f!
+<`W4#pf@2lrE0&%qcNl$!*B/%oN;6!>?_#/!*]8(s',V0>[.22!*oM-rEB2)s'5S.r`]>+s'5S0
+$=7(H?smDN?sd5IrE]V1<)$+^r_F7u6q'F25;k&I3\E*U6o?e]3)WXO;=KA:LAlo,K`-Q'K)^E#
+J.-pVI]'*@VPBiWT:VSPS,\rWS,]#YSH,8[TDtK0SXPt5P`h,fMi!7FL4tA=MiNseS=laYY-YXN
+_T:!Ne^rL/h;7&gi?mL?hqd&>f$_d^^q-tZXf8+iSXPk.OGo$NK7A8mG&qY@C2%?nAH$*<@O#Dp
+ARoga=C>96<Dldp<)ZXl:f:+c;cHe!='/L(<E)jo:f6m^=c&&qNK90aP*D5uR$jG6SXuLJUSO`a
+W2cl!Xfnt6Za@0L\@K5a]t_A"_SjF5aN;TJc-FY_dF6Uqf%8R.g>(N?hr*GPj5]4_k3(sml0@U$
+m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjrVc<dJcC<$_#Jo~>
+JcC<$NrS_Mr;HWmqtpEis7uWgs7ZNerq6<`!;$3\"nD*Nn*]TBls8rBl0.<mk2k[aio/hRhVI#B
+g=k32f@AC"da?FecHOJSaiMK@`5BI-^V7Co]",>Z[C!9FYck11X/`+rV50l[TV%gGS!fY1Q'@Jq
+OC)U=GC>@:R@'A.Q^3r&qNUK5rK@2C!0I,>q2kQ;p6,E=s-+OhQAgQLJ:iW2@:5q.T:hgKSXZ(4
+PECreN/<@HPl?jJP*D10PQ@&8rk8?E"hf>HTR2:iNrY4>N<#"7O8=t9OoCO>P6[>;QBml(R$dl@
+!1NkUrgWtZrgX"[SGJfQScPCRrLNnYrgj(Zr1!\Uq47ARrLNtY"IkpOS"0DGs-s4]R[TY4rg<YP
+s-ikT!h>aLrg`qXr1<qYrga%\rLF1bSXc4>S",uGRfAfUR/**KQN!6NQiibFR$[f>s-`nS!LK2Q
+R0K%HR[T_8SGf#VSGo#XS-GOSSXlCGT`(SaUACYbV#I4hVZ*LnVZ3RmW:?e_W;`[qW2]Kjs/Z.!
+s/Z(!s/l4&"L,/9Ycn&1s0;U0&[AXJZa@-J[^NZT\[oDc]tM/Z^]2+L_'6b7a2uN+RsoX)H*4'#
+H^(8HKoAr`M,RNFVcm8/=KAR-YOdSIL\li*L&Zi)KE$Q'Jc:3"J!9m4rVZO:r;HTos0Sr4VP9Wb
+TsV#(Vl-5^TVSWl['[`e['R'HYHG/&Y?m*FN/is\P*;/rQ^F52S=Z@GTqeE\Vl6VrXfek3ZEpsI
+\%0)^]Y;.r_Sa@3a2lBGbg"G[dF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*oi:o()DD
+o`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s1nYb~>
+JcC<$NrS_Mr;HWmqtpEis7uWgs7ZNerq6<`!;$3\"nD*Nn*]TBlrEB:l0.<mk2k[aio/hRhVI#B
+g=k32f@AC"da?FecHOJSaiMK@`5BI-^V7Co]",>Z[C!9FYck11X/`+rV50l[TV%gGS!fY1Q'@Jq
+OB5^uC2eBFiI(<FrI"!Zqg9;qARSqUARnY9I!g0`GBS(MF)Pr5Chmg"B4h-^s)&EfDfBZ8EH7)#
+O,f6Z?#tI3Fo?UeH$]12rI"TmrdOip!.=WkrdOfo"b2&RJV&IIJcgXYK7j#Rqh5'(L&$B%L&HZ+
+K7npVKDgK&L&-K$L&Zi+KDgB%KDU9!KE$Q&Jc13#KE$T)KDgE%K`6W(KE?dZK_pE$Jd[-]JqJ`/
+JqAQ*JqNuQrdb'$rdk'!r."]rrI=fsrdXru!IoY!JHLFRJqEcMre19'!/1?(!/1?*r.b!%!/UW0
+!f2\iqMP60s,?u9mYq1*rf$c7qMtT:!07&>rfI&?!0[>Frf[5DrKIAKPa)-3rg*SNrg<_Rs-itW
+!1a%Zrgk:*TVA9DKQ1jED2a0gC34uoDf%sRCIUp@In`U49nn@VL%C,tL\li*L&Zi)KE$Q'Jc:3"
+IfT<Dq#:$bpAajepAXg^p_NW!p\+:OnaQ#8mHs9.mdTc=p@nF]rnm`CrqlNdp%%V?lf[Bgh:^E/
+ccsVR`P]O,]tCqd\@K2_]Y(rIbES0QNJW=JL6%:NKnb52J;/o>O,oNfNf/gQL4k;6on?_0N/WdX
+OHPfmQ'[l,S"-(BTV8-VVPgAmX0&P.Yd1UC[^WfY]=bkm^r"".`Q-'AbKS5Vd*^:jeCE1&g"P39
+h;7&IiSrnYjlY^gl07L!m-O--n*fc8nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcEOcJ,~>
+JcC<$NrS_Mr;HWmqtpEis7uWgs7ZNerq6<`!;$3\"nD*Nn*]TBlr<<9l0.<mk2k[aio/hRhVI#B
+g=k32f@AC"da?FecHOJSaiMK@`5BI-^V7Co]",>Z[C!9FYck11X/`+rV50l[TV%gGS!fY1Q'@Jq
+O@D`3:/4^c;=[QZ;#jMl;uKVi;>X8k;uK\q;uBPf;&`Ch0JG+61,:dF69dXs4$5Yg4#o>_2`ETP
+2)Y:mrAtHN4$6;69M8#P/3ZEu;>jGp;c<*`s&9/#;GpFm;u9Ph;ZTirr_`br<V]Vo<W?%p;u0Jn
+<W5tt<<H9%<)iiss&8tsr`&nrp/D#lrDinurD`_o!*&qrs&Aqsr`9"ur`9"ts&K"ss&8nrr_iep
+r_rbqs&K2$<)`cq!EE+t;s[K`<<-"q;u]hp<<5urr_s,$<)lpt<)lrt<<#np<W5qt<W5th<Vo_s
+<E<,t<rZ1u<r,nr=92K*qH!]"=oDIp=TVc2>5h\)>5VV&>l.b(>5qh*>lS"8>$G39>[:ZB?XR:?
+@/s^7@3f5f?XR;O@Tlc.9MJ8c:IR]55taF$.5Et:0L\Gg2*!Wo;Gg<_M#2u)LAlo,K`-Q'K)^E$
+JH(*(VPU&^TV%gHqj^o^S=Q4BT:hjLT:VUDR[BA(OcPHYM2-k?KntSEO-H'(USk2t[(3rhb0JJd
+f@o$9hr*JPi8<DJgXt--ccO)<\?iB=VP9]PQ^!SkMM?e7I<g!XEGoZ.BP1mer*q*`A7]@dBPEHG
+>$5!/<E3!r<`E!r;Gp@f:fg\!<`W:&<E<'r;Gg9`;-o-=N/is\P*;/rQ^F52S=Z@GTqeE\Vl6Vr
+Xfek3ZEpsI\%0)^]Y;.r_Sa@3a2lBGbg"G[dF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60
+n*oi:o()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s1nYb~>
+JcC<$NW8VLrVc`nqtpEis7uWgs7cQerq-<aoD\:]naQPH>OLnFm-Es$l0%3kjlGI]iS`YNh;-i>
+g=Y$/e^W'rdEp1abfe/NaMu3;_ns4(^:_+i\[])UZa6p@Y-"e*WMl_kUnaWVSt2C@R@';*P`h/:
+@qp+3KpS6rRJrTRQNEJ<Q2Hm9PP^LEOcY\&O84n:OnOt:P73\@M1U51L4tIiV59sdTFd]cS=5e/
+P)kQZMMR%OPa%I2PQ@&8rk8<D"M:+sItR`]rf7#<!fi>'qN(N8rK7,Cp6,uNQ'R`&R$a;0R[]e:
+S=TYLs.01[qjmbY!hZ'Vr13n\rgj=bSt;RGT:Z%Qs.'%W!1`bRqORbZSt5kN!1j(YrgWkVs-j"W
+rg<hTR@4&CqjRYWS"'DIs.0%Yrgj%[!1itX#+_9SSXQ%;qjRPQs-WhQs-WePrKm\TR[KQ@RJiNN
+Rf/]USc,/WSc,&\StDXHrh04`rhB:bs.oXjrMKRlrh]apW2T3`qPaFl!iW)tpT"4nri6"!qlBe"
+ric@+!3uO/!42X/!4)U1s0Vg6s0abn\@K2_]Y2%n^VI\%_Sa:0`Q60FcdUFNVic@OG+,5'J9d<S
+RuX.A;iXm\TNbQ,>Z[u/ric'QqM>**r.b3)s+L?'s+16%rI=ltQi@*cr;QQor;HWos8=&>oY%H6
+ZD!k]WNrh1W2HVfU8"]k[C*Ta]!ScLZ*(8%Y?A#cN/`mZOckonQC+&.S"6.CTq\?ZVPgDnXKAY0
+Z*UdE[^`lZ]Y2(p_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9
+rpg-^o^r.U!quB_rV6Egs8)Wirqu]moDX=@JcERdJ,~>
+JcC<$NW8VLrVc`nqtpEis7uWgs7cQerq-<aoD\:]naQPH=mk\Dm-Es$l0%3kjlGI]iS`YNh;-i>
+g=Y$/e^W'rdEp1abfe/NaMu3;_ns4(^:_+i\[])UZa6p@Y-"e*WMl_kUnaWVSt2C@R@';*P`h/.
+=CGiYFF8MqI.M^`I.)FZHl?R)?=RPWAl*l&H?j[XG'.nIEGfW/C1q9nBDHNHE=6fIO,o<]NJr(2
+DKP]#pNume!I]@bIK"]qI0>"KJ:W:EJcgXYK7j/V!/:E*qh5*+Kn]AV",2D^L&Qc(KDpQ(K)gT(
+L&?W#L&HZ(K)^K%K):3"Jd$^WJqJ`/r.P'%"GDJ^K7j)Trdt3(rIb-$s+:3&!eZ)Vre'or!e>iP
+rdXirrdOourIOlsr.=j!rIk3'rIk3'qh4s&rJ(*&s+pZ2rJLT4regK/n;R1&q2Y?5rfI&?!0[>F
+!gJn4rfdDJr07,Es-EYNrKmhXR[T_8S=Q8NT-Br%U8+Q^WN;>BI;Wk:JVT"uBl\cODL+`>CI_!B
+:/+\a:&]nIL%gH#M#E,,LAlo,K`-Q'JcLB#J,t/prq?Ngp\4C[pAt'`rqQKgr:p<d'(tnfnaGo5
+mHj6.n+#uApA"O`hu=l!r;-3^oC2,4kN1[Zg=Oj$cH=5J`59:&]t:hb\[oDc^&>YeaLR_%PEUiU
+KSb\JM2$b=JqJf7MiEd[Q&gl]Mi!1AoS$G$MN!OUO-,ThQ'Rf)R[]k>T:r!TV5C/iWiW>*Yd(O@
+[C3TU]"G_k^VRe*`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nc&(\
+oCV\So`Fj]p\jmeq>^<gqu6NkrU^#>s+13ds*t~>
+JcC<$NW8VLrVc`nqtpEis7uWgs7cQerq-<aoD\:]naQPH=75JBm-Es$l0%3kjlGI]iS`YNh;-i>
+g=Y$/e^W'rdEp1abfe/NaMu3;_ns4(^:_+i\[])UZa6p@Y-"e*WMl_kUnaWVSt2C@R@';*P`h.t
+7nQKO:\mrZ;#4&h;Z9Vl;Ya2e;ZB\p;ufkn;YX*"0J>%51,C[C69mat3]fGdr]19E3&W]Q2`3Jl
+3WV<)r]:9G4$6;69`7Tl4\8LK;c?Xp;c?Rlp/:rjr)3_t;c6Llpf-uds&/kqpJh/m!*&qr"&r2u
+;u9Pn<W?%r<W?##<E<+"r)E\pq,@Gp<)clr<WH.s<<#ns<<#ks<;T\o<WH/!<WQ3"r)Nbrs&8nr
+qG[>l#$"W%;c?Xpr`/tts&8Ac!*0"t!EE+s;u]hp<=)W'<)cjt<)cjtqc*So$WL,,<`N*t;cQju
+<;ons<;0Am<rH%s<rZ5$<rQ+u<WH/!<rH,!=SPqu=BYT)oND/sr`T8)qcj#(qcj&'r`f>+r`]V4
+?!UcC?XI4=@K0g:A,g!_@:E_VA7fLY=Ahph93"bc7RfL,5rCbP-orq56oR"c3]L&9r_`EHqM>**
+r.b3)s+L?'s+16%rI>0'U7e0OSXl@Drgj%[=eD@[TqS-NSt2@=QB[PoNJiXLLPCJ:M2R@UQCFPC
+Wii\;]YVV2dF?b"gYL`Di8NYQhqm2Cf[\En`P8sjYcF[sTU_C6Oc>3PJq&/nG&qYAD/*ctAn>NN
+@fp7QAnV'V#\n'\>Zk92=&o6!$!'u(<)HLh:f^Qo<sDc-<E)mp;"RUf:l:3kO,oEdPEhH$R$sM8
+StD^NUnsrdWN*&%Y->1;ZaI6O\[oGe^V@V%`5Ta;aND]McHjkbdaZdtf@\d1gYL]Bi8ESSj5f=a
+kNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjr;H6dJcC<$_>f#~>
+JcC<$NW8VLrVc]mr;6NjrqZQgs7cQerq-<aoD\:]naQPH?1.+Hm-Es$l0.9ljlGI^iS`YOh;-l?
+g=Y$/e^W'rdEp1abfe/NaMu3;_SX+'^:_+i\[T#TZa6p@Y-"e*WMcYjUnXQUSt2@>R@';*P`h/9
+B5i'EMOU*(R[KTCR/`KSQBda5Pk1+7P5gXEOSk18OT1I9P5URdN.lk4KnY:g?_sQjTV%gIR[]Y.
+P*(``Mhd.QPEM/qr0.2JrOr3C"MoqBJroqlrJgl=rfHu;r/_)EP*(liP4k(>Pl@!KQiEEVR@9V7
+S=KMJrL<nZT)P;\T)G;\T)>5\T)>2_SXuCCrL="]S=Q4BpmqDUrgj(\!1j+Z!1j(YrgWnWrL3eU
+rg<bUrgN\Qr1*bWqO[_Xoq)2S%%NfVSXc1<S",t:R@3o="dtgJR@'B7RJrZTRfJuXSc,/YTDtJ]
+S-,=RT:c+U!29=brM04brh]Oir29RnrMKXop8@\arMfOkri?!ts/Z.#s/l=(s/uL.Z*F)1rj;[4
+4LV`/\[oDc]Y;+p^qmq,`Poj;aNDcRe(34.hVkZ3N-KPlNh_eeHEb/ELj!lAP#n?K=B]':=KAU/
+YHRPSr.t?-r.b3)s+L?'!ePuSrd^F:!WDrqqu?Wmrr)j=eulKeV4aQoY.:^8Vl?8`Tr5#s['die
+['R-JYcY12p9.Z&M2R=PO-#NfPa.T&R@B_;StMdPUnsufWiE/&YHY:<['mHR\\#Mg^VI_'`5Td<
+aihlPcHjnce'uq!f@\g2gtgiEi8N\Uj5oFckNM0plg4!*mdBQ4nF?MK!V>s_p&Facp\sseq>^<g
+qu6NlrUTr=s+13es*t~>
+JcC<$NW8VLrVc]mr;6NjrqZQgs7cQerq-<aoD\:]naQPH=RPSCm-Es$l0.9ljlGI^iS`YOh;-l?
+g=Y$/e^W'rdEp1abfe/NaMu3;_SX+'^:_+i\[T#TZa6p@Y-"e*WMcYjUnXQUSt2@>R@';*P`h/1
+?=[eiG^fX?jF$fN!.+HfrI"*]r-TPuA7/_SA7\S6I!U$^GBS+MFDu/8D/3m#B4l1&DK#Mnrc&?f
+NfK0]NfK'\E,0NAq0Md^rd4cqI!kC2s*b0#IXZftJV!NHre(0&s+UK+qh>')!/:3$re:?)"+u8Z
+K`-Q'K`Zp]L&H]%K`Hf%KDpK%KD0rtKD:*$KnP0VK`-N'K`-N*JqJZ-qh5!%&qkmjK7ec.JqJZ,
+K7\]+It*!!rdb9(It*!!JV*]Krdt-%qLng$pk8[$!JZC.LAZi'M#N80MXl\qN;JV/Nr"h:OSk7@
+P5g^IP`q=+Pld8:Q2R!KQi3<OR4k"uS"-"?T:hmOU8+N\VlHi%Z*Ld#Lj3lUCjLk^Ch\W`F(o#b
+7rCtIGtq(2:egqDs+U'$r.t?-r.b3)s+L?'!ePuSrdY.Hp\4IWqY9s`r:gKjp@\%InF-AD$LI3L
+naZ5Ep\Ogei;Xu"r;-3^oC;87kiLaYg"4^"cHF>L`59=(^:_%f\@K2_]`,YF^E^P1_:toPQ]d8^
+LQdXYMi!1BJV/T0MMmOVQ'%&aMMd1BLP5AT>(h`jN/`m[P*2&pQ^F21S=Q7ETqeE[Vl6VqXKA\1
+Z*UgG\%&u\]Y;.r_SX71a2lBGbK\>YdF$Fme^i@)g=k?<hV[8MioB(\k2tjjl07O#m-X6/n*fc9
+rpg*]o`"O`pAamdq#:*hqYU0hr;HTbrdk*#s2+ed~>
+JcC<$NW8VLrVc]mr;6NjrqZQgs7cQerq-<aoD\:]naQPH=75JBm-Es$l0.9ljlGI^iS`YOh;-l?
+g=Y$/e^W'rdEp1abfe/NaMu3;_SX+'^:_+i\[T#TZa6p@Y-"e*WMcYjUnXQUSt2@>R@';*P`h.u
+7nHHO;YX,\;#4&_;Ya2e;ZB\q<;fbn;Yj5m1GUX:r\5'D1-n,e4Zkeh4?GSa3]AuT2`3Jl3WM8@
+4:XG83]p26:/">S9L;0F;Z0Ms<)Z^n;YF&h<;f_t<)Z[nr)<Yrr)EGis&/kqp/M&l!`W)spJh)k
+!*&eps&T(uoi1oh!E<(s<WH.t;ufkr<!#ut<;ons<;T_j<W#hr<VTJm<;fbq<;fes;u9Mp<`T)t
+!*/kps&K(us&B%ur)3Spqc3Sos&B2#<)lmsrDWYos&KM-<)Z^p<`W4#<``<#<;]bn<rH%s<WH5#
+<rQ)"<)rour)Wr%=]kK$r`B2(=S#\p>5_V(>5DJ'>QA"*>5_\'>R=V>>[:ZB?XI2Kr*fV8s(!Nh
+A7K.]AnPdkCi+#n<_cCa:/Y"\7R]U44u+oE.6B4S7Q*+b3]L&9r_`9Dr.t?-r.b3)s+L?'!ePuS
+rdY$CTDkG\T3It\TV/!QU7n6OSt)7:Q'7>kN/EFHLP:D;MN!U\R@U(MX0B"B^Ve.;e(*(&g>(N@
+i8EMMhVR#>e^Daa_7R+[XJhqfS=,Y*Nf/XEIscKaF)c,8C2%<nAS(aK"(Z"VC&VlIC]A2oD0TPo
+>Zt60;cQb";c?Xn;G^.h<`W:%<`iC&<`Dso:f$d^>#:'6N/`m[P*2&pQ^F21S=Q7ETqeE[Vl6Vq
+XKA\1Z*UgG\%&u\]Y;.r_SX71a2lBGbK\>YdF$Fme^i@)g=k?<hV[8MioB(\k2tjjl07O#m-X6/
+n*fc9rpg*]o`"O`pAamdq#:*hqYU0hr;HTbrdk*#s2+ed~>
+JcC<$NW8SKrVc`nqtpEis7uWgs7ZNerq6<`AFoB_naZ,;n*]T0m-Es$l0.<mjlGI^io&bPh;-l?
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-j?Y-"b)WMcViUnXQTSt2@>R$X,(PEK<a
+CNY#ZR[]h:S!s>Erg3hTQBmf$r06i;plY]@OHBC$qN(]>o9'QHMM?h:L51Ok?DXHmUAghbRKo.C
+PE(W^M22(o#aC[?Pa.MuQ^@]bs1A]P_ROf>NKB6_OHBC$rK-r<qiCuDP*(liP4k(>Q2R!RQ^F2/
+R[]h;qjm_Vs.01]%%Wu]T:_dKT:hgJTV27U!1s1^!MH(aT)Y>]SG\rWT)Y>]SGSiWT)G5[T)Y>_
+S=Q5LSH#)WSH#)YS,f&XRKB"KReiNPSH#/SScG>\T)5/ZScG>\S-b[TSXl7>S=H(<r0[VRR@4#B
+s-`nUs-`bQs-WnVS,Ji[StDXJTDkDaT:hgKrgs(\rh'7br1a1cqkX7es.oOg#,\;rW2HSmr29Rn
+q5="dr2KLlorA(oriQ1&#-Y88Z*L[ArNuU27C9J0[C3NQ\@K2^]Y(ql^;.P$_o0R7a2lHJcI17r
+gYUoMkNV96Sq;95MOpZ%HBtAYM4Ti-<g?gZT35?'>Hb*0Yck8"M>`80L\uo,L&Zi*KE$Q'JcC7k
+rrN,trql]nr;QQm*jr)OVk]odVmW_/Wi2YhU8G)u['mZd\[8ZKZ*(:5p94M!?AaZ"NfT9bPE_?!
+R$sM7StD^MUSOcbW2co#Y-5(8ZaI6N\[oGd^;%M$_o9X9aND]Mc-F\`daQ^rf@S^0gYCWAhr*JQ
+j5f=ak32'olKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7uZjr;6HjrVc?eJcC<$_Z,,~>
+JcC<$NW8SKrVc`nqtpEis7uWgs7ZNerq6<`?h<jZnaZ,;n*]T0m-Es$l0.<mjlGI^io&bPh;-l?
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-j?Y-"b)WMcViUnXQTSt2@>R$X,(PEJmI
+@;'M#IK"]qIH>kRHi89dHi8?_Hi8=MAn5F[A7]@L:jdV9H?aXXFE)>AE,KH+C1h-tE,TZ8E,]i;
+EH?2]O,o<]N0T98E-ckXH@'u6HN8BjHhi'^I/n`pIJnTqIt7NL!.t3&qh"j#!JH+)K`?c)KEm3c
+KnY89Kn]>Ur.Y$$s+C3%s+UK+qM"s&qLed!re(6&s+C?'"+u2XKDC3"L%p?#K*$^YKDL6$L%U*!
+KDgK%K)pORpjiKuJV!]Ms+(B+K7nr3K7s5XrIjs"re(B-L51T`L\Q]*LB<9gM>W8*MZA_7Mu&D4
+NV\V3NVeb2O8P+<OoCLDPPg[AQ2?mHQiEHQRJrZTS1^A(T:qsQUSO`aWN<;.ZaI9R]=X/YEG]H7
+K8=VbG(?i9G%s?6DbGD&:/4Y^M>i80L%'rtM#N2-LAuu-K`6W(K)^E%J-#H@rqHNiq#:'hqY^.*
+q"a^Zp\"1LnaGo6mHj6.nF?)ApA"O`hu=htqYBjWo'Yl.jl,(Nf@/-nbK7cB_nj+%]t:kc\@K5a
+rk8HK^qfrcs2#nug6Ie_N/E@LMN<^RLk^P8K8,;DNK93eO,]$SLk^P8p4`O"?AaZ"NfT9bPE_?!
+R$sM7StD^MUSOcbW2co#Y-5(8ZaI6N\[oGd^;%M$_o9X9aND]Mc-F\`daQ^rf@S^0gYCWAhr*JQ
+j5f=ak32'olKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7uZjr;6HjrVc?eJcC<$_Z,,~>
+JcC<$NW8SKrVc`nqtpEis7uWgs7ZNerq6<`?M!aYnaZ,;n*]T0m-Es$l0.<mjlGI^io&bPh;-l?
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-j?Y-"b)WMcViUnXQTSt2@>R$X,(PEJ='
+9288ZpJLNYpeg`_q,.#e##eDu;cH[or)3Gi&2Q!p/hf%:2`!cb5X%7l4?NO'+?MPB2`<NN3]]>a
+4?GYe4?>Pd:JOSV92&/K9i+_e<)``poi(fgs&8nrs&8kqr`/kqpeq2k;ta2h<<,to<!$'!<:j/l
+<`N,t<Vf\p;u]hr;ZKho<WQ0"r_s)";cH^p;cN`rs&92&=&r@'<`\rpr)<_u<E/Zj!E)kq<<#qu
+<;fbq<!$'#<W,ns<W#hm<<,ts<<#no<W5ts<<?,u<;ons;ZB\p<<$"t<;]bt='#<#pf7Mt<)cjt
+r)Nf!r`0#!rDWhu<`]*!s&f(ur`K)$!*]>(s&]8(oih2r!F/k+>5VV%>lS+/?Mn42@09tK@q>RM
+#\7LYB4u$qCi92i**H?>:/4Yb<C]J>6<ZW5/gDf-0h4Yk1c[Qq;c<Tln;7+"reLE+s+UK+re(6&
+s+13#qk3t_!2BIfs.W;^T:ML?Q^*_qNf/aMLPCJ:M2R@UQC=JBWNEJ7]>;M1d+$Xug"bE>hV[5I
+hV?l<f$i!g`4iaeY,\@nSXGb+O,JdHJ:2`fF)Z&7CM@G\AcQB=@fp:TBPRH\s(q[O%:aWc>?Y'.
+<Dumu<Durt;?9Tor`9G,='&L)<E)jo:f-j_s%m$ZMi<[WOHPflQ'[l,S"-(BTqS6WVPgAmX0&P.
+Yd1UC[^WfY]Y(tn_8=+/`lH0CbKS5Vd*^:jeCE1&g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc8
+nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcEUeJ,~>
+JcC<$N;rMKrVc`nqtpEis7uWgs7ZNerq6<`!;$3\?1IFQn*]T0m-Es$l0.<mk2bR_io&bPhVHu@
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-g>Y-"b)WMcVhUS=HSSt):=R$X)'PEK9c
+F*W7mS=Q5MS,o+JrgEbQ"IGF?Q'M<4o98s4!KiKAO8G%=OoLUEOnY"XMM-S9KnbCiV59r\TUq^H
+S=5e.PECreMMQtNrK[DIs-E\OrOiEJ^14ftI>IZ[s,[)>rK$i;rfR/Bq31iC!1!MK"dbUER@9WE
+SGf#VSH#/YSdD$^TV%jLTV%mMq4I\[!2'1\$_<l]T:VXHSt2CBT)G5[T)P;ZT)P;ZSH#)PS-5:M
+S!ofBS,SrXScG>XScGD\T)PA]T`1PcSt2FBr13eVs-j(YR@=,CrL3bU#b%9RS"#h7R[a5D!LoVY
+Sc,/\T`(MWT`1Y^UAgqbV#I+iUo"$c"/VllVu<RbVuN^pVu3LlWVWXgX8f:"XoGO,YHY::ZMq3-
+[/RK5[f<i;])K>A]f<a@^VRe*`5]j=b0/&Ve(34.hrEk_l0Ia*Z_s.<G^>IFQ%F=GUn;h#=F?00
+=IZ*i>$Y@9XKA`+YOIDIM#N2.LAuu-K`-N*Jq8K'T`5&lrVlZqr;HTlrqHF7_6C5IU7e9a]!AN>
+Vl-DgVQI&.[C=)h['R-JYcP(2pTOV"=c&#pNK0'^P*;/sR$a>3SXuIIU84W_Vl?\tXfen5Za7'J
+\@K2`]t_=u_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncJFT
+o`"Lbp@n=[q#C0iqYU0hr;?Nbrdk*#s24ke~>
+JcC<$N;rMKrVc`nqtpEis7uWgs7ZNerq6<`!;$3\>4M+Nn*]T0m-Es$l0.<mk2bR_io&bPhVHu@
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-g>Y-"b)WMcVhUS=HSSt):=R$X)'PEK$S
+ASZ70rdXors*a*YqKr*cqKr0go6^F`11k$(A7T:b;1*b;H?OISG&q_FDf9K.CM7?mEH,r:EH,r;
+EH6,\O,o<]NDGLJE-H_Xr-SHkr-SHird4Wl!.FcmpO3'jrI+Wn!IoY!JH1<$KDU9"KDgK'L&HZ.
+Knb>9L5,\]rIb6+KS9;Xre1<*s+LE)qLem'K_gE$K`$K%JcULUon3'ns+U?'re:B*!/:?(q1\d#
+s+C<(r.Y-'%>0=cJUrE)J:N3&JqJ^TK(sruK_^<%K`$Q#LAll,L]*&/L\Q])LB*2+MZA_5MZA_6
+Mtr>2Mtr;3NVeb3O8Y1;OoLUEPQ$gBQ2?mHQi<BPR1l$YS"-"@T:hmOUSOcdX08b5[C?.Hs198`
+P`($1Ci+KPHZ3_AJUV$L8mlI*8pPeY9i=cDreCE+n;7+"reLH,s+UK+rIY3(JUr@Mq#U?fr;-Bf
+s7d<&p@S"JnF,f5m-O-.nac;Ep\F^ci;Y,&r;-0[oC2,2k2Y@Sf[\BqbfRoD_ns1&]Xtbb\[f>b
+]tV4r_#;+I_BHq`S<B(sMM6hDOH#-RL4t>6L5CnLOH5ZgNf/dPLP1D7pP&X#=c&#pNK0'^P*;/s
+R$a>3SXuIIU84W_Vl?\tXfen5Za7'J\@K2`]t_=u_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>N
+j5]4^k3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqYU0hr;?Nbrdk*#s24ke~>
+JcC<$N;rMKrVc`nqtpEis7uWgs7ZNerq6<`!;$3\>4M+Nn*]T0m-Es$l0.<mk2bR_io&bPhVHu@
+g=b*0e^W'rdEp1abfe/NaMu3;_SX+'^:_(h\[T#TZa-g>Y-"b)WMcVhUS=HSSt):=R$X)'PEJC*
+9M\G^pegWZohkE\qGI&ds&8qs!)rbmr_`\M!&"4*)DslI5Wq4k4$G\c3]T5Z2`<QN1cmf]4?P\d
+r]:3E:JOU_9*?\3:/Opa<;'8]<;fhs;ufqt<;]Yp<;ohr;ufkl<<#tn<<#r$<)lpt<;fes<;]br
+<;T\o<<#l#<)lpt;cNTor`/tt!`Mupr)3Spr)El$<E<1%r)E_rrDi_o!*/tss&/nsr)<Vnqc*Jl
+s&AttpJguhs&Aqs!E<(u<;ont<;BMp;c<Nls&B"us&8tuq,[Mqpf7Js;c?]n<rH)"<rGtt<W6%j
+=8Z2!=oV\)=oVS(=nc+s>PhS(=oDP$>Q%h,>l\41?iOO3@K0g=A7]?OAd2m]C2.O$DuO_UD]We#
+=B&*k9hn\Y77B7'5s%(U1-7*B7n5Nq3&sr:;Z0J^M>`80L])u-L&Zi)K*6dWJUjHlU0+1dV50l\
+TV%dER$Nu!NfApQLkg\;LPh%OPF.o8VQ6o-\A#i$c-t4pf\5-:hVR/Hh;$c<f$i$ka2,?oYH+Rr
+Ssu%0O,SmKJUVrjFE)58CMIKoAS#EMA,g'@AnYrWD#%ocDMVS"=B/F&;cH^s;cHao;GgCq='&L(
+<`o?$"B88r:f$g_s%ljTMN!OTO-,ThQ'Rf)R[]k>T:r!TV5C/iWiW>*Yd(O@[C3TU]"G_k^VRe*
+`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nc&(\oCV\So`Fj]p\jme
+q>^<gqu6NkrU^#>s+13fs*t~>
+JcC<$N;rMKrVc]mr;6NjrqZQgs7cQerq-<aoD\;knaQ#9md9B-lg!a!ki_*jjl>C\iS`VMh;$c=
+g"4j,eC;pod*Bq\bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO8XfJJ#Vl$8bTqS*MS=>q6Q^*eu@:O%o
+I>48^SXc4@S=H(<Rf8`TR/`NQQ2m3JPk1+7P5gXEOSk1:O9(K,rfR#>*/fT(Iu&r;>AC(5TVA*O
+Ssu4:QB@;kN/NRLPa)*2!1*VNqn3,aTlYX9qN(]>pQ5E9qiLi?qNC]=!L/lJQ3!>>rg<eUS,JlV
+SbnoWSc55\TD>/UTDbDhT:VXHTV%jLTUu.T"J20TSt>qP!1s1\r1<kXs.'(X!M#_XSH#&YSGeoS
+RfT%KrgWtZrgj+\qk!eZ!1s.]r1F%^rLX%[s.91[!1`tVqjIMTrgWkV".PaKS,JcVS"0GJ!hQ$V
+pRqP[rLa.brh94`s.fCc"/DZgV>d4kUnspeVuEXeVu<RnVu<RoWVELfX8T."Xo>I(YHe&3s0MX1
+!4Dg77(9\:]">Se]Y2%o^qdh)`Q#s?b08/Ye(37/i8`q_l0I^'md]tSTS7];KUej$IsR6cOG\B`
+LPf&6S"s4l?!FJ6Xg%f.pPSa&reUQ/rJ(?+s+LB(s+16%U]1AorVl]oqucoss8W)tqZ$Nn+TLK-
+XK\OqUq=(BYH+Y%V59uiY-bRF^V[LfZEpg=YHIW'riT4WMi<XVOHG]jQ'Rf*S"-%@TV8-VV5L8l
+WiW>+Yd(OA[^WcW]=bkm^r""-`Q-'AbKJ/UcdC.heCE1&g"P08h;7&IiSrnXjlY^gkiqBum-O--
+rpL'\nac8BoCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcEXfJ,~>
+JcC<$N;rMKrVc]mr;6NjrqZQgs7cQerq-<aoD\;cnaQ#9md9B-lg!a!ki_*jjl>C\iS`VMh;$c=
+g"4j,eC;pod*Bq\bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO8XfJJ#Vl$8bTqS*MS=>q6Q^*eu<EWdE
+DK^M[JGt&uIf=c[I/J?eHMMpdI._jcHlZg0?smS[B22KUH[0j\G'7nHEH#c4ChdZsB5qm0qf*$b
+F,l9ANfK*,HtRA@rd=fpHi&3iHiJEjHiABmIJnQmI/n`mIK"]oIK+`sIt7KK!.t3&r.=m"re1<*
+rIb0)r.b3)re0irq1Ja#re1-%qLej$rdk-&rIXfsqh,!(K`6]'K_U6$K_U9!KE-Z(K_L0#K`-N&
+JcC<&K7s/T!/1?(s+LB*!/19(!euD_reCH,s+^Q/qM#!*reUQ/pP8j*M#N;4MY`52N;\\6Mu\e0
+N;eb3N;nn8Nr"h8OSt:BOHKO*!0d>FqN^rDs-NYN'UbDZS"-%@T:hpRUo(,lY->4?\%)FK,J1P!
+^;,qfGA_5=K8=bgBl]#OC19SBCIUsBHVI44:Pjj\LAlo$MYN&-M#N2.LAuu-K`6W(Jc^N"q>U3j
+qu6Hkq>^4(p\+:PoC;;<md9B.mdTf=p%J4XrSRW%r;-3]oC2/4k2kRYg=Od"c-")F_ns4']Xtbc
+\@B,^]tV7s^qmk]_A'iNZBLH6Mi!7SOc53ULkUP9Ko1ffNsUu6OH,6ULk^P8pP&U"</HNlNK90`
+P*D5tR$jG6SXuLJUSO`aW2cl!Xfnt6Za@0M\@K5a^;%J#_o0O7aN;WKc-FY_dF6Uqf@S^0g>(N@
+hr*JQj5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<bs7cNfs7uZjr;6HjrVc?eJcC<$_uG5~>
+JcC<$N;rMKrVc]mr;6NjrqZQgs7cQerq-<aoD\;`naQ#9md9B-lg!a!ki_*jjl>C\iS`VMh;$c=
+g"4j,eC;pod*Bq\bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO8XfJJ#Vl$8bTqS*MS=>q6Q^*eu77U!F
+:Jga^oMG-VpJUfaqGI;lr`&nrr)+8,1bgX90etLA1I45h5!1qh4?>J`3rV)<2?Ylu3]fD%4:XD7
+4$6;6:.n;S/jN-.;ts>l;u]hn;t<o]<<?,u<;ons;ZKer;ts;l<V]Vl<W#hr<W?%r<<-"q<W#er
+;uK\s<)rcqs&B/#;cH]n;ZB\j<<H<&<E/rt!E2ts<Vo_q;ts;l;uT_r;uBVl;ZKeo<Vobj<<6&t
+qc*So!E<(s;uftt<<H9$;cN]os&B"us&9&"<`f0!r`/_o!`W)tr`0#!rDj#%<`W6"<!$'#<q9>l
+=Sl8#>5h\(=9)M">5DIs>5VV&>QJ,:rEfP4qdBtD@q9+]AS,RgBkhF"D/T>ks(rlpDK/i\:JOY\
+;cQ@X6om\#1GgI84"N'U7Q!"^3E&jSrDE<Hpkf!+reLH,s+UK+re(6&=Fm6BUnjiaV50l[TUq[A
+Q^*_qNJiXMLPCJ:M2RCWQ^aYDWNEJ8]YVS1d+$Y!g"bE>hV[2Hh:pZ8eBuO__nEOaXJhndS<oJ$
+N/31>J:)TbEc5f1C1mNW!+c";s'u@HB5)-uD/=%^D'<_H@9Qi;=B/=%<EE1";c6Lj;,pXu=&rC'
+=&r@$;Gp:gpJLod</HNlNK90`P*D5tR$jG6SXuLJUSO`aW2cl!Xfnt6Za@0M\@K5a^;%J#_o0O7
+aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<bs7cNfs7uZj
+r;6HjrVc?eJcC<$_uG5~>
+JcC<$N;rMKr;HWmr;6Kis7uWg!r)E^rq-KfoCMPDnaQPH=mk\Dm-Es$ki_*jjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"]bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vl$8bTqJ!KS=>q6QBd\t?YFM*
+J;]tiSXlAOSc>5[RfJoVRK&ZSQNEJ<Q2Hm>PP:4@Oc]L%qiCi@OSt=>OrTI>KS,/:LgOMeVP9cZ
+St;ICS<T2!OH>H[M3X;&PlR-LQi"H!]UGFBL$as%O8G%<Oo(==P6-u6Q2R!KQi<BPRK&cUSGf#V
+S,f,ZScGDXT_k>cTV%mMTqJ(XTDtPbT:l%QrLX%[s.04]qk!_Vr1*eXr1*eU!1WtVqj[MRrLX%[
+r1<bWqk3n[rLX"Zs.04\q4%DQ".YpOS,/ZTS,\rWS,]#XSH>CTTD>/ZU&UkdT`_$aU7qR\#,@oe
+USFQXr1j4d#G\#gUSO`_VZ!FhW;ELjW;idmVuWglWqWRnXT#@%Xotr4Z*L\5Zi.6;[C3NQ\[f;_
+]=e-V4he_J_Sa@5aN;WMcdC4mg"kQEj6#RilK[^&nFQCmWLeQ`H*X0@ML0WKer>rTH;oo'R@gB[
+>?b:6Y-"r-YPX7SMY`2/M#W8.LAur-K`-N(Jq9g!#lXYtq>1!drVlKiqu6Wq+1\SYWMZDkYILd?
+X/MnmV5g]*[CNof^9k2Q[BQa:Y5#4"Y$[$CMi<[WOHPflQ'[l,S"-(BTqS6WVPgAmX0&P/Yd1UC
+[^WfY]Y(tn_8=+/`lH0CbKS8Wd*^:keCN7(g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc8nac8B
+oCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcE[gJ,~>
+JcC<$N;rMKr;HWmr;6Kis7uWg!r)E^rq-KfoCMPDnaQPH<poAAm-Es$ki_*jjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"]bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vl$8bTqJ!KS=>q6QBd\t=']BQ
+Dg6hardautrdOlql$WJWpNlX^rd=Eds*Po&B4>:^AS+b9I=6?dH$4:PF*)A=D/=$'BP;C(E,fjr
+EW:%eF,l9AO,f3YG("7Lr-eEhrd4Zkrd4Tk!.Ffn"FY`KIX_0Bs*jin!IfOtJH(3#JcLH$K)L?#
+K`?c)KE['aKnY89rIt9)q1Sg'r.Y*&re1K.K7ei1r.P3*Kn]MZrIt0%rdt$"!JH+$K`-W$K^XWo
+KE-`)K_C*$KS+pUJcLGqK`6]*K`-W%LAuu,LA-K&M#W81M#<&.M#N8/MY`53N/R[orf-W1s,6Z2
+!0-l9r/^c;s,m;B!0R8DrKR2Epm1rHr0S4eR[]e:SY)RLUSXidWiWD/ZaI9P\G`l]\@fVoR?!#A
+D/G;eLNI?IK<0*6BNml@7X06/9heM\M2$_=re:6-qMP-+reUT0r.b6*!/1<'!J5n%qu-@-q=saZ
+p@\(LnaQ#8md9E0nF?,BpA"L^hu>)'r;$'Yna>`,jl,(Nf[S<obK.Z?_8*dt]=PP`\@K2`]tV:u
+_8=(f_u%=M_'.1QQB@;jMMR4OO,T!QL4k>:Ll7:SO-,]hNf/dOLP1D8pkA^#?\sYuN/is\P*;,q
+Q^F52S=Z@HTqeE\Vl6VrXfen4ZEpsI\%0)_]Y;.s_Sa@4a2lEHbg+M\dF-Oof%8R-g=tE=hV[8M
+ioB+]k2tmll0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s2=qf~>
+JcC<$N;rMKr;HWmr;6Kis7uWg!r)E^rq-KfoCMPDnaQPH=mk\Dm-Es$ki_*jjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"]bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vl$8bTqJ!KS=>q6QBd\t7S-3G
+:/Xqe;,L6e;>3od;?'Pf;#sQlpeprcqGI;lrDWbqrDF@d1,1C:0f(^E6:!k"4$5Sd3]]8_3;tl:
+2&&,44$5Se4$#Gb4AJ[I9MA)Q5=eTD<;ohr<;TVg;ufqs<;9Gr<`N.!<;okt<;TV_<;]bn<!63#
+<)lum<W?%r<W?,"<Vfbr<W#eq;?Kco;cNQms&T/"!)rkrs&/qt<W5qt<W5r";cHasnPoEbs&Akq
+!E<"r<;KSr<)Zco;u]hs;u9Mp<`f9#r`9%us&&hqr`&eqr`0#!rD`eqs&T%ts&8tur)E\rrDir#
+<rQ+u<qKJm=SQ%u>5MIu>5DIr>5_\)>lS+0?N4C3@/FC4@PhS*AS#IdBk_<sCi+',Chma!BPVL)
+=Beg%9hAPh<(BAF5u^',/h/51/Or5u2)[HS<)cco;>Z:JMY`2/M#W8.LAur-K`-O,Jq9esVkp2a
+U7\!FQ^3htO,]$RLk^V<M2R@TQ'n5=Vl[,1\\?#(cI:=qg"Y<<h;7&Gh;$`:e^Dde`k]0lY,\=l
+SXGb*NJWCBJ:)WcF)c&5C1q3jA7T3L@fBj?AS5^lD#J5KDYn;MC^>!%>?P'/=&i6!<W?#+;c-Fj
+<EN=)<``=&r`')";G^4epeh#e?\sYuN/is\P*;,qQ^F52S=Z@HTqeE\Vl6VrXfen4ZEpsI\%0)_
+]Y;.s_Sa@4a2lEHbg+M\dF-Oof%8R-g=tE=hV[8MioB+]k2tmll0@U$m-X60n*oi:o()DDo`"O`
+p&Ojcq#C0hqY^6hr;HTcrdk*#s2=qf~>
+JcC<$MuWDJrVc`nqtpEis7uWgs7ZNerq0XjoCMPDnaQ&:n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"^bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vkp2aTqJ!JS=>q6QBd\C@qp+6
+LRk"5T)YA]SH#)YRf8`TR/`KSQBda6PkUC7P5gXGOH5IsOSt=?OrKC8Jqo)8LL-jSU7n3PSXuFA
+Q^3hsOH5<XM3Rq'"dYLBQ^>Ga]`j^WH@h6>qiLi?r/go?p5o<:s,mGIP*5[*!L/lJQN!6MQiWYF
+rLEnY!1a"Y#+V6TSt;RHq4RVWrLj+_s.KCc"/)?\T_b;TScYOUT),#WSGo)XS-#1KRe`ESS=?#I
+S,f,ZT)YAXT)>5UT`(M_T)P8aT:VRCS"'DIrL3q\S=?%=rgj"XrgWnWrga%\rh'(\!29CdrhKFd
+!29@c!2KOf!i)KaqkO1es.]XiUSRmc!2f^mq5F4hri#gqqPXIpWi>lqpT+:priQ4'riZI/Z*L^B
+r3ZI2#I_+N\@K2_]DfK/^;.V'_o9X:aihoSdaZk$gtpuKjQ5Lck3)!pmd]uHs0/8ZIXQa<VNlXW
+Q_Cj9Qt1#6PZXQKGZn6U>-4s1Yl1d#Mu8J0M>i>2L])u-L&Zi*K)gM'rsA]'qtp3bqYU3ho`+ad
+s8NMVZ*(+'U8>06ZEL=-rhg:+Xg>IG\AQ.l['@$EXg"u'YPkV,M2I7NNfT<cPEhH#R$sM8StD^N
+UnsrdWN*&%Y->1;['d?P\[oGe^VI\&`5Ta;ai_fNcHjkbdaZguf@\d1gYL]Bi8ESSj5f=akNM0p
+lKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjr;H6dJcC<$`W(G~>
+JcC<$MuWDJrVc`nqtpEis7uWgs7ZNerq0RhoCMPDnaQ&:n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"^bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vkp2aTqJ!JS=>q6QBd\7>%2/`
+Fo6giJGjutIfFi\I._g]Hi8?eHiJI9B4PC[AS,OOI!g6dG'A+PFE2D@DJX-)BkV1!E,fi:EW0tf
+F)m;%O,f6[F)Yo7I=1s@s*OlrI!k^9rd=]ns*Xip$\!STIXZcqIXQWnIf+ToIf=irJH(6$KDgB%
+KDU?$L&HZ+Knb?WK`[!_LAlo,L&cr,L'*-aKn]JYre:<(rIt6(s+UH*s+LW0K7\c/KDpK$KDpQ(
+L&?T,KnP,5L&-JdK`Hf#L&Zl-K_pE%KE-c+L&-K"L%pE#L\uu+L]</1M>`8.LB<9gM>E,+Mu8P6
+NW4t;Mu/J4NV\V3NW"n8O8P+<OoLLCOoCLDPQ$gHQ26dHQ2HpJQi!-MRJrZdSY)RLUSOcbWN32+
+ZEpsHrNmr[[^Wi^_T:#eML08[EJ93rDeaEFNG*B0=%@1$H?ipn9i4ZAL4tB\L%pT(MYi80M#W8/
+LAuu-K`6T)K)>QDs7mH*p\4@Ro^_M?n*]T1n*ff;o_/%Tqu5OR-iX#=p@RnCm-*Tli7uu9da-.[
+`l,d1^:h+h\[f5[\\#Ph^qde&_Yh=O_?.Wl_Yq=N_@siVVj!:*Mhm4OQAg`XLPCV>Ll;4ms-*bL
+Nf8gOKnY3TL&H[-M2I7NNfT<cPEhH#R$sM8StD^NUnsrdWN*&%Y->1;['d?P\[oGe^VI\&`5Ta;
+ai_fNcHjkbdaZguf@\d1gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]k
+qtpBjr;H6dJcC<$`W(G~>
+JcC<$MuWDJrVc`nqtpEis7uWgs7ZNerq0XjoCMPDnaQ&:n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"=p-eC;pod*L"^bK@rJ`l5m5_SEq#]Xt_b\$iZMZEUO7XfJJ#Vkp2aTqJ!JS=>q6QBd\(7S?HO
+:f1*e;Ya2g:]OAl;#X>k;YO&g;#aDg;Z'De;?0Yo<<#ns;AV,D0/>7:1,VB_5Wq1j4?Yed3BB/Z
+3&ggo#<Fk-3]oJd48qAB:'jTe92%95:f:7kq,I8jr`&hppJh/ms&Abns&T/"!*9"ts&8qss&8nr
+rDiSkr)NVnr)N_ss&K)"!EE2!<<-"r<V9Am<;]Ys;Gg=jr`&_or`0"ur_rhrs&8bns&0&#<`W4#
+nl5Qd!*&hq"B8;u<)i]os&Ahnr`&kqr`&ntqGm`!<)Z[or`/ksr)Nbq"B8;u<EAuss&B"urDWbs
+rDj&&<`W4#rDrhtq,dW#pK@K!r`T)$r`T8)qcil"q-3f&!F9%1?iOO2@K0dG@q&tZAS5[iBkhF"
+BkRBU,\C_)D/sl)>#S6k9iY.`7R]F*8N\s_0IT":845Qs2EEis<)WWkpl#'-qhb<.s+gQ-s+UK+
+re"7'Vkp2aTq7dBQ^*\pNJiXMLPCP?MiEd^R@U(KX0/e>]Y_\5dF?b"gYCW@hV[5IgtUQ6e'Q=[
+_Rm4[XJ_hbR['%rMMHh7IX66\Ec,].BP(jfA7PUJraQ(AAnYmorGDFLs(qgTD/K/d+`E?L=BJU)
+<Dut"<`E'u;H$Oq='&L)=&r@'<`W0u;,L6d;>j<oM2I7NNfT<cPEhH#R$sM8StD^NUnsrdWN*&%
+Y->1;['d?P\[oGe^VI\&`5Ta;ai_fNcHjkbdaZguf@\d1gYL]Bi8ESSj5f=akNM0plKdg'mI'H3
+nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjr;H6dJcC<$`W(G~>
+JcC<$MuWDJrVc]mr;6NjrqZQgs7ZNerq6<`!;$3\=7PeKn*]T0m-Es$l0.<mjlGI^iS`YNh;-i>
+g"=p-e^W'qd*L"^bK@rJa2Q!6_SEq#]Xt_b\$iZMZEUO7XK/A"Vkp2aTqJ!JS!ob4QBdY@Ap&?L
+N;0"DSc>2[S,SlVRJrQVQ^3r&Q2QsCPOjq;On4\5OWosJMM-S;L59/DVP^&[U7RpHS=>h.P)kW\
+M2.@^QBd`$Q2R$M]tXKZ"MS6fG(BOPr/go?r/go?pQ5E;s-!DG!0[;ErKI;IrKdJMrKm\TS"-#I
+Sc>5WSc>8]TDkJfT:hjNU7n7XT)t[ZT_Y;]TF.BcTV%jLT:_dKTD>)YTDbAZSH,2WSc5/ZRerTR
+SGerWSH#2\T)bJ^Sbo#XTD"rVTDkG^TDtJ^SGo)WS,f,ZSGf#YT)Y>\SH>=PSberXTELs]TV8+W
+U\CJbUS=KXrhBFfr1s:dr1sIlVl9TmqPaCkrM]aqq5F.hqPsIos/c1$s/lL.YctC<rNlL1rj;a7
+rjNlW]"5Md^:q@u_o0L4`lQ9Fc-Ohfe^rO2hVdAPro=%?"m>1<nb)bXru\D:KmnH6X/D#,G`fA&
+N.au[N)NiJUKCZ$>?\/4Xg%c-rf$Z2rJLK/s+pZ0rItB-KS9>W!.qBR$NC#$qt^$^qYU6jp&G'k
+!<;oprr4)9[&pL.VPq,F[]m!9W2Q_nXg,=B\A6%q[^*<KYcP)(YPkV(Ll%"JNK9-_P*D5tR$jG5
+SXuLJU84W`W2cl!Xfnt6Za@0M\@K5a^;%J#_o0O7aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5]7`
+k3(sml0I^&mI'uB!V#XYncA@Srq6<bs7cNfrqZTjr;6HjrVc?eJcC<$`W(G~>
+JcC<$MuWDJrVc]mr;6NjrqZQgs7ZNerq6<`!;$3\=n2"Mn*]T0m-Es$l0.<mjlGI^iS`YNh;-i>
+g"=p-e^W'qd*L"^bK@rJa2Q!6_SEq#]Xt_b\$iZMZEUO7XK/A"Vkp2aTqJ!JS!ob4QBdY8?"Rkk
+H@gbHJc(&uIfOrsIHu7\Hh;X[HiAEgHQ.?HAmo(YAnOq;I=-9aH$4=PF)u>?DJX*&B4q*]rc/Eg
+EfQ0@NfK)nQYCGcrd=Nird=Zk!do?Ard=Zm!doEEr-nZqrI4Tks*sut!J,k%KDpK&K)pXXrIk3)
+r.G')q1\g&!JcF/L&?]*K`[!_L&?W'L&Qc(L&Qc*L&HZ.KnP)2KnTGX!/1<'!/1-$rIb0)r.G*)
+K].UdL4t?\L&m!]rIY9,KnbA;L&?W%L%U0#L\QZ+LPGb_s+gZ3reUK-qhY<1pko03MuJ\6NW+k5
+N;nn5N;AP5NrG+;OSk7@OT1FFP*;)or0@;Jr0@5Hs-N\Os-Z0BS=H.BTq\<XVPgDnX0&S0Yd(I;
+YHY:;[(!T[_T:$RgQIA8E,U2_Lj!TKEeesWBL63E84n/S:/"AY9o4UYLAci*N;8D1MYi81M#N2.
+L'!'^K`6TAK)5<<p\4CSo^hVBnF,c3mdTc;o_/(UqYf=O)#X7)o^_J<l0%*bh:gK0d*9bT`P]O,
+]t=9Ss0r?F]"G_k^qmn)qniHO_u@OP_>D(lh8PVAOH#-UPa7AiMhd"ALkpqKO-#HeQ&q&bMM[+A
+LA6K$KN3hbMN!OUO-,TiQ'Rf*S"#t?TV8*UV5L8lWiW>+Yd(OA[^WcW]=bkm^r""-`Q-'AbKJ/U
+cdC.heCE1&g"P08h;7&IiSrnXjlY^gkiq?tm-O--rpKmWnc&([oCW%Ts7ZKerqQKgs8)ZjrVZWm
+oDX=@JcE^hJ,~>
+JcC<$MuWDJrVc]mr;6NjrqZQgs7ZNerq6<`!;$3\<q5\Jn*]T0m-Es$l0.<mjlGI^iS`YNh;-i>
+g"=p-e^W'qd*L"^bK@rJa2Q!6_SEq#]Xt_b\$iZMZEUO7XK/A"Vkp2aTqJ!JS!ob4QBdY&7nQKO
+oMYQ`s%rMgrDNSk!)WYlr_WSkq,75ip/:ohrDX2(1bpd<1,:XD1-n/hr]C3C4oRJB48q2=2?G`t
+48q>Q4$#Gb4?QD7:.n;S-q6s0rDWMkr)<Sos&8Sis&B%upf7>ps&K&!r`&tu;u'Dk<VTPj<W5ts
+<<cK(<E<.#<W6&!<W?+q<V0>l<W,kr;Z9Vp<;T\o<r>qq;u9Po<W#nt<Vobp;uK\p;u]es<r>tr
+<;KVo<<#ns<;ohn<<#tn<WlE%<)Zcl<r>r%<)Z^p;cHfq<<-(q<W?,!<<H9'='#6!rDru$rE9&#
+n6,Wl"Bei0=^(],!ErY&>5DJ&>QS2;?N+=2@/"+0@fL!=AhRe/An>L_@UikWAS5^oEd)n^>ZOQp
+:/b(k7Rfd,6UEUe-8@S80LnMh1c@BT<)`Zkrf$Z2rJLK/s+pZ0rItB-KS9>W<.^j:SXPn2PECla
+MM[.DLP^qLOHZ*'U8=ilZF@H^`QQWXe^rO1h;-rFhqm2Dg=Xs'cH=)>\?`36URmp>PE1WWKRnT!
+G]n+HD/<s#An5F^@Uf7F#%_F]CM[j)q/-4MDZ4MOC^k5tChmd1CKakC<`N+#r`'V2;c-Ln;H?q$
+=B8L)<``:$;cHTf;>j<kLl%"JNK9-_P*D5tR$jG5SXuLJU84W`W2cl!Xfnt6Za@0M\@K5a^;%J#
+_o0O7aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5]7`k3(sml0I^&mI'uB!V#XYncA@Srq6<bs7cNf
+rqZTjr;6HjrVc?eJcC<$`W(G~>
+JcC<$MZ<>Jr;HWmr;6Kis7uWg!r)E^rq-<aoD\;]naQ#9md9B-lg!a!ki_*jjQ#:[i8EMKh:pZ;
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11X/`+rV50iZTUq^DR[BJ.Q!n3=G(#2@
+T)P;\SGo#WRfAfTQii\@QBhB4r0-Z6rfQl8rK/ajK7Sl7Ll#N;Vk]u\TUqdIS!TA(OckfaMi*gd
+Q'IZ#QC+&+R_HML]=ii`F*rf@O8b7?Oo(7?Oo1:@OoCIBOoCOBPQ-dGPPpaGQ2R$KQiEEXR@9V8
+S=Q7BrLEhWs.94^!20=`"e_Q`TqJ(WT)t[ZT_Y;]TECm\T:c"Rs.B.Zs.B4\s.01]q4.PVS,SlU
+S,AfVSc5,ZSc#)YSc#)YTD"rUTDkG\T)bJ[SH,8[SH,2ZSc>;]T)bJYSc,,]T:hnWUACYZUA(G\
+U]@1hV#@+nVPgAkVl0Bis/5jps/Gmop8S(l!3?$tri?(#r2ot%s0)O/ZMq31[/@?3[OJ\q\[oDb
+]Y2%p_Sa@3`lQ9Fc-Oece^`=+gYL`Ci8NYTjQ>[lmd^&LrVn"JVO)j`KVGlALjYPeduU>OF&\&t
+=IQ$g>@1W<X08Y0rNH'Vr/:N2qhb?/s+gQ-s+LH+re%HT$3'l"qtg-aqu-Nas82flruSkXYcF_"
+X1?'MYcaq%WMuu)[C!HZ_nELbZ*pp>Z1tO#Y$[!AMi<XVOHPckQ'[l+S"-(BTV8-VVPgAmX0&P.
+Yd1UC[^WfY]Y(tn_8=+/`lH0CbKS8Wd*^:jeCN7(g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc8
+nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@JcEaiJ,~>
+JcC<$MZ<>Jr;HWmr;6Kis7uWg!r)E^rq-<aoD\;]naQ#9md9B-lg!a!ki_*jjQ#:[i8EMKh:pZ;
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11X/`+rV50iZTUq^DR[BJ.Pu_*uBlA.m
+K):,sJGt#sII;L]HhD^\Hi8?hHPLp@@UNeZAnFngI<p3aG'.tMEcQ):rbMXMBP@Bb")r7#ErC%c
+NfT6\NF@$DE-M2,qgJEjrd4Zm!.4]mqL/9j!e5ZIrI4Wl#C_/PJ:N3%K(joqK`?c*K_gE"L'*3c
+Kn]DYs+LK.L&6Q%K`Hf)L&H])L&$B(KnP)2re1<(re19)reCH,pk8X#!/BZjs+LE+q1em%s+UH,
+!f)Mbre1?,r.Y*(reLN.rJ1-'re:E.reUT2q2"p)pl#*0rJgi9repf8rf-f6pPo04rf?r<qN:c?
+s-!GIr0@;Js-<VKs-<SL!13VN&"8uWSXl@GUSFW]Vl6SoX8K'uXY$]ZZ*_!O^;S4Bf\PPPNe)4g
+EeKI%EGK]LSTK0a=%-mp96tqZ:/k%bMM?h>rIt*,r/:N2qhb?/s+gQ-s+LH+rdtOPp\+:PoCDG@
+n,D_\n+#u@p@nF\rnm_nr;-0[o'bu2kN(UYgXt$(cHF>L`59:']Xn$O#J.O\^VRb'_Y(eI_SQ&b
+,/`'gR?<YmMMdCWP`(KWL5(VBM2RIVOHPlkNfAsRLkUS:q1\a"?\jPsN/`m[P*2&pQ^F21S=Z@G
+TqeE\Vl6VrXfek3ZEpsI\%0)_]Y;.s_Sa@4a2lEHbg+M\dF-Lnf%8R-g=tE=hV[8MioB+]k2tml
+l0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s2P(h~>
+JcC<$MZ<>Jr;HWmr;6Kis7uWg!r)E^rq-<aoD\;]naQ#9md9B-lg!a!ki_*jjQ#:[i8EMKh:pZ;
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11X/`+rV50iZTUq^DR[BJ.Pt"599M\LU
+;Y!]a;Z9Pf;#aDY;?0Yo<"Li?/i#1<1,VEb5<_+j4?Yh+3Xn)/3&`cR2**c\4$#A`rB(H`:/"AT
+/j2p+;H-Wo;u9Pk;uT_r;uT_r<V]Vm<W?%l<W?,!<W#er<W#hp<VTPg<<?-"<rQ)#<`N0!<rZ2!
+<r,hg<rZ1o;Z]ou<r>tr<rZ2!<<#ks<;ohq;up$"q,RJqrD`bpr)E\ps&B"us&ASinl5Ner)Wbr
+pJqJu<`N.#;cEZp"'&B&=8>nq<<-)!<<-)!<rc;"<<-(u=8l>%=oDIo=nc,!=92Q.r*0/(!*fA)
+rEK;*s',J-!+#P0!FK74@/sd8@/s^7@K0g=@UipI@K'Xa@:Nk\Bl8!;I=[,V>?+Hn:JY(a7n#L*
+90Y?c.jmD10M"Ym2EEfX<)ZWk;>Q7LMuAP1M>rD3L])u-K`Hf*K-d%UQ^!VoNJi[NLPL_FNfTBk
+S>)jZY-PLJ^Vn7?e(!"&gYL]Brnf*ZgtLH4e'H7X_7R(XWMQ8WQBRAgLP:>0I!KmVEGfT-BP(je
+A7K*JA,g'BAS,UjD"MWED>nAOD%CGuCMIX#GC3Us>#n['='#<#s&0"s;cQis<rl?'rDj)%<)QRk
+;Ya2f:g]$8Mi<XVOHPckQ'[l+S"-(BTV8-VVPgAmX0&P.Yd1UC[^WfY]Y(tn_8=+/`lH0CbKS8W
+d*^:jeCN7(g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc8nac8BoCW%Ts7QHerV6EgrqcQirVZWm
+oDX=@JcEaiJ,~>
+JcC<$MZ<;IrVc`nqtpEis7uWg!r)E^rq-KfoCMPDnaQPH;=<i<m-Ep#ki_*jjl>C\i8EMKh;$`<
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11WiE"qV50iZT:VUCR[BG,Q!e3JG_(kI
+T)>,URfAfTQii\@QBhB4rKH`6s,lr8)j-/:Jq/W2L0g^RUnFBST:VUBR[')!OcG<WMuK(BQ3<SC
+R$a?A^';9_]pYFAL&R24O8k=?Ont.>Oo:CAOoCIBOoCOBPQ-dGPPpaGQ2HsJQO&tHR[]h<St;MO
+SGf#YT)5,[T`1\aT`:VaT`(SaU'.0aUS=L\U&CYaT`CbbTDY;\TDG,aSXuFDSt2IDrgj4_S!ofE
+S,AfUT)YAVSck[WSXuGPT)t[XTDYA]U&LYaT`1P^TDkJdT:VXFSc55XSb\lSSc52^T:qtWUACY^
+U&gs^oV;;Zqka=j!N;plW;`^pVuWgmW;!:kWrK.!WrB'uXSo:$YPk[-Z*L^Bqm?C2s0a>b\[oAa
+]Y2%p_SjC4a2uHHc-F\ae(*(%f\,$7h;7&Jj6#OimIKuJqYq\ETT+MPMm'USIsI9Td>3g0;HAu]
+=du<n=^GB9X0/S/rNGsSrJUZ4r/(E/s+gT.s+UK+s+@]Y!<2uq"oA&jqu$H`s82firu^%%Y,S7p
+VmORMYHt:-WN<,(['mNZ_7mCeZF%!BXK_N(r2s4YM2I4MNfT9bPEhE"R$sM7StD^NUnjlcWN*&%
+Y->1;ZaI6O\[oGe^VI\&`5Ta;ai_fOcHjkbdaZguf@\g2gYL]Ci8EVTj5f=akNM0plKdg'mI'H3
+nF?MK!V>s_p&Facp\jmeq>^<gqu6NlrU^#>s+13is*t~>
+JcC<$MZ<;IrVc`nqtpEis7uWg!r)E^rq-KfoCMPDnaQPH;=<i<m-Ep#ki_*jjl>C\i8EMKh;$`<
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11WiE"qV50iZT:VUCR[BG,Pu_1(CN4[t
+K):,uJH(,rIIDR]HhD^\HiAEjHNRtn@:0"F(f,R.H['aZG'.nIF)Z#6Chd^!BlS-5EH1u!s)JHf
+NfT6]NK/11DKYr,r-\Ejr-SKkqgA6gqL/KoI!tsBrI+Zos*k0%JUrE)pk/Hss+UH*r.Y0*!/LQ.
+s+gN,s+^W0L\ul,L&Qc!L&Zi*L&?W&L&Qc)L&H]'K`Hl,L%p?"L&Qi(K`d'`KS98Wre:H-LAlo+
+K`$N(LAcf,KSB>Y!/L?(s+UE+pP8O""c%ecL5(K^M>2o)M#`G/MuSb5N<"q9MuS_9NVSP/NW+t;
+O8+h8OT:RBP5pjDQ2QsIQ2d0MQiEHQR0]7NS=H1CTVA7]V#dKmri,ms1o[LUX0&P/ZF%0V`6-EW
+h;[V_m$*EQE,U#\OaCqZFb-N1DdPh$DF[BEISEL7:ece#L5,Y\pPf'/regW1reUT0reCH,s+LE)
+&bYeenaZ)9mdKW6o(2SLq>C3KruD%8q"=7ImHWlriSWGDe^Ddfb/hT?_8![q\[f<N\Hfa[^;.S%
+_o)Air589G%`?6(`l[bNP`q/dMMdI_reqMIL5C_DN0'-`P*D,jNf8jPLP1EXL&?U-LP^nHN/is\
+P*;/rQ^F52S=Z@HU84T^Vl?\tXfen5Za7'J\@K2`]t_A!_SjF5aN;TJc-FY^dF-Opf%8R.g=tH>
+hr*GPj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjrVc?eJcC<$`rCP~>
+JcC<$MZ<;IrVc`nqtpEis7uWg!r)E^rq-KfoCMPDnaQPH;=<i<m-Ep#ki_*jjl>C\i8EMKh;$`<
+f[n^)eC2gmcd'eYbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11WiE"qV50iZT:VUCR[BG,Pt";;9hnRT
+;Y!Zb;Z9Pd;#aDZ;ZBZ)<&?<`/i#4<2*jMm5!Aj,!]`;'r]1!:s"ss?3^#Pc3rM/@48qtZ92&#B
+7o<4a<;]\m<;KPk<<#to<;feu<)Zci<W?,!<W5ts<W#hp<VfYr<E<0!<<Q?&<E)rs<W?)"<Vf_t
+='/N$<W,r!<)r`p!EE+t;ZKeq;[69%<EE4#<E8uu!*/hor_i_ps&B,$=',<#s&B%urDN\qr_ikt
+<E&corDiku!``3!qc3So!`MuqqGdGor`&ntr`8ttoi;&mqc!\u<`W=)rDro!r)Wbrr`9)#p/h)m
+oi^rk#?b/2>$>-7>lIt!>5h_+>l@t.?3=PB@:B(CrF#S4!+>e511"6l?=.,NA7oXpF*E"`LPh(P
+>?Oct9Mn\h7n#g-5[$<00I&&0/MBO^2)I?S3)idPr)*3IrJUZ4r/(E/s+gT.s+UK+s+;JXOcGBY
+M26qEMiNm_R%0kHWir_:]=u2(cI::og"Y?=hYuCYhV?l>f@80kaMY^"Z)aaqSX>V&N/<7?IscQd
+FE2;:CM@EoARt^KraZ4FBPM@#DJo8grbhaQrbVUOs(qRJ"`/7<@9Qe4<>\Y9=&i:&<Dc^r;cQn"
+<`i@(<``=#;cHTg;>a6oLP^nHN/is\P*;/rQ^F52S=Z@HU84T^Vl?\tXfen5Za7'J\@K2`]t_A!
+_SjF5aN;TJc-FY^dF-Opf%8R.g=tH>hr*GPj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<bs7cKe
+s7u]kqtpBjrVc?eJcC<$`rCP~>
+JcC<$MZ<;IrVc]mr;6Njs7uWgs7ZNerq6<`=S)+SnaZ,;n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"4j+eC2jncd'eZbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11Wi;qpV50iZT:VUCR[BG,@:X.sI>[Zg
+s.0.Zs-rqTrgEeRs-NbO!1!JHrKHo;!0dAEs,m#:s,6o0#D\%h@:#h.U]-teT*_'WR?N_qO,]$T
+r0IVRQ'n#-R_A^7#eRd:LjFZ7O-':#s,d5Bo8j-<OH>TdOoCLGPE_;qrfR8FrKR/E#a^pGR@9Y9
+St>qPs.'(Zs.91]$)!ubTqeBWTV/"WT`(S_UAq%hU&^ndU'%*^TqMCY!MH(^T)PAZT)YAZScG>\
+ScPCPr1!VS"eD6WSt;MMT)G;]Sc>;]T)bP`T*(a[TV2:Xrh':aT_kA]T`CbaT*CmZT:VXFSc,,\
+T:Z"Rrgs+[#bIZ\TV8*RU8%IYqkF+a!2B.]qkX+c!iDlnpo"=pW2HSnpo*teri6"!s/Q(!riH.%
+s/u@)#-bA;ZEggCq6^10.(?^t]">Vf]tV;!`lH3CbKJ,Td*gCmf%8R-g=tB;hVmMWkNhR,p\Xac
++n;V)KmnKIZ+5jBGcniNP,M?2I[+$/T;Yss>[1F4Y-"r+YP4"SMuJV3M>rD3L]3&.L&Zf+K=Cjf
+rquZkqtg0dr;HW`s8W)hruS\PXJ`,*\'2:`Z*C7,XK&J1[^N]a_mm1^[(!<BZ2(U#Y#U:7MN!OT
+O-,ThQ'Rf*R[]k>TV8*UV5L8kWiW>+Yd(OA[^WcW]=bkm^r""-`Q-'AbKJ/UcdC.heCE1&g"P08
+h;7&IiSrnXjlY^gkiqBum-O--rpL'\nac8BoCW%Ts7ZKerqQNhrqcQirVZWmoDX=@JcEdjJ,~>
+JcC<$MZ<;IrVc]mr;6Njs7uWgs7ZNerq6<`=S)+SnaZ,;n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"4j+eC2jncd'eZbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11Wi;qpV50iZT:VUCR[BG,='K*IDg(o-
+qgn`rs*jopm<nkZoQp@\rI"Wls(D@@(1h)h;,;ReH?sg[G'.nIEc5f2CMINsrG`KkF)l>BF*!D&
+O,o9[FE));I!gA=I/\QdI/89fIKP"GI!tsBrdF`o#(M/RJUrE)pk/Hs!/:E*r.P3,LPPk`reCK.
+q1es)reCT1KnY3QK`Hf)L&Qc)K`Qp^re19)rIk!#s+CB+qh4s&r.Y3,re1B-L&Q`-Knb;8rIt?.
+LAci*K_^<&KSB>Ys+gW/",DVdL\Z](L]3,-L\QZ.L4t>9LA-N(LB*/.M>`>1MuJ\4NW+n:MZJcr
+pl,'/rf6u=p5o<:rf[;Frfm5DrKIAKQC%Q;s-X7aS=Z@GTqeEZVP^9iVuilqWW&hNWN3/)YdM'W
+`6$E[iTBFmmdTeeO,%gtEJ]^:F_kcGNI,Sn7:BbH8pkr8:/+S^9o8k(r.Xm(rJUZ4r/(H0s+gT.
+s+UK+%tjEBnF,f6nF?&?pA"L^rnm_prqlK`oC225kN1[[gtC6,ccjPQ`l#X-^:_%frON6G]Y;.s
+_8=+_`;daN_C3=@`Q#s?b0AS*P*1f_NffcjMN!FJM2I.JOH>NbQ'@>jN/W[MKnk?XL&6O'Ll%"J
+NK0'^P*;/sR$jD4SXuLJU84W`W2ZeuXfnt6Za@0M\@K5a^;%J#_o0O7aN;WKc-FY_dF6Uqf@S^0
+g>(N@hr*JQj5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<bs7cNfs7uZjr;6HjrVc?eJcC<$a8^Y~>
+JcC<$MZ<;IrVc]mr;6Njs7uWgs7ZNerq6<`=S)+SnaZ,;n*]T0m-Es$l0%3kjlGI]iS`VMh;$c=
+g"4j+eC2jncd'eZbK7iG`Pf[2^q[Ur]=GJ][^<BHYck11Wi;qpV50iZT:VUCR[BG,7Rg$E:JpLW
+nPSmSs&&)[$o0Un0/>=>2Dd`d5X#$-$p$I23&icS2`3WW4?WU)rB(B]:JOSX9/o@:;#F;j;uTbk
+;uBSp<VTPm<<H3!;cNHjs&T(us&T(urD`_qqc!Vs=',B$s&T/"!E2ts<VTVp<rlE(rDihts&K(u
+s&Jnrr)<Vpr_j&$<E<1%<)lrs<r5ht<E)rs;uKYq<r?&!<rZ/"<;fbq<;oer<V]T!<E)pt<`N*u
+qGmPps&K(ss&Abns&B"ur`9"u!*B/#r)N_s!*/hor`9&#r`8qur)Weus&f/"rE0&#qH3DnrEB2'
+rEB5(s'#G,s'5S.!*oM-oih?!!*oM/s'>_5@/OL6@JaFn?X@&E?!LW??=.,NAnc(#FF&ImMiX!a
+Q'ci#<`)[g;H-Ud7RKL35rCbS1-7TP84>m(2**`X<)ZTi;>6%JMuJV3M>rD3L]3&.L&ZfJK8keH
+M27"IO-#QmS=ug[YHkUK^;S(:daZk#g>1TArnf'Zh:pZ8eBuO_`4`XcXJ_eaR$<\kLkUD0I!TsX
+Ec5f1BkV-kA7YUJ#\7LXB5)-uDJo/drbhXN!,VFG'l@i*F]hmL<)lt#=&r@$<Dujq<)lus<ruE)
+<rQ(u;Ya2e:fW=.MN!OTO-,ThQ'Rf*R[]k>TV8*UV5L8kWiW>+Yd(OA[^WcW]=bkm^r""-`Q-'A
+bKJ/UcdC.heCE1&g"P08h;7&IiSrnXjlY^gkiqBum-O--rpL'\nac8BoCW%Ts7ZKerqQNhrqcQi
+rVZWmoDX=@JcEdjJ,~>
+JcC<$M?!5Ir;HWmr;6Kis7uZhs7cQerq-<aoD\;[naQ#9md9B-lg!a!kiV$hjQ#7Yi8<DIgtUQ9
+f@SR&e'cXjcHXSVaiMNA`P]R.^V7@m]",;Y['R'BYH=n+WMl_kUnXQTSt2@>R$X(GBQn`RNqK"C
+Sc##XS,A`SRJiKSQ^3p8Pl-a>P5gaEP5g[COT1C?O;j48K8>5:MdE9XUnXQUT:_XBR$EntPE(T\
+MO4=.#+(UBR@0M4r4W;Dc#nQ%qN(T:rfR5Brf?]5$^$U9P*;,pPEM)mPPp^GQ2?jNQ^F/.S"',B
+s.91]"/)?^UAgnhU7n:ZTE:g]U&C\eUSO^^UApneUA^bhTV%gJT:Z"Rqk!eXqk!h[!hPsRrgWeT
+s.97_q4@SX!hPsSrh'1_"J;?\TV24V#,7fbTV.pLrh07a!20=`rLj%Zr1="_U&(A\T)bP^UA:S^
+UApneU@tA]U]I<hrM9LkrMBLkq5=@oW2KBgp8J%lri6%!ri?"!s/l=(s/uO/Z*L\7Zi7<3Zi%0Z
+[C3QT]">Vf]tM1r_oKj?bKS8Wd*^=le^i@)g"P39h;I;Tkj7g1q>U'e+g\#)JUrZead@j1Q__ug
+Lj3f:N)`uPTNbW&>[+D4YHG,-YP*qRMuS\4M>rD3L])r0KnP,3])Md/rqucm!rW#rg]&A9Yck+/
+Z*q]gYckF7Vm!5*[(!HS_8O$pZa-sDYH4u)YPYJ1L5:\EN/`m[OckroQC+)0S=Q7ETqeE[Vl6Vr
+Xf\e2ZEpsI\%0)_]Y;.s_Sa@3a2lEHbg+M\dF-Lnf%8R-g=tE=hV[8MioB+]k2tmll0@U$m-X60
+n*oi:o()DDo`"O`p&Ojcq#C0iqYU0hr;?Nbrdk*#s2b4j~>
+JcC<$M?!5Ir;HWmr;6Kis7uZhs7cQerq-<aoD\;[naQ#9md9B-lg!a!kiV$hjQ#7Yi8<DIgtUQ9
+f@SR&e'cXjcHXSVaiMNA`P]R.^V7@m]",;Y['R'BYH=n+WMl_kUnXQTSt2@>R$X(=?>++pHhN'i
+JcC9"Ifb(IIHl4YHhD^\HiAC(HY?u"An,Fd;13k>H$FLVG5cLpEGfQ.C2%ErEH#o;EcH)?F*)L%
+Ns1M>QYCGgp3cjfs*XfmqgA6gqL8Hm!doEEp3m!krdb$"s+:#uq1S["s+UN/rItE0LkgfaL]<2-
+L]3&)L&Zo'K`Hl)L&Qc'L&Zf.K7nr5qh5*)Kn]JYrIt'%#_e"eKnP/7Kn]GZ"G__dKnfPZq1\a$
+!/LQ.qhP$&reLH.r.k*("c%hdL5(KYM#W51M#<,.MZ&J4N;AP6N;nh1N;AP4NrP15OT1IBP5^[B
+PlR'JQ2d*KQ2d-OQ^F0>R0f=OSY)RKU8+N\rMMlYVl$>hVl6PnX/iJ2\@fYtcIUk6lg=-1oC_kQ
+plg\aF)lPgS:5HnFb-6-C11(0Ce%*DHVR=1;,<"(KnY9ZL%^K(MuS\4M>rD3L])r;KnP,3n*fc9
+o(2SMqY^?Lrtt\0p@IeAlK@6ehV?i9e'Q=]aMu07^q[SZ]*H!^^VI\&_o)Dj!6+lSp;?pL.)s<K
+b0/&UiQn3\OcGE^OdM;gN/iaMMi*CNP)tfiQ'%&cMi*=FKSK>Wqh/@3Ll%%KNK90`P*D5tR$jG6
+SXuLJUSO`aW2co#Xfnt7ZaI6N\[oGd^;%M$_o9U8aND]McHaeadaQ^sf@\d1gYCWAhr*JQj5f=a
+k32'olKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]kqtpBjr;H6dJcC<$aT$b~>
+JcC<$M?!5Ir;HWmr;6Kis7uZhs7cQerq-<aoD\;[naQ#9md9B-lg!a!kiV$hjQ#7Yi8<DIgtUQ9
+f@SR&e'cXjcHXSVaiMNA`P]R.^V7@m]",;Y['R'BYH=n+WMl_kUnXQTSt2@>R$X(-84uWO;=.9O
+;=RK_;=d]c;>jB.1GLO<0f(UC5sRXu4?GYg4#o;^3B&nr2?u*#4$5Sd3]m:&s%`Sg#>?R:9MeVc
+;uTbn;uTbr;uT\n;u0Gp;cH]o<<#r$<)Z^p<;'>l<rZ1u<r>tr<;fhq<";o/=&r@%<E<+"<)Zar
+<W,tu<W,tu<rlE)r`0#!r`9&!s&Attr)Netr`&bn%9->-<``:#<E3(#=&r?#<!--"<E8lp"'/K)
+=Su8#<WQ3"r_rhr"&i/u<VfYp<W,ns<W?%s<W?%s<<?,u;u'Gn<WZ9#<;ont<rZ/&<``=&<W,l!
+<E<.#r`&bps&T/$!*9&"!a/]0q,mZ"pK7DrrE0&%s&ett!ErY*=9)M"=p8,6>?kB:r`oA)!*T2&
+rEB8,rE]G0!FT@6@f'O7?<pk9>W5qp?XI5RBkqU-H%1R-Ocu&tS"61EU0Cf!;,0qj?:dRS4@2V)
+1G^O14>&<X7Q34_3B0r:;c*?gp5Js.s,-`2s+p]1rIuAIKS4u6MN!RWP*_]4VQ-f)\%BDnaN`/_
+f%A^3gtr%f-JmS5g=Xs'c-"#>\?i<9US!s>Oc>3OJUVumGB@kDD/3iuB4YUar*p"CAS,RhC2@d*
+q/6=RDf>Vms)%aQ!,_^OqeQ4J)/X80IrJh"=B8I%=&r:#<EN3t<*!%!=]\Z'<s;Q'<`Dsrpegob
+@"sJoMi<XVOHG]jQ'Rf*S"-%@TV8-VV5L8lX0&M-Yd1UC[^WfY]Y(tn_8=+/`Q-'BbKS8Wd*^:j
+eCN7(g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu]moDX=@
+JcEgkJ,~>
+JcC<$M?!2HrVc`nqtpEis7uWg!r)E^rq0CcoCMPDnaQ#9md9B-lg!a!ki_*ijQ#:Zi8EJJgtUQ9
+f[n^(eC)akcHaYWb/hWB`P]R.^V7@m]",;Y['R'BYH=n+WMcYjUnXQTSt):<R$V5oCit/ao:GrP
+rg`nUs-a"YR[X/B"IPOBQBhE5rKI#>rKI2Cs,m;Bs,[2A08tdCJr#/>?XTb/TqJ-NT:VRBR?`u"
+OH#0UR$X,,Q^3u+R[KVX]Y;%mK:/'QL\[#/OT(@BOSt77OT1@DOckolrfmAFr0.2HrKdPNQi39Q
+R[]iGSc,,]SXuGMT+%BeU8+HXUS=KVTV8(XU'7<dUSO`^pS%\`UAgkdT_b;XT)G5YT)G8aSt2C@
+S,AcYSY)OIqOR_[T)PA]T)YG_TE:g[TDbG]U&:YbU&L_bT`Lm\rgsLiTqS-PT:_dKT)P>bTV%pO
+T_k>bTV%mMU8%U]rhB7arhBCerhBCerM9Fhs/,dls/,gms/,^lqPXCnpSdeb!35psriH%"s/uC*
+s0DX1rNuU2!4;a5s0a5`\[oDc]Y2%o^r+15aihoRcdC1ieCE+$g"P39h;RGXlL+39r:0e1Z([&+
+K;u?3P^dtB\"JA:Lf.<8<*>]e>?k99>Hb-4Y-@i-oo/m.regZ2reLQ0rJ(?+!//&c!WN&pquQcq
+f`*&N[BHU0YH5I^YHYI=WN32(Z*_!M]YqOo[^*<LYcb;.YPPD*LP^kGN/`m[P*;,qQ^F52S=Z@H
+U8+N]Vl?\sXfen5ZEpsI\@K2`]t_=u_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sm
+l0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqYU0hr;?Nbrdk*#s2k:k~>
+JcC<$M?!2HrVc`nqtpEis7uWg!r)E^rq0CcoCMPDnaQ#9md9B-lg!a!ki_*ijQ#:Zi8EJJgtUQ9
+f[n^(eC)akcHaYWb/hWB`P]R.^V7@m]",;Y['R'BYH=n+WMcYjUnXQTSt):<R$UiX@VB\&o7Hpl
+s+(-!!IfIlI/eWeI/J?aHMr1$I!^3fHtd2'@:a"a;,MahrcnrpG'.nIEc>r5ChdZtF8g1ZEXm)1
+FE;M`NfT3\@X*9<GPZ[eHi/9jI/nZnHi/9fI0"eHr-nTmqgSKn!.Olrs+(-#s+:*"s+LE)r.P$&
+qhG-+r.t?-rJ:<*!euJcrIt0(qh>$(pP&X%",2D\K_L0&KS>)4re:'#q1Sp*KnY9ZLB*)+K`Hl+
+K`Hl,LB3-brJ(6*!f2ScqhP**!/^<'reLK/reLK/!/^]2",VnlM>`>1Mu/J2NUr,+NVne>O-#Hc
+Oo1:@Oo:CAOT^i0P*;+,Q2d'TQ'R`$Q'R`&R$dl@$C[HSSXuLJU8+N\rhodns/#am(T441XKJh9
+]"c5/e(`pHm-aE8p%S7XqYp@8P_jX)F,Z-TI;N\?M19;\AjJt(7n\,T:/+G[:Pjg[KnfMZoo/m.
+regZ2reLQ0rJ(?+#DDX<o_8.Wr8%Ajr;$*ZnaGf-jl,+Og""Qubf\#H`59=)^:a?T#J@dc^qmn)
+_u.FQ`Vd[S_uI[O__/mH`l?'@bKS5WdFHY5XHes1NK9!^Ru3/bMhm:KMN![ZOckumO,f0VMhd"@
+K_pK"KNa.fM2R=PO-#NgPa.T&R[]h=T:r!SUo(&hWiN8)Yd(L?[C3TU]"G_k^VRe*`Q$!?b0/#S
+cd:(feC<($f\,!5h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nc&(\oCV\So`Fj]p\jmeq>^<gqu6Nk
+rU^#>s+13ls*t~>
+JcC<$M?!2HrVc`nqtpEis7uWg!r)E^rq0CcoCMPDnaQ#9md9B-lg!a!ki_*ijQ#:Zi8EJJgtUQ9
+f[n^(eC)akcHaYWb/hWB`P]R.^V7@m]",;Y['R'BYH=n+WMcYjUnXQTSt):<R$U948kVrWlr*=M
+n50-^oMY]ds&'dl0et@91G^sH5sR[u4?GVf4?>M`3]K#V2`3\q4T@MC497N+r_<Yl:+e_):f@-g
+!)i_nr_rkrrDNYoqGdDlr`&ksrD`YorDj)%<`W4"<W,tq<W?%u<W?%u<W5r!<EE9$<WuK&<E3!t
+rDihts&Jttr)`brr`&ntr)NetrD`Ym!*&qt"BJN%<E8osr)F,(;c?Xp<E<+#='8]&<s)K'<)rlr
+s&JtrrDihrs&K"ss&K%tr`&qtr_reqr)Nbts&B2&<E3!tqc3Mmr`9"ur`9"ur`9&#r)iu&qH3]!
+!*Jtsr`K)$s&f/$rE',(>$:f+rE92*qHEl&!F/k,>5q_*>5;A&>lJ%-?N4@5?t&t@!af8?r*1"C
+?=75RB52:)G^b=(Od)6%SY)XPVPsKn+'M]B:JXtf>t@FQ3^c:s2_H7(4"W-V7Q31^3]L)<;Yj8`
+N;eb7MZ&D2L]E5/LAurnKTD7ZR%0nJX08n?]YMJ,c-k+mf\5-:h;7&HhVHu@g""Nrb/M-+['$C(
+T:2(.Nf&RCIscQdFE2;:CM7BoAn:dK$"RUZB5)*sDJjFiDZFbUDuFSRDZXfnD>e;KCDq#+DJjE5
+FEWIG>$+g*;cHh$<)m%#<)lmr<rH)*<`iC(<`N*s;Ya2d:g/X2M2R=PO-#NgPa.T&R[]h=T:r!S
+Uo(&hWiN8)Yd(L?[C3TU]"G_k^VRe*`Q$!?b0/#Scd:(feC<($f\,!5h;-rGi8N_VjQ5Oekiq?s
+lg4!*mdKW6nc&(\oCV\So`Fj]p\jmeq>^<gqu6NkrU^#>s+13ls*t~>
+JcC<$M?!2HrVc]mr;6Njs7uWgs7ZNerq6<`<qGnQnaQ&:n*]T0m-Ep#ki_*jjQ#:[i8EMKh:pZ:
+f[n^(eC)akcHaYWb/hWC`P]R/^V7@m]",;Y['R'BYH=n+WMcViUnXQTSt):<R$V5pGBne%n=KZN
+rgX"YSGSfURf&QTR$X*8Pl6g@P5UUDP5g[EOT(:DNJiLBL&QoI@&0TpTq\-MT:hXAQ'IPpNfAs_
+R$O&)QC"$=RfL/#^';9=S:-*ROSOt7OT1FCOT(=<O8t@@OT1@AOT(IBPl?mEPQ7$GQiEHQR0&hH
+SGo&`StM^KT:_eRT*:m]U7n9TrM0Cdr1a4d!2TUjs.oXhr1a4d!2BFc#,%T\TV.pLqO[_Xs.0Oh
+St;RHTV%jJSc5,[SXf\M%A'2bT:_^GSY)OGSXuGNTDkJbTq@tVT_tM[U'%*^TqVI[rh0=dqk=%_
+rh'1`rh':aT`(M]TE(_aU]7(\U]$neU]$thV5F6g!2f^k!2fal!N)dnVY[7jWVWReWW0!rX8f9u
+Xo,='Z*Ue6[/[H4[/RHZ[^WcW]">Vg]t_=u_o9X9aihrScd:+heCN:+gt^fHjll%#p&"1W+h"21
+K8#5hcC0`?H)fJZN3-<6H'MO&S"s4l?X6p>XKJ`&YPsOVN;eb8MYr>2M#W80LAur-KYdZgrr2lp
+quQcqeGgW(Z*((1bdPd&Y-bL8Wj&V/[C<WV`l,?qZa@3IYH4o(YPPD&L51VCMi<[WOHPfmQC!u-
+S"6.CTq\?ZVl-MoXKA\1Z*UgG\%&u\]Y2(q_SX71a2lBGbK\>YdF$Fme^rF*g=k?<hV[8MioB(\
+k2tjjl0@U$m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*#s2k:k~>
+JcC<$M?!2HrVc]mr;6Njs7uWgs7ZNerq6<`<qGnQnaQ&:n*]T0m-Ep#ki_*jjQ#:[i8EMKh:pZ:
+f[n^(eC)akcHaYWb/hWC`P]R/^V7@m]",;Y['R'BYH=n+WMcViUnXQTSt):<R$Ul\B5;O7n:LXj
+s*t3$IXQYAI/JEbI/SEbHMVskBP1gaAH$3Z:jdV:G^4FTGBIqHE,KK-CM@L'EcH)?EH;#!!KW9?
+Ns(GdI;O-'I/\KiI/eTpI/SEjHie_DI/\QoIfFoqIf=cmIeeKmJH(3"K)C9#K`?]'K`-W&LAlu(
+L]E50M"cZ,Lkg_=r.b6,!/CK,r.b0($&4.fL4tA:KnY3XL&Zo*K`Hl+L%U3!K`Qp^reCH,"bqee
+L51Q[LAlo,L&d#.LB!&/LAlu.L^8clLPLV>L51Q^M#E/2MM^n[rJ(H1M2D4f",VnmM>`>0Mu/J2
+NW4t:NV\V1NW"n;O8+h:OoLO@OTL]0Pl$aGPQ7!FQ4K=LR$jA2S"-">SXuIHTq_I\rhUI/VlHo)
+[(!`fbL5)$jQZ($oC_hPqYL-frr!r:Q]6H9FF&q=J9G^AKV<O)LJ)&cE(bG#Hqd@8;,3#JK`Hl)
+L&R),N;eb8MYr>2M#W80LAur0K_bNDh>\AkqY0XPmd'-!io&VFf$hshaiMN@_SEq#]`#JB]El3b
+^VI\&_o0Lk`<+&u`W!dU_u7OP_uI[T`@f0NaND`Ocd:.mg>1]8g6n(dO,flqRZ35cN/3=MMMdFW
+OHGioNfT-XMi!1AK_pK"KN<h_M2I4MNfT9bPEhH#R$sM8StD^NUnsueWN*&%YHY:<['mHR\\#Mf
+^VI_'`5Td<aihlPcHjnce'uq"f@\g2gtgiEi8N\Uj5oFckNM0qlg4!*mf)YZnF?)?oCMVRp&F^c
+p\jmeq>U6gqu-HkrU^#>s+13ls*t~>
+JcC<$M?!2HrVc]mr;6Njs7uWgs7ZNerq6<`<V,ePnaQ&:n*]T0m-Ep#ki_*jjQ#:[i8EMKh:pZ:
+f[n^(eC)akcHaYWb/hWC`P]R/^V7@m]",;Y['R'BYH=n+WMcViUnXQTSt):<R$U9592&+I;XREN
+;#aDd;Z9N>1c$m?0f(XB2*jMm5!:ti5!1ke3BK5Y2`<NT4?PYc4$5Vd4?WU<#Ye&e5"ACG<)ico
+r_iVls&8tsrDEVorD`eq#?4W#;GpFm<;fhr<;T\m<Wc?#;cWcsqGd\u<E3!s<;fet<`f9$"]\N$
+<E)rq<W6#!<Voho=8Z+s<W?,"<<6-#r)EVn!`W)trDikss&T/"r`8qsr_rhrs&T>'<``C*rE'#"
+s&T;'<)loq<W#er<rQ+u<;fes<;ons<;onp;uBT#<E<(!<E<."<;ont;uouuqc3GmrD`hurE&o!
+"Bei.<`f6%r`K5'pfIGsnlbcj!`rK,r`]>+s&oD,rE9;->[1M2>5q_*>5hb)>5qe,>lJ%-?3":/
+?3":.>lS(G?=.,NB5)7)G^b:$O->s#StVsYWN*&%rN7;K>#S0l;,gjp77BR1:-UR%.Pj.I0LeK#
+3&WiY3E/pS:\mrfNVJJ3MuS\4M>rD3L]3&.Kg16]U8P&s[(3ic`Q6?Qe^rI.h;-rEhr!;HgtUN5
+da$%U^q-qWWhlAXQ][;bLP()(H?XIODf0?(BP1pgA7PRK#\@U\BPD3tD/]2g!c`0urGMRPs).dP
+rG;LN*,]\6E-$2JI"6-\?!160<FSs0<E<(!;cHdt<EB$!#ZXu,<)cjr:f$scqG:4ILP^nHN/is\
+P*;/sQ^F52SXuIIU84W`Vl?\tXfnt6Za@0M\@K5a]t_A"_SjF6aN;WKc-FY_dF6Uqf@S[/g>(N@
+hr*JQj5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<b!;HHes7uZjr;6HjrVc?eJcC<$ao?k~>
+JcC<$M#[)GrVc`nr;6Kis7uZhs7cQerq-<aoD\;XnaQ#9md9B-lg!a!kN:pgjQ#7Yi8<DIgtLK7
+f@JL%e'ZOgcHOJSaN2B?_ns7)^:_+i\[T#SZa-g=XfSP%Vl$;dU7n3NS=>q6@V9P#I>mQb!1j+Z
+".bsOSGerVRf/WVR$X,(r075F!gJn4q3(]?rK@2Crf7tVM1^;7M25Q8VP^&]U7e'LS!oY-PE_8i
+Mi7S##FCgER@9V7SGp8&]EXIRH%D*>OS=h6OT1ICO8t@=O9(E(r/Ui?rfd5D"I5:;Pa2'2s-WhS
+#+D$OS=Q7Drh'=eTqVIY".u6YT_tJeU84Q[US7[]rhBIhrhT[nV5=0e!2KOfrM'RjU8"?ST:c+U
+r1<qZrLO"]rgjFgTV/!OT:VXFT)>,ZT)G;\SHkaWSXc7ASt>qRrLj+]rh0:bs.TLgr1a1a!McCf
+U]7(fT`ChXT`UmZTDbD`Tq_L\rhB(\rM'4c!2]=brhoam!2oanqPjCk!i`3"ql0OorMoq"rN-(&
+riQ4(s/lF.Za9J7s0_m8$+IFT\\#Me]tV8\_&'u,`5]m@bK\A[e(*+)gu%)Pkj.a1qYog\+gn))
+KS?PCjdCmOQ_rPrQ@MnhNE'2TTVu'u?<p^:XfSf(YPjIVN;eb7MZ&D3M#W80LAutFs8W)qr;ciE
+rufCgYcPOZ[a;Rf['d!5Xfee3\@9)e`4WOcZa7$CXKer+YPG>/L5:\DN/`jYOckroQC+)0S"6.D
+TqeE[Vl6VrXf\e2ZEppH\%0)^]Y;.s_Sa@3a2lEHbg"G[dF-Lne^rF+g=tE=hV[8MioB+]k2tml
+l0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0iqYU0hr;?Nbrdk*#s2t@l~>
+JcC<$M#[)GrVc`nr;6Kis7uZhs7cQerq-<aoD\;XnaQ#9md9B-lg!a!kN:pgjQ#7Yi8<DIgtLK7
+f@JL%e'ZOgcHOJSaN2B?_ns7)^:_+i\[T#SZa-g=XfSP%Vl$;dU7n3NS=>q6='K-IDftH!s+10"
+"+PcJIJnQiIIqpcHhD^_HQ[!5@p`h\Al*l'H['g]GBJ(MEc>u8D/<s%BlS-5EcZ:#ErgB(rf75C
+NGriPF8:4]Hi/9kI/nZoHiAEmIK"WoIK+`rJ+J-aJ,XuuJcC?"K)gT(KarcgKS5&4Knb;8LPCP=
+LAlu-M#N8-M"ui*M"uf*L]3#-LAuu-LAur/L4t?YLAHW(LAZc)L&cr#LAHT(LAll-L55\]!f)Mb
+reCK.rIt0(rJ10("G__dLPPe`rJCQ3!/^<'rJ(B/r/(9-qht<0rf-N."HAG%NK*mss,Zl8!0R8B
+s-!DE!g8e4q3CiCrg3YP!h#LHqjd\W9:hcLU8+N[V5:)iXg#.A]u8%?f\YZPmI9]>pA"L\r;HWp
+rr2loqtu\9H?F=jPH94RCNY6?EcYYXASak1H?jp5:/at`M2-e?LAQ]'NVSP4MuJV4M>rD3L]3&.
+L#)bHrVH<^o'br0k2YCTg=Oj$c-")H`507(^:aHWs1JBF#JRsg_8=+.`;R[T`qRIN_u@S0`Q#s=
+aihrSd*gIsgu%)RlfcZgP*1lmRus2$MN*XRLl@7LN099bPF%DlNJr^NL4tBZL&$C0L5:\DN/`jY
+OckroQC+)0S"6.DTqeE[Vl6VrXf\e2ZEppH\%0)^]Y;.s_Sa@3a2lEHbg"G[dF-Lne^rF+g=tE=
+hV[8MioB+]k2tmll0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0iqYU0hr;?Nbrdk*#s2t@l~>
+JcC<$M#[)GrVc`nr;6Kis7uZhs7cQerq-<aoD\;XnaQ#9md9B-lg!a!kN:pgjQ#7Yi8<DIgtLK7
+f@JL%e'ZOgcHOJSaN2B?_ns7)^:_+i\[T#SZa-g=XfSP%Vl$;dU7n3NS=>q67Rp-D:JpIVmnrIK
+s&&Mgr_X%Z1,(@:1c%$U5sR^74V'V;4$,J`3B&iR2`<c\4$*@'"$/M)4T/"X9fGO=:]=>k;uBPk
+;u]hs;u]_q;uK\n;uTYp<:j2f<WuK&;c?Xqr`8kqr`0)";cN`rqc<_s"&r9"<;]_r<;ons<WZ?'
+<r?%q<r>qu<`T&ss&8qss&/nsr_ierr`'&"<E</q<=2](;cHas<`N.#<r?#-<`N.$=&r@$<)lms
+<Vobp<W5tt<<-"p<W5qu<`T)ts&8hps&K(t"&r<$<;fhq;ufqk<rH"u<r?%t=T2D%<rZ8$=T)A&
+=SZ%t=SQ&!>5_V'=Sc)!=oDM(>Q.h+>Q7k0>?kE;>PhV&>Q.h+>Q7q.?2\+/>QA"*>5qeo>[:WA
+?X[GUBl.m7I"R99PaS)8USk)mY-5+9['R-GZEgf>=Ar!l='9!*77B=*Da664-o*n<0LnQ$2E!TV
+3)ijPq,.*Mq2G<2regZ2s+p]1reCH,3NTKn]"Z&$b0JJdf@em6hVR/Ji8<DIgY16-ccaAF]=+rD
+VP0KGP)kKUK7JAsG]e%GDJNouAnGWRAGp'FB4u!oCM[j*Du+GQEW0qUDuO_RDYn;NDA@)/E,p)F
+H[^O$N.Z.X=]nd/>?=p,r`05&;-$[s<*0'"$<L>0<`N$r<)HIgr)*8d@"sJoMN!OTO-,TiQ'Rf*
+S"#t?TV8-VV5L8lX0&M-Yd1UB[^WfY]=bkm_8=+/`Q-'BbKS5Vd*^:jeCE1&g"P39h;7&IiSrnY
+jlY^hl07L!m-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu]moDX=@JcEmmJ,~>
+JcC<$M#[)GrVc`nqtpEis7uWg!r)E^rq-<aoD\;XnaQ#9md9B-lg!a!ki_*ijQ#7Yi8<DIgtLK8
+f@JL%e'ZRhcHXPTaN2B?`59@*^:h1j\[T#SZa-g=XfSP%Vl$8cU7n3NS=>q6?tX_0KTb_os.'.[
+r13kXrL<eTs-`kR!gf4<qNUuCq3(]?rK8CfOGf!PK8GDA?sok-T:qpNStDRDR[08%OcGEZQ^=)+
+R$a?@Rgd!E]Y;+/`cZcuOcY[uO8P+>OnXt8NrbB+rfd8E"I>C?Q'V95s-WbQs-j@cSXuLITqS3T
+TqVFX!MQ1bT`Lm_rM0LiU8%X^s.o[krhfUis.]RgrM0@d#,.]^TV/!Nr13nZr1<hYs.BRiU7e0O
+St>kN!1s1^!1s(Y#+V6TSt;RHqk3t]rh07as.]Lf!MZ@fU&^teU]mNfTqS3SrLs:eq4dh]rLa4d
+US@.Nrh9Cfr1j=hqkj@jrMKIirM]XnrMoao!35srrMogsriH+$s/lU/Y-+t3Yd(P4[/IE4[f3`B
+\@K/^]Y2%n^VKfa'>h],aNMiTdF6_%h;I>Vl0e0<rTO8*^T3WTM2\^bb`dU%Pe*K3S<-TKO&fDT
+TVu's?<gX8Y,\f(YPaCUN;nh8MZ&D3M#W80L&cqIs7lT=ru^X=YH,@OZH'hb[CNQAXg"t5\$ro[
+`5&mkZF%'HY-Il-q6'aP=bqomN/`m[OckroQ^F21S=Z@GTqeE\Vl6VrXfen4ZEpsI\@K2`]t_=u
+_SjF5aN2NIbg+P]dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHnd+jZo_%nNp@n=[
+q#C0iqYU0hr;HTcrdk*#s2t@l~>
+JcC<$M#[)GrVc`nqtpEis7uWg!r)E^rq-<aoD\;XnaQ#9md9B-lg!a!ki_*ijQ#7Yi8<DIgtLK8
+f@JL%e'ZRhcHXPTaN2B?`59@*^:h1j\[T#SZa-g=XfSP%Vl$8cU7n3NS=>q6=^G`VFF3D,rIOru
+"b1uLI=-G;IIqpcHhVjbHO=CtARf=bB2MHQHiA6uFa&%MF)l8=Ci!j$C&N&QF)q8%s)SL,O,f9]
+>a/uCJ,+KhHi/9kIK"TmI/eWoHiSToIf=imIKP(KIt%3Cr.+curIb-'rIk6)re:B,!f)MbpkJj*
+rJCK/!/^T/",D\fL]3,-L]<,.LBN?cKnb?ZL&?])L]3&"L&H`/LPCP=L\c`0Knb;8L4t?\L&d#,
+LAQ`+LAci(LAco&M#E,-M#<,.MY`,/L\lo+LB*/.M>N1rMu8P3N<,'!rJpi;rK%#Ar/gr@#EY(1
+P*2#nPk^OCQMd($R$jA2R[]h:R[KP1R@9Y;Tq\<XV5L;oYd:gO_o^6Vh;d\cnFQ>Iq"ad`r;HBi
+,+=OBGBeFmSX4Y?C35>]A9D`T7;YOfH?t'99i4Y\M2-h@qM"j,q2G?3regZ2s+p]1re:E,i;Y5)
+qtTjTn*K?%j5JhKf$r*lbK%W@_8*du]Y(kg]Y(qk^;%M$_Sa:0rPecUpVm0Nqo(A2a2lEIcHjnf
+f@o*>jQZ(&pYP_XQ]dDsR#[MtMN3aWLlRIQNKK?bOd2&iNf8jRLkUW]L&$E%L09=hMi<XVOHG]j
+Q'[l+S"-(BTV8-VVPgAmX0&P/Yd1UC[^`lZ]Y2(p_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)J
+iT&tZjlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrV6Egs8)Wirqu`noDX=@JcEmmJ,~>
+JcC<$M#[)GrVc`nqtpEis7uWg!r)E^rq-<aoD\;XnaQ#9md9B-lg!a!ki_*ijQ#7Yi8<DIgtLK8
+f@JL%e'ZRhcHXPTaN2B?`59@*^:h1j\[T#SZa-g=XfSP%Vl$8cU7n3NS=>q67n?9H:f$IVmSW:H
+s&&Sis&&eP'J_<s1c%'J5s[[u4?Pbj4$,Ja4#m3t"#N,'48q8E4?>Pc4AYoN""?`6;#F;k;u9Jj
+;u]hs;Z]iq;uTbo;u]_r;cNNl"'/E&<Voes<W5o!<)lq!q,RDp!EE+u<Vfbk<W,l"<E)t!<rQ2#
+<WZ?)=8>no<W?#(<E)pr;cH^p;uBVn<W?,!<W?%q<<6&tqGdMrrDs)%<E3*!<s;T'<E)ptp/D,o
+<)lrm<;ons<<#ns<<#r&<)lpt;cH`p<<6-#r`&ntoN(oj!*9#!rE0)#qH*VtqH*VtpK7Q$=]t`+
+!a/W-r)`o#!*T;)s',M,r`f;*!aAi3q-3l&r`]D.?2\(2?!CG0=%l_!>$>-7>[CcG@qB=hE-6MZ
+Ll[diT;/9_X0/\4Za@0N\%&oV\@K5c?<U<+:Jt+s<(KJH4$u=r3&;a,4"W-V6q0'l3]T3";bg9f
+;>cFLN;nh8MZ&D3M#W80L,Xh!^Ve.9cd^Oug"Y?>hr!ANi8<AGgXjs%bfIZ6\$2p1U7@U7OGepJ
+J:2chG&qV@ChRHnAnCsPracCJB4u!pCi+'.E;X_UE;jkOE;XVSDZ+GPDZ=\UE?K@HH@:<sM3!pj
+H^SJM=B8U/<EE4$=&r@"<E<+"=&rH&<sVi.<E3!s;Gg9g;>F&gL09=hMi<XVOHG]jQ'[l+S"-(B
+TV8-VVPgAmX0&P/Yd1UC[^`lZ]Y2(p_8=.0`lQ6DbKS8Xd*^:keCN7(g"P3:h;7)JiT&tZjlYai
+l07L!m-O--n*fc9rpg?do^qhLp@e7TrV6Egs8)Wirqu`noDX=@JcEmmJ,~>
+JcC<$M#[)GrVc]mr;6Njs7uWgs7ZNerq-KfoCMPDnaQPH:%%E8lg!a!ki_*ijQ#:Zi8<DIgtUQ9
+f@SR&e'ZRhcHXPTaiMK@`59@*^:h1j\[T#TZa-g=XfSP%Vl$8cU7n3NS=>pUA8?@9NLcX.T(efU
+SGo#VRf/TTQ^3p4PQ6pBP5UUCOrBI@LP1J>M2>Q8V5BrZT:haGR[KM.PEM)gMuB"BQiNTRRfL/"
+^''OhI#*p`OSk.>OSt7;OSk4BOHG\(OSt4?OSk=@PQR5<Q^7H6s-WeRs-a+\S=Z=ET`1YaUAghd
+T_kD_UAgqgV>d:hUB76gV>[7kVuERmV>d4tUna`\US=HUTV8'OrLX"Zrgs(\rLa:eU8"?Srgj4^
+SY)MPTDtM]SHbUTSXuFFTDG5\T)kX[rLj4cqP4(brhKIgrhKLfoqVDYrh'7bn=ouZrhKFds.fRh
+s/#Rhs/5jns/5dns/?!sql0=iql0Uqr2Th!qlTn$ric:)!4)R1rjDd7rO2d:rj`*B]Y46Ws1]2_
+`5]m@bg4_gg"bKEkN_I)o_deM,.=;.Lkhk<d@,l>R]"f$LjrES=-?RLS"s1j=C,37Y-4q3q60^U
+qMbE3s,-c3s+p]1re:E,`rGu9b5WTuZ`gLG_7[msZb!KCXg,(4[CEi\`P]3n['d<HYH>%2rNH"!
+<ecBdM2R=QO-#NgPa.T&R[]h=T:r!TUo(&hWiW>*Yd(OA[C3TU]=bhl^r!t,`Q$!@bKJ/UcdC.h
+eCE.%f\5'7h;7&IiSrnXjlY^gkiqBum-O--rpL'\nac8BoCW%Ts7QHerV6EgrqcQirqu]moDX=@
+JcEpnJ,~>
+JcC<$M#[)GrVc]mr;6Njs7uWgs7ZNerq-KfoCMPDnaQPH:%%E8lg!a!ki_*ijQ#:Zi8<DIgtUQ9
+f@SR&e'ZRhcHXPTaiMK@`59@*^:h1j\[T#TZa-g=XfSP%Vl$8cU7n3NS=>pI>%),`Fb,,3K):,u
+J,t.KomQL\r-S3brHeWZA7K3MB,FHnI!^-`GB\1OF)c/<DJX-)C3+E9F*)I#Er_7"Ns1Q'EdhqN
+p3cgcpj<-iI!kd=rI4`qqgS0erI=s#JqEoQs+L9'rJ(-'"GhhgLku"d!/g`3rJ1H1qhPK6Ll$qD
+LPL]aL]2u.L5#V[!/:?*q1f',KnP-QL&-N(L\QW(K`Qp`pkJ[$!/CE*rJ(9+pk\m(r.t9-regW1
+reUQ/s+pW/s+p]3reg]5s,-Z2!0$K,r/:W8rJgl;r/Uc;rK.#@rK.&Arf[5D!0mGI!1*VLrg*PM
+"dYLAR$a<@RO4GiQBml*S"61EUSOcdX0&V4\@fYtcdpq4lL"*4pA"I[qYU3hrq-47QAg67G_qHN
+J95UOJuEg-Ak$3"DFenrHqm@0;,0iCL4k?XL&?r,N;eb8MZ&D3M#W80L&cqgrttb4q=aFLmHWlq
+iSE8?e^;^da2Z'6^qRMZ]EZ'`^VI\&_u@UQ`W!mT`V[[S`W*q9`Q#s>aND]Ncd:.lg"bKEkNhU/
+q>L?ffA`<`P*))qQ'dPkO,f'UNJi^TP*(onQ&go`NJiVkLAci$KN<h_M2@.LNfT9bPE_?!R$sM7
+StD^NUnjlcWN*&%Y->1;['d?P\\#Mf^VI_'`5Ta;aihlPcHjnce'uq!f@\g2gtgiEi8N\Uj5oFc
+kNM0qlg4!*mf)YZnF?)?oCMVRp&F^cp\jmeq>U6gqu6NkrU^#>s+13ns*t~>
+JcC<$M#[)GrVc]mr;6Njs7uWgs7ZNerq-KfoCMPDnaQPH9()*5lg!a!ki_*ijQ#:Zi8<DIgtUQ9
+f@SR&e'ZRhcHXPTaiMK@`59@*^:h1j\[T#TZa-g=XfSP%Vl$8cU7n3NS=>p884uWPr_`)]ohk`e
+r))`Us&&Si"App00JWP_&iDs@5<h:n4Zbbg4$#D^2`ETNr]:?G4$,Pc4?P\&:'40R8Po:`qc!Gk
+qc!Jnr_r_orDN_p;tsAe<WH.t<:s8k<r>tq<r>r$<`N1$<E9#t#?=`&<E3($=8l5(='/O)<`f0!
+#ZXi'<E3!u<`K#rqc*JnrDj&$<)Z[oqc*Vqqc3YsrE&u!rDs)%<E3)m;ufqj<;ono<<#to<;oku
+<`f3!rE&u!s&]2#rDi\pr)`o!nQ5WjqcWl$r`T/$r)Wl#r`T5(r*0#&qHNu)!*fG+s',M.s'8`5
+?!LT9<``@*=^#!5>[:ZC?t3e^C2S'=Jr,VUS=l^XXfo"8ZaR?S]=bei]t_=u_Sa=3aBD\D:/Ftl
+>"V:R4[Mt11,^U<.QT+L7n5Hp2**`Y<DlXlq,.'LqMbE3s,-c3s+p]1re:f7bg=nkf\5-;hV[8j
+iABHKh;$Z5d*9\N]st>KVkT`MP`^o]Kn4]"H$47KDes-#B4YXbA7]=aAnPdjC27['DJsLlEW:"U
+EW'kTEW0nYDfBXmDZ=VmE,fo?GBnObJqf5HQ^jeJR;ddb=]\^1=BGH%$rp5,<`<%!=BAO*=',B%
+r`&np!)WVkpeY"GLP^kGN/is\P*;,qQ^F52S=Z@HU84T^Vl?\tXfen5Za@-K\@K5a]t_A"_SjF5
+aN;WKc-FY_dF6Uqf%8R.g>(N@hr*JQj5]7`k3(smlKdg'mI'uB#4V0Ro(2JFrq6<b!;HHes7uZj
+r;6Kkr;H6dJcC<$bQ!(~>
+JcC<$L]?uFrVc`nqtpEis7uZhs7cQes7QEa!;$3\:\!rCn*]T0m-Es$ki_*jjQ#:[i8EJJh:pZ:
+f[n^(e'cXicHXPUaiMNA`59@+^V.:k\[T#TZa-g=XfSP%Vl$;dU7n3NS=>pRAp&<LOo:j?T(SWS
+SGo#XRf8`TR/`NQQ2m3IPlHsAP5^[EOt_iOKnG8?N*qF<V5'cZTUhXDS!fS-OckfaMjTp"R$jA3
+SXc1@^:q7o^T*?AKoqMpOT1C@OT1C;OSb1=O8tFAO91Q-P5UUDPQ@&8pm;#JrL*\Ss-j+\StD\T
+T`ChdUB70`U&LbgTq\9VrhTRj#,J)kUna`^rMKIi"/_unV>R+kV5'f[rLs7as.9@aSXobOrLa%]
+!29@c"JDBYSXoPJs.91[rgj+^pn.V\rhBCc!2B.]rhTLfrhTRhrhTRh!2TCbrhBCes.]4^!2TRg
+s.]Ie!2TRirhfXls/>morM]aqs/Q!rq5OLqWiGrqs/Q(!!3H1%!3Z='riZ:)r3-7-ZaBV;!4Mm9
+#e7FU]">Vf]tOEZ'>MB#`5]sEdF6_$gu7DZm-sT?r8IZ#ag%4jO,:oh]p+>!RAm-@Q&g!BP%%Rg
+TVu%!?X6m>XK\e2q60[Tqi(N4s,-c3s+p]1re?=1+O%3sY1<!OcaU*d[]QX:YHY@C\%KMo^:1MX
+Za-g;ZEF/0po\%ZL51VCMi<[WOckonQC+&.S"6.DTq\?ZVl6VqXKA\1ZEppH\%0&]]Y;.r_Sa@3
+a2lBGbg"G[dF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0i
+qYU0hr;?Nbrdk*#s31Ln~>
+JcC<$L]?uFrVc`nqtpEis7uZhs7cQes7QEa!;$3\:\!rCn*]T0m-Es$ki_*jjQ#:[i8EJJh:pZ:
+f[n^(e'cXicHXPUaiMNA`59@+^V.:k\[T#TZa-g=XfSP%Vl$;dU7n3NS=>pL?>"%nH2W<`K):,s
+J-(4LIeJ3bI//-cHN&7&BOt[_B4kpUBmk>SH$OOTFT-:]EGkbls(VOTrcJ-\%!6Q4F,l<AO,ea4
+Cj#Z'rdF]ls*OBcq0i0is*srqoRHgi!eGrTre(3's+UK-re:<*s+^T1r.k<.%#9XpM2@+HMMd7J
+M2D4frJ:N1qhb?/!f)SfreLH,s+LN-Kn]J[r.bN5LPUb@KnP-RL&Qi+L\-?$L\QW$LB33dq1ej'
+!f2\ireLW4Lku"b",MeiM"$9#L]3,0L]*#/MZ&J5N;SV2N;\\7N;nh8MZ8V3Muo!!NVSV5NrY:>
+OoCIAOoLUBPQ-jKQ'Ra8Q2d0LQi<<NQN<JArgP4&R$a;1S=Q:HUo12mXg,:E]=u/'ce%(:lgF?:
+q"X[]qu$Elrpg"5TojtQIsIZKOF)"`Fb>6`F)+liDc'/SH%&F^;c->ILkg\>q1\^*qi(N4s,-c3
+s+p]1reBS8)>s=(oC2/5kiC^Zgt:0*ccjJN`59@*]tD&X]El3b^V@S#_Sa=i`VdaS`VIOP`tZP6
+aN2KHc-Oecf%A^5iT07ko(W%Zs!$jqUR%()WOS(ZO,K'[Mi*LRMN<m]P*2/oNfB!SLk^S<K`-W"
+KOKRhLP^nHN/is]P*;/sR$a>3SXuLJU84W`W2cl!Xfnt7Za@0M\[f>b^;%J#_o9U8aN;WLc-F\`
+daQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]kqtpBjr;H6d
+JcC<$bl<1~>
+JcC<$L]?uFrVc`nqtpEis7uZhs7cQes7QEa!;$3\:\!rCn*]T0m-Es$ki_*jjQ#:[i8EJJh:pZ:
+f[n^(e'cXicHXPUaiMNA`59@+^V.:k\[T#TZa-g=XfSP%Vl$;dU7n3NS=>p88PDiT:]4/[;Y<oc
+;ZBVY;#O8g;A(f@0ebC?1cIN_5=%Fp4?GYe48q;?2Ztrp4$>Y(48qAB48hnW9g2'C;>F2h;u]bq
+;Z]os<;ohq<;oho<;]\p<;KVh<rQ&!<E/Tjr`9"ur)W\prDinurDWr#<)cju<rQ2#<rZ;"=8Z+u
+<;ont<WH+u;u9Pl<W#l"<E)mqpf7>ps&B&"q,[Psqc<f!<VBAl<Vobq<W,no<<H3!;cN`rr)E\r
+!*&ns!`i<#r`&r!qH!]"=8l8#<VTVp=8c1n=8c5$=8c7t=T_i1>$Co.rE0&#"^"o1>$>/0>5VV"
+>QA"->5qe->[./1s',M.s'5Y1>Q.h+=WpsQ>[CcF@:Eb[BPM@%FF8b#PF8#<WNEA0['dBR]=bhl
+rkU5(_o0O6aND`OcHfj&<DcLg@9$;u7RTC+5X%(Y/297@0M"]'3&WiZ3E/pV;,d9fqi1K3repf6
+rJCQ1s+gT.1Y:=6gtprGi8N\Si8<DIg"+TtbJh6,ZE:(#Sskn+N/<7?IscNcFE)58BkV-jARo=_
+Ac?9HBPD3tD/O92n8\AHr,D^Ur,4N5EH6,AG'J=]J;&i@PF8#<Wj&nEL6,hH='9'J='&C&<``7"
+<`E1$<`N4&<``:%<Dl^o;,C*f;><srKnbA>MMmFRO-,ThQ'Rf)R[]k>TV8*UV5L8lWiW>+Yd1UB
+[^WfX]=bkm^r"".`Q-'AbKS5Vd*^:jeCE1&g"P39h;7&IiSrnYjlY^gl07L!m-O--n*fc8nac8B
+oCW%Ts7QHerV6Egs8)Wirqu]moDX=@JcEsoJ,~>
+JcC<$L]?uFrVc]mr;6Njs7uWg!r)E^rq-<aoD\;VnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgtLK7
+f@JI$da?Fec-4AQaN)9<_SX+']tCqe\@/fOZEUO7XK&7tVkp2`Tq@pHRp]cBFaT.<qjm5Jp722R
+rL<hUrgEeRs-EbPQ26aFPOt"QNJraGM2@-t@&KcsU7e6PSXl:?R$IZ5%#p45R?s8.R@Bb<S"9Ml
+#/=EjGCcBJrfR,?!0@)?!0@,@!0R/?rfR/@qiUl@r0%,FrfmJLq3V,KrL!nZS"#q=St;VST`Chc
+U]7(fU]."fV#$nhVPL'eVZ3RoW;`drW!]H"VPU,bVP^2cU]-qjU7n9RTV).RrLa+_!hl9\rh9If
+TV)4TpR_GWrgj(\s.B%Y"/2H`U]-t_U]7.iU]%"fU\pqdV#[=jV>d7iV"g_bU@Y/[V#-qcV>[:g
+VuEXiWV<FlWVNRmWrT7#XoGR&Xo>L'YPtd+Yl_8=[/IB8[^WcW\c0/D]=bei]tXK\&Ac<)b0JDb
+f\>BIl0e*7qYo:M,IXM6Mi+=2]q(.3HEG#POgn[q=,g6`SY)i`>$kQ=YH4q1YkbI&Nr4n6N;eb8
+MZ&D3M#W80L5Q!R]s4ZUmCCNVZF79JX0]%7ZaI?V]#M[u\$i]PZECI8Y5YX!Y$6U7Ll%"JNK0'^
+P*D5tR$jG6SXuLJUSOcbW2co#Y-5(8ZaI6N\[oGe^;%M$_o9X:aND]McHaeadaZdtf@\d1gYL]B
+i8ESSj5f=akNM0plKdg'mI'H3nF?MK!V>s_p&Facp\jmeq>^<hqu-HkrU^#>s+13os*t~>
+JcC<$L]?uFrVc]mr;6Njs7uWg!r)E^rq-<aoD\;VnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgtLK7
+f@JI$da?Fec-4AQaN)9<_SX+']tCqe\@/fOZEUO7XK&7tVkp2`Tq@pHRoER"Bl8'Dqgn6gqgnZq
+s*k#tp3l^`q0W$cs*G`!B4kUaB4t+<I<p6cG^"=SFEDSCE,BE-CMS!5rH%mYrJq/C8t9X:KR<WE
+rdF]l!.4]m!.FWipjN*irdXoro7-^hrdt0&rIb0)re:K0L55_^qhP$(s,$f7pPK!0MYr;2MYr>2
+L^T&qLkgb?LPLV=Kn]GZrJ1?-"G__dKnT5Tre:N1L5(K^L&d#)LB!&)LAZi,M#2u,LAZi*M#`A2
+M#iEfrJ1K2M#E21MY;l,M#N/0M"uo*MuSb7MuJ\2NW4t;MuSY7Mti52NW"n5O8k=?Oo:@COckn*
+PQ$gHQ2d0MPlR-JQiE?UQ^F//S"-#JRi\,nU84]eXfo(@]"c/'bg=npiofXso_81Yr;?Nlrp0S.
+Q&U??H&7?AJTu'HL5pUuQ:sY9D+REIH%/O`;Gg2HLkpi]K`I/2NVe\6MuS\5M>rD3L]3%nrtbS0
+p[n"DlfdHihqZl8e'Q@\a2Ps4^](qG]El3b^VI\&_o'Fj`VdaT`V@IPa8O'lai_fNcHt"hf\50>
+jQGn!o_JI^s!.16e<uM]R^nTNP`(T`N/N^TMiNm^OcbuqO,f3WM26k@KS9>YpOlb)L5:\DN/`jY
+OckroQC+)0S=Q7ETqeE\Vl6VrXfek3ZEpsI\%0)_]tV7t_Sa@4aN2NIbg+M\dF-Oof%8R-g=tH>
+hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kr;6HjrVc?eJcC<$bl<1~>
+JcC<$L]?uFrVc]mr;6Njs7uWg!r)E^rq-<aoD\;VnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgtLK7
+f@JI$da?Fec-4AQaN)9<_SX+']tCqe\@/fOZEUO7XK&7tVkp2`Tq@pHRmoqB9M\J]qbci\p/1`c
+s&&)Yqbd>j)Dj3*0/>=>2`3rg5<q=o4Zkki4$,G_2E!ELrAjp?rB1*A#u=8j:/<619i4ja<;]Z!
+;H$Oo<E)rr;u]hr;uBSr;cH]p<;T\q<rZ1s<WH/!<:a,i<rZ8#<W,tr<W,r'<E<+"<)cjtr_ru"
+<`W<$<WZ?)=T2D#<WlK(<)clq<Wc?$<)`Znr)N\rr`/ttq,IJs=',B%r)Wl#qcEYq!*/horD`hs
+r)E_rq,IDor_ir!<E<+!r`&qtq,RGor`/nus&B5'='&F&<r5tr<rQ2"<r5tj=SGtu>5)2">5_\'
+>5qh)>lS+.>QA"-=ohi2r`fD+!*fG-s'>Y0=Bes5>[CcG@q0(`BkqR*FEr:dLldplTr+rs['mKU
+]">Yj^r""-`l?'?aN;WMcHab`daHUn>?Fd!;,gFs91D9:6:O:"8h)&84"W0W6q0'm3]]9"<)E<d
+!06u:qi(N4s,-c3s+p]1reCI1!T;r9i[*R@hqd#<e'Q=Y^q-nUWMH/UQ'.,aKn=f%H?XIOE,99&
+B4YXbral(@#\RjeCi400E,b>e"EJR)EcV/!s)S-Zr,=]:EcQ5DG^=dfK85DJQ(+JFXL#FM_T.\5
+H!OQS>@pr<<``:$<`E+#=B8F(<`W:)='/I&<)Z^l:Jh$fpJ>(JL5:\DN/`jYOckroQC+)0S=Q7E
+TqeE\Vl6VrXfek3ZEpsI\%0)_]tV7t_Sa@4aN2NIbg+M\dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sm
+l0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kr;6HjrVc?eJcC<$bl<1~>
+JcC<$LB$lErVc`nr;6Kis7uZhs7ZNerq6<`"S;3TnaQPH8ac!4lg!a!ki_*ijQ#7Yi8<DIgtLK7
+f@JL%da?FecHOJSaN)9<_ns4(]tCtf\@/fOZEUO7XK&7uVkp2`Tq@pHRq-,RGCl"PSai<GSH,2X
+S,\rWR0K%FQ^3r&Q2?gGPP((]N/E=@Ll%!rUnjo^U7\$KTq%U@Q^*_rOGo*aR@'A0S,SodS\;_N
+^:f,[PC/=NOSt=6OT(C?O8tF@OSk7>P5LLDPl6jOQ^F,,R$X0=R/WNRRfAi[S=Q7DT`1VbUACYa
+U]R<eV#."fV?*TlrhfmrVl6PnrMoms"K85rVPa?j"fA,jTq\:\U&UbcTDY8\TDbG]U&LbdU&L\a
+T)5/ZTE(S_SH,8\TDG5[U&UkeU]-tgUSRmar1j=fr1s@fs.oIerMKOhrhKLhrM0Ces.]RiqkF.e
+rM0@fr1X7gV5=*eqPX@lq5O:lr2K^rs/Gjp!3?("riQ+$s/l:'s0)F+"0o2>[/@<5\%'!I])TGB
+]b.un^qmq-aNW#^gYh/UmIU,PfDd)T\=/VHLo[\eR#-3YVq7'.GufNEP#Y_UUfgl(?X$^:XKSc#
+Y5jU]NVe\6MuS\5M>rD3L]<*druf%^Ye&K"_Srmi\?r<AYd(I>\@]Do`4NLc[^NHEXg"r,YP52$
+KSG5;M2R=PO-#NfPa.T&R@B_<T:r!SUo(&hWiN8)Yd(OA[C3TU]=bhl^qmn+`Q$!@b0/&TcdC.h
+eCE.%f\5'7h;-uHi8WeWjlY^gkiq?tm-O--rpL'\nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@
+JcF!pJ,~>
+JcC<$LB$lErVc`nr;6Kis7uZhs7ZNerq6<`"S;3TnaQPH8ac!4lg!a!ki_*ijQ#7Yi8<DIgtLK7
+f@JL%da?FecHOJSaN)9<_ns4(]tCtf\@/fOZEUO7XK&7uVkp2`Tq@pHRois.CN4UnJan?hJc(&u
+J,XolIJJ9dHi89jHNRqn@UT1J%T.V#I!L$^F`qtOF)l5<rbVUL!-8'\&T`&8FE;PbNfT6]@WQm8
+G^Ff6I/eWjI/\QkI/JBmI/JElIf4crIf4crJGaltJ:INJ!eGrTre(6(re:B,r.k<,qhP')s+p`5
+r/:N2rJLZ5rJCN2!Ju^5M>`8-LB*)-K`Hl)L\ur3LPCP;KS92UrJ(?+rJ(?-r.Y6-LAlu-L'!-b
+LAco*M#2u-LB!&+M#W>1MZ8P4L]N?grJCQ3oniX'q2#*/rJU]7rep]5s,Ho9rf$f6qMbH6rf6o;
+qiCf?qN(`?P5CIBPl?sJQ3*>;QMm-qQC+&-R@9V8SXl@FU84`iYdM!R_8a^If%]-Bjlu.%p%\F^
+roF))Z]p2lJ9d'1OFD7eGClf:HsoKRA8Oh1H[SX`9i=b_M2-h?L%p<$Nr=t7N;eb8MZ&D3M#W81
+L@,!YrVH9\na>`,jl51Rf[eKtbfRoE_nj+$^:jNY#edse^qmn)_o2Mmqo8WSqSrQUrlFuY&^/GF
+d*gIsg"bKEk3DC*pA4d_s!$@bS<K/&Vim@4NfT9^MN3XTNK93aP*VJsO,]*ULk^Y>LAlo#K`?d+
+Ll%%KNK90aP*D5uR$jG6StD^NUSOcbWN*#$Y->1;['d?P\\#Mf^VI\&`5Ta;ai_fOcHjnce'uq!
+f@\g2gtgfDi8EVTj5oFckNM0plg4!*mf)YZnF?)?oCMVRp&F^cp\jmeq>U6gqu-HkrU^#>s+13p
+s*t~>
+JcC<$LB$lErVc`nr;6Kis7uZhs7ZNerq6<`"S;3TnaQPH8ac!4lg!a!ki_*ijQ#7Yi8<DIgtLK7
+f@JL%da?FecHOJSaN)9<_ns4(]tCtf\@/fOZEUO7XK&7uVkp2`Tq@pHRn#qA:/=[[;=RQX;>a>l
+;=.3V;?'Mr1,1L;r\F[75sR_#r]L`R5!1ng3]T,W2`3HR4?EC%!B`IB:'XKH5#+pR;cEHjqc!Mo
+r`&qtpf$odqc3Yss&B)#=8c2"<W5ti<W?)&=&r@%<W6%s<W,tr<<H9%<`T,us&B)#=8l8#<rc;"
+=8Z,!;ufqq<WH/!<<#ks<;T\n<WuK&<E3!tqGdMrr`B)"s&T8(='5H&r`B)"!*/tus&8turD`Ag
+r`9"us&8qss&T%trDrkss&Att!*9)#!EN5!<rZ/"<r5tr<rZ8"<WH8$=7TJa=TMW-qcWu(r`]>)
+s'#D+r*05-rETA,s&oJ.>$Co0!*];*s'>Y0s'6jU?t3b\Bl%^-Fa8FgLQ%:YR@^4RY-GCF]=u"o
+^qmq,`Q#staYM#^bg"DXcHjkbdaQ^reRr)c;c-Fm<E;[\6Tm_25WCSJ1HRZM0LnVm2)[HS3E&jS
+;"mfeNr=t7N;eb8MZ&D3M#W81L&g33iZmF?hqd#<e'Q=Z_7R(WWhc;WQBI5bL4Xo'H?XIOE,99&
+B4h'QralCJBkhI%Df9UbE<(%WF8p:[F8g4[E;so7EcZ;DFa/4[It<?3O->s%U8b?(]>)8)c-W5/
+Lg4+b>$t<1<``@'<`<%!=BAL'=B8L*=T2A#;Z]in;#X>d:fi=)L5:\EN/`m[P*2&pQ^F21S=Z@H
+U8+N]Vl?\sXfen5Za@-K\@K5a]t_A!_SjF5aN;TJc-FY_dF6Uqf%8R.g>(N?hr*GPj5]7`k3(sm
+l0I^&mI'uB#4V0Ro(2JFrq6<b!;HHes7uZjr;6HjrVc?eJcC<$c2W:~>
+JcC<$LB$lErVc`nqtpEis7uWg!r)E^rq-<aoD\;TnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f@AC"dEp4bbfe/Ma2Z*9_SEq#]Xt_a[^EHIYck11X/`+rV50iZT:VQ\@;9q4MOa@1nXfTJrLEeT
+s-`tVR/WHPQ2m3HPlHsBOs#dALkCM>MI0ehVP9iZTUqgIS"#k3OcYWaN0fp"R@9WCS-ZjB^:qA*
+R<sVdOSk77OSt:AOT(==OSb1;P5^[FPl6jMQ^F/.RJ`ESR@9P4rgO%]St;RIr1O+br1j.brM9Ol
+V>d@gVuN^sX/u9##-+Z$Vl6MkrhostV5'cZr1O=fT:V[HT:c+Ur1OCjTqS-PT:_^Hqk*k\s.B=_
+s.B:`qP!q`rhKIes.oXhq5!tc"/M]fV#I1jVu!7jV>I(gU]7.hUB@<eUSRj`r1s=es.fXirLsFi
+V5:&erMKLjrM]Rlr2TXnpSn4oriH+$rN?1(qlTq&ricL0ZF%";[Kj:O\@K/]]"@sTs1SuY_Sa@5
+bKn\li8j4mpAEA=,dsV9Nf'^5XIkZ,HEOoVKoph3<K's^Un+;b>Zk?:=g"s3Y-@])!06u:r/CW5
+s,-c3s+g`3L5(Tc+O%@'Z-V+:b.+[c[]Zj>Z`pdG\\5bt_76q_['m9CZEF21p9%hWL51SAMi<[W
+OHPfmQ'[l,S"6.CTq\?ZVl-MoXKA\1Z*UgG\%&u\]Y;.r_Sa=2a2lBGbg"GZdF-Lne^rF+g=tE=
+hV[8MioB+]k2tmll0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#s3:Ro~>
+JcC<$LB$lErVc`nqtpEis7uWg!r)E^rq-<aoD\;TnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f@AC"dEp4bbfe/Ma2Z*9_SEq#]Xt_a[^EHIYck11X/`+rV50iZT:VQR=^Yo\Fb9:;nUgXhr.+fs
+rdOWj!.=corI"Efs*>K.Bk:jbAnP^P:jm\9H$FITGB7kIEH#gpC]nNpF*2X(F:3/4FcVQDO,f]U
+D0>i)qgA?jqgA<ir-\HkrI"QlrdOirs*jrsrIFirrI=p"JGt0#KDpQ(L&Qi(LB*)+L]3,/M>iD0
+MZAY2MZAY6M$&WnMMhCk"H&%mLku"b!f2Vere:B,qhP**re:E,re13'r.b6*rJ(<,!/CB+",M_e
+LAH]&L]WEhL]3)3LPCS>qhP6/r/16*re^`7MYi81M?/Wmq2,-/!Ju^3MZA_8MuSb5NVnh5NW"h9
+NVeb7O8=t9O8k:COckn(PQ-mIQ2?mGQQhfbR[T_8S=Z@GTqeNdYdV-Y`QQZ\hW!\^lgF<8pA"O`
+ro!f$QAgHDG`.E7JpM?LKoCS"E+3'@Ce.3HH$i@]9MnS]Lkpe>pOiO,r/LW5repf6rJCQ1!f)Mb
+nGaC)qtKdRmH`utinrMCf$_phb/_H<_8!^u^&GYM]tV7s_8=(,`;R[M`r=$Y`rF*ZaSX*Yaq;kC
+cd:+if@es:ioTCknauVTo`#Epq4X(;PGFt=R#m>iO,X'ts,ISOP*2#pOcYT_Mi!4CLP5Y\on6_-
+LPUeFN/is\P*;/rQ^F52SXuIIU84W`Vl?\tXfnt6Za@0M\@K5a^;%J#_o0O7aN;WLc-FY_daQ^r
+f@S^0gYCWAhr*JQj5f=ak32'olKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtpBjrVc?eJcC<$
+c2W:~>
+JcC<$LB$lErVc`nqtpEis7uWg!r)E^rq-<aoD\;SnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f@AC"dEp4bbfe/Ma2Z*9_SEq#]Xt_a[^EHIYck11X/`+rV50iZT:VQC7nZQP;"RWT;YEuc;ZBV^
+;#4#k1bpd=r\G6H2*jJl5<_1n5!(ng4#o;Z2E*KSr&ag=#Z"/i:/+>M:f73jpJh&h!*&kr!*&en
+oi1ih$!(&*<)lq!='&H%<W?%i<<-(u<<H9'<`],urDrhrr`8nrrDrr"r`08*=BAR)=&rB$<Vohs
+<W?#";cH`n<W#ns;ufqt<;KVm<X_u0=BAR)<`N1%=&rAs<W5tf<W?,!<=2]*<E)t!<`N.#<rH,"
+=9)D$<<-"t<W6#!=8l5'=&r=$<r5tt<r#hs=9)Fr=92Q,nQGim!EiV)=TDS%=oV\&>Q7t->Q7t*
+>6%k)>Pq_+?2e.T?X[DSB5DI)FaAUnN/j*fR@g7PX08k=\\5bn_Sa:0`Q#s?rlP5arlk>cs3:_m
+d*^8>dKS$&=]/'pr`'q17mf[16UEpo/h8>4/hfgc7Q<4^3]T3"<)QOhpe_$Or/LW5repf6rJCQ1
+.#3P3io/kSh:gK0dEKVH]<n`@V4a<DP)bBRJq&/oGB@kEChm]sAnLsPs(2LKBkhI$Df9UcEW:(Q
+F8p7\EW1"XF"qcZGC"XcJVAo>P*VQ0VQ@)4]YMM/cI17qgQ\@9>$>'8=B8I&<`W:%<E<4'<E*""
+r`9A+=&r=!;c-@fr_`Ac@>'AjLl%%KNfT9bPEhE"R$sM8StD^NUnsueWN*&%YHY:<['mHR\\#Mg
+^VI_(`5Td<aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6naZ2@oCV\So`Fj]
+p\jmeq>^<gqu6NlrU^#>s+13ps*t~>
+JcC<$L&^cDrVc`nr;6Njs7uWgs7ZNerq0.\oCMPDnaQ#9md9B-lg!a!kN:pgj5].Wi83;GgY1?5
+f@AC"dF$:cc-+8NaMu3:_SEq#]Xt_a[^EHIYct:4X/`+rV50iZT:VQ`AT;pGOoCsFSai<KSc##V
+S,\o^R@'A.Q^3r&q3:oCqN;t[MhZkAM2P`9V5L&\TqIsKSXZ(6PEM)jMjTp#R$jG5rL=2-^:h4o
+D:3WZQ2QgBOTgi/OcYZerK.#@!0I)=rfI#>!KrZFP5gaEPl?pNQC!u,RJ`EPRJiTSRg#=RStD[L
+rh9FeUA^kaV#."gVY[4jVu`ltri?F.XK/A%WMlbnVu3IqVPKu^rhBCcs.KCarLj1arM':b"JDBZ
+St>hO"JMK^TqMCWrh0%[!MZ@gV#R4iV#@%gV#I.gV#@.iV#@+iVZ!FlVZ3IsUnso`Una^`V#R:k
+V#7%hVZ!=iV>d@iU][HjVPjBir29Ros/>goqPsImpo=@ps/c4%s/u@)s02=&s0)[3Za@-J[f3`A
+\@K/]]=bhj^AbkU_SjI9c-b+siTKY&rQkKioYmJhQ&2H>Vj`TnR&AT%NfR=a=--EbSY;ud>%(`A
+XKJb/Xg%T(s,R&;r/CW5s,-c3s+g`3L5(Tc,/:Le`8nVS]X#&WZECO>Z*h*O]YMS+\[JlQ[Bd!?
+Y-"n2p9%YQKnbA>MMmFRO-,ThQ'Rf*R[]k>TV8-VV5L8lX0&M-Yd1UC[^WfY]Y(tn_8=+/`lH0C
+bKS8Wd*^:keCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6h
+r;HTcrdk*#s3CXp~>
+JcC<$L&^cDrVc`nr;6Njs7uWgs7ZNerq0.\oCMPDnaQ#9md9B-lg!a!kN:pgj5].Wi83;GgY1?5
+f@AC"dF$:cc-+8NaMu3:_SEq#]Xt_a[^EHIYct:4X/`+rV50iZT:VQU?"RhkHiAWiJan?hJc(&u
+J,auhIJnQgHS/uDART4`BMa&'I!Ks]G'/"OF)l2:DJa3(F*)MHF*)PHFEM_eO,f9]<h3uGI/\Ki
+I/A?jI/A?kI/JEkI/A<lIf=irIfFoqJH(,tJGt-"K)UE&K`6]*L@g9"M#W>3MY`52N;SV6Munop
+M>iA8Mi*CMN;eb7M>E#.L]3#/LPGb_qhP?0L5(E]K`-W(LB!&,LAll-L55b_nV@.#s+^W2M>W20
+LB*/0L]</3LPUfbMYN&.MZ/P2M?AcoMi7Rls,6i5s,-r9Mi@Um$B0n$N/WaUNfK*YoT&j/r/U`:
+qiCi@OSt7?O8tFBP5CIBPQ7!JQ2m9MQN*9oR$jD4S=?"=T:r$WWNED5]u/%Bg#(iRm-sW>p%S:Z
+rS7E!_jlO6J9d!/LOaSaGCul=DJi$M88^pkH[:0::/XqbM2@"BKSK8Ts,R&;r/CW5s,-c3s+g`3
+L5,@#(&e%(p%%P:kiLd\gY(0+d*0VP`5BFj^&YkG]El3b^VI\%_Sa=k`V7CMa8X0[ao'<\b7VtD
+d*^=mf@o$:iT04gn+6;NnGacujI;BsR];U@Oc>KaN/WdVNK90`PEV<!OH,9YMMR"AKS5&5p4Q\'
+KnbA>MMmFRO-,ThQ'Rf*R[]k>TV8-VV5L8lX0&M-Yd1UC[^WfY]Y(tn_8=+/`lH0CbKS8Wd*^:k
+eCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6hr;HTcrdk*#
+s3CXp~>
+JcC<$L&^cDrVc`nr;6Njs7uWgs7ZNerq0.\oCMPDnaQ#9md9B-lg!a!kN:pgj5].Wi83;GgY1?5
+f@AC"dF$:cc-+8NaMu3:_SEq#]Xt_a[^EHIYct:4X/`+rV50iZT:VQC7S6BN;#XAc;=RQX;>jDl
+;=79Y;#iEO0`Ej32*jPn5X,01"["k/4$#A#2ZPc849mr/4?GYe4?WU<s%NYH928;^;Z9Vg<<#ns
+<;ol(<)lpt<)Z^p;cENl!*/tsqGmPpr`/u"r`'/%;c?Xq<E/iqrDWer<;okt<rQ2!<W,r#<E)su
+r)Nesqc3GmqcEeur`/_o!``3!qc3Mo"'&<"<W5tq<<6-#r)O#%<``=%<EB*!s&K/#<;BPm<:s8h
+<rQ+q<rZ/&<``@'=8l>%<ruE&<W#nt=8l5#=8l8#=8l7m=8uD&=o2=k=o2>$=8l>$=oVV'=oV\*
+>Q.n-=ohi4r`fD-pKRT$.:$1`?!^oH@Uit^CN+EBJVT5IQC4><Uo:>sZa[KW^;.V(`Q#p<aN;R'
+b5TTabl>iib0.uPc-?75!71Vj,\g[f<)Z[r<`)FZ6p3k45rCPM1+G@;0LeK"2`<ZW3E9'W;,I!a
+s,R&;r/CW5s,-c3s+hhRL5+R>f[S?o`k]0mY,\=lS<oG"MM?_4I!KpXEc5c0B`;WAAcH?IB5)*s
+D/X?3qf2XVqJlLTs)\-\"*8R*F8^.XF!YpNG'J@]IXm',Mia3kSti9f[(3oga3;r[e_/a7iM_Zh
+?<UH8r`:%<<E<+#<)lt$<E3+&='/R+<`N1!<Duaj:Jk!_:gAX,L51VCMi<[WOckonQC+)/S"6.D
+TqeE[Vl6VrXf\e2ZEpsI\%0)_]Y;.s_Sa@4a2lEHbg+M\dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sm
+l0@U$m-X60n*olHncA@Srq6<bs7cNfs7uZjr;6HjrVc?eJcC<$cMrC~>
+JcC<$L&^cDrVc`nqtpEis7uZhs7ZNerq6<`:\4/JnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgY1?5
+f@JI#da?Cdc-+8OaMu3:_SO"$]Xt_a[^EKKZ*:C5X/`+rV50iZT:VQ\C3OuZS,JrSSc>5ZSarBK
+Sc"udS",t;R[TY3R$X,)Q2-[DP9c<TP*1f`LP1J@N*g(jVkTl\U7e0NS!o\/P)tcbN0p$$R[flG
+S-kk$^:h71Q?I\;Oo1=7OoLOAOT:L>NrY:?OoCOCPQ-gGPPpaEQ2d3NQiNQPR/`TQRLYgWSXuFF
+Tq\<WU8+KZU\^eaV>d@lVuN^qVuN[rWi>ruriQ4$s/H1"Vl6QnWW/muVkp3gUB@6aU7qIW!29=b
+r1WnX!20:aqk3t_!2B@as.TXkUnjc\r1s4br1s7ep8.keV#I1jVYm4iV>@(gV#[ClV#dHirh]^o
+VZ*FlVZ*FhVZ3RoW;*@fWr&dpWrB'tXT#@$XoP[)YQM)5YHRl.s02j8ZaI6M\%&uZrjifU]Y2%o
+^qde'`Q--Idam12k3r'Dbl8ouW1&m.^T"3)QABjn]r$dnJmaCoQ;q.ZToN>]?<g^<XK\f"YQ'X]
+NVnb7MuS\5M>rA4LPC]d,/1Lk_Y_Kp`4!1e[BR!CZF.0P]YDJ)^ppe]\$<-<Ycb15or_AKKnbD?
+MN!OUO-,TiQ'Rf*S"-(ATV8-VVPgDnX0&P/Z*L^D[^`lZ]Y2(q_8=.0`lQ9EbK\>Yd*^=le^i@)
+g=k?<h;@/KioB(\k2tjjl07O#m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0iqYU0hr;?Ncrdk*#s3CXp~>
+JcC<$L&^cDrVc`nqtpEis7uZhs7ZNerq6<`:\4/JnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgY1?5
+f@JI#da?Cdc-+8OaMu3:_SO"$]Xt_a[^EKKZ*:C5X/`+rV50iZT:VQT?taG"JGk)qJcC9"Jae9h
+Jc(&uJ,auiIJnQlHR!obHYI)&@V9=e:f)LdH$F^]G'A(LF)Z&8Ci!j$F`_bIFEIJ(!HaA$NsK$7
+BQ&-DI!^5<I/SHpIXQYCI//0jI/\NsIXQWlI/86mIXckHIfFooJ,k)tJH(2uK)UH'L&Qi*LB*/+
+L]*#/M>iD4MuSb9MuJY;Mi<UQreq;EMMd=NMi*CMN/`dSMuJS6M>W/5LPCV?L5,V]reL]6Lkgb?
+q1\j'reLK-"c%hdKnbB^LA?W)LAHZ.LkgbAM>2o,LBWKjLkgeCpko$,s,-Z2reg3're^]6rJ^`8
+oSrp2rJpo;rJp`8r/go?!0@,@s,m;Dqih#Dr0IAL!1<bP+IJUeS=Q4@SY)UNVQ-c'[_'H#eD&sF
+lgOE:pA"L]qu5:K-'jRFI!M'8MM$7rC5Iq%EdqOmASlEW9R;#':/4Y`:Pjm`KnkEXK`@)2NVnb7
+MuS\5M>rA4LPGR')?0O.p@@\=kiLd\gXt$(ccaGM`5BF+^:q;[]F;Kf^VI\%_o'F2`Q#po`;mpU
+a8a6\ao9E`bKBe,'?n_Hd*^=lf@o'<ioTCin+-2JrU0\/j6W5!PFBI]QBmVoOcGB\NK0']P*2&r
+R$!JiN/WOIKSKJ[on6D!KnbD?MN!OUO-,TiQ'Rf*S"-(ATV8-VVPgDnX0&P/Z*L^D[^`lZ]Y2(q
+_8=.0`lQ9EbK\>Yd*^=le^i@)g=k?<h;@/KioB(\k2tjjl07O#m-X6?mfr:Oo()DDo`"O`p&Ojc
+q#C0iqYU0hr;?Ncrdk*#s3CXp~>
+JcC<$L&^cDrVc`nqtpEis7uZhs7ZNerq6<`:\4/JnaQ#9md9B-lg!a!kiV$hjQ#7Yi8<AHgY1?5
+f@JI#da?Cdc-+8OaMu3:_SO"$]Xt_a[^EKKZ*:C5X/`+rV50iZT:VQC8PMrU;>jDg;?'Jl;=IKY
+;>a>l;=79[;%#390JG:=1c@6W5=#33'0SN@4?>M`2`EWR2Ea2c4$5Se48q>J:/+JY.mHg*;uBPm
+;uBSp<W5r!;cH`q<W?%t<W?"o;uouur`/tts&B&"rDihrrD`hur`&qtr_rbp"'&B&<W#hr;ZTit
+qc<\rr`0&"<;ont<rZ7q<Vohq=8uA(=&i8s<WH/!<r,hl<q]Pm<Wc?&<E9$!"'8K&<rQ+u<X)Q'
+<)lpt<;T\q<;0D^<rQ/#<rH,"=Sl2!<r?%t<WH5"<rZ8"<r?&!=RTAm>5VP%=Sl2!=Sl8$>5qh+
+>lS"2>$G6:>Q.n(>Q.n,?2n4V?!LZB@:NhZBPVO.H@^m4Q'e)7USb&nYHkXJ]YD;#_o9X9aSj3^
+b/qd)apcD5a2l<AaN2KGb0A00c2Z'8cd5p";G^=p<E;db7RTU36U3X`-o*nG/MT[^5rLV]3]^5=
+;G[!`s,R&;r/CW5s,-c3s+h\NL=O_s`k]0mY,eFnS<oG$Mhcq8I!U!XEc,].B`;WBAc?9HB5)*s
+D/X?3r,M^Vqf2RT!crI*rcS3^rcA*[rcA*]s)g>HH@:6nKSYSIPF%c4VQ@&3]>2D.cdUFrg>1ZE
+i8M1nN*BLf>\R8A<`W:%<`W4#=B8C'=]ea,=T2>+<)Q[m;,C+eoh\_BKnbD?MN!OUO-,TiQ'Rf*
+S"-(ATV8-VVPgDnX0&P/Z*L^D[^`lZ]Y2(q_8=.0`lQ9EbK\>Yd*^=le^i@)g=k?<h;@/KioB(\
+k2tjjl07O#m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0iqYU0hr;?Ncrdk*#s3CXp~>
+JcC<$K`C]DrVc]mr;6Njs7uWg!r)E^rq-<aoD\;SnaQ#9md9B-lfmZtkN:mej5T%Uhqm2Eg=k32
+f$r3tdEp1`bfe,L`l5m5_8!^s]=PP^[^<BGYcb+/Wi2hlUnXQTSn;SQFb#RESc55VSc,)WSb8TN
+SbnodS"-"<S!oe6R$a5+QBhH6!1!MI,*S7TPELi]K8>DCNF8QZVkToZTV%dER[TJ)P)tfcQ^F//
+qO@i)^:h1md[kc=rfR2AoT9-8r/h&BO,s:%!frG*rK?r>s-*PLPl-dMQC+&-R@*r@rL3bU"e;-S
+StD_SU\pqfV>m@hV>d@kVZ<[pVuN^sWiPos)m$*?WMleqWiE"sW2QPhUnjc]U8"<RTqS-QU&:Y_
+U&L_`T)bP`U&UheU&L_bT`Um\U&LbdU&:VfUnsl_U\pqcU\pqfU]%%hVuNUkV?!OmV?*NjqkX:i
+rho=as/5jns/,pqV5='ds/,mrVu<RmWV<FjWW&ptX8T.!XoGR'YQ(j,YPYR'Ym7VB['d?O\@MOK
+'>2#m^qmn)_o9^@d*pY%hra:trlP0cbb:DiLT7>PT9=YlVq@<!TV>:aN)s5]SYTIo>$bK<Y,ne.
+YkG7#Nr=t8N;nh8MZ/J4M#W51L5Z'Ud(6]sho`gU\[T,YYd:X@[(*ZX_8OC2\@8oS[BQg=Y-5&%
+Y%!$:L5(M@Mi<XVOHPckQ'[l,S"-(BTq\?YVPgDnXKAY0Z*UgG[^`l[]Y2(q_Sa=2a2lBGbK\>Y
+dF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqYU0hr;HTc
+rdk*#s3L^q~>
+JcC<$K`C]DrVc]mr;6Njs7uWg!r)E^rq-<aoD\;SnaQ#9md9B-lfmZtkN:mej5T%Uhqm2Eg=k32
+f$r3tdEp1`bfe,L`l5m5_8!^s]=PP^[^<BGYcb+/Wi2hlUnXQTSlf90C2eKMJc:8sJc1,tJan?i
+JHLFRJ:RWKs*jTgrHnTlrd4uuBP(^cB4u!Vrd5B)H?aUWF`VSEE,TW1D/+*3F*)O$FoII%N<Z,+
+Cit,RIJS?jIJnWmI.i!gIfFfrI//0jIf=fuIXckDJ,t4Or.4ct#(qS^KnY89rJ1?-"G_ehLPPha
+!/^]4regc8rep`6s,Hr8"H/4sN/[ao$B:(*Mi<RQMi*@JreUT0!f2VdqhP**s+gT.rIk?.LPCQ_
+L]3#0LPCQ]LB*)+LBE?fLPGb_!JlO&M#N/6Ll%"HM2I2hMuJV5M#`G1MZA_2MuS\3MZA_6MZAY6
+MuJ\8NV/>1NVnh8O8b7<O8P(>Oo:@BOcoU*rKR>IrK[GMrKnapR$jG7StDUGT:r'ZXKJh9]"uP<
+gYq>]mdp,Gq>1!drR_&Qoq%"lJU.6O*J&TUG_2i=E-R(&7;YUjI<g389MA;[:5Oa]L51KWKE.&2
+NVnb8MuJV5M>rD3LB*)+ru(h6q"F=JmHNcmi8!#9da-.Z`l5j2^V7Fqrk&QN^;%J"_8F40`W!mS
+`W*sVa8a3bai_cLbKS30bQ#fdbn8:KdF6Xtg>1ZGjlu+!o(MnWlMi+)U6h10WgK-AOcPWcN/s!Z
+OHG]gPEqT#O,o9ZM2-h@KS>-QKOTReL5(M@Mi<XVOHPckQ'[l,S"-(BTq\?YVPgDnXKAY0Z*UgG
+[^`l[]Y2(q_Sa=2a2lBGbK\>YdF-Lne^rF+g=tE=hV[8MioB+]k2tjkl0@U$m-X60n*ol;o()DE
+o`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#s3L^q~>
+JcC<$K`C]DrVc]mr;6Njs7uWg!r)E^rq-<aoD\;PnaQ#9md9B-lfmZtkN:mej5T%Uhqm2Eg=k32
+f$r3tdEp1`bfe,L`l5m5_8!^s]=PP^[^<BGYcb+/Wi2hlUnXQTSjl4D9Mk^cr_iPhrD<GinP]-Z
+r)3PlnPK0]!\uJ`r\OR3#=1[@5X%=o55dPN3B/rU2`Ei^4?GYerB(*B:Amlh=@Z+`q,75krD`br
+r)<YrrDWbsqc*Pp!*&_nr`9&!r)E\rs&T/"!`W)srDWl!<`W5u<;f_q<W#nt<<6'!r`8ttr`0)%
+<`JiorDresr`B5'<`f3"rD`huqGm>ls&K&!rDa&&=&r@%<EB*!q,Ri&<`W4"<)lt!<E/]ms&Anr
+qc<_sr)WYqs&T)"s&eqqr)WVpr`8qus&]8(r`K)$r`K&#s'#G*rE/qus&K,$qcEu(>$>-7r*95*
+r*05*qcj&)"'o5??i=:W?t*YXAnYmrEd<1jNKTWtTVJB`X0/_8\@TAh_Sa=2`lH3CaN4>#"NJF!
+`5DPjs2+rXa2lC%b5]Wbbl5j5Tj(Vu;GpLp;bBSK5!`"22E=#H-Ts+;8Ol912)@6R3E/sT;H!3c
+!07#;r/CZ6reg]3s+p]1(l#i;['$I-Tq.R8OGemHJ:)ZdFE)58C1mNXrFPt?#A7acCi+*/E;X_T
+Er0kTErU1\FSg4XF8g:\FW5ONI"-^"LPq1UQC=GBWN`b@^Vn4=daZn%gu&+hs5F";,d3kC>[1E?
+:fgb!<``=&<E3.&<E3.'<`iF(=&r@$;H$@f;,R!_@Y9>gL5:\EN/`m[P*2&pQ^F52S=Z@HU84T^
+Vl?\tXfen5Za@0L\@K5a]t_A"_o0O7aN;WKc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak3)!nlKdg'
+mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtpBjrVc?eJcC<$ci8L~>
+JcC<$K`CZCrVc`nr;6Kis7uZhs7ZNerq0+[oCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f%&9udEp1abfe,La2Q!6_8!au]XkY_[^<BGYcb+/Wi2hlUnXQTSmc>YH\RlWrga%\pmqARs./bQ
+qjmGNs-s%Wrg3hTQBmf#rg!JI,F+LXOH56OMi3I"USXl`TqS*OTUqXBQ^!YqO,f3eR@B\7S,Jia
+]tV4n]UH]_Js2AsOoLO:OTUc/P*5a*$]pL5OHGWeP*2#lP5LLHP`q;qPl6jIPl?pMQC!u+rL!_U
+R@=)Ds.'+[".u6[UA^kcV#R7mVPU*dV>d@kVu<RnW;s%!XTP`.Y-%]+#Hb).WiE%uX8]++W2HMi
+V5C,dUS+:YU&:Y`T`ChdU&L\gT:hmOU8%X^!huB]rLs%]s.]RirMBFfrM0:ds.]RirMBOk!2]Uj
+s/5Ugs/,jqor%her29OmrhfgpV5='d!N2mqVu<OoWVrjsX8K!tWW0!rX8f7'XfSY,riZ:)rNQ=*
+!3l=)+L8A][C3QS]">Pb]=Y_h^;%M%`5Ta<c-Xqkg>:oUoD?T.-+U%IP`)QHWM5f?I[RjJNi@S,
+ITVb5>+M@d>$GHB>?\23YHG,'Y5jU^NVe\7MuS\5M>rD3LPl*T`ji@ujN#?U[CNoUZa$mG\@B,c
+`Q5s0\[JuWZEC@7XfqE#?%R]^L51SAMi<[WOHPfmQC!u-S"6.DTq\?ZVl6VqXKA\1ZEppH\%0)^
+]Y;.s_Sa@4a2lEHbg+M\dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<b
+s7cNfs7uZjr;6HjrVc?eJcC<$d/SU~>
+JcC<$K`CZCrVc`nr;6Kis7uZhs7ZNerq0(ZoCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f%&9udEp1abfe,La2Q!6_8!au]XkY_[^<BGYcb+/Wi2hlUnXQTSloH7D0(4*JH1;sJc1-!JaS-d
+JcC9"J,auiIJ\BsC1q3hBP2!Trd5E+G^4IVGB@kHEH#f4Ci!j.FEVeKr,r""#E=aaODAobI/\Qo
+I/JEjIfFioI/&*lIXQZoqL&KqI=6Qnr."Qnqgn`u#(qM[KS5&5reCH.qhP?2Ll$udL]E;2MZ/P3
+N;ne:N/ddp"-&7uNVeY9NK0%uNW+k;MM_:fqhP3-s+^Z3LPPkbreLK-!elA`qhP0*r.k<.r.k-)
+!f)SereUT2reUQ1qhY6,!/^W2rJUK/s,-r;Mi7=g",_qmMu/J3MZScoMuAV7NVnh:O8P%:NVeb9
+OSk7?OSb(>OHKL'!g/Y0q31lEr0I5I,+4mhS=Z@GTqS3WW2m&)[(3rlce%(8lL"*4p%S:XqY^<k
+f)I%\O+r+.MN!CFIs5[PNIl1uB1??$Db*QJH@AUa;c-@cM26qALA$9#NrG%8N;nh9MZ&D3M#W8/
+s!7O;p[dqBlK7*agtC9,ccjJM`59:(^:h4m]Y2%n^VRb'`5KXn`r*gU`r*mWaT'?_b00\+s3:Sh
+&^ShOe'ut&h;@5Sl0Rm0pA+XLruThbTU1n5Xd5B<OHP`bNfB$YOHG]kR$a5%O,]*WL])r-L%U+)
+JqJ`2LPUeFN/is\P*;/sQ^F52SXuLJU84W`W2cl!Xfnt7Za@0M\[oDc^;%M$_o9X9aND]McHaea
+daZdtf@\d1gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu-HkrU^#>
+s+13ss*t~>
+JcC<$K`CZCrVc`nr;6Kis7uZhs7ZNerq0(ZoCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vi83;FgY1?4
+f%&9udEp1abfe,La2Q!6_8!au]XkY_[^<BGYcb+/Wi2hlUnXQTSju@G9i"Ua;#jMh;>j>k;=7?W
+;>a>l;=dW`;$/X20erY`"ZAV25sIU54qKh<4$#A^2`<TT2a0Ad4?>S'49.JA:'aQN7o3#\;c6Nm
+;uKSq;cH`q<VBDl<W#es<EArr!`i<$r)Netqc*Sqs&K8&<)cdqrDihtr)E_rr_inu<E3*!<W5tq
+<<6'!r`0&$<rQ,!<;fhs<WZ?'<r5ts=T;J&<WuQ*<`N*uq,R>ns&K"us&]2##ZXo+='&F&<EK0"
+r)Wi!rDrntr)W;er`0"ur`/ksqc<c"r)`l"r)Wr#<E9!!s&T/$r`K&!rDrht!E`M(=Su>%=SZ)(
+>$5!1='/T%<ruE(=8Q)$=^##.>Q.n*>Q.k/>?Y50>Q7t.>Q7q0?!h"=?QiifAS,RfBl%d5I>!H;
+PF.l5USXohXg#+=]"Gbl^qmq-rl4uW(W=5-^q[Us^:h4m]Y2%p_SjI7aiMTGb5KF0aMq7a<)Q[p
+;H6C^7mfC,69mCd.l/Y:/MT^a7lN=d4#o<"<)QRkp/(gMrf-f6s,6o7rJCQ1s+_DoX/DY^R?Wek
+LP15,HZsRPDf'6%B4bcSAc?9HB5)*sDJsH4rGhdVr,MXTs)\3^s)eBdF`mV(rcS6_s)f9(H$k'l
+K85AFP*MK-Uo:H%\@oc#c-k+mg"YB_i;V^6iZuTfQXEs!;d*4)<EE7&<`N+#=&r:%=]\^,=&rC'
+<E)jo:f($^:gJ[*KSG8<M2R=QO-#NgQ'Rc(R[]k>TV8*UV5L8lWiW>+Yd1UB[^WfY]=bkm_8=+/
+`lH0CbKS8Wd*^:keCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0h
+qY^6hr;HTcrdk*#s3Udr~>
+JcC<$K`CZCrVc`nqtpEis7uZhs7cQes7QEa"S;3TnaQPH7.'@-lg!a!kiV$hjQ#7Xi8<AHgY1?4
+f@AC"dEp4bbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTAn5e&J<Bf#!hGjOpRM;SrgiSN
+rLNSNs-s%Vs-WhQ!1*DF+H2;:KT(hHNa\c]V4sZWSY)ODS=5b.OckcbR[KY9S=BJI%@t2H]t]*-
+FafI:PEM+*OTU]-OHBI(q3(]=!0[>Ds-!DG!0[5C"-f"6Pl6mIPl6jNQ^O8/R@4#BrgNnXrga@f
+Tq\9VUSO]^VZ*FkVYm:iVYm@lW;W[tX/rG*r3$('"g4u0XK/AuWr]6!rhodn"/VcdU%tG_U&Ukc
+U&CVaU&C_`UB%%eTa7BfU8"EXU8+L^V#R:iV#@(gV#R4fV#I4jVZ3LlV?!OkVYm@eW;NRkW;WXj
+W;iauVPg>hVYd:jW;ijeWrB*tXo5F&YPGF"Ym@YB['mHQ\@K3M]+hok]tV7s_SsL6air/_f\50@
+kj\Dds!@E5R?s&GWhZ5RLRtKtR?a>&D2=:>>+;(VW**A5?!FM9Z*1=7p94FSqi(Q5s,-c3s+gZ1
+MZ4j9]=6;]d)3l6\@];TZEq'N\\,_saMbm)[^``QZ*(C8YOnu"JqJc3LP^nHN/is]P*;/sR$jG5
+SXuLJUSO`aW2co#Y-5(8ZaI6O\[oGe^V@V%`5Ta;aND]NcHjkbe'uq!f@\g2gtgfDi8EVTj5oFc
+kNM0plg4!*mf)YZnF?)?oCMVRp&F^cp\jmeq>^<gqu6NlrU^#>s+13ss*t~>
+JcC<$K`CZCrVc`nqtpEis7uZhs7cQes7QEa"S;3TnaQPH7.'@-lg!a!kiV$hjQ#7Xi8<AHgY1?4
+f@AC"dEp4bbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQT=Bf<NDgLo(!.b'"m"5(bs+()u
+s*jQfs*Pl$BkCjhBP(sUI=$<dH$=@SGB7kIEH,i5Che*7Fa!\*s*"C&#**)IB5i0Ep3d!kI=;*D
+!.FfnpO*0nI=6QnqL&HpI=?YDIfY"Jr.+Wprdt-%s+LE+reCH.s+pB*!JlU3MYrD4N!#&uMi7Om
+rf-r:s,Hu9s,Ho9$B:"'MM[+DLkgb?reLK/"c%nhLPUcbL\uo#L]</1L]3,.L]</1M>N,/M>rD0
+M>rD2M$&QhLku%c!JlU3MYi>/MZ8Y8MZJcpr/:W8mu7:)"cSG#N/`hpNrG+;Nr4k:NrG(AOHGZe
+rfI2DrfR5Br/^c<s,mAGqNLuFrg*PMr0[MP,+G*mSY2[MUSXrlXfeq;]YhtEgYh2Ym-jK9p%S7W
+qu$Hmf)HuX_MNtuI?TG@JphZbK;!X2GA1#gDK/?rI!U<;:/OkbMM[/gLA$<!NVe\7MuS\5M>rAK
+L]@>Lp[n"ClK@3cgtC9-ccjMO`PTI*^APYM^;%J"_Sa=1`W!mT`W!mVa8a6[ao9H\bl>rfcMu3%
+dF-Opf@o'=ioTCjmdg)Ir8dl&mdup6Q);-cQC!_qOcPH\NK93aP*;6"QB@8hNJ`XLKnk>8oRp=u
+K8#&8M2I4MNfT<cPEhH$R@B\:StMdPUnsufWiN8)YHY==[C3TU]"G_k^VRe*`Q$!?b0/&Tcd:(g
+eCE.%f\5'7h;-uHi8WeWjlY^gkiq?tm-O--rpL'\nac8BoCW%Ts7QHerV6Egs8)Wirqu`noDX=@
+JcF*sJ,~>
+JcC<$K`CZCrVc`nqtpEis7uZhs7cQes7QEa"S;3TnaQPH6ga7,lg!a!kiV$hjQ#7Xi8<AHgY1?4
+f@AC"dEp4bbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQT7S$0G:@D$[;#X>Z;YO&d;YErb
+;&;)F0ebC?1Gq$U5X.Lt4Zttk4?>Pa3B$jq'0\QA4Ztkg4?P\f:/"AV/ON6/;>aAm;ufkq;ZBZ!
+<)lpt;cEZps&K%ts&Jtr!``9%rD`hsr)NYqqc!Yt<`W5t<;onr<WlE'<`N/u<;KVm<<#r!<)rlt
+rDiksrDihus&Sqsr`K)"!*0"tpf78ns&K&!r`B)"s&K&"s&B)#=8l2%<``@'r`B)"r`/hrnl5rr
+<E<.#<)cjtr`8kspK7Drs&T/""]e]+<`W<!=T2D$=T2D%=T;J"=Sl5$=SZ,!=o__'<rcA$=8c5$
+=oMM'=nQ#!>l@k.>$G50>Qe89?!Ue8?n#MpAnG[hC2S'=K8#/BOd;K,TVJ?]WN<;0[CEcZ]Y2%o
+^r!t(]tCqerjMs=\$u@H3Ou`6^VRh,`l?'>`l?!8_83n#OE+N(;c-Xp;G9\O5!hk-2E<E@0g%QP
+7Roj72)[HU3`]6\;bp<b;>lLON;nh9MZ&D3L_Y]=SXPh+N/3.<I=$0\Ec5f0BP1sirFHCLB4kmm
+CM[m,E,]f:qf;XTrGqpZqfMg[rH.jX)g6IQIXm'*MN3gaR\$:QXg5CJ_8jdIeCW@-h>Z@4iW%p;
+j8S$aiR3XT=^>0<>ut'/=&i:$<E*"%=&`=*=BJX+<`W1";c6Ok:Jpa\=Fu0ZL51VCMi<[WOckon
+QC+)0S"6.DTqeE[Vl6VrXfek3ZEpsI\@K2`]t_=u_SjF5aN2NIc-FY^dF6Uqf%8R.g>(N?hr*GP
+j5]7`k3(sml0I^&mI'uB#4V0Ro(2JFrq6<b!;HHes7u]kqtpBjrVc?eJcC<$d/SU~>
+JcC<$KE(TCrVc]mr;6Njs7uWg!r)E^rq-<aoD\;OnaQ#9md9B-lKRQskN:mej5T%Uhqd,Cg=b-1
+f$r0sdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n2eBR5#\QM6pBSc,/[Sc#&ZSc#)Z
+Sb&?XS!oe6R@'A.Q^7K5%#p.!K8b_J?`0g!TqVIY%%a#ZR[KG)Ock`lR%"#Ds-s[jS=R@-^:h5+
+SpQ0TPE_8pP5CC?OT(C?Oopo2P*>[(s-!MKQ'D62r075HrKR;H!LB)OR/`TRRf8c^S=Q4BT:hpR
+U].%iV5F6g"K&)oVl'HirhfUks/>mq!36%#s/lF*Y-.`,s/lL,XK/G)riH.##cXc#Vl$>eUndm_
+rhBLiU]."dU&L_bU&Le`U]-teU&^tfUAUecV#R:kU]@7iU]I6drhK=c!2][l"f8)mV5L6iVYd:j
+W:m4jWqiUkWVrarVl9Nkql'OooW%nkriH+$s/u4%qlp"'s0;g7[C*HO\Ga&>]`5YX^;%J$`Q$!@
+bg=kmgtgoMm.:.ms!>@XStCq>_l9AtPCK%.gQA@b>?+de<EYiaUfgl)?X-d<YHb74orn=Rr/CW5
+s,-f4s+p]1MuOXe^V@_NlbUWW\\#S[ZaI9P\\#Ypa2c'-rO2p9YHG+2oWD\TK7el4Ll%"JNK9-_
+P*D5uR$jG6StD^MUSOcbWN*&%Y->1;['d?P\\#Mf^VI_'`5Td<aihlPcHjnde'uq"f@em4gtgiE
+i8N\UjQ5Odkiq?slg4!*mdKW6naZ2@oCV\So`Fj]p\jmeq>^<hqu-HkrU^#>s+13ts*t~>
+JcC<$KE(TCrVc]mr;6Njs7uWg!r)E^rq-<aoD\;OnaQ#9md9B-lKRQskN:mej5T%Uhqd,Cg=b-1
+f$r0sdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n2]?Y=4tII)O_K)^DlK)1&uJH(*!
+Ie8'fHjj_"A7B7cC/BA-I!L#:GQ2gbErU%]DJa32F*.;%s*"C&#EFe:Hu=%RI/JEmI//3iIK4fq
+I-Z4YIfForIK4lsJGOisK)UE%K`?c+LB!&.M#N82MZ/J4MZ&D3MYrD4N;nn7N;nn:N;8G9NfT6]
+O8b1>Mu\_6LB*/.LBWKjM26tCreUN.r.b3+rJ:B,qM>0,s+pN.!/gZ1reUQ1s+gZ1r.kH3MM[2d
+Mu8G6Mi<VoMuSb6NVAD3NW+k:NVn_9NK!gq!07&<!KN6<NW>(;Nr>%?Oco[*r0$u?rf[2Cr072G
+rg*SNs-`nSs-`nU-(CEqStD^MU84`gY->.:\%T`*f%T!?jQGdon*oo?pA+R_rVc`Hrud\hLk^25
+PDOsBH#%V\\93.2912?g85+AVHqmC0;G^-fM#rEbL%^2uNVnb7MuS\6M>rD3LD0=MmH`rri8*);
+e'H7[aMl$4^V9Z[s1S`Q^qmq+`5T^p`r3mT`r=$YaSs<]arJUKbg"AUc-FV\cd:(geCN4(gu.2R
+kj7d/pA+XEruU[JS=#bQ[$I,FOcYZ`Nf9$]OckrpR@'5$O,]*VM#N,/L%L%.JV/T/L5:\DN/`mZ
+OckroQ^F21S=Z@HTqeE\Vl?\tXfen5Za@-K\@K5a]t_A"_SjF6aN;WKc-FY_daQ^rf@S^0gYCWA
+hr*JQj5f=ak32'olKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kr;6HjrVc?eJcC<$dJn^~>
+JcC<$KE(TCrVc]mr;6Njs7uWg!r)E^rq-<aoD\;OnaQ#9md9B-lKRQskN:mej5T%Uhqd,Cg=b-1
+f$r0sdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n2L8PMuX:[:mV;ZBVl;?0Sk;Y3id
+;Z9Pg;#F0.1bpd?1c$sH5X@\"5!;(n4?>M`3]]5Y2`U^trB($A#Yn)h:/+b[;,I-grDWbqrDEVo
+r`&hps&9&"<)iisqc!Pqr`9&!r`&eqs&T/"r)EVpqc*Ppq,[Mqs&AbnrDWbsr`&nt!*9"ts&B"u
+"'8N)=8c1m<ruK*<rH"q<W5r#<E<.%=8Z)(=&r@%<`W4#qH!Sqs&K;)<`W:'<rQ)"<)riss&B,$
+<EAios&T,!!*9)!!`i<$qH*;kr)Wi!s&T/$qcNi!r`K/$!a&N*oiV)os&f;(!a8`/r)`eur)s#&
+s'#J.pKRZ&pfm`&s'5\4?XNe?!FfX>B,YGtDf^8VKnkMDOHYuuSY)UOVlHl&Z*L^B[JmZ8[K!TH
+ZE^X;YHb@<ZEpmE[^Wi]^r+(h`$iO>^qRIm\[SoNYut73;cH^p<D6"X6TmeJ5<(PN,Utl-0LnT$
+3&NMk3X&J_;c6Fip/1dJr/CW5s,-f4s+p]1&<Vp-KRnPuGBIqED/*cuB4h-S$ta-bBPD3sD/O<3
+EH1tu!-A-[s)IpVs)\*[rcS-\qfVp^+a&$UI=Qp'M2dU\R%C(OXKf4G_8a[GeCN=-h;I5MiSrko
+iu@"<io/k?P]9u7>@(oB=B8O(<`N.#='&F(>$:i+r`9"t"&_un:\7InJV/T/L5:\DN/`mZOckro
+Q^F21S=Z@HTqeE\Vl?\tXfen5Za@-K\@K5a]t_A"_SjF6aN;WKc-FY_daQ^rf@S^0gYCWAhr*JQ
+j5f=ak32'olKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kr;6HjrVc?eJcC<$dJn^~>
+JcC<$KE(QBrVc`nr;6Kis7uZhs7ZNerq0"XoCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vhqm2Eg=k32
+f$r3tdEp1`bK@rJ`l5j4^q[Ur]=GG[[Bm0CYH=n+WMcSgU7l11Cik2hSb8NFSH,8[Sc>;[Sc#)Z
+Sb&?XS!oe6R@'A.QBqK7s,I/:KoH"h#%4=*USFQWrgsLgS=5b0Ocb`cRJiTVSXc2KS-cmC]tRt+
+G_M?FrKI;GqiUi=s,m5Bqigo?rK@AKQ'ISurfd;Frg!JIrg!MLrg*kWR@0M4S"#rISHPOVTVA4[
+V#@.iVZ3OtW2HMiVl'<g!3#gp!NN4"Xo5C(YHY80Y8sjMYHP(1Y-"e+Wi;qpVPU/dUS=NZUna]\
+V5'cZrh0=drh0LiUSOZ[UAgqfUApqeUAgqfUA^keU]I<fqP=7hUSRj`s.f[lVZ*FkVZ3IpVPU/f
+r2'[rW2QVlWMofq!NN-tWrK$uWrB%$Wi;ttnu;YfrMfdpri,Rjri?(#qlT[tricC-rNcI.s0<fS
+['d?O\%'#]]=bhj^:q@u_o9[=bKeJag"bKCj6?%+rPJR]qYd.YQ^H^BUn=!5H`Y>gJWlX:K7/tb
+>FqLd>$G-9>Zn54Z*(8&YPsOYN;nh9MZ&D3L]E3fru]Lu]C#.1b/1^!^::PU\@B,^^VIn1`P&di
+\%/iMYHm`%?%IW]L5(M@Mi<XVOHPckQ'[l,S"-(BTq\?ZVl-MoXKA\1Z*UgG\%0&]]Y;.r_Sa@3
+a2lEHbg+M\dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7uZj
+r;6Kkr;H6dJcC<$df4g~>
+JcC<$KE(QBrVc`nr;6Kis7uZhs7ZNerq/tWoCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vhqm2Eg=k32
+f$r3tdEp1`bK@rJ`l5j4^q[Ur]=GG[[Bm0CYH=n+WMcSgU7k[n@VBY*qgea!o7?djrIOKjqLSZs
+s*k#tp3lsg)eits@q]LfBMa,(H[:!]GBS1QF)u8>D/=$(FT$=kGBJ%OGBT%.Nf?c*CNKK&rI+Wl
+pjN0kkC*;XrdXors*k$!qLSWtrdt<+K7ejVLB!&/M#E/1MZ&D2MZ/G4MYi;3N;eh7N;SY8N;ek:
+N<,'$qiCc;"-&7tM>`80L]<21M#`A2LB*/.L]<,+L]3)6M2-k@L51QZM#W;4MM_1ere^T0s+pi8
+M26udM$/WkMM[5eMuS_=Mi*FNN;e_8N;AP6N;\_9Nr4n:N;\b9N;AM;NfB$YNfWsq!0@,@"Hek1
+OcfO(rKI2Crf[>Hpm(iEs-NYOs-bI-S=Q7DTV8-VV5C8qYd(I>\A#r,dFHh$gu%)PkiqF%nauPL
+q"ad_qtp<frVl]srVZWnkPtS(-&[J.J#\TbJphfWL6@7+EcFrdAT(+5H?t$89h\D[9o=a`KnkBU
+K`6u.N;nh9MZ&D3L_5F-k2YCUg"+TtbfRoE_SO"$rOiTQ^VI\&_o0L4`Q#pr`VdaUa8X0[aoBN`
+bQ#fcbneUNcd:%ddaQatf@o'=io]Lln+$)Hr8%AZd-[TrQ+=GmS!O&9'TS67NffNfPa7](QBI>h
+NJr^LKSK&N?%IW]L5(M@Mi<XVOHPckQ'[l,S"-(BTq\?ZVl-MoXKA\1Z*UgG\%0&]]Y;.r_Sa@3
+a2lEHbg+M\dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7uZj
+r;6Kkr;H6dJcC<$df4g~>
+JcC<$KE(QBrVc`nr;6Kis7uZhs7ZNerq/tWoCMPDnaQ#9md9B-lg!`ukN:pfj5]+Vhqm2Eg=k32
+f$r3tdEp1`bK@rJ`l5j4^q[Ur]=GG[[Bm0CYH=n+WMcSgU7k%J8kVrVp/1idoMGTdrDESmrDEJj
+mSWgWrD<_S1,:O?1]B365sRV!5Q3hM4$5Mc3]R's!B`IC49@Z.48q>I:/"AV.Sil9q,@5k!)ren
+!E2nk;ZTitr_rkrrD`ess&T%srDihtrDiksr`/eor`/_o!``3!q,RAms&Jqqr)Nbrs&K#!rDrVn
+r`B2&<W5tq<W?"u<W,tt=8c1u<<6-#rDinur`8ttqc<_sr`&nu"'8N)=8Z+o<W6&!<W6&!<<?3$
+<r,nl=9DW,=',B%s&TG+<E3(%=BAT'=T;G%=8uD#=7o\m=oDJ&=TDS'=8Q+t=oMV(>Q.n'>6%k(
+>PqY4>?kH@?smDP@:E_YrFZgYDfg8PIt*!$LPq1TPa@c-T;&-Yrhodps/?!uri,pr*2fa7WiE,$
+Y-5+:[CEc\^r!t(^q[Uq\[SrNYH@f*-*)!.>#eKu@96?#91D<87R]Bt0Iee=4=r9X77K6n1HINV
+<)llr;"dccNVe\7MuS\5M>rABLP15-HZsUQE,B?(BP1pgrau1C#\[sgD/O92EH1hqs)IpVrcA$[
+rH8'\qK;d\+F&6]J:`K2N0'6iS=laZYdV0[`lui[f%Jg6i8ESRioBstro=%<s5>6]iS841?sZuH
+?WUB4=&r@%<`N1%=]ej1='/O(<`W4#;c6Olnk`VCK7nu6Ll%%KNK90aP*D5uR$sM7StD^NUnsue
+WN*&%YHY:<['mHS\\#Mg^VI_(`Pom=b0/#ScHsteeC<($f\,!5h;-rGi8N_VjQ5Oekiq?slg4!*
+mdKW6nc&([oCW%Ts7QHerV6EgrqcQirqu]moDX=@JcF0uJ,~>
+JcC<$K)bKBrVc`nqtpEis7uZhs7cQes7QEa9(VWEnaQ#9md9B-lg!a!kN:pgj5].Wi83;FgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhU7l%0G^>+/nXTNJ#+V6TS=Q4@r1*hX
+r13bWs./bO#Fh0NR@0G0Qi33mN/NIDMi*R%VPU,_US4?PT:DIAR?s,%O,og#S"-">Sc,&e]tV1n
+^6"S-O->clPQ$dIPEPj+rfI/Brf[#>s-!DG!L/fIPl6jKP`q@(Q2[*LQOfIOR@9S6S"-%?StDXJ
+USIgar2'Fj!2ogprhfapqPX=kri$%#X/rG+ric=*s0;F)s/uU1YHG%1X8]'uVuERmV>d7kVPX9e
+r1XFkU8+KZUS=L^U]7(gU&Uk^U]7.hV#[CjV>R+kUSO`_r2'Ijqkj:hs/,an!NE*sWW&ptX8B!t
+X8T$uWW&pnX8f4"X8T'uWV!1nX0&M*XT#@$Y5GI'Yl:g-Yd(J1ZN%69['d<M\%&rZrk&6Erk9&\
+_SjO<c-XngfA,6?ioB:ko_A@#s!POZTVILJcE*b.Q%kj/h33eU>uapd<Eu;iV5RU&?X?p=Y-"k/
+Z*3i)s,Hr8repf6rJ:Q2LPl*TgV^f"s3Sd*^q@=nZa7-O\[oPkaN)63\@/oT[^*'@YH@H"@t9/`
+KSG8<M2R=QO-#NgQ'Rc(R[]k>TV8*UV5L8lX0&M-Yd1UC[^WfY]Y2%o_8=+/`lQ6DbKS8Xd*^=l
+e^i@)g=k?<h;@/KioB(\k2tjjl0@U$m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#
+s3gpt~>
+JcC<$K)bKBrVc`nqtpEis7uZhs7cQes7QEa9_7iGnaQ#9md9B-lg!a!kN:pgj5].Wi83;FgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhU7k[qBP_d=J:RWMrIXZmr.=crnq-[g
+"+YlNIeS7/Ht[,&@q]Lj:jm\<H$X^YF`heJEcQ/<Df':fFoHRaG6iAROH5B\Ed_s+I/SKjI//3i
+Icc%YIenQoJGOisK)UE$KER!`L51Q`M#N82MZ/J1M?&M3MZ&J3Mu\e7N;eh:NrG(?NfX.!rfI,?
+"HJP'NK*ppqM>--!/UE*!f2VfrJ1E/s+pu:L4tA;Ll$ubM#W>2M?&S4MZ/J3L]WEjMYr;4Ll$ue
+MZ/P6N;nh8N;\\5N;\b2NW>.>Nr4n5NW>.=Nqnb6NrG+=O9C]/P*(n(P5CIBOogi3Pl6mDQ3EVB
+R$jD3r0nk"StD^MUSXlfWiWD.Z*CUD]Y__3c-F\be_/g;ioTCimf)eWo)nXXp@eIZ$2F>lqYU0d
+qu$HTs!O4qM26M:S;N#MHZ+1_[<?A(9LM?f85+DXI=G!e;Gg8IM2-k?LPGJTs,Hr8repf6rJ;)A
+LYpn>e^Ddeb/_K=^q[Utrk/ZQ^VI\&_o0L4`Q%nrqo8WUs2b5^!6Y;arlkAe!71Yk'%,.VeCN7(
+gYUoLjll(#o(MkVgA`Ams/hfZ_Tea?R$NntOcGH_OHPfkQ'do)OcYZaMi*=FLP>>Q@t9/`KSG8<
+M2R=QO-#NgQ'Rc(R[]k>TV8*UV5L8lX0&M-Yd1UC[^WfY]Y2%o_8=+/`lQ6DbKS8Xd*^=le^i@)
+g=k?<h;@/KioB(\k2tjjl0@U$m-X60n*oi:o()DDo`"Lbp@n=[q#C0iqYU0hr;HTcrdk*#s3gpt~>
+JcC<$K)bKBrVc`nqtpEis7uZhs7cQes7QEa9(VWEnaQ#9md9B-lg!a!kN:pgj5].Wi83;FgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhU7k+K92AG\pJLfal;@IWmSWmYrD=.`
+1,1I=1c73X5X7Lr5!;%j48h2?3;ti=4Zkhir]C0Br]C0UrCmAW:/Y!a;uT_r;u0De;ZKeo;u]hs
+<W?)"<W5tq<Vf_s<E/osrD`_qq,RPs<`\rprDWl!<`N/u<;onr;ufqt<WcE*='"rprE'/&<E<)r
+<<?-"<W6%u=8Z,!<Vohs<W6%s<W6%t<W?#"<E<0!=8Z+p<V0>l=8u>#=8,hp=8Z,!<<Q?)=]\](
+=9M]+<``B%=9Vc,='&O.rE02*=]kQ(qcNi#!a&N*qcNc!s'#D+r*98+qcX#)>5hb'=pA29?!^oI
+A,TpVAnPafAS>jtEccMLG^=dhKntVGOHPotR[]iHS,]#YSc5,jStDXKU8+TaWiW>,ZaRBT]`,SO
+]Xt\_['?g:X/`/sV^JEH=]\U&<)ujj91qZ:6<ZZ42_-.%4>8HY7Rop*2*!]X=&`-s:fI!`s,Hr8
+repf6rJ:r=LO+2eEc5c/BkV-jr+64IBPM="DK'T8q/QITqJuRVs)e-\rcJ!Zs*"Ed+F/?`J:iQ3
+N/s0fR\6IUYI1sW`lui[f@ep8hr*JQj5]sr''&!1iS`\Qi8<Cd[:iiKC26pRr`9)#r`'D.=BJU,
+=]ea,<``:#<;oet;,C'\:h,$-K7nu7Ll%%KNfT9bPEhH#R$sM8StMdOUnsufWiN8(YHY==[C3QT
+]"G_j^VRe)`Q$!?b0/#Scd:(geCE.%f\5'7h;-uHi8WeWjlY^gkiqBum-O--n*fc8nac8BoCW%T
+!quB_rV6Egs8)Wirqu`noDX=@JcF0uJ,~>
+JcC<$K)bHArVc`nr;6Njs7uWgs7ZNerq-<aoD\;MnaQ#9md9B-lfmZtkN:mej5T%Uhqd,Cg=b*0
+e^W'qd*L"]bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8bARoV"Iu^)jSGSlPSH#/WSGo)WT)YAT
+S-5CQS"#lGRK&ZSQQM0GMhR+JN*ftjVkg)]T:V^IS=?"7PED#hN1-9*S=KSLs.',&#/7dbX-S$b
+rf[>HrfdAH!L&]EOT:LBOoLUDPQ-mHPQ$dIPEPg-r07MQPa%H!QBd^1Q2d-MQi<BPRK&]bS"-">
+SXuIHTVA3VUnmscs/,gopo++gri#gqs/H:)Xfek4Z*=54rj)O.pojt)Wi<"tW2KWlrhT^oVl-?h
+UB%%eUB%%fU]."eU]7(eU]7.iUBIBfUSO^bV>[:kV>@"eV>[:kV>I.iVu<OoVu<RjWW0!uXSAps
+X9G`-X/i>)r2g%'XK;?%qlBOms/Z1$r2on""g>/7YHY8/Z2([*[/RN6\,Wr@]"G_k^\tt]`5]sF
+dF6\!gYUoKjQ5Ulnb2bWqZ-W6s!R?oV4Ns>lGKNlQ]HNt_5iEYITM/(OB,MRTVPdp=^PE;Z*:L:
+Y-%?#!0-l7s,6o7rJCQ1!/HI3+P+R(s4G'+_7R=o\$NKP\%02fa2u?8\@/lU\?`?BYcmZ$?%@NZ
+KnbA>MN!LSO-,TiQ'Rf*S"-(ATV8-VVPgDnX0&P/Z*UdE[^`l[]Y2(q_SX71a2lBGbK\>YdF$Fm
+e^rF+g=tE=hV[8MioB+]k2tmll0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0iqY^6hr;HTcrdk*#
+s3q!u~>
+JcC<$K)bHArVc`nr;6Njs7uWgs7ZNerq-<aoD\;LnaQ#9md9B-lfmZtkN:mej5T%Uhqd,Cg=b*0
+e^W'qd*L"]bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8b='K-IDL),0r.=Nkrdsornq-gk!.t3$
+"+YlMIeeC(BP1sgBkM-V:k!e<H?j[VGBWt,#'"QuD/<s1rH/-aFoHOiOH5K`NIQ1hFoHdcIJ\Eh
+IK"]]I/n`nI/n`nJ,Om"JUi<&rdt-%s+LE+s+^K-!/UW2rJLW3p58j-rf$i7s,?r:!07&>s,d5@
+"H\\*OH9C&r/Ur?N/NSmM>rD.M>N),M#E,.M#W;7Lkg_?L]3)7M26tELkpnEregZ4s,-i5"H&%l
+Ll)+grJCQ1s,$]3s,6i7!/pi8rep`6r/L`:rK$r<!frG(rf7#>!K`B@NrG+-OSt=9P5CI@Pl6mF
+QN*<NR/`TSRf]+NSc,/[Ta.?hW2Zi"YH\#3.C6Fl^;7e/aN;WNdFHn(hr<_ZlKmm)mdBT7o(2MH
+p@e7Tq"aa^qu$ERs!PO`Mhch4Ya:,tI<TI^NeVLp@7Xm"DFmQLH@/I^9i=e`MM[.EL5,>R!0-l7
+s,6o7rJCQ1$]!-TbK@lD_SO"$^AbbO^;%J"_Sa=2`Q%nrqSrNT!Q`C^b5TTabQ,oec5+aQd*^:j
+eCE1'g"bHCj6#UnnFH8Jr7:lhlHcE"^WiO<R@'2#P)kZ`P*;#lQ'n#*P)kW_N/WSlL&cr!KO'+[
+K8#&8M2I7NNfT<cPa.Q%R@B_<StMdPUo(&hWiN8)Yd(O@[C3TU]=bhl^r!t,`Q-'AbKJ/UcdC.h
+eCE1&g"P39h;7&IiSrnYjlY^hl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6Egs8)ZjrVZWmoDX=@
+JcF4!J,~>
+JcC<$K)bHArVc`nr;6Njs7uWgs7ZNerq-<aoD\;LnaQ#9md9B-lfmZtkN:mej5T%Uhqd,Cg=b*0
+e^W'qd*L"]bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8b77KpC:Jq*hq,-ral;@IWmns$[r_XRj
+1,CU@1G^sH6:!h$5!D+n4$,Gb4#T#W2`CXt!'U3As%Wbm:JEr@:f6marDWbqrDNVnr)38fs&9#!
+<rH#&<)lq!<`N/s<WZ9#<;fhq<;KVn<r#bq<rQ+t<<#tu<WH/!<<#tt<!--"<E9$!r`JhprE0&#
+!*9)!s&T%tr`9&#!EN4r<WH/!<rQ+t<rQ,!<rH#$<`N.#<r,nt<r#be<WH5#<WZ?)=8>r!='5E&
+q,[Dq!a8`/rDj;-=BAR)<``C+>$5#->5DD#=Su>#=9Vi0=BAU,rE9/(rEK5*s',M,s&o5&s&o>)
+$!UY??!^lHA7]?MB)Q9TBPVI'EH,r<G'SIaJ:iT4MN*[WO8Y.aOcu#oQC!r+S"?7HUSXokYHkOD
+[^WcV\$i]OZ*:@2WMl`oV'i.:VP^8jCLgRK<)R(%;b]nT770I45;t,A1+G=;1.ao&2`3EQ3BI.>
+!)iAb!0-l7s,6o7rJCQ1$&<G7CMINpAn>QQAdE$_C2@a*E,]geErU4\FS^.[FSg4\G5lddGT_<[
+IXm')Ll7:UQ'n8?WNNS<^Vn=CeCWF0hVmGQioB(pj9"B$ir.g:i8=Ol(?F54F_"`kDHKtB='&F'
+<E<+#=&iC+r`BJ-<E3+$<E)mp;=[OhJ:`E-L51VCN/WdXOckroQC+)0S=Z=FTqeE\Vl?\sXfen5
+Za7'J\@K5a]t_A"_SjF6aN;WKc-FY_dF6Uqf@S^0gYCWAhr*JQj5f=ak32'olKdg'mI'H3nF?MK
+!qZ'Vrq-?dp\4X]s7u]kr;6HjrVc?eJcC<$e,Op~>
+JcC<$JcGBArVc`nqtpEis7uZhs7ZNerq/tWoCMPDnaQ#9md9B-lg!`ukN:mej5T%Uhqm2Eg=b-1
+f$r0rdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vl$8b@V0e/KTr$uo:5`Lm@=0Hr1<qZpmh>S
+s.'+Ys-aLeR$`qkKnPGCNF8W\V5'cYrgjRkS!]Y/PEM#fR[]h9SGo)ZS-bb"^:_4+aEE/uq31fB
+"I#"2Oco[*s-!AF#F(L<P`q>sQ2[$JQ2[$GQ2d-PQ'R`$rfm8Es-<YOrg4:cR[T_8S=H.AStD[L
+U8+KZV#@.iV?!OfW;WXoW;W^qWX#W-YHY::ZEaD7s0Ma2s0;F)#-Y23X/W(srho^lrhodm"/M]e
+UA^keUAq"gUA^kdUAq"_V#R:kVZ!CnVPX3d"/VlkV>[:kV#[ClVZ<UmVtm:jWW&psX8]3tXoGR'
+XTGZ-XSf4$Xo>L#XoGL#X8f3sWs#N+Xfei+YQ(d)Y5kj+Zi765Za@'EZi.90[K!c:\K\Vs]=bno
+_84%-`Q--Gd*gIrgYUlKjQ5Ofm-jQ>q"ad`rkna_`MfQ1Nj$^4U7.C%SZ:D4OMPd4<fiYM>b.Re
+>?b3:?!4A6Z)t2#YksCYMuS\5M#iEfMZ4g\eC+BZ]ue7-]YD%dZadNV]YD;)`kf0o\%&uVZECI9
+o<)SRJV&N.L5:\DN/`mZOckroQ^F21S=Z@HU8+N]Vl?\tXfen5Za@0M\@K5a^;%J#_o9U8aN;WL
+c-F\`daZdtf@\d1gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF?)?oCMVRp&F^cp\jmeq>^<gqu6Nl
+rU^#>s+14!s*t~>
+JcC<$JcGBArVc`nqtpEis7uZhs7ZNerq/nUoCMPDnaQ#9md9B-lg!`ukN:mej5T%Uhqm2Eg=b-1
+f$r0rdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vl$8b>$YcWF+!k8s+10$jaluSs+10$s+13#
+s*t&tr-]JtAn,=bB51=mI!g6dG]e1QF`VPCDf0H/CNfVu%!Hi<GB]+0NfI>0Bla0"q0i0gr-eTo
+p3d$lI=?YAIK+cnIK+coJ,FirJc:9#K)gT(L&Zo+LB*/0M><#/M>E)5M2I4LN/[^ns,?u;s,R)>
+q2kW;%ZZU3OH5KaNfK*XMM[1Ipkep(!JlU3M#W8/M#E2.LB33freUK/s,-]3rJLT2",_qlM#E21
+L]NBkregT2oo/j/r/U`:!g&P,rf@#>!KW?ANrb?'plGK<rK-l<plbZ@rKR>IrKR8Grg*SNrg*SO
+s-`nUs-s%Zs.97`/to&8V5C2lXfnt7ZEpmE[(!WZ^r""-`Q69LdF?e%gu%/Rk3(snmI'H3nalGI
+rV-QlqYU3hrpKgdrqQL@RZE8^I#FJPKn+MgHA&;FDk^5u7;m3;9RD,9:/=P\:ece&M2$_=oS!+#
+repf6rJ;AILWRQS_SO"$]tD"k]t_A!_Sa=2`Q#p:q8WHT!m&L*rlY5`*6c[PcHab^d*^:jeCE.%
+f\,';ioTChmd]rCq>A_A,0fM`VPMY?PaRr(P*1rgO-#KfP*;3"R?N_nNK&jRLk^\=o7UV(JV&N.
+L5:\DN/`mZOckroQ^F21S=Z@HU8+N]Vl?\tXfen5Za@0M\@K5a^;%J#_o9U8aN;WLc-F\`daZdt
+f@\d1gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF?)?oCMVRp&F^cp\jmeq>^<gqu6NlrU^#>s+14!
+s*t~>
+JcC<$JcGBArVc`nqtpEis7uZhs7ZNerq/tWoCMPDnaQ#9md9B-lg!`ukN:mej5T%Uhqm2Eg=b-1
+f$r0rdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vl$8b7S$-I:f((hr_iVjp/('Pr)3)_r_iYk
+!&OU/&2Q.#2F0Vo5<V1m4Zb_d3B@'us#9j<%Qup:4$5Z$9MJ518PDoXoi(cf!)rkps&8qqrD<Sn
+;uKVl;ZKem<W?+u<W,qu<W5tq<W5tp<W,tt<W?%s<W#kt<W,ks<W6&!<<#tr<<#ts<rZ;$<rcA#
+<rcA$=8c5%='#6!!*8qrr`B%us&K,$r`9&!s&T,!r`8hpq,[>ns&T"spf@>p"]e]+<`W;r=9DW*
+<`f9$s&Jtt!*B/%"BS`0=]bT'!EWD#<rlH-r`T8)qcNo&r`T5&pf[Vu!E`M(=ohi2r`f8)s',M,
+s&o>)s&g(=='/U/>?bB>?X[APA7]@cAnPdiBDuI[AnYmoCi+!)Df^#CG^4XaJ:iN/L5(M@MMmIS
+OHPlqR$sP;U84]fYHbC>Za@*FZEUR9XK/A"VPL#aV50o`Vl6SpX08d5=]ea(;-$Ie9hIc:6;^!+
+@4WTM4?G,L7n#g)1c.6S3E/sV;,:-_;>Z=OMuS\5M$/WiBkV,WAc?9HBkhI$DfB]9noFbOs)ddR
+s*"Eds*,`6I=Hg$L5ChLOd2<*USk6!\A#o(dF?e%gu%)Mj5]4]jlQL&#3Fq,j5].Zro!k8qr.S5
+']NhhD.$Re>#n^-=&r=%=&r@'='>K("]eW(<E)ut;t3[oJ:W<)KnbD?MN!OUO-,TiQ'[l+S"-(B
+Tq\<XVPgDnXKAY0Z*UgG\%&u\]Y;.r_Sa@3a2lBGbg"G[dF-Oof%8R-g=tH>hVd>Nj5]4^k3(sm
+l0@U$m-X60n*ol<o(2JFrq6<b!;HHes7u]kqtpBjrVc?eJcC<$e,Op~>
+JcC<$JcG?@rVc`nr;6Njs7uWg!r)E^rq/hSoCDJBnaQ#9md0<+lKRQsk2tdcj5T"ThVHuAg=Y$.
+eC;pocd'eYb/hWB`P]R.^V.:k\[T#SZa$a;XK&7tVPIX3CNP)er13GLrgi>Es.0(Zs.0"Vr13kX
+s-s%W+HDG>L5CkJ@&'QqVkTlWSt;LES=5_,OHP`cS",t=St>qP$(S]C]tM(ISU67nP5pjEPQ$dH
+PPgRKOckokPEV5qrfmJJrKRAIrKRAIr0@/F!1!PJr084eQ'Rc'R$a;0R[T_9S=Q4BT:_dMU8"EX
+UnjjdVZ3RmVuWgpW;WXnW;W[uWiN8(YPtd,ZMLp-Z2h0*YR%D6XK/A$W2HQmVZ!CuVPU,dUna]\
+V#I+bU]."fU]7.hV>R.hV>d@jVZ<UkV>mFmV>R4bVZ<^nW;`arWrB(!X8oC%X9>Z.Y-"i*Y5YX$
+Yk>1"Y5YQuXT,C-Y-5(6Z*:I;riud9[C*HO[C*C?[JdQ5\,Wr=\[qdQ!58BG*PfS2`lQ?Kd*gCm
+f\>9Ajlbjkl0Ia*o(;YNqu$H1s![*\V4X'CcGZfUR#mrD_6&chKi`b+P#beaSYKCn>$kT@>-G*5
+Y-"l"YQ1m(N;nh9MZ&D3L]E50s8N"[ruot?df93fbK.N6^qR:a\[]2]^q\"5`4WUh\@/lQYHY75
+oWD_SJ:W?+KnbD?Mi<XVOHPflQ'[l,S"6.CTq\?ZVl6VqXKA\1ZEppH\%0)_]Y;.s_Sa@4aN2NI
+bg+P]dF-Opf%8R.g>(N?hr*GPj5]7`k3(smlKdg'mI'H3nF5u=o(2MGrq-?dp\4X]s7u]kr;6Hj
+rVc?eJcC<$eGk%~>
+JcC<$JcG?@rVc`nr;6Njs7uWg!r)E^rq/hSoCDJBnaQ#9md0<+lKRQsk2tdcj5T"ThVHuAg=Y$.
+eC;pocd'eYb/hWB`P]R.^V.:k\[T#SZa$a;XK&7tVPI6t?taJ&pjiBq!.b$!rdacprdsipm=P@h
+s+(-!s*jur&SYljA7oOg:jdY;I<p0`G'.s,F8p.\Ci+!'rcS0_$[6c;OH>N_N-B\eGl<$hIK+cp
+IJeKkIK+ciIJeNqI=?YEIK+cnIK+coIfP&tJH(3"K)^K'K`?c*L'39dL51Q_M>E,/M>`;6M2I1K
+rf$f6!0$o:!07&>rfI,ArK%,BNfT8#OT1@KNfAsSMMmCMM2@,fM#rKgL]3,/M>rA0M#E20M#N/1
+Ll)%cs,$c5qMY6.re^Z2rJCN2!/pi6qMY91!0-o8!0-i8rf@&?rfR&?!0R/?rfI2BrK.2FOcY\%
+Oo:ICP5pjFP5pjHPlm>=QBqH6q3V,Ks-WkUr0mk\T:hmQV#I7rW2Zl$Yd1Y8[K!ZZ\%'&`^VRh,
+a2lEIdF?b"g>:cIjlbmomI0T9o_%tRqYL*fquH`cs8;ljs!G"ON/)q8S=,4dIWg*nNJ2CtAOg3#
+DFdKMH@&C^9i=kc:5Xj`L%9ooN;nh9MZ&D3L]`FJ^qTf\$GF0g^qmn*`5Ta9rl=oUs2P,\rlP/^
+s3(Gd!6tMgs3L_m'@YI\e^rI,g>1]Ik3;4"nauSPrQtQVr9UAZU=R&JR[TM+Q'7;iOHTU,%[EEM
+Q'%,eNJrdPL5(J<oRpb)J:W?+KnbD?Mi<XVOHPflQ'[l,S"6.CTq\?ZVl6VqXKA\1ZEppH\%0)_
+]Y;.s_Sa@4aN2NIbg+P]dF-Opf%8R.g>(N?hr*GPj5]7`k3(smlKdg'mI'H3nF5u=o(2MGrq-?d
+p\4X]s7u]kr;6HjrVc?eJcC<$eGk%~>
+JcC<$JcG?@rVc`nr;6Njs7uWg!r)E^rq/hSoCDJBnaQ#9md0<+lKRQsk2tdcj5T"ThVHuAg=Y$.
+eC;pocd'eYb/hWB`P]R.^V.:k\[T#SZa$a;XK&7tVPHXN85)iWr)<Plr_`;alV[RXo25Has%s(Z
+1,CU>1c.*U62j.L4q'S:4$5Pc3]8rW2`<et4o[_E4TA1U9`mRJ:f6j`r)<o$<)Zap;c6Nj;#jMn
+;?'Pn;u]hn<W?+u<W,tu<W#hq<W?%p<W?)%<E)ptr`&ntqH!Ppr`0&"<rH%s<<#tu<WuQ,=]ea,
+r`BD,=BAR+=BAT%=T;Iu<W6#"<EB*#$<C/,<``='<`W4#r)WJjr`9&!r`9&#"]\T(='&H"<VTVh
+=8#bq<WZ?'<rQ+s<rQ5$=8uG'=T);)=BAR+=',?&!*T;)r`T5(r`T2%s&oA*!*fG+!a/W-rEB2)
+qHX#(rE95)>5hY)=T2Ao=^,-:?t!PUA7]=aAnPaiBk_6mAS#IcBPD3sC2@a(Df^)HH$OaaJ:`H.
+L5:_GNf]EhR%'\@UnsufX08e6Yct:4X/`2!W2?EjV#R2?UnsreWN*&'ZF7<V^KkGQ<`E(%<`)Oa
+83T@.6U3U`-o3>7/hfab7Q31]rAssX!`Molo25CDs,6o7rJCQ1!/LMa$"dg`C2@d+E,]goEWC1W
+ErU4\FRaMQFs2'SG^4XaItE?/MN!UZQ'e,;Vl[/5]u8(?e(34-hr<YUroF%>s5s@CrT!q;p>HqL
+iSU]%@p`D\Ali,<='&L*<`N.#=B8R-=BYW(#Zju*<)Z^m;GZp]A:K,\K7nr5Ll%%KNK90aPE_?!
+R$sM8StD^NUnsufWiE/&YHY==['mHS]"G\i^VRe)`Q$!?b0/#Scd:(feCE.%f\5'7h;-uHi8WeW
+jlY^gkiqBum-O--n*fc8nac8Bo^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcF7"J,~>
+JcC<$JcG?@rVc`nr;6Kis7uZhs7ZNerq-<aoD\;JnaQ#9md9B-lKRQskN:mej5T"ThVHuAg=b*/
+e^W$pd*BnZb/q`E`P]R.^V.:k\[T#SZa$a;XfJJ"VPIa8Fa/Y(q47/J!1j+Zs-rDGs.0(Zrgj"X
+qORYVs-k-kMhm=ON/V,@W262]U7\$MSXu:=Pa.DnOIMc0S=Q7Crga=d^:q:paNJg^oTT9=r0%;I
+PE_8qPjOb6Q2m3JPl6mHQN*<OR/`Q]R[]e:S=Q7CT:_hVU&^tfV#@.jVuEXpW<'#ur2BUms/>ss
+$`^2+WiN8(YHb@<ZM:a?ZEUU=YctC:Yck43XK8G$WMcSiVZ!FkVZ!:lV5'gaUAL\dU8.^`qkX=h
+V>$nfW:m+cVu<IoVl?]oW;`arWrB'uXT,C'XKDE's0)C*qm$('!3c7'!jAc0riQ1&s/l=(s0)I,
+!3uO/s0Da6[f3f:\bio8\,Wu<])TGA]cXu(_8=+/aNDfTdF-Org"Y??ioTFjlg4$,n+-,FqYe,-
+-crB\ZBM]8]q_'`Kq5:!SsHLMI8uMu=Bh>iW*3G0?X6j?Yd1F6YP#."YPa@ZMuJV5M>rA5L]7:4
+rtsVMiW&f+a3)B8^V@Ch[(3c[^VJ"7`k8h\[KO+GZ*1J(Y$QU.JqJ`2LP^kGN/is\P*;/sR$jD4
+SXuLJUSO`aW2co#Y->1:ZaI6O\[oGe^VI\&`5Ta;aihlPcHjnce'uq"f@em4gtgiEi8N\UjQ5Od
+kiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu]moDX=@JcF:#J,~>
+JcC<$JcG?@rVc`nr;6Kis7uZhs7ZNerq-<aoD\;JnaQ#9md9B-lKRQskN:mej5T"ThVHuAg=b*/
+e^W$pd*BnZb/q`E`P]R.^V.:k\[T#SZa$a;XfJJ"VPI:"B5;O5npg^kr.+Wpr.=`qmXbRmJqAQ)
+rdb#us*bMnAS#RgBPC=lI!g3bH?OISrc89aDf9K0CioVu%<cr>G'8(kOH,<iQtpjCI/SKmIf+Wo
+I.2RYIK4fpIf4]nIfFotJH(2uJ-(:RK)UB&K`6]*LB!&/L'!-dM#N8-MZ&D0MZ8V5Mu\k8Mueou
+rf@)@rK7#>!07&>s,d5@!KN-:MuSY5MZ/J3L]3/0MYr;,M>W20M>`54M2I4Kq2>91!K2j1M$Aiq
+Mi<RPMY`8.N;nk;N;\b4NWbE)OHG\(P5CFDP*,[(q2kZ?r/pi=s-!MKQ'M93s-3SMr0RAJr0RGN
+rgEbS'q:_aSXuLKV5C/iWiN5&Xfnt6ZaR@A\0AJq]t_D%`lH0EcdC7me^rO1i8Wh\l0Rj,o(;YN
+q>1!dr;HQorqQNfrq$.6rg8b&Oa`@ZP_F[;E-d5>HuXU^>t&^P8PFJXInia3;G^0gM>r81LPGGS
+r/CZ6reg]3s+h,>]Y(ql^;.P#_Sa=2`r*mU`rF*ZaSs<]b5TR)bg"DXcHjkbdaHXpe^rF+g"YBB
+jQGdon+65IqYeY<&H&c:ZJNKlR$sA+Q'7AmO-9L+%@*?MQ][AiNJrgPLP1EQKO0.YJqJ`2LP^kG
+N/is\P*;/sR$jD4SXuLJUSO`aW2co#Y->1:ZaI6O\[oGe^VI\&`5Ta;aihlPcHjnce'uq"f@em4
+gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu]moDX=@JcF:#J,~>
+JcC<$JcG?@rVc`nr;6Kis7uZhs7ZNerq-<aoD\;JnaQ#9md9B-lKRQskN:mej5T"ThVHuAg=b*/
+e^W$pd*BnZb/q`E`P]R.^V.:k\[T#SZa$a;XfJJ"VPHXN9MA8Xq,@8jrDE5alV[RXo25Ha!])Pd
+r\GHL2*aGm5<_7n4Zb_d4$#>\3ArfY4Zkkk5<]!.!Bj3W9`n6e:K%!es&Atrr)EYqs&Aqq!)iMf
+!)ibo!*&krr`8qsr`0)"<E8oq!EE+u<W?%s<=)]+<)cjt<)cjtmT'Bh<)iiss&T/$#$G&1='/U-
+qc<i$=',<%s&T2$r)NVprE'#""'&E'<rQ1t<rH%u<WH/!<WZ9%=8l8#<<-)!<ruE&<W#qu<rZ1u
+<rZ8"<qf\j=9Mc/=BAT&<WH.u<rZ8$=T;Ii=9)M%>5_\*=oVV(=oV\(>Q7t*>5qh+>l7k->l%Y)
+>5hY;=BSd1>[CfI@q0(]AnGUdAnPfVCB%s&B4tsmCMds-D/F33FEMbMGBeI_IY!0,M2R=RP*ME(
+T:r$UVPgAmX/rJ+XK/>!Vl$<gU]7&IUSXieWiWD1[^j&d_oBgCW)?_u=]8:#;b]qX6p3n75rLed
+.k!PC/hfgc7lN=`3]T6&<)ljnnko=Ds,6l6re^Z2$AW2(B5)*sDJjE5qf;^Xqf;^XrcI^RrcTQ2
+G^4R\H[^KtKntYIO-5csSti3bZ+%EbajAPhg"bKEioB+\rT4%@s5j4?s5Wn5qVheAf<8Ul@sV]f
+r`K/#'NJ+3<`iI,=BSa.<*!%"<`N*t;H!'^?@RKWK7nu7M2@.LNfT9bPEhH$R@9V9StMdPUnsuf
+WiN8)Yd(L?[C3TU]"G_k^qmn+`Q$!@bKJ/UcdC.heCE1&g"P39h;7&IiSrnYjlY^hl07L!m-O--
+n*fc9rpg*]o`"O`pAamdq#C0hqY^6ir;?Nbrdk*#s4.."~>
+JcC<$Jc>`Mo`"gfrVZTjs8)ckrqQNfs7ZKcs7AePo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hk@qg.9N1BX5p72/P!1`qUm[X<Jr14%^
+St2CApmj%-O,\sLNK&s,UnsrbUS4<NStM[FR[98$P`VH,S=Z=CSt;LDT"VkM^P04?Js,_hrfdMK
+Pa%C.Pk((>Pl?pPQBdc%Q^*j7PlI!XPa.N"QC!r*R@0M4S"0JKs.0=bTV8+YU]7+mV5C,fVuEUp
+WW&mtWW&jpVuN^qWW&ptWtDJ:YctC<Za7$FZa@*G['R'CrNQ=,%^<.>Y-"e+Wi;qoVPgAkrMKt!
+Vkp2cVPU)aU\pkbU]7+lV50rarMBUlVZ*InW;NRnV?3`qVu3CoVl$AjqPX=is/5^ls/H$urN,mu
+!3Z7's021$pTOY$riZ:)!3Z:(!O/j.Z3%A>[/RH9\%&rY])K;E]Xteg]`,Ml]">Sf]t_A!_SX4/
+`lQ<Gc-F\aeCE4+gtpuKjll!rmdBQ5o(;YOr;O;-.(Q4MPbbq2Z^mJDT<6)8Of<q4KNXC<>G7U]
+W*3A5?<^U<YHY45Ycmf*ric9Zrepf6rJCQ1MZ4jps8V99^s0s8_8!Xk[(3cY]tqP-aM,9q\[T/V
+Z*(C9XRrZ!IXls#K8#&8M2I4MNfT<cPa.Q%R@B_<T:hmQUo(&hWiW>*Yd(OA[^N]V]=bkm^r""-
+`Q-'AbKS5Vd*^:keCN7(g"P3:h;7)JiT&tZk2tjjl07L"m-X6?mfr:Oo()DDo`"Lbp@n=[q#C0i
+qYU0hr;HTcrdk*#s4.."~>
+JcC<$Jc>`Mo`"gfrVZTjs8)ckrqQNfs7ZKcs7AbOo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hk>@2#[GNjYSJbt&sJa%ddJc:01Iq`P+
+@VKLi;1*b;I!U'_rcS3]"E89rD/B,n%Wur=G'8(kOGo3/LhLaSrI"TmqgSKl!.=Tjs*XZkq0i<l
+rI+`prdFiqr-nWpqLAQsrIP0)KS5&5reC<*s+pZ2qhk9-",_qmMZ/P6Mu\k8Mu\n;O8k=?OoCFI
+OcYZcNfT9`rK$u<!0$o8qMGE4LkgbAreUZ5MuJP5M"QW)M#3#1MMmDlMZ&J4MZ/M6MZ/G4MZ&A4
+MMqFlq2>-/r/LZ8"cn\(O-#J&OoLUBPPgUDOo(78OoLUEPQ$aDP5pjFPm3J<QBml(R/WNPR/EBP
+S,]!=StDUHTV8*TUnsufWiN5'Y-5(7ZEpsI\[oDc]Y2%p_o9X9aihuWe(*%#f@ep8ioTCimI0W=
+p\Faas8;oqs8MlprVlcos8MHd--_g9MLUGGR#Q`IG'o%,L37oX7V#)-8POSZH@Sac;Gp=eMM[,e
+L@g/tN;eb8MZ&D3L^1Z/^VRe)`5VPms2P)Zs2b2]rlY5`rltGg(=:IWe'uq!f@\g3gu%/Sl0Id-
+o_84[aSuguc,A#`X/(uJR$Eu&P*(igrf[kWQ^F/'OH5E\N/<@ELkUTUKN`hTJ:`E-L51VCMi<[W
+OckroQC+)0S=Z@GTqeE\Vl?\tXfen5Za@0L\@K5a^;%J#_o0O7aN;WLc-F\`daZdtf@\d1gYL]B
+i8ESSj5f@bkNM0plKmm)mf)YZnF?)?oCMVRo`Fj]p\jmeq>^<gqu6NlrU^#>s+14#s*t~>
+JcC<$Jc>`Mo`"gfrVZTjs8)ckrqQNfs7ZKcs7AePo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hk8OuQO:f-mb!)i_lo2+dNqGQu`/Q+D\
+1GCUA1c@Tb5sIRt5Wq4k4$#Ga2`NfU4?Yei5!D1o4?Pc%:/+G96VL8S;Z'Jl<<#np<;ont<;ohq
+;Ya2i;#aGn;[63!<)cjs<E9$!rDiku!*/kp!)rhq!*0"tr`/u!r)N_qs&Jhpr`/u!#$4i+='&C$
+r`/u!s&T2'r`K/&r)X#'='/O*rE0)$"'/E&<rQ+q<WlK)<`N0!<WQ9(r`Att!*0#!r`B,#s&]2#
+!EE2!=8u8)<``@'<``B"<rZ;%=8u=q=85ns=oVV%<rQ)!<r?#!<r5qu=T2D$=T2D"=T2J&>5qh,
+>5h\'=p8,6>$G39r`]A+r`fA,!+#M/$!ge@?!LW??!LY5>mXhE?t!MSAS#IcrFZ:IBkhF"C]8&n
+CM[j+EH-#=EcZDJGBe@XH@:9pKSYPGOd)3"S"61FU84Zari#jr"feQ"Vl$<iU]7(gTfo0IVPgDp
+YHkUI]YMJ+b0JD`e_&Vp>?Fs*=Ai7$9M%f@6:F=.3&`3A.QfC?7Rfg72DdHU3B:&=<)QRko25IF
+repf6rJCQ1#&.gfD/XB5rGqmYr,VdXrcIsY!-\6^rcTN1G^+LZH[UBpK8,5@Nf]HjS"HISXKo@N
+`QQZZf@o'=j5]4ujo+??jo=EAirS0"ro3q9q;VD6$f^#ZDfp>L=BSa/=T2D%<Xr22=BJ^/>?G!-
+<``:%<W5ns;=[OeIXls#K8#&8M2I4MNfT<cPa.Q%R@B_<T:hmQUo(&hWiW>*Yd(OA[^N]V]=bkm
+^r""-`Q-'AbKS5Vd*^:keCN7(g"P3:h;7)JiT&tZk2tjjl07L"m-X6?mfr:Oo()DDo`"Lbp@n=[
+q#C0iqYU0hr;HTcrdk*#s4.."~>
+JcC<$Jc>`MoD\^erqu]ks8)ckrV-Hgp@eLY7eH<Co'u5=n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm-BY-"b)W2F9?Dfpetqjd_WrLNYPqj[VSrgW>Gs.0(Z
+s.'.[pRMPIN/<IPNK.EGVZ3A6TqJ$NTUhL>Q^*btOIi#6T:_^GSt2Id^:_.nf:I;FP*5C"!gJn4
+rKI;Gqiq)Fs-<YMrKdGJ"-f(9QN!-MQBhB4s-<VKs-<SL#a^pHR@9V7S=TYNs.9=cUAUbpUnsob
+VPg>jW2ZbrX8T$uW;`^nVu`ltrMp.(Y-5(7ZEsJ9s0Vp8Za0P6s0;R-s/uX0XK/A$WMoTi!2fal
+"fA,nUna^^UAgniV50raqkj+c!N)gpW<0#rW;`[rVPpKkVuNUqVl$BgW;`asWiQ*"r2g"&YPYR$
+Z2V'/Z2_*1Z*=54nur5$ZEpn:[/[N<[^WcV\[oEP]`5YF^APbG^`C;0`5Ta:aN;QHbK\>ZdaZk#
+g=tHAioK:em-jH8rq$<eq>:0"s![E;TWFBi^;H_:Q\V-<h49muM0+T6Pu_.[U8;!s>%(]@=g>-7
+Y-"o%Yl1d)N;eb8MZ&D3L]E3gruoY_s6&IVcHF&>^:h"`\[f;a_8".8`4NRi\%8rPYHb=8o<)VQ
+J:W?*KnbD?MN!OUOHG]jQ'[l,S"-(BTq\?ZVl6SpXKA\1ZEppH\%0)_]Y;.s_Sa@4aN2NIbg+P]
+dF-Opf%8R.g>(N?hr*JQj5]7`k3(smlKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kr;6HjrVc?e
+JcC<$f)L7~>
+JcC<$Jc>`MoD\^erqu]ks8)ckrV-Hgp@eLY7eH<Co'u5=n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm-BY-"b)W2Ea'Anl@4k(!MaJ:RWMqh"fukCW_bs*u\6
+An>[iBkgLnH[L-cG]n7SF`VSEEGo`3Cj'rEGBS.RGBS1lOH,?\VL<<)Hi8?kIJnWpIfOrjIJnQm
+IJnWoJ,XosIK+cqIJSEkJ,=cqJcC<'K7npWL&Zo'L]*)-MZ8M5MZ/G4MZ/G4MZ&J4N;nn;N!YN*
+OH5KbOcbfir/_DLNfK0^O,f6]O,f3ZN/[^ns,-f4s+g`3M2D4h!fMqnq2#*-rJCQ1rJ:Z7M2I4L
+regW3reg`6reg`4!/g`3",`"qN;e_:N/NVgN;\b7NrG+>OT1IAP5UUBP5g[COp$o/OHG\)P5LFB
+P5CIAPl$aGQ3*D?R/WKRRf/]USGo)ZT)YHFTq\9VUnji`VPgDnX0&P.Yd1XE\%'#^]t_=t^r"".
+ai_iPcdC4kf%8R-g=tHAj6#Unn+-,Ep\FX]rVQWns8E#sp\t-is8M?a.JL?4M2m(MPaI/UIWBak
+Y^CP7BN\taE(N`LH[SXa9MnV_9o=a`L4k?RK`6r0MuS\5M>rA7LVh!K`qd[Ta8j9ZaT'B]b5]Wd
+bg"E3cPOsUdaHUoe^iC+g=tKCjQGgpmd]rDqYeD5,OPE&a4dGhPF@r,Q'ISqOHPcjP*D2uR['"q
+NfB$ULkUV=L%Bt.IXm!%K8#&9M2I7OO-#KePa.T&R[]h=T:r!TV5L8kWiW>+Yd1UB[^WfY]Y(tn
+_8=+/`lQ6DbKS8Xd*^:ke^i@)g=k?<h;@/LioB(\k2tjjl0@U$m-X60n*ol;o()DEo`"Lbp@n=[
+q#C0iqY^6hr;HTcrdk*#s474#~>
+JcC<$Jc>`MoD\^erqu]ks8)ckrV-Hgp@eLY7eH<Co'u5=n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm-BY-"b)W2E*T7nuoYqbmJmrDW_or_`/]lr![YoMGoN
+1,:XB1Gq'U62j(W5!;%k4?>Pb3B0#Z2?#`E5!M7p4Zki%:B!rk>=VLd;,R<jr_rSkr)Nbrr_rbn
+r_`\ns&&em!)`Ylr_rhrqGmPr!*/hos&8qsnl>Zgs&JttrDiksr`0#$r`9/%<)iisr`0##rE',(
+>$1](#$=r.<`W:(r)`errDir#<rH"u<rH%u<rcA%=8Gqt<W6#!=8l8#=8c1s<rc;#=8u>#=8c/$
+='/Ss=85nt=8l;%=8Z+u<W,u"<`T#ts&]5$r`9/'=',?&rE9,'r`f;(rEK8)s',M,r`]V4>?kE=
+?!^k:?i=@8@:3MP@/XI4?j'nI@q90MB.dk4C2%BtCi+'.DJX3/EH6)AF`hkNGB\:WH@($fIY!3/
+MiNpbQ^F52S=ZCIU&LefUo"$e9;SGZUS=NWTq\<XVPgDoY-GFG]YDA(b0SJaf%A^4hr*I\Ali#7
+;HHh$9MJ&I5"&:72`NHA1HRZN0M4l*3&WTS3BK6#<)ZXj;tElcN;eb8MZ&D3L]`ENE,kktrcA!X
+r,_m[qfVp^qK2d]rceBes*5`6IXm$'LP^tNP*;6&TVSQhZamijbgP(pg>1]Ij5f=`rT=+BqrRk=
+rT!n:ro<q9q;W^ZPHS;1HrO6L=^"m-<``=&<E<4'=]ed/=B8L(<E2pq;c6K`:h5$*JV/T/L5:\D
+N/`m[OckroQ^F52S=Z@HU84W`W2ZeuXfnt7Za@0M\[oGd^;%M$_o9X:aND]McHjkbdaZguf@\g2
+gtgfDi8N\Uj5oFckNM0qlg4!*mdKW6naZ2@oCV\So`Fj]p\jmeq>^<hqu-HkrU^#>s+14$s*t~>
+JcC<$JcGcMo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nj2g8n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_8!^s]=GG[[Bm0CY-"b)W2F0>FaSt2rg`tYrL<kYp72#LrL3\Sn!sBJ
+rLWbS#E=b$LlRFR@/d&'UCs;oT:hjKR@9G-PEV'"SXl@FT)P8eStNg2]Y@t6GD#mXs-!GIm?@O6
+!L&cHQ26gGPlR'EQ2HmHPlR'JQ2['\Q^F20R[]h<StDUITqJ*SU\pqfV#mNlVuEUrWN)utX8f4!
+VuWanVuWgqWt;A8YHbC>Za@-J['[6KZa6t9Yl1g,Yl:g2Y-"e+Wi;trrMT[o"/i#nVuERnV#[=j
+U]$qeUB%+hV>R4gVuNXmVuNUsVl6PnWW&jqVZNfpVYd7lW2KWn$)a`#Vl6PnWN*#uX8oC%XT#@&
+YPPL$Z2_-.Zi@?1YlM*-Z2Lp+Ym@Y?Z*L^B['d=@[Ka4N\@K2^]DfMD^AbnI_'Hn8`5Td<aN;QI
+c-=P\dF6Xtf\50=iT'(blL"*3o_/%TqYU2qs!Y"HViJ0j]!n9"O.`SrZB;MN>ub$g<a22eTrD7#
+=^PH=YctF;XfS`$Yl(^)N;eb8MZ&D3L]E3gruo;Os6o:%c-=5C^V%(b[CWr^^;7q7_n<Ri\@8oQ
+Z*1I:o<)GKIt3*&KS>/:M2R=PO-#NgQ'I]'R[]k>TV8*UV5L8lX0&P.Yd1UC[^`lZ]Y2(q_8=.0
+`lQ9FbK\>YdF-Lne^rF+g=tE=hV[8MioB+]k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]k
+qtpBjrVc?eJcC<$f)L7~>
+JcC<$JcGcMo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nj2g8n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_8!^s]=GG[[Bm0CY-"b)W2Ea*B5D^=i.1fXr.4p"jamhjBP:pfBk_<Z
+IXM*?%=!)>F`_YFEH,l5CNajsG5lamOH5B]:o\;PH[Ga>rdF`orI=irpO3$grI+WnrdXorr-\Qm
+rdF]nrI=it!J,e"JI7!]JqJ`1L4tA;LAlu-L]rQiM2@%Fr/1N2regZ2s,-`4rf$i9!KN6?OT1IB
+P5C@@NrP1?NrG+>N<,'!r/:Z7MYi81M?/Worepf6rJ:W6M26udM>rD2M>rJ3MuS\4MuJV4MuS\7
+M#`G3M#`J5N;nh4Mu\e6N;\b8Nr>%<O8tF>OoU^EP5UUCP5^UDP5g^GP5^UDP5LO=PlI!MQC"!<
+RJrZSRkUD)StD[LTq\9VUSO``VPg>jWiE/'Yd1XE\%0)_]t_A"_o0O6a32`RdF-Rrf\5-Zh@JQ)
+jQPptnF?)Ap%J.Sq"apcs8;oqr;?Nl"98B#roF).g6%ASH]F,LObA70I"mf@FFn@'6qVAi9m_55
+ISNU0;Gg8JM2@"AKSB#Ns,?r8s,-c3s+g`3`l@qspW3?V"j>-6c-FW6ci;B-daQ^qf%8R-g>(TF
+jll$tn+-/Hr;OP4,5IbEf<;<HS"#b0Q'@DmOHGckPa%T)Q][DkNJrdPL4tA9o7UJ!It3*&KS>/:
+M2R=PO-#NgQ'I]'R[]k>TV8*UV5L8lX0&P.Yd1UC[^`lZ]Y2(q_8=.0`lQ9FbK\>YdF-Lne^rF+
+g=tE=hV[8MioB+]k3(sml0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$f)L7~>
+JcC<$JcGcMo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nj)a7n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_8!^s]=GG[[Bm0CY-"b)W2E0X92/4\;Z9Vn;?Kiq;GlgXl;@LXpJEIt
+1,CX@1Gh$U5s[\!5<_1l4$5Pc3]K&W2Ea2c4[2.p4[)"l:/4MX.TfD@r_NSlr_`_pp/Lohs&8qq
+!`;inr_`Yms%rbmr)*Dj!)rkrr)Nbt!*0"t!*0"ts&/tu<E/rt!*9%u!`W0!r`8ts!*/nsqc3Vr
+rDs&#<)iisr)Wi"s&fD,=]kZ)"^"i.=&rB!<ruE&<W6#!=8l5$='#9"r)W\rs&T/$"'AT(<W6#!
+=8Gtk=8u>!=8l8"=8u=r=8Z2#=8l>%=8c52=&r@'=&r@%<``@'<`N/n<rQ1u=T)D%>5_\)>5qh+
+>l7h+>5qe/>[(H<r*9P6?XR;O@UimH@K0a8?iOLB@:E\UAS5[jBkhF!D#S>PD[:?%E,frAG'J<3
+H2r?jI2m`gKSYMEO-#TmR$jD3S"-%@StMaMU8"EXU8"F^U)g#'UnjlcW2cr&ZF.3R^;@k1bg4_f
+g"YB?i8N\Uro>;L=BSa*;c?au9hS&B6:F@.3]AQ7.Qf@>7Rom;3&NNR3]U4><!#il;Y*ccN;eb8
+MZ&D3L]N9Or,_jXq/cFUrc\3^s*"?b,^=T[H@13nK8#)<NKB<fR%9qJX0/kB_8spPf@ep8i8`kY
+jlQL(rTF(?qrIe:n`0T/'&qEC>%r.[>?Fp.='&F(<`<(#rE0)&$Wg;/=B&=#;cHRk;=dUkI=Hcu
+K7nr5Ll%%KNK90aPEhE"R$sM8StMdOUnsufWiN8)YHY==[C3TU]"G_k^qmn+`Q$!@bKJ/UcdC1i
+eCE1&g"P39h;7&IiSrnYjlYail07L!m-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#
+s474#~>
+JcC<$JcGcMoD\^erqu]ks8)ckrV0"Zp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`PfX0^V7@m\[])UZa-g=XfSP$A7TP"J<B/fqj[DMrgWkV!1WVNrgj"Zq4/C^
+M2%%LMi;#?V5Bu^U7\'OSXl19QBm\rO8b^PT:VVQSdV4(^:_1oP&l&3P*5g.s-3/>rK@2Es-3MH
+!gJt8q3M#F"I,1:QBqN8r07)Ds-=:aQC!u,R[]h;SY)OITV8'RUSId`rhTjsVl-JlWN)urX8f3u
+W!')uW2ZcpWs>`.YHY=<[']h?rjE!;Za-j@YkkU*Ycn&/"K\W&WMo`m!2fXks/#joUnmsas.TRi
+Unn!dr2'OnVPj9fq5=4jrMKXmrMTFhs/5mq"KAE$X/l-!!j8`1rNH:,rilC,rj)C-pTjb&!4)R0
+!4;a5!k,VKrjN3D\[f;`]Y(qk^AbkO^qmk(`5]msar/CHc-OedeCN:+h;I>Ul0I^)nFH5Ep\Ogd
+XoBisW2,oNVldD)SX>5(]&'!DVjgkCJWs5@SY2dW>[1]D>?S89Z*(45YPGF"Y5jO\MuS\4M#iEf
+MuP!Hs8W)ffuMC\^qRLn\[K&[]"GnsbK.K3\[f2Y['HpAYH@E!A:8rXJqJ`2LP^kGN/is]P*;/s
+R$jG6SXuLJUSOcbWN*#$Y->1;['mEQ\\#Mg^VI_(`Pom=aihoRcHsteeC<($f\,!5h;-uHi8WeW
+jQ>UfkiqBum-O--n*fc8nac8Bo^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcF@%J,~>
+JcC<$JcGcMoD\^erqu]ks8)ckrV0"Zp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`PfX0^V7@m\[])UZa-g=XfSP$='K0JE-pAjs+1-#!.j6`&nb`cC1h3p:jmY;
+H?sgZG'A"Krc&'ZD/F'2rcS<dG5ZUiO-#B^NH8`Nrd4WlrI+ZoqgSTpq0`?oI=-GAIJeQnJ,Xoq
+IJnNoI=D'C!e>iPqLJj&K7ei1L5,P[rJ:K1reUT2rJCT5rJLW3s,%8DN/W[QN/W[QNK&sZO8b7@
+OoCLDOo:C?O8Y+<O8k7>NW4t:MuJS9M2I1Kr/CZ6!/gc4s,%)=LkpnFM2I.Hr/1K3s,-B*r/(T5
+MMmDeN;ne9N;\_>NfB'ZNK*purfI/Bq2t`ArK@/Dr0%)Bs-!AFrK.)CrK@5Gqj%/F"I5:=Q^I]>
+rgO+^SXuIHTV;@[s.hHIVPgAkWN*&%Yd1[G\[oGe^:qG#`5fs@bKS5Ye(*.*gtglIj5f=akj%U)
+nF?)?oCV_SpAajip@n@Wq>C-gquH]Ps!m6*Nf&F>LQ.@LK77ieNOF7UHuM\fBQ$F9H@1*j:/+V`
+:elq*LkUP<L@^&uN;eb8MYr;3LkkuMpW*EXb0'_-s31Phrm1Vl("1R[eCE.%g"P3;i8`tam-jN;
+pA4a$s!-3jd+H1>TpV@<Q'ISsOcbfjPEM,rR@'2#O,]*WLkg\?Knf2PA:8rXJqJ`2LP^kGN/is]
+P*;/sR$jG6SXuLJUSOcbWN*#$Y->1;['mEQ\\#Mg^VI_(`Pom=aihoRcHsteeC<($f\,!5h;-uH
+i8WeWjQ>UfkiqBum-O--n*fc8nac8Bo^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcF@%J,~>
+JcC<$JcGcMoD\^erqu]ks8)ckrV0"Zp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`PfX0^V7@m\[])UZa-g=XfSP$77KgB:/U^_rDE;cs%rho;,R9gpe_#fnPT6_
+q,%GS0ekLA1,LmS5lEqI4V'Y:3]fA^3B9&X4[)"l5!T!/s%`Pf"$T=Q;uKPm;?'Mo;tX,h<W?%u
+;uTVq;Gg<g;Ya2h;@$3!;c?Xp<E<0"<<-"t<W?%u;ZKeq<W6&!<<lK%;cHas<`T,u!EN;#<r5np
+<rZ5$<rH#!<`T*!s&]5&s&o>'s&T8(=',B%q,dPrs&]2#!E`G&<WZ9%<r,ns<rH)$<`N0!<rZ7u
+<p<Zc<qobo=9M]+<``B"=Su5#=Su8"<WH4p<rQ2!=Su;%>5hY)>5_\*>lS%->l7h+=o_e)>l@t.
+?3=PB@:K4Gs'l":$=@1K@:E_WAnYpprG;IM/8fBGEcZ>EFa&+WI=?ZrJ:`E,KnbA>NK90aPEV5t
+R@9P2R@B\7S=Q4BT:l(T*hoI,Vl6SpXg#1?\%0/d_o9aAcdC7pg>1ZEiSieVroF+@.cc4_=]eR"
+;c?dm:.[l<792c63\Mj94?G/L84Z3<2DdHT3]U8@<)ZUknkfCGrepf6r.tT5LN@NWEqj_UFT-F]
+G5ZR`G5QRaGlN%3H[UErKnbGBNffQkR\-@QXK]1I_o^6Tf\5-;iT&tZjo4E?kPsZEkPjWAjT+B8
+j8@s<j8%aAj4nf[Fa@J&=8l;&='#<%%TZS1='/R/=]ed-<`N+!r_iepnPEbEIt3-'KSG8=M2R=Q
+O-,ThQ'Rf*S"-%@TV8-VVPgDnX0&P/Z*UgG[^`l[]Y;.r_Sa@3a2lBGbg+M\dF-Oof%8R-g=tH>
+hr*GPj5]4_k3(smlKdg'mI'H3nF5u=o(2MGrq-?dp\4X]s7u]kr;6HjrVc?eJcC<$fDg@~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV-Hgp@eLY7eH<Co'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@rJ`l5j4^q[Rq]",8WZa-g=XfSP%AS?13KpJ3tm%!sBpmV2Os.'(XoUPrPr1<hW
+s,S"RLlRLT@Afs#V4sZWT:hjKR@9M.P*1s!rh'4^"J)-UTqMCu$,;^eHA.QHP*;+-PkL=?P5:@B
+Pl-gBQMm*IQN*6JPRj%DQ'IZ$Q^=),R@0M5S"9PNrLj4cqkX4f$Ds`!W2Q\qX/i>&ri?.$WrAsq
+W;rstWtMM9Xfnt7ZF%!H\$rlW[^EHJZM:[2Yck:7YHFt,WN#ios/#gpVYm=lVZ*ClV#7"fU]RBi
+V>d@lV#[FmVZ3LiV?3ZoW;`^mW;`[pVYm@lW;ijqW;iatW2ZbrrN#mu!j/W/rNQ1(!4)U1!4;X2
+"15D@ZMV!+ZMh-0[/RH5[f3c9\Gj)>]*#^Z^:sQ\#/J'k`5Td<rlGu!bg+P`eCN:,hr<_[lgOB8
+oCV_Mq>C5ks!b"H`fmm1W55*pO.r`!\<*87?;sseQX!adTr)!t>$tZ@>-Y<:Y-"n2qQTh"repf6
+r/(H0!/HL4+Q!.prS,*4c,.60]XkVa]=P_l^rjd:]XkY^]<ecIZ`s#(?[[BRJ:`E-L51VCN/`jY
+OckroQ^F21S=Z@HU84T^Vl?\tXfnt7Za@0M\[oGd^;%M$_o9X:aND]McHjkbe'uq!f@\g2gtgiE
+i8N\UjQ5Odkiq?slg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirqu`noDX=@JcF@%J,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV-Hgp@eLY7.g*Ao'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@rJ`l5j4^q[Rq]",8WZa-g=XfSP%=^PcWF*lVks+13%rdj9b*,B8!ASGpp;La(@
+H[9s^GBS.NEcQ/=DJa35G'Nt/$[6c=GE7fENc0)XFo-RcIJnWkJ,auqIK"]lIK+cnJ,ausIJnNo
+I=D$Brdb'$r.,'(K7ei1L5,S\r.tB0reLQ2r/1N4q2531rJV#?N/`jXO,oBarfR,As,m;B!0@)=
+rK$o;rf-r9rf$l8",`"qMu/J4M?JcnMM[2gM?\urMMm@KM>`>4MYW21Mu\e7N;\Y:N/NOMrJU]7
+rJgi9!fN"spPo67rK.&Arf[8Es-!#<rK@/Dr0$uA!0m8D"I>C@R@4&Cs-s"X#+_?WTV8'RrhD-B
+V5L8kWiN8*Z*_!M]=l"r_8=(-`Q60EcHt%jf\,$8hr*MTk32-tmdK]:o_%qVp%nC^oa(9dq"aa^
+qu$HGs!mr-N1bW`MMRdUJTuTtPDs[.Bh^o`DfJNGH[:'7:/"S`:eln)LkUP;L%BusMuS\4M>rA3
+L\]!pai_cLbfp(2s3;J-d*U4ie'uq!f@\d2h;I>Tkj%R)oC_qW\c360d]V36aJ>&iR[05&PEM&l
+rfdnVPaRu)OcPN^NJ`OHLkbJS?[[BRJ:`E-L51VCN/`jYOckroQ^F21S=Z@HU84T^Vl?\tXfnt7
+Za@0M\[oGd^;%M$_o9X:aND]McHjkbe'uq!f@\g2gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nc&([
+oCW%Ts7ZKerqQNhrqcQirqu`noDX=@JcF@%J,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV-Hgp@eLY7.g*Ao'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@rJ`l5j4^q[Rq]",8WZa-g=XfSP%84Q<H:Jga_r_`Acr_WYnr_`\lpeh#enko<_
+r)"%_1G^aA1c.-V5s[_"5!M1m4T7AG4#f2[2a0G)4UaP=5<M+m:/4MX2b$UB;>sDk;?'Mo;tX,h
+<W5r";c-FjrDEAgrDEGir_ir!<E<+!r`'/'<E3!s;cWft!*0#!s&B,";cENl!``9&rDrqu!*&qt
+r`9&!r`9"ur`0#!r`0##r`B/'r`K2%!E`G$<r#hr<r5tu<W#ku='#6#"]e]+=BAT&<WZ?'<rH)$
+<`N/u=8u=t=8uCj=8c5*='/O)<``B#=T);"=Su8#<WcE*<`]3$r`0)#<`]0#s&f5&qc`r&r`oG,
+!*oM-!*]A+qcrr&5$q`-@UW\S@UWYQ@:EbYB5)-tD/XB3Df0H2E,p#BG'A1VI"$QpJ:W?,L5:_G
+Nf]EfQ'Rf(Q^F/.R@'A1rgP4&S"6+AT:qsRV5L8lX0/\5[CEf]^r"%/aNMiSdad")gtgiFiVqm9
+j=fQQio/hO[9-O?;--[o=A;I\5=.k25WC\Q+t#K80eu6f75m1`4$#A^<)lmp;,Zs^repf6r/(H0
+!/L>j"*A[.GPu^`FoQX_GQ2pfGp7Q^It<6,Ll.1QP*MB(TqnZiZamiibgP(qgYUlJj5f:_k54?A
+joFTDk549>j8nB'qr@S7s5j.=r8e.@Q#gJ]?Y]RB$WgA0='/L*<`W=(=oMP'<XDi.<`N's<)QRi
+o2/kCIXls#K8#&8M2I7ONfT<cPa.T&R@B_<T:r!TUo(&hWiW>+Yd1UB[^WfY]Y(tn_8=+/`lQ6D
+bKS8Xd*^=le^i@)g=k?<hV[8MioB+]k2tmll0@U$m-X60n*olHncA@Srq6<bs7cNfs7uZjr;6Kk
+rVc?eJcC<$fDg@~>
+JcC<$JcG`LoD\^erqu]ks8)ckrqQNf!;?Eb6hL!Ao()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['Hp>XfSO1@r$4:N;T1AS,f&NSGnuXSGo#QRe`HGSGo)X
+Sd(aWNfK'SNrG"P?_sWrU7e6QT:hdGR@'8)P*D'"T`1MkSXuFGTt\7R^O`q<JbtZ.PkL=@P5LLF
+P`q@/Q2?mGQ2?mHQ2HmHQ2d0MQi<BPRKf7OSY2XLU&LbdU\gkcV$<fpVl?\rX8]4"XTPZ*WiGur
+!36%!riH^7Yd(L?['mKU\[f2Y[C!74Z2_$3YHFt,WMofo!N)doVZ!FmV?3ZlV>[1gV#."hV>[:k
+V>6tjVl6Mkql':f!3#mrqksLori5ptriH:*Xf\f*Yl1g,ZM_'*[03kCZa@+3ZOsRP[^ENO[^WcV
+\[oAa]=bhjqn<6L_84"+`r=!paND]Mc-b%lg"bNHkN_F'o(;VLq"ajeW;e=A^8\!!T;JN]V4F$2
+T"X!MQEGpRJm"4;?(RX`W*<M2?X6j?Z*LU:Xnf3sYQ'O\MYr>2L]E3gruf5Zli6"^d*9PG^:h.f
+]"GVe^;S"6`P/so\@JuPZ*LV)Y@W*0IXm!%K8#&9M2I7OO-#NfPa.T&R[]k>T:r!TV5L8lX0&P.
+Yd1UC[^`lZ]Y2(q_8=.0`lQ9FbK\>YdF-Lne^rF+g=tE=hVd>Nj5]4^k3(sml0@U$m-X60n*ol<
+o(2JFrq-?dp\4X]s7u]kqtpBjrVc?eJcC<$f`-I~>
+JcC<$JcG`LoD\^erqu]ks8)ckrqQNf!;?Eb6hL!Ao()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['Hp>XfSO'>%22aGMn#LJ,FinJa@suC1q6kBkV6r:jdV:
+H?a`7Fp`>4EH5u9DJj65H2VpcG6rMUOH#9/LhLgUqgA?js*j]lqgJKnqgJHmr."Wns*aop!e#NH
+qg\Wrs+10$s+(K.K7ei1KnbA<M#N20M#W>3L]E;1M#W>2MY`80MZ8V4N;nn;NrP1?OT1IBP5^[F
+Oopi.OH9@#qN(W9q2>?4N;eb5N;nh8MZ8M8MMm@Lr/:Q3repf6pl"j)!fMqnrJLZ7rJ^f;rf$l:
+q2YH8s,d5Br0$i=rf[;F"I,+6P*5C"rK[8Gs-EhTR@0N@RfK#XScGD^TJ<.8UnsrfWiWA-[(!TX
+]thJ%`5T^9ai_lRdad"(gtprIjQ>XilKdj+o(;VLq"a^[rqHHfqtL-c"S_]eqYeqD,JT\-Mh6V;
+M2$b;IWKdp[sW4GAl)u/DFmQLH[L?=9h\G^:]?4RLP:D9nq@%$s,-`2s+gc4a2l@$aTTc0bKS30
+c2Q!)d*^7heC<%#f\,$7hr<b[l0Rm0p%S=][JqB4S(4RZVNm^CQBd]!P*(rmPE_;tR%'J*OH5B[
+MM[%BnV(P%I=?]tK7el4Ll%"JNK90aP*D5uR$sM8StD^NUnsufWiN8)YHY==[C3TU]"G_k^qmn+
+`Q$!@bKJ/UcdC1ieCE1&g"P39h;7)JiT&tZjlYail07L!m-O--n*fc9o()DDo`"Lbp@n=[q#C0i
+qYU0hr;HTcrdk*#s4I@%~>
+JcC<$JcG`LoD\^erqu]ks8)ckrqQNf!;?Eb6hL!Ao()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['Hp>XfSNl84ZEL:\@Wc;>*ib;>jDd;>X2\;>jDm;%,<<
+0etO@1c70W5sIU556!_I4$#Jar\t-C3'BJi5!M:24UF;I:/+G66VL9RpJCui;cEHj$WC#(<E3!t
+;c?Rm;Z0Ji;Ys>j;?B]n;Z0Pm<<#tt<WlE$<*!*!<WcE(<`T,tqG[Vu<`W4#<rQ,!;ufqt<rQ)%
+<``=%<W,qu<W,tq=9Mc/='/Q&<Wc?&='"rp#?Fi(<EE7&=8l8!=8u>"=8l5%=&rB"=8l8"<rc;#
+<<-(s<s)Q+='5#pr`K2%s&f8%qcEi"r`0##r`K,#"BJT*=BPQ(rDir!<rQ/%=BAW$=TDY'>6J,4
+>$P>3>Q7t,=o_e&>l%_-?=.+>?OL7M@:3MQ@Us+dCi0/h*H,h6DJsK6F*)PLH@('hIt3-'KS>5>
+N/s'`Q'[p;Rff+KS"0JK.A!3+TV8'OT;&-ZWiWA-ZaI?U^;@e,`lZEKcdC1kf@o!8hV[5KiSrns
+jT"6rio/hQh;$`:enJJo=&i:"<)cRd8OYg3=$\c,0.Jb-3\E-W84>p*2E!TX3E9'Y<)?CinkoFF
+s,-`2s+gZ1r,_m\s*"Edrc\<ar-&$_s*,c6H@(*kJq\u:MiX!bQC=D?VlR#0]>DY7eCWC/hr*PT
+jQ>V!kPjWDjT+HBjT=N)jo4??j87p9jo+9;jo4BfkMa=9??0"Y>ZY*2='/L)<`iC(=BAU->$>!-
+=&r:$;c?Xn;"@IpI!pHoJV/T/L5:\DN/`m[P*2&pQ^F52SXuIIU84W`W2co#Y-5(8ZaI6O\[oGe
+^VI\&`5Ta;aihlPcHjnde'uq"f@em4gtgiFi8N_VjQ5Oekiq?slg4!*mdKW6nac8BoCW%T!quB_
+rV6Egs8)Wirqu`noDX=@JcFC&J,~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV/qXp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rdEg+^bK7iF`P]R.^V.:k\[T#SZa$a:XK#lEEHd/&q4%>QrL<\S!1WbRrgW\Oq4%&Irgj"Z%
+ZZU-KoM(Q@&9ZtV4jTUrLXFdR@'5&PE;<*StH"R".c*YU&D\-d%,K@r0-r@plk]?r0./Fpm(cCs
+-<DGrg!GHrg!ML&XSlOQ^O;3S=H4DU8+N[USOabV#I4jU^<lpVl6VrX/rD)r2p7+XK8J&X/c0"'
+<J@>YHY79ZF%$L]">Sc\[],VZi76/YkbR(YQV/2WN)oqVuERjVuNUsV50l]V#I4`V?!IhVZ3RiW
+;*7kW2]Tks/?!ur2Th"rN64(Y-7f.!4)U/!4)R0!4;U1rj2^6[.L^)[K*`7[f<fA\@K2_]=beiq
+S"&d^qmn)`5Td<aN;TKc-Ohgf\>9Ajlu.#o(;VLq"t#cs!aqEURA!WUTpJ]P,#/&^lG"=>?4ddQ
+rmO`TVPaq>[h#D>-P6:YcY.4qlok!!/pi6rJCQ1!/HL4,/O<NqWHAOccEo9^:^qe]t:nj_SOI;_
+Rm=f\$iWJYd(@4o<2qWI=HcuK7nu6Ll%%KNfT9bPEhH$R@9V9StMdPUo(&gWiN8)Yd(OA[C3TU]
+=bkm^r"".`Q-'BbKS8Wd*^:keCN7(g"P3:h;@/KioB(\k2tjjl0@U$m-X60n*ol;o()DEo_%nNp
+@n=\q#C0hqY^6ir;?Ncrdk*#s4I@%~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV/qXp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rdEg+^bK7iF`P]R.^V.:k\[T#SZa$a:XK#H0B5;L5k^`V]qgeWpq1/BomXcHnC1^shC26[p
+H[L0cH$=FSG'%eHEGo`4CNO`DGl;dmGBe@oOH,<nHu=0+I/86kIe\EmIf"NnIf"QlIf+]nIf4]p
+If"WoJH(2tJdd9bKS>,9M2I.FLl$rcM$&QhLPYncs,-f7!/pf7rep`6rf-o;!frG)rfR5D!0dDH
+#Et=6OcYWaNqSP6NW>(7N;eb5N;nh8MZ8M5MYi;3MYN,0N;AJ3N!#&uNK*mqs,6o9s,-l9qi1T6
+rf-i9rK$r>s,m2Aq31c?!0dDHs,uo9!0mJJrKdJM!goCDqO.JTS=TSL4.r:@U8+N]Vl?_uYHkRG
+]"Pkp_SjF5ai_lSdad"*i8N\UjQGaklg4$-nauPLq>1!bqYBs`qYU0fqtp9lrVk1D"Q>B!Lk>V]
++cV/+G^Y@2P')%`91;9fE_&lNH@/I_9i=hb:5XmaLPCQRKE-r0MZ&D3L]E50aTK]/bfp"0(s^IT
+dF-Lne^i@*gYCZEjQ>^mmd]uDq>@Mt$.#%$Zb<B2R@KZDPnfLEPa%ArPE_<%R?NboNf8pRL4k;7
+nqCk,I=HcuK7nu6Ll%%KNfT9bPEhH$R@9V9StMdPUo(&gWiN8)Yd(OA[C3TU]=bkm^r"".`Q-'B
+bKS8Wd*^:keCN7(g"P3:h;@/KioB(\k2tjjl0@U$m-X60n*ol;o()DEo_%nNp@n=\q#C0hqY^6i
+r;?Ncrdk*#s4I@%~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV/qXp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rdEg+^bK7iF`P]R.^V.:k\[T#SZa$a:XK"`[92&/ZqGI;jrDEVmp/(]bqGR)cq,$WZrDF"[
+1GgdB1Gq*V5X@X54p=&14$5VerAaa=s$$oU4?Ykl:/4MX;b'S\r)!GlqbdAk!)r_nrDWYor)<Vn
+rDEJjpJLrgr_rhr!`N&tr`'M1<E)t!<`N.#<``@)<`E$uqGdGo"B8B$<)ros!*0#!r`'/'='/O)
+=',9"s&]/$r`KM/='/O)<`N+!rDrVn#?Ff'<E<.%=8l7u=8u>$=8c1s<rc:t=8c,!<r5ts=T;Fp
+=8c8$=8l;'=]\]&=T;J&<rZ;%=oDG#=9;W-=8Q%t=8l=t=TDY(>Q.e*>l@k/>[(B8r*08.>l%b'
+?N4C5?iFI5@0U1NA7fOkD#.upDK'W<F`r%VI=HcuJqJc4LPh%NOHPlqR[ftBTqS3UU8"H\Vl9Tp
+,-.`DWN3/+[C<c]_8F74b08/YdaQ^sf\5-9h;7&Jio/nVrT!q;s5>KcgtUN6e^Ddda6%kS=B89u
+;cHIe91_B87S>p)2_-4'4Zb8N8Ol912)RJp3<`D^;cQXlnPK:EregZ2s+gi6FEM_LG5ZUcG'3V(
+s*+Kfs*>i9I=Hj%L5ChKOHYrtS=ugZY-PUQ`QQ]\f\>6?ioK1^k4\!8k549>jT"9;jS\-=jSIs<
+k54<fj3_dKJm;_h='/U,='8X,=BAR+=BAU,>?G!.=&r@$;cHUk:JgX[COCP[J:W?+L5(M@Mi<[W
+OHPfmQC+)/S"6.DTqeE\Vl6VrXfen5Za@-K\@K5a^;%J#_o9U8aND]McHaeadaZdtf@\d1gYL]C
+i8EVTj5oFckNM0qlg4!*mdKW6naZ2@oCV\Jp%J+Rp\ssfq>U6gqu6NkrUg)?s+14&s*t~>
+JcC<$JcG]Ko`"gfrquZjs8)ckrqQNf!;?Eb6M0m?o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^bK@oH`PfX0^V7@m\[T#SZa$a;Xf>iEFF8q2qjRSSopbrNrgW\QrL<\QpRCoIr1+k"
+NfT*SNK0!Y@&9g!U7n<SStVgJR@0D+PEV0#TDY8fTV8'l^:h:0eTc]FPlHsAPk^FBP5CICPkUI@
+Q2m3GQ3!88q3CuGrKdkZS"#q=SY;gTVl'EhrhTOirhLC-W2Q_rX/rG,Y-5%5Yd(F9XfSY+XKAS,
+riZp<Z*L[A[CEl_]tCtf\@8iMZ2Lp$Ym%>5WiE%srMT[mrhg.&Vl$>fV50o^USXgbVZ*FaVZ*Lk
+W;ijnVuN[qWV`XmWW0!tX8f:"Xobf2YPk^(YlM*.ZN7GAr3cL1s0hs7rj2X1qm6=0&@JsT\%&rY
+\[oDb]Y(ql^;'W\+2>V._Sa=1`lH3Cb0/&Td*pS"h;I>Ul0@^,oChtUrhKKCYGeC^_5*otW1900
+TtTBVQFi/lK3FI@?)+$eWEWY4?X?p?ZE^[;Y->,-YkP@$MYr>2M#W6hs!$Y+qu6$;`m;lF^:q7l
+]=khh^VIb0b/:s*]!o>ZZ*CU=XRiW'H[U<lJ:`E,L51VCMi<[WOckroQC+)0S=Z@HTqeE\Vl?\t
+Xfnt6Za@0M\[oDc^;%M$_o9X:aND]McHjkbe'uq!f@\g2gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6
+nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFF'J,~>
+JcC<$JcG]Ko`"gfrquZjs8)ckrqQNf!;?Eb6M0m?o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^bK@oH`PfX0^V7@m\[T#SZa$a;Xf>Q3B5Vg?mskCfqgeNmqg\ZrpON0mnUgdU$tX$a
+BPM9ZI!p?fH$T@3)09h>E,TZ3D0:)HGBS.RGBe@nOH#9*Tk\WIIK+]kIK+cjIfOriIJeQlJ,=Zp
+IJnWjJH(2uK)^K'KE['bM2I4Lpk]*/LPL]`M#iKlreq&@NfK*ZNfF$srJ^f;rJpr?rfR5D$C-pC
+Q'IStP*(fco8a!6NJrkoN;ne;MMmDlMu\e7MZ8P5MZ&J3MXl]*N;JS7N;eh7N:`,/NWG3$rf@&?
+!0R/AnWNs;rK@5Gq3(fCrKI8G!1!MKs-N\O!1E\P!M#_[TDtK:T:hpQUSO``W2cr%Yd1[I]=bkm
+_8OC9bg4_ff@es:i8N_Wkj%L$mdK];p%S:YqYg?lrPAL`P`:ZNR"^9HL4XkqH]P[bEf+[4@nCW2
+9mh86ISN[4;Gp8IMMI%CLPCQSK`?r-M>rD3LB5TBrQYAf(sgRVdaHXqf%8U/gt^iJk3;4!nFZGM
+qu3bu,13jG]tCMAR%9_5Pa.GqPE_8qPE_B%R[&tqNfB-WLk^_?nqCIuI=6TqJqJ`2LP^nHN/is]
+P*D5tR$jG6StD^MUSOcbWN*&%YHY:<['mHS]">Vh^VRe)`Q$!?b0/#Scd:(geCE.%f\5'7h;7&I
+iSrnYjlY^hl07L!m-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s4RF&~>
+JcC<$JcG]Ko`"gfrquZjs8)ckrqQNf!;?Eb6M0m?o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^bK@oH`PfX0^V7@m\[T#SZa$a;Xf=oa928;\qbm8fohbWbpJUfaq,$WZ(K*+I1,1R@
+1c73X5sIRt5!;"k4$#G`3W1r;4o[_E4o[\N9hnDW.T/u;r_i_mr_i_mrDNYoqc*Mms&Aem!)ibm
+r)3;e#Z+Ar;c?Rl;cEZprDa2*='&F&<E<1'=]kW&pJ_,mr)<Yrr)No"<``B%=T;G'<`f6#s&]5&
+s&TD->$G04=BGK%s&8tur`8hrrDrks"'8N(=8Z)#=&r?!<rZ2"<rH+u<rH,"<rZ1r=8l;)=&r@(
+=SPtm=9D].=',B'$!CA3<`N4'>$4u,=8c8#=oDG%<rZ8"=T)A&>5_V%>5qb*>5_\(=p8,8?!LZ@
+pg3r,s'>\4rF#Y6"_(tPAS,TSC&_p<CM[g)DfKlAG'J:ZI=HctJqJf6M2R@SP*D<%SY)UOVl?_u
+Xfo"9Za@-K[^W`S['mNW^V[t3bK\A\e'ut#f\5-:h;@/Kro3k9!94":3oAfLgY(3.d*9YN_S3Xl
+[]*J6<`*1#;Gg1]84Gg4=@5#10e4t.4>/EY84?!-2DmNW3*'$X;Gp@inPT=Dr/(H0s+gPspNHR\
+-?sf^H@('iJV/]5MiNj]Pa@l3Uo:B"[_9T#cdgY#gtq#MjQ5LcpZM84s5j7@!9<t;qrRk=q;qM:
+s5k!YkMk?<BQINh>ut-2=BAO*='/K%=9Vc0>$+p/r`08'<`;pr;Gg0[;.+a!I=Hd!K7nu7M2I4M
+NfT<cPa.Q%R@B_<T:qsRUo(&hWiW>+Yd(OA[^WfY]=bkm_8=+/`lQ6DbKS8Xd*^=le^i@)g=k?<
+hV[8MioB+]k2tmll0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$g&HR~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niZI3n*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`PfX0^V7@m\[])TZa$a;X^u*_G(Z"TS,JcUS,SlQRfJuUS,8`QS,JfJS,/ZP
+SK3`OMMR4MO'\Z\VPTuZTUqdKSXZ19QB[SpT:V^JrgjLjTqS-n]Y;(JT6uXsPQ6pGPQ7!IPk:1=
+PQ?u4rg!MLr0?i=!gJn5r0@8Is-N_P$CR?PS"-(DUo12irhfOgs.g@*VPgAlX/rD*YHP4:ZEppE
+Za$a=ric@)riZp<Z*L^C[^j&b^VIUs]"#,RZ2Cj$Ym%A8XK/D%ri#jp#c=Q!Vl6MjVPX6erMBLj
+rh]Oi!2o[j"/i#oVu3InWW&jmVu*FjW;rstX8f7$Xo5F"YlD!,ZMh*6[C3KN[^EOA[/[Q6[/[K3
+ZMh-/Zj!kG[^W`Urj`$?rk&6EqS"&e_84"+_o9X8aNDZKbg+S`e_&X5hr3VXl0Ig0pA4`]rt290
+T:2OOTWk,[O/&l"]9/h<r`05`QrdL]TqhTl$Y!IK>HtH?YHP+3YPk^!Y5jIXM>rD3LPu0Td.75)
+gqqC__S<gt]">Yg]=u(u_op'7]XbP_['HsCYjno.I!pHoJ:`E-L51VCN/`m[OckroQ^F52SXuII
+U84W`W2co#Xfnt7ZaI6O\[oGe^VI\&`5Td<aihlPcHjnde'ut#f\,!5h;-rGi8N_VjQ>Ufkiq?t
+m-O--n*fc8nac8Bo^r.U!quB_rV6Egs8)ZjrVZWmoDX=@JcFI(J,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niZI3n*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`PfX0^V7@m\[])TZa$a;X]Sh=BlJIhJGaoqJG=W`JGXoiK)]R*An>UhC/B>+
+H?sj]GBJ(PF)uGBDf9N/G'A4VGQ)dbGR'=jNf812DL280!.=Wks*jZkpO2meqLA6g!.Xiq!eGrS
+qh"j#"bh_hMi<VoMZ8M5MZ&A5LkgfaM#iKlreq5FO,f6]OHGTaNfB%tNr>"LOHGWeP*;/tR$a5*
+Q'@GorK$u=plGH8rJg`6re^]6rJU`7re^]4rJLW5r/1*(s,?r:!07&<rJgl;rJ^E/rJgu@NfT8#
+OT1IBP5gaFPkL=@OoUaFPQ-mHPQ-mGQ2QsFPld8<Qi39ORJN?RS=Z>LT/!%7USO]_Vl?`!YHb@>
+[C3TV^;7b/bg+Sbf%Jg6hVdDSjll(!n+$#Ap@nCZqu$Ek^Af,Hd#O-@JV8`1N.c_*I>=#GFa@^l
+77M398PT22##@uh;c?Ohre^i6L4k;8nq7"#r/(H0s+^U!rm(Pi(=:IWe'ut#f\,$8hr3\\lg=35
+pA+UaWW*IYUpRk=Um@RAR$Eo"P*>m0%[30CR%0P,OH,<ZMM[%Bn:bG$I=?]sJqJc3LP^nINK90`
+P*D5uR$sM8StD^NUnsufWiN8(YHY==[C3TU]"G_k^qmn+`Q-'AbKJ/UcdC1ieCN7(g"P3:h;7)J
+iT&tZk2tjjl07O#m-X60n*oi:o()DEo`"Lbp@n=[q#C0iqY^6hr;HTcrdk*#s4[L'~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niZI3n*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`PfX0^V7@m\[])TZa$a;X[P`M9i"X_;Yj8`;#X>b;Z0Jm;ZBVh;"RTm2)@$C
+1c%!I5X@Y"r]UcS4?P\f4ZYS`3&j&a55m\G5!Am/!)EMf"$T4N;#O;k;>sJn;>X8k;uBVm;ZKem
+;u]_q;>O2d;?'Gm;>a>i;u]es<W6%u<<ZH+>$>$/r)NPl!*/qr!EN;!<WQ9)qcEi"rDrr"!*K5%
+$s6\<>?b95=&i3u;cWcsqH*\t#Zk,/<E<.%<E8os!*B(us&K,"rDrr"q,[Gq"'/K)<r?&!=T;D&
+='5B%s&T/$pfRMu!*K,$r`9A.>$>'3=BAU,pf[St!a&T.r)a#'>$Ci,r`];(s'#D+s&oA*"^>5;
+>[:Y7?N+42>[I;7"(#>A@/aRj@UiqZAnG^iB4bahBPVF&E-$,DG^4X`I=?WqJq\u;NKB?hR%0bA
+Uo:AuZ*^pJ\\#PhrkB;a^VRb%^qmq.aj/8]e(!"&g=tE<h;7)Kro3q;!T`;?i>UY2gtUQ9f@80k
+aMl!.]!o&OYHP+(IT]cP;uT\p:)-Dl5XIt15WC\N,UYc;/i$!g6oR"^r]:?F=&i4!;G^9];#lLO
+M>rD3LB2RBq0"32G^4R\H@('iJV/Z4MiEg\Pa7f1USk/r[Ca5pbgY1rgYLfIjQ,Fbk54<AkksTF
+ki_.+k5XQ=jSIs<jS7j6joaf/kNDg+%-QTYG$J$V=B\g0=BPN''NS@==&rL,>$=s-<EE.#;c?Xn
+:JgUZAUJoTJ:N6(KnbA>MN!OUOHG]jQ'[l,S"6.CTq\?ZVl6VrXf\e2ZEpsI\@K2`]t_A!_SjF6
+aN;WKc-FY_daQ^sf@\d1gYL]Bi8ESSj5f@bkNM0plg4!*mdKW6nF?)?oCV\So`Fj]p\jmeq>^<h
+qu-HkrU^#>s+14(s*t~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV/kVp@e1Po^qbGo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*BnZb/hZD`P]O,^:_(g\@/fOZ*:C5AnZ45L6qb+p6tTBs.&hQ!1NPLqOIJS-'"+HLQ.@T
+O'ec]V5'cZTV/!OSsYq3QBIGoStVaIT:VXJTV&mr^&r&lHA)$Ws-<VKo993=rfmMMQ2R!NQ'R`$
+q3D,LQC!s;Q3rn@PE_;sQ'R`&QN!3[R$jD3S"#q>Tr"`fWi>uq!2fRgrhgF/X/rG+YHbIB[^W`V
+\@&]N[C*=>YQ(g>Z*UaC[C3ZZ^VRe'_8!Rk[Bd(7YkkU,Yck11ri6("WW&e"W2HSmVl-EkV#[=j
+V?!IlVZ!=kVZ*IpW2HQmV?3ZmVZ*LgW;<FfW;`drWrK+$XKAW'Xokf/YHe)2!3uL.rNcR4[^H+A
+!4Dd4!O]B4[/[K2ZiIN4[K<qK\bir=]Y43V+MY_._SX4/`Q#s>air#TcdUItg>(TEioK:fmIBiC
+qu3;h.'9JGQ)LLRZ)!tUM4_ZAVjG)[G_]Ic=BqbrTrD0u>@1cB>-G-8YHIc,orn:Ms+p]1N;k.%
+ao)28j2T<f`P0+#]=Ybi]=u)!`66<@]=GJ\\@&TGZ*1>*Yl(\4H@1-iJ:W?*KnbD?Mi<XVOHPfm
+QC!u-S"6.DTqeE\Vl6VrXfen5Za@-K\@K5a^;%J#_o9U8aND]McHaeadaZdtf@\g2gtgfDi8N\U
+jQ5OdkNV6rlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFI(J,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV/kVp@e1Po^qbGo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*BnZb/hZD`P]O,^:_(g\@/fOZ*:C5>@1uYF+*P.m!nMTr.4To%VfckAS>gmC/B;)H@'sa
+rHA<bEH1tr'5hW0GBS1TG'A1UGE7iFNDl-ZFS:.\Ie\BmIf4ZtIXQWnIJ\HoIt%6DrdOlsqgSQp
+s+('!!J5n!Jd6p^LP^tLNK!alre^W1r.tE2req/CO,oBaOd)&mOoCFDO,f8"Nt[V;OcYZePEhK%
+R@0G/QB[PoO-':"r/^c9!0-u<!0-u:s,-l7r/CZ6s,-f6!/gc6r/1K3rf$i7s,?u9s,?r:!07#;
+rJgl;rf$K/r/Uc;s,[5Cr/q&Drfm2A#F(F8P*;,oPP^RIQ'R]#QM?^HQC!s8QiNQQRfAiYS=Q8K
+T.ck3USXfaVPpPsY->1;Za@0N]YD>&air)YeCN7)gtpuKj6#XonFH5Fq"agbrVjA-.[#gMJ;T&6
+NJ3"4EdNqUK6)ue>%L9D8POY\H[edd9i=nd:l1$bL51M;nV$gss+p]1s3CYk'[b@Xe^i@*g=tKC
+jQGdpn+-,Gqu*Ak$,N7M^UpD3S",iEPl[&3rfn([Q'R`*RZrqoNf/jQLkUV<K_'n*H@1-iJ:W?*
+KnbD?Mi<XVOHPfmQC!u-S"6.DTqeE\Vl6VrXfen5Za@-K\@K5a^;%J#_o9U8aND]McHaeadaZdt
+f@\g2gtgfDi8N\UjQ5OdkNV6rlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFI(
+J,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV/kVp@e1Po^qbGo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*BnZb/hZD`P]O,^:_(g\@/fOZ*:C584Z?I:f7'eqGHr_r_`2`!)`\mr_`JfpJD&M1G^^@
+r\O^85s[^6592jM4Zb\d3&ioX2`Nr`5!;%m4[)%m9hnDW.n`W7r)3Pl!`2`kp/1lhr`&bns&Aqq
+!)iep!E)ek;Z9Pn;Z0Jm;#aDj;Z0Mo<;oo*<E)pt='/[2>$4o(<VfYp<W,ku<E<2u<X2`0=]eg1
+>$1]'r`K/$$s6\;>?kE;=BAO&<)rfrr)`o!!`rK*r`0&$<rQ)&<``='='#<#r`0##r`9#"qc3bu
+<`]-"s&T)"s&]D*<`W=)r)`o!s&]"us&fD*=]t],r)j5->?Y35=BP)r!a&T.r`B/'qca#&"Bnr1
+=BbZ-r`]>+r*05-ra#_5>[1Q@r*KS5?XI2LrF.NmAS,OeBP;!hAnPjpD/XH9FEVnSG^=^aIXm'+
+MN=!gS"?:KW2m),[CEf\^VI\&_o2Pn(<4G:a2Z0AbKeJ`e^rL.gt^`Ahr!ANro3t<8`J^fi8<AF
+g=Y$-da67]a2,I"[Bd!<Wi;qqVl$<8>ZY$+<)QUi9hS&H5=SUB2a/rI1+G@>0h+Z#7lN=`3]oD_
+<)cdq;,U?_;>c:NM#W8.G5c^cGlE"7I=Hg#KnkPEO-5]mR\$7NX0/h?^r=OFf%Jd4hr3YWjlPXf
+kPaWEklU)3kPj]EkPsZKkN:pgjlGP$jS.d9k5FE:k5OQCk5OQDjp^@h?sI,M?X$T9=BAT'=:/,4
+=BS^/=^#!2=8l5*<Dugq;,U4eo2/nAI!pHoJV/T/L5:\EN/`m[P*;/sQ^F52SXuLJUSOcbW2co#
+Y->1;['d?P\\#Mg^VI_(`Pom=b0/#ScHsteeC<($f\5'7h;-uHiSrnYjlY^gl07L!m-O--n*fc9
+rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s4[L'~>
+JcC<$JcGZJo`"gfrquZjs8)ckrqQNf!;?Eb5P4R<o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*Bq\bK7iF`P]R.^V.7i\@/fOZEUK?A8HC<Nqo19Rd$:ARe<0ISGSipN/iaMOH5B/VPgAi
+U8"<QT:qmJS!fY.P`l$<#+hHYStVjPrk8QL^6*MeP5(:@Q2d*@PQ-mIQ0jn9Qi33MQ2[$JQ2d0M
+QiE?PQ^Rf@s-sUkTqnWeXK/A#W2?GgVP^3hVZ*J;WN3,&YHY@A\@T;a]tCtg\@K,XZ`gU;Z*CXA
+['dBQ]YMGa`!+#n]=>5Rqlg++Yl1j,YQM)2XK;E%!NN*tVu<OpVl'Ehqkj=g!N2geVu<RoWW&gt
+WMlcoVt[.fW=Q#0Xf\\,Xfnn/Y->18Yd+,3qm-:0rj;a7rO)U4pp:%/rO2a8!4hs;!kZ.ZrP&<H
+!l2XhrkfVm`lH0Ab08/Xe(31*h;@/MjQ>[ln+65Iqk=$@n%u!1Tq7sRS?noYNMEQ'\s&b;=&rC`
+QWIF_U84_m>@V#H>HkB=Z)t.4Y5YZtYPj=XM#W51L5c-Vec5RFkg[Z!aMGU(]tD(m]"Ytu`66?B
+^:_%e\[A]GZ`pP+Yl(\:H@($fIt3*&KSG8<M2R=QO-,ThQ'Rf*S"-(BTV8-VVPgDnXKA\1Z*UgG
+\%0)_]Y;.s_Sa@4aN2NIc-FY_dF6Uqf@S^0gYCWAhr*JQj5f=akNM0plKdg'mI'H3nF?)?oCMVR
+o`Fj]p\jmeq>^<hqu-HkrU^#>s+14)s*t~>
+JcC<$JcGZJo`"gfrquZjs8)ckrqQNf!;?Eb5P4R<o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*Bq\bK7iF`P]R.^V.7i\@/fOZEUK4>[hDdGk$=JJ+8'dJbam<BPD$gC27K[IXHNiH?sdY
+Fa%qJEH6&;Df']CG]s(1rce^2OH5?[F(fK=p3lmgom[$lI=:j=p4**ks*slos*t#u&qPXcJV&K+
+JUrE*K8#&9MiEdWq253/s+pW1s,%)@NK'![OcbfjrfdDHrfR;EO8b.@O-#M'O:ID9PaIl-R[]b5
+Q^!YpO8P"=O,j4#r/Lc:rf7#<rf$l8r/CZ6s,-c5!K)g6M?/Wmr/:N4!0-o8rf$o<rf-f8s,I&=
+r/L]9rf-f8s,[/@r/q&DrKQr<!gJn4qih)GrKd;Frg!PNqO%;NrL*hXS=Q8KT.HY0UnjiaVl6Vs
+Y-5(8Za@-M\\5er`Q69MdF?^tg"bKDj5oRoo(D_PqY^?$rrfa$Nff+rKd2/.KR\/mKpdpDH"]`;
+7rN?<9mV26J58p>;Gp>KMM[1DL5,2NrJCQ1s+_;CdF6Uqf@\d2hVmMWl0Rm/o_84\U&Q=`W6W&h
+Wh5ZKR[05'Q'@Q!Pa%H!QCF>.OcYT_NJWFFLkbJSApSfOI=HcuK7nu7Ll%%KNfT<cPEhH$R@B_<
+T:hmQUo(&hWiW>+Yd(OA[^WfY]Y(tn_8=+/`lQ6DbK\>YdF$Fme^rF+g=tE=hV[8MioB+]k3(sm
+l0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]kr;6HjrVc?eJcC<$g])d~>
+JcC<$JcGZJo`"gfrquZjs8)ckrqQNf!;?Eb5P4R<o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*Bq\bK7iF`P]R.^V.7i\@/fOZEUK"7n66J:AIfb;>!cb;=IH`;>X8k;>F&a;$/U01GJeb
+"#`D15lO"J56!bF3tXS93B9&X4Zttl5<V.n5<hh:r_3DV:&@ig;>j>k;>=#h;uBVi;uTYp;ta,h
+;?'Pn;?'Pm;?'Po;#jMn;Zg!!<`T,u#?Fo-=^,'4<r,es<)r`n"'&B'=8Z)"=^(f-$X-b<=&r=%
+<``C)<rQ/.=^,-:?!LQ8=BAO'qc3f#<``B%<WZB)=8l8#<ruE&<Vfes<X;c-<``:$<`W;u<rH%u
+<WcH*<`]3%!`rK+r`B,%r`T2$rE'&&rE0&%s&T5'=oMV(=TVc0=oMV)=U&&6>$5!3>Q.h*=oDP(
+=TMW-qHE\t"Bo#6>[753r*98-s'>h6?=$oDq-O/1@JsX;@q91arb)^QAnG^jCMdp+E-$2Hrcf6*
+H[^O!LlIR`S=l[UX08h9\%95c^VRhe`WO9&aiaV+$d-Q4bKeMaf%A^3h>Z:2huDX6iW%j9halSY
+g=b*-da-.[ai2*0]!\iGX/MnlUS4BSSt)@@?sH`9<Dl^n;,C"[7R0:17mK$m-mU3(4"`6Z845p*
+2EX#^3EK3[;Gg9Z;>l@OM#W51LAlDsGlN%8H@:9oK8#)<N/s*cQC4>=VQ-f*\A,u)d+6k'gtq#M
+jQ5LckNDj.ros@E%I**?kND!jkN:pgk2k_(jS.d4k5XWAk5FKBk5FH^k2kaejPng2@;B@\?<C?5
+='&O+=BAR+='&O-r`T\1=&i:#<E)jp;Gg0[;.b-$I!pKpJV/W1LPUeFN/is]P*;/sR$jG6StD[L
+USOcbWN*&%YHY:<['mHS]"G\i^VRe)`Q$!?b0/&TcdC.heCE1&g"P39h;7&IiSrnYjlYail07L!
+m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqY^6hr;HTcrdk*#s4dR(~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niZI3n*f]2m-Es$ki_*ijQ#7Yi8<AGgY1<3
+f$r0sdEg+^bK7iF`P]R.^V.:k\[JoPZEUNGAo`0OQ("0>S*ug?S,SlQS,JfMS,8`RSI^gCMhmFT
+OC2InV5U/^TqVIX)P3FeR@08%SXuFGTUqdKTV8'o]tV7FOF)\HpltcC!0m)=s-3PKrg*PKoToND
+!go=@r0@JNPa%Gurg":cQC!u,S"#k8S"6.DV5L;nXK8J%Vtm2DVl6PnXKAV.Z*h-T]t_A!_8*du
+^V.4fZ`p[=ZEggD[CEcZ^V[t0a2c*4]=5/RZMh!-Z2Us1Z*LU<Y5YR&X9>Q&W2HQlVu`fnrMB=e
+"/VlnW;WXmW!0)tVl6SnpSmkbpo+=pXKDK'!3Q7'"L,/9Yd+)2rj2X1!OK30[f3`;[^EO?Zi[YD
+[f*Z8\GEcc]=bhk^;%Cs^VRe)`5KX7a2l?EbKS8Ydam(*hVdAPj6#Rkmd]rCq>Hud./0jEUmn?Z
+T=^njOeo>#jKb/\PBVb4P?2(eT:r2e>$GBA>[">8[]o_6s02*ure^Z2s+^T/N;j4Xs8DudfuhO]
+_Z%7a]Y2"j^;7e,b07l@^UUec[Bd'DYcdc*qlag^H[U?mJ:`E,L51VCN/WdXOckroQ^F21S=Z@H
+U84W`W2co"Xfnt7ZaI6O\[oGe^VI\&`5Td<aihoQcHstee'ut#f\,!5h;-rGi8WeWjQ>UfkiqBu
+m-O--n*fc9nac8Bo^qhLp@e7TrqQNhrqcQirqu`noDX=@JcFL)J,~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niH=1n*f]2m-Es$ki_*ijQ#7Yi8<AGgY1<3
+f$r0sdEg+^bK7iF`P]R.^V.:k\[JoPZEUN;?"RnoH1HLWJ,XumJ+A-cJc(*1CM@BlBk_<[:jmY<
+H?a^[rcScnF)l>BDf'ZAG'J:VG^'.4#`t+,Nc'#WFaX(7!IfInIe8*jIXh*@npgLbs*sutqh"j!
+s+:9(#).kiMiNgUrJLW5s,-c3rJLW5.?0@LP*2#nQ'Rc&QBd`"PECodNfT9`OcYZfPE_E%S"-%@
+S!]M,PECt*NW>.>NrP19Nr=t5N;AJ3MZ8S:MMmFPrJUT4rJ^f9rf-`6r/^i;s,I&="-8J%NV\\6
+Nrb?)rK7/ErKR5Ds-!5BqNUrDrg*SLqj.8Kqj@ANrL3bU!h>gQrh'4`s.Lm:UnsueW2cr%YHbF@
+['dBS]Y;2!`lZKPdaZk$g>:lPkj@s5q"jperkAF4rr;pQr;6<`oC2e%OcYBPMM6\HL4ac$M35K1
+FG"F6AS?!R9mqA7Ini^4;Gp@fMM[7IL4tA9nV$mus+p]1&;Jcfg"Y?@j5oLkn+-,FqYZoa$MV9b
+^qR%IR@Ke7rg!AFs-E\S$CR*?NfB'WM2$h@nV(e*H[U?mJ:`E,L51VCN/WdXOckroQ^F21S=Z@H
+U84W`W2co"Xfnt7ZaI6O\[oGe^VI\&`5Td<aihoQcHstee'ut#f\,!5h;-rGi8WeWjQ>UfkiqBu
+m-O--n*fc9nac8Bo^qhLp@e7TrqQNhrqcQirqu`noDX=@JcFL)J,~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_niZI3n*f]2m-Es$ki_*ijQ#7Yi8<AGgY1<3
+f$r0sdEg+^bK7iF`P]R.^V.:k\[JoPZEUN%7S?HP:f1*f;YEuc;#aAm;#X>^;Z0Ji;Z9Pi;#F0)
+2)@$C1c$sH2*jJl5<_7o5!:tg4T7AV3B'&`4[)%m5!;(o4\eaH9f5@6;,R9ir_`Vjs&&Phqc*Pn
+ku.OY!)iep#uXVt;Gp@h;H$Nl<!uW(<E3($='/U.='#)rq,IAps&]5&%Tcb8>$>'3>?b95<`E%!
+r`B,#s&T8(>$V#4#$Y85='&L*rDj/)<`W4$<``E"=8l7s=8u;$=8l8#<W6&!=8c1u<W?))='/O*
+=BSd/rE9/%rE'&&rE'#$s&o;&r`KG-='&L,>$Ci,!E`M(=p%o2>?_#/!*]A+#$P,3>$G06rE9/(
+r*/u"s'#;(r*98-!+,Y3ra#b9?XR8K?i=@5@:K1F6Y'b?BPD3qB4kmlCM[g(DK0cAG'J:ZI=R$.
+NKfg$Tr+ilZ*^sL]=ktq_o0R8aN;TJbfn8Sc-4ARc-Xtkf\>3;h>H+1hqn@g:Ya[Vf[eU#c-+2J
+`5''s[^30<WMZGaT:VUCR[KM-PE:f^aa@;q=&N!r;Gg4_83oU3?V34=0J"t@3\N3X7n,s-2)REV
+3]U/=;c?Oj;t*Z`M>rD3LFS%'G^4U_IY!-*LP^tNOd)0"SYDs\Y-PUP`6-HXf\50<i8`n[jlYah
+kks]Dkl0iHkl']Ejoa`-jlQL&pZ;;7qWIn@r9"(Bqre"As5j:As5O@HhOS;$@:<I@=TDP$=9)D$
+<tAG9>$5$2=B8F%=&`*t;,?^ZCjLGVIXcm"K7nu7M2I7NNfT<cPa.T&R@B_<T:r!TV5L8lX/rG,
+Yd1UC[^`lZ]Y2(q_8=.0a2lBGbg"G[dF-Lnf%8R-g=tH>hVd>Oj5]4_k3(smlKdg'mI'H3nF?&>
+o(2MGp%A%Pp\4[^s7uZjr;6KkrVc?eJcC<$g])d~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV/bSp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]tCqe\$iWKYchPPEd`oDRfAlIRK/cTReiNNRf&ZPRe`HKSGo'1OH5<S
+OGo</VPg8dUS+6PStMaJR[KM-P*)E/StM[JTV8*S^;%@qJ[]cOPl?pUPa.MuPa.JuQ'R]"oooB>
+rKRAKrK[&As-NbQrg3VM!L8oKQ2d0KQP5aSR[KV5S"-(BU84`fXfee+W2T]nrMC%%W2Q\sXfek6
+[^j,f_u@UU`5;Mi"i.d\['Ht9ZP^'W[^j&b_SsU=b/qW<]=52TZa$a>Z*:J3Yl_/5Y5GF$Wr]6"
+rMTapVYm7kVPX9hs/5mos/5mqrhodp!NE$iW<0-"WV<@hW=>l,WN*#"Xf\\+Xfek2qm$()rNlO0
+"1,AA[J[H5\,E]8[^H(@!k#JFrjMm<rOW$@rON*C]tV8[^^%]m_SjC3a3">'(!OqLdaQe"g>:cI
+jQ>Xim.'`Ap\Oi[ruJMIXI,`VURAE\R>dlAh:7a^Ki_;VOI0-UStMpYr`]e<?<^U<ZE^U9Z*:F9
+nui%MreUT0!/?F3$/tpao\.C1beq3p]bS2p]>),!`6$6C_7dIj\%/oNZEg^;q69b"@<m0HI=?]t
+JqJc3Ll%"JNK90aPE_?!R$sM8StMdPUnsufWiN8)Yd(OA[C3TU]=bkm^r"".`Q-'BbKS8Wd*^:k
+e^i@)g=k?<hV[8MioB+]k2tmll0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6HjrVc?eJcC<$
+h#Dm~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV/eTp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]tCqe\$iWKYch2<Ao)[@o76F^qgeKlnppOer.6J7BkCjiBkpRpI!U*c
+G]n=SG'7tJF)Z&8D0U5JH$FRZG^4RrOH,<-LhC^Urd4]oq0iBpIX^j;!J#[tIK4lsIdhjbIf=is
+JH(2tJdm9_JqJ`1L5:bINfB!Tr/:Q3!/^]4reh2DNfT<cPa7Z(R$a;/rg+^mP`_&gO-,QdO,oBd
+Q'Ri.StD[JS!]M,P`q5jNfT8!NW>.:NrP(?NfB%rN;SV6N;nh9MYi>3N;e_>N/NXRNJrhoNW+t;
+NrY48O8k4?NVnk9Nr>"GOH5HaOcklkP*2%-Pl-aFP5:C=Pl$aCQN!6NR/`TQR/`TRRf8c\S=Q4C
+T:hkVU*l_3V5L5iWN3/)Z*UgG\%0,a^VRh-aNMoWeC`O6jlu1%oC_nUrVaY65Q:WZr;6BfqYBmY
+o'br1kiLmc_Np4DJV]#5J<#83GC5.HWHNQ%8OZ-fE_/uPH[UE>:/+Va;,3"*LPCS>L@BirM>i>2
+LCApoi8`talgF<8pA+WRrsHuS`P&XSR[]h8Q2QpIPQ$jIQ49:QR?NboNf8sSLk^_?nqCLtH@1-i
+J:W<)KnbD?MN!OUOHPflQ'[l,S"6.DTqeE[Vl6VrXfen5Za@-K\@K5a^;%J#_o9U8aND]McHaea
+daZguf@\g2gtgiEi8N\UjQ5Odkiq?slg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)ZjrVZWmoDX=@
+JcFO*J,~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV/bSp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]tCqe\$iWKYcgSi928=\;?'Pd;>sDi;=IK[;>a>k;>O,g;$f*91GCXA
+2)[]crBL<G$p?^84$5Pa3B/r[5!Ag-s$$lb:/+G76V^BQ:f1*h;Z9Pm;#O8f;ZBYr<)``pmns-_
+pJUuh!E)em;Z9Sq<)`cos&02&<E<+#='/R*pf7,h#$"]*=BSd/r`T5(r`]S0<`E$u=',B%s&]5&
+#?kA=?XR5I>Q.b+=BGB#s&B&"rDs)'=]ef)=8u>"=8u>$=8c.u<rQ1u<rQ,!<rZ:r=oMM$=T2Cr
+=T;M.=BAU,=^##,=TDS'>5qh,>5;>$=9Mc1=]nr-=TM]1o2u&sqca)+?2\"2?!^lG@/aL7?sd:>
+@/XO6@K9p:A--=TC&VoJC+!e5D/O60E-$2HH@:?uM3*shS=l^XXKSt=\@T>d^VRk.aN2NIbg$.5
+rm(Me#LClMf\5-:hYu@2gfW=bg=Y!,eBuO`aMl$2]t1\\ZEC4,V4sTPR[BJ/QB[SqO,SpNKRnZ'
+IqDqe=A`!p;c-:a8jkj0:K9Y>3%-%#4ZY2N84H':2`3KS4$#?$<Dldn;H$K`;#lIPM#W5VL4"H#
+Jq\u:N/j$bQC4;<V5g](\A#o'd+-e&h;7)MjQ5LckNDa,s60CFs60CDrT<b6qr[_;!9X1A!9X:D
+qrT!^jQ5I_j5T(YjQ!jh?t3VO=]ej0=]\[,=]SU+='8]*>5q_)=8u;(<)Zap;XmUmH$XjdIXm!$
+K8#&9M2I7OO-#NgPa.T&R[]k>TV8-VV5L8lX0&P/Z*UgF[^`l[]Y;.r_Sa@3a2lEHbg+M\dF-Op
+f%8R.g>(N@hr*JQj5f=ak32'olKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrU^#>s+14*
+s*t~>
+JcC<$JcGWIoD\afrVZTjs8)ckrqQNf!;?Eb4nS@:o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pd*BnZb/hWB`59@*^:_%f\$iZMY\.NcGD)4IReiHORf/`NRfAlSRe`HIS.;*NNJW^UO^XTS
+VPg,\U&L\oT:;78R$X#"T:_dLStH"U$_jE0^;.M6RsKpWQM-UDQ2m3KPlHpPP`q;qQ'@Puop,<<
+s-NYNs-NbOs-3MJrK[GMrg<_RrgF=dSXuONVlQu'XfSP%W2TZm%]6/%W2m&&Y-5.?]"c/&rlG#X
++i_C5]!o,W[^NTP[^Wi]_8XL>c-=AK^V%+c[C!6EZ*:J2YlM!)XTY`+X/`/uVuN[rVl'?fs/,[k
+!iW#prM]aq"0/?#X8&XrWiN/"r2KXn"0&<"WVib!X/rD)Xo>I)YHY8-Z2M!(ZN.B1[K3kGrjDd8
+s0hs8rjMj9s0r'>qmud=s1BYl^V@S#_8F40`Q-'Ab0%oNbg+Vbe^rI-hVmMWkj%O'p%\I`rga!?
+nZ'F"R\6=F_PE`cUoqbVQ^=h1G_Um7=^J#!TVYgr>@:fC=L#3AZ*(45YH[Q#s+pZ0!/?F3,2rS$
+q;TN<bf@N5]tD"k]t_>"`5p-B`4iss\@T,SYd:R;o<;kPH?sseIt3*&KS>/:M2R=QO-#NgQ'Rf*
+S"-(ATV8-VVPgDnXKA\1Z*UgG\%0)_]Y;.s_SjF5aN;TJc-FY_dF6Uqf@S^0gYCWAi8ESSj5f@b
+kNM0plg4!*mdKW6nF?)?oCV\So`Fj]p\ssfq>U6gqu6NlrU^#>s+14*s*t~>
+JcC<$JcGWIoD\afrVZTjs8)ckrqQNf!;?Eb4nS@:o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pd*BnZb/hWB`59@*^:_%f\$iZMYZP4DC3"^oJFA!dJG=WcJGFcoJdQ7+ASGjo;fdA6IJnC$
+GBS.NEH#r;Df']BH$OXYrHSBhrf72BUjR!(r-\?imsk=erdP'"It3#to7-ais*t#srI=its+1'!%
+>07bK7no4LP^tLNJrhlMuAP5N!tW'NK93cQC+,1S!ocDRL#=KQ'7>nPEM(-O;!b@QC487TV8'OS
+!fV/P`h/jO,s7"!frG(rf.5ENfK*YNfB"sMuSb8MuS_:NK!XjqMbH4r/CW7r/Uc;rK%&@OSt7?O
+T1CAOSOt9O91Q-P5CICPk1+9PkpXFQMHjIR/!*KRK/iVSH#-2StD^MU8"EYV5:)gWN*#$Yd1XE\
+@K5c_SjL9b08,XeC`R8k3VU/pA+R_rPed=rr)`ir:_f9o^VA9l0.6ginrPHgY2\AOI_2[KnFr@L
+Osl%LQe$MF+7h,ASH'T9mqA7IJutL;c6IhMM[7JKnb>9n:^gtreCc6l0Ig.o_/+YPlD3BZ-p=sV
+ja$CR[02'Q2[$IPm3SCS!oS*OT(:?M$&HfL5#5RB6\`KI!pKpJV/W0L5:\EN/is\P*;/sR$jG6S
+t;UKUSOcbWN*&%YHY:<['mHS]"G\i^VRe*`Q$!@b0/&TcdC.heCE1&g"P39h;7)JiT&tZk2tjjl
+07O#m-X60n*oi:o()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s4mX)~>
+JcC<$JcGWIoD\afrVZTjs8)ckrqQNf!;?Eb4S879o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pd*BnZb/hWB`59@*^:_%f\$iZMYXV&P:/C1Qr_WMin5B$Yr)3MkqG7Z!1G^aA1,LmQ5s[_!
+4[/j.)E^)C3]T5]2a';f5<_7q4[2.p:/+JX=[l.arD3Pm;H!3cqGR8js&B"ss&&qt;GpHf;?]oo
+;,L4hr_r_mr_rSis&&_ms&Att"'/K*<r#_r<`T)t!EE+u<<6-&r`]>)!E`M'>7t1F=B8C&=BJX+
+<`W4%=Bf$:@/aR<?!:B6=BGE$r`&r!rE'#%s&f8%r)Wi!qc<_s"'/K(<r5tr<WQ9(pK7Jur`AVl
+s&o8%"'Jf2=oMP'=oMS+>?Y5%=o;G*>?Y-2p0%E!rEK;,r*B>/!+5S1!FK76@JaL7@q>OM0PG6<
+DJj6*CiFE9FE;PHH$k*pLlR^gSt`*]XKSt<\@T>e^VRh,aN;TJc-FY^dF/$A#ggoEdF6Xtg"ZM]
+;VTpYg"=m*da-(V_S<^m[C!9EY,eM!UnOBMR$EhsOH>N_Mi*7CJUi6!I!^-`GBh5E=^Y</;c?Rf
+:J48E6Uj[62`iZD1-@QM1.Xo*7Q<:ar]1<F<E<'r;,C+fn594AreDYOKnkPEO-,ZnR\$7NWii\=
+^;S.?e_&U2hr*PUjlP[gkkjTEkkjWEkQ'fEkl0`Fk5FE>k5FE=k5XWEkl'ZEkkjNCkl0cEjoOZ-
+rT4(?s5O.>j8S'<i>:Y'EFs,s?<^H6=]\[-='8O)=BAU->$Cl,$!1/.<E)mq;GU-\;.k-"H@1-j
+J:W?+KnbD?Mi<[WOHPfmQC+)0S=Z=FTqeE\Vl?\tXfnt6Za@0M\[oGd^;%M$`5Ta;ai_fOcHjnc
+e'uq"f@em4gtgiFi8N_VjQ>Ufkiq?tm-O--n*fc8nac8Bo^r.U!quB_rqQNhrqcQirqu`noDX=@
+JcFO*J,~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb4nS@:o'u5=n*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+e^W'qd*BnZb/hWB`59@*^:_(g\$iZMZ".KgH\[mTRe<*IRK/iURfAfKReiNJS1KY\M274SOC+f]
+VPKlZT:_dMSt2@>R?j,%TV%mMT:r!SU8#B8^:mk#G_2=^Qi33OQ'Ra8Q2R$KPmNbAQ'R]"Pa.Q#
+o9K<@rg3YNs-NVMrg*VNrK[>I!13\Ps-`nU-C^NsT:hpUWN<8*XfSP%W2HSlW2HPlWN<5)Y->4>
+]"c/'b08/UrQH>+b/V<4]Y(ke\%&lV]"Pr!aihrRai;34]t1Y\['TV6!3Z4$s/c7$!ii2srhogp
+rhf[ks/,dnrhp+#W2HPlW2ZbrrN#sus/H!t!3,mrrM]dsri$F.X/i8#X/i8#X/rG)Xf\c)YQ(p)
+Z2V'*Zi@B4[JmW7\,No:[fEr;[fEr;[fEr5\H'5?]`5YK^;.S$_SlGms2Pkqai_fNcHt%if%8U/
+hW!Y[lgF?<r0I@6XfS@dWLf`O\=f1KU;Z!HOIh/2<`bBM=B_5jUo7L'>[LiC=g5-=Ycb45YOJat
+LkgcbL5c-WnGiLbkKq;mahb^+]Y2%m_8*t-a3;TB^V@@i]XY>QZa$a<o<;YJH@('gIt3-'KSG8=
+MMmFRO-,TiQ'[l+S"-(BTq\?ZVl6VqXKA\1ZEpsI\@K2`]t_A"_SjF6aN;WLc-F\`daZdtf@\d1
+gYL]Ci8EVTj5oFckNV6rlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFR+J,~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb4nS@:o'u5=n*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+e^W'qd*BnZb/hWB`59@*^:_(g\$iZMZ!(LIDKL@#JEq[bJG=WcJG4WpJeDd4ARoOkC/KA+H?sg]
+GB\4SFoHFgEc5i5G^+LZG^014#EY",ND#mZErLLeI/\QjId_dcJH(,tJGaorJGXipJGt#uIf=iq
+J-LRVJqJ]-K)L?$KE?pcMuJ_9N:r2/N!bQ)O-#QkR%'Y<T)5&iS=5h2Q'RYtOcb`gPEhN)T)PAj
+T:MC<Q^3huP*(fdrf7#?!0@#;rJ^l;Mi7Rns,6l8s,@/?Mi<XTrepi8r/:]:N/RUmrf-i9rf?f8
+s,m)<s,[/@rfR2Cm?@L5qj%,Grg*VPrKmPOpR),PS"-#ISLU5'TV8*SUSO`aW2Q_rX0/\5[C<`[
+^r=F?cd0tce(31,iTBLsp%\C\rQ"pVrqlQep@\%JnaZ,:mH`uujPf"PgY1B6f@JINdfncrO,JUJ
+rdklIKmn5oP-VcCG\To@7rNH?9m_86If<+B;?]omM2@.Hre:E,n:Uk!LPPk`!r2WiOT,XT^<s[-
+Wh,WJS,ATMPn9:LS=5\*OcPK^N/<=GL5(ERL1,=QH[U<lJ:`E,L51VCMi<[WOckroQ^F21S=Z@H
+U84W`W2cl!Xfnt7ZaI6O\[oGe^VI_'`5Td<aihoQcHsteeC<($f\,!5h;-uHi8WeWjlY^gl07L!
+m-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#s5!^*~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb4nS@:o'u5=n*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+e^W'qd*BnZb/hWB`59@*^:_(g\$iZMYsq;V:/=^T;>F&f;=IKV;>a>l;>a8j1^u5q1c%!I5X@V!
+5X%@pr]C6D4?EI%"#iA,5Q3kF56aeV9hd-9:An&i;"7B_;Z0Gm;Z0Mo<;0>i;?Tot;c?Qm:]XEk
+rDWSkr_rhps&&bns&&bn!)rep#?=f+=&i7"<;fet<`T)tr)El$=B\p5r`]5(s'6IH>$+m1>$+j-
+<E3(%>$PB@@:3GJ>?b65r`B,#"'8N(<W,u"=BYW*qc<f!=8,bq=8u>$<rlE)r`K,#!*Jhqr`K/$
+nlQ&u=BJa1=oDIu>5MJ&>5MJ$>5h_+>5h[u=o_e+>l@q3?=7,I?=3\>raGh7s'be6!b5bPralON
+C2@a*E,fo?GC"W8H6@Q_JVAuDQ^skKX0/\4[^j#a^VI_)`Q$$Cc-F\_dF$D?dlGq,e(*%%g"G*5
+f\"g+eC)Xb`kT0r[Bd!;WMZMfU7e*IR$EktNJiXKL4t;5JUW&qH[0j[G'8"Mr,XEE=^+s*<Dlan
+:/";M5Xn[m5WC\P,q(o</i#pd77K3o2EEo\3EB*Y;c-Fkn509aLkgcbL)Z;@Q^aVBVlR#.\\Q2-
+d+6k'gu%)NjlPXfkNMg-!:'IG!U/eGkQg;7kND!ijlQF&roO%>rTF+B!pSq4roa=FrT==GkND!i
+roO1@r8[h:s5F"9&`;I*gl#i`@:3AB='8U+=BJ`)=:&&4>$4s0>$+g+r`&tt<:<[mG^=^bI=Hd!
+K7nu7M2I4MNfT<cPa.T&R@B_<T:r!TV5L8lWiW>+Yd1UC[^`lZ]Y2(q_SX71a2lBGbg"G[dF-Oo
+f%8R-g=tH>hr*GPj5]7`k3)!nlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>s+14+
+s*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV/\Qp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXPTaN)9<_SO"$]Xt_a[^<ANAo2X>Omeb/RK&`URK&`URJ!$FS+iHQN@B^ENffH2Vl-Je
+U8"9QT:ML@S!fV.PG"SCT:V^MUS=KX^V7Ltp7HkqrgEbQm?[d;rg*5Bs-*SMQBqE7qO%5JqNh/J
+s-O4_R[T_8S=Z@FU8=firiQ@*XK/>uW">r,X0&M,YHbF@\%BJrbg4Z6d0S1JcH4&B^V7G\]Fqon
+_8F:5aiVTB_SEn"\[SuRZM^s.Ycmr+ri?1%WN#ip"K/,oV5=0grhfapri,am!3,dpri5suql0h!
+WiE%uWr&jqXT,C(Y-5&-YQ1s-ZM^s-ZMh--[/RK4[f<i:\,a);\G`u;\,j.Oq7-O<^&G_f^VI\&
+_SjF4`l?'@aihrTd*^=mf%AX0hVmS\m.0lJPlE&EY.(!uTV%b8V43^FXOb7SPf&i)LkLsp?DX<g
+Uo7O&?XI&@Z2V$3YHG.7YOJdrL]3$cruqCAmFKG&bJh61]tD(m^qmq+`QcKC^;%:i\%&iMZEg^9
+o<;kOH$XgcIXls#K8#&8M2I7OO-#NfPa.T&R[]k>TV8-VV5L8lX0&P/Z*UgG[^`l[]Y;.r_Sa@4
+a2lEHbg+P]dF6Uqf%8R.gYCWAhr*JQj5f=akNM0plKdg'mdBQ4nF?)?oCMVRo`Fj]p\jmeq>^<h
+qu-HkrUg)?s+14+s*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV/\Qp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXPTaN)9<_SO"$]Xt_a[^<AC?"7PeHM)gHJ,b&uJ+eEeJHKV"ASM-Z(JfI+I<g-aG'A+P
+FE2JEE,KQ<H$FOXGl;mqHB=2KNPg0_H$t-jqL/6ipjW9oq1&Bo!.Xosr-n]sqg\KnrI=Zos+:'!
+s+CN/LPUhHrf-W0!0$l9rf72EPF%c1rLa+_s.K^mTUVC:QBmf"rfdbTQ^F53S=Q7BS!j8C$C$a;
+P*(fcNfT9_rf.&@NfO$ss,6r9repi8rJ^c9rf$]5!K;s9Mu\e6N;eh9N;ek;O84n0Oo1=?OoLU;
+PPgXIPEM,nrKR5Frg*JKs-WeP!1<VNrL*eWS=KPK".l-XU&Lc1USXicW2ZetXKJh7[C<c^`6$<Q
+eCE1'gYUiIk3V[4qY^?:s8Musr;ZU.p[n(Hn*TH+lKRKojPf%Qg=b*/e^XQHrR<LKfpn7kK8G87
+K=$GdH[^^<P'M&ADH(4^E(WlRH[C-j:JOkf:f*(-M26nALPCNPK`?i,L5l3Br6Ea)^TaE#R[fb1
+Q'_K8':+oLQ^F>4P`h/iNf8pSLkgb?L%C%3GBnL]I=?]sJqJc3LP^nINK90aP*D5uR$sM8StMdP
+UnsufWiN8)Yd(OA[^N]V]=bkm^r"".`lH0CbKS8Xd*^=le^i@)g=tE=hV[8MioB+]k3(sml0@U$
+m-a<1n*ol<o(2JFrq-?dp\4X]s7u]kr;6HjrVcBfJcC<$h>`!~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV/\Qp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXPTaN)9<_SO"$]Xt_a[^<A084cNM:]42_;><ue;=IKT;>a>l;>sAp1GLXA1]B9362s.P
+5X%:n4T7DH4?5D]2a'>&55d\R5#+gI9lrj%;Gg=iku%IYo2>ll;,L:l<Dufo;#aGl;uBMr;cH^p
+;Z9Pk;?Bcp;uT`#<E)pt<``?"<;fhr<;T\q<X2`1>[:W?>[.24$!gnF>[(B8>?b80<t/87>?b?:
+>[:W>>$>'3r)`hts&T;)='8]*=T)>$=T;J%<W?,"<Vf`"='/U-=',<%q-!]!s&f>*r`K,#r)`r%
+qcEu&=BJ^.r`K8(=8l;(=^#!3r`]2%qca#&r`]8)s',P.r`T;+q-*f&s'5J-!+,Y3ra>S2r*fY9
+rac"?$Y<scCMe!1F*2bVJGt*DJq\u:Nfoj'V5^W([C<][^VIb+`lH0Bb08,Vd*^7hdaQ\EeGdu!
+f%9oRs48[MeBuXfbK%K4[]us6Vkg)\SXc.9QB[PnN/E@CJq/?"I=$9cG^+FTrc8<bEH#o;EcZ@%
+FY88Q='8I&<)Ze):J48E6:a^62,uC_1H[`P1.Xo)77K3o3]]8]<`W-s;c-Fk;t<fc;#c=ML)6MY
+WN<>4]>;M1dFQt(h;@2PjlY^gkNMm/rp'7Br941Ds5j=Eqr[q?qr[h>rTO7Fqrmn>s5s:A!9F(<
+ro3t:!T;l7hAtG-khiCYEElmW=]ej1=&rF+='&L+='8^/>Zk-1r`0#!r_ins;,L-\;.k)uH@('h
+J:N6(KnbA>MN!OUOHPckQ'[l,S"6.DTqeE[Vl6VrXfen5Za@0L\@K5a^;%J#_o9X9aND]McHjkb
+e'uq!f@\g3gtgiEi8N\UjQ5Oekiq?slg4!+mdKW6nac8BoCW%T!quB_rV6Egs8)ZjrVZWmo_sFA
+JcFR+J,~>
+JcC<$JcGQGo`"jgrVZTjs8)ckrqJeRp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bXaiMK@_ns1&]Xt_a[^EGQB6&BSQ1(1*RJ**ES,/WqNK/jQO,f9/V5^;fTV%pNTqJ!J
+R[]\2Q]du8T:Z%VrhBJ+rkAVagN\C?RJrW\S!ob3QC!r(Qg9t6Plm87PEl*4rg3SN!13\PrKmJK
+!LK2QQi<?cR@9V8S=Q7DU8=cgXfnq2Y-"_&r2C1,XKAY.Yd(L?[(3lgb0U(9$e3_Ve^i=!bJqH:
+_#;"O^qmn*_o2Pn$H0cq^:_"d[^<BHr36=-XfVK's/c7$!36$t!3#mp"K&#lVPa?js/5stWrAst
+Wr8msWr9!sXSo4"XT,:#X8K!mX8f:#XoGR(Y5kg+Z2Cp*YlM*/Zi.63[C#q@s0`0A\@B)Z\$rmH
+\H'5>\c',;\c95d]=bhk^VRb'_o'F3`l?'?ai_fOcdC4keCN=+gYUoNlL+6;rKI75l)hUlT:_^G
+l,03_OJ9\P_P*o`=BAOcR93X^Uo((o>$G?@>["D:[^!!<Z*3Z$!/LN-MuP!nqu60@b/hfI_8![r
+^;7V$_SjI;b/V33]XkVa[^*-CYcdQ$@<d'DI!pHoJV/T/L5:\EN/`m[P*;/sR$jG5SXuLJUSOcb
+WN*&%YHY==['mHS]"G_j^VRe*`Q$!@bKJ/UcdC1ieCE1'g"P3:h;7)JioB([k2tjjl0@U$m-X60
+n*olHncA@Srq6<b!;HHes7u]kqtpBjrVc?eJcC<$hZ&*~>
+JcC<$JcGQGo`"jgrVZTjs8)ckrqJeRp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bXaiMK@_ns1&]Xt_a[^EGF?=n"qI.r0CJ+eEhJcBEjAS,[kC/TJ.H@#R8s*+Kd%!6K2
+EGoc4GBnCVH$K:5$BL:0Na/GrFFJ[grdO`mrI4Kjs+'lorIFKh!J#b!JGaooJ,t4Qq1J^#$\a@l
+MMmITNfB!UN;JP5N;ee:Nr>"AOd)6)U&LedU&UkeV$E]aR@'A.QC%T:".5LFRf/]VR[O/A$C$a<
+P*(ieNf]?`rf.#?Nr+e?N/NUQN/NVlN;SY:N/iqtN<P9!Mi<UQrJ^Q3!07&>qiLQ7!0[2@!0I2B
+!0[>F!0mDFs-3PIr0.;IP*;+/Pl$^GQMHmFR/WNRR/`TRRP1/#S=Q7CSXuIGTV8*SUSO`aW2Zbr
+XK8P.ZF.0R^W"@BeCWC/hr<b]l0e-9qYe\=s8=#9qY9jZo^hYBmd9?*kN1dcj5JnNg=b-0f$i'q
+e'n9Fr7*FZ\!!/7KSG/3^7'b*H@:sfQ?[mk8Oc0gF%T/RI!gB=:JF_b;,3"*N/<=DLP>5N!/LN-
+N;j==]YhFhV43jAR[05)rfn(]Pa7T&S!oY,OcYT`NJWLGM"$.-G^4U_I=?]tK7el4Ll%%KNK90a
+PEhH$R@B\:StMdPUo(&hWiW>+Yd1UB[^WfY]Y2%o_8=.0`lQ9FbK\>YdF-Lne^rI,g=tH>hVd>O
+j5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>s+14,s*t~>
+JcC<$JcGQGo`"jgrVZTjs8)ckrqJeRp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bXaiMK@_ns1&]Xt_a[^EG184lWP;Z9Vp;Y3i];#X>];XmW^;ZBT&2)@!A1G^mH5XI_"
+5lNtI4;g4C4?GM_3B')b4[2+p4[2.p9MS;V.ToJCr)*Sp;GugX!)i_n!)i\m#uXVt;H$Oo;c6Kl
+;#aAm;Z9Vl;?0Yp;Z9Mo;GmEkr_rYm"BAK'<E8cmpf/#0>@(ZD?!LT<>[:`F?X-c;>$G37r`KY5
+>?Y37>?Y67>$4s0r`B,%#Zk&-='&L+<`f6%r`B,%s&T8&<EK0#s&Jnrs&]D,='&L+r`9)%rE9,'
+r)j,*=]ef)=8Z/#=oDJ&=TMT+qcNo$r`B&#rE9#"pf[W#qcj)(rEK5(rEK8+r*B>/!+5_5"CYbK
+@:9(Cr*fY9r+.EkAS#OiCi+-5G'e^iK8#,<NKBBjSY;p\YI1jM]=u%r`5]m?ai_cMc-FV\rm1bp
+daQ\De1B/$f@SU)e^W!mbfI`;]="i@V4jQQS=5e1P*(c_M2$\9Jq/;sH$FRXGBS-.ErpB%DuO_U
+E<L<'FEVp.GqOMU=^4s+=&Mt8<_Q1V5X\jQ2EWT?,UYc:/i#md77B-n2EEo\3`f<\;c6Cg;Y!]b
+:]Q:LL).)(]u%k8e(<=.h;I;RjlY^gkNM-ol2BoFklC#Il29cFk5sf/kPOBAjnn3:kPscCl29cA
+k6C)1k2k^cjS\';iWeB"i8<GKh>Z1XgY1TF^3+$s?X?l;>$4m-='/O*=]\^-=^#$4='/O*<``7"
+;c?Rj;"@IlG^4U_I=?]tK7el4Ll%%KNK90aPEhH$R@B\:StMdPUo(&hWiW>+Yd1UB[^WfY]Y2%o
+_8=.0`lQ9FbK\>YdF-Lne^rI,g=tH>hVd>Oj5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jme
+q>^<gqu6NlrU^#>s+14,s*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb3qW%7o'u5<n*]T0m-Ep#kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]t:hb[^BOSCib&`m[E@-opYWEr1"jhN/EXTOcWqIW2-8aUS=HSSt;@=
+R?s5&Tqe?TTq\:[UBeQJ^qTi@IujSus-iqV"e(jHR$j??QiE?RQ^3u)rKdJKr0@AMQMQmHPl-jH
+Qi<BIQi33MQhm(,R@B\9S=Z@FTVJB`Xfo"6YHFq+WMuntX/rG*YHY::ZF%!I]"lA4eCN4$f[na.
+g"+Hi`P_\l"2Vdh_Z%IP`!jQ#^q[Rp]"#5V['R(;YlV)4rN-1'XfSQ$Wrf<#W;`^pVYm@lW;ijr
+WW9$tWWB0#r2][q"08N(X8]1%X/rDtX8f:#XoGR(Y6(r5Z2V$/Zhgs0Za@*GrNuC0s0r3B\@B#W
+q76O:s1A6?!P5oB]HY&'^VI\'_ns:.`Q$!?aihlPd*^:ke^iC+gYUlKkNqa4qiUn1YcX^jWh5oR
+n"ZG>Up&S4Q(O.YI#)!i=^IqtTVYn!>[UrF>-YB<Z`^F7Y-7?!r.^11%J0W"p"dm6b/qT;^V.D\
+_%FZ,b0.f@^V%.g]XG/NZa$a;o<;kOG^=^aI=HcuK7nu7M2@.LNfT<cPa.Q%R@B_<T:r!TV5L8l
+X0&M-Yd1UC[^`l[]Y2(q_Sa=2a2lEHbg+M\dF-Opf%8R.g>(N@hr*JQj5f=akNM0plKdg'mI'H3
+nF?)?oCMVRo`Fj]p\jmeq>^<hqu-HkrUg)?s+14,s*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb3qW%7o'u5<n*]T0m-Ep#kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]t:hb[^B1?@;'M$pOL_BpON0m+DPP$C2.O":ORY;I!L$_G^"=SEcZ;@
+Df'`EG^+FXH$]I8#`t+.NRE5mH[bsDr-nTmrdOQj!.afns+']j"+YrRJG=WlJ,t4Qre(6(rIYK2
+KnY8;M2R@SOH,>!N;\\6N;nq9NtRP<QCFMBV50i\U8+Q^URmsDRJrQVR?s8-RJ`NRR15OMQ^3o#
+PEM)kOH5KarJpo=!07&<!fi8"r/:H2s,I&=!K<$:NW>(<MZJcpr/CW7qMkQ:rK-H0!0[>Ds-!AF
+qNLuFqipoAs-<YOrK[/Es-WYNr0mYT".YsSSc53-T:r!RUSO``Vl-MoWiN5&YHbC@\\>r&c-b+q
+hW*ken+#uBq"t$;ru_7=r;?Eeq"OIQoCDG@n*K?&k2kX_i838Cg"+a)e^XTI!n>cOqU[IPe'l4"
+P)P$OK7nljKnFf&LS__0H#["mAP6r6:47J9I8<U5<)ZXiMi3CJL4t>9L%'cnL5l3AhS7^W[AB@\
+S!fV/Qi36MPm<YCR@BP,P*#['#)\7lLk^Y<o7gn%G^=^aI=HcuK7nu7M2@.LNfT<cPa.Q%R@B_<
+T:r!TV5L8lX0&M-Yd1UC[^`l[]Y2(q_Sa=2a2lEHbg+M\dF-Opf%8R.g>(N@hr*JQj5f=akNM0p
+lKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>^<hqu-HkrUg)?s+14,s*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb3qW%7o'u5<n*]T0m-Ep#kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bXaiMK@_ns4(]t:hb[^ARq8PDiUrDW_ooMPB[s&&Yks&&GenPT3^&2Z*s1G^mH2F'Pl
+5X%Cs5!8g+!'L6@'/r$;5!;(o5!M7q4\e^H9nGf1;>a>j;Zouq;,U<`;?'Gq;,U:j;uKVl;ts8j
+;#O8\;Z9Mn;Z9Vo<;ohr<<$#!<VBDf<<cK,>@1cF>lIq;>[LlG>?G!3>?Y68>$>/->5h\)=T2A*
+=BSd/='#6#!*9)#"^"i,='&N'<ruE(=8Z,!<W6#!=8c5%='5B%!*K5'r`];'"Beo3=]kW(qcEo&
+=BP?$pfRPtoN;#or`];*s'#G*r*0/(r`f;*!+#M/!+5_5s'l":s'Ph8r*f\:AH$-?AH$-`AnPdk
+C2Ip4G^Y'nKo1qVR[p(FV5^Q#Za[KX]t_D$`Q.r!s2k_nbK\;WcHjkbd*^8?dK%bodO3Geai(p'
+['-L+Tq.X>QB[PoO,JmPLPCJ7JU`)qH[0j[G'.nJEcV+u#BFg)F*2YNH2`.FH?jaYC0=eD<Dudp
+<Fnlt8j5U8F[7uG/1`S-4"i?[7n#m+2E!WY3]U8B<)Z[j;,Zs^r_WNI%+!JVgYCZDj5oCbk3)a-
+s69LIrosFIrTX@G!pSq4r9*b8q<%bAq<8"Fl0.@-k6U55k2k^cjQ#>#ire<$io0mp!T2c5h#Z<c
+rn8aQf[o91H=_2,?WgH7=]\X*=BS^.=BAR->Zk63=BJX*<E2ss;Gg9\;.k)tH@($fIt3*&KSG8=
+M2R=QO-,TiQ'Rf*S"-(BTq\?ZVl6VrXf\e2ZEpsI\@K5a]t_A"_o0O7aND]McHaeadaZguf@\g2
+gtgiEi8N\UjQ5Oekiq?slg4!*mdKW6nac8BoCW%T!quB_rV6Egs8)ZjrVZWmo_sFAJcFU,J,~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb3qW%7o'u5<n*]T0m-Ep#ki_*ij5]+Vhqm2Dg=b*/
+e^W$pcd'bXaiMK@_ns4(]tCnc[^B[ZE-Hu"oU>B>rL!DK!1<VNp6t]E+.SCPMM[FUO^Fl[VPg,^
+T:_jQT:DC=R@'>)US=HTUAgnoUnbZ;^qY6^H%u9fr0mq]S"#k8R@'B9QN3?LQ2[*LQiEBOQ1gLD
+Qi3<MQN3EKQhd!^R[]h;SXuIHTq\<\Y->7>ZEUL5rN#t")m-9JZEggD[C*HS^W"FEf%8L)f@\g1
+f$;FX`;RRR_>_:O_u@US_[OAs^:_+j\[f,TZa-n9Ym@S;Y-"h-X/`3!X8f1"WVNIjW;ijqWrK'u
+Wr8t"XK/E!XSo3tXT,F%XT,=&XK/E$X8oC%Y5YX)Z2V'*Zi@E/[/dZ5\,Ei/\H'5?]*5dV\[oDc
+rk8?G,/:q0_Sa7-`5KX8aN;WLcHsteeCE.&gYCWBiT'+fnb2kZP5d/Q]!\34Tq7kQ[@NbNUW)&\
+R^A#XMHl40=BhAmVQ!d(>[UoD=g>6@ZEC@9YcmQ#re:E,M>n^piQT?bb/V95]YD4t_SX42a3;Q@
+^V.1f]XbARZa-g=o<<+UGBnL]I=?ZrJqJc3LP^nINK90`P*D5uR$sM8StMdPUo(&gWiN8)Yd(OA
+[^WcW]=bkm_8=+/`lQ6DbK\>YdF$Fme^rF+g=tE=hVd>Nj5]4_k3(sml0I^&mI'H3nF?&>o(2MG
+p%A%Pp\4[^s7u]kqtpBjrVc?eJcC<$huA3~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb3qW%7o'u5<n*]T0m-Ep#ki_*ij5]+Vhqm2Dg=b*/
+e^W$pcd'bXaiMK@_ns4(]tCnc[^B:EAnl@7q1-e@p4*F"C2.?lCMR``rHnQi"a5*7G]n3.EX6Z'
+DL$JNGBnH3GmBFlO,dGQCj#`,!.b&us*b'"IXZ_DIdDR`JGjutJGFZsJ:W9%rdOour."To!.t0%
+!/1?(s+LB*(5I^'O-,TgOH,<[N/W[QNJrgUO-#HcrK%5IQC4><Unn!a#,A#kU7IdBr0dMN!1EhT
+rg=%ZQ^3o%P`q8nrfR2Aqi:f=NK*pt!0$o8repi:rf$l:!07&<rJh#?N/`dUrepl;N;eh7NWG3$
+rK$u?rfR5Ds,d;EplPT?PQ$aCPQ$gHQ2[$DQ2-a;QN3EPRJE<NS,\u\SXuCDrgsLiU8"EYVP^8h
+W;`gsX;J(CYd(RF^;J%9cdLG"i8s4jo(;YNqYU6Bs8W(,rVZNeq"a^[p\+=Ro^hS>m-*Tnj5JqQ
+gtC?3f[n^)e^rI+g=tE<gY1?6f@AC"daA)eR?WGaL4b*+Ob/(1I?M!cFb4C%AkR)`8ksb]I=G!e
+9i=kd:Pt$fLk^\?L5#,Mre:E,NW0@YcI0D;Vjs-DR[O,?'pY)OQ'[i)S=#M(OcPK_N/<@GLPCNS
+L2M0YH$XgcIXcm"K8#&8M2I7OO-#KePa.T&R[]k>TV8-VVPgAmX0&P/Z*UgG\%&u\]Y;.s_Sa@4
+aN2NIc-FY_dF6Uqf@S^0gYCWAi8ESSj5f@bkNM0plg4!*mdKW6naZ2@oCV\Jp%J+Rp\ssfq>^<g
+qu6NlrU^#>s+14-s*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb4nS@:o'u5<n*]T0m-Ep#ki_*ij5]+Vhqm2Dg=b*/
+e^W$pcd'bXaiMK@_ns4(]tCnc[^AOm8khuV;H$Nn;ZBVo;#!o`;#4&h;Z0Jb;XmU1;Dp<d0JkXF
+2F'Po5<qCr4Zkkg4$5Sa3B9#]5!D+o5<_:r5"trN""IhW;#X>n;c<Hjr)35cr(mJm;H$Km;$0]p
+;c<TnqGI>k;#O8k;?0Ye;Z9Mn;Z9Vo;ufkr;?^'$=BAO'pf.8n!*&qt"]e]*='Al.?PHgN>$>-9
+?<gW7='/U/>?Y05>$5#->5q_,>$4u+<ruK,=oMOt=8u>$=8u>$<<cK*=BAR)<r>tt=8uA&<rQ/-
+=BAU+=BSg1=]ei*=9Mc1>$4u,=8Q+t=TDY%=oDG,=^"s1=BAT$=T2J&=T;P&>4Yts=o_e(>QA(.
+?N+=3?ia\FrF,Y6raQ"?AS(jO!+l+@s(<KhD/aT@H@13qLlIRaS=lRNVlHl'[C<]Y]tV7s_8=+.
+`;RXZa2lEHbfn?1c2l28rltGd,KI[6[]ca/US"$BP`UreNfK*YMi*=FKS+l,IXQQhH$FOUFoHIg
+F*)MHF`r"THiACOH@'s`GBS.PVdNh6<E2pq;g_G89LqB;=?nf-0Ieq15!(AP7n,p92`3KS4$#E(
+<`Dso;,U:joMPQ`re:c6hV[;QjlPXfkihp.!p]%7r9F.Cs60CDrT=.Cr9!e;p?DS?s5sCGr9++B
+!9O1?r8Re:ro!n9hu;I5h;&"a0&#"2g"=p-e`>>MDK'#k>?>!2=]ea-=BSa/='&O/=]nj/='/L(
+<E2sr;Gg:fo20CKGBnL]I=?ZrJqJc3LP^nINK90`P*D5uR$sM8StMdPUo(&gWiN8)Yd(OA[^WcW
+]=bkm_8=+/`lQ6DbK\>YdF$Fme^rF+g=tE=hVd>Nj5]4_k3(sml0I^&mI'H3nF?&>o(2MGp%A%P
+p\4[^s7u]kqtpBjrVc?eJcC<$huA3~>
+JcC<$JcGNFo`"jgrVZWkrqZWjrV/VOp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXPTaN)9;_SEq"]XkY^[:O&nH\n']Re)sIQjT1IQ^=),R@0G1RJiKSR@'B@RJ!$DRi[ZL
+M33m\O^G#bVPU#\TV8*RSt)7<Q^<o1UnXQWU]$u!UV4CV^7(dEPF\87SXc4>r1*eVrgEqWR$a6=
+R/WHPQN!0JQN!6IQN*<NQN*<LQiNQPR/`KQR/WHLR/`QrR[]e:SXuIHTq\<YWj&k<[^*->XfSS(
+XKJb3ZEpmErjE0D]"Z)(cI11jeCFQL#1Ll?`l5j5r5/KOrko>b_SO%&]tD"h\@/fPZa-n8Ym%;4
+XfJJ%rN#ptrM]Xls/>sspo4=pqlBt'Y,n_*XSo1%Xfee-riPpr!3Q7's/uL.YHe)4s0Ma4rj)X5
+[e[E4\Gir9\,a):])B/C]",A_]=[sQrk8?Gs1\WN_8?/g*5ok;aN;TJcHt"geC<($g"Y<=hr*MU
+l0\$6q#$?U0)_rXUS4?ST=rLCS=$+Ui8'QkL0mr=N0@CNV4jTZ>[:TB?s[$BZ*CaAY-5+5n$)hH
+!/6:0+T(<GaiV`G_S<k"^V[b%_oKdAa2Gg-]"5Pa['?mAYcdQ$s*&%"H@1-iJ:W<)KnbD?Mi<XV
+OHPfmQC+)0S=Q7ETqeE\Vl?\tXfnt7Za@0M\[oGe^V@V%`5Td<aihoQcHsteeC<($f\,!5h;-uH
+iSrnYjlY^hl07L!m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s53j,~>
+JcC<$JcGNFo`"jgrVZWkrqZWjrV/VOp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXPTaN)9;_SEq"]XkY^[9?pMDKL='JBNH;J.?C-ASc0tCJTD-H[C'aG5c_+G'%eGE,TT<
+H$FOYH$aj_H?kR4NfA72DL?tbJ,XuqJ,FcjJ,auqIfP#tJ,b&rJ,XurIfP#sJc(&uJ,4ZqK)C9$
+Jc^RXK`-T:Ll%(PPEV/kNfB$WMi3RSNfX1$!0R8D$Bp^?R@^%ETV/!Prh9IeS=BACs-WhSrgNhS
+s-NqUQ'IStrf[;Dr/go=!fi8"rJh)AN/NUQN/ddp!0-W2q2GB7rf$r=NVeb:OSk7=P5::@P5(7=
+PkUI=QN*<OR/3-PR$X/,R/WNPRfAlVRfAlWS,f,XT)YDhTq\9VV5C,gWN#lss/R3CYHG(6[^s2i
+`lQBNe_&[9jQZ%#o(DeSr;6Ejrr1gTrr*i7r;6?eqtp6dq>'dXoC;;:lfmQmj5JkOgtVb\s4[V1
+h;8.g45SfKg=b*.e'c[ldD<nfP)"^GKnGDXKRnQ#LT\74HYQ>EBPqc]:47M:I8<X6<DudkMi*=J
+Lk^S<L$s]pL&cpersShRd_WPqSXGq9R[=#>s-41_QC!u+SXPh-OcGH`N/<=FM"$0!G@c&GI!pHo
+JV&N.L5:\EN/`m[P*;/sR$jG6SXuLJUSOcbWN*&%YHY==['mHS]"G_k^VRe*`Q-'AbKS5Vd*^:k
+eCN7(g"P3:h;@/LioB+]k2tmll0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]kr;6KkrVc?eJcC<$
+huA3~>
+JcC<$JcGNFo`"jgrVZWkrqZWjrV/SNp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXPTaN)9;_SEq"]XkY^[7*Y[:/1[bs%rhq;,R3erDE8bo250Ynkg)X0JYIA2)[?X5sIV!
+5!D1m4?>Pdr](*?4Zu"nrBCWQ5<_h::/*l@:Jq*hpf%#er_`Ymr_`Sipegufr_rbnr)!Jm<;]\p
+;?0Yi;?0Sn;Z9Vp;ufkr;?g'"=BJX)<;ohq<;ol$<)lmt<`]3$!Ere.?O0n>>$>'3>?Y/.=8uD!
+=oV\)=Tho2=]ec'=92Q,pK.Aqr`9>)<)lt#=BAT'<rH"u<rQ2&=&rAu=T;M6>$4s1=BAR+=B\m2
+=]ec&=9)M#>5_S+>$4s0r`K5)q,mMsr`K)%r`f>+q-3l&s',J-rE]>-s'Pe6!b#PIqdBJ6rF6"A
+@q0%\B)Q9kAn5F`Bl%[-FEVt[Jqf,AO-Gs!St`*^Xf\b1ZEggD[^WfY]=ktq_o0L6rl>nubK@rI
+a2Z->aN)9:]="fAV4sQNR$O!9OV*\9O,f0VM2-e;Jq/;uI!^3drcnBcs*4]mH[L5?IK+[FH[9s]
+G'8"OG%Ybr=]\O$;c?+c9MA)D6;V>]3B&K61-@ZP1.Xr*7Q37ar]:EG<E3!s;c6@f;Y3ia;#c7Q
+L$%O\kk=9=lMp)KlM]uGkl0cFk5FKBk4e$=kkXHElKRR4kR$G9ki_-mki_*jroO.?"ln\(j5T(t
+i==f'hqm2EgtUT;g"P-3f`'JNf%&75hQLj9@UEDC>$>'1=BAU-='/O*=^,$6=]ea-<EE4$<)QXm
+;"7E_G@c&GI!pHoJV&N.L5:\EN/`m[P*;/sR$jG6SXuLJUSOcbWN*&%YHY==['mHS]"G_k^VRe*
+`Q-'AbKS5Vd*^:keCN7(g"P3:h;@/LioB+]k2tmll0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]k
+r;6KkrVc?eJcC<$huA3~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqJ\Op@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_@V0FuIZODpqjRDM!LT;SR/WKUR$j>/qNq/J!1EeQs-N_PrgEJK
+qjS+WNJraXOcWtHV5L/aT;%qVTFIH]R[TS/PbOtKU84QZrhKh6]t_<doQQ(_r13nZrga"Zrg`tW
+#+CsJR$a;0rg<\O!LB#LQ3*>;QN!6LQMm0MQN!6LR/`TPR/`QXR$X2.R$dl@rgFLiS=Q4BT:r!R
+USOiiZF76KZ*:A0X9>Z/Yd1V7[2HE^\@K8d_oKpEcd:(fdF-IhcH=5K`59C/rk]Mi_Sa=0_nj1)
+^V@Lr]",;W['R*EZa$d>riQ7'r2]dr!3,mprhfgsW2]Zo!3?+!ri?.&XSf1$XK29#s/l=&rN5ms%
+]uq<YctC;ZEppE['[9Lr3cU7q7-F5s0`$=\@B*A])TD?]`,VD^AbnI_#M7O_u@Rq`Q$!@aihrTd
+F-Lof%/L-g=tH?hr*PVkj@j1q"t#Ss8TDVVOt,eV5W[TT:;pda4QfI_O,=s>EYCX>FqXgWENJ0?
+sd,@Z*CdDYcY.4YOA^qKo,gQrp%hQaNMWA^VRV!_SX.*`lQ<D`P]F$]">J[ZEgjBYcdT%DKU/JH
+?sseIt3*&KSG8<M2R=QO-,TiQ'Rf*S"-(BTq\?ZVl6VrXfen4ZEpsI\@K5a^;%J#_o9U8aND]Mc
+Hjkbe'uq!f@em4gtgiEi8N\UjQ5Oekiq?sm-O--n*fc8nac8Bo^qhLp@e7TrqQNhrqcQirqu`no
+DX=@JcF[.J,~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqJ\Op@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_=']<ME-_>2a+*u:#A\$eA8Q*s;>tqQH[9m]G'J1SFE;MDEGo^k
+GlW0iGmTRnNfHZHCNb;]r.+iuqL8KoqLANos*surrdXot!.Xuuqg\Qpr-n]sr.4Wns+13#!.t-$
+!J5t'K`-T;L5:\FOd),oO,f3XMMmISO-#J&OU@88Pa%H"R[fq?T)P>bSt2ICS,SlUR/i]SR08nF
+R[KTCQj&hBQBd]!rf[;DrK-r<r/Uc9",r4uN;ee:N:r;2O8Y%ANfB'YNfO*u"-/A%OSt4?OSt=A
+O9(K,qN:f@s-!VNQ'IStPQ$gFQ2d0LQ1^ICQiEETQ^3r(qj@>MrgNhU!1`tVs-s+\T)PA^SdD$_
+U8"EYV5C/hri%3DX/i>(Y-"h1ZF%-R^;@k1bKeMbg"tcOlg=34naZ2Ap%S:[ro=%Ur>#8-qYC!`
+q=sXSnF#W-l0%0hio&_NrS@M1s53k7%cQF,iSi_Ph:pW7f%&:!rmDq:`g)gJL5^hAM7JCoItEN@
+WI&]UE*$UCE-"WGI!pHnr_<l#;Gg8JM2R1EL4k;8mtC^pN;j:GhUB';T:;4<R[BE?QN3<MQ3N_E
+R[]S,P5^LIN/3=FM2$b=o7h.*GBeF[I!pKpJV/W1LPUeFN/is]P*D5tR$jG6StD^NUnsufWiN8)
+YctF>[C3TU]=bkm^r"".`Q-'BbKS8Xd*^=le^i@*g=tE=hV[8MioB+]k3(sml0@X%mI'H3nF5u=
+o(2MGp%A%Pp\4[^s7uZjr;6KkrVc?eJcC<$i;\<~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqJ\Op@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_77]sB:/L^_peUrfohb0UohtK\#;n:m0/POD2uZ,C57p%B4Zkhf
+4?GVb3B/r\5<_:rr&t*Sr_<PCDbX+,;YO,d;?B]n;Ys>k;#!oc;Z0Pn;Z0Gp;H$Ooq,7Jq;c?Rl
+;cETlrDN_r;uBN";c["&<`E!r;H!Kns&B_3<E)su='&L+>@(ZC>Zt95>$+l*=T;J$=Su;%=Su;'
+>$5#+=T;G&=T2A%=Su8#=92K(r`98(<E<.%=8c2!<<?9(=8Z/%='8](=T)D$=9DW,='>6!!*T/%
+s&o8'"C#,7=]kT)!E`M(>5DD#>5hb)>Qn>8>$G6:rEK5*s'5V0ra#G.!FK76?NjhH@UWYPraGh9
+raYt=ral"<s'mHfAS5^nDK9lEH@1-jJqf5FPaIr2SXc4>St`'[XK]%>\\,Yl_8F40r5A`U_SZ8f
+&AZ#k['$@(TUhR?Q^3l!OH9C&&!)[,LP:A3JU`,tI=-EgHi87%H[L3hI=?ZpIt)orI!^-aGl;h@
+G'A.G>?b61<)QXn@80Ef5XIk:5W2(e.l8b>3\E0X7Rfg*2E!TX3]g>A<)QUj;,Hm^qb[<HqWS"F
+r9=7H!pT"8rTORNl07EqkND")kPs]>kPj];l2BfGkPj]Fk60r/k2k_'jSn0Jio/nUiS`VNhVHuB
+g]#n,g&BY(f.>M'e^W'rd,s;sJ9Gd:?!(03=]eg.=]ed/=]\^/>?P-2=BAO)<`N's<)HH];/UN#
+G^=[`I=HcuK7nu7Ll%%KNfT<cPa.Q%R@B_<T:r!TV5L8lX0&P/Yd1UC[^`l[]Y;.r_Sa@3a2lEH
+bg+P]dF6Uqf%8U/gYCWAhr*JQj5f=akNM0plKmm)mdKW6nF?)?oCV\Jp%J+Rp\ssfq>U6gqu6Nl
+rU^#>s+14.s*t~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb3:uh5o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_AnQ+-KTl;$rL3VOrg<_Pq3^lB"IPOBR$di=rL!SPp6tuM)Np,;
+OcYZf?_sWtVkKl\TqS3QT:DC=QBn;@rM'=erhKe6]t_:OH@M7[TDtM_T)bJ[Sc5/YRfJoQRJiKN
+QN*3MQMm0LQMHmER/WNRQirhGR[BK@R/rbGrgFgrS=H.AStD^NUSFW_Wii\9[Bd'>X/i>)Yd1XD
+rjDg:rj`9G]tq\/air$/ci),kbf[uFrl"iRs24lRs24lR$GjNn^V7Cn]"#2UrNlO/#I(D8Y-+n.
+XT#7*Wi<"tWMleqrM]^prMfq"WiQ-!!irE(rN6+$r2ojtr2omus/c:)rNHI1ZEpsG[/RK8\@K0K
+\Gs,:\,a#:[KF"K\@MOKqRc^=r4W-EqnN0Hs2"fS`;[^g`lH0Bb082ZdaQ^sf%A[0gYCWah@&9$
+jlu4(o_/(Vr;N&_*lP=dUTUJnXjjhRS!g+ihqF6^N*9:aQ'PNYVP0`\r`oJ2$XR">ZEq$EYH>(6
+YOA[rKnP?`+oUo]aiMWE_nj.'^;7\'_oBd=b/V?5]Xk\b\$<3EZ*:G'Y[_cuGBeF\I=6TqJqJ`2
+LP^nINK9-_P*D5uR$sM8StMdPUo(&gWiN8)Yd(OA[^WfY]=bkm_8=.0`lQ9EbK\>YdF-Lne^rI,
+g=tH>hVd>Oj5]7`k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrUg)?s+14.s*t~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb3:uh5o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_>@(rYEdIY6_ghZ9*GoJ$Ci!m':jm\<I!L'aG^"FUFE;JCDf9rJ
+H$OZ5H2i0qOH,?\G\M&Ere(0$!eGlPqgSTrr."EhrdXlsqLABms*t#u!eGlPrdk'!s+(0#r.+j"
+qLed#rIkl;KnkSHOd))mNf8jPMiEg[OcfX+!0dAG"dPFDS!olHSH,2WS,\oYR@9TCRK&ZRRJrQT
+Q^3p9Pl?gGOo1=@NrkE(O8Ft;N<#"9NVAG:O,f9^NfEamrK$l<r/q#@plPT?PQ$gGQ2d'KQ0Xb3
+Qi*6KRJiTSS,&QSSbnubT:hmPUSO``VPsKns/Q+#s/l=&*ilBFZ*_!O]Y;1u`Q69Me_8m=ioK4`
+lL"*2oC_qXjo5D]qtpBh'`%Oup\+=Ro^_M>lKIBljQ#7ZiSa[ks5<n8s5O";$0'q&hqd&?f\"dR
+eM>V%dc$g_O,&^NM2RsgKRnQ#P-)-7GA9`>7r`N?:47M;I83R5<Dugl:5XpeLPU\?L@0]qKnPHc
+$1m93]Wn6$R@KZCQi<9aQ^3u)R@KV.P)bT`NJWFGL51P<o7gasG'A1WH[U<lJ:`E,L51VCN/`mZ
+OckroQ^F52SXuLJUSOcbW2co#Y->1;['mHS]">Vh^VRe*`Q$!@b0/&TcdC1ieCE1'g"P3:h;7)J
+ioB(\k2tjjl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kr;6HjrVcBfJcC<$i;\<~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb3:uh5o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXPTaN)9<_SO"#]XkY_77KpE9MkL]lVR%IohtQ^$oTgq1c7-K2F'Pm5X><5"["q/4?Ye*
+3<DE.4oRYG4oIPK:/+JX5>G#O;Y<u`;XmTb;H*Qmqc!Mm"]J;r;H$Nn<;ohr<<#ks<;ohr<;f_m
+;uT_r;uT\p;[cZ-<`E!p:/4Yb<)lut<<-(u<sVr5?<gZ:=^"u,=8uD%=oVS.>$5!1=]ef*=oV\*
+=TDS"=8l>"=8uD&<rH,"<rQ1t<WH4t=9D].=]tZ)r`K>*<`W<#=Sc+t=T;Ot>5h_/>[(B7=oMV(
+=oMV#=o2Cu>Q.k.>?_#1q-<i'#@:eG?XI2K@JsU4@K0j9AH$0>A4L3A@q/tWA7fOlDfB]:F*)VP
+IY*<1MMd@PO-5cpR@^.PY-PIF]"G_k^qmn(_8*h"]tCtg\[f5YZE1""T:D:8Q'7>kNfO's"cJ4m
+K7SROIK4fpI/eQnHi\YErdXls#_.ASI=6HgH$T@5!."Qg,(*g'=&r6u<)ZCf9MJ)B7o<PW3A2g-
+-p0UF1.Xu,7Q*1`r]:HI4B>H];c?Lj;,[*bqG73HK`:96l2KuJl2TuHl2TuIk5a`9kPXQAl2U&H
+l2U&Kl29cFk6U55kN:pgjlGM%ire<$io9sr"lS:phVHudg],t+fGrMof%&:!da?Ihcd(/%]9Inh
+?X-]8>$4p/=BSf*=;"\=>?P04=B8L(<E)mq;Gp=h;"IOoFEVkQH@('gIt3-'KSG8=MN!OUO-,Ti
+Q'[l,S"6.DTqeE\Vl6VrXfen5Za@0M\[oDc^;%M$`5Ta;ai_fOcHjnde'uq"f\,!5h;-rGi8WeW
+jlY^gkiqBum-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqY^6hr;HTdrdk*#s5<p-~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrV-EfpAX_Do^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_8!^s]",:[C3"]YqO.>OqO.>Mr0RALl'MC:rgEJK"-JV'M#NML@&Bg!Vkg&_
+TqS-NSXc.:R?a*9UBIBfUnsmc^BJ,oH&82eqOdeZs.01]rgj%YrgWnU$CdQTR[BG/Q^3r(rg*/B
+q3_)J!1NhRs-ihSrga"[!hc9^rhBt"W2m,,ZEga;X/iD.['fnB!kGnSrk&TL]Y;5#a3)WNcd2U9
+#g^f>aMu3<`5MYm!lDjmrkeZM#f"*d]"5G[['Tb='XP*NZ*:I9YHFt.X/i5!WiE%tWiGrqr2Tdt
+ri5pts/c7'rN-.(Xf_K%s/l=(riHX2Xf\e1Yd(I=Za@*I[f3`=\@K/]]D9#<\c'#B\$icT\@B*K
+])TD<]`#P?^)t,*^V@S"_84%,`Q#s<a2c<EbKS5WdF6Urf%8R.g=uS^%,Tq&kN_L(nF6&DqYc`[
+s0=2QUo^](`5SIAR]3I9^mg[cK6i>XPF,]]Su&?a>?Y3=?X-a=ZF.$CY->.5n$)hFM>n^kg<@X[
+a25[.^VI\%^VRh.`luNB_7dFi]XY>S['R!>nuuGCG'A4XH[U?nJV&N.L5:\EN/`m[P*;/sR$jG6
+StD^MUSOcbWN*&%YHY==[C3TU]"G_k^r!t,`Q-'AbKS8Wd*^:ke^i@)g=k?<hV[8MioB+]k3(sm
+l0@U$mI'uB#4V0Ro(2MGrq-?dp\4[^s7uZjr;6KkrVc?eJcC<$iW"E~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrV-EfpAX_Eo^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_8!^s]",:R@:sJ#If+`4Ih$:0BOu!rCJoS/H[L3eHiA6uF`_\GEcH#9H?jg^
+GlDspH[:d7NfHo)Cj,].rdt0$rI=ltrI=ltrdY-$IXZcrrI4ZordaormstCg!.auurdt0&s+L<&
+s+L?)&qksnMMmITOcYT\M2@1POckomrf[hXQ^*euPEhK%R$sP9SXfYJ!M#YURfAcUR/NEVR$X2,
+QBhH6rf[;DpQ5B8!07&<s,R,=oT&X+s,d2?q2kT<s-!8A#*=t/OHG]irfm>Grg*DIoTfQFR$dl>
+q3h/Lqj[JQs.0%Ys.BanU8"H[V5C/hW2ZfrX8f7EXfSS)Xfo%<\$rlW]"Ghsa2uNKbg+Vdg>M)W
+m-aH;q>KOW(]O@/q=s[Vo^_M?mdBK1lg!ctj5JnQiVqd8huDO7hr*JmirA'=irA$Eio&\Lh:pW8
+fDX;#ec4)BdEfnePEUo\NJrj^R>-9DIts;OHuj[H>\6WJE_oMYI=?\F:(1'!:f3..MM[.EKnb<K
+KT6!>p?'o=[A'.YS!o_2rK[MMQ^7W<%@iiNPE:faNf/aMLPU`UL0f"GGBnL]I=?]tJqJc3Ll%%K
+NK90aPEhH$R@B_<T:qsRUo(&hWiW>+Yd1UC[^`lZ]Y2(q_SX71a2lBGbg+M\dF-Opf%8R.g>(N@
+hr*JQj5f=akNM0plKdg(mf)YZnF?)?oCV\So`Fj]p\ssfq>U6gqu6NlrU^#>s+14/s*t~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrV-EfpAX_Do^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_8!^s]",:=84cNOpeg?RlV[=Qr)"(b1G^^B2E!K[5X@V"5<_7n4?<C&s#C0@
+3Bo\+5Q3hJ5<V^>:'E.A:/OqgrDNSmr`&eos&&hqqGIAn;H!3c!)iAd!)i_ns&B"s!*&qrr)EVn
+!)iep"]SE"<E3#r;u]hs;\r;*92&/\<**.%<E<.&=]nd*<`iO.>$:i.#$G&0='8[0rE0/)=oDJ$
+=Tho2>$4u,<ruK*<rQ2"=SZ%u=9)G%<rZ5'<`N1%r`8hss&o>'#?b/1='/R-=T)>$=T);(=B8L*
+=Sl8$=oqo3>Q%b&>Q7n+>6%k+=oMV$=oV\*>Q7n">Q7n,>PDA)?!LZAqd95.s'bq:$"ILVAS#C`
+ARo?NAcH6h@Uiq\BPM9tCMds-EH?5EF`_\JH%(F'NffNmS><-dYd1XE\[oAa]=S!O*k/PaZEUO9
+Y-+e$Tq.X>Q'78fMMR%BL4tA9KS+i(rd4Tk!.Fios*XuuJ:N4JJ-UXTIXQWlH@#I6.!g/`GBS(S
+=B\g)<`E!h;,'\U5=.n15rCbZ/Mek=4#&K\7n,p,2E(Lq"]\T&;H$Km;"dc_;#c4Jl2U&Fl2KlH
+kPj]9kPFEAl2BoGl2KuJl2TrKl0.@/kPs]Bjo+6?j8Is;iVqa9hqe:es4SOIf\+p/f%/C#daHOi
+cd'h\bfe/jbaF0'@:*2?>$:i+&Qi1==BSd.=^,$5=]SU+<`W6";Z]io;XmUjF`qtSH@('hJ:W<)
+KnbD?Mi<XVOHPfmQC+)0S=Z@HTqeE\Vl?\tXfnt7ZaI6O\[oGe^VI_'`5Td<aihoRcHsteeCE.%
+f\5'7h;7&IiSrnYjlYail07L!m-X6?mfr:Oo()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*#s5F!.~>
+JcC<$JcGKEo`"jgrVZWks8)ckrV-Tkp@e1Po^i(Q1@al&md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHOJRaMl*7_8!^s]=DKbDKUGmrgNeRs-ibOs-VT.rg<\Qq3i@fNf/^TPEB1HVPg>dTq\6T
+Tq7jGR[TS-USFQZU8.[_#c#/L^qQLjJ"$>/qOdVUrga4_SXc1>S,JiZS!f\3op>]Gqj7;L#+:pJ
+R$jD3rgEbSrg<bTrgWeT".c$UU&LedUEHA0W2m)*Z*170XKf1B\[oAa]Y;2!_S<ds^;.Y,b0801
+d/M>rc-+5Ma2l<?rl"iSrk\ZOrkJ`Q^:_(h\[VRFrj;j8Za6t:Ym.G8Xf\\*X8T'sX8K!tWW0!t
+WrT0uX8]4#YPkU)YHIi+s/c4&!3cC)s0)@)#-tSB['mKRrO;p>]"@jPrO`!=rOMp=rOW'BpV$U@
+s1eQIs1eTLs2"]O"2i'sa8O*Zas"sPbg+S`eCE.%f\,!4gtgfChr3VYlg=-/nac;Fp\XshR/\hK
+ZDF;&Za[EZVP0NcYf5S_OI_20ITMYu=^7\oU824'>@1cE>$A8<\?W6>ZE:>!YQ0?6ruD%5gWRXX
+`l,[-^;%J"_ns=3aNV]D_nNam]XbHLZi@60YPka#Y[_ctGBeCZI!pKpJV/W1LPUeFN/is]P*D5u
+R$jG6StD^NUnsufWiN8)Yd(OA[C3TU]=bkm_8=+/`lQ6DbK\>YdF$Fme^rF+g=tE=hVd>Nj5]4_
+k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu-HkrUg)?s+14/s*t~>
+JcC<$JcGKEo`"jgrVZWks8)ckrV-Tkp@e1Po^i(Q1@al&md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHOJRaMl*7_8!^s]=D'MA8-%1r.+Bgs*i=E.rB!5ASZ-u;1!Y;I!U*aG^4OUG'%bGE,KrH
+H?sg^H$O^^H'")JNI#>YJ,+`rK)L8mJGt&uIe8-bJH(3#J,k0"JGk$&J:W9'Jq<oQs+C<(re(0&
+re1o<KnkJ@MN!RUN/37GNKB<frfn.]Q^O>2QB[StQ^=).S=Z@ESt);LSGerWRfAihR[BJ1R$a5,
+R$X,(Q'@MsP*5a*rfI,As,d2?!0-f7r/Uu@NK&sYrJpr?rf@&?s,m8A!KiKBOT:LAOoU^CP5UIH
+OckomQ'IU2QM?gGQM6aCR/`TLRerTOSH#/ZT)>2\T`1YkUSO``Vl6SoWr8tDXKAS*Xfnt7['mHQ
+\@K5a^;7b,`Q60DcI(4ti8s7loCr+[rpp*hrr;p1rr<#tqt^!YoC;86kiUsdiSi_Prnmn9h;-rd
+hu2C6hr*MSro3t:s53k4s4[\0f[n^)rR;#"eC2jmd/M?2o9YZ"Lld[XOcbHQJ:rcC]>o#<B1QH$
+DfSHFIK"U*;GU%f;c?IfN/ERMLk^Y<L$jVRs!@O0e%E)aS!fe7Q^<u&QC!o(QC!u,R[KG(OcPK`
+N/<@GLkg_=o7pgtFa&(UH@1-jJ:W?+L51SAMi<[WOckroQ^F21S=Z@HU84W`W2co#Y->1;['d?P
+\\#Mg^VRe)`Q$!?b0/&TcdC.heCE1&g"P39h;7)JiT&tZk2tjjl0@U$m-X60n*olHncA@Srq6<b
+!;HHes7u]kr;6HjrVcBfJcC<$iW"E~>
+JcC<$JcGKEo`"jgrVZWks8)ckrV-Tkp@e1Po^i(Q1%Fc%md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHOJRaMl*7_8!^s]=C@$8PMqY;#4&T;!:dM;Z9N42DHsB2)[?O5X@V"5X.Lt4Ztee4ZbVa
+3'KPjr]gEHr]U6U"AM-V:Jh!gs&/eorD`_os&/eo"&`&r<;oet;Gg?f;#jMe;u]hs;ZKer;u]f!
+;c6Onr)<So!)rkrr_j&$<E3!u<E)rq;[HE%;c$+Z928GerE'D.=B\p4=&i7$=BYW,$!UY>>?P'2
+=]ef*=TM`1oiV8sr`B)"!`rE'r)iess&]M-<E3+$<E3*!<rcA%=U\D6='/R-=]\[,=BAT'=T;P(
+=Su7t=T;M(>5_V(=o_e*>5hb+>l%\)>QA",>5DD%>5MP(>QA"->5;D&>lS"2>[:T=>Pq_-?!^k8
+?i+43@:K1Fs()IHAS#C`AS,Larac+BB`;cHD#S8PDK,Pos)K0'GC+gmMN=$lT;/9^WiW>,ZEppD
+Yck10X/W"oUS@a_)5<^lR$<bpN/*%:J:2flH[9s`I!g6cH$ar:I04kFIt7NLs+(-!s*jurs*P#t
+H?jaZGBj(3s*+QgG5cV.O'>di<E<+!=%>tY90bj6?&([)0.8\+5!(DQ7n?-=3&W\o3sdr2<`W0u
+;c$@gp/1W^!/114s6'UKki_-mqr[tCqrde=s69IHros@Gs60RJl2KoCk6'l0k2u[)s5X1?rSdh9
+rnmh7hYu=2h#?"dg"=p-f%&:!daHOhcd'eZbKJ&MaiNMmRuM>n?X$T8=]ed,='&O,=]\[->$G-4
+=&i=&<E<'trDN/_@ruj;G^4U_I=HcuK7nu7Ll%%KNfT<cPa.T&R@B_<T:r!TV5L8lX0&P/Z*UgF
+[^`l[]Y;.s_Sa@4aN2NIc-FY_dF6Uqf@S^0gYCWAi8ESSj5f@bkNM0qlg4!*mdKW6nc&([oCW%T
+s7QHerV6Egs8)ZjrVZWmo_sFAJcF^/J,~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJVMp@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOJRaMu3:_8!^s]=DQeF*WM*rgNeR!1NVL!1;K,s-WeRr0eRbO,]'ZOHO%LVPg8fUS=BS
+TV.pIS"#h4Q_UAUU].(hV$F]K^qam<HA_Qls.9:arLa+]!2'4]s.'.]rgj(Z$D!]XS=>t9R@0G0
+r0IGOQi39SQ^F,+R/NHPRK/cSRf8`QRfAlWS-PUTSXl:AStQ%V-)793V5L8mXfnn/X0B"B]Y2(p
+^r"%/a2l9=^qdk-b0&&Xe'ukGd/q\>aSj3ea2l<@`59@,_SQ5e$bsEh]Y(kc[C!<I[/RK4Zi@?2
+Ym7M:Y-"e,X/l0#!N`@$WrK%$WiN5%X8T+%X/rD*qQBn%riH:*Xf\c*Y7%M;ZE^[?[C*BK[C6"C
+rOMs?!PH,F]E,^[q7HL7!5&6C"MMOa^:jN[s1SHHqS3'Grk\WOrkecVa8X3\b5]Wlbg"GZdF6Uq
+f@S^TgCrAuhV[>SkNV@#mdKZ9o^qnRqu)o^0?pZ$Up7PE\b*V1SsuXui9$JoX`f8SNK[FN>+VRg
+W*3D.@:!2AZEgjFYHP4:Y3rNOs!%I>i5s'Z`PfU.^;%M$_ns=2ai_]B_nWps^:CYWZEpd>Xo5Nu
+Y\8-%GBeF\I=6TqJqJ`2LP^nINK90`P*D5uR$sM8StMdPUo(&hWiW>+Yd(OA[^WfY]Y2(p_8=.0
+`lQ9Fbg"G[dF-Oof%8R.g>(N?hr*JQj5f=ak32'olKdg'mI'H3nF?)?oCMVRo`Fj]p\sseq>^<h
+qu6NlrU^#>s+140s*t~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJVMp@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOJRaMu3:_8!^s]=D-PB5;R:rIFHgr-m.F'5D;rB5MF#;LNt?H[L0cG^4OXFoHI]E;k1`
+H2`-iHi9!-=.a>PrIY*'r.Fs"rdjorr.+p"It7-?pON*k!.b$!s*t*#r.=p#!JH1+KE-Z'K`6Z;
+L51P?Ll%%KN/EFHMN<sdQC%T<+ISajSXPq3Q^=,0S=ZCJU7n3NSt2C=R[]h:S"6+>R@3r>$^[0F
+Q^*i#P*(lgOSt:AOSt:AOSt7:Nr"e<NfB%tNrP1=O91K)OSP"=OT(CAP5UUEP5LOBOoU^EPlm>=
+Q^7T:!1<JHs-EJIs-NeSrg3_SRf&ZTRKK%JR[a,C!1j([!2'4_s.K^mTqeE[VP^;kri,t!riH.%
+s/n_mZ*UgG\%&rY]"G\i^qmq-ai_lSdF-Y&jQl=.p\=U^r;?Nmrr<#trVZNfq"OOVo_%qQqt]sY
+o'br0jl,"Kf@S[Sg&K\2g"P6;hr!ALh;/%d&`;O)hqm2DgY1?5f$r3uda?J@dKJ%Ida?JAcQgfb
+e&nMOO,B'`P**YMKn4`%Pci#QEeI_*BPqc^:JH4bIX_8k$rg,$;2gEkM2-k>L5#&KNW14!o@(C`
+VOEm?R[9A+QC+&*Q^=)+R[KV2Q'.5hO,]$QLPYqanqUn#G'A1WH[U<lJ:`E,L51VCN/`m[Ockro
+Q^F52SXuLJUSOcbWN*&%YHY:<['mHS]"G_k^VRe*`Q$!@bKS5Vd*^:keCN7(g=k?<h;@/LioB+]
+k2tmll0@U$m-X60n*ol<o(2JFrq-?dp\4[^rqZTjr;6KkrVc?eJcC<$ir=N~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJVMp@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOJRaMu3:_8!^s]=C=$92&&Xqb[8hlVQ\?pJMP[1c$jD2)[BZ5X@V"5<_4mrAt3E3B9,\
+5<es/s#pEVr_<PG:ess`;ZTirr`&hprDNVns&9/#<)cdq;u9Jl;#jMd;u9Pn;[$-!;Gg:hrDW_q
+s&/qt<W5r!;cH`q<W5qu<E/oq(fXF091hiQ<ENC.>$5!3>[:T<=&r@(>$V&4s'H%;>[(E9=B/F)
+r`]>+"^5&1='/Z)=oMP&=8l5%<E<3#=T;G&=T)>$=;Ft=<``:$<``@'='/O+=]ea,=BSd/=8c5$
+=8c8$=T_c-='5E&!a/W.rE92(r*')(!Er_,>lS%(>QJ,7rEB&#!*]>*!*oM-!*oJ+r`]D,>Q%h+
+>6.u7r`fA,s'>V1s'5V3qdBG4!+Pn:!+c"=rFZ%?"(l7^C]&#KD?"JiDfB]:F*2\OH$F^gM34'l
+S=Q7DTV8-Wrhg!tUS4<NR[BE?Poc6XR?s/#Nf8aHJ9lB\EcQ5CFEM_LGBeF]I=?WnI/\QoIM%'[
+J:E#rI!g9eG^+CTF`qnMrcSHhG^+FVG5HCaD.6aPr`/tt)f\nO9M.K=:P_:p6SBuH4?P8N1.au*
+7Q<:`4oRML<E<'t;H$@g;,I$bpe^tS!U/eIkkjQBkksW<kkaQEl20cGklU/7l2KlJkNM.,kPs]E
+jTt#1jQ,@]io8qrhuV`lrn[V0s4\1?g"4j,e^W'sda?FgcHXSWbKBh+!6G/['&hT=R;ZD<>?G$3
+=BJU*='8a1r`K2)%pE+;=BAU+<`N's<)QRj;"@IsFEVkQH@('gIt3-'KSG8=MN!OUOHG]jQ'[l,
+S"6.DTqeE\Vl?\tXfnt6Za@0M\[oGe^V@V%`5Ta;aihoQcHsteeC<($f\5'7h;-uHiSrnYjlY^h
+l07L!m-O--n*fc9o()DDo`"Lbp@n=\q#:*hqY^6ir;HTcrdk*#s5O'/~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJVMp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHOJRaMu3:_S<gt]=DEfFFK(9r0dYSRe<*HR,"&-R/WNRRLtU>M2@CYP[:5dVP^)]US4EU
+rga.ZS!]Q@U].%sV50r`]tV7sP^IqJoq;/RqO[MRs-s@aR[TY3R@'A.rKmVRR/*0GRf/ZPRKAtK
+SGSiYStD\TUApu>UnsocW2Zl$Xf\e4\@o\o_o0L5ai_oUccjJNai_oUe'ut#f@JL&e'Q@^b5TQf
+bfe/L`5DSk&Ac/u_8!^u]tCk_['[0G['fh=!42[1#-kD9Xf\\+r2g:,X/`2#X/`5%Xo>I-Xfee.
+Y-5&,YlCp+Y5PU(Y6V;:ZEppG[^Q+Crj_s<rON!@pUpF;r4N'A!5/<E"2DXe^\YYJ^VIV!^qfrc
+rPAcV`5Ta:aiXM(--ONWcHjkbdaQatf@S^0g=tE>hr3VWkNV=!mI'K6o(2MJq>:/Ys"C^_WN!\M
+^[JV,St)pde\duTXdi[M>a(OX>FhI^USqF%?sm8E>-bECZ*:C9YHRAuMZ3qYkKM&f`Po^n^]2.X
+`PTL2a2cBE`PT=f\d#[NZF$m@Y5PX!Y[_ctG'A4XH[U?nJ:`E-L5:\DN/`m[P*;/sR$jG6StD^N
+UnsrdWN*&%YHY==[C3TU]=bhl^r"".`Q-'BbKS8Xd*^=le^i@*g=tE=hV[8Mj5]4^k3(sml0I^&
+mI'H3nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>s+141s*t~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJVMp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHOJRaMu3:_S<gt]=D*SBl8-Gr.+BgpjUkF%;TWgASl7$;13k>H[:#;GmAS9FEMVEE,bf&
+#^L`BH$Xd`HB8&c"*A6rJG"QlJcLB"JGt-"K)U?$JGt&tJGXiqJ,t4OnU^[irdb9*JV&N,KS9>Y
+re1<(s+C`5L5(J>Ll%"HN/R[l%Z?F5Q^O81R[]e;TV8'NrgOOjStMgPUSO]\U8"<PS=5t>SXobO
+!h5UGr0Rk[R$X2+Q'IMpOcY\(OT:L@OT:LAO8k4?O8P%:O84h9O8G%=Oo:IAOo1C:P5pjFP6@,8
+QBmm7QMHmIR/WHOQMHmIQj/tGR$jA2Rf8cVRf8fVRfAlZSXc5LSc55\T)kUZr1X.b#,@ujVPg>j
+ri6"!s/c7&#-P/5Yd1XErjP8)\[oDb]t_A!`5g!DcHjheh;mhgn+$#Ap%J+Rq"XUXp@RtHn*]Q-
+lg*s-o()8:lfmKggtC9/eC;stf%8R-g=tK`hZ_lohVR)ErnRP.$JO.`f$r-qcd'h^r6>Djd*^8?
+coKM%daQ^sf\=U)PECc\Q'IQHNeW4<K8?"[I!L9`9P$n:F%K,SI!^9k:/4ef;G^,HMi<LJLP:J:
+mY$T"'("Pn\Z2-fR$sA.QC!u*QC!u*rg41bR?NksNfT-VLkghALP55R@ruj:GBnL]I=?]sJqJc3
+Ll%"JNK90aPEhH$R@B_<T:r!TV5C/iWiW>+Yd1UC[^`l[]Y2(q_Sa@3a2lEHbg+P]dF6Uqf%8U/
+gYCWAhr*JRj5f=akNM0plg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFd1J,~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrqJPKp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHOJRaMu3:_S<gt]=C@%9MP=ZrDEGgr_`>bj&,VM#rOIo0fCsK2aKb/5lX%T5!;%h4$>S`
+4$!+$!^/_3r_<Sj5#+jMq,@#e!)rens&8kqs&K(ur)<Mkr)3\s;cH`q;uBVn;u]bo;$'Wo;uBVn
+<W5tr<W5tt<<-"r;]/D*92&2_=BSj4>$G6:?=$oA=&rI.?!^lFra6=F?!U]==&rF+>$>-7>Zt94
+=SZ,"=9)G"<<6-&rE'#$q,[St<W6#&<E<1&=]t]*s&oA*!*T2$!*B)#s&fD*=',?&"^,#3>$>/0
+>5VV'>QA"&>l%Y&=oV\'>Pq\)>Q.k/>$G51>l7h(>lS+.?N4:2?Me.1@/sd7A,^$<AH6?AAcH?E
+B4u$qrG;IM!,hdSs)8$[F*.D(5'D=*M2m[\PE_>uQC"#.R@0G-PELudMi*@IM2[LWOH#*PK7A5m
+FE2A?EH6)@F`r"UH[U?mIXQZnI=-EjrdG-$I!U$]G'.kIrGi-aEccDGF`qs'FY\2eG'I.l=Ar7"
+<+em!91hH:84Ps)4"r-A.m5sG1.Oo+6q0*n4$,Jb4'#B];H$Fh;"mi];#fbWkPXQDkP"*>l20cG
+lhfrKlg!d7l20]AkPsZnjlY^ejQ#=]io8qUi8EMLhVI#CgtUQ:g"=s/f%/C#da?Fgcd'eZbKBh+
+!6G/[%*$9*`7j%SM0rc>>Zq&0#$=o-=BSj2r`BJ1>?Y66<`W:&<rQ&$;c6Fi;"@InFEMbNH$Xgc
+IXls#K8#&9M2I7OO-#NgQ'Rf*S"-(BTq\?ZVPgDnXKA\1ZEpsI\@K5a]t_A"_o9U8aND]McHjkb
+e'uq!f@em4gtgiEi8N_VjQ5Oekiq?tm-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0hr;HTcrdk*#
+s5X-0~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqQNf!;?Eb2>$M2o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOJRaMu3:_SEmu]4>JjFb>kTS,\rHRK&Z;QN3?EQi<BPR2_0FLlmmb?DaWtUo'i\Tq\6S
+T:D@<R$X/8Uo"'drM9b4^VIU.gj=tMTE(V_T`:Y`ScGD^T)Y>`St2IErLF(]S!ob6nsTEEs-rtU
+s-X([S!oe8S=KPKrLP1)TqS3TUSO]^VP^;lX0&P-YdM'X`5g!CbfnA\f@eg+dJhGsdaZk$gYCT=
+rn7P,da?Cfd/D5mbfIiD`;[U]_8=(*^q[Om\$i]QrjDa4rj;a5rj)X1YktU%XTGT(X8]4#XoGR'
+Y6V;8YHG(4Yd",3!jJr6qQU71Z*UgE[C,tBs0r9D]"5Mb]".dN!5&$=!58?F!l)I`rk8<Ds1JNK
+^VI\_^Au"I^])"K_>_=M_Zn&u`Q-'Aao':.bg+M[d*U1heCE.%f\"m2gYLcFioT=bl0I[%mI'H5
+o_%tSqu$G]s"M$hVQ7,Fa1CQ9U7Sm"`ocEIV3>OnMjBZ2?)jQlVl*^'=^bWA=g><>[]cm=Z*1A"
+Y_rG_r9r"OrknfSrkK;c_o9I0`5p$Eai2-2]=GSb['R*EYcdr0p987PFEMePH$XjdIXm!%KSG8<
+M2R=QO-,TiQ'[l,S"-(BTq\?ZVl6VrXfen5Za@0M\[f>b^;%M$`5Ta;ai_fOcHjnde'ut#f\,!5
+h;-uHiSrnYjlY^hl07L!m-O--n*fc9o()DDo`"Lbp@n=\q#:*hqY^6ir;HTcrdk*#s5X-0~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqQNf!;?Eb2>$M2o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOJRaMu3:_SEmu]3/EMBlSOuJc(&mJ+\9XIfOreIi)p6ASl:#:jmb=H@:'bH$OXZF`_YE
+EH#mpH3&;;rd4X*"HH``D0>E%!.t3&!ePuSrdb$"r.=p!!.auus+()urdaQjs+:3#$@m\YJqAQ)
+JqJ`0rIt9)rdtK0KnbA<LkpnFrepc5%ZQU9R@9V8SXl@HVPpDgrLa4cU8@je#cOYuVPU#[T:Z%S
+"JDH]T:GnL!goCErgEeR#*tO<P*(lirfI2BrK.DLOcb`eO,f6]O7\J4N<,'#qN1`>rf[8Cr0%#B
+#*b=8Pa%GsrKIDLPa7X6QNWV>Pa.R4Qi3<IQhZsGRJ<6MRfJuUSH,8\T)bP\Ti.V[UnjiaVPgAl
+Wi<#!X/rG*Y-5(7Z*UdE[^NZS\@T;c^;%G!_oBd>bK\DbgY_#PkNV9umdKW4md9?*lKRNrk2k[c
+jQ5OdkNCpbhqZl8e,@]"e(*%#f@ep7rSA1Cg=k64f@\^*eC;pnd*Bq]cHZ=3s3:Shs3EsWdF$Ck
+eCE1(gu%/Sl0S24PDtTaR$j,LM1pS:M3PftGC=F.7;-[[8PXb_I"$K>:JOhe:f!%/Mi*=FL51J8
+mt?]#%HQ0c]!%ZmR%'G0Q^=*;QOT=MR@K\1PEM#eOGesOreCK,nqUq#FEMePH$XjdIXm!%KSG8<
+M2R=QO-,TiQ'[l,S"-(BTq\?ZVl6VrXfen5Za@0M\[f>b^;%M$`5Ta;ai_fOcHjnde'ut#f\,!5
+h;-uHiSrnYjlY^hl07L!m-O--n*fc9o()DDo`"Lbp@n=\q#:*hqY^6ir;HTcrdk*#s5X-0~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqQNf!;?Eb2"^D1o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOJRaMu3:_SEmu]0o(]:/:U]q,./gqGI&bqbdAkohb]cohkWb"#D\c2?#K@5sR_$5X%@s
+5!1t,3t=513]TDi5X.Is5<_4o9`@ch/5f5>pf$lcs&8kos&8nrs&Jkos&8np!)r_n!E2nq;uTbp
+;uKVo;$'Wo;uBVl<<-"s<W?%u<W?%s;]A\6:JO\a<**7->[1K<?=RMS?<UK8>?kKA?t'"A"^bS>
+=]ef*=p/&8?!LS1=U&&4=BSd/=8c,'=&rC)<`N3"=SZ#%<`N1$<E9$"!*K)#"'So3=oDD%=T2D#
+=T;P$=T;P.=^#$6>[%)1!aJr7rE]2'!*f/#qciu%"^>5;?<gb6>Q%b)>6%q+>ln>>?iF@3?i4=3
+@K'a7A,g'>Ac60<AHld\BkhEuCAhrKD>eA_DJsH4EH6,BFE`+_KSG?_MZ8Y7N<tQ%MM[(AKnG&2
+re))AL51P<Jpr&jFE2>>EH6,CF`qqQH@1/?IfFirHN8BiGlr;7G'*Y&s)IsWs)\3^qK4<4H$asi
+Jqf/H>Zt--=&rC&CeRJp5XIqLMEs6[.jHf54"`9[84H';3&WYn3sn#L<`E's;GU.d;#*u_;#f_V
+kQ'f?kl'cElMg,IlMp2LlMp)Mkiq@1kQL)4l0.@1kPs]Djo=BEj5T+YiVqa:hqm2gg_ef"g=b03
+f@JO'eC2mpdEg+`c-4DTaiVX'a8a-\`Pf[n_C*Ud[!6V)?sQo;>?P'/='8X/>$+j.=^#$5>$"^)
+=B/F%;c6Li;GZj\BleB=GBeCZI!pHoJV/W1LPUeFN/is]P*D5uR$sM7StD^NUnsufWiN8)Yd(OA
+[^WfX]=bkm_8=.0`lQ9EbK\>YdF-Lnf%8R-g=tH>hr*JQj5f=ak32'olKdg'mI'H3nF?)?oCMVR
+o`Fj]p\sseq>^<hqu6NlrU^#>s+141s*t~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb2>$M2o'u5<n*]T0lg!a!kN:mej5T"ThVHu@g"=p,
+eC)ajcHOJRaMu3:_SEq!]4YetH]"3gS,\rFR/iWJQN3EFQi36DQiEElP`L][OHGc5VPU/fV4j]W
+U7e0OS=Q+;QC"DDrhTLh!2fb1"MUOWJ=>htrgs7`T:bkL"eD6VSXc2KRf&QRRf&QSR[O)B"IkjK
+R@4&Cs-s%W#+M-RSt2IDrglfUTV8'RUSFZ_V5C2jX/rG+YHkUM_oKpFdF6UrgYh)Nh:^B/e'ut$
+h;RDSiSrePh:gN4eC;ppdF-@cbK.`D`5BI/_ns7*^:_"dr3c^8['mFA[1BXNZa-j?YHP16Y-"k/
+XK2<$"Kei0YHRl.s02d4Z*CU>Z*OA8!jo;?rj)R1"LPSF\$u@H!4i*?!5&3Bs18<C]DK8@^&PbF
+^&PhF^]2%G^&PhH^Au(H^Au"I^B)-dr5/HOrl#&\a2lBEb5KL4bg"GZcd:(fe'ut#f%8R,g=tH?
+hr3SUkNM0rlg4$,n*oo@p\=R]r;N2c0\<M1Wk?Kt`:gO4TUi+%i9-St`en#S?'C[Z>G%XaVl3j)
+?sd2C>-bE@Z*:F:YcdH!MZ4mrnC57l_o'@*^qde(`50@0a2uNI_o'=*]"Yb`['[0DYH\#2orr+N
+FEVkQH@($fIt3-'KSG8=MN!OUOHPckQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6N\[oGe^VI_'`5Td<
+aihoRcHsteeCE.%f\5'7h;7&IiSrnYjlYail07O#m-X60n*ol;o()DErq6<b!;HHes7u]kqtpBj
+rVc?eJcC<$jSs`~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb2>$M2o'u5<n*]T0lg!a!kN:mej5T"ThVHu@g"=p,
+eC)ajcHOJRaMu3:_SEq!]3JZSD0:7(JbXcmJ+e?XJ,OigIhHU4B4YmpD,>Y-H[L3dHZs[YG5cU`
+EWg<"H?sl8HN&6rOH5E]H"q>LmXtOkqgnWrrdb0'JV&LQJcC6#J,XuuJH1;pJHURUJUi:LJH1<$
+JH:@Tre(9*re16&!ec8]reCQ2M2M:js,%DIO-5ftSY2[NU84]gYH=e$V#I%uUSb#lXf\\*Wi2ej
+UnaZYrLj=dT:VSLRfo1IQ^3p5P5LFDP*(n*OSt4GNfT6]O,f9]O8b1>N<#";O8b7?OoCOCOoLRF
+PEPp/rKR>G!0mDHrg*GJ".#4;QMR!KQi*0JQi3<LR/i]SRJE9QS"-#FSHtj\T:_dMTqJ.YU].(h
+V#[ClVZ`rtWN*#uX95T-YHe)4;7!X;\%&rY\[oDb^;.S&`5]m?b0JJdf\,!7hVdDRjPo.VhVI#E
+hr*GMhqm/CgYCT=g=Oj&cd'eZc-ObceCN7)g=tE<gY:H6e^W'qdEp5=cMc#dbl#^KcHjkce'lgt
+f\,$8iT04hnFQALr6DF/O,T<lR[2-WKnP#/Pcr2VF/!DCAk[/b8kj\[H[^H?:/t1i;,7+K"c8"h
+KSG3LKT6!Cn^PXhZD!YQR?j2,Q^F/,R/WE[R%'J3Q]mVpNf]9YreUT/nV:e!FEVkQH@($fIt3-'
+KSG8=MN!OUOHPckQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6N\[oGe^VI_'`5Td<aihoRcHsteeCE.%
+f\5'7h;7&IiSrnYjlYail07O#m-X60n*ol;o()DErq6<b!;HHes7u]kqtpBjrVc?eJcC<$jSs`~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb2>$M2o'u5<n*]T0lg!a!kN:mej5T"ThVHu@g"=p,
+eC)ajcHOJRaMu3:_SEq!]1,@b:/4[_;!h-Y;#4&f;YO&e;"dcd;@#0:1,:^G2E!l#5S$.E5<V1n
+3]fJc3''&\5X>94rBC3U"AM*U:Jppdqc!Poqc*Pnr_ibp!*&qtpJh/ks&/kqs&9&"<)`cor_rhr
+r_rhps&&bns&8qq!`N&tnPoQgrDW_q&lVY);H-Xt>$P?>?!h)SB4bLVrE9V6?=78SAR](U?<g]=
+rEB,(!*fG+r`T2%s&fe4<E<.%='/R*<E3($=8l>%=8uA&=8c/!<WH8$=8l>$=o;Ct<s2W,=BJ`)
+=T)A*>$5$4>PhY*?2e(0?!dD6!a]/<r`oJ,"'J`.=oMV(>6%q->6%q,>Q7q.?2e+,>Q7k,>Ph\*
+>manG?s[/H?XR5K@/aU6@f0a5AH-6>AcZOXrb;CJ")MgkDZ+DhDfBW5E,fl<Ecu_SH[U?lJ:W?*
+Jq8H%If4ZpJ,XsGIsufoIXQTiGB@hCDf0H2EccMLH$XgbI!pBhH[9s]G'8"MFE;JBrc7sWqf;[W
+r,b&DGBeC[IY!3/NK96gRW2qC=&i:%=B0379hS2F85G(.2bbtS1b1^N/i#se77Ka*2ENr\4$$DC
+<)Z^mr_WDfpJ:nSl1jK>l2U&Hli-2Ili65Ql0@Qul29cEl2BiGk6:#0k2k^cro4%=iVqa9hqn@g
+!SlH/g)AYsf@JL%e'lamd*L%`c-=JUb/qfJaN)<?`W!df_ns7*^q[V?`JA>A?!UZ:=]t`+(g0sF
+>$+j.=^,$2>$+j.=B/F%;c6Ol;,Hd[BQJ9=GBeF\I!pKpJqJ`2LP^nINK90aP*D5uR$sM8StMdP
+Uo(&hWiW>+Yd1UC[^WfY]Y2(q_SX71a2lBGbg+M\dF-Opf%8R.g>(N@hr*JQj5f=akNM0plg4!*
+mdKW6naZ2@oCW%Ts7QHerV6Egs8)Wirqu`noDX=@JcFg2J,~>
+JcC<$JcGHDo`"gfrqu`lrqZWjrV-EfpAX_Ao^hYEnaQ#9md9B-lKRQrk2tabio/hPh;$`<f[n['
+da?Fec-+8N`l5j4^q[QkASlO>NrGRKS,JfFRJrT<Qi!*BQiE*`MNX3e?_sWuUo'i\Tq\3RSt2C@
+R@0D:V#@.iVZ3Ro]`u6c>5rl)TB`*HTCe]USXf\K!LfGSRf8`SRL>URR[]e8R[KS4S!s;F!h>gP
+qO[_[.A<K2Unji`VP^;lX/rG+Z*_$U`6-HWf\G<>jlkpkj5A_Gf\"m4hrEo!l3cY5j5JqPgXk!+
+eGdo"d*0YR`r<mp_o0F.^q[Ro\[],Y\@8rW\$`WP\$`WNZa-k8YlCs1Yck75qlTn$#d:J:Z*CO;
+Z*F85"gPGA[C3OB[/dT4[L]dS\%&rY]"G\h]tV>"_8#u`!5/<C!PH,F^AbhG^AbkL^q[Y"r4_m>
+#/J'j^qmq,rke`Srl+lV"in^*ai_d)b5ffdcQ:H\daHUoeCE.$f@S^0gtglHioB1al0@U%mI0Q8
+o_nLeq"agbrLEmAZE:F7cHj`7aeb`'\?F34U8G&N>ZXsmQ<7FfT;&0]>$G-<?X-d?ZF%'EYH>+6
+YOJcRs!%C5f"f8A_8<t%^qmq-_SX:1aiqoI`PT=#]t1_ZZa6m?YPtg"Y\A-"F`qtSH@('hJ:W<)
+KnbD?Mi<XVOHPfmQC+)0S=Z@HU84W`W2co#Y->1:ZaI6O\\#Mg^VI_(`Q$!?b0/&TcdC.heCE1'
+g"P3:h;7)JioB(\k2tjkl0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]kr;6KkrVc?eJcC<$jSs`~>
+JcC<$JcGHDo`"gfrqu`lrqZWjrV-EfpAX_Ao^hYEnaQ#9md9B-lKRQrk2tabio/hPh;$`<f[n['
+da?Fec-+8N`l5j4^q[Qa>@M8bH2N6fJGXiiIdDR]IeJ71CMIKuD/<'sI=-?hH$ag^G^+=QFEDPC
+Dg?YSrd"Qkrd5!4NfK)idqj2Znq-pqre(0$rIOlurIOfss+(0#r.4j!pjrHss+13#"G)/UJV*lP
+!J5t%K`$K&KE-`*L'*3eM2M7i.#a.HPF%f4Uo1/jWir\4YcOk&US4EXW2m&*Za?s=X/`1uVl$;b
+TqVI[!hc-UrL=4cS=H"7Q^<u%PEYd)s,m>C!0R5Ap5f66$]U1-O,f6]O-#HcOo:FCOoCOBPQ$gH
+PmrtAPE_>uQ'Rc(R$jA2rgNqVR/<6LR/WHMQN*9TR$X/,R$mQ7$(76NS"-">SY)PRScbUXT:c(T
+!29Cds.oRhrh]drWMuorWue@EY-5(8Za7'I[^WcW\[oDc^;%J"_Sa@5a2lBFbl5iqcd:1le^W'r
+d*U1geGdu*eC2jnd*L(abfn6.aUu\=bg4_de^rF*f\+m-e^DgirQY;bs31PhrltDe'[P.RdaQ^s
+f@em4h;@2Ql0Rs5qY^9k+jJf,OH>EjS=Au:LkUG7Lm>&kH@]d(6q;9;8PXYZI!gJD:B+5n:f%(L
+!K)^4L&ls]qh4ZsNW0R[c+U`rU6V+6Q^F,+R$a5-rg+"[R[fk7Pa%;kOH#4uL]W<dL%:"5EccGI
+GBnL]I=?]tJqJc3Ll%%KNK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*L^D[^`l[]Y;.r_Sa@4aN2NI
+c-FY_dF6Uqf@\d1gYL]Bi8EVTj5oFckNV6rlg4!*mdKW6nac8BoCW%T!quB_rV6Egs8)Zjrqu`n
+oDX=@JcFg2J,~>
+JcC<$JcGHDo`"gfrqu`lrqZWjrV-EfpAX_Ao^hYEnaQ#9md9B-lKRQrk2tabio/hPh;$`<f[n['
+da?Fec-+8N`l5j4^q[QN7n?9J;>F&g;>jDh;?'J^;>X8f;>X2`;(FIY1,UsJ2*aGn5=%Is5X%=n
+4$,Sc3''&a5X.Lu5!D+m5>4gI9dbNe;,[6hqc*Mmqc!f!;Gp@h;H$Nc<;fbq<<#qu<;oek;u]bq
+;$g-!;H$Ll;H$OopJq2nr`')#;c?Xqr`&nr&Q2V1=^,3>?t!MWBP:sc?X$_5=Vk@O@qKCeA7/bN
+?!U]>>$5!4>$G9;>?_#/!E`M(=T2J&=8l>"=8l5#=8l>%<rc;"<<6-%r`B/%r)`r%rE/bpqH3]!
+r)s))rEK>.rEKD2?sin=!+,V/s'5t9>$>$1=]np2>$Co0s',P0oir>>>[1Q=>?kE=>[1Q??=.&I
+?XI2K?XI2KrF#\8raYq<!+l(=!+l(?s(;OLBk_@!D/K8i$#OQuE,]`5DJsLnEW:%kF*)JEEclVO
+GBe:QFE;MFG'Eq1+Er!OFEDSFE,TZ3CM[j*E,fuCGBnL\H[9s_GBS(KE,bbqqJuLT!-7sX7<EZr
+G^4X`IY!30NKBBlS=l^WXE/_m<``:%='<.39hS,F6:Y!A2``WA,:G`;/i-'j7n#m,2)[NX3BC2A
+<)lgn:/Oj`;>3ockkXK>li68Ilhp&Il2TuFl2BiGkPaQCjo+6[j5JtTi8<DJh;-l@gY1B7f@SU(
+eC2mpdF$=ecMl&lbfe2Pb/jS&"NJF"`5DSk*PoP*^:h4mi6d*e>@(Z@=BSd/=]\a/>$>$0=BSl,
+=p8#/<`N.#rDN_o;Z0Jc:harlF`qtSH@('hJ:W<)KnbD?Mi<XVOHPfmQC+)0S=Z@HU84W`W2co#
+Y->1:ZaI6O\\#Mg^VI_(`Q$!?b0/&TcdC.heCE1'g"P3:h;7)JioB(\k2tjkl0@U$m-X60n*ol<
+o(2JFrq-?dp\4X]s7u]kr;6KkrVc?eJcC<$jSs`~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrqH]lp@e1Po^i(Q0CeQ#md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Ps5^q[QpBQ/3LPQ%*MS,\rIRJrT<QhZmCQPkmGMi3[[P[UGfVPg5_U7n<UT:VRA
+R@0G0r1sOnVl-AhrOrB'Q[b:eTE(\bT_b8\T)>5\SctaXStDXGrgWtXqjISSR[X5Fs-inU!h,OG
+rgWnW&"]DcSt;RHStD^LU7n?XV#I2YVPpJpXK8P-ZF7?[a3E,ei8j%alKdd#k2bLWgtUZBio]On
+n*o`0kN:pfiS<,<f%&=%eBlF]aN)<>`l5j5_SEq"]DfD@\H0:OrO3'@[C3EIZ*CO;r36:,YPbR&
+YQM/9Z*OA6!4)U/"L>AA[C5q@s0hs:s1&'=#.qO^^VI\(rl+oU$,aNk]=GJc^qmne^Au"E^])%J
+^@f5@_#D.O_SjFm_u7OS`r=!\aN;QHrQ>>fcHjkbrmLhq'%GI^f%8O+g"G-9hr3VWkNM-prp0^S
+n+$DJ%e9/_o_/"Qq"jmaq>1$gV#N-`ZE`!)dEfMaYbRn_WlElVPba^hHA>dmR:'6kVkp@q>[(WD
+>Zt=;ZaI'BY-G:8n$%]L#5?od_o'@.rkK>e_8X=0`l-!Dc,dlA^:V"i\[AcMZEUM2Z1Y>8EH?5E
+GBeCZI!pHoJV/W1LPUeFN/is]P*D5uR$sM8StMdPUo(&hWiN8)Yd(OA[^WfY]Y2(p_8=.0a2lBG
+bg"G[dF-Oof%8R.g>(N@hr*JQj5f=akNM0plKmm)mdKW6naZ2@oCW%Ts7QHerV6Egs8)ZjrVZWm
+o_sFAJcFg2J,~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrqH]lp@e1Po^i(Q0CeQ#md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Ps5^q[Qd?=[hmHMi?dJGt&lIdDRZIenO(ChmWqCi!ueI=6HiH[0o9GR8P8F)uAB
+EH$8MrHeKk$%%&\NfB$BHZ4E'KDpQ'KDpH&Jb+HuK7\]-K7\Z+rIOp!q18Kr"G))SJq<oQs+(0%
+qLf'*KS4u3L5#V]",D_iMZ/MBN/`jZPF8#;W3*8-Z2V$NYH=k)UnaZ]W2m),[C3NMYcb+1XJr(l
+TqS3TUS=EQqjd_WrgEeQ!1*VKqNLf=rK.&?!0I)=!06l9!g&J)rfR)@"-\n2PPg[DPld28Q2['d
+Q^F20R[]k>SXl:@S!o\0Q'I`)R@9M0Qi36KQN3EPRJ!!RS!f\6S"-%?r1<n[r1O(`s.]Og!2TRi
+!2f^m"/r3!Wr8t7XKAY.Z*L^C['d<N\@B,^]Y2%o^V7M!rP8KLrk\WM%Dg!%`Pf^4`5KX7aN;R&
+aSs6[`=Kl'_Sa=3aND]McHjnde'n<E#11]Cd*Bn[rlYGgc-FY^rm;P1e'caqe'ut$g"Y?>i8N_Y
+kj.X*p%eU]s"Wo1P`MZ1SXbhINJ<+:J<[+QG^O^?>\6ZME_oGWIX?Q>:JXqf;,C&HMMm=ILP1D9
+qh4WrNrK=[c,IE)UmCqG'pk;SR$a5,R@'J7S=,Y,OcYT`Mi!;iLB*"uLM:aLFEMePH$XjdIXm!%
+KSG8<M2R=QO-,TiQ'[l,S"6.DTqeE\Vl?\sXfen5Za@0M\[oGe^V@V%`5Td<aihoQcHsteeC<($
+f\5'7h;7&IiSrnYjlYail07L"m-X60n*ol;o()DErq6<b!;HHes7u]kr;6HjrVcBfJcC<$jSs`~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrqH]lp@e1Po^i(Q0(JH"md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Ps5^q[QO7S-BMpe^ufr)3DhqbZf[qbmAipe^fa"#Vnj1B'0E2aBVo5X7Lt5!D+j
+4?GS`3BK;#5lX%O4[2+p:&[li5#"gKq,@/iqc!Dls&/hn!`Drqqc!Por`&nts&9)#<)Z`p<<#ks
+;Ya8j;ZBSo;Z'Go;H*Qopf7>q!*9%upf&)1<`iO2?t3bZAnPag@piVJ=]ed/?!h#OrauIH@:*>I
+?!LP3=T;P(>Q@t,=TDS&=oVV'=UJ84=]nj/='/U-=T2>(='/R+<rH%u<rH+s=9)M'=92Q+r`K"u
+!a&N*r`K/&!a8`0rE92*rETA.s',t=?sm;H?=$l>=BAR.r`fG,rE0&#!a&W0oiq?!s',M.#?tG<
+?!LW??2e11?iOI3?iOO=@UW\S@q9-LAHHITB)Q9@BDZ9CBPD3srbVRNrbhaSs).aO$uTlsChmd"
+BkhL&DJ]5d%;]p"E,TW4DJj<-ChmeaBb"loDJsK7F*2VKG'.qKFT-=lEcH&;EH-#>F*)PJF`qqN
+rcJ-\*d)XNH$XgbIXm$(LPq4XR\$7OX08h;\\,A1?WgE=r`:RK?;F3f90Pd?ImH+Y/M/h14ZkJS
+7n?'<3&``W3B9/^<``7!;c-@g:f.$dp/(_Ps6B1@r9F%@rTO:E%d)s:k2k^cjlGL_io/kSrnde6
+h;&"a'AD-lf[n^)eC;sqda?FfcHa\Zbl5ckb/qcHa2Z*;`;[XT_SQ5e&\brl]=Y_ff%H*p@:3DG
+=BJ`*=9D`/>$:i,%U*(?>?P*2<`W:%<Dujqr_`_mr_`>bBlS39Fa&(UH@1-iJ:W?+L51SAMi<[W
+OckroQ^F52SXuLJUSOcbWN*#$Y->1;['mHS]"G_k^VRe*`Q-'AbKS5Vd*^:keCN7(g=k?<hV[8M
+ioB+]k3(sml0@X%mI'H3nF?&>o(2MQp&F^cp\jmeq>^<hqu-HkrUg)?s+142s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJPKp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Q!6^q[QqBQ8HWR[sDIr1!_To9oTFka2"/rKdVINf&qtP6ISUW2Z\grh9[kU7e*I
+S!]V3qkX[uV5C0)^;.O4l?S0aTC8HOU&(D`T:hkMT*:gWSXc1=pmMAUR[T_7ReiNRS-#:TTDkJ`
+U&L_bT`_$aUSRmc0rCkIWiN5&Xg#.@]>2J5eD'$Jn+#l4lg!ctj5AeNi8Wh\lL"*4o'u/9lg!Zo
+i8*/efaHE[ccs\VaN)BB`lA"r!Q)YO^B)']rjr6C\[_XJ"1GSBZMh$.ZMh',YQD#4Z21a2Z*LX=
+Yd(L@rj;a8rj`!;*OrSg\%&rY]"5Me^;@b)`5]pAbKJ,QaMbp1^V[nf_umoo_86,d!5\ZMrP/BJ
+!5\WLs2"fP^])"O_Sa=1`W!dm`Q#m:`lQ6Aa2lBEb0.uPc-FY]d*U1fdf.`.e^i='f[nd.g>1WD
+iT'%]k32g/"mYF>lK[^7lkJmVnF?&>naQ&:o(;VJp@e7Uq"jmer;lotrr0>*1"NV4`k9^F`UgO7
+U7Sg!hqsro`fXM`=Ho+S>bIabUT%I%=^bZA>-tTD[BHg;Z`^M$Y_rH(pYs$,_na.*^qdh(`PfX6
+`6$9Kb/V?8^:M%h[C!<HYd",3orr1NEcZ>GGBeF\I=6TqJqJc3LP^nINK90aPEhH$R@B\:StMdP
+Uo(&hWiW>+Yd1UC[^`l[]Y2(q_Sa@4a2lEHbg+P^dF6Uqf@S^0gYCWAi8EVTj5oFckNV6rlg4!*
+mdKW6nac8BoCW%T!quB_rV6Egs8)Zjrqu`noDX=@JcFj3J,~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJMJp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Q!6^q[Qd?Y=4tJ,FliJGt&lIeeKnIe/'aIf4a$CMIHsD/F*6rd>r;H$ag^G^+@S
+F)uABE-chWH@(!dH@1+%O,o<+[VL#;K(4KnK`$K&K)($!K(airK)^DuK):,pJcLB$K)UE$K`6]*
+K`6](LB!#1Ll%#gM`?]VO-,ZpStr?gZa[HQZE^X:X/MnkUo()jXg#.?\$rfRZE^[=XJr%lU8"HY
+TV%jJStDUGSXc2KRLGUOQC!r(Q'@Q!P`q:/Onk+;O8k4BO-#HcqiClAP*,^+#*Y45PEM)mr07)D
+(7(;RR$jA2S"-(BTqS3UUS=EPR[KP2rL3hUR/N?RQC!u+qjI8Kr0m\Vrga%\rga%\rLa+`s.B@c
+rhBFf!2TRis/,dn!3#gp&ZVn3X/rG+YHb@=[C*KP\%&sG])K8=])T;E\@8rU[C?.Grjr*@!58<E
+s1eNJ%`-$#`l?*Bbfn>VcHab_r6Y\pcd:"acMl,qd*gFpf\5*8h#?%>gtglFiSrt^l0@X(nauSO
+r:Bq.hQ)j&SX#_8QG\i@Kn>#7VR:hoU2EV:7r`N@:]>_BI=V;ls&0;%:Q:<lMMHt@L4k9YK_:%Z
+rs/P`_SNXVQ^@]=".,CBQN!6bQ^F/1SXc.8PEM#gOH#-RLkg_>nqUt"EcZ>GGBeF\I=6TqJqJc3
+LP^nINK90aPEhH$R@B\:StMdPUo(&hWiW>+Yd1UC[^`l[]Y2(q_Sa@4a2lEHbg+P^dF6Uqf@S^0
+gYCWAi8EVTj5oFckNV6rlg4!*mdKW6nac8BoCW%T!quB_rV6Egs8)Zjrqu`noDX=@JcFj3J,~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJMJp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-+8Na2Q!6^q[QO84cNO;>F&e;>sJj;><uX;>O2i;><ud;&D/G1,UsK2*aGn5<qIt5X%=n
+3]oMb3''/#5Rp(E5!;"m5>4gI9e'gL;>sJk;u9Pj;uK\p;uT\p;uT_r<W5tt;ZKen<W#hm;uTYp
+;uBPi;uK\k<W?)#='#9"qc"b>=&r@'=^59AAS5[kB4G@X?X?r>=BJ^2?!q)OAS,La@U]7C!F/h-
+=9_o4>?P'2>5hY8>$+j.=B\p5=]np2=BAX.r`B2&<rQ1p<rZ5*=BAR+=BSf*=9DW,=]kH#s&f,#
+rEB5*rET>-$!ptH?sd8K?s[(:=9_r5>?k?7=8l5"<WH5#=TDS&=oDP(>Q7t/>l@n,>lS%,>l7n-
+?iOF@?XR;N@UW_T@q0%[Ac?6:AI2s[AS,LcB4tsnrbMOMrbMOM")DXcCA_cSBP1pf@q&nXAnGUc
+B)?6@BF/BdBPD3rBP;-rrbMaTDK'Q7Er9tZFERG%%WZW4F`hkOH$Xg`H?j^ZrcoZ5H[U<lJV/W1
+Ll.4TPaS,<WN<A4\@]Jk`Q--GG%Ol\>lIeS<bP<'9M7W<94'tD9f"4T-p9XF1.Xr+77B-n2EEoZ
+3`]9[;c-Fh;GU3f;>*fdlMBfHm/$#QlKdd$lKRU!qWSRVl0.?oki_-kk2kaejlGL_ro+1Ai8<GK
+h;-lcgF:k0g"=p-f%&:!daHOid*L"_c-=JVbKJ&NaiMNC`Pod5_ns:,_8*k$rkAEFrOWE[gREFp
+?sd&=='GT*s&o8%s&ok:>$+s2=&i=%<`;pp;u9Gb:hjujF*)SLG^=^bI=Hd!K8#&8M2I7OO-#Ng
+Q'Rf*S"#t?TV8-VVPgDnXKA\1ZEpsI\@K5a]t_A"_o9X9aND]McHjnce'uq"f@em4gtgiFi8WeW
+jlY^gl07L!m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s5j92~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJSLp@e1Po^h\Fo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+8Na2Q!6^qXDlDKLGlT:VYRSc"uVRe3$HR-0h/Q55XENJj!`P$k,aVl$8bU7n?VT:MOB
+S,ScXV5L2eVYm>#]Y;.pn"G5qT:_^ITD5&]Tq\6Srh'@eU7n=ZU&:S`U&L_[T*1aVSXc2GRfAlR
+Rf8cYS=Q1@rh01_18:J:US=NZUnsobW2Q\rXfeh1ZF%*P^r=OHgZ.VioCMJ>m-X'!j5K"Wj6,Rh
+m-sW=rq@r9oC;;7kMkCVhV-T2da67^b08)Pai_`Ha2Z*9_ns4(]tD"k]=PP_\$ra@Z2h0/ZN%3/
+ZN%64['R+<ZMUm0ZaI0I[f*`9\,<c8\ehun^VRh*`Q69KdFHk$f[S<pbfe/NaN4A$#faj&`5KR1
+_8-&bs1nZNrkJiV_SO((_84%-`VmgU`W*sU`sBc.ai_fMbg"H4cN)>kd/h\Frmgtu%+j.ag>(QC
+iSrnWj5^+!,NIeBj5f:_k32'qm-X3,m-X6/n*ol=o_%kKp%J1Wqu$Bkrj2VZ[B@K[dEfl5b,(i+
+]<TKC_lBo"?!</MQ'kr^TVSNc>?b6=?X-f=Za7'FYcb:9Xfq9!MZ4dhket?U^V[h'^r+%-`5B[8
+aj/,Q`P]R,]=tkd['[1=YlD!#Y]"N%FEMbNH$XgcIXm!%K8#&9M2R=QO-,ThQ'Rf*S"-(BTq\?Z
+Vl6VrXfen5Za@0M\[oGd^;%M$`5Ta;aihlPcHsteeC<($f\5'7h;7&IiSrnYjlYail07L!m-X60
+n*oi:o()DEo_%nNp@nO\s7u]kqtpBjrVcBfJcC<$jo9i~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJJIp@e1Po^h\Fo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+8Na2Q!6^qWuW@qfq.qgnBiqLA9hqg\Nmq1&BordX]l$>jQmB5MF#;L<k?rd4Zk#'kH;
+FEM\Hrc&$dI=$>?HieYBI/]-/NOaIVHiATtK7a)T!.s]mrIk*$s+CH+KS9,Qr.4p$qh"`spO`Et
+re1<*qh+s'qhG-,)Ms?0Mi<USO-#KfQ^a\HY-kgP]!o#NYH4_$rh]q!X/rJ.[(!RC]*,[RZEC8-
+VZN]jUAghcT)bJ^TDkDmSXZ%8R[KM.QBdc$Pa%AprfR2A!0R,>s,[2ArfI5EOo:ICOoCOCPQ-gB
+PlI$KQMd*LR2MKaSXuOLUSb&mXfSP$VPBlZTUq^FS=H(<rL3bSs-NbOrKdSQR@4&CrL4%^SY)OG
+St2GNTDtS`T*V*`Tq\<WUnjjdV?!OnV?*Tnri#mtri,pt$`gA2YHbF?['[6K[/RK5[/[H8['R-I
+[f3]7[/I<6['d<M[f3`K[^W`V]=Y_h^:q@t_o0U;c-Of:dK%\od/MDoe'uqFef<;og=tHAioB._
+kNM0pkih9qlKmp,nFH5Fq"t$Xrupe%Q&qN!SXc)5SVVrPLPh>6Q@+:"9h8r:EH=oLI!pKor_<r&
+;c-@eMi!@LLPCM;KnK>WonAD*"mXISZE'AlQNWV@R$a6>QkYmSR%0_;R[98'OcPWaMi!:HL51NS
+LMq0QFEMbNH$XgcIXm!%K8#&9M2R=QO-,ThQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oGd^;%M$
+`5Ta;aihlPcHsteeC<($f\5'7h;7&IiSrnYjlYail07L!m-X60n*oi:o()DEo_%nNp@nO\s7u]k
+qtpBjrVcBfJcC<$jo9i~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJGHp@e1Po^h\Fo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+8Na2Q!6^qW9.8P;kS;#X;l;#O5k;#O8a;".?Y;Z9Pg:_>QA1,1XE2`Euf5sRY!5X%@p
+r]C-@%6-C15X7V#5<h7o5<hmA:'bW):JXkd;,U<j;uBVk;uT_t<E)rs;Z]iq;u0Jn;ZKel<W5to
+;ts8i;ZTirrD`Mk#?Fo-<E)pt<W5tt<?bCB=&r@'>$G<@A7oXlBkCa[?<p`;=]eg2?!UcE@:EbY
+B)Z?I@q&kR>?P-6>Q.e*>5q_1>$4s0>$G6:rEBD-=BSa.r`T>*=T);%<`f,u&Q`(9='/R-=]ej1
+=BAU-='&N$<rc@t=oMS,>?Y68r`oG.%:<LN@Us(`B4PFY?<gb6>7"J9=BAR,=BSa-qc3r'=BSd1
+>[:V6>Q.n%?2S"2?XR8MrF-(CA7K.\@q&nWAH$0=A,p6@A-6CTB5%6Xqe-"BAc?3?Ac63EB4b^c
+AS(gN$>!g^B4b^cA7]Cerb;@H$Z'ZuEccGJGBS(NFT-=aFEMePGl2grG^4U]I!pKpJ:`H-K7j/V
+-%^c%KnbD>MN*^]QC=D<V5^Z*\\5es`Q#s>air)Ye:j8m='Sf*<roX+r_+.p6Ubi`2`r`B,r7\H
+3AN?]7R]d(3&E]Xr]C-\s&9/";,C+c;#F2a:]ThZm/H>Nm/H>KlMToGlMp)Okiq<okPaQCjVm4A
+jQ#:[iS`YOhVR)Egt^Z<g"G$0f@JL%e,IbtdEp7drQbGfrlbDdao9?c`l5m8`5BLl_?dun^q[Xu
+^:_/V]ElL*WISen='Ac)=:JD:=BJ^.=B\m5>?G'3r`0;)<`E!s;c?Okr_`;aDfKf>F`qtSH@('h
+J:W?*KnbD?Mi<[WOckonQC+)0S=Z@HU84W`W2co#Y->1;['mHS]"G\i^VRe*`Q$!@bKJ/Ud*^:k
+eCN7(g=k?<hV[8MioB+]k3(sml0@U$mI'H3nF5u=o(2MGp%A%Pp\jmeq>^<gqu6NlrUg)?s+143
+s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqQNf3VN.=o^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qXSsEd38&TqJ%WScG>\S,f&VRe3$GR,4/;OcPEXPEV5:V5C/grhBFd#GRi_
+SXc+:R/Wr_Vu<J!Vl%2C^:fE_G)-'hrgj+^qOmk^rhB@brLs@eU8%@Ts.KCa!204]s.07]S,JcV
+S!s>GqjRMRrga%\qP!k^!2KOhs.p^4Vl6YtXfnt5Z*UgG]"Z&&ce%(<n+-)Ao'l&4roX7B)s?JM
+lKdj-p%\I`rVlclp@7J4jl>@Xgt:-)d/;3+d*L%_bfn8QaMu0:_ns1&]Xtbc\@8iOrNZR4ZEpmE
+r3Q=.s0D[0riua5ZF%$H[C?.F!kGhNrOMp=(VIJu_SX4/a32i[g>CoNjQ#4TgXjs%chu#tbfe2P
+aiMK?_SEt'_8=(g_uIUQ_#qQl`Q%nts2k5[!6G/[rlG,^"j>-7cHjl8dJqW+e'ujreC2pse^rF*
+f\>3<hYZ4-h?i-!j5oCckiqBurp1-^mdBT7oCV_Lp@n=XrViu"0tt!6^X1<J\EBuhTq8[5i9$T,
+[<d1T?'C^[?([jcUo7F#>%(cC>-tWE[BQj<Z`^J$Y_rH+rp7S:_S<t(_8*q+`5BO7a3)]ObJqN<
+^:V.l\@&]MZ*:C:ZLkD5E,fr@Fa&(UH@1-jJ:W?+L51VCMi<[WOckroQ^F52SXuLJUSOcbWN*&%
+YHY==[C3QT]"G_k^r""-`Q-'BbKS8Xd*^=le^rF+g=tE=hVd>Nj5]4_k3(smlKdg'mI'H3nF?MK
+!V>s_o`Fj]p\jmeq>^<hqu6NlrU^#>s+144s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqQNf2YQh:o^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qX,\B5DX:pOW-jpj_scs*sfmrI=`qpO<ZhC1h-qD/N-rH[L6fH?oL7$?^H3
+FE)A@I!^6hrd5'!I!h'<Nf7VYC3B3$oRd:"K7nr4oS!*oqh"g"s+1N/JqJ]-JUrE*qL\a"r.G'(
+qh5!'#)7nfL51SBrepf81Q@ETO-#KfQ^jeMZ+%9T\[SoMXfAA"W2Q_tXf\b1[CNue_o0R6_S3Oe
+YH=n+W2?A`T`1PlTV8'PTV8'PSt2FAS,Jc\Q^3o%PEV/mrfI#>rK@2C!KrZGOp$u3P*(n*P5^XG
+P*>j/r0@;Jrg+OjR@0P6S=ZCKV5g]([C<ZS['Hm9WMQAaTq_O[rh'FeSt)47Pl?pMQC!u,rL3_T
+".YpRTDb>^T:l1Urgj4aTV/"XU]7+kV5C*fVZ3J)VPpGmW2HMjVl6PnWN32*Yd"&1s0)O-Y5YU9
+Yd(L=ZEpmCZa7$FZa@*I[f!Z8\duHf^VI\%_o9[=bg4_ee^scPrmqD-g>(N?hr3Voj9t)4kNV="
+n+#u?o^r+T#PRoeq>0scrTF2/r0rqAQ(4>3OKsh#KS"oDXiu3ANF6%(9Q>,G:4.J:I=P*h9iFte
+:]?:QMuJG3LP>YZonAD*$09OT_QK;lQ^F*<QPu6ZR$X2.R@Bb;S!]M*OcYZcMi*@HLPCJ<M"HI6
+E,fr@Fa&(UH@1-jJ:W?+L51VCMi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3QT]"G_k^r""-
+`Q-'BbKS8Xd*^=le^rF+g=tE=hVd>Nj5]4_k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<h
+qu6NlrU^#>s+144s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqQNf2YQh:o^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qW</9M\AYq,%&fqG@/gohb$Qqbm/c))X0*0fM$K2aKYo5sIOu5!;"g4$5M`
+4$#\,5lX%V4Zkqm9MS>W11*[Nr_i_mqGRAnpf%2l!*/tsr_rSkr`&r!q,RGorDNhu;cH^pr_`_p
+r_ibprD`Jjr)Netr`&_o$<1#*<*!('>@(`LrauRL@UEGH=^#$5=^1l1&7&UM@:a.fC2Ig&BOkOX
+>[784!*]>(r`]>+!*oM0$!ge?>$>'5>[1M4>5_P'=8Gtt=8c8$=TV].=o2>$=TDS&=8uD$=TDY'
+=oDP'>Q7q??!^iF@Us+cCM[m)C2%9i?sW\8s',D+&mA@;;c6Ij<``C,>[(E9=]np5r`on:?!^iC
+?!^fB>[:Y7?34MC@K'^;@q9-L@K9j9@fBm9@fBg8@fU*;B)cHAAGp$<AH-3@B)?6@BEVs[BP;,Y
+CB%rWBkqO%DJjB3E-$/FG^4W7Hi/-oH@10kIt<6+reCB*"bqegMMmGhNrP1TP*D6!R[g"GWN<A5
+]"c2'a2uKIbl5m6cdC7nf\3*s?!(B4='/O(=\VUa9Ku$BNBoQm0.f"24Zb;P84ieM&2uL*3]]8^
+=&i4!;,U4g:f.'ep.tqZlg3s'm/H>KlMg#NlKRQulM]uIkQ'fEk5FEAj9FZ(iS`YOhu;IFh;$f?
+gtUQ8f@SU(eC;sqda6A>ci;;hbmVb=b/qcHa2c3=`Phbn"iA*l^qmkc^](qG]`#MK][FE9BjtOW
+r`B/'r`K2()-C$C=B\p4>?G'4='&F(<`N't;c6Lj:f1*c;#F+#E,fr@Fa&(UH@1-jJ:W?+L51VC
+Mi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3QT]"G_k^r""-`Q-'BbKS8Xd*^=le^rF+g=tE=
+hVd>Nj5]4_k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6NlrU^#>s+144s*t~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb4nS@:o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qXJtF+&q?U7n9RT:_^HSXc5KS,A]TRJiTSRJ*$-QNE8-MZ/hN?_jQtVl-;c
+US=KUT:VRBrgEe`&#Z8#VPg>jVS9gZ^#,B/PQ%3SScGDYTE(\_U&^n^UApqeUA:M]TE1aZr1=%^
+SXfPGs-s=`R[T_7S"#rHScPIVr1X.bs.fOg/Z,GDWN3)$Y->1:ZEpsJ\\#VobL>5,lL496naZ#5
+l/q0kk32*rlg4$.oD&=^rt"ttn*KE,kMtFPf%/C#eC4EH"4biKe,I`,cHOGP`l,^.]tCtf\$`QK
+ZEjD7rj2^6[/RH9['R*G[/.-.[0X4M\@B)[\@B*K])TDj]=ktq_Sa=2aN`/dhrEncmdKW6lK-sZ
+f[\I#e^i:#e^MsncHF;Lrl+rYr5]#]`5KX7rlG8`aiV^)bQ#]`b5TT`bQ5u6rm(\odaQ\Ee-=IS
+e^N!sec+/"f)aOXr7hA.h;/(crS8:IiSrnYjlY^hl0I^'mdTc<o_/%Tqu-Mns"_g*\a[\caM$?7
+V4sTmYgCmnWPk'2Lffk/=^YC+U8Onn>ZkKB>[(F=Z*gmBY-P=9YOSiSs!.$[]Y_J#^qd\#`5KR3
+a2lEKbfn,H_na%"]t(PX[^**@ZEj,-@;g.+F*)SLG^=^bI=Hd!K8#&8M2I7OO-#NgQ'Rf*S"-(B
+Tq\?ZVl6VrXfen5ZEpsI\@K5a^;%M$_o9X:ai_fOcHjnde'ut#f\,!5h;-uHiSrnYjlYail07L!
+m-X6?mgS^Uo()DEo_%nNp@n=\q#C0iqYU0hr;HTdrdk*#s5s?3~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb1\C;0o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qX)_B5_sEK(FQmJG=WWIf=ioJGOa"ChREuD/N5LHiSToHiJ?oG]n4OFT-:`
+I!U0eHi/6rOH5B[Z$^G9o7H[gs+L?)s+LE+s+LB*r.P$$qh"No!eQ&Wr.=m"pk/g)KS5&6LAlr1
+Ll.(Jrf$l:23*`YOHG]iQ^jkPZF79Q[^E?BX/W(sWN3/'Y-5%8\%KW!b0A2TaMY^#['[0CX/Dbe
+TqJ%VU'7<fUS=KVrh0:_$_<fWR?s2(P`q8mOSb1>P5UUDPl?jGPQ$a?PQ-mFPlR-LQQ;H[R@0M5
+S"-+EUSb)s[CNoa^q[Xr[^*$7W2?JjrMU(#V5']TS=#V.Q^[Z=rgsCdSXlCGTqVCV"JDH^U8.^`
+s.]UjV>d@lVZEZmrM]Xls/5stWrB'uXT#@!X>[2`YHY79Z*:L=Za@*I\%'#\]=Y_g]tV;!`5Ta:
+a2lEIcdC7of\>3;hV[8LioK7clL"'1oDS:`oCV_LrqHKhrqZ]nr;PIN1?tX"QaE0LR?F;)LP1;8
+M3jrdH^&JEB1R#`8l&-.I=HZ?:JOkg:f'rHM2I.FKnY;8rIsluNrKFSf?).AT9Yb1QN!9OR2D<X
+R$jD5SXl7;Q'7AmNf]6XM2@%BL5:ZXLLG+@EcZ>GGBeF\I=6TqJqJc3LP^nINK90aPEhH$R@B_<
+T:r!TV5L8lX0&P/Z*L^D[^`l[]Y;.s_Sa@4aN;TJc-FY_daQ^sf@\d1gYL]Ci8N\UjQ5Oekiq?s
+lg4$,rpL9bnac8Bo^qhLp@e7TrqQNhs8)Wirqu`no_sFAJcFm4J,~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb1\C;0o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6^qW9/9hnJ\;>O,g;>O,c;>F&R;>X8f;$&R/1&a'22uZ)Q5X@V!5X%=n4$>Ye
+3BK>%5lX%I4UF>99hnDWAjoHlr_ibn!)iYl!)iSjs&8tur)E\ppf.8nrDrhrrD`bprD`eq!`Drq
+rDE\q<E8us!``9%rD`o"<EB*!!`i<$rD`br!E<(s<#/J7=^#*=A7f@]?XI)D>?P-4=^,*8>lJ"B
+@:X(fCi=<4D/3]k?t*SP>?Y04rEB5*!F/t1@/jR5?2e+/>l\./>6S25=BAO'qc<_ur`K2'"^"o0
+=BAT%=9)M&=9)G#=Sl8"=q=h@>?b?<?=$uH@qKCiD/T;l(i<u!@pi\O?t!MR@:<ML?!LN6;c$:i
+=^1i0#$Y55>$G9<rEK>.ra,P/rE]J2qHs>4@fBg9@KKtI@esO5@f9dCA7K.[@q&qX@Uf:Gs'u.A
+B)H9UBkhEuCMRa'DJjB1Df9T7EcZ;BErL+tFa&(VH[U?kIXciuJqSo9N/j$aPa.JuP`u*0s-!JH
+PQ$_MPE_>uR@Bb>Tq\<ZWNNP8]"Z#!`lQ<HcHjncdaHOke'ut$g>(QCiIYB>>@(H6<`Mjg:.n8F
+6:ag:3'f5K1akLK0f(OT7n6!,2`3ZY3]fE(<Dugn:f:.e;XmWalMg,GlMTlclKRQski_0mkN:pg
+k2k^cj5T%Vi8EMMhVR)ErnJ%=g=b02f%/C$e'landF$>?cQg`[cHXVXbKA#NaiMQD`l?!9`5BI/
+_8=%)^qd_#^V@Lr]tX?Vrk'T/b("5=AR8SC=B\g/='8a0=]\^/>Zt?6>$=s.<*3.$;c?Rn;Gd?i
+q,$ub@;g.+F*)SLG^=^bI=Hd!K8#&8M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfen5ZEpsI\@K5a
+^;%M$_o9X:ai_fOcHjnde'ut#f\,!5h;-uHiSrnYjlYail07L!m-X6?mgS^Uo()DEo_%nNp@n=\
+q#C0iqYU0hr;HTdrdk*#s5s?3~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb2tZ_4o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_.@4sFb5gPUS=KVU&L\aSc,)VS,&KQRIlm/QO]+>NJNa]Q=6\iVPg5aV#I+g
+T,+#fSXZ"FVPg;fW2?GiVnKjZ^4a7FL&.DCTV8(VTE(\VUAq"fUAq"oUS=HUU7n6Qrh9=arLX+^
+Sc5,ZSc"u^S"-"<S=?&HScGD^U&LecUE-/,V5C,fW2co"Xfen6ZEppH\%0)`^rOdQi9'=krpTmT
+#Oh'Ek2balm/HGUnalPSqYq*)q"FFSnE]5qhqd#=f[naSf`0S&edp<^e^;[ca2Pp2^V.:k\?u+=
+s0VX1qm?@1s0Dj8[C*KQqRQU:._E@+]tM7u_o0L5b0JJhgu7AYlL"'0na#E!hqHc<gtgfDiS`YO
+h:pW6qpYeudaHLfcMl,ncHOGRbKTq0!m]-=rm1Sjrm;/&eCE1(g=tH=gY:H8rn%5(qqM/,rnRM/
+s4mY1#2\7qiSieVrT"CKkj%O%md]oBp\F^bV#N0ZYl)>]b/!GbV4sZpYJoA\Pb!Y?<fNB0R9<gg
+US=Zb>?PEC?<g^@ZaR9HYHP=:XmrWQrsJVU]YVD"_8*e%`;[Xda2lBIc-45I`594"^:C_\['Tb9
+!4)4$AT2X0FEMbNH$XgcIXm!%K8#&9M2R=QO-,TiQ'[l,S"6.DTqeE\Vl?\sXfen5Za@0M\[oGe
+^VI\&`5Td<aihoRcHstfeCE.%g"P39h;7)JiT&tZk2tjjl0@U$m-X60n*olHncA@Srq-?dp\4X]
+s7u]kr;6KkrVc?eJcC<$kPp&~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_-1,TBl\TQnU^[ipj_CSrdXfqrdP;lCM@?sD/N7"IX?MBHiJ@/G]n4PFEDPB
+I=-HiH@:-eI!h$;Nf@J/Bls?+!/(*!rdk*$p4N$l!/CH*r.Fp!re(-%q1JWtre(3's+LQ.KnP-Y
+K`Qp^re:W4Ll%"IMi@Xps,R,?!0I2B*L*"cVQ@#.Za@'EZ*LR6Vl-PsY-5(7['mT`a3;g-c5"RC
+^qRRt\$E0:W2?>bUna]\Unsl_rhKIg"eqZ]SXPrEQ3<J:Ocbh*OoLUDPPg[EP5pd?P6@,6Pa.R6
+Q2[*LQiEHQRK&`URhMBdTqeKbYHbLE\\,Vi^Upt]Y,qW&!NW@$XpD,0WMZJcU8+L_V#R7kV#@(g
+U'76_StD[Lrh9CfrhK[lUnji`rh^""W2Q\qX/rJ*XT#:#WW9$pWX,Z*WN*##XK/B!WrT:#Y5ka(
+Y:Hi_Za@-M\\,Sh^VIY$_SjF6aiV]Lc-F_ce_&U0h;@5QkNhR+pA"I\rVa_81AI3!`g3$]Q,9#I
+KnP56PH;lMH#6AHBQ.s38kj\]H[^K@:K17i:f*.1N/NIGL5:S;re:!!NrKIYgs*aMUQq15Q^.Q;
+!1EhQ%@ETRS=Q.9Q'@JoO-#>"M?&J3L&d&$LLkFEEccGIGBnL]I=?]tK7el4Ll%%KNfT<cPa.T&
+R[]k>TV8-VVPgDnX0&P/Z*UgG\%0)_]t_A!_SjF6aN;WLcHaeae'uq!f@em4gtgiFi8N_VjQ>Uf
+kiqBum-O--n*fc9rpg*]o`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s6'E4~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Q!6_*pmf9h\>[q,%)gq,$f_r(uQRqbmDj"#Vkj1&X!S69db%5<_:q5!:tg4ZPSa
+3^H"r5<V1n4[2/)9hnD884ubT;YsDk;YF&h<!#ut;uKYq;uK\n<W6%t<VKJm;u]bp;uKSo;uK\q
+<W6&!<W,tu<W?%s<W5qt<W#ho<<cK,>[CcG@K'U=>[CcE>Zk-3r`oJ/&mepSB527#DfBZ5CLq'j
+BOkOXr`fD+r`]D.?2e4>?X@&G?=.#F?!U]?rEBS2=&`1#=&r@'=8c8$=oDG(='/Pq=T;P(>5h\(
+=p%u4>$Lu2)-pQU?t!SYB4tsnCM[j*C2%6h@UW_UAS#KQB*2XP?sWb8"'f/>?iFI6@/XC7?!LT;
+>5h_2>[:WA?XI2JqHsP:@U`hXAS,QRAH69=@ejO3@K^+I?t!ODA,g'>Ac?<?B)lZFC'\TkDJsH4
+EH6*uF8p@\FVK"CH$XgbIXZg!KSYSJPa7`,SXuMRTd$5(T:VUCS!o_4R[Tb;T:r!TW3!2.[CEla
+_o9[;bK\A[df._qe,\)!eHa[Xg>(QBiSsjs.^#=H=_q,@<`Nm8:/+DJ5=JG(69-tS,VqYJ4"`3X
+7n,p:2)RHV3]fE)r`&nq"Ahun:JgUZs6KXKrojFJros@Es6'FE&a/<=jlPRaj5T%Ui8<GKhVI#e
+h#H+@g=b-0f%&:"e'ujpda?Cfcd2U9s3:Sf#Kt93aN;ND`r<pW`;RRX_SO%'_8*k`^]2%G^&GYE
+^&GYZbftf\BOkUV=]S^.='8^0=B\d.=^:o/#?b,/<``:%;uT`!;c-@g;>F&c:M"KbEccGIGBnL]
+I=?]tK7el4Ll%%KNfT<cPa.T&R[]k>TV8-VVPgDnX0&P/Z*UgG\%0)_]t_A!_SjF6aN;WLcHaea
+e'uq!f@em4gtgiFi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#
+s6'E4~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1\C;0o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6_.m\)HA7i`U]$qeT`UmZTDkD]SGAZQRerNMR/`QSR-0eQOH#-^Od'4LUo1,h
+US=QYTVA'KS=Q.:Qi<iaV5C/frhg"7^V7COR=:=pTDbJ]T`:_]U&^tfU&^tfV#R1mUnso`U]-tg
+TqM=Wqk*t^T)>/VSGo)ZT)YG_Sck[ZTq\:\U]7,@V5L5gVl?YrXKA\1Z*UaC[C<ZW]"GhsbL>2'
+jQPstn*oo?oC2)-k3D@(o)A7^pA4I^&Gu+glfdHhhqm/DgY1E9g=cGW&_GU`cHF;K_na%$]t1__
+[C!:;[.q'/[/IB;[^EQR\@9#[rOMm<s1:S0^;%J"_SjC3a32]Re(<@2iT'+cm-O$%k2P:ThVmPY
+lgF92mdBK.lKIBmjlGL_io/kRhqd,CgY(62f@JO)f`'J(f%&=MedpEdg=tH?i8WhZk2tdcjPp0t
+r8Rb8!9!e6s5O(:!o`/"roF.@roFXPkNM-plg4'.o(DbQr;NGj1<$cJc-"/G\_4*\TV&[6iQn'd
+Y-Dr'?'C^\?)40gV5d^'>%(cD?!F\B[^**?ZEg[:o!!uN,2KlI^V.J!^;@k*`5BU:b08,RaMl*6
+^:h:k\@&`OZ*:C:o<E(LE,fr@Fa&(UH@1-jJ:W?+L51VCN/`m[OckroQ^F52SXuLJUSOcbWN*&%
+YHY==[C3TU]=bkm^r"".`lQ6DbK\>YdF-Lne^rI,g=tH>hr*JQj5f=ak32'olKdg'mI'H3nF?)?
+oCV\So`Fj]p\ssfq>^<gqu6NlrU^#>s+146s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1\C;0o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6_-:;[Cit5[K(FQhJGF]VIf=ioJ/W3;B5VO&;1*_<I!p?fH?ja[G'%eIEH6&H
+I/\HnI!bj?#EOt+NH]\dI/\]tKDL2sJcC>tKDpPrL&Q`+K7s2Urdt-%qLnZsrdt-%s+L6&reCH.
+s+Ul9Ll.+LN/`gWNK4"!rfISOPa\/<VlHl&Z*L_8ZmW2^Vl6]"Z*LaE[^j/kb0A5Xd*BhUb0%fD
+]stGRXfA=tVP^2dVPa<frM9[nSt;LBRJiHUQB[VsOcfU*s-*8C#*Y45PEV5pqNV#F1R=;kQC!o'
+Q^=),R@9S6S"-+DTq\<ZW2m&'Z*_!O]"#5WYcb(/Y-G=B\\#Jb]",A][f*Q2Z3mqCZ*1@5XfJD!
+WW&ptWt;;1WMlbpWN)u!XKA\1ZEpt<[KO"DZa$b6YQ(g<Z*:F7Y-"e-Y-5%3Xfeh1Yl(a.Yck:8
+rim`T['d?P]"G_l_SX4/`5]j=b0/&Td*gFpf\>3<i8Wqcmdp2M^Ag(iT9c"<S"#_+WJlRbK8#Sn
+RsfL6OB?-iEH=cKIXQQjInia5<)QUj:Q:6hLkg\<LkLG8L%L+[s!R['d_jM/Pa7Z%Q'do*R@'>-
+R$sM6SXYt2P`q5iP)bKYM26tBKS]5TCN"03F*)PKG^4U_I=HcuK7nu7M2I7OO-#KePa.T&R[]k>
+TV8-VVPgDnXKA\1ZEpsI\@K5a^;%J#_o9X:aND]NcHjnde'uq"f\,!5h;-uHiSrnYjlY^hl07L!
+m-O--n*fc9o()DEo`"Lbp@n=\q#C0iqYU0hr;HTcrdk*#s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6_*gjf:JFV^pJCidr)!Ais&.QJqbe.d1G^pG2E!ie5X.Lu5X7Lr4?5Jb3W;)A
+5X@[74odbF5Q+:X4%<$B;Yj;l;Z9Pn;Ya8j<;BJk<;KVo<rZ2!;ufqp;ufhq;#jMn;Z]iq;uK\p
+<W,tu<W,tu<;]_r<rQ)&<)lms<E/rt"BSc3?!dD8s'[Eg@pW5=>$PB@?sd;L@qTRoD/X<.CMI['
+DJNio@UNMG>$G39?!^iE?s[.<?5-aQ?<g`@?!LT;>?Y*/=&rC&<``E&=85nt=8H&!=TDS%=nc,"
+>Q.k.?!dM;!aoGHraH+DB52-oB4bZQ@L-LVBl7m/DJO"dB`_pYB)ZHCB`DcNB4b^dA7K'F@/j[8
+?ij\A?i4=:@Us%^B5),[CBJ9aBP79T&nYcgB4YUaAn>L_A7T1Z@:Nk\rau4CrFc(Bs(;UNBkqO&
+DfB]9rGiouF)uGFF`qtRH$amcI=?ZuLPq7ZR\$4JVl-JmWrAstW;`[pVZ!@kVA-&5Z*_$P]tqV*
+aND]NcdC1je^i@JfJM44g=tE?i8WeXk2tdejK5=e=]\X+=B/@&:JFMT5t=[?5W:kr/2Sk@4"i<Z
+8Oc-<3Arep3r_8J=&`*r:f1+f:f?j]r9F=H!pJn5roaUMki_-kk2k_(j;$_7iSi_Qhqm5GhVHuB
+gY:H8f\"d*rR:hrrR)&#d*U+cccs_Ybfg".!m/O(rl4uW!6"lSrke]Os1nZL!5STKs1S]P^:q:o
+]Y+6WrO``S]"6&/MKEQ@EEH:D=BJX,=T2J'=;=nB>?Y67=]\X(='&F%;cH[o;Gg7fq,$raCN"03
+F*)PKG^4U_I=HcuK7nu7M2I7OO-#KePa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%J#_o9X:
+aND]NcHjnde'uq"f\,!5h;-uHiSrnYjlY^hl07L!m-O--n*fc9o()DEo`"Lbp@n=\q#C0iqYU0h
+r;HTcrdk*#s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb2"^D1o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6?ta@uIuL5#Unn!brh9[lTV%jJSt2CApRCrGrg<YP!1<&<%$6U3N0BNn@&9g!
+WMf]h&tttkS=Q1>RAZs[V5C2hVl6N+rk8MnYBG\mq4I\[rLj7bU&L_bU&:Y_UB%+hV>m@hV$*Th
+US=L[U&L\bU&L\kT:VUESt2CBS=TVMs.B=as.9IfTqS3UU]$u>V5C/gW2co!Xfen6ZEppG[^`lZ
+]=l"taNi5dh;[P\mI0Z>p\""=jlc""oD\@`pA"R_rrN)trVmB+q=O4ElKI?hio/eNgtVh^rn7>(%
+F`YIb/V?8_8!^s]=GBL[JmQ3[JdQ6[fa(J[^Q.DrODm=r42j=!5&6C(r*l'_Sa:1`Q--Ec-Ohee
+CWI3i8`t`l0&',*p2\Qo(MqYrVZTiq"F@No'l,9md9B+l07EqjlPRaro4.BjlY[brS]lsiSrnYj
+lYajlg=01naZ)9n*TK.mHj6,lg*j$lg4$)lKda"l0@R"l0.?okiqBumI'H4nF?,Cp\OgdTDp^r]
+$SpJaiD*JZDF7e\?jrT`36>$>$4slR9*^!TVS?]>[1KA?s[,CZa@3KYct:;YcY,#Y_iA_iP*"@_
+#D.f_SsI4_oTsAbKe>Q`PfU,]Y_:k[^ETMYH[T&Ao;O,EcZ>GGBeF\I=?ZrJqJc3Ll%"JNK90aP
+EhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]tV7t_SjF6aN;WLcHaeadaZguf@\g3gtgiEi8N_Vj
+Q>UfkiqBum-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqY^6ir;?Ncrdk*#s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6<a9*JDg-hdqh"NmpON9ni-tZTs+(,c$>=$gDJrF#I=-KkrHeKg$$UK5EcZ5J
+I=$;>HNJSCI/]01NFmlZEe3q9q18Qtqh+g"q1\j're1H-KnY3XK)gN%KDU>tKDpK&KDpQ(L%U0-
+Ll%"IN/WaUNfT8#OT1FZP*;,tS"?@OW2d#*ZF%$K[BHU.WNED2rj3cV]>2D/c-FVXa2c?JccX;F
+^UghXYcXt+W2QVjUSFXaV>d=qUS4<PS=9AC#*tL;P`q;orfd,A"-\t5PQ$jFPl6mNQ'R`&QN!3p
+R$jD4S"-"?T:_dMTq\<XV5L>pYHkOC[C!6DZ*CXE]YDDaa8a4$`P]O,^:h4m]Xk\a[^NTP['R'D
+Za7$I[^W]OZ*=52$F-nC['[9O]"5PgrkAcQ]=YYb\[]2\])B,S[^WcU[^ENMZa@*I[Bm3FZa-pE
+[C3OC\0/Ap]t_D#_o0O6`lH3Cb08/Wd*pOsg>1]Ijlbsto(Msms#&Z1Q_L(?R[K>:Ne`:>L5MYB
+Q[XO#8k2BlF%T5%I=6Hl:JX_b;c-@fNJrgSLkg\?L4k56oS/A*$09[Wgnp@%R$a06R/`WeSXZ"4
+Q'7AmP`:Z[M2I(BL@U+3DJsN8F*)SLG^=^bIXcm"K8#&9M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6Vr
+Xfen5Za@0M\[oGe^;%M$`5Td<aihoRcHsteeCE.%f\5*8h;7&IiT&tZk2tjjl0@U$m-X60n*olH
+ncA@Srq6<b!;HHes7u]kr;6Kkr;H9eJcC<$kl6/~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!66q9d@:/=_apJC]`!)WYlqbl0Gs&(=)1GU^C2`<Q[5XRh&5<_7q4Zbbf4Zkee
+5sR\"5<qCt5X.q9:/*K39i(Xaq,78kr)*Jlqc!Mop/Cujpf7>p!*0"tr`/kq!)rko!`DusrDW\p
+r)N_sqc3Yqs&T,!!EN;!<rZ/S<`N7)>$G9<>[1Q@?XI5NAn>@R='/^7?t!DL?t!SZCMdm'BP(pn
+DK'K0BkLsc?XE_;ra#S1r`fA,ra,V0!a]/<r`]>)r`K2%r`K2%rE'&&qcEi$r)il"!F&b,=nl2"
+>Q.n-?2e.:?!^iC?!^lH@V#IL$Y3aXAS#RnEccDDErL%hDJa3)BP;*oC2.EoAn>Rcqd]qCAnP^c
+@:EaGAH-3VAnPdkCi"!-DfBZ5Ci*s&C27U$Chd_`B`Vs_rb)4B!G?-GBE)ZEC&_p?CMIQuCMRd)
+Df9T7EcH&<E,]f:EccGIGBeF]IY!-*M2dU^R\-@PWN<5)YHP18Z*L^AZa7'I\%95e_T'^?bKS5V
+dF6Uqf%8RRg&Ke,h#?.0g]6+.g'6?ghVdAQjSn6CjQ5I`ro4--?s?o8r`:XM;c$4_90bj9G"FYT
+0.8+p5!1JR1.Xl'6oR%_4$,Ja4',B]<)HRj;Gg4do25PQrojUMl0.?okPjWCjT4H&ro*t;i;MOE
+hVI#Ch;$c=g"=p-e^W.!eGdqsdK%\ncjJ+EcHXVXbfe/NaSs6[`WX9!_o0Ik_>qFK^]V?c^VBc^
+rOr*@rOXVl\[f5eaHh!c@<YmW='8X.=BSd1>?Y*1>[(?8=BS^,<EE1$<`E$s;c6Ffpe^i`Ao;O,
+EcZ>GGBeF\I=?ZrJqJc3Ll%"JNK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]tV7t_SjF6
+aN;WLcHaeadaZguf@\g3gtgiEi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqY^6i
+r;?Ncrdk*#s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+e'ZOfc-+8Na2Q!6B4Z%+K9E.0rh]Xjs.fRf"JMK]T:Z%Qrg`kTrL3DIrKuu=s,mhMP*MA@V5C,f
+V50l^UAgi&T:DC@SscLSVP^8iW2HPj^;%Cqs-.trpn%PZr1X.bqP!n_s.fUi!McI`V>d4nU7n9T
+U7qRZ!29=`s.9XkT:VXHT:VXHTV)1Urh9@ds._NKV50rbVPgAlX0&M-Z*CXB['d?O\@T8a^;.Y*
+aNMlWf\PQMm-jN>p[[Y5kNhU-oCDJDpA+Xcrri>tpA"R`rs\l%p[n"DlfmQnjPSelgCr;qg=b*,
+dE]kS`l,a1_7mUp\[VOG"1P_H[f*]6\Gs,9\,s4P])B2>])TDB]aMQi_8=(,`5Ta<b00b-&^JhT
+f%Aa9jQ>XhlKdj,o_JF\rs8W%qtTs\p@IhQn.>$SmHs?1nF5u=o^VG>n*]ZCnGM_ZnFH8Hq"adc
+q>L*fpB(-`p\ssfp&XgVrq$0\rp]sX#kIT[p@nCZr;N)`1;^iu_p$6<q89&&Tt%APl/eY;a)llh
+?C%$_?([jcVQ*g(>%(cE>d^rH['Hp>ZEg^<o!"#O+6'rH^qde&^r"(0`5BX;bKA)RaMl'6^:hCq
+\[JoSZi73"Z#OZ#EH6/DG'A4XI!pHoJV/W1L5:\EN/is]P*D5uR$sM8StMdPUo(&hWiW>+Yd1UC
+[^`l[]Y2(q_Sa@4a2lEHc-FY_dF6Uqf@\d1gYL]Ci8N\UjQ5Odkiq?slg4!*mdKW6nac8Bo^qhL
+p@e7TrqQNhs8)Wirqu`no_sFAJcFs6J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+e'ZOfc-+8Na2Q!6>$Y]SF*rXnpO`*iqgeWpqgSNok^NP]$>aKkD/X;iH[L3hrHf'$H$FRWF)uAD
+Ed`@`I!^8?I0b4^OH,=YG&;X!K)'usK)UE"K_gE#LAci(KF*9aKS+r1KS4u2p4E?sre(6(re:<*
+!/LH+$AXFpMi3ORNfK0]rfI/B.$BdXQ'Rc*S=cLOWN32,[(!KLXf88"YHbF>ZEq$P_8XL:`PB4'
+`6&#'&'W/7_7[:cZEUF2X/MkiV#I4hV?WikTq@mGS,SiZR@';*Q2[!CPlI$KPQ@&8qNV)IQ2R!M
+Q'Ra7QiEHQRfAi\S=Q7DT:l1W%%s;gVPgAlXK\t8ZaKe@'Y;#ra32cSdF-IjccsVRa2c0:_8#r^
+$bO!^]=bhk^;%J$^](nL]=bei^&>YN]tV1o^qmn+`r<pf`5BI1`5BI0_SO+*_SEn!rOW'@rj`WN
+\[oAa]Y(qm_8F41a2c9Bao0B^bRr+GdF?e$gtq#Lk3;:&oCi%[\,S;[S!^gSS=>\`R>?QML5D22
+_g['6>@;);EH=cII!pBjJ58p7<)QRiN/WXOLkpb=LkLJ9o7i;*"Q\4UeYW51!13\Ps-XRgR@0G3
+S=Z4<Q^*euOHYZ`Mhm:HreC!!EGf`8EccGIGBnL^I=?]tK7nu6Ll%%KNfT<cPa.T&R[]k>TV8-V
+VPgDnXKA\1ZEpsI\@K5a]t_A"_o9X9aND]NcHjnce'uq"f\,!5h;-uHiSrnYjlY^hl07L!m-O--
+n*fc9o()DEo_%nNp@n=\q#C0iqYU0hr;HTdrdk*#s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+e'ZOfc-+8Na2Q!66q9jE9i+\ap/(T_peodB$8s[r2)[BO6:*t&rBLfU4Zb_d4?5Mc4$l1s5Q*kI
+4pOeU9MLX<:/V!hr_iSkrDNYmr)3MmrD`Jh"&r9#<;BPk<;ol'<)lmr;Gg:i;uT_r;uK\m<W6%s
+<<uQ(<`W4#<``E"=8u;%='5<%s&q*^?=.,OARJ_D='Ap;?X@#E?t!PWBkLm^?!q/VD/O<4D/3cp
+@q&hQ?=.)F>?Y37r`oG.ra#V2>lIt-=q4\==BJX,=]eg1=]ed/=oMM&=T;P&=T2J*>?Y81=nl2!
+>Q7t.>mObD?=$oA>$G;2?7TJpA7]@cB4u!rE-$2HG'A.RF`hbFDf0K2CMINpAnPagAS,UiC27U$
+D/K8d#&7jdC2.O"qeQ:MDZ4SXF)l8?E;jbUE;a\]DJsE1D/=$(CM`ucrbDFKrGDRN"`8-qEH6*u
+ED(7jE,T]8F*;bRI"$TsKSPGFOd2B,U8P&oYd1UD\%&uZ]">\m_SsR;bK\>Yd*gFnf%8O+g"P39
+h;7#GhVR/Ii8ESRio/hRhr+Ils5O(=s5X1?r8R_9$IkSQ>$k?6=B'!8r_+Y(6q1[46TJs7/2Je>
+3\<$U8OZ*:3&WZU3]fE)=&r6t;,L4g:fHp^"6o%5kPaNCjo4?@ir\6!iVqaIhqm5GhVHuAg=b03
+f@JO'e^XQH!n,KErQuA,cd:"`bfn8Rb/qcHaN)<?`Pod5_u@OO_>1nH^](tI^&5MF]=bbfrjr*>
+!4`$;$+\'DGAUc.>?Fu(=:eY?=]\a2>ZtB9=]\X+=&i?$<!?0!;c-@gq,$o`EGf`8EccGIGBnL^
+I=?]tK7nu6Ll%%KNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a]t_A"_o9X9aND]NcHjnc
+e'uq"f\,!5h;-uHiSrnYjlY^hl07L!m-O--n*fc9o()DEo_%nNp@n=\q#C0iqYU0hr;HTdrdk*#
+s60K5~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6C2%^7Lmt<?rMBgrUna]ZU7n:[T`1P_Sc"uXS+rHJRJN<?QO].:MNa9k?_s^!
+W2H;`UAgo)TpqRBSXQFQVlH\pWMl_m]Y;.r^Q<VpS+rWUT`:__UAU_aUAq"fV"CM`V#R1mU7n<U
+U&L_bU%k;\TDYAZU&C\eUSO^bV*1]RVl6VsXfo"8Za7$H[C3QT]=Y_h^V[n-`l?-Gdb*C9kj7j2
+o'GZ-mI'H5n*]Z6o_A@as8Mc^n+?JUqu7i;qY0[Qmd00!inrVLh;-rEh:gN4dEThUa2Q$9_SEq!
+\G`o:\Gir=\@9!I\c98?\H'/<\c')>\c02?]*#a\^VKic"iJ9t`lH7"bS&4JdaQaugu.2QkN_O*
+o(DeVrq$.&r;6?eqt^!XnaZ5Cp%J1Wr;Zcmrri>uqY0^_o)n[[qYfj^%K?>*rqu]kqYL-frVc_W
+s"i9ApWq(*a7[raUnG</`SojNW5Xp*KjKt2=^IkrUSk(o>ZtTD?!U[B[^`]KYcb@;XKV6#MZ4m^
+]Y21s^;7\&`P]X3`Q?9FccsSM`501$_S*LhZaR3FYcmW&Ao;O,EH?5EGBeF[I!pKpJqJ`2LP^nI
+NK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)^]Y;.s_SjF5aN;WLc-F\`daZguf@\g2gtgiE
+i8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"Lbp@n=[q#C0iqY^6ir;HTcrdk*#s69Q6~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!6>@;)[Fb#-urIb!!nppdkpj`<mqg[jZ#]+0cD/F2gI")'B!I9%jGl`/2rcA-\
+rd+]pI!bg>#`at-NfJ3qF+Eh5qgn`ure(6(!eZ/Zq1\a$rIsoto7Qpns+UH,!JcF/LB*).LBWKk
+MN!OSrJpl=s,m;Ds-3JI,FFslTqnWfY-PIBY-"e-Y-5+7Y->1=]YVS,_nEIc]#)J0c2Q$"bK%Q:
+]XbGUYH=k)W2HMjri#jp%&KbnTUq^ES=>t9R?m`7!1!MIr0@;Jrg!,A"dbOAR$jEBRg#=QStD[K
+rhBFd!McOkVbX1kXfnt8[^s)`^r+7;dF6_%g=k64f@SL"dE]tZaiVWE`501%_84"+`Q--GbK\>W
+c-FSXb0%fE_na%%^r"(3b08,Tbg"DVc-4DVc2Pp,bK7fD_o0L2`5BI._SX4.`5Ta:aNDcSdaZjt
+e,Ic-eCE.&gYC]GjQGgpn+-,FqYmc".'&cTSXc1;]VLI?KnkDIY/Pj9Qu5T09lY5I:Ode@It19i
+:/t4i:f..M#E+CnKntM<K_'tZrs.iEb1<PXQ'VE9s-WkSrg=LgR@9V;SXGh0PECrjNfAsQMhd(B
+L%:"2DJsN7F*)PKG^=[`I=Hd!K7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oDc
+^;%M$`5Ta;aihoQcHsteeCE.%f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*olHncA@Srq-?dp\4X]
+s7u]kr;6KkrVc?eJcC<$l2Q8~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Q!66qL!H:ARi];#X>f;V4hK1c$jDr\amE6:!k%rBC6D$T^@33]fDh69me%62j+U
+5"nXF9hmlG:K$a^peq)ir)<_t<)i]m!E<(t<;]br;ufko<;ol!<)Z`p;Z9Sq<)ross&K)"r)N_s
+r`&qtrDrr"rE0&#s&f8%!*K5'!`rE&r`1UR>$YHB@UWPF=Bf':?<gT9>$YNGAS#=U<E312Anu=)
+EH5r4BkLsc@:3GK?2e(.>QA(.?3=P@?!RA5%:!+@=]nj-='/U/>?b;1=o;D%=oMM'=nu:r>5qe9
+>$G6:?!^iE?X@#C>[@;7!+Gk:(hI>oC2.O%EHHDMH[U<hH?jg_GB@qJEcD"p->[F0AnPglC27['
+E,or=FEM_LG'.qKEGo]1CMIX%DfB`=F`heJrcA*]r,_mXrbhXQrGVRP$#ad&FEMeQG'.s,F=VKX
+G^=adJ:`K1MN*^]QC=D>VQ-f)\%0,b^;%M%`Q-*Cc-Obbe(*%%g"ZG[#Mn7ohV[5KiVha9iVhd7
+j8\*Aj5T(WiV_^6iW%j9i;qrsro,fqZXm6R=]nj/?<9lq9L1s6;1(Vf689oG/3Z0K0hFr+7n#Br
+2ENu]4$-MD<E)go:f:.e:\.H`k5XQBj9+H%io0mprnmb4s5!_1#M[tcf\"g,ec""se,@_odJqPo
+cd)O7"3es2b5THba2l<@`Vm^T_Yq=M^];4L_#M.O^q[Xurk86Bs1A<B$+mdZ\[]/Y\$iaD[3rVW
+H?!J;>$+j/='&L,>$G-4=BSg3>$P97=]ea,<E<+!<)Q[n;Gm3cqG1^@DfKc<FEMePH?sseIt3-'
+KSG8=MN!OUOHPfmQC+)0S=Z@HU84W`W2co#Y->1;['mHS]">Vh^VRe*`Q$!@bKS5Vd*^:ke^i@)
+g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6NlrU^#>s+147s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu)C27pANrGsSV?<ZjUndp`s.KFcrh'4^qjdVSpmV#Hrg<5B)N^2APa%GuVP^>k
+VPU)aU8"EWT:MOCSXQFTrhp7*W2QVl]tV+o>i^3lp7DDZTqV4T"JMQaUSIgapSIhc!2][j"/DTb
+U&L__U&UeaU&UbjT:hjNTq\9Trh9CdrhBFfrhTOi(oF72X0&P/ZEggD['d?O\@K2_]Y2(s_ScAi
+$cU64eCrg@l0e*1n,)SXmcj!)oD8Id#5[iWn+6ARq>Vf@qY'LKmHWotjQ#7YiS`PGf[S?qc-4AR
+aMu3:^qRLo\[]/[\[qdN!kPqQrOW$@!P5o@\cKFSrOi0D,JLq._8=+.`5Ta:aihoQcHjnde'lju
+f\GBDjQGn!oCVbOqpbWLrVZQirVhBJmJf!'e,S(Eb/qQZ[\]^m\AI4K_6C)!@TSMVQ!.KuTV\EY
+WENM0@:*;E[C3WQZE^U=Za$_*Z&8PbkeFdI^qTfa)90Y4`Pfm@bK\;S`l5d0]u%Fm\$WWOZ*1A%
+Z!qQfE,fo?FEVkRH@('hJ:W<)KnbD?Mi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]"G_k
+^r"".`Q-'BbKS8XdF$Fme^rI,g=tH>hr*GPj5f=ak32'olKdg'mf)Y_nF?)?oCV\Jp%J+RrV6Eg
+s8)ZjrVZWmo_sFAJcG!7J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Ptt>[hDcH2`KpKD^>kJc1,gJ*qarChm[#DJa9=I"$NkI!^3drco?)FEDPEEdN1^
+I=$?iI!pC'O,]/mW,-a1rIP$%r.=p#rIY!!rIY$$",);ZK_^?#L&d#.L&m'apOiU%KS9#Ns+LB*
+"b_S`L5(K_LAco-L]rZoMi<XTrJpl=rK0U5PE_;sQ'@MuQ^XSAV5^Q#Za$d=Yd(I;Ycb"-Z*q?a
+`l5["Za@3T_oU$Id*Kt]b/_E6]!o)QYcb(.X/`5#WMl\jV5'a`TELjWS=5lFQN*3KPlR-LPld8:
+Q2[*KPl[2;r0@AMQMd'`QC+).R[]h<SXuIHTqS3VUSO`bWW&h4WN<8+Yd:gN]YD;%aN`2ehW!ST
+iSi_OrS.>,&_l$keC)^icd'k`daZn%gYL`ch>c4Df[\Bqbf[uIaihoRcdC4jeC2mreG[o&eCE's
+dEp4crm(Pi+jeWbdaQ[ne'ljuf\5*8gtgiDhr*JRjQ>^nn+65Hq>:,lrrgo]UY2FARk0o.P)+jH
+Kp8O$Q@=C$;+52?E(`u#IXZZmJ58s8;c6FgNJrgRLkpe>LkUQSLQ;B>mbZ1<X-]*;rKmPO!1EhR
+'UkM\SXl49QBIDlP)YHZM2R1FKnf/R@Vp"%EH6/CG'A4XH[U?nJV&N.L5:\EN/is]P*D5uR$sM8
+StMdPUo(&hWiW>+Yd1UC[^`lZ]Y2(q_Sa@3a2lEHbg+P^dF6Uqf@\d1gYL]Ci8EVTjQ5Odkiq?s
+lg4!+rpL6anac8Bo^qhLp@e7Zq#C0iqY^6hr;HTdrdk*#s69Q6~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Ptb77^'Hpegc^pJCogfhhr21G^mG2E(P$s$6QJs$$HF"Znh04$#J%5Rg"G5X7Os
+9h\2S.8il;mo0'\rDWYos&B%uqG[5i!*0"t!)rkp!)r_nr_rbns&/qt<W5tl<W6&!<<6-%r`0)%
+=BYN'r)Wl#r`K8'<W5o#<**1*>@%28ra%$\?!LK2<ENO9AnYa_<Duk"?Y!keE,oo8DJa-$A7AtU
+?sm;H>[CcF@/XC4?!RA5r`f\4>$4p/=^##->Q%b*=Sl5%>?q#/!F/k)>5qh+>QA(/?Me(0@/XI3
+@i/`fB5)*qCM[p1GC4mkJqAQ*Jq/5sIt<1MJ.@$TH$=CRFE2DCFEMhTIK"a2JV&K)J:)ZfF`VPB
+EcQ5CFEMeNGQ)daGQ)dbF96N*FSp7]G5c^pGBS.PF`qtRH$Xd`HiACAI=?ZsKSG>BO-,ZmR\$4L
+WNEG4\%BAj`Q60Ec-F\`daQatf\,$7hVS4grS[V4s5O(=rSmk9!oi8"rS[n;iSi_RrS[\4rS[\6
+qr0!`mW!&OG$.mK=BAX%9h\5F78$3F3'0)L,;MDD0/>:R7n#j92`<Sn3X\#N<E<$r;Gg=h;,d'`
+#NXq)j5T%Vi;VU6hYl7DgtUQ9f\"g,e^i:#e^W*teC2mprR(Yl!RK'jblQ&3rlY8_rl>;a`l5s:
+`Ph_l"2Vjj_>1nH^](tG^&GYT]">Sc]",A]\[],X[^NTOrNm3D]sW6.ASt^T=BSd/=]eg1>?Ll-
+s'$";>?Y02<``@)<E)pr<)Z]h;#3ssD/O<4EccDHGBnL]I=?]tJqJc3Ll%%KNfT<cPa.T&R[]k>
+TV8-VVPgDnXKA\1ZEpsI\@K2`]t_A"_o9U8aND]McHjnce'uq"f\,!5h;-uHi8WeXjlY^hl07L!
+m-O0>mgJXTo()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$l2Q8~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu/AT;jFPkq9VV>m@iUApqeT`:VaT)G5[SGAZMRe`BAQRe/XM3F3j@&9`uW2-2`
+U8"?VU7@dFS=5nGWi2kqWi2koVn]sY^Ak9dQCdiCs.B@cqP*tarhB@d!2TOh"K&#lVPa?jrhf^l
+"/M]dU&L_WU&UecU&:YaUB%%eU]7.fV$EouXKA\2ZF'V=s0a5`\[oAa]Y;1t^qmn'^VIY(bL+ko
+hra1knFH/>nF?&;md09/q#:9urV#jTqt^$`q#;--q"FCNn*K?(kNCmbhqQi7daHOkdEqm<#0b3/
+`5'.$rk&<G]=[pNs18KJ]=Ybh]=\'Trk0Ym^VIY$_SX4/`Q#p<aihrSd*gFoe^i@(g"bHBjQ>aq
+nauSNqYl'G\c4J7s5hGJb/X%nWMH<!ZHqjdQ_20LF,=7hRp0-jU8+Ta=^,$;?XI)C\$``RZ*:F>
+Z)k/$Z&8Pfm`2uV^V7M"_8cJm'uS)7air&Sa2Gm1^;@Rp\$`WPZEUS'Z2\]PE,fo?Fa&%TH@1-i
+J:W?+L51VCN/`jYOckroQ^F52SXuLJUSOcbWiN8)YHY==[C3TU]=bkm_8=.0`lQ9FbK\>ZdF-Oo
+f%8R.g>(N@hr*JQj5f=akNM0qlg4!*mdKW6nc&([oCW%T!quB_rV6Egs8)Zjrqu`noDX=@JcG$8
+J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu#>\%PiIJSTkK(OWiJFS-ZIL9k)Ao2F';1*e>IK"R%H?ja[H#n(LF)c5JIJnQl
+I0bpqN/d"WEIEE:K)L?%K):2oJd-jZJqJ]/K_pK'LAZf0L51P=L&$E$K`Hf&K)gT(K*I!_Knb>9
+L&Qi,LB*),LCK&sMi<USNK0$[NfT9`r/prA5a7OuP*(roR@TtFV5UK"ZEgjEZEggBZ*1=:]Z%t4
+_nEUk]t:kj`QHELcHjh`bf7N8^:^q^ZELI7XfSP$Vl'Egs.]joUS=HSS=H%8qNh/HpQckeQC!o(
+R$X2,Q^F/.R@9V7S=Q7DT:hmOU84W^VlBWp-*+,MYHY=@\\,_q`Q6<Qgu7G\lK[Wtk2bUdkiqBu
+lfdKmj5JqphuDX;ioB1brojjTkNM*iio&\Lg=Y*1rmh/&f\68X$JaImh;$c>g=b06rnIt;gtpuJ
+ioB%YjQ,FbkPjZSkNM0qlg=01nalGKqYd5i"5^!+WrAJ'R_5/ILPCP@Qc?+QH_G(TB2!;d929s8
+I1q'):JOkf;G^/JMi<RMLPCY@L5#8TNrK^Yhp00DQ^*l'Q^3u*R@'A0R/WNcS=Z7;QB[MnPE:c^
+MMd7FL%'ltDId^+EccGJGBnL^I=?]tK7nu7M2I7ONfT<cPa.T&R[]k>TV8-VVPgGpXfek3ZEpsI
+\@K5a^;%M$`5Ta;aihlPcHsteeC<($f\5'7h;7&IiSrnYjlYail0@U$m-X60n*olHncA@Srq-?d
+p\4X]s7u]kr;6KkrVc?eJcC<$lMlA~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mej5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Ptc7nQKM;#4&_;"dcc;"@K`;!h*t1bpjE2`<Q\5smq'5<qCq4?G\e4?GVc3^Na1
+s$?ZMs$$EV"AY1S:Jg%Lr)ESmpf%>q<)cfn;?0Yn<;fbq;Z0Pn<:s5k<rQ+s<rcA%=oDJ%=8c8#
+=UeJ6;c6Ij<*!(&=^,0>raPn9-"((c>$+j/?tO.e@pE/>?<pfEAo)@%D/XB4ChRBlAn5C\@:*C@
+@K0[7?N"1/?4^CL?sd5G>?Y37>?Y6:>?Y5+=Tqu5>$G39r`]S3?!CK:>?q,2r`oJ/ra,S2s'Ph9
+raGh7/n&4!A7T7aBkqR'DfU,RKo(_JNK&mTM2@4QOHGZgOH#-RL4b)0JUrH)JV&]8regc8rf%AG
+M26n>Jq/;uH[9s^H2N$hHN/?lH3SY>GBS4VH2`-mI=?]trIXp!rIY'%.#!G5MiEg^Q'e&5U8=ll
+Z*_$R^Ve%3b0/)WdaZk#g"P38h;-rFhr+Cks5<n8"5r(pi;VX6h?)Tmhtl40htl10h>Q13hr*Gj
+iW%p9j8\0bjjSWcE)g"A=BSp19MJ/G6Uu<$6TJ1&/MeqA4>/E[8Oc-;r\j^:$T_9e<Dudn;,^=g
+;"RWbiW%gHhqm5Gh;$f?gY1?5f@SU)r71hss3hA(e'c[ld*U+acd'f7bQ>u1b5TN_aT'<[`rF$X
+`;daS_Z%CH_#D(N^:h7or4N$@rjr-?$FmRT\$i]Q[C!9Hrium9^:J]5Am\_D=Bb],**?9G=^"s0
+=Bo'5>[(<3=B8O+<E)pq;c6Lj:Jpsbq+q$.A8lO/FEMeOH$XjdIXm!%KSG8=MN!OTO-,TiQ'[l,
+S"6.DTqeE\VlHf"Y-5(8ZaI6O\\#Mg^VRe*`Q$!@bKJ/Ud*^:keCN7(g=k?<hV[8MioB+]k3(sm
+lKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6NlrU^#>s+148s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu4C3+`YT(o2^V$*ThUS=L^T`UmZTDkG]Sc>5SS,8ZNRJrTIQNND7N/[b$!emJJ
+rhgd2V59r]Tq@jFSXl4JWi2nrWiE"qVS'XU]o(fnMZ04BT)t[ZU&(M]UB%%eU]7.gV>@(hVuNXo
+V>m=lU7qRZs.KLgTq_4R!2BIf!2BCdrhTFf(oF73XKJh6ZaI6O\@8rX]"5Md]Y;1t^:sT](r!Yt
+_o^0Ne_8m?lL+33nF?&<naZ,>p\t-k#Q+H!rquZjrV6C&rquTbna>`.kMtRXgY19WeGmu,eCE+!
+dETeQ_SX.)^V0QXs18?D]=e-V"MVR_]Y+6W-GI70^qmk(_Sa=4a2uHGbg4\beCE1(g=tE>hr<\X
+kj%O(o_A@`JcE4Z1\(58^s1'Eji=O"V7O4WiomnK]prJ^=H]%T?DO<lVl?V">$>?A?!F_F\[8ZI
+YHkL<YOo)WrugdT]tM1r_84".a2>m6aND]KccjGJ_n`t&^:Le]\%&dDYk#&=D/O93EH?5FGBeF\
+I=6TqJqJc3Ll%"JNK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_o0O7aND]McHjkb
+e'uq"f@em4h;-uHi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$
+lMlA~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu$?tX=uJG=cmK(X]fJFS-_IO]5OBP)*uDJ4EEIXHNgI!U*aGBS(NF*2MNI!^6h
+I=-BhI#a8ING,S4G5d'jJcLH&K)(&kK)UE&K`6])LA6Q(LAlo+K`$N(K_pE%K`6](LAur-LAZi,
+M#W81M$/]oN/WbqNrG+>OT1IAP5UUEPRit@Ocu*!R[ftBUSb,tZa9V;6aa8,[CjH!b0%cC_o0C*
+]tVA(bK\;Yd*L%^b0%`=]!o#MY-"b'W2HJgVPg>hV5:&eWMcSfTUq[CR[KP/QBd`$Qi<<MQiEBN
+QiEERR@*u?!h#LGrgNtZStH"T4JALEV5C/gWN3)$XKAY/Yd1[G\[oPpaj&8chW=(lo()>?mHj3/
+nac;Do^h\DnaZ)7m-X92nF,`3naZVLrUCEfn*]W2lg!]qj5JtTi8N\nj8\*_iS`SLh;7#Ij6#Og
+lKmp+n*ol<o_%tRq"FFSo_%tSqu-Mbru_$Kah="1S!pIKN/3=FL6\shN.$e/:1Qn9E_B2WI=D0F
+s%a/";c?OhNf8pSLkpe>LkUQTLQ;BWpuKf>YFCiDQ^F,,R$jD2R[BP4S"$">Q^3l!OHYccMuJS8
+LP:KQLN.0KDfKc<FEVkQH@('gIt3-'KnbD?MN!OUOHPfmQC+)0S=Z@HU84W`W2co#Y->1;['mHS
+]"G_k^r""-`Q-'BbKS8Xd*^=le^rF+g=tH>hr*GPj5]7`k32'olKdg'mI'H3nF?)?oCV\Jp%J+R
+rV6Egs8)ZjrVZWmo_sFAJcG$8J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Ptc8P;iR;#!o`;"[]];"mia;"@Hh2Dd3F2)[BT6N'.j5!M4p4?P\f4?GVc5X7P!
+5sR\$5Wh_692.-J:/OpI;ZKeo;tj8k<W?"t;?0Sm;ZB\p<;'8j<!6-!<E)rk<W,u!=Su>#=9;Q+
+=oMM'=oDG+<Dudo<EB'"!a&T4rF5e8(gpZT>?bKHC27Qp@UWbT?XI8RBkqO%Df>Pj$>X9b@:3JM
+?sd5Hr`oM1rEg(C@Us(^@pWJI>[(E;?!CM/=oVY,>?Y2/>6J28>[:V4>6S89>?kE=r*BP6?smDO
+@fBd=@UW_TAH$0?AdrKmEHHDPK8PbSQ^4#)rfn@gS"6+ASXc4=R$X,%OckolP)t]dQ'I]'R/NHQ
+R/`H_Q'.5gLkLD2J:E*#It3#urdFosI!Ya:&q#.ZJqSl7M2R=PN/`jYOcbfhrfAFhPEqW+SY)XR
+WNED1[CElb_oBgAc-OeceCE1'g=tE=hVR/JiVqj6is"H$hqd)Crn@V3gY:H9g&0S(g]#q+g]?6d
+rnRS2rn[V2"Q/.qiSj[n390)\jlYahkiSm\EFDsO='/F!9he;H5t4e=6odRi.PrP:4>/K]8Ol9=
+7Q<7_4$,Pd=&i7!;H!Kk!Dl_e;%;F>h;-lAgY1?5f[n^*rRLqtr6t\ormCbm#LC]?c-4DTbPoZa
+aoBE`a2l="`rF$X`!F9!_ns7+^qde\_#M.M^:jKXrk&3A!5&6As1/0>!4Vs9"LYVC[']h<s02p7
+]W-d0B4+nG=Bb],(0FX@>?Y-4>$P<9>[(B7<``='<Dugor_ikq:f@-dq+l!IDJsN7F*)SLG^=^b
+I=Hd!K8#&9M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`5Td<b0/#Scd:(g
+eCE1&g"P3:h;@/KioB(\k2tmll0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu-HkrUg)?s+148
+s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu4Cib&cV=g_cV>m:jUAgkcT`:VaT)>/WSGAZRRe<'KR/*(#OHPWiQC)'VVPpDk
+Una`^U84KUSt)@AR]<BeW2Q_pW2HQ.^:_1]S:?iqSY#VKs.K4_q4mtc!2KIfoqq\a!McCfU&Uke
+UB%%fU&LbdU]-tpUS=NYUnsl^UnjdbU`-),V5:&cVl?`!YHbC>[C<ZU\[]5`]=Y_h^&5SF^V9]\
+'u.W)aNDfWg#(lSm-a<1nF?,Ao_AC[rrW2uqt9t4r:TRIm-3Tih:pW6eC2mrdaHUqf@em2f$i!i
+aiDB=_7oo^rOr9Fq7[$G^;%Ct_>_=O_]?_:aihoRc-FV_e(*(&g=tNCiSrq\kj.U%mIBrJJcE.X
+1sc3fcHje\ak!hrUnkKBj2n4%_M_`&NF%m=@9]D$USXqn>ZtQD?X0tI\%&fLYckI>XfqB%MuO:X
+cFpp,^qmn)aN29:`6&#%s3;.s`l,^/_S3Uj[^WcPZ*:G&Z=dujDK'T9FED\MH$XgcIXm!%KS>/:
+M2R=QO-,TiQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe)`Q$!@bKJ/Ud*^:keCN7(g=k?<
+hV[8MioB+]k3(sml0I^&mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<hqu6NlrU^#>s+149s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Pu&@:sJ%oRm'no7?OanUL@`.Vrj7Df'DjI!g?iIX?BfH?jd[G'.nKEcQPUI!pEj
+I=6KkOH5B]J9u3_rdjcpqL\j&K7iuOrIY*'rIt9+q1o!+s+gW/!/:E*r.Y*&"bhV_Knb<\L&m'a
+re1u>LPU_@LkpnELl$tHN/WaUNfO+"s,[5Cqi^oArKK@,Pa%H!Q^3u-Sti6cYd(L@['dBO\%T]$
+cHjk^bK@rG_7mV"`5]pBbg"GYd*^1\^q-t\YcXq(VksBg(T""+V5:&fWiW8$W2?>`T:VR@Q^3r(
+R.cmHR/`QUR$jE?S0X\uTq\<VUSFZ_W2Q\qX/rM-YHbF@[^`fV]u.q<e_K0Jmd]oJp&F[aoD\Fd
+p\+@TpAXdsp@\(Np\F[]p\F[]q=sa\rVHQi#l+/fp%%YAn*^2B#OCU<ki_0mkPXENkj%R(nalGH
+p\4IYqtuHR"6uW:Yl:.3S!p.7M26n?RB;^&IZA,:7VPS;F&5PYIXHNnr_F&(;c6GON/NUOLkg_A
+LPCNTLQDH_r8lAFZ(72HR$X/,R$sJ3R$X50S"#q=R?s5'P*1reMi*CMLPCP;nq^ppD/O<4EccDH
+GBnL]I=?]tK7nr5Ll%%KNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$_o9X:aihlP
+cHsteeC<($f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6KkrVc?e
+JcC<$li2J~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8Na2Ptd85)`SnkoB_o259ZqGI#aohc,T1Gq$K2E*rg69me"r]pKG#!G%14Zb\cr':9K
+$:$g>:/">U5"8=Foi(lgqGRAnoMbcfrDNeu<`N/r<!--";c<Tls&/eorDWhs<)i`ns&Atrr)EYq
+s&Aqs%oub5=BSg1=BSd/=]nj.=nu2"<[^sI<E<.#;H-[u>$YKD@U`bR?t!GM@V':jChmd"B4bX_
+@:3VXBPMA_D$b*!F)l/1@q&kRra,M.!FB15?O1(MAnP[b@UNRA?3=J;>$Co."C#&4=^(f-!Er_,
+>lS(0>l7n->Qe>=?XI4??N4C;@:NeV@:NjI@io8pB4YR_B5DR2H[pj2P*h`0T:_gNTV83ZVPg;f
+Undp`%ABGeTV/$SUS4HXU8"I_V>d>.UnXNRS!oV)O,T!SM2@"@K7ec,JUi6"rdH_UKSYMENK0'_
+Pa7]*S"-+EU8"EYV5C2kXg#+<[^`r^^V[n,`lZHMdF6Xsf%Ja1gYCWBhu;R6iVqj9j8S$BiS`SJ
+g"4dQe-=COeCE+#ec+&'e^i='f\+s4rS@M1rSRY5!9*h7s5X.?rT4(Bs6'[Ol\Jkq>Zq&.*a2K;
+9MA)F85;K72a/oD,;Ui54>S]`84H$;3ArfWr]:6`<E)prr_`er;,Hj]s4RV/f[n^*rRLqtrmUho
+rQtkscd'k^c-4E2bQ#]faiMTFaSj0Z`W=&srl"rW_o)Gis2"`Nr5&EK!l)I`rk/<EqRca<1V(*-
+\[]2Z\$i`Q[C!<IZEpjBZ*CO:YI^iqG%kAg=BSa-=]ed-=^,'5='8^2>$G36=oDD.<Dugo<)Z[m
+;,HgZB5DF&E,fo?FEVkRH@('hJ:W?+KnbD?Mi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU
+]=bkm_8=+/`lQ9FbK\>ZdF-Oof%8R.g>(N@hr*JQj5f=akNM0plg4!*mdKW6nc&([oCW%T!quB_
+rV6Egs8)Zjrqu`noDX=@JcG'9J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2M_'DfpZ!V=g_cV>m=mUS=L]U&UbcTDbAZSc##RS,/NQReiHMQj]"9N0]cp@ATp"
+V5F6e%AKVpTUqaFSsl[YWiN)tWrK"&]tD(m]r6.0rgj(\pR_M[TqVFZr1a=fUSIX\s/#Ierh]Xj
+"/DTbU&Le]UB%+gU].(hV>@&(Vl6PlVP^8iWiWA,Z*L^D\%&rY]"@pR!589D!PcAI]bJ2r_8F75
+cI:J&i8`talgOH;p\Om`rrrAur;HTnrr)lrrVn)@q"*t?k2Y=Pf@A<qc-=PZcd:.mgYL`Bgt:'#
+bK7`A_8-&brP&9G!5AEHrkKeq_o9X8aN;WMcHab_d*^:kf@\d2hVdARjlPammI'?,mIU/PJcE.X
+29>ghgsFEobk&?EVQ.24cg0#cW/bPBLgZI9>$[eqUSk(p>[(ZG?X6mD[^icNZ*1I>Yck;(ZA\_m
+q:3*k^V@S%`5p$>`5Tjsb7W"Aa2Pp2_8*[l\%&rSZ*1=8o<NFQCi401EH?5EGBeCZI!pKpJqJ`2
+LP^nINK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_SjF6aND]McHjkbe'uq"f@em4
+h;-rGi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@n=\q#C0iqY^6hr;HTdrdk*#s6K]8~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2M4eA86.5oRm!lnU^=_npgRd$>XBiDJj;iI!p?hrHnNh#C(E9FE;JNI/\QnI/eU"
+O,f9\NIYbbr.4ToqLed#s+C3#re(3're:B,pkSj)s+gW/",2D^L&Qi+K`Qp`rJ(9+"c.qhL5(K]
+M#E21M?\utN/`gWNrG+>O8tFAP5:CBPl-_4P`q8nPF%f5Uo1/mYHY=A\@TGnaNr8^e'H:bbK.Q7
+^;%J"_8F73air/[ccX,;\?rKAWhuVfTqS*PU8+HXUo1;tricU.Vkp)ZSX]SFpQtlHs-X1^S"#t?
+SXuIHU&LhqUSO``Vl?\rX/rJ.rim-C[C3QP[(!cfaN`/ch;RP_nauMRp'LKhq=saYp\+=TrqHKf
+rqQ9a!W)]jr;QR#qYBs]p\+7OnaPrFm/QDOm/QGYmdK`>p\F^arVlePs!%H8hmB/KSXZ+cP)>$Q
+L5M;;U4@c5;da33EH=fLI=6KlJGr=R<)Z[l:l^KoMMR(CKo#_^on\\/#kR-,`3u>)Q'_H:s-a(Y
+R$jA3rL=.^Q^3l"O-5K^repf3!elAao8%I'Ci401EH?5EGBeCZI!pKpJqJ`2LP^nINK90aPEhH$
+R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_SjF6aND]McHjkbe'uq"f@em4h;-rGi8WeWjlY^h
+l07L!m-O--n*fc9o()DEo_%nNp@n=\q#C0iqY^6hr;HTdrdk*#s6K]8~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2LM;8PDlTku%IWpJL]^rDE8bpe_ha1,CgH3&O#h5sR\"5<_:q4?GYh4$,M$5Rg"G
+5X7M-9h\8U6VU?Soi(cdrDW\pqc!Mos&8hns&/nsr`9&!qG[Sr;Gp@hr_i_opf%Ap;GpFlr_rqt
+<)icq"&r2u<;ol"<``@)r`T8'rE02(=',3"!`rE'rD`hsr_a&%='8a2?!guG@/aU:@qTQUDAmA.
+CMINp@UNSPA7T7`B4u$sEccA@C1Uj^?N+47>?kB:=^,22?34JCBDlKEA7>IE"(#5:>Q.e+>P_J&
+>5hb(?2n72?2n4>?XR8K?sd8K@:E\UA,BdaAnPaf@UNVWCN"9=I=d66P*_`4USXldWN3)"W2HMg
+USFW\USFW\rM0@drhKLh8>`5ZUS4?PSXc.9Q'7DoO,SsNKnP,3KS+r3L5:bJPEhN(S=Q7EU8=fg
+XKJe5['mHS]">Vh^VI_(`Q-'Bbg"GZdF-Oqf\6>Zrn[V2!9!b5!T;r6i!\N%hqm)>e^Ddhc-614
+rm(hsd*U1fe'utJfEKs_gtgiDrnd_6qVqG5s5a4ArT=.Ds61orm%mp<>?Fp.=^#B59MA2I6UuN"
+3'9/O/2Sk@4>/E[8Ol6=2`<Vo3rqH*r`&qsr_`hp;,U<a;%)",e^`0ueC2jpdaJ*A#LLlGd*L%`
+c2PrebPfQbaiMR%a8X*V`Vd[S_uIRR_u%:P_8*kc^]2"M]t:nhrO`*@#eR[Z\[o>^\@DLHrNu^6
+Za9Y:riuL-/$H+][t&R9?X?o>='/X.=]\a1>?Y-4=Bo'5>$>'1<`iC&<E)mr;c6Li;"@D'CM[m,
+E,fr@Fa&(UH@1-jJ:`E,L51VCN/`m[P*;/sR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(q_SX71
+a2lEHbg+P]dF6Uqf@S^0gYL]Bi8EVTj5oFckiq?slg4!*mdKW6nac8Bo^qhLp@e7TrqQNhs8)Zj
+rVZWmo_sFAJcG'9J,~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Me/EdEM4V=g_aV$!NgUS@^\s.K@`qk!VRr1!YRrgE_RqO%h\P`UrlS!B;8Uo:8j
+VPF-b#Ge)dSt)=ASGoMuWMlepWMuc/^:h42P(&SlSc>;VT)kUYrhB:b!2BIfqP=.foqq_bs.f[j
+UAL_bU]@1dV#R:nVl6NmVu`fpr2CF2WMunsX0&P/Z*L^C[C<]W]">Sf^&#JC^Au"F]bA,p^r477
+cdL:ogYUoOlL4?=qYp6h$iU#"qY'RRoCM\Pr;HXDrV?*QkMk7JeBlF^ai_fOc-Y"qiT0+_j4r55
+c-+2J`5BI.^q[Y"_#D+H^^\,s_o0X;air#Td*U1grmV\7g"Y<=hr*SWkNM3slg3s'm-jWDrIP!V
+s#']Rq;fcHdEhI#XJ_tk\AmLkd&P9gEJI\\Q<IX"U8=]dW*EM0@:3DF[(!QSZa-g=['6[9os0MU%
+f4nl]YM:u_o0X;`Poj;rQ>btbK.W?^qIUu\[JuV['?g=nZleCD/O93EcZ>GGBeF\I=?]sJqJc3L
+l%%KNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%J#_o9X:ai_fOcHjnde'ut#f\5'7h
+;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq6<b!;HHes7u]kr;6KkrVc?eJcC<$m/MS~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2M7jB5DaAoRljhomuacmsbjsDea$)E,BK?H[U?jI<p5=GoM!PG'%hIFFAReI=6Kk
+I=?R)O,f3.F_uJVJqErPpk&Erqh4iurIb-'s+UH,pkSg(!/LN-s+UK-s+gW/qhG3.L\ll2LPUeD
+Lku%ere^c8N/[aq!07&>s,[5CrK@2E!0mAE!0mAErf[;F*1!%bStD^RW2m,.\\,YoaNVuUc-Ohb
+c,df;]Y"-O/@iL5aN`,YbK7];\?W08V4sWRS=Q:FU7n<XX0At>[^33<W2-,YS=5n7R[O,@s-<YO
+rg<_R".G^KSGo)kTV8*TUnslaVPgAlWiN5'YPtd,ZMq31Zl$-V\%]`!aii#[g#(lUmI0W=p\F^_
+q=aRYp&F^cp&=[_p]L?hqu$Hj%fH5$qYU0dq"a[Xo^_M?rp:!XmdK];p@nF^JcG]K29XabVjj6I
+S%k8IM2I(CPcrE.J$"H,B1R&_92A60IXQ]r:f'kb;c->MN/NUNM2-hALPCNULl_QAr8uYN\>#:S
+QN!6QQ^O<@RJrZ_S=Q.9QB[PoP`Cb&MZeijKnbBRLhCL?DJsN8F*)SLG^=^bIXls#K8#&9M2R=Q
+O-,TiQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VI_(`Q$!@b0/&TcdC1ieCN7(g=k?<hV[8M
+ioB+]k3(sml0I^&mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrU^#>s+14:s*t~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2LJ;92//Xku%=SqbcHOrD<bW1G^pJ2E(P$#=1U?5<h=o4oRPM5!(ed5X7V#5XGB7
+#sV-X92.'.9i+a[;uKVn;u9Pm;[??&<)Z[l;,U<k;ZTitrDrepr_rYkpf.8lr_iVm"'&B&<W5tt
+;ZKer<<-)!=8c7u=oMLu=T);#<<-"s;Zg!#=BGH'-X0qe@Uiq\BkqO#C2@a'ChI6c?XI)F?!UcF
+B5;F+Ec>o3B4PCU>Q.h*=9i&8?!UcFAnh6[!bc.Rra,\4?2Rn,=oDJ&=oMV)>Q%k-?N4=2?N"47
+?sd8L@q5IJ"D)+SAS1pP,[k%e@:s:iDK0cCIY*E;P*_`5Uo()iWMZJbTV%dES"-">S=9AFrL*\S
+rL<eTrg=(ZP`q8kNf/[IL&Q]QL51VEOHZ'(U8P#nYHkOC[C3TV]=bhk^V[n,`lH0BaihoPc-F_c
+eGe#(f@\d0g=tE=qVM2.s54+<hqm2FhVJ1f%c#gkeBlL``lH-Ab0%rPrm)&#dF$Cle^rL.gYCW@
+hYuC5i8O[p"QSS(j5^'us5a7Droa@Hrp'LK/+),/GZn9Q=BSd8:eaYW:-h?JP>O>Z4tJN=5!1GQ
+1.Xo)77K0o2EEo^3rW+b<)Z^n;,U4e;Y<lfeC4BE!R]?od0e7HcHje]c-=JUbPfQbaiMU'aT'<\
+`WF3#`r*gU`;[[R_uR^S_Z.LT_SO(f^];+I^&GYH]=PVdr43*C\@B#X\$u=Es0W!:Za-pDrj)R/
+rilF+s/mQLY_mXA?sQr>=BJa/=]\a1>$G*5=^,-8>?Y03='&F(=&f,s"&Vll;=[LqCMds-EH6,B
+G'A1WH[U?nJ:`E-L5:\EN/is]P*D5uR$sM8StMdPUo(&hWiW>+Yd1UC[^`l[]Y;.r_Sa@4aN;TJ
+c-FY_daQ^sf@\g2gtgiEi8N\UjQ5Oekiq?tm-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqY^6ir;HTc
+rdk*#s6Tc9~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb1A(2/o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2Mk4FFB.FV5C,fo;;P`s.fUgrh9@bqk*n[rgikT!1WPJrL"LcOc,ZqQ!pPdVP^8e
+V50lXV4XBMS"H4Nri6+!WN#lq!5/<G"MUOQK9lD*rLWnYs.K=brM0Cer1j.b!2]@cr2'@fs.]Uj
+U\^biV50rbVPj?k!NN-uWu7q<WiE,"X/iA)YHY:;Za@-K\%0)]]=beiqn<-H^:jN[r4No\^qdk.
+ai_fOdFHn+jQc1'p%eUes82cmrs\l'p[mn?kih9tnFleYruM(5oBP;fe'6"U`Pom=bKeShh;d\`
+l/ggUe^;^drl58``5BI/_8!b_^am7<_o9[=bKS5XdF6RoeCE1'g>(NAiT'"[k32-rkiV$jkj.^.
+o_/(Vr;M9I\,S;XlG_,ud.>GaVl$K(_W01XY/ZZ2>Dno9Rp'*kUSOce>?b9>?sd2D\$iiS['?g?
+Z`pX;p9KVV*;ng0]"c%s_SjO:`Pfd9bKJ&OcHXJO`504+]t43Q"15>;Yjo#>CM[m+E,fo?Fa&%T
+H@1-iJ:W?+L51VCN/`m[P*;/sR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(p_8=.0a2lBGbg+P]
+dF6Uqf@S^0gYCWAi8EVTj5oFckiq?slg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6hr;HTdrdk*#
+s6Tc9~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb/bJZ*o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2M:mBPr"kK_'inK(4EeJF7n'D/!U%Df/L%I!^3fI!^3cG'J1RFE;PErI+Zmrd>-6
+OH>K_H"h8JJV*]Kq1AQtrIk0&rIY!#s+LE+reC0&reUN.r.b*(%u?!sM27"GMM[1GM2@+IMuJS6
+M>iD4MZA_8NW5%=O8b7@OoLUEPQ-jIQ2[$IP5pjDP66u3PEc'4/shrqStMmZY-G@C^;J"2`5g'K
+d`okM]t(PUY,eY,ZFI`mbg+PZai(m$YGS"arL+=hStD^PW3*>5\[f,PXJhqhT`1GbS!oe6R$R`:
+s-EbRRJrZWS=Q;OU&UnfV>mDGVl6PnX/rG+Yd(I=Z*Ua?Y-"h/ZF.3S^;%P'a3E&bgu%5[nalJM
+q"OOVp%@tJrpg$ZrpU$[o_%nVncn^YpA"FYqYg:)q=jRQnaGr7mI'H2md9H4p%\F`JcGTH*S];S
+XI,QMS]%(YLkpqCPcCC8I[P.K8SE0cF%]4+I0"eIr_<o%;c6IhNf8sTLkph@M#N,%Ll_QGmd/]L
+];CmZQC+#,R$sKBR1YmWS"6+?R$a,$OctfcN/NUMre:E.nq_=%Ci4-0EH6/DGB\=YI!pHoJV/W1
+LP^nINK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_=u_SjF6aN;WLcHjkbe'uq"f@em4
+gtgiFi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$m/MS~>
+JcC<$JcGECo`"gfrqu`ls8)ckrqQNf!;?Eb/bJZ*o'u5<n*]T0lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na2LM<9MSFJ;><ua;<C[X;)C'c3;ti>6:!q'5lNtT5!1qh4?Yei3C#h-62a%T9hnAV
+9gD?H;,Zs`s&/eorD`_o"B8B$<)``m!)ibo"B8B%<`Srp"&i/t;uKVo;u]es;uBSs;c6Llr)<l#
+<`W4#<)iiq!*&qtqH!]"=oMP'=oVS&=9)M&=T);(<``=&<W6#%<E<+!<;ofY<*3C2?=.)LAS5Ub
+ASH"$D.mEe?!CH4;c?\"?Y4.oEcZ8>D/!Ne>#nX&<E3.)>$G9>@V0:hChm]q@fBa8?N+48>[(B8
+=]e^*r`T8)!*oJ.s'GY0$"%"F?XR8M@Us$JAL1kuA7f=Y?!LT<?=75QAS5^lCi=EBItNT?R%'_C
+UnaTSSXZ%5rK@YQOcPK^OckfcN/WaWrfK($Q'IZ#Q'@DkN/<=EKnP)2JqJ]/M2mdeS=uj^Y-PCA
+\@T>e^VI\&_o0L4aN;QHbK\>Yci)5meCE1Mf_sM&g&g'chYl7.gB-0bh"f\3gtg`<f[S9mb/hU%
+a:HG:bg+S_daQ^re^i@+gYMkcs53k7"QAA"j5^+"s5a.?"6Se2lMBiFllbM;HWXQU=^"p?;bg"\
+:-h?C9ggs.0e"G(5!;"]0hFt97fPFJ2?#ZF4?HJA<Dugo;c-CioMPV8s3M%td*L%`cHXSVrlkAb
+s2tA`rl>,\aSs6[`r*dU`;R[S`;d^T`;[[S_Yq=N_#;"I]`bs[]XtfR])9,=\GWf7[K!W5ZN@G;
+Z2Lp)Y5ka)XVS-kHZ3J$=^"p0>$+m.>?b98=Bep3>Q.e0=^"j-='#<###nN";,L.enkX:ACi4-0
+EH6/DGB\=YI!pHoJV/W1LP^nINK90aPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_=u_SjF6
+aN;WLcHjkbe'uq"f@em4gtgiFi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6Hj
+rVcBfJcC<$m/MS~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb1%b).o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na(8k#G(Z-XV5C-dVtm4iV>m=lUS@[[r1O"\rgs+[qjd\UnsUD`OcPHhR$M-UW2HMh
+Tq\?VU8FWVS=Z:BrMopsri,pr#JIja]Rg*-Mu0(AT)5/[U&C_ZU]%"bV>@(dV>-hhV50rbV>[7n
+W2Zi!rN#t"!3>sts/cg7YHb@<Za@-K\%'#\]=bfU]`Gj\rP&-A)SEbs^;%Fu^qmn*`lcQSf\PQK
+lL+<<p\+@Xr;R6)qXs=Bk2P7TiT9Fur;HXfqt075f$;@V`Pod9air,[f%]3Hkiq9hgt:-'c-4>P
+aN)?@_nj.)_8*n'_Sa@6b0/&Td*^:keCE+$g"P6;hr3VWkj.X(md09=l2^2Mm0W4Mo(2GDo_84\
+JcEC_29>Rab0AA^pu8Z[V7*q@cg9&eW/G5=MdMa>>$dqtUSt.s?!:ZF?s[*G\%/rRZE^R>YcY,&
+ZASYlkJ+XD^qmq,a2l9<`Q-."bRi%Aa2>d0`kB!n\%8uPYctJ)Z=mugD/O93EH?5EGBeF\I=6Tq
+JqJc3Ll%%KNfT9bPEhH$R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a]t_A"_o9X:aND]NcHjnde'ut#
+f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6KkrVc?eJcC<$mJh\~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb/bJZ*o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na&uYWCN4dtK_L,rK'e-bJGaorJGF]pCD(<"E,JO!I=-BgH$Xg_G^+LXFoHI[I11LO
+IXQX)O,f0+c>.UtJbF]oKDgJuKE$W'L&Qi&L\uu,L]<,.LBNEgLl$rdM>rJ5Mu/D2MuJV5MuS_;
+NK0%tO8b7@OoLUEPQ-jKQ'@O2PPp[@PQ-gGOUIA<Q^OA9USb#mZFKnG+2>\7c-OYU_nERdXJr%k
+Uo:E(^ramJcHXGG\uqm$Rf8]jR[g"DU8=`eYdCmK['6X2V4sZUSXc5LRfJiTPmNbDR@0P8SXuII
+rM'n!V5C/gW2Q\qX/rJ.ZF..?[fNkArim3E['[6L\%&uZ]"Geoa3<)kl0Ig/o`"S;p@\%InF?&;
+mHX!&mI0H.l07O$nFH8HqY^<jr:opRlg!a"m-X<4naQ&:o_\T<s7cOOe=F1WR@Bh?bH[.dLm!LM
+QcGhOJ8S:oBMEMg92C"cI"$Q@:JFee;c-ANN/`aPLkg_@L5(EULlVKCn_D:#Wg8m9R$X5/rgNkT
+!LfGUS.M0[R$a,&P*M,hMMmFMKnb?PLhLO=D/O93EH?5EGBeF\I=6TqJqJc3Ll%%KNfT9bPEhH$
+R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a]t_A"_o9X:aND]NcHjnde'ut#f\5'7h;7&IiSrnYjlYai
+l07O#m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6KkrVc?eJcC<$mJh\~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb/bJZ*o'u5<n*]Q/lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+8Na$`Bg9284F;><u];<^pW1BoTn2`NW\62j+P5!M4o4oIJX4Zb\i5XIb%5sR\$6;:0J
+9e(Kb;,[!as&AemrD`eq!*&qt!E;tr;>jAr;cHat<`Srp"]\T'<)Z`o;Z0Pm<;f_r<)rosqc3Pn
+!*0#!r`B)"!E`M%=9)G$=Sc)!<rH))<``@'<`N*trD>p\<)m%'=^,-<?sd/G@VBUsD/!Qi?!:6+
+:.e5Y<aKBUEcZ;BDeirj=B&3u<E<.%>$P???XdV\Bk_6l@q&hQ?=.":>QJ&2r`95)=^#!5ra#M1
+!a]/<rEfM2s'Pn:@q5LK#A7abB4YLZ?iFC2?WpiG@U`\O?t!SZDK^ShN00BmS!fY2Q]mPmNK&mR
+K7\`/L4k)*I=?a$Ll.1QP*;,nO,JdGJ:E*$K7ei2Knb>AQ'n5<V5^T$ZaI6P]=bko_Sa:1`l?'@
+b5TTcc-Q:7#1CuMe^`7%rmqA,g">!2g=c>T!SQ-)g&Ke+g&B_)gC`/leBlLbbK@uNbg+P]daZgu
+rRW"BgtgiDi8NYSioB([jQ5Lck2kdgk3(pll0@U3mJQ>MlR)">>%(`>=BesF=\hde;aEc@HqlX^
+3%HO8/3c3K1.b&,7mo9p2?#ZH4?HPB<E)mq;Gg:f:f@!a#LC]@c-=PYbl,]eb0.rMrQ5&[s2Y/Z
+!6=uVrP\iV`PqhprkelU_o'@.rkSTMqnN0Erk/9Cr4;m<$b3[U\$rfT\$i]P[/RB3ZMh'-YlCp+
+Y5>@$XpVM(JT51,>$+p0>5hY'>8UUI>Zk99>?P-4>#eU)=&`-t;H-Ok;,:*\:M=KYD/O93EH?5E
+GBeF\I=6TqJqJc3Ll%%KNfT9bPEhH$R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a]t_A"_o9X:aND]N
+cHjnde'ut#f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4X]s7u]kr;6KkrVc?e
+JcC<$mJh\~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb/bJZ*o'u5<n*]Q/lg!`ukN:mdj5JqRh;$c=f[n^(
+e'ZOfc-+8Na(f=-HAJ0kVY$edVZ*CnUna^aUAgk]T`1S_T)P;\SGSfQRK/iURKnt=NL?&u@]'.'
+#cFPrU8"<WUn@UWs/c7$!ii6!rMU%:^V@G]Tn&DuSG\rRT)G8^TV;7Wp7hV`pSIhcpSInc!i;]g
+rMBLjs/,stWN*#rXT#@%XT,F&Y5bU:YHY::ZEggE[^N`X]">Ve]tM)X^&GbG^&G_G^&GY^]tD%l
+]">Vg^V[q2bKePfg>:lRmHs?2oD8@a%K#kglK$dSg"PBJoDAOds!@R8lep@>bfIfB`Q60EcHt(q
+hrNt`j5JhIe^Djjbfn8SbfRlDr58oZ`5g$DbK\D]e,Ii9e^rF-gt^cDj6#UonFQAIo^_VFp%@tK
+o(2PKrqHQhq>5aC]Dje:qu#3jdF$>4]rS'5\?j68k.[t@Y'5\0PaGT\>G8!kV5[X&>%(fG>?eVH
+\[AfLYI(U>YH[c,MZ4ma^q@P"^V\"1aN29<a32]ObK\>Va2Q!3`5'$r\@K)SYd!](s0H`]Ci+'/
+EH6/CG'A4XH[U?nJV/W1LPUeFN/is]P*D5uR$sM8StVmSV5L8lX0&P/Z*UgG\%0)_]Y;.s_SjF6
+aN;WLcHaeae'uq"f@em4gtgiFi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6Hj
+rVcBfJcC<$mJh\~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb0(ec+o'u5<n*]Q/lg!`ukN:mdj5JqRh;$c=f[n^(
+e'ZOfc-+8Na'2n_Cit8^q1S?lqh"3dq1&HpqgeWp#&S-iE,KPmqgAm#H?ja]H$=CRFE;kZqL/Bm
+#EOt,N;\3EHhW*bK):3#K_U0"K_gE%LAQc%M#<&,M#N82M?/WmqMYB2!K2p9MZJ]nrf$l:s,R&=
+s,d8Cs-!AF#aCO;P`q>rPEYj+rK@5ErfA1aPE_?!R$sS<TqeNeYd(LB]"uJ3cHXPQ_7R(VVkO*^
+,c7cW_oU'HbJqB.Y,7k_S!ob7S=Z=FU8=lnZEpmBYH4b$U7hLV"Iu$RS=0AD".>UHSGo&]T:r$U
+rh]Xl!iMuqri$I/XKJh9\@T>d]tCti]tV4orjtG.]tM.o^VI_,bg=qph;RJ`o_A4Tp%.bEnF,i4
+lK[a'mdBQ5nalDHp\F^arr)fjo^;)1kj.X+oC_hMoCMYPJcGBB2Q"."U7.XET#$\LM2R+FQ*7r_
+J[12<BMEMg92J<1IscZp:JOV`;c6FgN/`dSLkphBLk^V;pP=k0#PHut^T3]dQi<BPR0]7NR@0M4
+S=?#IS-kUKP`q>pNf8mSM>i8!LiR9ID/O<4EccDHGBnL]I=?]tK7nu7Ll%%KNfT<cPa.T&R[]k>
+Tq\?ZVl6VrXfen5Za@0M\[oGd^;%M$`5Td<aihoRcHstfeCE1&g"P39h;7)JioB(\k2tmll0@U$
+m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu-HkrUg)?s+14;s*t~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]Q/lg!`ukN:mdj5JqRh;$c=f[n^(
+e'ZOfc-+8Na$rQk9MPL_o2,KcohkW`r_`YmpegHU"#Vnl2uY]]6UF+*5sRY#5!;"k4?Pbg3^>qr
+6:!n&5XIh)9h\8UWCK`\;H!-cs&B"s!)iYls&B"sr`'#!;cEKi!)reqq,IAp!EE+u;u]bo;uBVp
+;u]hk<W5tr<W?,!=8u8$<`f3$!*T;'!`rK+o2buo='#<""'&<!;Z9Vq<W6#*='8d4>$>3ABl*cc
+(MRDe>?+Kl8kVlW>\7hkEH6&;Bk(IP=8Z)!=T2J<>@(`JAnPafARo4W?<pc=>$PB?>l@h(>5qe.
+>[:Y7?3FVA?!^k9?iOL@@:E_XBPD0qC1h/XB-Ckt@q0%\B4b[a@Uit_Ci4<;H@LU,P*VAtPE1``
+Mi!7CrIGi<J:W<)KnkPDNK99fPEV&bKReN#J:iT4M>iAGMiO-pTqnQbXKSn8Za@0O]Y;5!rkf2a
+`lQ3AaND`Obg"GZci28qdF-Ope^W1Kf)s[Wf@^&Rs4.;(f[ndSgAfh8f\+s3gYCQ;g"4a$d*DX:
+s3M>)eCN7)g"P38h;7&Hi8WbVro=7Ek2tmkl1XBBli-5Plg3s:l2TuHkooE+@U*8C=^,$2@8KZk
+:I.?<:hi<XF\45C.m?'L1GVNmr^HrJ2)bCp#X)0e<E)mp;H*0aqof#^qoSfX!lr=$qSrEOrP\WO
+rk\fS_SX.*rkSKI"hq[a]tM)V]DoDD\@K,ZrO;g8!4Dg5rj2X1!3uO-s/uF*r2ot"!3Q."$a-h8
+KlU^1>?=s3>5hY(>Q7q8=Bes5>?Y67>?P,.<s_i+<)Q^o;Gg4fnP=1@Ci+'/EH6/CG'A4XH[U?n
+JV/W1LPUeFN/is]P*D5uR$sM8StVmSV5L8lX0&P/Z*UgG\%0)_]Y;.s_SjF6aN;WLcHaeae'uq"
+f@em4gtgiFi8WeWjlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6HjrVcBfJcC<$mJh\~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf0_Y24o^qbGo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n['
+e'ZOfc-+8Na)#R7H]7`sp8@nerhTOgqk<bWrh'1]!hGjOqO@JQr0o-tOH,ZqQXZegVPU2dU84QY
+UnXKPT:MOSX/i>%X/`.uVnTp[]oKUGM#3_@Sb\lWT)t[ZU&1SZU]7.`V>[:kV>m@kV#[CeV>[:k
+VZNfrWr/ssXoGO(Xo>L&Y5kg+Z2_*7Za@-K\%0)]rk&3CpUpR@rOi0Bs1/uV\@K5c_Sa=3a3)`U
+e(<C6j6#Roo_SFa2#Hn0iniD@f\GHLnFl\Sr;-*Sk2+_:bfRoHaN)BDcICM&hr<\Ui835Af$_pl
+daZgrd*DX8+NqpLai_fLaihuVdF-Inf@\g1f\50?k3DC+pA"RbrVcZns82oprIP!Rs"iNSc-ar,
+b-7kCY.;L2io@8`P@02LR?j:N?)"-jVl3a(>@LuI>[+\H\[AfMYcb@;XfqH(MuP$d`jrk"^V[t0
+aN2<<a32]Nb0%rRaMu68^Vdaq\%0#SZ*:J(ZN%7EC27X'DK'T:FEMePH$XjdIt3-'KSG8=MN!OU
+OHPfmQC+)0S=Z@HU84W`WN*&%YHY==[C3TU]=bhl^r"".`lQ6DbK\>YdF-Lnf%8R.g>(N@hr*JQ
+j5f=akNM0qlg4!*mdKW6nc&([oCW%T!quB_rqQNhrqcQirqu`no_sFAJcG-;J,~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf1A:D6o^qbGo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n['
+e'ZOfc-+8Na'<%bD0:Pdq1SKpre10$rdsNgn:1^YC2.[,DH$O^&USqQH$X^\GBnCSG&hYPIXQ\C
+I0b4]OH5B8MeR>.Jb4QcKDpQ!L&Qi*LBWKhLPUbCrJ:H.reUN0s,-]3rJ^c7qhtT9N/d^ps,[2A
+s,m;D!L&cBPPgUBP5pdFOAV.(Q'[i'QC+,0S"#tBV5^MtZb!uobg+MXb/_B0Z)FIjSXuUSYdhEb
+`5]d2]!JH6Tq.[BS=H(=SY2gXWi`J.Y-"b(VPBcTStMgQU7\$Krgs1^r1*nZSY?"W)Ps@1WMcSi
+W3!2/\%KMn_o9X9aN2KEaN)?@rl>_pc-FY^dF6Rpf\50Am.9rDoCDnMrpTjQ)=Ht_oChtTq>1!c
+r;?Nlr;$'VmHj60o_/(Yq>^3iqgne=ruK/&^nmKiSY!<^NJNFCL6A^I]762e:1m+>EcY&Nrd>N1
+Inid7<Dl^l:l^KoMi*=GL5:S=L%^=`rsAJ]bJ1-HQBmr*rgEeUs-`nU%@`lWS"-"8QBm\qPE(Y%
+MZ\`gL5,5SBPM=!DJjE5F*)PKG^4U_I=Hd!K7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl?\tXfnt7
+ZaI6O\\#Mf^VI_(`Q$!?b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>U6gqu6NlrUg)?s+14;s*t~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqQNf0D>)3o^qbGo'u5<n*TK.lfmZtk2tdcj5JqRh;$c=f[n['
+e'ZOfc-+8Na%&Zn9_VBY;>a>^;>X8f;=IBm1c$pG2`EW]5X@Y$5<_:qr]CQM4Ztkf5X@\'6:!m9
+63g4[9M@3492PL`pJ_)ks&8nppJ_&jrDWPj!E2tq<W5tt;Zg!!<`T,uqc!Akr_rSl"B8B#<)ros
+!*/qts&B)#=8Q+i<rc;#=8l8"<<cK*=BJU(<;ooe<)Ze!>$+m2?tF+jE,TT0C1U[Q;,9n\:/Y+u
+@qTOmDJa0%A7&PE=BAR,=]e^*=^>BB@Us(^A7K"S?!:?4?"%2N?sin>!F8t/>6A#0<a#B*$sd1H
+?X6lA?!q,OAnh6]!cW'rrb_^PrbDLMrbhaS+)l.:E,ff8EH?>PL6%I[OH,9YMM[1FK7\]/L5(J@
+NW,"=O?SeiPEV,iMhZk7JqSr:N/WaVOHPfpSY2^QVl?`"Yd(L?['mKU]Y2(q^qmq+`5]j=aND]L
+c-FV\cdC.ge,Ihte^j`Orn%8)f_jA$f`0Y&gAT\1g=tB9g=b*0ec!r(eCE+%g"Y9:h;7&gi!JB&
+jQ5Oekih9rqWn(Es69FE#3Y.2jlPRaroF@HmG2Yp@p8h6,$e2D8kqW:7Sd<(3'o>L1FbRN4#8W`
+84Z3<2E*NV4Zb\dr`'#!;cEZms%rAc$d-T4aiMTFaN)BBa83dY`Q#m9`r<sV`;daT`;daQ_Z%CO
+^]M?f_#1tI^AkkR]=bbf]">Pb\[f6L\,Wl=[C3KMrj)X2Z2Lm-YHIi+rN-"!s/I'<WiE,#XK8P+
+Y-=COFCefb>$4p/='&O.>?kB7qcXP6>?P*1=&i:%<)Zap;Gp@hnP<h5CM[m+E,fr@Fa&(UH@1-j
+J:`E,L51VCN/`m[P*;/sR$jG6StD^NUnsugWiW>+Yd1UC[^`l[]Y2(q_Sa@4aN2NIc-FY_daQ^s
+f@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9rpg*]o`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s6]i:~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$`<f[n['
+da?Fec-+5MA86"+JscJ5s/#Ogr29Okrh]Xj!2KOfrh8qVrgs=bSXl:@op[.fOIDN&QDLCUWMZSh
+VPL&`V4aBMS"Q@SXK/D%Wi;trWP8AH"94[8PkgjISc,/YTDtV_U@t>^V"UY_V?!IkV#R=jV#[Ck
+V>[7oVl6SpX8K(!XU;57Y-5%5Yck77Yl:m:ZEppF[C*KQ\@K/]]=\'T"22@[^&#D@]DoGB\G`lN
+]">Yi^VI_*aNMiRd*pS"hrX7tr;-F>rV5jFiS<);f@o0Dl0e6@qtfpMiS2r2d*KnWa2Z9Hdam++
+hr4On.,Wk8g"bKBhV6`9g"=p,e'c[kccjYYcdC1kf\5$3f@\g6j65k"p\]UBU]2J#bf\5Yp>N<W
+UoLuLi9SUUXH-tDNF&!B>$n#!V5L>mr`]qB?sR$I\%9,WZE^U?ZEUO;pTf_W#OKRE^VR\&`r='Z
+`;msXbS&+Cc-=AM`l#R2^:Lhb\[/QEYk,1#ZZBhrCMds-EH6,BG'A1WH[U?nJV&N.L5:\EN/is]
+P*D5uR$sM8StMdPUo(&iX0&P/Z*UgG\%0&]]Y;.s_SjF6aN;WLcHaeae'uq"f@em4gtgiFi8WeW
+jlY^hl07L!m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVc?eJcC<$mf.e~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$`<f[n['
+da?Fec-+5M=^>NPE.7_=pOrHsq1S^!s+9ZinUUXT%<69(Dgd"]IXQZmI<p8>GSYCDFEVbTIXQWo
+IXZcqIuf\ONo>5$I/&9aK(O]pK_U8tLAQc+M>W/0L]3,.M#`G0Mu8M:NJrjVN;\b5NrP1?OT(C@
+P5LODOoU^?P5^UDOT1FDP*Gm0!LB)OQjT7OSti0_ZF[rpbl5m9cca>D\$)['St2FGVl[/3]u.b)
+^:15BUS+6NSXZ(:S=cOOVl?\tXo>I.XJhtkW2m##rMT[m+Jbd-U7n6NSXuLJU84ZbW2?AdVQ$]&
+[^s5ka3DrXdaJ$?'[Y7Ve_/^5hqm5GgtU]Biof_"o'u_KqX4XXnauSPqtp<h%/]u"q=s[UnaZ2C
+q"k!f!;l`n!<.QLoDej>*5APDR[ftfYE"KrM2%IpbF3g2E)U+X9QG5J:4<+js*t#C&6)S*:QCBn
+Mi*=HLPgnBKnf>XO8f^`im#<BS!KA.R$jA2R[a;Es-rqV%[iZLP`_2lNJiaSLk^V<nVD7#CMRd)
+DfKf=FEVkQH@('hJ:W<)KnbD?Mi<[WOckroQ^F52SXuLJUSOcbWiN8)Yd(OA[^WfX]=bkm_8=.0
+a2lBGbg+M\dF6Uqf@S^0gYCWAi8EVTj5oFckiq?slg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6i
+r;HTcrdk*#s6fo;~>
+JcC<$JcGECo`"jgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tabio/hQh;$`<f[n['
+da?Fec-+5M6q'[@:/(4Tr_`Dfp/1Q^rDE)]s"c#^2`<W_5X@\$5sIV!4Ztnh4?P\e3^>tt5sdk'
+6pa479h\9E786VS;?9]or)<Vps&8komo0'\"&i/u<W#hp;u]kq<;fbn<;fbp<;fho;ufqt;Zg!"
+<`T-""'&B&=Su8#<rH,"<WH5"<rQ2"<WH4u<WH5#=T;G`<E<4'<)Z^p<)lt%?=R\dDJj<.DJNio
+>Zap&:JO\`<`r^:Anu=&Ch@*^>?P-6=]\X(<`rX4?XR@BA,g!E@:*;F@:a"\@q>RK!FfF8>Sp[I
+<)lq!=BSj5?!LT8='8d:@Uj%eDK'[rFouf+EcM%us)]l:H$XdaH?jaYFa&%UJ;0#AMi<ROLkph@
+KnP,6Ll77ROckokOcbfhOH5H\MMM1b15LjKO,oBcPF%Z)S=lRNUo()iX0&P.Z*L[B[^`lZ]Y;.s
+_8F1/`lQ9EbKS8Yd*^7hrmUqurmq&#qUti$$ea1cg">!3g=b36g&0P4g"=s/f%8O+g"P9=hu;R6
+iWeH(jQ>Ufkl0fHlMg#Rkiq<okN:pgjo4??irJ*<iVqa8iVhXehVHuBl#CcP?<LB5=_Cr69MJ5H
+8kFe/5s.+W.l/_=4"i?\8Ol9>7Q34`4$5Ver`',#<)cdo;tElaa8EsV`;mpW`W*mV`<*us`W!gT
+_Z@Wlrk\`Q_SZ5er4r9G!ku=[rk&3As1/-=rO2g9[JmN7Za-k8YQ:r1riQ1$!3?'urMfaori,pu
+s/c7&s/l[/XbM"1?X6f;<rH/#>8^[M>$5$3>$G37>$5!0=&i7$<)cap;Gp=gnP=4?CMRd)DfKf=
+FEVkQH@('hJ:W<)KnbD?Mi<[WOckroQ^F52SXuLJUSOcbWiN8)Yd(OA[^WfX]=bkm_8=.0a2lBG
+bg+M\dF6Uqf@S^0gYCWAi8EVTj5oFckiq?slg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTc
+rdk*#s6fo;~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lKRQsk2tabio/hPh;$`;f[n['
+da?Cdbfe,LC2%[8L7eC@q5*h_rh]UirhBIfqk<VSrgs.\rg`hS%$6X4R@9CKUo1/jVPO3f#G@lf
+TV%dHT)5SfW=,Z;^V7ItPB2GFS=BAFqjmYVs.9=bU&C_ZU]7.gV$3`mV5C,drhf[m!2][jr2'1c
+"fJ;uWN*#tXT,F&Xokl3YH\#3%C*.BZ*L[A['[6K[^WaF\.6!Y]",Da]Xtbe]=PVd]`#JB\f82i
+\$rfT\@K2_]Y2%p_oBa<`Q69Nf&#QWp&+Xc;#9kSl/C=FeCE4-iof_$q>9mTl/LORg""Qtbfe5U
+e(!")hr3Y]mI'B-l0.BslKRTtk2bR`inrVKgXt*/f@es7h;$c<gYLcIkN_L,q#,dDV>hb6s7"7T
+bKp4_^9"31\[g2UkbkDuRs'TpQ'b]\>G8!kVQ0W"&7T$R>[+_I\[AiNYd1X>Xg%Q*MuO7Xbe:g.
+^r+46aN)9>aSj<ibKS5Ra2Gj1aM>If\HK=GYctJ+ZN%7KBPM=!DJjE5EccGJGBnL^I=HcuK7nu7
+M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfnt7ZaI6O\[oGe^VI_(`Q$!?b0/&TcdC1ieCN7(g=k?<
+hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?s+14<s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lKRQsk2tabio/hPh;$`;f[n['
+da?Cdbfe,L>@1uZFFj@E!/:#t!/:-"!/(0#o7?I_s(_pUEH>tpH[U9jIK"U#H['g[G^":PFFO.9%
+XrhUIZBMNNfJ3nF+8akqLSTss+C6$rdb'$on36sqh5*+Kn]DYs+^T1rJ10(r/(H2s,-l7rJUT4q
+MkK7s,[/>s,[2As,m;D#Eb14OckolP5UOBOoUXCP5^RDOSt:AP5^YJP`q;qQC!o%QC=D=VQ@2;_
+T'[>c-O_\b/D!&Yc"+^S"61HWNNS=^VdgsZ`^=+V5'`USXZ.ATq\E`Wi`M5\%&oU['[6L[^EQNZ
+EUO9Y-"e+WMZJeVPjEn%]QD)Vl?`!Z*_$Q^r4C@r6ZJ3e'uq!f@ep8iT0.ak2tjiki_-mlKdj*m
+dKWDmf2bUnGi"np%eL^qYL*dqYL*cq=s[Up%7nLp\Omes8;rsJcG0<,P8jeYFM&NS`.STMhm4EN
+gRf2J:O,2>A$]OF%];&I=HWnJGr:T<Dl[k:l^KnMM[.DLPUY=L%gCars/Macbm&[QBqK;"e1pKR
+@0NBSH#&eSXPn/P`h>oNJiaRMZ/>1L[p7=BPM=!DJjE5EccGJGBnL^I=HcuK7nu7M2I7OO-#NgQ
+'Rf*S"-(BTq\?ZVl6VrXfnt7ZaI6O\[oGe^VI_(`Q$!?b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k
+3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?s+14<s*t~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lKRQsk2tabio/hPh;$`;f[n['
+da?Cdbfe,L77U$F:/U[\!)NPir_`;cqGHl_nk]ZM2)I9O2`<ug5XGB7#!kI:4?Ybhr]C-F!($TN%
+REEK6;:3K927WA:Jk%hpeh2k;GpHk<;oen;uT\p;u]_q;uTYp;uBMp;c6Nm;ZTirr_rnu<;ohp<
+<#ks<;BGm<;fbp<<#tp<<#r.<)Z^p<E3!u<E<+"<``?$=8l8#<VTSr=&rB!<s)K)=BGK(s&]5$%
+Tcb7<`Dsp<)m"'?=IM]rbVUO(N+&'ARf(O<`)Rc:Jb"k>$bcTD/3co@/aJ!?!LN5<E<7,>[LlI@
+U`n_C1q3jB5)-sD/F*'B4b[`@:<MJ=]SU+>?tQA>Zt96>$YKD@Us(bD/XK;F)c/=E,fptF9Ql5H
+@:6mrdt0$$\Eq[JV&Q0LPL\@L\lc-L5:eLrfR5B!0@)=!f`+orJ!.aM2[IUOHPfmR%'V:T:_gOU
+nsreW2cl"Y->.8ZF%'M\[oGf^qmn*`5g!Cbg+P]dF-IlrR:hurn%/%rRq/'r7Lu$rRqM0f\,!5g
+YCQ_gAfn2gtgfChr"Fl"6/A%jSn9?jpgG7k2k^cj5T%Uhr!;Iqq_;-rn@>(rn.,"+7GA+?scu;=
+]pc"<)67_5Xn:eP!1m"1bCR84Zb;P1B'fY7R]9p2`s5b4$?VC<`Dsr;,U7f;"d`k`Q#p:`Pfa7r
+l"`R!Q;tS_u[cor58NN"Mqsl_86,drkJKIs1JKH]tF?V!P5i?\Gs#O[^EKLZa-mAZE^X;YHG%1X
+fSS'r2K^ps/,jqrho^nri6"!&?N":Y-5%5W322*Bjk7K>$(]*!*B)&'O"XD>$G05=B\j-<`N-u<
+)caq;H!KknkX.:C27X'DK'T9FEMeOH$XjdIt3*&KSG8=MN!OUOHPfmQC+)0S=Z@HU84W`W2co#Y
+HY==[C3TU]"G_k^r"".`lQ6DbK\>YdF-Lnf%8R.g>(N@hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo
+CW%T!quB_rqQNhs8)Wirqu`no_sFAJcG0<J,~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJ8Cp@e1Po^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f@SR&
+da?Cdbfe,LCi"3@N2?HLpSI\_rh]Lf!i)Kaq4[MTrh'4^rgj%YrgO1WOc,TpR:)qlrhp4"Una`]
+VPBfUSsu>MX8f4"WW/ps^AkqOJH'hPS"0JIr1*VSrLX"\!hc6\rM'"\rMB7cs/5mor2'@hqkjIl
+W;WarWsc#2Xfeh1YHbC<Z*OA8#-tSBZa7$Gr3ZO5qR6L9]D/r@]=PVc\@DLH%(*FM[^WcV]=bhl
+_8?2f$c^<6f%oHSoDALarql^ArV#X=gt1--f@es<kj@s5p@RtDlfR3`gXjs'dF6Uqf\PNLme6YU
+&bbkgo_/%PoC;>>o(2DAnF#ZBl4E:Jl0%0fjQ>XhlKms.o(;a/s/#`Rnc/@1b0%rRlI3#;VRNnW
+i8rRnaIQdE=dPGC?XBJ)Uo11s>ZtWF?X6mG[^`fRZE^X@ZELJ+ZA\`.pXHmk^r"%0aN;NB`QHEL
+bg">Tc-",H`kf[2]XbVb\?`?CZi%-)Zi7=QBkhF#DJsN7F*)SLG^=^bI=Hd!K8#&9M2R=QO-,Ti
+Q'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'AbKS8Wd*^=le^i@*g=tE=hVd>Oj5]7`
+k32'olKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`noDX=@JcG3=J,~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJ8Cp@e1Po^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f@SR&
+da?Cdbfe,L?"%>_G(ojKqM"p%q1\Tsqh+fuo7?Ucs(i-XE,fkpI!pElI!^0bHiA9pGBS.OFFJZ:
+IK4fqIfGK/NWib7C3P5[rdaotrdt*$rIY!!s+:9's+:-#r.P$&pP&d*LkpocM#W;3M"ul/MMmDk
+M?8]pN;JV4NX1]+O-#E`OH5J%OT1ICP5C@CPEM+-OT:RCOoCO>OoLOBOoLS=PEhK"PE_E%S=ug\
+ZFR`e`5]pDdF$:_a1o$_U7RjDSY)XSXgGXO]tV1i['6a7Vkp&YT:hjOV5^T&\\H&$`5'+$^VIY"
+^:Utg]Y=BY(;.5g\%&uZ\$`NGZ*UgE[C3TU]=u2)rQZ5*dF-Org"YBBj5f=akNM3tmHs6(l0@O3
+kQC)7lg4W<s6g3^o(;VIp@n@]q>Bslp%J(Np%J7ZrqlcqJcG'9*PTP%T:;:?S[>,OM2@"GQ`[d"
+I@#%O8k=&DF&5U1I279^:JX\a;c?RjNf8sUMM[+EM26n?L\Q[ds!QRed`&YhQBdl*R@9V6S!fY4
+S=Q1@S"#q:R$O)%QBI5dMi*FIKnf2TreY]1C27[(DfKc<FEVkQH@('gIt3-'KnbD?Mi<[WOckro
+Q^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+M\dF6Uqf%8U/gYCWAi8EVTj5oFc
+kiq?slg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTcrdk*#s6ou<~>
+JcC<$JcGECp&=pgrqu]ks8)ckrqJ8Cp@e1Po^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f@SR&
+da?Cdbfe,L77g-I:f$a\r_NPjr_`,^s&&Acr_`Ac%l?'t2`N`P69mk'5sR\"55m\a4$>_h4$Z%s
+5sdn(6:4+7:/">4HqdL:;c?RkrDEYn;Z'Ap;H$Ln<;BGm;Z9Pn;Z'Dh;YO)i<;ont;ufkr<<#ks
+<:a#g<;ons<<#ns<<#tu<!6-!<E)ro<<6-%rDrntp/_)mr`9&#r)ir"%oub6=]JC!<`W=+?!q/R
+C&Vd,C2Ij+D/3lt?W^3&:JOVZ;,g_*@V'1dBkM'h@pr_N>?Y04=BSj6?=7D^E,TZ3CMRd*EH,l4
+CMIV`CHH9EB4YRaAnPX`?X@&H@:<VS@qB4`C2\*2Des9/DfKlAGBnRaIXZcsK8,/;LP1;4Jq/?#
+J:E*#JqO&Ure1]7M2I1KN/`dRMM_=i!/^]1s+Uu=MN!UXOcu&sR@9Y:T)PB'Tq\<XVPpJpXfek2
+Z*UjI\@K/^]thP(`Q--Ec-QC:"4GZIeG[qtf)OA$fE9gZg"GoJ!nl5[rn@M0gY;__s4m\3rS[V4
+ro3q;$f^4*i8EJIgtUQ9f`'J&f)*u!eC)bCdf7_ndeqQOn%raI?<:33>$+p.:J=JL6UjmY?8t5(
+.4$H-4?5/Q84c<?75m+^4?Ybe4'#?]<)Zap;H!Kk!)iSh!6+cPr5JZRpV[!IrkS]P_8*kb^B2-_
+^&G\E])oRS\c0,=[fj.I[C!:>Z3.A9Ycn&/s/cC)X/`3!WW/n!Vl6MkrMBUnW;`dpWWT<'XKDK)
+!3lI-)R?QJF*h\2>Zk64=BSa->?b?:>?Y06>$P66r`]8%#ut#*;H-Rm;,C0_:]=13BkhF#DJsN7
+F*)SLG^=^bI=Hd!K8#&9M2R=QO-,TiQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'A
+bKS8Wd*^=le^i@*g=tE=hVd>Oj5]7`k32'olKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`n
+oDX=@JcG3=J,~>
+JcC<$JcGECp&=pgrqu]ks7u`krV-EfpAX_9o^hYEnaQ#9md9B,lKRQrk2k[aio&bOh;$`;f@SR&
+da?Cdbfe+=CMe9IR/<cQV>mFcV>d7hUA1GST`1S_Sh$@qP`V6!Q"$SeWMubmUnso_V5L#[St)@R
+XfAJ&WiN/!WP#sZ^V%d_J<^&%rL<_Tr13eXrLX(_rh9:bpS._arMB=e!2odms/5dlrMKdsWMuhq
+rMg.(XK8P+YHP18rj)R/!j]/=qR$:1s0Vd5rjMd7!P#]=\cB;?\cfRT\[f6L[gfdR['[0G['dBQ
+]"5MgrkJu[_o9^Bdb3O?mdg#Cq"k"9q=3_1hqZo:f%T$Akj7j4p@\+No'bl,iSN>Bf\"p6i8s=s
+qYpKrr;-<ir;ZQnqYg6i!<2ur"8_fdo_e=[oE+XXqLS[As#'`+bKA#Ps7E[uVQIDJj3d"nZ]]!S
+MdDa?=^IhuVPpPp>$P9=@9m0M\@T5X[Bd$CZ`gI7pp5nY,l?E3]thS*`Q-*A`l?3HcHOSWbg">Q
+`lZ*9`4`am]"#)OYH[r1q6U(-DJ3a"Ci+'/EH6/CG'A4XI!pHoJV/W1LP^nINK90aPEhH$R@B_<
+T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X9aND]NcHjnde'ut#f\5'7h;7&IiSrnYjlYail0@U$
+m-X60n*ol<o(2JFrq-?dp\4[^s7u]kqtpBjrVcBfJcC<$n,In~>
+JcC<$JcGECp&=pgrqu]ks7u`krV-EfpAX_9o^hYEnaQ#9md9B,lKRQrk2k[aio&bOh;$`;f@SR&
+da?Cdbfe+2?=R_hIf"lgL%p>qKD^>gJIHF4CN"01<.'(AIXQYDHlI?WH?j[WF`W%^I=H]qJ:;rs
+NfT6]N1><7H\)'Er.+j"rIb'#rIOcrre($"rIt'%s+^T1re^Z2rJ:N3rJCK1s,6l6repc7s,I&=
+s,R/?rf@&?s,[&=rfI2Dq2tZ>!KiK?OT:RCOTpo0OcYZcOSt:UP*D<!QC!r*R@TtFW3*D8]"Geu
+d/MKFdEKM=Yc=LlSt)@FV5g](\%TPj]tD"g[BZm7WMZGbVPpPu[CjH"bK.Z?_u%@XaNMfPcdC.d
+ci200bf[uF_nj.)^q[Ut^V7M%aj&,XdF-Lnf%Ss<ioU1%ro=1CjQ5M%jqZt:io/nWjlbmnlg4$,
+mdKZ6nalGIqXsj]s7HTiq"agbrVhBJlMiBlft=,NR[]i'acMC:JqfJnR`g/6E`HO]9lb>L9mqJ>
+It)uE:JOkg;,E;PN<kDuLk^_BKnb<VM3%ZEiUPR>\>5FVR@9P5rgFFeR$sP:S=Q.=S=5k4Q^!\t
+NrFt?Mhd"?L@g<$M/I!@CM[j*E,fo?FEVkRH@1-iJ:W?+L51VCN/`m[P*;/sR$jG6StD^NUnsuf
+WiN8)Yd(OA[^WfY]Y2(q_Sa@4a2lEHc-FY_daQ^sf@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9
+o()DDo`"Lbp@n=\q#C0iqYU0hr;HTdrdk*#s6ou<~>
+JcC<$JcGECp&=pgrqu]ks7u`krV-EfpAX_9o^hYEnaQ#9md9B,lKRQrk2k[aio&bOh;$`;f@SR&
+da?Cdbfe*r7S-<L:A%H\:BF?i;;"kD;&_AL1H%0N2F9_r5sR_#5X.Cq4Zkeh4?>bn5sbH9s$I&d
+:/";T:In2Vr_i\ls&/ko!)WSj"&`&r<;KMn;Z0Jm;Z'Df;YO)s<)lpt;c?Xp;c?Zd;ZTitrD`eq
+r`&nt!*&_ns&Att!`i<$oN(ijr)Nf!qcNl"s&T,$r`;cq=^#$5>[LrL@q&t^DK'T8E,KB#>Zk'*
+:J=GX;c[%+@V9CiChmd"BP(^\?!:<2=BSg4@:s@pEc5c0Ci40/Ci!s,EH6/FGBe=UrcA?cEGfT,
+BP@BZ#A7X]A7]FjDuO\cEH6,CGBnRdJUr?%I=?YCJ,XltH[5U:'RY=YJUr?%JUi9%Jq8Q.LPU\=
+L55\`'8hX$Ll.+NOH>WiQ'[o.SXuIGT`(T'Uo(#eW2Zi"Xfnt6[C<]X]=l%u`Q-*Dc-Oc8d/qbF
+e,Ihsec+/!f)s[Wf%9iNs478$rmh)"rmh/&f\$,U!8IM.rnS">hr*DLi8<GMhr!AMrSJ(?gY(0.
+e'c[ldEg+_c2Prec2>iechu)fcTon)d*L%bcgfY5FC/0Q>$G-eE)05&5X7b77>Nob3%HO9/3H!I
+1.b#,7n#m+2E!Z\4?QYF<Dujp<)QRj:f($a;Z=W3`W*jY_o0I2rkncQ"i8'm_8=(g_>_7M^]2%J
+^&GYE]DfDA\c0)?\$i^DZiRM=rila5YHP+3XfSS'r2KXn!2oalri#gqri5pu"0J`/YPtd*YlM-/
+ZjEs[IVrS$>$>$2r`BP3>?tH;>$5$5>Zt;/=o_V&<sVf*<)Z^n;G^6_:]=1.BPD6uD/O<4EccDH
+GBnL^I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>b0/&T
+cdC1ieCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?
+s+14=s*t~>
+JcC<$JcGHDo`"jgrVZWks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+eC)ajcHOJRC2.d8L8+F>lD=KUs.fOer1O+br1WeVrgsUaP)YlsQX6PeVl?YmrM'e!US+0LSXup_
+X/i8$ri-7']tV7r]U!YnrgNeTpmh>Ss.9.\rh'7brM'4bs.]Fds.o[koqh_erM][mri#dp$EC/-
+XK/G(Xfen4rNcF-!42[3#ICeDZa@*I[J[E1[J[H9\%&rY\c'&:[fNqHrj;a5r3I3H\$rlX]=kto
+^r"%/aNMoYg>V2[n+?MRs!7L8o^M50iSE>Hhr*PZmdg#Dp\4IXp\"(BkN(X^j5fIjnFun\s8;cp
+rTO7arr)`ir.4mCruM'qbKA#Nr9hh5Vl7/Mj6Y7%XIt5jM-lR9>$dqtrhU@0>?kE@?s[)B\[f5W
+['I!A[BZp=ZM:bbrs/D[^q@J%`5_et)TB_>c-FPZbg"DTai)]H_T'F)]",DZZ*:I=rNc7*rj;]=
+Chda%DJjE5F*)PKG^=[`I=Hd!K8#&9M2R=PO-,TiQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg
+^VRe*`Q$!@bKS8Wd*^:ke^i@*g=tE=hVd>Oj5]7`k32'olKdg'mdKW6nF?)?oCW%Ts7QHerV6Eg
+s8)Zjrqu`noDX=@JcG6>J,~>
+JcC<$JcGHDo`"jgrVZWks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+eC)ajcHOJR>@;&ZFFs7Ao7cdhpOiBqnpqZsChRg-E):t2I"-WoH@(!bH?XRUG'.nUJ,Xm,J:E#s
+J<#\NNfA6tF+Jo?JGXosK)L?#K)^DtK)UDrK`?c%L'!-dM#3&,MZ8P3MZ&G5MZ/P5N;nk;Nr>%;
+O9L],O,f9^qN1T:rfI,ArfHo;rJpr?rJpr?rfIAIPE_B!Qi<BPR3S2nU8P)t[(*llcI1:pe'?%P
+]stAKVPBo^V5L>t[^j#_^;0`a'#;2jZELC4XKJe4\%fo'aiDB>rkp&$b0JDbf@ep7hqm8Ji83>G
+gY(62f$r*ocHOGO`lH?Oe_&UTgCW/siSrq[jlGCXgtLH5f@o'[i;_[6h%/E%j6#LflKdg'mI'B/
+nacSK!VH'_p'(-_p\FacJcFs6*TkqbVOX*DS&`7:O,8^KR&SB(J:i/[>A-cQF%]=.IM[B\J5/m9
+<Dl^l:6(?mM2I+ELl$nAKnoJ\!/Q^9'_U5#\#>XXR$sJ6S!oe5R@9Y;S=TYLs-aC`TTbP)P)bHY
+N/<:DL\-E%M>q7*C27X'DK'T:FEMePH?sseIt3-'KnbD?Mi<XVOckroQ^F52SXuLJUSOcbWN*&%
+YHY==[C3TU]=bkm_8=.0`lQ9Fbg+M\dF-Opf%8U/gYCWAi8EVTj5oFckiq?slg4!+n*fc8nac8B
+o`"O`p&Ojcq#C0iqY^6ir;HTcrdk*#s7$&=~>
+JcC<$JcGHDo`"jgrVZWks8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0lg!`ukN:mej5T"ShVHr?g"4g)
+eC)ajcHOJR6qC!G9MeS`pe^f_r_WPjfi%fH#W=Io2`E]Q69tN9s$6TJ"$Jh248q>E4$Z+urB^iY
+6:=OC9M8,G9MPI`r_`\ns&&\js%rhq;cEZps&8qss&/nqrDEMks%rhq;cEQkqG[Akr)<So!)rkr
+s&/nqrDW\ps&8qqs&8qss&8kqrD`u"<E3(#r`/qsq,R2j!*B"t!*B,"q,mSs!a/W-r`M`p=BAU-
+>?kH@?t="jEcZ>DDes*!AmnkB;Gg=i<)m.1A7oUkCM[j*DJNln?<pf?>?tK@A8,jqC2%BqBPD3u
+EH?;JH@:;BJcC<9JU`,rH[C'aG]n1LE,BB)C2\0:Gl2k7I!pKqJ:DuoGBJ"KEH6,DG^+FTFE;SI
+GBeI]I!pHnIXQZnI=["KK)p[]reM)AMMd7JMi3RVOd))rQC=BDT)kUYrM':ds.o[l&ZD_2Y->4=
+[^j&c_SjI6aNDa)c2l8<rmCbo#gq,Me^iC)f%0iM!7Unr!7h"srm_,%f@\aTf`Ts_gtVh`s5!S/
+rS@M/$esCgg"4d&ccjMO`r=!Y`r=!_aN)BCb0/$.c2Z)eci;Alci23?c-+u*K5b."='Ag1BjXt<
+9hdlD8rH>&4?G5K2(UpQ0/?'i7n,p82E*NUrB(Hg<E2sr;H-Rl:f1*a;Z4Q5_uIRR_>M1J_%FK!
+^qd_"^;%Cr]tD%k]Xtbdrj`EH\$rfR[C!9GZ*CP4YQ(d*XTPZ*X/c/urM]aos/,dnri#gq!NN4"
+XT,F%Y5b^*YQD)8ZMq30[/RK5[MQ-;J8o%*>$4s1=]ed1>?tE9=^"s5>[./1%9Zt<=&rC&;c-Ij
+;Gg?a:]=2jBP_F!Ci4-0EH?5EGBeF[I!pKpJqJc3Ll%%KNK93bPa.T&R[]k>TV8-VVPgDnXKA\1
+ZEpsI\@K5a^;%M$`5Ta;aihoRcHsteeCE.%g"P39h;7)JioB(\k2tmll0@U$m-a?2nF5u=o(2MQ
+p&F^cp\jmeq>^<hqu6NlrU^#>s+14>s*t~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8ND/FECMl$-El_XQUr1a7drLs.`r1WhW)3L#MQ^M6XW2ZerVk^)_USal^U7J!KSZJgi
+WWB0#ri,q3"i%cYi-C:XRfT%MqOIPUs.9+[s.KCcrM'7c$DO5gU8+HWUSFW\q54+gs/>mq!N;pq
+W;W^qWrK.!XT,C(YHbA3ZMq02ZEsP;rNcR4[C,n=$F@+I['[6K[^NZSrj`!;#I_+M[^W`S[f3Z8
+Za0P9(pp]Z\$rlY]t_=t_8F:6b0A8_guRbipA4Ra#6+Jmo'Yc(ro#!Zk3D@'o_81Zs8W)qq"=7K
+md9E0nb;q\s8MuprVZWnJcCE'.,rLob00V\n$T0n\@U/Ul(Y)uY[NGpR$X7M>bS*lVl<j)>[h)K
+?!RB>$+RCLZ*1O@YH4u'Z]+nhqrPZ-_SsO7rl?"taihrTc-FPXc-"/Ie\f5E_Rm@h]!o#MYdFA7
+q6U(-DeE`tCMRd)DfKf=FEVkRH@('hJ:W?+L51VCMi<[WP*;/sR$jG6StD^NUnsufWiN8)Yd(OA
+[^WfY]Y2(q_Sa@4a2lEHc-FY_daQ^sf@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9o()DDo`"Lb
+p@n=\q#C0iqYU0hr;HTdrdk*#s7$&=~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8N?=@G`G(oXEoS)aepOiBqp43KcC3"64;gWq@rdFusI!U*arcf0#G]\%VIsulsJ:Dus
+IufYNND6?fG5QpkJ,t4QrdjotrIairrIafss+UK-s+UH,!/LQ0re^E-!/^]4pl#-1!f`5#rf?u=
+s,[/>!0?o:$'C=2OcYWcOHG\)OSY(?OHK=!rK%>JP*;/sQBdc%R/WK]S"?FTXg>OP`Qci[rmW1?
+c,mo=]!\fFWi)erY-G@C]"PquaNDWF`504%\[JoR\%TWW`VdY7a3;o[f\GECioK4al0%3lki_*i
+k2kX^i8<AFf@JU,g>1WDiSi_RiSrnXio/eLf[S?pc-Fhhf@^)S#he"kioK4`kN`'5!q,OHrUKpZ
+s7-0^rUgEhp%A%Qq"t&As6'DAqUE3VS=5k8^tQ\gMM[(KRE!6tI]S9"Bh<GfFAYe]Islcr:/F_c
+<)QRhNf8pTMM[.DM2?q@L&$Q*Ll_QKpts*%WL0!>R@9Y8R[TY5S"-)JS.D'VQ_BY,QBI5dMi3IJ
+L5,>VreYQ+BPD6tD/O93EcZ>GGBnL]I=?]tK7nu7M2I4MNfT?eQ'Rf*S"-(BTq\?ZVl6VrXfen5
+Za@0M\[oGe^VI_(`Q#s>b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCMVR
+o`Fj]p\ssfq>^<gqu6NlrUg)?s+14>s*t~>
+JcC<$JcGHDo`"jgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0lg!`ukN:mdj5JqRhVHr?g"4g)
+e'ZOfc-+8N6qL$H:\R`d;#3ue;"miB;@PH=3&W]R6UF%)5s[\"r]U0A#!4k26:!q(rB^cW9hn>V
+.9'&<r)3Mk!E)el;#X;l;u'Am;uKVo;#jMn;u]bo;uBPn;u]bq;uBPm;uK\p;ZTirrDNYorD`_n
+r)<Sor)N_qs&T/"rD`Smn5fQjs&T/$rE'8,=BJX*=',?&s&oA*1KRRV<`iR3?X[M\DfKf>FE;G?
+Des&r@9m&<<E3+(?=78UBPD=&EH,o4BkV'e?sR#C@Jsg<AJ/TcA7o^tEcu\RI"-^$L51M;L&H])
+L&Zc-JU`)prHJBiI=D0G&q>F]IsuinH['[QDJNltBP_R*rbi<bE,p&CG'A1XI=H`qIXcnIJH1<$
+K,fQ!LPU_BMMd=NN/`p_Pa.T&R[p(FU7n<TTq\:ZU&Ui*USXlgX0/_6[CNud_8F42a2uKJbKA#O
+bg"E2c3_hDd*^=je'cXkr6YDirmCkte^aZM!S?!'g&9\*g]?6fr8/(Bh;-i>g=Y$.eC2glbfe)K
+rQ"iU#04g+b0%rQrltMiqp6h=d*L(bccs_Yc-5LGE*ljP>$>'8KPF=X9L)'<H%eXIAiV:u.R$!V
+1c#&$#"D$@2`<`]r]:-]<W#f";,C+c:f7!cs2+TJ"Mhji^qoubs1\QJrOr6D!5&6As1/-='=YEX
+['R*EZ*CO;YHG"0XK8J&Wqr^pW!9/uW2HPlW;`arWrB(!X8oC%Y5b^*YlD!.ZMq31[/[Q6[K*`5
+\,NlGZDiV#@:*8A=B\m2=T)G+>$5$3r`^"=>?P-3?<:0.<E)pp<Dugn:Jpd\r_RNGBPD6tD/O93
+EcZ>GGBnL]I=?]tK7nu7M2I4MNfT?eQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>
+b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6Nl
+rUg)?s+14>s*t~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+7>Ci4BHR&9_VrhehSr1j=fo:l2Wqk,L)P)l*#QscehWMubnVPBoaVPKu[SXuITX/i8#
+X/i8"WP6-]^:aE>JX2jtqjdVUrLEkXs.9(Z!MH.bU'76bU8+HWrLjFiTq\<XV5=$cs/5^lri,pr
+r2K[qrN$+'Y->20ZMq3/[/@61[/RK2[/R?4Za@+=[JmW7\,Ni9[0!eE[f3]7[/R?2Zi.6J[^ENO
+\[f;a]tV;!`Q--Fd+@4<lL+6=rV-='rVH3XmcruqiT01gn+68KrVQU&rquQcp\=Uas8W&qrV_<I
+KDtu9cMks@c27OSZ)On5c/I0bWlpiE?&i9\S6B3nV5C2lWENP1?=@,E>I_;U[^<?FZ*^a;YHmu1
+N;j(\k/P*N`W!pua2l<Ebg"JXc-4GVaiVTO_nsR7]t:ke\?`BCZ2M!(Zi.92BP_F!Ci4-0EH6/D
+GBeCZI!pKpJqJc3LP^nINK90aPEhK%R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoR
+cHstfeCE1&g"P39h;7)JioB(\k2tmll0@U$mI'H3nF?&>o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?
+s+14>s*t~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+73?=R\hI>7TPreC#umY(1arIXot#&e9lEcH(srd>K0I=?QjH[L-bG]n4QFaegjIt*!!
+rdOj-#EFecIrTjeJc:6&JV&IFK)L>tK)L?!K`?c)K_gB)L51S@qMFs(!fMqnr/1W8NK!dqs,[/@
+rJpr=rf@#>!0@,@q2bB6rK7,Arf@#<s,Zu;!g8b2rKU!AR$jA3S"QUWY-GFI^rFRDe(3.&f$hpe
+`PB0rZEC:-X08h;]"Pu#air&Vd*KtZ`PK=(_SjF4`59F0`5KX:c-b+thV[;PjlZR*"6o+8lMg*0
+lKRNrkN1a_i83>KioK1^jQ,@\i8EMMh:gN4eC)gpeCE+#f@\j5hV[;PjQ5RglKdd&mI0N5naZVL
+!;$3^s7Q`ko_%nNq"t!gJcFp539S#VS=5k7S^H2XNJW7FQ`cm@I%k[\9571CFA#AXIXQZpJ5/m8
+<)c^k:5t9nM2@%CM2?tAKnoM]!/Q^9$iJu(\uM3bR@9S7S,JcmS"-(?S"-"<R@0D6Q'%AqO,]*W
+Mhd"?L\6K%M>q7*C27X'DK'T9FEMePH$XjdIt3-'KnbA>MN!OUOHPfmQ^F52SXuLJUSOcbWN*&%
+YHY==[C3TU]=bkm_8=.0a2lBGbg+M\dF6Uqf@S^0gYCWAi8EVTj5oFckiq?slg4$,n*fc9nac8B
+o`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s7$&=~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^qbGo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+6t7S-<M;,[$`r_WVjr_W8bpJUrem8=9K1G_!L3&X,i5XGB7r]^ZO5!1ng4?Geor^%&[
+6UF(*:/4MU:3B*&;>jDg;>j>j;#sQnqG[GnqGR)er_`_np/:if!)iVkrDNVns&8tsr)3Jlr`&hr
+rD`\ps&AeooiD)mr)Wi!!*9&"r)inus&BG-='&L,>$+j+<*!9'>qfYtBPM@&F*2VKF`VJ<BkCpc
+?<gW6=^5<B@q94eD/XE7F)l27B4PI\A7]=_@q&sIA.rNgCMe'7GB\@^JV&N+K7ei1Kn]J\)MWs!
+K7\W&I=6QoJUrE)J:;onH?jaXFE)5:rbE<dD/F0/E,]f<FEM_LG^4XaIXHQlIt*%JJc^RXLAlr.
+M>W8FNffKhQC"#/St;ULU7n6QT:VUFr1+CkTqeK`WiWD1[_'5e^;%M$rP\`R$cU'(aN;QHbKS/S
+c2Grfc2GlbcMu5ldFA0H#hRYZf@em4gthtdrSR\7rnn7Cgt^Z<f[eU&da6=bbl,ZnbK@uNb/qcJ
+b0.uPc-?76rm:YlrQkPjqp,5c%*S+<JRD\b=^"s4G(]ci(-b5X;FNu39/.nC1Ft^O/i$$h7Rfg9
+r\aa<rB(Kg<`N*s;H$Ik:f("dq,.4.r5&EKrkJEG!PQ5H^&P_F]D];@\c0)A\$i]OZi763Z*:G2
+Xp;)1X/i8"W2TWn!35jos/Z1$"08N)Xo>I)YHY81Z3@SAZa7$Gr3ZU7\$u%?&@]0TVMoY,?X-`:
+=BJ^.=^:r1%9cn;>$>-6>$5$2>?=l(<<c<#;c6Li;Y<ia;#b3FC27X'DK'T9FEMePH$XjdIt3-'
+KnbA>MN!OUOHPfmQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+M\dF6Uqf@S^0
+gYCWAi8EVTj5oFckiq?slg4$,n*fc9nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s7$&=~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+7CBQ8<QUo)e@rhTOgoV28Ws.C<oPDbisR#n5DW2HPiTVSE\UnaZVTq7jWWiN0!Wsbr,
+WP6-]^Q5jJLn=O8s.&eRs.9%Ys.KCcs.].Z"/;QeV>[:hVtd4hWVWXpWs,T,Xfo"7rj)O0qQp7/
+rj;R1#dgqDZE^[?ZaBM8rj;X3r3ZI0qQq'H[^WcV\\,Ym_SsR;c-tD'j6,duo_JI[rt,2,q"4(C
+lf[Eom-aE:q>:0[rrE%Ls+:7On'(dR(sDUOaL/(H\\dC`kHMX_A:okKQC1obUS@ac'rkJC>@1cF
+>[+bO]!\rOZ*C[AYH4u(Z]+o)rTMA;^r=F<aiDNCbKJ/Vc-FMWbfRrJcGRNA`PDJb"h:nDYd(S/
+Zi.7LB4u!oCMds-EH-&AG'A1WH[U?nJV/T/L5:\EN/is]P*D5uR@B_<T:r!TV5L8lX0&P/Z*UgG
+\%0)_]t_A"_o9X9aND]NcHjnde'ut#f\5'7h;7&IiSrnYjlYail0@U$m-X60n*ol<o(2JFrq-?d
+p\4[^s7u]kqtpBjrVcBfJcC<$nc++~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+76?=mtoK8/NBn:^=ar.=s"s(h[Krc&ZkI!g?kI!g3eH[9s^G^"@TFFJ[hJ,Xs,Isuj,
+O,f66MJ76cJbt&uK)gN%KDL3"KDC,uKD^E$L&6Q$K`Qp`reU?+qhkB2rJLT4!fW+uqi1`=OHBC$
+qiD)GOH5HaOH5E^q2bQ;rf7&@r/^`8s,[2A!0R/?rfSpuPa.T%R$jD4T;/6]X0/_:]YVV2d+-h*
+gY(*'c,di<\[JiJY->:@\\,bsaNi<7fI#;&eBuUgcHXSVaMu6<`Q$$Dd*pY$gtprGi8EVVkNM*k
+kNM-mkPaTSkN1a^hr*MTk2k^bio&_mh?)Keg&'>-f\,!5gtgfDi8Werj9k&5l0@X'n*fc8nbr%Y
+o_\:bp\F[`rVhBJkl3X5^Ta8tR@9YZf:%bWLkh(rZ-RoUDGahV9lkAJ:O[b@IXZcA:JOng;c$5L
+NK&gPM26tELkUP;qM>3.NrKaPb.F[DQC+,0S=>t:R[]e:T:PtO&t>;WQ^a8&QBI>hNJi^OL5(J?
+p5&[(DeE`tC27[(DfKc<FEVkQH@('hJ:W?*KnbD?Mi<[WOckroQ^O>5StD^NUnsufWiN8)Yd(OA
+[^WfY]Y2(q_Sa@4a2lEHc-FY_daQ^sf@\g2gtgiEi8N\UjQ5OekiqBum-O--n*fc9o()DDo`"Lb
+p@n=\q#C0iqYU0hr;HTdrdk*#s7-,>~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqJ8Cp@e1Po^h\Fo'u5<md9B-lfmZtk2tdcj5JqRh;$c=f[n^(
+e'ZOfc-+6u84u]O;,Zp]r)!&`p/:]`nkpA`1GUmK3'KYo5s[b$5!M1n4?bnk4?P\l6:(N9s$I#c
+:/";97nZYV;X[H`;H*Nnr_rhpoi(ifr_`Dfr_rbnnl,E`r_reqr`&qtr`&qtqGdMpq,R5k!*B/#
+s&JttqH*Vt!*B,"rD`l!=8l>W=&i7&>?b?;?!h#MAnc$uEHZSOGB7_@C1q3h@:!/B>[:ZC@:Nk^
+D/scBG'%eHE,>Mh&8GihAS,LcB5)'rDfg,EGBj+5!.=cq#(V8TJ:W6%rdt0&!J5e"HjbCRJUi9"
+I!^3bG^'.1!d&I&rGM^VErL.YF:<>:GBeF\H[:'fIXcnIJcC<;KS>/9M2I1KMi<XUOHG`kQ^=,0
+S"-#JRfSqDrKdGL,FP!jStMgSVl?c%['d?O]">Vf]tD%m]tV7t_Sa=2`Q#s>ao9EhbK@rKb0.uP
+c-QC:$IdPWg"G*6gYCWAro!e7s5FOIi8EMMhVI#Bg"=m+e'e6Bq9K5ic-FSZcMl2idJ_Jpe'c\C
+dJqSlci;8ibQ#^5mC\Hd>Zk35>$5*W9hnDW5XnOMQT%&].P*D+5<LVV7nH9B7RfBr2Z5]H4B,?[
+<E)mr;c$=e:Jgjb"Mhdf^VB`]s1SHFrjs,\]=PP`\@B#V[^EKKZa-j@Yck75Y-"e+XK/B#WV3=l
+X8T."XU;55Y-+t3Yd(L>Zi7?/[K!]8\,!Q3\H0:Pq7$a<X,hI8?X6f<<rH/*>?k?9>?P,.>Q7n,
+=oVS5=&r@$=&`-t;c6Lj;Gd'_rD7EFBPD3sD/O93EH?5FGBeF\I=?]tK7el4Ll%%KNfT<cPa.T'
+S"-(BTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k3(sm
+lKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<gqu6NlrUg)?s+14?s*t~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lfmZtk2tabio/hQh;$`<f[n['
+e'ZOfc-+7GCNFf[Uo)\=s.oRfo:l8Ys,e1gR@7Z`VPpJlVPC)bVP^,aTqJ$MSZJlmWrB(!WW0[3
+^BD3MPC/PjT(\]WSt2IEpRhJYq4[h]r1O1dUSRjb!2f^mrMT^qrM]Xnql9[sri?4)Yd(J4Z2h61
+[/[K3ZiIH3[/792[/RB0Z2V$3['R-I[ILX'Zi7<4[^H+Cs0i`R]"Phn_SaC9cI:G$hr<e`n+6;O
+rqHF%rV,sRm-*Qnl0e*8p\TOAJcG3=2YG;:aihj&s6d:uWOBUum(]a'P'VV:@$[4L@9fP*Uo1.p
+>[1]F?s[*L\@]8[[Bd*FZ`pO8q6Q"Z-0rgg_8XO>b/_TCbfe8YcHaYWb0%fIbeq?C`PB*t]"58T
+Z*:V/Zi.7GAnPdlCM[j*E,fo?Fa&%TH@1-jJ:`E,L51VCN/`m[P*;/sR$sM8StMdPUo(&hWiW>+
+Yd1UC[^`l[]Y;.s_SjF6aN;WLcHaeae'uq"f@em4gtgiFi8WeXjlY^hl07L!m-X60n*olHncA@S
+rq6<b!;HHes7u]kr;6KkrVcBfJcC<$nc++~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lfmZtk2tabio/hQh;$`<f[n['
+e'ZOfc-+77@:sG"K8/NBmY("\s+:8d$Zg9.<IB1BIXZZkIf=[!G^4OVGBJ"Wqg]$&I?'AMNfA[8
+D0l)2on33pr.G$$s+13%s+C-#rIt6(qh5-,LPUc]M>E,/MuJV5MuSb9NVeb7O8b.@O-#G$O9Lc.
+O,oB`r/Li>NfO+"!0I/?p5]-5rf@,BqiLi@5Eq@rQC!u,R[]h=TqnK]WNEG5]"l;.db*=1gtC9-
+d)a,>\[8TDXg#4D]Y25(dF[+.i8W\Ph:pW8f@ABud/M<(cd:(hfA#*9h;7#HiSrnXjlP[hqWAUT
+jQ#7YiS`\SiS`VNhVI&Egt^Z=f`'M&fDsV(g(`;sgtgiEi8N\UjlY^hl07O#mI'HBnGi%\oC_eT
+pAXgfq>1*frVZ]ls7lZhrq6Hhqtp?irdk+Krr_]9[@@/a17Z2;`/ot8L6A1PO+)Y!?sm\EF)lA"
+9mqJ<IXb*g:/k1j;,E:3Nf8jPLk^bBL4tA<qhY</O8g@$jNP?=T9Ye5R[fn:S!oe9St;LDS=H(;
+R@'D-OdD5mrJU`5reL0&rJ>9$B4u$qCi+'/EH6/DGB\=YI!pKpJqJ`2LP^nINK90aPEhH$R[]k>
+TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcHstfeCE1&g"P39h;7)JioB+]k2tmll0@U$
+mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrUg)?s+14?s*t~>
+JcC<$JcGHDp&=pgrqu]ks8)ckrqH]lp@e1Po^i(Q..Qcpmd9B-lfmZtk2tabio/hQh;$`<f[n['
+e'ZOfc-+6u84lQN:f73giDKAJohkE\$8aP!2`N`_69mh&r]gNK5X,00s#^6C!($TN%7*<H5sn@@
+:.n;F78HbY;X[Hc;H$Ln<:a&g;Z9Vo;?0Sg;Z'Jl;Y*ia;Z9Vo;ufqq<:<i`<WH5#<r,er<qo_s
+=BGH%r`/u!5Z_&j=BAO)=B\m4>[(H<?=72QAnl7*GBe@TF)Z)9BP(^\>ZXs.>[CcE@qT\#G'J@]
+I!U!YF)l5;DJa3*CM`ue"E8C'Fa*h0s*FZkrdFcprdP?*It)opH[:$cI=-?ercnfpGBJ(PF`_YE
+EW0nXEHD)#!HWA]FVf4FGBnI[H[C-gIXcm!JV&Q/KnbD?M2V=ls,R2BOoCODPQ-^DN\?BNMi*IR
+O,oBbP*2#oQ^XG9TVSKbXKJb2ZEggE\%&uZ]">Sg^V@S#_Sa=2`lJ)"s2b\lbK\AZdF6Xtg"P39
+rn[S1rneCJio8qThqm2FgtUT;f[n^)eC2nGdf.]&eC2prdaHOjdaQ\EeGRkseGdo(daQUkd*L%`
+c-4E2ap6&0aQUU%C1$sC(gC0ON,;<a9gD-<Kg@^[2(pR=.m?*Y1c#&$(.L\O2DmW]4$5Z,<E<'u
+;H-Un;G^.dq,77,"MMO_]Y+3Ts1/`O\@B#W[^EKLZa-j@Yct>1Xob`,X7`LjX8]4"Xo>L'Y6(u7
+ZMq31ZiIN2[K3nIq7-F7!P#]=])0#<\GWo:\d#U;N-Ai@?2dq1>$5!1>$G//>6%h*>6%k+=V"V9
+=&r@$<`E$q<)HRl:f-j]rD76@B4u$qCi+'/EH6/DGB\=YI!pKpJqJ`2LP^nINK90aPEhH$R[]k>
+TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcHstfeCE1&g"P39h;7)JioB+]k2tmll0@U$
+mI'H3nF?MK!V>s_p&F^cp\jmeq>^<hqu6NlrUg)?s+14?s*t~>
+JcC<$JcGKEo`"gfrqu`ls8)ckrV-EfpAX_:o^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f[n['
+da?Cdbfe+GE-Hl!VP_k>qkO4eo:c\[OH>s#QslhjX/W%pV#I4jU^<fgTq@s[XK8J(r2]k3$,=3f
+Rrj:NT:__QTDtJ`SY#bMs.8nU!20.]rh07as.BCdUAgtgV>mFlVu<RoWVi^oWV`^pX8f7&Y->/0
+Z2_-0ZN.B3Zi@E3ZN.B3[K!W6[0<nBZEpmCriuI,s02R0r3HC1rj)X4Zhq-/ZNIVB['fk@s0icR
+\[oDe^VRh-air2_f%Jg6iof[up%nF_%K?1so^D/4lg4$.o(W$4s+14>s#9f$b/hZEs8Vr)Z`:.8
+dGWNNWQ2G]M-6.2Rp03pV5C2lWEWV2?sm;G>.M5S['[*CZF.!AXKhW.MuOd^cb@68aO&/OaiMcO
+c-ah^bK\5RaNDZC_p$*<rjr?E\$E6B[.^j)ZuoqlBPD3sCi401EH?5FGBeF\I=?ZrJqJc3Ll%%K
+NfT<cPa.T&R[]n@Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>b0/&TcdC1ieCN7(g=k?<hV[8M
+j5]4_k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`noDX=@JcG<@J,~>
+JcC<$JcGKEo`"gfrqu`ls8)ckrV-EfpAX_:o^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f[n['
+da?Cdbfe+8@VB_-L5+iEl%JV[$ufusEcH+uI"-WpIXV3C#CC]@H$4CUFnpRfJ,YN/NWXN>Eddh:
+pk&Qur.>!$r.>!$rdb'$re(!!r.PB/KnP,5Knb?]LBE?hM2;"br/1N4rJCT5rf$c7rJpl<rJpi;
+rf@,@r/_#ANfB%qNWY?(O,s7"!0-f7rf7&@rf?r<s,dMLP*;,rQ^Ic?*1EFiT:hpRVQ$`*]"lD4
+eCWL1gY1?0bf7K4\?u7@(pgW[]Y__7dFdC:j5f:\iS`VMhVHr=f%'cN(YIHrgtgiEio8nSiT'%^
+kiq?qki_0mk5OEFj5T%Ui8=Oi%Gopth:pZ9f[eX(f%8RQgATe+g^i6!ioB([jlPXfkih9rlg4W=
+!q5XMrq$3`rUpruo^q\Cmd9?+l0.<nk2tdim-sT;rUg-]"8;Kaq>U9lreCFXh93:"S!oe9rn&NZ
+O,AOIRB<*5J#&<-Bh3;cF%];YIXQZpInrj7<)QRj:6(?nMZ&>6M26k>L\lo.Ll_QEm-2j2X.P]G
+S!ot>Rf8cZS=Q7CSc5,jS!]V3Q'.JtOc><[N/<:CL@pB$M03BABPD3sCi401EH?5FGBeF\I=?Zr
+JqJc3Ll%%KNfT<cPa.T&R[]n@Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>b0/&TcdC1ieCN7(
+g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`noDX=@JcG<@J,~>
+JcC<$JcGKEo`"gfrqu`ls8)ckrV-EfpAX_7o^hYEnaQ#9md9B-lKRQrk2tabio&bOh;$`;f[n['
+da?Cdbfe*t92&+X:u"qG;Y!]^;B.SN1H7<Q2FBbt5s[b$5<_7o4Zkki4?Gks6:+!963g:]9hJ/E
+8l#@_r)32bs&&nq;H*QorDW\pqc!Gks&8\jrDN\or_ihq;u9Jd;ts8j;ta2h<W?%s<W?+s<W#nt
+<rc;#<<Z?#;H$OqpK.8nr`/u!s&];)=T);@=BSd1=]ea-=^,0=A7o^tFEi"RH$OONC1h'b>lIq,
+=U82:?tO.kF*`65I0b1FG^"=TF`hg)EWgB'FEMd+GlN'pH$FU]I=6QorI=ltrI4cns*=Zjqfi?i
+G'8"LEcH$sD@CH&EclMJG'.kJF`hm,FTHZ0rcfK0H?spcI=?ZrJ:W9'KnbA=M2I7NMi3FIKnP&0
+JUdZH#((`FI=R!*reEFgLPL\DNK0*aPa7]+T:r!SUo()iXfo"8[(!TV]"5Pf^;.S&`5]j=ai_iP
+c-ObadaQatf@\dUg&Tn,g'$*_g=b3Zg&K\'f)F5"eGn&!e,Ikseb[i&e^i:$f@SU)fDO2%e^W't
+rmNdRdEp1`bfn5OaN2E@`l,gGgN7%6=BSa/>CV3R:/F\N6UspA5s&";.Q&Y=4?G2P8k;E@77R87
+&Ni-;4Zl\D<)ljr<)QUk:espa;Z=<.])T>@\Gs&<[f<]BZa-j@Yck75XfSS(qPs:js/Z4&qlTq&
+ricC-rj)R1s0_j7rjVd7!P,`6\c0)?\[oBN\bE]8]*>gIK6q<@?N+(3>$5*7>$>21>817F>?kB9
+=]eg-='&F%<`E!p<Dl`o;>*fa:j$>]BPD3sCi401EH?5FGBeF\I=?ZrJqJc3Ll%%KNfT<cPa.T&
+R[]n@Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q#s>b0/&TcdC1ieCN7(g=k?<hV[8Mj5]4_k3(sm
+lKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`noDX=@JcG<@J,~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrqQNf!;?Eb/bJZ*o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4g*
+eC)ajcHOICDK'iSTr+^UV#[CUV>$e\U]7&+P`h/rR$XMFW2Z_mUnafcW2HGeTV%gIX/u/u!NNg3
+^'0M[GDi)crLj.`!20:_!hPsRrgrhUs.K1]s.K=a!hc6]rhKIg"/VlmVu*FmWW&jqWVidoWs>`.
+Y-+t3Yd+25r3HC1rj2X3!k#DCrNlg9Z*L^BZE^\3YQ1s-Z4+"DZ*CUAZE^^AZa@+<ZN.E3ZiRSC
+rO3WP\%0/b^VRe+aNVrWdaZh"g>:oUnFcSSp\t[#q=jUQn*TZ:pA"L_JcC<$o)CZHeB#\N`rGZ*
+bdadW]#<XXe?6f]KjKb0R%%;e>c"6pVlEs+>@:iG?!FkQ]!f#RZ*LdCYcY/+Z]"i0ldNYca2uZQ
+aN;TJcHOY\cHXVXb/qfK_o'a=`4W^n\[\rLYd*o.r3U3NB4u!pCMds.EH6/DG'A4XI!pHoJV/W1
+LP^nINK90aPEhH$R@Bb=TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcHstfeCE1&g"P3:
+h;@/LioB+]k3(sml0@X%mI'H3nF?MK!V>s_o`Fj]p\ssfq>U6gqu6NlrUg)?s+14@s*t~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrqQNf!;?Eb/bJZ*o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4g*
+eC)ajcHOI7?Y!qnJqf$KK`Hl!L$OEcK,8E@CN+<6H[UBmIXHNiI=6KiH$ORWG'<h7!.Xuu$%ID`
+O,f67[q^*_K)(&sK)1-"K)^E%K)L?$KE-`)K`?c+K`6](KEm3cLPL\AM2D4frJCB.s,6l6!/pf7
+rJgc9s,[)<!KW9?O8k=@NrY:@Ns(K&NK0"qNX1]+NfB'YN/`nqNrG(>OT(:@Oo:C>OTgo3Q'Ri+
+rg<_Ts.'+[-D$m*W33P@_T'dFe(34*f@ABtb/V<5]!erQ\@]Gg_T1!Rgu%)OroFCFio/ePgtLK]
+g]-(/h$W#sioB(YioT=ckl'cGkR6Y=k2k[bj5]+Vhqn:es4[k5f[n[)eC<(%g&B_)g]#t6h;7)K
+ioB([jo4BNkNM0qlKdg&m-X60nG_nVmf2VXkiLg]h;$cag'66ag"Y?@j8S0UkN:skl0@U$mI'K4
+nF,uEq>1!cr;M`V,kJpaU77U?RH_B2SW\k^LQes3U4&GO@S:EYF*1/P9n.P>IXh>l%T?>);,<44
+NJi^OLPLbCreC<,!/Q^9.HBaB^oX5sR[fk=SXQ%<S=?(ASt2@@S=>q6R?Wo%P`^ubNJrdNKSG9U
+M#<*EAnPdkCMRd)E,fo?F`qtSH@1-iJ:W?+L51VCN/`m[P*;/sR$jG7StMdPUo(&hWiW>+Yd1UC
+[^`l[]Y;.s_SjF6aN;WLcHaeae'uq"f@em4h;-uHiSrnYjlYail07L"m-X60n*olHncA@Srq-?d
+p\4[^s7uZjr;6KkrVcBfJcC<$o)F4~>
+JcC<$JcGKEo`"jgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4g*
+eC)ajcHOI"7S-9J;>a8];#jMD;?'N$2)I*J3&j8l5X@^85lX%W5!1tk4?GYf5sdh&62j1W6paUD
+9M@3M9MYO`r)35cr)3Jms&8kqqc!Gk!)rkprDW\ns&8nrr_rYkp/C]`r_rGg#$"W%<`W4"q,R>n
+r`9/%<E/rrs&&nu<`]#ts&K8%<E<1&r`0/'=BSd/r`9)#r`B,#-WF#C<**:1@:X"eDfKiCH$FOW
+Ec,W)A7&SD=^,0<?=7;ZEd)bRHiABqH[9s]G5cX`FpiM;G'A1VH@(!bH@5^@s*t#u!J,b"ILCRO
+H[C'aH$FU[G^'.1$Zg?.DJj</DfB];FT-F_FT-F[G5ldcH2i1:H[L3hI=?WpIt3*%K7no3KS+f'
+H?OCPF)uABEH6)AFa&.ZI=2$B#C_/RJqSi3L]3#[Mij0cPa.T'SY;jWWi`J/Za7'K\[oDc]t_A!
+_o0L5`lH0CbKJ,Rc-FY^dF/$A!7:_krQYPjbfe5Trlteqd*U4he'uptrm_M0e^i=%f%8O)f@SU(
+f%0cL'\(U]e'c[kcHXSWbKJ#KaMu3;_o)Gi"m1VI@9d"8=W*u=F]2.55X@n885M661+jn04Ztn\
+1,;Bjr^HrL2E(Os#sCCM<`N*t;H-Qn;#sHiqGI='rjN!<[C*C@ZN7>8riZI-Xf\\+orJ%mriQ1&
+ric1's0M^3qmQF4r42g<qmla:r42O4q7HX;$+mNhHYQtp=^"u)=p\G<>$>-6>[(B8r`K2%#Zar+
+<)c^p;c<Tlp.tT_C1_*lBkqL$DK'T9FEMbNH$XjdIXm!%KSG8=MN!OUOHPfmQC+)0SXuLJUSOcb
+WN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+M\dF6Uqf@S^0gYL]Ci8N\UjQ5Oekiq?sm-O--n*fc9
+rpg*]o`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s762?~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqQNf0D>)3o^qbGo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+e'cXicHOIHBleQXV>@(=V>$ebUF`49UQgq1S![Z\Vl-PlW2$/cV59u`TqS$LXK8P*X/rA&WN!SF
+^V7C>RX^RuU&LedU&CVaTDbA\T)kUWrh'=bTV2+Srh0:bs.]Ld!2BIf!2TUj!N)dlW;W[qW;`dp
+Wr/ptXT,F&Xokl3Yd+/4!42[3rj2C,rNZI1ZM:[(Y5tl2rilF.!3lI-s0D[2rj)O0,dana[C3NQ
+\$`]T]"Gem^qmq0bg+P\d*^=ngYUrOkj@s7qYg0g$2O8cp\Xg^q"ao?s+14As#9W+`Pom;`q05u
+^TXfM_r0k%['ZT?K8a0*RTa-)USjrdWEWV4@:<MJ>IqDX[^ENKZF%!CYHI]-N;k6he\K#Ab0\JX
+aN;TMcI(%cccs_Wb/hfE`QcE@]Y(hf\$E9CZ*sD5r3UTXAnYjmCM[m,E,fr@Fa&(VH[U<lJ:`E-
+L5:\EN/is]P*D5uR$sM9T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:aND]NcHjndeC<($f\5'7
+h;7&IiT&tZk2tjjl0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14@s*t~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqQNf0D>)3o^qbGo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+e'cXicHOI9?Y=1tK_gGbL$"'cK.1YREH6)!H[L9kI=6EgI=$9cG^"@TFb#!nJ:E'!J:E$.Nf]9\
+DL?>LqL\^!!/1<'qL\Wtr.=j!qLnj%re19)s+LB*"GV\fLl)%c!Ju^5M>rJ5M>N2-N;nn7NrP1>
+NrP.?NrG+>OT1CAOSt4ANfB%pNr+h9N;nn;Nr+n;NrP.?OT(CAOT(@EP*;,qr0RSTS=H/KS3EL:
+UoCE"[CX)ia3;lWeCN4#e'Z@V^V%:q_8*e#_o^9RfA,?Gk2k[`iSWSMh;7#Gi8EMLhVd>Oj5oFd
+l29iEkl^/4k2cO%%H?@(hqm5GhV?l>f\"gSec=>$f`9b'h#?.0hZ;]qro=%>!TrSEkks]Fl4!"B
+kN:mdio/eMg=OpTe/$TaeCE.%f@\g3gtgcAhr<\Wk2k^cjSn-Gj6#Rkm-X<4p%eNIs#TehYbRVT
+R@0PUi5(b=K8,M_c'O!8FAlU^9lb;J:ecCgI=?Z@:JXqh;c$;NNK/sTMMHqCLk^Y;L]!#/LlhW[
+oBb&EWhYrLS=?1BSXZ+=S=Q:ESXl7?S!]V3Pa%N!P)fO$!K)[3LA$H$M03BABP;-rCi401EH?5E
+GBeF\I=6TqJqJc3Ll%%KNfT<cPa.T&R[]n@Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q$!?b0/&T
+cdC1jeCN7(g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFA
+JcG<@J,~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqQNf0D>)3o^qbGo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+e'cXicHOI#85)`Q;Z'A[;>j>X;>jD_;%kcB3B&oV6:*q'5X@Y#5<h:p4?NO)rB^KLr]plX5u(-L
+92.B8:/Caar_iAcs&/hpr)EYq!*&nqrDNVnr_iMis&B"sqbdGn;Z9Vo;Z'Jg;YsDb<!--$<`T,u
+s&K(u!*/nsrD`hsrDW_o!`N&tqc<\t6rd2c<E<.%=&i7$='/U-='&F'=BAO'<)Z^p<EE7&='K!@
+Anc.%F*2\NG'%eCBOY=V@q&hP?X[S^Ci=B=H@(!bH$T@3s*#K.H$FOWG^4R\H[L6kJV&H'J:E'!
+J:W9%IsuclHiA=$H$Xd^GB\4RF`MMBDf9UoEW:%ZF8^4YFoHOhGBS1SG^+L[rHnHir-\iuH[:!^
+F`VM@rb_jUDJjB3rc.mY+a&!SH[U?lIslcoH['g^IY!*(KnbGCO->p!SY;jWX0/Z*YlD!.Zi@BC
+[C<ZW]Y;1r^;%Fu_Sa@5rlGDc`l,d3^q[Y`]ahck_8=.2aND`Pcd:%ddJD8ke+qMle,Ic/dEp4d
+ccs\VaiMQD`l5p8_o'=,r4k&%ie1W<>$4s1=^,'tC/n"p5X\.t83/je.P*D,5!:SU1.ar+7RT3o
+2EX)`4$6SG<rGqu<)Z]o;#*uhZi768Z*:I9Y-"h-qlBImriH7)YHRr0r3?4+rNlO2!O]B7\,Ef:
+\bEZ9\[q^LpU^(1!4qp:%&er/Cg^LN>$+p2>$:Z*(0OmH>$>$1=]SU)<E<'u;-$Rl;c-FhpJ:]`
+F_,/uBPM=!DJsK6F*)PKG^=^bI=Hd!K8#&9M2R=QO-,TiQ'[l,S"?7GU84W`W2co#Y->1;['mHS
+]"G_k^r"".`lQ6DbK\>YdF-Oof%8R.g>(N@hr*JRj5f@bkNM0qlg4!*mdKW6nac8Bo^qhLp@e7Z
+q#C0iqY^6ir;HTdrdk*#s762?~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+7ID0:8fq52K7p7rLfOdh`,@ATiuX/2_iVPL&cVPKrZSt3"^X:_S9X/i87]YD1sOE?/J
+Una`\r1a4dr1XChTV.pKT:c+UrLs1_q4Rn`Tq\:\U&UkdUBIBhV5C0dW;<LmWr&h&XKAV-Y-5%5
+Yl(g,ZN.B2Zi%30[0!\?ZMq04ZEUR:r36(%!O/d*YQ1s,ZMh'.Z37M>ZEpt<[NMue\@B)^]tV>"
+`QHBJc-O__d*pLqfA#0>j6?"'pA4d]rrW2urdk*#s761Lro:c3`l>sss7O78XgZO.man,*]7YQl
+@$[6b@U,\*V5UGo>?b9=?sR#@\\5M]['[*E['Hp<Z21ecs!?p`_SXC:d*^(Xb/qrQdF$4_cHXPT
+aNVTAc,dl;]XtebZE^X<n[/=-BkM*nCMRd)DfKf>FEVkRH@('hJ:W?+L51VCN/`m[P*;/sR$jG6
+StMdPUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkbe'uq"f@em4h;-uHiSrnYjlYail07O#
+m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6HjrVcBfJcC<$oDa=~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+79@V0P'q1e!bie7>a"`.spEH>+YHj"qHIXHSCHNe_?G]n7QrI>E.J:E*!Iu]MLNfS9r
+F+T&BK)L<%K`$K#K(susK)UE%K`?c+K`?c*K`?c+L'NEcKnY8:Lku"dreLT3MZ/J4MZ8P1M?/Zq
+repi:q2YK9!K`?<O8"_;O,].sNqeV6N;nk;Nr+n;NrG+=Oo:@BOco^-!L/oKQi`_HSGo)ZS/\#j
+StD^OV5:2r[CX/maj&5^eC;soc-=JUai=>!&'2o>db*@4ioB+[io/hPhYuIBi8NVPiSieVjQGak
+lMg,Mli-/clg!d"kN([_ioB(YiSi\Nhqm,Ag=b-2rRq5)!SQ3)gAp%-h#lNkiSsjs!9O4B''JKB
+kND'lk3(mhjQ#7YiSWMIqUu)*f\"g.qq2,+gYLiKroO1@''%s/i8WbVjQ>Xilg4*1o_/+XP5bX7
+]r7:sR2;@Ai6dpQMhRUja.Rp0OChm7:NLSN:ept<(4Uj0:JOng;,C&KO,]$SLkghDLk^Y>r/(H0
+O8gWtfYX\cR@0S7TV%dDS=?(>T:VUES=H(:R$j8)Q^*_pNK0!ULk^Y>nVI3VBkM*nCMRd)DfKf>
+FEVkRH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aN;WL
+cHjkbe'uq"f@em4h;-uHiSrnYjlYail07O#m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6HjrVcBf
+JcC<$oDa=~>
+JcC<$JcGKEp&=pgrqu]ks8)ckrqJ5Bp@e1Po^h\Fo'u5<n*TK.lg!`ukN:mdj5JqRh;-i>f[n^(
+e'ZOfc-+6t8P;fS;>a8Z;>*iX;>=&_;#rO0r\tZO6:!n&5X@Y"4[)"m4?Ybg4@2A#6:(T;!CK3Q
+:'O?d5"eUJ;Z'Dj;YEue;Z9Vi<;TVo;ZB\p;ZB\p<;fbq<;]\n;Z'Jm;Z0Pn;ZB\p;Ya8k;ufqs
+;up!"r_rr!<`f,tr`&hsqc3YqrDW\n!`N&ur`0##r`0##r`/nt!*/tu#$4o/<``C+rE')$<W5qu
+;c3Nj'3&(=?Y*ndDfKi@GBRtEDJa3(B)Z9GAS>goDfg2KH2`*mH$FOWGlE!gGlDspH@('kJV&Q0
+L5#VZ$%[\[K7SK!H?jf8H3nkCH$FRXG'7tKrc/$\FSp4YFSp:\G5QRaGQE)9qg/<jrd4Zms*Flp
+H$FRXrcS3`"Eed,EcV,"rGi?jH$k'jJ:N)uI!U'`HN&<lI1C^WK8,2?NKB<hR@B_<TDkMkU8+N]
+VPpJpXfo#-Z37PC\\,WT^_FJn\@&`N['R-I[C<]Y^;7\)a2lF$b5oi4rltJe!6tMg!mf0:rluA,
+cHOMUb/q`Ga2Z*;`5BO2_SX.*^q[\"qnE*D46)E>>Zt<6=BepUQ$-2):-_EBEC`DW681#L/3Z-L
+1G_To7n#j92`<NT4Zkkg<`W4!;cH^p;,U7f;>O/jYPt^'Xn]!sXo>L&YPtd+Z21d)[/RK3[f3`;
+\@K0F])B5@])92:](Wc9]_K,:]E#SC]F(R/J8Se#>?P'2>5h_+>5_\*=Tho2>?kA2=:J;4<`N1#
+<)H[o;,U7gnPK6sBkM*nCMRd)DfKf>FEVkRH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&h
+WiW>+Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkbe'uq"f@em4h;-uHiSrnYjlYail07O#m-X60n*olH
+ncA@Srq-?dp\4[^s7u]kr;6HjrVcBfJcC<$oDa=~>
+JcC<$JcGNFo`"gfrqu`lrqZWjrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-'U7Ed!&'q53k^qP<APrhT=cqkP[*P)u0%R&$XWX/MnmUo()eUS=KVStN3fY-"h,XK&>$
+^:q:p^P2]5Mu9FOV#$hdV#6teTa@BaTV/!PU7n<Tqk3eZpnIe`"f.ulVPg?gW;W^oWr&jsXT,C&
+Y5YX)Ykt^,ZaB\:!42O/riuO1riua5Ycb.4Yd!o+qlg++ZMq*4Yck77Z*F;6!k#JFrj<oX\%0,_
+^;%M%`Q--Fc-FY^cd:"ce(3.)gu%)PlL4EArdk*#s5j8?lFt0T`5DWQq:E<_YIrBHbeC1)TOX'e
+QC"%D@&0ZsW2HY">[(WE?X6mH^Upq^['I!FZ`pU9[/71gs!@!c_nsO=dF6=[b0/)UcdC(`bfn8P
+aihZBc,mu=]=PV`['HsAn[*IMAS,UhC27X'DK'T:FEMePH?sseIt3-'KnbD?Mi<[WOckroQ^F52
+SXuOLUnsufWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g2gtgiEi8N_VjQ>Ufl07L!
+m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$oDa=~>
+JcC<$JcGNFo`"gfrqu`lrqZWjrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-'9uA86(6q1eTsqLnTso7[*qnq7'^CMWoi'mtFWIslcnI!pHjH?a^[G'8CeJq8LPIfb.M
+O8Y(@@dn2Wr.G$$rIb'%r.>!$p4N?rre(0&pkA^%rIt9+!JcL-M>rJ4M>rG5M>N21MuJ\8NVJM7
+O-'@%!07&>plPK9rJpH.rf6l:rf7#>!K`HBO8tFBOpmP=QBmo*R@0P6S=Q8NSc5-+SXuIFTVA3Y
+Xg>OO`QQTWe^`7%e^MsoccaGOb082[eCNF3i8`hpi<%rphu;O6ir.p;jqd.Elg4$*m-X60n*]Q,
+jlGF\j5T(Wi;VU9h:pZ;p"9l0g"Y9:gtgcAhV[8MioB,!jT+H;jT+B@ireB&io9gn&`DR(i8ESQ
+j5]+Wi8N\UjlY_)kPs]EkPscFk7$VAmHsB3o(2PKq>:/Us#JiOXHo6BR$m3^fVb$nJrcA1Q]cp'
+G>N'HFE2Is:OdhAIsuoC:JOkg;G^/LOc>9WM26qELk^V;qM:44+S=='XehGSSXc@FS=5t;SXlFF
+St2CAS!o_5QB[`$PE5^&"H&%kLPG>TG%>/rBP;-rCi4-0EH?5EGBeF[I!pKpJqJc3Ll%%KNfT<c
+Pa.T&R[]k>Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q$!?b0/&TcdC1jeCN7(g=k?<hV[8Mj5]4_
+k3)!nlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcG?AJ,~>
+JcC<$JcGNFo`"gfrqu`lrqZWjrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tabio/hQh;$c=f[n['
+e'ZOfc-&OH8P2`Tr(uu^r)!DhpJC?Vpepud!];_hr\ssH69tN9s$6TK#!P144?GYer'LEL$U@$F
+:JOYZ:+_l0:]+,g;#jMd;#jMk;ZTirqGd/erD`,^!)i_nr_i\n!)iSj!E<(s;up$"r_rnu<rH%u
+<<#r#<)Z^ppf.;nr)<Vm!`N&ur`0)#<)rous&K&!qc3Ytr)ah>>$G04=BAO';c-Cg:/4S^;cd10
+@q][uFT-FsF`VSADes0#AnYmmCi=?:GBeI]rHSHhGBa"1!.+Wk#CM#OJV&W3M#N,8KnkJ=KReJs
+H$T@7!."Qgs)n]kFEDSEEcZ>EF8^1]F`dV+s)n?bs*+Her-8?iH[Ga<rd4Hg!.4]ms*Y3$IXQTk
+H[9saHiAEmHOkLPIXm!#JqJZ+J:N3&Jq<oO)2!WsL51VBMi<XVOcbfjQBml*S=Q:GTq\=]V>d8!
+V5UK"Za[KW]XkY`[f*T5[19XS\%0)`^VRh+`5]d8`r<pX`lJ%tqoA`V#K=^%_o'@._>_1L^AGVD
+^AknH]_oJC^'hTe]tD#3Vf6'L>$(]*0r&Z9>>n9^6V(<M765<B.Q/_>4Zb;Q8kDNB7R]9p2EX)b
+4?QVE<`E$r<Dc[m:essd;ZBVmXoGL#Xo>I'YPtd*Z2M!+ZN.B0[/dZ7\,No:\biu3]DfJB]DfJC
+]DoJ?]C<K5^%]/T]r%`\DI6XP='8^0>[1K:>?Y69=]nr->6\52=B8I(=8l2)<)H[o:fC7inPFC>
+AS,UhC27X'DK'T:FEMePH?sseIt3-'KnbD?Mi<[WOckroQ^F52SXuOLUnsufWiN8)Yd(OA[^WfY
+]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g2gtgiEi8N_VjQ>Ufl07L!m-O--n*fc9o()DEo_%nNp@nO\
+s7u]kr;6KkrVcBfJcC<$oDa=~>
+JcC<$JcGNFo`"jgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0m-<j"kN:pfj5T%UhVHu@g=Y$-
+eC)akcHXOFCiFWTo;;D]p8%)PqP<k^)5NLYSXQ$WU8FojVl?PiV5L2eVkB]STWP?qXT,C(X/`6!
+^)"JOT7E-'Vl6MjVPU,bUna]\USO]\U\pkcTa%6bU8"EXU&:S[U%b8bUSXibVl0?hri,jrql9h#
+Xf\c(YPtd+Z1bL'Zi.62Zhgs1Ycb15Yk>3tYl:mLYck75Y-5(7ZEggD[C!?M[^WfX]=Yel_8F73
+aihoQrQYu#d*gFof%8R-gYV#Wnb;q[JcC<$kl3X3]u7k,_Z09-lcuo?^<u&hfWi2[@pY7)R%.Ag
+Uo'udVlO!*>[_&K?!FhO\[JoQ['R0IZELC8qm27]*UMS#_T0mKe'6"XbKS>Zda-4`cHOMRb/;0C
+aN)$o]*,UMZEUS&[/X]TB4u!oCMds-EH6,BG'A4XH[U?nJV/W1LP^nINK90aPEhH$R@B_<TV8-V
+VPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcd:(geCE1&g"P3:h;@/LioB+]k3(sml0I^&mI'H3
+nF?)?oCMVRo`Fj]p\ssfq>^<hqu-HlrU^#>s+14Bs*t~>
+JcC<$JcGNFo`"jgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%UhVHu@g=Y$-
+eC)akcHXO9?Y4(qK_1#rL%^2rL%L&pKD's+D/434F&RC4It)orrd4isH[:$_rcS<mJc(&uIgLXd
+NfT3\FaS+Tre1-#rIjWlrdt!!re1-%rItH/L5(J>qhYE2M2I2iM>2u.MZA_6NVAJ/O8=t8NrY45
+N<#";NW"n8O8k7>O8k=DOHG\'P5gajQ'Rc(R$sM6S=H.?SXc4>S=Q4BSt2FEU84ZdZb+)obKnT7
+dKS%Fd*9eYrlGVmcICM%hr*JPio8hMg\fh:h;7&Hi8WeWk32'plg4$<mKW(EkN1dbir.mAjPo+S
+gY1?[f_sG#f`0Y(g()lnh;6uDhVdAPioB([j7_L3j8S-=jT+HBjU:/2jlYagjlY^gkN;d*!9X:D
+rosIJ"75FCn,;Y[nFQ;Fp\=R]rK.%?hoN-iR$j>1nA!YgToXegR'W0VIu82B95.+AF\GS[Isl`o
+Inid8<E)mo:lLBnN/ELJLPgnDL4tE[Ll_QapY!KgVOEsDSY2[HSXl7@StDXHSXc7@S!f\2Q'mo$
+OH,9ZMM[+DL@C$!ASu-oBkhF#DJsN8F*)SLH$XgcIXm!%KSG8=MN!OUOHPfmQC+)0S=ZCIUSOcb
+WN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+P]dF6Uqf@S^0gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9
+o()DDo`"Lbp@n=\q#C0iqY^6hr;QZdrdk*#s7H>A~>
+JcC<$JcGNFo`"jgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%UhVHu@g=Y$-
+eC)akcHXO#7nZQO:Adr[;>X2c:]4,W;>3ri;)L0/3!;0+6:!m962s1L4p=)34ZtkgrBgNMrB^cc
+:/4GW4%;q?rDMuZs&/VjrD`bps&/_mrD_rYrDEet<)cdo;YF&b<;T\q<!--$<`T&rqGmGl##\;q
+;H$Oor`/tt!*0#!s&K)"r)E_tr`B&#&6W1@>$4s0='&F&<E)mp:f.-h%oZM6@:s=mE,fo<Df9N2
+D>n8kB4Y[gCN+B=H$Xd]H$OUVFE;JDFEVkPG^+L\I!pSEL&Zf1L51M:JUMnDH4,(II=?TkG]n4N
+FE@D$r,_m[rcS6ar-/0ds*"]nH?sj_H?jf8HN&6lI=D*B!.Oot$%[VWJUrE)JUr@MK)L9"K)UEY
+Knb>;Ll%"GLPL\BMMmFRO-#KePE_>uQBd`%R$sS=U8+Q^W2Q\qX/rJ-YHtUE\%'!J]DoJ@\c98?
+]DoMP]tV7s_83q'^q[Xu^&GbF]aqim^q[\#_8*h#^:V"f\[_XJ!4Mm:rOMm<"M;7X]=dpN"Ot)*
+@U&h61g+"_?Ai;r;*[WA;F=2>4YJ<51FtXN0/H0k7S$!;3&WZV4?GYf<**(!<Dujr;c6Ii:f.*g
+s&&fus/uC*rilC,s0D[2r3ZC0rjMg8rODm<!4qg7qRl^=rk/9C!4r$=!5/9Brk8<DrOr6D!58<C
+qn;pA%^Mg_E*usT<`iL.>[1H9r`^7G=^#$5>?k?6=BAR+=&`1"<)H[o:K(.g;=RK_ASu-oBkhF#
+DJsN8F*)SLH$XgcIXm!%KSG8=MN!OUOHPfmQC+)0S=ZCIUSOcbWN*&%YHY==[C3TU]=bkm_8=.0
+a2lBGbg+P]dF6Uqf@S^0gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6h
+r;QZdrdk*#s7H>A~>
+JcC<$JcGNFp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOIIC34f]VPj'`r2'(^mA9NPqkY'lOIDQ(@&Kp"Wi)biUSaoeU8aiZTV)4c&$)e6XK8J&
+]=l"o^liemV>R7mVl'EhrhTRj$)FDnUSOZ[U8"@\UAq"gU&^ncTELs_U7n7ZU&C\cU]-tlUSO``
+VPg?gW;`auWiN2#rN#t"!3?+#!NiO&YQ(g/YHY79pp0h(rj;[2rj)R.s/uF,qQBn%rNH"#s0!cP
+YHP17Z*L^B['d<M[^WcW]">Vg^VI_(a2lBEb0/#RcHjhadaA'B$e3e^h;IAXmdp5Ordk*#s6K[f
+^Vdq+_Z'Qgl,gcD[`mguaK;M_H@h&_R$q2d>c4KsVlQe#>ZtTG?!CIE]=58V['R-IZ`gI7qm27]%
+IDij_oL!KeBQ.YbKS?4dJqN*cHXSUbK%TIaiM60]">GYZEUS&ZuBPeAnPdlCM[m+E,fo?Fa&(UH
+@1-jJ:`E-L5:\EN/is]P*D5uR$sM8StVmSV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:ai_fOcHstee
+C<($f\5*8h;7)JiT&t[k2tjkl0@U$m-a?2nF5u=o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+14Bs
+*t~>
+JcC<$JcGNFp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOI8?taD$K89)Rr.Xfsqh=Wpp4N6q&oDE(E,nm*I=-NnIX?EiI!g3drc\HeJ:W:KJ-g^a
+NfT3]F(fZJr.P!#qh4p#!/0Wis+L0$rIt?.M#<,0M#W>(MZ/M6N;S\5NWP3#Nr+k;OSk1:OT(=?
+NqeS6N;JV4NWG3&rf7&>rf@#>qi^rB#*bC=R$jA2rgX"YSGo&aS=Q4BSt2CArgb4*Uo18u\%T]!
+aiV]KbKeGZcH=2H`5g*Ke_/d:hr*AGg&BSCe^W$qe'lgsf@eg2gtprIioB+]kNCpcj5f=ak5FBG
+j5JhKf@S[Sf)XD#fDjJ'g&0P(h#6%7hr3SRiSrnWir7j;iS`\oi;V^8irS6&roX7Ds6'IGroj@H
+s60RJkPXQDl2KuJlN?MAnF?MM"nhT`q"t#Is#TAda-W-]R%!X(hRf8EJrH)$`g(t'Tj_AC9lkAK
+:elLhI"$Qq:Jaed;c-=eNfK'VM26tCMMQt?LAQdfrtG=c_lfi+S"-%CTq7jHS"6.CT:Z%Qs-sUe
+R[9;,Q'IMnN/`^OLPLWRLi?m9AnPdlCM[m+E,fo?Fa&(UH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8
+StVmSV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:ai_fOcHsteeC<($f\5*8h;7)JiT&t[k2tjkl0@U$
+m-a?2nF5u=o(2MQp&F^cp\jmeq>^<hqu6NlrUg)?s+14Bs*t~>
+JcC<$JcGNFp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"4j+
+eC)ajcHOI#8P2ZN;,R9go25B]ohYQ`lV[OW.5Wh>3&``_5s[b%5sRUu5!D+l4Zbbf6:!q'5XIb'
+6:"@@:/"GH92/:];X@9Z;YX2j;ufkq;Z0Po<!$'!<:Eid<;KPk;?Tot;c?Te;uKYu;c6On<;KVp
+<rQ(u;ZKeo<W5tq;Zous;H$Nm<<-"t<<-(s<<H9%<EB$!#$G,5=^,'4r)`r#r`B5&<E9#ss&(+A
+<`iX7@qTIhBPD3sD/O3,Bk:gbA8,n$Fa&(SG^":NDf9T6qedNpE,p#DH$Xd^H?sseI=-?cH$asg
+IXQWpJ:;iiG&hYFq/ZLV!-J-]!-eEe$$UW?H$=LYH?sr;Gli;;HN&6mI!pGAIKP(MJV!`Ns+:H-
+KnP,3rdt'#re(N1L51S@MMmDlN;nnBOHPflQ^F6@Ri7ffSXuFGUSXicWN<5)YHP18Z*UgG[^`iX
+])B5E]">Pc]=S!R!5/3@!5/<C'"YWb\@B#U[^NTQ[^WcW]"G\hrO`6D\@8pG[K!T6[JmT7\,!N:
+\[]/[])K8<\gtD2c$Eo6=BJ^/>-<aD?r^/k6q0sr6TR;/0.f%44ZkDS1It#,7R]d+2E(Iq$s-A,
+<Dujr;,^=f9i:jes&&d$rj2U2rO)F0s1&'=rjqp;q7QC6s1A?FrOi$>s18*>r4E$Cqn2g>otLF?%
+(;pfEFE0X='8X/>?q/2s',M.(KssG>$P67=BAU+<`N+!<Dljq:K(.g;=RJ%A7]@cBPM=!DJjE5E
+ccGJG^4U_I=Hd!K8#&9M2R=QO-,TiQ'[l,S"6.EU84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9Eb
+K\>ZdF-Oof%8R.gYCWAi8ESSj5oFckNV6rlg4!+n*fc8nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdr
+dk*#s7H>A~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOILDg-_tor%edq5*k^m%s9Ks-4@]S"#qBVPpMoVQ-JiVl6MjUS4?SYH@f*'s=[?X/iqJ
+]tV:Aqfe!tW2ZbpW2HNeV>mFmV>d7nUSOZ[UA^kaU&UhhTqJ*Qr1a+a!i;ckrMTOks/?!uq5aCo
+s/l("$F$e@ZEpjAZ*UdBrNlI0s0Ma4!jf2;rNQ7(!NrX*Y5YWtYQ1m+YTC'TZEppF[C3NQ\@K/^
+]=ktp_84(/`Q#s>b0/#RcMl-&cHjhadF6Upe^rR6jQc1(p%S95s+14=s#@^-_Sj=ks763-c`FLm
+jQkBnZd#n#MHcC8RUTKtW26JoW`r_4@UNPK=M)8V\@&]MZaI0FYH>)-Z]+o1le9Fua3;r\cH=;Q
+cI(+id*^.ac-4>Qai)EHahbX%]",2RYd!W(EFWNjAnYmnCMds-EH-&AG'A1WH[U?nJV/W1LP^nI
+NK90aPEhH$R@B_<TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P3:h;@/L
+ioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu-HlrU^#>s+14Cs*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOI=@qfk/onWO$q1\TsqM"Nonq.3dD/=96FF/FcrI+`ordFfn%=*2CGCb<qJ:W9%It3(J
+NWbDWc"_J$L&Qc(KD:*"KDgH'KDpPpKE$VuL&Qf.LPUcbM>i>2M>)l/Mi<VoMu&G5Nr=qBNfT6]
+O,oBarf@#>qiC`:qi(`;NK&mUrJgi;qiC`<rJq)CO,oBbrK@,Cs-*\PQC+&+RJiQTS"0GJs.07]
+S,Sp,R[]k=S=cRTXKf1C]Y;5%aN;QHaMl'9`lcQSf\,$5g=Xs)e'udibf]q,+NV[Hb0/#RcHt%h
+eCE(!f%A[2hVdDPi8ESPh:pW6f@TiLs4@;(rn7A,rnI\5hr3SSiVha=i8<JMhu;R4i<A6$j5oFc
+roX@Hl0/-2!p]%8qrn+GrosFI%dWKKmI'K7o_%qPq"ajeM#TR&ccMK?R@'E9j1O'6Sq;W[Ximbl
+L9ZkEBh<AfFAYe^IsulsJ5/m8<E)mn:QCNrMi3IKL5LhCL4tE\LlVK_hScXoS=?%>TqS'LSXZ1B
+T:hdJSXc4>R[TV1R?j,$O,f0WM2-k@n;)'oA7]@dBkhF#DJsN7F*)SLG^=^bIXm!%KSG8=MN!OU
+OHPfmQC+)0S=ZCIUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+P]dF6Uqf@\d1gYL]Ci8N\U
+jQ5OekiqBum-O--n*fc9o()DDo`"Lbp@n=\q#C0iqY^6hr;QZdrdk*#s7QDB~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mdj5JqRhVHr?g"4g)
+eC)ajcHOI%84u`Tl;@OWo2#6[lVS!H1G^sL3'oqt6:(T9"$\t655m\Y4$5hr5XIb%6:!q):JOYZ
+:Gd5hqGQ]Xr_ibnr_iMir_iYm"&r9$<rQ%u;uKVh;uK\m;uKVo;uK\m;ZKer;uT\p<<#ku;H$Qn
+<W5tr<W?%t;uTc%<)lpt<)lptr)3\q;,^Hn<rH%r<X)Q)=&r@%<W6#&='/X/=^(f-s&]8(rE'/)
+>$4r*<ZtF@;Gp@i<**4,?!q,QC2.O"C1q0h@q9:iDKBuFFEDPBrbicnBkV*kAn>L`AS,UjC27X&
+D/O6.D/O<4Fa/4Zrd"cqH?aUTEcD"tqf;^Xs)e6_!-\?c"*f*:HN&-kH$Xg`rHSBhrd=ZmrdOis
+s+16%rdk-&r.G0)KS+sWK*$XWKDpN*L51TaM@kf,NK9-^P*;/uR@9V8SXuIHrhBFf(8[t/X/rJ.
+Z*L[AZa@0N\[f;^\[]2[qRHX<\c02?\Gs#>\@/mG[f3ZQ['R*EZEpmE[^NZS\[oAa]=bbd\@B#W
+[^EOB[f<i2\Gj&<\GEcu]=?.6BP1IN=Beq7RpCeG=$],B9n6)$4``n@2(:aQ4#8Wa84Q0=7Q<=b
+4?Pbh4',E^<)cdr;,^@ir_WSls%rd)rO;d9"1bqO\biu:])]MA])]M>^%f>@^](qI^&>V?]DfAG
+]=PVd]"5NJ]`5\B^AP\E^AG\A^`U+fN,iE6>ZY$1=^,-7=^#$6>[(B7>Zk98>$4p.<EB&u#?+W$
+:K(.g;=RJ&@q9._BPD3sD/O93EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(CTqeE\Vl?\t
+Xfnt7ZaI6O\\#Mg^VRe*`Q-'AbKS8Xd*^=le^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8B
+oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@JcGECJ,~>
+JcC<$JcGQGo`"gfrqu`ls8)ckrV-EfpAX_:o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-'X6EHm22W2T?dqkj+a!2T1^r20@fpS8UjOI;W,@\]p#WMZVlUo1,fUoC#]StW=dX8oF&
+XUM;2]tD(o^5JD.QDgb]WW/prVY[.dVZ3IoUnsmaUB%%fT`Us`U\phcU&h$`r1a:gV>[:kVu*Fl
+W;rssX7r^qXoGR$Y5tl4rNcU2ZEpn:Z2q>=rNld8['[6JZa0P6!3uO,qlTq&o<A.ts0D[2)mm#\
+\%&uZ]">Vh^VIY%_Sa=2`Q$!@ai_fNbPo`dcMl0&cHOPYd*pY)j6#Umn+6;MrVZZl!W;o^rrE&t
+rVukJs-E[E`PB@/_SZ?GrPZptZ,,Acd\*DOU1[hmR[BUL?DOKqWMlh#>[1`H?X6mI]XkS[['[0I
+['Hs=Yl(hdrrMK@rl?5,cd^7_bKSA^e'udjbg+GVb0.uIaj%rG]Xk\bZa6m?p9a_)EFNHiAnPdk
+CM[j*E,fo?Fa&%TH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8StMgRV5L8lX0&P/Z*UgG\%0)_]t_A"
+_o9X:ai_fOcHsteeCE.%f\5*8h;7)JioB(\k2tmll0@U$mI'H3nF?&>o(2MQo`Fj]p\jjeq>U6g
+qu6NlrUg)?s+14Cs*t~>
+JcC<$JcGQGo`"gfrqu`ls8)ckrV-EfpAX_:o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-'6rA864;Lkt\YqhFj!!/10%oRudf#&\0rF)k3*rdOlq$\!GOI=$9fGBn@UJbss,IXlp.
+NK9*ZD0p5NKS98Wre(9(qh+s'pOr9nre(N/KS5&4KnY9WL&Qf.LPUccM>N)/M><&+MZA_3N<#"<
+NW5"AO,f6]O8Y.?O8Y1>NrkE(O8b1>N<#"<NW4t6NW"n8O8k=;NrbB)rfR&@#*kL@QC!u,rgEhV
+rL=(_S=H.@S=TYL&Y#2UR@B_>V5^Q!Z*_$R^r4+h^]hQla32fUrmUnq+OSQ^cHXPS`l?!8_83q%
+^qde(`5T^6_oKj@bK\A[daS3F!7UqspsfJtf@S[Sf`9e*g^W)rhVdAOio/kUi8EMLrSRV4s5=:D
+j5f=`k2tjjkl0fIlKS94!9sCGrp0UNrp:'\n*oo?pA"IZqu)<M!qOdVrKoF0Rd%f?R%Bb!OJBsj
+It!N);bLhIF*(&NIslcqIt19i:KCFn:f*15NJi^PLPUeDLkg_?r.pC5$K/n-Un+!FT:hmMrgj(]
+"/)?[T)P8iS=5n5QC+#(PE1``Mhq@fn;)'nA7]@cBPD6uD/O<4EccGJGBnL^I=Hd!K8#&9M2R=Q
+O-,TiQ'[l,S"6.DU84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8R.gYCWAi8EVT
+j5oFckiq?slg4$,n*fc9nac8Bo`"Lbp@n=[p]1-hqY^6ir;HTdrdk*#s7QDB~>
+JcC<$JcGQGo`"gfrqu`ls8)ckrV-EfpAX_:o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>f[n^(
+e'ZOfc-&RF852iV;Gus\!)iYjqbZr]qbZf[(,[p,3&ii`5sdh%5sde$5<h:n4ZtkhrB^]S6:*t)
+5u7JS"AUpG:f.!ds%rboqG@5jq,./iqbd>jqG[Dls&0)#;cH^r<rQ)"<)``npJV&kq,@8j!)r\m
+rDW_qs&8qq!)r_nrDihr#usr(;c?Xo;cH]n<<#ns;ufqr;ZT`nr_rhsr`0#!r`9"urDiu"<)iit
+!EWD$=TVc0=Su;)>$G-5>5hY==BAO&;,9q^:fUS!=^,3@A7fOgAH$$f@qKImE,ff7E,TW3D/F$%
+B4b^b@:3JM?=%#J@:EYQ@:3PUB4u!oCi+(hDuXeVDZXlrE;OVTErL.ZF9$L_GQ2mkGBeCZH?oF7
+s*4Qh!.+Tj"+5HDJ,XutJH16"Jc:95KnP,3K7nl1K7ei1KnY8:L]3/1MB@b8NfT6_Ocu&rQ^F20
+S"H@HU7n<UUSarfWN*##Y-.c-"0o/<[/RB4['Tb=!4DO-rj2X3!4Dg5rO)O0s0hp9s0r'>rji-@
+])B,?\%&pH\GWo;])T;@\GNi8])K;H]Xteg`IV`2r`LXR=]hA3Hqm[@5XS(m8O>F'1Fjh.5<V(]
+1J12.7n,m)3&Wi[4?G],r`'5';cH^p;c-CfrDNYm!5&3@r4E!Ao=b.;otUO@rk/BG]tOEXq7H[<
+rk&*>r4DU7qnE'Es1nZLqnW3Is2#S\R?;T#?<gQ7=BSj5>?P-6>[(?8>$G,.>5q_-=&rF&r`/qr
+"Ai#p;,Qj[EFNHiAnPdkCM[j*E,fo?Fa&%TH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8StMgRV5L8l
+X0&P/Z*UgG\%0)_]t_A"_o9X:ai_fOcHsteeCE.%f\5*8h;7)JioB(\k2tmll0@U$mI'H3nF?&>
+o(2MQo`Fj]p\jjeq>U6gqu6NlrUg)?s+14Cs*t~>
+JcC<$JcGQGo`"jgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXOHBm"`[q5F+enttoQpSRY\.@#p`R[@H\W2?SoVl-DhW2QMiTUqaIYHG"0Y-"h/XhDB\
+^;%IVG(c[gW;WXnVZ*FjV?!OlVZ3LmV#7"dUAptgUAgkdUAUecU]@7iVZ3RiVuWgqWrK-rXT,@#
+X8oC%Y5PO*Z*L\4ZN.B3Zi.92[K!W5[K!Q<Z*:I;Z*:F8r3$%&ricC-ricC-qlp+*r3@9J['d<M
+\%&uZ]=bkl^V@V$_Sa:0`Q#p<a2lC$b5]X)bg"ATbfIoLcICP%gtq#OlL"!,n*oo?p%J1Wr:0gd
+rW)opr;Z]rr;M9IS,YLo^VRk+_Z0Z'f='85`RjA-WjC*?J6S%@S"3bkUo(&gVlO'->?YEC?!CIG
+]=>>VZa-sGZE^U:ZMh+grt4VPai_]LcdU4`bg"Yee^W$orm(Pe&';u4`m2`H]t:qf[Bm*AZhLj'
+[<?%jAS,UhC27X'DfKc<FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StD^OUo(&hWiW>+Yd1UC
+[^`l[]Y;.s_SjF6aND]McHjnce'uq"f\,!6h;7&IiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%P
+p\jmeq>^<hqu6NlrUg)?s+14Cs*t~>
+JcC<$JcGQGo`"jgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXO9?Y=1tL&-W$L[p2nL$"$rDea?5E`7C8I"-Wprd=ltI!L)<Fp)r=Jq8LNJ-_0pO,f6]
+H"_6rK_pK#K`$Q!K_g>uK`$Q(L&m!]rIt6*!f)Sfqhb<.s,$`4repf6qMPB5NW+n5N<#":O84n;
+OT^c,OH>OtNrP%<NW+t<NVnh8O8b7:O8b7@OoCOCPQ-mHQ2d-QQ^F//S,/WUS"0GJ!h>aJrKnRm
+StMgQUo(/pZ*CXD\@T;b^:qD"`lQ<FbK@uNrlPJfaN)<<_8!b`^AkkL]Xteh^])"[_8=+/a2lBE
+b0A8ZdF-LneG[ntf)=26f\5'6gYCWAhV[8Mi8ESQi8EMLrnm_5ro*k9#3=n.k3(pkrosCHs6BjT
+lg*p'm/H8Qlg4$,mJcM[nF?,Dp\=U^r;MKO48%+>S!KD.R[Wg,[&8n]JsMnAVM0`-F(.XS:3:SN
+:k*tCI=?ZA:Jaec;c-@eO,o6XM27"FMMHt@L&?agrtXeui5MjqSXZ1BTV8!KSt2OITq\3Orgj(Y
+&"8lPQC*r$OH#6YM2-h?L[^+C@q9._BP;-rCi402EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*
+S"-(BTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF$Fme^rI,g>(N@hr*JQj5f=akNM0q
+lg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s7QDB~>
+JcC<$JcGQGo`"jgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$-
+eC2glcHXO#7nQNMr_i2^pJUlcr)!8dpJCQ\$oKh"3&if`5s[b%5XGB6)*U2H4?P\f6:!n&6:*t(
+6;L?N:/4SM8kr7U;Z9Pk;XmWa;ZB\q;ZBT&;H$Ln<)Z^p<)lpt;uKVe;uT\n;u]hs;u]hd;u9Pj
+<<-"t<W?"t;ZBYq<;oer;Y<rj;H$Onr_rr!<`T*!s&B"ur`0)#<)rou!*B,%!E`M(=o_e)>5qh,
+=r:IK>?Y34<`W-s;,U@o=&r@(>$k`H?t!LB@ME?aAnYppCM[d$Chma!C27Nq@UW^E@N&`b?XR2F
+>?kKC@:3MP@Us(_B4kmmCi+'.E;a_TE!pZ,EcH,@F`heJG'<k/!-nKgs*4Ng"*f*8GQ)jdH2i3j
+Hj"nJIt3(JJc(/uK`-NUKS>,8LPUeCM27"GN/`jYOH>TePEhE!Q^=24St;RITqS3TUSO]\USXic
+WMuosWs5Q'WMur"Y5PO5Y-5"3YHY77YHY47Yd+/5qm?@1)n*/^[^W]R\%&rY]",A_]",>]\@B#W
+\@B)[])K>>\biu<]E#YA]HG=LCL1+E=]nj/YEW*d9j'_P8RkRb3c-Z,,W%):4"rGh8HVIP6oY*'
+"Znh.4?Q^E<"Do,;c6Oi;,C+e;Gp@h]Y+*Sp:g=:rkSNJs1SQJ^:sT[rk&6CrOi'?qRZR9!5.s;
+s1\-?rP/ELqSN9M#dSrDF^eW]=BPQ,&6rFB>?b?:>?kB:>ZtB7='>N($<C/-<`E$s;,^@imne1;
+A7]@dBPM=!DJsN7F*)SLG^=^bIXm!%KSG8=MN!OUOHPfmQC+)0S=Z@HUSOcbWN*&%YHY==[C3TU
+]=bkm_8=.0a2lEHbg+P^dF6Uqf@\d1gtgiEi8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\
+s7u]kr;6KkrVcBfJcC<$p&BO~>
+JcC<$JcGQGp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXOLCj(5fVt-ecVsUAUV=US^V$NBPS"#pWVQ$KmW!fN#Vkp;hV5C#\T<J0os/l=&#edsb
+^qYrjGDlHu"/r2tW;3@hVZ*LjVZ*FjV#6tfUA^bcUAUblUnsobV5C,fVZ*LnW;ijrVuWgqWrK-s
+XSo1"XT#@%Y5YU*Yd+25s0MF+rj;p:[C!?KZi%*.YPt^)XT5O'YPYR%Z2UsEZ*L[?Z*L[A['[6K
+\%&rY]">Vg^;%Fu_>_:V_o0L4`l?'>r5el\s2kqpa2cBKd*gCnf\GBAhVR2MjSe9TlKn!0o_8.T
+q"X[]r;?Qos8Dlnr;c`oqZ$EnrVhBJSGtUs]thM%_uKc+oXF(d_:.T#]rfDIBSDCQQ^V,f?)OTt
+VQ6\">[(ZG?X6gL]=GGZ['R-JZa$[8ZM_%grsS8Kc-FDUd*^1acHuR@(t@!\dEg+_bfe2L`mMrM
+^Uh+h[Bd'AZF0J7qR(-K@qB7bBPD6uD/O<4EccGJGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,S"6.E
+U84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9FbK\>ZdF-Opf%8U/gYCWAi8EVTj5oFckiq?slg4$,
+n*fc9rpg*]o`"Lbp@n=\q#C0hqY^6ir;HTdrdk*#s7ZJC~>
+JcC<$JcGQGp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXO<?tXA'L@pB"L[BiqL$+*iDf,Jp$<)A&IXHQmI!gBjrd+osH$FL`J:N3%rdb#urf./C
+Nbbn8G5[*^L%^2uKDU>uL&Zi+Ka!3bL5(J=reUE-"GhnkMMh(b!fW+urf$i9r/U]9q2kT<s,d8A
+s,R)>rJpf8pl><6r/go=s,R#=rfR5Drfd>G!1!PLs-EbSRf8fRSGeu[S=?#IRLY^RS=H.AStMmV
+VPg>kXo5F-Y-5.>\@]KS^^7ck_8F1/`5BF+rP&<F!5&3@s1JrW^V@S$_o9X9aN;WMcd:);dKA"L
+f%0iPs4@>)rn@k;hVR/JiSi_RiS`\QrSRS4s5F=Eio9"ZjQ>UfrosIJs6K[L!pf4?rp0XPrp'UO
+mJZG[n*oo>p%J1VqY^>Hs#SlMT9be0R@3a/]>fr@K9Ve7U6'elE`6F]:NUYO;,;[kI"$Qq:f'nf
+<)QOhOH5BZMi*:GMMR%DL&6[ersIc*YGIe]StMdLTDkG]T`Us]T`1JoS=>q8R$F/,P`Ul`N/NIG
+LPPATCgpmcAnPdkCM[j*E,fo?Fa&%TH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8StVmSV5L8lX0&P/
+Z*UgG\%0)_]t_A"_o9X:aihlPcHsteeCE.%g"P39h;7)JioB(\k2tmll0@U$mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>U6gqu6NlrUg)?s+14Ds*t~>
+JcC<$JcGQGp&=pgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXO#8P)ZQoMPK`s&&5_rDEJh!)N2_r)!eZ1cIBR2a]r!5sbK8!'gEG#!G.54$c.tr]prZ
+5XIe5:/+JY1L<aNrDEVomo&@H!)ibor_ru"<)cfp;ZB\q<;TVm;?Tot<)Z`n<:Nod<<#ns<:s5k
+<;ohr;ZB\n;YO)i<;ff$<)lt!<)lrt<;ol'<`N+!<E<+"<rQ5#=8uD'>5_\*>5qh,=TM`3r`]V2
+=]ea+<)lut=;4nC?!UW;>?tQB?!LT=>[C`GA7fHQAKtf"Bkh?pARo:^AS,Oa@:3MO?t*ST@UW\U
+AS,OcAnYmoCi0/hs(r'[Df9T6EH-#>F8g7^Fa!b.rd"Kf!I&edGPuahGBe@YHN&6nI=Hcurdt$"
+rIk*$&;5akL51P?LPL\AM2I7ONfX1&$^6g?QBmo*R[]e;Sc52eT:V[ITqS3VV54*fs.fgnUnjib
+W;WarWs>`,X/rD)XKDK)"g>28Z*LY6ZMh*0[/RE2[/[Q6[f<i:\,a);\Gs&;\Gs,9])]GA]DfDA
+]DoPC]`>eG]IU\1O`4]1=BS^->-aT(Bh`/)7n?WP6odUg.kEP05<LST2+L2.77B[+2E(Iq#usr)
+<)cdq;H$Ej;?'Pn;>\*#^])%J^\bbE^%o>=])]G;]CW]3^AYhF^AYhH^A#GA_>M.X_nMk1G@Xr_
+=]Sa3r`^7C>?Y98>?kB:>ZtB9=]e^,=BAL%<E)gp;uTYp;=ICu@Uit]B4u!pCi+'/EH6/DGB\=Y
+I!pKpJqJc3Ll%%KNfT<cPa.T&R[]k>Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q$!@bKJ/Ud*^:k
+e^i@*g=tE=hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhrqcQirqu`no_sFAJcGHD
+J,~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHKa9Ed3/,nYl,Yn>?,[n"pqfOd_l0@\os#XJ_qoVP^8iVlQPdTV/EhrN-"$$*:nS^;.D]
+R=(G$VuN^gVuNXoVZNfpVu!:hV#[=hU]7%iTq\:[U]R<eV#@1eVZ<[oW<&rsri5suqQ0[s!3H1%
+s/u@)!3lF-s0MO.s0Ma4"1>MC[JdK4Zi@91Yl:j+Xob`.Y5YX(YQ1m+Yl(a-Yd(J4Z3%;:Zi7?2
+[K!ZA\%9/_]Y2%o^qfob!Q)bR`;ddW`lJ&!s2k;^rl5>db08)Sd*^=mec+#9eCE1'g"P3:hr<_Y
+kN;!nmI0Q7oC_hNp\=R`q>g<ip&Ojbp]:6iJcDDC,M9`G_SO(gs82)t^TFidjm:Tu]V]UuNa\<C
+Rq,g%WhcVpWr?39@UWVL=hVJ[\$`QM[C3HJZ)t7;rNhL`"n:0ieB6)9clUN[dFQjueBu^kcHjbZ
+bKS&Gd*9YJ]Y(haZa$a@[eR6+[<H(iA7]@dBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OUOHPfm
+QC+)0S=ZCIUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\d1gtgiEi8N\UjQ>Uf
+kiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$pA]X~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqJ2Ap@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHKC!@qfq4re^9'onW*ms+T`k%<-*(F`LE.I"$TpI"$JAI0G(EH$FO`rdbQ0It3*$IufPM
+O,WORDLVS=!/1<)rJ(-%r.Y3*p4NEuqh4]trIt<-qhY$(!/g`5!fW%qrepi8repi:rJ^`8r/UT6
+qiCf?rf@2BNfO(!r/U`8qi:];!06r;"H\\*OHBI&r/go?s-!AFrKR>Jrg3YPs-`kTs-j"Yrga+^
+SXfYJ!1`qU$CmZYT:qjKTq\6SrLsdtVl?`"YHP4:['mHR\[qaO!5/<C"M2+P\@DOKs0iBG]>;G)
+a2lEJcHjl8dJVDne(+BJ!87A,!SuZ3i;_a:i8OUlro*k9$KL.+j5f=`k3(pkrosCHrp0UO!q,ID
+rpBXOs6g9ao(2PIp\F[`rIk24hSZ+SQC+&-p#aZ,Q^*/UR'=r:H\clK?trJ[EcY/TIt2utIt19i
+:/t7k;,<:7Nf&aPLkpqFLkg\=r.pF6%HPO6V4OHRT:qmMStDYST`Us]T`1M^S.D'XR?j;-Q'.2f
+N/NOILPPATG@G&mAS,UhC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&h
+WiW>+Yd1UC[^`l[]Y;.s_SjF6aND]McHjnce'ut#f\,!6h;7&IiSrnYk2tjjl0@U$m-X60n*ol<
+o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ds*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqJ/@p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ShVHr?g"4g*
+eC)ajcHJ^H8P;bK;;kFO;$'Qk;=RHe2Dd?P2`F)%5lj5:r]^]S5<V.n4Zbtr6iK@[6:!t*:JFPY
+:SL9S:$PX@;>sJm;u]hp;uBMn;uK\p;uBPn<;fbp<;KPn<;BJl<<#ns<;9Gt<*!%"<)cfq;ZB\o
+;YO)i<;T]!<E)pt<r5ks<r>tt;up!"r)`f!!*]A)"'\r3>5he*>6S25=BAR+rE9,'!*fD('3A:;
+=&i7%='/U/>[(K??smDRAH$'TA7]=aB4bX^@:EYR?sm>J?X[JXBPD0rrb_dSDJoGjs).jRrbhaS
+s)A$ZrGqs\rc\<c#Bk65G'.tNFoHR`GQ2moH$XgaI!g?kIXh?Irdb'"rdk*%!/:E*!eZ/Zre1E.
+LPGe`s+qnWNK0*^OckomPa.Q$R$a;1R[]e:S",t<S=Q7CTV8*TU]$qeU&UhoUo(&fW2HPlW2clr
+WrT7!XoGR'Y6(r3YPtg*ZMq01[/RK4[edK5\,a)<\cBA?]E#YE]`,PB]_]>A^';9gQucS:=oMMH
+>-ac@=&Dd[5Y"S+<&m,s/M/h35<_.d1It&.7n#m-3&^[s%ouY1<E)ms<)Z[k;,0td;Z9Pl^\YbE
+^Au"H^](tH^&PbD^&5MC]C*?.^&#J>^Au(G^]2+J^\bhH_>V4P_ns:h_[=2cR<E(I>?G'6>lIqJ
+>$G3:>$G69>[(?9>$>$0=]\[*<E<*u<E)gm;H!!\G@G&mAS,UhC27X'DfB];FEVkQH@('hJ:W?+
+L51VCN/`m[P*;/sR$jG6StMdPUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]McHjnce'ut#f\,!6
+h;7&IiSrnYk2tjjl0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ds*t~>
+JcC<$JcGTHo`"jgrqu]ks8)ckrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHKs>Ed<P?nYkfPihdW\Od_f.U8OreWi2hmVl-AgUT1#\T:i<hXfhZ)s/l[C]Y)"p^7KM#
+U].1kW;!1iW;ELkW;NRlVZ*FlV#7"fV#R:gV#R7kVY[4jWW/psWVrjsX8f:$XTGT+Xo>F#Xo5C(
+YHY;1ZN%9-ZiIH3Z3RbE[C!?K['fk>!j])8rNH7(s0)@)riZ=+qQ]t(!jf8@qm?R8\%0&\rjr6E
+^;'W^rkeTN"3&:#a8X0X`rX9'rlR">b0/&UcHOMWbg+P\dF6Uqe^i:%f%Jg6i8`q_lKdj,nFH8G
+p%%VBnaQ)>o(;SIq##^CU&P;V]>2>$_Z'Qimb>8@Z+f;diM<a'M1gdkR$jIL?_jQqWMlh">[(ZG
+?<pdI]t:h`['I'H['Hs?YHn,5NW1Bsf[AEqd*L(ccdC:oe^W*rc-Xe_c-4ATai)HKai(j(\[SrO
+Yd(Y3[/[Q3[W5ec@qB4aBPD6tD/O<4EccGIGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,S"6.EU84W`
+W2co#Y->1;['mKT]=bkm^r"".`lQ9Fbg"G[dF-Opf%8U/gYL]Ci8EVTjQ5Oekiq?tm-O--n*fc9
+o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s7ZJC~>
+JcC<$JcGTHo`"jgrqu]ks8)ckrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHKHuAnlIBnqd@&m"bFlqM"El&o_W,F)lVTI=-NnI=6QmH[L*crHA?pK7\aRJ-h9rNK9-[
+H"h;Pre:E.p4`R&qhG')s+^N,oS!3trJ(?-r.Y3,qhP60q2#*/rep`6s,Hu9rJgf8!0-i8qN(N8
+s,m>Cs,R)>s,co6!frA%n;d[5OcY\'OoLUEPPgXHQ'Ra7Qi<BNRK8nJrgj%Ys-s"Xr0n:gR[Te=
+SXc4@S"-%>SXl@FTDbDiTqeKaX/rG,Z*^t;[fEl9Zi[S@[JmN<[CEi`_8=47rlkGgrm1Jg!7Lhp
+#h7DVf\,$6h;8.hro!n;iVh^6iW%p;irJ*<irnK+k3(q,kl9lKlKdd8mJZJPn,D_Un*^2Es7$?c
+o_/%SqYU2Cs"36MVj<[9R%!a5gpO/E`e9DNbIMtSX(c$X8Tf)s92L+fIXcfs:/=Vb<)QRirf@);
+reUf:M2-k?L&?afrtOS:Z)+(hStMaKTUqdLU7n9TTUVPPSIq?[R[KG0Q^!YoNf8mQLPCS>nVD3o
+@Uit\B4u!pCMds.EH6/DG'A4XI!pKpJqJc3Ll%%KNfT<cPa.T&R[]k>Tq\?ZVl6VrXfen5Za@0N
+\\#Mg^VI_(`Q$!@bKS5Vd*^:ke^i@*g=tH>hr*GPj5f=akNM0plg4!*mdKW6nac8BoCW%T!quB_
+rqQNhs8)Zjrqu`no_sFAJcGHDJ,~>
+JcC<$JcGTHo`"jgrqu]ks8)ckrV-EfpAX_8o^hYEnaQ#9md9B-lfmZtk2tdcj5JqRh;-i>g"4g)
+e'ZOgcHJaJ8PMoWoMPE^qbcTUqbd&`#<"Cu3&a/j5lO%c5X@Y"4[2(l4Ztkg5s[h(5XIb&6;L?N
+r_<P\8kr7_;?0Yh;?0Yl;Z0Jl;XdQ`;ZB\o;uooqr_r_mr`&eorDNVn!)i_n!*&bms&Akor`&kq
+!*&\ms&8turDWbpp/:rjqbmJpqH!Vrr`0)%=BGE$"B8B$<)ifrr`8u"rE9&%qcj#&"'J`/>5h\)
+=:&,7=]ng-<E<1&rDrks-WF,J=B\s8?=.)K@q0%]An>CY@:<ML?XR2H?X[JWBP;0uDJa3,D>n>P
+D/T>i$ZBp"D/O92EH,r;F8g7]Fo6CbF`qnMrc\<crce]oH@(!dI=6QnrdP<+It3*#JUrE)K7npW
+K`Hf(L&Zo-L]<21M@#6$Nf]BdP*;,qrg3YQrL3_T".G^LSc,,gT:hpQTq\9VUnjiaVu<RnWW&pt
+WrfB'X8K(!XU))3Xfek2Yd(J4ZN%62[/.3-[Ks@P\@K2_]=PWQ]`5YG]Y43Tq7ZgBs1]elOEG#9
+=BSg0=gOoT=^+X:5Y"J"?9(5_0eYC65!;"_1J17<7i4ZS3&Wl\3]fH(<E<+!;cH[o;G^4e;,C0i
+;#nH3_"kbD^@o86]_9&;^A#>@^AG\@_"b\C_#D.O_SO(d_YV.X`5T!GG@Xu`=BSm6r`^CH>?bE;
+>?k?6>?Y69>#n[*<`W4"=&i0u;Gg=h;XdM'@:E_XAS5[jCMRd)E,fo?F`qtSH@1-jJ:`E-L5:\E
+N/is]P*D5uR$sM8StVmSV5L8lX0&P/Z*UgG\@K5a^;%J#_o9X:aihoQcHsteeCE.%g"P3:h;@/K
+ioB+]k3(sml0I^&mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+14Ds*t~>
+JcC<$JcGTHp&=pgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXOHCNt2al_s*HqPO.fpSRtV&Xo8XA#?3&WiE"rWMQSnV5U<kT`M?ur2p"%%'74V]>24@
+fQW1NW2KQlrMTXn!2odos/5[ks/5^jrh]Uir2'4b!Mu[kVu3IoWN,lsriH.%!3Z4$riZ:)s/lF,
+Z*XD7!42R0!42X0!OK0-[/dQ4Z3%;8Yl1d&YlCm0Yd(I=Zhq$3Za-pE['oh="Lu"Q]"IsQ#/%[b
+^qde&rke]O#fFU"`lH0Aa2e/"rlG>dbKS/RbPoZaaXYHVbKS5UcHXSVc-Ob_d+$_%gtq#MjlYjo
+m-X-(l0.C!mdTc;o_/+Yrdk*ErrVH"_>_=Ns"a0(^$;`@g?mUhUqF3OOcGitSQfN-VPgAjWa&b4
+@pr_N>ZnhR\[JoPZF73JZ*(47Zi7=ks![?he_&*md*^4ddam%$e^W!ldEg+`bfn>S`lcTL`P&mq
+\[8ZIZ*^n6[JI=P@:E_WAS,UhC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdP
+Uo(&hWiW>+Yd1UD\%0)_]t_=u_SjF6aND]McHjnde'ut#f\5'7h;7&IiT&tZk2tjkl0@U$m-X60
+n*ol<o(2MQp&F^cp\jjeq>U6gqu6NlrUg)?s+14Es*t~>
+JcC<$JcGTHp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXO:?YF;"L@L-"M!0WdL%g6;Df'Q;EDq:7IXclsIsl]nIX?NjGBnIcJc13#JIR-ZO,]0\
+O(Y>*GDCs.r.k6*reCK.rJ1E-s+^T1r.b9,rIt-%rIt9+!/LN-r.bB/LPL`bM#)u-MZ8V5N;AM6
+N;S\8Muo!!O8Y+;O7nY=O-#E_NfX1$qN(K5pl>H;O8b4CO-#HarfR5BrK7,Crf[GKQ'@O3PlR-L
+QiEHOR0&hHS,AfVS,AfUS,SrXSc>2_S!oe8S,JiWSc,'*S!oe9TV8-VVPpMsY->19ZEUL7Xfen5
+ZEppF[^j#`^;.Y*a2lF%bQ#cdcMc&ud*^7he'ut$g"Y<<hVeCls5Nq7ro3k9!p&J)roa:Es60gT
+m-O-+mHsB2rUBjUrp]sXs763]$2!obq"agarVleNrr_rX`iK**249p-mbtj\Pe)I5T#IXXIYs@h
+Che*6FA,S-Isl`oJ58p8<E)pq:f!15N/W[PLl.(GLPU]_Ll_QbjNFg)TV\9RTqA!MT;&-UTq\3L
+T:MRFS"#k6Q^=)*P)bQ^Mhm+CL5GGVEa`EeA7]@dBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OU
+OHPfmQC+)0S=ZCIUSOcbWN*&%YHY==[^WfY]Y2(p_8=.0a2lEHbg+P^daQ^sf@\g2gtgiEi8N_V
+jQ>Ufl07L!m-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$p]#a~>
+JcC<$JcGTHp&=pgrqu]ks8)ckrqQNf!;?Eb.eN?'o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXO$7ncTNo25<]nko6]!)rMfqbd;g%lQ4&3&`c`6:*t(5X7Ou5lO"I4Tml55sds<646(G
+6;L?N:/<TF92>F`rDWYmr_ieprDW_o!E2nq;>jDb;?'Pm;?'Po;u9Gm;uKVn;ZK_p;ZTirr_i\n
+r_iVlrD`eqr`&hprD`bp"B8B$<`],ur`&hrr)<Vpr)<SorDN\qr`0&$<rQ/,<``@'<``@)=B>E$
+s&92&<)cju<E8uurE0)&r`]>)s'#G*"Bo#6>$Cf-s&f>*rEK;*!*K2$!*K5%!*9"t*)op==BJ^/
+>?kE>?X[AP@UNMI>?tTD@:3JO@q>RM!G6'EBE2cGCB&&QCi+'-D/K8is)/0^EH-#?FEDYJrcS?c
+G'3e-rce?drd"Khrd=`os*jut!.auu!.t3&s+CB+re;eSL5(J=LkpnEMi<UTNfT9aPE_>tQ^=,.
+R$jA2R[]e:S"-%@StDVRT`:bdU^<lpVl-JlWMunsri6"!!ii<%riH.#s/c4&$*UM7YHG(5Yd(J3
+Z2q>=rj;^5s0hm8!4Mm9#.V4T]=Y_iqRlsC]tO9T!58?Fs1SHF/[U@Y@9Zo;=]nk6W/t@f:LQLZ
+8T[]o4$#k]2DRK[4"rEG7nH6@6oR%_4?GY(498G\r`&nr!E)kq;#sKkrDEI,r4`-C!5A->o"Ob0
+rkA<Fp;$UBrkSBHoYL[I_Sc;i$H907G[t)a='Js8qcaqE>?b?9='Jj5?!:<1='/O)<`N1"<)ZUk
+;X[G&@:E_WAS,UhC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&hWiW>+
+Yd1UD\%0)_]t_=u_SjF6aND]McHjnde'ut#f\5'7h;7&IiT&tZk2tjkl0@U$m-X60n*ol<o(2MQ
+p&F^cp\jjeq>U6gqu6NlrUg)?s+14Es*t~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqJ2Ap@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXOMDKp\tlDWgBs/,Ogr2'piP+7u1@\fp#WMlbqW;`^pW!'#mT;&IbX:)/3Y.VH\]taT6
+I@0H$rhodp!3,mp!2odmrho^lrh]Xlrh]Fds/#amr29Om!NE*sX8f:$Xo5F%XoGO/YHG(3Y-5+9
+rNcO1Zhq*6Za-sFZa@+9[JdH4Zi%-.Z2Us-Z2Lp+Z2_-)Zi@E0[JmW6\HBFT]Y"-R&%oTi]t_@u
+_84")_o'F3a8*gTao0E[aoBKhbKS2TbK@uNbl,^)c-Xnge^iC,h;7&JioB%YjlbppmdK]:p%J1W
+r.4mDs"`lQ_8O4._Z0Z+kfMtf`RO)4]<fqWFC:5<S=Een?)FQsW2ln$>[(ZG?!LOI]Xt\\[/RH:
+['Hs>Yd=>9NW1BqgXk*%d*g:fdFHk$f%&9tcdC(ac-=P\bJqQKb/h<.]t(MUZ*C\2[J@7U@:E_X
+AS5[jCMRd)DfKf>F`qtSH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8T:r!TV5L8lX0&P/Z*UjH\@K5a
+^;%M$_o9X:aihoRcHstfeCE1&g"P3:h;@/LioB+]k3(sml0I^&mI'H3nF?)?oCMVIp%J+Rp\ssf
+q>^<hqu6NlrUg)?s+14Es*t~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqJ2Ap@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXO=@;9b/n;7.#kD/tionE<s(N=/3Ecb6,I=6QnI"-ToI=6KjH?aXZK)L60J:W6#J;oPL
+NK3"DDLV#/s+^N.rJ:K/!/C-"s+^N.s+pN,s+pW1reUK/regZ4s,?W1s,6r;rK$r<qiCN6rf@)>
+rf@)@q2YZ?O,o<]rf@&?!0@)?s,d>FOoCIAOoLOBOoLUBP5pjDPlm>=QC%Q;"dtaHR[]f8SGo)W
+SG\rWS0XSmR@9V8StD[LU8=cdWN*#"Wi<#"YHY:;Za@*J\%&u[]t_G`_["0$aND`MbKTt2%+!;J
+e'ut#f\5-:hr+Fk"QSM$iSjdqs5X+>roF@Iki_0nl0834s6TdQrpKgTqsaXUs763]s7?Qhp\=U]
+qu$GGrrqZ/XI#<ArgGY4jhnHq[=ad6\\!lTYBF&BCJK"o9N"W7IslcqJ5B';<Dudl:m-m"Mi*CJ
+Ll.%GLP1E\Ll_QMjNOj)U84HUU7\*NTqeKZTq\3NTDkD]RgtsVQ^*u*P`^rbN/<:EL[U%D@:E_X
+AS5[jCMRd)DfKf>F`qtSH@1-jJ:`E-L5:\EN/is]P*D5uR$sM8T:r!TV5L8lX0&P/Z*UjH\@K5a
+^;%M$_o9X:aihoRcHstfeCE1&g"P3:h;@/LioB+]k3(sml0I^&mI'H3nF?)?oCMVIp%J+Rp\ssf
+q>^<hqu6NlrUg)?s+14Es*t~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqJ2Ap@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXO%8PDlUo259\lr!d\r)*,br)!bY1cI?R2aTeq5lO(J56=#255m\D5mKbD6:!n(6;IMS
+##:XV:/"M^rDN8dq,.;n;GpBj;#aAm;Ys>j;ZBVf;Z0Pj;?Bcr;uT\o;u]_s;,U<k;uBVp;Z]ou
+<W,ks;uTbq;u]hl<<H3!;cWcqr_ir!<E2srr`&nt$WL&'<)cju=&rC(=Su8#<W#nt<;ont<rZ,"
+<EB#t"B\f0=BPK(!*K/&r*';,>$>-6qcNo&r`f;(s'#Y1=]ed/=oDD%=T)D&>5qe->[@>8"^G58
+?=74?@K9s;A,^$=AcH9CAS,RhrG)FMD>e>PDuO\VEH;&#!d/[0rcJEgGBS.RG^'.3rd"Ni!df<B
+rd>3(I=?WpJ:N3%JqAW-re1<*reD8DLPL\@LkpqGN/`gWNfT9aOcu#oQC%Q9$^[6KR@9S6S"-%@
+T)P>dTV8*TUSXgbVuN\1WMlbqX/r>#WiE,"WiN2%Xf\e1Yd")0!3lI-rj2U2!4Dd6"h1qL\%&pG
+\,a);]DoMD]DfJC]`GdZqn2sBrk/9CrjjVdY'OS`>$,!3>$@ts@p;r=5tOUJ?U["i1Fab..m?'K
+1GVKl7Rfg93Arho4:YCk<`W0u<Dugn:f1%d;#X>i^[&W3^\tnF^%K,7^\P_1_YM+I`;@L\\"7kW
+?<^Q;>[:V4>7Y%E>?k?6>?Y9:=]ea,=]kW&s&9,$:f:1gmne7;@Uit\B4u!pCMds-EH6/DG'A4X
+I!pKpJqJc3Ll%%KNfT<cPa.T&R[]k?Tq\?ZVl6VrXfen5ZaI6O\\#Mg^VRe)`Q$!@bKS8Wd*^=l
+e^rF+g=tH>hr*JQj5f=akNM0plg4!*mdKW6nac8BoCV_Kp@e7TrqQNhs8)Zjrqu`no_sFAJcGKE
+J,~>
+JcC<$JcGWIo`"gfrqu`lrqZWjrV-Tkp@e1Po^i(Q-LpTon*TK.lg!`ukN:mdj5JqRhVHr?g"4g*
+eC)ajcHKg<F*NA3lDWL9q5+1UOoCjTUo(,iX/MuqV?a)tWM6/\TW\6q%BQ_8XM;H]^;%FPFFp@[
+VuWgqW;idjW;WUjVtm1jVl'Ehs/,dls/,^lrhp($WiE,$X/rE%XT5O&YPkX%Y5tl4qQg1/rO)R1
+qmHF3!k#DBrO)[4$+$qCZa6sCZ*L\6Zi@?2ZN@PAZi7<3[JmQ3[/m_GrO;g;rjr-As1/KJ]">Se
+]tM.qrkSiT_8=(-`Q#sraSs<]aofi0bKB_(s2tAbs31Gb!6kDb*R)dRd*U1ge'uq!f\,$:i8a"c
+lg=-/nac>Hq>1#?s/#`Wn\;u[_Sa7js7l$/k,l2>k3UHlae3C#NaJ6D=CYX6WMQPnW`r_3@q&_L
+>/7ha\@8iO[C3KLZ*1@:rj7[b%.`0)g!%jld*L+if@g/R(t-dYd*Bn\dF-4X`mMrM^Uq.i[^<?E
+['oe<q6k<O@U`kZAnYjmCM[m,E,fr@Fa&(VH[U?nJV/W1LP^nINK90aPEhH$R@B_<TV8-VVPgDn
+XKA\2Za@0M\[oGe^VI_(`5Td<b0/&TcdC1ieCN7(g=k?<hV[8Mj5]7`k3)!nlKdg'mdKW6naZ2@
+oCW%T!quB_rqQNhrqcQirqu`no_sFAJcGNFJ,~>
+JcC<$JcGWIo`"gfrqu`lrqZWjrV-Tkp@e1Po^i(Q-LpTon*TK.lg!`ukN:mdj5JqRhVHr?g"4g*
+eC)ajcHKF"A8?4;n;7$ul%f+io7[utCijcAI!^<kIsulqI=-HlI!g-`G^"f>K)U</J:EW?N/s!Y
+GA2&LnqR4$rJ(B-reLB,!/LQ.!JQ:,K`m-aKnb?]L\ll-L\uu-M>`8-M#`G2MuSb7NW"n7N<#"<
+O8P%<NrY:>O8k=@Onk(<OT(CAOT1C>OT1C?O9Ui/OckliOo:FIOcY]eOHG\'P5CFCPl?pQQBd`"
+Q'R`&rKmVPR/WKTR[]fCS,f&USGA`NT)Y>ZS,]#YSIM3bU8"EYV5L8jX0&P.rilR3['dCB\-fgZ
+]=bei^r476ao9EobKS5Wd*^:je(*+)gtpoGi;V[>io/nUiSrkrj8S*EjlY^gkih9qrTaCJ#OLjH
+n*of8nG_qjnF?&>o(2JFp%A(Rq>'pbrVc_Jrrqo7YEtWCrgGY4jO:c8[=aL-Xj*JaQ#p&7Bhibl
+92\Q8J:2osJ58s9<E)jn:m-m"MN!FKM2R4HLP:H\Ll_QNl-6N2V5']VU7e0OU8+TZTq\3OT:Z%P
+&"];ZQ^=/,Q'%)cN/NOIL[U%>?t*SUAS,UhC27X'DfB];FEMePH@('hJ:W?+L51VCN/`m[P*;/s
+R$jG6StMdPUo(&hWiW>+Z*UgG\%0)_]t_A"_o0O7aND]NcHjnde'ut#f\5'7h;7&IiT&t[k2tjk
+l0@U$m-a?2nF?&>o(2MQo`Fj]p\ssfq>U6gqu6NlrUg)?s+14Fs*t~>
+JcC<$JcGWIo`"gfrqu`lrqZWjrV-Tkp@e1Po^i(Q-h6]pn*TK.lg!`ukN:mdj5JqRhVHr?g"4g*
+eC)ajcHJ^I8PW#X;uBP=;>*lr2)I9P3C?,!5sdk&5lEnT5!;"l4$,bp6UO1+r^-W\##.ie:-M?H
+qGI2hpf%)gqbmJmr_W\m;>a>j;=[Wa;u]_q;>a>j;ZK_n;Zfop;,[Blr)EYos&K(us&Jtrs&/tu
+<E/lrr`&bnrDiks!``2urD`\pr_rr!<`]&u!`i<$r)W_qs&T,!s&T/"s&K/%<r,o!=]kZ+"'So5
+>5hb+=TM]1qH<]"r*98+!*oM/s&fA(=Sl5&>$+o*=V=qD>?tTE@q/tW@q0%\ARo:]A,]p?@q91b
+C&McHC]8/XDJsK4DfB]:F)uI&FoHRaG62r3GQ)jdGli;=IK"WoIJnWpIfP#uJH1<$KE$W)L&Zo*
+LD#E"Ll%"IN/WaUNfK0^OcbilQ2[$JPl[2;rg3bTR[X5F%\0)]T:_dMU8+N[V50rbrM:+'Vl$Dk
+WiE%tW2ZbpWiE,$XSf:%Yl:p,Z2h61[/[Q4[f!W6\H'/=])K>A]`5\F]`5VB]`#GE]",A_rj`!>
+/\A[2[";gp=]ed/=B_hqF'hpS5t"7=M+]in0InY1/3Q*L1GVNn7Rom92`N_n4T8@b<)ljp<)W]m
+!`2`ir_`=&q7usDrk8BIlb<D6!5SQLrPJ6Fr5/6Hn\k7B+L[bgB4"kI?!CT>>$G07>@(K;>Zt97
+>$G36=BAU+=B>E$#?4W%;Gg=i;=ID&?t*SUAS,UhC27X'DfB];FEMePH@('hJ:W?+L51VCN/`m[
+P*;/sR$jG6StMdPUo(&hWiW>+Z*UgG\%0)_]t_A"_o0O7aND]NcHjnde'ut#f\5'7h;7&IiT&t[
+k2tjkl0@U$m-a?2nF?&>o(2MQo`Fj]p\ssfq>U6gqu6NlrUg)?s+14Fs*t~>
+JcC<$JcGWIo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$gj5]+Vhqd,Cg=Y$.
+eC2glcd'aJD0:/_WN"gSjJVpQ'q(PaR:W4nW2H\qW2cenW2QVlUnXO\XU_M8XKJ_,^V%1k^m3,d
+M=RVBWV`XgVuEV#Vl6MkVPg>jW;NOsVPg>jVPX9hqkjInWW&prXT#=(Y-5%5q6'q*YHY7:rj;[2
+s0Md6rO)d8[']b=!OfE5[f!N>['d9JZa7'H[C,t?"LYVC[']S8rO)^8rODs=\c028]DoMF]tV;[
+_>h@U_o0O5a2e2#s2k8_!6b2[s2kGcb0%s-c2Pp(c-4DVbg"GYd*^7fd*^7kg"bKDjQ5Xlm/HD[
+nFH2Dp\=R\qu$ACs/Q)'p;4Ya_o'@js"sB(k,l)9jmV0'['Ft/NFA6ERq,j&Whu_mW`iY2@q&bM
+>$8VQ]!f#S['mEMZEUI:Za@*!s![Hof%\Nsda6@ge_&U,e^`*qdEg+adFcmkaMlNKaMYX%]!o#O
+Yd:e6[J@7U?t!MSAS#LfBkqL$DJsN8FEMbNH$XjdIt3-'KnbD?Mi<[WOckroQ^F52StD^NUnsuf
+WiN8)Yd1UC[^`l[]Y;.s_SjF5aN;WLcHaeae'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<
+o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Fs*t~>
+JcC<$JcGWIo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$gj5]+Vhqd,Cg=Y$.
+eC2glcd'a;?ta;!Ko5DWqhXHknqR'r$?1'0E`IO;I=6ZrrdG*"I=6HhH?XT3K)L9#J-_3qNfB*:
+Rqd-;L\lo+L]<2(L\Z](L]<20M>rD3M>rD1M>W2-M#rQmMu8P6N<,'!rf7#>rf.2BNfK0^OH9@#
+plGH:!0R8BqiC`<rfQo9!g/S+rfR&?s,dAGOcfX)!KiQBP6[>9PE_;tQBhH8rfmPNQ^@Q9s-WkU
+rgWqXqj[STrgWnWs.'.[rgj"Zs.9RgSXuCBS=Q7Crh07_18:VCW2co#Y-5(6Z*CU@['d9J[^WcW
+\\#Vn`5fp>aNDZLbg"GZd*gFof%Jd3h;7&Iqr.M6!9F.@s5s=Ds6'RLlK[^7m/QJPmf)\Tn.bE^
+naZ2@oCMVHp%A(Sq>0scrVc_Is!%?`Z^I2JS!of9jP7_V[=X@*WQ_huLP0&DC/8toFAbqbJ,Xm)
+J5/p8<E2po:f*76reh#=Ll%"FLkg``Ll_QGmE`)9UnaTUU7e0OU84[cU'%'\T:PtO%A98\R?sA.
+Q'%)fN/NMjL[g1F?t!MSAS#LfBkqL$DJsN8FEMbNH$XjdIt3-'KnbD?Mi<[WOckroQ^F52StD^N
+UnsufWiN8)Yd1UC[^`l[]Y;.s_SjF5aN;WLcHaeae'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60
+n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Fs*t~>
+JcC<$JcGWIo`"jgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$gj5]+Vhqd,Cg=Y$.
+eC2glcd'a&84uZP;,mNns&-p8r)*_V3&iiV6UUc;"@#.95=#01'0JTK5sn"+5smt):JOVY:,G[<
+:\IZa;Z9Sr<)Z`n;?0Yi;Z9Vn;?Tip;H$Nj;ZB\o;ZB\q;Z9Pn;Yj;m;H*Qms%rborDWYor_ier
+r`/u!!*/kp"'&8u<;ons<;TSs<E)pt<V]Vn<<-(t;up!"r)Wkuqc3\uqc3l#<``=&=8Gr"='/O*
+r`Jnt#?kA9=]np2=T2G*>$G-4r`]>+"C,/9>[.24s'>Y/#$G&1=]np4r`fq9=BAR,>?kKB?XR>P
+@:B.Es'lUN@q/tV@:E\UAS5XhBPD3srG2RRDf0IlDuXeZEcZ;DrcS3ar-83es*FcpIf4]pIfFm!
+J:W:NJc^LTK)LB&K`[!aM#N20M#W;<Mi<USNK0$[O-'@'s,mSMP`q>rQBqK:rg<hVS"'DI#b@QZ
+T:qsQUSI[]s.ogpV5C-eVuEV!WN*##XfSW'XTku5Z*L^B[/IB4[f3c7\-BLT]=PSa\c')>]DfJ?
+])]GA]DoPD]D]AB^&,N!]n^6,=BA^1=BM\mKP"Co6UOC:KNgH$1bUI=/Nu<[2)@fr7n6$:3&WZW
+4?GYf4&o;[<<#l';H$Fj;,C+d;,R#%!5\WLrkJ6Bp:pUBpVHdEqnr3I!6+KHpr3$JrPoJ]Sq(N\
+>ZtB8>[(B:>?Y6;r`oD*s'#\2=]ed-=B>E$"B8B$;c*Hkn5+@;@:E_XAS5[jCMRd)DfKf>F`qtS
+H@1-jJ:`E-L5:\EN/is]P*D5uR$sM9T:r!TV5L8lX0&P/ZEpsI\@K5a^;%M$`5Ta;aihoRcHstf
+eCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcGNF
+J,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!a!kN:mej5T%UhVHu@g=Y$-
+eC2glcHXOIDKpSjWi=XLkbeHGR/WU$A>?*'XJr2"Vl6YpWMcVgUnOuoXfnn0Y-5"1]tCtm^Lcqa
+QL:^LWW&jnVZE`oqPXCnq5=OtW2Z_nW2QWnV?!OmW;ib$W2ZesX0&M,Xo5F&Y5kg+YPt^)YPta,
+Z*XG:s0Ma4#.:nK[^WcUqmHI4!4Vs;!4Vs9qm?F4rjDI.rj<$?[C*KQ[^NTOrjN*A\[f;_]=S!R
+s1J3?"h_O]]t_A]_>V7M_Z[s!a2l@$aT]i1bK@rKprWufbg+MYbfe5Tbg"E3c4\INe'ujqeCN:,
+hr3VWkN_C"mJcM\n+#u?p%J.Tq>:,As/Z/(qT-Rm_Sa:jrtY7phQ4*)j6u96VSBQkMd)U<S6K<r
+rhg^6Wi90+>@LuG>ZnhT]=55W[C3KMZa$[;ZF$uus![Hre_AKte'HCgf%Aa.e^`-rdEg+ae(W3n
+aMlNJahtd(]=>2QZ*C\3[J@7K?XR>PA7]@dBPM=!DJsK6F*)PKG^=^bIXm!%KSG8=MN!OUOHPfm
+QC+)0SXuLJUSOcbWN*&&Yd(OA[^WfY]Y2(q_Sa@4a2lEHc-FY_daZdtf@\g3gtgiFi8WeWjlY^h
+l07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Hjrr)HfJcC<$q>Ys~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!a!kN:mej5T%UhVHu@g=Y$-
+eC2glcHXO:@;'J%Ll1_ZqhXHkmY:a[-ZsNR<-s(CJ:;orIXZfqIX?BeH$=jkJq8H'J:W6%NfB$Z
+N`*H*I-udcM#2r.Lkktcre:H/M#<&-M"-?%M#<,0Mu8P6NW5%=N<#":O8b1>O8b7@O8k77O8+h:
+O7A>/Ont4BOckk+Oopi.OcfO)pltcCs-<YMrKd;IrgEeTr0m\VrgNnXpm_5PrLO"]rgj+^r13t_
+TqMCY#,7ojW2co"ric@+rNZC.rj*oX[C3TW]t_A#_o9[;ai_fNc-FY]d*gIrf\5*8hV[5KiS`\S
+ir8$<jo=KCkPj]Fl2U#Qlg3s(m-X3>mf)\RnGi(ZoDeI_p&Fajq"ad_r;HVGrriAJ[[`Z_RPgT*
+jPA(pXFc+jVT[&7Iu]t+C.WPhFA,M\IslcqJ:C?i:/t7k:f*=:Nf8gPLl%"GM2-b=reQX8.Ibci
+Vk^&[TV8$PT;/3[Tq\9TT:_[DS=Q@DR[BG1QBdSlO,]'QL51QRLi-R-@U`kZAnYjmCM[m,E,fr@
+Fa&(VH[U?nJV/W1LP^nINK90aPEhH$R@Bb=TV8-VVPgDnXKJe4Za@0M\[oGe^VI_(`Q#s>b0/&T
+cdC1jeCN7(g=tE=hVd>Oj5]7`k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@
+JcGQGJ,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0lg!a!kN:mej5T%UhVHu@g=Y$-
+eC2glcHXO$84lTO;,mHlr_gd6!Au_43"ePD5sdh%5sIS!5<h:n4Ztnp6N'7\6:4(,:/4JX:+KUF
+:f?m^s&/hpoMP]g;Ya5k;Ya5m;H$Km;ts8j;#jMj;uBPn;>jDj;Zp&u;cH`n<<lK'<)lms<E9#s
+q,I,fs&8tuqc*Moqc*Sqr`0,$<)lrt<rQ/#<rQ/#<r?#!<rQ+u<WcE*<`f3$q,mf'>?Y2/=T;M/
+>$5'5=]np3qca)+>Q%h+>6%k(>7"P??!LT;>?tQBra>Y4r*o\9raPk:s'u=FAnPaiC2<fbqec@N
+rbr9cEcZ>FFa&(UGBeCYrd+Tk!doHGrdFfqs*t'!rIOs"!/(9('SD'mKnb>;LPUbCM2R:NNK0!Y
+O,s:&rf[;Fs-3PKs-E\O"dk^GR$jB@S,]#YSc>>^TEh0bUSFW\V5=*c!Mu[kVuEXpWW/suX8]1)
+Xfeh1YHY;2ZN%94[C6(Dqmc[:r4;m>s1JBFq7QU<!5ABGr4iHGO_A*(r`LOL=g"*HD.Ha75Y4V"
+HUBkZ>V7l`5<_.^1.k,084Q*<3&`cY48q>C=&o6!!)ieps&'%u:Jjnb;8Ve<pV?@9rkeEIs2=fR
+p;HaFpr<*LrQ+rX"j"EMK5+]k>6nA:>?Y99>[(P6>QA"->5qe2=B\d.<`iE"<<H/q;Gus[DI6d\
+@Us%^BP;-rCi401EH?5EGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*S"6.DTqeE\Vl?\tY->1;['mHS
+]"G_k^r"".`lH0CbK\>YdF-Oof%8R.gYCWAi8EVTj5oFckiq?slg4$,n*fc9rpg*]o`"Lbp@n=\
+q#C0iqY^6hr;QZdrdk*#s7u\F~>
+JcC<$JcGZJo`"gfrqu]ks7u`krV//Bp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXOMDg6f&WN#3^q5Nh]n#%(hOe%u3MPd>KWiN+uVl?VjUoC;cTs(W#YHRr.$a$SF^V%=q
+^]1!WV"gkgWVNLhWW/pnVtm:bWW0!rW;`^pW;`drWrB%#XKAW&Y55@$Y5b[-Yd(I=qQpI7[^WcU
+\%)FHqmQL6rOE$>[^EOA[f<f:[f3`;\[]0H[fEl9\,Nl>\$`WPrjN!>\[oBL]DfMH]tCthrk&NM
+^;%J"^qde&rke]Q!Pu_R`W*p]a2lBFbKK\'r6$2+c-=JUc-=JWcHjh`daQasf%/L-gYLfIj6#Ri
+lL"!<mL/LQnac;Dp%A%Sr;D3HXT&M%beh<9`5_fV2#-S!X0T@pl0?[(d[4]TNgQ6*>[^m8W2HSp
+Wa&e4@UWMH>/7e`\@8lR\$i`OZELI;['Yhm.J;`Pg=4Hud*L.jg"Y-/e^Djnd*Bthg<e$``Qu]K
+`4`gq\$WHFZa@1;[J@7P?XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,
+S=Z@HU84W`W2cr$YHY==[C3TU]=bkm_8=.0a2lBGbg+P^dF6Uqf@\d1gtgiEi8N\UjQ>UfkiqBu
+m-O--n*fc9o()DErq6<b!;HHes7u]kr;6KkrVcBfJcC<$q>Ys~>
+JcC<$JcGZJo`"gfrqu]ks7u`krV//Bp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXO=@VTk3MMgq\o8)jjmtM3gCNOW>CjUVYIXuqHIKk4IH@1*bGQ*-nKDg?/J:W`ANKB-Z
+ep_UlpkJj*q1na$qM5'+r.k''s,$c5on`a-M2D1gs,6f6s,@#=rf$o<plGH:!KW?>NrY:?O7n\7
+On+V1OoLREPQ$^IPEM)kqNC`>pQYZB!LB#LQN*<MR/36LS,]#MS,\uYSberUTDtSaTaRTiUnsre
+WN*#$Y-7i/rNZ@-.'p:g[C3TV]Y2(q_8O:3a2uKHbK\;Wcd1"ee_&R.g>1WChr*JPj5^."roO1B
+s6'FGrokZmlg3s(m-X3.mI'E2n*oi:nac;Do_%nNp@n@Xq>1!crVleIru0CsSXGt:R[`j/i7,NC
+K7f2X_T\p4Y]E`:CAr;i9MnQ7IsulsJ5/m8<Dudl;3Hs"N/R[m"cJ4oLk^W_Ll_QAo$jtFUSXZV
+U&L]+U8=c^Tq\3PTUq[DT:qaCR$X8.Q'.2fNJiXKL5:]VLiZp2@:E_XAS5[jCMRd)DfKf>F`qtS
+H@1-jJ:`E-L5:\EN/is]P*D5uR$sP:T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcdC.h
+eCE1'g"P6;hV[8MioB+^k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV6Egs8)Zjrqu`no_sFAJcGQG
+J,~>
+JcC<$JcGZJo`"gfrqu]ks7u`krV//Bp@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu@g"=p,
+eC)ajcHXO%8PDlU<)i`ns&-m7%lH1'3&s/h5sRb%5X@V"5Q3hK4ZkkorBgcT6UO1-:J^sa##'hC
+:/FhdqG@5jq,-rc!)rkps&&eomSj-bs&8_kr)<Vqr)<Mks&&_mr)<Pnq,RDpr`/MgqGRAnr`',$
+;c?Xp<V]Vn<<?3&=8Z(s<r?##<``B%=9DW*<E9$!#?Or-=BJX+=Sc2#>5qb(=9D]0>?gu.q-3i'
+r*0#&$=-tD?!^lG?XI2KrF#_9@JjU6A,TpAARo=_AnV*V!buLerG;XSD/F1iDuXbbEH6,BF`r"R
+GBe@XH2`*oH[L6iI!pG@J,b&tJcC?%K*$^YK`6])LB!&/L_Yf(Mi3OQNfT9aOcu#nPa%GtQ'I]'
+rg*kWQ^F,,R$jB@RK/iUSHPOVTVA1ZUB%+gUB@?iVl0Ejs/H!ts/Q7'Xf\c*YQ(g.ZEpn:[/[Q5
+[K*f8\,a,=]DoPC^&G_G^\keG^&>\E^\GVD_?7T>Cgm<G,Zn2PXdFlf@95`Z6V2!J<BFqN.OQu8
+4Zb>S1J(,.7n#m-3&gdu"Zodb<)Zcp;[6/t;Gg:f;,Qi"!5nHGpquO<pVlpIo>gdMp<!9S$c/Kh
+CgC4K=^#$7>5h_G>[CZ>>Zt<8>?kB7='/R*=B8I&<`W1";c$@h;XdM(?XR;O@qB4aBPD6tD/O93
+EccGIGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,S=Z@HU84W`W2cr$YHY==[C3TU]=bkm_8=.0a2lBG
+bg+P^dF6Uqf@\d1gtgiEi8N\UjQ>UfkiqBum-O--n*fc9o()DErq6<b!;HHes7u]kr;6KkrVcBf
+JcC<$q>Ys~>
+JcC<$JcGZJp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+eC;pocd'aFE,p2VU[tJ`W:-_PW:m,;QCXP7AYZ3'W2lqsVP^;kW2ZbnU8+oqY-+t2Z*(:5^V.:q
+^:o\QM"dkFWW/poW<&rsr2BRlq5F1i!36$ts/Psq%B-8+WN)u!WiN2%X/rH&Y5b^*Y5>F%Y5b^*
+YlCs0ZEpn:[/RK4[K*f9\Gs,>\Gs#@[^WfX\Gj#A]",>[\,E`C\%&rW\@K2]\@8rWrjVd7"1bnL
+[f3`>\@K/]]"@mQ!586Cs1JNK^VI\b_#M7M_Z%F[`5T[6`lH-@aN)@#aoBN`aoBN`ao'=)bg"AU
+c-4GWcd0tde'uq!f@\g4hVdDRjQ5UilKdg)mf)\So)J:ap%J4YrIP!Mrs&>I_8F41aSu2frTrXI
+Ye8`Vm,=b_TP[np?_!Wj@9oe1W2Q_s=^5-?@U<>E_7dIl\,Nc@\$iZLYcb:<[#P(rpZ0r^f[/-o
+d*gM!gXt',rmDS/cI(>!cH4,GccXAK]tCtf[C!6E['oh=ppP6N?t*SUAS,UhC27X'DfB];FEMeP
+H@('hJ:W?+L51VCN/`m[P*;/sR$sM8StMdPUo(&iX0&P/Z*UgG\%0)_]t_A"_o9X:aihlPcHste
+eCE.%g"P39h;@/KioB+]k3(sml0I^&mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+14G
+s*t~>
+JcC<$JcGZJp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+eC;pocd'a;@:O(nKDpc!M=68lLB*/-L\?H3DKU&B<IB7DIt3&tI!u!Cs*OlpG^91;%"j._JWGhO
+O,]-AB6Es(qhY9-oS<U)Lkgc`M#W8,L]N?greUW4oniX)",i%pMuJ\8NW4t;N<#"<NUMr)OT1FG
+OHGWeOT(@DOHGY(OnOn3OoLUBPQ-gDOT:R@PPp^GPPg[DQ2HsJQNrhCQ^F/.R@=,C!1NnVs.'+Y
+!1a"Ws-itW!1a%XrgX7bSt2FDSXl@Drh'4`%ABMkUnsugWiE,$Xfel,Yl1j+Z4jRO['d?N\@K8c
+^;.S%`5Ta:aNFM*(X1.Ld*^=mf%A^2gtgiFiSieUj5f:_jo4BEkN:skrosIK!:9[Os6^`mmdKW6
+nac8Bo_%nNp%J(Pp\=R\qY^<kJc@n5g:*`CR[]e:o&noa]sEBEO.XA<^3Z#c=@d4&F`gAU:4IeC
+IXclD:ejth;c-DTOH,<YMi*CMMMR(DK`6dhrt>8%e[2BQV50cXTV%pPV5C#^UAgf"St)=FTphC:
+Q^X8+P)t]`N/NOIL[U%??XR>PA7]@dBPM=!DJsK6F*)PKG^=^bIXm!%KSG8=MN!OUOHPfmQC+,1
+SXuLJUSOcbWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN;WKc-F\`daZguf@em4gtglGi8WeXjlYail07O#
+m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$q>Ys~>
+JcC<$JcGZJp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+eC;pocd'a&77^-L;Ya8g;X73X;"mia;YErt2)mQU3($"u5X7V$5X.O55Q*bC6NBIO6O6F_9MA/S
+5"eZL;Ys>g;ZBVh;ZB\q;Z0Gm;YsDl;Z0Mo<;f_q<;fbp;ZBYu;H$Ln;uT_t<E)rq;u]bq;uKVl
+;u0Jj<W?)#<E/lr"B8B#<E/rt"]SE!<)cfq;Z9Vo<V'2h<<lQ+=BAO(<E9#ts&K"u"'8T+=8c5$
+=8c2"=8l>$=8uD&=oVY*=oDP&=T2J">4u2#=p%u4>$Lo0r*9>1@/aU6?iXX2@KL%MAH$'>A7baN
+!+l.Bs(DCHrG)OQDJX-+rbhaS$#jm)EcZ;EG'A00GlDshH@,X=.Xc\mIt2utIt3'#JV&H)JqJZ-
+K7nr5KnbA<LkphBM2@+JNK&s[OckolrKR;HpQl,PR@0M4S"#rISc>8_T:hkVU&C_aUC3oqVPgAk
+WMuntWN,rus/Z7'Y5PO,Yd(O@[/RHB['R*G['dBQ\@K2_]Y+6WrP&?HrP/3E!l;[fpqd!Irkg7u
+S8_k==]ed/=g+6II:-2D5t":XNGLU>0J"J*/3Z0M1GVNn7Rfg73&`hp4:kRo;cH^p;cH[o:f:.e
+;,C-g`;@OM`:Ch7`;[aO`pCbAaS*aPb5TKgb/K[%D-pLP>5hb6>$G07>[CW=>Zt>1>7t+A=]\[,
+=B8I&<`N*t<)QRl;=@>&?XR>PA7]@dBPM=!DJsK6F*)PKG^=^bIXm!%KSG8=MN!OUOHPfmQC+,1
+SXuLJUSOcbWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN;WKc-F\`daZguf@em4gtglGi8WeXjlYail07O#
+m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$q>Ys~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'aIDg6VeX8]-iWV`^fWTU5XVZrNXSsj,bW;NV7W2Z_qW2lqqTqANmYHY46Y-5"C]tD"k
+^l7i0Nq]LOWW&ptWW0!nWV!.fWV*:kWVWXpWs5Z-XKAV.Y5,7$YkYC0Yd(I=Za@*I[^NZSrjMg9
+!kGnRr4)g;qmla<s1/0>rjN3D\[f5[\[o>]\G`o:\Gj#@\@K/[r3m*E\[oAa]=bhj]Y(qlrkJEG
+s1\WN^VKfa#/\3o`5KR2rPSlY`lH->`r='ZaoBE_aiaV)r6#Gkc-4DVbg"G\da\9H&_>Rdg"Y??
+i8N_Wk3;-qlKdm;mfDqJrpg9cp%S:Yr;M9IXoAV&e\]>Ga2n8[2>d4;mB"L^kNpfq_k_[6NFJ?G
+Rq#d%W2HVoX'Jq4@pr_M>ZneS]=>>Z[C3NOZE^U;ZF%!!s![a+f&#*-eBuXkfA#'4f%&7!da6=j
+gXscla2QEIai(p+]XkPYZE^e4[J71O?XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!K8#&9M2R=Q
+O-,TiQ'[o.S=Z@HU84W`WN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\g2gtgiEi8N_V
+jQ>Ufl07L!m-O0/n*ol;o()DErq-?dp\4[^s7uZjr;6KkrVcBfJcC<$qYu'~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'a;?tjA!L&QtrM=cVrL]<2(L\ulTDf^#@;ga%BIsufpIXcfrI=6KhGB\UhJqJZ+JV&H6
+NfB'YO(lXNGP?m]L]E;2M#W>)M"uo+MZ/G4MYr>1MZ/M8N/`elN<#"<N<#";O8k7>O8k7<O8Y1>
+OoCO<OoCIAOnk+6OoCLDPQ$gFP5^UBP5^[CPlHpLPa.N"rK[DK!13\Ns-EkSQ^=),rgEeR!1EhT
+s-s%Ws.&nS!h>aLrL=4cSt2IFSt;RIT:l1W%AKVmV5C2kWiN2&Y-5&.Yl:mkZE^[?ZEpsH[^W`V
+]"Gbl^qmq,`Q$!@b0%oNbg"GZd*gIqf@\g3gYLfGiSrkWjQ,Fak2tjjkiq?slKmm7m1/ROmdKW7
+o(2GDoCV\Jp&=Rgp%J.Tq>:'err)lrL&V82\>#AiRk1*"l/L:B_7tSiS%I+OH&[#V@qne^F*(>V
+It)osIt1<i:K:@m;Gg8POH,;!M?\opM26q@LAm!krt>8)e@2HQVkg&\TqA$RV59u^U]-r$St2IJ
+TUM:9Q^X8,P*(c`NJ`RJL[U%??XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!K8#&9M2R=QO-,Ti
+Q'[o.S=Z@HU84W`WN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\g2gtgiEi8N_VjQ>Uf
+l07L!m-O0/n*ol;o()DErq-?dp\4[^s7uZjr;6KkrVcBfJcC<$qYu'~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'a'7nQKM;>sM\;Y3iZ;#X>c;Z'Aq1H.9Q2a[L0s$-cS5X@Y#5<o*0q*PKU:JFSX9MRB_
+9MbUbqbd/es&8bls&/nqqbd>j!)rkpr_`\or)EJj!*&nq"B&2u;cEWopJ_&hs&/nqrDWVns&B>*
+<E<.#<`N*up/V,l"]J;u<)QWl;Zg!!<`Srp!*/tsr`/u!rDs,&<)Zaqr`/qurE&r"rDrr"$WpJ4
+=BSa-=BJ^0>5_V(=ohi1r`B/'qHE]!"'Si2>PqY->?kH=>l7k0?=7/LrEoV6q-s;4s'kn:s(21A
+!G?-FC'&0eC]8,MD>nDSDfB[pE<UE+F`qtQrcnHg"FGNDI=;*DrI=itrdb*%Jc:6*K7no3L51N]
+LC8opMMd=NNK'!\OcfX+s-*GHs-<VM!LK,NQi<?YR@9V7S=H.@St5kPs.B=as.KIfU].(gV#[Cl
+VuEUqWN,s!riQ1'#-bA;Za@-JqmHX:\@B)\rk&-B!5AHIqnW3Iqn`?LrPJNNr5ATR/\[Wo?WgN6
+=^"q.SqqH5@phPp86:mR3Bf2O/N#+E4ZbGU8Ol9A7n#?r3'9;%497NDr_rr!;H3Wos%rnq;,:%d
+q8WHRpr;pEn](1@m)]+Hr6"cWrQP8a&BL&nD.-^R>$PB=>$G07>[@>6s'#J+r`Tn9=]ng.=BAO'
+<`W1!<Duam;X[G'?XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[o.S=Z@H
+U84W`WN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\g2gtgiEi8N_VjQ>Ufl07L!m-O0/
+n*ol;o()DErq-?dp\4[^s7uZjr;6KkrVcBfJcC<$qYu'~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqJ5Bp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXOHCjLPjXo>C$WqNF`WqiXTW%"+"SXZ-eV5gMpVl?VnVlQboWiDngYd1L:YHY47Y-5LQ
+]Y(tmm[8KrpSe(j!ii<%ql9Rn!ii6!or.kh!NN3tWWK6&XT#:"WrB%!WrB%%XKAV-Y5#4"YQ1m)
+YlCm,Z2V*0[/RN6\,a)=\G`u<])K5A]",BM\c]LS]"@pPs1/0>s1/0>rjr-?!P#W<\G<]8\-0:N
+\@K3M])fRXr4`0F!5SNI"2M[d_#D1M_?@]m`5BLj_u[isr5\iYs2P;aai_cJao'?]bl>rec3)D?
+eCFNK$J3q`gYCZDioB+_rok$[lg4!*mdBQ5o(;SIp@nC[rdk*Os$-G9_oKm@b0'baqu-0VXME?K
+m,FeRYaL*&>+(nOAR;:8Vl6MnWENM1@UNGH=hhV^\@B#W[^NQKZEUR<['Ykn.K&>\hq?E,daHOo
+g>(H6f@86sdEpV&fZ_FWa3VlK_nNap\[SlMZ*Lh7[J731?[#me@Us%^B4u$qCi401EH?5FGBeF\
+I=?]tK7nu7M2I7OO-#NgQ'Rf+S"6.DTqeE\W2co#Y->1;['mHS]"G_k^r"".`lQ9Fbg"G[dF-Op
+f@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$qYu'~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqJ5Bp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXO:?tjM&M#N:uM=ZPrL]<2$LBqm<FE;M-H[pVFIKY(KI=?YEI2.*RKS4r0K7nl/JUrc@
+NK0$X^j9pNonW@!s,$Z0qM>90LPPhapk]'0M2Cn_!/^Z3s,6o9pl5<6!KW6>NrP1>NrP1>Nr4t;
+OT(C@P5^RFP*(n*P5gX>Oo:C:Oo:ICP5pjGP5g[COoU^DPl$aGQ3*D=QN!-QQ^3r(Q^7Q9rg3\S
+rgEeTqj[MRrL<\Ss.01]!2'.]!MQ7dU]7+pVPpJoX/i>)r3$+)r36:.Zi7<C[C3NR]=bhk^VI_(
+`Q#s?ao9F-c-FY]dF6Roe^rF+g>(N@hVmJRj5]4]jlYaikiq?slg4!*rp0^Rm-Xf?#4M'Nnac8B
+rpgotnac;Cp%A(Rq>'maqYU0fr;HWos8W)trr%rY5iB/LR@Tn=S"8g&e^i'aJs2Y2dCaa]LN?m>
+8Tf,s;bqmnI=?ZrIo&p9<)cdn:m-m!N/ELNM2I.GLk^\?Lkq/m#l2u[WhcShTq_O[*MTC,Una]Y
+TV.pJU84HMR@';/QBdVqNK&mTM2$fSM#Uh+?t*SUAS,RgC27X'DfB];FEVkQH@('hJ:W?+L51VC
+N/`m[P*;/sR$sM8StMdPUo()jX0&P/Z*UgG\%0)_]t_A"_o9X:aihoQcHsteeCE1&g"P3:h;@/L
+ioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcGTHJ,~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqJ5Bp@e1Po^h\Fo'u5<n*]T0lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXO"84uZQ;#XD[;Y*cW;#F2b;B[qU3&ru[6:*t'5=%S"5X@Ot5Wq7m6psC/6UO1-6:+FC
+rCd<778HbY;Ys>e;Z0Pi;Z0Jl;#!oe;?Bcr<;9Dk<!#ur;Z'Jm<;BGr;H$Ll;cETl!)rbo!*0#!
+nPoQir`/nr!)rkrrDWJjs&K"srDi\ps&8tur)W_sr`K&!"B\`,=BYQ("Beo2=^(f-r`]5&r*'#&
+!*oM-s&oe5>$>'4>$5$5>?kG1>l\41?OC1J?t!MS@U`bT@esU7A,p3?AH-3FAnPaiBkhD[CB/2M
+DZ4SRE;sqYF8g:]FqJqCG^4U^I=-HkIXZcrJ:E*"rdb0%JUrFPK,'&nKnbA=LPL\AM2@+IMi<XT
+Nf]?brf@GKP*2#nPa.N"Q2['LQi<?PRJrZTRgtsZSt;RIT:hjNTq\9VU].(hV>mImW;ijrWWoQ,
+Xfek2Yl:p-Z37MA[C3RC\Gs,=\co^Y]tM.orkJBHr4rKP_o'@i_th7K`W*sWa"tVrF^J?T=]np3
+=e(.]H?*L]77^@;C,e@?0eP@55<_1c1J(,-7n,p;3&iiY4$5Yf<`T,u$WC#';c-Ci:f1%c;=DQo
+`W4'HaSj6YaS*aLb4a'Yc25^%bKS2RUl02#?!CH:?!CK8>$P<<?!LW=>5_Y;=BSa-=B8L(<E3("
+<)lmo;Gus[s'KtX@U`kZAnPdlCM[m,E,fr@G'A1WH[U?nJV/W1LP^nINK90aPEhH$R[]k>TV8-V
+VPpMqXfen5Za@0M\[oGe^VI_(`Q$!@bKS5Vd*^:ke^rF+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6
+nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s8)bG~>
+JcC<$JcG]Ko`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-LpTomd9B-lg!`ukN:mdj5JqRhVHr?g"4j+
+eC)ajcHOIKEHm&%poF+gr2][oqPaIpri,+[$($jHS"6CSWi)fpW>qe7W2?MmWMH;m['6a<Z*1=6
+Ye@fc^;.IsFG$IbW;ijsWr9!pWW9$sWrB!mW;iguWiN2uWrK-tXS8arXKDH(!3cC,"gG26Yd(M5
+Z2V!,YlM*.ZidbG\@D:Dqmlg=\GNl8]D];@\c',=]*,^W]=GHN\H'5>\c98=\c98@])oXZ^APbB
+^];4K^]VHi_SZ;iqS`BP!64uX!6G/[!6G/]s2t8_rlkDes3:bodaHUormq)#s4I_5hVdAQjQ>[j
+lM^&KlicbFnac8MoE4g^qYYpEXoAJ"h8B66!R/^cs"s9AnZ0UYkO.'!]<eqqOH5ftSQoO#X/N(s
+Wi90,>@CoG?!>"U]=PJ\[^`cQZa-g<Z*Uftrs&A^gYgc5ec+#?f%f*:f@\U%e'cV"h:Tola2lQI
+aMGU&]"5>VZEU[B[emK-[VoJZ?t!MSAS#LfBkqL$DJsN8FEMbNH$XjdIt3-'KnbD?Mi<[WOckro
+R$jG6StD^NUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]NcHjnde'ut#f\5'7h;7)JiT&t[k2tml
+l0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+14Hs*t~>
+JcC<$JcG]Ko`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-LpTomd9B-lg!`ukN:mdj5JqRhVHr?g"4j+
+eC)ajcHOI=@VTk2rJKoto8**qreUT0onWfkD00i@I=;*D"FkiKI=D-C(4LRUKS>#1KS+i-JV&oC
+O,f9\NG*?cnV@+"re^Q/qhb?/rJ1E/pkem*repW1r/:N4q2P62!0@)?s,[/>!0@&>rK6u?rfR5B
+rK?u=rfR8DqN;>NP*1rjP*;&mP`q8nPEYp-s-*JIrg!JK!gT(;r0RDKr0IhXQ^=),Q^=),R@9P3
+rgNbSrgX._S=?"<SbnrWSH>CTTDYA^Tb!ooUna`\V5C/gWN)u!XKDH(!3cC+s0;R/s0F>b[^NZT
+]=bhk^VRe)`Q$!@ai_iPcHab`daQ[qf%8R-g=k?<hVd>Nio9"YjQ?I)s60LIr9F=Js6KpVmdBQ3
+n,;bRnc/.\o_&4Ws7cNfs7lutqtp<hrVlcorf@'^j0tqTT)P98SF5Ii`72k\QCG/+V0e)RP$i*A
+F`_b#;1O7JJ:<'!:/=Yb<)QRjP)kT]Mi*FNM2D4f",)GcLlhWBqU;sSW2HGcU]-r/U8=cbUnj]W
+TqIpPV4a9FR$O2+QBIAiNf8mQL5(M@nVD*i?XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!K8#&9
+M2R=QO-,TiQ'du/S=Z@HU84ZaWN*&%YHY==[C3TU]=bkm_8=.0a2lEHc-FY_daQ^sf@\g2gtgiF
+i8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$qYu'~>
+JcC<$JcG]Ko`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-LpTomd9B-lg!`ukN:mdj5JqRhVHr?g"4j+
+eC)ajcHOI#8PDlUrDWGgp/(ffo24aKrD<t]1cRKU6UF()5X@Y$r]giT5<_7o4@DV*6:4->64-(S
+:JFMY9MS8V;>jDi;>F,d;uKVn;>F#k;,C(d;>X8b;u]es;uT\o;ZKer;u]_q;uTYp;ta,h;uTbq
+;u]he<W?%o<VBDj<<-"q<<-"r<Vfbr<W?,!=8l>%=8l;%=8H&!<rcD&=T2G'>5hY->$5!3>5MJ$
+>5_\)>lIt->5q_'=oMV)>Q%k->lJ%/?NshD?smGR@fBg6@f'[8AH$-FAnP^gBPM<urG)@J(2[r-
+Df0K3E,fo=F)uGFF`qqPGBeCZrd+WmrdFfqs*t'!s+(K,JUrE)K7el3LAcl9Ll$qEM2I1KN/is[
+OT(:IOHGZgPEV5qQ'D95!LB)MRK&]lS"-%?St;RHTV8'RU8+KZUnsl_V5:)gri,pts/Q:(Xfeh1
+riuI.!jf8ArjDm;\[h[Mrjr6E^:sN\r5&BLrknTN!6+rU!l`1!qoA]Ws2k;`-H;Hs?s?`:=BSg1
+U4d>hG%O$28Pk@>3BfGs/iGLL4Zb>Q8kDQEr^HuM3&j#!4:+)M<)Zaq;c6Rnr_i_l"&De9akOo8
+an*[RbPB<XbP'0Xc1'$XbmCA.DIHjW=^539r`Tk;>[C]@?!CK;>ZP$/=BJX,r`0A-<E<+!<E)dm
+;,QgZDdHdY@:E_XAS5[jCMRd)DfKf>F`qtSH@1-jJ:`E-L5:\EN/is]P*D6!R@B_<T:r!TVPgDn
+XKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1ieCN7(g=k?<hVd>Nj5]7`k32'olKdg(mdKW6nc&([
+oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcGTHJ,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kiV$gj5T%Uhqd,Cg=b*/
+eC2jncd'aDE,g,TV"1SaWqEFbWqr^bW"tbkSt9MiW2ckuWi;trWMlepX/MegZ2Lp*Ym%kV]Xtnn
+rP&!(s/H$urN#gq!3>pqri,jp"KA?!WN,ruri6"!poFItr2]n#qlTt(Z2V'.Z2Cm-Zi%*1['d@A
+\,Wu4\bs#C]=PM_]"5HO])TDA]_T/7]DoJA]*#XV]"@dL"1u7]^AYhJ_8#raq8!*I_>D+O`5T^o
+`;R[T`W4'Y`rF*ZaSs<]b5]T^b5]Wmbg"GYcdL:le^`7%rn%2'$/4.kiSrnZkih:1l4<4ImHs?2
+nac8Bo_%tSqu)*GY5\b)gr7CWb0J92ru:k,oW5XPkjR`3WOo?L@$+fdS6KE,Vl?YnX/c/'$"@:K
+?!G+W]Xt]Q\,Wl@[B[!>Yd1Wrs!n!/h;[/;e^W*tf%f-?f[\O%e'Z\'hq6/pa2uWGa2#F$]"5>V
+Z*:RA[emK-[WGe]?XR>PA7]@cBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OUOHPfmQ^F52SXuLJ
+USXleWiN8)Yd(OA[^`l[]Y;.s_Sa@4aN;WLcHaeae'uq"f\,!5h;7&IiSrnYk2tjjl0@U$m-X60
+n*ol<o(2MQp&F^cp\ssfq>U6gqu6NlrUg)?s+14Is*t~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kiV$gj5T%Uhqd,Cg=b*/
+eC2jncd'a9@Uj.oK)LSgM>2o$L[^*,Df^#B<IB7EIt*"GIfFfuI!Bpgqh+p#s,[2>"ceY'NK0%e
+LB<9gM>W2+M>i>2L]<2*M>N2,MZSiqMtr;6NJrjVrf6u;s,Qu;rK7,Arf@)@q2tT<rfR5B"-Jb0
+Onk.?Onk.?PP^OAPQ$dIPEbm,!gJt9r0IDNrg*SNrg<\Os-WhQr0[JMrg<_RrL*_VrgWeT#+M-Q
+SXl:@r13kZ!2'4_"/2HaU\pqeV$NrrW2ZbrX/iB%Y5YU*Yd+25!42[3)7?o_\\,Yj^V@V&`Pom>
+b0/&ScHae`daQ_Fee$Hcg"P08h;-rFi8ESQj5f;"jo=HCkPaTLl0@R"lg4$+rU'^TnGMebo(2MH
+p%J+Rq"X[\qYg9or;HTnrf-q*kIIIZSt;LET'bUmd`9RaO.35s`I!,nLfR2b:3C\Q;GDXiJ:;uu
+r_F8/<)QRjP)t]_Mi<UQM2@%DLP:J=LlhWeqU)mRVl?JeUS4?STr+`cV4s]XTqJ!UVP0HHR$X8,
+Q'.8hNf8mQL5(M@nVD9m?=.)L@Us%^B4u$qCi401EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'[l,
+S"6.DTqeH^W2co#Y->1;['mKT]=bkm_8=+/`lQ9Fbg+M\dF6Uqf@\d1gYL`Di8N\UjQ>UfkiqBu
+m-O--n*fc9o()DErq6<b!;HKfs7uZjr;6KkrVcBfJcC<$qu;0~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kiV$gj5T%Uhqd,Cg=b*/
+eC2jncd'a%7n?BM;#O>e;Z9Pk;#O8g;YX,O:^/a:3]]5f6i'(S5<qCs4?bqk7/TFP646.V9hnAU
+9heAW9i:jeqbd/epeq/jr_`Vj!)`Yjs%`Yl;>X8b;ZKer;[H?#;cH[p;c6Ljnl#EbrDWhs<)i?e
+!*&krr`9&!pJ_/n<qfVn<WQ3$r`/eqs&f8'!E`M&=T2G(=BYW*!EN;!=oMV)=o;J$=o)>%>Q7q.
+>Q%_7=]ed/>$5!3>$G39>[@>5rEKS5?XI,G?X[C=@fKpAA7B"XA7Y[N!+u1Bs(M@F&8GurCi!s+
+DJsH4EH6,@Ec_5%#'G*4GB\:Vrco`7H[L3hI=?TnIt)osJ:W<(K7ei2Knb>;LPUbCMM[4KNK0(s
+O:ID9PEV5pPa.N"QC!u+RJiTRRh;3_StDXJTV8*SUSFW\V5:&drhodpri,t!riH.%s/uO/Z*L\7
+ZO!qG[C<WT\[f?O]E>m]^:sT]rPAKMrknZPs2G#Vq8NBRs2Y)Z!6P&Z0#au=@9Qc:=]np4Sqq<$
+ASaY#854qf3B9,`.jm/)5!(GS1.au,7R]d,3&j#^r]C6_<)`cq$<'o&;c6Fh:f1"co?$LEo?6XI
+s3(/\!6t5_p<N`cr6P;drm)Y2XGh%+?!LQ<>[(E9>?b?=?<pc?>?kB6>ZY!0=',B%$<L5.<E)st
+:f:+fn5+44?=.)L@Us%^B4u$qCi401EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'[l,S"6.DTqeH^
+W2co#Y->1;['mKT]=bkm_8=+/`lQ9Fbg+M\dF6Uqf@\d1gYL`Di8N\UjQ>UfkiqBum-O--n*fc9
+o()DErq6<b!;HKfs7uZjr;6KkrVcBfJcC<$qu;0~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXOGEd)edWUR"hWrT0mX6Ze`WVNJ$QBe/8SR\LqX/i7uW;W^qW"H,+UU%/.ZELR=YckCJ
+^V%7nqn<'Bpo+4ls/Q$urMfq"XK;?#ql9Uos/H."WiGlqs/Z^4Y-+n/XKAV+Xf\\,Y-7f,!O&d+
+ZMh*0[/RE3Zj!kE['d?Orj`$=p::(3"1bqP])K8?\d5p\]Y1tj]=YZR])fLTrOi0Eqn2p?!PH&B
+\coa[]tV7sr5&EKs1n]NpVHmHrkncSpVm0P!6>)Ys2P/]ao'<\ao0@*bK\>Xcd:%ee'uq!f@S[-
+g"G*5h;7)Kj5oIekiqBum-O`=$1IEUoCV_Lq"jo>s/uA,rnPH7ai_oTrr4ABnF<Z_d,jc^WNa+E
+C1*-2S=3Pi?Djg%W2lq%>[(ZF?X@#@]tCuV\-]UQ[^<?FYHY:=NrLU-jkSnNeCE(!e(*:3hqHZ4
+eC;ptj58S8aiMQK`5]R+]Xtb_['?mB['ok>pU50M?XR;O@qB4aBPD6tD/O93EccGIGBnL^I=Hd!
+K8#&9M2R=QO-,TiQC+)0S=Z@HU84ZaWN*&%YHY=>[^WfY]Y2(q_Sa@3a2lEHc-FY_daZdtf@\g3
+gtgiFi8WeXjlYail07L"m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$qu;0~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXO9@:j=uL@U3$MXlVoM#N2"LaR+YGB@q*I"-ZtJ:2fpIXQZnI"$?dKS"f0K8"u2JV/uD
+NfB$YNK*pt!0-N(s+p]3r.t*(rJ:<,s,-f6regT2rJUc:N;S\7NW>(6NrP1<O8tFAOT(@BOSFt8
+P5LFBP5LI<P5pdFP5pdAPQ-jIPQ$gGPlR'IP6-u6Q2['LQi*6KQg^=>RJrWUS"0JIs.'+Y!1`tV
+s.'+[qk!h[rh0:b!MZ@gV#R:kV#R7tVPg>jWN*&$Xf_T*#-Y88Z*CU@rNmfX\@T>c^;%J"_SjF6
+aNDZKc-FV]dF$Fne^i@(f\"m2gYL]bhuDX7iW%m;j87p;jo=HPkNM0qlKdg'mHs?1n*p>Hs7-Ed
+o^qkNp\=O_q$6fnqtp<irVh]S+m?S8R\$.CStGB1g<I.AKRoYma3f<hN/(D,Cef+o92\RbIiEid
+J5/p:<E2pp;,E=7Nf8jRMi*@KLPLV>LP_,m$2Mu\WhuelU8+I^T`_0jW29Kfs.L4$WhuJZR@'>/
+Pa%>mNfB!TMM?kAM21VWFC&<^@:E_XAS5[jCMRd)DfKf>F`qtSH@1-jJ:`E-L5:\EN/is]P*D9"
+R@B_<T:r!TVPgDnXKA\1ZF%'L\[oGe^VI_(`Pom=b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0p
+lKmm)mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcGWIJ,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T%UhVHu@g=Y$.
+eC2glcHXO%7nQNN;>=&d;>F&f;>X8];=79\1C#m"3B'8j6:(Q8'1"lI5<q@p4@2G%6pj@05sdq7
+:]3re:Amlg9N"db;>O2c;u]bl;#jMn;>sAm:Jq$fqc!MorDW\ps&8qqrDN\or_`Sks&8qqqbmMp
+;uK\p<<-"o<<-"l<<-(s<<-(t;uouur`'#!<E8Wk!EW>#<W?)&=&rC(=Su=t=9)M&=9M]-=]nr,
+=nl1t=oV\)=TVf2=oMV)=oDP'>PhS*>?kG1>Q7t3?<plD?iFI5@/sg7@KU+L@UoCJs(24DrFZ+D
+r+Z1G!c2^jrb_dUE,kkts)\-\s)n<as*+Kf!I9"iHPV!UI!pHmIt3'#JV/T.KS>/8LPUbDMZ/P6
+N!PE'O,oBaOckk+P7!P>Q'R`&R$jA2Rf8fUSH#,jStMaMTq\9VUnji`VP^8hri#jr!36%!s/c7&
+s/uC,"1#8>[/RK5[L0LS]">Se]t_=t_#;+L_Z%IN`;[aM`W4*Za8X0XaoBNYb9Y0-I:?G]=]np3
+>FL=cB2i)#5>=ajO?#Ee3%H=4/O)?O1GVQ$7g;CM2`NcZ48q>C4')>[$WU,(<)Z^m;,C.d;";`b
+bkB<]cLfHZd/;5hd.tugcHlC7rm(_NN,W64r*'b<>$>'6>[CW=>[(B:>?Y*1=oDD(<``:%r`&tt
+;>sJ^:ip#N?t!MSAS#LfBkqL$DJsN8FEMbNH$XjdIt3-'KnbD?Mi<[WOckrpR$jG6StD^NUo(&h
+WiW>+Yd1XE\%0)_]t_A"_o9U8aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0@X%mI'H3nF?)?
+oCMVRo`Fj]p\ssfq>^<hqu6NlrUg)?s+14Is*t~>
+JcC<$JcG`Lo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-h6]pmd9B-lg!`ukN:mej5T"ShVHu@g"=p,
+eC)akcHXOGCjUYjXmiF_X6ckcX8K!qW=c(tQ(O_?V5C5iW2cksVQ-_sri-'sUp73'YlD!0ZaB_H%
+)'Bg^:h7p]=b\aWN#ips/H$urMp+%X/`2#X8K%#X/rE%X8K!rX8f3sWrfB)Xo>L&YPkU(Xo>L%Y
+Pta0Z*L^AZa9Y<rjD^3s0Vs;\%&sC\H'/;\c')>\c'&:\c95@]DfJA^&,GA]`5YF^AYbF]`5\D]
+`5VC]E#\F^]2+F_#V@H_>hCL_u7LW`Pf^6`Q%ks!6G/[s2b8`rlY;arQ5&]$d6f?cHjkbdaQ^rf
+)=23f\+s3gYLcEi8WeYkNV9tli-5YmI'K5oCV_Lp\=U_JcDnQ#2IGFbKS8Xrr<#n1@X\4^"_o?g
+o&PeG@6M?S"#p[?`0s'W2cq(>[(ZG?X@#B^:_(g\@8rX[C*?GYctC=NrLU.jkStQe^r@&eC`[:i
+SE,;f$i*uk2G%=aN2KK_o9C)]Xt__['?pC['ok>pU50L?=.)L@Us%^B4u$qCi401EH?5FGBeF\I
+=?]tK7nu7M2I7OO-#NhQ'[l,S"6.DU84W`W2co#Y->4<[C3TU]=bkm_8=.0a2lBGbg+P]dF6Uqf
+@\d1gtgiEi8N_VjQ>Ufl07L!m-O-.n*ol;o()DErq-?dp\4[^s7u]kr;6Hjrr)HfJcC<$r;V9~>
+JcC<$JcG`Lo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-h6]pmd9B-lg!`ukN:mej5T"ShVHu@g"=p,
+eC)akcHXO9?tsS&L]*&&M>rJ(M;F%(F)Q2EFaSRbI=?ZpIXQ]rIXZ]nH[CGDK)gT(K*73qOH,A#
+NW5"BN/ijTLkt_Zpk\9n!/g]4s,-]3s,?`4r/Lf=NrG+>NrP18OS4e:OT(C>P5UOBP5^RDP5LLH
+P`q;oP5UUDPl?mGPR!D:Pa.N"QC%T9q3D#Io9fND!LT;SR/`TOR/WNRRK]1NS=?"<rgNnXr1!_V
+!1itXs.B7_s.KOhUSOacV#@+iVZ*LqWN*#uXT5O'Y5kg*YpZlb['d<M\%0,a^;%M#`5Td;aNMcN
+c-FY^daQ^tf@JR*f\,!4gYDea.c0(@i8NYSioB%Yj5f=`k2tjjkiq?slKdg'mdBT6nac8BoCV_K
+p\4IXrqQirqtp<hrVc`pMZ4[_]r%?lT:MUHm,?U>agAI,OIsM@\UUi)>u#01rcABD:OdnEIXltJ
+:C:*$;Gp@gO,o<\N;e_9M2M:f!euJdOT-j,dCcNWX/)McU7n<UW2Q\nUnjcZTV/BaTpqF:Q^X,%
+P)t]aN/<FIL5:]ULicp/?XR>PA7]@cBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OUOHPinQ^F52
+SXuLKUnsufWiN8)Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkbe'uq"f\,!6h;7&IiT&tZk2tjkl0@U$
+m-X91nF?&>o(2MQo`Fj]p\ssfq>^<hqu-HlrU^#>s+14Js*t~>
+JcC<$JcG`Lo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-LpTomd9B-lg!`ukN:mej5T"ShVHu@g"=p,
+eC)akcHXO$7SHNNrD<Ago2,3Zr(ufYp.u/W1H7BT6UF()5X@Y$r]gNL5X><3!(?`Ps$H`Q##.lf
+9MJ2Ur_3Pi9h\5Y;Z0Jg;YF&g;Z9Vm;?9]or_`Vlr_rhps&8kqqc!Jlr)3_r;,L4ir_iJhrD`Jj
+!*&Sjr`8qsqc*Sqs&Attpf@Dps&]5$s&](u!*B/#!EWCu=nl+t=TVc/=Su;,>$5!3=]np3rE0,(
+r`K5)qcO&*=BJ^0r`f5&!aAo8r*98-ra#t>?sm>L@:E\U@UWaF@g6CPA7]=_Ac?<?BE)]GCB%uM
+C2@^'rbhaS!H<&XEs?Z+F*)JFFT$@^G5lddGlN'hH6%?[I=6QnIt*!"JV&N,KS5&6LP^kFMMmCO
+N/`jYrfI,As-"[lQ'@Q!QC!u+R@0M4S"#q<SXuFFTV8*SUSFW\V5:&eVl6QnW;rsrX8oC%Y5b[<
+Z*L^C['d?N\$rlX\[oGe^:qA]_>hFL`;dgS`r=$Xans6\anX$XbQ#fac2Z'Ubb9Mo?!(63>$5's
+Hu<G*;cc7R8S!un3bpK&-T!A=4ZbGU8OuBB77K3r3'98`4?P]+<)cjt;c?[p;c6Ig;,C'fbj*I5
+cMGl`d/VMjd.P]bcLoN]d/D9"ZB&s5?<LK9>$P<:>$:i0!F8t/>7=\>=BAU*<``C'<`N3"<<6#q
+r_i2]FBr3[?t*SUAS,RgC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*D5uR$sM8StMgRV5L8l
+X0&P/ZEpsI\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P6;hV[8Mj5]4_k3)!nlKdg'mI0N5naZ2@
+oCW%T!quB_rqQNhs8)ZjrVZZnoDX=@JcGZJJ,~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bXCN+NKQ*("drN5:bs/YXhorJ(ls-a1\?Y3rOWiE&tWY_P2X/`+uWMH8nZEg^?ZEppD
+^;%@m^qK]\!PQ)C])]D=WW0!sWrT7#X7WLkX8f:$Xnf'uXT5O"Y6;)5YHG&,YQ(j,Z2Cs.[.q'/
+[KF%K\@DCGrjW'>\@B*I\cK@OrO3*C\[oAa]=bei^&GbF^&PhF]`>eE^B;3`^:jBUs1JQL^V@S"
+pqZsIr5&6HqnrBN!6+rU!6+oW!6G/["3AU,b5KKbb/qd)apcJ;cHXY[d*^:ieCE+Kf)F;Cg"P39
+h;@,KioK7ckiqBulg4!*mdT`9oC_kRqYU5Bs0)G,g=+6gc-Oc9s8VpBo^&Ztea)Vb[`tD#K9'E0
+S=NhjW2unsW2ch#>ZtTD?<pdL]t:iS\-TXR[C!3CYHkHos!n$/hWE_If@JO'gZ%2Ni7Q]6eC2q1
+j4ql$aN2WD`4s!t]=GAWZ*LaD[emK,[X)1b?XR;O@qB4aBPD6tD/O93EccGJGBnL^I=Hd!K8#&9
+M2R=QO-,WkQC+)0S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;TJc-F\`daZguf@em4h;-uH
+iSrnYjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Js*t~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bX?!qDdI#@lYp5/d+nqlIare^W1#'4g*:K:GGr-o-(I=6WqI=6KiH%^j)rdt]8K7f5G
+Nf9$ZNfB$YNJmap!/g]1qhOs&m>:h"r/:T4r/:T6pl564r/Ui>rK$r>s,m5@plYK9s,m5BqN:`>
+r0.,E$Bp^=Q'IT!Pa%Arr07>JQ'M?7!13\N!13YM".,=>QhZsJQi<BNQi<?QR@<l<s-a([S=H(=
+rL3eWrL<eV!1iqWrgs1`rh0@eU\^bdV>d@lV[06#WiN8(Y-+u-Yl:mLZEpsH[^NZU\\#Je^VRh+
+`Q$!AbKS5UcHjkbdaQasrmh,&g&'J.gYCW@hVR2LrSf6cjQ#=^jlY^gkNV9tm-O0.n*oi;oCV_K
+p@\.Rp\=R\qYU0frVc`pM#T0t^87QrT:VaLm+U.;d(?K5Q(,J8_hY(3BjkaPF`he":k4.HJ:N3#
+:/=Va;c6Ihrf@)<$B'k&M2@%ELP:M>OT-j.dCcNWXJVegUS=KZW2Q\qUnsfZTV/HdURIU<Q^O&$
+P*(cbN/<FILPUfVLjE<4?XR;O@qB4aBPD6tD/O93EccGJGBnL^I=Hd!K8#&9M2R=QO-,WkQC+)0
+S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;TJc-F\`daZguf@em4h;-uHiSrnYjlYail07O#
+m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Js*t~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=b*/
+eC;pocd'bX7S$-F:]+&g;$'Qk;=dWZ;=m]R;>sAr2`NcM1GqMq5m]eB5!M4o5!;8"rBg`S6UOXD
+:]=#f:B!ua9_MBN;u]bo;u]_s;c6Nm;uT\m;uT\i;[$-!;GpFlr_iYm"B&/r;H*Kmpf75ko2Y`i
+s&9;*=&r@%=&r=#<Vof$=&r@'=BAQ%=8Z+t=8l5#=SQ%n=9)M%=T)D&=Sl5$>5_V'=o_e'=U826
+=BJ^0>?b80=o_e+=o_e*>lJ"3?=-uD?N+=2@/aU:@:EaG@fKp<AH$0>AdrBdB4kmkC2.O!C2@a'
+rbVgVDf9T6EVsh[EH6)@F8L(kG'A.TH?spbI=?WpIt3'#K)U<EJqSf2L5(J=Ll%%KN/`gWO,oBb
+OcklkPa%GuQC!u+R@4&C#+M-RSXuIGrh9@ds.fUis/#an$)ji&WiE,#Xf\c*YPbX)Z37PB\$rmH
+\HTRV]Y(qmrkJQN_Z%LR`W*sUa8a6[ans6WbPfZac2Z#cc2>lbcSi:`@U*&>>$G-8PAY8LC0==u
+7S6dEI61(X0Io"45!D(^1J(2/84Q-=3&ii[3]oMd<E)pt<;]Z";Gg4d:f#B^jj3&8s3LGdr6GAi
+qp5,arltGf!6tMg!R8phci)5hcQffXEFW6X>?Y38?!CH9>?Y9;>[:T==^#$3='/O)=&r=%<EB*!
+!E2kp;X[G.>[CcF@:E_XAS5[jCMRd)DfKf>Fa&%TH@1-jJ:`E-L5:\EN/is]PEhH$R@B_<T:r$U
+VPgDnXKA_3Za@0M\[oGe^VI_(`Q$!@b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0plg4!*mdKW6
+nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s8;nI~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXR@E,p2TU]%:SXn8[kWq*4jYqMN4QX$8gXf8;"X/;hpVl?hrU9Lu/Z*L^@Za@*S^V.7p
+^q[Us]Y;%j]=5>^[^Q.6"KJN(X/kinr2ot"qQ0b#rN-(&ric@+!jSu6ric=*!3uL,riuL/r3QF1
+qm?L6[C6"Cq76L7"1PeN\c',=\c92>[g]dW\[oDc]Y2"m^VIY`^Au(K^Au"I^])"R^V7Fq]Y2"m
+r4W*Es1nWMrkSNLrPJTPs2"fS_Y_7K`;RXZ`5Td<aN)?ua8j?]aoT]0qoT8jcHXY[cd:(fda\9H
+s4.h7f\"m1g=tH?hr*JSjlYdjl0J<7%.<WTnalDHp\F[^r;M9IZ2ajW!R/jgd/O&%r:TaPXiArU
+mbFPZVL+&WA"0']>[Uj<WN<&!W`r\2@UEGH>JIka]",8Z]!o,TZ*CF9Z&Sc4jl#Fef@SU)e_fBF
+io&MAf@JC#jl>1Bb/hZK`5BF)]Xt__['HsE['ok>pU5$G?!^lG@U`kZAnPdlCM[m,E,fr@G'A1W
+H[U?nJV/W1LP^nINK93bPa.T&R[]k?Tq\?ZVl6VrXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Ln
+f%8R.g>(N@hr*JRj5oFckiq?slg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s8;nI~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXR6@:O%lJc(>tM>2u'M<0QjM>r5.EtWIeG_(BpIsuosI=?TnIX??nLAll+K*d6bKoV4T
+N/s$[qMbT8MMmAfM#W8*M!^'!MY)i,N;AP2Nr4t6OSk7=OSb1:O8tFBP4t(=P5CFCPl6mDQ2m3L
+QMd$JQMQsHQMm-MR/WHMR/`NOR/`NPR/`QSRf&TPRK]+JS"-">rL<nXSG\lVS,f,TT)P>aTV8'R
+rhK@ds/#^l"fJ;tWN3-"Xobf2Yl:m.ZEsP;!k#MIrj`rY]=ktq_SjI7ai_cLbg"GZd*^7hda?Ll
+eC=KJs4.;(f\"pWgE,/+hV[8MiSrkWjQ,FbkND*qlg=*-n*ff9nac8Cp&=Xlp\=OZqYL*erVleN
+s"NuXVPBcVTVA+Ge_8?k_6no^S$(/@H'EJ[A84n_G'-MV:4[kFIt)uE:JOng;c-BjNsq#,MMmLP
+M2@"CL51PGs"")s^8n-5WhcD`U8"TcWN3(rUnaZWTW>#eR[KP0R?NkuOcGH\M2I%CM2C_XE*Q[T
+?XR>PA7]@cBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OUOckroQ^F52SY)UMUnsufWiN8*Yd1UC
+[^`l[]Y;.s_SjF6aND]McHjnde'ut#f\5'7h;7&IiT&t[k2tmll0@U$mI'H3nF?MK!V>s_o`Fj]
+p\ssfq>^<hqu6NlrUg)?s+14Js*t~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcHXR#7nHBK;>a8i;=.3W;<h!O;$K9O3&W]H4T.PP5X@\#5<_:r5!Ag2#=LpG6:4OE:&[fi
+:/+GV9hkR[!_Z3ZqbdJo;H!<hrDNVnrD`eq!)`_nr)<Dhr)<Smr_req!)rhqrDW\nr)<Pl!)r\m
+qc3PnnPoZl<E3)s=8Gts<sMi/<``C)<`]3$s&T/$s&T&!s&f;(r`K)$s&]M/=BAR+=BSf+=8uA&
+>5h\%=9)M"=oqo3>5_V%=ohc.r`T5(r*0/*r*B>/s'>S0ra,Y5raGh:&n5?\A7]@bAS,OeB4tsk
+BPD3rrbMLLrG;OPrbqgUs)IpT"*/I)FT$@^G5lddH2i6kI/eZtJ:W:MK)^H3KS>/9LPUeDMMd=M
+NW+qKO-#KePEV5rQ'R`&Q^F20rgWqX)kERmT:hmOU7n<VUSXfaVPgAlWN*#"XK8P-YPtd*YmReC
+['d?N\@K2_]DfJC^'VQi^r!t+_o0O6rl5)]aiaS+!R&^`bPfZablQ,7qTf#br6Y;f!h+aMr*([V
+>)[*4AmnqF5tFOBNE/#&0eP"6/O)B]0JbLU84Q0=7QEFf4ZYYe4&o5Y<W>u'<E)pr;,L.e:>+"o
+dIbf^ci;;hchu)Rc2GrecN)8hci)2n[ZYZA?2e(A>$YB;=^>69>[:Q>>[(?7>?P#)=8u;%<EB*!
+!)rhomndt.?!^lG@U`kZAnPdlCM[m,E,fr@G'A1WH[U?nJV/W1LP^nINK93bPa.T&R[]k?Tq\?Z
+Vl6VrXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@hr*JRj5oFckiq?slg4$,n*fc9
+rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s8;nI~>
+JcC<$JcGcMo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-h6]pn*TK.lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXODEd)hbWW&t!Xno3kXnf-uXnf'aWt2/0Y-5*sP_>I$W2?MnXK)9!s.ok)Z*:I;rj2X4
+rk/<HrOriY]tCtf\[]8]\[JrPWN)u!nZ;AbpoaY#rilC,!OB!/Ykt^)ZN%91Z2q;=qmHI4s0qp9
+qmlR5rOMs>qRI!D\[oAa]Y2%n^V@S`_#V@N_>h=N^]2+L_#V:M^\khF]`>hE_#M7M_#M7M_Z.OR
+_u[corl+oUs24iS#K=^%`l5p:`r=![aN)?ta9'K+b59?_b00e/#L:ZBd*^:jeGRiBf%8R-g"Y9;
+hV[5Kio9%]kj%I!m-O--n*ol<o_%tRq"adardk*Ts8UaTbg=bbdf08'rV?0XXiK#UnEHd`VLaGa
+>FV.Q>[Uj:WN)ntWa&b3@UEJI>ZneS]"5A]]",5UZE^X<ZAnkojPoIlg"4j,f&G]Jio/_mf,)le
+j5]"DbK7fL`507']=YV^['HsE['ok>pU:*,F'`3]@:E_XAS5[jCMRd)E,fo?Fa&(UH@1-jJ:`E-
+L5:\EN/s'`PEhH$R@B_<TV8-VVPgDoXfen5Za@0M\[oGe^VI_(`Q$!@bKS5Vd*^=le^rF+g=tH>
+hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojdq#C0hqY^6ir;HTdrdk*#s8DtJ~>
+JcC<$JcGcMo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-h6]pn*TK.lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXO7@V0CuLAQf$M>2u'M<0QjM&(SkJqSesE+3p9IXQ]pJ:E#rI=$<qL&HZ(K`m'`NK0)!
+NWkE&O,]*Xreq#=MMd4HL\Z`+M>N,,M>iD3M>`>2M>E,.MZAY6MuAV1NVnh:O8b1<O8G%;OT:LB
+O8b7@Oo1:@Oo:@COckn%OoCOCP5pjHQ2d-SQ^3r(R$X0=Q2m9IQN*9OR.lsIR/WHKR/33NR/WKW
+R[KS4S!j2CrgW_Rs-j"Yr1*k[TDP5YT*(a[Tq_I["JVZdV5=-f$E'i$WiE,$Y-+t4rNQC/Zi7<6
+[C3QRrjW9F]=kqn_SjF5aSj3eb0.uQbg"GYcd2U;!7Ceo1"4Y&f%/I*g"Y<<h;7&Ii8WeWjQ,Id
+kNM3tmI'K5nac8BoC_eMp@n@Xq>1!cr;Q\Ks$6+hVPKiXTq\:IgtU2u`4LYeSZU)ZI#<Dc@r=n]
+FEL;T:4ReDIXclD:JOnh<)HIfO-#?]Mi3URM2@"CL51SGs!lL3Wi3&(V5'`YUT1;oXK/:qUSFES
+WMubbS!fV1PEV,kNK/sTMMHtDM=??$>]X4Y?t!MSAS#LfBkqL$DK'T9FEMePH$XjdIt3-'KnbD?
+Mi<^YP*;/sR$jG6StMdPUo(&hX0&P/Z*UgG\%0)_]t_A"_o9X:aihoQcHstfeCE1&g"P3:h;@/L
+ioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerqQNhrqcQirqu`no_sFAJcG]KJ,~>
+JcC<$JcGcMo`"jgrqu]ks8)ckrV-EfpAX^co^i(Q-h6]pn*TK.lg!`ukN:mej5T"ThVHu@g"=p,
+eC)akcHXO$7S6BL;>X2i;=.3W;<(LO;&MS^5XIaq3%m?W5=%S#5X.Iu4[)"s6pj:/r^.#Z6VgKP
+9h\5U9hkR[#>Iib91qlN9Dqce;ZKep;u]bo;>sMn<!-&s;,I6hr_r\lo2GNcr)<PlrDWYm!)r\m
+r)NSmmT'0d#?Y&/<`W:'=T2D$<rZ5%=BG?""B\`*<EK'"s&o>'qcO&(=]ea,qcEr%=BSi,=o2>$
+=o2D&>6.o3rEB,'s&f8'!*]5'qcs/,s'>\4qd'J7?XR8M@q>RKs()+?s(2FIBPD0oB`;]ICMIV`
+CH63JDJj</DJsH2Df9T6EH-#=EcH,?FED\KGBS1SG^=[_H[L9mJ:W9'K7\`/K7el4LPUbCMMd=M
+req2DNfK3`P*;,qQ'VE9s-O7`R[]h<SXuIGTV/!QUA^i$UnsrdW2Q\qX/`5%XKAV.Yd(I=Zi7<B
+[C3NR\[oAb]tM.p^VIY$rPSZRs2G#Y$-C?5bg+P]cd'i8c2Z#eblZ28c2,]gcd:%bchu/]d5SFd
+@9Zr>>?kB:L2CpC@UE;)8P2^+ME3p`0J5:55<V(]1G_Ql84Q*<2`Nf[3]fJd4&f3Y<`Juqs%rko
+;GYd+de_Afd/))bc2c,ecLT6QbkoWbcMl&hcHZ@6rm1Sjrm1Vk,J'.]A6`AD?!:N=>?Y<9>[(K=
+?!:E3=BSd.=]SU)=B8I&<rQ)%;c6Lj;X[H^>]X4Y?t!MSAS#LfBkqL$DK'T9FEMePH$XjdIt3-'
+KnbD?Mi<^YP*;/sR$jG6StMdPUo(&hX0&P/Z*UgG\%0)_]t_A"_o9X:aihoQcHstfeCE1&g"P3:
+h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerqQNhrqcQirqu`no_sFAJcG]KJ,~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrqQNf!;?Eb0D+l,o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+e^W$pcd'bXB5r9IN2s%]Xo>L$YPt^!XoGR"YPYL#XnJjpX8T.!X8f+*WMcbtYHjL\PFncPW<TE$
+Wi`.pZi737ZaI0K\%KJjrOiu\^V.@o]=PVb\[])V['R0JX/i>'X/u6"qlKaus/u7$ql]k#rNH:,
+r3?=-rilC,!j])9rj)R1rj)R1!4;^4!k,SIr4)a:s186@q7-./!4`$="M24W]YFH]s2"NJs2"]M
+s1n]PrkSBF"MVRb^qp#crk\TLs2"`Ps24lT"NA=!a2[nns2P&Yp;d<WaN4A&s2t>aqp#/ds3Chp
+dF$FmrRLr!s48LJg"P39hVR/JioK1^kNV6rlg4$,n*ol<o_%nNp\=U^r;HVGs0Vh+f`BIFrmLfG
+&H;M!nZKaZjmqc:WPtNbNa)LQ**ZfWWN)nqWiK?/>@CoH>[:OJ]t1ba\[oA\['Tb9!4.[bs5YQo
+nCuUIf@]3Gio8qSf[nj)g#V8QdEBVOc,7B5^:_(h[^<?G[^<L?[J.+V>?kH@?XR>PA7]@dBPM=!
+DJsN7F*)SLH$XgcIXm!%KSG8=MN!RVOckroQ^F53StD^NUnsugWiW>+Yd1UC[^`l[]Y;.s_SjF6
+aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0@X%mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`n
+o_sFAJcG]KJ,~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+e^W$pcd'bX>%25`G)+S(reLQ2oSEF%++A]gIXcp#K5kpMG("jhIXlfpIsZNsKS+o1L4tA:NrG+:
+NX1])NK&sWMMd8hL]E5.M#W>/M#N7tMYrA4MZ&G7MMmDlN;\b7NWY?&O,s0urf@#>rfR/@!0@,@
+!0R2@!0R2@q2kZ=rK.2FOckt.Q2d-OQ^3s:QN`bER$a5,qj%5Krg*AH#+1aCQC!r*rg3MLnsKNI
+S,&KQS,8]USc##XSc>8]TDP5YTDtPaU&:W*Tq\9VUSO`_VP^8hW2ZetX/rG+YHY:9Yd(L?[']e>
+rjVp;$+[[[]Y2(r_o0Om`rF(BaN;QIbg"AVc-FV\d*U1fe'ljtf%/O.gYCZBi8ESRioB([k3)!o
+lg=-0nF?)?oCMVIp@n@XqYU0frV_?J"nod1US4C\U,VDmgsO?c]nDQ>W63S<J=UmpCJ&blF\GY.
+IXuutJ:LEl:/k1k;Gg8POH,<ZMiE[PLkgbAKnk`h&CeFpW33D%U8"EYXfAG'X/c/p(7h2#X/;GW
+R$a>+P*1rfO,]$RLkpnEn;)Eq>[:]D?t*SUAS,UhC27X'DfKc<FEVkRH@('hJ:W?+L51VCN/is]
+P*D5uR$sP:T:r!TV5L;mXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=a
+kNM0plKmm)mdKW6nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#s8DtJ~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrqQNf!;?Eb/+iH(o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*/
+e^W$pcd'bX77^-I:ZP@L;;b7N55dYE56O822E*\r5Q<tU5<qFr4[_Y(6UX?A6N^+Z:JLg^!DZAf
+9`Iic9E.Te91hcR;Z9Sp<;TSo;Z0Jj;@$3!;Gg7d:f($a;Yj;l;YsAm<;0>j;YO,f<<#qu<;fhn
+<:s5k<;TYr<`f0#r`9&#!*9)#!*9)!s&]5$!*B,"#?P#/<E3.'=oMP&=oMP%=o)5*=]ea->$4s0
+pf[W!!*T2&r*'8,=^##)>Q.e+>Q.n,>6A,9>[./3!+#G-"^bYF?X[FB@fU'<AH?CUrb2=Grb):G
+rbD@Hs(h[Prb_^QrbhaTs)J*\rc/![rcJ0_)0^=NH$FRZH?sseIXcitJ:W?*KS>)5LPL]bM>rG5
+MuJ\8NW5&+OckllPa.Q%R$j>0R[]h<SXuIGTV8'RU8+N[V5:&dW2Q\pWiE,$XKAV-YHY79ZF%!I
+\$rlX\[oGd]tV7r^qmkd_Z7XS`W*pYa2n,!qT/][!6kGf!mf0;r6PDgr6P,brR1_nrR*=<N+?*p
+>[(K<>_@!9BOkLS5Y+O?EfrCD8MMhU.R$$Y0JbLV7n-!;75m1c4?NO)"?TXa;cW`os&&qq:Japb
+eG@Yjde_Afd.u#acMGfcbjWgHcM#T_d/D?:^R'"Q>[1K=>[:W>>[:N<>?tQ@>?b'/>$>!/=B8I*
+<E3(#r`')";H$Ijmne@8>[:]D?t*SUAS,UhC27X'DfKc<FEVkRH@('hJ:W?+L51VCN/is]P*D5u
+R$sP:T:r!TV5L;mXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0p
+lKmm)mdKW6nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#s8DtJ~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqJAFp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bXBPr0IPHM!gXo>L$YO\jeYPt]uXnAb,V5L2gVPpMqXg#$mOdW2LWrB%!V>de+Yd:aE
+[C3QYrkJKF"1l1]^&GVS]",A_[^<KMZaR9JZE(%+qQ'Xt!j/Q*riQ(#riH1'qQKe#!3uC+s02O.
+!OB!/ZMCj,[/RK5[K*f7\G`r<])K8:\G<]8\Gs,>\Gs)C]">Sf^;0`a!Q)bO`;RRL_>h:O^VKi`
+#Je0k^qmh$_"b_G_Z%IQ`W*pXa8X0[`r<sW`r=$Ya90K(aiXM&s2P,\qT/`[rlYAecHcF6#0tQ@
+bg"J\rm:_qrmh&"-eI#'g"G*6h;7)Kj5f@ck2tmmlKdj*mdKZ8o(;VJp@n@XqY^9irdk*Xrs%<5
+dF-IleGfJ)rqc?ZY.rNImdAo0dC*hQOIMc1>@Cj:WMc\pWi90,@:EVL?!>"V]=PM`]=YP[['?m>
+ZAnl5jQPt$hq?W5gumhZio/bHfA,!2j5o:JbfRrK`PTF*]tCqb[Bd*H['ok>p9t!+DI-[X@:E_X
+AS5[jCMRd)E,fo?Fa&(VH[L6kJ:`E-L5:_GNK90aPEhH$R@Bb=TV8-VVl6VrXfen5Za@0N\\#Mg
+^VRe*`Q$!@bKS8Xd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4!+n*fc9rpg*]o`"Lbp@n=\q#C0i
+qY^6ir;HTdrdk*#s8DtJ~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bX>[hDbI,0YSMYr>1MYi80M#3#HI!pEjI=H]qJ:`DmD0(,QIXccpH\R6/K7s5Y!JQ:,
+O8Y(<NsU`'NK&mSMi!7IreLQ0r.tB1rJ:Z5M2@+Hm#(_!!/g`5re^`7N;S\6Nr"h9NrG+;OT1I=
+O8tF;OSk7@OT1ICOT(CBOogi3Q2[*LQiEBOQiEERR@*r>rg*ML!1*PL"IPOBR$[f<!13PLopPiI
+rgEeTr1!YR#aq-OS=?"<SXo\K!1j+\rh'.\"J;?ZT:l.VqkF(crhT[nVl9Tps/Z.#!3Z=)!O8s0
+ZN.B3[K!Z<\%&uY])9/D^;%M$_o)Jl5/kO_aN;TJbKS5UcHjh`d*g@keC<%$f\,!5gt^`Chr*JQ
+jQ,Fbkih9qm-X61o(2JGp%J1Uq>1!drVZWnK)YrO_Pa70U&Ul-ld+A7bf@GNOe&Dge[0k9McFV/
+G'.q%;GM^kIf=j6Inid=<Dugn:lpa!Nf8sXNJ`OKLPLV>O8g]]]r\<<ZDXFlU8G,qX/rA$Unji]
+UT1>lSXPt6R$<esOcYT^MMd4GM2C\Ws'0GJ?XR;O@qB4aBPD6tD/O<4EccGJG^=^aI=Hd!K8#&9
+MN!OUOHPfmQC+)0SXuLJUSOfdWiN8)Yd(OA[^`l[]Y;.s_SjF5aN;WLcHjkbe'uq"f\,!6h;7&I
+iT&tZk2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+14Ks*t~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2glcd'bX7S$-F:YekB;<gsX4oIPO4?l"o5s[Cf4$Gk-5Q<nY6pj=.6psC06:+ID9he;T:&[fm
+92&#R9MA)P8kf4V!_GpSr_rhrrDWYms&&Si"Aquk:Jpsd!)rkpqc!GkrDN\onl,Ne!*/tsp/V&j
+!``3!q,RGos&K(urDikur`B&#rE&kss&K&!rE'#!#$+f-='&F'r`B,%rE9,%!EiV*=9_r2=]eg0
+=8Q,"=o;J#=o;J'>6S27>?Y05rEK;,rEBP2>?b?;>?kE;qcs,+s'>k7?=-uF?i+72@L-ISAS#C`
+AS,TQBEDg[C&2TECB/2LD>nDVE,T`9EcV/#2KX(aG'A.TG^4R\H[L3fI!g?kIt3*%K7nl1Knb;9
+L51SAMi3OQNK&sZOH>TgPE_>tQC+&.rgWqX0:nf/TV8'RUSFW]V5C,fW2Q\qWiN5&Xf\b0YctF>
+['[6L\$roY]">Sf]t_=t_#D.N_ScAkrl,eqaN2KFb/hWA_ns1&^VRe+`lQ?IcI(%crQtPkr6YJk
+rmL_np!c@JO(;Hu?!LZ??%?R-BObIT5Y"I?@$4t\G<%031Hmr`0JkOU7n6$=77K6r4?Pbh4?HSD
+<)upr<)Zap;c-Cg;:O+le+qGgdJ;/ccf`UAcg]<[d/_Vmd1OgDR<<%G?!:N=?!UW>?!CN<r`oq9
+=]nj0>$"^,<`W:'rDrqu"B8;u;GljYs'0GJ?XR;O@qB4aBPD6tD/O<4EccGJG^=^aI=Hd!K8#&9
+MN!OUOHPfmQC+)0SXuLJUSOfdWiN8)Yd(OA[^`l[]Y;.s_SjF5aN;WLcHjkbe'uq"f\,!6h;7&I
+iT&tZk2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+14Ks*t~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q-h6]pn*]Q/lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPTDK'iOSc,\iY4SpnY4AdgY5#.!X;.k5V5:)eVl6MlXK8J-Q^*r6W2ZYlr3H[9[C3QR
+]tD%nrk0#\^qICn\\#A_\%&rV[(!NNZa@$FqPsb#Xfeh/riQ=+Y-.]+riZ:)!3lF*!3l@*qm-4+
+s02O/rj)U1rj)X4Zi%30[/dZ3\G`u<])B2:\GEc9\Gs,>\-KRU]">Vg^;0`a!lDjnr5AcV_o'@j
+_>_=N_#V:M_>h:U_8*k&^q[Y"qSE3K&AuH)`Q#s=aN2KEaiDE@a2\(urlG,[s2G)[aSs6[a90Q,
+aiaM(!mT$9rQYAfs31hpcd:(ddaQ^rrmhM0f\"m2gtglHioB+]roX7D'^4lLmI'H3nac;Dp%J.T
+q>0scrVhBJ[f6Qgh9sa#e("?r1]-q;Xfg46mdAZ4d%G\oO^O`N=^td:WMlepX/T</>%:rH?!P.Y
+]Xt_d]Xt\^['Hs@ZAnl5k3MF+inE#;h<F+^iSiVFg>LZ@io]:Mc-",Ka25[.^:_"c['I$H['ok>
+p9o<P>[:]D?t*SUAS,UhC27X'DfKc<FEVkRH@1-jJ:W?,L5:\EN/is]P*D5uR@B_<T:r!TVPgDn
+XKA\1ZF%'L\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8B
+o^qhLp@e7Zp]1-hqY^6ir;HTdrdk*#s8N%K~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q.Ilorn*]Q/lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPT?t*kjIYs$?M=QQ%Mu/D/M$&*PI!tpAs+(Z1KQ1pNH?sscI"m<.KS98Xs,Ho9s,RbN
+Nf8sUMi!@MM27%GLPUbAM#)u2M2I4Lreg`6onia-r/1H2!/g`5s,-i7rJ^c9qMtT:!K`BANrG+=
+OSk17O8tF=OSk7@OT1ICOT(@BP5^XFQ2[*KQO&tFR$a>1R$a6>Q3EV@Q^=#(rg3SNs-EbRQi<<N
+Qi*6MR/i]RRJrWYR@9M2R[a;FqO@MQ!h5^MrgWqX!hGjPr1<kZs.97]rgs.^s.BLgTV/!Qr1j:f
+s/#an!3,mr!3?(""0Si3Z2V$1['d=@[K*f8\I6$^]=Y_g]tV7t_SZ;j(WFD7a2lBFbK\;Xcd:%d
+daHUneC<%#fDaJ'g)o))hV[5Lio9(]kNM0qm-X92o(;VKp\=R\qu$Bjrr.KK5l\m'VP0`YUSI.o
+gsaNg^4V$.VSpu]L9,T*:2E[KF\G\/J:N-"It)uE:ek"i;Gg;QO,o<\NfK*XM26tCL5:oj-J6&6
+Xfo(1USFW`YH=k,X/MkjVPBueX/MSXR@'>,PEV/kNK&gRreLQ2mtc<p>[:]D?t*SUAS,UhC27X'
+DfKc<FEVkRH@1-jJ:W?,L5:\EN/is]P*D5uR@B_<T:r!TVPgDnXKA\1ZF%'L\[oGe^VI_(`Q$!?
+b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo^qhLp@e7Zp]1-hqY^6ir;HTd
+rdk*#s8N%K~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q-h6]pn*]Q/lg!`ukN:mej5T"ThVHu@g=Y$-
+eC2glcHXPT7S$3K;;G(9;>!`s4?Yej5!;%k5X.M"6T?ta4T.DT6pa:/6UX:/6:4OD9he;T:/:d^
+!_l?^r_!5`rCd#ZqGdDl!)iboqGR;is&&hqr)3MkrDNYor_ibnrDNAg!*&nq!*&krr)EJlr_ru"
+<`N,p<W?%u<W?%s<<-(s=8c5+=&r@'<`W:&r`&r!r)`nu)HKp@=BAO(=&r=%=BSa/=]ea,=BJ^/
+>$G-4r)a,+=BSd1=o)>"=nl1s>Q.n->Q7n+>7"P=>?kE;>$>-8qd'5.#@CeD?XR8K?iFI4@K0j<
+A,^!CAnP^gB4trWBFeflC27R!CM[j)DJsE1Df>Sn#B=d*F*)MIG5c^cGlN'hHN&7ZI!pElIt*!!
+JV&N,KS>)5L51SAM2I1LNK0$[OHG]hPEhE!R$a;1S"#q<SXuIHTq\9VUnji`VPgAkWMuntX/rG*
+Y5YU:Yd(L?['d?O\@B)\]=bhk^VKibs2"cRrl"iU"NJL&aN=G(s2tno`l,^.]t;"o_SsU>c-QC:
+rm:VkrR1\os4$tsqUYMn4irt$>ZtB;>?kH`?ZKgj@9l,`91iNR:ch`7/138*5!:SV1It#*7Rom:
+3B9#^4$5Ve<`N+";cQgr<)ccp;#jMme,%Mgd/_Pcce6\5dI5N`dj2l%F_4rd>$YB=?!:N>>[(H=
+>[CQ:=B\j3=]S^+='&L)<EE6#<;oer;=78->?kH@?XR>PA7]@dBPM=!DJsN7F*)SLH$XjdIt3*&
+KnbD?Mi<[WOckroQ^O>5StD^NUo(&hWiW>+Yd1XE\%0)_]t_A"_o9X:aND]NcHsteeCE.%g"P3:
+h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV-BgrqcQirqu`no_sFAJcG`LJ,~>
+JcC<$Jc>`Mp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pcd'bXA8l[;LTCBUriY:bqlTq&m&p>i!3#mo5,>$MUo1)iWN<5,Y*PQQVPUQ'['R3L[C<WQ
+]t_=r^:V(n^:q7l]=>A^\$`ZT[^ifPZF%$F['d$<XKAV-rN?7)YPtd*Y5kg*YPbX(YQ(m-ZMq30
+ZN%62ZMq-/YQ;#7qm6.+rj;m;\%&rWrODg:rjr*>r4)F1s0rEH]"5Md]tM4s_86,g"N8="`Pqhp
+!5ncPrke`Qr5&EKs1n`O^])%E_%4E#`5K[7`lH0AaiVWFa2\,!%EQZ3a2l<AaN)<?a2Z*t`X9c-
+ai_cLbK@uNbl5odc2GrfcRR;hd*^:ieCE.$f@\a0gt^fFiT&tZjlY^gkNM0qm-O--n*ol<oC_eM
+p\t!gqZ?]prdk*Zs8V$\f$r1!ec#M%r:fc`XjuG!mb=JZV/h<P@\90\AR;C9W2uu!Wa&b3@UNMJ
+>JRtc]">Pc]=G>VZi71gs!['umdoGmf\>?Lki1R[gtCTGgZ%5TimuAtaiMT@_8*^q]!o&QZa[:0
+[WYk[>[CcF@:E_XAS5[jCM[j*E,fo?Fa&(VH[U?nJV/W1LP^nINK90aPEhK%R[]k>TV80XVl6Vr
+Xfen6ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@i8EVTj5oFckiq?sm-O--n*fc9o()DD
+o`"Lap@nO\s7u]kr;6KkrVcBfJcC<$rr7K~>
+JcC<$Jc>`Mp&=pgrqu]ks8)ckrqQNf!;?Eb0(ec+o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pcd'bX=^YfUFG5U0fSTB\oS`^+!.Xuq"+,EBI/\R(It3'%JT,^WI!^O"KnTAY%>Bh'OH5H^
+NfK0]N/`ksMZScmM>iD3LBiWlLPL\EN/ROkpl#*.r/:Q3rJUZ6!K2p7MuJY8NV8A4O8b1=O8Y1<
+O8+e:Oo:C2OoLUDPQ-pLQ^7W<pR1oFrg*SNr0RJNrg<_Ps-E\Org<_RrL3bSrL3_R!1NnVrgNkV
+!1NnVs-itWrL3bU#Fq?USt;LDT)G;]T)YA\ScGD^TFmljTV8'SUSOZ[UnjlcVl6Sori,t!rN$X6
+Y-,"5Z*LX?['d?N\%&rY\[_XM&%fEb]=bkl^qmk)`5Ta:aSs<]b7MnCcdC.gdaQ[peCE.$f@egU
+fcJl%gtprHiSrnYjlbmnm-a<2nalGIpA"I[qu$Elrdk+Ls!>adW2$,^US@+mh:0]i^4_*/Ur(Te
+H'WVY@r"h`FELMXJ:E'"rdXoC'3/"0;,NF9Nf8sXN/igQLkpe@L6)?UgV0bnYd:@*V5C8sY,n_*
+W2?PoUo:8nVk9HIR?j-;OpI//Nf&^NLkpoVLj!!->[CcF@:E_XAS5[jCM[j*E,fo?Fa&(VH[U?n
+JV/W1LP^nINK90aPEhK%R[]k>TV80XVl6VrXfen6ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.
+g>(N@i8EVTj5oFckiq?sm-O--n*fc9o()DDo`"Lap@nO\s7u]kr;6KkrVcBfJcC<$rr7K~>
+JcC<$Jc>`Mp&=pgrqu]ks8)ckrqQNf!;?Eb/G/Q)o'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+e^W$pcd'bX6q'^B:Jo\>lV[XX!^/S,r]U9D!BiRE5Q="V5;kSc5!D>$6pjBA6Nf\A:JX^a9`Ild
+9F4Ee8kVfL91qrOrCHu]r^m&ds&8kqqG[8hr)<Plr_`GgrD<Pmnl,Ne!*9)!!)rhq!*/tss&K%t
+rD`hsmo9?gqcE_ur)`l"!*B/#"'8T,=8c2"=8l>&=T2D#=T;M1=BAR+=BSd1>$:i,!EiV)=nu8$
+=n5_r>Q.k->Q%h,>Q7k,>Q.n-?2n10>Q7t)?2n44?sd7<?iFF5@K'^@@q&qYA7fCar+H"B!blCa
+rbMOM!,_^Q!H2rUEW:(ZF8p=gF`qqPGBeCYH@#R;s*Xfps*k6'JUrH,K7s5X-&.22M2I1KN/WaW
+O-#KdPE_;sQ^F52S=Q1?SXuIGTV8*SUnjjdVZ3P#W2ckuXK8P+Y-7i/s03*@['d?O\@B,]]Y(tn
+^qdec_?Iiq`5T[6rPniX!QiL_bRht?aN)<>`Q--Gcd:%ddaHPBdeVAjeGIenf)""ufJCg>Bj=hH
+>[(K>K3iS4@prS,5YOdSO^0q11G149/O)B\1c%]o7Ros;7Q3:e4?GVe4BMG[#ZXf$;c?Rj:Jpf5
+dF%7-jO4LVT6FjP?<^]??!UY5>o[*T?!L`>>?>'5>?P!.=B8O*<`N1#<)lmr;H$H\:j-&J>[CcF
+@:E_XAS5[jCM[j*E,fo?Fa&(VH[U?nJV/W1LP^nINK90aPEhK%R[]k>TV80XVl6VrXfen6ZaI6O
+\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@i8EVTj5oFckiq?sm-O--n*fc9o()DDo`"Lap@nO\
+s7u]kr;6KkrVcBfJcC<$rr7K~>
+JcC<$JcGBArVc`nr;6Njs7uZh1ACM9p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbfaU=H@CgPrN6(%iihFGs,@&@VuEPBV5C#aV5^JpXKJY/Z_=5#Z*LdG\$rlV^;%:m^:h1l
+^:q@q]Xthi\[_XJs0W0A['d0E['d9I[/R3.Yl:j*Yl1g-Ycmo-rNZC,!3u4'!4)U/!jJr7r3Q.)
+s0_d6s1&$<rOVs<rODO2rjW9G]=Y_h^;%J!_Z%FQ`V[[T`<jK#_SX.*_Sa7-rkSTMrkS]P^:qAY
+_>h@R_o0On`r4!Wana!WaSj-Z`r!aT`r='fb0.rMbKJ,ScHa\Zrm(Pg!7(Si!7:_m!RfKsedC$]
+g"P6=i8EVTjSn<AkPs`Ml0I[&mI'KCnHJLUo_%qPrqQNi!rMopJcE:\#N=areC<(#eGfIlr:ffb
+XN]Pgn)U4[_L[E&A=T0\>[OP3WN<)"WENP1@UNRB>6D[R]=\'T#._1LZa$a=NW1EjnaH)-gY1EB
+lfmKhi7uuJkhP4Yk2Y(=bK@lH_SX+%]=PJ[Za7'Gn$[CC>[1QA?X[DRA7]@dBPM="DJsN8F*)SL
+H$XjdIt3-'KnbD?Mi<[WOckuqR$jG6StD^OUo(&hWiW>,Z*UgG\%0)_]t_A"_o9X:aihlPcHstf
+eCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)ZjrVZZno_sFAJcG`L
+J,~>
+JcC<$JcGBArVc`nr;6Njs7uZh2#$_;p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbfa1!Bl/'KMMfuAq24s*r/)G1Ci=cNI!g9hH[L3hIXlp!JV/StHA$m(L5(K_LB!;RN/`mY
+NfB$ZO,]0ZNfT'UMMd7ILPUbCL51S@reCK4rf-f6oS`[,!K2j5MtN&/NUi,0O8Y1=O8+h9OTLW,
+OSY+=OSb.?P5UREQ2['LQi<BLRJiQSR/<6MQN*9OR/WHNQi`VAQi<<NQiEHNRJ30KS,\rVRfJoV
+S,SlVRJiTOS,o1Pr1EhW!2'4_rLj4crhTOis/#dpri,pt!3?("!3Q7'"g>2:Z*CY7[/RN;\[]/[
+\c02?],J>q^;%J"_SX4/`Pom<aN;WKbg"J[dF$CleGe"uf)O>&f\-8Xs4\FHh;-rGiSrt^kiqF#
+mdTc;o_/%Sq>:-irdk+Jrr^?BWhfWh/u#,_g"4Kh^4_**U;53mH&\>+@r"naF`gDTJ:N-#It)uE
+:et(j<)QRhO,f3Zrf.2@MMHtCLPCli-JZA<ZEgg9V5C,kZ*1:2X/MhuXeVkpX/M\]S!o_1PEV/l
+NK&jRrJC!!G$8-U?!grI@Uiq[AnYjmCMds-EH6,BG'A4XI!pKpJqJc3Ll%%KNfT<cQ'Rf*S"-(B
+TqeE\Vl?\tXg#(:['mHS]"G_k^r"".`lQ9FbK\>ZdF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--
+n*fc9o()DErq-?dp\4[^s7u]kr;6Hjrr)KgJcC<$rr7K~>
+JcC<$JcGBArVc`nr;6Njs7uZh1ACM9p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbf`FE8ki&VbY[n.#ran,5!;"l4?Yk,55mbN5X@V$4?Pq+6P)R[:JOVX9MJ2T9MA/T9MJ7Y
+9*7dX8P8nP!D5r^;Z9Vl;ufkp;Z0Pm<;ohh;Z9Mp;H$Qb;u]f&<E)pr;cH^r<V08c<<-(r<W6%t
+<rc:q=8c5*=&r@%<``E$<rlE+r`K2$!EWG&=T2J'=92K*r`T2%!*T;)!*T)#r`T)$s'#J,r*02+
+!+#M-r*'8.?!L\4>l.h+?N4C3?N4C2@/aU6@fKp=AS1mP!G?$BB*W*aBkhBuCi')gs)7pW"`eU'
+F*)O'FoQXbG7AeBH$Xd`I!g?iI=?Zrrdk*$"+u8[L&Qi,L]<3&MN!LRNK0']OckolQ'R`&R[Tb;
+S=Q4BT:hmPU8+N[V5C/gW2Q\qX/rG*Y-5(6Z*L[A['[6M\%&uZ]=bhk^V@S"_8=(,`5MPmrPoMk
+ai_cLbKS2Tc-FSXcHaeadehMmeGdtuf(mhrf)=4tf_X;"g'#lpBj4d?>TI$S>[_Mc@prS.5Y=XO
+O)?p@:bXLZ/jDH\0/H6mr^Reo6oI"a4?GVf4?HMA;cH[q<)Q[n;Gg7fV:4h]/'"?.Am\eI?<^]?
+>$YH@?!LZ??!UZ7>?Y34=&r@(=B8L(<`E's<)ZXm;=78(>$P<<?XI5N@q9._BP;-rD/O93EcZ>G
+GBnL^I=Hd!K8#&9M2R=QO-,TjQC+)0S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WKc-F\`
+e'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu-HlrUg)?s+14L
+s*t~>
+JcC<$JcGBArVc`nr;6Nj!;ZTg1ACM9p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK=L8I=IH`r2p"%qlfLlpoie^*fuDBNK97$Unsr`USareW2m&$YcY+6Yd(L?\%&rWrk8?G%
+D0?f^V7Fo]=GJ^\[K$I[LKXN['[9LZaI0KZ*Ug@ricC+ril@+r3-7-ZEj;2s0D=(s0D[0!4)U1r
+NuU2qQp:2[f*]5\,a)=])0&;\FmE4\-0@R]=bfU^';?g_8=+.`VdaU`rj?"`5DSkrPSKJ"2M[c^
+\ttI_$@lr`5T^9aN+8#rQ5#Y!64iT"3/9t`Vm^S_uRjWa8j?]b5TQabl5mHc-4ATbfe8Vcd:%dd
+F-Oqf@S[-g>1ZEiSrnXjlY^gkNM-olKdd'mI0Q6naZ2Bp@\+Qq"X[\rqc]oJcE:\#NOt#e^rC'e
+c,RmqtTcbXMEZYn*$Oaad7mH>b%FX>[XS5WN<(uX'8h6@:<RC>7J?\]Xthi]XkPZ['HsANW1Hlo
+C);1h:pcLmciimi7uuQkiV!fjl=q=bfe)K`5'.&]Y(e_['R-I[ICVP>$G6;?=.)K@Uit\B4u!pC
+i4-0EH?5EGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"6.EU84W`W2cr$YHY==[C3TU]=bkm_8=.0a
+2lEHc-FY_daZdtf@\g3gtgiFi8WeXjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nlr
+Ug)?s+14Ms*t~>
+JcC<$JcGBArVc`nr;6Nj!;ZTg1&(D8p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK='uC2SFIM<p*(DJa6,E,^=)HP1^TI=?WpJV&H'K7no1KSP;<L]3;UNK9'ZN/isYN/`dT
+MMd7JM27%ELPUbCM2$e@M1p_>rJgc7qhkH5q2>93s,6l6r/:T6!0-r9rJgZ6rf-i9rf?u=!0R#;
+oTB*6rK7#@s-*MKrg!POq3h5Ns-`nSop>]GrKdbTQ'IZ$Q^F0<RJ30LRf]%JS,SlUS,\rSRJrWT
+S,SrXSH,8\T*:m[T:VXFrLOCiT:_dLTqS3UUSO^bV$!TmWN6#u!3?("!3Q4&!3lI.s0Ma4!k#JG
+rj_s<s186Brk/9F!PcGL_>hFQ`=Ku/aN;TJbK\;Yd*^:jeCFNK+P59!g"P07gYCZBhr*JQjQ>Xi
+lg4'.nac>Gp\F^`rVhBJr;SXpXK/4mUSOZZj5&D5a1d7[P+fG7_g7<>FCo>]G'8"&;1X=LJU`0"
+:/=Yb<)Z[l:QUWtNW+q=NJd^ks+c[8.c.tDZEgg;V5L8sZEL@3X/Mc%XfJM%X/M\_S!o_2P*;#j
+NfK'TMMR(Gmtc?p>?kH??XR;O@qB4aBPD6uDJjE5F*)PKG^=^bIXm!%KSG8=MN!OUOHPinQ^F52
+SXuOLUnsufWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0I^&
+mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcGcMJ,~>
+JcC<$JcGBArVc`nr;6Nj!;ZTg1ACM9p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK<:E9h\>[_,1,."unV&3B92cr]C0Br]U9Fr]gEL%R<<I6UX=06UF.9:JOVZr_3Acqb.5f
+9hS/Q8k_kV8cME^8H;B^8c;Qd;uKYq;uBMn;u0Jh;uBPl;$'Wo<;BJl;Ya8j<<#ns;ufql<!$'!
+<;BPn<rZ/%<`N1#r`0,&<`W<#<r,l$=BAO(=',B%rE0&#s&o>&s&K,$qcEi$r`K/$qcNYt!a/]1
+rE8esr*02+s'>P-r`]A-ra#M.!+#S/q-=53?sm>J?=.(=@/=:5@UisJAc?9BB4h-Urb2=HrbDRO
+D/T;j!H<&WEXd,5G'A+PGBeCYH?ssdr-\TpJ,Xs&JV&K+KnY9\LIR)VMMd=NNK0$[OHPcjPa%H!
+Q^=,/S"-">StD[LTq\<WUo()hWMunuXK8P+Y-5%5ZEggD['d?O\@K/]]Y(qk^;%M#_Z%FQ`;[aT
+`s'Q)aN2KFrlY8as3(_mcHab^d*U2>e,Ro"e'upurRV##s4I5#s4I;'qqCo$r7isVS7u54?!CQ;
+>[2VqCL^dW6:"+6<fVJd5$0Zq2C^pT4"iB]84c<A779$o3'9;%497NDr_rqt<E/oqs%rboYgi!h
+psotuUNpHY>[(N??<g]??X@%;>SU@L>?Y35>$4p/=]SX*=&r=%<Dujqr_`_lmneC8>?kH??XR;O
+@qB4aBPD6uDJjE5F*)PKG^=^bIXm!%KSG8=MN!OUOHPinQ^F52SXuOLUnsufWiW>+Yd1UC[^`l[
+]Y;.s_SjF6aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Eg
+s8)Zjrqu`no_sFAJcGcMJ,~>
+JcC<$JcGBArr)ior;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+7GEI!2)q6'Uus/u!rriZ(#jfUM1P`Li`N/s.#USXi_Vl-JhW2chtXfSh4Z*LXB[^Nl_
+]Y2"m]tM1o]Xthg\[f2X[^<NO[Bfe=$*q%JZaI6J['d7;Yl1j+YlD!*ZMCd)ZM_'/Z2q;;riuI.
+"1,DC[/RE1ZiIN5[/RH6[^Z4Fs1/0@qRQU8q76O8&\5E]\[f;`]Y(ql^;%M#_Sa=j`W4'Ya9BW(
+`Pf^4rl"fR!lDagrP8QN^VB`_s1nlV`5K[9a83mVaT0E\a8a0Ya8X'Y`;[X__SO((^VIY$`5]g;
+a8X1,b0.uPc-+5Mai_cLbKS5UcdC1heCE1'g"P39hr*MSjQG[fkNDj.rosOMm/HGdnF?&>p%@tM
+p\=R[qYU0fr;Q\Hs1A:9j65LSf[n^*rr3u9qX^hj^=qlAlD22/R"CE]SXc6U?sTn5Xf8;$r`g+?
+@UNGF>en%b]Y(qk]=52TZa$`os!d7*n+,Jnh;.VgkiLg^guItilfR9himuK%bK.cD_83q#]=G>V
+ZF%*Jn@!@?>$P<<?XI5N@q9._BPD3sD/O93EccGIGBnL^I=Hd!K8#&9M2R=QOHPfmQC+)0SXuLJ
+USOcbWiN8)Yd(OA[^WfZ]Y;.s_SjF5aN;WLcHjkbe'uq"f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3
+nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+14Ms*t~>
+JcC<$JcGBArr)ior;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+79A86.5b),bJ(34D4D/=',E.3+[H[:'eI=-HlI=Hftr.>')L5,Vd$BL1*O,f0XNfB!T
+re^Z2!f;\freLl8LkgeAM2$eAL]3;4N;e_;N/NUQpP]'/re^Z4rep`6s,6l8r/L]9rJgc9rJq)C
+O,oBarfR,?s,R/AoTB*6rK7#@#*Y=;QC!r*q3h5NrL!YQq3V,Irg3\Pr0@MOQC!u,R/NHIRf/`Q
+RK/iURK/cTQj/nER$jD3S,SoYSY#_N!1s+Zs.97_s.KCcs.]Og#,J)mVl-Jnri>su!3Q4&!O/j.
+Z2q;=rj;a7rjVm;s1/6D]DfJC]`Pp__>_;2_o0L4`l?*@aiMTIbg+M[d*^=lf%&@&f@\d0g=k<:
+h;7#HiSihXk3)!pmI0N6oC_hPq>:*grdk+Is#S3%XfA.lV5'dPe_AEl^4h-$T<lk_H]+22@r6"*
+F`pGV:4n%IIt3&F:Jaed;c?OiOcPN_NK0$YMuJM5LPCli/)\4HZa-p;VPgB'Z*(11X/N,4Y-4n*
+Wi2V_S!o_2Pa%>oOH#6XM26tEM=?=A=^#'8?!grI@Uiq[AnYmnCMds-EH6/DG'A4XI!pKpJqJc3
+Ll%%KNf]EfQ'Rf*S"6.DTqeE\VlHf"Y->1;['mHS]=bkm_8=.0`lQ9Fbg+P]dF6Uqf@\d1gtgiE
+i8N_VjQ>Ufl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGBArr)ior;6Njs7uZhs7ZNerq.f6oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+6u8PDml;#`T^3]T,[3]fJdr]L0Cr]^EI5lO(\6UF+,6:""8:JFMX:/+JVr_*\o9MA)Q
+92%rN8kDSQ8I7p[8P2TH8P2QGr_i\ns&8tsrDEVoq,IAmrDNMk#Z=Mr:f1+h<)`cor_rbnrDN\q
+r_ierrDN\qrDi_orDiksq,RGqr`&u"=8>ns=8c1t<rc;#<s)K)='#<%rE0)$s&f8%s&K,$pfIQ"
+=8,ho>5DD%>5;;&=BSf+=o_e'>QS,7>5h_+?2\%.?2n.0?2e+-?2n72?Na\B?sm@@@/jR<?t!GO
+@:EaGAc?9ABDuKCBDuQFBkmW_s(hmVDJsK5EH(ks!d&R.rc\?crceZnH@($eI=?VDIL:RTJUrE)
+K7nr4L]3,0M%#<$N/`jXOH>TgPa%I4Q7SAiR[T_9SXlCGTV8-UV5:&dW2ZetXKJ_0YHY79ZEggD
+['dBP\@B)]]=krX^Au(K_Z.RR`<O?&`l?*@ao0B^b6#o4c2>leci2;ndaQ\Ee,e+Nrmq8)g"G*X
+g\ok(g\]e&h>5t2et$S^>Q.nJ>?k?fCi<lo>!bPG8lCOr3Bfne0/bXO4ZkDS2#^#I7n#oH2uko9
+4:=5O<)cjq<)ljp;cEZmjOW2<jjrhN(<r_(B4"nI?<gc@>%1fD?!LT=>\%&ErE9;)=BJW'<shu-
+=&r7!;c?Rl;=@>%=^#'8?!grI@Uiq[AnYmnCMds-EH6/DG'A4XI!pKpJqJc3Ll%%KNf]EfQ'Rf*
+S"6.DTqeE\VlHf"Y->1;['mHS]=bkm_8=.0`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_VjQ>Ufl07L!
+m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?CdbfaI6F*WP<o<8.ror\4rpoih_s.1:$Q&pudNK96fV5'fZUSk#gW2Zi#Y-5"4Yd1I@^VBc]
++ht_)^qRLm]=>J`\%9#V\$`]SZa6sD['m<M[^NQLZ*Uh9Ykt[.Yd(I=ZMq31ZMUm-Yd+/4!OK03
+ZMq-.ZN%9#Zj=(J[^WcV\[]0;\I5pV\%&rZ]"G\h]tXK\s1niT_o9X8rl5#[rlGVj`l?!;`Pod5
+_ns:+_#;(X^q[Y"^r!t+_o0L4a8*gVaoBE_a2[tr#faj&`5BF,^qTc\"hqae^r""g_uRgV`ra?&
+a8O$W`tZY=bKS;[dF-Rrf\,!4gYC]FioB,!k5OTEl2U#clg4$,n*fc9nauJHp%J.Uq"X^_r;?Nm
+rdk*]rs.WNk1SG?f@Kp#1]$e8XM3<NnEQg``h\3JP%'uS>[h$BWN<)!XJoB.>%1iE>[5.[^:h1o
+]Xt\]['R$AY`A`4lh'Z9j5&PKp$Lu(j5AVVn*0-!j5\tGd*BhVaMu*5^q74i\$E<H\$YY5G?J*R
+>[:ZC?t!MSAS,RgBkqO&DK'T:FEVkQH@('hJ:W?+L51VCN/is]P*D5uR$sP:T:r!TV5L;mXKA\1
+ZEq!K\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"Lb
+p@n=\q#C0iqY^6hr;QZerdk*#s8W+L~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfa'rASQ:=mYUdtg55fds)n]kEGo]2Ci435Hi89jI1CaSIt*$#Jq8Q+KRni=O8b.POH5E_
+O,]*XMiEUNMi!7GM2@,fLC/loLkgeBL4tD;NW"h9MuAV0MuJV6M>iD2MuS_9Mu/J4NW"k;O8=n4
+O8P(CO,f6]O-'4#!0[8Br/gl>!0[>F#Ek=:QBml(R/NHQRfAfURKf7MR[]b5R/30LQN!6QQ^3s9
+QN<MAqO.2Krg<bTr1!\S%%E]RR@'>-Q'R`&Q^I`>"e(pLR[foHSc5/ZS,\uYSc52dT:hmPU8+N[
+V>[:mWN,ru!3H+#rNH7+s0DX2!4Dg7s0r!<s1/3BrOi0Ds1SfT_84"*_o0L4`r=$Ya=bTWb08/W
+cd:+ie^W.#f@\d0g=tE<h;@,JioB+]k32'qm-X<4oC_hPqYU3hrdk+Is"qiuY,e@pV50jSe(iBn
+]t&`WSZp;XI#FSA@r6$XG'6SX:P=7LIt3'!:/Obd<)ZXkOcYY%N<5#pM#N/0L62Ecj2%q+ZEgL-
+Vl@>6Y,nb+UU7J4Y,eS%V4aELR[BG,PEV/jNfK!SLkpnEn;)9k>$G6;?=.)K@Uit]B4u!pCi4-0
+EH?5FGBeF\I=?]tK7nu7M2I7PO-,TiQ'[l,S=Z@HU84W`WN*&%YHY==[^WfY]Y2(q_Sa@4aN2NI
+c-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu-HlrUg)?
+s+14Ms*t~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbf`=B8k`#Xq,$rcb>A1#&3Dp53&io[4$5Se4Zknn5!]*3r^$QO"@>IC9ht[^"\qcd9MA1Z
+9En-`92%rN9);-W8d.jY7nH9Mpf%2j!)r_nr_r_mrDW_q!)rhor_rhprDN\qpeq/jr)<Sos&B,"
+;cEZps&K(up/Uuj!EW>$=8l5/=&rC'<E<+"<``@'<q9<"<``C+=BAO(='/R-mo]Qlr*&r"s&f8%
+r)ir$s'#G*r*02)s&fA)>5hb)>R+P>?!LW??=3\<!*oM0!+5\4ra5\5s'bq:s'u.AAH$0?BE)QD
+BDuTEC&VoJD#\>TDJsK6EW'n]F*2VKG'En0!."Qi!IK4lILC[WJqAW.K7ei3L55_a!/g`7s,K%"
+P*;,qQBml(R$a;2S=Q4BT:hmPUSXfaVl-JnX/i>(Y-5(7ZEggD['d?N\%&u[]=Ybj^V@S`_$%Wm
+`5K[pa90Q*aiXP)"O#$5c-?75rm1Vks3^horm^tus4.2%rRh,'q:l83gt^Z=gt^`Aptki(6J.rJ
+?X6uD>[(K=Nb`ZL@p2o"6V:.)K/l+j1+tL@/Nl3M1Gh]o8Ou9=7Q<@d4Zbbh4BGK^<Dldr;c6Om
+;,L+dn(>V2kLfXa)U540BO>(L?<gc@>%:lE>[1K7?=-l@=^#!3r`9S1='&L)<**$u;cH[n;,QdY
+G?J*R>[:ZC?t!MSAS,RgBkqO&DK'T:FEVkQH@('hJ:W?+L51VCN/is]P*D5uR$sP:T:r!TV5L;m
+XKA\1ZEq!K\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8B
+o`"Lbp@n=\q#C0iqY^6hr;QZerdk*#s8W+L~>
+JcC<$K)bKBrVc`nr;6Nj!;ZTg1ACM9p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK=F=G^PCMo<8.ror\4rlEBl`s.0.\31H4rN/imWOHcQ:US=W`V5C2kWN<8)Yck15^V7@p
+]tD"k]tV.l]=YS`\[o;Z\$`WNZa@!F[C6(B$+I7I['d6GZEUS/Z2_-,Zi@?0YlM$-YlM*/Zh:U(
+Zh(R'[K!Z8\,<c/\c98=\c9,B\@K5`]tOEZ!PcGL_>h@P`;[aXa2l@#aT0K_aT9K'rl,&Z_ns:h
+_$@cl^qmk(_o)Dk!6=oVs2k;^s2OrV&B;]-`59=)^:h4m]Xtbe]=n3XrP&?Kr5'Dh_SX4/`5Td<
+b082YdF-Orf\,!5gtglIj5]5!jo=HEkiqC3lPJpTmdKZ7oCV\Jp@e=Xq"agbr;HWnrr.KK]`/5r
+mH3*Ug"G!Us"jNEnu]g]lLO8;_o]$1P*04ES=F+sYH"b(X/`.&?!:]E?!LXP^V7Ir]Y(kf[C!9F
+Ycs/f.IHcpm,[$[iUuU'jQ#.So'GW*jQ#4PeBuRcb/_N=_8*ar]"#,R[(!F2[X;4]>[1QA?X[DR
+A7]@dBkhF#DJsN8FEMeOH$XjdIt3-'KnbD?N/`m[P*;/sR$sM8StMdPV5L8lX0&P/ZEpsI\@K5a
+^;%M$`5Td<b0/#ScdC1ieCN7(g=k?<hVd>Oj5]7`k32'olKmm)mdKW6nac8BoCV_Kp@e7Zq#C0i
+qY^6ir;HTdrdk*#rrE(L~>
+JcC<$K)bKBrVc`nr;6Nj!;ZTg1ACM9p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK<stBP_jIm>:^tfSTWNrcS?bEH(no$Z9m(H?spcIXQTmIK"^'JU`<'JV&uENfT5!N?=4?
+NfB$VMMd=LLkpnCLkge@LkpnDL51S?L51V?L5#G^!f`.tqMYB2re^Z4rJUW5s,@/?Mi3OQrJgi;
+rK$o;r/^l>$]gC1O-#HaO,f9^OSb1<P5g[CO9C]/P*;+,PQ7!JQN*9OR/WNORfAlUS,o(Hrg3\P
+qO%;Ls-<_QR$dW9qO7DO!1NhTr0dq[R$O&'QBmf$QN!6NQiNKPQiWVDr0[SSS,SlVRh_HaSY)RK
+Tq\<YV5C/hVl6VrXK/D(rN?+&"0f&9ZMq04['d?Orj`!=rjr'@$ba3d]tV7t_8=+.`;[b4`Q$!?
+ai_cLbg"GZdF-Lne'ut#f\5'6gt^`Bi8ESSjQ,IdkiqF"mdTf>p%S7WqYU6jJcGZJ4NOP+XJD\h
+UndD/hUTca[tBp:YKG(:O.V#4DJW*mFELMYKReT&J:W2G:ek"i;c-DTOH5E^NJrjUM2;.d!/?U8
+/*4^T['-^7Vl6Z0Z*172X/E_;Y-"_(Vk]oUS=5h3Q'.>oOH,9XM2@%FM=67J=^#'8?!grI@Uiq[
+AnYmnCMds-EH6/DGB\=YI!pKpJqJc3Ll%(MO-#NgQ'Rf+S"6.DTqeH^W2co#Y->4<[C3TU]=bkm
+_8=.0a2lEHbg+P^daQ^sf@\g2gtgiFi8WeWjlY^hl07L"m-X60n*ol<o(2JFp%A%Pp\jmeq>^<h
+qu6NlrUg)?s+11Ms*t~>
+JcC<$K)bKBrVc`nr;6Nj!;ZTg1&(D8p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK<:E8l&1U;#F27;#<?b3]T,Z2`a#^4[(tk5!D7157KkD5sdq*5u(*I:/4MYq+Luc9hS/P
+92#4T%SKDc8kM`J8kMTE84c<ApJ^les&8hnrDWSmr_r\ls&8nrqc!Gk$<'o&<)Z^p<E)mqr_rkt
+r)EJlqH!Ams&T/"!*9)!!*8kr!*K"trE0)#rE&u#"'J`-=8H#">$:i,r`T/&r`T8)s&o8$rE0&#
+!*T5%!ErY&=T;M<>$G37>$G6;?!LW??=$oE?!UcC?i4=3@0L+K@UinWqIBS<rFc+Cs(MXOCMRa'
+DZ4J\DfKc<F*)JFF`hkNrceBe!."Qi!IK4mIfFm/JV&K+KS4u2KnkG>MMd=NNW"kAO-#KfQ'I[7
+QRJ5iS"-">StMaMU8+Q]VPg>kWN)u!XKAY/YHb@<Za@-K\%&rY]"5QR]`Gj_rkSlW_o0L5`lH0B
+rlY8as3(JfrQbGhs3UqsdF-JBe,Ro!e^i@Of`0Y'gAfn-h"fe)h>lC/htl:+iAB5_D-pOR?!LW@
+?&NQ@BOY7K6:OUEFbr+C:cC!b1b:jT4#Jie7n6$;77K9s2a0;c4ZldE<W>r#<)Zap;c<TldFn?J
+b1S>kWIS\j?<^`@?<gZD?=$lA>?GE@>$>-6>?P$.=&i=(=B8C&<E2pr;c6LjmSJ:6>$P<<?XI5N
+@q9._BPD3sD/O93EccGJGBnL^I=Hd!K8#&9M2[FTOHPfmQC+,1SXuLJUSXleWiN8)Yd1UC[^`l[
+]Y;.s_SjF6aND]McHjnde'ut#f\5'7h;7)JioB(\k2tmll0@X%mI'H3nF?)?oCMVIp%J+RrV6Eg
+s8)Zjrqu`no_sFAJc>`MJ,~>
+JcC<$K)bNCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Fec-+7AF*`@sWUm=mY4\prY2HM`Y5OpjSjT$8PE1``N00=$V5'l`Vl6SmWiW>)Y-!o%^;%@q
+]tD(p^qICk\@9&Y\[K&Y[C*BK[^<EO[C<TQZaR-HZa6sF['f_7r3H@/r3?C/Yd",3qQg.-qm-7.
+s0Vd3q6^+.rjDg9rO;j<rODj;s1%j7s0i-A]Y(qlrkAHKrP8cV_o0O5`l?*@rQ5)^s3(Das2Y>_
+a2Q!8rk\ZQrPAfW_SjF4`l?'na9'K)a8X0W`sTi)_ns:)]t:qh]Df>@])9/?]`#MK^V7Fs^:q@s
+rkT>d`5]mAbg4Yae(3.(gYCWBi8WeXjSe0Bk3(pkr9Fp]mdBT7nalGIpA"IZqYL-frr)lrJcE@^
+"Q]"6g"QGYrVn5Bp@><(g?S:rVQeI[H!ukDSt)?_@'6Q3WN<,">?k?@?X?uA>JL0Os1JZM\[JrR
+Z`p]ps!dF.lKREeiT'LrlfI3ck4e0+kiC[Zf[S?pc-")H_SO($]t:e^['dBNn$[7>>$G6;?=.)L
+@Us%^B4u$qCi401EH?5FGBnL]I=?]tK7nu7M2R=QO-,TiQ'du/S=Z@HU84ZaWN*&%Yd(OA[^WfY
+]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!5h;7&IiT&tZk2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUg)?s+11Ms*t~>
+JcC<$K)bNCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Fec-+75@VK_*L[BrqMV*daFoQV*F`_VBDJa6,DfC,OH[L3jI=HWpIt3*$J9-d4NfO't'p+K9
+Nf8mRMi!=IMM[+DLkpnDLP^cbL^AfmKntM>L51M<qhtN7rf$c5qMP60rJ^c9s,?u9!0$l9rf7#>
+!KN0<NrG+:OT(=9OS=kAOH5HaOHG_)PlI!LPa235rg3YPrgEbS!h5^LrLEnVs-`hQ!1EhR!1EeQ
+!L]>SRK&`RRJN?QR@*uA!1NkU!1NkS!go:>qNV&Hrg3YNs-N_P!1EVL(R^_^SXuIHTV8*TV5:)g
+W2ZesX/rG)Xo>I'YPk[,Z*L\6Zi7?;\@K2_]"5McrOi0D5JFhF^;.S%_o0L4`lH'<a2c9Cai_fM
+c-FV]dF-Lme^i='g"G-9h;7&Ii8N_Wk2tjjlKdg)nac>Fp\F^`rIP"Fs$4Z,YcX^tV50mRf\Y0%
+_75,_Ts)VbI>#)#?;563G'.n+:kF4JIt3$!:JX_c;c?Rk:Q^a!O,o<]N/NOJM2$bHs!HpJZa6j<
+Wi)ku\$<-<XfAPCYHP(/Vl$2]Ssu19Q^*_tP)kZ`MuJS7M2LbXE`lRM>[:ZC?t*SUAS,RgC27X'
+DfB];FEVkRH@('hJ:W?+L51VDN/is]P*D6!R@B_<T:r!TVPgDnXKA_3Za@0M\[oGe^VI_(`Q$!@
+bKS5Vd*^=le^rI,g=tH?hr*JRj5f@bkNV6rlg4!+n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTd
+rdk*#rrE(L~>
+JcC<$K)bNCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Fec-+6u7S$3I:\[ca;9Vi:4o.;@3X7W)2`No]4Zr[+!C/mJ5RotD5X\:>9hnAV:/">U:&[id
+9,^Js92&#P8P)NH91hfL8kVfL8Oc9A8P)HE8bl<b<;ohr<;TSu<)lpt;cH`q;uT_r;u9Jj;u]bn
+;uT\p;uTbq;tEub<W#ns<rcA!=8u>$<<-)!<<-(s<s)Q+='5H'r)Wi!s&]8&rDrr""B\f/=BY5t
+r`T8'!EiV&=TDS$<ruK)=8l>%=8uD%<sMi/='/R+='5E(s&oJ.>[7,2!+,Y3s'GV2s'bn9"(PkP
+A,^$=AHQISAS;!Us(VIIs(hXNs(qsXD/O93Ec_5%s)n?b$[6i>GBe@XH@($fIK"ZtIt3'#rdkT4
+KnbA=LPL\CMi<XUO8Y.tPE_;tQC"#.R[]e;StD^MUSFW]VPgDmWi<"uXK8P+Y-5(7ZEggD[C3QR
+\@T8`]Y(qm^qfrd!Q2kT`rF*[ao9H_b6#o4c2>lecNV_Ee'lgrr71i!!8.;)qqM,*rSI>,ro!P0
+qVqP8#NXO9D.$US?2\(ZKl2!HA6i8'7nZZpNB07K>q@B[/3Z0X2)@fo7Rfm:7QEFe5!(ki4?HRB
+<!cE%;GpFm;Gp=hqV1/df%K$9s4\sLXFb4r?<^]??<pc@?=$lA>$P`G>$>-5>$+g,<`N4'=BAL'
+<E2prr_ieomSIq,>$G6;?=.)L@Us%^B4u$qCi401EH?5FGBnL]I=?]tK7nu7M2R=QO-,TiQ'du/
+S=Z@HU84ZaWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!5h;7&IiT&tZk2tjkl0@U$
+m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+11Ms*t~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe+AE.3>'X8B'mXnAdjXn/^eYPasiShuq*P)kW`NK96fUSXlcW2ZYnW3!,(B=YXd^V.@s
+^;.Iq\[f5[]",A[\@ArT['[6J['dCB[Ka.GZa-gBZi7<4[^H";p9F\'rilC,r3?F0ZEpn7ZM_$1
+ZEpn:[/%-/[K*f5\Giu9\G!HB]=kqm^V@V#_8=(,_o2Pn"ieU(aN;X(aoKW_bR)G6aN)BBaMu3<
+r5AWSrl4uZ!6P2\rl>&[s2b;_a8X0Za8X'c`P]O-^:h.j]",BM\,j.Or4Dm>*4rnt]Y(ql^V7Ft
+_SsU>c-Xngf@\d2h;@,Lj5g."!9X:D)X-GNlKdg(mI'H3nFQ;Fp@n@YqYU3grVc`pJcE=]#NY@<
+g"Y68g&:q,r;#uecee!Vm\R)7[rl/BA"T9^?"'e7XK/>$W`iY2@UNMI>?eqX^:h7o]t:_\['[*C
+NrLTto'#2shr3Ycm-<`oi9g4&lK@0_h:L0,cd'\S`P]L,^:_%f\$WNM[^>P4s&jJJ>[1TB?X[DR
+A7]CeBkqL$DK'T9FEMePH@('gIt3-(L51VCN/`m[P*;/tR$sM8StMgRV5L8lX0&S0ZEpsI\@K5a
+^;%M$`5Td<b0/&TcdC1jeCN7)g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojdq#C0i
+qYU0hr;QZerdk*#rrE(L~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe+5@VTk1L[p8oM=68dM>VMqG5l\/Ec>o5D/=-0FF&=_I"-WoIXQ`tJQRhhNK/sXO,f9]
+Nf8qrMuSYBLl$tDM27"FLk^\@reCZ6LPCP:M>i52Knb?\N;nn9N;\\4MZ&J5N;\b7Mueiqrf-o;
+rf7,@NK*pts,Zu;rK$l<s,[2Aq2klCO,oBcP*Gm0".#4<Qi<9NQi3<NRK&]XS"-"<rg`qV#F_'K
+R$jA0R/WNQQiNQNRf/ZNRLkmSR@0M4S"#k8S!ob4Q^3p8PlI!LQBh93!LT5NR/N?ORJrWeS"6.C
+TV8*TV5C/hWMunuXKDE'!3c@*rj)R1s0D[2"15JF\Gj)>]DoPD^&Pf3^V7It^qdh(_o'F2`l5s;
+a2c<Db0.rNbg"J]dF-Lne^i@)g"P6<hVd>NiT'"\kND'nlg4$-o(;VKq"jpdrdk+Grr^EGYcdr#
+*i%uShUBWb\V-HKYJnk:KXctG9l*ULF`^>TJq/E'rdP5L:JOng;Gp@gPQ$ULOH,?\MMR(FLPLuk
+.I"gXZ`gL2VlHl+Yck43WOKdKYcXn$UnXNTS=5h4P`q8mOcPN]Mi*DkM=??$=`mnQ>[CcE@:E_W
+AS5[jCMRd)E,fo?Fa&(VH[U<lJ:`H/LP^nINK90aPEhK%R[]k>TVA6YVl6VrXfnt7ZaI6O\\#Mg
+^VRe*`Q-'BbK\>YdF-Oof%8U/gYCWAi8EVTjQ5OekiqBum-O--n*fc9o()DErq6<b!;HKfs7u]k
+qtpBjrr)KgJcC<$!<7Q~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe*s84uZP;SH!,4o7>J4$#D^3B0#Z4$<L*(I()J5!_G"5<q>'9M8&Q:/4MW9he8R9`@Zc
+9M>@Ys%32_qFUi]7n6&H8HDFSmo'9e<E8us!)rhor_r\lr)<Smr_ierrDWVn!`N&uo2PQdrDiu$
+=BP?"q,[Ao!*K,"s&KA+<`W=(=BJZ&<WH8$=TV].=nl)$=^"p/r)io#"'A].=T2D!=9)G%=Su7u
+=9DW*=',B's&fP.=^#$7?!R;5!a]5ArEoP4!aoGFraPn;raZ.CA7]=_ral+B!bc:^rbDIKs(q^P
+s).jT%rlZ3FE;MFFEM_LG^"CWH2`*lH[U<krdXru#D%JXJqAZ1LAcopM2R=PNfT9aP*2#nQ'Rc)
+R[T_9SXuIGTV8*UV5C/hW2ZesX/rD)Y-+t4Yd(L?['d?O\@K2_]Y(ql^V@S"_8=+h`<jT+aN;QH
+bKS2Trm(Pis3Uen!n,QIrRLnus47>)g"Q>Xs4dV1qVM&+!9*n9s5Wt:!9O(<$K^F4frK%">[1T?
+ra%U5DfTQ%?W]Wg9M]#U3]qXJ/1<>+5<M"]1J(208Ol3=2E3Z[4?Pbh4&f3Z<)Q^q;c$Ck;Gg<I
+h<j"Gg[s;"g\KV,gYCW@o\9l(YCp_$?X$c@?<pf?r`pLK=^YiH>$>-4>$+g,<``@)<`i@$<`Dsr
+<)Z[lmSNpdF]r$T?=.&J@Uiq[B4u!pCMds.EH6/DGBeF\I=6TqJqSl6M2I7OO-#NgQ'[l,S"6.D
+U84W`W2co#YHY==[C3TU]=bkm_8=.0a2lEHc-FY_daZdtf@em4gtgiFi8WeXjlYail0@U$m-X60
+n*ol<o(2MQp&F^cp\ssfq>^<gqu6NmrUg)?s+11Ms*t~>
+JcC<$KE(TCrVc`nr;6Njs7uZh1ACM9p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe+CEINM,e#`DJoWJ4tqORSV)4d4]O,f3YNfo^'V5C/gW2Q\rBP"Za\@B0L^&YkF]+)<^
+]"#5W\@/`NZF.'IrjE?J\@AlP['d*F['[0I[C<RBZ2V'-Z2V'+Z21d*Z21d(Zi791ZN.B/[0j@M
+[^N]U\$`WP[f*Z:\@K-D\IH-^]=ktp^qmn(_Sa7/rl"lWrlG,]$-UQ:c-=JVc-=K3blc25bKBh+
+rl>)[r5JcXaSO!baN)<@aN2KFaN4>%!6G/Z#K=X!_7mOm])K5E\@8rW\@K3I]DoMD]D9)Q]tV7t
+_SsX?cI(.mf\>3<i8N_WroO+@roX:FrojIKli$2^n+#r=o_%qQq"jjarVc`ordk*\rs.WRleUCO
+gY)Q*,5h3,XK1%<nF*'Ve?"%,P@L8VSR#Z1XfSV'WN03->[h,Kr`]iL^:q:p]tM%d[C!6EZB"r7
+naG]&kMY@]nEfE$jQ#k%lK[QkgtUH4e^DacaMl'4^qRFm\[JlS[C<O4[WknW>$G6;?=.)L@Us%^
+BP;-rCi402EH?5FGBnL^I=Hd!K8#&9M2R=QO-,TjQC+)0S=ZCIUSOcbWN3/(Yd(OA[^WfY]Y;.s
+_SjF5aN;WLcHjnce'ut#f\5'7h;7&IiT&t[k2tmll0@U$mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<h
+qu6NlrUg)?s+13#~>
+JcC<$KE(TCrVc`nr;6Njs7uZh1ACM9p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe+8A8H:8dYR7HqK;d\s)eTfE,KN/Ci435rHnTnrdG-&=]gN<MMmCRrf.#=NrG"UMMmCL
+M2-qDLPU_BLkpnCLPgqHLPL\AKnoS\",DViN;S\0Mu/J3NVnb7N<#"9Nrk?$NW+t<O8G">O-''r
+s,co9"-Sn5Q2[*LQiE?TQ^3r(Q^I`>rgNhUpm_DTR[a;F!h#LFrL3\Sq3h;OqO7GPqO7GPs-`tT
+QMd!HQ2d0MQ2HpQQ^F,,R$X/,rKmMN'UbDZS"61ETVA6ZVPpJoWiW;(Y-.`,rNQ=,s0D[2rj#>+
+['d?O\@K2^]=bhj^:q@r^V@V#_8=+-`5KX6`lH*>aN;TJbKS5UcHjkbdaQ[pf%8R-g>(QBhr3ST
+jQ5Ofl0@U$mI0Q8o_/+Xr;HVGs7u[[c)n4RVP^/bV<-Ukd`TD9KRobs_U*[b[!c:VD,>J"F\P_.
+JUi<$It19j:K:@l;c-ATOH>KaNfK*VM26tCL62Eam)HH;Y,eS$Wii\4Ycb+.^UgVQXJhtjUS4?N
+R[KS.PEM&jO,]*VM2_Fjn;)<k=^#$7?!^lG@U`kZAnYjmCM[m,EH-&AG'A4XI!pKpJqJc3Ll%%K
+NfT<cQ'Rf*S"-(CTqeE\Vl?`!Y->1;['mHS]"Gbl_8=.0`lQ9Fbg+P^dF6Urf@\g2gtgiEi8N_V
+jlY^hl07L!m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcC<$J,~>
+JcC<$KE(TCrVc`nr;6Njs7uZh1&(D8p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe*s7ncUh:]NWW4o%2A3]fA$3#an@4$>bl5!;%m5<q=m84lKG9M7uO9he8S92,=X##%Z_
+9M.lJr_*8`s%32^!(ZuYr^d5`8kDNAqG[>j!)reps&K"s!)rhor_r_mqc!Jlr_rbp!)rkr"]JB"
+<`W6";ts>l<<-"r<W,r!='5?$!*9)#s&K2&=BPN'q,mMq!*K5%rE0)$#?Fi)='&L*=8Z4u=9D]0
+=',<%s&o8%"'8N(=8l>%=8Z2!<sVi.='/R+=&rAt=T;P)>Q.q,?3"@3@/jR6@/XO4@f9g8AHZUV
+A7T9NB)ZKDC&_uJD#S8UDJsH5EH6+!F8p>EF`qqPG^+L[H@('gIXcitJV&K+K7\`.KnbA=M2I.J
+N/`jZOckomQ'IZ%Q^F52S=Q7CT:qsQUSOcbVuEV`WN*#"XKAV-Yd(L>Za@*I[^WfY]">Vg^;%Fu
+_84",`Poj;aN2KFbKJ,Sc-FV\d*U1he'umte^i='f@\a/g"P-4g=lP]!o;YeqqVA3i8ESmiW/$;
+iWA3$j8S*>jnn3=kP=6DgobX)>[7873F-!:FE2&)?<9EY9MJiP4$7L?/LWG,5<Ct]1G_Qm7n?':
+2E3Z[4Zkki4&o6[<)Q[q;c$Ck;,U6[hWN_ih"':qhXTJ'i;MR3hY>nTf!1!I@:!,B>[LcB>@(ZA
+>ZkTG>?Y37>$+m.='/O*=B8O(<E<*u<;ohr;=@>+=BSg3>[:ZC?t*SUAS,UhC27X'DfKc<FEVkR
+H@1-jJ:`E-L5:\EN/is]P*M?#R@B_<TV8-VVPgDoXfen5Za@0M\[oGf^VRe*`Q$!@bKS8XdF$Fm
+f%8R.g>(N@hr*JRj5oFckiq?slg4$,n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s*t~>
+JcC<$KE(TCrr)ior;6Njs7uWg!Vc<eo`=^VrphK-nF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK=74FF&_7r2eJMrN,Ums/u-fs.1='St2@9OcGH\NffX'VP^;kVe9XV[C<WQ[^`lW]=trW
+\Kner[^ilW\%&fN['d3K\@T5Z[^ilR[Bm?LZa6pD[C3QPZE^\6ZLkF!ZMh')ZN%64['R+<Z2h6/
+[/IB4[f3ZD[^W]Q[C!<K[C3NQ\[_LHrjiEJ]Y2%o^qmk(_tq=S`lQ9Fr65/brm(Pgrm(PgrQP;b
+!6Y;_s2Y5]aS<mW`WF3%aSEpba2Z0>`PfX/]t1iT\c9,=[f*ZD\@K2_]=bbf]">Se]`,PB]`,ST
+^V[q/air,\e_/[4hr3SUroF7EjlPY'kPjZ[l0@R"m-X61nF?&>o_/"Rq>1!drVhBJ\Glfsn*]&h
+h:pZ^s"jWJo;\k0ipH3pW7@em>`iNjSXj%q?*:60W2cq(>?kWG?<g]=`P9.#]tD"i\$`WLZ*B>h
+(%^_SjQGI\jm_[%jPoCrm-<lui7m#cf+QWXaiMH<_8*dt]=GDX[^ETO[f*W,[WknW=^,-9?=.&J
+@Uit\B4u!pCMds.EH6/DGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"?7GU84W`WN*&%YHY==[^WfY
+]Y2(q_Sa@4aN;TJc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-X91nF?&>o(2MQo`Fj]p\ssf
+q>^<hqu6NlrUg)?s+13#~>
+JcC<$KE(TCrr)ior;6Njs7uWg!Vc<eo`=^VrphK-nF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK<mpAScF<oSD@ZrJ:!#!-\0\s*"Ba(3FM6Des6-E-$ARI=?Tm=]eg]M26qDre^c8NfO's
+(l='+M2@%FLk^_BLP^kFM26tHM2$hAMMD+a"bq_cL4k6XNW"h6Mu/J3NW"h5NW+t;O8Ft:O8P+4
+O8k=9OoCLGPE_>uqNh2Lrg3VO!h#LGqO@2Ks-rtUqO@JQ!1E/Arg<nUQBd]!pltlEQ2R$KQNNVA
+R$df<qj7n^S"6+BTq\?ZVl-PpX0&N'Xokl1Y-7f.rim<GZa7$GZa@*I[^WcV\[oDb]Y2%n^V@S#
+rPCM2`5KX6`lH-@aiV]Kbg"GZd*U1fdaQ[pf%/L,g=tE=hr!DPjQ5Oel0I^'mdKZ8oC_kRqu-MF
+s7lTtcE4CYVPjEj+Q288dEBD9Jq0,^]$%g=Y'aVKCJ];"FA5Y/K7JN%J:RVp&6;b/;c-AUOcb]c
+NfK*VM2D4eOT-cua1&7SWiW2#Xg>::XfJV@ZELL4Vkp2aTqS*IR[KD'P*(lfNJrdQMuJP5M#E,%
+Lj3$)=^,-9?=.&J@Uit\B4u!pCMds.EH6/DGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"?7GU84W`
+WN*&%YHY==[^WfY]Y2(q_Sa@4aN;TJc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-X91nF?&>
+o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+13#~>
+JcC<$KE(TCrr)ior;6Njs7uWg!Vc<eo`=^VrphH,nF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK<.@8khqP;#O2H;#O8];#WTV4nq,?4$!:"!]iD)r]UNN5!D(k5"PWD"\MEZ92&(Z9FOQf
+8k_lO92%oJ9M8%U8d%dW84Z8M8cM?]8H;9[7K??b;uT\p;tj5k;uBPm;uKVm;Z]os;uT\l;uBVo
+;Zp'"<)Z`k<;ons<<#ts<rZ5$=Sl2"<WuQ,=&r@'q,d]"=BPQ(r)`u$=SPts<<-)!<rc:u=Thi.
+='/T'>5hY)=T2G1=BAU,=&r@'='/T%<rc:u=8u;&<E<0"=8Q,"=Tqu5>[1Q?rEfM2s'Yk6ra>k9
+@:B.EraYq<!+l.As(;IGAnG[grb)mXC27U$D/F0.E,]f:EcQ5CF8^1lF`qtQG^=[_I!gBmIt3*&
+KDgK'Kd;D.Ll%%KMiEaXOHG]iPa.Q#Q^F20S=H.ATV8'RUSFZ^VPgBlWW0"@XKAV-YHY=<Za@*J
+[^WcW]">Se^;%J"_8=+.`Q#s>rlG8bbKJ-/c2Z&ld*^:jeGe"uf)OD&g&Ke+g\fh,h>H(-h>c@3
+hu;R;j5f:_jo+9;jo=K@k5a`AkPaTKhm%30>[:V6>p`m!G]@A,?<9EY8kiH;@QIUK/L<8+5<M%]
+1c%Zn8Ol3<3&rr^4oRPD48i1Z;?p3#;GpIl;,R#Fr8@,&mb[KkoAK<#pu),0rST*WZ\iX/?<^Z?
+?<pi@?=-rA>@^uC>$>-6=]ea,=BAU,='&C&<`N$sr_ins;,C*f:\@P/=BSd2>[1TB?X[DRAS#Lf
+BkqL$DK'T9FEMePH@('hJ:W?+L51VCN/`m[P*D5uR$sM9T:r!TV5L;mXKA\1ZEq!K\[oGe^VI_(
+`Q$!@b0/&Td*^:ke^rF+g=tH>hr*JQj5f@bkNM0qlg4!*n*fc9nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;HTdrdk*#s*t~>
+JcC<$KE(WDrVc`nr;6Njs7uZhs7ZNerq.i7oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JL%
+da?Cdbfe+=F*N(nqQ/5JnZ2bnSG/TRT)Y>aSsu%/NrG"nOHj<gB5)$nXK/S3[C<NO\[])[]XkVa
+\@T5[\[f5YZa6sE\$icU\@&`OZaI6N['m@@[K!Z=[Bd$AZEj,-nZr/#s0V[0s0Mj6[']e>!4Ma3
+rNlR4rjDm;\@DLJrjiQL\@K5a^;%J!_SX4/`;[aT`W=3)rQP5bqTf,es3CYh!RAshbQlD:bKJ&M
+b0'S&!6G/Z!QW:UaU6).`5BF*]Xtec\,Ni7\,Wu<\c95A]Y"0Ss189Drk&*@s1JoX_o0X=cI17q
+gY^oIj5g4$"6S_,k54?AkS*4Hlg4$+mdKW7o()GGp%S7Xqu)*G\,QNnn*^24s4mSQ1]@(>W2dVg
+mIBDHc(B9:P@L5VT3Pl3Y,eY'X/`.&?!CcF?!LUS^q[Us]tCte[C*?HZ&\i1p$(`%jl#.[na5T'
+j6ZL'lKRBegY:B7g"4Ega2Ps3^qRIm\[VRG"1PYG[f3]-[XM:[=^#$7?!^lG@U`kZAnYjmCM[m,
+EH6,BG'A4XI!pKpJqJc3Ll%%KNf]EfQ'Rf*S"6.DTqeE]W2co#Y->1;[C3TU]=bkm_8=.0a2lEH
+bg+P^daQ^sf@\g3gtgiFi8WeXjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jjeq>U6gqu6NmrUg)?
+s+13#~>
+JcC<$KE(WDrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JL%
+da?Cdbfe+3A7fV$L@g;XL\6K#M>qboFoHR`FUE52E,TQ/DJsSs=oMM+=+c*ZLAlr>Ll7.INJrjT
+Mi*FMLl.(HM>`2IM2-nBM27"DL5:YBL5:S>LP:J:KS4r1NK*IeoSrj1qiC`:"-8J'O8b4AO-'-t
+"H\\*OHB:#qiUuDPl@!JQiEHOQi<?QR@=&C!h,UJopl&Os-ikT!1a"W!h,OFm$dsB"dkU@Q'@O,
+Q2d-MQ2?mGQNNVAR$dl>s-O@dS=Q:FU8+Q^W2co"Xf\b/riZ@*YPYR'Z5'^Q['d?M[^NZT\@K/]
+]=bhj^V@S"rPCM2`5KX6`lH-@aiV`Lbg"GYcd:%ddF-Lne^rF*g>(K>hVd>OjQ5Odkj.U'n*fc9
+oCVbPqu$DDs7cNqd&s[\rML^8gZ.,:b/:]>JWle9b//q%G@+is:j7)+9i=c>J:[ZL'i%S#<Dugo
+:mI3+O,f<_NJraOLPU_Is!@0U\?<!8XK&;'['?g;XKfUDYHY"'V50i[Tq@a?R$EhtOcbZ`regr;
+Ll$tEM#N2&LjiE-=^#$7?!^lG@U`kZAnYjmCM[m,EH6,BG'A4XI!pKpJqJc3Ll%%KNf]EfQ'Rf*
+S"6.DTqeE]W2co#Y->1;[C3TU]=bkm_8=.0a2lEHbg+P^daQ^sf@\g3gtgiFi8WeXjlYail07O#
+m-X60n*ol<o(2MGp%A%Pp\jjeq>U6gqu6NmrUg)?s+13#~>
+JcC<$KE(WDrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JL%
+da?Cdbfe*s84cKN;><uc:Yek;;#jGi4T7M=497N)r\t3E4?GPa2`NiZ7K,gW8H)0]9M>@YrC[/b
+9E%Wb8dS0a91hfJ8kM`Kr^d#[$qa)_8kDNB77K^9;cEWm!)rVk!)renrDW\n!`N*!r`&\l!`Drq
+r)EJjq,I;ms&B"ur)Ni"=Sl2"<WQ9(rE&ht"]n])=BAPt=Sl/"<rQ)*<`iI*<`W:'=BPN'!E`M!
+=o__)=SGl(=BAR)<``C*=&rE#<WH5#=9hu4=]ed/>$Lu2s'>Y2qHj82@K'XA?XR;O@q/tX@q9-L
+AcZOXrFc.B!G?*EBa\]mD/O60DfB]:Ec_2$rH0c;G^4U]H[L3hIXcitJV&N-KS>/8LPL_DMi<XT
+Nf]BdPE_;sQC!u+R@9V9StMeVU+)k5V5C/gW2ZbsX/rJ,YHP18Z*UdE[^NZT\@K5`]Y2%n^VI\&
+`5K[9rl>2abKS30bn87Icd:(fe'umuf%8O+f\,!4r7q5+"Q%tjhVS7h!9!k8!oi8#ro=(@r9!n>
+!9j=E!:'@DrTZ`/[<,e]?!UcB>[;>pEFr]e=$],C9iZ:M4@1eT/N#.F4ZtGT1It#-7R]a83&ii[
+4?Yhh<E<+";c6Uo<)Q[n;Gm;Npu;,.l/;6lq;Ci&r8[)%"kpABDIZuO>QA+0>S(1I?!CQD=^,*6
+>?P-3='/T&<rc5!<WH%s;Z]io;>sDk:\@P5='/U/>?kH??XR>PA7]@dBPM=!DJsN8F*)SLH$Xjd
+It3-'KnbD?Mi<[XP*;/sR$jG7StMdPUo1/kX0&P/Z*UjH\@K5a^;%M$`5Td<b0/#ScdC1ieCN7(
+g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo^qhLp@e7Zp]1-hqY^6ir;QZerdk*#s*t~>
+JcC<$K`C]DrVc`nr;6Njs7uZh1\^V:p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+dEp1abfe+?G'\Y!Wr&mrX4jTRX7E=nXdkpSSc>;\SHG@IPE,X%+d&!sAYuB*WiW;)YHk^IZaI<N
+\[T&Y]=GPa\$WNM['R.=[g'FR\[JlQ[f3Z;[^<KN[/IH;['-^<ZEj2/q6C",rj(su!4;^4s0hg4
+rNuR3rjMd7s1&*>s0r9D]"G_j^VKfb!5n`R!QW@^bQ#fcc2Z)fci;8kcd;X:s3:YibkfQebfe2P
+bPfQ`ao06[aS<jpaN)?>_n`st]"#5X[C*BK[^NZT\$rlW\[hXLr4Dp?rk/lW_8F76c-XtmgYLfH
+j5f=`rT4LNk2tjhk3(mhl0@R5m/HDPnGi"`oC_eNq>:*hJcE7[#O1UCi8EMMh>R@0r:ff]WPI<V
+oB`9tR=L'TAY,Na>[q'CX/r;&WiB9/>%1iF>[5=c^V7Cq]tCnb[^<BGNrL[)lfdEji8`nfn*0&s
+mIfZ+l/^dWgtCN<fZVCW`59:)^:_%f\$WTQ[^ENOrjDF-ITKWS=^,-9?=.)K@Uit\B4u!pCi4-0
+EH?5FGBeF\I=?]tK7nu7M2R=QO-,TiQ'[o.S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WL
+cHjkbe'uq"f\,!6h;7&IiT&t[k2tmll0@U$mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`no_sFA
+K)^?~>
+JcC<$K`C]DrVc`nr;6Njs7uZh1\^V:p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+dEp1abfe+3A8#h*LA$GXL\6K#M$%mDFa!M%s*"Ba)KTn<Df'?/DfScVIt3-&K7\Z,KnkD;Ll@.K
+re_&@MMm@JLPUeCLkktc#)S4pM2-nDreCf9L5:V=LP:M<L&Q`)NV&2,N<#"<NV\\4O8Fq;O8b4@
+O8b1:O8k=AO8k=9OoCODP6$o5rg*ML!1*SMs-WhS!LfGTRf8fQS,f,YSGAZRSG\lRRf8fKRKJtF
+QBh<2!1!MIs-<VK!1!JJ!13\N!13YOs-N_P$^mKSSY2^OV5L8lXT#@%Y5GO(Y?%m2YHb@<ZEpmE
+[C3QS\%&rY\@B,^]=bkl^VI\&_o'F3`Q#m:a2c9Cai_fNc-FV\d*U1fdaQ[pf%8R-g>(N@hr3SS
+jQ5RglKmp,nF?&?p%S7XrIP"As#/</Yd::,Vl?]SjP8)'_7+uHPbGG+`I!qlARfORG'8"&;GVpr
+JU`6#J5/p9<Dujp;3[6+NrG+>N<G/rLl$nKru^dQ\?N-:XK&;&Za-d;XL,aBY-4h'VPKu`U7dpB
+Q^.Q5$]pC.Mi3INMhm7HM#N2&LjiE-=]ns6>[CcF@:E_XAS5[jCM[m+E,fr@G'A1WH[U?nJV/W1
+LP^qJNfT<cPa.T'S"-(BTqeE\Vl?\tXg#(:['mHS]"G_k^r"".`lQ9Fbg+P]dF6Uqf@\d1gtgiE
+i8N_VjlY^hl07L!m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+:9$~>
+JcC<$K`C]DrVc`nr;6Njs7uZh1\^V:p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+dEp1abfe*s7S6BL:\[ca:]=2L;?'J_;>E?R4nq/>3u0e92E<l]1c[rl6UjL67Rp!A7n6*A8c;9^
+:&[g(91_`K9M8#N8kDWJ8kDQF84Z<D8kDWJ8P&hN#=_3S85iGb;YO,d;Ya5n<)lmsq,@8j!)rbo
+qG[2hq,R>n!`rK+q,dSur`9)%r`B,%r)`bt!*B)#qcE\rr`B&!s&]2#s&]8(pKIQ!!a&N*rE0&#
+#Zt//<`N1%=BYW)!*K,"qH3`#rET;-s'Yh5ra5_5r*TM5rF5e:!+c(@r+?%DBDuQSBkh?sCM[j)
+Df9T7EcQ7"FT6JQG'A1UH$Xd`I!g?kIt3'#JqAZ0KnkD<Ll$tHMi<XUNfT<dPa.Q$Q^F20S"-%@
+TV8*TUo(#fWMunsWN*##Y-+t4Yd(M5ZOsRP[^WcW]=Ybj^;%G!_SjF7rlG>bai_fNbPoa"cd:%d
+daHUoe^i='f\,!4gY:N=rS@J0s53h6ro3q;roF%>rT=(Bqs"(ErTjILp?MtG\9D@e?!^k:>q'uD
+EG&]c=$],D9N,eF4$PGR/iG=G5!1JT1e:,+77K^83B/r\4[)"kr`';);c?[p<)6Il;GmGT!9Eb3
+m,I?iqVp)d%,A=MDId'Z?!L]A>[.25"^>;A=Bf#.=o_\'<sVo0=&r:#<E<#s;[$&r:esnar_N2`
+ITKWS=^,-9?=.)K@Uit\B4u!pCi4-0EH?5FGBeF\I=?]tK7nu7M2R=QO-,TiQ'[o.S=Z@HUSOcb
+WN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f\,!6h;7&IiT&t[k2tmll0@U$mI'H3nF?)?
+oCMVIp%J+RrV6Egs8)Zjrqu`no_sFAK)^?~>
+JcC<$K`C]Drr)ior;6Njs7uWg!Vc<eo`=^VrphN.nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@n=FFA_-V>%%TWrK'hWq*1jXSn[]SH,8\SHG@LPE,X%s,f=,USaogVl?`"YdCdH['m<M
+[CEc[\[]/[[^`]M\@/iT[^ioU\$`TM[C*HL['I*I[(!HOZF$g<YkPEuZKear[/IE3[K<hD[J7*3
+[C3KN[eR<>\@T>d]t_A!_8=%*rPScVa3">'!6kAcrQYDirm(eqcd'h^cd)O7qp,5d#L:T=bfn>V
+bPoZWaV`(<_nj+"]"#2W[C*HO['[9N\$icT\@8sH\bs&<]DK8M^;@e,a32fWfA#0@j8S0=k5XTH
+k3(mgroP!Zkj%I!lg3s(mdBT7o()GGp\F[_rVhBJ\c2`rkjJE-!9*nV1]7"<Vl@MgmdohB^n-7:
+P?aZNSQfW2Z)at*XK/@)>[(ZE?!LZ=_nWn!^V.:k\$`TLZ&\i8p[75*jPf1]m-s9'k4/**kNV!a
+gt^W@gt9ck`l,a1^qICm\[SrS\$WQM[f3],[WkkV=^#$7?!grI@Uiq[AnYmnCMds-EH6/DGBeCZ
+I!pKpJqJc3M2I7OO-#NgQ'[l,S"6.DU84W`W2cr$YHY==[C3TU]=ktp_Sa@3a2lEHc-F\`daZgu
+f@em4h;-uHiSrnYjlYail0@U$m-X60nF?&>o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+:9$~>
+JcC<$K`C]Drr)ior;6Njs7uWg!Vc<eo`=^VrphN.nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@n1@qon0K_C6"L\cbdL\ci'LB*/"FT?U`FTHK$rbXc6DfBfHIt*$!J:WB,KnP;<LkgkE
+N/EROMM[:KMhm.FLPL\AMM[.GLkpe@LPUY=KnkA7Lk^_>L4b)1oSi^-p5\d+rfI/@rf6l:rf@,@
+r/gZ8s,mAHrK[DK!13SK!13\PrgEeTrgWkVrgj(\r1*_T"e;'PS=Q5KSH#)YSGnu[S=>t:p6l/Q
+Q^*buPl?m@Pl6mHQ3<P?QC!s5Qj]@PS=ZCIUSOfeWiZ0%!3cC+s02g4Yct=9Z*L\7Zi@E9[^W`U
+\G`rY]">Sf]tV7t_8=+.`5Ta9a2l<BaiV]Kbg"GYcd;[=+O\`geCE1'g"P39h;@/Mj5f:`kj%L$
+mdTc:oC_kRqtu$Fo`%2*YHG42W2Q_sjQ5+@aM>37JX)t<b/f!iF_PE)8p>H$9i=f?J:W3$It(6i
+:/t4k;Gg8SOcPTbNfB'WLkpnCOT-s(ageUYX/rA%Y-PF>YH>7GWiWA%Vkp5cVPBiQR?s2&PEM#g
+NJi^PMi3CJM2;.doS@`n=]np4>[:]D@:E_WAS,UiC27[(DfKf>Fa&(UH@1-jJ:`E-L5CeHNK90a
+PEhK%R[]k>TVA6YVl6VsXfnt7ZaI6O\\#Pi^r"".`Q-'BbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5Oe
+kiqBum-O--n*ol;o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcC?%J,~>
+JcC<$K`C]Drr)ior;6Njs7uWg!Vc<eo`=^VrphN.nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@mp8P;`O;>X2c:]=2I;>O2e;#sKTpcSR>pcKKW3]]5\2`a&_4@;M(6q'L47Ros>84H*B
+8kMbU9F=Ed8kViN92%rL8c;9]8IS-[8P2TH8kDWG84Q2L8H20[8FKIC;u]_q;uK\q<<-"p;uTbr
+;uBVk<W,tt<rc@u=8uD&<rcA$=8l;'=&rB$=92Q,r`B)"r)Wl!r`/qur`B&!r`BA+=B\j2>?^u.
+rE92(r`K)"r)`r#r`0>,=BSd/='&L+=oDG&=8c8"=TD\)>l@q.?i=C4@K0^5@/j[6@K^1OAS#KQ
+B)u[YrFl+Cs(_RMs).jTs)A$[rcA0`G5cXaFqAnEH$O^_I"$QqJ:W<(K8#'YLB<9gMZ/PQNK90`
+P*D5tQC+)/R[]h<T:hmPUSFZ`W2ZfqX8f7AXfnt6ZEggC['d9K[^NZU]">Vg^;%J"_Sa=4aiXP)
+s3(Ac"jbQCdaQ\Ee-FOUf@\a0g=uV^"Pqqkhr"Fkro*n:ro=%>!9O1Aroa=Fs60OKros:ErTjIL
+qsFCL!:0RL0Bp,p?sHuC>[:WBH$XFB@9lo"6:spOApHI&1GUUA.m?*Y0f:dX7n,p:77K3q3;u)M
+4Zk`)<E)pt<Dumn;uT\ok4[p,jQtq$iqh^"jR2+Vh7/A]A6rPI>[C]@>@(TA>[_#B>$G-4>$>$/
+='/L*<``=$<`N/u;[$&r:esnar_N/_GZS$N>$G6;?XI5N@q9._BPD3sD/O93EccGJG^4U_I=Hd!
+K8#&:MN!OUOHPfmQ^F52SXuLKUnsufWiW>+Yd1UC[^`l[]t_A"_o9U8aND]NcHsteeCE.%g"P3:
+h;@/LioB+]k3(smlKdg'mI'H4naZ2@oCW%T!quB_rqQNhs8)Zjrqu`no_sFAK)^?~>
+JcC<$K`C`ErVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe,LC3+oWS#NI^Wo0lDWrK-sSF<!VR[&toNJrp\Q(t+OrhpU4Xg5=?[C!<L[C3BN[^iiS
+[Bd6K\$u=G(:CWZ[Bm9K[^EHM[CNcR[Bm0DYd(C7r3?:+s0;U0s0;@)n?`,$rO)[6!OT9+[/[Q6
+\,Wl:\,Nf;\%0-M]`>hH_%"2r_8=+.`Q$!@ai_cMrQY8crm(bpcd'h^ci),icd)L8s3CVirQbGh
+s3:_kbKJ'(aTol*_S<dq\[MIEs0hs7#IV"J[C3NQ\,Ei:\bs#=]DfGU]tD"l_Sa=2aj8GfgY^uM
+jlGP&k5=BBk5OKBjq[.Gl07L!lg4$-n+#u>o_/(UqYgBlJcE:\!po(:ro!n=ir/m5r:f`ZWPdW\
+oB`<ddC>*sOJ&5:>\.6HX0&>%WiK<.>@LuH>[:ON^V.@r]tCna[C*?HNrL[)o&f#oiofOknE]?$
+mI]N%ki1LTgYC`CfuqLW`PTL,]tM%g\$`ZR[(!ENrjDC,ITKWS>$G6;?=.)K@Uit]B4u$qCi401
+EH?5FGBnL^I=?]tK8#&9M2R=QO-,TjQC+)0S=ZCIUSOcbWN3/(Yd(OA[^WfZ]Y;.s_SjF6aN;WL
+cHjnce'ut#f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`np&9OB
+K)^?~>
+JcC<$K`C`ErVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe,L?=mtnIY[TPs+fTgl\F_I*HH+;Des6-DfU8TIXciuJV8`2LPCS>M2R7HMi!>jM$Jfn
+LP^hDMMhCi!f2VcrJ(l:Lkg_>LPLV<KS+r0JqX)]rJUW5qMk?3nrNg4s,[/>rf@)@"-8P)O8Y.@
+O-'4#rK%&BPPpdGQ2m3JQN*<NR/`TSRf8fSS,f,ZSdM$YS=Q4@S=?"<SG\rPS->CPS=Q4?pR25Q
+QBdYtrfR8FqNV#D"I,1:Pa)-3!1*SMs-`bO&"9#ZStD[MV5U>mXfeh/Y5PU)Z2Lm.Z*:M4Z3%A?
+[JmZ8\Gs,>])TAN^:h:r^qdh(`5KX7a8X.4aiMWJbKS5VcHjkbdF-Lnf%/I*g"P08h;-uHiSrqZ
+jlkspmI'H5o(2PKq>:,As7?7?eZl6]X/`2%X5rBpcc3`,JUs)]\B2^<Mn#*eD/4B>G"kn2KRn]'
+JUi7L:D-Z,<)ZXiPECogO,f6[MM[1FLlhWdo#\GMXfJP*Xfo%;Ycb.7\uW!:WMcViV5L,_R@0D,
+Pa%;lOH#0VMMmDlM#`A2L\-CO='/U/>?kH??XR;O@qB7bBPM=!DJsK6F*)SLH$XjdIXm!%KnbD?
+Mi<[WOckuqR$jG6StMdPUo(&hX0&P/Z*UgG\%0,`^;%M$`5Td<aihoRcdC.heCN7(g=k?<hVd>O
+j5]7`kNM0plg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTerdk*$s*t~>
+JcC<$K`C`ErVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe,L7S-6H:esp[:]=2f;<q-G;>iTQ4T7M<4;'\:3B/rW3]fDj6UX@36q'L88,bs\8P2TK
+9)_Km92%uO9M%iJ8kVfL9)_Bq7nH9E8kDWI84c?C7n?-?84Q0@rDNSks&/kopepKXqc*Pn!E<(s
+<;TVo<;T\q<rZ/%<``@)pK%>srE'#"r`B5'<`f6%rDs&$<E8rtpJq2n!*B,$rE95+>5hV(=o;J'
+=9M]+=&rB$=8l>$<rQ2"=9)G%=T)A1=BAR+=BSd1>$5!4r`oJ-"'o5??iFF7@:3I@@/aR7@f9g:
+A,p3?AcQK@B`2]GC_(B!DJjB2E,fr?FEMbNG'Eq/!-eBfs*HGKIt3'#K7no3L51P?Ll%"IMi<XS
+NKB9cPa%H"Q^F21SXuFFTV/$SUnsrdWN*#"ri?F.Y-5+9ZF$sG[J[HP\%&u\]=kto_8=+.`Q-'B
+b0.uPc-=PZcd:(frmUns"kD2Tf\"mVg'ZTih;7#Ghr*JQir8!<j8e6>jT"<Ak5OTCl2U&KlN$;N
+lhg&ImJZJQn,;\SmJcJNmK`'mHXU,a?=!P:2g]gfAmnnD6:+:<=(Q205'U![2)IQ\4>A]M7n6*<
+7R]a(3&j)d5!;"h<E3!t;H6Xp:fC:j;Y]JJk3_9ujSIuhjr3-fMf306?!^cC?!UZ??!^c@@9?`<
+=]np3=T);,=B8L(<`E(!;Z9Sq;GmBhr_N/_ITKWS>$G6;?=.)K@Uit]B4u$qCi401EH?5FGBnL^
+I=?]tK8#&9M2R=QO-,TjQC+)0S=ZCIUSOcbWN3/(Yd(OA[^WfZ]Y;.s_SjF6aN;WLcHjnce'ut#
+f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`np&9OBK)^?~>
+JcC<$L&^fErVc`nr;6Njs7uZh2>?h<p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbfe,LDK^A_SZ8^aWVrdOVtm:gWW0!oSF<"%R[&qnNf8sYPbFkKV5L2kXK\t8[Bm*E[C*9J
+[^<HN[^EQR[^WcV['[6KZa@-KrNuU4%C3IP[^NKHZELI6Y-G82YQD)8ZMq-$ZM1^%[/IB4[/IB6
+['R+9[/[K4[/dZ5[JmT@\@T;b]Y2(p^q]la&]2H(`Q-'@aihoQbfn>Uc-FW5cN)>kci;Alci2;k
+chl)hdJhMmci28pccs\Wb0'V'#0=`u]t1b_r3c:-s0r!;rj`-B\[f<M]DoPY]Y2(r_oBd@cd^S%
+i8WhZjQ5Lck5FHEk2k\'irJ3?k7["Dm-X3/n*oo=oCM\Oq>:*hrdk*[rs.oQlf-sajQ-:>)Z06u
+Vl7MkmdfV=WmeV5P`]@GT3>i5ZE11,ri6c<>[1`H?<gc?_nWq!_7dIk[^<HLZ&\i8q"*V.jQ#Lh
+mI9H+k3DNujQGR^h:pcEhV-2o`l5g3^:h1j]!f#U\$WWN[f3],[WGPO=]np5>[:]D@:E_WAS5[j
+CMRd)E,fo?Fa&(VH[U?nJV/W1LP^nINK90aPa.T&R[]n@Tq\?ZVl?\tXfnt7['mHS]"G_k^r"".
+`lQ9Fbg"G[dF6Uqf@\d1gtgiEi8N_VjQ>Ufl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Kk
+rVcBfJcCB&J,~>
+JcC<$L&^fErVc`nr;6Njs7uZh2>?h<p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbfe,L?Y4+qIY`gRLWkMQLZ`ddF)Z#7Ci!s,EI7\5s*k$#rdu2ELkLG:Ll$nCM27"GMMR(F
+LP^nFLPL\@KnbA=re:u<KS>/:Lkge?KS>#0JV&i>rJUT4r/LN4lAtn*rK$o=s,[&>qiCiAPPpaG
+PlR'IQ2d0MQiEEQRJ`NRS,SrXSc55XSc##XSH5=Qrga"Zpm_JXS=H(<qO.STQB[VtPQ$a>Pl?sH
+PlI'LPm!D>R$jB?Qkc$XS"6.BTVA6ZWN3/(Y-"k1YctC:rN?C/YHG%3ZMq30[f<g)\@K2^]=Ybj
+^V@S"_8=+.`Pop@bKS/RbKJ,Rc-FV\d*^:jeCE.#f%8R-g=tE=hr*JQj5f@dlg*s+md]l>oChtU
+rIP">rr^iWXfq`*s/l=^+4nfW]X36@Q)(t4^jUgDRq$>O:3LeT;br'uJUW0#JGr=W<`E$s;,EI<
+Ocb]bNK&gQM26qKs"<la]!e`AXKA\1Z*^a?Y-PO;Xf\S#VPU)eV4j?FQ^*buOcYZ`N/NROMi!:H
+M#N2%Lic[!=]np5>[:]D@:E_WAS5[jCMRd)E,fo?Fa&(VH[U?nJV/W1LP^nINK90aPa.T&R[]n@
+Tq\?ZVl?\tXfnt7['mHS]"G_k^r"".`lQ9Fbg"G[dF6Uqf@\d1gtgiEi8N_VjQ>Ufl07L!m-X60
+n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCB&J,~>
+JcC<$L&^fErVc`nr;6Njs7uZh1ACM9p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dF$:cbfe,L6q^3Ir_W;ar)!5ef2;TGqE+R:rB9p<s#U<A3&iqt3W_Z76iKIX77Tg97S$&K8I.p]
+8P)WL9MA%W8d%^Y8kDSO8H;B]8cM<]8,Z!Y7fZ*Y8,lKc;?'Pn;>*o\;u]hj;Z]p!<r5kq;u]bo
+<;fhr<WZ9%<r5qu<rQ2#<r?#$<``@)r)`l"rE&u!s&\qqr`&r!r`92(='&N$>5h\%=pS53<E3("
+<E<2f=T;J%=:&,6>?b34=^#$6r`fP2?XI4?@0'bCrF#Y6r*o\9!+c(?#\Ia`Bk_6oBkmW_s)%aQ
+s)7pWs)\3^!-\?cs*+Nhrd$hVI!g?kJ:N3&K7no3KnbA<LkpqHMiE^VNfT<cPa%H!Q^F21S=Z@G
+TV8*UV5C/gWN*##Xf\b/YctF=['[6LrjMs=]"7jN%_B?f^qmn*`Q#s>ai_fNrlkntcd:%ddaHUo
+eCE.%f_sM'g'HHhh;@/Mj5f;#jo=KCkPaNLkN:skl07L!lg4W<!:KdR!:]pTq="OWnF5o8qsOLR
+s7$6Z_0f]sra%0`?<qo'De3<Z<C0#E9ikn73]qR\0/bU<4ZkGV1e:/,6q'R52`Wi]5<_4m48r4d
+<`E's<)HOm;GmGYs68S-n)jH-qW?MprT4RI\VkB;?sR)D?X6rB>lJ"N>[LQ9>?P04>$4s/<``C(
+=B8I$<E2pr;c-Fi:f'qar_N/_FB2IG=^#'8?!grI@Uiq[B4u!pCMds.EH6/DGBeF\I=?]tK7nu7
+M2I7OO-#NhQ'[l,S"?7GU84W`WN*&%YHY=>[^WfY]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!6h;7&I
+iT&tZk2tjkl0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+C?%~>
+JcC<$L&^fErVc`nrVQTj!;ZTg2>?h<p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@n9EI3%pW2ZcnW;NRdVYI"cV!t5WVZ!FeSF2p[S!B+sN/N[TPG4kMV5U>nXg7l0&@8gO
+['mBL[^ilY[^ru[[^5q?s0`3?[C*HP\@8oTrjDd5!42[/!N`I'YlCs0ZE^\3ZN%3,ZMq30ZM_'.
+ZiIH+[/I<7['R*GZa9M8rNum=\@B,]]=bfT^&PkI^^%cr`Q#s@bKKh-s31Phrm18as3C\lqpGDi
+!n#??rm:\k&'iDBb0%iJaN2E@_7dCh[f!Q,[f3c9\Gs,>])T;@])9/M]Y2"o_SjI9bKn_lhW*\r
+jT=W-k5FKCjT+??irA$PjQ5Oel0@[(n*ff;oCMVJq>:'fJcE4Z#OLU:j5f7]jo,38rV,fZVo%B\
+o&ljRe?+1/P$suSS7Z-8Xfn_*X/fK/>[q2J>[1LQ^V7Ft]Y(ea[^EKKNrL[)o]>2qj6>gpnEfE&
+kjRWpj5f+Th;$uGgX!s\`koU,^:_%f[^N]T[(!BMrjDC,Gue!K=^#$7?!^lG@U`kZAnYjmCM[m,
+EH6,BG'A4XI!pKpJqJc3Ll%%KO-#NgQ'Rf*S"6.DTqeH^W2co#Y->4<[C3TU]=bkm_8=.0a2lEH
+c-FY_daZguf@em4gtglGiSrnYjlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?
+s+C?%~>
+JcC<$L&^fErVc`nrVQTj!;ZTg2>?h<p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@n.@VBP%L5:Z_LZaEiL#n$hFQIZFF!bjEChmm)EIE4_IY!!#K7nl2K7ei3MMR(GM2@+I
+M2I(HMMm:GM#E)0Lkbna!euJdrJ1E-!JcF/K)pLSrJUW5qi1E3p5]98O,s7"rf@&?qN(Z<!0Ql7
+rfI2DqNCoDrfmYQQ^=),RJ`KRS,AfUSc55[SH57Orga"Zs.97_s.04]rgWtZqj[_YS=KSJr0d_U
+Q^*g4PP:=APl[29rfdDKrfmMMQhm*LR1#IRSXuIHU8=cfXKDE'!3c@*rN?.%ri\u"ZaI3M\%&rY
+]">Se]t_@u_8=(,`5Ta;b0A8Zcd'e[cHjh`cd:(ee'umte^i=(g"P39h;7&JioB+^kNV9tmI'K6
+oCMVKq>C5Cs761Qf!DN^XfSV+XlSHlbf79$Jq0)]]?.[5KsuM>:2NdMGB?e\L4b&-JUr>I:et+k
+;c6IhPE:lgO,f6[Mi7RkOT-s(agnm_X/rG,Yd(R?Z)t7<XfSV(W2?AcVl$2XR$O#$PECrfN/W[P
+N/NLKLku%coS@cn='/U/>?kH??XR>PA7]@dBPM=!DJsN8F*)SLH$XjdIt3-'KnbD?Mi<^YP*;/s
+R$jG7StMdPV5L8lX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1je^i@*g=tE=hr*JQj5f=akNM0q
+lg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*%s*t~>
+JcC<$L&^fErVc`nrVQTj!;ZTg2>?h<p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@mn7S6?K:Jam]:]!uc;>=&e;<:^M48V/<4nq/>3t+,/3&s&]6U4(.77B]F7gqjX84cEG
+91_`L92&"W9)hNa9)D0^8kDTHr^d,]8,Gg\7n-!>7n<MTs&/kop/:K\!`Drqr_iYm"B8B%<`S`j
+r)Ebu<W6%r=8u;*=&r=$<``B#<r5ts=Sl/#=BYW(!*B/#rE&u!r`9)%r`B)$"Beo3=]tZ+"C#&3
+<`],u!*8eqs&f>(r`Au!rE9,'r`KM2>[:WA?!^lGqdK5.raQ4EAS#IcB4u!nrG)@J!GlWPDB<_8
+EH-&@FEVkQH[C$_H$OaaI!pElIt3'#JV&N-K`6`+LE_P2Mi<XTNfB'[OHPinQC!u-S"6.CTV/$S
+UnsrdW2ZeuXT#@4YHY:;Za@-K\%&rZ]=Y`T]e[76]t_D#_o9X9aN;TJbg"DXcd:%ddaQ^qf%&=%
+f%A[/g=k<:gtgfChr3SUjlY^gkPjZQl0.?ql0.Bqkj%I!rp9^RrU9dUs7--[r:0UR!qZ!Rq!n@T
+-1J`u@9m2H?X@#EH?O.:@9HSs6:ssTAQ_,ZFuCs$1bCmR4>eqo8.\6\7RK-q3'KPj4Zkf,<E*#t
+<!6#p<)QWclN$5Cl.G4Rl2BfUiOXteA7/YK>[LcB>[1V6>m=D8>?Y05>5hV7='/R+=B8I$<`Dsr
+;c-Fhr_EMjr_N/_Gue!K=^#$7?!^lG@U`kZAnYjmCM[m,EH6,BG'A4XI!pKpJqJc3Ll%%KO-#Ng
+Q'Rf*S"6.DTqeH^W2co#Y->4<[C3TU]=bkm_8=.0a2lEHc-FY_daZguf@em4gtglGiSrnYjlYai
+l0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+C?%~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8NAU&WQQ`9eYn>6)ZqkNkZoV;8Y!2]L]rgNnXm[XcUQBI5bMi*UZUo:/fri$[8Yd1U;
+YctF>[(!KN\@B,\]!o2Z[^Z7Ds0Vg6#I_%M\$rcQ])K)CZa@'DYHP+1XSB(#ZMUp,ZN%92ZMh',
+ZN%<3ZN7G=os4Y'r3H@0!j]/<r3HX8[C!?M\$rmH\cBA@]F2Ee^r"%/`Q60DbKKh-"3o-;chPle
+ci)5fd/_VodJqPkck+OKbK@uLaiMNA`50.!\@&aD[/RH>[^W]R[C!9I[C6(DrODg;qR[0K^;%M%
+`lZHPf\YWKroFOMkN:pikN:pgjPo.ti"P)/j5f=bl0Ia)nF6#@pA"L]rV_<I[f6Tuk2tadjQ>V'
+ru1n3m\Zkshsg3tUp\^\JmFRLTU_Na?ad2@WrB%1>ZtB:@U<>F>fFLl^V7Cp])K,=[Btto-hm5o
+jlGIdl0Ia'lK@<rkMtU`iSWMHi8<;9aMu08_8![r]",8X\c/u;['otAoX=d#I99WT>$P<=?XI5N
+@qB4aBPD6uD/O<4F*)PKG^=^bIXm!%KSG8=MN!RVOckroR$jG6StD^OUo(&hWi`G.Z*UgG\%0)_
+^;%M$`5Ta;aihoRcdC.heCN7(g=k?<hVd>Oj5]7`kNM0plg4!*mdKW6nac8Bo^qhLp@e7Zp]1-h
+qYg<ir;QZerdk*%s*t~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8N>%D>bH\V?Op4h"L!/CGok&guPEc>l2Ci"$/IK"]qJ2Mn0K7nu1K7nu8M2I1GM2@+I
+Mi!:JM26nALk^Y>LPUY>L5:S<M2$e@Knb>8K7\]*J;fGFqi(Q7q2YK9rf6u=pQ#-3rJgu@NfT7n
+OSk1>OT1ICP5CFFPa.N"rg3YQs-iqVr1*bWrgs(Z!hPpPrgj"Zs.B=_rgiqVs.0.YrL3bS!gf1;
+r0.,C#*Y::Pa%AqrKR,C!1*SMqj@DO$CdQVT:r*ZWiW>)r2q*EYct=7Y-"h-X/i>(Y->.8['mEP
+\%&u[]Y2%n^qp#e$,a^#`Q-*EcdC29d3[5gdaQ^re^rI+g=tB<hV[8Mj5]7bl0@R"m-aB5o(;YM
+qY^9jJcG<@2qG:;Y-"h-XKL^Ae]PkBY^q=gUqFgYI##4b@nLT7GBJ%,:ks[SJUi<%:Jah_<Dugn
+:m7$'OoCCFNJ`UMLl%5n&G+&T[]QU3Xg#%7['?m=YHe).)QTd7V51&fU7@U:P`q;nOH5?ZMMd@M
+LP^kDreL-%s&OPM=]np5>[CcE@:E_XAS5[jCM[j*E,fr@Fa&(VH[U?nJV/W1LP^nINfT<cPa.W(
+S"-(BTqeE\Vl?\uY->1;['mHS]"Gbl_8=.0`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeWjlYail07O#
+m-X60n*ol<o(2MGp%A%Pp\jjeq>U6hqu-HlrUg)?s+C?%~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.l8oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8N77TmD:&[ud:]F8j:]=2i;>X8D;#jMe48M);4o.;@3ts_83AriY3^H&#6UaC47Rp!>
+7n?/L8chRV9D_<^8P8qQs%<;_s%<5]s%!,]r^cuX!(QoWs&/hno2>Ter_i_opeq#g"B8B$<`T)t
+rD`hspf7>nqc<Vrs&T(uqc3bu<`]0#rE')'=Su5$=]kZ)"B\f0=BPH%!*T;'r`B)$qcWr&#?tA7
+=BAR)<r>r$<``C+=BP2ss&f;(s&oD*r`TM/=BSd2>[787!+5S2rF,b:r*oY8s'uRMAnPaiBk_<s
+CMRa&DZ4SSE;jh\F)l>DG'O"5"+#6<HM`(%IXcfrJ:`H-KnbD=M2@+JN/dgss,Ta5Ocu&sR$jG7
+StD[KTqeBYV5L5jWi<&"XKJb2Z*L^C[C3NR\%0)]]Y;+p^qmn*_o0O6a2c9Cb08,TcHab_daQ^r
+f%8R+f`'S(gAfqCh;7#Ghr*JQioB+]k3(pkkiqBtlg"K8!:9^N!po=ArU0XQrUB[Rq=F=Ps7?9_
+"7j9U@/aFY?<pfBHuX"7?s$Dq6:jmS@oGHPG;_*$2(UsT4#A]`84Q0>7RT992ul/A4UjJQ<E*!u
+<E<!n:K14iq!RhApZq_Cn*A6`rTP3[]8^]=?X-lA?sR&C>?kK?>[1H:>Zt?8>5hV3<``C'<``=#
+<Dudpr_`kq:JO__r_N/_s&OPM=]np5>[CcE@:E_XAS5[jCM[j*E,fr@Fa&(VH[U?nJV/W1LP^nI
+NfT<cPa.W(S"-(BTqeE\Vl?\uY->1;['mHS]"Gbl_8=.0`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeW
+jlYail07O#m-X60n*ol<o(2MGp%A%Pp\jjeq>U6hqu-HlrUg)?s+C?%~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+da?Cdbfe,LApA]TRA0MSp8.V]rhKIel_4-Kr1j(XrL<hWn!sTNR[K:sre_&BO-?B:W2Zf!Y-%],
+/@2Xi[(*TT\[o;`]"5>[\@&`N[(!HN['mKS[^WcT[C3KP\$WNJZa$d;Y.aD2qm-+(rj)O0r3H:-
+"0o/;Zhq$,Z3.A;ZEsM8!3uO/"1,DD[f*ZG\@K/]]">Yj_8F42a2lBErlPDfbg"GYchGfcci;Ae
+d/hV?qp5hubf\&LaMu6;^qI:g[^H+As0_d5s0_m5!joADrjVm:s1/-?qR\Jq^;%P'a3)]WgYh,R
+k2k^fki_0nkNM$hj5AhPhVR/Hi8WbXk3;0unF?)Aq"sserdk*Wrs.rRkNM0rlKA-G)?0BuVkq,a
+nFGb;[a_j>?BSinS=Nnm\$<"5WYV\8>$P9@?X@#C`5'(#^V7Co\@8oS[#Y/;p@IA,jQ,Ielg=$(
+kNM3mjl5:Yi8<>JhqZZ%a2Pp2^q@=k\[JrW[C3KM[f3],[f9BQ='/U/>?kH??XR>PA7]@dBPM="
+DJsN8FEMeOH$XjdIt3-'KnkMBN/`m[P*;/tR$sM8StVmSV5L8lXKA\1ZEpsJ\[oGe^VI_(`Q$!@
+bKJ/Ud*^=le^rI,g=tH?hr*JRj5f@bkNV6rlg4$,n*fc9o()DDo`"Lap@nO\s7u]kr;6KkrVcBf
+JcCE'J,~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+da?Cdbfe,L>@q\iI=h9Mp4gtKq/kkDs)]<&Des3(Ci+*1I=?ZqJ:N6'K7\c2KntPCM2@+IM2hLl
++,bu1LP:J=LPCP=Lkgb?LPCM;L5:Y?L4tA8KRn`7Mu&D3NUi,*NW"n;O8k4CN/`gWNr4t;OT(:@
+OSt7?NrG(@OHG\#Oogi3Q2['WQ^F20R[]b7S"#t=rga%\qORYVrgieTqjd\W!M#YWRKT%GQ^3m6
+PP^LDPEc'1rKR,C"I>C?QC%Q;!1EhTs-ta6TVA9^X/rG*Y-5%5YHY77YHG%0X/i8#WN3)$Y-,"7
+[C*KS]"G_k^qde'_Sa=k`AGTTb0JD`eC2ptf%&@&e^N!se^`7&f\,!5gt^`Bhr*JQj5oIglKdj*
+n+#u@p@nC[r;?MEs7-+:e[)E^YHb=8YNFTiai1fpJq&oX]Z7^5Lpr1M8o7FNG'$GULP181rIFlC
+#ZXf&;,EI>O-'@%!f`.sreZa:%J.cQ[B6O3Xfnn4['?n8Y8s[FXK/;!V5'rdURdg=Q'.;mO,o6Y
+MMd@MLl.%FreL-%s&OAG=BSg3>[:ZC?t*SUAS,UhC27[(DfKf>Fa&%TH@1-jJ:`E-LP^nINK90a
+PEhK%R[]k>Tq\?ZVl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9FbK\>ZdF6Uqf@\d1gYL`Di8N_VjQ>Uf
+l07L!m-X60n*ol<o(2JFrq-<cp\jmeq>^<hqu6NlrUg)?s+LE&~>
+JcC<$L&^iFrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+da?Cdbfe,L77^!E9i:LYr)*;gfMVZ2ofMt3r&ss?$9L:13]K)W3BK8ar^7Pi7n-!=77Tj=84cEG
+8P2WJ8k_iM91hhU8HVRV92#7V!(d&[r(-`U#=q?T9i4bc;s[B^;>X8g;uT_r<W#hj<<-"s<W?%k
+<rQ)!<;ons<rZ2!<WlK)<``B#=T2A'=BSf*=Sc2"=T2J%=8l;1=^"s1=^#!5>$+j,<W6&!<<lT+
+<E3($=BP2s!*K2&s&oD*r`];("'Sr7?2e.5?t!GO@fBd9A,]p;A,KdN@q9(ZA7]@cB4tsnC27X&
+D/O91E,berr,W!`G'\L^rd"`pI!g?kIf=a$IXm$&KS>,7L]3/1M?AcqNK4"!8!0"!Q'[l+S"-(C
+TqS3UV50rbW2co!XK8P*YHY=<['[9M\@8uZ]">Yi^VI\&_o'F3`lH-@ai_fNc-FY^dF-Lne^iC*
+g&B_*gD\l'h;7&Hi8ESQioK1^jlY^gkNM0plK[^$m/HDOmeuVRnGi%YnG_tXnc8:Yo)81Yo^_Z,
+oY>f^?!^lE?!UcaEc,Jt=B.^T7o!2s=$&Qh2_QL7/j;B[0Jc3i8Ou??7n3J;s#glV4Zc\E<)lmt
+<`;jm<)Z]mnb)DDn+,l%m-!^5l6t`+NG`64>?tKA>[:T=?!^fA>[(H;>?P05>$4s.<EW@&=&i0u
+;c6Qn;?Tin:Jame:\7K`<d7\J=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGB\=YI!pKpJqJc4M2I7O
+O-#NgQ'[l,S"6.EU84W`W2cr$YHY==[C<]X]Y2(q_Sa@4aN;WKc-F\`e'uq"f\,!5h;7&IiT&tZ
+k2tjkl0@U$mI'H3nF?)?oCMVRo`=d\rV6Egs8)Zjrqu`no_sFAK`?Q~>
+JcC<$LB$oFrVc`nr;6Nj!;ZTg2#$_;p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oHBQf#]Stc%XqPF+cqkO.brLr,Aq4.;Nn"'HI$^d*:Mi*=NNf^*8VZ*P)Ycb::ZEgjE
+[CEcV\@B0M\0&/c[C*BL[C!?M[CE]T[C*KMZE^gHZaI$CZ*2*]^VBEGrNc@+!3lF,s0;X0rNcI.
+!4)U1s0;U.!3u@(!3uO,s02L-s02L-'XG'P[C*HO\$rlW\\#Mf^V@Y'`Pqeq#04g-b08/WpsB#d
+s3LeodeV;fcjn@FbK7iH`l,^-]=>>X[JmN3ZiRSCrO)U1s0Md6rjVp;rji'?s1/-?s18ZO]t_G&
+a3)`Zh;[MpjrrpOkiV'kk2tdbi8<DJh;$f?gYL]Dj6,[onFZAHq>:-iJcE+W#Opm<l0Ra%m/?r/
+rqPp@V7k^ToBE!Se@C0:O^t;[T3Pg8Z`L.+WiW1'?!CcEr`oV/_S3ea^'2-Y[^ENLNrL[(o&Jim
+jlYdmmHa'#kih-hiS`_RhV6rFh:'Hc`PfR.]tCtf[^WcS[^EKNrjDC,H<"!I=BSd2>[1TB?t!MS
+AS#LfBkqO&DK'T:FEVkRH@('hJ:`E-L5:\EN/is]PEhH$R@B_<TV8-VVPpMqXfen5ZaI6O\\#Mg
+^VRe*`Q-'BbK\>YdF-Oof%8U/gYCWBi8N\UjQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]k
+r;6KkrVcBfJcCE'J,~>
+JcC<$LB$oFrVc`nr;6Nj!;ZTg2#$_;p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH?"RnlIt[WQqM+p%dY.@:l?,I9F`_YACi!j#D/X?@I=?]sI=m-*KS>/:L5:_FLl%"H
+Ll%%GKnkG<LPU\>LPCV?L4t>9KS+l2LkUV:KnP)AO,f7qN;JV7Nr+e:NfF!rqi(i@O,o<]N/`hh
+NrP+:NrP.BOH5KbrfIAIOcbfiOoCRDPlI'PR$X/-rg3\RrgWqXp72>XSXuFFqO[_XrL=ChS=H(;
+R@0G0QBdYuP*2%(P5LOBPl6mIQ4&tDQC!o&Q'R`&R$dl@s-j4`T:r-_Y-.c-qlg=/Y-+k,X/W,t
+WW/thX0&V2[CEf\]tV:t_8=+.`5]d9aN;WNcdL=of@S[-g"P05f@SU*f\"m2gYCT?h;7)Lj5]7`
+kiqC!mdBQ6oCV_Mq"jperdk+=s!H@+Y-,"8ZE^^ugXXB`]<J/_OeTJ-\pT7@Lgitn;1!M09iHk$
+K)C-5:/=Yc;c?Oj:m@$%OH5H^N/EIKLlhWho?=bQY,eY+YHG1<Z*CI8Y,n\+X/W(qV5L2dSsbq2
+PEM&iO,]*UMi<OMMMR)fL\-CK<E<1'=]ns6>[CcF@:E_XAS5[jCM[m+E,fr@G'A4XH[U?nJqJc3
+Ll%%KNfT<dQ'Rf*S"-(CTqeE\W2co#Y->1;[C3TU]=bkm_8=.0a2lEHc-FY_daZdtf@em4gtglG
+iSrnYjlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+LE&~>
+JcC<$LB$oFrVc`nr;6Nj!;ZTg1\^V:p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH7S-9I:\moT;=79H;>iWN481l94oIJK4$5Vd3]T/Y3W;&M6pX.-6q'U87S-0B8P)HE
+rC[&^!_Q$Ur^m2_9)_H`8H)3\8.\?`84Q3A7n?*>7n-9M:/4^d;t3cb;>O2i;Z]os;uT_r<r,eq
+<W?%t<W5r!<E<0"<W?+r<<-)!<W5ts<W?,!=8l8#<<cK*=BAR+=S#\q>5DCu=:JD:=]ed/>$4p.
+<`W4#rDiu$<`\lps&f;&s&]A+>$+o*=oVY5>?Y04>$G6:?!UcFqI0M9@Uf=H!+bt:$tNp]AS,Rf
+BkhF#DK#Gl(34D8F)uGEFEM_NH@($cH[L9jIXZfsrdG-&J:`H.KnbA=reV8FMi<USO,oBbPE_?!
+R$jD4S=]_Q$)+)iVl-MoWiW?%Y!oP!ZEpsI\$rlX\[oDc]t_A!_Sa:0`Q#s>ai_fNbg"GZd*^:j
+eCN7'f\,!4gYCT?hVR/Ji8NYSioB+\k2tjikih<srTaRNlg*p:mJcSSnGhqWnGDbTo)J=Xo_\=\
+pAF[Zp,9^6@pN>G?<pfBI<'4;?s-K,5t=XO@TbfWFZ;$"1bM!V4YJW`7nH3A77Tg-3&j&`5!;"i
+=8c,(<`;jl;H$Hap@@qIo'l2<bjGAq$K\s^DId'X?!L`Ara#P/$XHtB>[(E9>$G*4=oMJ-=]eX)
+<E)ssrDNVlr_WSioMBj6<``C+=^,-9?=.)K@Uit\B4u!pCi4-0EH?5FGBnL]I=?]uK8#&9M2R=Q
+O-,WkQC+)0S=ZCIUSOccWiN8)Yd(OB[^`l[]Y;.s_SjF6aND]NcHjndeC<($g"P39h;@/LioB+]
+k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAK`?Q~>
+JcC<$LB$oFrr)ior;6Njs7uZhs7ZNerq.o9oCDJBnaGr7mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+8Na)-$KLn".8rhTFdq4dh]rh//@qOI;LnspMbSXZ+;SX,FuMhm4JN0'j6VPpMrX8]=@
+['I$F\@AuY\@8iP\$NKO['R'FZFRHN\@;IF&@f-SZEpmF['d3D_o':*^:j9Gs0DL+rNQ(%s02L-
+!jJr7rNQ:)"0Si2Y5GI)Y-5&,YQ;#7rNcR5[^H+C"M)+T]=e-W'u.Q#_8=(,`5]j=b0/&Ucd'h^
+cd:&<cN)>kdJqYldJqSncPb$QbK@rJa2Gm2^:Lh_[C!9HZEpmCZ*UjFq6L(.rj;a7rjVp;s186@
+rjr-A$bX0f_8OC:d+@.6jo4E=k8<=@iSNGIh;$c<f[nd.g>M&Vmdp2Iq>:)@s0DY0nE8rum-Es'
+rVn\Pp@$t:^u"SPih<F&\UnCTA>Pri>@LpGX/`,!XJoE0>@LoF?!UUL^;%Cr]t1b_[C!9#s"*p8
+jQ5IbkNM6ulfmWujlGL_i8NYOgtprFe]GkO`50:(]=PP]\%/oT[C3OC[IgnW<E<.%=]np4>[:]D
+@:E_WAS,UiC27[(E,fo?Fa&(VH[U?nJV/W1LP^nINK93bPa.T&R[ftATq\?[Vl?\tXg#(:['mHS
+]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeWjlYail07O#m-X60n*ol<o(2MGp%A%P!;HKf
+s7u]kr;6Hjrr)KgJcCE'J,~>
+JcC<$LB$oFrr)ior;6Njs7uZhs7ZNerq.o9oCDJBnaGr7mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+8Na'WFoFaa4DqhFm"nq>nQp2oYD!H`J`F=hWRDes6(Chmj)H@:3jIt3'&K7nu6LPCYC
+Ll7+GL5(P?Lkpe?Knb;<LP1M=re1o=KnP)3KnkD<L4thSO,o9[oo/p1rJ^`8rJUf9N/dao#E=e*
+NfB!WNV/>1N<>3%NfO$uqiLc=!0[>FrfdPNQBdc%rfmbTR$a>2S"-(@qj[_YSt5hOs.B1[!1j"W
+$CdKPR$X/*Pa%Aoq3(c?rf[;Fr07,EqNh/Hs-E\OrL*\S%%No_Vl[)+Yck77Ycn#0$*UJ3Wi;tt
+WMuiqVZs*"Y-PIG^&Gbh^qmn*_o9X8a2c?Id*gCmf%AX/gY:N?hr!;Gg=b37g]$"GhV[8Nj5f=b
+kiqF"mI'K6o(2MHpA"L^rIP":s$58GYHG.:Z*CUtgXO<[\$)WXPG5S+XF#Q,Lgs4t;1!M19i=fA
+JUr?&J:C<i:/t7m;,L/RO-#KbNfK*VMMR(Mrtb1M]!SW@XKAY/ZEpjBY-4q-X/rA$WW&b&VkfrQ
+QBm_tOcYW`regr=MM[4HM#N2%LjrE*<``F,>$G6;?XI5N@q9._BPD3sD/O<4EccGJG^=^bIXm!%
+KSG8=MN!OUOckroQ^F53StD^NUo(&hWiW>,Z*UgG\%0)_]t_A"_o9X:aihoRcdC.heCN7(g=k?<
+hVd>Oj5]7`kNM0plg4!*mdKW6nac8Bo^qhLp@\L\rqQNhs8)ZjrVZZno_sFAK`?Q~>
+JcC<$LB$oFrr)ior;6Njs7uZhs7ZNerq.l8oCDJBnaGr7mHj3*lKRNqk2kX`iS`VMh;$`;f@SR&
+da?Cdc-+8Na$iTn:&.Zc;YX,N;!_'V4SCl14T7JL4?GYe4$5Sc3W:uc3B0&\6:+%/6UF:77n?'>
+8P)NH8P;ZK8kVcK8P2TH8P2QJ8OuHFr^[#\r^d&Z$:mZX7n-6K:JX_[qc!>hs%rbor_ieopeh)j
+rD`_qqGdJpqGdJps&Snps&Anrr_ru"<)clp<rc;#<<cK*=&rC(=T2J*=]ef)=oDM*=^##)=o2D$
+=oVV(=8uA'<`Srrp/h8rr`T8)qcNu(>?h)1s',M.r`oY8@q9+[raGk;raPn;raPk:rac%?raZFK
+B52:&EcQ,=E,fo=rcA*]%Wur<G^+L[H@($fIXcitrdt-":P"+LK7nu7Ll$tHMi<XUO-#KePE_?!
+R$jD4S=Q:FTqS3VVPgDnX0&P-YHY:;Za@0L\@K,\]=bhj^V@V%_o'I5`lH-@b0/#Qc-F\`df.],
+eCE.$f\+s3gY:N?hV[5Kir7mHioB+]k32$nl0@R"lg4!;mJcPRmf;kTnc/+Xnc&(ZoDJ7Wp%S4Q
+q*OhkHt-Jg?=$oB?@?p4AR/D;;F*fJ='n]b4E<D7-oEVA5<LVV1e1&,7n#j93B/r]4?bnk4'#?[
+<`W4!;G^7i;YftYoCVVFn`TDun,;Y\kIm!rA6rJH>[RJ9r`g4E>?kH=?!:E9=^,$1='/O+<**+"
+<E/rq!Du\m;?'Jl:\7J5<E<.%=]np4>[:]D@:E_WAS,UiC27[(E,fo?Fa&(VH[U?nJV/W1LP^nI
+NK93bPa.T&R[ftATq\?[Vl?\tXg#(:['mHS]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeW
+jlYail07O#m-X60n*ol<o(2MGp%A%P!;HKfs7u]kr;6Hjrr)KgJcCE'J,~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe,L@W?^@OeMcNqkO4er1`hWqk2i=s-rqVopYrOrLNt[qjm\T/=N&sS!fCuMi!.EM2eI1
+Vl?f%Y->+7ZEgjG\$`cT[C<KM['R6J['@$G\$l7Erj<'B[C*?IZF%$I`;[XV_8*h"q6Bt*qQ^"'
+s0;L+qlfq%s/l@*pTFIs(pC*GYHY::Yd(L>Za@'G['d?N\%&uZ]"7mQrk&fU^:q@u_oBa<b0.rN
+bKS5Urlt_od*L%bdaJ*As3Uel%F*,>b/qZA`5'+!]"#3JZiRM<rNZF.qQfq'#dh"I\$rlY]=\$Q
+s18]P^;.S'a32f]gu7DZr9"(DroY*YiSNDHgtUQ9f[eR%f%JsBl0e3<q#(&@s0;S/n)riulKd^$
+rVnAGo^(D1`Sg:XiLm7%Z\DeKA#5cg>\%3KWiN)"WiB6,>@LoF?!UXM^V0W\"hD.O[^<B$rri&c
+k2k\'k9TB[lfmTrjQ#=]iSrhQh;$oDe]Z"Q`50:(]=PP_\@T)T[C3OC[I^hQ<E<1'=^#$7?!^lG
+@:EbYAnPdlCM[m,EH-&AG'A4XI!pKpJqJc3Ll%%LO-#NgQ'Rf+S"6.DU84W`W2co#YHY==[C3TU
+]Y2(q_Sa@4aN2NIc-F\`daZh!f@em4h;-uHiT&tZk2tjkl0@U$mI'H3nF?)?oCMVRo`=d\rV6Eg
+s8)Zjrqu`no_sFAL&ZZ~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe,L=(>l[G_5mLqhG$&mY'JM!H`DVFRF;MF>.cXFEMVBD/<p!BkqU8H[gNrJq8T,KS>/9
+Ll$tGM27%EM2-hALPCJ;KntJ>Lkg`aKa<HfKnP/5L51Q`P6@&1O,f4iMu\k8N;/;5N/`gWp5T$2
+qi(W;Nr4q=NfX!trfI8FPEPm.r/qGPPE_>uQ^F21S!ofERfJuXSc>8`SXuIGrLX%[r1".aR[KM.
+Q'@MsPED"+P5^[FOoUXBOogi3Q2R!PQ'@MuQC%E5rg*VPrg=%\S=ZIRX0/\3r3-1+ricI,XJu/s
+9<"kgVPg;hW3*>4\\5bm_84"*_o9U7a2uNMdF6Rpf\"p4gYCZCi8WeVi8*2CgtgiFi8N\Uk2tjk
+lKmp+n*ol<oCVeOq"jmcrIP"9s$5;GYHG.9Z*:Lsgsa9W[B?6RQDD"/Z$V).Jn7Pk:j[A/9N+`?
+JUr?&J:LEk:/t7m;,L/ROH5NbNfB!TMhm1Nrt"\H]!SW@XK8S/ZEpjAXfhZ)s/cj4WMcViVkp#R
+Q^3l!P)t`arJLf9Ll."EreL*$H<"!I=BSg3>[:ZC?t!MTAS,RgC27X'DfKc<FEVkRH@1-jJ:`E-
+L5:\ENK90aPEhH$R[]k>TVA6YVl6VrXfnt7ZaI6O\\,Vj^r"".`lQ6DbK\>ZdF-Opf@S^0gYL]C
+i8N_VjQ>Ufl07L!m-X60n*ol<o(2JFrq-<cp\jmeq>^<hqu6NlrUg)?s+UK'~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Eok2bR_iS`VLh:pZ:f@JI$
+da?Cdbfe,L6UaR>9i1[`r_iYkhb``<pcS73pH8I=s#g6As#g9As#9m:'gk;T6pjF77mfd:84Z?E
+8P;WH8kMbU8H_XW84lGM8cD6^8OuDN8,l-Y:B+,i:AIif;?9Wmr)<Vn!)`Vkr)<Vp!*/hos&Jqq
+r)Ef!<E8uus&K(u!*0#!s&B)!<W,l2<E<+"<)cjs<)lpt<E<1'=B\p4=oMM1=^#!3>?b64=^##*
+=oMS+>?Y5/=T2D%=9DW,=',6!pK.>rr`T8)s&o;(r`fD+r`fD-$=-tH@q9+]A7K+YqI9M7ra?7G
+A7T7_A7T.YA7fRnE;jnWE<(%XF'!I+F`qtRH$Xa^H[L6jIsup"K7nl/JUrE*KSG5:M2@.KN/is]
+P*2#mQ'IZ&S"-">StD[LUSXibW2ZeuXf\b0Yd(I>ZaR?R]"5Md^:q@t_8F1/`Q%nt%EQZ7bg"GZ
+d*g@keCE+Ked^6`g=tB;hVR/Jhr*JPro=%>!TiJBl2U&Kli6APmf)\SnG_tWo)A4\o)A7Yo`+Ua
+pA+I^q>0s\qa1.pHXU5d?XI,E?@I$6@pN28;*mcH<aSZb4DHf.,rI;>4ZkDT1Ijr+7n#j93B/r]
+4?bnk4'#B^<`E't;bp7h;Z6=`p%J%LoCVV*nGr(On,;YWl+W9uA,]a7>[ID8s'5S0#?tG<?!U]>
+>5hY3='/O+<`E.$<E2us;Z0Dn;,C*g:\.D/<E<1'=^#$7?!^lG@:EbYAnPdlCM[m,EH-&AG'A4X
+I!pKpJqJc3Ll%%LO-#NgQ'Rf+S"6.DU84W`W2co#YHY==[C3TU]Y2(q_Sa@4aN2NIc-F\`daZh!
+f@em4h;-uHiT&tZk2tjkl0@U$mI'H3nF?)?oCMVRo`=d\rV6Egs8)Zjrqu`no_sFAL&ZZ~>
+JcC<$L]@#GrVc`nr;6Njs7uZh2#$_;p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bKJ#KA9NKQTV_U_rhKCco:brPiLg(<rg`PKs.'(Zs.91[s-j"ZrgWqVs-OFcPDtERKntSE
+VPU5iWj&Y0ZEaD7"15PH\Gio9[NW&e\$NQO[^NZS[C*NP\$NQM[Bm0FZc1#*`Q#g4_7m[trilF-
+s0DL+q60k&q6'UurN6.&q6'[us/u@)!3uO-s0;L-"0o2?[JmW4\,WrG\[oAa]Y2%q_o9X9rPeoZ
+aN4;$*m2[NdaQ^pdEp1abfRrH`l5g1^:^tb[^NQLZa$g@p9F_*[/%$5['d?O\@T8`rjr*@%(s9f
+^r"(4cICM'j6$@)!9a@F$0gX7iSNADg=Y'Wf*p-Xe_&[9jm)@-q"t#@s0;S/o'#9%kj.L!rVn\N
+oBb;2a6<'an"?o:Y_-8EA>Plh>\.9LXK8D%WMs*+>%1fE?!UXM^V7Fq^:Lk`\$`W(rri&ck2bY'
+kPjcjki_*hj5f7Zj5]%RgYLW7bK.`B_SNq!]=GG]]!\oQ[C6(Bo<rsF<`W:)=^#'8?!grI@Uit\
+B4u!pCi+'/EH?5EGBeF\I=?]tK7nu7M2R=QO-,TiQC+)0S=ZCIUSOcbWiN8)Yd(OB[^`l[]Y;.s
+_SjF6aND]NcHjndeC<($g"P39h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zj
+rqu`no_sFAL&ZZ~>
+JcC<$L]@#GrVc`nr;6Njs7uZh2#$_;p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bKJ#K=_2>dJV3oVreCE+k_.oInT=8Cs)\6`rcJ*[#]aj"C1q6pC2<fs(k-scJqSi3L5(D;
+M2I1HLPUeDLPUeBLkbna(l3s&LkUS9L4k86K8##BQ'7DsPECrdNf<pppl#34qi(H2",r.rN;SY8
+N;/D0Nr=t;Nr>%<NWG6&rfI#<rfR&?s,m8C"dG:<Q^F0;R0f@QS!oh9R[]k?rh0:_r1!q[R[KJ,
+Pl?jJP*(n+P5^XHP*;+,P5gaFPlI$JPlHpIPl-gKQ^3s9QiEEQRJrW]SY;jWXKSn8ZEjD5#dCM6
+Wi2knW2KWn,GqB:W3!51\%0/c^qmn+`5Ta:aihuVe'uq"f\5*8h;7&Jj8S-^jQ#4VhV[8Nj5f=a
+kNV="mdT`:o(2MIp\=R\qu$ElJcG*:"5C8gYPtdJYHm?HdD`c*XeLB4Y-l*aH\SeUA4g]9H?XO+
+;Gi/IJ.7'ZInrj7<E)pp;,EI<rf@)>"H84rLkq/m-M#Nq['$I3Xfen5Za-g;Y-"b*XfSS'W26>g
+Un4!AQ]mYsOcYQ]rego:LPgnDreL*$H<"!H='8[0>[1QA?X[DRAS#LfBkqO%DK'T:FEMePH@('h
+J:W?+L51VDN/is]P*D9"R@B_<TV8-VVPgGpXfen5ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Oof%8U/
+gYCWBi8N\UjQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCH(J,~>
+JcC<$L]@#GrVc`nr;6Njs7uZh2#$_;p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bKJ#K6q9mD:Jgpc!)ienr_WSkpe^]^nkegQoK;h/q)nX>!'L0@s#^iR4#o5Z2`EcX6:+%.
+6UjR8rC7&]84cED8P/nR"A)3X8P8eM"\;3U8Ol>M8,c<_:'49e:JLgdrDW\nqG[;ir)3Snr_rbp
+s&8qsrD`kt<W,np<V9Dm=8u>$<W#hr<rZ2"<<#r*<)lpt<E<1'=BSi'=UeJ7=&r@'=B\p6>[(?6
+r*','!`rE'rDru$r)X&&=&rC'<q]Vp=T;P'=T2J'=oqo2=oMV)>6%k*>R=\D@:<YVAS#C_raQCJ
+@q0%Y@:3MP@Us%^Ac?-KA7fOkDJsK7F*)MEF*)O&G5lddGlW0iHY7_SIXciuK7ei1JqAQ*K7nu8
+M2I4MN/j!^PE_>tQC"#-R[fq?T:hmPUnsreWN*#$Y-5(6Z*L^B['dBQ]">Vg]tV7s_Sa@4`lH-@
+ai_fNbg"GZd*gFnf%&@&f@\a/g=tE=hVe@k#ian)jQ5LdkNMp0s6KXNs6fpU!q>aMrpp'[qXjd[
+$24,fq"X[\q"OR\q>^<kqtU*`rWE)6HXcnZ/mVe5F_kPn=B&0b85N;k@luk^2(p:5/Nu?[0JkUW
+84c9?77B*o2a0>f5!:u.r)Eo";bp7h;tp%\p@\+No^)2=o(V\So)%tOn.Fs#P&Ol9?!LZA?!LZ?
+>[:W>r*0J2=^"p1=BAQ&=8l5.;cH[l;,L.e;,:"br_N,^H<"!H='8[0>[1QA?X[DRAS#LfBkqO%
+DK'T:FEMePH@('hJ:W?+L51VDN/is]P*D9"R@B_<TV8-VVPgGpXfen5ZaI6O\\#Mg^VRe*`Q-'B
+bK\>YdF-Oof%8U/gYCWBi8N\UjQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBf
+JcCH(J,~>
+JcC<$L]@#Grr)fnrVQWks7uWg!Vc<eo`=^VrphW1nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oHAU&cXT:hsSqP*k\oUu&QnXfKIqk!\S!1`MI!1`kUs-a.]R[T_7R$[f>/!>mKLkUV>
+NKC'=XKSh3Z`gX<['[9LZaI6L[Bm6MZF.6N\@&cR\$WWS[/IBF[^*6Y`Q#p<_ns:,^qdh%YctD2
+ZMq-+Yl:j)Xob`,Xo>L'YPPF%Xno4#XT5I#XoGO0YHG(4Yd(F:Z2Us/Z*L_7[/[Q6[f3c8\Gs)E
+]tV7s_84"*rPKbr`Pf^4_o0R;cHt"fd*BhWa2Gj2_8!Xp]!o)S['R*Eriu4'qQp.-$a[4J[^NZT
+\[oDb])B5N]Y;+p_SsU@db3I9k32+0l2U#ckiLg]gXt-.e^i:&f%&='gYUuRm.'fFrIP!Rrs/,Z
+kNV3rl0A6I.J`MtgS`6ZnFZ:F[ah"1KoooBSt94u?am,<WN3&">?k???X@#D>/A#R^';9^\[T#T
+[#Y.ep[S7Es5j=ErotZjkN:jdjl>@_j58_Kg=t*"a2Z*8_8!^r]",>^\$WQL[f3]+[XV7W<``C+
+>$G6;?=.)L@Us%^BP;-rD/O93EccGJGBnL^I=Hd!K8,/<MN!OUOHPinQ^F52StD^NUnsugWiW>+
+Yd:^F\%0)_]t_A"_o9X:aihoRcd:(geCE1'g=k?<hVd>Oj5]7`k32'olg4!*mdKW6nac8Bo^qhL
+p@\L\rqQNhs8)Zjrqu`no_sFAL&ZZ~>
+JcC<$L]@#Grr)fnrVQWks7uWg!Vc<eo`=^VrphQ/nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH>%VYjI=_<NrIsEfiIh,PnoXDEs)T*#F)uGEEcQ5BEc,]-C1_0oD/XlQJ:`<)KS08X
+"bqegL5:ZbLCJurL51V@LkUS<Lk^_Ar.PB1K7oDNPEV71Op7#/O-#B[Mu/J5NV\V2Mu/J5NW4q;
+NW+t;NV\\5N<,'!rf-u>rJgu@NfK2"NrP1<OSt=@P5^UCOp.&6Pa.N"rg3nVR$jD2R$mr@&"B/_
+TV%gGS"#k8R@';*Q2QjHOc]O(s,mAHrfR8Fqi^i?qiq)Fqj%5Lr0IDOrgF(]SY2aUX0/c-[/[H3
+ZV[p2XfA@tVl$>hW2chqVl?`!YdCmL]Y;1t_o'I6bK\A[e'ut"f\5-:hr!AOj5f@cl07Bmj5T+[
+jlbmnlg4$,n*oo>oCVbNp\F[_r;HVGs6BUdgU=>irin,[ZKL#g_7?nPU4J`8[)'n3Lobi9@Vntg
+GBQ\Y:kjOPJ:W6#:JX\b<)ZXk:m7(@Ns1N%N/NLJOT,d]d(H`fXKAY.Z*CX?Yl:d)WuJ1BYH"Ot
+V50oYR[BG+PEV/kNf8mTMi<ILLku%co8%lq<`W:(=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGB\=Y
+I!pKpJqJf5M2I7OO-#NhQ'[l,S"?7GU84W`WN*&%YHY@?[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"
+f\5'7h;7)JioB(\k2tmll0I^&mI'H3nF?)?oCV\Jp%J(Zp\ssfq>^<hqu6NlrUg)?s+UK'~>
+JcC<$L]@#Grr)fnrVQWks7uWg!Vc<eo`=^VrphQ/nF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH77TsD9MkL]rD:[7niZV-q)nX>!'L0@s#_/[3B9#W2E<cY4%)J*6q0U87Rop;7nH9A
+8H)0^8kDYR8cM?Y8c)'Y8,Q0]:B"#j:/Y!c;u]bq;u9Jk;u]bp;u0Gn<q',g<WH4t<WH5#<rH%o
+;ufqs<rZ2"<rlE)q-!`"s&Th6<E3(#=^#*;?!:B7=]ed,='#<#r`9&#!*K)!r`8bps&f;(qH3Ss
+"'So3>5he,>6S8;?=./OrF@0`A7fIdARf1X?smDPAS#Ia@q0%]Bl%X(DfKi@G'.nLGBnL\rcnZn
+H[C-fIK"[fIt3*%KSG89K7ST*KnkMCN/ipZOHPflQ'R`'R@9V8SXuIHTq\<YVPpJoXKA\1Z*CU@
+['d?N\@B,^]Y2"n^r""-`lQ6Cb0/$-bm)J>d*^:je,@c)e^iC+g"Y<<hr*MSir8!<jULA8kNM-o
+lKdg'mHs?/rpTmVrpp'[rq$9bp@eL[!;?Bcs7u]k!;l`kr;6Nls8;rsqZ$KmqYp]t_0]Wsra%Wm
+?!`#'Bk(@L<)Z+S:K1Y:4?ZP!0.Sk35!D%^1c.cp8Ol3<7Q3:c4Zttm4Zc\F<E3("<)c^l;cESi
+p\FRXo_.tNk4JTCqss(C&F7,pEai<Z?!UcB>[1K;?=!P8**lfR?!1?5=]ea*<`iF'='&@%;c-Fi
+;Gg7d:Jh$do2'p9<`W:(=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGB\=YI!pKpJqJf5M2I7OO-#Nh
+Q'[l,S"?7GU84W`WN*&%YHY@?[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f\5'7h;7)JioB(\k2tml
+l0I^&mI'H3nF?)?oCV\Jp%J(Zp\ssfq>^<hqu6NlrUg)?s+UK'~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`b'IKK:e_5U&^nVT_Y5FT)YGUT(AEOSG&HPSGo&gS=Q.=SXZ(:R$sD2Q^Ic=$BgC(
+L4b,6MN+X8ri@*DZa@!G[C<HP[^ETQ[^WWO[^riQ[^ifR\$`]Sr3ZO5rl,>_`P]X3`4s(&^qRM]
+Z2_-/Z2_$1YHY46qQ0b!qlT^triH4(Xo>L&XTbf,XK8P+ri?(#"0J`/YPtd+YQ(g,Z2M!-Zi@E1
+[JmT9\[oEP]`c*c_83qa_%si&_8F:7b0%iG`59=)]Xt_c\[JoQ[/701ZEa>5s0V^0pp1=7[C3KN
+[^WcW]"7gOs1JoV^VI\'a32f[g>CuSlKeH9)X6DGi8*,?eC2msf%8I'f\>9Ajlu1%p%\C_JcE(V
+!VGaXklU/:lM^`=p[I:tVk`;Ao^_"Cd\MbVP%:G]Sm5f5[]QX0XK/C*>?YKC?<pf?_8*e"^:q4h
+\$`TMNrK@Zo&Srpk32%.l2p24k5OE\j5T:]hr!2@g!S$ba2Pp3_7mOn\@B,[[C*?LrjD@+HW4!G
+<`iL->?kE>?XR;O@qB4aBPD6uDJsK6F*)SLH$XjdIt3-'KnbD?Mi<[WP*;/sR$jG7StMdPV5L8l
+X0&S0ZEpsI\@K5a^;.V'`Pom=b0/&Td*^:ke^rF+g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DD
+o`"Lap@nO\s7u]kr;6KkrVcBfJcCK)J,~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L``ctlE.ET=L#RdFK)g#mFn0YIFW5FFFEDYIF)uACEcZ5AEcQ/;CM7EoAnc'uIt.HJ
+*J/s"K8,/:L5UnDLkpnFLk^_CL5(J?L5(M>LkpfaKaNQtP*:ujOckllOT(:@NVSM5NW+n:MZA_7
+MtN&/NV\Y8NW+t6NW4q;NW+k:NVeb9NW+t:O8P(AOckihrK.#Arf[>IrKmJMs-WtUQC"$<RK]1K
+R$O&'rKI>HP5^REO-'@'r0%)BqNCW;r0.2HrKdJM!1<_O!1<YP':bYfVQ-i*[C*BL['[0EYH4e(
+WrAkLW2ZbpWMur$Yd:aH]"Gbl^r+.5bg+S_dacq#g"YB?i8WeXkND'olKdg$kN:sllMg/MmLSgW
+oCMVHp@e7VqYU3hrVhBJl2Lh<\?l.=s0<j3gs!OBZ)=:HJ#]onb.*)"H>$i,;1!J09N+cBK7SQ)
+JUm_p&QMe/;,C)QP)k]dNfB!VMi!7Os"!]f]="]AXfeh3Z*U^>XfSY*X/rD+WMcSgU8+9KR?s5'
+PEM#fNJWRPN/@OireL*$HW4!G<`iL->?kE>?XR;O@qB4aBPD6uDJsK6F*)SLH$XjdIt3-'KnbD?
+Mi<[WP*;/sR$jG7StMdPV5L8lX0&S0ZEpsI\@K5a^;.V'`Pom=b0/&Td*^:ke^rF+g=tH>hr*JQ
+j5f@bkNV6rlg4$,n*fc9o()DDo`"Lap@nO\s7u]kr;6KkrVcBfJcCK)J,~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`^EBk9i"XY;#X>h;UeS54SCl949R`.4$5Y)4TIVD4!$FF4$,Pb3B&oV3BB2_6q'I5
+6q'U:7nH0@8P2NE8cD<a8OuEEr^[)^84`\Nqag]^$VjJm:JOYZ9i"P[:&.`f;ZB\p;?0Sj;Z0Po
+<<#ts<WH.u<:Nua<rZ/&<`N.#<W#hr;Z]ou<W#ns<s)K)=BYW*s&o8%rD`u%=^#$5rE&eprDiu$
+=BPN'!*9)!s&Snro2tlm!*]A+s'#G*$<gS9?!h#NAS5UfrFc4DAH$'?@:EaGAJerhB4l!qCi402
+EcZ>DFEVkSI!g6dH[L8>IK=qKrdk0'L&Qj$KnFu1LP^nHNK90`OckomQ'Rc(R@9S6SXlCGTqeE\
+W2Zi!Xfeh3Za7'I\$rlX]">Vg^;%M$_Sa@3a2lBGbfn>VcHjkbdaQ^rf)F5"ecsaYg=tE<hYuI4
+itCJ9jlY^gkih9qlKdg(mI'E2n,DnXoD\C]p&=Xdp\=O_q#L3gqYg9kr;?NlrojA5_L#]s?X@&G
+?<r&(Bjt:K<)Z.N:/kS9<BNl00J#(64[(q]1c.`p8Ol6>7/f.F4o[\V4?HSE<E<.#<)Z[l;cEVl
+q"sg^pA+CUnFl2@qt0mZmd^VL_3/hJ?<^b7>m">9>@%55"C#,9>@%52s&]q9<``@)<``:$<`Dso
+;Gg@i:/=^c:\.D0<)lt"=BSd2>[1TB?t!MSAS#LfBkqO&DfB];FEVkRH@1-jJ:`E-L5:\EN/is^
+PEhH$R@Bb=TV8-WVl6VrXfnt7ZaI6O\\#Mg^r"".`Q-'BbK\>ZdF-Opf@S^0gYL]Ci8N\UjQ>Uf
+l07L!m-X60n*ol<o(2JFrq-<cp\jmeq>^<hqu6NlrUg)?s+^Q(~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7\;Bp%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`bBdRL7J7;rh8eRrh%i7nsfWKpR;/Qrgb7'SXl7=R[BP5R$X2,R[BG-Q][>aKnP,8
+LQ874WiN;-Z*OA;#.:tJ['d9OrNuj:Za[EO[C?.C$FmRSZ*_Tl_o9X6rPf)Z^qmn(^q@DZYlM$-
+YQ(d)X8oBsXSf1&Y-"e,rN5suri?($!3H+!"0AW-Y5PR(Yl:m.Yd+,3&[SjMZEpjCZa@-K\%&rZ
+]Y2&T^Ce/l]Y2(q_8*h!]t:hb\$rfRr3HI0ZEjJ9!j]):rNlI0os=S's0Vs<\@K3L]DfMD^])%`
+`Q?ERf%]0Hlg=*+m-<ftjl>:Rf)F,0f%AU+f\,';j6#UmnFZJOrIP!Urs/5dl0@NulKeEK1\L1o
+eu-aPm.Tf-XO<u/MNh\NSt91t?aQr:WN<,$>Zt?A?sd2E>J\+i^V7Cn\@AuT[#Y/0q=<P-jlYgk
+lKda!kN1acjQ#:_iSWJFf%89naiDB<^r$)`#.h@V\[AlPrO)7*HW*pF<``C+>$G6;?XI5N@q9._
+BPD6tD/O<4EccGJG^=^bIXm!%KSG8=MN!RVOckroQ^O>5StD^OUo(&hWi`G.Z*UgG\@K5a^;%M$
+`5Td<b0/#ScdC1jeCN7(g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;HTdrdk*(s*t~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7\;Bp%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`a*:rF+4"?k(MTD!-R[Np2qU%F`heIF)l>DEcH,>F)uAAEboT+BP1pkBl/6JIt*!$
+KnY9\LE;>/L5:SBLk^_@L5(P@L5(M=L51VALOt2CP)tijOo:IKOcY]fOH5?[qMb6.oSig0s,Qr8
+s,Qo7s,7,@N/W[SNW+t:NVeb6NrY:?Oo:C?OTUc1Pa267qj@DLs-3YPQBqK7!gJn4r0%#@!0Hl9
+qi^];rKI;IrKdJMs-WhQs-NeSr0dk[StW!ZXKJo/[f*Q>ZE^[<Xf/+oW2ffs*iuNJZEpsL]"Pek
+_8XL=c-XkeeCN:*gtprJjQ5RgrosaSmHs9+l0Ia9mLSdUnac;Ep@n:Tq"ajdrVhBJk5R?m\$N<D
+Z*LX@kM47q[]u[%JXWUD_n!I5UO-fhDGkk*G"bh2L4b).Jq/AI:/4ef;c6IhPEPp,s,@/?NJraN
+OT,g`d(?]aY-"n2Z*C[@Yc[i)s/cj2Vl$5^UR[gAQ^3esP)t]aregl;M2@&eL\$=K;cQk!='/U/
+>?kH@?X[DRA7]@dBkqL$DK'T9FEMePH@('hJ:W?+L51VCN/is]P*D5uR@B_<T:r$UVPgDnXfen5
+Za@0N\\#Mg^VRe*`Q-'BbKS8XdF-Oof%8R.gYCWAi8EVTjQ5OekiqBum-O--n*fc9o()DErq-?d
+p\4[^s7u]kr;6KkrVcBfJcCK)J,~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7\;Bp%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`^WQn92>%Ss&&VjePY]rpcJI;"$8V-48q>I4Zkhf4$#Gcr]C-?!B<":3#Xe<6UO=4
+77Tg:7n6*B8k;NF8kMZG8kDQE8cD6e8OuBD8kDTF85T(Ws%WJf!`)Qdqc!Mm!)rho!)`Vkr)<Vp
+r`'/'<E)mq<)iQkqH!Vrs&K,$qc<VprD`\p!EN;#<rQ+t<rcA#=oVV(<W?##<E<1%r`/tts&/tu
+<E8rt!``9%r`B,#r)Nbtq,d>nr`B,%qH<i&r*','#$P8<?t!PWrFl+C+_k\'@q&tZAS5XhBPD0r
+D/F0/E,fi:EccJMH[C'bH[C2?IMdQbJV&N-Knb>;LPU_?KntVEMiEaYOcu(0QRA)cR$jD4S"6.C
+TV8-VVPgDnXKAY/Yd1UC\%&rY\\#Mg^VIY&`Q%ks$cpK6bg"DXcd:(feG[tufDaDFg"Y<;h;7#H
+ioB([jlYaikNM0plK[^$m-O0/n+#u?oD\C^p&=[ap\ssdqYpBjr;?Nlro="\_0TKpra%Wm?!`&)
+Bjt=L<)GtR:K1\'=Zf84/hJt75!D(_1c.`p8Ol6=7QEFf4[)%m4?QYF<E<.#<)Zan;cEPkq>10i
+p\XX[pA+%Kp%J:UnFZYM$LbioEai?U?X-lBr`fM/>[784s',h6>$"j0=BAU*r`B,#r`'2&;c6Oj
+;c-<f:\.D0;cQk!='/U/>?kH@?X[DRA7]@dBkqL$DK'T9FEMePH@('hJ:W?+L51VCN/is]P*D5u
+R@B_<T:r$UVPgDnXfen5Za@0N\\#Mg^VRe*`Q-'BbKS8XdF-Oof%8R.gYCWAi8EVTjQ5OekiqBu
+m-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCK)J,~>
+JcC<$M#[,HrVc`nr;6Nj!;ZTg2#$_;p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`G^*SMk0g@rh9%YpRg-1n=0EIpR;/QrLF1_S=5q:R$sB?QnstnQBRQ!NerFAL4b;?
+WN)u$Yd(LA[^W`V[C<ZR['d<M[^EEL[C!?L\$rcPZa@*\a2e1u!6"lU$H'm$_8*h%_7[IdricO.
+YHG"0rN-%"qQ0^ts/c1$s/Z='XKAW"X8f:%XST!tX9u)4Y-5(6Z*CO:YPtd*YlM*/Z2_-.ZO4(J
+\%0)^]Y2"n^\tkO]t:hb\[],Xr3cU5rNcL0qQ]q'rNlI0!4Dg5s0W!:Za@-Jqm?C2#I_.Q]">Se
+]`,VG^qp#e.E'<Od+-k,jQGdnm-Es$l0%3ggssm%e(*"#f%A[1h;I;Skj7a-pA4`=s0_k-p[J+G
+!:9^b2#d+6h:AIDl1"B9kd/[*P_t]2W1]\dA72dHXJr>%XJo?,@pr_M?!P7^^V7Fp]=GG\[C)%p
+/,Abtk2tjil0@QukiV!fjlPO_jP\qOf[eU!c,n#G`50:(]Y(ke]"#2WZi.<'[X1qP<E<1'=^#$7
+?!^lG@:EbYAnPdlCM[m,EH6,BG'A4XI!pKpJqJc3Ll..NO-#NgQ'[l,S"61FU84W`WN*&%YHY=>
+[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?oCW%T!quB_
+rqQNhs8)Zjrqu`no_sFALAuc~>
+JcC<$M#[,HrVc`nr;6Nj!;ZTg2#$_;p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`F*CtG('4@p4UbEs)m[MolUL\FE;PGEcZ7!EWU3#EW0o"ChdTpBP)$rIsuirK7nr5
+LPUbEM26tCLP^eBLkg\?L]3&.M#W29Knb;FP*1rjP*,a,"Hen2OcfX)r/:Z7N;AJ4Mu\e4Munor
+N;JV6N;ee:Nqn\7N;AM6NqJD2NrG(>OoCIBO8G"@P*;)org*JKs-<hQP*;)lOT(CAOopo1OcoU(
+!0I#=!0[>DrK?u?rfdDHrKI;IrK[JNR/N?SR$jA2RJrWaS=cLNVlQr(ZF.'I[']e>!j\u.rhfar
+ri7-BY-5+8ZF%*N\\#Pj_oKpDcI(+kf@o'<iSrt^kiqF3m/QJgn*]T2n*]Z5nF?)@p%J+Rq"ada
+rVhBJjSo>9\[8X?Z6?R<gW[F?YbdtCQ`da6_S:ktF)P]/971r,9N"]AK7\W+rdb#D$s$>,;c-AT
+PE:ieNK*pr!K2errt4qN]X=fCY-5%6Z*U[=XK8P+ri?a5WMcSfTV7mFR?s5'Ocb]cNfF!q!JuX2
+L\$=K;cHat='/U/>?kH??XR;OA7]@cBPM=!DJsN8F*)SLH$XjdIt3-'KnbD@N/`m[P*;/tR$sM8
+T:r!TV5L;mXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8Xd*^=le^rI-g>(N@i8EVTj5oFdkiq?tm-O--
+n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCK)J,~>
+JcC<$M#[,HrVc`nr;6Nj!;ZTg1\^V:p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`CENm9^ts';=$F>48h;@3s@`04?Ybgq)]9O3B8uV3]K,\6UXF67R]a87n6-DrCI/b
+8P)NG8c)'Y8H;<\8H;<\;#3rg:/Cg`s%`nq9iFqg;c6Llr_`_nqGR2hs&Aqs"B8;u<)iNjrDj,(
+<`N.#=',9"s&K(u!*/tss&K%t!*/qt!``3"r`0)%=BPQ*s&];'<rGu*;c6Ij;H$Oo;c?Xqr`0)#
+<*&uurDrqu!*B/"r`8kss&f8'rE0)$s&f,#!Er_+>5qeD=^#$7?=75QAS,RgBP2$oCi+'*B4>:X
+A,U$`BPM=!Ci4*-Df0K4EH6/FG^+LZH@($gIt3*%K7nr4L55_`re^Z57?!4dO-,ThQC!r*R$jA2
+S=Q7DTqeBYVPgDnXKAV-YctF=['mHS]"5Md]tV:u_oBg@b/qcJb08,UcHjkbdaQ[qf%AXSfcAf$
+gtgfChr*JQioK4_k3(pkl07L!lg4!*mI0N7rUg-`r:g3crqcZl"T85sr;?NlrVkRO6,IqW?!^lF
+?<pfeF_P;g=Ar*a85WDp@U;2d1G:@=.R$'Y0f1^X8P)EA77Tg,3'KPj4Zto.<`N.#<E)pq;H$Qo
+rVl]prVZZorVQTfr:^$^qYp<eq"ja[pu1oVnA:?/@U<)B?!^fA>[(G1>SC=H>$>$1=]nj.<``@'
+<``=$<E/rr"&_uo;>a5]:jZ,?<E<1'=^#$7?!^lG@:EbYAnPdlCM[m,EH6,BG'A4XI!pKpJqJc3
+Ll..NO-#NgQ'[l,S"61FU84W`WN*&%YHY=>[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f\5'7h;7)J
+ioB(\k3(sml0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFALAuc~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eoe5t/o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF@rZpHQ(IrKs.T+YpRg-1!1NAGrg`bQs.'(X!M,bZRN%`bQ^X;.QBmc%PEhDrMMHn>
+K7o5bY->+7Z*OA;&\#*R[^W`R['d<I[C*?I[^NUC[KO"FaN2O'`rF!i_o0O4`l#[0_SEn!^:UVR
+Y-.Z'p8e(l$*1/.X/rG)X/`2uWrT7"XT5I$X8T."XTGZ/YPk^*YQ(j+Z2V!+Z2Cm2ZaI<R]"@sS
+rk/NK]"#8X[']h=s0Vg4s0;[3YkkX(YQ1s+Z2h92Zh_!.[K!Q7['mC=Zob\(\%0,_]Y2%o^qde&
+_Sa=2a3)ZTfA#6DjlY[ejlPO_iS<)8da?LleCE.&g"P6;i8`q^lL"-7q>GmE[f6U(o'>T-lKmj9
+ruh:3leU*ga6N6hn*6RnS!](t>cF?e>\.<LXfSJ'WiW3!>7b7N?!U[O^V@Ls]Xt_`[^EN'rrW&d
+mJZ5JlMp)LkiVj**ou>@iSWAAf$VaeaiDE=_SNt!]Xt_b]!f#S[^NTOo<s*H<)lt"='8[0>[1QA
+?X[DRAS#LfBkqO%DK'T:FEVkQH@('hJ:W?,L5:\EN/is]PEhH$R@Bb=TV8-WVl6VrXfen6ZaI6O
+\\#Mg^V[n-`Q-'BbK\>ZdF-Opf@S^0gYL`Di8N_VjQ>Ufl07L!m-X60n*ol<o(2JFp%A@Y!;HHe
+s7u]kr;6Kkrr)KgJcCK)J,~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eoe5t/o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF=CPo\H%>dGon;^bj+7>SF`m=urcA!ZpiQ^]F)uJGrGr-aF)c8AEW0n\Ec5r;D/0&_
+'4tlnIt<0&KS>#2LPUbAL5(M?M>i88KnkG<L51P=rJ(Q2Q'@MqOoCLHOHG]hPQ$[MP)t]`NJrdR
+N;JP4N;8D2Mu\k:N;nk;N;\b9Nq&,/NqJD3Nr>%;OSOqCOHPimQ'R]#QMm*KP5paDOSFqBP*(ig
+Ockn,OT:RDOT:L@Oo1C<P6-u4PPULEQ'VB88!oX1R@9S4R@B_<StD^QW2d#)Yd(F:Z*:O=ZEL@/
+Vl-JmWN3)%Xfen5Z*^sK\[oGg_SsX?d*pRug>(TDj5oIfl0Ia(m/HAPmeuSbmdKZ8o(2MHp@n=V
+q>:*hJcFa05hiZTZEU[AZEi]IbJ1HgV4W@,Z+%Zd_0VSnF(T;_I!9d/;G`+#Jq&B&J:C<i:K:=k
+;,EI>OH5KaNf8pTMi!Pq-2,^![(!6BYctC;Z`pX7Xf\b.XK/D$VPBo[T:DC=Q^3l"PE1e(N<kE"
+Mi*CJLkgcWLji9%<E<.%=]np5>[:]D@:E_XAS5[jCM[j*E,fr@G'A1WH[U?nJV/Z2Ll%%KNfT<d
+Q'Rf*S"6.DTqeH^W2co#Y->4<[C3TU]=bkm_Sa@3a2lEHc-F\`daZh!f@em4h;7&IiT&tZk2tjk
+l0@U$mI'H3nF?)?oCMVIp&F^cp\jmeq>^<hqu6NmrUg)?s+^Q(~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eoe,n.o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF6psR::ARce;>F&R;>!cV;>sDj49.J34SLo;3r:u=4T7JH4$5Vd3rD)>3YXP43&ifV
+3CQA+7RKX67Rp$A84cGQ8cD<_84i\Lr(-lcrD<;cr_<GhrD!Gh;H$Ng;?0Yo;Z9Vo;ufkn<;9Jn
+<r>r#<``=%<rQ2#=92K(rDikss&K&!r_rr!<)ris!*&qts&K8(=BAR+r`B,#!*/kp##eK$<`N1#
+r)WhsqGd`!<``@&<EK0#q,[T!=nu2!=TDY)=TDY)>Q.h*>6%k+>6\A@@Us%^B)Z?FAnYmnAn:mL
+#@h=VB4u$pC]8/ZDJa90DfB]:FEMbOH2`.^I=H`tK7no3L51SAM26tEMMmCONK0']OckomQC!u,
+R[]h;StD[LUSO``Vl6SqXKAY0Z*L^C[C3QS]=Ybj^V@S$_oKmAbKTq01saOrdaQ[peCE+#f@em4
+gt^`BhVd>Oj5f=`k3(pkl0.BslKdg(n*ff9nac>Ep%J.Sq"ambrqcirrVc`pcMn*cH<ac]?!dM9
+/:hqX@Tur6;F3oO<a]6@3^Y\[/i>.C5<LSU1e:2.7n,p97QECe5<_7o4BDA[s&B"r!E2tnrqcTn
+rr2lnrq?<bqtp6fq>L'hq=sCPr:oRO%e7H#Eai<Z?<plC?!LT<r`fG/r`fG-r`T8'$s-G/='&F'
+=&rC%<E&in##\;q:f'q`o2'm7<)lt"='8[0>[1QA?X[DRAS#LfBkqO%DK'T:FEVkQH@('hJ:W?,
+L5:\EN/is]PEhH$R@Bb=TV8-WVl6VrXfen6ZaI6O\\#Mg^V[n-`Q-'BbK\>ZdF-Opf@S^0gYL`D
+i8N_VjQ>Ufl07L!m-X60n*ol<o(2JFp%A@Y!;HHes7u]kr;6Kkrr)KgJcCK)J,~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`aa.EJtej2U7n:OT_kA5T)G,IS,SrQRkgA"S"6(?S",q7R[9D.Q^F))Q'IPtQ'7Ao
+N/!%@KnbDAY->17['d9IZa[?O[C3KN\,Nc=ZaI-FZF'V>s2PtraN)<?a2Q!8_ns@4`l#^1`PB4&
+]XtALriH.#!NN3qWrK+"WqrdqX8o=#WWB0#ri?%"s/cC)X/i?"XoGO(YP,4#YPYR%Ym%G>[C*NT
+rjriV]=PP_[^NQLZEga@Za6p@Z*1A1YR[qDYd(I=ZE^[?ZE^^AZi761Zhh'-[JmN4[/RE3ZimeF
+\@T<O]edF=^qmn*`5Ta:b0%rSdad%,hr3PPhVHr@g=Fa$dF-Fke'uq!f%Jd3h;@2Qkj.[,p%s=?
+[f6U+p$1o1lg*j8s"sZElJ9sfa6`Bkh<1BNR#m2mOJ\\B>@h3JXfJG'WiW4(>?YHB?!UXN^q[Ut
+]t:ha[^EN's"F6<p?1W$kNV9ski_-kjlPXcio8kOg""Tuc-=AN`l#[0^V%4j]=>AZ['d<M[C,V7
+s&45C<`W:(=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7OO-,TiQ'[l-S=Z@H
+U84ZaWN*&&Yd(OA[^WfZ]Y;.s_SjF6aND]McHjndeC<($f\5*8h;7)JioB+]k3(smlKdg'mI'H3
+nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAL];l~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L``ckfDM!CmL%'cmK@b_NF9$CXFT$:XFSg1^F*)O'FU<,2F)l>AEcH)>rGWZmE,ff5
+DJEftBP(smCk%"hJqeo1KnbJ?Lkktc!/^]1!euJbre:?,s-*\NQ'7>mP5^UDO9q)7PED#jPE:fb
+rJ^9)s,?u;s,-l9p5T'1p5T'3qi1E3rf@)@plGH:s,d>FPQ$jGPRE\<P)t`cOH>TeP*,^)!g8\.
+rf@,CrK.5GOcb`erfI8FOcfU*p6,K@rfdAH!L8uMQi3<ORK&`bR[]k>TV.pNU8=fgXT#@-XfSS)
+X/i4urhodps/H%!*NZEHYd(L@[^WfZ]tqV-bg=kkg>:cGioT@el0@X6mJlVSn,D_cn*ol<oCV_L
+p\=OZqu$ElJcFa0.GMDDZ*UdD['SuMbJ(?eUn<7*Z+%ZK]m>l`D.[a&H['a/;c&4$JUi@OJH&CN
+:/k.i;,EI?OoCFGNf8pTMM[Gp./2-&[)T;QYd(F;ZEUO7XfS_/XK/D$VPKrZSXc1;Q^3o#OcYW`
+NK!jp"c/%lLkgcWM#UD"<*!%$=BSg3>[:ZC?t*SUAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1LP^nI
+NK93bPa.T&S"-(BTq\?[Vl?\tY->1;['mHS]=bkm_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8WeX
+jlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+gW)~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq.o9oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`^E9f9htL]s%r5_k"tqPpe^uPr&k!@n3$P/r]9m;q`Om?!':$>r](iS2`WiY3'9Vu
+6UXC47n?0C8P2TH8P2QH9)_E\8H)3\;#aDk:]O;i:B"#k:/=V\rD!>erDWVls&8kor_rMin5]Ki
+s&K&!r`B,#p/V,lr)Nbt!EE+r<<-(u=9Vc,<`N.#rD`Vn!`i<%r`')%<E3!ur`9&!!`W0#r`B"u
+pfIDrr`B,%!a/]1r`fD+r`]G-=^(]-"^>5;?t*XFA.`<\@:E_U@:*GO@q9+^B4u!nrbM^SDJsE2
+rbrNkF*)VNH[L9mJ:E*$K7nr5L51T`M?&S6N'`MaO-#KePE_>uQ^O;3S=Q7DTV8-VV5C/hWN3,&
+Y-5(8['[9N\[oAb]Y2(q^r!t+a2lEHbg"GZd*gCmeCE+#fDaD+g"Y?>h;8.h,3%YDjlYahkiq?s
+lg*p)mI0N6o()DDp%A%Pp\4IXqYL-frr)iqb5XW@H!Xob?<plD?%I-4@9Zf4;+!lO=("O&4$YVW
+0/bRN5<LSU1e:2.7n,p97QECd5<V1n4'#?]<`E'u<;fbgs8N#ps7cNerV$0WqW@SFpBU6,PB12=
+BO:XCr*0Y9>[(H<>$>$2=]ea+rDsS5=&r@$<Dual:f:.f:Jak`:\.E_;gMDD<``C+>$G6;?=.)L
+@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG8=MN!OUOckroQ^F84StD^NUo(&hWiWA-Z*UgG\%0,`
+^;%M$`5Td<b0/#ScdC1jeCN7(g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0i
+qY^6ir;HTdrdk*)s*t~>
+JcC<$M?!5IrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`FO7KKrpo>U%k;OT@fb5ReN<ORf8cXS=?#ISGSd/R%'P5S=?":S"#q:R$X,+Q^=#)
+Q^*o&Q'@JtO,SjIJqSl6N3BCeYICpI['I'GrjDd5(U^`YZa$jB[^*0C`lc9Ba2Z->`Pod6`W!aT
+`;[XS`W!^Y_8!U`XK/?"WqiXkWqrdoWWB0#r2U((Xfee,X/rH#Y55='Yck8/Xobf2Yl:j)Yl:m?
+Za@-L\[oAa]"#2V['R'CZ*:J+YPk[,Z*L\7ZNme@ZEpmCZEsD7rNu^6Za9Y<s0Ma4-+::m\@T>c
+]tM1r^qmn,`Q60CbKS5VcI(.lf\>39g"4a'e'ZVCdJqN*dF-Oof%/O.gtprJjlu.$o(N$5s0hq3
+p$2#6m-Es9s"sWEl.sjea6N6ip#_mhcFf+(Oe\S@S7Z06XK8D'WiW1'>ZtQD?<p`9^VIRu]t:hb
+\$i])rsS\hs6/\/kiqBuki_s-+R%tKio8hLf@86pbf\&J`l#X/^V.7k]XYJ[[C*?L[C,V7s&45C
+<E<.&=]ns6>[CcF@:E_XAnPdlCM[m,E,fr@G'A4XI!pKpJqJc3Ll%%LO-#NgQ'[l,S"6.EU84W`
+W2cr$YHY==[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?
+oCW%T!quB_rqQNhs8)Zjrqu`no_sFAL];l~>
+JcC<$M?!5IrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`E?klEJB!tL%p>lK@keMFT6F[FT-=_FE;O#FT-CeF*2PFF`_a)F$4VdEcH&=EH,r;
+EH#o:EH#i8ChdWrAS,UiCk71hKS>)8L4tA:LPUbALPUeAL4k;8LkUJ6PEqAsP`q5mrK.YSOHGZg
+OcbfjOcb`dNf8mSrJLK1rf$f8rJUc:NrG%<N;\b8N;SY8Nr4n7Nr=t4NrP1?OSFn:OT1ICP5UUK
+PEM)kOHBI&s,d8Cq2bT;r/gr@r0$r>rK@#@rfRDJPa%AqrfdMMQC!s9QjT7MS"#q<T:r!SUAgo"
+V5L8lXK8J%WMZPhVP^8gVl0Nm-`O,HXKAY0Z*UjH\\#Si^r4IDe(EF2iT&t\kj%I!m-O-.mdBQ3
+mf)YbnF?)@oCV_Lp\F[_r;HVGs5Eu:g#ofM[C!?L[-HDi]sY&?T7WE8[`$%pH'>+oBQ7j7GBS(,
+;2'XRJ:iB&Inrj8<)Z[l;,<@<rf@;DN/W[QM3.`hpX6aXfWVK_ZEUU>Yck.1Xfnn/WiDtmUS4<N
+S!f\2QBdYsOH5B\Mi<ROM2M7fo83KGH;mmF<`iL->?kE>?XR;O@qB7bBPM=!DJsK6F*)SLH$Xjd
+It3-'KnbD?MiEdZP*;/tR$sM8StVmSV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8Xd*^=le^rI-
+g>(N@i8EVTj5oFdkiq?tm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCN*J,~>
+JcC<$M?!5IrVc`nr;6Njs7uZh2>?h<p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`C*6h92A:F;:n_D48h;?47YN33s7T+3]]A$3rD);4SV#<3?0t92`NiY4@M\*77Kd<
+84Q6C91_]I84cEF8OuGP8-_XU:f1%c;,R9gs%iYi#>\)j:/4S\:Amri9iP'i;ZB\q;Z'Jd<:Nug
+<rQ+s<WZ9%<rQ,!<;ont<;0Dl<;oqu<W,u$=BAL%r`/ttpf7;os&B&"r`'#!<E8uu"'&B%<W6%l
+=8Z2#=8uA&=o)>%>6nD8=^#'8?=.(=?4'qD?=.&J@q/tV?iF=C?=.&J@q9._AnYjmC2@^(DK#Jm
+&TMc/F*N"XI"$X!Jq8N,L51Q`M#N8MMi*FPNK0']OcklkPa.Q%R[]h<StD[MUSXjeV^&1@X0&P.
+Z*LaE[^`lZ]=bkk^V@V%_o0U9aihrRcd:(geCFNK&_G[ggY:N>hV[8LioB([jlYb*kSrdOlKdg'
+n*ol<o(2MGp%A(Rq"X^^qtp<irr0k9/\cOc?!^lE?XI,lG%tGi=B&-a85WDq@p(iZ93Nu,1d=/d
+4Z5,f8Ol9?77B]F3<),G5!:ti<E<-!<;]\Os7cNgrVQN\qrR\Pp]g<.PB(,7G5PYG>RFbA>[:Q<
+>[(E8=T)D&<XVo/=BJX*<)cjs;,dEjs%iVjo25NdH;mmF<`iL->?kE>?XR;O@qB7bBPM=!DJsK6
+F*)SLH$XjdIt3-'KnbD?MiEdZP*;/tR$sM8StVmSV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8X
+d*^=le^rI-g>(N@i8EVTj5oFdkiq?tm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCN*
+J,~>
+JcC<$M?!5IrVc`nrVQTj!;ZTg#5@ibp%@tKrphZ2nF,f4m-O''l0.<mjl>C\i8<DIgtLH5f@AC!
+dEg+_bK@oH`FjIQKrgi=U&1MOT@fb3Re`HORf8fVS,f&XSG\lSRM;0YS"#_3R$sD/QC!r'Q^*o%
+Q'IR4PS91=KnG#0KnYJfY-51>Za7*M\$u@D&$rXL[Bm3FZa-jB`Q-!;a8O!caMl-:`50C0`l#^4
+rkelT_S3aqrMoXlr2Tdtr2Katri5jr!3H1#!NiO(XT5I#Xo#:"Y6(l/Xo5F&Y6;#1Y->/0Y6D/8
+ZEppGrjETP[C3HKZE^X=YHP+3Xfee.Y-5%3YHRo/riZC.ZEjJ7qQp+,rjDa4rj;a8rO*!@\@B)\
+]=bhkrkT>e`5]j?bg"GZcd'h_d*gFqf\"d(e,.N-d*L(cdaQ[qf%8U0gtq#NkNhU+o(mq;[f6R+
+lgO<0lg"KL.K&f&hUSUFlLXc?jIjrH]o88@@@s-]ARM^CXK&D&XJoB.>@CoG?!:A0^B_Hb]XkY^
+[^D.q/GnW1l07Bqkj%KtkN;$olK.'ciSE2;e'QFabK.]C_ns7)]t:tk\@K,W[C#q@o<s-H;c?[s
+<``C+>$G6;?XI5N@q9.`BPD6tD/O<4EccGJG^=^bIXm!%KSG8=Mi<[WOckuqR$jG6StMdPUo()j
+X0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DD
+o_%nWp&Ojcq#C0iqY^6ir;QZerdk*)s*t~>
+JcC<$M?!5IrVc`nrVQTj!;ZTg#5@ibp%@tKrphZ2nF,f4m-O''l0.<mjl>C\i8<DIgtLH5f@AC!
+dEg+_bK@oH`E[+rEJ8stL&6PlK@kbUEqXVSEr^=ZF8p=^F8U.ZFoHL]F8p=nE,ou?EcH&<EH#o:
+EGof8DuO\eChmZqB4PXgCk@1hKS>/8L]3,HLk^_@LPCS=L4tA9KSGYSPEM/oP*1rkrK.8EOcbii
+OoCLIOcYZaNJmdns,6]3rf-i7s,I&;!0-c4r/C]:o8Wd1s,[2?"-8J&O8P+9O8b4BOckn+P66u1
+Oc]L%mu[R3s-!)<s-!8CrK75GPa202"-o1<Qi3<ORK/iVSHGIVUSRmcs.][lV5L9kWX#N$Vkg/d
+VPjEjs/5mq+fVKBXK8V0Za7'J\\#Mf_TC*Pf@o'=iT'"^kj%L#mI'HBn.G*Un*]Z7nac8Bo_/%S
+qYU3hJcFX-2:_<3['d<M[']/Rc+^ThVOiC*Yd_Qe[X+FAU1eL^:Npu)<)J:#JUrH(J:C?j:/t7k
+;,C*gOog`+O8b(=Mi*Vr"S^?YWnmZY.C6:aZEUO6Y->+4XK&7sUS=HRSXPt6QBmc!P)t`bNJrdR
+MM[4ILPUcXM18E%;cQk!='/U/>?kH@?X[DRA7]CeBkqL$DK'T9FEMePH@('hJ:W?+L51VDN/is]
+P*M?#R@B_<TV8-VVPpMqXfen6ZaI6O\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL]Ci8N\UjQ>Uf
+l07L!m-X60n*ol<o(2JFp%A@Y!;HHes7u]kr;6Kkrr)KgJcCN*J,~>
+JcC<$M?!5IrVc`nrVQTj!;ZTg#5@ibp%@tKrphT0nF,f4m-O''l0.<mjl>C\i8<DIgtLH5f@AC!
+dEg+_bK@oH`C39g9MSLK;:n\F3r;#<4T%;44T.A:3WM2;48_5:49%;`2`<WU3&s#h6psL87n?3D
+8kV`H8k;KE8kDTF8Ou?B:\IWb:BaHf:JX_\r_NPh##@uh9iFqfpJ^`apf7>pmoB?ds&/qt<W5ts
+<W?,!<Vof*<E<+#='&F&=&r=#<:<ic<WuK&<)lt"pJq/mr`95)='&O.qH3]!"'A]0>5h_0>$G6;
+?=3Y>!+5\1$t*LQ@q&hP?!CQ@?t0+Gs(24C'kh;rC27X&DJjB3EH,r9EHc\SH[UJEJd@!_L51P?
+M2I5jN;neLN/`jZOHG]jQ'R`&R@B_;T:r$Vr21d<WN*##YHP4:['d?O\\#Je^;.M!_8=+0a2lBG
+c-FY_daQ_Ff)F85f\,$7h;-rGi8WeXjlPXfkir*3)!gPTmdKW7o(2MGp%A%Qp\Oa`qu$BjrVjY5
+"MJr=?!dM;-!ji1GALbo=&`'a85E;r?rf<W:1Q(<1bCmS4>o#e8Ol9?77B]F2ul)?4U=,3<E<.!
+<)lor;pbRCrq66Xr9!k^o#6f6@oIVX?N+71>lS(8>[:W?>?Y35=oMP'<rZ;%<s_o/<`E!t<)HUm
+r_Wen:esnao21!8;c?[s<``C+>$G6;?XI5N@q9.`BPD6tD/O<4EccGJG^=^bIXm!%KSG8=Mi<[W
+OckuqR$jG6StMdPUo()jX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH>hr*JQj5f@b
+kNV6rlg4$,n*fc9o()DDo_%nWp&Ojcq#C0iqY^6ir;QZerdk*)s*t~>
+JcC<$M?!5Irr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l2V?N.dgorh97_m[r1(pmV,MqO7GRqj^9JR[]e8R[BP4R$a;1R[K\5R$X2+Q'[`#
+Q'@PuPE_;qP*:ucLOt)/KSGDfYHbC=Z*h'I[C3HL[C!3GZaI3I[C!rl`5Td:a2\,!!6"lU"iS6n
+_SaCl_Zduq^q[OrrMoRjri,stq5OLsXK;9!riZ(!poaY!!3H.$ri?R2XKJb0Xf\b/YHY::Zhq-0
+ZMq'/YHI`(qQ9k'Z2Cj(ZM(U)[/.31[f<fP\@8rW\@K2_]=bhl_84",`lQ<HcHt#:d3I)he^rC'
+eC;srda?Ihd*L(cdF-Ile^i=(g"kNDjQGjrnb@\8[JpEtnF,c2lMgf?rU]=3f;cjTp%\%;Yg\rE
+NFS2]TV.fd@'?]6Wi`>'WEWV4@:*>H>?SbV^V7Co]"#/V[>t8?qs".Fl0%?qlKdZsk3_R%jl>=Z
+gtC6+d*KqYaN)9:_SO%$]=kke\[]&T['mBMo!\QsF];@A='/U.>?kH??XR>PA7]@dBPM=!DJsN8
+FEMbNH$XjdIt3-'L51VCN/`m[P*D5uR$sP:T:r!TVPgDnXKJe4Za@0M\[oGf^VRe*`Q-'BbKS8X
+dF-Oof%8R.gYCWBi8N\UjQ5OekiqBum-O-.n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCQ+
+J,~>
+JcC<$M?!5Irr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l21rEH-M\re:9'mXs2Erc/![piQ7OqK*$bFEM\IF*)MEErL,AEcc;AEH6#;EGof8
+DfBW4DfBW5E,B?(AS#CaBPW-MK7el3L5:P>Lk^_BLkUV=LPLV>LQn!cP*D/prf[AGOSt=ANrkE*
+PPpUNP*(fcN/`dTNK&nqMu/J3Mtr>2MuJ\6NW+t1NW"n7O8k=@Nrb9#rf6o;s,d;Erfd>EqiC<0
+s,m>CnWEd5qNCoDrfn:cQ'@MuQC!o'Q^F20S"#t?T:hpRV5C-fV#mQnW;`drVurrrVl0Nks/5mq
+s/H$u*ilBDYHbF@[^`o[]Yhn;db!4.hVdGTjlbmpmI'K5rpg$W%drfSnF?)@o_%tRq>:*hJcFU,
+/CX"/['mBN[C#AXcbHokW1\d/Ydq`i[=t/mOD.L-:O%,+<DeC$JUiB(J:RVp&62\.;,C)QP*(id
+O,T!VMi*Vr0)<u1XOj_]YHtO>Za$^9ZEg^;X/`+qUnOHQSXPt6Q^*buP)t`bN/NUNM2I1IreU-%
+s&4&><E<1'=]ns6?!^lG@U`kZAnYjmCM[m,EH6/DG'A4XI!pKpJqJf5M2I7OO-#NhQ'[l,S=Z@H
+U84ZaWN*&&Yd(OA[^WfY]Y;.s_SjF6aND]McHjndeC<($f\5*8h;@/LioB+]k3(smlKdg'mI0N5
+nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAM#Vu~>
+JcC<$M?!5Irr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l1A<8PDiTk#'f.rAsj<r]L'>ofW48oK!"73rM/<4Sh,S3]T/X3&rrY3CH5)84Q-?
+8P)NG84rkPs%35_r^lf[!)NSj!)NSg!DZGh:B+,h:&n#e<;BJc<;fhr<WZ9%<q',g<;oku<)riq
+oMl&o<E<1%<rH#!<)rlrnl>Whr`/u!q,RDns&K)"s&]2%rE9/&"'J`.=o;A&=^(`-"'o5?@JsX8
+@/XCI?t!JQ@UWVN?t!MS@q9+]AnPaiBPD2[C'AEjDf9T7rbrKlGC"R^IXcp#K7no4LkpnFN/[aq
+req&@Nf]?cPa;<8%%*KQSY2^RW2co!WN,rs,-%`IYd1UB[^N]V]=bhk^VI\&_SjI7aND]NcHjnd
+e'ut#rR`XRg=tH>hVd>Oj5f=ak3(sll0@U#m-a?2nF?&?oCV_Lp\4LZqYU3hrVlf1s"1[#J8&@s
+?X@&DLO!cI?<C0)6V($V@pi;"6o77c-o<M>4ZbPZ8P)EA7n,p:r\t<K5!;%j4B>K_<)ZdrrDU<-
+pAXjcmJIjn`fkIR;fZ/K?!^`?>[:ZA>[:W>>$5$3=nu/,<E<."<)lmp;c?Tn;#jDk;"@K`;fu&>
+<``C+=^,-:?=.)L@Us%^BP;-rCi402EccGIGBnL^I=Hd!K8,/<MN!OUOHPinQ^F53StD^NUo(&h
+WiWA-Z*UgG\%0)_^;%M$`5Td<b0/#ScdC1jeCN7(g=tE=hr*JQj5f=akNM0qlg4!*n*fc9rpg*]
+o`"Lbp@n=\q#C0iqY^6ir;HTdrdk**s*t~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bKJ#K`PcM@Mi!r%U&L_VT)bP]T@oh1Rf/`ORf8fRS,f&XRL,IPR?s;-Q'du,rL!bTQ^!j9
+Q2d$fQ'7GtQ'7JrOc>3OJ:iK+Mls=k['[6J\@&]LZMh*0[JmK5_o_hr"i\O%`Q6."`WX2u_o'@i
+_uIaU_Zdll^V6_Jl_sudX/rE!WrfE+Y5,3rXob`.X8]4!X8]4#XTP`.XfVK'#Hk;8Z*L^AZMq-/
+YQ(d&Xo>EuY5,:.Z*L^BZEggCZEjJ9s0Va4r3lO4s0s>b]">Vf]t_D"`5]pCcdC1ie^W+!eC<%!
+f%AX,f@JL'eC;mnrQtMj&(8tYf@\g3hVdARjll.+rdk*YrrM`ZrpKmTli$i=o]tMgXN0W!p[I4G
+e=!%jQBYjPTq5LsY-"b)Y,eS&>?tKC?X6rA=i%ng^V.:l\[Ju,s"F9?s6Ak5kih9skih3umH`lo
+iS`GCeC)^gbfRrG`5BF,^V.7m]XbS_['d9L[^G\7s&45C<E<.%=]np5>[CcE@:E_XAS5[jCM[m+
+E,fr@G'A4XI!pKpJqJc3Ll%%KO-#NgQ'Rf+S"6.EU84W`W2cr$YHY==[^WfY]Y2(q_Sa@4aN;WL
+cHjkbe'ut#f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFA
+M#Vu~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bKJ#K`Pc,!F*3!2L&QbsK)gT%K@tkSErU4VFSBkQFT6CfFEM\IEcQ/=EVsh[F)l8=EW0qW
+D@1?#DfBZ6E,TW/C&MTGAo!!OK`6]0Ko(V@KSKJ]!JZF0L&mI'rKI\RP*D/nPa%;nP)th*OSt=A
+PQ$[GO,f8"N<"q9Mu/J'MuSb6NW5%;NW+n6NW+t9O8k7=Nrk?$NW+t9NrY:>P5gXHOH5H_rf?T2
+!g/S+plYT<s,d>DOnb(>PQ$gEQ2d'`Q'[f&Q^=)-R[]e;T:r'XV5L8kW2KQls/H!rs/H!qrh_$?
+W2Q\pWiE,#XKA\2ZF%$I[^Wibaj/;af\>9AjQ5Ofl0Ia)nF?MK&Fo5WmdK]:o(;SIp@nC\rVhBJ
+hZ#.Tm('O4[C*HMn))O1[]l^'KU9!U_SNU3T65KpE,JKtGB?PVK7e`*Jq8H&r_Er&<)QRi;3R0*
+OcGK^reup<1&9;4\'21_Z*UaAZa$a;[Bd$=X/W"nUn=<OS=5k5Q^!_tOcYW`N/NUNMM[4ILl$rY
+M>pM#<)lt"='8[0>[1TB?X[DRAS#LfBkqO&DK'T:FEVkRH@1-jJ:`E-L5:\EN/s'`PEhH$R[]k>
+Tq\?ZVl6VsXfnt7ZaR?R]"G_k^r"".`lQ9Fbg+P]dF6Urf@\g2gtgiFi8WeWjlYail07O#m-X60
+n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+p]*~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq.r:oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bKJ#K`Pb2;8PDnU;>sDc;#jMk;;"eB3rV5?4Sh/44T7AA481f93s.T,3]d7%"$AY,4T.>G
+3]oJa3B/tr3!)*/7fGp`7nH<F8OuEEr^cuZ!DlYb:]aEh:]!oe:]=,f:&e2m;ZKep;ta2g<Voh_
+<Vobq;ZKeq<<6-%qc3Yqr`9&!!*&nsrD`Pl!*9"t!E<(t<WQ3$r)Nbrs&K%t!*0#!!*B,$!*T/#
+s&o8%&6W1@>?Y38?!^oI@U`bS?srtB"(G\JA,B^8A,Ts<AcHECBE2cGC'ABiDJsK5rbiQkFa8=]
+I=Hg"K7nu7LkgeDMi<XVNfX-uBTA7?Pa.Q#Q^=).S"61GV5^MsXK/D%WMur#YHbIC\%&rY]">Yh
+^V@V$_o0R8aihrQbg+P^e'uq"g"G*6gt^`AhVd>Oj5f:_k2tjjl0@U$m-X61nFH2Bo_%nOp@n@W
+q>'pbrVaA."LE-">[RD82Mc^!AR8M>;F<uP>%(f=4@V+b0fLm@5<V+`2+L5.7n?';7Q3:d4?bnk
+4$6PE<)caq<DugqTE"N^$M;B&F(8Ee?!CW@r`oJ0"^GA>>[(G2=o;>1<EN:%=&i4!<E)go;c<Tl
+s%i_n;"@K`;gMDC<`W:)=^#'8?=.&J@Uit\B4u!pCi4-0EH?5FGBnL^I=Hd!K8#&9M2R=ROHPfm
+QC+,1SXuOLUnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcd:(geCN7(g=k?<hVd>Oj5]7`kNM0p
+lg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk**s*t~>
+JcC<$MZ<>JrVc`nr;6Njs7uZh2>?h<p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`F3\5KTM`&T^eZ%T(SQPS+iBNS,AcZR[]\6Rf/ZRQkPmVR$O,-QBmc"Q^*i&Q'ISt
+Pa232%$cg0KReT(L5;t=ZaB_>'t:TW[C!<I['?sF`P]^8_oK^;`l?'u`YHG3a2Ps8_SjC1_o0R4
+`l,a4^qd[rlDXibX/l/us/Z1%!3Z."riZ4%ri?(#"08H%X8T+"Xo>C'XfSW'X8]4*Y-5(7Z*:G2
+Y5>@$X9,N*Xo#:$YPPL'Ylh;<Za0S:!4)U1!OT96[f<c6[f*]6\IH-^]Y2%o^r"(4bg=kjr7V&#
+qUc#'e^W'sdaA'@'@G7UdaQ^sf@ej3gtpuIio]S!qLS[UrrV`ZnG_kVm/?r>p$:YkXiTl&p@71F
+e=*LtR$;'RTUoFtYHFt,XfJM&>?kB@?X-lA>/A"g^:h1k]!o/.rrr<"qX*P3robTml0.F%m-<]l
+iS</>e^2ahbfRoF`59=+^:h.l]XbS_['d:?[IUbU;H$Ln<`W:(=^#$7?!^lG@Uiq[AnYmnCMds.
+EH6/DGBeF\I=?]tK7nu7M2R=QO-,TjQC+)0S=ZCIUSOfdWiN8)Yd1UC[^`l[]Y;.s_SjF6aND]N
+cHsteeCE1&g"P3:hV[8Mj5]4_k32'olKdg(mdKW6nac8Bo^qhLs7QHerV-BgrqcTjrVZZno_sFA
+M#Vu~>
+JcC<$MZ<>JrVc`nr;6Njs7uZh2>?h<p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`E-G_Ed*!2K^j]BK)'EeF8L(PF8U+^F*)GFr,hjW&TMc0EcH);DfK`8EH#l8DJsLl
+D_>d=AS#C_BkW*QKSG58LP^h@M26tCLkUS=PEM/pP*M5sPEV5oP*(ihPECrhOSt:LP*;#lP)tie
+NfB!VrJUT4oo&j-rep`6rJ^f;rJgf8s,@)=NK*pt!KE-=NrY4<NVeb5O8b7>OoCI?O8P+=OnOn2
+OT:LAOoLUEPPgRDPP^UCPn01IQBml)R@0M5S=cILVlBZqs/ZI*W2Q\pW2HQkWB[;ZVl-DiVl6Pn
+WN)u!XK8S.Yd1RAZa@-N^r=LBdad(-iSrq[kNM3tnF?/Ep@\%HmdBQ6o(2JFp@nCZrVhBJh>[N%
+df-`S[3P(re&Ai%WM5*6Zb+#h["G&oL1bIC:jI8-:/QXsJq/H(It7Mos&BM,;,C,RP*(idNfB$W
+N0!uhqU<1%]sP#KZa-mCZ*:I@ZELC1WMQGeT:haER@'>-Q'7AnOH5B[Mi3FLre^W1nqhio;c?Xr
+<``C+>$G6;?=.)L@q9._BPD3sD/O<4EccGJG^=^bIXm!%KSG8=Mi<[WOckuqR$jG6StMdPUo1/k
+X0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5f@bkiq?slg4$,n*fc9o()DE
+o_%nWp&Ojcp]1-hqYg<ir;QZerdk**s*t~>
+JcC<$MZ<>JrVc`nr;6Njs7uZh2#$_;p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`C!*e8PJhSpJK=7pcAC9r]L!<p,i@:48(]93BI.$r]:$?s#g6As#U-@'KA*22`N`W
+3(-5-84Q6C8kMWF8P/nP"%c*^;>a5j;>X/i:]=/l:Jajc:B+)m:/=Y\:]4#a;u'Dl<<-"n<W?+t
+<<-(u<W?+o<W#hq;u]hr<W?,!<<H9%<)ifrs&Ahps&Aeor`8kqpf@Dp#?4](<E)su<rQ1n=92Q.
+rE0)&rE9G1?!UfG@U`dF@fBd;@UimH@K0d;@q,FIs().@s(;:Es(VLJ!c)Ugrb`itDJa91Fa&1[
+I=Qp%Knb>;LPUbCN/`p^P*(idN/is^rfdhWQ^F/.S"-%@TqeNcri?+#ri&PkY->7>[^WcW]">Vh
+^VI\&_Sa=3aNMcNc-FY]dF6Xrf@em3gYL]Bi8EVTjQ,FbkND'nlKdg)n*ol<oCMVIp%S4Uq=sd]
+qu-Klrk&16Y&@u[?X<Y;2d_>fEFrT]<E)@W;d*O9<'3]-4>8]N/j;B[0f;Np8Ol6=77K3q3'BJh
+4Zbc,<`N'r<E3!t;j%(cp;iJ=A8GOX>lJ%/>QeD?>[:V6>8^RG=]nj.<`iI)=&r:$;cHas<)HRm
+;,L.frD<&^Io93D<*!%$=BSg3>[:ZC?t*VVAS,UiC27[(E,fo?Fa&(VH[U?nJV/W1LP^qJNfT<c
+Q'Rf*S"-(CTqeE]W2co#Y->4<[C3TU]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&tZk2tml
+l0@U$mI'H3nF?)?oCV\Jp&F^cp\jjeq>U6hqu-HlrUg)?s+p]*~>
+JcC<$MZ<>Jrr)ior;6Njs7uWg!Vc<eoe?%0o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`F<n?K:/;.T_>#&ScG2CRf8fTS-5:NS!oiGR0o:JR?a/,Q'dr-QN!6VQ'@W#Pa%N"
+rKI8Grf\1[MM6\5K7er<ZEq'M[^<EM[C*?G['R-Yrl4uW'Zn>6`Pfd9`Q#j:`l>s7_Ss@._nuDk
+#K+Kt_Sj5U62mhOWW0$sWr9!qXSo7&Y-"i#X8f1%X/rG*r2^+'XK8J&WiQ-#rN6.&riZ.#riH+$
+!j8Z.ric%"!O8s/Zi.92ZN.E4[f<c7[K*f9\Gj&=\dc9a]Y;+q^r"+6cd^S%rn[e6gtC<2rn./%
+$J<t\e'laoda?LkrmUnss4@;($JXCoiSrkXl1"HFJcE:\#P[ZTnaQ#9mf!/-p[7+qYK?/*p[R:F
+eXEV$S<IEUTV#IuYcb(.Y,eS%r`ftB?X6uC>/A"h^:h1k\[Ju,s"F9Lna>Z-lKRNul0.O(mcrlm
+i8!&=e^2^gbK.`C`507*^:_+l]XbS_[C*BK[^>V5GZ%I=<)lt"=BSd2>[1TB?t!MSAS,RgC27X'
+DfKf>FEVkRH@1-jJ:`E.LP^nINK90aPa.T&R[ftATq\?[Vl?\tY->1;['mHS]=bkm_8=.0a2lEH
+bg+P^daZdtf@em4gtglGiSrnYjlYail0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@
+s+p]*~>
+JcC<$MZ<>Jrr)ior;6Njs7uWg!Vc<eoe?%0o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`E6VcEI<?8K_C&CK(a6^FS9eSF9?T+FE@D&$?C30E,ou;EH-&=rc/6_DfK`7DfKaq
+DZ"E$DJX$"ARoCbBkrBVLk^_?LPL_CLPCV?LQn'gP`q;sPE_8oPEV,lOT(CJOcYWeO-#KcrfRMK
+P*(igN^5u,N:i,/MZ/P5N;/D2Mu\k9N;\_:NfX1"rJgi;!f`5#ooK*6!frG)rK$o=!0R8D"-J\,
+O84n0OoCOCP5pdDPQ-jIQ2[$HPlR-KQP,[RR[T_:T;&-\X0&S.Xf\V%W;NXoWrK%!Vl9Nk32igU
+WiE,#XKAY/Z*LaDZa@-N^;J"7cd^V&hr*JQj6#UnnauPMq"OIOmdBQ5o(2MHpA"I[rVhBJh>[Z(
+\$i]R[f3Z`mblR6\[/<1Kpf<[_8!=/UND6)EbnQtGBQ\YK7ni,Jq8H%:Jahe<E&lo"Hnt2OH0="
+!K2nts!d]j^>uN*Z*LaBZEpg?Z*q!CXfA=sV50cWSXZ%7Q^3o#P*1ofNK&jSreg]3s+p6&GZ%I=
+<)lt"=BSd2>[1TB?t!MSAS,RgC27X'DfKf>FEVkRH@1-jJ:`E.LP^nINK90aPa.T&R[ftATq\?[
+Vl?\tY->1;['mHS]=bkm_8=.0a2lEHbg+P^daZdtf@em4gtglGiSrnYjlYail0@U$m-a?2nF?MK
+!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s+p]*~>
+JcC<$MZ<>Jrr)ior;6Njs7uWg!Vc<eoe?%0o()>?n*f]3m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`C*-e7nutV;#=,7;"csL48qA<481l;48:i:3W2#<48h2?48qA@3rD)>3<hE"2`WlW
+4oRqV8P2QH8P)NGrC?obr_`\l!)`Pg!)NSjrD*Dfr_EGg!DZGi:'+-U62X[W<:j/k<`Susr`/u"
+r`/qus&T8&<E8uss&8qss&K(urDiku!*/bmrDihrq,RGq"]SK&<`N/n<rZ1s<r?%n=T;P(=p8&2
+='&L,rE9G2?!guKAS,NQ@fg+J@/aU8A,Tm8@j,AmA7T7`AnPdjBk_?uCi+'-E,]]4DfKlCH$b!j
+K8##4re1N2Ll.1RP5^\XP)t]aOH>ZiQBml*R[]k>T:hsTVQ$VtYHG"/WiWD0['d?O\[oAb]Y;.s
+_8F42`Q63Fbg+P]dF$CleCE.&g=tE>hr*MSjQ5OdkNM-olKdg)n*oi;oCV\Jp\4IYq"agarVc`'
+rs#QB>[C`B?iF@fLjX5V@9Zc26qL<^?sQ\n8M`C\2)HpM4?P>T8P2QE7Rfg82`Nc[5<V.k4B,?]
+;c6Ror_nsZ#kl9$EFXT#?=!M9*aE#W>[:W>>$G-3=]nj.<`iI*<`N(!<)lpt<)HRmr_W\p:]=2]
+;0Yu;;cHat<`iL->?kE>?XR;O@qB7bBPM=!DJsN8FED\MH$XjdIt3-'L51VCN/`m[P*D5uR$sP:
+T:r!TVPgDnXKJe4Za@0M\\#Mg^VRe*`Q-'BbKS8XdF-Oof%8U/gYCWBi8N\UjQ5OekiqBum-O0/
+n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcCQ+J,~>
+JcC<$MZ<>Jrr)ior;6Njs7uZhs7ZNerq/&=oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l2G4LPD^pTV1nKcCP$(qjIMQm@+$Dr1!bUrg<hTR@4&@s-O(YQC*u+QC*r)rfn@c
+Q'7DrPa.GtP*M;rOcG?RK7JW.K8HqC\Gio9ZQZfb['Rck`Pf^6_o'L6`Pf[4`l5s;a2Z->`l#d5
+_Sa71r5/QP_u2k&VPpHaW<0*#X88grX8K!sX8T."X8]+"X/brq!3H.""0AN%WrB(!WWfH)XKAV+
+q5jb#X/i?#XTu&4Xfek2Yd"&/rNQ=,"1#;?Zi%31Z37MA['[7>[K*f8\,j1QrO`fW^VIY$_T'dH
+e_B$Bj5T"Rg=Y$Vf`'P.f\+p/e^`1Kdh^B\e'upte^`=*g"Y<=i8WhZkN_I,qgndXrs/;co(2A>
+n*^/S1AC;#fs&Tdp\==>Xk&uBNgl2@TV.l\@pQ7=XKJV(X'/b5@UEDI>["tZ^V@Lp]XbM\NW1@%
+s7>XBmHWs$lg!a'naGf(iS`JEg!e?qc-",J`P]R.^qICo]tF?S"gk\F['m@4[=(nM;cHat<``F,
+>$P<<?XI5N@qB4aBPD6uD/O<4F*)SLH$XjdIt3-'KnbD?Mi<^YP*;/sR$sM8StMgRV5L8lXKA\1
+ZEq!K\[oGe^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTjQ5OekiqBum-O--n*fc9o()DErq-?d
+p\4[^s7u]kr;6KkrVcBfJcCT,J,~>
+JcC<$MZ<>Jrr)ior;6Njs7uZhs7ZNerq/&=oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l2(kDK(5XKS8rLc@Y\/"`nd,F*)NsF8U.XF8p@[EX6Z(EH#r;Ec?'uE#<M4DJjB2
+E,KT3E,]`4D/!WoAS,RdC5%EALC&cjLPgnDLR+3irfdAF#*Y:8P*(okrK7MMP*;&kP*(igOH]U)
+!K`HB62lfBN:i,/MZ/P2Mu\k1N;nh8N;eh3NrG">NfT8!NrP(@NfT6_plGB8rfISOOcb`dOH5Ha
+Ocbb&OoLUEOTL].OSt=DPEM+.PPgXOQ'@MuPa%H!Q^Ic='UY;WS"#q?U8=llYd(F8XK/>!WN#ir
+"f\N$WMlfnW;ihRWiN5'Xfek3ZEgmH[^WfZ]u%e2c-k.qgtgiEiT04jo(MnUq"F=KmHj6/nalGJ
+p\=R\rIP"(rrpWY[C<WRrj=3Ci6oWUZ`KmTRC0]E^p8WhFFn1GCeo>$F\Pb0JqAN)JU`/F:et(k
+;uTYoP5gUIO,T*YN/Wht1%s,2m^9C,Za@!DZEgaA\[/N@WMl\jUnFBOS!fY1Q'ISsOcYWaNJi^P
+MM[1IM26uYM1&6!;cHat<``F,>$P<<?XI5N@qB4aBPD6uD/O<4F*)SLH$XjdIt3-'KnbD?Mi<^Y
+P*;/sR$sM8StMgRV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTjQ5Oe
+kiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCT,J,~>
+JcC<$MZ<>Jrr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l1>98k`#Yp/(Zac;=-orB($ApcJ75!'Bg6!]`;&r]C'>r]:iW4$,Jb3]oMd4$#A\
+2E!QT3BK]#8H)6]8cME_8c2Eb;>a5j:\RZi:Jah]:/+O\:AmH^;H$Ln<)`Znoi:fgs&]5$$s-J/
+<)lq!<``C(<E8io!*0"tpJq/ks&8bn!*8qrs&K/#<;T\q<rZ1r<rQ2!<WuQ*<``C*r`T/$!a/W.
+rE9;)=BJ`)=q+\A?t!PWBP1pe@UW\QraGb7r+#b;s(24Bs(D@F+),J*Ci"!.DfKf;EcZ;EGC"Ua
+J:`H.KnP)3L51\IPQ$hZPE:f`MiEd[PEqT'R[]h=T:r$VVPpJoXfnt5Z*:I;Za@0L\@T;b]Y2(q
+_8=.0`lQ<Gc-F\`daQ[pe^i@)g"P08h;7&KjQ5OekNM0qlg4'.nF?&>oCVeOq"aa^qYU3grVlf'
+rs#E=ARAeP?iF@iLja>X@9cl46qL?_@9unq8i&F[2Dd!M4ZkGV1Ijr)7n-!<2`NcZ5<V.k4B,<\
+<)Z^p;c?SVruC[LP&Xog>$bKA?<poC?=$lD?!LN9=]eg0=BAQ&<tA>3<)ust<Dugn;c?Oj:fI<h
+nPO[3;cHat<``F,>$P<<?XI5N@qB4aBPD6uD/O<4F*)SLH$XjdIt3-'KnbD?Mi<^YP*;/sR$sM8
+StMgRV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTjQ5OekiqBum-O--
+n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCT,J,~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7\ADp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`Pc>8OG:'/n=S$us-`_Ps-`;DrgO%\R[K\7r0dSPrg!JL#*tOAQ'I`$rfmkTPa.Jt
+PE_8rPE1n+P8fR>K7\W*JqJog[Bm9G[C<KKZ,OZ#`59I2_o)Jn&&cB*`5]d:`Pfd:`l>p8_Z%IP
+`;daO62mhTW<'$"r2Tdrs/Q'tri-.&WiN/"WW&jrWVWUrWN)usWroB&X/u9#r2KatriGmss/QC,
+Y-"h/YHP,.YQ(j)YQ(j+Z2V$/Zi%03Za-n8ZN.B2[N)ce\[]2]]=bei]tV4r^qmn-b0\\miT91]
+i8*,cf_sM&fE^$Ze^W.!e^XTKs4.e6f\,!4gtglHjQ5Ohm-jN?qgndYrs/;doCDJBnF$8T*;8ma
+g9\ujq"jUBY1B)GNgl2?TV7r_@pZ:<XKMQ'$!CM<@UEDI>["uC^BM?a]XbM\NW1@%s823ImHa$%
+lg*g'oC2&+io&YHf[J9qc-",J`P]O-^:h4p]t=9R"gk\E['m@4[=1tN;c?Xq<``C+>$G6;?=.)L
+@Us%^BPD3sD/O93EccGJG^=^bIXm!%KSG8=MN!RVOckrpR$jG6StMdPUo()jX0&P/ZEpsI\@K5a
+^;%M$`5Td<b0/&Td*^=le^rI,g=tH?hr*JRj5oFckiq?sm-O--n*fc9o()DEo`+Uap&Ojdq#C0i
+qY^6ir;HTdrdk*+s*t~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7\ADp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PbtoF)d"cn:T&=noF\Ms)e*Ys)S*[%Wlc4FE;JDF*)MFF)c2=rc&-]DfK]6Ec:qr
+4`51WDf9N3DJsE/DJsH4ChREkARo@aC5.FsLP:M@L51MKPa.JrPEV/mP`q>pOd)#mP*;#iOctrk
+Ockh*OoCODOnq?FMi<VfMuS\6MuJ\8Mti55Mi<RQrJUZ6pl564!0-u<!0@,>r/C]:pQ,?9r/guB
+rfR5Bs,[/@s,m>Er/puAs,m/@rfd8ErK[DI!L8uLR/WK`R[]e;T:r'\Y->17XfAB"Vus$!WiQ)u
+s/?!sri,prs/H$us/RoVY-5(7ZEpsJ\@K2`^VIe-b0JGdg"Y?@io]Opo_A7Wp%7bAm-F$+o(;\O
+q>1!crVhBJh>]7P]X>5X[^EQOmbcI2\?i<4L7,H_`5/X1UNDB,EbnNsGBHVY:P47LJq8K&:/F_d
+<Drfn!0[>D!0@,=!K;qts!RKg^$3A?Za7$DZa-m@[(E]LXfA@uV5'`WSt)49Q^*f!P*(ifNfF$r
+!/g`3s+p6&ISj!A;cHat='/U/>?kH??XR>PA7]@dBkhF#DJsN8FEMePH@('hJ:W?+L51VCN/is]
+P*D9"R@B_<TV8-VVPpMqXfen6ZaI6O\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\d1gYL`Di8N_VjlY^h
+l07L"m-X60n*ol<o(2MGs7QEc!;HKfs7u]kr;6KkrVcBfJcCT,J,~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7\ADp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`Pb298k`#Vp/(`cr_WJfePPftrB($ApcJF:"Ze_,4?P^u3WM2>3r_;?3r_;A4T@JF
+3]fA`r]:KM3B/rU3&iiV3CcU<8H;B^8cDQc:BF?i;>j;k:]!rh:Jh$f!DcPj:B"&h:AR9T;uBVf
+<W?,"<W,tr=8u;#<!ZK)<`iI*<`W5n<;onu<W6&!<W?+n<!$'#<r5nr<Y&22<E3("<E<.#<E<.%
+='#0!#Zb#-<``@)=',9$s&fA)=nPr,>@(]H@qKCeART"T@/aU5@KKtI@f9h/AS,OeB4u!nC2.O"
+D/O92EcQ8DF`__JGBnL]IXm')L5(D;Ll7=WQBmbuOcGBYMMmIVPaIl-S=Q4BT:hpSVPgAmXKf+=
+[C-"@+1AYg]">Vg^:qD!_Sa@3a2uNKcHjkce'umtf%A[1h#?+>hV[8OjlYail0@R#mI'HBnI"jZ
+p%S7WqYL-grVlf%s"")ECh$j\@UNPM?&3oMBOG%H;aj8X>[q,>4\7Io0/k^>5<V.a2)Ilq7n3JH
+$oU.+4?ktl4$6JA<E/oq!E)dWrtG%AO`=l^?sd5I?!UfC>[:WE>[@>5r`K;)='5H's&KV/<`N't
+<E)dl;c6Ih;c!BhnPOd6;c?Xq<``C+>$G6;?=.)L@Us%^BPD3sD/O93EccGJG^=^bIXm!%KSG8=
+MN!RVOckrpR$jG6StMdPUo()jX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^=le^rI,g=tH?hr*JR
+j5oFckiq?sm-O--n*fc9o()DEo_%nWp&Ojdq#C0iqY^6ir;HTdrdk*+s*t~>
+JcC<$MuWGKrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,i5m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+_bK@oH`PcD=Q\M]5n=S$ur0dJOrL*/DrgNnXr0d\TR$mr@s-F:^Q^<o$Q'Rf)QBmf$Pa.Js
+rKI>FPl6dTP*)#hM26_4JUrH1\@)=C'",'P`5T[6`l,a5`5T^5`l,p;rkoAe`l5s<`l,g7_SsC0
+_8O70pd"nYoVqehrM]gtWW&jpW;rssW<9)sVl9Tm$)ji&Wi;qpVl6ToW!03%X/rA'r2Tgtri?(#
+q5jb%Xf\c*Xo,@!Yl:j*Yl(a,ZEsM:s0D^4rj2X4s0hs:"h;+S]=PWR]`5Yc]Y2(q_8=.4cI:J(
+j5]+ThV?f<g">!2g=b-0f%9cLr7;S7g=k<:h;7)LjlbjnmI0T<q>>gD]Di-3nal>BnaQ&HruCe$
+k1d8DlhCAMj0@1&Y)\s6@A'<c?".*BXK/N'WtJT?>[h&G?<g[N^V7Is]tCnc\;gM;qZ$T_lL!s%
+lKdd#mdT]0jl57Tg"=g&d*9_Sa2Ps4^qRLr^V%1g\%2IE!OfB+[<YVI;c?Xq<`W=*=^,-9?=.)K
+@Uit]B4u$qCi402EcZ>GGBnL^I=Hd!K8#);MN!OUOHPinQ^F53StD^NUo(&hWiWA-Z*UgG\%0,`
+^;%M$`5Td<b0/&TcdC1jeCN7)g=tH>hr*JQj5f=akNM0qlg4!+n*fc9rpg*]o`"Lap@nO\s7u]k
+r;6KkrVcEgJcCT,J,~>
+JcC<$MuWGKrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,i5m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+_bK@oH`PbtrF)ctdn:T&=rGhmXoQ'nO!-J-[rc8!Z!-J*Z!-8$Zs)J<`EcGu9DfGYps)8'Y
+E,TXmDZO]nrb_pYDJjH1BP@BU&nPZgLkg_?L5CY>Pa.JuQB[Strf[JJPEM/orfR5Ds,d;ErfIJL
+OHP]fO-5Wgpd"n=p5As.regc8rJL`9Mi7RnqMY?3s,6l6",i+sNW+k:NW+n8NW+q<O8P"ANK0$Y
+NK3jrrfI&?pQ,H=P*5O$rfRJLP*2#mP*>j/r07AMQ'Rd7Qs5uIR[]e;T:r'[Xfeh/X/i4uWMler
+WiN/"WN)qsW2ZbsWiN2#X/`5&Xfek4ZEpmG\%0,`]tV7u`5]pDdb!:2io]Lmo(MhQp\+7LnF,f6
+nalJLq>1!drVhBJh#B.N]XG;Y[^`cTmbZ@0\[/B4Lk;tHahY'6TlZ$'EGSEqGBHYY:P44KJUi9#
+:JO\c<)`cn!0dDE!K`?@N<"lts!I<b^$!MEZEpmCZa-pB[^EKHY,\J!V5'`WSt)4:Q^*f!P*(ie
+Nr=n;MMV7gs+p6&Gu7I<;cHat<`iL->?kE>?XR;O@qB7bBPM=!DJsN8F*)SLH$XjdIt3-'KnkMB
+N/`m[P*D5uR$sP:T:r!TVPgDnXKJe4Za@0M\\#Mg^VRe*`Q-'BbK\>YdF-Oof%8U/gYL]Ci8N\U
+jQ5OekiqBum-O0/n*olHncA@Srq-<cp\jmeq>^<hqu6NlrUp/@s,$c+~>
+JcC<$MuWGKrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,i5m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+_bK@oH`Pb/68k_uTnPK$Wekl?-niH_2!'L'=rB(-C3]d4$pc8I:3][1#r]C$=!'C0Bs#^3@
+!'C0Bs#:$>2Z>Z83=/5K8P2QH8P)cVr_WVjs%r_mr)!>fq,%)e"\h`d:JO^\62sm]<:X#k<`N1$
+r)Wl!r`&r!r`9)%rDru"r`/bnr)W\r!EN4p;up!"pf.Ar<E8uus&B,$<E8corE'#"r)`l"r)s&'
+s',J+!*T2&"C#2>?Xj"G!+Z":!+>e7s'bt<rF5_9s(2mVBPD-oBkqL#D/O92EH6/CF`mY+EHc\R
+H[UBrL51SBNK93dQ'IPqOH,<ZN/is^Q'n)1SXuIGTV8*TUnt&lY-G=@\@K/[\$rlY]=bhk^VI\&
+`5Ta:aihoQcHstfeC<%"f@em5h;7&Hi8N\VjlbjllKmp+n*ol<oCV_Lp\=R^r;HVsrri1lCLLTL
+?m]2e?AO#MB44tG<(0,Q>\7AA4\7Il0/bX=5!;"_2)7`o7n-!;7/f.V4?ktl4$6MB<E)pr<)ZXk
+OoGaZ^lNGDI:HVi?N+4:>?kE>?!LZ@>?h)0r`Bb6<EN@)<*!!u<)lmp;H-Lk;Z'A];0Yu;;cHat
+<`iL->?kE>?XR;O@qB7bBPM=!DJsN8F*)SLH$XjdIt3-'KnkMBN/`m[P*D5uR$sP:T:r!TVPgDn
+XKJe4Za@0M\\#Mg^VRe*`Q-'BbK\>YdF-Oof%8U/gYL]Ci8N\UjQ5OekiqBum-O0/n*olHncA@S
+rq-<cp\jmeq>^<hqu6NlrUp/@s,$c+~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eoeH+1o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`PZDER#.K-rLa+_!hZ-Yq4H!)s-`nSrL*VQrL*POs-`SL%\&oWR[Tb8R$a;.R$a5,
+rfmPLQ'VE7s-<kUQ'7JsOd#d/s-5U-PEV,hP*(ldLOao-K7\ic[C3HL[D^)(`l5p:_Sj@1`l#g5
+a2Z-<`Q#m7`Q-!:`l#[1`Poa6_Y-7qW:d+iWqr[qW2KQlri$%!Vl-DhrMTUk!N2gnVu<OoWr/n)
+Wi<"uX/`2#X/rDuXT5O$Xo,=%YPYR(YQ(g-YH[o/s0M[2"LYVE[C6%C!k>ePrO`*B(VRPr]=bhk
+^VIe.bKn_mhr*GMh:p]<gA]b2g=Y$.f%8L)fDX>=f@\a/g=k<:gtpuIj5oFflg=02oChtUrIP!]
+rrDloo)nRTnF6DV*;Jp^g9n'Dq#C!ISCNq.O.)5>TV.l^@U6.<X0)B%%pE1B@UEGJ?!>([^;%@p
+]`,I$s"F3Js6T+>m-<m%m-O30mcrlniSE5?f$_pjb/q]C_nj.&]th@p]=>;Z['d9K[C#M4IS`m>
+;c?[s<``C+>$G6;?XI5N@q9.`BPD6uD/O<4F*)SLG^=^bIXm$&KnbD?Mi<[XP*;/sR$sM8StMgR
+V5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTjQ5OekiqBum-O--n*fc9
+o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCW-J,~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eoeH+1o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`PYttG'&7dn:T&=s)S-Zs)S-ZolBnMq/ZLV%!6Q3FE;JCF)l>CEcV/!!,qgT$#ag&
+EH#f7DJa:hDuX\aDf'9.DJa-#@q0+]AnV*u*eoH+PEhE!Q'IZ!P`q;qP*D&mPEV/mPEM#iP*(ih
+rfI/C!g/Y-p-A\9q2>60oo&d+"H/4tMi7FjrJL]8Mu&D3NW"n:NW5%<N<5&uNr"h/O8t@>O8tF@
+P5:=?P5UREP5UREPl6mHQ3W\@Q^F/.R@*uAs-a=dStVpVWN*&$X/i2sW<]H(WiE%tWi>ut"KSW+
+XK;E's/n#YYd:^D[CEcZ]Y(to^r"%/`lQHSgYh/Xmd]rCp\=OXp@\+No^h_JpA"L]r;HVGs4dPT
+aLnt\\,WrZ\*r/#`4E7SUkjW(^<+0mH(T,4Bl\#cG]n4);GVrEJc:0':JO\c<)W]m$'UO7OcYT`
+NJrgWrrhl@^$Ef=ZRE2eZa@'H['[$>X/`.qUnaTSS=,e3QB[SrOcYW`N/NROM27%GM26uYM1/8u
+;H$Lo<`W:(=^#$7?!grI@Uiq[B4u!pCi+'/EH?5FGBeF\I=?]uK8#&9M2R=QOHPfmQC+,1SXuLK
+UnsufWiW>+Yd1XE\%0)_]t_A"_o9X:aihoRcdC.heCN7(g=k?<hVd>Oj5f=akNM0qlg4!*mdKW6
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*,s*t~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eoeH+1o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`PY,98kr,WnPK$Wekc?-r&aI1n2pY2s#]p8!'0s<r]C$=!'C*@s#U-@'KnQ?3&rlU
+3B&rX8kDZI8P2iX;,[Bir_EYn;,L.cr_WMgr_NYl;,I6fr_<Gfp-A[Wr`&_os&Snps&SttrDrhu
+#Zk&,<E<+#<E8rr!*9)#!EN;$<rZ8$<WuK&<E3(#rDikupf7;o!*/nss&B&"r`/hrpK.;qs&T2&
+r`K8*>Q.e+>Q.h+=oV\*>ROhB?!q,O@preR@:B+D+Cehh@UinYAS#IcB4kmlBkhC"D/O61EH6,A
+FEDYKGBj+4CNk&LH[ga+N/s'`PE_>tP`_&jP*(liPE_E&S"-(BT:r!SUo(&hWiWA,Z*LaG\@B)\
+]"G_i^;.S&`5]g<aihoQcHjkce'uq!f%A[0gtprHiSieVjlYajlKmp+n*ol;o(;YMq"X[^r;HSr
+rrr1gC0t=Ura5\32Mlj&BOFtD;aj#M?"dSC3^ttg/iGO<5!;%`2)7`o7n-!;7Q3:d4[2(m4$6MC
+<)cdo<)ZXkOoGXV^l<;BJRnad$sd1F>?tH>?!CQ>>?h&/#Zt/0<EN=(<*&uu$rg/';c?Oj;Gg7f
+:f-^[IS`m>;c?[s<``C+>$G6;?XI5N@q9.`BPD6uD/O<4F*)SLG^=^bIXm$&KnbD?Mi<[XP*;/s
+R$sM8StMgRV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTjQ5OekiqBu
+m-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCW-J,~>
+JcC<$MuWGKrr)ior;6Njs7uZhs7ZNerq/,?oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`l,`3Kq"'jTV8$Orh9:`s.@H*rg3\Rrg<YPrgNbQrgNeRp6kuLrgF.]Q^X2+Q'[i&
+Pl?q/QB[PuQ^*c"QB[SuPa.JtPEV/nQ'IJpOcbfiNfAgJIXd!"Ko!+Bai;B@`Q#j7_Sj7-_ns=1
+_o0Up`W!dX`l#g9rl"iU!lMjkoKiMUq5F@oqPjIlpo":mVPg<hVuEOnVu3ClVuEUpWrB(!WX>`(
+WN3)"WiN2%XRiRlXoP[$YQ1m*Yl(d+Z3IYB[C3KO[f*]7\-0@R]=bfU]bS8p^:h1l^:q@u`5]pD
+d*pV#gYCQ=rS.A+s4RG)$eO%_f\5'4g=k<9gATb<gtpuKjQ>[jm-a?4oC_kSqu)*G]`/62oCVYH
+oC;DMs"a?:jP.)bmJ6eVk+1(jY`P<:@%X*_>[jq?X/iA'XK8@)>[h&H?<paM^q[Xt^:_%f\W-VA
+q>^K\m-a9+m-F$+nF5l2jQ#4TgXk',d*KkWa2Ps4_7mUu^:_(f[^NTO['d=3[!khK;H$Ln<E<1'
+=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOccWiN8)
+Yd1UC[^`l[]Y;.t_o9X:aND]NcHstfeCE1'g"P6;hV[8Mj5]7`k32'olKmm)mdKW6nac8Bo`"Lb
+p@n=\q#C0iqY^6ir;HTdrdk*,s*t~>
+JcC<$MuWGKrr)ior;6Njs7uZhs7ZNerq/&=oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`l,`%Cj:)NKS9&Ob(9V5rc7jTpN$.Pp2^.R$$($,E,fi;EcH'tE=[)/DK'T7DK'Q5
+DK'N5Df>Sls)00"DJa6/Dej*!B4>@]@qKD/KpIsgQ'@T!P`q>oPEV/mPEM)nrf[8C$^-U6OcY]f
+P*1rgORtj=MY2l-MZ/P6MZ8V2MZ8V5N;ne9N;\Y7N;JP4N;nn;Nr=t:Nr4n8NrG+<OT(=5OS+b7
+P5CFUP`q;qPa.Q#Q^=#'QBmo*R@'B@R0oCPSXlCIUo(#iX8]*uWX5`+WN)u!Wi;ttri?(#s/lI-
+Y-5).Y7.\B[C3TT]"G_j^VRed`<sW*bL>5)kjJ!5p&=^cq#:'rq"OLUp\=R]r;HVGs4dQ0qo?=X
+\[]2[\$th_d`&i)WhbH=ZbOZ#Xa-R]KkYRC:O%)+9i?XrJq/E&JUi8G:K:=lr_WucP*(lfOH,<Z
+N0!unn'Sf8aKi1ZZa@'F['d?LZ`gL3Wi)_iU7n0LR[KP/P`q;nOH5BZMMmCLLl.%FM2Ce\IS`m>
+;c?Xq<``C+>$G6;?=.)L@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG8=MN!RVOckrpR$jG6StMdP
+Uo()jX0&P/ZEpsI\@K5a^;%P&`Q$!?b0/&Td*^=le^rI,g>(N@hr*JRj5oFckiq?sm-O--n*fc9
+o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCW-J,~>
+JcC<$MuWGKrr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1abfe,L`l,_a8P2ZOn5/mUf22H-rB'O1nN6G*!'1!=s#L$=s#^->!BWFB49%Dd3]fGd4Ztke
+3&`]R3&iiZ8kDlV;,U7h;,C%a:/4S];,R6frD*Pm:Jak`rD3Pk9hk7G!E2tp<W?.p<W#nq<rc;"
+=8u;%='#<#!*8kprE&qur`B)"r)NVpqGmPr!*/ns!*B/#!EE2"<W#nr=8l;%=8c5%='5H'!*K,$
+s&oD,qcX5/>[:W??!Uh:@fKm:@fKs8@fKs<AH-6@BE)ZFC'\TiC2@^(E,]jrEt<D:GBeF\H[9s^
+H$t@'Nfj=)s-3JG>*P;;Pa.Q%R@B_;StD^NUSOccWN*##Xfeh1Z*^pI\%95c^;%M#_o9X9aND]M
+c-Obbe'lgsf@\d3h;7&IiT'"[jlP[hlKmp+n*oi:o(;YMq"adarVc`pWrFO>Qtg#:?XI2I>[<27
+EG/]^<`2=W<F'<J;*%3*2_[-G/Nu<[0K)No8,bsl77Tg,3'BGg5!(l+<Dujq;H-Rl;3Ck_n\'m"
+@Y/1j?N4:V>[(K>?<pc=>[1K9=]ea.<`i@(<``7$<`E'u;c-Il;,C1g:B")\;1;>=;H$Ln<E<1'
+=^#$7?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOccWiN8)
+Yd1UC[^`l[]Y;.t_o9X:aND]NcHstfeCE1'g"P6;hV[8Mj5]7`k32'olKmm)mdKW6nac8Bo`"Lb
+p@n=\q#C0iqY^6ir;HTdrdk*,s*t~>
+JcC<$MuWJLrVc`nr;6Njs7uZh2YZq=p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`Pc8*K9DIhrh97as.KLeT:a8t"dbUCQ^F3>R/NEQRe<*IRfAcXR[KV5rgEbS"IGOD
+Q^@]:#FC[?Q'.DsPl6jJPEl*2s-"dlP*D2pQ'7>nOcklfP)>'EJpr9'KS[^i`l?'<`l?*:_Sj=0
+_o2Pl&B)W/`l,a4_8=+/`5K^7_Sbn0!3#Xkri6!srhoLhs/?'uVl0Nmrh][nrMKUms/6%!WiE-!
+WrAssWr8suXS/drY5bU(Y5YO(Y-7c-s0)I-!3lI-#I(J<ZEggC[J[K5\,Ef?\[oAa]Y+-T"2;I]
+^&G_V^r+.4b0JDaf@ej3gtgfCrnSmUgY1?6g=Y*5gtUZAhr*AKhqm2HiT'(`l0I^'nFQ8Ep\Odb
+rIP!]rs/8ip@e.Mo()bZ*;8d[gU5,lqZ$BST%0:;NLH#=TV7o]@^*#9XKDK'&uf&>@piVL?!4tY
+^V7@p]=PP`NW1-rs8VBMmHs9,lg=-0n*TE$j5SqMf@JL#ccjPQ`PfU.rkAcR]XkV][C!?L[d^[(
+:k)>?;cHat<``F,>$P<=?XI5N@qB4aBPM=!DJsN7F*)SLH$XjdIt3-'KnkMBN/`m[P*D5uR$sP:
+T:r!TVPgDnXfen5Za@0N\\#Mg^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60
+n*ol<o(2MGp%A@Y!;HHe!r;]hr;6KkrVcBfJcCW-J,~>
+JcC<$MuWJLrVc`nr;6Njs7uZh3VW7@p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PbkeCj(&QKS5!UK`$JFK)TchEqs_MErC%fFE;JCEH-#=EcQ/>ErL+]EH6*tE<pT(
+EH,o:E,]apE;OSRDAI),Df9N3DJa9.DJs?0C1h!d@q91aC&O8(Q'@Q"Q]mVtP*D/orK7\UPEV,j
+OcPQbOcYZgOcY^q5lcf?MZAY6Mu&>/Mu8J4MuJ\5MZ\ipMi@Okrf$l:!06l7rJpf8!fi>&rfHi7
+qiLZ:!0I/ArK@&As-3JI!1*VN!LB#MQ3!A@rg<\Q#b%6RStDaPV5X?lrMp%#X/i?$WrK."XT,C<
+YHY::Yd(I;YHY=>[^`o[]=ktp_8=.h`XKr2dbEgHnFZGJp\=O_q#U9brq-Khp\=R^rVhBJgA_3J
+a8WV2\@K,Y\*r2%`O`@SUkkGJ^WOHrH_5GDBl\#cG^":);M0RQJ:N3%J:LBk<`;po;,EF=OcYWc
+NK&mUO8gs&cb8;XZ*UgD['R-H[C3KLY-+k+Vl$8aTV%dER@';*PEV/kO,]'TMi3IJMMd4IM=QQ(
+:k)>?;cHat<``F,>$P<=?XI5N@qB4aBPM=!DJsN7F*)SLH$XjdIt3-'KnkMBN/`m[P*D5uR$sP:
+T:r!TVPgDnXfen5Za@0N\\#Mg^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60
+n*ol<o(2MGp%A@Y!;HHe!r;]hr;6KkrVcBfJcCW-J,~>
+JcC<$MuWJLrVc`nr;6Njs7uZh2>?h<p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`Pb/584H;A;#O2<;#EBP47bN43rhDB49%>D4$#Gbr]1$@rAss?r&Os@3]]8^r]1!>
+"$8P*48_/>49%DD4$<L(s#^EI4?Y\cr\aj=3&s,";#aDl;@$)p:JO\]:f1*f;#X5s:/=Y^:JXha
+:J^LH!*&nss&Str!EN4r<rH)%<``@'r)Ehu<E3)s<<ZE'<``='q,[Ms!*8tsrDr_o"BJN%<)r`p
+!*/tu!*/ns!*B/%s&]5&!EiP(=8c5$=o;A&=^1l/r`f;*s'5Y3@/XO6@fKp?@UikWraH+BA7T7_
+B4krXCAquPC27[(EH;&"s)\`oGBeF\H?j^YG^Y7%Ng'I,?B^V;P*2#lP*(olQC"#.S=Z@HU8+N]
+Vl6SqXKAY/Y-5(8['dEU]tV7t_8F73a2lEHbg+P]daQ^qf%8R.gYLcEi8WeXjlY^gl0@X&mdKZ8
+o(;VKp\=O[rVulrW;esMP\FK4?=.&G?!W;8E+`N]<`;CX=(#`P;*7?,5qk2Q/O)B\0K)Km7n,s<
+77Tg,3'KMh5!(i*<Duiq;?Bco;3Ckdn%"?o@s2Nk?=$oDr`gFL?!U]<>[(E9=]ea.='/L*<E3(#
+<E)st;c-Ilr_`\k!`2`jnkoE`Io0*B<)lt"='8[0>[1TB?X[DRAS#LfC27X'DfKc<FEVkRH@1-j
+J:`E-LP^nINK90aPa.T&R[ftATq\?[Vl?\uY->1;['mKT]=bkm_8=.0a2lEHc-FY_daZguf@em4
+h;-uHiSrnYk2tjkl0@U$mI'H3nF?)?oCV\Jp&F^cp\jjgq>0scqu6NlrUg)?s,-i,~>
+JcC<$N;rPLrVc`nr;6Nj!;ZTg#5@ibp%@tKrph]3nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+^bK7iF`PZ/,KT)@hTqV@Xs.TIcs.AePrh&5BrLa+Ur0R>KrL!YSopPiKs-WnTRJrWaR@9P3
+R[TS0R@'>+Q^@Z:&<W6BP*M8rQ'[f#Q'7GrP`l$.rf[;D$BL@2OckigMLpD.rlYYk`lQ3?`l5s;
+_T)Sls2=oRs2,;_`l>m7`5T^4_o'L4`:$"kW;rmqW<B6%Wi;rqVt?nfVuEUtVPU,eVu<ImVuEUq
+WiQ,t!NN-tW;iguWiN3!XSAprY5YR$YQ(j,YPtd+Z2_$0Z*L_8[/[Q5[Kj:O\@K/]\\%jRs1SBF
+rk8?E!58BG-,@F<aNMoXeCN7)gYCWBio/nShVI#Bg"P39gu%#JioK1^k2tk+kRQkClg=01nFH5E
+p\F^brdk*]rs/;kp@n=SoCMq\*;8aXgU+rgqu?HRT[;,pNLl>BTV7r_@^*#:XKDK'&uf&>@piVM
+?!5%Z^qRIp]XtbdNW0+Ts8VB`mJlMgmI0K3mcj#ujPo(Of[eU#d*'SR`P]Rl^]2"Q]Xt\^[C!?L
+n$N*kGYq@;;cHdu='/U/>?kH@?X[DRA7]CeBkqO%DK'T:FEVkQH@('hJ:`E-L5:\EN/s'`PEhH$
+R[]k>Tq\?ZVl6VsXfnt7['mHS]"G_k^r"".`lQ9Fbg+P^daQ^sf@\g3gtgiFi8WeXjlYail0@U$
+m-X91nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,-i,~>
+JcC<$N;rPLrVc`nr;6Nj!;ZTg#5@ibp%@tKrph]3nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+^bK7iF`PYegDKL5SK7j&Sqh+Bire'6_rIaue!-7jSrGhmZrGqdV"*&@$EW0tdEH6&>F)u>@
+EcQ/=qf36cEH#i9E,T]8E,T]5Df0K2rbVXQrb_[O&8l?&Df0E+ARo;:QC!o$Q'M?5(mUDNQBRMq
+Pa%>nOckigPEV)kOckifOH9C'mm6r2!/gc6p58j-reg]5rf$f6reg`7r/:Q5oo8p1rJ^f;rf@&?
+o8ip5s,m>ErfR5B!0R,@rKI8Gs-<SLs-NbQrKmGL!L]>SR1bsYSXuLKUSXicW2ZetXKJb0Xo>C$
+WXZ#1Xf\e2ZE^aC['d<MrjN9F]">Vg^V@S#_SjFm`tHJ8c.(P/lga]Dp\4IYqYU3fq#9pco`Osa
+qu20Hg&D0Fa18e\\Mgt,[dN#"`O`=SV2(DE_9'TsH^^sqBle,eG^":);M9XRJ:N3%J:LBj<`E$q
+;,EI>P*(fdNrG$!rsJ,<]u\7![C!9IZMq3U[^39BXfJJ$VPKoYT:VL>Q^3o#P*1rgNJraQMi*=J
+MMR.Hnr!HDGYq@;;cHdu='/U/>?kH@?X[DRA7]CeBkqO%DK'T:FEVkQH@('hJ:`E-L5:\EN/s'`
+PEhH$R[]k>Tq\?ZVl6VsXfnt7['mHS]"G_k^r"".`lQ9Fbg+P^daQ^sf@\g3gtgiFi8WeXjlYai
+l0@U$m-X91nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,-i,~>
+JcC<$N;rPLrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+^bK7iF`PY/77n?BNn50*[p/(`cj&#\OqE"O9o/ce2"$/M)3rV2D3]fA`48h5?48Lu?3BB/\
+rAk$B4?GY(3qbZ74<ZjM3]K&V2c<ON;,C+e:f("e;Gg:e:JO\]:f1(d:esnarD*Dir_NMimm6VH
+"]SK%<)clr<rZ5$<rH"u<rH%t<<$"s<W?)$<E<2r<WlE%='&H$<VKPl<<-"r<W?,"<<uW*<E<.#
+<E<3"<rZ5&=BAT&=9)Lr=T;P.>?Y37>$Lr1#@1YB?XI2L@K'^<@q9+[ra?RO@:E\WAS,UiC27U$
+Ci+'.DfBZ8F*%>&'QnVDG^4U]H$FRZIt`fAPEhGuPEc'1rfg?DP*2&pQ^XJ;TV8-VV5L8kWiN8)
+YctC<Za@-L\\,Yk_8=+/`lH3DbKS5Vd*^@mf%/I+g=tH@i8N\UjQ>Xhl0@X'n*ol;o(;VKp\4IZ
+qu$Gis"Wi#B4#%Q?XI,G?&<uLB3nbA<('>Z@VB7K4[i100fCg>5!;%_2+^;.7Rp!<7n,HsrBC6C
+$!(&+;c6Ll;c6GSrs\>(M/6X0B3nqO?!^b6>mXb>=^508>$4s/r`Bn8=B8I&<`N*t<Duan;c-Cg
+:f1%d;"@K`:j>i8;c?Xr<``C+>$G6;?XI5N@q9.`BPD6uD/O<4F*)SLG^=^bIXm$&KnbD?Mi<^Y
+P*;/sR$sM8StVmSV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8XdF-Lnf%8R.gYCWAi8EVTjQ5Oe
+kiqBum-O-.n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcCW-J,~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5i*HAdQVRA$>QUApqcT`:YZT(\fMT),)WT(\fTQN!3PQC!s9R.6RHR[KV3rg<bT
+rg<kTR$X6=QPZ$TQ'@N!Q'@MrP`h8tPa7SuOd(ukP*,a,%$?d;O-,QbOH5QeNm@XJ,Kn0NaiVWD
+`lH*<`Pfa6_83q)_SsF0_o9X8`Pf^3_o'@0_X0ViWMo`onYcGcrhogprhomrV5='ds/5jp#-+Z$
+W2ZerrM]^p!ii<%r2]n#rN-"#riZ4'!jSu6r3-('riuL0rj;^5s0_s;\G`r>]">TP]`,VE^AY_a
+]Y2%n^V[q0b085]e^iC+gtglHjlY^ejPo.VrnSONioK7al0@R"lg4'.naZ,<n*oo>oCV_Mq>:,A
+s1/.7p%J+Rp@\+NrVnYGlJ]4Z_t!^*p#2Ojd^G7,P[^;ZSm>g1Y,ne.WiW;$>?kB??=-uAZG=5h
+^:h1k]=O"%.eiQ7lg=--m-O00md9B)kiCdahqZl9eBuUeb/hT@_SEt%^:q7m\$i]OrjD7&s%n,@
+;H$Ln<E<1'=]ns6?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCI
+USOfdWiN8)Yd1UC[^`l[]t_A"_o9X:aihoQcHstfeCE1'g=k?<hVd>Oj5]7`kNM0plg4!*mdKW6
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*-s*t~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5huAoMaAItNCNK_pDsK(aijK)1,tK(aicEW'nXF8U(XEsHf-F)c5?EH;%u")r7!
+Er9qWErU+mE,or;E,T]6E,ff8Df0E1D/O6.rb_dSDf,Ji#&A*nDf0?Yrg*\PPa;<6s-3PK'9ncH
+Q'@GpOctrlP*(liPEV/lOoCFDO-#Fi5m3+'MMmDeMYN,/N;\\6MYW20N:i/5NfB!WNVnh,O8b4E
+OcY]gP*>a)!0[>Ds,mGIPa)-3rg*PMr0RMOR/NBMR7E^8SXuIIUSOcbW2Q\rXKJb4Za$a<Xf\Y)
+XKJe6Za@-L\%&rY]=bkm^:q:o^;%J#_o'I6aNDZKc-b/!jQc4,p@n@Xqu-Kn#lOMmp\+=Vqu20H
+g&D*Aa8EJ+\@8s8hU06PZ)NV9QF4TN_5DXLWf:e7D,>J$F\PbfJqAQ)It<-#:/=Yb<)QRiLQ[d^
+O,f8"NK=)elHR#L`NlqZ['d3H['mBJZ)t..Wi;kjTqS*LS!fV/QBRJpOcYQ]regu<M2I1HM2Ce\
+s%n,@;H$Ln<E<1'=]ns6?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0
+S=ZCIUSOfdWiN8)Yd1UC[^`l[]t_A"_o9X:aihoQcHstfeCE1'g=k?<hVd>Oj5]7`kNM0plg4!*
+mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*-s*t~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq.u;oCDJBnF,i6mHj3*l07Eok2kX`iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5h`84cNNktq(Np/(T_r)!)ar&Xj>s#U$=oK)t5#<Y%/3]fA`481f848q8B3BB5!
+3W;&B4$5Sc48q;=3rhDA3tjY;4?Yee<)Zap;Gg:f;,L.d;,[Bjs%i\kr_<Mk;,R6fpeU9Cq,RGo
+s&8qs!``9%rDiks"B/9!<E/rtr`&\no2biiq,IZ#<E3!t<E3)q<W#nq<W,qu<W6##<E<0!=8c8$
+=o2>#=oMP'>5_Y+>$Lu2!F9%1?iOL>@:E\UAS,OcA,TjI@:Eb[BkhBuCi+'-DfKi?rGqs\rcJ<e
+G^4W6HO+qFI=d34OHYn+PUr,fR@BY3Q'@T#R$sS<Tq\?ZVPgDnX/rJ-Z*LaD[^WfY]=u%r_Sa@4
+a2uL'bU1T\d*pLqf@\d1gtgiFiT'%]kNM0qm-a?3nac;Dp%J+Rq>:*grM0AtjG[bZ?X@)Hra$S$
+HuWb)=B%^V8loP;@8K'T;*?Wm1bLsT4>8WbrC7&]77Tg,2`Ue#s#U<T<E3#r;ZKXVrse>&LMUF$
+AR8_M?<pcAra#P.*EZNK>?Y03='/O*<`iF)<`N.!;cQan<)ZXk:f1*h;"@K`:jl2=;c?Xq<``C+
+=^,-:?=.)L@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG8=MN!RVOckrpR$jG6StMdPUo1/kX0&P/
+ZEpsI\@K5b^VI_(`Q$!@bKS5Vd*^=le^rI-g>(N@i8EVTj5oFdkiq?tm-O--n*fc9o()DErq-?d
+p\4[^s7u]kr;6KkrVcBfJcCZ.J,~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfW)I?fVnRf8uXU&:S`T)bJ-TD"QNQi*6ARJrZSR/<<OQm.laQ^=,+P*D8tPa%Gt
+Pa.JuPa%AqQ'IMuPa%>qP`_&iP5^X^OcYZcONu+qcHOJTbfn5OaiDE@`Poj9`W!de_8*t,`ko^5
+`Poa5_SjC0_WjGcWVrdnVu!@lVuN[uVl6PlVuEOiVZ!CnW2]`o!3,srrMfdr!i`6$q5jUu#Hk22
+Y-5%5YPtd'YPtd+YmdqEZaI0I[^W`U\[oHQ]`Gj\qn*!D]Y4<Ys1\TK^&G_f^V[q/air,[eCN:*
+h;I;Qk3D3pk2k[bj5T(YkNV:!rpC'\nFH5Fp\=ITrq$Efp\4IZr;M9I\Glg*o_/%Rp%@tUs"*m1
+ijH/1o`+s`hON3H^Q+YF@\B?b?"1(AXKJY)X/i4'>[(TB?X6j@^q[V_]`PjY]8cgoo_/+Hn*g8C
++n+phmHWp!j5].UgtLE1dEg%[aMu08^qmh$^:V"d[^ELA[ICPP:Jakb;H$Op<`W:)=^#'8?!grI
+@Uit\B4u$qCi402EH?5FGBnL^I=Hd!K8#);MN!OUOHPinQ^F84StD^OUo(&hWi`G.Z*UgG\@K5a
+^;%M$`5Td<b0/&Td*^:ke^rF+g=tH>hr*JRj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojdq#C0i
+qY^6ir;HTdrdk*-s*t~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfVtBlnEPIf=usK_pB%K$ArJEpn#IErU4ZErL.ZFT-7[Er'b]E,or<EcGu9ErC"X
+E"[/0EH#l8DJsH2E,TZ4Df9K/D>eANC]SFArg3qWQBml(QBda7PQ?u4rg!JI#*P+4PE_2nrf[;D
+"H\b.O,rQl!/gc6pknj)s,?o7rJLB.s,?T0s,?o9rf6u=r/gi;q2kT=!L&]COU.&2OckomQ'R^7
+QN3EOQi<BPQi<BNQN3EPR7<X7S=Q:GUSFZ`W2Zf!Y-5+:['Hp?Y-5%3YHY@A[^WcW\[oDd^r"%-
+_ns1'^qde'`5Ta;bK\>Ydam11j6,e!o_81YrV?Hsqtg'`qu20Hg&D*;`r<OK\hLY'\*r5&`OiCS
+Lkh;)`6#fkH(q@-C3"2gG^+@+;M9XRJ:`9%J:LBj:K1:k;,E&IOoCC@N<#!"s!R$S]XGM[[C*BL
+ZaI0JZa-g;XfJM$VPBo\T:MF<R$O#$P*;#iNK*pq#)\7pMMR+Gnqqll:f("e;cHat<``F,>$P<<
+?XI5N@qB4aBPM=!DJsN7F*)SLH$XjdIt3-'KnkMBN/`m[P*D5uR%'V;T:r$UVPgDnXfen5Za@0N
+\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL]Ci8N_VjQ>Ufl07L!m-X60n*ol<o(2nRs7QEc!;HKf
+s7u]kr;6KkrVcBfJcCZ.J,~>
+JcC<$N;rPLrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfV^7nHBL:ARfe;#jGj;#jG;;?&`U3qbZ/3r;#<3WM8>3r_;?3r_;A3WM8?3r_2B
+3]T5]r]1<H4?GYe4$#GcrB($Ar&Xm@rDWbqrDEVmqbRJo;Gg:f:f%'c!`2`krD<>dl9YAKs&9%u
+;GmEl!E<(r<<#nq<<#ts<;T\d<WH.t<<#l!<)lmsqc3Ysr)NSoqc3Sqs&B&"r`&r!rE&r"s&fe5
+<`W=)=]ed/=]ed0>5MP&>l@tF?XR8M@q9(\B4b^b@UW\S@:E_YC2.R$rb`BfE-$/GGBS+NFEVkQ
+H$O^`I=?YEIpmq`MN!OUP*;,qQ'Rc*StVmPT:;:;R@9Y<U8+N\VPpJpXKJb2ZEppH\@K5a^:qG#
+_o9X9ai_iPc-FY_e'uq"g"P6;hVd>Nj5oIglKdd&mI'H4nac>FpA"I\r;HQkUAlUrKk4Ut?=.)H
+?!`J<EG&T[<(02J>%_SY:HD$D6npVV/j;E]0f;Q%8,l$d77Ka+2`Nra5!(hur`&qrrDN\nOoH*\
+["`@'?X@&G?X@#C?<piA>?kA2>8^UH>$"j/<E3+&=&i4"<Dumr;,^@i;,C+er_W/_ISWd:;,U=l
+<E<.%=]np5>[:]D@:E_XAS5[kCM[m,EH-&AG'A4XI!pKpJqJc4M2I7OO-#NhQ'[l-S=Z@HUSOcb
+WN*)'Yd(OA[^`l[]Y;.s_SjF6aND]NcHsteeCE1&g"P3:h;@/Lj5]4_k3)!nlKdg(mdKW6nac8B
+s7H?as7QHerqQNhs8)Zjrqu`no_sFAMuS;~>
+JcC<$N;rSMrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfW+Kp[_$SarGuTDt2KQ2m9NR.csJR/WKRRf8]\QC4,-R?j5,R/WEYPa@`&Pa7W&
+P*>m0"I54:PEc$0!KrTDP5garOHPWdOHPdNccjSWbg"AWbfn8Qb/qcH`Q-!;`5KO2`5TR1`59F1
+_8F4j`<*oq`99JhW2Z\mrMKUmqPaFls/>jn!iDfjqPO4hpo"1lr2Kq$WMur"XSo1!WrT7!XT5O%
+YPtd(YPtd+YmdtG['d<N\@T;a]Y(rU^APYD^AkkD^&G_Z]tV7u`5g!CcdU@nf@o$<jQ5RjrTsOK
+''niKmI0Q8o(2JFo_%tSqYL$`rV-NkqYU3iJcE4Zs7ZHd!qu<ZrVnYIm,PI[`:a01o@gA"S$nAf
+P[gAZSm>g0YH4n.WiN2!>$P9>?=-uAXhhcd^V7Cp]Xs1'#kmr]m-aB1mI'uC(%(8Kk2YI[hV?c9
+eC)^fbK.]B_SO%e^]1qG[fNnDrjD7&HV[I7;,U=k<)lt#=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@
+Fa&(VH[U?nJqJc3Ll%%KO-#NgQ'Rf+S"6.EU84W`WN*&%YHY@?[^WfY]Y2(q_SjF6aN;WLcHjnd
+e'ut#f\5*8h;@/LioB+]k3(smlKdg'mdKW6nc&([oCW%T!VZ9dq#C0iqY^6ir;HTerdk*-s*t~>
+JcC<$N;rSMrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfVtD09rUJc:;pK[#/KEW1"JEVOSREr^=]Erg6#rc&0]EH#o:E,fgqE<L6#EcZ0t
+E!:6#EGof7rGDUPrGMXR'PqZ&Ci!s*Q^O2+R$X2,R$X/*Q'VE7&!N9CP`q>qPa%GrPE_5nPQ$^D
+Oog`.Om#(3Mi@Ihpl#02r/:Q3pP]'1mu@=,rf?o;s,[2ArfR,?s,d;EqiLlArfI2Drf[DJQ'V33
+rg<\O!LT;SQi39`R@9Y9SY)RLUnsreWN*)(Yd+27s0_j4/[Vjk[^`o[]=bei]tV>"`5KR2_84"*
+_o'F4aNDcRdF6Xuh;I;Sl0\$6p\Oj`rr`5sqtu$Ff`++p`4<Ij]=YY`\+8M,`O`CTLkh>.a2u&h
+KqigKCJSkFG^+@+;M0UQJ:`9&J:LBj:K17j;,Mt.OckfdNrG$!rs@i4]t1VY['d9Krj3QNZEg^:
+XK/A"VPBr\T:VO>R$O#$P*1ogNr=k?MMR.ILl$uZML/,q:f1+h;cHat='/U/>?kH??XR>QA7]Ce
+BkqL$DK'T:FEMePH@('hJ:`E-L5:\EN/s'`PEhH$R[]k>Tq\?ZVl?\tXfnt8['mHS]"G_k^r"%/
+a2lBGbg+P^daQ^sf@\g3gtglGiSrnYjlYail0@U$m-a?2nF?MK!V>s_o`=d\rV6Egs8)Zjrqu`n
+p&9OBMuS;~>
+JcC<$N;rSMrVc`nr;6Njs7uZh2YZq=p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfV]7nQKNrD<AgqbmGkr)2$Ar]:$?rAsU5pH&.4!BN=>3rV2E3]T5_4$*@&r&Fd=
+3Vtl948q;@4T7GA49.JB<!lQ';cH[p<)QUk;>sAn:Jamc;?'Jm:B+,h;>j>i:Zt+E<<#kq;$'Wo
+;u0Jn;u]f";cH^r<W5tp<<-(q=8Gqt<W,ns;Z]ou<W#hq<W6#!<VTVp<<-(u<W,ts<=)W)<``C)
+='/R-r`K2$"'8T,=oMP'=TV].=oDP(>Q.n-?2e10?NjhIA7K._rFQ(AAGp+hBPVC"Ci4-/DfBc?
+G'A+PFEMbOG^4R\I"$QqJUrH,Ll%"JNf]EgQC!u-SY2dTV5']SR[T_:TVJ<[VPpJoXKA\1ZEppH
+\%0)_]tV>"_o9X9ai_iPcHstfeCE+$g"bE?i8N\VjQ>^mmI'K6o(2MGp%J.UqYL-grr)fqrhBEG
+eU_:=?X@)I?X7!!Ir]4/>#e!Z9O):I?VNXU2`WT@1bLsR4>A`c84Q0>7R]d9r\tBN5!D%j8QAbk
+<)Q[o;c/\W$g=pNCgLXU?<poE>l@t.>RXnC>?P06=BSd/=B8K$<t/,/<)QXo:fC4g:Jjqcr_W/_
+HV[I7;,U=k<)lt#=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@Fa&(VH[U?nJqJc3Ll%%KO-#NgQ'Rf+
+S"6.EU84W`WN*&%YHY@?[^WfY]Y2(q_SjF6aN;WLcHjnde'ut#f\5*8h;@/LioB+]k3(smlKdg'
+mdKW6nc&([oCW%T!VZ9dq#C0iqY^6ir;HTerdk*-s*t~>
+JcC<$NW8YMrVc`nr;6Nj!;ZTg#5@ibp%@tKrphZ2nF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]Q,MOKI'T(/K!TDXuJQN*<NR/!*IQj/tGR[KS2RJiKQQN!3OPaMH9!LK)MPS0:G
+PEM/nP`h2oPE_;tOcbfhPl?aMP)tgOd*0\Yci22oaj&&RbKS0/ao]]*_u@[U_@XN"`kfR/^qdh(
+_8O:2`PfXU5lmm\rh]Xl!2odo$`Br$Vl6PlVl$>hVZ*FgVZ*LfW;ERrX/`6"X8o=#WrB%!XSf1#
+Y4\suYl1g,[/RH<[^WcY]Y(qkr4W0Er4Md;(V[Z"_84%/aN;ZPdF?^tf\>9@jQGgqn,DnXnI"jY
+oC_eNp\=LVp\sseq?Zolq"ad`qu$GEs0hq-rVlKipB(-`p&4n?q!@(JZc2Y<s7*:qgm5=.@[(Ds
+T:]Cu?EUB4XK/D%W*3G1?s[2G>FrY/^]2"K]Xs.&.eW?#n*o`4mdT`7lK@<jj5](Sgt:<0da67^
+ai;<:_8*k#]t:nc\$`TNm^.F=:f("e;c?Xq<`W=*=^,-:?=.)L@Us%^BP;-rD/O93EccGJG^=^b
+IXm!%KSG8=Mi<[WOckuqR$jG6StMdPUo1/kX0&S0ZEpsI\@T>d^VI_(`Q$!@bKS8Wd*^=lf%8R.
+g>(N@i8EVTjQ5OekiqBum-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*.s*t~>
+JcC<$NW8YMrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]PuDK^2Vre'fqc@Z+;rGhgWrc&$\EH-$oEV=DWF)lADF)l="E<'qVDuaeREW'h`
+EH6#;DfBW6Df0OnDZt)sD/O3/rbMjXCi,T.Q^4#,rg4mpR$X/*Q^3o&QBd\tPa%GrPED&pP*;&k
+OckliP*(ojOc\]k!K2j7M>iD2MZAY6MuSb6MuAP-MZA_3NW"h6NVeb9O8=t<O8"b9OT:RBOo(:J
+PE_;sQ'Rc'QBqH8qj@DOrg3\Rrg<_S&tPVcT:r$UV5C,gW2m#'ZEpsJrj`WN\%0,^]=bkl^V@Lt
+^q[_&_Yq:h_Sa=1`Q$!Ac-Xqif\,!6hr3Y[m-jN=p\XparrE%Ls473/h86e8]">Ve\@;+keAf,,
+WeZ@s]?/4.KS?@GN+u.+:j@5.:/Xl>Jq/H'Jq/AH:JXqf;Gg;;rfR2@s,@#=O8fCGbK7?([/IE3
+Zl-3UZELC2XK&4rUnaWUSt)49Q^*euOcb`crJLl:Ll.%FM2Ce\ISWd:;,U=k<)lt"=BSd2>[:ZC
+?t*SUAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1LP^qJNfT<cQ'Rf*S"-(CTqeE]W2co#YHY==[C3TV
+]Y2(q_Sa@4aN;WLcHaeae'ut#f\5'7h;7)JioB+]k3(smlKdg'mI'H3nF?)?!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUg)?s,?u.~>
+JcC<$NW8YMrVc`nr;6Nj!;ZTg#5@ibp%@tKrphW1nF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]P\84cNNr_`&\ekuHD"?\b-3]d7%r]9[5p,W493rV2A3]m1!#!4k-4$#Daq`=R6
+rAjs@4SCi=<)lmrr)<\q<;ohr;Z9Pn:^Koo:f:.f:f1(cr_<Ghr_`Vjs%hcC!E)eo:]aKm;uKZ&
+;cH[o<)cdp<)lrs<;TYq<rQ2!=Su5!<rl?%r_s)#<)lt#<`T,ur`/\nr)NMm!*B(urE'#$!EiP(
+=8uA(='/T%=TDS&=TDY)>6%q->le8>qd9A3%qB-]B4tsmB4bahBk_<uD>nGPDuXeWF8U,kF`qtQ
+G^4XaIt<3)Knb><M2I4OOHPioQ^O>6U8=feVPBcUSXl@HUnsufWN*&%Y->1;['mEQ\\,\m_Sa:1
+`lH3Ebg"G[dF6Uqf%8R/h;@/KioK7dlg=02o(;SJq"jjar;N)`0?SWO?!glE?XR2HO+MFd?<U>t
+6VUj%CgB:i:c1?i-o<P>4ZkJX1e:/-7Rom:7fGCH4p!f.7fHEc;ZK[WruL:-KPG42?=%#H?!UcA
+?!U]@>Zk68>?Y04>$+j,rE'#"$WU/*;H-Ll;,C%d:]4,\;1;;;:f1+h;cHat<`iL->?kH??XR>P
+A7]@dBPM="DJsN8FEMePH@('hJ:W?+L51VDN/is]P*M?#R@B_<TV8-VVl6VrXfnt7ZaI6O]"G_k
+^r"".`lQ9Fbg+M\dF6Urf@\g2gtgiFi8WeXjlYail0@U$m-X60n*ol<ncA@Srq-?dp\4[^s7u]k
+r;6KkrVcBfJcC]/J,~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j3D2b-HU%"`,TD5)VQ1UC@R/<<OQiNKPR/`QSR/WK]R$O,*R$O&'QC!o&rK[PN
+Pa7O4PV85`OckumP`h8pP*1rlP*D,mOckjOc-F\[cHOMXbKS/Rb08&Pb/qfJaMu3:`Pqhp%`QB&
+`507*^r!q(_Sa71j?WsHV5:&dVuEXnVuN^pVu<LmV>-qfVZ`rtWN)usVuWgnWrB'uXT#4%X/`2#
+r2ft%rNH7(ric:)s0;U1$+.+K[^WfY]=biV^AkkK^;%CrrOi$@!5AHG-GI:3_SjF7bKJ/VdaHXq
+f%Jj9j6#OimIU#Eq"OU[qYU3fqYU0drqc`lqYg3nqYU0frV_<I[Jp=*q=jm^!r2N_rVml4mGtOY
+a7fQ5nZK@VQ`lU@Q"6V]T3Yo4Y,nh.ri6F*>?kWF?=-uBQb^E9^B;3b]Xs.&.eW?#nF5l7nF5o7
+l0%3ijPetOgY1<0da67]aiDB<_8*q%^Uq+e[^`]Pm^.F<:Jakb;H$Lo<`W:)=^#'8?!grI@Uit\
+B4u!pCi402EH?5FGBnL^I=Hd!K8#);MN!OUOHPinQ^F84StD^OUo(&hX0&P/Z*UjH\@K5a^;%M$
+`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?sm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6i
+r;HTdrdk*.s*t~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j3?Z1:5JFJ6;KDfijEVskWEW:%[EH:hor,MdWrc8$[!-8'[#]ap*E,fi9Df>Vo
+rGhjV!c`-trc&TjDf9W6E,T]6DJj<0DJsE1D/O4iR2)0XR$X/,QC!o(Q'[f'QBml'Q'@JqrK@PP
+Q'@GrP*(oiP5LFBPiP+3MM[2hMZ/P6MZ8V7N;SV4MYi>3MZ8V7N;8J4N;nn9N;SY:NfT8#O8t@@
+OSY%9OSb.CP*(oiP5^XOPa.Q$QBml(QBqH8qj@ANs-WbQ#b.?TT:qsQUS[ses/,ptXKVW/#dq4T
+]Y1tk^:sQ]s2"ZLs1\TM_>_:i_o0O5`lH3EcI(.mg"Y?>i8Wh\lgF<9pA+Z<s31KFg:k21rk(8'
+\[_Cqf#YV4WeZ=s]?/4+KSljOJST7C:jI8.9iFi>Jq8N(Jq/AH:KCFm;Gg;8P*(ogNfT3[NfX2f
+jibTR[^<KN[^EKL[Bd*CY-"b*W2HMgUS4<OS=,b3QB[SrP)t]_regu<Ll.%FM2Ce\ISN[8:f1+h
+;cQk!='8[0>[1QA?X[DRAS#LfBkqO&DfKc<FEVkRH@1-jJ:`E-LP^nINK90aPa.T&S"-(BTqeE\
+Vl?`!Y->1;[C3TU]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3nF?)?
+!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s,?u.~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j37S66F:?b[?;=79Z497N)r&ap>o/lb/s#U3Ar]Bm9s#UHH4$,Jb3]]A#3WhB%
+3BI."rAk$B4?G\'48r.X;uKZ);cH[p;cH[n:f("c:f%'c!`)Whr_W\m:]=)h:]=5k:]X?gj?`]A
+!)rkrrDW_qr_ihs<W,nn<Vfbr<W6##='/Q'<WZ6!;uT`"<``=%<)ifrr)Wht!`iB'r)N_ss&B)#
+=8l8"<W6#'=&rC)=B8K%=8Z1q=oV\'>QnD>?=.)Ir*BJ4@:<[FAH?IYr+Z7KD>S5NDuXbYEH6,B
+rcMXmGBeC[I!pKqJqSi5LPUhGN/`m]Pa@c*S"?=LW2ZYjUS4<QTqeH]Vl?\sXKJe4ZF%$J\%0,b
+^r!t,`lH-Ab08,Ud*^=le^iC+gYC]EiT'"^l0Rm0o_/%Sq>1!erg!Kc^j'<prEoS4*FFt^G%k;e
+<CK8M?#4:]5X&(&2(pjE/j;E\0fCie8H2-^77Ka+3W2,L4$5r3<E<$s;,gFjOoGdNYCpY#@U<AJ
+?X<Y9+C/5W?!LT<>Zt94>?P'1<``@)='&F&<)ZUm;,U:g;H!Ehnkjj2:Jakb;H$Lo<`W:)=^#'8
+?!grI@Uit\B4u!pCi402EH?5FGBnL^I=Hd!K8#);MN!OUOHPinQ^F84StD^OUo(&hX0&P/Z*UjH
+\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?sm-O--n*fc9o'uhQo`"Lbp@n=\
+q#C0iqY^6ir;HTdrdk*.s*t~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0D2P6QRdZpJTDtSUTDP;]TD>/QU&Uk_Q1U@DQ^F0;RJiL(Q^F,-R@'>-R[0>,
+R$Nu%QBRW"Q'R]#Pa@VuQ'7DoPED&mP`h5oP*)#lPPpXWbg+GWc-+>XcHOMWc-+;Tb0/$.b6#f+
+b5TK^a8a*[`50Ck_Z.FU^r*t(_8>.srMKUns/5mo"K/2sVl0*_#cFW"WiE%tW2TZor2Tas!N`@$
+XS]"!X/rE$Xo#7'YHY::rid3DZEppF[C3QS]=bei]tV7r^:q@s^;%D]]_fDB^AkkS^;7\)`Q63G
+bg"M_rm`">f\50=jQ>^onb)\Rr;HWnrVQKgqYU0fr;6?frqZTj!rMooJcE(V!r;Wdrq?Hgp\b%A
+qX3LNZH2e?s7!/'gSUs/Q]kmPTV,P"?EUB4X/i>&W*3G8?sd8H>F`LErkAQL^V.7=s"46DnaZ,=
+mdKZ7md03$k2bU]h:p]:f@86rc-+5L`PfX0_nWpu]"#5Y['d9Ln$IO>:f("e;c?Xq<``C+>$G6;
+?=.)L@q9.`BPD6tD/O<4F*)SLG^=^bIt3-'KnbD?MiEdZP*;/tR$sM8T:r!TV5L;mXKA_3Za@0M
+\[oGf^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60n*ol<o(2nRs7QEc!;HHe
+!r;]hr;6KkrVcBfJcC]/J,~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0?u::7IIDjfKE$VrKDU>fKE$T+E,fmsErU.PErC"XEWC+UEWgB&EH?4#EZ&t=
+EcH,=DJsK2E,T]9E,]`9E,T`7E,T`7rbr-]E,]`4Df'B/rbhb)rgEeR&Xo,SQ^F/+QC*r'Q^3u)
+QBdg7Pm!;8PED+/PQ-dHOd#a+iBdF"s,6i5!fN"rnr*O*!/pi8qMkK5s,Hr8r/Cl?O,oB`OS=h6
+OSk7>P5gXHP*;)org!MLrg*VPrg*YQQhm*JR/iWRR08tJS=ZDQU(X5tVP^8hW2Zi!Yd(L@\%BAh
+^\ttK^])%K_>_4n^VR_%_Sa:0`Poj;a3)TOdad"'g>(TDioK:fmIBiBq"oXBbl9cT]tCth]">Sc
+s7GF*ahY<dLPD81bK@>INMq8PBQ.caH$=I+;br$tJUr?'J:LBj<`Dsp;,MV%Ocke'NfX2HjiP3I
+[^EQP[C6(As0<iQY,n\'Vl$>eU7n3OS=,e3QB[VsPEClaNJiaQLl$tEMM^k\ISWd:;,U=k<)lt#
+=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@G'A1WH[UBoJqJc3Ll%%LO-#NgQ'[l,S"61FU84W`WN*&%
+Yd(OA[^WfY]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/LioB+^k3)!nlKdg(mdKW6nac8Bs7H?a
+s7QHerV-HiqYL-erqu`no_sFAN;nD~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq/#<oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX077^!D:$GRC;<^pV48qA249%GA48M#<3rh>@48Co?3BK8_48q8H4$#Da3]]8^
+3;GT73rD)>;uBPn;uK\q;[ZQ';cH[n;G^1e:f.*dr_WVl!)WVis%r_m!)VW?rDW_qs&8qq"]JB"
+;c?Zi<<6-%qH!Vq!*/qtq,@T!<*!(#<E)rp<W6&!<<6-%r`/eq#ZXo,=&r@'='#9$"'/K*=Su5#
+=oMP!=oV\*>Q7t->l\4.?NXVA?=*V=#\%:SAS,UkCi'&frG;LNCMn'0E,ou?FEM_LGB\:XH[C-i
+JqJc3LPL\BMMmFSP*D9"R@Bb>USXldVP^2bU8"H\Vl?\sXKJb2ZF%$J\@K5a^;.S'`lH3EbKS8X
+dF-Opf%/L,gYCZDioB.al0Ig.o(;YMq"t$grfmFB\8bqb?=.#G?sfRjK6V*=>?+*Z:0qdR><kDK
+2)HsF1G1jS4>A`M84c<@7n#m:3''8f5<_.k7fHBk<)ZRl;GiSV*9=2RBO5.S?XI,E?!LZ@>?kH=
+>[(E8=]ed,=BPQ('3J::=&i7";cHXl;c-Fj;,C(d;"7D3:Jakb;H$Ln<E<1'=^#$7?!^lG@Uiq[
+B4u!pCMds.EH?5FGBeF\I=Hd!K8#&9M2R@SOHPfmQ^F52SY)UMUnsugWiW>,Z*UgG\%0)_^;%M$
+`5Td<b0/&TcdC1je^i@*g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojcp]C9fqY^6i
+r;HTdrdk*.s*t~>
+JcC<$NW8\NrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfW&E/19QRHU=@TDYAYU&LeaU%4rXU\L,OQN*6JQN*<OR/`QSR/NHPQiWVArg3eU
+QC"!;QN*3VQBdZ"QBd]"Q';02s-!PMOcYe+OT:IAPQ-dIPEO5ibl>rfbSeRJc-OYYbg";Sbfe/O
+bK7oLaiMTC_oK[6rko)Z`59=-_nj.,ha.:>rhoamr29.`s/,psWN,rrs/H("q5XFp"K\Z*XK2<"
+s/Z.#riQ.%s/l=(!3c@*!j]/=rj2g9\%'#]rk/<GqS**G^V0WZr4W*DrkB_p_oBa>bKS5Vd*pOs
+f@\a0h;I;QkN_L,pA+Xbr;?Hfq>:$crqlipqYU9gs8)lqrVhBJZi:.&q=aU^p\b%Gr9rdOZH2h@
+s6m%tgSU9qQBG[LT:fG!?EUB4X/i>&W*<M9?sd8H>-brZ^V@S!^V5X+./39%o();=nF,f3l0%0g
+j5AbHgY(-,da67_aiDB>_8=.+^:q.g[^bY1!)NSjG>_@<<)lt"=BSd2>[1TB?t!MTAS,UhC27[(
+DfKf>Fa&(VH[U?nJV/W1LP^qJNfT<dQ'Rf*S"6.DTqnN_W2co#YHY==[C<]X]Y2(q_Sa@4aN;WL
+cHjnce'ut#f\5*8h;7)JioB+]k3(smlKdg'mI0N5nc&([oCW%T!VZ9dq#C0iqY^6ir;QZerdk*.
+s*t~>
+JcC<$NW8\NrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfVq?u17:If"ccK_pDmK`$JlK`5rjEURrIEVjbVF8g1\F)h2""*8I&F8^(dE,T]6
+DK'T7E,fi8qeud[E,T]6Df0FkDuOVUD46piR3e2eR$j>.Q^F&)Q^3o%Q^3u)QBdc"P*M2pPEV5p
+P`q5nPEM&lha.'qm#1n&qi(T9pl5<6rJgi;p5f*4!g/S+r/pl>%$Qp?Q'R]#QC!r*R@4#@!13PL
+r0dPQ#b7HWT:r!SUSRmds/-7'WN3/'YHbFB\\,ZU_#D(L^;'T]s1]bn_84"+_o0O6a2lBHd*gFo
+f\,$8hVdDTkN_F'nalGKqYc!FcMp,X]=bbf]">Pbs7GF)b/1ThL5283bf[DIM5Yi@B5hZ_G^+F,
+;br$tJUr?'It19i<`Dsp;,E%2P*(fdNfB'ZrrqH'_n*:crO+#ZZa@'EYHFt-WMcShUnXQUSt)4:
+Q^3i!P*;#hNK&jSMMR(FM=6<%:]=17;H$Ln<E<.&=]ns6>[CcF@:EbYAnYjmCMds-EH6/DGBeF\
+I=?]tK7nu7M2R=QO-,WkQC+)0SXuLJUnsufWiN8*Yd1UC\%0)_]t_A"_o9X:aihoRcdC.heCN7(
+g=tE=hVd>Oj5f=akNM0qlg4!*n*fc9rpg*]o`"Lap@nO\s7u]kr;6Kkrr)KgJcC]/J,~>
+JcC<$NW8\NrVc`nr;6Njs7uZh2u!%>p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfV\7n?3F9^#C@;=%*Z;>`NS4RbH34T.A@3WM8?3rD)83r_8C3]fFu3WqH&3B0"s
+3W;)>48r1Z;u0Al;uBSs;cH^pr_`eo;,R<hs%`Sir_WVls%r\js%i\mha.0=r_iYm!*&\mr)Nf!
+qGmVu<W#hr<<-"t<<?-#<qfVl<WcE(<E/rtr)Wbts&K,$r`9#"!*K5'r`B,%s&]5&qH<`"#?tG=
+?=.#E?Mn10@/aU7@M30]A7fLiCi+$*Chmd%Ci+'-DuO`hF*)MHF`qtRH$XgcItE<+KnbA=M2I4M
+N/j!`Pa.T%R%'_DVl6SnW2?DgVPgAlX/rG+Yd1UB[^WfZ]Y;1t_o9[<bKS5Wd*gCnf%/I*g"Y<=
+hr<_[l0@^*nalDGp@nCZqu$HmQ2_&jE+!'[?X<Y<2P-(aGA:Sm<^];N?Z0db5X&"&0ePCA/Nu<[
+0fCgY84H'=77B[*3^5em5!(l!<E2st<)HUmOT,^KWIS\n?s[5K?<ge8>RatD?!LT=>?G!1=B8U-
+rDs>,='/F%<Dujr;,dHkr_W&\!)NSjG>_@<<)lt"=BSd2>[1TB?t!MTAS,UhC27[(DfKf>Fa&(V
+H[U?nJV/W1LP^qJNfT<dQ'Rf*S"6.DTqnN_W2co#YHY==[C<]X]Y2(q_Sa@4aN;WLcHjnce'ut#
+f\5*8h;7)JioB+]k3(smlKdg'mI0N5nc&([oCW%T!VZ9dq#C0iqY^6ir;QZerdk*.s*t~>
+JcC<$NrSbNrVc`nr;6Nj!;ZTg#5@ibp%@tKrphZ2nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]Q&EegHURH1%8U%>#NU]7+iPkUIAQMd$HQN*9PR$mo?rL"msR$a;/R@'D/Q^F,*
+QBd]#Q'IZ%Q'@Q"Q'IStPE_;nP)te(OTpl0OckmSbl5lrc-+>Rb07uPbKA)Pc2PodbQH&4aij\*
+&]Vr4`Q#m7`Pfa7_SX.,_8!eA62me]VYm@gV?!IkVZ*LnW;ih%W2ZbsWi2kqql9Xrs/Z:(XK2?#
+"08N)Xo5@#XT5O&XT5O'YQ(j,ZN.B3[0O1O]=bhj^:s?Vs1\KGs1JBFrP&<I*5]Y6aNMfPc-Xkg
+f%8R-gYCWCioB1clgF<:q>(!c!r;]irVZZls7uorr;HQlrdk*Us8Viqp\=O_p\b%2rUB!RZH2kA
+s7!+ugol]qQ'%i7TV#J!?a$Q6X8]1,WEWV:?s[2G>-e.Cs1ncP^V5X+/bei,nal;>nF,i3kiUsc
+io&YHf\"d(dEp+^aiDB=_SO4-]tV%h[^WZP['d=2[!kbG:f("e;c?[s<``F,>$P<<?XI5N@qB4a
+BPM=!DJsN7F*)SLH$XjdIt3-(L51VCN/`m\P*D5uR@B_<T:r$UVPgGpXfen5ZaI6O\\#Mg^V[n-
+`lQ9EbK\>ZdF6Uqf@\d1gtgiEi8N_VjlYail07O#m-X60n*ol<ncA@Srq-?dp\4[^s7u]kr;6Kk
+rVcBfJcC`0J,~>
+JcC<$NrSbNrVc`nr;6Nj!;ZTg#5@ibp%@tKrphZ2nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]Pp@r?^?Ien]8K_o]gEW'n\F)l;BF80eUEVa_UF!PaGEcZ8BEcZ8AF)l8?E,T`7
+DfB]8E,fo<EH#i7E,fc7Df9UoDZO]nrb__*r0mYRrg3nVR@'>.QC.Z;s-EhRQ^*p:Q4]CJQ'@Pt
+P*D/pQ'7DpPEM#ih*Lpqonrg-rJUQ3rJ^f;pPo35!KE-=NW5%:NrY:?O8P(BP*(lgOSt=>Oopo4
+PEc!2rg3SNs-WnTQi3<OQN3ENRK&]aS"61ETq\<WV5:)eVZ*MWWiN5'Y-5.<[(*`]^:h7o^;%Fu
+_8*k&_8*n(_Sa:0`5Ta9a2lKNeCN7)g=kE@hr3VXkj.X(nF?,Cq>PsFci4*n]Y(iT]DoGas7G@%
+bJLZiL5284cHN_KMQ;;DB5_X6G^+C+;c&*urdb`7J:LBj<`Dpo;,E%2OckffO,]0[s"NHR_n3Cf
+[^NTO['R-FZ*1:2Wi;nnUnaWVTUqX?R?s2&PEM/mO,]*UMi3FLM2I/ZMLJ;r:f("e;c?[s<``F,
+>$P<<?XI5N@qB4aBPM=!DJsN7F*)SLH$XjdIt3-(L51VCN/`m\P*D5uR@B_<T:r$UVPgGpXfen5
+ZaI6O\\#Mg^V[n-`lQ9EbK\>ZdF6Uqf@\d1gtgiEi8N_VjlYail07O#m-X60n*ol<ncA@Srq-?d
+p\4[^s7u]kr;6KkrVcBfJcC`0J,~>
+JcC<$NrSbNrVc`nr;6Nj!;ZTg#5@ibp%@tKrphZ2nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]P[77U!E:?b[?;=dW^;#iZS48_5348qA>48q8C4$#Gar&aa9s#U3Ar&ad:"$&>#
+3W;#;3WD,?<W#er;u';m;c6To;u]hs;u]bp:^^&q:JO\\:/F__;,R9g!DcPJ62jg^;Z'Gn<;TYq
+<;fhs<WZ?)=8c2"<W?,"<Vohp<<60%qGdSt<E8osqc3SqrE&u!r`B&#rE9&#s&]5&s&oA(s&f>(
+rE0S5>?kK@?XI,G?XI2J?iFI4@K0dD@q9+[ASGppCM[bbC]85ODZt-$EcZ>FrcTB-G^4U]I"$^%
+Knb>;M2@+IMiEaXOcbilPa7`.U8FmgWA:EMW2Z_qX/i>)Yd(L@[^WfY]Y2%q_o9[<b08,Ud*g@k
+eCE.&g"bE@i8Wh]l0Rm/oD\Ccp@n@Yqu6SZrs#<:?t!AK?2e1ZSrnSHCL^UM6pjdYE,JiE5Z9Qq
+/iGLM5!;"_2)Iip7Rfm:7RfC!5Q3kH3s\JZ<E)su;H-PUrs@Y_IqN7u?=.)GrETA."^>59>$G2/
+=T_],=]kZ)$<C50<)lps<)ZUlrD<Vm;,HaZISN[8:f1+h;cQk!='8[0>[1QA?X[DRAS#LfC27X'
+DfKc<FEVkRH@1-jJ:`H/LP^nINK93bPa.T'S"-(BTqeE\VlHf"Y->1;[C3TU]=bkm_Sa@4aN;TJ
+c-F\`e'uq"f\,!6h;7&IiT&t[k3(sml0I^&mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?
+s,I&/~>
+JcC<$NrSbNrVc`nrVQWks7uZhs7ZNerq/2AoCDJBnF,i6mHj3*l07Eok2bR_iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j3ATs$'R@'\@TV:eHr1X.bs.ShSq4mh_s/#^Zpm(lFq3CoE!13SM)OHhZR$j>0
+R@';+R$O,,Q^3u(QBRZ!Q'RYurfn@ePa%AsPED#lOcY`eOHPdVd*^(^bg+DUbP]QacMl&fb8&:G
+bKS,Qbfe,MbfRuHaiMQB_oBU4rPAWP_nk(n!2odms/>pprMKUks/#gnVYm=rWN)u!X/`3!W;`dp
+WrK.!X9,N*XSo1$XKAW(XT,=&XKAZ(XoGO,YHY::Zi7?9[^`o\]Y=9Xr4r<Hs1\KGrk&6ErOsSn
+_Sa@5air#Td*gCnf@\d2gYL`EioB4dlg=67p\=OZq>0sbrVl^%rVZQiqYU0frVc_Hs0DY*r;$<d
+!Vc<cruCq(kcV53q#CB`XL-c\Mi3j,US+9O?".-CXKJW'X:_F8>[h)I?X6j@_8*k'_8*h"MuPC&
+nac5Ao'c,<mHNfrjQ,:Vh;$]9f$r*nbfe,J`PfX0`PT@&]=YP][C*BL[ICPQ:/=\_;,U=k<)lt#
+=BSg3>[:ZC?t*VVAS5[jCM[j*E,fr@G'A4XI!pKpJqJc3Ll%%LO-#NgQ'[l,S"?7GU84ZaWN*&%
+Yd(OA[^WfZ]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/Lj5]4_k32'olKmm)mdKW6nac8Bs7H?a
+s7QHerqQNhs8)Zjrqu`no_sFANW4M~>
+JcC<$NrSbNrVc`nrVQWks7uZhs7ZNerq/&=oCDJBnF,i6mHj3*l07Eok2bR_iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j3=Cc>rH[bgDk_/tiiIq5bqJcISrc8!Z!ci@'pMp7RrGqpX(is_=EcZ;BEH-#=
+EcZ8@EcH);Ec5l8Df5Po&oqr1DfK]6E,]`6E,KQ3Dk*8drg<bTr0dPO!1NnSs-F1^Q^3u'Q^=#'
+QC!o'Q2['QP`h8oPEPp/!g8b1gHkaps,?f4s,-c5s,?r8s,?u;!07#;rJ^]7rJpl:s,R&=qN(]>
+rfI/CrK6r>!0dDH!gT(;qj75J"IYXDR$di=!goCDrgF4aS=Q7ETV8-UUnspeVuEV1WiN5'Y->4<
+[C<]Y]Y(ql^;.Lu^qmhb_$7co_o0O5`r=!qaNMlVe(3.)gtprHio9%\k3)!pmI0W>qLS[mrrUEW
+^&>Q&]".k3j42;g[BG@AR_@%l[tBO=I;3G79RD#/F\Pe1K7\Z*JqAN':/=ni;,U7fLQdj`OH>N_
+NfO,EiPr^G[^`cSrjDd5s0*BEXK8G"VPg2`TV7sKS!]V0Q'7ApP`_#dNW+k9M?8WlM"$:O:/=\_
+;,U=k<)lt#=BSg3>[:ZC?t*VVAS5[jCM[j*E,fr@G'A4XI!pKpJqJc3Ll%%LO-#NgQ'[l,S"?7G
+U84ZaWN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/Lj5]4_k32'olKmm)mdKW6
+nac8Bs7H?as7QHerqQNhs8)Zjrqu`no_sFANW4M~>
+JcC<$NrSbNrVc`nrVQWks7uZhs7ZNerq/&=oCDJBnF,i6mHj3*l07Eok2bR_iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j377TjA:/C:UiDBSOnPT9Hq`F^<mQ:G0"Znb,3]fG#3rM/;3W_B(3rM/>3Xn/3
+3]T5\3&rrX3B:&;q,@>mrDEVor_ibps&92$<)Zaq;GmBh$VsSq:JOY\:/=\`;>j>G5laj^;ZB_q
+;ZKer<W?%s<W#qt<WcE(<E9$!s&B/#<E</u<<?3&<r5nr<WZ?'<r>to<r?%t<rZ8"=Sl8"=T;G'
+=BYQ(!*T5%"'So6?Mn.F?sd>M?t!GN@:<VS@q9+]AS5[jC23``s(q[P$u^*)EcZ;EF`qtQG^9:7%
+"*MTJq\o6Ll%"IN/dgqs,@>GOcu#rS"ZXTVuEV9WMlhsX/rD*YHY=>[^WfX]Y(qn_SsO7aihlPc
+dC5@e.:*]f\>6?i8`q_lL"-5p@nR]s7u]k!rW#rPQ(`SC0k<I?RoMk?D*C2F_YAh=%,MQ?u^-h5
+<i(*0eP=54[)"k0f:dZ7n,s<77Ka,3C!L,!]rM;r)Eer<)ShX&`0C6B45(P?!prC>[:T??!CV6>
+6n>6>$>'2=]ei+<tSG6<`E(!;cH[m;c-Cg;,C+dn54[1:Jakb;H$Ln<E<1'=^#$7?!^lG@Uiq[B
+4u!pCi+'/EH?5FGBnL^I=Hd!K8#&9M2R@SOHPfmQ^F52StD^NUo(&hWiW>,Z*UgG\%0,`^;%M$`
+5Td<b0/&TcdC1je^i@*g=tH>hr*JRj5f@bkiq?sm-O--n*fc9o()DPo`+Uap&Ojdq#C0iqY^6ir
+;HTdrdk*/s*t~>
+JcC<$NrSbNrr)ior;6Njs7uZhs7ZNerq/&=oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0@sa5rS!a/JoUu/VoqDG]q4d_\qP<k^s/,g]rKQc9s-EYNq3VJVR$j>/R@'8*
+R/<0`Q]mVuQ'7MuPE_;sQ'@MqPE_8lOoCFOO4DY)dEp7cc-+>Ubfg"0!6tMe!Qr[dbQ#d%c,n/R
+bKS)OaiVWD`lH!8`5BI._Sj:C5mjKeVl6PlVl$AjVYm:hVZ3P"W2ZesX/`2!Wr8pqWrB'mX8oC%
+XT,@$X9#H+r2gO5YHY@?[C*HP]Y(qk^VRe(rk\WMs1eTLrP/BH#/.ab]tD%mrkBku_o0R9b0A2V
+d*gIqf\+s4gtgoJj5fCflg=67pA"FYq>1!cr;HQkq>16krVhBJZMt1-q"XUYq"OL[ruCk&kcV22
+q#CB`X0^W^N/O!-U7e0N?"%'BXKAQ&X:_F8>ZtNA?X6mA_8*n(_8*h"MuPC&nac8Bo'l2=mHNfr
+k2bOYgtUN5e^DjjbK@oF`PfX1`PT@%]XkV^[^<EL[ICPP:/=Y^:f1.i<)lt"=BSd2>[1TB?t!MT
+AS,UhC27[(DfKf>Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf*S"6.DU84W`W2cr$YHY=>[^WfY]Y2(q
+_Sa@4aN;WLcHjnde'ut#f\5*8h;@/LioB+]k3(smlKdg(mdKW6nac8No*+dZp%J+RrV6Egs8)Zj
+rqucoo_sFANW4M~>
+JcC<$NrSbNrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0=_D_qIXZnGKD^E%KD'uoL$s]dL&Zo,E;jeTDuanVEr'kJEXHf-EcZ8AF)l5>
+Er0hiEc5l8E,KW5DK'Q7EH#l7DfBZ5rGMaTSt#_J!LoPWR0K+JR$jA0RJiKTR?s8+rg*bQQC!o(
+r0I>IrfdAF"-Je3P1W&'MMmCON;JP5MYN,0N;nk;Nr=t9N;\b6NrG%<Nr>%5O9Ui1Ocb`fOo1CB
+P5ppJPl[2;rg3_SR/NBMQiNKPR/NBNQr9?@R[]e:StD[LU8+N\VPg>jWMlerX0&P.Yd1UD[^`r^
+]tM.o^VIV"_83n%^qmn*_o0O5`lH0Bb08/Ye(*+)gtprHio9"ZjlYajlg=68q18Rms"F5j]tM%h
+]=YV`s754#aM50eLPM>4d*K4SM5u,@B5UCgGBe7);GVpsJUrE)J:IPo%9-2&;,E%3OckffO,]-Z
+s!ZgF_Rd1b\$i]O[C!9EYcb+/Wi2bkUS=HTSt2=<R$O#$P*;,mNfK+uMZeonM2I,YMLJ;r:Jakb
+;c?Xq<`W=*=^,-9?=.)K@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$jG7StMgR
+V5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8XdF-Lnf%8R.gYCWBi8N\UjQ5OekiqBum-X60n*ol<
+o)J:bo_%nNp@nO\s7u]kr;6Kkrr)KgJcC`0J,~>
+JcC<$NrSbNrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX077g'C:/OmV;UJ>B4?NL&rB'm=p,i::q`Fg="Znb,3]]A!3rM/<3WM8@3rM/<
+3r_5=3!!#Yr_rVl!)r\kr_reqs&/tu;H!Ehr_NJf"A_ik;,Gn2#?"K!<)cdp<;ont<;onr=8Q#&
+=&i7$<`N0!;up!"qGmPrqc3Ys!EE1s<<-(u<=;i/='/O*<`W:&=',<%!*T;'!*B,$s&]5&!*T/#
+s&fJ,>$>-9rE]J2ra6CJ?smDN@:<VT@UiqZAnYjlBkhD^C]A3%DJsE2E,fl<FEM_LGBS1UH@($f
+IXcp#KS>/9M2I7ONf8pVNK90aPa@o7V>R:lWW/tVXKAV-Yd1UB[^`l[]Y2%q`5]g<b0/#ScdC1j
+e^`:(g>(QCj5fFgm-jN<p\=R[qYL*dr;HVYs#Tt?Bjb:T>[LlG?Cm71F_P8e=%5SR@<6En5<i%)
+0J5455!;%k0f1^X84?!;77Tg-3&s/c5!(l"<;feu;H$JTrtO:dI:Zen?=$uE>[1Q>?!UZ?>[(J2
+=Vt4B='&C'<E3(#<)lps<)QRk;,C(e:/OjW;1;89:Jakb;c?Xq<`W=*=^,-9?=.)K@Us%^BP;-r
+D/O93EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$jG7StMgRV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@
+bKS8XdF-Lnf%8R.gYCWBi8N\UjQ5OekiqBum-X60n*ol<o)J:bo_%nNp@nO\s7u]kr;6Kkrr)Kg
+JcC`0J,~>
+JcC<$NrSeOrVc`nr;6Njs7uZh3;<.?p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.Apff#U7;(Sq4R\[pS.MZ!2TOfqkX(br20Cir2BU[r06Z8!g]1>qj7AMrKo=-
+R$O,*R$F&)QC+#*QBmc$Q'IZ#Q^!\tPa.MsQ'7;kPE:lhe'ZUmda?Fgc-FVXbPfWfbKA)Sbl5`j
+bK7lLair#OaSs9jaN)?B`l5m:`5BI._SP_-nj<%9r20RoWW&dnV>d@kVuNaoWrK'pWr9!oXT,@$
+XSo:"Y5PL%Xqe1GZaI6M\@TAf^VI\&_Sa:0_o'@.qnW6Hs1\BF/&9!;_o0L6aihrRcHt%jf@\d1
+gtprIjQ>[jl0Id-o_/%Sq>0sbqu$Ekr;?HkquH\Hs02M.r:p![p\+=Rr;Rc3mcU^Wao28>nuK1S
+[uH<3?)+-eS7Q05Y-"e+ri?I+>$P6=?=-uBZGQUWs1eZM^5W(Drq>mQo(2GCnaGr3k2tdciSNAE
+f@SO"d*0_UaMu6<_Sa@0^:_.i\$rfP['T5.In`[6:f("e;c?[s<``F,>$P<<?XI5N@qB4aBPM=!
+DJsN8F*)SLH$XjdIt<6*L51VCN/is]P*D6!R@B_<TV8-VVl6VrXfen6ZaI6O\\,Vj^r"".`lQ9F
+bg+M\dF6Urf@\g2gtgiFi8WeXjlYail0@U$m-X60nF?&>ncA@Srq-?dp\4[^s7u]kr;6KkrVcEg
+JcC`0J,~>
+JcC<$NrSeOrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.>%i&$Jpr<'o7R!pnqHmmpP&6os+gVnqeuLRs)J!Xr,_IMrG`0bF)l8@EH6#=
+EH1tus)A-[EH#mrEW0k^E,fl9E,TT2E;jb_SXZ.?S=>t9R@9TDRK&]ZR@'A0R@*r>s-4@cQ'[i&
+Pa.N"Q'@Q"QBd]#P`q5lP*5<#nj<%9r/:T6rJLZ7r/1]:Mi3OQo8WX-rf%8FO,o<]O,oBaO,s4#
+s,m;Bs,m>Erf[>Hrg!kUQC!u,R$a>1RJN<KQN<D=rL!VQ$_!QTS=Q:FTq\<XV>dA.W2ZbrX0&P.
+Z*L[B[C3ZZ]Y2"m^V@S__'d%7^qmq,`5T^8a2uKIcdC4mf\,!5h;7&JioB+]k3(smlKn!2q#5jE
+dJlK'`P&pr]">P`\,Z$ZeB#A2YD.h&_U6cAK8HUaC1_BXH$FRU<DnL&Jq8K)Jq/>G:JXqe;Gg8F
+P*(ohO,f3ZNrK:>`kf6o\,E`^[C!9EYcb(-X/MnmUnOKSSsu4;R$O#%P*D2nO,f3YMi3IJM26uW
+MLS>q:Jakb;H$Lo<`W:)=^#'8?!grI@Uit\B4u$qCi402EcZ>GGBnL^I=Hg#KSG8=MN!RVOckro
+R$jG6StMdPUo1/kX0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8Wd*^=lf%8R.g>(N@i8EVTjQ5OekiqBu
+m-O--n*ol;o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTerdk*/s*t~>
+JcC<$NrSeOrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.77TpB:/=_amo%P1r]C0BrAsm=r&jF0!BN=A3WM893rM,@3]m=%s#^0?rB's=
+r](*]<)cjsrDWPl!)r\k!E2nq;u]hs;Zfop:f.'c!DZGi:'+3f;=HmB6M<_D;Z]p!<r5ns<rQ2"
+<VTVp<<H3#<`\oo!EN1t<W?%l<W6)"=T;D(=&rC(r`BJ0=BAU+=BJ^.=oMS-=]ed/=o;D#=T_i3
+>@%26ra5P1s'Yq;A,KjFAnPdlC27U$Ci+'-rbi![EH6)AFa!_-*dN'ZIt3-'KnY89Ll%"JNK0']
+OH5HaOHG`nS=l^Vri,prs/H%!1T[a`Z*LaF\%0)^]Y;5!`Q#s?bKS5WdF-Oof%8R.gYLcIjlkpm
+mdTi@p\=OZqYU3hrfR3^mYtiX?T;:r?=.$/O+MLf?s-Q"6r7E9EF(jp;EHQa1b(^R4ZkV[8Ou??
+77K^97Q3:e5!;(l4A8[P<E)rs;NUnagS9..@:3AJ?N".U>@(T?>?tE;>$5!1=]ed-<`W:&=&i7"
+<)ljr;Gg:f;,U7f:JgOXIn`[6:f("e;c?[s<``F,>$P<<?XI5N@qB4aBPM=!DJsN8F*)SLH$Xjd
+It<6*L51VCN/is]P*D6!R@B_<TV8-VVl6VrXfen6ZaI6O\\,Vj^r"".`lQ9Fbg+M\dF6Urf@\g2
+gtgiFi8WeXjlYail0@U$m-X60nF?&>ncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcC`0J,~>
+JcC<$O8nkOrVc`nr;6Nj!;ZTg#5@ibp%@tKrph`4nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.B7ZD-X.H$aTE:g[T_bAYUACY`V#@+iV#$qeVZ!FkW;NXlWrK-tQ2Hm9Pl[2;
+rKmSNq3VbZR$j>-QC*u%Q^*o'Q^=#%Qi<6TQB[PsPEM,pr0.02!n,WJrmLho%F3;Ed*9hYbK\5R
+c-"3.aoBTbb6#o2bl5ZnbK7iJaMl0<`lH$:a2Ggn6.SC&Vu<IoV5C-eVuN[qWVWRhWr9!rXT#7$
+WiQ-#!j/Q+rN?1&rN6^9Z*UgH\[oDc]tV>"_8F40rP\oX_o'@.rkS]R_8!b^^_al+`5T^9aN;WM
+cHjqgf%Aa4gtq#Mjll^0%dNELo(;YMq"ad_qu$?hrr)lps8)orrVc_Hs02M.rV?0]p\"7Qr;R]0
+mH1OVdJj1Go;oIY\W2Q5?D=0eSRl65XfhT'&ZJu>>$tZD?!FVO_SO((^V@LAs"=9Co()GEo();=
+m-3]qjlGCVgtLB4da?Fcb/q]E`59C/`PT@%]t(V\\$WQL[d^YR9hnJ\:f1+h;cHat='/U/>?kH?
+?XR>QA7]CeBkqO%DK'T:FEVkRH@1-jJ:`E-L5:\FNK90aPa.T&R[ftATq\?[Vl?\uY->1;['mKT
+]=bkm_8=.0a2lEHc-F\`daZh!f\,!6h;7&IiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUg)?s,R,0~>
+JcC<$O8nkOrVc`nr;6Nj!;ZTg#5@ibp%@tKrphc5nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.>\nP*LOk&/o7Qsoo7[1!q1\TuoS<I&rG_XPs)7sXqf2[XpMpCVEcQ/?r,MaW
+)K9_<EcH)>EGol:EcH,?EGol:E,fo:DfBW5rG_aSs.0:^St5kNs-jFbR[KY5R[BM4R$a;/rKd_U
+Q^=#)QC%T8"dYF<QBd[4Pm!>:Q'7@06.SBuMu&D4MuSb-NV&8/Nrb9%qN)GQOH>TeP*2#nQ'IZ$
+Q^F2.R@9P4RerNPR/30JR/`QiR[fq>StD[LUSFW^Vl6SoWiN2'Yd(M5ZOF4K\@T>c]tV4q^VIY`
+_'[%8_Sa=2`lH0Bb08/ZeCW@+g=tE=hVmJSjQ>Xilg!g&mI9cDrdk*ss!m?P^q@:j]=GG\s7#$t
+aM,'bKnlA>daPd\MlV\MAT(7fGBe:2;1sRRJc:9$J.PIO:K11h;,E"1PEM#gNfK*Zrrq/s^pph^
+rjETO['R*EYHFt-Wi)_iUnXKRSXZ%8Q^@W6"-JY)NW"b;Ll$tEn;;]i:/=\_;,U=k<)lt#=BSg3
+>[:ZC?t*VVAS5[jCM[j*E,fr@G'A4XI!pKpJqJc3Ll%(MO-#NhQ'[l,S=Z@HU84ZaWN*)'Yd(OA
+[^`l[]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Mj5]7`k32'olg4!*mdKW6nac5OoCW%T!quB_
+rqQNhs8)Zjrqu`no_sFANrOV~>
+JcC<$O8nkOrVc`nr;6Nj!;ZTg#5@ibp%@tKrphc5nF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.6q9d@:/=_`rDEAgb>J:$!^&P+r&Xg=q`O7-r]1*@3]m-ur&Y'C4$#Da48h5<
+49%>F3E9'Y<E9#trDN_r<W#er;ts8j;Z]os<;of#;Gg:f:JO[a:]F/k:JO^b6.S@&;u'Gm<WuT,
+<`N.#rE&ks"'&<$<qfSp<*&iq!E2tq<W5tt<<-)!=8uD&=8u;$=8Q,!<ruK,>5VP&=T)A1=BAU,
+=]ed/>$G6;ra5\2"(,GD?iFFN@UinYAS#@^A7]CdBkhF!Ci+$,D/O<4EH;&")K^.IG^4R\H[UBq
+K7nu6LPUeEMi<XVOHGZirK@JNR%0kGVl?ZoW&(HSXKJb2ZF%$J\@K8b]tM4t_o0U<bg+S_daZds
+f%A^2h;I>TkNM0smdTf=p@nCZr;M`V6/mT0?s[2F?!L]BRu`,ABO=nC77:$bF`UqU5Z9d"/MnqA
+5!1qc2+^>077Ka87Rf9q3BfSi4?Q;:;cQgs;GpGTrs78NH=gVo?=.(=>mXb??!LW<>[(H:r`K>,
+=]ef(<Y/20<Dumr<)QRj:f1+g;,C*Y;1D;8:Jakb;H$Ln<E<1'=^#$7?!^lG@Uiq[B4u!pCi+'/
+EH?5FGBnL^I=Hd!K8#&9M2[FTOHPinQ^F53StD^NUo(&hWi`G.Z*UgG\@K5a^;%M$`5Td<b0/&T
+d*^:ke^rI,g>(N@hr*JRj5oFckiq?tm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*0
+s*t~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eofVm<o()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+dEg+^bK7iF`PTI+B82k4X.u>\T:hjNTV8(OUAC\cV>[:jVZ<UnVu<RmWW&piWrfAdPl$aEPjak>
+QC!u)qj@DM/=;]hQ'Rf*Q'RW"Q^*l'QC!r&Pa.Q"Q'7DpP*D/oP*;*Ye^N'tdFH[mdaJ-B%+!5D
+c-4;RbKJ,PaiaV,!m/U-rlYAeaij\*s2t\fai;?A`5TU3d6[r4Vl$?eVZ<^lW;ijmWr8t)XK/A%
+X/rD'WiH'"s/l4%s/c=)YPta;ZaI6O]">Vg^;.V&_o0L4`W!jX`Ph\ls2+fR!lDdirkeZQ!65#Y
+*m)RKc-F\cf%A[2hVmJTkN_F%n*]Z4nauMKp\FX]rqcfqqu$Bir;chJs/uA-rr)Zfp\4CSo_e^m
+p?^qDZL%Sj'D8N=hlMirQ<p;ZT:KP%Y-"k.Xo>C0WEWV2@:!8G>I)/`rk\TJN;kR0p%%\Go^_SB
+n*K9$k2kX]h;$`:f@&'nbf\&I`PfX2_o9I+]Y(eb[C<NNZa@.1[!teF:JXe`;,^Cm<E<.&=]ns6
+?!^lG@U`kZAnYmnCMds.EH6/DGBeF\I=?]tK8#&9M2R=QOHPfmQC+,1SXuOLUnsugWiW>+Z*UgG
+\%0)_^;%M$`5Td<b0/&TcdC1je^i@*g=tH>hr*JRj5f@bkNV6rlg4$,n*fc9o(!%Wo^qhLp@e7[
+q#C0iqY^6ir;HTdrdk*0s*t~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eoeZ73o()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+dEg+^bK7iF`PTI+?#=b-KnKAVo7QsoqM"g$reLB*pkSHsq/H:NrbqjWrc/![oPstOEr9qWE#We9
+EH#o<F)Z,;EH6#<EcH,?E,]f:E,fi9Df>Vorbi.8T:MRES"?.>S=KSJs-iqT"IPXGR$mr?rg<_P
+rK[MOQ'VE7s-<qSQBd`$Pa.Drd6deioSiC$q2PT;NfT6_r/^W7#EOt.OckomPl?sJQ33J@R@=,C
+rgO"YR@0NBRK&ZSR/iWQRJiQSSGo&lStD[MUSO``W2ZesXKA\1ZEpt<Zo5>$\\#Mf]tV4q^q[\#
+_8*n'_Sa:0`Q$!Bbg"DZeCN7(g"bE>hV[;OjQ>Xilg4$,n+-/IrIP!qrrhK$_7dJ[])T5ts7#!r
+a1\g_KnctTf$h9cN3%PGAoC@gGBe70;1sRRJV/Q+J:LBj:K11h;,E"2PEM#gNK0!Ys"2sD^pge]
+\$rfT['R*EYcb(,WMcVhUS4<OSsu.8Q^3huP*D/lOH#6YMi*FKre^-%In`[6:Jakb;c?Xq<`W=*
+=^,-:?=.)L@Us%^BPD3sD/O<4EccGJG^=^bIXm!%KnbD?Mi<[XP*;/sR$sM8StVmSV5L;mXKA\2
+Za@0M\[oGf^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N_VjQ>Ufl07L!m-X60n*ol<nd"dYo_%nN
+p@nR]s7u]kr;6KkrVcBfJcCc1J,~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eoeQ12o()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+dEg+^bK7iF`PTI+77TpD9`%Zd;?'Pd;>O,R;>X8e;#iZR48_/=48_563rh>=48q8E3BB/]3]m4"
+r&ap>"$8P)48V);49&@\<<6'!rD`eq!E<"o;ufkk;Z9Sp<;of%;Gg=g:/=V\:]4&96N'p`<rZ1t
+<WH5"=Sl,%<E)t!<r5l$<)lpt<EE5o<W>tu<)rour`9)%r)`l"rE&r"!a/]1rE9/&r`T8)!EiP(
+=oMP'=qb+F?!UcB?!guH?XR8M@Us%^AS(jO#A.U^BkhF"D#S;ODBNk:EH6,BF`qqPG^4X`I"$Qq
+JV&Q/KnkMBMi<XUO-,V)PSoaPR%'_DV5UAoWN)qsWiN5'Yd1UB[^WfZrk'Mi^VI_)`lQ<HcdC1j
+eCN:*gYLfJjll!pmHsE4nalDGp\OdbNrK:9J7Dql?N+71?8e=6J9#=1=]IjX>A8>(@R37Y3&*!A
+.R-*Z4>euf7n?'=7n#m:2E3]]4[(tj9N>"k<E)jo;iq"ef:dG#@U<AJ?=$oCrEL4E=^,'6>$4s2
+=]nj/<`N.$<E)pt<)cdr;Z0Jl;ZBS_;1D;8:JXe`;,^Cm<E<.&=]ns6?!^lG@U`kZAnYmnCMds.
+EH6/DGBeF\I=?]tK8#&9M2R=QOHPfmQC+,1SXuOLUnsugWiW>+Z*UgG\%0)_^;%M$`5Td<b0/&T
+cdC1je^i@*g=tH>hr*JRj5f@bkNV6rlg4$,n*fc9o(!%Wo^qhLp@e7[q#C0iqY^6ir;HTdrdk*0
+s*t~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^M/UqOK52VTDtSaU%kA[U]7.eV#[ClVuEXmWVrjlX7`OoXo=O[Q2[$;Q2d-j
+R$O,+Q^F,,Q^<u(Q^*i%QBdf%Q'[f%Q^3o$Q]qE5!0dDF$'CC8Oj__/da?PCdK7tIe,Ic+d*^1c
+cHOPWc-+>QbKS8SrlGJhai_ZIbfe2NbPoQba2l9?rl*/Lq54CnVl6PnWUd(fX8]-uWroH'WiQ-#
+!3Q("'<eXFZ*UjH\@K5a]tM4t_Sa=1`W!jga2l?B`Pf^4_Sa:0`5BI/_u@XT`tcV8aN;WKbg4\d
+e^rL/hVmJVkj.[+r:($_p%J1Uq>'mdqu6Krqu$Ekrdk*Nrs8W$q"XUWp%@qSrrr&]lE/5-rr424
+Y.<PlNJj'7U7e-KARVaDY,n_,Y,nU,>?YHB?<pd@`PVVjs1JEHN;kR0p@@eHoCDJAn*B3#k2kX\
+hV?c9f@/-nbfRrG`l,d3`P]O*]t:hb[C<NNZaI42[/WjM:/=\_;,U=k<E<.%=]np5>[CcF@:E_X
+AnPdlCM[m,EH6/DGBeF\I=?]tK7nu7M2I7PO-,TjQC+)0SXuLJUSXleWiN8*Yd1UC\%0)_]t_A"
+_o9X:aihoRcdC1ieCN7(g=tE=hr*JQj5f=akNM0qlg4$,n*fc9o()DD"n_K\p@e7Zp]1-hqYg<j
+r;HTdrdk*0s*t~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^Kti(G(kYLK):5tKDU>uK`Hl)L]*&,L[9fsM=tofDuFYFEr9nnE,fi9DfKc9
+E,fl:Ec>u<EH#r<EH#r:rG_dT$?0p%EGqA=T:MLDrgX%]S=TYL%[rlTR[TV3R@9P4Q^F20r0RGL
+!0mGJ!L/oKPQ@&6rKYYprJU`9rf$f6s,?N.s,R)<s,[/>s,R/ArK$c9!g/S+rfI2DrfmDI$C7$F
+R$jD2R@9V8rgWqV!L]DTRJNBPS,SrnStDXJTV8-VV5C/iX/rG+Yd(LA[C6(B"1G\L]`,SE^AP_o
+^qmh&_8=+.`Q#s?bKeJ]dacq$g"P6;hV[8NjlYdklg=00nauSOrIP!ps$5GV^V.7j]",;Zs7"so
+a1J[`Kq#s'gX3NaMlqSGAoCXpG^":0;1sRRJV/N*J:LBj:K14i;,E"2PECrfNfK*Zrug+:^pge]
+\$i`S['R'CXf\\(WMl\iU7n6OS=5k4QBd^6P7<\:NfB$WMi*FKM27%GnV[?@Inid9:f1+h;cQk!
+='8[0>[1TB?t!MSAS,RgC27X'DfKf>Fa&(VH[U?nJV/W1LP^nINfT<cQ'Rf*S"6.DTqeH^W2co#
+YHY==[C<]X]Y2(q_Sa@4aN;WLcHjnde'ut#f\5*8h;@/LioB+]k3(smlKdg(mdKW6nac8Bo*+dZ
+p%J+RrV-BgrqcTjrqu`no_sFANrOV~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq/&=oCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^I:^e9MYC[pegWZlV[UYp/1fMq)eL8s#^-@p,`78q`Fg="?AM(3B?jqr]:-A
+481c:4$*:>!*9(u!``3"r`&hpqG[Pq;GpHh;?9]qrDW_o#>n8m:/4S\:<l3+<rH"t<rH#"<``Au
+<rZ2!<WuK(<E3!tr`'#!<EA`ls&9,$<``=%r`9)%r)`l""BSW)='5E(s'#8%rEB2'#[1G9=BSg3
+>[786s'G_4#$tYE?t*VVrFH=HARo@bBk_<tCi')frGO3+EcZ>FG'A.UH@($gIt<3'K7nr5LPUeF
+N/ipZOHPinQC"#0St`'YVlHfsXo>F%XTu&7ZEpsK\\%jRs1TDe_SjL;bg4Y`daHXrg"bHBj6,[n
+mI'H3nac\O"nq]cq>:/PrrpSl@:!8IrE^=HSW8/=B3eY?78.0.H?3CY5$']t/Mo+Fr]L3<)+d=h
+77B^87n,Es3^5bk4?Q><;cHat;,U>Srs7)EH"LGl?=.%<>m">;>[.22"C#&5=]kZ+!E`G&<=)]+
+<`N*t;GpImrDEPl!`)ZinPT<\Inid9:f1+h;cQk!='8[0>[1TB?t!MSAS,RgC27X'DfKf>Fa&(V
+H[U?nJV/W1LP^nINfT<cQ'Rf*S"6.DTqeH^W2co#YHY==[C<]X]Y2(q_Sa@4aN;WLcHjnde'ut#
+f\5*8h;@/LioB+]k3(smlKdg(mdKW6nac8Bo*+dZp%J+RrV-BgrqcTjrqu`no_sFANrOV~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^MSt'OfA8N!20=bqP!tbrhTIgs/,dn!3#mrrMoOkpoO@priZ6`s-!GIqN_)F
+qNV&FpQbcEr0RGN!L9&OQOB1GQBdc%Q^<u$QBqH6rKIJLP*1rjeGdo"daZjsdJ_PndKn1Hd*^1d
+bg"E3b8SLHbK7lMaiV]IaiMTGbK7rNaiqfIa2c<Aa36jOW2HQmV$NrrW2Q\pWiE&kWr9!uWrK+&
+WiW8$WrB+"XoGO(YPbX)Z2V*0[KX1P]Y(qnrk\`S`5MYps2Y,["ieO#`5BLj`;[Xl`5Td;aN;QH
+bKS8Ye(3.)gtpuLkNVF)o(2hPs7HNgq"a^\rqcZls8Drp!<.QLWrE>'qt^$]p@\+Urrr&]Y-#h?
+rr4/.WOLllNf'09U7n3LARM^EYH+_*Y,eO+>?YHB?!U[?`r<gW_7mUsN;kO+o^q_Io^_SBmd'*"
+k2kX\hV?i<f$_pibK.cD`5KX4`P]I(]Xk\a[C<NMZaK;0s%Rr;:Jakb;H$Ln<E<1'=^#$7?!grI
+@Uiq[B4u!pCi4-0EH?5FGBnL^I=Hd!K8#);MN!OUOHPinQ^F84StD^OUo(&iX0&P/Z*UjH\@K5a
+^;.V'`Q$!@bKJ/Ud*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O--n*fc9o'uhQo`"Lbp@n=\q#C0i
+qY^6ir;HTerdk*0s*t~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^L(o,G(TXEqh+s%qh4g"rJ(?-l%o"h!/gDfs)7jTs)I[Oq/Hm_EH#l:Ec?#;
+EH-#>E,YSmqJZOTE1EEsS-,=RS=KPKrgXRhS!oh7S!]V3R$a;/R@'>-R/WHPQN!-XQBdc%Q'RW!
+Pa%GuQHV\qMu\e8MZ&J5N;nk;N:i/1NrG%<NrG%7O84n;OoCODOV*eAPa.JuQ'Rc(R@0M4S"#q<
+r0m_US+iBNS,]#[StH"T%ABMlV5L8jWiW>+Yd1Y8[f<fB[^W`U\\,Sg^&>\F^])%K_'6b7`Q-'B
+bg"M^e'lk!g"Y9;i8WhYkNM0rm-X<5o_&%Wrdk*ps$58P^:_(h]",<Ms7,$o`4E:1Kq#^$gsNK[
+Mm%bLAo:RnGB\1/;1sRRJV&K)It(3h:K::j;,E"3P)tccNfT0[s"W3G^UUhb\@8oT['I!BXf\\)
+WMl\iUS4<OS!o_1Q'7GsPE_5kNf8sVMi*FKM27%FnV[?@ISN[8:f1+h;cHat='/U/>?kH@?X[DR
+A7]CeBkqO&DK'T:FEVkRH@1-jJ:`E-LP^nINK90aPa.T&S"-(BTqeE\VlHf"Y->1;[C3TU]=bkn
+_Sa@4aN;WKc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<h
+qu6NlrUp/@s,R,0~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^I:ae9MP4W!)`/\gemr0qE+^<!'C0@s#^3Bm5t8-!'0d7r&a[7s&T(u!*8ts
+r)EYo!E<"p;ufkl;?9WmqGRSr;,C"`:/B)#!*/qrrDies!*/qt!``3"r`0)#<`Suqpf75mr`/u!
+#$4i*<``@)rE'#$s&]2#!*B)$q-*c#s'#G*s'#G,s&fJ.>?b?<rEfM2"^YPE@U`mHAOC'@AnG[g
+Bk_<sCM[g(DK'Q5DfKl@F*)PJGBnL]I!pKpJV&N-L51SAM2[FSNK93cPa@c*S"?7IV5C/iX0&S0
+Ycdu-0<_Uc[C3WW]"G\i^VIe.bK\>[e'upuf%8U0hVdGUkj%R'nF?)@o_%qPq>1!drf7"&]lmdj
+?!U]A?<sY(NIPnZ?!0Wb:L8'iEEb[p=?&#e2(q2n4T@8V8Ol<?77Ka87Q3:f5<V1m4AAdR<)lpq
+;H&\W&($_fARf%R?=-uD>[1K=>lIt,=rgaJ>$4s0=&i:%<)Zar<)Zao<)ZXl;,L4h:esqbnPT<\
+ISN[8:f1+h;cHat='/U/>?kH@?X[DRA7]CeBkqO&DK'T:FEVkRH@1-jJ:`E-LP^nINK90aPa.T&
+S"-(BTqeE\VlHf"Y->1;[C3TU]=bkn_Sa@4aN;WKc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'
+mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,R,0~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^Mf(.P+_fHs.KCcqkF+cs.o[krhf[ms/>ssri5OiqlKXrriZ4'!3lBas-*JI
+qNV&FrK[AHpQb`Ds-EkSQ'[i)rg*eRQ^<u'Q2R!kQ^3r&Q'@MuQ'@MuPEM0^f%&=#d*gFnf%/@!
+e^;gne,Ibpcj%hAb08#Pao9I!bfe5Sb0%iKaiMWKbKJ#NbK%fI`lH-B63*q^V?WrsWMuntWUm.i
+X8f4"X8f3uXT,F&Y5PO(Yl:p+ZOaFN\%&u\]Y2(r_Sa:0`5V_q!6>&Z!6>)Y!6+iRrkg#"`lH0A
+b0.uQcdC4kf@o';iSrt_lgOE9o_%qPp@n:Uq"ad_rVHfsqu$BjrVhBJWW)tqrq?KfoC`"\"n_/`
+Y0$S?rtjgqf&!NiMj@YCTq@ic@'?c9XfSV+Wi5o#$t3LK>[+MQ_ns7,^V#L)0)>,2o_.tLoC;57
+ki_*ij5AeLg=b'*d*BhVaMu6=`P][4^V.:k\[T#T['d6Jn?i3iISN[7:f(%g;cHat<`iL->?kH?
+?XR>PA7]@dBkhF#DK'T9FEMePH@('hJ:`E-L5:\EN/s'`PEhK%R[]k?Tq\?[Vl?\tY->1;['mHS
+]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3nF?)?!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUg)?s,[21~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^L2#-G^oXDon<@!qhG**l%o%ir/1#`!,qgTs)IaQr,DaVDuObTE;snZE,fjq
+E<(%XEW:"XEW9tmEH#i9T:VUES=5q=SXuFDS=Z4?S=TYKs-itUs-O"WR?s>0R$mr@s-EhRQ^3p8
+Q3`bAQBRW!PE_?T6Mu`GN/NUQN/`e^NW5%<O8b4@Oo:CAOnt4MPE_>tPa.Q$Q^F2/R[a;HqjRbZ
+S"#k7RJWEkS"-">St;RITV8*TUo(&gWN*&&Yd1UD\%&pG\Gs)C]"G_i^:jN[!5JNKs1okq_o0R9
+b08,Vd*^=nf@\g4hVdGTk32*smI0N7p%S:ZrIP!mrr^Zd]tF?U34ZR!s75-q`OiI2L7?!-gs*$P
+TrW`]B5UCgGB\1/;1sRRJ:`B(It19i:K14i;,E"3P*(ieNfT5#1B#hD]skP_]"#2W[Bm3EY-"b*
+Wi)_iUS+6NS=5h2QBRPrP`q8kO,K!VMi3IKM2@+HnV[?@ISN[7:f(%g;cHat<`iL->?kH??XR>P
+A7]@dBkhF#DK'T9FEMePH@('hJ:`E-L5:\EN/s'`PEhK%R[]k?Tq\?[Vl?\tY->1;['mHS]=bkm
+_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<h
+qu6NlrUg)?s,[21~>
+JcC<$O8nnPrVc`nr;6Njs7uZh3;<.?p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^ILjd924AAhGF8NpcA75q`4^=r]Kg7s#U-@r]1-A3]]:r3r_;A3r_;A3X%T+
+3]g>Ar`0"urD`r#<E)ut;ufqt<;]\l<<#nm;?B]n<;TSs;Gg7c:Wc!/<E<.#<E<.%r`0#!qc3bu
+<)rispJh#is&T,!r`0##r`9&!!*B/%!EE1u=8u8(<``@*=^(f-"C#&4>$Ci,!*]A)!*]2&s'>V1
+rEf_9@:<YWAc?<?BE)ZFC&_p_CM[g(Df9T6EH6,BFEM_LG^4U^I!pKpJqAW/LP^nGMi<XUO,oEf
+R$jD4SY)UNV5C2jX0&S0YHP+2Y->1;[^`l[]Xtkl_8OI>d*pOsf\,!3gY1K?iT0.clL"'1nalAE
+p%J1Wqu$DOs!t?l@U<AJ>[C`BY+L]&E+WBY7RU'_GC=F45"JU40eP=65<V+k2)Rrq7n3JH$:I?D
+3''8e5!(l$r_inu<DcYTrs?i5F(\rh?<gfCr`oP/?2e%4>[(B8=]el,=;P%=<`W4"<`2mq;H6Xn
+;,L+d;,C+d;,Hd[s%Rr;:JXe`;H$Ln<E<.&=]ns6?!^lG@U`kZAnYmnCMds.EH6/DGBeF\I=?]u
+K8#&9M2R=ROHPfmQ^F52SY)UMUo(&hWiWA-Z*UgG\%0,`^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?
+hr*JRj5oFckiq?sm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*1s*t~>
+JcC<$OT4tPrVc`nrVQWks7uWg!Vc<eofMg;o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,A8mF(PFJ2:TV/!PU8%X^#bn)hUnsobVl0Nms/?!uoW.qlr2odtric.%!jRuR
+r0%&C!0m8Dqipi?rg*SNs-<eSQ'[c&rfmYRQ'[c%QN!-SPEhE"Q'@W"rfmYLeC2t!ec*u(e'cap
+f$r0se'ZSBdK%\ocjJ+Ac-",NaiquNbPfQiaN;NFbK7rNbfft,!64FnnjD\/"K/,pVl9Qno;_\g
+#HFi+XfSV+Y5YU)Yl1g>ZE^^A['[6L\%&u[]Y(qm_84%g_uRdU`W4'WaToo-a2Z*:`Phbp(rXD5
+a2lBFbK\A[dFHh#g>(QDjQ>[ln+$DL#57feq"aa^rV6Kjqu$?mrVhBJVuHu!q"OOVo^r%\"SD&^
+Xip\C-fh5]f#Eu5QX->ZTU]P#YHb13XfSY)W*<G0@:*;F>I)5c_SEq$]SleBp[RnIp@e+Lna>c-
+kN:mciSNADg"+U!cH=5L`lH*<_o0C*]Y(eb\[SuR['R./[JimL:/=\_;,U=l<E<.%=]np5>[CcF
+@:E_XAnPdlCM[m,EH6/DGBeF\I=?]tK7nu7M2R=QO-,WkQC+)0SXuLKUnsufWiW>+Yd1XE\%0)_
+]t_A"`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojdq#C0i
+qY^6ir;HTdrdk*1s*t~>
+JcC<$OT4tPrVc`nrVQWks7uWg!Vc<eoeZ73o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,=^l8sG^fOBq1S^#s+^H,lA5Is!/UH-pkf&klu;oCrc/!Yrc7gSs)8EeDfBW6
+DfBZ8E,oo;EW0n^DfB]:EGol:rc&*ZS=?(@Sc5,YS/RrgSt2FBSXZ+=S=>t8R@9S2R?s8-Q^XA0
+R/NBLQ2m3KQMm'KPO:d.6g@#:Mu\e7N:`)0N;8J2NW>.8O8tF@P5gaGPlI!RPa.Q$Q^F2/rgNhU
+q4%SVR@9V6r0mbXSY#hQ!29Ces.r)[W2ZbsY->1;[C3QS\@K/]\[oAa]Y2"m]tV7r^qde&_Sa=3
+`lQ<GcHsqcdaZk#g"bKCj5oIglg4'/nalJLqY^>Ds3(EEbJCs*rji'<s8OqHim>]XZ\F4+`n9+i
+Xa[+BQ#C;R9R1i+F];4kK7ST+JqAN':/=Yb;H$FhL6e!cOcPN_NrL3re]#84\[]2\\$i]NZa$[8
+XK/D"VPU&]T:VUBQ^3s:P7!P<OH>N_NJrjTMZ&D$MZ->!:/=\_;,U=l<E<.%=]np5>[CcF@:E_X
+AnPdlCM[m,EH6/DGBeF\I=?]tK7nu7M2R=QO-,WkQC+)0SXuLKUnsufWiW>+Yd1XE\%0)_]t_A"
+`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojdq#C0iqY^6i
+r;HTdrdk*1s*t~>
+JcC<$OT4tPrVc`nrVQWks7uWg!Vc<eoeZ73o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,6UjU<9MFVGi)08I!'Bp9qE+R8r&Xm>p,i:8"?SY+3]d7#!BN793rV2B3]fD%
+3s%HC<W#nq<<Q?&<E)uq<;]\p;ufkq;ufkp;?Kco;,[?k!*&qr!`DllmR$J3l9bDL"'AW)<Vf_t
+<E)ur<rH"t;uK\m<W?,!<W?,!<W?,"<W,r#<E<1&r`9&!s&K5'=BSi,=U858=^#!3=BSf(>5qk,
+>Q7t.>6J8>?=.(=@/aU7A-6CTAS1pSr+KhZCMRa&D/X?3EH6)@FEMePGBnL]I!g?lJV&Q/L5:\C
+MMmITOHG]jQ^O;3SY)RKUnsreWN3/)YHY:8Yd(I>[C<`\^:h4o^Ve%6d*pS"gtpoFi8WbXkNM3s
+mI'K4nac;Dp@n@Yr;DNQ"J9F:?XNe=10n.iToXbDB3n\/6rI]EIV`"H:JF54/i>.C4Ztnb2+U2,
+7n,p97Rf?s3^5bk4$65:r_ikt;GiMT&B0fRA7JtS?!^lE?<pfA>$Lr1'3\O@=]\a-=&i7$<E3'u
+<)HLl;Z9Mn;Z9Pm;".?]9n#i5:f("e;cHat<``F,>$P<=?XR;O@qB7bBPM=!DJsN8FEMePH@('h
+J:W?+L51VDN/is]PEhH$R@Bb=TVA6YVl6VsXfnt7['mHS]"G_k^r"%/a2lEHbg+P^daZdtf@em4
+h;-uHiSrnYk2tjkl0@U$mI'H3nF?)?oDeI_p&F^cp\ssfq>^<hqu6NlrUg)?s,[21~>
+JcC<$OT4tPrr)ior;6Njs7uZhs7ZNerq/;DoCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^LMADW0<U@TV/!QUAL\hUnsobVl0Nnri5msqQ0XtrN?+&r361(!3l4&!4)Qf
+"I#"2P*5g.s-3DGrKIAKPa(p-#*tL<QBml&rKdMKrKdtYPa.T$Q^*i"PEh>sPl?q'PLJ(4eC;ps
+e^i4"eC;moeC;pte'cXlda?IhdEp1`c-4DTbKS)Obf\&Mbg";OaiM[)aTK`.aN+-DfgGF!s/>pr
+!NN-kWrB'uXT,=$XSo7%Y-@o1!4)U1"1#8>[/RHI[^WcW]">Vg^qdh)_o9U7`Q-$?b5TWab6Z22
+a2Z*<`l5pq`[JmKb0/&UdF-Rtg"Y??iT'%_lL"'1o_/%Rq"OOXq"ad^q>0sbr;6Ekr;chJs/5l$
+rV-$Yp%%bPrrhu]Xfg"Ls![m*Yi3dCQ!]e^U7n9NARM^GXK8P*Y,eL*>@M#J?!U[?`PfX/^V7@=
+s"=':o^h_JoCMJ?m-<fsjlG:TgtLH5e'cRcaN2BBa2Ps6^qICm]"5AZ[C*BJ[d^\R9MJ5V:Jakb
+;H$Ln<E<1'=^#$7?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!KSG8=MN!OUOckroR$jG6StMdP
+Uo1/kX0&S0ZEpsI\@T>d^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWAi8EVTjQ5OekiqBum-O0/n*olH
+ncn^Xp%A%Pp\jmeq>^<hqu6NmrUg)?s,[21~>
+JcC<$OT4tPrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^KG#bI<g8<KDU?$L&Qi+L[KuoM>W81M=lc)EU@`EEW'qSEW:"WE<'tWE<1#r
+rbr<dE,T]9EH6#;Df9T5EW0ntEGqA<SXc4>SXl@BSt2FAS"6+?T:MLAS=H%:R@=)B&X\uRR$j;.
+R?s5*R$a2)QBdd6Q2d*F6J4a!6N;rHN/NXSN:r81N;AP3NrG+9OT1IAP5^[DPQ7!IQNrnHR@9S6
+S"0GJrga"Zs-j"WrL<bU#G%HYTV/'UV#I2,Vl6SpXfen6ZaI6N\@B)[]"5Mb]Y(qkrkBhp^VI\%
+_SX4/`lH3EcHjkbdaZgug"Y?@ioTCflg=-/nalJLqu-MFs3(F-qSpCe]"#5Z\@;M<o]+B>]<[0F
+TuPmDa/OiqR$MYaDbPG$GBHk^KS+i,K7\]*J5/m@<)QXl:kk7!PECodO,j5Bp!Ujlrj`!=*OiJa
+Za6m>XfSS(W26>dTq@pIR[BD,P`q;qPE:k)N<bB#Mi*@JLktPXIS<I1:/=\_;,U=k<)lt#=BSg3
+>[:]D@:E_XAS5[jCM[m,E,fr@G'A4XI!pKpJqSl6M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UC
+[^`o]]t_A"_o9X:aihoRcdC.heCN7(g=tE=hVd>Oj5f=akNM0qlg4!+n*fc9rpg9bo_%nNp@nO\
+s7u]kr;6Kkrr)KgJcCf2J,~>
+JcC<$OT4tPrr)ior;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^I1L^92&(C;!V!V;Z9Pe;?0Sm48:l548M#:49%A>49%A@3rh>?48_/=3VYW9
+4$*@&!':!Ws&K,$rDrks!`W0"qc*JlqG[GnrDEet;Gp@i;Z0Pn;?0Sj6J4a!6N:'c<WZ9%<Vf_t
+<E)ut<rZ2"<;fbo<;T\q<rZ2!<r,hr<<#r&<`iF)<`W<$<rZ5%=BYE&s&f>(r`T2'rEBS5?!U]?
+?!^iE?iFI4@SpWGAS,OeB4tpkBPD-oBkqL#D/F0/DfKf=F*)PKH$XgaI!pElIt3*'KnkJ@M2R@R
+OHG]jQ'e#0S"6.EU84Z`W2ZeuY-5+9ZF%!I\@T;dr4jGk`5g'Ke(<=/hV[;OjQ>Xilg4$,n*ol;
+o(;SKq"jpfM>oi+An#+R?<plC?*g;fJT>C/=@GVXBRYDF;a+2N6o$)G.m?'Y4>eud7Rop;77B[8
+3&j/f4[(qi9iP%i;H-OlOT,Uc`/nqL@:3JKrEfJ.!F8t0?2n+A=]ed/=]\[)<E<+"<`E!o:Jt*i
+;#jGl;$'Qi;".>29MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!
+KSG8=MN!OUOckroR$jG6StMdPUo1/kX0&S0ZEpsI\@T>d^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWA
+i8EVTjQ5OekiqBum-O0/n*olHncn^Xp%A%Pp\jmeq>^<hqu6NmrUg)?s,[21~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^LVYLTp(rET`ChcU]$tmV5C,fW2ZcnX8]4"Xo#:"YPGEuZ1kO(Zi60fPlHsI
+P5UUDPlI$GPl?pJPkUFOQB[]!Pa7Q"QBdf&Qi<6eQ^!i%Q^<o&Q'R\uQ'7H_e(*!uf$`*ue,@f%
+dF-Ome'ujqrR(esda?JAcMl'#bfRoKbK7iKb08#LaiMTHbKKn,rBeq"p-S_WoW%kj!N`F&X9Pf0
+Xf\e3ZMh*1['Tb=!k#PKrjVs=rjiiV]YD;#_o0O6a2lBEb0%oPc-4DVbPoTaa2\,!!65#Y(s'hA
+bg+S`e(*%&gtgoIj5oIflgF63o(E"Us7['!q>1!aq>0sbr;6Ejrr)hIs/5l$qtKgWp%.bOrrhu^
+XKC"Os![cGZ0%mlRV%grU7n9OARM^GXfSY+XfJC)>[h,K?<pd@`l,a0^V7@=s!d[7oC_bLoCDG=
+m-*Wojl>:UgtLH4daQOdaiMKCa2Z$7^qICm\[])Wrj;d6ZgbAP9MJ5V:Jakb;H$Ln<E<1'=^#$7
+?!^lG@U`kZAnYmoCMds.EH?5FGBnL^I=Hd!K8#&9M2[FTOHPinQ^F53StD^OUo(&hX0&P/Z*UjH
+\@K5a^;%M$`Q$!?b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O--n*fc9s7-3^o`"Lbp@n=\
+q#C0iqY^6ir;HTerdk*1s*t~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^KG)dH$Xr<KDU?$L&Qi+L\Q\tM<9]mEUIfEEW1"SE=6`*DfB]7E,]`7DfG\o
+(iaJ6E,ou;Ec?#;DK0Q4St)@BS=Z4@S=KSL#+h<SSXZ.?qj[h\S!oe5R/E?\Q^4#+Q^4#*R$O#'
+Q2[*JQ2O%t6hWkHMuSb/NW4t5NW"n:O84n;Oo1@BPPgXGQ'VE:!1EhT!h5^Nrgj1`St>kN"e;'P
+SXc5KSK+5nTV8-UV5L2fVl6SoX0&V1Z*LaE[^`iX\[oEN]E#YD^*^V1^qmn*_o9[;b0/)Vd*gCm
+f%8U1hr3VXkj%L#mdTi?pA+Uardk*mrrqo1^q@7grO;h,0_XSVa1Sd6KquiJh8=u&Z$V7G:N06X
+GBe70;1sURJqJZ,It19i<`E!q;,E"3PEPp,!03*>+Rmar]",>\]"5AY[C!9EZ)t+.X/MnkUnF?O
+S=5k3Q'M?5%?lp8N/imVMi3FLMM[/YMLS;o9hnJ\:f1+h;cHat='/U/>?kH??XR>PA7]@dBkqL$
+DK'T:FEVkRH@1-jJ:`E-L5:\FNK90aPa.T&R[ftATqeE\Vl?`!Y->1;[C3TU]=bkm_8=12aN2NI
+c-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@
+s,[21~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq/)>oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX/^I:Xc92&.D;"IQS;YEub48Cr548M#;48q;=3sdr03]]>`4$#Dar]:'>"$/G'
+3Vkc=3BK8_r)Wbrs&T/$"'/E%<rQ+r<!$'!<;]\n<!-&u<)`co##eDs;Gg=ir)<P\dR3^p!*9)!
+qGmYt<)rou!EE+s;u9Pl<W?+s<<6-%r)Wbr"'/K*=Sl/"=T2G+>$5!3>Q%b(=T;P(=pA,5>$G39
+>l@t,?5R$W?t!JQ@UinZAnG[gBP;*oC2%EtCM[hdD%:H%E,p#BF`qtSH[C-fIK"^mJ:`H/LP^nH
+N/Wg[P*D5uR@9V8SY)UNV5C,gWN32*Yd1UC[^Wi\]tV;!`5BL0`5Tg@d*gIsg>(NAiT'(_kNM-p
+lKmp+n+-,Eq"ajdreg^Xn;:gcra,S0,@@dQOb.Xe?!0Wb<GR/8B15$g3B8fC1bV'W5!1_\84Q0>
+7fGg_7Q<@m5<_1k4AGcQs&&hoOT-!g^5[#A?sm>J?=.#E?!^`=>?kG4=o__)=:A>6=BAL'<E3("
+;c$9h;@$)s:f:4h;,C'X;1D869hnJ\:f1+h;cHat='/U/>?kH??XR>PA7]@dBkqL$DK'T:FEVkR
+H@1-jJ:`E-L5:\FNK90aPa.T&R[ftATqeE\Vl?`!Y->1;[C3TU]=bkm_8=12aN2NIc-F\`e'uq"
+f\5'7h;7)JioB+]k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,[21~>
+JcC<$OT5"QrVc`nr;6Njs7uZh3VW7@p%@tKoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^LhhQQ'S*BUA^kcV>mCpVl6Sori?%"rN6+&s0)F+!3uC)qQ]k%pTk:8PEV/m
+PEV5qPEV/mrKHr>rfmJLrKRAIr08ChQB[]$Pa%GuQBRW!Q^<u%QBdc$Q]m]#Q'.B]daH[qrmh%u
+"kD,Re^DqEdf7f"dF6Rldf.Pqda6CgcMYodb7;V8aNDWJb/h]HaN2KHaiQpG6N=%XWrB'uX95T+
+Xf_T+!O8s0ZN[_D[C!?OrODp>rj`$?rjrWQ^VRe*`Poj<b0.uPbl,fdbQuJ;b0%oKaN;X'aoBO(
+bg4\cf%A^3h;@,Lj5f@clL"$.nac>Gp@n=Vq#'sfq??corVZWnJcDVI#QFVpp%@tKo)&Fip$o)b
+fDbduq5_9qSu%O:Q=Q\`Tq,b&YHY12XfSY*LKe"n@:*AH>I)8f_SEq#]SleBp@\"Lo_.nHnEoQ*
+kN:meiSWJFf[\EtccjMPa2uEB_o0=']=PP_\@&`O['d70[/`o"9n,o6:f("e;cHat<`iL->?kE>
+?XR;OA7]@dBPM="DJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhH$R[]k>Tq\?ZVl?\tXg#(:['mHS
+]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0I^&mI'H3nF?)?oCW%T!quB_rqQNh
+s8)Zjrqu`np&9OBO8j_~>
+JcC<$OT5"QrVc`nr;6Njs7uZh3VW7@p%@tKoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^KP;kGC+r<K`-W)LAco)M#3&,M?&RnM?&S1EUIfFE<(%XE<'tUE?B.>E,fl:
+DfBW5DJsE3E,TZ7E,fi;DfB]8DK)2;S=]\Ms-s4_S=Z:@r1":eSXl7?SXZ.<R[KY5R[KTCR/`TS
+Qj&eBQC!o(rKdAHa[>kj!K2p1NW"h4NW+t8OT1FDOHKI(!0dDF#a:L:PE_>uQC.Z>!1WtXs.'.]
+rh'+["eVBWSXc;NSc53#T:hmQUnjibW2HSnWN*#$YHP4;['dBQ\[oAa]DB/g]tV4q^qmk(_o0O7
+aihrScd:+he_&R0hVdDSk32*rmI'K8o_81YrIP!krrhH$^V.5X[lCn,s8VfSeAo81L4lDGin_G)
+O1'7WCN=>kH$FRV<)J=%JqAW,JU_E1:KCCm;Gg;GP`q5kOcPN_rr_Z8_n,fW*kJef['R'CYcY%.
+Wi)bjUnFBQS=,b2Q'RYuPa%;krf-r:!/gc4!K)^&M?$?L9n,o6:f("e;cHat<`iL->?kE>?XR;O
+A7]@dBPM="DJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhH$R[]k>Tq\?ZVl?\tXg#(:['mHS]=bkm
+_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zj
+rqu`np&9OBO8j_~>
+JcC<$OT5"QrVc`nr;6Njs7uZh3VW7@p%@tKoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^I:Xb8kr.[:[V'Q;=[WQ;>E<L3qtf73rM,B3]T5^r]:6D4$#GbpH&=7"$/G'
+3W(o@3BC2@<VTVp=8u=t<W?"u<U`uf;uTYp;uKSp;,[Bla[>kj!E<(r<rZ2!<WH.q;uBVl<W?,"
+<W?+p=8u;$<W6%n<rcA#=oV\*=oDG'>$:i.#?b56>?kE=?2@n-?NX\E@:K4G;.X?OB4kmkBk_<r
+C2.O$DJa9.D/O93EccJKG^4U^H[L9lJ:W<*KnkJAN/`dTO-,WjQC+)/S=Z@GU8+Q_W2ZetYHY7:
+['mHR]"G_l_8F7k`ui=Aai_lTe(3.'g>(NAiSrnYj5f=bkj.X,o_81XrVhZR/_bhd?X@&G?!UcD
+[%`\8F_G)c771*mKRRN#6=)T-0K(dA5!1tj2Dn&r7n,uI71_XC3']\l4$,Q!;H$Oo;GpARrtk::
+LMgU0?=7,H?X@#C>?tE:>?kB:>$:i,(g0pC=&`4"<E3!s:f(%e;Gp@g;,U4e;,?[Y!)3AdInid9
+:f1+h<)lt"=BSd2>[1TB?t!MTAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1Ll%%KNf]EfQ'Rf+S"6.E
+U84W`WN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olg4!*mdKW6
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTerdk*1s*t~>
+JcC<$OT5"QrVc`nr;6Nj!;ZTg#5@ibp%@tKrphc5nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^1MbWPb4nKrM'IjV5C-hVuN[tWN*#"ri?+%rN?1(!3l@*!4)L,q6Kh&r3ZF1
+!4MiirfR>HPa)$.pltZ@!1*SKs-3MJ%$ZsAPa7W"Pa.MuQ^%H6!0mDH'pFoKe'c^od*gClf$r:#
+e^W*sdaceFe,Ri&eBuaoeC)dld*M[;$-^Z:b07uNaiha(aTou/b0.lHa2l1dr'LF`!3,anri?%"
+riH:+YctD3Zi@E4[K3kIrjhp;!P?#D]a_cn_SjF5aN2KGbKS5Urm(Mfs3:VhrQGGicHaYXc2Pun
+cdC4kf@o$;ro,![k32$nlg=-0o()DFp%J+Sq"aa\q>'mar;?NkrVhBJVZ-o#q"FCRo^VJKrri)d
+WiXtSs![ZB]]l>_NgGu?US4?NARMaIXfee-XfHMG>@V)K?X$a?`l,a0^V@F>s8VdDoChkMoC259
+lKIEojlGCXh;$Z6da?@aaN2KFaMu*8^V.7k\[],V['d6J[.(L'9`Ih9:/=\_;,U=k<*!%$=BSg3
+>[:]D@:E_XAS5[kCM[m,EH6/CG'A4XI"$TsK7nu7M2I7PO-,TjQC+)0SXuLJUnsufWiW>+Yd1XE
+\%0)_]t_A"`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojd
+q#C0iqY^6ir;HTdrdk*2s*t~>
+JcC<$OT5"QrVc`nr;6Nj!;ZTg#5@ibp%@tKrph`4nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^0>8nGCG8CKE-`(LB!&*M#)r.MY`7sMYE&/E;=M@E;FSSE;jhcE,T`8EH,r9
+E,TW5DZ"GNE#!;1ELiVjSXZ.?S=Z7BS=Q1?S"#t<rga"X$D!ZVS=Q1?S"#h7rg=+[R?s8.Q^F,,
+QC%T:"-o1<Q2[#d6i9:ENW"h5NW5%=O8Y1=OTCW0rfd>Gs-*JG#EtC:QBml)RJrWWS"-%?rgrqX
+!20=`!1s1^!1s1^*2'""USO`aW2ZerWiE/&Y-5(7Za@0M\@K2]]"@pR/%`I-]t_:r^qmk(`Poj<
+b08/XdF6Rpf@em5hr*MUk32*rmI0Q9p%S=[rIP!krrh,q^q7/U[ii-Zs7PF&aM,-<KW*,UhS=f(
+[=312E,JKtG^+@1;1sT"Je<K<:JY"i;Gp@hL6Rj`OHGN_NrLiucb[0'\@T5][^<EIYd(F8XfJJ#
+Vkg,^TUq[AR$a2)Q'7DrOcPN^NJrdQM2I.IM"$<%9`Ih9:/=\_;,U=k<*!%$=BSg3>[:]D@:E_X
+AS5[kCM[m,EH6/CG'A4XI"$TsK7nu7M2I7PO-,TjQC+)0SXuLJUnsufWiW>+Yd1XE\%0)_]t_A"
+`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojdq#C0iqY^6i
+r;HTdrdk*2s*t~>
+JcC<$OT5"QrVc`nr;6Nj!;ZTg#5@ibp%@tKrph`4nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^-kI_92AC_:\.EV;=mcL;?&]Q48M#348h5>49%AA3WD,E4$#Da3]fG$3WqN*
+4$#G!3W;):<VBGn=8Z+u<W?"u<UWo`;?0Yp;?0Y66i9:H<WZ9#<;9Dj<!$'#<rH%p<rQ/%<``E%
+<rZ8"<rZ8$<rH,"=T)D&=o__(=T2J#=p%u6?![G9s'H4C?XI2L?t!MR@q0%\Ac?9BB5%3W7VZ^T
+D/F0.D/O94EccJLH$O^_I!pHoJV&N-KnbGAN/ipZOHPckQC422S=ZCJTqeE\W2cr%Yd(I>['mKU
+]=bkn_8OC9qoTc"cHt%jf@ep7hV[8Mio9"YjQ5Xmo(DhULAr^GG[b#d?<piC?XC%3O+DFe?Wold
+=)`kBAOAah2D[!E1bV$U4$5DY8Gu$W71_I=3']\k3]fK!;GpFl;H$GSrs%u"Kl(=-?i44X>[(B;
+>?b?:>$5$4=BJ^/=&rC$=&`1"<)QOh;Gg=i:f1(d;,C+cn593Zs%Rr;:Jakb;H$Ln<`W:(=^#$7
+?!grI@Uit\B4u$qCi402EccDHGBnL^IXm!%KSG8=MN!RVOckuqR$jG7StMdQV5L8lXKA\1ZF%'L
+\[oGe^VI_)`Q-'BbKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60n*ol<o(2nRs7QEc!;HKf
+s7u]kr;6KkrVcBfJcCi3J,~>
+JcC<$OoP(QrVc`nrVQWks7uWg!Vc<eofi$>o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^1`.cRAm3\U8+KZV5C/hW;`arWr8t"XKAW(YPbU)Z2:j+Zi.3+Zi.90[J[K2
+\,;HgP5(79PQd><Q'R]#rg*SLrfe%ZP*M8tPE_;tPa%JsQ'RZ!Q'VE6"-o+9PlB,Bd*gClda6Oo
+e^`0teCDssrR2G0e'c^peCE'se'QIid*L%_dETi5bQ#WcbK.fIrlY8^!mA[+njDP-lU1V;!3,an
+s/Z+"$a$S8YHY:;Za@0M\G`r<](ru<]a2?e_8=+.`Q$!tao]f3cMl/fc3VbCcd0n_cd:&<cN)>k
+d2UTcf@es8i8`q^k3)!olg4$,nF?&>oCV_Kp@nR]s7u]ls82rsrr.KKV#LYnp%@qInaZMV"ShPf
+X53dT./'[SkcUD6Q]kmSTV,S%@'Qu=Y-"e-X)2!C@q&eO>?eDQ_nj.'^V5[,0)kS?o_.tNoC229
+lKRKnjQ#1UgYCH6e^;^daiMWHaMu*7^V.7k\[f2W['R-Hn$RX<9MJ5V:Jakb;H$Ln<E<1'=^#$7
+?!^lH@Uiq[B4u!pCi4-0EH?5FGBnL^I=Hd!K8#);MN!OUOckroQ^O>5StMdPUo()jX0&P/ZEpsI
+\@K8c^VI_(`Q$!@bKS8Xd*^=lf%8R.gYCWAi8EVTjQ5OekiqBum-O0/n*olIo)J:bo_%nNp@nO\
+s7u]krVQQkrr)KgJcCi3J,~>
+JcC<$OoP(QrVc`nrVQWks7uWg!Vc<eoeuI6o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^0GJtHA76/K_pK&LB!&)M#E2/MYE&&MXZN(N;delEVaVSEV+5IEW0qWD\-o-
+EGof8EH#i9DJsH2DJsLnDZarsE,Y`Hs.'+[!h>aOrga4_S"-%<Sc,&\SXc1>rgaIfS",t;S=5k6
+Q^X;.rg<_O!LT2OQN`\?Q'R]#njDP-lU1V;q2P?3qi1T8!0@,@)3U2HP*;)oPa.N"Q'IStP*2#n
+Q'Rf)R@9WCS-5CST:VYNTDbG]TDtSaT,=5pTqeEZVPpGnX/i>'Xf\e2Z*CXB[C3RB\M(P+]">Vf
+]tM.p^VI\'`5]j=air#VdaQ^rf%A[0gtpuKjlYajlKms.oCVhSqu)*Gb5X<J`50!o\%&oU[K$9t
+imYu`\V5[8cKF'!K9*BjEbKH/:jRA19iOuCKS"f,JqAJU:JY"ir_`hqL6Rl#OTCH'NrLHgc,%!&
+\%0&\[^<EIYd1L8XfJG#Vl$8aTUq^CR[BD+Q'.;oOcTI#"cJ7qLl.&XMLS8m9heAY:f("e;c?Xq
+<``C+>$G6;?=.,M@q9.`BPD6uDJjE5F*)SLH$XjdIt3-'KnkMBN/`m\P*D5uR@B_<TV8-VVPpMq
+Xfen6ZaI6O\\,Vj^r"".`lQ9Fbg+P]dF6Urf@\g3gtgiFi8WeXjlYail0@U$m-a?2nF?PLs76Ed
+p%A%Pp\jmeq>^<iqu-HlrUg)?s,d82~>
+JcC<$OoP(QrVc`nrVQWks7uWg!Vc<eoec=4o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^-kF]9MJ@]:\7K[;=d]H;>rWP48M#149%A?3rh>>3WD,?48q8C4$#DarAss?
+s#U$;pf75m"BAK'<EK-"!*B,"rDiGgs&/tu;cEQk!`MupnjDP-lU1V;r`0#!rD`PjrD`es"]eW'
+<`W<#<WH4u<rZ8#<r?&!<rQ2#<rQ2#=SZ)#=BYW*rE0,(r`]G/?![G9s'Pb5!b#JEraGn<@fBp<
+AcH?BBDcI5C27X&D/O91E,fr@Fa&(UH[C-fI=?]tJqAW/L5CbENK'!]P*;,sR@9V9StVmSUnt#h
+X/rM/Z*LaE\%'#_^;.S%`5]pubSnXGb0/&UdF6\!gYUiHj5f@ckiqF#mdKfCrIt7S]5h=g?N+4S
+?=.!CSrS;@BOG%56s"DaIq1o7>rOPl2DQpK4?P>V2+U187fGgf3B/u`5!:qg4\\gP;,U:j;iq"_
+lE5_SA7,:A"CGG>>[.24'O+aE=^#!3=B\m0=&r7"<)lpt;Gd?is&/em!`)WhmnnR-9MJ5V:Jakb
+;H$Ln<E<1'=^#$7?!^lH@Uiq[B4u!pCi4-0EH?5FGBnL^I=Hd!K8#);MN!OUOckroQ^O>5StMdP
+Uo()jX0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8Xd*^=lf%8R.gYCWAi8EVTjQ5OekiqBum-O0/n*olI
+o)J:bo_%nNp@nO\s7u]krVQQkrr)KgJcCi3J,~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq/GHoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX/^V+?8Q^b"VUSFW\V5C/hWVidqWs#N+Xfnr,Yl1g,ZM(X&[/.3/[eI9.PP^O<
+PPLFCQ2[*LQ2[*LQ2QsIPP^RHPE_;srKIAKQB_B4s3V&"da?LldaJ-A(Xgj`e^`1"eC)pse'ugp
+eC)doeC)jpdJ_GlcP"IJc-=GSaih`Hb/q]HaiV]Kb4\3X7.*GA6Md_^X8f74X/rG*YHP17ZEppG
+\%0)^]D9)S]tD"l^qde'`5K[9ai_fNbg"G[dF%j<rm:ntdEp4ddJ_E3dF6Uqe^rL/h;RASk3(sl
+lKdg(n*fc8nac;Dp&4Rip\=R\qYU3grdk*DrrVreoD\=Wrri&cWN+kTrtG+*^uhhdNL,f9US4;b
+@pcLGXfhZ*&Z]hQ>%;#K?<^X>`koO,^V7F@s"=<Dq"47Po^hS?mHNlujlGI\h;$f<g!nHrc-"2P
+aiMN@_nWpu]=GG\[C!<K[-tC'92,=ZInid9:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(E,fo?
+Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"?7GU84ZaWN*)'Yd(OA[^`l[]Y;.s_SjF6aND]NcHstf
+eCE1'g"P6;hVd>Oj5f=akNM0qlg4!*mdKZ8nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*2s*t~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX/^V*ojG'f"$KS95V!/CK.q2"p)rJK]ppPf&iq/P\=r,MCK")i-sE;aYaDfBW5
+DJu&8St2CASXc5LRh_KcS=Q4@SXc1@S=H.>S=Q.=S=Q.>r0n7dR@0A/R$j>.Q^F)*R$X))rK[GK
+p-[V'mR-t?rf-o9"cJ=uNK&nrNW"k?O-#KdP5UUEPlI$IQ2m3LPlI$MQ^RiArgWtZrgs(\!1s%Z
+oq;>Ys.]jqVPgAmX/i>'riQU4Z*L^C['d?N\@DOK0=\R(]"G\h]t_=t^r"%/a2uKHbg"M_eCE+#
+f\,!6h;@2Pk3)!pmI'K7p%S=\rdk*lrrgQa^q$uS[fEl9ruLUddDil0KS-;Nl/9:-OgB[ZBQ.f`
+H$FL,;c&.#r.5*%>#.pp;uTZ#;21@"P*(idOH0>pilf0M]",>]\[JlOZE^^<XfSV(W2HMgUS4<M
+R[TV1QBd\tP*(ibNK&mTMMd7JM=6<&92,=ZInid9:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(
+E,fo?Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"?7GU84ZaWN*)'Yd(OA[^`l[]Y;.s_SjF6aND]N
+cHstfeCE1'g"P6;hVd>Oj5f=akNM0qlg4!*mdKZ8nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*2
+s*t~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq/,?oCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX/^V*',852fUr_NGg!)`Mfq,-WZkY_:>q)e@4ofN17r]C-@rAjF0r]C-@s#L*Z
+!*8kpq,R`#=&r@'<`W<$<rH%r<<#r!<)rfp"B/9!;c3Kk!E2ni6ek)t6iKCP<W#hk;u]hn<<H9'
+='#<%!E`G%<q]Vp<rZ8#<rQ2#=Sl5)>$4s0='5B'!*]>*s'>V1!+5\4-=L:i@U`hX@UiqZAS#Ic
+B4kmkBkhF"CM[j*DfKc;F*2YMG^4X`rd?VQJ:W<)K8,/;M2I4NO-,ThQ'Rf+S=Q:GUnjlcW2Zl$
+Y->1;['mHS]"Gbl_Sa=4aihoPrlQ##cHstgf@f!<ioTCgm-aE8p%J.Rqu)3J.]dGq?sR&E?!^jR
+Y+:N"DeEB[7RU=#M1K/'79_f/0/YO<4Zke\2DmrmrC6fUs#:?G5X%=l4$657;GmEk!)o!Z#3De6
+B45.Qr*KD.s',J-"^5,7=^"u-=T2A&;c`is!E)bn;?'Mo;#X>k;"%6^92,=ZInid9:f1+h<)lt"
+=BSd2>[:ZC?t*SUAS,UiC27[(E,fo?Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"?7GU84ZaWN*)'
+Yd(OA[^`l[]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hVd>Oj5f=akNM0qlg4!*mdKZ8nac8Bo`"Lb
+p@n=\q#C0iqY^6ir;QZerdk*2s*t~>
+JcC<$OoP+RrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V+B:R%(.[rhKapVPgAkWN,lss/c7&s/uC*ricC-rNc=,qm?=0rO27*!k=DV
+qigl>q31W=s-<YOqj.8IrfdSMOd2,rQN!0LPQ$dOPF%Q!Pa9hIrmC_ns3hG(e'ZOjdaQare^;gp
+df%W;dF6LldaQ^peC;snd*L"ccdC"]bf\,Ob/qoOai_`Ia8A<O7.<SD634*eri-X4XK8J(XKAY/
+Yd1RA[C3TU]=bfU]`>_C^&G_U^VI_(`5]j=b0%rQcHai6dK%bodK7nGd/;;kckY!XeCE+$g>(TE
+j5fCekiqC!mI'K4rp^0_oC_bKp&=Xhp\=U]qu$DDs.]Mpr:fg^nc81VrrrDqn>E5Crr4A=W5[l8
+QA_&6US4BR>@V$FYcY(0Y-"aD=^#9D?X6l@ZGsbs^q[UAs"=3Bp\"7RoCDA;lfdTrjl>CZh;-l=
+g!nHsc-"5Qb/_TA`5'+"]=PM][C!<K[-tDO92&#R9hnJ\:f1+h;cQk!='8[0>[1TB?t!MSAS,Rg
+C27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.EU84W`WN*&%YHbF@[^WfY]Y;.s_SjF6
+aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`n
+p&9OBOT0h~>
+JcC<$OoP+RrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V*rkG'o(%re(9*r.b3+qM=s(rJLK1pl,-/nVdR0E,]grE;=M>E;OYSE!(#r
+E,YYos)7pV#]FU#Df0K4St5kNr1+:dSXc1?SXc7@SXQ%<S,Ji]R[fh:S"-&JS/%K^R[BS4R[9A.
+Q^F,+QC4,+Q^3r&r'Sh!n3d4Bs,?r8"cSG$N/`hrNrG(BOHG]iPQ$gEQ2d-MQi<<MQiEHTR[]fG
+S,f,ZScYOWT_G&ZTV;:V!MQ7cU&UkkUo(&hWiQ-$#d1D8Yd1RA['fnA!4Vm9/\/I(]Y(ql^;.S#
+_8O@6ai_iQcd:+ie^rI,g=tB;hVdDUkiqF#n+$#Bq"jr?s2k9Db/1m'\G`o9ruLO`cc*T,K7^,N
+lJfO0PI-EjB5^IiH$FL,;c&+"r.5*%>>J'r;uTZ";21@"P*(ifNW0(=bJ3td.(H[lZa-g>Xfeb,
+WMlbmUnaTTS"#k6R$X,)PEV/kNK0!WMi*CKMM^eZIS3@.9heAY:f("e;c?[s<``F,>$P<=?XR;O
+@qB7bBPM=!DJsN8FEMePH@('hJ:W?+L5:\EN/is^PEhH$R[]k>Tq\?ZVl?\tXfo"9['mHS]"Gbl
+_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0I^&mI'H3"n;'Qo(2MQo`Fj]p\ssfq>^<h
+qu6NlrUp/@s,d82~>
+JcC<$OoP+RrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V*!*85)`Tqb[8hpJCN[qblENs#L-Ar]9j:pc@n+s#U*=!]W5%r&ad:r&XmZ
+pf78lqc<_s!EN4p<rH%q<<#tp<!Q?$<)QXm;Gm?Zcp[@js$H`b!`Mupqc!Jns&B%uqc3Gm!*B)!
+q,dPr"'8N'<rH,"=SZ)$=BAW%=oMV(>81@M?=$uH@:3GK?=72NA7T1\@q0'KARoCcBP;*pCM[d&
+DJjB3EH-#@G'8+VH[L6jIt3*%K7ei2L51YDN/`j[PEhK%R@9Y;T;&-XVPgDnXKA\1ZEgmH\@T;c
+^VI_)`lQ<Hc-=JWcd:+if@ep7iT04gnF?,Cq>:/Bs8W*aRqQ5;?<gcA?=(CLRYcB/AmJP.6s+Yl
+Jn%,8><jqr2(LmT4ZkGW2Fp8+77B^876*=f5<V.k4$657;Gg=j;NLi"hkPO4@UEGJ?XI)E>[(H;
+>[1K:>?Y05=]eg/=&rF%rD`l!;Z9Pm;?0Pm;$'Qk;"%8192&#R9hnJ\:f1+h;cQk!='8[0>[1TB
+?t!MSAS,RgC27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.EU84W`WN*&%YHbF@[^WfY
+]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olg4!*mdKTJnF?)?oCW%T!quB_rqQNh
+s8)Zjrqu`np&9OBOT0h~>
+JcC<$OoP+RrVc`nr;6Njs7uZh621*Hp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R.^:\<=S<g7\V5:&dVl6QnWW9*tXT,I&YPtd*Z2Cp'[/@?1[eI9,\-0@*Ocbh+
+PQ-mIPP^O=P6$o3r0.5IQN!6MQ3<G;Q'7I3P67)6PEPg-s-!PHQ'@R5dg+COdaHUmcdM^<$I[DQ
+f%&6te^DmqrmLhq*R`HcdF?Xmda?Cfcd0tddE^"\b0.uMb/h`Kai?cg7.N\GWiQ-#rN.KNYd(L?
+ZaI9Q]=bei^:h1l^:q@s^qdh'_8=+/`lH0Bb08,Td*L(fqpbSn!RfBndK%\nd/VMndh:0\f@f!<
+ioK4akiqBumI'H5nbr%Xo*k9ap%J+Rp\F[_r;HVGs.fSur:]aQo'u5HrrrAon"nG-rr4A>W8-LR
+QA_&8US4BQ?=I9HYHG%0Y-"a>=^#9D?=$i@ZGsbt^q[UAs"=0Cp\"7RoCD;9lfmWrjl>=XhVR&?
+f@JBtcH=ATbK.fF`PB4%]=PM^[^<BK[-tF&97BQ/9hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#Lf
+BkqO&DfB];FEVkRH@1-jJ:iN0LP^nINfT<cPa7])S"6.DTqeH^W2co#YHY==[^WfY]Y2(q_Sa@4
+aN;WLcHjndeC<($g"P3:h;@/LioB+^k3)!nlKdg(mdKW6nc/.boCV\Jp%J+RrqQNhs8)Zjrqu`n
+o_sFAOoKq~>
+JcC<$OoP+RrVc`nr;6Njs7uZh3qr@Ap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R.^:[fkH$P1&rIt-'!/L?*r/(E1rJTfspl58lrc%pWrG_gVrGh.Bs)A0\EH,r:
+rbhmXDf9OjE;shYD/aE3rgj(\s.'7`SXZ2IS-kgYSXuCBS"6%<Sc5,YS.D*[S"#t=R[]e8S!ob6
+S!s>D$C@-IQC!l'R$O")`^KAb!K2s5NWkK*O-#KdrKR,C!LB)MQiibFS"'AHs.':aT:V[Jq4Re]
+rL`qZ%&'DiTV/!QUSF]bWN6!"!3cC,s0Dm:[^NZS[f!Z8\Hf^X]=bej^;0`a+iMC@aN;TKcd:(g
+e^rL,g=t?7g"bKEjm)4#n+$#Bq>1&@s2t?Fp;k.a\[_XJ2n&bdrTi4__n<F1T"rhAikL&BZ]oB?
+DG5>$G]cbZ:kXLQJq8N*IooKC<`;mo;,N(4PEV,jOH'8Bgr[:BrOO,\[Bm0EZ*1:3XK/>"W2?Ab
+TV%aER[KP1QBmc!OcYQ^repu<MM[4Imu%-<IS<I1:/=\_;,U=k<)lt#=BSg3>[:]D@:E_XAS5[j
+CM[m,E,fr@G'A4XI!pKpK7nu7M2I7PO-,TiQC+)0SXuLJUSXleWiN8*Yd1UD\%0)_]t_A"_o9X:
+aihoRcdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9s7-Edo^qhLp@e7[q#C0iqY^6ir;HTd
+rdk*3s*t~>
+JcC<$OoP+RrVc`nr;6Njs7uZh3qr@Ap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R.^:Zj)8kVoWqG@/gpJB77r]:$?!':'?!':'?pH%n-rAsm;r]1$>p,W18r`/u!
+s&B&"r)N\p$<:,-='&F&<`N.$qc3c"<`]0!qc*Ppr)<o"<)Zap;Gfg$7.N_F;Z9Vp<;T\o<;';l
+<rQ2#<WZ9%=8l=u=8u;%='5H's&f2%rE/br"'So5?2\./@/jR<?t!MUAn5KPAH-6@AdE$_Bk_<s
+CM[keDcLarEcQ8EFa&+WI!pHnJ:N6(Jq8K)KSPGDNK96dQ'Rc)S"61FU8=`bWN*&$Y-5(8ZaI6O
+]"Pkn^r""0aNMiRcd1"fe^rI/hVdGWlg=66pA+UbJcG]K5`fSe?=$lA?<pjNWgSZgD.HpS78@H>
+Ne:n0;-QFC/N#%B4?P\\2)Iil7n#j;77B-p3^5ek4$,Q!;,U=j<)SeW"PTGlB4LpIs'Pb2!*fG-
+"'\r3>Q.e+=oDJ&<rc1u<X_r.<)ZRi;c6Ii:f:0i;"%9]97BQ/9hnJ\:f1+h;cHat='/U/>?kH@
+?X[DRAS#LfBkqO&DfB];FEVkRH@1-jJ:iN0LP^nINfT<cPa7])S"6.DTqeH^W2co#YHY==[^WfY
+]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/LioB+^k3)!nlKdg(mdKW6nc/.boCV\Jp%J+RrqQNh
+s8)Zjrqu`no_sFAOoKq~>
+JcC<$OoP+RrVc`nr;6Nj!;ZTg!Vc<eoeuI6o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*Bq\bK7fD`59@*^:\<?SWp:WVZ*LnW;rssX8]1%Xfei)Yl:p-ZM_'+[/.6-\,Wr<\c'&6\H'5>
+OoLUDPQ$dHPPUI<PP^RFQ'VE9rKdGH#*kF:PEh>srKIVNPa%ArPL\.2ec+#1da?Ljda?LldF$:h
+dF-Lme^i=NdNR#fdF?UkdaHUmdEp:idaQRicdL.ccHXYXbK7rMbK.iL_aO)`!^`uir2h$DZ*L^C
+[^`o\]Y2%n^V7Fs^qmk(_o'F1_o0R8aN=G*s31\ndF-LnqUPVq!n5TFrR1_nrQtMj(=Udbf\GEE
+jQ5UilKmp+mdK]9o'u;BrpgNio_%qOp\4L[qYU3irdk*FrrMrhrpg*Znb`=hqt$h`ci*k[p8?g.
+b+=KWBVM2nSnDJ;YHP(3Xf\\*r`T_=@U<AF>dDAe_8!e"MuPF*q"ORWp%%_Bmcis!k2t^_hVI&C
+f[n[%dE]t\c-+2M`l5d.]t:ne\@&]O[C#D1IS*7,9heAX:Jakc;c?Xq<``C+=^,-:?=.)L@Us%^
+BPD6tD/O<4F*)SLH$XjdIt3-'KnbGAN/`m[P*D5uR%'V;T:r$UVPgGpXfen6ZaI6O\\#Pi^r"".
+`lQ9Fbg+P]dF6Urf@\g3gtgiFiSrnYjlYail0@U$m-a?2$h3]Wo(2JFp%A%Pp\jjeq>U6hqu6Nl
+rUg)?s,m>3~>
+JcC<$OoP+RrVc`nr;6Nj!;ZTg!Vc<eoelC5o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*Bq\bK7fD`59@*^:[ckH?k:$rIt9+r.k0*r/(E1s,6*"s,@#=oo/s3rG_^T!-%mVs)@sWlYulD
+rbr'[E,]`6E,YYn#&\C!DfBWdqOJ4gSXc7@SXl:@R[ot>St2FDT)P3&R[on<S!oh9S=?":S",t<
+S"#k:R@0G/R?s;,R$X2*Q^GZYo0WLEqMkoDOHGWeP*D5sQBqH6!1*VN!1<\Ps-itWs.'.[rgj%\
+!20=bs.]Fb!20=`r1G(&TV8*STV/!QU8+Q`WiN8(Y-+t5ZEggD[C3NQ\,Ei:\c02?]DoPD^*US2
+_SX:3aN2KGbKeJ^e'ut#f@\d/f@8C)hW3nemdTf>pA+UbJcEmm"R=%E]"%aKs0ht-2#6@gbegrF
+JY0s:lf>j4Wj8"6AoCXoG^+@3;GVt!JV&K)Jq$Kk:f^Lm;Gg;GQ'@JpOH>J%/)&(X]Xk_d\[T#R
+ZEga=XKAS(W2HSjUnXNSS=H%:R$X,*Pa%8lNfB!WN;\V8M2I/[MLJ/j9MJ5V:/=\_;H$Ln<E<1'
+=]ns6?!^lG@U`kZAnYmoCMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOHPinQ^F84StD^OUo(&iX0&P/
+ZEpsI\@K5b^VI_(`Q$!@bKS8Xd*^=lf%8R.gYCWAi8N\UjQ5OekiqBum-O0/mgJXTo()DDo_%nN
+p@nO\!;ZWjrVQTlrVcBfJcCl4J,~>
+JcC<$OoP+RrVc`nr;6Nj!;ZTg!Vc<eoec=4o()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*Bq\bK7fD`59@*^:Zm+8kMkT:]OAe;"mib;!UsY;Y3ib3rM,?3rM/?3rV583q>B23rV/33q65K
+<!$'#<rQ2"<<H3$<`f)tr`/hps&K"s!)rkr!`N&s_aO)`"%#pb<;oqt<<-"t<W?%r<W?+t<<lQ+
+=&r=$<`f9&!EiOt=8c5$=o;Cp=Tho4>[:\8?i=C2@0'hIra]YOARo@`AnG^iBk_<sCMdp,E,]f;
+F*)PIG'A4YI!pElIXcm!J:DrqJVAr>O-,ThPa%N&S"64GUSXidWMuo!Xg#(:ZaI9O]"Geo_8=.2
+aNMiRd*^=mf%]$=j5fCgmIBiBqY^>Ds8Ds`l@ibU?<piC?<gdLWg8B`CgpX>78RTGNJ1t2:g-CF
+/N#1G4Ztnc2)I`l7Rfm;77K'm3^,_j4$,Q!;,^Ck<DnnX%+LhmB4>7T?X@&E?<mJ6#@(G:=^+s1
+>5_S'<tAD2<E<.!<E)mn;,gCh;,I6hm8/7(92&&S:/4S]:f:4j<)lt#=BSd2>[:ZC?t*SUAS,Ui
+CMRd)E,fr@G'A4XI!pKpJqJc3M2I7OO-#NhQ'[l-S=Z@HUSOcbWiN8)Yd1UC[^`l[]t_A"_o9X:
+aihoRcd:(geCN7(g=tE=hVdAPj5f=akNM0qlg4!+n*^YRnac8BoCV_Kp@e7Zp]1-hqYg<jr;HTd
+rdk*3s*t~>
+JcC<$P5k1RrVc`nrVQWks7uZhs7ZNerq/,?oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V.9uMOp'8ri#gq!ii<%r2^%'Y-+t3r3?:-rj2O0rO)U4r3uR5qRQC4qiUoA
+s-*DGqiUuDP51=<Pk^OQQ'7JuPEh>sQ'@PuPl?jKPgIq.rmM8'e'laodF-Lle'ZPAd/qeDeGdoA
+eBu^me'c[odaQXmd*pIjd*g@kd*L%dd*Kt]bg+>Qai_cL^I7]]riQ4($F-nC[CNiZ]=kqnrkKGe
+^qmn)_o0L4`lH-@ai_cLbg"GYcdC1he("<G"P2,ReC4<C!7C\jrQuD0f%Aa7ioK4blKdg)mdKW7
+nac5@o(2kO#5%T^p@n@XrqZ]orVhBJV#LJkp&=O^nGE4gq=1DZci*kkpSQg.c(&1.B;;/nS7c9;
+Z*(44Y-"h,=^#$<?s[/D>dDAf_8!e"MuPC(qtKmZp%%YAmcs$!jlGF\hVI#Bg=Oj&da$.ac-4;O
+a2Pp1]t:qf\@/fQ[dLO)8kVkW9mTQ1:f("e;cHat<``F,>$P<=?XR;OA7]@dBPM="DK'T9FEMeP
+H@('hJ:`E-L5:\ENK90aPEhK%R[]n@Tq\?[Vl?\uY->1;[C3TU]=bkm_8=12aN;TJc-F\`e'uq"
+f\5'7h;7)JioB+]k3(smlKdg'mI0N5nc&([oCW%T!VZ9dq#C0iqY^6ir;QZerdk*3s*t~>
+JcC<$P5k1RrVc`nrVQWks7uZhs7ZNerq/,?oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V.9fDgQbbre:?+s+gK-q2,-/s,66&oSrX+s)7jTq/Q@Prc.4Bs)A6^DfBZ6
+E,Y_p!c`0urbhjWR\'JK!1a%Z#G.HVSt2ICS,Sp"SXZ7BS=H.=S"#q;S"6%=S"#k:S=5n9S",t:
+R[fh7rg*hWQC!o(Q^GNUoL&V<s,R/ArfIDKPa.N"Q^@W9!1<YO!LfMWS,o+LrLNt[s.9:arLj4c
+qk<hY!hZ-Zr1O(`'V_@uVl6YuY-+t5Z*L[B['d?N\$u=Gs1/0@rk&3C'>D5r^qmt.`lQ9Eb0/#T
+dF-LneGe#1f@AC%g"kZNlg=04o_&"Vrdk*lrr_,t_Rf]T34?6ps7ka-ahYH?JY:-Gmbu!5Wj/%8
+95d^RG^+@2;MKjWK7\]-JU^Bj;-$Un;Gg;GP`q;nO-#A$/D%qT]Xk_c\@8iOZEg[:XK8J'W2HMh
+US4BRS=H(;R$X,)Q'@DoO,f0YN/R[m!f;eknVRB?92,=ZH;774:f1+h<)lt"='8[0>[1TB?t!MT
+AS,UhC27[(E,fo?Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"?7GU84ZaWN*)'Yd(OB[^`l[]Y;.s
+_SsO9ai_fOcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!*n*fc9rpg*]o`"Lap@nO\s7u]kr;6Kk
+rr)KgJcCl4J,~>
+JcC<$P5k1RrVc`nrVQWks7uZhs7ZNerq/,?oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V.9K8P2TNr_WJhqb[&bpJB^Ds#L$=q)eO9r]Bm9nN6\1!'0s<!'C'=!`W0!
+r`&qtr`'2(<E3("<`N/u;ufqs<WH4u<<-(u<W,tt<Vo_q<W,ku;cH]p<51in6i0m`<;fhs<rH%u
+<r>to<WH5#=T;P&=T;G&=Su8#=Su8#=TDS"=o;G)>?kJ5?34JA@/XO5@K9s;A,g*>AcHBABE`*b
+C27[(rbhmYEcZ@%FTcl4H@(&=I/ncrJ-g[QIt<<1N/s*arfdt\R@Be@U8+Q^W2ckuXKJb3rj2X3
+*k8eo^r++1aN2KHc-Xqhf%Aa6ioK7dm-jQ?q"t!gJcG]K,M.<R?s[)E>[1Q?]Vq*JFD5&c7RU0k
+LQ@(#5u1]W1F=q355mY_2Ddup77Tg;7R]d&3''5e4Zkeg9i4hd;H-PTrsd>AF_+ug?=.#F>[:Q<
+r`oJ,"C#,6>?Uo,s&Tk9;H6au;cH^p;,U=i:f1%e;Gg6X:]a6^9`@b4:/=\_;,U=l<E<.%=]np5
+>[CcF@:EbYAnYjmCMds.EH6/DGBeF\I=?]uK8#&9M2R@SOHPfmQ^F52StD^NUo(&hWi`G.Z*UjH
+\@K5a^;%M$`Q$!@b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O-.n*olHncA@Srq-<cp\jme
+q>^<hqu6NmrUg)?s,m>3~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.:"N1uT>WN#irqlBn%Y-5&.YQ1s+ZN%9/[/RK5[f*]4\GNi-\cBA=OoCLD
+PPpaGPPp[=PPUODQ2['NPa7X7PS97GQ'7DsP*D5rPE_<]daHXndF8*C"4PcJe,@],e'QIhdEg1f
+d+$RoeCE$re'n6C!mf<ArmUnp%ar_Md*L%`c-4GWbK7oL]0u?[%Bm%BZaR?Q]"G\i^qmkd_Z.CU
+_Sa:0`Q$!uaT]i1bg"J[rm1hrdaHUneGIeqeGdkte'cVAd/q\?chu0;e(*+)hVmPXl0@X&mdKW6
+nac;BoCMVFoCV_Kp@e7Uq>1!cr;HVGs.oZ!p[n%IoC28Hrri)bV5)fDs!R<3h;lnP@$bK%TqIrg
+@C<DDXfnk.XfGT/>@CoG?<h*J`l5d/^qPa,/GT&8p\"1LnaGi/l0%0gio/bMgt:60eC2jlcd9t]
+b0%iF_n`ps]XbM\[^PS2InE@,9MJ5V:Jakb;H$Ln<`W:(=^#$7?!grI@Uit]B4u$qCi402EccGJ
+G^=^bIXm!%KSG8=Mi<[WP*;/sR$sM8StVmSV5L;mXKA\2Za@0M\[oGf^VRe*`Q-'BbK\>ZdF-Op
+f@S^0gYL`Di8N_VjlY^hl07O#m-X60mfi4No()DErq-?dp\4[^s7u]kr;6KkrVcEgJcCl4J,~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq/,?oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.9gDgQecrJ(?-reU9)regZ4o8N@%nW*TerG_RPr,DXTm;N&Dr,<<fE,]`6
+E,KW7E,T]7SXc4@SXc8MS-,=RSY#eN&Y>J]S=H%;SXc:BS=Q4@S"-#HRf]"IRf8iWRgtsXR[]b6
+R$X,+R@';,Qb,ZZ6iN,HOoCLFPEhI4Qi<BPQNNVCR@=&CrLEeV!1s+\qOmh]p7VGXrh0:b'V_@u
+V5UDqY-+t5ZEggD[C*HO\@DLJs18-@s1JcR^VIY$_o9X9aNFM*!mT$9rm2>+dacq#f\53@k3MC%
+nFQ>Iq>C2Bs2t?Df>YP8rjVp9,IRROp#FTD^:8iHWQso%g:Dg6ZCZ/3E)V(.G]m(bLP:A3K)U<4
+Inig;<`;pp;-&F9PEV,iOH0>oqUNTu]=YYb\$iZNZE^U9Y,n\'W2HMgU7n9RS=H(<R?s8+Q'@Gp
+O,f3YMi3INre^]4nVVfg91qrQ9hnJ\:f1+h;cHdu='/U/>?kH@?X[DRAS,RgC27X'DfKf>Fa&(V
+H[U?nJV/W1LP^qJNfT?eQ'Rf+S"6.EU84W`WN*&%YHbF@[^WfY]Y;.s_SjF6aND]NcHsteeCE1&
+g"P3:hV[8Mj5]7`k32'olg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`np&9OBOoKq~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq/,?oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.9L8P2ZOpJLlcqbco\i)'JPr]0p<q)eL8r]Bp:nN6P-!]`;'rAk-_<`W4#
+<)ros#ZXo*<`N+!<EB*!r`&nt"BJT)='"fjoi(uk<)gItp-\^Wqc<_sr`02&<)lt!<W6#'=&r@'
+='/T(=oVUo<s)Q-=]kZ+s&o_3=BJa2>?Y37>lJ(0?iOL9@:E\SraPk:s()(>s(D:D>\RtiD/O60
+E,fl<FEMbLG'A4XH$O^^H[L<nJ:W?-M2dUZOckrnQC+/3SY2[PV5:,iX/iA*Y-5+9Z*UaD\\,\q
+`5BR4`lQ?Le(!%(gu%,PkNV=#nacAJqYc!FrVn^kF(/N_?!^c@>@"h;OaqIb?<K`d=`TOeI:5B9
+>"pb!1bV$U4ZkV[8Ol3;7R]a87Q*4er]^<D##/#p;,U@kO8fm;Q#gJD?=.#E?<gc?>[(H;>$>/0
+=oqi/=8l;.='/C$<`W0u<E&lp"&Vrm;#X>o:/=aV:k))192&&S:/=\_;,U=k<*!%$=BSg3>[:]D
+@:E_XAnPdlCM[m,EH6/DGBeF\I=?]tK7nu7M2R=QO-5]lQC+,1SXuOLUnsugWiW>+Z*UgG\%0)_
+^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?tm-O--n*^GLnac8Bo`"Lbp@n=\q#C0i
+qY^6ir;HTerdk*3s*t~>
+JcC<$P5k4SrVc`nr;6Njs7uZh4SSRCp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^V")sM5QZ?WN,ruriH.%riZ:*r3?4+!42[3s0_j7s0qm8qml=0qRZd@OSFt;
+P5UXEPQ$a?PPLICQ2HsHPld/7Q2Zs`P*D/oe'cardF-Fjf$`$rdF?[ndF-Llps9;pdF?are'cUl
+rmLhq%arhTda6CicdC(cd*L"_rm(YjbK9->ksaZ$p-T1p[^`o\]Y;4u_o)Dj!5nfS$-($-bfe/P
+c-O`8d/MGmdf.\qeG[nteGdqodf7\od07nBcHX\^rm;>,e^rL1i8j%blKmp+n*ff;oD\C]p&F^d
+p\+U\#5J#jqu$ElJcDPG#6+;do'u8>qu6j!p?n]Mo_ne&l(d=ud@=j8AYu2oS7Z3;Ycb/.XV%Y8
+=^,*<?s[/EHEtQ0_8*h"MuP@&q=jXVp$hG:lfmZsjQ#1VhV?l=f@JBudF$IlcHOGRai205]t:qf
+[^W`QmBusdInNI09hnJ\:f1+h;cHat='/U/>?kH??X[DRA7]CeBkqO&DK'T:FEVkRH@1-jJ:`H/
+LP^nINfT<cPa7])S"-(CTqeH^W2co#YHY==[^WfY]Y2(q_Sa@5aND]McHjndeCE.%g"P3:h;@/L
+j5]4_k32'olKmm)mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqu`np&9OBOoKq~>
+JcC<$P5k4SrVc`nr;6Njs7uZh488IBp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^V!]XDgm"eLAco-M"uo*MYrD,N:i1rNr<nnE;FSOE;sqDE;abXDfB[pD\m;1
+Df;2;St;FAS"61ASXl7ASt)=ASt5YG#b@KVSt)=?R@O8Gs-sRgS=H(;S",n9R[]e8R@*uA!go=?
+m6p2-j@&]/"d+t2PE_C4Qi<BPR0&hFR/WQRRff1MS"0JK!hPsRrgs"Znt5uVrh'7`r1O%_';D7u
+W2Zi"YHP4:Za7$H[C<WT\G`u<]D]Al]tV7q^VIY%`5]g;aND]Mbg"DXc-FY^dF-Osgu%,Ql0Rg+
+nalJKq>C5Cs2t?Id_il0\%&lS[f6:`oAS0<]siTC][ulVe$OP+YFor7Dc1n+G]d"`L4b,1Jq8N(
+Inrm;<`;mo;.G?GPEV/jOH0>Bp!q%[]G.oc[^<BHZ*1=2XK&7tVPU)_TqItUS.M-VQ^<u&P`h/i
+NfB$VMi*AjM?&M'MZ6:u92&&S:/=\_;,U=k<)lt#=BSg3>[:ZC@:E_WAS5[jCM[m+E,fr@G'A4X
+I!pKpJqSl6M2I7PO-,TiQC+)0S=ZCIUSXleWiN8*Yd1UD\%0)_]t_A"_o9[;b0/#ScdC1je^i@*
+g=tH>hr*JRj5f@bkiq?sm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;HTerdk*3s*t~>
+JcC<$P5k4SrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^Uum$84lQNm8<USi_fML!''s<rAs^8q`=a=qE"1/!'L6Bq`4^;r]9sW$!(#*
+<E)su<*!&u<W,ns<W5r)<E<+#=&r@$;cH`i<<?-"<;fbq<<#tu;ufka7-R/$7.rtJ=8Q%u=8l5'
+=&r@%<W,ts=8u;&='/T'=Thi.=&i9"<rcA%<rcA#<s)Q-=BPQ*!ErY*<ruN/>lIn5>[:WA?XR;M
+?t'"Cs'l.A@q9-KB)cNCB`DcSCM[j*DJsK6EcQ8ErcTK0G^4RZH$OaaIt3*)Ll.1ROcklkPa.Q%
+S"-(BTqeH]VlBWq"0AW.Yl:p1[(*`^rk]Mj`Q$!Bc-b(ogY^uMjlYdklgF64p%S@^JcG`L6*G-5
+?sHrB>?kIX\YY@9Eb/NZ7RU^4QC`;)5$;#a0e,"54Zb_f2Dn&p6q'R76q'R'3''2d4Zkhl9iP%g
+;cHYUrr^6%E+JoS$=-tC>ZtB:?!LN;r`TS1=BAO*=]ea-rDaD.;cQ^o;,U7h:este:esnbn50-W
+InNI09hnJ\:f1+h;cHat='/U/>?kH??X[DRA7]CeBkqO&DK'T:FEVkRH@1-jJ:`H/LP^nINfT<c
+Pa7])S"-(CTqeH^W2co#YHY==[^WfY]Y2(q_Sa@5aND]McHjndeCE.%g"P3:h;@/Lj5]4_k32'o
+lKmm)mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqu`np&9OBOoKq~>
+JcC<$P5k4SrVc`nr;6Njs7uZh488IBp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`P]O,^:\#sMPurCWr/suXTGZ/YPtd&Z2V*/Zid_E\$u4DrOMU4qRcU:!POWpOSP%=
+P5gaGPl6gEP51=>PQ6pHPlHsGPol6UPa.JuP*;&mPge15e'caoeBu[ne'c^ndaQ[kdaS3B&^ShP
+cdC+ddF-Ole'l^me'ZYDdM(!Ue'c[jdF$Chda$1cdEg%\cHl/OfL>'npHo7u]Y;1t_o9U7`qdXW
+b0/&TrQbJjr6bGjs3q"trR:\ms3^hm*RE*YcHXSVbKeG\dF6Urf\GEGkNV=!mI'K5nalDNp&F^n
+p\=OZq"ad_qu$ElJcDMF#5n5go'u;@qu6fup$SO#r;RS4Zh)MdUM#m(V4sTPARMpNY->%1Y,nW%
+>7=qJ?=$p&a2Q$7^q[XBs"F0Dp@e1Nn*fZ0kih0iio&bNh:pT5e^DmneCE!lbf\/O`P]L*]=kbc
+\$i]N[^>P3s%3;b9`@b9:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmnCMds.EH?5FGBnL^I=Hd!
+K8#&9MN!OUOHPinQ^F84StD^OUo(&iX0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWB
+i8N\UjQ5Oel07L!m-X60n*ol<o(2MGs7QEc!;HKfs7u]kr;6KkrVcBfJcCo5J,~>
+JcC<$P5k4SrVc`nr;6Njs7uZh488IBp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`P]O,^:[TXDLQqdLAZl*M>)o%N:r7nNr*blE;OYADuahUE;skSE&2KQEH#l7Df0K4
+SXuFDS=Q1@S"#t>S=Q1?SXl7@St)=?R[]h9S=?"<SXu=@S=5q;R[jAH':PD\S"#h8S",q;R@9V8
+R?s8-Re9)$7I!;86PP`KQ'[l*R@0M4S!oh9R[T_9SXc5LSHtaVSXuFDSXuGHTDYA]TCnlTTb*up
+Vl?_uY-G:<Za@-K[^`jG\c98@]DoSD^AbkT^r!t+`Q#p<aND]MrlkGgrm)5(dF$Clf\GEEk3;:&
+nauPNqu)*Gao;Xk_nERh\$`WQrr4hGiR5`Y[=Osni;`2iL5N^:SpO@S;L3S4F]D:nKS"f.JqAN'
+:/Fbf;c6LjF-W&TPELuhNrKmce&/i5]=b\_[C*?HYHP(/X/`+qVPX9d&YGVaSXl4:Q^<u&P`h2k
+NfK+uMuSY9M27#YMZ69L92,=ZInid9:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(E,fr@G'A4X
+I!pKpJqJc3Ll..NO-#NhQ'[l-S=Z@HUSOcbWiN8)Yd1UC[^`l\]t_A"_o9X:aihoRcdC.heCN7(
+g=tE=hr*JQj5f=akNV6rlg4$,n*fc9o()DEo`+Uap&Ojdq#C0iqY^6ir;HTdrdk*4s*t~>
+JcC<$P5k4SrVc`nr;6Njs7uZh3qr@Ap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`P]O,^:Zd#84lQOnPSpTqGI8hnPSpV!`;iUr]'p<rAsa9nN-S0!'9m:s#g<Cs#L9C
+3]T5^qGdf%<E)su<)lmsrD`hupJ_H!<`W4$<`N*u;u9Pi<<-"s;Zp&u<)clj7+arn7/'(H<WH5"
+<WQ9%r`8ksr`K2's'#D)#$=r.<`W:'qcEi$q,dVur`K)"s&o>)$X6kA?=.)K?smDP@fBm:A-caW
+AnGUcB4u#YCB&&ZCi+'.DJsK7F*)PKG^+N5H67K[I!^9kIt<</M2[LWP*D9!R$sM7StMjTVPgAl
+WiH'"s/dWOYdLsN]=kqo_SjI7bfn>WcdL=pg>1`Jk3(snlg=03o_84[rr%EJ"TP-/?s`h;3a,`m
+c+0U1IrJt)=@H&#K:e3F7mLWX9/J(S/j;BZ4Z5/g7R]d977B[83'0/b5!1qj7oWGd;H$OnO8fI"
+N,E-3?s[4>>n:.F>Zt?9=^,'6>$4s.=]kZ)s&T/"&QDb0<Dujo;c-Ii:f:1g:/FaU;#a,g92,=Z
+Inid9:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(E,fr@G'A4XI!pKpJqJc3Ll..NO-#NhQ'[l-
+S=Z@HUSOcbWiN8)Yd1UC[^`l\]t_A"_o9X:aihoRcdC.heCN7(g=tE=hr*JQj5f=akNV6rlg4$,
+n*fc9o()DEo`+Uap&Ojdq#C0iqY^6ir;HTdrdk*4s*t~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eof)O7o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:[osM5cuBXK;E's/l@*rNQ4)rj)R1s0Vd5!k,SIqmcO6qmu[:qRlX;s,m2?
+qN:f@!L&cFPQ-gDP6-o2PP179PnK=FP`h9^e^`7"e^DmneC;mme,IepdfRnEci)2jci297cdC.e
+eBuXldF6OldF6Fie'laocd:(ddEp1ccd'k_bg-#Pcpd7gpd52#_SjF6rlP/^%EZc8bKJ,ScHjh`
+d*^89dK@nFda@p<s3^kn+j\HZcd0n]bfn8Qb08/Vd*^=lfA#3Bjll!qmI'K5nauJQp&FacpBp]k
+q>0sbr;HTnrdk*Drs&>op@@hGo)&Fir:KEMdf'1nr2@U1T<=GkQ"?hgT:BD![^!!?Xfeh-WENM0
+?sm;I?*hSj`PTF+MZ<_Q/beu2oC),6lKRKojl,.Th:gQ7f@86se(*!rcHXPWai2-4^:V(j\@8oS
+[C3I3[JrjK92&#R9hnJ\:f1+h;cQk!='8[0>[1TB?t!MTAS,UhC27[(DfKf>Fa&(VH[U?nJV/Z2
+Ll%%KO-#NgQ'[l,S"?7GU84ZaWN*)'Yd(OB[^`l[]Y;.s_SsO9ai_fOcHstfeCE1'g=k?<hVd>O
+j5f=akNM0qlg4!*n*fc9rpg*]o`"Lap@nO\s7u]krVQQkrr)KgJcCo5J,~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eof)O7o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:[QXDgm"dLPPb`pko!-q2G!+k)TFZrGDURqJcCQs)7sVpi$4Omr82E"E89u
+DK,TH$D3l[S=H(>SXZ(=rg`tY#Fq?SS",t;Rf8cVRf8ftSsu.<R[fk:R[fe8S=H(=R@9V6S!ob7
+R[KV4Q^IS:cpd7gpd51NR$j>0rgNeT!1`nV!1s.[qk!eZs.97]".YpRT)>5\T)5,\TV).Tr1Oat
+Uo(,lXKJb2Z*LaE[^WcV\[h^N0>"m0]tV7r^qmh&_Sa:0`Q#s=ai_fNc-FV\d*U1gda?LkeCN:+
+h;RGXm-s]Drdk*krsAPF`P&gk\@&`Orr4eFiR5]W["+jikPshgK9X<!J8J/%;L3V5F];4nKRn`-
+JqAN':/Fbe;c6LjL6\'gPECocs"Nif_S*[p]XYDXZa-m@Y,n_)WMcYjUS=KVT:DIDSXGn5Q^<r$
+PEM#eNf8mTMi*GlM=HK'8q0K-9MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93EccGJ
+G^=^bIXm!%KnbD?Mi<^YP*;/tR$sM9T:r!TVPgDnXfen5ZaI6O\\#Mg^VRe+`lQ9EbK\>ZdF6Uq
+f@\g2gtgiFi8WeXjlYail0@U$m-X91nF?MK!V>s_o`=d\rV6Egs8)]krVZZno_sFAP5g%~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eoelC5o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:Zg%7nQKOohk0Ss&&Meqbc]Xs#L!:!'1$>q)e+-niQh5s#^3@!BE4><rH#%
+<*!%!<)rosqc3Ais&BY3<E3("<E)pr<E)pt<E)st<;fhs<;oet<)Zcl7*nBg7/0.J<rH%r<WZ?'
+<rQ2"=9)M$=ohc.pK%>srE05)=&rB#=8u>!<rcA%=oMV,>[Ce:@0U+J@q0%ZA,^'>AnbmiB4bdi
+Bk_?uCi4*-DJsE1DfKf>G'A1UH$Xd`I=-HmJ:N-!JV8`4M2R=SPa@i0T;/9\Vl?_uXf\b/Xfek4
+ZF%$M]YD>%`Pop@bg"M_e'lgtf\5*:iT'%_l0I[&n*ouDq"jsgJc@;$P\=H/>[1K;>$B1]UQ0_@
+A6i;+;J1ijMeb^LD)aI..PrbA4Zkkb2+U5+qaLiN3BBAg4$5W"r`&nq!*,*[&c9.sCh-p[?=7)F
+?<^Z=>[1J3>Q7n,=T;G&=T2A:<E<.#<)cmt;c?Ok;,U4e;Gp=f:JgOVs%7c69MA/T:/=\_;,U=k
+<E<.%=]np5>[CcF@:EbYAnYjmCMds-EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQ^F52StD^NUo(&h
+Wi`G.Z*UjH\@K5a^;%M$`Q$!@b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O-.n*olHncA@S
+rq-<cp\jmeq>^<iqu-HlrUg)?s-!D4~>
+JcC<$PQ1:SrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj3)l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.9kG)3)eVld)(r3$+)rNZ@-rj2R1rj;a7rO2d:p::47rO`!?o"G!as,d8A
+rfHu=!0[,@!g8b2rK@2ErfdDJqNUuE&<iBDQ'@JtQ.=C6e^N(#eCFNG+jnffeC)dkd*^=kdaHLh
+daHLhda6=ddEg:jdaHUjda?MAciVYBd/M>odEg1dci)5g7.Wk/7e9(87/91O`Q$!uaq)\>bKJ,S
+bg"DYd*L%bdF%sArmCborm:hpcd'c3c2Puhc-6.2s2u8%bK@uLbK\>XdF-Ilf\PQKkj%L$n*oi;
+rUUBhpA"IZqYC!bqu)*GSc8ojq"OIPoC;_X"TJ%jT@Ei>-ha@_oW4aHR$D6ZUn=&b@(3AEZ)k+1
+Wi0-+>$t`E?<skX`Poa1_2J=DrqZHbp%7kCmd03$kiLpci8<DGf[nX%daH^se'H:_bKS&I_SEmu
+]t:b^rNuX4n?r9gs%@f79heAY:f("e;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('h
+J:W?+L51VDN/is^PEhH$R[]k>Tq\?ZVl?\tXfo"9['mHS]=bkm_8=.0a2lEHc-F\`daZh!f\,!6
+h;7&IioB(\k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-!D4~>
+JcC<$PQ1:SrVc`nrVQWks7uZhs7ZNerq/5BoCDJBnF,i6mHj3)l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.9_ASupCKntQ]M>N2+Mtr>)NTZ?#Du=MQDu+GPEW9tXDtn;ODt.cODfK`9
+E,T`9rLO._StDRErL<kWrga"X!h,UKrLNtXs.'+Y%\0#WR[fk<SXZ+=R@Kb9rL*eWR[X5D"IkgJ
+S!s>G!1NgRo0qb1o0r"6q*Y1MrL3bUs.'+[s.07^T)P8^St2GOT)YA]ScPITrga1^S"-">r1<nY
+q4@SX!hQ'ZrLjt#USXoiXfek3ZEppG[C<ZU\[f;a]`,VE^)"K!_8=%*_o0L4`Q#s=ai_fNc-FY]
+d/DDld1"CMe(*((gu.8Xn+HL-s2k9IlcR/X]"#5Y[^?&6*V/.8`OgeRUs89+kJMe?_1?fFEGna$
+H$F@/:ks`'K+`ceJ:LBk:fUFl;Gi16QBRJmO,a/]lHd8Z^:Utd[^<BHZEUO6XK/=uVPKu\TV7pH
+T:MC<rg47`Pa.JrO,T'WMi3IMMi*@JnV[?=s%@f79heAY:f("e;c?Xq<``C+>$G6;?XI5N@qB4a
+BPM=!DJsN8FEMePH@('hJ:W?+L51VDN/is^PEhH$R[]k>Tq\?ZVl?\tXfo"9['mHS]=bkm_8=.0
+a2lEHc-F\`daZh!f\,!6h;7&IioB(\k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6Nm
+rUg)?s-!D4~>
+JcC<$PQ1:SrVc`nrVQWks7uZhs7ZNerq//@oCDJBnF,i6mHj3)l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.9K7RfsE:\@TE;#aDW;Z/WU3<(o>3&ru[pcJ",niQe4r]C$Y#?Or,<E)su
+<rH%s<;]bj<<#tu<rQ)#;cH]h<!ZK'<E)mp;H$Qm7.Wk/7e9(87/94M<rH%o<WlK+='/T&=TDY)
+=Tqo/='/R+rDio"r`K2'!*K5$s&]/"r`B&#s&f>*r`]G1?X`nCrac%=raZFKA7fIfBPD-oBkhF"
+rGMXR=)MqrF)uMKG^4U^I!^9iIXcp"J:E-%K8,/<N/j$bR@BhDVPpMrY->1:Za6pC[C<`[^:h>"
+`lH0Aai_iQcdC4lf@\g3h;@2Njlbmnm-aB6p%J1Wr.4kRs6YVR?s[,D>lInJd(6$5I;`\&7mp?r
+NhM8A6;(uO1GC[C/j;E\4>f"q7heK`7R]d93]T5c5!(kh9iY.l;GgGTrrhr"Kkb)r?N+71>6J28
+>?kA2>Q7k==B8O*=B8O*<E3(";c?[q;cEZms%i\kr)!Gjn5''Vs%@f79heAY:f("e;c?Xq<``C+
+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:W?+L51VDN/is^PEhH$R[]k>Tq\?ZVl?\tXfo"9
+['mHS]=bkm_8=.0a2lEHc-F\`daZh!f\,!6h;7&IioB(\k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]
+p\ssfq>^<hqu6NmrUg)?s-!D4~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.9iGDW8eVld,)YPbX&ZN%91[/IE4[f3c8\GEc7])K>?]^<B4OSt=AOT(=>
+OSb16PP^LCPPLFEPE_7-PmEV>Ph"@8e^N+KdfS(Lec*ttdF/$ArmM%ueC2mpdf%K9da-4ccd:"c
+dF6RmdF-FidaQXkd*gCkcdC+cd*L+dcHeoO7G10(7IES=6P%8[b0.uPbg"GZcHaeadEqg=s3gkn
+s3Uel#gLT:aiMTGaN=A&s2tMgbK@s*b5]R,b0/&ScdC1if%]0EkNM3tmdKZ8o()DDp%A(Sq>0sb
+rVhBJSGrfiq"OIQo()\X"T@thT@a&A-h="ml,T?SR?V0WUn:t'?am;EZ)k+1X/K9.>$t`E?!O\W
+`l5p5_MeFEr;6?ap@RtDmd'-#kN1a_i838Cg"4a%daQdtdE]t[bKS#H_SEn!]t:e_rj;d8[.(L&
+8q0K-9heAX:Jakc;c?Xq<``C+>$G6;?=.)L@q9.`BPD6uDJjE5F*)SLH$XjdIt3-(L51VCN/is]
+P*D9"R@B_<TV8-WVl6VsXfnt7ZaR?R]"G_k^r"%/a2lEHbg+P^daZguf@em4h;-uHiT&t[k2tml
+l0@X%mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s-!D4~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq//@oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.9^AoN6IL%pN&MYrD-N;&=kNr3hlDZ=YPE;sqXE;jePE;jeNDusrsDuO\U
+DuO\VEH(lJ!M,h]SHkaVSXZ.>S"0JIrgX%ZSXf\MrL+@hR[KY6S"#q<SXc1<S!oh:SXf\K%%NfT
+S!ob6R@B\6RRHg;fgb[(mR6h;rgNkVrg`qXrgj1^St>qPs.97]rgj+\rg`qVrgX.]S=H(=SG\rX
+T)P>aStDXJrh9@d0;G>@X0&M-Yd(L@[C*HP\@K,[]=bej^;%G!_8=(*_Sa=1`Q#s>aiV]Kc-FY]
+d/DAldf7])d*^:ke^rI/hr<hdoD&98s3(EKj2SpH]"#5Z[C6)71\9PO`4LYPVUGMEj1]uE[[)#L
+Ec"X"H$;t]:kjXVK7ec,J:LEl:K:=k;Gi16Q'7DnOcBAlk01TQ]t:nd[^<BHZELF4X/i1sV5'fZ
+Tq@mGSt2=<Q^3u(Pa.JqNJrmVN;e\9Mi*A\MZ-4t92&&S:/4S]:f:4j<)lt#=BSg3>[:ZC?t*VV
+AS5[jCM[m+E,fr@G'A4XI!pKpJqSl6M2I7PO-,TiQC+)0S=ZCIUSXleWiW>+Yd1UD\%0)_]t_A"
+`5Td<b0/#ScdC1je^i@*g=tH>hr*JRj5oFckiq?sm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6i
+r;HTerdk*4s*t~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq/,?oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.9I77p0HrD<AgjA>PIm8EjBs#C!:s#C$=q)e+-q)\X=4$*7#r]L-\!EN;$
+<WcE(<E/rt!*9(urD`hurDiSkr`/u!#$"W%;c?XqrDWbsr_s/'<)lmt;c6L]ogRP'p-nC;pd=sZ
+qH!Mr!EiP(=TDY)=oMP'=8u;-<E<1&=BJX,=BGK&s&]5$!*K2$rE0)&s&oP0>[:]FraPh9s'c"=
+AGp(PAnPajBkhBuD/O6.D/O91E,fo>FEDYMH@(!dI!pElIt3*%JUrE+LPUkINf]BgQ^aYCVQ$Z"
+Yd1UB[C<]X]t_J(a2c9BaiMTHbKS5WdF-Inf@o!8hV[;Qk3)$sn+$&Dp\F[aJc>iPg4!Z5?N47`
+>?Y4`]qga<E+N9E6s"N,TS6oA<a\?P/iGL=4[(t^2Dmup84Q-=77Ka.3B9;fr]CBZ<E)pr;H8eX%
+IUHOBjtFT?X@#D>[(J4>74V;>?Y66=]\[,=',B%"B8B#;cEZp!E2ho;>sAl;>j>\:]<t992&&S:
+/4S]:f:4j<)lt#=BSg3>[:ZC?t*VVAS5[jCM[m+E,fr@G'A4XI!pKpJqSl6M2I7PO-,TiQC+)0S
+=ZCIUSXleWiW>+Yd1UD\%0)_]t_A"`5Td<b0/#ScdC1je^i@*g=tH>hr*JRj5oFckiq?sm-O--n
+*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;HTerdk*4s*t~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh5kk!Gp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_'hH\nVjWNND-Yd"&1rj)R1s0Va4rjMa7rOMp=rO`$@ke6eRr/^i=qiLlA
+qNLZ:p66#OPEh>qPge+2e^`7%e,7bqe-OLPdaZ[mdF-JAdh^?[dEp4dcd0tbcdC+dcd:+gdFH[m
+dJhPud*g@hd*^;>d/_Jf7Is"78+T4E7INY?6O_/\bKJ,Tcd0n^d*^8?df.YodLFUNcd0n]bfe/N
+aN)9>rl"lWrPnu]b0'_*rlY5^rlYkscd:+hf%Ad:j5oFelKdm+rpU!ZoCMqR"8M]hrVlfsrdk*B
+rs&;oq"FCOo)&FirUZhVh#76dm\B.(f:RtfP%(2[T3Yr4\?`?DriHa4W*ES9?X@&D?*_Sm`Q#g5
+MuP+"qtg-]o^_G<lfmTqk2YFYhV?i<f@86tf%/<rc-4ASc,dl@_>_+P]=GDY[^N[6[Jic!92,=Z
+ISN[8:f1+h<)lt"=BSd2>[1TB?t*SUAS,UiC27[(E,fr@G'A4XI!pKpJqJc3M2I7OO-#NhQ'[o.
+S=Z@HUSOccWiN8)Yd1UC[^`o]]t_A"_o9X:aihoRcdC1ieCN7)g=tH>hr*JQj5f@bkNV6rlg4$,
+n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcEgJcCo5J,~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh488IBp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_']B5rBJK_L?$Mti8+NSTWnDZ=YMD?+VLE;a_PE;a_JE!1)uDf9UkT)>,Z
+T)>)ZS"0DGrL=7bS=>t9S!oe8S!olGRg,CPR[oq:S,SoZS",uIRf8cYS=?"9q*jmElUUP9pI4O=
+q*P=TS=Q4@SGf#XT)P>dSt2FDSt2GNS,f&XRf8c\S=?":R[]fESGf#VT)PD_TbX;sUnjldWiW>)
+Y-5+9Za@*I[C<WTrj`iW]tV;!_o'@._o0O5`lH0Bb0%oOcHjl9dJqW-e'ujre^W1%f@\j7hrEka
+nFZO-s31KLg;Uk=\[o8Z[^H,71\BVP`4CPMX4I=Ni44<FWhsrOE,ABsH$<"^:kjXUK7SW*It1<k
+=&`*r;Gi17P`qAqOcBApjNG9O]Y(hc[^<EHZELF5WiN(qV4s]XTq@gGSXPt7R$a/(P`q;mNJrmV
+NJ`UOMscK%8c_RYr_7i::Jakb;H$Op<`W=*=^,-9?=.)L@Us%^BPD3sD/O<4F*)SLH$XjdIt3-'
+KnbGAN/`m[P*D5uR@B_<T:r$UVPpMqXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daQ^sf@em4h;-uH
+iSrnYk2tjkl0@U$mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`np&9OBP5g%~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh3qr@Ap%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_'H77^'GrD<Mkj\YYJkYh:<s#Bp8s#:!>qE+1-n2pJJ!*9#!s&T,!s&K/#
+<rQ(p<VBDh<<?,u;tj8h<<,tn7Is"78+T4E7INY?6iC$b<rZ8$<rQ4t=oVY*=oMM#<X;]+='&L+
+='&N'<WH5"=9Vi/=BAU,r)s&'#$Y><?XR8KqdBG4"CbkNA7baP(M.5mC27['DJa6.DfB]9EcZ>F
+Fa&+XI/SKnIOfo!JqA]2LP^qKNfT<cPa@c,T:r*[WiiS2ZF.-M\\#Sl`5fsAaiV]JbK^%3(XURY
+eCN7(g>1WDioB.`lg=66p%S:[rdk)!s29%j?=$uE>[1K9j2e3^HuES#7RUI+V5AlQ5@IPl1Ft@=
+00ME[0K(cd7h\<\77B[,3Bo\k4?GZ"<)cdp<)eqY'BuNHBOP7R?X@#D>?tN<>[(E8>Q.e7=]\^-
+='&L(<*!!t;uTbr;u]\u;Gg7f:Jq'en5'$U!D?,c9n#i5:f("e;cHat<`iL->?kE>?XR>PA7]@d
+BkhF#DK'T:FEVkRH@1-jJ:`E-L5CeHNK90aPa.T'S"-(BTqeE\W2co#Y->4<[C3TV]Y2(q_Sa@4
+aN;WLcHjnde'ut#g"P3:h;@/LioB+^k3)!nlKdg(mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTe
+rdk*4s*t~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh5POmFp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`PTI+^:_'jH]"YiX0/Y1YkkX(Zi7B3[f!W5\c02>]D]D&^%RQeNrb?'rfI#>!0[>F
+oof?=pll;PQ'7Grda?Lldacmsf%/CNdj3Jme^DssdF6LkdEp=gdF6RldEp=fd*U(acd:(acI("e
+e^;hDd0J.Kd*^7fd*hp@!71O2p.!n/og\aGn3m(>s2tAb#0b?:cHstermLkqrQu,%cHXSUaiVWE
+`l5m8`5DSms2>)[a2l@$a8=!Ya9p)5bg"J]e'ut%h>Z=?ioK7clKmp,nF,o<rq$?dpA"O_rr.KK
+U&P,lrqQZjoCDMMrri8kUn?TDrtF_(pX7-PBUN/'V4aDc@pQUNYd+20&?;[6>[^uG?!CU?b/hTB
+`5IT6/GoA@p\+.Hmd9?)kND!fi8EGGg"=j(daZjudE]tYbK\8P`PKC*]tV.h[^H+Cn$RU98kM`L
+9MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Uit]B4u$qD/O93EccGJG^=^bIXm!%KnbD?Mi<^YP*;/t
+R$sM9T:r!TVPgDnXfen5ZaI6O\\#Mg^V[n-`lQ9Fbg"G[dF6Urf@\g2gtgiFi8WeXjlYail0@U$
+m-aoB$h3]Wo(2JFp%A%Pp\jjgq>0scqu6NlrUg)?s-*J5~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh4SSRCp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`PTI+^:_']BQ/BIKo#Y`r/19.pl3seqecCPphp(Lq/H7Mr,DOOq/H@P%WH?*Dk3Dh
+St)CCSXuFDrgY%#S",t<S=?%<S!oe8R[]h;S"#k9R@9S3R[T_9R@=,F&tPJ\R[T_8SXc1>S=5n9
+R[]e8qaL3JhFI6.q*jd@q*Y1PrLNt[s.B7_!M>t^SH>=NS,SlVR/i]SS,A`SS,\uYS,JiWSc52h
+SXuIHTqS3UUnjibW;`e$X/rG,YHY>2[/[Q>\%'&^]tV:urk]2``5T^8a2lBFb0/#RcHjl9dK.hH
+rm_S3f[nd-f\,$9i8Wk^m-jTCJcF$q$.d,3]XbSa\@8pGs"jT6dDWVJI]_?(s4t,@_P*?<;K,<V
+H['^.;c&4&KS+i.Jq&;H:fgUq;Gg;GQ^!c#PECk)*ob;U^:h.i\$iZNZ*:F6XfAD"VPU&]TqIsI
+St279rKdtYP`q8mOGo3ZN/ELNMscIO8P2TJ92&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:E_XAnPdl
+CMds-EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQ^F52StD^NUo(&hWi`G.Z*UjH\@K5a^;%P&`Q$!@
+bKS5Vd*^=lf%8R.g>(N@i8EVTjQ5OekiqBum-O0?mgJXTo()DDo_%nNp@nO\!r;]hr;6KkrVcBf
+JcCr6J,~>
+JcC<$PQ1=TrVc`nr;6Njs7uZh488IBp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`PTI+^:_'G77g*G:ZP@H;<(RN3W1r:2ubi=3BB4u47>6*3rh>?48i4_<``@'r`B)"
+"'8K'<;ol!<`N2p<VTMo;cN`r"'/E%<;oer<V]Vo<<-"q7J94-8+f@I7IW_@6iL*c<rQ/$=BYT+
+rE9/(!*Jtrs&],#rE&o!!*B,$#[(84=BSg2>?q,4%:<FI?=.#G?=.,N@q9-KB)cKGBPD6urGDdW
+E,fl<F8g=cGBeF\I/JF1It<3*L5:\DN/WaWOHYrqQ^F53StMp[XSo:NYHY@A\@fYsaNDZKbg+P^
+dEp=jeCE.%g"Y?>hVdDSk3;7%o(MkSr;D3H"TPoM@UK+@,@+MX>3s\FR=K3e>=M"cI]T>q>sN1"
+82;YP.m6$X4"rQL8H)*`77K^77QNU04p*o.4AGfS!`N)tO8fpUV0lrb?XI,H?!LT>?<LN;>$G07
+r`KY1=B8I(=&r@%<)QXqrDX&#<)HRk:f("cr_EMknP=U*8kM`L9MJ5V:Jakb;H$Ln<`W:(=^#'8
+?=.)K@Uit]B4u$qD/O93EccGJG^=^bIXm!%KnbD?Mi<^YP*;/tR$sM9T:r!TVPgDnXfen5ZaI6O
+\\#Mg^V[n-`lQ9Fbg"G[dF6Urf@\g2gtgiFi8WeXjlYail0@U$m-aoB$h3]Wo(2JFp%A%Pp\jjg
+q>0scqu6NlrUg)?s-*J5~>
+JcC<$PQ1=TrVc`nr;6Nj!;ZTg!Vc<eof2U8o()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_$kI#4_mY-5&.YlD!-Z3%A>[/RK5[f3c7\,s4P])K>@]\^?nOT(==OSk73
+P5^[=PS_fse'c^oda?Rpe^N(!eC;ste^W-ue'S*B$.%&KeBuaoda?JAcPP!Ud*L"acHab_daHOk
+da?Ifcd:(ddEqm?!7:^6pdWb'pdY$InO31?!QiL`bQ#cec-QC9s3V2#cd0k[bK@uKa2\+ts24rU
+_Yq@X`5T^8`l5p;a8F!f`l6$AbfnA[daQ^rg"ZM^(#Im/jlYdklL+*/nF?,Bp%J.Vr;HVGs.TGt
+rqcKdq"F=Nqu6ftntVi;rVn7F\,N,.P%BnjWMH2Y?".-M['?m;Xf\V%>?kTD?X-f@ZHC;0`l,fR
+s"!sDq=sXQnF#Z/l0.<lio&bMg=b-.dF?^teBZ:_bf\5PaMbp4_7dRq\@;FFn$N-er^qW49MJ5V
+:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm!%KSG8=Mi<[WP*;/sR$sM8
+StVmSV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\d1gtgiFi8WeXjlYail0@U$m-X91
+nF?MK!V>s_o`=d\rV6Egs8)]krVZZno_sFAPQ-.~>
+JcC<$PQ1=TrVc`nr;6Nj!;ZTg!Vc<eoeuI6o()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_$]C2eWNM#<,0MZ&J2N;&=_NppraDu4MNDuFYTDuX_SDu=SOD[2l)St2IE
+SXf\M!1a"Y#Fq?US",t<Rf8cZR[]h<S,SrXS,SfmS!oe6R@BY6S"-"<R[]e8S!f_7S=?%;S,SlU
+7JK@%8,,RK7I`eA6NWaISG\rWTDtJ_Sc5/WS,\rWR08tJS!ofER/i]QS,AfSSID-`TqS3UUSO``
+VPgBlWW0"5XKAY1Za@'G[C3TU]">Vi^qdh(_u@US`<sW+aN;TJbKS8XdJ_K/e'umuf@\d0g=k<;
+hV[;PjlYgonFld2s3UcPe&B,8]XYP_\$l881@*K.\Uo76hZ*W1LQ'H)Kl'Y);g`n9F\Yk2Lk^S8
+JV&H&J5/pA;cHXl:kk=%QB[PpNW0%:ao9!f]=GDZ['R!AY-"h*WMcVhUnOKSrgj+[rg==aQ'R]$
+PED#hNfK*XMi*FNmYV!9r^qW49MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJ
+G^=^bIXm!%KSG8=Mi<[WP*;/sR$sM8StVmSV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Uq
+f@\d1gtgiFi8WeXjlYail0@U$m-X91nF?MK!V>s_o`=d\rV6Egs8)]krVZZno_sFAPQ-.~>
+JcC<$PQ1=TrVc`nr;6Nj!;ZTg!Vc<eoelC5o()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_$G7S$-Gk"tkNhGX,/r&=a:3&pmts#U*?mQ1&'qH!Ytr`9)#rDs&$=',?$
+!*0#!s&K)"qc3Jlr`&qtqGmMnpf%5nr^HTOe49:'pdO^@q*P-^r)Wi!r`T8'!*T;'!EiP&=8Z,!
+<rcA$=8uD&<ruK*=8Q)$=]ef*=UA;9>?kH>>[1Q@rE]G0s'Gk;@q9-IAcua\CM[keDZ=V`E,fo?
+F`hkNGB\:YIK"^dIXcp$KnkJ?M2R=PO-#NgQ'R`$QC"&2U8=fcVPU)bW2m&)[_0Grair#Vd*^@n
+f%Jd3gt^`Bhr*GPjQ,LhmI0Z@q"t!gJc@8#VJfmM?!^lD>[1J'gVBM;F(JQF6skSOUOGj&F?MW<
+.PreB5!1n^1c7i'7g;=M77B[+3W;2G4$#Gt<)ifpO8griSpG$X?!goC?!LT;>Zt?9=^#!5=]ng.
+=B8L*=&r=#<)Zar<)Z^p<)ZXl;,C+f;#X5j;=RE^8cD>292&&S:/=\_;,U=k<)lt#=BSg3>[:]D
+@:E_XAS5[kCM[m,EH6/DGBeF\I=?]tK7nu7M2R=QO-5]lQC+,1SXuOLUnsugWiW>,Z*UgG\%0,`
+^;%M$`5Td<b0/&Td*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O-.n*olHncA@Srq-<cp\jmeq>^<i
+qu-HlrUg)?s-*J5~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq/AFoCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:kBmYc8Up@2-Yd(J4Z2h61[/RK4\,No:\c95@]DfJ%^&>VC]DmrcOSb+;
+OSb11P5^[FPQ6mFPQoUbe'cXmdf.]6dF?^sf$r0ue'lgre^`-sdF$CicdL:idF-GAdfRnDd/D;j
+ckF^Pcd:+ddF$CjdEg4fd*^4ecI)GWb")7sqF0pBqEk;)ao'9`bKS2RrlkDc$d-T5aN)<>`Pf[4
+_u.@Q_o0Lm_u@RT`Q%nt%`ZH+`lQ?Hc-Fbde(!"&rS&(Bh;I;Pj6,[lm-X93oC_hNq"jpfrdk*D
+rs8T"qYBp\oCDMMrr_qhTBZ=S';rkMSuId>Q"?kiTUfb)?+.,FYl:a8Wi0*+@:*AH>\14bb/_N>
+MZ51'rVH<^o'c#5lfmZrk2P=VgtLH6e'lmte^Dagbfe2Sb/_H;^qdXs]=@dIn$N-er^m2a9`@b8
+:/=\_;,^Cm<E<1'=^#$7?!^lG@Uiq[B4u!pCi4-0EH?5FGBnL^I=Hd!KSG8=MN!RVOckrpR$jG7
+StMdPV5L8lXKA\1ZF%'L\[oGe^VRe*`Q-'BbK\>YdF-Opf@S^0gYL`Di8N_VjlY^hl07O#m-X60
+n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-*J5~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:k>A8),Iu=5^s,-Z2nr;@`rf-Gc!c;gmrGVLNr,;OQ"E/0pDJoGl!-%gR
+$D!]XSXc:BSt2FBrga._SXc8JSH#)YRL#COR@B_9S",rHS-#+JRf/W\R[]b9S"-":R[X5F#b%9R
+S",t:R%!h?b")7sqF0pBqEt:PrLEnW!h,OGrgWhSs-rnS!1EeQ!1E\Ps.'+Ys.'(Zs-t=+TV/$R
+USO``Vl-JlVl6SoX/rD)Yd(O@['dBR]"5Me^VI_c_tq;!`lH-@b0%oOcd:%ddaQ^rf%A[0gYL`C
+hr3SUjlP[im-sW@qu$BjJcF:#$IHf,]Y(hd\@K&Urr4_Egr[0\IC.u5s4N-lgN\*\Ec4j&H?aO3
+;GW(&KS+l-JU`2F:f^Ln;GgGKQ^=#'P)TDWg;Ue@]t:h`[C!9FYck11WMuemUnjZXrgspsR[KS2
+Q^*i&QBRJnO,]-XMi*CMMscH&8cD<_92,=ZISN[8:f1.i<)lt#=BSg3>[:ZC?t*VVAS5[jCM[m+
+E,fr@G'A4XI!pKpJqSl6M2I7PO-,TiQC+)0SXuLJUSXleWiW>+Yd1XE\%0)_]t_D#`5Td<b0/&T
+cdC1je^rF+g=tH?hr*JRj5oFckiq?tm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcCr6
+J,~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:k6q9d@9MsqKr__KLr_`\Tq)S=3!]N(urAaj=rB'C-s#U3ArB'sZ!*9#!
+!*9#!!EN:t<rZ/"<rQ)!<r,hm<;';n<)Z`k<;B#+8,5XN7I`eB6iC'a<rcA%=8u=t=9qu/<`N1$
+='&N'<WQ<*r`B)$s&f>(r`T8'r`T8)s',J.s',S1?N"10?N+;G@Us%^AS,RhBP2$oD/F31DJjB3
+EH#o=FEDYJG'8+UH@1*hJ:W<*L51VCMiEdZOckonQ^3o%QC"#/StVjPU8+N]Vl-MqZ+.Qea32`S
+dad"*hVR5NioK7akND!kkj.U(nalJMqYYpEs8O=4CLUUU?!^fB>?b:mb,UMKBjF4t@>;+_H:^PV
+3AiKK1bV&l49@Du2>p#U6UaI57QEIm5!:tg4AAgTr_njW%FpniARJqQ?X6rA>?Y;2>6%h*>5q_0
+='/R+=&rE%<W?"r<";i);c6Fh;,C+f;GU+d;=RE^8cD<_92,=ZISN[8:f1.i<)lt#=BSg3>[:ZC
+?t*VVAS5[jCM[m+E,fr@G'A4XI!pKpJqSl6M2I7PO-,TiQC+)0SXuLJUSXleWiW>+Yd1XE\%0)_
+]t_D#`5Td<b0/&TcdC1je^rF+g=tH?hr*JRj5oFckiq?tm-O--n*fc9o()DErq-?dp\4[^s7u]k
+r;6Kkrr)KgJcCr6J,~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.7iC4(u<WOB%8Z*CU?rj2U3!k,SIrj`!=s186Bs1I@)qn2g<s,R)>qN1N6
+rK-i;nrj$:!L/cHPQ6mGdl>b(daQUle'lame^Dsse'c^pe(3$ue'lane'ZLhda6Chda?LkdE^%b
+c-Xb^cHae_cd:(gda?D>d0.hBd*U2<7d!;:8E`S>7f#RD7/B7UaN;NDa2l?BrlG,]#ft-0aN)?@
+`Ph_ms2"`N28[8J_8*k&_8=+.`5T[5`Pf^6a2uNLcHt"feCN4'g"G-7gtpuJj5f@dlKdg)n+$#A
+p%eF_quH]prr2lrrdk*Nrs8Q"qYBp]p%.ePrr`%lT'lRW-DelbW1f<BP[^SdT:BM%\@8fLYcY"/
+X*7cR@:3GI?&c/6b/_N>MZ54)rqlK`o'c#5lK[TqkMkFWgtLK7e(!!ue'ZIcbfe5Tai;38_8!at
+]=59K[K3eCn?i6fr^qZ59MA/T:/=\_;,U=l<E<.%=]ns6>[CcF@U`kZAnYmnCMds.EH?5FGBnL^
+I=Hd!K8#&:MN!OUOckroQ^O>5StMdPUo()jX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8XdF-Oof%8U/
+gYL]Ci8N_VjQ>Ugl07L"m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcCr6J,~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.7i>AA5/K8]\bs,-f6rf$H.erKcImr&)BpMg+MrG_dT")_smDYe8ODZ610
+S"6+ASGeufS=Z4@SXc1>SXc:AS!s>G&tGDYR[]b8S",q:S!o_3R[9G0rgEbTrgX7`R[KY8S",t:
+rgWgTk=>;<kXYG<qF0pBqEt1M".GXFR/WNORK/iURf/ZSQi`VAR/<9ORf/`TS-tmXS"#t@TVA0U
+USRmdrhoap(94F;Y->1;Za@*J[^`iY]=u%r_ns:.r5'l"`5KX7aN;QHc-ObadaHXrf%AX.gYLcF
+iSrq\k3(snm-aB6p%S=]JcF=$$hDQ]^:_+j\[f2Y[Jp1\qr5l8KRLDms8U`)QdC5+C3"2gI!KsZ
+<)SL,KnG#0JUr;X:f(1k;c6J1L6n6mQBI7-*Vn=)^V7Cm\@&`O['?m>Y,nV%VP^/cTqS*NSt;AK
+R/`H_Q^!YrOH5E]N/NRNMi3ILn;73;r^qZ59MA/T:/=\_;,U=l<E<.%=]ns6>[CcF@U`kZAnYmn
+CMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOckroQ^O>5StMdPUo()jX0&S0ZEpsI\[oGe^VI_(`Q$!@
+bKS8XdF-Oof%8U/gYL]Ci8N_VjQ>Ugl07L"m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEg
+JcCr6J,~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq//@oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.7i6qBjB:%qK`;=dWa;;P4J;?&TS3;Y`23;kl:3rV5/3WV<'r]:6D=BJX*
+r`9)#rDs,&=&rC(r`02(<``=&<W,tt<W?+r<W5qt;uTbm<<?3$<W5qt;u9Pl7d!;:8E`S>7f#RD
+7/B:N<rZ8!<WZ?'<r?&%=]ea+r`&r!r`9;)<E<4'<`]3$"B\i1=BYW*#?b/2=^#!5>Q%h*?2n4@
+?!^lF?t!MTAS,OeB4trWBEi6gDJsE1DuFVpEHH>GG'A+SH$XjeIt3-'KSG;?MMmITOHG]kQ2[*o
+QC!r+R[]k=T;&-ZWN3&"Xg,7D^;J%8c-Onngu%,Qk32+/ljN7MmdK]:oC_kRqu)*G5QC24Bjk7P
+?!LZ?>?b7ue$YQmCg]e%@u@LbGt:JM3&*$D1bV!T4?YS]7n?-?7R]a87QNRj5!D+k4%2kC<;ogV
+rt*G<EarKa?<plC>[(H;>?Y81>5hY/=BSa-=&i<#<W>u,<)lmr<)Z^m;Gg:f;,[?hn4s$Ur^qZ5
+9MA/T:/=\_;,U=l<E<.%=]ns6>[CcF@U`kZAnYmnCMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOckro
+Q^O>5StMdPUo()jX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjQ>Ugl07L"
+m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcCr6J,~>
+JcC<$PlLFUrVc`nr;6Njs7uZh6hg<Jp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(gC4M;AYIUmBZ*L[A[/RK5[K3kIrOMs>!kZ+Xn%Jb6q7Z[<ot10_rf@#>
+pQ,66plY02$'UU<P*FABdaQYCe,7W5d*pLoe(3$se'ujqeCDspda?CedF-Iid*^:krmD;'dF$7e
+cHah`cd:"bdF8'A#LLlGd*L$-7dik,8FK(F7f#RE7/B:Mao09ba2Z->`l?!s`rF!X`;[XS_Y:eM
+^qmk(_Sj@0rPT#]a2lHJc-F_bec+,;f\5-9hV[8MjQ>UfkiqBum-X93o(;YMq>'pa"T8/orVhBJ
+Y5eP!#5\/kp\4:Oqu6cqn"8V<s!FSds0&,WRZh0XTq>V$@(<\OZ)t11XfGT/?"%,I?!OV>bfRoF
+`/=RKrVlZfp$hG<m-Es"kih*dhqZu>f@/:&e'cXhcHOGTc,mrA_nj%$]XbM[\$`ZQ[.(L'8cME_
+97KW09hnJ\:f1+h;cHdu='/U/>[1TB?t!MSAS,RgC27[(DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#Ng
+Q'[l,S=Z@HUSOcbWN3/(Yd(OB[^`l[]t_A"_o9X:aihoRcdC.heCN7(g=tE=hr*JQj5f@bkNV6r
+lg4$,n*fc9o(!%Wo^qhLp@n=\q#C0iqY^6ir;HTerdk*5s*t~>
+JcC<$PlLFUrVc`nr;6Njs7uZh554dEp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(g>\nJ2LQ..IregW3!0$o:rf6l8muIF-m>h()rGD%Ar,;=Ks)7gS!H2lT
+D?"MRDZXfpSGo&ZSGA`USGo&_S=Z:@S=TVKs-a=bR[KS4S"#k8S"#rIRgYXQR[BP2R$sG3S=BMJ
+rgNkVs-s4]R[Q]8mmlA.mmm4DqF0sCqEk@RS"#lGR0K+JR@BY6RJWHOR08nDQ^F0<RJrZTS,Jib
+SXc1=S=ZCIU8+KZrhf^n!i`3"ri6^6YHb@=Za@*I[^WcW]">Yi^VI\a^ad1;_o0O5`lH0Cb0A8Z
+dF-Ope^iC*g=tH@iSrnZkND*pm-O33oC_nUrdk+#rs.o7`4`jr]=S!O!4Mk+-0`mr[=GIDs8UW%
+S(rX?Bl\&eI!Kp2<)JC*KnG#0Jq8DG:f(3l;[60RL6n6lP`q+,+nF+!_SEjs\$i]O['R$@YH4_&
+Vl$8bTqS-OSXl19R@'<>QOf=COcPK^NK&jRMMmCMM2Cb[s%35_s%@i89heAY:f("e;c?Xr<``C+
+>$P<=?XR;O@qB7bBPM="DJsN8FEMePH@('hJ:W?,L5:\ENK90aPEhK%R[ftATqeE\Vl?`!Y->1;
+[C3TU]=ktp_Sa@4aN;WLcHjnce'ut#f\5*8h;@/LioB+^k3)!nlKdg(mdKW6nac5UoCV\Jp%J.S
+rqQNhs8)Zjrqu`np&9OBPQ-.~>
+JcC<$PlLFUrVc`nr;6Njs7uZh4SSRCp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(g6qBmB:/UmbqGHo^rDE5cs&&8`r_`PjrAX^8qDnC3r&O^:r]BU1s#UEG
+4'#Eb=]tN$!*9)#"]e]+<`W<#<rZ/"<rH%r<r>to<;KSr<`N/q<<#GV8)d).8,>^O7IikC6iU3q
+<`N1%=B8L)=BAR)r`AttrE'#"r)`l"s&fA+=oMM.=]eg0>?Y37r`oD-!+,Y4'4G9V@:<YVAS5Uf
+B4tpjBP;-rD#S9DDJsH4EH62FGBeCYH@($eIt3*%K7nr7MMd@PNf]BePa.T&R$jD3S=Z=ETqeH_
+WiWD,YctF?\@fYub0A8\e(<=1iT04gmdTcGo)A4bo_/%RqYU5BrsA_^L1k"#?!LW@r`h<bpYEWX
+LN-g,6sbhZUNoC(JiPY@2)6dI4?P;T2b-D/7n,s:7Rf0p3BfVi4?H82<)Z^p<0$t^`/S_G@:9(@
+$=-n@>[1K:>?b97r`KA*=BAU+rD`u";c?Xpr_j5);Gg=h;,:"c;G^.cn5''Us%<;aInWR2:/=\_
+;,U=k<*!%$=BSg4>[CcF@:E_XAnPdlCMds-EH6/DGBeF\I=?]tK8#&9M2R@SOHPfmQ^F53StD^O
+Uo(&hX0&P/Z*UjH\@K5b^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWBi8N\UjQ>Ufl07L!m-X60n*ol<
+nd"dYo_%nNp\4[^s7u]kr;6KkrVcEgJcCr6J,~>
+JcC<$PlLFUrVc`nr;6Njs7uZh6hg<Jp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`59@*^:_(gCOqVGZFmHIZEggD[JmW5\Gs,=])TG6^%T)=]D]D3])[oiNrG(>OS"V4
+OS+b0P5g^QPg@_'dF$Cke'c\@dfRtHec+&$f$r-seG[hrd/MGmdKRtGd*L+frR1blrQtSi#LC]A
+cd:"bdf%PqcdU7fnji:Bo1AOEnjiOGqF1!DqEt;(s2PDd`l5p;`l?!:rPeuY_ns7*pqHjD^])"M
+_Sj@i`;de"aN;ZNcHt"heCE.&g=tE?i8EVVk2tjjkiqBulg4'.nac\Os7HKfp\4I^q#^EirIP!P
+rs8W#qtg-`p\"1TrrVb`h#76cUs/kJTT,A&@Affk?"@<P[^*.:X:VM6=^53??s[,DZa.cra2c)U
+s"+0JrVH6[nF#`2lg!]tkMkIXh:pW7eCN=&dEp1abKJ,SaMu-7_8!as\@AsG[K3eCn?r9fr^qW4
+9MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm!%KSG;>Mi<[XP*;/s
+R$sM8T:r!TVPgDnXKJe4Za@0N\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$
+m-a?2nF?PLs76Edp%A%Pp\jjgq>0scqu6NlrUg)?s-3P6~>
+JcC<$PlLFUrVc`nr;6Njs7uZh554dEp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`59@*^:_(g>\nP4M2dCMqMP?4rJgf:s,HN.oo8a,ooB)jr,(q@rGV@J!,qgTs).mT
+rb_[Q!,qh+rLNtYqOI\XSY#hO$(d]WS=Q1>R[TZDRfAiZR@K_6qjRSPrL*\Q"IYXGS"0JIrgEtZ
+R[oq;nji:Bo1AOEnjiOGqF1!DqEk:ORf8`SRK8nHrL!hXS"#k8R/E<JRJ`KRS,SrXSJ.N_S=Q7E
+Tq\9VUnsobVl6SpWiQ-#%^*">Z*LaD[^NZS\@K/^r4W*E.DWd:_o9X9aN;TJc-O_`daQ^rf%8U/
+gtglHioK7bkj%L#mI9`@p\Oi>s4.,WjiYKU]tM(i\[f2YrVnSAfZ(FQWo!dUdt4(9M0N]RD,5P)
+G"kn3LPCP8K7\]+Inig:<`;mp;20glQBd\tNW0:Od(mE2]t:b]rj3lUYck71Wi;nnUnaTWTV%dH
+R@'D/Q^3u'PEV,iO,f3YMi.Ll!fDejnV[?<r^qW49MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\
+B4u$qCi402EccGJG^=^bIXm!%KSG;>Mi<[XP*;/sR$sM8T:r!TVPgDnXKJe4Za@0N\\#Mg^VRe*
+`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$m-a?2nF?PLs76Edp%A%Pp\jjgq>0scqu6Nl
+rUg)?s-3P6~>
+JcC<$PlLFUrVc`nr;6Njs7uZh4SSRCp%@tKoCDJBnF,f4m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iF`59@*^:_(g77^!C:/^pbqGI#ar)*8fohk'R!''m8r]'a7qDeF6r&Xd<nN$\4=8c/"
+=T2G'=RoPn<WZ?'<qo\n<r>qt;u9Mu<E)st<)Zcq<Vobd8+T:C8b5LD8,>^O7IrqD6iC'i=B/@%
+=BGH%r)`o!r`9)#qH*Vt"'Jf1=T2G)=B\o->Q7q4?!LZ@?=%"<@/OI5@fp7RAnV*V"D;C^Bl!]a
+s(sQ0DfB];FEMePH$OabI=HcuJqAW.L51VDN/ip[Ocu#qQ^F20S"#t@U8+T`WN*#%Z*^n;[NE#l
+_8XR@c-FV^eCN=.i8s.fmdTi@o_%nNp@nCZqu20H"olhtARJdB>p3N[>Zk80k/jT]G%OrI=b3rT
+G=G;M5;OlL1bLpR4"rQMr^RYj7R]a875d1e5!D+l4&&CJ;c?[pO8fUe]7k-2?=7/H?<g_6>Q\88
+>?h)1s&fh5=BAX,<E3!u<)Q^q<)W]p##\;s;Gg=hr_NVm;".9\8cD>292&&S:/=\_;,U=k<)lt#
+=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=?]tK7nu8M2R=QOHPfmQC+,1SY)UMUo(&hWiWA-
+Z*UgG\@K5a^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O0/n*olIo)J:bo_%nN
+p@nO\!r;]hr;6KkrVcBfJcCu7J,~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg621*Hp%@tKo()>@n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%fCkS%P[_/oPZa@.>[f3c7\,j.Ork&3Cp:^76k.CVRrJp?-rfH`6plbZ@
+#0tQ@cHsqarmLhq!RfHodKJ%Ie'cbEdgOUQeC2jpdE^1fcd2R:s3gqrs3VM.cd1"`cHX\]cHsna
+daHOicd:&48,#R68bbjJ8,GdP7IrqD6NP6Ir5AZSrP\fU_u@OQ_$%Qf^V@S^^]2%I^]D<ir5ATR
+)T^%Dbg"M^e'uq"f\,$7hV[>PjQ>Xgkih9qrp(!ZmI'H4naZ2?nac;Erq6Hhq>:,As02M/rquZj
+qYBmYoD8IgoqL%9rtD0]rQCjmRZaVHTq>V"?F[DJYc[o+&$&l<>[_#H?!O_AbfIiE_MeFIrVlZj
+p@IeBmd09)kih0hiS`PGgXt',g""KrcHaVVc-=>L`59@*^:Le`\@/lTm^3'd8cD<_92,=ZGtq.3
+:f1.i<)lt#=BSg3>[:ZC?t*VVAS5[jCM[m+E,fr@G'A4XI!pKqK7nu7M2I7PO-,TjQC+)0SXuLK
+UnsufWiW>+Z*UgG\%0)_^;%M$`5Td<b0/&Td*^:ke^rI,g>(N@hr*MSj5oFdkiqBum-O--n*olH
+ncA@Srq-<cp\jmeq>^<hqu6NmrUg)?s-3P6~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg4SSRCp%@tKo()>@n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f?>Oe9MN7Okrf$c7muI"!r/U9-rbh[Omr&,Cmr/;GDZ4MQDZ6.+S,So^
+SXc4@SXc8JS-5CQS=?)JS-tgVS=5n9R[KY6R@4#B".PaKS,SlVQj]=KR$X50R[fk:S=BMHs-r^P
+pIO:8pdk!HqaUENo0iFBqO%JRR@0M4r0dGKqj@JRRJrZTRhqTcSXc1=SXl@ETq\9VUSO`aW2Q\q
+X/l6%#d1A8Yd(RB[C6(Ds1&?F]=bbg]Y4<Y.)3U8`5Ta:ai_fNcd:(fe(*"#f\,$7hVdAQjQ>Xi
+lg4*/nFQALr;M9Iec,p5b/1p-]tM%grj_q,0`'YL]Rlp/s8UZ$VTYEPBQ@p9HZsX-;br1'KnG#0
+Jq/>G:Jb(j;H$GILR4<lP`^t*2!E3"^qROo[^NTMZa$a<YH+\&Vl$8dTV8$NSt2::R$X,)Q^*f"
+OcPQ`N/NRNMi<ROMM^k\!D#f]8c_RYr_7Z5:Jakb;c?Xq<``C+>$G6;?=.)L@q9.`BPD6uDJjE5
+F*)SLH$XjdIt<6*L51VCN/is]P*M?#R@Bb=TVA6YVl6VsXfo"9['mHS]"Gbl_8=.0a2lEHc-F\`
+daZh!f\,!6h;7&IioB(\k3(smlKdg'mI'H4nc&([oCW%T!VZ9dq#C0iqY^6ir;QZerdk*6s*t~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg4SSRCp%@tKo()>@n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f6qBpD:/^pbq,.&drDE>fmSWIO!]`5"rAX^8pc873rAj^8s#]g5!BW@A
+=8c/"=T2G'=SPts<WH4t<rZ/"<r5nq<r5nq<!ZE%;cH^p<)Zcq<W,nj8,#R68bbjJ8,GdP7IrqD
+6iU3n<`N.#=&r@'=T2D"<WH5#<r,nr=T;M1>$5$3=]em3>?q&2!+,Y3r*]M4s'u(>$"dg`C2%?q
+BkhG_D#\?IDJsK6EccGIGBnI\I=6TrJqJ`1L5(J?Mi<XUOHG`kQC+&-S"-%@TVJ?^WN3)$YHkRF
+\@T>e^VRn1bKS2QbK\A]e_/d:j6,[onFQ>Pp&t0dqYgDErs/S:HY-Vi?!dM9r`^-;nC=k0H>6_U
+;0T7GH:CkT82DhT2#]WA3\`NM7n<PJr^@>e2E3]\5!;"i9h\Mb;cHYUrt"e.Jnnk'?=.&F?<^]?
+>?q/3s&ok7=BSa.<`iF(<`E'u;Z9W+;cH[o;Gg=h:f:1f:Jakbn4s'U8cD<_92,=ZGtq.3:f1.i
+<)lt#=BSg3>[:ZC?t*VVAS5[jCM[m+E,fr@G'A4XI!pKqK7nu7M2I7PO-,TjQC+)0SXuLKUnsuf
+WiW>+Z*UgG\%0)_^;%M$`5Td<b0/&Td*^:ke^rI,g>(N@hr*MSj5oFdkiqBum-O--n*olHncA@S
+rq-<cp\jmeq>^<hqu6NmrUg)?s-3P6~>
+JcC<$Q2gLUrVc`nrVQWks7uWg!Vc<eof)O7o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqeDhaRV[_2UH!4Dd6!4Vs;rji$?rk/'?pq5Y!!KW??O8k7-O8b75Onk1?
+ci),lcd'h_dJ_MqdaQ\EdL+IOe'c^oeC2mre,@\reC)hEd/hS=rm:bpdJhT#d*^1bd*L(ad/D8n
+d*C"bchU*,8G5XA9(kjQ8G#FL7f,XH7/94M`!O?"`5BL2`5BI/rkSfS_8*e"^VKf_rkABI!lDjm
+rP\]S(WXY?bg"J^e'uq"f\,!5hVdAQjQ5Rfkl0iHl2^/Llic_DmHsBAmKr@Oo(2MIp\=U`JcE"T
+s8E6!qtp6ap@\:^!r8[brVmM-iq_)sN1""MV4aDb@9g@LZEX;.&#i];>[_#I?!O_^bfIlF_i+OK
+rVu`ip%%V?md06(ki_*hiSiVIg=Fj)g==QrcHaVVc-=AO`59@+]t(V\\@&cR[-tC'84ieQInNI/
+9heAY:f("e;cHat<``F,>?kE>?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`E-LP^nINK93bPa.W(
+S"-(CTqeE]W2co#YHY==[^WfY]Y2(q_SjF6aND]NcHjndeCE.%g"P3:hV[8Mj5]7`k32'olg4!*
+mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqucoo_sFAPlH7~>
+JcC<$Q2gLUrVc`nrVQWks7uWg!Vc<eof)O7o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqe?Yst:MN7[oq2G93o8`I&r/U-)qJQ=M!cDjln8A5Dno4PG$>s^OSXc4>
+S",t;qjdeYSXobM$D!]XS=Q1@S=H.?rgO"YS!oiFRK8hDrL3eUrgWqU#FLjGR$j;0Rf/]XR@9S4
+q+(6Op.=UCp.>*OoLJdJqaL-Fq*Y1Mrg<_Pq3_)H!1<YO!LfGURfAiaS=Q4@S"-%?StD\SUB76f
+W;`drWrT7#Y5b^1Z*:O?Za@.>[KO(L\@K0K])TAj]Y2%p_Sa=3aihoPcd:+he(*%$f\5-:hVdDR
+jQ>[jm-X92o(;\QrIP!ursRT&_8!b!]tCqd\[VM:,j*FeKRVDMs5\m9aJ3umED1b-GBHYZ:PXXV
+K7SW*J:LBj:f[Kn#>p5BQ^3o%P)]J`il]$O^:Un_[^EKKYct:5X/i8!V50o]TV/!MS!o_3rKdkV
+PE_5lO,f0VMi.Ll!f;eknVR?<8cD>392&#R9hnJ\:f1+h<)lt"='8[1>[1TB?t*SUAS,UiCMRd)
+E,fr@G'A4XI!pKpJqJc4M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_A"`5Td<b0/&T
+cdC1je^i@*g=tH?hr*JRj5oFckiq?tm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;QZerdk*6
+s*t~>
+JcC<$Q2gLUrVc`nrVQWks7uWg!Vc<eofDa:o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqe77^$D:/Xqd;"[Zc;#F2d;X[KL;Z/WT3<(r93;GT43;bf&3rN.[<WH5#
+<WH5#=TDS$<s_u1=&rC'=&r@'rDrYmr`8nrs&8tsr_rns<W5qu;cN`r!*&baq+13Nlq6tCqFL6K
+qaUHOoL/LBr`8u!s&f\2='&F&<E<1&<`]#trE0)&s&oY3>$5!4>$G80>le2:ra-@I?XI2K@:<VT
+@q9._B4tsmBPD3rrG,JND/F0/E,fr@G'.tQH[U?mJ:W<)KSG5:Ll74OO-,WiPa7])R@B\:T:hsU
+VlHf!Y->7?\%'#^^;.V(a2lBGbfe5TcHjngg"bKFkNhR+o_.tOq"al>s8W*JY'+;^>[1T@?!^c@
+=o\9R^7Kmo?V!P)TsKMF=)h+p/i>+A4Zb_[2DkA%%n&iT7Rf?s3BfYk4?H89<;oer;31_\l_o5D
+@Uf=D$!gkA?!LQ=>[(G3=q"J9=BJX+=BJU)<E)lq<;TT#;Gg4d;Gg7e;GcjY!D#f]8q0K-9MJ5V
+:Jakb;H$Op<`W:)=^,-9?=.)L@Us%^BPD6tD/O<4F*)SLH$XjdIt3-'KnkMBN/`m\P*D6!R@B_<
+TV8-VVl6VrXfnt7ZaR?R]"G_k^r"%/a2lEHc-FY_daZguf@em4h;7&IiT&t[k2tmll0I^&mI'H3
+nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-3P6~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq/5BoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\8R(gVmsD=[JmW6\,Ei>]">Seq7ZR9hn/lK!0H<'rfHc7rfR>FP0X'Q
+!RAshc4eONcdC4ie'c^odaQXme'Z[qda\9F-IgJle'caqdF6Lkcd0tbdF$=ie'QUld*L%ecHae_
+d*L%`d*U(br($TSpdsC9pdt?RogemKqaL*EqEt;!s2"uV_SO+*_8,o^!5SEFrkJTO_o)Gkrl#eq
+a2uNKcd:+he^rF*g"bKBi8WeXkNM0qlKS<5!:0XLrp('\lg4!*mI0N5o(DbQqu)*GYl=_$rqccn
+p\"C_"9%_]l2L]/ma(ppU5G@EWMQ;[BOP2VZ`pX7XKAM$>?tHA@:*8FZHpb9a2X#:0`D%Iq==+E
+md9B+l0.<njPf(RgtLB2e(`L#cd'h[bg"DTai)'3^qI:g\@8lS[C#D1IRm%%8kM`L9MJ5V:Jakb
+;H$Ln<`W:(=^#'8?=.)K@Uit]BP;-rD/O93EccGJG^=^bIXm$&KnbD?N/`m[P*D5uR%'V;T:r$U
+VPgGpXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiSrnYk2tmll0@X%$170Ln*ol<
+o(2MQo`Fj]p\ssfq>^<hqu6NlrUp/@s-3P6~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq/5BoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\6j)rIuB?^N;AP/NqA>/NpVo*NqdMjD=2<@Dt\/JDZXfpSGo&ZSGeo[
+S=Q1@Sc,&cSXc7@S=Q1ASt)AMSH#&YSGo!"R[]b8R@0M4S"#k:S!fe8R@'A2Q^=,-R[T_7S=>q8
+r($TSpdsC9pdt?RogemKqaL*EqEk7LrK[PPQC!s8QiNKPR/*0KRM_NaSXc4>S=Q4BStDaPUSO]^
+W2Q\pWiN9$Xq%Y>Z*CU@Za@-IZa@*I[f3`f\[]/[]">Vg^;.V'`5g$Dbg4YaeCE+#f@\j5h;7,M
+jlYdllg=-/nFQ;Gq##^CeGfp+`pr3,^:h1k]"#9Js"!Qi`4(9)qu?5uSC"ooAoULlH?aR4;GN"$
+JqJW+JU`2E:et(j;c6JIR$[f;N;kWjaM>U)]X>/S['R*DYcb.0X/`+pUSOWWTV7sHR[KS2R$X/)
+Pa%;kO,f3XMMd=MMZ/J&MLJ)f8P2TJ92&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:E_XAnYjmCMds-
+EH6/DGBeF\I=?]uK8#&9M2[FTOHPinQ^F84StD^OUo(&iX0&P/ZEpsI\@T>d^VI_(`Q$!@bKS8X
+dF-Oof%8U/gYL]Ci8N\UjQ>Ugl07L"lj<(In*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcEgJcCu7
+J,~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq/2AoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\4&q[9MY%RohtBYkYh@>of2e.r&FX8mQ(A/3rN1\=8Q"u=8l>&=Sl/"
+=T2A&<`f)tqGdPs<W,tq<W5tt;u]f%<E)pr<)Zdsr($TSpdsC9pdt?RogemKqaL*EqEt9`q,dMq
+"'8K&<r#hp=9_o3>?Y03>5_\*>Qe>=?<gh8?NFJ?r*fV8"Cu(UB4q3W!,;FI>AItgCM[j*E,fl<
+F*)PJG^=acIXm!$K8##6LkptJNK0-bQ'IZ&R@9V7SXl@GUo(,lXfo"9[^WfY]Y;1t`5Ta<b0%oO
+c-FY_e(*.+hVmS\md]oApA"L^rdk(prL@e9LjiW7?!UcC>$M%,l,fl]FCeWEA=L,n?:oHT1G1L7
+4oRPZ2`3H_7n,s977B[83B/u^5<_.k9iY0l;i^l7iM(X1@:EPM?<pfB>[1K:>[(H9>$G'2=BJX+
+=BJU(<E)mr<Dugq;c?Rm;Gg7g;,C%a;"%2/84cBF8kVfN9heAY:f("e;c?Xr<``C+>$P<=?XR;O
+@qB7cBPM="DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T&S"-(BTqeE\VlHf"Y->4<[C3TV]Y2(q
+_Sa@4aN;WLcHjndeC<($g"P3:h;@/LioB+^k32'olKmjDmI'H3nF?)?oCW%T!quB_rqQNhs8)Zj
+rqu`np&9OBPlH7~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7\YLp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(g\8R+hVRX:HrO2a8rj`!=s1/9D]Y+0Uq7Ph$s1J?Crk/6Bs,QB*rfI)>
+rK-i;rK%/EP*4,9r6Gu#bg+MXc-FY_e'c[nd*gCkd/DAqdF6Rme,@]#eC)jrda?Ijci29"c-aqb
+eC2dle'cRjchbohcd>6QqagQTe4TR/qagENqaUKPo0iFB#f"*g^qde&^qf`[rkJQL_#D+K^]M?h
+_YqFN`>6M8bK\A[dFHk#g"P6=hr*JPj5oFekl0fMlKRTul0/$/s6:!XmI'H6oCVbPqu$GEs0;V(
+qZH]ip\+F_!q`2Err4;=[K!k5@$kW,VP'Mm@C`qSZEC=2XfA=)?=I;M?<gdAcHOAM`esfrrr;d3
+oCDA<mHa*&kih3jiSiYJg=Y!*f@J6ncHZ=3%a2u4_83q"\[],W[C3HLn$N3f8P/nRIS3@/9hnJ\
+:f1+h;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNf]EfQ'[l,S"?7G
+U84ZaWN*)'Yd(OB[^`l[]Y;1u_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9
+s7-Edo^qhLp@n=\q#C0iqY^6ir;HTerdk*6s*t~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7\VKp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(g\6s2tIuB?]N;\b3NqJD0Np_u%Nr!YjD=2<?Du"AMDZarsS=KMJ!1a%X
+!LfMSS->CPSXc1>rga1^SXc1>rL3eWrgWnU!LoMVRLGRQS!fe9R@9V6R$sEAQNrnGR[T_97n<GI
+qFT1/qFUQTp.,!Lr'g3FqEt7Is-ESLqO%/J!goCDrL*bVSGo#WSc>8iT:hpRUSO`bW2ZesX8]7$
+Xp2)7Z*LX?ZMq31[/[Nf[^ENO[^WcV\\#Mg^VRe)`Q-'Abg+VbeCE.%f\>3<hrEh]l0Rg*n+$#A
+pA"I[rIP"!rs\GEi;``T_S*Xq\[]0Is"!p#aLd&+jT#4tMrTeA9Q3sYH$=C2;Mp9aK7ST*JU`2H
+;,pUq;GpAHR$R`:N;k`h`P9.%]XG5UZa-m@YHG".X/`+qUSOWWTV%gGS!f_5R$X/)P`q5kO,f3X
+M2R7LM27"FnVRB=8P/nRIS3@/9hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(V
+H[U?nJV/W1Ll%%KNf]EfQ'[l,S"?7GU84ZaWN*)'Yd(OB[^`l[]Y;1u_o9X:aihoRcd:(geCN7(
+g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9s7-Edo^qhLp@n=\q#C0iqY^6ir;HTerdk*6s*t~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7\_Np%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^:_(g\4&nY9MSG^:f-a\oMYH]k#21Us#:!=o/QV-qDeL8n2^S33r2tY=8Q#!
+='>N)!*9)##$+f-=BAO)pf@5kr`0)#<`])trD`bps&Atr!`VZ[qagQTe4TR/qagENqaUKPo0iFB
+#$+`(<``C)r)No$<E3)o=8c5%=^(f-rEK5*"'o5<?N+=3?3"@3@0BtH@UisJAHZXZBkV5[C0PIg
+C27X&DK'W:F)uGGF`r%VH[L9mJqJc2L5:\DMiE^YPEhH$R@B\;T:_gOU8+TbX0&S2['dBR]=bkm
+_8F42aN;TJc-FY]d*gFqgY^uOkNhU-o_/(Vqu20H$K-hVH'sqa@9m/Gr`oL'*VJ*mPBpqK7U(b\
+T4gTI68KrG0KhQ\4>o&e84H,K71D^T7QELm5<h:m4AJmUr_njW*SHm'AR]"Q?<plC?!LT;>?kB;
+=^#$1='/R+=&rH&<<cE$<)cao<;oes<)W]m"Ahli:f-UV!_>mSr^qW49MJ5V:Jakb;H$Ln<E<1'
+=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm!%KSG;>Mi<[XP*;/tR$sM9T:r!TVPgDnXfen5
+ZaI6O\\#Mg^r"".`lQ9Fbg+P]dF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI'H3nF?PL#P7T[p%A%Q
+p\ssfq>^<hqu6NlrUp/@s-3P6~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh6hg<Jp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g[r7"hVRX:H[C3NQ\,Ef<\[oBO]DoMD^%o>(]D]AB]DT>=]D[cUO8b4C
+OcYWbr/gi=qN1X#r6P;drm1Pj*n&E`d*U4fdaZXkdaQape'ugqeBu[leBuXjd*L(brm1YnrmUnp
+!mf0=rm(_ocd'k_qagTUm7R%Em7R7IqagHOqaUKPo0iFB"MDF^^;'Z_rkAHKrP/BJs1\QLrP/BJ
+!PuYO`;IRa`lQ?IcHsthf%8U/h;@,hi<SE(jQ>Xhki_j,roOdTk3(sll0@X&md]o@p\=U_JcDqR
+"8hohp\FgjpSHL?rt1h%R\G_-B;q`#S7Q-?\?`BCri?X2Tj1o5?XR2E?*_bua2Z,Us"=<Ip[dkC
+md0?+kih9oj5JtRgtLB2daZdmcd'e[bg"AUai)'4^q@1f[^NZS[-k@%8,u6\8c_RYr_7i::Jakb
+;c?Xq<``C+>$G6;?=.,M@q9.`BPD6uDJsN7F*)SLH$XjeJ:W?+L51VDN/is]PEhH$R[]k>Tq\?Z
+Vl?\tXg#(:['mKT]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mdKW6nac8B
+oCW(Us7QHerV-HiqYL-erqu`no_sFAQ2c@~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh4nn[Dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g[pa/uJ;]H^Mu\k5NqJD1Npi&!NqmSiD=2<>Du=SNDu?.'Sc>5YS,JlU
+Rg5IQS",t=St#_L&Y>G\S=?%=R[KV6R[KV4R@9QCRf/`URKAkCRJrTQRK&cR8Gc!G9(bjE9)D3W
+8G>XO7f5^H7/B:NQ2[*JQiEEQRJrTNR/iWPR/i]SS,8`eT:hjNUSFZ`W2ZesXK8P+riZ4(s0;R/
+rj2X3rj=5a\%&oW\\#Ph^VI\'`Q$!Bbg4\ceCN7*gYC]GjQGjrn*ol<o_81Yr;M9Ie,KI1cMIPC
+]XbP^qu8,-cb>(.g].<#I,oKsAoL[sH$=@1;Mp6aKS"c,JU`#B:fUFn;Gg;GR/WBOQ&YeuqU`U$
+^V7=g[C!<HZ*1@5XfJJ%W2?AcU7e-MSXc1;R$jA/Q^3l"OcYWaNJiXON/R([s%!,]r^m2a9`@b8
+:/=\_;,^Cm<E<1'=^#$7?!^lH@Uiq[B4u!pCi402EH?5FGBnL^IXm!%KSG8=Mi<[WOcu&rR$sM8
+StVmSV5L;mXKA_3Za@0N\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$m-a?2
+nF?)?oCMVSp&F^cp\jjgq>0scqu6NlrUg)?s-<V7~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh4nn[Dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g[mikY9MJC_;"IQV;Z0JS;?0Sl;!g7@3VYT'3rE+Z=oVV(=8Q%u=8l;,
+<``=&=&rF*rDiu$<E8rtqGmDnqc*Yr;ts>h8Gc!G9(bjE9)D3W8G>XO7f5^H7/B:F<rZ8$<qKGr
+=BSg1=o;M&>ROhD?!^iE?X@&H@:B(Cs'u(?s(D@Grb;ILD#S5MD$=frEH6,BrcLnXG^4U^I=?a!
+KnbA=M2@+LNffNkQC+)0S=Z@IUSO`aW2ZhuXKJk8[^j#`^;%M%`Q$!@b0/)Vcd:%eeCWF2i8j%c
+md]rBp\XjeJc?1sJ7c*fV4aQc\mJ`J>lOaDik_7=DI?"5I(-1u5__6S/N#4G5!(kc2F^5-7RmAG%
+n8rI3^#\l4ZY]"<E)jp;i^kgcBN?Y@:3GL?!UZ?>?b99r`fD+&mJC<=BAR(<EE."<Dugq<)Q[pr
+DNu";,U7f;,:"bmn`sS!(m/^!D?,c9n#i5:f("f;cHat='/U/>?kH??X[DRA7]CeBkqO&DfKc<F
+EVkRH@10lJV/W1LP^qJNfT<dQ'Rf+S"6.EU84W`WN*&%Yd(OA[^`l[]Y;.s_SjF6aND]NcHstfe
+CE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9o()DDo`+Uap&Ojcp]C9fqY^6ir;HTdrdk*7s*t~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f[r7"kV7F/9[f<i:\GWo;\cBA<]]6X"]_T2;Np2T+OHG\%OT(C<OS[9%
+cN2;:rlu8&cHX\]dEg4ddaHLke'cUkdF-CheGdo*dF-Ild*gFldF-@fdJM9"e'QLhd*L(ad*Bq_
+cd)M\qapBOj%Ju9qap]VpIG*Mr'g6Gq*Y+orP&6FqnW-Es1eZO_YqCc`Pfa9a2Z3Dbg"J]e^iC+
+gYLcchu_ltjSn6BkN1k*jo=HWjQ5LcjlYail07O$mdK]:p%S7YrIP!OrrMohq>UNpVk3ke,bat.
+XH/f_Whl>YARE!WZ*CI6XK8F(>[:fI?X6lCZHgV4`Q!c7(&n('naGr6m-O!"kNLsbiSNDGg"4gS
+e.p?TcHXVWc-4DR`PTI,]t(\^[^W`Qn$N6f84Z>O8q'E,9MJ5V:Jakb;H$Op<`W=*=^,-:?=.)L
+@Us%^BPD6tD/O<4F*)SLH$XjdIt3-'L51VCN/is]P*D9"R@Bb=TV80XVl6VsXfnt8['mHS]"Gbl
+_8=.0a2lEHc-F\`daZh!f\,!6h;7&IioB(\k3(smlKdg'mI'H4nc&([oCW%T!VZ9dq#C0iqYg<j
+r;HTdrdk*7s*t~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f[pa3"J;]E`N;S\3Nqn\5Npi%rNq[GhD=2<>DuO_ODu-"'SHk[US=H(;
+S!s>H!h,UIrgWqY$CmTVS=Q.=SXc1=rgF._R@9V6R@9M2S,8W`S!f_5R@'D/R?s8-R@4%FqapBO
+j%Ju9qap]VpIG*Mr'g6Gq*Y"Es-N\Or0dSPr0[eYS"#q<SXl;MSJe#lTV8*TV5C2jWiN5'XfSY,
+Y-5%5YHY::rNcI0rj;^6-b$Uq\[f>c^;%J"_o0O7aihuVdF6Xtg>1]Jk3)$sn+6/Ep\F[_rdk*s
+rrCjKrrK[?qu88;f"m&ieGoR,K"utgBlR+$H?aU5;N$<aKS"c,J::6h:KCFn;,U>IR$X,)P`>\e
+o[:Un^:h+d[C!9FZ*1=3XK&8!VP^/aU7e-MSXl4;R$j?@QOK.DP)t`bNJiXON/NM\M$$7=84ieQ
+IS3@.9heAY:f("e;cHat<`iL->?kH??XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`E.LP^nINfT<c
+Pa7])S"6.DTqnN_W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Nj5]7`kNM0q
+lg4!*mdKZ8rpg*]o`"Lap@nO\s7u]krVQTlrVcBfJcD#8J,~>
+JcC<$Q2gOVrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f[mikZ9MJC`;"7E9;ZBVi;!L%?3VYQ63V#6-=Su>%=8Z,!<s;W,='/O)
+r`9>*=BAR)<``?"<W?+r<Vohs<<6'!rDWkt<)Z`p<;oGc8b5R79CkdQ8c2-R8,GdR7J'"D6hsdS
+=8u;.='/U.>$>-7>$>/0>RFbC?<plD?XI,H@/OFA?t!MSAS#LfBkV0oCAr!NCi+'-DfB]:F*2YL
+GBeCYH@('hJV&N.LPUhFN/s'_Pa%K$R@Bb>Tq\?ZW2co!XK8S-Yd:dK]=bhm_8O=5aND`Ocd0tc
+e'ln"g>1ZGjQGjto(DbSrIOtYs0$Oj`PB*mY-G^^fN_\\rtFkHWf(q-8O[a$[=^na6o$DQ00T:s
+"#`)/8,c!V71M1:3^5hm4?Yf$<E)jp;i^l)`/JYF?XI,G?!UZ>>?b?:>$G-5>$+g,=&rC'<``7"
+<E2sr<)Q]o;u]bp;#sKjr_W)["%PmQ8cD>292&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SUAS,Ui
+CMRd)E,fr@G'A4XI!pKpJqJf5M2I7PO-,TiQC+)0SXuLJUnsufWiW>+Yd:^F\%0)_^;%M$`5Td<
+b0/&Td*^:ke^rI,g>(N@hr*MSj5oFdkiqBum-O--n*olHncA@Srq-<cp\jmeq>^<iqu6NlrUg)?
+s-<V7~>
+JcC<$Q2gOVrVc`nr;6Nj!;ZTg!Vc<eof;[9o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[VpnkV7O1FrjMm;qRQR:rOhs<!4qR0pq6=4qMsg$!0I2Br/gr@qN1Hs
+r6P8cs3D)"dEg7ie'c^odEp;>dLO[SdF6LmdaQXnda?Ijdf.T*ccskbd*p=cd*L+dcd:"`c:Ik)
+oh+sOlV.(Hoh,-Rr(-QPr'pQPogJUCr4W-ErkJ<F!5JNIs1eZO_Z%LP`=g86a2lEIc-Oeff@\d3
+hV[5Ki;V^8irJ3?j9=T'jQ,@]roF+@&*E'<kih<umI'K6oChtUrIP!DrrVqel2L\pVr6s]P+@c7
+V4X8g@(WnQZ*+)-%'*N:?".5L?!FV?c-$%*M>mn\qtBOKmd9B+l2KlVj5StRhV?f9f$r3tdEKo6
+bQuD6`PTI,]stWP[fX(H[d^\R7n?0B8P2TJ92&&S:/=\_;,U=k<E<.%=]np5>[CcF@:EbYAnYmn
+CMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOckroQ^O>5StMdPUo1/kX0&S0ZEpsJ\[oGe^VI_)`Q-'B
+bKS8XdF-Opf%8U/gYL`Di8N_VjlY^hl07O6lj<(In*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)Kg
+JcD#8J,~>
+JcC<$Q2gOVrVc`nr;6Nj!;ZTg!Vc<eof)O7o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[UF*#JW'Gbq2GB8qMtN6r/U<.l&PXY!,_UN!,_%>rGM[Tq/?"tr13hW
+rgNnXrgNqWS,SrXSH>=NSGo')S=?(<S!oh8S!oh8R@0M4R$sJ3R%'S6S!]P1R$sG1R@'>-8Gl'P
+9(u!E9__9R9)M9Y8G>XP7f,XI7/94MQNWV>Q'Ra8Qi3<ORJiNPR0/nIS"0DI'qV%hTV/!QUSOcc
+WN*#"XfSV+Xfei+Y;EJgZ*LX?ZEpjC['[6K\%&rY\\#Ph^VRe)`Q#p>bKS8YdaZn&hrEqdlg=-0
+oC_hQqu-MFs1SF]q;''&K!kXYn;43ZQtpbZI<p-\<)JR/KnFu.Jq/>G:JXti;c?SLL6qn*!0iKC
+1@EN)_S<gq[^ENLZ*1@6Xf\V%Vkp8dUS=ERSt2F@R[BG/QC!o&P`h,iNfAsRMi<RMmtlK`84Z<D
+8kM`L9MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt3-'KnbGAN/`m\
+P*D5uR@B_<TV8-VVl6VrXfnt7ZaI9Q]"G_k^r"%/a2lEHbg+P^daZguf@em4h;7&IiT&t[k2tml
+l0JB9$170Ln*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-<V7~>
+JcC<$Q2gOVrVc`nr;6Nj!;ZTg!Vc<eof)O7o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[R<VY9MXqOq,.2iqGR)cpeq)gohaj3!'0d5s#Kd6r`B/%qcNc!s&]8&
+r`8qus&f2##?Fo.=BAO(=8Z(s<r>ts<WlE'<`N/u;ufqs<<#ks8Gl'P9(u!E9__9R9)M9Y8G>XP
+7f,XI7/94L<rZ2"<rc@s=8u>$<<QB*=BSi+>67u5?2e+.>l\40?N=L2@16OP@:EeZAnPdjBkhD^
+CB/5NDB!M5EH?5EG'A1VH$XgbI=?a!K8#&9MN*^\PEc'3%[NHMSY2XMU84ZdXg,1:rj*iW\%0/b
+^;.V)`Q--Ec-OecdF-Opf%Jd3h;7,Nkj.a1q>:,Arsnsro]b>edE'2<^WkNurr2p<qV/EBH=pMR
+A=pPt9ikpt0/b[N4?G\a2b->,7n3JH%n8H:3C#em4?ZD4<)Z[n;i^kn]7t-1?XR5I?!UZ>>?Y38
+>?b66=BJW'<sr/4=&r:"=&r:!;cNZn"&Vrn;#O5k;"%2/7n?0B8P2TJ92&&S:/=\_;,U=k<E<.%
+=]np5>[CcF@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOckroQ^O>5StMdPUo1/kX0&S0
+ZEpsJ\[oGe^VI_)`Q-'BbKS8XdF-Opf%8U/gYL`Di8N_VjlY^hl07O6lj<(In*fc9o()DErq-?d
+p\4[^s7u]kr;6Kkrr)KgJcD#8J,~>
+JcC<$QN-UVrVc`nrVQWks7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`P]R.^V.:j\@-@0T;B00\,Ei8\c',5]DK2*]DfJ7]D%?NNrY:@OnFh/cMZ#fc2c)f
+cMu8jd1XpVdF6Ijd*^:hdF6RodF$=geG[i*daQ[ndF-Fhc-Oe`daS3Cs3Lhmd*2G[p.G0Soh>*S
+oh>3Tp.G6SrCHZQr'pTQoL/LBr4W-E!5JKJs1\cR^V7Fs^qp#e"iJ<u`5T^paU6,3bg"J^e_&R0
+h>Z=3i;DR5iW\B%iSrnWrSnOOjlYahkiqC!mI'K6oC_kRqu20HV#LMkUuMCR,P97\l^+0,W2?5X
+@plpXZE^O5X/i7'?!UlI?X-gAZH^M3`JOUJrquWcnF,c3lg*fukN:dbi83;Eg"4g(eC)[ecHOMU
+bKS/P`PfU.^::__\@/oSrjMC*s$m,]8P/nRIS3@/9hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS,Rg
+C27[(DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:
+aihoRcdC1jeCN7)g=tH>hr*JRj5f@bkiq?sm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;HTe
+rdk*7s*t~>
+JcC<$QN-UVrVc`nrVQWks7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`P]R.^V.:j\@,jaH\%*7N;8J"NqSP!Nr4t7DZ4M8DY7r@SH#/WS,f#WS,]#YRhD0[
+S"#t<SXZ.?S=H.?SXQ"8RJ`N`R[]e8R@9V6R$jG3S"'DGs-WqTR?meCp.G0Soh>*Soh>3Tp.G6S
+rCHZQr'pTQoL/LB!13SK!13YOs-`hQrL3bU#Fq?US=Q4CTDkJiTq\<XVPpJoX/l6$rN6+&s0)I,
+s0;O./$lUh['d?O\@K2_]tV7t_Sa@4a2lEHc-Oedf%T$@kj7a,naZ5DpA"I\rIP!]s"!3T]n<KO
+s8Tp(fYh]LD1$\SF];4rL4t53JV&E%:/=\d<)Z[mL5)%\QBdF/([9/[^V.:i[^EKKZ*1C7Y,eP#
+VPg8eUAgf!St2FAR[BG0QC!o'P`h/jO,]'Sregc4mtq'7!_>mSr^qW49MJ5V:Jakb;H$Ln<E<1'
+=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR$sP:T:r$UVPgGpXfen6
+ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&tZk2tmll0@X%mI'H3nF?PL!V>s_o`Fj]
+p\ssfq>^<hqu6NlrUp/@s-<V7~>
+JcC<$QN-UVrVc`nrVQWks7uZhs7ZNerq/5BoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`P]R.^V.:j\@+dq92/7W;>F&e;>sJj;?'P_;?'Gm;=[N`;;=/03Vb`8=92K*r`B&#
+r)s#$"'8N(=8Q,!<s_o0='&L*<``='r)NSor`/u!"'&B&<;]br<!#ut;uK;]9);3R9_V9S9_qEU
+9)M9Z8G>XP7f5^I7/91N<`T-"s&T2'r`K)"!*9)!&m&1:='Ag4>$G09?!^c@?!LZAra5V3s'bh5
+AR].ZAnG^iBkhBuChmj(Df9T7EcZ>FF`qtRH$amcI=?]uK7nr6M2dU]Q^=),QC+&.S=Q1AT:r$V
+X0B"@\@AuV\@K8d^VRh,`Q66Hbg4Y`daQ^rf@em4h;7)Lk3D@)p\Xr@rrCsTrs8AejP88.dGOHk
+s"<KOTRq#e7pM(fU1HoGD_X.+4Ztki2E+,q7n,s9779R(3B9>h5!(o%9N>"i;NCc3q6GWf@:*AJ
+?!LZ>>[(B9>Zt<6>$+m-=BJX-='&F$<)ust;c?Xo<)Q[o;,^=g;,[Bimn`sR!_>mSr^qW49MJ5V
+:Jakb;H$Ln<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR$sP:
+T:r$UVPgGpXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&tZk2tmll0@X%mI'H3
+nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s-<V7~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@-@0Tr#E3\G`u6](ru4]&gR(]`,P@]`3ulO8+b#O8k:AOnXt:ch5T^
+chl!%c-Oe`d*L.edF$Fjda6Fjd*^=kdJhSrdaZeGdhL3Xd*gCkd*L+ccdU7gdaHIgcUg_&9)D9X
+9]JkC9`.QX9)V?Z8GG^Q7f5^J7/0.K^&PeL^VIV"_#;%J^'DEg_SX.*_o;Vn%`ZW4b0%oPc-Xqi
+g"bE?rndb7iVhd8i;hg8iV_[Lj5T+[k3(pkl0@U$mdK];p%J4Zrdk*FrrW+qgAV$q[K!k4AX-`%
+Tq#Y$]!nuLXfSS(WEEM3@:<MJ?*^c\aN)8Us"=9Fo'l)7m-O$$kiUscio/bLg"=p-e'uglbg+GV
+b0%rPb/V?8^V74f\%/oW[/RN)[Jrbs8,u6\8c_RYr_7f9:Jakc;c?Xq<``C+>$G6;?XI5N@qB4a
+BPM=!DJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhK%R[]k?Tq\?[Vl?\uY->1;[C3TU]=bkn_Sa@4
+aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!nlKdg(mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTe
+rdk*7s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq/5BoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@,g`H[q(PNVSS7O782,O6_i(O8P+>D?+VRDZ"A5DY\2PS=Q5=SGnuk
+R[]h:R[T_7S"#t=SXZ1@S"-%>rL3kWS"0JI'UbDXR[]b6R@BV5S=5n9S!]V28P/YKqb-cZj%]>C
+r(HcVrCQoXpdb6Or'g9Hpd>(Jrg!PNrL!VQrKmSQr0dYVSc5,\SY)PRT`:_hUSOccWW&suXT#@$
+XoPU&Xtd/dZ*CU?Za@'G[C3QS\[oDc]t_A!_SjI8ai_fOcdC4lfA#0Cl0\$3o^qkNq"ajdJcEC_
+/+1j$Kr<i.s3?ScNH\6<;1*S1<)JO-L4b)/Jq/AH:et(j;c6JIL6n0kQ&P_tilT$O^Upq^[C!6F
+YHP+2WiDtoW26>cTqJ$MSXl7=R$X2+Q^<u%PE:icNf/aPMN$t[s%!)[!(m/^!D?,c9moc4:f(%g
+;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNf]EfQ'[l,S"61FU84Za
+WN*)'Yd(OB[^`l[]Y;1u_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9o()DE
+rq-?dp\4[^s7u]kr;6KkrVcEgJcD#8J,~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq/5BoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@+dq92/7[;=m]Y;?'Jm;?'Jd;<q$\;)gNqgc59nr&Om]=]t`+qH*]!
+r)s#$"'8N(=8l;&='5B%#Zt/1=BAO)<`],unlGZgr`&nhpIb<UqFopDq+U]ZpIbBUr(-TQr'pTQ
+ogJRBr`9&#rE/u!$!(&+<`iI)<a&`+>5__4>[:T>?=.&J@K'XE@:3MO?t!JQ@Uiq[AnYoXCB&&R
+Ci+*0EH6.!F;oCIG^4XaI=?ZsJqJ`0KnbDBOd2<&R[KS4S=TYN$(mlbUo12pZF.1@\08Dq^;%M&
+`lQ9FbKS5Wd*L+he^rL.gtglHio]Ooo(MqZJc>_gqYp`qn`J]go_e_/n]n+jEa_L<J%W%,6]OJh
+.Prb@4$5G[7Ros<7fGgd7Q<Cf5X.Fo4\naN;c?SSrt+XtI:lts?sd2F>[1K:>?kG4=qFh==&rF)
+<``=(<`;st<)cco;[ZK%;G^:h:f((d:JgLUs%!)[!(m/^!D?,c9moc4:f(%g;cHat='/U/>?kH@
+?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNf]EfQ'[l,S"61FU84ZaWN*)'Yd(OB[^`l[
+]Y;1u_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9o()DErq-?dp\4[^s7u]k
+r;6KkrVcEgJcD#8J,~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7\VKp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$g:1Unta'\bWi3]C`]"]DfGC]DT>@^&PbENrG+7Np;]#O9!Z*ch,K_
+ci),sbg+JXcHjhadEg4hrm;&!dF?UmdF-IleGdi"daQ[ne'c_EdL=LNdE^.ccd'k`d*^;:9)M?Z
+9\E/;9`.QX9)V?[8GG^Q7f5^J7/0.K^A,JC^Al"J_#_EjrPT2dai_fMbg"G\eCWF1hV\=jro*k7
+ro""<iS`YQrSmh:&`i*;kNM0qlg4$-o(2PJq"t&As.fSpW1a+h,+nn)VMgdPWM5tq?b3YNYcb(.
+Wi90->[UrH>[4S[c,[iCM#Sk$p@.S?mHj3(ki_-hio8kPg=Y*0f[SBtc-4JWbf\,Qc-42F^qd\`
+\-0@M\?rX4[f8kt8,u6\8c_RYr_7i::Jakb;H$Op<`W=*=^,-:?=.)L@q9.`BPD6uDJjE5F*)SL
+H$XjdIt<6*L51VDN/is]PEhH$R@Bb=TVA6YVl?\tXg#(:['mHS]=bkm_8=.0a2lEHc-F\`e'uq"
+f\5'7h;7)JioB+]k3(smlKdg'mdKW6nac8BoCW(Us7QHerqQNhs8)Zjrqu`np&9OBQ2c@~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7\VKp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$f^_I=[@VNVSV4O8b.>O7\G4O6_i)O8"b8DZ4SSDYe53DZ+MPSH#/L
+SGAWeS=>t9S=?"<S"-(@SXc7@S=Q/KRfAiZR[]b8rgF%ZR[TV5R[X2C!LfMQ9)M?Z9\E/;9`.QX
+9)V?[8GG^Q7f5^J7/0.KQ3!>>rL*SN!1EeSs-rtW%%X#_TV8*SUSFW_W2]css/c1$!j&N+rN6.(
+riuL//$lUi[C3QR\@K2_]Y2%p_8=.1a2lEHbg+Ydf%8U0i8a"fnb)VNp\=R]r.4m\s"!it_hN`n
+s8Ur+gNS!WE)M(.F]D=sL4t52JUr?%:/F_d<)Z[lL6n6lQ'@7-+l:5V_8!Oh[C*?HZ*:C6XK&4s
+VP^,_US+9PSt)=>R[KNAQjf=HPa%8jNfK!SMi*J]M>p*G8,u6\8c_RYr_7i::Jakb;H$Op<`W=*
+=^,-:?=.)L@q9.`BPD6uDJjE5F*)SLH$XjdIt<6*L51VDN/is]PEhH$R@Bb=TVA6YVl?\tXg#(:
+['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mdKW6nac8BoCW(Us7QHe
+rqQNhs8)Zjrqu`np&9OBQ2c@~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7\SJp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$e[q92,:]n5/sYoMGNakYV:Vr]'m;gc59n!':*\!a&T.r`K2%!*9&"
+r`K,%r`B8(<`W<$=9;Q+=T2A&<`f9&s&]5$!EW>#<VBGr<EE7&<W5tt<VT2a9D_E9:&@W^9D;'W
+8c;3T8,PjS7J0(D6iC*b=T)>$<X)W+='&F(=oDM3>?tK=?!LW=>@(ZDrF#h:@:3JMra>b8&S#?_
+AS5[jC2.O"Ci401EH6.!F;o@HH$XjdIXZcsJV&T0L51SAN0'9jR@9V8SXobP(8.@sVPpJpXg#1A
+\\#Ph^VRe*a2uNKrll/&cd1"ge^rL.gYLcGjlYdnnFQDPJcGHD!r_cfqYr+RP':D.7sMAPJ4+oK
+1bCR<4Zkhb2b$;.7Rfg87n,Hu3']\l4$?A=<)Z[mNrKgUU3U?Z@:3AI?!LT<>$>07>$5!1rDrr"
+$!:81<`;st;cHZn;[?9";G^7g:f(*W:]Erb8,u6\8c_RYr_7i::Jakb;H$Op<`W=*=^,-:?=.)L
+@q9.`BPD6uDJjE5F*)SLH$XjdIt<6*L51VDN/is]PEhH$R@Bb=TVA6YVl?\tXg#(:['mHS]=bkm
+_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mdKW6nac8BoCW(Us7QHerqQNhs8)Zj
+rqu`np&9OBQ2c@~>
+JcC<$QN-UVrr)ior;6Njs7uZh4nn[Dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$g70VPUs$](EW/]'[--]E#YD]_K2>Nr+n5Np2W%O9!W+d/D;]c2l28
+rlkAds3CeodF-GAck+UNda6Fjd*g:ie'ZRhdF-MCdLOaQdaHLhdEg4bcdC(cdecZ79DhKR:%(jJ
+:&I]_9DM3Y8c2-T8,PjS7J0(E6NKNfqS*$GrkJKKrkTPj_o9R4`Q-*CcHOPYd*pOugYUiFi8NYS
+i8EMlh>lI3i;qlqro+[QjQ#7[jQ>Xhl0@U$mI0T9o_/(Vrdk*ErrT0no)AY5VY&ZHNgXR]US(k"
+]=+uKY-"e*W*EV5?sm;G?*_`!a2c/TruD%4nF,f3lg*fukN1dbi838DgY(<5e^MpjcHXT4b6Q89
+bf7Q9^qK`W"Lb_I[^>P4s%!)[!(m/^IS3@.9heAY:f("e;c?[s<``F,>?kE>?XR>PA7]@dBkqL$
+DK'T:FEVkRH@1-jJ:`E.LP^nINK93bPa7])S"6.DTqnN_W2cr$YHY@?[^WfY]Y;.s_SjF6aND]N
+cHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4!*n*fc9rpg9bo_%nNp@nO\!;ZWjrVQTlrVcBfJcD&9
+J,~>
+JcC<$QN-UVrr)ior;6Njs7uZh4nn[Dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$f^^IY!LSNqAD0NrG(>NrG+/Nr4t0OT'.pDu"83DZ=YPSH#/NS,o+L
+r0m\Tr1!YR&=f2[S"6+>SXZ.>S"#e5R[a;F%\&lTR[KS4R@BS4S!f\6qb$cZr(QWTmnWFJr(R#]
+q+CTWr(-WRr'pTQogJUC"[\QBR$jB@R/NEiR[]e8S"-%>S=Q4CT:hjNU8+N[W2Zi!X8]10Y,nb,
+WiE/&Xfek2Yd+25/$lXj[C3QR\@K2_]Y2%p_8=.0`lH6Fbg+Ycf%A[1h;@8UlgF?:p@n@Zr.4m[
+s!m!LLk<>?s7(iYXb(8+<.9+9:K!()KS4r.JU`2F:et%i;GpAHR$O#'P`5VRg;_(I^::VY['I!@
+YcY+0X8]"<V5'cYTqJ$LS=>t8R?s;.R?s2'P`UrdNJiXOMN!G]M>p*G8,u6\8q'E,9MJ5V:Jakb
+;H$Lo<`W:)=^,-9?=.)L@Us%^BPD6tD/O<4F*)SLH$XjdIt3-'L51VCN/`m\P*D9"R@Bb=TV80X
+Vl6VsXfnt8['mHS]"Gbl_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg'mI0N5nc&(`
+oCV_Kp@e7Zp]1-hqYg<jr;HTdrdk*8s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZh4nn[Dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$e[q9MA=M;#O8E;#F2i3;Y_l3<)#:<ruK,=oMM'=8Z,!=8uD&=TMW-
+r`B8(<`W<"=T;G.<``=(='/R+=8c1u<V9Am=8l8#;ufqq9)M?[9^tjG:@_-W9`.QZ9)V?Z8GPdR
+7f5^J7/91M6N1'b=SPr"=BA[1r`T;+r`f\4>[:Q=?=.(<@K'[6?PQjQ?smJTAS#IdBPD3sCM[j+
+E,fo>rH(eWGBnL]I!pHnJ:W<*KnkG>M2I7PP*D9"R[fn>T:hmPUo1/jX0&S2[^s,b^;.V(`Q--F
+bg+P]d*^7heCN:+gY:QAiT97em-sZ@qYc!Fli.ZIC.q-3Vo4]hB37&E2)%3W4>Jc`r^RSj77B[8
+3B9&`5<V+l9iY.j;cA_V,M\Z.A7AtT?<gc?>$G06>?Y35=]ed+='&L+<`iF';cH^p<;fbq;@?E$
+:f:.e;,C%a:f-XWs%!)[!(m/^IS3@.9heAY:f("e;c?[s<``F,>?kE>?XR>PA7]@dBkqL$DK'T:
+FEVkRH@1-jJ:`E.LP^nINK93bPa7])S"6.DTqnN_W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHste
+eCE1'g"P6;hVd>Oj5f=akNM0qlg4!*n*fc9rpg9bo_%nNp@nO\!;ZWjrVQTlrVcBfJcD&9J,~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[q0N4VPUs'](!?/]'6j*]_oJC^AbhE^AO#iO7nV*NrY:<O8Y1=ci2;i
+ch#H^blQ&6rltJe#gUfDcHsqce'S*ArmD_1dF-LjdF6RldaQ[nda6Fhe'lakdEg+acHuM^rCd&^
+ohG-TpJ:KXohGBYr(HiXrCQrYq+(?Pr'g9Hq*Y0KrkAWP^VIV!_#;+L_@si*`Poj<aii)Yd*L+i
+f%Ss:i8FRmrnn">io&\Ni8FUn(ujT8j5f7]jlPXfkiqBum-X93o(2PLqYc!FU]1DlU[8![+g08f
+bEAH'X.u:n@D'(TYcb(/X/K6.@pr_N>\LFfbf@_Ys"XHFnF#]1lg3p"kiLjbi8*/@gtLN8eC)ah
+cHOPVbfn>Vbf7Q9^qI:f\[])W\$icTo!\Nf!_>mSr^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K
+@Uit]BP;-rD/O<4EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR@B_<TV8-VVl6VrXfnt7ZaR?R]"G_k
+^r"%/a2lEHc-FY_daZh!f@em4h;7&IiT&t[k3(sml0I^&mI'H3nF?PL!V>s_o`=d\rV6Egs8)Zj
+rqucoo_sFAQN)I~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[om0WIY*RWNpr,0Nr>%<OSt74Nr>%-OSj"oDZF\MD=_WFDt\)KSbelV
+SbATRS,SogS",t;R[TY5S=>q8R[]h9rg`tY!1NnW(7L__S!f_7S!oe6R[KY7R[KV5R@9P4rC[#]
+r(QcXp.k?Xp.k9TrCm,^q+CTWrCH`Sr'pTQogJUCs$HaRrL!SPrgNhUrga"Z!hQ$Vrh0UlUSXid
+WiN5%ri?1'XK;B$2QEj]Y-5(6Z*UdD[C!?M\$rlX]">Vg^;.V%_o9X9ai_iRdaQe"g>(N?hr<e_
+m-jN:pA"L^JcE=],enu@p&G&PTZNgAF%h(/G>;(oLP:D5J:`9$:Jb(k;c6LrL7%t+N;ka1f#>MC
+^UU_ZZa-m?YH=q-Wi)bkV5'fZTqJ!KS=>t7R@'A0R[9;(PE:icNJiXOMN!FKn;7-7!_>mSr^qW4
+9MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Uit]BP;-rD/O<4EccGJG^=^bIt3-'KnbD@N/`m[P*D5u
+R@B_<TV8-VVl6VrXfnt7ZaR?R]"G_k^r"%/a2lEHc-FY_daZh!f@em4h;7&IiT&t[k3(sml0I^&
+mI'H3nF?PL!V>s_o`=d\rV6Egs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrphl8nF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[mEJQ92&4M;#=,F;#4&e3;Y`$2uku43;HVZ=BSd/=BG?""BS]-=]tZ)
+#$4i+='/R+rE'&#r`9)%r`B,#s&B&"rDiMk"BSW)<E8uirCd&^ohG-TpJ:KXohGBYr(HiXrCQrY
+q+(?Pr'g9Hq*Y0K!a&N*r`K/$!*K5%s&o;(!*fD,r`]D.?2e.5?t!JN@/aLM?<piC?!guJ@q0(^
+B520sCM[j*DJsK6F8g8WFa&+VH?spdIt3*%KS>2;Ll.(JNK93cPa7Z(R[ftCU84ZbWN3/)ZF%-S
+^;%M%`5fs@bKS8YdaZdtf@\g3gu$uGi8Ne^mHsE8pA"RbJcG$8-XTDTR)kt!;0#Db2CgsR4>Jfc
+7n?->77Kd:3B98f5<V.o9iY.k;iUeZe!"f^ra6.@?!LT;>?b98>?Y04q,[]$<`N'trDW_q%T?8'
+;c-Fj;,C.f;,:"bn5'$R!_>mSr^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Uit]BP;-rD/O<4
+EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR@B_<TV8-VVl6VrXfnt7ZaR?R]"G_k^r"%/a2lEHc-FY_
+daZh!f@em4h;7&IiT&t[k3(sml0I^&mI'H3nF?PL!V>s_o`=d\rV6Egs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTg!Vc<eofDa:o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[UjE3VP_#;](rr<]_f;@]_oDA]'?p+]`#PB^&YkE^AYh4NrG(>OSFn7
+OT(=?OSR3&d/;5ec2c)fcMu,mbg"AUc-613+O&-WdF$=ed*U1ed*g@kdEp4ge'ZRkd*g@ie'lgn
+eC+?CrQbPm8kT%TrClr[qG--JqG-cZrCm/_q+CTWrCH`Sr'pTQogJUCs$Hb$"Mqmh^VKfas2#Ac
+`5Td<aN;ZTe^N!sf@\m7htuC4i!86&lKmZmi8FUn!oi8#roF+@s5jgSkiqBum-X92o(2PLqYc!F
+U&P,Orr4/<`rGRoS<L"MT3Pl4[^*0@X/i8!>?t`I?X6s/ZHLJ4`eaX7rqc<Wmd9H/m-*WpjlGFZ
+h:p]@h:pQ1dE^"^c2Podc3_b>`l#U.]t(V^rjN!?[C<X9[f/bu84cDP8q'E,9heAY:f("e;c?Xq
+<``C+>$G6;?XI5N@qB7bBPM=!DJsN8FEMePH@('hJ:W?,L5:\ENK90aPEhK%R[ftATqeE\VlHf"
+Y->4<[C3TU]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]4_k32'olKmm)mdKW6nc/.\oCW%T
+!quB_rqQNhs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTg!Vc<eofDa:o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[TR'XIY3W?Nqn_9OSb(=OSY%7OSk19Nr>%-OSt=;DZ4SRDY\/ADZ"GP
+D?=`oDZ-.&SH#/VSGJ]dS=?"<R[]b7R@9V8S!ob6Rf8fVSJ%NaS"#t=S"#q9R[TY6S",n:Rf&TR
+RKAsN9)VE]9_V9X:?>:J:A7K]9`7W[9)V?[8GPdR7f5^J7/94M63*GQR/WNQRf8fVSH#/[SdV0`
+USOWYUSargWiQ'!5-:ofX0&\4Y,nb-YHY46Z*L^D['d?O\%&u[]=bhk^qmk(`5Td=b082\e^iC,
+gYL]BiT'%`lL"-5p%eL`JcE:\-*HP5s2UGa`G]g6IX666;br4'K7\W)It1?l<E)mp;L4(aQBmep
+rtP+R`59=&\@/cNZE^U:Y-"_&Vl-BjU]7%fTDtDsS!ob4R@'D1Q^*f!OH5E]Mi!@KN/NM]M>g!H
+84cDP8q'E,9heAY:f("e;c?Xq<``C+>$G6;?XI5N@qB7bBPM=!DJsN8FEMePH@('hJ:W?,L5:\E
+NK90aPEhK%R[ftATqeE\VlHf"Y->4<[C3TU]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]4_
+k32'olKmm)mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTg!Vc<eof2U8o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[R*AP8ki1W:]OAi;"miF;"mi_3;Y`&3;bf93!;6$3*9;Y<rcA%=TMW+
+q,RT!=BJ`(=9DW*<EK-$$s-P4=&r@'='/O*<`f)ss&K,$pJq>s8kT%TrClr[qG--JqG-cZrCm/_
+q+CTWrCH`Sr'pTQogJUCs$?cg=BPN'!*K5%s&o>)!*fD,s'>Y/!*oJ/#%(bG?X@&Gra#h:@U`bR
+@:E^FA.*$`BkqL#D/O92EHD,$:N^l+H$Xd`I=HcuJq\r7Ll%"IN/is]OckroR@9V:TV80YW2Zi"
+YHbIC\\>kq_SsO9aihlOcdL=nf@o$9hVdAPiSrq[lL"-4p%J1WrIP"4rtJXr`ia)IM/b4,1Hdi^
+0fCmZ7n#oH705q<3W;5J4?Z50<)cdpNW0I.NG`65?X@&E>[(B9>P_M&<rZ;%<sMc+<`E!t;cN`p
+s&9G+;H$Fk;Gg7e;,L.e;".9[7fl4Q8cD>292&&S:/=\_;,U=k<)lt#=BSg3>[:]D@:E_XAnPdl
+CM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPfmQ^F53StD^OUo(&iX0&P/ZEpsI\@K8c^VI_(`Q$!@
+bKS8XdF-Oof%8U/gYL]Ci8N_VjQ>Ugl07L"m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kkrr)Kg
+JcD&9J,~>
+JcC<$QN-XWrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.7i\@,sgKr1c\qRc[<s1A3Ake$f+rOr!?pqQigm#M(+s,[8BOSY%9OT1@C
+ONu/Bci),jbg+N.bm;P<c-4DXbg=`9cPk3Xda6Cgda?Ijd*g@id*U4ie'capd*g@fd/M>kcM^E7
+9_hE[:ARcM;#3uc:A@Q^9`7W\9)V?[8GPdR7f5^J7/94M63+n"_>_=O_[j]+aN;QHc.1P%f\"p5
+hVnIp&*)[0io/nYlgXT9lK@6fj8S$<j8S*PjlY^gkj%I!m-X60nalDHq"t#@s.'*3[f=UCAX-`%
+Tq,\"[^*0AXfJM$>@(fJ?X-jAZHCA2`eaWtrqZ9Vmf)Sum-*WpjlG@Vh:pfCh:gN1dETt]c-4AU
+cd'hZ`l,[/]t(V^rjN!>[C<X9[f/es8,u6\8c_RYr_7f9:Jakb;c?Xq<``C+>$G6;?=.,M@q9.`
+BPD6uDJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhK%R[]n@Tq\?[Vl?\uY->1;[C3TU]=bno_Sa@4
+aN;WLcHjnde'ut#f\5*9h;@/LioB+^k3)!nlKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*8s*t~>
+JcC<$QN-XWrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.7i\@,OLDgm=uqN(Q9s,[)>rf?f8ooJU(plY8f!,qgRqJGhAr,;UQ!cOU!
+r13GLq4%;P#b%6OR@0P4S!s>E&"B#YS",t=S=H.>S=H(;RJiQZS=>q8R[9G0rgE^XrCm#]qbHu`
+kYV+Or(d#]rCm/_qF^]XrCH`Sr'pTQogJUCs$HaQ!h#LFrgNkVrgX[nSt;RHTVJB]Unt#hWi`G,
+XfSY,riA2`Z*h-LYck45Ycb16ZEppF[C3QR\@T;a]Y2%o^qmq,`Q-*Cbg4_ff%A^2hV[8NjQ>[k
+m-sW>q"jr?s0_kMdZ*R_F\lsPHZsX4:PXXVK7ST'Inrm@<)ZXlLPD.]QBdF/1[iQ,^qdUl[C!6F
+Yct=5XJr.sVPU&`U7n9QSt2@>R@9M1Q^X>0QBRMnO,f3XMMm=MMXQE$8,l*[8cD<_92,=ZI83R7
+:f1.i<)lt#=BSg3>[:ZC@:E_WAS5[jCM[m,EH6/DGBeF\I=?]tK7nu8M2R=QOHPfmQ^F52StD^N
+Uo(&hWi`G.Z*UjH\@K5a^VI_(`Q$!@bKS8XdF-Lnf%8R.gYL]Ci8N\UjQ>Ufl07L"m-X60n*ol<
+o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-E\8~>
+JcC<$QN-XWrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.7i\@+^l7nQKQqG@)es%r;anPB3_oMG3Xp,E(53;tr)3<)#=3WhB%3'$h;
+qc<c"r`K8(=8>l!='/U.r)a/)<`N4&=BPQ("'AT*<r5qu<r#bq<WH5#<WZ9%<W6%t9DqQ[:&@]^
+:ZtXO:]*u_:&Rca9DV9Z8c;3U8,PjS7J0(E6iTLQ=T2D$=T;P'=oqo5?2e(/?2e.1?2e.4?X[AN
+ra#h:?=%#J@qK6M@f9dDA7]@eC27X'DfBarFT6IaGBj+48:,c6J:W<*KnbG@MN!OTOHG`jQBmr/
+S=ZFJUo12lXKJe4['mKV]tV>#`Q-*DbfnA\eCE4*gtglGiSrnYk32*tnalGKqu)*Gjo6FA]6-K,
+9JS(S0KqQ\2Dmup77K^77RfC!5X.Ip4\STL;ZKgWrs-2jBk(OV>[IA5"'So6=oMS.='/L(=BYW)
+!*0"ts&/nsr_j)%<E)mq;H$Ijr_N\o:JamW:]<la8,u6\8c_RYr_7f9:Jakb;c?Xq<``C+>$G6;
+?=.,M@q9.`BPD6uDJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhK%R[]n@Tq\?[Vl?\uY->1;[C3TU
+]=bno_Sa@4aN;WLcHjnde'ut#f\5*9h;@/LioB+^k3)!nlKmm)mdKW6nac8Bo`"Lbp@n=\q#C0i
+qY^6ir;QZerdk*8s*t~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@-!hLSgu^qn)I4qn)g>pUg45rOr0DoY:?am>h4-rK%)COHBI&plPI"
+o[!E[!6k2^qTK2id*C%ccd1#<ciDMmd0\+Ed*g@hd*^:jrmD&!daQRjd*>;_9_hE\:A[iC;#=&e
+:AIW_9`@]]9)V?[8GPdS7f5^J7/94L6N4k%_$.`n_o0O6rQ,Plce%+4hqm2IioK7dl0&'-$KU=6
+mdp/Gna5W)rT+"?roX7D&*W9Clg4!*mdTc<p%J4Zrdk*>rudp5Vl+6pA#Q,nA7)jQZ*170X/K9/
+@pr_L>dCZWb/_MXs"aTKo^M;:m-O'$kN(achqZuChqm2Ce^DdhcHXSXbg4P[bf[oB_8*ap\@B#X
+[^``S\FR-.8,l*[8cD>292&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiCM[j*E,fr@G'A4X
+I!pKpK7nu7M2I7PO-,TjQC+)0SXuLKUnsugWiW>,Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.
+g>(N@i8N\UjQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD&9J,~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@,OLDL[7tqiC!'pQ+g*oTAQZqebtCqJZ>&r13MNpRD/Ps-s%Wrg=._
+S=5q9R@0P5S"#uIS->=LS"-";rgEbS#b.9OS!f_5QqRBOq+^c^qbQ$EqbR/cq+^f]r_*)[rCQrY
+q+(BQr'g9Hq*Y-Js-a(YR$jD4rgX%\St>qR:8+JaX/`+sX/iA+Yd(@7Y-+n/YdCpO]XP8RZ*:F9
+Z*CXB[C3QR\@K2_]=bhk^VI\'`5]m@bK\A]e^rI-gtglGioK:fm-aE8p%S=\JcE.X+l%P7JUCC7
+;1!P1<)JI+KS+i,It(6j<E)jn;MU!nQ'R\ortah@_nj't[^EKJZEUO8XK&7uVkp/aU]-r,T:DI@
+R[KV4R$jD1QBm_uO,o<\N/EONMi*=IMXlW'8,l*[8cD>292&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC
+?t*SUAS,UiCM[j*E,fr@G'A4XI!pKpK7nu7M2I7PO-,TjQC+)0SXuLKUnsugWiW>,Z*UgG\%0,`
+^;%M$`5Td<b0/&Td*^=lf%8R.g>(N@i8N\UjQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]k
+r;6KkrVcEgJcD&9J,~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq/8CoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@+am7ncWSqb[2fs%r2^pJBmInMpM.r&=[:oJlk2r]:'>rE0)&r`K&!
+!*K5'!E`G!<WuQ,=]nj/r`B)""BS],=BPQ(r`8qu#?Fi*<E3!t<W,tu=8Z)"<D39aq+^c^qbQ$E
+qbR/cq+^f]r_*)[rCQrYq+(BQr'g9Hq*Y-J!*K2$!E`M(=oqo6?2\"/?!mG7!aoGFrEfn<?X[DT
+An>I_ARtdM?"@MYB523uD/XE6EcZ>FG'8(SH$OacIXm!$KS5)9MMmFQNf]BfQ'[o-S=Q:GUSXle
+WiWA-Z*^sK]"Gbm_8O@8bKS8XdaZguf\50=iSrnYk3)!pmIBiAq>:)@s5X,"ImK;[1b(=84Zkhb
+2+L,)7R]a97Q<Fo5<_.k9hkUc!*#!Y$2q/]BjkFW>[:V6>67u4>Q.h+=9;N'=T);)<E)pr<Drfp
+!*0"t%oQ>);Gg=h:f("d:/Fe`;"@E]8,l*[8cD>292&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SU
+AS,UiCM[j*E,fr@G'A4XI!pKpK7nu7M2I7PO-,TjQC+)0SXuLKUnsugWiW>,Z*UgG\%0,`^;%M$
+`5Td<b0/&Td*^=lf%8R.g>(N@i8N\UjQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]kr;6Kk
+rVcEgJcD&9J,~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7\VKp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$fmgLSgsF]CNW7]D9,:]D9,<^&>\7^\Wr_NrG+=NrG(>OSt=AOT1C<
+OT3Z-ci)/_chl#UblGuecN_bEd*L(ddeqDsdEg7gd*^4ddJVDqcd:(ed/H`8:&Icb:\.EO;=dW_
+:]4&a:&[ib9DV9[8c;3U8,YpT7J0(D6iTIY`5BI0`5BO5a8X1)b0/2bioT=ajQ5Rhlg4$*l0.Bs
+lg408p\O^XnF#T+l0.@1l2U#Kl2KrUlg=-/n*oo?pA"OaJcD/<*h0'dQt<4kSn;B>ZEg[9XK&4'
+?".5K?!O\@aN;KBM#RYWp[I_@mf)M^l0.3hj58\KhW!DHg""LKc5+[KcHje]bf@Z=^q[Om\%&oX
+[^`cT\FR--7t4'$8P2TJ92&&S:/=\_;,U=k<E<.%=]np5>[CcF@U`kZAnYmnCMds.EH?5FGBnL^
+I=Hd!K8,/<MN!OUOckrpR$jG7StMdQV5L8lXKA\1Za@0M\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\d1
+gtgiFi8WeXjlYail0@U$m-aoB$h3]Wo(2JFp%A%Pp\jjgq>0scqu6NlrUg)?s-Nb9~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7\YLp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$fFLDL[4rqiBs&qiC9/n<*?\rbq[Oqec%Er,;G%r13SPopblLs-s%W
+!1EeT#+V-MR[]k:rL4%^R[fk9S=5iERK&]ZS!]V4R[O.KqG$l_rD3#]mnr[QrD3Aeq+^i^rCcuZ
+r^m&Zq+(BQr'g9Hpd>'J"IbaGR@F2G!M,h\T*(gaXKVW*"0Si3Z2V'0YPta5Z*LjN]=u"k\$`O@
+ZN[bF\$rlXrODm=,J1V&^;.V'`Q63Ebg+Vbe^rI-gtglGioK7em-aB6o_/.Yrdk*Uru662AoLXq
+H$*.dM2$_9JV&E&:JXti;,U;HL6qn)N;jmXai)$1\[JoPZEUR:Xf\S&Vl$>eUSOWWTU_OArgF@c
+R$a;2R$Nu#PE(]`NJi\nMZ\imM2Lk\rC;?.8P)NH91qrQ9hnJ\:f1+h;cQk!='8[0>[1TB?t*SU
+AS,UiC27[(E,fr@G'A4XI!pKpJqJf5M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Yd:^F\%0)_^;%M$
+`5Td<b0/&Td*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O0?mgJXTo()DDo_%nNp@nO\!r;]hr;6Kk
+rVcBfJcD):J,~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7\VKp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$e[m84u_S;#aDj;"%9Y:uG4=3;tr;3;tr33<)#<3r`@\=T)A&=Sl/"
+=T2G(=BG<!#Zk,2=]ed-<`f9$"BS],='5B%!*9#!s&KA)<)lms<E3*!=8Z+u9_qK]:Amu[;"%9Q
+;#O2g:AIW`9`7W\9)_E\8GPdS7f5^J7/0.L6N:*l<``F->$G6;r*08/?iFF8@:3JMrF#V3#@LtL
+A7fFbB)?0=Am8n^CM[j)DJsK7F*)PJGBeCZH[^EoJV/Z0L5:YCMi<[XP*D9"R@9Y:T:r!TVPgGq
+Y->1<[C<ZV]Y;2!a2uNKcHt%ie^i@)gYCZDioK:dlKms0o_&"VrVhBJiVsfZ1bCR<4Zkea2b$8,
+7Rfg:7QELp5<V+k9hkRbNrK:QX+"_i@/aL4>S(+B=^506>$+p0=B8O*=B8K%<<#ns;ufkp<"Do*
+;Gg7f;,C(d;,0qc:JgUXrC;?.8P)NH91qrQ9hnJ\:f1+h;cQk!='8[0>[1TB?t*SUAS,UiC27[(
+E,fr@G'A4XI!pKpJqJf5M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Yd:^F\%0)_^;%M$`5Td<b0/&T
+d*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O0?mgJXTo()DDo_%nNp@nO\!r;]hr;6KkrVcBfJcD):
+J,~>
+JcC<$QiHaXrVc`nr;6Njs7uZh4nn[Dp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$fjfKVkXB]C`c8]D0&=]DB2=^&>\3^\Nl]NrG+>NrG(@OHG\&O91K)
+OT(C@ciDDjcM>f]cMu,ubg"DVc-=JWc-4GVbg$(0s3:Jg!71Ykrm;>'dEg+ccd:+ge'ugodF$Cg
+9_qK^:Amu_;#!oY;Ya2`;#O2h:AR]`9`@]]9)_E\8GYjS7f5^K7/94K6N>"(`XBc*a2uHGbKJAg
+j6HU/"mkXEn*fcEn,Mk`o_8+Ws8;]co'ZMG'CbJYmHs9+lg4!*n*ol<o_81YrIP!7ru6rcB;qVt
+B48<UZE^R7XJoE0@UWSJ>dCZUaN')91B$t;n*]T0lg*fujl57VhV[2LhV-W2dEp1ac-FV\cHjbZ
+`l#^1^V..d\@8uV\@/lVo!eQf!_>mSr^qT39MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Uit]BP;-r
+D/O<4EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR@B_<TV8-VVl6VrXfnt7ZaR?R]"G_k_8=.0a2lEH
+c-F\`daZh!f@em5h;7&IioB(\k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]1-hqYg<jr;HTdrdk*9
+s*t~>
+JcC<$QiHaXrVc`nr;6Njs7uZh554dEp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$fFMDL[4qqN(91rf?i9s,Z`4m#gjVrbq[Oqec(FrGVJ$s./qT!1WnV
+s-j:_S"#k9S!oh:r0m\TrL!_UR@F/D!1EhUrgX4^S!ob7R[T`BRKAtG9_qK^:Amu_;#!oY;Ya2`
+;#O2h:AR]`9`@]]9)_E\8GYjS7f5^K7/94K6N<JSS,SoYSY#hQ"JDKeY-@o1s0D[2"LPSF[C-"@
+4LM`4]YD>!^V%.d\@K2^]=YYc\@8uY\[oDc^:qD"`Q$$BbKeJ_e(*%%g=tH?iSrt^l0Rj-o(;YO
+qYc!FZ2YbVEDq:1G#hLtL4t52K7JJJ:fUIl;Gi1'QBmeort+&._o'7"\$WHHYck73XJr2uVBVk3
+US=ERSXl7=R[]_4R@BY4QB[VsOH5E]Mi!CMMi*=IMXlW&7fl4Q8cD>192&&S:/=\_;,U=k<*!%$
+=BSg4>[CcF@:E_XAnYjmCMds.EH6/DGBeF\I=Hd!K8#&9MN!OUOHPinQ^O>5StMdPUo1/kX0&S0
+ZEq!K\[oGe^VRe*`Q-'BbK\>ZdF-Opf@S^0gtgiEi8WeWjlYail0@U$m-X60nF?MK#4qK[p%J+R
+rV-BgrqcTjrqu`no_sFAQiDR~>
+JcC<$QiHaXrVc`nr;6Njs7uZh554dEp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$e[n84lTPo2,<]r_WAes%qNKlo=u)s#Bs;s#:!=qDeL8s#U*]r)il"
+!*K/#!*K5'!E`G!<WZ?)=oMM'=8Q%q=8Z+t=8u>$<W?#*<E<+#='&F'=&hrj:&Ric:\R]\;=[W\
+;>*ib:]=,c:&Rcb9DV9[8c;3V8,PjS7J9.F6iB=T='/U/>$Ll/%p`LK?t*VU@UWYP?XR8N@K'^=
+A7fFbAc-0AAn_0X>A@tiCMdm)DJsN8FEDYLG^+L\I=?a!K7no3LPL_DN/j!`Q'Rc)R[fq@Tq\?[
+Vl?c$Z*LaE[^W`V]>2;(b08)Td*gFof%8R.gtpuKjQGdmm-aE8p%\C^rdk+,ru3RI0KqT\2`=,p
+7n?*=6q00t5X.Cn4AALJ;c8VT&a,p7An#1V?X@#B>$+s5>$G2/=9Vc.='/L(r`&nrrDWl!<)Zcp
+;[ZE";,C(d;,0qc:JgUXrC6o[8P/nRI7m7.9hnJ\:f1+h;cHdu='/U/>[1TB?t!MSAS,UhC27[(
+E,fo?Fa&(VH[UBoJqJc3Ll..NO-#NhQ'[o.S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&T
+d*^:ke^rF+g>(N@hr*MSj5oFdkiqBum-O--n*olHncn^Xp%A%Pp\jjeq>U6hqu6NlrUg)?s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpho9nF,f4m-O'&l0.9ljQ#:Zi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$]^dKVkTWq7HF7qRc@3rOr0Dl+d%RqMtQ7qi:Q7pQ,H;OHKCds3L\i
+r6P&]p<<T]rQY;b"O56<d*M^=#11Z@d*g7fr6GMmdF-FkrR(\mqb@&brD32bqbd)cpJ^far)*5c
+rD3DfqG$r_r_*)[r^m&ZqFCHQrC-BIq*Y*I!QE+YaT'?gbKS8^gu[nin*g8Gs7-Edo^qbGo^qhU
+p]16krr`/op%/1U&bbnio'c#6mI'H5oC_eNq>:/Bs-*I#BW7c!>[b+JZEUL5XJoB.@pr\K>dDJm
+a2`u8)#a0tn*fW0lfmZsjQ#7Vh;R>Ph:gK0d*M[;(!k7QcHODK_Sa4)]stP]\[T&X[^Wd;\,Ahs
+8,u6\8q'E,9heAX:Jand;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:W?,L5:\E
+NK90aPa.T&R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`
+k32'olg4!*mdKW6nc/.\oCW%T!VZ9dq#C0iqYg<jr;HTdrdk*9s*t~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpho9nF,f4m-O'&l0.9ljQ#:Zi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$]=KDLd:qqiCH4qN's(l&kFPrbq[OqJH%G!,q7prL<_TpR;5SS"0JI
+!1NkSrgNnVrgO.]R@9V9S",uIRK/cTRg,=NR[]b8RJT_X:Amu`;#=,a;YO,a;Z'De;#O2h:AR]a
+9`@]]9)_E\8GYjS7f>dK7/94K633RHrLX%]-_R0.W33D3ZEppG['mEQ\@T2Z\@K/^]Y2+u_SEt%
+^:_+m^VIUs]Df>g]">Se]t_A!_o0U;bKS8ZdaZh!g"P39hVmJTk3;4"nFH5Fq"ajdJcDtS&QF1(
+G"kkkLP:A3Jq/>H:KCKp;$;W@Q^3qqruTk8_o'3u[^<?FYck43X/MtpVkp2aU7n3NSXl:?Rf8]h
+R[]\1Pa%AoO,f3ZN/<INN/EFJMXlW&8,l*[8cD>292&&S:/4S];,U=k<)lt#=BSg3>[:]D@:E_X
+AS5[kCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPinQ^F53StD^OUo(&iX0&P/ZEpsI\[oGe^VI_(
+`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlY^hl07O#m-X60n*olIncA@Srq-<cp\jmeq>^<iqu6Nl
+rUg)?s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpho9nF,f4m-O'&l0.9ljQ#:Zi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$\Rl84lQNnkf?`qG>X<krA>rq`"R9pf[Sur)j#%r)Wl#r`K8(=8>l$
+='/U-=]ec&<r,nr<rH,"<WH/!<<#tu<rQ/#<r5Vj:Amu`;#=,a;YO,a;Z'De;#O2h:AR]a9`@]]
+9)_E\8GYjS7f>dK7/94K63^Rr>$G6:?2e(3?!^iE@fBjM@UNPM?smGQ@q0(]B4b^dB4kiUBO>Ih
+Ci!s*Chmj'CMds-EH?5EGBe@XH[L9nJqJ`1L51S@MN!RWOcu)tR@B_;T:r!TV5L;oY->1;[C<WT
+]">\l`5^!EcHt"hf%8O,gYCZEj5oIhlKms/oChqSqu)*Gh>[X44Ztk^2?$)T7R]^676*=k5<V(k
+9iV*jNW0RCR<<(M@:*>G>[(B6=^,'6r`KS1<``@)=&r=#<)`cq##eN$;c?XorDF#";,L.d;,L+b
+;,:$Z:]3f`8,u6\8q'E,9heAX:Jand;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('h
+J:W?,L5:\ENK90aPa.T&R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:
+hV[8Mj5]7`k32'olg4!*mdKW6nc/.\oCW%T!VZ9dq#C0iqYg<jr;HTdrdk*9s*t~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg554dEp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^BUeKr1]WqRcU:p:L(3rk89EkeI/3!58/erJp]5qi:T8pQ,B9psAuc
+!m]-<qp,5dqTf#`$-^Z=bg"AVc-4H2bQuJ=cI'tadEp2;ciMP?rm;(uc-Xhcda-CjdFA.irD*>f
+q,$udr)2QRr)3GiqG@,dr_E>br_3;aqF^`YrCH`SrC6]RogJUCr^%CAai_`Kbg4_ghWO=roCV\J
+p\+@Tp\=a^!;QQh!W)fprr`5sq=ssb&Gl4sp%7kIo()DEp%\@Zr;M9IOT-,lTNu$:Za-g<XK8I+
+?"@AM>]d9ma2Z/Ts"aKFn*of5m-Ns"jlGL]h;@5OiS</=daHLgd*U+cd*L"]a2Gp5^V.4g\%&uW
+\@K&X\FR*/7fGpX8,u6\8c_RYr_7f9:Jakb;H$Op<``C+>$G6;?=.,M@q9.`BPD6uDJsN8FEMeP
+H@('hJ:W?+L5:\EN/j!_PEhK%R[]n@Tq\?[Vl?\uY->1;[C3TU]=ktp_Sa@4aN;WLcHjnde'ut#
+g"P3:h;@/Lj5]4_k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*9s*t~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg554dEp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^B1ID1@(nrf@#>s,m5@p5e^)k`Pk+lu)f@r,2=Iqek_ir1!YTr0nIj
+S"#k9S"-";S!oe6R@9S6S=5n9R[O,Cs-s%Y$_*QOR[]h:R@BY6SGl7]:B"&b;#F2g;WC^R;Z'Dg
+;#O2h:A[cb9`@]]9)_E\8GPdS7f5^J7/94L65Q5cTUqgLTq\?^YHkOC[^WcU\@K/]]=\!R&\Yrq
+_nj.)_8!_!^qmq*^qRM[]Hk2)^qmn+`lZBIcHjnee^i@*gYCWAiSrt^lKms-o(;VLq>:)@s/uA<
+H$;t]M2-h<JUr?$:Jb(k;,UeVQ^3l$N;jOcd`0/@]t(PWZE^[;Y,n\'W2KWk"JhfcTUu.Qs-jRf
+R[T_7R$O#%P)t`bNK/pSrJL`6MMgt]!(QrXs%!,]r^m2a9`@b7:/=\_;,U=l<E<1'=^#$7?!^lH
+@Uiq[B4u!pCi402EccGJG^=^bIXm!%KSG;>Mi<[XP*;/tR$sM9T:r!TVPgDnXfen5ZaI6O\\#Pi
+^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiT&tZk2tmll0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)Zj
+rqucoo_sFAQiDR~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg554dEp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^ACj84lQNkYTc+juE&pr&F=O!*K/%$WpJ3<`W:(=BSd/=8>l$='/R-
+=]ec&<WuQ,<`W:'r)Wbts&K,"r`&ntr`0##r_<>dr_N>dr)*Aij&>kRr)*;erD3Dfqb@&`r_*)[
+r^m&Zq+(BQr'g9Hq*Y-J!EiY)>lS(@?=.)LA7T7^@piYO?t!PUAH$3@AS,OeB4bagB5)*rCi+!)
+CM[g&Ci+*0EccJKG^4U^I"$TsJqJ`1LkpnFN/`m]Pa7])R[ftBTq\<YVl6YuYHbFA\$ro[]Y;2!
+`Q?<Hc-Ohff%A[1h;@2OjlbppmI0W<p\=R\rIP"'s8P1a1,_Wm7f>aa7QEIn5!D%o9iFtg;iUe^
+c&ZgS@:!5Gr`]M.=B\p3r`T;'rDjA/<E<*u<)cdq;cQdr<Vo]#:f:.f:Janb:An#[:B3l`8,l*[
+8cD<_92,=ZI83R7:f1+h<)lt#=BSg3>[:ZC@:E_WAS5[jCM[m,EH6/DGBeF\I=?]tK7nu8M2R=Q
+OHPfmQ^F52StD^NUo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ug
+l07L"m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-Nb9~>
+JcC<$QiHaXrVc`nr;-Qlq>(!a!Vc<eof;[9o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^BUeL8UlXrO_j;ot1(5r4W-El+d84rk8?ErJp<*qi:Q7qiCf=r6YJi
+s3UVgps/i_r6G;ds31Gd#L(H9c-=JVc2PoebPoceci25iciVM>dJhGtd*C"ad*:"ed/Hc=:B"&c
+;#O8h;X[Q`<:<ca;Z0Jh;#X8i:A[ca9`@]^9)_E\8GYjS7f>dK7/94K6N51AcI(1piT]h'p%\C\
+qtg0dqtg3hqYp?lr;HX)rr)cmqYU3fqu$BhqYL3es8)co!<.QLN;jVuA%8nNYck10W`iY<@:*8E
+ZH1)*`eXRLp\"(Gn*]T0kiq9ljPo%Sio8nPg=Xj'dEp:gcd:(bbf[oA_SO%$\@B#W\[K&Y[^`j<
+[fAns8,l*[8cD>292&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*VVAS5[jCM[m+E,fr@G'A4XI!pNr
+K7nu7M2R=QO-,WkQC+,1SXuOLUnsugWiWA-Z*UgG\@K5a^;%P&`Q$!@bKS8Xd*^=lf%8R.gYCWB
+i8N\UjQ>Ufl07L!m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$QiHaXrVc`nr;-Qlq>(!a!Vc<eof;[9o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^B4JD1@(nrK-o=r/gZ6qN1W;s,cK-qN1Ghs)%IIrbq[Oq/-.Lr1*eV
+n!s<FrLEkVs-inU&"9#WS=>t9S!ob5R%'P4Rf8`TRLYaSS!oh9S=,k7S!]\7RJoq[:B"&c;#O8h
+;X[Q`<:<ca;Z0Jh;#X8i:A[ca9`@]^9)_E\8GYjS7f>dK7/94K64KT[TV8*TV6$o-[C3WWrk&0B
+!5&3C$,4*d^r+(+^qdeb^bEUB_Sa:._83q&_8=(,_o0R8aihrTd*gCof%8R-gtprJj5oLim-a?4
+o(D_OqYU8Cs/l;99iHn(L4k21It(6i=&`'p;21F'Pa.4-)Xu"i_8*Xk['R'DZ*1:3X/W%qVPU/c
+US+9OrgWtXrL+FjR[BA)PECoeNfB!TMMm@MMM[4Jnqd?9r^ZuZ!(m/^IS3@.9heAY:f("e;cHat
+<`iL->?kH??XR>QA7]CeBkqO&DK'T:FEVkRH@1-kJV/W1LP^qJNfT<dQ'Rf+S"6.EU84W`WN*&&
+Yd(OA[^`l[]Y;.t_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9s7-3^o`"Lb
+p@n=\q#C0iqY^6ir;HTerdk*9s*t~>
+JcC<$QiHaXrVc`nr;-Qlq>(!a!Vc<eof;[9o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^ACj7nZQPkYV+Qr)2HMpGi13n2U)$!''mZs&ehps&]8&r`02(=BSd/
+=8>l$='/U-=]ec'<WZ9&=85ho<rl?%r`&nt!*9(nr_EGgqG@,fr)2u^r`&>brDNSkqG@/er_E>b
+rCm2`qb$iZrCHcTr'pWRogJUCrB^Ng>Q.k7?!^lF?t*YWAn>NN@00qMAGp'>B)ZEIAnP^fBPD5\
+C]/)LD,bIoEcQ8EG'J7XH[L9mJV&N-KnkJ@MN!OUP*D9!R$sP9StMgQV5L8mXfnt8['mHS]"Gbm
+`5Ta<b08/Ye(*(&g"YECioK:flg=03o_8.VqY^>Ds4[J\1,_Wm7RT^76q'*qr]^HG4AGcQNW07!
+LhgC*?sI":>5hV6>$5'5>$4m+=&rC&<`N)s<"2c+<`W0u<)Z[m;,L4gr_Ner:f1%d:f-^Y!(QrX
+s%!,]r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi4-0EH?5FGBnL^I=Qm$KSG8=
+Mi<[WOcu&rR$sM8StVmSV5L;mXKJe4Za@0N\\#Mg^V[n-`lQ9Fbg+P]dF6Urf@\g3gtglGiSrnY
+k2tjkl0@U$mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s-Nb9~>
+JcC<$QiHaXrVc`nrVQWks7uZhs7ZNerq/>EoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/bSG(lci\@_CGq7HL9qRua>n\>+<rk8<Ds189Brf-i9mu@4)rK$l<
+!0@!'q9S`Zqp#)brQPJhc-=JWrlbDfb5TThc,n/Qcd:#9d/VB!cd:%ad*Kt`c-Xj4r_EGgqb[5g
+rDNAgoi1lip/LcbrDNVlqG@/er_E>br_3>bqF^`Yr^ciTrC6]Rp-e^Dr'Cb:dF?e&ip6+-q"ssg
+$3'u(rVZQjrVZZnrrrE%rr2inrr)lrJcC<$s8N_A['?j>XfJL*?=dSQ?<a_VaM`l6.K0&4naGr9
+mHj0&k2k[_hr3VTi8*,>f$i're'ZRid*BhV`59F-]t:fQ[fs4N\$ifVo!\TgrC;?.8P)NH91qrQ
+9hnJ\:f1+h;cHdu='8[0>[1TB?t!MTAS,UiCMRd)E,fr@G'A4XI!pKpJqSl6M2I7PO-,TjQC+)0
+SXuLKUnsugWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X6@
+mgJXTo()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$QiHaXrVc`nrVQWks7uZhs7ZNerq/>EoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/bHA8ZmIMid[qr/gf:qN0a"q2kT:pMTqHoksbIqel7IqOIMRnXTKG
+rLEhU".G^KRf&WTRJiQWQ^F22SGScTR1#IQS=5t:R$sG3Rn`lWr_NDfrDEMkpJ^`arDiPjpJ_#g
+r_`Mgr_NMgqb@&`s%E2\r^m)[q+(BQr'g<Iq*Y'Hs.M$=V5LH#ZaRBT]t_@t^VIRt^V7Is^V7Ft
+_o'=*^VI\&_84"*_o'F3`Pf^6`W!k$`Q#s>aihrSd*gCnf@S[.gu%)MjQ>Xjm-a?4o(;VMqYU8C
+s/Z/4M2$b<KRn`):Jb(l;c-GIQ^<tqrs.`2`59:#[C-">s0*QHXK&8!Vl-AgUnaWVT:MLCS=>t:
+R[fh4Pa%>mOH'6u!/gc6"H&%mMMgt]!(QoWIn3.&8kM`L9MJ5V:Jakb;H$Ln<`W:)=^#'8?=.)K
+@Us%^BPD6tD/O<4F*)SLH$XjdIt3-(L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXfo"9['mHS]=bkm
+_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_`nF?)?oCV\Jp%J+RrqQNhs8)Zj
+rqu`np&9OBQiDR~>
+JcC<$QiHaXrVc`nrVQWks7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/b07Rg!E:[:jR;>O2J;>3'K2t&a#3<31Y=oDIp=oVS(=8l8#<s2W.
+=BAT$<rZ8!=Su5"<<?3&=SZ"q<rl?%rDWbkr_EGgqb[5grDNAgoi1lip/LcbrDNVlqG@/er_E>b
+r_3>bqF^`Yr^ciTrC6]Rp-e^Dr'LEg$XI(F?XI2M@q0(^B)Z<I@prkX@q0%\AS1pS!G6!BB`;`G
+CfkOlDJsK6EcZ>EFa&(UH@10jJV&N.KnkJAMi<[WP*;/sQ^XG8StD^OV5UAnXKSk6ZF%'M]"Gbm
+_o0O7b08/Ye'lgug"YBBioK:dlgF64o_8.VqY^>Ds4I>X7n,s977K^82`^k%"[+qA;c?YSrsc;b
+Bjk@U?<^T:=^"p1r)sb9<`N:'=&i:%<Dums<Dupu<)cco;[lT%:f1"b;,L(c:esnankT6TrC;?.
+8P)NH91qrQ9hnJ\:f1+h;cHdu='8[0>[1TB?t!MTAS,UiCMRd)E,fr@G'A4XI!pKpJqSl6M2I7P
+O-,TjQC+)0SXuLKUnsugWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5Oe
+kiqBum-X6@mgJXTo()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq/JIoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iYRFbZik\\,Sg]tF?XqRld=qRlX;qnDX9s1\KGrk/9Crji-@\G_Ea
+Nphu*Nr"e:OSmH,cd:&8cN;D<chbrec2Q#dbm2J;c-FVYc-613!mAg1rlkAd$d-]9bfe2UcHsq`
+d/D8icj7qDc-Oe`cq[@8:]!uf;>jDg;u9Pf<W,tl<Vobk;uT\n;>X2h:]F2e:&[ic9D_?\8cD9V
+8,YpT7J9.F6i97Vf@o*Bm.'lJrV-<mrVZZop](9mJcC<$q>V#2Yct72X'&b7@UNJGZH1)*L]91.
+p@%M>mdBK/lfmWpjPo+Wj5]+Sg=Y$+daZandEp7cbK.W>^qdXo\@K,Y\$iiV\%&s>\,Sqr7fl4Q
+8cD>392&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYjmCMds.EH?5EGBnL^I=Hd!K8#);MN!OU
+OckroR$jG6StMdPV5L8lXKA\1ZF%'L\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\d1gtgiFi8WeXjlYai
+l0@U$m-a?2nF?)?s76Edp%A%Pp\ssfq>^<hqu6NlrUp/@s-Nb9~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iYHA8QmJMu8_:P5CC7OQ;Q"OT(=@NrP+3DZ">QDJa7dDZ4SODZ+GM
+S,f&WSGSfUSH#)VSH#)XSG\i]R[]e:S=5q9rgO%YR[KV5rL41_R[BM1R%0Y9S!f`DRK&`^R[fe7
+S!fa@:B"&d;#X>j;Ya8g<;'>j<q]Pj<;BJl;Z0Ji;#X8j:A[cb9`@]^9)_E]8GPdS7f5^K7/94J
+67AY,WNNM4\@T;c^VRb'_SEq$^;%Cs^qde(_SO"%^qmn)_8=(,`5KXo`WXB'aN2O'aWJ^Mbg"G\
+e(*('g"Y9:hr3VWk3)!qmdK]:o_%tSqu20HWW*NaKS4o.Inig:<E)gnL6n3kMuOFJb/D33\[AfL
+ZE^[=Y-"h+W2KWl"f.oeTV%hTSJ[ibS!oh8Q'@MrO-#B\N/ELNN/NUMM2I2^M>p'D7fl4Q8cD>3
+92&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYjmCMds.EH?5EGBnL^I=Hd!K8#);MN!OUOckro
+R$jG6StMdPV5L8lXKA\1ZF%'L\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\d1gtgiFi8WeXjlYail0@U$
+m-a?2nF?)?s76Edp%A%Pp\ssfq>^<hqu6NlrUp/@s-Nb9~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq/;DoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iY17Rp'E:]+&g;>*i_;>O2J;>sDb3;b]:3&`eg3;GT3=T)D"=SQ%t
+=9)G$<WZ?)=T2D#<WlK)<``B$=9ho.<E<+#<EB*#qH!Prs&K8&<)cUfr_NDfr_`Vlq,@/ip/V&l
+p/Uuhq,@8jrDEGgr_NPhqb@&`r_*,\r^m)[q+(BQr'g<Iq*Y'H!+#S1!FK76@K9s<B+&9_A7B"X
+@Uiq[AS1pS&8#QgBk_<qBk_=!D/O92E,tr!:NU`&GBnI[I!pKqJqJc3LP^nHN/is^PE_B"R[fq?
+TVA3XW2ZeuYHY:;[(!QV]YD8!`5Td>c-Oede(*('gtq#MjQ5Ukmd]oAp%S:Yr.4murt%Xf77K^7
+2E<c]5<V)&;c?\Us!R?7HY-\n?X?o==^"s1=]ns3>$4s-<`rI)<E<.#<)lmt;cQdr;c<Tns%rep
+;>sDl;$B]j:esnao2#BUrC6o[8P/nRInNI09hnJ\:f1+h;cHdu='/U/>[1TB?t!MTAS,UhC27[(
+E,fr@Fa&+WI!pKpJqJc4M2I7OO-,TiQ'du/S=ZCIUSXleWiW>+Yd1XE\%0)_^;%M$`5Td<b0/&T
+d*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD):
+J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7\\Mp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iYRFG?ck\bNl7]E#S@]_B,<^@T,=^AknG]`5SD])B/>\Giu7NW5%<
+NW+t7N<"q4NW+t7O8@6"ch,N]blH&[blZ,6bl,cibg"AUb0Bn/s3L_l!R]9mc3;P>cd9q_r_NDf
+r_`YmqG[;kr)Ml[r)N\pqG[Akr_`Phr_NPhqb@&`s%E5]rCQuZqFCHQrC-BIq*Y'H#3"_2oDSXe
+q>UQrs8W%Ks+146rsl97XK,N2?"./H>I2Dk`eXQtqY'IKnF$;B-0j^Wk2bO\jQ#:Zh:pW7daHXo
+dF$=fcHF5G_na(#\@/lT\@9$H\F[307f>jW8,u6\8ps?+9heAX:Jand;c?Xq<``C+>$G6;?XI5N
+@qB7bBPM="DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T&S"-(BTqeE\W2co#YHY==[C<]X]Y2(q
+_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5]7`kNM0qlg4!*n*fc9rpg9bo_%nNp@nO\!r;]hr;6Kk
+rVcEgJcD):J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7\\Mp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iYGA8QmJMu8_9P5CCAOSt=AOQDW#OT(=@Nr+h9D>8#JDZF\OD>8#J
+Du4DPD>Ke%S,]#QS,AfTRfJuLRf]%JRf/]ZR[]b7R@=)B!1a"W!1NkSs-a%ZS=,iF:]!uf;>sJi
+;uBVm<T[?[<W,nn;uT\o;>X2h:]F2e:&[id9D_?[8cD9W8,PjT7J0(E6i97[XKJh8]=bei^VI\&
+_8#u`!l)IbrkSlX_83n$^qmn)r51,)`Q#s>ai_fLbKJ,RcHjkadF6Rpf@em4h;7)Lj5f@dl0Ia)
+n+$&Cp\F[ardk*Jrsj^5JU^Ek:fUIm;21F'Q&GY]f>tkH]=>8UZ*LX<Ycb+0X/MqnVl$8bTqJ'M
+rga%YrgF@eR?`u"P)kZ`NJ`UOMi*GjMXu])7f>jW8,u6\8ps?+9heAX:Jand;c?Xq<``C+>$G6;
+?XI5N@qB7bBPM="DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T&S"-(BTqeE\W2co#YHY==[C<]X
+]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5]7`kNM0qlg4!*n*fc9rpg9bo_%nNp@nO\!r;]h
+r;6KkrVcEgJcD):J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7\YLp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iY/7Rp*FrD<Agq,$rcqGQBOp.t`LpGi.4!''g6of2e.pK7Guq,mJr
+rE'&$rDiu$=BPQ(r)Weu!*K5'"B\`+<`T*!s&]2#!*B,"r)Wo"<W5ek;#X>k;Yj>i<;]bY<r>tr
+<;KPm;Z9Pj;#X8j:A[cb9`Ic_9)V?\8GYjS7f>dK7/94J64I:.?X[DP@UinYA7]=_rF5e;!G,mA
+B*i0_BPM9tChda%rbhaT<,lr"FED\MG^4X`I=6QpJV&N.L5:YCMi<[WOHYopQ^F53SY)UMV5C2k
+XKSk5Za@6Q]"G_k_SjI7aii#Xe'lk!g"Y?@ioK7dm-aB7p%A+TqYYpEe,TA8$8sq*5!M1l9iFtk
+NW07ARrr4M?sR+;>5q\&=V+b==B/F*<`W4#=&r:#<)cfq<!?2u;,^@hr_Wnr:f("c:ejpf;"IK_
+7f>jW8,u6\8ps?+9heAX:Jand;c?Xq<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@('hJ:`E-
+L5:\FNK90aPa.T&S"-(BTqeE\W2co#YHY==[C<]X]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8N
+j5]7`kNM0qlg4!*n*fc9rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD):J,~>
+JcC<$R/cgXrr)ior;6Njs7uZh621*Hp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$`PQF+pNg\\>fR^%K&6^&>\:^](tI^&PbF])]G@\H'/<\,Ni/NW"n9
+NVnb1N<#":O8@6"cgf<LblGudblQ&5rlbVhbK7oObfe91cNMP?c-Xc8cN)8icN$c<;#X>k;YsDk
+<;fhe<r?%h<rH%s<;TVn;Z9Pk;#X8i:Adic9`@]_9)V?\8GYjT7f5^J7/94J63HuWqYg3hs8Mfn
+!<.QLJcG0<s/QK0?<q#I?!FVVa2Ni6*;K3snF5o6mHNs#kN:jcioT1YhqQr>f@/0te'e6B&C/M?
+_o'7(]=>8W[C<WU\@:t;!_#RJr^ZuZ!(m/^!D?,c9moc4:f("f;cHat='/U/>?kH@?X[DRAS#Lf
+C27X'DfKf>Fa&(VH[U?nJV/Z2Ll%%KO-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:
+aihoRcdC1je^i@*g=tH?hr*JRj5oFckiq?tm-O--n*fc9o()DErq-<cp\jmeq>^<iqu6NlrUg)?
+s-Wh:~>
+JcC<$R/cgXrr)ior;6Njs7uZh5POmFp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$`PE@r6dJMu/V:P5^UBOPc2sOT(=?NqeV5D#\AKDZ+MRDYe5FDZ4SR
+DYK[lS,AfFRfJoURfStIrgFLfR@'D2R@'G5S=>t:R$sG2R[TZDRfH7];#X>k;YsDk<;fhe<r?%h
+<rH%s<;TVn;Z9Pk;#X8i:Adic9`@]_9)V?\8GYjT7f5^J7/94J64gQ5\@]De^:_1p^V7@o]t_>]
+_>h@W_8*h#^qde'rPSrY`5Ta;aiVa)botBYd*^:ie'uq!f\"p5h;@/Lj5oIfl0Ia)n+$#Bp\=U`
+JcDSHs*tGO:f(.l;Gi18QB[@.)#;Y#_ns$p['R'DYd1F8XfSS%Vl$AgUS@a\(nR:hS=?":R[]_2
+PEV/kNJrgRMi*IOMMgkZ!_#RJr^ZuZ!(m/^!D?,c9moc4:f("f;cHat='/U/>?kH@?X[DRAS#Lf
+C27X'DfKf>Fa&(VH[U?nJV/Z2Ll%%KO-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:
+aihoRcdC1je^i@*g=tH?hr*JRj5oFckiq?tm-O--n*fc9o()DErq-<cp\jmeq>^<iqu6NlrUg)?
+s-Wh:~>
+JcC<$R/cgXrr)ior;6Njs7uZh5POmFp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$`P.7Rp'D;#4&`;#F2g;WUdK;#X>k3VYT43WD)82to<03W<1I=Su>"
+=9)G%<WZ?)=T2D"<rZ5%=BGH's&T/"s&K5%='/Q"<r?#!:]!uf;>sJj;uK\o<Uj,f=7K>i<W,no
+;uT\o;>a8i:]=,e:&[ic9DhE\8cD9W8,YpT7J0(E6i97Z>?kH??XR8K?t*VU@K'^>A7]@bB4q3U
+#A7^aBkqO%D>e?QDfB]:FED\MH$O^`I=?WpJ:`E+KnbD>M2R=PO-#NgQ'dr-S"6.CTqnQbX0&P.
+Z*LaG\[oGf^r"%/a2uKKdaQ^rf@ep7i8Wh\lL"$/oCVbPqYU2As3^iT6q0*q3BfYj4%rUP;iUe^
+d?/BY?sm/Cr`U+@=BJX-=BJa0=]\[,<`W1"=&r7"<)Z`p<!?3";c?Rjr_Wnr:esn_;,C-Z:BEsS
+7fGpX8,u6\8c_RYr_7f9:Jakb;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:W?,
+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<[C3TV]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8M
+j5]7`k32'olg4!*mdKW6nac8Bo`"Lap@nO\s7u]krVQTlrVcBfJcD,;J,~>
+JcC<$R/cjYrVc`nr;6Njs7uZh5POmFp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EGPEe^Ki\Gj5<^%K&9^&Gb;^]2%I^&PbF])fLRrODg8qR6'Vqi1Z9
+qMb3/rJps)r6PMkd*Va;m`t=H!mJp6rlbDfb5TW_b7Db=c-=JYd*U(acd:"acHc>as&&bnqc!Gm
+r`/\npK.5opK.)ir`/qsqc!Jlr_`Sis%iVhr([/ar_*/]rCQuZqFCKRr'g9Hq*Y'H#4hBYpA4[b
+rVuosq#:?nJcC<$m/IAp?=dSQ?!FVWaG9csrqQ$_n/(N[mHa'#kN:jcioK(UhV$];f@&*reC+?C
+&C/M>_nj+%]"#5X\$rlX\$tk:!_#RJr^ZuZ!(m/^IS3@.9heAY:f("e;cHat<`iL->?kH??XR>Q
+A7]CeBkqO&DfKc<FEVkRH@:6mJV/W1Ll%%KNf]EfQ'Rf+S"61FU84ZaWN*)'Yd(OB[^`l[]t_A"
+_o9X:aihoRcdC1ieCN7)g=tH>hr*JQj5f@bkiq?sm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Njs7uZh5POmFp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EGD@W-gKMZ&\:O8tF>OQ2K"OT1C@Nq\P5N;nn9D#\ALDYn>PDYe5F
+DZ4PSDY9OlRfStIr1*8G!h,UJrgEkWRJrZRR0&hER/WQRRfJlURf/ZP;#aDl;YsDk<;onl<qf\m
+=SGnk<rQ+u<;TVn;Z9Pk;#a>j:Adic9`@]_9)V?\8GYjT7f5^J7/94J65?c2ZaI?T]=ktn]tM(l
+^;7Y$_83q&rP&EL_8?,g#0"U'b0/&Trm(bpdF$CjeGe#:f@em5h;7)Kj5oFdl0@U%n*oo>p%S7Y
+rVhBJV#L`r:fgXr;Gi18QAbc!n]f(k^Ugk[Za$d=Z*1@3XK/:tVPg5bURn-OSt)@AS=>t9S!fS+
+P`UrbMiEUON/W[QmYM!67RmAIs%!,]r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!p
+Ci402EH?5FGBnL_IXm!%KSG;>Mi<[XP*;/sR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9F
+bg+P^daQ^sf@em4h;-uHiSrnYk2tmll0@X%mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?
+s-Wh:~>
+JcC<$R/cjYrVc`nr;6Njs7uZh5POmFp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EG.7Rp'E:]4/^;#F2j;W^jM;#*uf3VYT23<2&82u#B23WE:^=mK2f
+=o;A%=8l5%='/T(=8l7u<rlE)r`B/%rDrqur`Ahp!*B(ps&&bnqc!Gmr`/\npK.5opK.)ir`/qs
+qc!Jlr_`Sis%iVhr([/ar_*/]rCQuZqFCKRr'g9Hq*Y'H$!CA5>$P<=?t3^F@K^1PAS,TRAcQKC
+B`;`HD#J3PDJsN8FED\MG^4U_I=6QpJ:W<)KS>2<MMd@QO-#NgPa7])S"6.CTqnN`WiN5)Z*UjI
+]"5Si^r"%0a3)TMd*pOqf@es:ioB.`lL"$/oCV_Mq>:*hJcF*s#rak/5!M1l9N4uMrsHZ#CLU[X
+>[1H9>Q.bQ=B\^->$4s/='/L(;H6du;cQaq;H$Rp;cH[o;GU.d;,C(d:esk`mnX!R7RmAIs%!,]
+r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EH?5FGBnL_IXm!%KSG;>Mi<[X
+P*;/sR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiSrnYk2tml
+l0@X%mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-Wh:~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg!Vc<eofDa:o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EGPEJUNj\,F&:^&#AC]tD#W^&Gb;^]2%J^&GYH]=PSarj_p9rO)^6
+rjMg6nr<R-s,Hl6qMkN8rQkMjrQkJis3L)Xm`cEhc-=DTc-4DTaiVcMbKS5Tc-X`7cNMYAcHji9
+;#aDl;YsDl<;onn<r?%o=SQ%o=Su7s<rQ+u<;TVo;Z9Pk;#a>j:Adic9`Ic_9)_E]8GPdS7f5^K
+7/94I63ZiGnb2kYrr<#t!WW/qrrE%Ls+147rruq?>["JVabTlsr:p9\!UoFTlm1iZkiUsdio8qR
+gtUT9f@&-seC)^kd*BhT_nj.%]=>AZ\$rp8\,o)g7f>i,84cBF8kVfN9heAY:f("e;c?[s<``F,
+>$P<=?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:iN0LP^nINfT<dQ'Rf+S"6.EU84W`WN*&%Yd(OA
+[^`l[]Y;.s_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6rlg4$,s6g-\nac8Bo`"Lbp@n=\
+q#C0iqY^6ir;QZerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg!Vc<eofVm<o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EGD@W-gKMNO%nOQM]%OT1C@Nq\P2N;nn7D#S;KDZ"GQDYe5LDZ4MP
+DXs=lS,JcUS,AfERgbaTS!f_7R[TY3R$sHBRKJtHSXTMH".GUFRJp%_;>sJj;uTbq<V]\n=85nm
+=nl+s=8Gts<W5tp;u]bp;>a8j:]=,e:&[id9D_?\8cD9V8,YpT7J9.F6i01TYck:<\\#Pgrk/9E
+s1eTLs1\TM^AP_H^qp#e/]>WLaihrTd*L(ddF-Lne(*(%f\+s4gtpuKioB1al0@X$mI'K7o_/%S
+qu-MFs.TGs<E)jnL6n3ars7i5`5KC#[Bm4=YlCm0Y,n\(WW&e&UnXTVTV%gHSXc5KRg#4GPE_,h
+rf$l7s,?u9!/g6%!_#RJrC;?.8P)NH91qrQ9hnJ\:f1+h;cQk!='8[0>[1TB?t*SUAS,UiCMRd)
+E,fr@G'A4XI!pKpK7nu7M2I7PO-,WkQC+,1SXuOLUnsugWiW>,Z*UgG\@K5a^;%M%`Q$!@bKS8X
+d*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD,;
+J,~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg!Vc<eofVm<o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EG/77^'F:Jk!X:ukLH;"mid3V>B03WD)82u#B1>5_Uj=Su>"=9)G%
+<WZ?)=T2D#<WlK+=BAT'=9)G"<WcE(='5E%!*B,"r_WVlr_iVlr`&ksq,[DppfR;opfRGqqH!Sq
+r`&bns&/hnr)!Dhr_EAcr_3>bqb$iZr^ciTrC6]Rp-e^Dqa)$"<EE@0?t!MR@q&qXA7]@bAS#Ib
+BDuTDBj>ChCM[j+EH?2CFEVkQG^4U^I"$QqJV&N-KnkMBMi<[XP*;,pQC"#/SXuIIUnsufWiWD.
+ZaI9P]=bhm_8O@6aihrUe'uq"g"bKEjQ>[jm-X92oC_hPqu$GEs3:TD56O,19iP)Nrs#o_Bk(OX
+?N++O>?G$0=BAO*>$+j-<`iC'<)lt"<)ljr;H$Rp;cHXn;Gd?is%ihq:f'nbmnX!R7Rm>HIn3.&
+8kM`L9MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)L@Us%^BPD6tD/O<4F*)SLH$XjdIt30)L51VCN/is]
+PEhH$R[]k>Tq\?ZVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!n
+lKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAR/_[~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eofMg;o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<APEJUKh[D2[S!58BGr4N*CrOr6F!58?FotUL?s1SEE"1u.T\c0,<
+\,Ec7[/dZ6[JmQ4NW+n3N<+utqi1Z9q2G31p!<Was3LGb!6t;aoZ[B[rlkPhc-4E2bn\IIbfe,O
+aihlMcHFGVcd0n_cHjd4r_`\nr)<Sor`/eqrE&o!k#qUarE&ksr`/qsr)<Sms&&\jr_NPhr([/a
+s%E5]r^m)[q+(BQrC-BIq*Y$G"RkmRq>L3iqYpQpJcC<$kPkZi>-lAnL]7JRp@.SNmK;hAm-4N4
++Q_\DiS`SJh:pQ4daQUmda6Fgc-+2G_SEjs\@ArU\@M":!_#RJrC6o[8P/nRInNI09hnJ\:f1+h
+;cHdu='8[0>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsuf
+WiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8N\UjQ5Oel07L!m-X60n*ol<nd"dY
+o_%nNp\4[^s7u]kr;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eofMg;o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<AC@W-dJMNRRnk`P\&s,[2?pPo!-rf-bjrGDFLqelIPq/$+Lr,);#
+!1WhTpm_,K!1WnVoU>iLrgO"YS!ofFRh_B]R[KP2R$jD1S!]V4S"#k9R@9L>r_`\nr)<Sor`/eq
+rE&o!k#qUarE&ksr`/qsr)<Sms&&\jr_NPhr([/as%E5]r^m)[q+(BQrC-BIq*Y$G"L#,=\@VRM
+!PQ;J^]2+L^(e>t^V@S#_8=(-`lQ<IcHjkbdF-MCe/d)jf@S^0g=tH@iSrnYk3)!olg4'.nac>G
+q"agcJcD>As%riPQ^*L/#iEhD`4`[dZa'M6s/u^1XK/;!W2?Gfrh9RhSt;LDSG\i[R?j&#OH0=!
+s,-f6s,-9%!_#RJrC6o[8P/nRInNI09hnJ\:f1+h;cHdu='8[0>[1TB?t!MTAS,UiC27[(E,fr@
+G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=l
+e^rI-g>(N@i8N\UjQ5Oel07L!m-X60n*ol<nd"dYo_%nNp\4[^s7u]kr;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eofMg;o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<A-6q9mD:JpRWk#(_Hq,.,hr]0R0q`+X9q)A11qHEc!mTBBir)iu#
+s&K,$r`K2%rDrr"r`B>*=]ea+=8l5$<EJoq!)WYls&/bnr`&ksqH!Prr)i)ar)io!qc<\rr`&eo
+r_ibnr)!Ags%`Jdr_3>bqb$iZr^ciTrC6`SogJUCqa1<b$<phE@U`hV@Uin[ral+AA7]@dBkV3p
+BPD3rCi+*1EcZ>FF`qtRG^4X`I=?]sJV/Z1Ll%"IN/j!_PEV5sR$jG6StD[NV5L8lXKJh7[C<ZW
+]Y2(s_oBd@bKeJ`eCE.&gYLiKjlbmnlg4*1o(DeQqYPjDbPq].3_`RQNW0phWI8Gh?X@)B>$>'3
+=BAU+<`iL,=&i7&='#<#(fjU9<E)jp<Dugq;H$Ii;,L.d:Jjqc:/^OV!_#RJrC6o[8P/nRInNI0
+9hnJ\:f1+h;cHdu='8[0>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0
+SXuLKUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8N\UjQ5Oel07L!m-X60
+n*ol<nd"dYo_%nNp\4[^s7u]kr;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNAoW[(VR+%PpV$X@rOr9Hr4_j=rkAEGs1JBD"M2.S\@DLHrO2R1
+qm6@2rf-f6rf-f6s,Hr:rf-f6rJgg%p<W`bs3LGbrlt;bn]`-!b08,Sb0A2ScHOJUai_iNb08,S
+b0A8YcHf?b;H!Ekr`&ksqc<\trE/brnQPWhrE0&#qc<_sr`&eos&/kor)!Ags%`Jdr_3>bqb$iZ
+r^clUr'pWRogJUCqa(DWq"jpfrW<&trdk*#s5*bWZHLCGs"=-AnF,f5mHa-(lKIEnjlGF[hqd)B
+gXk!+e'ZUldEp4`bK.T<_7mOk\@/lV\a?m,7K,dU8,l*[8cD>392&&S:/4S];,U=k<)lt#=BSg3
+>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&:MN!OUOckroR$jG6StMdPV5L8lXKA\1Za@0M
+\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$mI'H3nF?)?#P7T[p%A%Pp\ssf
+q>^<hqu6NlrUp/@s-Wh:~>
+JcC<$R/cjYrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cN=^l;tJVfMOq2jg&qN1];s,Qi5p5K!1ph]kFqel=MrbhIIrgWeT
+rgNqYS,SrTRf]%JS,/QRS,AfHRhhH\R[]b6S"#k9R[KV3R@9S3R@9P2RJiTS;?'Pl;uTbq<Vohr
+=8c7p=n,\h=oDJ%=8Q%u<W5tq;u]bq;>a8i:]F2f:&[id9D_?\8cD9W8,PjT7J0(E6i01P[C3TW
+qn)pCr4i9G28?rA^qde'_o'F4aihoRcd:(edaQ^qe^i@)g"G*6gtpuKjQ,IdkiqF!mI'K6oCVbO
+q>:,As.')jL7"6as";sG`5B6tZEga>YHP+3XfSP%W2HMiUnaZXTq7jHSt):=S=?"8QBRMpOH#3X
+MZ/P5MXQB%7K,dU8,l*[8cD>392&&S:/4S];,U=k<)lt#=BSg3>[:]D@:E_XAnPdlCMds-EH6/D
+GBeF\I=Hd!K8#&:MN!OUOckroR$jG6StMdPV5L8lXKA\1Za@0M\[oGf^VRe*`Q-'BbK\>ZdF6Uq
+f@\g2gtgiFi8WeXjlYail0@U$mI'H3nF?)?#P7T[p%A%Pp\ssfq>^<hqu6NlrUp/@s-Wh:~>
+JcC<$R/cjYrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cN6:==99MeS`nkeOInkf0[qbdDkr]0m9!&sm:s#9g7r&Oa9q`"I5
+r`T,%q-!2hr)rr"r)`l"s&]5$!EE2"=8uA+='8X,='#<%s&K,$qH!Vns&/bnr`&ksqc<\trE/br
+nQPWhrE0&#qc<_sr`&eos&/kor)!Ags%`Jdr_3>bqb$iZr^clUr'pWRogJUCqa(Wo>[LoK@q&nW
+@q>IJ!+u1C?>4.hCMI['E,fo>FEMbMGBe@XH@($gIt3*%KS>2<MMmITOHG`jPa.W(S"#tATqeH^
+WN*&&Yd:aH\@T;c^VRk.aihrTd*pLqf@\g4hr<_YkNV@#n*oo@p\F^aJcEjl!_lWnNW0pXSonUQ
+?X-l>=^,'4=B\d-<`iL,=B/@'='#<#"]eT&<)liq<!Q?$;H$Ij;GmEi"Aquk:f-UV!(HlVr^ZuZ
+!(m/^InNI09hnGZ:f1+h;cHat='/U/>?kH@?X[DRAS,RgC27[(DfKf>Fa&(VH[UBoJqJc3M2I7O
+O-,TiQ'du/S=ZCIUSXleWiW>+Yd:^F\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5Oe
+kiqBum-X60n*ol<nd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVccor;6Njs7uZhs7ZNerq/GHoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLAoWa&VQdeL^\tnF^](tF^Au"E^]2%H^]2%J^&PbF]*#XT\@DIG
+rjMX1pU'pZq2><5pl#34qi:Z8rf$i9s3LSfs3L_jr6PAhs3LMd!R8pfc2>l_blc27c-6+1s31Gd
+rlY;crQ5,arlPDhbfe5Vc2LW>;uTbr<Vohr=8l=t=o)=k>PhV"=oMP&=8Z+u<W?%r;u]bp;>j>j
+:]F2f:&dod9DhE]8c;3V8,YpT7J9.E6i01Wq>C6jrr)fps8W(Ls+13$s5a1bq=X7Fn*]T0rp(*Y
+kN:jciSNGGgY1E7e^`+IdJqQ)ccXAN`59@)]=>AZ\%&uY\*pj,7K5jV8,l*[8cD<_92,=ZInid9
+:f1.i<)lt#=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=?]uK8#&9M2[FTOHPinQ^F84StD^O
+Uo()jX0&S0ZEpsJ\[oGe^VI_)`Q-'BbK\>ZdF-Opf@S^0gtgiEi8WeXjlYail0@U$m-X91nF?)?
+oCMVIp&F^cp\ssfq>^<hqu6NlrUp/@s-Wh:~>
+JcC<$R/cjYrVccor;6Njs7uZhs7ZNerq/>EoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZL=^lAuJVWr\l]M(+rf@)>pl4m(rJgMeqec7KqeuIOqecA'qj[VU
+qO@JSs-rqTrgWeR!1WnVq3qJTS"#lES,\rUS,\oaR@9M1R@0M3R$a?AR/rbDr_i\nr`&ntqc<\t
+r`Ju!qHEAmqc`eur`K/$r)Wess&Anps&/hnrD<Jhs%`Jds%NDbr(?r[rCHcTrC6]Rp-e[Cqa(=m
+]DK5C]t_:rrP&9G%)B`s_o0O7aNMfPcHlL;,1=ukeCE+$f\,$6hVdAQjlYail0I[%m-X92o(;YM
+q>:-iJcC<$V#MS6eB#PC]=5)OYd(C8Y-4t/X/`+sVPL#_U8"?RSt2FBrgNkV"dkU>P*(k*Mu\b7
+MuSY7M=69#7K5jV8,l*[8cD<_92,=ZInid9:f1.i<)lt#=BSg3>[:]D@:E_XAS5[kCM[m,EH6/D
+GBeF\I=?]uK8#&9M2[FTOHPinQ^F84StD^OUo()jX0&S0ZEpsJ\[oGe^VI_)`Q-'BbK\>ZdF-Op
+f@S^0gtgiEi8WeXjlYail0@U$m-X91nF?)?oCMVIp&F^cp\ssfq>^<hqu6NlrUp/@s-Wh:~>
+JcC<$R/cjYrVccor;6Njs7uZhs7ZNerq/GHoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZL6:=C:9M\J^;>j>i;>sDU;=dW[;>O2i;>rTR3;ti:3;b`53;Y`8
+3;tl93<*1Z=oDOu=n5\m=o;D"<s2W,=BAT&<WH5#=T;J&=Su7q<rQ"q;uTbr<Vohr=8l=t=o)=k
+>PhV"=oMP&=8Z+u<W?%r;u]bp;>j>j:]F2f:&dod9DhE]8c;3V8,YpT7J9.E6i01O?=..?@fKp>
+A7]<NAH?=Rr+KANCMRa(DJsK6F*)PJG'A1UH$XgbI=?`uK8#);M2[CRO-#KePE_?!R@B\:T:r$U
+Vl6VsY->1<[^ir\]YD;#`Q--FcI(+jf@em5h;@5Qjlbjmm-X<5o_84[rdk*#s3go_e<b&`?s[,D
+=]ns3=BJX,=BA[/=BJT&<s2Q(<E<0!<!?2u<)ljrr_i\ls%iep:JXgT:]El`7fGpX8,u6\8c_RY
+r_7l;:Jakb;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T&
+S"-(BTqeE\W2co#YHY==[C<]X]Y2(q_SjF6aND]NcHsteeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*
+n*fc9o()DDo_%nWp&Ojdq#C0iqY^6ir;HTerdk*:s*t~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7\bOp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKY]5SmVQ@H0^Au"F^Au(B^\PVD^&PbF]*#XT\@D@DrO2^5o<eFT
+mYh.*qi:Z8!fW+urQk5`r6PAhrm1Gdq9Ai_p!"E!c-=JVc-"5Sc-"2Qbg";Pai_fMbfe8VbYn@;
+s&B"ur)Weur`K#"rEB)&mTfWnrEB&#s&f8%r)Whtr`&hps&/hnrD<Mir_EAcs%NDbr(?r[rCHcT
+rC6`SogJUCqEk5\!<2urs8ITLJcC<$jSoJ^q!mkBn*]TAli6,Ojl>@Yhqe:d)VWipe'cUjdEg1d
+bK%`C_SNst\[])V\@K,Yn$rBds$luXs%!,]r^qT39MA/T:/=\_;,U=l<E<.&=^#$7?!^lH@Uiq[
+B4u!pCi402EccGJG^=^bIXm!%KnbD?Mi<^YP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P]"G_k^r"".
+`lQ<Gbg+P^daZh!f@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTe
+rdk*:s*t~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7\bOp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKY[MNtJ;99]ORA8.OT(=@NqeV'N;\b/D#.uMDJa7iDYnAODZ4MP
+RfJuTRfJuTS,SrWS,SiYS",t;qjRPSr1*GL$_!QSR[T_6R[]e7RJrZSQjB+KR@9M3S!d1P;u]hs
+<W#ns=8l=u=oDP$>OGbn>Q%b%=oVV'=8Z,!<W5tr;u]bp;>j>k:]=,e:&dod9DhE]8c;3V8,YpU
+7J0(E6i'+L]DfJC]*H!^^:q:o^:sT]0u1WD`Poj;ai_iOcHjnddaQ^re^i='f\5*8hW!VYkj.R"
+lg4$+mdTc;o^qkOqYU8Cs+13Fs"Eoi`l,U'\$NBEZ*1@5Y-"_(WMl_lUnaWWUS+6NSXl7=S!fb8
+R$Eo!P)tZ]NJ[Xm!fDnmmth!4s$luXs%!,]r^qT39MA/T:/=\_;,U=l<E<.&=^#$7?!^lH@Uiq[
+B4u!pCi402EccGJG^=^bIXm!%KnbD?Mi<^YP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P]"G_k^r"".
+`lQ<Gbg+P^daZh!f@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTe
+rdk*:s*t~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7\bOp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYXCuR9MSF`;#jGi;#jMY;=dW\;>F,e;>`HR3;,943&`eq3;Y`8
+3!M<$3*BBf>5DD$>5VP'>5_V&=9)Lu=Su>!=T2D$=T;J#<WlK+=BAT'=9)Fu<rZ5$;Z'Jn<<#tr
+<rQ2"=Sc2!>5MOl>l.b(>5DD%=T2D"<rZ2!<;fbq;Z9Pl;#a>j:Adid9`@]_9)_E\8GYjT7f>dK
+7/94H63(Ek@L$CRAS#C_AS1jR?#".jCi4-/DfB`=F`qqPG^+L[H[L6jJ:W?.M2R=QO,oBbP*(ok
+Q'[o.S"-%AU84]cWiWA,Z*^pK\[oGf^r"".a2uQNdF6\!gYCZDioK4akj%L$nacAIq"t&As+13u
+rsm&-DId-]>[(H9>?P'0=oDG%=<L[G=BAO(<E*%#<)cdq;c6Rp<)Z^n<)HLh;,:"b:JXgT:]El`
+7fGpX8,u6\8ps?+9MJ5V:Jakb;H$Op<`W=*>$G6;?=.,M@q9.`BPD6uDJsN8FEMePH@('hJ:W?,
+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_Sa@4aND]McHjndeCE1&g"P3:hV[8M
+j5]7`kNM0qlg4!*mdKZ8rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD,;J,~>
+JcC<$RK)pYrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJY]5SjV5_/CrkSKIrP83Crk8HI^:sT[rk&BG]",>\q7$@3rO)L/
+s0MX1rj2Warf$i9mu7:+r/Uc9s3CPgq9B#ccMPrfd/;5fcM>`_cM#Kabg"B2bPf]cb6Q26bfe/O
+aiXP)s31F?s&B"ur)Weus&f/$rEB/(iEZ=cr`]2%r`K2%r)Whts&Aqqr_ibnrD<Mir_EDdr_3;a
+r(?r[r^clUr'pWRogJUCqEbAbrVcWlrdk*#s+142rtG>)nF,f4n*K?*mH`rtjl,1UhVA+b);3Wn
+daHLicd0tabK.cC_SNsu\[T#U\@K0<\Go"t7f>i,84cBF8kVfN9heAY:f("e;cHat<`iL->?kH?
+?XR>QA7]CeBkqO&DfB];FEVkRH@:6mJV/W1Ll%%KNf]EfQ'[l,S"?7GU84ZaWN3/(Yd(OB[^`l\
+]t_A"_o9X:aihoRcdC1jeCN7)g=tH>hr*JRj5oFckiq?tm-O--s6g-\nac8Bo`"Lap@nO\s7u]k
+rVQTlrVcBfJcD/<J,~>
+JcC<$RK)pYrr)ior;6Njs7uZh621*Hp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJY[MNsJVB6^ORA8.OT1CANqeV%N;S\.D"MTDDZ4SPDZ6*lS,]#V
+Rfo1LS"-#GRfAlTSG&EQR[a8ErL<hU"dtgJR@'E?R/`TQ;u]hs<W#ns=8uD"=oDP&>N&ic>Q.h'
+=oMP'=8Z,!<W?%s;uT\p;>j>k:]=,f:&[ic9DhE]8cD9W8,PjT7J0(E6i'.K]EPp[]Y;(mrkABH
+s2"`S/B5`Oai_iOcHjkcdaQ^rf%/I*f\,$7hVmS[l0@X$m-a<1nFH5Dp@n@YrVhBJJcDJE0^$a#
+_nN^gZE^U;YHG"1XfJJ#W2HJeUS4BUT:VXFSXZ(;R[]b4QBRMqOH,9ZM2M7i!/g6$s$crWrC;?.
+8P)NH91qrQ9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*VVAS5[jCM[m,E,fr@G'A4XI=?]tK7nu8M2R=Q
+OHPfmQ^F52StD^NUo(&hX0&P/Z*UjH\@K8c^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjlY^h
+l07O#m-X6@mfi4No()DErq-<cp\jmeq>^<iqu6NlrUg)?s-`n;~>
+JcC<$RK)pYrr)ior;6Njs7uZh5kk!Gp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYXCuR9MP:ZrDMuZoMGB]qGR&bs#L'<r]'s<nMgG,r&Oa9s&f8'
+s'#2#!*]8&s'#>'r`K2'q,mPtp/q;qrDiu$=BPQ(s&f;&q,[Gms&B"ur)Weus&f/$rEB/(iEZ=c
+r`]2%r`K2%r)Whts&Aqqr_ibnrD<Mir_EDdr_3;ar(?r[r^clUr'pWRogJUCqEk*h#%M4TA7]@b
+r+Q+G$#FHrD/O61EcZ@%G#!:-H$XgbI=6QpJV8i;N/WdVO-#KcP*;/sR$sP8SY2^QVPpMrXfo"9
+[C3WW]Y;1u_o'L8b088^e^rO1hVdARjlbjmm-aB6p@nC[rIP!"s3go\\UeI)?sd/A>?P-3<``@)
+=B8O+r)`o!s&K)"s&9_3<)Z[o<)Z^n;cHUl;,L(a:esn`;"%3[7K5jU7t4'$8P2TJ92&&S:/=\_
+;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi401EH?5FGBnL_IXm!%KSG;>Mi<[XP*;/tR$sM9T:r!T
+VPgDoXfen5ZaI6O\\,Vj^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI(#C"n;'Q
+o(2MQo`=d\rV6Egs8)]krqu`no_sFARK%d~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrpi#<nF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EHIY]5SfUo;!"_#(nG^AbhC]`5SF]",?H\,Ni7[JI90Zi.9.Zi?$Q
+N;eb5Mu\k7Nr@9&chbrcc2Z)eci;Aichu)ac2>lWbnnRJbK\5TbKA)Rc,n)KaN;TI;c?Xp<E8rt
+s&]2%r)s#&r`f/&q-Ef&q-Ec#r`fA*r)s&%r`B&!s&K(ur)<Vns&&_ks%iVhrD!8bs%E5]r^m)[
+qFCKRr'g9Hq*Y!F"9&,prIP!"s+142rrN#jrp]sU..-?fmHWlrjPo+SgYCQ<g=b$,dF-Cicd:"`
+b/_Q@_SNsu\@AuV\%1n9s$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,Ui
+CMRd)E,fr@G'A4XI!pKqK7nu7M2R=QO-,WkQC+,1SXuOLUnsugWiWA-Z*UgG\@K5a^;.V'`Q$!@
+bKS8XdF$Fmf%8R.gYL]Ci8N\UjQ>Ugl07L"m-X60n*ol<ncA@Srq-?dp\4[^s7u]kr;6Kkrr)Kg
+JcD/<J,~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrphu;nF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EHIY[MKqJ;3r_mZIC.s,[2?pl4Tur/L>bo548?!M#YWRe3*KRfAlW
+SGAZSS,f&VRfAlTSFN'WR[]b8R[]b6S!oh5R/WHPR/^+b<<#tr<rZ8#=Su>$>5hb$>kq\$?MRn%
+>lIt,>5VP'=T2D#<rZ2"<;]\p;ZBVm;#a>j:Amod9`Ic_9)_E]8GYjT7f5^J7/94H63+Xs]`5\D
+^Akr$^;7\*`lH0Ab0/&Tcd:(fe'lgsf%/I*f\,!4gu%/SkiqBum-a?2o(2SKq"adbJcC<$T`5GY
+bf7N5\?W<EZ*:F7riH:(WMl`oV#I(lTqJ$KSXfYJ$C[BLQBRMqOH,<Zre^f:Mi3J]M#TpD7f>gY
+84cDP8q0K-9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJV/W1LP^qJ
+NfT<dQ'Rf+S"6.EU84W`WN*&&Yd(OA[^`l[]Y;1u_o9X:aihoRcdC.heCN7(g=tH>hr*JQj5f@b
+kiq?sm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrphu;nF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqe[^EHIYXCuR9MbO_qGQcZoMGB]qGQr_s#Ks9s#L*=ni-P-q`4UWr`T8)
+nQGfor)j#%rE9#"r)r\prE'#"$!151=BAR,=BS`'<X)Q&;cH^r<W#nt=8l>"=oMV(>PMJ!?27h&
+?2.\(>Q.h(=oVV'=8c2"<W?%r;u]bq;>j>k:]=,f:&[id9D_?\8cD9W8,YpT7J0(E6i'.J@fKs@
+AS,RfrFc:ICMRbcD-(UnE,p#AF`hkOG^+L[I!g?kI=Hg$LPh"KNK'![OHPfmQC+,1S=ZCKUo()i
+X0&P/ZaI6N\\#Pj_SaC7ai_iRdF?e%gtpuKjQ,FdlKms.oC_kSr;M9IJcF4!%JZuOB4,+R>Zt96
+=]\W&<t/87='/O(=&i=&=&i:$r_rns<W,i!<)Z[n<;fYu:JFY];,1!W:]El`7f>gY84cDP8q0K-
+9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJV/W1LP^qJNfT<dQ'Rf+
+S"6.EU84W`WN*&&Yd(OA[^`l[]Y;1u_o9X:aihoRcdC.heCN7(g=tH>hr*JQj5f@bkiq?sm-O--
+n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Njs7uZh621*Hp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHY],JaU8Yg$_#(nF^AbhC]EPpY]",>\q7$@3s0_a2r3QF1q6U+,
+!K<$9N;nh0N;AJ3N;eh:NW@DtcMGfccMZ#gd/;5fcM>`_cMu-,bg"DVc-=GVbKJ/Rc-+ASb/qiL
+b0.uPbKKn,!6Y:?s&K"us&]5&r)s#&r`f5(r*B/*p0[Z&r*B2)r`fA*r)s&%s&]/"s&K(ur)<Vn
+s&&_ks%iYir([/as%E5]r^m)[qFCKRr'g<Iq*XsE!W;nIs+13$s5a26q=O.FnF#c4mI9Q-k2tU\
+i8<8EgtUK5f$i'qd*g7dcHaPP`l5g2^:_"e[^W`V\aR$26q'O67f>gY84cDP8q0K-9heAY:f("e
+;c?Xr<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJ:`H/LP^nINfT<cQ'Rf*S"6.DU84W`
+WN*&%Yd(OA[^`l[]Y;.s_SsO9aihoRcHstfeCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9o'uhQ
+o`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Njs7uZh5kk!Gp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHY[MKpIu!uamZIC.rf@&=qi0j!rJgi9nSIf6r,2J's-rtUpRD&K
+s-s%Yq4%DS!1WnTs-rqVs-j^kS"#k9S!oh8R[]b8R[]_5R$sG2rgNkTrL!R`s&K"us&]5&r)s#&
+r`f5(r*B/*p0[Z&r*B2)r`fA*r)s&%s&]/"s&K(ur)<Vns&&_ks%iYir([/as%E5]r^m)[qFCKR
+r'g<Iq*XsEs1A?FrOrlY^;%Cu_SsO8aN;WLc-Obadf.]8eCE+$f@\d0g=k<:hr<b^lKdg)nF6#@
+p@nCZr.4m!s.B<KfuV.I]XG)NZE^[<Y-+n.Wi2koV50l]U8"<PT:ML@S"#k8R@0A,PEV/kNfB!U
+MMd@NN/I+\"@P[I7Rm>H!_>mSr^qZ59MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BPD3sD/O<4
+F*)SLH$XjdIt3-(L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaea
+e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqucoo_sFARK%d~>
+JcC<$RK)sZrVc`nr;6Njs7uZh5kk!Gp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYXCuQ9htXaqbliZohbK^qblo\!''p;r&F[9!''L-r]'p<qH3`"
+s'#G*s&f,#s'#D)qc`_srE/u#s&]V0=BJX,=BAU+='5E&s&T"us&]8&rDrnss&K"us&]5&r)s#&
+r`f5(r*B/*p0[Z&r*B2)r`fA*r)s&%s&]/"s&K(ur)<Vns&&_ks%iYir([/as%E5]r^m)[qFCKR
+r'g<Iq*XsEs'c1CAS,RfBP7<X!blCbrbMdUDJsN8F*.A'9m1`*H@($eI=-HlJ:`K4N/`gWO-#Ng
+Pa7])S"61FUSOcbWN*&'Yd:^F\@K2a^r+15bK\;WcdC1kfA#0?ioK4_kiqF$nFQ>Iq>C5Cs+14!
+rsS"`F_"rg?!CH8>$:`('3/.9=&rF(=&r="<E<'u;cH^p;Z0N';H$Ol:f1(d:Jaha:K$[X"@P[I
+7Rm>H!_>mSr^qZ59MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt3-(
+L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/L
+ioB+^k3)!nlKdg(mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqucoo_sFARK%d~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGY]#D^TVoN?qnW*DrkABFqn2s@!kPqQqmcX7rjMj7qm?7,!4;U/
+qm$3\rf-o9rJUN2repc7"H/4tMi7Rnrf-p'p<NHXs3CPgs3U\ir6G,_r6FrZq9&l_bKJ-/b65r0
+<)lrs<rZ8$=Su>$>5qh(>l@t,?KGPm?N+7->lIt->5_V(=T2D#<rZ2"<;fbq;ZBVm;#a>k:Adid
+9`@]_9)_E]8GPdS7f>dK7/94G6@o/fs+143s"+0FoC22;nFQ2>n*B3"jl57Vh;$f?g=Xs,da?Fi
+dE^(^bfRlE`59=)]XkZQ[f<o,\,\qr7K5jV8,l*[8cD>392&&S:/4S];,U=k<)lt#=BSg3>[:]E
+@:E_XAnYjmCMds.EH6/DGBeF]I=Hd!K8#);MN!OUOckroR$jG6StMdQV5L8lXKA\1Za@0M\\#Mg
+^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFiSrnYjlYajl0@U$mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<h
+qu6NmrUg)?s-`n;~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eofVm<o()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGY[DEnJ;00ROo(7>O8b1:NT,ltMi@.ArGDOOq/-+KqO@PTrL3SP
+pmV5Ps.&nSs.'+Yr0dVTr1*DKq3h\ZR[T_7R[KP2<)lrs<rZ8$=Su>$>5qh(>l@t,?KGPm?N+7-
+>lIt->5_V(=T2D#<rZ2"<;fbq;ZBVm;#a>k:Adid9`@]_9)_E]8GPdS7f>dK7/94G65I8K^V@Ls
+^V@Lu_SsR9aND]Nc-FY_df.]8eCE+$f\,!4gY1B:hVmPXl0@X'nF?,Cp@nC[rIP!"s.KAsr7&d*
+^:Uk[rim3DYct:4X/`(rV59u^US=KTT:MOCS,SlVR0f7HQBRMqOH,<[r/1T7M=?<$7/fXT7fGpX
+8,u6\8q0K-9heAX:Jand;c?Xq<``C+>$G6;?XR;O@qB7cBPM="DK'T9FEMePH@1-jJ:`E-LP^nI
+NK93bPa.W(S"-(CTqnN_W2cr$YHY@?[^WfZ]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVdAPj5f=a
+kNV6rlg4$,n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eofVm<o()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYX:oP9MSI];X[KX;#aAm;#4&d;XI?]3;bf63;tr<3;tl93;GN4
+3!!,aqH3`"s'#G*rE/u#rE92(qHESqs&f2%oN:Zcs&K2#<E8uus&]5&r)s#&s',A*rE]A.j^7sm
+ra#D+r`fD+rE9/&r`B&!s&K(urDW_os&&_ks%iYir([2br_*/]r^m)[q+(BQrC-BIq*XsE"(Z"W
+B`;ZDBLQWMC27U$D/O93EH?5EF`__JG'A1WI!g?iI"$TtKntYGNK0$\P*;/sR$jG7T:qsSVl6Sq
+XKSk6['dER]"Gepa3)WPrmCbo'\(^egYUlKjQ5Rhlg4*3p%J4Yr;M9IJcF7"'\J^i@preO>$5!3
+=]\^-='&F&=BGK&#?Or*<E3("<;TSo<;of#;H$Ok:f1*h:]jHi:K$[X!(?fTs$luXs%!,]r^qZ5
+9MJ5V:/=\`;H$Ln<E<1'=^#$7?!guJ@Uit]BP;-rD/O<4EccGJG^=acIt3-'KnkMBN/`m\P*D6!
+R@B_<TV80XVl6VsXfnt8['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)KioB+]k3)!nlKdg(
+mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqucoo_sFARK%d~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*/&&P+\_drP89ErkABFqn*$C]"5HJ\G`o:[edE/[/.-(ZMoj[
+N;\\%N;V#pcM5ZacMZ#gd/VDncHji7cM>`_cMYombK\5Tc-+ATbPfZnbKS,Obf\)Obfa!drDrr"
+s&f5&s'#D+r*95,ra,>+mU5fsra,S0r*98+r`]8's&f;&rDrqus&Aqqs&/korD<Mis%`Jds%NDb
+r(?r[r^ciTrC6`SogJRBqEfc5JcC<$kPlM"q==%DnFcDCnaGc+jl>@YhqQuBgY160e'cYBck4OH
+bK.]C`59=)]XkY^[C3TUn$i?cr^HiVr^ZuZ!(m/^!D?,c9n,o6:f("f;cHat='/U/>?kH@?X[DR
+AS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-#NhQ'[o.S=ZCIUSOfdWiN8*Yd1XE\%0)_]t_D#
+`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o(2MGp%A@Y!;HKfs7u]kr;6Kk
+rVcEgJcD/<J,~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*.MRG(#+,n<*U0rf@&=oo83ps,6l8!,VXMnSA2Bqel7IpmhAR
+rL3\SopYoMs.&nSs.'+Yr0dVTr1*\S#b%6OS"#k9R[X2E$_!QQR@BV4R[]aG<W,tu=8uD$=oV\)
+>Pqb*?2e1)?g_=s?iFC2?2Rt->Q.h)=oVV(=8c2"<W?%s;u]bq;>j>k:]F2f:&dod9DhE]8cD9V
+8,YpU7J0(D6i'+O^V7Fsrk8iW_SsO8aihlOc-Ob`dJhT!eCE.&f\,$Yg_8Q%i8`q]kj%L%nFH2C
+p@n@ZrVhBJJcDGD(\6"p_nWdiZEgaAZa-d;XK/=uVkp5cU]."fScbORS"'DG&t#)SQ^3l"P)kW_
+NJi[OMi3ONn;%'4r^HiVr^ZuZ!(m/^!D?,c9n,o6:f("f;cHat='/U/>?kH@?X[DRAS#LfC27X'
+DfKf>Fa&(VH[U?nJqJc3Ll..NO-#NhQ'[o.S=ZCIUSOfdWiN8*Yd1XE\%0)_]t_D#`5Td<b0/&T
+d*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o(2MGp%A@Y!;HKfs7u]kr;6KkrVcEgJcD/<
+J,~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*-M`8kVrWrDN&\pe^reqblKPrAa[7r&F[9pc/+/r`9)%r`T/$
+rE02*=]t]*r)r\rmofQj#Zk,0=BJX,=',B'"]n`,='&N&<ruE&<W,tu=8uD$=oV\)>Pqb*?2e1)
+?g_=s?iFC2?2Rt->Q.h)=oVV(=8c2"<W?%s;u]bq;>j>k:]F2f:&dod9DhE]8cD9V8,YpU7J0(D
+6i'+LB`2TCBFJTiC27U%D/O92EH6.!F9Qf1GBeF]rdI=eJV&T2Ll..NNfT9aPEhH#R@B_<TqS3V
+VPpMrYHY@?[^`iX]Y;5$aNMiSdF$Cke(31*h;I;Qjlbjmm-jQ<pA+R^rr.KKJcF:#%*=BD@piYK
+>$5!3>$1`)#?Fo,<E<.#<rQ)"<`T)s"B&2t<)ico$WKr!;,L.d:JO_^;XdH^7/fXT7fGpX8,u6\
+8c_RYr_7l;:Jakb;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:`E-L5:_GNK90a
+Pa.T'S"-(CTqeE]W2co#YHY=>[^WfY]Y2(r_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0q
+lg4!+n*fc9o()DEo_%nWp&Ojdq#C0iqY^6ir;HTerdk*;s*t~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/JIoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYchr%OJ/Sa^qff]rP&6Drk/9Cs1/3@qRHL5s0hd3qm?4+os+S(
+p5Jm,oo/p1s,7$-dEqm=r6G;dr6G)^s3CDcq9J`Zrm(>a"j>08bKJ00b6Z86b0.uMb0/$-<rZ8$
+=T)D&>5qh)>lJ%.?Me+-@/+1.@eaC1@/=70?N4=/>lS%.>5_V(=T;J$<rZ2"<;fbq;ZBVm;#a>k
+:Adid9`Ic_9)_E]8GYjT7f5^J7/94G6@o/fs+147s"O?EnaQ#;p%7hFmHNfqio8nPgt^`?f[\R$
+dEp=hdEp.]aiDB>`59:']Xt__[C3O3\Gnts7K5jV8,l-[8cMD492&#R9hnJ\:f1+h<)lt"=BSg3
+>[:ZC@:E_WAS5[jCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPinQ^F84StD^OUo()jX0&S0ZEpsJ
+\[oGe^VI_)`Q-'BbK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?s76Edp%A%Pp\ssf
+q>^<hqu6NlrUp/@s-`n;~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/DGoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYchDQG(,()n<*^3rf@&=oo86qrJUQ3qePe>!,_RM#An?rD/Go:
+Sc"u\S"-"<S,A`SS+N0?S,A`SS,SrRRg#7MS!oe8rgF+\R[KV5R$jD4rDrr"s&f5&s'#G,r*95,
+ra,J/r*];.r*oG0rF#J/ra,V1r*98+s'#A(s&f;&rDrqus&Aqqs&/korD<Mis%`Jds%NGcqb$iZ
+r^clUrC6]RogJUCq*G(rrOso"_SsO8bKJ,RcHjkadF-Lme^iC,g=tE>hr!AMj5f=bl07R%n+-)B
+p@n@Zr;M9IJcDGD2X&H*_nERdZE^^AZa-g;XK/>!VP^2bUS4BRT:MOCS!oh8R@0G/Q^*f!P)bQ^
+N/NRNMi*INn;.*4s$crWr^ZuZs%35_InNI/9heAY:f("e;cHat<`iL.>?kH??X[DRA7]CeBkqO&
+DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NhQ'[l-S=Z@HUSOccWiN8*Yd1UC\%0)_]t_A"`5Td<b0/&T
+d*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD/<
+J,~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq/JIoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYcgG`8P;fW;H!0br_iYkqG@)erDMQNq`+L6rAaU5r&FU5!*K2$
+!*K/%r`K#"rE/u#r*','r*&_qs&f8'q,df%=BJX+=S5bo<rZ8$=T)D&>5qh)>lJ%.?Me+-@/+1.
+@eaC1@/=70?N4=/>lS%.>5_V(=T;J$<rZ2"<;fbq;ZBVm;#a>k:Adid9`Ic_9)_E]8GYjT7f5^J
+7/94G63(ZtBF\ZgBkhBuCi+'-DfBZ8ErL,VFEMeQH@($gIt*!#K8,/<M2I7PO-,ThQ'Rc)S"-%B
+Tq\?ZW2co$Z*LaE\@B,_^;%P'`lcNNcdC1if%A^4hr3SUk32*smd]rCp\Odcrdk*#s4.,^\qOm-
+?s?l==^#$4=BAU*=&rE$<r,f6<)QUn;cHXo<)Z^n;H$Lj:f1(d:esh_:JgOVs$ZlUs$luXs%*/]
+s%7c69MA/T:/=\_;,U=l<E<.&=^#$7?!^lH@Uiq[B4u!pCi402EccGJG^=^bIXm!%KnbD?MiEdZ
+P*D5uR%'V;T:r$UVPpMqXfnt7ZaI9Q]"G_k^r"%/a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(sm
+lKdg'mdKW6nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBRK%d~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq/DGoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYchr%OJ/V_pV6[@rOr3B!kPqQqmcU6s0hg4qm?4+qm-7,qm-7.
+oSi[*rf-]3s,@02e'cXjrm1Jes3:GdprrfaqTni[pWW]`r658cc2PocbmDS;bf\,ObKS/Pr`9&#
+s&f5&s'#G,r*98-s'GS0rF#S4k@4Bura>V1s'G_2r*98+s'#D)s&f;&rDrqus&Aqq!`DlmrD<Jh
+s%`Mer_3>bqb$iZr^clUrC6]RogJUCq*KZ4JcC<$li.Onp@.V@o_%kIn*TB&jQ#7WrnSRLg=Os+
+da6FhdEp4_bK7fD_o'@+^:_(g\$`ZQm^W9bs$crWrC;9,8P)NH91qrQ9hnJ\:f1+h<)lt"=BSd2
+>[:ZC?t*VVAS5[jCM[m,EH6,BG'A7ZI=?]tK7nu8M2R=QOHPfmQ^F52StD^NUo(&hX0&P/ZEpsI
+\@T>d^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail0@U$lic_Dn*olHncn^Xp%A%Pp\jjg
+q>0scqu6NlrUp/@s-`n;~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq/DGoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYchDQG(,%%mudU1rf6Z2l\tb"r/CW5q.okDrb_[Or,)4Hs.BId
+St2DLS,SoXS,A]VS",u?Rf8fVReN<LRf&WTSG\iWR[a;FrgO4_S"#h7R@9V6RJp7e=8uD$=oV\*
+>Pqb+?2n7.?i=C2@HV+u@K'[3?iOI4?2Rt->Q7n+=oVV(=8c2"<W?%s;Z]io;>j>j:]F2g:&[id
+9D_?\8cD9W8,YpT7J0(E6hs%f^;%Fu_SsO8bKJ,ScHjkbdF-Lof%Jg5gtglGro"LLj5f@cl0I^'
+md]l>p%J1Xr;D3HJcDGD#iX"G^qI4_ZEaD8.^?.YX/`(rVP^2bU8"<PT:VRBS!fb5R@0G.QBdYu
+P)bQ^N/NRNMi3OOn;.*4s$crWrC;9,8P)NH91qrQ9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*VVAS5[j
+CM[m,EH6,BG'A7ZI=?]tK7nu8M2R=QOHPfmQ^F52StD^NUo(&hX0&P/ZEpsI\@T>d^VI_(`Q$!@
+bKS8XdF-Opf%8U/gYL`Di8N_VjlYail0@U$lic_Dn*olHncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@
+s-`n;~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq/DGoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYcgG`8P;fVohkTaqbd5efMVH(p,W+5r]0j8s#9pZrDru$qcWr$
+qcWi!r)rr$rE9,'oND,p!*T5%!EWD&=8l;'='/T'<ruK*=8l8#=8uD$=oV\*>Pqb+?2n7.?i=C2
+@HV+u@K'[3?iOI4?2Rt->Q7n+=oVV(=8c2"<W?%s;Z]io;>j>j:]F2g:&[id9D_?\8cD9W8,YpT
+7J0(E6hs%TBP1skBkhBuCi0/h")i-uEW1#UFa&+XI!gBmJ:N3%Jq]#:M2I7POHG]iQ'I](R[ftA
+TqeE[Vl?`!YHkLB\%'#^]t_A!_oBd?c-Xkde^rL0hVdDSk3)!pmd]o@p\=U_rIP!"s472Ur2k?Z
+@:!8E=oMS*=]kW("'/K(<W,tu<<#r&<)Z[o;c?Tn<<#l,;,U=k:Jk"e:f'q_:espW:]Ei_7K5jU
+7t!p"8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EcZ>GGC"UaIXm!%KSG;>
+Mi<[XP*;/tR$sM9T:r!TVPgDoXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[
+k3(smlKdg'"RYXGnF?MK#4qK[p%J+RrV-HiqYL-erqu`np&9OBRK%d~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7\ePp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYc_o%OJ&M[p:pR?!58BE!P>rB\c0,;\,Wo6[JR?-Zhq'-Z2(^*
+Zh'.RMuJ\7NV\S=f%&:"e'cXjrQkDes3:Gd!mSs5qoo,dqTo2es3:>apWW]]rlt>`rlbenbKA#O
+aiqn.<``@)rE9/(s',G,s'>V1r*TG2raGS2mpl-%raGe6r*TJ1s'>S.s',M,rE02(=',?$s&K(u
+r_rhps&&_ks%iVhrD!;cr_*/]r^m)[q+(BQrC-BIq*XpDJcC<$JcG0<1B.+AnaQ)Ap%7b@mHNfq
+j5f.UhV[/Cf@SHud*g@hccsYTa2Z'6_ns4']Xt_`[C3NQn$rBcs$crWrC6o[8P/nRInNI09hnJ\
+:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCM[j*E,fr@G'A4XI!pNrK7nu7M2R=QO-5]lQC+,1SY)UM
+Uo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjlY^hl07O#m-X60n*ol<
+ncA@Srq-<cp\jjeq>U6hqu6NlrUp/@s-`n;~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7\ePp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYc_AQFaeq#nWEg4!KW96NUD`,Mi<VlMuAV3MuIPjC\_fBD#nNk
+qel>)!hZ'Tqj[ST!1WnTrgWPKrgWkTpm_5NqjRSSrgWeRrgO=aR[KV5R%'LE<``@)rE9/(s',G,
+s'>V1r*TG2raGS2mpl-%raGe6r*TJ1s'>S.s',M,rE02(=',?$s&K(ur_rhps&&_ks%iVhrD!;c
+r_*/]r^m)[q+(BQrC-BIq*XpD"2DXg`W"'\bR;\@d*^7heCN7(gthtfs5Eq9&`i'9kiqF"mI'K6
+oC_hOq"t#@s+13DruTq:`4imnZE^^@['R!=Y,eS$Vl-AfUSFQWT:_[ES,SlVR1#CKQBmbuPEM#f
+NK!jos,-o:MXZH%7/o^U7f>gY84cDP8q0K-9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]@dBkqO%
+DK'T:FEVkRH@1-kJV/W1LP^qJNfT?eQ'Rf+S"61FU84ZaWN*)'Yd(OB[^`l[]t_A"_o9X:aihoR
+cdC1jeCN7)g=tH>hr*JRj5oFckiq?tm-O--n*fc9o'uhQo`"Lap@nO\!;ZWjrVQTlrVcEgJcD/<
+J,~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7\ePp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYc^D`8kVoUpJLZ_!)`Viohk9Vn590Fr&FC1q`=^:rAa[VrE'#$
+r)s&%qcO&(='&L+qH<f$qcNo&oND)o!*B/%qcEc!qc<u(=&r@'='5E(s'#G,rETA.ra,M0ra>_6
+pgW]%pgX52ra>Y2s'G_2rETA,s'#A(!a&N*rDrqus&Atrs&/korD<Mir_EDds%NDbr(?r[r^ciT
+rC6`SogJUCpd,3uAnc!qCi!tfD?+YTE<pT+FEMeSI=?\FJOb<EK7nr6Ll.(KNK93bPEhE!R$sP:
+T:r$WW2cl!Y-5+:[C<ZW]=kqn_Sa@5air,[daZh!g>(QCj5oIglg=35p%A(TqYc!FJcF=$($qW8
+ARSqO>?Y05>$4p.<EN=(<`N<%<WZ9%<W5qu;GmElr`&kq%T6/&;Gg@j;,C(b:/F__n5''Ps$crW
+rC6o[8P/nRInNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCM[j*E,fr@G'A4XI!pNrK7nu7
+M2R=QO-5]lQC+,1SY)UMUo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_V
+jlY^hl07O#m-X60n*ol<ncA@Srq-<cp\jjeq>U6hqu6NlrUp/@s-`n;~>
+JcC<$RfE$Zrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYc_i!OJ/SZotLUC]tM)X]DoGB\bru;\,Ec7[JI9-Zhq',Z1tU+
+Za-n,N;eb4N;nn8N!\.gf%&:"e'cXjrQkDerQY;d!6tMer655eq9K&drQY2an'1gT$HgT8bfe2P
+='&L+rE02*>?h&2s'>Y2r*TG2s'bb5r+#)(r+#V5raGh7r*TJ1s'>S.!aAi3rE9/&!*B,"s&K(u
+r_rhps&&_ks%iYir([2br_*/]r^m)[qFCKRr'g9Hq*XpDJcC<$JcG6>0`Ln>o'l2Co^hV?lg*ft
+io8nRhVR#@f[SBuda?IgccjSSa2Z$8_S<k"]XkS][^PS5s$ZiTs$luXs%!,]r^qZ59MJ5V:Jakb
+;H$Ln<`W:(=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt30)L51VCN/is]PEhH$R[]k>Tq\?Z
+Vl?\tY->1;['mKT]=bkn_Sa@4aN;WLcHjnde'ut#g"P3:h;@/LioB+^k32'olKmm)mdKW6nac5O
+oCW%T!quB_rqQNhs8)]krqu`no_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYc_>PFao%$oTB-7rf@&=p5SU$pP]$0qMYB2r+uCKokaVFrb_[Q
+s)%aQs.T@`!hZ'Tqj[ST!1WnTrgWPKrL<_RqO@GPoU>iNrL4._S!fb7R[I5Y=BPN)!a8f4rETA.
+s'GV1ra>b7qI9A4lt$$(qdTP5s'Yb3s'G_2rEKD.>$Cl-s&]8&rDrqus&Atrs&/korD<Mis%`Jd
+s%NDbr(?r[r^clUrC6]RogJUCpd,#(bP]QrcHjnddaQaug"YBAioB([jQ$7!''/0:kiqBum-a?4
+oCVbNq"t$hJcC<$U]2Y;f#YeD]<nlKZF%!EYH=t0WMubmVPBr^TqJ$LSXc1<S!]V3R/WB]P`q8l
+O,f3XM2@+JMN!G^M#TmB7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYmn
+CMds.EH?5FGBnL^I=Hd"KSG8=MN!RVOcu&rR$sM8StVmSV5L;mXKJe4Za@0N\\#Mg^r"".`lQ9F
+bg+P^daQ^sf@em4h;-uHiSrnYk2tmll0@X%mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<iqu6NlrUg)?
+s-it<~>
+JcC<$RfE$Zrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYc^D`92&)VqGHo`r_`SipegNWmns!Cs#B[3q)\O9!]i>%q,mSs
+s&f2%rE0#$!*K5%!*K&"s'"emoiM2srE'/'=BAW&=8uD$=TVc2>Q%h,?2n7/?iFI5@JXI2A*db(
+A,Ba7@K0a5?iOI4?2\"0>?Y5/=oVS(=8c2"<W?%t;u]bq;>j>k:]F2f:&dod9DhE]8cD9W8,YpT
+7J0(E6hit`C27X%D/F0/DfB]9EcZ;EG'\RdJV&RQK11HIL5:\DMi<[WOcu#qQC+,2SY2[PV5UDp
+XKJe4Za@0N]">Vh^r"%0a2uQOdF-Opf@ep8i8`q\kj%O'nauPLqYU3iJcC<$fDcN>P]C;C?X6i=
+=^,$2='8U,=B8K%=8u80<)lms<Dudp<)HRn;cN`p%T65):f(%f:esh_:JaharD<,^s$ZiTs$luX
+s%!,]r^qZ59MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt30)L51VC
+N/is]PEhH$R[]k>Tq\?ZVl?\tY->1;['mKT]=bkn_Sa@4aN;WLcHjnde'ut#g"P3:h;@/LioB+^
+k32'olKmm)mdKW6nac5OoCW%T!quB_rqQNhs8)]krqu`no_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYc_etOJ8VYp:pXAs1JBDs186@rj`!;q6g:2r3Z@-qm-.)os4V(
+k)9;"req9>g"=p.f%&:"e'l^krQkDer6>5d!6tGcrlkGgq9K&drQY2ao?I-U#g:B5aiqq0=BPQ*
+s'#G,r`oJ/s'GV1s'Yk8qdTP7rFG,'rFGn;qdTS6s'Ye4s'G_2rETA,!*]>(s&]8&rDrqu!*&nq
+s&/korD<Mis%`Mer_3>bqb$iZr^clUrC6]Rp-e^DpHjH2JcC<$o)CKDq"""Fo_.qInEfK-ki_'d
+hr!AMgY(3/eC2modEg%[b/_K?^r""*^V.7i\$`ZQ\@M(<s$ZiTs$luXs%!,]r^qZ59MJ5V:/=\`
+;H$Ln<E<1'=^#'8?!guJ@Uit]BP;-rD/O<4F*)SLH$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6Y
+Vl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!nlKmm)mdKW6nac5O
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZh6ML3Ip%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYc_;NFao"$p6#?9rf?r:oo8[(p5As0qhtE1s,6;]rb_[Qrb_UO
+rh0@cU&:PbT:VVNS,SoYS!s>E!1NnVo:#ZJr0mJOrL32Es-a+ZS!mD\=T2J'>5qh+>lS+0?Mn11
+@/j[4@fBm9AE[V'AH$*9@fKm:@/XI4?N4=0>lS".>5_V(=9)G$<rZ/"<;fbq;ZBVm;#a>k:Amod
+9`Ic_9)_E]8GYjT7f5^K7/94E6N54/bmhtFdaZdsf@ep8iSrnZroP!XjPo1[jQ>Xil0I^(md]o@
+p@nCZrVhBJJcDMF2t5;;_S3ReZE^aCZa$^8Xf\V'W2?DeUnXQST:MOCR[]e7R@'>-Q'@GqP)kZ`
+NJiXMMi3INMXZH%7/fXT7fGpX8,u6\8q0K-9heAX:Jand;c?Xq<``C+>$P<<?XR;O@qB7cBPM="
+DK'T:FEVkRH@1-jJ:`E.LP^nINfT<cQ'Rf*S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_SsO9aihoR
+cHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*<
+s*t~>
+JcC<$RfE$Zrr)ior;6Njs7uZh621*Hp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYc^A_92/.X;>!id;>F&c;=79L;=6I;3qc\S=8uD#=o;D$=TDS&
+<rc@b=TMW-n6#Zk"B\`,=BPQ*s'#G,r`oJ/s'GV1s'Yk8qdTP7rFG,'rFGn;qdTS6s'Ye4s'G_2
+rETA,!*]>(s&]8&rDrqu!*&nqs&/korD<Mis%`Mer_3>bqb$iZr^clUrC6]Rp-e^DpHnmrs(r9b
+E,]f<F)l>DGBnRaItE=PK`6TmKS>/9M2@.LNK0-bPa7Z'R@Kh?TqeH^WiW>+Yd1UC[^iu]]t_A"
+_o9^>bKeM`e(*('gYLcGj5oLhlg=02oCr+YrVhBJJcF@%#KMa?@UEJI=oMS2=]ea-<`iC(<`f9#
++BDHA<*!!t;H-Om<)Q[p;c6Ok;Gp@h;Gg7d:Jah`:K%-foM>KTr^HiVr^ZuZ!(m/^InNI09hnGZ
+:f1+h;cHat='/U/>[1QA?t!MSAS,UhC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLK
+UnsugWiW>,Z*UgG\@K5a^;%M$`Q$!@bKS8Wd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"m-X60n*ol<
+ncA@Srq-?dp\4[^s7u]kr;6Kkrr)KgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYc_euOJ8PZq7lsDs1SHF"1u.T\bru;\,*Q5[JmQ1Zg"doZf6rC
+gAfe3f@JO'eC;srdaA$>r6G5brltMgqTJubcMZ#gc2l8:rQYAf!71VhpWW]]rlbSibg">TbKKk,
+!*K2&!a8f4rEKD0?=*S;s'Yh7r*o\9rabe8mq2B,rac"<r*o\7s'Ye4s'>\2rETA,!*]>(s&]8&
+rDrqu!*&nqs&/korD<Mis%`Mer_3>bqb$l[rCHcTrC6]Rp-e^DpHjH2JcC<$o`$WDp@IkFp%J"H
+mHj-(kN:mbi83DJg"=p-daQXld*KqXaiD?;_SO"%^:V"f\@&cRm^W3`s$crWr^ZuZ!(m/^!D?,c
+9mf]3:f(%g;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0
+SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.gYCWAi8N\UjQ>Ufl07L!m-X60
+n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-it<~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYc_;OFFJk#q2tQ9!0?l7oo8j-qMY60qhtB0rJU#Yrb_XP!,_^Q
+rh9+[!hZ'Tqj[ST"e1sLR@0NCS+E*JS,A`NS,JfRRfJoVRg,=NS=5q9S,JcU=T)A(>$G50>QS2;
+?N"72@/aU4@fKs;AGBa)B)-$;AH$*:@fKm:@/XI4?3":0>lS".>5_V(=9)G$<rZ/"<;fbq;ZBVm
+;#a>k:Amod9`Ic_9)hK]8GYjT7f5^K7/94E64_AdcHabbe^rL.gYUlJj5p7%(?OW:ioK1^kNM3s
+mHsB4oCVbOqYU9kJcC<$U]1eac,IK4\$NBF['d3DXo>C7Wi;qnV5'i[Tq@sJSXc.<R[KTCQ4&q@
+PECrfNJrgRMM_=js,-?&rC$ZSs$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!grI@Uit]
+B4u$qD/O<4EccGJG^=acIt3-'KnkMBN/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0
+a2lEHc-F\`e'ut#f\5*8h;7)KioB+^k3)!nlKdg(mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*<s*t~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eofVm<o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYc^D`92&(Z;=mcd;>X2i;#jGi;=.3J;?&WD3VPT0=9;W-=oMP'
+=8uD#=o;D$=TDS&=8l=c=o)5#=8l;+='/U,=BAW'<rcA$=TVc2>Q%e.?!^k9?iOO5@JjU7A,^$6
+Aaa7,Ac?6>A,Kg9@K0a6?iOF4?2\%.>6%k*=oVS(=8c2"<<-"s;u]bq;>j>k:]F2g:&[id9D_?]
+8c;3V8,YpT7J9.F6h`nZD/O60E--5GG'.qPH[U?nJqO&U8:uMHKS>,8Ll.+LN/s*bPa7])R[p"A
+TqeH^WN3/)Yd1XD[^`o\]t_A"_o9[<bKeJ_e(*('gYLcEiT'%`lKdj)nF?2HqYc!FJcF@%%CUh%
+@U*,A>$>'4=]ef&=8u8B<)lpt<`E'r;c?Ol<)QUm;c-Ll;c$7f;,L.d:Jah_qbZr]rC$ZSs$luX
+s%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!grI@Uit]B4u$qD/O<4EccGJG^=acIt3-'KnkMB
+N/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;7)KioB+^
+k3)!nlKdg(mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*<s*t~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcV_mO.rGYqnN0Fs1SHFs1A<Br4)X5s0hm6s0V[0n$;tuqm-1,
+j,Euk%b]Rig"4j,f%&=#e'lamrQkDer6>5d!6t>`!6tGfrm(GdqTeo]q98l`s2tJdaiaTcs&oD,
+rETA.!+,V2s'Yk8r*o\9rabn;rFYk<qIo_<rFYn;s().>r*o\7s'Yh5s'G_2r`oJ-s'#D)s&]8&
+rDiu"<)ifps&&horD<Mir_EDds%NDbr(?r[r^ciTrC6`SogJUCpHjH2JcC<$pAZlDp$qVDp%RtE
+lKIO"kN:mbhqm;Hg"=m,eC2gmd*9eVaMl-7_SO(']t:ha\$i`S\*pj*7/o^U7f>i+84cBF8kViO
+9heAY:f("e;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-#NhQ'[o.
+S=ZCIUSXleWiW>+Yd1XE\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X6@
+mgJXTo()DEo_%nNp\4[^s7u]kr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcV5KFFJh"qN:];rK$Z4q2P91pl#-1qht?/r/1Q6lYQK9rbh_/
+!hc6\pn.\\St5bJrgWtXr0mVSo:#ZJr0mALs-iYNs-s4]R[TY5r`T8)!*fD,s'5V2rEoS4s'bh7
+s'u%=qdo_<q.KP;qIfb=qIT\;s'tt9s'bq8ra5\3s'>V/s',M,r`T8'!*B,"!``3!rDW_o!)`\k
+s%iVhrD!;cr_*/]r^m)[q+(BQrC-BIq*XmC-dL&ae(<:.gu%#KjQ,Fbk2k^cj5K"XjQ5Ofl0I^(
+n+$#Ap%J4XrIP!"s.]N%hoisQ]XP/OZ*^pCY5YL0Xf8:uV50l^TqJ%WSJ[lcS!f\3QBmf$PEV/j
+O,]-WM2@.KMMmA]M#BaA7K5jU7t+!#8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit\B4u$q
+Ci402EccGJG^=^bIXm$&KnbD@N/`m[P*D5uR@B_<TV8-WVl6VsXfnt7['mHS]"Gbl_8=.0a2lEH
+c-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_`nF?)?oCV\Jp%J.SrqQNhs8)Zjrqu`np&9OB
+Rf@m~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcUAb8PDiTnkoHbr)!Air_ibnlVQtGs#BF,pcACV!*AturE9/&
+s&]5&r)rr"r`K5'rE&o!l<3XZrE&u$s&oD,rETA.!+,V2s'Yk8r*o\9rabn;rFYk<qIo_<rFYn;
+s().>r*o\7s'Yh5s'G_2r`oJ-s'#D)s&]8&rDiu"<)ifps&&horD<Mir_EDds%NDbr(?r[r^ciT
+rC6`SogJUCpHfC.DfBcAGBe=UH$b!hJ:`FQKLpfIJqJ`1LPUhGN/is]PE_>uR@9Y;T:r$VVPpMq
+Xg#(:[C3QS]=kqo_SsO8b0%uUdaQaug"Y<>i8N_Wk32*tmI'N9p%S=^JcC<$g&F)*W-W)b?<pc<
+>$4s1=BAO(='/O)=&i4!<`N*u<E)ms<)Z[n<)QXm;c?Rk;,C.g:esk`:Jah`:]4,_:]3]]7K5jU
+7t+!#8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@
+N/`m[P*D5uR@B_<TV8-WVl6VsXfnt7['mHS]"Gbl_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]
+k3(smlKdg(mf2_`nF?)?oCV\Jp%J.SrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH;MgNhE5SrP/?G!kl7Zrjr6C\[h^Lq7$C4rjDa4rj2(!r3?1*
+r3PFB!SZ<-gAT\*f@KoN!7_"s!7Cbkr6G5brltMgq9/lacMc)gcMYracMPl_bl>iobg"DVbfe.3
+=^#$6r`oJ/s'G\3s'Yk8rF5e:rabq<rau+Ak\0p-rau(>s()+=raPn9s'Ye4!a]/<r`oJ-s'#D)
+!a&N*rDiu"<)ifp!`DlmrD<Mis%`Jds%NGcqb$iZr^clUrC6]RogJUCp-O?1JcC<$qYr>Mq=F1K
+p%J+KlfdQslfdKliSWMKgXk*/f$r0rdEp.]aiMH>_83n$]t:ne\@&cR\@M(<rC$ZSs$lrWIRm%%
+8kM`L9MJ5V:Jakb;H$Op<`W=*=^,-:?=.)L@q9.`BPD6uDJsN8FEMePH@('hJ:W?,L5:\ENK90a
+Pa.T&S"-(BTqeE\W2co#YHY==[^WfY]Y2(r_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0q
+lg4!+s6g?bnac8Bo^qhLp@e7[q#C0iqY^6ir;HTerdk*<s*t~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH;)GF+&Xtq2t]=qN(B2r/LT4p58p0qht<.r/:Q5s(h"<r,)FN
+!MQ7eU&CVaTDG5\T)bGZS,SrXS,SlTS+<$JS,A`CS,\oYS"-#JRg#6`=^#$6r`oJ/s'G\3s'Yk8
+rF5e:rabq<rau+Ak\0p-rau(>s()+=raPn9s'Ye4!a]/<r`oJ-s'#D)!a&N*rDiu"<)ifp!`Dlm
+rD<Mis%`Jds%NGcqb$iZr^clUrC6]RogJUCp-K8:eC`R5hr3VUjQ5Ocj5^*t''&'7k32'qm-X93
+nauMJp\OjfJcC<$U]27cb/M*,[Bd'E[C!0?X/`8&WMuelUnaZXT:l1S&=f2YS!]S/QBdYtOH>N_
+N/[ans,-r9Mi$qZrC$ZSs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*=^,-:?=.)L@q9.`BPD6u
+DJsN8FEMePH@('hJ:W?,L5:\ENK90aPa.T&S"-(BTqeE\W2co#YHY==[^WfY]Y2(r_SjF6aND]N
+cHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4!+s6g?bnac8Bo^qhLp@e7[q#C0iqY^6ir;HTerdk*<
+s*t~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eof_s=o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH:5`84uWQoMYWbs%r_mqbmGklqm%Gs#BC+q)\FUr`Aqu!*T;)
+!*K5%!*K/%r)ir$!*K,"rE/AgpfRPtqcF#'=]np4>Q.n-?2n71?iOO6@Js[8A,^$:Ac?<?BBX%-
+BDuN@AcH<?A,]s;@K0a6?NOP>?2e+/>Q7n+=TV],=8c/$<E)rr;Z]io;>j>k:]F2f:&doe9D_?\
+8cD9W8,YpT7J0(E6hWhSEclVQH@(!dI=?]tqL\a#1kg[?M2R=PO-,TiQ'Rc)S=H1DU84ZbWiE,%
+YHkOB[^`r^^;.V(`Q63FcHjneeCN:+gthtf%H6@0l0@[*nFQ>Hq>C5Cs+14(rs%GLFCS`b?2e"0
+>?P*2r`::E=BAO(<E)t!<E)pt<Dugq;c?Xn;c?Rm;Gp=e;Gg:f:f%'e!DcYl;>F&e:]3]]7K5jU
+7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EccGJG^=^bIXm!%KnbD?
+MiEdZP*D5uR%'V;T:r$UVPpMqXfnt7ZaR?R]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]
+k3(smlKdg'mf2_`nF?)?oCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck0CI#FYpXM;OL^AbhG]E>dW]".dLqR?C2qm6@0n?Vqrqm-+*
+repN0rJU?-s4dJ*rn.A*f@KoNs4%(t!R]9nchu)dc2Pugc2#Q`c2Q#gci25fc2>lcc2,ZabPo]k
+bK\;UbZS+R>Q.k/?!^k:?iOO6@Js[8A,g*;AcHBABDH6.C&2NBBDuNAAcH<@A,Tm:@/s^6?NOP>
+?2e+/>6%k*=TV],=8l8#<W?%t;u]bq;>j>k:]F2g:&[id9D_?\8cD9W8,YpT7J0(E6hWits+13$
+s8;mKrV,mUp%J.RnET6"kNV0kio/eOh:pQ6e^`0uda?Cdb/q`D_ns4(^:h.g\@;IG!4hO-rC$ZS
+s$lrWIRm%%8kM`L9MJ5V:Jakb;H$Lo<`W=*=^,-:?=.)L@q9.`BPD6uDJsN8FEMePH@('hJ:W?+
+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8N
+j5f=akNM0qlg4!*s6g?bnac8BoCV_Kp@e7[q#C0iqY^6ir;HTerdk*<s*t~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/GHoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck07BQANPL\[)4OSOt6Nr4n6N:2]$MYrD0N;dV^D#8)KDZ?I/
+U&L_`TDYA^T)kLQr1!\UrL3eUrL<,AqO@MTqO@MRrgNnVrL3ml>$G51>QS2;?N+=3@/j[6@fKs<
+AGg$=B)ZH=B^KO1B`;ZDB)Q<@AH-0<@fKj:@/XF6?<pk9>lS".>5_S*=BAT'<rZ2"<;ohr;ZBVm
+;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/94D64)/ngYUlKj5f:]ro+[OioB([jQ5Oel0@U%n*ol<
+o_%tRrIP!"s.fSto$b^t^UX9Lrj42ZXK/A%X/W%pV50l\U7S!JSXc4>R[TY2QBd_uPE:icNK&gQ
+M2I4LN/EM^M#BaA7K5jU7t+!#8P2TJ92&&S:/=\_;,U=k<E<.&=]ns6?!^lG@Uiq[B4u!pCi402
+EccGJG^=^bIXm!%KSG;>Mi<^YP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P]"G_k^r"%/a2lEHc-FY_
+daZh!f@em5h;7&IioB+]k3(smlKdg'mJlV_nF?)?oCMVIp%J+RrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/JIoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck/u7n--F:Jpjaq,.#er))lYl;@O?loG),s#U9C=]tZ)rE&ku
+!*T;)!*K2$!*K2&r)ir$!*K%urE/GiqcNl"r`B/%rE'/)>$G51>QS2;?N+=3@/j[6@fKs<AGg$=
+B)ZH=B^KO1B`;ZDB)Q<@AH-0<@fKj:@/XF6?<pk9>lS".>5_S*=BAT'<rZ2"<;ohr;ZBVm;#a>k
+:Amod9`Ic_9)_E]8GYjT7f5^J7/94D63q^XH$amcI=?\FJ38C5JV/T.KS>/9M2I4NO-#NgQ'Rc(
+S"-%BU84ZbWiE,#Y-G:>[CEc[]thJ%`Q-*Dc-Ohee^iC,gt^`bh@/?%k3DC*o_%qOq>1)As+14(
+rtN_;CL^[V>Zk36>$>$1='/O(='&E$<rQ+u<"i81;cQao<)QXn;H-Ol:f(%f;,I6f!`2Zhqbd/c
+rD3A[s$crWrC;<-8P)NH91qrQ9hnJ\:f1+h;cQk!=BSd2>[:ZC?t*VVAS5[jCM[m,EH6/DGBeF\
+I=?]tK7nu8M2R=ROHPfmQ^F53StD^OUo(&iX0&P/ZEpsI\[oGe^VI_)`Q-'BbK\>YdF-Opf@S^0
+gtgiEi8WeXjlYail0@U$m-XiA$h3]Wo(2JFp%A%Pp\ssfq>^<hqu6NlrUp/@s-it<~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck0DHA\DnVn^"G^&l!\]`,PB\c0,:\,*Q4[/dT2Zh:X"Z2:j)
+Zi@E0Mtr>/Mtr;3gATe*g&]m\rn.G,f@JL&rRCkr!R]9nchu)cc2Z&hc2#Q`c2#Z]c2Q#fblc27
+bffq.s3(Dcs31RJ>Q.n-?2n71?NOVD@Js[8A,g*<AcHBABDZBAC&;Z;C]%rGC&;TDBE)TBAcH<@
+A,Tj<@:3LB?iOF4?2e+/>Q7n+=TV],=8l8#<W?%t;u]bq;>j>k:]F2g:&[id9DhE]8cD9V8,YpU
+7J0(E6hNcss+13$s8N$QrV-'Zp\=LTn*0#sjltmfiS`SLgtLB2e()ssda?CdbK7fD_SO"%]t1hd
+\@&cR\$te8rC$ZSs$lrW!_>mSr^qQ29MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)L@Us%^BPD6uDJjE5
+F*)SLH$XmfJ:W?+L5:\EN/j!_PEhK%R[]n@Tq\?[Vl?`!Y->4<[C3TV]Y2(q_Sa@4aN;WLcHjnd
+eCE.%g"P3:hV[8Mj5]7`kNM0qlg4!*mdKZ8rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/GHoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck07B5r?MK`$u3OSFn7Nr+h6N:2]#MZ&J.N;IDgD#S;KD#A/M
+D?4UJrM':b!MH.cT_kA\T`:VbSXfVIrg`nU!1a%Xn='BHrgN\Q"ItsOS!s8Es-ikT!Er_,>lS+0
+?N+:5?t!LB@fKs<AGp*>B)ZH?B`;`CC@l<>CAhlDB`D`FB)Q<@AH-0<@KKtG@/aO5?3":1>lS%.
+>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Amod9`Ic`9)_E]8GPdS7f>dK7/94C63Gcjgu&+jr8ACM
+j5]4]jlY^gl0I^(nF?)@p%J1Wrdk*#s.oZ"kg.8a^::SXrj=8_XfJM&WiN+tV5C)aTqS*NSXc4@
+S!oe5R$Nu$PELufNf/jSMMd=MMMmA\M#BaA7K5jU7fl4Q8cD>092&&S:/=\_;,U=k<E<.%=]np5
+>[CcF@U`kZAnYmoCi4-0EH?5FGBnL_IXm!%KSG;>Mi<[XP*;/tR$sM9T:r!TVPgDoXfen6ZaI6O
+]"G_k^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]C9f
+qY^6ir;HTerdk*<s*t~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck/u7n?6F:Jk!a;Ys>h;Ys>Y;!CjS3;bf93qbT53WN:\=oMM(
+='5?$rE'&&r`T;(rE'#$r`T/$r`K5'pfIGsmo]`p=]ec'=T;J#=92T0r`oJ/s'G\3!aoGFrF5e:
+s()(>s(;7Cqe5tCqeGb=r+c1Eqe6"Bs(;4@s().>rF,h:?srt@s'>\2r`oJ-s'#D)!a&N*r`9&!
+s&Atrs&/korD<Mis%`Mer_3>br(?r[r^ciTrC6`SogJUCog8\%:jIA7I=?WpIt3'#K7ei1Knb>;
+M2R=QOHG`kQC!u-S=Q=IUSargWiE/&Yd(OB[^`r^^VIb+`lZEJcdL=ne^rL/gtUW@hV[8Ql0n9=
+qYU9g!W;qJs+14)rtN%sCLURT>?P-7>?Y*1='/L'='&E#<XMi-<E3!t;H$Ro;Z9Yq;@-<";,C+d
+;,C.dr_NVk;#=,c;#O2g7/o^U7f>gY84cDP8pj9*9heAY:f("e;c?[s<``F,>$P<=?XR>PA7]@d
+BkqO&DK'T:FEVkRH@:6mJV/W1Ll%%KNf]EfQ'[l,S"?7GU84ZaWN3/(Yd1UC[^`o]]t_A"_o9X:
+aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiqBum-O--n*olHncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@
+s-it<~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\hQp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb*DH\n\uVuFI1^&P_F]DfD=\G`o3[f3Z5ZhC^#Z21d(Zi.9,
+Mti8/Mu/G;g=b05g=tB]gAKV,f[n^)ec+(tdfIkCrm1Vis31PhqTT&dc2#Q`c2#Z\c2Z)ec2Pon
+bKS2RbKS/QbZk'Os'5V2ra5\5!+Gh8s'l%>rFQ"@rb).Bs(VFHk%jp1s(VCEs(D@DrFQ">!+Yt:
+!b#JEra5\3!+#S/s'#J,r`T8's&]2#s&B%urDW_o!)`\ks%iYir([2br_*/]r^m)[qFCKRr'g9H
+q*XgAJcC<$Jc@P)qXsXYp\4CPm-*Qmj5o@^i8<>Gg=Y!+dFHaqdaHIeb/hZB_83n#]tCte\$rfA
+\@K*;\G\hq7K,dU8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF@:EbYAnYmoCMds.EH?5F
+GBnL^I=Hg#KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daZdt
+f@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV-HiqYL-erqu`np&9OBRf@m~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\hQp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb*6BQ8QRK`7,3OSY%9Nr+h6N:;c$MZ&J+N;75hD#%rGD#\>P
+DZ4MNU&UkdU&:S[T)bP`T)kLQqO7JTr1!_Vs-rMHrgWqVqO@JSrgO4_S"#k8S!oe8>Q.n->l\41
+?iOL6@Js[8@fU'<AcHBABDcHCC&Mf/C]/#JC&DZEBE)TBAcH9@A,Tj<@:3LB?iOF4?2e+/>6%k+
+=oVV(=8l8#<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8cD9W8,YpT7J0(E6hNbMf@o*>i8<Gki"k>4
+j5f:_k2tjjlg4'.naZ5CpA"L^rdk*#s/#`"hos'R]!o0J[4J\iXfJG$Wi;trV5C&_U7e-MS=H.?
+R[]b5Q^*i#PECofNfB!TM2@.=MMm>[M#BaA7K,dU8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5
+>[CcF@:EbYAnYmoCMds.EH?5FGBnL^I=Hg#KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDnXfen5ZaI6O
+\\#Pi^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV-Hi
+qYL-erqu`np&9OBRf@m~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\hQp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb)u8Ol?H:]=5g;Ya2f;Ys>\;!(XN2uku73r1l83rE+[=oMP!
+=8Z2"=o__(=8c5$=o;D$=TDS!=8l=p=TDS#=oMM0='/R+='/O*=Bkc0s'5V2ra5\5!+Gh8s'l%>
+rFQ"@rb).Bs(VFHk%jp1s(VCEs(D@DrFQ">!+Yt:!b#JEra5\3!+#S/s'#J,r`T8's&]2#s&B%u
+rDW_o!)`\ks%iYir([2br_*/]r^m)[qFCKRr'g9Hq*XgA"*Sm7I/\OhIXciuJqJ`0Knb>;Ll74P
+O-,TiQ'Rf+S=Z@HU8=`cWN3,'YHbC?[CEf\^;.S&`Q63GcdC1je_&R0h:p]?hr<b^m.'iIr;QZm
+qu$ACs+14*rt5(*H>$bl?<^T:>?Y03=&r@%r`0#!rDrks(fOC4;cH^o<)QXn;H$Fh:f:.e:esk`
+85K%Yq,%#crC$ZSr^QlWs%!,]r^qZ59MJ5V:Jakb;H$Ln<`W:)=^#'8?=.)K@Us%^BPD6tD/O<4
+F*)SLH$XjdIt<6*L51VDN/is^PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU]=ktp_Sa@4aN;WLcHjnd
+eC<($g"P3:h;@/Lj5]7`k32'olg4!*mdKW6nac5OoCW%T!VZ9dp]C9fqY^6ir;HTerdk*<s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\kRp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb*@HAAMrVSE,Erk/9C!4r0?r4)X5s0_p:rjMj7s0Vg4kd(,m
+qm??]r/:9-qhtK5rS%8(s4RJ-rn@D*s4@M.f[n^)ec+(tdfInDrm1Shs31PfqT\cYqp+]Us3(Vh
+bfn8Rrlk@H!aT,=ra,_7@:B.Es'l%>rFQ"@s(D:Drb;CIqJ5tEokjSBqeQ1Gs(VFFs(D@DrFH%@
+@q5LIs'Yn8ra5\3!+#S/s'#J,r`T8'!*B,"!``3!rDNbq;,R9gs%iYir([2bs%E5]r^m)[qFCKR
+r'g9Hq*XjB!'u29JcC?%/GSi3q=jXUnEK0!k2YI\iSWMIgt:3.e'Z^qe'c[kcH=5K`PKC*]tM%g
+\$u@Fm(!!^r^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHat='/U/>[1TB?t!MTAS,UiC27[(E,fr@
+G'A4XI!pKpK7nu7M2I7PO-,WkQC+,1SXuOLUnsugWiWA-Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Ln
+f%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<iqu6NlrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\hQp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb*4B5iBOKDgr3OSk1:Nr4k:Nr4jsMt;o'C]8/GD>nALD>9e)
+UAgkdT`:VaT_=uYSt,VG!1NkUrgWtXn='$>rga"X"IbgLR[X5Fr`fM1?=*V<!aoGFraPn;!+c%>
+s(;:DrFl1Es(_CGqeYqBqeZ.FrbDIIrFl4Ds(;4@!b>eNraPn9!+>e5s'>\2r`oJ-!*]A)s&]8&
+rDiu"<)ifp!`DlmrD<Mis%`Jds%NGcqb$iZr^clUrC6]RogJUCp-JgHf\HD]!T;u9it:A7k3(sm
+m-X92nac>Gp\FadJcC<$V>gbQbJM$+[C?.C"gbD5Wi<#tW?\=;V50iZT:_^FS=Q4=S=5h3Q'ISt
+OcYWaNJiXMMMm@MMM^eXrC$WRs$luXs%!,]r^qZ59MJ5V:Jakb;H$Ln<E<1'=^#'8?=.)K@Us%^
+BPD3sD/O<4F*)SLH$XjdIt30)L51VCN/is]PEhH$R[]k>Tq\?ZVl?\tY->1;['mKT]=bkn_Sa@4
+aN;WLcHjnde'ut#g"P3:h;@/Lj5]4_k32'olg4!*mdKW6nac5OoCW%T!VZ9dq#C0iqYg<jr;HTd
+rdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7\kRp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb)s84H0E:Jq!er_`Ykr)*>hqbcu^jAG_4r]0d8q`4[;s'#8$
+!*T;'s&]5$rE&o!!*T;)!*K/#r`B/%rE0&%!*K"tr`Jeqs&f8'rE'2(=BJX+r`K/)!aT,=ra,_7
+@:B.Es'l%>rFQ"@s(D:Drb;CIqJ5tEokjSBqeQ1Gs(VFFs(D@DrFH%@@q5LIs'Yn8ra5\3!+#S/
+s'#J,r`T8'!*B,"!``3!rDNbq;,R9gs%iYir([2bs%E5]r^m)[qFCKRr'g9Hq*XjB9gNrJH[C-f
+I=Hg"K7no3L5(J>M2[FTOHG`lQC"#/SY)RKUSauhX/rG,Z*UgG\@T>d^qdk+`lcKLcdC1if\>3:
+gY(B=iofXto_SRcs8W#srdk*#s5!\^jI(!u?sm8C=^521=9DW-='5E%"BSW*=&o6!#ZF]$;cH^p
+<)NWns&',!:/Xqd:JXe_r_WGgohbTTr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHat='/U/>[1TB
+?t!MTAS,UiC27[(E,fr@G'A4XI!pKpK7nu7M2I7PO-,WkQC+,1SXuOLUnsugWiWA-Z*UgG\@K5a
+^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<i
+qu6NlrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh7JHNLp%@tKoCDJBnF,i5m-O''l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb*@HAJSsV7s\C]`GdXrjr$<rODd7!4`$;s0hs8s0Md4l*C2m
+qR#sSp5Jp-rS%,$"kqY`g=b0XfE9aVe^aZK!7Uqq!7:_krm(Pgs31AbpWN]`cHc:2rlk,]q98kD
+!F9%2?iOL6@K'a9A,g*=AcHBBBDlNDC&_rFC]8/JD=DHAD>e;KC]A/LC&M`FBE)TCAcH9@A,]s;
+@/s^7?iOF4?2e+/>6%k+=oVS(=8c/$<E)rs;u]bq;>j>k:]F2g:&[id9D_?]8c;3V8,YpT7J9.E
+6hWhH6%T&es+UJ(rV66aq"OIPlfdKmjl>C[hqd,CgXk$+e'care'c[jcHF>M`PKC*]tCte\Gio;
+\@M%;qaCHQs$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!grI@Uit]BP;-rD/O<4F*)SL
+H$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#
+f\5*8h;@/LioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqYg<jr;HTdrdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZh6hg<Jp%@tKoCDJBnF,i5m-O''l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb*5AT30MK)C`2OSt7;NqeV6N9,ueN;mYnCADZED#.uKDZ">O
+T_>&^TV8'PT_"cVSt,VGs-iqVrg`tWns]3?s.&nSs',S1?N+=3?iXX7@fKs<AH$0?B)cNBB`DfH
+CAVfGD#A/>DZ+GND#A)KCB&#HB`D`FB)ZBAA,p-=@fKj:@/aO5?3":1>lS".>5h\)=9)G$<WZ9#
+<;ohr;ZBVm;#a>k:Amod9`Ic_9)hK]8GYjT7f5^K7/0.C63'=Mg]QBiiSsjs&`i'9kNV9tmI'K6
+o(;YMq>1&@s+13Irt+bLahtm']!o)T['?^5WiE#sW>_Y1V50fXT:_^GS=Q4=S=,b3QBd\uOcYW`
+NW+h8MZScoM>E&%M>K^@7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3>[:]D@:E_XAnYjm
+CMds.EH?5FGBnL^I=Hd!K8,/<MN!RVOckuqR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRh,`lQ9F
+bg+P]dF6Urf@\g3gtglGiSrnYk2tmll0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)]krqu`no_sFA
+S,\!~>
+JcC<$S,`-[rr)ior;6Njs7uZh6hg<Jp%@tKoCDJBnF,i5m-O''l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb)t84Q6F:Ae#i;>X2h;>=&d;>!cH;?&TM3;tr63rD#:=o__%
+=9M]-=BAT'<rQ1u=9)M'=o_\!=8l>$=oMP"=8l=o=n5\p>QJ,:ra5\5!+Gk9s'u(>ral+As(D:D
+s(VLJqeQ1Ir,(q@rGDLLr+l=Is(VFFs(D@Dral+?!+Z";s'Yn8ra5\3!+#S/s'#J,r`T8'!*B,"
+!``3!r_rhps&&_ks%iYirD!8bs%E5]s%3/[qFCKRr'g<Ipd=aA90miKH@($gJV&K+KS>,7LP^nH
+NK0*_P*M?"R@9Y;TV8*VW2co"Y->4<['dES]=ktp_o0R:bKS8YdaQe#gtplAgtglLlL4B?rqufq
+rdk*#s5!\id>`'S?X6l?>$>-5=&rF(='/L*<`]3$!*/nq##\B!<)Q[nr_j)#;c$4c;,C(brD3Jl
+nkoB_qaCHQs$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!grI@Uit]BP;-rD/O<4F*)SL
+H$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#
+f\5*8h;@/LioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqYg<jr;HTdrdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZh9DA/Rp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb'>GDE,jVnTmY]Y(kg])0&7\,a#9\Gio>[C!<IZgG'oZhUp"
+MtW,/MuME/gAfh.f\+p0rRh8+g"HAW"P;5Ue^aZK"OkfIdEqj<s3CYhrQP5bpWW<T!6kGe"3f$7
+bl5lebQ,icbl:rK?N+:5?t!LC@KL%MAH$0?B)cNCB`DfHCA_lHD#S;HDY7rCDZ4MQD#A)KC&huH
+B`D]FB)ZBAA,p-=@fKj:@/aO5?3":1>lS".>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amoe9`@]_
+9)_E]8GPdS7f>dK7/94C63'<&s+13*s"+'@qY9gYoC(r+k2YL]io&_LgtUK5e^W'rdFH[ndEp4_
+aiMH;_8!Xq]=>BM[K<tL\*pj(7/o^U7fGpX8,u6\8q0K-9MJ5V:Jakb;c?Xq<``C+>$G6;?XI5N
+@qB7bBPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s
+_SjF6aND]NcHstfeCN7(g=tE=hVdAPj5f@bkNV6rlg4$,n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZh6hg<Jp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb'2AT**KK`7,6OSb+<NqSJ4N9H2eN;RGdC]8/LD#eJMD>p4%
+U&UbeTqJ(MT)kORq4%>O!1WtXrL<DIrgNnXqO7JRr0m\TrgWpn!+,Y3!aoGFraGq=A7Y[Ns(;:D
+rb2=Gs(_IIrbVRNphobCphp(Js(qUKs(VOJrFl4D!+u4As'u+>raPn9!+>e5s'>\2r`oJ-!*]A)
+s&]8&r`9&!s&Atrs&/korD<Mis%`Mes%NDbr(?r[r^ciTrC6`SogJUCog/jKg=b9=i8O[p''&*9
+kNV9tm-X92nalJJq"ajeJcC<$VuI7jcc*]4\%/rT['Hm:WiH#s)lKR0VPTu[StDUFS=Z7>S!ob4
+QBd\uOcYW_NW+h8MZScoM>E&%M>K^@7K5jV8,l*[8cD>392&#R9hnJ\:f1.i<)lt#=BSg3>[:]D
+@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&:MN!OUOckroR$jG7StMdQV5L8lXKA\2Za@0M\\#Mg
+^VRe*`Q-'BbK\>ZdF6Urf@\g3gtgiFiSrnYk2tjkl0@U$mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<h
+qu6NmrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh6hg<Jp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb&r7nH?I:B"/k;>X2f;>*oa;>O,K;$&X72to<23Vb`83Vut[
+=o)8#<ruK*=8c2"=8Z/#=oMS)=Sl/"<r?#!=T2J&=Sc+u=S>nq=9)G#=9)G%=T;Y,?N+:5?t!LC
+@KL%MAH$0?B)cNCB`DfHCA_lHD#S;HDY7rCDZ4MQD#A)KC&huHB`D]FB)ZBAA,p-=@fKj:@/aO5
+?3":1>lS".>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amoe9`@]_9)_E]8GPdS7f>dK7/94C63]`$
+H$b!kJc:6dK8#&9M2I4MNfT9bPEqN%R@Bb>Tq\?ZVlHf#Yd1XD\%&r[]tV;!`Q$!AbKeJ_e(*+)
+gtpi@h;@2RlgslJrr2p#rqu`mrIP!"s5*c2]Rjp.?<gZ:>$>$3=B/C'=]\X+=&r@'=&`-t<)Zaq
+;c-Il;H$Im;c?Rm:ejh`:Jajd;".?];#<Z\7K5jV8,l*[8cD>392&#R9hnJ\:f1.i<)lt#=BSg3
+>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&:MN!OUOckroR$jG7StMdQV5L8lXKA\2Za@0M
+\\#Mg^VRe*`Q-'BbK\>ZdF6Urf@\g3gtgiFiSrnYk2tjkl0@U$mI'H3nF?)?!V>s_o`Fj]p\ssf
+q>^<hqu6NmrUg)?s-s%=~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpi,?n*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb'=FGQ]`Wk&,Bs1JBCqRQ@1rjMp:[JmN5Zgk?pZhCd*Mu8J.
+Mt`21ecFCTrn7>*s4RA'qUtl#"P;5Ue^aZK"OkfIdF%j;s3:JcrltAb!6tJdn]h'Ws3:Gb!F9%2
+?NFPCraPn;!+c(?s(;:Drb2=Gs(_LJs(q[Oqel@Nmr85DqelFNs(qXLs(_RJrb2=E!+u4As'u+>
+raPn9!+>e5!a]/<r`fM/>$Co.!a&N*r`9&!!*&nq!`DlmrD<Mis%`Jds%NDbr(?r[r^clUrC6]R
+ogJUCog/XEJcC<$M>o@,p\=IUp$_81k2k[aio/eNgtUQ8f@A@!da6Ikda?@dbK@oG_83mu]Xt\`
+\$i`T\[V%;qaCHQs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?=.,M@qB4aBPM=!DJsN8
+FEMePH@('hJ:`E-L5:_GNK90aPa.T'S"-(CTqeH^W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHstf
+eCE1'g=k?<hVdAPj5f=akNV6rlg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpi,?n*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb'2@rHdEKoc4pq2YN9pPo33m#1%cs(hLHq.ftHphg#&rLinY
+r1NYR!M5kXS,A]VS"-#GS,/TRS,SlUS,SrNRf]$a?N+:4?t'%Ds'l%>ral+As(D=Es(VLJrG2FL
+rb_OMrGV.DrGVRNs)%dPrG2FJs(VIGs(;=Dral+?!+Z";s'Yn8ra,_5?![G7!aAi3r`K;)=',B%
+s&B%urDNbq;,R9gs%iYir([2br_*/]r^m)[qFCKRr'g9Hq*XgA!^YMsrSS@Jj5oFdkiqC!mI0Q7
+oCVbNq>:,As+13JrtFA9`PT6s\$`WNYcXt+WMlepWM]Zk(Sm^tSXuFDS=H(;S!ob4Q^*buOcYW`
+NrFq9MZScoM>E&%M>K^@7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!^lH@Uit\B4u$q
+Ci402EccGJG^=^bIXm$&KnbD@N/`m[P*D5uR@B_<TV8-WVl6VsXfnt8['mHS]"Gbl_8=.0a2lEH
+c-F\`e'uq"f\5'7h;7)KioB+]k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFA
+S,\!~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpi,?n*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb&r7Rp'D:f.-gr)!2dohtW`s%qTMrAO[7s#C$=q`+R8qE"LW
+"'Jf2=o)7u=8c2"=8Z2"=TM]/qcEeur)Wr%=]t`+qH*Yuq-!5i!F9%2?NFPCraPn;!+c(?s(;:D
+rb2=Gs(_LJs(q[Oqel@Nmr85DqelFNs(qXLs(_RJrb2=E!+u4As'u+>raPn9!+>e5!a]/<r`fM/
+>$Co.!a&N*r`9&!!*&nq!`DlmrD<Mis%`Jds%NDbr(?r[r^clUrC6]RogJUCog1f-H@CEqJ:W9(
+KnbA=MMmFQO-#KfPa7Z(R[ftATq\?[VlHi$Yd1XF\@K5a]Y;.t`5]mAc-OeceCWC.h#?%>gu%)P
+lLXiMs8W)sqYL*erdk*#s5<nrqPSUN@:!2B>$5!3=BAO(='/O*<E<."<`N.!r_rhr&5l>&;c-Ik
+<)Z^n;c$4c:f%!cm8<aKs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"=BSg3>[:ZC@:E_XAS5[k
+CM[m,EH6/DGBeF\I=?]uK8#&9MN!OUOHPinQ^O>5StMdPV5L8lXKA\1Za@0M\[oGf^VRe*`Q-'B
+bK\>ZdF6Uqf@\g2gtgiFiSrnYjlYajl0@U$mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?
+s-s%=~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eogeZGo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZaiMK@_ns4(]Xt_a[^<BGYcY!;EJU3XWjKLS]tCth]"7^JqRHR7s0hp7rj27&os=A!"1>MC
+N;eb5MYi>+N;qH.ecOIUf_jG"f_aA$fE9aVf%'`K"OkfIdEqd:!RAsfbl5lbbl5lbbk00ZbQ>u4
+bPo]h?=.&I?t'%D!b5bOrac.CB4q3Ws(MIJrG2FLs)%[OrbqaSl>cfBrbq^Ps)%dPrbMOKs(VIG
+!bZ+Wrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=TV],=8l5%<E)rr;Z]io;>j>k:]F2g:&[id9D_?\
+8cD9W8,YpT7J0(E6hNbG6%T&es,?t5rV66_p@RnBki_'hj5K"ThV6f=g"4g,e'l^jdF-LkcHj\V
+aN237^:V%i\@B#V[^`m9\GJ\o7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lH@Uiq[
+B4u$qCi402EccGJG^=^bIXm$&KnbD?N/`m[P*D5uR@B_<TV8-VVl6VrXfnt7['mHS]"Gbl_8=.0
+a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrquco
+o_sFAS,\!~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eofr*?o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZaiMK@_ns4(]Xt_a[^<BGYcY!0@W-UCKoQ%mrK$l:qi1Q5mu-:d"-&7uD#S5JCAVfFD#8)I
+TDP;WU&:STT)kOSq4%;Ns-j"Yq4%;NrL3eUrgWnWr0n(_S!oh8RU0?.?smFB@KL%MAH$-AAnPcU
+B`DcHCAhrJD#\AMDZ4SQE9_HBE;jeRDZ=SRD#S5MCB&#IBEDgYB)Z?HA7K+Y@UW\Qra,_5?![G7
+!aAi3r`K;)=',B%!``3!rDNbq;,R9gs%iYirD!8bs%E5]r^m)[qFCKRr'g9Hq*XgA)*ua(gtpuK
+jQ5Ofl0@U$mdK]:o_/%SqY^;Cs+13Krt=#-_S3Rm[C!9FY,nY&WMleoVZ*CrUnaTUSXuDNSH#&d
+R[KP0Q'7DpNfT3\reg`6!fDnnqM=j%qaCHQs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*=^,-:
+?=.,M@q9.`BPM=!DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T'S"-(CTqeE]W2co#YHY=>[^WfY
+]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4$,s6g-\nac8Bo`"Lbp@n=\q#C0i
+qY^6ir;QZerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eofr*?o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZaiMK@_ns4(]Xt_a[^<BGYcXup7Rp*E:Jh!erD<8doMYB[!)V]QrAOj;2`E]Up,W%3!*K5'
+rEB/&qH3YsrDrkur`K)$qcE_sr`B,%!*T;'qH*Yur)r_q!`rK*r`B>1?XI2K@K'^;@q9-LAHHIV
+BDuTEB`MoHC]A5ND>\;NDuFY?EW0qVDu=MQD?"GOC]A/LC&VcIB4bcTAHuaU@q&nU@:9(A!a]/<
+r`fM/>$Co.!a&N*r`0)#<)ifp!`DlmrD<Mis%`Mer_3>bqb$iZr^clUrC6]RogJUCog1`+H$b!i
+JV/Z2LPUhFMi<[WOckrpQ^F52S=cLLUSXleX/rM/ZaRBS]"G_j^VRh+aNMfQd*^:kf@\gVgCW)o
+hW*hfpA=mirquTcq"jl=s+14.rtOO^EarH]>Zt95>$+j-<`N:'<*!#t<Z"h9<)Z^p;c6Ii;c?Ij
+;H-On;H$Cf:Jajb:]XEkmnrsMs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"=BSd2>[:ZC@:E_W
+AS5[kCM[m,EH6/DGBeF\I=?]uK8#&9M2[FTOHPinQ^O>5StMdPUo1/kX0&S0ZF%'L\[oGf^VRe*
+`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s-s%=~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eog\TFo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+E/:$UW3O+N]tCtg](NW4\-BFN[^ENM[/RE*ZM1]oZiH$`
+N;nh5MYrD.N;qE-ec+/"f_sM"f_aA$fE9aVf%'`Ks3h(udEp8<cN2>9qoo&arQP;dqon]WqTStH
+s'Ph8raGn<AH$0?AcQKCB`DcHCAhrJC]J>MDZ=YSE;FSLEWC1UEr'eTE;skTDZ=SRD#S5MC&huI
+B`D]FB)Z?HA7K+Y@UW\Qra,_5?![G7!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2g:&[id9D_?\
+8cD9W8,YpT7J0(E6hNbG6%T&es,R+7r:g*]o^M;5kN:mdiSi_OgtUT;f[eX(daHLgd*^=icHaVU
+aN)38^V.:l\[],W\%'!:\,\no7/o^U7f>i+84cBF8kVfN9heAY:f("e;c?[s<`iL->?kH??XR>Q
+A7]CeBkqO&DfKf>Fa&(VH[U?nJV/W1Ll%%KO-#NgQ'[l,S=Z@HUSOccWiN8*Yd1UC\%0)_]t_A"
+`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0?mgJXTo()DEo_%nNp@nR]s7u]kr;6Kk
+rVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eofr*?o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+@W?^CKo>kjr/^f:r/LQ3s,6f6qMX<k!,MRMs(hLHr+l7I
+rGDS+r1EhYqP!h[o:H)USXfPGqjRPS!1`kSrL35FrgNjos'Ph8raGn<AH$0?AcQKCB`DcHCAhrJ
+C]J>MDZ=YSE;FSLEWC1UEr'eTE;skTDZ=SRD#S5MC&huIB`D]FB)Z?HA7K+Y@UW\Qra,_5?![G7
+!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2g:&[id9D_?\8cD9W8,YpT7J0(E6hNb^6/12OiT0+_
+kNV9tm-X61o(2PJq"agbJcC<$WW+"1eB#J?\@T&QYck.0Wi;trW2HJfUnsl^Tq@mHS,JlVS,\ie
+Q^*buP)kZaNJi[OMi<OOMY`/&M#]p@7/o^U7f>i+84cBF8kVfN9heAY:f("e;c?[s<`iL->?kH?
+?XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/W1Ll%%KO-#NgQ'[l,S=Z@HUSOccWiN8*Yd1UC\%0)_
+]t_A"`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0?mgJXTo()DEo_%nNp@nR]s7u]k
+r;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eog&0@o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+77KmA:Jasf;#jGg;>sJn;ts8b;>sDO;#iQS3<(o;2Z>W;
+3&s#\pc8@8s&oA(r`T5(r`T&!r)`htr)`o#r)j#%r)`esr`B,%"Bei/='#3"s&f;(mo]Tss'Ph8
+raGn<AH$0?AcQKCB`DcHCAhrJC]J>MDZ=YSE;FSLEWC1UEr'eTE;skTDZ=SRD#S5MC&huIB`D]F
+B)Z?HA7K+Y@UW\Qra,_5?![G7!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2g:&[id9D_?\8cD9W
+8,YpT7J0(E6hNbG62lE<K8,,9L]3/tMi<[XP*;/sR$jG5StD^OUnsugXKJe5[^WcX]=kqo_8F43
+b0/&Ud*gCof\5*8gYCWBj65t*r;Q`qr;$*\q"jr?s+14/rrpf1De!*Yr`TD,=BJZ(<<-,"<WZ?'
+<W6&!<#&>0;c6Oj;,^@g;GpIl;c6Lj:JXe_r_N\o:f1-Z;#iu]7/o^U7f>i+84cBF8kVfN9heAY
+:f("e;c?[s<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/W1Ll%%KO-#NgQ'[l,S=Z@H
+USOccWiN8*Yd1UC\%0)_]t_A"`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0?mgJXT
+o()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nr;-Qlq>(!a!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+Dhs^NWNNtKrk&0@pUU=6s0r$:s0_d3rNlC,r3PRns,-l9
+rf$u<Mi7LjqhtE3!R]BqeGn(uf)OA#g%s@ug&BV+f@JO'rRChq!n,HBr6GDhc25`_c1fHSc2Poo
+bKO=$@:<VS@q0'KAHug[B4tsmBkmT^!c2^jrGMXRs)@jTrc7pXoQ:"PrGqgUs)A!VrGMXP!,VXM
+s(VOJrb2=E!+u4A#@q=S@U`bS@/aL<?<piA>[(E9r`T8'!*B/#s&K(ur_rhps&&_ks%iYirD!8b
+s%E8^r^m&ZqFCKRr'g<Ipd=aAs$;59JcCi3(Adq'naPu6kiCjcio/nRgtUT;g"4g*rmDY1cd:(g
+d*BnZb/hWA_S<dr]=PM][^WcWm^N6ar'^QRs$lrW!_>mSr^qW49MJ5V:Jakb;H$Lo<`W:)=^,-:
+?=.)L@Us%_BPD6uDJsK6F*)SLH$asgJ:W?+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<[C3WW
+]Y2(q_Sa@5aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*n*fc9o()hP"n_K\p@e7[q#C0i
+qY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;-Qlq>(!a!Vc<eofr*?o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+@;pI>Ko,biqiCZ8qi13+rJTZos,6klrbVRLr+c+ErG;M(
+!hGpSr1EeXqk<q\o:H,VSXl;JS,8ZSS,SrRS,\rKS,Jc]?XR;N@U`hWAH$-FAnPaiBPD0qrG)IN
+D/K5hs)7pVqf2UUr,_LPr,_gWr,MaUs)7jRs(qaPrbMOK!,;FGs(;=Drac=F@q/tW@:<RC?O'nC
+?!LW=>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Mer_3>br(?r[rCHcTrC6]Rp-e[Cp-SdF(#e36
+jlYailKdd'mdTc<p%J1Uqtp;Bs+13Mru((I`kf6u[B[!?Y,eV'WMlbnV50raUSFNVrgs.[(nI.d
+S=5q7R$X)&P`h)gNf8pSM2R=MMi.@fp5/i;r'^QRs$lrW!_>mSr^qW49MJ5V:Jakb;H$Lo<`W:)
+=^,-:?=.)L@Us%_BPD6uDJsK6F*)SLH$asgJ:W?+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<
+[C3WW]Y2(q_Sa@5aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*n*fc9o()hP"n_K\p@e7[
+q#C0iqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;-Qlq>(!a!Vc<eofr*?o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+7RfpA:/CO[r_iYmq,7#crD;HMr]'m;r]'p:!]W2#r]9m9
+r)s#$rE0,(r`K8(=8Q+t=8c1t<rcA!=TDS&=8Z+u=8uD%=TDP&<rH+g=:/,3?XR;N@U`hWAH$-F
+AnPaiBPD0qrG)IND/K5hs)7pVqf2UUr,_LPr,_gWr,MaUs)7jRs(qaPrbMOK!,;FGs(;=Drac=F
+@q/tW@:<RC?O'nC?!LW=>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Mer_3>br(?r[rCHcTrC6]R
+p-e[Cp-SdF97qqPL5(J?MMd=NNKB9dQ'Rf)R[]e;TV8-WVl6YuYHbIC\@K5b]t_D$`5]m@bKeMa
+eCE1(g=tH?i8Ne^n+ZbZs8W&oq"FFWr.4m!s5Eth\qFa,>[1K9>$4s1<`E("<;oo=<E<1%<`E$s
+;H$Ll;c6Ll:f("e<)QUm;Gg4c:f%'e!`;ckmSX$Pr'^QRs$lrW!_>mSr^qW49MJ5V:Jakb;H$Lo
+<`W:)=^,-:?=.)L@Us%_BPD6uDJsK6F*)SLH$asgJ:W?+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"
+Y->4<[C3WW]Y2(q_Sa@5aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*n*fc9o()hP"n_K\
+p@e7[q#C0iqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/VMoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wc*]XT;f$-]Y+6Us18$:s1&';s0hj5!4;L,ijA`nr/1Q6
+rf-r:oSWgrcI(,>e,\%uf)O>%f`'S#f_aA$f`0P(f%'ZI"OkfHd*MU7m*,+Hs3(qqb[Fph@UiqZ
+AS#IcBDuQGBkhD^CBA<hD>nGQDuXeSEW:(YF7s_PFn^"WF8p:YE<:)tDuFPTD/=%fCBnTgBkV0m
+B4h-S#@q=S@U`bS@/aL6?=!P8s'#J,r`K;)=',B%s&B%urDW_o!)`\ks%iYir([2br_*/]r^m)[
+qFCKRr'g9Hq*XgAs$;59JcCo51\pt<n*fZ,kN1a_inrYLgY1?6f@JO&e'c[kc-XhdccsbYaiVTA
+_8![p]=PM][^N]V\*pg,6i9@O7K5jV8,l*[8cD>092&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZ
+AnYmoCi+'/EH?5FGBnL^IXm!%KSG8=Mi<[XP*;/tR$sM9T:r!TVPgDoXfen6ZaI6O]"G_k^r"".
+`lQ9Fbg+P^daZguf@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTe
+rdk*=s*t~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10WaKdhIY<RWOSk17Nr+h0N;\[qN;SV2C]&#BC]A2TR[]h;
+SXuGNTD5)WU&:STT*([USXfSHqjRPSrg`8CrL3aps'c4CA7T7_AnG]TBEDm_CAquMCi+%gDZ=YT
+E;X_UErL.RFS^.SFT-@]Er9nYE,T[nD?=ZkD#S2TC2%BqBP1sirac=F@q/tW@:<RC?NFJ=r`oJ-
+!*]A)!a&N*r`9&!!*&nqs&&horD<Mis%`Jds%NDbr(?r[r^clUrC6]RogJUCog8[Es5amVkiqBu
+m-X60nac>GpA"I[r;D3HJcDeN'B7<V^q%+_YHY11X/`.tWMl\kV#I.hTcKbsSt2C@S=?"<R[KP1
+QBm`!P)kZaN/`^OMi3INq2+g&!(6ZPr^HiVr^ZuZ!(m/^HqR.-9hnJ\:f1+h;cHdu='8[0>[1TB
+?t*SUAS,UiCM[j*E,fr@G'A4XI"$TsK7nu7M2R=QOHPfmQ^F52StD^NUo(&hX0&P/ZEpsI\@T>d
+^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail0@U$m-X60nF?MK#4qK[p%J+RrV-HiqYL-e
+rqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10W^TBJ9287T;#jMl;ta,?;>W?N3W:u<3W(r:3<31Y=o;D!
+=TDS'=8c8!=8c1t<rcA!=TDS&=8Z+u=8uD%=TDS%<rZ7j=:J>6@:<VS@q9+]AS,Oerb)@IC23``
+!c2^jrbhaSs)@mUs)S*[p2p.RpN6CUs)S$W!cW'rrGD[RCi')d#ARseBP;$kB)Z?HA7K+Y@UW\Q
+ra,\4?2e+/>6%k+=TV],=8l8#<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8cD9W8,YpT7J0(E6hNeG
+5tZicLPUeEMMmFQNffKhQC!u+R@B_=Tq\?[VlHl&ZF%'K\@T;d^VRe*`Q-*Dc-Oece^i@*gu%)N
+jlc""pA=des8Mrmq"X^_rdk*#s5O%cWHr2a?<pc<=BJ`*<=i22<)lt"<E3"!<E)pr;H$Nn;@u`(
+:f(%f;c?Rm;,L+b;,C(br_WVlmns-Qr'^NQs$luXs%!,]r^qQ29MJ5V:Jakb;H$Ln<`W:)=^#'8
+?=.)L@Us%^BPD6uD/O<4F*)SLH$XjeJ:W?+L51VDN/j!_PEhK%R[]n@Tq\?[Vl?`!Y->4<[C3TV
+]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0qlg4!*mdKZ8rpg9bo_%nNp@nO\!r;]h
+r;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wc*ZTTW#-o]`5SD])&u;\Giu6[K<kD[/%&f[/IE4N;SS6
+N;eh9N;\\4N;h$'c-F\arR:htrmq,$!8.;(qUk\urn.8&!S5fte-".Hd*M[9rQXcSoZdE[%q/pV
+@q9+]AS,RfBP;*oCAquMCi+%gDZ=YTE;aeVErU4XFSp:PG5QL\FT-@]ErBtZE,T[oDZ=PRD#S2T
+C2%BqBP1sirac+@A,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)iiqs&/korD<Mis%`Mer_3>b
+qb$iZr^clUrC6]RogJRBp-SdFJcC<$Q2`*-qYKXImHj#sjPo+UiSN>Cg"G$0f%&6tdEp+_d*g=e
+bKS-.a:6)(^V.7k]"#5X[^`lWn@8KcqaCHQs$luXs%!,]r^qQ29MJ5V:/=\`;H$Ln<E<1'=^#'8
+?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt<6*L51VDN/is^PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU
+]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0plg4!*mdKZ8rpg9bo_%nNp@nO\!r;]h
+r;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10WaKagIY<RVOT1C9Nq\P1N;\[qN;SV6MZ7MiC\qrHC]&#I
+RK]1NS=Q7Cr1EbWrh91]o:H,VSXl;HS,JfUS,SrCS,\of@:E\UA7T7_AnPaiBPD0qrbDROD/K8i
+s)7pVrGhjXs)\'Zr,qRRr,qpZrcA*[rG_mXDf>Vms(qaPrbDaRBk_6oB4kiUAH?=OraH+@?sm>K
+?=$q:>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/0.C6N9=b
+kiqBtlg4$,n*oo>p%J.TqYU3iJcC<$XT&mcb/1m(\?E'=XfSS(WMlbnV>d7jUAgkdT)Y>]SG\ii
+R[BJ/Q'RVtP)kZaN/`^OMMm@Mq2+j's$QZOs$crWr^ZuZ!(m/^HqR.-9hnGZ:f1+h;cHat='/U/
+>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKqK7nu7M2R=QO-5]lQC+,1SY)UMUo(&hWi`G.Z*UjH
+\@K8c^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail07O#m-X60nF?MK#4qK[p%J+RrV-Hi
+qYL-erqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq/MJoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10W^T?I8kr.T;?'Pn;ta,=;?&]S3;>N23rN1X=o;D!=TDS&
+=8l>"=8Z+t<rcA!=TDS&=8Z+u=8uD%=TMW+rDrr"n5p30@U`hXA7]=aB4kmkBk_>]CBA<hD>nGQ
+DuXeTEW:(ZF8L(WFn0_RFo6@\F8p:ZE<:)tDuOYSD#eDOCBnTgBkV0mB4h-S!G#^>@L$=L?sd8I
+?=!P8!aAi3r`K;)=',B%!``3!r_rhps&&_ks%iYirD!8bs%E5]r^m)[qFCKRr'g9Hpd=aAs$8l)
+M2I1KN/`gXOHPfmQC!u,R[ftBU84ZaWN<8-ZF.-N\\#Ph^r"%/a2uNKcHt"ge^iC,h;@5SlKn!2
+q"t!grWW5rqY9scJcC<$j8U(_RWN(G>[1H8=BSd-<E3(";cd""<E<+#<E)rs;\`2,;Gg=j;,L.f
+;H$Il;,L+b;,C(br_WVln5B9RqaCHQs$luXs%!,]r^qQ29MJ5V:/=\`;H$Ln<E<1'=^#'8?=.)K
+@Us%^BPD3sD/O<4F*)SLH$XjdIt<6*L51VDN/is^PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU]Y2(q
+_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0plg4!*mdKZ8rpg9bo_%nNp@nO\!r;]hr;6Kk
+rVcEgJcD5>J,~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq/MJoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/WbmHPU8Y9o]E,XUqmla:rjV^3s0Vj6qQo4hqR-9\qhkH5
+r/LQ3s31Md"O,-9d*hpB#Lq;Sf%/I)f`'S#f_X;$f`0P(f%'WH"4PZEchu)fc0igJc2V5R@q>RM
+!G6!DBE;g^rbMOM!,_^Qs).mVrGhjXs)\*[rcS3`m!&DOrcS0]s)\3\rc.sWs)7mS!GuZPC]A,L
+C&VcHB4h-S!G#^>@L$=L?sd8I?=!P8!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2g:&[id9D_?\
+8cD9W8,YpT7J0(E6hNeG6%T&es-NaBqt]jNmHj&ujQ#7Yhqm2EgY(62f%/@"da?Ccc-Xhbbfe5Q
+aN)?>_8![q]=PM]\$icV\+$p-6i0:O7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3>[:]E
+@:E_XAnYjmCMds.EH?5FGBnL^I=Hd!KSG8=MN!RVOckuqR$sM8StVmSV5L;mXKJe4ZaI6O\\#Mh
+^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?oCW%T!VZ9dp]C9fqY^6i
+r;HTerdk*=s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq/MJoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/WaB[fIY<OUO8t@9NqA=gN;JP4M?&M3D#.rHD#\AKD#]t'
+R0K+LS=H.AT)>5KT_G)VT)Y>]SG8TQRfAlVSF`6KRf&ZT@KBtLrac+BBDuQFBkmW_s(h[PrbhaS
+!-%mVs)S-\r,hp\rc[XPrHA0_rH/'\s)S*Ys)A!Vrb_aRD#S5MC&huIBE;aXrac+@A,]pB@:3JM
+?X@&Er`fJ.>5h\)=9)G$<WZ9#<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/94C6N9=`
+l0I[%mI'H4nalGIp\=U^r;D3HJcDkP+SF7*^q7.aY-"h,XK&;!Vl$;dV50l\U7e-NSt)@@S=9GH
+rg==aQBdYtOcPQ`N/`^OM2R7Lq2+j's$QZOs$crWr^ZuZ!(m/^!D?,c9mf]3:f(%g;cHat='/U/
+>?kH@?t!MSAS,UhC27[(E,fr@G'A4XI!pKpJqSl6M2I7PO-,TjQC+,1SXuOLUnsugWiWA-Z*UjH
+\@K5a^VI_(`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjlY^hl07O#m-X60n*ol<o(2MQo`=d\rV-Hi
+qYL-erqu`np&9OBS,\!~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq/MJoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/W^]KL8kr+T;=[W6;#jGk3WM2;3;tr53X&Yg='&L+qcWi!
+qcNo$qc<c"qcE_srDru$qH3f#r)`kurE'#$s&oA(!*B,"s&\bns'c"=AH$-@AnV*V!GQ<JC]A2N
+D>nGQDZFbTEW:(ZF8U.ZFoHRNGPu^aFo?F^F8p:[EW:"XDuOVTD/B2es(VOJrb)=FB)Z?BA7PUJ
+#@V"J?XI,G?2e(0>?_#/s&]8&rDiu"<)iiqs&/korD<Mis%`Mer_3>bqb$iZr^clUrC6]RogJUC
+og8[E7u<._N/`jYOHPfmQ'Rf*R[fq?TqeH^W2cu'Z*UjI\\#Mf^r"(0`lQ<Gc-OeceCN:*gYLfJ
+k3;4#oCr+ZrVlfpqtg0drIP!"s5a1ldZA?U?!CK7=BSa.;cct!;cN]rs&B&"rDN_p;u9Jm;#jGl
+;[u](;,C%a;,C(b:Jakb;=IK`6i0:O7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3>[:]E
+@:E_XAnYjmCMds.EH?5FGBnL^I=Hd!KSG8=MN!RVOckuqR$sM8StVmSV5L;mXKJe4ZaI6O\\#Mh
+^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?oCW%T!VZ9dp]C9fqY^6i
+r;HTerdk*=s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7](Xp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WGI3HV5LB,]XteeqRQO5qmQO4r3ZI0jL"fls0Vd5s,6T0
+r/LZ6qo],dc-F\armM,%e^`7%f@S[Qg&'G"g&BY(f)aIQqU>VrdEp59cMbudbOj$PblV?aAH$-@
+AnV*V!GQ<JCB86grbhaS!-%mV!ci@'rH/$]s*"6_ms+\Qs*"BarcJ0]s)S*Ys)7sVrb_sXCi!m&
+C2.J^BE;aXrac+@A,]p<@:9(A#@:\A>[1K;>5h\)=9)G%<rZ2"<;ohr;ZBVn;#a>j:Amoe9`@]_
+9)_E]8GPdS7f>dK7/0.B6N9?&s+13<rtYA/md9B+l/^pbiS`PLgtUT;f[n^)rmDM,c-FY^cHaVU
+bfRrH`P]O,^:ChcrjMs;\%1t;s$QZOs$crWr^ZuZ!(m/^InNI/9heAY:f("f;cHat='/U/>?kH@
+?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiWA-Z*UgG\@K5a
+^;%P&`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<i
+qu6NlrUp/@s-s%=~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7\tUp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WEsC^J:`Q<OSk16NqSIlN;JP4MYr>-C\_fGD>e;NRf&QX
+R[]h;SXuGNTCJTKTD>)YSH,2RRfJoVS,]#LS,SlURf[&/AH$-@AnV*V!GQ<JCB86grbhaS!-%mV
+!ci@'rH/$]s*"6_ms+\Qs*"BarcJ0]s)S*Ys)7sVrb_sXCi!m&C2.J^BE;aXrac+@A,]p<@:9(A
+#@:\A>[1K;>5h\)=9)G%<rZ2"<;ohr;ZBVn;#a>j:Amoe9`@]_9)_E]8GPdS7f>dK7/0.B6N9=^
+lg4$,n*ol<o_%tRqYU0fJcC<$XoBC+cc3i5]rnK?XK/D%WMcYkUSXc^U8"?RSt2FBrgOLgS!oe6
+R$X,*Q'7AmO-#?[N;eY9Mi*FMqMFs(s$QZOs$crWr^ZuZ!(m/^InNI/9heAY:f("f;cHat='/U/
+>?kH@?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiWA-Z*UgG
+\@K5a^;%P&`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<ncA@Srq-<cp\jme
+q>^<iqu6NlrUp/@s-s%=~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7\nSp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WC9<I9MJ:V;=mc9;>sDl:]!3J3Vkc==^"s1r`9)%qcWi!
+qcO&(='&F'pK.>pr)`_t!*K)!"BJT+=BGB%!*B,"s&\hp!b,YMrac+BBDuQFBkmW_!GlWPDZ=VT
+E;abXEcZ=#FT-F_G5?FOGkuXaG5cX`FT6F^ErL(YDuahUD?k#pChmg$C2*Z\!G?$DAH?=OraGn:
+@/aL<?<piA>[(E9r`T8'!*B/#s&K(ur_rhps&&bls%iVhrD!;cr_*/]r^m)[q+(BQrC-BIpd=^@
+s$?[D5`LebOHG]jQBml+S"#q>TVJ<[W2co%Z*UjI\@T;c^V[q.`Q-*Dbg+S`e(3.(gYC]GjQGdn
+mdg)Jqu-Nnr;?Qk!<.QLJcFj3+2!8@@U32B='8[-=B/C&<)cds<`N1"<E2ss;H$Il;>sGt;c6Cg
+:Jt-j;?]oo:esqbr_NPj!)`2_s$QZOs$crWr^ZuZ!(m/^InNI/9heAY:f("f;cHat='/U/>?kH@
+?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiWA-Z*UgG\@K5a
+^;%P&`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<i
+qu6NlrUp/@s-s%=~>
+JcC<$SH&6\rr)ior;6Njs7uZh8,)`Np%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WG@'DVPgB)]DfD>\c0,:\,Ni7[JR?2[H=jo[JdK2[Jc$Z
+N;8G5N;1R,bg"G[dF-LmeCE+#f%8O+qq:o"s4R8$"4u,Sebdhue'ZOgqTf,cr6+`Vprs@[A7]=a
+AnPdjBkhBuCM[g(rb_aTE;jkWErU4[FT6L_G5QR`Gl;pZHMi'fGl2dcG5l^aFT6F^ErL%ZE,Y_n
+s(qpUCMR["C&VcHB4h-S!G#^>@KBnFra,n:?!U]?>?b;1=TV],=8l8#<<-"s;u]_q;>j>k:]F2f
+:&dod9DhE]8cD9W8,YpT7J0(E6hNeF6%T&es-s$+qY9LFlfmTnj5T"Thqm,Ag"G$0f$i'rd*M^:
+&C8YGbK@rJa2l6;_8!^q]".gLs0_p<n$rBbqaCHQs$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op<``C+
+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@1-jJ:`E-LP^nINK93bPa7])S"6.DTqnN_WN*&%Yd(OA
+[^`l[]Y;.s_SsO9aihoRcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\
+q#C0iqY^6ir;QZerdk*>s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WEsC]ItECPO7\J.NT,ooMuS\3M>rJ-C\_fHD#nIApmM/O
+s-s.]St>kPoq;&Op7D8S!1`8Bs-ieR&t5;"A7]=aAnPdjBkhBuCM[g(rb_aTE;jkWErU4[FT6L_
+G5QR`Gl;pZHMi'fGl2dcG5l^aFT6F^ErL%ZE,Y_ns(qpUCMR["C&VcHB4h-S!G#^>@KBnFra,n:
+?!U]?>?b;1=TV],=8l8#<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8cD9W8,YpT7J0(E6hNeF5n<;M
+n*ol<oC_hPq>1!drdk*#s/uAViQfBV]",#HYH+e*WMlenVPU)aUS4EST:VUDS=?":S!f_5R?s5)
+QBm_tOH5H_N/[am",i%pMY`2(MZ6'@7/o^U7f>i+84cBF8kViO9heAY:f("e;cHat='/U/>?kH@
+?X[DRAS,RgC27[(DfKf>Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0SXuLJUnsugWiW>,Z*UgG\@K5a
+^;%M$`Q$!@bKS8Wd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]k
+r;6Kkrr)KgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WC9<I92/1\;Z'Da;UnYD;#F,b3qkZ63r<%[=T2A%=Sl8!
+=Sl5&=BAT'<q]Sp<r?%q=TDS"=8,hr=8u;$=7oZ,@q9.^AnG[hBPD3rCMRa&D>nDRDfG\qs)S-\
+rcJ0_rc\3`rcnBeo6U=[rcn?bs*"EbrcJ0]s)S*Y!H;uVDZ=PWChmg$C2*Z\!G?$DAH?=OraGn:
+@/aL<?<piA>[(E9r`K;)=',B%s&B%urDW_o!)`\ks%iYir([2br_*/]r^m)[qFCKRr'g9Hq*XgA
+r]ru4NfT9aP*;/tR$jD4S=ZCIUSXidWiWD/ZaI<R]=kqo_SjF6aihlQd*gCof\5-:hVdGUkNVC&
+o(MnTrVulsrVQHirdk*#s5s=gWHi,a>?k?6=]ef)<XMi+<``:%<)lpt<;ohq;@uc(;c6Ih:f1+h
+<)QUk:f'qbrD3Gi!)`2_s$QZOs$crWrC;<-8P)NH92&#R9hnJ\:f1+h<)lt#=BSg3>[:]D@:E_X
+AnPdlCMds-EH6/DGBeF]I=Hd!K8#);MN!OUOckrpR$jG7StMdQV5L;mXKA_3Za@0N\\#Mg^VRe+
+`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnYk2tjkl0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WG@$DW2?Kl]DB&<\G<T6[e[<2[/@?'ZiIN0[/79.[/IE/
+Mtr>3NW"h9b5TT`b5TQpbg"G[dF-IleCE+#f@\^-q:YJos478%rmgqr"4PZEchbreblGudbP'0T
+bm@olAS,RfBP;*prbDOND>nDSDfB[pE<:0%F8g:]FoQX`GQ2peH2)^\Hh_pdH2i-fGQ2jdFoHL_
+Er^7[E>rk8Df0H0D/=!'C2.HrBP1siAS#C_@q&nU@:9(A!FB(2>QS,5>5hY+=BAT'<WZ9#<;ohr
+;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/94C6N09%s+13As"=3HoBkr1jlGL_iS`SLgtUT;
+f[na+daHOgccs\[cHXMSbK.`D`Pf^2^:h+f\c0)<[K*l,\Gnqn7/o^U7f>i+84cBF8kViO9heAY
+:f("e;cHat='/U/>?kH@?X[DRAS#LfC27[(DfKf>Fa&(VH[UBoJqJc3M2I7OO-,TiQ'du/SXuLJ
+UnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4N
+o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WEj:]J:N=NO7SD0NTlB%NVe\4MuJV1M>iD*C\V`?R0]1J
+S"-%>SXuGNTD>/OTD"lUSH,2GS,SlORgEV:AS,RfBP;*prbDOND>nDSDfB[pE<:0%F8g:]FoQX`
+GQ2peH2)^\Hh_pdH2i-fGQ2jdFoHL_Er^7[E>rk8Df0H0D/=!'C2.HrBP1siAS#C_@q&nU@:9(A
+!FB(2>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/94C6N07Z
+n*ol<oC_hOq"jmcrdk*#s/uA*fuqCJ\[2:<"feZ(WMcZnV>m=tUS=HRT:VUDR[j>F&"/fPQ^=#'
+PEV,jNfK*XMuJP8Mi*FMqMFs(s$QZOs$crWrC;<-8P)NH92&#R9hnJ\:f1+h<)lt#=BSg3>[:]D
+@:E_XAS5[kCMds-EH6/DGBeF\I=Hd!K8#&:MN!OUOckroR$jG7StMdQV5L8lXKA\2Za@0M\\#Mg
+^VRe*`Q-'BbK\>ZdF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<h
+qu6NmrUg)?s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WC09J9MA1Y;Z9Pe;UnYD;#3ud48M#53<D6D=Su>%=T2A%
+=Sl8!=Sl5&=BAT%<q9>g=TDS"=8,ho=8,f'A7]=aB4kmkBkmW_!GlWPD?=`qE;jhYEcZ=$FT6L`
+G5ZXbGlE!`HMDj^HN&3iGl;jdG5l^aFT6C^ErL%tE,TZ4DJa6,CMR["BkV0mB4b^dA7T1Z@UW\Q
+ra,\4?2e(1>?Y50=TV],=8l5%<E)rs;u]bq;>j>k:]F2g:&[id9D_?\8cD9W8,YpT7J0(E6hNeF
+5sp]pOckonQC+)/S"-%BTq\?ZVlHi#YHkOE\\#Je^qmq-`lQ?IcHt"fe^rL/h;@/MjQ>[lmdK`?
+q>:-hrr2loqu20HJcFp5#3hV"A7/SEr`T8&*`c?C<E)mt<`N1!<EE.!;GpFm;Gg:h;c6Fi;,^Ck
+rDESks&&_js%i\mmo'0QqaCHQs$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB4a
+BPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF6
+aND]NcHstfeCN7(g=tE=hr*JQj5f@bkNV6rlg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*>s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZh7ecWMp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCnc[^EHHYcb(-WG6m@WMZW,rOVs<s1%s8qmQ:-pU'k+q6^(-q6^(-!0$`3
+!0$i8s,?r:!6b&X%Elu?cHstedaQ^re^rFPf_jFofDsP&f)=.ue-"1Id*MR6s3:Pes3(,[qT]%O
+#%hL\BP;*prbD^SD/O60DfG\q!ci@'rcA3aG'<h.s*4Qhqg/3fnU1:^qg/9fs*4Nes*"EbrcBH-
+EcQ/>E,]`5DJa6,CMR["BkV0mB4b^dA7K+Y@UW\Q?XI,G?2e(6>?Y35=]ed-rDiu"<)iiqs&/ko
+rD<Mis%`Mes%NDbr(?r[rCHcTrC6]RogJUCog8XDJcC<$T`6P<rUB1@l/q'eio/eNh:p]<g=Y$-
+daHUkccsb\ccs\VaiMNBa2Q$7^qI>Y\c9,A[^W`V\+$p-6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<.&=]ns6?!^lH@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@N/`m[P*D5uR@B_<TV8-W
+Vl6VsXfnt8['mHS]"Gbl_8=.0a2lEHc-F\`e'uq"f\5'7h;7)KioB+]k3)!nlKdg(mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFASH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZh7ecWMp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCnc[^EHHYcb(-WEa4ZJUrK9r/^Q3qi0ZqqhtK3q2,$,!,V7Bs(haRCi&j6
+rKmYSS"0JKs.9.\rLiVOp7D8S!1`MIqO78Ms()CHB4kmkBkmW_#&J-oDJsH4rc&![F*%>&!d/[0
+rHJ9ds*=KfrHn'^rHnEfs*=WhrceBcs)n<_-$+*IEH,r:Df0H0D/=!'C2.HrBP1siAS#C^@q&nU
+@:3GL?=$q:>R+J:>$5!1=BGH%!``3!r_rhps&&_ks%iYirD!;cr_*/]r^m&ZqFCKRr'g9Hq*XgA
+r]pn]o(2MHp\=U^r;M9IJcDqR&,+Mn_n!@`Y-+n-X/W(rVZ!;9US=HTT:MLCS=5k7S"#k8R$X/*
+Q'IPrOcYT`NJi[OM2R=MMtr5(MZ6'@7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL->?kH?
+?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-#NhQ'[o.S=ZCIUSXleWiW>+Yd:^F\%0)_
+^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8N\UjQ5Oel07L!m-X6@mfi4No()DErq-?dp\4[^s7u]k
+r;6Kkrr)KgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh7JHNLp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCnc[^EHHYcb(-WC06H92/.M;V"_E;"mc^48V);3W;)=>5DD%=T2A%=Sl8!
+=Sl5&=BAT%<q]Sp=T2Cu=TDS"=7o\q<rlE)q,mZ.#%hL\BP;*prbD^SD/O60DfG\q!ci@'rcA3a
+G'<h.s*4Qhqg/3fnU1:^qg/9fs*4Nes*"EbrcBH-EcQ/>E,]`5DJa6,CMR["BkV0mB4b^dA7K+Y
+@UW\Q?XI,G?2e(6>?Y35=]ed-rDiu"<)iiqs&/korD<Mis%`Mes%NDbr(?r[rCHcTrC6]RogJUC
+og8XD6BRFpPa7Z(R[]h<T:hpRV5L8kX0/_6\%0)^]tM4t_o9^>bK\A\e'ut$g>(QCiT'%_l0I^)
+nb2bTqu6WorVZWmJcC<$kl2@GNc&?5>$G*3=BAR(<`N*s;H?gurDX5);GpFk;G^4g<)c[j;>sGu
+;c-Fj:Jancr_Nbq:f1%d;=IK`6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lH
+@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@N/`m[P*D5uR@B_<TV8-WVl6VsXfnt8['mHS]"Gbl
+_8=.0a2lEHc-F\`e'uq"f\5'7h;7)KioB+]k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zj
+rqucoo_sFASH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZh#5@ibp%@tKrpi;DnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",W+pX7WM-E*]=PTP\bru;\+d?/[J7-+[J@3-[J@3,[/mXm
+p5B!2qMbHtoZ@Tcbg"G[dF$FleCE+$rRh/'q:G]!q:G]!rRUturmV&!da6>=cMu2lcHXW5bl5f[
+bl#^$AS,RfBP;*pCMRa'D/O60E,]f:EcZ=$F96T.G5c^cGlN'fHN&9jI-Z4ZI/eQlHN/9jGlDpe
+FoZ[aFT6D!EcH)<E,TW3D/F*)CMITuBP;$jAn>OaA,]p<@:9(A#@:\A>[1K;>5h\)=9)G%<rZ/"
+<;fbq;?0Sm;#a>k:Adid9`@]_9)_E]8GPdS7f5^J7/94C6N09%s+13Es8VpNmd0<&jl>F]iSWPI
+gY1?6f@\X&daHLgc-+DXc-+8Oa2Z*;`5TR-]t1_a\@B#V[^is<\G\em7/o^U7f>i+84cBF8kVfN
+9heAY:f("e;c?[s<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/Z2Ll%(MO-#NhQ'[l-
+S=ZCIUSOfdWiN8*Yd1XE\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X6@
+mgJXTo()DEo_%nNp\4[^s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh#5@ibp%@tKrpi/@nF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",W*F%UIXm1KO8k7>O8k77NTc?!MuJV0M>E,)D#%lGD#0P"
+R/NHOQj9%KS=Q4BT:YtQ!2/\Np7D;Ts.'%W!1`eQpR;#L(1h)jB4tsmC27U$D/F0.DfBZ8EH6,A
+rcA3aG'<k/s*4QhrHeHird=$[rI"WlrHeKhs*4Nes)nBbrcJ0](ijV9E,]`5DJa6,CMR["BkV0m
+AnGUcA7PUJ!F]C8?O'nC?!LW=>?_#/s&]8&r`9&!!*&nqs&&horD<Mis%`Jds%NDbr(?r[r^ciT
+rC6]RogJUCog8XD#kR]]p\=R]qu)*GJcDqR)=>hj^q7(ZXfe_*Wi)eoV5C&`UnaWVSt;MOS-GIO
+R@0M3R/WB[Q'7AoOH5H_N/NRNM>`A.M>2u,6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=k<E<.&
+=]ns6?!^lG@Uiq[B4u!pCi402EccGJG^=^bIXm!%KnbD?N/`m[P*D5uR%'V;TV8-VVl6VrXfnt7
+['mHS]"Gbl_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_`nF?)?oCV\Jp%J.S
+rqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZh#5@ibp%@tKrpi/@nF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",W'j*E8kW"Z;Z0Jh;V"_E;"m`e:f0=P4T7G=3rM)8>5VP'
+=T2A%=T2J'=o__'=Sl5&=BAT%<q]Vo=92K*qcNo$rE'#$s&\Mg(1h)jB4tsmC27U$D/F0.DfBZ8
+EH6,ArcA3aG'<k/s*4QhrHeHird=$[rI"WlrHeKhs*4Nes)nBbrcJ0](ijV9E,]`5DJa6,CMR["
+BkV0mAnGUcA7PUJ!F]C8?O'nC?!LW=>?_#/s&]8&r`9&!!*&nqs&&horD<Mis%`Jds%NDbr(?r[
+r^ciTrC6]RogJUCog8XD6'IOuQ^F21S"-(CTq\?ZVl?`!Yd1[H\\#Gb]t_D%a2uNKcHt"ge^rL/
+h;@2OjQ>[lm-X95p%S=]rr<#trr)hIs+147s!GL8Bjk@Q>$+j.='&F(<E2ss<E3!u<)Zap;c6Ol
+;c6Ii;c?Ok;>sGp;,U<k:]OAk:]sWk:f1*Z;Z/u\7/o^U7f>i+84cBF8kVfN9heAY:f("e;c?[s
+<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/Z2Ll%(MO-#NhQ'[l-S=ZCIUSOfdWiN8*
+Yd1XE\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X6@mgJXTo()DEo_%nN
+p\4[^s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Njs7uZh7JHNLp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W+gI5WM$?k])0&;\Gs&2[K*`1[/@?-[/79,[/@?1[/Q!Q
+N:=t"bKS5Vd*^7ieC<%!f@\dCfE'UTqpk\q"4P]Gd/D8hci;8hbl5f^bQ?&5bl5ifAnV*V"_h^e
+CM[keD?4Zprc%sZF8g7_F`qs-G63#7H2W'hHiJKiIJeQhJ,=]lIK+]pHi86lH$FT5G6`;6F`__H
+F)q8"%rcH)DJa6,CMR[!BkV0mB)Z?BA7PUJ!F]C8?NFJ=r`oJ-!*]A)!a&N*r`9&!!*&nq!`Dlm
+rD<Mis%`Jds%NDbr(?r[r^clUr'pWRogJRBp-S^DJcC<$V>iFNqt0:BlK.*fio/kQhV?l>g"P'.
+eC)gmd*L"^cHXPTaiMNB`l,j8^V.4h\@K,W\$rfU\F@!+6i9@P7K5jU8,l*[8cD>392&&S:/=\_
+;,U=k<E<.%=]ns6?!^lG@U`kZB4u!pCi402EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR%'V;T:r$U
+VPpMqXfnt7ZaR?R]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg(mdKW6nac8B
+s7H?as7QHerqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Njs7uZh7JHNLp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W*<kPIX[%DO8k75NU2W%MuJV0M>2r.C\DTBC]8/JRJ`HN
+RJiKVR@B_;SY"o7p7D8S!1`_OpR2/QR[X5F!G6!DBE`*bCMRa'rb_aTE;jhXEc_5%!d/[0rc\Eg
+H$T@7s*OcnqL/9jpj`0iqgJKls*O]j!dT$8rc\TjF`heJF)uC$E=[#,DJj<.Chmg$Bk_6oB4h-S
+!G#^>@KBnFra,\4?2e+/>6%k+=TV],=8l8#<<-"s;Z]io;>j>k:]F2f:&dod9DhE]8cD9W8,PjT
+7J0(D6hWkF5mI#Up\F[_r.4m!s0)G4hos$O]!JQBXK&A%W2HNlV$s/pTq\3QT:MOBR[]fGRMM<Y
+R$X,(P`q8mOH,?\N/NRMM2[@MMXZK$6i9@P7K5jU8,l*[8cD>392&&S:/=\_;,U=k<E<.%=]ns6
+?!^lG@U`kZB4u!pCi402EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR%'V;T:r$UVPpMqXfnt7ZaR?R
+]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg(mdKW6nac8Bs7H?as7QHerqQNh
+s8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Njs7uZh7JHNLp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W('9I8P;nZ;Ys>g;V4kH;"d]`;?&ZW48V,?48Cr;3VQ_U
+=oVV'<rcA"=o;D!=TV],=8Z+m=8Z2#=o;D#=8l;%=7')jAnV*V"_h^eCM[keD?4Zprc%sZF8g7_
+F`qs-G63#7H2W'hHiJKiIJeQhJ,=]lIK+]pHi86lH$FT5G6`;6F`__HF)q8"%rcH)DJa6,CMR[!
+BkV0mB)Z?BA7PUJ!F]C8?NFJ=r`oJ-!*]A)!a&N*r`9&!!*&nq!`DlmrD<Mis%`Jds%NDbr(?r[
+r^clUr'pWRogJRBp-S^D3gH"uR@9V8StMdOUnsufWiWD/[(!QV]">Vh^r+15b0/&UdF6Urf\5-;
+i8WhZkNV=!mI9]>q"jsfJcC<$jo5S]V0?Q]>?kA2=9MZ+<`W6";Zp-$<E*#t<;oc";c6Ik<)HKf
+;@-,q;,L+c:eskar_W5arDNS]r'^QRs$lrWs%!,]r^qZ59MJ5V:Jakb;H$Lo<`W:)=^,-:?=.)L
+@Us%_BPD6uDJsN8FEMePH@('hJ:W?,L5:\ENK90aPEhK%S"-(BTqeE\W2co#YHY==[^WfY]Y2(r
+_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4$,n*fc9o()DPo`+Uap&Ojdq#C0iqY^6i
+r;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog/6Ao()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W+L.1Unarqr4;g:s1&';pU:%.r3ZC0q6^(-q6^"+rNuU2
+r/:3+mE,^Xbg"G[d*^=lrm_##lIZ-hf)=.seGmu!da6>>cMl,jcHZ@4r6,#^rQP=Trb*![C27U$
+D/O60E,]f:EcZ;DFEMbMrc\EgH$TC8s*Ocnr-eTorI=9drdXorr-\WoH[G^;#C1Q=GB\4RFoHI`
+F)q8"$?0p$DJa6,CMR[!rb)=FB)Z?GA7K(X@:<RC?NFJ=r`fM/>$Co.!E`G%<WZ9#<;ohr;ZBVm
+;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/94C6N'3$s+13JrtPA0nEoQ+k2bU_iSWMJgtUN9f[n[Q
+dhC-UcHOSZc-+8Na2Z*;`5KL-]Xn*P!4Vp8!4hR-rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h
+;cHdu='8[0>[1TB?t*SUAS,UiCM[m,E,fr@G'A7ZI=?]tK7nu8M2R=ROHPfmQ^F53StD^OUo()j
+X0&S0ZEpsJ\[oGe^VI_)`Q-'BbK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?oDeI_
+p&F^cp\ssfq>^<hqu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog/6Ao()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W*3_MIXd$/pQ,64pPnU"qhtK3q2+a$s(h=Er+l8!pmCuI
+rg3kWS"-%?T&cO>ScYOUT)P8\SGAZGRf/]UBDuQYBkhF!Ci+'-DfBZ8EH6,AFEDYKG5c[eG^4T6
+HN/?lI/JEmIf4cbJGt&tIf+TqI!^5=H3\_?G^"@TG'3e+!HW;\E=-Z'DJj<.Chmg$C&VcHB4h-S
+#%V4Q@UW\Qra,\4?2e(1>?Y50=TMW+rDiu"<)iiqs&/korD<Mis%`Mer_3>bqb$iZr^clUrC6]R
+ogJUCog8UC"S_]fqu)*GJcDqR0A4If]XtJPY,n\*WMl_lV50r`U7n6PSt2FBS=?":R[KV4R$Eu'
+P`q;oOH5E]N;e\;M2R:LMslN$6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF
+@U`kZAnYmoCi401EH?5FGC"UaIXm!%KSG;>Mi<^YP*;/tR$sP:T:r$UVPpMqXfnt7ZaI9Q]"G_k
+^r"%/a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg'mdKW6nac8Bs7H?as7QHerqQNhs8)Zj
+rqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog&0@o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W's0F8k`%V;>F,F;>sDc:B45g;>iNU48_5@48V)1>5h\)
+=T2A%=Sc2!=Sl5&=BAT%<q]Vm=9)M#=T2Cf=9*"5BG>/qCMRa'DJjB3E,fl<F)uGFF`qs-G63#7
+H2`-iHiJKkIK+cpJ+%peJ,XopI0+eCHi86qH$FRXGBS.PrcA0^ErL%cE,TW3D/F*)CMIS_BE;aX
+rac:E@q&nU@:9(A!FB(2>QS,5>5hY*=BGH%!``3!r_rhps&&_ks%iYirD!8bs%E5]r^m)[qFCKR
+r'g9Hq*XgArBWH2R@9V9StMdOUSXidWN3/*ZF.0N\[oDd^VRk/ai_fOcdC4lf@\g4hr3VWk32*r
+lg4-2p%SC^rdk*#s5s=ui0J@o@Tlu<=BAU+=&i7$;c?Xr<Dums<;fbn;ZBZ);,C+g;Gp@j:esna
+;,7'd!_uQgnko?`rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,Ui
+CM[m,E,fr@G'A7ZI=?]tK7nu8M2R=ROHPfmQ^F53StD^OUo()jX0&S0ZEpsJ\[oGe^VI_)`Q-'B
+bK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?oDeI_p&F^cp\ssfq>^<hqu6NlrUp/@
+s.'+>~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2F`pTVAEiqRZ[:rj_p9qmQ=.!4;[3q6^(-q6^(-qm?C0
+s0DN[oo/4Z#g:H:cHsqce("BI!8$Mg!S>p$ec""sdfn1Id*L%`rm(Vjc2PrabPfZbbm\5uBPD3s
+CM[j*DJsLnE<^H)FEDYJG5c[eG^4T6H3/G@I/SKnIf=inJFe?gJGt&uIf4ZrI!^5>HN/6jGlDmf
+G'3e+!HW;\E=-Z'DJj<-Chmg$C&VcWB4b^dA7T1Z@UW\Q?XI,G?2e(0>?_#/s&]8&r`9&!s&Atr
+s&/korD<Mis%`Mer_3>br(?r[rCHcTrC6]RogJRBp-S^DJcC<$WW+.=q![S7l/q'hj5JnQh:gW8
+g"4j+e'lalccs\ZcHOGQaSs0g`Pf[/^:Cea\[]&V[^Q1Fn@/?`r'^NQs$luXs%!,]r^qW49MJ5V
+:Jakb;H$Ln<`W:)=^#'8?=.)L@Us%^BPD6uDJjE5F*)SLH$XmfJ:W?+L5:\EN/s'`PEhK%R[ftA
+TqeE\VlHf"Y->4<[C3WW]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*n*fc9
+o()hP"n_K\p@e7[q#C0iqY^6ir;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2F-EI=Hp+q2b<2qi1$&r/:Q3q2+["!GQ<AC]A5NC]Bgp
+R/<<OQj&qJS=Q4BjIc7>s.9:_rga%ZqO@&Es-jF0BP;*pCMRa'DJjB3rc&-_F*)MHFa!b.!dK!9
+rd"WmI!km@s*jrsqLJ0gqLJQps*jop!do?Ard+Ti!-nKe!HrVbF9-H'rc&9aDf0H0Ci!m&C2*Z\
+&8,TdARo=]@U`bS?sd8I?=!P8!F&b,=oVS(=8l8#<W?%t;u]bq;>j>k:]F2g:&[id9DhE]8c;3V
+8,YpT7J0(D6hWkF5lpo_JcC<$YQ#F/e&K/7\$<*<XK/G%WMcViUnsl]TV.qVT)Y8^S=5k5rg="Y
+Q^*i#P`q7/Ns1N$Mi*CKregc6mtq!1r'^NQs$luXs%!,]r^qW49MJ5V:Jakb;H$Ln<`W:)=^#'8
+?=.)L@Us%^BPD6uDJjE5F*)SLH$XmfJ:W?+L5:\EN/s'`PEhK%R[ftATqeE\VlHf"Y->4<[C3WW
+]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*n*fc9o()hP"n_K\p@e7[q#C0i
+qY^6ir;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2E*R8P;fSr)!Jm;tj2J;>sDd:]F8e;?&ZS3r;#:3q6DQ
+=oVV(=8uD!=oDJ"=TV],=8Z+r<rcA$=8Z2#=nu/"=7')uB4tsmC27U$D/O60E;jh]EcZ>EF`hm,
+G63#7H2`*kH[L5>IK+cqJ,4]eJbjorJ,aurI0+eCHiA?kGlW*gG6)l0rcA0^ErL%cE,TW3D/=$(
+CMIS_BFnfgAS#C_@q&nU@:3GL?=$q:>QJ&4r`T8'!*B/#s&K(ur_rhps&&_ks%iYirD!8bs%E8^
+r^m&ZqFCKRr'g9Hpd=aArBW!(S=Z@HTq\?ZVPgDnXKJe7[C3WV]=bkn`5Td<b08/XdaQatf\5-;
+iT'(`roj^TmdBT8p%eI_JcC<$kPkn0Melj.>?b31=BPQ(s&T.u##nT&;cQdrr_rbn'i@k-;c-Fi
+;,U=k;,C(b;,L+c:esmc:]ODc;>jDk6i9@O7K5jV8,l*[8cD>292&&S:/=\_;,U=k<*!%$=]np5
+>[CcF@U`kZAnYmoCi4-0EH?5FGBnL_IXm!%KSG;>Mi<^YP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P
+]"G_k^r"%/a2lEHc-FY_daZh!f@em5h;7&IioB+]k3(smlKdg'mI0N5nac8No*+dZp%J+RrqQNh
+s8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;-Qlq>(!a!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2FWkRAd'hq7?O8rj_p9s0h[0rj2[5q6^(-q6^(-r3ZI0
+rNcH^qMY--lH0FVbfn>Wcd:(geGdu!f%96?!S>p$ebmqsdf\%GdEqg;!RAshbk]H^bl;>hBkhF!
+Ci+'-DfB]9EcZ;DFEMd+G63#7H2`*kH[L5?IK+crJ,FirJc(,nKD^?#Jc(&uIfOrrI0+eCHiA<l
+H$K=4!HrVbF9-H'rc'0%Df0H0Ci!m&C2%?pB4kgfARo:\@U`bR?sd8I?!U]?>?b;1=oVS(=8l8#
+<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8c;3V8,YpT7J0(E6hNeE6%T&es/c5Nr;H3Slg!`sj5o=\
+hqm2EgXk*0f@A?uda?Cbbg"GWbK7iF`5BO3_S<aorjW!;[JmW7\F6p*6i9@O7K5jV8,l*[8cD>2
+92&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYmoCMds.EH?5FGBnL^I=Qm$KSG8=Mi<[XP*;/t
+R$sM9T:r!TVPgDoXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZh!f@em4h;7&IiT&t[k3(smlKdg'
+mI0N5nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;-Qlq>(!a!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2F'CH%:R*qiCK3s,@)?NK*@br/:Q3q2+TurG(t?!,V+k
+qO%MUS"-%?T)PA\T(\fVT(elQT)YDcSt2FBSGSfHRf@%6BkhF!Ci+'-DfB]9EcZ;DFEMd+G63#7
+H2`*kH[L5?IK+crJ,FirJc(,nKD^?#Jc(&uIfOrrI0+eCHiA<lH$K=4!HrVbF9-H'rc'0%Df0H0
+Ci!m&C2%?pB4kgfARo:\@U`bR?sd8I?!U]?>?b;1=oVS(=8l8#<<-"s;u]_q;>j>k:]F2f:&dod
+9DhE]8c;3V8,YpT7J0(E6hNeE6%T&es0)GEjNb]V]X+fEXfSS'W2Z_mV50r`U7e3PT:VUCS!oe6
+rg<\O$'ga=P*1rgNJrhqM?&M4MuS\'M>]g>7/fXT7fGpX8,u6\8q'E,9heAY:f("e;c?Xr<``C+
+>$P<=?XR;OA7]@dBkqL$DK'T:FEVkRH@1-kJV/W1LP^qJNf]EfQ'[l,S"?7GU84ZaWN3/(Yd1UC
+[^`o]]t_A"_o9X:aihoRcdC1je^rF+g=tH?hr*JRj5oFdkiqBum-O-.n*ol<o)J:bo_%nNp@nR]
+s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;-Qlq>(!a!Vc<eog/6Ao()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2E'R8kMiRr_WYnrDWDfohk]bo25Nap.t]bq,./gpH&46
+r]9OPrE9#"qH<c!qcNu&=',<#rDs)'='/T'=8Z2#=m&oeBG,#oCMRa'DJjB3EH-#?F*)MHG5c[e
+G^4T6H3/G@I/\QoIfFoqJGt,tK(aipK)U?!JH(*!If4ZrI!^5>H3&;9rc\BdFoHI`F)q8",B.R=
+DJa3+CMR[!BP;$kAn>Oa@q/tW@:3JM?X@#D>[1K;>5h\)=9)G%<rZ/"<;fbq;?0Sm;#a>k:Adid
+9`@]_9)_E\8GYjT7f5^J7/94C6N'20T:hjNUSOcbVl?\sXg#+=[^WcX]=bno_o9X:aihuVdaZh!
+g"Y??ioT=cl0.F!mI0T9o_%tTrdk*#s69OoY^C.o>?b64='&L*<``='r_rhs"B8E$<)`]mrD<Sn
+;#XAm;$Bip;,C+erD<MirD<)_rDNS]r'^NQs$luXs%!,]r^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8
+?=.)K@Us%^BPD6tD/O<4F*)SLH$XjdJ:W?+L51VDN/j!_PEhK%R[]n@Tq\?[Vl?`!Y->4<[C3TV
+]Y2(q_Sa@4aN;WLcHjndeCE1&g"P3:hV[8Mj5]7`kNM0qlg4!*n*fc9o()hP"n_K\p@e7[q#C0i
+qY^6ir;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2e6LQJI5YP5X-\c92<\,Wo4[J%!)[JI9.[JR?1Zi.30
+Z2KXXMu/IrapH88c-=P[d*^=lrm_)$f@TBA!S>p$ebmqse,RkrdJqPmc2u>;c2Pr_b783"C27U$
+D/O60E,fl<F8g7cF`qtQG^+N5H3/G@I/\NqIXckGJH(3"K(jopK_U3!K)^E#JH(*!If4ZqI!bj=
+$[HuAGB\4QF`__HErL%^E,TW3D/B2e$>O9gBP1phAS#C^raGn:@/aL6?=!P8s'#J,r`K;)=',B%
+s&B%urDNbq;,R9gs%iYir([2br_*/]r^m)[q+(BQr'g9Hq*XgArBZ#7JcDnQ2#I:AmHa'#k2bX`
+io/bNgtUH5f@JL$daHOhbKS2Tc-+5M`l,j7_na$t\[]/Y[C<TQ\[_+;!(-WOqaCHQs$luXs%!,]
+r^m2a9`@b1:/=\`;H$Ln<E<1'=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt30)L51VDN/is^
+PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU]=ktp_Sa@4aN;WLcHjndeC<($g"P3:hV[8Mj5]7`k32'o
+lg4!*mdKZ8rpg*]o`"Lap@nO\!r;]hr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2e'Dg$Y`M>`M0Nr"b)N;ne;N/NVnMY`1sMY_)^C[@Gb
+RK&`XS=Q5HT(\fUT(elRT)YG_ScG>\SH#)YRK/iLRLX"FC27U$D/O60E,fl<F8g7cF`qtQG^+N5
+H3/G@I/\NqIXckGJH(3"K(jopK_U3!K)^E#JH(*!If4ZqI!bj=$[HuAGB\4QF`__HErL%^E,TW3
+D/B2e$>O9gBP1phAS#C^raGn:@/aL6?=!P8s'#J,r`K;)=',B%s&B%urDNbq;,R9gs%iYir([2b
+r_*/]r^m)[q+(BQr'g9Hq*XgArBZ#7JcE"T1Yg*m]XtJQXKAS)Wi2koVPU)bUnXQVStM[GS=>t9
+R?s>/Q^3u'P`q8nOH5E]Mi*@KM>iD5MXQB%6N':K7/o^U7fGpX8,u6\8c_RYr_7T3:Jand;c?Xq
+<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJ:iN0LP^qJNfT?eQ'Rf+S"61FU84ZaWN*)'
+Yd(OB[^`l[]t_A"_o9X:aihoRcdC1jeCN7)g=tH?hr*JRj5oFckiq?tm-O--n*olHncA@Srq-<c
+p\jjgq>0scqu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/\OoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2da84lKJ9i4edqG[/epJL`_peh&fpJ:`aqGI2fn2g#A
+qcWl"!EiP$=oDJ"=TV],=8Z+t=8c7u=8l>%=nu2"=7]N(BPD3sCM[j*DJsK6EH6."F9Zl2GB\:V
+H2`*kH[L5?I0+kIJ,OotJc:8qKDU>sKDpK&Jc1-!IfOrrI0"_Brd"rtG^+FVG'.qLFE;L%E<U<"
+DJj<-rbDjUBkV0mAnGUcA7PUJ!F]C8?NFJ=r`oJ-!*]A)!a&N*r`9&!!*&nq!`DlmrD<Mis%`Jd
+s%NDbr(?r[r^ciTrC6]RogJUCog8UC2kZk=Uo(&fW2ZeuY->:A[^`l[]=ktr_o9[<b0A8\e'ut%
+g>(TEjQ>Ugl07O#mdT`9oCVeRrIP!"s6K\'m@JE2@9Qo<=B/C&=&r@$=&i0t<E3"!<)Z`n;ZBT(
+:f1(d;,U:h;H$Fh:f1*f:]F5l;,Hg\r_`__rBpHMs$crWr^ZuZ!(m/^!D?,c9m9?.:f1+h;cHat
+='/U/>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpK7nu7M2R=QO-5]lQC+,1SY)UMUo(&hWi`G.
+Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oof%8U/gYL`Di8N_VjlY^hl07O#m-X60nF?MK!V>s_o`=d\
+rV-HiqYL-erqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)_1KT<"0WqO"(\bru8[f!Q.[/%--[/.3.[/I?0ZMh''
+N;SV5N9/1ibKS5VcHjkce'upurmq,$mFVHkf)=.seGdo"da?Ihci),hc2Prab8+f,CMRa'DJjB3
+EH-#?FEDYKG'A.TH2`*jH[Pg@s*artrIFp!s+:0$rIj]prIk*$s+:9%rdb#u!.Ooqs*Pr9H?sj^
+G^"@TF`heJF)l8?E,]`5DJa3*CMITuBP;$jrac+@A,]p<@:9(A!FB(2>QS,5>5hY+=BAT'<WZ9#
+<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjT7f5^J7/0.C6Ms-#s+13TrsJc'p@%A6l0.9jj8S'<
+hBgt2f\"g-eC;ppd*Bn[bg"GVaiDE>`Poa1]t1_a\@&`Q[^WcVpU9n,s$H]PqaCHQs$luXs%!,]
+r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!guJ@Us%^BPD3sD/O<4F*)SLH$XjdIt3-(L51VCN/is]
+PEhH$R[]k>Tq\?ZVl?\uY->1;[C3TU]=bno_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]7`k32'o
+lg4!*mdKW6nac8Bo`"Lap@nO\s7u]krVQTlrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/YNoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)_#D01>]Ll[VkNq\P&N;nh8MYr=qMZ.G`C[.;`R09"L
+S=Q5HT(\fTT(elST)YG^SckUSS=?#>RMKUPCMRa'DJjB3EH-#?FEDYKG'A.TH2`*jH[Pg@s*art
+rIFp!s+:0$rIj]prIk*$s+:9%rdb#u!.Ooqs*Pr9H?sj^G^"@TF`heJF)l8?E,]`5DJa3*CMITu
+BP;$jrac+@A,]p<@:9(A!FB(2>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]
+8GYjT7f5^J7/0.C6Ms-#s+13WrtkCZa1o6oYcb(0X/i8!W2HMhV50i[TqVIX'qLkaR[fe4R@'>,
+QBd\uP*1ldNf8nqMZ/P6MYDr&M>opA6i0:O7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3
+>[:]E@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!KSG8=MN!RVOcu&rR$sM8StVmSV5L;mXfen5ZaI6O
+\\#Mh^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?oCW%T!VZ9dq#C0i
+qYg<jr;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/VMoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)^`84ZBK9iC^aqbm/cpe^c`s%rGcrD<>fr_WSi!'B^3
+m99BirE/htrE/r"!a&N*r)WbtrE/qur`K2'q,mVtpK/55BkhF!Ci+'-DfB]9EcZ>EF`qqPGBeE4
+H3&A?rdFfq!.Xrts+13%r.Fs$nV-ppr.G$$s+10"s*k#trdFfo+FAE\H$OXYGBS+OFEDSEEH,r:
+Df0H0Chmg$C2%?pB4h-S!G#^>@KBnFra,\4?2e(1>?Y50=TV],=8l5%<E)rs;u]bq;>j>k:]F2g
+:&[id9D_?\8cD9W8,YpT7J0(D6hWkE5rPF3V5C/hWN*&%Yd1XE\$roZ]Y;.u`5]m?bKeM`eCN:,
+h;7)MjlP[ilKmm*n*oi:o^qqTrdk*#s6Tand?&6V>Zt<5<`E+$r`0/#=&r7!r`')%<Dudor)3Jj%
+8]o";Gg=i:eska:/Fdd:\.E\;>sJn6N0@L7/o^U7fGpX8,u6\8c_RYr_7c8:Jakc;c?Xq<``C+>
+$G6;?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJ:`H/LP^nINfT<dQ'Rf+S"6.EU84W`WN*)'Yd(OB[
+^`l[]YD8!_o9X:aihoRcdC1jeCN7)g=tH>hr*JRj5oFckiq?tm-O--n*fc9o()DErq-<cp\jmeq
+>^<iqu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_/J;pP,W;!n&\c92=\,Wo7[J7-)[K!W.[JmQ1Zi%-+
+Z1a.TMuUocb5]T]b5]Wlbg"GYd*U4ieCE+Kf)=4hf`0S%ebmqre,RhtdEp5=c2c,fbl,^,C27U$
+D/O60E,fl<F*)MHG'A.TG^4U]H[L3hI=?Wprdb$"s+:3%re19)m"YLns+L?'s+:9%rdb#u!.Ooq
+!IT7nH7O8cGB\4RF`__HEcH)<Df9N2D/=!'C2%BqBP1pgARo=]@U`bR?sd8I?=!P8!F&b,=oVS(
+=8l8#<W?%t;u]bq;>sDk:]F2g:&[id9D_?\8cD9W8,YpT7J0(D6hWkE6%T&es0M__rr)ETlg*cs
+jlYR_j5SqPgtLH6f[nX%daHLfc-4GWccaGN`l,d5_n`ss\%&oU\$`ZS\@;4@q7$Ajr^6QNs$crW
+r^ZuZ!(m/^InNI/9heAY:f("f;cHat='/U/>?kH@?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqSl6
+M2I7PO-,TjQC+,1SXuOLUnsugWiWA-Z*UjH\@K5a^VI_(`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_V
+jlY^hl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<iqu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/YNoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_#C3"iVKo_;jNq\P&N;nh8MZ8OnMZ%AbCZh)]R09"L
+SXuDJT)P>^T),)VT)##UT)YG^T)Y>_S=?#@RNH9[CM[j*DJsK6EH6,BFEMbNGBe@XH?spcI!pEl
+IXh?Is+13%rIb*&re9]nre:B*rIb-%s+10"s*k#trd=fpHiA=AH$FOWG'8"MFE;JBEH#i7DJj<-
+CMR[!BkV0mAn>OaA7K(X@:3JM?X@&Er`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVn;#X8j:Amod9`Ic_
+9)_E]8GYjT7f5^J7/0.C6Ms-#s+13Ys![-X`4`gjY-"e,X/i4uWMcViUnsf[TqS*NSt2C@S!ob4
+R@'>+Q'@O4OpmD2NJrdPMM[7LMMd8bM"uo-6N0@L7/o^U7fGpX8,u6\8q0K-9MJ5V:Jakb;c?Xq
+<``C+>$G6;?XI5N@qB7cBPM="DK'T:FEVkRH@1-jJ:`H/LP^nINfT<cQ'Rf+S"6.EU84W`WN*&&
+Yd(OB[^`l[]YD8!_o9X:aihoRcdC1ieCN7)g=tH>hr*JRj5oFckiq?tm-O--n*fc9o'uhQo`"La
+p@nO\s7u]krVQTlrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/VMoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)^_7n66J:/^jcr)38dpe^c`r)!5cr)!;grD<Aer]Bd6
+l<=!ds&f&!rE0&%"'A]/=T2D#<rH+s=T)>#=T;P"=Su7u=T;GEC27U$D/O60E,fl<F*)MHG'A.T
+G^4U]H[L3hI=?Wprdb$"s+:3%re19)m"YLns+L?'s+:9%rdb#u!.Ooq!IT7nH7O8cGB\4RF`__H
+EcH)<Df9N2D/=!'C2%BqBP1pgARo=]@U`bR?sd8I?=!P8!F&b,=oVS(=8l8#<W?%t;u]bq;>sDk
+:]F2g:&[id9D_?\8cD9W8,YpT7J0(D6hWkE5r>C6Vl6SpX0&S1ZaI6N\[oDe^VRh,a2uKKd*gCn
+f@o$:i8WhZk32'qmI'N8oCDPGp\Oc<s+14:rs?2dBOG(L=BJU)r`9S1<E<1$;cHas<)lps;H*Nl
+'MhS(;,U4f;Gp@g;,C%b;GL%a:f%$d!)`Jer)*Gks$H]PqaCHQs$luXs%!,]r^qZ59MA/T:/=\_
+;,^Cm<E<1'=^#$7?!grI@Uit]BP;-rD/O<4F*)SLH$XjdIt3-(L51VCN/is]P*M?#R[]k>Tq\?Z
+Vl?\tY->1;[C3TU]=bno_Sa@4aN;WLcHjnde'ut#g"P3:h;@/Lj5]7`k32'olg4!*mdKW6nac5O
+oCW%T!VZ9dq#C0iqYg<jr;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcV,IZ:,!X8':(\HB@N[^Q(@q6^"+!4;F,s0VU.rNc=*
+s0D?WrJLZsrQ4HLrlP,]$HpZ;c-FV]dF-Lnr71hurn$Yls478%rmgqrrmUkp!RT0lc2c,fbl>ld
+CCtB"DJjB3EH-#?FEDYKGB\:Wrd"TlI/\NpIXh?Is+(0%rIb-'s+U?)rJ1*&rJ19)s+UK+rIY0'
+JV!fN!IoRtI0"_Brd#'"G^"@TF`heJF)l8?E,Y_n"`8'kCMIS_BF8BaAS#C^@q&nU@/aL<?<piA
+>[(E9r`K;)=',B%s&B%urDW_o!)`\ks%iYir([2br_*/]r^m&ZqFCKRr'g9Hpd=aAr'>o6JcE.X
+/,fD9mHj*"jlPR_j5T"Rh;-f<f\"g+e'c^lccs\Xc-OST`l>s7`5BC'\c0&B[CEZR\%&pA[e[E4
+6N0@L7/o^U7f>i+84cBF8kViO9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&+W
+I!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiWA-Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/
+gYL]Ci8N_VjQ>Ugl07O#m-X6@mfi4No()DErq-?dp\4[^s7u]krVQTlrVcBfJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcV!CN=oULAd22NqeV'N;nh9M?&LlMZ8V2D#8#JCuq&\
+R0B(MSXuFDqO[\Ys.9(Zqk!YVqk!h[rgs+[!M#YRRf@.8Ci+'-DfB]9EcZ>EF`qtQG^9:7!IK4n
+I0"eHrdb$"!.t0%s+LE+qhG')p5&[&qhG-)s+L?'!ePuSrdY$!If=`rI!bj=%XE;CGBS+OFEDSE
+EH,r9rb_mVChmg$C&VcQB4b^dA7K+Y@UW[D?O'nC?!LW=>?_#/!a&N*r`9&!!*&nqs&&horD<Mi
+s%`Jds%NDbr(?r[rCHcTrC6]RogJRBp-S[CJcC<$\Glfkb/_6,ZELD/XT,4KVl$>fUo'l\TqS*O
+SXl:?S=5h4R@'>+Q'@JrOckcbNJi^OM2I4KM2I/aM"uo-6N0@L7/o^U7f>i+84cBF8kViO9heAY
+:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&+WI!pKpJqJf5M2I7PO-,TjQC+)0SXuLK
+UnsugWiWA-Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X6@mfi4N
+o()DErq-?dp\4[^s7u]krVQTlrVcBfJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq/SLoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcU^7n63H:\[lc;Ya2b;#4#l:f1(d;#*oe;#*ue;#=&g
+;#WNU481f">5q_*=Sl5$=SQ%t=T2J'=92Q,r)`o!rE&kurE&Vnqc<c"r`B,8&Su<%DJsK6EH6,B
+FEMbNGBeE4H3&A?rd=frJ,XuuJH1<#KE$W)L&6W'L\?Q&L\li+L&Zi)K*$XUJc:0#It%BF!IT7n
+H4G4FGB\4QF`__HEcH)<DuOVXD/=!'C2*Z\$>3s^ARo:\@U`bRra,n:?!U]?>?b;1=TV],=8l8#
+<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8c;3V8,YpT7J0(D6hWkE5r5I=WN*&$Y->4>[^WcX]"Gem
+_8F75air&WdaQaug"YBAioK4akj%O%n+-,Ep\FX]r;M9IJcG0<%/?WCA78YF=BJR)<`f9#s&KA(
+;c?^s<)uut;uTZ$;bp7g;,U4f;,[Bi#>n8m;GL"`:B"&k:Jap_;#F2i;ZB)_6i0:O7K5jU7t+!#
+8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O<4EccGJH$XjdIt3-'L51VCN/is]
+P*M?#R@Bb=TVA6YVl?\tY->1;['mKT]=bkn_Sa@4aN;WLcHjnde'ut#g"P3:h;@/Lj5]4_k32'o
+lg4!*mf2_ZnF?)?oCW%T!quB_rqQNhs8)]krqu`no_sFASc=3~>
+JcC<$SH&9]rr)ior;6Njs7uZhs7ZNerq/SLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYcb+/WMcV-I#OqrXSTO+\c92>[fEl2[JdK$[/dT.Zi.3,Z2V$/
+Z2BRVNW4t:a8O'ZammORaT0K^ao9E`bKTt1"jYKBdaQ_Dec"(ufCISof)XD$ebmqre,Ibrd*M^:
+!6tJd(2I`'DJjB3EH-#?FEDYKGB\:WH?spcrd=frJ,Xs"JV&LQKE$W)L&Hc*L]3+uM>i>1L])u-
+K`Hf)K)pRTrdZJJIXZ]nI!^3dH?jaZGBS+OFEDSEEH,r9DJj<.Chmg$BkV0mAnGUcA7PUJ!F]C8
+?NFJ=r`fM/>$Co.!a&N*r`0)#<)ifp!`DlmrD<Mis%`Jds%NDbr(?r[r^ciTrC6]RogJUCog8OA
+JcC<$\,QU(n*K<'roG?`j5JnQhV?o?g=Y'/e^MsqdE^%]bK\DXbJqQ?_Sj@,]=IpM"gteI\%&p@
+[e[E46N0@L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(DfKf>
+Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0SXuLKUnsugWiW>,Z*UgG\@K5a^;%M%`Q$!@bKS8Xd*^=l
+f%8R.gYL]Ci8N\UjQ>Ugl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$SH&9]rr)ior;6Njs7uZhs7ZNerq/YNoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYcb+/WMcUuBQ8KPLQ@MoNq\P)N!"usMi6GLregc6r+u@LqJ?2!
+!13&>s-NYNr0[VTS"0JKq4@SXrLWqZq4@GTrLX%]rgs+[!M#YTRMK[TD/O60E,fl<F*)MHG'A.T
+H$Xd`I/\NpIXh?I!eGrTre(6(s+UE+reLK/mtq%"reLH,s+LH+rIY-&Jc:0LIsuipI=-BgH?sj]
+GB\4QF`__HEcH)<Df0H0D/=!'C2%?pB4baeARo<M@KBnFra,\4?2e(1>?Y50=TV],=8l5%<E)rr
+;Z]io;>j>k:]F2f:&dod9DhE]8cD9V8,YpT7J0(E6hNeC6%T&es1J@Cqq9!'^pC8KXK8J(Wi2hn
+VZ*D;VP9fYTV%mKSXc4>S!]S2R$X,(P`q;nP)kT^Mi3FKMMmFNM=uc$M>opA6i0:O7K5jU7t+!#
+8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\
+P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*9h;@/LioB+^k32'o
+lKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$SH&9]rr)ior;6Njs7uZhs7ZNerq/SLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$`QJYcb+/WMcU]84H6F:ARoa;Yj8d;#!of;#3rf;"mic;#=&e;#`QT
+3rV5;3rW:K>5q_.>$5!1=RoVn=T2J&=Sc)!<rH+s=T)=n=SZ#6CM[j*DJsK6EH6,BFEMbNGBeCZ
+H@(&=I0"eHrdY'$JqEuSs+LE+rJ(<,reU$"reUQ/rJ(?+!/1<'!J5n%J1?%tIXQWlH[C'bH$FOW
+G'.qLFE;JBEH#i6DJa6,CMR[!BP;$jAn>OaA,]p<@:9(A!FB(2>QS,5>5hY+=BAT'<WZ9#<;f_s
+;Gg<i;#a>k:Adid9`@]_9)_E]8GPdS7f5^J7/94C6Mj&%WiW>*Yd:^F\$roZ]=ktq_SjI9b08/X
+dF6Xtg>(QBioB1alKmm+nFQ>Iqu$HmJcC<$mJdRKQ#L;>>?P'.<**-"<<?3&<;oer<rQ+t;Zous
+;c6Hk;%uo);,L4f:f1(c;,U.a:JXe`;,C-`;#F2i;ZB)_6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\P*D9"R@Bb=TVA6Y
+Vl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*9h;@/LioB+^k32'olKmm)mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcV,G`AVrX1.u;rji'=rjVm8qmHI4n$W,$pTse'r3?4+
+s0;Q^s,6l8qi1Tprl=rXs2jlTprNodbKS5UcHaeadaQ_Cec42'e^i='fCRYpf)XD$ebmqre,Ibr
+d*M^:,0e?UCi+'-DfB]9EcZ>EF`qtQG^4U]H[L6iIXcitJ:W<(rdt9*Kn]M\reLN0qhaj#qhb<.
+s+gT.s+LH+re(6&!.k-"%Y&qUI=-BgH?sj]GB\4QrcAHfEcH)<Df0H0D#S2RC2%?pB4h-S$Y3aV
+@UW\Q?XI,G?2e(0>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Mer_3>bqb$iZr^clUr'pWRogJRB
+p-SUAJcC<$])OVboBtr/kiLmdioB"ThVHuAgY1?5f%&9uda?@bbfe8Wc-+,H`PTR2^V%(c\$i]Q
+[^WcUp9se+s$HZOr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?=.,M@qB4aBPM=!
+DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa7])S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SsO9aihoR
+cHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*?
+s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcUtB5i?ML5l(jp5Sd)qMX<irJL]6Mtq2hD>n>OC\sIb
+R/WHLR/WKTR[]iHSbSfVTDY;ZTD5#TTDbA]TDkG]SH57MqjJUCD/O60E,fl<F*)MHG'A.TH$Xd`
+I!pElIt*!!JV&LQK*$^[L&Qi+L]<2-M=HK#M>i>2L]3&.K`Hf*KE$N'Jc:00IsufoI!^3dH?jaZ
+GBS-.F:!#/EH,r9DJj<-rbD[PBkV0mB)Z?LA7K(X@:<PN?X@&Er`fJ.>5h\)=9)G%<rZ2"<;ohr
+;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjS7f>dK7/0.C6Ma!!s+13art+YH`4imkY-"e,WiW1uVkp9i
+V$!NfUS@a\!M>q^RhM6XR$j>.Q^*f!PEM)iNJrdRMMhCk!K)a-M"uo-6N':L7/o^U7f>i+84cBF
+8kVfN9heAY:f("e;cHat<`iL.>?kH??X[DRAS#LfC27X'DfKf>Fa&(VH[UBoJqJc3M2I7OO-,Ti
+QC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`Q$!@bKS8Wd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcU]84?3E:/^sfq,6o`r_WAes%rVhr_W>dr)!;eqb[2N
+pcAFWr)rr$!*Snsr)ru#oNCojp/h)mrE&Vnqc=kUD/O60E,fl<F*)MHG'A.TH$Xd`I!pElIt*!!
+JV&LQK*$^[L&Qi+L]<2-M=HK#M>i>2L]3&.K`Hf*KE$N'Jc:00IsufoI!^3dH?jaZGBS-.F:!#/
+EH,r9DJj<-rbD[PBkV0mB)Z?LA7K(X@:<PN?X@&Er`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k
+:Amod9`Ic_9)_E]8GYjS7f>dK7/0.C6M`u"Xfen6ZaI6N\@T;c^VI_(`Q-*Dc-OeceCN=.h;7)L
+jQ5Xllg=-1o_/+Xr;M9IJcG-;'#KB<@9m)>=&r=&=B/C%<`E!rqc3SnrDEVkr_WYnr_X&$:f("d
+:Jjq`:/=[a:]OAd;#F2i;ZB)^6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!^lH
+@Uit\B4u$qCi402EccGJG^=^bIt3-'KnbGAN/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm
+_8=12aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zj
+rqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcS(FcN>tWj;K4"M)%P\$tt;s0_g4rjDa4!4D^2q6Tq'
+rNZ:+r3?$UrJgitrl4lV"j"a*aN;Quao]]-b4s'cb0/#Qc-FY^dF-MCeG7Ypf)OA$fDsOuf`0P'
+f)F2#eC4BGs3ptq!R]9nc5t6SDJjB3EH-#?FEDYLGBeCZH@(!dI=6QoJ:N3%K)UB'KSBAZ!f)Sf
+r/(H2rJU9+rJUZ4rJCQ1s+gT.s+LH+rdt6'Jc:0UIsufoI!g9eH?jaZGBS+NFE;JCEH,r9DJj<-
+CMR[!BkV0mAn>OaA7K(X@:3JM?X@&Er`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amod9`Ic_
+9)_E]8GYjT7f5^J7/0.B6Mj'"s+13`s!Ia=na5W*k2k^aj5JnPh;$iAg">!1f@AC!da?@bbg"DY
+cHF8J`W!a\^V%(c\$i]P[f3f1[edK46N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL-
+>?kH??X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-,TiQ'du/S=ZCIUnsufWiW>+Z*UgG
+\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^
+s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcRqATE6LKo>bepl5'-pl"Bo!/pf5pP\f_rbV^QR$dc;
+m$Ra<r0[JO!h,UKrgiPMrh&qVr1EqZs.B:^rgj(Zr0mY')K0S7EH6,BFEMeOG^4U]H[C-gI=?Zr
+J:W9'rdt6)L&H`-LPUcaM>rJ3Mt;o+MuJV4M>rD3L]3&.K`Hf*K)pRTrdZeSIXQWlI!^0cH$FOW
+G'.nKF)l;@EH#i6DJa3*CMIQtBP;$jAS#C_@q&nU?sm>K?=$q:>QJ&4r`T8'!*B/#s&K(ur_rhp
+s&&_ks%iYirD!8bs%E5]r^m)[qFCKRr'g9Hpd=^@qa#f5JcEOc#3*hH]=5,Lri?4%X/W#qV?*Nj
+rhC(!TV7sLSXZ(;R[BJ1R?s8*Pl?jLP)kT]MuJV6MuSY7M=uc%M>fj?6i9@P7K5jU7t+!#8P2TJ
+92&&S:/=\_;,U=l<E<.&=]ns6?!^lH@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@N/`m\P*D6!
+R@B_<TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(
+mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]"Vp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcR]7Rg!D:Jgmdr)2`U!)WVir_W>dr)!>fpJCKCs&o>'
+r)ru%s&o)"!a/]1r)ru#qcNo&r)r_qp/h)mqcEVrpfIK5)K0S7EH6,BFEMeOG^4U]H[C-gI=?Zr
+J:W9'rdt6)L&H`-LPUcaM>rJ3Mt;o+MuJV4M>rD3L]3&.K`Hf*K)pRTrdZeSIXQWlI!^0cH$FOW
+G'.nKF)l;@EH#i6DJa3*CMIQtBP;$jAS#C_@q&nU?sm>K?=$q:>QJ&4r`T8'!*B/#s&K(ur_rhp
+s&&_ks%iYirD!8bs%E5]r^m)[qFCKRr'g9Hpd=^@q`ug<Z*UjH\%'#\]YD4t_o'L8b08/XdF6\!
+g>(QBiT'"^l0I^'n+-)Dq>:*hrdk*#s6osuXF"Md>$+m.<`W:&<EE4%r_jt?<)lmt<)Zap;c6Ij
+;GU.f;,U7g;Gg7e;,L+d:JOY\:]4)i;YErb;?'Pn6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e
+;cHat<`iL->?kH??X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-,TiQ'du/S=ZCIUnsuf
+WiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DE
+rq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSgFH*)sW3Q93s1/0>!4Vg5r3u^7s0Vp8Za981qQot&
+riuC,qQ]^P!0-rtrPnZRs2Y2^pr`9O$HgQ9bg"GZd*^:jrm^\ms475%!nc,Vrn%5(rRh/%!7q/"
+!n>]JrR:hrrmChpd/M</DJsK6EH6,BFEMeOG^4U]H[L6iIXZcsJ:W=OK)pXZreCH.!/UT1s,-f6
+qMb--q2G?3s,-c3!f2Vere;kUKS4u1Jq8K'J:E#rI=-BgH?sj]GB\4QFEDSEEH,r9Df0H0Chmg$
+C&VcQB4b^dA7K+Y@UW[D?O'nC?!LW=>?_#/!a&N*r`9&!!*&nqs&/kor_WVjr_EDds%NDbqb$iZ
+r^clUrC6]RoL/LBog8OAJcC<$^Afq[n*K?(jlGL^j5AkPgt^Z<g"G!/f$r0sdEp1`bg"DYcHF;K
+`P]R0^V%(c\$i]P[f3f1[edK46N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL->?kH?
+?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-,TiQ'du/S=ZCIUSXleWiW>+Yd:^F\%0,`
+^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8N\UjQ5Oel07L!m-X6@mfi4No()DErq-?dp\4[^s7u]k
+r;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSg@rd!MKST>_p5T$0pl"Bos,6l6onrfep1s_Grg*VP
+qj6Z:qj7;Lrg<eUS,JlHT)PAVT)5/ZT)YG^T)P;\SH#&tRVm%_EH-#?FEDYLGBeCZH@($fI=?Wp
+J:N3&rdt6)L&Qi,LB*//M>rJ4Mu&D+NVSP5MuS\5M#rKgL]3#WKnP,3K7\Z*J:N,uI=6KiH[:!`
+G^"@TF`__HEcH)<Df9N2D/=!'C2*Z\$>3s^ARo:\@U`bRra,n:?!U]?>?b;1=TV],=8l8#<<-"s
+;u]bq;>sDl:]=,f:&dod9D_?\8cD9W8,YpT7J'"D6hNeC6%T&es2+dAfuLhCZ`gR7Xo>=GW2HMj
+Vl$;dU7n9QTV7pJSsu1<R[BJ1R@'A,P`q8oOcPK\MuJV6MuSY7M=uc%M>fj?6i9@P7K5jU7t+!#
+8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lH@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@N/`m\
+P*D6!R@B_<TV8-WVl6VsXfnt8['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)KioB+]k3)!n
+lKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSg6q0aA:/1Xbr)2`U!)WVir_W>dqb[8fohb9ArE9)$
+rE05+>?Y50=nl1r=oDJ"=oMV(=nYtl=8>tp=8l;&='59")K'J4EH-#?FEDYLGBeCZH@($fI=?Wp
+J:N3&rdt6)L&Qi,LB*//M>rJ4Mu&D+NVSP5MuS\5M#rKgL]3#WKnP,3K7\Z*J:N,uI=6KiH[:!`
+G^"@TF`__HEcH)<Df9N2D/=!'C2*Z\$>3s^ARo:\@U`bRra,n:?!U]?>?b;1=TV],=8l8#<<-"s
+;u]bq;>sDl:]=,f:&dod9D_?\8cD9W8,YpT7J'"D6hNeC5qB7I[C*HQ]">\k^r""-a2uNLcdC1k
+f@ep7hVdAQjlYgnm-aE7p%J4Xr;D3HJcG6>%Hj4$@p3/?=B/C'=B8K%<W5tt<W5r&;H$On;H$Ik
+r_X8*;,U7h;c-@f;,L+c:JOY\:]4)i;ta&c;?'Pn6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e
+;cHat<`iL->?kH??X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-,TiQ'du/S=ZCIUSXle
+WiW>+Yd:^F\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8N\UjQ5Oel07L!m-X6@mfi4No()DE
+rq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSgEJU3cW3ZB5"M)%P\$u4BqR6O7[C#_8qm?4+qQg%(
+qm-+(s0D<VqT&KQqT&WWs2k,[ouRZcbKS2TcHjkbdaQ[peFqDmf)!u"f\+sVfE'UTrm_"urR:bq
+,Lb)hdEp0VE,fl<F*)MHGB\:WH?spcI=6QoJ:N3&JqJ]/L&Qf.LPUccM>rJ5Mu8P5NW"n3O8Y+<
+NVnb8MuS\6M)'mBLPCP;KnP)2JqAQ(J:E#rI=-BgH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$BkV0m
+B)Z?BA7PUJ!F]C8?NFJ=r`fM/>$Co.!a&N*r`0)#<)ifp!`DlmrD<Mis%`Jds%NDbr(?r[rCHcT
+rC6]RogJRBog8OAJcC<$_>c.coC)#0kiLmdj5](Sh;$i@g"G$0f[\F!dEp4bc-4DVcd'bU`l5j3
+_S<an\$u=E!k5\Kp9sh,r^-QNr'^QRs$lrW!_>mSr^qW49MJ5V:Jakb;H$Lo<`W=*=^,-:?=.)L
+@q9.`BPD6uDJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T'S"-(CTqeE]W2cr$YHY=>[^WfY]Y;.s
+_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNV6rlg4$,n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSg@W-XFK8KA`pl531pl"6ko8EWb!,_LIpm:uG!13&>
+qj7;Lrg<eUS,JiWSai<NTD"lSTD>)WSKFAkDK'T8EcZ>EFa&%SH$Xd`I!pElIt3'#JqAW-KSBD[
+!f)Sfre^Z4s,6f6rf-l:pQ,95rf-i7s,6o7reWCdLPLV=KnY24K7\]+J:N,uI=6KiH[:!`G^"@T
+F`__HEcH)<Df0H0Ci!m&C2%?pB4h-S!G#^>@KBnFra,\4?2e(1>?Y50=TV],=8l5%<E)rr;Z]io
+;>j>k:]F2f:&dod9DhE]8c;3V8,YpT7J0(D6hNeC6%T&es2G!Zo?kLr]X4oGXK/A$WMcVjV5C)d
+U8+HVTqA!KSt2DNRK8hDrg=CcQ'@JrP*(fcN/NOMMi*FMMM_%_qMG2<rBpKNs$crWrC6o[8P/nR
+IS3@/9hnJ\:f1+h;cQk!=BSd2>[:ZC?t*VVAS5[jCM[m,EH6/DGBeF\I=?]uK8#&9M2[FTOHPin
+Q^O>5StMdPUo1/kXKA\1ZF%'L\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYajl0@U$
+mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSg6q0g@:/:^crDMiV!)WYjr_W>drD<Dfo2,*@qH<_u
+r`K>,>?b;/=o)=t=oDJ"=oMV(=nYtl=8>te<ul0tEH-#?FEDYLGBeCZH@($fI=?ZrJ:W<(K7ei2
+re:K0Lku%es,-i7r/CW7rJpW5rJpl:r/CZ6s,-f415L^@L5(D9KS+o/Jq8H&IsufoI!^3dH?jaZ
+GBS+NFE;JBEH#i6DJa3+CMR[!BP;$jrac+@A,]p<@:9(A!FB(2>QS,5>5hY+=BAT'<WZ9#<;f_s
+;Gg<i;#a>k:Adid9`@]_9)_E\8GYjT7f5^J7/0.B6Mj%uZa@0M]">Yj^qmq,`Q--Fc-Obdf%A^2
+h;7)Kj5oLilg=02o_&"Tqu$GEs+14?rs[)/D.$dT=BJX+=B8H$<WH+u;Zg!!<)ifprDEu":f1(f
+;,C.f;c3Nj!)`_ks%`Gf!)rSfr)*Jlr^-QNr'^QRs$lrW!_>mSr^qW49MJ5V:Jakb;H$Lo<`W=*
+=^,-:?=.)L@q9.`BPD6uDJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T'S"-(CTqeE]W2cr$YHY=>
+[^WfY]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNV6rlg4$,n*fc9o'uhQo`"Lbp@n=\
+q#C0iqY^6ir;QZerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgE/'^XX0;K4!k>_KqR670!k,MDla-Joqm$%(qm$+*
+s,6o9s,Ho7prE9Oq8`NVs2k/\ouRZcbKJ,TcHjncdaQ[peGdtueG7W"f%8O)f%8O+rn7;'!S>p%
+eH"+te,IiCe'c[lDfB]:F*)MHG'A1VH?spcI=6QoJ:N3&K7ei1Knb>;LPYqd!fDnorJ^c9rf6c7
+r/g]7rf7#<rf$l8s,-f4!JlO1L&m!]rdtN/JUi9#IXQWlHiA='H$FOWG'.nKF)l8?E,TW3D/B2e
+"_qabBP1rVAIE$Y@U`bS?sd8I?=!P8#?tA8=]nj/=8c/$<E)rs;u]bq;>j>k:]F2f:&dod9DhE]
+8cD9V8,YpT7J0(E6hNeB6%T&es2=p@rq5dJlK\B1/`YpNi83;FgY1B7f\+g*da?Ijcd0k[bg"GY
+bfIfC_na.(]stP\[^NZR\%&p@[edK46N':L7/fXT7fGpX8,u6\8q'E,9heAY:f("e;c?[s<``F,
+>?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NhQ'[l-S=ZCIUSOfdWiN8*Yd1XE
+\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X60n*ol<ncA@Srq-?dp\4[^
+s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh9)&&Qp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSg@;U4=KSb\Jr/UQ3r/CE/jbiSdokaDir0@>Lm$R[:
+rg<\Q!LfMVS,f,MT)PAUT)>5VT)G3'DfB]:F*)MHG'A1VH?spcI=6QoJ:N3&K7ei1Knb>;LPYqd
+!fDnorJ^c9rf6c7r/g]7rf7#<rf$l8s,-f4!JlO1L&m!]rdtN/JUi9#IXQWlHiA='H$FOWG'.nK
+F)l8?E,TW3D/B2e"_qabBP1rVAIE$Y@U`bS?sd8I?=!P8#?tA8=]nj/=8c/$<E)rs;u]bq;>j>k
+:]F2f:&dod9DhE]8cD9V8,YpT7J0(E6hNeB6%T&es2Y."jNY]V\?`<?XfAD%WMl_mVPU,bU7n9R
+T:VXFS=Q1>S!ob4R@0G/Q'@JrOcb]bN/NOMMi*FMMM_%_qMG2<rBpKNr^HiVr^ZuZ!(m/^IS3@/
+9hnJ\:f1+h;cQk!='8[1>[:ZC?t*VVAS5[jCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPinQ^F84
+StMdPUo1/kX0&S0ZF%'L\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$mI'H3
+nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh8GDiOp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSg77KjA:/:adr_hrWqG?rarD<AepJ:icrD3Jiq`=[9
+s#TpXr)ir$!*]A+qcWf"q-!Mqs&o>)r`SqspK./mnQ-lPE,fo>FEDYKGBeCZH@($fI=?ZrJ:W<)
+K7no3L5(J=M#N54MMmDkN;nn:Nqe\5OSFn9NrP+<N;nh9MZ/G5Lkkta!JQ4+K*d-\J:N,uI=6Ki
+rd#0%G^"@TF`__HEcH)<Df0H0D#S2RC2%?pB4h-S$Y3aV@UW\Q?XI,G?2e(6>?Y35=]ed-rDiu"
+<)iiqs&/korD<Mis%`Jds%NDbr(?r[r^ciTrC6]RogJUCog8L@.CZgt]"Phm_8=+/`lZEJcHt"i
+f@ep6hV[8NioTCgm-a?5oChtUqu-MFs+14@rti"hB4+kE='&L+<`W4$<`E$s<E3!u;cN`ps&'%u
+;H$@f;,R<js%rqu;,C%a;>s>l:/Ca`!)iMer)*Jlr^-QNr'^NQs$luXs%!,]r^qW49MJ5V:Jakb
+;H$Lo<`W:)=^,-:?=.)L@q9.`BPD6uDJsN8FEMePH@('hJ:W?,L5:\ENK90aPa.T&S"-(CTqeE]
+W2co#YHY=>[^WfY]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4$,n*fc9o'uhQ
+o`"Lbp@n=\q#C0iqY^6ir;QZerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpiGHnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcY",WMcSgDh=.LXf8kA\@8sA[f*Z:[^EL0ZN7A<rNc7(qQg%(
+s0;X2rj)K\rf$l:repisr5\NNpW*<T!6P/]p;m<WrlYJhcHjncdf._qeGe"ueG@_mecOIUg&0J'
+f@KrO!7^trrm^ts)K9\9F*)MHG'A1VH?spcI=6QoJ:N3&K7ei2re:H/M#N54MMmDlN;nn;Nr4t;
+OReP4OSt7?NrP+;MueioreWmrLPLV=KnP,3K7\Z)J:E#rI=-BfH?ja[GB\4QFEDSEEH,r9DJj<-
+CMR[!BkV0mAn>OaA7K(X@:3JM?X@#Dr`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amod9`Ic_
+9)_E]8GYjS7f>dJ7/94C6Ma!!s+13hru^q&m-<isjQ5F\iSWJHgtUQ8g"4g*e'cXkd*Kt\bKKn1
+'$\M<`P]L.^V.1e\$i`S[^N]Tp9sh,r^-QNr'^NQs$luXs%!,]r^qZ59MJ5V:Jakb;H$Lo<`W:)
+=^,-:?=.)L@Us%_BPD6uDJsN8FEMePH@('hJ:W?,L5:\ENK90aPa.T&S"-(BTqeE]W2co#YHY==
+[^WfY]Y2(r_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4$,n*fc9o()DPo`+Rcp@n=\
+q#C0iqY^6ir;QZerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi8CnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcY",WMcSg?u0q7KSKDbpl531oS_skmu-jTp6Y`Ds-N)>qj7;L
+rg<hVS"'DI!1iYOrh&nUr1EeVs.('IEH-&AFEMbNG^4U]H[L6iIXcluJV&N,KSBD[!JcL1M#rQm
+MuJ\8NW5%:O8b73Oo:C?O8k7?NW"e:Mi.Lj5_t2NL5(D8KS+o/JUi9#IXQWlH[:!`G^+FVG'.nK
+F)l8?E,TW3D/=!'C2%BqBP1pgARo=]@U`bR?sd8I?![G7!F&b,=oVS(=8l8#<W?%t;u]bq;>j>k
+:]F2g:&[id9D_?\8cD9W8,PjT7J'"D6hNeB6%T&es2k9Yh9*UP['6[7XK&>#Vl6MjVPU)_U7e3Q
+SY,nP'qCb_R[KP2R[BG.Q'@JsOcb]bNJiYmM?AcoMM_%_qMG2<rBpKNr^HiVr^ZuZ!(m/^InNI0
+9hnJ\:f1+h;cQk!='8[1>[:ZC?t*SUAS5[jCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPinQ^F84
+StD^OUo1/kX0&S0ZEq!K\[oGe^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYail0@U$mI'H3
+nF?)?oDeI_o`Fj]p\ssfq>^<hqu6NmrUg)?s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi8CnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcY",WMcSg7R]j@9MPLbs&/Vh!)W/^r)!/crD<AepJ:icr_WPh
+"?8D%3]d*tp0%>rrE0,(r`fD+r)rr$s&oA(rE9)$!*T;'r`T8)r`Sqs!`rE'r)Wo$=8H%l<ukCE
+=)`/!F*)MHG'A1VH?spcI=6QoJ:N3&K7ei2re:H/M#N54MMmDlN;nn;Nr4t;OReP4OSt7?NrP+;
+MueioreWmrLPLV=KnP,3K7\Z)J:E#rI=-BfH?ja[GB\4QFEDSEEH,r9DJj<-CMR[!BkV0mAn>Oa
+A7K(X@:3JM?X@#Dr`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GYjS7f>dJ
+7/94C6M`tq]">Vh^;.V'`5]m@bK\A\eCN:+gYL`EiSik[kN_F%nac>Gq>1$fJcC<$oD]6iTQOgO
+?!(-.=BJO%r`'#!;cEWo$WC#%;H-Oj;Gp@f:]=5k;?p&s;c-@f:Jq*e"&;Wg:]4)i;YErb;?'Pn
+6N':L7/fXT7fGpX8,u6\8q0K-9heAY:f("e;c?[s<``F,>?kH??XR>PA7]CeBkqO&DfKf>Fa&(V
+H[U?nJV/Z2Ll%%LO-#NhQ'[l-S=Z@HUSOfdWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&Td*^=le^rI-
+g>(N@i8EVTjQ5OekiqBum-X60n*ol<o(2nRs7HHep\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpiAFn*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]t:hb[^<BGYcY",W2HJeD17M>Wi3G;\,<Z7[J.*1[C#\7r3H:-rNc1&qQg%(
+s0D[2rj)R1q2G?5!li:$p;['Ms2OcQs2b5^rlXrVs2tAb"3f':dJhPoe,Ikrec""pec42#ec+,"
+fDO;$f)XD$eH"+te,IksE>!;6FEMbNGBnL\H[L6iIXcluK)UB+KS>/8LPYqd!K)g7N;nn;NrG+=
+OT1I0P5^UDOSt7?NW>(<N;ne9MZ/GhLkg_>KnP,3K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i7
+DJj<-CMR[!BP;$kAn>OaA,]p<@:9(A#@:\A>[1K;>5hY+=BAT'<rZ/"<;fbq;ZBVn;#a>j:Amod
+9`Ic_9)_E]8GYjS7f>dJ7/94C6Ma!!s+13ks#']EnEK6$jlYU`iSWMJgtUQ9g"4g+e^MsodEg+_
+bfe2RcHa\Ta2Gj1_S<ao\$rcR\@/iUosXb,rBgHMqaCHQs$luXs%!,]r^qZ59MJ5V:Jakb;H$Ln
+<`W:)=^#'8?=.)L@Us%_BPD6uDJsN7F*)SMH@('hJ:W?+L5:\ENK90aPEhK%S"-(BTqeE\W2co#
+YHY==[^WfY]Y2(r_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4$,n*fc9o()DPo`+Ua
+p&Ojdq#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi8Cn*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]t:hb[^<BGYcY",W2HJe?#+J/K8';bpPo33m>LCimYh+(!,_LIo9]EAs-N)>
+qj7;L"dtgIR[]fGS,f,MT)PAUT)YG_ScGDYT)WdCEccDGG'A.UH?spcI=6QoJ:N7NK*?p^L5(J>
+reUZ5MuJ\8NW5%<O8b7@OmJ81OoLOAO8k4?NW+n:MZAY6M):$DL5(D8KS+o/JUi9#IXQWlH[:!`
+G^"@TF`__HEcH)<Df9N2D/=!'C2%?pB4kgfARo<M@KBnFra,n:?!U]?>?b;1=TV],=8l8#<<-"s
+;u]bq;>sDl:]=,f:&[id9D_?\8cD9W8,PjT7J'"D6hNeB6%T&es31KYpsd:!\?iHCXK8G%W2QVk
+VPU,aU7n:[TDtJ_Sc5,YRK/cRQj]4EP`q;nOcPN^Mi%Fjs,-o8M=uc&M>]d>6i0:O7K5jV8,l*[
+8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZB4u!pCi402EH?5FG^=^bIXm!%KSG;>MiEdZ
+P*;/tR%'V;T:r$UVPpMqXfnt7ZaR?R]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(sm
+lKdg(mdKW6nac8Bs7H?as7QHerqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpiAFn*f]3m-O'&l0.9ljQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB_ns4(]t:hb[^<BGYcY",W2HJe779[?9hePa;YO&e;"IQ^;"mie;#=&`;#X8j;#=#g
+;#WES3W;)=3V-DP=Su;)>$G37>5DD$>5qb"=T;P(=T)A(>$5#$=9)G%<rH+p=S5`1=E/>$FEDYK
+GB\=YH@($fI=?ZrJ:dcQ"b_SaL51TaM#iKlrf$l:s,R)>rfI/Bm#q@1s,d2?s,I)=rf$l8!/gc4
+1l-pAL4t;6K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9Df0H0Chmg$BkV0mB4b^dA7PUJ!F]C8
+?O'nC?!LW=>?_#/!a&N*r`9&!!*&nqs&/kor_WVjr_EDdr_3>bqb$iZr^clUr'pWRoL/LBog8L@
+-G7%+^qmq+`Q60Dbg4Ybe^rL/gtglGiSrt^l0Ia*nalDJq>:*hJcC<$o`#-FODnZ8=]bT)(KXO7
+<E)ss;H$Uq<)Zao:fL@k;Gg=g;#X;o:f1(fr_Wbo:/4[c:]F2i:]4)i;>*ia;#jMm6N':K7/o^U
+7fGpX8,u6\8q0K-9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]CeBkqO&DfKc<FEVnTH[U?nJV/W1
+Ll%%LO-#NgQ'[l-S=Z@HUSOccWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&Td*^:ke^rI,g>(N@i8EVT
+jQ5OekiqBum-X60n*ol<o(2nRs7QEc!;HKfs7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpiMJn*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJeC4(u6V5h#6[^NTO[.^m-[.gp!ZM1X"ZMh'.ZN%91
+ZN%92[.fOL`r!aJa8a6\aoBNYaU-,3b0%oObg+P^rmCeqrm^qtr7(Vo!7q/"!S5m%f_sD%f)F2"
+eG[i>e8]MMFEMbNGBeF[H[L6iIXcm!JqJ]/Knb>;LPUeDMMqIms,@#=rf@)@s,m5Br0-l>r0.&A
+s,m>Crf@)>!0-u:!K2j7M):$DL5(D9KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D/=!'
+C2%?pB4baeARo<M@KBnFra,\4?2e(1>?Y50=TV],=8l8#<<-"s;u]_q;>j>k:]F2f:&dod9DhE]
+8c;3V8,YpT7J0(D6hNeB6%T&es2t@"p@@S7lKI?kio/kRhV?l>g=P!/f%&6td*U(ac-4DTbKeDX
+b/_N?_SF"&]XbM\[C3TR[^Wa>[emQ36N0@L7/o^U7fGpX8,u6\8q'E,9heAY:f("e;c?Xr<``F,
+>$P<=?XR>PA7]@dBkqO&DK'T:FEVkRH[U?nJV/W1Ll%%KO-#NgQ'[l,S=Z@HUSOccWiN8*Yd1UC
+\%0)_]t_A"`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]
+s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi>En*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJe?"e8-JVB,ErJ^f9rJgi9m>LCimYh+(s,HtoqeZ7t
+oU#H@l^7U:rg3\RrgNkVrgWtZnXfcQ!20%Ws.B(X+E;FCFEMbNGBeF[H[L6iIXcm!JqJ]/Knb>;
+LPUeDMMqIms,@#=rf@)@s,m5Br0-l>r0.&As,m>Crf@)>!0-u:!K2j7M):$DL5(D9KS+o/JUi9#
+IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D/=!'C2%?pB4baeARo<M@KBnFra,\4?2e(1>?Y50=TV],
+=8l8#<<-"s;u]_q;>j>k:]F2f:&dod9DhE]8c;3V8,YpT7J0(D6hNeB6%T&es3CWelHR>`[Bm'=
+XfSS&W2HPjVPKu^U7\-OT:VXFS=5t;Rf8`TR/`KcQ'@JqP*(lfNfAsRMM[4KMi!;aM#3&,6N0@L
+7/o^U7fGpX8,u6\8q'E,9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]@dBkqO&DK'T:FEVkRH[U?n
+JV/W1Ll%%KO-#NgQ'[l,S=Z@HUSOccWiN8*Yd1UC\%0)_]t_A"`5Td<b0/&Td*^:ke^rI,g>(N@
+i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi>En*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJe779X<8kr8^rD<PkrDEDfp/1Z_q,./gqbQu`r_NPj
+qG7,fr&F^:s#L-?nQG`kr`T8)!aAi3qH<f$!*T"tr`K5'qH<Jn!*B,"r`9)%r`AqupfASXEcZ>F
+G'A.TH?spcI=6QoJ:W<)K7nr5L51P?M2@+Jrf$l:!07&>s,d8Cr0$uApQYT>r0%)Bs,d5@s,I)=
+repl9MZ/GhLkg_>KnY24K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa6,CMR[!BP;$jAn>Oa
+A,]p<@:9(A!FB(2>QS,5>5hY+=BAT'<rZ/"<;fbq;?0Sm;#a>k:Adid9`@]_9)_E\8GYjT7f5^J
+7/0.B6M`to^VI_(`5]j>b082YdaZk$g=tH?i8N\Wk32'rmdK`<p@nF\rVhBJJcGEC(V>93?sHi:
+=&rF'<)lpt<Dugo<)cdo;uBN$;,C+f;,C.g:f1(fr_X#!:/+S^:JX_\:J^sd!DcSd;#F/j;Z&l\
+6i0:O7K5jV8,l*[8cD>292&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZAnYmoCi4-0EH?5FGBnO`
+IXm!%KSG;>Mi<^YP*;/tR$sP:T:r$UVPpMqXfnt7ZaI9Q]"G_k^r"%/a2lEHc-F\`daZh!f\,!6
+h;7)JioB+]k3(smlKdg'mdKW6nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh9)&&Qp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+cd'eYaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJeBR5`7VQ.)5rjD@)q6T_!pTaV$qm$1,rj2X1s0M^3
+!4DT\rl+EIqo&QToZ%'TaiV^#aoBKkai_fNc-FY_dF-Lmrm^qtqpbAjqUbburRLqt-.?mUFEDYL
+GBeCZH[L6iIXcm!JqJ]/Knb>;Ll$tGMMmFPNK0%uNrkE*Oo:ICPQ$g8Q2[$IPPpXGOcY\(O"cTR
+NJrgSMi*@JLkg_>KnY24K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa4hCB\HeBP;$jracIJ
+@q&nU@:3GL?=$q:>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVm;#a>k:Adid9`@]_9)_E\8GYjT7f5^J
+7/0.C6MWous+13orsn_klg!`ujlGCYi83;Fg]#n+efrSmda?Ihcd'eYbK@uPbg"5J`PfU/^qRIm
+\$rcR\@/iT\+[9-\,8Sl6i0:O7K5jV8,l*[8cD>292&&S:/=\_;,U=k<*!%$=BSg4>[CcF@U`kZ
+AnYmoCi+'/EH?5FGBnL^IXm!%KSG;>Mi<[XP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P]"G_k^r"%/
+a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg'mdKW6nac8No*+dZp%J+RrqQNhs8)Zjrqu`n
+p&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8GDiOp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+cd'eYaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJe?"e8,J;*o\qMag"mu$Oks,?r:!07%prb_XNqj-l@
+qj%5Kl^7X;rg3\RrgNkVrga"Znt,iQp7D;VqOSsQF*)MHGB\:WH@($fI=?ZrJV&N,KS>/8LPUeD
+MMd=NN/`jXrf7,BOcfU*s-*GHn!3m:rfd;D!g/S+rf8anNK&mUMi3ILM26qAL4t>7K7ec,J:N,u
+I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-rbD[PBkV0mB)Z?LA7K(X@:<PN?X@&Er`fM/>$Co.!a&N*
+r`0)#<)iiqs&/korD<Mis%`Jds%NDbr(?r[rCHcTrC6]RogJRBp-SR@JcC<$d/Po[ai;B.Z*(10
+X/W(rVl$;fV5'cYTq@sKSXuCAS=5n7R$a5-Q^=#'PEV5nP)t`aNJiYmMZ8V7M=uc&M>T^>6i0:O
+7K5jV8,l*[8cD>292&&S:/=\_;,U=k<*!%$=BSg4>[CcF@U`kZAnYmoCi+'/EH?5FGBnL^IXm!%
+KSG;>Mi<[XP*;/tR$sP:T:r$UVPgGpXfen6ZaI6P]"G_k^r"%/a2lEHc-F\`daZh!f\,!6h;7)J
+ioB+]k3(smlKdg'mdKW6nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8GDiOp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+cd'eYaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJe6psO<8ko4\qG@/e!)WAdqG?ubs%rSgpe^ob!)WMf
+r_N\m3]];!2uku,=o2>#=oDP"=oMS)=nYto=TMW-o2kuor)WVpr)ies,][sJFEMeOG^4U^I!pEl
+It3*%K7ei2L5(J>M2@+IMi<USNfO+"!g&P,rK@2Erfll:rfmDGrK75EOHBI&0TM-PN/W[QMM[1G
+LPCP;KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/B2e"_qabBP1rVAIE$Y@U`bS?sd8I
+?=!P8!aAi3r`K;)=',B%!``3!r_rhps&&_ks%iYir([2br_*/]r^m&ZqFCKRr'g9Hpd=aAq*?7A
+_o'L8aihlQd*^=mf\,$7h;@/Mj5oIflKdm.o(;YNqY^;Cs+14Drs/J"G\(8i=BGK&!``3"rD`eq
+!*&qrqbe;/;GU.e:f1"a;GU.f;,C%a;,C(b:JOY\:]=/k:Jpg^r)!Glr'LBMqaCHQs$luXs%!,]
+r^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)L@Us%^BPD6uD/O<4F*)SLH$XjeJ:W?+L5:\EN/j!_
+PEhK%R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0q
+lg4!+n*fc9o()hP"n_K\p@e7[q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Njs7uZh9DA/Rp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGdBR,W9YG\b8[J[E/Zi7?1ZgY3pZ2Cp(Z2_-/Zi@?2
+Zi7?2[J5[\`;[aU`rF$M`r!aT`q7:OaS![Sap6,6c-FY_dF/$Cs4%%uq:,>m"4YlOf)+)!f)4&G
+F*)MHGB\:WH@($fI=?]sJV&N,KS>/8LPUeDMMmFPNK&sZO-#HcrK@2Es-3GHqj./Hqj.,Es-3PI
+rfR>FOHBI&!KN0=N%U$GM2@%DL5(D9KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$
+C&VcWB4b^dA7K+Y@UWYP?XI,G?2e(0>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Jds%NDbr(?r[
+r^ciTrC6]RogJRBp-SR@JcC<$ci4OPo'ku1kiV!ei8NVNh;$``fHf)!e^Msnd*L"^bfn5Qc-FSW
+a2Z'7^qde#]=GAY[C3TR[^Wa>[emQ36N0@L7/o^U7fGpX8,u6\8c_RYr_7i::Jand;c?Xq<``C+
+>$P<=?XR;OA7]@dBkqO%DK'T:FEVkRH@10lJV/W1Ll%%KNf]EfQ'[l,S"?7GUSOcbWiN8)Yd1UC
+[^iu^]t_A"_o9[;b0/&TcdC1je^rF+g>(N@hr*MSjQ5OekiqBum-O-.n*ol<o(2JFp%A@Y!;HKf
+s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Njs7uZh9DA/Rp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGd>@qo*JqAl>NVnb-Mu8J2MslPkMuSb8NW5"=NVdPk
+D>BLiQi!*KQg0t<Qi<?PRJrZTS,SrXSarBOT)kOSpn%MXr159WFEDYLGBeCZH[L6iIXls"JqJ]/
+Knb>;Ll$tGMi<USNK0'\OH>V'P5gaGPl-gDQMd*HQMZsIPlHsHOogc-OT(:ANfF$s/rPUDM26qA
+L4t>7K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-CMR[!rb)jUAn>Oa@q/tW@:3JM?X@&E
+r`fJ.>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Adid9`@]_9)_E]8GPdS7f5^J7/0.C6MWous+14!
+s!dot`P&aeZEC=2XJr1tVl-AfUSFNUTq@sKSt2C@S!oe5R@'D.Q^F&&rf[hSP)t]`NJ`RMMi*FN
+M2Cq^qhb5;r^6QNs$crWr^ZuZ!(m/^!D?,c9n#i5:f1+h;cHat='/U/>[1TB?t!MTAS,UiCM[j*
+E,fr@G'A4XI"$TsK7nu8M2R=QOHPfmQ^F52StD^OUo(&iX0&P/ZEpsI\[oGe^VI_(`Q-'BbK\>Y
+dF-Opf@S^0gtgiEi8WeXjlYail0@U$m-X91nF?)?oCMVIp&F^cp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8GDiOp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGd77Td=925C_r)!8d!)WAdqb[)cs%rSgpe^ob!)WJe
+s%r\jr&Xj<s#B@JqcNc!!*]/#r`T;)p/q/onQ5cmr)WVpr)iku-ZaBOFa&%SH$XgbI=6QpJ:W<)
+K7nr5L51SAM2I4MN/`gWO,oBaOo:ICPQ-mFQ2?mFQi!*GQ2d*KPQ$^HOcY\(Nrb9#rerIfMM[1G
+LPCP;KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\&8,TdARo:\@U`bR?sd8I
+?=!P8!F&b,=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9DhE]8cD9V8,YpT7J0(D6hWkB5pF4d
+ai_fNcHjndeCWC-gYL`DioB+^kNV9un*oo?p\=U^rdk*#s7cO"gluhg>$>$1<`o?$#?Ff'<`E!s
+<;of$;Gg@j;Gg:er_X>,:Jt%e:f("d:eje`;,C%a9i"Xb:]X?hp/(Za!)i_]r^6QNs$crWr^ZuZ
+!(m/^!D?,c9n#i5:f1+h;cHat='/U/>[1TB?t!MTAS,UiCM[j*E,fr@G'A4XI"$TsK7nu8M2R=Q
+OHPfmQ^F52StD^OUo(&iX0&P/ZEpsI\[oGe^VI_(`Q-'BbK\>YdF-Opf@S^0gtgiEi8WeXjlYai
+l0@U$m-X91nF?)?oCMVIp&F^cp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8b_rPp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BFYH=n+W2HGdATWm/YGni)[.L^%ZMq-)ZM:^(ZM:^)ZMh*4ZEpmE
+[/@?3[f;?aN;pcq`;7IG`qm[R`q@CPaS*aUap?27bg"GZdF$D?e,InmeG[qseGe%tf)XD#eJiRO
+F`qtRH$XdaI=6QoJ:W<)K7nr5LPUeDMMqIm#*"Y(O-#Hcrf[;F!0mGIrg*PMnsKBBs-EVKs-3PI
+rfTR0OH>NaNfB$WN/NRMM26qAL4t;6K7ec,J:N)sI=-BfH?jaZGBS+NFE;JBEH#i7DJj<-CMR[!
+BP;$kAn>OaA,]p<@:9(A!FB(2>lS".>5hY+=BAT'<rZ/"<;fbq;ZBVm;#a>k:Amod9`Ic_9)_E]
+8GPdS7f5^J7/0.B6Ma!!s+13truh(,mcs'#jlPL\i83;FgtCE7f@SO%daHLgcHXSVb/qg*bnJ1<
+`l,^/^qRLm\@AoS[^`cR\@):DosXoer'LBMqaCHQs$luXs%!,]r^m2a9`@b1:/=\`;H$Ln<E<1'
+=^#'8?=.)K@Us%^BPD6tD/O<4F*)SLH$XjdJ:W?+L51VDN/j!_PEhK%R[]n@Tq\?[Vl?`!Y->4<
+[C3TV]Y2(q_Sa@4aND]McHjndeCE1&g"P3:hV[8Mj5]7`kNM0qlg4!*n*fc9rpg9bo_%nNp@nR]
+s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8b_rPp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BFYH=n+W2HGd=_2T$K7f'YN:`%kMZ/P6MXuc+N;nn:Nr=t;D>\2M
+D>0@eQi36LQg0q<Qi<BPRK&`URfo7PS=Q5AT)P>^T)P;WT)YG^Sf;`mF`qtRH$XdaI=6QoJ:W<)
+K7nr5LPUeDMMqIm#*"Y(O-#Hcrf[;F!0mGIrg*PMnsKBBs-EVKs-3PIrfTR0OH>NaNfB$WN/NRM
+M26qAL4t;6K7ec,J:N)sI=-BfH?jaZGBS+NFE;JBEH#i7DJj<-CMR[!BP;$kAn>OaA,]p<@:9(A
+!FB(2>lS".>5hY+=BAT'<rZ/"<;fbq;ZBVm;#a>k:Amod9`Ic_9)_E]8GPdS7f5^J7/0.B6Ma!!
+s+14#rseDA`Po6kYcY".WMuhorh^$uUS=EST:hgISY#hM$(@9LR$X,*R$Es9PR`k<OH5E]N/NOL
+MMd=JMXZH&62X(K6i0:O7K5jV8,l*[8cD<_92,=ZG>:q1;,U=k<)lt#=BSg4>[CcF@:EbYAnYmo
+CMds.EH?5FGBnL^I=Qm$KSG8=Mi<[XP*;/tR$sM9T:r!TVPgDoXfen6ZaI6O]"G_k^r"".`lQ<G
+bg+P^daZh!f@em4h;7&IiT&t[k3(smlKdg'mI0N5nc&(`oCV_Kp@e7[q#C0iqY^6ir;HTerdk*?
+s*t~>
+JcC<$ScAB^rVc`nr;6Njs7uZh8b_rPp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BFYH=n+W2HGd6q0X<9hnIY;#X5j;"mi`;#4&h;#=&`;#O/i;#*le
+;#=#g;#<9S3BHJ/qH3;kr`T;)oN;#oo2tunr)WVpr)ir")fp+DG'A1VH?sseI=?ZrJV&N,KS>/9
+Ll$tGMuJY>NK0'\OH>V(P5g^GPl6mHQN!6AR/NBOQMm*KPlHsHP!P4lOH5H_NK&mUMi*@JLkg_>
+KnP,3K7\Z)J:;opI!^0cH$FOWG'.nKF)l8?E,TZ4DJa3*CMIQsBP1siAS#C^raGn:@/aL6?=!P8
+s'#J,r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8bs%E5]r^m)[q+(BQr'g9Hpd=^@qEZ:FbKS5U
+cdC1jf%A[1gtglHioK4`kiqF"n+#uApA+R_rdk*#s7lU2_M;i6?WgK5<``:#<E3!u;c?Rn;c?Rl
+;uTZ!;c-=e;,C-g:^Klo;Gg:e:JOb`r_ESj:f73g!DZJ\;#io[6N0@L7/o^U7fGpX8,u6\8c_RY
+r_7T3:Jand;c?Xq<``C+>$P<=?XR;OA7]@dBkqL$DK'T:FEVkRH@1-kJV/W1LP^qJNf]EfQ'[l,
+S"?7GU84ZaWN3/(Yd1UC[^`o]]t_A"_o9X:b0/#ScdC1je^rF+g=tH?hr*JRj5oFdkiqBum-O-.
+n*olHncn^Xp%A%Pp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eog\TFo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2HGdTlGp\Xfo.=Zhq-.Zi@?1Zhh!'Z2_-)YlM*'Z2_-.
+ZNRS?Za@+;[K!Z=\%%BUNK*pr!5eZOqSi-IqSiHRoZ-sPprWQY#g:H9c-FY^dF.sA!n>cNrmUqs
+r7(\qrmUqurmq)#+kG2oe9#kXGBnL\H[U<kIt3*%K7ei2L51SAM2I4MN/`ksNrb?)rfR>HPa)04
+s-E\OqO$oCqj@DMs-EVK6'RRsP*1riOH5H_NfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOW
+G'.nKF)l8?E,TW3D/=$(CMIQsBP1rVAH?=OraGn:@/aL6?=!P8!aAi3r`K;)=',B%s&B%urDW_o
+!)`\ks%iVhrD!8bs%E5]r^m)[qFCHQrC-?Hq*XgAq*BT3JcF4!2>6P*l0.<lj5JqShqQr?g"=s/
+f$r0sd*L%`c-+;QbKS8VaiDB=_SEq%]Y(ea\$WTR[^N[6[K&Vk6N0@L7/o^U7fGpX8,u6\8c_RY
+r_7T3:Jakc;c?Xq<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJV/W1LP^qJNfT?eQ'Rf+
+S"?7GU84ZaWN3/(Yd1UC[^`o]]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiqBum-O--
+n*olHncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2HGdTjhqcJV8mUN;\\7MZ/OsM?&S5MXuc+N;nn9Nr4n:
+D#\AOC]]ohQhQg9Qi<<MQfa\7R0/nIS"0GJnt,iQ!1s.[qk!h[s.16QG'A.UH?spdI=?ZrJV&N,
+KS>/9Ll$tGMi<USNrG(?OHKO*!gAk5rg!MLs-NSLoU5TDs-NbOrKT[5PEV/mOcb`dO,f6[N/W[P
+M2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$BkV0mB)Z?BA7PUJ!F]C8
+?NFJ=r`fM/>$Co.!a&N*r`9&!!*&nqs&&horD<Mir_EDdr_3>bqb$iZr^clUr'pWRoL/LBog8I?
+JcC<$fDdnkaiD<,Z*(1/Wi<"rVl$;fUnj`XTV%gJSt)@?S!oe5R$X2+R@'8)PEM)kOcYT`NJi[N
+M2I1KM2LeZ!($NLr^6QNs$crWr^ZuZ!(m/^!D?,c9m9?.:f(%g;cHat='/U/>[1TB?t!MTAS,Ui
+C27[(E,fr@G'A4XI!pKqK7nu7M2R=QO-5]lQC+,1StD^NUo(&hX0&P/ZEpsI\@T>d^VI_(`Q$!@
+bKS8XdF-Opf%8U/gYL`Di8N_VjlYail0@U$m-X60nF?MK#4qK[p%J+RrV-HiqYL-erqu`np&9OB
+Sc=3~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_`[^<BFYH=n+W2HGdTgV@A9MSCV;#!o_;#=)i;#=&`;#a>j;"@E];#369
+=nl+k=oVY*=n>bo=oMM'=8Q,"=8uD%=8Z+p=8l;F='/O*FEVkPH$Xd`I=6QoJ:W<)K7nr5LPUeD
+MMmFPNK4"!!K`HCOogi3Pl?sJQN*<JR.QgDR/`NQQMm(7P`q;oP*(lgO,o<]NJrgSMM[1GLPCP;
+KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?pB4h-S!G#^>@KBnFra,\4?2e(1
+>?Y50=TV],=8l8#<<-"s;u]_q;>j>k:]=,f:&[id9D_?\8cD9W8,PjT7J'"D6hNeA5p4=pcHsqd
+e(*('g=tH@i8`nZk32'plg=33o_&"Tqu$GEs+14GrsPuVA78_G=&r=&<E9#t"]\K"<E3#s;?Kip
+;,[?is%j,!;Gg7e;,U4e:/=_ar_NPhs%iVj!DcP];#io[6N0@L7/o^U7fGpX8,u6\8c_RYr_7T3
+:Jakc;c?Xq<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJV/W1LP^qJNfT?eQ'Rf+S"?7G
+U84ZaWN3/(Yd1UC[^`o]]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiqBum-O--n*olH
+ncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTl>[NVm3?%Zi@E1ZhUj+Z2V!%Z2_&uZ2_-+Zi@E1
+[K!Z8\,No:N<"q:NW-fm_u%CE`qdUR`q.7Ma8j?\aT'B]ap?27bg"GZd*^;>e,Rntec+(te,Ikq
+ec+(teH"2"f-8erFa&%SH?spcI=?ZrJV&N,KSG5:Ll$tGMi<USNfT6_OoCLEPEc'3s-E\OrL!SP
+rgNMLrL3_RrL!VOs-EYL!L/fIOo^],rf9L.NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@T
+F`__HEcH)<Df0H0Chmg$Bk_6oB4b^dA7T1Z@UW\Q?XI,G?2e(7>?Y35=]ed-=8l5%<E)rs;u]bq
+;>j>k:]F2f:&dod9DhE\8cD9W8,YpT7J0(D6hNeA6%T&es472Wqt9FDlK@<lj5T"rh>l@1g&KYK
+eC2jod*L"^bfe/Nb08)Qa2Q!5_8*h"]t(Y_[(!KQ[^NZSn?r<_r'LBMqaCHQs$luXs%!,]r^m2a
+9`@b1:/=\_;H$Ln<E<1'=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt<6*L51VDN/is^PEhH$
+R[]k?Tq\?[Vl?`!Y->4<[C3TU]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0qlg4!*
+mdKZ8rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTj_e]It`XSN;SV"MZ&D,MXuc+N;nn9Nr"b7D#eDO
+D>ok"Qhm$:QiEBNQfa\6RK&`ZS=Q4BSarBOT)bJ]Sbo#YT-/9#GBeF[H[L6jIt3*%K7ei3L51SA
+M2I4MN/`jYO-#M'Oo^c2rg!MLs-N\OrgEbSopboKrgE_Ps-NbOrfmMKPQ$^GOc]R'7?3@dN/NRM
+M26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMIQtBP;$jAS#C_@q&nU@:3GL
+?=$q:>R4P;>$5!1=BAT'<WZ9#<;ohr;ZBVm;#a>k:Adid9`@]_9)V?\8GYjT7f5^J7/0.B6MWou
+s+14'rsd]']XY>RY-"_'Wi)blrhUC*TqS*OTV%gIS=5n9R[KP1QBml)Pa263s,m>C$'("(Mi!:K
+MMmA[M#]j>6N0@L7/o^U7fGpX8,u6\8c_RYr_7T3:Jakc;c?Xq<``C+>$P<=?XR;OA7]@dBkhF#
+DK'T:FEVkRH@1-jJV/W1LP^qJNfT?eQ'Rf+S"61FU84ZaWN3/(Yd1UC[^`l\]t_A"_o9X:aihoR
+cdC1je^i@*g=tH?hr*JRj5oFdkiqBum-O--n*olHncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTgV@@9287\;#=)i;#!o`;#=,i;#F,a:]O;i;"7?]
+;#aDh3ojH>=S#Yr>$:Dur`T5&s&T2&qcEf"r`B"uq,dPts&U=cGB\:XH@($fIXcm!JqJ]/L5(J>
+M2@+JN/WaVO,oBbrfR;GPl?sJQN*<MR/WNQRe<0KRf8`RR/`NQQN!-MP`u*0!KiKCO%#(gN/W[P
+M2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BkV0mAn>OaA7K(X@:<PN
+?X@&Er`f_5>$>'3=BJX+r`0)#<)iiqs&/korD<Mis%`Jds%NDbr(?oZr^clUrC6]RogJRBog8I?
++3`$WdaHXrf\,$7hVdAQjQ5OglKdj)nFH5Fq"agbrdk*#s82g5jI::%=BSd.<``@&<`2mr<Dugq
+;c?Rl<;oeq;$Tln;,C+d:f73g!)rkn!)NSjr_ESj:f73gs%i)\!($NLr^6QNs$crWr^ZuZ!(m/^
+!D?,c9m9?.:f(%g;cHat='/U/>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKqK7nu7M2R=QO-5]l
+QC+,1SY)UMUo(&hX0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail0@U$
+m-X60nF?MK#4qK[p%J+RrV-HiqYL-erqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTl#7BTrb3dZN7A<rj)R/!O/j)Yl:m.Yd+&/p9FY'
+rNcX4Za7$Gr3ZU7\$u=G!4i&gs,Hom"N/0r_o)Ai!6+WNpr*6Qqo8]Vq8`?Qs2k8_#g:H9c-FY^
+dF.sArmV"ueC=HGs4%%ur7(bs!7q/$)Kp=LH$XgbI=?ZrJ:`E+KS>/9Ll$tGMi<UTrf75EOcklk
+Pl?sJQ2m9MR/`TSReiNKSGAZSRfAfSQp@"(QBd`"P`q8nOcb`dO,f3YN/NRMM26qAL4t;5K7\Z)
+J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BFnfgAS#C_@q&nU?sm>K?=$q:>QJ&4r`T8'
+!*B/#s&K(ur_rhps&&_ks%iYir([2br_*/]r^m)[q+(BQr'g9Hq*XgApd'K2JcFC&"S_HSlKJ60
+($"<3hqd)Cg"P'/e^N!qd*Bt`c-4B1aVN1Hb/_K=^qde$]Y(e`[^3BN\@/lU[ICU)62X(K6i0:O
+7K5jV8,l*[8cD<_92,=ZG>:q1:f:4j<)lt#=BSg3>[:]E@:EbYAnYmnCMds.EH?5FGBnL^I=Hd"
+KSG8=Mi<[WOcu&rR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daZguf@em4h;7&I
+iT&t[k2tmll0I^&mI'H4nc&([oCW%T!VZ9dp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTjDJUI=m7ON;\\#MYN&,MXuc+N;nn8Nr"_8Nr*\j
+Q3<PAR$X0:QLU:AR/<6IQiNK?R/NEUR[]h<Sa`6MT)bJ]SbnusG'A1VH@($fIXcluJqJ]/KnbA=
+M2@+JN/WerNs1W-P*2#nrg!ML!13YOs-`nUqO@8Mq4%DQs-`hQ5aRe&Q'ISuPEM)kOcYWbNfB!V
+Mi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\&8,TdARo=]@U`bR
+?sd8I?=!P8!F&b,=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9DhE]8cD9V8,YpT7J0(E6hNe@
+6%T&es4mVtm`rnp[^<6?X/`/!Vl-DhV50lZTqJ'NSt;IBR[]_6R@*u>".>I>Pl?jJOcYY'N<>&p
+Ll)+gm>1g/r'LBMqaCHQs$luXs%!,]r^m2a9`@b1:/=\_;H$Ln<E<1'=^#$7?!guJ@Us%^BPD3s
+D/O<4F*)SLH$XjdIt30)L51VDN/is]PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU]=ktp_Sa@4aN;WL
+cHjndeCE.%g"P3:hV[8Mj5]7`k32'olg4!*mdKZ8rpg*]o`"Lap@nO\!r;]hr;6KkrVcEgJcD;@
+J,~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eog\TFo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTgV:>8kVlT;".?X;#=)i;#=&\;"7?\;#aAm;YrNO
+=oV[o=nGhn=T_c/=]kQ(nlYlos&f2#!*K2$s&f8%qH!Jpr`C(^GBeCZH[L6jIt3'$K7ei2L51SA
+M2I4MN/mmu"d"k0P*;.0Q2d-MQi3<ORK&`PS+rNLS,\rWRJiL<Q^3r&Q'@MsP*1riOH5H_NJrgS
+MM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C&VcWB4b^dA7T1Z@UWYP
+?XI,G?2e(0>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Jds%NDbr(?r[r^ciTrC6]RogJUCog8F>
+*RE-]e(*(&gYCZCi8WeXk32'pm-X93oCVeQqu$ACs+14IrsQYtBOY:M='&F'<E9#t"BJK#<)iip
+##eDs;Gp@gr_`\l!)NSj%8Thu:f'n^:esh^:JO[a:]F8k:[_-\62X(K6i0:O7K5jV8,l*[8cD<_
+92,=ZG>:q1:f:4j<)lt#=BSg3>[:]E@:EbYAnYmnCMds.EH?5FGBnL^I=Hd"KSG8=Mi<[WOcu&r
+R$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[k2tmll0I^&
+mI'H4nc&([oCW%T!VZ9dp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogJHDo()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*/e^W$p
+cd'bXaiMK@_nj+%]Xt_`[^<?EYH=k*W2?AcTkf(;UTC9cZi@?0Z1P7&Z*:I9r361*!3l=)s0D[2
+rj)R1s0V^3!4Mm9rjW'@]">WSNrP+7_>qLQ`;RUQ`;[aM`q[LQ`r!gV`qd[PaT'B\b5]Zhc-FY^
+dF.sArm^ens4%%uqp[+Gf%5+iH$XdaI=6TqJ:W?*KS>/9Ll$tGN/WaVO,oBbP*2#nPa.N"Q^@]=
+!h#LGr1!\UrLNbUrLNqXr1!_T!1EeQ!LK,OPl[,5rfTI-OH5H_NJrgSMM[1GLPCP;KS+o/JUi9#
+IXQWlH[9s^GB\4QFEDSEEH,r:Df0H0Chmg$BkV0mB4b^dA7PUJ!F]C8?O'nC?!LW=>?_#/s&]8&
+r`9&!s&Atrs&/korD<Mis%`Mer_3>bqb$iZr^ciTrC6]RogJRBog8I?JcC<$gA_WUna#H'k2k[_
+i8EMKh#>t7f@JI#e'cOecd'bXrl>\pc-48I`507*^V7@k[^NNN[JmW7\*pa*62X(K6i0:O7K5jU
+7t+!#8P2TJ9MA/T:/=\_;,^Cm<E<1'=^#$7?!grI@Uit]BP;-rD/O<4F*)SLH$XjdIt3-(L51VC
+N/is]PEhH$R[]k>Tq\?[Vl?\uY->1;[C3TU]=ktp_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]7`
+k32'olg4!*mf2_ZnF?)?oCW%T!VZ9dp]1-hqYg<jr;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogeZGo()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*/e^W$p
+cd'bXaiMK@_nj+%]Xt_`[^<?EYH=k*W2?AcTjDDQI=d'/N/[[ml\bLprJL3)s,?u;r/UT4!fi>&
+rbhaQq3D#Irg<_Pr0Hl>s-W_Nqj@DMl^.jDR[]h<SbJ]USbo#XT)bJ]Sc,/[G9qN\H@1-hIt3'#
+K7ei2L51SAM2I7NNK0'\OHG]hPE_;sQ'Rc'rg3bTR[X/Drg`qXq4@PUrg`nUs-`qUrKmVPQN!-M
+P`u*05*:qfO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH$FOWG'.nKF)l8?E,]`5DJa3*CMIQs
+BP1siAS#C^raGn:@/aL<?<piA>[(E9r`T8'!*B/#s&K(ur_rhps&&_ks%iYirD!8bs%E5]r^m)[
+q+(BQr'g9Hpd=^@q*BT3JcFU,-fiIe^9t8LXK&;"WMcYkV50l]TqS-PSXuFBS!fb8R@'>,QC!u)
+Pl?gTOckfeNfAsSLl%"HMi6tZ!($NLr^6QNs$crWrC;<-8P)NH92&#R9hnJ\:f1.i<)lt#=BSg3
+>[:]D@:E_XAnYjmCMds.EH?5FGBnL^I=Hd!KSG8=MN!RVOcu&rR$sM8StVmSVPgDnXfen5ZaI6O
+\\#Pi^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI(#C"n;'Qo(2MQo`=d\rV-Bg
+rqcTjrqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eogeZGo()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*/e^W$p
+cd'bXaiMK@_nj+%]Xt_`[^<?EYH=k*W2?AcTgV=<91quV:f-UXrD<Dhs%rSgoMG$Qs%r\l!`Dlm
+r]:-A3VZbV>4bte=Sl8$=9;W-=T)Cm=T2J'=Su8#=T2D%=T2Cu<r5rH=Eet7H?sseI=HctJV/T.
+KnbA=M2@+KN/`jYO-#KeP*;,pQ'IZ%Qi<?RR@9TBS,SrVSb\lUSc5/WS,\oWRJiKRQ^7W9!L/fI
+P!5"iO,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?jaZGBS+NFE;JBEH#l8DJj<-CMR[!BP;$k
+An>OaA,]p<@:9(A#@:\A>[1K;>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>k:Amod9`Ic_9)_E]8GPdS
+7f5^J7/0.B6MWqIdMgWdf\,$8hV[;Oj5oFelKdg)n+-)Dp\F^`rdk*#s8;m)Y'aec>?P$.<``:"
+r_s/';c?Xo;c6Ikr_ibn&l;J':f'q`:esna;G^1b9i4\_r_EVk:Jjpe:]O;Z;#io[6N0@L7/o^U
+7f>i+84cBF8kViO9heAY:f("f;cHat='/U/>?kH@?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqSl6
+M2I7PO-,WkQC+,1SXuOLUo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_V
+jlY^hl07O#m-X6@mfi4No()DErq-<cp\jjeq>U6hqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS2CGN2NnV[/@91ZM^uuYkbL$YkkX)Z2h60ZN%92
+[/@<3[f3c8\-9FS]=bhkr/UQhpr!*Lrl+WOpr36PrQ"lVqT&HRrQ5>fbg"GYd*_a>rm^ens4%)!
+qU@%GGBeF[H[U<kJ:N3&K7nr5LPUeDMi<USNfT6_OcklkPa.N"Q^=),R@0NBS,]#YSbJ`TTD5#W
+Sc>5ZS,\oWRJrTRQU-q&Q'@JrP*1rhO,o<\N/W[PM2@%DL5(D8K7ec,J:N)sI=-BfH?jaZGBS+N
+FE;JBEH#i6DJa3+CMR[!BP;$jrac+@A,]p<@:9(A!FB(2>lS".>5hY+=BAT'<rZ/"<;fbq;ZBVm
+;#a>k:Amod9`Ic_9)_E]8GPdS7f5^J7/0.B6MWous+14+rsnhrn*B6%kN1dai8EMKh#>tQf@AC"
+daHCcc-=JTb/q`KbKIrF_ns4(^:_"d[C!<K\%&lT\$c.BosOfcr'L?Lr'^QRs$lrWIRm%%8kM`M
+9MJ5V:Jakb;c?Xq<``C+>$G6;?XI5N@qB7cBPM="DK'T:FEVkRH@1-jJ:`H/LP^nINfT<dQ'Rf+
+S"6.EU84W`WN*&&Yd(OB[^`l[]YD8!_o9X:aihoRcdC1jeCN7)g=tH>hr*JRj5oFckiq?tm-O--
+s6g-\nac8Bo`"Lap@nO\s7u]krVQTlrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS1n'EdraoM>W;3MZ8P%MYDu-MXuc+N;nn7Nr"_8
+Nr>%:DYTOtQi3<OQiE?PQ^70.rg<SLrL!PMm?e$ER[]h<m[jHN!1s.[s.1]aG^=[_I=6QpJ:W<)
+KS>/9Ll$tHN/WaVO,oBbP*2#nQ'IZ%Q^F/.R@=)Ds.'+[pR_AVpn%JUs.'(Xs-`qUrg<_P6'de$
+P`q;oP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:;opI!^0cH$FOWG'.nKF)l8?E,TW3D/=$(CMIQs
+BP1rVAH?=OraGn:@/aL6?=!P8s'#J,r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8bs%E5]r^m)[
+q+(BQr'g9Hpd=^@q*BT3JcF[.)V<$L\$N<@X/i8"Wi)blV50l]TqS*MSXuCArL+"ZQ^F,)Q^!c"
+rf[VMOH>K^N/EIKrJCW3MXQE%62X(J6i9@P7K5jU7t+!#8P2TJ9MA/T:/=\_;,^Cm<E<1'=^#$7
+?!grI@Uit]BP;-rD/O<4F*)SLH$XjdIt3-(L51VCN/is]PEhH$R[]k>Tq\?ZVl?\tY->1;[C3TU
+]=bno_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]7`k32'olg4!*mf2_ZnF?)?oCW%T!VZ9dq#C0i
+qYg<jr;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS1.H77g-G:ZbOS;#=&\;".9[;#aAm;Z0Gn3BI.$
+p0%Auq,urarE9#"r`SbnrE0,&r)`l"r`9)%r`Aqsr)Y@lG^=[_I=6QpJ:W<)KS>/9Ll$tHN/WaV
+O,oBbP*2#nQ'IZ%Q^F/.R@=)Ds.'+[pR_AVpn%JUs.'(Xs-`qUrg<_P6'de$P`q;oP*(ieO,f3Y
+N/NRMM26qAL4t;5K7\Z)J:;opI!^0cH$FOWG'.nKF)l8?E,TW3D/=$(CMIQsBP1rVAH?=OraGn:
+@/aL6?=!P8s'#J,r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8bs%E5]r^m)[q+(BQr'g9Hpd=^@
+q*>tKe^rI.gtglGiT'"\kiqBumI'N8o_/%TqYU8Cs+14Lrs[kREa`?Z=BAO'<`W/u<!cQ';GpIm
+;c-Cir_`Ph#u4;n:JFV^:ejgc;#O2i:]O;j;#a;Z;?&r[6N':L7/o^U7f>i+84cBF8kViO9heAY
+:f("f;cHat='/U/>?kH@?X[DRAS,UhC27[(E,fr@G'A4XI!pKpJqSl6M2I7PO-,WkQC+,1SXuOL
+UnsugWiWA-Z*UjH\@K5a^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjlY^hl07O#m-X6@mfi4N
+o()DErq-<cp\jmeq>^<iqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_%f\$iZLYck10Wi)_iU7l7BMQ!bY['I$Erj)R/oW\:trN?"#s02C*s0;X0
+rNcI0rj;X3rjDg9rj`!="hVF\^;%J^NqL9a_u@UR`V7CI`VmgVa8<mRa83jWao9EebKS5VcHsu7
+df@noe+qMndiNaZH@($fIXcm!JqJ`1L51SAM2R=ONK0'\OHPcjPl?pPQC!u+R@0NCS,]#YSc,/Y
+TC\`TTDY;\SH,2ZS,\oWRJrQSQ^7W94d;.nP*(ieO,f3YN/NRMM26qAL4t;5K7SQ'IsufoI!^0c
+H$FOWG'.nKF)l8?E,TW3D/=!'C2.HrBP1rVAIE$Y@U`bS?sd8I?=!P8!aAi3r`K;)=',B%!``3!
+rDNbq;,R9gs%iYir([2br_*/]rCQuZqFCKRr'g9Hpd=^@pd'K2JcFX-2"pP.lKIHojlGI[i8<AG
+g=b02e^W'rd`p(^c-4;OaN)KIaiD?;^qdXs]XbM[ZEpsI[^Gq>osOfcr'L?Lr'^QRs$lrWIRm%%
+8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7cBPM="DK'T:FEVkRH@1-jJ:`E.LP^nINfT<c
+Q'Rf+S"6.EU84W`WN*&&Yd(OB[^`l[]YD8!_o9X:aihoRcdC1ieCN7)g=tH>hr*JRj5oFckiq?t
+m-O--s6g-\nac8Bo`"Lap@nO\s7u]krVQTlrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/\OoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_%f\$iZLYck10Wi)_iU7kb#Dgd7jrJUZ4r/(0*nqmC(oS`a.rf-i9q2P<5
+!0I.sop5WEr0Zi;rg<PKs-W\Mm[+-FR[]h<l^n'G*dDsVH[L6jIt3*%K7nr5LPUeDMi<USNfT6_
+P*2#nrfm\RQ^F/.R@=,Es.'+[rLWt[o:Z)Tr1<qZ!1a%Xs-`qUrg3_QQN!.4P`q8nOcYWbNfB!V
+Mi*@JLkg_>KnP)2JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C2%?pB4h-S$Y3aV@UW\Q
+?XI,G?2e(1>?Y50=TV],=8l5%<E)rr;Z]io;>j>k:]F2f:&dod9DhE\8cD9W8,YpT7J0(D6hNe@
+6%T&es5X,=m`rnn[Bm'<WiN/!Wi)blV50i\TqJ$LSXuCAR[TY4R$X,)Pa@Z#PEM)kOcPN_NJi[M
+M2I4LMX?9#62X(J6i9@P7K5jU7t+!#8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit]BP;-r
+D/O<4F*)SLH$XjdIt3-'L51VCN/is]P*M?#R[]k>Tq\?ZVl?\tY->1;[C3TU]=bno_Sa@4aN;WL
+cHjnde'ut#g"P3:h;@/Lj5]7`k32'olg4!*mf2_ZnF?)?oCW%T!VZ9dq#C0iqYg<jr;HTerdk*?
+s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_%f\$iZLYck10Wi)_iU7jtE7S6<J:JgFUrD<8bohbEZ!)WJes%rMg!)WVS
+o3)&rr`S8`s&o,!!*T,"!*B#!rE0,&r)`eu!`rK+r`Attr`:.cH$XgbI=?ZrJV&N-KnbA=M2@.L
+N/`jYO-#NfPEc'3#*tUCR$jA2rgWqXs.0+[rL`\Srh'+[s.'.[rgWqV!1EhR!LK,OPs(@qP*1rh
+O,o<\N/W[PM2@%DL5(D8K7e`*J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMITuBP;$jracIJ
+@q&nU@:3GL?=$q:>QS,5>5hY+=BAT'<WZ9#<;f_s;Gg<i;#a>k:Adid9`@]_9)V?\8GYjT7f5^J
+7/0.B6MNhbf%A^2h;7&JioB._kiqF"mI0T9o_/%TqY^>Ds+14Mrrp>rB4>1Mr`B,#%96>+<)lps
+;c6Rn;c-Ek;@uc&:esqb:ejh_:/4S^:f'qaqG.;l:Jak`:JgLWs$?QLrBpKNs$crWrC;<-8P)NH
+92&#R9hnJ\:f1+h<)lt#=BSg3>[:]D@:E_XAnYjmCMds.EH?5FGBnL^I=Hd!K8,/<MN!RVOckuq
+R$sM8StVmSV5L;mXKJe4ZaI6O\\#Mh^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiT&t[k2tmll0I^&
+mI(#C"n;'Qo(2MQo`=d\rV6Egs8)]krqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n3#M4LfR\,EW4Z2Cj+YPYR%YP51#YH[o/!jJr7
+rNcF/s0Va4rjMj9s1&*>#eRa_^;%J!_86,2o>1OG_Yh=L`;[aM`q[ON`W4'U`W4'Y`W4'UaT'B^
+ap-&5c-=P\dIG]`eGdo?G^=[`I=6TqJ:`E,Knb><M2@+KN/`jYOHG]hPE_>tQC%T<!L]DURf]+N
+Sc55[TDtSPU&L_bTDbA]SH,2ZRg,=LR@'A.QN!./P`q8nOcYWbNfB!VMi*@JLkg_=KS+o/JUi9#
+IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C&VcWB4b^dA7T1Z@UWYP?XI,G?2e(0>?_#/s&]8&
+rDiu"<)iiqs&/korD<Mis%`Jds%NDbqb$iZr^clUr'pTQogJUCog8F>JcC<$ir:%qq!m\6l/q$f
+j5T%Thqd,Cg"=p-e'cXkc-FSXbl5Zu`lcKHa2Gm3^qRIm\@&ZL[C3TR\$u4BosOfcr'L?Lr'^QR
+s$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DK'T:FEVkRH@1-jJ:`E.
+LP^nINfT<cQ'Rf*S"6.EU84W`WN*&&Yd(OA[^`l[]Y;1u_o9X:aihoRcdC1ieCN7)g=tH>hr*JR
+j5oFckiq?tm-O--s6g-\nac8Bo`"Lap@nO\s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/\OoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n2hDg?qfrepf6qMG$*nqmC(oS`^-s,Ho9qMkE6
+rf@,Brbh=ns-NVMm$Ia>q3M)KqNp`>s-EkVR[]h;m%43I+aA<ZI!pEmJ:N6(KS>/8Ll$tGN/WaV
+O-#KeP*;,qQ'Rd9QiWVDrgNtZSXobOrh'4`m\0WQs.B7]s.'.[rgO+\R@0G0Q^7W930]ViP*(ie
+O,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\&8,TdARo=]
+@U`bR?sd8I?=!P8!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2f:&dod9D_?\8cD9W8,PjS7J0(E
+6hNe@6%T&es5j7biQAsJ[]ut6WrAt;VPg8eUS=NVTV%gHSXc1<R[KM1Q^=#&QBd_uP5^RJO,f3Y
+MM[/fM?/QkmYUs0r'L?Lr'^QRs$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7b
+BPM="DK'T:FEVkRH@1-jJ:`E.LP^nINfT<cQ'Rf*S"6.EU84W`WN*&&Yd(OA[^`l[]Y;1u_o9X:
+aihoRcdC1ieCN7)g=tH>hr*JRj5oFckiq?tm-O--s6g-\nac8Bo`"Lap@nO\s7u]krVQTlrVcBf
+JcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n2J77g3K:$tmV;#*o];"mcc;#*od;#4&g:]O;j
+3Up8O>5qaa=9)Lq=Su7s=T)A&=Su7q=T)>"<[(UiH?sseI=HctJqJ`1L5(M@M2I7NNK0']Ocklk
+Pa.N"Qi<?QR@=,E!h>gPrgs+]s.JeRrh0:`rLX%[!1a%X#+CsJR$a5+rfoI-PEM)kOH5H_NJrgS
+MM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-CMR[!rb)jUAn>OaA7K(X@:3JM
+?X@&Er`fJ.>5h\)=9)G$<WZ9#<;ohr;ZBVm;#a>k:Adid9`@]^9)_E]8GYjS7f5^J7/94C6MNha
+g"Y<<hr!AOj5oIflKdj*n+$#ApA"I[r;M9IJc?/XWd85[=]ng,<E)srr_iu#<)Zap<;oeq;%QW&
+;,C(b:f1"`:esh]:Jagc;#F)j:esmd:]X?emSX!Mr'L?Lr'^QRs$lrWIRm%%8kM`M9MJ5V:Jakb
+;H$Op<``C+>$G6;?XI5N@qB7bBPM="DK'T:FEVkRH@1-jJ:`E.LP^nINfT<cQ'Rf*S"6.EU84W`
+WN*&&Yd(OA[^`l[]Y;1u_o9X:aihoRcdC1ieCN7)g=tH>hr*JRj5oFckiq?tm-O--s6g-\nac8B
+o`"Lap@nO\s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n2uJs`LBYHb@<Z*F83qlg"'s0)I*q5s\"ric4'
+s0;L-s0Ma4rO)X5s0r$<s1&ZO]Y2%o^qde&_SV=n_SX4\_Yh:S`5T^6`;[aM`q[OB`W4'UaSs9d
+b0/#Rc-F\`rmUnqo[Efh-.@-cH[L6jJ:N3'K7nu6LP^kFN/WaVO-#KeP*;,qQ'Rc(R$jEBRfT%M
+rgs.^s.K:`rM'%]rM'4`s.KCargs.\!1a%X31?8&R$X/*Q'IStP*1rhO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-?eH$FOWG'.nKF)l8?E,Y_n%W-#tCMIQsBP1siAS#C^raGn:@/aL<?<piA>[(E9
+r`T8'!*B/#s&K(ur_rhps&&_ks%iYir([2br_*/]r^m&ZqFCKRr'g6Gq*XgApd'K2JcFg2*Vf6o
+lKRNnjQ5I]inrYLhV?f;f@JEtdEp.`cHON3`tcS8bK7cA_nj+%]"#5WZEpsI[^W]SqR6()s$?QL
+rBpKNs$crWrC;<-8P)NH92&#R9hnJ\:f1+h<)lt#=BSg3>[:]D@:E_XAnPdlCMds.EH6/DGBnL^
+I=Hd!K8,/<MN!RVOckuqR$jG7StMgRV5L;mXKJe4Za@0N\\#Mg^r"".`lQ9Fbg+P^daQ^sf@em4
+h;-uHiT&tZk2tmll0I^&mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<iqu6NlrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/\OoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n2fC3Y8_reUW4qhb9/s,$`4s,$Z0qMG3/oS`a.
+s,Hr:q2GB7rK$o=s,m>!s-<YOop5QCqj?]9!1<>DoU,NB#+:pLS=H.@m[b_qH$XgbI=?]sJV/T.
+L5(J?M2I7NNK0']OcklkPa.N"Q^F/.Rf8cWS=TYNs.B=ar1X(`pS7\]r1X.`s.B:^s.'.[rgPm9
+R@'A.Q^3o%P`q8nOcYWbNfB!VMi*@ILPCP;KS+o/JUi9#IXQWlH?sj]GB\4QFEDSEEH,r9rb`3_
+Chmg$BkV0mB4b^dA7PUJ!F]C8?O'nC?!LW=>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Jds%NDb
+r(?r[rCHcTrC6]RoL/LBog8F>JcC<$kl1qfe]GnAZEL=0ri.KJW2?JhV50i[TV%jJS=Q1>R[TY2
+R@';+Pa7T"P*1riO-#B\Mi!7HMMmAXM>om>6N':L7/o^U7f>i+84cBF8kViO9heAY:f("e;cHat
+='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&+WI!pKpJqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiWA-
+Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X6@mfi4No()DErq-?d
+p\4[^s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n2K7S-9J:[_0\;"mc`;"IK^;#!ic:]XEirDEMi
+s%WSU3V-AR=T)D%>5qa[=9)G!=Sl1r=T;M+>$4s0rE&brr)`o!,^F]_I!pHoJ:W?*KSG5:M2@+K
+N/`jYOHG]hPE_>tQC!u+R@=,E!M#_[T)YG_T_tM^UA(G]UAU_bT`:Y`T)Y>]SGo!;R[KP1Q^=#'
+Q'@JqP*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&IsufoI!U*aG^"@TF`__HEcH)<DuOVaD/=!'C2%?p
+B4kgfARo<M@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9DhE]8c;3V
+8,YpT7J'"D6hNe@5oAD5hV[8Mj5oFdl0I^'mdK`<o_8.Vqu$GEs+:7lgm)ee@Tcc7<`N*s;,^Im
+<E)mq<)cao;Gg7h;,L-g:`*&*:Jah_:/Fb_;,C(b:JOY\:Jah`:esmS;?&r[6N':L7/o^U7f>i+
+84cBF8kViO9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&+WI!pKpJqJf5M2I7P
+O-,TjQC+)0SXuLKUnsugWiWA-Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ug
+l07O#m-X6@mfi4No()DErq-?dp\4[^s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYcb+/Wi)_iU7n2rJ<lq8Vm3J1YPk^*Y5ka'YPbR'Xo>F"XoGR'
+YPtd+Z2Cp-Zi@E1[K!]8\,Wu<\HodY]tV7s^qmkc_Z,Yq_Z%ID_Yh:O`;[^U`;[aL`qdUC`W4'U
+aSs9db0/#Rc-ObarmUkpp!`oi-@1&fIXcm!JqJ`1L51SAMMmFQNfT9aP*2#nQ'Rc(R$jD3S"#q=
+rgj1`TV27Ws.]Lfn>-&Ys.]Ics.B@argj=bS=H(<R[O/B5aRe%Q'@JqP*(ieO,f3YN/EIKLkg_>
+KnP)2Jq8H&IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?pB4h-S!G#^>@KBnFra,\4?2e+/
+>6%k+=TV],=8l8#<W?%t;u]bq;>j>k:]F2g:&[id9D_?\8cD9V8,YpT7J0(D6hNe@6%T&es5s>:
+p\*t=l0%6ljl,7Xhqm2GgtCB3f$i!nd*Bn\bfe&H`l6'Cai207^q[Rq\@8iO['mLD[fEi4[e@-.
+62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O<4EccGJ
+H$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:['mKT]=bkn_Sa@4aN;WLcHjnde'ut#
+g"P3:h;@/Lj5]4_k32'olKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYcb+/Wi)_iU7n2dCNY)[L&$T(MZ&D,M#3&/MY)i,N;nn9NqeV6
+NrG+<OSt=ADZ5t$Qi33MQi!*IQi!0/QiEHNQhm*CQN<MCrg`tYn=D"uH@1-iIt3*%K7nr5LPUeE
+Mi<XUO-#KeP*;,qQC!u+R@9S6S"-&KScYOWT`(SaUAgqWV#I.hUA^ecTE(V`Sd(aUS=?":RJrR=
+Q^3o%P`q8nOcYWbNfB!VMM[1GLPCP;KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$
+BkV0mB)Z?BA7PUJ!F]C8?NFJ=r`oJ-!*]A)!a&N*r`9&!s&Atrs&/korD<Mis%`Mer_3>bqb$iZ
+r^ciTrC6]RogJRBog8F>JcC<$lMh+Tbeq-&['$J.W[4XBVl$;dUnXQTT:VXDS=H(;R@'>.R$O#$
+QBd\uPECuhNfK'VreUf:M2I.HMXQE$62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'
+=^#$7?!grI@Uit]B4u$qD/O<4EccGJH$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXg#(:
+['mKT]=bkn_Sa@4aN;WLcHjnde'ut#g"P3:h;@/Lj5]4_k32'olKmm)mf2_ZnF?)?oCW%T!quB_
+rqQNhs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYcb+/Wi)_iU7n2J7S-3F:@V3];"d]`;"[W^;#!ic:]aKj;#X>j
+;#O/h48)hS=T)D%>5qa[=Su8"=Sl1r=9)M'>5q_'=85np=!i6@I=?ZrJV&N-KnbA=M2I4MNK0']
+OcklkPa.Q$R$a;1R[]e:Sc52^T:hkUU&UkdU[Y)YU]7(eU&UbcTDkDdSXc4>S!ocEQp@"(Q'ISt
+P*1rhO,o<\N/WXNM26qAL4t;5K7\Z)J:;opI!^0cH$FOWG'.nKF)l8?E,TW3D/=$(CMIQsBP1rV
+AH?=OraGn:@/aL6?=!P8s'#J,r`K;)=',B%s&K(ur_rhps&&_ks%iYirD!8bs%E5]r^m)[q+(BQ
+r'g9Hpd=^@pd#_PhVmJSjQ>[jlKdg(md]l>p@n@Yqu$GEs+C=n^P$9->$+m.<`E$r;H$Oq<E)jo
+<)Z[n;,L.f;,L+br_NVk:B"#u:/=\_;,C%`:JOY];G[9g!DcJY;>rlZ6N':L7/o^U7f>i+84cBF
+8kVfN9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&+WI!pKpJqJf5M2I7PO-,Tj
+QC+)0SXuLKUnsugWiW>,Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n2oH]k2/V6I3$YPbR'YPkX(Xo#3uXT5O%Y6(r5
+Z2M!.Zi@E1[JmTB\%&rY\[oDd^;%J!rk\NLs,HQcrk\TNr58QQqSi-IqSi3KrPefV"38L)ao'6Z
+aTou3bKS8Xd*_jArR1Gh-IU@iI=6TqJ:`E,KnbA=M2I4MNK0']OcklkQ'IZ%R$a;1S"#q=rgj1`
+TV2:X!huHbqkX.dqkj:fr1s@fs.]Lds.B@argl]PS=?":R@0G0Q^3o%P`q8nOcYWbNf8pTMM[1G
+LPCP;KS+l-J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BkV0mB)Z?LA7K(X@:<PN?X@&E
+r`fM/>$Co.!a&N*r`9&!!*&nqs&&horD<Jhs%`Mer_3>bqb$iZr^ciTrC6]RogJRBog8F>JcC<$
+l2UeZ"7YU?l2KfsjPf%ThVR)Fg=b01e^`'pd*Kq\b0.lG`l-!Bai)*5^qRLp\@/`M[C3NO[^Z(@
+p9jlcr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8
+FEMePH@1-jJ:`E-LP^nINfT<cPa7])S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.t_o9X:aihoRcdC.h
+eCN7)g=tH>hr*JQj5f@bkiq?sm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n2cBQJTTK):E'MYr>,M#3&/MY)i,N;nn:Nq\P5
+NrG+<OSb1?DZ#guQiEBOQi*0KQhm*.Qi<BMQiEHDQN<MCrg`tYoUc&Q,^XrfIt3'$K7nr5LPUeE
+Mi<XUO-#KeP*;/rQC!u+R@9V7S=TYN!hZ-Yrh0CfUSI^^r2':fr2'=es.fUgrh9@b!2'7^8Y)B@
+S!ob5R$a5+Q'IStP*1rhO,o<[N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3
+D/=!'C2%BqBP1rVAIE$Y@U`bS?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_o!)`\kr_NPhrD!8b
+s%E5]r^m)[q+(BQr'g9Hpd=^@pd'K2JcG*:38Ma)\$rTBXK&;"Wi2hnV59u_U7n3OSXl7>S=>t7
+R$X2+Q'IQ!Q'7ApP*(fcNJrdPLl.+JM2LeZreg\@r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb
+;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@1-jJ:`E-LP^nINfT<cPa7])S"6.DU84W`
+WN*&%Yd(OA[^`l[]Y;.t_o9X:aihoRcdC.heCN7)g=tH>hr*JQj5f@bkiq?sm-O--s6g-\nac8B
+o`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/_PoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n2H6Uj[?:@_9^;"mca;"d]^;#*o`;#X>j:]O;h
+:B*EM=oVV(=o;D$=oDM(=km-T=8l>"=8H#!=oMS*=]kW(pK7Dr,^XrfIt3'$K7nr5LPUeEMi<XU
+O-#KeP*;/rQC!u+R@9V7S=TYN!hZ-Yrh0CfUSI^^r2':fr2'=es.fUgrh9@b!2'7^8Y)B@S!ob5
+R$a5+Q'IStP*1rhO,o<[N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'
+C2%BqBP1rVAIE$Y@U`bS?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_o!)`\kr_NPhrD!8bs%E5]
+r^m)[q+(BQr'g9Hpd=^@pd#YQioK7bkih@!m-X60nac>Gp\F[_r.4m$s#TqRG@P2f=BSX&<)QRm
+<)Zaq;c6Lm;c6Ok;,C.f;,C"`:Jah^:JO_]:JXea:ejb]:/4V^:Jak`:[M$Y62X(J6i9@P7K5jU
+7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMB
+N/is]P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_Sa@4aN;WLcHjnce'ut#g"P3:h;@/LioB+^
+k32'olKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcVhU7n/nGE&K(UpBs&s/l@(poaUuqQ0[ur3$('#-bA;
+ZEggCrj2^6[/RK5[K<qJ\Gj#B]=bkm^qfobqSN6Lp;-gGrPJQMrkeTNs2=cQo>^^Ipr<3M!li:%
+rlP/\rlP2_#0Y67c-ObarmUnq!7CeorR:_n/UVtqIt3*&K7nu6Ll$tHN/`jYO-,TgPEhE!Q^F/.
+R[]e:SXuFFTV/!PU8"F]V#I4iVXp_bVZ*FjU]R<cUAghjTV%jJSt2DNRm3@0R$a5+Q'IStP*1rh
+O,f3YN/NRMM26qAL4k23Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\&8,TdARo=]
+@U`bR?sd8I?=!P8!aAi3r`K;)=',B%!``3!rDNbq;,R9gs%iVhrD!8bs%E5]r^m)[q+(BQr'g9H
+pd=^@pd'K2JcG'91&(M2lfmWrk2tX_hr!;Ih:pW8f@SL#dEp7cbg";QaMu6<aNM]D_nj.%]t:b]
+ZEgn;[K3kFq6p")r^$HKrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt#=BSg3>[:]D@:E_X
+AnPdlCMds-EH6/DGBeF]I=Hd!K8#);MN!OUOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^V[n-
+`lQ9Fbg+P^dF6Urf@\g3h;-uHiSrnYk2tmll0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcVhU7n/`Ao`<RJVsG`!/gc4!/g`3oSEO(s,-K-s,?r:
+!06`3s,R,?rK-f:r0RDKqj.;KrKmMLrg3JKiKsP2ns9?Dr0IJPR@=,FrgihUr1,EeI=?ZrJV/T.
+L5(M@M2R=PNfT6`P*2#oQ'Rc(R$jD4S"-%@StD[KTqS3TU]%"fV>d@`VuERmV>[1kUS=L^Ta%0^
+T:VXFSGo!BR[KP1Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP:K7ec,J:N,uI=6KiH?sj]GB\4QFEDSE
+EH,r9DJj<-CMR[!rb)jUAn>OaA7K(X@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)ifp!`DlmrD<Mi
+r_EDdr_3>bqb$iZr^ciTrC6]RogJRBog8F>JcC<$n,EXge&fV<[]Z_0WrK!qV$s,nTqJ!JS=?"<
+S!fZCQiE?NP7WtDPEM,lOcPN^N/EFIMMmA[M>iD362X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\P*D9"R@Bb=TVA6Y
+Vl?\tXg#(:['mKT]=bkm_Sa@4aN;WLcHjnce'ut#f\5*9h;@/LioB+^k32'olKmm)mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$`QJYcb+/WMcVhU7n/F77KmB9i1L[s%rDbrD<;cpeUue;#O2f;#aDm
+;#aDk:]O;e:&nJr=oMP#=TDS&=oMP&=oDM(=lNQ]<rc@u<s)Q-=BPQ(q,dW"r`]>)!*K5%p/ino
+I=?ZrJV/T.L5(M@M2R=PNfT6`P*2#oQ'Rc(R$jD4S"-%@StD[KTqS3TU]%"fV>d@`VuERmV>[1k
+US=L^Ta%0^T:VXFSGo!BR[KP1Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP:K7ec,J:N,uI=6KiH?sj]
+GB\4QFEDSEEH,r9DJj<-CMR[!rb)jUAn>OaA7K(X@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)ifp
+!`DlmrD<Mir_EDdr_3>bqb$iZr^ciTrC6]RogJRBog8F>($"B<kiqC!m-X3.n+$#ApA"I[qu6SG
+s+^Omf90uY?s-Q4<E)mp;H6Xq<Dudo;Gg=i;c-=er_X)":/=Y^:/4S[:JO\\r_WVi!`)Qdr_NPj
+s%`VmmSWsLr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="
+DJsN8FEMePH@1-jJ:`E-LP^nINK93bPa7])S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.t_o9X:aihoR
+cdC.heCN7(g=tH>hr*JQj5f@bkiq?sm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@
+s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n/lG)DrmX0o+5XfhT(ql]t$pT4=qs/lO/Yd(I=
+ZMq3/[/IB5[^Z7Gs1&6C]Y;/[_#2%2_Yq=M_Yh=O`;@OD`r3jV`r*gT`r!aT`W4*XaT0E]aoBN`
+b66&6cd:)=e,RkrdJ;5jI49YrJV&N-KnbA>M2R=ONfT6`P*2#oQ'Rc(R$sM6S=Q7CT:_dMTq\9V
+rhTRjs/,[kor._bs/,gmrhO"uU8"?TTV.pKSt2CAS"#k7R$a5+Q'IStP*1ofO,f3YN/NRMM26qA
+KnP)2Jq8H&IsufoI!^0bG^"@TF`__HEcH)<Df9N2D/=!'C2%?pB4kgfARo:\@U`bR?sd8I?![G7
+!F&b,=oVS(=8c/$<E)rs;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J0(D6hNe@6%T&es6fpe
+r%Rg1l0@EnjQ5I]hr3GIg=k67f@A@!d*L%`bg";Qa2Z-;a32TC_SO%%]t1\\ZEgn;[K3kFq6p")
+r^$HKrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"=BSg3>[:]D@:E_XAnPdlCMds-EH6/D
+GBeF]I=Hd!K8#);MN!OUOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRh,`lQ9Fbg+P^dF6Ur
+f@\g3h;-uHiSrnYk2tmll0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n/^AT<*JKT#P\on`R'r/1?/rf$E-s,R,?r/gZ8
+q3V,IpQtiErg3JKiKjP3lB_R>R@=,FrgitYqORY7.=Zl!JqJ`1L51VBMi<UTO,oEdP*;/rQC!u+
+R[]e:SXuFFT:hmOU8"F^V#R:kVYd:aW;<FlVZ3LlUgg*nU7n9RTV%gISXc4>S!ob4R$X,(Q'@Jq
+P)t`cNfB!VMi*@JLkg_=KS+o/JUi9#IXQWlH[9s^GB\4QFEDSEEH,r9Df0H0Chmg$BkV0mB4b^d
+A7K+Y@UWYP?XI,F?2e(0>?_#/s&]8&rDiu"<)iiqs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]R
+ogJRBog8F>JcC<$nc&gWbKRQ,[''D.s/H!r&>c8"US=HTTUq^ES"#q8R@*u>(6k)IPEV8qP*1ri
+O,f3XMMR(GMMm@Ln;7.%r^$HKrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"=BSg3>[:]D
+@:E_XAnPdlCMds-EH6/DGBeF]I=Hd!K8#);MN!OUOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg
+^VRh,`lQ9Fbg+P^dF6Urf@\g3h;-uHiSrnYk2tmll0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<h
+qu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6mHj0(l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n/I7R]sB:/LX]s%rGcrD<;cp/(`ar_NVm;#X>l
+;#aDj:]O;d:AJ&m=SGts=T2J%=o_^b=S#Sq=BSf+=9)Fu=9)M'>5qb*=T;It=T<duIt3*%K7nr5
+LP^kGN/WdXO-,TgPEhE!Q^F//S"#q=St;RHTV8'RU8.^`s/#amqks+cqPX@js/#^j@\]ZlTqS-P
+T:VXFS=H(<R[KP1Q^3o%P`q8nOH5H_NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?jaZGBS+NFE;JB
+EH#i7DJj<-CMR[!BP;$kAn>Oa@q/tW@:3JM?X@#Dr`fJ.>5h\)=9)G$<WZ9#<;ohr;ZBVm;#a>k
+:Adid9`@]^9)_E]8GPdS7f5^J7/0.B6MNh[jQ>XilKmp*mdK]:oCVePq>1$gJcCK)%(q4+AQi8=
+=B&6t;,dHos&1=D;c6Ij;c6Ff:esqa:JOY\;,0k_:/=V\:/=\_:/4S[:JX_]:f'q^m8<jKr'L?L
+r'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@1-j
+J:`E-LP^nINK93bPa7])S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_o9X:aihoRcdC.heCN7(g=tH>
+hr*JQj5f@bkiq?sm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LF,-3a[(61<s/c(!!3Z='pT4=qs/uC*s02O.
+s0Dg7Za@+<[0j@O\%&rY\[oGe^\ttG_;iE2_>_=L_uI[P`UUt@`;mpT`W*pXa8!dVb5]Wfbg"J\
+dJhVpdf.YldOBTnIt3*&K8#&8Ll%"IN/`mZOHPcjQ'IZ%R$jD4S"-%@StD[LTq\9VrhKUlVPa<i
+s/>mqp8\(js/>mos/,gmrhKRiUAgi`TV%gISXl:?S!ob4R$X,(Q'@GpOcYWbNfB!VMi*@ILPCP;
+KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$BkV0mAnGUcA7PUJ!F]C8?O'nC?!LW=
+>?_#/s&]8&r`9&!s&Atrs&/korD<Mis%`Jds%NDbqb$iZr^clUr'pTQogJRBog8F>JcC<$nGb9>
+qsNb6l/q-iio/hShV?o@f[ng-eC)dmcd0n\bfS#J`l?!<aiVK;_SEn!]!o)QZF0\?!OoK4[eI3.
+62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!grI@Uit]B4u$qD/O93EccGJ
+G^=acIt3-'KnkMBN/`m\P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#
+f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L@r6ICL5Ptes+pW1oSEI&pPT!/s,6u<N:`)0
+NrG+;OS+b%Qi36KQi!0&Qi<<EQiEERR@=,Frga%\pmij^IXcm!K7el4LPUeEMi<XVO-#NfPEhE!
+Q^F20S"#q=St;RITqS3TU].%jV5C-gVuN^oWV3@jWW/pqVuNXoV>d7kUS@a];4sPQSt2FBS"#k7
+R$a5+Q'ISsP*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&
+C2%?pB4baeARo<M@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9D_?\
+8cD9W8,PjS7J0(D6hNe@6%T&es7?71gs!sN\$)p7X/`.uVl-DgUna]ZTV.pKSXl7>SGnrVQNNM;
+Q'2*1!0[>D$'1++Mi*=HMMd>[M>rJ362X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&
+=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\P*D9"R@Bb=TVA6YVl?\tXg#(:
+['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_
+rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L77KjA:/Cjds%rYkr_W>brD<;cqG7;l:f'q`
+r)!>h!)WYlr)!DhpJ1$WrE0&%r`]>)i`PeR!*K5'p/h;tr`]>)r`B/%qH,1pIXcm!K7el4LPUeE
+Mi<XVO-#NfPEhE!Q^F20S"#q=St;RITqS3TU].%jV5C-gVuN^oWV3@jWW/pqVuNXoV>d7kUS@a]
+;4sPQSt2FBS"#k7R$a5+Q'ISsP*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&IXQWlH[:!`G^"@TF`__H
+EcH)<Df0H0Ci!m&C2%?pB4baeARo<M@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k
+:]F2f:&dod9D_?\8cD9W8,PjS7J0(D6hNe@5n`;Akj%L$mI'H5o(2SLq"agbrdk**ru(I)F_"o`
+=BAL%;c6Ik<)Q^p;H$Lk;,U:hrD3Pm:JUmb(Jmk%:esk^:ejb^:ejb]:/=VZ:Jak`:$tmW62X(J
+6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=ac
+It3-'KnkMBN/`m\P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*8
+h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LE.aOUZa?k3XSf3nXSo:$Y5b^*YlD!.ZN%91
+[/RK5[Ks@P\@K/^]Y2&W_#(t,_Yq=M_Yh=O`;[^W`l5pj`p(JB`WF3%aSO!baNDZKbg"J\dF8'B
+qp?d>It3*%K7nu6Ll%"IN/`jYOHG]iPa.Q$R$jD4S"-%@StD[LTq\=]U]I<hrMT[os/GjpqQ'Fl
+s/H$srML%#V59u`USFQWTqJ%WSk#?AS"#k7R$a5+Q'@JqP*(ieO,f3YN/EIKLkg_>KnP)2Jq/B$
+IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C2%?pB4h-S!G#^>@KBnFra,\4?2e(1>?Y50=TV],
+=8l8#<<-"s;u]bq;>j>k:]F2f:&dod9DhE]8c;3V8,YpT7J'"D6hNe?6%T&es761Jp\F7CmHE`p
+jl>:ViSN>Dg=b35e^;gmd*Bq]bfn2OaMl0<`lH3>_8=%&]t1\\ZEgmH[^Wa@[eI3.62X(J6i9@P
+7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'
+KnkMBN/`m\P*D9"R@Bb=TV80XVl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/L
+ioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L@V^1;L5LibL]E;'M#W>+MZ8V5N:`,.O8P+1
+Om8;3QMd*IR,"&'QMQpOQC!u,R@=,Fqjd_YrLG<aIt3*%K7nu6Ll%"IN/`jYOHG]iPa.Q$R$jD4
+S"-%@StD[LTq\=]U]I<hrMT[os/GjpqQ'Fls/H$srML%#V59u`USFQWTqJ%WSk#?AS"#k7R$a5+
+Q'@JqP*(ieO,f3YN/EIKLkg_>KnP)2Jq/B$IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C2%?p
+B4h-S!G#^>@KBnFra,\4?2e(1>?Y50=TV],=8l8#<<-"s;u]bq;>j>k:]F2f:&dod9DhE]8c;3V
+8,YpT7J'"D6hNe?6%T&es7ZI!ps@*u[^N??X/l6!s/-1"VPBr]U7e-MSc5,`R[]b6R$X0=PSKCH
+PEV5oOcbfeNfAsSLkpqHMM[1GnVR:'rB^?JrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"
+=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF]I=Hd!K8#);MN!OUOckrpR$jG7StMdQV5L;mXKA_3
+Za@0N\\#Mg^VRe+`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnYk2tjkl0@X%mI(#C"n;'Qo(2MQo`Fj]
+p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L77Ba@9M\O_:]OAh;#F,c;#F,f;#O8j:]O;i
+;"mic;#a>`:?l!\=T2J&>5qab=S#So=T2Is=9)M'>5qb#==8NHJ:W<)KSG5;M2I4MNK0']Ockom
+Q'Rc(R@9V7S=Q7CT:hmOU8.^`!Mu[lVuN^qWVWXkX8/dqWW/pqV[KAuV50o^US=HUTV)4T8"H0>
+S!ob4R$X,(P`q8nOcYWbNfB!VMM[1GLPCP;KS+o/J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-
+CMR["BkV0mB)Z?BA7PUJ!F]C8?NFJ=r`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mis%`Jds%NDb
+r(?r[rCHcTrC6]RoL/LBog8C=&a&<AlKmp*n*ol>p@n@Yqu$GEs,$ade<"NT?!130<E)jn;cQds
+rDW_nr_`bn:]4,f:]F6,:Jjn_9i+S[:f0t`:JO\\9i"S^:JOaT;>ifY6N':L7/o^U7f>i+84cBF
+8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS,RgC27[(DfKf>Fa&(VI!pKpJqJc4M2I7OO-,Ti
+QC+)0SXuLJUnsugWiW>,Z*UgG\@K5a^;%M$`Q$!@bKS8Wd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LD1IqJZD[T$rN5^nrN6+&s0)I,s0;U0s0Ma4
+rjDd7$+IFS\[oDc]tV8[_"tn7_Z.IE_Yh7M_Yh:O`;R[M`p1MC`r*gU`W4'YaSa0Yaooo3c-Oc6
+deqK<It3*&K8#&8M2@+KN/is\OckomQ'Rc(R@9V7S=Z=ETV8'RU].%iV5F6is/5psrMojtqlKau
+qlKdtrMomss/>pp!N)^mUemh\TqS-OT:VXFS=?":R@'A-Q'IStP*1rhO,o<[N/NRMM26qAL4t84
+Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2%BqBP1rVAHl[T@U`bS@/aL6?=!P8!aAi3
+r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8br_*/]r^m)[q+(BQr'g9Hpd=^@p-F90JcGHD(&Iju
+lg=-*kN1aaiS`SMgtLE6g"=gRdKn4GccjVXb0%d(`W*siai2*5_7mUo\$iTJ[C3NQ\+mE+[J`Dh
+6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27[(DfKf>Fa&(V
+H[UBoJqJc3M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`Q$!@bKS8Wd*^=lf%8R.
+gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L?Yae6KS8]Js,$K-s,6i7p5K'4r/^f<n<*I3
+s-E;Dr0I8Irg;W1rg!PNp6PN@".5LFRf8iSSc>;]SKr]8JV/T/L51VBMN!LSO-#KePE_>uQ^F20
+S"#q>StD[LTq\=]U]I<hrhodp!3,psri>ptrN5suri?!ts/H$srhfdoV>d8eUS=HUTV%jJSt2C@
+S!ob4R$O#&P`q8nOcYWbNf8pTMM[1GLPCP;K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-
+CMR[!BkV0mB)Z?GA7K(X@:<RC?NFJ=r`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mis%`Mer_3;a
+r(?r[r^ciTrC6]RogJRBog8@<JcC<$q>VQ!cHj&1Z)t.2X/`+rW26;cUSFNUT:VUDSXZ+=R[KQB
+Qi<3NPE_=2PQ-aSP)bQ^Mi3CIMMm@KM2:\Ys,-b@r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb
+;H$Op<`W=*>$G6;?XI5N@qB4aBPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa7])S"6.DTqnN_
+W2cr$YHbF@[^WfZ]Y;.s_SsO9aihoRcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8B
+o`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L6q'[A8l+nP!)N2_!Du\l;>X2f;#jMl;>j>k
+:\%9T=oVUr=o;D%=oMV)=lNQT<rcA%=nYqt=oMV)=nu/FIt3*&K8#&8M2@+KN/is\OckomQ'Rc(
+R@9V7S=Z=ETV8'RU].%iV5F6is/5psrMojtqlKauqlKdtrMomss/>pp!N)^mUemh\TqS-OT:VXF
+S=?":R@'A-Q'IStP*1rhO,o<[N/NRMM26qAL4t84Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3
+D/=!'C2%BqBP1rVAHl[T@U`bS@/aL6?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8b
+r_*/]r^m)[q+(BQr'g9Hpd=^@p-B5RlKmp*n+#u@p@nCZqu$GEs,-gb\US@*>?Fp*<E)jo;uTc"
+;c6Ol:]4/g;#a<29hnJ\:eje_:JOV[:JO_`:/=Y\:JOV[:f'q_;"%9[62X(J6i9@P7K5jU7t+!#
+8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'KnbGAN/`m\
+P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!n
+lKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LC4)2@Ybh9!rN5^nriQ4's0)I,s0;U0s0M^3
+rj<-B\$rlW\[oDd^;%G^_"bb3_Z%CM_>qFK_Yh7M_Yh:O`;R[Q`ob8>`r<sW`W4'YaSa0[ap,u1
+bKS8Xd/DDjd3jHqJqJ`2L5:\DMi<XVO-,ThPa.Q$R$jD4S"-(AT:hmOU8+N[V5F6i!iW)tri6"!
+s/bUiriH.#ri6!t!3#mp#,\5nUnjc[rh2fST:VXFS=?":R@'>,Q'IStP*1rhO,f3YN/NRMM26qA
+KnP)2Jq8H&IsufoI!U*aG^"@TF`__HEcH)<Df9N2D/=!'C2*Z\&8,TdARo:\@U`bR?sd8I?=!P8
+#[:J9=]nj/=',B%!``3!rDW_o!)`\ks%iVhrD!8bs%E5]r^m)[q+(BQr'g9Hpd=^@p-F90JcGNF
+1\gk8lgaH.k2kU\hr*>HgXt03g""Ktda6=ccHXSVb/hT@`Pfd:aMu$4_8![p\$rZK[JmT7\+mE+
+[J`Dh6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27[(DfKf>
+Fa&(VH[UBoJqJc3M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5]m?bKS8Wd*^=l
+f%8R.gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L?"e8-KnAZI!/^K.s,6i7p5T*4rK$o=mZI1/
+rg*ML!1*JJqNh)Hs-Vo7q3M#Hpm1`B".5LFS,SrTSc>9/J:W<)KSG5;M2I4MNK9-_P*;,qQC!u,
+R[]e:St;RITqS3UUnjiarhfgrWN#lss/Z1$mB-Ahs/Z.!s/?!srhfstV59u`US@a]7\HBFSt2C@
+S!ob4Q^3o%P`q8nOcYWaNJrgSMM[1GLPCM9K7ec,J:N,uI=6KhH?jaZGBS+NFE;JBEH#i7DJj<-
+CMR[!rb)jUAn>Oa@q/tW@:3JM?X@&Er`f_5>$>'3=BJX+r`0)#<)ifps&&horD<Mir_EDdr_3>b
+qb$iZr^ciTrC6]RogJRBog8@<JcC<$qu7PebJq!"Y,ne/WiE"qVPL#^US=ERT:VRDSGo!!R@'D/
+Q^3o#PEM,nP*;)kOcbW`NJi^OLl.+KMM[/ZM>rJ362X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<.&=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'KnbGAN/`m\P*D9"R@Bb=TV80X
+Vl6VsXfo"9['mHS]=bkm_8=.1aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L6pjF98l+GCqbd5er)*JlrDEMis%i,Zoi_8r
+rE0,&qH<Ysr`]>)i`PeR!*K2&pK.Dur`]>)qcG4rJV&N-L5(M@MMmFQO,oEdPE_>uQ^F20S"#q>
+StD[LTq\<XUnssfVZNfrWW&ptX8f9gXo>F%X8].!W;rmrVZs#pV50o^UAgiUTV%gISXc1=R[KP0
+QBd`"PEM)kOH5E]N/W[PM2@%DL4t;5K7\Z)J:E#rI=-?eH$FOWG'.nKF)l8?E,TZ4DJa3*CMIS_
+BFnfgAS#C^@q&nU?sm>K?=$q:>R4P;>$5!1=BAT'<WZ9#<;fbq;?0Sm;#a>j:Amod9`Ic_9)_E]
+8GPdS7f5^J7/0.B6M<\SlKmp+n+$#ApA"I[qu20HMuO%NTlOXN=]ec)<=Dc);cH[n<)HUl:f1*e
+;#a>i:)$N":JXe_9heDZ9i+Y^:/=V[9hnL`:]X<fmns$Lr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V
+:Jakb;H$Op<`W=*>$G6;?XI5N@qB4aBPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa7])S"6.D
+TqnN_W2cr$YHbF@[^WfZ]Y;.s_SjI8aihoRcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LCO(o:X/3#dXT,F&Y5b^*YlD!.ZN%92[/RK5
+[Kj:O\@K2_]Y4<Zs1n?El,*D8rke]Or5/?I!5eZOs2=3A!6"QLrPnlVrl,#[aN48#rlPDfbg+P]
+dJhSod5'(!JV/T/L51VBMi<XUO-#NfPa.N#R$a>3S"-(AT:hmOU8+N[V5C/gW2ZbrWiN2%XSo:"
+Y4f'tY5GF%X8o=#WrK$uW;`[uVPU)aUS@a]:S=>OSt2C@R[KP1Q^3o%P`q8nOH5H_NJrgSMM[.E
+L5(D8K7ec,J:N)sI=-BfH?jaZGBS+NFE;JBEH#i6DJa6,CMR[!BP;$kAn>OaA,]p<@:9(A!a]/<
+r`fJ.>5h\)=9)G$<WZ9#<;f_s;Gg<i;#a>k:Adic9`Ic_9)_E]8GPdS7f5^J7/0.B6M<]rs+14I
+s!%F9q<d\An*&ooiSrePhV6c:g=t9.d*^4dcd'bYb/qcHa8NsfaN)98_83n"\[]/SZF.-Kp9sb(
+r'C6IrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h<)lt"=BSg3>[:]D@:E_XAS5[kCM[m,EH6/D
+GBeF\I=Hd!K8#&:MN!OUOckroR$jG7StMdQV5L8lXKA\2Za@0M\\#Mg^VRe*`Q60EbK\>ZdF6Ur
+f@\g3gtglGiSrnYk2tjkl0@U$mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L?"e8-JUr[GM#E2-MZ8V5N;&>3Nr>%:OR/,%
+Qi36LQiEBLQhm$-Qh?[CQi*-NQ'Ra3QNNVCR[a2ErgbcoJV/T/L51VBMi<XUO-#NfPa.N#R$a>3
+S"-(AT:hmOU8+N[V5C/gW2ZbrWiN2%XSo:"Y4f'tY5GF%X8o=#WrK$uW;`[uVPU)aUS@a]:S=>O
+St2C@R[KP1Q^3o%P`q8nOH5H_NJrgSMM[.EL5(D8K7ec,J:N)sI=-BfH?jaZGBS+NFE;JBEH#i6
+DJa6,CMR[!BP;$kAn>OaA,]p<@:9(A!a]/<r`fJ.>5h\)=9)G$<WZ9#<;f_s;Gg<i;#a>k:Adic
+9`Ic_9)_E]8GPdS7f5^J7/0.B6M<]rs+14LruCXWd(?`oY-"k/WiDtpVPBo\U7n6PT:MLCS!ofE
+Ql26VPa.JrP*;&mP*:rgOcGH]N/EFIMMm@Lmth%%r'C6IrBpKNs$crWrC;<-8P)NH91qrQ9hnJ\
+:f1+h<)lt"=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=Hd!K8#&:MN!OUOckroR$jG7StMdQ
+V5L8lXKA\2Za@0M\\#Mg^VRe*`Q60EbK\>ZdF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI(#C"n;'Q
+o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L6UO@88kVtF;#O8k;".<^;Z0Jj;#a>Z:@q]f
+=T2J'=Su=u=T;P(>5qaa=S#Vl=nl)!=oMV)=oDGWJ:W?*KnbA>M2R=PNfT9bP*D5sQ^F//S"#q>
+StD[LTq\<XUnsrdVl6SoWiE,#XK;B&rN>jtrN?(#s/Z4$ri6!t!3#mp"fA,lUna[`Thh>RSt;LC
+S!ob4R$X,(Q'@JqP)t`cNfB!VMi*@ILPCP;KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9DJj<.
+Chmg$BkV0mB4b^dA7PUJ!F]C8?NOP>?2e(0>?_#/s&]8&rDiu"<)ifp!`DlmrD<Mis%`Jdr_3>b
+qb$iZr^ciTrC6]RogJRBog8@<%.!<Kn+-)Bp\=R\r;M9IN;k$IN,3$.=]\X)<)cdq;,^In;c-Cg
+;Gp@g:Jakb:JOYZr_<Yo:/Fea:/1^`%Sfer:JO\]:/+GY:esn^mns!Kr'L?Lr'^QRs$lrWIRm%%
+8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93b
+Pa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihlPcHstfeCN7(g=tE=hr*JQj5f@bkNV6r
+lg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LB6K-#UT_2pXT,F&Y5b^(YQV5:ZF%";[0a:N
+\%&u[]=bhkrkJKKp;-I>!5nfPotpUB!5e`Or5/EKs2+fR!Q;nT`9P>A`;IRS`;IUP`W4!W`rF'Z
+aSX*Zap-&5bg+P]dJhQId=?h$KSG5;M2I7NNfT9aP*;/rQC+&-S"#q>StD[LU8+N[V5C/gW2Zbr
+WiN2%rN6+&ribjrric@)rN6+$!3?+!:T::kVl-DgUnjc\U7n9RT:VXES"#k7R$a5+Q'IStP*(ie
+O,f3YN/EIKLkg_>KnP)2JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D#S2RC2%?pB4h-S!G#^>
+@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J0(D
+6hNe>6%T&es8Ds/q>0RGo'l,2jl57Xhqd)Bg&B\2e^Dmnd*U%]bPoU$aN)<>_o9R6a2>X-_7mRm
+\@AfL[C3KN[^Gq>ppKubrBgHMr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?=.,M
+@qB4aBPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s
+_SjF7aihoQcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L>%M\uIYNgMM#E2+MZ/P.NW5%:O8G%*OoC[>
+Qi!'KQi<<KQhm$FQN3EAQgg==Qi*-MQ'VE9!1*SM".5LFS,8^/SUc<EKSG5;M2I7NNfT9aP*;/r
+QC+&-S"#q>StD[LU8+N[V5C/gW2ZbrWiN2%rN6+&ribjrric@)rN6+$!3?+!:T::kVl-DgUnjc\
+U7n9RT:VXES"#k7R$a5+Q'IStP*(ieO,f3YN/EIKLkg_>KnP)2JUi9#IXQWlH[:!`G^"@TF`__H
+EcH)<Df0H0D#S2RC2%?pB4h-S!G#^>@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k
+:]F2f:&dod9D_?\8cD9V8,YpT7J0(D6hNe>6%T&ert#.kcHWi-YcP%2Xf8:tVksBf.\`W/TUq[E
+S=?"8Q^F,+QBd\uP*2#mOckliNf]?_NfB!TLPUhGMMd7HnVI7'qa(0IrBpKNs$crWrC;<-8P)NH
+91qrQ9hnJ\:f1+h<)lt"=BSg3>[:ZC@:E_XAS5[kCM[m,EH6/DGBeF\I=Hd!K8#&:MN!OUOckro
+R$jG7StMdQV5L8lXKA\2Za@0M\\#Mg^VRe*`Q60Ebg"G[dF6Urf@\g3gtglGiSrnYk2tjkl0@X%
+mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0L6UjL9928:K:utRQ;#a>X:@_Qb=9)M'=Su>!
+=T2G(>$9`boN)#prE8nt!*T;)s&oA(/qAP+KSG5;M2I7NNfT9aP*;/rQC+&-S"#q>StD[LU8+N[
+V5C/gW2ZbrWiN2%rN6+&ribjrric@)rN6+$!3?+!:T::kVl-DgUnjc\U7n9RT:VXES"#k7R$a5+
+Q'IStP*(ieO,f3YN/EIKLkg_>KnP)2JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D#S2RC2%?p
+B4h-S!G#^>@KBnFra,n:?!U]?>?b;1=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9D_?\8cD9V
+8,YpT7J0(D6hNe>5n!&In+6/Ep\=R]r;M9INW0?nIqN:q=&i:$<)rlq#ZO`#;,L4h;,R6f!_uHa
+r_<r!:/4S]:/=SZ9hnGZ:eq!c#>Ruf:Jah_:%(sV62a.K6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<.&=^#$7?!^lH@Uit\B4u$qCi402EccGJG^=^bIt3-'KnbGAN/`m\P*D6!R@Bb=TV80X
+Vl6VsXfo"9['mHS]=bkm_8=.0aN;WLc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRra@NTs_E!XT,F&Y5b^(YlD!.Z3%A>[/RK5
+[Ka4N\[oDc^AbnI_">J<_Z%IM_=kb>_>M1L_#V@O_Z@]prl"fTrP\6FrP\KMpr3BUaN48#s2m4B
+bg"GZcd:(eJV/T/L51VBMi<XVO-,ThPa.Q$R$jG5S=Q7DTV8*TUnjiaVl-JmWiE,#XT#@%XoP[&
+Yl(d(ZM_!*YlCp,Y5YR'X8o=#WWfB#Vl-DgrhN;aU7n9RT:VUDS"#k7R$a5+Q'IPrP*(ieO,f3Y
+Mi*@JLkg_>KnG#0JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$Bk_6oB4h-S#%V4Q@UW\Q
+ra,\4?2e(1>?Y50=TV],=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9DhE\8cD9W8,PjS7J0(E6hNe=
+6%T&es8W*Zq>BaQoC;/0jPo+VgtUZ>g=k?8e'cXjcHXVXaiMWFaN)9<_o0L6a2,O,^V%4i\$iQI
+[C3KN[^Gq>ppL#cr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?XI5N@qB4a
+BPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7
+aihoQcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRq-D[I><dMM#W>-MZ&J5N;8J5Nr>%8OR&&+
+QM-[=QMd*GQL:+*QM[$GQN!6NQN!3QR$jD4r1#<hK7el4LP^kGN/`mZOckomQ'Rc(R@B\9SXuIH
+Tq\<XUnsrdVl6SpWiN2%riQ4'!3c:(r3?1*r3?1(s0)I*riQ4%!3?+!"f\GuVl$<iUe[\ZTqS-O
+St2C@S!ob4R$X,(Q'7AoOcYWbNfB!UMM[1GLPCP;K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9
+DJj<-CMR[!BkV0mB)Z?GA7K(X@:<RC?NFJ=r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mis%`Jd
+s%NDbr(?oZr^clUr'pTQogJUCog8=;JcC?%&(]"@[^`NEY-+k+W2QViU]."fT`:SuSXc4>R@0D/
+Q^*o%Q'@GoPEM)mP*,a)%$$=,Mi*:GMMm@LM2:\Y!/g\?r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V
+:Jakb;H$Op<`W=*>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.D
+TqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihoQcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/bQoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRmfe<924bLj\btQ!)MiSn6,Her)rr"r)qiX
+p/h5qs&o,!!*T;)s&gn(K7el4LP^kGN/`mZOckomQ'Rc(R@B\9SXuIHTq\<XUnsrdVl6SpWiN2%
+riQ4'!3c:(r3?1*r3?1(s0)I*riQ4%!3?+!"f\GuVl$<iUe[\ZTqS-OSt2C@S!ob4R$X,(Q'7Ao
+OcYWbNfB!UMM[1GLPCP;K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BkV0mB)Z?G
+A7K(X@:<RC?NFJ=r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mis%`Jds%NDbr(?oZr^clUr'pTQ
+ogJUCog8=;$L[BSo_/%SqYU3iJcCf2#jS%&@pE/<=B>E##uXVt<)can;,C0i;#jDk;#X2n9hnGZ
+:/:dar_=&$9MS>Y:ejb]:/4MX:Jah_:%(sW62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l
+<E<.&=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIt3-'KnbGAN/`m\P*D6!R@Bb=TV80XVl6Vs
+Xfo"9['mHS]=bkm_8=.0aN;WLc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKmm)mf2_ZnF?)?oCW%T
+!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRrF%GU9pifXT,F&Y5b^(YlD!.Z2q;=rjDd7
+$+IFT]">Vg^;%G^_">J<_Yh=H_>1t>_>V7N_$7co`5BO4`VIIA`W!dV_o2Mm!65#WpW!-PrlP2_
+1!@ebcHjh`JqJ`2L5:\DN/WdXOHPckQ'I]'R@9V8SXuIHTq\<XUnsrdVl6SpWiN6#XTGZ/YPtd*
+Z2V'$Zi790Z2Lm.YHG&-XT>N(ri/DdW2HPjV59u`US=HUT:VXFS=?":R@'A.QBd\uP*1rhO,o9Z
+N/NRMM26qAKnP)2Jq8H&IsufoI!^0bG^"@TF`__HErL%bE,TW3D/=!'C2*Z\&8,TdARo=]@U`bS
+?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([2br_*/]r^m&ZqFCKRr'g6Gq*XgA
+og+0/K)[_(qY'=Io^D&+jPf%Sgt^`AgY:H4dEg1dccs\VaMl6A`l5j6`59O6`4s(&^V.:i[C3?G
+[.Lg%[JW>g6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27X'
+DfKf>Fa&(VH[UBoJqJc3M2I7OO-,TiQ'du/SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Tg>bKS5V
+d*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>A
+J,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRq$;YI>!:CM#W>-MZ&J5N;AP6Nr>%7OQho&
+QMHm=QMm0HQLpO/Q2m9NQMHmGQN!6LQN*:*R$jG6S"#"^KSG5;M2I7NNfT9bP*D5sQ^F20S"-%@
+T:hmPUSO]^VPg>jWN)u!XT#='Y-5&.Yl:p,ZLkL&ZMq--YQD#2Y5YO(XK2?#7B*5`Vl$;eUnjc[
+TqS*MSt2C@S!ob4R$X,(P`q8nOcYWbNJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?jaZGBS+NFE;L%
+E=$T&DJj<-CMR[!rb)jUAn>OaA7K(X@:<PN?X@&Er`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mi
+s%`Jds%NDbr(?r[rCHcTrC6]RoL/LBog8=;JcCH($LuKh\[JiIYHP%-rhomoUS@a_#GIf^SXl7>
+RJrQ[Q^3l$Q'7DoP*5g,"-S_,O8b.BN/ELJM#E22M=?<$M>T[;6N':L7/o^U7f>i+84cBF8kVfN
+9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[UBoJqJc3M2I7OO-,TiQ'du/
+SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Tg>bKS5Vd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"m-X6@
+mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRmfe<9MA1K;!(XR:]O;R:@MEX=T)D$=Su=Z
+=9;W-=S>hg=9)M'=t5,VKSG5;M2I7NNfT9bP*D5sQ^F20S"-%@T:hmPUSO]^VPg>jWN)u!XT#='
+Y-5&.Yl:p,ZLkL&ZMq--YQD#2Y5YO(XK2?#7B*5`Vl$;eUnjc[TqS*MSt2C@S!ob4R$X,(P`q8n
+OcYWbNJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?jaZGBS+NFE;L%E=$T&DJj<-CMR[!rb)jUAn>Oa
+A7K(X@:<PN?X@&Er`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mis%`Jds%NDbr(?r[rCHcTrC6]R
+oL/LBog8=;$1IEVp@nCZqu$GEs,d6ebDU.G>?P$/<E9#ss&'#";c6Li;Z9N%:esk`:JX\[:/=V\
+:&Icl9i"DW:/=V\r_<Pi:JOX`:B=9dmns!Kr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op
+<`W=*>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$
+YHbF@[^WfZ]Y;.s_SjF7aihoQcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lb
+p@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRr!S;V66\rX7E@lXoGU'YlD!.ZN%92[/IB:
+[^`lZ]=krX^]2+?_>1tJ_ZRcn_SZ;fpqcgDo"k4?!5nHIpVd-Nqo/HNrl+oWs2F`P"NSU(aN4A&
+0?VJ]bg"GZc\$q+LP^kGN/`mZOckomQ'Rf)R[]h<StD[LU8+N[V5L5iWN)u!XT#=&Y-7i/s0;U0
+qm5t&qm6=.s0;R-$a6_9Xf\\+X/`2!W;`\_VPU)aUS=HTT:VXFS=?":R@'A-Q'IStP*1rgO,f3Y
+N/NRMLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TF`__HEcH)<DuOVlD/=!'C2%?pB4kgfARo:\@U`bR
+?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8bs%E5]r^m&ZqFCKRr'g6Gq*XgA
+og+0/K`<e&qsO"Fna5N#jPf%PgYCW@gY:H3dF$:ebfn8PaN)BA`5KR1_8F=5_S3k$]tCqd[f3T:
+[CE]U\$u1Aq6g)cr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<`W=*>$G6;?XI5N@qB4a
+BPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7
+aihlPcHstfeCN7(g=tE=hr*JQj5f@bkNV6rlg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRpKfMI>*=CM#W>/MZ&J5N;8J5Nr>%7OQ_i"
+QMQs=QN!6IQMHm/QN*<OQM?gFQN*<MQN*9PR$mrC-\I,-LP^kGN/`mZOckomQ'Rf)R[]h<StD[L
+U8+N[V5L5iWN)u!XT#=&Y-7i/s0;U0qm5t&qm6=.s0;R-$a6_9Xf\\+X/`2!W;`\_VPU)aUS=HT
+T:VXFS=?":R@'A-Q'IStP*1rgO,f3YN/NRMLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TF`__HEcH)<
+DuOVlD/=!'C2%?pB4kgfARo:\@U`bR?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYi
+rD!8bs%E5]r^m&ZqFCKRr'g6Gq*XgAog+0/L]7M:c,d?%riZg7XK&7uVPBo\USFNUT:Z%Ps-`nS
+s-F1\Q'ISsP*(ohOctrjNrG(CNJrgSLku%f!f;ekn;-s-r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V
+:Jakb;H$Op<`W=*>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"6.D
+TqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihlPcHstfeCN7(g=tE=hr*JQj5f@bkNV6rlg4$,s6g-\
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRm]\98kVqK:utRR:]O;R:B+,h=RfPb=T2J%
+=Su=Z=T;P'=S>hi==RHW>(_N`LP^kGN/`mZOckomQ'Rf)R[]h<StD[LU8+N[V5L5iWN)u!XT#=&
+Y-7i/s0;U0qm5t&qm6=.s0;R-$a6_9Xf\\+X/`2!W;`\_VPU)aUS=HTT:VXFS=?":R@'A-Q'ISt
+P*1rgO,f3YN/NRMLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TF`__HEcH)<DuOVlD/=!'C2%?pB4kgf
+ARo:\@U`bR?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYirD!8bs%E5]r^m&ZqFCKR
+r'g6Gq*XgAog&iQoChtTqYU2As,d6nY^C%i>?=m,<)cdq;c-Ck;Gp?j;?B]l:]=/u:JFS[:Jae]
+9heDZrD!Sk:/+JZ:/=X`:BXEg:espV;>WZW6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat
+<`iL.>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[UBoJqJc3M2I7OO-,TiQ'du/SXuLJUnsufWiW>+
+Z*UgG\%0,`^;%M$`5Tg>bKJ/Ud*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?d
+p\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRq[,,U7\HjX/klo"0J`0YPk^*Z2_-0Zi@E3
+[0F(K\@T;b^&GeH_"#8;_Z.ON_Y_.F_>1t>_>;"K_t:n:`VIFP`Uh+La8O*ZaYq;bbKS5VKS>/:
+M2I7NNfT9bP*D5tQ^F21S"6.BTV8'SUnjibVl6SpWiN5'Xfek2YctC;ZMh-/[/IE.[f*W5[/I?2
+ZN%3/YQ:r1riH@*X/`2!W;`\qVPU)aU7n9RT:VXFS=?":R@'>,Q'IStP*(ieO,f3YN/NOLLkg_>
+KnP)2Jq/B$IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?pB4baeARo<M@KBnFra,_5?![G7
+!F&b,=oVV(=8l5%<E)rr;u]_q;>j>j:]F2g:&[id9D_?\8c;3V8,YpT7J'"D6hNe=6%T&kruq@9
+r9a+HnEK,sjPf"OgYUcAgY16+d*U+ac-"/K`lH*<rPKAe`5fd1^q[Us]XYAXZEgjF[C<WQ\,!K.
+[JN8f6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27X'DfKf>
+Fa&(VH[UBoJqJc3M2I7OO-,TiQ'du/SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=l
+f%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRpKcKI"$a+nqd7$rJLQ3s,?f6s,R&=pQ4U$
+s-<;Dq3U]=rKmPM!1!MKs-N_Ns-Mf4o9]KCrg3SLs-GO/R[\taL5:\DN/WdXOHPckQ'Rc(R@B\:
+St;UKTqeEZV5L5iWN)u!XKAV-YHP17Z*CV5Zi7?1[J@90[JmQ3Zi@?2Z2Us.YHIl,"g"c)Wi;rr
+VcK[kUnj`YTqJ$LSt2C@S!ob4Q^3o%P`q8mOH5H_NJrgSM2@%DL5(D8K7ec+J:E#rI=-BfH?jaZ
+GBS+NFE;JBEH#i6DJa3+CMR[!BP;$jAn>OaA,]p<@:9(A!a]/<r`fJ.>5h\)=T;J%<WZ9#<;fbq
+;?0Sm;#X8j:Amod9`Ic_9)_E\8GYjT7f5^I7/94C6M3Wqs,$b!e^D+;[B6X9Y,\M#W26;bU8+KX
+TV%dFS!ob5R$a5*Pa232#EY(0P*1rgOSt1EN/ELJLl%"Hre^-#qa(-HrBpKNs$crWrC;<-8P)NH
+91qrQ9hnJ\:f1+h<)lt"=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=Hd!K8#&:MN!OUOckro
+R$jG7StMdQV5L8lXKA\2Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Urf@\g3gtglGiSrnYk2tjkl0@U$
+mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRm]S58OuVH;!(XT;#a>R:B+,i;#=Ac=n>bo
+=oDJ#=l3?[=oVUu=8,hs=YPM_L5:\DN/WdXOHPckQ'Rc(R@B\:St;UKTqeEZV5L5iWN)u!XKAV-
+YHP17Z*CV5Zi7?1[J@90[JmQ3Zi@?2Z2Us.YHIl,"g"c)Wi;rrVcK[kUnj`YTqJ$LSt2C@S!ob4
+Q^3o%P`q8mOH5H_NJrgSM2@%DL5(D8K7ec+J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa3+CMR[!
+BP;$jAn>OaA,]p<@:9(A!a]/<r`fJ.>5h\)=T;J%<WZ9#<;fbq;?0Sm;#X8j:Amod9`Ic_9)_E\
+8GYjT7f5^I7/94C6M3VLo(;_QqYU9kJcCr6$KR[rAQr;=<`N.!r_a)#;c6Om;,U:h;,I3erD"2*
+:/4JX:Jae^9i"JY:/=V\:JOYZ:JO\\r_EPh;XdQ\62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<.&=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIt3-'KnbGAN/`m\P*D6!R@Bb=TV80X
+Vl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRqHr$R%COnoW8(p!NrX'YlD!.ZN%62[/RH=
+[^`lZ]=kqm^])%<_>D(L_t_+D_#2%E_XkV?_Yh=H`:1bA_uRdJ`rF*Wa>:r\bKJ+_L51SAMi<XV
+O-,ThQ'I]'R@9V8St;RJTqeEZV5L5iWN)u!XKAV-YHY79Z*OA8s0Vg6ppU12ppU41s0Va2A?rJF
+Yct=7Y-"h-X/`2!WMl_mVPU)`U7n9RT:VXFS=?"9R$a5+Q'ISsP*(ieO,f3YMi*@JLkg_>KnP)1
+JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Chmg$C2%?pB4h-S!G#^>@KBnFra,\4?2e+/>6%k+
+=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J0(D6hNe=6%T&mrsef#p@.YC
+m-!Nmj5A_JrnSsWgY(*'d*L"]bfRrG`Q6':_Sa:-_oBX1^VIUt]XbP\['R*H\@9!I\,!K.[JN8f
+6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27X'DfKf>Fa&(V
+H[UBoJqJc3M2I7OO-,TiQ'du/SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.
+gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRp0EBG^P7*r.tB.qhY3-q2531s,?i7s,R&=
+pQ4O"rK[,Cq3U]=rKmPMs-<AF!12u:!13VLm[*m<s-GC+KSG8<M2R=PO,oEdPEhE"R$jD4S=Z=E
+TqS6WUnsueW2ZesX/rG*Y-5(6Z*CV6Zi@E4[J730\+mE3[K!W4ZXgAHZ*:I9YHG"0XK/A$WMuho
+Vl$;dUS=HUTV%gISXc1=R@'A.QBd`"P*1rhO,o<\N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOW
+G'.nKF)l8?E,TW3D/=!'C2.HrBP1rVAH?=OraGn:@/aL6?=!P8s'#J,r`T8'!*B/#s&K(ur_rhp
+s&&_ks%iYir([2br_*,\r^m)[q+(BQr'g9Hpd=^@og+0/N;j7Rd*B,0['-[9XJu2ts._!:US=KU
+T:VUDR[KS2R$X/)Pa.JsP*(lfOckffNfT3]NJrgSM27%HrJC!!qa(-HrBpKNs$crWrC;<-8P)NH
+91qrQ9hnJ\:f1+h<)lt"=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=Hd!K8#&:MN!OUOckro
+R$jG7StMdQV5L8lXKA\2Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Urf@\g3gtglGiSrnYk2tjkl0@U$
+mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/eRoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LRmTV48kD_J;#*uc;"IQa;#a>S:B+,f;#"/b
+=n>bo=oDJ%=TMW-hcTeZr`JttpK0&$L51SAMi<XVO-,ThQ'I]'R@9V8St;RJTqeEZV5L5iWN)u!
+XKAV-YHY79Z*OA8s0Vg6ppU12ppU41s0Va2A?rJFYct=7Y-"h-X/`2!WMl_mVPU)`U7n9RT:VXF
+S=?"9R$a5+Q'ISsP*(ieO,f3YMi*@JLkg_>KnP)1JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0
+Chmg$C2%?pB4h-S!G#^>@KBnFra,\4?2e+/>6%k+=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&dod
+9D_?\8cD9V8,YpT7J0(D6hNe=5m6fRq>:)@s-!BbaGObD>5hS-<E)jo;c-Ek;ZK_p;'\t6:f'qa
+:/+JY:ese\9heAY:JOYZ9MSAY:JO\[:ejh_:/=^c:[_0X62X(J6i9@P7K5jU7t+!#8P2TJ92&&S
+:/=\_;,U=l<E<.&=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIt3-'KnbGAN/`m\P*D6!R@Bb=
+TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_Z
+nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!e>QOeB(jorJ7tY-+u*YlD!.ZN%62[/RH;
+\%&u\]Y;,Y_!f,:_>qLJ_Y(_C_>;%>_>;%H_t_1?`V@@O`Uh(Na2Z0ta=bWYKnbA>MMmFRO-#Nf
+Pa.Q%R$sM7SXuIITq\?YV5L5iWN*##Xf\b0YctC;ZMq03['d=?[f3c.\Giu8[f<`8[/RE3Z2h0/
+Y[4N9Xf\\*WiE%tW2HMhUnjc[TqS-OSt;LBS!ob4R$X,(P`q8nOcYWbNJrgSMM[1GLPCM9K7ec,
+J:N,uI=6KiH?sg[GBS+NFE;MDEH,r9DJj<-CMR[!BkV0mB)Z?GA7K(X@:<RC?NFJ=r`fM/>$Co.
+!a&N*r`9&!s&Atrs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RogJRBog8=;JcCZ.,5;!&o();5
+k2taai8!)Bh;$c<f[8*nc-=JUaiMNB`l,d3rk\WQ'>_E!^:h.h\@/cMZEpsI\$rcS\+7!(62X(J
+6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<.&=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^b
+It3-'KnbGAN/`m\P*D6!R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8
+h;@/LioB+^k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!df)G'o%'rJ:?+s+pW1q2531s,?o9rf6r<
+p5nBuqj$oAqNpc=s-N_NrKZ?-s-N\MnWs<EQ^@Z:/XM0GLP^nHN/is\P*2&pQC+&.S"-%@T:qsQ
+UnjibVl6SpX/rG*Y-5(6Z*CV6ZN@MA[JdQ5\+I30\,<]7[/dT5Zi@<2Z2Ut6YHG"0XK/A$WMuho
+VPU)aUS=HUTV%gISXZ+;R@'A.QBd\uP*1rhO,o9ZN/NRMM26qAKnP)2Jq8H&IsufoI!^0cG^"@T
+F`__HF)l8?E,TW3D/=!'C2%BqBP1rVAHl[T@U`bS@/aL6?=!P8!aAi3r`K;)=',B%s&K(ur_rhp
+s&&_ks%iYir([2br_*,\r^m)[q+(BQr'g9Hpd=^@og+0/NrKC>e@r?#YHY45ri,pqs.fUg*MK4#
+SXl:?R[TV1R$X,&Pa%ApOcb`dOcb`cOH,A#N!>2sLPUeEMZ/J%M#'F86N':L7/o^U7f>i+84cBF
+8kVfN9heAY:f("e;cHat<`iL.>?kH@?X[DRAS#LfC27[(DfKf>Fa&(VH[UBoJqJc3M2I7OO-,Ti
+Q'du/SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!c]78kMiRohbH]qbZo^s%r_kk"bqPqbZrf
+p0$rgrE9&#s&n/[qcWo#qH*Jp/;8h6M2I4MNfT9bP*D5tR$a>3S=Q7DTqS3VUnsueW2ZetXKAV-
+YHY79Z*OA8!joACrO2^7oXOn0r3lX5!4;a3s0;X0rif_4Y-"h-X/`2!WMl_lV50o^U7n9RT:VXF
+S"#k7R$a5+Q'@JqP*(ieO,]*WMi*@JLkg_=KS+o/JUi9#IXQWlH[:!_GB\4QFEDSFEcH)<Df0H0
+Chmg$Bk_6oB4h-S#%V4Q@UW\Qra,\4?2e(1>?Y50=TV],=8l8#<W?%t;u]bq;>j>k:]F2f:&dod
+9D_?\8cD9V8,YpT7J0(D6hNe=5m$cVqgnd2rtt@(G@t,_=BAO'<)QUn:f11i;Gg:h:f1*g:]F,o
+:/Fb^:/"AVr_EYl9h\;Vr_<hs:/4S[:JX_]:esmd;Y!]]62X(J6i9@P7K5jU7t+!#8P2TJ92&&S
+:/=\_;,U=l<E<.&=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'KnbGAN/`m\P*D6!R@Bb=
+TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_Z
+nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!e/EP+f7[pT4Cs!NrX%YlCs;ZEppF[C*HP
+\[oDd^VB`_m_SD0o"b7@qSMd=pqm'Ks24oVqo&$Dq8E<Pn](ULrQ,"n.#<_;N/`mZOckonQ'[l+
+S"#t?T:hmPUSO``Vl6SpX/rG*Y-5(6Z*OA8!joACrjMj9rj_I.s1&*<rO2a6!4;a3<O/m7Yct=6
+Xf\\*WiE%sVl-DgUnjc[TqS-OSt2C@S!ob4R$O#&P`q8nOcPQ`NJrgSMM[.EL5(D8K7ec,J:N)s
+I=-BfH?jaZGBS+NFE;JBEH#jqD?XlnCMR[!rb)jUAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*
+r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RogJRBog8=;JcCc1rq\YDoC;,/k2bU^
+hV6iAh:pW7e'ZOgc-4ASaMu3<`5BI._SF(/^qIOt^:_(g\$`QKZF.0N\@/iT\+7!(62X(J6i9@P
+7K5jU7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'
+KnbGAN/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/L
+ioB+^k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!dZ"FF/apLktq`s+pW1q2531s,?o9rJpo=
+o8r'rs-3DGs-<YOqNguEm?[[8s-E\Mk*H"5rg*)@s-NeQrg*S=.#<_;N/`mZOckonQ'[l+S"#t?
+T:hmPUSO``Vl6SpX/rG*Y-5(6Z*OA8!joACrjMj9rj_I.s1&*<rO2a6!4;a3<O/m7Yct=6Xf\\*
+WiE%sVl-DgUnjc[TqS-OSt2C@S!ob4R$O#&P`q8nOcPQ`NJrgSMM[.EL5(D8K7ec,J:N)sI=-Bf
+H?jaZGBS+NFE;JBEH#jqD?XlnCMR[!rb)jUAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!
+!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RogJRBog8=;JcCl4+SO1+\@8oMYHFq)WMlbl
+UnXWYU7\$JSXc1<R@'A.Q^.Q7&<i9=OH5NeOH5K_NJrgUMi%Fh",_qlMXH;s62X(J6i9@P7K5jU
+7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'KnbGA
+N/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^
+k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!cZ48P;`NpJCZ_q,$`]s%r_kk>)%Qq,$Wa
+pK@#gs&mlSq,m]"qH*Prs+VqXM2I7OO,oEdPEhE"R$jG5SXuIHTq\<XV5C/hWN*##Xf\b0YctC<
+rj)[5[C-"Bs0r!;n@AS/s0qs8s0Vj6rj,V1Z*CO;YHG"0XK/A$WMl_mVPU)aUS=HUTV%gHS=?":
+R@'A-Q'IStP*1rgO,f3YN/NRMLkg_>KnP)2Jq8H&IXQWlH[:!`G^"@TF`__HEcH)<DuOVXD/=!'
+C2*Z\&8,TdARo:\@U`bR?sd8I?=!P8!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([2br_*,\
+r^m)[q+(BQr'g9Hpd=^@og&TUJcCr6#gn]M@p<&:<`T,t$W0f";c?Rm:f:+f;>j;j:&dug:B4)f
+9asln9hnGW9heAW:/F\]r_<Ji:B"#l:ejkc;Y!]]62X(J6i9@P7K5jU7t+!#8P2TJ92&&S:/=\_
+;,U=l<E<1'=^#$7?!grI@Uit\B4u$qD/O93EccGJG^=^bIt3-'KnbGAN/`m\P*D9"R@Bb=TV80X
+Vl6VsXfo"9['mHS]=bkm_8=.0a2lEHc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!e)ANhN2GX8/jsXoGR'YPbU-Z*L[A[/RH;
+\%&u\]Y;/Z_!Su+_XP>@_>1tA_>hCN_>(kM_o0L4`Vd[E`VIIP`U_#/`Q#s=aN0-nM2R=PO-#Nf
+Pa.Q%R$sM7St;UKU8+N\VPgAlWiN5'Xfek3Yd(L?Za@-J[^NZS\@DIIr4;j=qmu^9s1&*<rjI$Y
+['[0GZEga>Yck43XfSS'Wi;qpVl$;dUnaZXTqJ!KSXc1=R[KP0QBd`"PEM&iO,o<\N/W[OM26qA
+L4t;5K7\W(IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/F*)CMIQsBP1siAS#C^@q&nU?sm>K?=$q:
+>QS,5>5hY+=BAT'<rZ/"<;fbq;ZBVm;#a>k:Amod9`@]_9)_E\8GYjS7f>dJ7/0.B6M3Wqs,d7@
+pA=COo'ko,k2kU\gt^Z>gtLE4da?Ffc-=AOa2Z*<`59@+_84(-^V%=r]Xt\^[C!9FZaI6N\$l:F
+o!\B\r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8
+FEMePH@('iJ:`E-L5CeHNK93bPa7])S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihlPcHstf
+eCN7(g=tE=hr*JQj5f@bkNV6rlg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!dPrF*i@hqM5*,qMG--s,6o9rJgf:s,Z`4
+j,sA+qNV&Hrg3PKq3UK7pm($.r0RGLrg*VNop>ZFs->HrM2@.LNK90aP*D5tR$a>3S=Z=FTq\<X
+V5C/hWN*##Xf\b0YctC<Za7$H[C3NQ\%&sG\bs&;]DK2;\c92>\,Ng[[C!<IZa-mAYct=6Xf\\*
+WiE%sVl-DgUnjc[TqS-NSt2C@S!ob4Q^3o%P`q8mOH5H_NJrgSM2@%DL5(D8K7ec+J:E#rI=-Bf
+H?jaZGBS+NFE;JBEH#i6DJa6,CMR[!BP;$kAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!
+!*&nqs&/korD<Mis%`Mer_3;ar(?r[rCHcTr'pWRoL/IAog8=;JcCr6%cu*S[^NBDYHFn(WMl\i
+rhBFd-(ga!S=?"9R$j;-Q'ISuPEM)kO,oBaO,o<]NJrdQMM[.FMM[8jM=68s62X(J6i9@P7K5jU
+7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIt3-'KnbGA
+N/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0aN;WKc-F\`e'ut#f\5*8h;@/LioB+^
+k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!c]784Z?Ipe^c`pJCfcr)!Dhj\GhOp/(6\
+pf[;ms&o;&!*T/#!*@uYpf[Gpr)bb1M2@.LNK90aP*D5tR$a>3S=Z=FTq\<XV5C/hWN*##Xf\b0
+YctC<Za7$H[C3NQ\%&sG\bs&;]DK2;\c92>\,Ng[[C!<IZa-mAYct=6Xf\\*WiE%sVl-DgUnjc[
+TqS-NSt2C@S!ob4Q^3o%P`q8mOH5H_NJrgSM2@%DL5(D8K7ec+J:E#rI=-BfH?jaZGBS+NFE;JB
+EH#i6DJa6,CMR[!BP;$kAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mi
+s%`Mer_3;ar(?r[rCHcTr'pWRoL/IAog8=;JcCu7(Unj,?!1<2=&i3u;c-Ci;H$Ik:f1%d;>s>q
+:ea\[:ea^`9b:)p:/4JV:/=S[:/FY[:/Fac:'4<g:Jq*hnko6Lr'L?Lr'^QRs$lrWIRm%%8kM`L
+9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa7])
+S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihlPcHstfeCN7(g=tE=hr*JQj5f@bkNV6rlg4$,
+s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!du7MO^9>[JI!)XoGR&YPk[8Z*L^B['d<M
+\%'#]]tV8[_!Su*_Yq7>_"kk@_>_=M_>(kJ_o2Pnrl"QMs2=iSq8E<Pp;['Ms2P)Z0SbLBN/WdX
+OHPfmQ'[l+S"#t?T:qsQUnjlcW2ZesXKAV-YHY:;Za7$G[C3NQ\%)CIs183AoXt18rjr'=!k>_K
+rjDj8[/RC6ZE^X<YHG"0XK/A$WMl_mVPU)aUS=HTT:VXFS=?"9R$a5+Q'ISsP*(ieO,f3YMi*@J
+Lkg_>KnP)1JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D#S2WC2%?pB4baeARo<M@KBnFra,_5
+?![G7!F&b,=oVV(=8l5%<E)rr;u]_q;>a8j:]F2g:&[ic9DhE]8c;3V8,PjT7J'"C6hNe=6%T'"
+s#0cMqXF+FlfdKojl,.RgtLQ=g""^%dEp1abK7iI`Pfd8_SO%(^r=+%^qRLo\@/iQZa-mE\GE]+
+[eW5e6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(DfKf>
+Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Tg>bKS5Vd*^=l
+f%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!dPoEdE.fN;SJ2M"uo+MZ8V7N;eh8NrP12
+OQ)E$PkgUCQi36HQgg=5Q0">-QiEBGQi3:*LP^nIN/is\P*;/rQ^F21S"6.CTqS3VUo(&gWN)u"
+Xf\b0Yd(L?Za@*I[^NZS\G`u<])K>6]`,PB])B/@\@8sH[K3eCrj,_4Z*:I9Y-"h-X/`2!W2HPj
+V50o^U7n6PSt;LCS"#h5R$X,(Q'@GpOcYWbNfB!UMM[1GLPCP;KS+l-J:N,uI=6KiH?sj]GB\4Q
+FEDSEEH,r9DJj<-rbDjUBkV0mAnGUcA7PUJ!F]C8?NOP>?2e(0>?_#/s&f;&r`0)#<)ifps&&ho
+r)!Dhs%`Mer_3;ar(?r[rCHcTr'pWRoL/IAog8=;JcD#80@nR^[C*3AY,eS$WMlYhU8"?STq@mH
+S=?"8R@'>,Q'@JsPEM&jO-#KbNfK*ZN;e_@M2-nDMMd7HM=68r62X(J6i9@P7K5jU7t+!#8P2TJ
+92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\P*D9"
+R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0aN;WLc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(
+mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!cZ47S-0H:\mo`;><ud;>X2i:ZY@O:\@QO
+=SZ+n=T2Is=T2CZ=SQ#!=Su8!=>5MeMN!LSO-#NgQ'I]'R@B\:StD^MU84T^Vl6SpWiW>)Y-5(7
+ZEpmE['d?N\$rmG\c98?]C`c8]DfD?\H9:M\,Nf:[C#q>=L,39Yck43XfSS'Wi;qpVl$;dUnaZX
+TV%gISXc1=R@'A.QBd`"P*1rhO,o<\N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?
+E,TW3D/B2e$>O9gBP1phAS#C^raGn:@/aL7?<pk9>QJ&4r`T8's&]2#!``3!rDW_o!)`Yjs%iYi
+rD!8br_*/]r^m&ZqFCHQrC-?Hpd=^@og+0/Qi@obS8r4G=]nj-<)Zan;Gg=i;c6Ih;G^4fr_Eu"
+:/4S\9h\;V9hnGW:Amlq9MJ8Y9hnJZ:JFS[;#X8h;Y*c]62X(J6i9@P7K5jU7t+!#8P2TJ92&&S
+:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMBN/`m\P*D9"R@Bb=
+TV80XVl6VsXfo"9['mHS]=bkm_8=.0aN;WLc-F\`e'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_Z
+nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!dl4Lm4O:]_nl2XoGR&YPk^*Z2_*;Za@*I
+[C<ZW]=ktorkRm:m)&Y7n\G1@r5/0DrPJEIqn`BO`;IRS`:q7M`;R[N`;dgR`qRG%`e]J/N/`mZ
+OckroQC+&.S"-(ATV8*TUnsueWN)u"Xf\b0Yd(L?Za@.>[K3kIrji'?s1A0@pV$I:s1A<BrOH^R
+\$rfS[C!<IZa-j?Yck43XfSS'Wi;qpVl$;dUnaWWTV%gISXc1<R@'A.QBd\uP*1rhO,o9ZN/NRM
+M26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=!'C2%BqBP1rVAH?=OraGn:@/aL6
+?=!P8s'#J,r`T8'!*B,"!``3!r_rhps&&_ks%iVhrD!8bs%E5]r^m)[q+(BQr'g9Hpd=^@oKe'.
+Q2gm\2tch3m-*QnkiC^\h;$`>gXk!,d*^1bc-"/Lai;<=`59=+^VIe']t_7n]=GAYZa6pD\%&rW
+[f*],[eW5e6N':L7/o^U7f>i+84cBF8kVfN9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(
+DfKf>Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Tg>bKS5V
+d*^=lf%8R.gYCWBi8N\UjQ>Ufl07L!m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>A
+J,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!dMmDg$J_NrFh6M"uo+MZ&J3N;nn;NrP11
+OQ)E%Q2[$DPlR-KQfsb/Q2d'KQ0FS7Q2HsEQi<<EQRR`IMN!OUO-,TiQ'Rf)R[]h=StMdOUSO`a
+Vl?\rXKAV-YHY:;Za7$HrjDj:\Gj&=])TD>]_B,:]`5VD])B0T\@8rU[^EKLZa6sBYct=6Xf\\*
+WiE%sVl-DgUnjcZTqJ$LSt2C@R[KP1Q^3o$PEM)kOH5H^N/W[PM2@%DL4t;5K7\Z)J:E#rI=-Bf
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIQtBP;$jrac+@A,]p<@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#
+<;ohr;ZBVm;#a>j:Amod9`Ic_9)_E]8GPdS7f5^J7/0.B6M*Qps-Wfun']+`[BQm;X/`2!WMcSg
+US@a\"eV?WS!ocEQl;<WQ'@JsOckffO-#KaNK/sWN/NRNLkphCM>iA4M=68r62X(J6i9@P7K5jU
+7t+!#8P2TJ92&&S:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMB
+N/`m\P*D9"R@Bb=TV80XVl6VsXfo"9['mHS]=bkm_8=.0aN;WLc-F\`e'ut#f\5*8h;@/LioB+^
+k3)!nlKdg(mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!cW67S6<J:]+&b;>j>g:]!ug:]F5k:ZY@O
+:\@Nb:Jg:Xr)r_qrE8hrrE%oZpf[W!qc>5&M2I7OO,oEdPa.Q%R$sM7St;UKU8+N\Vl-MoWiW>)
+Y-5(7ZEpmE[JmT8\%)FJs186Bqn2[:qn2s@s180>CUgj_[^NTN['R*EZ*:I9Y-"h-X/`2!W2HPj
+V50o^TqS-OSt;LCS!ob4R$X,(P`q8nOcYWbNJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4Q
+FEDSEEH,r9DJj<-CMR[!BkV0mB)Z?BA7PUJ!F]C8?NFJ=r`oJ-!*]A)s&]8&rDiu"<)iiqs&/ko
+rD<Mir_EDdr_3>bqb$iZr^ciTrC6]RogJRBog8::JcD/<%)n$<?<^N2=B&3s<)NWms&0D*;,U:f
+:f1"c:Jae]:J^p`"&;Qb9`@`u:/"AV:/FYZ:JO\[:/=\_9i:jeo25<Lr'L?Lr'^QRs$lrWIRm%%
+8kM`L9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@1-jJ:`E-LP^nINK93b
+Pa7])S"6.DTqnN_W2cr$YHbF@[^WfZ]Y;.s_SjF7aihoQcHstfeCN7(g=tE=hr*JQj5f@bkNV6r
+lg4$,s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fXbLQJ4;Zi$m+Xfei*YPk^*Z2_*9Za@-J
+[^WfZ]Y4<Zs1ms:lb`P6n%et>rPIm:qSN9No#:RGr5JQOs2=uXo>N8:M2R=QO-#NgPa.T&R@B\:
+StD^MUSO``Vl6VqX0&M,YHY:;Za7$H[^NZTrji'?!5&3Brk86DrP/6Drk89Cs189Brji'=!4Vs9
+;mj!=Za-j?Yck43XfSS'Wi;qpVl$;dUS=HUTV%gIS=?":R@'A.Q'IStP*1rgO,f3YN/NRMM2-h?
+KnP)2Jq8H&IsufnH[:!`G^"@TF`__HErL%bE,TW3D/=!'C2*Z\!G?$DAHl[T@U`bS@/aL6?=!P8
+s'#J,r`T8'!*B/#s&K(ur_rhps&&_ks%iYir([/as%E5]r^m)[q+(BQr'g9Hpd=^@oKe'.R/[Ei
+pA+@KlK[L1joXQ$i;VLSgXt*+e'ZOgc-4>PaN;H@`5KO._7me)^V%:o]=GAY[/R?4[C3O1\+r>f
+6N':L7/o^U7f>i+84cBF8kViO9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(DfKf>Fa&(V
+I!pKpJqJc4M2I7OO-,TiQC+)0SXuLJUnsugWiW>+Z*UgG\@K5a^;%M$`5]m?bKS8Wd*^=lf%8R.
+gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fXRDKL;^MZ&>1M#3&-MZ&J3N;nk=NfT7j
+OPl9!PlR'EQ0jn6Q2R$GQ2?gGQ/\,,Qi36GQRmrLMi<[WOHPflQ'[l+S"#t?T:qsRUnsrdW2cku
+Xf\b0Yd(L?Za@-K[^WdG\c95@]D]DA^&5VC^\bbE^&>VD])]GA\c9/>\,Ng7[C!9HZE^X<YHG"0
+XK/A$WMl_mVPU)`U7n9RT:VXES"#k7R$a5*Q'@JqP*(fdNfB!VMi*@JLPCP;KS+o/JUi9#IXQTj
+H?sj]GB\4QFEDSErc&6`Df0H0Chmg$C&VcHB4h-S#%V4Q@UW\Qra,\4?2e+/>6%k+=oVS(=8l8#
+<W?%t;u]bq;>j>k:]F2f:&[id9D_?\8cD9V8,YpT7J0(D6hNe<6%T')rs7E.]=#&OXfJK#WW/e:
+UnaZWT:hgISXPt7Q^F/,QBd\uP`_,jOH5KbNfB$Wrepf5#D\+lM2I1HM=-2q62X(J6i9@P7K5jU
+7t+!#8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=acIt3-'KnkMB
+N/`m\P*D9"R@Bb=TV80XVl?\tXfo"9['mKT]=bkm_8=.1aN;WLcHaeae'ut#f\5*8h;@/LioB+^
+k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/hSoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fX46qC!FqG@&drD<Aer)!>fjA,_NoM>N`
+r_Vc[rE8hrrE8hrr)_iZpf[W!rDtP+M2R=QO-#NgPa.T&R@B\:StD^MUSO``Vl6VqX0&M,YHY:;
+Za7$H[^NZTrji'?!5&3Brk86DrP/6Drk89Cs189Brji'=!4Vs9;mj!=Za-j?Yck43XfSS'Wi;qp
+Vl$;dUS=HUTV%gIS=?":R@'A.Q'IStP*1rgO,f3YN/NRMM2-h?KnP)2Jq8H&IsufnH[:!`G^"@T
+F`__HErL%bE,TW3D/=!'C2*Z\!G?$DAHl[T@U`bS@/aL6?=!P8s'#J,r`T8'!*B/#s&K(ur_rhp
+s&&_ks%iYir([/as%E5]r^m)[q+(BQr'g9Hpd=^@oKe'.SGs8sVg)fY=BJX(;c?Xo;,^:h;H$Km
+;$p&o:esna:JOY\:Amm':/+DV9MJ5W9MJ5W9i"P[9hnDX:eskar)<Dhqbd/Tr'L?Lr'^QRs$lrW
+IRm%%8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@1-jJ:`E-LP^nI
+NK93bPa7])S"6.DTqnN_WN*&%YHbF@[^`l[]Y;.s_SjI8aihoRcHstfeCN7(g=tE=hr*JQj5f@b
+kNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fX^J<$>+VZ!RtXfei*YPk^*Z2_*9Za@-K
+[^`o\]Y=B[s1ms:lGEA3m_Jk=rke0@rkSQMqSE<O`5MSm!6"]Pr5ANPr5AEM!6"cR0St[GN/is]
+P*;/sQ^F52S=Z=FTq\?YVPgAlWiN5'Y-5(7ZEpmE[C3NQ\@K/]]"@sSs1SHHm_Ab8s1SEEs189B
+rj`'>\,Ng;[C!9HZE^X<YHG"0XK/A$WMl_mVPL#_U7n9RT:VUDS"#k7R$X,(Q'@JqOcYWbNfB!V
+Mi!:HLPCP;KS+o/JUi6!I=6KiH?sj]GB\4QFEDSEEH,r9rb_mVChmg$C&VcWB4b^dA7K+Y@UWYP
+?XI,G?2e(1>?Y50=TV],=8l8#<W?%t;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J'"D6hE_<
+6%T')s"sTIqXs.;ki:gdj5JqSgtUT:f[\Buda?@bbf\&KaMu6<`59=+^V[n']Y;(k\@/fPZa$k$
+\+r>f6N':L7/o^U7f>i+84cBF8kViO9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?
+Fa&(VI!pKpJqJc4M2I7OO-,TiQC+)0SXuLKUnsugWiW>,Z*UgG\@K5a^;%M$`Q$!@bKS8Wd*^=l
+f%8R.gYCWBi8N\UjQ>Ufl07L"m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fXOCNFlWK8>;<rJ:E/rJLQ3rf$l:s,R,?
+n;uOinWiX1p6GTBrg!8Cs-<DG!0ui8r0RDK!gT(;rKf3pMN!LSO-,ThQ'Rc(R[]h=StMdOUnjlc
+W2ZetXKAY/Yd(L?Za@-K[^WcW\[oAark/9Es1[p9rkAEGrk/9C!4r0?!P#W<[TBlDZa6sBYct=6
+Xf\\*WiE%sVl-DfUnaZXTqJ$LSXc1=R[KP0QBd`"PEM&iO,o<\N/W[OM26qAL4t;5K7\Z)Isufo
+I!^0cH$FOWG'.nKF)l8?E,Y_n"`8'kCMIS_BFnfgAS#C^@q&nU?sm>K?=$q:>QS,5>5hY+=BAT'
+<rZ2"<;ohr;ZBVm;#a>k:Adid9`@]^9)_E]8GPdS7f5^I7/94B6M3Wqs.00=q9m-i[Bm-<Wi<"t
+Vkp5cUS=HTT:hdHS!ob4Q^=)+QBd`"P`_,jOH0=$rf%/AMMd7ILkgfaM=-2q62X(J6i9@P7K5jU
+7t+!#8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O<4EccGJG^=acIt3-'KnkMB
+N/`m\P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/LioB+^
+k3)!nlKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/kToCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n0LS!fX27Rp*F:&7]b;>j>g:]+&f:ZP:N:\@Qa
+:]4,N=T2Is=T)Cr=Sl1Z=SQ&!=T;GVM2I7NNfT<cPEhH#R$sM7St;UKU84T^Vl6SpX/rG+YHY:;
+Za7$H[^NZT\[f;_]DfJC^&Ph7^](tI^&G\E])]GA\H04LrjGn9['R*EZ*:I9Y-"h-X/`2!W2HPj
+Unjc[TqS-OSt2C@S!ob4Q^3o%P`q8mOH5H_NJrgSM2@%DL5(D8K7ec,J:E#rI=-BfH?jaZGBS+N
+FE;JBEH#jqD?XlnCMR[!rb)jUAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!s&Atrs&/ko
+rD<Mis%`Jds%NDbqb$iZr^ciTrC6]RoL/LBoKr4:JcD>A(Y"Ub?s6Z4<`2go;H$Fh:f1.i;,C+c
+:&[rg:`)u':/=SY:/+GX9h\5T9hnGW9hnMZ:JO[a:&Rif;>aAg;Ys>e62X(J6i9@P7K5jU7t+!#
+8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit]B4u$qD/O<4EccGJG^=acIt3-'KnkMBN/`m\
+P*D9"R@Bb=TVA6YVl?\tXg#(:['mKT]=bkm_8=12aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!n
+lKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq0%YoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*Bq\b/hWB`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^]I#OYgX0A\,XfhW+rNQ=,s0D[2%(*FN
+\%'#]]tV7r^qf<QkJHr-qS3*IrkSQKqnVX9r4r?KqSN9Mrl"KKqS`<Nrl"]Q!li4!r5C(AN/`mZ
+OckroQC+)/S"6.CTqS6WV5L5jWiN5'Y-5(7ZEpmE[C3QSrj`'@]DfGE]tV5Y^\ttD_>V1I^]2%J
+^&GZn]=PSa\[],X[^NTNZa6sBYct=6Xf\\*WiE%sVl$;dUnaZXTq@pJSXc1=R@'A.QBd`"P*1rh
+O,o<\N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=$(CMIQsBP1siAS#C^
+@q&nU?sm>K?=$q:>QS,5>5hY+=BAT'<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]^9)_E]8GPdS7f5^J
+7/0.B6M*Qps.0/prq?0]mHE]nro=%;(Z4''g=t60eBu[ldETq[b/q`F`l5m6_>_4\_Sa.&]tM"e
+[^EHKZF.0Lm'laUr'L?Lr'^QRs$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?XI5N@qB7b
+BPM="DK'T9FEMePH@1-jJ:`E-LP^nINK93bPa7])S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_SsO9
+aihoRcHstfeCN7(g=tE=hr*JQj5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZe
+rdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*Bq\b/hWB`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^MBQAEHKSo_arJCK1rJUW5s,I&=s,ZZ2
+hN@8lnWrm6rKdGJpltfDi0O>.qNh/J.#NtCO,oEdPa.Q%R@9V9StD^MUSO`aVl?\sXKAY/Yd(L?
+Za@-K\%)FJ!P5oB]E5d\^APbE_"khF_#1tI^AknG]RIK(]",A]\$rfS[C!9HZE^X<YHG"0XK/A$
+WMl_lV50o^U7n9QSt;LCS"#h5R$X,(Q'@GpOcYWbNfB!UMM[1GLPCP;KS+l-J:N,uI=6KiH?sj]
+GB\4QFEDSEEH,r9DJj<-Chmg$BkV0mB4b^dA7K+Y@UWYP?XI,G?2e(1>?Y50=TV],=8l8#<<-"s
+;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J0(D6hNe<6%T'.rsRl:]sb;PXf88!WM]Zk"/M]d
+T`1PrSXc.;R@'>,Q^=#'Q'7DoOcPS%NrG%<MZeooLl$ufMZ8P$M"j:66N':L7/o^U7f>i+84cBF
+8kViO9heAY:f("e;cHat='/U/>?kH@?X[DRAS,RgC27[(E,fo?Fa&(VI!pKpJqJc4M2I7OO-,Ti
+QC+)0SXuLKUnsugWiW>,Z*UgG\@K5a^;%M$`Q$!@bKS8Wd*^=lf%8R.gYCWBi8N\UjQ>Ufl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*Bq\b/hWB`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^577^!A:/UsdrDEMiqbR)crD2NMs%i;a
+r_NGgmoTQmoN;,rp/q8rpK78nj&l%Ys&^^OMN!OUO-,TiQ'Rf*R[]k>T:qsRUnsueWN*##Xfek3
+Z*L^B['d?O\Gj#>]"@sS!kl=^r4i3Gq8*$Fr4i9Gs1SEEI_32&\[f5Z\$i`Q['R*EZ*:I9Y-"h-
+X/`2!W2HMhUnjc[TqS*MSt2C@S!fY2Q^3o%P`h2lOH5H_NJrdQM2@%DL5(D8K7\Z)J:E#rI=-Bf
+H?jaZGBS+NFE;JBEH#i6DJa3+CMR[!BP;$kAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!
+!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RogJRBog8::JcDDC#do+q?!162;cEZn$W0eu
+;Gg@j;,:%`9`@if:_Zc&:/=SY:/+GX9h\2T9hnDV9hnL`:'XKg:/=\^:Jq!fq,7,fpd+gErBpKN
+s$crWrC;<-8P)NH92&#R9hnJ\:f1+h<)lt#=BSg3>[:]D@:E_XAnPdlCMds.EH6/DGBeF]I=Hd!
+K8#);MN!OUOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRe+`lQ9Fbg+M\dF6Urf@\g3gtglG
+iSrnYk2tjkl0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq0"XoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^YH&7oZXLPC7Y5PR$YlCs7ZEpsH[^WfY
+]Y4<Zs1n$<jh_):^:s?VqnW0HrP/6Fq8)pCrPAHJ!5\WN!5nfQrkn`Rp;QjGr5JZRr5JTR1<#01
+NK90aPE_?!R$jG6St;UKU84T^Vl6VqX0&M-YctF>Za@-K\%&uZ]">Se]Y2%nrkJHJrk\6Drk\TL
+rkJKIs1SHFs1;dP\[f5[\$i`Q['R*EZ*:I9Y-"h-X/`1uVl-DgUnjc[TqJ$LSt2C@R[KP1Q^3o$
+PEM)kOH5H^N/W[PM2@%DL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa4hCB\HeBP;$j
+rac+@A,]p<@:9(A!a]/<r`fJ.>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]_9)V?\8GYjS
+7f5^J7/0.B6M*Qps.B<9qY0jYkN:jciSrkShV?o@f[na)e'cUjcd'bYbK7lH`l5p6rkT)[_8<t%
+]Y(hc\$`TLZF/u,pd+gEr^6QNs$crWrC;<-8P)NH92&#R9hnJ\:f1.i<)lt#=BSg3>[:]D@:E_X
+AnPdlCMds.EH6/DGBnL^I=Hd!K8,/<MN!RVOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRe+
+`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnYk2tjkl0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^LB5r0CK8okdrJC?-s,6o9s,I&=!0?Q0
+h3%/ks-EPIq3LZ<rKdJKqNM)IPa.NlQMm0HQ8+;VNK90aPE_?!R$jG6St;UKU84T^Vl6VqX0&M-
+YctF>Za@-K\%&uZ]">Se]Y2%nrkJHJrk\6Drk\TLrkJKIs1SHFs1;dP\[f5[\$i`Q['R*EZ*:I9
+Y-"h-X/`1uVl-DgUnjc[TqJ$LSt2C@R[KP1Q^3o$PEM)kOH5H^N/W[PM2@%DL4t;5K7\Z)J:E#r
+I=-BfH?jaZGBS+NFE;JBEH#i6DJa4hCB\HeBP;$jrac+@A,]p<@:9(A!a]/<r`fJ.>5h\)=T;J%
+<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]_9)V?\8GYjS7f5^J7/0.B6M*Qps.THOf#bG/['6I-W2QSh
+V5'f[U7n3NSt2CAR@0G1QBml(Q'ISsP*(lfOH,B^NfB!VMi3FLM27"Ere^]4mYLX(r'LBMqaCHQ
+s$lrWIRm%%8kM`M9MJ5V:Jakb;c?Xq<``C+>$G6;?XI5N@qB7bBPM="DK'T9FEMeQH@1-jJ:`E.
+LP^nINfT<cPa7])S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_SsO9aihoRcHstfeCN7(g=tE=hr*JQ
+j5f@bkNV6rm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+d*L"]bK.`C`59@*^:_%f\$`QJYcb+/WMcVhU7n3MS!o^36q0[<9MbXarDEMiqbR)cr_MTMs%i;a
+s%iMgs&&5erE8>drE8ksqcDf[pK97RMi<XVOHPflQ'[l+S"-(ATV8*UUo(&gWiE,%Xfnt5ZEpmE
+[C3QS\[f;`]=bei^:sT]rkSNLoYUUDrkSNJs1\NHs1JBDA%K4]\@B#V[^EKKZa-j?Yck43XfSS'
+Wi2hnVPU)aUS=HTT:VXFS=>t8R$a5+Q'@JqP*(ieO,]*WMi*@JLkg_=KS+o/JUi9#IXQWlH[:!`
+G^"@TF`__HEcH)<Df0H0D#S2RC2%?pB4h-S!G#^>@KBnFra,_5?![G7!F&b,=oVV(=8l8#<<-"s
+;u]bq;>j>k:]F2f:&dod9DhE\8cD9W8,PjS7J0(D6hNe<6%T'2rs7_VEb&<U<`E&t;Z9Pn:_Zf+
+:f'qa:/+M[:/=\_:JFVY9hnF^:'+-`:Amle9`@`m:/Ob\9hnM]9i:ddq,7,fpd+gEr^6QNs$crW
+rC;<-8P)NH92&#R9hnJ\:f1.i<)lt#=BSg3>[:]D@:E_XAnPdlCMds.EH6/DGBnL^I=Hd!K8,/<
+MN!RVOckrpR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRe+`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnY
+k2tjkl0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o^VFbu<Q[(WWFrNH+&&@&OHZa@-K\%'#]
+]tV7r^qfBSrke]Olb`Y=!6"lNr4`6Gr4i9I!5\ZMrP8KLrP.^7r4rHM_86)es24lRrkn]Qq8EBP
+`Uh"K_SlAks2He6`f#e9O-,ThQ'Rf)R[]k>T:qsRUnsueWN*##Xfen4Z*UdD[C3QS\[f;`]Y(qk
+^AbnI_#M7K_Y1nE_Z.IP_#D+K^&YkG]E,XUrjc^P\$i`Q['R*EZ*:I9Y-"h-X/`.tVl-DgUnj`Y
+TqJ$LSt):>R[KP1Q^*i#PEM)kOH5E]N/W[PM2@"BL4t;5K7\Z)J:E#rI=-BfH?aXXG'.qLFE;JB
+EH#i6DJa3*CMITuBP;$jrac+@A,]p<@:9(A#@:\A>[1K;>5h\)=9)G$<WZ9#<;fbq;?0Sm;#X8j
+:Amod9`@]_9)_E\8GYjS7f5^J7/0.B6M*Qps.TH1pA4OPjlPL\iT&nQgtg`<f@AI%da?Cfcd)O5
+s2k;]s2=uTrkT/]_83n$]Y(b`[^EKJZF@<Qm'laUr'LBMqaCHQs$luXs%!,]r^qZ59MA/T:/=\_
+;,^Cm<E<1'=^#$7?!grI@Uit]BP;-rD/O<4F*)SLH$XjdIt3-'L51VCN/is]P*M?#R@Bb=TVA6Y
+Vl?\tXg#(:['mKT]=bkm_8F73aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!nlKmm)mdKW6nac5O
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o^KAT)[<L5q(GrJCB.rJU]7s,I&=s,ZZ2
+i/n#&rfQ9,qNg`<r0I2DrKZr>!1!MK!13GG!L8uMQi!(%Mi<[WOckonQC+&.S"6.CTqS6WV5L5j
+WiN5'Y->.8Za7$H[^WcW\[oDc]Y2"mrkJKKs2"WMp;?dEs2"`NrkJKI!58BE!P>rB\S/L^[^NTN
+Za6sBYct=6Xf\\*Wi;qpVl$;dUnXQVTV%gIS=?":R@'A.Q'IStP*1rhO,f3YN/NRMM2-h?KnP)2
+Jq8H&IsufoI!^0cG^"@TF`heJF)l8?E,TW3D/=!'C2.HrBP1rVAH?=OraGn:@/aL<?<piA>[(E9
+r`T8'!*B,"!``3!rDW_o!)`\kr_NPhrD!8br_*/]r^m&ZqFCHQr'g9Hpd=^@oKe'.V#N@=f=nZ#
+Z)sq&W2HMhV5'cXU7e*LSXc4>R@0G0Q'R`&Pa.GqP*(lfOH,B^NK&mUMMm=KM2;.f!K)a$M"j:6
+6N0@L7/o^U7fGpX8,u6\8q0K-9MJ5V:Jakb;c?Xq<``C+>$G6;?XI5N@qB7cBPM="DK'T:FEVkR
+H@1-jJ:`E.LP^nINfT<cQ'Rf*S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_o9X:aihoRcd:(geCN7(
+g=tE=hr*JQj5f@bkNV6rm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7fD`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o^37R]j>9i"S^rDEMiqG7&drD2NMs%i;a
+r_NGgrDDo`r`Snr!*Aepr)resr)_o\pfT8.N/is]P*;/sR$a>3SXuIITqeE[Vl-MoX/rG+YctC=
+Za@-K\%&uZ]">Vf]tM/Z^]2+L_>M1D_u%=N_>h=M^]2"J^&GYF]=S!PBXkO[[^EKKZa-j?Yck43
+XfSS'WMl_mVPU)aU7n9RT:VXES"#k7R$a5*Q'@JqP*(ieNfB!VMi*@JLPCP;KS+o/JUi9#IXQWl
+H[:!_GB\4QF`__HEcH)<Df0H0Chmg$C2%?pB4h-S!G#^>@KBnFra,n:?!U]?>?b;1=oVS(=8c/$
+<E)rr;u]_q;>j>j:]F2g:&[ic9DhE]8c;3V8,PjS7J0(D6hNe<6%T'4rsQ_tCKt%E<Dldp;,dHl
+#Z+Aq;Gg4c:/1^_!)<Ggs%NVl9MJ;Wr_<Mh9MYO\$qsAh9hnP\9heDZ:f$pdq,7,fpd+gEr^6QN
+s$crWr^ZuZ!(m/^InNI/9heAY:f("f;cHat='/U/>?kH@?X[DRAS,UhC27[(E,fr@G'A4XI!pKp
+JqJf5M2I7PO-,TjQC+)0SXuLKUnsugWiW>,Z*UgG\@K5a^;%M%`Q$!@bKS8Xd*^=lf%8R.gYCWB
+i8N\UjQ>Ufl07L"m-X60n*ol<ncA@Srq-?dp\4[^s7u]kr;6Kkrr)KgJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Ee]UJ[&a//qlp+*$aR+F['d?O\[oGe
+^AbnG_",>?_>qF<_Z%FQ`;[aS^AYhG^AYhH_#M7N_#;+L_#;%F^];.@_"tnG_Yq@R_Sa:h`;%=B
+_uR^Q`W*q0N/`jYOckroQC+)0S"6.DTq\?YVPgAmWiW>*YHY:;Za@-K\%&uZ]">Vf]tXK\!l2Xg
+rPJQOr5AQQr5ATPr5&NO^qfra#/7da]Y(kfrjcOK\$i`Q['R*EZ*:I9Y-"e+WiE%sVl-DfUnaZX
+TqJ$LSXc1=R[KP0QBd`"PEM&iO,o<\N/W[PM26qAL4t;5K7\Z)J:;opI!^0cH$FOWG'.nKF)l8?
+E,]`5DJa3*CMIS_BE;aXrac+@A,]p<@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;f_s;Gg<i;#a>j
+:Amod9`Ic_9)_E\8GYjS7f5^J7/0.B6M*Qps.oZ?r:]sXkN(X]hr<VNh:gT9f@AF$e'cRecHOPW
+bf\&K`lH':_Z%@\^qmh$^:_+g\$rcPZEsP>!4_I+pHe^Dr^6QNs$crWr^ZuZ!(m/^!D?,c9mf]3
+:f(%g;cHat='/U/>?kH@?t!MSAS,UhC27[(E,fr@G'A4XI!pKpJqSl6M2I7PO-,TjQC+)0SXuLK
+UnsugWiWA-Z*UgG\@K5a^;%P&`Q$!@bKS8XdF$Fmf%8R.gYL]Ci8N\UjQ>Ugl07L"m-X60n*ol<
+o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1@Vg+6LPGbaq25-/s,?u;s,R,?n;uUk
+s-!;Bk*>t2s-<JIns03?s-<JGrfmVPQ'R`&nWs3ApQbfErg3SL/W>[LO-,TiQ'Rf*S"#t?TV8*U
+Uo(&gWiE/&Y-5(7ZEppG[^WcW\[oDc]Y2&Y^B23e_>V7M_u.IO`Vd[R_u.@Q_8*kc^BVEc]tD"i
+])K6M\@8oT[C!9HZE^X<YHG"/X/`2!W2HPjUnjc[TqS-OSt2C@S!ob4Q^3o%P`q8mOH5H_NJrgS
+MM[.EL5(D8K7ec,J:N)sI=-BfH?jaZGBS+NFE;JBEH#l8DJj<-CMR[!rb)=FB)Z?BA7PUJ!F]C8
+?NFJ=r`oJ-!*]A)s&]8&rDiu"<)ifp!`DlmrD<Mir_EDdr_3>bqb$iZrCHcTr'pTQogJRBog8::
+JcDVI$/Eh;[C!0;Vl-EkV>m=jU&UblSt)=?S!]S0Q^7W9".,7;PQ$^VOcPTaO,]-XN/NONM2I.G
+MZ/G4MXH;p62X(K6i0:O7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3>[:]E@:E_XAnYjm
+CMds.EH?5FGBnL^I=Hd!KSG8=MN!RVOckuqR$jG7StMgRV5L;mXKJe4Za@0N\\#Mg^V[n-`lQ9F
+bg+P^dF6Urf@\g3h;-uHiSrnYk2tmll0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFA
+T)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_16q'[=9hkR`rD<;crD<Ggj\GhOp/(]`
+rD<Gir_Vl^s&o"sr`Abpr)rkuqcDf[qH5D/NK0'^P*D5tR$jG5SXuLJU84T^Vl6VqXKAY/Yd(L?
+['d?O\@K/]]=bei^AbkK^qmkc_Z%IN`;R[Q`;[[P_?.Qh_#D(Q^:h4m]XtcS\RW.Y[^NTNZa6sB
+Yct=6XfSS'Wi;qpVl$8cUS=HUTV%gHS=?":R@'>,Q'IStP*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&
+IXQWlH[:!`G^"@TF`__HEcH)<E,TW3D/=!'C2*Z\!G?$DAH?=OraGn:@/aL6?=!P8s'#J,r`T8'
+!*B,"!``3!rDNbq;,R9gs%iVhrD!8bs%E5]r^m&ZqFCHQr'g9Hpd=^@oKe'.W;e4;VKHKU=B8I$
+;c-Fi;c6Fi;,L.d:/+JX:ej_[:Jak]:/=PZ:JLg`$r'Dj9heAW9MJ2T:Jq*dr_EMjqG[2frDE;T
+r'LBMqaCHQs$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!guJ@Uit]BP;-rD/O<4F*)SL
+H$XjdIt3-(L51VCN/is]P*M?#R@Bb=TVA6YVl?\tY->1;['mKT]=bkm_Sa@4aN;WLcHjnce'ut#
+f\5*9h;@/LioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1E.O"AV5sHrs02O.$F7"F['mEQ\\#Mf
+rP/<Ho>1CB!l;aim)&e?s2=lTr4`*DrP&6FqSE0HqnN*Fr4hs@r4rEN_>_=I_u%CL`UCbB`A!:4
+OHPckQ'[l,S"-(BTV8-VV5L5jWiN8(YHY:;Za@-K[^`lY]">Vf]tV7r^qdec_Z.OR`:(\E`;daR
+_J-j%^q[Xu^:h1l]=PSa\[],W[^EKKZa-j?Ycb+1XK/A$WMl_lV50o^U7n9QSt;LCS"#h5R$X,(
+Q'@GpOcYWbNfB!UMM[1GLPCP;KS+o.J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9rb_mVChmg$C&VcR
+B4b^dA7T1Z@UW\Qra,\4?2e+/>6%k+=oVS(=8l8#<W?%t;u]bq;>j>k:]F2f:&[id9D_?\8cD9V
+8,YpT7J'"C6hNe<6%T'5s!7C8q=E\.iS`YRhqd&@f[eR$eC;pnccs_XbKS/OaN2BA`l#[m_%"2r
+^qRRs]XYG[[C!3FlF6LRr'LBMqaCHQs$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!guJ
+@Uit]BP;-rD/O<4F*)SLH$XjdIt3-(L51VCN/is]P*M?#R@Bb=Tq\?ZVl?\tY->1;['mKT]=bkn
+_Sa@4aN;WLcHjnce'ut#f\5*9h;@/LioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1?u0n3J;!cUrJLQ3s,?u;s,I)?n;uRj
+s-!8A!1)i6qiq,GrKcu=rg*PKrKR5Frg*SNns99ApQkfFrg#6tO-#NfPa.T&R[]h=T:hmQUnsue
+WN*#$Xfnt6ZEppG[^N]V\[oDc]Y2%o^VIY$rke]Qs2=BFrl"iSrPE9b^qd_"^:q:n]Xtbd\[f5Z
+[^NTNZa6sBYct:4XfSS'Wi;qpVPU)aUS=HUT:VXFS=?"9R$a5+Q'ISsP*(ieO,f3YMi*@JLkg_>
+KnP)2JUi9#IXQWlH[:!`G^"@TF`__HEcH)<DuOVXD/=!'C2*Z\$YO'_ARo=]@U`bS@/aL6?=!P8
+s'#J,r`T8'!*B/#s&K(ur_rhps&&_ks%iYir([/as%E5]r^m)[q+(BQr'g6Gpd=^@oKe'.WW*Y)
+ftb,)ZEL1(VPU)bUnaZWTq7hRS.(gQQ^*o'Q'[i'Pa.I3Oq<b:O,f9]NJrjUM2R4JM2-ueM=-2o
+62X(K6i0:O7K5jV8,l*[8cD<_92,=ZHqmI6:f:4j<)lt#=BSg3>[:]E@:E_XAnYjmCMds.EH?5F
+GBnL^I=Hd!KSG8=MN!RVOckuqR$jG7StVmSV5L;mXKJe4Za@0N\\#Mg^r"".`lQ9Fbg+P^dF6Ur
+f@\g3h;-uHiSrnYk2tmll0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/nUoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_16UaL<925C_rD<;crD<Jhj\GhOohbT_
+rD<GirD;6Nr)`SoqcWl"!a/W-r)_o\qcPV4O-#NfPa.T&R[]h=T:hmQUnsueWN*#$Xfnt6ZEppG
+[^N]V\[oDc]Y2%o^VIY$rke]Qs2=BFrl"iSrPE9b^qd_"^:q:n]Xtbd\[f5Z[^NTNZa6sBYct:4
+XfSS'Wi;qpVPU)aUS=HUT:VXFS=?"9R$a5+Q'ISsP*(ieO,f3YMi*@JLkg_>KnP)2JUi9#IXQWl
+H[:!`G^"@TF`__HEcH)<DuOVXD/=!'C2*Z\$YO'_ARo=]@U`bS@/aL6?=!P8s'#J,r`T8'!*B/#
+s&K(ur_rhps&&_ks%iYir([/as%E5]r^m)[q+(BQr'g6Gpd=^@oKe'.WrE@QO)J<,=B&:"r_`hq
+<)HQm;#sHerD!Pm:/"DY;,7*b!_uQfrD!Af9`@`k:/"AV9MJ;[r_EDfqG[2frDE;Tr'LBMqaCHQ
+s$luXs%!,]r^m2a9`@b6:/=\_;H$Ln<E<1'=^#$7?!guJ@Uit]BP;-rD/O<4F*)SLH$XjdIt3-(
+L51VCN/is]P*M?#R@Bb=Tq\?ZVl?\tY->1;['mKT]=bkn_Sa@4aN;WLcHjnce'ut#f\5*9h;@/L
+ioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_1Cj_23SZ]HuY7@eAZ*UgF[^WcX]=bhk
+^AYhH_"5D>_Z.I?_Z.OR`;@OM^AYhD^AbnA_"#27_#(tG_?%Qkr589I!5nZOqnrHP!5nfS!5ncS
+/rbpRP*;/sR$a>3SXuIIU84T^Vl6VqXKAY0Yd(O@[C3NR\[f;`]Y(ql^V@S#rke]Q!6"fSr5SWS
+rPncSs2=rTrke]O!5STKJ%iV/]Xtee\[f5Z[^NTNZa6sAYck43XfSS'Wi;noVPU)aUS=HTT:VXF
+S=>t8R$a5+Q'@JqP*(ieO,]*WMi*@JLkg_>KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0
+Ci!m&C2%?pB4kgfARo:\@U`bR?sd8I?3":1>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Adic
+9`Ic_9)_E]8GPdS7f5^J7/0.B6M!Kos/H#$rV-6^kPjH>h@A>pf[n[(eCE$qdEg+^bPo]nbK7oJ
+`Q#p:_SF"(rkJlT^V.:i\@8lPZ*W`)pHe^Dr^6QNs$crWr^ZuZ!(m/^!D?,c9mf]3:f1+h;cHat
+='/U/>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpJqSl6M2I7PO-,WkQC+,1SXuOLUnsugWiWA-
+Z*UgG\@K5a^;.V'`Q$!@bKS8XdF-Lnf%8U/gYL]Ci8N\UjQ>Ugl07L"m-X60n*ol<o(2MQo`Fj]
+p\ssfq>^<hqu6NmrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_1?>4D*I"[ISM>rJ5MuSb9NW5%=O7A=i
+OoCO?OmnY7Pkp[APl?sJQL^=>QMm*JPQ@&6rKRAKrKmDI!1!DHrg3PK!1!PL!1!PM0:%TYOHPfm
+QC+&.S"6.CTq\?YVPgAmWiW>*YctC=ZaI6M\@K/]]=bei^;%Fu_>_=O_Z7XQ`VdaQa8O$U`W*mV
+_u@OQ_#V:M^ONu2]Y(kg]",A]\$i`Q['R*EYct=6Xf\\*WiE%rVl$;dUnaZXTV%gISXc1<R@'A.
+QBd\uP*1rhO,o9ZN/NRMM26qAL4k23Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/=$(CMIQs
+BP1siAS#C^@q&nU?sm>K?=!V;r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mis%`Jdr_3>bqb$iZ
+r^ciTrC6]RogJRBog879JcDeN.c]!i[C*<?V5C,dUSOWXTq7jHSXc4=R[BM/Q^3r&Q^=#&PEM&j
+P*(fdrf7#;#`Xe"MM[4HLPl%emYLU'r'LBMqaCHQs$luXs%!,]r^m2a9`@b6:/=\`;H$Ln<E<1'
+=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt3-(L51VCN/is]PEhH$R[]k>Tq\?ZVl?\tY->1;
+['mKT]=bkn_Sa@4aN;WLcHjnde'ut#g"P3:h;@/LioB+^k32'olKmm)mdKW6nac8Bo`"Lbp@n=\
+q#C0iqY^6ir;QZerdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6mHj0(l0.<mjlGI\i8<DIgY1?4f$r0s
+dEg+^bK7iF`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_16UXI88PDrXrD<Df!DlSj;#O2O:B+,`
+;#F,f;#X>j:]X?gj]DLap/q2npfR>pr`K2's&f8%i`Q.^/rbpRP*;/sR$a>3SXuIIU84T^Vl6Vq
+XKAY0Yd(O@[C3NR\[f;`]Y(ql^V@S#rke]Q!6"fSr5SWSrPncSs2=rTrke]O!5STKJ%iV/]Xtee
+\[f5Z[^NTNZa6sAYck43XfSS'Wi;noVPU)aUS=HTT:VXFS=>t8R$a5+Q'@JqP*(ieO,]*WMi*@J
+Lkg_>KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?pB4kgfARo:\@U`bR?sd8I
+?3":1>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Adic9`Ic_9)_E]8GPdS7f5^J7/0.B6M!Ko
+s/c5-Z@$=k=]ea';c6Qn;ZBVo;#a>k:(U2r:Jah^:Jjq^9i"JY:ej^`:B+#k9MJ5W9`7Zg:Jjh]
+:Amub;u'>i;>3BS6N0@L7/o^U7fGpX8,u6\8c_RYr_7c8:Jand;c?Xq<``C+>$P<=?XR;OA7]@d
+BkhF#DK'T:FEVkRH@1-jJ:`H/LP^nINfT<dQ'Rf+S"6.EU84W`WN*&&Yd(OA[^`l[]Y;1u_o9X:
+aihoRcdC1ieCN7)g=tH>hr*JQj5f@bkiq?sm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)Kg
+JcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)_iUS4<OS!o_1BmGQ"S#sC%YQ(g9Z*L[A['mEQ]">Vg
+^:sT]s1n3Ark\]R_Z%C?_Z.LR`:q7I^APbB^AktD_"GJ?^AktC_#2"O_Sa:._YV.M_Xk_@_u@US
+`W*k5`PddtOckonQC+)0S"6.DTq\?ZVl-MoX0&M-Yd(L?['mEP\[f;`]Y(tn^VIY$_SX4.`;R[T
+`r=$OaSs6Z`r3jX`5BLl_?%KgrkE*[]tD"i]=PP`\@8oT[C!9GZ*:I9Y-"h-X/`.tVl-DgUnj`Y
+TqJ$LSt):>R[KP1Q^*i#PEM)kOH5E]N/W[PM2@%CL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JB
+EH#i6DJa4hCC4fjBP;$jAn>OaA,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mi
+s%`Jds%NDbqb$iZr^ciTrC6]RogJRBog879JcDeN+Ska,n`/Tei83;GgY191e^W*se'ZIbc-4>R
+bfe,MaN+;!'#MK"_8!b$^qRRr]=5;Y[C!6GlF6LRr'LBMqaCHQs$luXs%!,]r^m2a9`@b6:/=\`
+;H$Ln<E<1'=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt30)L51VDN/is]PEhH$R[]k>Tq\?Z
+Vl?\tY->1;[C3TU]=bno_Sa@4aN;WLcHjnde'ut#g"P3:h;@/Lj5]4_k32'olg4!*mdKW6nac8B
+o`"Lbp@n=\q#C0iqYg<jr;HTdrdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)_iUS4<OS!o_1>A%ntH@q7SM>`>3MuSb9NrP13OPc3!
+P514?P4t76Pl$a@PlI!KQLU7>QMd$JPkgUCQh-OCQi!*KQiE@.Q^3YmOckonQC+)0S"6.DTq\?Z
+Vl-MoX0&M-Yd(L?['mEP\[f;`]Y(tn^VIY$_SX4.`;R[T`r=$OaSs6Z`r3jX`5BLl_?%KgrkE*[
+]tD"i]=PP`\@8oT[C!9GZ*:I9Y-"h-X/`.tVl-DgUnj`YTqJ$LSt):>R[KP1Q^*i#PEM)kOH5E]
+N/W[PM2@%CL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa4hCC4fjBP;$jAn>OaA,]pB
+@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RogJRB
+og879JcDkP#2$l'['['7rMBOh"ehQ[St2GORgkgRR?j/*Q'I]$QB[VtrfR;EOSt4?NrFtBMi!=J
+MM[.HrJBrupHe^Dr^6QNs$crWr^ZuZ!(m/^!D?,c9mf]3:f1+h;cHat='/U/>[1TB?t!MTAS,Ui
+C27[(E,fr@G'A4XI!pKpK7nu7M2R=QO-,WkQC+,1SXuOLUnsugWiWA-Z*UjH\@K5a^VI_(`Q$!@
+bKS8XdF-Lnf%8U/gYL]Ci8N_VjQ>Ugl07O#m-X60n*ol<o(2MQo`Fj]p\ssfq>^<iqu6NlrUg)?
+s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`59@*^:_%f\$iZLYck10Wi)_iUS4<OS!o_16Ua@48P;hX;"7?D:B+,_;#O2g;#X>j
+;#F,M=T;Is=Sc+o=SZ,"=T2J'=T;Ib=T;P(=T;MZNfT<cPEhH$R@B\:StMdOUnsueWN*#$Xfnt6
+ZEppH[^WfX]">Vf^;%Fu^qmn)_o'Fk`W*sWa7[OQa8X*W`<*uq_u@LR_8-&bB>2'l]Xtee\[f5Z
+[^NTNZa-j?Yck43XfSS'WMl_mVPU)aU7n9RT:VXES"#k7R$a5*Q'@JqP*(ieNfB!VMi*@JLk^Y<
+KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0D#S2WC2%?pB4baeARo<M@L$=L?sd8I?=!P8
+!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([2br_*,\r^m)[q+(BQr'g9Hpd=^@o0Is-YQ#s.
+R;uY<=B&=";c6Ij;,:%e;,L.b9i"M[:/FY[:JX_[:/=V\:JLg`s%Nkr9MS;X9MA/S9hnOa:Amub
+;u'>i;>3BS6N0@L7/o^U7fGpX8,u6\8c_RYr_7c8:Jand;c?Xq<``C+>$P<=?XR;OA7]@dBkhF#
+DK'T:FEVkRH@1-jJ:iN0LP^qJNfT<dQ'Rf+S"6.EU84W`WN*&&Yd(OB[^`l[]YD8!_o9X:aihoR
+cdC1ieCN7)g=tH>hr*JRj5f@bkiq?tm-O--n*fc9o()DErq-?dp\4[^s7u]krVQTlrVcBfJcD>A
+J,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q$%kBTX:s%YQ(g9Z*L^B[C3QS\[oDd
+]tXK\s1n6Brk\`S_SZ;gn&#+Bs2=ZNs1A?FqnDsBqS)pCrP8<FrP&9Gr4`3GpV?dEs2+EGqo&KO
+r5AEKrl"fT/B!R0OckroQ^F21S=Z@GTqeE\Vl6VqXKAY0Yd1UB[C3QS\[oDc]Y2(p^qp#e!Q2kT
+`W*sXa83mRanj*Ya8a0X`FQp)_ns:,_8*h#^:h1l]=YYb\[],W[C!9HZE^X<YHG"0XK&;"W2HPj
+V50l\TqS-OSt2C@S!ob4Q^3o%P`q8nOH5H_NJrgSMM[.EL5(D8K7ec,J:N,uI=6HgH?jaZGBS-.
+F:rY8EH,r9DJj<-CMR["BkV0mB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<<-"s;u]bq
+;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J'"D6hE_;6%T'<rs/;ro]P,ii84Ih%GB@be^W'tdF-Cd
+c-4?/b8JCDaMu9=`PTI+^qRV"^V7Iq\[T&V[C!6FlaQRRr'LBMqaCHQs$luXs%!,]r^qZ59MJ5V
+:/=\`;H$Ln<E<1'=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt30)L51VDN/is]PEhH$R[]k?
+Tq\?[Vl?\uY->1;[C3TU]=bno_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]7`k32'olg4!*mdKW6
+nac5OoCW%T!VZ9dq#C0iqYg<jr;HTdrdk*@s*t~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q"=iSH\R@RM>`>3MuSb9N<#"<O7n[l
+OoCO=OoLUCQ0X\5Q1gI1Q2d0AQ2d0KQgC%;QRnG_O-,TiQ'[l+S"-(BTV8-VVPgAmWiW>*YctF>
+['d?O\@K2_]Y(qm^VI\b_?%Qmrl+oWs2XuWqT8TTs2Y/ZrP`<c_o'@._83q%^V7Co]Xtee\[f5Z
+[^EKKZa-j?Yck43XfSP&WMl_mVPU)`U7n9RT:VUDS"#k7R$X,(Q'@JqP)t`cNfB!VMi*@ILPCP;
+KS+o/JUi9#IXQWkH?sj]GB\4QrcAcoEcH)<Df0H0Chmg$C2%?pB4h-S!G#^>@KBnFra,_5?![G7
+!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([2br_*,\r^m)[q+(BQr'g6Gq*Xd@oKe'.Yl?-9
+f=SGuZ)OUsV50l]U7e-MSt2@>S"#h6Q^3u(QB[Z#Q'@PtOckihrK$u=s,?u9"cA.nMM[/eM=68o
+62X(K6i0:O7K5jV8,l*[8cD>392&&S:/4S];,U=k<)lt#=BSg4>[CcF@:EbYAnYmnCMds.EH?5F
+GBnL^I=Hd"KSG8=Mi<[WOcu&rR$sM8T:r!TVPgDnXfen5ZaI6O\\#Mh^r"".`lQ9Fbg+P^daZdt
+f@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV6Egs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq0"XoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Psn/68ki&W;"%3D:B+,`;#F,f;#X>j
+:]X?grD3Dok#hR`pfRAopK7&jj&l:`/6IpnOckroQ^F21S=Z@GTqeE\Vl6VqXKAY0Yd1UB[C3QS
+\[oDc]Y2(p^qp#e!Q2kT`W*sXa83mRanj*Ya8a0X`FQp)_ns:,_8*h#^:h1l]=YYb\[],W[C!9H
+ZE^X<YHG"0XK&;"W2HPjV50l\TqS-OSt2C@S!ob4Q^3o%P`q8nOH5H_NJrgSMM[.EL5(D8K7ec,
+J:N,uI=6HgH?jaZGBS-.F:rY8EH,r9DJj<-CMR["BkV0mB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50
+=TV],=8l8#<<-"s;u]bq;>j>k:]F2f:&dod9D_?\8cD9V8,YpT7J'"D6hE_;6%T'@rs->lC0XnD
+<)``n##S8q:f(%er_EJi##A&j:JX_]r([;i:/1^_%8BMk9MJ2V9h\8T:/4[c:Amub;u'>j;>*<R
+6N0@L7/o^U7fGpX8,u6\8q0K-9heAX:Jand;c?Xq<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkR
+H@1-jJ:iN0LP^qJNfT<dQ'Rf+S"61FU84ZaWN*)'Yd(OB[^`l[]YD8!_o9X:aihoRcdC1jeCN7)
+g=tH>hr*JRj5oFckiq?tm-O--n*fc9o'uhQo`"Lap@nO\s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q#MA8StiCdYQ(g;Z*L^B[C3NS]">Vg
+^:q@srkS3Cs2+`Ps2+`Nn\Y=Ds2=TLrjr6E]tOBYq7lg@rP/<Hs1eBDrP/<Fs1e9Cs2"`Pm)/\<
+qSW<Ns2G#!1QdibQ'[l,S"-(BTq\?YVPgDnX0&M-Yd(L?['mEQ\[f>b]Y2%o^qmn)_o'F3`Q#p<
+a8O*Yan<gUao'6[`rO-Y`W*jV_u@M^_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"/X/`2!W2HPi
+Unjc[TqS-NSt2C@S!o_3Q^3o%P`q8mOH5H_NJrgRM2@%DL5(D8K7ec,J:E#rI=-BfH?jaZGBS+N
+FE;L%E=Qr+DJj<-CMR[!BkV0mB)Z?BA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&r`9&!!*&nqs&/ko
+rD<Mis%`Jds%NDbr(?oZr^ciTrC6]RoL/LBoKr19JcDtS3;`IHnDW9^hVI#BgY(3.eC2pqdEp.]
+bfe2RbKJ&NaMu0:`PTI,^q[Ru^V7Ft]=GD[[^EKJZF9,/p-JXDrBpKNr^HiVr^ZuZ!(m/^InNI0
+9hnJ\:f1+h;cHdu='/U/>[1TB?t!MTAS,UiCMRd)E,fr@G'A4XI!pKqK7nu7M2R=QO-5]lQC+,1
+SY)UMUo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjlY^hl07O#m-X60
+n*ol<ncA@Srq-<cp\jmeq>^<iqu6NlrUg)?s.97@~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q!nKLH@U\HM>`>2MuSe:Nr>%6OPZ,u
+P517=P5gdFQ0X\5Q1^BuQ2d0KQgL+=QiE+&OckroQ^F52S=Z@HU84T^Vl?\sXf\e2Z*L^C[^N]V
+\\#Me]tV7s_8=(,_o0O5`l?'>rQ+u[oud9Ur5eoY!65#Ws24oTrk`-\^q[Xu]tD"i]",A]\$i`Q
+['R*EZ*:I9Y-"e+WiE%sVl-AeUnaZXTqJ!KSXc1=R[BJ/QBd`"PEM&iO,o<\N/WXNM26qAL4t;5
+K7\Z)IsufoI!^0cH$FOWG'.nKF)q8"%WH?(DJa3*CMIQtBP;$jrac+@A,]p<@:9(A#@:\A>[1K;
+>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]_9)V?\8GPdS7f5^I7/94B6M*Qps0DYYg<7(8
+[]cU)V5'i\U7e0NT:DC>S!ob4R$O#&QB[`$Q'@JrP`q8mOcGE]O,o<[N;e_7M#rQkM#<+uM"X.5
+6N':L7/fXT7fGpX8,u6\8q0K-9heAY:f("e;c?Xr<``C+>$P<=?XR;OA7]@dBkqL$DK'T:FEVkR
+H@1-jJV/W1LP^qJNfT?eQ'Rf+S"61FU84ZaWN*)'Yd(OB[^`l[]t_A"_o9X:aihoRcdC1jeCN7)
+g=tH>hr*JRj5oFckiq?tm-O--n*fc9o'uhQo`"Lap@nO\s7u]krVQTlrVcBfJcD>AJ,~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/tWoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Pse#28P;`RmSE(Bs%i>br(m8fs&&em
+!DcPf:]"5V=Sl1q=Sl1n=S,bk=9)Fj=T;P(O#)o]Pa.T&R[]h=T:r!TUo(&hWiN8(YHY:;Za@0L
+\@K/^]Y(ql^VI\&_Sa:0`Poj:a2e/"rlOiUrlP)Zs2P,Zrl+oU!5nfQ@_ojp^V7Co]Xtbc\[],W
+[^EKKZa-j?Yck43XK/A$WMl_mV50o^U7n9RSt;LCS"#k6R$X,(Q'@JqOcYWbNfB!VMM[1GLPCP;
+KS+o/JUi6!I=6KiH?sj]GB\4QFEDSErc&EeDf0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra,n:?!U]?
+>?b;1=oVV(=8l8#<<-"s;u]bq;>j>k:]F2f:&dod9DhE\8cD9V8,YpT7J'"D6hE_;6%T'Cs!RB6
+G%+WX<E2sp;Gg=g:f1+f;,9q_;,9q^9hnGW:/+GX:/+M[:/(X^!DQ>g9aFEg9hS/R:/4[b:B"&c
+;YEu]62a.K6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYmoCMds.
+EH?5FGBnL^I=Hg#KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^
+daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV6Egs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq0UioCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q#1u.R[gRoYHY::ZEppG[^WcW]">Vg
+^VBc`oYLRErkncQr5%p?s24lTp;I*Q`Pqef!PH,D^A,J?^AktG_#D+F^APbF^AktA_#M7N_X,29
+`;@IO`%AriP*;/sQ^F52SXuLJU84W`W2ZeuXfen4ZEppG[^WfX]"G\h^;%J"_SX4/rl"oXa8O*Z
+ao9HRbPoZaao09^a2Z-u`<!oprk`9`^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I8Xf\\*WiE%sVl$;d
+UnaZXTV%gISXc1<R@'A.QBd`!P*1rhO,o<\N/NRMM26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nK
+F)l8?E,Y_n"`8'kCMIS_BFAHbAS#C_@q&nU@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;fbq;?0Sl
+;#a>k:Adid9`@]_9)_E\8GYjS7f5^J7/0.A6M*Qps0DYap\aRFi8<GJhV-]:f[eR&e'l^kccaPW
+bKJ,Qb/q`F`Pfa6_8*n&]Y2(o^VIRq\[],W['R$C[d:Ks62a.K6i9@O7K5jV8,l*[8cD>392&&S
+:/=\_;,U=k<*!%$=]np5>[CcF@U`kZAnYmoCMds.EH?5FGBnL^I=Qm$KSG8=Mi<[WP*;/sR$sM8
+T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3
+nF?)?!V>s_o`=d\rV6Egs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq0%YoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q!S6HH[CI+M2D1grJU]7s,I&=s,Zu;
+h3%Z!q2tZ>!gAe1rKR>Il]h=4op"9ts-EYN!LB#>Q7\GbP*;/sQ^F52SXuLJU84W`W2ZeuXfen4
+ZEppG[^WfX]"G\h^;%J"_SX4/rl"oXa8O*Zao9HRbPoZaao09^a2Z-u`<!oprk`9`^q[Xu]tD"i
+]",A]\$i`Q['R*EZ*:I8Xf\\*WiE%sVl$;dUnaZXTV%gISXc1<R@'A.QBd`!P*1rhO,o<\N/NRM
+M26qAL4t;5Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,Y_n"`8'kCMIS_BFAHbAS#C_@q&nU@:9(A
+!FB(2>lS".>5h\)=9)G$<WZ9#<;fbq;?0Sl;#a>k:Adid9`@]_9)_E\8GYjS7f5^J7/0.A6M*Qp
+s0_kPo@Ugc[]ld.UnaZZU7e-MSXl7>R@9P2R?X#'Q'IZ#Pa.GrP5^RIOH,?\NfX1!$&je!MM[4I
+LkgfbM=68o62a.K6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZAnYmo
+CMds.EH?5FGBnL^I=Qm$KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDnXfen5ZaI6O\\#Pi^r"".`lQ9F
+bg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV6Egs8)]krqu`no_sFA
+T)X<~>
+JcC<$ScAB^rVc`nrVQWks7uZhs7ZNerq/qVoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZLYck10Wi2ejUS4<OS!o_1PsRl.7nHJD:[1^T:\@Q_:]+&h;?'Gn
+:Jgj_s%`AkkZI[_q,mPrp/plgqH3c!moV/EOHPfmQC!u-S"6.DTq\?ZVl6SpXKAY0Yd1UB[C3QT
+\[oGd]tV7s_8=(,`;[^V`lJ&!s2k8_o#q$Ts2k5\!lr=#rl"oV_u@Mb_8*h#^:h1l]=PP`\@8oT
+[C!9HZE^X<Y-"h-X/`2!W2HMhUnjc[TqJ$LSt2C@R[KP1Q^3o%PEM)kOH5H_NJrdQM2@%DL5(D8
+K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#jqD?XlnCMR[!rb)[PAn>OaA7K(X@:<RC?NFJ=r`oJ-
+!*]A)s&]8&rDiu"<)ifps&&hor)!Dhs%`Jds%NDbr(?r[rCHcTr'pTQogJRBoKr19JcE1Y*m]a]
+?!(0-<)ZXl;,L.c:Jk"d:JO\^:/4MZ:eOJUr_<Pi:/=Xa9`Rld9`Ric9`Rrf9`[p^qbI,dqGR#a
+p-JXDrBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCMRd)E,fr@
+G'A4XI!pNrK7nu7M2R=QO-5]lQC+,1SY)UMUo(&hWi`G.Z*UjH\@K5b^VI_(`Q$!@bKS8XdF-Oo
+f%8U/gYL]Ci8N_VjlY^hl07O#m-X60n*ol<ncA@Srq-<cp\jmeq>^<iqu6NlrUg)?s.97@~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoj%.\o()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTq@pHR[BG,CO(c!R]X<.Z*CU@['d?O\@K2_]Y;/Z
+_">JC_Z%IQ_Yh7?_?.Wn`:_(L`r<sW]`,PB]E#YE^APb>^AktG_#;%I^')3b^V@S_^B2-a^\,DB
+_#V@D_Z7RM_u@US_u.IO_uIY/OHPfmQC+)0S=Q7ETqeE\Vl6VrXKA\1Z*L^D[^WcW]">Vg^;%G!
+_SX4/`Poj:a8X-]ai_d'bP'0WbQ#`bao9B]`rO-Y`<!oprka-#^q[Xu]tD"i]",A]\$i`Q['R*E
+Yct=6Xf\\*Wi;qpVl$;dUnXQVTV%gISXZ+;R@'A.QBd\uP*1rhO,f3YN/NRMM26qAKnP)2Jq8H&
+IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/F*)CMIQsBP1siAS#C^@q&nU@:9+Bs'>\2r`oJ-!*]A)
+s&]8&r`9&!s&Atrs&/korD<Mir_EDdr_3>bqb$iZrCHcTr'pTQogJRBog848JcE1Yrqlfair7dF
+gtgZ;g"4d)e'l^kccsVVrlYhob/hZE`Q#j5_SO"%]tM2[^(.oj]!]&V[(!BHZF73N[d^d!62a.K
+6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZAnYmoCi+'/EH?5FGBnL^
+IXm!%KSG8=Mi<[XP*;/sR$sM9T:r!TVPgDoXfen5ZaI6O\\,Vj^r"".`lQ9Fbg+P^daZdtf@em4
+h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV6Egs8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eohG)Mo()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTq@pHR[BG,?"S)!H%M*6rJLQ3s,?u;!fi>&q2jBo
+rK@#>rK7/ErfZ<+r0?u?gQhf)s-EeQQ'Lm*0T_H]Q'Rf*S"-%@TV8-VVPgAmX/rG,Yd(L?[C3QS
+\[oDc]tV7r_8=(,`5T^8`lJ)"!m/U-qoe]Wqof#^s2k8]s2P,Zrl"oV_u@N%_8*h#^:h1l]=PP`
+\@8oT[C!9HZEUR:Y-"h-X/`.tVl-DgUnj`YTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5E]N/W[PM2@%D
+L4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa6,CMR[!BP;$kAn>Oa@q/tW@:<RD?iOF4
+?2e+/>6%k+=oVS(=8l8#<W?%t;u]bq;>j>k:]=,f:&[id9D_?\8c;3V8,PjS7J0(D6hNe:6%T'G
+s!ZaM]"#/KVPBr^U8"?RSt;LCS!f_5R$j8+Q'Rc$Q'@MsP*1ofOHGV$NWkB"Mi*@IreU]4LPPkc
+mtgX&rBgHMr'^NQs$luXs%!,]r^qZ59MJ5V:Jakb;H$Ln<`W:)=^#'8?=.)L@Us%^BPD6uD/O<4
+F*)SLH$XjeJ:W?+L51VDN/j!_PEhH$R[]n@Tq\?[Vl?`!Y->1;[C3TU]Y2(q_Sa@4aN;WLcHjnd
+eC<($g"P3:h;@/Lj5]7`k32'olg4!*mdKW6nac5OoCW%T!VZ9dq#C0iqYg<jr;HTdrdk*@s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-Es$ki_*ijQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2?AcTq@pHR[BG,6UXC78PMtX:]=,^:[LpW:\IW`:]!ri
+;,C*_:]=,g<rc:t=70/j=oDJ!=85ns=8c8$=8Q+k=nu2!=7KBHOHPfmQC+)0S=Q7ETqeE\Vl6Vr
+XKA\1Z*L^D[^WcW]">Vg^;%G!_SX4/`Poj:a8X-]ai_d'bP'0WbQ#`bao9B]`rO-Y`<!oprka-#
+^q[Xu]tD"i]",A]\$i`Q['R*EYct=6Xf\\*Wi;qpVl$;dUnXQVTV%gISXZ+;R@'A.QBd\uP*1rh
+O,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/F*)CMIQsBP1siAS#C^
+@q&nU@:9+Bs'>\2r`oJ-!*]A)s&]8&r`9&!s&Atrs&/korD<Mir_EDdr_3>bqb$iZrCHcTr'pTQ
+ogJRBog848JcE:\&$U:j>Zk*-;c$:f:f'qa;>sB$:/=\_9hnDX9M8&R:/1[^s%ESj:/">V:&[fd
+:]3rk9hnGZ:JO[a:B45f;YO&]62a.K6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5
+>[CcF@U`kZAnYmoCi+'/EH?5FGBnL^IXm!%KSG8=Mi<[XP*;/sR$sM9T:r!TVPgDoXfen5ZaI6O
+\\,Vj^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?)?!V>s_o`=d\rV6Eg
+s8)]krqu`no_sFAT)X<~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoiq([o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTq@pHR[BG,PB;S=S[5T+ZEggD[C3QR\[oDd^;'W^
+otg[FrPSZPqn_m@s24iSpVm0Pr5J]Ls1JBDs1J<DoY(C?^:sT]qnW0Fs1\HHs1nNHotUXF_SZ,d
+r5&KP_YM+L`;[[Q`;RS+OHPfmQC+)0S=Z@HTqeE\Vl?\sXfek3Z*UgF[^WfX]=bej^V@S$_Sa=2
+`Q#staT'?^b5KN_bl#`acMYrdbl,`bb5]T_aF;1L`l5p8_o'@._8*h#^:h1l]=PP`\@8oT[C!9G
+Z*:I9Y-"h-WiE%sVl-DgUnaZXTqJ$LSXc1=R[KP1QBd`"PEM)kO,o<\N/W[PM2@"BL4t;5K7\Z)
+J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6DJa3+CMR[!BP;$kB)cENA7K+Y@UW\Q?XI,G?2e(1>?Y50
+=oVS(=8l8#<W?%t;u]bq;>j>k:]=,f:&[id9D_?\8cD9V8,YpT7J'"C6hNe:6%T'Gruh+5n`/Qc
+hVR&Ag"=p,e^MpodEg+]bfn8Sb/qcGa2Z-u_\^/(^V.=q^:V.p^:Un`\$iZNZa$pJ\$b\6og/OC
+rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCM[m+E,fr@G'A4X
+I=?]tK7nu8M2R=QOHPfmQ^F52StD^NUo(&hX0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8XdF-Opf%8U/
+gYL`Di8N_VjlYail07O#m-X60n+#r=ncA@Srq-<cp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTq@pHR[BG,P@SWRH%h"OMYrD4N!#'"O,s.!gl_Mt
+qiUi?s-*ADrfmDGk`kt0pQXEtrg!SMQN!0AQ7e8^PEhH$R@B_<T:qsRUo(&hWiN8)YHY:<['d?O
+\[f>b]Y;.q^r!t+`5T^8a8X0[aT0K^bPo``c2Grcc2PrcbQ#`bao9A1a2Z-<`Pf[3_SX.)^V@Lr
+]Y(kf\[f5Z[^NTNZa-j?Yck43XfSP&WMl_mVPU)`U7n9RT:VUDS"#k7R$a2)Q'@JqP*(fdNfB!V
+Mi*@JLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?pB4kiVAIN*Z@q&nU
+@:3GL?=$q:>QS,5>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>j:Amod9`Ic_9)_E]8GPdS7f5^I7/0.B
+6LmEns1A::r8#2t[BZX,U]-u7TV%gJS=H(;R@0G/Q^*i&QBRPtPEV/lOcYZeOH>K_O,f3ZN/WYn
+M$SuqM26qEMM[,WM"O(46N':L7/fXT7fGpX8,u6\8q0K-9heAY:f("e;c?Xr<``F,>$P<=?XR>P
+A7]@dBkqO&DK'T:FEVkRH@:6mJV/W1Ll%%KNf]EfQ'[l,S"?7GU84ZaWN3/(Yd1UC[^`l\]t_A"
+_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiq?tm-O--n*ff:o'uhQo`"Lap@nO\!r;]hr;6Kk
+rVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=k*W2HGdTq@pHR[BG,P=.l28PDnX:\dc^:[LmW:\@Q`:]!ug
+;?'Jd:]*rh=BAT'<r#hd=T;P&=Sl1n=9)G$=T2D"=S#\l=Su7m=>#\uPEhH$R@B_<T:qsRUo(&h
+WiN8)YHY:<['d?O\[f>b]Y;.q^r!t+`5T^8a8X0[aT0K^bPo``c2Grcc2PrcbQ#`bao9A1a2Z-<
+`Pf[3_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa-j?Yck43XfSP&WMl_mVPU)`U7n9RT:VUDS"#k7R$a2)
+Q'@JqP*(fdNfB!VMi*@JLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0Ci!m&C2%?p
+B4kiVAIN*Z@q&nU@:3GL?=$q:>QS,5>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>j:Amod9`Ic_9)_E]
+8GPdS7f5^I7/0.B6LmEns1J@Khj/=j=]\R$;c$:f:f1%d;,C(b:/Fb_:&[lh92&%X9aOTj9MA5W
+92//Vr_*ku9MJ8V9MS>Z:/+JZ:ese_qGR&bog/OCrBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h
+;cHdu='8[0>[1TB?t*SUAS,UiCM[m+E,fr@G'A4XI=?]tK7nu8M2R=QOHPfmQ^F52StD^NUo(&h
+X0&P/ZEpsI\@K8c^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail07O#m-X60n+#r=ncA@S
+rq-<cp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoj7:^o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+W2HGdTq@pHR[BG,PAc/5SY<6mZa7$I\$rlX]">Vg^;%Fu
+_"GPD_Yq@P_YV+?_Z.OQ`:q7N`r!aT]`,VE]`5V@^&>\F^%f>A^\P\D^Au"H^\ttH^\5JC_>hCP
+_tLt;_u@UR_^pt8Q'[l,S"-(BTq\?ZVl-MoXKAY0Z*L^C[^WcW]">Vg^V@S#_Sa=2`Q#sta8sE*
+rlb>crlsrXrltJerlb>a!6P5]s2S]j`Pod5_ns:,^q[Xu]tD"i]",A]\$i`PZa6sBYct=6XfSS'
+Wi;qpVkp2bUS=HUTUqaGS=?":R$a5+Q'IStP*(ieO,f3YN/NOLLkg_>KnP)2Jq8H&Isl`mH[:!`
+G^"@TFoHIhF)l8?E,TW3D/B2e$>O9gBP1phAS#C^raH+@?sm>K?=$q:>QS,5>5hY+=BAT'<rZ2"
+<;ohr;ZBVm;#a>k:Adic9`Ic_9)_E]8GPdS7f5^I7/0.B6LmEns1A:;r;Z`^iSWPKgt_n^0@nY'
+d*^7eccaJSaihfKaiMQC`l,d3^qRRs]Y(tj^;.Lr\[8lTZaR3FZ*q-N[dU^!62X(J6i9@O7K5jV
+8,l*[8cD>092&&S:/=\_;,U=k<E<.%=]ns6>[CcF@U`kZB4u!pCi401EH?5FGBnO`IXm!%KSG;>
+Mi<[XP*;/tR$sM9T:r!TVPgDoXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[
+k3(sml0I^&mI'H4nc&([oCW%T!VZ9dp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+W2HGdTq@pHR[BG,P@/6IH@CSHMZ&J5N;nn;NrG(>OP,cp
+P5:=>P5gaCP5LRCPP:=APP17:Q26^GQ'C$grg*DGpQd@nPa.T&R[]h=T:r!TV5L5jWiW>*Yd(L?
+['mHR\[oDc]t_=t_8=+.`Poj;rl>,^b5TTabl5lVcMl)gbl5fcaoKQ_aT':l`l5p8_o'@._8*h#
+^:h1l]=PP`\@8oT['R*EZ*:I9Y-"e+WiE%sVl-AeUnaZXTqJ!KSXc1=R[BJ/QBd`"PEM&iO,o<\
+N/W[OM26qAL4t;5K7\Z)J:DuqI!^0cH$FOWG'3e+$$1-,EH#i6DJa4hCC4fjBP;$jAn>OaA,]pB
+@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mis%`Jdr_3>bqb$iZr^ciTrC6]RoL/IA
+og848JcEF`([0>[]X4`;US4EVTqJ$LSt)=?R[KM0Qi<9mQ'@JqPE_5lOcYWcOH5E]NK0!YN/NUO
+Ll$qEM26qBre^'!p-JUCrBpKNr^HiVr^ZuZ!(m/^HqR.-9hnJ\:f1+h;cQk!='8[1>[1TB?t*SU
+AS5[jCM[m,E,fr@G'A4YI=?]tK7nu8M2R=QOHPfmQ^F52StD^NUo(&hX0&P/ZEpsI\@T>d^VI_(
+`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail07O#m-X60nF?MK!V>s_o`=d\rV-HiqYL-erqu`n
+p&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b*0e^W$p
+cd'bXaiMK@_ns1&]Xt_`[^<BFYH=n+W2HGdTq@pHR[BG,P=%f084u\V:\[]b:]=/j:[V!X:\IWa
+:]!ug;?'Jc:]*rf:]+;m<r#hs=T;Ir=T)D$=Sl1j=T)>!=S,bm=Sc+n==fW"Q'[l,S"-(BTq\?Z
+Vl-MoXKAY0Z*L^C[^WcW]">Vg^V@S#_Sa=2`Q#sta8sE*rlb>crlsrXrltJerlb>a!6P5]s2S]j
+`Pod5_ns:,^q[Xu]tD"i]",A]\$i`PZa6sBYct=6XfSS'Wi;qpVkp2bUS=HUTUqaGS=?":R$a5+
+Q'IStP*(ieO,f3YN/NOLLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TFoHIhF)l8?E,TW3D/B2e$>O9g
+BP1phAS#C^raH+@?sm>K?=$q:>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Adic9`Ic_9)_E]
+8GPdS7f5^I7/0.B6LmEns1\LA^4L-*=]eX%;,:%c;#O5o:esh_;#F&m92%uR9i"O`9`e!_:Amod
+9`Iid9F"3c:/=V\:/:a`mnrdEr'L?Lr'^NQs$luXs%!,]r^qQ29MJ5V:Jakb;H$Lo<`W:)=^,-9
+?=.)L@Us%_BPD6uDJsK6F*)SLH$asgJ:W?+L5:\EN/j!_PEhK%R[]n@Tq\?[Vl?`!Y->4<[C3TV
+]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0plg4!*mdKZ8rpg*]o`"Lap@nO\!r;]h
+r;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoiq([o()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGdTq@pHR[BG,PAPf*Q^b1m['[6L\$roZ]=bhk^VBQZ
+qSE0JpqcU>s24cQq8N?Qq8NBGs1A?FrO`0C]_/u6^AktH^];.K_"b\B_#M1B_#D1A_?.Wn`:LnH
+`%f/mPa.T&R[]k>TV8*UV5L8lWiW>+Yd(O@[C3QT\\#Mf^;%J"_SX71`Q#s>aN;TIrlYAec-?13
+o?[?[s3:Sfrlb>a!6P5]C<+?5`Pf^4_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck12XK/A$WMl_l
+V50o^U7n6PSt;LCS!ob4R$X,(Q'7AoOcYWbNfB!UMM[1GLPCP;KS+o/J:N,uI=6KiH?sj]GB\4Q
+FEDSErc&EeDf0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&B%urDW_o
+s&&_ks%iYir([2br_*,\r^m)[q+(BQr'g6Gpd=^@nj.j,^&JfAs7YI0h;6uBg=Os-e^N!nda6=a
+rlb>as2cA(a2c3<_ns4)^V7@n^:V%m^V%1e\$i]O['R$E\@8m7\+N&b6N':L7/o^U7f>gY84cDP
+8pj9*9heAY:f("e;c?[s<``F,>?kH??XR>PA7]CeBkqO&DfKc<FEVkSH[U?nJV/W1Ll%%KO-#Ng
+Q'[l,S"?7GUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiq?t
+m-O--n*olHncA@Srq-<cp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eohG)Mo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGdTq@pHR[BG,P?r!CG^>%(r/1N4"H8>"NfO+"q2jQt
+rK?u=rf[8Eq3(Z?qigi?rKHu?rKRAIrg!AFl'275ns00>qN^lB0TqZcQ^F52SXuLJU84W`W2cl!
+Xfnt6Za7'J\%0&]]Y2%o^qmn)`5T^8a2l?Db0'_,!mJp6r6Fo[r6G>es31Jcs2k>`rlAip`l5p8
+`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Xf\\*WiE%sVl$;dUnaZXTV%gISXc1<R@'A.QBd`!
+P*1rhO,o<\N/NRMM26qAL4t;5K7\W(IsufoI!^0cH$FOWG'.nKF)q8"%WH?(DJa3*CMIQtBP;$j
+rac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciT
+rC6]RoL/IAog848JcELb&EV$D\[&-0U8+HVT:VXES=BMH$CR6HQ^*l&Q'7Gqrf[AFOSt4KNfB$Y
+NK&mTMMm@KM#N58LkghEM2-rWM"O(36N':L7/o^U7f>gY84cDP8pj9*9heAY:f("e;c?[s<``F,
+>?kH??XR>PA7]CeBkqO&DfKc<FEVkSH[U?nJV/W1Ll%%KO-#NgQ'[l,S"?7GUSOcbWiN8)Yd1UC
+[^`o]]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFdkiq?tm-O--n*olHncA@Srq-<cp\jjg
+q>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoh4rKo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HGdTq@pHR[BG,P<qW,7S<VSqb@)cs%iVjs%i)Ys%i>b
+s%iMgr_`\lp.tQ\r_NGnqc<Akr)ir"r`K/&rE/nt!E`Fs=T;J&<rZ8!=S5hn=Sc+p=>5o&Q'[l,
+S"6.DTq\?ZVl6VqXKA\1Z*UdE[^WfX]=bhk^VI\&_SjF4`lH0Aai_d*b6#o4c2>lYchu)gc2Z#e
+bQ#]bao9@ra2Z*;`5KR1_SO%&^V7Co]Xtbc\[],W[C!9HZE^X<YH=q.X/`2!W2HMhUnjc[TqJ$L
+St2C@R[KP1Q^3o%PEM)kOH5H_NJrdQM2@%DL5(D8K7ec+J:E#rI=-BfH?jaZGBS+NFE;L%E=Qr+
+DJj<-CMR[!BkV0mB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<<-"s;u]bq;>j>k:]F2f
+:&dod9D_?\8cD9V8,YpT7J'"C6hNe:6%T'Ps"!B/H=L,\<Dudk:f1%b:f("d:/=V]:JX\[9hS)O
+9MSAZ:/=SX9M\GY9MPL[&5,_k9MJ8V:JFY\9hnJ\:JL:Tog/LBrBpKNs$crWrC6o[8P/nRHqR.-
+9hnJ\:f1+h;cQk!='8[1>[:ZC?t*SUAS5[jCM[m,EH-&AG'A7ZI=?]tK7nu8M2R=ROHPfmQ^F52
+StD^OUo(&iX0&P/ZEpsI\@T>d^VI_(`Q$!@bKS8XdF-Opf%8U/gYL`Di8N_VjlYail07O#m-X60
+nF?MK!V>s_o`=d\rV-HiqYL-erqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eoi^qYo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-PA>H"MjUT[['d?O\@K2_]Y2%npV?XA
+rkeHHoYUXGr5AEMrl4cQ!Q;SJ]D0&3^%oD?_#D(K_"k_H^;%G]^];.B_#;+B_Z.OP`:Ur"P*D5u
+R$sM8StMdPUo(&gWiN8)YHY==['mEQ\[oGd]t_=u_SX4/`Q#s>aN;U(b6#o4c2Grfci)5ddJ_Gk
+ci)/hblGuebQ#]bao9A*a2Z*;`5BL0_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X;Y-"h-X/`1uVl-Dg
+UnjcZTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H^N/W[PM2@%DL5(D7K7\Z)J:E#rI=-BfH?jaZGBS+N
+FE;JBEH#i7DJj<-CMR[!rb)=FB)Z?BA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&r`9&!!*&nqs&/ko
+rD<Mis%`Jds%NDbqb$iZr^ciTrC6]RoL/LBoKr+7JcEIa)?&mZhq[&CgXt-/eCE'pcd:"_bf\)O
+aiDI$a;r:>`5BI,^V7Cn]tD"l^V7=f[C<QM['R$B[C<WRn$hsUr'L?Lr'^QRs$lrW!_>mSr^qQ2
+9MJ5V:Jakb;H$Lo<`W=*=^,-:?=.)L@q9.`BPD6uDJsN8FEMePH@('hJ:W?+L5:\EN/s'`PEhK%
+R[ftATqeE\VlHf"Y->4<[C3WW]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`kNM0qlg4!*
+mdKZ8rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eohG)Mo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-P?_^=F*`J"rJCZ7N/[aqs,R,?q2jQt
+rf[&=rf[8Eq2tiBPa.O4PkpU?Pl-a@Pl-gGPQ7!GPj+J5Pk11=QMQmDQ7e>bQ'[l,S"6.DTqeE\
+Vl6VrXfek3ZEppH[^`lZ]Y(qm^VRe(_o0O6a2l?Db5TQcbg"E2cMu5hd.u)fd/MAicMu,hbl5fc
+aoKQ_aEP\E`Pod5_ns:,^q[Xu]tD"i]",>[[^NTNZa6sBYck43XfSS'Wi2hnVPU)aUS4BST:VXF
+S"#k7R$a5+Q'@JqP*(ieO,]*WMi*@JLkg_>KnG#0JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df9N2
+D/=!'C2*Z\!G?$DAH?=OraGn:@/aL<?<piA>[(E9r`T8's&]2#s&B%urDW_os&&_ks%iYir([2b
+r_*,\r^m)[q+(BQr'g6Gq*Xd@nj.j,_Z'o'f"AT&X/Megrh0@`T)P5fS!oe6Q^=#(Q'RVtrK@2C
+s,d2?!f`/!rf%#;Mi*>iM$/WkLkgcbM=-2m62X(J6i9@P7K5jU7fl4Q8cD>092&&S:/=\_;,U=k
+<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EccGJG^=^bIXm!%KSG;>Mi<^YP*;/tR$sP:T:r$UVPgGp
+Xfen6ZaI6P]"G_k^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_K
+p@e7Zp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Nj!;ZTg!Vc<eohP/No()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4']Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-P=%c-7nQEL:A[cb:B+,i;#a>[:B+,`
+:]O;g;#O5k;"[W]:B"#i:0.6nqH!8jrE0#"rE'2*=BJX,p/h#ks&]2#r`B&#pK@;oqH!]"=oDGT
+P*D5uR$sM8StMdPUo(&gWiN8)YHY==['mEQ\[oGd]t_=u_SX4/`Q#s>aN;U(b6#o4c2Grfci)5d
+dJ_Gkci)/hblGuebQ#]bao9A*a2Z*;`5BL0_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X;Y-"h-X/`1u
+Vl-DgUnjcZTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H^N/W[PM2@%DL5(D7K7\Z)J:E#rI=-BfH?jaZ
+GBS+NFE;JBEH#i7DJj<-CMR[!rb)=FB)Z?BA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&r`9&!!*&nq
+s&/korD<Mis%`Jds%NDbqb$iZr^ciTrC6]RoL/LBoKr+7JcEXf(;PK;?<^H/;c-=f;,:%d:esq`
+9hnGZr_<bo8kViP9hnDX:B!p$:/+GZ9he;S:.n8T92/2W9hnJZ:AmuW;>!6Q6N':L7/o^U7f>gY
+84cDP8pj9*9heAY:f("e;c?[s<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/W1Ll%%K
+O-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^iu^]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFd
+kiqBum-O--n*olHncn^Xp%A%Pp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Njs7uZh;>9eXp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-PEL'EMk-sK[0j@O\[oDc]tV4q^\Yb6
+_=YVE_u%CK`W!mP`<*us]_]82]_fD=^&YqI_">DA^Akt;_#;+C_Z.OP`:h)#PEhH$R@B_<StMdP
+Uo(&hWiN8)Yd(L?[C3QT\\#Mf^;%J"_Sa=2`lH0AaiaV+!R/gfcMu5id-oB^d/VGjcMu,hbl5cd
+b/sY("inX%`Pf[n_I^R!^V@Lr]Xtbc\[],W[^EKKZa$a=YHG"0XK/A#W2HPjV50l\TqS-OSt2C@
+S!ob4R$O#&P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9rb_mV
+Chmg$C&VcHB4h-S!G#^>@KBnFra,n:?!U]?>?b;1=oVV(=8l8#<<-"s;u]bq;>j>k:]F2f:&dod
+9D_?\8cD9V8,YpT7J'"C6hNe:6%T'QrsAK#p#P)egYCQ;rmrdQeC2aid*U%[aihfI`lQ3?`Pod5
+_8!^u]t1nk]=kto]=#&U[C!<IZ*C[F\$bY5og/LBrBpKNs$crWrC;9,8P)NH91qrQ9hnJ\:f1+h
+<)lt"=BSd2>[:ZC?t*VVAS5[jCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPfmQ^F53StD^OUo(&i
+X0&P/ZEpsI\[oGe^VI_(`Q-'BbK\>YdF-Opf@S^0gYL`Di8N_VjlYail0@U$lic_Dn*olHncn^X
+p%A%Pp\jjgq>0scqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Njs7uZh;YTnYp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-PEKKqEI!1nrJLW6rf-l:rK$r>iK=,&
+pQ>K=rfd,?!KiQEPl?sHPkpUAPkpU>Pl?sAPj=V4Pk:7>QMQmFQ7\;cQC+)0S=Z=FTqeE\Vl?\s
+Xfen5ZEpsI\%0&]]Y2%o^qmn*`5Ta:aN2KGrlY>dc2Q#gci2;[dJqSnci)/hblGueb5oc-rl>8`
+`l5p8_u@Ma_8*h#^:h1k]",A]\$i`Q['R*DYct=6Xf\\*Wi;qpVl$;dUS=HUTV%gHS=?":R@'A-
+Q'IStP*1rgO,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,Y_n"`8'kCMIS_
+BE;aXrac+@A,]p<@:9(A#@:\A>[1K;>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]^9)_E]
+8GPdS7f5^I7/0.B6LmEns2=pLk/FjBZDj[oU7n6PSt;IAR[X5D$($sEQ'@PuP*;(.OTLW-NrG(G
+Nf/jUNJraRMMV7g"GhnjL55bb!JcO#M"O(36N':L7/o^U7f>i*84cBF8kVfN9heAY:f("e;cHat
+<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NgQ'[l,S=Z@HUSOcbWiN8)
+Yd1UC[^iu^]t_A"_o9[;b0/&TcdC1je^rF+g=tH?hr*JRj5oFdkiqBum-FlBmdKZ8rpg9bo_%nN
+p@nO\!r;]hr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Njs7uZh;>9eXp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYH=n+W2HJeTqJ!IS!]P-PEJ:'8OlJN:&[ob:[_$Y:\ITb:]!ue
+;?'Jd:\mic:B=3dpK.2loiM/qqcEc!!EWCo=8>tu=8Z+r=SQ%o=Sl/S=BSd/PEhH$R@B_<StMdP
+Uo(&hWiN8)Yd(L?[C3QT\\#Mf^;%J"_Sa=2`lH0AaiaV+!R/gfcMu5id-oB^d/VGjcMu,hbl5cd
+b/sY("inX%`Pf[n_I^R!^V@Lr]Xtbc\[],W[^EKKZa$a=YHG"0XK/A#W2HPjV50l\TqS-OSt2C@
+S!ob4R$O#&P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9rb_mV
+Chmg$C&VcHB4h-S!G#^>@KBnFra,n:?!U]?>?b;1=oVV(=8l8#<<-"s;u]bq;>j>k:]F2f:&dod
+9D_?\8cD9V8,YpT7J'"C6hNe:6%T'UrseCjHX^2]<E)jn:Jah`rDEPhs%O#":ej_X8k_rS9hnGZ
+9h\4X:'aNg9MA)R9h\7Z:B+&g:B+)i:$tmO62X(J6i9@P7K5jU7t!p"8P2TJ92&&S:/=\_;,U=l
+<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR$sP:T:r$UVPgGp
+Xfen6ZaI6P]"G_k^r"".a2lEHc-FY_daZh!f@em4h;7&IiT&t[k3(smlKdg'"RYXGnF?MK#4qK[
+p%J+RrV-HiqYL-erqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh?MF0ep%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJeTqJ!IS!fV.P`fs>MOC-B[^W`U]"5Md]tV7rqS;R9
+o>:LEqo&BNrl4`P#/nL!`P&psqRc=2qn;pArkJKKotUI>s1e'=rPA6Fs24`Pq84nOQC+)0S=Z@H
+U84W_Vl?\tXfnt6Za@-K\@K2_]Y2(p_8=(-`Poj<aN;TJbKS2TrltSkd*V^<o@!Qas3Uelrm(Pg
+!6kGc!QrO`aF;1L`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTMZa-j?Yck43XK/A$WMl_mV50o^U7n9R
+St;LCS"#k7R$X,(Q'@JqOcYWbNfB!VMi*@ILPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<
+Df0H0Ci!m&C2%?pB4kgfAcH9E@q&nU@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;f_s;Gg<i;#X8j
+:Amod9`@]_9)_E\8GPdS7f5^I7/94B6LmEns24j=qs34rrnB6_f[n^*e^Vsld*L"]b/hcJ`l?*=
+a2Q!8_na%%]tD%j]"5Sh]=>5W[^EKKZa$dC[C3O4\+Dua6N':L7/o^U7f>i+84cBF8kVfN9heAY
+:f("e;cHat<`iL->?kH??X[DRA7]CeC27X'DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NhQ'[l-S=Z@H
+USOccWiN8*Yd1UC\%0)_]t_A"`5Td<b0/&TcdC1je^rF+g>(N@hr*MSjQ5OekiqBum-O->mfDqJ
+rpg9bo_%nNp@nO\!r;]hr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Njs7uZh>5.aap%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJeTqJ!IS!fV.P`fEkEHuteMMd=MN/WaUrJpi;rfH*$
+s-!,=rf[8EplY`AP*(q*Pl?sHPl$[BPkgO=PlI$CPj=V2PkC==QMm'KQMm(%QC+)0S=Z@HU84W_
+Vl?\tXfnt6Za@-K\@K2_]Y2(p_8=(-`Poj<aN;TJbKS2TrltSkd*V^<o@!Qas3Uelrm(Pg!6kGc
+!QrO`aF;1L`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTMZa-j?Yck43XK/A$WMl_mV50o^U7n9RSt;LC
+S"#k7R$X,(Q'@JqOcYWbNfB!VMi*@ILPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<Df0H0
+Ci!m&C2%?pB4kgfAcH9E@q&nU@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;f_s;Gg<i;#X8j:Amod
+9`@]_9)_E\8GPdS7f5^I7/94B6LmEns2Y-^o@gmi[]H@#Tq\3NSt2FAS!oe6R$a5*QBdc"P`h5m
+Oo:@IO,f9\NJrjUN;e_CM27%FLP^hCLPLbEm>1C#r'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V:Jakb
+;H$Op<`W=*=^,-:?=.,M@q9.`BPM=!DJsN8FEMePH@('hJ:W?,L5:\ENK90aPa.T&S"-(BTqeE\
+W2co#YHY==[C<]X]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*s6g!Xnc&(`
+oCV_Kp@e7Zp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Njs7uZh;>9eXp%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^<BGYcY",W2HJeTqJ!IS!fV.P`e@&7n65M:&Ria:[h-Z:[_-Y;?'Jd
+:\mic:BO?f:/COaq,[2j!*K)!s&e_kqcNl"qc<_ur)io#!*K5'pK7Aqs&f;(0U7rkR@B_<T:r!T
+V5C/iWiW>+Yd(OA[C3TU]">Vg^V@V%_SjF4`lQ6Cb0.uPbg$.4!mf6?r6b,ar6bPks3L\is31Pf
+rlY>bao9A1a2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"e+WiE%sVl-AeUnaZXTqJ!K
+SXc1=R[KP0QBd`"PEM&iO,o<\N/W[PM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i6
+DJa3+CMR[!BP;$kAn>QRA-HIP@UW\Qra,\4?2e+/>6%k+=oVS(=8c/$<E)rr;Z]io;>j>j:]F2g
+:&[ic9DhE]8c;3U8,YpT7J'"D6hE_96%T'Wrs?i-E*c^L;c6IhrD3Gjs%j%t9i"JY9MJ8U92#7Z
+!)3Ae!DQ8e9`e!a:B!oc9F4Ed:JX\[9hnDXr_EMjmnr^Cr'L?Lr'^QRs$lrWIRm%%8kM`L9MJ5V
+:Jakb;H$Op<`W=*=^,-:?=.,M@q9.`BPM=!DJsN8FEMePH@('hJ:W?,L5:\ENK90aPa.T&S"-(B
+TqeE\W2co#YHY==[C<]X]Y2(q_SjF6aND]NcHjndeCE1&g"P6;hV[8Nj5f=akNM0qlg4!*s6g!X
+nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Njs7uZh?2+'dp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`fj4L6.n,]skM^]">Vg]tV5[^]2+;
+_#V@O_=kbG_tq=K`W!mQ`;mjT`;mjT]_T2<]E#S;]_fD@^@8o8^Akt;_#;+E_>qLL`;IM0Q'Rf*
+S"-(BTq\?ZVl6VqXKA\1ZEppH[^`lZ]Y2%o^qmn*`5Ta:aN;TJbKS5UcHab_d/DAldf%YieG[kr
+deqJod*L&;c>UtObfe2PaiVWFa2Z*;`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Xf\\*WiE%s
+Vl$;dUnaZXTV%gISXc1=R@'A.QBd`"P*1rhO,o<\N/WXNM26qAL4t;5K7\Z)J:DuqI!^0cH$FOW
+G'3e+$$1-,EH#i6DJa4hCDCSuBP;$jAn>Oa@q/tW@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!s&Atr
+s&/korD<Mir_EDdr_3>bqb$iZrCHcTr'pTQogJRBoKr+7JcEdj*Vf[.j5A_Ig=b03f@AF$e'QCc
+cd'bWaN2E@`Q,pr`=]r'^qRRr]=Y_f]YD.j[C3QPrj2X0"1>VJ[dLWs62X(K6i0:O7K5jU7t+!#
+8P2TJ9MA/T:/=\_;,U=l<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm$&KnbD@N/`m[
+P*D5uR@B_<TV8-VVl6VrXfnt7ZaR?R]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(sm
+lKdg'mJlV_nF?)?oCMVIp%J+RrqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh=nhX`p%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`f<dDKU8XNJi^RN/`hnNr>(.OoCI9
+OT:R=OoCOBPPL@AOo1C<PlI$HPl6gDPkUC/PjF\2PkUI?QMHe%QC+)0S=Z@HU84W`W2cl!Xfnt7
+Za@0L\@K2`]tV7s_8=+.`Q#s>ai_fMbg"DXcHjkarR(YnrR:PkrR:epr6YSmcd2U9Dp?MMbKJ&M
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=5XfSS'Wi;qpVPU)aUS=HTT:VXFS=?"9
+R$a5+Q'ISsP*(ieO,f3YN/EIKLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TFoHIhF)l8?E,TW3D/B2e
+'l%GrBP1phAS#C^@q&nU?sm>K?=$q:>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>j:Amod9`Ic_
+9)_E\8GYjS7f5^J7/0.A6LmEns2k9[l,pKHZ`0dqTqS*LSt2FAS!oe6R$a5*QBd`!rf[;D&Wi-:
+O,f9_NJrdTNJrdPMi!>hM#W81M#iKimYUR%r'LBMqaCHQs$lrWIRm%%8kM`M9MJ5V:Jakb;H$Op
+<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:`E-L5:_GNK90aPa.T'S"-(CTqeE]W2co#
+YHY==[^WfY]Y2(r_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4!*s6g?bnac8BoCV_K
+p@e7[q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScAB^rVc`nr;6Njs7uZh<VQ4\p%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`e@$7Rg!E:/+I]:ARcV:B+,g;#X8a
+;#X>l:]X?gpeU]\s%`Vir(llbq,Z3Nr)io!r)Wi!r)ir$s&f;(p/q;qs&_+CQC+)0S=Z@HU84W`
+W2cl!Xfnt7Za@0L\@K2`]tV7s_8=+.`Q#s>ai_fMbg"DXcHjkarR(YnrR:PkrR:epr6YSmcd2U9
+Dp?MMbKJ&MaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=5XfSS'Wi;qpVPU)aUS=HT
+T:VXFS=?"9R$a5+Q'ISsP*(ieO,f3YN/EIKLkg_>KnP)2Jq8H&Isl`mH[:!`G^"@TFoHIhF)l8?
+E,TW3D/B2e'l%GrBP1phAS#C^@q&nU?sm>K?=$q:>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>j
+:Amod9`Ic_9)_E\8GYjS7f5^J7/0.A6LmEns3(EVql>9Z>Zk*+;Gg1a:eska:esn_:&[m(9MJ8U
+91r#T9h\5U9hS/S:/=S\9MA)PrCdSo:ea_[:JFS[:JagS;=m0P6N0@L7/o^U7f>i+84cBF8kViO
+9heAY:f("e;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll..NO-#NhQ'[o.
+S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O->
+mgJXTo()DDo_%nNp@nR]s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScAB^rVc`nr;6Njs7uZh=SMO_p%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!IS!fV.P`fg+LPhM&^::_b]=e-VrP/<Hm(rG5
+rPSNNqSiKSq8E?PrPefT!Q2PI]_K,:]E#Y@]_]>?^@Au8^AktB^];+G_#2%I_?7Wk_o)5e1W,KD
+R$jG6StD^NUnsufWiN8)YctF>[C3QT\\#Mf^V@V%_o0O6a2l?Db0/#Rc-FV\d/DAldf7ebeGn"s
+df.YociDDkc3DP;bfe2Pao9A%a2Z*;`5BI/_8*h#^:h1l]=PP`\$i`Q['R*EZ*:F7Xf\\*WiE"q
+Vl$;dUnaWWTV%gISXc1<R@'A.QBd\uP*1rhO,o<\N/NRMM26qAL4t;5K7SQ'IsufoI!^0cH$FOW
+G'.nKF)l;@EH#i6DJa4hCC4fjBP;$jAn>OaA,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!s&Atr
+s&/korD<Mir_EDdr_3>bqb$iZrCHcTr'pTQogJRBog817JcEgk0`:4pgt^`>f\"d,e^W'pd*Bq_
+bKA#La2Z*;`l#a5`PTL,^:q7l]=PPd^:Uk]\$Z.@s02^6\$rcRn$hmSr'LBMqaCHQs$luXs%!,]
+r^qZ59MA/T:/=\_;,^Cm<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIXm$&KnbD@N/`m[
+P*D5uR@B_<TV8-VVl6VrXfnt7['mHS]"G_k_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(sm
+lKdg'mdKW6nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScAB^rVc`nr;6Njs7uZh=SMO_p%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!IS!fV.P`f9aDfU,WO,JsUNK*dprK$<,pQ>K=
+plYN<rKI&?!0R,@ns''9r06o=m?I()!gJt8q3:fB!0mJJ!1*>D0p\2pS"-(BTq\?ZVl6VrXfen4
+ZEpsI\%0&]]Y2(p_8=+.`Q#s>aN;TJbg"DXcHjl9dJqYpe*kfde,IepdJqPnci22oc-4DTbK@s+
+aE#>@`Pod5_SX.)^V@Lr]Y(kf\[f2X[^EKKZa-j?YHG"0XK/A$W2HPjV50o^TqS-OSt;LCS!ob4
+R$X,(P`q8nOcYWbNfB!UMM[1GLPCP;KS+o.J:N,uI=6KiH?sj]GB\4QFEDSEEcH)<Df0H0D#S2W
+C2%?pB4baeARo<M@L$=L?sd8I?=!P8!aAi3r`K;)=',B%s&K(ur_rhps&&_ks%iVhrD!8bs%E5]
+r^m&ZqFCHQr'g9Hpd=^@nNha+bl8(Bg:t8.X/D\cTq@qTSc>2YRfA`gQ^*l$P`q8nOcY]eP)t`a
+NfT0XrJ^c7!f;_ir.kN3M2I.FM!p2l62X(K6i0:O7K5jV8,l*[8cD>392&#R9hnJ\:f1.i<)lt#
+=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=?]uK8#&9MN!OUOHPinQ^O>5StMdPUo1/kX0&S0
+ZF%'L\[oGe^VRe*`Q-'BbK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?s76Edp%A%P
+p\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScAB^rVc`nr;6Njs7uZh;YTnYp%@tKo()>?n*f]3m-O$%l0.9ljQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!IS!fV.P`eI'77^$FqbHu`mnW^TpJCfcrD<8b
+q+grc!)EAdnlPQdg/n2Sr`Att!*B#!!*T;'!*T/#!*B)#1KTj-R$jG6StD^NUnsufWiN8)YctF>
+[C3QT\\#Mf^V@V%_o0O6a2l?Db0/#Rc-FV\d/DAldf7ebeGn"sdf.YociDDkc3DP;bfe2Pao9A%
+a2Z*;`5BI/_8*h#^:h1l]=PP`\$i`Q['R*EZ*:F7Xf\\*WiE"qVl$;dUnaWWTV%gISXc1<R@'A.
+QBd\uP*1rhO,o<\N/NRMM26qAL4t;5K7SQ'IsufoI!^0cH$FOWG'.nKF)l;@EH#i6DJa4hCC4fj
+BP;$jAn>OaA,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mir_EDdr_3>bqb$iZ
+rCHcTr'pTQogJRBog817JcF!p+OQ0g?WpQ1;GU+a:/=Y\:f'q`:/+JY9MA/U9M8&S:/(U\%SKJi
+:/4MZ9MJ/R9MJ/Qr_EGes%WYm:JFUQ;=d*O6N0@L7/o^U7fGpX8,u6\8q0K-9MJ5V:Jakb;c?Xq
+<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@('hJ:`E-L5:_GNK90aPa.T'S"-(CTqeE]W2co#
+YHY=>[^WfY]Y2(r_SjF6aND]NcHsteeCE1'g"P6;hVd>Oj5f=akNM0qlg4!+n*fc9o()hP"n_K\
+p@e7[q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpj%Yn*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!JS!fY/P`h,MLkqUu\@B)\]=bhj^:q@srP7d9
+pVQmHqS`9Ms2OlR"N8:!`Pqhp!5n?=r4N$Bs1JBFrk/$>rP%p=q7cjCpqQmDrP/?IrPAEKs24TL
+0UA)pS"6.DTqeE\Vl6VrXfen5Za7'J\@K2`]Y;.r_8=+/`Q$!?ai_fMbg"GYcd;[=s3^nrqpb8g
+r7(_p!7Lhn$dd5GcHa\Zbfe2Pao9@qa2Z*;`5BI/_8*h#^:h1l]",A]\$i`Q['R*EYct=6Xf\\*
+Wi;qpVl$;dUS=HUTV%gIS=?":R@'A.Q'IStP*1rhO,o9ZN/NRMM26qAL4t84Jq8H&IsufoI!^0c
+H$FOWG'.nKF)q8"%WH?(DJa3*CMIQtBP;$jrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!
+s&Atrs&/korD<Mis%`Jdr_3>bqb$iZr^ciTr'pTQogJRBoKr+7JcEso"8MojjSms;g=b*0rm_D+
+d*U+acd'\UbK7g'`W*db_o0F/^qRLo]=PPa]Y1lS[0<qDZE^[BrjM7(o0N:@r^6QNs$crWr^ZuZ
+!(m/^InNI/9heAY:f("f;cHat='/U/>?kH@?X[DRAS,RgC27[(DfKf>Fa&(VH[UBoJqJc3Ll..N
+O-,TiQ'du/S=ZCIUSXleWiW>+Yd1XE\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5Oe
+kiqBum-O0/n*ol<nd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi_Pn*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!JS!fY/P`h,=DfL)SMN!MjNW5%;O6hu&OT:R=
+Oo:IAPPL@COckq+Oo^]/ns''9qNUZ:mZd1*!gJt8qNUE50UA)pS"6.DTqeE\Vl6VrXfen5Za7'J
+\@K2`]Y;.r_8=+/`Q$!?ai_fMbg"GYcd;[=s3^nrqpb8gr7(_p!7Lhn$dd5GcHa\Zbfe2Pao9@q
+a2Z*;`5BI/_8*h#^:h1l]",A]\$i`Q['R*EYct=6Xf\\*Wi;qpVl$;dUS=HUTV%gIS=?":R@'A.
+Q'IStP*1rhO,o9ZN/NRMM26qAL4t84Jq8H&IsufoI!^0cH$FOWG'.nKF)q8"%WH?(DJa3*CMIQt
+BP;$jrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Mis%`Jdr_3>bqb$iZ
+r^ciTr'pTQogJRBoKr+7JcF$q%.)-F]!SE2U7n3NSY#hN%\&oVR@9J/QBmf#P`q8nrf@5COcPS%
+N>%5/Mi3INMM[1GM2@%ELPLbELktJUo0N:@r^6QNs$crWr^ZuZ!(m/^InNI/9heAY:f("f;cHat
+='/U/>?kH@?X[DRAS,RgC27[(DfKf>Fa&(VH[UBoJqJc3Ll..NO-,TiQ'du/S=ZCIUSXleWiW>+
+Yd1XE\%0)_^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O0/n*ol<nd"dYo_%nN
+p@nR]s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpiYNn*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgTqJ!JS!fY/P`h+p7n?0E:&Ri`:[_'T:\R]a;>sDe
+:\dcb:BF9e;#F)j:0(Ed=85hM=8H&!=8Z,!=8c5$=7]Po=8c5TQC+,1SXuLJUSOcbW2co#Y->1;
+ZaI6O\[oGd^;%J"_Sa@3`lQ6Cb0.uPc-FV\d/MGmdK%bneF_;heGdnsdf%Q$d*L%`cHXVXbKJ&M
+rlAfo`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6sAYck43XfSS'WMl_mVPU)`U7n9RT:VXES"#k7
+R$a5*Q'@JqP*(ieO,]*WMi*@JLkg_>KnG#0JUi9#IXQWlH[:!`G^"@TF`__HErL%gE,TW3D/=!'
+C2%BqBP1rVAH?=OraGn:@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Adic9`Ic_
+9)_E]8GPdR7f5^J7/0.A6LmEns3L]VYCU:i=]SHu:JOSZ:/=SY;#X6)9hnJW9MJ5T92&,V9MJ2S
+9h\5T:B!uf9`I`m9MJ/S:/+MX:JFU`:B45Z;=d*O6N0@L7/o^U7fGpX8,u6\8q0K-9MJ5V:Jakb
+;c?Xq<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@('iJ:`E-L5:_GNK93bPa.W(S"-(CTqeH^
+W2cr$YHY=>[^WfY]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9o(!%W
+o^qhLp@e7[q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi_PnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSgU7e*KS!fY/P`h,HKnktfY.hOH]`5\F^AbnE_!]&7
+_Z%IL`;@OR`qRFR`l5pq_u[iqpq-I8rk&*@q7Qd@pq?R=otU=:rP/BJoY:FAs2"TLs24ZN1maSu
+S"6.DTqeE\Vl?\tXfen5Za@0L\@K2`]tV7s_SX71`lH0Bb0.uPc-FV\d*^7hdaS0Ermgtuq:GSr
+rmgtss3gtrrmCbm!71Yi"jP97bK@s+aEttI`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZE^X<YHG"0
+X/`2!W2HPjUnjc[TqS-OSt2C@S!ob4Q^3o%P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6Ki
+H?sj]GB\4QFEDSEEH,r9Df0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%
+s&B%urDW_os&&_ks%iYir([2br_*,\r^m)[q+(?Pr'g9Hpd=[?nj.j,cMnUWqWd%pgYCK6f@JI%
+eC2djcHje\rlPDd`l5p8`W!^Y_nj1)^:h/W\co^Y\$`WNrj2X0"1>YK[dCQq62X(K6i0:O7K5jV
+8,l*[8cD<_92,=ZInid9:f1.i<)lt#=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&:
+MN!OUOckroR$jG6StMdPV5L8lXKA\1Za@0M\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeX
+jlYail0@U$m-a?2nF?)?oCV\Jp&F^cp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi\OnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSgU7e*KS!fY/P`h,9CiFTIL5u%grf6l:mZ?n"rf[2C
+pQ>N?r/q,DP*5g.o9B-9qNU`<m$-k%qipT81maSuS"6.DTqeE\Vl?\tXfen5Za@0L\@K2`]tV7s
+_SX71`lH0Bb0.uPc-FV\d*^7hdaS0Ermgtuq:GSrrmgtss3gtrrmCbm!71Yi"jP97bK@s+aEttI
+`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZE^X<YHG"0X/`2!W2HPjUnjc[TqS-OSt2C@S!ob4Q^3o%
+P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9Df0H0Chmg$Bk_6o
+B4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([2br_*,\r^m)[
+q+(?Pr'g9Hpd=[?nj.j,dJjRHh8-V0X/DbdT:Z%Qs-s+ZRf8]WR[BG.rfmAE"d"e,O-#D"NW"e?
+MMm@KMM[,fL]E50M?&J"M=X%26N0@L7/o^U7fGpX8,u6\8c_RYr_7l;:Jakb;c?Xq<``C+>$G6;
+?XI5N@qB7bBPM="DJsN8FEMePH@('iJ:`E-L5CeHNK93bPa.W(S"-(CTqeH^W2cr$YHY@?[^WfY
+]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9o()DEo_%nWp&Ojdq#C0i
+qY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh#5@ibp%@tKrpi_PnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb(-WMcSgU7e*KS!fY/P`h+p6UsU=:/=X\:[_'Q:\mod;>sDe
+:\dc`:B45h:BF9e:]+8b=8Gth=8uD!<rc@m=8>tu=8c2"=8c8$<s2W,=BAT#=T);Y=I5DDS"6.D
+TqeE\Vl?\tXfen5Za@0L\@K2`]tV7s_SX71`lH0Bb0.uPc-FV\d*^7hdaS0Ermgtuq:GSrrmgts
+s3gtrrmCbm!71Yi"jP97bK@s+aEttI`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZE^X<YHG"0X/`2!
+W2HPjUnjc[TqS-OSt2C@S!ob4Q^3o%P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]
+GB\4QFEDSEEH,r9Df0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&B%u
+rDW_os&&_ks%iYir([2br_*,\r^m)[q+(?Pr'g9Hpd=[?nj.j,df0^+NcJN2=B&-o:/4Ua:'F?f
+:Jak`r_<tt9hnGW9MJ8U9MJ5T9h\4Z:B+&g9`Icc9E7]a:B!rj:/=\_:@1pM62X(K6i0:O7K5jV
+8,l*[8cD<_92,=ZInid9:f1.i<)lt#=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&:
+MN!OUOckroR$jG6StMdPV5L8lXKA\1Za@0M\[oGf^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeX
+jlYail0@U$m-a?2nF?)?oCV\Jp&F^cp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh<;6+[p%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY/P`h/EIY<]NXM+SEs1SHHrkJ0Bo>1=@
+"2Vjl_th7>`<+&u`Vm^V`Pf^n]Cri8]DT>0^&#J9^](qI^&>YG^V0Q[!5AHI!5A<E"Mhji_SQ2f
+s24iS2T!DNQ^F52SXuLJUSOcbWN*&%YHY:<['mHR\\#Mf^V@V%_o0O6aN2KGbKS5VcHjkbdF-Il
+rm^turmpSjs472"rm^tss3gqps3Lblrm$#<bfe2PaiMQD`l?!:`5BI/^q[Xu]tD"i]",A]\$i`P
+Za6sBYct=6XfSS'Wi;qpVPU)aUS=HUT:VXFS=?":R$a5+Q'IStP*(ieO,f3YN/NRMLkg_>KnP)2
+Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,TW3D/F*)CMIS_BEi*]AS#C_A,]p<@:9(A#@:\A>[1K;
+>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k:Adid9`@]^9)_E]8GPdR7f5^J7/0.A6LmEns3^ibq>^3M
+h:pc=f@\['daZ^md*L%`c-=GSbK.^&`#Zb3_8F1,_8*dt]=PPa]"P_c[C3HK['R$B[C<TQm^MaQ
+rBgHMqaCHQs$luXs%!,]r^m2a9`@b9:/=\`;H$Ln<E<1'=^#$7?!guJ@Uit]BP;-rD/O<4F*)SL
+H$XjdIt3-'KnkMBN/`m\P*D9"R@Bb=TV80XVl6VsXfnt8['mHS]=bkm_8=.0a2lEHc-F\`e'uq"
+f\5'7h;7)JioB+]k3(smlKdg(mdKW6nac8Bo^qhLs7QHerqQNhs8)Zjrqu`np&9OBSc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZh;tp"Zp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY/P`h/7Bl%p>L%pZ,NqSP*OSb.?OS=n9
+P5UU<OoU^DOopi0P*,X*!L/fBPkgOCPlI$JPk^I.PQ6pFPlR'HPlR'JPlR'HQ2[$CPlR'JPr=kl
+Q'[l,S"6.DTqeE\Vl?\tXfnt6Za@0M\@K5a]t_=u_Sa=2`lQ6Cb0/#RcHab_dF$Cje,Iksec+.h
+fDjG$ec+(ue,RkrdJqPnci24>c-4ASb/q`Ga2Z-<`Pf[2_SEq$^:h1l]=PP`\@8oT['R*EZ*:I9
+Y-"e+WiE%sVl$;dUnaZXTq@pJSXc1=R[BJ/QBd`"PEM&iO,o<\N/W[PM26qAL4t;5K7\Z)J:E#r
+I=-BfH?jaZGBS+NFE;JBEH#i6DJa6,CMR[!rb)LKAn>OaA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&
+r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTr'pTQogJRBoKr+7JcF4!&+7TL]!SE1Tq@pI
+S=Q1>SGej)R[KP0Q^*f"P*1rjOH5KaOH,<[Nf8sVMi<UQMMm:HM27"ELPLbELktJUnj34@rBpHM
+s$crWr^ZuZ!(m/^!D?,c9n,o6:f1+h;cHat='/U/>?kH@?t!MSAS,UhC27[(E,fr@G'A4XI!pKp
+JqJc4M2I7OO-,TiQC+)0SXuLJUnsufWiW>+Yd:^F\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@
+i8EVTjQ5OekiqBum-X60n*ol<o(2MGp%A@Y!;HKfs7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh;tp"Zp%@tKoCDJBnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY/P`h.r6q9^;:A@WS:A.K[;#X>j;#!i^
+:Adlf;#F)k:/=Y\q,[)gqc<;ir`K&!s&eemq,mYur`9&#r`JqsqcNl"1ffs1R[]k>TV8-VVPgDn
+XKA\1Z*UgG\%&u\]Y2(p_8=+.`Q$!?ai_fNc-FV\d*^7hdaS3Fs4.,"nCR]krmh"ts3q"rs3^kn
+!71YiJ'H3\bK@rJaN)<?`Pod5_SX+'^V7Co]Xtbc\[],W[^<BIZE^X<YHG"/X/`2!W2HMhUnjc[
+TqS*MSt2C@S!o_3Q^3o%P`q8mOH5H_NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSE
+EH,r9DJj<.Chmg$C&VcMB4b^dA7T3L@KBnFra,n:?!U]?>?b;1=oVV(=8l8#<<-"s;u]bq;>j>k
+:]F2f:&dod9D_?\8cD9V8,PjS7J0(D6hE_96%T'crsH&`BO"\@;Gp=c:&[of9a+<e:f'q_rCn#&
+:/">U9h\5T:/"AU9282V:/+DU9DqNa:&[ll:JFS[:JO[Q;=[$O6N':K7/o^U7fGpX8,u6\8c_RY
+r_7l;:Jand;c?Xq<``C+>$G6;?XR;O@qB7cBPM="DK'T:FEVkRH@1-jJ:`E-LP^nINK93bPa7])
+S"6.DTqnN_W2cr$YHY@?[^WfZ]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4$,
+n*fc9o()DEo_%nWp&Ojdq#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh<;6+[p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcVhU7n0LS!fY0P`h/CH%_$CY.ahHs1A?FrP&9Gq7uC6
+s2+fRpr)^As2P)Xs2=oUs2=rVqmum?]D9&<]DT>0^%f>7^\PV:^Au"G^B23e_>M1M_u7M0_j?aZ
+S"6.DTqeE\Vl?\tXfnt7ZaI6N\[oDc^;%J#_SjF4a2lBFbKJ/UcHjkbdF-IlrmV#"f%0`Mp=T8o
+rmq,"rmV"udaJ-B!RT0lc@=*_bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Y[^EKKZa-j?Ycb+1
+XK/A$WMcYkV50o^U7n6PSt;LCS!ob4R$X,(Q'@GpOcYWbNfB!VMi!:HLPCP;KS+o/JUi9#IXQWl
+H[:!`G^"@TF`__HEcH)<Df0H0D/=!'C2*Z\$YO'_ARo=]@U`bS@/aL<?<piA>[(E9r`T8'!*B,"
+!``3!rDW_os&&_ks%iYir([2br_*,\r^m)[q+(BQqaL0Gpd=^@nNha+e,LKep?LSig=t92e^N!s
+eC)aicd'bZbfn5Oa2Ps7`5DPi(Vml&^:_%g\[o>b]=5/T['R*EZ*UjJ[dCQp62a.K6i9@O7K5jV
+8,l*[8cD>392&&S:/=\_;,U=k<)lt#=BSg4>[CcF@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!KSG8=
+MN!RVOckuqR$jG7StMgRV5L;mXKA\2Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeX
+jlYail0@U$mI'H3nF?)?#P7T[p%A%Qp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh<;6+[p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcVhU7n0LS!fY0P`h/5AoDd;KoYnerf6f8m?%%(rK@/D
+p6,H>q2tfAP*5R'q3:W;rK[AHqNL--nWa*=rK[DIqj%/FrKT1'Q^F52SXuLJUSOcbWN*&%YHY==
+[C3QT]">Vh^VI_'`5T^9aN;TJbK\>Xcd:(edaHVDe,n1Of)+(mf_a;"f)O;"e,n+Idf.Vpd*M^:
+J'H3\bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[])V[C!9HZE^X<Y-"h-X/`2!Vl-DgUnjc[TqJ$L
+St2C@R[KP1Q^3o%P`h2lOH5H_NJrgSM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9
+DJj<.Chmg$C&VcRB4b^dA7T1Z@UW\Qra,n:?!U]?>?b;1=oVS(=8c/$<E)rr;u]bq;>j>k:]F2f
+:&dod9D_?\8cD9V8,YpS7J0(D6hNe96%T'ert#"a^pp_PVP9`TSt2@AS=BMG$(@9NQ^=#'P`q@2
+OUdP:O-#E_N/`dVN/`dSN;\Y8Lkkqb"G_ejMMUYVnj34@rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\
+:f1+h;cHat='/U/>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpJqSl6M2I7PO-,TjQC+)0SXuLK
+UnsugWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-X60n*ol<
+nd"dYo_%nNp\4[^s7u]kr;6KkrVcEgJcD;@J,~>
+JcC<$ScA?]rr)ior;6Njs7uZh:&"ATp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+.WMcVhU7n0LS!fY0P`h1.7K5p[9htR]mnWRPqb[5grD<8b
+q+glas%rMe!_uNepK$lerDrhts&f,!r)io!rE/Skq,mYu!`iB(rE/bprE(jWQ^F52SXuLJUSOcb
+WN*&%YHY==[C3QT]">Vh^VI_'`5T^9aN;TJbK\>Xcd:(edaHVDe,n1Of)+(mf_a;"f)O;"e,n+I
+df.Vpd*M^:J'H3\bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[])V[C!9HZE^X<Y-"h-X/`2!Vl-Dg
+Unjc[TqJ$LSt2C@R[KP1Q^3o%P`h2lOH5H_NJrgSM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4Q
+FEDSEEH,r9DJj<.Chmg$C&VcRB4b^dA7T1Z@UW\Qra,n:?!U]?>?b;1=oVS(=8c/$<E)rr;u]bq
+;>j>k:]F2f:&dod9D_?\8cD9V8,YpS7J0(D6hNe96%T'frs[_KFC/0O<)?@c9i+Xb:&ds09i+Y]
+:/"AV:/4MW9MJ5T9MS>U9M8#S9hnJY9h\4Z9F=Kf:/=S[:/F__:@1pL62a.K6i9@O7K5jV8,l*[
+8cD>392&&S:/=\_;,U=k<)lt#=BSg4>[CcF@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!KSG8=MN!RV
+OckuqR$jG7StMgRV5L;mXKA\2Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeXjlYai
+l0@U$mI'H3nF?)?#P7T[p%A%Qp\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh=nhX`p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0P`h/iEefF?Uq++L]Y2#W^@o>5_#(qJ
+_Z%IJ`::hH`rF$X`;[aU`;ddV`;[@K]_]8>\cfXV]">TO]_&l;^AP\>^@]25^@]/A^qmkb_Z.OP
+`&3pNS"6.DTqnN_W2co"Xfnt7ZaI6O\[oGd^;%J#_o0O6a2lBGbKS5Vcd:(edaQ[peCE+#rR_&$
+o@a,qrR_)#s4.+us3gtrrm>c5cd'h\c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q['R*E
+Yct=6Xf\\*Wi;qpVl$;dUnXQVTV%gISXZ+;R@'A.QBd\uP*1rhO,o<\N/NRMM26qAL4t;5K7\Z)
+IsufoI!^0cH$FOWG'3e+$$1-,EH#i6DJa4hCDCSuBP;$jAn>Oa@q/tW@:3JM?X@&Er`oJ-!*]A)
+s&]8&rDiu"<)ifp!`DlmrD<Jhs%`Jds%NDbr(?oZr^ciTrC6]RogJRBog8.6JcF=$#5S;lj4rAB
+rm`aPda?Rnd*L"_bg+GTbK7lG`l#^4_SO%&_8*n&^:_%g\@T5`]=,)S['[-EZ*_$M[dCQp62a.K
+6i9@O7K5jV8,l*[8cD>392&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYmnCMds.EH?5FGBnL^
+I=Hd!KSG8=MN!RVOckuqR$jG7StMgRV5L;mXKA_3Za@0N\\#Mg^VRe*`Q-'BbK\>ZdF6Urf@\g3
+gtgiFiSrnYjlYajl0@U$mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZh;tp"Zp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0P`h/i@W-:4JGtN(NW+t(O8G%4Oo:IB
+PP11>PPL@DOcklioTK9>rfd>GpQGTArK[>Gr0-<.mZm^7qiq/GrKT7-R[]k>TV80XVl6VrXKA\1
+ZEpsI\@K2`]Y;.r_Sa=2`lH0BbKJ,ScHjkbdF-LmeC<%!f)=5"f^meqf_sG%f)O;"eGmttdf.X7
+d*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZEUR:Y-"h-X/`.tVl-DgUnj`Y
+TqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H_NJrdQM2@%DL5(D8K7ec,J:E#rI=-BfH?jaZGBS-.F:!#/
+EH,r9DJj<-rbE6`BkV0mAnGUcA7K+Y@UWYP?XI,G?2e+/>6%k+=oVS(=8c/$<E)rr;Z]io;>j>j
+:]F2f:&dod9DhE\8cD9V8,YpT7J0(D6hNe86%T'grtFnF\@],HTV.mKSt)=?R[]b7R$mo?!LB#M
+PlHmGP5gU^O,f6ZNf8sVNJraRN/NUOLkgeBLPU_BMM[/VM=Nt26N':L7/fXT7fGpX8,u6\8q0K-
+9heAY:f("e;c?Xr<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJ:`H/LP^nINfT<cQ'Rf*
+S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_SjF6aND]NcHstfeCN7(g=tE=hVdAPj5f=akNV6rlg4$,
+n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZh<;6+[p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0P`h/i5t":78l#:[nkSdPqb[5gr_NVk
+;#3u_:Amug;#*le:B"&]<WH5#<q]Vp<rH+t=Su7u=Su8"=R]Df=T)>"=S>hp=>cJ7S"6.DTqnN_
+W2co"Xfnt7ZaI6O\[oGd^;%J#_o0O6a2lBGbKS5Vcd:(edaQ[peCE+#rR_&$o@a,qrR_)#s4.+u
+s3gtrrm>c5cd'h\c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q['R*EYct=6Xf\\*Wi;qp
+Vl$;dUnXQVTV%gISXZ+;R@'A.QBd\uP*1rhO,o<\N/NRMM26qAL4t;5K7\Z)IsufoI!^0cH$FOW
+G'3e+$$1-,EH#i6DJa4hCDCSuBP;$jAn>Oa@q/tW@:3JM?X@&Er`oJ-!*]A)s&]8&rDiu"<)ifp
+!`DlmrD<Jhs%`Jds%NDbr(?oZr^ciTrC6]RogJRBog8.6JcFF'$ate'>Zb'*;bp.`:]=)n9i"M\
+:JFX`9dEM0:/+DW:J=DW9hJ&P9M\AW:JFMU92&#P:/"DY9heAY:esjR;=[$O6N':L7/fXT7fGpX
+8,u6\8q0K-9heAY:f("e;c?Xr<``C+>$P<=?XR;OA7]@dBkhF#DK'T:FEVkRH@1-jJ:`H/LP^nI
+NfT<cQ'Rf*S"6.DU84W`WN*&%Yd(OA[^`l[]Y;.s_SjF6aND]NcHstfeCN7(g=tE=hVdAPj5f=a
+kNV6rlg4$,n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTerdk*?s*t~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Icp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8jDh`k,V6.T5]`#MD^A,J7_"tkK
+_Sa:c`:CnH`rF$X`;[^U`;[aU_uR^S]DfJ>])]GA]DoGB]DT>4]`>_D^%f>:^[]&1^B)-dqniBN
+s26a]R[]k?Tq\?ZVl6VrXfen5ZEpsI\@K2`]t_=u_Sa@3a2lBFbKS5VcHjkbdF-LneCE.$rn%2&
+rn6krrn7;'rn%2$s4.+u!RoKrd=9NhcHa\Zbfe2PaiMQD`l5p8_ns:,^q[Xu]tCtg\[f5Z[^NTN
+Za-j?Yck43XfSP&WMl_mVPU)`U7n9RT:VUDS"#k7R$a5*Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)1
+JUi9#IXQWlH[:!`G^"@TF`__HEcQ/>E,TW3D/B2e$>O9gBP1phAS#C^raH+@?sm>K?=$q:>QS,5
+>5h\)=9)G%<rZ2"<;ohr;ZBVm;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.B6Ld?ms4I>Xr:T@6
+f\"d(da\9E(=U[XcHaYWbfn>UaN)<>_SX.*^q[Y#rkK5^]Xk\a\[f>a[^<KM['HsA[CEZRm^MaQ
+r'L?Lr'^NQs$luXs%!,]r^qZ59MJ5V:Jakb;H$Ln<`W:)=^#'8?=.)K@Us%^BPD6tD/O<4F*)SL
+H$XjdIt30)L51VCN/is]PEhH$R[]k>Tq\?ZVl?\tY->1;['mKT]=bkm_8F73aN;WLcHaeae'ut#
+f\5*8h;@/LioB+^k3)!nlKdg(mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Icp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8j?uBn,Ita!\NW+t)O8=t3OoCOC
+PP11=PP1.@OckjpP5pjAPQ$gFQ2[$GPNJ,'Q1gI:Pr+ksS"61FU84W`W2co#Y->1:ZaI6O\[oGe
+^V@V%_o9U8aN;TJbg"GYcd:(edaQ^qe^i=NfDjM&g%*krg&BY'fDjG%ec+&!e'e6CJ'cNecHXVX
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZE^X<YHG"0XK&;"W2HPjV50l\TqS-OSt2C@
+S!ob4R$X)'P`q8nOcYWbNJrgSMM[1GLPCP;KS+l-J:N,uI=6KiH?sj]GB\4QFEDSEEcH)<Df0H0
+D#S2WC2%?pB4baeARo<M@L$=L?sd8I?=!P8!aAi3r`T8'!*B/#s&K(ur_rhps&&_ks%iVhrD!8b
+r_*/]rCQuZq+(BQr'g6Gpd=^@nNha+gA_H:_RQqRVP'NPrgagpS!oe5R@'D/Q^F)(Pa.JrOcb`e
+O,s:#!K<$:N"Lu*N/W[QMMR%DLkgeAMMd4GmYUL#r'L?Lr'^NQs$luXs%!,]r^qZ59MJ5V:Jakb
+;H$Ln<`W:)=^#'8?=.)K@Us%^BPD6tD/O<4F*)SLH$XjdIt30)L51VCN/is]PEhH$R[]k>Tq\?Z
+Vl?\tY->1;['mKT]=bkm_8F73aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!nlKdg(mdKW6nac5O
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Icp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8j6UXI892/1\:\.?Q:\mod;>a8e
+:\[]a:]=2_:B4/X<q08h=Su8!=Sc,!=R]Dd=T;J$=S>hr=>ZD6S"61FU84W`W2co#Y->1:ZaI6O
+\[oGe^V@V%_o9U8aN;TJbg"GYcd:(edaQ^qe^i=NfDjM&g%*krg&BY'fDjG%ec+&!e'e6CJ'cNe
+cHXVXbKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZE^X<YHG"0XK&;"W2HPjV50l\TqS-O
+St2C@S!ob4R$X)'P`q8nOcYWbNJrgSMM[1GLPCP;KS+l-J:N,uI=6KiH?sj]GB\4QFEDSEEcH)<
+Df0H0D#S2WC2%?pB4baeARo<M@L$=L?sd8I?=!P8!aAi3r`T8'!*B/#s&K(ur_rhps&&_ks%iVh
+rD!8br_*/]rCQuZq+(BQr'g6Gpd=^@nNha+h#@`BRWW%A<`Dpk9hbL\s%WMg!`2Zfr_<Af!)EMe
+s%WVf9MGFX#Yduf9hnJY9M>@Y$VO5h9i"JX:/F\\:[V*N62X(J6i9@O7K5jV8,l*[8cD>392&&S
+:/=\_;,U=k<*!%$=]np5>[CcF@:EbYAnYmoCMds.EH?5FGBnL^I=Hd"KSG8=MN!RVOcu&rR$sM8
+StVmSV5L;mXKJe4Za@0N\\#Mg^VRh,`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI'H3
+nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Oep%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o_1Q'.8jCjq"nS?0K<]`#PC^@T,9_"tkK
+_Sa:b`:LtI`rF!]`5Ta8`Phbps24rU_Y^tE]_8r<]"@pRr4W-Cq7Zd?rOr'As1e*<rk89EotLUC
+^VI\__Z.M6R$sM9T:r!TV5L8lX0&P/Z*UgG[^`l[]Y2(q_8=.0`lH0Bb0/#RcHjkbdF-LneCE.$
+f@S[-g"H5Uq:kc"s4RG)rRV,%e^aZK!RoKrd07nCcHa\Yrl]0$aiMQD`l5p8_ns:,^q[Us]Y(kf
+\[f5Z[^NQLZa-j?Yck43XK/A$WMl_mV50o^U7n9RSt;LCS"#k7R$X,(Q'@JqP*(fdNfB!VMi*@J
+Lkg_=KS+o/JUi9#IXQWlH[:!`G^"@TF`__HErL%gE,TW3D/=!'C2.HrBP1rVAH?=OraH+@?sm>K
+?=$q:>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.A6LmEn
+s4dPZqu?3IgtC?0e,IcLdF6LicHaYWc-4DSaiDB>`50@-^qd_!^qRV!]t:ke\@K,\]!euR['[-D
+Z*h*M[dLWq62X(J6i9@P7K5jU8,l*[8cD>392&&S:/=\_;,U=k<*!%$=]np5>[CcF@U`kZAnYmo
+Ci+'/EH?5FGBnL^I=Hg#KSG8=Mi<[WOcu&rR$sM8StVmSV5L;mXKJe4Za@0N\\#Mg^V[n-`lQ9F
+bg+P]dF6Urf@\g3gtglGiSrnYk2tjkl0@X%mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?
+s.01?~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Icp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o_1Q'.8j?"n.qH\.=UNW+t:O8Y+2O8=t4
+Oo:ICPP(+<PPpXEPP^LFOckihi04/)rKRAIqNL'+rfur:q3<t-R[]n@Tq\?ZVl6VrXfen5Za@0L
+\@K5a]t_A!_SjF5a2lBFbKS5Vcd:(edaQ^qe^i='f@\a/g%sFug\TY(g&K_'f)jORec+&!e'e6C
+"jkT@cHXT4bAGDDaN2EA`Pod5_SX.)^V7Co]Xtbc\[],W[^<BIZE^X<YHG"/X/`2!W2HPiUnjc[
+TqS-NSt2C@S!ob4Q^3o%P`q8nOcPQ`NJrgSMM[1GLPCM9K7ec,J:N,uI=6KiH?sj]GB\4QFEDSE
+rc&EeDf0H0Chmg$C2%?pB4h-S!G#^>@L$=L?sd8I?=!P8!aAi3r`K;)=',B%s&K(ur_rhps&&_k
+s%iVhrD!8br_*/]rCQuZq+(BQr'g6Gpd=[?nj.j,h>\)Yc+(<iW1fiSSt2@AS"#k8RJrQZQ^F)(
+Pa%>pP5^UCNrk?$NrG%<MuS_:M2_Fl",_niM>`23MMm:HmYUL#r'L?Lr'^QRs$lrWs%!,]r^qZ5
+9MJ5V:Jakb;H$Ln<`W:)=^#'8?=.)L@Us%^BPD6uD/O<4F*)SLH$XjdIt<6*L51VDN/is]PEhH$
+R[]k>Tq\?ZVl?\tY->1;['mKT]=bkm_Sa@4aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!nlKmm)
+mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqucoo_sFASc=3~>
+JcC<$ScA?]rr)ior;6Njs7uZhs7]Oep%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYcb+/Wi)_iU7n3MS!o_1Q'.8j6UaL785)]Q:\miQ:\moe;>sAn
+;,C*c:\dca:]=2h:B45e:]F2U<qBDj=Sc+u=SZ"u=RfJ_=S5`UR$sM9T:r!TV5L8lX0&P/Z*UgG
+[^`l[]Y2(q_8=.0`lH0Bb0/#RcHjkbdF-LneCE.$f@S[-g"H5Uq:kc"s4RG)rRV,%e^aZK!RoKr
+d07nCcHa\Yrl]0$aiMQD`l5p8_ns:,^q[Us]Y(kf\[f5Z[^NQLZa-j?Yck43XK/A$WMl_mV50o^
+U7n9RSt;LCS"#k7R$X,(Q'@JqP*(fdNfB!VMi*@JLkg_=KS+o/JUi9#IXQWlH[:!`G^"@TF`__H
+ErL%gE,TW3D/=!'C2.HrBP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm
+;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.A6LmEns5*br\qt'*=&r6s:JO\]:/4MX:/+P\9hnGX
+:JFV[9ht[])bipt:.e,P9hJ,S:/4MX92%uP92/,U:JFPY;#X5X;=[$N6N':L7/o^U7f>jW8,u6\
+8q0K-9heAY:f("e;c?Xr<``F,>$P<=?XR>PA7]@dBkqO%DK'T:FEVkRH@1-jJV/W1LP^qJNfT<d
+Q'Rf+S"6.EU84W`WN*&&Yd(OA[^`l[]Y;.t_o9X:aihoRcd:(geCN7(g=tE=hr*JQj5f@bkNV6r
+m-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;QZerdk*?s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>kC3G8bR\dR,]Y2#W^AYhC^A>VD
+_"tkI_Y_7I`:LtI`r3jY`l5p8rP\lW_ns:c]DoP;])oRU]D]D@^&G\@^&>VB^$<?1^&5VD^Au"D
+^]2(L_>D)._j[*eT:r!TV5L8lX0&P/Z*UgG\%&u\]Y;.r_SX71`lQ6DbKJ/UcHjncdaQ^qe^i='
+f@\a/r7_/)pY>`%r7_2(s4I>&s4.2#rmUttdf.XDd*L"_c-4ASb/qcHaN)<>`PfX1_8*h#^:h1l
+]=PP`\@8oS['R*EZ*:I8Xf\\*WiE%sVl$;dUnaZXTV%gISXc1=R[BJ/QBd`"PEM&iO,o<\N/W[P
+M2@"BL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JBEH#i7DJj<-s(_gRBk_6oB4h-S!G#^>@KBnF
+ra,_5?![G7!aAi3r`K;)=',B%s&B%urDW_os&&_ks%iYir([/as%E5]r^m&ZqFCHQr'g6Gpd=^@
+nNha+h>[`WoB>/cf$r1JdP9.tdF$:cc-+;Ub0%fG`Pod4_SO('^V7Fs^;%Cp]"5M`\[]5^[^<HK
+['HsA[CEZRm^MaQr'L?Lr'^QRs$lrWIn3.&8kM`L9MJ5V:Jakb;H$Lo<`W:)=^,-:?=.)L@Us%_
+BPD6uDJsK6F*)SLH$XjeJ:W?+L51VDN/is^PEhH$R[]k?Tq\?[Vl?\uY->1;[C3TU]=bno_Sa@4
+aN;WLcHjnce'ut#f\5*9h;@/LioB+^k32'olKmm)mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrquco
+o_sFASc=3~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0%YoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>k>\.blH@c'Ss,Hu;rK$]5qN(K7
+s,m5@rfR/B!0d&<rfd;D!0d5ArfQN1!0Zu<s-3GHq306kqNWt-S=Z@HU84W`W2co#Y->1;['mHR
+\\#Mg^VI_'`5Ta;aND]Lc-FV\dF$CkeC<%"f%8O+f\-2VrnI2&rS.8(s4RG)rn%2$!7h(u!RoKr
+d=9NhcHa\YbKJ&MaiMQD`l5p8_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Ycb+1XK/A$WMl_lV50o^
+U7n6PSt;LCS"#k6R$X,(Q'@JqOcYWbNfB!VMi*@JLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__H
+EcH)<Df9N2D/B5f#&7jdBP;$jrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!!*&nqs&/ko
+rD<Mis%`Jdr_3>bqb$iZrCHcTr'pTQoL/IAog817JcFX-#i`\1ZE'mrT:PqNrgO+\R$a;/Q^7W9
+s-*JGs,dYLNfT6]NfB'YN/R[o#`4LtMi3FJLPYqb"GVelLktJUnj31?rBpKNs$crWrC;?.8P)NH
+91qrQ9hnJ\:f1+h;cQk!='8[1>[:ZC?t*SUAS5[jCM[m,E,fr@G'A4XI"$TsK7nu7M2R=QO-5]l
+QC+,1SY)UMUo(&hWi`G.Z*UjH\@K5a^VI_(`Q$!@bKS8XdF$Fmf%8R.gYL]Ci8N\UjQ>Ugl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0%YoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>k6q0U97nNJNlqdISs&&YiqG6o^
+r(m;grD*Diq+publW+'e<`\ior)ibr!*JDcrE'&$p/q#i2O^/-T:r!TV5L8lX0&P/Z*UgG\%&u\
+]Y;.r_SX71`lQ6DbKJ/UcHjncdaQ^qe^i='f@\a/r7_/)pY>`%r7_2(s4I>&s4.2#rmUttdf.XD
+d*L"_c-4ASb/qcHaN)<>`PfX1_8*h#^:h1l]=PP`\@8oS['R*EZ*:I8Xf\\*WiE%sVl$;dUnaZX
+TV%gISXc1=R[BJ/QBd`"PEM&iO,o<\N/W[PM2@"BL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JB
+EH#i7DJj<-s(_gRBk_6oB4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&B%urDW_os&&_k
+s%iYir([/as%E5]r^m&ZqFCHQr'g6Gpd=^@nNha+iVsPSSp+RF<E)gk:JOY]:JOVZ9ht[`s%WVk
+:/1[^$;=2j9M8)S8k_lNr_*Di:/4O_9*%^Zr_3Mk9heAZr_DlYnj31?rBpKNs$crWrC;?.8P)NH
+91qrQ9hnJ\:f1+h;cQk!='8[1>[:ZC?t*SUAS5[jCM[m,E,fr@G'A4XI"$TsK7nu7M2R=QO-5]l
+QC+,1SY)UMUo(&hWi`G.Z*UjH\@K5a^VI_(`Q$!@bKS8XdF$Fmf%8R.gYL]Ci8N\UjQ>Ugl07L"
+m-X6@mfi4No()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq01]oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q'7AlNc^&/P,>Ct]Y+3VrkAEGpqH^A
+rkSQMr4i?L_YqCK_u[iqoYpgLrP\cVqS`WV_ns=0`Tt/8])TD@]`5\C]_oJ?]`#P.^AknD^AktJ
+^A5PD_>M/-R[ftATq\?ZVl6VrXfen5Za@0M\[oDc^;%J#_o0O7aN;TJbg"GZd*^7heC<%"f%8O+
+g"HAYrnIG-p"fW&rnID*s4ID)rn%2$!7h(u!RoKrd<a0ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr
+]Y(kf\[],W[^EKKZa-j?YHG"0XK/A$W2HPjV50o^TqS-OSt;LCS!ob4R$X,(Q'@GpOcYWbNfB!V
+Mi!:HLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<DuOVXD/=!'C2*Z\!G?$DAH?=OraGn:
+@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.B
+6Ld?ms5<n_r;Z3GgXam'e,@Z)cd:"_c-4AUb/q`E`Poa3rk\WM!5JNIs1];]]t:kd\@K/]\[SrQ
+Za@$CZ*h*M[dU]q62X(K6i0:O7K5jU7t4'$8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[
+B4u!pCi402EccGJG^=^bIXm!%KSG;>Mi<[XP*;/tR$sM9T:r!TVPgDoXfen5ZaI6O\\#Pi^r"".
+`lQ9Fbg+P^daQ^sf@em4h;-uHiSrnYk2tmll0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s.01?~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq01]oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q'7AlNaZgEGCbO2N/[^po8`[.s,d/>
+qiLc=rfR8Fo90*:rK7/Eq3(`>s,u]3rfZo;r0@;Hq309lr09..S=Z@HU84W`W2co#Y->1;['mHS
+]">Vh^VI_(`5Td<ai_fNc-FY^dF$CleCE.$f@S[.g&B_)g]$"$h>Z4/g\ok+f`9\(fDjD%ec+&!
+e'e6CHI1!`cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X;Y-"h-X/`1uVl-Dg
+UnjcZTqJ$LSt2C@R[KP1Q^3o%P`h2lOH5H_NJrgSM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4Q
+FEDSEEH,r9rb_mVChmg$C&VcHB4h-S!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&K(ur_rhp
+s&&_ks%iYir([/as%E5]r^m&Zq+(BQr'g6Gpd=^@nNha+ir9S`d(6fmWM,rUS=Q.>S"#h7rKmbT
+R$Er$Pl?gIOckh*O8b.ANJrjUrehAFMMm@NMM[+DLk^_@L5LnFM!p2j62X(K6i0:O7K5jU7t4'$
+8P2TJ92&&S:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EccGJG^=^bIXm!%KSG;>Mi<[X
+P*;/tR$sM9T:r!TVPgDoXfen5ZaI6O\\#Pi^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiSrnYk2tml
+l0@X%mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s.01?~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0(ZoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS!o_1Q'7AlN^H</7ncYR:@(dI;#=&`:Adoe
+;#O/i;#*ob:A.`g<s2Q*=&rE$<rQ,!<q]Vm=PHpW=T;Is=Sc,!<]->9StD^NUnsufWiN8)Yd(OA
+[^WfY]=bkm^r""-`Q-'Ab0/#RcHjkbdF-Ooe^i='f@\d0rn@A+rnR2&rnRM-rS%;)!8.;&s4.2#
+rmUttdf.X?d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q['R*EZ*:F7Xf\\*WiE"q
+Vl$;dUnaWWTV%gISXc1<R@'A.QBd`"P*1rhO,o<\N/W[OM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZ
+GBS+NFE;JBEH#jqD?XlnCMR[!rb)=FB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<W?%t
+;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hNe96%T'rrt3)+C0jtA;c$1`:/FY[9he;U
+rD"_9:/4JX:/+GV:/4JV9hnAT92%uP:/"DY9h\/P9M8)R9heGY9hnOa:@h?];"6jL6N0@L7/o^U
+7f>i,84cBF8kVfN9heAY:f("e;cHat<`iL->?kH??XR>QA7]CeBkqO&DfKf>Fa&(VH[U?nJV/W1
+Ll%%KNf]EfQ'[l,S"?7GU84ZaWN3/(Yd(OB[^`l[]t_A"_o9X:aihoRcdC1ieCN7)g=tH>hr*JQ
+j5f@bkiq?sm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*?s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0:`oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS=5h3Q'7AlNbsB"N1d5d]=bei^&Gb>^&PhE
+^\Y_H_8?/gqSWER`:_+K`r3mV`r*d_`5T[4_Sa=2`k&bU]DoP<]D]>@]Cro:^&GYE]D]D=^&>YF
+^#d!*^]2(L_>_;.R[ftATq\?ZVl6VrXfen5Za@0M\[oGe^;%M$_o9U8aN;WKbg+M[dF$CkeC<%"
+f@S[.g&B_*g]-'sh>Z40g]#q,g&K_(f)aIQrmYi7da?Ihd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]",A]\$i`Q['R*DYct=6Xf\\*Wi;qpVl$;dUS=HUTV%gISXZ+;R@'A.QBd\uP*1rhO,o<\
+N/NRMM26qAL4t;5K7\Z)J:E#rI=(s>(3t.KGBS+NFE;JBEH#i6DJa3+CMR[!rb)[PAn>OaA7K(X
+@:<RC?O'nC?!LW=>?_#/s&f;&r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTr'pTQogJRB
+oKr(6JcFa0+oLopi7HK-eC)dmd*^4eccs\Wbf\&KaMu3;_SF%)^qRV_]beDt]t:ke\$roY\@AuT
+['R-GZ*C^H[^PY6nNm(>r^6QNs$crWrC;?.8P)NH92&#R9hnJ\:f1+h<)lt"=BSg3>[:ZC@:E_W
+AS5[jCM[m,EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQ^F53StD^OUo(&iX0&P/ZEpsI\@T>d^VI_(
+`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N_VjlY^hl07O#m-X6@mfi4No()DErq-?dp\4[^s7u]krVQTl
+rVcBfJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0.\oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS=5h3Q'7AlNaHR<EIEM$N;\b+NW>.=Nr"h6
+OSt=@OoU^<P5^[DP5gaDOogc/P5^UDP3A,.P4k+>Pl?sIPk^I=PQ6p:PQI&5Pl6gAPlHsHPl?q)
+R[ftATq\?ZVl6VrXfen5Za@0M\[oGe^;%M$_o9U8aN;WKbg+M[dF$CkeC<%"f@S[.g&B_*g]-'s
+h>Z40g]#q,g&K_(f)aIQrmYi7da?Ihd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]",A]\$i`Q
+['R*DYct=6Xf\\*Wi;qpVl$;dUS=HUTV%gISXZ+;R@'A.QBd\uP*1rhO,o<\N/NRMM26qAL4t;5
+K7\Z)J:E#rI=(s>(3t.KGBS+NFE;JBEH#i6DJa3+CMR[!rb)[PAn>OaA7K(X@:<RC?O'nC?!LW=
+>?_#/s&f;&r`9&!!*&nqs&/korD<Mis%`Jds%NDbqb$iZr^ciTr'pTQogJRBoKr(6JcFg2#NN\2
+ZE0mqT)>)oR[]_6R@'A.Q^*l$P`q;oOckffNfK2!N<kH$Mi<RQLl%&hM?&M4L^/ZkLPC\ELktMV
+nNm(>r^6QNs$crWrC;?.8P)NH92&#R9hnJ\:f1+h<)lt"=BSg3>[:ZC@:E_WAS5[jCM[m,EH6/D
+GBeF\I=?]tK8#&9M2R=ROHPfmQ^F53StD^OUo(&iX0&P/ZEpsI\@T>d^VI_(`Q$!@bKS8XdF-Oo
+f%8U/gYL]Ci8N_VjlY^hl07O#m-X6@mfi4No()DErq-?dp\4[^s7u]krVQTlrVcBfJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`PTI+^:_(g\$iZLYck10Wi2ejUS4<OS=5h3Q'7AlN^?-'7S6EMr(cTSnkf3Zq+gi`
+r_WPhs%rMeqbHfbqc<i$=',B%rDikup/h5qr`9)#nlGflku[[_q,]DAS=Z@HU84W`W2co#Y->1;
+['mHS]"G_j^VRe)`Pom=aihlOcHab`dF-LneCE.%f@\d0rn@D,s4m%urnRP.rn@D*s4I>&!S5g#
+e8Ea`dF$=fcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6p@Yck43XfSS'WMl_m
+VPU)`U7n9RT:VXFS"#k7R$a5+Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2Jq8H&IsufoHiA=,H$FOW
+G'.nKF)l8?E,TW3D/=$(CMIS_BFAHbAS#C_@q&nU@:9(A#@:\A>[1K;>5h\)=T;J%<rZ/"<;fbq
+;ZBVm;#a>k:Adid9`@]^9)_E]8GPdR7f5^J7/0.A6Ld?ms5s=in"Y2:>#nX#9hnG[;#X8j9a+9d
+9hnDYr_=\69MS8U:/">S9he8S8k_iN9hS5U9h\/N91qrP9heGY9hnOa:@h?];"6jL6N0@L7/o^U
+7f>i,84cBF8kViO9heAY:f("e;cHat<`iL.>?kH??X[DRA7]CeBkqO&DfKf>Fa&(VH[U?nJV/Z2
+Ll%%KO-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:aihoRcdC1jeCN7)g=tH>hr*JR
+j5oFckiq?tm-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqYg<jr;HTdrdk*?s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmNb`ljLRP0PrOha8rkA?G!l2Rc
+rkSQM!5e]Ppr)jEs2OuUs2OoS"iS<q_o9Xp`rN[L](`i:]_K,:])TDA]E#YA]`5\F]`#JA]_oJ@
+^AknH^&Yk1^AP`)^q[_%_OR3iTq\?ZVl6VrXfen5Za@0M\[oGe^;%M$_o9X9aN;WKc-FV]dF$Cl
+eCE.%f@\a/rn7G.gt_h`o\TK$s4mY/rRq>+f\$2T!S5g#e99<hdF$=ecd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Xt]Y(kf\[f5Z[^NTMZa-j?Yck43XfJJ%WMl_mVPL#_U7n9RT:VUDS"#k7R$a5*Q'@Jq
+P*(ieO,]*WMi*@JLkg_>KnP)2JUi9#IXQWlH[:!`G^"@TFoHIhF)l8?E,TW3D/B2e&8GomBP1si
+AS#C_@q&nU@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adid9`@]^9)_E\8GYjS
+7f5^I7/0.B6Ld?ms5j7drVu3Egssp'df%SncnE_jbfn8RaiMQC`59C,_SEn"^V7Co]tM.m]XkYa
+\%9)\\%&iQZa-sEYd(UF[^PY6nNm(>r^6QNs$crWrC;?.8P)NH92&#R9hnJ\:f1+h<)lt#=BSg3
+>[:ZC@:E_XAS5[kCM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPfmQ^F53StD^OUo(&iX0&P/ZEpsI
+\@T>d^VI_(`Q$!@bKS8XdF-Opf%8U/gYL]Ci8N_VjlY^hl07O#m-X6@mfi4No()DErq-<cp\jme
+q>^<iqu6NlrUg)?s.01?~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmNa?:5EI*4prJg0(qiCT8rfQZ4
+s-*ADs-*8ArfI2DrfdAFl')%.pQPT@s-<VKp65B<s-*JI!0d>FpQGTAr0-uArKI8G1R4K%T:r!T
+V5L8lX0&P/Z*UgG\%0)_]tV7t_Sa@4a2lBGbK\>Xd*^7heC<%"f@S[-g&B\,gYCT^h=TS$h>c:1
+g\oh-g"=sVf)aIQrmZ,?da?Ihcd0n^c-4ASb/q`Ga2Z*;`5BI/_8*h#]tD"i]",A]\$i`QZa6sB
+Yct=6Xf\Y(Wi;qpVl$8cUS=HUTV%gHS=?":R@'A.Q'IStP*1rhO,o9ZN/NRMM26qAL4t;5K7SQ'
+IsufoI!^0cH$FOWG'3e+$$1-,EH#i6DJa4hCCk5pBP;$kAn>OaA7K(X@:<RC?NFJ=r`oJ-!*]A)
+s&]8&rDiu"<)ifps&/korD<Mis%`Jds%NDbqb$iZrCHcTr'pTQoL/IAog817JcFp5$Mr,\]W\<.
+St):?rgWnUs-`nSrg*SK%?cp<OcYWbNK0*\NK0%uMu\b7MuSV8MMmAkM>rA:LP^b?MMd4GmtpR#
+r'LBMqaCHQs$lrWIn3.&8kM`M9MJ5V:Jakb;H$Op<``C+>$G6;?=.,M@qB4aBPM=!DJsN8FEMeP
+H@('hJ:W?,L5:\ENK90aPEhK%R[ftATqeE\VlHf"Y->4<[C3TV]Y2(q_Sa@4aN;WLcHjndeCE.%
+g"P3:h;@/Lj5]7`k32'olg4!*mf2_ZnF?)?oCW%T!VZ9dq#C0iqYg<jr;HTdrdk*?s*t~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]O,^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmN^Q9(84H9IrD)]Tnkf6[q+gf_
+s%rVhs%rMeqb@2g:0$perE&u#s&]5$r)Nbtp/h8rs&]/"oN2&nku[X^r)YYDStD^NUnsufWiN8)
+Yd(OA[^WfY]Y2%o_8=+/`lH0BbKJ/UcHstddaZdsf%8O+f\-8X!o)Mcr8%#%qq_;-s4dM+!nl5Y
+rmq2%ec+'Ae'cXkd*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^V.:m]=PP`\@8oT[Bm3FZ*:I9Y-"h,
+WiE%sVl-DfUnaZXTqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H^N/W[PM2@%DL5(D8K7e`*J:E#rI=-Bf
+H?jaZGBS-.F:!#/EH,r9DJj<-rbE'[BkV0mB4b^dA7T1Z@UW\Qra,\4?2e+/>6%k+=oVS(=8c/$
+<E)rr;u]bq;>j>k:]F2f:&dod9D_?\8c;3V8,PjS7J'"C6hNe96%T("s"MEQCgC.B;c$:d:/FY[
+:JOVY9MJ;W:/4S[:/+JW9he;S8ki#R9M/#P92&#O:/"C[9)qZb9a"9e9i"Ub:@h?];"6jL6N0@L
+7/o^U7f>i,84cBF8kViO9heAY:f("e;cHat='/U/>?kH??X[DRAS#LfC27X'DfKf>Fa&(VH[U?n
+JV/Z2Ll%%LO-#NgQ'[l,S=Z@HUSOcbWiN8)Yd1UC[^`o]]t_A"_o9X:aihoRcdC1je^i@*g=tH>
+hr*JRj5oFckiq?tm-O--s6g-\nac8Bo`"Lap@nO\s7u]krVQTlrVcBfJcD;@J,~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hkUS4?PS=>n4Q'7AmNf8(8K9N4:rk%m:rk80BrkJHJ
+!l;ajrknHJp;R'Os2>,Z`Poj:qS`ZW_o'F3`lJ)"qmc^<pq-O<pq-I8s189Drk8'=rO_p=!58?F
+rOq=,rP/BJ/]!sKT:r!TV5L8lXKA\1ZEpsI\%0)_]t_A!_SjF5aN2NIbg"GZd*^:jeC<%Jf*9m\
+g=k<9h#6(.hXfY'hYl:1h#H..g&fs[f`'J'f%'cLJ()indEp4bcHXVXbKJ&MaN2EA`Pod5_SX+'
+^V7Co]Xtbc\[],W[C!9HZE^X<YHG"/X/`2!W2HMhUnjc[TqS-NSt2C@S!ob4Q^3o%P`q8nOcYWa
+NJrgSMM[1GLPCP:K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEcH)<DuX\UD/B2e&8GomBP1phAS#C^
+@q&nU@:9(A!FB(2>lS".>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adid9`@]^9)_E]8GPdR7f5^J
+7/0.A6Ld?ms6'D*r:9(0f$i-sda?FgdEg.ac-4ASb/hTC`Pf[0_83n#]tXHY(r!Yr]=PP^\%&oX
+\@8iQZa-pCYd(UF\$ke8n3R">rBpHMs$crWr^ZuZ!(m/^!D?,c9mBE/:f("f;cHat='/U/>?kH@
+?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJqJc3Ll%(MO-#NhQ'[l-S=Z@HUSOccWiN8*Yd1UC\%0)_
+]t_A"_o9[;b0/#ScdC1je^rF+g=tH?hr*JRj5oFdkiqBum-O--n*olHncn^Xp%A%Pp\jjgq>0sc
+qu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hkUS4?PS=>n4Q'7AmNf7LbDg6njrf-9)!frA%rf?o;
+rfQZ4s-*ADs-*8As,m>Er0.)Bl')"-plkT>rK@5GqigrBjcfS+r0&\%StD^NUnsufWiW>+Yd1UC
+[^WfY]Y2(q_8=.0`lQ6DbKS5Vcd:(fe'umtrmqA,g"P07gYDb`rnd8(rSIM/s4mY/rn7G,f\$2T
+!S5g#e:5rqdF$=ecHa\Zbfe2PaiMQD`l5p8_ns:+^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XK/A$
+WMl_lV50o^U7n9RSt;LCS"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KS+o/JUi9#IXQWlH[:!`
+G^"@TF`__HEcQ/>E,Ybo!GuZPCCk5pBP;$jAn>Oa@q/tW@:<RC?NFJ=r`oJ-!*]A)s&]8&rDiu"
+<)ifps&/korD<Mis%`Jds%NDbqb$iZr^ciTr'pTQogJRBoKr(6JcG!7#3E_3ZE'gorLEkVs-itU%
+@EKKQBd`"PEV/lO-#J&Nr=qGMi<UPMi*@IM2I1KMZ&>:LPUeAL5LhEM"$8j62a.K6i0:O7K5jV8
+,l*[8cD<_92,=ZGYV%2:f1.i<)lt#=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=?]uK8#&9M
+2[FTOHPinQ^F84StD^OUo()jX0&S0ZEpsJ\[oGe^VI_(`Q-'BbKS8XdF-Opf@S^0gYL`Di8N_Vj
+lYail0@U$m-X60nF?MK#4qK[p%J+RrV-HiqYL-erqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nrVQWks7uZhs7ZNerq0+[oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hkUS4?PS=>n4Q'7AmNf6=p8k2QLr_DfU!`2ZgohbQ^
+q+gf_s%rVhs%rMeqbI,drDiGir`B&#r`8qss&S_mrDrSmrDr/apfRPt/=`<(Tq\?ZVl6VsXfnt7
+ZaI6N\[oGe^VI\&`5Ta;aND]Mc-FY^dF-LneCFQM#2%V_g=tB;rS@J0oABN'rS@M/s4dP,!nl5Y
+rmq2%ec+'Je'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SEq$^:h1l]=PP`\@8oS['R*EZ*:I9Y-"e+
+WiE%sVl$;dUnaZXTqJ!KSXc1=R[KP0QBd`"PEM)kOH5E]N/W[PM2@%DL5(A6K7\Z)J:E#rI=-Bf
+H?jaZGBS+NFE;JCEH,r9s)%jSD#S2]C2%?pB4baeARo:\@U`bS@/aL6?=!P8s'#J,r`T8'!*B,"
+!``3!rDW_os&&_ks%iYir([2br_*,\r^m)[q+(?Pr'g9Hpd=[?nNha+li.LgWI/,X<E2mk:/=Y[
+:JO[a9a+3b9h\;Xr_4/%:/+GV9M8)S9MA)O91qrQ92&&S9M5:Ws%NGf#Ye)h9i+V]:/CIYr_W)M
+rBgHMqaCHQs$luXs%!,]r^m2a9`@b2:/=\_;,^Cm<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJ
+G^=^bIXm$&KnbD?N/`m[P*D5uR%'V;T:r$UVPpMqXfnt7ZaI9Q]"G_k^r"".a2lEHbg+P^daZh!
+f@em4h;7&IiT&t[k3(smlKdg'mI'H4nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohtGRo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcY",W2HJeTqJ!IS!fV.P`h,hN,O;uNM<Jg]CW]7^&>\E^])"L
+_8?,fpVcmH"2r0u`r<pX`5V_qrP])_`Pod5_o0O6a8X-\aiOFks1&*>!4r$=rk&9F]_K,<])K>A
+]`,V?]_oD<]`,VE^AGV7^&Yk?^Abl*^mq!gTq\?ZVl?\tXfnt7ZaI6O\[oGe^VI_'`5Ta;ai_fN
+cHab`dF-Ooe^i@(f\,!4gY:N^h>c@2ht,e*hu;L2h#cBdg]#q,f`9\(f72B%eC;srda?Ihcd'h\
+bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A\[^NTNZa6sBYck43XfSS'Wi;noVPU)aUS=HTT:VXF
+S=?"9R$a5+Q'IStP*(ieO,f3YN/NRMM26n@KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)q8"'6%l-
+DJa3*CMITuBP;$jAn>OaA,]pB@:3JM?X@&Er`fM/>$Co.s&]8&r`9&!s&Aqq!`DlmrD<Jhs%`Jd
+s%NDbqb$iZr^ciTrC6]RoL/IAog8.6JcG$8"TJGej5'[_%+*DLd*U+bcHOJTb/jS%"iS9o_8*ha
+^Abe_^:h4m]"5D\\[T,X\@&`OZF$pAYd1[G[dU]p62a.K6i0:O7K5jV8,l*[8cD<_92,=ZGYV%2
+:f:4j<)lt#=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF\I=Hd!K8#&9MN!OUOHPinQ^O>5StMdP
+Uo1/kX0&S0ZEpsJ\[oGe^VI_)`Q-'BbK\>YdF-Opf@S^0gtgiEi8N_VjlYail0@U$m-X91nF?MK
+#4qK[p%J+RrV-HiqYL-erqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohtGRo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcY",W2HJeTqJ!IS!fV.P`h,hN*p@:Edre(NU`&,NW+t;O8=t;
+On+Y;Ockolr0%&Cq3(c?s-!>Erfm;Cl')+0!gAe1plkZ@r0.)D!L&c+PP^UCP;Sl%T:r!TV5L;m
+XKA\1ZEpsI\@K2`]t_A"_SjF5aN;TJbg+M[dF$CleCE.%f@\d1g=tB;rS@M1rnm>*rnm_3rS7P1
+gY;_]s4ID)rmuYNe^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\$i`Q['R*E
+Z*:F7Xf\\*WiE%rVl$;dUnaZXTV%gISXc1=R@'A.QBd`"PEM&iO,o<\N/W[PM2@%CL4t;5K7\Z)
+J:E#rI=-BfH?jaZGBS+NFE;L%E>*;0DJj<-CMR["BkV0mAnGUcA7PUJ#@V"J?XI,G?2e(1>?Y50
+=oVS(=8l8#<W?%s;Z]io;>j>j:]F2f:&dod9D_?\8cD9V8,YpT7J'"C6hNe86%T(&rs8SO]=Y8G
+U7@bORgGOOR[KS2Q^*l$rfdAEs,[>DNfT5!N<Y<"Mi*CMMZ/J4MYr;:LPCV@L51YBM!p2i62a.K
+6i0:O7K5jV8,l*[8cD<_92,=ZGYV%2:f:4j<)lt#=BSg3>[:]D@:E_XAnPdlCMds-EH6/DGBeF\
+I=Hd!K8#&9MN!OUOHPinQ^O>5StMdPUo1/kX0&S0ZEpsJ\[oGe^VI_)`Q-'BbK\>YdF-Opf@S^0
+gtgiEi8N_VjlYail0@U$m-X91nF?MK#4qK[p%J+RrV-HiqYL-erqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohtGRo()>?n*f]3m-Es$l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'bXaiMK@_ns4(]Xt_a[^<BGYcY",W2HJeTqJ!IS!fV.P`h,hN'g!&84uZO:@V-X:B"&`;#3ua
+:Amrj:/=\_r(m;grD*Dir_NGeqbR)hoN(ols&f;&r`9"ur`8bp!a&N*r)WJlr)W&`rE'&$r`D%J
+StD^NUnsugWiW>+Yd1UC[^`lZ]Y2(q_SX71`lQ9EbKS8WcdC.geC<%"f@S[.g=k<9h#6(/hYuF(
+i;VX5hYl73gtUT_gAfh+f`'KPf%&:"e'lamdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc
+\[T#U[C!9HZE^X;Y-"h-X/`2!Vl-DgUnjc[TqJ$LSt2C@S!fY2Q^3o%P`q8mOH5H_NJrgSMM[1G
+L5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSErc&TjDf0H0Chmg$C2%?pB4baeARo<M@L$=L?sd8I
+?=!P8!aAi3r`T8'!*B/#s&K(urDNbq;,R9gr_NPhr([2br_*,\r^m)[q+(BQr'g6Gpd=^@n3MX*
+mJe-LP&+E)<)ZUh:JO\X:/=PY9h\;W9MJ8V9MJ1Y9`n'^9hkU\$qa2d92%uN:/4JT91o1W$;F8i
+:JOVY:esk]nkoB_n3R">rBpHMs$crWr^ZuZ!(m/^!D?,c9mBE/:f(%g;cHat='/U/>?kH@?X[DR
+AS,RgC27[(DfKf>Fa&(VH[UBoJqJc3Ll..NO-#NhQ'[o.S=ZCIUSOfdWiN8*Yd1UC\%0)_]t_A"
+`5Td<b0/&TcdC1je^rF+g>(N@hr*JRj5oFdkiqBum-O-.n*olHncn^Xp%A%Pp\jjgq>0scqu6Nl
+rUp/@s.'+>~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohkAQo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'eYaiMK@_ns4(]t:hb[^<BGYcY",W2HJfTqJ!IS!fV.P`h,hNGNrjKUJgMqRcU:qRlsE^VBc`
+s2"`PrknKKqS`QT`Pojr`<=,u`Q#pq`<jQ'`Pf[4`Q#s=rlG,]"Nn<e\[hXJs1/0@qmuj@rk8?E
+q7H[<s1@p9r4E!A!5&0AotBP&s1^5&StD^NUnsugWiW>+Yd1UC[^`l[]Y2(q_Sa=2a2lBGbK\>X
+d*^:jeC<%#f@\dUg&]s`rn[V2s53Y1rSdP0s53h4rn[V0!8IM,s4ID)rmuYNe^W*tdaHOjd*L"_
+c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=GJ^\$i`Q['R*EYct=6Xf\\*Wi;qpVl$;dUnaWWTV%gI
+SXc1<R@'A.QBd`"P*1rhO,o<\N/W[PM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;L&E=[#,
+Df0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra5\3!+#S/!aAi3r`K;)=',B%s&K(ur_rhps&&_kr_NPh
+r([2br_*,\r^m)[q+(?Pr'g9Hpd=[?nNha+m/I=go&el]e'lbEd/hS@rlteobfe/MaN)<=rk\WM
+!5JNI'>2#k^:h4m]=GD[\[],X\@/cNZi766Yd(UF[^P\7n3Qt=rBpKNr^HiVr^ZuZ!(m/^InNI0
+9hnJ\:f1+h;cHat='/U/>[1QA?t!MSAS,UhC27[(E,fo?Fa&(VI!pKpJqJc3M2I7OO-,TiQ'du/
+S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O-.
+n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohkAQo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'eYaiMK@_ns4(]t:hb[^<BGYcY",W2HJfTqJ!IS!fV.P`h,hNF$45E-[%mqMk<2qi1T8rf?o;
+rfR)@!0R,@"-Jb0PP^OCPPC:BOckn*PQ-jJQ'D*-k`c%0oTT<>q3(fCh37`#rf\t+T:r!TV5L;m
+XKA\1ZEpsI\@K5a]t_A"_o0O7aN;WKc-FV]dF-LneCE1&f\-8X!ScE/h>c@3htc4/iV;@2hu;L3
+h>c71g]#q,f`9\(f72B%eC;sqda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i\[f5Z[^NTN
+Za6sAYck43XfSS'WMl_mVPU)aUS4BST:VXFS=>t8R$a5+Q'ISsP*(ieO,f3YN/NRMLkg_>KnP)2
+Jq8H&IsufoI!^0cH$FOWG'.nKF)q;#%rcH*DJj<-CMR[!BkV0mB)Z?BA7PUJ!F]C8?iOF4?2e(1
+>?Y50=TV],=8l8#<W?%t;u]bq;>j>j:]F2f:&dod9D_?\8cD9V8,PjS7J0(D6hE_86%T((rs%]*
+\$E'2T)P8[S,SlVQi`\BQN!0LPQ?u1rK.#=&r_g0Mi<UQMi*IMLl$tGLl.(Hr.bK5L5(SBLktPW
+n3Qt=rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHat='/U/>[1QA?t!MSAS,UhC27[(E,fo?
+Fa&(VI!pKpJqJc3M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_D#`5Td<b0/&Td*^:k
+e^rI,g>(N@i8EVTjQ5OekiqBum-O-.n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eoh>#Lo()>?n*f]3m-O$%l0%3jjQ#7Xi83;Fg=b-1e^W$p
+cd'eYaiMK@_ns4(]t:hb[^<BGYcY",W2HJfTqJ!IS!fV.P`h,hNC$,68,l<[:AI]_:B"&`;#=&b
+:Amrj:/=Y^qbR5gr(d;hr_NGer(m>hpf7#gpfIDps&K)"oN1rkr`9)%q,dAmlW=$es&UjUStD^N
+UnsugWiW>+Yd1UC[^`l[]Y2(q_Sa=2a2lBGbK\>Xd*^:jeC<%#f@\dUg&]s`rn[V2s53Y1rSdP0
+s53h4rn[V0!8IM,s4ID)rmuYNe^W*tdaHOjd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=GJ^
+\$i`Q['R*EYct=6Xf\\*Wi;qpVl$;dUnaWWTV%gISXc1<R@'A.QBd`"P*1rhO,o<\N/W[PM26qA
+L4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;L&E=[#,Df0H0Chmg$Bk_6oB4h-S!G#^>@KBnFra5\3
+!+#S/!aAi3r`K;)=',B%s&K(ur_rhps&&_kr_NPhr([2br_*,\r^m)[q+(?Pr'g9Hpd=[?nNha+
+nGa1!Xajkb<)lgm:JO\]:/4JW9MA+W9bpAr9M8&P9h\5Q:/+DU92/)Q9MA&Q9`@Zd84uVT9Ee0e
+:/+GZr_EMhnkoE`n3Qt=rBpKNr^HiVr^ZuZ!(m/^InNI09hnJ\:f1+h;cHat='/U/>[1QA?t!MS
+AS,UhC27[(E,fo?Fa&(VI!pKpJqJc3M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UD\%0)_]t_D#
+`5Td<b0/&Td*^:ke^rI,g>(N@i8EVTjQ5OekiqBum-O-.n*ol<o)J:bo_%nNp@nR]s7u]kr;6Kk
+rVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohkAQo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`h,hNJhn4K9`@?oXjt4$,+'e^V@S#
+_8=(f_tV+H`='W'`Q#m9`5KX6`l@qq$c^0)`5BO4`lH0BaSs<]aoT\rrjr-?r4)d;s18-?s1J?E
+!5/!:ot:+4qRlL7q7cmB!kuFaotE5sStD^NUnsugWiW>+Yd1UC[^`l[]Y;.r_Sa@3a2lBGbK\>Y
+d*^:jeCE.%f@\d1g=tE^h#cHjhu)F1iV_^4iV_X6huDR4h>c:1g]-"-fa6<_f@JO'eC;sqrm?&=
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tCtg\[f5Z[^NTNZa-j?Yck43XfSP&WMl_mVPU)`U7n9R
+T:VXFS"#k7R$a5+Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?
+E,Y_n"`8'kCMIS_BE;aXrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Jh
+s%`Jds%NDbqb$iZr^ciTr'pTQogJRBoKr(6JcG-;!pnt&rR1_ns3M2#cHa\Xbf\)La2Q$7rkT&Z
+^V7Cq]Y1ti]tM%h\Giu;\GirF['m<GZEg^=Z*_$Ln$hdPr'L?Lr'^QRs$lrWs%!,]r^qZ59MJ5V
+:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BPD3sD/O<4F*)SLH$XjdIt3-'KnkMBN/`m\P*D6!R@B_<
+TV8-WVl6VsXfnt7['mHS]"Gbl_8=.0a2lEHc-F\`daZh!f\,!6h;7)JioB+]k3(smlKdg'mdKW6
+nac8No*+dZp%J+RrqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohkAQo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`h,hNJh7]Dg6kjlAbh(!0?u<rfI2D
+qiU`<"-Jb0PP^OCPPC:BOckn,P6dD:Pa%GtPa.C-P2h`+PjXb7PkgO=P4k+>Pl$[APV\MpT:r!T
+V5L;mXKA\1ZEpsI\@K5a^;%J#_o9U8aN;WKc-FY^dF-Lne^i@(f\,!4gYDea!oDhlr8@M3r8RV4
+r8@V4s5*b2s4mY/s4[M+$/!k]f%/C$eC2kFd<a0ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc
+\[],W[^EKKZE^X<YHG"0XK&;"W2HPjV50l\TqS-OSt;LBS!ob4R$X,(P`q8nOcYWbNfB!UMM[1G
+LPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<DuOVXD/=!'C2*Z\!G?$DAH?=OraGn:@/aL7
+?<pk9>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#X8j:Adid9`@]^9)_E]8GPdR7f5^J7/0.A6Ld?m
+s7$$nf"J_uWM5oOrL3hVS,ScWR?s5)rfmGH&s8?=O,o<]NK&mTN/NUOMMm=IreU]4MM_7e#DS(k
+L51YBM!p2i62X(J6i9@P7K5jU8,l*[8cD>392&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:EbYAnYmn
+CMds.EH?5FGBnL^I=Hd!K8#);MN!OUOckroR$jG6StMdPV5L8lXKA\1ZF%'L\[oGf^VRe*`Q-'B
+bK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?s76Edp%A%Pp\ssfq>^<hqu6NlrUp/@
+s.'+>~>
+JcC<$SH&9]rVc`nr;6Nj!;ZTg!Vc<eohkAQo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]t:hb[^EHHYcY",WMcSgTqJ!IS!fV.P`h,hNJg+l8Ol?Gl;%@Tqb[/cpeLc`
+"&;Wf;#=&g;#F)h;#X8g:'"-er_NPjs%`VopJpofrDs&$=',/to2klks&]2%q,dAmp/h8rq,dMs
+1KU0?Tq\?ZVl?\tXfnt7ZaI6O\\#Mg^VI_(`Pom=aihlPcHjkbdaQ^rf%8O+g"P07h#?+2hV[5g
+i;DR3iqq^4i;_^7hYu@2h#H./gAfh4f[na+f%&:"e'e6CHI1!`cHXSVbK@rJaN)<>`Pf[2_SO%&
+^V7Co]=PP`\@8oT[C!9GZ*:I9Y-"h-WiE%sVl-DgUnaZXTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H_
+NJrdQM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r9rb_mVChmg$C&VcHB4h-S!G#^>
+@KBnFra,_5?![G7!aAi3r`K;)=',B%s&K(ur_rhps&&_kr_NPhr([2br_*,\r^m)[q+(?Pr'g9H
+pd=[?nNha+o)B*GQuHD8<E)di9hnO`9`n-a925C\r_<Dd&5#Si92%uR9h\2Q9MA)Q9hG=X$;3u_
+8kMcN9hnDZr_<Af!DQD];?'J^62X(J6i9@P7K5jU8,l*[8cD>392&&S:/=\_;,U=k<*!%$=BSg4
+>[CcF@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!K8#);MN!OUOckroR$jG6StMdPV5L8lXKA\1ZF%'L
+\[oGf^VRe*`Q-'BbK\>ZdF-Opf@\d1gtgiFi8WeXjlYail0@U$m-a?2nF?)?s76Edp%A%Pp\ssf
+q>^<hqu6NlrUp/@s.'+>~>
+JcC<$SH&9]rVc`nr;6Njs7uZh=82F^p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJqh/J;g;'_>:b@]DT>A^&PhH
+^BhWk_8=+-_SX4c`;@OR`;IUR_u[isqo/TT!6+rU"i\L%aN;O&aoBKabKBdorON!>r4)d;s18-?
+r4MR3pq6L9q7H^>otC@=!5/<Frk/?H^&G_G^&G_G]`,W"StD^NUnsugWiW>+Yd1UC[^`l[]Y;.r
+_Sa@4a2lEHbg"GZdF$CleCE.%f\,!4gYDea!oDhlrS[\6r8R\8qr7V6r8@V4!8d\1Ib`]4g=k65
+f[na+f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l]=PP`\@8oT['R*EZ*:I9Y-"e+
+WiE%sVl-DfUnaZXTqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H_N/W[PM2@%DL5(D8K7ec,J:N,uI=6Ki
+s*>H+G^"@TF`__HEcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGn:@/aL7?<pk9>QS,5>5hY+=BAT'
+<rZ2"<;ohr;ZBVm;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.B6LR3ks761-rq,C5f$i$oda?Ff
+d*Bn]bfe2PaN)<=_8#ubs1\NHrk&BG^:h.hrjWTM\@8uW\$`TLZEggAYd(UF\$kb7n3Qt=rBpKN
+s$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCMRd)E,fr@G'A4XI!pKp
+JqSl6M2I7PO-,TjQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@
+i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Njs7uZh=82F^p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJq7[D/t)YOR.u,NW>.:OS=n7
+P5g[>OoU^?Oogc/P5^[FPQmD;Q'@MuQ2QjAP0]?kPl-a?P3\>2PVJc%Tq\?ZVl?\tXfnt7ZaI6O
+\\#Mg^VI_(`Q#s>b0/#RcHjncdaZdsf%8R-g=k<:rnRY4hr"Cjro*e7rT!e7ro*e5s5*h5rS;qX
+gY:H9g"G$0f@JO'eC;sqdF$=fcd'h\bfe2PaiMQD`l5p8_ns:,^q[Us]Y(kf\[f5Z[^NQLZa-j?
+Yck43XK/A$WMl_mVPL#_U7n9RT:VUDS"#k7R$a5*Q'@JqP*(ieO,f0XMi*@JLkg_>KnP)2Jq8H&
+IsufoI!bm>(3t.KGBS+NFE;JBEH#i6DJa6,CMR[!rb)=FB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50
+=TV],=8l8#<W?%t;u]bq;>j>k:]=,f:&[ic9DhE\8cD9V8,YpT7J'"C6hNe76%T(.rs%`-\[/B7
+T)G,dR[]_6Q^F2,Q^*i#rf\OfOcYWaNK0$YN/W[RMi*FNM27"FLkpnELl$nCLPCVAL55bb!/U*#
+n3Qt=rBpKNs$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHdu='8[0>[1TB?t*SUAS,UiCMRd)E,fr@
+G'A4XI!pKpJqSl6M2I7PO-,TjQC+)0SXuLJUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=l
+e^rI-g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nR]s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Njs7uZh=82F^p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJp1m7S$-H:[CjV:]+&d:\[]`
+:]F2b:B45g:]F8k:]4&g:B45j:]F8j:]48e<VBJm=8#\p=8l=q=8u>$=8Z1r=8Q%b=8c5UStD^N
+UnsugWiW>+Yd1UC[^`l[]Y;.r_Sa@4a2lEHbg"GZdF$CleCE.%f\,!4gYDea!oDhlrS[\6r8R\8
+qr7V6r8@V4!8d\1Ib`]4g=k65f[na+f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l
+]=PP`\@8oT['R*EZ*:I9Y-"e+WiE%sVl-DfUnaZXTqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H_N/W[P
+M2@%DL5(D8K7ec,J:N,uI=6Kis*>H+G^"@TF`__HEcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGn:
+@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;ohr;ZBVm;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.B
+6LR3ks7ZI-os0*Y>#n[%:/FY\:esh\9hS/S:/:d_s%EDcrCR/`92/.Z9*e6c9hS&M9he:Z8e+Nh
+9MJ8X:JFP[:JOY\;"@K`;"-dK6N':L7/o^U7f>gY84cDP8q0K-9heAY:f("e;c?Xr<``F,>$P<=
+?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`H/LP^nINfT<cQ'Rf*S"6.DTqnN_W2cr$YHbF@[^WfZ
+]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9o()hP"n_K\p@e7[q#C0i
+qY^6ir;HTerdk*>s*t~>
+JcC<$SH&9]rVc`nr;6Njs7uZh#5@ibp%@tKrpieRnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7n0LS!fY0P`h/iNJq\$Itj;h]D/u9]DT>A]`Pp_
+_#D1J_>qLL`;@OR`;R[S`;ddV`r*gU`rF$X`"0i,`lH0BaN;THb0%oMbKTjorON!>r4)d;s18-?
+!5.d4p:U@8!5&!<ot:LB]tM(mqRupCs1SHH35)u=T:r!TV5L;mXKA\1ZEpsI\@K5a^;%M$_o9X9
+aND]McHaeadF6Upf%8O+g"P07gtgfChV\=jro*n:o&K].s5Eq7s53k5rnW(ZgY:H9g"G$0f@JL&
+eC;sqdF$=ecHa\Zbfe2PaiMQD`l5p7_SX.)^V@Lr]Y(kf\[f5Y[^EKKZa-j?Yck12XK/A$WMl_l
+V50o^U7n9RSt;LCS"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2JUi9#IXQWlH[9uSH$FOW
+G'8"MFE;JBEH#i6DJa3+CMR[!rb)[PAn>OaA7K(X@:<RC?O'nC?!LW=>?_#/s&f;&r`9&!!*&nq
+s&/korD<Mis%`Jdr_3>bqb$iZrCH`SrC6]RoL/IAog8+5JcG?A$L6[*e'cXldF$=erlu)"b0.uM
+aMu3:_8*k&^V7Cqrk'/]]">Vd\%&rW\[T)X\$`QLZa$gAYd(LA[^PY6mm6k<rBpKNs$crWrC;?.
+8P)NH91qrQ9hnJ\:f1+h;cQk!='8[1>[1TB?t*SUAS,UiCM[j*E,fr@G'A4XI!pKpK7nu7M2I7P
+O-,TjQC+)0SXuLKUnsugWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5Oe
+kiqBum-X6@mgJXTo()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&9]rVc`nr;6Njs7uZh#5@ibp%@tKrpibQnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7n0LS!fY0P`h/iNJq1VCiOcRm#D%*!0?u<pQ>?9
+s,m)>!0d/?!KiQDPQ-mHQ2d*JPlR'GOnt6mPPp[CPQ-mFPPC=<P5pd;P;nejPb4YDUnsugWiW>+
+Yd1UC[^`l[]Y;.s_Sa@4a2lEHbg+M\dF$FmeCN7'f\,!4gYCW@hVR/hi;V^8ipu..irA!9i;_^7
+hYu>\gtUT;g=b03f@SU(e^W*tda?Ihcd'h\c-4ASb/q`Ga2Z*;_ns:,^q[Xu]tD"i]",A][^NTN
+Za6sBYct=5XfSS'Wi;qpVPU)aUS=HUTUqaGS=?":R@'>,Q'IStP*1rhO,f3YN/NRMM26qAL4t;5
+K7SQ'IsufoI!^0c(O:7LGBS.PFEDSEEH,r9DJj<-Chmg$C&VcRB4b^dA7T1Z@UW\Qra,n:?!U]?
+>?b;1=oVV(=8l8#<<-"s;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hNe76%T(1rs8GJ
+]t(5AU7IhQRLtsTR$X2-Q^3o$Q'.;mOH>Narf.8DN/`aSMi*FNre^T0"H&"lLPYqb#)J"gLl."E
+mtpL!r'L?Lr'^QRs$lrWIn3.&8kM`L9MJ5V:Jakb;H$Lo<`W:)=^,-9?=.)L@Us%^BPD6uD/O<4
+F*)SLH$XjdIt30)L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXfo"9['mHS]=bkm_8=.0a2lEHc-F\`
+e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_`nF?)?oCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&9]rVc`nr;6Njs7uZh#5@ibp%@tKrpiVMnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7n0LS!fY0P`h/iNJp7pr^Z9Ls%iSis%i;_qbR5e
+peLldr(m>hr_NJfs%`\m:J^sdrD*Diqc*;ip/_/opf@AqrE/hrrDio"qcNYqs&T/$!*8Gfr`D%M
+Tq\?ZVl?\tXfnt7ZaI6O\\#Mg^VRe)`Q#s>b0/#ScHstde'umuf@S[.g=k<:h;-rEhu;R5iW%p.
+j8J!;iVh^7huDR4h1+57gY1B7g"=p.f%&=#eC2jndEp4bcHXVXbKJ&MaN2EA`Poa3_SO%&^V7Co
+]Xtbc\[])V[C!9HZE^X<YH=q.X/`2!W2HMhUnjc[TqS-NSt2C@S!ob4Q^3o%P`q8nOcYWaNJrgS
+MM[1GLPCP;KS+o.J:N,uI=6KiH?pBQG^"@TG'.nKF)l8?E,TW3D/=$(CMIS_BFAHbAS#C_@q&nU
+@:9(A#@:\A>[1K;>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.B
+6LR3ks7lTuaH(.C=B/?":^Tup:/"AW92/)S:Amm&9MJ2Q8PDcL92/)P9M8)P9h\2O9he=\8cVN`
+9`Ifj:JOVY:J^sbs%r8`!)W,Mr'L?Lr'^QRs$lrWIn3.&8kM`L9MJ5V:Jakb;H$Lo<`W:)=^,-9
+?=.)L@Us%^BPD6uD/O<4F*)SLH$XjdIt30)L51VCN/is]P*M?#R@Bb=TVA6YVl?\tXfo"9['mHS
+]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg(mf2_`nF?)?oCV\Jp%J+RrqQNh
+s8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJqUrItX)a[CQ"Br4E!A!kl@a
+rk\NL!5nWNr5JZR"3&3t`W!dY`Q#m9`;[aU`W4!W`!"'!a2l@$aoBN]bPo`^\bs#=\c'&<\c98(
+]D9,=]DoGB]D0&%]`>eG]eR77T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$_o9X:aND]McHaeadaQ^r
+f%8O,g=k<:rnRV3hu;R6iW%p3irJ07j8S'<iVqd8huDR4h#Z<crn7S0f\"g-f%'cLJ()indEp4b
+cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X;Y-"h-X/`2!Vl-DgUnjc[TqJ$L
+St2C@S!o_3Q^3o%P`q8nOH5H_NJrgSMM[1GLPCP:K7ec,J:N,uI=6KiH?sj]GB\4QFEDSFEcH)<
+DuX\UD/B2e&8GomBP1siAS#C^@q&nU@:9(A!FB(2>lS".>5h\)=T;J%<rZ/"<;fbq;ZBVm;#a>k
+:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6L[9ls7cO!rUAq-f?r!mdJ_B"cHOSWaNDZGa2Gm3_#D(Z
+^:M"i\\>Ye]">M^\%/uXrO30B['[0EZa-g?Z*Uq,[dQN[6N0@L7/o^U7f>i,84cBF8kVfN9heAY
+:f("e;c?[s<`iL->?kH??XR>PA7]CeBkqO&DK'T:FEVkRH@1-kJV/W1LP^qJNfT<dQ'Rf+S"6.E
+U84W`WN*&%Yd(OA[^`l[]Y;.s_SjI8aihlPcHstfeCN7(g=tE=hVdAPj5f=akNV6rlg4$,s6g?b
+nac8Bo^qhLp@n=\q#C0iqY^6ir;HTerdk*>s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZh=82F^p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJq+QC2\BKMX?B(NfX$upQ>B:
+rfI5EOo(:APOt%:P5pjGQ2d*JQ2[$EOnk0uPPgUAPQ$a=PPUI-P:rQ%U84W`W2cr$YHY==[C3TU
+]=bkm_8=+/`lQ6DbKS8Wd*^:jeCE.%f@em3gYDea!T)`5i;_d9iqMI5jS.^6irA!:i;_^7hYu=3
+gtVh^#2.Y]f@SU(rmZGHda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",>[[^NTNZa6sB
+Yck43XfSS'Wi;noVPU)aUS=HTT:VXFS=?":R$a5+Q'IStP*1ofO,f3YN/NRMM26qAL4k23Jq8H&
+IsufoI!^0cH$FOWG'.nKF)uAAEH#jrD?4TjrbE'[BkV0mB4b^dA7K+Y@UW\Qra,\4?2e+/>6%k+
+=oVV(=8l8#<<-"s;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_76%T(3rse&/\Zr-1
+T:;==R@'D1rKmSNrfmVNPEM&irf@)>rJgi8(lXB0MMm=HLkpqDMMR+FLkgb?LPU_@M2CVUmm6k<
+r^6QNs$crWrC;?.8P)NH91qrQ9hnJ\:f1+h;cQk!=BSd2>[:ZC?t*SUAS5[jCM[m+E,fr@G'A4X
+I!pNrK7nu7M2R=QO-,WkQC+,1SXuOLUnsugWiW>,Z*UgG\@K5a^;%M$`5]m?bKJ/Ud*^=lf%8R.
+gYCWAi8N\UjQ5Oel07L!m-X6@mgJXTo()DEo_%nNp\4[^s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh=82F^p%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJp7m77Ka;9^PRT:]4,i:\@K\
+:]=)i:JUd_!)WPgs%r\jrD*Ags%i\krD<Jhr_WDip/Uohr)`_qrE&r"p/h8p!*AtuqH!c"='&Mj
+="maKTq\?ZVl6VsXfnt7ZaI6O\\#Mg^VRe)`Q$!?b0/#ScHstee'uq!f@S^0g=tE^h#ZBiro!h8
+s5Ne5!9En7ro3t:ro!h6s5*b2!SlH/g'66_f[na+ec+'Je'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP_\$i`Q['R*EZ*:F7Xf\\*WiE%rVl$;dUnaZXTV%gISXc1=R[BJ/QBd`"PEM)j
+O,o<\N/W[PM2@%DL5(A6K7\Z)J:E#rI=-BfH?jaZGBS+NFE;MDEH,r9s)%jSD#S2]C2%?pB4kgf
+ARo:\@U`bS@/aL6?=!P8s'#J,r`T8's&]2#s&B%urDW_os&&_ks%iYir([/as%E5]r^m&Zq+(BQ
+r'g6Gpd=[?n3MX*qu6onY'XV\<)lor:B=3br_EJd!DQ>g:&dm+9h\/P8PD`L9MJ,P9MJ8T91h`J
+9he8R8P;`Nr_<Df##.if:JX_\mna![mm6k<r^6QNs$crWrC;?.8P)NH91qrQ9hnJ\:f1+h;cQk!
+=BSd2>[:ZC?t*SUAS5[jCM[m+E,fr@G'A4XI!pNrK7nu7M2R=QO-,WkQC+,1SXuOLUnsugWiW>,
+Z*UgG\@K5a^;%M$`5]m?bKJ/Ud*^=lf%8R.gYCWAi8N\UjQ5Oel07L!m-X6@mgJXTo()DEo_%nN
+p\4[^s7u]kr;6KkrVcEgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8jNf8j8Jq&`UW585>r4E!A!kl@a
+rk\WOs1ncR_o)>hrl+fRrl+iS"NAC"`Phbp!li3urknoX`lH1!aoBKabKTt/rQP)JqRZ^;"Lu"Q
+]"7gOs18-?q7?C6qRlj?rjr-ArO`-Br4E0G^:h4mr4N*Crk/BG]tF-R28$VoTq\?ZVl6VsXfnt7
+ZaI6O\\#Mg^VRe)`Q$!?b0/#Scd:(fe'uq!f@\d1g=tE=h;7&gi;_d9ir%j6jT"?=jSS!;irA!9
+hu_fmhYu=3gtVh^IbEB+f@SU(eC;srda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tCtg\[f5Z
+[^NTNZa6p@Yck43XfSS'WMl_mVPU)aUS4BST:VXFS=>t8R$a5+Q'IStP*(ieO,f3YN/NRMM2-h?
+KnP)2Jq8H&IsufoI!^0cH$FOW"a5$1FE;L%E<U<"DJj<-rbE'[BkV0mAnGUcA7K+Y@UW\Qra,\4
+?2e+/>6%k+=oVS(=8c2"<<-"s;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_76%T(2
+rrhQEgX+=Hd/_PlcMu)gb5TL,`lGs6_8*k$^:h+k\\#Md]"P_b\@B#W\@8rW[C!?JYd1S6YQ2'0
+\*pcn62X(K6i0:O7K5jU7t4'$8P2TJ9MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi402
+EH?5FGBnL_IXm!%KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDnXKJe4Za@0N\\#Mg^V[n-`lQ9Fbg+M\
+dF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI(#C"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NlrUp/@s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8jNf8j(C2@s@KTPY^!KN6=OS+b8
+P5LI<OoU^<P5^[FPl6jIPl6mGPkgI9P4On3P4t1?P5LOAP5UREP5^[FP5gaDP5^XFP5^XFP5LLD
+Pl-_&P*;K2U84W`W2cr$YHY==[C3TU]=bkm_8=+/`lQ6DbKS8Xd*^:jeCE.%f\,!4gYCW@hV\=j
+s5F";r8[\8s5j.=qr@_9s5Eq7!oMkkrnRV1g]#oUg"=s/f@JL%eC2mpdF$=ecHa\YbKJ&MaN2EA
+`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZa$a=YHG"0XK/A#W2HPjV50o^TqS-OSt;LCS!ob4R$X,(
+Q'@JqOcYWbNfB!VMi*@JLPCP;KS+o/JUi9#IXQWlH[:!`G^"?8G'.nKF)q8""`SBtDJa4hCCk5p
+BP;$jAn>Oa@q/tW@:<RC?NFJ=r`oJ-!*]A)s&]8&rDrqu!*&nqs&/korD<Mis%`Jdr_3>bqb$iZ
+rCH`SrC6]RoL/IAoKr%5JcGZJ&c:(k\?)U$S=5q9R[BM1R$X0=Q3EP<PEV,krf@)>s,A%XMi<RQ
+M2I4KM27"EM2-tFM26tCL5(M>L5(SBM=-2f62X(K6i0:O7K5jU7t4'$8P2TJ9MA/T:/=\_;,U=l
+<E<.&=]ns6?!^lG@Uiq[B4u!pCi402EH?5FGBnL_IXm!%KSG8=Mi<[WP*;/sR$sM8T:r!TVPgDn
+XKJe4Za@0N\\#Mg^V[n-`lQ9Fbg+M\dF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI(#C"n;'Qo(2MQ
+o`Fj]p\ssfq>^<hqu6NlrUp/@s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tKoCDJBnF,i5m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'.8jNf8i_7n,s@9i1:R!)NPis%i;_
+r_NGeq+gueqbI2grD3Ae!)NSj!)NSjrD3Ags&Jhnp/Urir)`\prE&r"pfIGqs&]"upfIJts&]5&
+r`9)#p/a&ATq\?ZVl6VsXfnt7ZaI6O\\#Mg^VRe)`Q$!?b0/#Scd:(fe'uq!f@\d1g=tE=h;7&g
+i;_d9ir%j6jT"?=jSS!;irA!9hu_fmhYu=3gtVh^IbEB+f@SU(eC;srda?Ihcd'h\bfe2PaiMQD
+`l5p8_ns:,^q[Xu]tCtg\[f5Z[^NTNZa6p@Yck43XfSS'WMl_mVPU)aUS4BST:VXFS=>t8R$a5+
+Q'IStP*(ieO,f3YN/NRMM2-h?KnP)2Jq8H&IsufoI!^0cH$FOW"a5$1FE;L%E<U<"DJj<-rbE'[
+BkV0mAnGUcA7K+Y@UW\Qra,\4?2e+/>6%k+=oVS(=8c2"<<-"s;u]bq;>j>k:]F2f:&[id9D_?\
+8c;3U8,YpT7J'"C6hE_76%T(7s#%o[DI$@F<)?@c:JO_\:/+DU9i"M[9MA)R9M7uL9MA&O9MA&O
+9MA)R91VZL9M8&N91qrPr_3Afr_<Dgs%NJgmniF<r'LBMqaCHQs$lrWIn3.&8kM`M9MJ5V:Jakb
+;H$Op<`W=*=^,-:?=.)L@q9.`BPD6uDJsN7F*)SLH$XmfJ:W?+L51VDN/is^PEhH$R[]k?Tq\?[
+Vl?\tY->1;['mKT]=bkm_Sa@4aN;WLcHaeae'ut#f\5*8h;@/LioB+^k3)!nlKdg(mf2_ZnF?)?
+oCW%T!quB_rqQNhs8)Zjrqu`np&9OBSH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>kNf8j4IX[*@VS)N3s18?G^;'Z_
+rP8ZS_o'F1_u7OQ`V[UR`W*jW_o2Pns2=oU!QN+W_umuua2n5$s2kAcbl5f_bkJ[E\cTFR\b<W6
+]D&o5]DK8@]DT8?]D9)?]tEsM!kc.Xpq8V[U84W`W2cr$YHY==[C3TU]=bkm_8=.0`lQ9EbK\>Y
+d*^:keCE1&f\,!5gtgfChr!AMiSiepj8S-1jo4?=j8\-=iVqa:hqm5hh#Z<crn7D+f`'J+f%&:"
+e'e6CJ'cNecHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h,WiE%sVl-Dg
+UnaZXTqJ$LSt2@?R[KP1Q^3o%PEM)kOH5H_NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]GB\4Q
+FEDSEEH,r:Df0H0D#\8TC2%BqBP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5h\)=9)G$<WZ9#<;fbq
+;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.B6LR3ks8;mRrU8h*e^2[jdEp1`bfn>UbK@rL
+a2Z*9_SX+'^:q7k]stYc]=GM`\@/oW\$rfS\$WKJYl:s.YQM2?[^Y\5mm6k<rBpHMs$crWr^ZuZ
+!(m/^!D?,c9moc4:f("f;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/W1Ll%%K
+O-#NgQ'[l,S"?7GU84ZaWN3/(Yd(OB[^`l[]YD8!_o9X:aihoRcdC.heCN7(g=tE=hr*JQj5f@b
+kNV6rm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZh=SMO_p%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>kNf8j&Bkqa9Jrf\dq2>H9NfT6_
+o9'$8qiU?1!g/Y/rfdAHrKRAIrK[8EpQ=?rqNCoDqNLc=plbcBPEZ!/pQGZAPEZ!1r0'(5U84W`
+W2cr$YHY==[C3TU]=bkm_8=.0`lQ9EbK\>Yd*^:keCE1&f\,!5gtgfChr!AMiSiepj8S-1jo4?=
+j8\-=iVqa:hqm5hh#Z<crn7D+f`'J+f%&:"e'e6CJ'cNecHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l
+]=PP`\@8oT[Bm3FZ*:I9Y-"h,WiE%sVl-DgUnaZXTqJ$LSt2@?R[KP1Q^3o%PEM)kOH5H_NJrgS
+MM[.EL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r:Df0H0D#\8TC2%BqBP1rVAH?=OraH+@
+?sm>K?=$q:>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.B
+6LR3ks8N$&jMn[5WMH*aRN.fbR$jA0R$X/*Q'ISuPECrfO,f3[N/`gTN/NYnM?8WjM>i;@MMR(D
+Lk^\?M2$b@M27#VM!mY-6N':K7/o^U7fGpX8,u6\8c_RYr_7f9:Jakb;c?Xq<``C+>$G6;?XI5N
+@qB4aBPM=!DJsN8FEMePH@('hJ:W?+L5:\EN/s'`PEhK%R[]n@Tq\?[Vl?`!Y->1;[C3TU]=bno
+_Sa@4aN;WLcHjnce'ut#f\5*8h;@/LioB+^k3)!nlKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;QZerdk*>s*t~>
+JcC<$SH&6\rr)ior;6Njs7uZh<ql=]p%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3MS!o_1Q'7>kNf8i_77Tm>p.kEX!)EJgo1o9\
+qbH`Y!)WYjrD*Agr_NSjr_WPhqb[5kpJgrgpf@AqpK%5orE/ntqc3\uq,mYus&f8%rE'&$r`B/%
+r`8eq2kctAV5L8lXKA\1ZEpsI\@K5a^;%M$`5Ta;ai_fOcHjkbdaZdsf@S[.g=tE=h;7&Hi8ESQ
+ir.p:jRVF3jS\'<irA!:hu_fmhYu=3gtVh^!SQ-)f*0aUeC;sqrm?5Bcd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Us]Y(kf\[f5Z[^NTMZa-j?Yck43XfJJ%WMl_mVPU)`U7n9RT:VXFS"#k7R$a5+Q'IPr
+P*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)l8?E,]`5DJa4iCBeNfBkV0m
+B)Z?BA7PUJ#@V"J?XI,G?2e(1>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]F2f:&[id9D_?\8c;3U
+8,YpT7J'"C6hNe76%T%Cs7<F@@Tl`2;,:!d:+f799MA)R:JOVY9M8)R9M.oM8P2WK9hS,Q9M%iK
+84lTO91h`J9MJ2U9hnGX:&[rg:@:sI62X(J6i0:O7K5jV8,l*[8cD<_92,=ZI83R7:f1.i<)lt#
+=BSg3>[:]D@:E_XAS5[kCM[m,EH6/DGBeF\I=?]tK7nu8M2R=ROHPfmQ^F52StD^NUo(&hX0&P/
+Z*UjH\@K5a^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWBi8N\UjQ>Ufl07L"m-X60n*ol<o(2MQo`Fj]
+p\ssfq>^<hqu6NmrUg)?s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7]Rfp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS!o_2Q'7AlNf8m3G^b@3VRH-.s18?G^;'Z_
+rPAKMrkn]Qrl+cQ!6+rU!Q2kT`;mjR`Vm^W`Q#s>rlP/^"3\p3bPBB^\G!K"\cBA7])92;]`,PA
+])TD;]^ic7]_fB#TVA6YVl6VsXfnt7ZaI6O\\#Mg^VRe*`Q$!@b0/&TcdC.heC<($f@em3gYCW@
+hV[8LiSiepj8\3>jn%X6jo4?>j8\-=iVqd8hZ2O4h#Z<crn7D+f`'KPf%&:"e'cXkd*L%`cHXSV
+bK@rJaN)<>`Pf[2_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Y-"e+WiE%sVl-DfUnaZXTqJ$LSXc1=
+R[KP1Q^3o$PEM)kOH5H_NJrdQM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEs)A'YDuOV]
+D/=!'C2%BqBP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5h\)=9)G%<rZ2"<;fbq;ZBVm;#a>k:Adid
+9`@]^9)_E\8GYjS7f5^I7/0.B6LR3ks8N$%pZLMgdF%s?(sgLOb0A,Qb0%iJa2Z'8_83q%^:q4j
+]=IpQs1&iT\@8uV\@/iT[C!9EYd1R=Yd1XFm'c@Kr'L?Lr'^NQs$luXs%!,]r^m2a9`@b7:/=\_
+;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm!%KnbD?MiEdZP*;/tR$sP:T:r$U
+VPgDoXfen6ZaI6O\\,Vj^r"".`lQ9Fbg+P^daQ^sf@em4h;-uHiSrnYk2tmll0@X%mI'H3nF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFASH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7]Rfp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS!o_2Q'7AlNf8m%ASH%.JVs8_q2>H9NfT6_
+o9'$8qiU?1!g/Y/rfdAHrKRAIrg!>E!1!2=hNIf#s-3MH!0mJHq3(H8s-!#<rKR>G2P?e?V5L8l
+XKA\1ZEpsI\@K5a^;%M$`5Ta;ai_fOcHjnce'umuf@S^0g=tE=h;7&Ii8NYSrT!q=roNb6roO.?
+rT!q;s5Et8s5*h5rnRV1g]#n-g"?;UJ(E0"eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SO%&^V7Co
+]Xtbc\[],W[C!9HZE^X<YHG"/X/`2!W2HPjUnjc[TqS-OSt2C@S!ob4R$X,(P`q8nOcYWbNfB!U
+MM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HErU+[E,Y_n$>jTpCMIQtBP;$jrac+@A,]pB
+@:3JM?X@&Er`fM/>$Co.s&]8&r`9&!s&Aqqs&/korD<Mis%`Jds%NDbqb$iZrCHcTr'pTQoL/IA
+og8+5Jc>uIe@`/iV4X7URf8`SR/`KZQBd`"P`h/jNfX1""cSG"N/NVnM?&S5M%5>rLl$qCLkUS=
+LPCP>MX-)e62X(J6i9@O7K5jV8,l*[8cD<_92,=ZI83R7:f:4j<)lt#=BSg3>[:]D@:E_XAS5[k
+CM[m,EH6/DGBeF\I=?]tK8#&9M2R@SOHPfmQ^F53StD^OUo(&hX0&P/ZEpsI\@K8c^VI_(`Q$!@
+bKS8XdF-Lnf%8U/gYL]Ci8N\UjQ>Ugl07L"m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?
+s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7]Rfp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS!o_2Q'7AlNf8l`77Ka:9254Wq+UiarD3#[
+r_NDdmn`mWs%iJfr_NAe!`)itr)NJjqc3>j!*Aenr`B&#qH*Pps&]&!!*B/%s&\tt!*B/#qc>\K
+U84W`W2cr$YHY==[C3TU]=bkm_8=.0`lQ9EbK\>YdF$FmeCN7'g"P07gtgfChr*GOiSsgrs5a1@
+oB-&6roF%<s5O(;ro!h6!8d_2!SlH/g&]mZrmuYNe^W*tda?Ihcd0n^c-4ASb/q`Ga2Z*;`5BI.
+^q[Xu]tD"i]",A]\$i]OZa6sBYct=6XfSS'Wi;qpVl$8cUS=HUTV%gHS=?":R@'A.QBd\uP*1rh
+O,o<\N/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;L&E<1#srb`'[Chmg$Bk_6oB4h-S
+!G#^>@L$=L?sd8I?=!P8!aAi3r`T8'!*B/#s&K(urDW_os&&_ks%iYir([2br_*,\r^m&ZqFCHQ
+r'g6Gpd=^@mm2R*#KVj@>uam&;>s>j:]F0E9h\5R9M\DW9MJ8V9MA#N91_`J92&#P9hS&M91hiO
+92%oK92&)V9i"MY9hnJ[:/1+Pmm6k<rBpKNr^HiVr^ZuZ!(m/^!D?,c9moc4:f(%g;cHat='/U/
+>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/Z2Ll%%LO-#NgQ'[l,S=Z@HUSOcbWN3/(Yd1UC
+[^`l\]t_A"_o9X:aihoRcdC1ieCN7)g=tH>hr*JQj5f@bkiq?sm-O--n*fc9o()DErq-?dp\4[^
+s7u]kr;6Kkrr)KgJcD8?J,~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq04^oCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmNf8mQF+Ah%VQ%?'\c]RW]tXK\
+s1nZNrk\`S_ScAkrl+WMs24lT!l`*rqo&fY_o0L5a2c:#aoBN]bP06\\c92.\b*H8\[oA_p:C78
+q7Q^=s183Apq643!PH&B]`,StTqnN_W2co#YHY==[C3TU]=bkm_8=.0`lQ9FbK\>YdF$Fme^i@)
+g"P07h;-rFrnmh9ir.m;jSn9.k5XQBjSe*?io/kqi;_[7hYu=3gtVh^IbEB*f@JO'eC;sqdF$=e
+cHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f2X[^EKKZa-j?Ycb+1XK/A$WMl_lV50o^U7n9R
+St;LCS"#k7R$a2)Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOW$$LH5FE;JB
+EH#jqD?XlnCMR[!rb)=FB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<W?%t;u]bq;>j>j
+:]F2f:&dod9D_?\8cD9V8,PjS7J0(D6hE_66%T%=rpAb(eGdepci25iaq2e>bK7oJaMu09_ns7*
+^V.>[\cB8>]DoAC\[T)WrjVp9"gkVBYd(M5YQ;)>m'c=Jr'L?Lr'^NQs$luXs%!,]r^qW49MJ5V
+:/=\`;H$Ln<E<1'=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIXm$&KnbD?N/`m[P*D5uR%'V;
+T:r$UVPpMqXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3
+nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s.'+>~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq04^oCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmNf8mQ@VK_%JV0$\NVSP5N<5-$
+OS"\7P5:=<OoUX=P5gXEP5UREPl-dHPl?sEPlI!MP`h4-OT:R@OmS;6Ocklip6,E=rKI;GrfmDG
+q3(*.!0[8Ds-,4$TqnN_W2co#YHY==[C3TU]=bkm_8=.0`lQ9FbK\>YdF$Fme^i@)g"P07h;-rF
+rnmh9ir.m;jSn9.k5XQBjSe*?io/kqi;_[7hYu=3gtVh^IbEB*f@JO'eC;sqdF$=ecHa\YbKJ&M
+aN2EA`Pod5_SX.)^V@Lr]Y(kf\[f2X[^EKKZa-j?Ycb+1XK/A$WMl_lV50o^U7n9RSt;LCS"#k7
+R$a2)Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOW$$LH5FE;JBEH#jqD?Xln
+CMR[!rb)=FB)Z?BA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<W?%t;u]bq;>j>j:]F2f:&dod
+9D_?\8cD9V8,PjS7J0(D6hE_66%f1Ki5E1/VkT`NR[KS2R$j>/Qi33ZQ'@MsOcb`dO,f3YN/ddo
+s,%JHMi!7GM26qEMMR"BL4tD<L5(QNM!dS,6N':L7/fXT7fGpX8,u6\8q'E,9heAX:Jand;c?Xq
+<``C+>$G6;?XI5N@qB7bBPM="DJsN8FEMePH@('hJ:`E-L5:\FNK90aPa.T&S"-(BTqeE\W2co#
+Y->4<[C3TV]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/Lj5]7`k32'olg4!*mdKW6nc/.\oCW%T
+!quB_rqQNhs8)Zjrqucoo_sFASH"*~>
+JcC<$SH&6\rr)ior;6Njs7uZhs7ZNerq04^oCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`PTI+^:_(g\$iZMYck10Wi2hkUS4<OS=5h3Q'7AmNf8mQ6q0^:92/4Z:AIWa:B"&]
+:B"&c:A[fe:A7Q^:B+,d;#X8e;#a;o9ikCs<rH%l<;oni<Wc?&<`Sior`B&#qH*Sqr`AJhs&],!
+r`:bHUnsufWiN8*Yd1UC[^`l[]Y;.s_SjF5aN;WKc-FY_dF6Uqf%8R-g=k<;h;7&ghuVfrrSmn=
+roNP0s5j7@rSmt=iSjdos5*h5rnRV1g]#oUg"=p.f%/C$eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<Y-"h-X/`2!W2HMhUnjc[TqS-NSt2C@S!ob4R$O#&P`q8n
+OcYWbNJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"?<G'.nKF)l8?E,Y_n"`8'kCMIS_BE;aX
+rac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Atrs&/korD<Jhs%`Jds%NDbqb$iZr^ciT
+r'pTQogJRBoKr"4L&VGHWHViU<E2mlr_=8'9hnGX9h\5T:/4JV9he;T91hiM84lMQ9*S*`8Ol?E
+:&[fs8kViO92/,U9hnJ[:ej_\mSN=;r'L?Lr'^NQs$luXs%!,]r^qW49MJ5V:/=\`;H$Ln<E<1'
+=^#$7?!grI@Uit]B4u$qD/O93EccGJG^=^bIXm$&KnbD?N/`m[P*D5uR%'V;T:r$UVPpMqXfen6
+ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&t[k2tmll0I^&mI'H3nF?PL!V>s_o`Fj]
+p\ssfq>^<hqu6NmrUg)?s.'+>~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmNf8mQDgm7oRA%=l])9)H]">Se
+]tV4q^qde&r5&HOo#1RG!Q;nS`;[^_`5T[5_o0O6a2l@$aoBN]bP'0Y\c0,/\b*K1\b<W5]DB2;
+]D&u:]`>_?^%o;tTqeH^W2co#YHY==[C3TU]=bkm_8=.0`lQ9FbK\>YdF$Fme^i@)g"P39h;-rF
+i8ESRir7s>jQ5M#k4Rp6k5XQCjSe*?io/kqi"4f&hVI#CgtUQ:g"G$0f@JLOe8j$ddF$=ecHa\Y
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(ke\[],W[^EKKZa-j?YHG"0XK/A$WMcYkV50o^U7n6PSt;LC
+S"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2Jq8H%IXQWlH[:!`GlDn"G'.nKF)l8?E,TW3
+D/F*)CMIS_BE;aXrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Aqq!`Dlmr)!Dhs%`Jd
+s%NDbqb$iZrCH`SrC6]RoL/IAoKr%5K`;2Qo]4u^rm:\ks3:Yhao0B]a9Tc)_o'@._8-&`*P/em
+\%92_\@B)Y[^<KN[C3KM['Hp@ZEUR<[^Wd6[dHHZ6N':L7/o^U7f>jW8,u6\8q'E,9heAY:f("e
+;c?Xr<``C+>$P<=?XR;O@qB7cBPM="DK'T9FEMePH@('iJ:`E-L5:_GNK90aPa.T'S"-(CTqeE\
+W2co#YHY==[C<]X]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:hV[8Mj5]7`k32'olg4!*mdKW6nc/.\
+oCW%T!quB_rqQNhs8)]krqu`no_sFASH"*~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmNf8mQ?YO=rH[q1TNVSP5N<5-$
+OQqu+P5g[EOoUXDOoUXDP5gXEP5UREPk^O?PlI$KPlHmEP5gXEP4Oh.P5CC8P5UU@PQ6pAP5(4@
+P44YlTqeH^W2co#YHY==[C3TU]=bkm_8=.0`lQ9FbK\>YdF$Fme^i@)g"P39h;-rFi8ESRir7s>
+jQ5M#k4Rp6k5XQCjSe*?io/kqi"4f&hVI#CgtUQ:g"G$0f@JLOe8j$ddF$=ecHa\YbKJ&MaN2EA
+`Pod5_SX.)^V@Lr]Y(ke\[],W[^EKKZa-j?YHG"0XK/A$WMcYkV50o^U7n6PSt;LCS"#k7R$X,(
+Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2Jq8H%IXQWlH[:!`GlDn"G'.nKF)l8?E,TW3D/F*)CMIS_
+BE;aXrac+@A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Aqq!`Dlmr)!Dhs%`Jds%NDbqb$iZ
+rCH`SrC6]RoL/IAoKr%5LAqVQd^l`bV4O0ER[X5Ds-NkUQ^7W9#*tL;P`_)irf8+[N/`dSMi*CM
+MM[7IM2-nCLPgnDL5(D;LP:J<Ll(JSmQpb;rBpKNs$crWrC?lY!(m/^IS3@/9hnJ\:f1+h;cHdu
+='/U/>[1TB?t!MSAS,UhC27[(E,fo?Fa&(VH[UBoJqJc3Ll..NO-#NhQ'[o.S=ZCIUSOccWiN8*
+Yd1UC\%0)_]t_A"_o9X:aihoRcdC1je^i@*g=tH?hr*JRj5oFckiq?tm-O--n*fc9s7-3^o`"Lb
+p@n=\q#C0iqYg<jr;HTdrdk*>s*t~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq01]oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmNf8mQ6UjU<8ko1Xq+^lar_MfS
+r(m>fs%`ViqG7#as%iMgrD38d"&DZd:&@un<`N/l;ufqj<r5nj<rH,!=Sc+u<r?%e=T;J"<]$MF
+V5L8lX0&S0ZEpsI\@K5a^;%M$`5Ta;aihlPcHjnce'uq!f@\d1gYCW@hV[8LiSrkrir\<'jnn35
+kPF?@jo=E?ir\6!iVqaHhqm5Gh;$f?g=k65f[na+ec+'=e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=GJ^\$i`Q['R*EZ*:F7Xf\\*WiE%rVl$;dUnaZXTV%gISXc1=R[KP0QBd`"PEM)k
+OH5E]N/W[PM2@%DL5(D8K7ec,J:E#rI=-BfH?jc7G7o(AFEDSEEH,r9DJj<.Chmg$C&VcHB4h-S
+!G#^>@KBnFra,_5?![G7!aAi3r`K;)=',B%s&K(urDNbq;,R6fs%iYir([2br_*,\r^m&Zq+(BQ
+r'g6Gpd=[?n3Mj0+j#^[>ZFa":eje]:JO\\9heAV9heAW9MA/T9MA)P8PD\Q9,U>r8kDNF8PMlO
+8OlEH9MA/U:/+GY:/4MZm834:r'L?Lr'^QRs$lrWs%!,]r^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8
+?=.)K@Uit]BP;-rD/O<4EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR@B_<TV8-VVPpMqXfnt7ZaI9Q
+]"G_k^r"".`lQ9Fbg+P^daZguf@em4h;7&IiT&t[k2tmll0I^&mI'H3nF?PL!V>s_o`Fj]p\ssf
+q>^<iqu6NlrUg)?s.'+>~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!RCO:J`PbY\c])9)H]">Se
+]tV7r^qde&r5&HOr5AWQ!lW!or5AWQqo&EO#K4Nt`5Ta:aSj6\b5BHTbl>6E\GEc-])&u4])9/A
+]XtfS]`#J:]^`]5]JH7VUo1/kX0&P/ZEpsI\@K5a^;%M$`5Ta;aihlPcHjnde'uq!f@\d1gYCW@
+hV[8LiSsjs!p&J)r9""Ap?;J<r9"%@s5a.=s5F%;rnr7_hVR)Egt^Z<g=b03f@SU(eC;srda?Ih
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tCtg\[f5Z[^NTNZa6p@Yck43XfSS'WMl_mVPU)aUS4BS
+T:VXFS=?"9R$a5+Q'IStP*1ofO,f3YN/NRMM26qAL4t84Jq8H&It%EG$%.)GH?jaZGBS-.F:!#/
+EH,r9DJj<-rbE'[BkV0mB4b^dA7T1Z@UW\Qra,n:?!U]?>?b;0=TV],=8l8#<W?%t;u]bq;>j>j
+:]F2f:&dod9D_?\8cD9V8,PjS7J'"D6hE_66&,CBr9`J!eGdbuc-FVYaiVa*ap#o-a2Z$7rkS`Q
+^V.:mrji0?\[qaM"1P_G\,NfB[C!6DYd1O<Yd<Z(m6UY:rBpKNs$crWrC6o[8P/nRI7m7.9hnJ\
+:f1+h;cHdu='8[0>[1TB?t!MTAS,UiC27[(E,fr@G'A4XI!pKpJqJc3M2I7OO-,TiQ'du/S=ZCI
+USOfdWiN8*Yd1UD\%0)_]t_A"`5Td<b0/&TcdC1je^rF+g=tH?hr*JRj5oFdkiqBum-O--n*olH
+ncA@Srq-<cp\jjgq>0scqu6NlrUg)?s.'+>~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!R?"RbgGCPPLNVSP5N<5-$
+OQqu+P5g[EOoUXAP5g[EP5^[FPk^O?Pl?sJPQ6p3On4b4Onb+;P6-u4PQ$dHPP11(P;Ao-Uo1/k
+X0&P/ZEpsI\@K5a^;%M$`5Ta;aihlPcHjnde'uq!f@\d1gYCW@hV[8LiSsjs!p&J)r9""Ap?;J<
+r9"%@s5a.=s5F%;rnr7_hVR)Egt^Z<g=b03f@SU(eC;srda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,
+^q[Xu]tCtg\[f5Z[^NTNZa6p@Yck43XfSS'WMl_mVPU)aUS4BST:VXFS=?"9R$a5+Q'IStP*1of
+O,f3YN/NRMM26qAL4t84Jq8H&It%EG$%.)GH?jaZGBS-.F:!#/EH,r9DJj<-rbE'[BkV0mB4b^d
+A7T1Z@UW\Qra,n:?!U]?>?b;0=TV],=8l8#<W?%t;u]bq;>j>j:]F2f:&dod9D_?\8cD9V8,PjS
+7J'"D6hE_66&>OHhS?Y'W1fcMRf8`TQiNKNQ4K=HP`q8nOcb`cNfT-XNK!jp#E"FtMMd4HLAlu.
+M$SomKnY;;L5(QNM![M+6N':L7/o^U7f>gY84cDP8ps?+9heAY:f("e;c?Xr<``F,>$P<=?XR;O
+A7]@dBkhF#DK'T:FEVkRH@1-jJ:`E-L5CeHNK93bPa.W(S"-(CTqeE]W2co#YHY==[^WfY]Y2(q
+_SjF6aND]NcHjndeCE1&g"P3:hV[8Mj5]7`kNM0qlg4!*mdKZ8rpg*]o`"Lap@nO\!r;]hr;6Kk
+rVcBfJcD8?J,~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq04^oCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!R6:OI98P;eV:AIWa:B"&X
+:B+&f:Adof:B+)i:A[ia:&n)d;#O2d:]aEf:B!rf=Sc)#<`N/m;ufqi<r,hk<r?#!=R]D]=T;J#
+<\pGEUo1/kX0&P/ZEpsI\@K5a^;%M$`5Ta;aihlPcHjnde'uq!f@\d1gYCW@hV[8LiSsjs!p&J)
+r9""Ap?;J<r9"%@s5a.=s5F%;rnr7_hVR)Egt^Z<g=b03f@SU(eC;srda?Ihcd'h\bfe2PaiMQD
+`l5p8_ns:,^q[Xu]tCtg\[f5Z[^NTNZa6p@Yck43XfSS'WMl_mVPU)aUS4BST:VXFS=?"9R$a5+
+Q'IStP*1ofO,f3YN/NRMM26qAL4t84Jq8H&It%EG$%.)GH?jaZGBS-.F:!#/EH,r9DJj<-rbE'[
+BkV0mB4b^dA7T1Z@UW\Qra,n:?!U]?>?b;0=TV],=8l8#<W?%t;u]bq;>j>j:]F2f:&dod9D_?\
+8cD9V8,PjS7J'"D6hE_66&P[SlD8Z4>#nX#:ea\\:/=VZ9hbO\%8T_n9MA/S9MJ/Q8kV_S9+FNd
+8k_lM84lHK9M.oJ9E%Tb:&[lj9i"S\:$kdE62X(J6i9@P7K5jU7fl4Q8cD>192&&S:/=\_;,U=k
+<*!%$=]np5>[CcF@:EbYAnYmnCMds.EH?5FGBnL^I=Hd!K8#&:MN!OUOckroR$jG6StMdPUo1/k
+X0&S0ZEq!K\[oGe^VI_)`Q-'BbK\>YdF-Opf@S^0gYL`Di8N_VjlYail0@U$m-X60nF?MK!V>s_
+o`=d\rV-HiqYL-erqu`no_sFASH"*~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq07_oCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]'SLj"3!NME;cq7-jD]=Y_h
+^:q@s^qfob!5eHIr5AWP!5n`Qs2>>``Pf^4_o0O6a2n5$rlY2_qof&bqof)c\Gj&/\GEc-])&u6
+](`i8]`,P;]^WW6]J61WVPpMqXfen6ZaI6O\\#Mg^VRe*`Q$!@bKJ/Ud*^:jeCE1&f\5'6gtgiE
+i8ESRro4(@jlQI'roa7Dq!%b@roa4As5j:Aro4(>iSjdo$fBgth;-l@gY1B7f`'KOf%&:"e'cXk
+d*U+acHXSVbK@rJaN)<>`Pf[2_SEq$^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h,WiE%sVl-DgUnaZX
+TqJ$LSt2C@R[KP1Q^3o%P`q8mOH5H_NJrgSMM[1GL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDU(
+ErU+_E,TW3D/B2e&8GomBP1siAS#C_@q&nU@:9(A#@:\A>[1K;>5_S*=BAT'<rZ2"<;ohr;ZBVm
+;#X8j:Adid9`@]^9)_E]8GPdR7f5^I7/0.B6LR3ss!@I1jP\V8cd'bYc-FMSb/_ZH`lQ3?`P]O-
+^q[\!]t1he]=PJ_rOEBI\$`TP[^NZPZEg^=ZMq'0[C3R3[d?BY6N0@L7/o^U7f>i+84cBF8kVfN
+9heAY:f("e;c?[s<``F,>?kE>?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`E.LP^nINfT<cPa7])
+S"6.DTqnN_W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Nj5f=akNM0qlg3s@
+mI'H4nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]'SLgk"7FFSn(NK*ams,@)?
+O,s7$mZIO4rK7,Cs,m>E!0R8Ds,m>ErfdAHq3Cf@rK[DI!L&c1On4b4Ont78P5pjHPP11*P;/i.
+VPpMqXfen6ZaI6O\\#Mg^VRe*`Q$!@bKJ/Ud*^:jeCE1&f\5'6gtgiEi8ESRro4(@jlQI'roa7D
+q!%b@roa4As5j:Aro4(>iSjdo$fBgth;-l@gY1B7f`'KOf%&:"e'cXkd*U+acHXSVbK@rJaN)<>
+`Pf[2_SEq$^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h,WiE%sVl-DgUnaZXTqJ$LSt2C@R[KP1Q^3o%
+P`q8mOH5H_NJrgSMM[1GL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDU(ErU+_E,TW3D/B2e&8Gom
+BP1siAS#C_@q&nU@:9(A#@:\A>[1K;>5_S*=BAT'<rZ2"<;ohr;ZBVm;#X8j:Adid9`@]^9)_E]
+8GPdR7f5^I7/0.B6LR3urs/)@[]la.T:5bIs-NeSrg+4^QB[Z!P`q5nP)t`bO,]-WMuJ\8MuSYL
+Mi*@ILkg_>LP^hBLP:D:LP:J?Ll(MTm6UY:r^6QNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h;cQk!
+='8[1>[1TB?t*SUAS,UiCMRd)E,fr@G'A4XI!pKpJqJf5M2I7PO-,TiQC+)0SXuLJUnsufWiW>+
+Yd:^F\%0)_^;%M$`5Td<b0/&Td*^:ke^rI,g>(N@hr*MSjQ5OekiqBum-FlBmdKZ8rpg9bo_%nN
+p@nO\!r;]hr;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]'SLdOR"7nZQQ:/:UZs%`Ph
+nkT*Wr_EJhrD*Ags%`Geqb@,er_NSjr_WSiq+q,g:/:d_!)EMqq,[Vu<E8fnrDiGiqGmAmpf@Gr
+nlP?`r`B)"0r(PAW2co#Y->4<[C3TU]=bkm_8=.0`lQ9FbK\>ZdF-Lne^rF*g=k<:h;7&Ii8N\p
+ir\<'jo+?@kPaW>l2BiFkPXKBjo=E@ir\6!iVqaChqm5Gh;$c>g=k64rmuVMe^W*tda?Ihd*L"_
+c-4ASb/q`Ga2Z*;`5BI/^q[Xu]tD"i]",A]\$i`QZa6sBYct=6Xf\Y(Wi;qpVl$;dUS=HUTV%gI
+SXc1<R@'A.QBd`"PEM&iO,o<\N/W[PM2@%CL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE@J&s)A3]
+Df0H0D#S2]C2%?pB4kgfARo=]@U`bS@/aL<?<piA>[(E9rE02(=',B%s&K(ur_rhps&&_kr_NPh
+r([2br_*,\r^m)[q+(?Pr'g6Gpd=^@mm2p4#K;R9>#\Ht;>s>j:&drm9h\8T9hnF\9`@["8kVfL
+84lNJ8P2TK91h`H8PVuP91]%Ts%NJgr_<Dg!DZAV;!gRH6N0@L7/o^U7f>i+84cBF8kVfN9heAY
+:f("e;c?[s<``F,>?kE>?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`E.LP^nINfT<cPa7])S"6.D
+TqnN_W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Nj5f=akNM0qlg3s@mI'H4
+nc&(`oCV_Kp@e7Zp]C9fqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eoi1STo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJr^MDgd+lR%V.h\I,p[]=bhk
+^;%Fu_#2"R_Sa:._o'@.rkn`Rs24iQ!5ncRs2>&X`Phbn"N8:!a2n8%rQ>&]r6,8fbfn?2bl5ld
+\Gj&=\GNc2\GEc-])&u8](EW6]E#S<]^EHkUSOcbWiN8)Yd(OB[^`l[]Y;.s_SjF5aN;WLc-F\`
+daQ^rf@S^0g=tH>hV[8LiSrnXjQ,G$k5XWEkj[j9kl0cDk5XQCjSn3>iW.s:huV`lrnRe6gY:H9
+g"?;UJ(E0"eC2jndEp4bcHXVXbKJ&MaN2EA`Pf[2_SO%&^V7Co]Xtbc\[],W[C!9HZE^X<YHG"/
+X/`2!W2HPjUnjc[TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@ILPCP;KS+o/JUi9#IXQWl
+H[:!`G^"@TF`__HErL%^E,TW3D/B2e&8GomBP1phAS#C^@q&nU@:9(A!FB(2>lS".>5h\)=T;J%
+<rZ2"<;ohr;ZBVm;#a>j:Adid9`@]^9)_E]8GPdR7f5^I7/94B6LR4!s#C#Rkht4Fc-FPVbg+GS
+bK.iIa2c0=`l#[1_7mXu]tM(k\\#G^\[]2\]"#2VZaI6L[^<?GYctG4YQD8B\*^Wk62a.K6i0:O
+7K5jV8,l-[8cMD392&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SUAS5[jCM[m+E,fr@G'A4XI!pKq
+K7nu7M2I7PO-,TjQC+)0SXuLKUnsufWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^=le^rI,g>(N@
+i8EVTjQ5OekiqBum-O-.n*olIo)J:bo_%nNp@nO\!r;]hr;6KkrVcEgJcD5>J,~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eoi:YUo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJr^M?>+.oH@M!8q2G?5rf7#>
+s,d&=!0H`5s-!DEs,mGGP*5g,s-!AFs-3>EqNUrDs-*MIrfm;ApQ>?7qN:B4qN:]=o98g0mZTQ(
+Uo(&iX0&P/Z*UjH\@K5a^;%M$`5Ta;aihoQcHstee'uq"f@em3gYL]Bhr*GOioB([jQ6@&s6'FG
+nEKr9roa7Bs5j:Aro=%<!9*q8!T2c5h$2ZhgY1B7f`'KPf%&:"e'cXkd*L"_c-=JUbK@rJaN)<>
+`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Y-"e+WiE%sVl-DfUnaZXTqJ$LSt):>R[KP1Q^3o$
+PEM)kOH5H_NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSErc&*\Df0H0D#S2]C2%?p
+B4baeARo:\@U`bS@/aL6?=!P8s'#J,r`T8's&]2#s&K(ur_rhps&&_ks%iVhr([2br_*,\r^m)[
+q+(?Pr'g6Gq*Xd@mm2s5#i*,%XJV\^R@=,C%[NKJQ^3r%QB[VtPEM)krf7VNNK&mUMi<UPMM[1I
+Mi!7FrIt</reC`4KSP>:L5:]QM![M,6N':K7/o^U7fGpX8H29]8q'E,9MJ5V:Jakb;H$Op<`W=*
+=^,-:?=.)L@Us%_BPD6uDJjE5F*)SLH$XjdIt<6*L51VCN/is]P*M?#R@Bb=TVA6YVl6VsXfo"9
+['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\,!6h;7)JioB+]k3(smlKdg'mI0N5nc/1[o*+dZp%J+R
+rV-HiqYL-erqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg!Vc<eoi:YUo()>?n*f]3m-O$%l0%3kjQ#7Xi83;Fg=k32e^W$p
+d*BnZb/hTA_ns4(]tCnc[^EHHYcb(-WMcSgU7e*KS!fY/P`h,hNJr^M6:4758PW&Vq+^lar_N2^
+q+^WZs%iYir(m2bs%iJfr_N>d!`)Qdr_3Gh:J^Ua!`i<$qGd>lo2b]fr)WSorDrMko2tol2P[(F
+VlHf"Y->1;[C3TU]=bkm_8=.0`lQ9Fbg"G[dF-Lne^rF+g=k<;h;7&Ii8N\Uj5f:_rT=.Cs6/t:
+roj@ErT=.As5a1>s5F%;rnmh7hYu=8gtUT;g=b-Xf72B%eC;sqdF$=ecHa\Zbfe2PaiMQD`l5m6
+_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XK/A$WMl_mVPL#_U7n9RT:VXES"#k7R$a5+Q'@Jq
+P*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)q8""`SBtDJa4hCCk5pBP;$j
+An>Oa@q/tW@:<RC?NFJ=r`oJ-!*]A)s&f;&r`9&!s&Atrs&/korD<Mir_EAcs%NDbqb$iZr^ciT
+r'pTQoL/LBoKr"4O8fUKU39pI<Dl^k9i"O`9`n-b9hbO\#"hQ_9h\,PpIYT\8kVfN9`@Tq9h\/O
+7nZHI9heAW:/+JY9ht(Pm6U\;rBpHMs$crWr^ZuZs%35_IS3@.9heAY:f("e;cHat<`iL->?kH?
+?XR>PA7]CeBkqO&DK'T:FEVkRH@1-jJV/W1LP^nINfT<cQ'Rf*S"6.DU84W`W2cr$YHbF@[^WfZ
+]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hVd>Oj5f=akNM0qlg4!*n*fc9s763]"n_K\p@e7Zp]C9f
+qY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg=nhX`p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY0P`h/iNJraND1$bcPGP\d\G`rD]">Se
+]tM.o^\beH_>;%J_u@US_u7IP_uIXT`VmaS_Z[os`lH1"ao0B[bP]TablQ&5rlkAd!RAsf\Gj&=
+\GE]4\G<]+\cfRT]",BK])9/?]_T2;]E#S@]_K/?]DfMA]JcO\VPgDoXfen5Za@0N\\#Mg^VRe*
+`Q$!@bKJ/Ud*^:jeCE1&g"P08h;-rFi8ESRj5]4^jo4EBkPsc@l2KuCl2KoHkPaQCjo=E@ir\6!
+iVqa9hqn@g!SlH/g4%`-f@SU(e^W*tda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",>[
+[^NTNZa6sBYct:4XfSS'Wi;qpVPU)aUS=HUTV%gHS=?":R@'A.Q'IStP*1rhO,o<\N/NRMM26qA
+L4t;5K7\Z)J:E#rI=-BfH?jaZG9V3QFEDSEEH,r:Df0H0Chmg$C2%?pB4baeARo:\@U`bR@/aL6
+?=!P8s'#J,r`T8's&]2#s&B%urDW_os&&_ks%iVhrD!8br_*/]rCQuZq+(BQr'g6Gpd=[?mm3!6
+#57NHi76,trlcP1bfRuJaiDE?`lH$8_SO((^V7Ip]Xthf\[o;\\%&rZ\,E]?[^EQMZa-g>ZMq'/
+[C>P3m6UY:rBpHMs$crWr^ZuZ!(m/^IS3@.9heAY:f("e;cHat<`iL->?kH??XR>QA7]CeBkqO&
+DfKc<FEVkRH@10lJV/W1LP^qJNfT<dQ'Rf+S"6.EU84W`WN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]N
+cHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9s763]"n_K\p@e7[q#C0iqY^6ir;HTerdk*=
+s*t~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg=nhX`p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY0P`h/iNJraN?"IYeG(GSIN;nn:NrP.?
+OSt==OR8/5P*(liP5^UDP5^[FPkgU@PQmD=Q'ISuPQ$dIQ'D3.oTB*6q2t<4plYN<r0%,FplkZ>
+!0R/Aplb]@q3*_3Uo(&hX0&P/Z*UgG\@K5a^;%M$`5Ta;aihlPcHstee'uq"f@em3gtgfChr*GO
+ioB([jlQL(s6'FGq!%eCq!%eAs6'@Cs5j:Aro4(>iSjdo!T2c5h#Z<crn;hSf[na+e^`1!e'cXk
+d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q['R*EZ*:I8Xf\\*WiE%sVl$;dUnaZX
+TqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H_NJrdQM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GBY6SF`__H
+EcH)<E,TW3D/=!'C2.HrBP1phAS#C^@q&nU?srt@!FB(2>lS".>5h\)=T;J%<rZ/"<;fbq;ZBVm
+;#a>j:Amod9`@]_9)V?\8GPdS7f5^I7/0.A6LR4%rsJ;@[BHR*T:;7;RJrQZQC!o&Pa.MuPl6dF
+NrY4>NW4nAN/NUQMM[1Gre^Z1rIt</reC`4KSP;9KnkQQM![M+6N':K7/o^U7fGpX8,u6\8q'E,
+9MJ5V:Jakb;H$Op<`W=*=^,-:?=.)L@q9.`BPD6uDJsN7F*)SLH$XjeJ:W?+L51VDN/is]PEhH$
+R[]k>Tq\?ZVl?\tXg#(:['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'
+mdKW6nc/1[o*+dZp%J+RrqQNhs8)Zjrqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nr;6Nj!;ZTg=nhX`p%@tKo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcSgU7e*KS!fY0P`h/iNJraN6q'R885)bP:B"&c:@q9Q
+:Adob:B+,i:]O;i;#X8d:]aEf:B!rl:/=Y^:fg`t<qo_r<rQ+t<;BPb<r>tp<r?##=BAT$<qTPl
+=9)Ft=T2A[USOcbWN3/(Yd(OA[^`l[]Y;.s_SjF5aN;WKc-F\`daQ^rf@S^0g>(N?hV[8LiSrnX
+jQ5M&k5XWEkkOEAlM0WCkl9iEk5XQCjSn0@io/kqhuV`lrnRV1g]#oUg"=p.f%&=#eC2jndEp4b
+cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X<Y-"h-X/`2!W2HMhUnjc[TqS-O
+St2C@S!ob4R$X)'P`q8nOcYWbNfB!UMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"?UG'.nKF)l8?
+E,]`5DJa3*CMITuBP;$jAn>Oa@q/tW@:3LB?NFJ=r`oJ-!*]A)s&f;&r`9&!!*&nqs&/korD<Mi
+r_EDdr_3;ar(?oZr^ciTrC6]RoL/IAoKr"4OoGd+MJ6<r<DZOe9MYL[rCd;f8ki"Y9E.Wa9E%Q`
+8cMBt84cEG92%rJ84lTN8kDNG8kViP:/:^]!)DrYm6UY:rBpHMs$crWr^ZuZ!(m/^IS3@.9heAY
+:f("e;cHat<`iL->?kH??XR>QA7]CeBkqO&DfKc<FEVkRH@10lJV/W1LP^qJNfT<dQ'Rf+S"6.E
+U84W`WN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]NcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9
+s763]"n_K\p@e7[q#C0iqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Njs7uZh>PIjbp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJraOL3@rpNM3#`\G`rD]">Se
+]tM.o^\bhF_>hCP_#V@M_u%=N_ZIcq`W!gU_Zmuq`5]g;aSs<\b50<[bl>oibg"AUrQPJjc-<f0
+qmcU8!4_m7rj_g8m(*2/r4;g<rk/'=p:U@;oXm#VVPgDnXfen5Za@0M\\#Mg^VRe)`Q$!@bKS5V
+d*^:keCN7(g"P39h;-uHi8N\Uj5f:_roO:Fkihp.oBQ5;rojCFrT41CjQ-=#!oi1trnmh7hYu=3
+gtVh^"khP[f@JLOe:5rqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(hd\[],W[^EKKZa-j?
+YHG"0XK/A$WMcYkV50o^U7n9QSt;LCS"#k7R$a2)Q'@JqP*(ieO,f0XMi*@JLkg_>KnP)2Jq8H&
+IsufoI!^0cH$FOWG'.nKF)l8?E,Y_n$>jTpCMIQtBP;$jrac+@A,]pB@:3JM?X@&Er`oJ-!*]A)
+s&]8&rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/IAoKr%5OoIH=pZLJhd`ft[
+bKJ/RaiDHC`l,j7_SjC0_8*au^:h.k]=PSa\[T&X\[]/X[^EQO[^ENM['Hm>ZMq'/[^YY4m6UY:
+rBpKNr^HiVr^ZuZ!(m/^!D?,c9n#i5:f("f;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(V
+H[U?nJV/W1Ll%%KNfT?eQ'Rf+S"61FU84ZaWN*&&Yd(OA[^`l[]Y;.s_SsO9aihlPcHstfeCN7(
+g=k?<hVd>Oj5f=akNM0qlg4$,n*fc9o()DEo`+Uap&Ojdq#C0iqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Njs7uZh>5.aap%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJraOL1=k5F+/\%qi(Q7rJgo>
+OSt==ORA82P5gXEP5ULCP5UREPk^O?Pl6mEPQI,7PkgF5OoLO>On+\0OoLUBPQ$g@PPC=1P;K)4
+Vl?\uY->1;['mHS]=bkm_8=+/`lQ9Fbg"G[dF-Oof%8R-g=tE=h;@/KiSrnXjQ,G%joX`0kkjW9
+lMKiFkl9iEjoXZ*jSn0@io/kqhuV`lrnRV1g]#n1g"=p.f%'cLJ()indEp4bcHXSVbK@rJaN)<>
+`Pf[2_SO%&^V7Co]XkYa\@8oT[C!9HZE^X;Y-"h-X/`2!Vl-DgUnjc[TqS*MSt2C@S!ob4R$O#&
+P`q8nOcYWbNf8pTMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HEcH)<DuOV]D/=!'C2%Bq
+BP1rVAH?=OraH+@?sm>K?=$q:>lS".>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>j:Amod9`@]^9)_E]
+8GPdR7f5^I7/0.A6L[:(rs[Ym[B-6uS=5q8R@'B@QNEG:Q2[$JOo^].rJh2DNfAsSMi*CMMZ/G6
+Ll$ueL]<):M26nAKS5,8KnbD@m>1-qr'L?Lr'^NQs$luXs%!,]r^m2a9`@b8:/=\_;,^Cm<E<1'
+=^#$7?!grI@Uit\B4u$qCi402EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$sM8T:r!TVPgDnXKJe4
+Za@0N\\#Mg^VRe+`lQ9FbK\>ZdF6Urf@\g2gtgiFi8WeXjlYail0@U$mI'H3nF?)?oCV\Tp&F^c
+p\ssfq>^<hqu6NlrUp/@s-s%=~>
+JcC<$S,`0\rVc`nr;6Njs7uZh>5.aap%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n0LS!fY0Q'.8jNJraOL-n@!7S6BNq+gobqG-ZW
+ohPE\qG.&ds%i\kr_WPhq+q>m:/4MX:/4S\r_WVt!E`G%<r5ts<rQ,!<;KV`<rQ+r<r?%u=T;J$
+<qKJk=T;J!=T2AYUo(&hWi`G.Z*UgG\%0,`^;%M$_o9X:aihoQcHsteeC<($f\,!5gtgfDi8ESR
+j5]4]jo4BDkNM.,l1=3;l2KoHkPaNEjlGM%ir\6!iVqa9hqn@g!SlH/g'-0^f@SU(rmZGHda?Ih
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6sBYck43XfSS'Wi;noVPU)aUS=HU
+T:VXFS=?":R@'A-Q'IStP*1rhO,o<[N/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;JB
+EH#jqD@15sCMR[!BkV0mB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k+=oVS(=8c/$<E)rr;u]bq;>j>k
+:]=,f:&[ic9D_?\8cD9V8,PjS7J'"C6hE_76'VB[i15!s=Ar*o9heAW9h\8UrCd;f8PDhW9E.T]
+9)hK_8esuh8P2TJ9M%cG8ki&Q8OlEG92/)T:AdiR:[LIG6N':L7/fXT7fGpX8,u6\8c_RYr_7i:
+:Jakb;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:W?+L5:\EN/is^PEhH$R[]k?
+Tq\?[Vl?\tY->1;['mKT]=bkm_8=12aN;WKc-F\`e'ut#f\5'7h;7)JioB+]k3(smlKdg(mdKW6
+nac8Bo^r1Vs7QHerqQNhs8)Zjrqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpinUnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'7>kNf8jPLN%WkLmF[ErOE6G]=Y_g
+]tV4q^\bhH_#V:L_>_:O_t_+K_u@R]_o0I1_Sa=3a2c:#ao9HZbPfZbblc27bfp%1!7(PfrOMg8
+rODp<qR6I7qRQ")rO`'?qRc^=qn)m@!kZ+Wo"4t7r4Fh]VPgDnXKA_3Za@0M\[oGe^VI_(`Q$!@
+bKJ/Ud*^:keCN7(g"P39h;7&Ii8N\Uj5f>$k5XWEkl'cElLsQBlMKiGkl9iFk5XQCjSn0Wio/kS
+i8<GKh;-lAgY1B7f\"g-f%&:"e'e6CHdL*acHXSVbK@rJaN)<>`Pf[2_SO%&^V.:m]=PP`\@8oT
+[C!9HZ*:I9Y-"h-X/`1uVl-DgUnjc[TqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP;
+KS+o/JUi6!I=6KiH?sj]G^"@TF`__HEcH)<DuOVXD/=!'C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:
+>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adic9`@]_9)V?\8GPdS7f5^I7/0.A6LR4(s!RF+
+j5/>2bfn8Sbfe,KaiDE@`5KO2`59@,]t_7o\[oDb\%&rY\@;IIs0qp6#I_%I['Hm>ZMq'/[^Y\5
+lp:P9rBpKNs$crWrC?lY!(m/^IS3@/9hnJ[:f1+h;cHat='/U/>?kH@?X[DRAS,RgC27X'DfKf>
+Fa&(VH[U?nJV/Z2Ll%%KO-#NgQ'[l,S"?7GU84ZaWN*)'Yd(OB[^`l[]Y;1u_o9X:aihoRcd:(g
+eCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9s7-Edo^qhLp@n=\q#C0iqY^6ir;HTerdk*=s*t~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpinUnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'7>kNf8jPLL4\1E-Zqmr/CZ8rJgr?
+OHBI(qiLW9s,d&=!0I/A!0[;C!0[;Es-3>Eqiq#Dqih)GrKR&<m?-n$pQ><9rKR2C"I,+5P*,[*
+pQGT?r0&q4VPgDnXKA_3Za@0M\[oGe^VI_(`Q$!@bKJ/Ud*^:keCN7(g"P39h;7&Ii8N\Uj5f>$
+k5XWEkl'cElLsQBlMKiGkl9iFk5XQCjSn0Wio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'e6CHdL*a
+cHXSVbK@rJaN)<>`Pf[2_SO%&^V.:m]=PP`\@8oT[C!9HZ*:I9Y-"h-X/`1uVl-DgUnjc[TqJ$L
+St2C@S!ob4Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP;KS+o/JUi6!I=6KiH?sj]G^"@TF`__HEcH)<
+DuOVXD/=!'C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k
+:Adic9`@]_9)V?\8GPdS7f5^I7/0.A6LR4*rupgO[B?F&Ssl(8R$X/,Q^<u%PEh>rOcbfgNfT3\
+NK&mUregi8M2M:hs+h>FLkgb?KnbA>Lk^Y;K8528L5:`TM!RG*6N':L7/o^U7f>jW8,u6\8q'E,
+9heAY:Jand;c?Xq<``C+>$G6;?XI5N@qB7bBPM=!DJsN8FEMePH@('hJ:W?,L5:\EN/s'`PEhK%
+R[]n@Tq\?[Vl?\uY->1;[C3TU]=bkn_Sa@4aN;WLcHjkbe'ut#f\5*8h;@/LioB+^k3)!nlKdg(
+mdKW6nc/.boCV\Jp%J.SrqQNhs8)Zjrqu`np&9OBS,\!~>
+JcC<$S,`0\rVc`nr;6Njs7uZh#5@ibp%@tKrpinUnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/WMcVhU7n3MS!o_1Q'7>kNf8jPLI4L!7nQQQqG.#cqG-ZW
+!_uHapeL`_qG.&d!`2Zgr_WPhq+q>m:/4MX:/4S\r)!>ps&]/"rE&qurD`hsqGlZYqH*Vt!`rE'
+r`9)%pfIAqrE&ku1fpKMVl?\tXg#(:['mHS]"G_k^r"".`lQ9FbK\>ZdF-Oof%8R-g=tE=hV[8L
+iSrnXjQ6C's6'FGrTX:Gp?V\Bqs".Es6'CDs5j:Aro4mUiSi_Qhr!;Hh;$f?g=k64f[na+e^W*t
+df.X@d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#]tD"i]",A]\$i`Q['R*DYct=6Xf\\*WiE"qVl$;d
+UnaZXTV%gISXc1=R[KP0QBd`"PEM)kOH5E]N/W[PM2@%DL5(D8K7ec,J:E#rI=-BfH?ja[GB\4Q
+FEDSEEH,r9rb_mVChmg$C&VcHB4h-S!G#^>@L$=L?sd8I?=!P8!aAi3r`T8'!*B,"!``3!rDW_o
+s&&_ks%iYir([/ar_*/]rCQuZq+(BQr'g6Gpd=[?mm39>$GV@/>#nX#:eXPXr(RAh9hS2S92,=X
+!_H!Wr_!,\s%<;]'M1nh91qlL8P;`M8kDQH8kMfO9htU\mSE18r'L?Lr'^QRs$lrWs%!,]r^qW4
+9MJ5V:JXea;H$Ln<E<1'=^#$7?!grI@Uit]B4u$qCi402EccGJG^=^bIXm!%KnbD?Mi<^YP*;/t
+R$sM9T:r!TVPgDnXfen5ZaI6O\\#Mg^r"".`lQ9Fbg+P]dF6Urf@\g3gtglGiSrnYk2tjkl0@U$
+mI'H3nF?PL#P7T[p%A%Qp\ssfq>^<hqu6NlrUp/@s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh>5.aap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_1Q'7>kNf8jPLMM0]Jruk8rODp>rjr<G
+]tM.oqnN*Frk\<Fs1n]Pr5/iZ_ns:.`Q#s=aSs<\b5]Wbb5KN]bQQ27c-4E2c2Z)eblG9N\bio8
+\H'/<\,Wl;\%):FmCN8.!4qs;rOi*@kI`RHVl?\tXfnt8['mHS]"G_k^r"".`lQ9FbK\>ZdF-Oo
+f%8R-g=tE=hV[8LiSrnXjQ6C'!pAe2rTX@IrTj4ErTjFIrTX@Gs6'@C!p/M(ro4RLiSi_Qhr!;H
+h;$f?g=k64rmuVMe^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i]",A]\$i`Q['R'C
+Yct=6Xf\\*Wi;qpVl$;dUnaWWTV%gISXc1=R@'A.QBd`"PEM)jO,o<\N/W[PM2@%DL5(D7K7\Z)
+J:E#rI=-BfH?jaZGBS+OFEA"6EcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGn:@/aO5?3":1>QS,5
+>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6LR4+rrr8ikhk(A
+rlbYjbfn2MaN)??rkncQ,Jh12^:h1m\[f;_\@K,[[^W`S\@K)X['[0J[^ENM['Hm>ZMq'/[^Y\5
+lp:P9rBpKNs$crWrC6o[8P/nRIS3@/9hnJ\:f1+h;cHat='/U/>[1QA?t!MSAS,RgC27[(DfKf>
+Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S=Z@HUSOcbWN3/(Yd1UC[^`l[]t_A"_o9X:aihoRcdC.h
+eCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;QZerdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZh>5.aap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_1Q'7>kNf8jPLL"J)D0CGdqi(N6s,R,?
+pQ5<8rK-r>r/go?!0[;C!0[;Es-3>Eqiq#Dr075Hr06i8m?-n$q2t]?qNLlBrKI5Fs-*ADnWP`)
+Vl?\tXfnt8['mHS]"G_k^r"".`lQ9FbK\>ZdF-Oof%8R-g=tE=hV[8LiSrnXjQ6C'!pAe2rTX@I
+rTj4ErTjFIrTX@Gs6'@C!p/M(ro4RLiSi_Qhr!;Hh;$f?g=k64rmuVMe^W*tda?Ihd*L"_c-4AS
+b/q`Ga2Z*;`5BI/_8!b!]tD"i]",A]\$i`Q['R'CYct=6Xf\\*Wi;qpVl$;dUnaWWTV%gISXc1=
+R@'A.QBd`"PEM)jO,o<\N/W[PM2@%DL5(D7K7\Z)J:E#rI=-BfH?jaZGBS+OFEA"6EcH)<Df0H0
+D/=!'C2*Z\!G?$DAH?=OraGn:@/aO5?3":1>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>k:Adic
+9`Ic_9)_E\8GPdS7f5^I7/0.A6LR4,rs@DhZ`BpqS=,h5r0IDLrKIGKP*1rhrf7bRNJrgSMi*FM
+M2@+HM26tFM2-h@re:i:M2-h>KS,&7KnbD@mYL3qr'L?Lr'^QRs$lrW!_>mSr^qW49MJ5V:Jakb
+;H$Ln<E<1'=^#'8?!guJ@Uit]B4u$qD/O93EccGJG^=^bIXm$&KnbD?MiEdZP*;/tR$sP:T:r$U
+VPgDoXfen6ZaI6O\\#Pi^r"".`lQ9Fbg+P^dF6Urf@\g3gtglGiSrnYk2tjkl0@U$mI'H3nF?PL
+!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh>5.aap%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi)_iU7n3NS!o_1Q'7>kNf8jPLI4L"7n63HnPB0[o1esS
+rD38bs%`\m:J^sdrD35c"A_cf9hkU^qG72s>5_S*=BAT&<rH)"<rH%s<;KVW<r,nr=T)>#=Sc+s
+=Sl1u=>O$TVl?\tXfnt8['mHS]"G_k^r"".`lQ9FbK\>ZdF-Oof%8R-g=tE=hV[8LiSrnXjQ6C'
+!pAe2rTX@IrTj4ErTjFIrTX@Gs6'@C!p/M(ro4RLiSi_Qhr!;Hh;$f?g=k64rmuVMe^W*tda?Ih
+d*L"_c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i]",A]\$i`Q['R'CYct=6Xf\\*Wi;qpVl$;dUnaWW
+TV%gISXc1=R@'A.QBd`"PEM)jO,o<\N/W[PM2@%DL5(D7K7\Z)J:E#rI=-BfH?jaZGBS+OFEA"6
+EcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGn:@/aO5?3":1>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm
+;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6LR4.rs@SOFBqsI;,C%^r_3bo:/+GV9MJ2R92/(Y
+9)hQa8e"?_7nH<F8P)HD8kVfLr^dMj9hS,N85)ZK9h\8Vr(ZTTlp:P9rBpKNs$crWrC6o[8P/nR
+IS3@/9hnJ\:f1+h;cHat='/U/>[1QA?t!MSAS,RgC27[(DfKf>Fa&(VH[U?nJqJc3Ll%%LO-#Ng
+Q'[l,S=Z@HUSOcbWN3/(Yd1UC[^`l[]t_A"_o9X:aihoRcdC.heCN7(g=tE=hr*JQj5f@bkNV6r
+lg4$,n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;QZerdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZh?MF0ep%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPBu"J;Tef_n!=hrjr<G
+]tM.oqnN*Frk\TNrk\WOqn`<Ls2,2\_o'@._o9X9aN4>%s2tAb!6Y8`qoo)bs31Jes3CJc!k5\L
+qml^9qRHX:\,<Z9\%&sF\a@!"]D]DB]DT>=]CWZoV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@b0/&T
+d*^:keCN7(g"P39h;7&Ii8N_VjQ,Fbk3(slrTX@Irp0+@rp0RKrTX@Gs6'@C!p/M(ro4%=iVqa>
+hqm5Gh;$cag(N)kf@SU)e^W*tda?Ihcd'h\bl5e5b/q`Ga2Z*:_ns:,^q[Xu]tD"i]",A]\$i]O
+Za6sBYct=6Xf\Y(Wi;qpVl$;dUS=HUTV%gISXc1<R@'A.QBd`"PEM&iO,o<\N/W[PM2@%CL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS+NFE;MDEH,r9DJj<-Chmg$C&VcMB4b^dA7T3L@KBnFra,_5?![G7
+!aAi3r`K;)=',B%s&K(urDW_os&&_ks%iYir([/as%E5]r^m&Zq+(BQqaL0Gpd=[?mm3?@$hEZD
+h:'WmbKA&Rao9<a`lH$9`PVVi%_o`j^:q.e\[f5[\[]/WrO3<I\$i`P['mBO[Bm6FYHY>3YQ;/@
+m^DIJr'LBMqaCHQs$lrW!_>mSr^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BP;-rD/O<4
+EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR%'V;T:r$UVPpMqXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^
+daZdtf@em4h;-uHiT&tZk2tmll0@X%mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh>PIjbp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPB;PCiXoTOo:7<NW5%=
+O8"b8Oo(7>Ont1>OT:L@OT:RCPQ-mHPlR'IQ2?gDQ2d'OQ'@MuQ26aAOT1IBOQqttP5(.>P5:C@
+PlHsFPlHsGP4OkrV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@b0/&Td*^:keCN7(g"P39h;7&Ii8N_V
+jQ,Fbk3(slrTX@Irp0+@rp0RKrTX@Gs6'@C!p/M(ro4%=iVqa>hqm5Gh;$cag(N)kf@SU)e^W*t
+da?Ihcd'h\bl5e5b/q`Ga2Z*:_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\Y(Wi;qpVl$;d
+US=HUTV%gISXc1<R@'A.QBd`"PEM&iO,o<\N/W[PM2@%CL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+N
+FE;MDEH,r9DJj<-Chmg$C&VcMB4b^dA7T3L@KBnFra,_5?![G7!aAi3r`K;)=',B%s&K(urDW_o
+s&&_ks%iYir([/as%E5]r^m&Zq+(BQqaL0Gpd=[?mm3EB'^<KAXeqe_R[BM1Q^F/+QBd\uQ'D92
+rf@;ENfB$VMuAM>Mi!=JLl$qCM2D4ere:i<LPLS:K7er6KnbD@mYL3qr'LBMqaCHQs$lrW!_>mS
+r^qW49MJ5V:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BP;-rD/O<4EccGJG^=^bIt3-'KnbD@N/`m[
+P*D5uR%'V;T:r$UVPpMqXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&tZk2tml
+l0@X%mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZh>5.aap%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+dEg+^bK7iE`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPA5a7n$$Enk]9\o1esS
+s%iDbs%`\m:J^sdrD35c"A_cf9hkU^peUrpr`]8'"'AW+<r,ku<`Srpqc2cZqH*Vts&],#qcE\t
+q,]OXV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@b0/&Td*^:keCN7(g"P39h;7&Ii8N_VjQ,Fbk3(sl
+rTX@Irp0+@rp0RKrTX@Gs6'@C!p/M(ro4%=iVqa>hqm5Gh;$cag(N)kf@SU)e^W*tda?Ihcd'h\
+bl5e5b/q`Ga2Z*:_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\Y(Wi;qpVl$;dUS=HUTV%gI
+SXc1<R@'A.QBd`"PEM&iO,o<\N/W[PM2@%CL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;MDEH,r9
+DJj<-Chmg$C&VcMB4b^dA7T3L@KBnFra,_5?![G7!aAi3r`K;)=',B%s&K(urDW_os&&_ks%iYi
+r([/as%E5]r^m&Zq+(BQqaL0Gpd=[?mm3HC#eY\"=BAHu:J:X\$r0Mj92&&T9MA)Q91o1V#YI`^
+84?'A8P/nPs%<;as%3Mf92/,R8kDYS9*7p`:/:^]mSE18r'LBMqaCHQs$lrW!_>mSr^qW49MJ5V
+:Jakb;H$Ln<`W:(=^#'8?=.)K@Us%^BP;-rD/O<4EccGJG^=^bIt3-'KnbD@N/`m[P*D5uR%'V;
+T:r$UVPpMqXfen6ZaI6O]"G_k^r"".`lQ9Fbg+P^daZdtf@em4h;-uHiT&tZk2tmll0@X%mI'H3
+nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-s%=~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7]jnp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk]kqIYO,Z[^iu\]=\'T
+!PQ5E^\knI_#V@N_#V:H_#_EhqSE?P`Q#staSs<]ao]c/b5KKabfft/s3:SfrltJgps&iI!k5\L
+r4)g=pUL=7\,<]7[fEr8\a6ou])]G8]DfGC]D&rlVl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9EbK\>Y
+dF-Oof%8R-g=tE=hV[8MioB([jo4BCkNMm/s6BXMm-O`;rp'IHs6'IGrT4@HjQ,@]io8qrhuV`l
+rnRV1g]#n1g"=p.f%'cLIac`mdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[T#U[C!9H
+ZE^X<YH=q.X/`2!W2HPjUnjc[TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@ILPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TF`__HEcQ/>"`SBtDJa4hCB80arb)LKAn>OaA7PUJ!F]C8?NOP>?2e(1
+>?Y50=TV],=8l8#<W?%s;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_66(@m&q!mP(
+f@%mdbK@rNaN)??`l5m6_SO"$^:h4o]t(Ya\@B#Y\@/cQ[f!W7[0a4L['mEM['6d<rNH@.[C>V5
+lTtG8r^6QNs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h;cQk!='8[1>[1TB?t*SUAS,UiCMRd)E,fr@
+G'A4XI!pKpJqJc4M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UC\%0)_]t_A"_o9X:aihoRcdC1j
+e^i@*g=tH>hr*JRj5oFckiq?tm-G&GmdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*=s*t~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7][ip%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk]8JC2nNKMuJ\7NW"n7
+O8Y1>Oo(7>OnXt8OT:RBP5pjHPlR'IQ2?gDQ2d'OQ'@MuQ2$U>OT1FCP37tsP5:=?P5:CBPQ6pC
+PlHsIP5^XFP5CFCPl?k#Vl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9EbK\>YdF-Oof%8R-g=tE=hV[8M
+ioB([jo4BCkNMm/s6BXMm-O`;rp'IHs6'IGrT4@HjQ,@]io8qrhuV`lrnRV1g]#n1g"=p.f%'cL
+Iac`mdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<YH=q.X/`2!W2HPj
+Unjc[TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@ILPCP;KS+o/JUi9#IXQWlH[:!`G^"@T
+F`__HEcQ/>"`SBtDJa4hCB80arb)LKAn>OaA7PUJ!F]C8?NOP>?2e(1>?Y50=TV],=8l8#<W?%s
+;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_66(Ir[e[VocV4X9Grg4(ZQ^=#&PEV5p
+PEM(-OT1@@N;nh6M?&M2L]W?gM>i8AL51M=MMHq@KnP,6KnbA<MXQAe62X(K6i0:O7K5jU7t+!#
+8P2TJ92&&S:/=\_;,U=k<E<.%=]ns6>[CcF@U`kZAnYmoCMds.EH?5FGBnL^I=Hd!K8#);MN!OU
+OckroR$jG6StMdPUo1/kX0&S0ZEpsJ\[oGe^VI_(`Q$!@bKS8XdF-Opf%8U/gYL]Ci8N_VjlY^h
+l07O#lj<(In*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD5>J,~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7][ip%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk\8c6V'gC:@q?]:@q9I
+:Adoe;#X8c:]sQh:/+I^:A.N]>5_S(=SGkt<`Srpqc2cZqH*Dnr)`eupfB/IW2cr$YHY==[C<]X
+]Y2(q_Sa@4aN;TJc-FY_daZdtf@\d1gYCWAhr*JQj5]4^roO7Ekl'cGlMp2:m/H>MlM]uIkQ'fE
+jp1#/jQ#:[io0mp!T2c5h#Z<crn7P/f[na+ec+'Ie'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]=PP`\$i`Q['R*EZ*:I9Xf\\*WiE%sVl-DfUnaZXTqJ$LSt):>R[KP1Q^3o$PEM)kOH5H_
+NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEcH(&E,TW3D/B2e!GZ?JBEi*]AS#C_
+A,]p<@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3>bqb$iZrCH`SrC6]R
+oL/IAoKr"4T)T)MQuH>4<_uXirCm>e9hkU\"\hZ`9M8(V8cq^W7nEVN#"M6S7nH9Fr^m,_&PYnk
+8OlEH8kVlP:/+GY:/+IO:?t4D6N0@L7/o^U7f>i+84cBF8kVfN9heAY:f("e;c?[s<``F,>?kE>
+?XR>PA7]@dBkqL$DK'T:FEVkRH@1-jJ:`E-LP^nINK93bPa.W(S"-(CTqeE]W2co#YHY==[C<]X
+]Y2(q_Sa@4aN;WLcHjndeCE.%g"P3:h;@/Lj5]7`k32'olg3sEmI'H3nF?)?oCW%T!quB_rqQNh
+s8)Zjrqucoo_sFAS,\!~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7ZNerq0FdoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!RLk]YfH%D!LWkQ$T]DfGD
+]tXBYr4r9IrP8<H!5STM!lDdirPAcW`Q#s>aiOJ's2kDdb0'\+!R/abbl>ofbl5lecM5WacMY*P
+\%&sI\c027\H04Lr3cX8\G`u&](3H5](`i7]E#S?]JZUcWiN8*Yd1UC[^`l\]t_A"_o9X9aND]N
+cHjnde'ut#f\,!5gtgiEi8N\Uj5f=ak3(pkrosIJs6KRKp$MVBs6K[LrTOCIkNDj,s5a7Aro=%<
+!9*q8!T2c5h1+57g=k65f[na+e^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]",A]
+\$i`Q['R*EZ*:F7Xf\\*WiE%sVl$;dUnaZXTqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H_NJrdQM2@%D
+L5(D8K7ec,J:N,uI=6KiH?omCG^"@TF`__HErL%^E,TW3D/B2e&8GomBP1siAS#C^@q&nU@:9(A
+!a]/<r`fM/>$Co.!a&N*r`9&!s&Atrs&/kor)!Dhs%`Jds%NDbqb$iZrCHcTr'pTQoL/IAog8(4
+Sc:bAl/:@FbKS/Pb0.oIa2Q$8_Sa:-^V7Fs]Y;%g\[f5\\%/uV[(!KP\$rlV[C3HN[C*KPZEpg>
+Yd484!4D4&lp:P9rBpHMs$crWr^ZuZ!(m/^InNI/9heAY:f("e;cHat<`iL->?kH??XR>PA7]Ce
+BkqO%DK'T:FEVkRH@1-jJ:`H/LP^nINfT<cPa7])S"6.DTqeH^W2cr$YHY=>[^WfY]Y2(r_SjF6
+aND]NcHjndeCE1&g"P3:hV[8Mj5]7`k32'olg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)]krVZZn
+o_sFAS,\!~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7ZNerq0@boCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!RLk]2FB5Mg?K9(ujNW"n7
+O8Y1>Oo(7>OnXt9OoLUDP6R88Pa%GuPl?sEPl$^LPa.JtQ'M-/!1!8>kE5.pr/puAqih&C"I#(7
+P*>a,qNCoBrKI5F25dCQX0&S0ZEpsI\@K8c^VI_(`Q#s>b0/&TcdC1ieCN7(g"P39h;7&IiSrnX
+jQ5OdkND(.l2U&Klhg&AmJ?2Lli-2JklU)3kPjWDjT+B@j8\*=iVqa9hqn@gJ)&f4g=b03f@SU(
+eC;srda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6sBYck43XfSS'Wi;qp
+VPU)aUS=HUTV%gHS=?":R@'A.Q'IStP*1rhO,o<\N/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH3nkA
+GB\4QFEDSErc&*\Df0H0D#S2]C2%?pB4kgfARo:\@U`bS@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"
+<;ohr;ZBVl;#a>k:Adid9`@]^9)_E\8GYjS7f5^I7/0.B6LI.3rsIo'ZE:!sSsYq5R/WHPQMcpH
+P5UIIO,]*WMN!FLreg]2"c8%jLkpoeL]<).L'rfmL5(A6K8528Kno&Olp:P9rBpHMs$crWr^ZuZ
+!(m/^InNI/9heAY:f("e;cHat<`iL->?kH??XR>PA7]CeBkqO%DK'T:FEVkRH@1-jJ:`H/LP^nI
+NfT<cPa7])S"6.DTqeH^W2cr$YHY=>[^WfY]Y2(r_SjF6aND]NcHjndeCE1&g"P3:hV[8Mj5]7`
+k32'olg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)]krVZZno_sFAS,\!~>
+JcC<$S,`-[rr)ior;6Njs7uZhs7ZNerq0:`oCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>n4Q'@GnO,T!RLk\5`7S$'C:%_<]:@q9I
+:'"-er_NMir_N;c!)NSh!)<Gfp.t`dpKIQ!!*Jts!EN4s<;fhj<rZ7l<qobr=T;J$=Sc+u=SZ#U
+Vl6VrXfnt7ZaI6O\\,Vj^r"".`lH0CbK\>YdF-Lnf%8R-g=tE=hV[8MioB([jlY^gkNMp0s6BXM
+qs="CqX"7Jrp'IH!pJh1roX7B!9F.>s5F%;rnmh7hYu>\gtUQ:g"G$0f@JL%eC2mpdF$=ecHa\Y
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(hd\[],W[^EKKZa-j?YHG"0XK/A$WMl_lV50o^U7n9RT:VUD
+S"#k7R$a5*Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2Jq8H&IsufoI!^0c$$gc>GBS+NFE;L%E<U<"
+DJj<-rbE'[BkV0mB4b^dA7K+Y@UW\Qra,_5?![G7!aAi3r`K;)=',B%s&K(ur_rhps&&\js%iYi
+r([2br_*,\r^m&ZqFCHQr'g6Gpd=^@mQmQH$2h;`@THN0;,Bs`:&[fi9hS)P92,=W"%u3Y9DqC&
+8k;NF7Rp'A8kMZH91quO9M7uM91hiP9MJ8V9hnFM:@(:E6N':K7/o^U7fGpX8,u6\8q0K-9MJ5V
+:Jakb;H$Op<`W=*=^,-:?=.)L@Us%_BPD6uD/O<4F*)SLH$XjdIt3-(L51VCN/is]P*D9"R@Bb=
+TV8-WVl6VsXfnt7['mHS]"G_k_8=.0a2lEHc-FY_daZh!f@em4h;7&IiT&t[k2tmll0I^&mI'H3
+nF?PL!V>s_o`Fj]p\ssfq>^<iqu-HlrUg)?s-s%=~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]*TLk^V)H[gm<T>.tLrk&9F
+^AG\E_#M1F_#D1K_#(tH_?Ros`lH0BaSj3_b0.rMqTJf\r6>5dq9Aoa!4Vj6s0i!<rji$>rj`$?
+qmca;\,Ni9[fEr;\`^R#]DK24]CrloVPpMqXfen6ZaI6O\\#Mg^r""-`Q-'BbK\>YdF-Lnf%8R-
+g=tE=hV[8MioB([jlY^gkl0iHlMp2Jm/?>HmelJLm/QDOlM]uIkQ'fFk5XNCjSn0Wio/kSi8<GK
+h;-lAgY1B7f\"g-f%&:"e'e6CIaHEdcHXSVbK@rJaN)<>`Pf[2_SO%&^V.:m]=PP`\@8oT[C!9H
+Z*:I9Y-"h-X/`1uVl-DgUnjc[TqS*MSt2C@S!ob4Q^3o%P`q8nOcYWbNf8pTMM[1GLPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TF`__HEcH)<E,TW3!GuZPCCk5pBP;$kAn>Oa@q/tW@:<RC?NOP>?2e(1
+>?Y50=TV],=8l8#<W?%t;u]bq;>a8j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_66(n6)p?Uht
+f[.gaai_]Ia2c0;_ns=1_8*h#^:_(k\[T)[\$iiU\$WXC[KX1K[C3HMrj2j:['[*AYPk[,Z*h(0
+[d-6W6N':L7/fXT7fGpX8,u6\8c_RYr_7Z5:Jakb;H$Op<``C+>$G6;?=.)L@q9.`BPD6uDJsK6
+F*)SLH$XjdJ:W?+L51VCN/is]P*M?#R@Bb=TVA6YVl6VsXfnt8['mHS]"Gbl_8=.0a2lEHc-F\`
+daZh!f\,!6h;7&IioB(\k3(smlKdg'mI'H4nc&([oCW%T!VZ9dq#C0iqYg<jr;HTdrdk*=s*t~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]*TLk^UnB5)F6J<BhjrJpc9
+oT9$6plPE9!0[>F#*b=9Pa.Jtrg!>Eq3CuErg!;DrfmJGooT'5!0Zi6l]V70rf[/BrK72FP5^[@
+PkUA!PbtCZX0&P/ZEpsI\@K5a^;.V'`5Td<b0/&TcdC1ieCN7(g"P39h;7&IiSrnXjQ5OdkNMp0
+s6BXMr9XCLq!S(Iqs=@Ks6BRIs6'IGroX7B!9F.>)<0W6i8EMMhVI#CgtUQ:g"=s/f@JL%eC2kF
+d=0HgcHa\YbKJ&MaN2EA`Pod5_SX.)^V@Ip]Xtbc\[],W[^EKKZa$a=YHG"0XK/A$W2HPjV50o^
+U7n9QSt;LCS"#k7R$X,(Q'@JqP*(ieO,f0XMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nK
+F)l8?E,]`5D?4TjrbE'[BkV0mB4b^dA7K+Y@UW\Qra,_5?![G7!aAi3r`K;)=',B%s&K(ur_rhp
+s&&\js%iYir([2br_*,\r^m&Zq+(BQr'g6Gpd=[?mm3ZI&_4=mWMH,TR$a5-Q^F))P`q=1Op[;5
+OH5K_N/WXOMuAJ?LP^hDM2$hBM2-nBreCH.#)J"fL4b,3reCH.!/g6$lTtG8rBpKNr^HiVr^ZuZ
+!(m/^!D?,c9mKK0:f("e;cHat='/U/>?kH??XR>QA7]CeBkqO&DfB];FEVkRH@1-kJV/W1LP^nI
+NfT<cQ'Rf*S"6.DU84W`W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Nj5]7`
+kNM0qlg4!*mdKZ8rpg*]o`"Lap@nO\s7u]krVQTlrVcBfJcD5>J,~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi2hlUnOHQS=>q5Q'@GnO,]*TLk^UO6:4479MkIZr_E)[
+lqRRW;#X8i;#X8c:]O;f:A.N`;#jhs>5DA%=T2A%=Sl/#<`T&srDiMkr)`SmnlPinpfIJtqc>VO
+W2co#Y->4<[C3TU]=bkn_Sa=2a2lEHc-FY_daQ^sf@\d1gYCWAhr*JQj5]4^k2tjjrosIJs6KUL
+rU'CJr9aCJs6K^MrTX@G!9a@Ds5a7Aro4mUiSi_Qhr!;Hh;$f?g=k64f[na+e^W*tdf.XCd*L"_
+c-4ASb/q`Ga2Z*;`5BI/_8*h#]tD"i]",A]\$i`Q['R*DYct=6Xf\\*WiE"qVl$;dUnaZXTq@pJ
+SXc1=R[KP0QBd`"PEM)kOH5H_N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r:
+Df0FnD/B2e&8GomBP1siAS#C^@q&nU@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Atrs&/kor)!Dh
+s%`Jds%NDbqb$iZrCH`SrC6]RoL/IAoKr"4U]1YPQZ$)-<)?Ce:&Ra*9hnAV9hS/Q92%uM8k_iL
+91h]E84c?D7n?3C8H)6]8I%m_9M.rM850"U!)3>c"A_ce9i(7RlTtG8rBpKNr^HiVr^ZuZ!(m/^
+!D?,c9mKK0:f("e;cHat='/U/>?kH??XR>QA7]CeBkqO&DfB];FEVkRH@1-kJV/W1LP^nINfT<c
+Q'Rf*S"6.DU84W`W2cr$YHY@?[^WfY]Y;.s_SjF6aND]NcHsteeCE1'g"P6;hV[8Nj5]7`kNM0q
+lg4!*mdKZ8rpg*]o`"Lap@nO\s7u]krVQTlrVcBfJcD5>J,~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0OgoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7Q'@GoO,]*ULk^V#H@L^5T!c/A]=bei
+qS)pCo"b7@s1eWNrPAZS`Q#staSj6Zb50<Zbl#`bcM>``cMb6L[f<f:\Gj&8])0#<\G`o:\,a)&
+\cB55\coXU]">Maq7H[>!5&6C!5&3B1T.4QXfen5ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Lnf%8R-
+g=tH>hVd>NioB([jlY^gkl0fJlKdd7m/HDBmeuPNm/QDOlM]rKki_..k5XNCjSn0Nio/kSi8<GK
+h;-l@gY1B7f`'KOf%&:"e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_8*h#^:h1l]=PP`\@8oT[Bm3F
+Z*:I9Y-"h-X/`.tVl-DgUnjcZTqJ$LSt2C@S!o_3Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TF`_^HF)l8?E,TZ4DJa3*CMITuBP;$jAn>Oa@q/tW@:<RC?NFJ=r`oJ-
+!*]>(!a&N*r`9&!s&Atrs&/kor)!Dhs%`Jds%NDbqb$iZrCH`SrC6]Ro0i@@og8+5U]3FToBG2d
+ccXAOb0%iHaMl*9_SX4,^qd^u]t:kd\$rlV[^`cS[(!KP\$icR[C!<K['[0K['[*AY-5/1YQ;,?
+m^DFIr'L?Lr'^NQs$luXs%!,]r^m2a9`@b8:/=\_;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402
+EccGJG^=^bIXm!%KSG8=Mi<[WP*;/sR$sM8StVmSV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>Z
+dF6Uqf@\d1gtgiFi8WeXjlYail0@U$m-X91nF?)?oCMVSp&F^cp\jjgq>0scqu6NlrUp/@s-it<~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7Q'@GoO,]*ULk^UjA86(-IuF;crf6i9
+ooT-7plPE9!0[8Ds-*SMPa)04qNUf@s-3MJq3:iCrK6c7rK7)Bo9&4!!g&S.qih#B!0R8D"-AY/
+PPLFCP5^XFP5^Y%Pc(L]Xfen5ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Lnf%8R-g=tH>hVd>NioB([
+jlY^gkl0fJlKdd7m/HDBmeuPNm/QDOlM]rKki_..k5XNCjSn0Nio/kSi8<GKh;-l@gY1B7f`'KO
+f%&:"e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_8*h#^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h-X/`.t
+Vl-DgUnjcZTqJ$LSt2C@S!o_3Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`
+G^"@TF`_^HF)l8?E,TZ4DJa3*CMITuBP;$jAn>Oa@q/tW@:<RC?NFJ=r`oJ-!*]>(!a&N*r`9&!
+s&Atrs&/kor)!Dhs%`Jds%NDbqb$iZrCH`SrC6]Ro0i@@og8+5V#M.k^Tsr=T:M@9R$a5,QBd`!
+P`_,mrfI/@"-/A!MuAM<M26qBLl$qBreUQ/"bh\cLPL]bLAlf*L]2u.Ll(PUlTtG8rBpKNr^HiV
+r^ZuZ!(m/^!D?,c9n#i5:f(%g;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(VH[U?nJV/W1
+LP^qJNfT?eQ'Rf+S"6.EU84W`WN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hVd>O
+j5f=akNM0qlg4!*n*fc9o()DDo`+Uap&Ojcp]C9fqY^6ir;HTerdk*<s*t~>
+JcC<$RfE'[rVc`nrVQWks7uZhs7ZNerq0=aoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oG`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7Q'@GoO,]*ULk^UM6psO992>@[r_WPh
+!)E5^lq[ISr_WSiq,%)eqG-`\rD<Pur`fA*p0%;qqc<f!<W#er<Us2h=9)Ft<o6t7Vl?`!Y->1;
+[C3TU]=bkm_8=.0a2lEHc-FY_daQ^sf@\d1gYL]Bi8ESRj5]4^k2tjjrojLLlg+N9rpB7DrU'OL
+s6K^MrTOCIkNDj,s5a7Aro4RLiSi_Qhr!;Hh;$c>g=k64rmuVMe^W*tda?Ihcd'h\c-4ASb/q`G
+a2Z*;`5BI.^q[Xu]tD"i]",A]\$i`QZa6sBYct=6Xf\\*Wi;qpVl$;dUnaWWTV%gISXc1=R[BJ/
+QBd`"PEM)kOH5E]N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEARFEcH)<Df9N2D/=!'
+C2.HrBP1phAS#C^@q&nU@:9(A!FB(2>lS".>5_S*=BAT'<rZ2"<;ohr;ZBVl;#a>k:Adid9`@]^
+9)_E\8GPdS7f5^H7/0.B6LR4;rsJM/J7D\^<)?@`9DhHe9hS2T:.tR[r^m/ar_!2\#Y7NX84Q3B
+84ieQs%*Gg9M7uO8P)VT8cqa[9htU\!DZG[:?t4D6N':L7/fXT7fGpX8,u6\8c_RYr_7i::Jakc
+;c?Xq<``C+>$G6;?XI5N@qB4aBPM=!DJsN8FEMePH@('hJ:W?+L51VDN/is^PEhH$R[]k>Tq\?Z
+Vl?\tXg#(:['mHS]=bkm_8=.0a2lEHc-F\`e'uq"f\,!6h;7)JioB+]k3(smlKdg'mI0N5nac8B
+oCW(Us7QHerV-HiqYL-erqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoiq([o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNJraOL4t8'H%:pFV8U!Y]Y40U
+rP.a8!5\WN"2i*ta8X-^aiMTGrQ=u[qoo#`rm(>ar6>;eqmZI2s0i!<rjhm:qmlX7s1.7&!4hg7
+rOW'@qn)X93P22gWi`G.Z*UgG\@K5a^;%M$`5Td<b0/#ScdC1ieCN7(g"P3:h;7)JiSrnYjlY^g
+kNM0plK[^6m/HDOme#uHmf)VOm/QDOlM]rKki_..k5XNCjSn0?io0mp#2e:oh;-l@rn;VMf[na+
+e^`1!e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Y-"h,WiE%s
+Vl-DgUnj`YTqJ$LSt2C@R[KP1Q^3o%P`q8nOH5H_NJrgSMM[1GLPCP;KS+o/J:N,uI=6Kird#$!
+G^"@TF`__HEcH)<DuOV]D/=!'C2%BqBP1rVAHuaU@q&nU?srt@!FB(2>lS".>5h\)=T;J%<rZ2"
+<;ohr;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6LR4:rt+hfjkn\8bK7iIaN;HB`Pf[n
+_Z.@^^:h7l]=GG\[^WZP\$i]P\,3T5ZiIN5[/[N7['K\8!3uO-!joDFn$_LIr'L?Lr'^QRs$lrW
+s%!,]r^qW49MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit]B4u$qCi402EccGJG^=^bIXm!%KSG;>
+Mi<[XP*;/sR$sM8T:r!TVPgDnXKJe4Za@0N\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\g2gtgiFi8WeX
+jlYail0@U$m-a?2nF?PLs76Edp%A%Pp\jjgq>0scqu6NlrUp/@s-it<~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoiUkXo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNJraOL4t7iAo2^?Jru&lNr"h/
+OT(C;OSk4@P5UUDPQI,7Pl?sEPkgUEPl?sDPl$aCOnFh7OoCO9OlV]'PP:4AOckq(Pl-_*P,G:Z
+Xfen5Za@0N\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R-g=tH>hVd>NioB+]k2tjikiq?slKeE8rpB^Q
+o^DbHrpBXMs6K^MrTOCIkNDj,s5a7Aro4%=iVqa>hqm5Gh;$cag3D<'f@SU(e^W*tda?Ihcd'h\
+bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\Y(Wi;qpVl$;dUnXQVTV%gI
+SXc1<R@'A.QBd`"PEM)jO,o<\N/W[PM2@%DL5(D8K7ec+J:E#rI=-D@H4>.EGB\4QFEDSEEH,r9
+rb`'[Chmg$Bk_6oB4h-S#@q=S@U`bR@/aL6?=!P8s'#J,r`T8's&]2#s&K(ur_rhps&&_kr_NPh
+r([2br_*,\r^m&Zq+(BQr'g6Gpd=[?mm3lO$2`/ZXfA1gS!fZBQiE<PP`q7/P5gXCNt%&+N/EON
+Mhm4ELPL\AqhGK4Knb>;LPU\?LAlf0L4t>9M27&XM!@;(6N':L7/o^U7f>jW8,u6\8q'E,9heAY
+:f("e;c?Xq<``C+>$G6;?XI5N@qB7bBPM=!DJsN8FEMePH@('hJ:W?+L5:\EN/j!_PEhH$R[]k?
+Tq\?[Vl?\tY->1;['mKT]=bkm_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mdKW6
+nc/1[o*+dZp%J+RrV-HiqYL-erqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoiC_Vo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNJraOL4t7J7S$'D:&Ifd;#O/i
+:A[cK:Adoe;#X8d;#a>f:&n)a;#=,i=T_i3>$CN#r)iht!EN5"<<#th<WH5"=9)G!<o@%=Vl?\u
+Y->1;['mKT]=bkm_8=.0a2lEHbg+P^daQ^sf@\d1gYL]Bi8ESRj5f=ak3(pkl07Kuli$2LmJcPG
+n,;\RmJQ>Nli68KklU)3kPjWDjT+B@irS/urnn"<hVR)EgtVh^GhLa$f@JL&eC;sqdF$=ecHa\Y
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfJJ%WMl_mVPU)aU7n9RT:VXF
+S=>t8R$a5+Q'IStP*1ofO,f3YN/NRMM26qAL4t;5K7\W(IsufoI!bj=%=*2BGBS+NFE;JBEH#jq
+D@15sCMR[!BkV0mB)Z?HA7K+Y@UWYPra,\4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>j>j:]F2f
+:&dod9D_?\8c;3U8,YpT7J'"C6hE_66)aenc'*$K;c6Fg:JFMT92&%Y9a+3b9M8)Sr(72c84lBC
+8OuAM8H2<^8IS-^92%uN9M%cJ91__Q9a4?g:/4MZ:[q3F62X(J6i9@P7K5jU8,l*[8cD>292&&S
+:/=\_;,U=k<)lt#=BSg3>[:]D@:E_XAnPdlCM[m,EH6/DGBeF\I=?]tK7nu8M2R=QOHPfmQC+,1
+SY)UMUo(&hWiWA-Z*UgG\@K5a^;%M$`5Td<b0/&Td*^=le^rI-g>(N@i8EVTjQ5OekiqBum-O0/
+n*olIo)J:bo_%nNp@nO\!r;]hr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoiC_Vo()>?n*f]3m-O$%l0%3kjQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n3MS!o_1Q'.8jNf8jPLP:A$H@C^6TDlJ'^%K)>
+^\>PC^\kkI_>V4X_o0R7a2l?DaN;R&b50<Ybl#`ccM5Z_cMl)a\,3W6[fEr;\biu7\c92;\am?,
+\H9:O\b<W.]D&rsWN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]McHjnce'uq"f\,!5gtgiFi8N\UjQ5Od
+kNM-ol0@U#rp9XOrpK7DrpKdQrTsRMs6BRI!pJh1roO:DjQ-=#!TN);huV`lrnRV1g]#n1g"=p.
+f%'cLIac`mdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<YHG"/X/`2!
+W2HPjV50l\TqS-OSt;LBS!ob4R$X,(Q'@JqOcYWbNfB!VMi*@JLkg_=KS+o/JUi9#IXQWlH[:!`
+G^"@TG'.nKF)l8?$?0p$DJa6,CMR[!rb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k+=oVV(=8l8#
+<<-"s;u]bq;>j>k:]=,e:&dod9D_?\8cD9V8,PjS7J'"C6hNe66)af1qsN\*f[%^_aiMWH`lH':
+`50=,^VIY!^:Ute\@B#W[C*HO[Bm@@[/mYBrNlg9['[6IZEUP1YQD):\*g]i62X(K6i0:O7K5jU
+7fl4Q8cD>292&&S:/=\_;,U=k<*!%$=BSg4>[CcF@:E_XAnPdlCMds-EH6/DGBeF\I=?]tK8#&9
+M2R@SOHPfmQ^F52StD^NUo(&hWi`G.Z*UjH\@K5a^;%P&`Q$!@bKS5Vd*^=lf%8R.g>(N@i8EVT
+jQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoiLeWo()>?n*f]3m-O$%l0%3kjQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n3MS!o_1Q'.8jNf8jPLP:@hB52I4J<0\iqN(91
+rfQu;r/h,FPEM)mqiq)FqNUoC"-f(9Pl6mBPkp[@OnFh7OoLU9Om/#1Ockn*PQ$aFOnb+>P67&5
+PEbp-2lWgYXg#(:['mHS]=bkm_8=.0a2lEHbg+P^dF6Uqf@\d1gYCWAi8ESRj5f=ak3(sll07L!
+li-8MmJcPBn,DbSmJZDOli68KklU)3kPjTFjlGM%irS/urnmh7hYu=3gtVh^"khP[f@JLOe:,lp
+dF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f2X[^EKKZa-j?Yck43XK/A$WMl_mVPU)`
+U7n9RT:VXFS"#k7R$a5+Q'IStP*(ieO,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'8"M
+FE;JBE=-Z'DJj<.Chmg$C&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&B%urDW_o
+s&&_ks%iVhr([2br_*,\r^m)[q+(?Pr'g6Gpd=^@mQmiP#i3(qXJDMZR$di="-o+9Pl6aSOHGQ`
+OH#6YMi*CKLku"b!f2VfrJ(]6KnY8:LPU\@LAlf0KS>,7LPUiUM!@;(6N0@L7/o^U7f>gY84cDP
+8q'E,9heAY:f("e;c?Xr<``C+>$P<=?XR;O@qB7bBPM="DJsN8FEMePH@('hJ:W?,L5:\ENK90a
+PEhK%R[]n@Tq\?[Vl?\uY->1;[C3TU]=bkm_Sa@4aN;WLc-F\`e'ut#f\5'7h;7)JioB+]k3(sm
+lKdg(mdKW6nc/.boCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Nj!;ZTg!Vc<eoi:YUo()>?n*f]3m-O$%l0%3kjQ#7Yi8<AGg=k32e^W'q
+d*BnZb/hWB`59=)]tCqe[^EHIYcb+/WMcVhU7n3MS!o_1Q'.8jNf8jPLP:@J5X\+6r(m;grD*Dg
+r(Z9JrD3Dhr_N>d!)NSh!)<Gfs%i>bqGI/nr`\nrrE/nts&T%tnl>`lrE0)$r)VcX2lWgYXg#(:
+['mHS]=bkm_8=.0a2lEHbg+P^dF6Uqf@\d1gYCWAi8ESRj5f=ak3(sll07L!li-8MmJcPBn,DbS
+mJZDOli68KklU)3kPjTFjlGM%irS/urnmh7hYu=3gtVh^"khP[f@JLOe:,lpdF$=ecHa\YbKJ&M
+aN2EA`Pod5_SX.)^V@Lr]Y(kf\[f2X[^EKKZa-j?Yck43XK/A$WMl_mVPU)`U7n9RT:VXFS"#k7
+R$a5+Q'IStP*(ieO,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0cH$FOWG'8"MFE;JBE=-Z'DJj<.
+Chmg$C&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&B%urDW_os&&_ks%iVhr([2b
+r_*,\r^m)[q+(?Pr'g6Gpd=^@mQmoR$g=@0@96H*;GTqZ9DqO19hS2S:/";T9M8#Q91hcH7n?3A
+84Z<C84lKG8OuHH9M.oN8kK"T!)!,_"&DZe:&[rY:?k.C6N0@L7/o^U7f>gY84cDP8q'E,9heAY
+:f("e;c?Xr<``C+>$P<=?XR;O@qB7bBPM="DJsN8FEMePH@('hJ:W?,L5:\ENK90aPEhK%R[]n@
+Tq\?[Vl?\uY->1;[C3TU]=bkm_Sa@4aN;WLc-F\`e'ut#f\5'7h;7)JioB+]k3(smlKdg(mdKW6
+nc/.boCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Njs7uZh#5@ibp%@tKrpj%YnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCIuG^G((TXMMGrk8*@
+!5JEHqS2sD!5\WNs2+oW`lJ&!rlP/^qTJc[r6>8eps&c_rQP>PpUC.1r3l[9dCB:f\bE]0]D0#n
+W2cr$YHY@?[^WfY]Y2(q_Sa@4aN;WLcHjkbe'uq"f@em4gtgiFi8N\UjQ5OdkNMp0!p]+;rp9[P
+s6f1@rpKgRrTsRMs6BRI!pJh1roOIIjQ,@]io8qrhuV`lrnW(ZgY1B7g"=p.f%&:"e'c[ldEp4b
+cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xt_b\@8oT[C!9HZE^X<Y-"h-X/`2!W2HPiUnjc[TqS-O
+St2C@S!ob4R$X,(Q'7AoOcYWbNfB!VMi*@JLPCP;KS+o/JUi9#IXQWlH[9uSH$FOWG'.qLFE;JB
+EH#i6DJa6,CMR[!rb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k+=oVV(=8l8#<<-"s;u]bq;>j>k
+:]=,e:&dod9D_?\8cD9V8,PjS7J0(D6hE_56)sqinEJueeBZ7ZrlG,[(rXD1_SO(']t_Cr]Xt_`
+[^W]P[C*HOZaTk?&@T!S['[-GZEpmEZa-g=Ycn#0!OT?([cp*V6N':K7/o^U7f>i(84cBF8kVfN
+9heAY:f("e;c?[s<``F,>$P<=?XR;OA7]@dBkhF#DK'T:FEMePH@1-jJ:`E-L5:_GNK90aPa.T&
+S"-(BTqeE\VlHf"Y->4<[C3TU]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;@/LioB+^k3)!n''efL
+mI'H3nF?)?oCV\Jp%J.SrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Njs7uZh#5@ibp%@tKrpj%YnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCIf@qT_(IYs/GqN'j%
+qiUl@s-*AFrg!>Er07AKQ'IU4Q2$U?PlR-DOoCIAOnt1>OT:L5Om%r/Oco^-rf[5Bq3(H80rV+R
+Xfnt8['mHS]"G_k^r"".`lQ9Fbg+P]dF6Uqf@S^0gYCWAi8ESRj5f=ak3(t-klU/9li-8NmJlV>
+n,DbTmJZDOli68KklU)3kPjTKjlGL_j5T(Wrnmh7hYu>\gtUQ:g"G$0f@JL%eC2jodF$=ecHa\Y
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(ke\[],W[^EKKZa-j?Ycb+1XK/A$WMl_mV50o^U7n9RT:VUD
+S"#k7R$a5+Q'IPrP*(ieO,f3YN/NRMM2-h?KnP)2Jq8H&IsufoI!^0c(O:7LGBS+OFEDSEEH,r9
+DJj<.Chmg$C&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&B%urDW_os&&_ks%iVh
+r([2br_*,\r^m)[q+(?Pr'g9Hpd=[?mQmrS%I:s<Xf%k`S!TM0Q^3p9PQ6mFOW9ICO,T'XMi*@K
+M2@"DLPCS>L5(J>Lkgb>Knb?]LB<9cK`6T-L4t>9M2CYVks>87rBpHMs$crWrC;3*8P)NH91qrQ
+9hnJ\:f1+h;cQk!='8[0>[1TB?t!MTAS,UiC27[(E,fr@Fa&(VI!pKpJqJc3Ll..NO-#NhQ'[l-
+S=Z@HUSOcbWiN8)Yd1UC[^`l\]t_A"_o9X:aihoRcdC.heCN7(g=tE=hr*JQj5f@bkNV4DlKdg(
+mdKW6nac8Bo^qhLp@n=\q#C0iqY^6ir;HTerdk*<s*t~>
+JcC<$RfE'[rVc`nr;6Njs7uZh#5@ibp%@tKrpj%YnF,f4m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCIL6UaI79288Yr_WPh
+!)EGdn4s!ZpeLc`s%rYiq+q&er_<Gfr_EJhp/(Q^!EWCg=TDRt<rc;!<W#kt=85er=8l;%=8GtY
+=#$YRXKA\1Za@0M\[oGe^VI_(`Q$!@bKS8Xd*^=le^rF+g=tE=hVd>NioB+]k2tjjrojLLlg+Q:
+s6]jSlL4`?s6]dOs6K^MrTOCIkNDj,#Nb%-j5].YiVqa9hqn@gJ)&f4g=b03f@SU(eC;sqda?Ih
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i\[f5Z[^NTNZa6sBYct:4XfSS'Wi;qpVkp2bUS=HU
+TV%gHS=?":R@'A.QBd`!P*1rhO,o<\N/W[PM2@"BL4t;5K7\Z)J:E#rI=-BfH5CjOGB\4QF`__H
+EcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5h\)=T;J%<rZ/"<;fbq;ZBVm
+;#a>j:Adid9`@]^9)_E]8GPdR7f5^J7/0.A6LI.Aru]%2Alr#2;G^(^91qrP92/)S9hnAT9MJ,Q
+8kVcJ7n3JK!(m,[s%*bo8P2NH9MA&Q8kM`L9M/&Rr_3Pi9hnGX:B"&[:?b(C6N':K7/o^U7f>i(
+84cBF8kVfN9heAY:f("e;c?[s<``F,>$P<=?XR;OA7]@dBkhF#DK'T:FEMePH@1-jJ:`E-L5:_G
+NK90aPa.T&S"-(BTqeE\VlHf"Y->4<[C3TU]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;@/LioB+^
+k3)!n''efLmI'H3nF?)?oCV\Jp%J.SrqQNhs8)Zjrqu`np&9OBRf@m~>
+JcC<$RfE'[rVc`nr;6Njs7uZh?2+'dp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPCJ7G'e_!Q_VP!^%]85
+^BMEf^VIY$rk\lU_Sa@3`lJ)"rlP/^qTJ`Zr655eps&c_qoo2Q\@D":s1$Fds1/3@rON'@]"7[K
+q7JSbX0&S0ZEq!K\[oGe^VI_(`Q$!@bKS8Wd*^=le^rF+g=tE=hVd>NioB+]k2tjjl07Kuli-8N
+mJlVNn+H2Hn,DbTmJZDOli68Ll2TuIkPjTEjlHF$s5FOIi8EMMhVI#CgtUQ:g"?;UIb*'!eC2jn
+dEp7dcHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lq]Xtbc\[],W[^EKKZa-g>YHG"0XK/A$WMl_lV50o^
+U7n9RT:VUDS"#k7R$a5+Q'@JqP*(ieO,f3YN/NOLLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nK
+s)SWiEH,r9DJj<-Chmg$C&VcHB4h-S!G#^>@KBnFra5\3!+#S/!aAi3r`T8'!*B,"!``3!rDW_o
+s&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=^@mQmuT&bt_UiRZ>ub/hWE`Q#m8_o'=h^C@oj
+]t1b_\$icR['R3Lrj2[5rNm'?Za-sDZa7$FZ*1@8YHe)2!jf>Em^DCHr'L?LqaCHQs$luXs%!,]
+r^qZ59MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmoCMds.EH?5FGBnL^I=Hd!K8#);MN!OU
+OckroQ^O>5StMdPUo()jX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Uf
+l07L"m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Njs7uZh?2+'dp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPCJ7@V9J!H\.FWO6D])
+OoLLCOo:IBPQ$gGQ26aCPlm89Q'D64pltW?rg)r6plP*0jHBP,!KiQEOTLW,Ont4APEPa*26*^Z
+YHY==[^WfY]Y2(q_Sa@4aN;WLcHaeae'uq"f@em4gtgiFi8N\UjQ5OdkNM0plK[^7m/QJQmeZDF
+nG;VQmf2\Qm/QDOlMg&Jkl9iFjoOT)ro=%<%cQ@(hr!;Hh;$f?g=k64rmuVMe^W*tda?Ihd*L"_
+c-4ASb/q`Ga2Z*;`5BI/_8*h#^:_+j]",A]\$i`Q['R*EYct=6Xf\\*WiE%sVl$;dUnaZXTqJ$L
+SXc1=R[KP1Q^3o$PEM)kOH5H_NJrgSM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QFEIP(%<?H.
+E,TW3D/=$(CMIS_BE;aXrac+@A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDiu"<)ifps&/korD<Mi
+r_EDdr_3;aqb$iZr^ciTr'pTQoL/IAog8(4Y5]'d\#ua)Ssu+7Q^F,*Q'@MsrfR_PNf]6ZNf8pT
+M2I1IM#N/AL51M=Lk^\?L4t>9L51M=LkP_Z!/CK,!f;_jmYL-or'L?LqaCHQs$luXs%!,]r^qZ5
+9MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmoCMds.EH?5FGBnL^I=Hd!K8#);MN!OUOckro
+Q^O>5StMdPUo()jX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Ufl07L"
+m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcD2=J,~>
+JcC<$RfE'[rVc`nr;6Njs7uZh?2+'dp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<AHgY1?4f$r0r
+d*L"]bK7fD`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLPCJ76UXF891r"Y;#O/k
+:/+I^:Amu]:B"&`:B"&h;#O2c:]O;j:&n#f:B+,`;"mid<rc@g=TDRs<rc;#<W,ts<rlE)qc<Vr
+q,ZWZ26*^ZYHY==[^WfY]Y2(q_Sa@4aN;WLcHaeae'uq"f@em4gtgiFi8N\UjQ5OdkNM0plK[^7
+m/QJQmeZDFnG;VQmf2\Qm/QDOlMg&Jkl9iFjoOT)ro=%<%cQ@(hr!;Hh;$f?g=k64rmuVMe^W*t
+da?Ihd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:_+j]",A]\$i`Q['R*EYct=6Xf\\*WiE%sVl$;d
+UnaZXTqJ$LSXc1=R[KP1Q^3o$PEM)kOH5H_NJrgSM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4Q
+FEIP(%<?H.E,TW3D/=$(CMIS_BE;aXrac+@A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDiu"<)ifp
+s&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/IAog8(4Yl=mcT6+F?<;o]C9MS2R9M8)R92&)S
+8k_uS8kMcL7n6*?84Q3@84c?C8P2QG7nQHK8kf4V%80Ae9h\5T9h\8V9hnF]:\%9G62X(J6i0:O
+7K5jV8,l*[8cD>392&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiCMRd)E,fr@G'A4XI!pKp
+JqJc4M2I7OO-,TiQ'[o.S=ZCIUSOccWiN8*Yd1UC[^iu^]t_A"_o9X:aihoRcdC1jeCN7)g=tH>
+hr*JQj5f@bkNV6rm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;HTerdk*<s*t~>
+JcC<$RfE$Zrr)ior;6Njs7uZh?ha9fp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S8E-ZheNM!_n]_]>@
+^AbnD^AG\F_#2"P_Sa=2`lJ)"rlP/^qTAo`bP]T^c2Z)bc2GrablH&e\F6op\Dt-r])B/>])'&8
+]JZ^iXfen6ZaI6O]"G_k^r"".`lQ9Fbg"G[dF6Uqf@S^0gYCWAhr*JQj5f=ak3(sml0@U#rp0^R
+mdBu@r:'RQr:'ROs6fpSrTsRMs6BUJs6'IGroX7B!9F.>IcB>Fi8EMLhVI#CgY:H9g"=p.f%/C$
+eC2jndEp4bcHXSWbKJ&MaN2EA`Pod5_SO%&^V7Co]Xtbc\[],W[^EKKZE^X<YHG"0XK/A$W2HPj
+V50o^U7n9QSt;LCS"#k7R$a2)Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2*eJrnJ:E#rI=-BfH?jaZ
+GBS+NFE;JCEH,r9DJj<-rbDOLC&VcHB4h-S!G#^>@KBnFra5\3!+#S/!aAi3r`T8'!*B,"!``3!
+rDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=[?mm4/W)Y!"Lf[7mbb/jV_`Q#g6_ns:*
+^V7Is^:_"erjMj7#.1_F[^3?GrjDd5!4)U1$+.%HZa-g=Yck>2YQ;&=m'c1Fr'L?Lr'^NQs$luX
+s%!,]r^m2a9`@b8:/=\_;,U=l<E<.&=]ns6?!^lG@Uiq[B4u!pCi4-0EH?5FGBnL^I=Hd!KSG8=
+MN!RVOckrpR$jG6StMdPV5L8lX0&S0ZEq!K\[oGe^VI_(`Q-'AbKS8XdF-Opf%8U/gYL]Ci8N_V
+jQ>Ugl07L"m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?s-it<~>
+JcC<$RfE$Zrr)ior;6Njs7uZh?2+'dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S8?Y*qlG^tbJO62Q(
+OoCOCPQ$gGQ26aDQ2d'MQ'@O2Q2-[@Q2['MQ'U`uplP33j-'A)!g8\.rK%#AqN:iBqiWh:X0&P/
+ZEpsI\@T>d^VI_(`Q$!@bKS5Vd*^=le^rF+g=tE=hV[8MioB+]k2tjjl07L!li-5PmI'E>n,2\O
+nbhnQn,MhUmJZDOli68Ll2TrIkPjWDjT+B@j*p"HiS`YOhVR)EgtUT;g=b-1f@JO'eC;sqdF$=e
+cHa\Ybfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTNZa-j?Yck43XfSS'Wi2hnVPU)aUS=HU
+T:VXFS=?":R@'A-Q'IStP*1rhO,o<\N/NRMM26qAL4t;5K-#VqJ:N,uI=6KiH?sj]GB\4QFEDSE
+EcH)<Df0H0D#S2NC2*Z\!G?$DAH?=OraGn:@/aO5?3":1>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm
+;#a>j:Amod9`@]^9)_E]8GPdR7f5^I7/0.A6LR4FruL==ZE0prSX>_1QiI)NQB[VrP*1rhO,o9\
+Nf8pTrJCQ1"G_\dL5,\_'o7TuKnb88L51M:K7nl0L4t>9Ll%#VM!@;(6N':L7/fXT7fGpX8,u6\
+8c_RYr_7i::Jakb;H$Op<`W=*=^,-:?=.)L@q9.`BPD6uDJjE5F*)SLH$XjdIt3-(L51VCN/is]
+P*D9"R@B_<TV8-WVl6VrXfnt7ZaR?R]"G_k^r"".a2lBGbg+P^daZguf@em4h;-uHiT&tZk2tml
+l0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZh?2+'dp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f$r0s
+dEg+^bK7iF`PTI+^:_(g\$iZMYck11Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S86UO118PMtW:]O;h
+:Amu]:B"&`:B"#h;#F,b;#X5i:&[lf:]=/j;>F&_;?'Jj<rc@g=TDRs=8Q%s=8l;%=8Q"u=8,bo
+<rc@h=#I"YXfen6ZaI6O]"G_k^r"".`lQ9Fbg"G[dF6Uqf@S^0gYCWAhr*JQj5f=ak3(sml0@U#
+rp0^RmdBu@r:'RQr:'ROs6fpSrTsRMs6BUJs6'IGroX7B!9F.>IcB>Fi8EMLhVI#CgY:H9g"=p.
+f%/C$eC2jndEp4bcHXSWbKJ&MaN2EA`Pod5_SO%&^V7Co]Xtbc\[],W[^EKKZE^X<YHG"0XK/A$
+W2HPjV50o^U7n9QSt;LCS"#k7R$a2)Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2*eJrnJ:E#rI=-Bf
+H?jaZGBS+NFE;JCEH,r9DJj<-rbDOLC&VcHB4h-S!G#^>@KBnFra5\3!+#S/!aAi3r`T8'!*B,"
+!``3!rDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=[?mm4;[-2bB,Alr#1;G^%^9M=fh
+92/,S9MJ2P9MJ5R91qlI7n?0@8P)GM8-MUW84cEIr_*8`%80Ae9h\5T9h\8W:/=U^:\%9G62X(J
+6i9@O7K5jV8,l*[8cD<_92,=ZISN[8:f1+h<)lt"=BSd2>[:ZC?t*VVAS5[jCM[m+E,fr@G'A4X
+I!pKpJqSl6M2I7PO-,TiQC+)0S=ZCIUSXleWiN8*Yd1UD\%0)_]t_A"_o9[;aihoRcdC1je^i@*
+g=tH>hr*JRj5f@bkiq?sm-O--n*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD2=J,~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7]akp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^S8Cj:8YN1[KQ^%B&9
+^C\2q^qde&^r""-`Q#s>aN)C$aoBN[b5oi1qonZVrQb8as3CGMoXFe-!4VL.ijnlrr4)g=qRca>
+4MAD.Xfen5ZaI6O\\#Mh^r"".`lQ6DbK\>ZdF-Opf%8U/gYCWAhr*JQj5f=ak3(sml0@U#m-O-,
+mdC&BrUBFKrUB^Qs6fpSrTsRMs6BUJs6'IGroX7B!9F.>!TN);i!/)qhVI#Cg]#oVg"=p.f%&=#
+eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EHJZE^X<YHG"0XK/A#W2HPj
+V50o^U7n6PSt;LCS"#k7R$X,(Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOW
+"a5$1FE;L%E<U<"DJj<-rbDOLC&VcMB4b^dA7T3L@KBnFra5\3!+#S/!aAi3r`T8'!*B,"!``3!
+rDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gq*Xd@m6S)Y$1mBAhpfuqaiDF"s!GS#_ns7*
+^V.Cr^:Ukb[^ENM[C!<L[^3?G[C*BJZEgaBZEppFZMgs,Z2Us/ZaR@1[cp*U6N':L7/o^T7fGpX
+8,u6\8c_RYr_7i::Jakc;c?Xq<``C+>$G6;?XI5N@qB4aBPD6uDJsN8F*)SLH$XjeJ:W?+L51VD
+N/is]P*M?#R@Bb=TV80XVl6VsXfnt8['mHS]"G_k_8=.0a2lEHc-FY_daZh!f@em4h;7&IiT&t[
+k2tmll0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7]akp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^S8?"7MaFFT/CO8P+8
+O7SJ5OoCODP66u3Pa)04qNUrDs-*SMPa)-3pltW?rg!VNQBqN3l]Lt(q2s["r0./D!0R2@!0Qr;
+3ifBcYd(OB[^`l[]YD8!_o9X:aND]NcHsteeCE.%g"P39h;7&IiSrnYjlY^gkiq?slg*p(mHs?0
+rU9^SoC;eKqsXRQs6]dOs6K^MrosIH!9a@Ds5a7Aro4%=iVqa>hqm5Gh;$cag4.f.f@SU(e^W*t
+da?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`QZa6sBYct=6Xf\\*Wi;qpVl$;d
+UnaZXTV%gISXc1=R[KP0QBd`"PEM)kOH5H^N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GBX46
+F`__HErL%^E,TW3D/B2e!GZ?JBEi*]AS#C_A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDiu"<)ifp
+s&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/LBoKqq2[/U?[[B6@#SsoVEs8NQ#eWc;\P*(if
+O,f6[NW+h[Ll$qELkgb?LPLS<LPL\?KS>/8LP:J;KnG&3L4t>9LkprUM!75'6N':L7/o^T7fGpX
+8,u6\8c_RYr_7i::Jakc;c?Xq<``C+>$G6;?XI5N@qB4aBPD6uDJsN8F*)SLH$XjeJ:W?+L51VD
+N/is]P*M?#R@Bb=TV80XVl6VsXfnt8['mHS]"G_k_8=.0a2lEHc-FY_daZh!f@em4h;7&IiT&t[
+k2tmll0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7]akp%@tLoCDJBnF,i6m-O''l0.<mjlGI\i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^S86UO:27S?JR;"m`c
+:Adi`:Amu`:A@W\;#X5i:&[lf:\@QY;?'Gm:]=Dm<rc@g=TDRu=8uA(=&rB#=8Q)"=8Q"u=8>nq
+=8c7i=$!CaY->1;[C3TU]=bno_Sa@4aN2NIc-F\`daZguf@em4gtgiEi8N\UjQ5OdkNM0plKdd&
+m-X3.meuVQnFQ2KnGD\Smf2\Qm/QDOlMg&JkQ'fFk5XNCjSn0?io0mp#2e:oh;-l@rn;kTf[na+
+e^`1!e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h-X/`.t
+Vl-DgUnjc[TqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWbNJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`
+G^"?8G'.nKF)q8""`SBtDJa4hCB80arb)LKAn>OaA7PUJ!F]C8?iOF4?2e(1>?Y50=oVS(=8c/$
+<E)rr;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjS7J'"D6hE_46+6e"eX(5Y<)lal9ht[\$.uMH
+F%o>&:.\%V9`7W`8,l-[8c;0l8P2TH8P2TK92%rM91quN9hbL["&DZe:&@`X:?b(B6N':L7/o^T
+7fGpX8,u6\8c_RYr_7i::Jakc;c?Xq<``C+>$G6;?XI5N@qB4aBPD6uDJsN8F*)SLH$XjeJ:W?+
+L51VDN/is]P*M?#R@Bb=TV80XVl6VsXfnt8['mHS]"G_k_8=.0a2lEHc-FY_daZh!f@em4h;7&I
+iT&t[k2tmll0I^&mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GnO,]*TLk^V9JTZ9gNKp3Rqn;sB
+rOr-Cr4i9G!5JHI"N&'p`Q%ks!6G/]s2t2]!mJj2r64cWrm(>as3CYjr3u[8pUBq+rjMs=\$u1C
+jgbB$rjhd7r42j=qR\SsWi`G.Z*UgG\@K5a^;%M$`5Td<b0/&Td*^:ke^i@)g=tE=hV[8MioB+]
+k2tjjl07L!rp9[P!:KgSrp]jUq""@QrUBaRs6fpSrTsRMs6BUJs6'IGroO:DjQ-=#!TN);huV`l
+rnRV1g]#n1g"=p.f%'cLI+-NkdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[C!9H
+ZE^X<YHG"0X/`2!W2HPjV50o]TqS-OSt;LCS"#h5R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2
+Jq8H&IsufoI!^0cH$FOWG'.nKF)q8""`SBtDJa4hCC=lkBP;$kAn>OaA7PUJ!F]C8?NOP>?2e(1
+>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjS7J'"C6hNe56+6e"q<d;$
+f?_X_aN"/X!VkjW_?[fi^:h7o]=7dJ(U^TW['R3JZEpdB['R*EZE^gDZaI-DYPk[.YHY:>\*UQf
+62X(K6i0:O7K5jU7fl4Q8cD>392&&S:/=\_;,U=k<)lt#=BSg3>[:]D@:E_XAS5[kCM[m,EH6/D
+GBeF\I=?]tK7nu8M2R=QO-5]lQC+,1SXuOLUnsugWiW>+Z*UgG\%0,`^;%M$`5Td<b0/&Td*^:k
+e^rF+g>(N@hr*JRj5oFdkiq?tm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;QZerdk*<s*t~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GnO,]*TLk^V9JRW2*FF&J"qiC`<
+pQ,66s,[#<s,m2A!gAk5rg!>ErK[DI!gT"7rK[/BqN_&G!1!MKs,[/@oT9-8q2tH6qN9s(!0Qu<
+s,m5@s,m,?1TIR[Yd(OA[^`l[]Y;.s_SjF6aND]NcHsteeCE.%f\5*8h;7&IiSrnYjlY^gkiq?s
+li-8Nm/ZSQn,DhSnbD\QnbqtTn,MhUmJZDOli68Ll2TrIkPjTFjlGM%irS/urnmh7hYu=3gtVh^
+"khP[f@JLOe9o`ndF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43
+XfJJ%WMl_mVPU)aU7n9RT:VXFS=?"9R$a5+Q'IStP*1rhO,f3YN/NRMM26qAL4t;5K7\Z)J:E#r
+I=-BfH?jaZGBS+NFE;L%E<U<"DJj<-rbDmVBkV0mB4b^dA7T3L@KBnFra,_5?![G7!aAi3r`T8'
+!*B,"!``3!rDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=^@m6S5]0&jOIWM6&UR@'>,
+s8VuXbdsd:P*(ieO,f6[NJ`XOM26tELkgb?LPLV>L51S=re(c8L51J9KS+o1L4k;9Ll(JSks>56
+r^6QNs$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>Fa&(V
+H[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.EU84W`WN*&%YHbF@[^WfZ]Y;.s_SjF6aND]NcHsteeCE1&
+g"P6;hV[8Mj5]7`kNM0plg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RfE$Zrr)ior;6Njs7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GnO,]*TLk^V9JO2^o7nQBLr_W>b
+!)EGdqG.#cpeLT[q,%&cs%WJf!)N8apJLre"A_ij<E9$!r)`\sr`Jhrs&f/"r)io!pfIPu<rH)#
+<`f0!r`AqunlIWIXfen5Za@0N\\#Mg^VRe*`Q-'BbK\>ZdF-Opf%8R.gYCWAhr*JQj5f=ak3(sm
+l0@U6m/QGQmeuVRnGMhOo)/%VnGMbTmf2\Qm/QDOlMg&JkQ'fFjoXZ*jSn0?io0mp!T2c5h#Z<c
+rn7P/f[na+ec+'Ge'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9
+Y-"h,WiE%sVl-DgUnj`YTqJ$LSt2C@S!fY2Q^3o%P`q8nOcYWaNJrgSMM[1GLPCP;KS+o/JUi9#
+IXQWlH[:!`G^"@TF`__HErL%^E,TW3D/B2e$YjBhBP1siAS#C_A,]p<@:9(A!a]/<r`fM/>$Co.
+s&]8&rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/IAog8%3\c3cBXaXb]<)?Ih
+9MS5RjLq"7D-Kk39M%fL9M7uN9M%bQ8,u6\8-2:P9)_Bh84lKI92%rM92%tU9a+3d9hnDXqbQfY
+ks>56r^6QNs$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#LfC27X'DfKf>
+Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.EU84W`WN*&%YHbF@[^WfZ]Y;.s_SjF6aND]NcHste
+eCE1&g"P6;hV[8Mj5]7`kNM0plg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqucoo_sFARf@m~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq0RhoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*ULk^V9JoGp\LQ.q9]tD"k
+^&>\F^&5SE^%oDA^])"P_8F41`Q%nt!6G,\!6Y2^s31Mdr64cWrm(>as3CShrO2^7rj_^3ppU(/
+qRGh$!4_m9q76R:rjr'=rjr$>1TIOYYd(OA[^WfZ]Y;.s_SjF6aND]NcHjndeC<($f\5'7h;7&I
+iSrnYjlY^gkiq?sli-5PmI'E@n,MnUnac8Lnc&%Un,MhUmJZDOli68LklU)3kPjTKjlGL_j5T(W
+rnmh7hYu>[gtUQ:g"=s/f@JL%eC2jodF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[],W
+[^EKKZa-j?Yck43XK/A$WMl_mVPU)`U7n9RT:VXFS=>t8R$a5+Q'IStP*1ofO,f3YN/NRMM26qA
+L4t;5K7\Z)J:E#rI=-DAH4kLJGB\4QFEDSEEH,r:Df0H0D#S2]C2%?pB4kgfARo=]@U`bS@/aL7
+?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>k:Adic9`@]_9)V?\8GPdS7f5^I7/0.A6L@(K
+rsA5Xi7cZ*b/q`ErVmr;n_rQY_7m_!]Y1th\@&fR[Bd3IZaI*DZEU^CZa9Y:"LGJ@Za0S7!3c@*
+!OT?&[cp*U6N':K7/o^U7f>i,84cBF8kVfN9heAY:f("e;c?Xr<``F,>$P<=?XR;O@qB7cBPM="
+DJsN8FEMePH@('hJ:W?,L5:\EN/s'`PEhK%R[]k?Tq\?[Vl?\tY->1;['mKT]=bkm_8=.0a2lEH
+c-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'"RY[HnF?MK#4qK[p%J+RrV-HiqYL-erqu`no_sFA
+Rf@m~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*ULk^V9JmW&&EHZhhr/^f<
+qN(Z:qN(K7s,dAGOcfX+!gAk5rg!AFr0@;H!gT"7rK[/BqN_&G!1!GIrK$r>oT9-8q2tH6s,m>C
+rfQT2!0Qi8"-Jb/Oo:C;OYa#=Xg#(:['mHS]=bkm_8=.0a2lEHc-FY_daZdtf@\g2gtgiEi8N\U
+jQ5OdkNM0plKeH9!q#FDrU9dUrUKILrUKmVr9s[Rs6]dOs6K^MrojLJkNDj,#Nb%-j5].YiVqa9
+hqn@gIb`]3g=b-2f@SU(eC;sqda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",>[[^NTN
+Za6sBYct=6XfSS'Wi;qpVl$;dUS=HUTV%gISXc1<R@'A.QBd`"PEM)jO,o<\N/W[PM2@%DL5(D8
+K7ec,J:N,uI=6Kis*><'G^"@TF`__HEcH)<E,TW3D/B2e&8GomBP1siAS#C_@q&nU@:9(A!a]/<
+r`fM/>$Co.!a&N*rDiu"<)ifps&/korD<Mis%`Jdr_3;ar(?oZr^ciTrC6]RoL/IAoKqq2])N$,
+b-e=KTUhSNQiI'tmEr_TVPK]DOHGTaNJrgRMi.IhreCo:KnkD<L51P<KSG/6re:`5K7no4KnY8<
+MX6/`62X(J6i0:O7K5jU7t4'$8P2TJ92&&S:/=\_;,U=k<*!%$=]np5>[CcF@:E_XAnYjmCMds-
+EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQ^F52SY)UMUo(&hWiWA-Z*UgG\@K5a^;%M$`5Td<b0/&T
+d*^=le^rI-g>(N@i8EVTjQ5OekiqBum-FlBn*fc9rpg9bo_%nNp@nO\!r;]hr;6KkrVcBfJcD2=
+J,~>
+JcC<$RK)sZrVc`nrVQWks7uZhs7ZNerq0CcoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEg+_bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*ULk^V9JjVjl7Rp*Ir)!5c
+!)EGdqG.#cqG-`[qbR;j;#X5i:&[lf:\@QY;?'Gm:]4,g<W6%t=8uD!=oMOr=oVV%=8Q)"=7oZ#
+='/R+='/R+rDro!rE'&&rE/_o1TIOYYd(OA[^WfZ]Y;.s_SjF6aND]NcHjndeC<($f\5'7h;7&I
+iSrnYjlY^gkiq?sli-5PmI'E@n,MnUnac8Lnc&%Un,MhUmJZDOli68LklU)3kPjTKjlGL_j5T(W
+rnmh7hYu>[gtUQ:g"=s/f@JL%eC2jodF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[],W
+[^EKKZa-j?Yck43XK/A$WMl_mVPU)`U7n9RT:VXFS=>t8R$a5+Q'IStP*1ofO,f3YN/NRMM26qA
+L4t;5K7\Z)J:E#rI=-DAH4kLJGB\4QFEDSEEH,r:Df0H0D#S2]C2%?pB4kgfARo=]@U`bS@/aL7
+?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>k:Adic9`@]_9)V?\8GPdS7f5^I7/0.A6L@(N
+s"qfVCKjb::f0q^9hS1&V2B;%<DQ:[84cNL91hiM8k2EB84c?B7n?-?8P)HE7nQBH91hhU9+"9c
+9MJ5S9hnGX:ARcY:?b(B6N':K7/o^U7f>i,84cBF8kVfN9heAY:f("e;c?Xr<``F,>$P<=?XR;O
+@qB7cBPM="DJsN8FEMePH@('hJ:W?,L5:\EN/s'`PEhK%R[]k?Tq\?[Vl?\tY->1;['mKT]=bkm
+_8=.0a2lEHc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'"RY[HnF?MK#4qK[p%J+RrV-HiqYL-e
+rqu`no_sFARf@m~>
+JcC<$RK)sZrVc`nrVQWks7uWg!Vc<eoj%.\o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNf8jPLP:A4CNarRN0pBZ]Y2#X
+^A,D;^AYhH^^.co_o0O6`lH.!aT'?^b59?^bl,`_bk00ZcM>`acMl,id/(3M\,*T7\+7!*\,Wr<
+\,Ei'\H'5<\am<3\c',;]/$IiYHY@?[^WfY]Y2(r_SjF6aND]McHjnde'ut#f\5'7h;7&IiSrnY
+jlY^gkiq?sli-5PmI'EAn,MnVna5oGnc/+Vn,MhUmJZDOlN$5KklU)3kPjTEjlHF$&E;[-i8EMM
+hVI#CgtUQ:g"?;UJ(E0"eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKK
+Za-j?Ycb+1XK/A$WMl_mV50o^U7n9RT:VXES"#k7R$a5+Q'ISsP*(ieO,f3YN/NRMM26qAKnP)2
+Jq8H&IsufoI!^0cH$FRXGBS+NF9Q`+EH,r9rb`HfChmg$C2%?pB4baeARo:\@U`bS@/aL7?<pk9
+>QS,5>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.B6L@(NrsAGa
+jk\M4bK@oJr;S,9iSE,2aN)'0]Y;"f\@/cQ['I-IZaI*CZE^aCZa6sBZ*UgEZa'M6!3cC+!3tgt
+ks>56rBpHMs$crWr^ZuZs%35_s%@i89heAY:f("e;c?[s<``F,>$P<=?XR;OA7]@dBkhF#DK'T9
+FEMePH@('iJ:`E-L5:\FNK90aPa.T&R[ftATq\?[Vl?`!Y->1;[C3TU]=bkn_Sa@4aN;WLc-F\`
+e'ut#f\5'7h;7)JioB+]k3(smlKdg'mdKW6nac8No*+dZp%J+RrV-HiqYL-erqu`no_sFARf@m~>
+JcC<$RK)sZrVc`nrVQWks7uWg!Vc<eoi^qYo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNf8jPLP:A4?"7M`G'eh(rf@&?
+!0?o8qN(K7!KiKCOoCODP5pjHQ2?gEQ2?gEQ2$U?Q2['LQ26gCO8b78Oo:C;OoLLCOnXt:Ol2E!
+OoLO=OYX#?YHY@?[^WfY]Y2(r_SjF6aND]McHjnde'ut#f\5'7h;7&IiSrnYjlY^gkiq?sli-5P
+mI'EAn,MnVna5oGnc/+Vn,MhUmJZDOlN$5KklU)3kPjTEjlHF$&E;[-i8EMMhVI#CgtUQ:g"?;U
+J(E0"eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZa-j?Ycb+1XK/A$
+WMl_mV50o^U7n9RT:VXES"#k7R$a5+Q'ISsP*(ieO,f3YN/NRMM26qAKnP)2Jq8H&IsufoI!^0c
+H$FRXGBS+NF9Q`+EH,r9rb`HfChmg$C2%?pB4baeARo:\@U`bS@/aL7?<pk9>QS,5>5hY+=BAT'
+<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.B6L@(Os"`<=XJhh`S!]S0QiI*[
+fYk4pTq.O8OcPQ`NJrgRMM[1FLkphAL5(D;L51M=LP:D8LAci+K`?Z.L4tA:Ll1PTks>56rBpHM
+s$crWr^ZuZs%35_s%@i89heAY:f("e;c?[s<``F,>$P<=?XR;OA7]@dBkhF#DK'T9FEMePH@('i
+J:`E-L5:\FNK90aPa.T&R[ftATq\?[Vl?`!Y->1;[C3TU]=bkn_Sa@4aN;WLc-F\`e'ut#f\5'7
+h;7)JioB+]k3(smlKdg'mdKW6nac8No*+dZp%J+RrV-HiqYL-erqu`no_sFARf@m~>
+JcC<$RK)sZrVc`nrVQWks7uWg!Vc<eoi^qYo()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W$p
+d*BnZb/hWB`59=)]tCqd[^EHHYcb+.WMcVhU7n0LS!fY0Q'.8jNf8jPLP:A46U=.47nZHMr_WVj
+s%ibm:/:[\qG%#dqG-ZYqG75h:/:d_r_E)^pJLres%iSiqGmMqr)Wr%=]tQ&oi_;sr)`5e!*T8&
+!EW>#=8l>#=oMOs=#-kZYHY@?[^WfY]Y2(r_SjF6aND]McHjnde'ut#f\5'7h;7&IiSrnYjlY^g
+kiq?sli-5PmI'EAn,MnVna5oGnc/+Vn,MhUmJZDOlN$5KklU)3kPjTEjlHF$&E;[-i8EMMhVI#C
+gtUQ:g"?;UJ(E0"eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZa-j?
+Ycb+1XK/A$WMl_mV50o^U7n9RT:VXES"#k7R$a5+Q'ISsP*(ieO,f3YN/NRMM26qAKnP)2Jq8H&
+IsufoI!^0cH$FRXGBS+NF9Q`+EH,r9rb`HfChmg$C2%?pB4baeARo:\@U`bS@/aL7?<pk9>QS,5
+>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.B6L@(QrtORjF^S9M
+:f'n\9hS.1YEjEC=A_ck80^Pt8kDWJ91VQE84Q9C84Q3A7nH9C8k2KH9M.iK91hlO9hbO\"AVZd
+9i1[^oM4X:r'L?LqaCHQs$luXs%*/]s%<;aInWR2:/=\_;,U=k<E<.%=]np5>[CcF@:EbYAnYmn
+CMds.EH6/DGBeF\I=Hd!K8#&9M2[FTOHPinQ^F53StD^NUo(&hX0&P/Z*UjH\@K5a^;.V'`Q$!@
+bKS5Vd*^=lf%8R.g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o)J:bo_%nNp@nO\!r;]hr;6KkrVcBf
+JcD2=J,~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eoiq([o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCJ6J9?$`M2e.;]=dgM
+pqH^As1elU_o'F3`l?'uaT'?^b4a$Vbk00ZcM5ZacMc)hciCQP[emQ2\,s.J[e7'.[f<i:[f3c7
+\F-p-])9,4\cB;<])0)uX0&S0ZEpsJ\[oGe^VI_(`Q$!@bKS8XdF$Fme^rI,g>(N@hr*JQj5f=a
+k3(sml0@U$m-X3.rU9dUs7,gR!;#mSrpg!WrU9dSs6]dOs6B[MrosIH!9a@Ds5a7Aro4CGiSi_Q
+hqm5Gh;$cag4.f.f@SU)e^W*tda?Ihcd'h\bfn8Rb/q`Ga2Z*;`5BI/_8*h"]tD"i]",A]\$i`Q
+['R*EYct=6Xf\\*WiE%sVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o$PEM)kOH5H_NJrgSMM[.EL5(D8
+K7ec,J:N,uI=6KiH?sj]GBa(1#^(62F)l8?E,Y_n'l@c&CMIQtBP;$jAn>Oa@q/tW@:<RC?O'nC
+?!LW=>?^u.!a&N*r`9&!s&Aqq!`Dlmr)!Dhs%`Jdr_3>bqb$iZrCH`SrC6]RoL/IAoKqq2^&JB+
+j5J\<bfRuJr;RH*ii8.@bK%H3[(Eu]\@8oS['[.;ZjX4EZEU^BZa-mAZ*XG:!3uC)!4(q!kX#,5
+rBpKNr^HiVr^ZuZ!(m/^InNI/9heAY:f("e;cHat<`iL->?kH??XR>PA7]@dBkqL$DK'T:FEVkR
+H@1-jJ:`E-L5CeHNK90aPa.T&S"-(BTqeE\VlHf"Y->4<[C3TU]=ktp_Sa@4aN;WLcHjkbe'ut#
+f\5*8h;7)KioB+]k3(smlKdg(mdKW6nc/.boCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBRK%d~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eoi^qYo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCJ6J7<))F*N4orf6u=
+pl>33qiLi=!0I2Brf[;F!0mJJqNUuEqiq)FpQYN>rg*SLq3D#BqiCW9plYN:p5oB;Onk+,OoCO?
+Ont74OZ0>CYHY==[C<]X]Y2(q_Sa@4aN;WLcHjnce'uq"f\,!6h;7&IiSrnYjlY^gkiq?slg4!*
+mI'rAs7$'Yp@84Tp%&+Prp]mTs6fpSrTsRM!:'RJs6'IGroX7B!9F.>$f^.(i8EMLhVI#Cg]#oV
+g"=p.f%/C$eC2jndEp4bcHXSWbKJ&MaN2EA`Pod5_SX.)^V7Co]Xtbc\[],W[^EKKZa-g>YHG"0
+XK/A$WMl_lV50o^U7n9RT:VUDS"#k7R$a5+Q'@JqP*(ieO,f3YN/NRMLkg_>KnP)2Jq8H&Isufo
+I!^0cH$FOWs)nZjFEDSEEH,r9rb`HfChmg$Bk_6oB4baeARo:\@U`bS@/aL<?<piA>[(E9rE02(
+=',B%s&K(urDNbq;,R6fs%iYir([/as%E5]r^m&Zq+(BQr'g6Gpd=[?m6SMe$L>L2WMH5YR[BJ.
+rr3\iah+I%FT7YjNf/[ON/EONM2I+FreD)AKnb;:L51J;L4t;7Knb;9K`6T,KS>,7M<fu]62X(J
+6i9@O7K5jV8,l*[8cD>392&#R9hnJ\:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiCMRd)E,fr@G'A4X
+I!pKpJqJc3M2I7OO-#NhQ'[l-S=Z@HUSOcbWiN8)Yd1UC[^`l[]t_A"_o9X:aihoRcd:(geCN7(
+g=tE=hVdAPj5f=akNM0qlg4$,n*fc9s7-Edo^qhLp@e7[q#C0iqY^6ir;HTerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Nj!;ZTg!Vc<eoi^qYo()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3MS!o_1Q'7>kNf8jPLPCJ6J3uXk7n??KqbR>i
+:/:[\oM4sQqG75h:/:d_r_E)^pJCoer_NDf!*8tsqc<Vrs&f2#r`Jhrs&]8&l<+'hqcNi!r`K,%
+!a&T.pK';SXfnt7ZaI9Q]"G_k^r"".`lQ9Fbg+P^dF6Uqf@\d1gtgiEi8N\UjQ5OdkNM0plKdg'
+mHs??n,MnWnb2MRoC_\Rnc&%Vn,MhUmJZDOlN$5Ll2TrIkPjWDjT+B@isXl*iS`YOhVR)EgtVh^
+J(`K+f@JO'eC;sqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:,^q[Us]Y(kf\[f5Z[^NTNZa6sAYck43
+XfSS'Wi;qpVPU)aUS=HUTV%gHS=?":R@'A.QBd\uP*1rhO,o<\N/W[PM26qAL4t;5K7\Z)J:E#r
+I=-BfH?jaZGQ2glF`__HEcH)<DuOVhD/=!'C2%BqBP1phAS#C^@q&nU@:9(A#@:\A>[1K;>5_S*
+=BAT'<rZ2"<;f_s;Gg<h;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6L@(Srt`8%B38&2;,9n[
+92"6VSpkEZ;+O*a8cD*`5tFR=8k)?D7fGp]8Ol9B8,Z!c7nH?I8kMcM91o1Xs%W_l:JFSZ;#3u\
+:?Y"A6N':L7/fXT7fGpX8,u6\8q0K-9MJ5V:Jakb;H$Op<`W=*=^,-:?=.)L@Us%^BPD6tD/O<4
+F*)SLH$XjdIt3-'KnbGAN/`m[P*D5uR%'V;T:r$UVPgGpXfen6ZaI6O\\#Pi^r"".`lQ9Fbg+P]
+dF6Urf@\g3gtgiFiSrnYjlYail0@U$mI'H3nF?PL#P7T[p%A%Pp\ssfq>^<hqu6NlrUp/@s-`n;~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrpj(Zn*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS!o_2Q'7AlNf8mQLPCJ7J8TOUK8lP/^](nH
+^A#><^AGYN^qmn*`5K[8a8X0[aT0KVbPfZWc2Q#`c2Z)fci;AldJgWP[emQ2\,s.J[e7'([f<i9
+\GEc8\G3W6])T>/\cBAA]JmI)Y->4<[C3TU]Y2(q_Sa@4aN;WLcHaeae'uq"f\,!5h;-uHiSrnX
+jlY^gkiq?slg4!*mI'uBs7$$XqXX@Oq==OTrp]mTs6fpSrTjUOlK\B5s6'IGroX7B!9F.>!TN);
+huV`lrnRV1g]#oVg"=p.f%&=#eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W
+[^EKKZE^X<YHG"0XK/A$W2HPjV50o^U7n9QSt;LCS"#k7R$a5*Q'@JqP*(ieO,f3YN/NOLLkg_>
+KnP)2Jq8H&IsufoI!^0cH$FOWs)nZjFEDSEEH,r9rb`HfChmg$Bk_6oB4baeARo:\@U`bS@/aL=
+?<piA>[(E9>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6L@(S
+rsA8Zj4i#,aiVQArVlutkGadGrtrDW['?jG\$rZNZEpgCZa-pEZ*CO?ZEpk9Ym%G@['R$@qlg(-
+laH"Cr'LBMqaCHQs$lrWs%!,]r^qZ59MJ5V:/=\_;H$Ln<E<1'=^#$7?!^lH@Uiq[B4u!pCi4-0
+EH?5FGBnL^I=Hd!KSG8=MN!OUOckroR$jG6StMdPUo1/kX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8X
+dF-Lnf%8R.gYCWBi8N\UjQ>Ufl07L!m-X60n*olInd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD/<
+J,~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrpj+[n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS!o_2Q'7AlNf8mQLPCJ7J6l\uD01;_OH0=$
+pQ#-3rK-u=!0I2Brf[;F!0mJJqNUuEqiq)FpQYN>rg*SLq3M&IrfI#<qiLT8rK-Z6q2k$,rf[,?
+qNCf>rK-u?2Qa-dZEpsI\@K8c^VI_(`Q$!@bKS8Wd*^=le^rI,g=tH>hr*JQj5]7`k3(sml0@U$
+m-X3.rpTmVrpfjUp@J+Nrpg!WrU9dSs6]dO!pf.:rosIH!9a@Ds5a7Aro4%=iVqa9hqn@g!SlH/
+g4.f.f@SU(e^W*tda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R'CYct=6
+Xf\\*WiE"qVl$;dUnaZXTq@pJSXc1=R[KP1Q^*i#PEM)kOH5H_NJrgSM2@%DL5(D8K7ec,J:N,u
+I=6KiH?sj]GBa(1#^(62F)l8?E,Y_n'l@c&CMIQtBP;$jAn>Oa@q/tW@:<RC?O0tD?!LW=>?Y50
+=TV],=8l8#<W?%s;u]bq;>j>k:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_46,ER*e?uBTTq.\P
+QQDFls6%eDWe,H\s8W(WLkg\9MMm@JM26tBLPU_>L&Qf3LP:J;KnP/4re:<'#)%\aL5CbBm>0sl
+r'LBMqaCHQs$lrWs%!,]r^qZ59MJ5V:/=\_;H$Ln<E<1'=^#$7?!^lH@Uiq[B4u!pCi4-0EH?5F
+GBnL^I=Hd!KSG8=MN!OUOckroR$jG6StMdPUo1/kX0&S0ZEpsI\[oGe^VI_(`Q$!@bKS8XdF-Ln
+f%8R.gYCWBi8N\UjQ>Ufl07L!m-X60n*olInd"dYo_%nNp@nR]s7u]kr;6KkrVcEgJcD/<J,~>
+JcC<$RK)sZrVc`nr;6Njs7uZh#5@ibp%@tKrpj(Zn*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS!o_2Q'7AlNf8mQLPCJ7J3lUm77U$G:&Rog
+:B4/d:%_9P:\mlh:JO[a:&[o[;"mfe;#X8f;#aDl<r5no<qTPn=S5hp=T2Il=T2J#=9;Q+=Sc2#
+=SZ#VXfen6ZaI6O\\,Vj^r"".`lQ9Fbg+M\dF6Uqf@\d1gYL]Ci8N\Uj5oFckNM0plKdg'mHs?@
+n,MnVnbVhMoD.tVnc&%Vn,MhUmJZAQlg!d7l2TrIkPjWDjT+B@irS/urnmh7hYu=3gtVh^J(`K+
+f@JL&eC;sqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa-j?Yck43XfSS'
+Wi2hnVPU)aUS=HUT:VXFS=?":R@'A.Q'IStP*1rhO,o<\N/W[OM26qAL4t;5K7\Z)J:E#rI=-Bf
+H?jaZGQ2glF`__HEcH)<DuOVhD/=!'C2%BqBP1phAS#C^@q&nU@:9(A#[UeB>[1K;>$Co.!a&N*
+r`9&!s&Aqqs&/korD<Mis%`Jdr_3>bqb$iZrCH`SrC6]RoL/IAoKqq2_uCV.RrM_5;c$7a91qlL
+aeji4?W'E_RIK^A6iK@m5Y=R:84c6?7S$*@7nH3A8P)HD8P2WJ85)ZM92/+Y9a"6e9i"U^:\@KH
+62X(K6i0:O7K5jU8,l*[8cD>392&&S:/4S]:f:4j<)lt#=BSg3>[:ZC@:E_WAS5[jCM[m+E,fr@
+G'A4XI!pKpJqSl6M2I7OO-,TiQ'du/S=ZCIUSOfdWiN8*Yd1UC[^iu^]t_A"_o9X:aihoRcdC1i
+eCN7(g=tE=hr*JQj5f@bkNV6rlg4$,n*fc9s7-Edo^qhLp@e7[q#C0iqY^6ir;HTerdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Njs7uZh@e]Tip%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iE`59@*^:_(g\$iZLYck10Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S8JUhofIu9Da_nEdu
+pV$I<!l)I`rkAuZ_8=(,`5KX7a2c9Bai_d"bPfZWc2Q#`c2Z)fci;AkdJLEM[emQ2\,a#:[f!Q*
+[f<i9\G`u8\G3W"\iIC8]WJ?@Z*UjH\@K5a^;%P&`Q$!@b0/&Td*^=le^rF+g=tH>hr*GPj5]7`
+k3(sml0@U$m-X6/rpTmVs7-$XqXa[XqXaRSs7-*XrU9dSs6]dO!pf.:rosIH!9a@D!p/M(ro4%=
+iVqa9hqn@g$JaCig=b03f@SU(rmZ2Ada?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]
+\$i`QZa6sBYct=6Xf\\*Wi;qpVl$;dUnaZXTV%gISXc1=R[KP0QBd`"PEM)kOH5H_NJrdQM2@%D
+L5(D8K7ec,J:N,uI=6KiH?sj]GB\4QrcAWkEcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGq;?srt@
+!FB(2>lS".>5_S*=BAT'<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A6L@(V
+rsAPfjP\S6c-")Hr;QlegnFTDrt=kD\[/H?Wi!/0Za@$C['R'EZi730Zi76:Yd(I=['[0EYHRr0
+"0o);\*^We62X(K6i0:O7K5jU7fl4Q8cD>392&&S:/=\_;,U=k<)lt#=BSg3>[:]D@:E_XAS5[k
+CM[m,EH6/CG'A4XI"$TsK7nu7M2I7PO-,TjQC+)0SXuLJUnsufWiW>+Yd1XE\%0)_]t_A"`5Td<
+b0/#ScdC1je^i@*g=tH>hr*JRj5f@bkiq?sm-O--n*fc9s7-3^o`"Lbp@n=\q#C0iqY^6ir;HTe
+rdk*;s*t~>
+JcC<$RK)sZrVc`nr;6Njs7uZh?ha9fp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iE`59@*^:_(g\$iZLYck10Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S8JUh9BCNFfPOn=\2
+NrY:<O8b7@OoCLFPE_=2Q2?gFQ2?gFQ1pO?Q2R$KQ2-aFQhumAO8G%6Oo1=?Oo:C>Onk+,OoLUC
+OoCFBOo(=>OoLOBOZ'>EYd(OB[^`l[]Y;.t_o9X:ai_fOcHstfeCE1&g"P3:h;@/KioB(\k2tjj
+l07L!m-O--mf)\TnGi%Vo(qtVo_S1Uo)J7ZnGVhUmf2\QliQM<lMg&JkQ'fFjoXZ*jSn0?io0mp
+!T2c5h$Vrlg=k65f[na+ec+'Ce'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[Bm3FZ*:I9Y-"h-X/`.tVl-DgUnjc[TqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!UMM[1GLPCP;
+KS+o/JUi9#IXQWlH[:!`G^"@TFoHImF)l8?E,TW3D/F*)CMIS_BE;aXrac+@A,]p=@:3LB?NFJ=
+r`oJ-!*]>(!a&N*r`9&!s&Atrs&/kor)!Dhs%`Jdr_3>bqb$iZrCH`SrC6]RoL/IAoKqq2`;^M0
+]WS-,Ssu18R$I^Op=I0aU4(/_rs-?'M1pS6Isq<Q$]'RmL51P<KS>/7L])r,KE-Z(K`H`(KE$Z*
+L&m*en;%"!k<]#4r^6QNs$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#Lf
+C27X'DfKf>FEVkRH@10lJV/W1LP^nINfT<cQ'Rf*S"6.DTqnN_W2cr$YHY=>[^WfY]Y2(q_SjF6
+aND]McHjndeCE.%g"P3:h;@/Lj5]4_k32'olKmm)mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqu`n
+p&9OBRK%d~>
+JcC<$RK)sZrVc`nr;6Njs7uZh?ha9fp%@tKoCDJBnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iE`59@*^:_(g\$iZLYck10Wi2hkUS4<OS=>n4Q'7AmO,T!RLk^S8JUg'S7n60G:]=2j
+:B4/d:%_9O:]!ri:JO[a:&[o[;"mfe;#X8f;#X>h<r5no<qTPn=S5es=SZ+h=T;P"=Sl8"=Sl/X
+Xfen5ZaI6O\\#Mg^V[n-`lQ9EbK\>ZdF6Uqf@S^0gYL]Ci8EVTj5oFckNM0plKdg'mI'EAn,MnW
+nbhtSoDS=XoD8%Xnc&%Vn,MhUmJZAQlg!d7l2TrIkPjTFjlGM%irS/urnmh7hYu=<gtUQ:g"G$0
+f@JLOe9KHjdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTMZa-j?Yck43XfSS'
+WMl_mVPU)aUS=HTT:VXFS=?":R@'>,Q'IStP*1rhO,o<\N/NRMM26qAL4t;5K7\Z)J:E#rI=-Bf
+H?jaZGBS-.F:NA4EH,r9DJj<.Chmg$C&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%
+s&K(ur_rhps&&\js%iYir([/as%E5]r^m&Zq+(BQr'g6Gpd=[?m6Sbl,keNn@ou]/:eseY91m^=
+PBUP<:IfiiotP0.4[D=u5s@e07Rd;H"A)*R8OrbOs%!Vk8kVcI91qrO9hS2T9MPL]s%rPfp.jd:
+r'LBMqaCHQs$lrW!_>mSr^qZ59MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\B4u$qCi402EccDH
+GBnL^IXm!%KSG8=MN!RVOckuqR$jG7StMdQV5L8lXKA\1ZF%'L\[oGe^VI_)`Q-'BbKS8XdF-Op
+f%8U/gYL]Ci8N_VjQ>Ugl07L"m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcD/<J,~>
+JcC<$RK)pYrr)ior;6Njs7uZh@JBKhp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^V9JUh]aHA@HQ]"YoQ
+^%f>>^C@up_Sa=2`Q#s>aN;TIoum?YoZdB\ps&iarQkMjr6bPSqmZO4q7$72rjVp9!4D=)s0r!;
+!4i$;s0r$<ppp:5!4h^434lc6Xg#(:['mHS]=bkm_8=.0a2lEHc-FY_daZguf@em4gtgiFi8WeW
+jQ>Ufkiq?slg4!*mdC)C!q>aMqss^Wp%84SqXX[Vrp]mTs6fpSrp9[Ns6BUJ!pJh1roS[kjQ,@]
+io8qTi8<GKh;-lAgY1B7f\"g-f%&:"e'c[ldEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc
+\[],W[C!9HZE^X<YHG"0X/`2!W2HPjV50o^TqS-OSt;LCS"#k6R$X,(Q'@JqP*(ieNfB!VMi*@J
+Lkl"b'nq<nK7\Z)J:E#rI=-BfH?jaZGBS-.F:NA4EH,r9DJj<.Chmg$C&VcHB4h-S!G#^>@KKtG
+@/aL6?=!P8s'#J,rE02(=',B%s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?Pr'g6Gpd=[?
+mQnhl$1[-8g!S'ea2Q*trr`#QW8%=O)Z@spY,%VRVk]oWZa@!D[Bd*EZ*CO;ZEpjBrilR2Za@(<
+YPta,Z*<Q&k<]&5rBpHMs$crWrC;?.8P)NH91qrQ9hnJ\:f1+h;cHdu='/U/>[1QA?X[DRAS,Rg
+C27X'DfKf>Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.DU84W`WN*&%YHbF@[^WfY]Y;.s_SjF6
+aND]NcHjndeCE1&g"P3:hV[8Mj5]7`k32'olg3sEmI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrquco
+o_sFARK%d~>
+JcC<$RK)pYrr)ior;6Njs7uZh?ha9fp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^V9JUh-=BQ80EN:i5+
+NrY:=NrkE*OoCLFPE_=2Q2QsFQ2?gFQ1pO?Q2R$KQ2-aFQN<D=q2kQ9e<'*\qiLi?rf[#<26F*f
+Za@0M\\#Mg^VRe*`Q-'BbK\>YdF-Opf%8U/gYCWAi8EVTj5f@bkNM0plKdg'mI'EAmfN"Knb_nU
+oC_bSoD8%Xnc&%Vn,MhUmJcJPli68LklU)3kPjUmjlGL_j5T(Wi8EMMhVI#CgtUQ:g"=s/f@JL%
+eC2jodF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfJJ%WMl_m
+VPU)aUS4BST:VXFS=?":R$a5+Q'IStP*1rhO,f3YN/NRMM26reL)#DqK7ec,J:N,uI=6KiH?sj]
+GB\4QrcAWkEcH)<Df0H0D/=!'C2*Z\!G?$DAH?=OraGq;?srt@!FB(2>lS".>5_S*=BAT'<rZ2"
+<;ohr;ZBVl;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/0.A6LI.[rtG.KZ`BprSXPk2QBhLMgr?e!
+J?StP$ceWlIs?'QI<p0_M#E,/LAur,L&Qf5Knb;6KS+r3KnB;Vs+UK-!JlU%L]3+m62a.K6i0:O
+7K5jU7t4'$8P2TJ92&&S:/=\_;,U=k<*!%$=BSg4>[:]D@:E_XAnPdlCM[m,EH6/DGBeF\I=?]t
+K7nu8M2R=QO-5]lQC+,1SXuLKUnsugWiW>+Z*UgG\%0)_^;%M$`5Td<b0/&TcdC1je^rF+g=tH?
+hr*JRj5oFckiq?tm-G&GmdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)pYrr)ior;6Njs7uZhAbYolp%@tLoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]O,^:_(g\$iZMZ*1:2Wi2hlUS4?PS=>q5Q'@GnO,]'SLk^V9JUg-V6UjO;:/Fb_
+:JO[^:&due:\mi_:]F2e:]!ri:JO[a:&[o[;"mfe;#X8f;#F/j<Vfbp<V]\g=6`rL=T2J%=Sl/W
+Xg#(:['mHS]=bkm_8=.0a2lEHc-FY_daZguf@em4gtgiFi8WeWjQ>Ufkiq?slg4!*mdC)C!q>aM
+qss^Wp%84SqXX[Vrp]mTs6fpSrp9[Ns6BUJ!pJh1roS[kjQ,@]io8qTi8<GKh;-lAgY1B7f\"g-
+f%&:"e'c[ldEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[C!9HZE^X<YHG"0X/`2!
+W2HPjV50o^TqS-OSt;LCS"#k6R$X,(Q'@JqP*(ieNfB!VMi*@JLkl"b'nq<nK7\Z)J:E#rI=-Bf
+H?jaZGBS-.F:NA4EH,r9DJj<.Chmg$C&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%
+s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?Pr'g6Gpd=[?mQnqo7Egg.>#eHq:/+AS9M)je
+I:l_Y7q]U*fPj;C4#f2X5!;"k77B^<7n?-@84Q3B8kDWK91qlJ8kMcM9hS2T9MJ5V9i+[_:\IQH
+62a.K6i0:O7K5jU7t4'$8P2TJ92&&S:/=\_;,U=k<*!%$=BSg4>[:]D@:E_XAnPdlCM[m,EH6/D
+GBeF\I=?]tK7nu8M2R=QO-5]lQC+,1SXuLKUnsugWiW>+Z*UgG\%0)_^;%M$`5Td<b0/&TcdC1j
+e^rF+g=tH?hr*JRj5oFckiq?tm-G&GmdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;QZerdk*;s*t~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0LfoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GoO,]*ULk^V9Jq.WYG^kR9Ur:"B
+^%]8>^]2(W_8F1/`Q#s>aN;TIoum?YoZdB\pW```rQk;epUKn*ppg@5rjMd7p9t"1qmZX7rO2g;
+\+dH2])T>7])TB"Xfnt8['mHS]"G_k_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8N_VjQ>Ufkiq?s
+lg4!*mdC)C!q>aMr:9jYnFZ\NqssdWrp]mTs6fpSrp9[N!:'OI#O(@6k2tdejSn0Nio/kSi8<GK
+h;-l@gY1B7f`'KPf%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9H
+ZE^X<YHG"/X/`2!W2HPjV50l\TqS-OSt;LCS!ob4R$X,(Q'@JqP*(fdNfB!VMi*@JLkg_>KnP)2
+Jq8H&IsufoI!^0cH$FOWG'.nK!HW;\E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>@L$=L?sd8I?=!P8
+s'#J,r`T8's&]2#s&K(ur_rhps&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?m6Shn$23WD
+h:'Zmai;@!rr`,VW0I8\%bSh+Un3m8PG"M>SY33nriud8Z*LX=ZEgh9Z2_-0ZidY;Ycmu/!OfE(
+[c]sS6N':K7/o^U7fGpX8H29]9)hP59MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93
+EccGJG^=^bIXm!%KnbD?Mi<[XP*;/sR$sM8T:r!TV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>Z
+dF-Opf@S^0gtgiEi8N_VjlYail07O#m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kkrr)KgJcD/<
+J,~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0LfoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GoO,]*ULk^V9Jq.-:B5D[:JWZ#g
+Nq&/9OHGWeP*2#nPl?sIPl-gGPQ6pHPl?sBPl$aEQN!0HQMm0MQN*;kORJ>.OT1FCP5(.sXfnt8
+['mHS]"G_k_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8N_VjQ>Ufkiq?slg4!*mdC)C!q>aMr:9jY
+nFZ\NqssdWrp]mTs6fpSrp9[N!:'OI#O(@6k2tdejSn0Nio/kSi8<GKh;-l@gY1B7f`'KPf%&:"
+e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X<YHG"/X/`2!W2HPj
+V50l\TqS-OSt;LCS!ob4R$X,(Q'@JqP*(fdNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOW
+G'.nK!HW;\E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&K(u
+r_rhps&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?m6Sko-el25VP9WNQ^=#(s8V3)];L4'
+p](9LToXeMFDl#6G^"=RG_Us,L])o.L4t?\L'*-^K7s5X!.t3&rIt?/M=?<#M!%)%6N':K7/o^U
+7fGpX8H29]9)hP59MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93EccGJG^=^bIXm!%
+KnbD?Mi<[XP*;/sR$sM8T:r!TV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gtgiE
+i8N_VjlYail07O#m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kkrr)KgJcD/<J,~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0OgoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/cNZ*:@3Wi;nmUnOHQS=>q6Q'@GoO,]*ULk^V9Jq-0T6q9^>8l&8Z
+q+gc^r_E8brD*5cqbR;h:Amod:@qBW;$9]k:/=[a;#4#h;uTbs<r5tk<q]Sp=RB8M=T2J'=Su5X
+Xfnt8['mHS]"G_k_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8N_VjQ>Ufkiq?slg4!*mdC)C!q>aM
+r:9jYnFZ\NqssdWrp]mTs6fpSrp9[N!:'OI#O(@6k2tdejSn0Nio/kSi8<GKh;-l@gY1B7f`'KP
+f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X<YHG"/X/`2!
+W2HPjV50l\TqS-OSt;LCS!ob4R$X,(Q'@JqP*(fdNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0c
+H$FOWG'.nK!HW;\E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#
+s&K(ur_rhps&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?m6Sqq,3c%L?s$E*:JXYW8kI(#
+L2C3o7mrp?nqBb%4?#5X1c@HYr]U3M#tRWY84c?D84uSS9*Rs\8k_lP9DqTb:'+-d;#3u^:?Oq@
+6N':K7/o^U7fGpX8H29]9)hP59MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93EccGJ
+G^=^bIXm!%KnbD?Mi<[XP*;/sR$sM8T:r!TV5L;mXKA_3Za@0M\\#Mg^VRe*`Q-'BbK\>ZdF-Op
+f@S^0gtgiEi8N_VjlYail07O#m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kkrr)KgJcD/<J,~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0IeoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/>mFa]+,Tt0s3
+pV-U@rkJuZ_o0L5a2c9Cb0%oNb4s0Zbl>ofbkKB]cMGcgbg"DXcMc)ad/^`M\Fm?+\GE]7\Gs&5
+[f<i7\GNc8\G*Q)])K<&YHY==[C3WW]Y2(q_Sa@4aN;WLcHjnce'ut#f\5'7h;7&IiT&tZjlYai
+l07L!m-O--mdKW6nF?&Io)A7Zo_%nTo`"IZo)J7ZnGVhUmf2\Rm/QAOlM]rPki_-kk2k^cro4RL
+iSi_Qhqm5Gh;$c>g=k64rmqJ-e^W*tda?Ihci243c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1k]",A]
+\$i`Q['R*EZ*:I8Xf\\*WiE%sVl-DfUnaZXTqJ$LSt2@?R[KP1Q^3o%P`q8mOH5H_NJrgSMM[1G
+LPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HErL%^E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM
+?X@&Er`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jds%NDbqb$iZrCH`SrC6]RoL/IAoKqq2
+b5Vb7jkeV9bK7iErVm$"j4U+)rr3V3nGfM[QBIJtPuO?JTVA9gZEaA4#I1S>Za$g?ZMq01ZMq'*
+YQ;2?m^D:Er'L?Lr'^NQs$luXs%!,]r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmn
+CMds.EH?5EGBeF\I=Hd!K8#&9M2[FTOHPfmQ^F53StD^NUo(&hWi`G.Z*UgG\@K5a^;%M$`5Td<
+b0/&Td*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O--n*pAIs7-3^o`"Lap@nO\s7u]kr;6Kkrr)Kg
+JcD/<J,~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0IeoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/>[A86+.J;j8`
+muI[7OcbfjPEc'3s-3GHrKI;GrfmGJp6>H>rKdGJqj.2Is-EYNoT8a,plP$,rfI#<rf@,BrfH`6
+qN(`?OSP#"YHY==[C3WW]Y2(q_Sa@4aN;WLcHjnce'ut#f\5'7h;7&IiT&tZjlYail07L!m-O--
+mdKW6nF?&Io)A7Zo_%nTo`"IZo)J7ZnGVhUmf2\Rm/QAOlM]rPki_-kk2k^cro4RLiSi_Qhqm5G
+h;$c>g=k64rmqJ-e^W*tda?Ihci243c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1k]",A]\$i`Q['R*E
+Z*:I8Xf\\*WiE%sVl-DfUnaZXTqJ$LSt2@?R[KP1Q^3o%P`q8mOH5H_NJrgSMM[1GLPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TF`__HErL%^E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&Er`oJ-
+!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jds%NDbqb$iZrCH`SrC6]RoL/IAoKqq2bl9Kd^os`5
+T:D=9QBqRNo[ppYTmY&`s7qDce9c=VCi4017s0$"H$b:"KS+r3KnP/5L4t?ZKE-`)KDgN*Ll1\W
+s+oi(r'L?Lr'^NQs$luXs%!,]r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmnCMds.
+EH?5EGBeF\I=Hd!K8#&9M2[FTOHPfmQ^F53StD^NUo(&hWi`G.Z*UgG\@K5a^;%M$`5Td<b0/&T
+d*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O--n*pAIs7-3^o`"Lap@nO\s7u]kr;6Kkrr)KgJcD/<
+J,~>
+JcC<$RK)pYrr)ior;6Njs7uZhs7ZNerq0FdoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/>=6UaI79(u*N
+:]!oa:]!rh:JUj_s%WPioMG9Z"Ahlh:J^pcqGI8k!*9"t!*8tuoiCcf!*J_npfRMsl<+$gs&f8%
+3j5cnZaI6P]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiEi8N_VjQ5Oekiq?slg4!*mdBQ4nF5u<
+rUTsZrUfdUr:L![qssdWrp]mTs6fpSrp9[N!:'OI#O(@6k2tdejSn0Nio/kSi8<DJh;-l@gY1B7
+f`'J/f%&:"e'cXkd*M^:FNr%QbK@rJaN)<>`Pf[2_SO%&^V7Co]=PP`\@8oT[C!9HZE^X<Y-"h-
+X/`2!W2HPjUnjc[TqS-OSt;LBS!ob4R$X,(Q'@JqOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&Isufo
+I!^0cH$FOWG'.nKF)q8""`SBtDJa4hCB80arb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k+=oVV(
+=8l8#<W?%t;u]bq;>a8j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_46-]Em_2)`,;c-:b9M8&O
+d]ejW@8ooiIGOCe9m21I2`3HN3'&`V4[D:s84c?C7nH6B8P)TG9M.lJ91hiO9M>=Y"A_ce:f.!a
+pJ0m;r'L?Lr'^NQs$luXs%!,]r^qW49MA/T:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmnCMds.
+EH?5EGBeF\I=Hd!K8#&9M2[FTOHPfmQ^F53StD^NUo(&hWi`G.Z*UgG\@K5a^;%M$`5Td<b0/&T
+d*^=le^rI,g>(N@i8EVTjQ5OekiqBum-O--n*pAIs7-3^o`"Lap@nO\s7u]kr;6Kkrr)KgJcD/<
+J,~>
+JcC<$RK)pYrVc`nrVQWks7uZhs7ZNerq0LfoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.:k\@/fOZEUL6Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/>fFE`CrRB"1$
+^%]8=^]2(T_8=+.`Q-$?ao'<VbPo`cblGu^c2Q#bbll88c-FW5ch>cb\b<Q+\+mK4\,*W6\,*Q5
+\,<`@\$icT[^N]UpUU:7!4i$=!4i$=3NfTlZaI6O\\#Pi^r"".`lQ9Fbg+M\dF6Uqf@\d1gtgiE
+i8N\UjQ5Oekiq?slg4!*mdBQ4nF5uHo)A7Zo^VVQo_nCZo)J7ZnGVhUmJuYQliQM<lMg&JkQ'fF
+k5XNCjSn0?io0mp!T2c5h#Z<crn8"<f[na+e^`1!e'cXkd*L"_c-611E6?;DaN)<>`Pf[2_SO%&
+^:h1l]=PP`\@8oT[C!9HZE^X;Y-"h-X/`2!W2HMhUnjc[TqS-OSt2C@S!ob4R$X,(Q'@GpOcYWb
+NfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.nKF)q8""`SBtDJa4hCB80arb)=FB)Z?B
+A7PUJ#@V"J?XI,G?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT
+7IrqB6hNe56-]E9o&o#ddEK_P`Q%lV"7G!AhZ!Nmo#C^7Oc"pXQ'P<MT:hpTU8"NhZ*:I9Z*O>5
+!jK#;rj)O,r3-41[I:Qd62X(J6i9@P7K,dU8,l*[8cD<_92,=ZInid9:f1.i<)lt#=BSd2>[:ZC
+?t*VVAS5[jCM[j*E,fr@G'A4XI!pKpJqJc3M2I7OO-#NhQ'[l-S=Z@HUSOcbWiN8)Yd1UC[^`l[
+]YD8!_o9X:aihoRcHstfeCN7(g=k?<hVd>Oj5f=akNM0qlg4!+n*fc9o()DDo`+Uap&Ojcp]C9f
+qY^6ir;HTdrdk*;s*t~>
+JcC<$RK)pYrVc`nrVQWks7uZhs7ZNerq0LfoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.:k\@/fOZEUL6Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/>W@qKS"I"d^Z
+Nq8>3NrP.EOHGZgPEV7+Q2HjHPQ$gHQ1gI>Q2R$JQ2?mGQi<<LQN3*<OS+\0OR\D2OSb+7OS"\1
+OSk5$Y->4<[C3TU]=ktp_Sa@4aN;WLcHaeae'uq"f\,!6h;7&IiSrnYjlYail07L!m-O--mdKW6
+nF?JJrq$*\nb)kQrU]sXs7-*XrU9dS!:BaO!pf.:rosIH!9a@Ds5a7Aro4%=iVqa9hqn@g!SlH/
+g(N)kf@SU(e^W*tda?Ihcd'h\bl5e)b/q`Ga2Z*;`5BI/_8*h"]tD"i]",A]\$i`Q['R*EZ*:F7
+Xf\\*WiE%sVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%P`h2lOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#
+IXQWlH[:!`G^"@TF`__HErL%^E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&Er`oJ-!*]A)
+s&f;&r`9&!s&Atrs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]Ro0i@@og8%3cMn*u[B$0tS!s>B
+#aPGii5W!rJ?]%Q)o%g@JSSe,D/X>^96PQ*I!L$bJqSl4K7nu5L&Q`/K7no4K7s5VrIt?/MXZB$
+Luq#$6N':L7/o^T7fGpX8,u6\8c_RYr_7l;:Jakb;c?Xq<``C+=^,-:?=.)L@q9.`BPD6uD/O<4
+F*)SLH$XjdIt3-'KnbGAN/`m[P*D5uR%'V;T:r$UVPgGpXfen6ZaI6O\\#Mh^r"".`lQ9Fbg+M\
+dF6Urf@\g2gtgiFi8WeXjlYail0@U$m-a?2nF?)?oCMVSp&F^cp\jjgq>0scqu6NlrUg)?s-`n;~>
+JcC<$RK)pYrVc`nrVQWks7uZhs7ZNerq0IeoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`P]R.^V.:k\@/fOZEUL6Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/>;6:F@69M,%T
+nPB$WqbR)c!DcJh:&drg:\7KX;$9]k:/=[a;#4#l;H$Ll<W6%t<<-(s=7oVf<rc@l=TDS&<rcA!
+=6iuf=oVSaY->4<[C3TU]=ktp_Sa@4aN;WLcHaeae'uq"f\,!6h;7&IiSrnYjlYail07L!m-O--
+mdKW6nF?JJrq$*\nb)kQrU]sXs7-*XrU9dS!:BaO!pf.:rosIH!9a@Ds5a7Aro4%=iVqa9hqn@g
+!SlH/g(N)kf@SU(e^W*tda?Ihcd'h\bl5e)b/q`Ga2Z*;`5BI/_8*h"]tD"i]",A]\$i`Q['R*E
+Z*:F7Xf\\*WiE%sVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%P`h2lOH5H_NJrgSMM[1GLPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TF`__HErL%^E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&Er`oJ-
+!*]A)s&f;&r`9&!s&Atrs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]Ro0i@@og8%3d/Q#ZRr_k8
+;,9q]9hJ#K]UaOb=&)7s^[ApL:rP@H0/>CC3\`HS5sIV$6UOF:84c?D84lNH91f+T"A)6\92#4X
+s%WVi:f.!apeKs;r'L?Lr'^QRr^QlWs%!,]r^m2a9`@b9:/=\_;,^Cm<E<1'=]ns6?!^lG@Uiq[
+B4u!pCi+'/EH?5FGBnL^I=Hd!K8#&:MN!OUOHPinQ^F84StD^OUo(&iX0&P/ZEpsI\@K5a^VI_(
+`Q$!@bKS8Wd*^=lf%8R.g>(N@i8EVTjQ5OekiqBum-O0/n*ol<o(2JFs7QEc!;HHe!r;]hr;6Kk
+rVcBfJcD/<J,~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eoiq([o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3NS!o_1Q'7AlNf8mQLPCJ7J:DugG(#.-UVcl@
+otLI@s1eiT_SX40a2e2#!6P2^q9/`\!mSs5ps&f`qTT/ec-=PZrQk,`rjr*>q7-")m^W;+"1YhK
+[emQ3\GWf:\[_LHq76R:rON!=rjk(nZ*UgG\@K5a^;%M$`5Td<b0/&Td*^=le^rF+g=tH>hr*JQ
+j5f=akNM0plKdg'mI'E2n*oi:rUU![rUfLMrUg*\r:9mXrp]mT!q,ICrTjUOlK\B5s6'IGroOII
+jQ,@]io8qrhuV`lrnRq:gY1B7g"=p.f%'cLJ()indEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co
+]Xtbc\[],W[^EKKZE^X<YHG"0XK/A$WMcYkV50o^U7n9RT:VUDS"#k7R$a5+Q'@JqP*(ieO,f3Y
+N/NRMM26qAL4k23Jq8H&IsufoI!^3dH?jaZGBS+NFE;JBEW9t\Df0H0D#S2XC2%?pB4kgfARo=]
+raGn:@/aO5?3":1>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I
+7/0.A6L@(crsAPdj58D5b/hTCrVluqh4p86ru[U-\!2Z&=-\u0=I5\TUnXT\Uf:9rYHb=:ZEUU<
+Z*OA8!jJl2r3-1,mC).Cr'LBMqaCHQs$lrW!_>mSr^qZ59MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI
+@Uit\B4u!pCi402EH?5FGBnL^I=Hd"KSG8=MN!OUOckroR$jG6StMdPUo1/kX0&S0ZEpsI\@T>d
+^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWBi8N\UjQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]k
+r;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eoiq([o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3NS!o_1Q'7AlNf8mQLPCJ7J:DuUASQ71J<B\g
+plG<4s,[2A"d+t3PE_=,Q2d*JPPp^GQ1gI>Q2R$JQ2?mGQi36JQh-=9O8b1:O8+h,O8b7>O8+e;
+Oc]F%rK7/CplPK;33]Zo['mKT]=bkm_8=.0a2lEHc-F\`e'uq"f@em4h;-uHiSrnYjlYail07L!
+m-O--mdKW6nF?JJs7?3]mIgGMrq$'Ys7-*XrU0gUmHsl=!pf.:rosIH!9a@D#Nb%-j5].YiVqa9
+hqn@g$JaCig=b03f@SU(rmZGHda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q
+['R'CYct=6Xf\\*WiE%rVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o$PEM)kOH5H_NJrgSMM[1GLPCP:
+K7ec,J:N,uI=6KiH[:!`G^"@TF`__HEcH+!E!1)sDJa4hCC=lkBP;$kAn>OaA7PUJ!F]C8?iOF4
+?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_46.,]f
+j1VUmURn!BQC!p;s6@h>V1<aZs8USms+Y?#AOpZVCJ/\lG'eL\H[JIZKnG)6KSG3[KEHgYKS9;V
+!/1?+s+p-!!/Tc'r'LBMqaCHQs$lrW!_>mSr^qZ59MJ5V:Jakb;H$Ln<E<1'=^#$7?!grI@Uit\
+B4u!pCi402EH?5FGBnL^I=Hd"KSG8=MN!OUOckroR$jG6StMdPUo1/kX0&S0ZEpsI\@T>d^VI_(
+`Q$!@bKS8XdF$Fmf%8R.gYCWBi8N\UjQ5OekiqBum-X60n*olInd"dYo_%nNp@nR]s7u]kr;6Kk
+rVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nrVQWks7uWg!Vc<eoiq([o()>?n*f]3m-O$%l0%3kjQ#7Yi83;Fg=k32e^W'q
+d*BnZb/hWB`59@*]tCqe\$`QJYcb+/Wi)_iU7n3NS!o_1Q'7AlNf8mQLPCJ7J:Du76UjU;9MkR\
+nk]6[s%NJgqG6ub!)EJes%`SiohbB["Ahlh:J^pcqG@Do;c?Rl;>XDm<<-)!=7TDc<rc@t=oVV$
+=TDRt=85nr=oDG&=8c5$=8l>^Yd(OA[^`l[]Y;.s_SjF6aND]NcHstfeCE1&g"P3:h;@/LioB+]
+k3(sml0@U$m-X6/n*fc8nbr%YoDS=Kp&4O^oDJ1Znc&%VmfMqEmJZAQlg!d7l2TrIkPjTKjlGL_
+j5T(Wrnmh7hYu=<gtUQ:g"G$0f@JLOe:5rqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf
+\[f5Z[^NTNZa-j?Yck43XfSS'Wi;noVPU)aUS=HUTV%gHS=?":R@'A.QBd\uP*1rhO,o<\N/W[P
+M2@%DL5(A6K7\Z)J:E#rI=-BgH?sj]GB\4QFEDSEEH2"t"E/0qD/B2e$YjBhBP1siAS#C_A,]p<
+@:9(As'>\2r`fM/>$Co.s&]8&rDrqu!*&nqs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]RoL/IA
+oKqq2e,L]h[XVgh<DcOe9hS,N`hnN.>Z!sYR-`[W6,l#@0/5%;3'/r_r]pKM&jo)I3(QY57nHBG
+91_]G91_`Kr_3Yn9heDX9hnM]qG6l]k!Ao3r^6QNs$crWrC6o[8P/nRInNI09hnJ\:f1+h;cHat
+='/U/>?kH@?X[DRAS#LfBkqO&DfKc<FEVkRH@1-jJ:iN0LP^nINK93bPa.W(S"-(CTqeE]W2co#
+YHY==[C3TV]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;@/LioB+]k3(smlKdg(mdKW6nc/.boCV\J
+p%J+RrqQNhs8)Zjrqu`np&9OBR/_[~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg@/'Bgp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLk^S8JUi2gGC#"&TXt$6
+r4`-CrkAEIrkSQM#K+L"a2l<Bao0BWbPo]ec-4E,c2Q#bblGuec2Z)gch,TbdeLBJ\F[2q\Giu2
+\Giu;\GNi8])K5?\G3TiYHbF@[^WfZ]Y;.s_SjF6aND]NcHsteeCE.%g"P3:h;@/LioB+]k2tml
+l0@U$m-X6?mfN"Knbr%YoDeIHp&=U_oDJ1Znc/+Wn,MhUmJcJPli68LklU)3kPjTKjlGL_j5T(W
+rnmh7hYu>[gtUQ:g"G$0f@JL%eC2mpdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z
+[^NTMZa-j?Yck43XfSS'WMl_mVPU)aUS=HUT:VXFS=?":R@'A.Q'IStP*1rhO,o<\N/W[PM2@%C
+L4t;5K7\Z)J:E#rI=-D@H4kLJGB\4QFEDSEEH,r:Df0H0D#S2XC2%?pB4kgfARo=]raGn:@/aO5
+?3":1>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L@(e
+rsA/Shq?B$aMu6<rr3-#i7O[srr4@=s4ElkLg#t,P#kSRUSOTWV5.$g=]qo3Yd(I=YctI>Za@!?
+YHY5/YQ;2?n$_@Er'L?LqaCHQs$lrWHq6h#8kM`L9MJ5V:Jakb;H$Ln<`W:(=^#$7?!grI@Uit]
+B4u$qCi402EccGJG^=^bIXm!%KSG8=Mi<[WOckuqR$jG7StMdQV5L8lXKA\1ZEq!K\[oGe^VI_(
+`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Ufl0/iGlg4$,n*fc9o()DEo_%nNp@nR]s7u]kr;6Kk
+rVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg@/'Bgp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLk^S8JUi2V@VB_%IZ+)`
+plG93rf75EOckomPk^LDPl-aEPQ7!BPkp[EQMm*HQMm0KQM[$;OSk18NW>.7OReJ&OSb1:P4t%n
+YHbF@[^WfZ]Y;.s_SjF6aND]NcHsteeCE.%g"P3:h;@/LioB+]k2tmll0@U$m-X6?mfN"Knbr%Y
+oDeIHp&=U_oDJ1Znc/+Wn,MhUmJcJPli68LklU)3kPjTKjlGL_j5T(Wrnmh7hYu>[gtUQ:g"G$0
+f@JL%eC2mpdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTMZa-j?Yck43XfSS'
+WMl_mVPU)aUS=HUT:VXFS=?":R@'A.Q'IStP*1rhO,o<\N/W[PM2@%CL4t;5K7\Z)J:E#rI=-D@
+H4kLJGB\4QFEDSEEH,r:Df0H0D#S2XC2%?pB4kgfARo=]raGn:@/aO5?3":1>QS,5>5h\)=9)G$
+<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L@(gs#Ku!Z)XXoS=,_1QBV@A
+f"\/VI)Z-cl%&)uF'`EMD/O2a8U#E*H$Xgb91r,YKSG/6Knb86K7el4r.G$(",2JcMXQ>_62X(J
+6i0:O7K5jU7smj!8P2TJ92&&S:/=\_;,U=k<*!%$=BSg3>[:]D@:E_XAnPdlCM[m,EH6/DGBeF\
+I=?]tK7nu7M2R=QO-,TjQC+)0SXuLJUnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcdC1jeCN7)
+g=tH>hr*JQj5f@bkNV4DlKdg(mdKW6nac8Bo^qhLp@e7[q#C0iqY^6ir;HTerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Nj!;ZTg@/'Bgp%@tKo()>?n*f]3m-O'&l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iZLYck10Wi2ejUS4<OS=5h3Q'7AmNf8mQLk^S8JUi2:6pjI79MPCZ
+nP9-[r_<Dfs%`Vir_NDf!)NMer_N2`pJD)j:JOY\:]=2e;$Kos;c6Lj;>=2j<W?,!=7]Jd=8uD$
+=o2=u=TDRt=8Q+r=TDOu=>I(bZa@0M\\#Mg^VRe*`Q-'BbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5Od
+kiq?slg4!*mf)YVnF?&Io)J=]o]YuIo`"I[o)J7[nGVhUmf2\Rm/QDOlMg#Lki_..jp1#/jQ#:[
+io0mp!T2c5h1"/6g=k65f[na+e^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`
+\@8oT[Bm3FZ*:I9Y-"h-X/`.tVl-DgUnjc[TqS*MSt2C@S!ob4R$X)'P`q8nOcYWbNfB!VMi*@J
+Lk^Y<KS+o/JUi9#IXQWlHiA=(H$FOWG'.nKF)l8?E,]`5DJa4hCC=lkBP;$kAn>OaA7PUJ!F]C8
+?iOF4?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_4
+6.Putd$&6L<DlRc9h\/P8?n;#@T6&kGKfB;8!mI6.PED63]f,O5!M:u5sn("3'BGt7n?9E9M7uL
+8kDZK9_qHa:/1^aqG6o^k!Ao3rBpHMs$crWrC;6+8P)NH91qrQ9hnJ\:f1+h;cHdu='/U/>?kH@
+?X[DRAS,RgC27X'DfKf>Fa&(VH[U?nJV/W1LP^qJNfT<cQ'Rf*S"6.DTqnN_W2cr$YHY==[^WfY
+]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/LioB+^k3)!n''efLmI'H3nF?)?oCV\Jp%J+RrqQNh
+s8)Zjrqu`np&9OBR/_[~>
+JcC<$R/cjYrVc`nr;6Njs7uZh#5@ibp%@tKrpj.\nF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^V9JUi2tF*E+iPc)Il
+^&>YF^])"T_8*q+`l?'>aN=D'priZ\!6tMeq9AoaqTT#arltJgrm(Skp!EojdF#J6qmc^:r42^7
+q7#e%rjhg6rjha4!OfN0\H'/:\M:=oZaR?R]"G_k^r"%/a2lEHbg+P^daZdtf@\g3gtgiFi8WeW
+jlY^gl07L!m-O--rpKpXnaZVLs7?6^q=XOVp\"OXrq$'Ys7--YrU9dSs6]gPs6K^MrojLJkNDj,
+!TiDAit15/iS`YOhqm2Fgt^Z<g=b-Xf*0aUeC;sqrm?2Acd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu
+]tD"i]",A]\$i]OZa6sBYct=6Xf\\*Wi;qpVl$;dUnaZXTV%gISXc1=R[KP1QBd`"PEM)kOH5H_
+NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]G^"@TF`__HEcH)<Df>Yn!GuZPCC=lkBP;$kAn>Oa
+A7PUJ!F]C8?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>k:]=,e:&dod9D_?\8c;3V8,PjS
+7J'"C6hNe46.PuApZUYld`oqS`Q%lV"6nO8hZ!O"m_Af%I>1X_Pa,EOStDgPTr"P`<*<;*Xfeh2
+Z*:I=ZF$pCrN?@/Yd(F>mC).Cr'L?Lr'^NQs$luXs%!,]r^qW49MA/T:/=\_;,U=k<E<.%=]np5
+>[CcF@:E_XAnYjmCMds-EH6/DGBeF\I=?]tK7nu8M2R=QO-5]lQC+,1SXuLKUnsugWiW>+Yd:^F
+\%0)_]t_D#`5Td<b0/&TcdC1je^i@*g=tH>hr*JRj5f@bkiq?sm-O--n*^GLnac8Bo`"Lbp@n=\
+q#C0iqY^6ir;HTerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Njs7uZh#5@ibp%@tKrpj.\nF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^V9JUi2t@V'@sH\7IZ
+Nqe\3NrG(@OHG_*Pk^O@PQ$dHQ1gI=Q2[*JQ2HsGQi36HQiE-8OSk18NW>.7O8t@>OT(=?OT(=4
+O9(E(rfQu=!g/S*qiEP:ZEq!K\[oGe^VI_)`Q-'BbKS8XdF-Oof%8R.gYCWAi8EVTj5oFckNV6r
+lg4!*mf)YVnF?&Jo)J=\o_J1Tp@n7Zo`"I[o)J7[nGVhUmf2\Rm/QDOlMg#Lki_..joOT)ro4RL
+iSi_Qhr!;Hh;$f?g=k64rmq>)e^W*tdf.XCd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`
+\@8oS['R*EZ*:I9Y-"h-X/`.tVl-DgUnjc[TqJ$LSt2C@S!ob4R$O#&P`q8nOcYWbNfB!VMi*@I
+LPCP;KS+o/JUi9#IXQWlH[:!`G^+FVG'.nKF)l8?E,T[pD?4TjrbDmVBkV0mB4b^dA7T3L@KBnF
+ra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_ks%iVhr([2br_*,\r^m&ZqFCHQr'g6Gpd=^@
+lp95&'&C.!VP0QLR$X/(s8V-"XeL?Irr3bCQMg,T@mk-NDbNcHGBnI[H[JIZ:eq"C!eH&Zre(E+
+KnP)3re(6*",2JdM!g&\62X(J6i9@O7K5jV8,l*[8cD>292&#R9hnJ\:f1+h;cQk!='8[0>[1TB
+?t!MSAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf+S"6.DU84W`WN*&%YHY@?[^WfY
+]Y2(r_SjF6aND]NcHjndeCE.%g"P3:h;@/Lj5]4_k32'olKmm)mdKTJnF?)?oCW%T!quB_rqQNh
+s8)Zjrqu`np&9OBR/_[~>
+JcC<$R/cjYrVc`nr;6Njs7uZh#5@ibp%@tKrpj+[nF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^V9JUi2t6UXF78ko:[
+o1o?]r_EMhr_<;cr_NDf!)EJe!)EMhohbB["].ui:/=[a;#=)m;H$Ll;Z0Jm<VTVn<W?,!=7]Jd
+<rcA#=o2=u=TDS!<rl?'r`Jnt!E`G#=>@%cZaR?R]"G_k^r"%/a2lEHbg+P^daZdtf@\g3gtgiF
+i8WeWjlY^gl07L!m-O--rpKpXnaZVLs7?6^q=XOVp\"OXrq$'Ys7--YrU9dSs6]gPs6K^MrojLJ
+kNDj,!TiDAit15/iS`YOhqm2Fgt^Z<g=b-Xf*0aUeC;sqrm?2Acd'h\bfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\\*Wi;qpVl$;dUnaZXTV%gISXc1=R[KP1QBd`"PEM)k
+OH5H_NJrgSMM[.EL5(D8K7ec,J:N,uI=6KiH?sj]G^"@TF`__HEcH)<Df>Yn!GuZPCC=lkBP;$k
+An>OaA7PUJ!F]C8?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>k:]=,e:&dod9D_?\8c;3V
+8,PjS7J'"C6hNe46.l3$mAtVB=&Ddh9he8Q8\CLDBin,#?Dm+r?r<nu.5!).2`iiQ5!VA"5sn%!
+3'BDs8kDWH8PD`J91_ZG9h\7Z:&[od;#3u`:?Fk?6N':L7/fXT7fGpX8,u6\8q'E,9MJ5V:Jakb
+;H$Lo<`W:)=^#'8?=.)K@Uit]BP;-rD/O93EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$sM8StMgR
+V5L;mXKA\1Za@0M\[oGe^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N_VjQ>Ugl07L"m-X60mfi4N
+o()DErq-?dp\4[^s7u]kr;6KkrVcEgJcD,;J,~>
+JcC<$R/cjYrVc`nr;6Njs7uZh@JBKhp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GnO,]*TLk^V9JUi2tEcl_aNM=/\
+^&P_I]tV4qr4iTS_SjI6a2lBErlY#ZqTSc[rQb;b!mJp6rm(Mh!7:GermCkqd*Va$osst0q7#e%
+rjhs:qRH^<\%&sI\bWc*\MpauZaI6O]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiEi8N_VjQ>Uf
+kiqBum-O--mdKW6naZVLs7?9_qXsFQq=XaZrq$'Ys7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7A
+ro4%=iVqa>hqm5Gh;$cag()fgf@SU)e^W*tda?Ihci24+c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l
+]=PP_\$i`Q['R*EZ*:I9Y-"e+WiE%sVl-DgUnjcZTqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!U
+MM[1GLPCP;KS+o/JUi9#IXQWlH[:!`GlDmnG'.nKF)l8?E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ
+!F]C8?NOP>?2e(1>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjS7J'"D
+6hE_36.c,CmGd!Sd*9YO`5MZT"8L[%QMph$Q2e1D<eld&Q;^bRT;/*RVPI-i>#qf.Y-.`-s0;g7
+ZEg[;Y5GL(Z0f!]62X(J6i9@P7K,dU8,l*[8cD<_92,=ZInid9:f1+h<)lt"=BSd2>[:ZC?t*SU
+AS,UiC27[(E,fr@Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"61FU84W`WN*&%Yd(OA[^WfZ]Y;.s
+_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;HTerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Njs7uZh@/'Bgp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GnO,]*TLk^V9JUi2t?t<tkFFa=M
+q2b?3rJpuAPQ$gCQ2d*GPOat7Q2[*KQ2?mFQi*0FQgp11O8b1;O7A>2O8k:AOnt.@O-#J&Oo(4A
+OcY_&P5UO@O>jDLZaI6O]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiEi8N_VjQ>UfkiqBum-O--
+mdKW6naZVLs7?9_qXsFQq=XaZrq$'Ys7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7Aro4%=iVqa>
+hqm5Gh;$cag()fgf@SU)e^W*tda?Ihci24+c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q
+['R*EZ*:I9Y-"e+WiE%sVl-DgUnjcZTqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!UMM[1GLPCP;
+KS+o/JUi9#IXQWlH[:!`GlDmnG'.nKF)l8?E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ!F]C8?NOP>
+?2e(1>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjS7J'"D6hE_36.u8h
+mDQ6-US+-FQC!l#s6e1CV4Dkes8UMjs+t/SASZ4&7S.`FG^4U`HqI%.:]?"SJVAc0KS+l0KS+sW
+K*I!_L5(J>M!p,\62X(J6i9@P7K,dU8,l*[8cD<_92,=ZInid9:f1+h<)lt"=BSd2>[:ZC?t*SU
+AS,UiC27[(E,fr@Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"61FU84W`WN*&%Yd(OA[^WfZ]Y;.s
+_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olKmm)mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;HTerdk*:s*t~>
+JcC<$R/cjYrVc`nr;6Njs7uZh@JBKhp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f$r3t
+dEg+^bK7iF`P]R-^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GnO,]*TLk^V9JUi2t6pj@585)eP
+:]*ue:BaKf9h\5Tr_EGgrD<Mis%WPgr_EJhoMG9Z!`2Zfr_NJhqbdAk!`MuprDESkr_rktrDro!
+q,[Jro2bQd!*K/%qH3Yur`B)$qcEc!pK@Dr2mBTo[C3TV]Y2(q_Sa@4aN;WLcHjnce'ut#f\5'7
+h;7&IiT&tZk2tjjl0@U$m-X6/n*fc9nc&+ZoDeIZp%%hPp&=U_oDJ1Znc/+Wn,MhUmJcJPlN$5L
+l2TrIkPjWDjT+B@irS/urnn"<hVR)EgtVh^%b]Ldf@JO'eC;sqdF$=erm#?)bfe2PaiMQD`l5p8
+_ns:,^q[Xu]tD"i]",>[[^NTNZa6sBYct=6XfSS'Wi;qpVl$;dUnaWWTV%gISXc1=R[KP0QBd`"
+PEM)kOH5H_NJrdQM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]rc\ZlF`__HEcH)<DuOVcD/=!'C2.Hr
+BP1phAS#C_A,]p<@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZ
+r^ciTr'pTQoL/LBoKqn1gAa=UM.]sl;G^+_8kMZGWJYV";+a61f[Y73a$hI,0f:mM0/PdV5!hP%
+6T6tg5"\F=8kDTJ8k;TI84lTN9`.Wa:An#c:\miJ62X(J6i9@P7K,dU8,l*[8cD<_92,=ZInid9
+:f1+h<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(E,fr@Fa&(VH[U?nJqJc3Ll%%LO-#NgQ'[l,S"61F
+U84W`WN*&%Yd(OA[^WfZ]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olKmm)mdKW6
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTerdk*:s*t~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7]sqp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!D/jcNMO19\
+]`#P@]EQ!_^;%IurP/ZT`5]g;aN2L%b5'6VbkfT_cMPifbg"E3cMl,id.YlddKItEd*L&8\FmE0
+\G3Pd\,a#7\F[6hZ*UjH\@K5a^;%P&`Q$!@bKJ/Ud*^=le^rI,g>(N@hr*JRj5f@bkNM0plg4!*
+mI'H3nF?&Jo)J=]o_\=LpA4I]o`"I[o)J7[nGVhUmJuYQm/QAOlMg&JkQ'fFk5XNCjSn0?io0mp
+!T2c5h#Z<crn7k8f[na+f%&:"e'cXkd*M^:H-ORVbK@rJaN)<>`Pf[2_SO%&^V7Co]XkYa\@8oT
+[C!9HZE^X<YH=q.X/`2!W2HPjV50l\TqS-OSt;LCS"#h5R$X,(Q'@JqP*(ieO,]*WMi*@JLkg_>
+KnP)2Jq8H&IsufoI!^0cH$FOWG'8"MFE;JBEH#jqDA@#)CMR["BkV0mAnGUcA7K+Y@UW\Qra,_5
+?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_ks%iVhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?m6TJ+
+$2!B;g<n0d`Pfdqrri;[f:hX3s!=QBgRWbJ=H\kF=.GkVTq\?Y<)d%&Y-"h/Z*CO;ZEggCZELI7
+qlg+0[J[N*[cKgQ6N0@L7/o^U7f>jW8,u6\8c_RYr_7l;:Jakb;c?Xq<``C+>$G6;?=.)L@q9._
+BPD6uD/O<4F*)SLH$XjdIt3-'KnbD@N/`m[P*D5uR$sP:T:r!TVPgDnXfen5Za@0N\\#Mg^VRe*
+`Q-'BbK\>ZdF6Uqf@\d1gtgiEi8WeWjlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6Nm
+rUg)?s-Wh:~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7]sqp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!?".G`EdWV(
+Nr"h0NWP9(P5^^CQ2[$FPOat7Q2[*KQ2?mFQi*0DQg^%(O7854O-#J&Onb%:OT:I=OT1IBP5CC@
+O>aAM[C3TU]=bkm_Sa@4aN;WKc-F\`e'uq"f\,!6h;7&IiT&tZk2tjjl07O#m-X3.n*fc9nc&+Z
+oDeI[p$VPMp&=U_oDJ1Znc/+Wn,MeUmJZDOlN$5Ll2TrIkPjWDjT+B@irS/urnmh7hYu=3gtVh^%
+b]Ldf@JO'eC;sqdF$=erm#f6bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6sBYct=5X
+fSS'Wi;qpVl$;dUS=HUTV%gISXc1=R@'A.QBd`"PEM)kOH5H^N/W[PM2@%DL5(D8K7ec,J:N,uI
+=6KiH?sj]GB\4RF`__HEcH)<DuOVhD/=!'C2.HrBP1phAS#C^@q&nU@:9(A!a]/<r`fM/>$Co.s
+&]8&rDiu"<)ifps&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKqq2g]'.[[]H="SXPn2Q
+B_FFf=n2UI_#LYl@[KcEF!'GCi2[8F`qtRH$jp192JB:K7ni1KnG&2K)LB$KE$Z.KnbD@mYBmir
+'LBMqaCHQs$lrWs%!,]r^m2a9`@b9:/=\_;,^Cm<E<1'=^#$7?!^lG@Uiq[AnYmoCi+'/EH?5FG
+BnL^I=Hd!K8#&9MN!OUOHPinQ^F53StD^NUo(&hWi`G.Z*UgG\@K5a^;%M$`5Td<b0/&Td*^=le
+^rI,g>(N@hr*MSj5oFdkiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6Kkrr)KgJcD,;J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7]ppp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8<DIgtLH5f@AC!
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!6:+(08kVfS
+q+pl_r_EPi:&[fd:&[oe:]=2i:]!le:\.EW;$'Qi:B"&f;#=,i;?Bcp;Z0Jm:]X?er)<YrrDro!
+q,[JroN(Wd!*K/%qH3]!qH3VrrE/htr`D(`ZaI6O\\#Mg^V[n-`lQ9FbK\>ZdF6Uqf@\d1gtgiE
+i8N_VjQ>Ufkiq?tm-O-,mdKW6naZVLs7?9_qt9CNqXsj[rq$'Ys7--YrU9dS!:BaOs6B[MrosIH
+!9a@Ds5a7Aro4%=iVqa9hqn@g!SlH/g()fgf@SU)e^W*tda?Ihci248c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]",A]\$i`Q['R*EZ*:I9Xf\\*WiE%sVl-DgUnaZXTqJ$LSt2C@S!fY2Q^3o%P`q8n
+OcYWbNJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TG'.nKF)l8?E,Y_n'l@c&CMITuBP;$j
+An>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]=,e:&dod9D_?\8c;3U
+8,YpT7J'"C6hE_46/DQ'nYgP9=&Dmi:.e)L8@4V)@T6&jBX$BZ8Ut&!.PND43A!'O5<hJ$6UWpo
+5!DS291qlM91h`I8kDWK9_qHa:/1X_qG6r_j[&f2r^6QNs$crWrC?lY!(m/^!D?,c9n,o6:f("f
+;cHat='/U/>?kH??XR>QA7]@dBkqO%DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[ftATq\?[
+Vl?\uY->1;['mKT]=bkm_8=.0a2lEHc-F\`e'uq"f\,!6h;7&IioB(\k3(smlKdg'mI'H3nF?)?
+oCW%T!quB_rqQNhs8)Zjrqucoo_sFAR/_[~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq0OgoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/?!HuaCXLl\@L
+pUpL=s1SKJrP/ZT_o9X9aN2L%b5'6VbkfT_cMPifbg"E3cMl/id.bredf7\td*L%`chY*D\H'.p
+\,Ef:\+R91[fNqHrj_^52nHQ+['mHS]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;-uHiSrnYjlYai
+l07L!m-O--n*fc9nc&+ZoDeI\p&+OVp\X[\p&F[`oDJ1Znc/+Wn,MeUmJZAQlg!d7l2TrIkPjTF
+jlGM%irS/urnmh7hYu=3gtVh^"khP[f@JLOe-XUPdF$=ecHa\Yrl]-#aiMQD`l5p8_ns:,^q[Us
+]Y(kf\[f5Z[^NTNZa6sBYck43XfSS'Wi;qpVkp2bUS=HUTV%gISXc1<R@'A.QBd`"PEM)kO,o<\
+N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]GB\4QrcA<bEcH)<DuOVhD/=!'C2%BqBP1phAS#C^
+@q&nU@:9(A!a]/<r`fM/>$Co.!a&N*rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQ
+oL/IAoKqq2h#@ZFinW#-ai;9<rVlubg7OW/s!RB;s8R@u;NR*,=]M&eUnOKY;cHXqY-"h/Yd(F:
+^Tb)OZ*1=4Ycn#0!OT<4\+I,j62X(J6i0:O7K5jU7fl4Q8cD>392&&S:/=\_;,U=k<)lt#=BSg3
+>[:]D@:E_XAS5[jCM[m,E,fr@G'A4XI!pKpJqJf5M2I7OO-,TiQ'[o.S=Z@HUSOcbWiN8)Yd1UC
+[^`l[]YD8!_o9X:aihoQcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!*n*fc9rpg*]o`"Lap@nO\
+s7u]krVQQkrr)KgJcD,;J,~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq0OgoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/?!HsgN#Ed3.t
+qN(<0!frJ,rfm;Frfm;Dns'!9rg*PKqj./Hqj-rBm?%"%mZ@=,s,d5B!0?o:rfR2A!0@)?s,m;D
+qiNduZa@0M\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL]Ci8N\UjQ5Oekiq?slg4!*mdKW6naZVL
+s7?9_r:U!]p%S@WqXsm\rq$'Ys7--YrU9dS!:BaO!pf.:rosIH!9a@D!p/M(ro4%=iVqa9hqn@g
+!SlH/g'-0^f@SU(rmV8'da?Ihcd'h\bl5e%b/q`Ga2Z*;`5BI/_8*h"]tD"i]",A]\$i`Q['R*E
+Z*:F7Xf\\*WiE%sVl-AeUnaZXTqJ$LSt2C@R[KP1Q^3o%P`q8nOcPQ`NJrgSMM[1GLPCP;KS+o/
+JUi9#IXQWlH[:!`G^"@TFoHIdF)l8?E,Y_n'l@c&CMIQtBP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1
+>?Y50=TV],=8c/$<E)rr;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjS7J'"C6hE_46/MVppr'D4
+U7@^>QBd^7s5h5'U4%4Gs8T`cs6Np!6u-XW9Ls>LH$FX]8kV`OKS+r0rIb<7Jq\l2r.Fs&!JuX#
+LZLi"6N':K7/o^U7f>gY84cDP8q0K-9heAY:f("e;c?Xq<``C+>$G6;?XI5N@qB4aBPD6uDJsK6
+F*)SLH$XjdIt3-'L51VCN/`m\P*D5uR@B_<T:r$UVPgGpXfen6ZaI6O\\#Mh^r"".`lQ9Fbg"G[
+dF6Uqf@\g2gtgiFi8WeXjlYail0@U$m-X91nF?MK!V>s_o`=d\rV6Egs8)]krVZZno_sFAR/_[~>
+JcC<$R/cgXrr)ior;6Njs7uZhs7ZNerq0LfoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQSSXZ(8QBdVqO,f0VM2-h<Jq/?!HpU1h84cPO
+:]!od:B=3br_*;dr_EGgr_WSiqbH]YpJCug:JUmbr)!;gs&&ns;H!Ei!DlSk:ARoi<W#ns=8Gts
+=8Q%d=8uD#=oDG'='5E(qH3VrrE/ht2H[;m[^WfZ]Y;.s_SjF6aND]NcHsteeCE1&g"P3:h;@/L
+ioB+]k3(sml0@U$m-X60n*ol;rpp*\s7H6^r:]gXqtBmZs7H<^r:9mXs7$!Us6]mSrTjUOlK\B5
+s6'IGroO:DjQ-=#!TN);huV`lrnRV1g]#n1g"=p.f%'cL$.I>MdEp4bcHXT4bA>>CaN2EA`Pod5
+_SX.)^V7Co]Xtbc\[],W[^EKKZa-j?YHG"0XK/A$WMl_mV50o^U7n9RT:VXFS=>t8R$a5+Q'ISt
+P*1rgO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS-.F9Q`+EH,r9rb`HfChmg$Bk_6o
+B4baeARo:\@U`bS@/aL7?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>j:Amod9`@]^9)_E]
+8GPdR7f5^I7/0.A6L@(rs$Y>!Am&&/9h\5Q84UCdK5"F`7RWBf[:D\0U*hQC2E<`S1I")i6:=4%
+3&a#n8P;]K91hfW8kV`J91qrQ:/+JX:JO[^;#3ub:?=e>6N':K7/o^U7f>gY84cDP8q0K-9heAY
+:f("e;c?Xq<``C+>$G6;?XI5N@qB4aBPD6uDJsK6F*)SLH$XjdIt3-'L51VCN/`m\P*D5uR@B_<
+T:r$UVPgGpXfen6ZaI6O\\#Mh^r"".`lQ9Fbg"G[dF6Uqf@\g2gtgiFi8WeXjlYail0@U$m-X91
+nF?MK!V>s_o`=d\rV6Egs8)]krVZZno_sFAR/_[~>
+JcC<$R/cgXrVc`nrVQWks7uZhs7ZNerq0RhoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19QBdYsO,f0WM2-h=K7JH"HuF(MKT2J,
+^\kbD]DoMG]tV4qrP/]T_o0O6a2lBErlY&[q98][rQb;b!mJp6rm(Mhs3UMfrmLho"jkTAcHji9
+\a$]i[fEr3\+I01\,No:\,Wr=\%)@H!4`$=2S-3#[^WfY]Y2(q_SjF6aND]McHjndeC<($g"P39
+h;7)JioB+]k2tmll0@U$m-X60n*oi:rpp*\s7H6^rV#dUr:^$\rq-3]rUTsXs7$$Vs6fpSrp9[N
+s6BUJ!pJh1roS^ljQ,@]io8qTi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@rJaN)<>
+`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa$a=YHG"0XK/A$WMl_lV50o^U7n9RT:VXES"#k7R$a5+
+Q'IStP*(ieO,f3YN/NRMM26reL)#DqK7ec,J:N,uI=6KiH?sj]GB\4QrcAfpEcH)<Df0H0D/=!'
+C2%BqBP1rVAHuaU@q&nU@:9(A!a]/<r`fM/>$Co.!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;a
+qb$iZr^ciTr'pTQoL/IAoKqq2hu<lUk2"_9bPfEZrri,Re=Q71s"0`?NeUSgNKfZ+<19GSTV83V
+<)Qc"Xf\b1Z*:J4s1Z7QYck14YHY79Yd:dHqmZ4+j[&f2rBpHMs$crWrC;<-8P)NH91qrQ9hnJ\
+:f1+h;cHdu='/U/>[1QA?X[DRAS,RgC27X'DfKf>Fa&(VH[U?nJV/W1LP^nINfT<cPa7])S"-(C
+TqeE]W2co#YHY==[C3WW]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;7)KioB+]k3(smlKeK:%drfS
+nF?)?oCMVIp%J+RrV-HiqYL-erqu`no_sFAR/_[~>
+JcC<$R/cgXrVc`nrVQWks7uZhs7ZNerq0RhoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19QBdYsO,f0WM2-h=K7JH"HsU5oDKU>a
+OSk14NWP9'P5UXFPlR'JQ2[$GPOat7Q2[*KQ2?mEQi!'LQ^7E5qiKm"o8is7rfHu;s,d8CpQ,B9
+q2bfAOH>TeP*5a*26sQs\%0)_]t_A"`5Td<b0/#ScdC1jeCN7)g=tE=hVd>Oj5f=ak32'olKdg'
+mI'H3nF5uIo)J=]o_eC\p@7nTpA=O^o`"I\o)A1ZnG_nVmf2\Rm/QDOlMg#Lki_..k'uLRjQ#:[
+io/hRhr!;Hh;$f?g=k64f[na+e^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`
+\@8oT[C!9HZ*:I9Y-"h-X/`2!W2HMhUnjc[TqS-OSt;IAS!ob4R$X,(Q'@JqOcYWbNfB!VMi*@J
+Lkl"b'nq<nK7\Z)J:E#rI=-BfH?jaZGBS-.F;&_9EH,r9DJj<.Chmg$Bk_6oB4h-S#@q=S@U`bS
+@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.A
+6L@(ss#8rJWhc;WR?j/(Q2gC%\u)$H^&S,fHKT3V7Up1LDb*KCGBe@XH[ACX:5"7QJqSf0K`D(5
+O+dLb#D.S_KnY8<M!]uZ62X(J6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_;,U=k<*!%$=BSg4>[:]D
+@:E_XAnPdlCM[m,EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOfdWiN8*Yd1UC[^iu^
+]t_A"_o9X:aihoRcdC.heCN7(g=tE=hVdAPj5f=akNM0qli6;]mdKW6nac8BoCV_Kp@e7Zp]C9f
+qY^6ir;HTdrdk*:s*t~>
+JcC<$R/cgXrVc`nrVQWks7uZhs7ZNerq0OgoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19QBdYsO,f0WM2-h=K7JH"HpU1f7n63F
+qbR,a!)EMh!DZAg9E7fc:B"&g;#X8i:B+,\;"mfg:esjc:]+&d;>jAn;,I6h!DlSj:B"8i<;T\i
+<rQ1t<qBAm=T)>$=Su=u=T;P&=9)G%=Sl1u=T;M(=T)A[ZEq!K\[oGe^VI_)`Q-'BbKS8XdF-Oo
+f%8U/gYCWAi8EVTjQ5Odkiq?slg4!*mdKW6nF?MKs7?9_r:U$^nb;tTqt9s\rq$*Zrpg$XrpTmT
+s6]gPs6K^MrojLJkNDj,J*#bPj5].YiS`YOhqm2Fgt^Z<g=b-2f@SU(eC;srda?Ihcd'h\bfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*DYct=6Xf\\*WiE%sVl$;dUnaZXTqJ$LSt):>
+R[KP1Q^3o%P`q8mOH5H_NJrgSMM[1GL]<)DKnP)2Jq8H&IsufoI!^0cH$FOWG'3e+'6A26EH#i6
+DJa6,CMR[!BkV0mB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`K;)=',B%s&K(urDW_os&&_ks%iYi
+r([/ar_*,\r^m)[q+(?Pr'g6Gpd=[?m6T_27(IbS=&Dgg9M.lI8?.Vf?W9]eD7@fA6Cg.e.5Eb=
+3AE?P5<hJ#6:<dl4\A:=91hiM9)nol<_6"Y9MJ8V:/+MY9i(X_qG6u`j[&f2rBpHMs$crWrC;<-
+8P)NH91qrQ9hnJ\:f1+h;cHdu='/U/>[1QA?X[DRAS,RgC27X'DfKf>Fa&(VH[U?nJV/W1LP^nI
+NfT<cPa7])S"-(CTqeE]W2co#YHY==[C3WW]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;7)KioB+]
+k3(smlKeK:%drfSnF?)?oCMVIp%J+RrV-HiqYL-erqu`no_sFAR/_[~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg!Vc<eoj.4]o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS=5h3Q'7AmO,T!RLk^S8JUi2tH?"+XLm"UV
+qRcd?&A>fk^;%Fu^qmn*`Q#s=aN=G(q9/TXqT\uaps&f`rQbJjpX/rf#gq#Fcd'h^cHZ9tlF?i&
+qmQ@1!OfK7\G!E.\-'4M\@MLHrjVR21paTu\@T>d^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVT
+j5oFckNV6rlg4!*mdKW6nF?MKs7?9_rUp-_qtKs^qY0s^qXsm\rq$*Zrpg$XrpTmTs6]gPs6K^M
+rojLJkNDj,!TiDAj*p"HiS`YOhqm2Fgt^Z<g=b-2f@SU(eC;sqda?Ihcd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`QZa6sBYct=6Xf\\*WiE"qVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%
+P`h2lOH5H_NJrgSMM[1GLPCP;K`?Z:Jq8H&IsufoI!^0cH$FOWG'3e+'6A26EH#i6DJa6,CMR[!
+BkV0mB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`K;)=',B%s&K(urDW_os&&_ks%iVhrD!8br_*,\
+r^m)[q+(?Pr'g6Gpd=[?m6T_2#k-a,eBQ+S`5V]T"6\@2Q2^e#m'ZliG_B7]P*/q9StVjPUn^pg
+=Kej0Xo5I*ZN't(^'_WWY-5(6Z*:OB[edK+[cBaP6N':L7/fXT7fGpX8,u6\8q'E,9MJ5V:Jakb
+;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$jG7StMgR
+V5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60mgJXT
+o()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg!Vc<eoj.4]o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS=5h3Q'7AmO,T!RLk^S8JUi2tH=:?#Ed<8#
+n;[R3P*>d-rK[DIqigW9qN_&Grg!>Gr0R5Fpm;#Hq2jZuplPB8rfHu;q2bT;n<![4rf[;D1paTu
+\@T>d^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTj5oFckNV6rlg4!*mdKW6nF?MKs7?9_rUp-_
+qtKs^qY0s^qXsm\rq$*Zrpg$XrpTmTs6]gPs6K^MrojLJkNDj,!TiDAj*p"HiS`YOhqm2Fgt^Z<
+g=b-2f@SU(eC;sqda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`QZa6sBYct=6
+Xf\\*WiE"qVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%P`h2lOH5H_NJrgSMM[1GLPCP;K`?Z:Jq8H&
+IsufoI!^0cH$FOWG'3e+'6A26EH#i6DJa6,CMR[!BkV0mB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3
+r`K;)=',B%s&K(urDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=[?m6Tb3.F#/qU7Id?
+Q'IU6s5:esTRM.8s8B9^im1_98S`-Z96>?#G^4[a9M81\KEm']KnG&1s8W%Y$%mh_L4t>9M26uU
+LZCc!6N':L7/fXT7fGpX8,u6\8q'E,9MJ5V:Jakb;H$Lo<`W:)=^#'8?=.)K@Us%^BP;-rD/O93
+EccGJG^=^bIXm!%KSG;>Mi<[WP*;/sR$jG7StMgRV5L8lXKA\1ZF%'L\[oGe^VI_(`Q$!@bKS8X
+dF-Oof%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60mgJXTo()DEo_%nNp@nR]s7u]kr;6KkrVcEgJcD):
+J,~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTg!Vc<eoj7:^o()>?n*f]3m-O$%l0.9ljQ#7Yi8<AGgY1<3f$r0r
+d*BnZb/hWB`59@*^:_%f\$iWKYck10Wi2ejUS4<OS=5h3Q'7AmO,T!RLk^S8JUi2tH:(%h84lQP
+:]=,e9`Rrf:B=3br_3>dr_EGgr_WSis%`Mgo2,0Y!`2Zfr_NGgqbd;i!Du\m;#sKhrD*Ags&T"s
+rD`YopK%8pqc<JnqcNbt!*K5'pfIMtpfRMsqH3Yu1paTu\@T>d^VI_(`Q$!@bKS8XdF$Fmf%8R.
+g>(N@i8EVTj5oFckNV6rlg4!*mdKW6nF?MKs7?9_rUp-_qtKs^qY0s^qXsm\rq$*Zrpg$XrpTmT
+s6]gPs6K^MrojLJkNDj,!TiDAj*p"HiS`YOhqm2Fgt^Z<g=b-2f@SU(eC;sqda?Ihcd'h\bfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`QZa6sBYct=6Xf\\*WiE"qVl$;dUnaZXTqJ$LSXc1=
+R[KP1Q^3o%P`h2lOH5H_NJrgSMM[1GLPCP;K`?Z:Jq8H&IsufoI!^0cH$FOWG'3e+'6A26EH#i6
+DJa6,CMR[!BkV0mB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`K;)=',B%s&K(urDW_os&&_ks%iVh
+rD!8br_*,\r^m)[q+(?Pr'g6Gpd=[?m6Th50BJmI>?"Hp9hS/N8Aq0MAQDPq7"r^[>t:$2-SI,1
+2``c[5!D4u6UWmn5"S=<9)_Hc8kB!^rDrql!)NSg"&DWd:ARf`:]*uK62X(J6i9@O7K5jV8,l*[
+8cD>292&#R9hnJ\:f1+h;cQk!='8[0>[1TB?t!MTAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1Ll%%K
+NfT?eQ'Rf*S"6.DU84W`W2cr$YHY=>[^WfY]Y2(q_Sa@4aN;WLcHjndeC<($g"P3:h;@/LioB+^
+k3)!nlKdg(mdKTPnF?)?oCV\Jp%J+RrqQNhs8)Zjrqu`np&9OBQiDR~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTgA,#]jp%@tKo()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+d*BnZbK.`C`59@*^:_(g\$iZLYck10Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^S8JUi2tHZ=1SKoVh;
+]_]8?]FMWh^;%J!_8=(,`Q#s>ao9HZbP9<Xc2Gr_c2Q#ecN)>ddJ_JqdEp4crQYMibK79h\a?p+
+\,Wo5\,<Z7\,3]/\,*W5\bN]0\MUY#[^`l[]Y;.s_o9X:aihlPcHstfeCE1'g"P6;hV[8Mj5]4_
+k3(smlKdg'mI'H3nF5uIo)J:]o_eC]pAF[Wq#'mbpA=O^o`"I\o)J7[nGVhUmf2\Rm/QAOlMg&J
+kQ'fFk5XNCjSn0Nio/kSi8<DJh;-l@gY1B7f`'J+f%&:"e'e6CIaHEdcHXSVbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbc\[],W[C!9HZE^X<YHG"0XK/A#W2HPjV50o^U7n9QSt;LCS"#k7R$a5+Q'@Jq
+P*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS+NFE;MDEH,r9s).jR"DhjhC2*Z\
+!G?$DAH?=OraGq;?srt@!FB(2>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`Ic_9)V?\
+8GPdR7f5^I7/0.A6L@)!rs7lJg="9f`Pfaorr_62U"95C*3.lQQ[=HhOHEC>S=cOLTr+Pa;HBs&
+YH>(6Yd+0,r4`38"L52:[C5n?osWpIr'LBMqaCHQr^QlWs%!,]r^m2a9`@b9:/=\_;,U=l<E<.&
+=]ns6?!^lG@U`kZAnYmnCMds.EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQC+,1SXuOLUnsugWiW>+
+Z*UgG\%0)_^;%M$`5Td<b0/&TcdC1je^i@*g=tH>hr*JRj5f@bkNV6rm-O--n*fc9o()DErq-?d
+p\4[^s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTgA,#]jp%@tKo()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+d*BnZbK.`C`59@*^:_(g\$iZLYck10Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^S8JUi2tHXC5qDfgGe
+O7J;4OHG_*PQ$gFQ2d*GPOk%8Q2[*KQ26gEQhcsBQiE?QP`q1'OQ_`*NrG+7OSb1>OSY%$OT1IC
+Ou0MQ[^`l[]Y;.s_o9X:aihlPcHstfeCE1'g"P6;hV[8Mj5]4_k3(smlKdg'mI'H3nF5uIo)J:]
+o_eC]pAF[Wq#'mbpA=O^o`"I\o)J7[nGVhUmf2\Rm/QAOlMg&JkQ'fFk5XNCjSn0Nio/kSi8<DJ
+h;-l@gY1B7f`'J+f%&:"e'e6CIaHEdcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[C!9H
+ZE^X<YHG"0XK/A#W2HPjV50o^U7n9QSt;LCS"#k7R$a5+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS+NFE;MDEH,r9s).jR"DhjhC2*Z\!G?$DAH?=OraGq;?srt@!FB(2
+>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/0.A6L@)#s"EiU
+XJMY^R[08)PQ1[B_Pj&UV"4QNL9.Or>%1'=D+@3?G'8+VI!\LY:P=CRJVF)VrVunXrf78<KnY8<
+LktGRj?`]1r^6QNs$coVr^ZuZ!(m/^!D?,c9n,o6:f("e;cHat<`iL->?kH??XR>PA7]@dBkhF#
+DK'T9FEMePH@('hJ:W?,L5:\EN/s'`PEhH$R[]k>Tq\?ZVl?\tXfo"9['mHS]"Gbl_8=.0a2lEH
+c-FY_daZguf@em4h;-uHiT&tZk2tjkl0@X%mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`np&9OB
+QiDR~>
+JcC<$QiHaXrVc`nr;6Nj!;ZTgAbYolp%@tKo()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1<3f$r0r
+d*BnZbK.`C`59@*^:_(g\$iZLYck10Wi2hkUS4?PS=>n4Q'@GnO,]'SLk^S8JUi2tHU:(g7S$-F
+:JO[_:&duf:C']i9MA/S9hnI_:]=2i:B4/f:\.EW;$'Qi:B"&e;#=,g;?9Wkr_W\m:]4&g:]F/i
+<VTVn<;9Ji<rQ2"<qTPk=Su7^=T;P(=T2G[ZaI6O\\#Mg^VRh,`lQ9FbK\>ZdF6Uqf@\d1gtgiE
+i8N_VjQ>UfkiqBum-O--n*fc8nc&+Zo)SF\p&=[_p[n7Yp\jg_p&=U_oDS7[nc/+Wn,MhUmJcJP
+lN$5Ll2TrIkPjWDjT+B@it15/iS`YOhVR)EgtUT;g=b-Xf*0aUeC;sqrm?2Acd'h\bfe2PaiMQD
+`l5p8_ns:,^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\\*Wi;qpVl$;dUnaZXTq@pJSXc1=R[KP1
+Q^3o$PEM)kOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`__HF)l8?E,Ybos(qmT
+CMR[!rb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]F2f:&[id
+9D_?[8cD9V8,PjS7J'"C6hE_460A2'b)9k6;G^+_8kV]Ga/"8s<),k`R`1C^?sPE60.f%@0/PgW
+5XIb'6od1i8kDZK8kVcLrVudr##.ie:/+GXq,$o`r(c<=r'LBMqaCHQr^QlWs%!,]r^m2a9`@b9
+:/=\_;,U=l<E<.&=]ns6?!^lG@U`kZAnYmnCMds.EH6/DGBeF\I=?]tK8#&9M2R=ROHPfmQC+,1
+SXuOLUnsugWiW>+Z*UgG\%0)_^;%M$`5Td<b0/&TcdC1je^i@*g=tH>hr*JRj5f@bkNV6rm-O--
+n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcEgJcD):J,~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpj4^nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GoO,]*ULk^V9Jq/;uHZ!bGJ;KGf
+bP\sU]">Vg^:sT]#f+9n_o0R8aN=G(s3(Das3(2]qT\uaps&f`rQbJjpX/rf"4>KAci),lc-+5L
+a8NOD\a-d"[fEl9[/m_FqmcO4qRH=2pp^@8\GWli['mHS]=bkm_8=.0a2lEHc-F\`daZh!f@em4
+h;-uHiSrnYjlYail07O#m-X6?mfDqJrpp*\!;-3^s7ZEcn+chTrV$0^rq-3]rUU!Ys7$!Us6]mS
+rTsRM!:'RJs6'IGroX7B!9F.>!TN);i!/)qhVI#Cg]#oVg"=p.f%/C$eC2jndEp4ccHa\YbKJ&M
+aN2EA`Pod5_SX.)^V@Lr]Y(kf\[],W[^EKKZa-j?Yck43XfJJ%WMl_mVPU)aUS=HTT:VXFS=?":
+R@'A.Q'IStP*1rhO,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]s*#-"F`__HEcQ/>E,TW3
+D/=$(CMIS_BE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jd
+r_3;aqb$iZr^ciTr'pTQoL/IAog8"2k5P_YjP8D5b0%cDr;QlXe=bk$rtq:+O+gVfNK]Q0<19GT
+TVA8]<*ED+Y-+u-YQ1s,s8'G3Yd1XEpp]t*j?`]1rBpHMs$crWrC6o[8P/nRIS3@/9hnJ[:f1+h
+;cHat='/U/>?kH??XR>QA7]CeBkqO%DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[]n@Tq\?[
+Vl?\tY->1;['mKT]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3"n;'Q
+o(2MQo`Fj]p\ssfq>^<hqu6NlrUp/@s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpj4^nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GoO,]*ULk^V9Jq/;uHX1)mCiaoT
+POa_:OHPfjPQ$gEPlR'HPOk%7Q2[*KQ26gEQhcsBQiE?OPl?mFO84n'O8Y+<O8+h6OoCI=O6r#1
+O-#G%OT1Fq['mHS]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;-uHiSrnYjlYail07O#m-X6?mfDqJ
+rpp*\!;-3^s7ZEcn+chTrV$0^rq-3]rUU!Ys7$!Us6]mSrTsRM!:'RJs6'IGroX7B!9F.>!TN);
+i!/)qhVI#Cg]#oVg"=p.f%/C$eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[],W
+[^EKKZa-j?Yck43XfJJ%WMl_mVPU)aUS=HTT:VXFS=?":R@'A.Q'IStP*1rhO,o<\N/W[PM2@%D
+L5(D8K7ec,J:N,uI=6KiH?sj]s*#-"F`__HEcQ/>E,TW3D/=$(CMIS_BE;aXrac+@A,]p=@:3LB
+?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTr'pTQoL/IAog8"2
+kPkkB\#H0qS!]S.QN$n-iPMOaIBN>EeU#ba@7Fa@CMlj=FEVnRH@&7W:ecUrJqO&U!.t1LrJpo=
+"HJ4nLl(MSj?`]1rBpHMs$crWrC6o[8P/nRIS3@/9hnJ[:f1+h;cHat='/U/>?kH??XR>QA7]Ce
+BkqO%DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[]n@Tq\?[Vl?\tY->1;['mKT]=bkm_8=.0
+a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6Nl
+rUp/@s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZh#5@ibp%@tKrpj:`nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r0s
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQS=>q6Q'@GoO,]*ULk^V9Jq/;uHU0td7n?9I
+:ejda:&duf:B4/f9`Ife:B"&g;#!iY;"dcd;#O2f;#4&g;?9Wkr_W\m:]4&g:]4&e<V]\f<<-(q
+=8c1m=8Q+t=5[15['mHS]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;-uHiSrnYjlYail07O#m-X6?
+mfDqJrpp*\!;-3^s7ZEcn+chTrV$0^rq-3]rUU!Ys7$!Us6]mSrTsRM!:'RJs6'IGroX7B!9F.>
+!TN);i!/)qhVI#Cg]#oVg"=p.f%/C$eC2jndEp4ccHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf
+\[],W[^EKKZa-j?Yck43XfJJ%WMl_mVPU)aUS=HTT:VXFS=?":R@'A.Q'IStP*1rhO,o<\N/W[P
+M2@%DL5(D8K7ec,J:N,uI=6KiH?sj]s*#-"F`__HEcQ/>E,TW3D/=$(CMIS_BE;aXrac+@A,]p=
+@:3LB?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTr'pTQoL/IA
+og8"2l2NU6Xa=AU;c$.^91hkJc)-&'<)#bdTtbn?L,g_40JtaK2DdN]5XIe+3B02d8kM`K8kV`H
+rVuaq"BA2k9htI[qG7&bj?`]1rBpHMs$crWrC6o[8P/nRIS3@/9hnJ[:f1+h;cHat='/U/>?kH?
+?XR>QA7]CeBkqO%DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[]n@Tq\?[Vl?\tY->1;['mKT
+]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0@X%mI'H3"n;'Qo(2MQo`Fj]p\ssf
+q>^<hqu6NlrUp/@s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZhAG>fkp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/?!I!TdRI"mWS
+^:X?T!P?#D^&PeR^VI\%_Sa@5aN;R#b5]Z[bk]N_cM5Z`cMc&hd.brcdK7eAci),nc-4>Na2YXe
+\H'/8\aI!-\c927\,Wo:[/m_FqmcO4rj_L/s1&$<!4r0?1UFO!\[oGe^VI_(`Q$!@bKS8XdF-Oo
+f%8U/gYCWBi8N\UjQ5Oekiq?slg4$,mdKW6nc&+Zo)SF\p&Faap[.bRp\sm`p&=U`oDJ1Znc/+W
+mfMqEmJZAQlg!d7l2TrIkPjTKjlGL_j5T(Wrnmh7hYu=3gtVh^G1kO"f@JL&eC;sqdF$=ecHa\Y
+bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"h\[f5Z[^NTNZa6sBYct=6XfSS'Wi;qpVl$;dUnXQVTV%gI
+SXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMM[1GLPCM9K7ec,J:N,urd>6'H[:!`G^"@TF`__HErL%c
+E,TW3D/=$(CMIS_BE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mi
+s%`Jdr_3>bqb$fYr^ciTr'pTQoL/IAog8"2kl1qUiS2i+b0%fEr;R_od[o\&s8.rY^j(BaNKfZ1
+<19GRTV82]<EXSGY5PU%s7sA/[J.0([cBaP6N':K7/o^U7f>i+84cBF8kVfN9heAY:f("e;c?Xq
+<``C+>$G6;?XI5N@qB4aBPD6uDJsK6F*)SLH$XjdIt3-'L51VCN/`m\P*D5uR@B_<T:r$UVPgGp
+Xfen5ZaI6O\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\d1gtgiEi8WeWjlYail07O6lj<(In*fc9o()DE
+rq-?dp\4[^s7u]kr;6Kkrr)KgJcD):J,~>
+JcC<$QiHaXrVc`nr;6Njs7uZh@e]Tip%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/?!I!T42BlA*B
+o8`j3"-A\/PPpaFPm!D<P`q=$PkgUCQN*6HQMd*EQMHmIQ2m3LP6$i-r/^o>q2jp'rJpl<plPB8
+rfI#<l];+/rfAqB[^WfY]Y2(q_Sa@4aN;WLcHjndeC<($g"P39h;@/LioB+]k3(sml0@U$mI'E2
+n*olHo)J:]o_eC^pAOaQq#'mcpA=O^o`+O\o)J7[nGVeWmd9E?liQM<lMg&JkQ'fFjp1#/jQ#:[
+io0mp!T2c5h#Z<crn;PKf[na+e^`1!e'cXkd*L"_c-4DTbK@rJaN)<>`Pf[2_SO%&^V7Co]XkYa
+\@8oT[C!9HZE^X<YHG"/X/`2!W2HPjV50o]TqS-OSt;LCS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRM
+M26qAKnP)2Jq8H&It%BF%=EMKH?jaZGBS+NFE;L%E=-Z'DJj<-Chmg$C&VcHB4h-S!G#^>@KKtG
+@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iYir([/as%E5]rCQuZq+(?Pr'g6Gpd=^@
+lp9q:$N8&OVP9WMR$X,(rr4,(_P`oPZN'sCF7#2p?Y!keDG3TCGC"L[HV6t,@>0>cre(9(qu?JP
+!/^&tj?`]1rBpHMs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h;cHat='/U/>?kH@?X[DRAS#LfBkqO&
+DfB];FEVkRH@1-jJ:`E.LP^nINK93bPa.T'S"-(BTqeE\VlHf"Y->1;[C3TU]=bkm_8=.0a2lEH
+c-F\`e'uq"f\,!6h;7&IioB(\k3(sml0JB9$170Ln*ol<o(2MQo`Fj]p\ssfq>^<hqu6NmrUg)?
+s-Nb9~>
+JcC<$QiHaXrVc`nr;6Njs7uZhAG>fkp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C4Wi;nmUnXNRSXZ%7QB[PpO,]*UM2-e;Jq/?!I!S+H7RfsB
+9htX]s%W\m:/4MXrCm5c!)EJgrD<>doMG3X!)WVir)!5e#uXVu;,C(d;,C'e:B"&g:&n)e<WH.q
+<qKAl<r#hq<qTPk=Su7j=T;Iu=T)AYZaR?R]"G_k^r"".`lQ9Fbg+P^daZdtf@em4gtglGiSrnY
+jlYail07L!m-X6/n*fc9rpp*\!;-3^s7ZEcmJ-VRrq?6^rq-6^r:9mXs7$!U!q,ICrTjUOlK\B5
+s6'IGroOIIjQ,@]io8qrhuV`lrnRV1g]#oMg"=p.f%&=#eC2jndEp4bcHXSWbKJ&MaN2EA`Pod5
+_SX.)^V@Lr]Y(hd\[],W[^EKKZa-j?Yck43XK/A$WMl_mVPU)aU7n9RT:VXFS=?":R@'>,Q'ISt
+P*1rhO,o<\N/W[PM2@%DL4t;5K7\Z)J:E%II1:RNH?sj]GB\4QFEDSErc&9aDf0H0Ci!m&C2*Z\
+!G?$DAH?=OraGq;?srt@!FB(2>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`Ic_9)V?\
+8GPdR7f5^I7/0.B6L7#(s"E#jBj4P7:/+GT8k\s4YD-Od9133g[;7sq:+%SJ1c@?N1d+#f6:41#
+3'KZ#9M>@W!(m(fqGmVs:A7T]:]4&L62X(J6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_;,U=k<)lt#
+=BSg3>[:]D@:E_XAS5[jCM[m,E,fr@G'A4XI!pKpJqJf5M2I7OO-,TiQ'[o.S=Z@HUSOcbWiN8)
+Yd(OB[^`l[]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hV[8Nj5]7`kNM0pli6;XmI'H3nF?)?oCW%T
+!quB_rqQNhs8)Zjrqucoo_sFAQiDR~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7^!rp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYrO,f0VM2-h=Jq/?!I!T^MGCbU7
+Wm(IR!P?#D^&G_S^VI\%_o9X9aN;TIao0B^bP9<Wc2Q#`c2Q#ecN)>ddJVGmciDDjc3MV<b/hTB
+`Phbcn[\/!s1/0>pp^:3"1>SG\,3]6\,Wu(\c')q\[AlU\\,Vj^r"".`lQ9Fbg+P]dF6Urf@\g2
+gtgiFi8WeWjlY^hl07L!m-O--n*fc9rpp*\!;-6_rq??cl1k5OrV$0^rq-6^r:9mXs7$!U!q,IC
+rTjUOlK\B5!pJh1roOIIjQ,@]io8qrhuV`lrnRq:gY1B7g"=p.f%'cL$.I>MdEp4bcHXT4b@Jc;
+aN2EA`Pod5_SX.)^V@Ip]Xtbc\[],W[^EKKZa-j?Ycb+1XK/A$WMl_mVPU)`U7n9RT:VXFS=?":
+R$a5+Q'IStP*1rhO,o<\N/W[OM26qAL4t;5K7\Z)J:E#rI=-D@H3nkAGB\4QFEDSErc&*\Df0H0
+D#S2NC2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic
+9`@]_9)V?\8GPdR7f5^I7/94B6L7#(rsAM`hqHH%b/q`Dr;RhrT:,*Hs6?BZds6XMNf]E,R%9nE
+Tq\>_<EQH-Xf_T,qZ$<(pp^"+j$ET0rBpKNr^HiVr^ZuZ!(m/^HV7%+9heAY:f("e;c?[s<``F,
+>$P<=?XR;O@qB7bBPM=!DJsN8FEMePH@('hJ:W?+L51VCN/is]P*D9"R@B_<TV8-VVl6VrXfen6
+ZaI6O\\,Vj^r"".`lQ9Fbg+M\dF6Urf@\g2gtgiFi8WeXjlYail0@U$lic_Dn*olHncA@Srq-<c
+p\jmeq>^<hqu6NmrUg)?s-Nb9~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7^!rp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYrO,f0VM2-h=Jq/?!I!T..ASlI6
+KU)7ks,[2A!g/Y0rfmGJs-<_OP`tX%pQb`Ds-<GHr0R/DqNq5J!1!PIrf[8AnW<.!rJpc9qiL];
+rf@,@l&bk+1Q]#Q\@K8c^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTj5oFckiq?slg4!*mdKW6
+nc&+Zo)SF]p&=[apZ_JOp\jg`p&=U`oDJ1Znc/+WmfMqEmJZAQlg!d7klU)3kPjTKjlGL_j5T(W
+rnmh7hYu=<gtUQ:g"G$0f@JLOe-XUPdF$=ecHa\Yrl\ipaiMQD`l5p8_ns:,^q[Xt]Y(kf\[f5Z
+[^NTNZa6sBYct:4XfSS'Wi;qpVl$;dUS=HUTV%gISXc1=R[BJ/QBd`"PEM)kOH5H_NJrgSM2@%D
+L5(D8K7ec,J:N,uI=6Kird"lrG^"@TF`__HErL%^E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM
+?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;ar(?oZr^ciTr'pTQoL/LBoKqn1
+m/IFU\uV[$S!o_2QBhIL,OraOIX8L's0."!W**S%C2@f^F*2YNG^Oj28l(+oK7S]0K_k`CNp_\_
+62X(J6i9@O7K5jV8,l*[8cD>/92&#R9hnJ\:f1+h;cQk!='8[0>[1TB?t!MSAS,RgC27X'DfKf>
+Fa&(VH[U?nJV/W1LP^nINfT<cPa7])S"-(CTqeE]W2co#Y->4<[C3TU]Y2(q_Sa@4aN;WLcHaea
+e'ut#f\5'7h;7)JioB+]k3(smlKdg'"RYXGnF?MK!V>s_o`=d\rV6Egs8)Zjrqucoo_sFAQiDR~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7^!rp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH5f@AC!
+dEg+^bK@oG`P]R.^V.:j\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYrO,f0VM2-h=Jq/?!I!S.J6q0[<
+:/Cg_rD*Aer(I/d:/:darD<;cp/(BY!)WVir)!5e#uXVu;,C(d;,C'e:B"&f:B+,X<q]Mn<r#hq
+<qTPk=T)=n=Sl1r=T2GY[C3TU]Y2(q_Sa@4aN;WLcHjkbe'ut#f\5'7h;7)JioB(\k2tmll0@U$
+m-X60n*olHo)J:]o_nI^pAXgNq#0scpAFU_o`+O\o)J7[nGVeWmd9E?liQM<lMg#Lki_..jp1#/
+jQ#:[io0mp!T2c5h$Vrlg=k65f[na+ec+&)e'cXkd*L"_c-611ABN$8aN)<>`Pf[2_SO%&^V.:m
+]=PP`\@8oT[C!9HZE^X<Y-"h-X/`2!W2HPjV50l\TqS-OSt;LCS"#k6R$X,(Q'@JqP*(ieO,f3Y
+N/NOLLkg_>KnP)2Jq8H&IsufoI!bj=$$gc>GBS+NFE;L%E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>
+@L$=L?sd8I?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iYir([/ar_*/]rCQuZq+(?Pr'g6G
+q*Xd@lp:(>0B^-'@9?B)9MJ5R8k]-A[u=ru7RLdoW`q]=?mmT[2)dNP4?ktn6:++#3'Kr+9DqKZ
+s7fUp<VTDe:]=,L62X(J6i9@O7K5jV8,l*[8cD>/92&#R9hnJ\:f1+h;cQk!='8[0>[1TB?t!MS
+AS,RgC27X'DfKf>Fa&(VH[U?nJV/W1LP^nINfT<cPa7])S"-(CTqeE]W2co#Y->4<[C3TU]Y2(q
+_Sa@4aN;WLcHaeae'ut#f\5'7h;7)JioB+]k3(smlKdg'"RYXGnF?MK!V>s_o`=d\rV6Egs8)Zj
+rqucoo_sFAQiDR~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7ZNerq0dnoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19Q^*btO,f0WM2-h=K7SQ$I!U'WFF8h'
+Tu=OR]=bfU^&G_N^VRb'`5]j=rQ4u[!6b/]qT\r`q9AoarQbJjpX/oes3LblrQY_obf\#Ha2Q!7
+_>Lh1\b3K2\H'/7\,Ni8\+dB6\%&sF\c02>\H9@Q])K8;\i7(-\\#Mg^VRe*`Q-'BbK\>ZdF6Uq
+f@\d1gtgiEi8N_VjQ>Ufl07L!m-O--n*fc9nac8BoCW"Srq?Bdk4noLrq?6^rq-6^rUU!Ys7$!U
+s6fpSrp9[N!:'OI!pJh1roO7CjSn1gio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSV
+bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?YHG"0XK/A$WMl_mVPL#_U7n9RT:VXF
+S=>t8R$a5+Q'IStP*1rhO,o<\N/NRMM26qAL4t<\K-,\rJ:N,uI=6KiH?sj]G^"@TF`__HEcH)<
+E,TW3D/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&Er`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dh
+s%`Jdr_3>bqb$fYr^ciTr'pTQoL/IAog8"2mJdI]iS2l-bf\)Lqu7i!T:#TWs/F>>L0'(0Oci[E
+R@^+HU8=Vc<*6?,YH>(6YPJ4l^A>>5[c9[O6N0@L7/o^T7fGpX8,u6\8c_RYr_7l;:Jakb;H$Op
+<`W=*=^,-9?=.)K@Us%^BP;-rD/O93EccGJG^=^bIXm!%KSG;>Mi<[WOcu&rR$jG7StMdQV5L8l
+XKA\1ZEpsJ\[oGe^VI_(`Q$!@bKS8XdF$Fmf%8R.gYCWAi8N\UjQ5OekiqBum-O0/n*ol<o(2GV
+o_%nNp@nO\!r;]hr;6KkrVcBfJcD):J,~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7ZNerq0UioCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19Q^*btO,f0WM2-h=K7SQ$I!U'F@VTk(
+J!'Gbs,R8DOckq-PlI$KQ2m3<Pk^OCQN*6HQMd*DQMQsJQ2m3KPQ$^FOo1:-OS+\7OT1C?Nr+n7
+OSb1=O8t@4O8t@?OSb/![^`l[]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hV[8Mj5]4_k3)!nlKdg'
+mI'H3nF?&>o(2JFrUp0`s7b[NrV-<bqt9s\s7?3[s7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDA
+j*p"HiS`YOhqm2Fgt^Z<g=b-2f@SU(eC;srda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i
+]",A]\$i`Q['R*EZ*:F7Xf\\*WiE%sVl-DfUnaZXTqJ$LSt2C@R[KP1Q^3o%P`q8nOcYWbNfB!U
+MM[1GLPCP;K`?ZHJq8H&IsufoI!^0cH$FRXGBS+NFE;JBEH#l8DJj<-rbDOLC&VcHB4h-S!G#^>
+@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?Pr'g6G
+pd=^@lp:(>$.#rUUS"$EQ^=$:s!.9[WIB-3s6bT5IptoX8Si9796>?#H$Xgb91i!5KnFr0KS0+#
+p5\Wtj$ET0r^6QNs$coVr^ZuZ!(m/^!D?,c9n,o6:f("e;cHat<`iL->?kE>?XR;OA7]@dBPM="
+DJsN8FEMePH@('hJ:W?+L5:\EN/is]PEhH$R@Bb=TV80XVl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9F
+bg+P^dF6Urf@\g3gtgiFiSrnYjlYail0@U$m-a?2nF?)?oCE.Xp%A%Pp\jjgq>0scqu6NlrUg)?
+s-Nb9~>
+JcC<$QiH^Wrr)ior;6Njs7uZhs7ZNerq0RhoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC!
+dEp1`bK@oH`PfX/^V.:k\[JoPZEUL6X/`(pUnXQTSsu19Q^*btO,f0WM2-h=K7SQ$I!U')6q0X9
+9)VK^:&n#d9E\'b:/=[_;#=&\;"[Zc;#O2f;#4#q;Gg=h:f("d:f%$br_NJfr_ESj='+ZfqGmGo
+r`B"uoiLli!*Ahqr`9)#r`Au!3*E]"\\#Mg^VRe*`Q-'BbK\>ZdF6Uqf@\d1gtgiEi8N_VjQ>Uf
+l07L!m-O--n*fc9nac8BoCW"Srq?Bdk4noLrq?6^rq-6^rUU!Ys7$!Us6fpSrp9[N!:'OI!pJh1
+roO7CjSn1gio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&
+^V7Co]Xtbc\[],W[^EKKZa-j?YHG"0XK/A$WMl_mVPL#_U7n9RT:VXFS=>t8R$a5+Q'IStP*1rh
+O,o<\N/NRMM26qAL4t<\K-,\rJ:N,uI=6KiH?sj]G^"@TF`__HEcH)<E,TW3D/B2e!GZ?JBE;aX
+rac+@A,]pB@:3JM?X@&Er`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jdr_3>bqb$fYr^ciT
+r'pTQoL/IAog8"2nc's0bcZ(n<)ZRe9MA)OpAaEmP&4/f6ZTo/8leD1.5*813&!3P5!]*6$:?d4
+5"\C>8kDZIq>^Ipq,RJqqG@#ar_DK>r'LBMqaCHQr^QlWs%!,]r^m2a9`@b9:/=\_;,U=l<E<.&
+=]ns6>[CcF@:EbYAnYjmCMds-EH6/DGBeF\I=?]tK7nu8M2R=QO-,WkQC+)0SXuLJUnsufWiW>+
+Yd1UC\%0)_]t_A"_o9X:aihoRcdC.heCN7(g=tE=hVdAPj5f=akNM0qlg4!+n*fc9o()DD"n_K\
+p@e7Zp]C9fqY^6ir;HTdrdk*9s*t~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq0amoCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7X/`+rUnaWUSt):;Q^*btOH5BZM26n>K7SQ%I=$9ZEHZki
+QE/6@]=e-VrOrNO_84%.`lH1"ao'9]bP9<Xc2>l_c2Q#ecN)>ddJVDodEp5<c4%tAbK.]C`Pf[2
+^q[AU\F$j"\G`u<\G<W5[edK6\,<`;\%&sI\c')>\bs#>\\%jP3k;i5[^WfY]Y;.s_SjF6aND]N
+cHjndeCE.%g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?&>o(2JFrUp3arqH-]qt]p[rV-<bqt:!]
+rq$*Zs7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7Aro4RLiSi_Qhqm5Gh;$c>g=k64rmq>)e^W*t
+df.XDd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZ*:I9Y-"h-X/`2!W2HMh
+Unjc[TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FRX
+GBS+NFE;JBEH#l8s)%jSD#S2NC2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5h\)=T;J%<rZ2"
+<;ohr;ZBVl;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/0.B6L7#,rs7oJg<n0ibKA!)rugEqYl=\&
+QiFI9KN3toPZ_"TT:hmPV5%'i=Kej1XK\u)s7O)+^\kS9[c9[O6N':K7/o^U7f>jW8,u6\8c_RY
+r_7i::Jakb;c?Xq<`W=*=^,-:?=.)L@Us%^BPD6tD/O<4F*)PKG^=^bIXm$&KnbD?Mi<^YP*;/s
+R$sM8StVmSV5L;mXKA\1Za@0M\[oGe^VRe*`Q-'BbKS8XdF-Oof%8U/gYL]Ci8N\UjQ>Ufl07L!
+m-X60n*ol<o(2nRs7QEc!;HKfs7u]kr;6KkrVcBfJcD):J,~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq0XjoCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7X/`+rUnaWUSt):;Q^*btOH5BZM26n>K7SQ%I=$9J@:a4q
+H\@[ZNrG(?OHKO+!gJt8rg!PLn!*U4rg*SLqNh&Gp6PTBs-<\NPl?mGP5^U?O6r&%O8b7?O8k7;
+O8b7;OTCQ+rK%#?plGK:r/^o>rK0.&Ocd)]\[oGf^VRe*`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N\U
+jQ5OekiqBum-O--n*fc9nac8BoCW"Ss7ZHdpA"O\p%\L[rq?6^s7H<^rUU!Ys7$!Us6fpSrp9[N
+!:'RJs6'IGroX7B!9F.>&E;[-i8EMLhVI#CgY:H9g"?;U"kM5ReC2kFd=9NhcHa\YbKJ&MaN2EA
+`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6p@Yck43XfSS'Wi;qpVPU)aUS=HUTV%gISXc1<R@'A.
+QBd`"PEM)kOH5H^N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]G^"@TF`__HEcH)<E,Ybo!GuZP
+CB80arb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[id
+9D_?[8cD9V8,PjS7J'"C6hNe461Fm\_6'T/SXQ"8Q^@[N,6#igIuD8Fi-=@@=CF[5Ci)j;F`qtR
+H@(!392C4oK7ei2q#BuHo7u?lr'L?LqaCHQs$lrWs%!,]r^m2a9`@b8:/=\_;,^Cm<E<.&=]ns6
+?!^lG@U`kZAnYmoCMds.EH?5EGBeF\I=?]uK8#&9M2R=ROHPfmQC+,1SXuOLUnsugWiW>+Yd:^F
+\%0)_]t_D#`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()DPo`+Uap&Ojd
+q#C0iqY^6ir;HTdrdk*9s*t~>
+JcC<$QiH^WrVc`nrVQWks7uZhs7ZNerq0[koCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7X/`+rUnaWUSt):;Q^*btOH5BZM26n>K7SQ%I=$9,6pjI8
+8ki)Ur([5dr(R,br_<Ghr)!;eo2,*W!)WVir)!5e#uXVu;,L.d;,C'e:B"&f:Amug:&n>o=6`i_
+<V0>e=8H#!=8Z/#=7o\p<rc;#=8c5[[^WfY]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/LioB+]
+k3(smlKdg'mI'H3nF?&>o(2JFrUp3arqH-]qt]p[rV-<bqt:!]rq$*Zs7--YrU9dSs6]gPs6B[M
+rosIH!9a@Ds5a7Aro4RLiSi_Qhqm5Gh;$c>g=k64rmq>)e^W*tdf.XDd*L"_c-4ASb/q`Ga2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZ*:I9Y-"h-X/`2!W2HMhUnjc[TqS-OSt;LCS!ob4R$X,(
+Q'@JqP*(ieO,]*WMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FRXGBS+NFE;JBEH#l8s)%jSD#S2N
+C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_
+9)V?\8GPdR7f5^I7/0.B6L7#0rs.5gRV#]$;GI-a-r!A*s6mpoDcK:tEl3VsQU`DU.l0+F1c.?\
+5=%\)6T@%h8kDZI8PJpZrDiYo!*/qnqG7,dj$ET0rBpHMs$crWrC?lY!(m/^!D?,c9n#i5:f("f
+;cHat<`iL->?kH??XR>PA7]@dBkqL$DK'T:FEMePH@('hJ:`E-L5:\EN/s'`PEhH$R[]k>Tq\?Z
+Vl?\tXfnt8['mHS]"G_k_8=.0a2lEHbg+P^daZdtf@em4h;-uHiSrnYk2tjkl0@U$mI'H3nF?)?
+oDeI_p&F^cp\ssfq>^<hqu6NlrUg)?s-Nb9~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTgB(u#mp%@tKo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hlUS4?PS=>q5Q'@GnO,]*TLk^V9Jq/;uH[9pSF*rY%
+U;jgXrk89E#J\'j_SjI6a8O-Yb5]Z\bl>ofbl,facM>`acMc&hd.brcdK7hCd/M>jbmhn?aiMK@
+`5BI-^V7FjrjVg8n@8V3\[hCCqmlX7qmZ4-qmlR7r4Dp=/@W1$]Y2(q_Sa@4aN;WLcHjnde'ut#
+f\5*8h;7)JioB+]k3(sml0@X%mI'uB!V#XYncJFTo`"O`pAXg^q"+=Uq#:$epA=O_o`"I\o)J7[
+nGVhUmJuYQm/QAOlMg&JkQ'fFk5XNCjSn0?io0mp$fBgth;-l@gY1B7f`'J+f%&:"e'e6CER<%W
+cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EHJZE^X<YHG"0XK/A$WMcYkV50o^U7n9R
+T:VXES"#k7R$a5+Q'IStP*1rgO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jc7G7Je=FEDSE
+EH,r9Df0H0D#S2XC2%?pB4kgfARo=]raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl
+;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/0.B6L-r/rsADZgt:!!c-+8Oqu7f&T<\@ps/l<`<J=J:
+P#PPNR\6CJTqt^h>?7o0YH>%6p]'p#s1e68j$ET0rBpHMs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h
+;cHat='/U/>?kH@?X[DRA7]CeBkqO&DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[]n@Tq\?[
+Vl?\tY->1;['mHS]=bkm_8=.0a2lEHc-FY_daZguf@em4h;-uHiT&tZk2tjkl0A<8&+/fRn*ol<
+o(2MGp%A%Qp\ssfq>^<hqu6NlrUp/@s-E\8~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTgAG>fkp%@tKo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hlUS4?PS=>q5Q'@GnO,]*TLk^V9Jq/;uH[9pD@;9_(
+Js,qirJq/EOctunQ'M?7s-<VK!1!;C!0dDHpm(iEs-<GHr0R)Br0RGL!L8oKPQ$aCOnb")OS+\6
+O91K)OSOt:OS=n+OSY(j\%0)_]t_A"_o9X:aihoRcdC1ieCN7(g=tE=hVd>Oj5f=akNM0plKmm)
+mf)YUnF?MK!qZ'Vrq6<brqH6`oD/.UrqHEcqt:!]rq$*Zs7--YrU9dS!:BaOs6B[MrosIH!9a@D
+s5a7Aro4%=iVqaChqm5Gh;$c>g=k64rmq>)e^W*tdf.X6d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h-X/`2!Vl-DgUnjc[TqS-OSt;IAS!ob4R$X,(Q'@JqP*(fd
+NfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$K=4%X)u:FE;JBEH#i7DJj<-rbDmVBkV0mB4b^d
+A7T3L@KBnFra5\3!+#S/s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?P
+r'g6Gpd=^@lTt1C$M:m/US+*GR[KP0r;RqhY'u;Js4N"NBgcK'Ci2d:F*)VOGC"U.92\N<KS"l1
+L%kTIO7eM5NV/(e62X(J6i0:O7K5jU7t+!#8P2TJ92&&S:/=\_;,U=k<)lt#=BSg3>[:]D@:E_W
+AS5[jCM[m+E,fr@G'A4XI!pKpJqJc3Ll..NO-#NhQ'[l,S"?7GU84ZaWN*&&Yd(OA[^WfZ]Y;.s
+_SjF6aND]NcHjndeCE.%g"P3:h;@/Lj5]4_k3)!nlMp2]mI'H3nF?)?oCV\Jp%J.SrqQNhs8)Zj
+rqu`np&9OBQN)I~>
+JcC<$QN-XWrVc`nr;6Nj!;ZTgA,#]jp%@tKo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1<3f$r0r
+d*L"]bK7iF`59@*^:_(g\$iZMYck11Wi2hlUS4?PS=>q5Q'@GnO,]*TLk^V9Jq/;uH[9p'77K^;
+9D_Ka:&@Td9hnGZr)!>fp.t`br_W8b!)WVir)!5er_ibns%ibo:f%$br_NJfrD3Ae"]e]+<``Af
+<r,hf<r#hh=9)Fp=Sl2"==gql]"G_k^r"".`lQ9Fbg+P^daQ^sf@\g3gtgiFi8WeXjlYail07L"
+m-X6?mfDqJrpg-^o^r.Us7ZHdq=sRWp\=a^rq?6^s7H<^rUU!Ys7$!Us6]mSrTsRM!:'RJs6'IG
+roX7B!9F.>!TN);i!\H!hVI#CgY:H9g"?;U"kM5ReC2kFd;dOZcHa\YbKJ&MaN2EA`Pod5_SX.)
+^V@Lr]Y(kf\[f5Z[^NTMZa-j?Yck43XfSS'Wi;noVPU)aUS=HUTV%gIS=?":R@'A.QBd`"PEM)k
+O,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]rc\iqF`__HEcH)<Df9N2D/B2e$YjBhBP1si
+AS#C_A,]p<@:9(As'>\2r`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jdr_3>bqb$fYr^ciT
+r'pTQoL/IAog7t1p]!)5_53&t<_uXe9he;U9C;cObFW]S7RhF;Im/K:-8@)03&*6N5!D1q6:<dm
+5!DS191hcLp](.kq,RJqr_N;aj$ET0rBpHMs$crWrC;<-8P)NH91qrQ9hnJ\:f1+h;cHat='/U/
+>?kH@?X[DRA7]CeBkqO&DK'T:FEVkRH@1-jJ:`E-L5:_GNK90aPa.T&R[]n@Tq\?[Vl?\tY->1;
+['mHS]=bkm_8=.0a2lEHc-FY_daZguf@em4h;-uHiT&tZk2tjkl0A<8&+/fRn*ol<o(2MGp%A%Q
+p\ssfq>^<hqu6NlrUp/@s-E\8~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrpj:`nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*:@3Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!H[9pUEd*%k
+R&nR3^&PeU]tV4q^qmn+`Q#s>aiXM(s3()ZrltAdq9Aoar6P,br6bYod*Vd;s32%tbK7iF`l,d3
+^q[Ut]tF?Qq6p@6n[\Y1n%&>*r3uO4#Ih4Q\$ifW\b`l@]=PVd]"7mQ1:jp(\\#Mh^r"".`lQ9F
+bg"G[dF6Uqf@\g2gtgiEi8N_VjlY^hl07L!m-O--n*fc9rpg-^o^r.Us7ZHdqY9RUp\=a^rq?6^
+s7H<^rUU!Ys7$!Us6]mSrTjUOlK\B5s6'IGroO:DjQ-=#!TN);huV`lrnRV1g]#n:g"=p.f%/C$
+eC2jndEp5=c?daZbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfSS'WMl_m
+VPU)aUS=HUTV%gHS=?":R@'A.QBd`"PEM&iO,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]
+GB\4RF`__HEcH)<DuOVcD/=!'C2.HrBP1siAS#C_A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDrqu
+!*&nqs&/korD<Jhs%`Jdr_3>bqb$fYr^ciTr'pTQoL/IAog7t1p&><`hqQW-c-=GSqYpW_TX+Rs
+'VO-+KNX@uP?LtRStMgPUSLpj>?Cg,!NiQus7O,*^\G7s62X(J6i9@O7K5jV8,l*[8cD>392&#R
+9hnJ\:f1+h;cHdu='/U/>[1QA?X[DRAS#LfC27X'DfKf=FEVkRH@1-jJ:`H/LP^nINK93bPa.T'
+S"-(BTqeE\Vl?`!Y->1;[C3TU]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&t[k2tmll0I^&
+mI'H3"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NlrUp/@s-E\8~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrpj:`nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*:@3Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!H[9pD@:j=s
+I"ms_NrP.EOHGZgPE_@3QMd$DPl6gFPkgUDQN*6GQMm0CQMd*LQ3!88rfd>Er/q#Bp5dsiq2bN:
+qN1oAOH>N`p5fE<OH>NarK/hC\@K5a^VI_(`Q$!@bKS5Vd*^=le^rI-g>(N@hr*JRj5oFckiq?s
+lg4!*mdKW6nc&(\oCV\Sp&Fabp\O[Sq=j[`p\sm`p&F[`oDS7[nc/+Wn,MeUmJZAQlg!d7l2TrI
+kPjTFjlGM%irS/urnmh7hYu=3gtVh^%b]Ldf@JO'eC;sqdF$=erm#i7bfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i]",A]\$i]OZa6sBYct=6Xf\\*Wi;qpVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%P`q8m
+OH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TG'.nKF)l8?E,Y_n&8c6!CMITuBP;$k
+An>OaA7PUJ!F]C8?iOF4?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&[id9D_?[8cD9V
+8,PjS7J'"C6hNe3621Bdqs(D`U7@aBS!fZ@rufptIuDAId=/*"@S1BODbWiFG'A1WH@/@X:ecXs
+JqJaLs8S/QNW>(6LZ1Vt6N':L7/fXT7fGpX8,u6\8q0K-9MJ5V:Jakb;H$Ln<`W:(=^#'8?!grI
+@Uit\B4u$qCi402EcZ>GGBnL^I=Hd!KSG8=MN!OUOckroQ^O>5StD^OUo(&hX0&P/Z*UjH\@K5a
+^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?tm-O--n*^GLnac8Bo`"Lbp@n=\q#C0i
+qY^6ir;HTerdk*8s*t~>
+JcC<$QN-XWrVc`nr;6Njs7uZh#5@ibp%@tKrpj:`nF,f4m-O'&l0.<mjl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^:_(g\@/cNZ*:@3Wi;nmUnXNRSXZ%7QB[PpO,]*UM2$_:Jq/?!H[9p(6pjF8
+92/4]:B+&c9`Ifg:/=[a;#a>b;#O2h;"d`d;#O2f;#4&g;ZBVo:]aKj:]4&f:]*ue:]!od<r?&!
+<rZ1Q<r#hn=9_f-=&r@'=7oYr='#9$0t+U&]=bno_Sa@4aN;WLc-F\`e'uq"f\5'7h;7&IiT&t[
+k2tmll0@U$m-X60n*olHncJFTo`"O`pAXg_q!e+Rq#:$epA=O_o`"I\o)J7[nGVhUmJuYQliQM<
+lMg&JkQ'fFjoXZ*jSn0?io0mp!T2c5h#Z<crn7k8f[na+f%&:"e'cXkd*M^:HHj[WbK@rJaN)<>
+`Pf[2_SO%&^V7Co]Xtbc\[],W[C!9HZE^X<YHG"0XK/A#W2HPjV50o^U7n9RT:VUDS"#k7R$a5+
+Q'IStP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS.PFEDSEEH,r9rb`9aChmg$
+C2%?pB4kgfARo=]raGn:@/aO5?3":1>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adic9`Ic_
+9)V?\8GPdR7f5^I7/0.B6L-r6s"sDnZ&sH=<`)Ud9MS8U\E<hfdA1qe7RhI@G<K+W/h](@3]/`V
+5<qP$6:Ejn5<VS291__Js8>sl<WQ2rq+fp8r'L?Lr'^NQs$luXs%!,]r^qZ59MA/T:/=\_;,U=k
+<*!%$=BSg4>[:]D@:E_XAS5[kCM[m,EH6,BG'A4XI!pKpJqSl6M2I7OO-,TiQ'[o.S=Z@HUSOcb
+WN3/(Yd(OB[^`l[]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olg4!*mdKTJnF?)?
+oCW%T!quB_rqQNhs8)Zjrqu`np&9OBQN)I~>
+JcC<$QN-XWrVc`nr;6Njs7uZhAbYolp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C5Wi;nmUnXQSSXZ(8QBdVqO,f0VM2-h=Jq/?!I!U'^DfU2X
+Nhjbn]b.un^VRb(`5Td<aiV]Iai_cLp!!E[!m]'8rm(Abs3CMfpX/oe!n#BArm(Pgs3(qpaMu6<
+_ns7)^V7Co]_f/5\+mJo\bio7\+dE4\H'/1\h^h-\%0,`^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?
+hr*JQj5f@bkNM0qlg4!*mdKW6nc&(\oCV\Sp&Fabp\O[Pq=saap\sm`p&F[aoDJ1Znc/+WmfMqE
+mJZAQlg!d7klU)3kPjTKjlGL_j5T(Wrnmh7hYu=3gtVh^J(`K+f@JL&eC;sqdF$=ecHa\Zbfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",>[[^NTNZa6sBYct=6Xf\\)Wi;qpVl$;dUnaZXTq@pJSXc1=
+R[KP1Q^3o%P`h2lOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`GlMspG'.qLFE;JBEH#jq
+D@gZ$CMR["BkV0mB4b^dA7T3L@KBnFra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPh
+r([2br_*,\r^m&Zq+(BQr'g6Gpd=[?lTt:F#jC0udF$4ac-#n_*poW*s8Vu.M0Xi8PE]$IR%9nE
+TVA5]<`N7'Y-+n/o`+NsrkJ<<i^*K/r^6QNs$coVr^ZuZ!(m/^!D?,c9n#i5:f("e;cHat<``F,
+>$P<=?XR;OA7]@dBPM="DJsN8FEMePH@('hJ:W?+L51VCN/is]P*D9"R@B_<TV8-VVl6VrXfen6
+ZaI6O\\#Pi^r"".`lQ9Fbg"G[dF6Uqf@\g2gtgiFi8WeXjlYail0@U$m-X60n*ol<ncA@Srq-?d
+p\4[^s7u]kr;6Kkrr)KgJcD&9J,~>
+JcC<$QN-XWrVc`nr;6Njs7uZhAbYolp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C5Wi;nmUnXQSSXZ(8QBdVqO,f0VM2-h=Jq/?!I!U'^?t!_e
+G(GhQNrG(COHG]iPa204rg!MJ!1!MIr0.,E!gT"7r0@8Is-<DGrKm/BrKmPMs-3YMPEZ!/r/puA
+o8hXfplG$.!0?Z30p/rU]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;7&IiSrnYk2tjjl0@U$m-X60
+n*olHncJFTo`"O`pAXg_q!InPq#:$epA=O_o`+O\o)J7[nGVeWmd9E?liQM<lMg#Lki_..jp1#/
+jQ#:[io0mp!T2c5h#Z<crn;kTf[na+e^`1!e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7Co
+]Xtbc\@8oT[C!9HZE^X<YHG"0XK&;"W2HPjV50o^U7n9QSt;LCS"#k7R$a5+Q'ISsP*(ieO,f3Y
+N/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jc8G7&M9F`__HEcH)<DuOVcD/=!'C2.HrBP1siAS#C_
+A,]p<@:9(A!a]/<r`fM/>$Co.s&]8&rDrqu!*&nqs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]R
+oL/IAoKqk0q>Ufjh5[<FSXl4=R[F!P+54#MMou(>O)%m/C2Rr[8oo,uH$=R\8P;ZO9SJ.NK(T*C
+O7SA3NV\Fi62X(K6i0:O7K,dU8,l*[8cD<_92,=ZISN[8:f1+h<)lt"='8[0>[1TB?t!MTAS,Uh
+C27[(DfKf>Fa&(VH[U?nJV/W1LP^nINfT<cPa7])S"-(CTqeE]W2co#Y->4<[C3TU]=ktp_Sa@4
+aN;WLc-F\`e'uq"f\5'7h;7)JioB+]k3(smlKdg'mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6Nm
+rUg)?s-E\8~>
+JcC<$QN-XWrVc`nr;6Njs7uZhAG>fkp%@tLoCDJBnF,i6m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.7i\@/fOZ*:C5Wi;nmUnXQSSXZ(8QBdVqO,f0VM2-h=Jq/?!I!U'^6UO73
+8PB"W!)<>as%NPi:J^LWr(m;g!`;cjq,%,gr_NDfqGI5is&&em!`;cjrD*;erD*;eqbI#hqc<bu
+rDhTQqH!YtoiD/p=7fTN=&rD3\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL`Di8N\UjQ>UfkiqBu
+m-O--n*fc9rpg-^o^r.Us7ZHdqY9IRq"Xj_rq?6^s7H?_r:9mXs7$!U!q,ICrTjUOlK\B5!pJh1
+roOIIjQ,@]io8qrhuV`lrnRV1g]#oVg"=p.f%&=#eC2jndEp4bcHXVXbKJ&MaN2EA`Pod5_SX.)
+^V@Lr]Y(kf\[],W[^EKKZa-j?Yck43XfSP&WMl_mVPU)aUS=HUT:VXFS=?":R@'A.QBd`"P*1rh
+O,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj]s*"fnF`heJF)l8?E,Y_n&8c6!CMITuBP;$k
+An>OaA7PUJ!F]C8?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U
+8,YpT7J'"C6hE_262^a=ftEl.E`l=<:/4JX9hhbErVtTNH!*U+GKObp2^^:82EEQL4$Gkn5s[js
+3&j)a8P;ZIo`+kioi;&mqG-$9r'LBMqaCHQr^QlWs%!,]r^m2a9`@b8:/=\_;,U=l<E<.%=]np5
+>[CcF@:EbYAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOfdWiN8)Yd1UC
+[^`l[]t_A"_o9X:aihoQcHstfeCE1'g=k?<hVd>Oj5f=akNM0qlg4!*mdKW6nac5OoCW%T!quB_
+rqQNhs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7^'tp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ$I!U'^Df^/Q
+MOCTkrOr3E"i%mj_o9XpaSs<]aoKWXbkoZacMGfccMPr]dJ_JsdEp7dcHcF6$-^Q5a2Z*9_SO"d
+^&YkG]_8f0\+7'/\H'/,\c0,=[fEl9\,Nl;\,Nl>\%&rYost.6rjjbn]"G_k^r"%/a2lBGbg+P^
+daZdtf@em4gtglGiSrnYjlYail0@U$m-X60n*olHncJFTo`"O`pAXg`q#'s\qYL$`q#:$epAFU_
+o`+O]o)A1ZnG_nVmf2\Rm/QDOlMg#Lki_..jp1#/jQ#:[io0mp!T2c5h$Vrlg=k65f[na+ec+&)
+e'cXkd*L"_c-611D9BuAaN)<>`Pf[2_SO%&^V7Co]=PP`\@8oT[C!9HZE^X<YHG"/X/`2!W2HPj
+V50o^U7n6PSt;LCS"#k7R$a5+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZ
+GBS-.F9Q`+EH,r9rb`HfChmg$C2%?pB4baeARo=]@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"
+<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdR7f5^I7/94B6L-r5rs7Q;e^Mpkc-=H.rt"RlZN'so
+hW&*EO-<UHR@=,K$_jGl<`N=)Y-"h-Y4MYn^%8u;^\tV#62X(J6i0:O7K5jU7fl4Q8cD<_92,=Z
+HVR@5:f1.i<)lt"=BSd2>[:ZC?t*SUAS,UiC27[(E,fo?Fa&(VH[U?nJV/W1Ll%%KNfT?eQ'Rf*
+S"6.DTqnN_W2cr$YHY==[C<]X]Y2(q_Sa@4aN;WLcHjnce'ut#f\5*8h;7)JioB+]k3(smlKdg'
+mI0N5nc&([oCW%T!VZ9dq#C0iqY^6ir;QZerdk*8s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7^'tp%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ$I!U'^?X[P_
+FFAt2qMtT:s,d>FPl?sIQMZsHPl$[APl$aFQ2m3GQMm0AQN!6NQN*3OP`q=1P5LI?P5^L-O8b79
+O6r&,NrY4<O9pu.O,oB`OH5Kcp5f98rfAeD]"G_k^r"%/a2lBGbg+P^daZdtf@em4gtglGiSrnY
+jlYail0@U$m-X60n*olHncJFTo`"O`pAXg`q#'s\qYL$`q#:$epAFU_o`+O]o)A1ZnG_nVmf2\R
+m/QDOlMg#Lki_..jp1#/jQ#:[io0mp!T2c5h$Vrlg=k65f[na+ec+&)e'cXkd*L"_c-611D9BuA
+aN)<>`Pf[2_SO%&^V7Co]=PP`\@8oT[C!9HZE^X<YHG"/X/`2!W2HPjV50o^U7n6PSt;LCS"#k7
+R$a5+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS-.F9Q`+EH,r9rb`Hf
+Chmg$C2%?pB4baeARo=]@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid
+9`@]^9)_E\8GPdR7f5^I7/94B6L-r8rs/5We>T+6S=TYJ!L`WYru^%&J;h_P\#m)57;?[19656"
+H$O^`I7m10:54FSJqEUo"HSS'O,s0us,[,=!0-r4i^*K/rBpHMs$crWrC6o[8P/nR!D?,c9m]W2
+:f("f;cHat<`iL->?kH??XR>PA7]@dBkhF#DK'T9FEMePH@('hJ:W?+L5:\EN/is^PEhH$R@Bb=
+TV80XVl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g3gtgiFi8WeXjlYail0@U$m-X91
+nF?MK!V>s_o`=d\rV6Egs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7^.!p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ$I!U'^6UF11
+84uWP:/1RY##.if:Jak`ohbN]qb[&b!`2Zgqb[,drDEer:f("c;#O/f:]*ue:\dcZ<rQ/#<rH%q
+<qTJc<rZ1j<rZ8$<rQ/%<``?$=7o\q="h+q]Y2(q_SjF6aN;WLcHjndeC<($g"P39h;@/LioB+]
+k3(smlKdg'mI'H3nF?MK!qZ'Vrq6<brqH<br;$$^qYBs^rqHEcr:U']s7?3[rpg$XrpTmTs6]gP
+s6K^MrojLJkNDj,#Nb%-j5].YiVqa9hqn@g$JaCig=b03f@SU(rmV8'da?Ihcd'h\bl5e&b/q`G
+a2Z*;`5BI/_8*h#^:h1k]",A]\$i`Q['R*EZ*:I9Y-"e+WiE%sVl-DgUnjc[TqJ$LSt2C@S!ob4
+R$X,(P`q8nOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'3e+"`n^(EH#jqDA@#)
+CMR["BkV0mAnGUcA7T1Z@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([2b
+r_*,\r^m&Zq+(?Pr'g6Gq*Xd@lTtRN2!DlTMg'#>;G^+_9MS;UV:PJBi2h907RqaI?t+"#.lK@A
+2*3rb5XIe)6T@%h5"\C=91ngUr`/Pj!*/tmi^*K/rBpHMs$crWrC6o[8P/nR!D?,c9m]W2:f("f
+;cHat<`iL->?kH??XR>PA7]@dBkhF#DK'T9FEMePH@('hJ:W?+L5:\EN/is^PEhH$R@Bb=TV80X
+Vl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g3gtgiFi8WeXjlYail0@U$m-X91nF?MK
+!V>s_o`=d\rV6Egs8)Zjrqucoo_sFAQN)I~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0dnoCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9aG&VMM
+KTDqM]tD&X^'MKh_8=.0a2c:"aT9Q-p!!H\!6kGerm(Pg!7(Sgrm(Gf!7:GerR1_n!RT0lcMu,q
+bfe)J`l5j4_8-&a!58BEs1S?=!4D[3mC2Jmqml:-s1&-=rjhg8rjanr\\,Vj^r"".`lQ9Fbg+P]
+dF6Urf@\g2gtgiFi8WeWjlYail07L"m-X60n*oi:o()DDo`"O`pAXgaq#'sXqYU*aq#:$epAFU_
+o`+O]o)J7[nGVhUmf2\Rm/QAOlM]rPki_-kk2k^cro8LfiSi_Qhr!;Hh;$f?g=k64f[na+e^W*t
+e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"/X/`2!W2HPj
+V50o^U7n6PSt;LCS"#k7R$a5+Q'@JqP*(ieO,f3YN/NRMM26qAL4t<\K+W]dJ:N,uI=6KiH?sj]
+GB\4QrcA<bEcH)<DuOVhD/=!'C2.HrBP1phAS#C_@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDrqu
+!*&nqs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6ZQogJRBoKqk0qu6oWg!nKud*0c1ru(="ZN's1
+s0%#XP*K!HR\-=JU8=Vc<a8a.riQ7&o)J^&o=k4=s0goQr'L?LqaCHQs$lrWIn3.&8kM`L9MJ5V
+:Jakb;H$Ln<E<1'=^#$7?!^lH@Uiq[B4u!pCi+'/EH?5FGBnL^I=Hd!K8#&9M2R@SOHPfmQ^F52
+SXuOLUnsugWiW>+Yd:^F\%0)_]t_A"_o9X:aihoRcdC1ieCN7(g=tE=hr*JQj5f=akNM0qli6;]
+mdKW6nac8BoCV_Kp@e7Zq#C0iqYg<ir;QZerdk*8s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0[koCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9aG$ncn
+DKg\qqi:];#*=t1P*D2rqNh,Grfm>Es-*MIrfm>GoToHBo9T?A"dYF=P`q=1P5LI=P4ak'O8k7:
+O7&,,O8b7<O8k:ANq/8h\@K8c^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTj5oFdkiq?sm-O--
+n*fc8nac8BoCW%Ts7ZHdr:p3cnbW.Yq=ss`rq?9_rq-6^rUU!Ys7$!Us6fpSrp9[N!:'OI#O(@6
+k2tdejSn1hio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&
+^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XK/A$WMl_mVPU)aUS=HTT:VXFS=?":R@'A.QBd\uP*1rh
+O,o<\N/W[PM2@%DL5(D8s+:o8JUi9#IXQWlH[:!`G^"@TFoHIdF)l8?E,Y_n'l@c&CMITuBP;$j
+An>OaA7K(X@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U
+8,YpS7J0(D6hE_263$rorp&.VVP0ZRSXZ%9cLh&7*oXJVN6_H_g4Nd*CiDm:FEVqRH@:378l8AX
+KnP&0o)JZKrf@#<rK$l:s+fT"r'L?LqaCHQs$lrWIn3.&8kM`L9MJ5V:Jakb;H$Ln<E<1'=^#$7
+?!^lH@Uiq[B4u!pCi+'/EH?5FGBnL^I=Hd!K8#&9M2R@SOHPfmQ^F52SXuOLUnsugWiW>+Yd:^F
+\%0)_]t_A"_o9X:aihoRcdC1ieCN7(g=tE=hr*JQj5f=akNM0qli6;]mdKW6nac8BoCV_Kp@e7Z
+q#C0iqYg<ir;QZerdk*8s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0[koCDJBnF,i6mHj0(l07BnjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9aG!e\e
+7S-3Jr_<;a!)<Gfr_N/_r(m>h!)NSjpe_)h:J^jaqGI2h"]8)m;,C*e:B"&e:B"&b:B+,f<WH.r
+<rQ/#<rH%q<rQ+u<;KVl<r,hb<r?#!<r?%n=>dV!]Y2(q_Sa@4aN;WLcHjkbe'ut#f\5'7h;7)J
+ioB(\k3(sml0@X%mI'H3nF5u=o(2JFrq6<brqH?cr;#mZqt^'_rqHEcr:U']s7?3[s7--YrU9dS
+s6]gPs6B[MrTORNkND!ijlPS&j+$(IiS`YOhqm2Fgt^Z<g=b-2f@SU(eC;srda?Ihcd'h\bfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"e+WiE%sVl-DgUnjc[TqJ$LSt2C@
+S!ob4R$X,(P`q8nOcYWbNfB!VMi*@JLkg_>KnTJY&V>RaJ:E#rI=-BfH?jaZGBS-.F9Q`+EH,r9
+rb`HfChmg$C2%?pB4baeARo=]@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j
+:Adid9`@]^9)_E\8GPdS7f,XI7/0.A6L-ondBf$cDIZRA:JOVY92Bc%ch@D%Z[c:M7siHWO?>*J
+2)m<I4[)(r6:4+"3'KMg8P;]Jo)JYgnQ,Zbi^*K/rBpHMs$crWrC;?.8P)NH91qrQ9hnJ\:f1+h
+;cHat='/U/>?kH??X[DRA7]CeBkqO%DK'T:FEVkRH@1-jJ:`E-L5:\ENK90aPEhK%R[]k>Tq\?Z
+Vl?\tXfnt8['mHS]"G_k^r"".`lQ9Fbg+P^daQ^sf@\g3gtglGiSrnYjlYail0@U7ljiIPn*ol<
+o(2JFp%A%Pp\jmeq>^<iqu-HlrUg)?s-E\8~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0amoCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGAhPI
+IuB`"be<th%DT`q_SjF5a2l?Dai_g!bQQ27bg"E3c32D;cHXW4cMYugd.YlbdK7hCd/M>jbmhn?
+aiDB>`59@+^V7Fqrk/3C!4MU/pU9M!k-tE#pUL14!P5i@])9)k]=bkm_8=.0a2lEHc-F\`daZh!
+f@em4h;7&IiT&tZk2tjkl0@U$m-X60n*olHncA@SrUp3as7cHdrV>jWr;$0`rqHEcr:U']s7?3[
+s7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7Aro4RLiSi_Qhqm5Gh;$c>g=k64rmuYNe^W*tdaHOj
+d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X;Y-"h-X/`2!W2HPjV50o]
+TqS-OSt;LCS"#k7R$a2)Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZGBS-/
+FT6D&EcH)<Df0H0D/=!'C2%BqBP1phAS#C^@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"<)ifp
+s&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKqk0rVm/Yg""X#dEKl1qYqE(TsF^uVZ27'
+<g-HbR[p+FU8;I'<a8a0riQ:'Y4;Pk^%/o:^Z%QW6N':L7/fXT7fGpX8,u6\9)hP69MJ5V:Jakb
+;H$Ln<`W:(=^#$7?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!K8#&:MN!OUOHPinQ^F53StD^N
+Uo(&hWiWA-Z*UgG\%0,`^;%M$`5Td<b0/&TcdC1je^i@*g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9
+s7-Edo^qhLp@e7[q#C0iqY^6ir;HTdrdk*8s*t~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0^loCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bG@+ci
+D01/_Q2H[ANs(T.PE_=1Q2[*LPlm>;Pa)'/"I,+6Pa)*2oToHBns99A"dYF=P`q=1P5LI;OoUR7
+Nqnb5OSt7<NpVo,OSb(?OH5M#O8G"?O-#G!O>"/V]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8M
+j5]4_k3)!nlKdg'mI'H3nF?MK!V>s^p&Facp\agbq<e%Vq>'gbp\smap&=U`oDS7[nc/+Wn,MhU
+mJcJPlN$5Ll2TrIkPjWDjT+B@it15/iS`YOhVR)EgtUT;g=b-Xf72B%eC;sqda?Ihcd'h\bfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:F7Xf\\*WiE%sVl-DgUnj`YTqJ$LSt2C@
+S!ob4R$O#&P`q8nOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'3h,s)T3$EH,r9
+DJj<.Chmg$Bk_6oB4baeARo:\@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>j
+:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L-o?n(l=)U]-khSXc+:_XIF&)s"GXN8+Aas'TA/D+@9B
+Fa&(VHW3[2;GU&AK`6Sns8J&VO8b1;O8P$t62X(J6i9@O7K5jV8,l*[8cD?^97KW09hnJ\:f1+h
+;cHdu='/U/>?kH@?X[DRAS#LfBkqO&DfB];FEVkRH@1-jJ:`E-L5CeHNK90aPa.T&R[ftATq\?[
+Vl?\tY->1;['mHS]=bkm_8=.0a2lEHc-FY_daZguf@em4h;-uHiSrnYk2tjkl0@U$mI'H3nF?PL
+#P7T[p%A%Pp\ssfq>^<hqu6NlrUg)?s-E\8~>
+JcC<$QN-UVrr)ior;6Njs7uZhs7ZNerq0dnoCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bG="Va
+7n?6G:JFR^9E\'`9hnI_:\dfe;>sDh:BXKi:Jam_;?'Gm:]!ub;>jDm;$9]m;,C'e:B"&e:B"&b
+:B"#i:fmNpr)N_sr`9)#rDi_qr`/hprDi_qqGlubpf@Mt=',B'rDtY_]=bkm_8=.0a2lEHc-F\`
+daZh!f@em4h;7&IiT&tZk2tjkl0@U$m-X60n*olHncA@SrUp3as7cHdrV>jWr;$0`rqHEcr:U']
+s7?3[s7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7Aro4RLiSi_Qhqm5Gh;$c>g=k64rmuYNe^W*t
+daHOjd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X;Y-"h-X/`2!W2HPj
+V50o]TqS-OSt;LCS"#k7R$a2)Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jaZ
+GBS-/FT6D&EcH)<Df0H0D/=!'C2%BqBP1phAS#C^@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"
+<)ifps&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKqk0/VS7Y?VsZs:eaYW:2Z?4nc.sb
+JmCi9KuZch.5!230Jl!X5sdn,3B/u^5!;L:9)qQRs8H$e<oQFC6N':L7/fXT7fGpX8,u6\9)hP6
+9MJ5V:Jakb;H$Ln<`W:(=^#$7?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!K8#&:MN!OUOHPin
+Q^F53StD^NUo(&hWiWA-Z*UgG\%0,`^;%M$`5Td<b0/&TcdC1je^i@*g=tH>hr*JQj5f@bkNV6r
+lg4$,n*fc9s7-Edo^qhLp@e7[q#C0iqY^6ir;HTdrdk*8s*t~>
+JcC<$QN-UVrVc`nrVQWks7uWg!Vc<eolKcso()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQSXZ%7Q'@GoO,]*UM2$_:Jq/?!H[9p\F`2AM
+KTE%Q]tV1n^;%M$_o0O6a2lBEb00>!rlt2_qp,8hp<ifd!n#BArm(Pg$I$]9a2Z*:_SO('rkABE
+qn;s:qmHC0rjDO0r3uX5pp^+0p:'Y'!4Vp:rji'?!4i*?s1'bn]Y2(r_SjF6aND]McHjndeC<($
+g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?MK!qZ'Vrq6<bs7cHdrV?<dqYU*br;$0`rqHEcr:U*^
+rq$*Zs7--YrU9dS!:BaO!pf.:rosIH!9a@Ds5a7Aro4%=iVqaChqm5Gh;$c>g=k64rmq>)e^W*t
+df.X*d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZ*:I9Y-"h-X/`2!W2HPj
+Unjc[TqS-OSt;LCS"#k6R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAKnP)2Jq<oO07SG!I=-BfH?jaZ
+GBS+NFE;JCEH,r9DJj<.Chmg$Bk_6oB4baeARo:\@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<WZ9#
+<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L-oEs8C^)f%/3rbg#SPrtk@%ZN'ro
+s*0B\P?1eQT;/3YUK:H!=BGL)!N`Ems8K\5^:h5O^AkqJ^?%ZY6N':K7/o^U7f>jW8,u6\8c_RY
+r_7i::Jakb;H$Op<`W:)=^#'8?=.)K@Uit]B4u$qCi402EccGJG^4U`IXm!%KSG8=MN!RVOckro
+R$jG6StD^OUo(&iX0&P/Z*UjH\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?s
+m-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTerdk*7s*t~>
+JcC<$QN-UVrVc`nrVQWks7uWg!Vc<eojRLao()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQSXZ%7Q'@GoO,]*UM2$_:Jq/?!H[9p\F^S`p
+E-R"tr/Uf<"d"k0PE_=2Q2?mIPlR'DPQ$gFQ1UC@Qh$IAQN`\?Q'@Msrf[2ArfR8DqNCf<r/U`8
+rJpZ6r/go=qi:')!06W2!07#=s,d&;0=e[,]t_D#`5Td<b0/#ScdC1jeCN7)g=tH>hr*JQj5f=a
+kNM0qlg4!*mdKW6nc&(\oCV\Sp&Facp\agbq>0saqt^*dq>'gbp\smap&F[`oDS7[nc/+Wn,MeU
+mJZAQlg!d7l2TrIkPjWDjT+B@irS/urnn1AhVR)EgtUT;g=b-Xf*0aUeC;sqrm><(cd'h\bfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*DYct=6Xf\\*WiE%sVl-DfUnaZXTqJ$LSt2C@
+S!o_3Q^3o%P`q8nOcYWbNfB!VMi*@JLkg_=KS+o/Jc:0QIsufoI!^0cH$FOWG'.nKF)l;@EH#i6
+DJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_ks%iVh
+r([2br_*,\r^m&Zq+(BQr'g6Gpd=[?lTkop];)'lSt)==S%@SVru1.3J;iOgHI5i+CMua:F*DqT
+I!n[\;,9l>K`6Sms8S,[Nr"e:Nr"h7No`S)6N':K7/o^U7f>jW8,u6\8c_RYr_7i::Jakb;H$Op
+<`W:)=^#'8?=.)K@Uit]B4u$qCi402EccGJG^4U`IXm!%KSG8=MN!RVOckroR$jG6StD^OUo(&i
+X0&P/Z*UjH\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5oFckiq?sm-O--n*fc9o'uhQ
+o`"Lbp@n=\q#C0iqY^6ir;HTerdk*7s*t~>
+JcC<$QN-UVrVc`nrVQWks7uWg!Vc<eoj[Rbo()>?n*f]3m-O'&l0.9ljQ#:Zi8<AHgY1?4f$r0r
+dEg+^bK7iF`P]O,^:_(g\@/cNZ*1:2Wi2hlUnOHQSXZ%7Q'@GoO,]*UM2$_:Jq/?!H[9p\F[AJb
+7nH<K:&@Tc9hnI_:]+&f;>sDe:]=2d;><ua;?'N";c6Ii:f1(d:]4&f:]!oe:\dcb:]=2h=8Z+p
+<W?)#='#6!r)Wesqc*MorDrntqc*Gmoi;)p<r5qu<rQ2"=>3ge]"G_k_8=.0a2lEHbg+P^daZdt
+f@em4h;-uHiSrnYjlYail0@U$m-X60n*olHncJFTo`"O`pAambq#1$bqYL*bqY^0bq#:$epAFU`
+o`"I\o)J7[nGVhUmJuYQliQM<lMg&JkQ'fFk5XNCjSn0?io0mp$fBgth;-l@gY1B7f`'J+f%&:"
+e'e6CA^JcKcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa$a=YHG"0XK/A$WMl_m
+VPL#_U7n9RT:VXFS=?":R$a5+Q'IStP*1rhO,o<\N/W[PM2@%DL4t;5K7\[RJ1lD$I=6KiH?sj]
+GB\4QFEDSEEcH)<Df0H0D/=!'C2%BqBP1phAS#C^@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"
+<)ifps&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKqk0/n&!`;,U4b9hS8rN4J3Qn@aTa
+7RrER7"cpB1c[9I4?btr6UNgm4[(u"91qlKnGiGemT/F8r'L?LqaCHQs$lrWs%!,]r^m2a9`@b8
+:/=\_;,U=l<E<.%=]np5>[CcF@:E_XAnPdlCM[m,EH6/DGBeCZI=?]tK7nu7M2I7PO-,TiQ'du/
+S=Z@HUSOcbWiN8)Yd(OB[^`l[]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olKmm)
+mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqu`np&9OBQ2c@~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhBD;,np%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ%7QBdVqO,f0VM2-h=Jq/?!I!U'^G&MDJ
+IuKi&bl59a^;.S%_o0O7aN2KGbOs'ZbP]Qac1oT\cN)>cdJVDodEp8>cMu,rbfe/L`l5m6_SO%e
+^AbeB^&PbB[f!Q5[/RB5['d=@[e@3*[f*]3\Fd9+\GWi9\,j(Krjhp;1VCE9^r"".`lQ9Fbg+P^
+dF6Urf@\g2gtgiFi8WeXjlYail07L"m-X60n*ol;o()DEo`"O`pAambq#:*dqXj[]qYg6cq#:$e
+pAFU`o`+O\o)J7[nGVeWmd9E?liQM<lMg#Lki_..joXZ*jSn0?io0mp!T2c5h#Z<crn;hSf[na+
+f%&:"e'cXkd*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZE^X<YHG"0XK/A$
+WMl_mV50o^U7n9RT:VXFS=?":R$a5+Q'IStP*1rhO,o<\N/W[PM2@"BL4t;5K7\Z)J:E#sI=6Ki
+H?pBQG^"@TF`__HEcQ/>E,TW3D/F*)CMIS_BE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=TV],
+=8c/$<E)rr;u]bq;>j>k:]=,e:&dod9D_?\8c;3U8,YpT7J'"C6hE_25mZ9!f@JBsc->5DrtbC'
+ZN's%Tmp++Q;pqSTq\<Z<``:'If?JOXfS\os80M#^Abn162X(J6i0:O7K5jU7fl4Q8cD<_92,=Z
+ISN[8:f1.i<)lt"=BSd2>[:ZC?t*SUAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1LP^qJNfT<cQ'Rf*
+S"6.DTqeE]W2co#YHY==[C3TU]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!6h;7)JioB(\k3(sml0I^&
+mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s-<V7~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhBD;,np%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ%7QBdVqO,f0VM2-h=Jq/?!I!U'^G$\Tg
+Cib#_Pl?^CNs1W-P*;)org!AHs-3SKp6,K@rK[#@rKm;F!1!GIs-NbO"-o+8PPp[COo:FCOnk1;
+O8P%9NW+t;O7n\5O84gcO#4G\]t_A"_o9X:aihoRcdC.heCN7(g=k?<hVd>Oj5f=akNM0plKmm)
+mdKW6naZ2@oCV\Sp&Facp\agcq>:$\qtg0fq>'gbp\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7
+klU)3kPjTFjlGM%irS/urnmh7hYu=3gtVh^IbEB*f@JO'eC;sqdF$=ecd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R'CYct=6Xf\\*WiE%sVl-AeUnaZXTqJ$LSt2C@S!o_3Q^3o%
+P`q8nOcYWbNfB!VMi*@JLPCP;KS+o/JUi9#IXZ]nI!^0c(O:7LGBS+NFE;JCEH,r9DJj<.Chmg$
+C&VcHB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>j:Adid9`@]^
+9)_E\8GPdS7f5^I7/0.A6L-oDUS4<PS=?":Z.JpR*U^IhN:-^tIpGN\Db!BAGBnO^9h\/TAVGeh
+JV&OCs8S,[OR\D3NrG+&62X(J6i0:O7K5jU7fl4Q8cD<_92,=ZISN[8:f1.i<)lt"=BSd2>[:ZC
+?t*SUAS,UhC27[(DfKf>Fa&(VH[U?nJV/W1LP^qJNfT<cQ'Rf*S"6.DTqeE]W2co#YHY==[C3TU
+]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!6h;7)JioB(\k3(sml0I^&mI'H3nF?)?!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUp/@s-<V7~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhB_V5op%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ%7QBdVqO,f0VM2-h=Jq/?!I!U'^G!SJ`
+7n?6F:JLd]s%NJgr_NMiqbd>hp.kZbpegi`qGI8j#ZFVu;,C+e:f%$br_NDds%iGcr_NJh!)NJn
+r)WVno2b`gr`&hrrDrntqc*Dlp/_/o!EN5!<rQ2#=>[V%]t_A"_o9X:aihoRcdC.heCN7(g=k?<
+hVd>Oj5f=akNM0plKmm)mdKW6naZ2@oCV\Sp&Facp\agcq>:$\qtg0fq>'gbp\smap&F[aoDJ1Z
+nc/+WmfMqEmJZAQlg!d7klU)3kPjTFjlGM%irS/urnmh7hYu=3gtVh^IbEB*f@JO'eC;sqdF$=e
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R'CYct=6Xf\\*WiE%sVl-AeUnaZX
+TqJ$LSt2C@S!o_3Q^3o%P`q8nOcYWbNfB!VMi*@JLPCP;KS+o/JUi9#IXZ]nI!^0c(O:7LGBS+N
+FE;JCEH,r9DJj<.Chmg$C&VcHB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq
+;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L-r:;(5=:9hS5kK!"&4oYHDl7Ri]Q5=d:U
+2EEQL5!MA"6o[1d5!_b591h`In,N;cmT/L:r'L?LqaCHQs$lrW!_>mSr^m2a9`@b8:/=\_;,^Cm
+<E<.&=]ns6?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2R=QO-,TjQC+)0SXuLJUSOfd
+WiN8*Yd1UC[^`l\]t_A"_o9X:aihoQcHstfeCE1'g"P6;hVd>Oj5]7`kNM0plg4!*mdKW6nac5O
+oCW%T!quB_rqQNhs8)Zjrqu`np&9OBQ2c@~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhGPCh)p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8<DIgY1?4f@AC!
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ%I!U'^G'%YF
+I"dZ[ah>C%^VI\&`5K[:aN;TIbP]Tac2Z#dbPfWbc2#Z\ci;AcdJ_JpdEp8>cMu,rbfe/N`l5p7
+_SO%e^AY_A]`PjY]D8o5[K!W4ZN7G@rjMF-qmQL5q7-@3!4Md6s0r'<qmZX8ppg@7rjjnt]Y;.s
+_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]4_k3)!nlKdg'mI'H3nF?)?oCMVRp&Facp\agcq>:$Z
+qtp6fq>0mcp\smap&=U`oDJ1Znc/+Xn,MhUmJcJPli68LklU)3kPjTKjlGL_j5T(Wrnmh7hYu=3
+gtVh^%b]Ldf@JL&eC;sqdF$=erm$#<bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i]OZa6sB
+Yct=6Xf\\*WiE%sVl$;dUnaZXTqJ$LSt2C@R[KP1Q^3o%P`q8nOcYWbNfB!VMM[1GLPCP;KS+o/
+JUi9#IXQWlI!^0cH$FOWG'.nKF)l;@EH#i6DJa4nChmg$C&VcHB4h-S#@q=S@U`bS@/aL7?<pk9
+>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L-oAf@8?t
+dD4$&rtM6Crr8@jIoM\t=e)%WU8+Md='Si+Y5bU(Y3l8e^$rc8^Ze&^6N':L7/fXT7fGpX8H29]
+9)hP69MJ5V:Jakb;H$Ln<E<1'=^#$7?!^lG@Uiq[B4u!pCMds.EH?5FGBeF\I=?]uK8#&9M2R=Q
+OHPfmQC+,1SXuLKUnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcdC.heCN7(g=k?<hVd>Oj5f=a
+kNM0qlg4!*mdKZ8rpg*]o`"Lbp@n=\q#C0iqY^6ir;QZerdk*7s*t~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhC%q>pp%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8<DIgY1?4f@AC!
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ%I!U'^G'%)$
+CN+NOOcGJ$NsCc/P*;,qPa2*2!gT"7pQGTAr0?o?rg3DG!1!GIs-NbO"-o+8PPp[COo:FCOnY%7
+O8P%8NW5%<O7SJ4O8Ft2O8+b"O#+D\^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5f@bkNV6r
+lg4!*mdKW6nac8BoCW%Ts7ZKer:p9eqtfm\qtg6dqY:'arq?9_rq-6^r:9mXs7$$Vs6fpSrp9[N
+s6BUJ!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n:g"=p.f%&=#eC2jndEp5=c@=*_bKJ&MaN2EA
+`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfSS'Wi;qpVPU)aUS=HUTV%gISXc1<R@'A.
+QBd`"PEM)kOH5H_NJrgRM2@%DL5(D8K7ec,J:N,uI=6KjH[:!`G^"@TF`__HEcQ/>E,TW3D/BDl
+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_ks%iVhr([2b
+r_*,\r^m&Zq+(BQr'g6Gpd=[?lTkfKTUhUBR\\'rrVml:`.X5ns*9W17Vm!;F`hqRI!n[];GMq!
+Jq8Q,mJd0IrK-H.!0HG2r'L?Lr'^NQs$luXs%*/]s%<;aInWR2:/=\_;,U=k<)lt#=BSg3>[:ZC
+?t*VVAS5[jCMRd)E,fr@G'A1WH[U?nJqJc3Ll%%KNf]EfQ'Rf+S"6.DU84W`W2cr$YHY==[^WfY
+]Y2(q_Sa@4aN;WLcHjnce'ut#f\5'7h;7)JioB+]k3(smlKdg'mI'H4nc&([oCW%T!quB_rqQNh
+s8)Zjrqucoo_sFAQ2c@~>
+JcC<$Q2gOVrVc`nr;6Njs7uZhBD;,np%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8<DIgY1?4f@AC!
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19QBdYsO,f0WM2-h=K7SQ%I!U'^G'$)>
+6q0a?:]3ue9`Rrf:]=2e;>sDd:B45d;><ub;?'N";c6Lj:f1(d;#O/g:]!oe:\dcb:]4,h:\7]]
+<V'8j<W5ts<W#ns<Vobm<W?)"<Voeu<E<0"=8l5%<E<0"=#7J$^;%M$`5Td<b0/&Td*^:ke^rF+
+g=tH?hr*JRj5f@bkNV6rlg4!*mdKW6nac8BoCW%Ts7ZKer:p9eqtfm\qtg6dqY:'arq?9_rq-6^
+r:9mXs7$$Vs6fpSrp9[Ns6BUJ!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n:g"=p.f%&=#eC2jn
+dEp5=c@=*_bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfSS'Wi;qpVPU)a
+US=HUTV%gISXc1<R@'A.QBd`"PEM)kOH5H_NJrgRM2@%DL5(D8K7ec,J:N,uI=6KjH[:!`G^"@T
+F`__HEcQ/>E,TW3D/BDlCMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"!``3!
+rDW_os&&_ks%iVhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?lTtPI-VmE2;Hn41e,'*kR:])^GKW9Q
+/1WV>2*X8i5XIju3BfW!91qiJ9'uZU<W6#!<Us2T62X(J6i9@O7K5jV8,l-[8cME_97KW09hnJ\
+:f1+h;cHat='/U/>?kH??XR>QA7]CeBkqL$DK'T:FEVkQH@('hJ:`E-L5:\EN/j!_PEhH$R[]k>
+TVA6YVl6VsXfnt7ZaR?R]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeXjlYail0@U$m-X60
+nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NmrUg)?s-<V7~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7^[0p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9bGBIkF
+H[q'E[EZD!^;.V&_o9X9aN;TJbPfZbc25]_bl>racM>fdd.YlcdK@nDd*M^:s31kob/q]C`PfX0
+_#D%J^&G\A]`c![]=PTP[J731[/dT3ZN7G@rjM+$rj_I,n$rA-0"S^0^VRe*`Q-'BbK\>YdF-Op
+f%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9rpg*]o_nFap@n=Zq#:*eqX47XqYg6dq#0sepA=O_
+o`+O]o)A1ZnG_nVmf2\Rm/QDOlMg#Lki_..joOT)ro=%<"l\Cthr!;ih$Vrlg=k65f[na+ec+&)
+e'cXkd*L"_c-611EluMFaN)<>`Pf[2_SO%&^V7Co]Xtbc\@8oT[C!9HZE^X<YHG"0XK/A$W2HPj
+V50o^U7n9RT:VXFS"#k7R$a5+Q'IStP*1rhO,o<\N/NRMM26qAL4t;5K7\Z)J:E#rI=-BgH?sj]
+GB\4QFEDSErc&9aDf0H0Ci!m&C2*Z\!G?$DAH?=OraPn9!+>e5!a]/<r`fM/>$Co.!a&N*rDiu"
+<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/IAoKqk0"kM&IOc')5ru%`Fli3aSIoM\t
+=IPkXV5@6p<a&S-Xf\Y+m/R!srOr9HqRusEqnE'ElTtG8r^6QNr^HiVr^ZuZ!(m/^InNI/9heAY
+:f("e;c?Xr<``C+>$G6;?XI5N@qB4aBPD6uDJjE5F*)SLH$XjdIt3-'KnbD?N/`m[P*;/tR$sM8
+T:r!TV5L;mXKA\2Za@0M\[oGe^VRe*`Q-'AbKS8XdF-Lnf%8R.gYCWBi8N\UjQ5OekiqBum-O0/
+mgJXTo()DDo_%nNp@nO\s7u]krVQQkrr)KgJcD#8J,~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7^R-p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9bGBI8$
+Ao)R;NKfE_O-#HcOckomQ'M64!gT"7pQPWArK[#@rg3DG!1!DHs-EnTQ'IStPQ$aCOoCODOnOt:
+Nqe\8Nr+h9NrG+/OT1CANrP1>OSOt4NpMfZ]"Gbl_8=.0a2lEHc-FY_daZguf@em4h;-uHiSrnY
+jlYail0@U$m-X60n*olHncA@SrUg6cp\4U\rqZKgmecnXrV?<brV-?cqt:!]s7?3[rpg$XrpTmT
+s6]gPs6K^MrojLJkNDj,!TiDAj8\*BiS`YOhqn@g$JaCig=b03f@SU(rmV8'da?Ihcd'h\bl5e+
+b/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP_\$i`Q['R*EZ*:I9Y-"h-X/`1uVl-DgUnjc[TqS-OSt;LB
+S!ob4R$X,(Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2Jq8H&IsufoI!^3dH?jaZGBS+NFE;L%E=-Z'
+DJj<-Chmg$C&VcHB4h-S!G#^>@fKj:@/aL7?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>j
+:Amod9`@]^9)_E]8GPdR7f5^I7/0.A6L-oASt)9lE5L`7ru07=Nj\n<a'M5PDbY=uH?jm19hS>X
+KnFr.K'`L;O8G%=NrY:<NrY:=O8b7,62X(K6i0:N7K5jV8,l*[8cD>392&#R9hnJ\:f1+h;cHdu
+='/U/>?kH@?X[DRAS#LfBkqO&DK'T:FEVkRH@1-jJ:`E-L5:\FNK90aPEhK%R[]k?Tq\?ZVl?\t
+Xfo"9['mHS]"G_k_8=.0a2lBGbg+P^daQ^sf@\g3gtglGiSrnYjlYail0@U$m-a?2$h3]Wo(2JF
+p%A%Pp\jmeq>^<iqu-HlrUg)?s-<V7~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7^.!p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt)7:Q^*btOH5?YM26n>K7SQ%I=$9bGBH5>
+6Us[?9Mk^^!)<Gfs%iVjqbd>hpJ:fcq,-o`qbdAk#ZFW!;,C+e:f.'br_NDd!)NDcr_NGgs%iYi
+nlGHan5fKfqH!Sqqc*GmlrGaM]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/LioB+]k3(smlKdg'
+mI'H3nF?MK!V>s^o`Fj]p\agcq>C*Wqtp6gq>0mbp]'sap&F[aoDS7Znc/+Xn,MhUmJcJPli68L
+klU)3kPjTEjlHF$s5F4@i8EMMhYu=<gtUQ:g"G$0f@JLOe-XUPdF$=ecHa\Yrl]?)aiMQD`l5p8
+_ns:,^q[Xu]tD"i]",>[[^NTNZa6sBYct=6Xf\\*WiE"qVl$;dUnaZXTqJ$LSt2@?R[KP1Q^3o%
+P`q8nOcYWbNfB!UMM[1GLPCP;KS+o/JUi9#IXQWlH[C'bH$FOWG'.nKF)q8"$?0p$DJa3+CMR[!
+rb)=FB)Z?BA7PUJs'Yn8ra,_5?![G7!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVhrD!8br_*,\
+r^m)[q+(?Pr'g6Gpd=[?lTlLe9h[rCDN;I#s5Ktr9grUB89l^92```V5X.V'r]'p@"A)6Y84i1J
+q,IDqr`/MilTtG8r^6QNr^HiVr^ZuZ!(m/^InNI/9heAY:f("e;c?Xr<``C+>$G6;?XI5N@qB4a
+BPD6uDJjE5F*)SLH$XjdIt3-'KnbD?N/`m[P*;/tR$sM8T:r!TV5L;mXKA\2Za@0M\[oGe^VRe*
+`Q-'AbKS8XdF-Lnf%8R.gYCWBi8N\UjQ5OekiqBum-O0/mgJXTo()DDo_%nNp@nO\s7u]krVQQk
+rr)KgJcD#8J,~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq17&oCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBI_?
+G(,13W62ig^VI_'`5Ta:aN;TJrlbGgbfot-rQP;dqp,#`rm:Adr6kVl!71Yis32,!bK7fE`PfX0
+^q[Ut]tCtiqn3'D]=\'RqR-+,s0_m6r3HC1qmPn$rj_U0!4Mm9osb"2r4"Ai]Y2(q_Sa@4aN;WL
+cHjkbe'ut#f\5'7h;7)JioB+]k3(sml0@X%mI'H3nF?MK!qZ'Vrq-?dp\4U\rqZNhlhgSUrV?<b
+rqHEcr:U']s7?3[s7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj!NdEiS`YOhqm2Fgt^Z<g=b-2
+f@SU(eC;srda?Ihcd'h\bfe2Pao9A!a2Z*;`5BI/_8*h#^:h1k]",A]\$i`Q['R*EZ*:I9Y-"h-
+X/`.tVl-DgUnjc[TqS-OSt2C@S!ob4R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2Jq8H&Isufo
+I!^0cH$OXYGBS+NFE;L%E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s',M,r`K;)
+=',B%s&K(urDW_os&&_ks%iVhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?lTk^&P)G'EIf03`YI)j[
+YQ'#MQ;h"VTr"N^<`iC+=0AX-XKUsirOr-Cs1eKGrkJBFrP.bdr'L?LqaCHQs$lrWs%!,]r^m2a
+9`@b8:/=\_;,U=l<E<.%=]np5>[CcF@:E_XAnPdlCM[m,EH6/DG'A4XI!pKpK7nu7M2I7OO-,Ti
+Q'[l-S=Z@HUSOcbWN*)'Yd(OA[^`l[]Y;.s_SjF6aND]NcHjndeCE.%g"P3:h;@/LioB+^k3)!n
+lKdg(mdKW6nac8No*+dZp%J+RrV-HiqYL-erqu`no_sFAQ2c@~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq0gooCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBI.u
+ASZ:3KT_@Vrf@;GP*;,pQ2?mIPlR'CPQ-mGQ1UC@Qgg:FQ^3o%P`q=1P5LI@P5g[<P5:46O8P%;
+NW5%9O7SJ1O8b79O84h(O"J#X^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTjQ5Oekiq?sm-O--
+n*fc9rpg-^o^r.U!quB_r:p9erVGjWqtg9eqY:'arq?9_rq-6^rUU!Ys7$!Us6fpSrp9[N!:'OI
+!pJh1roO7CjSn0dio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@s+aDT&<`Pod5
+_SX.)^V@Lr]Xtbc\[],W[^EKKZa-j?Yck43XfSS'WMl_mVPU)aUS=HUTV%gHS=?":R@'A.QBd`"
+PEM)kOH5E]N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj^G^"@TF`__HErL%^E,TW3D/B2e!GZ?J
+BE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-s'#D)!a&N*r`9&!s&Aqqs&/korD<Mir_EAcs%NDbqb$iZ
+rCH`SrC6]RoL/IAoKqk0"e0URDJEqbrsd\@NMQT4m9N2!85=8Ord+rF9hSAYKnFu0K^8[6O91K)
+OSk1=OSk1<OR>F46N':K7/o^U7f>jW8,u6\8c_RYr_7i::Jakb;H$Op<`W:)=^#'8?=.)K@Uit]
+B4u$qCi402EccGIGBnL^I=Hd"KSG8=MN!OUOckroQ^F84StD^OUo(&hWi`G.Z*UgG\@K5a^;%M$
+`5Td<b0/&TcdC1je^i@*g=tH>hr*JQj5f@bkNV6rlg4$,n*fc9o()hP"n_K\p@e7Zp]C9fqY^6i
+r;HTdrdk*7s*t~>
+JcC<$Q2gLUrr)ior;6Njs7uZhs7ZNerq0gooCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBH2=
+6q'U:92J;Ur_3Gh:J^sdqbd>hpJ:fcpegi`qbdAk!`Mupr)!Jk:]4&f:]!le:\dca:]4,i:]=,V
+<qTJa<rH%o<rQ+s<;T\g<WH.s<\:tt^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTjQ5Oekiq?s
+m-O--n*fc9rpg-^o^r.U!quB_r:p9erVGjWqtg9eqY:'arq?9_rq-6^rUU!Ys7$!Us6fpSrp9[N
+!:'OI!pJh1roO7CjSn0dio/kSi8<GKh;-lAgY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@s+aDT&<
+`Pod5_SX.)^V@Lr]Xtbc\[],W[^EKKZa-j?Yck43XfSS'WMl_mVPU)aUS=HUTV%gHS=?":R@'A.
+QBd`"PEM)kOH5E]N/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH?sj^G^"@TF`__HErL%^E,TW3D/B2e
+!GZ?JBE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-s'#D)!a&N*r`9&!s&Aqqs&/korD<Mir_EAcs%NDb
+qb$iZrCH`SrC6]RoL/IAoKqk0!)<G\+@/?Us6R+<:dnL7:n0$d2_R$M5X7Y(3B/u^4\87;8PJIM
+oMtH_mQpb;rBpHMs$crWrC?lY!(m/^!D?,c9n#i5:f("e;cHat<``F,>$P<=?XR;O@qB7bBPM=!
+DJsN8FEMbNH$XjdIt30)L51VCN/`m\P*D5uR%'V;T:r$UVPgDnXfen5Za@0N\\#Mg^VRe*`Q-'B
+bK\>YdF-Opf%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60n*ol<o)J:bo_%nNp@nO\!r;]hr;6KkrVcBf
+JcD#8J,~>
+JcC<$Q2gLUrVc`nrVQWks7uZhs7ZNerq14%oCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[T#SZa$^9XK&4sV50fXSt2@=R$Nu"OcPK\MM[+BK7\W'I=-?cGBJ"H
+EdNFuS[?VT^VRe)`5Ta:ai_g(bkoT]bQ,occM5`ad.brcdf7Yoci23'c-4DTaiDE?`59@+^V7Fq
+]Xthhr4W-C!5&0?rO)X3rjDR1s0_m6r3HF2[J[Jd\+$mU]Y;.s_SjF6aND]NcHstfeCE1'g"P6;
+hV[8Mj5]4_k3)!nlKdg'mf)YZnF?)?oCV\Sp&Facp\jmdq>L0Rqu$<hq>0mcp\smap&F[`oDS7[
+nc/+Wn,MeUmJZAQlg!d7l2TrIkPjWDjT+B@it15/iS`YOhVR)EgtUT;g=b-Xf7)<$eC;sqda?Ih
+cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h,WiE%sVl-DgUnjc[
+TqS-NSt2C@S!ob4R$X,(Q'@JqP)t`cNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FRXG6N/4
+FEDSErc&*\Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!FB(2>lS%.>5hY+=BAT'<rZ2"<;fbq
+;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L-o@Mhck4I>n1*(pplbs0r#W<0pQfR\?OQ
+Vc[)&>$%l/Y,ppgrOr-CrP/<FrP/?GqnMVdr'L?LqaCHQs$lrW!_>mSr^qZ59MJ5V:/=\_;,^Cm
+<E<.&=]ns6?!^lG@U`kZAnYjmCMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOcc
+WiN8)Yd1UC[^`l[]Y;.s_SjF6aND]NcHsteeCE1&g"P3:hV[8Mj5]7`k32'olKmm)mdKTJnF?)?
+oCW%T!quB_rqQNhs8)Zjrqu`no_sFAQ2c@~>
+JcC<$Q2gLUrVc`nrVQWks7uZhs7ZNerq1+"oCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[T#SZa$^9XK&4sV50fXSt2@=R$Nu"OcPK\MM[+BK7\W'I=-?cGBJ"6
+@q]b$IZ'JPOH>TfPEV5rqj.8I!0m2@!0mDHoToKCn<O9FQBd`"PEZ!/r/pr@rfQl:pQ#'1p5]'3
+o8rj1rfH]3s,QT0.(m:/_8=.0a2lEHc-F\`e'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-alA#4V0R
+o(2MGrq6<bs7cKerqZNhkkk;SrV?<brqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rosIH!9a@D
+s5a7Aro4RLiSi_Qhqm5Gh;$c>g=k64rmuVMe^W*tdaHOjd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0X/`2!W2HPjV50o^U7n9RSt;LCS"#k7R$a5+Q'IStP*1of
+O,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?ja[GBX46F`__HErL%^E,TW3D/B2e!GZ?JBE;aX
+rac+@A,]p=@:3LB?NFJ=r`oJ-s'#D)!a&N*r`9&!s&Aqqs&/korD<Mir_EAcs%NDbqb$iZrCH`S
+rC6]RoL/IAoKqk0+`VC8C2.G^s5B$"P5g^F?:Jg'9m(]-I!eX_92\K<JqAR=s8S/ROSt7=OT(=<
+ORPR66N':K7/o^U7f>gY84cDP8q0K-9heAX:Jakb;c?Xq<`W=*=^,-:?=.)L@Us%^BP;-rD/O93
+EccGJG^=^bIXm!%KSG8=MN!RVOckrpR$jG6StMdPUo()jX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&T
+d*^:ke^rF+g=tH?hr*JRj5oFckiq?sm-O--n*^GLnac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*7
+s*t~>
+JcC<$Q2gLUrVc`nrVQWks7uZhs7ZNerq0dnoCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[T#SZa$^9XK&4sV50fXSt2@=R$Nu"OcPK\MM[+BK7\W'I=-?cGBJ!n
+779U89MA7]:&drg:]=2f;>sDc:B45d;><ub;?'Mp;c<Nj!DlSj:B"&d:B+,c:B"&e:]O;h:?tsR
+<V'8h<Vfbq<Vobn<Ua$;]Y;.s_SjF6aND]NcHstfeCE1'g"P6;hV[8Mj5]4_k3)!nlKdg'mf)YZ
+nF?)?oCV\Sp&Facp\jmdq>L0Rqu$<hq>0mcp\smap&F[`oDS7[nc/+Wn,MeUmJZAQlg!d7l2TrI
+kPjWDjT+B@it15/iS`YOhVR)EgtUT;g=b-Xf7)<$eC;sqda?Ihcd'h\bfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h,WiE%sVl-DgUnjc[TqS-NSt2C@S!ob4R$X,(Q'@Jq
+P)t`cNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FRXG6N/4FEDSErc&*\Df0H0D#S2NC2*Z\
+!G?$DAH?=OraGq;?srt@!FB(2>lS%.>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\
+8GPdS7f5^I7/0.A6L-r;6m"`]67q]=J5\s4buV&!.lT1?4?l,!76*=f5!;J08kA7Is&AVjnlG6G
+r'L?LqaCHQs$lrW!_>mSr^qZ59MJ5V:/=\_;,^Cm<E<.&=]ns6?!^lG@U`kZAnYjmCMds-EH6/D
+GBeF\I=?]tK7nu7M2I7PO-,TiQC+)0S=ZCIUSOccWiN8)Yd1UC[^`l[]Y;.s_SjF6aND]NcHste
+eCE1&g"P3:hV[8Mj5]7`k32'olKmm)mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAQ2c@~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg#5@ibp%@tKrpjjpnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ(8QBdYrO,f0VM2-h=K7JH"I!U'^G'%P>
+G'\n+V9?Wh_8=+.`l?*Ab0%p*bkoT^bl>recM5``d.brcdf7Yoci23!c-4DTb/_N@`59@+^V9]\
+s189Dr4W-Cs1A6@!kZ+Pr3ZR4Zi.62[J702[C#k<!OT94[cFps\G3Q*\2(_2^VRe*`Q-'BbK\>Y
+dF-Oof%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DDo`"O`pAamcq#:*fqW@\QqYg6dq#:$e
+pAFU`o`"I\o)J7[nGVhUmJuYQliQM<lMg&JkQ'fFk5XNCjSn0?io0mp$fBgth;-l@gY1B7f`'J+
+f%&:"e'e6CEmW.XcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XK/A$
+WMl_mVPU)aUS=HTT:VXFS=?":R@'A.QBd`"PEM&iO,o<\N/W[PM2@%DL5(D8K7ec,J:N,uI=6Ki
+H?sj]rc\iqF`__HEcH)<E,TW3D/B2e!GZ?JBE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-!*]>(!a&N*
+r`9&!s&Aqqs&/korD<Mir_EDdr_3;aqb$iZrCHcTr'pTQoL/IAog7n/*e/TaUmqCl]sn$Ls&<6f
+<a(udUnjqk=]\g/Y-"k.l2Uarr4`$B!5A?F!5A<EnNm(>rBpKNr^HiVr^ZuZs%35_s%@f79heAY
+:f("e;c?Xq<``C+>$G6;?=.)L@q9.`BPD6tD/O<4F*)PKG^=^bIXm!%KnbD?Mi<[WP*;/sR$jG7
+StMdQV5L8lX0&S0ZEpsI\@T>d^VI_(`Q$!@bKS5Vd*^=le^rI,g>(N@i8EVTj5oFdkiq?tm-O--
+n*^GLnac8Bo`"Lbp@n=\q#C0iqY^6ir;HTerdk*6s*t~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg#5@ibp%@tKrpjFdnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ(8QBdYrO,f0VM2-h=K7JH"I!U'^G'%%u
+A86+0K9MAqO9^o2PE_>uQBhH8!gT"7pQPWArg!)@rg3DG!1!;E"-o+8PQ$aCOo1CBOnt4@PPgRE
+PE#9rpQ,<6rf@&=r/]TonW,H<^;%M$`5Td<b0/&TcdC1jeCN7)g=tH>hr*JQj5f=akNM0qlg4!*
+mdKW6nac8BoCW%Ts7ZKerV6BfrVG[Rr;-BfqY:'arq?9_s7H<^rUU!Ys7$!Us6]mSrTjUOlK\B5
+s6'IGroX7B!9F.>!TN);i!\H!hVI#CgY:H9g"?;U"kM5ReC2kFd;mU[cHa\YbKJ&MaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6XfSS'Wi;qpVl$;dUnaZXTV%gISXc1=R[KP1Q^3o%
+P`q8mOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`GlDmsG'.nKF)l8?E,]`5DJa4hCB80a
+rb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]=,f:&[ic9D_?\
+8c;3V8,PjS7J'"C6hNe162t[%=a>)Jrf@lpORPY2Db*QEG^=ac:/+D[9ne1NJa*46O7eS7O8G"=
+O8=t.62X(J6i9@O7K5jV8,l-[8cME_97BQ/9hnJ\:f1+h;cHat='/U/>?kH??XR>QA7]CeBkqL$
+DK'T:FEMePH@('hJ:W?,L5:\EN/is^PEhH$R@Bb=TV80XVl6VrXfnt7ZaI6O]"G_k^r"".`lQ9F
+bg"G[dF6Uqf@\d1gtgiFi8WeWjlYail07O#m-X60mfi4No()DErq-?dp\4[^s7u]kr;6KkrVcEg
+JcCu7J,~>
+JcC<$PlLFUrVc`nr;6Nj!;ZTg#5@ibp%@tKrpjCcnF,f4m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C4Wi;nmUnXQSSXZ(8QBdYrO,f0VM2-h=K7JH"I!U'^G'$);
+6:FF992PU^!_uNer_WJhr_W>bs%rMgpe^ibs&',$;Gg:f;,L.crD*>fqbI/eq+gobr)!Dhr([8g
+<U*WX<TdEX<UNmC]Y;.s_SjF6aND]NcHjndeC<($g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?
+oCMVRp&Facp\jmdq>L0Pqu$<hq>0mcp\smap&F[`oDS7[nc/+Wn,MeUmJZAQlg!d7l2TrIkPjWD
+jT+B@irS/urnn1AhVR)EgtUT;g=b-Xf*0aUeC;sqrm>c5cd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu
+]tD"i]",A]\$i`Q['R*EZ*:I9Y-"e+WiE%sVl-DgUnjc[TqJ$LSt2C@S!ob4R$X,(Q'@JqOcYWb
+NfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$K=4%X)u:FE;JBEH#l8DJj<-rbDOLC&VcHB4h-S
+!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iVhrD!8br_*,\r^m&ZqFCHQ
+r'g6Gpd=^@kWp4U,r@B.;b'O*<M1Wj3&!3P5=._+3B0#_4\87;8Ep0R<:X&^<q/KR6N':L7/fXT
+7fGpX8H29]9)hP59MJ5V:Jakb;H$Ln<E<1'=^#$7?!^lG@Uiq[B4u!pCMds.EH?5EGBeF\I=?]t
+K8#&9M2R=QO-5]lQC+)0SXuLJUnsufWiN8*Yd1UC[^`o]]t_A"_o9X:aihoQcHstfeCE1'g"P6;
+hVd>Oj5]7`kNM0plg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`np&9OBPlH7~>
+JcC<$PlLFUrVc`nr;6Njs7uZhFnbV'p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$6`G'%eD
+EdN:pS$:,P_8F1/`lQ6Cb0/!,bkoT]bQ,oecM5``d.Ylcdf7Yoci23!c-4DTb/hTA`59@+^V9]\
+s1A<DrOr6Ds1A6@"hVF\]sP0D[K!W4Zi.<.[K*`7[/[H5['fV9n$`;*rO;d9pp]t,/A8g6_Sa@4
+aN;WLcHjkbe'ut#f\5'7h;7)JioB(\k2tmll0@X%mI'H3nF?MK!V>s_p&Facp\jmdq>L0Nqu$<h
+q>0mcp\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7l2TrIkPjTFjlGM%irS/urnmh7hYu=3gtVh^
+IbEB*f@JO'eC;sqdF$=ecd'h\bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I8
+Xf\\*WiE%sVl-DgUnjc[TqJ$LSt2C@S!ob4R$X,(Q'7AoOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&
+IsufoI!^0c!I8qhG7Je=FEDSEEH,r:Df0H0D#S2NC2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".
+>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.B6KpcTF.o"<D3L1`
+UoK)LPuLnVUSO]`>$4p2<j&O+kl:Rork@X3o0N:@r^6QNs$coVr^ZuZ!(m/^HqR.,9heAY:f("e
+;c?Xr<``C+>$G6;?XI5N@qB4aBPD6uDJsK6F*)SLH$XjdIt3-'KnbD?N/`m[P*;/tR$sM8T:r!T
+V5L;mXKA\1Za@0M\[oGe^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTjQ5OekiqBum-G&GmdKZ8
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTerdk*6s*t~>
+JcC<$PlLFUrVc`nr;6Njs7uZhDtiu!p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$6`G'%e3
+@VBS!I#=2NOHG]iPl6mIQN!-LPkL:@Pl?s>QN!6GQ2m3EQ33D:P`u*0r/po?rfR)@!0d>Drfd>@
+p5\d+s,[5Arf6]5muRO1oT8[*/A8g6_Sa@4aN;WLcHjkbe'ut#f\5'7h;7)JioB(\k2tmll0@X%
+mI'H3nF?MK!V>s_p&Facp\jmdq>L0Nqu$<hq>0mcp\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7
+l2TrIkPjTFjlGM%irS/urnmh7hYu=3gtVh^IbEB*f@JO'eC;sqdF$=ecd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I8Xf\\*WiE%sVl-DgUnjc[TqJ$LSt2C@S!ob4R$X,(
+Q'7AoOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0c!I8qhG7Je=FEDSEEH,r:Df0H0D#S2N
+C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^
+9)_E]8GPdR7f5^I7/0.B6KpcT>^1<k;K[$[K8<r-Db*WHH$Xjd:/+DZ:5+:Nkl:RAk)f1#r'LBM
+qaCHQr^QlWs%!,]r^qQ29MA/T:/=\_;,U=k<*!%$=BSg3>[:]D@:E_XAS5[jCM[m,E,fr@G'A4X
+I!pKpJqJc3Ll%(MO-#NgQ'[l,S"61FU84W`WN*&%YHY@?[^WfY]Y2(q_Sa@4aN;WLcHjnce'ut#
+f\5'7h;7)JioB+]k3(smlKdg'$170LnF?&>o(2MQo`Fj]p\ssfq>^<hqu6NlrUp/@s-3P6~>
+JcC<$PlLFUrVc`nr;6Njs7uZhD>3btp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$6`G'%dl
+6UF758k`#T:/4Ua;#=,h;"dZe:f1(drDE;cqbdAk#ZFW!;,C+e:f%$br_NDds%iGcr_NGgs%iPf
+r_NPokuR7QmoBHh<qo\a<\1r!^r"".`lQ9Fbg+P]dF6Urf@\g2gtgiFi8WeWjlY^hl07L"m-X60
+n*olHncA@Srq6<bs7cKerqZNhjSSlOrV?<brqHEcr:U*^s7?0Zs7--YrU0gUmHsl=!pf.:rosIH
+!9a@D!p/M(ro4%=iVqa9hqn@g!SlH/g4%`-f@SU)e^W*tda?Ihcd0n^c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<Y-"h-X/`2!W2HPjV50o^U7n6PSt;LCS"#k7R$a5+Q'IPr
+P*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH3&;9rc\iqF`__HEcH)<E,TW3D/B2e!GZ?J
+BE;aXrac+@A,]pB@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZ
+r^ciTr'pTQoL/IAog7n/)_a''0-WVCdn*@f/NGRC5!MA$76*=f5!DP18a-3P<:Eo^<qAWT6N0@L
+7/o^T7fGpX8,u6\8pj9*9MJ5V:Jakb;H$Ln<`W:(=^#$7?!grI@Uit\B4u!pCi401EH?5FGBnL^
+I=Hd!K8#&9M2[FTOHPfmQ^F52SY)UMUnsugWiW>+Yd:^F\%0)_]t_A"_o9X:aihoRcdC.heCN7(
+g=k?<hVd>Oj5f=akNM0qlg3sEmI'H4naZ2@oCW%T!quB_rqQNhs8)Zjrqu`np&9OBPlH7~>
+JcC<$PlLFUrVc`nr;6Njs7uZhs7^R-p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7SQ%I=$9bGBJ"C
+E-?S^OJU%6_8F40`lH0Bb00b-qoeo]!6tMgps8iapX/rf"4>KBci22uc-4DSaN)9=`59@+^](nK
+]XthhrOr3Cs1A9A!P?#C^&>>8[K!W4Zi7?0[JmT7[J[E3[I^in\,Wu5\,Wu;\,Efk^;%M$`5Td<
+b0/&Td*^:ke^rF+g=tH?hr*JRj5f@bkNV6rlg4!*mdKW6nac8Bo^r.U!quB_r:p<frVGONr;-Bf
+qY:'as7Z?_s7H?_r:9mXs7$$Vs6fpSrp9[Ns6BUJ!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n:
+g"=p.f%&=#eC2jndEp5=c>LnNbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYck43
+XfSS'Wi;qpVl$;dUnXQVTV%gISXc1=R[KP1Q^3o$PEM)kOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#
+IXQWlH[:!`GlDmsG'.nKF)l8?E,TZ4DJa4hCB80arb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k*
+=TV],=8l8#<W?%s;u]bq;>j>k:]F2f:&[ic9D_?\8cD9V8,PjS7J'"C6hNe15o>r(Jq.crJcCOh
+QrI.YUSOfa>$+g1<j&Ods80J0^?<9)62X(J6i0:O7K5jU8,l*[8cD<_92,=ZHqmI6:f1+h<)lt"
+='8[0>[1TB?t!MSAS,RgC27X'DfKf>FEVkRH@1-jJ:`H/LP^nINK93bPa.T&S"-(BTq\?[Vl?\t
+Y->1;['mHS]=bkm_8=.0a2lEHbg+P^daZdtf@em4h;-uHiSrnYjlYail0@U$m-a?2nF?MK#4qK[
+p%J+RrV6Egs8)Zjrqucoo_sFAPlH7~>
+JcC<$PlLFUrVc`nr;6Njs7uZhs7^I*p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7SQ%I=$9bGBJ"5
+?t<tkG(Ys>OckolPa.L1PlR'BP5pjHQ1C7?QhcpIQ1pUEPld26PQ$aDOo1C@Oo(:APPp[BP5pR?
+NV8D)O8b71O6r#/O84n6NrY4=O"nA`_8=.0a2lEHc-F\`daZh!f@em4h;7&IiT&tZk2tjkl0@U$
+m-X60n*ol<o(2MGrq-?dp\4U\s7uWiiqrZMrV?<brqHHdqt:!]s7?0Zs7--YrpTmTs6]gPs6K^M
+rojLJkNDj,#Nb%-j5].YiVqa9hqn@g!SlH/g()fgf@SU(e^W*tda?Ihci24-c-4ASb/q`Ga2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X;Y-"h-X/`2!W2HPjV50o]TqS-OSt;LCS"#k7R$a5+
+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E#rI=-BfH?jc7G7Je=FEDSEEH,r9Df0H0D#S2N
+C2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^
+9)_E]8GPdR7f5^I7/0.B6KpcQEE?RU?>Es+Ao)EW9Qk],IXOsc92SH<KBE42O62Pt62X(J6i0:O
+7K5jU8,l*[8cD<_92,=ZHqmI6:f1+h<)lt"='8[0>[1TB?t!MSAS,RgC27X'DfKf>FEVkRH@1-j
+J:`H/LP^nINK93bPa.T&S"-(BTq\?[Vl?\tY->1;['mHS]=bkm_8=.0a2lEHbg+P^daZdtf@em4
+h;-uHiSrnYjlYail0@U$m-a?2nF?MK#4qK[p%J+RrV6Egs8)Zjrqucoo_sFAPlH7~>
+JcC<$PlLFUrVc`nr;6Njs7uZhs7^C(p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[SuQZEUO7X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7SQ%I=$9bGBJ!q
+5sn%27nZWQ:/=\^;#=,h;"dZe:f1(dr_`>br)*Jl"B/2r;,I6h!DlSj:B"&d:&n)c:B"&d;#a>i
+:Amrg:?>OC<Ua&a<VKMo<W,rQ^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?hr*JRj5f@bkNV6rlg4!*
+mdKW6nac8Bo^r.U!quB_r:p<frVGONr;-BfqY:'as7Z?_s7H?_r:9mXs7$$Vs6fpSrp9[Ns6BUJ
+!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n:g"=p.f%&=#eC2jndEp5=c>LnNbKJ&MaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYck43XfSS'Wi;qpVl$;dUnXQVTV%gISXc1=R[KP1Q^3o$
+PEM)kOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`GlDmsG'.nKF)l8?E,TZ4DJa4hCB80a
+rb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]F2f:&[ic9D_?\
+8cD9V8,PjS7J'"C6hNe15o;=0.4RPC-Bp5C3\`HV5X@b+3B/u^5"SB/s8,d_<<6-#r)WMWr'L?L
+qaCHQs$lrWs%!,]r^m2a9`@b6:/=\_;,U=l<E<.%=]np5>[CcF@:E_XAnPdlCM[m,EH6/CG'A4X
+I!pKpJqSl6M2I7OO-,TiQ'[l-S=Z@HU84ZaWN*&&Yd(OA[^WfZ]Y;.s_SjF6aND]McHjndeC<($
+g"P3:h;@/LioB+]k3(smlKdg'mdKW6nc&(`oCV_Kp@e7Zq#C0iqY^6ir;QZerdk*6s*t~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq11$oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<Q^*euOcPK\MMR"@K7\W'I=$9bGBJ"J
+DfL&OMjpoo_Sa:0`lH0Bb00b-qoer^s3:Pgq9Sucp<iie"4>KBci22uc-4DTaN)<=`59@+^](nK
+]Xtegr4W-Cs1A6@!5&-Aqm6I5['d=?[/73.[/@?.ZiIN*[e$s.[f!T7[f*Z8[f*Z8[f!W7\1t_4
+_8=.0a2lEHbg+P^daZdtf@em4gtglGiSrnYjlYail0@U$m-X60n*ol<o(2JFrq6<b!;HEds7uWi
+i;<HKrV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g
+$JaCig=b03f@SU(rmZDGda?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9H
+Z*:I9Y-"h-X/`2!W2HPjV50l\TqS-OSt;LCS"#k7R$a2)Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS+OFE@k2EcH)<Df9N2D/B2e#&7jcBP1sirac+@A,]pB@:3JM?X@&E
+r`oJ-!*]A)s&f;&r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTr'pTQoL/IAoKqh/(4q!R
+D/3luA6W9.U8Fcd=B\j.>ZS#0jo>7ls1[X1pd+gErBpKNr^HiVrC;<-8P)NH91qrQ9hnJ\:f1+h
+;cHat='/U.>?kH??XR>PA7]@dBkhF#DJsN8FEMePH@('hJ:W?+L51VCN/is]P*D6!R@B_<TV8-V
+VPgGpXfen5ZaI6O\\#Mg^VRe*`Q-'BbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ>Ufl0/iGlg4$,n*fc9
+o()DDo_%nNp@nO\!r;]hr;6KkrVcBfJcCu7J,~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<Q^*euOcPK\MMR"@K7\W'I=$9bGBJ"J
+?=IP_F*rh0OHG]hPQ$gFQ2d'MPE_=.PQ-mHQ1L=@QgU1>Pld26PQ$aDOo1C?Oo1@BPPgU@PPgC=
+NW5%=NVSV-O8k=2O7SG5O8P(>O8Y.?O8b4AO,j't0ttE=_SjF6aND]McHjndeC<($g"P39h;@/L
+ioB+]k3(smlKdg'mI'H3nF?)?oCMVRp&F^cp\agdq>L0Jqu$<hq>9sdp\smap&=U`oDS7[nc/+W
+n,MhUmJcJPlN$5KklU)3kPjTEjlHF$s5F%;rnmh7hYu=<gtUQ:g"G$0f@JLOe:,lpdF$=ecHa\Z
+bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*DYct=6Xf\\*WiE%sVl-DgUnaZXTqJ$L
+St2C@S!ob4R$O#&P`q8nOcYWbNfB!VMi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$FOWG'.qLF:*)0
+EH,r9Df0H0D#S2SC2%?pB4kiUAH?=OraH+@?sm>K?=$q:>lS".>5h\)=T;J%<rZ2"<;fbq;ZBVm
+;#a>k:Adic9`@]^9)_E]8GPdR7f5^I7/0.A6L$iP?X@)H?<gK.9hohVI!g?::/+AY:5+>^s8%f=
+OSD->6N':L7/fXT7f>i+84cBF8kVfN9heAY:f("e;c?Xq<``C+=^,-:?=.)L@Us%^BPD3sD/O93
+EccGJG^=^bIXm!%KSG8=MN!RVOckroR$jG6StMdPUo(&iX0&P/Z*UjH\@K5a^;%M$`5Td<b0/&T
+d*^:ke^i@*g=tH>hr*JQj5f@bkNV4DlKdg(mdKW6nac8BoCV_Kp@e7Zp]C9fqY^6ir;HTdrdk*6
+s*t~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<Q^*euOcPK\MMR"@K7\W'I=$9bGBJ"J
+5smt.84ZEM:/4S];#=,h:]aEh;#3uc:]OAc;#4&g;ZK_n;#sKhrD*>fqb@,eq+gobqb[;gr(d5e
+r_E8i"'&B%<UWuT<V'5m<E</t<W?)"<W,qu<Vf`N^;%M$`5Td<b0/#ScdC1jeCN7)g=tE=hr*JQ
+j5f=akNM0qlg4!*mdKW6nac8BoCW%Ts7QHer:p<frVGILr;-BfqtU0brq?9_rq-6^rUU!Ys7$!U
+s6fpSrp9[N!:'OI!pJh1roO7CjSn3>iW.s:huV`lrnRq:gY1B7g"=p.f%'cLIac`mdEp4bcHXVX
+bKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6p@Yck43XfSS'Wi;qpVl$;dUS=HUTV%gI
+SXc1=R[KP1QBd`"PEM)kOH5H_NJrgSMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`G^"@TF`heJ$?L6-
+EH#i7DJj<-rbD^QBkV0mB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&K(urDW_os&&_k
+s%iYir([/ar_*,\r^m)[q+(?Pr'g6Gpd=[?l9Q18.6g'_4uG,O1cmrf6:Epq3&j)c8PA1FqGcc\
+!EN5"<qnuY6N':L7/fXT7f>i+84cBF8kVfN9heAY:f("e;c?Xq<``C+=^,-:?=.)L@Us%^BPD3s
+D/O93EccGJG^=^bIXm!%KSG8=MN!RVOckroR$jG6StMdPUo(&iX0&P/Z*UjH\@K5a^;%M$`5Td<
+b0/&Td*^:ke^i@*g=tH>hr*JQj5f@bkNV4DlKdg(mdKW6nac8BoCV_Kp@e7Zp]C9fqY^6ir;HTd
+rdk*6s*t~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[])TZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CK7\W'I=-?dGBS(L
+CN"?AKTW(G_SX40`Q-'Ab5TWbbQ#`abP]Qac2Q#`ci)5adJ_JqdEp7drlu5&bfn8Pa2Z'9_SO%&
+^:h4m]=Y_grOr3C!5&3@!5&'?!4DX0!jf8@oX"J&!4D[1!4DF,q6p@4o!\V-p9uQe^r"".`lQ9F
+bg+M\dF6Uqf@\g2gtgiEi8N_VjlY^hl07L!m-X60n*olHncA@Srq6<bs7cKerqZQipA=U^oDAI^
+rV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6B[MrTORNkND!ijlPS&it^S4iS`YOhqm2Fgt^Z<
+g=b-2f@SU(rmV8'da?Ihcd'h\bl5e'b/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT['R*EZ*:I9
+Y-"h-X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)
+J:E%JS:#[0H?jaZGBS-.F9Q`+EH,r9rb`9aChmg$C2%?pB4kgfARo=]raGn:@/aO5?3":1>lS".
+>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/0.A6L$i:D>n;]BP(gX
+Sti*ZVH[5+?<UF5jT#4ms1J<Ek.gaYr'LBMqaCEPs$luXs%!,]r_!2`IS<I1:/=\_;,U=k<)lt#
+=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@Fa&(VH[U?nJV/Z2Ll%%KNfT?eQ'Rf*S"6.DTqeH^W2co#
+YHY==[C3TU]Y2(q_Sa@4aN;TJc-F\`e'uq"f\,!6h;7&IiT&t[k2tmll0@X%mI'H3"n;'Qo(2MQ
+o`Fj]p\ssfq>^<hqu6NlrUg)?s-3P6~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq0proCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[])TZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CK7\W'I=-?dGBS(L
+>[V)VE-?kpOHG_)PQ-mHQ2[$CP5pjHQ1L=@QgL(@Q'@Jrrf[2ArK@)@r/q&Dr0$l>!0-c4qi1B2
+plGH:n;mC,!0?]4!0@)?qN!/A^r"".`lQ9Fbg+M\dF6Uqf@\g2gtgiEi8N_VjlY^hl07L!m-X60
+n*olHncA@Srq6<bs7cKerqZQipA=U^oDAI^rV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6B[M
+rTORNkND!ijlPS&it^S4iS`YOhqm2Fgt^Z<g=b-2f@SU(rmV8'da?Ihcd'h\bl5e'b/q`Ga2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT['R*EZ*:I9Y-"h-X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(
+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E%DG^OjaH?jaZGBS-.F9Q`+EH,r9rb`9aChmg$
+C2%?pB4kgfARo=]raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_
+9)V?\8GPdR7f5^I7/0.A6L$iM?X6oA>$>'&GBnLaInrg6;c6>DjT#"9k)fF*r'LBMqaCEPs$luX
+s%!,]r_!2`IS<I1:/=\_;,U=k<)lt#=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@Fa&(VH[U?nJV/Z2
+Ll%%KNfT?eQ'Rf*S"6.DTqeH^W2co#YHY==[C3TU]Y2(q_Sa@4aN;TJc-F\`e'uq"f\,!6h;7&I
+iT&t[k2tmll0@X%mI'H3"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s-3P6~>
+JcC<$PlLCTrr)ior;6Njs7uZhs7ZNerq0ssoCDJBnF,i6mHj3)l07Eok2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5g2^V7@m\[])TZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CK7\W'I=-?dGBS(L
+6pa7/7n?9K:/4S]qbd8fpJ:<Uqb[>kr_iepr)!Jk:]4&f:]!oe:\mic:\mlf:]*ue:]*ue<Vohn
+<Uj,V<V]Yq<V]\m<<6-#p/W]Y^r"".`lQ9Fbg+M\dF6Uqf@\g2gtgiEi8N_VjlY^hl07L!m-X60
+n*olHncA@Srq6<bs7cKerqZQipA=U^oDAI^rV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6B[M
+rTORNkND!ijlPS&it^S4iS`YOhqm2Fgt^Z<g=b-2f@SU(rmV8'da?Ihcd'h\bl5e'b/q`Ga2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT['R*EZ*:I9Y-"h-X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(
+Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5K7\Z)J:E$36[X6,H?jaZGBS-.F9Q`+EH,r9rb`9aChmg$
+C2%?pB4kgfARo=]raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_
+9)V?\8GPdR7f5^I7/0.A6L$i<5X.F24q0Y35!VA#6od=g5<_8&jT#!SoMtliq,IJs<EAr^r'LBM
+qaCEPs$luXs%!,]r_!2`IS<I1:/=\_;,U=k<)lt#=BSg3>[:ZC?t*VVAS5[jCMRd)E,fr@Fa&(V
+H[U?nJV/Z2Ll%%KNfT?eQ'Rf*S"6.DTqeH^W2co#YHY==[C3TU]Y2(q_Sa@4aN;TJc-F\`e'uq"
+f\,!6h;7&IiT&t[k2tmll0@X%mI'H3"n;'Qo(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s-3P6~>
+JcC<$PlLCTrVc`nrVQWks7uWg!Vc<eol'Koo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYsO,f0WM2-h=K7SQ$I!U'^G'%eF
+DK0lLMOCTj_Sa=2a2uKHbKKk,rlb;brltGfps8ocp!Nce"4>KBci23!c-4DTb/hT@`59@+^V9]\
+"2)7Y]`#PC]`5VC\cKFUpq?^7s0_^1rNcO1Zi%-+Zh:[*[Ht=&[C5n?!k,MFpU;uf\$rf\_8=.0
+a2lEHc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-X60n*ol<o(2MGrq-?dp\4X]rqZQip\XR[
+o_\U`rV?<brqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:rosIH!9a@Ds5a7Aro8IeiSi_Qhqm5G
+h;$c>g=k64f[na+e^W*te'cXkd*L"_c-4ASb/qcHaN)<>`Pf[2_SO%&^V7Co]Xtbc\[])V[C!9H
+ZE^X<YHG"0XK/A$WMl_lV50o^U7n9RT:VXFS=?"9R$a5+Q'IStP*1rhO,o<\N/W[PM2@%DL5#nd
+KS+o/JUmb"rgXRIH?sj]GB\4QF`__HEcH)<DuOVcD/=!'C2.HrBP1siAS#C_A,]p<@:9(As'>\2
+r`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jdr_3>bqb$fYr^ciTr'pTQoL/IAoKqh/&Sbuj
+AnYmmAu2G0>?P'5=g"mes8Te4]`,VD^?<62^AU@q6N':K7/o^U7f>jW8,u6\8c_RYr_7l;:Jakb
+;H$Lo<`W:)=^#'8?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!K8#&9M2[FTOHPfmQ^F52SXuOL
+UnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcd:(geCE1'g=k?<hVd>Oj5f=akNM0plg4!*mdKW6
+nac5OoCW%T!quB_rqQNhs8)Zjrqu`np&9OBPQ-.~>
+JcC<$PlLCTrVc`nrVQWks7uWg!Vc<eok3pgo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYsO,f0WM2-h=K7SQ$I!U'^G'%eF
+?=@D]Ed`_.Oco^-qipl>rfmDIns99AmZms?Pa%C2P5LI?P5LI?OoU^EP4t1<NVJJ.NVeb3O8k=+
+Nrb9%q2kT:plGN;NrG(n^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL]Ci8N\UjQ>UfkiqBum-O--n*fc9
+o()DEo`"Lbp@n=[q#:*gqY0mYr:KmbqYg6dq#:$epAFU`o`"I\o)J7[nGVhUmJuYQliQM<lMg&J
+kQ'fFk5XNCjSn1gio/kSi8<DJh;-l@gY1B7f\"g-f%&:"e'lamdEp4bcHXSVbK@rKaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Y[^EKKZa-j?Yck43XfSS'Wi;qpVPU)aUS=HUTV%gISXc1=R@'A.QBd`"
+PEM)kOH5H_NJrgSMM[1GLPCNiKnP)2Jq8IHp\Ff5&UShMH$FOWG'.qLFE;JBEH#jqD@gZ$CMR["
+BkV0mB4b^dA7T3L@KBnFra5\3!+#S/s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]
+rCQuZq+(?Pr'g6Gpd=[?l9YGSs&fM,=]e[PJ,W1G9iFlAK]E+,O6;T)O8VBB6N':K7/o^U7f>jW
+8,u6\8c_RYr_7l;:Jakb;H$Lo<`W:)=^#'8?!grI@Uit\B4u!pCi401EH?5FGBnL^I=Hd!K8#&9
+M2[FTOHPfmQ^F52SXuOLUnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcd:(geCE1'g=k?<hVd>O
+j5f=akNM0plg4!*mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqu`np&9OBPQ-.~>
+JcC<$PlLCTrVc`nrVQWks7uWg!Vc<eok3pgo()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V%1h\@/fOZ*:C5Wi;nnUnXQTSXZ(8QBdYsO,f0WM2-h=K7SQ$I!U'^G'%eF
+5smt.8OuKM:Jgpcr_W8`nkf0[!)ieps&/em!DlSj:B"&d:B+,c:B"&d;#a>i:Amuc:AIoh<qB>d
+<om<^<)r`pr`&ksqGoFQ<`W58_8=.0a2lEHc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-X60
+n*ol<o(2MGrq-?dp\4X]rqZQip\XR[o_\U`rV?<brqHEcr:U*^rq$*Zs7--YrU9dS!:BaO!pf.:
+rosIH!9a@Ds5a7Aro8IeiSi_Qhqm5Gh;$c>g=k64f[na+e^W*te'cXkd*L"_c-4ASb/qcHaN)<>
+`Pf[2_SO%&^V7Co]Xtbc\[])V[C!9HZE^X<YHG"0XK/A$WMl_lV50o^U7n9RT:VXFS=?"9R$a5+
+Q'IStP*1rhO,o<\N/W[PM2@%DL5$"gKS+o/JUiiEPQ!o]H[:!`G^"@TF`heJF)l8?E,Y_n&8c6!
+CMITuBP;$kAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[id
+9D_?[8cD9V8,PjS7J'"C6hE_15m'>85!Am-$9LUE3B9&Y5<_\2j8T*Zpf-odrD`JjrB^?JrBpHM
+s$crWrC?lY!(m/^!D?,c9n,o6:f("e;c?[s<``F,>$P<<?XI5N@qB4aBPD6uDJsK6F*)SLH$Xjd
+It3-'KnbD?N/`m[P*;/tR$sM8StVmSV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8Xd*^=le^rI-
+g>(N@i8EVTjQ5Oekiq?tm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTerdk*5s*t~>
+JcC<$PlLCTrVc`nr;6Nj!;ZTg#5@ibp%@tKrpj[knF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/`(pUnXQTSsu19Q^*btOH5?YM26n>K7SQ%I=$9bGBJ"J
+EGflDK9;tAb/D6<a2n8&rQ,&^rlb;brltGfq9T#do[3]e"4>KBci),tc-4DSaN)9<_ns7*^](nL
+]Xteg]`,VC]E#SB\cBA;^&PbEZh^s2Za@*GZh^p(Zh:[*[Hb3p[fEl1[k#50_SjF6aN;WLcHjnd
+e'ut#f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?MK!V>s_p&F^cp\jmdq>U6cqsXIUqu$<iq>0mc
+p\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7l2TrIkPjWDjT+B@irS/urnn1AhVR)EgtUT;g=b-X
+f59*heC;sqda?Ihcd'h\bfe2PaiMQDa2Z*;`5BI/_8*h#^:h1l]=GJ^\$i`Q['R*EZ*:I9Y-"h-
+X/`2!Vl-DgUnjc[TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5qu?Vb#^^lD
+H$FOWG'3e+"`n^(EH#jqD@gZ$CMR["BkV0mAnGUcA7T3L@KBnFra5\3!+#S/s'#J,r`T8's&]2#
+s&K(ur_rhps&&\js%iYir([/ar_*,\r^m)[q+(?Pr'g6Gpd=^@kX#5_$YX*]@:!2B=Bo!1Y2TB]
+]tF6UrkA-As1\-?s1\M!r'L?Lr'^NQs$lrW!_>mSr^qQ29MJ5V:/=\_;,^Cm<E<.&=]ns6>[CcF
+@:EbYAnPdlCM[m,EH6/DG'A4XI!pKpJqSl6M2I7OO-#NhQ'[l,S=Z@HU84ZaWN*&%Yd(OA[^WfY
+]Y2(r_SjF6aN;WLcHjnde'ut#f\5*8h;7)JioB+]k3(smlKdg'"RYXGnF?MK!V>s_o`Fj]p\ssf
+q>^<hqu6NlrUp/@s-*J5~>
+JcC<$PlLCTrVc`nr;6Nj!;ZTg#5@ibp%@tKrpj[knF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/`(pUnXQTSsu19Q^*btOH5?YM26n>K7SQ%I=$9bGBJ"J
+EF33hDfp\mQB@>oP*>m0plkW?r0@>Lp6P]Em[!m<!gJn4rf[5Br0$r>rfR8Fqi^`<s-!A?r/LN2
+q2P93q2bQ;kE#A!!0?i8/&/p;`5Td<aihoRcdC1ieCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6
+nc&([oCW%Ts7QHerV6BfrqcEen,2kUr;-EgqY:'arq?9_s7H?_r:9mXs7$!U!q,ICrTjUOlK\B5
+s6'IGroX7B!9F.>!TN);i!\H!hVI#CgY:H9g"?;UF4SmkeC2jodF$=ecHa\YbKJ&MaN2EB`l5p8
+_ns:,^q[Xu]tD"i\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%rVl$;dUnaZXTqJ$LSt2C@R[KP1Q^3o%
+P`q8nOcYWbNfB!VMi*@JLkg_>KnP*No_%tRq>GODH[:!`G^"@TFoHIdF)l8?E,Y_n&8c6!CMITu
+BP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[ic9D_?\
+8cD9V8,PjS7J'"C6hNe05n-q!=&`*r;,9q\;c-8CiW&q=s,d)<k`Gh*s$?QLrBpKNr^HiVrC6o[
+8P/nRHqR.-9hnGZ:f("f;cHat<`iL->?kE>?XR;OA7]@cBPM=!DJsN8FEMbNH$XjdIt3-(L51VC
+N/`m[P*D5uR$sP:T:r!TVPgDnXKA_3Za@0M\[oGe^VRe*`Q-'AbKS8XdF-Lnf%8R.gYCWAi8EVT
+jQ5OekiqBum-FlBmdKZ8rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTerdk*5s*t~>
+JcC<$PlLCTrVc`nr;6Nj!;ZTg#5@ibp%@tKrpjXjnF,f4m-O''l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\@/fOZEUL6X/`(pUnXQTSsu19Q^*btOH5?YM26n>K7SQ%I=$9bGBJ"J
+EC3,`7Rp-I;,C+e;#X;l;"IKT;#*ug;Z9Sp;Z0Gn:f%!ar_NGes%iGcr_NAe!)NMfr_N>b!`N&t
+q,RDpnQ#Hej&PhS!*/_n/&/p;`5Td<aihoRcdC1ieCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6
+nc&([oCW%Ts7QHerV6BfrqcEen,2kUr;-EgqY:'arq?9_s7H?_r:9mXs7$!U!q,ICrTjUOlK\B5
+s6'IGroX7B!9F.>!TN);i!\H!hVI#CgY:H9g"?;UF4SmkeC2jodF$=ecHa\YbKJ&MaN2EB`l5p8
+_ns:,^q[Xu]tD"i\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%rVl$;dUnaZXTqJ$LSt2C@R[KP1Q^3o%
+P`q8nOcYWbNfB!VMi*@JLkg_>KnP)=O,oBbPPmiSH[:!`G^"@TFoHIdF)l8?E,Y_n&8c6!CMITu
+BP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[ic9D_?\
+8cD9V8,PjS7J'"C6hNe05mBG53&s#]3W:u?5!;&#iW&pXpf-ufqc*>j"&r8d62X(J6i9@O7K5jU
+7fl4Q8cD>092&&S:/4S]:f1.i<)lt"=BSd2>[1TB?t!MTAS,RgC27X'DfKf>F`qtSH@1-jJ:`H/
+LP^nINK90aPa.T&R[ftATq\?[Vl?\tXg#(:['mHS]"G_k_8=.0a2lBGbg+P^daQ^sf@\g3gtgiF
+i8WeXjlYail0@U$lic_Dn*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcEgJcCr6J,~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhF8,D%p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBJ"J
+EGTW=I#FAnc,7K>aN2NGao9?]b5TT`bl5ldcM5`bd.>Wgda?Ihcd2U9'[=kGbK.`C`5BI.^q[Us
+]tCth]Y+6Wrk/6Brji6E]Y2"kr4W*B!5837r3ZI0pTj\&os=_,p9jt1rjMj7!OfE7[f<f:[f3`>
+[^W]R\$l1C34?<3_Sa@4aN;WKc-F\`e'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-a?2nF5u=o(2MG
+p%A%Pp\4X]s7uZjq"sIVp&"^arV?<brqHEcr:U*^s7?0Zs7--YrU0gUmHsl=!pf.:rosIH!9a@D
+!p/M(ro4%=iVqa9hqn@g!SlH/g&]mZrmq>)e^W*tdf.X&d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A#W2HPjV50o^U7n9RT:VXFS"#k7R$a5+Q'IStP*1rh
+O,o<\N/W[OM26qAL5#I'qjd\4"aP?:GBS-.F9Q`+EH,r9rb`9aChmg$C2%?pB4baeARo=]raGn:
+@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_9)_E\8GPdS7f5^I7/0.A
+6Kg`8@gHFH>@1cB=]_carrKgGq7ZgBpqQdAp:pU@qa19LqaCEPs$luXs%*/]s%<;aIS<I1:/=\_
+;,U=k<)lt#=BSg3>[:ZC?t*SUAS,UiC27[(DfKf>Fa&(VH[U?nJV/W1LP^nINfT<cPa.W(S"-(B
+TqeE\Vl?`!Y->1;['mKT]=bkm_8=.0a2lEHc-FY_daZguf@em4h;-uHiSrnYk2tjkl0@U$mI'H3
+$h3]Wo(2JFp%A%Pp\jmeq>^<hqu6NmrUg)?s-*J5~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhDYNkup%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBJ"J
+EF!!aCNFlYQB@;mr0.,Crfd5D!1!MKs-NGFrg3&=s-3YMPEZ!/r/pr@qN:Q9rf[>Fr0.)B!0-r9
+qi1H2q2P93q2bN:oT'!6rf@)>!KW9>O8k:AO8b4EO-#E`OH9:#3000:_Sa@4aN;WKc-F\`e'uq"
+f\,!6h;7&IiT&tZk2tjkl0@U$m-a?2nF5u=o(2MGp%A%Pp\4X]s7uZjq"sIVp&"^arV?<brqHEc
+r:U*^s7?0Zs7--YrU0gUmHsl=!pf.:rosIH!9a@D!p/M(ro4%=iVqa9hqn@g!SlH/g&]mZrmq>)
+e^W*tdf.X.d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A#
+W2HPjV50o^U7n9RT:VXFS"#k7R$a5+Q'IStP*1rhO,o<\N/W[OM26qAL5#3io^qhNq"af3s*=io
+G^"@TFoHIdF)l8?E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#
+<W?%t;u]bq;>a8j:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_/62sjh;G^+f<)QOdL#E"2O8Y1;
+O8+h:O7\P5O8D9C6i0:N7K5jV8,l-[8cME_97BQ/9hnJ\:f1+h;cHat='/U/>?kH??XR>PA7]@d
+BkhF#DJsN8FEMePH@('hJ:W?+L51VCN/is]P*D6!R@B_<T:r$UVPgDoXfen5Za@0N\\#Mg^VRe*
+`Q-'BbK\>YdF-Opf%8U/gYL]Ci8N\UjQ>Ufl07L!m-X60mgJXTo()DDo_%nNp@nO\s7u]kr;6Kk
+rr)KgJcCr6J,~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhCA7Gqp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<Q^*euOH5B[M26n?K7\W&I=$9bGBJ"J
+EBurZ7S$$DrD<Jjs%r\ipJ:EXpe_#hr_iepr)!Jk:]4&f:]*ue:\mic:\mof:]4&f:\RTb<E/rr
+q,RDpnQ#KfmSs6fr`/tt!EE+t<W?)"<W6#&<E<+"<`T#t3)s"p_Sa@4aN;WKc-F\`e'uq"f\,!6
+h;7&IiT&tZk2tjkl0@U$m-a?2nF5u=o(2MGp%A%Pp\4X]s7uZjq"sIVp&"^arV?<brqHEcr:U*^
+s7?0Zs7--YrU0gUmHsl=!pf.:rosIH!9a@D!p/M(ro4%=iVqa9hqn@g!SlH/g&]mZrmq>)e^W*t
+df.X.d*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A#W2HPj
+V50o^U7n9RT:VXFS"#k7R$a5+Q'IStP*1rhO,o<\N/W[OM26qAL4tSGNfT6_Od#Z0s*=ioG^"@T
+FoHIdF)l8?E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t
+;u]bq;>a8j:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hE_/5m9;23B0#^r]U?G8`9XK<VKJf<W,ns
+;u]hn<W5tp6N0@L7/fXT7fGpX8H29]9)hP59MJ5V:Jakb;H$Ln<E<1'=^#$7?!^lG@U`kZAnYmn
+CMds-EH6/DGBeF\I=?]tK7nu7M2I7PO-,TiQ'du/S=Z@HUSOcbWN3/(Yd(OA[^`l[]Y;.s_SjF6
+aND]NcHjndeCE.%g"P3:h;@/LioB+^k3)!nlKdg(mdKTPnF?)?oCMVIp%J+RrV6Egs8)Zjrquco
+o_sFAPQ-.~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhs7ZNerq17&oCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZ`pX8XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f;H%M0P\BMq4aN;QFa2c9Crlb;brltGfps8rdnBh<acd2U9'[=kGbK7fD`5BI.^q[Us]tCth
+]Y+6WrOi0Brji6E]Y2"kqn<$Brk837pTsOuqm5t&!4DF,!4DR0rjMs;\$l%?0>YND`Q-'BbK\>Y
+dF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DDo`"Lbp@n=[q#:*hqY9sQr:^$dqYg6d
+q#:$fpA=O_o`+O\o)J7[nG_nVmf2\Rm/QDOlMg#Lki_..jp1#/jQ#:[io0mp!T2c5h#Z<crn;2A
+f[na+f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43
+XfSP&WMl_mVPU)aUS=HUTV%gHS=?":R@'A.QBd`"PEM)kOH5H_NJrdQM2@%Dp](&Z%siMGGB\4Q
+FEDSFEcH)<DuOVcD/=!'C2.HrBP1phAS#C_A,]p<@:9(As'>\2r`oJ-!*]A)s&f;&r`9&!s&Atr
+s&/kor)!Dhs%`Jdr_3>bqb$fYr^ciTr'pTQoL/IAog7k.#\%+J>?P"/Y--[^p:^79qnDg>rkA=t
+rBpHMs$crWrC?lY!(m/^IS3@.9heAY:f("e;c?Xr<``C+>$G6;?XI5N@q9.`BPD6uD/O<4F*)SL
+G^=^bIXm!%KnbD?Mi<[WOcu&rR$jG7StMdPV5L8lX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^:k
+e^rF+g=tH?hr*JRj5f@bkiq?sm-O--s6g?bnac8Bo^qhLp@e7[q#C0iqY^6ir;HTdrdk*5s*t~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhs7ZNerq0mqoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZ`pX8XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#8oBPhpCNKjF*rfd>Es-*AFrg!JKrg3;Drg3&="-o+7PQ$aCOo:I=Onk1>P5pdCPQ$aFOoC@=
+N;AP2N;8J4NrP.?Nqnb8OR\A3Nq\V6O91K)O8"_h_8=.0a2lEHc-FY_daZguf@em4h;-uHiSrnY
+jlYail0@U$m-X60n*ol<o(2JFrq-?dp\4X]rqZTjq"s@SpA=gbrV?<brqHHdqt:!]s7?0Zs7--Y
+rpTmTs6]gPs6K^MrojLJkNDj,#Nb%-j5].YiVqa9hqn@g!SlH/g320%f@SU)e^W*tda?Ihd*L"_
+c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK&;"W2HPjV50o^U7n9R
+T:VUDS"#k7R$a5+Q'IStP*1rhO,o<\N/NRMM26rVo()DEo_%tSq>#7GH?jaZGBS+NFE;MDEH,r9
+rb`9aChmg$C2%?pB4baeARo=]raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k
+:Adic9`Ic_9)V?\8GPdR7f5^I7/0.B6Kg`7<!?/s:5":PhuEP7rK$`8rK$W5rf@"ErBpHMs$crW
+rC?lY!(m/^IS3@.9heAY:f("e;c?Xr<``C+>$G6;?XI5N@q9.`BPD6uD/O<4F*)SLG^=^bIXm!%
+KnbD?Mi<[WOcu&rR$jG7StMdPV5L8lX0&P/ZEpsI\@K5a^;%M$`5Td<b0/&Td*^:ke^rF+g=tH?
+hr*JRj5f@bkiq?sm-O--s6g?bnac8Bo^qhLp@e7[q#C0iqY^6ir;HTdrdk*5s*t~>
+JcC<$PQ1=TrVc`nr;6Njs7uZhs7ZNerq0proCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZ`pX8XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH"636pjO<:/Fdd;#sKhr_E2`ohbB[!)iepqb[Aj:]4&f:]*ue:\mic:\mof:]4&f:\@K_<W?%t
+;u]ho<W6%d<<-(c<<-"m<W6##<E<,o<\M;+`5Td<b0/&TcdC1je^i@*g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nac8BoCW%T!quB_rV6Bfs8)NflMUAQrVHKgqY:'as7Z?_s7H?_r:9mXs7$$Vs6fpS
+rp9[Ns6BUJ!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#oMg"=p.f%/C$eC2jndEp7dcHa\YbKJ&M
+aN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\)Wi;qpVl$;dUnaZXTqJ$LSXc1=
+R[KP1Q^3o%P`q8nOcYWbNfB!UMM[1GLPq+MNK0'\OHPh'6P"KgG^"@TF`__HF)l8?E,Y_n&8c6!
+CMITuBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[id
+9D_?[8cD9V8,PjS7J'"C6hNe05mT_>5!;%m8kD\5s8H$o<;9Jl<;fbq<;T\p<;f/^6i0:O7K5jU
+8,l*[8cD>292&#R9hnJ\:f1+h;cHdu='/U/>?kH@?X[DRA7]CeBkqO%DK'T:FEVkQH@('hJ:W?,
+L5:\EN/is]PEhH$R@Bb=TV8-WVl6VrXfen6ZaI6O\\#Mg^VRe*`Q-'BbK\>ZdF-Opf@S^0gYL`D
+i8N_VjQ>Ugl07L"m-X6@mgJXTo()DEo_%nNp@nR]s7u]kr;6KkrVcBfJcCr6J,~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq17&oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j3^V7@m\[])TZa$a:XK&7tV50iZSt2@>R$O#$OcPN]MM[+CKS+i*I=-?dGBS(L
+EH#c6G'f(5W6E9$a2l?B`lH0Crlb;brlt2`rQt&]s3Lblrltttbfn8Pa2Q!8_ns7*^AbhG]DoPB
+^&G\E]D];D]Y2"k]_oJC]_oGCZMh'.Z2q;;q6T_!rj)[5Za9>3!4D:(!joDDr3lF10"&0s\$s5l
+`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTj5oFckiq?sm-O--n*fc9rpg*]o`"O`pAamcq#C0hqYC$P
+r:^$dqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QAOlM]rKki_..joOT)ro=%<!9*q8!T2c5
+h#Z<crn7k8f[na+e^`1!e'cXkd*M^:=3\t4bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKK
+Za-j?Yck43XK/A$WMl_mVPU)aUS=HUTUqaGS=?":R@'A.QBd`"PEM)kOH5E]N/W[PM>$uDS1&]/
+G^"@TF`__HF)l8?E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"
+<W?%t;u]bq;>a8j:]F2f:&[id9D_?\8c;3U8,YpT7J'"C6hNe/62t$hXfeh-h>d5_s1\?Eq7c[>
+rkA=trBpHMs$crWrC6o[8P/nR!D?,c9n,o6:f("e;cHat<``F,>$P<=?XR;O@qB7bBPM=!DJsN7
+F*)SLH$XjdIt3-'KnbD?N/`m[P*;/tR$sM8StVmSV5L8lXKA\1ZEq!K\[oGe^VI_(`Q$!@bKS8W
+d*^=le^rI,g>(N@hr*JRj5oFdkiq?tm-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*5
+s*t~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq1(!oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j3^V7@m\[])TZa$a:XK&7tV50iZSt2@>R$O#$OcPN]MM[+CKS+i*I=-?dGBS(L
+EH#5lAS?+1L6[maPEM+.OTCW/qiq)Fqj7#Brg3&="-o+7PPp[COo1C=Onk1>PQ-gDPQ$aEOT:L=
+N<"q6NVe\1NW5">O-'*sr/gf:s,cu9!f`8$r/^Z8/rl$SOH@>s`Q$!@bKS8XdF$Fmf%8R.g>(N@
+i8EVTj5oFckiq?sm-O--n*fc9rpg*]o`"O`pAamcq#C0hqYC$Pr:^$dqYg6eq#:$epAFU_o`+O]
+o)J7[nGVhUmf2\Rm/QAOlM]rKki_..joOT)ro=%<!9*q8!T2c5h#Z<crn7k8f[na+e^`1!e'cXk
+d*M^:@a3-?bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XK/A$WMl_mVPU)a
+US=HUTUqaGS=?":R@'A.QBd`"PEM)kOH5E]N/W[PM=9s'o()DEp%J.UpNS*4H$FOWG'.nKF)uAA
+EH#i6DJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&K(ur_rhps&&\j
+s%iYir([/as%E5]r^m&Zq+(BQr'g6Gpd=^@k<T8I9S8"MJ_gA%O8t@9OSb+5OT(=>6N':K7/o^U
+7f>gY84cDP8c_RYr_7l;:Jakb;H$Op<`W:)=^#'8?=.)K@Uit]B4u$qCi402EH?5FGBnL^I=Hd!
+K8#&9M2[FTOHPfmQ^F52SXuOLUnsufWiW>+Yd1UD\%0)_]t_A"_o9X:aihoRcHstfeCE1'g"P6;
+hV[8Mj5]7`kNM0plg4!*mdKW6nac5OoCW%T!quB_rqQNhs8)Zjrqu`no_sFAPQ-.~>
+JcC<$PQ1:Srr)ior;6Njs7uZhs7ZNerq0proCDJBnF,i6mHj3)l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j3^V7@m\[])TZa$a:XK&7tV50iZSt2@>R$O#$OcPN]MM[+CKS+i*I=-?dGBS(L
+EH"336UXF89MeRb;$Bck9heAXpeUT[pJLrg!`Mupr)!Jk:]4&f:]!oe:\dcb:\mlf:]4&f:\7B^
+:]",i;u]hp<W6%I<<?-"<:j0C<)lmt<PlYm`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeWjlY^hl07L"
+m-X60n*olHncA@Srq6<bs7cKes7uZjq>9CRpA=gbrV??crqHEcr:U']s7?3[s7--YrU9dSs6]gP
+s6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g()fgf@SU(e^W*tda?Ihci24!c-4ASb/q`G
+a2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"/X/`2!W2HPjV50o^U7n9RSt;LCS"#k7
+R$a5+Q'IStP*1rhO,f3YN/NRMMMmCON/`jYO-#P!6R[8+G^"@TF`__HF)l8?E,TW3D/F*)CMIQt
+BP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"<W?%t;u]bq;>a8j:]F2f:&[id9D_?\
+8c;3U8,YpT7J'"C6hNe/5m9G88P;]Ih>[IUr`/bnqGmJnqc!MorDihrrBgHMqaCHQs$lrW!_>mS
+r^m2a9`@b9:/=\_;,U=l<E<.%=]np5>[CcF@:E_XAnPdlCM[m,EH-&AG'A4XI!pKpJqJc3Ll%(M
+O-#NgQ'[l,S"6.EU84W`W2cr$YHY==[^WfY]Y2(q_Sa@4aN;WLcHaeae'uq"f\,!6h;7&IiT&t[
+k3(sml0I^&mI'H3nF?)?!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s-*J5~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eok=!ho()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C5X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$9bGBJ"J
+EGo]9H%D!L\';qla8a-[aN=G)rlkDe!7(AcrQsu[!mo9>rltqsbfn2M`l5m6_SO%%rk8?Ds1J<D
+rk/6Brjr-Bs1JEFr4W'A%DBEf]tUk\Za-mAZ*L\1Zh:U)Za0S:o<eG'n?r>)qmQ:/0>bWG`lQ6D
+bK\>ZdF-Opf@S^0gYL`Di8N\UjQ>Ufl07L!m-O--n*fc9o()DEo`"Lbp@n=[q#C0hqYC$`r;-Bc
+r:^$dqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QAOlM]rPki_-kk2k^cro4aQiSi_Qhr!;H
+h;$f?g=k65f[na+ec+'(e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKK
+Za-j?Yck43XK/A$WMl_mVPU)aUS=HUT:VXFS=?":R@'A.QBd`"PEM)kO,o<\N/[E/pRM8Q*-ldQ
+GBS+NFE;JCEH,r9DJj<.Chmg$Bk_6oB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"
+<;fbq;ZBVm;#X8j:Adic9`Ic_9)V?\8GPdR7f5^I7/0.B6Kg]:X/r>Vs7O)*^A>V?^AG\D^A^Iu
+6i0:N7K5jU7s7Ep8P2TJ92&&S:/=\_;,U=k<)lt"=BSd2>[:ZC?t!MTAS,UhC27[(DfKf>Fa&%T
+H@1-jJ:iN0LP^nINK90aPa.T&R[ftATq\?[Vl?\tXfo"9['mHS]"G_k^r"".`lQ9Fbg+P^dF6Ur
+f@\g2gtgiFi"b83jQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCr6J,~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eok=!ho()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C5X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$9bGBJ"J
+EGo/lB5D^@Ng5b+P5gXFP*>d-s-3SMqj7#Brg3>E!13PJs-<SIrf[5Br0$o=q3(]?!0[8Drf[8C
+rfHT.rJ^Q3"-/A$NqJJ1OSk1<O8t@>OSt4?Nr+n4O>"Jg`Q$!?b0/&Td*^:ke^rF+g=tH?hr*JQ
+j5f@bkNV6rlg4!*mdKW6nac8Bo^r.U!quB_rV6EgrqcHfq#(!epAFX]rVHKgqtU0brq?9_rq-6^
+rUU!Ys7$!Us6fpSrp9[N!:'OI#O(@6k2tdejSn0Sio/kSi8<GKh;-lAgY1B7g"=p.f%'cLC=CVY
+dEp4bcHXVXbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6XfSS'Wi;qpVl$;d
+UnaZXTq@pJSXc1=R[KP1Q^3o%P`q8nOcPQ`NJrh`mdKZ8o()DEp%J.UpNZ^^*-ldQGBS+NFE;JC
+EH,r9DJj<.Chmg$Bk_6oB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm
+;#X8j:Adic9`Ic_9)V?\8GPdR7f5^I7/0.B6Kg]:JU`7+s7hZUO7n\4O84n9O8_KF6i0:N7K5jU
+7s7Ep8P2TJ92&&S:/=\_;,U=k<)lt"=BSd2>[:ZC?t!MTAS,UhC27[(DfKf>Fa&%TH@1-jJ:iN0
+LP^nINK90aPa.T&R[ftATq\?[Vl?\tXfo"9['mHS]"G_k^r"".`lQ9Fbg+P^dF6Urf@\g2gtgiF
+i"b83jQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCr6J,~>
+JcC<$PQ1:SrVc`nrVQWks7uWg!Vc<eokX3ko()>?n*f]3m-O'&l0.9ljl>C[i8<AHgY1?4f$r3t
+dEg+^bK7iF`P]R.^V.:j\@/fOZ*:C5X/W"oUnXQTSsu19Q^*btOH,9XM26n>K7SQ%I=$9bGBJ"J
+EGn02779[?9MeS`:f%'b!)E;bohbB["&`&q;Ys;l:f%$br_NGes%iGcr_NAes%iVhrD3)]r_NPo
+qc*Jl!*&krr`7BG!*&kr!*&_n0>bWG`lQ6DbK\>ZdF-Opf@S^0gYL`Di8N\UjQ>Ufl07L!m-O--
+n*fc9o()DEo`"Lbp@n=[q#C0hqYC$`r;-Bcr:^$dqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\R
+m/QAOlM]rPki_-kk2k^cro4aQiSi_Qhr!;Hh;$f?g=k65f[na+ec+'5e'cXkd*L"_c-=JUbK@rJ
+aN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XK/A$WMl_mVPU)aUS=HUT:VXFS=?":
+R@'A.QBd`"PEM)kO,o<\N/WUMMMmCON/`jYO-#Ot6QCArGB\4QFEDSEEcH)<Df0H0D/=!'C2%Bq
+BP1rVAHuaU@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDrqu!*&nqs&/korD<Jhs%`Jdr_3>bqb$fY
+r^ciTr'pTQoL/IAog7k.!_>sTh#I@Ss&JhnqGmJnqc!Mos&K"sr^-TOqaCEPs$lrWG">1r8kM`L
+9MJ5V:Jakb;H$Ln<E<.&=]ns6?!^lG@:EbYAnYjmCMds-EH6/DGB\=YI!pKpK7nu7M2I7OO-#Nh
+Q'[l,S=Z@HU84ZaWN*&%YHbF@[^WfY]Y2(q_Sa@4aN;WLcHjnce'ut#f\5'7h;7)J(#n97jlYai
+l0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s-*J5~>
+JcC<$P5k4SrVc`nr;6Njs7uZhD>3btp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGo]3G']"2Vp!-Z`W=-%rlb;bs31Phps8ocma;']!71Yi'[=kGb/hWB`5BI.^qROr]tCth]Y+6W
+rk&<E]Y"-R"2)=\]_oJ@]`,VE^&l!SZi.62Zi79)Zh:X$Zh1X"[JRB7[C3NOr3cU5pU2Q\_SjF6
+aND]McHjndeC<($f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?MK!V>s_p&F^cp\jmeq>U6dqtg6`
+rV-6aqu-Biq>0mcp\smap&F[aoDJ1Znc/+Wn,MeUmJZAQlg!d7l2TrIkPjWDjT+B@it^S4iS`YO
+hqm2Fgt^Z<g=b03f@SU(rmY*"da?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C!9HZE^X<YH=q.X/`2!W2HPjV50o^U7n6PSt;LCS"#k7R$a5+Q'IStP*1ofO7E8GSG\j(H$FOW
+G'.nKF)l;@EH#i6DJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&B%u
+rDW_os&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?kWo3Mg]-oZs1\<DqS)pCrP&:urBpHM
+s$coVr^ZuZ!(m/^s%@f79heAY:f("e;c?Xq<``C+>$G6;?=.)L@Us%^BPD3sD/O<4EccGJG^=^b
+IXm!%KSG8=Mi<[WOckroR$jG6StD^OUo(&hX0&P/Z*UgG\@K5a^;%M$`5Td<b0/&TcdC1jeCN7)
+g=tE=hr*JQj5f=akNM0qlg4!*n*^;Hnc&([oCW%T!quB_rqQNhs8)Zjrqu`np&9OBP5g%~>
+JcC<$P5k4SrVc`nr;6Njs7uZhD"mYsp%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGo/jAS6%0Kp;S"s,d>FPP^UDQM[$AQN!6GQN*<JQN*6LPQ$aCOo:I=OoLREPPgUCP5pdDPQ$aD
+Oo:CAN;\b8N:`,0N;8J3Nq8>.OT(=<O9CW+OH5M%NrY4>O8b4nO-#HaOM\rTa2lEHbg+P^daZdt
+f@\g3gtgiFi8WeXjlYail07O#m-X60n*olHncA@Srq6<b!;HHes7uZjq>:$dp&4X_p\XpcrV?<b
+rqHEcr:U*^s7?0Zs7--YrU9dS!:BaO!pf.:rosIH!9a@Ds5a7Aro4aQiSi_Qhr!;Hh;$f?g=k65
+f[na+ec+'4e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck12
+XK/A$WMl_mVPU)aUS=HTT:VXFS=?":R@'A.QBd`"PEM)jO,rYomHs?1nF?)@oCV_Kp\FW0r-'N6
+G^"@TF`__HEcQ/>E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"
+<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_/5lcJjs8%iUO7eV4O8G%;O8hQF
+6i0:O7K,dU8,l*[8cD?^97BQ/9hnJ\:f1+h;cHat='/U/>?kH??XR>PA7]@dBkhF#DK'T9FEMeP
+H@('hJ:W?+L51VDN/is]P*D6!R@B_<T:r$UVPgDoXfen5Za@0N\\#Mg^VRe*`Q-'BbK\>YdF-Oo
+f%8U/gYCWBi8N\UjQ5OekiqBum-O-.mfDqJrpg*]o`"Lbp@n=\q#C0iqY^6ir;HTerdk*4s*t~>
+JcC<$P5k4SrVc`nr;6Njs7uZhDtiu!p%@tKoCDJBnF,i5m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`P]R.^V.:k\[JoPZEUL6X/`+qUnaWUSt):;Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGn-16UaL892JJ]:B!rf:A@WX;"mfh;Gg=iqb[Aj:]4&f:]*ue:\mic:\dfe:]4&f:\7E\:]FDm
+<W#hp;uTbp<W?+F<<-"q<A%6N<E)u8`5Td<b0/#ScdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*
+mdKW6nc&([oCW%Ts7QHerV6EgrqcHfqY^$bp\ad_rVHKgqY:'arq?9_s7H?_r:9mXs7$!Us6]mS
+rTjUOlK\B5s6'IGroX7B!9F.>(#n32i8EMMhVI#CgtUQ:g"G$0f@JLOe7mC[dF$=ecHa\Zbfe2P
+aiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Xf\\*WiE%sVl-DgUnjc[TqJ$LSt2C@
+S!ob4R$X,(Q'@JqP)t`cLPUbCM2I4LN/`gWO,oBcoKt!OG^"@TF`__HEcQ/>E,TW3D/F*)CMIQt
+BP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\
+8c;3U8,YpT7J'"C6hE_/5laI1s8?!u<VTPh<W5tq;u0Jn6N':K7/o^T7fGpX8,u6\9)hP59MJ5V
+:Jakb;H$Ln<E<1'=^#$7?!^lG@U`kZAnYmnCMds.EH6/DGBeF\I=?]tK7nu7M2R=QO-,TiQ'du/
+S=Z@HUSOcbWN3/(Yd(OA[^`l[]Y;.s_SjF6aND]NcHjndeC<($g"P39h;@/LioB+]k3(smlKdg'
+mI0KEnF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s-!D4~>
+JcC<$P5k4SrVc`nr;6Njs7uZhD>3btp%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f3F*W:rS@-Q>`WF3&b5KN`bQ?&7cM5`cd-T-\d*M^:%F*,@bK7fD`5KO/^q[V_^&P_E]`#PC
+]`,PB])TDE]tD#V^&#DA]`l-`^:gkYrj2R1rNlO2qQg1-riu7(os4Y*rj2L/rNuX4rjDa6"LY\G
+[^Q(@q6i,t`Q$!@bKS8Wd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4!+n*fc8nac8Bo^qhLp@e7T
+rV6EgrqcKgqu#s^q>C!ar;-EgqY:'arq?9_s7H?_r:9mXs7$!U!q,ICrTjUOlK\B5s6'IGroX7B
+!9F.>!TN);i#U_3hVI#CgY:H9g"=s/f@JL%eC2mpdF$=ecHa\Yrl[mUaiMQD`l5p8_ns:,^q[Xu
+]tD"i]",A]\$i`Q['R*EZ*:F7Xf\\*WiE%sVl-DgUnjcZTqJ$LSt2C@S!ob4R$X,(Q'@GpOmi>I
+SG8QZG^"@TF`__HErL%cE,TW3D/=$(CMIS_BE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(
+=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT7J'"C6hE_16/)A=]_9&;^&c!_qnN!A
+rkJEG!(-WOqaCHQs$lrWs%!,]r^m2a9`@b9:/=\_;,U=k<E<.%=]np5>[:]D@:E_XAS5[jCM[m+
+E,fr@G'A4XH[U?nJqJc3Ll%%KNfT?eQ'Rf*S"6.DTqeH^W2co#Y->4<[C3TU]=bkm_8=.0a2lEH
+c-F\`daZh!f@em4h;-uHiSrnYk2tjkl0@U$mI'H3nF?)?s76Edp%A%Pp\jmeq>^<hqu6NmrUg)?
+s-!D4~>
+JcC<$P5k4SrVc`nr;6Njs7uZhDYNkup%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f%@;'M"IZ'GRrfR5ErKR>Irg*GJp6P]Epm1oGqN_5KP`q=1P5LFCP*>m.qN:T:rfdAFrKI2C
+rfR/@!KiKAN;\b7N;nk;N:2c(NqSM8OH5J%OT(=@O8t@=O9CW+O-#J%NrY4>O8P(sO2JrVaN;WL
+cHaeae'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-a?2nF5u=o(2MGp%A%Pp\4X]s7uZjqYU0fnGW1\
+p\XmbrqZEcrqHEcr:U*^s7?0Zs7--YrU0gUmHsl=!pf.:rosIH!9a@Ds5a7Aro4%=iVqaUhqm5G
+h;$c>g=k64f[na+e^W*te'cXkd*L"_c-611>KY(/aN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKK
+Za-j?YHG"0XK/A$WMl_mVPU)aUS4BST:VXFS=?":R@'A.QBd`"P*1snlg4!*mdBQ5nac;Co_%nP
+q>5F3G6iG;GBS+NFE;L%E=-Z'DJj<-Chmg$C&VcHB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5h\)
+=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6L$kjs8S/XOSb+:O8t@=
+OSk1;OSt4?6N':K7/o^U7f>jW8,u6\8c_RYr_7l;:Jakb;H$Lo<`W:)=^#'8?!grI@Uit\B4u!p
+Ci4-0EH?5FGBnL]I=?]uK8#&9M2R=QO-5]lQC+)0SXuLJUSXleWiN8)Yd1UC[^`l[]Y;.s_SjF6
+aND]NcHsteeCE1&g"P3:h;@/LioB+^k3)!nlKdg(mdKW6nac8No*+dZp%J+RrV6Egs8)Zjrquco
+o_sFAP5g%~>
+JcC<$P5k4SrVc`nr;6Njs7uZhF8,D%p%@tLoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@l\[T#SZEUO7XK&4sV5'`WSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#e^6UX=58PN#W:/+GX:A@WY;"[]c;Yj5j:]4&f:]*ue:\dcb:\mof:]=,g:\7EZ:]+2j<Vo_q
+;u0J:<<-"o<Adan`Q$!@bKS8Wd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4!+n*fc8nac8Bo^qhL
+p@e7TrV6EgrqcKgqu#s^q>C!ar;-EgqY:'arq?9_s7H?_r:9mXs7$!U!q,ICrTjUOlK\B5s6'IG
+roX7B!9F.>!TN);i#U_3hVI#CgY:H9g"=s/f@JL%eC2mpdF$=ecHa\Yrl\NgaiMQD`l5p8_ns:,
+^q[Xu]tD"i]",A]\$i`Q['R*EZ*:F7Xf\\*WiE%sVl-DgUnjcZTqJ$LSt2C@S!ob4R$X,(Q'@Gp
+ObSUGLkpnEMMmFPNK&sZOHG^s6O7p\GBS+NFE;L%E=-Z'DJj<-Chmg$C&VcHB4h-S#@q=S@U`bS
+@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A
+6L$kjs8Q*t<WH.o;uouuqc3Vpr_rVl!(-WOqaCHQs$lrWs%!,]r^m2a9`@b9:/=\_;,U=k<E<.%
+=]np5>[:]D@:E_XAS5[jCM[m+E,fr@G'A4XH[U?nJqJc3Ll%%KNfT?eQ'Rf*S"6.DTqeH^W2co#
+Y->4<[C3TU]=bkm_8=.0a2lEHc-F\`daZh!f@em4h;-uHiSrnYk2tjkl0@U$mI'H3nF?)?s76Ed
+p%A%Pp\jmeq>^<hqu6NmrUg)?s-!D4~>
+JcC<$P5k4SrVc`nr;6Njs7uZhs7ZNerq0mqoCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#f4Cit)\Pc"H"!lrC)r6#2dc-=Q/ci2;kd/_Vad/q\@ci22uc-+;PaMu3;_ns7*^AbhG]DoPB
+^&G\D]DfDA]E5dZ]_oGD]Y"-TqRlsC[']\9rNuU2rNuI.rj)I,q6KOsqR$4/s0`'<[^NTPq6g10
+/]>WKaND]NcHsteeCE.%g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>U6e
+qtp<[rV6<bqu-Biq>0mcp]'sbp&=U`oDJ1Znc/+Xn,MhUmJZAQlg!d7l2TrIkPjTFjlGM%irS/u
+rnn1AhVR)EgtUT;g=b-Xf3$VSeC;sqda?Ihcd'h\bfe2PaiVWFa2Z*;`5BI/_8*h#^:h1l]=PP`
+\@8oT[C!9GZ*:I9Y-"h-X/`2!W2HPjV50o]TqS-OSt;LCS"#k7R$a5+Q'IU$s8AJ^RgQX5G^"@T
+F`__HErL%cE,TW3D/=$(CMIS_BE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c/$<E)rr
+;u]bq;>j>k:]=,e:&dod9D_?\8c;3U8,YpT7J'"C6hE_46.l5:]_9&9^AG\A^&YqH^AUFr7/fXT
+7f>gY84cDP8q'E,9heAY:Jakb;c?Xq<`W=*=^,-9?=.)K@Uit]B4u$qCi402EH?5FGBnL^I=Hd!
+K8#&9M2[FTOHPfmQ^F52SXuOLUnsufWiW>+Yd1UC\%0)_]t_A"_o9X:aihoQcHstfeCE1'g"P6;
+hV[8Mj5]7`k32'olKmm)mf2_`nF?)?oCV\Jp%J+RrqQNhs8)Zjrqu`no_sFAP5g%~>
+JcC<$P5k4SrVc`nr;6Njs7uZhs7ZNerq0mqoCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#f#?t<niH%c*Y!0d>F!1!PLrKm,As-NPIrKmAH!L8oKPQ$aDOo1C=Onk1>PQ-gDPQ$aEOnt.@
+O,].sN;JV7N;\b7N:`,-NqSP5OT1@AORnM7OH5M!O8Y.l`5Td<b0/&Td*^:ke^i@*g=tH>hr*JQ
+j5f=akNM0qlg4!*mdKW6nac8BoCW%T!quB_rV6EgrqcKgqu#p]q#'m`rVHKgqY:'as7ZB`rq-6^
+r:9mXs7$$Vs6fpSrTjUOlK\B5s6'IGroO:DjQ-=#!TN);i!\H!hVI#CgY:H9g"?;UCt@.deC2jo
+dF$=ecHa\YbKJ&MaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R'CYct=6Xf\\*WiE%sVl-Dg
+Unj`YTqJ$LSt2C@S!ob4R$X,(Q'CS!lg*p)mI'E2nF?)@oCV_Kq"al5pNQXs#^CQ;G'.nKF)q8"
+$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_k
+s%iVhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?m6TD)rf@)@plGH:rK$i;r/^i=rK$nEqaCEPs$lrW
+!_>mSr^qW49MJ5V:JXe`;,^Cm<E<.&=]ns6>[CcF@:E_XAnPdlCM[m,EH-&AG'A4XI!pKpJqJc3
+Ll%(MO-#NgQ'[l,S"6.EU84W`W2cr$YHY==[C<]X]Y2(q_Sa@4aN;WLc-F\`e'uq"f\,!6h;7&I
+iT&t[k2tmll0@X%mI(#C$h3]Wo(2MGp%A%Pp\ssfq>^<hqu6NlrUg)?s-!D4~>
+JcC<$P5k4SrVc`nr;6Njs7uZhs7ZNerq0proCDJBnF,i6mHj0(l07Bnk2bR^iS`SKgtUQ8f@JI#
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#e^6UO:485)kX:A@WX;"dcd;Yj5k:f%$bs%iPfr_N>br_NAes%iVhr_N/]q+q#jqGdDnm8V8/
+/]>WKaND]NcHsteeCE.%g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>U6e
+qtp<[rV6<bqu-Biq>0mcp]'sbp&=U`oDJ1Znc/+Xn,MhUmJZAQlg!d7l2TrIkPjTFjlGM%irS/u
+rnn1AhVR)EgtUT;g=b-Xf50$geC;sqda?Ihcd'h\bfe2PaiVWFa2Z*;`5BI/_8*h#^:h1l]=PP`
+\@8oT[C!9GZ*:I9Y-"h-X/`2!W2HPjV50o]TqS-OSt;LCS"#k7R$a5+Q'ISfKnb>;LkpnEMMmFP
+NK&sZOHG^t6iU$iG^"@TF`__HErL%cE,TW3D/=$(CMIS_BE;aXrac=F@q/tW@:<RC?NOP>?2e(1
+>?Y50=oVS(=8c/$<E)rr;u]bq;>j>k:]=,e:&dod9D_?\8c;3U8,YpT7J'"C6hE_46.l5:<W?,"
+<V08f<W5qt;u'Dk6i0:N7K5jU7fl4Q8cD>292&&S:/=Y^:f1.i<)lt"=BSd2>[1TB?t!MSAS,Rg
+C27X'DfKc<FEVkRH@1-jJ:`E-L5:\FNK90aPEhK%R[]k>Tq\?ZVl6VsXfnt7ZaI9Q]"G_k^r"".
+`lQ9Fbg"G[dF6Uqf@\d1gtgiEi8N_VjlY^hl07L"m-X6@mgJXTo()DEo_%nNp@nR]s7u]kr;6Kk
+rVcBfJcCo5J,~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq1(!oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j4^q[Oo\[])UZa$a;XfA@uVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#8CN=ZMMjplna2lC#b6,u5c-H+1rm:\m!7LAas3Lblrlu2%bfn5N`l5m6_SO%%^:h4m]=bfT
+^&G\D]DfAA]DT>?]`GdXrOi-C!5AHGs1AKH]!JcNqm-@0Za9D5qm6:-qm$()rj2I,pTse)!OK3*
+[P,%s`5Td<aihoRcdC.heCN7(g=k?<hVd>Nj5]7`k32'olKdg(mdKW6naZ2@oCW%Ts7ZKerqQKg
+s8)ThqY]aZqY^'arVHKgqtU0brq?9_rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BUJ!pJh1roOIIjQ,@]
+io8qrhuV`lrnRV1g]#n-g"?;U"kM5ReC2kFd0\1GcHa\YbKJ&Mrl@=E`l5p8_ns:,^q[Xu]tD"i
+]",A]\$i`QZa6sBYct=6Xf\\*WiE%sVl-DgUnaZXTqJ$LSt2C@S!ob4R$X-)s8SV`Rf]%f\,Ni9
+G6N/4FEDSErc&*\Df0H0D#S2NC2*Z\!G?$DAH?=OraPn9!+>e5!a]/<r`fM/>$Co.s&]8&rDiu"
+<)ifps&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKr"4fDki_otC7:qnMm>rBpHMs$coV
+r^ZuZ!(m/^s%@i89heAY:f("e;c?Xq<``C+>$G6;?=.)L@Us%^BPD3sD/O93EccGJG^=^bIXm!%
+KSG8=MN!OUOckroQ^F84StD^NUo(&hWiW>,Z*UgG\%0)_]t_A"_o9X:aihoRcdC.heCN7(g=k?<
+hVd>Oj5f=akNM0plg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAP5g%~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq1(!oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j4^q[Oo\[])UZa$a;XfA@uVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#8?XRJ`FFK%0P*2%,PQ7!JQN!6AQN!6IQMm0HQN*6LPQ$aCOo:I=Ont7?PQ$aDPQ$aEOnt1<
+O8b.:N:W&*N:i/1NqSP5OSb(=OR/#\OMo,YaN;WLcHjnce'ut#f\5'7h;7)JiT&t[k2tmll0@U$
+mI'H3nF?&>o(2MQp&Facp\sseq>^<fqtg6XrVHHcqu-Biq>9sdp\smap&=U`oDS7[nc/+Wn,MhU
+mJcJPli68LklU)3kPjTKjlGL_j5T(Wrnmh7hYu=3gtVh^!SQ-)f*0aUeC;sqrm;&!cd'h\bfe2P
+ao9@_a2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[Bm3FZ*:I9Y-"h-X/`2!W2HPjV50l\TqS-OSt;LC
+S"#k7R$a5+kiqBtlg4!*mI'E2nF?)@oCV_Kq"]/ZpNHU\r/L`#"a5$1FE;L%E<U<"DJj<-rbDOL
+C&VcHB4h-S!G#^>@fKj:@/aL7?<pk9>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#a>j:Adid9`@]^
+9)_E\8GPdS7f5^I7/0.A6LR4ls6PgDOSk.>OSt7=6i0:O7K,dU8,l*[8cD?^97KW09hnJ\:f1+h
+;cHat='/U/>?kH??XR>PA7]@dBkhF#DJsN8FEMePH@('hJ:W?+L51VCN/`m\P*D5uR%'V;T:r!T
+VPgDnXKA_3Za@0M\[oGe^VI_(`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTjQ5Oekiq?tm-O--n*^GL
+nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*4s*t~>
+JcC<$P5k1Rrr)ior;6Njs7uZhs7ZNerq0ssoCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ9f@JI#
+dF$:cbfe,L`l5j4^q[Oo\[])UZa$a;XfA@uVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#86UO7184Q?Mr_E5aohb$Q!DlSj:B"&f:B"&b:B"&c;#a>j:B"&\:ARcc:B"8g<;]bp;ufqh
+<7+\t`5Td<aihoRcdC.heCN7(g=k?<hVd>Nj5]7`k32'olKdg(mdKW6naZ2@oCW%Ts7ZKerqQKg
+s8)ThqY]aZqY^'arVHKgqtU0brq?9_rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BUJ!pJh1roOIIjQ,@]
+io8qrhuV`lrnRV1g]#n-g"?;U"kM5ReC2kFd0\1GcHa\YbKJ&MrlA*[`l5p8_ns:,^q[Xu]tD"i
+]",A]\$i`QZa6sBYct=6Xf\\*WiE%sVl-DgUnaZXTqJ$LSt2C@S!ob4R$X+lKS>,7LPL\AM2@+J
+N/WaVNfT9aP4_0B6Msa]G6N/4FEDSErc&*\Df0H0D#S2NC2*Z\!G?$DAH?=OraPn9!+>e5!a]/<
+r`fM/>$Co.s&]8&rDiu"<)ifps&/korD<Mir_EAcs%NDbqb$iZrCH`SrC6]RoL/IAoKr"4fDkYH
+oMk]fpJh)YqaCHQr^QlWs%!,]r_!2`InWR2:/=\_;,U=k<)lt#=BSg3>[:ZC?t*SUAS,UiC27[(
+DfKf>Fa&(VH[U?nJV/W1LP^nINK93bPa.T&S"-(BTq\?[Vl?\tXg#(:['mHS]"G_k^r"".`lQ9F
+bg+P^dF6Urf@\g2gtgiFi8WeXjlYail07O#m-X60mfi4No()DErq-?dp\4[^s7u]kr;6KkrVcBf
+JcCo5J,~>
+JcC<$P5k1RrVc`nrVQWks7uWg!Vc<eokX3ko()>@nF,f4m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\[JoPZEUL6X/`(pUnaWUSt)7:Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGo`1D0:2\Pbkn1aiaS*s3(PhcHc42rm:YmnBh6_rQZ)$bfe/M`l5m6_SO%%^:h1l]=bfT^&G\D
+]DfAF]=bei]Y+3Vs1JBDrk/3C#J@a_]=YYc]Df/:[/704ZE^^AZhLj'ZN7A<pTjh*o<SA%qm6@2
+o<p6i`lQ9EbK\>ZdF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo`"Lbp@n=[q#C0i
+qYL*dr9=1Vr:g*eqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QDOlMg#Lki_..jp1#/jQ#:[
+io0mp!T2c5h#Z<crn7_4f[na+f%&:"e'e6C8C5].cHXSVbK@rJaN)<?`Pod5_SX.)^V@Lr]Y(kf
+\[f5Z[^EKKZa-j?Yck43XfSS'Wi;qpVl$;dUS=HUTV%gISXc1=R[NC>!1`hRs-iqrrO2`M"a5$1
+FE;L%E=-Z'DJj<-Chmg$C&VcHB4h-S#@q=S@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<WZ9#<;fbq
+;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5^I7/0.A6LmFnrrB_(^%f;B^V9Z]pqH_pqaCHQs$lrW
+s%!,]r^m2a9`@b7:/=\_;,U=k<*!%$=BSg3>[:]D@:E_WAS5[jCMRd)E,fr@Fa&(VH[U?nJV/W1
+LP^qJNfT<cPa7])S"-(BTqeE\Vl?`!Y->1;['mKT]=bkm_8=.0a2lEHbg+P^daZdtf@\g3gtglG
+iSrnYjlYail0@U$m-X60nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,m>3~>
+JcC<$P5k1RrVc`nrVQWks7uWg!Vc<eokX3ko()>@nF,f4m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\[JoPZEUL6X/`(pUnaWUSt)7:Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGo`"?XmbhG_1s=PEYs0s-;u;rg3MJqj7/F!0mJHrf[2ArK?u=q3(`@s-!>Erf[5BqiL]9rf$l:
+qi(K5!0$Z3pPes.s,Qf6s,d,=q2k60/]G`Nai_fOcHstfeCE1&g"P3:h;@/LioB+]k3(smlKdg'
+mI'H3nF?)?oCV\So`Fj]p\jmeq>^<fqtp<UrVHHdqu-Biq>9sdp\smap&=U`oDS7[nc/+Wn,MhU
+mJcJPli68LklU)3kPjTKjlGL_j5T(Wrnmh7hYu=3gtVh^$JF(`f@JO'eC;sqrm>0$cd'h\bfe2P
+aiMQD`l?!:`5BI/_8*h#^:h1l]=PP`\@8oS['R*EZ*:I9Y-"h-X/`2!W2HPjV50l\TqS-OSt;LC
+S"#k7k2tmkl0@R"m-O-,mdBQ5nac;Co_%nPq=f+5G5@3uG6N/4FEDSErc&9aDf0H0Ci!m&C2*Z\
+!G?$DAHuaU@q&nU@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"<)ifps&/korD<Mir_EAcs%NDbqb$iZ
+rCH`SrC6]RoL/IAoKr+7f)P#r!K`B@OSFn96i0:O7K5jU8,l*[8cD<_92,=ZI83R7:f1+h;cHdu
+='/U/>?kH@?X[DRA7]CeBkqL$DK'T:FEMePH@('hJ:W?+L51VDN/is]P*D9"R@B_<T:r$UVPgDo
+Xfen5Za@0N\\#Mg^VRe*`Q-'BbKS8XdF-Oof%8R.gYCWBi8N\UjQ5OekiqBum-O--n*olHncA@S
+rq-?dp\4[^s7u]kr;6KkrVcEgJcCl4J,~>
+JcC<$P5k1RrVc`nrVQWks7uWg!Vc<eokF'io()>@nF,f4m-O'&l0.<mjl>C[i8<DIgY1?4f%&9u
+dEg+^bK7iF`P]R.^V.:k\[JoPZEUL6X/`(pUnaWUSt)7:Q^*euOH5BZM26n?K7\W&I=$9bGBJ"J
+EGo_\6UaC484uZPp.t?Xm83j[rD*Agr(d2dqG.#cqG@2fr_EDfoM53XrD*>ks&Jnp!)rkrr)Nbr
+r`/Ykr)NVngf5rF`lQ9EbK\>ZdF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DEo`"Lb
+p@n=[q#C0iqYL*dr9=1Vr:g*eqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QDOlMg#Lki_..
+jp1#/jQ#:[io0mp!T2c5h#Z<crn7_4f[na+f%&:"e'e6C@F3?GcHXSVbK@rJaN)<?`Pod5_SX.)
+^V@Lr]Y(kf\[f5Z[^EKKZa-j?Yck43XfSS'Wi;qpVl$;dUS=HUTV%gISXc1=R[Jb[K7no3L5(J=
+LkpnEMMmFPNK0$[OHG_#6iTLL;ZCqEG'.nKF)q8"$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Q
+ra,_5?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_ks%iVhr([2br_*,\r^m&Zq+(BQr'g6Gpd=[?
+nj1k,q,Qub!EE+t<VTPm6i0:O7K5jU8,l*[8cD<_92,=ZI83R7:f1+h;cHdu='/U/>?kH@?X[DR
+A7]CeBkqL$DK'T:FEMePH@('hJ:W?+L51VDN/is]P*D9"R@B_<T:r$UVPgDoXfen5Za@0N\\#Mg
+^VRe*`Q-'BbKS8XdF-Oof%8R.gYCWBi8N\UjQ5OekiqBum-O--n*olHncA@Srq-?dp\4[^s7u]k
+r;6KkrVcEgJcCl4J,~>
+JcC<$OoP+RrVc`nr;6Njs7uZhDtiu!p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[(AK7\W'I=-?dGBS(L
+EH#f4CNF]NMj^Zkb5BEbbg"DXps8ue!7CeonBh9`ci)-%c-4>Pa2Q!8_ns7)^:h4m]=bfS^&G\D
+]DfDA]E#YE]`,VE]E#SA]_oGM]Xtee]">ScZa6t9ZN.B1ZNd_?Z*L[AZhCd(ZN@M?Zh^p,Zh(L%
+Zi@E4Zi@B5[C5n?rjF2na2lEHbg+P^daQ^sf@\g3gtgiFi8WeXjlY^hl07L"m-X60n*olHncA@S
+rq6<b!;HHes7uZjqYU3gkPb8Tp\XpcrV??crqHEcr:U*^rq$*Zs7--YrU9dSs6]gPs6B[MrTOCI
+kNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g)J_tf@SU)e^W*tda?Ihd*L"_c-4ASb/q`Ga2\+t1rR;K
+_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<YHG"0XK/A$WMl_mV50o^U7n9RT:VXFS=A^A!1`kSrgNhq
+rjMd7%sN2>FEDSEEH,r:Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`fM/>$Co.!a&N*
+rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQoL/IAog8::eGo0SoY1:=qS)tsqaCEP
+s$lrW!_>mSr^qW49MJ5V:/=\_;,U=l<E<.%=]np5>[CcF@:E_XAS5[kCM[m,E,fr@G'A4XI!pKp
+JqJc3Ll%%KNf]EfQ'Rf*S"6.DTqeH^W2co#Y->4<[C3TU]=bkm_8=.0a2lEHc-F\`daZguf@em4
+h;-uHiSrnYk2tjjl0@U$m-aoB!V#XYncA@Srq-<cp\jmeq>^<hqu6NlrUp/@s,m>3~>
+JcC<$OoP+RrVc`nr;6Njs7uZhDtiu!p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[(AK7\W'I=-?dGBS(L
+EH#f4?".A^G(#14PPgXIQ'R`$n!<s>r0I5HqNh/Gs-*DErK7&Aq2tK9rfd>Erfd;DrfR)>q2bQ7
+!/pf7!0-i6rf-r:p5T!/!f`.tqi1W9r/Ui>r/^l>qiC9/rf8GGa2lEHbg+P^daQ^sf@\g3gtgiF
+i8WeXjlY^hl07L"m-X60n*olHncA@Srq6<b!;HHes7uZjqYU3gkPb8Tp\XpcrV??crqHEcr:U*^
+rq$*Zs7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g)J_tf@SU)e^W*t
+da?Ihd*L"_c-4ASb/q`Ga2\+t:;k&e_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<YHG"0XK/A$WMl_m
+V50o^U7n9RT:VXFS=AU#k2tmkl0@R"m-O-,mdBQ5nac;Co_%qQpil^\pPf]-G'.nKF)l8?E,]`5
+DJa4hCB80arb)=FB)Z?BA7PUJ!b#JEra,_5?![G7!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVh
+rD!8br_*,\r^m)[q+(?Pr'g6Gpd=^@oKh",kE#S'qN(YDqaCEPs$lrW!_>mSr^qW49MJ5V:/=\_
+;,U=l<E<.%=]np5>[CcF@:E_XAS5[kCM[m,E,fr@G'A4XI!pKpJqJc3Ll%%KNf]EfQ'Rf*S"6.D
+TqeH^W2co#Y->4<[C3TU]=bkm_8=.0a2lEHc-F\`daZguf@em4h;-uHiSrnYk2tjjl0@U$m-aoB
+!V#XYncA@Srq-<cp\jmeq>^<hqu6NlrUp/@s,m>3~>
+JcC<$OoP+RrVc`nr;6Njs7uZhD>3btp%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[(AK7\W'I=-?dGBS(L
+EH#f46:4.17n?;H:\@QO;#sKhrD!>gqbI,dq+gobqG@2fr_EGgo1o-XqbI/j!)rhq!*/nqs&8kq
+r)E_rr)NYo!``3!r)NAgn5]9br`(>ba2lEHbg+P^daQ^sf@\g3gtgiFi8WeXjlY^hl07L"m-X60
+n*olHncA@Srq6<b!;HHes7uZjqYU3gkPb8Tp\XpcrV??crqHEcr:U*^rq$*Zs7--YrU9dSs6]gP
+s6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g)J_tf@SU)e^W*tda?Ihd*L"_c-4ASb/q`G
+a2\+t:;k&e_SO%&^V7Co]Xtbc\[T#U[C!9HZE^X<YHG"0XK/A$WMl_mV50o^U7n9RT:VXFS=>(]
+JqJ]/KnY89LPL\AM2@+JN/WaVNfT9apd>$IqbmAk%sN2>FEDSEEH,r:Df0H0D#S2NC2*Z\!G?$D
+AH?=OraGq;?srt@!a]/<r`fM/>$Co.!a&N*rDiu"<)ifps&/korD<Mir_EDdr_3;aqb$iZr^ciT
+r'pTQoL/IAog8::eGoDGm8X$aqGdJ^qaCEPs$lrW!_>mSr^qW49MJ5V:/=\_;,U=l<E<.%=]np5
+>[CcF@:E_XAS5[kCM[m,E,fr@G'A4XI!pKpJqJc3Ll%%KNf]EfQ'Rf*S"6.DTqeH^W2co#Y->4<
+[C3TU]=bkm_8=.0a2lEHc-F\`daZguf@em4h;-uHiSrnYk2tjjl0@U$m-aoB!V#XYncA@Srq-<c
+p\jmeq>^<hqu6NlrUp/@s,m>3~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7^C(p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#f5Ci"6>L681<bl,`bbl5o`ci2;jdeD/hd/22jci)/hbRr"=a2Z*:_ns7)^:h4m]=Y_grOr3C
+rk&0@!5&0ArOi3Drk&-Ark8<Ds1A<B"1u.T])8l7ZM:a0ZE^X<Z*OA8rNlR2qm?@/rj2[3qQg+,
+oWnJ&qm6I5[^W^A[k,P?aihoRcHstfeCE1'g"P3:hV[8MioB+^k3(smlKdg'mI'H3nF?)?oCV\S
+o`Fj]p\jmeq>^<fqu$BRrVHHdqu-Biq>9sdp\smap&F[`oDS7[nc/+Wn,MhUmJcJPlN$5Ll2TrI
+kPjWDjT+B@is4T&iS`YOhqn@g<SZ?_g=b03f@SU(e^W*tda?Ihcd0n^c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMl_lV50o^U7n9RT:VY9rrASbS,SlU\,Wo6
+[h!\+F`__HEcH)<E,TW3D/B2e!GZ?JBE;aXrac+@A,]p=@:3LB?NOP>?2e(1>?Y50=TV],=8c/$
+<E)rr;u]bq;>j>k:]=,e:&dod9D_?\8c;3V8,PjS7J'"C6hE_>6.>i6]_B,0^AYhD^&UOt7/o^T
+7fGpX8,u6\9)hP69MJ5V:Jakb;H$Ln<E<1'=]ns6?!^lG@U`kZAnYjmCMds-EH6/DG'A4XI!pKp
+JqJc4M2I7OO-#NgQ'[l,S"61FU84W`W2cr$YHY==[C<]X]Y2(q_Sa@4aN;WKc-F\`e'uq"f\,!6
+h;7&IiT&t[k2tmll0@U$mI'H3$h3]Wo(2MGp%A%Pp\jjeq>U6hqu-HlrUg)?s,m>3~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7^C(p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#f5>@(fQE-QnlQ2QsFQ11+=Qi!*GQi*0LPlR'JPQ$aDOo1C<Onk1?PQ$aDPQ$aEOo(79Nrb9%
+r/:W6oS`d0rJ^]7!0$f7rf$W3s,R#<r/^u@OHB@#n;o3@aN;WLcHaeae'uq"f\,!5h;7&IiSrnY
+k2tjjl0@U$m-X60n*ol<o(2MGrq-?dp\4X]s7u]kqYU3gjo,&Rp\XpcrV??crqHEcr:U*^rq$*Z
+s7--YrU9dSs6]gPs6B[MrosIH!9a@Ds5a7Aro47CiSi_Qhr!;ih,`=cg=k65f[na+e^`1!e'cXk
+d*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qpVPU)a
+US=HUTV%gIj8S->k5XWYl0@R"m-O-,mdBQ5nac;Co_%qQqKMj\p5KT,G'.nKF)l8?E,]`5DJa4h
+CB80arb)=FB)Z?BA7PUJ!b#JEra,_5?![G7!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVhr([2b
+r_*,\r^m&ZqFCHQr'g6Gpd=[?pHd:.k)]J&qi:_EqaCHQr^QlWs%!,]r_!2`InWR2:/=\_;,U=k
+<)lt#=BSd2>[:ZC?t*SUAS,UhC27[(DfKf>F`qtSH@1-jJ:`E-LP^nINK90aPEhK%R[]k?Tq\?Z
+Vl6VsXfnt7ZaI9Q]"G_k^r"".`lQ9FbK\>ZdF6Uqf@\d1gtgiEi8N_VjlY^hl07L!m-X60mgJXT
+o()DEo_%nNp@nO\!;ZWjrVQQkrr)KgJcCl4J,~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7^C(p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iYSt2@=R$O##OcPN]MM[+CKS+f)I=-?dGBS(L
+EH#f55sdt-77U!G;#!i[;"RWb;#=)i:\RW_:\dcb:\mof:]=,g:\.?X:\dc`;ufkk<!-&s;H*Nn
+rD`hsqc3Vpq,Qf]pJpuh/B5cQbKS8Wd*^=le^rI,g=tH?hr*JQj5f@bkNM0qlg4!*mdKW6nac8B
+o^r.U!quB_rV6Egs8)Thr;>[TqY^*brVHKgqtU0brq?9_s7H<^rUU!Ys7$!Us6fpSrp9[N!:'RJ
+s6'IGroX7B!9F.>#NF_$i8EMMhYu>NgtUQ:g"G$0f@JL&eC;sqdF$=ecd'h\bfe2PaiMQD`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HMhUnjc[TqS-OSt:I`JV&K+K7nr4
+L5(J=LkpnEMMmFPNK0$[OHTH-r'L<Zqbn#LG'.nKF)l8?E,]`5DJa4hCB80arb)=FB)Z?BA7PUJ
+!b#JEra,_5?![G7!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVhr([2br_*,\r^m&ZqFCHQr'g6G
+pd=[?pHd:.!*&qtl;[^^qc!P_qaCHQr^QlWs%!,]r_!2`InWR2:/=\_;,U=k<)lt#=BSd2>[:ZC
+?t*SUAS,UhC27[(DfKf>F`qtSH@1-jJ:`E-LP^nINK90aPEhK%R[]k?Tq\?ZVl6VsXfnt7ZaI9Q
+]"G_k^r"".`lQ9FbK\>ZdF6Uqf@\d1gtgiEi8N_VjlY^hl07L!m-X60mgJXTo()DEo_%nNp@nO\
+!;ZWjrVQQkrr)KgJcCl4J,~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j4^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8Che!7I>XAi_u@g[bg$.4qTo,e!7CeopsK,gr6YPlci)-&c-4AQa2Z*:_ns7)^:q:n]Xthh
+rOr3Crk&-?s1AEH]Y+3V!5/9Brk/6D!PH,F]DoGB]DfDA\brc5Zi79,ZN7A:rNH:-rNlO2rNl:+
+!42O-rj27&rj2L/!O]B5[jSW)aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0@X%mI'H3nF?MK
+!V>s_p&F^cp\jmeq>U6fqu$BdrV?HcrVHHdqu-Bjq>0mcp\smap&F[`oDS7[nc/+Wn,MeUmJZAQ
+lg!d7l2TrIkPjWDjT+B@it^S4iS`YOhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci23Nc-4ASb/q`G
+a2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$W2HPjV50o^U7n:?rrAScS,SlT
+[fEl3[gmS(FEDSEEH,r:Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`fM/>$Co.!a&N*
+rDiu"<)ifps&/korD<Mir_EAcs%NDbqb$iZrCHcTr'pTQoL/IAog8I?df9?[q7Z41s1eHF!(6WO
+s$crWrC?lY!(m/^!D?,c9n#i5:f("e;c?Xr<``C+>$G6;?XI2M@q9._BPD6tD/O<4EccGJG^=^b
+IXm!%KSG8=MN!OUOckroQ^F84StD^NUo(&hWiW>,Z*UgG\%0)_]t_A"_o9X:aihoRcd:(geCN7(
+g=k?<hVd>Oj5]7`kNM0plg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)Zjrqu`no_sFAOoKq~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j4^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8Cg:C\C3+`TP5LRDQ1:1<Qi*0IQhm!KQ'D93rf[2ArK?u=plbZ@s-!>Erf[8CqN1K5s,Qr7
+repW3!/pf7!/pc6s,Hu9nr<[0r/^W7r/^E1-HF3MbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?s
+m-O--n*fc9rpg*]o`"O`p&Ojcq#C0hqYU0fr:g0crq66dr:g*eqYp<eq#:$epAFU`o`"I\o)J7[
+nGVhUmJuYQliQM<lMg&JkQ'fFk5XNCjSn0Sio/kSi8<GKh;-lAgY1B7f\"g-f%'cL"k1oIdEp5=
+c9BLsbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE"qVl$;dUnaZX
+U#4hfj8S*Uk3(sll0@R"lg4$+mdBQ5nac;Co_%qQr-/$]o8O6'F`__HEcH)<E,TW3D/B2e!GZ?J
+BE;aXrac+@A,]p=@:3LB?NOP>?2e(1>?Y50=TV],=8c/$<E)rr;u]bq;>j>k:]=,e:&dod9D_?\
+8c;3V8,PjS7J'"C6hNeA6.5eoO8k==NrVQE7/o^U7f>jW8,u6\8c_RYr_7i::Jakb;H$Ln<`W:(
+=^#$7?!grH@Uiq[AnYmoCMds.EH6/DGBeF\I=?]tK7nu7M2I7OO-,TiQ'[l-S=Z@HU84ZaWN*&%
+Yd(OA[^WfY]Y2(q_Sa@4aN;WLcHjkbe'ut#f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?PL!V>s_
+o`Fj]p\ssfq>^<hqu6NlrUg)?s,m>3~>
+JcC<$OoP+RrVc`nr;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj0(l07Bnk2bR^iS`VLgtUQ8f@JI#
+dEp4bbfe,L`l5j4^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8CdLHV77]pC:&.TX;"[]c;#F/k:f%$b!)NMfr(m/ar_NAes%iSgr_N,\qbQr]qGdGmqGdJn
+rDNPms&K"so2Y*Uq,R8l-HF3MbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?sm-O--n*fc9rpg*]
+o`"O`p&Ojcq#C0hqYU0fr:g0crq66dr:g*eqYp<eq#:$epAFU`o`"I\o)J7[nGVhUmJuYQliQM<
+lMg&JkQ'fFk5XNCjSn0Sio/kSi8<GKh;-lAgY1B7f\"g-f%'cL"k1oIdEp5=c<8E9bKJ&MaN2EA
+`Pod5_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE"qVl$;dUnaZXTmhH?J:W9'JqJ]/
+KnY89LPL\AM2@+JN/WaVO,oBcr'U?Jr)3;g%X)u:FE;JBEH#l8DJj<-rbDOLC&VcHB4h-S!G#^>
+@KKtG@/aL7?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\8GYjS7f5^I
+7/0.B6MWpqs5[/Z<Vo_q6i0:O7K5jU8,l*[8cD<_92,=ZISN[8:f1+h;cHdu='/U/>?kH@?XR>Q
+A7]@dBkqL$DK'T9FEMePH@('hJ:W?+L51VCN/`m\P*D5uR%'V;T:r!TVPgDnXKA_3Za@0M\[oGe
+^VI_(`Q$!@bKS8Xd*^=lf%8R.g>(N@i8EVTj5oFdkiq?tm-O--n*fc9s7-3^o`"Lbp@n=\q#C0i
+qY^6ir;HTdrdk*3s*t~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq1!toCDJBnF,i6mHj3)l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ"VPKu\T:VRAR$X)&P)t`aMi!7EKnFu-IXQQhG^":P
+EcH#8D/3p/H@h-IY5ZTEbl5occhl&hdJhSidJ_Gjd/q\@ci23'c-4DRa2Z-;`5BF,^:q:o]Xthh
+r4W*Bs1A6@s1A?Frk/6Ds1J<Brk/9Erk&6Cqmlg=])K8?Zh:X%ZN7A:rNH=-ZM1^$ZiIH2Z3%A<
+ZMq3+Z2h0.ZMq30ZiIH3ZiRSCrjOGuaN;WLcHjkbe'uq"f\,!6h;7&IiT&tZk2tjkl0@U$m-X60
+n*ol<o(2MGrq-?dp\4[^rqZTjqtp<hq>KsbpAOmdp\XpcrV?<bs7cNdr:U']s7?0Zs7--YrpTmT
+s6]dO!pf.:rosIH!9a@Ds5a7Aro4%=iVqaHhqm5Gh;$f?g=k64f[na+ec+&`e'cXkd*L"_c-=JU
+bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'WMl_mVPU)aUYu.PSGJ`T
+Re!ou\9<":FE;JBEH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%
+s&K(urDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=^@qa&X0qRtq'r'^NQs$lrW!_>mS
+r^m2a9`@b8:/=\_;,U=l<E<.%=]np5>[:]D@:E_XAS5[jCM[m+E,fr@G'A4XH[U?nJV/Z2Ll%%K
+NfT<dQ'Rf*S"-(CTqeE\VlHf"Y->1;[C3TU]=bkm_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8WeX
+jlYail0@U$m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCl4J,~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq1$uoCDJBnF,i6mHj3)l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ"VPKu\T:VRAR$X)&P)t`aMi!7EKnFu-IXQQhG^":P
+EcH#8D/3HeBl/$CMNe%(rg!&?qj72GrKmAHs-<PHrf[5BrK?u=plbZ@rf[8Erf[8CqN1N6!KN6?
+NW>"5N;SV3N;eb8N;eb0N:`,/Nr"h8O91K)OSk1=O8t@?O8t@@O=\DmaihoRcd:(geCE1'g"P6;
+hV[8Mj5]4_k3)!nlKdg'mI'H3nF?)?oCV\So`Fj]p\sseq>^<gqu$BfrUg*_rVQNequ-Biq>0md
+p\smap&=U`oDJ1Znc/+Xn,MhUmJZAQlg!d7l2TrIkPjWDjT+B@irS/urnn@FhVR)Egt^Z<g=b-2
+f@SU(rmXEdda?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0
+XK/A#W2HPjV50o^h;@,KioC%!(ZsoEkiqBtlg*p)mI'E2nF?)@oCV_Lq#5L6G4LV'N-9>cFE;JB
+EH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_k
+s%iVhrD!8br_*,\r^m)[q+(?Pr'g6Gpd=^@qa&X0!05lrr'^NQs$lrW!_>mSr^m2a9`@b8:/=\_
+;,U=l<E<.%=]np5>[:]D@:E_XAS5[jCM[m+E,fr@G'A4XH[U?nJV/Z2Ll%%KNfT<dQ'Rf*S"-(C
+TqeE\VlHf"Y->1;[C3TU]=bkm_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8WeXjlYail0@U$m-X60
+n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCl4J,~>
+JcC<$OoP(Qrr)ior;6Njs7uZhs7ZNerq1$uoCDJBnF,i6mHj3)l07Eok2kX`iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ"VPKu\T:VRAR$X)&P)t`aMi!7EKnFu-IXQQhG^":P
+EcH#8D/2I)6pjL89i1^_ohb?ZrD<Gi!`2Zgr_<GhqbI)cq+gobqb[;grD*>fo1o-Xp.kB^r)<Mm
+s&8kos&8Yko2Y-Vq,RAo/B5cQbKS8Xd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4!*mdKW6nac8B
+o^r.U!quB_rqQKgs8)Wir;?Bho`"R_qu$3crVHKgqY:*brq?9_rq-6^r:9mXs7$$Vs6fpSrTjUO
+lK\B5s6'IGroX7B!9F.>!TN);i"4f&hVI#CgtUQ:g"=s/f@JLOe7$hSdF$=ecHa\Zbfe2PaiMQD
+`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`.tVl-DgUnjc5I=?WpJ:W9'JqJ]/
+KnY89LPL\AM2@+JN/WaVO,oBcr^6NKr)35e%X)u:FE;JBEH#i7DJj<-rbDOLC&VcHB4h-S!G#^>
+@KKtG@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iVhrD!8br_*,\r^m)[q+(?Pr'g6G
+pd=^@qa&X0!*.iSr'^NQs$lrW!_>mSr^m2a9`@b8:/=\_;,U=l<E<.%=]np5>[:]D@:E_XAS5[j
+CM[m+E,fr@G'A4XH[U?nJV/Z2Ll%%KNfT<dQ'Rf*S"-(CTqeE\VlHf"Y->1;[C3TU]=bkm_8=.0
+a2lEHbg+P^daZdtf@\g3gtgiFi8WeXjlYail0@U$m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kk
+rVcBfJcCl4J,~>
+JcC<$OoP(QrVc`nrVQTj!;ZTg!Vc<eo`=^VrpjamnF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`PfX/^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f4CMId1I>O2c\'3(@rm(MhqU#8i!7LYirQtPkrm1_mcHcF6&^/>;a2Z*:_ns4(^:h4m]=bfS
+^&G\D]DfDA]E#YE]`,VE]_oD@]`5\F]E#SB\c]RU\[q^LrNl.%rNcO1Z2Lm,Z2V')Zh_!.Zi79+
+ZhC[+Za-q6ZmiDk\&cY5bK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5Oekiq?tm-O--n*fc9rpg*]o`"Lb
+p@n=[q#C0iqYL*fr;-B\rqQHgr:p0fqYg6dq#:$fpAFU_o`+O\o)J7[nG_nVmf2\QliQM<lMg&J
+kQ'fFjoXZ*jSn0?io0mp&Du@$h;-l@gY1B7f\"g-f%'cL4k%j,dEp4bcHXSWbKJ&MaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\Y(Wi;qpVl$<IrrAScRfJoK\,<`FF`__HEcH)<
+Df9N2D/B2e!GZ?JBE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mi
+s%`Jdr_3;aqb$iZr^ciTr'pTQoL/IAog8XDci<sWiP,4Xs$coVr^ZuZ!(m/^s%@i89heAY:f("e
+;c?Xq<`W=*=^,-9?=.)K@Uit]B4u$qCi402EH?5FGBnL^I=Hd!K8#&9M2R@SOHPfmQC+,1SXuLJ
+UnsufWiN8*Yd1UC[^`l[]Y;.s_SjF6aND]NcHsteeCE.%g"P3:h;@/LioB+^k3(smlKdg'mdKTF
+nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUp/@s,d82~>
+JcC<$OoP(QrVc`nrVQTj!;ZTg!Vc<eo`=^VrpjXjnF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`PfX/^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f4CKk.VBlSEMN;f(@Q1C7=Qi!*JQhZjHPl6gFP5UOAP5(17OoU^FP5^[EP5UO?OSOq<NfX1"
+s,I#9q2G60r/CB.q2Fs*rf6o;!06u<rfI&=pQ5Er,g+<TcHsteeCE.%g"P3:h;@/LioB+]k3(sm
+l0I^&mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<fqu-HhrU9a\rVHHequ-Biq>0mcp]'sbp&=U`oDJ1Z
+nc/+Xn,MhUmJZAQlg!d7l2TrIkPjTFjlGM%irS/urnn@FhVR)EgtUT;g=b-2f@SU(rmX*[da?Ih
+cd'h\bfn8Rb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0X/`2!W2HPjV>f<N
+hZDcrj8S*Vk3(sll0@R"lg4$+mdBQ5nac;Co_%qQGPQFQNW"eFF`__HEcH)<Df9N2D/B2e!GZ?J
+BE;aXrac+@A,]p=@:3LB?NFJ=r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZ
+r^ciTr'pTQoL/IAog8XDci=!)i/de(s$coVr^ZuZ!(m/^s%@i89heAY:f("e;c?Xq<`W=*=^,-9
+?=.)K@Uit]B4u$qCi402EH?5FGBnL^I=Hd!K8#&9M2R@SOHPfmQC+,1SXuLJUnsufWiN8*Yd1UC
+[^`l[]Y;.s_SjF6aND]NcHsteeCE.%g"P3:h;@/LioB+^k3(smlKdg'mdKTFnF?MK!V>s_o`Fj]
+p\ssfq>^<hqu6NlrUp/@s,d82~>
+JcC<$OoP(QrVc`nrVQTj!;ZTg!Vc<eo`=^VrpjXjnF,f4m-O''l0.<mjl>C[i8<DIgY1?4f@AC!
+dEg+_bK@oH`PfX/^V.:k\[T#RZEUO7X/`+rUnaWVSt):<R$Eo!OcPK\MM[+BK7\W'I=-?dGBS(L
+EH#f4CI(<W77Tj@:B"&[:^']m:f1%crDEMir_`Yk!`)Qdr_NGerD35ar_NDfr_NMgr_N,\qG6`Y
+qG[Gpr`&eor)EYor_iSkr)E5em8Wj\-W\=0b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0plg4!*
+mdKW6nc&([oCW%T!quB_rV6Egs8)ThrVZNjn,E+\qY^-crVHKgqY:'as7ZB`rq-6^r:9mXs7$$V
+s6fpSrTjUOlK\B5s6'IGroO:DjQ-=#!TN);i"4f&hVI#CgY:H9g"=s/f@JLOe32:/dF$=ecHa\Y
+bfe2PaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h,WiE%sVl-Dgrd4ltIXZcs
+Jc:9$K,'&nKnb>;LkpnEMMd=NN/`jYO-#Mlq*P!Wo2?*@FEDSEEH,r9Df0H0D#S2NC2*Z\!G?$D
+AH?=OraGq;?srt@!FB(2>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>k:Adic9`@]^9)_E]8GPdR
+7f5^I7/0.B6N09ss8Q*V<;]/a7K,dU8,l*[8cD?^97KW09hnJ\:f1+h;cHat<`iL->?kE>?XR;O
+@qB7bBPM=!DJsN7F*)SLH$XjdIt3-'KnbD?MiEdZP*;/sR$sM8StMdQV5L8lX0&S0ZEpsI\@K5a
+^;%M$`5Td<b0/&Td*^:ke^i@*g=tH>hr*JQj5f@bkNM0qlg4!+n*^;Hnc&([oCW%T!quB_rqQNh
+s8)Zjrqu`np&9OBOT0h~>
+JcC<$OoP(QrVc`nr;6Njs7uZhEVK2#p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O##OcPN]MM[+CKS+i*I=-?dGBS(L
+EH,o7Chma(G^ta@XNf#hcMu5dd.Ylad/VMmd/VDlcMl&tbf\#I`l>s8_SEq#]tOBWr4W*Brk&-?
+s1AEH]Y+3V!5/3@rk&9F]`,P?])&u;])/i2ZMq-)ZMUj-Z*L\2Zh_!,ZN.<.Zi@<2Zh^p+Z2_-2
+['T\;1:>3GbKS8XdF-Lnf%8R.g>(N@hr*JRj5oFckNV6rlg4!+n*fc8nac8Bo^qhLp@e7TrqQNh
+rqcNhrVZNjmJcnZqu$3crVHKgqtU0brq?9_rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BUJ!pJh1roOII
+jQ,@]io8qrhuV`lrnRV1g]#n-g"?;U%bB1[eC2jodF$=ecHa\YrlZk8aiMQD`l5p8_ns:,^q[Xu
+]tD"i]",A]\$i`Q['R*EZ*:I9Y-"e+WiE%sg].)=o=+P*s)\ThEcH)<Df9N2D/B2e!GZ?JBE;aX
+rac+@A,]pB@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciT
+r'pTQoL/IAog6q'h7ihUs$crWrC?lY!(m/^InNI/9heAY:f("e;c?Xq<``C+>$G6;?=.)L@Us%^
+BPD3sD/O93EccGJG^=^bIXm!%KSG8=MN!OUOHPinQ^F52StD^NUnsugWiW>+Yd1UD\%0)_]t_A"
+_o9X:aihlPcHstfeCE1'g"P3:hV[8Mj5]4_k3)!nlKdg(mf2_`nF?)?oCMVIp%J+RrV6Egs8)Zj
+rqucoo_sFAOT0h~>
+JcC<$OoP(QrVc`nr;6Njs7uZhEVK2#p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O##OcPN]MM[+CKS+i*I=-?dGBS(L
+EH,o7Chm<bASlO9LR",'Q1C7<Qi!*KQhZjIQ'D62s-!;Brf[&=pQ>TAP*5d-rf[8CqN1N6rJpf8
+!K2j7Mu&D1Mu8M7Mi.=gq2G$,!KN0=NrG+>Nq\V7NrP.@OH9@%s,SnUb0/#ScdC1ieCN7(g=k?<
+hV[8Mj5]7`k3)!nlKdg'mdKW6nF?)?oCV\Jp%J+Rp\ssfq>U6fqu-HhrU'UZrVQNequ-Biq>9sd
+p\smap&=U`oDS7[nc/+Wn,MhUmJcJPli68LklU)3kPjTKjlGL_j5T(Wrnmh7hYu=3gtVh^!SQ-)
+f+-B^eC;sqda?Ihcd'h\bl5dEb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"/
+X/`2!W8$(^gtgiEhr3STroF+B($OoHlK[^$m-X3.mdKZ8o(2JFp%J1VG4CRhN;mu,F)l8?E,TZ4
+DJa4hCB80arb)=FB)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]F2f
+:&[ic9D_?\8cD9V8,PjS7J'"C6hNdjs4rb77/o^U7f>jW8,u6\8q0K-9MJ5V:Jakb;H$Ln<E<1'
+=^#$7?!^lG@U`kZAnYmnCMds-EH6/DGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"?7GU84W`WN*&%
+YHY==[^WfY]Y2(q_Sa@4aN;WKc-F\`e'uq"f\,!5h;7&IiT&tZk2tjkl0@U$mI(#C$h3]Wo(2JF
+p%A%Pp\jmeq>^<hqu6NmrUg)?s,d82~>
+JcC<$OoP(QrVc`nr;6Njs7uZhEVK2#p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O##OcPN]MM[+CKS+i*I=-?dGBS(L
+EH,o7Chl='6UjR99MeOO;#X>h;#aDl;#a;k:B"&d:B"&b:B"&c;#a>i:B"&]:Adlg:/CLWr_N>h
+"'&B%<;]\m<;]\p;YF&_<<-)!<UEc]<ADS;bKS8XdF-Lnf%8R.g>(N@hr*JRj5oFckNV6rlg4!+
+n*fc8nac8Bo^qhLp@e7TrqQNhrqcNhrVZNjmJcnZqu$3crVHKgqtU0brq?9_rq-6^rUU!Ys7$!U
+s6fpSrp9[Ns6BUJ!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n-g"?;U%bB1[eC2jodF$=ecHa\Y
+rl[:DaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"e+WiE%sH?spcI!pElIXcm!
+rdt0&'SM0oL5(J>Ll$tGMMmFPNK0'\OHTE+r)3#_s)\ThEcH)<Df9N2D/B2e!GZ?JBE;aXrac+@
+A,]pB@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTr'pTQ
+oL/IAog6q's&IrUrC$ZSs$lrWs%!,]r^qZ59MA/T:/=\_;,U=k<)lt#=BSg3>[:ZC?t*SUAS,Ui
+C27[(DfKf>Fa&(VH[U?nJV/W1LP^nINK90aPa.T&R[]n@Tq\?ZVl?\tXfnt7ZaR?R]"G_k^r"".
+`lQ9FbK\>ZdF6Uqf@\d1gYL`Di8N_VjQ>Ufl07L!m-X6@mgJXTo()DDo_%nNp@nO\s7u]kr;6Kk
+rr)KgJcCi3J,~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7^*up%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#8D#S2VFaJh*Ts`(hcHl73psJrb!7C_k(XLCPc-=JUaiDHA`Pf[1^q[Rr]Y(kh]_oJB]`5VB
+])TDC^&G\D]`YpZ]=S!Rqn)p@qRZO6rji0C[C#h;q6L")qm$:-YHRo/!O8s0ZN.B2Zh_!#ZN@G=
+Zhh!-Zh^sXaihlPcHsteeCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\jme
+q>^<gqu-HhrTaCXrVQNequ-Biq>9sdp\smap&F[`oDS7[nc/+Wn,MhUmJcJPlN$5KklU)3kPjTE
+jlHF$s5F%;rnmh7hYu=3gtVh^!SQ-)f*0aUeC;sqrm<LJcd'h\bfe2Pb/q`Ga2Z*;`5BI/_8*h#
+^:h1l]=PP`\@8oT[C!9HZE^X<Y-"h-X/anRq4$ubpUL6F$?L6-EH#i7DJj<-rbD^QBkV0mB4h-S
+!G#^>@L$=L?sd8I?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iYir([/ar_*,\r^m)[q+(?P
+r'g6GpI"^Bc2ZV6r^?`Ss$lrW!_>mSr^m2a9`@b8:/=\_;,U=l<E<.%=]np5>[:]D@:E_XAS5[j
+CM[j*E,fr@Fa&(VH[U?nJV/W1LP^qJNfT<cPa.W(S"-(BTqeE\Vl?\uY->1;['mHS]"G_k_8=+/
+`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeWjlYail07O#m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6Kk
+rVcBfJcCi3J,~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7^F)p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#8Chm6^@q]h*J;aAko9T<@qN_,JpQbiFPl6gFP5UOAP5177OoU^FP5^[EP5^U?OSOt8Nr4k?
+Nf8pTMMhCkq2G<2r/:W6regT2repi:rJ^H0r/U]9!06l9p5gcGbKJ/Ud*^:ke^rF+g=tH>hr*JQ
+j5f=akNM0qlg4!*mdKW6nac8BoCW%T!quB_rV6Egs8)WirVZNjlMgVXqu$3crVHKgqtU0brq?9_
+s7H<^rUU!Ys7$!Us6fpSrp9[N!:'OI!pJh1roO7CjSn3>iW.s:huV`lrnRV1g]#n-g"?;U"kM5R
+eC2kFd6H"(cHa\YbKJ&NaiMQD`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I8Xf\\*WnH+\
+gYCT?hV[8MioC%!(?aoFl07Kulg*p)mI'E2nF?)@oCV_Lq0)^r!06`3qMbGr$?L6-EH#i7DJj<-
+rbD^QBkV0mB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iYir([/a
+r_*,\r^m)[q+(?Pr'g6GpI"^Bc2ZU\r^?`Ss$lrW!_>mSr^m2a9`@b8:/=\_;,U=l<E<.%=]np5
+>[:]D@:E_XAS5[jCM[j*E,fr@Fa&(VH[U?nJV/W1LP^qJNfT<cPa.W(S"-(BTqeE\Vl?\uY->1;
+['mHS]"G_k_8=+/`lQ9Fbg+P^dF6Urf@\g2gtgiFi8WeWjlYail07O#m-X60n*olIncA@Srq-?d
+p\4[^s7u]kr;6KkrVcBfJcCi3J,~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7^F)p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XK&7tVPKr[T:MI?R$O#$P)t]_Mi!7EKS+i+IXQQhG^":P
+EcH#8Chl='6q0X:85AMJs&&Vh!)`Yj!DcJi:]!od:\[]a:]!ug:]4&f:\.?Y:\7E[:\Rfl<E<.#
+<)iiqr)ESmrDNDhs&Aeor`9&!mo9*_.`olWc-F\`daZh!f@em4h;-uHiSrnYjlYail0@U$m-X60
+n*ol<o(2JFrq-?dp\4X]s7u]kqtp?iqYf^Yq>L3gp\XpcrV??crqHEcr:U*^rq$*Zs7--YrU9dS
+s6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g&]mZrmq>)e^W*tdf.WZd*L"_c-4AS
+b0%iIaN)<>`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Ycb+1XK/@HH$Xd`I!g?jIXcitJc:9$
+K+iolKnb>;LkpnEMMd=NN/`jYO-'0(rDN#]s)\ThEcH)<Df9N2D/B2e#&7jcBP1sirac+@A,]pB
+@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTr'pTQoL/F@
+pd37*rDhfUr^?`Ss$lrW!_>mSr^m2a9`@b8:/=\_;,U=l<E<.%=]np5>[:]D@:E_XAS5[jCM[j*
+E,fr@Fa&(VH[U?nJV/W1LP^qJNfT<cPa.W(S"-(BTqeE\Vl?\uY->1;['mHS]"G_k_8=+/`lQ9F
+bg+P^dF6Urf@\g2gtgiFi8WeWjlYail07O#m-X60n*olIncA@Srq-?dp\4[^s7u]kr;6KkrVcBf
+JcCi3J,~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/<@FKnFu-IslZiG^":P
+EcH&9D/3m&Ed)tjR&RdEchPl^dJ;,hdJVAkcP=aMbfn8QaN)<>`5BF,^:h4m]Xthhr4W*Bs1A6@
+s1A?Frk/6Ds1ABE])B8=]`5SI]",D`\[qUIs186B!4r0<!k#DBrNl:)s0;L-s0;U-rNQ=,!4)I-
+rj2[3rNuI.s0;[3ZMUs.ZMq01Z2V'/Zi%0Zb0/&TcdC1ieCN7(g=k?<hVd>Oj5]7`k32'olKdg(
+mdKW6naZ2@oCW%Ts7QHerV6EgrqcNhrVZQkl2LJVqu$3crVHNhqY:'arq?9_s7H<^rUU!Ys7$!U
+s6fpSrp9[N!:'OI!pJh1roO7CjSn3>iW.s:huV`lrnRV1g]#n-g"?;U"kM5ReC2kFd0\1GcHa\Y
+bKJ&Mrl?;(`l5p8_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:F7Xf^7UqO@)cpUL45#'=p,EH,r9
+rb`9aChmg$C2%?pB4kgfARo=]raH+@?sm>K?=$q:>lS".>5h\)=T;J%<rZ2"<;f_s;Gg<h;#a>k
+:Adic9`Ic_9)V?\8GPdS7f5^I7/0.F6HfB/^#$L'7/o^U7f>jW8,u6\9)hP59MJ5V:Jakb;H$Ln
+<E<.&=]ns6>[CcF@:E_XAnPdlCM[m,EH-&AG'A4XI!pKpJqJc3Ll%%KNfT?eQ'Rf*S"6.DTqeE]
+W2co#Y->1;[C3TU]=bkm_8=.0a2lEHbg+P^daZdtf@\g3gtgiFi8WeXjlYail0@U$m-X6@mfi4N
+o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCi3J,~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/<@FKnFu-IslZiG^":P
+EcH&9D/3lk@:a1qH\@NGQ1L=?QhcpIQhH^GQ'D93rf[2Arf[&=rfR8DplbW?rf[8Cq2kH6r/U]7
+rf6u;!K;s8MZ8V1N;nh6N;nh9MYi>2Mu\k9N;ee:N;AP5NrP(>O,j*u!07&>!07&>!K`B?O=A>q
+c-FY_daQ^sf@\g2gtgiFi8WeWjlY^hl07L!m-X60n*ol;o()DErq6<b!;HHes7uZjqtp?iqu,dY
+q#1*fp\XpcrqZEcrqHEcr:U*^rq$*Zs7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9
+hqn@g!SlH/g&]mZrmq>)e^W*tdf.W#d*L"_c-4ASb/sY(9?5&k`Pf[2_SO%&^V7Co]Xtbc\[],W
+[^EKKZa-j?YHG"0g"G*5gY:Q>h;7&IiSrnYjQ5Rgkiq?slKdd&mHs?0n*ol<oCMVJp\K(%NVe\6
+N<XKGEcH)<DuOVcD/=!'C2.HrBP1siAS#C_A,]pB@:3JM?X@&Er`oJ-!*]A)s&f;&r`9&!s&Aqq
+!`Dlmr)!Dhs%`Jdr_3>bqb$fYr^ciTrC6]RoL/IAq*N:)!05oss$ZlUs$lrWs%!,]r_!2`IS<I1
+:/=\_;,U=k<)lt"=BSd2>[1TB?t!MSAS,RgC27X'DfKc<FEVkRH@1-jJ:`E-L5:\EN/is^PEhH$
+R@Bb=TV8-VVl6VrXfen5ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Oof%8R.gYCWAi8EVTjQ5OekiqBu
+m-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*2s*t~>
+JcC<$OT5"QrVc`nr;6Njs7uZhs7ZNerq1(!oCDJBnF,i6mHj3)l07Eok2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/<@FKnFu-IslZiG^":P
+EcH&9D/3lQ6:=757nc\I:]O;c:]OAj;#=&d:B+,a:B"&d;#a>i:B"&\:Adli:/=VZp.kN]!)E/c
+#?=f*<E)pr;uBVl;uT\h;uTbn<W6&!<UWoa<@Q)6c-FY_daQ^sf@\g2gtgiFi8WeWjlY^hl07L!
+m-X60n*ol;o()DErq6<b!;HHes7uZjqtp?iqu,dYq#1*fp\XpcrqZEcrqHEcr:U*^rq$*Zs7--Y
+rU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g&]mZrmq>)e^W*tdf.W#d*L"_
+c-4ASb/sY(.*'?H`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?YHG"0G^+LZH@#R<s*Y$!It*!"
+rdt0&'82'nL5(J>Ll$tGMMmFPNK0'\OnqEC;XIE^<!IGcEcH)<DuOVcD/=!'C2.HrBP1siAS#C_
+A,]pB@:3JM?X@&Er`oJ-!*]A)s&f;&r`9&!s&Aqq!`Dlmr)!Dhs%`Jdr_3>bqb$fYr^ciTrC6]R
+oL/IAq*N:)r`.lUs$ZlUs$lrWs%!,]r_!2`IS<I1:/=\_;,U=k<)lt"=BSd2>[1TB?t!MSAS,Rg
+C27X'DfKc<FEVkRH@1-jJ:`E-L5:\EN/is^PEhH$R@Bb=TV8-VVl6VrXfen5ZaI6O\\#Mg^VRe*
+`Q-'BbKS8XdF-Oof%8R.gYCWAi8EVTjQ5OekiqBum-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6i
+r;HTdrdk*2s*t~>
+JcC<$OT4tPrr)fnrVQWks7uZhs7ZNerq1.#oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/:D/=!%CialVO.<Aschc#`dIGQqcd'e[bfn5Oa2c3=_ns7)^:jHWr4W*Bs1A3?"MDF]]Y+3V
+!5/0?rOi0B"hM7U\[oBJ\c0/?]DfD@[KX.K[^ENMrj)X2Zh(L&Z2_$*YlCs.ZLkI'[-k7(ZEpjD
+['Tb=.`olXc-F\`e'uq"f@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]k
+qtp?iqu,[Vq>L3gp\XpcrqZEcrqHEcr:U*^s7?0Zs7--YrU9dS!:BaO!pf.:rosIH!9a@Ds5a7A
+ro47CiSi_Qhr!;ih#Z<crn7_4f[na+f%&:"e'e6C/'uVfcHXSVbK@rJaN)?@`Pod5_SX.)^V@Lr
+]Y(kf\[f5Z[^NTNZa6p@YgrdNS,Ker\G3Q.\GNi:Es-N'EH#jqD@gZ$CMR["BkV0mB4b^dA7T3L
+@KBnFra5\3!+#S/s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?Pr'g6G
+q*Y'HaoD@RiP#:[r^HiVrC6o[8P/nR!D?,c9n#i5:f("e;c?Xq<``C+>$G6;?=.)L@Us%^BPD3s
+D/O93EccGJG^4U_I=Hd!K8#);MN!OUOHPfmQ^F52SXuOLUnsufWiW>+Yd1UC[^`l[]YD8!_o0O7
+aND]NcHsteeCE.%g"P3:h;@/LioB+]k3(smlKdg'mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`n
+o_sFAOT0h~>
+JcC<$OT4tPrr)fnrVQWks7uZhs7ZNerq1.#oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/:D/=!%?"7SeGCGC6Q26dHQi36KQgC"=Q'D62rf[5Brf[&=rf[;Dr/q,FP*5d-rf[8CqN1Q7
+r/UZ6rJpf7!KE$9MZ8V*N;nh9MYrA6N/NYoNW"h9NW"h7NVnh9O8b1;Nrk?&Nr+nfaihoQcHstf
+eCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>^<gqu-HirT=+TrVQNe
+qu-Bjq>0mcp\smap&F[aoDJ1Znc/+Wn,MeUmJZAQlg!d7l2TrIkPjWDjT+B@is4T&iS`YOhqn@g
+!SlH/g'ZNcf@SU)e^W*tdf.Wqd*L"_c-4ASb/q`Ga2c3=`Pf[2_SO%&^V7Co]Xtbc\[],W[^EKK
+Za$a=f%8R-g"P07gt^`AhV[8MioB+\k3(sll07Kulg*p)mI'E2nF?)@oC_hOqf_CerJ^W5s)S<`
+EH,r9rb`9aChmg$C2%?pB4kgfARo=]raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl
+;#a>k:Adic9`Ic_9)V?\8GPdR7f5^I7/94J6HT9,No?$!7/fXT7f>gY84cDP8c_RYr_7i::Jakb
+;H$Ln<E<1'=^#$7?!^lG@U`kZAnYmnCMds-EH6/DGBeCZI!pKpJqJc4M2I7OO-#NgQ'[l,S"6.E
+U84W`W2cr$YHY==[C3TU]=bno_Sa=2a2lEHc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-a?2
+nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s,d82~>
+JcC<$OT4tPrr)fnrVQWks7uZhs7ZNerq1+"oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/:D/=!%6:=4184H<Lo2,B]nkf6[!DZGh:&n)a:B"&d;#a>h:B"&]:Adli:/=VZp.kN]r_Dr^
+s&JhnqG[DlqbmJmqG[Dnr`/nt!*/Shs&B%ur`(GibKS5Vd*^=le^rF+g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nac8BoCW%T!quB_rV6Egs8)WirVZQkk5P2Tqu$3crVHNhqY:'arq?9_s7H?_r:9mX
+s7$!Us6]mSrTjUOlK\B5s6'IGroX7B!9F.>#NF_$i8EMMhYu=3gtVh^$JF(`f@JO'eC;sqrm<[O
+cd'h\bfe2PaiMQDa2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZ*:HUGB\:VH$O^_H[L5?IK+ct
+J:[]Os+:u<KnY89LPUbCM2I1KN/WaVO,oG#6N'gM;u9PoEs-N'EH#jqD@gZ$CMR["BkV0mB4b^d
+A7T3L@KBnFra5\3!+#S/s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCQuZq+(?P
+r'g6Gq*Y'HaoD<>i`#nGr^HiVrC6o[8P/nR!D?,c9n#i5:f("e;c?Xq<``C+>$G6;?=.)L@Us%^
+BPD3sD/O93EccGJG^4U_I=Hd!K8#);MN!OUOHPfmQ^F52SXuOLUnsufWiW>+Yd1UC[^`l[]YD8!
+_o0O7aND]NcHsteeCE.%g"P3:h;@/LioB+]k3(smlKdg'mdKW6nc&([oCW%T!quB_rqQNhs8)Zj
+rqu`no_sFAOT0h~>
+JcC<$OT4tPrVc`nr;6Nj!;ZTgEqf;$p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O#$OcPN]Mi!4DKS+i+IXQNfGBS(M
+EcH#8Chmd$DfpJaQ)(h6r6Y5dnB_focHa\Ybfe,La2Z*:_nj.&]tOBWqn<!As1A6@s1AEH]Y+3V
+s1ABE])92>]`5VD])T;B]",EJ\c95@]DfAD\[o5Xr3uX5!k#AArj24%s0;I*s0;I,n$</&Za-pD
+rNuO0rj4Ddb0/&TcdC1jeCN7(g=k?<hVd>Oj5]7`k32'olKdg'mdKW6nF?)?oCV\Jp%J+Rp\ssf
+q>U6gqu-HirT*tRrVQNequ-Bjq>0mcp\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7l2TrIkPjWD
+jT+B@is4T&iS`YOhqn@g+Pb`*g=b03f@SU(e^W*tda?Ihd*L"_c-4ASb/q`Ga2\+t(W=5._SO%&
+^V7Co]Xtbc\[],W[^EHJZIAjNS,Tns\G<W/\G3T<F)l8?E,Y_n&8c6!CMITuBP;$kAn>OaA7PUJ
+!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[id9D_?[8cD9V8,YpT7J'"C
+6iTKorrB_1]`>eD^$3927K,dU8,l-[8cME_97BQ/9hnGZ:f("e;cHat<``F,>$P<<?XI5N@qB4a
+BPD6uD/O<4F*)PKG^=^bIXm!%KSG8=MN!RVOckroQ^F84StD^NUo(&hWiW>+Yd:^F\%0)_]t_A"
+_o9X:aihoRcHstfeCE1'g"P6;hV[8Mj5]7`k32'olKmm)mf2_`nF?)?oCV\Jp%J+RrV-BgrqcQi
+rqucoo_sFAO8j_~>
+JcC<$OT4tPrVc`nr;6Nj!;ZTgEVK2#p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O#$OcPN]Mi!4DKS+i+IXQNfGBS(M
+EcH#8Chmcj?Y!njG_(eMQN!6NQMm08Q3!88rfd>ErK7)BplYN<!0R)?rKI5DrfR#<r/Ul=O8P%9
+NW"k=NK0"oN;nh9MZ8V6Mu\e/N;ne9MZ&G9N/`dTNUr,/NVne?O,f9\NfNprrfAjqb0/&TcdC1j
+eCN7(g=k?<hVd>Oj5]7`k32'olKdg'mdKW6nF?)?oCV\Jp%J+Rp\ssfq>U6gqu-HirT*tRrVQNe
+qu-Bjq>0mcp\smap&F[aoDJ1Znc/+WmfMqEmJZAQlg!d7l2TrIkPjWDjT+B@is4T&iS`YOhqn@g
++Pb`*g=b03f@SU(e^W*tda?Ihd*L"_c-4ASb/q`Ga2\+t2T3MM_SO%&^V7Co]Xtbc\[],W[^EHJ
+ZIIIVf@\d0g=k<:gtgfChr*JQj5f:`kNM-olK[^$rp1$[mdBQ5nac;Dp%J1XG41FhN;/A9F)l8?
+E,Y_n&8c6!CMITuBP;$kAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j
+:]F2f:&[id9D_?[8cD9V8,YpT7J'"C6iTKorrA&WNW>.;Np2W)7K,dU8,l-[8cME_97BQ/9hnGZ
+:f("e;cHat<``F,>$P<<?XI5N@qB4aBPD6uD/O<4F*)PKG^=^bIXm!%KSG8=MN!RVOckroQ^F84
+StD^NUo(&hWiW>+Yd:^F\%0)_]t_A"_o9X:aihoRcHstfeCE1'g"P6;hV[8Mj5]7`k32'olKmm)
+mf2_`nF?)?oCV\Jp%J+RrV-BgrqcQirqucoo_sFAO8j_~>
+JcC<$OT4tPrVc`nr;6Nj!;ZTgEVK2#p%@tKoCDJBnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&4sV50iYSt2@=R$O#$OcPN]Mi!4DKS+i+IXQNfGBS(M
+EcH#8ChmcO5t4=77S-AK;#3uZ;#3ud:&n)`:B"&d;#a>i:B"&\:Amue:&n#_:Adoe:'=9d;GpH^
+;ufqn<;TVo;YsDl;Yj>l<<#tt<WH.r<;fhq<;ffNb0/&TcdC1jeCN7(g=k?<hVd>Oj5]7`k32'o
+lKdg'mdKW6nF?)?oCV\Jp%J+Rp\ssfq>U6gqu-HirT*tRrVQNequ-Bjq>0mcp\smap&F[aoDJ1Z
+nc/+WmfMqEmJZAQlg!d7l2TrIkPjWDjT+B@is4T&iS`YOhqn@g+Pb`*g=b03f@SU(e^W*tda?Ih
+d*L"_c-4ASb/q`Ga2\+t,K.L:_SO%&^V7Co]Xtbc\[],W[^EHJZ?185GB\:VH$O^_HiABrIXQ]q
+J:[]Os+:u<KnY89LPUbCM2I1KN/WaVO,oG#6N0mN;ts;qF)l8?E,Y_n&8c6!CMITuBP;$kAn>Oa
+A7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[id9D_?[8cD9V8,YpT
+7J'"C6iTKos8,gn;s@9]7K,dU8,l-[8cME_97BQ/9hnGZ:f("e;cHat<``F,>$P<<?XI5N@qB4a
+BPD6uD/O<4F*)PKG^=^bIXm!%KSG8=MN!RVOckroQ^F84StD^NUo(&hWiW>+Yd:^F\%0)_]t_A"
+_o9X:aihoRcHstfeCE1'g"P6;hV[8Mj5]7`k32'olKmm)mf2_`nF?)?oCV\Jp%J+RrV-BgrqcQi
+rqucoo_sFAO8j_~>
+JcC<$O8nnPrVc`nr;6Njs7uZhEqf;$p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t``Mi!7EKnFr,IXQQhG^":P
+EcH#8D/3m"Bl\KLN1$]drQt>enBh3]&C/PFbfn5Na2Z*:_ns4(^:jKXqn<!As1A6@s1A?Frk/6D
+s1ABE])92=]Ec'[\[f;^\[qUIq76U;])B&C\%&rW\@B#W[f3]6ZiIH1ZN%9,Z3@M;Yd(F:riu4'
+o!8D'Za9Y<!42[3-aU1ebKS8Wd*^=le^rF+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nc&([oCW%T
+!quB_rV6Egs8)WirVZTlir8cPqu$6drVHKgqtU0brq?9_rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BUJ
+s6'IGroX7B!9F.>!TN);i"4f&hVI#CgtUQ:g"G$0f@JLOe/$N]dF$=ecd'h\bfe2PaiMQD`l5p8
+_u@L`_8*h#^:h1l]=PP_\$i`Qd/X$5rjVp;qR?4/p:1?JEcH)<DuOVcD/=!'C2%BqBP1phAS#C_
+A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDrqus&Atrs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]R
+oL/IAa8c.Nrk/*@lb<Bfs$lrWs%!,]r_!2`IS<I1:/=\_;,U=k<)lt"=BSd2>[1TB?t!MSAS#Lf
+BkqO&DfB];FEVkRH@1-iJ:`E-L5:\EN/is]P*M?#R@B_<TV8-VVPgDoXfen5Za@0M\\#Mg^VRe*
+`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTj5oFdkiq?tm-O--s6g?bnac8Bo^qhLp@e7[q#C0iqY^6i
+r;HTdrdk*1s*t~>
+JcC<$O8nnPrVc`nr;6Njs7uZhFSGM&p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t``Mi!7EKnFr,IXQQhG^":P
+EcH#8D/3m">[_2]FaAh-QBqH8!1*PLlBVI9Pl?mFP5^UDP4k%;P5g[?P5^[EP5UO>OSk.?NfX*u
+qi1N6!KE-=NVAA6Mi*FNrf$i7oo/m.!fW%rrJgf8s,6Z2s,Hr:rf7&=rJiFiNfT6_O-#IHbg+M\
+dF6Uqf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9rpg*]o`"Lbp@n=[q#C0iqYU0gr;?NQrqZNi
+r:p0fqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QDOlMg&JkQ'fFk5XNCjSn0?io0mp&Du@$
+h;-lAgY1B7g"=p.f%'cL(=U^ZdEp4ccHa\YbKJ&MaN2EA`Pod5rk^q:^q[Xu]tD"i]",>[[^NTm
+e'umuf%8R-g"P07gt^`AhV[8MioB+\k3(sll0@R"lKmm)mI'E2nFH/Ao_%qQr-%Lfrf$Q1"`n^(
+EH#jqD@gZ$CMR[!BkV0mAnGUcA7T3L@KBnFra5\3!+#S/!aAi3r`T8'!*B,"s&K(ur_rhps&&_k
+r_NPhr([2br_*,\r^m&Zq+(BQr'g6Gpd<+%rf-Z4l];'7s$lrWs%!,]r_!2`IS<I1:/=\_;,U=k
+<)lt"=BSd2>[1TB?t!MSAS#LfBkqO&DfB];FEVkRH@1-iJ:`E-L5:\EN/is]P*M?#R@B_<TV8-V
+VPgDoXfen5Za@0M\\#Mg^VRe*`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTj5oFdkiq?tm-O--s6g?b
+nac8Bo^qhLp@e7[q#C0iqY^6ir;HTdrdk*1s*t~>
+JcC<$O8nnPrVc`nr;6Njs7uZhEVK2#p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t``Mi!7EKnFr,IXQQhG^":P
+EcH#8D/3m"5sn".7n-2I;#*oY;#*oX:B"&d;#a>i:B"&\:Adoe:&n#^:Amud:'OEf<)Z[m;uTbq
+<V'2i<Vobm;u]bm;uKVi;u]f!<E<.#qGd;k-WF)GbKS8Wd*^=le^rF+g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nc&([oCW%T!quB_rV6Egs8)WirVZTlir8cPqu$6drVHKgqtU0brq?9_rq-6^rUU!Y
+s7$!Us6fpSrp9[Ns6BUJs6'IGroX7B!9F.>!TN);i"4f&hVI#CgtUQ:g"G$0f@JLOe/$N]dF$=e
+cd'h\bfe2PaiMQD`l5p8_u@Lo_8*h#^:h1l]=PP_\$i`QF)uGFG'8(RG^+LZH@(#<Hld`bIt*!"
+JqAW-KS5&5L5(J>Ll$tGMMmFPNK0'\Oo.QF;XRKX<!H9BEcH)<DuOVcD/=!'C2%BqBP1phAS#C_
+A,]p<@:9(As'>\2r`fM/>$Co.s&]8&rDrqus&Atrs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]R
+oL/IAa8c$:!*&holW!mQs$lrWs%!,]r_!2`IS<I1:/=\_;,U=k<)lt"=BSd2>[1TB?t!MSAS#Lf
+BkqO&DfB];FEVkRH@1-iJ:`E-L5:\EN/is]P*M?#R@B_<TV8-VVPgDoXfen5Za@0M\\#Mg^VRe*
+`Q$!@bKS8XdF$Fmf%8R.g>(N@i8EVTj5oFdkiq?tm-O--s6g?bnac8Bo^qhLp@e7[q#C0iqY^6i
+r;HTdrdk*1s*t~>
+JcC<$O8nnPrVc`nr;6Njs7uZhs7ZNerq14%oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/3p$C2@s;Kp&1:bg=`3dI5Eocd'h\bfn8PaN)<=_ns7*^:jHWr4W*Bs1A6@"hVF\]tD#V
+]`>_A]D]AC]=RsO!4qp8qmlsA]"5G^\brl9\,<`>\[],X[^Q1C!4;[0rj2C*s0;R-s0;.#rj)^4
+Za6t7Zhq*aZa@p#cHjndeC<($f\5*8h;7)JiT&t[k2tjkl0@U$m-X60n*ol<o(2MGp%A%Pp\4[^
+s7uZjqtp?ir;GURq>L3gq"t$drV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6K^MrosIH!9a@D
+!p/M(ro4%=iVqaHhqm5Gh;$f?g=k64f[na+ec+&%e'cXkd*M^:*R2gObK@rJaN)<>`Pf[2_SO%&
+^V7Co]Xtbc\[],os8AGd\,No7\+dE(\HHqmEH#jqD@gZ$CMR[!BkV0mAnGUcA7T3L@KBnFra,_5
+?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([/as%E5]rCQuZq+(?Pr'g6Gr'SI'rO`'A
+q7Z10!_#RJrC6o[8P/nR!D?,c9n,o6:f("e;c?Xq<``C+>$G6;?=.)L@Us%^BP;-rD/O93EccGI
+GBnL^I=Hd!K8#&9M2[FTOHPfmQC+,1SXuLJUnsufWiN8)Yd1UC[^`l[]Y;.s_SjF6aND]NcHjnd
+eC<($f\5*8h;7)JioB+]k3(smlKdg'mI'H3nF?PL!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s,[21~>
+JcC<$O8nnPrVc`nr;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/3p$>[LuRE-?_gQM-[0Q33D:PEYs.s,m;Dp5oE>Oco^+qNCf@rf[8Cq2kN8qi:N4rf-u<
+r/U`8qMYE6repi8r/CT4oS`d.rf$f8rf$f6qMbH6$BC++NfB'[O,f6[rf6r<0TaK&cHjndeC<($
+f\5*8h;7)JiT&t[k2tjkl0@U$m-X60n*ol<o(2MGp%A%Pp\4[^s7uZjqtp?ir;GURq>L3gq"t$d
+rV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6K^MrosIH!9a@D!p/M(ro4%=iVqaHhqm5Gh;$f?
+g=k64f[na+ec+&%e'cXkd*M^:*R2gObK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[]-Idk9/#f%/L+
+g"G*6gYCT?h;7&IiSrqZjlYaikiqBtlg!j'mHs?0n*oo=oCV_Lq#,C'NW4t/N<F9AEH#jqD@gZ$
+CMR[!BkV0mAnGUcA7T3L@KBnFra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([/a
+s%E5]rCQuZq+(?Pr'g6Gr'SI'rJgN2m>h<;7Rm>H!_>mSr^m2a9`@b9:/=\_;,U=k<)lt#=BSg3
+>[:ZC?t*SUAS,UhC27[(DfKf>F`qtSH@1-jJ:`E-L5:\FNK90aPEhH$R[]k>TV80XVl6VrXfen6
+ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5OekiqBum-O--n*fc9s7-3^o`"Lb
+p@n=\q#C0iqY^6ir;HTdrdk*1s*t~>
+JcC<$O8nnPrVc`nr;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ"VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/3p$5X@h,7nQ?J:]+&a:\%?Y:[q3Z:]+&h:]*ue:\.?[:]=,h:%qB`:Jh$dr_<Vk:/4MX
+:B"5l;uTbo<V9>j<W#es;c<9erDNAgr`/eo!EE1s<A2P?cHjndeC<($f\5*8h;7)JiT&t[k2tjk
+l0@U$m-X60n*ol<o(2MGp%A%Pp\4[^s7uZjqtp?ir;GURq>L3gq"t$drV??crqHEcr:U']s7?3[
+s7--YrU9dSs6]gPs6K^MrosIH!9a@D!p/M(ro4%=iVqaHhqm5Gh;$f?g=k64f[na+ec+&%e'cXk
+d*M^:0$VV`bK@rJaN)<>`Pf[2_SO%&^V7Co]Xtbc\[]+hF)uGFF`qqPGBeCYH?spbrd=`os*t'"
+s+:9's+LE+s+V#=LkpnEMMmCON/`jYO-0B-r_i/_p/M#i"EJL%E,Y_n&8c6!CMIQtBP;$jAn>Oa
+A7PUJ!F]C8?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&[id9D_?[8cD9V8,PjS
+7J'"G6cK*%<<-"p;sdNc77KcF7fl4Q8cD<_92,=ZInid9:f1+h;cHat='/U/>?kH??XR>PA7]@d
+BPM="DJsN8FEMbNH$XjdIt3-'KnbD?N/`m[P*;/sR$sM8StMdQV5L8lX0&P/ZEpsI\@K5a^;%M$
+`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nc/.\oCW%T!quB_rqQNhs8)Zj
+rqu`no_sFAO8j_~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k//Isl]jH$=FR
+F)c/;DJX*&BPD@/IuBYl\+\5=d/VE'cHXVXbf\#I`l5m6_SEq#^&>V@^&PbF]DT5C]Y2"k]`#PD
+]E,XUqn)m@!kZ%Tr4)g=q76C6$G!aY]",>\\$WQNrO)^8r4)d;s1&*<!4Mm7!OT34ZMLp)ZMh&t
+Z2q;;rj)[3Za0J7r3R]mcHjkbe'uq"f\,!5h;7&IiSrnYjlYail0@U$m-X60n*olHncA@Srq-?d
+p\4X]s7u]kqtp?ir;GOPqYg9gq"t$drV??crqHEcr:U']s7?3[s7--YrU9dSs6]gPs6K^MrojLJ
+kNDj,!p/M(ro4%=iVqaHhqm5Gh;$c>g=k64f[na+ec+&%e'cXkd*M^:)U6LLbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbcbl@[3rjVj9r3uF1n[TZ\EH,r9DJj<.Chmg$Bk_6oB4baeARo=]@U`bS@/aL7
+?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f,XH7/oWls89M,
+]_fAD^:h5N^A^V$8,l-[8cD>392&&S:/4S]:f1+h<)lt"='8[0>?kH@?X[DRA7]CeBkqL$DK'T9
+FEMePH@('hJ:W?+L51VCN/`m[P*D5uR$sM9T:r!TV5L8lXKA\1ZEpsI\[oGe^VI_(`Q$!?b0/&T
+d*^:ke^rF+g=tH>hr*JQj5f@bkNM0qlg4!+s6g!Xnc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFA
+O8j_~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k//Isl]jH$=FR
+F)c/;DJX*&BO,"XCNFfSN:rV'Q33D:PEYp-!0R8Dp5oE>Oco^+qNCf@rf[8Cq2kN8qi:N4rf.&>
+NfEssqi1H2s,Hf4rJU-'rf-r:qhtB2s,@DHNK0!YNK9-\NfB%sN[0\0cHjkbe'uq"f\,!5h;7&I
+iSrnYjlYail0@U$m-X60n*olHncA@Srq-?dp\4X]s7u]kqtp?ir;GOPqYg9gq"t$drV??crqHEc
+r:U']s7?3[s7--YrU9dSs6]gPs6K^MrojLJkNDj,!p/M(ro4%=iVqaHhqm5Gh;$c>g=k64f[na+
+ec+&%e'cXkd*M^:)pQUMbK@rJaN)<>`Pf[2_SO%&^V7Co]XtbcdJVH4eCE.$f\"m1g=tB;gtgfC
+hr*MRjQ,FbkNM-orTaFLs6]jS#k.<So(2MHpA"W1m#;"(nVnQ0EH,r9DJj<.Chmg$Bk_6oB4bae
+ARo=]@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS
+7f,XH7/oWls87lMNWP9%Nq/817fGpX8H29\8q0K-9heAX:Jakb;H$Op<`W:)=^#$7?!grI@Uiq[
+B4u!pCMds.EH6/DGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"?7GU84W`W2cr$YHY==[C3WW]Y2(q
+_Sa@4aN2NIc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-aoB!V#XYncA@Srq-?dp\4[^s7u]k
+r;6KkrVcBfJcCf2J,~>
+JcC<$O8nkOrr)ior;6Njs7uZhs7ZNerq14%oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdbfe/Ma2Q!6^q[Rq]",;YZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k//Isl]jH$=FR
+F)c/;DJX*&BL5!P7Rp!A9i+[Z:\.EY:\%9[:]+&h:]*ue:\%9Z:]=)h:%qE\:]=)p9hnDX9heAX
+;u9Mo;uK\o<V9>h<W5qt;uBPg;uT\h;tj5k<W6%u<?o`5cd:(geCE1'g"P3:hV[8MioB+]k3(sm
+lKdg'mI'H3nF?MK!V>s_o`Fj]p\jmeq>^<gqu-HjrSRVNrVHHequ-Biq>9sdp\smap&=U`oDS7[
+nc/+Wn,MhUmJcJPli68LklU)3kPjTFjlGM%irS/urnn@FhVR)EgtUT;g=b-2f@SU(rmV,#da?Ih
+ci23/c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=POlrc0$#FEDYKG'A.TH$O^^H[L3fI!pEmIt<0&
+JqJ]/K`6Z9L51S@M2@+JMi<XTNfT6`r^-T^mSigYr)4VVEH,r9DJj<.Chmg$Bk_6oB4baeARo=]
+@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f,XH
+7/oWls7oXp<;KMp<)Z`d<;oAd8,l-[8cD>392&&S:/4S]:f1+h<)lt"='8[0>?kH@?X[DRA7]Ce
+BkqL$DK'T9FEMePH@('hJ:W?+L51VCN/`m[P*D5uR$sM9T:r!TV5L8lXKA\1ZEpsI\[oGe^VI_(
+`Q$!?b0/&Td*^:ke^rF+g=tH>hr*JQj5f@bkNM0qlg4!+s6g!Xnc&([oCW%T!quB_rqQNhs8)Zj
+rqu`no_sFAO8j_~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eo`=^VrpjdnnF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iZSt2@>R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8D/3m"B5DX7JrlP*bkTTSck4ULcHXSWbK7lH`l,d3_8*dur4Ms@rk/9CrOW$A!kl7Zr4N*C
+qRc^=!P>r6\c95@\c02?\Hf^V\@B#W[^H+A!4Dd6!4Vp:!P,f@\c0)>\$l:D!jo;>r3QF1!42O-
+s0;4%s0Ma2rj)X2Zhgs-Zi.6Pc-F\`daZdtf@\g3gtgiFi8WeWjlY^hl07L!m-O-=mgS^Uo()DE
+o_%nNp@n=\q#C0hqY^6hr;?NLrqcTjr:g*eqYg6eq#:$epAFU`o`"I\o)J7[nGVhUmf2\Rm/QAO
+lM]rKki_..jp1#/jQ#:[io0mp!T2c5h$2ZhgY1B7f`'JJf%&:"e'lamdEp4bcHXVXbKJ&MaN2EA
+`Pod5_SX.)^V@Lr]ZU9RS,]tp\G`o2\F6sK\8cM-Df0H0D/=!'C2%BqBP1phAS#C^@q&nU@:9(A
+!a]/<r`fM/>$Co.s&]8&rDrqu!*&nqs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]RoL&[H_uKSF
+r4Mg<o=b2orC?lY!(m/^HV7%+9heAY:f("e;c?Xq<`W=*=^,-9?=.)K@Uit\B4u!pCi4-0EH?5F
+GBnL]I=?]tK7nu8M2R=QO-,TiQ'du/S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WLcHaea
+e'uq"f\,!6h;7&IiT&tZk2tmlkn<:Im-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUp/@s,R,0~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eo`=^VrpjdnnF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iZSt2@>R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8D/3m"B3\n[Dg-\dQ2$^1Q33D:P`u'/!0R8Doo]6:rfR)@r0.,CrfR#<rK$f8qMkK7s,Hl8
+rf$o:rJgZ4rJgW3rep0&!f`.tqMYB5s,?r:!0$l:rf7&=r/MiCcHsteeC<($f\5*8h;7)JioB(\
+k2tmll0@U$m-Xf@%.NfXo(2MGp%A%Pp\4[^s7uZjr;6Hjr;GINqYg<hp\XpcrV??crqHEcr:U*^
+rq$*Zs7--YrU9dSs6]gPs6B[MrTOCIkNDj,#Nb%-j5].YiVqa9hqn@g#2Itfg=k64rmrRLe^W*t
+e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7Cod*U1fr6lV7e^i=(f\+s3gY:N=h;7#Gi8WbW
+jQ5Oekih:1l43.Hm-X3.mdK]:o(2MHp\o?gNW3u:E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW@:<RC
+?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>j>j:]F2f:&dod9D_?\8c;3U8,YpT7J&tJ6c8s#
+NUr2%NrVZJ8,l*[8cD>/92&#R9hnJ\:f1+h;cHat<`iL->?kE>?XR;O@qB4aBPD6uDJjE5F*)SL
+H$XgcIXm!%KSG;>Mi<[WOckroR$jG6StD^OUo(&hWiW>,Z*UgG\%0)_]t_A"_o9X:aihoRcHstf
+eCE1'g"P6;hV[8Mj5]4_k32'o''efLmI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`np&9OBNrOV~>
+JcC<$O8nkOrVc`nrVQWks7uWg!Vc<eo`=^VrpjamnF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC!
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$^9XK&7tV50iZSt2@>R$O#$P)kW^Mi!7EKS+i+IXQQhG^":P
+EcH#8D/3m"B0epR7S-'CoM>$SqG.,e:\.?]:]!ug:]4&f:\%9Z:]=,h:&%K`:BF?g:]4&g9a=Ef
+9hnDX:K7<lp/Luj!`W0"q,I2j!E<"m;XIEY;ufqt<Zb>dcHsteeC<($f\5*8h;7)JioB(\k2tml
+l0@U$m-Xf@%.NfXo(2MGp%A%Pp\4[^s7uZjr;6Hjr;GINqYg<hp\XpcrV??crqHEcr:U*^rq$*Z
+s7--YrU9dSs6]gPs6B[MrTOCIkNDj,#Nb%-j5].YiVqa9hqn@g#2Itfg=k64rmrRLe^W*te'cXk
+d*L"_c-=JUbK@rJaN)<>`Pf[2_SO%&^V7CoE,T]7rc/HhFEDYKG'A.TH$O^^Hi8?lIK+fsJcC?%
+K+iolKnb;9LPUbCM2I4LN/`gWO-'?-s&/5_oi1cds)ArrDf0H0D/=!'C2%BqBP1phAS#C^@q&nU
+@:9(A!a]/<r`fM/>$Co.s&]8&rDrqu!*&nqs&/korD<Jhs%`Jds%NDbqb$iZrCH`SrC6]RoL&[H
+_uKI2!*&\ko2G]ZrC?lY!(m/^HV7%+9heAY:f("e;c?Xq<`W=*=^,-9?=.)K@Uit\B4u!pCi4-0
+EH?5FGBnL]I=?]tK7nu8M2R=QO-,TiQ'du/S=Z@HUSOcbWN*&%Yd(OA[^WfY]Y2(q_Sa@4aN;WL
+cHaeae'uq"f\,!6h;7&IiT&tZk2tmlkn<:Im-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUp/@
+s,R,0~>
+JcC<$O8nkOrVc`nr;6Njs7uZhF8,D%p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])UZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aMi!7EKnFu-IXQQhG^":P
+EcH&9D/3m#BPVF-I#4)`[.r&<d/VE&cHXVXbf\&K`l,d3_SEq#r4Mp?s1JBDrON0E]Y2"k]`#PD
+]_f;J]Xthh]=PS`\[f6E\c')C\[o>_\[h^L!4Vp8s0_d3rjMj9rj`!=!4r0?rO<$?[^NTO[/RB4
+['Tb=n$;u"!4)R0!4)L.qm%NS['\-)d*^=le^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nc&([
+oCW%Ts7QHerV6Egs8)WirVZTlh#@0Kqu$3crVHNhqY:'arq?9_s7H<^rUU!Ys7$!Us6fpSrp9[N
+!:'OI!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n-g"?;U%bB1[eC2mpdF$=ecHa\YrlYeoaiMQD
+`l5p8_ns:,^q[qis-s%tqRHO6ppfb&rj_uJ$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5
+?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g<I_>j>Cqn2a<
+otCDqr^ZuZs%32^!D?,c9n,o6:f("e;c?Xr<``C+>$G6;?=.)L@Us%^BP;-rD/O93EccDHGBnL^
+I=Hd!K8#&9M2R=ROHPfmQC+)0SXuLJUSOfdWiN8)Yd(OB[^`l[]Y;.s_SjF6aND]McHjnde'ut#
+f\5'7h;7)JioB+]k3(sml0I^&mI'H3nF?PL#P7T[p%A%Pp\ssfq>^<hqu-HlrUg)?s,R,0~>
+JcC<$O8nkOrVc`nr;6Njs7uZhFSGM&p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])UZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aMi!7EKnFu-IXQQhG^":P
+EcH&9D/3m#BO"qUBQABMMO+()lBVO;Pa%C-P4aq=P*(q+Oo(=?PQ$aEOnk+;O8=n5NW+q>NK0"n
+Nr=t:N;nn5N;\b6N;nn;Mu\e)N!,&tN/NYlMZA_8N<"q6N<#"<O8k7?N?ZZod*^=le^rI,g=tH>
+hr*JQj5f=akNM0qlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)WirVZTlh#@0Kqu$3crVHNhqY:'a
+rq?9_s7H<^rUU!Ys7$!Us6fpSrp9[N!:'OI!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n-g"?;U%
+bB1[eC2mpdF$=ecHa\YrlZ&!aiMQD`l5p8_ns:,^q\.=cd:%ddf%Ype/Hlgf\"m1g=k<9gt^`Bh
+Vd>OioK1^k3(sll2KrMlg4!*rpC*]nac8Bo_%s%G1MZQE=-Z'DJj<-Chmg$C&VcHB4h-S#@q=S@
+U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVm;#X8j:Adid9`@]^9)_E\8GPdS7f5^K7
+)Ap#NW5%<O7nV,NrVZK8,l-[8cD<_92,=ZInid9:f1+h;cHdu='/U/>?kH??XR>PA7]@dBPM="D
+JsN8FED\MH$XjdIt3-'KnbD?Mi<^YP*;/sR$jG7StMdPUo1/kX0&P/Z*UjH\@K5a^;%M$`5Td<b
+0/#ScdC1ieCN7(g=k?<hVd>Oj5f=akNM0plg4!*mdKW6nc/.boCV\Jp%J+RrqQNhs8)ZjrVZZno
+_sFANrOV~>
+JcC<$O8nkOrVc`nr;6Njs7uZhFSGM&p%@tLoCDJBnF,i6mHj0(l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1`bfe,L`l5j3^V7@m\[])UZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aMi!7EKnFu-IXQQhG^":P
+EcH&9D/3m#BL5'S77Tg<9i:U[o2,3Xo1o9\r)!Dhr(d5enkT0[r_EJfpJ(`b;#X8i:'"'arD!;e
+rD3Gmr)<Gk!`N&tqGmPps&K%tq,IDno2>$Ur)=tB<`[Mld*^=le^rI,g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)WirVZTlh#@0Kqu$3crVHNhqY:'arq?9_s7H<^rUU!Y
+s7$!Us6fpSrp9[N!:'OI!pJh1roOIIjQ,@]io8qrhuV`lrnRV1g]#n-g"?;U%bB1[eC2mpdF$=e
+cHa\YrlZ&!aiMQD`l5p8_ns:,^qXf+E,]`7EW0u7F*)MHG'A.TG^4R\H@($dI!g?jIt*$#JqAW-
+KS>,7KnbA=Ll$tGMi3ORNfK0^6:+RJmSi^Vq,@<5$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Q
+ra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([2br_*,\r^m&Zq+(BQr'g<I_>j4/
+!*&\koi(o\r^ZuZs%32^!D?,c9n,o6:f("e;c?Xr<``C+>$G6;?=.)L@Us%^BP;-rD/O93EccDH
+GBnL^I=Hd!K8#&9M2R=ROHPfmQC+)0SXuLJUSOfdWiN8)Yd(OB[^`l[]Y;.s_SjF6aND]McHjnd
+e'ut#f\5'7h;7)JioB+]k3(sml0I^&mI'H3nF?PL#P7T[p%A%Pp\ssfq>^<hqu-HlrUg)?s,R,0~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq11$oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ#VPKu\TUq[CR?s2'P*(fbN/EIIKnFu-Isl]jH$=FR
+F)c/:DJX*&BP2+%H%CsDWkJ8Vn'DZmcHa\Ybfe/Ma2Ps6_SO%%^&>V@^&PbF]D];E]=bhj]Y+3V
+s1ABE])9/J]Xthh]=PP`\@K/[pppF9!P,f?\HTRT\@B#Wr3cU4rO)U2!4Dg7!4Vm9s180>$b3aX
+\@8oT[C*BK[JdH4Zgb:"ZN.B+Zi%*WZd-qFdaZguf@\g3gtgiFi8WeWjlY^hl07L!m-O--n*fc9
+o()DEo`"Lbp@n=\q#:*hqYU0hr;?NIrqcTjr:g*eqYp<eq#:$epAFU`o`"I\o)J7[nGVhUmf2\R
+m/QAOlM]rKki_..joOT)ro=%<!9*q8!T2c5h#Z<crn7D+f`'J4f%&:"e'c[ldEp4bcHXT4b6uJ7
+aN2EA`Pod5_SX:l!h6[.qRHO6ppf_%r4!,SE,TW3D/=$(CMIS_BE;aXrac=F@q/tW@:<RC?NOP>
+?2e(1>?Y50=TV],=8c/$<E)rr;u]bq;>j>k:]=,e:&dod9D_?\8c;3V8,PjS7JT?ds7j5']_T87
+^A^Y&8,u6\9)hP69MJ5V:/=\_;,U=l<E<.%=]np4>[:]D@:E_WAS5[jCMRd)E,fo?Fa&(VH[U?n
+JV/W1LP^nINK90aPa.T&R[]k>Tq\?ZVl6VsXfnt7ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Opf%8U/
+gYCWBi8N\UjQ5OekiqBum-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*0s*t~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq11$oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ#VPKu\TUq[CR?s2'P*(fbN/EIIKnFu-Isl]jH$=FR
+F)c/:DJX*&BP1RZASu[<Kol.tl';F:P`q=-P4Oe9P5UO?P5UUDP5UO>OSk1:Nqn\7NrG%3Nr=q<
+NfF!r!0-f5s,@#;rf$o:qi13+!/pf7p58p0rJgf8r/L`:.Z]UMcHsteeCE.%f\5*8h;7)JioB(\
+k2tmll0@U$m-X60n*ol<o(2MGrq-?dp\4[^rqZTjqtpBjr;G@KqYg<hp\XpcrqZEcrqHEcr:U*^
+rq$*Zs7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g&]mZrmqY2e^W*t
+daHOjd*L"_c-611,Ke-LaN)<>`Pf[2_TL*Ic-Ob`dF-Lle'lgrf%/L+g"G*5g]#t<h;7#Hi8WbW
+jQ5Oekih:1l4<4Im-X6/n*ff;o(2PIpNG#F$ZU-(DJj<-Chmg$C&VcHB4h-S#@q=S@U`bS@/aL7
+?<pk9>QS,5>5hY+=BAT&<WZ9#<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\8GYjS7f5^N7)/cuNW5%<
+O7nV-O8_ZL8,u6\9)hP69MJ5V:/=\_;,U=l<E<.%=]np4>[:]D@:E_WAS5[jCMRd)E,fo?Fa&(V
+H[U?nJV/W1LP^nINK90aPa.T&R[]k>Tq\?ZVl6VsXfnt7ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Op
+f%8U/gYCWBi8N\UjQ5OekiqBum-O--s6g-\nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*0s*t~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq11$oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]"#2VZa-g<XfJJ#VPKu\TUq[CR?s2'P*(fbN/EIIKnFu-Isl]jH$=FR
+F)c/:DJX*&BP0Os6UjU:8l#+Vnkf-Xq+^ocqbI/erD<Jhr(d5enP9'Zr_EJfpeLib!`2Zgr_EGe
+"\qcd:/+L]:]FAm<;]\l<;ohr<<-"d<<6&tmo&aUrDY1FcHsteeCE.%f\5*8h;7)JioB(\k2tml
+l0@U$m-X60n*ol<o(2MGrq-?dp\4[^rqZTjqtpBjr;G@KqYg<hp\XpcrqZEcrqHEcr:U*^rq$*Z
+s7--YrU9dSs6]gPs6B[MrTOCIkNDj,!TiDAj8\*=iVqa9hqn@g!SlH/g&]mZrmqY2e^W*tdaHOj
+d*L"_c-611'["P=aN)<>`Pf[2_JF+.DfBW6E,kkt137PZG'8(RG^+LZH@(!dH[L3hI=HcuJV&K+
+K7nr4L4tD<LkpnEMMmCONK0$[O[;rDmSi[UpeqT#EH#i6DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Q
+ra,_5?![G7!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVhr([2br_*,\r^m&ZqFCHQr'gEL^]3t,
+!*&\kp/M#]s%!,]r_!2`InWR2:/4S]:f1+h<)lt"='8[0>?kH@?X[DRA7]CeBkqL$DK'T9FEMeP
+H@('hJ:W?+L51VCN/`m[P*D5uR$sM8StVmSV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1j
+e^i@*g=tE=hr*JQj5f=akNM0qlg4!*mf2_ZnF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFANrOV~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq14%oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8![r]",;Y['Hp>XfSP$Vkp2_TUq^DR@';*P*(fcN/EIIL4k21J:;onH$=IT
+FE2A>DJX*'BP2$qFaJh*T!-E9dJ;,hchYrfcO\=Gc-4DTaiMK?_ns:+^V9ZZqRlsC]=\!P!5/<E
+!5/6C!5/0?"h_I[]XtcR\H'/6\c95A\[q[K!4`$;qR6@0rO)X3s0_j7r3ud<](rl:\Gir=[C!=?
+[K!W6Zh1O-Z*L[AZa-t3ZR)o`ZE_a'dF6Uqf@\d1gYL`Di8N\UjQ5Oekiq?tm-O--n*fc9rpg*]
+o`"O`p&Ojcq#C0iqYU0gr;HTHrqcTjr:p0fqYg6dq#:$fpA=O_o`+O\o)J7[nGVhUmJuYQliQM<
+lMg&JkQ'fFk5XNCjSn3>iW.s:huV`lrnRV1g]#n-g"?;U"kM5ReC2kFd1F[NcHa\YbKJ&NaiMQD
+`l5p6s8TS(\Gs&5\Epd'\-m:qDf0H0Ci!m&C2*Z\!G?$DAH?=OraPn9!+>e5!a]/<r`fM/>$Co.
+!a&N*r`9&!s&Aqqs&/korD<Mir_EDdr_3;aqb$iZrCHcTr'pTQr'\6upUg=8q7ZR;r^R#\8P/nR
+HV7%+9heAY:f("e;c?Xq<``C+=^,-9?=.)K@Uit\B4u!pCi4-0EH?5FGBeF\I=?]tK7nu7M2R=Q
+O-,TiQ'[l-S=Z@HU84ZaWN*&%YHY@?[^WfY]Y2(q_Sa@4aN;WKc-F\`e'uq"f@em4h;-uHiSrnY
+k2tjkkm6S?m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCc1J,~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq14%oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8![r]",;Y['Hp>XfSP$Vkp2_TUq^DR@';*P*(fcN/EIIL4k21J:;onH$=IT
+FE2A>DJX*'BP1OVA8#q*Iu'BeQhcpIQ1L=APl[,5q3(0.qi^oArf[8Cq2kQ9qMtE3rf6u;ooAp/
+s,I)=oS`j2N/[Ljrepi:pl,31s,?l6!/g`5!/gc7s,Hr8rf-r<,)sprdF6Uqf@\d1gYL`Di8N\U
+jQ5Oekiq?tm-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0gr;HTHrqcTjr:p0fqYg6dq#:$fpA=O_
+o`+O\o)J7[nGVhUmJuYQliQM<lMg&JkQ'fFk5XNCjSn3>iW.s:huV`lrnRV1g]#n-g"?;U"kM5R
+eC2kFd65k&cHa\YbKJ&NaiMQD`l5p=ai_fNc-FY^d*^:jdaQ[peCN4'f\+s3g=tE<h;-rEi8EVS
+jQ,FbkNM-orot!Zm-O--mdKW7o()DFp%Qjn$ZU-(DJj<-Chmg$C&VcHB4h-S!G#^>@fKj:@/aL7
+?<pk9>QS,5>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E\8GYjS7f5^Q7(rWrNW5%<
+O7nV/O8_WN84cDP8pa3)9MJ5V:Jakb;H$Ln<E<1'=]ns6>[CcF@:E_XAS5[jCM[m+E,fr@G'A1W
+H[U?nJV/W1LP^qJNfT<cPa.T&S"-(BTq\?[Vl?\tXfnt8['mHS]"G_k^r"".`lQ9FbK\>ZdF6Uq
+f@S^0gYL]Ci8N\UjQ>Ufl0/K=lg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*0s*t~>
+JcC<$NrSeOrVc`nr;6Njs7uZhs7ZNerq1$uoCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8![r]",;Y['Hp>XfSP$Vkp2_TUq^DR@';*P*(fcN/EIIL4k21J:;onH$=IT
+FE2A>DJX*'BP0Rs77I2G!DQDg:B4/h:]+#h:\di`:B=9fqG.&dr(d5er_WSir(d2dnkT0[r_EJf
+peL`_rD*2`s%`GerDWYor)<Mmr_j##<E)pt<E/Nh!E<"c;Y3oe<$BT8dF6Uqf@\d1gYL`Di8N\U
+jQ5Oekiq?tm-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqYU0gr;HTHrqcTjr:p0fqYg6dq#:$fpA=O_
+o`+O\o)J7[nGVhUmJuYQliQM<lMg&JkQ'fFk5XNCjSn3>iW.s:huV`lrnRV1g]#n-g"?;U"kM5R
+eC2kFd2^NZcHa\YbKJ&NaiMQD`l5o4CM[j*Df9T5E,]grE\VWWFEVhOGBe@XH$XgaI!^6gI=?Zr
+J:W<(K7ei2Knb;:LPUbCM2I4LN/`jXO-*@=mSiXTq,@8l$ZU-(DJj<-Chmg$C&VcHB4h-S!G#^>
+@fKj:@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E\8GYjS7f5^Q
+7(rWm<<-"m;ts>k7fl4Q8cD>/92&#R9hnJ\:f1+h;cHat='/U.>?kE>?XR;O@qB4aBPD6uDJjE5
+F*)SLG^=^bIXm!%KSG8=Mi<[WOckroQ^F84StD^NUo(&hWiW>+Yd:^F\%0)_]t_A"_o9X:aihlP
+cHstfeCE1&g"P3:h;@/LioB+^k3)!n#jUaBmI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?
+s,R,0~>
+JcC<$NrSbNrVc`nrVQWks7uWg!Vc<eo`=^VrpjjpnF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iZT:MI?R$O#$P)t]_Mi!7EKnFr,IXQQhG^":P
+EcH&9D/3m#BP)"!GCGF7UU&8FdJ;,hchPj!cd'h\bg"ASaN)6:_ns7*^:jNYqRupA!5&0?"hVF\
+]tD#V^&PbB]*>p[]=beg])9)=\G3W7])0&:\,a#4[f!N1[K!W4[/m_FrODd9rjr'=s0r'<rNu[5
+[JmQ5ZhUj+Zi790Zi7?3ZNIM>Za0P9-dL)ddaZguf@\g3gtgiFi8WeWjlY^gl07L!m-O--n*fc9
+o()DEo`"Lbp@n=\q#:*hqY^6hr;?NFrqcTjr:p0fqYg6dq#:$fpA=O_o`+O\o)J7[nGVeWmd9E?
+liQM<lMg&JkQ'fFk5XNCjSn0@io/kqhuV`lrnRV1g]#n6g"=p.f%/C$eC2kFd1+IKcHa\YbKJ&M
+aiMQD_#FDDm^VSnq7$TIDf0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`fM/>$Co.!a&N*
+r`9&!s&Aqqs&/korD<Mir_EDdr_3;aqb$iZr^ciTr'pTQr^=I"ot1+6s1SEErk8-A"@l!R8P/nR
+!D?,c9n,o6:f("e;c?Xr<``C+>$G6;?=.)L@Us%^BP;-rCi402EcZ>GGBnL^I=Hd!K8#&9M2R=Q
+O-5]lQC+)0S=ZCIUSOcbWN3/(Yd(OA[^WfY]Y;.s_Sa@4aN;WLcHjkbe'uq"f\,!6h;7&IiT&t[
+k2tmll0@X%mI'H3nF?PLs76Edp%A%Pp\jmeq>^<hqu6NlrUp/@s,I&/~>
+JcC<$NrSbNrVc`nrVQWks7uWg!Vc<eo`=^VrpjgonF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iZT:MI?R$O#$P)t]_Mi!7EKnFr,IXQQhG^":P
+EcH&9D/3m#BP(IWASZ@5JW'Gmq3D#Gns0BCP`q=-P3nD0P5UUDP5^U>OSk1:Nqn\7Nr=t.Nr"b8
+Npr#-N<#"8NW4t;NVSP'MZA_8N<P9!N/W[Rrf&;Nd*^:ke^i@)g=tE=hVd>Oj5]7`k3)!nlKdg'
+mI'H3nF?)?oCV\So`Fj]p\sseq>^<hqu-HjrR_&FrVQNfqu-Biq>0mcp]'sap&F[aoDJ1Znc/+W
+mfMqEmJZAQlg!d7l2TrIkPjWDjT+B@ir\6!iVqa9hqn@g!SlH/g'ZNcf@SU)e^W*tdf.W(d*L"_
+c-4ASb/qcHaN)C$aU626c-=P[d*^7idf.]8eCE.%f\"m1g=k<:gtgfChr*GPioK1^kNM-ol2KrX
+lg4!*mdBQ5nac8Bp%A(*N<O9>DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL7?<pk9>QS,5>5hY+
+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E]8GPdR7f5^S7(rWpNW5%<O7nV0Ns%sD84cDP
+8c_RYr_7l;:Jakb;H$Ln<`W:(=^#$7?!^lG@U`kZAnYjmCM[m,EH6,BG'A4XI!pKpJqJc3Ll%%K
+NfT?eQ'Rf*S"-(CTqeE\Vl?`!Y->1;['mHS]"Gbl_8=+/`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_V
+jlY^hl07L"m-X60n*olIo)J:bo_%nNp@nO\s7u]kr;6KkrVcEgJcC`0J,~>
+JcC<$NrSbNrVc`nrVQWks7uWg!Vc<eo`=^Vrpk!tnF,f4m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[T#SZa$a:XK&7tV50iZT:MI?R$O#$P)t]_Mi!7EKnFr,IXQQhG^":P
+EcH&9D/3m#BP'Os6psI58PN&X:JO[a:]+#h:\[ca:]F5k:\mid:]!oe:]=2i:]!od:[q3Z:]=)h
+:%qE\:]=,d9`e'a:A@Tb<;fbn<;TVn<<#l%;H$Oo;cHarnl>]hmS`[U-dL)ddaZguf@\g3gtgiF
+i8WeWjlY^gl07L!m-O--n*fc9o()DEo`"Lbp@n=\q#:*hqY^6hr;?NFrqcTjr:p0fqYg6dq#:$f
+pA=O_o`+O\o)J7[nGVeWmd9E?liQM<lMg&JkQ'fFk5XNCjSn0@io/kqhuV`lrnRV1g]#n6g"=p.
+f%/C$eC2kFd14OLcHa\YbKJ&MaiMQDD#S2aCi+'.DfBW6E,or=EcZ>FG'8(RGlDsgHMr14I!pEl
+It3'#JqAW-KS>,7L51P?Ll$tGMi3ORNfT6`m8NOSq,@2j#$#V\DJj<-rbDOLC&VcHB4h-S!G#^>
+@KKtG@/aL7?<pk9>QS,5>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E]8GPdR7f5^S
+7(rWk<<-"m;u'Aq7n?0B8cD<_92,=ZInid9:f1+h;cHdu='/U/>?kH??XR>PA7]@dBPM=!DJsN8
+F*)SLH$XjdIt3-'KnbD?Mi<[WP*;/sR$jG6StMdPUo(&hX0&P/Z*UgG\%0)_^;%M$_o9X:aihoR
+cd:(geCE1'g"P6;hV[8Mj5]7`k32'olKmm)mdKW6nc/1[o*+dZp%J+RrV6Egs8)Zjrqu`np&9OB
+NW4M~>
+JcC<$NrSbNrVc`nr;6Njs7uZhFnbV'p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Oo\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/=!%BP1mmFF&OuR]3gqdJM;ichYrfcN)8ibmVb=aiDB=_ns:+^V9][q7QjB]=\$Q"hVF\
+]tD#U]`PjY]_oAF]Xteg]=RRDs1/6A])0#<\Giu2[edB([/m_Frj_m:qmug<s0r*=[f3Z8[^H+A
+s0MO,s0Dm7Za6sDZi7?0ZQuoaZHpqGe'uq"f\,!5h;-uHiSrnYjlYail07O#m-X60n*olHncA@S
+rq6<b!;HHes7uZjr;6Hjr;G4GqYg<hq"t$drV??crqHEcr:U']s7?3[rpg$XrpTmTs6]dO!pf.:
+rosIH!9a@Ds5a7Aro47CiSi_Qhr!;ih#Z<crn7_4f[na+f%&:"e'e6C$..#DcHXSVbK@r?s6dD^
+\bET:Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!FB(2>lS%.>5hY+=BAT'<rZ2"<;fbq;ZBVm
+;#a>j:Adid9`@]^9)_E\8GPdS7f5]errBY']Cro:^&,MG]gt[cr^mAf9MA/T:/CjcIo0-C<)lt"
+='8[0>[1QA?X[DRA7]CeBkqL$DK'T9FEMePH@('hJ:W?+L51VCN/`m[P*;/tR$sM8StMgRV5L8l
+X0&P/ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8B
+o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*/s*t~>
+JcC<$NrSbNrVc`nr;6Njs7uZhFnbV'p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Oo\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/=!%BP1m]@q]_&H\@CWQi!*JQ1L=APl[,5qNCQ7!0I#=qi^oArf[8CqN1W9qi:K3s,R&;
+nW*X/rf6l8!KN00N;nn:NqSJ4Mu\e8N;&51MZ/M8N/NYoNVeYYMpKeue'uq"f\,!5h;-uHiSrnY
+jlYail07O#m-X60n*olHncA@Srq6<b!;HHes7uZjr;6Hjr;G4GqYg<hq"t$drV??crqHEcr:U']
+s7?3[rpg$XrpTmTs6]dO!pf.:rosIH!9a@Ds5a7Aro47CiSi_Qhr!;ih#Z<crn7_4f[na+f%&:"
+e'e6C)plpVcHXSVbK@rGa2l?Dai_fMc-=S]d*^7idf.]JeCE.%f\"m1g=tB;gtgfChr*GPj5f=a
+kNM-ol0@Nulg4!*mdBQ5nac8Bp%J.)N<F0;DJa4hCB80arb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/
+>Q7n+=TV],=8l8#<W?%s;u]bq;>j>k:]=,e:&dod9D_?\8c;3U8,YpT7D&R"N;&>3NrG+5Nr+k>
+N^u]4r^mAf9MA/T:/CjcIo0-C<)lt"='8[0>[1QA?X[DRA7]CeBkqL$DK'T9FEMePH@('hJ:W?+
+L51VCN/`m[P*;/tR$sM8StMgRV5L8lX0&P/ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1jeCN7(g=tE=
+hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*/s*t~>
+JcC<$NrSbNrVc`nr;6Njs7uZhG5(_(p%@tKoCDJBnF,i6m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Oo\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EFGKnFu-Isl]jH$=FR
+F)c/:D/=!%BP1mC6psI67nHENr_EGgr_WSiq,$ubr_NSjqbI)crD*>fr_WSir(d5en4s!Zr_EJf
+peL`_r_E8`s%`;ar)E\pr)EMks&B"sr_ibp"&`&r<:a,i;ufkc;YF$4cdC.heCE1'g"P3:h;@/L
+ioB+]k3(sml0I^&mI'H3nF?MK!V>s_p&F^cp\jmeq>U6gqu-HjrRUuErVQNfqu-Biq>9sdp\sma
+p&=U`oDS7Znc/+Xn,MhUmJZAQlg!d7l2TrIkPjWDjT+B@is4T&iS`YOhqn@g!SlH/g'ZNcf@SU)
+e^W*tdf.W&d*L"_c-4ASb/nC6D#S2fCi+$,DfBW5E,]i;EcQ5CF`qqPGBeCYH@#O:#(1iIIXclu
+rdt0&!/1?*",;SdM#N5:MMmCONK0']OmZ0;<;KPk<;ff"Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;
+?srt@!FB(2>lS%.>5hY+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Adid9`@]^9)_E\8GPdS7f5]err?$h
+<<-"n;u0Gq;b0GNr^mAf9MA/T:/CjcIo0-C<)lt"='8[0>[1QA?X[DRA7]CeBkqL$DK'T9FEMeP
+H@('hJ:W?+L51VCN/`m[P*;/tR$sM8StMgRV5L8lX0&P/ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1j
+eCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*/s*t~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4k20Isl]jH$=FR
+F)c2<DJX*'BP1miCNXuVP+Sl"dF%m=rQkDg!71Yk!mf0;rlknrb/hT@_o'@-^qRLp]_T8@]E#SB
+])TDA]`>_C^&PbB]*>p[]Y(kf])K5?\G!H5])&u;\,s.J\+R03[C!<IqR#t(!k,SIrj_j9r4;m<
+"LtqM[^H+CrNuU2!OB'2Z2h0-ZSJhnZa@'F['[0GZF&!+daZguf@em4gtgiFi8WeWjlY^gl07L!
+m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqYU0hr;?NCrqcTjr:p0fqYg6eq#:$epAFU_o`+O]o)J7[
+nGVhUmf2\Rm/QDOlMg#Lki_..joXZ*jSn0bio/kSi8<GKh;-lAgY1B7g"=p.f%&=#eC2jndEp7d
+cHa\YbIdfC\EUQt\--_fDJa4hCB80arb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/>6%k*=TV],=8l8#
+<W?%s;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V8,PjV7CiHu](N]/]`,VC^&u&>8P/nR!D?,c9n#i5
+:f("e;c?Xq<``C+=^,-9?=.)K@Uit\B4u!pCi4-0EH?5FGBeF\I=?]tK7nu7M2I7PO-,TiQ'[l,
+S=Z@HU84W`WN*&%YHY==[C3WW]Y2(q_Sa@4a2lEHc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$
+m-X60nGi%YncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC`0J,~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4k20Isl]jH$=FR
+F)c2<DJX*'BP1m\?=[_gG(,42Q^@W9rKZr>"-o+7PP^O:OT:L<Oo1C@PQ$aEOnk+;O8=n4NW5%;
+NUVr.N;S\8Nr"b(Mu\k:NqJD3N;/;2MYrA:MN!LRN/WbqN$sUCd*^:ke^i@*g=tE=hVd>Oj5]7`
+k3)!nlKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>^<gqu6NkrRCiCrVQNfqu-Biq>9sdp\smap&=U`
+oDS7[nc/+Wn,MhUmJcJPli68LklU)3kPjTFjlGM%j!<XCiS`YOhqm2Fgt^Z<g=b03f@SU(e^W*t
+da?Ihd*L"_c-4B1`BqVdaN;QHbKJ/Ucd:%ddF6Ome'umtf@S[-g"G*6gYCT?h;7&IiSrnYjlYai
+kiq?sl0@U$m-X6/n+#r=oCMYKpWSU"Df0H0D#S2NC2*Z\!G?$DAH?=OraGq;?srt@!FB(2>lS".
+>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E]8GPdR7fPofs8S&PNW5%<O7nV4NrtD5
+8P/nR!D?,c9n#i5:f("e;c?Xq<``C+=^,-9?=.)K@Uit\B4u!pCi4-0EH?5FGBeF\I=?]tK7nu7
+M2I7PO-,TiQ'[l,S=Z@HU84W`WN*&%YHY==[C3WW]Y2(q_Sa@4a2lEHc-F\`daZguf@em4h;-uH
+iSrnYjlYail0@U$m-X60nGi%YncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC`0J,~>
+JcC<$NW8\NrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkg)]TUq[CR@'8(P*(fbN/EIIL4k20Isl]jH$=FR
+F)c2<DJX*'BP1mC6UX=384QBN:/:das%rYipe^obr_NSjqbI)cr_EDfr_WSiqbI,dnP9*[r_EJf
+peL`_rD*/_!)E5`"&;co;uBSp;uBVk;uT_r;uKSo;uTYr;cH`q<W?%o<W?%u;t3c\;^Tl=daZgu
+f@em4gtgiFi8WeWjlY^gl07L!m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqYU0hr;?NCrqcTjr:p0f
+qYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\Rm/QDOlMg#Lki_..joXZ*jSn0gio/kSi8<GKh;-lA
+gY1B7g"=p.f%&=#eC2jndEp7dcHa\Yb@t^+CM`uc$#FHqDf9T5DfB^pErU4qF`qqPGBeCYH?spc
+H[C-gI=H`sJGt0#K)gT(Kb/uoLPUeDMMd=MN/`jYOHEN3;t!]_;uBVl<<R5XDJa4hCB80arb)=F
+B)Z?BA7PUJ!b#JEra,\4?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]=,f:&[ic9D_?\8cD9V
+8,PjV7CiHu<:X&h<;TVn;ufqt<!-&i8P/nR!D?,c9n#i5:f("e;c?Xq<``C+=^,-9?=.)K@Uit\
+B4u!pCi4-0EH?5FGBeF\I=?]tK7nu7M2I7PO-,TiQ'[l,S=Z@HU84W`WN*&%YHY==[C3WW]Y2(q
+_Sa@4a2lEHc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-X60nGi%YncA@Srq-?dp\4[^s7u]k
+r;6KkrVcBfJcC`0J,~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R!?XfSP%Vkp2`TUq^DR[BD+PELueN/NOKL4k21J:;onH?aXV
+FE2A>DJa0(BP;!hCN=WKLmFjBd*_j>qp58gs3L\ks3C\jrlkhpbK7fD`5BL0^q[V_]_T5B]XtfS
+\cBAA]`>_C^&PbB]DoPD])oXW])9)=\G*N6])0&;\Gs&2[f3Z<[^EKLZa9J7ppL+0!4Vm9r42d;
+rOE0C\$icS[^EOA[/I?1ZN%68ZEpjD['R+:[/\N'e'uq"f\,!5h;-uHiSrnYjlYail07L"m-X60
+n*ol;o()DEo_%nNp@n=\q#C0hqY^6hr;?NCrqcTjr:g*eqYp<eq#:$epAFU`o`"I\o)J7[nGVhU
+mf2\Rm/QDOlMg#Lki_..joXZ*jSn0?io0mp&Du@$h;-lAgY1B7f\"g-f%'cL#Lh,KdEp4ccFNuD
+\EUQq\GpFID/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/ko
+rD<Mir_EDdr_3;aqb$iZrCHcTr'n3rrjqd7p:U@;s1SQJ8P/nR!D?,c9n,o6:f("e;c?Xr<``C+
+>$G6;?=.)L@Us%^BP;-rCi402EcZ>GGBnL^I=Hd!K8#&9M2R=QO-,TjQC+)0S=Z@HUSOcbWN*&&
+Yd(OA[^WfY]Y2(q_Sa@4aN;WLcHaeae'uq"f\,!5h;7&IiT&tZk2tjkl0@U$mI'H3nF?MK!V>s_
+o`Fj]p\ssfq>^<hqu6NlrUg)?s,I&/~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R!?XfSP%Vkp2`TUq^DR[BD+PELueN/NOKL4k21J:;onH?aXV
+FE2A>DJa0(BP;!h>[h8[F*`FqQC%T:qj$c=s-3VLPP^O:OoLO=Oo(=@PQ$aDOnt1;O8Ft5NW5%;
+NU`#/NW+t:N:`,!N;eh9NqJD3N:r/2MMmAjN;nn;N%Kt8dF6Uqf@\d1gYL]Ci8N\UjQ5Oekiq?s
+m-O--n*fc9nac8Bo^qhLp@e7TrqQNhrqcQirVZTleGf=Cqu$3crVHNhqY:'arq?9_s7H<^rUU!Y
+s7$!Us6fpSrp9[Ns6BUJ!pJh1roO:DjQ-=#!TN);i"4f&hVI#CgtUQ:g"=s/f@JLOe.'mTdF$=e
+cd'GH`5T^8rlG,]&^&;?c-FY^d*^7hdaQ[peCE1Mf`0VNg=tB;gtgiDhr*JQj5f=akNM-ol0@O!
+lg4!*mdBQ6nac;Cp%Rp7!05ios)%jSD#S2NC2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5_S*
+=BAT'<rZ2"<;fbq;ZBVm;#a>j:Amod9`@]^9)_E\8GYjS7_&KtN;&>3NrG+4NrG+>8cD<_92,=Z
+Inid9:f1+h;cHdu='/U/>?kH??XR>PA7]@dBPM=!DJsN8F*)SLH$XjdIt3-'KnbD?Mi<[WOckuq
+R$jG6StD^OUo(&hWiWA-Z*UgG\%0)_]t_A"_o9X:aihoRcHstfeCE1'g"P3:hV[8Mj5]4_k3)!n
+lKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFANW4M~>
+JcC<$NW8YMrr)ior;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R!?XfSP%Vkp2`TUq^DR[BD+PELueN/NOKL4k21J:;onH?aXV
+FE2A>DJa0(BP;!h5sn%/7Rp$F;bm*`q,$ubr_NSjqbI)cs%`Jfr_WSir(d5en4s!Zr_<GfpJ1W^
+r_E5_!)E8ar_<Mj;H!Kmoi1ifr_rkrrDEVor_i_o"&r9"<W5tn<W,kf;Yj>ld43Vpe^rI,g=tH>
+hr*JQj5f=akNM0plKmm)mdKW6naZ2@oCV\Jp%J+Rp\ssfq>U6gqu-HjrRCiCrVQNequ-Bjq>0mc
+p\smap&F[`oDS7[nc/+Wn,MhUmJcJPli68LklU)3kPjTFjlGM%irS/urnn@FhVR)Egt^Z<g=b-2
+f@SU(rmV5&da?Ihcd0mMrb2ILCMRbcCBA<hD>eDQE;sqXEWgH*FEMd+G6E/9H$Xf9HiJKnIK+fs
+JGt0#K)gT(KarimLPUeDMMd=MN/`jYOSVrM;smW_;uK\i<W?q;D/B2e!GZ?JBE;aXrac+@A,]pB
+@:3JM?X@&Er`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mir_EDdr_3;aqb$iZrCHcTr'n3rr`&Gg
+s&Akor`&nts&B"ir^m2a9`@b9:/=\_;,U=k<*!%$=BSg3>[:ZC?t*SUAS,UhC27X'DfKf=FEVkR
+H@1-jJ:`E-L5:\EN/is]P*M?#R@B_<T:r$UVPgDnXKJe4Za@0M\[oGe^VI_(`Q$!@bKS8Wd*^=l
+e^rI,g=tH?hr*JRj5f@bkNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*/s*t~>
+JcC<$NW8YMrVc`nrVQWks7uWg!Vc<eo`=^VrpjmqnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aN/<@FKnFu-Isl]jH$=FR
+F)c/:D/3p$BP1meD01)UNgluVrm:Pgs3U_jrm:\k!7(Sg%Euu9`l,d4_SO%%]tM)S^&P_F]D];A
+]=e-V!5/6C!kc.Xr4<$C]=e-T!4qa3!4r$;s0r->[^Yq<rjDd7"LkhI[C#n=qm?+*s0hm8"Lu"Q
+\@DLJrjr'=s1&*<s0hs8s0Vd3!4)O/#-tM>Za@'Frj3iTdF-Opf%8R.gYCWAi8ESSj5f@bkNM0q
+lg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)WirVZWmdJj"@r;?<drVHNhqY:'arq?9_s7H<^rUU!Y
+s7$!Us6fpSrp9[Ns6BUJ!pJh1roO:DjQ-=#!TN);i"4f&hVI#CgY:H9g"=s/f@JLOe-+7KdF$=M
+s7*V^\am91D?4TjrbDOLC&VcHB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,rE02(=',B%s&K(urDW_o
+s&&_ks%iYir([/ar_*,\r^m)[q+(HS\,ZB;ot0q1r4N)%r^qZ59MA/T:/=\_;,U=k<)lt"='8[0
+>[1QA?X[DRA7]CeBkqL$DK'T9FEMePH@($fIt3-'KnbGAN/`m[P*;/sR$sM8StMdPV5L8lX0&P/
+Z*UjH\@K5a^;%M$`5Td<aihoRcdC.heCN7(g=k?<hVd>Nj5]7`k32'olKmjJmI'H3nF?)?oCV\J
+p%J+RrV6Egs8)Zjrqu`np&9OBN;nD~>
+JcC<$NW8YMrVc`nrVQWks7uWg!Vc<eo`=^VrpjmqnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aN/<@FKnFu-Isl]jH$=FR
+F)c/:D/3p$BP1me?"7PbG'nq#rg*GHp6G]Frg!YOP`q=/P4t+<OSP%8P5^[EP5^U?OSk1:NqeS6
+Nr4n)NrG%6N;&>(N;nn:N;eh9NWG-"pPo33regc6rJLl=Mi!=LN/RXn+cFareCE.%f\5*8h;7)J
+iT&tZk2tjjl0@U$m-X60n*olHncA@Srq6<b!;HHes7u]kqtp?irVb.CqYg?ip\XpcrqZEcrqHEc
+r:U*^rq$*Zs7--YrU9dSs6]gPs6K^MrojLJkNDj,!p/M(ro4%=iVqaHhqm5Gh;$c>g=k64f[na+
+ec+&&e'cXkd)*^"`;ddX`lQ7#aUu\=c-FV\d*U1fdaHUneC<%#rn%t=g=k<9gt^`BhV[8MioK1^
+kND'ml2KrJli-5XmI'E2naZ2AoC_kJNW5$mNW3ksD/B2e!GZ?JBE;aXrac+@A,]pB@:3JM?X@&E
+r`oJ-!*]>(!a&N*r`9&!s&Aqqs&/korD<Mis%`Jdr_3;aqb$iZr^ciTs$jKtr/CB0s,R)>oo9'6
+8cD>392&#R9hnJ\:f1+h;cHat<``F,>$P<<?XI5N@q9.`BPD6tD/O<4EccGJG^=^aI=Hd!K8#&:
+MN!OUOHPfmQC+,1SXuLJUSXleWiN8)Yd(OB[^`l[]Y;.s_SjF6aN;WLcHjnce'ut#f\5'7h;7)J
+iT&t[k2tmll0@X%&+/fRn*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUp/@s,?u.~>
+JcC<$NW8YMrVc`nrVQWks7uWg!Vc<eo`=^VrpjmqnF,i5m-O''l0.<mjlGI]i8EJJgtLH6f@AC"
+dEp1`bK@oH`PfX0^V7@m\[])TZa$a;XfA@uVPKr[T:VO@R$X)%P)t`aN/<@FKnFu-Isl]jH$=FR
+F)c/:D/3p$BP1me6:=4184Z<HpeUod!)NJgrD3Dh!)NJerD3GgqbR5gr_NGerD2oX"]%lh:/+IX
+:A[ie:A@N`:A.K_:B+)i;uT\m;tj8g;u]es;u0Dl;>sMj<;KSp<;]\p;ZB\k;Z'H9dF-Opf%8R.
+gYCWAi8ESSj5f@bkNM0qlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)WirVZWmdJj"@r;?<drVHNh
+qY:'arq?9_s7H<^rUU!Ys7$!Us6fpSrp9[Ns6BUJ!pJh1roO:DjQ-=#!TN);i"4f&hVI#CgY:H9
+g"=s/f@JLOe-+7KdF$>?B`DfHCB&&LD#S2OCi+(gDuXeVEW:%^F*)MHG5c[gG^4R\HN&9kI/eWp
+J,b'!K)^K'K`6Z8L51P?M2@+IMi3ORNfT:p<;fb^<;oho<:s8kD?4TjrbDOLC&VcHB4h-S!G#^>
+@L$=L?sd8I?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iYir([/ar_*,\r^m)[q+(HS\,ZA*
+nl>]hr)3Spr)E_gr^qZ59MA/T:/=\_;,U=k<)lt"='8[0>[1QA?X[DRA7]CeBkqL$DK'T9FEMeP
+H@($fIt3-'KnbGAN/`m[P*;/sR$sM8StMdPV5L8lX0&P/Z*UjH\@K5a^;%M$`5Td<aihoRcdC.h
+eCN7(g=k?<hVd>Nj5]7`k32'olKmjJmI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`np&9OBN;nD~>
+JcC<$NW8YMrVc`nr;6Njs7uZhH2%%+p%@tKoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp4bbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#VPKu\T:VRBR?s2'P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/;DJX*&BP1mfBPhm>Kp/.2`R*!*ci)2kcd)O7%F!#;a2Q!8_ns4(^V.;T]`PjY]D];@]`,SE
+]_oJC]_f>?]EGjZ]=PTP\H'//\c9/@\$id?[K3eErO)R3s0i'<[C,q=qm?+*s0hm8rji'=rOE$A
+\[f<M\c92>\,Wo:[JmQ/ZN7A<rj3]P[*d@Pe^rI,g=tH>hr*JQj5f=akNM0plKdg(mf)YZnF?)?
+oCV\So`Fj]p\jmeq>^<gqu6NkrR(W@rVQNequ-Bjq>0mcp\smap&F[aoDJ1Znc/+Wn,MeUmJZDO
+lN$5KklU)3kPjTKjlGL_j5T(Wrnn@FhVR)EgtUT;g=b-2f@SU(rmUqs[/]^,k.0uk!cDjkrbD^Q
+BkV0mB4h-S!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&K(urDNbq;,R6fs%iYir([/ar_*/]
+rCQuZqF@snqmuI4!5/6Ar4N!Ar^m2a9`@b8:/=\_;,U=k<)lt#=BSd2>[1TB?t!MSAS#LfBkqO&
+DK'T:FEVkQH@('hJ:W?+L51VCN/`m\P*D5uR$sM9T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<
+b0/&TcdC1jeCN7)g=tE=hVd>Oj5f=akNM0qlg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`n
+o_sFAN;nD~>
+JcC<$NW8YMrVc`nr;6Njs7uZhH2%%+p%@tKoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp4bbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#VPKu\T:VRBR?s2'P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/;DJX*&BP1mf>[CrTE-QkgP*VF2Q1pREQi<9QQ'@Msr0$f:rK-l<qNCiArf[8Cq2kN8qi:H2
+!07#;nW![1NfO*us,R,=rJU`7r/CE1qMbH6rf$i9s,?o9qi:E1s,?l6s,?u9!K)g7N#dh8dF6Uq
+f@\d1gYL]Ci8N\UjQ5Oekiq?slg4$,rpL'\nac8Bo^r.U!quB_rV6Egs8)Wirqu]mdJj"@qu$3c
+rVHNhqY:'arq?9_s7H?_r:9mXs7$!Us6]mSrTsRM!:'OI!pJh1roOIIjQ,@]io8qri"4f&hVI#C
+gY:H9g"=s/f@JLOe-4=9^V[n+rkoGg`lH0AaiV]JbK\>Xcd:(edaJ-Ds3qt<f@\a/g"P07gt^`A
+hV[8LioB+]jlbgjkir*3%dWKJmHs?0nF?)?oC_eNnr<X/fSorMD/B2e#&7jcBP1sirac+@A,]pB
+@:3JM?X@&Er`oJ-!*]A)s&f;&r`9&!s&Aqq!`Dlmr)!Dhs%`Jdr_3;ar(?oZr^clU[K$,_pPo35
+!0@&<rf?r:r^m2a9`@b8:/=\_;,U=k<)lt#=BSd2>[1TB?t!MSAS#LfBkqO&DK'T:FEVkQH@('h
+J:W?+L51VCN/`m\P*D5uR$sM9T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7)
+g=tE=hVd>Oj5f=akNM0qlg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAN;nD~>
+JcC<$NW8YMrVc`nr;6Njs7uZhGPCh)p%@tKoCDJBnF,i6mHj0(l0.<mjlGI]iS`SKgtUQ8f@JI#
+dEp4bbfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#VPKu\T:VRBR?s2'P*(fbN/EIIL4b).Isl]jH$=FR
+F)c/;DJX*&BP1mf6UF107nH<H:A7Q[;#X8j;#a>g:Amrg:A[id;#X8h:AmuX:B+,h:&n#`:A[id
+:A@N`:A7Q_:B+,i:'"<mr_iVlpJh#g!`W)srDNYm"]A2q;c6Qn;ufkq<;]bq<;f_q;Z0Po;?9]o
+r)4Q^e'uq"f\,!5h;-uHiSrnYjlYail07L!m-X6?mfr:Oo()DEo`"Lbp@n=[q#C0iqYU0hr;?N@
+rqcTjr:g*eqYp<eq#:$epAFU`o`+O\o)J7[nGVhUmJuYQm/QAOlM]rKki_..jp1#/jQ#:[io0mp
+&Du@$h;-l@gY1B7f\"g-f%'cL!7Up[rb2=G$>O?lCi!m&Ci!s+rGV^Ts)J'Z$ZgE4F`qtQG^+LZ
+HMr3jI/eU$It3'#JqAW-KS9>Y%YfaoLl$tGMMmFPNK0']h,OAPr)E5e!cDjkrbD^QBkV0mB4h-S
+!G#^>@L$=L?sd8I?=!P8s'#J,r`T8's&]2#s&K(urDNbq;,R6fs%iYir([/ar_*/]rCQuZqF@sn
+qc*2fs&Ahn!*&nsr^m2a9`@b8:/=\_;,U=k<)lt#=BSd2>[1TB?t!MSAS#LfBkqO&DK'T:FEVkQ
+H@('hJ:W?+L51VCN/`m\P*D5uR$sM9T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1j
+eCN7)g=tE=hVd>Oj5f=akNM0qlg4!*mdKTJnF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAN;nD~>
+JcC<$NW8YMrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PECodN/NOJL4k21J:;onH?aXV
+FE2A>DJa0(BP;!hA8?41Iu0GbZ-iKq"4#6=cMl/gciMJ<rlkhpb/hWB`5BI.^q[VX^&P_F]D];A
+]=dpP!kc.XrO`*Br4E!>!4qg5!4r'<s1&*<osXe+ppU12rjD^2q6^10s0V^3#.D"N\$rlWn@AS/
+s0r$:rj<'=['R'DZa-mCZMq3QdaZdtf@\g2gtgiEi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"O`
+p&Ojcq#C0hqY^6hr;HT?rqcTjr:p0fqYg6dq#:$fpA=O_o`+O\o)J7[nGVhUmJuYQm/QAOlMg&J
+kl9iFjp1#/jQ#:[io0mp!T2c5h$2ZhgY1B7f`'J'f%%&*rODm<q7,Osn$isID/=!'C2.HrBP1si
+AS#C_A,]p<@:9(As'>\2r`oJ-!*]A)s&f;&r`9&!s&Atrs&/kor)!Dhs%`Jdr_3;ar(?oZr^cuX
+ZiBm5n%8M1s1SG)s%@f79heAX:Jakb;H$Lo<`W:(=^#$7?!^lG@U`kZAnYjmCM[m,EH6,BG'A4X
+I!pKpJqJc3Ll%%KNfT<cPa7])S"-(BTqeE\Vl?\tXfo"9['mHS]"G_k^r"".`lQ9EbK\>ZdF-Op
+f@S^0gYL]Ci8N\UjQ5OekiqBum-G&GmdKZ8nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*.s*t~>
+JcC<$NW8YMrVc`nr;6Njs7uZhs7ZNerq1:'oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PECodN/NOJL4k21J:;onH?aXV
+FE2A>DJa0(BP;!hA6`PRCialQMYi\4QN*<NQN*3LPPp[=Oo:C<Onk1>PQ$aEOnt1;O8Ft4N<#":
+NUi)0NW+t;NW+t:NVnb8Mu8P1NV\V6N<5-"N:r53NfF!tpPo33repc7s,-l7rehlHeC<($f\5'7
+h;7&IiT&tZk2tjjl0@U$m-X60n*olHncA@Srq6<b!;HHes7uZjr;6HjrVb(AqYg<hq"t$drV?<b
+rqHHdqt:!]s7?0Zs7--YrU9dS!:BaOs6B[MrosIHs6'CD#Nb%-j5].YiVqa9hqn@g#2Itfg=k64
+rmqJ-e\&W1^VI_(_u@Re`Q#s>aN;QHbKJ/UcHjkbdF-JBe,Ro9f%8R+g"G*5gYCT?h;7&IiSrnY
+jlP[gkih:1l43.Hm-X3.mdTc;o(2PJp[aCCNn97&DJa3*CMITuBP;$kAn>OaA7PUJ!F]C8?iOF4
+?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;>a8j:]F2f:&[ic9DhE\8cD9Z8$i6lN;&>-NrG+<NrM`O
+97BQ/9hnGZ:f("e;c?[s<``C+>$G6;?=.)L@Us%^BP;-rCi402EcZ>GGBnL^I=Hd!K8#&9M2R=Q
+O-,TiQC+)0S=Z@HUSOcbWN*&%YHbF@[^WfY]Y2(q_Sa@4aN;TJc-F\`daZh!f@em4h;-uHiSrnY
+jlYail0@U$lj<(In*ol;o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcC]/J,~>
+JcC<$NW8YMrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PECodN/NOJL4k21J:;onH?aXV
+FE2A>DJa0(BP;!hA3iOM77Ba=:Jgsb!)EMhqG@/es%r_kqbI)c!)EAds%r\jrD*8dn4j*^:/=VZ
+pJ1T]s%`>`s%`>brD*>fr_EJn!E<"s;Yj>e<;KMp<)Z`p;Z'Aq;Gg:h;cN`prD`_qqc*Dj,Z7Q?
+;cD,oeCN7(g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&F^cp\jmeq>U6gqu-HkrQkK>
+rVQNfqu-Biq>0mcp]'sap&F[aoDJ1Znc/+Wn,MeUmJZDOlN$5Ll2TuIkPjTKjlGL_j5T(Wrnmh7
+hYu=8gtUT;g=b-Xf*'[TAS,QRBE)ZEB`i*cCM`uc")MgkDZ+MRE;sqXEX-Z-F`hkOGBj+4!.+Tj
+s*P3&IXcluJV&K+K7npWKarimLPUeDMMd=NN/`jZOPNn9;uBVa<=s+cChmg$C2%?pB4kgfARo=]
+raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`@]_9)V?\8Gu&bs8#^f
+<W5to;g),?<D#kV92&&S:/4S]:f1+h;cQk!='/U/>?kH??XR>PA7]@dBPM=!DJsN8F*)SLH$Xjd
+It3-'KnbD?Mi<[WOckrpR$jG6StD^OUo(&hWiW>+Z*UgG\%0)_]t_A"_o9X:ai_fOcHsteeCE1&
+g"P3:h&,&-iSrnYjlYail0@U$m-X60nF?&>o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s,?u.~>
+JcC<$N;rSMrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vkp2`Tq@mFR[BG,PEM#gN/NOKL4t83J:;onH?aXV
+FE;G@DJa0)BkV*iA7BCsG_;!CVR?BKs3:YkcMl/gciMJ<rQP\maiMK?`5BI-^q]TV!kc.Wrji0C
+]Y+'Rrk&KJ]Xteg]XtiU]DoJ6\H'5?\H'/=\HKFO\$id?[emK0[f<`8\Gir9[fj.I[C!=?Zi.62
+Zi7?3[JdK3[/dZ6\,Wu-\c92>\,NfA['mBLZa6sDZMq0Ue'uq"f\,!5h;-uHiSrnYjlY^hl07L!
+m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqYU0hr;?N=rqcTjr:p0fqYg6dq#:$fpA=O_o`+O\o)J7[
+nGVeWmd9E?liQM<lMg&JkQ'fFk5XNCjSn3>iW.s:huV`lrnRV1g]#n0g"=p.r365#\Gj&8\E(3f
+\.ELnCMR["BkV0mB4b^dA7T3L@KBnFra5\3!+#S/s'#J,r`T8's&]2#s&K(ur_rhps&&\js%iYi
+r([/as%E5]rCQuZs$sBpq7?%,r4IKl8kViO9heAY:f("e;c?Xq<`W=*=^#'8?!grI@Uiq[B4u!p
+CMds.EH6/DGBeF[I!pKpJqJc3Ll..NO-#NgQ'Rf*S"6.DTqeE\W2co#Y->1;['mHS]=bkm_8=.0
+`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_VjlY^hl0/iGlg4$,n*fc9o()DDo_%nNp@nO\s7u]kr;6Kk
+rVcBfJcC]/J,~>
+JcC<$N;rSMrVc`nr;6Njs7uZhs7ZNerq1=(oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vkp2`Tq@mFR[BG,PEM#gN/NOKL4t83J:;onH?aXV
+FE;G@DJa0)BkV*iA7AhQBPhm=K8]\np6P`Fs-<YMrfdDHr0$i;rK-l<q3(`@rf[8CqN1T8qi:6,
+nr<d2NfO'trf6i7r/CQ3repl;N;S\3N:2c*NqJD2MunorN;\Y[e'uq"f\,!5h;-uHiSrnYjlY^h
+l07L!m-O--n*fc9o()DDo`"Lbp@n=[q#C0iqYU0hr;?N=rqcTjr:p0fqYg6dq#:$fpA=O_o`+O\
+o)J7[nGVeWmd9E?liQM<lMg&JkQ'fFk5XNCjSn3>iW.s:huV`lrnRV1g]#n6g"=p.]"G\i^;%M`
+_uI[T`<aK(aN2KFb0/!-cMu8kdJqYodk9/#f%8R+g"G*6gYCT?h;7&IiSrnYjlP[gkih9rl0I[%
+m-X3.mdTc;o(2PJp[jICNn'+#D/=!'C2.HrBP1siAS#C_A,]p<@:9(As'>\2r`oJ-!*]A)s&f;&
+r`9&!s&Atrs&/kor)!Dhs%`Jdr_3>bqb$fYr^d&ZZN'`ZpPo!/rf@&=I7d.+9MJ5V:Jakb;H$Ln
+<E<.&=]np5>[:]D@:E_WAS5[jCMRd)E,fo?Fa&(VH@1-jJ:`E-L5:_GNK90aPEhH$R@Bb=TV8-V
+VPpMqXfen5Za@0M\\#Mg^VRe*`Q$!@bKS8Xd*^=le^rI,g>(N@hr*JRj5oFckiq=ElKdg(mdKW6
+nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*.s*t~>
+JcC<$N;rSMrVc`nr;6Njs7uZhs7ZNerq1.#oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vkp2`Tq@mFR[BG,PEM#gN/NOKL4t83J:;onH?aXV
+FE;G@DJa0)BkV*iA7@kn6iKOU85B+Zs%`Siq,$o`qbHi\r_WSir_EAemS3j[:/4OY:A[ie:A7H_
+:A7Q_:B+,e:B+8p<E)oq;Yj>k;ufkp<;TSq<)Z`p;YX)q;H$Ll;H$On<)ifrrDWhu<)i`n-<+!o
+eCE1'g"P3:h;@/LioB+]k2tmll0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]kqtpBjr;Fq?qYg<h
+q"t$drV?<brqHHdqt:!]s7?0Zs7--YrU0gUmHsl=!pf.:rosIH!9a@Ds5a7Aro=%<!9*q8!T2c5
+h#Z<crn7_4f[n_aAS#IcB4q3Wrb2ILCMRbcCBA<hD>\>PE;sqXEY`_<F`hkOGBeCYH?spaH[C-f
+I=H`sJGt0#K)gT(K`Hl,LC8opM2I4LN/`gWOHB*6!*/>a!)repm8X^7Chmg$C2%?pB4kgfARo=]
+raGn:@/aO5?3":1>lS".>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_9)V?\8H22cs7oXe
+<W,no;h%bH8kViO9heAY:f("e;c?Xq<`W=*=^#'8?!grI@Uiq[B4u!pCMds.EH6/DGBeF[I!pKp
+JqJc3Ll..NO-#NgQ'Rf*S"6.DTqeE\W2co#Y->1;['mHS]=bkm_8=.0`lQ9Fbg+P]dF6Uqf@\d1
+gtgiEi8N_VjlY^hl0/iGlg4$,n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC]/J,~>
+JcC<$N;rPLrr)ior;6Njs7uWg!Vc<eo`=^Vrpk!tnF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bKJ#K`l5j4^V7@m\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EIIKnFu-Isl]jH$=FR
+F)c/;DJX*&BP1mf@qfh(I>3oTXhN-YcMl/gciMJ<rlkkqbK7fD`5KO/^q[XupUpU?]DfDA])]M=
+]`PjY]`#JA]`,PC\cK@QoXOt5rj`3B\[f5[\+I-,[JI?2[JmZ9\,Ec8[g':K[C!<IZi.91Zi@E4
+[J[B5[C3OA[fEr/\c9/?\%)FHr3e;c['R*EZIICTf@\g2gtgiEi8N\UjQ5Oekiq?tm-O--n*fc9
+nac8Bo^qhLp@e7TrqQKgs8)Wirqu]mc2RS<qu$6drVHKgqtU0brq?9_rq-6^rUTsXs7$$Vs6fpS
+rTjUOlK\B5s6'IGroX7B!9F.>s5F%;rnmh7hYu=3gtVh^s8)iprNQ>%\G`u8\E(3e\.NUqChmg$
+C2%?pB4baeARo=]raGn:@/aO5?3":1>QS,5>5h\)=T;J%<rZ2"<;ohr;ZBVl;#a>k:Adic9`Ic_
+9)V?]8?r3g](!?1]E1\u9`@b8:/=\_;,U=k<)lt#=BSd2>[:ZC?t!MSAS,RgBkqO&DK'T:FEMeP
+H@('hJ:W?+L51VCN/`m[P*D5uR$sM8StVmSV5L8lX0&S0ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1i
+eCN7(g=k?<hVd>Oj5f=akNM0plg4!*mdKTPnF?)?oCV\Jp%J+RrV-BgrqcTjrVZZno_sFAMuS;~>
+JcC<$N;rPLrr)ior;6Njs7uWg!Vc<eo`=^Vrpk$unF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bKJ#K`l5j4^V7@m\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EIIKnFu-Isl]jH$=FR
+F)c/;DJX*&BP1mf@pEAPBlJ9ELQ[pfp6P]Es-<SJs-*DEplYK9qiUZ:rfd>ErfR&=r/^`8pl,96
+r/L9-s,I&=rJgf:pPo'/qhtB2rJgZ4mZ%7,"c\J#N/`enN<,'!rf$l8s3rIJf@\g2gtgiEi8N\U
+jQ5Oekiq?tm-O--n*fc9nac8Bo^qhLp@e7TrqQKgs8)Wirqu]mc2RS<qu$6drVHKgqtU0brq?9_
+rq-6^rUTsXs7$$Vs6fpSrTjUOlK\B5s6'IGroX7B!9F.>s5F%;rnmh7hYu=3gtVh^s1/0@#J@aa
+^VI_(_u@RW`Q#p<aSs:Eb0.uRcHjkadF$Cje'lgrf%/L+f@ej2gY:N=h;-rFi8N\UjQ5OekNM-o
+lKRX#m-O-,mdBT7o()DFp@n6>qi93d&T2H%CMR["BkV0mAnGUcA7T3L@KBnFra5\3!+#S/!aAi3
+r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCR#[Z2aNVpl5*0rf7/A8kVkW9n#i5:f("e
+;c?Xq<``C+=^,-:?=.)K@Uit]B4u!pCi4-0EH?5EGBeF\I=?]tK7nu7M2I7OO-#NhQ'[l,S"6.E
+U84W`W2co#YHY==[C3TU]=bkm_8=.0a2lEHbg+P^daQ^sf@\g2gtgiFi8WeXjlYail07O#m-X60
+mgJXTo()DEo_%nNp@nO\!;ZWjrVQQkrr)KgJcCZ.J,~>
+JcC<$N;rPLrr)ior;6Njs7uWg!Vc<eo`=^VrpjdnnF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@AC"
+dEp1`bKJ#K`l5j4^V7@m\[])UZa$a;XfJG!VPKu\T:VRBR$X)&P)t`aN/EIIKnFu-Isl]jH$=FR
+F)c/;DJX*&BP1mf@mNCL7K,gZ92JF`:B"&c;#3ub:A%E_;#X8i:AdoV:&n)h:&n#_:Adoe:A@Q`
+:A@W`:B"&g:'scl:JY"k<)Zaq;uKSp;cNWms&AtrrD`\n!`W)sr_iGe"&_un;Z0Po<;fhs<;ont
+;u]hs;ub>qf%8R.g>(N@hr*JQj5f=akNM0plg4!*mdKW6naZ2@oCV\Jp%J+Rp\sseq>^<gqu6Nk
+rQY?<rVQNfqu-Biq>9sdp\smap&=U`oDS7Znc/+Xn,MhUmJZAQlg!d7l2TrIkPjWDjT+B@j8\*=
+iVqa9hqn@g!SlH/gAYLb@qB4`AnPcUB`DcHCAquKD#S2UCi+$-DJsH4E;jkWErU7]FoHRfG^4R\
+HMr0pI!pEmIt3(KK)^H'K`6Z9L51P?Ll$tGMi3ORNK0*^oi1rkk#C\I&T2H%CMR["BkV0mAnGUc
+A7T3L@KBnFra5\3!+#S/!aAi3r`T8's&]2#s&K(ur_rhps&&\js%iYir([/as%E5]rCR#[Z2aMs
+p/V&jqbmPg92,=ZISN[8:f1+h;cHat='/U.>?kH??XR;O@qB7bBPD6uDJjE5F*)PKG^=^bIXm!%
+KSG8=MN!OUOHPinQ^F52SXuOLUnsufWiN8*Yd1UC[^`l[]Y;.s_SjF6aND]McHjnde'ut#f\5'7
+h;7)JioB+]k3(sml0I^&mI'H3$h3]Wo(2MGp%A%Pp\jjeq>U6hqu-HlrUg)?s,6o-~>
+JcC<$N;rPLrVc`nr;6Njs7uZhGk^q*p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pg@q'4oG_(a:Ts=L?rm1Pi!RK'ibm_e<aN)9<_ns7*^q[VY^&P_L]=PSc]=bfP
+^&GYL]=bbf]Y(khrjr0Arj`$?p:117rji'="M)%P\$u"<r3cF1qm?[=\[]/Y\$i^C[f3]7ZiIH1
+[/RE3ZiIN3[/[N6[emQ6\FmE1\Gs#B\@8rU[C3OCZl[`If@S^0gYL]Bi8EVTj5oFckNV6rlg4!*
+mdKW6nc&([oCW%Ts7QHerV6EgrqcQirVZWmbPqA:qu$6drVHKgqtU0brq?9_rq-6^rUTsXs7$$V
+s6fpSrTjUOlK\B5s6'IGroX7B!9F.>#NF_$i8EMMhYu=2h#@0MqZ6WoYl=^5rOMg8j14Nds)&Qg
+Chmg$Bk_6oB4baeARo:\@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<rZ/"<;fbq;ZBVl;#a>k:Adic
+9`Ic_9)_Dcs7Ntp]DfD@]73II9heAX:Jakb;H$Lo<`W:(=^#$7?!^lG@U`kZAnYjmCM[m,EH6,B
+G'A4XI!pKpJqJc3Ll%%KNfT<cPa7])S"-(BTq\?[Vl?\tXfnt7['mHS]"G_k^r"".`lQ6DbK\>Z
+dF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-G&GmdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*-
+s*t~>
+JcC<$N;rPLrVc`nr;6Njs7uZhGk^q*p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pg@q&\OAo2U7J;X#crg3VLrfdDHr0$l<r/gf<plbW?rf[8CqN1T8qi:K3!06r9
+o8`j1s,R#:s,QZ0qi(H2q2><5pPeHus,6u:N;\_]N/ipXN/Z9:f@S^0gYL]Bi8EVTj5oFckNV6r
+lg4!*mdKW6nc&([oCW%Ts7QHerV6EgrqcQirVZWmbPqA:qu$6drVHKgqtU0brq?9_rq-6^rUTsX
+s7$$Vs6fpSrTjUOlK\B5s6'IGroX7B!9F.>#NF_$i8EMMhYu=Agpjl)\[oAa]Y;+p^r"",rknrY
+`lH0ArlHP1bK\>Xcd:%ddF-Ile'umuf@\^-g"P07gYCT?hV[5LiT&t[jlbh+kQgA;l0I[%m-Xf?
+#Oq9So(2PJp\'UDNms'gDA@#)CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"
+s&B%urDW_os&&\js%iYir([/as%E5]r^j<noo/[*p5XVq9MJ5V:/=\_;,U=k<E<.%=BSg3>[:ZC
+?t*SUAS,UhC27X'DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D9"R@B_<T:r!TVPgDnXKA\1ZF%'L
+\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg3sEmI'H3nF?)?oCW%T!quB_
+rqQNhs8)Zjrqu`no_sFAMuS;~>
+JcC<$N;rPLrVc`nr;6Njs7uZhH2%%+p%@tLoCDJBnF,i6mHj0(l07BnjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,L`l5j4^q[Rq]",8WZa-g=XfJJ#Vkp/^TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pg@q%bk6UjI785;tZ:&n)c;#3ub:A.K`;#O2i:AdoT:'49e9hkCXqbR5epItW_
+peUf_s%iMerD3Go!EE+u;ZTirr_`er<)icor`&kqr`&eos&8tsr)3Gi!)WMhs&/eos&Aeo+]D?>
+eCE1&g"P3:h;7)JioB(\k2tjkl0@U$m-X60n*olHncA@Srq6<b!;HHes7uZjr;6HjrVaq=qYg<h
+q"t$drV??crqHEcr:U']s7?3[rpg$XrpTmTs6]dO!pf.:rosIH!9a@Ds5a7Aro47CiSi_Qhr!;i
+h#cA?@/aR;@Uit]B)ZHBB`DcLC27U%D#S2UCi+'.DJsH4E;jhdEcZ>EF`qtPGBeCYH@#R;s*Ouu
+IXcluJc:9$K)gT(Kb&onLPUbCM2I4LN/`gWOHB08r`//]l;dk%'l@c&CMIQtBP;$jAn>Oa@q/tW
+@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"<<-"s;u]bq;>a8j:]F2f:&[id9D_?\8[&0e<;'>j;ufkq
+;L_>59heAX:Jakb;H$Lo<`W:(=^#$7?!^lG@U`kZAnYjmCM[m,EH6,BG'A4XI!pKpJqJc3Ll%%K
+NfT<cPa7])S"-(BTq\?[Vl?\tXfnt7['mHS]"G_k^r"".`lQ6DbK\>ZdF-Opf%8U/gYL]Ci8N\U
+jQ5OekiqBum-G&GmdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*-s*t~>
+JcC<$N;rPLrVc`nr;6Njs7uZhs7ZNerq1@)oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R$@XfSP%Vkp2`Tq7gER[BD+PEM#fN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7B"`F*N:sR&74hc2Z)gci)5jcMl&sbfe,L`l,g5_8*k$^A#;G]Xtbd]=Y_g
+r4N*Erk8?E"1u4X]D]DA]DoJ@\H'58\H'5?\HTLR\[],XoX=Y)r3lF/!4Vm9rjVp9!k5VHrO)L/
+rNlO2!4Dd4s0Vs;\$rgD[fEr6\H9:O\bEW6\,WlT[+*[Yf\5'7h;7&IiSrnYjlYail07L!m-X6?
+mfr:Oo()DDo`"Lbp@n=[q#C0iqYU0hr;?N[rql`WrqcTjr:p0fqYp<eq#:$epAFU`o`"I\o)J7[
+nGVhUmf2\Rm/QDOlMg#Lki_..k5XNCjSn0Hio/kSi8<GKq"X[aq?$QlrNQ;%\GWo9\Db!c\/B4&
+DJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPh
+r([2br_*,\XoJ%)q7HF5s1<bS9heAY:f("e;c?Xq<`W=*=^#'8?!grI@Uiq[B4u!pCMds.EH6/D
+GBeF[I!pKpJqJc3Ll%%LO-#NgQ'Rf*S"6.DTqeE\VlHf"Y->1;['mHS]"G_k^r"".`lQ9Fbg+M\
+dF6Uqf@\d1gYL`Di8N_VjQ>Ufl07L!m-X6@mfDqJrpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*-
+s*t~>
+JcC<$N;rPLrVc`nr;6Njs7uZhs7ZNerq1@)oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R$@XfSP%Vkp2`Tq7gER[BD+PEM#fN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7B"R@;'M"I"@7NQN*<OQN!0LPlHsGP5(1<OSb18P5UUEP5^U?OSb+9NqeS6
+Nr4n-NrP(=Nr+e9NpVi'N;\\%N:W#/N;ee<N/`hqN;\b9NZ*o,f%8R.g>(N@hr*JQj5f=akNM0p
+lKdg(mf)YZnF?)?oCMVRo`Fj]p\jmeq>^<gqu6NkrTsO\s5j7VrVQNfqu-Bjq>0mcp\smap&F[`
+oDS7[nc/+Wn,MhUmJcJPli68LklU)3kPjWDjT+B@isXl*iS`YOhqkiO\@DOKs186Cs1SNK_#D7N
+`;dgga2l?Dai_fMc-FV]d*^7hdf.]JeCE.%f[ng0g=k<9gt^`Bhr!DOj5]7_kND'ml07Ktlg*p(
+mI'E2nF?)?oC_hONVSUbN>ZYPDJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'
+!*B,"s&B%urDW_os&&_kr_NPhr([2br_*,\XoJ$Pp5Sm.InWR2:/=\_;,U=k<)lt"=BSd1>[1QA
+?X[DRA7]CeBkqL$DK'T9FEMePH?sseIt3-'KnbD?MiEdZP*;/sR$jG7StMdPUo(&iX0&P/Z*UgG
+\%0)_]t_A"_o9X:aihoRcHstfeCE1'g"P3:hV[8Mj5]4_k3)!nlKdg(mf2_VnF?MK!V>s_o`Fj]
+p\ssfq>^<hqu6NlrUg)?s,6o-~>
+JcC<$N;rPLrVc`nr;6Njs7uZhs7ZNerq1@)oCDJBnF,i6mHj3)l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]",;Y['R$@XfSP%Vkp2`Tq7gER[BD+PEM#fN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7B"76pjC47nQMT:B+,d;#O/k:esma:Adlf:A[fe;#O2i:AdoT:'49e:/1IX
+r(m;epItW_peUf_s%iPfqbR/k!EE+r;u]_q;uTbp;uTbp;uTbp;uTbr;uKVm;?'Ji;?'Pl;u]hn
+<>nidf%8R.g>(N@hr*JQj5f=akNM0plKdg(mf)YZnF?)?oCMVRo`Fj]p\jmeq>^<gqu6NkrTsO\
+s5j7VrVQNfqu-Bjq>0mcp\smap&F[`oDS7[nc/+Wn,MhUmJcJPli68LklU)3kPjWDjT+B@isar+
+iS`YOhqhaK@:<RC@0C%MAS,QRBE)ZEC&VoIC`@/+D/F0/DJsH4E,fl<EcZ>EF`qtPG^+LZH@#R;
+s*OuuIXcluJc:9$K)gT(KarimLPUbCM2I4LN/`gWOS;`P<U!KJ<>f^mDJa6,CMR[!BkV0mAnGUc
+A7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&B%urDW_os&&_kr_NPhr([2br_*,\XoJ#mq,R8j
+!)rkpInWR2:/=\_;,U=k<)lt"=BSd1>[1QA?X[DRA7]CeBkqL$DK'T9FEMePH?sseIt3-'KnbD?
+MiEdZP*;/sR$jG7StMdPUo(&iX0&P/Z*UgG\%0)_]t_A"_o9X:aihoRcHstfeCE1'g"P3:hV[8M
+j5]4_k3)!nlKdg(mf2_VnF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s,6o-~>
+JcC<$MuWJLrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*l07Epk2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[['R$AY-"_'Vl$8bTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1`DKgM`Oe&Mac-=Q5ci)2kcd)L6%*Zo:a2Q$8_SO%'^V9KVs1J<Bs1J?E
+!ku@^rk89Crk&-Arjr6C\[qFD!4r0?s0r0A\@B$>[f!Q1[eI30\,<c7[g9FO\$i]P[^EO?[/@9-
+[/[N6[f3`9[f!T7\G<Z=\@K,Z\$u4Ds0j$!f@S^0gYCWAi8EVTj5f@bkNM0qlg4!*mdKW6nc&([
+oCW%Ts7ZKerqQNhrqcQirVZTlm/Hn^jo5,Tqu$3crVHNhqY:'arq?9_s7H<^rUU!Ys7$!Us6fpS
+rp9[Ns6BUJs6'IGroX7B!9F.>$0'q&i8F>'q"aabq?$QlrNQ>!\c0+s\a?m6E,TW3D/=$(CMIS_
+BE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=oVS(=8c/$<E)rr;u]bq;>j>j:]F2f:&dod9DqJa
+s7<ht]D/u:9n#i5:f("e;c?Xq<``C+>$G6;?=.)K@Uit]B4u$qCi4-0EH?5EGBeF\I=?]tK7nu7
+M2I7OO-#NhQ'[l,S"6.DU84W`W2co#Y->4<[C3TU]=bkm_8=.0a2lBGbg+P^dF6Urf@\g2gtgiE
+i8N_VjlY^hl07L!m-X60mgJXTo()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcCZ.J,~>
+JcC<$MuWJLrVc`nr;6Njs7uZhs7ZNerq1C*oCDJBnF,i6mHj3*l07Epk2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[['R$AY-"_'Vl$8bTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1R?=R_hGCG7-q3M&Is-EYLrfdDHr0$l<rK-r>p6,E=rf[8CqN1W9s,I)=
+rJp]5!06r9o8`g0!06r9!06f5s,Qc3repo<N/[^nm>UXr"cSG"NJrkpN;\_Ve^rF+g=tE=hVd>O
+j5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu-HjrTsO\s5j7VrVQNequ-Bjq>0mc
+p\smap&F[`oDS7[nc/+Wn,MhUmJcJPli68Ll2TrIkPjWDjT+B@is4T&iS`Y%[C?.Frji'?"h_O_
+^;.Sa_uIXg`Q#p<aN2KFb0/#RcHae`dF$CjrmNLLe^i@)f@ej2g=tB;gtgiEhr3PSj5oCckNM-o
+l0@R"lg4!*mdBT6nac8Bp@e9@pl<ma$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7
+!aAi3r`T8'!*B,"!``3!rDW_os&&_kr_NPhr([2br_*2^XT.mNp5Ss0r_7i::Jakb;H$Ln<E<1'
+=^#$7?!^lG@:E_XAnPdlCM[m+E,fr@Fa&(VH[U?nJV/W1LP^nINK90aPa.T&R[]k>TVA6YVl6Vr
+Xfen6ZaI6O\\#Mg^VRe*`Q-'AbKS8XdF$Fmf%8R.g>(N@hr*JRj5oFckiq?slg4$,n*^YRnac8B
+oCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*-s*t~>
+JcC<$MuWJLrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*l07Epk2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[['R$AY-"_'Vl$8bTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf186:++484cBK:/4U];#X8j;#X8f:Amug:Adlf;"d]O:'+3d:%qE[:]F2a
+9`Rr`:]*uf:]!o_:B4Jp<WQ3"qGRPq;cHar<;fbq<;]\p<;fbn;ufkq;Z9Pl;#O8k;Z'Jn<;TZ9
+e^rF+g=tE=hVd>Oj5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&Facp\ssfq>U6gqu-HjrTsO\s5j7V
+rVQNequ-Bjq>0mcp\smap&F[`oDS7[nc/+Wn,MhUmJcJPli68Ll2TrIkPjWDjT+B@irnB#iS`Ym
+?jC+J?t!JQ@V,ONs(D=Erb;@I#]+9mCM[j*Df5Pms)A!Xs)JosFEM_LGBS4UH$O^_H@(!dI!pHn
+J:N4MK)^H;KS>,7L51P?Ll$tGMi3ORNfT9%<Vf\m<U!KI<=3\`DJj<-Chmg$C&VcHB4h-S#@q=S
+@U`bS@/aL7?<pk9>QS,5>5h\)=9)G$<WZ9#<;fbq;ZBVm;#X8j:Adid9`@]`9!&'a<;BPj;uooq
+r_7i::Jakb;H$Ln<E<1'=^#$7?!^lG@:E_XAnPdlCM[m+E,fr@Fa&(VH[U?nJV/W1LP^nINK90a
+Pa.T&R[]k>TVA6YVl6VrXfen6ZaI6O\\#Mg^VRe*`Q-'AbKS8XdF$Fmf%8R.g>(N@hr*JRj5oFc
+kiq?slg4$,n*^YRnac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*-s*t~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eo`=^Vrpk+"nF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#Vkg)]TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pgA7At_EHctlP+f/'c-H=7rm1_mcHcC5$d?f8`l5m6_83q%^A#;@]`#JB]`,SH
+^:h7prk8?E#JId^]=beg]`,PC])T;B]",EI\c98?\c9/A\[],XoX=Y)r3l7*!k>_KqmcL3"h(hI
+[^EO@[/73,[/[Q5\,Ni8[fEr8\HB@P\@MUKrjMp:\,Nl]f%8R-g>(N@hr*JQj5f=akNM0plKdg'
+mI'H3nF?)?oCMVRp&F^cp\jmeq>^<gqu-HkrU'UXs6'CXrVQNequ-Bjq>0mcp\smap&F[`oDS7[
+nc/+Wn,MhUmJcJPli68LklU)3kPjTFjlGM%is4T8o_%tRq"apc"8i#prilG"\c91s\a?m7EH#i6
+DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"!``3!rDW_os&&_kr_NPh
+r([2br_!5`WrE(2o=Fb0q76W%:/CjcISj!A<)lt"='/U/>?kH@?XR>PA7]@dBPM=!DJsN8F*)SL
+H$XjdIt3-'KnbD?Mi<[WOckroQ^O>5StD^NUo(&hWiW>+Yd1UC[^iu^]t_A"_o0O7aND]NcHjnd
+eC<($g"P39h;7)JioB+]k3(smlKdg'mI'H3nF?)?!V>s_p&F^cp\ssfq>^<hqu-HlrUg)?s,-i,~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eo`=^Vrpk$unF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#Vkg)]TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pgA7AtP?Y+(qH%1^9qj.8Krg*PKrfdDHrK?r<rK-u?p6,B<rf[;DqN1T8qi:H2
+!06u:nrEa0!06N-s,R,=s,Qc3s,?u;s,?o7m#:[u!fW+tqi(Z9Mi@Xp,1bAug"P6;hV[8MioB+]
+k3(sml0@U$m-X60n*ol<o(2JFrq6<b!;HHes7u]kqtp?irVc-_pAa=TqYg<hp\XpcrqZEcrqHEc
+r:U*^rq$*Zs7--YrU9dSs6]gPs6K^MrojLJkNDj,!p/M(ro4%=Zi7?5[^Z7Grj`*A]=e-W!l2[j
+rP\]T&BDl5aiV`Lbg"GZd*U1fdaJ-D0%AG'f@\^.g"P07gYCW@hV[8MioB+]k3(pkkiq?slKdd&
+m-X6/nF5u=o(2SKq2P-/eVsrVE,TW3D/=$(CMIS_BE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50
+=oVS(=8c/$<E)rr;u]bq;>j>j:]F2f:&dod9)qSarrA&MN:r8/NWMpM:]=1>;,U=l<E<.%=BSg3
+>[:]D?t*SUAS,UhC27X'DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5uR@B_<T:r!TVPgDnXKA\1
+ZEpsI\[oGe^VI_(`5Td<b0/&TcdC1jeCN7)g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac5OoCW%T
+s7QHerqQNhs8)ZjrVZZno_sFAMZ82~>
+JcC<$MuWGKrr)ior;6Njs7uWg!Vc<eo`=^Vrpk+"nF,f4m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dEp1abfe,L`l5j4^q[Rq\[])UZa-g<XfJJ#Vkg)]TUq[CR@';)P*(fcN/EIIL4k21J:;onH?aXV
+FE2A>DJX*'BP1pgA7At56UXC57nHHO:/Ca`r_NMir_NGer_NMgnPAIG"&DZe:%qE\:]=,`9`Rr`
+:]*uf:]!o_:]F5l<EK-"!``3!pf%2ms&Aqq!*&ho!*&kpr)<ku;,L4h;,R6frD<PmqGRAnr`(/n
+f@\d1gtgiEi8N\UjQ5Oekiq?slg4!*mdKW6nac8BoCW%Ts7QHerV6Egs8)WirVZWmmJchZkPk>V
+qu$3crVHNhqY:'arq?9_s7H<^rUU!Ys7$!Us6fpSrp9[Ns6BUJ!pJh1roO:DjQ-=#"6*Wn?i=@;
+@:3JO@:E_Xrau1Crb2=G!,DLK#]+9mCMdp+Df5Pms)A!X$$(*.FEMbMGB\<2GpI]_H@(!dI!pHn
+J:W9'JqJ]/KS>,7L51P?Ll$tGMi3ORNfT:n<U*QI<=<ecDf0H0Ci!m&C2*Z\!G?$DAHuaU@q&nU
+@:9(A!a]/<r`fM/>$Co.s&]8&rDiu"<)ifps&/korD<Jhs%`Jds%NDb!(s9k!*/Viq,R8j"&hoh
+:]=1>;,U=l<E<.%=BSg3>[:]D?t*SUAS,UhC27X'DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5u
+R@B_<T:r!TVPgDnXKA\1ZEpsI\[oGe^VI_(`5Td<b0/&TcdC1jeCN7)g=tE=hVd>Oj5f=akNM0q
+lg4!*mdKW6nac5OoCW%Ts7QHerqQNhs8)ZjrVZZno_sFAMZ82~>
+JcC<$MuWGKrVc`nr;6Njs7uZhHh[7-p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;Y['Hp>XfSP$Vkp2`TUq^DR[BD+PELueN/NOKL4t82J:;onH?aXV
+FE2A?DJa0(BkV*iA7B"UCiXcQNL-KJcMl/hd/VDlcMbusbfe/M`l5j4_8*k$^:sEVs1J?Cs1J?E
+r4`3Es1AHI]Y(lT]`#GD]",EE\H'5?\brr;\+@'+[JRE([JRH6\bru6[fj.I[C3L?[/73-[/[N8
+[^WaF[f3`9\G!K3\Gs#`[^Wcug"P39h;7)JiT&tZk2tjjl0@U$m-X60n*ol;o()DEo`"Lbp@n=[
+q#C0iqYU0gr;HT]rq6<SrqcTjr:p0fqYg6eq#:$epA=O_o`+O\o)J7[nGVhUmf2\Rm/QAOlM]rK
+ki_..joa`+jRN6@"n_N_q"X[aq?-WmrVj&$r42j;hmr-arc&9aDf0H0Ci!m&C2*Z\!G?$DAH?=O
+raPn9!+>e5!a]/<r`fM/>$Co.!a&N*rDiu"<)ifps&/korD<Mir_EAcs%EDcW;ln0o=Fb0qRV,N
+:Jakb;H$Ln<E<1'=]ns6>[CcF@:E_XAS5[jCMRd)E,fo?Fa&(VH@1-jJ:`E-L5:\EN/s'`PEhH$
+R@B_<TV8-VVPgDnXfen5Za@0M\[oGe^VI_(`Q$!@bKJ/Ud*^:ke^rF+g=tH>hr*JQj5f=akNM0q
+lg4!*mdL2F"S)'RoCW%T!quB_rqQNhs8)Zjrqu`no_sFAMZ82~>
+JcC<$MuWGKrVc`nr;6Njs7uZhHM@.,p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;Y['Hp>XfSP$Vkp2`TUq^DR[BD+PELueN/NOKL4t82J:;onH?aXV
+FE2A?DJa0(BkV*iA7B"U?=@MbFF8Xur0IALs-EVKrfmGHrK?r<rfI)@p6,B<rf[8CqiL]9s,I)=
+rJp]5!06u:nrE'rrJpc7!07#;!06o8s,?u;!0$l7!K<$7Mu\e0N9lNLMi<YIg"P39h;7)JiT&tZ
+k2tjjl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqYU0gr;HT]rq6<SrqcTjr:p0fqYg6eq#:$e
+pA=O_o`+O\o)J7[nGVhUmf2\Rm/QAOlM]rKki_..jp'r.jKc+u[/RK5\,Wu;\c95H]=kqm^VI_(
+_u@UR`rF-ZaoBNcbg+N5d/VMndf7ere,\%uf)s[Yg"QG[,2D#1hr!DOj5]4^k3(pkkiqBslKdd&
+m-X6/nF5u=o(2SKqMk3/erBZK$?0p$DJa3+CMR[!rb)=FB)Z?BA7PUJs'Yn8ra,_5?![G7!aAi3
+r`K;)=',?$!``3!rDW_os&&_ks%iVhr([2b!)'9js,HW/p5T$2ISN[8:f1+h;cHat='/U.>?kE>
+?XR;O@qB4aBPD6tD/O<4EccGJG^=[`I=Hd!K8#&9M2R=ROHPfmQC+)0S=ZCIUSOcbWN*)'Yd(OA
+[^WfY]Y2(q_Sa@4aN;WKc-F\`daZh!f@em4h;-uHiSrnYjlYail0@U$m-X60s6p0]o()DErq-?d
+p\4[^s7u]kr;6KkrVcBfJcCW-J,~>
+JcC<$MuWGKrVc`nr;6Njs7uZhEqf;$p%@tLoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe,L`l5j4^q[Rq]",;Y['Hp>XfSP$Vkp2`TUq^DR[BD+PELueN/NOKL4t82J:;onH?aXV
+FE2A?DJa0(BkV*iA7B"Ur^6ZS!_H*^qb[;grD<Jhr(d5er_DuZl:qCV:/1IXr(m;epJ(Z_q+po`
+s%iMeq+prcrD`l!<W6##<E)rm;u]ht<;]Yp<;'8g<!H8u;,U:h;>a8h;#jMi;^57Af@em4gtgiF
+i8N_VjQ>UfkiqBum-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)WirVZWmmJceYkPk>Vqu$6drVHKg
+qtU0brq?6^s7H?_r:9mXs7$!Us6fpSrp9[N!:'OI!pJh1roO@FjQ'WQra#S3ra>b7"^kbI@U`mI
+B)ZHCB`;]KC27U%D#S5MD>nGQDuXeUE<L<'FED[)FrkjPH$O^^H[:$cI!gBlJ:N3%JqAW-KS5&4
+L5(J=M#N59MMmCONK0*^o2Y*UkZ.V%$?0p$DJa3+CMR[!rb)=FB)Z?BA7PUJs'Yn8ra,_5?![G7
+!aAi3r`K;)=',?$!``3!rDW_os&&_ks%iVhr([2b!)'9js&JYiq,R8jISN[8:f1+h;cHat='/U.
+>?kE>?XR;O@qB4aBPD6tD/O<4EccGJG^=[`I=Hd!K8#&9M2R=ROHPfmQC+)0S=ZCIUSOcbWN*)'
+Yd(OA[^WfY]Y2(q_Sa@4aN;WKc-F\`daZh!f@em4h;-uHiSrnYjlYail0@U$m-X60s6p0]o()DE
+rq-?dp\4[^s7u]kr;6KkrVcBfJcCW-J,~>
+JcC<$MuWGKrVc`nr;6Njs7uZhs7ZNerq1F+oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[['R$AY,nY&Vl$8aTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1XBl8*BL6A")[f4VPciVP=cMburbfe,K`Poa2_8*h"^APYE^AbeG]`,PC
+]`,VB^AbeG]`,VA]`,PB\cK@Qp::47rji'="1bqN\+I-+[J[K&[/mnMqmZX:r4)U4!4Mj6qm?:-
+qQp71qmHR8\@D@F!4`$=rj`!;*4FMQg=tH>hr*JQj5f=ak32'olKdg'mI'H3nF?MK!V>s_p&Fac
+p\ssfq>U6fqu6NkrU9aUs60IYrVQNequ-Bjq>0mcp]'sap&F[aoDJ1Znc/+Wn,MeUmJZDOlN$5K
+kmck>kN:pqnF?&?oCV_LrqHKhrqZ]orVj##r4)g;hRW$`$$($*E,]`5DJa4hCB80arb)=FB)Z?B
+A7PUJ!b#JEra,\4?2e+/>Q7n+=TV],=8l8#<W?%s;u]bq;>j>k:]=,e9rJ$i]CWW1]DK0g:/=\_
+;,U=k<*!%$=BSg3>[:ZC?t!MTAS,RgC27X'DK'T:FEVkQH@('hJ:W?+L51VCN/`m[P*D5uR$sM8
+StMdQV5L8lX0&P/Z*UjH\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P6;hV[8Mj5]7`k3)!nlKdg(
+mdKTKnF?)?oCMVRo`=d\rV6Egs8)Zjrqu`no_sFAMZ82~>
+JcC<$MuWGKrVc`nr;6Njs7uZhs7ZNerq1F+oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[['R$AY,nY&Vl$8aTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1X>@(fSEHce`MuK%AQN3?LQ2[!JPPp[>OoCI@OnFn9PQ$aEOo(7;Nrk?$
+NW+t6NW5%:NUr20N<#"-NW+t<NW5%9N<#":N<#"8N<"q:N<"q:MZSisNVn_9NK!jppl+p+!0$f7
+*fc5>f\,!5h;-uHiSrnYjlY^hl07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqYU0hr;?N^rpg$P
+rqcTjr:g*eqYp<eq#:$fpA=O_o`+O\o)J7[nGVhUmJuYQm/QAOlM]rSki_-kk-2+rZEpn:[03qI
+\%&sI\I,p[]=kqm^qmq,_u@UR`rF-[aT]i1bfnAYrm:\ms3gqr"k;)Rf@\^SfbW;rgYCT?h;@,K
+iT&tZjlYahkih9rl2L#KljE.Jn*ol;o(2MIpA9jCNn'*qEcH)<E,TW3D/B2e!GZ?JBE;aXrac+@
+A,]p=@:3LB?NFJ=r`oJ-s'#D)!a&N*r`9&!s&Aqqs&/korD<Mir_EAcVuQ^To8NO*!0$o:s,MP'
+:Jakb;H$Ln<`W:(=^#$7?!^lG@:EbYAnPdlCM[m+E,fr@G'A1WH[U?nJV/W1LP^nINK90aPa.T&
+R[]k>TV80XVl6VrXfen5ZaI6O\\#Mg^VRe*`Q-'AbKS8Xd*^=le^rI,g>(N@hr*JRj5oFckNV6r
+lg4$,n*^JMnac8BoCW%T!VZ9dq#C0iqY^6ir;HTdrdk*,s*t~>
+JcC<$MuWGKrVc`nr;6Njs7uZhs7ZNerq1F+oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[['R$AY,nY&Vl$8aTq@pHR[BG,P`h,hNJraOL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1X5sdn,7n?-D:&@`e:]+&g:]=,g:]4&c:B45d:[1[T:\7E[:]=,`9`Rra
+:]!le:\mi^:]=2j:B=9mqGmMq!``3!q,7Ap<E3#s;u]hp;ZKeo;uT_r;uTYo;Z9Pm;#O5k;Ya61
+f\,!5h;-uHiSrnYjlY^hl07L!m-O--n*fc9rpg*]o`"O`pAamdq#C0hqYU0hr;?N^rpg$PrqcTj
+r:g*eqYp<eq#:$fpA=O_o`+O\o)J7[nGVhUmJuYQm/QAOlM]rNki_-kk$@girF#Y6"^kbI@UisJ
+B)ZHCB`;`FCB\QkCMRa'rbh^Rs)@sW%<?N3FEMbNG'J7WH$Xf8HiJI+IXcltJUrE)K7ei1KnP28
+LPL]bM$JorMi<XUOHAp2n5SRN$$($*E,]`5DJa4hCB80arb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/
+>Q7n+=TV],=8l8#<W?%s;u]bq;>j>k:]=,e9rJ$i<V'2d<VoaE:/=\_;,U=k<*!%$=BSg3>[:ZC
+?t!MTAS,RgC27X'DK'T:FEVkQH@('hJ:W?+L51VCN/`m[P*D5uR$sM8StMdQV5L8lX0&P/Z*UjH
+\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P6;hV[8Mj5]7`k3)!nlKdg(mdKTKnF?)?oCMVRo`=d\
+rV6Egs8)Zjrqu`no_sFAMZ82~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfc-+;PaMu3:_SEq!]=GG[[Bm0CY-"b)W2?AcTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Y?tjV)JVfS^Xh2pYd/VE'cHXYZc-4ARaMu3;_SO%'^](tI^&GbG^&PbF
+]DoPC^&PeH^](tE^&>SF]tD#W]*5dV]",A_pUL:8rjhs:!4VR.!4;[3rO2+$s1JQH\[]/[ppg10
+!4Mj6qm?=.qR$70rO)m=\@B)[\GNi:\Gs,>\/2U+g=k?<hV[8MioB+]k3(sml0@U$mI'uB#4V0R
+o(2JFrq6<b!;HHes7uZjr;6HjrVc0`nc.eOqYg?ip\XpcrV??crqHEcr:U']s7?0Zs7--YrU9dS
+!:BaOs6B[MrTOaSmI'H4nF?)@oCV_MrqH]nqYL*erVj##fX^CZ$?L6-EH#l8DJj<-rbDOLC&VcH
+B4h-S!G#^>@KKtG@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iVhr_99ir4D.'s%n2B
+;H$Ln<E<.%=]np4>[:]D@:E_WAS,UhC27[(DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5uR%'V;
+T:r!TV5L;mXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*
+mdKW6nac5UoCV\Jp%J+RrV-BgrqcQirqucoo_sFAM>r)~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfc-+;PaMu3:_SEq!]=GG[[Bm0CY-"b)W2?AcTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Y?sI&MD0'rOLQRo%QiEBMQ2[$IPQ$a?OoCIAOnFn8PQ-gFOo(7;O8k7?
+NW+t6N<#":NUi,-N<"q.NW"k;NW+q>NKB4uN<#"9N<#"7N<>-!NK!jp!fW+urJUc:N;SV0N;\_9
+N;JV7N;SYNf\5'7h;7&IiSrnYjlYail07L!m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0hqY^6hr;HT^
+rpg$OrqcTkr:g*eqYg6eq#:$epAFU_o`+O\o)J7[nGVhUmJuYQm/QAOlM]rIkl.dfZ*L\7Zi7?8
+[^W`U\Gj#I]">Yh^;%J#_o0I2`;[dUaT'?ib0/#QcHjkadF$CjrmN%?e^rF*f@ej2g=tB;gtgiE
+hr3PSj5f=akND'ml0@R"li-5XmI'H4nac8Bo_/%WNV/=^N='`IEH,r:Df0H0D#S2NC2*Z\!G?$D
+AH?=OraGq;?srt@!FB(2>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>j:B!tbs87lBN;efcN_iPL
+;H$Ln<E<.%=]np4>[:]D@:E_WAS,UhC27[(DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5uR%'V;
+T:r!TV5L;mXKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*
+mdKTPnF?)?oCV\Jp%J+RrV-BgrqcQirqucoo_sFAM>r)~>
+JcC<$MZ<AKrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfc-+;PaMu3:_SEq!]=GG[[Bm0CY-"b)W2?AcTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Y?pd:L7R]j=928:X;#X8j:Amue:Adoe;#*oO:'+3d:%qE\:]=,`:&dua
+:]!le:]=)h:&[oa:]4)i:]=/j:]=Dk<W6##<E)rn;Zg!!<E/rrr`&hp!*&hor_s&";Gg:h;Z0Jm
+;#O5k;YsB.f\5'7h;7&IiSrnYjlYail07L!m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0hqY^6hr;HT^
+rpg$OrqcTkr:g*eqYg6eq#:$epAFU_o`+O\o)J7[nGVhUmJuYQm/QAOlM]rIkl"fe?3":0?N":3
+@0BtH@U`jGB)cNCB`;`GCBeTlCi!m'D>nDdE,TZ6E,fl<EcZ>EG'8(QG^+LZrd+Tks*OuuIXclt
+Jc:9$KE$W)L&Zo-LC8opM2I1KN/WaVOHAa-p/L0S$?L6-EH#l8DJj<-rbDOLC&VcHB4h-S!G#^>
+@KKtG@/aL6?=!P8s'#J,rE02(=',B%s&K(urDW_os&&_ks%iVhr_99ir)MoZs%n2B;H$Ln<E<.%
+=]np4>[:]D@:E_WAS,UhC27[(DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5uR%'V;T:r!TV5L;m
+XKA\1ZEpsI\@K5a^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac5U
+oCV\Jp%J+RrV-BgrqcQirqucoo_sFAM>r)~>
+JcC<$MZ<>Jrr)fnrVQWks7uWgI/!@.p%@tKoCDJBnF,i6m-O''l0.<mjlGI]iS`SKgtUQ8f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7K(V?Yab1JrGthY/UCe"4,9=cMl&rbfe,K`l5j4_8*h#rk8BGrkABF!PH&D
+]`,VE^&YqI^&bp]qn<$Bs1J]N]=bbf]"5G`p:117rOMm:s0qX/qmH@1o<eS*rj;a5rj;a1rk/HH
+\[f5\ppg10!4Mj6qm6F2['TS8rjDa6!k5\Lr4)p>\[f6K\KSH8g=tE=hVd>Oj5]4_k3(smlKdg'
+mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtp?irVc3amf2MMqYg?ip\XpcrV??crqHEcr:U']s7?3[
+s7-*XrpTmTs6]dO&aS`Il0Rd(mdKW6naZ5Bo_%qWp]1-hq?$Qmric@R\aI!-F:*)0EH,r9Df0H0
+D#S2NC2*Z\!G?$DAH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>j:8Ipe
+]BQp,:k)>?;c?Xq<``C+=^,-9?=.)K@Uit\B4u!pCMds.EH6/DGBeF[I!pKpJqJc3Ll%%KO-#Ng
+Q'Rf*S"-(CTqeE\Vl?\tY->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5Oe
+kiqBum-O--n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*+s*t~>
+JcC<$MZ<>Jrr)fnrVQWks7uWgI/!@.p%@tKoCDJBnF,i6m-O''l0.<mjlGI]iS`SKgtUQ8f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7K(V?X@2UD01&QLQ_Y'!1*PJrfmDGrf[)>rfI,Aoof6:rf[8CqiL]9!fi8"
+rf6f6s,R#:o8`a.!0$H-rf7#<s,R&;",`2%O8Fn:Nr+e9Nr"b8N;nkGN/NUQN/`gUNJrjVN;SV/
+N;SY;N/`gUrJ_tZg"P39h;7)JioB([k2tjjl0@U$m-X60n*ol;o()DEo`"Lbp@n=[q#C0iqYU0g
+r;HT_rpKgMrqcTkr:g*eqYg6eq#:$epAFU_o`+O]o)J7ZnG_nVmf2\QliZS=lKS;Oricg9ZEggC
+['d<M\$rlWrj`<G]=Ybj^;%M$r5ATSrlG,]$d6c<c-FY^d*^7hdf.]JeCE1&f[ng0g=k<9gt^`B
+hr*JQj5f:`k3(pkkiqBtlg*p(mHsB2nF?)?o_%qVNUr1]NW4)-F)l8?E,TZ4DJa4hCB80arb)=F
+B)Z?BA7PUJ#@V"J?XI,G?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:]=+bs8.fAN;nn;:k)>?
+;c?Xq<``C+=^,-9?=.)K@Uit\B4u!pCMds.EH6/DGBeF[I!pKpJqJc3Ll%%KO-#NgQ'Rf*S"-(C
+TqeE\Vl?\tY->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--
+n*fc9o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*+s*t~>
+JcC<$MZ<>Jrr)fnrVQWks7uWgFnbV'p%@tKoCDJBnF,i6m-O''l0.<mjlGI]iS`SKgtUQ8f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;YZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV*iA7K(V?U7!W70?(Q9i(O\r_EMhr(m8drD3Dhq+p9N!)N2]r(m;epItW_q+pl_
+s%iVh!_lEbrD*Dgr_NMis%iYkrD*DfrDr_os&K2$<)iZl"]SK%<)Z`o<!6-!;cH`n;u]f!;c6Ii
+r_iMg!)ibo+PGK'gtgiFi8WeWjQ>UfkiqBum-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)WirVZWm
+n,DbTkl1GWr;?<drVHKgqtU0brq?9_rq-6^rUU!Yrp]pUs6fpSrTj^RlK[V=>l@t-?3":1?3"@3
+@/j[8?ishH@q5LMrb)4Ds(MOLCMWocs(_aSDJjB1rbqgUs)AosF)uGGG'8(QG^+LZH@'sbH[L3i
+IXcluJc:9$K*$^[L&Qi,LC/ioM2I1KN/WaVOQ9F?<97-[F:*)0EH,r9Df0H0D#S2NC2*Z\!G?$D
+AH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a>j:8Ipe<U!K_:k)>?;c?Xq
+<``C+=^,-9?=.)K@Uit\B4u!pCMds.EH6/DGBeF[I!pKpJqJc3Ll%%KO-#NgQ'Rf*S"-(CTqeE\
+Vl?\tY->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9
+o'uhQo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*+s*t~>
+JcC<$MZ<>JrVc`nr;6Njs7uZhI/!@.p%@tLoCDJBnF,i6mHj3)l07Bnk2bR_iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vl$8aTq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1X?YXG$IY3ZIUp9pGs3L_js31npbK7iG`Pf[1_8-&b!PZ8G^AbhE]`,VE
+^AktF^AknH^'23_]tM(krjr?F\[oA_](``8])K8<\Gs&2[K3eCr3cL3p9an/qm?F2r3ZR2Z2D<8
+])T>?\,a#8\GEZ7[f3Z9['d==ZiIH1ZiRSArjDd7s0r!;!P,`:\K&,ig=k?<hV[8MioB+]k2tml
+l0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjr;H-ali65KqYg?ip\XpcrV??crqHEcr:U']
+s7?3[s7--YrU9dSs6]dOs6K^Os6U0]n*oi:o(2JFp%JC[!;ZWj!rW#rYQ*4bm^N^KFEDSEEH,r9
+Df0H0D#S2SC2%?pB4kiUAH?=OraH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a=c
+s8'@m\p[CP;H$Lo<`W:(=^#$7?!^lG@U`kZAnPdlCM[m+E,fr@Fa&(VH[U?nJV/W1LP^nINK90a
+PEhK%R[]k>TV8-WVl6VrXfen5Za@0N\\#Mg^VRe*`Q$!@bKS8Xd*^=le^rI,g>(N@hr*JRj5f@b
+kNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*+s*t~>
+JcC<$MZ<>JrVc`nr;6Njs7uZhJ+r[1p%@tLoCDJBnF,i6mHj3)l07Bnk2bR_iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vl$8aTq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1X?X-rKBPqs>J;TYZQN3?MQ2[$IPQ$a?OoLOBOn=h7PQ$aFOTCQ+rK-o;
+s,R,=rf6f6!06u:o8`^-!0$K.rJpo;!06r9s,-c:!0@#:!06r9!06r9rf$l:r/CT6!fW+ur/:6,
+qMcJRNS<+Ah;7&IiSrnYjlY^hl07L!m-O--n*fc9rpg*]o`"O`pAamcq#C0iqYU0hr;?N_rp0UK
+rqcTkr:g*eqYg6eq#:$epAFU_o`+O]o)J7[nGVhUmf2\QliaMrYck80YlCs.ZMq30[03qI\%&sI
+\HodY]Y2%o^VRhd`!+-"`lH0ArlG;dbfnAYrm:\ms3gnq!S#[!f+cljg"P07gYCT?hV[8MioB+]
+k3(q,kRm(ElKdd&m-X3/n*ol<o(;VKrf-K/er:,]FEDSEEH,r9Df0H0D#S2SC2%?pB4kiUAH?=O
+raH+@?sm>K?=$q:>lS".>5_S*=BAT'<rZ2"<;fbq;ZBVm;#a=cs8%`@N.-a_;,U=k<E<.%=BSg3
+>[:ZC?t*SUAS,RgC27X'DK'T:FEMePH@('hJ:W?+L51VCN/`m[P*;/tR$sM8StMdPV5L8lX0&P/
+Z*UgG\@K5a^;%M$`5Ta;aihoRcd:(geCE1'g"P6;hV[8Mj5]4_k3)!nlKdg(mdKW6nc&([oCW%T
+!quB_rqQNhs8)Zjrqu`no_sFAM>r)~>
+JcC<$MZ<>JrVc`nr;6Njs7uZhI/!@.p%@tLoCDJBnF,i6mHj3)l07Bnk2bR_iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GDZ['R$AXfSP%Vl$8aTq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;G@Df0B,BkV-jARf1X?U7%F6qBj=8P](XpeUi`rD3AgqG6<M!`)QcpJ1W^r_E2^s%`DdqG%#d
+r_<Pi:/+L_:B4/h:]4,i:B45g:BOEf<E9$!qGd`!<E<.#<)i]ms&B"upf%;n<)icos&8tsrDNYo
+!)iVi*E#g7g=k?<hV[8MioB+]k2tmll0@U$m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjr;H-a
+li65KqYg?ip\XpcrV??crqHEcr:U']s7?3[s7--YrU9dSs6]dOrET8+s'>\2rEfG1s'Z(=@:E\U
+AH$3?BE)ZEBaAHhCi+!)CM[keDZ4SSE;jh[EcZ;DFoHOrGBe@XH$Xg`H[C-fIXZcsJ:[]Os+:H-
+KnY89reCi:M2@+JMi<XTNf_1Z%<Zc7F)l8?E,TZ4DJa4hCBeNfBP;$kB)Z?BA7PUJ#@V"J?XI,G
+?2e+/>6%k*=TV],=8l8#<W?%s;u]bq;>j>k:SRmc<U*P3:f1+h;cQk!='/U/>?kH??XR>PA7]@c
+BPM=!DJjE5F*)PKG^=^bIXm!%KSG8=MN!OUOHPfmQ^F52SXuLJUSXleWiN8)Yd(OA[^`l[]Y;.s
+_SjF5aN;WLcHjkbe'uq"f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<h
+qu6NlrUg)?s,$c+~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq1O.oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sdVdGC54/RAdI=rm(Sirlkqsb/q]D`PfX1_8*k$^;'W\!PQ5G]`>_E
+^&PhG^\khG^&PhE]a29_]Xtee]",EG\H'5>\c'&<\+I*2[C!?KrjD^5pU("0rj;a5rj;a5qm?O7
+Za-h6]a)3`]=YYb\@DOIrOD[4!4Mj6!OT9/[/792[KF"I\@;IIrOEcT\[gGKgtgiFi8N_VjQ5Oe
+kiq?sm-O--rpL'\nac8BoCW%Ts7QHerV6EgrqcNhrqu]mnG__QlMgYYqu$3crVHNhqY:'arq?9_
+s7H<^rUU!Ys7$!Us6fpS''\]Hlg*p(mI'E2nF?&>oCV_LrqQNhrqc`priZ:R\a?m,FoHIdF)l8?
+E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%s;ZK_p;>sCb
+s7s:m\pdOU;cHat<`iL->$P<<?XI5N@q9._BPD3sD/O93EcZ>GGBnL^I=Hd!K8#&9M2R=QO-,Ti
+Q'[l,S=Z@HU84W`W2cr$YHY==[C3TU]=bkm_8=.0a2lEHbg+P^daQ^sf@\g2gtgiFi8N_VjlY^h
+l07L"m-X60n*ol<o)J:bo_%nNp@nO\s7u]kr;6KkrVcBfJcCT,J,~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sd/GASZ:.I=mEDQBqK7rfmDGrf[)>!0I2Bo90$8rf[2ArK-o;!07&<
+s,Qo7s,R#:o8`g0",r4uN:W&-NrP+=NqnY9MM[2gOT1C;N<"q2NW+k:NVe\3N<"q8Mt;lFNJrjV
+g=tE=hVd>Nj5]4^k3(sml0@X%mI'uB#4V0Ro(2JFrq6<b!;HHes7uZjqtpBjr;H-alMp/KqYg<h
+p\XpcrqZEcrqHEcr:U*^rq$*Zs7--YrU9dSs6]fg!O&a,YPta5Z*L[AZa@-J[^N[E\Gj&=]*5j\
+^;%J#r59&``l?'?aN;QHbKS2Uci2;kdJqYpdfS%Lf)F8:f\+s3g=tB;h;-rFi8N\UjQ5OekNM./
+klpA<lg4!*rpL-^nac8Cp%FB)nW)1[!-S9_"`n^(EH#jqD@gZ$CMR["BkV0mAnGUcA7T3L@KBnF
+ra5\3!+#S/s'#J,r`T8's&]2#s&K(urDN\or_`YkT`=hIl\p9j;c?Xq<`W=*=^#'8?!grI@Uiq[
+AnYmnCMds-EH6,BG'A4XI!pKpJqJc3Ll%%KNfT<cPa.T&R[ftATq\?ZVl6VsXfnt7ZaI6O\\#Mg
+^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@i8ESSj5oFckiq?sm-O--n*fc9o()hP"n_K\p@e7Zq#C0i
+qY^6ir;HTdrdk*+s*t~>
+JcC<$M?!8JrVc`nr;6Njs7uZhs7ZNerq1L-oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sc8f6:4.18P;eS;#!ib:B+,f;#3uP:&n)]:Adoe:A7H_:AI]^:&n)h
+:B+#g:Amri:/=[a;#a>k;#*oe:]O8i<<?3$<r5ns<!63%<`E&o;Z]ou<V05p;cH[o<)cfp;Z9Vp
+;Ys<,;VKm\h;7)JiT&tZjlYail07L"m-X6?mfr:Oo()DDo`"O`p&Ojcq#C0hqYU0hr;?N_rp'OK
+rqcTjr:g*eqYp<eq#:$epAFU`o`"I\o)J7[nGVhUmf2\R>Q%h)?2n42?2\+/@/aR<?t!MS@qGUN
+s(D@Frb;CJ#&J-mCMRa'rbh^Rs)@sW"EJR*FERS+!I&efGmo"GH@(!dI"$NoIt3+LK)^H9KS>)6
+L51P?Ll$tGMi3ORNK0+=<<.1@F9Q`+EH,r9rb`9aChmg$C2%?pB4baeARo=]raGn:@/aO5?3":1
+>lS".>5h\)=T;J%<rZ2"<;f_q;Z9Pm:n[ja<U3V5;H$Ln<E<.&=]np5>[:]D@:E_WAS,UiC27[(
+DfKf=FEVkRH@1-jJ:`E-L5:\EN/is]P*D5uR$sP:T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<
+b0/#ScdC1ieCN7(g=k?<hVd>Nj5]7`k32'olKmm)mdKW6nac8No*+dZp%J+RrV6Egs8)Zjrqu`n
+o_sFAM>r)~>
+JcC<$M?!5Irr)ior;6Njs7uWg!Vc<eo`=^Vrpk.#nF,i5m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;XZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV-jA7K(W?XIShG_(a9SufI$cOA+Dc-4AQaMu3<_ns7h_#M1H^&bp]qn<$DrkJKI
+rkAQL]tV8\^AbhG]`5VB\cK@QpppF9rjhs:s0q[0s0Vj6rO)U4p9an/rj;m9[C*BKqm?U9[C*KN
+Zi%N9]EPp[\[f5[rjVj9q6p@4rO)X3s0_a2s0_m8rNug<[^`iV\GNfYg=tH>hr*GPj5]7`k3(sm
+lKdg'mI'H3nF?&>o(2MGrq-?dp\4X]s7u]kqtp?irVc6bkl9rIqYg<hp\XpcrqZEcrqHEcr:U*^
+rq$*Zs7--YrU0mPkiq?srp($[mHs?1nF5u=oCMVIpAXgfq>1*f!WE##s4FmM\,pktFoHIdF)l8?
+E,Y_n&8c6!CMITuBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k+=oVV(=8l8#<W?%t;u]bq;#jFb
+s8T\+]C!1Y;H$Ln<E<1'=^#$7>[CcF@:E_XAS5[jCMRd)E,fo?Fa&(VH@1-jJ:`E-L5:\EN/is^
+PEhH$R@B_<T:r$UVPgDnXKA\1Za@0M\[oGe^VI_(`Q#s>b0/&Td*^:ke^i@*g=tE=hr*GPj5f=a
+kNM0qlg4!*mdKW6nac5OoCW%Ts7QHerV-BgrqcQirqucoo_sFAM#Vu~>
+JcC<$M?!5Irr)ior;6Njs7uWg!Vc<eo`=^Vrpk7&nF,i5m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;XZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV-jA7K(W?XI,KAScF4It`lJQ'VE7s-3MHrfZr:nrip7rf[;D"d5"0OcY\%O8k7>
+NW5%7N<#":NUr2.NW4t.NW"n;N<#"6NW4t;MZAY4OT1@ANqn\7N;/D+N;S\8N;JP)N$$d.h;-uH
+i8WeWjlY^gkiqBum-O--n*fc9nac8Bo^r.U!quB_rV6Egs8)WirVZWmnG_YOlMgYYqu$3crVHNh
+qY:'arq?9_s7H<^rUU!Ys7$!U!N`F&Y5b[*Yl:j+YlCs.ZMq06['d<M\$u@Hrj`HL]Y(tm^VI_)
+`5BO4rl,,^aN2KFb5TTgcHjkadF%sAs3h;(e^rF*f@\d0gA]hOgtgfDhr3PSjQ,IckND'ml07Ku
+lg*p(mI0N5nF?)?o_%p;nW)1[!dAg1rcA<bEcH)<DuOVcD/=!'C2.HrBP1phAS#C_A,]p<@:9(A
+s'>\2r`oJ-!*]A)s&f;&r`9&!s&Atrs&/ko!)T<fs,?c5m>QKl;c?Xq<``C+>$G6:?=.)K@Uit\
+B4u!pCMds.EH6/DGBeF[I!pKpJqJc3Ll%%KNfT?eQ'Rf*S"-(BTqeE\Vl?\tXfnt8['mHS]"G_k
+^r"".`lH0CbK\>ZdF-Opf%8U/gYCWBi8EVTjQ5OekiqBum-O--n*fc9o'uhQo`"O`p&Ojcp]1-h
+qY^6ir;QZerdk**s*t~>
+JcC<$M?!5Irr)ior;6Njs7uWg!Vc<eo`=^Vrpk.#nF,i5m-O''l0.<mjlGI]i8EJJgtLK7f@JI#
+dF$:cbfe,L`l5j4^q[Rq]",;XZa-g=XfSP$Vkp2_TUq^DR@';*PELueN/NOKL4t82J:;onH?aXV
+FE;G@DJa0)BkV-jA7K(W?XH,e6UaI78P;hU;#*ob:&n)e;#=&Q:'+3d:\@K\:]=,`:&dub:\mid
+:]F/l9hnDXr_NPhs%iSis%`VkpeUobr_WJl!`W0"r_rktr_s##<`N*uqGRGp<E8Hds&8npr)3Sn
+rD=ZjgYL]Ci8EVTj5oFckNM0qlg4!*mdKW6naZ2@oCV\So`Fj]p\jmeq>^<gqu-HkrUBgMs6BU[
+rVQNequ-Bjq>0mcp\smap&F[`oDS7[nc/+Wmf6Pi>Pqb)?2n72?2e.1?iFI4@0L%J@Uiq[rFQ%B
+rb2:Fs(_dSD/=!'D#A2NDuXeUEW:+[FT6LfGBS1TH$T@7s*Ocns*juus+10$s+:r;KnY89LPL\A
+M2@+JMi<XUNf_4[!dAg1rcA<bEcH)<DuOVcD/=!'C2.HrBP1phAS#C_A,]p<@:9(As'>\2r`oJ-
+!*]A)s&f;&r`9&!s&Atrs&/ko!)T<fs&Aeom8SO4;c?Xq<``C+>$G6:?=.)K@Uit\B4u!pCMds.
+EH6/DGBeF[I!pKpJqJc3Ll%%KNfT?eQ'Rf*S"-(BTqeE\Vl?\tXfnt8['mHS]"G_k^r"".`lH0C
+bK\>ZdF-Opf%8U/gYCWBi8EVTjQ5OekiqBum-O--n*fc9o'uhQo`"O`p&Ojcp]1-hqY^6ir;QZe
+rdk**s*t~>
+JcC<$M?!5Irr)fnrVQTj!;ZTgJ+r[1p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe/Ma2Q!6_8!^s]",;Y['R$AXfSP%Vkp2`Tq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sdS`F*`ItQ(b=pci;;jbmM\;aN)<>`5BI._>_4M^\YYL]tV1n^:h7p
+rP&TO^VIV!^:qA]^'23a]tD%krk&-?pUL:8rOMm:s0qX/!4Dg5rjDa6p9jq/s0Vj6rjDd5r3cR5
+rNua9\@/dB^&5MG]=GJ^\G`o9\G3N5[f*W5[/[Q4[/[N_[^W]R[C*HP\@8rW\[]/[g>(N@hr*JQ
+j5f=akNM0plKdg'mI'H3nF?MK#kR]\p%A%Pp\4X]s7u]kqtp?irVc6bkl9oHqYg<hq"t$drV?<b
+rqHHdqt:!]s7?0Zs7--Ys5s@E!pJn6rp0UN&FJoRn*ol;o(2MHp@n@Wq>1*f!rW&sY5\L5ft$O\
+s*#]2F`__HEcQ/>E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW@:<RC?NOP>?2e(1>?Y50=oVV(=8l8#
+<W?%t;u]_q;4dgc])0,-\pmXX<E<.%=BSg3>[:ZC?t*SUAS,RgC27X'DfB];FEVkQH@('hJ:W?+
+L51VCN/`m[P*;/sR$sM8StMdPUo1/kX0&P/Z*UgG\%0)_]t_A"_o9X:aihoRcHstfeCE1&g"P3:
+h;@/LioB+^k3(smlKdg'mI0N5naZ2@oCW%T!quB_rqQNhs8)Zjrqu`no_sFAM#Vu~>
+JcC<$M?!5Irr)fnrVQTj!;ZTgJ+r[1p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe/Ma2Q!6_8!^s]",;Y['R$AXfSP%Vkp2`Tq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sd,F@:j=tH%:[5QN!0KPl?mGP4k%/P5CICP5gXEP5^RFOHGY%NrY4>
+NW5%7NW5%:NUr20N<>-!N/[@frJpl:!06i6rJUi9Mi3JjOT(=@Nr+h7N;AP2N;nh7N;\b8N;JP/
+N#[b7N8!(ChV[8MioB+]k3(sml0@U$m-X60n*olHnd+jZo_%nNp@n=[q#C0iqYU0gr;HT`rojCH
+rqcTjr:p0fqYg6dq#:$fpA=O_o`+O\o)J7[nGTEiXfei(YPtd+Ym@YAZa@-J[^N[E\Gj#E]">Vg
+^:q@u_YqCT`Q#p<rlG,]$-UQ:cHab_d*^8?df7c"eCE1&f\$2V-JI5/gt^`Bhr*JQj5f:`k3(pk
+kiq?slKdd&m-a?2nF5u=o(;VKn;c(Zs*#]2F`__HEcQ/>E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW
+@:<RC?NOP>?2e(1>?Y50=oVV(=8l8#<W?%t;u]_q;4dgcN;JV&N.4c*<E<.%=BSg3>[:ZC?t*SU
+AS,RgC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$sM8StMdPUo1/kX0&P/Z*UgG\%0)_
+]t_A"_o9X:aihoRcHstfeCE1&g"P3:h;@/LioB+^k3(smlKdg'mI0N5naZ2@oCW%T!quB_rqQNh
+s8)Zjrqu`no_sFAM#Vu~>
+JcC<$M?!5Irr)fnrVQTj!;ZTgIeWR0p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JI$
+da?Cdbfe/Ma2Q!6_8!^s]",;Y['R$AXfSP%Vkp2`Tq@pGR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sc2d6UO:484cQPrD<>dqbI/er)!8dkt_7S!DZG`:Amue:A@Q`:AI]^
+:'+3d:B!uf:B"#j:/=[a;#X5j;#!ib:&n#f;#=8j;ufkp<<#tt<;TSq<)lrd<<#nr;Z'Jm;An3D
+h;7&IiSrnYjlYail07L!m-O--n*fc9rpg?do^qhLp@e7TrV6Egs8)WirVZWmnG_YOl2LPXqu$6d
+rVHKgqY:'as7Z?_s7H?_r:9mXs7$%k!*];)rET8+s'>\2rEfJ2rF#h:@UinYrau.Brb2=G!GZEK
+C]\BgD>eAODuXeVE=?l/F*)MIG'A.TG^4T6HN&7*I!pHnJ:N3%JqAW-KS5&5L5(J=M#N59MMmCO
+NK0']`Duq^,Be3OFE;JCEH,r9DJj<.Chmg$Bk_6oB4baeARo:\@U`bS@/aL7?<pk9>QS,5>5h\)
+=T;J%<rZ2"<;ohr;?0Rcs85jn<UNh9;cHat<``C+>$G6;?=.)L@Us%^B4u$qCi401EH?5FGBeF\
+I=?]tK7nu7M2I7OO-#NgQ'Rf+S"6.DTqeE]W2co#Y->1;['mHS]"G_k^r"".`lQ9Fbg+M\dF6Uq
+f@S^0gYL]Ci8N\UjQ>UfkiqBum-O-.n*ol;o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCQ+J,~>
+JcC<$M?!5IrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTq@pHS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sd5SD0C>]NL-HFbg+JX&Br>>aMu3<`59C-^qmh$^q]f]!l)I_r4`-E
+#/7jf^V@LsrP/BHrk8?E!kZ+WrOVd7s1/9B]".^J!4VU/!4Dg5s0_g6p9b%3[C*BKrjDd5r3ZO5
+r3cR5"LY_J\@2=Kqn*'D\[f5[rO;d9ppUC7[C*HOr3cL1s0X#Y\$i`Q\$rfT\@9#Y\D5osi8ESS
+j5f@bkNM0plg4!*mf)YZnF?)?oCMVRp&F^cp\jmdq>^<gqu6NkrUBgKs6BU[rVQNfqu-Biq>0mc
+p]'sap&F[aoDJ1Zjo4BFkNM0plMg)^m-X3.mdT`9o()DEp%J.Tq"adcqZ6WoXoAC4ft$O\-?s`Y
+G'.nKF)l;@EH#i6DJa6,CMR[!BkV0mAnGUcA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'!*B,"s&K(u
+r_o?eq7?O:n%*dD<E<1'=]ns6>[CcE@:E_WAS,UiC27[(DfKf>FEVkRH@1-jJ:`E-L5:\EN/is]
+P*D5uR$sM9T:r!TV5L8lX0&S0ZEpsI\@K5a^;%M$`5Td<aihoRcdC.heCN7(g=k?<hV[8Mj5]7`
+k32'olKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAM#Vu~>
+JcC<$M?!5IrVc`nr;6Njs7uZhs7ZNerq1R/oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTq@pHS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sd5E?t3nhFaJ[sPl?sIPlHsHP4at/P5CIBOogc/P5UOCOSk1>NrG"<
+Nqn\7Nr4n-NrG%;N:Mu-NrG"<NqeV3N;nkAM2I1KMiWquOSk.>Nr+h6N;JV4N;nh5N;nn:N;AJ/
+N;neLgtgiFi8N_VjQ>Ufkiq?tm-O--rpL'\nac8BoCW%Ts7QHerV6Bfs8)Wirqu]mnG_SMlMgYY
+qu$6drVHKgqY:'as7Z?_s7H?_r:9lgr2fn#s/uF,ric@+s02R0rj)d8[C*HO\,No:\c98G]Y2%o
+^r""g`;dgV`Xg,2aN;QHbKS2Ucd0tbdF%sAs3q"urmr(@g"G*5gY:N=h;7&IiSrnYjQ>UfkNM-o
+lK\B7s6L*\n*fc9nac;Dp%Im8er;#$GB\4QFEDSEEcH)<Df0H0D/=!'C2%BqBP1phAS#C^@q&nU
+@:9(A!a]/<r`fM/>$Co.s&]8&rDrqus&AtrSH&DDrJg9)GuRdE='/U.>?kE>?XI5N@q9._BPD3s
+D/O93EccDHGBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,S"?7GU84W`W2co#YHY==[C3TU]=bkm_8=.0
+a2lBGbg+P^dF6Urf@\g2gtgiEi8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6Kk
+rVcBfJcCQ+J,~>
+JcC<$M?!5IrVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3)l07Eok2kX`iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTq@pHS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C1q9mARo7Z?sd5,6U=(084Q6I:Jgj_qbI/eqbR>i:f.-el;%:RohPE\r_E2^!)E;b
+qbI/es%`Pf!)EMhs%`Sir_WSi!)WGdr(d8f"AMQb:f.$h!*&enrDWbsrD`Ymr`/qs!*0"ts&Jem
+!)rhorDW_o'AVF#i8ESSj5f@bkNM0plg4!*mf)YZnF?)?oCMVRp&F^cp\jmdq>^<gqu6NkrUBgK
+s6BU[rVQNfqu-Biq>0mcp]'sap&F[aoDJ1W=TDY'>Q%h)>ln><?2\+/?jL1M@:<VS@q0'JB)cND
+BFANfBkhF"D/=!'Ci0/hrbqdTs)A0^F)uGGrcSEgG^+LZrd+Qj++/KcIt3'#JV&K+K7no3Knb>;
+LPUeDMMd=MN/`jYOMt3HG^"@TF`__HEcQ/>E,TW3D/F*)CMIQtBP;$jAn>Oa@q/tW@:<RC?NOP>
+?2e(1>?Y50=oVS(=8c2"<W?%t;k3m`<;fhb<-VDD='/U.>?kE>?XI5N@q9._BPD3sD/O93EccDH
+GBnL^I=Hd!K8#&9M2R=QO-,TiQ'[l,S"?7GU84W`W2co#YHY==[C3TU]=bkm_8=.0a2lBGbg+P^
+dF6Urf@\g2gtgiEi8N_VjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCQ+
+J,~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkV][Bm0CYH=k*W2HJeTqJ!JS!fY0Q'7AlNf8mQLk^V9JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AIBQ&-ELle%$ZHg_>#g:B3a2Z*:_nuDhrkSNJ!5AHI#/7jd^;%Cr
+rkANM^VBc`rP/BJs1\QJrk/<Erk&3A!P>r;\H'5>\brr;\+I*/[JmQ4[JmW.[K!]8[K!W6[JmQ3
+[K!]5[K!]8[g'.G[^ETU]`#P?]EGjW\[]0J[fX(K\G3Q4[K*f8[K*`6[/RK4[K<kG[f3`X\@:;M
+hr*JQj5]7`k3)!nlKdg'mI'H3nF?&>o(2JFrq6<b!;HHes7uZjqtpBjr;H-ajo=WFqYg?ip\Xpc
+rV??crqHEcr:U']s766]ro=(@rT44FkiqC2lPJpTmdBQ5naZ2Ao_%qPq"X[]qu$?grVir!!4pmp
+m^W:B#^CQ;G'.nKF)q8"$?0p$DJa3+CMR[!rb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8'
+!*B,"s&B)!;k!^d\bWi8]CEI]<E<.%=BSg3>[:ZC?t!MSAS#LfBkqO%DK'T9FEMePH@($fIt3-'
+KnbD?Mi<[WP*;/sR$jG6StD^OUo(&hWiW>+Yd1UD\%0)_]t_A"_o0O7aND]NcHjndeC<($f\5*8
+h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCV\Tp&F^cp\jmeq>^<hqu6NlrUg)?s+p]*~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq1a4oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkV][Bm0CYH=k*W2HJeTqJ!JS!fY0Q'7AlNf8mQLk^V9JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AI?!h2[E-?V]MjBWmQ'D93rfZr:o90!7qi^o?!0I)=!07#;!06l7
+s,R#:o8`g0",r4uN:W&-NrG"<NqeV4N;eh:NWk8sMM[4Nrf@)@qi:`;qi1N4qi1Q5s,6`4s,I&;
+qMY3/s4nXOi8N\Uj5oFckNV6rlg4!*mdKW6naZ2@oCMVRp&F^cp\jmeq>U6fqu6NkrUBgJs6BU[
+rVZTfqu-Biq>9sdp\smap&=U`o)S@\WW9*tX9,N,Y55@%YlCs3ZEpmE['fnArODj;#J7X]]tV7s
+_YqFQ`W*pba2l?Dai_fNbg+Q6d/VMndf.\re^j`O.bNG-g=k<9gt^`Bhr*JQj5f:`k3(pkkiqBt
+lg*p(mI'H3nF?)?oCV_Ln;c+[s*4lpGB\4QFEDSErc&9aDf0H0Ci!m&C2*Z\!G?$DAHuaU@q&nU
+@:9(A!a]/<r`fM/>$Co.s&]8&rDrqu!E<!drr@uQN;\b+N.+c-<``C+>$G6;?=.)K@Uit\B4u!p
+Ci+'/EH6/DGBeF\I!pKpJqJc3Ll%%KNfT?eQ'Rf*S"-(BTqeE\Vl?\tXfnt7ZaR?R]"G_k^r""-
+`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo`+Uap&Ojcq#C0iqY^6i
+r;HTdrdk**s*t~>
+JcC<$M#[/IrVc`nr;6Njs7uZhs7ZNerq1R/oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkV][Bm0CYH=k*W2HJeTqJ!JS!fY0Q'7AlNf8mQLk^V9JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AI6UF+-7S$*C;#3ue:&n#f:B"&b;#X8U:Ado\:Amue:A@Q`:AI]^
+:'+3d:Amlg:/=[b:&n)g;#X5j;#!ib:B"&h:^'Tg9h\;]qc*Vqpf%2l!*/qrqbmc"<E3!t<E3!t
+r`/_m!)rbms&8sR)rKT4ioB(\k2tjkl0@U$m-X60n*ol;o()DDo`"O`p&Ojcq#C0hqYU0hr;?N_
+roO1FrqcTkr:g*eqYg6eq#:$epAFU_o`+LbnlJpqrE9/(rEK2)rE]G0s'>V1!af>CrF#k;@U`hX
+Ac63@BDuTDC&_rQCi+!(CM[kdDZ=YTE;jh[EcZ;DFoHOrGBe@XH$Xg`H[C-fIXZcsJ:[]Os+C?)
+s+UK-s+^u<M2@+IMi<USNfT7@<W@=MG^"@TF`__HErL%cE,TW3D/=$(CMIS_BE;aXrac=F@q/tW
+@:<RC?NOP>?2e(1>?Y50=oVS(=8c2"<<6&tRf<@dq,I;mnPjs;<`W:(=^#$7?!^lG@:E_XAS5[j
+CM[j*E,fo?Fa&(VH[L6kJ:`E-L5:\EN/is^PEhH$R@B_<T:r$UVPgDnXKA\1ZEq!K\[oGe^VI_(
+`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo^r1Vs7QHerV6Egs8)Zj
+rqu`no_sFAM#Vu~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eo`=^VrpkR/nF,i6m-O''l0.<mjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,La2Q!6_8![r]",;Y['R$@XfSP%Vkp2`Tq@mFR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sd5FCN+NLMNXL0[*Hn=aiMNB`Pf[o_Z%CO_"k_S^;%Fs^;%Fu^q[Y"
+^qoua!5STKrkAEGrk&BG]"5MbpppF9!kGnQqmZX8oX4b-rj;[4rjMR/rjDm9[']h?rj;X3s0hm6
+rjMj9s0`3>ZEpsJ\%9/`rOr'?"1u+S\G`o:\Fd67[^W]S\$`XC[/[N7['fnA!O]B8[hmlWhr*JQ
+j5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVc6bj8\EDqYg<hq"t$drV??c
+rqHEcr:U*^!9="<!9O4B"R#"5lK\B7!UT4QmLAXSnac8Bo_%qPq"X[]rqccprr0)#!4pjom^NXN
+H$FRXGBS+NFE;L%E<U<"DJj<-rbDOLC&VcHB4h-S!G#^>@fKj:@/aL7?<pk9>QS,5>5h\)=9)G$
+<WH-es8TY*])923])PfW='8[0>?kH@?XR>PA7]@dBPM=!DJsK6F*)SLG^=^bIXm!%KSG8=MN!OU
+OHPfmQC+,1SXuLJUSOcbWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN;WLc-F\`daZh!f@em4h;-uHiSrnY
+jlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+gW)~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eo`=^Vrpk@)nF,i6m-O''l0.<mjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,La2Q!6_8![r]",;Y['R$@XfSP%Vkp2`Tq@mFR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sd5F?=IJ^Ed<.fMj9QlPl?mGOo^].plY02qih#B#a(:5OcbfhOc]I$
+!07&<!06l7s,R#:nrE^/",r4uN:`,.Nq88/N;eh:NrP(?MM[2hMZ8_8NrY:=NrY4;NVe\4NV&/0
+NW"h5MuASNh;7&IiSrnYjlYail07L!m-O--n*fc9rpg-^o^r.U!quB_rV6EgrqcQirVZWmnG_JJ
+lMgYYqu$6drVHKgqtU0brq?9_s7H2g!3?%!!j/W.qlg%(riuI/!joACrjMg9rj`<G]=bej^;%M%
+rPT2b`l?'>aN2KFb08)ScHlL:s3^kps3h"uec+2#f`0Y)gAfq-g`YG0i8EVSj5f=ak3(pkkiqBt
+lg*p(mI'H3nF?)?oC_eFNn96uH?ja[GB\4QFEDSErc&*\Df0H0D#S2NC2*Z\!G?$DAH?=OraPn9
+!+>e5!a]/<r`fM/>$Co.s&]8&rDinuR/d2Eq2G62o8N]MH<46P>$G6;?XI2M@Us%^BP;-rCi401
+EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf+S"6.DTqeE\VlHf"Y->1;['mHS]"G_k^r"".`lQ9F
+bg"G[dF-Opf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBf
+JcCN*J,~>
+JcC<$M#[,Hrr)ior;6Njs7uWg!Vc<eo`=^Vrpk1$nF,i6m-O''l0.<mjlGI]iS`VLgtUQ8f@JI#
+da?Cdbfe,La2Q!6_8![r]",;Y['R$@XfSP%Vkp2`Tq@mFR[BG,PEM#gNJraNL4t83J:DupH?j^X
+FE;GADf0B,C1q6lARf1X?sd5F6:4(.77TpCqbR2d!)<Gfr_N;cr_MfSrD3)]r(m;epItW_peUc^
+s%iYir_<Dfs%iYi!)NPio2#<[r_NPjs%iYi"]%id9N5!h<<-"k;ZKhs<;BGm<;TYq<;fhm;ufko
+;A\0Ghr*JQj5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVc6bj8\EDqYg<h
+q"t$drV??crqHEcr:U*^!*K5%s&f5&!a8f5r`f>+r*9A1?![D8!af>Cr*]_;@q0%\rFQ%Brb2:F
+!,MRMs(hXNr,2OQs)@sWs)\3^rc\<c!-nKgrd+Tk#CLrKIt*!!Jc:9$K*$^[L&Qi,LC/ioM2I4L
+N/WaVO2Y*,H?ja[GB\4QFEDSErc&*\Df0H0D#S2NC2*Z\!G?$DAH?=OraPn9!+>e5!a]/<r`fM/
+>$Co.s&]8&rDinuR/d1bq,I8lo2P`jH<46P>$G6;?XI2M@Us%^BP;-rCi401EH?5FGBeF\I=?]t
+K7nu7M2I7OO-#NgQ'Rf+S"6.DTqeE\VlHf"Y->1;['mHS]"G_k^r"".`lQ9Fbg"G[dF-Opf@S^0
+gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCN*J,~>
+JcC<$M#[,HrVc`nr;6Njs7uZhEqf;$p%@tLoCDJBnF,i6mHj0(l07Eok2bR_iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C2%?nARo7Z(gp]W?!M/dH\@?CTW>`Kb/hWC`Poa3_nuDhrP/HK_"teI^;%G^^]V?e
+^qp#c!5JNKrP&]R]tD%k]=PSc]"7^Js180>r3ua9oX4b-rj;X3s0hX/s0hs8s0Vd5rj;[4s0hj5
+rjMj9rO*$:Z*L[C[C<`Y]D]G=]E>dV\[_XJs1%j5!k>_LqmQX8[C,q>rO)X5(Z!s+i8WeWjQ>Uf
+kiq?slg4$+mdKW6nc&([oCW%Ts7ZKerV6Egs8)WirVZTlnc%SKlMgVXr;?<drVHKgqtU0brq??a
+rT!h:rT44Fl07L3lN-A>rpC6bnaZ2@o_%qPp\=R\qu-EmriQ2#]%OX^\GpjUH$K=4%X)u:FE;JB
+EH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL6?=!P8s',M,r`K;)=',B%QiI&qq7?L9oX]3I
+=BSd2>[1TB?t!MSA7]CeBkhF#DJsN8FED\MH$XjdIt3*&KSG8=Mi<[WOckroQ^F52SY)UMUnsuf
+WiN8)Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkbe'uq"f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3nF?MK
+!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+gW)~>
+JcC<$M#[,HrVc`nr;6Njs7uZhEqf;$p%@tLoCDJBnF,i6mHj0(l07Eok2bR_iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C2%?nARo7Z%q&aN?!L`GB5Ma9JVK;PPl?mGOogc/P5(13P5:C>Op-u2P*(ifr/^l<
+rf$o<q2PE7rJgB.rf%#=NJrhqN<"q3NW"n0NW"h7NW5%;NVnY5MZ8_0O8k7<NV\V4N<>-!N/dIg
+rJLZ5reqZLhVd>Oj5]4_k3(sml0@U$mHs?1n*olHncA@Srq6<bs7cKes7u]kqtp?ir;H0bj8\ED
+q>L6hp\XpcrV??crqHEcrq-8jq5X@o!j/W.qQKq's02a5Za7$G[JmW5\Gj#E]">Vf^:qD"_u@US
+`W*pXa8X-fai_fNbg+P\d*U1frmLhq!S#[!fDjM'f`9b*gC;rohVR2Kio9%[k2tjiroasYlK[^$
+m-O-,n*fc9o()DFp$e!mNW4;*H$K=4%X)u:FE;JBEH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG
+@/aL6?=!P8s',M,r`K;)=',B%QiI&Cq2G62oSdrp=BSd2>[1TB?t!MSA7]CeBkhF#DJsN8FED\M
+H$XjdIt3*&KSG8=Mi<[WOckroQ^F52SY)UMUnsufWiN8)Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkb
+e'uq"f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+gW)~>
+JcC<$M#[,HrVc`nr;6Njs7uZhIeWR0p%@tLoCDJBnF,i6mHj0(l07Eok2bR_iS`VMh:pZ:f@SR&
+da?Fec-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDDf0E-C2%?nARo7Z?sd5G>XCkI7Rfp?s%`SirD*Aer_EGgpe^rcl;%:Rp.kN]rD*,^s%`Ac
+qG%)f:/:a^!_uNer_<GhrD<,^rD*;es%rYi!)<Gfs%NPg<)icq!*&Yj!E<"s<;9Dl<<-(p<VfYp
+;uKT1h;7)JioB([k2tjjl07L!m-X3.n*fc9rpg*]o`"O`pAamcq#C0iqYU0gr;?N`ro=%DrqZNj
+r:g*eqYg6eq#:$epAX^b=8l>$=8uD$=TM]2rEK5*r*9A1?![G9%:<LN@:<VR@:E\U@q90MB)cNB
+BEDm_C]8/MCB86grbh[Qs)A!X"EJR)FEIM*s*"NhH$T@7s*FuuI=?ZqJ:N4MK)^H9KS>,7L51P?
+Ll$tGMi3ORNK0(=<W@@GH$K=4%X)u:FE;JBEH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@KKtG@/aL6
+?=!P8s',M,r`K;)=',B%QiI%`q,I8loMg!8=BSd2>[1TB?t!MSA7]CeBkhF#DJsN8FED\MH$Xjd
+It3*&KSG8=Mi<[WOckroQ^F52SY)UMUnsufWiN8)Yd1UC[^`l[]Y;.s_SjF6aN;WLcHjkbe'uq"
+f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+gW)~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7ZNerq14%oCDJBnF,i6mHj3*l07Epk2kX`io&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkY^[Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/;uH[9s]
+G'%eFE,KN/CM@HpAS#@\@:*@Z?!M#ZFFJt(PbG:uaiMNB`Pf^4_SX.*^qoub!PcGK^]2(L^\YbF
+_>V.M_8-&b!5AHGs1AQJ]">Sc\[qXJs1/9B]".^J!4VU/!4Dg5rjDa6pU1"/!4Dg5s0_g4rjDd7
+r3cR5rjVd5#I1M<ZEggE[/RW:]DfM>]`5VD\H04LrjW$=[^Q(BrODj9s0`$=[^EO?[/[NS[bfp"
+iSrnYjlY^gl07L!m-O--n*fc8nac8BoCW%Ts7ZKerqQKgs8)WirVZWmnG_JJl2LPXqu$6drVHKg
+qY:'a!VYOMj87p:jojl2l07L3lN$>OmLJ^Tnac8Bo_%qPp\=R\qu6KorVir!!4pjon$j0]H[:!`
+G^"@TG'.nKF)l8?E,TZ4DJa4hCB80arb)=FB)Z?BA7PUJ!b#JEra,\4?2e+/>Q7n+=TV],=-`ga
+\bWi7]Ciab=BSg3>[:ZC?t!MSAS,RgBkqO%DK'T9FEMePH?sseIt3-'KnbD?Mi<[WOckuqR$jG6
+StD^NUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]NcHjnde'ut#f\5'7h;7)JioB(\k2tmll0@X%
+mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`no_sFAL];l~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnF,i6mHj3*l07Epk2kX`io&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkY^[Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/;uH[9s]
+G'%eFE,KN/CM@HpAS#@\@:*AI>[1WHBQ&'?JVfPSrfd5Bq2tT<!0R)?qNLi?"d+t2Ocbb&Ns1Q'
+NfB'ZqMkN8r/L9-rf%#=NJrhqN<"q4NW"n;N<"q2NW+n:N<,'!rf6l8!/UK.rf6Z4s,R#:q2G00
+rf$l8repo<N/R[o!/pi8*8]T2iSrnYjlY^gl07L!m-O--n*fc8nac8BoCW%Ts7ZKerqQKgs8)Wi
+rVZWmnG_JJl2LPXqu$6drVHKgqY:'a!VWJjWVNRlX9,N,Y55=%Yl:m2ZEpmE['fnArODm<$+da\
+]Y2%o_8F1i`;dgV`Xg,2aN;QHbKS5Vcd0tbdF%sAs3h#!f)F8$f`'P(gA]hNgtgiDi8EVSjQ5Od
+kND'ml07Kulg*p(mI'H3nF?)?oC_eGNn97,I!^0cH$FOWG'8"MFE;JBEH#i7DJj<-rbDOLC&VcH
+B4h-S!G#^>@KKtG@/aL6?=!P8s',M,r`K;)='([erJUK1r/LB.IooiW>?kH??XR;O@qB7bBPD6u
+D/O<4EccGJG^=[`I=Hd!K8#&9M2R=QO-,TjQC+)0S=Z@HU84ZaWN*&%YHY==[C3TU]=bkm_8=.0
+a2lEHc-FY_daQ^sf@\g2gtgiFi8WeWjlY^hl07L"m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+gW)~>
+JcC<$M#[,HrVc`nr;6Njs7uZhs7ZNerq1a4oCDJBnF,i6mHj3*l07Epk2kX`io&bOh;$`<f[n['
+e'ZOfcHOJRaMu3:_SEq"]XkY^[Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/;uH[9s]
+G'%eFE,KN/CM@HpAS#@\@:*AI>XCbC6UjU98Pi/X:/:a^r_EJhpe^rcl;%7Qp.kN]r_E2^!)E;b
+qbI/es%`Me"\qih:/+L^;#a;k:A.K_:B+)j:f%'eqbI5f:&[lh:JFO^<;]bm;ZK_m;ZKek;Zg!!
+<`]3"s&AqsqG\M7;Vp<hiSrnYjlY^gl07L!m-O--n*fc8nac8BoCW%Ts7ZKerqQKgs8)WirVZWm
+nG_JJl2LPXqu$6drVHKgqY:'a!;?=ls&f8%r`K/&!a8f5r`f;*rETD0ra#M0#[^tI@:<VR@:K4G
+!+l+@s(D@Frb2dUCM[j(CMRa'DJa9/rbqgUs)A0^F)uGGrcSEgG^+LZrHeKj#CLrKIt*$"Jc:9$
+K+`ikKnb>;LPUbCM2I4LN/`gWO2b09I!^0cH$FOWG'8"MFE;JBEH#i7DJj<-rbDOLC&VcHB4h-S
+!G#^>@KKtG@/aL6?=!P8s',M,r`K;)='([erDWMkr)NDhIooiW>?kH??XR;O@qB7bBPD6uD/O<4
+EccGJG^=[`I=Hd!K8#&9M2R=QO-,TjQC+)0S=Z@HU84ZaWN*&%YHY==[C3TU]=bkm_8=.0a2lEH
+c-FY_daQ^sf@\g2gtgiFi8WeWjlY^hl07L"m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?
+s+gW)~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq-<aoD\<1naQ#9mHj3*lKRNqk2k[aio/hPh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS!o_2Q'@GnO,]*UM2-e;Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@:3GK?!M&^G_(^4RA@(.a2Z-<`5BL0s1n]Prk\QKrP/6Fs2"`NrPAKK
+!5\WL#/@mc]Y1tjrO`'?qmla<rOMj9!4VU/!4Dd4rjDd7p9jn.rj;[4rNuR3s0hg4!k,SIppLF7
+ZE^[=ZEgk9\cKFUrk80@rk&3@s0r-@\@;FFr3uX7s0qs8s0_m6!4Dg5s0Wg'i8N\UjQ5Oekiq?s
+lg4!*mdKW6naZ2@oCV\Sp&F^cp\jmeq>U6fqu6NkrUKmEs6BU[rVZTfqu-Bjq>0jgi8N\Tqr@V8
+!9O4B"6f"6lM^#Lm-Xf?%I`iWo()GGp@n=Vq>1!equH_trrBX`\aR$8I=-BfH?jaZGBS-.F9Q`+
+EH,r9rb_aRD#S2SC2%?pB4kiUAH?=OraGq;?srt@!FB(2>lS%.>5hY+=Jr'`s80A&])927])PoW
+>$P<<?XI5N@Us%^BP;-rCi401EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*S"6.DTqeE\Vl?\u
+Y->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DE
+rq6<b!;HHe!;ZWjr;6Kkrr)KgJcCK)J,~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq-<aoD\<(naQ#9mHj3*lKRNqk2k[aio/hPh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS!o_2Q'@GnO,]*UM2-e;Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@:3GK?!LTAAo)F/H\74TPP^O<OoCODOnk1:PPC:BOcY\%O8b.?NK3go
+s,R&;nrEX-s,?r:s,?`4rf7#<!0$T1rf$f8s,Qr8s,I2<MMR/gM>`J-O8b1;NVJJ0NW4t:MuS_9
+NW+n:MuS_UMr3IOioB+]k3(sml0@U$m-X60n*ol;o()DEo`"O`p&Ojcq#C0hqYU0hr;?N`rnmb@
+rqcTkr:g*eqYp<eq#7/kW;`dlWW9*uX9,N,Y55@%Yl:p-Zi@B4[JmT9\%&sH\Jr,l]Y(ql^qmq,
+`5BO4`l?'>aN2KFb08)ScHlL:s3^hos3iXOf%8O+f\+s3g=tB;gtgiFi8WbVj5oFckND'ml07Ku
+lg*p(mI'H4nF?)?oC_eGNn96tI=-BfH?jaZGBS-.F9Q`+EH,r9rb_aRD#S2SC2%?pB4kiUAH?=O
+raGq;?srt@!FB(2>lS%.>5hY+=FP^cs8.`MN;S\0N;m%)>$P<<?XI5N@Us%^BP;-rCi401EH?5F
+GBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*S"6.DTqeE\Vl?\uY->1;['mHS]"G_k^r"".`lQ9EbK\>Z
+dF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6Kkrr)KgJcCK)
+J,~>
+JcC<$L]@&HrVc`nr;6Njs7uZhs7ZNerq-<aoD\;tnaQ#9mHj3*lKRNqk2k[aio/hPh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS!o_2Q'@GnO,]*UM2-e;Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@:3GK?!R@q#=CmM8kVrT:Amod:B"&b;#a>T:Amu]:Amue:A@Q`:AI]^
+:B+)i:Amoe:&n)h:&n)h;#a;k:A%E^:Amug;#!fk9i"MZ9hnGZrD`\p!*&hos&/>b"]SK&<`N0!
+<;fhn<#a`QiSrnYjlYail07L!m-O--n*fc9nac8Bo^r.Us7QHerV6EgrqcNhrqu]mnc%GGlMgYY
+r;?<drVHNhqY1%kqcEc!r`B,%rE0;->[1K<>Q%h)>ln><?2e11?N=L5@0^7M@:E_VA7b^O!,):E
+rb2@JrbVUMs(qUNs)7pVrc.pY$$:<5G'A.TG^4T6HN&9kIK+fsJH(3#K)UB8KS>,7L51P?Ll$tG
+Mi3ORNfK1?<=4/%H[:!`G^"@TFoHIdF)l8?E,Y_n!GuZPCBeNfBP;$kB)Z?BA7PUJ!b#JEra,\4
+?2e+/>Q7n+=TV\s8XKJS;u'Dj<VKJm=a+%S>[:]D@:E\VAS,UhC27X'DfB];FEVkQH@('hJ:W?+
+L51VCN/`m[P*;/sR$jG7StMdPUo(&hWi`G.Z*UgG\%0)_]t_A"_o9X:ai_fOcHsteeCE.%g"P3:
+h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqucoo_sFALAuc~>
+JcC<$L]@#Grr)fnrVQTj!;ZTg+8>L&p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh/h?)g"4g*
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^<BGYcb+/WMcVhUS4<OS=>q6Q'@GoO,f0VM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMIQsAn>L_@UNPL?!LTMEd<7qOIN)Qa2Z-<`5BI/_8=(*_8=%(_8-#aqnW6J&&?#t
+_SO%(^qmk&^qmh$^AbeG]`#JA])0&;\cTFR\bil:\+I*/[JmQ3[K!]/[K!Z8[JmQ4[JdK3[K!]4
+[/m_FrO)^6qR-a<Za@$CYctF>]"@sQ!5/9DqRlg>s1&9B\[f5Zr3lR5rj`!;rO)a7[/IE4[/]%t
+iT&tZk2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6EgrqcNhrqu]mnc%DFlMg\Zqu$3crVHNh
+rqQKN!9*q:qr@Y9!9O4B"R#"5l0A65!:BdR!q5XKrpg?ep%J.Sq"ad`rqlfqriH,"]%X^_\Gps`
+I!^0cH$FOWG'3e+"`n^(EH#jqD@gZ$CMR["BkV0mB4b^dA7T3L@L$=L?sd8I?=!P8s'#J,rE05)
+VPg?hW1X+d\bWi7]D/s^>$G6;?=.)K@Uit\B4u!pCMds-EH6/CG'A4XI!pKpJV/W1LP^nINK93b
+Pa.T&R[]k>TV80XVl6VrXfen5Za@0N\\#Mg^VRe)`Q$!@bKS8Wd*^=le^rI,g=tH>hr*JQj5f@b
+kNM0qlg4!*n*fc9nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*(s*t~>
+JcC<$L]@#Grr)fnrVQTj!;ZTg+8>L&p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh.,3ng"4g*
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^<BGYcb+/WMcVhUS4<OS=>q6Q'@GoO,f0VM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMIQsAn>L_@UNPL?!LT?@:j@tG^b:(PEYm,q2tZ>s,m,?q31T:s,m>CrK$r<!f`5#
+qMkN8r/L9-rf%#=NJrhqNW4t4NW+t<N<"q1NW4t8N<#"7NW"n:M#iKirJCH4ooK*4r/LH0rJgi9
+qhkH6reqYON8WXQj5]4_k3(sml0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0hqYU0hr;?N`rnd\?
+rqlZkr:g*eqYp<iq#@5iVZ<[pWVWUpX8K%#Xfei'Y5kg+Ym%G>Za@*IrjMd8s1/0@#J7X]]t_A"
+_u@US`W*pXa8X-bai_cMbg"J[rm:\ms3gqr#Lq;Tf@S[-g&B_*g]-(/hZ)O6iX=f-jlY^gkNM-o
+lK\B7s6L*[n*fc9nac8Bp%@g7f8]fY$%.)GH?jaZGBS-.F9Q`+EH,r9rb`9aChmg$C2%?pB4kgf
+ARo=]raH+@?sm>K?=$q:>lS".>5_S(=T3dIIfP%ls8%ZLN;S\1N-JN1>[:ZC?t!MSAS#LfBkqL$
+DJsN8FED\MH$XjdIt3*&KSG8=MN!OUOckroQ^F52SXuLJUnsufWiN8)Yd(OA[^`l[]Y;.s_Sa@4
+aN;WLcHaeae'uq"f\,!5h;-uHiSrnYk2tjjl0@U$m-X91nF?&>o(2MQo`Fj]p\ssfq>^<hqu6Nl
+rUg)?s+^Q(~>
+JcC<$L]@#Grr)fnrVQTj!;ZTgIeWR0p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[['R$AY-"b(Vl$8bTq@pHS!fY/P`h/iNf8jPLPCJ7JUi2tH[9p\
+F`_YDE,KN.C2%?nARo:[?sd5G>['N]6UXC5!_H$]r([/cr_NAes%hfQrD3)]rD3DfpItW_peUc^
+s%iYirCmJk:JX_[:/Cjcs%`ViohYT_r(d;hrD*DgqbR5es%NYm:/+GX:Ae)j<W?%p;u]bb;Zp'"
+<`N/u<;]bq<<(kiiT&tZk2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6EgrqcNhrqu]mnc%DF
+lMg\Zqu$3crVHNhrqQInqH*]!r`B,%rE9/(s',V0>[./3q-Eu+#[^tI@:<VR@:K4G!G#d@B)cNC
+B`DcIC2<fb");UfD#A2NDuXeUEW:+[F9Qf1G'A.TrcnQkH$]I:s*aoss+(-#s+:9's+LE+s+^Q/
+!/UW2#E"FtN/`jXO2b3"I0k:JH?sj]GB\4QrcA<bEcH)<DuOVcD/=!'C2.HrBP1siAS#C_A,]pB
+@:3JM?X@&Er`oJ-!*]>(!*K4lr(6r^TE"adq,I8lpf)KA>?kH??XR;O@qB4aBPD6tD/O93EccDH
+GBnL^I=HcuK7nu7M2I7OO-,TiQ'[l,S"6.DTqnN_W2co#Y->1;['mKT]=bkm_8=+/`lQ9Fbg+M\
+dF6Uqf@\d1gYL]Ci8N\UjQ>UfkiqBum-O-.n*ol;o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcCK)
+J,~>
+JcC<$L]@#GrVc`nr;6Njs7uZhs7ZNerq1d5oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1HLFFAk&Panb]`l5mr_Zmuo_SX.+_Z%CO_#D+H_"tkI_Yh7K
+^]_Ed]tV2Z]`,PB])0&;])K8<\,a#1[K*`6[/IB4[e@-.[f*T5[J[E2[/dZ4[0!eG\+I*1\$WOA
+Zi.-5ZF[WZ]"5NO^&,J@]DT2?\@;=Cs0r$<rjNcR[C3QP[C!<Li8N\UjQ5OdkNM0qlg4!*mf)YU
+nF?MK!V>s_p&Facp\jmeq>^<gqu-HjrUKmDs6BU[rVQNfqu-Bkq$Gm6hV[8LiSieUqr@V8!9O4B
+!9jFHrp0UN!:BdR#Oh3Qo()DFpAXdgq>1!crqlcpX8gk`n$jirI=6KiH[:!`G^"@TF`__HEcQ/>
+E,TW3D/F*)CMIQtBP;$jAn>OaA7PUJ!F]C8?iOF4?2e+/>6%k*=T_c-Vl0Ejs/,msWhf[b])929
+\pR^e?!^lG@U`kZAnPdkCM[j*E,fo?Fa&(UH@1-jJ:`E-L5:\EN/is]P*D6!R@B_<T:r!TV5L;m
+XKA\1ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1ieCN7(g=k?<hVd>Nj5]7`k32'olKdg(mdKW6nac8B
+oCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*(s*t~>
+JcC<$L]@#GrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1H<@qfh%H%(I,qi^f<rK@2CplbH:q3(c?rK.#>rf.&>NfNsq
+s,R&;nrEX-s,?r:s,?`4rf7#<s,?Z2rf$f8s,Qo7r/Lc<r.tQ4M2I1Iqi:T8!06u<rJpf8oo&m1
+req_QMMmFON/W[Ri8N\UjQ5OdkNM0qlg4!*mf)YUnF?MK!V>s_p&Facp\jmeq>^<gqu-HjrUKmD
+s6BU[rVQNfqu-Bkq#I8hVZ*InW;`dlWW9*uXT,C&Y5,7$Yl:m.ZEsP;rjDg9rODm<&\>Te]Y2%o
+_8F1/_o0O5`lH.!a:$,4bKS5Vcd0tbdF%sAs3i1Bf%8O)f\"m1g=k<9gt^cDi8N\Tj5f=ak3(pk
+kiqBtlg+Q:$LR<NnF?&>oCMYJnW)4\.XleoI!^3dH?jaZGBS+NFE;JCEH,r9DJj<.Chmg$Bk_6o
+B4baeARo=]raGn:@/aO5?3":1>lS".>5_S+=BBs#r-n]srILdEnVmC*q2B]*>[:ZC?t*SUAS,Rg
+BkqO%DK'T9FEMePH$XjdIt3-'KnbD?Mi<[WOckroR$jG6StD^NUnsugWiW>+Yd1UC[^`l[]Y;.s
+_SjF6aND]McHjnde'ut#f\5'7h;7)JiT&t[k2tmll0@U$mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zj
+rqu`no_sFALAuc~>
+JcC<$L]@#GrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnF,i6mHj3*l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfTqJ!JS!o_1Q'7AmNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1Gu5t+117n69Lr_<Aer_NDfr_NGe!)MuWr(m#]r(m;epeCc`
+q+pi^s%`VirD!;e"A_cf9i(abs%iYip.tZ_rD3GipJ:]^!`2TcqbI#fr`/ttqc!Jlo2>`h;c?Zo
+<W5tp<=n*IioB+]k2tjjl0@U$m-X6?mfDqJrpg*]o`"O`pAamcq#C0iqYU0gr;?N`rnd\?rqcTj
+r:p0fqZ$?k=8Q%t<rcA%=8uD%=8uD$=UA8:>[(H;>[:T>r*9;/ra#P1s'Gb6ra?%@@:<VT@q90L
+B)cNDB`;]SC2@^%Chda%D/O3.DZ4SSE;jkWErgB*rc\<c!-nKgrd+Tks*Y'"It*!!Jc:9$KE$W)
+L&Zo-LC8opM2I1KMi<XUO,q=].XleoI!^3dH?jaZGBS+NFE;JCEH,r9DJj<.Chmg$Bk_6oB4bae
+ARo=]raGn:@/aO5?3":1>lS".>5_S+=BA'cr(?o\!)03gnPoEdq,D`G>[:ZC?t*SUAS,RgBkqO%
+DK'T9FEMePH$XjdIt3-'KnbD?Mi<[WOckroR$jG6StD^NUnsugWiW>+Yd1UC[^`l[]Y;.s_SjF6
+aND]McHjnde'ut#f\5'7h;7)JiT&t[k2tmll0@U$mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`n
+o_sFALAuc~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq1d5oCDJBnaQ#8mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GnO,]*UM2-h=Jq/?!I!U'_
+GBJ"JEGo`3CMINrAn>L^@UNPL?!LTID0CGaNg66=]#DVf_tq7L_$%Qg^VIYY_#V@L_>h:P_8*hb
+^&YkG]`,PB])9,<\cTFR\bil:\+I*/[JdK2[/dZ/[JmW6[/RK2[/RH5[emH5[^Z4D!4DX2rO;g8%
+^WOKZa-j@Yd(aM]">Pbr4Vs>rO`!<"1YhK\,<]2[fa(H[^Z7D)<'T8jQ5Oekiq?slg4!*mdKW6n
+aZ2@oCMVRp&Facp\jmeq>^<gqu-HjrUKmCs6BU[rVQNfqu?Nlg]H<ghu;O6iVqj6j8J'=jo=HLk
+NM0plKdd&lg4W=s6fsXrpg?dp%J.Sq"ad`rqufpXT&:3ft$R]"b1uLI=-D@H3nkAGB\4QFEDSEr
+c&iqDf0H0Ci!m&C2%BqBP1phAS#C^@q&nU@:9(As'>\2r`oJ-!*]A)s&]A)VPg?hVu`fprMfn!X
+K)<i](io;])Q#]?=.&J@Uiq[AnYjmCM[m,E,fr@G'A1WH[U?nJV/W1LP^nINK90aPEhH$R@B_<T
+V8-VVPgDnXKA\1Za@0M\[oGe^VI_(`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*m
+dKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*(s*t~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq1[2oCDJBnaQ#8mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GnO,]*UM2-h=Jq/?!I!U'_
+GBJ"JEGo`3CMINrAn>L^@UNPL?!LT=?t=%kFa8Lmqi^i=rf[8CplbH:s,mAGqNCl@rfI,?r/UW5
+s,R#:nrE^/",r4uN;eh:N;/D3NrP(=N:i21N;SY8Nr=q;N;\b6Nr>%9M$&QkM2;%hr/^l<r/^f:
+r/LW5!/pT1+H),8N/NXRiSrnYjlYail07L!m-O--n*fc9nac8BoCW%Ts7ZKerV6Egs8)WirVZTl
+nc%AElMgYYqu$6ds8)\jr20Ik!iW)tq5OFqr2]t%Y-.W)!3lI-!j]/=rj;[5(q7#b\[]2]]">Vf
+]tV;!_o0L2`5T^8a2e2#s2kYkbg"GZcd:%ddJhSodf\.Of@U#Ss4ID+rnAXPh;7&JiSrkXjQ5Od
+kND'ml0@R"lg4!*mdKW6nac8BoCVO4f8Tr`IXQWlHiA<tH$FOWG'.nKF)q8")K9V4DJa3+CMR[!
+BkV0mAnGUcA7K+Y@UW\Qra5\3!+#S/s'#J,r`T8'!*B/Kr."KmWrMRIpl5<4s'0kV?XI5N@q9._
+BP;-rCi401EH?5FGBeF\I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(CTqeE\Vl?\tXfnt8['mHS]"G_k
+^r""-`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\s7u]k
+r;6KkrVcBfJcCK)J,~>
+JcC<$LB$rGrVc`nr;6Njs7uZhs7ZNerq1@)oCDJBnaQ#8mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GnO,]*UM2-h=Jq/?!I!U'_
+GBJ"JEGo`3CMINrAn>L^@UNPL?!LV563fkG84H3H:JLg`rD3;e!)NMfr_MoVrD3)]rD3DfpItW_
+peU`]!`)QdrCmJk:JX_[:/Cjcs%`ViohYT_r(d;hrD*DgqbR&`#u+/i9heDX:/4O\<;fes<;KPm
+;YX/j<;f_t;H$LnrDiksr)FWnioB+]k3(sml0@U$m-X60n*ol;o()DDo`"O`pAamcq#C0iqYU0g
+r;?N`rn[V>rqcTjr:p0hqYaLn<r,nt=T);$=T)D&>5qh0>?kB<r`o5(s'G_4!+>e7!b,SHraPt>
+Ac?<ABDuTEB`VsarbVUMs(hgTDJa9/rbqgUs)J$Z"*A[/G5c[eG^4T5HN/<sI=?WpIt3'#rdt0&
+!ec8]reCH.$AaOqMMd=NN/`jY``31lIXQWlHiA<tH$FOWG'.nKF)q8")K9V4DJa3+CMR[!BkV0m
+AnGUcA7K+Y@UW\Qra5\3!+#S/s'#J,r`T8'!*B.kr(?r]r_*Ad8kQ,`n5T0_s&B#'H<src@:E_W
+AS,UhC27X'DfB];FEVkQH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&hWiW>+Yd:^F\%0)_
+]t_A"_o0O7aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Eg
+s8)Zjrqu`no_sFALAuc~>
+JcC<$LB$oFrr)ior;6Njs7uWgGk^q*p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY0P`h/iNf8mQLPCJ7JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AI>[.qGBQ/6KMNF0tY._ck_ns:._ns:i_>h:P^VIYY_>hCP_#V@O
+_#qKh_8-&b!5AHFrk&0@r42a:s1/';!4VR.r3ZI2s0hX/s0hm5rjD[2rj;a7qm?I5\,E`8[J@90
+\,NfK\%&iP['R-FZE_'T\[f>a]"G]T^%o>@])fRUr42d8qmQF3!O]B8[hI`\j5f=akNM0plKdg'
+mI'H3nF?MK!qZ'Vrq6<b!;HHerqZTjqtp?ir;H0bh#H^>qYg<hqYU9HrnI_6hV[5Ki8O[pqr@V8
+"Qee.kNMp0rp0UN!:BdR#Oh0Po()DEpAXdgq"ad`rqlfqriH,"]%OX_\-db9IXQWlH[:!`GlDmj
+G'.nKF)q8""`SBtDJa4hCB80arb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8's&]5uql'Om
+r2KduXT#?*s6mPo]6:bk?=.)K@Uit\B4u!pCMds-EH6/CG'A4XI!pHoJV/W1LP^nINK90aPa.T&
+R[]k>TV8-VVl6VrXfen5Za@0M\[oGe^VI_(`Q$!@bKS5Vd*^:ke^rF+g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*'s*t~>
+JcC<$LB$oFrr)ior;6Njs7uWgGk^q*p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY0P`h/iNf8mQLPCJ7JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AI>[.V>?!h/YEHZYYLlqY!r/puArfQu=plbcBPEYp-"d>+3OHGY(
+O8Ft7NW+t:NU`&,N<"q9NW4t4NW5%=NW4t1NW4t8N<#";N<"q9NVnh6Nrt8tM2M4f!fE&"qi:W9
+rJpi;s,I,@Nr4n7N!"usMi7Iks,6l8'B/!3jQ5Oekiq?slg4!*mdKW6nc&(\oCV\Sp&F^cp\jmd
+q>^<gqu-HjrUKmBs6K[\rVQNhqu3DiV>R4iVZ<[pWVNOoX8T."XT5O"Y5kg+YlV/:rj2[5rjMd8
+s1/0@#J7X^]t_A"_u@US`W*sXa8a3cai_cMbg"J[rm:\mrmLhq"kD2Uf@\aTfd>G-gYCT?hr!DO
+ioB+\k2tjikih9qlK[^$m-O--n*fc9o()DEo^ImmN=(2cIXQWlH[:!`GlDmjG'.nKF)q8""`SBt
+DJa4hCB80arb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8's&]5Lr-n]soms=Hmu7%$G)T^5
+?XR;O@qB4aBPD6tD/O93EccDHGBnL^I=?]tK7nu7M2I7OO-#NhQ'[l,S"6.DTqeE]W2co#Y->1;
+['mHS]"G_k^r"".`lQ9Fbg"G[dF-Opf@S^0gYL]Ci8N\UjQ5OekiqBum-O--n*fc9o()DErq-?d
+p\4[^s7u]kr;6KkrVcBfJcCH(J,~>
+JcC<$LB$oFrr)ior;6Njs7uWgIJ<I/p%@tKoCDJBnF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)Vl$8bTqJ!IS!fY0P`h/iNf8mQLPCJ7JUi2tH[9p\
+F`_\EE,KN/CM@HpARo:[@:*AI>[1H"6:4*F6qKp@:/=V[r(m5e!)NPgrD2cTr_N/]rD3DfpeCc`
+peUc^s%iYir_<Df$VsMm9hnJ\:esk^:A%E_:Adlf;#O/i:A[i_:&n)h:&drg:&Rie<Vobo<<-"p
+;u]bl;Zfor<)iiqs&/kqs&B"ur`&nt'B/!3jQ5Oekiq?slg4!*mdKW6nc&(\oCV\Sp&F^cp\jmd
+q>^<gqu-HjrUKmBs6K[\rVQNhqu0Xp=8Q%t<rcA%=8uD%=8uD$=TDY&>QA(/>kq\*?N4C4@/FC3
+@g6IUAn>ReBDuTEB`VsarbM[OCM[hbDZ=YSE;sqWEsZr2G'8(RG^+LZrH\csI!pHmIt*!!Jc:9$
+K*6j]Knb?]LC/ioM2I4LN/WaVO2b0,J:E#rI=-BfH?jc7G6N/4FEDSErc&*\Df0H0D#S2NC2*Z\
+!G?$DAHuaU@q&nU@:9(A!a]/<r`fM/>$Co.s&f;&s%3,\r_*2`s%<;_!D6"gs6iq^<H_>I?=.)K
+@Uit\B4u!pCMds-EH6/CG'A4XI!pHoJV/W1LP^nINK90aPa.T&R[]k>TV8-VVl6VrXfen5Za@0M
+\[oGe^VI_(`Q$!@bKS5Vd*^:ke^rF+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\
+q#C0iqY^6ir;HTdrdk*'s*t~>
+JcC<$LB$oFrVc`nr;6Njs7uZhGk^q*p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfU7e*KS!o_1Q'7AmO,T!RLk^V9Jq/?!I!U'^
+G'%eFEGo`2CMINqAn>I]@:3GK>[.qH=`&2*K8YhXTWc8N_SX4._Sa7i_>_7M_>h@T_8=%*_Z%CN
+_@XQ#_8=%(_83q%^V7Fq]tD#W]DfD?\c')A]=PP`r3ua9oX4b-r3ZI2!4MU/rjMd4s0_a2ppL"-
+s0_[2rjVg6r3l[6rNlO/s1AEF\[qdPs1J?Eq7HgA]Y(iS\H'/<\,Wo:[JdQ5[hZ?ZioB(\k2tjj
+l07L!m-O--n*fc9rpg-^o^r.Us7QHerV6Bfs8)WirVZTlnc%;ClMgYYr;?Qk!8@D+rS.J1hV\=j
+!9*q:qr@Y9s5j:C#3Y47l0@U#rp9XPs6fsXrpg-^p%JCZ#Pn5nr;?HirN#qu]%OX`\/p3OJ:E#r
+I=-BfH?jaZGBS.PFEDSEEH,r:Df0H0D#S2NC2*Z\!G?$DAHuaU@q&nU@:9(A!a]/<r`fM/>$Co.
+s&f;&s/5^l!N2pqWWB0%qlR4)mCN,*s'KVN@U`kZAnPdlCM[j*E,fo?Fa&(UH@1-jJ:`E-L5:\E
+N/is]P*D5uR$sP:T:r!TV5L8lX0&S0ZEpsI\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P6;hV[8M
+j5]4_k3)!nlKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAL&ZZ~>
+JcC<$LB$oFrVc`nr;6Njs7uZhGk^q*p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfU7e*KS!o_1Q'7AmO,T!RLk^V9Jq/?!I!U'^
+G'%eFEGo`2CMINqAn>I]@:3GK>[.V?=^>ELD0'oJJVjAhrK7#@rfR,A!gAe1plbiDPEV/nrfR>H
+P*5g,!g&J(qMtK5rJpi9nrE^/",r4uN;eh9N;8J4NrP+=N:r81N;/D4N;\b6NqeYFMMm@KM27"E
+Ll%1RNfK2"Nr4t:Nr>"@NfT6]rJg`6r/:H2'oRt/j5]7`k3(sml0@U$m-X60n*olHncJFTo`"O`
+p&Ojcq#:*hqYU0gr;?N`rnIJ<rqcTkr;QQnU]%"dV>R4iVZNfrWW&mtWVrjsX8T."XT5O"YPtg,
+Z2h61[/RKN\%&rY\@K/]]=bei^;.S&_o0I2`Poj;a8X-bai_cMc-=S\rm:\ms3gqr-IgVtf@JU,
+g"G*5gY:N>hV[;Nio9"ZjQ>UfkNM-ol0@R"lg4!+rpL'\nac8Bo^qX5fSpr'J:N,uI=6KiH?sj]
+GB\4RF`__HEcH)<E,TW3D/B2e!GZ?JBE;aXrac=F@q/tW@:<RC?NOP>?2e(1>?Y50=oVV(=9!aH
+J+J3kK!YLEN;8J5?Ys1[@Us%^B4u$qCi+'/EH6/DGBeCZI!pKpJqJc3Ll%%KNfT<cPa.T&R[ftA
+Tq\?ZVl6VrXfnt7ZaI6O\\#Mg^VRe*`Q-'AbKS8Xd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4$,
+n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*'s*t~>
+JcC<$LB$oFrVc`nr;6Njs7uZhGk^q*p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkV][Bm0CYH=k*W2HJfU7e*KS!o_1Q'7AmO,T!RLk^V9Jq/?!I!U'^
+G'%eFEGo`2CMINqAn>I]@:3GK>[.Y@=[GMF6UjR:92A=\:B=9fr_NSjrD*8dm8!XVoM5<[r_E5_
+!)E;bqG%)f:/:a^!_uNer_<Ghr_WVjs%`8`s%`;as%`Geq+grcs%i\kr_3_p9heDY:/t:n<)ros
+r)E_rqGRAlqG[Dl"B/9!;cEZnr_jY5<E3!tioB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.Us7QHe
+rV6Bfs8)WirVZTlnc%;ClMgYYr;?Qkr)W_sr)Wbt"B\`,=BPN'!*K2&s'#>*s'>Y0pg*o+s'Gb6
+ra?%@@:<VT@q9-KB)cNCB`DcRC2@^%CMIX$Ci4+hDZ=YTE;jkVF8pC_G5lddGlN'gHN/<tI"$No
+It3'#Jc:9$K+`ikKnb>;LPUbCM2I4LN/`gWO7ZEP<7OtiJUi9#IXQWlH[:!`G^"@TG'.nKF)l8?
+E,]`5DJa4hCB80arb)=FB)Z?HA7K+Y@UW\Qra,_5?![G7!aAi3r`T8's&]4lqb$i\r_*Gf8kMZH
+r_!5`ZiBDlqc3Yqs'KVN@U`kZAnPdlCM[j*E,fo?Fa&(UH@1-jJ:`E-L5:\EN/is]P*D5uR$sP:
+T:r!TV5L8lX0&S0ZEpsI\@K5a^;%M$`5Td<aihoRcd:(geCE1'g"P6;hV[8Mj5]4_k3)!nlKdg(
+mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAL&ZZ~>
+JcC<$LB$oFrVc`nr;6Njs7uZhs7ZNerq1a4oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GoO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEGo`3CMIQsAn>L^@UNPL?!LT;=_r/-Ko;%\V6Tp8s2+cOs1nZN$Gs]t_SO++_8=%)qSN3I
+s1nZL"MVR_]Y+6Urjr*>rON*C]"5HM\,s.J\+R3-[/IB4[e@-/[f!N4[JR?+[/m_FrO)^6ppU12
+r3lU6!k>JErjMp7[/I?1]EPpY]"GYerk/9Eq7HgA]Y(iS\H'/<\,Wo8[/dZ6[hn)cjlY^hl07L!
+m-O--n*fc8nac8BoCW%Ts7ZKerV6EgrqcNhrqu]mnc%8BlMgYYrVZWJr7h5+!o;_jrnme8ro3h8
+r8dn>!p8\0rosFJ!po=ArpBgUnG_tgoCV_Lp\4IYqYU0fr;HSprrBXa\aR$?Jq8H&IsufoI!^0c
+H$FOWG'3e+$?L6-EH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@fKj:@/aL7?<pk9>QS,5>5h\)=9M]+
+<i;kkW;WarWrT6sXge>s])0*b?XR;O@q9._BPD3sCi402EH?5FGBeF\I=?]tK7nr5Ll%%LO-#Ng
+Q'Rf*S"-(BTq\?[Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Lnf%8R.g>(N@i8EVTj5oFc
+kiq?sm-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcCH(J,~>
+JcC<$LB$oFrVc`nr;6Njs7uZhs7ZNerq1a4oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GoO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEGo`3CMIQsAn>L^@UNPL?!LT;=^GTPDfU#LJrBYlrfR)@s,m;D"I#"4P*5F#rf[;F!0[>D
+s,[5Apl>?5rJpi9nW*O,!0$l9rf$Z4s,R,=rf$Q1s,?l8!07#;!0$i8r/UN4#EX[uMMm@KM#E20
+NrY4>O8k7<O8P%;NrtE'O,j0urJ^T2!K<$;N#1O8jlY^hl07L!m-O--n*fc8nac8BoCW%Ts7ZKe
+rV6EgrqcNhrqu]mnc%8BlMgYYrVZSgrM9@frMKRl!3#mrq5OFqrN-%$!3Z:(!3lI+"gG8:ZEgh8
+[/RK6\,EfM\[oAa]Y2"n^r"",`5BO4`Q#s=rlG,^#Kt?9cHjh`d/MGmdf7cMe^i='f@\a/g"P07
+gYL]Chr3PRj5]4]k2tjikih9qlK[^$m-O0/n*oi:o()DEo^ImnN=gbnJ:N,uI=6KiH?sj]GB\4Q
+rcAKgEcH)<Df9N2D/B2e!GZ?JBE;aXrac+@A,]s;@/s^7?NOP>?2e(1>?Y50=oVS-=&r@NIXh?G
+!IoXsJcC8uJc120s6P^ANHnl=@:E_WAS,UiC27X'DfKc<FEVkQH@('hJ:W?+KnbD?MiEdZP*;/s
+R$jG6StD^NUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]NcHjnde'ut#f\5'7h;7)JioB(\k2tml
+l0@X%mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAL&ZZ~>
+JcC<$LB$oFrVc`nr;6Njs7uZhs7ZNerq1^3oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaMu3;_SO"#]XkY_[^<BGYcY",WMcVhU7n3NS=5h3Q'@GoO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEGo`3CMIQsAn>L^@UNPL?!LT;=[GJE6UjO89DVEa;#O2h:B+)k:esmR:B"&^:Adoe:A@Q`
+:A@W^:B+,i:B!uf:B+)p:/+JZ:f'q`r_E/_s%`Jf!)WVi!)EDeq+grcr(m_k:JFPW9hnDW:/Cjh
+!*&qts&Anrq,78kqG[Dl"&i/t;uBN5;cH^r<9*'$k2tmll0@U$m-X60n*oi:o()DDo`"O`pAamc
+q#C0hqYU0hr;?N`rn@D;rqcTlr;Tar<W#nr=8Q%t=8uD&=8uD$<rcA$=TM]1r*98-s'5A*ra,V3
+!+>\4raPq=rFZ%As(MFHs(_RMrbMOM"Dr$nDJoGls)A!X%WZW3FEM_LG'A.TG^4R\rd,f9I=?Wp
+It3'#JV&K+K7no3Knb>;LPUbCM2I4LN/`gWO7ZHL<8(=aJq8H&IsufoI!^0cH$FOWG'3e+$?L6-
+EH#i7DJj<-rbDOLC&VcHB4h-S!G#^>@fKj:@/aL7?<pk9>QS,5>5h\)=9M]+<_5m]9)VE]9`I`b
+8H;B\9)qYps6N_`<W?$D?XR;O@q9._BPD3sCi402EH?5FGBeF\I=?]tK7nr5Ll%%LO-#NgQ'Rf*
+S"-(BTq\?[Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Lnf%8R.g>(N@i8EVTj5oFckiq?s
+m-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcCH(J,~>
+JcC<$L&^iFrVc`nr;6Njs7uWg!Vc<eo`=^VrpkC*nF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)W2?AcTqJ!IS!fY0Q'.8jNf8mQLk^V9JUi2tH[9p\
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1H8B5Da?KoD.`VR-3<!5eTK!5e`Qr5/KMqSE9L_Yq=N^^%Wg
+]tD"i]Y"0SrOMm<"hV@W\[]3L\,s.J\+[61[J[E&[JmW5Zi[YD[JR?+[J[K5[J@91\,3W5\,EfE
+Z*:aI\$`TMZa6sNrk/9B"1u4X]DfJC^&#AA]DfGC])B/>\G`o:[f*W6[hn)cjlYail07L!m-O--
+n*fc8nac8BoCW%Ts7ZKerV6EgrqcNhrVZWmnG_/AlMg\Zs4R>(qqM,*#2S.ni8ESQro3h8rT+"?
+s5jOKkiq?slg+Q:rpBjVnF6GJ!qZ'Xrq?NiqYL*gquQcqX8gk`n$iOQJUi9#If=a.I!^0cH$FOW
+G'.nKF)uAAEH#jqD@:;tCMR["BkV0mB4h-S#@q=R@fM^$@/aL7?<pk9>QS,5>5h\)=9M]+<i2ej
+VuWgrWrK+"XS8j.s7!Vo]6I^l@Uit\B4u!pCMds-EH6/CG'A4XH[U?nJV/W1LP^nINK90aPEhH$
+R[]k>TV8-VVPgDnXfen5Za@0M\[oGe^VI_(`Q$!@b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nac8Bo^qhLp@e7Zp]1-hqY^6ir;HTdrdk*'s*t~>
+JcC<$L&^iFrVc`nr;6Njs7uWg!Vc<eo`=^VrpkL-nF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)W2?AcTqJ!IS!fY0Q'.8jNf8mQLk^V9JUi2tH[9p\
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1H8>[M#TD0'rMKT)(VOo(=AOoCOBPQ-g=P67&5P*5g.!0[>D
+!g&J(qMkT9NrG%:NWP3#NU`&,NW4t:NW+n4NW+t<NW4q<NK3dnrf$W3s,?l8r/UN4#`t+/OG/CH
+MMqFis+pW7!07&>s,R#<r/Uf<!07&>!07#;rf$Z2s,@iTjQ5Oekiq?slg4!*mdKW6nF?)?oCMVR
+p&Facp\jmeq>U6fqu-HkrUBg?s6BU\r;`SfU]%"eV>[:iVZNfrWVNRoX8T."Xn]+!Z2_*0Zi7<6
+[C3NQrODm<s186Cs1JWP_8=+._o)Jm!li:$rlG,^$-UQ;cHjh`d*^8?df7bue^i@(rn.8(s4[M-
+'A_O&i8NYSj5]4^k2tjikih9rlMg)Xm-X60n*oi:o()DEp$n'oN<OobJ:N,urd>E,H[:!`G^"@T
+F`__HF)l8?E,Y_n$Z0]qCMITuBP;$kB)Z?HA7K(Xs)VRUra,_5?![G7!aAi3r`T8'$<L8/IXZcr
+IXZcsqgnctqgn]t!/%l_n;R+$G[Orh@qB4aBPD6tD/O93EccDHGBnL]I=?]tK7nu7M2I7OO-#Ng
+Q'Rf+S"6.DTqeE\Vl?\uY->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5Oe
+kiqBum-O--n*fc9o()DEo_%nNp@nO\!;ZWjr;6KkrVcBfJcCH(J,~>
+JcC<$L&^iFrVc`nr;6Njs7uWg!Vc<eo`=^VrpkC*nF,i6mHj0(l07Bnk2bR^iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm-BY-"b)W2?AcTqJ!IS!fY0Q'.8jNf8mQLk^V9JUi2tH[9p\
+G'%eFE,KQ0CM@HpAS#@\@:3GK>[1H86U3t(6:OI892PCZs%`Ph!)WYjm8!XVoM5<[r_<Jg:ARZb
+:A@W]:'+3d:Amlg:/=[b:&n)h;#a>k:'"-epJ1capJ:faqbR#_s%iPh"]8)m8P2eX9a"3c9hnI^
+<<-"t<W?%r<VfVo;Ya8k;Z9Vm;ArJ5<9*'$k3(sml0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0h
+qYU0gr;HT`rn@D;rqlZm;Z]ou<Vohr=8Gtt=8uD%=8uD%<rcA$=oV\&>QA(/>kq\*?N4@4@/==3
+A,g*>AclUVB4q3Ws(MpWCM[d&C27X%D/O3.DZ4SSE;sqWF8pC_G5c[cGlDskH@(!dI/\TpJ,b$!
+Jc:9$KE$W)L&Zo-LB*/0M$JorMi<XUNfWg4oi0jL"bM;UJ:E%II1gpSH?sj]GB\4QFEDSFEcH)<
+DuOV^D/=!'C2.HrBP1sirac=F@q&p25[\"!?NOP>?2e(1>?Y50=oVS,=&r?n8c;9Z9E%Wa9)hK[
+9E.\ss6s"a<W5sB?t!MSAS#LfBkqL$DJsN8FED\MH$XgcIXm!%KSG8=MN!OUOHPfmQC+,1SXuLJ
+USOcbWN*)'Yd(OA[^WfY]Y2(q_Sa@4aN;TJc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-X60
+n*ol<o(2MGp%A%Pp\jjeq>U6gqu6NlrUg)?s+UK'~>
+JcC<$L&^fErr)fnr;6Nj!;ZTgF8,D%p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkY^[Bm0CYH=n+W2HJfU7n0LS!o_2Q'7AmO,]*ULk^V9Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@O5Dh?<pf?>$5QVGCYI.QCXq]`5KR2_SO(*_84"*_o0I0_ns:.p;-pJ
+_SO(f^]M9b^&>SD]DfD@\c',>])]GA\HTLR\@B#WosXb)o!SJ*rNuU4qR$%*r3lX5q6p:3r3lO4
+rj`!=!jf/9rO3!=['I!D]tOEXs1/9D]Y![Gr4*u\\%&oV[^NTO[c?H2k3(sml0@U$m-X60n*ol;
+o()DDo`"O`pAamcq#C0hqYU0hr;?N_rn.8:rW2uMr7V#%r7h5+!o;_jrnme8rSm_7rT+"?!p8\0
+rojUOlg*p)m/HDSn*olHncJFUpAXdkq>1!cr;?NlWrLb_n@8LN$%d_YJ:E#rI=-D@H6[][GB\4Q
+FEDSEEcH)<Df0H0D/=!'C2.HrBP1siAS#C_s8W%_"^k\E?=$q:>lS%.>5h\)=9)G%<r])nW;`gr
+WrT6tXTP`.XKB29n%/;+EFNEgAS,UhC27X'DK'T9FEMePH$XjdIt3-'KnbD?Mi<[WOckroQ^F52
+SXuOLUnsufWiN8)Yd(OA[^`l[]Y;.r_Sa@4aN;WLcHaeae'uq"f@em4h;-uHiSrnYk2tjjl0@U$
+m-X91nF?&>o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+LE&~>
+JcC<$L&^fErr)fnr;6Nj!;ZTgF8,D%p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkY^[Bm0CYH=n+W2HJfU7n0LS!o_2Q'7AmO,]*ULk^V9Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@M*!T?<pf?>$5*<@qot)H@CR.q2toDP*2#mPl?jHP4b"@P`q;orfd>E
+s,dAEO,s*srf-f8!0-K.r/C]8rJgf8q2PB6s,I&;pPo-1pl5<4r/LW7ooK'5re:E2reg`4reU?1
+!06u<qMtK7!07#;rf$`4(l[M9k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7ZKerV6EgrqcNhrqu]m
+nG_)?li$q`U&C_^U]%"dV>[:iVuNakWrK.!XT#?sYPtg,Z2h61[/RK6\,EfK\[oAa]Y(qm^r"",
+`5BO4`Q%nts2YGeb0%rQc-O`8d/VMmdf7erf)OA%f`'PJg=tB;h;7)JiSihWjQ,Fbk3(pkkiqBt
+lg*p(mI'H2n+#oHncACUnW)7]s+:W0JUi9#IXQWlHiA=9H$FOWG'.nKF)l;@EH#i6DJa6,CMR["
+BkV0mB4b^dA7Y`?rGr-M?XI,G?2e+/>Q7n+=oVS(=8l5%IsunHIK=qKr.4itr.4`s!/%ubmu7%$
+EFNEgAS,UhC27X'DK'T9FEMePH$XjdIt3-'KnbD?Mi<[WOckroQ^F52SXuOLUnsufWiN8)Yd(OA
+[^`l[]Y;.r_Sa@4aN;WLcHaeae'uq"f@em4h;-uHiSrnYk2tjjl0@U$m-X91nF?&>o(2MQo`Fj]
+p\ssfq>^<hqu6NlrUg)?s+LE&~>
+JcC<$L&^fErr)fnr;6Nj!;ZTgIeWR0p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-+;PaMu3:_SEq"]XkY^[Bm0CYH=n+W2HJfU7n0LS!o_2Q'7AmO,]*ULk^V9Jq/?!I!U'^
+G'%hHEGo`2CMINrAn>L^@UNPL?!LT;=[PMB#!bOH84Q<Lq+h&e:J^sdr_MoVr_N2^qbR/c!DQ>e
+:&du`:]!oe:]F2g9`e'c:]=)h:]=2j:]F2`:]F2a:]F2e:\mid:]+&h;>sAl:]<lj:JFPW9hnDW
+:\[oi<;]_r<:Noe;ZBYr;GmEk(fTJUk2tjjl07L!m-O--n*fc9nac8BoCW%Ts7ZKerV6EgrqcNh
+rqu]mnG_)?li$n_r`&hps&B"ur)Wi!!EN;!<rQ2#=T;J%=T2A%=T)A'>$Lo0s'>Y0pg*o+s'Gb6
+qdBV:@q0%[rau.Brb)^SC2.R$CMR[#Ci"!+rbh^Rs)A!XrcA*^s*"Eds*4Qhs*F]l!IT=pIfFot
+J,k0"K)^H'K`6]*LB!#:Ll$tGMMmCONK0$[oMtB[k#MG6$%d_YJ:E#rI=-D@H6[][GB\4QFEDSE
+EcH)<Df0H0D/=!'C2.HrBP1siAS#C_kNDe/"^k\E?=$q:>lS%.>5h\)=9)G%<WPfarC[)_s%<8a
+!)*5^r(I#_!):0,mo90ar`!lH@q9._BP;-rCi4-0EH6/DGBeCZI!pKpJqJc3Ll%%KNfT<cPa.T&
+R[]k>Tq\?ZVl6VrXfen5Za@0N\\#Mg^VI_(`Q$!@bKS8Wd*^=le^rF+g=tH>hr*JQj5f@bkNM0q
+lg4!*n*fc9nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*&s*t~>
+JcC<$L&^fErVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n^(
+e'ZRhcHOJRaMu3;_SO"#]XkY_[^<BGYcb(-WMcVhU7n3NS=>q5Q'@GoO,f0VM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]l5LDg?nhNL$39\&?2$_SQ/e!Q2kT_Z[io_ns=g_Z.OQ
+_Z%@T^qmh$^:jNYs1A9As1/*>s1A<B!kGhOrjW$=[^Yt=!4D^2rj;a7pU1"/rNuR3qR$(+!OfE8
+[f3]1[f<i6[f3`:\@;IIr42j6!O0!1\,EZ5^AY_E\cTOV]C<K2\c0)R[^W]Q[H6Q5kNM0qlg4!*
+mdBQ4nF?MK!qZ'Vrq6<b!;HEds7u]kqtp?ir;H0bf)P4<s4@;'qq:r%qqM,*#2S.ni8ESQro3h8
+rT+"?s5j=ErojgUlg*p(mHs?0n*fcFncJFTp&=[kq"ad`qu$BjrMonN\a[*HKS+o/JUi9#IXQWl
+H[:!`H$FOWG'.nKF)q8"&TDZ+DJa6,CMR[!BkV0mAnGWRrrSCKPl6mI?iOF4?2e+/>Q7n+=oVS(
+=8l5$VPj?j"0&5tWW&ptWrT7!Xo>L'XTGT+Xhk&)](rsW@qB4aBPD3sCi402EH?5FGBeF\I=?]s
+JqJc3Ll%%KNfT<cPa7])S"-(BTq\?ZVl6VsXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF$Fmf%8R.
+g>(N@hr*JRj5oFckiq?slg4$,n*fc9o()DDo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*&s*t~>
+JcC<$L&^fErVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n^(
+e'ZRhcHOJRaMu3;_SO"#]XkY_[^<BGYcb(-WMcVhU7n3NS=>q5Q'@GoO,f0VM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]l&:?tO4oFF&LlO8+n<P5pjHP5pd>PQ$dJPEM+.PQ$^I
+OcYZcpl>B6r/Li<NfERhr/L`8rJgf8qMkK7s,I&;p5T$0rJ^f9rf-o9r/LW7pl>K<O,s.!s+^Z1
+MMqIk"GqqkM3.Oos,R&=pl><6!07#;rf$c5&EW':kNM0qlg4!*mdBQ4nF?MK!qZ'Vrq6<b!;HEd
+s7u]kqtp?ir;H0bf)P4<rhBFdrhB4`rM9CgrMKOk!iW)tq5XIqriH+$!3Z:(!3lI+"gG8:ZEgh9
+ZiIN5[K*f8\-]^W]">Vg]t_A"rPSWR!li:$rlG,^$HpZ<c-O__dEp:grmDe8eCN4&f@\a/g"Y68
+gYL`Ci8NYSj5]4^k2tjirob!ZlK[^$m-X6/n*]Z7nFH2Ao_%a7fSpc%K7ec,J:N,uI=6KiH?sj^
+G^"@TF`__HErL%jE,TW3D/F*)CMIQtBP;$jAnCuAs)A$ZrH&!Gs'>\2r`oJ-s'#D)s&]8&r`9#J
+rdFltJGXotJGXorJcgXWK7h#?m>Uk#E+<HjB4u!oCM[m,EH-&AG'A1WH[U?nJ:`E-L5:\EN/is]
+P*D9"R@B_<T:r!TV5L8lXKA\1ZEpsI\@K5a^;%M$`5Td<b0/#ScdC.heCN7(g=k?<hV[8Mj5]7`
+k32'olKdg(mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`no_sFAK`?Q~>
+JcC<$L&^fErVc`nr;6Njs7uZhs7ZNerq1X1oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$`<f[n^(
+e'ZRhcHOJRaMu3;_SO"#]XkY_[^<BGYcb(-WMcVhU7n3NS=>q5Q'@GoO,f0VM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]n$X6:40?8H2EZ:]=2i:[CjU:\IQ\:]=)i9htR[s%`>b
+qG%#dr_EGes%WPir_<Ghr_WVjs%`5_!)EDe!)EMhr_E>dqG.&drD<Jjr_WPh#>.NX:/=SY9`7]\
+<W?%s<W?%g;u]bq;\W,,;GuW=k3(smlKdg'mI'E2n*olHncJFTo`"O`p&Ojbq#C0iqYU0gr;?N`
+rmq,<rW#mo<;fbq;ufqq<rZ7s<rZ8#=T;J&=T)>"=TVc2>Pqb+?2n1*?2n71?N=L2@K0j;AGp->
+BE)ZFC&_rJD#\8SC2@^'DJfAj!,qjUs)A]mF)uGGF`qqPGBe@YH$Xd`H[L8@IfFotJ,k0"K)^H)
+KS>-ZLB!#:Ll$tGMMmCONK0'\oMt3VlW"gUK7ec,J:N,uI=6KiH?sj^G^"@TF`__HErL%mE,TW3
+D/F*)CMIQtBP;$jAnC)ck5IUD5lY3k?3":1>lS%.>5h\)=9)G%<WG_h9)_Ha8k].Wr(?r]r(I/d
+9MNA'm8X$arD[`GAS#LfBkhF"DJsN7F*)SLG^=^bIXls#K8#&9M2R=QO-,TiQC+)0S=Z@HU84W`
+W2cr$YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\g2gtgiEi8N_VjlY^hl07L!m-X60n*ol<
+o(2JFrq-?dp\4[^s7u]kr;6KkrVcBfJcCE'J,~>
+JcC<$K`C`ErVc`nr;6Njs7uWg!Vc<eo`=^VrpkL-nF,i6m-O''l0.<mjlGI]iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CY-"b)W2HGdTqJ!JS!fY0Q'7AlNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,TW1CMINqAn>I]@:3GK>[1K9=]fN\H%Cg5Pb>(h_u@LU_ns:._u7OO_tq7M_Z[io_SO+g
+_#hEe^&>SI]=PVc\[h[Mrk&3ArOMs<rjVU0qm>q%rjMd4rjDX1ppL%.s0_X1s0qm6r3u[8r42j;
+"M(_AZEO59#.CqFZbO5grk&BG]">Ven@Sb5r42g:%C`e-k2tmll0@U$m-X6?mfDqJrpg-^o^r.U
+!quB_rV6Bfs8)WirVZTlnG_&>oD\d>!nPuTrn.,$rS%/'s4d\3hV\=js5Et:qr@\:roF4DkNMp0
+"mYF>m-X0=mK2kHnG_t[oC_hVpB^Qjqtp<gr;HVqrrBX`\a[*@KnP)2Jq8H&IsufoI!^0cH$K=4
+"a5$1FE;L%E=-Z'DJj<-Chmg$C&VcGBDhf/PQ-mHQ2b4k?3":1>lS".>5_S*=BAT&<WK&pVuirs
+WW&ptX8f:"Xo5C'XfVK'`;f28qn$u]AS#LfBkqL$DJsN8FED\MH$XgcIXm!%KSG8=MN!OUOHPfm
+QC+)0S=ZCIUSOcbWN*&%YHY==[^WfY]Y2(q_SX71a2lEHc-FY_daZdtf@\g3gtgiFi8WeXjlYai
+l07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+LE&~>
+JcC<$K`C`ErVc`nr;6Njs7uWg!Vc<eo`=^VrpkI,nF,i6m-O''l0.<mjlGI]iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CY-"b)W2HGdTqJ!JS!fY0Q'7AlNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,TW1CMINqAn>I]@:3GK>[1K9=]es<B5;L0H%:X3q2tfCPa(d'rKI>HP5UUEP5gXGOH5It
+NW>(&Nr4k:N;\b7N;AP5NrP+=N;&>1N;/D4N;JV4Nr>"=Nr"h2O9^DmL4tMCMMh@h!0R&;!06u<
+pl><6!07#;req;EMWO!_kiq?slg4!*mf)YUnF?MK!qZ'Vrq-?dp\4X]rqZTjqtp?ir;H-afDkIA
+s.T@b!29Cdq4mk`rMBIirMT[pq5XFpriH+$poak*Z*CU?Zi7<6[C3NQrODm<s186Cs1JWP_Sa:0
+_o)Jm!li:$rlG,^"j>08cHji9d/VMndf7cBe^i='f@\a/g"P07gtgiFi8NYSj5]7_k2tjikih9q
+lK[^$m-Xc>!q5XKrpg']n;c.\&VYmjK7\Z)J:E#rI=-BfH?jc7G6N/4FEDSErc&9aDf0H0Ci!m&
+C2*Z\!,)60rc.sYs)S?a?XI,G?2e+/>6%k*=TV],=8c2!J,autIfP#sJcC8tJbt&tK>dfVN;JTW
+A7]=bBPD6tD/O93EccDHGBnL]I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(CTqeE\Vl?\tXfnt7ZaR?R
+]"G_k^r!t,`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\
+s7u]kr;6KkrVcBfJcCE'J,~>
+JcC<$K`C`ErVc`nr;6Njs7uWg!Vc<eo`=^VrpkF+nF,i6m-O''l0.<mjlGI]iS`VLh:pZ:f@JL%
+da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CY-"b)W2HGdTqJ!JS!fY0Q'7AlNf8mQLk^V9Jq/?!I!U'^
+G'%eFE,TW1CMINqAn>I]@:3GK>[1K9=]e!X6pa=57n?DN:]4,h:[LpV:\IQ[:]!ob:&du`:]!oe
+:]F2g9`e'c:]=)h:]=2j:]F2T:]F2e:\mic:]4,h;>sDg:Ba*V7n?EOqb7&ipf.;nr)NbrnPfHc%
+T?8&jlY^hl07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jmdq>^<gqu-HjrUBg<s7?6g;u9Pm;u]hs<
+Voes=8>nr=8uD&=8l>$<sMi1=^"s3>?h#1!+#S/q-F#,s'Gb6qI0D6s().A"(c(WBDuTEC&_oUC
+hmg$CM[g(DJa9/rbqgUs)A*\F*%>'s*"Eds*4Qhs*F]ls*aors*t'!s+10$s+:H-KnY89reCi:M
+2@+JMi<USNfWg4j](_L&VYmjK7\Z)J:E#rI=-BfH?jc7G6N/4FEDSErc&9aDf0H0Ci!m&C2*Z\"
+_ZiTjlP\'5Q3qJ?iOF4?2e+/>6%k*=TV],=8c1t9)_Ha8P8tU!)*8_r_*,^"&2H`9uR(u<<#ts<
+-;__AS5[jCMRd)DfKf>FEVkRH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StMdPUo(&hWiW>+Yd1UD\%
+0)_]t_A"_SjF6aND]NcHjndeC<($f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV
+6Egs8)Zjrqu`no_sFAK`?Q~>
+JcC<$K`C]Drr)fnrVQTj!;ZTgF8,D%p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[Bm0CYH=n+W2HJfU7n3MS!o_2Q'7AmO,]*UM2-e;Jq/?!I!U'^
+GBJ"JEGo`3CMIQsAn>L^@M3'U?<pf?>$4s/D0(&WMNF*rXo?38_uIXa`Pf[4_o'F1_Sa7._SZ8h
+rkeWM!l2O`rOi-A!P5i>])K;C]",EO\c0)=\+R3,[.:X)[K*`7[/RK0[.h!-[f3]1[f<i5[f!W6
+\G`u<\Gj&=\-/t>ZE^k;[g0@K['IK^^:jNYs1A$<!5&'>#.qIW\@K,[rjW[)kNM0plKdg'mI'H3
+nF5u=o(2JFrUg6cp\4X]rqZTjqtp?ir;H0bf)PLD!7Lkq!S#[!fDjM#g&9Y$g]-%3h;7&Ii;V^7
+ir%j8jSn6Ak32g/s6:-\m-O-,mdBQ4nF?)?oCV_SpBUNjqtp<hrV`br!4pmpn@/[WKnP)2Jq<oO%
+=`hTI=-BfH?jaZGBS-.F:*)0EH,r9Df0H0D#S2PC2%?pr;Ze]rKI8GrfmRm?=$q:>lS".>5_S*=
+BAT&<WK#rVuEUrWMlcpWrK.!XSo:#Y5bU(XSf3@s6mPo]5D1lBP;-rCi4-0EH6/DGBeCZI!pKpJ
+qJc3LP^nINK90aPa.T&R[]k>TV8-VVPpMqXfen5Za@0M\[oGe^VI_(`Q$!@bKJ/Ud*^:ke^rF+g
+=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*%s*t~>
+JcC<$K`C]Drr)fnrVQTj!;ZTgF8,D%p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[Bm0CYH=n+W2HJfU7n3MS!o_2Q'7AmO,]*UM2-e;Jq/?!I!U'^
+GBJ"JEGo`3CMIQsAn>L^@M3'U?<pf?>$4s/?"%D`EHZ_[M><>6PlHpIPkUC?Pl$[DP5gXGOH5Iu
+NW>(%Nr4k:N;\b7N;AP5NWP3!N:r80N;\_9N;eh9N;JV4Nr>"=Nr+n1OT1@DK8#&6r/1K1s,ll5
+pQ#66"HJJ$N/dgq'^"TBl07L!m-O--n*fc8nac8BoCW"S!quB_rV6Bfs8)WirVZTlnc%,>p\t,a
+s.TCcs.TFdq4mk`rh]RjrMK^qWN#]nri?(#riH1'q6'k(Z*F;6rj2[5rjDg9rO<?J]"5Md]tM1r
+_Sa:0_o2Pnrl>#Zs2kDdc-?76s3UenrmCnteCE.LfDjM'g&KbEgYCWAi8ESRioB(\jlY^gkNM-o
+l0@R"lg=*<mKW.LnaZ2Ao^ImoN<Y,kKS+o/Jc:0/IsufoI!^0cH$FOWG'3e+$?L6-EH#i7DJj<-
+rbDUNBkV2Xs86m:EWC1[EW]ZT?=!P8s'#J,rE02(=',?$s*sur!IoXsJc1,tJc10$K7a#Ra8bUe
+pl00&AnYjmCM[m+E,fo?Fa&(UH@1-jJ:`E-L51VCN/`m[P*D5uR$sM8StMdPUo()jX0&P/Z*UgG
+\%0)_]t_A"_o9X:aihlPcHsteeCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_
+rqQNhs8)Zjrqu`no_sFAKE$H~>
+JcC<$K`C]Drr)fnrVQTj!;ZTgIeWR0p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[Bm0CYH=n+W2HJfU7n3MS!o_2Q'7AmO,]*UM2-e;Jq/?!I!U'^
+GBJ"JEGo`3CMIQsAn>L^@UNPL?!LT;=]e`ks$R)Z77Kg?9i"O`:]!uf:[LpV:\d`d:JU^]s%WPi
+r_EJf"&;Qc:A7Q]:&n)h:B!uf:B+)l:/+JZr_NYl:/:4Q!)EMhr_E>drD!Dg:/:darD<Mks%i_n
+;#*oe:'a9[84ZNP:/+F]:&e2`<W?%g;uTZ/k3(sml0@U$m-X60n*oi:o()DDo_nFap@n=[q#:*h
+qYU0gr;?N`rmq,DrqTLi<;fbq;ufqp<WH4s<rZ8#=T;J%=T2D$=oV\*>Pqb+?2e+.>l\..>l\41
+?N=L2@0C%LA7T9NB)ZHBBF8HgC2@^%CMIX$D#S;ODZ4SSE!C<&EcZ>FFoHRaG5umeGlW0iHN8Kn
+IfFotJH(3#K)UB+KS>,7L55bas+pu<Mi3OQNK0(l<TR3M<<e23KS+o/Jc:0/IsufoI!^0cH$FOW
+G'3e+$?L6-EH#i7DJj<-rbDjUBkV2>j5]7a5X>32r]gQm?=$q:>lS".>5_S*=BAT&<WG_j8c_RW
+r_!5_rCm/^rCd&^"\hZb9h\7$s6iqb<W,m7AS,UhC27X'DK'T9FEMePH$XjdIt3-'KnbA>MN!OU
+OHPinQ^F52SXuLJUSOccWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN;WKc-F\`daZh!f@em4h;-uHiSrnY
+jlYail0@U$m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+C?%~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBJ"KEH#f4Chm`uB4YXa@UWYO?<g`==]l)6Ao)O:KStt[Ts=O5rknfUrl"iS#K4Nu_ns=/_Yh=M
+_@FE!_8!^t]tD%k]Xtee\bs&<]DfD@\c0)=\+[9-[.:X([f*T4[JI9)[JmW6[J[H9[C3NQ\,*Q2
+\,No9\c92>\bilJWNNP4[C3QR[^NQM_8!^u^&GYE]D9,>]D0#Y]=PP`\@B)Zk3(sml0@U$m-X60
+n*oi:o()DDo_nFap@n=[q#:*hqYU0gr;?N_rmh&Irr:CFdf7c!eCE+$fDaG"g&9Y%g]-(/h#cKl
+i;V^7iqqd8jSn6Bk3(t-kmQeBlg4$*mI'E2nF6GJ!qZ'Wrq?]nqYU-dqu$ElWrLb_n@8LQ$&+%b
+K7\Z)J:E%II0k:JH?sj]GB\4QrcAKgEcH)<Df9N2D/B2e!,DE2!0dDHr0./Fs-3[n?=$q:>lS".
+>5_S*=BAT&<Wc@!Vl0Klri,pts/Z.#rN6%$!NiI#Xi^V2])'$Q\n>\jC27X'DfB];FEMePH@('g
+It3-'KnbD?Mi<[WOckroQ^F52SY)UMUnsufWiN8)Yd(OB[^`l[]Y;.s_Sa@4aN;WLcHaeae'uq"
+f\,!5h;7&IiSrnYk2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+C?%~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBJ"KEH#f4Chm`uB4YXa@UWYO?<g`==]l)6>@1lTD/siJJW'Gh!0dDHs-!GIq3(iDPPg[BPQ$aF
+OoLLCO84e9NTcE%N<5-"N;\b7N;AP5NrP+=N:r80N;\_9N;eh9N;JV4NrG(>Nr>"?NfT7pOSb(C
+ItNK1MM[8jMZ8J6OHGXrO7eM7O,f8"N>7E7kNM0plKdg'mI'H3nF5u=o(2JFrUg6cp\4X]rqZTj
+qtp?ir;H-aec5UI!2'.]rh9=cs.TFdq4mk`rMBLjrMT[o!3,mr!ir?$ri?%"riPt!"gG8:ZEgh9
+ZimeF[^WaE\-]^W]">Vg]t_A"rPJWRrl+oXrlG,^"j>-7c-O`8d/VMmdNI#ge^i@(f\"m1g=k<:
+gtglGi8N\Tj5f=`k2tjikih:1l3$A=mHso@s6g-\nac8BoC7jnNW4_>KnP)2Jq8H&It%BF$%.)G
+H?jaZGBS-.F:*)0EH,r9Df0H0D#S2MCA\#2E;OYPEW]ZT?=!P8s'#J,rE02(=',?$!EFXJIfFlt
+JGausJGk&rK):2Bs6bjANG)s<BkhF"DJsK6F*)PKG^=^bI=Hd!K8#&9M2R=QO-,TiQ'[l,S"61F
+U84W`W2co#Y->1;[C3TU]=bkm_8=+/`lQ9Fbg+M\dF6Uqf@\d1gYL`Di8N\UjQ>Ufl07L!m-O0/
+n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcCB&J,~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq1X1oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBJ"KEH#f4Chm`uB4YXa@UWYO?<g`==]nil6:4*G6q0[;8l&2X:]!uf:[LpU:\mid:B4/c:BF9e
+:]=)h:&Ri]:]!oe:]F2g9`e'c:]=)h:]=2j:]F2X:B4/h:]=,e:]*rj9hnGZ:]+&h;>j>f:]!lr
+5XS.7:JO\[9h\8U<)iEgr`&Vj!)i_n'^"TBl07L!m-O--n*fc8nac8BoCW"S!quB_rV6Bfs8)Wi
+rVZTlnG^u<rVlgpqbmPo;cEQmrDW_q!*/kr!*Atss&]2%s&]/$s&T8(=]t`-s',D+!+#S/q-F#,
+ra5M1s'u(>s(2:CB)ZHBBEMs`C2Elb"_qjiD/O4iDZ4SSE"m;4F)uGGF`qqPGBe@XH$Xd`H[U>A
+IfFotJ,k0"K)^K'K`?c+LAcr.M$JorMi<XTNfWg4k#ChMs+Ui6KS+o/JUi9#If=a%I!^0cH$FOW
+G'3e+$?L6-EH#i7DJj<-rbDaRiSieVj5iN)5l*_F5QbA"?=!P8s'#J,rE02(=',?$!*/tirC[/_
+9E%Tb9E%Q^9DM9]9`[p\aoD6;r)NPlr`/kqBP2!mC27X'DfB];FEMePH@('gIt3-'KnbD?Mi<[W
+OckroQ^F52SY)UMUnsufWiN8)Yd(OB[^`l[]Y;.s_Sa@4aN;WLcHaeae'uq"f\,!5h;7&IiSrnY
+k2tjkl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+C?%~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq-<aoD\;pnaQ#9mHj3*lKRNqk2k[aio/hQh;-i>g"4g*
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(LEcH#8Chmd!BP(gd@U^*\?X@#C>?Y03=(cAmItirFR\m@-`5DSms2FiQotpgI_u@LT^q[Ut
+rk/HI]=YYbr4;m>rjr*>rj`!;p9sk*o!SJ*rNuU4qR#t(s0hj5rO)g9[^N[A[emQ5\Gj&<\Gs,7
+\-8M)Z*CUBr3ljF_83n#^AY\E]D9,=]DB2?])K5E\@Ledl07O5ljN4Kn*fc9nac8BoCW%Ts7ZKe
+rV6EgrqcNhrVZTlnc%)=s3U\ks3gnq"4YlPfDaG!g&B_%g]-%3h;7&Ii;V^7iqqd8jSn6Ak32g/
+s6:0]m-O-,mdBQ4nF?)?oCV_Lrq?]oqYU0fr;HTnWrLb_n@0$bL5(D8K7ec,J:N,uI=6Kird#'"
+G^"@TF`__HF)l8?E,Y_n!c;ahq>^AWr0.,Es-<Uj!+#S/s'#J,rE02(=',?$"BD=rVl0Nmri,pt
+ri?%"riQ.%!j/Q*r2p"%bl@(Aqn$m[BPD6uD/O93EccDHGBnL]I=?]tK7nu7M2I7OO-#NgQ'Rf*
+S"-(BTq\?ZVl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@i8ESSj5oFckiq?s
+m-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcCB&J,~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq-<aoD\</naQ#9mHj3*lKRNqk2k[aio/hQh;-i>g"4g*
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(LEcH#8Chmd!BP(gd@U`_P?<pf?>$4s/>$tlSDf^/OKSobls-*GH!gAk5qNLc?qNLl@s,d>D
+O5GuqN<"q9NW"h4NW+t<NW4t3NVnb7NW4t;NVnb5NVnh9NrY4=Nrk?&O7n\3O8k:HG(57#L5LkH
+reg`="H\b-O,imoo8`j1"cVX.l07O5ljN4Kn*fc9nac8BoCW%Ts7ZKerV6EgrqcNhrVZTlnc%)=
+s.01]s.B1]rh9=cs.TIepnRb_rh]RjrMK^qWN#]nri?(#riH1'q6'k(Z*F;6rNuR4s0r!;!4i*?
+$G='c^;.V'_o0I1rl"rYa2e2#s2kMgbg"DYci2;kdJhSoeGn,"fDjJ7g"P37gYCW@hr*GPioB(\
+jo4EBkPs`Kl0@R"li$5Nmf2_ZnF?)?oCVR5fSpGtL5(D8K7ec,J:N,uI=6Kird#'"G^"@TF`__H
+F)l8?E,Y_n!c;ahq>^81qJuUB!+#S/s'#J,rE02(=',?$!`a`"rI+csJGaurJGt,rK)1,Ds6YdA
+NH&WGCM[j*DfKf>FEVkRH@('hJ:W?+L51VCN/`m[P*;/sR$jG6StD^NUnsugWiW>+Yd1UC[^`l[
+]Y;.s_SjF6aND]McHjnde'ut#f\5'7h;7)JiT&t[k2tmll0@X%mI'H3nF?)?oCMVIp%J+RrV6Eg
+s8)Zjrqu`no_sFAKE$H~>
+JcC<$K`C]DrVc`nr;6Njs7uZhs7ZNerq-<aoD\<1naQ#9mHj3*lKRNqk2k[aio/hQh;-i>g"4g*
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(LEcH#8Chmd!BP(gd@U`_P?<pf?>$4s/5!VG%77Tj>9MSAZqb[8fmS<[Us%WPirD!Ah:AI]c
+:&n)h:B+#i:/+LW:]!le:]=,g:&dug:]=)h:]=2j:]F2Y:]F2i:]*ud:]4#g:&[of:]+&h;$'Qk
+;#*o^:'<F=8kDPP:]=&n;,U@m<E)stp/V,lpJ_)ir_is_kiq?trp1$[mdKW6naZ2@oCMVRp&Fac
+p\jmeq>U6fqu-HjrUKm;s8#Xl;ZK_o;uBVm;Z]ou<V9Am=8l8#=8l>%=8l>$<rcA$>5qh(>QA(/
+>lJ"/>l@t.?N4@4@/F@>@UinYAS,OcAnPcUBE2cGC'e]lCMIU#Ci+',rbhaSs)8]mEcQ5CFEM_L
+G'A.TH$Xa^H@(!eIK"]qJ,b$!Jc:9$K)gT(L&Zo,M#N59MMmCONK&sZr)NYor`/,\mo9pSL5(D8
+K7ec,J:N,uI=6Kird#'"G^"@TF`__HF)l8?E,Y_n$>jTpi8ESRioB.^r':'Bs$6Tj!+#S/s'#J,
+rE02(=',?$!*/tirCd/_r_*;brC[&^qb.5h9MJ5T9M8%&s8#^m<V]So<Voa8BPD6uD/O93EccDH
+GBnL]I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8X
+dF-Lnf%8R.g>(N@i8ESSj5oFckiq?sm-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcCB&
+J,~>
+JcC<$KE(TCrr)ior;6Ki!;ZTgI/!@.p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[^<?EYH=n+WMcSgU7n3NS!o_2Q'@GnO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]l,6<bZDoJ;9)HR\mIj`;dd_`l5m8`5KX5_o28d#/\9p
+_8*h"rk8?Es1A-=rk&0@rji$<s0qa2qm>q%rjDg7rj;[4qR$")rjMg6!OfE8[K*`7[K*f5[emQ5
+\Gj&<\Gs,4\.N&DXg57@[^W]R\%oeq_8!^uot::9!4r$>s186@%I!'@lKdg'mI'E2n*olHncJFT
+o`"O`pAamcq#C0hqYU0gr;?N`rn7>Oci2;hdJqYodfe1Nf%8OQf_aA#gA9P-gtgiEhr+Ils5Nq9
+roF%>!U&\GkmQeBlg4$*mI'E2nF6GJ!qZ'Wrq?Khq>1*f!rW#qWW1Y^n[KZtLkg_>KnP)2Jq8H&
+IsufoI!^0cH$FRXGBS+NFE;L%E<1#srbhN2!0d8DrKI2E"-m1u?2e+/>6%k*=TV],=8c/&<MlXk
+VuEXnWW0!uX8]4!XoGR'XT5I"XoGQLs6R>q]5kJrC27X'DK'T9FEMeOH$XjdIt3*&KSG8=MN!OU
+OHPfmQC+)0SXuLJUSOcbWN*&%YHY@?[^WfY]Y2(q_Sa=2a2lEHc-FY_daZdtf@\g3gtgiFi8WeX
+jlYail07O#m-X60n*ol<o(2MGp%A%Pp\ssfq>^<hqu-HlrUg)?s+:9$~>
+JcC<$KE(TCrr)ior;6Ki!;ZTgI/!@.p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[^<?EYH=n+WMcSgU7n3NS!o_2Q'@GnO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]l/7<aB*DC2nBBIY3WCrfd5DqNLf@qND/IPEM)kOcYX]
+NrG">NfB"qNW"h5NW"k=NJrhiNW"h7N<"q:NW+k;NK!aorJpo=s,R)>"-/G&O7n\3Nrb?'rf@7^
+H\.!,qhkE:rfR5A!fi>%plG!+%I!'@lKdg'mI'E2n*olHncJFTo`"O`pAamcq#C0hqYU0gr;?N`
+rn7>LSc55\TDYA]U&LedU&Le^U\gkdV>d@jVuN[qWVNRmX8f:#XT5O"Y6(r5Z2V'.ZimeF[^WaE
+\-]^W]">Vg]tV;!r58NQrl>#Z"Nnp2c-?76!7:\ls3gqs)qENjf@S[-g"P37gt^`Bi8ESRioB+]
+jlY^gkPjZJl0@R"m/?>OmK`4MnF?)?oCVR5fo7)1Lkg_>KnP)2Jq8H&IsufoI!^0cH$FRXGBS+N
+FE;L%E<1#srbhN2!-%gT!HN2UEWTQQ?2e+/>6%k*=TV],=8c/$<I]MsIK=qKqgn]rrIOp!!J?""
+K?jM`N;SZTBPM=!DJjE5EccGJGBnL^I=HcuK7nu7M2I7OO-#NgQ'Rf*S"6.DTqeE\Vl?\tXfnt8
+['mHS]"G_k^r""-`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nN
+p@nR]s7u]kr;6Hjrr)KgJcC?%J,~>
+JcC<$KE(TCrr)ior;6Ki!;ZTgJ+r[1p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOfc-4AQaMu3:_SEq"]XkY_[^<?EYH=n+WMcSgU7n3NS!o_2Q'@GnO,]*UM2-h=K7SQ%I=$9b
+GBJ"JEH#f4CMRWtB4YU`@UWVN?!LW<=]ng,5Q=%T6q0a;84u`Sqb[8fs%WPinP9$Ys%WPirD*&^
+!_uNer_<GfrD*)_qbI/er_EGe!)EMhs%WPirD3Pk:/:4Q!)EMhr_<Ji:B"&e:&n#f:B+,g;#X;n
+:f1'b:\RWa9a!aD77p,M:BsWh9i4bc<)riqr`&qtr)N_qpJ_)i%I!'@lKdg'mI'E2n*olHncJFT
+o`"O`pAamcq#C0hqYU0gr;?N`rn7>G;YsAo;H$Nk<;fbq;ufqf<WH5#=T2D$=T;G'=BYT+s',D+
+!+#S/pg!l+ra5M1"CbkOA7baPrb)4D$#+-hCi!m&C27YaD?"MRDuO\YEH6)AFT-F_G5laqG^4U\
+H?spbI=6QnIt.HJ!.k-$s+:K.KnY89L]3,/M$JorMi<XUNfX-=hc0&E+,Pf/L5(D8K7ec,J:N,u
+I=6KiH?sj]G^"@TF`__HErL%ZE,Y_n$/XRti8N\TjQ/W&5l!VH5[I`%r`oJ-!*]>(!a&N*rDir!
+8c;9[9*%UWr_38_rCd&^!DQ8e9`Rld9@!S5<;]bg<,lSdCM[m+E,fo?Fa&%TH@1-jJ:W?+L51VC
+N/`m[P*;/sR$jG7StMdPUo(&hWiW>+Yd:^F\%0)_]t_A"_o0O7aND]NcHjndeC<($f\5*8h;7)J
+ioB+]k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrqQNhs8)ZjrVZZno_sFAK)^?~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]Xt_a[^<BGYcb+/Wi)_iUS4?PS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH#i6Chmd!B4b^b@UWYO?<pf?=]l29=&s*SG_([2PFSS\`;[^U`r<sW_uRdU`;d^V`5BOg
+_Zdon^V@Lsrk8?E!5&*=rk&0@rOMs<!4V[1qm>q%rjMd4rjDU0q6^=3[C3OA[JdN6[J%'+\,No;
+\c'#<\b!?1\Ik=1Z*LmJ[^W]R\%oeq^q[Utot1F>]"5McrO`NL]=PQ;l0@U$m-X6?mfDqJrpg-^
+o^r.Us7ZKerV6EgrqcNhrVZTlnc%DFqp55frR(VmrmUnt!S5m$f_aA#gABV/gtgfChr*GliVqj6
+j8S-=jT4N-rosIJ&F8]LmHs?0n*fc9o()DDo_/:Y!VlNiqZ?]ori,qN\ad0PM26qAL4t;5K7\Z*
+J:N,uI=6KiH?sj]GB\4RF`__HErL%ZE,YLNs-*MIr07&ArKIAK?![G7!aAi3r`T8's&]2#s&B2$
+VP^8hri#gqs/Q+"rN-"#s/uC(!NrO$XoGO(YL*=8])TDB\nYtqD/O93EH?5EGBeF\I!pKpJqJc3
+Ll%%KNfT<cPa.T&R[]k>TV8-VVl6VrXfen5Za@0M\[oGe^VI_(`Q$!@bKJ/Ud*^:ke^rF+g=tH>
+hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*$s*t~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq1I,oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]Xt_a[^<BGYcb+/Wi)_iUS4?PS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH#i6Chmd!B4b^b@UWYO?<pf?=]l5:=&rR7Anu@.G^b@+PEYm.qNLf@plboFPEM&jOH8:Z
+r/C]8rJg`6qi1T8s,I&;p5T$0rf-r:s,Hr8qMkH6s,[2?rf7&>rf?f8q2YQ<O8=qBF+/gtMMd8h
+MZ8hBOHGZdO8b17O8+_8NW+t<klpA<m-O--rpKmWnc&(\oCV\Sp&Facp\jmeq>U6fqu-HjrUKmD
+s7`)aT)YG[T`1YbUAgkdUA1M]V#@.hVZ!CnW2]Zo!ir?$ri?(#riH1'q60h&!3uO/!42[3"LY\H
+\$u=G$+[XY]=bhk^V[kd_Z7XS`W!pXa9B].bKS5Urm1Vks3^hos3q)"f)F;$f`0\*g]-%Sh;7)J
+iSrkXjQ5Lck3(pkkiq?slKdg(mI'B0mdKZ7nac8Bo^RspN?F(6LPCP;KS+o/JUr?%IsufoI!^0c
+H$FOWG'8"MFE;L%E<1#sp](85!-%aRpi?C?r`fM/>$Co.s&f;&r`9&!!`XZ!rI+csJGaurJGk&u
+JcULUq1A[#d/WEjrJbQ,CMds-EH-&AFa&(VH[L6kJ:`E-L5:\EN/is]P*D5uR$sM8StMdPUo1/k
+X0&P/Z*UgG\%0)_]t_A"_o9X:aihlPcHsteeCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?
+oCW%T!quB_rqQNhs8)Zjrqu`no_sFAK)^?~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq1^3oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJRaN)9<_SO"$]Xt_a[^<BGYcb+/Wi)_iUS4?PS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH#i6Chmd!B4b^b@UWYO?<pf?=]nj.<^/r<63fnK7Rp*G:f%'er_NPh!)NMf!)N>ar(dAh
+:J^sbnk]0Y!DcJa:]!oe:]F2h:&dug:]=)h:]=2j:]F2Y:]F2i:]*ud:]4&g:&duf:]4,f;#jGh
+:\IQ\9a<F<8kMlT:/Cj`$rKo$<)lms;c?Xq<E/iqs&Ahn$W9o%;X*H2lg4!*mf)YUnF?MK!qZ'V
+rq6<bs7cKes7uZjqtp?ir;H0bhZ*OQpJUofs&/hpr)ESm!E<(k<WH5#<rZ8$=T2D#=T;G&=T)G&
+>Pq_+?2e+.>l\..?2n71?i"42A,g*>AcZITrb)4D$#+-hChmd$C27YaD?"MQDuXeVEWgH*FEMa*
+G5lddGli;;HN&6kIK"]qJ,b'!Jc:9$K*6j]Knb?]M#N82MZ8S;N/`jXO8`/;<:*[.M26qAL4t;5
+K7\Z*J:N,uI=6KiH?sj]GB\4RF`__HErL%dE,XRhhV[8MiSrqZr]g<Gq`k'Ds$$QM?![G7!aAi3
+r`T8's&]2#s&B%urC[#]s%<8a!)*8_r_*,^!DQ8e9`n'^92*_4pf./koi,[@CMds-EH-&AFa&(V
+H[L6kJ:`E-L5:\EN/is]P*D5uR$sM8StMdPUo1/kX0&P/Z*UgG\%0)_]t_A"_o9X:aihlPcHste
+eCE1&g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAK)^?~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq-<aoD\<1naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4g*
+eC)akcHXPTaN)9<_SO"$]Xt_a[^EHIYck10Wi2hlUnXNRSXZ(8Q^*btOH5B[MM[(AK7\W'I=-?d
+G^":PEcH#8D/3m#BP(gd@q&kR?X6o@>$4s/<`X'WH%Lj4PFehcs2G#Xrl"rW`Pq\lrPK#]_o'F1
+_SX+(^V7G\]`GdXqRZ[<rjr-?"1l%Q\G!?2[JR?&[JmT7[JmQ4[JI62[C#_:s0hj5rjMj7s0_p:
+q6p41rODm<rO;j<o=4_/s1/f9XKf(>[C<TR]"l(r_8!b!^@f/<])TDA]Eu3]l07L!m-O--rpKmW
+nc&(\oCV\Sp&Facp\jmeq>U6fqu-HjrUBgIs8U@CcMZ#ed/;;kdf.\teCE.$rRh##rS%/'s4db5
+hV[5KrSdb8r8[e;rT+(Ckl0iHl4<4ImHj6.mdKZ7nac8Bo_&1W#Pn5nqu$BjrMfhM\a[-/M%,8r
+L5(D8K7ec,J:N,urd>?*H[:!`G^"@TF`heJF)l8?pAalOq31cAs'>V/s'#J,r`T8's&]/"!EE+u
+V?!OnW;`dqWrK.!XSo:$Xokf/XfVE%s/lC+Yg`XO\a?t@]=PRiD/O93EccDHGBnL]I=?]tK7el4
+Ll%%KNfT<cPa.T&R[ftATq\?ZVl6VrXfen5ZaI6O\\#Mg^VRe)`Q$!@bKS8Wd*^=le^rI,g>(N@
+hr*JRj5f@bkNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*$s*t~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq-<aoD\<'naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4g*
+eC)akcHXPTaN)9<_SO"$]Xt_a[^EHIYck10Wi2hlUnXNRSXZ(8Q^*btOH5B[MM[(AK7\W'I=-?d
+G^":PEcH#8D/3m#BP(gd@q&kR?X6o@>$4s/<`TQ6?tO4oG'\UmOH]R+qigoAq3(fCrf[MKOcb`d
+O5Q&uN<>3#NK!gqr/CQ5rJpo;!0$W2rJ^]7s,?u;r/CK3rJgl=rf7#>rf-u>p5o-3!g&J(p5fE%
+JVAi8rJCT7rf[8C"-AS(Nq\V7NW>.;NX1X/l0@U$m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcNh
+rVZTlnG_MKo:>oQrh'(\rh9@ds.TIepnRb_rMBLjrMT[o!3,dorN#t"riH1'q6'k(Z*F;6rj2[5
+rjMj9rjW9F]"5Md]tM.q_Yh=N`<+'"a8X0[b5]]cc2Z*Nd*^4fdF-IleC<%"f@S[-g"P07gYCT@
+hVdAOio9%[jlPXekND'mlKRU!m-O-,md9H1n*oi:o()DANnKElM%,8rL5(D8K7ec,J:N,urd>?*
+H[:!`G^"@TF`heJF)l8?pAY,5ol9bIs'>V/s'#J,r`T8's&]/""'&<MJ,OfsIt7EIrIFp!s*t*#
+rdk0'K)($"KS@nT!fW%qm>V%(A8H+#DfKf>FEVkRH@('hJ:W?*KnbD?Mi<[WOckroQ^F53StD^N
+UnsufWiN8)Yd(OB[^`l[]Y;.s_Sa@4aN;WLcHaeae'uq"f\,!6h;7&IiT&tZk2tjkl0@U$mI'H3
+nF?MK!V>s_o`Fj]p\ssfq>^<hqu6NlrUg)?s+:9$~>
+JcC<$KE(TCrVc`nr;6Njs7uZhs7ZNerq-<aoD\<(naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4g*
+eC)akcHXPTaN)9<_SO"$]Xt_a[^EHIYck10Wi2hlUnXNRSXZ(8Q^*btOH5B[MM[(AK7\W'I=-?d
+G^":PEcH#8D/3m#BP(gd@q&kR?X6o@>$4s/<`VKb6O#qJ7n?BL:]=2i:BF9e:]=,g:\[]^:BXEg
+:JO[T:]F/j:JULWqb@,er_<Pi:/+L_:]F/i:]4,i:B4/X:]F2i:]*ue:]*uf:&duf:]4,i;$0Wl
+;,I*bp.k?V"?8hB8P]7\!)<Gi$W9r'<E)pr;cQgs;u9Si;[?:cl0@U$m-X6?mfDqJrpg-^o^r.U
+s7ZKerV6EgrqcNhrVZTlnG_MKs&/\lpJUrgr_ibpr)ESms&98(<`W4$<`N1#qGmZ!<`f9&r`B)$
+s&T8(=]t`-s',D+!+#P.r`oM/rETD0ra,Y5qdBb>@q9+]AnGUdrb)7E!,;FI$#FBmC2.R$D/O4i
+D?+VSDut$"ErL1\FoQXbG63#7H2`-iHNAMBrdOlss+(-#s+:9'!/1?*",;SeM#E/8MMmCON/`jY
+r`.ZOnl>^H%>]doL4t;5K7\Z)J:E%II2dQ\H?sj]GB\4QF`__HEcH*Sh;$iChV[;Nj5g,&r':-D
+rBC6Gs'>V/s'#J,r`T8's&]/"!``2krC[#]!(m,_qFU`\r(I8g9MA/T9`@Zc9M<k7!`W)sl;V;1
+D/O93EccDHGBnL]I=?]tK7el4Ll%%KNfT<cPa.T&R[ftATq\?ZVl6VrXfen5ZaI6O\\#Mg^VRe)
+`Q$!@bKS8Wd*^=le^rI,g>(N@hr*JRj5f@bkNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6i
+r;HTdrdk*$s*t~>
+JcC<$K)bKBrr)ior;6Njs7uWgI/!@.p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcY",WMcVhU7n3NS=>q5Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBS(LEH#f5Chm`uB4YXa@UWYO?<g`>=]l29=&r=<EI3FrOHuK=]`#kK`<XE%`5T[5`PhYk$,ja!
+_SO((^V@M^]`GdXqRZ[<rjr'=s0r'<pU1(0qm>q%rjMd4rjDU0!O]<1[K!]4[JmW7[J.*1\$l7E
+rO;j<rO;j<o!nV.qmlm.Z*Ln<[L0+O^q[\$^V7Fq]D&r=]=IpPrjrTOl0@U$m-X60n*oi:rpg-^
+o^r.Us7ZKerV6EgrqcNhrVZTlnG_\P!R&^dblc89cHc=5rm:Sjs3gkp"4buRfDXA!g&9Y%gBHBg
+hVR/Jr8I\8qr@\:roF1Ckl0iHl2p;<m/HATmdKW6nG_t[oCV_TpB^Qiqtp6er;HVos4OsQ\.spZ
+M2@%DL5(D8K7ec,J:N,uI=6Kird"`nG^"@TFoHI_F7fM+Pk^I@PQ5"g>QS,5>5h\)=T;J$<X)Q'
+<2QOjVuEUpWVrjsX8]4!XoGR(XT>T+qlTn$s/uF,ec5ETn@JX;CN+96FEMeOH$XjdIXm!%KSG8=
+MN!OUOHPfmQC+)0S=Z@HU84W`WN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^dF6Urf@\g2gtgiF
+i8N_VjlY^hl07L"m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+:9$~>
+JcC<$K)bKBrr)ior;6Njs7uWgI/!@.p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcY",WMcVhU7n3NS=>q5Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBS(LEH#f5Chm`uB4YXa@UWYO?<g`>=]l29=&r=,@VBOsG'SUnOo(CCPQ-jIPP^U?P5pjHPQ-gG
+OTCQ)i/[_p!0$l9r/CN4rf7#<s,?Z2rJ^]7!fW+uqi(B2rJh#ANfK0]rJgl=pQ533!K`B4O9g8g
+L5UnGMM[,eP5gXFOH9C$pQ,?7!0@&<$gHsBm-O--n*fc8nc&(\oCV\Sp&Facp\jmeq>U6fqu-Hj
+rUBgNrrAPfSF`<NT)YG[T`1YbUAgkdUA1M]V#@.iVZ!FmVuWgoWWK6$WrB(!XT#=%Y5,:$YlD!.
+Z2h61ZimeF[^WaE\-]^W]">Vg]tV;!r58NQrl>#Zs2kDec-?76s3UtrdF$CjrmV2'f%8O+f\,!X
+gD\l(hV[8Mio9"ZjQ5Lck3(pkkiqBtlg4!*mJZGWn*oi:o()DBNnKC,Mi*@JLkg_>KnP)2Jq8H&
+IsufoI!bj="aP?:GBS-.F9$CSs8I'4EVFJR?2e(1>?Y50=oVV(=8c/%<E)qIrI4cr!.auurIFp!
+s*t*#rdk0'K)('!KE-bWs8S&SMt2i,NW3m3E,fo?Fa&%TH@1-iJ:W?+L51VCN/`m[P*;/sR$jG6
+StD^NUnsugWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]McHjnce'ut#f\5'7h;7)JiT&t[k2tmll0@X%
+mI'H3nF?)?oCMVIp%J+RrV6Egs8)Zjrqu`no_sFAK)^?~>
+JcC<$K)bKBrr)ior;6Njs7uWgI/!@.p%@tLoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcY",WMcVhU7n3NS=>q5Q'@GoO,f0WM2-h=K7SQ%I=$9b
+GBS(LEH#f5Chm`uB4YXa@UWYO?<g`>=]kl0=&r<er^-iW7n6-G:B")e:]F2g:\[]\:]F2[:]*rg
+:JUUZqbI/es%`Me!_uNer_<Ghr_WVjs%`5_!)EDe!_uNeqbI,drD*>ds%`Sir)!;g!)WPgohP-R
+"&;*Q9)VNh:/+V`;,[?lr_io!<)Z`n<<-"o;[_jTlg4!*mdKW6nF?MK!qZ'Vrq6<bs7cKes7uZj
+qtp?ir;H-al2Uc\r)3DjpJUofs&/kqqc*Jl!E<(u<WuK(<E<.#rDj&&<`W:'r`K/$rE0)$!*K2'
+r`f;*!+#S/q-F#,ra5Y5!+>e7"CbkOA7baPrb)4D&8>loCMR[#C27X%D/O3.DK#Mns)J'ZrcJ0_
+s*"Eds*4iqH$Xd`H[U>AIfFotJ,k0"K)^K'K`?c+L]<2/M$SusMi<USNfR2j<;'<,Mi*@JLkg_>
+KnP)2Jq8H&IsufoI!bj="aP?:GBS-.F96O<g]#t5h;7#HiSrnYqEOpDq`k!Bs$$Khr`fM/>$Co.
+s&f;&rDiu"<)i]d#tml`9M8#N8kDVQ9)D9b9h\8U9`@]b9E7`9s8Q'p;t*cdDJO32EccGJGBnL^
+I=?]tK7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF$Fm
+f%8R.g>(N@i8ESSj5oFckiq?sm-O--n*fc9o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC?%J,~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJSaN)9<_SO"$]Xt_a[^EHHYcb+/Wi2ejUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(MEcH#8D/3m"BP(gd@U`_P?<pf?>$4s/<`TQ-D5DW6MNF-qX1nSQs2G#Xrl+oU!l`*rrkf/_
+_o0L2_ns:,^qd_!rk/?F]DB,<]DfDA\HBFR\@D7@!4D^2o!SJ*rNuU4qR$:1!4;X2"15JE[emK4
+[f<c/[emQ4\,a)<\,a)1\GWo5])TATX08h=[^NZ<^qd_"^qd_!^:_)P]Fh`c\[oAa]B\_Km-X60
+n*oi:rpg-^o^r.Us7ZKerV6EgrqcNhrVZTlnG_nVrlY5`!6kDdrm(DerQtMjrmLep!7_#!rRh##
+rS%/'s4db5hVR/Jr8I\8qr@_;rT+(Bkl0iHl4E:JmHj6.mdKW6nac8Bo_%qWpAt'crqcfqrVc_p
+s4OsQ\0-`gMM[1GLPCP;KS+o/JUi9#IXQWlH[:!`H$FOWG'.ous8S;UPkgOAPQ5"g>lS".>5_S*
+=BAT&<rZ/&<2QOjVuEUpWVidrX8]4"XoGR(XTGZ-XSf4#Y5b[+YccUXpUTh*Ci=<5F*)PKG^=[`
+I=Hd!K7nu7M2I7OO-#NgQ'Rf*S"6.DTqeE\Vl?\tXfnt7ZaI9Q]"G_k^qmn+`Q-'BbK\>YdF-Oo
+f%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\!;ZWjr;6KkrVcBfJcC?%J,~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJSaN)9<_SO"$]Xt_a[^EHHYcb+/Wi2ejUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(MEcH#8D/3m"BP(gd@U`_P?<pf?>$4s/<`TQ-?[Z[+EcubZLQ_V#!0dAG!0d;EqNLrDrfd>E
+!g/S*i/[hs"-/A#N;\b6N;JV6NrP+=N:r80N;eh:N;nn7N;AP1NrP1=NW>.7OS=h)OT1FEJVAjW
+M?&,(P5^REOH9C$pQ#?8O8Y(GlKdg'mI'H3nF5uIncJFTo`"O`pAamcq#C0hqYU0gr;?N_rpTjm
+R$jA2R[]e:SFW6NT)PAZT`1VbUAgkdUA1M]V#@.hVZ!FmVuWgmWr9!uXT#=%Y5,:$YQ1s-ZMq62
+[K!]8\,Ei:])TDB]`Pp__Yh:O`;[aTa8X-_b0/#RcMl/gdJqW7e'umte^i@(f\"m2gY:N=hVR/K
+iSrkWjQ5Lck5OQDkQ:#6lMg/LmJlVRmf`.No(2JCNnKC7N/NRMM26qAL4t;5K7\Z)J:E#rI=-Bf
+H?jd\GB\4QFS#P4EW'qPEVjbVF8g1[?2e+/>6%k*=TV],=8c2"<<?-LJ,OfsIt7EIrIFp!s+(*#
+s+:<'q1Aa%L4e+Xrf$]3nr.FFDfKc<FEMePH?sseIt3-'KSG8=MN!OUOHPfmQC+)0SXuLJUSOcb
+WN*&%YHY==[C<]X]Y2(q_8=.0a2lEHc-FY_daZdtf@\g3gtgiFi8WeXjlYail07O#m-X60n*ol<
+o(2MGp%A%Pp\jjeq>U6gqu6NlrUg)?s+:9$~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq1^3oCDJBnF,i6mHj3*l07Epk2k[aio&bOh;$c=f[n^(
+e'cXicHOJSaN)9<_SO"$]Xt_a[^EHHYcb+/Wi2ejUS4?PSXZ%7QBdYsOH5?YM26n?K7\W'I=-?d
+GBS(MEcH#8D/3m"BP(gd@U`_P?<pf?>$4s/<`W3e63okD7R]m?:/4X_:]F2g:\[][:B4/Z:]F/j
+:JULWqb@,er_EGes%`Sir_<Ghr_WVjs%`5_!)EGfs%`SiqbI/er(d8dr_EJhrD<Dh!)WMfp.k6S
+s%`Mg"%5^Q:B"$#8l8J`;GpIo<)cdp<)lmr<;]bm;[VgUm-O--n*fc8nc&(\oCV\Sp&Facp\jme
+q>U6fqu-HjrUBgTs8Gjq;Z9Pk;Yj>e;Z'Jm;ZB\n<;]\p<!ZK)<`N.#<E<,u<rZ5'<``='r`K/$
+r`K2%!a&T.r`]>+s',P0qHX#*!*oJ.!+,Y3!+>\4#\%:SA7]@bAS1pSrb2:G!GlQNC'\TkD/F0-
+DJjClE!:6%EcZ>ErcS6as*+Kg#C:ZAH@(!eIK"]qJ,b$!Jc:9$K)gT(L&Zr.L^T&qM2@+JMi<XT
+NfV^ioi3])Mi*@JLkg_>KnP)2Jq8H&IsufoI!^0cH$OXYGBS+Ng"P39gYCW@hV[8Nj5W<eq*4jD
+q`jsA!C'lh>lS".>5_S*=BAT&<rZ/"<;K5e9*%XYr_*8`s%32^!)*5`!DQ8e9`Rld9*.d[9@s4C
+<;KPi<;ohn<,?JmEH?5EGBeF[I!pKpJqJ`2LP^nINK90aPEhH$R@Bb=TV8-VVPgDnXKA\1ZEpsJ
+\[oGe^VI\&`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo^qhLp@e7Z
+p]1-hqY^6ir;HTdrdk*$s*t~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq-<aoD\<'naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4j+
+eC)akcHXPTaN2B?_ns4(]tCqe[^EHIYck11Wi2hlUnXQTSsu19Q^*euOH5B[MM[+CKS+i+IXQQh
+G^":PF)c/:D/=!%BP1mf@q&kS?X?uB>?P*2<`TZ0BVVGPL5M(YSu]`Ja8O$W`<O9"`Pf^4_u%CP
+_ZI]k_>_1P^:h4m]DB,<]DfAF\[oA_\[V=As0_d3o!SJ*!4Dg5rjDU0!k#DBq6g72r3cO4s0_O.
+r3tn"r42X7s1A3?!jT>ErjMjBs1eTLs1\WL]t=$O!4r->!:0XN$gmBNn*ol;o()DDo_nI_p&Ojb
+q#C0hqYU0gr;?N_rq6<kaT'B\b5TTabl5igcHjf4ci2;hdJqYodfe1Nf%/IOf_jG#gABV/gtgiD
+hr*GkiW%p7j8S-=jT4N,rosIJ!pf4>rpBaR'^tP\nac8Bo_%qPp\=R\qYU0frV`\pft$[`&%RXW
+MM[1GLPCP;KS+o/Jc:0+IsufoI!^0cH$K=4!-[u6r0-f<qNLiAr`fM/>$Co.s&f;&rDrqus&B#q
+s/5mqs/Gsss/Z.#rN6+&s/c=)XSf4#Y5b[,Yck4_s7X"p\n5l#EcZ>GGBeF\I=?ZrJqJc3Ll%%K
+NfT<cPa.T&R[]k>TV8-VVPgGpXfen5Za@0M\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQ
+j5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s*t~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq-<aoD\<'naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4j+
+eC)akcHXPTaN2B?_ns4(]tCqe[^EHIYck11Wi2hlUnXQTSsu19Q^*euOH5B[MM[+CKS+i+IXQQh
+G^":PF)c/:D/=!%BP1mf@q&kS?X?uB>?P*2<`T]1>C:m6DKC#JJ;9;PPEY[(qih#Drfd>E!g/S*
+i/RkuNfNsqr/CQ5rJpo;!0$W2rJ^]7s,?u;r/CH2qMkQ:r/Lc<plP31mu[R3r/_/;Mi!=JM3F)$
+P5^RHOH5B]NqJG6NpH]2$gmBNn*ol;o()DDo_nI_p&Ojbq#C0hqYU0gr;?N_rq69kRJ`HPRK&`U
+S,SrLSc>;\TDG5[T`ChdT`Ch]U\pqdV>mFkVuEXiWrB(!XT#@%Y5,7&Yd(J4ZMq34[C3OC\,NlD
+\[oAa]Y2"m^r$#e"iSC!`lH.!aT'BebKS5Vcd0u:d3$fce'umte^i@)f\,!4gY:N>hVR2LiSrkW
+jQ5Lck3)^,$L-j@m-O-,m-X3.rpL!Zo()DEnW):^%ZH='M2@%DL5(D8K7ec,rdY<)IXQWlH[:!`
+GlDmeG4Yb3EW'qQEW0t]EH6)@F8g4Z>QS,5>5h\)=T;J$<rZ2";uhFHIKG"LJGautJGt*$J:E.L
+JcULUq1Ad&KnY35s8@oQMt;m>DfKf=FEVkQH@('hIt3-'KnbD?Mi<[WOckroQ^F52SXuLJUSOcb
+WiN8)Yd(OA[^WfY]Y2(q_Sa@4aN2NIc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<
+o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+13#~>
+JcC<$K)bKBrVc`nr;6Njs7uZhs7ZNerq-<aoD\<1naQ#9md0<+lKRNqk2tabio/hQh;-i>g"4j+
+eC)akcHXPTaN2B?_ns4(]tCqe[^EHIYck11Wi2hlUnXQTSsu19Q^*euOH5B[MM[+CKS+i+IXQQh
+G^":PF)c/:D/=!%BP1mf@q&kS?X?uB>?P*2<`W3c5smq+77Kj=s%`Ge!)EGfpeKsI!)EJg!)W>a
+r(d8fr_EGe!)EMhs%WPirD<Mi!)DrXs%`Sir(d5erD*>ds%`PhrD<Dh!)WPgohP-R!)E8a#"_Qa
+:JX_^r_Wer;cHarr_rhrs&/nsrDiep!E/7_ljN4Kn*fc9nac8BoCW"Ss7QHer:p<frqcNhrVZTl
+nG`+\s&/_ks&/hnrDNJjpJUrgr_i_orD`Ym$<1#+<`N.#<E3("rDrhtr`K,#r`K2%!E`M(>5hb(
+>QA(.>lJ"/>l@q.?N+:6?t!JOra?(A@q9+]AnGUdrb)4Drb;FKrG)@K!,_XOs)@sW!HN8\FT6L`
+G5ladGl;mfHN&9kIK+crJ,b'!JcC?$K*?p^KnbA<reLo<Ll%"IMi<XTNfVdko2Q9ZMi*@JLkg_>
+KnP)2Jq<oO$%IDPI=-BfH?jc7G6<$Ag=lP\#Me.khr*JQj8;+:5Q="G5PdPD5Q4mh>?Y50=oVV(
+=8c2"<W?%q9)hNg8kViN91hhS8H;B]9`Iie9`Iie9`Icc9E@d[g&M"MqG[5iqGV!EEH6,BG'A1W
+H[U?mJ:`E-L5:\EN/is]P*D5uR$sM8StMdPUo(&iX0&P/Z*UgG\%0)_]t_A"_o9X:aND]NcHste
+eCE.%g"P3:h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcC6~>
+JcC<$K)bKBrVc`nr;6Njs7uWgIeWR0p%@tKoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH,o7Chmd!BP(gd@U`_P?<pf?>$4s/s&KS.MQa"0L5M+ZT<$#Pa8O$T`<!opqo&NP$GsWq
+^qd_!^:h1kqRZ[<rji*?rji0A\@;7ArjD^3n[8A)rNuR3qQp=3[']\;rjMa4s0hp7osXe-l+$W$
+q7?U<qmld<rO<<E[^Nf`^q[Y"^q[Xu^%f8?]DfA@ljW:LmdKW6naZ2@oCMVQo`Fj]p\agdq>U6f
+qu-HjrUBg`s8U.:a8j?\b5KK`bl5ihcHje]qp58gr6bPmrmLntec+.uf_aA#gABY)g]ZHihV[8h
+iW%p7j8\3=jT4N-rosIJ&F8]Mm-X3.n*fc9o()DEp%A=Y!VlKiqu?QprVibqft$^a'tK<_N/NRM
+M26qAL4t;5K7\Z)J:E%II0P(GH?sj]GOb_0POt+<PP^UD>QS,5>5h\)=T;J$<X2W(<)]ZkVl0Nm
+!3,psri?%"riQ4's/c@*XfVH&#-P/5Yct:#g]-rWoX\FMEccGIGBnL]I=?]tK7nu6Ll%%KNfT<c
+Pa.T&R[]k?Tq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q$!@bKS5Vd*^=le^rF+g=tH>hr*JQj5f@b
+kNV6rlg4!+n*fc9rpg*]o`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#s*t~>
+JcC<$K)bKBrVc`nr;6Njs7uWgIeWR0p%@tKoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH,o7Chmd!BP(gd@U`_P?<pf?>$4s/s&KJ+Ck.(PDf^,KJVjAirfdDJq3:c?s-3MHrfR>F
+OH8:Z!f`5#qi1K3r/L]9s,I&;p5T$0rJ^f9rf-i7s,@#;r/LQ5!0@)=s,Zr:ooJU(s,m/>rf78A
+M2I1PPEGj-rfI8DO,a.!r/^l<rf@*G%.3KNn*fc9nac8BoCW"S!quB_r:p<frqcNhrVZTlnG`=b
+s-W_Pr0[MPs-itWs.&\Orgs+]qk3q^!2BIds.]:`r1s:frhfXls/5psq5XCos/c4%!3Z:(!3Z=)
+s0)L.riuO1rj2g9[^NZSrO<0E]"5Md]tV7s_Yh=N`W!pXa9fu2bKS2UcHjkarR!%Ae'lgre^`:'
+f\+s3g=tB;h;7#HiSieUj5f=`k2tjikih9qlK[a&r9XLPrpL!Znac;DnW):^s,7PJMM[1GLPCP;
+KS+o/JUi9#If=a"I!^0cH$FQ'rr@$8EW'qREW:(YEW'tYErK;F>?Y50=oVV(=8c/'<E)prIt.EG
+!IoXtJc:2uJHLCQJqEuS!.t$!",)D]FkcorNW"h4MtDs9EH6/DG'A4XH[U?nJV/W1L5:\EN/is]
+P*D5uR$sM8T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:aihoQcHstfeCE1&g"P3:h;@/LioB+^
+k3)!nlKdg'mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcC6~>
+JcC<$K)bKBrVc`nr;6Njs7uWgIeWR0p%@tKoCDJBnF,i6mHj3)l07Eok2kX`iS`VMh;$`;f[n['
+e'ZOgcHOJRaMu3:_SEq"]XkY_[^<BGYcb+.WMcVhUS4<OS=>q6QBdVqO,f0WM26n?K7\W'I=-?d
+GBS(LEH,o7Chmd!BP(gd@U`_P?<pf?>$4s/s&KJ+4[MP&6UaI98P\qSpeL!J##7ri:esnaohYN]
+s%iVhr_<Dfs%iVh!)NSjs%iYiohPQ_qbI2er_NGes%iPfr_<Dfr_NMiqb[>ir_ESl:J^[Zo1]3[
+p.tW^%8T\n:Jakc;,U:k<)loo;uK\r<;ohrljW:LmdKW6naZ2@oCMVQo`Fj]p\agdq>U6fqu-Hj
+rUBg`s8>gn;Z'Dl;Z9Pl;Yj>d;Z'Jm;ZB\n<;]\p<!$'#<r,hq<rZ5$<rQ2"=T2D$=T;G(=BSf+
+>5hb$>lJ"/>l@t.?N+=2@/s^7@1$IRA7]=aAS,OeBDuQEC&ViIC]8&NCM[j)rGD[TE,ber!HN8\
+FT6L`Focf3rH\Ehs*FcoIK"]qJ,b'!Jc:9$K*?p^KnbA<reLo<Ll.(JMi<XUNfVglo2QKaN/W[P
+M2@%DL5(D8K7ec,J:N,urd>*#H[:!`G^%fmg&B_*gBZNihV[;OiSs\tq*+jEq`jm?r`fM/>$Co.
+s&f;&rDj##<)cfm9)_Ha9M>@Wr(-l\rCm2bs%NGe!)3Ab"&)?\7bdqC;uK\l;u0Jj;daTcFEMbN
+H$XgcIXm!%KSG5;M2R=QO-,TiQ'[l,S"61FU84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9Fbg"G[
+dF6Uqf@S^0gYL]Ci8N\UjQ>Ufl07L!m-O0/n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$
+J,~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUnOHQSXZ(8Q^*btOH5B[MM[+CK7\W'I=6Hg
+G^":PEcH&9D/3p$BP1me@q&kR?X6oA>$5!1<`T]1<0"2.J;/rDQD1J$`lJ(ur5J]S!5nZO$cBiu
+_83q%^V7Co]DB,<]DfAF\[oA_\[V=ArjD^3o!SJ*!4Dg5rjDU0s0Vj6qm?O5[C3O@[K!]7[Iq!,
+\+mH5\+7'+\b`o:]DK/>\bru:\HTLOYeRuhrkA]R^V@Lr]XtfS]Ec']]",B<mI'uB!V#XYo)J:]
+o_nFap@n=Zq#C0hqYU0gr;?N`rW:*[aSa*Ua8j?[b5TQabl,cfcHjf4ci;AidJhSndf@nsec=>#
+f_jG#gAK_)h#H44hr*GkiW%p7j8S-=jT4N,rosFIs6LWjm-X3.n*oi:o()DEp%J.Sq"X^^qtg6h
+rMT\L\b!?2\K$WhN/W[PM2@%DL5(D8K7ec,J:N,uI=6KiH[:#-s7_`LPl?mDPQd=W>[(B8r`T8'
+s&]/"s&K(u#?.LsVl-JlWVidrX8]4"XTku3Y-"h/XSf4#Y5Y[*Y2''L\b3OEF*)PKG^4U_I=Hcu
+K7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfnt7ZaI6O\\#Mg^VRe*`Q-'AbKS8Xd*^=le^rI,
+g>(N@hr*JRj5oFckiq?slg4$,n*fc9o()DDo`"Lap@nO\s7u]kr;6KkrVcBfJcC<$J,~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUnOHQSXZ(8Q^*btOH5B[MM[+CK7\W'I=6Hg
+G^":PEcH&9D/3p$BP1me@q&kR?X6oA>$5!1<`TW/<,[:uCiFE>H\.*<rfdDJq3:c?rfmDGrfR>F
+OH81Wqi1K3r/L]9s,@#;oo8p/rf-r:s,Ho7s,@#;r/LT6!0@&<!0?o:oT/O(rfR&=rf?r<&;l:-
+PED#kOckigOH5B\NfO+"#EFk)NK<Gnmf)YUnF?MKs766_rUg6cp\4U\s7uZjqtp?ir;H0bqj7>M
+r0dJMs-`nUs-s%Yo:>iOs.B1]q4Re_pS7\_r2'FjrMTXnpo=:n!3H1%s/u1$!jJr7rj)O1s0Vj8
+rjVj9s186Bs1J]P^V[n+_Sa:0rl+lWs2YJfbKJ,ScHjh`r6bPnrm^tus47A*g"G*Yg]-(1hV\=k
+s5G'ZjQ5Lck3(pkkiq?slKmm)m-X0,mdBQ4nF?)Ao^RsqN?!t<N/W[PM2@%DL5(D8K7ec,J:N,u
+I=6KiH[:#-s8R'6EW'qNE<(%XEs?Z+>[1K:>5h\)=T;J$<rZ2";uopIrI+csJGXotJGk$(It3*%
+JqJ]-qLeg$!el8\h#ID6rJ^T2oo*F&FEMePH$XjdIt3*&KSG8=MN!OUOHPfmQC+)0S=Z@HU84W`
+W2co#YHY==[C3TU]=bkm_8=.0a2lBGbg+P]dF6Uqf@\d1gtgiEi8N_VjlY^hl07L!m-X60n*ol<
+o(2JFrq-<cp\jmeq>^<hqu6NlrUg)?s+13#~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq1U0oCDJBnF,i6mHj3*lKRNqk2k[aio&bOh;$c=f[n^(
+eC)ajcHXPTaN)9<_SO"$]Xt_a[^EHIYcb+/Wi2hlUnOHQSXZ(8Q^*btOH5B[MM[+CK7\W'I=6Hg
+G^":PEcH&9D/3p$BP1me@q&kR?X6oA>$5!1<`TT.<'*E65sn.38P2bP:\[]\:B4/Y:B4/g:B45`
+:]4&g:]=)k9hnDXr_NPh!)NPis%`VioM5H^r(m>fs%iMes%iSgrD!;es%iSiqb[>ir(lu\o1]3[
+p.tT]!`)WhrD3GirDNYp!EE+q;uTc#<)QZ]mI'uB!V#XYo)J:]o_nFap@n=Zq#C0hqYU0gr;?N`
+rr5dl;#O8j;Ys>k;ZBVl;Yj>e;Z'Jm;Z9Vn<;TSr<)lt"qGmJpr)`l"rE&u#s&T5'=oMV(>Pq_+
+?2\%->l\..>l\41?OpOQ@:3MO@:E_WA7]=aAS1pSrb2:G"`%jeC2.P`D$+ZmDJoGm%<?H.F)uGG
+FEM_LG'A30H2i3jHiJNnIfFotJ,k0"K)UB-KS>,7LPUbAreUT3s,.#=NK0$[hc'SSr)E5e/WPgL
+N/NRMM26qAL4t;5K7\Z)J:E#rI=-BgH@"/of\"m2g"P38gtgiEi8NYh54h)74p=/U>[(B8r`T8'
+s&]/"s&K(u!)rberC[,ar_!&Z!)*8as%WMes%N_l91qrP91qt6s8Q$r<;KPi<;][*F*)PKG^4U_
+I=HcuK7nu7M2I7OO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfnt7ZaI6O\\#Mg^VRe*`Q-'AbKS8Xd*^=l
+e^rI,g>(N@hr*JRj5oFckiq?slg4$,n*fc9o()DDo`"Lap@nO\s7u]kr;6KkrVcBfJcC<$J,~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq-<aoD\<(naQ#9md0<+lKRQrk2tabio/hQh;-i>g"4j+
+eC)akcHXPUaiMK@_ns4(]tCqe\$iZMYck11Wi;nnUnXQTSt):;Q^*euOcPN]Mi!4DKS+i+IXQQh
+G^"=QF)c/;DJX*'BP1pgA7AtT?X@#C>?Y03=&r?0<)\sbH@gp1OI2iHrl>#X"NAC#`Pq\l%E69'
+_SO+*^qd_!]tCuR])K>=\cTFP\+mE2[JdK&[JmT7[JmQ4[JI63[C!=:[K!]5[JmW7[Igp+\+mH5
+\+7'+\b`o;]DB)=\bru;\bio9\c9JE^BD?e^:h2Y]D]AF]=dLtmf)YUnF?MKs766_rUg6cp\4U\
+s7uZjqtp?iqu-Bj!6+fS!lrC'r5\`V!6P/]s3(GdrQP>fps8rdrR(VmrmM&#e^i='fDaG#g&0S$
+g]-(.h>uNlr8I\8qr@_;rT+(Bkl0iHl2^/Lm/QG[mdKW6naZ2Ao^qhUpB^Qiqtp6er;HVms4Y$U
+\Gj#WNfB!VMi*@JLkg_>KnP)2Jq8K'J:E#rI=-D1s7DNIPlHsEPQd=W>[(B8r`T8's&]/"s&K(u
+"B21pVl0Nm!3,pss/Z1$rN-7+YHG"0Y5>@$Y5PU)Y293M\c98>]DT6RFEVkQH@('gIt3-'KnbA>
+MN!OUOHPfmQC+)0S=Z@HUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^daQ^sf@\g2gtgiF
+i8WeWjlY^hl07L"m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+13#~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq-<aoD\<(naQ#9md0<+lKRQrk2tabio/hQh;-i>g"4j+
+eC)akcHXPUaiMK@_ns4(]tCqe\$iZMYck11Wi;nnUnXQTSt):;Q^*euOcPN]Mi!4DKS+i+IXQQh
+G^"=QF)c/;DJX*'BP1pgA7AtT?X@#C>?Y03=&r?2<)[dfASc=,G^P+#Pa)04s-*MKrKR2CrfmDG
+rfR>FOH84XqMkB2r/L]9!f`.tp5T$0rJgi9s,Hr8rf$o:r/LT6!0@&<!0?o:oT/L'!0R)=rf?c7
+rK.JNOcbfgOH5E]NK0%uNs(K(m-X6?mfDqJrpp*\!;-6_!quB_r:p<frqcNhrVZQkqYgJ]qj@8I
+rg<YPqj@DOs-`qWrg`SNrLX%]qk3eZs.]:`r1s:fs/,^ls/5psq5XCos/c4%!3Z:(!3Z=)s0)L.
+riuO1rj2a7[^Q1ErjW9F]"5Md]tV4r_Yh:``5T^8a2c9Bai_fMbg+M[d*Va=$.@;OeC<%!f%8OQ
+f`9b*gBl]mhV[;Nio9"YroO1Bs6'FG!9sLJ!pf4?rp0sYmdKW6nF?)Ap%"-rN>dh:N/W[PM2@%D
+L5(D8K7ec,JUi9#IXQWlHgh"5E;4GOEqXMQEr:"Y>QS,5>5h\)=T;J$<rZ2";uopIrI4cr!.auu
+s*t*#rdk9(It<3'pOiHu!euA^hZ*S7rJ^T2s,?f6s,:W5G'A1WH[U<lJ:`E-L51VCN/`m[P*;/s
+R$jG6StD^OUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6aND]McHjnde'ut#f\5'7h;7)JioB(\k2tml
+l0@X%mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcC6~>
+JcC<$JcGBArVc`nr;6Njs7uZhs7ZNerq-<aoD\<-naQ#9md0<+lKRQrk2tabio/hQh;-i>g"4j+
+eC)akcHXPUaiMK@_ns4(]tCqe\$iZMYck11Wi;nnUnXQTSt):;Q^*euOcPN]Mi!4DKS+i+IXQQh
+G^"=QF)c/;DJX*'BP1pgA7AtT?X@#C>?Y03=&r@$;`mE7#!kUH84cHKpeUZ[qG7,dm8!g\:Jam\
+:]4&f:]=,h:&duf:]F/i:]4)k:JO[Q:]F2i:]*ue:]4&f:&[of:]=2e;$Bcl:Jah_ohP*Q!)E5`
+r([;h:f-p_!)`\mr`&\ls&B/#m-X6?mfDqJrpp*\!;-6_!quB_r:p<frqcNhrVZQkqYgRn;,C*d
+:]4,g;?'Pj;>sGn;>a>g;ts8g;uKVn;uTbm;Z]ou<r#bp<rZ5)<``='=BPK&s&f;&!a&T.r`];*
+pg!f(s'5M.!+,Y3"(5PG@/aR;@UiqZAc66?BE)WFC&McNBkhBuCi+%fD?=`qE;jhZEcZ>ErcS3`
+s*+iqG^4R\H@(!eIK"]qJ,b$!Jc:9$KE$W)L&Zo,L^SuoM2I4LN/WaVO-&'pnPpZkNJrgSMM[1G
+LPCP;KS+o/JUr?%IsufoI!aDpf@S[Rfa-<dgt^`Chr*Jc54q/84p=/U>[(B8r`T8's&]/"s&K(u
+!)r_dr_!>e91hhR8H;B]9`@cd9ES!_9M>@Ys%<>chZ*RRrD`VlqGdDlBQSEAG^=^bI=Hd!K8#&8
+M2I7OO-#NgQ'Rf*S"-(BTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF-Lnf%8R.g>(N@
+i8EVTj5oFckiq?sm-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$J,~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])TZa$a;XfJJ#VPKu\TUq^DR@';*PEM#gN/NOKL4t83J:Dup
+H?j^XF`_YDDf0E-C2%?nARo:[@:*AI>[(B7=]bW($rp8*PI,UfLPq:`V6Kp=r5J`Url"iU"N89u
+`5DSk#f4<l^V7Co]=[sOrk&'=!kGhMppU10rj;1&s0_p8rNuU4q6U42[']\;rjMa4rjMj7osXe-
+q7$F6n[SJ,qRZ^=qRQ[;r4)d;qmcX9!P5i=\coXZ^V7Cork&-A!U]=SmfDqJrpp*\!;-6_!quB_
+r:p<frqcNhr;?Qms2=oSrl"iUqo/cZaN2EArl=oWr6#&_rlkAd!7(Acrm:Sjs3gkp!7h)"s4@8&
+r7V#%r7h5+s5!h7i8FRms5Nn8s5a1@"Qnn2l0834&F8]Mm-X3.n*oi:o()DEp%JCZ#l+8mqtg6h
+rVibqft$dcrji&i(QOK6N/NRMM26qAL4t;5K7\Z)J:E&tII7(*POt(>PP^UEPlk8q>$Cl-!a&N*
+rDrqus&B"s!N)dnW;igsWr8suXS]+(YHG%1Y-+l)XT>T.rNQ=)!1r-KrOVd7rOW!?r46<[GBnL]
+I=?]sJqJc3Ll%%KNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1Za@0M\[oGe^VI_'`5Td<b0/&TcdC1j
+eCN7(g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojdq#C0iqY^6hr;QZerdk*#rrE(L~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])TZa$a;XfJJ#VPKu\TUq^DR@';*PEM#gN/NOKL4t83J:Dup
+H?j^XF`_YDDf0E-C2%?nARo:[@:*AI>[(B7=]bW($rp8*F+In>E-$8PJr9Gjqiq&CrKR;FrfRPL
+OH5E^O,f6]j,Wtqr/CN4s,R,=s,?Z2rJ^]7!0$o:r/CW7!0$i8oo9$5q2k3/n;mX4qiCoBOH5Iq
+OT(C>O9gu3OcYZcNfB%tNrP.@mI'uB!V#XYo)J:]o_nFap@n=Zq#C0hqYU0fr;QZoPlR-IQi*6I
+QiEHORJWBORK&`US,]#WSH,2TSc,/[TDP;WT`Ch]U]%"dV>mFkVuEUpWVNRmWrT7#XoGR"YQ(g,
+Z2V$7Za@*I[C3NQ\,Ei:])TDB]`l-b_8=+,rkncT!65#Ys2YDdb0.uQcHcF9rQuV5e'lgre^i='
+f\+s3g=tB<h;7&IiSieUj5f=`roX7Ds6'IIrosLLrTsRO#O_'LnF5u>o^RsqNW5%UNfB!VMi*@J
+Lkg_>KnP)2Jq8H&It)oqmJm*'pMp.PpMp1Qr,VsF>?Y5/=TV],=8c2"<W?%u;u;(EJGOiqJcgLQ
+JV*lR!.t*#re(B-K8"O-s8@uVN;SV4N;8HAG'A4XH[U?nJ:`E-L5:\EN/is]P*D5uR$sM8StMdP
+Uo(&hWiW>+Yd:^F\%0)_]t_A"_SjF6aND]NcHjndeC<($f\5*8h;7)JioB+]k3(smlKdg'mI'H3
+nF?)?oCW%Ts7QHerqQNhs8)ZjrVZZno_sFAJc>`MJ,~>
+JcC<$Jc>`Mo`"jgrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])TZa$a;XfJJ#VPKu\TUq^DR@';*PEM#gN/NOKL4t83J:Dup
+H?j^XF`_YDDf0E-C2%?nARo:[@:*AI>[(B7=]bW($rp8*4@;G%6q9^;8l#1XpeL]^r_DlWr)!&^
+r_EGgr([8e:B"&h:B+,h;#a>k:A%B_:A[fe:B"&e:B"&f:B!ue:B"&h;#=,i;#a;l:f$^Yo1]3[
+p.tT]!`)WhoM>H]"A_in<E/fn"&r:fmf)YUnF?MKs766_rUg6cp\4U\s7uZjqtp<hrr)Rf!Du\j
+:]+&g;?'Pj;>jAm;>jDh;tj2f;uT\n;uTbn;[-3$<`W4#<;fhr<r?#!<rQ5"=8uD%<rlE+r`];*
+pK[]'!*oJ.!+,V2s'bn7$t3USA7T7_An>RdB4q3W!,;CH")2LbC]82MDZ=YTE;jkWEr^=\FoQUd
+GBeB2Gm/M@H[L6irdOlss*t*#rdt0&s+LE+s+Uu=LPU_AM2I4LN/WaVO4mS'<WA*rNfB!VMi*@J
+Lkg_>KnP)2Jq8H&It)oqrm_,%f@S[Sg&Kb2gYCT@hr*GOrB:3EpHJ:8pce^B"'f&6>5_S*=BAT&
+<rZ2"<<#no9)hQ`9`@Z]8H;E_9`@cd9`Iff9M>@Ys%<Ad7,\+@<;KPi<;og)G'A4XH[U?nJ:`E-
+L5:\EN/is]P*D5uR$sM8StMdPUo(&hWiW>+Yd:^F\%0)_]t_A"_SjF6aND]NcHjndeC<($f\5*8
+h;7)JioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerqQNhs8)ZjrVZZno_sFAJc>`MJ,~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?EbIe<7&o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@mFR[BG,P`h,hNJraOLPCJ7JUi2t
+H[9p\F`_\EE,KN/CM@HpAS#@\@:3GK>[1K9=]ea+<E)mq$^@uDJ;9&GR\m@1a8EpY`Pf^l`=9c'
+_Sa7,_8*k$^:_(iqmud=qmug<s0qd3rjDa4n[8A)!4Dg5rjDU0s0_m6qR-@3qmHI4rjDF-r3uL3
+!4VL.r42=.!4i$;!4hs9r42^9!4i*=qRQU:!PIk"mfDqJrpg-^o^r.Us7ZKer:p<fs8)Q-rPAQP
+rl"cQrknfUqo/WVrlG&YqT/WXrlb>crlkGgpWrldr6bPmrR1brrmq,$rn./%qqCu&s4mV1!T2i6
+iVqj6j8\3=jT4N-rosIJ!:0XNs6U?bn*fc9nac8Bo_%qPp\=R_q?$TnrMT\K\b<Q4\Hod-O,f3Y
+N/NSmM%#2qL5(D8K7ec,J:N.9s8S8PPO=\8Plk8q>$Cl-!a&N*rDrqus&Anps&/hn!DofqWrT6u
+XoGR-Y-"h/XSf4#YPta.YHG$uirA_`rji!=!5&0?@C^W.H@1-iJ:W?+L51SAMi<[WOckroQ^F52
+SXuLJUSOfdWiN8)Yd(OA[^WfY]Y2(q_Sa@4aN2NIc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$
+m-X60n*ol<o(2MQo`Fj]p\ssfq>^<hqu6NlrUg)?s+11Ms*t~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?EbIe<7&o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@mFR[BG,P`h,hNJraOLPCJ7JUi2t
+H[9p\F`_\EE,KN/CM@HpAS#@\@:3GK>[1K9=]ea+<E)mq$$:c1CN+?@I=dCTQ2?gFPPpaFPQ$^K
+OcYWaNfWak!0-H-qi1K3r/L]9s,@#;oo8p/rJ^l;NK*gos,I&;rJgH0!0?r;o8iC&!0R/?"-J\+
+O7eV7Oo(7?OoLREOoCI<OTCL1rpKmWnc&(\oCV\Sp&Facp\agdq>^9kP5:C@Pl-dHQM[$HR/30L
+R/NHLR/`TSRK/iVSGeuYSGA`RT)YG\T_Y;]U&_"aU]%"eV>mFkVuEUpWVNRmX8f:#XoGR'Y5ka)
+YQ(g,Z2M!-[/[N6[f3c7\Gs/?]+)Hf^;.V'_SX4.`5T^8rl>&[!6Y;as3:\ld*Va=!n,QHrmV&#
+f%8OQg&Kb;gYCW@hV[8LiSrkWjQ5Lck5OQDkQ:#6lMg,Km/HDPmf`.MnauJDNnTKmNs1Q'N/W[P
+reV&>LPCP;KS+o/JUi9#m/R*(r,D@Lrc7aQrGqjX"'f&6>5_S*=BAT&<rZ2"<;]\p;Z9Mn;#>hB
+Jd6jWJV&K+K7`rPs+CN/KS>,(irAq:s,Hu9rep`6qMem-H$XjdIXm!%KSG8<M2R=QO-,TiQ'[l,
+S"6.DTqeE]W2co#Y->1;['mHS]"G_k^r"".`lQ6DbK\>ZdF-Opf%8U/gYL]Ci8N\UjQ5OekiqBu
+m-O--n*fc9o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcC<$!<7Q~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?EbIe<7&o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@mFR[BG,P`h,hNJraOLPCJ7JUi2t
+H[9p\F`_\EE,KN/CM@HpAS#@\@:3GK>[1K9=]ea+<E)mq#sCRA6:4748kMkU:\[]^:]=,W:]!u]
+:]=,g:]=)h:&[oe:]F/i:]4,i:B4/^:B4/e:BF9e:]!oe:]*ue:&due:B45f;$Bcl:Jak`oM5!P
+!)E5`r([8g;"IK^:&n)f;#O2i;#X;m;ssYR!V#XYncJFTo`"O`pAambq#C0iqXmYb;>*fe;,I-c
+qb[8h!)iYjrDEVmrDNGipeq#grDNVnr`&_m!`W0#r`&qtrDihts&TA)=&rC)=Su8#=T;G(=BSf+
+>5hb#>lS+0>l@q.?N+:6?t!JOra>t>@q9+]Ac?<@BDuTCCB&#JC&i)LD>nDSDfB[pE<:0%FSp:]
+G5ldsH$FU[H?spbI!pElIXckHJ,k0"K)^H'K`6]*LAlu.M#W>3MZeuuNK0+T<:EofNs1Q'N/W[P
+reV&>LPCP;KS+o/JUi9#rm^tu&(]@af\+p1g=k<:hVR/Ji;>e=4n_)65PRGB56G.p>$Cl-!a&N*
+rDrqus&Anps&/hn!`2Qar_!&Z!)*8a#Ydue9MA/S9M>@Y"%u<]6fS.><;]\k<<#m)G^4U_I=?]t
+K7nu7Ll%%KNfT<cPa.T&R[]k>TV8-VVl6VrXfen5Za@0M\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*
+g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"Lbp@n=\q#C0iqY^6ir;HTdrdk*#rrE(L~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nojQmn*f]3m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?!
+I!U'^G'%eGEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<YJJ4;c8mfH@gp2P+&8Pa2c3?a2\+ts2G2\
+`l5p8rke`QrkScR^:h1l]DK2=]DK/@\[]-C[f3]7[.(L&[K*`7[/RK0ZiIN5[/.31[emK4[f3]-
+[f!W2\Gs&:\,a)5\GWo,\cB;5\GWo7\cB;?\GEc8\cTFR])92=]E#YD^&YqD_"PVC_Z.OR`;IOQ
+_uRdR`rF*Za90K&a2e%t!6P5_rlb>crQP>fps8rdrR(VmrmLu!e^i=NfDaG$g&'M$g]$".h>uNl
+r8IY7qr7\;rT+1EkNM0prot'\m-X0,mI'H4nF?)?oCV_Lrq?]nq>:'cr;HTnVuPG\ppg:5s1/c'
+O,o<\N/W[PM2@%DL5(D8rdt6'Ja<@6P4=b*Pl6mI>6%k*=oVS(=8c2"<W5tr;uT\o;>X/i:]7C#
+Y-5"1Xfeh.rN6+'rNQ=)!1r6No"+h4qmp!VH@($fIt3-'KSG8=MN!OUOHPfmQC+)0S=Z@HU84W`
+W2co#Y->1;['mHS]"G_k^r"".`lQ9Fbg"G[dF6Uqf@S^0gYL]Ci8N\UjQ>Ufl07L!m-O0/n*olH
+ncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$!<7Q~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nojQmn*f]3m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?!
+I!U'^G'%eGEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<Xi&.;c7aiAnu@-H$t:%rK[AH"I549PEYp/
+!gAk4rfRPLOH5E_O,f6]if<nqqi(H4rf.&>N/[IirJ^]7s,?u;qi(Q7s,?o9oSrp4qN1<0rf@,@
+plGK:rK%#Ar/gr@!K`B7OT1I@OT(CBOoUXDOR8/1P5UUBP5gaCP5:C?Pl6jIQM[$HR/30LR/EBL
+R/`TSRK/iVSGeuYSG8ZRT)YG[T_Y8_U8+O[U]%"dV>mFkVuEUpWVWXmWrT7#XoGR&Y5ka)YQ(g,
+Z2V$5Za@*I[C3OC\,NlF\[oDb]Y2%o^r""+rkeoX`Q#p<a8X-cb0.uPcHab_d/D>udaQ[peCE.$
+f@^)U*890%gtgfDhr*GOio9%[jlPXekND'ml07Kulg+N9$17*Hn*fc9o(2MDNnTI(OH5H_NJrgS
+MM[1GLPCP;K`6T)Jq<7fr,;OQol0tPp2U"Nrc80^>?b;0=oVS(=8c2"<W5tr;uT\o;>X/i:]5nF
+JH(6#K)gN#KDpN+KnP/(j8]":s,Hl6rf$o:r/Fp*H@($fIt3-'KSG8=MN!OUOHPfmQC+)0S=Z@H
+U84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9Fbg"G[dF6Uqf@S^0gYL]Ci8N\UjQ>Ufl07L!m-O0/
+n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$!<7Q~>
+JcC<$Jc>`Mo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_npU&tn*f]3m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?!
+I!U'^G'%eGEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<`N*t;F!Q8#"(dL7nQBJrD32`qbR/cmSEaW
+oM>K^rD3;crD3Gg!)NPi!`)QdmSEjXs%iMes%iSgrD!;er_NPjqG@Dm:JXe`:]*rf:]!oX9`Rr^
+:]*uX:]=)h:]+&f:]=2j;>*ia:]F8k;>sDk:\%<^;>*fe;,I*br)!Ais&/_kpJUidpeq#grDNSm
+s&Ahn##nT'<`N.!rDihts&T;'='&H%=T)>$=T;J&=9)M'>5_\#>lJ"/>l7n+?iFL6?j:%K@Uiq[
+Ac66?BDuTCC&huICAr)LDZ=VnE,fl<EH?5DG'.tNF`qtRG^4OZH$Xd`I!pGBIfFotJH(3"K)^H)
+KS>-ZLAlu.M#W>3MZeuuNK0+V<:3`tOH5H_NJrgSMM[1GLPCP;K`6T+Jq;A!rm^tu!nPuTrn%S2
+g=tB<hV[5K5!Am/rB9g;pcnR<rBL<d!*]>(s&]8&rDrqur`&hpr_i_mqbR8grCI#^9E%Wb:&[ic
+9`Ric9`I`d9LRq@ku:l3H@($fIt3-'KSG8=MN!OUOHPfmQC+)0S=Z@HU84W`W2co#Y->1;['mHS
+]"G_k^r"".`lQ9Fbg"G[dF6Uqf@S^0gYL]Ci8N\UjQ>Ufl07L!m-O0/n*olHncA@Srq-?dp\4[^
+s7u]kr;6KkrVcBfJcC<$!<7Q~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g<XfJJ#Vkp2_TUq^DR[BG,PEM#gNJraOLPCJ7JUi2t
+H[9p\F`_YDE,KN/CM@HpAS#@\@:3GK>[1K9=V4b;<`N*t;c8sjH\.'4Od`2QrQ"`Rs2FuU!Q2eR
+_$.Tf]tCthqmud=r43!@\@B$C[f*T6[-tF&[K*`7[/RK0[/[Q5[/791[f!Q4[f<c-[f!W7\,a#:
+\Gs&;\,a)4\GWo,\cB;4\G`u8\cB;?\GE`9])K8?])92=]E#YE^&u'_^VBZ]p;-^Es24lTr58QQ
+!6+fS"NSU)a2\,!qoJfZrlY8as31Gd!7(>bs3U\ks3gkp!7_#!rn%2&r7Uu$rS.>,rn[\5i;MX6
+iqqd9jSe0@k3)a.rp'LLrpBaS%.NfWo()DEp%J.Sq"amb"8r,srhoeM\bN]6\c0/SP*(ieO,f3Y
+N/NRMM26qAL4t;5KB`F5P5gaFP4k+1PQ?u4r07:e>5_V(=T;J$<rZ2"<;]\p;Z9Ph;#X5kXfqZ*
+!3H.$"g5&4Yck;1XoP!Rs8KY&])TD>\n$,6I=?ZrJqJc3LP^nINK90aPEhH$R@B_<T:r!TV5L8l
+X0&S0ZEpsI\@K5a^;%M$`5Ta;aihoRcd:(geCE1'g"P6;hV[8Mj5]7`k32'olKdg(mdKW6nac8B
+oCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#rrE(L~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g<XfJJ#Vkp2_TUq^DR[BG,PEM#gNJraOLPCJ7JUi2t
+H[9p\F`_YDE,KN/CM@HpAS#@\@:3GK>[1K9=VFn=<`N*t;c7ajBPh^1G^Y4%Q'M<4#*kF:PE_;s
+rKR>GrfR;EOSt4ANfT7pNW>(,Nr+h5N;S\8NrP(=N:i2/N;\_9N;eh7N;eh:N;\b/NrP1:OSk.>
+OSOt:O8t@:O8t@?O8tF@OT1FDOH9$qs,m5@rfR5D!0R8Bm?%O7PEV5orfR5Ds-*>CqNLiAr078J
+r0R;Jqj7>Mr0dDKs-WnVS,SrVSc>5USc#)ZTDYAXU&UkeV"pebV#-tgVZ!FlVuWgmWr9!uXT#@%
+Y5YU)Y5YX(Yl1j2Za@*I[C6(DrODm=#.qO]]t_A!rkeZP!l`1!rl>&[s2kJfbg"GYrm:\mrmLhq
+s3r7Cf%/I*g"G*5gYCW@hV[5Ki8WbVjQ,Fak2tjikih9qlK\?6s6TaPs6g*[nac;DnrDF`'U"T?
+O,o<\N/W[PM2@%DL5(D8K7iFgqJZ=Ol>c`BrcA*[!F&b+=oVV(=8c2"<W?%r;u]bp;>F&f:BuH$
+JV&K+K7`rPs+CN/KS>,)jo>1;qi1T6rJgc9A9rTNIXcm"K8#&8M2I7OO-#NgQ'Rf*S"-(BTq\?Z
+Vl6VrXfnt7ZaI6O\\#Mg^VRe*`Q$!@bKS8Xd*^=le^rI,g>(N@hr*JRj5oFckiq?slg4$,n*fc9
+o()DDo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$!<7Q~>
+JcC<$JcGcMp&=pgrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g<XfJJ#Vkp2_TUq^DR[BG,PEM#gNJraOLPCJ7JUi2t
+H[9p\F`_YDE,KN/CM@HpAS#@\@:3GK>[1K9=VFn=<`N*t;c5kI6UO727nZKM:J^a\qbR,bmn`gW
+oM5H^rD38br_NPhs%iVjs%`VioM5H^qbI2er_NGer_NJfr_<Aer_NPjqG@8i:]=/j:]4#g:\miW
+9`Rr^:]*uX:]=)h:]+&f:]=2j;>*ib:BF?g;#X>Z:]OAd:]XEiqG7#crD<PmqGI#cqG[,dr)3\q
+;,U<k;uTbm;Z]ou<r#bp<rZ5)<``='=BPK&s&f;&!a&T.r`];*pK[`(s'5M.!+,Y3$".1M?smDO
+@U`mIAc?<@BDuQEC&VlIC&_oJD#S;NDZ=VZE,fl<EcZ@%FTcl1G'8*.GlN'hHN/BmIK"ZuJ:E*"
+Jc:9#K*$^[L&Hc+L]<21M>rJ:N/`jXOPWt)<?@<cOH5H_NJrgSMM[1GLPCP;KS+p)dF-Lne'upu
+f)F8.f\+s3gYCT@hr!Dk55IG9557A<55d\I5[.Fj=oVV(=8c2"<W?%r;u]bp;>F&f:B=$[rCdJk
+9MJ2S9he;Sr_*De9M@k9s63KnH@('hIt3-'KnbA>MN!OUOHPfmQC+)0S=Z@HU84W`W2co#YHY==
+[C3TU]=bkm_8=.0`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_VjlY^hl07L!m-X60n*ol<o(2JFp%A%P
+p\jmeq>^<hqu6NlrUg)?s+11Ms*t~>
+JcC<$JcGcMo`"jgrVZTjs8)ckrqQNf!;?EbHh?q#o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fV.P`h/iNf8mQLk^S8JUi2t
+I!U'^G'%eFEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<Y/81;c6J[\U&j`NKK^/ZcC,b`WX?%a2c3u
+`='W%_SX.*^V7Co]=[sOrk&-?s1&0?\+d?1[K!W'[JmT7[JmQ4[JI91[JmQ1[JmW4[JmW7[Iq!+
+\,Nl;\,No:\,Nl;\b3K0\ad62\b!?0\bir<\c0,4\c98=]DfJ?]`Pp_^\bh?_>V7N_u@UQ_u@UN
+`WX?'aN)="a8<sXao9H_bPo`bblH&`ci;AidJqYndf\+Mf%0iPrn.2&qqCu&s4db5hVR/Jr8IY7
+qr7\;rT+1EkNM0protKhm-X0,mI'H4nF?&>oCV_Lp@n=Vq>1!bqY^<kVZ5A\q7-F7rONK%OcYWb
+NfB!VMi*@JLkkta!/9Y:qN:iBqi^];nrs0=Pl?pN_S]S]>5h\)=T;J$<rZ2"<;]\o;Z0Jf;#O2h
+Y5GC.Y-5%5YHY76Y+FeUq7HF5!5&->@si]RJ:W<)KnbD?Mi<[WOHPfmQC+)0S=Z@HUSOcbWN*&%
+YHY==[C3TU]=bkm_8=.0a2lBGbg+P^dF6Urf@\g2gtgiFi8N_VjlY^hl07L"m-X60n*ol<o(2MG
+p%A%Pp\jjeq>U6gqu6NmrUg)?s+14Ms*t~>
+JcC<$JcGcMo`"jgrVZTjs8)ckrqQNf!;?EbHh?q#o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fV.P`h/iNf8mQLk^S8JUi2t
+I!U'^G'%eFEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<Y&20;c6J9KP,.?Fa/=fN0XC,%@*0BPE_;s
+Q'@MuPa%C2Oo^],rJq#?O,s$qs,HK-qMkE3qi1W9s,@#;oo8p/rJ^f9rf-i7rf-r:rJgK1!0?u<
+nrNg4s,Zu;s,[,?!0R5ArfQc5s,m5@rfR5D!0R5AmudU4s-!GGrfR5Ds-*;BqigoArKRAKr0R;J
+qj7;LrL*MLs-WqWS"'DIrLNtYqORPUs.B1]q4RkaUSR^\rM9@fs/,amrhogrr2KdsWr/mtXT#@%
+Y5PO(Y5YX)YQ1s-Z3%A>[/RH5[f3c7\Gs/?]E>j]^VTodrkeiV`Q#ps`sBc.b0.uPcHac8d/VMn
+df._qe-"7Pf%BuTs4RY2gtgfChu;R6irA*=jo=KCk6U;7l07Kulg*j7m/QJQmf`.No(2MENnTI&
+P*(ieO,f3YN/NRMM26rdL&cqks8-^7DZ4SQE9hNAErL.[OTJ`j>5h\)=T;J$<rZ2"<;]\o;Z0Jf
+;#O/iK(josK`6Z*Gio&%NqA>1NamHbIXm!$K8#&9M2R=QO-#NgQ'Rf*S"-(BTqeE\Vl?\tXfnt7
+ZaI6O\\#Mg^VRe*`Q-'AbKS8XdF$Fmf%8R.g>(N@i8ESSj5oFckiq?sm-O--n*fc9o()DEo_%nN
+p@nO\!;ZWjr;6Kkrr)KgJcC<$s8RT~>
+JcC<$JcGcMo`"jgrVZTjs8)ckrqQNf!;?EbHh?q#o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fV.P`h/iNf8mQLk^S8JUi2t
+I!U'^G'%eFEGo`2CMINrAn>L^@UNPL?!LT;=]ea+<Xr,/;c6IY6pj=17Rp*G:&%K\:]!oU:]+&]
+:]F2h:\mib:BF9e:]4,i:B4/^:B4/e:B4/h:]*ue:]4&f:&[oe:B45e;$Bcl:f'q`rD!>gqG-TU
+!)E5`qbH]Xs%`Sir)!>fr_WVloMGK^!)WYlm8*d[p.tce;#3ub;#X;l;Yj8c;Yj>d;Z'Gq;Gg:h
+r_reqqGRGp<EB*!!*&nsr`9&#"'/K(<rQ5"=8uD&=8l>$>5_\#>lJ%/>l@t,?O1%J@:3JO@:EaG
+Ac66?BDuTEC'JBeBk_<tD#S;ODZ=VTE;jkWErU7ZFTlr4G^+FWrcnZnH[L3hIK"ZuJ:E*"Jc:9#
+K*$^[L&Qf/KnkG>re^Z5"H8>#Nf`-tm8XXZOcYWbNfB!VMi*@JLkkta!JSo"d/_Vodf\+Me^j`O
+$eX.cg=tE=hV[9T4oRY?4nh/85P[MB56Oqc>?Y50=oVV(=8c2"<W?%r;uT\n;><ud:]F)g:&I]b
+9`Ri`9E7NDs63KmI!pHoJV&N.L5:\EN/is\P*;/sR$jG6StD^OUo(&hWiW>+Yd1UC[^`l[]Y;.s
+_SjF6aN;WLcHjnce'ut#f\5'7h;7)JiT&t[k2tmll0@X%mI'H3nF?)?oCV\Jp%J+RrV-BgrqcQi
+rqucoo_sFAJcGcMJ,~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_np9iqn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4^q[Rq]",;Y['R$AY-"b)Vl$8bTqJ!JS!fY0Q'7AmO,]*TLk^V9Jq/?!
+I!U*`GBJ"JEH#f4CMRWtB4YXa@UWVN?<g`>=]nj.<`N*t;[cQVQaV6nLlIReVmOP@`rO-X`<sQ$
+_SX.)^V7@n]DK2=]D]>?\H',4[f3Z7[-tF&[K*`6[/RK0Zid_C[C#e<s0hg4s0hp7osXe-s1&*<
+rj_s:s1&*>p:0t0o"+k3o=4b0qmld<rj_[4s18-?rOi'A!kuFaqnVpArPJQOs2=lRrknfUqo/f[
+aN2EA`r=$UaT'B^b5TTabl5lecM,Wbd/;;jdf._qeGe%ufDjM%g%sG$g]$"-h>uNlrSd_7r8[h<
+rT+1EkNM0prosRNm-O`=s6p!W$h<fYoCV_Lp\4IXq>U3mqu$ElVZ5A\qRHO8rjr-As,mkSOH5H_
+NJrgSMM[1GLPG!lnWNX1nWa'h!PuYP_uEp>=oVV(=8c2!<W?%r;uKVn;=RH_XSo:!Y5kg+XoP!U
+s73es\m0Z5J:W?+L5(M@Mi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lEH
+c-FY_daZdtf@\g3gtgiFi8WeXjlYail07O#m-X60n*ol<o(2MQp&F^cp\ssfq>^<hqu6NlrUg)?
+s+14Ms*t~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_np9iqn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4^q[Rq]",;Y['R$AY-"b)Vl$8bTqJ!JS!fY0Q'7AmO,]*TLk^V9Jq/?!
+I!U*`GBJ"JEH#f4CMRWtB4YXa@UWVN?<g`>=]nj.<`N*t;\)c?G(aOGE-6GTKT).[Q'M<4s-3bP
+Q'ISuPQ$^GOc]O&!fi>&pQ#64muI7(r/CN4"HJJ$N/[IirJ^]7s,?u;qi(Q7rf$f8oo9$5qN19/
+s,[5AplPN:rK%#ArK.&AnW<d5r/go?s,mAErK-H0s-!DG!0[>Ds-!DGqNC`>qiq&E!1*MKr0[>I
+s-WbQqO%8M!LfMWSGf#YSGJfST)YG[T_Y;]UAq%bU].(dV#[CkVuEXpWVWXmWrT7#XoGR'Y5ka)
+YPta+Z2V$4Za@*I[C6%CrjW6E]">Vf]t_=urkeZP&]D]/a2l<BaN;TJbfnAYcd:&<dJqYpe,Iks
+ecFCTrn7>*s4d_4hV[5ii!89%jQ,Fak2u[+($OiFlKRQulg!j'lg4$,n*oi;o(2MENnTKmOq*V9
+O,o<\N/W[PM2@%DL?JU6DuOYQDuO_GE<(%WEW'qWOSt=A>5h\)=T;J$<rQ,!<;]\n;Z9P`:]Q+E
+KDpQ&K`HA]s723HNW5#DI=HcuK7nu6Ll%%KNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a
+^;%M$`5Td<b0/&TcdC1jeCN7(g=tE=hVd>Oj5f=akNM0plg4!*mdKW6nac8Bo`"O`p&Ojdq#C0i
+qY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_npU&tn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4^q[Rq]",;Y['R$AY-"b)Vl$8bTqJ!JS!fY0Q'7AmO,]*TLk^V9Jq/?!
+I!U*`GBJ"JEH#f4CMRWtB4YXa@UWVN?<g`>=]nj.<`N*t;c5_Dr^-fV7S$-Eq+gf_qbHQTrD<)]
+!)EJgrD!Ah:Adlh:/=[b;#a>k:@:pX:B+,e:B+,f:B!uf:Amrj:f1(frDEJh!)NPgs%iJdo1f6[
+pJ:W\nkT6\r_NGgrD3Dhs&&DbrD*Dir_`&Z!)`>aqG7#cp/1Q^qG[/er)3_r;,L4hr_rhrq,7>o
+<EAoqr`8u!"'/K*=Su8#=T;G(=BSf+>5hb#>lJ"/>l7n,?NOVD@K'[7@0'hJral%?rb)4DrFuFK
+C2.P_D?"MRD[p`+EH6)@FEMbLFEM_LGPuddH2i0pH[L3hI=?YCJ,k0"K)UB9KS>)5Knb;:LPUeD
+MMmFPNK0$\i)K,Es&T/_&Wr09O,f3YN/NRMM26qAcHjl:dJqYpdh1*[e^i='f@\d1g"Y?>hV^R]
+o0)h3q`b-I5<o!.rD`brs'#D)s&f;&rDrnts&AnprDNVlnPBE`9h\5T9hY=V!(?&Nku:o9It3*&
+KSG5;M2R=QO-,TiQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbK\>YdF-Oof%8R.
+gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DErq6<b!;HKfs7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@pGR[BG,P`h/iNJraOLPCJ7JUi2t
+H[9s]G'%eFE,TW1CMINrAn>L^@UNPL?!LT;=]ec*<Ynb8;c6JGRBh0lLlR^iVmXUdaN)?BaN+;!%
+*$9)_ns:,^qRLp]Y"'Ps1A3?s1/0=p9st.!4;4&s0_p8rj;[4qR$:1rj;R1rjMa4rjMj7oX=\,s
+1&*<rj`!;rj`!=p:0t0o""h3o!nY/qmld<rj_[4s18*>rk/0B!kuFaqnVpAr5/KOs2=lRrPS]Tr
+5J`Wrl>,\`r=$UaSs9]b5TTabl,cdcM,Zbd/;;kdf%VqeCFQLrmq/&r7Uu$r7h8,rn[\5i;MX5i
+r.m=jQ#>"jTO`/kiq@2l5]-VmHj6-mdKW6naZ2Ao_%nNp\4IYq>0p`r;HSks4Os^\G`r=]".gOs
+18f*P*1rhO,o<\N/W[PMM[2Os6u3GPP::CPE_=0_#M7M_uEp>=oVV(=8Z,!<W5tq;uKVl;=[Q_X
+T5O&Y6;)5Y-+;Zs7!Ys\m'Z7JqJ`2LP^nINK0'^P*D5uR$sM8StMdPUo(&hX0&P/Z*UgG\%0)_]
+t_A"_o9U8aND]NcHjndeCE.%g"P39h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs
+8)Zjrqu`no_sFAJcGcMJ,~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@pGR[BG,P`h/iNJraOLPCJ7JUi2t
+H[9s]G'%eFE,TW1CMINrAn>L^@UNPL?!LT;=]ec*<Y&20;c6J-G(OFFE-?MUKT,nqs-3>E!L/fI
+Oo^],qN(B2s,HH,qi1N4qi1W9s,@#;oo8p/rJ^f9rf-i7rf-r:r/LB0!0?u<nrEj6O,s'ts,[,?
+!0R8BrfQc5rfR,?rfI8FOcfU(mZIO4s-!GGrfR5Ds-*;Bs-*JGs-*;Drg!MLqj78KqNq5Lr0dGL
+rg<eUS,JlVSc5/USc#)ZTDP;XU&UhfUSR^\rM9@fs/,amrhogrr2KdsWr/mtXT#@$Y5YU)Y5YX)
+YQ1s-Z2h61[/[N6[f3c7\Gs/?]E>j]^VKfbrkf5b`l?'?a2lBEb08)ScHlL:rmCbos3q"t"P))S
+f@^)U)qs'%gtpoFhr*GOj5]4]jlPXekND'lkNM3ql2KuHlj)qGmdT`:o(2C3gPl`-P*1rhO,o<\
+N/W[PMM[2Os8-a5DZ4SQE:S#JErL(YEWD0tOT1FEOBPie=oVV(=8Z,!<W5tq;uKVl;=[Q]KDgK&
+K`HA^s6bpFNE^m_JqJ`2LP^nINK0'^P*D5uR$sM8StMdPUo(&hX0&P/Z*UgG\%0)_]t_A"_o9U8
+aND]NcHjndeCE.%g"P39h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`n
+o_sFAJcGcMJ,~>
+JcC<$JcGcMo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfSP$Vkp2`Tq@pGR[BG,P`h/iNJraOLPCJ7JUi2t
+H[9s]G'%eFE,TW1CMINrAn>L^@UNPL?!LT;=]ec*<Xr,/;c6IU5smt+77]s@9`%T]:]!oU:]+&\
+:B4/h:\mi^:]=2j:B4/^:B4/e:B4/h:]*ue:]4&f:&[oe:]F8f;$Bcl:f("brD*AgqG-WV!)E5`
+qG-TW!)EJgrD<GgrD3JkoMGK^!)WYllqd[ZoMGB[r)!)apJUidpJUof"&_un;Z9Vo<;KMp<)luu
+<<-"s<W6&!<s)K)<`]3%rE'#$s&]2%r`]8)pK[`(s'5M.!+,Y3!FT@7?ijbG@f9m;B)ZHBBF&<e
+BkhBsC27VaD>nGQDuObVEW^B*Fa!b,s)o-$G^"CWH$O^_H[L6iIXZcsJ:W6%Jc:69K7\`/KnP,5
+KnbA<Ll$tHMi<USNf`0upJq,lrDiku/!H-ZOcYWbNfB!VMi*CKM9O5icd:%ddF-Ile'uq!e^i='
+f@\d2gtgiEi;Pq34nh/<5Q3qG55nLZ<;ont>5h\)=T;J#<rZ2!<;]\n;Z'D_;#X/g:&7N`7-Xa>
+<;ohr<*Oj&JqJ`2LP^nINK0'^P*D5uR$sM8StMdPUo(&hX0&P/Z*UgG\%0)_]t_A"_o9U8aND]N
+cHjndeCE.%g"P39h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCW%T!quB_rqQNhs8)Zjrqu`no_sFA
+JcGcMJ,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@'o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AlNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEGo`3CMRWtB4YU`@UWVN?<g`>=]nj.<`N*t;[cQ$Kpf5oK8GVRS>N^ma:cV9a2Z-<
+`l5p7_SO('^:h1k]DK/>]DT5C\[]2Z\+[9-[/dZ+[0!eE[JmQ4[JI91[JmQ1[JmW4[JmW7[Igp*
+\,Wu<\,Wu;\,Wu;\b<Q0\am<3\am9/\bir<\c0,4\c98;]DoPA]`Pp_^\Yb?_>M1M_uI[R_u7OQ
+`W!jWa8X-_a2Z->a8<sVaTTc0bKS3/blH&_ci;AjdJqYndfe1Ne^i=NfDjM%g%sG$g]$"-h>uNl
+rSd_7qr7\;rT+1EkNM0prosRNm-O`=(%1P[nF?&>oCV_Lp@n=Vq"jj_qY^;gs4Op_\GWo8])K;N
+P`q8nOcYWbNfB!VMi-Tqn<*g9P5CFCP5UU?PQ6pF^]VEg_86,f!aAi3rE9/&s&],!s&K%tqc!Dj
+nPT9`s/c:(ric@+s/lC+J*[.)]DT8>\QXN8K8#&8M2I7OO-#NgQ'Rc(R[]k>Tq\?ZVl6VrXfen5
+Za@0M\[oGe^VI_(`Q$!?b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKZ7nac8Bo`"Lb
+p@n=\q#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@'o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AlNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEGo`3CMRWtB4YU`@UWVN?<g`>=]nj.<`N*t;[cQ$CNkAED/j]EItN^VPm3P>Q'R]"
+PQ$^GOc]F#pl>?5m>h+(r/CN4s,R,=!0$T1rf$c7!0$o:r/CW7s,?l8p5]06qiL?/!g&J(plPN:
+q2kT<o8rp5r/gf<rK-]7s-!;Bs-!DG!0[>Ds-!DGqNClBrfR8FqNUrD!1*GIs-WYLrg<YPqO%;N
+!LfMVSGo)XSGJfTT)YGZT_bA^U&_"aU].(dV#[CkVuEXpWVWXmWrT7#XoGR'YQ(d*YPta+Z2V$1
+Za@+=[/dZ7\,NlC\[oDc]Y2%p_>_=N_Z7XS`rF*da2uHGbKS5Vcd2U;s3^kprmUns"4buRfDaJ'
+g(E)ph;7#Ghr*GOj5]4]jlPXerTF4ErTX@I$gd3Gm-X6/nF?&>o'qapN=D,9P*1rhO,o<\N/W[P
+jT#*qqelCOs)8!YE:S#IEWC+WO8Y.DOcYZ/>$Cl-s&f;&r)Whtr`&bnr)3&^r_i]Ire16(!+G3n
+m>h.)>(D3WKnbA>MN!OUOHPfmQC!u-S"6.EU84W`W2co#Y->1;['mHS]"G_k^r"".`lQ6DbK\>Z
+dF-Opf%8U/gYL]Ci8N\UjQ5OekiqBum-O--n*oi:o()DErq-?dp\4[^s7u]kr;6KkrVcBfJcC<$
+s8RT~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@'o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AlNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEGo`3CMRWtB4YU`@UWVN?<g`>=]nj.<`N*t;[ZK#4@)>$5se(58PK+YpeUc^mn`mY
+mSEdV!DcJc:]=2j:B4/^:B4/e:B4/h:]*ue:]4&f:&[oe:]F8f;#sKhr_NSjr_EGgqG-WV!)E5`
+qG.&d!)E2_!)EJgrD<Jhr(mAjoMGK^!)WYllqd[ZoM>N_qbR)cp/1T_qG[,dr)3Snr_W_p;cEZp
+qG[Dn"BAK&<E/lrr`08*<``@'='/T&=8uD&<ruK,=oMV'>PVP&?2n1.?2\.0?j0nF@:<VTral%?
+rb)4D"_qacC2.J^C]82NDZ4SRE?K:CFEM_LFEM_LG'J4TG^+LZH@($eI=6QnIt3'#J:W:LJeNci
+KS>)5KnbA=Ll%"IMi<XTNf2jqpf6re'pOoFP*(ieO,f3YN/NS8bKS5Vcd:&<d0%hGe("BIs475%
+#2%YbgtgiErBBj:!Br[?55d_F5QO)5q,@5k!aAi3rE9/&s&],!s&K%tqc!DjnPT9`!_c<_rCd>g
+9MA/>li6?OrDQmMJqJc3LP^nINK90aPEhH#R$sM8StVmSV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:
+aND]NcHsteeCE.%g"P3:h;@/LioB+]k3(smlKdg'mI'H4nF?)?oCW%T!quB_rqQNhs8)Zjrqu`n
+o_sFAJcGcMJ,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@(o()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CY-"b)W2HJfU7e*KS!o_2Q'@GnO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH#f5Chmd!B4b^c@U`_P?<pf?>$4s/<`W4!;[u]&:ktLEI>!K>Q(4_ZaSs9_aN)@"
+`X9Z%_SO('^:h1l]DK/>]D];D\[]2[\+[8q[03qG[C!=?[J@30[JmQ1[K!]4[JmW7[Iq!+\,No;
+\,Wu;\,Wu;\b<Q0\am<3\ad3/\bir<\c0,4\c98;]DoPA]`Pp_^\Yb?_>M1M_uI[Q_u@UQ`W!j\
+a2l?B`lA"ur5eiY!m8^0rlkAd!7(;as3U_lrmLeps3q&!rmq,$s4I8&qqCu&s4mV1!T2i6iVhd5
+irJ0=jTO`/kiq@1l2p>>m/HDPmg/FQnac;Co_%qWpAk!fq#gKjr;EMm!;Y?Z!4_s;r4;j=$^?j<
+P*(ieO,f3ZN8ss+P51=AP5UUCPl8Dt_>h=K_$.\\>[(E9rE9/&r`B&!r`/qsq,?c\qbmKtrN?@.
+YHG$um/QUfr4;m<<.]aVL5:\DN/`m[P*;/sR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(q_Sa@4
+aN;WKc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@(o()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CY-"b)W2HJfU7e*KS!o_2Q'@GnO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH#f5Chmd!B4b^c@U`_P?<pf?>$4s/<`W4!;[lW%:i(B.C2S*8H[g^-r0@;J"dPC>
+Q'@L3Oo^],qN(H4rJg6*qi1N4qi1W9nr<X-rJgi9s,Ho7rf-r:r/LE1!0?u<mZ7.)s,[#<rK6]5
+rK7#>s,d;ErfR,?pQ>H<r/q#Bs-!GGrfR5Drfd5Bs-*GFrfd8ErK[DKq3M)KqNq2KrL*MLs-WqW
+S"'AHrgj"Xqjm\Wrh'(\qP!q`!McIdU]%"dV#[CjVuEUpWViasWN,ls!3H1%riZ7(!3Z=)rilC-
+s0Ma4s0_m8s0qs:#e@OY]Y(tn^qp#erkf/``l?'?a2lBFb08)Srm1VkrmCbos3pts"4buSfDaG*
+g=tE<rn[Y4ro!h9roF(?!9X7C!U/_Gl2BlSlg4!*mdBT7mG#;ENnTI#P`q8nOcYWbNfB$Wj8\so
+qel@Ns)@II!HO:uO8G%=>lS".>5_V(=T2D#<rQ+u<;BJ^;YsDmKDpQ&K`HAas6PdFNDtL^KnbD?
+MN!OUOHPfmQC+)0S=Z@HU84W`W2co#Y->1;['mHS]"G_k^r"".`lQ9FbK\>ZdF-Opf@S^0gYL]C
+i8N\UjQ>UfkiqBum-O0/n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrqQNf!;?EbJ+W@(o()>?n*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CY-"b)W2HJfU7e*KS!o_2Q'@GnO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH#f5Chmd!B4b^c@U`_P?<pf?>$4s/<`W4!;[u]&:ch!36UF:584cKM:A7Q_:@:pW
+;#a;k:@V-Y:B+)i:A@Wa;"@B^:A[ie:B+,e:B"&f:B!uf:Amug;#4#i:f%'e!)NShr_NAc!DQ8\
+9`Rr^:\mid:B4/_:B4/g:]4,i:]!rg;=m]`:B45j;=RK_;>sAl;=m]b:A[ib;"dc];Yj>d;Z'Gn
+;Z9Mn;Z9Vp<;BGo<)lup<W6&!<s)K)<`]3%r)Wr%=',B'!a8`1rEK#$s'>Y0rETD0rEfh=?sd;L
+@:<VUral%?rb)7E$#+-gC2.HtCMRbcD?"MRD\@#/EH6)@F`hkMFEM_LG'J4TGlE!gHiJKnI0Y4N
+It3'#J:[]O!J?"'KDpQ(L&Zo-L^8ipMi3ORLjEjr<;9Jb<[j8sP*1rhO,o<\NJts#b0/#RcHjka
+dEp:he'lgre^i:%f@\d2gtgfCq`aX8o03.<!'p-Ss'5S.!*]>(s&f8%rDrntr`&\ln5B-^!)<Dc
+!)<Gd!(?2Rlr<s_<.]aVL5:\DN/`m[P*;/sR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(q_Sa@4
+aN;WKc-F\`daZh!f@em4h;-uHiSrnYk2tjjl0@U$m-a?2nF?MK!V>s_o`Fj]p\ssfq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bK@oH`Poa3^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fY0P`h/iNf8mQLk^V9Jq/?!
+f;Nt=G'%hHEGo`3CMIQsAn>L_@UWVN?!LW<=]nl,<Y8>2;c?Rk:ktO?It`cAQ(+SUrlP2]r5K&]
+_SX.)^V7@n]Cri9\c0)=\+[9-[/dZ'[K!W5[JI91[JdK1[JmW4[JmW7[Igp*\,Wu;\,Wu;\,Wu<
+\b3K/\am<3\b3H4\,No:\bir<\c0,4\c98;]DoPA]`Pp_^\YbG_#V:H_>V7N_uI[Q_u@UP`W*p[
+a2l?Brl4uYqoJ`Xrlb>crltJgp<WccrmC_nrR1esec+/!fDjM%g%sG$g]-%4h;7#Ghr+IlrSm_7
+!9F+?"Qnn2l0834!pf4>rp:6an*oi:nac;Dp%A%Qp\=O_q#gKkr;NYp!qkF!e[bUhrO`)p#aCO9
+P*(ieO,i3!mZR@/rf[8E!0mArpqZr9r`oJ-s'#A(s&f;&r)WesrD_rYs&Attric@+s/l@+mJlgj
+ppsJ9K7nr5Ll%%KNfT9bPEhH$R@B_<T:r!TV5L8lX0&P/Z*UjH\@K5a^;%J#_o9X:aihoRcHstf
+eCE1'g"P3:hV[8Mj5]4_k3)!nlKdg(mdKW6nc&([oCW%T!quB_rqQNhs8)Zjrqu`no_sFAJcGcM
+J,~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bK@oH`Poa3^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fY0P`h/iNf8mQLk^V9Jq/?!
+S:l03G'%hHEGo`3CMIQsAn>L_@UWVN?!LW<=]nl,<Y8>2;c?Rk:i1H.Bl.p6H%(F*rg!ML!1!PL
+!L8oKOo^],qN(H4r/L-)qi1Q5qi1T8o8W^-rJ^f9rf-i7rf-r:qi1<0!0?u<mZ7.)rf?u=r/pW5
+r/po=!g/Y/rfR,?plYK;rK7,Cs-!GGrfR5Drfd5Bs-*GFrKI/DrK[DKq3M)Kqj78KrgEVMrg<eU
+S,JlVSc,)TSc55[TDP;WT`Us`V"g_aV#-tgVZ!FlW;ijqWWK0"Wr/mtXT#@%Y5YX)Y5YX)YQ1s-
+Z2h61[/[N6[f3c7\-KRV]Y(ql^qfocs2,Ac`Q#p<aN)BDb0/#Rc-O`8d/MGmdf7ereGn&#f%8OQ
+g&Kh,h#H72huDU;iSrkXjSe0Hk3(mikNM*ml0803$L@'GmI'E+e%)NRnrDIas-3kSPEM)kOH5H_
+iW&dnrGDURrbh[Q!-%IJ!0R8BqN(T:!+#S/s',M,rE9/&s&],!r`/nrk>VC[r`'#PKS98WmJlg=
+r/LZ8<K2WaKnbD?Mi<[WOHPfmQC+)0S=Z@HU84W`W2co#Y->1;[C3TU]=bkm^r"".`lQ9Fbg+M\
+dF6Uqf@\d1gYL`Di8N_VjQ>Ufl07L!m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6KkrVcBfJcC<$
+s8RT~>
+JcC<$JcG`Lo`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bK@oH`Poa3^q[Rq]",;YZa-g=XfSP%Vl$8aTq@pHS!fY0P`h/iNf8mQLk^V9Jq/?!
+:el:[G'%hHEGo`3CMIQsAn>L_@UWVN?!LW<=]nl,<Y8>2;c?Rk:cq'26UO:47S6?LpJ:c`m8*^X
+!`)QdnPB*YohYQ`nkT6\qbI2er_NGer_NGer_<DfrD*DiqGI8h"A_ij:J^sbs%iJds%NJeoh>E]
+p.tN[!`)QdohPQ_rD3Ag!)NGf"Aqul;,R*brD*Dir_`/]r_W\m;=mZd:JO[_:]!u_;>3ub;ts8g
+;u]bq;#jMn;uTbm;u]hq<<-"r<W?,"<sD],<`W:(=Su5#=T2A'=BSc*>5_\(>QA"+>lS+0>l@q.
+?N+=2?j0nF?t!JRrFPt?rb)4Drb;CI!,;FJrb_XPs)/0^EH-#?FEM_LrH8-`s*+Kfs*4lrH[C-f
+I=6TprdY'$J:[WMre(3's+UK-s+p]4s,.#7F_+fXjAbkRo2bmV'9n]DP*(ieO,h9%aNDZKbg"GY
+ci2;kdJqVqe("BI#hIV\g=tE=h;8&no0)Y.!C'QV;u]_q?2e+/>Q7n*=oVV(=8Z+u<W,n[;u]hr
+<W5\l:&dle:@8)R<;]\n<)lkLKS>/:M2R=QO-#NgQ'Rf*S"-(BTq\?ZVl6VrXfen5ZaI6O\\#Mg
+^VI_(`Q$!@bKS8Wd*^=le^rI,g=tH?hr*JRj5f@bkNV6rlg4$,n*fc9rpg*]o`"Lbp@n=\q#C0i
+qY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb>kIXYo'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?5
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_1Q'7AmO,]*UM2-h=K7SQ%
+f\$/$0Q_AUE,KQ0CM@HpAn>I]@:3GK?!LT;=]ea+<`N's;Gg7eLn'laKo1qVS#*F5b/jP%$c^0'
+_SX.)^:q:n]D&o:\HKFQ\@8s@[e7$.[e-s-[/RK/[/[Q4[/RH6[^H+Cr3cO4s0_L-r3u^9rjVp;
+rjVp;s1.g4qRQ1.!4hg5s0r!;rjhp;!4i*=p::47qRcd?r4N0G^VBW\s1n]Nq8*!G!5nfSrPSWQ
+r5J]U"38L(a8X*Xa8<sWaTTc0bKS3/blH&_ci;AjdJqYndfe1Ne^i=NfDjM%g%sG$g]$"-h>uNl
+rSd_7qr7\;rT+1EkNM0prTXIMmHji>s6g6_naZ2@oCV_Lrq?EfrV6Nlr;N\q"Rb'jaiDuCr4;g<
+s-3eQPEM)kOH8?"rK@2Cnrig4r0%&or4r6Hs2+fPs'>V/s',M,rE9,%s&](ur`/kqn5K9br`/nt
+s&TE.Yct=6Y+4t\o=On2rjc<fL51VBMi<[WOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm
+_8=.0`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_VjlY^hl07L!m-X60n*ol<o(2JFp%A%Pp\jmeq>^<h
+qu6NlrUg)?s+14Ms*t~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb>kIXYo'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?5
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_1Q'7AmO,]*UM2-h=K7SQ%
+S=KP2/p)/SE,KQ0CM@HpAn>I]@:3GK?!LT;=]ea+<`N's;Gg7eD0^D@DKBrGIY<WEqN_>NPEM,m
+Oc]F#q2YE5mZ..'rJ^W5rf6T0rf$c7!0$o:r/CW7s,?l8oo9$5qN1-+plPK9r/gi=ooT'5r/go@
+rfR,?plYK;rK7,Cs-!GGrfR2Cs-*>Cs-*DErfd8ErK[DKnX'3As-`_Nrg<eUS,JlVSc##SSc55[
+TDP;XU&Uk]U].(dV#[CjVuN^qWViasWN,ls!3H1%riZ7(!3Z=)ril@,!jf8@rj;a7rjVm:#e@RZ
+]Y(tn^qp#erkeiV`Q#sta9B].b08,Trm1Sjs3^hos3q"t"P))Sf@^)Us4[t;h;7#Ghr*JPio9%[
+rT4%@roa=Fs69LI$L@'GmGlL"W1]WKnrDIas-3eQPEM)kOH8?"rGVLLs)7pTrbqgUoPskl!g/S+
+qN(T:s'>V/s',M,rE9,%s&](ur`/kqn5K9br`/nts&]5RrIk5rn,N!>pl/R4L51VBMi<[WOckro
+Q^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0`lQ9Fbg+P]dF6Uqf@\d1gtgiEi8N_VjlY^h
+l07L!m-X60n*ol<o(2JFp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ms*t~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrqQNf!;?Eb>kIXYo'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?5
+f@AC"dEp1abfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_1Q'7AmO,]*UM2-h=K7SQ%
+;,R9e/p)/SE,KQ0CM@HpAn>I]@:3GK?!LT;=]ea+<`N's;Gg7e4$uA'6q'R88k_uVq+q#cm8*^X
+s%iYink]3Zs%`VkpJ:cbnkT6\qbI2er_NGer_NJfr_<Aes%iVjqG@8i:]=/j:]4&g:\mff9h\7R
+9`Rr^:\RWW:B4/g:\7K^;><ud:B45i;=RK\;=mZb:]=,f:\mo_;>3ub;ZTcnq,7,h!)ien!)iep
+s&Aem!*&\mr`9&#"]e]*<``E#<ruK*=8l>%=TDY(>PDD&?2n1-?2\.1@/jR=?t!JR@qB1^rFZ%A
+rb2:FrbDFJrb_XPs)7mVs)S0^qfVp^rceBes*=Tj#CLrJIXcitJGk'!Jd6jYJqJZ-KS9>Ys+Ul:
+M2I1@Ear3M;,-.OpJpcbs-47^PEM)kOH7B#a2l?EbKJ,ScHac7ck"OPdaQ^qf%/I*g"G*7h;8)o
+n3-D-r_ierohtoi?![G7s',M,rE9,%s&](ur`/kqn5K9br`/nts&]4os%WMe!(?;Uo2PK`?%drf
+M2@.LNfT<cPa.T&R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Ta;aihoRcd:(geCE1'g"P6;
+hV[8Mj5]7`k32'olKdg(mdKW6nac8BoCV_Kp@e7Zq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV0gqp@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!]P-P`h/iNf8mQLk^V9Jq/@'
+f_DBrDJa0(BkV*iA7K(W?XI)D>Zt95=B8I&<)Z^n;,C)GSTfX<M2mdhVQn7aaSs3f`l5j5_SO"$
+^:h1kr42m?rjr*>"Lu"P\$u(>r3ZO5qm?F4oX+\+rjDU0rjD^3rj;d8[JmW6[/m_DrjMj7oX=\,
+s1&*<rj`!;rj`!=osjn0n[\_2p:1.3rj_s<rji3B]"5HO\G!K5])'&=]_oGC^AbnE_#M4N_"khD
+_?.Wn`;RUQ`;IUS`W4'Ya8j9[`r=$VaSj3_b0/#QrQP>fp!3WbrR(VmrmUns!7h)"s4@8&rRq&$
+rS.A-"l8%lhr!AkiV_^4irJ0=jTO`/kiq@2l2p;<m/HA_mdKZ7naZ2Ao^qhMp\4IXrV6NlrVikt
+#3jjdaiMECf=CjkqRZrtQ'IStP*4]%r0%&Ao9'-<Pl$[EP52ll_#2%K_?4.O?![D6s',M,rE9,%
+s&](ur)N2br`/hrs&T2&r`KE.Yct:4Yjh\`]DT8>\QjlEM2I7NNfT<cPa.T&R[]k>TV8-VVPgDn
+XKA\1ZEpsI\@K5a^;%M$`5Td<aihoRcdC.heCN7(g=k?<hV[8Mj5]7`k32'olKmm)mdKW6nac8B
+o^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV0gqp@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!]P-P`h/iNf8mQLk^V9Jq/?@
+SG7^cDJa0(BkV*iA7K(W?XI)D>Zt95=B8I&<)Z^n;,C)+H"C`-EccSUKT#\m#F(F9P*1rhOSb+=
+NW>.<Nr=t*Nr"b7N;AP5NrP(=NqSJ3N;SY8N;eh9Mueosrf-r:r/LE1s,[#<mZ7.)rf@#>qiUQ5
+qiUf<!g/Y/rfR,?plYK;rK7,Cs-!GGrK7,Cs-*>Crfd>Erfd8ErK[DKpm1uHqj75Js-`_Ns-WnV
+S,AfVSbnrSSc55[TDP;WT`Us`V"peaV#-tgVZ!FlW;ijqWWK0"Wr/mtXT#@$Y5b^*Y5YX)YQ1s-
+Z2h61[/[N6[f3c7\-T[X]=bhl^VRbc_Z.LV`5T^9a8X0[aofi2c-H=7s3Ubm!RfBpe,Ro%e^i='
+f\+sWgAp(/hZ)I6i8O[ps5X@FjQ5Lck5FKCkl9oGlMp2Vh8lq#TUM73POaagN<Y]6Q'@JqP2?6:
+Du";IDuXeNEW;0tOSY%<O98ir?![D6s',M,rE9,%s&](ur)N2br`/hrs&T2&r`K5Sre1B+L%,-5
+NqnZ>L51VCN/WdXOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lBGbg+P^dF6Ur
+f@\g2gtgiEi8N_VjlY^hl07L"m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ms*t~>
+JcC<$JcG]Ko`"gfrqu]ks8)ckrV0jrp@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!]P-P`h/iNf8mQLk^V9Jq/>J
+;,-j].;j!<C2%?nARo:[@:*AI>[1H8=]e^*<E)mq;Gg7e4@2A&779U88k`"V:]F2V:]F8k:]F2[
+:]4&g:B45d:]4,i:B45b:]F2e:B4/h:]=)i:JUmbrD*>dr_EJhr_WGg!DlSk:]O;i:B+,d:'+-`
+9_M3\:A.KX:A%B_:Amu\;#O8d;#O/i;#O8];#F2_:]O;i:Amub;#!o_;Yj;m;Gm6fr)3Snr_WYn
+r_reqqG[DnpJq5os&TD*=&r@'=BPK&!*K5%!a&T-r`]8)rEK>,r*98-s'5M.!+,V2$Xd=K?smDP
+@q9.]Ac66@BDuTDC&VlHCB/2MD?"MRDZFbUEW:+[FTur1FEM_LG5c^cGRSkDH[C-fI=6QoIt3(J
+JcC<%Jc:9$KE$W)L&Qf6Ll$Is@TlZ,9h7\7<;0D_<[j?"Q'@JqP/G5W`lH0Bb0.uPc-=P[d*U+c
+dF-IleCE.$f@\d0gYCWAr''U5!BraD56"UP;ZgB5?![D6s',M,rE9,%s&](ur)N2br`/hrs&T2&
+r`KCu9he;S:@S;S<;BHtL51VCN/WdXOckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0
+a2lBGbg+P^dF6Urf@\g2gtgiEi8N_VjlY^hl07L"m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcGZJo`"jgrVZTjs8)ckrqHQhp@eLY=nM=Vo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"_'Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2$_:Jq/CN
+fDqiCW&JF(B4YXa@UWYO?<pf?>$4s/<`W0u;c6Ih:euq?GCY7%Nfom0Z,t).a2c3<`5BI.^V7Fq
+]Y"-Rs1A9ArOMs<s0q^1rO)[6qm?F4n[82"s0_d3rO)X5r3cO4rjDF-r3u[8s0r$<rjVp;rjh^3
+qml7.!4hj6rjVm:rOE0E\[f;_\[]0B\c98;]DoPD^&GYE^&GeD_#M7N_"tnD_?%QmrPSTPrPefV
+!6>)[!6>)YrQ"iWrlG2`bPo`bblH&^ci;AkdJhSmdfItKrmq)#s4I;'qV(o&rnRM0!oMqoro*h8
+qr7\;rT+1EkNM-orTXIMmHji>s6p!W$h<fYoCV_Kp@n=Vq#:'jqY^;nrs7f?bK%ZC`k8Y2\bs&8
+]*4OeQ'ISth>dA8r/pZ8s-*JIrKHujs1nNJ!5e_Bs'>\2rETA,s'#>'r`K2%q,Zraqc<\ts&f8'
+s&oV2>[4M9Y-7Bq!5.s9r4;j;>DJ&mN/`m[OckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm
+_8=.0a2lEHbg+P^dF6Urf@\g2gtgiFi8WeWjlY^hl07L"m-X60n*ol<o(2MGp%A%Pp\jmeq>^<h
+qu6NlrUg)?s+14Ms*t~>
+JcC<$JcGZJo`"jgrVZTjs8)ckrqHQhp@eLY=nM=Vo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"_'Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2$_:Jq/CN
+SFqL]BkV-jARf1X?sd5G>[(B7=BAO(<)Z^n;,C(bD0fc.D/s`EIYE^XQ3`b?P`q8nOcY\%Nrk?&
+O8Y+:NUDi'NW+n6NW"n;N<#"5NW"h7N<"q:NVnb7NW+n7NV8A4O8=t*O8+h9O8Y1;OnOn6Oo(4A
+Ockn,Oo(79Oo1C@Oo:I@OoLUEPP^OBPPp[EPP^UDQ2d0FQiEBLQi!-MRJN<NR0&hHS,JlVSc##S
+Sc>;[TDYAXU&Uk]U].(dV>mFlVuEXpWViasWN,irriQ1&ric@)s0)F+!3uO/!42[3s0Vj8rjVm:
+#e@OY]=bhl_86)e#/eBt`Q#s=rl>>ebKJ/TcHji9d/MDpda?Omrm^u!#hR_^g"P38gthtd#2e@t
+iSrkWrT*t>!9X7Cs60LI%dN<Dm+TFaVOs6BPEC`VnrDLb"dbO?Q'@Kgs8-a1DZ+JRE;jbUE;=MP
+Onb%9NrY:@?iOF4?2\%.>Q7n)=oMP'=8>nc<Vohr=8uD%=oVY,>?kG3L%50CO7J>-NE_0pMN!OU
+OHG]jQ'[l,S"6.DTqeE\Vl?\tXfnt7ZaI6O\\#Mg^VRe*`Q-'BbKS8XdF$Fmf%8R.g>(N@i8EVT
+j5oFckiq?sm-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGZJo`"jgrVZTjs8)ckrqHQhp@eLY=nM=Vo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"_'Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2$_:Jq/CN
+;#j;`:*s[gB4YXa@UWYO?<pf?>$4s/<`W0u;c6Ih:es5?6:=./7Rp'D:A[fe:?t[W:esmd:@V-Z
+:B+,i;#!ib;#a;k;"dZb:A[fe:B"&e:B"&e:B!uf:Amug;#4#i:f%'e!)NShr_NAc!_l?^p.bQ^
+p.tEXn5&[QrDE>d!)NSh!)NPjnPK-\oM>N`r(d5eq,$lapepod!E)ek;YsAs;Gg:h;H$Nn<;BGm
+<;fes<;]bq<X2],<``='='5?$!a&N*r`K2'!*]A+p0@T&!*oG-rEfP4ra5\5"^tkMA7T9MB)ZEE
+BPD/ZC&VlICB/2MD>nGQDZXltEW1%YFoQR`FoQXaG8,:IH$XgaI!g?kIXcitJ:W6%JqARPK)UB6
+KS>,7L51+l?W^0$9M%W@6g%GC<Uj*3Q^3o%P`ru$_o0O6a2uHGbKJ,Rc-FY^d*L(ddaHUormh;*
+f\,!5gthllmlg\7s$-HGs&8qsnl,Nps'>\2rETA,s'#>'r`K2%q,Zraqc<\ts&f8's&oV2>[0us
+9MP'WnPo?`>DJ&mN/`m[OckroQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^
+dF6Urf@\g2gtgiFi8WeWjlY^hl07L"m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14M
+s*t~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl5/Kn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3MS!o_2Q'@GoO,f0VM2-h=K7SRO
+f_;?BWAA*r@q&kR?X6oA>$5!1<`W4";c?Rk:f'rFSXP(\M2mdgVQ\(^a2Z-<_ns7*^V@Iq]Y"0S
+s1A6@rji$<s0q^1rO)[6r3ZO5n?r)!s0_g4r3cO4r3cO4s0_L-r3u[8s0r$<rjVp;rjha4qRQ.-
+!4hm7rO;a8qmla<!P,`4\c98;]DoPD^&GYH]tV7rqnW6Js1nKIqSN-IrP\ZRrl,&\aN2F#`r3sU
+aT'?_b00e.rltJgp!3WbrR(YnrR1o!e^`7%rn%/%rRq&$rS.A-rnd\4!9!k8r8RV6!9F+?"Qnn2
+l0834!pf4>rU'XR%.NfWo()DEp%J.Sq"Xg`!rMrqYQ"t+j4)8n`l5p.Yc-6cr4;^9"IPOAQ'L2*
+q3(W;rK@2CqiUrCrfm&i#f+9m_SX.*?srt@s'G_2rETA,s'#>'r`K/$k>qR`s&f5&s&oD,r`fY5
+?='h<Y-ITur4Mg:r4;j;>)A,qNK90aPEhH#R$sM8StMdPUo(&hWiW>+Yd1UC[^`l[]Y;.s_SjF6
+aND]McHjnde'ut#f\5'7h;7)JioB(\k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`n
+o_sFAJcGcMJ,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl5/Kn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3MS!o_2Q'@GoO,f0VM2-h=K7SRO
+SFV:WARo:[@:*AI>[1H8=]e^*<E)mq;Gg7e:MtH'C2J!5H[^X+rK[\RP`q;oOcbb"O8k4@O,j0u
+m>h('rJ^W5rJgr=NfNjnrf$c7!0$o:r/CW7s,?l8oo9$5qN1-+plPH8r/gi=pQ566qiClAP*5g,
+qiLW9r0%#@rK@)@s-!DGqNClBrK@2EqNUuEs-EJIrg*MLo9]NGrgEhVr1*eXqjdPSrgs+]qk3bY
+!2B4_rM9=e!2f^mri#jrrMoms!35st!3H1%riZ:)s/u@)ril@,"gbSC[C*IB\,EfB\\#Jd]YD4t
+_>_=O_uIXV`Q-$uaT'BebKS5VcHji9d/D?9daQ[peCE.$f@\d0g=tB<h;7#Ghr*JPio9"ZjlGOb
+jQ5P&kPs`Vl0@Nsf"A,\Sskt.OG\^AnrDIa"IPOAQ'L2*qJZ.HrGV^T!,qjUrG_k#P5LI9OT1CA
+@/aO5?N4=0>lS%.>5VP&=T2Cb<rQ2#=T)D&=o_e+>QS2;?N#TLs87rNNr+f>M2I7OO-#NgQ'Rc(
+R[]k>TV8-VVPgDnXKA\1ZEpsI\@K5a^;%M$`5Td<b0/#ScdC1ieCN7(g=k?<hVd>Oj5]7`kNM0p
+lg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl5/Kn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3MS!o_2Q'@GoO,f0VM2-h=K7SRP
+;#jG`:)[\S@q&kR?X6oA>$5!1<`W4";c?Rk:f'qM6N0=U6q0[=8l"DBrD)lYs%`Ph!)WDcrD3Pk
+:f-j]!)EDe!)EMhr(d5er(d8dr_EDf!)WJg"].uk:esmd:B"&c:'+-`9_M3\:A.Ha:/CX[nPAdR
+rDE>d!)NSh!DcPk;=RK[;?'Gm:\R]_:B+,b;#4&`;Yj;m;Gm6fr)3Snr_WYnr_rhrq,78mp/V,n
+s&TD*=&r@'=BPK&!*K5%!a&T-r`]8)rEK>,r*98-s'5M.!+,V2!aoABra5b9A,^!=Ac66?B*)a\
+B`;`FCB&&OCi4*,rbhaS!cW."rc80aFEM^)FoQXbGQ2mgH$]I:s*Xiqs*t#u"bD2TJq8LOJeE]h
+K7nr4K6Cs7<_uUc8OZ$753Go?<UWs!R$X,(Q,1>T_o0O6aN;QHrlYDfc-=Q5cOS=LdaQ^re^i='
+f\5*8h>9D'4TI\F56+UU;ZK_k;u^8)?iOI4?2\%.>Q7n)=oMP&=6EW`=8uD$=oVY*>Q.k3?!^i3
+9MA:Ss6s"b;d,$8N/`m[P*;/sQ^F52SXuLJUSOcbWN*&%YHY==[C3TU]=bkm_8=.0a2lEHbg+P^
+daQ^sf@\g2gtgiFi8WeWjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14M
+s*t~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV0^np@e1Po^h\Fo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`Poa3^q[Rq]",;Y['R!?XfSP%Vl$8bTq@pHS!fY0Q'7AlNf8mQLk^V9Jq3dO
+po*qd/RVpl?!LT;=]ea+<`E!r;Gg7e:JZk=R=KjDNKTa-Y/nZ'`l,d3_8*h"]tCuV])K>?])K8>
+\,a#3[f*W5[f!N5[d^^$[/RK3[/@?2[f3Z8[^H+Cs0_L-r3u^9rjVp;rjVp;s1.g4s1&->rOMI0
+!4hm7r3u[8qmla<o""e3qRcd?s1SEE"22F`^\bhH_>h=I_>;%F_u7OQ`W!mW`rX9%rPnfVqoAr_
+b0%oObl,cdcLoK`d/DAkdf%VqeCFQLs4@8&rRq&$rS.A-!8[Y2!oMqoro*h8qW%P9"Qnn2kir'2
+!pf4>rp:-^n*oi:nac;Do_%qPrqQKg!rDinYl>1)gsaEe`5BR)YGe@pUYrZ_])B2;](il=R$X,n
+s7_]TOo:ICOnk12^]2(L_>_:R@UW\QrEoS2s'>S.s',M,qcWo#r)`DhrE&u#rE9/(s',J-$!gkD
+?XI2LY-"r#s7j8)]DT8=\QOiLNfT9bPEhH$R@B_<T:r!SUo(&hX0&P/Z*UgG\%0)_]Y;.s_SjF6
+aND]NcHjnde'ut#f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCV\Jp%J+RrV-BgrqcQirqu`n
+o_sFAJcGcMJ,~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV0^np@e1Po^h\Fo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`Poa3^q[Rq]",;Y['R!?XfSP%Vl$8bTq@pHS!fY0Q'7AlNf8mQLk^V9Jq3ch
+mXlTh?X@#C>?Y03=&r@$;c?Rk:f'q`DL-VDD/s`EIY3RXQ3W\>PEV/lOc]<u"-/G'Nr=t)Nr+h8
+N;AP5NrP+=Nq\P4N;SY8N;eh9Mueosrf-r:r/LB0!0?u<mZ7C0!0@#=rK$l<r/p`8qN:Z:!g/Y/
+rfR)>q2tT<rK7&Ar/q#Bs-*;Bs-*DEs-*8Cs-<VMpm;#HrKmAJ!1E_Os-`nU!1WnVs.0%Wqjm_X
+rLa"\q4Re_p7qV_qka=irhoaos/Gpr!NE*rWrfB)Xo5C&YPt^(YQ(g,Z2V$/Zi7?3[JdT6\-]^W
+]=Y_h^VI\%rk]2``5KX7a2c9Bai_fMbg+N5ci;Aid2LH^e'umtf%/L+g"P07gtgfChV[5KiSieU
+j8S-<jo=KCk7d(Bkiq'J\#Q0lR?WhpM1gD/H[>:DgPl9%Q^6D+pM]qHrGVLNplY62"(G\I@/XI4
+?N4=0>lS%.>5MJ%=Su7j<rH,!=T)D&>5qh+>R=\B?=.&I@>0Aho`+ZHpl><4=c86!O-#NgQ'Rf*
+S"-(BTq\<XVPgDoXfen5Za@0M\[oGd^;%M$`5Td<b0/&TcdC1ieCN7(g=tE=hVd>Oj5f=akNM0p
+lg4!*mdKW6nac8Bo^qhLp@e7Zp]1-hqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGZJo`"gfrqu]ks8)ckrV0^np@e1Po^h\Fo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`Poa3^q[Rq]",;Y['R!?XfSP%Vl$8bTq@pHS!fY0Q'7AlNf8mQLk^V9Jq3ht
+s%rSfr_<,^*ai>]?!LT;=]ea+<`E!r;Gg7e:JX)?6pa:07RfsAj%oVKnPB0[s%iYkpJ:cbs%iYk
+pJ:faqbI2er_NMg!DcJi:]4&f:&[of:]=2e;?'Gq:Jak`:]=,h:\d`e9h\7T:&[o]:B=3dpeL?T
+o2,B_q+q&er_<Ji;#X>^;#=,i;#a>e;#a>h:B"&b;#4&`;Yj;m;Gm6fr)<Vns&&eos&8nrq,78m
+rD`hsr)N_s#?Or-=&rC(=Sl/$=BAT'=T;M(>5h_0>[(H;>[.,2ra#P/rE]A/!+>e5s'Yk9!+Z"=
+!+l.Arau4Er+Z.Fs(hXNrb_[Qs)/!YEH-$uF8^4\FoHRaGQ2pfHN&7$I!pHmIt*!!JUi9%Jq8LO
+K)UB6KmduQ>Z4Kr91VK=6U![r3pBW=<UNm9R$X,R^qmn*_o0O6aN;NFb0%oObg"GYcd0tcdaQ^q
+e^i='g"P39h>BJ%4oS=X;Ya8j;Z0Mr@UW\QrEoS2s'>S.s',M,qcWo#r)`DhrE&u#rE9/(s',J-
+$!gkD?XI2L9M81Rs8Gse<;f`uMi<[WOHPfmQC+)0S=Z@HU8+N]Vl?`!Y->1;['mHS]"G\i^VRe*
+`Q-'BbK\>YdF-Lnf%8R.gYCWAi8EVTjQ5Oekiq?tm-O--n*fc9o()DEo_%nNp@nO\!;ZWjr;6Kk
+rVcBfJcC<$s8RT~>
+JcC<$JcGWIo`"jgrVZTjs8)ckrqQNf!;?Eb=S24Uo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[['R$AY-"b)W2HJfTqJ!JS!o_2Q'@GnO,]*UM2-h=K7WpQ
+s/>jnr2B@hs'.!V=]nj-<`N*t;c6Ih:esiCS<n_VL5h@aVQRtZ`Pf[2_8*h"]tCtg])K>?])K8=
+\,a#3[f3]5[f*W6[d^^$[/RK3[/IE3[f!Q3[f<c-[f!W7\Giu;\Gs&;\Gs,4\GEc+](if5\,Ei6
+\c983\c98;]DoPD^&GYH]tV7rqnW3Is1nNJqSN*HrP\ZRs2P)Z!Q`=[`r*mTaT'?ab0/#QrQP>f
+oZmNarmC_nrR1esec+/!fDaG%g%jA$g]$"-hZ)I5i;V^5iqqa9jSe0Ck3(sml2KuJli6>NmJlYT
+n-ALSo(2MHp%SI\rV6Nlr;O#%&F.rma2c*=_mHPDW2-/^Tq12Rs183?r4;[8s-VO?!0Qu<rK7)B
+rfR,An%T4F_84"*@U`bS?srt@s'G_2r*98+r`]2%r)iMkrE/r"s'#G,r`fk;?=$uG?t!JQ@UlRE
+p&Fj#qRcR7;N-WsOckonQC+)0S=Z@HU84W`W2co#Y->1;['mHS]"G_k^r!t,`Q-'BbK\>YdF-Oo
+f%8R.gYCWAi8EVTjQ5OekiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGWIo`"jgrVZTjs8)ckrqQNf!;?Eb=S24Uo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[['R$AY-"b)W2HJfTqJ!JS!o_2Q'@GnO,]*UM2-h=K7Woi
+s+Kcls'-gQ=]nj-<`N*t;c6Ih:esi'H$O.AEHQPTJr5k[Q'@JqP*(ifpl>Q<O,o<]rf-9)qi1T6
+qMkK7!0-u<pPo02rJ^f9rf-i7rJgi9r/C`;NVJP6O8=t+O84n8O8P+;Onb%6Oo(4AOckn,Oo(79
+Oo1C@Oo1C@OoLUEPPUIBPPp[DPPUOCPlR-FQiEBLQhm'LRJW?RR@9V7r1*bWr1*YTrgs(\r1NkZ
+s.]7_rhTCe!2f^mri#jrrMoms!35st!3H1%riQ7)riZ7(ricC-riuO1rj2^6[f*]8\Gs)E]">Vf
+^;.P#rPJQP%`QH.a2l?DbKJ,ScHab^rm:Sj!RfHre-aaWf@\a/g=tB;h>Z73hr+Lms5O(=s5X@F
+jQ5Ldk5FHUgVgCpT:)%0P)Y6LIXcZhG'A3'NnfWoR+hT:DZt#sDfBW5r,2FNrG_dupQ>02s'l":
+s'Yh5s'G_2r*98+r`]2%r)iMkrE/r"s'#G,r`fk;?=$uG?t!JQ@Uk(Gp&FZFqi:W7;N-WsOckon
+QC+)0S=Z@HU84W`W2co#Y->1;['mHS]"G_k^r!t,`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5Oe
+kiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGWIo`"jgrVZTjs8)ckrqQNf!;?Eb=S24Uo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[['R$AY-"b)W2HJfTqJ!JS!o_2Q'@GnO,]*UM2-h=K7Wns
+ohG<YrD!;s)Hp9H=B8I&<)Z^n;,C(b:-:j26:=427S$*Gk"knMnP90\:]4,b:]4)i:]=2b:]F2f
+:B4/h:]*ud:]4&f:&[of:]=2e;#sKhr_NSjrD*AgqG%#br_3&\r_E)]peL?To2,B_q+q&er_<Ji
+;#X>^;#=,i;#a>e:]O;g:B"&a;#4&a;Yj>l;?0Sj;YsAs;Gg:h;H$Nn<;BGm<;'>l<rZ5*<``=&
+='/T&<rcA%=8l>$>5_\)>lS%+>lJ"/>l@q.?MRq2?t!MRA,^$;B)ZECB`)TDC'&0eD#S;NDZ=VV
+E,fptF8p=dF`__JF`qs-G7]"EH?spbI!g?kIXcitJ:W7KJc:69K7\`%CLC:D:J4;N7mo[,5!(ec
+4$2e.pJpW^s-O_<^;%J#_Sa=2`Q-'AaN2KFb0/#RcHab^d*_jA#h7DUf@ej2gYDZirB1-EqE4gB
+q*"ROs&/\lr)3Pns'l":s'Yh5s'G_2r*98+r`]2%r)iMkrE/r"s'#G,r`fk;?=$uG?t!JQ@Ui)+
+p&Fqgmo32DNfT<cPEhH$R@B_<T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_SjF6aND]NcHjndeC<($
+f\5*8h;7)JioB+]k3(smlKdg'mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcGcMJ,~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl,)Jn*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QB[PpO,f0WM26n?K7`sQ
+po"%gp8KBA=BAO(<)Z^n;,C(b:JQb9Q@4==NKTa+XiA>u_ns7)^V7Co]=S!Rr4;m<rj`!;p9st.
+rjMa4s0hF)qm?@1r3ZF1rjMa4rjMj7oX=\,rj_s:s1&*<rj`!=osjk/q76R:qRZL4qmZO6qmla<
+o""b2qn)m@s1SEE"22F`^\YbG_>h=I_>D+G_u7OP`W*sW`rX9%rPnfVqoAi\b00e.rlkGgoZmNa
+rR(YnrR:errmq)#rn.2&qV(o&s4dh7hVR/Ii8FUnr8RV6rT+4FkNM-ol2KuJlN$;Nm0rFOn*ol;
+o()DEp%J.Zq#1!ir;Q]'rtYIne]c%Qa3;N-Wi;qkTVA%*b.tTrjgkB%s1/'=pq$O;g&M&6p6,E;
+"d5"1P*1t,P5N,d^]2(N_89^\@KKtG@/XI4?N4=0>lIt,>5;=l=Sc2">5qh+>lS(0?N+:=?t!JQ
+@Uiq[AS/(<rrBb+]_K,=\l"KKOckroQC+)0S=Z@HU84W`W2co#Y->1;['mHS]"G_k^r"".`Q-'B
+bK\>YdF-Oof%8R.gYCWAi8EVTjQ5OekiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBf
+JcC<$s8RT~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl,)Jn*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QB[PpO,f0WM26n?K7`ri
+k^t'^=BAO(<)Z^n;,C(b:JPbOH"h/9Fa/=dM3aEkPEV/lOHB-rs,R,=m#Lq%rf$f8!fW+urf-u<
+rf6c5rf$c7!0$o:r/CW7s,?i7p5T-6q2k$*q2kK7rK-r>plP<6qiClAP*5g,qiLT8rK@,Ar0%#@
+s-!DGqNClBr0%)Ds-*MIrKR;Hs-EJIs-ESLqO%;Nr0RMQRf8fSSH#/XSGJfUT)G;[T_P2\U@tA]
+V#$nfVZ*LmW;`dqWrK$uWr&gsXT#@$XoP[)Y5YX)YQ1s,ZMq62[JdT6\-]^W]"G\h^VI\%rk\ZQ
+rknlXa2e2#"3Sg2bl5ofci2;idJqVue'umte^j`P"khVagtgfchZ)O6iW%p:j8J'=jo=KCk8)U]
+XeVJSQBIGkLOsu(H?j[YR[&tpN:r:eNS4@.DuOVSDuO_UDuFSNDu>^lOnXq;A,Tj<@:3LA?iOI4
+?2\%->Q.h%=n5\k=oMV)>Q.n->l\41?OC1L@:E\UA7]=aK_GH=O8+b8NDY^sOckroQC+)0S=Z@H
+U84W`W2co#Y->1;['mHS]"G_k^r"".`Q-'BbK\>YdF-Oof%8R.gYCWAi8EVTjQ5OekiqBum-O--
+n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl,)Jn*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QB[PpO,f0WM26n?K7`qs
+rClQP)-L'C<`W0u;c6Ih:esk^4@)A%6UaI784ZM>:]!oX:BF9e:]4,b:]4)i:]=2c:]=,e:B4/h
+:]*ue:]*ue:&due:]F8f;#sKhr_NSjrD*AgqG%#br_3&\s%`/]peL?To2,B_q+q&er_<Ji;#X>]
+;#F2j;#X8e;#a>g:B"&b;#4&a;Ya5l;Gm6fr)3Yp;,R<js&8qsq,78mp/V,ns&TD*=&r@'='56!
+r`K2'!*];)"C,/9>?h#1s'>Y0ra#P1qHs81!b#PIraZ"?rFZ(B"))C_B`;`FC'ABhD/O3-rbhaS
+!c`7$rcA*]!HiM`FoQXbGQ2mlH$Xd`H[L8@IfForJGk$<Jq8N*K6M$9=&Dad8OZ*85Wq:m3]fDp
+84Z0;mo9$]mT(?.]Y2"m^VRe(_o0O6a2l?BaN;QHbKS5VcHjh`df.]#eCE.&g"P38q`ap@r]^3B
+s$$BEs&/\jr_iSkr)*N)rF,h:?srq?s'G_2rET>+r`],#nlY`kr`]>+r`oJ/!+,Y3$=I:N@U`hX
+AS#IHpAb"gn5N8FO-,TiQ'Rf*S"-(BTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Pom=b0/&TcdC1j
+eCN7(g=tE=hVd>Oj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-hqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV0Xlp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'7AmO,]*UM2-h=q:YD<
+r2BCi-Fp_!<E)mq;Gg7e:JOW@S%O-!LPq7_U9;JQ_ns4(^V7Co]=PVdqmud;rj`!;p9t"/rO2^5
+"1GVG[dgd%[/RK2[/IE3[f3Z8[^H+Cs0_L-r3u[8rjMm;rjVm:s1.g4qRQF5!4i!<!4hp8qmZO6
+qmla<o""b2qn)m@s1SEE"22F`^\YbG_>h=I_>D+G_u.IP`W*sUa8O$Va8<pZai_g+bl5lecLfH]
+dJhSmdf\+Mf%0iPrRh,&q:bi&s4dV1rn[_6i8FUnr8RV6!9F+?"Qnn2l0803!pf4>rpBaSs6p9`
+o()DEo_%tWq#:'jqY^?$rsAMYd`TVI`5B0jrhp7!TV7q$a1f'kZE^Tpkdg](s1/*>pUf&Wr/p]9
+rK7&AqnW-E!5A0A"i.rbA7K-K@fKm:@/XI4?N4=/>lIt,>3]8i>5hb)>lS(0?N+=3?jgCP@Uiq[
+AS,RgBPI5@rk89Crk80@qn#[cOckroQ^F21S=Z@HU84W`W2co#Y->1;['mHS]"G_k^r"".`lH0C
+bK\>YdF-Opf%8U/gYCWAi8EVTjQ5OekiqBum-O--n*fc9o()DErq6<b!;HHe!;ZWjr;6KkrVcBf
+JcC<$s8RT~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV0Xlp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'7AmO,]*UM2-h=q4-W#
++bGc:OB#7Y;c6Ih:esh\DKpqND/aT@I"I3>PEV/lOcY[tO8k4BNK0$[mZ.:+!07&<s,?l8!fW+u
+qi:E1rf$c7!0$o:repl;N;eh:N;S\.NW>.:OR8,)OSb+;OSt=9OSP%9O91Q-P5^U@OSFt:P5UO@
+P5UOCP5gaBP5gaDP5gaGPQ6pGPl?sJQM[!NQC!o'r0R8Is-`eP"IY^JR[a5Fs.0%Wqjm_XrLa"\
+q4Re_p7qV_qP=1hrMTXns/Gsss/?!ur2Th!riQ1&!3cC)ric=*!3uO/!42[3!O]B7\,Wu<\Hf^Y
+]Y2"o^qoudrko/_`lH-@aN;WLbg$.4s3L\k+OSQ`dF-IleC<%!f@\a/g"P6:h;-rEhr*GOiSrkW
+ioC!us5agSiQ\p6U7@X8OcP<PJpr)lrc\X8P)kQZLk^P)q2X9jfDk_dqel@Os)7pTrGVOoqN1i@
+OcfI$s().>raPn9s'Ye4s'G_2r*95*r`\Sir`];*rETA.!+,Y3s'Q4C@U`hXAS#IdBP;,Ss7MHH
+N_ke!P*D5uR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(q_Sa@4a2lEHc-FY_daZguf@em4gtgiF
+i8WeXjlYail0@U$m-X60n*ol<o(2MQp&F^cp\jjeq>U6gqu6NlrUg)?s+14Ms*t~>
+JcC<$JcGWIo`"gfrqu]ks8)ckrV0Xlp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'7AmO,]*UM2-h=q,%,d
+qFp<OrDa>,;c?Rk:f'q_9fta36:1Z?s%*2cl;.:PrD*Dip.kcc:Japf;#*o_;"mcb:Adlf:B"&g
+:'"-cr_NGes%WJfr_NMiqG@8i:]=/j:]4&g:\mfd:&[i\:&du[:B=3dqG-QVnkf<_q+q&er_<Ji
+;#X>];#F2j;#X8d:]O;g:B"&b;#4&`;Yj;n;Gg<f;Z'Jn;ZBVo;ZB\p<;BGm<;fes<;T\q<X;c-
+<``=&='/T"=8l;'=^##->6%q,>Pqb*>l\./?2n70?N=L5?NabF@U`jHA,p3?B)ZECB`)TDC("fn
+D/F0-D/O60DfG\rrcA*]"*J^.FoHRaG6<)8H$]I:$@I8NIXcitJ:E*"qgf]8Eb8QV:JXSQ6pj7(
+5!:nd4$#u*7R]^25sRd-<;0D\<[kSj]=bhk^qmn)_o0R7a2c3?aN;QHbKS5Vcd:%ddaQXneCE.&
+g"P38q`am?rBC0CrBC6[r_iSir_iVlrDNZ+s'u%;s'bq8rEoS2s'>P-r`fA*l<4*ir`f>+s'5V2
+ra5\5$XmLR@q9.^AnPdjC%qZ,<;fbc<)AX<P*D5uR$jG6StD^NUnsufWiN8)Yd(OA[^WfY]Y2(q
+_Sa@4a2lEHc-FY_daZguf@em4gtgiFi8WeXjlYail0@U$m-X60n*ol<o(2MQp&F^cp\jjeq>U6g
+qu6NlrUg)?s+14Ms*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl,)Jn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q5Q'@GoO,f0WM26n?g"HAY
+rRpb>r2BIkrOMs>*)]X1:esk^9u*14I"7$2OdMlG`5BF,^V@Ip]=S!Rqmug<rODm:p9jt/r3lR3
+rjM@)qR$:1r3ZF1rO2^5!OfE8[f<c-[f!W6\Gir;\Giu;\Gj&3\GEc3\cB;<\cB;;\GE]4\GWo;
+](3E2])0,>]`,VE]E>j]^VBW\s2"]Mqn`0Hq8<0Lrl+oWr5\`Trl=lVs2kDdc-6.2!7(5_!7:_m
+rmLbo!S#[!f)F;#f_sM"gATe+g^)`mhV[5Ki8NYliqqa9jSn6Ek3(sll0803&F8]LmHs?1n*oi:
+o()DEp%A:YrqQZmqu-N(ruLXbd*'JIahY<dW2ZSdU7e'LSt*3p[BcQf_91$Llacf%pq,,Wq2tE7
+rK.)CqS;R7!5SSF!b>eNrF,h:?srq?ra,V1qcs,)qc`\rr*')(r*98-s'G\3&7ApT@U`hXA7]=a
+B4tsmCMW_Fr4N6G]tM.orOr!=:Q^g)Q'[l,S"6.CTq\?ZVl6VrXfen5Za@0M\[oGe^VI_(`Q$!?
+b0/&Td*^:ke^i@*g=tE=hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-hqY^6ir;HTd
+rdk*#s8W+L~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nknrHn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q5Q'@GoO,f0WM26n?pmgQ#
+s+:31s,\'q;,C(b:JOWMG_p-OE-->QJr#YTP*(lgqi:`=qi:o@NK0$[O7&&)NW4t9NW4t;NVeb2
+NW"h2NW+k;NK!jrs,?l8oo9$5qN1**q2kK7rK-u?pQ535qiClAP*5g,qN1N8rK@,Ar0%#@s-!AF
+qi^uCr0%)Ds-*MIrKR8Gs-ESLr0I;JqO%8MrL!VQ!h,UJqj[YWqjdPSrgs%[rLiqZ!2B1^rhTCe
+!2fanri#gqri6!t!35ps!3H1%qQBh$s02O.rj)L0!4Mj8s1&'=#J.R]]t_@u_>_:U_o0L4`l?'u
+a90T.bg$.4rm1Vk(X^UWd*^:ie'umtf%8R,g"P39gtgfChYuI5iVqj:j8S->jWWBu[]#jgR$3\l
+L4k)+HZs^YF`hkLMMR%AIWLO5Q'RGjgPseaqJZ7Ks)7mUrbhgTDu,RiOnb%;AHHCPA,Tj<@:3LA
+?iFC3?2In+>PhUt=o;J&>Pqb+?2n71?P$UR@:E\UA7T7_AnPdjBkqMZs7MHHN_be#Pa.T&R[]k>
+T:r!TV5L8lX0&P/Z*UgG\%0)_]t_A"_o9X:aND]NcHsteeCE.%g"P39h;@/LioB+]k3(smlKdg'
+mI'H3nF?)?oCW%Ts7QHerV-BgrqcQirqu`no_sFAJcGcMJ,~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nknrHn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q5Q'@GoO,f0WM26n?pe_#c
+pe:EV!)EDcqc+8,;,C(b:JOVV6:O:/77B[;8knYJqG.#cs%rAaqb[)aq,$i^rD*,`r_<Ji:B"&f
+:B!ue:B+,h;#4&h:]sQj:esmd:B"&c:&n#f9_V9]:@h6^:/C[\nk\gQr_`Jfs%iYi!DcPk;=IE[
+;>sDl:\dfe:\mid:\di`;>sGn;u9Jh;u]_q;>O2f;Zouq;,U<k;u]hm;ZKen<<-)!<W?,"<sD],
+<`W:'=SPts=T;M(>5h_+>5MP%>lJ"/>lJ%/?M\"3?t!JQ@f9j9B)cKGBPD0orb;@H"`%pkD/O4i
+D?OlsE,p!uF8U.[FoHRaG7JkCH?spbI!pElIXcitJ,OosJJNNJ@p;i.9M%ZA6pX"$4ZPP`4$5Sb
+7/fIU7RBI077-ZHpJpZ_%CisZ]">Yh^;.S%_Sa=j`<jQ)aN;TJbg"GZrm1YmrmD&#eCE.%g"P3X
+55[PE5!Ad,r]L6Fr)<Plr)*Air)<Vnrac.A@q5IH!b#JErEoP1s'>M,r`f8'p0%;sr`f;*s'>Y2
+ra-4E@:<VS@q9+]AS,RgBPD6tq#C1i!)rGf:Q^g)Q'[l,S"6.CTq\?ZVl6VrXfen5Za@0M\[oGe
+^VI_(`Q$!?b0/&Td*^:ke^i@*g=tE=hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcp]1-h
+qY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb=S24Vo()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8NaMu3:_SEq"]XkY_[^<BGYcb+/WMcVhUS4?PSXZ%7QBdYsOH5B[MM[+Cg"HAY
+r7M(KpS[ebr2K^p!4i'>rj`iV:esh\:!/m?H\%!2OdMiF_SO%&^:h2X]DK2=\c'#<\+[91[J[K5
+[/m_DrjMC*q6^10r3ZF1rO2[4rO)^6o="S+s1&$:!4`$;s1&*>osjk/pppI9qmuU5qR?C4r42j=
+o""b2qn)m@rk8<D!kuFaqS<-IrkSEIqSN'Grl"fTrl4oWr5S`VqT&f]b0/#QrQP>foZmNarR(Yn
+rR:errmq)#rn.2&q:bi&s4dV1rn[_6i8FUnr8RS5rT+1EkNM-orTaFK!:9^P"RbaJnF?MK"7u0X
+p\jmeq>^9lr;O8,'^OGqa2Ps<_m?A@VkK`WTU_XDS!j8B$(-X]_90m!ZDb(s\bNc3]@?lTOnk1>
+Onc`k^Au(@^].pFAcH<@A,]s;@K0a5?iOI3?2@h'>PVJ">Ph\*?2n70?P?gU@:E\UA7T7_AnPdj
+BkhF!D/T1Lr4`3Es1SKJrP&3Crk)$iPE_?!R$sM8StMdPUnsufWiN8)Yd(OA[^WfY]Y2(q_Sa@4
+aN;TJc-F\`daZguf@em4h;-uHiSrnYjlYail0@U$m-X60n*ol<o(2MQp&F^cp\jmeq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb<qQ"To()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8NaMu3:_SEq"]XkY_[^<BGYcb+/WMcVhUS4?PSXZ%7QBdYsOH5B[MM[+CpRD;;
+KS8`FrIP$1qN)GS:esh\9r`DpBPh^0G^Y4#PEM&jOS+\4NrP1.NrP(=Nr=q;N;\b8N;nn8Nq\P4
+N;&>1N;\_9N;JS8NfEgos,[#<mZ7.)r/^c;rK6l:plYH8!g/Y/rfR&=q2tW=rK7#@rK7,Crfd5B
+s-*ADs-*JI!0d>Frg!MLr0R>IrKmAJrgE\O".>UIS,8`USc##TSc,/YTDbGXT`Ch\U].(cV#[Ck
+VuEXpWVrjsW;rsqX8]7#XoP[)Y5PR(YQ1s,ZMq62[f*Z8\Gj#V]">Vg^;%J"_8=(,_o0L4`l?'?
+aN;TKbg$.4s3L\k!7CemrmLeqs472%s4[J-!8[Y2s5<n8ro3t<ro><U^p9f.R?s)"NJN18I<p-_
+GBJ%LF`VVGEHuP^Mj'6OM0smKN<"q$NR\"*Dtn5MDZFbUDtoFnOT:RAOnk+=B)ZBAAH-0=@fKm:
+@/OC3?N+7,>l.b$>5MP$>lS+0?N"4E?t!JQ@UiqZAS#IdBP;*pCMRd)q>^ASqiCH2:Qgp+Q'[l,
+S"6.DTqeE[Vl6VrXfen5Za@0M\[oGe^VI_(`Q$!@b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0q
+lg4!*mdKW6nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrqQNf!;?Eb<qQ"To()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8NaMu3:_SEq"]XkY_[^<BGYcb+/WMcVhUS4?PSXZ%7QBdYsOH5B[MM[+CpJCob
+pIt?Vr_EDdq,Iu,:esh\9is_M6:=727S-3Hn4s'[:\dcb:]F8a:B=9hrD<>dq,$f]r_E2`rD*;e
+rD*>ds%`Phr_WGg"].uj:f'sd:B+,c:&n#f9_V9]:@h6^:/C[\nk\gQr_`Ge!)NSh!)WYln50!Z
+s%r_kq+q&eqG.#cqG?ubpepod!E)en;?0Yp;Z'Gp;Gg<j;ZB\p<;BJc<W?)*=&r@'<`W:(=SPts
+=9Vi2>$G37qciu'r`oM/ra#P1rEfP4ra5Y5s'kq;rFQ4GBP;*oB`;`GC'JHiD/F0-D>nGQE;jnW
+F8U.[FoQXaGQ2sgHN/<tI!pElIXcitJ,Om-JTba7=A_jf84?$:5Wq=13r_8Q4?GP_2`Wrg6:3n&
+5s%Cn2u$AH<Ua$"\%&uZ]"5Pf]t_A!_SX4/rP])_a2uKIbKS5Vci2;kdJqW"e'uq!f\,!5r''s?
+!Br[C56"OY;u9Jk;>jDj;Z]j/B)ZBAAH-0=@fKm:@/OC3?N+7,>l.b$>5MP$>lS+0?N"4E?t!JQ
+@UiqZAS#IdBP;*pCMRd)q>]tar_req:Qgp+Q'[l,S"6.DTqeE[Vl6VrXfen5Za@0M\[oGe^VI_(
+`Q$!@b0/&Td*^:ke^i@*g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo`"O`p&Ojcq#C0iqY^6i
+r;HTdrdk*#s8W+L~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV-Hgp@eLY=7l+To'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dEp4bbfe,L`l5m5_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3NS!o_2Q'@GoO,f0WM26o>g&B_&
+g&.fKVtd4eWW&jp])T><])T;Q:!/m?H\$p0OdMiC]"l(p]tF<Ur4;j;rO;j:p9jt/qmHL4r3l.'
+q6U.0qm?@1rO2^5!OfE8[f<c-[f!W6\G`l<\@8sH\Gs,4\GEc3])T><](rl7\,Wl:\,<c6\c982
+\c98<]DoMD^&5ME]tV5Z^\P\B_>;%D_uI[R`W*sUa8O$Va8<pZai_g+bl5lecLfE_d/MGldf%Vs
+eCE.$rn%,$rn7,$rS.A-rnd\4s5<q9qr7M5!9F+?"Qnn2l0803!pf4>rpBaSs6p9`o()DDo_%tX
+q#:'jqYU6'rtkOle]PnN_ofZtWMuegStV^DSXc1;Q^@];$^I%&\tkUoR$h2tFn3*;])'%frrA/R
+Oo1CBOnZZi^\ttA^].pHB)Q<@A,p-<@fKm:@/OC2?N+7(>l7h#>lJ%/?N"72?iXX7@M30]A7]=a
+B4tsmC27U$D/O92EVoe3^AG\F^AGTCPEhE"R$sM8StMdPUo(&hWiN8)Yd(OA[^WfY]Y2(q_Sa@4
+aN;TJc-F\`daZguf@em4gtglGiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV-Hgp@eLY<V5nRo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dEp4bbfe,L`l5m5_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3NS!o_2Q'@GoO,f0WM26o[SEtn+
+K):Z,OoLLR9riJqBPh^0G^Y-uNffEbr/Ui>r/^c9rf?K-!f`5#rf-r:rJgf8!0-l9pl562r/C]:
+rf-o9!KE';NW4t8NW5"=NVJM6O84n*O8+h7O8P+<Ont.?Oc]C$qN(c@P*5g,qN1N8rK@,Ar0%#@
+rf[;Fqi^rBrK@2ErfdDHrKR8G!1*PLr0I8IqO%;Nr0RMQRf8fSSH#/XSGJfUT)>5ZT_Y;]U@tA]
+V#$nfVZ*LmW;`dqWrK$uWr&gsXT#@$XoP[)Y5YX)YlD!-Z2h61[/[T5[fEr;\HfaZ]tM.q^qp#e%
+`?6'`Poj;a2l?DbKS5Urm(PiqU#5is3q,#f%0iQ#hn%ggtgfChV\=j!9*n9)ror<d(69PSX5Y(P
+Dk3IIXQKdGB\1PEccACF8g.eE,h+tHua[TDF@H*qMk?1mu>frqJZ(Fs)7Rls,m8CrK6r<s(;=Dr
+FQ">!+Yt:s'bq8r*TG0ra#5&r*/o#ra#P1rEoS4!+Gk9&n>H_AS#IdBP;*pCMRa'DJsK6qu?SUq
+iCH2<0NT4Q^F52SXuLJUSOcbWN*#$Y->1;['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYCWBi
+8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGTHo`"gfrqu]ks8)ckrV-Hgp@eLY=7l+To'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dEp4bbfe,L`l5m5_8!^s]=GG[[Bm0CYH=k*W2HJfU7n3NS!o_2Q'@GoO,f0WM26m_;#!oa
+9__?V:A\&e<WYus6N0=U6q0X;8PSbO!_uNeq+grcr_W;a!`2`kr_WDdq,$i^rD*8d!)WYjr_<Ji
+:B"&e:B+&f:B"&g;#4#m:esk`:f%$bs%iGc!)<GdpJ(Z_o1oB^:\dcV:\%?];>O)j;,C'f:&n)W
+;#=,i;#a>h:]jKi:f$p_r_N>dqGHubqGRGn;,R0fr)<Vns&&eor_rhrq,78mqGdMrr`/u!s&TD*
+=&r@'='56!rE'5+>$>-7>5MP%>lJ"1>[:Y7?MRt-@0'hIrabt>s(D@F!GQ6HC&ViIC]8/UDJa6.
+DJsK6rc8!Z"*A[-FT-F_G5ldcH2i3jHiJKqIXQ\DIk#tuIrf7-<`)[c8Ol375<_7l3BK8a4?>J^
+3BB2]3''/f4Zb\a0eOFq.f33?<Ua$%\$icU\[f;a]tM1q^qmn)_o0Lm`<40%b00e.!mT$:rQkku
+daHUoe^rI-g\X224o[\G5Q*eE;Z'Jg;?0Sl;Z'JnB)lQBAcH9@A,Tm:@K0a5?iFC2?1qP$>PDD%
+?2n70?iOL6@K'^K@q9+]AS,RgBPD3sCM[j*DfB^ns6s"c;cJsGQ'[l,S"6.DTqeE\Vl?\sXfen5
+Za@0M\[oGe^VI_(`Q$!@b0/&Td*^:ke^i@*g=tE=hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo^qhL
+p@e7Zq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl##In*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_SEq"]XkY_[^<BFYH=n+WMcVhUS4?PS=>q6QBdYsOH5B[MM[,Ag&B_%
+g%D<=WVi^p\b3NF\]pPZH[pm1OI2Z<\\Gkl]`#JB\cK@QrOMj9!4VF*!4Da5o!S8"!4Da3rO)U4
+rj;d8[JmW7[Igp*\,No9[fX(K\,No;\b3K/\bWi:\biu6\G`o:[K*f7\GWo;](*?2])0)@]XtfR
+]E5d\^AYhA_#2%F_Y:qJ`;R[T`r*mT`r=$Ua9B].bKJ,RrQP>foZmNarmC_nrR1esec+/!fDXA$
+g%jA$g]-%/h>Z74hr*GliV_^3j8J'Ck3(sll0834s6K^Os6U3^n*fc9nac8Bo_%qVq#C0iq>pNn
+^&JW;gsO?f_oBI$X/DnlT:__RRhhH\Q^=)*Q^*l#PE_5mR<i+MI8>-AMY4OS])0+fs8J,POoCO:
+_#1tF_"kbEBEDgYB)ZBAAH-0<@fKm9@/OC2?N"0u>lJ%.?Mn.3?t!LC@Kp=QA7]=aBDuQPBkhF"
+D/O60E,fo>r;ZT-!kuFarkSQKs1\HF;jEZ8R$sM8StMdPUo(&hWiW>+Yd(OA[^WfY]Y2(q_Sa@4
+aN;TJc-F\`daZguf@em4gtglGiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nkelGn*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_SEq"]XkY_[^<BFYH=n+WMcVhUS4?PS=>q6QBdYsOH5B[MM[,]SF2%+
+K)^o)OUdJVGD^'LE--;NJVB&EOSk.>OSt7<Nr>%,NWP3#NrG%<N;eh8Mu\k8Nq\P3N;SY8NrG%;
+Mueosrf-r:r/L`:!0-c6!0?r;mZ7.)r/^c;rK6r<!KiK>Ont.@Ockn,Ont18Oo:I@Oo:IAOoCOD
+PP^OBPPp[EPQ$dHPPpaEQ2d0JQi36JQhm*LRJ`EPRJrWTS,8]USbnrSSc55YTDbGXT`Ch\U].(c
+V#[ClVuEXoWW&psW;rsqX8T1#XoP[(Y5YX)YQ1s,ZMq33[C6%C!4`$=)7mGn]tV7s_84"*_o'F3
+`Q#p<aN2KFbK\<2cMl/gciVP?d/MJne.'sZf%AX/g=tE<h;-rFr8@P5/D\:TW1]ZJPECl]KR\H!
+G^+FUG&q\FF)l>ADfK`9DfBW5DKK)N9jC%i@qbe"qMas(df9/^oksejooT08r0%)BqiLej!bZ+W
+ral+?s'u":s'bn7r*TG0rE\ksra#M0r*KM5@:B.E#%M1SAS#Idrb)[RC27X&DJjB3EH6-us87uU
+O8+`8O,fKkQ^F52SXuLJUSOcbWN*&%YHY:<['mHS]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYCWB
+i8N\UjQ5OekiqBum-O--n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nl##In*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI#da?Cdc-+8Na2Q!6_SEq"]XkY_[^<BFYH=n+WMcVhUS4?PS=>q6QBdYsOH5B[MM[*b;#!lf
+;"[QS:@_Em>XCeF6:+127n?AH:]F/i:\[Zb:]=2a:]F8k;>sDg:\di]:]4&d:B45j:]=)i:JUmb
+r(d8dr_EGgr_WGg!DlSk:]O;i:B+,d:B+&f9__?]:@h6^:/C[\nk\dPs&&Pf!)NSh!)MuYqbdAi
+s%iPhs%`Yl:\dcc:\di`;>3ub;u]_q;>O2f;Z]io;>sJn;u]hm;ZKei<W?)"=8c2"<rc@s=8l>%
+=Tho4>?Y5.>Pqb*?2n.0?2e1+?NabF@:E^EAGp*DB4tsmBP@BZs(_RLr,)FN!cN$trc8$[r,hs]
+rc\<cs*=Wjs*FosI=6QmIf4a5Hu<M"<)64\7n#g25!(ng3BB5b3''&Z3W;&N3B&uY4$#A^2CKRk
+0.ee43;unP<Uj,i[K!Zb\%&uZ]=bhk^VIY$_SX4.`5KX7aN;TJbKS5UcHjkacd:(fdaQatf@\gS
+55.2A5!M:.;Z'Jb;Z0PnBEDgYB)ZBAAH-0<@fKm9@/OC2?N"0u>lJ%.?Mn.3?t!LC@Kp=QA7]=a
+BDuQPBkhF"D/O60E,fo>r;ZRkpJh)i;jEZ8R$sM8StMdPUo(&hWiW>+Yd(OA[^WfY]Y2(q_Sa@4
+aN;TJc-F\`daZguf@em4gtglGiSrnYjlYail0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rUg)?s+14Ms*t~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrV0Rjp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[['R$AY-"b)W2HJfU7n0LS!o_2Q'@GoO,f0WM2;/as4[;%
+pSdhcrM]aqr42X7&@oBeR)+0%Ll@F^SZ&s1]tF?Vs186@!4r->rODm:l*g/jo!JD(r3lU4r3lX5
+oX=\,rj_p9!k>_Krj`!=osjk/q7?U:qmuX6r3u^7!4Vm9r42j=n[\\2pq-I:!kl=^rP/-Cr5&6H
+pVR!LrPefVr5\`Trl=oW"j+p0bKS3/blH&\cN)>kdJqYne,Rqsf)F;"f`'S"gA]k,g]610hZ)L5
+i;_d5iqqa9jSe0Ck3(sll2BlKlg4!;m0)kGnF5uIncSLUp@nR]s7u]k!W2f/rtt1Xbf@]@ahG']
+W2HD_T:VOBS=5n6QC+$<Q4fIIPEV,jPED&mP]D,-N)<Q,LA8=Q])K=fs8J,OOoN2i_#(nE_"thG
+C&VfGB)lQBAcH<@A,Tm:@K'[3?i47$?2\+-?iFF5@JsXP@q9+]AS,RfBP;*pCMRa'DJsK6EH6/C
+FoD@5^\kkJ^V9]\;O3]<R[]k>TV8-VVPgDnXKA\1ZEpsI\@K2`]t_A"_o9X:ai_fOcHsteeCE.%
+g"P39h;@/LioB+]k3(smlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`no_sFAJcGcMJ,~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrV0Rjp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[['R$AY-"b)W2HJfU7n0LS!o_2Q'@GoO,f0WM2:eomt:Lh
+s+C62q2l/KOcXdEB5DL-G^4dlNKF+"s,d2?rJpi;lAkk'!0$l9rf$l:r/UQ3r/CT6s,R)<rf$c7
+s,?l8s,I)=pl5?8q2k0.!0I2@plPE7r/gl>plP<6qN(iBP*1riq2kE7rK@)@rK@,Arf[;FqNClB
+rK@/Ds-*MIr072Gs-ESLrKdAJqO%;Nr0[MPs-`qWqjd\Wr1*YTrLWt[rLiqZ!huHapS7baq5"(g
+rhoaori,ptri#mtql9^uriQ1&!3cC)rNH7*!3uO/"gbSC[C3OB\,EiD]"G_j^;.P#_8?2h%)g-(
+`lH-@aiV]Lc-?75s3LYj#g^lEdF-IleCFQL"5);\g]$".h#ZBir89?hin)&QVOs9AP`h#]Jpi#n
+G'A.RFE;MDEcH,>E,]f:E,]]4D/X<2DJrT]ASOb,A7bb"qi(9/!0$o:ci<i[pMKtkr/^Q5s,m5B
+s,m5@s(VIGs(;=DrFQ">s'u":s'bn7qd98-nm23#r*TG2!+Gh8(h7)eAS#IdB4tsmC27U$D/O92
+EH-#@FERQ^r/gf:pPr15QC+)/S"6.DTqeE\Vl?\tXfnt7ZaI6O\[oGe^VI_(`Q$!@b0/&Td*^:k
+e^i@*g=tE=hr*JQj5f=akNM0qlg4!*mdKW6nac8Bo^qhLp@e7Zq#C0iqY^6ir;HTdrdk*#s8W+L~>
+JcC<$JcGQGo`"gfrqu]ks8)ckrV0Rjp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[['R$AY-"b)W2HJfU7n0LS!o_2Q'@GoO,f0WM2;.-pe_#f
+q+^<Qnl>fZ5stW<"[tpM8P)\N:\@H_:]=2b:]F8j;>sDh:\[c]:]*ud:]F8j:]=,e:]4&f:&[of
+:]4,e;?'Gq:Jak`:]4&g:\mid:&[i]:&[o[:]F/i:\dcV:[q9];><rf:]=)h:[M!U;?'Jm:]+&h
+:BF?g:\mid:\di`;>3ua;Z]io;>O2g;Z]io;>sJn;uTbl;ZKeq<<-(s<W?)*=&r@'<`W:'=SPtr
+=9D]0>$Lu0r*0)(r`oP0?2\++?N=L5@0'hIrFGk=rb)@IBP@BZ");UeD#A/LD?4Zqrc8!Zs)\co
+FEDYJG'8+SG^4R\H@(#;IK"[5Is,O6>#A-j8ju075<_4m3BT>a4#]2\3]R+!'K7p/3BK5\3B&rY
+4?=uI2*!QO1cP20pJq8or`0Z:ZF%$I[^NZT\[f>b^:q@t_86,fs2,Ge`lQ9Db0%oOc-=P[d*L%b
+dJhPseCE1(gAX;95Q<qA4o8+Y;,U<i;t<id;u^S2B`D]FB)Q<@AH-0<@fKm9@/F=/?LhD#?Mn10
+?iXX6@MiTcA7]=aB4kmkBkhF!Ci+'.E,fl<FED[(s7K=g;uoosr_l^\R$jD4SXuLJUSOcbWN*&%
+YHY==[C3TU]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYCWBi8N\UjQ5OekiqBum-O--n*fc9o()DE
+o_%nNp@nO\s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGQGo`"gfrqu]krqcZjrqHQhp@eLY;tT\Po'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe/Ma2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhUS4<OS=>q6QBdYsOH5B[MY#L$W;ELh
+W;NXpW;ERj\b`lM\[n*AI"@$1Od2H8Ye@]]]=PTL\c'&<\*:?m[ILX'[J[K5[JRB4[I^j)\,No6
+\,No;\b3K/\bWi:\biu7\GWi9[K*f6\G`u<](*?2](io8]E#YE^AbnB_#2%F_Y:tJ`;[aU`r*mT
+`r=$Ta99W-bKS3/blH&\cN)>kdJhSmdf\+Mf%0iPr7M&&ptG`%s4dV1rn[e8i8ESQqr7J4rT+4F
+kNM-ol2BlYlg4!*mI'H3nF5u=o(2JGpAOadq>U3kqu+A2)#NOJb/VH=`P/UVVP^)[St)7ra2,BT
+Q^@];%@<<DPEV,jPED#mQ'7@0Op7,2LQ.OeSboti]$C?SOS+b7^\knI^\ttE^\ttF^B87dC2*W[
+s(;=DrFQ">s'tt9s'bn7pg<]#q-X/0raGe8s'l%>racjWB4kmkBkhF!Ci+'-DfB]:F*)MIGBa&d
+pV?dCr4r?Is1V?tR@B_;StMdPUo(&hWiW>+Yd1UC[^`lZ]Y2(q_Sa@4aN;TJc-F\`daZguf@em4
+gtgiFi8WeXjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ms*t~>
+JcC<$JcGQGo`"gfrqu]krqcZjrqHQhp@eLY;tT\Po'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe/Ma2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhUS4<OS=>q6QBdYsOH5B[MY!A-KDgE!
+KDL]+OUR>/GDKjHDKBuJItN^ZO8b7?O8Y+:O6Vc)N<"q:NW"h9NW"n3NVnb6NW5%<NW4t7N<"q7
+NW5"=NVSV7O8=t*O8+h7O8P+<Onb%6Ont.BOckliOnk+7Oo:I@Oo:I@OoLUEPPUIBPPp[DPQ-jI
+PPg[EQ2[*JQi*0JQhm*KRJ`ESR@9V7qO@PVr1*VSrgs%[rLit[s.]1]s.oLf!2fanrM]aqs/Q$s
+!35psrN5q!ric@+s0;R/s0Vg6!4Mj8!4`$=$+da]^:q@t_84"f_Z7XS`W!pXaT9Q-rQYAfs3L\k
+s3L_l%+3MOeC<%"f%AX.gY;__(>[j)hr*DMi8N"oYGIhWQ]dGhKn4Z"rH8EgS!B.sF)u@#DuaqX
+E;segD/O60Ci=3.Ci"!.D.[U'F*3K?N;&>2N6_J"Dtn5MO8Y+:O84n:Oo:IBOoCFECMITurFl4D
+!+u1@s().>r*o\7ra>M.oj7H$s'Yh7raPn;!+c(?(1q2lBP;*pCMRa'DJjB3EH6,BFEVkPrr;qY
+qiCK3s,U$ER@B_;StMdPUo(&hWiW>+Yd1UC[^`lZ]Y2(q_Sa@4aN;TJc-F\`daZguf@em4gtgiF
+i8WeXjlYail07O#m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6NlrUg)?s+14Ms*t~>
+JcC<$JcGQGo`"gfrqu]krqcZjrqHQhp@eLY=7l+To'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe/Ma2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhUS4<OS=>q6QBdYsOH5B[MGI#E;#!lf
+;#O/e:%_9\:]=,[<XVD`6UF()6UjL89MP:XohPN_r_W>b!)WVkr_WJfq,$f]r(d2ds%r\js%`Ge
+rD*>ds%`Phr_WGg##J)k:f'q`rD*AgqG%#brClu\r_E)]s%WPiq+gKVnPK6_peUrdr_<Ghm83[W
+s%r\jrD<Mis%i\kqG.#cqG?ubpepod!`DlmqGR5is&/kor_ibps&Aem!*&ep!*9%us&KD,<``=&
+='&L+pfIGss&fA+>Q.h(>Pqb)>le29rEfA.s'Yh7!FfR<A,p3?B)QBDBk[K[!,DLK$>aQqD/=',
+DJsK6rc8!ZrH/$]!I&_dGlN'hH3&A?rI#Z7Ir]++=&D^d8Oc*55s7@m3BB/]:.n,I3]]8^r\t$@
+4#o;^r]('?3]f>#2[;<'3B9/_5XG9IpK%8n'="jJZEppF[C3QS\[oDd^:q@t_>M.Y_o9[<ai_`J
+bKS5UcMc&td*^:hdaZk#ff_J^55d_G55RM=;Z9Mn;Z'Jb;?Tp6C2.J]B`D]FB)Q<@AH-0;@fKm9
+@/++%?MRt.@/aU6@fKp<AH$-UAnPaiBPD3sCM[j*DJsK6EcZ>EG'A00s7'%f<;f`mR$jG6SXuLJ
+USOcbWN*&%YHY==[C3TU]"G_k^r"".`lQ9EbK\>ZdF-Opf%8U/gYCWAi8EVTjQ5Oekiq?tm-O--
+n*fc9o()DEo_%nNp@nO\s7u]kr;6KkrVcBfJcC<$s8RT~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb;tT\Qo()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnOHQSXZ(8Q^*euOcPN]MXoF#VYR.d
+W:m4b\c02?\I5*r]R,*\MNF$kV69g0s18$:rODm:l*g2ko!JD(qmQO4qmHL4oX=\,rj_d5s1&*>
+oXOb.q7?U:qmuX6r3u^7!4Vj8rOMs>n[\\2pq-I:!58BGrkJ6Dqn`0HpV[$Lrl+lVrQ"fTrl=oW
+!m/U.rlkAds3C8_s3UenrmLbo!S#[!f)OA"f`'S"gA]k,g]610h>lI4huMa4iqqa9jSe0Ck3(pk
+l2BoIlN$;Nm0)kGn*olHncSLUp%J@ZrqZZmr5/IWp#"3?b/D02\?;d/UnF<MSDME+^:1JTZ&=m4
+Pa%AqOc]O("-f+8P5^XJP)t]aO8b+?Nf]D&\bs#=]DK1`s8A&WOT:RBOo2ul_">D>_#1tHCBA6b
+C&VfGBE)TBAcH<@A,Kg8@JsU$?i=C4@JjR9@q9-LAJf#lB4tsmC27U$D/O60E,fl<F*)PJGBeE3
+s6mc'^J)A0S"-(ATV8-VVPgDnXKA\1ZEpsI\@K2`]t_A"_o9X:ai_fOcHsteeCE.%g"P39h;7)J
+ioB+]k3(sml0I^&mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrU^#>s+11Ms*t~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb;tT\Qo()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnOHQSXZ(8Q^*euOcPN]MXm;.KE$Pt
+KD1K,OoLLPH?P'VBlA!7G^Y."O,s:%s,[,=qiC$&rf$o:rf-l8s,Hu;pPo*0rf-o;rf-r:qi(T7
+r/L`:s,Hi7s,[#<m>q%(r/^`:rfQu;q2tN8"Hek1OcfF#qN:`>r/pr@r/q#Bs-*;Bs-*ADs-*JI
+s-*DGrg!JKrKmGJr0R8Is-`eP"IY^JR[a2E!1j%XqORVWr1Eq\pn7b`US@LXs.oLfs/,dnri#gq
+!36!ss/Q!t!3H1%riQ7)riZ4's0)L.riu^6['[6K[f3c9\Gs,>\cf[Z^;%J__#V@O_u@U[`lH-@
+ai_cLrQP>frm*mWcd:"ad*U1gdaZgtf%8R-g=tB;gtgfChr!AMgrHn(Tq%O8OH#'LJ:;ijGBS/)
+R$<\kM26n,DfBZ6E,TW3D>nGcD/X</D/=*.Ci4*+Ci+$,Df5Q5pl593bl@NXq/61mqMtK7r/go?
+rK@/BrfI+p!buF`rb2=Es(;4@s().>r*oY6rF##"rF#Y6r*f_;A7Y[N(hRDnBP;*pCMRa'DJjB3
+EH-#?FEMbNG^98frfHl8qMn71R@B_<StMdPUo(&hWiW>+Yd1UC[^`lZ]Y2(q_Sa@4aN;TJc-F\`
+daZguf@em4gtgiFi8WeXjlYail07O#m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVc?eJcC<$
+!<7Q~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrqQNf!;?Eb;tT\Qo()>?n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnOHQSXZ(8Q^*euOcPN]MZ-BO;#!lg
+:f$dZqbHo^!)E)c$U-mE6U4"+7n-'A:ARcY:B+,h;#!id;#O8j;#F,a;"mc`:B"&g;#X8j:A[ic
+:B+&f:B"&g;#4#m:esk`:f%$bs%iGc!)<DcpeCc`o1oE_:J^d]nk\dPs&&Pf!)NSh!)MrXr)*Gi
+s%iSis%iYk!)NDcs%iGeqGHubqGRAlr_`PjqbmPo;,R<js&8qspf$ics&K,$r)Wi!!*K2$!*9#!
+r`B/'qc`o%r*95,!F/q/?N+:7?=.&I@/aU7@f9j9B)ZKDB`MiGB`MoICBSHjD/=%fD?=csEW1"Y
+F8U.[FoHUbGlDsjH@($erd?&;DIcsP:ejYT7RTO-3^#Pc4#p,08k29:69mmt2E*ZW2``rYr]1!?%
+llU.3''#[3B9,\3]]>c55nRW<rQ,!Yl:m=ZEppF[C3QS]"5Pf^:q@t_>V4Q_o0R9rlP2_"j>-7c
+-FW6cNqnFd*^=lf%8XS4o[_E5Q<qH4o&"R;?'Pn;t<icCBA6bC&VfGBE)TBAcH<@A,Kg8@JsU$?
+i=C4@JjR9@q9-LAJf#lB4tsmC27U$D/O60E,fl<F*)PJGBeE3s6NZWR@B_<StMdPUo(&hWiW>+Y
+d1UC[^`lZ]Y2(q_Sa@4aN;TJc-F\`daZguf@em4gtgiFi8WeXjlYail07O#m-X60n*ol<o(2JFr
+q-?dp\4[^s7u]kr;6KkrVc?eJcC<$!<7Q~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrV-Hgp@eLY;Y9SOo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QBdYsOH,9Xr7^ktor%ef
+!3,srq5O%t&\>NaUm/N<IY<Q>PFA;N]=YZL\c'&<\*:?n[ILX'[JRB4[JI<6[C3NQpU:"/rj_g6
+rj`!=osjh.q7?U:qmuX6r3u^7!4Vj8rOMs>s1&-@oXY"5pq-I:!58BGrkJ3Cr5&6Hpr!-Mrl+lV
+r5\`Trl=oW"j+p1bKS3/blH&\cN)>kdJqYne,Rqsf)F;!f`0Y"gA]k,h#?11huDX7iVVX2j8J'C
+k3(pkl0803$L@'FmHs?0n*oi:rpg0_o_/%Yp]1-hq>pNn`;_4Qg<[j\_o99qX/W"kT:MLAeAoA:
+[Bd'$Lr-mVd^5*sOHP`fP`q@2Oq<h?OHGTaO,]6[NfK6bPEqO5])K>?]$(-OOSb1?OoUX>^\tt@
+^\knG^]/-LC]A/LC&VfGBE)TBAcH<?A,Ba6@JXC1?i"1/@JjU7A,g*=AK,5oB4tsmC2.O"Ci+'-
+DfB]:F*)MHGB\:XH@,Ykm_Jk;8t2?BT:hmQUo(&hWiW>+Yd1UC[^WfY]Y2(q_Sa@4aN2NIc-F\`
+daZdtf@\g3gtgiFi8WeXjlYail07O#m-X60n*ol<o(2JFrq-?dp\4[^s7u]kr;6KkrVc?eJcC<$
+!<7Q~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrV-Hgp@eLY<:oeQo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QBdYsOH,9XSXoABo7Qsm
+q1J@%%Zuj8HZb'SC2S$7H%(C%rfI/@r/UZ8lAkb$r/CZ8rf6]3r/CW7rf6u;!0$c6$&jk'NfB$Y
+NfB%oNrP1:ORA2)OSb+9OT(C;OSP%8O91Q-P5^U>OSY+<P5LI@P5LIBP5gaBP5gaDP5gaGPlHsF
+PlI$JQMm0JQMd*GR/`TPQiNQRRK/iLSGSlUT)>5[T_P2^U8+IVU]7.dV#[ClVu<RoW;rsrW;rsq
+WrT7#Xo>I'YPt^'Y6(r5Z2V$3Za@*I[f!W7\c98@]`5\K^VI\%_Z%FQ`;[^[`lH-@ai_g)bm2P?
+cd:"bd*M^<s3_/$e^`7%f@\dUg]-(/h>c@Xi7GiQVk0<CPE1ZXJpr,pG'/"OS<f=uN/3:4DN9aJ
+R=oHoD>e>VD/O0+D/=(gD?OfmCi4(gDZalsE,bT3s,>/$qJZ4JrfI/@pl>95rK.&ArK@,A!g%57
+rbMOKs(VIGs(D@DrFQ">raYh7rF,P1rEoD/rF,V5s'u(>rad$\B4kmkBkhBuCM[j*DJsK6EcZ>E
+Fa&%SH?sr;s8J,OO8Y)2S"-(BTV8-VVPgDnXKA\1ZEpsI\%0)_]t_A"_o9X:aND]NcHsteeC<($
+f\5*8h;7)JioB+]k3(sml0I^&mI'H3nF?)?oCMVRo`Fj]p\ssfq>^<hqu6NlrU^#>s+11Ms*t~>
+JcC<$JcGNFo`"gfrqu]ks8)ckrV-Hgp@eLY;Y9SOo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgtLH6
+f@AC"dF$:cbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcVhU7n3NS=>q6QBdYsOH,9Xr_EMjpe_)h
+:J^RVr(d&`s&\hns$6rY5sn%/7Rp$C:&IfY:B+,h;#*oe;#F2i;#F,b;"d]_:B"&g;#X5j:ARcb
+:B+&f:B+,g;#4#m:esk`:f%$bs%iGc!)<GdpJ(Z_o1oB^:\RWU:B=9hnk]<`peUrdr_<GhlqmUW
+r_WVjr(mJk:f's`:B+,c;#4&`;Yj>l;ZBVj;Z'Gp;Gg<i;ZB\q<;BGm<;KSp<rH#!<`f3"s&]5&
+r`9)#r)`l"s&o8'qciu'r`oM/r*KD1!+,Y3s'Yh7!FfR;AH$3>BE;g\rFu7H"`/$lD/=%fD?4]r
+rc8!Zr,hs]rc]*&G^4R\H@($eI<KC6>#S-h8OZ'95lNn\3BB2\9hIlE6pj:/5t".47mAsn3;kiC
+4$#D]2`WlX3rV,G3'0/`4[)"l4?rUAs&Bl=Yck:8Z*CU@['[9N\@K2_]Y2%n^VI\b_?Ror`Q-'A
+aSs9bb0/#Qc-H=7rm1eqe(*%&r&k-G4[)(.56*nA;Z'Dj;?0Ye;ZCS4C]A/LC&VfGBE)TBAcH<?
+A,Ba6@JXC1?i"1/@JjU7A,g*=AK,5oB4tsmC2.O"Ci+'-DfB]:F*)MHGB\:XH@,Yklr-NGS=Z@G
+TqeE\Vl?\tXfnt7ZaI6N\[oGe^VI_(`Q$!?b0/&Td*^:keCN7(g=tE=hVd>Oj5f=akNM0plg4!*
+mdKW6nac8BoCW%T!quB_rqQNhs8)Zjrqu`noDX=@Jc>`MJ,~>
+JcC<$JcGNFoD\afrVZTjs8)ckrqQNf!;?Eb!VH!_nkJZDn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hkUS4?PSXZ(8Q^*euOcPK\p"KH!rn7FM
+VPa'bqPa=ko!o4>Um&?8J:WN:P*_oE](`c6\,a#%[e-uu[/RK0[K*`0[K*f2[f!W6\GE]6\Gs,4
+\GEc2])T><])&r7\,Wl:\,3]6\c982\c989]DT>A^&PhF^\GVB_>;%D_uI[R`W*sUa8EsVa8<p]
+ai_cLbfp%1!7(2^s3UenrmLbo"4YlPf)F;!f`'S"gA]k,g]610h>lI4huMa4iqqa9jSn9@k5XTG
+kiq@2lMp2Mm/QGUmdKW6nG_t\oCV_LrV6Bg!W2f7s$?DBf#l%Q_o00jXJ_tkT:;=?dDil/['Hoq
+K#>p\af1&kXH6qSPE_/lP*(ojOcYWaO,]0ZNfK6cPEhDrWg/j\rk&0@b5_@#qiLlAo=k:@oY:=>
+s1eSO!c;airbMOK!,;CFs(D@Dr+5n=raYb5nmVB(raYt=ral+As(D@Fs(N?cCMRa'DJjB3EH-#?
+FEMbNGBnL\I!pJDs6RNhS=Z@GTqeE\Vl?\tXfnt7ZaI6N\[oGe^VI_(`Q$!?b0/&TcdC1jeCN7(
+g=tE=hVd>Oj5]7`k32'olKmm)mdKW6nc&([oCW%T!quB_rqQNhs8)ZjrVZWmo_sFAJc>`MJ,~>
+JcC<$JcGNFoD\afrVZTjs8)ckrqQNf!;?Eb!VH!_nk\fFn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hkUS4?PSXZ(8Q^*euOcPK\SXoAB!1ie8
+pk&ErnrOEDHuk$TBl%^2G^Y1!Nf]<_rJp`8r/Lc<nW*L+qi(Q7rf6]3rJ^`8rf6r:!0$Z3#*+\&
+NfK*Yq2YK9qN1-+plPB6qiLf>plP<6qN(c@P*5g,q2kH8rK@)@rK@)@s-!DGqNClBr0%)Ds-3PI
+r072Grg*MLrKdAJqO%;Nr0[MPs-`qWqO@PVr1*YTrLWqZrLiqZ!huHapS7baqPF4hrhoaori#mt
+rMfgsr2Th!rN6+&!3cC)rNH7*s0;R/s0Vg6!4Mj8$+ROV]"5Pf^;%G^_&^D1_o0L4`Q#s=aN;TI
+bK\;Uc-=P[cd:"bd*L(crmD,%e^`7&f\,!5g]#tch;7#1\uqj!R[0/!N.le1I<TgUG'04;OGo$P
+KlV$mQ^EnaC3b/A8T&B^Ci!s)D/=',DJf>f$>sd"DK'Q8E.DqJqi(T7b5VHZqJZ:Ls,m;Brf?f6
+r/^l>rfR5Dr/q"s!c;airbMOK!,;CFs(D@Dr+5n=raYb5nmVB(raYt=ral+As(D@Fs(N?cCMRa'
+DJjB3EH-#?FEMbNGBnL\I!pJDs8J,KO$oM0T:hmQUo(&hWiW>+Yd1UC[^WfY]Y2(q_Sa@4aN2NI
+c-FY_daZdtf@\g3gtgiFi8WeWjlY^hl07L"m-X60n*olHncA@Srq-?dp\4[^s7u]kr;6HjrVcBf
+JcC<$!<7Q~>
+JcC<$JcGNFoD\afrVZTjs8)ckrqQNf!;?Eb!VH!_nkJZDn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hkUS4?PSXZ(8Q^*euOcPK\r_EMjpe_#f
+r_N&Yr(d/cr)`Sms$-lW5sn".7Rp!A:&[rZ:B+,i;#!fd;#F2h;#O2b;"d]_:B+,h;#O/i:ARcb
+:B+&f:B+,g;#=,i:]O;j:]O;i:B+,d:B+&f9_V9]:@h6^:/CUZo2"jP!)`Mf!)NShs%i#YqbdAi
+s%iPh"&D`i:\dcb:\moa;>3ua;ZK_p;>X8h;u]bq;>sJn;u]hm;ZKen<<-(u<V]\q<rcA$<rc;!
+=8l>%=o;J$>Pqb(?2\+0?iOI4?iFI5@K0g8A-6CTAnV!Srb2@IrbMFJ"`8-pDfB^qErL,CFE;PG
+F`hkOG^4RZH$O^^I!]gB>ut!"9h7`@69dRq4?>M`3D2q66ps@+6U*t.7RB3t3&WH43'0/^2`L[p
+rAb<G3BB8c4Zkkj5X7q-6Mje+<N`L.Yck77Z*L^C['mEP\[oDc]tM.o^VI\&_Sa=2a8O'baiMTH
+bKS2TcMc)hci_\De^jU\!'^BFs#pEIrDWGgrDE&^s)%mTCi')ds(VOJrFl4Ds(;1?s()+=q-ro'
+qI9G6s()+?s(;:Ds(MFH)/<r&Ci+'-DfB]9EcZ>FG'A.UH?sseIfKH7;ad.IT:hmQUo(&hWiW>+
+Yd1UC[^WfY]Y2(q_Sa@4aN2NIc-FY_daZdtf@\g3gtgiFi8WeWjlY^hl07L"m-X60n*olHncA@S
+rq-?dp\4[^s7u]kr;6HjrVcBfJcC<$!<7Q~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrV0Igp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdVqO,f1fgA[rJVY6qa
+W;iji\c92>[g]Z_Y^1_JLlRUaTW#<p\brr;\+[64\$i`QpU:"-!4;X2n[/;'qR-C3ppU43pU:"/
+rj_g6rj`!=osjk/pq$L9qmuX6r3u^7!4Vj8rOMs>n[\\2pq-I:s1SHHrP/-Cr5&6Hpr!-MrPefV
+r5\]Ss2Y#Xs2b;abPo`bblH&[cN;J@dJhSmdfItKrmq,$qq1r%ptGc&s4dV1rnd\4s53t;ioBsr
+qW%P9s5jFHkih:0l3ckDm-X3.mdKW6nc&(]oCV_MrqHKhrqZZmrlG*pnD;O6aMu!.\$2j0VP0WO
+R[_L9]<nlKXbjTpda,4jOfs+U>\\[\H%_';P)k]cNfK1uNXq89PGkI[X-Am:Q^ODV]=Q)`qN1W;
+pqQjCotLL@r4i0F!P`RPDZ=PRD#J,NC2%D\B`D`FB)H6>AGp$(@fBm:AGp*>AcQKCB`DcLC27U$
+D>nDdDfKc;F*)MHG'A1VH@($fIXltKm(bu[T:qsRUo(&hWiW>+Yd1UC[^WfY]Y2(q_Sa@4a2lEH
+c-FY_daZdtf@\g2gtgiFi8WeWjlY^hl07L!m-X60n*olHncA@Srq-?dp\4[^s7uZjr;6KkrVcBf
+JcC<$!<7Q~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrV0Oip@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdVqO,f0iSb&BOSbRj1
+K)C8mOT1@ONF@ENBkqX1G^P*sNKB5"Nr"h7NW>.;NW>.8Nr+h8N!>3!N/`gWNqJD1N;eh9Nr=q;
+N;/D4NW>(<NrP+8NrP19OReG4OT(=9OSk19OT(C;OSP%8O91Q-P5^U>OSY+<P5LI@P5LIBP5gaB
+P5gaDP5gaFPQ6pFPl?sIQMm0KQMd*GR/`TOQirhGR[]f>SGJfUT)5/ZT_P2^U8+IVUB%+cV#[Cl
+Vu<RoW;rsrW;rsqWrT7#Xno4!Y6(r5Z2V$4Za@*I[C6%C*OrYj]">Yi^V@S#_8=(,_o0O5`l?'?
+aNDZKbK\91c2Q#nd*L(ccd:&<dRr$>e^rF*g=k<9gt^`<_R6;6S!TG%NJW@?I=-6]G'.nmP)bKW
+L4XB&LRXZ`H#S7?=[c(k6<dr5D/3s*DJa9-Chmg'Df0H3If=j$EcZ>FG'EqFaSu6Xpi$1MrK7)@
+s,Zo7r/^i=s,m>ErK.(urbhaQ!,VUL!buF`rFl4Ds(;1?rabt;lXKj'rabt=s(27Drb2=G"DV^f
+Ci0/h'5ql1EcZ>EF`qtRH$XgbI=?]ss8J,KO$fM2TqS6WVPgDnXKA\1ZEpsI\%0)_]t_A"_o9X9
+aND]NcHjndeC<($f\5'7h;7)JioB(\k2tmll0@U$mI'H3nF?MK!V>s_o`Fj]p\ssfq>U6gqu6Nl
+rUg)?s+11Ms*t~>
+JcC<$JcGKEo`"gfrqu]ks8)ckrV0Igp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdVqO,f1u:]F8e;#jGk
+:[UsT:B+,c=8Z+u<=Dhj6pX+,6qBd<8P;eJ:&n)h;#F,h:]aEh;#F2h;#O2c;"[W]:&n)h;#O/i
+:ARcb:&n#f:B"&g;#4&h:]sQj:esmc:B+,d:B+&f9_V9]:@h6^:/CUZo2"jP!)`Mf!)NShs%i#Y
+qbdAis%iPh"A_ij:J^g^r_NAeq,-obq,78kr_`PjqbmPo;,R<jr_rhrq,@2k!*8qrqH!Vt!*K2$
+!*9#!r`K2'r*&u%r*92+r*KD1s'G_4s'Yk8s'bt<rFGq?s(D4Bs(MIJr+l7I"`8-pDfKdrErU1]
+FE@G'"Eem2GBj%2)gZXB@Tuf/9hS&G6pX%"4Zb_c3&jN$7RKO.5Q4"g7moO#3&r]@*[WKk0/PUH
+3&`iY3BB,Z3]T;#4UFeR8P2986UO:2r`0-&Xfei+Y8jdOZ*L^C[C3NR]"5Md]tV4q^VI\&_Sa=3
+a2l="a9Kc/bKS2TcMl,od*^7he(*(C4o/+O;ZBVa;?1Y7DZ=PRD#J,NC2%D\B`D`FB)H6>AGp$(
+@fBm:AGp*>AcQKCB`DcLC27U$D>nDdDfKc;F*)MHG'A1VH@($fIXltKlr-9CT:qsRUo(&hWiW>+
+Yd1UC[^WfY]Y2(q_Sa@4a2lEHc-FY_daZdtf@\g2gtgiFi8WeWjlY^hl07L!m-X60n*olHncA@S
+rq-?dp\4[^s7uZjr;6KkrVcBfJcC<$!<7Q~>
+JcC<$JcGKEo`"gfrqu]krqZWjrV-Hgp@eLY;=sJNo'u5=n*fZ1m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi)_iUS4?PSXZ(8Q^*btOH5Cig&TgqVtd4d
+\c'#L\%&rUZu;dfI"I06OdM`=Zhh61\,a#0[K*`0[f!N5[/@?$[/RK&[f<i3[f!W5\GE]6\Gs,4
+\GEc3])K8;])&r7\,Wl:\,3]6\c982\c989]DT>A^&PhF^\GVB_>;%D_u@UR`W*sUa8<mUa8<pZ
+ai_g+bl,cdcL]?^d/MGmdf%YpeGe%ufDO;$g%a;#gBQHhh;7#Ghu;R0iqqa9jSn9@k5XTGkiq@2
+l2p;<m/HAUmdKW6nF?MK!qZ'XrV6Bg!rMrqbPt--kLRhsa25[)Z)ah$UnF6IRa]9i\[AZFPD6s!
+bfHZ:S=uEXEck-%JVo7[:kaX^P*VZ0U7b=\;,h8.WiD2GPa@`)SXuUMa8c1#qiLf>s1nBDrkA-A
+s1\EGrP8GP!,qgR!c;airG)ILBkdNZrb)7Cqdo_:qd]G2qd]V9r+5n?s(D=E+DGS*CMRa&D/O60
+E,fl<F*)PJGB\:XH@('gIXls#K7rX-8"ZKKUSOcbWN*&%YHY==['mHS]"G_k^r"".`Q-'BbK\>Y
+dF-Lnf%8R.g>(N@hr*JRj5oFckNV6rlg4!+n*fc8nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTcrdk*#
+s*t~>
+JcC<$JcGKEo`"gfrqu]krqZWjrV-Hgp@eLY;tT\Po'u5=n*fZ1m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi)_iUS4?PSXZ(8Q^*btOH5BlSb&BOSH>=6
+KCXWhKCt<<O-#H_NF@9IBPVU0G^FspN0!ptqN(T8s,Z]1r/LZ6"cJ=uNK&tjNW"h8NW+t0NW5"=
+NW+t<NV\\8O84n.NrY:@O8+h7O8=t;Onb%6Ont.@Ockn,Onk+8Oo:I@Oo:I@OoLUEPPUIAPPp[E
+PQ$gHPPpaFQ2[*JQi*0JQhd!KRJW?SR@9V6S+W<JSc,/XTDkMYU&C_[U]7.dV>mFlVuEXjWW0!r
+WrT7"Xo#:"YQ(j,Z2V$3Za@*I[f*ZS\@K/]]"G_k^VI\%_SX4.`5KX6`lH-@ai_fMrlkAds3LPg
+"jtcHe'uqIf)aOXrnC'#bdssPS=,b,OGnpGJ:2fhFEM_pP`C`[L5'hhOHu/nI;3nIECEi.6s3r2
+Ak,@%Anu:(F`r"S7nH3E>(;'RE,fo?Fa&%TH@*^4s).aQ!,hdSs-!>Cr/^o>pQ#04r/gl>s)7sV
+rGD[RCi'&c!buF`rFl1Cs(;.>rFGe8q-s52rabq<s(;:Drb*KiC2.O"Ci!s+DJsK6EH6,BF`qtQ
+G^=[_I=6QpJ:`E,OHApl8"ZKKUSOcbWN*&%YHY==['mHS]"G_k^r"".`Q-'BbK\>YdF-Lnf%8R.
+g>(N@hr*JRj5oFckNV6rlg4!+n*fc8nac8Bo`"O`p&Ojcq#C0iqY^6ir;HTcrdk*#s*t~>
+JcC<$JcGKEo`"gfrqu]krqZWjrV-Hgp@eLY;=sJNo'u5=n*fZ1m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi)_iUS4?PSXZ(8Q^*btOH5D":B45e;#jGj
+:[h*R:A7if<X;])5=%P#6UO?B7fc4VnkK6^:f.$brD<AgrD<Jhq,$ub!)WMfqb@,er_W;ar([5d
+r_EGgr_WGg"].uj:f'sc:B+,d:B+&f9__?]:@h6^:/CUZo2"jP!)`Mf!)NShs%i#YqbdAis%iPh
+!)NSj!)NDcs%iGeqGHubqG[Dlr_`Pjr)3Yp;,R9is&8qsq,78mqGdMrrDiYoqcEeurE&r"s&o8'
+r*0)(r*B8-s'Pe4s'Pb5s'Yq;A,Tp?AS,Rfqe5tC%VfcpC2@[$Ci!s*DJjE5rc7pXrcJ0`s*"Hf
+rHUbKAR/>8:/+>N6:3t#4$>Vc3&jT&7mo[25XRk+77BI'3B/iL*[rTl/2B+D2DR-K3]fMi5X[t!
+2`Nob91hf?5sds<6jH.N7]WVlXfhW+'<naHZEpsH[^WfY]">Vg^:q@t_>_:Q_o9Xp`sTo.aN;QH
+bKS2TcMl,nd*^:ie(44Us&A_kku.P#!,qgR!c;airG)ILBkdNZrb)7Cqdo_:qd]G2qd]V9r+5n?
+s(D=E+DGS*CMRa&D/O60E,fl<F*)PJGB\:XH@('gIXls#K7rVj8"ZKKUSOcbWN*&%YHY==['mHS
+]"G_k^r"".`Q-'BbK\>YdF-Lnf%8R.g>(N@hr*JRj5oFckNV6rlg4!+n*fc8nac8Bo`"O`p&Ojc
+q#C0iqY^6ir;HTcrdk*#s*t~>
+JcC<$JcGKEoD\^erqu]ks8)ckrqQNf!;?Eb;=sJOo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt):<R$Eo!OcS2agAfjmW;`^p
+W;a:,\bEW6[g]Z]T:1+WLPq7ZSYr^h\c'&<\+d<6\$i`Q[J73.[K!W3[ILX&[ICX)\+mE0\,No6
+\,Ef:\b*E.\bWi9\bs&7\GWi9[K*f6\G`u<](*?2](io8]`5\F^AYhA_#2%F_Y:tJ`;[aT`r3sT
+`r=$Ua9B].bKJ,RrQP>fo?[H`s3^horR1brrmq)#qq1r%ptGc&s4d\3hVS7hs53n9qVqD4!9F+?
+#3P+3kih9qrp'OMrTsaUn*fc8rpg0_o_%tWq#C0lqu$H;s%)\=dE9MK^r3[dX/;hjSsu4<cbd?%
+ZEgWmKWiVE[\&\cIs#%3Int?ENCm*#KSknWS=QCH:f:.j<L0VaWf`O2R$aA7Sti!us8J)WO8tF?
+_"YVB^AG\E^A5MI^i=@5Df>Vms)%dPrbMOKs(VCEs(D=CqITM6rF>Y6qdoe>s(D:D,ACn-CMRa&
+D/O60E,fl<F*)MHG'A1VH?sseI=HcuJqJ`2L@2kWTh;)UVPgDnXKA\1ZEppH\%0)_]t_A"_o0O7
+aND]NcHjnde'ut#f\5'7h;7&IiT&tZk2tjkl0@U$m-X60n*ol<o(2MGp%A%Pp\jmeq>^<hqu6Nl
+rU^#>s+13#~>
+JcC<$JcGKEoD\^erqu]ks8)ckrqQNf!;?Eb;tT\Qo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt):<R$Eo!OcQ$'Sb&BOSc>5C
+KCb3)Nsq"UH?s4>E,g&IItN^YNr+n9NrG+;NW>.8Nr+h8N;nh9N;nk;NrG"<N;/D3N;\b9Nq/20
+NW>(<NW>(7NrP1:OR\A3OT(=9OSk19OT1I;OSP%8O91Q-P5^U>OSY+;P5UO@P5UOCP5^[BP5^[D
+P5^[FPlHsFPlI$IQN!6KQMd*GR/`TPQiNQRRK/iRS,f,XSGSlUT)>5[T_G,]U8+IVUB%+cV#[Ck
+VuEXpW;rsrW;rsqWrT7"Xo#:"YQ(j,Z2_*5Za@*I[C6%C&@f9]]"5Sh^VIY$_8=(,`5MYo"NJL'
+aNFM*rlkDe!m]-<rQkVld*_j@s3sorf@S[.g=t2q[]5shQ^3_oM2$V2I!KjWG''+7Nf/[JK5tg_
+QB[&JE.;=t7SdAW>@_G687Q7GDK0fCG^2eN7nl["J:N2iE,p&DGBe@YHc?$aDZ+JSDK#E8s,m2?
+s,Zu9r/^c;rK7,"!cW'rrbhaQs(q[Ms(_RJr+Q+Crau"<qIKP7q.0A6s(;:DrFdHjC2.O"Ci!s+
+DJsK6EH6,BFEMbNG^4U]I!pEmJ:W<)KSG5CmuRLB8u&2ZVl?\tXfnt7Za@0M\[oGe^VI_(`5Td<
+b0/&TcdC1ieCN7(g=k?<hV[8Mj5]4_k3)!nlKdg'mI'H3nF?)?oCV\Jp%J+RrV6Egs8)Zjrqu`n
+oDX=@JcC6~>
+JcC<$JcGKEoD\^erqu]ks8)ckrqQNf!;?Eb;"XANo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt):<R$Eo!OcTE9!)WJg!)WPg
+k>)"WpK.>p$WTAV6UF"*7Rp!?9(GaV;#F,f;#=,g;#X8e:]X?gr(d;hqG6u`!`)WhohYK\!_lEb
+r_NJhqG@Dm:JXe`:]*rf:\dcc:&[i]:&[oZ:B=3dpJ1<Un5'*^peUrdr_EJhm83[Ws%r\jrD<Mi
+s%i\kq+gobqG@#cpJUfc!)ienqbm>js&&horDNVn!*&_lqGdSt<EB*!q,[Ao!*9&"rE0)&r*&u%
+r*9/*rE]J2ra,V3s'Yk8s'bt<rF?"AAnPcUBF&<cBPD0qC27S`C]8,RD/O61EH1tur,_jZs)q=b
+G^4RXBjt=J;bKbR7R]X.5!;%j3&`ch84Q!75sRe(6UX:*3&`fP-6OTg/hf.B0f1[D3BKAf5sdpu
+2`X&b7nZEF5=7b)77BU57Ra;VX/rH%Y5b[=Yd(I=['d<N\@K2^]=bhk^;%J"rk];d`Q#p<`lH-@
+aiV]Kbg+M[d*Vd>s3^qsebD<)<;0>`;Z9Vp;Z9Ms;K6\qDf>Vms)%dPrbMOKs(VCEs(D=CqITM6
+rF>Y6qdoe>s(D:D,ACn-CMRa&D/O60E,fl<F*)MHG'A1VH?sseI=HcuJqJ`2L@/"?Th;)UVPgDn
+XKA\1ZEppH\%0)_]t_A"_o0O7aND]NcHjnde'ut#f\5'7h;7&IiT&tZk2tjkl0@U$m-X60n*ol<
+o(2MGp%A%Pp\jmeq>^<hqu6NlrU^#>s+13#~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrV-Hgp@eLY:\=8Lo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb(-WMcVhUS4?PSXZ(8QBdYsOSd`'gAfh+f^Pj8
+VZ<[g\Gs#J[^W\]R^[WpLPq:ZSYWIf\bru;[fNqHpU:+0pU:"-s0Va4s0Md4o<eJ(n[AG+qR-F6
+[f!W6\GE]6\Gs,3\GEc3])B2<](rl6\,Wl:\,*W6\c982\c989]DT>A^&PhF^\>PB_>;%C_uI[S
+`W!mTa8<mVa8<p]ai_cLbfp%1!7(2^s3UenrmLbo!S#[!f)OA!f`0Y"gA]h/gtgfCrnmb6!9*b5
+r8[h<roF.BroX@Hl0834!UK+NmJlVSmfDqJrpg0_o_%tXp]^Kiqu$Bkci6T7lJ'S(a25[)Z`U7(
+V4X?LR[_I7\[8TFXbjj6aiCBOVQ,_aEck'!Jr32u:kFI`PFJ):T28E_<E,fpWi;t^Q'[f'S=cFK
+Tu@!0O8P(>^\GV@^\bbE^\tnB^Ar<REW:"XDuOYSD?"GOC]A/KC&M`EBDlH,Ac?<ABDlNDB`MoI
+C]A2mD/O60E,]f:EcZ>FG'A.TH$XgbI=?ZrJV&N-L5(M@n%_DeUSOcbWN*&%YHY==['mHS]"G_k
+^r!t,`Q-'BbKS8XdF$Fme^rI,g>(N@hr*JQj5f@bkNM0qlg4!*mdKW6nac8Bo^r.U!quB_rqQNh
+s8)Wirqu`noDX=@K)^?~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrV-Hgp@eLY:\=8Lo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb(-WMcVhUS4?PSXZ(8QBdYsORSe?Sc5/BKCt?+
+Nt.22O'd*jB5;F)GBnXiM#NG3O8b1<O7SD.NW+n:MuSb7N<5&uN;/D3N;\b9Nq88,NW>(7NrP1:
+OR\A3OT(=9OSk19OT1I;OSP%8O91Q-P5^U>OSY+;P5UO@P5UOCP5^[BP5^[DP5^[FPlHsFPlI$I
+QN!6KQMd*GR/`TPR/`TSRK/iLSGSlUT)5/ZT_P2_U8+HWpS7baqPF4hrhoaori#mtrMfgsr2Th!
+rN5t"r3$1+Z*F;6"LGJB[C,qA#.V4S]">YirkJWP_SX4i`;dgV`r='XbQ#fcc2Q&fciVP@dJhSo
+e.pQdf@ej(]<S0'R[B5!N/*%8I=$-[rcC&aOH#*OKn=6&OctoUGC"OK79!>U=^l#184I0'D/aT?
+G^2eM7nl^,J:W9%E,]f<G'J:WH@*U1rGMUQs)%h!plbQ:s,Zu9r/^c;rfI2$rc.sWs)7mSs)%dP
+rbMOKrb;=Erb)1Al"0j+s(D:Ds(MIJrbMOM+)Pn5DfBZ8EH6,BF`qtQG^4U^I!pHnJ:W<)KSG5;
+M=6KpU8+N]Vl?\tXfnt7Za@0M\[oGe^VI_'`5Td<b0/#ScdC.heCE1'g"P6;hV[8MioB+^k3(sm
+lKdg'mI'H3nF?)?oCV\So`Fj]p\ssfq>^<gqu6NlrU^#>s+:9$~>
+JcC<$JcGHDo`"gfrqu]ks8)ckrV-Hgp@eLY:\=8Lo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb(-WMcVhUS4?PSXZ(8QBdYsOShlS;#X;l;#O8e
+:ZtOR:\.Ze<XV,X6pa1-77Tj=8PT+X!)<>crD<DfrD<Dhr)!AgqG@/e"AV`g:f.!arD!Ji:/=\_
+ohYBYr_NJhqG@Dm:JXe`:]4&g:\dcc:&[i]:&[oZ:B=3dpJ1<Uk"l%Rr_EJhm83[Ws%r\jrD<Mi
+s%i\kq+gobqG@#cpJUfc!)ibmr)3Dj!`DlmrDNYos&Aemr)Ebu<W6%u<V]\l<rc;#=8Z/#=o2D%
+>6.u5r*9/*q-O&-s'Yk8!b,YLrF?%BB4kmlr+H7JC2.O!CAr#JC^"ZnDK'T8rc7sYrcJ-_s*.mi
+AmSS;9h\/K6ps7)4?P\e3]K)i7n#d25WqG%6UX."4ZG;P*@WHj/M]4<2)@-M3]oVl6:3^k3'KN"
+91_]I5sn"+6q'L377O2RWiN5&Xfee.Y-5%5Z*CXC[C3RD])TAd]Y2%n^VI\&_Sa:0`Q#p<a2lBF
+bKJ,ScHjhad*^4fdaHV>4TSM^q,I)epJUofr_WZ9rc.sWs)7mSs)%dPrbMOKrb;=Erb)1Al"0j+
+s(D:Ds(MIJrbMOM+)Pn5DfBZ8EH6,BF`qtQG^4U^I!pHnJ:W<)KSG5;M=4A4U8+N]Vl?\tXfnt7
+Za@0M\[oGe^VI_'`5Td<b0/#ScdC.heCE1'g"P6;hV[8MioB+^k3(smlKdg'mI'H3nF?)?oCV\S
+o`Fj]p\ssfq>^<gqu6NlrU^#>s+:9$~>
+JcC<$JcGHDo`"gfrVZTjs8)ckrqQNf!;?Eb!VH!_nk/HAn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYcb+/Wi2hlUnXQTSt):;Q^*euOo*i(gAfk+f_;?9
+VuN^f\Gs#I[C48F]R#-\M34$kUTa[-r4)d9pU113[^EO;[f*W5[/IE4ZiIH,Zi[YB[/@?%[f3c4
+[edK4\GE]6\Gs,4\G<]2])B2<](rl6\,Wl:\,*W6\c982\c989]DT>A^&PhF^\>PB_>;%C_uI[R
+`W*sUa8<mVa8<sXaT9Q-rlkAds3C5^s3Uens3gkps4%&!rn%&"s4R2$s4dS/!o;_irnde8iSjXm
+r8[h<rT4%As60LIrosLMr9XXTn*fc8rUL$]p%J@Z"T&#mr;G"B8b;#lb/hW=_Rd"QWMH;]SXZ(q
+a1esgZ`oUI^WOd5U5#k2HsC30:3hPQ:Jc[tMNsKuS=`PT;,pSmWMunrPEhH#Q^F;7TVJ7!s87rW
+OScfi_"kb9^AYeKFE;JCrc.sWs)7mSs)%dPrG2FJs(V@Drb)+?ok"&5rb)1Cs(VLJrbMOM!,_^Q
++)c+<EH6,BFEMbNGBnL\H[U<kIt3*&K8#&8Ll%"JN:F\PUSOcbWN*&%YHY:<['mHS]"G_k^qmn+
+`Q-'BbKS8Xd*^=le^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6nac8BoCW%T!quB_rqQNhrqcQi
+rqu`noDX=@K)^?~>
+JcC<$JcGHDo`"gfrVZTjs8)ckrqQNf!;?Eb!VH!_nk/HAn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYcb+/Wi2hlUnXQTSt):;Q^*euOmnn@Sc,)AKCt<=
+OcYZbO/R8XB527%Fa8@eLlRMmO8b1;O7\J/NW4t:MuSb7NW+n3NW4t8N<#"0NV\Y8NV\\7O8=t+
+O8"b6O8=t<OnXt4Oo(4AOckn,Onk+8Oo1C@Oo1C@OoLUDPPUIBPPp[DPQ-mIPPg[FQ2R$JQi*0I
+Qhm*LRJW?SR@9S6S+W<JSc,/XTDkMYU&C_ZUB%+cV#[CkVuEXpW;rssWW0!qWrT7"Xo#:"YQ(j,
+Z2_-0ZNISB[C6%Cs1&*>#.qO^^VIY$rkeWPs2=uXrl>)]rlb;brltJhqp>Ajs3^tteCFQM9#J';
+URRU8OH5<QJpr)oGBJ%MR?NYhLk^S)DiL!FLjNleC0a5$>shh-BgtU&A86"$F`r%%84QBKIXm!#
+IrKCIF*)SMH$Xd`_uKXPrbq[rqi^r@s,d5@q2Y<4rf@8FFE;JCrc.sWs)7mSs)%dPrG2FJs(V@D
+rb)+?ok"&5rb)1Cs(VLJrbMOM!,_^Q+)c+<EH6,BFEMbNGBnL\H[U<kIt3*&K8#&8Ll%"JN:Drt
+USOcbWN*&%YHY:<['mHS]"G_k^qmn+`Q-'BbKS8Xd*^=le^rI,g=tH>hr*JQj5f=akNM0qlg4!*
+mdKW6nac8BoCW%T!quB_rqQNhrqcQirqu`noDX=@K)^?~>
+JcC<$JcGHDo`"gfrVZTjs8)ckrqQNf!;?Eb!VH!_nk/HAn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYcb+/Wi2hlUnXQTSt):;Q^*euOo.uT;#X>i;#!iN
+:B+,\=8l5-5X@_&6:41384cPS:&n#c:An#f:]4,e;>a8j:\mod:BXEg:Jama:]4#j9hnJ\ohY?X
+s%iMgr)*Jjs%`\m:J^pas%iGc!)<GdpJ(Z_nkT9]:\RWU:ZbIR:]=,h:[M!U;>sDl:]+#k:Jak`
+peLibqG?ubpJUids&/hnqbm>j!`DlmrDNVn!*&bmr)Ebu<W,tt<VTVm<rc;#=8uA)=]ed/qc`o%
+qcs&)q-O).ra>b7s'u"<"_D:YB4u#XBE2cGC'&0cCAr#KD#\APD?4]rrc7pXs)\6`rcT&l@9ci3
+9M7lE6UF"#4$>_g3&jN$7n*DC9g_356UEsu3B/`B*@39h0JtjK1Gh'Q3^#_o6T6q`5!DY58P2Q@
+6:4./7R]^577O2RVlHbtXK8P+XKAY/Yd(I>['d<N\%0)]]=biV^'_Wj_8=(,_o0O6a8X-aai_iP
+c-FZ4ci_\DdQ[Ljs&J\js&8nrr)<Sms&8npr)3_rFE;JCrc.sWs)7mSs)%dPrG2FJs(V@Drb)+?
+ok"&5rb)1Cs(VLJrbMOM!,_^Q+)c+<EH6,BFEMbNGBnL\H[U<kIt3*&K8#&8Ll%"JN:Bh8USOcb
+WN*&%YHY:<['mHS]"G_k^qmn+`Q-'BbKS8Xd*^=le^rI,g=tH>hr*JQj5f=akNM0qlg4!*mdKW6
+nac8BoCW%T!quB_rqQNhrqcQirqu`noDX=@K)^?~>
+JcC<$JcGHDoD\^erqu]ks8)ckrqQNfs7ZKcs7B%Wo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt2@=R$O#$P5Er)gAfk*f`.o8
+VuO7&\Gs&;\Gs#K[C3f7]R,0[M3!pjUTCo7r4)a8qR-F4[f*W.[f3]5[/RK5[/[K,Zi[YB[/@?%
+[f3c4[emQ4\GE]6\Gs,4\G<]2])B2<](rl6\,Wl:\,*W6\c982\c989]DT>A^&PhF^\>PA_>;%D
+_uI[R`W*sUa8<mVa8<sXaT9Q-rlk>c!7(2^s3UenrmLbo!7_#!rn%&"s4R2$s4dS/s4m\3rnmb6
+!9*b5rT!q=rT4"@s6'IIrosOMm/?>Omf2bUnG_t\oCV_MrqHWlqYU3hdJlf)hTj3``P9'nYH"Fq
+URdpDS^#$_['?p>OG'dZb-IOsX`\8iCg1t2M/?'cK8>YRS"64E;c-OoN2ikVW0<I3Q^F/2St;XL
+UV[!.O8k=;^\knF^Au(J^[f)=^]&?TF8p:[EW9tXDuFSRD?"GNC]8)KC&2N?BD?*:BDZBAC&_rI
+C]A2ND>nDsDfB]9EcZ>EF`qtQG^4U]I!pEmJ:N6(K8#&8Ll%"JNK0(j^d"WlVl?\tXfen5Za@0M
+\[oGe^V@V%`5Td<aihoRcd:(geCE1&g"P3:h;@/LioB+]k3(sml0@X%mI'H3nF?MK!V>s_p&F^c
+p\jmeq>^<hqu-HkrUg)?s+:9$~>
+JcC<$JcGHDoD\^erqu]ks8)ckrqQNfs7ZKcs7B%Wo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt2@=R$O#$P5CaBSH#/XSEPV!
+OT(CBO:I;3NHBqgC27d1H@1=!Nr+n;Nr>">OH9'pq2GB5rJU]7rf-l8pl5<4r/C]:nr<L+!0-i8
+rf?o;mZ7+(r/^]9s,m&;plYK9s,m>ErfQu;qiUf>rK7#@rK7)Bs-*;Bs-*ADs-*JIrfd;Frg!GJ
+rg3SLr0R8Is-`bO!1EhT!1WYOqORSVqk*n]pS%P[pS._aq5"(grMTXnri#mtri,ptql9^urN5q!
+rN?4*riuL/"gbSC[C*IA[g'@Q\\#Jf^AbqH_Z%LR`W*sWa8jB^bPo`cblZ2:chu/idJhSoe.L6Z
+^9a`0R[B;#NJN7=I=6Barc:#cOcG9SLOsSaKp.[OGAqt8:/+SW=C>cB7n.$$DJsW?G]u_K9h]JU
+JUr;iEH-&AG'A4UH?t"Us86d7DuPjrOo1CAOoCI@O8Ft4NrY:@FT6F^ErL(YDuahTDZ=SRD#J/K
+CB&#EB_uH;B)H<=B`;`GCAr#KC]J>ODBWq;EH-#?FEDYKGB\:WH?sseI=HctJqJ]0L51SAMN!OT
+nW,o1VPgDnXKAY0Z*UgG\%0)_]t_=u_SjF6aN;WLcHjkbe'uq"f@em4h;-uHiSrnYjlYail07L"
+m-X60n*olHncA@Srq6<b!;HHes7u]kr;6HjrVcBfJcC?%J,~>
+JcC<$JcGHDoD\^erqu]ks8)ckrqQNfs7ZKcs7B%Wo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt2@=R$O#$P5J)U;#X;l;"IKH
+:B+Ak=8u>!=8u;36U4"+5XRk+84Z<F:JOVYr([5frD<Ggr_WJhqbR8gq,%&ds%WVk:f-s`r_EJf
+!_uNfohYBYr_NDfr)!Yp:JXe`:J^pas%iJds%WJdpJ(Z_nkT9]:\RWU:ZbIR:]=,h:[CpU;>sDl
+:]+#k:Jak`peLibqG?ubpJUfc!)ienqbm>js&&hor)3Pn!*&bm!*&nsrDir#<rQ+o<r5r%<``@)
+=BYW*qHEl&!F/k,>l7n'?N+=3@/j[7A,Tp<B)ZHCB`r*`BP;,XCAr#KC^+ZlD/O92EW1"VF8p>%
+F`D&&>#S6m8Ol0:5X.Fs4?5G_3_;k37R9:(6iKCm5s.1d2D61!.4Zo(2Dm?J2E3i^4[2;&2`Eo`
+7SE_Ps$@;b6q0U66psI48>`8^W2ZesX8]1WXfek2Yd(L>Za@-K\%&u[]">Vg^:q@s^qmn)_o0L4
+`lQ9Db0%oOc-FV\cd:%bd*U1ge,DQ04o87K<;]Yp;Z0Mo;Z'JmFT6F^ErL(YDuahTDZ=SRD#J/K
+CB&#EB_uH;B)H<=B`;`GCAr#KC]J>ODBa"<EH-#?FEDYKGB\:WH?sseI=HctJqJ]0L51SAMN!OT
+O7H46Uo(&hWiW>*Yd(OA[^WfY]Y2(p_8=.0a2lBGbg+P]dF6Uqf@S^0gYL]Ci8N\UjQ5Oekiq?s
+m-O--n*fc9rpg*]o`"O`p&Ojcq#C0iqY^6hr;HTdrdk*$s*t~>
+JcC<$JcGECo`"gfrqu]ks8)ckrV-Hgp@eLY:A"/Ko'u5=n*f]2m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSsu19Q^*euqq:Vqs4RD(kGRm[
+&%8sSZ]htHIY!<7P*qo?Zi%?4\,*Q1[J.-/[JdK3[K!W6ZhUp-[/dT2[IUd)\,3W1\,Ei5\,No;
+\b3K/\bNc7\c',8\GWi9[K*f5\Gj&=](*?2](io7]E5d\^AYh@_#2%F_YD%K`;R[T`r*mR`rF*V
+a9B].bKJ,RrQP>fo?[E_s3^kprR1esec+/"fDF5#g%X2#g]#t0h;7#fhZD`piVMR4j8\3=jT+HB
+kPscGl2U&Klhp/Mmf2_VnF?MK"7u3Zp\spjq>:*grm^s5o]FcL`lPm3]s"H8UnaTQS=?(n`4E=]
+[',XI\&un$T7a5!G%#07F*rk#:elXuOcu9)TUf"Y<E#foW2Zb\Q2[*SSXuFHTqeF!s8.lW_"b\C
+_">D6^Ai?TFT6C^ErBtZE,T[nDZ=SRD#A)JCAqr1B`DfGCAhoLCi+%gD?4Zprc''$F*)MHG'A.T
+H?spcI=?ZrJV&N-KnbA>M2R=PNfT<co>!_jVl?\tXfen5Za@0M\[oGd^;%M$`5Td<aihoRcHste
+eCE.%g"P39h;7)JioB(\k2tmll0@U$mI'H3nF?&>o(2MQp&F^cp\jmeq>^<gqu6NlrU^#>s+C?%~>
+JcC<$JcGECo`"gfrqu]ks8)ckrV-Hgp@eLY:A"/Ko'u5=n*f]2m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSsu19Q^*euqj[;Ls.0(XkC`>e
+&!)g4NH9hbBkqX/H$t0rN;S_:Nr"h1NqeS6N;\\7N;eh8N;/A4N9lQ"NW>(:NWG3$rf?o;nrEd4
+rf?f8r/^]9s,m)<pQ>B8s,m>ErfQu;qiUf>rK7#@rK7)Bs-*;Bs-*ADs-*JIrfd;Frg!GJrg3PK
+rKm>I!1E_O!1EhT!1WVNqjm\Wqk*k\pn@Y\pS._apn[tfrho^ns/?!uri,ptqlBaur2on"r3$1+
+Z*F;6!OK04[JdT7\-TXV]=bkm^qdec_YqCZ`Q#p<aN2KGbKKn/rltGg!RT0ld/VMmdS/03\?2Qt
+R$NepNJ<%7I!^!YF*)GiOc>3QLP'\dMNj9WG\;G9<_-"m='oQO7RUd!DK']@G]u\K9hg+fJ:W/g
+EH?8FGBnFZH@:1Vs8-^6OT1C@OSt=?P5^UAOSk1=Nq\V7FoHL_Er^7ZE<:)tDuFSRD?"GMC]8)J
+C$010C&VlGCBA<hD>nDRDfG\q+EDOFFEMbNGBeF[H[L6jIt3*%K7nr5LP^kGN/`jYOco<s6`-c\
+WiW>*Yd(OA[^WfY]Y(tn_8=.0a2lBGbg+M\dF-Opf%8U/gYCWAi8EVTj5oFckiq?slg4$,n*fc9
+nac8Bo`"O`p&Ojcq#C0iqYU0hr;HTcrdk*%s*t~>
+JcC<$JcGECo`"gfrqu]ks8)ckrV-Hgp@eLY:A"/Ko'u5=n*f]2m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSsu19Q^*eur(d;hr_WYlo2"OE
+o2ZB'<``=&5XRk(6U=(/8OuJQ:&I`d:]=2g:]=2g;>O)h:]+#i:Jh!cs%WVk:f-s`r_EJf!)EAd
+s%`MgpeLfar)!8f"].uj:f'sc:B+,d:B+&f9_V9]:@h9]:&n)a:@h9D;#a>j:&n)V;#=,i;#a>h
+:]sQj:esm_:B"&c;#4&`;Ya5k;Z0Jj;YsAo;Gg<i;ZB\q<;KMn<;]bq<WZ?'<rQ+o<r?#*<``@)
+=BSd/=BYN)r`f2'r*B,)ra5\5!F]I:A,^$=B)cKJBPD0oBk_8XCAquSChmj(D/O92EW1"VF%:=f
+@Tuo39M@rE6pj4%4Ztke3]T2l84H$65s@Y&6UO.%3B/rS,9\Eh/2B+E2D[6N4?Yel6q'$n5!;S3
+8P2QA6UF1/77@,D6:a\EV5C/hW2ZesX/rD)Xfek2Yd(L>Za@-K\@B)\]">Vg^:q@t^qmk(_Sa=3
+a2lBEb08)Sc-FSZcd:%bd*U1hq`b$\q,R,fs&Jtrr_rhrr_rhpr_ri>rcJ0]!-8$X!cW'rrGMXP
+s(qUKrbDFHk@jm0rbDCI!c2^jrb_aTE;ji"EcZ>EF`qtQG^=[_I!pHnJ:W<)KS>/9M2@.LNK0'^
+P4MU>VPgDnXKAY0Z*UgG\%0)_]Y;.s_SjF6aN;WLcHaeadaZguf@em4gtgiFi8WeWjlY^hl07L!
+m-X60n*ol;o()DErq6<b!;HHes7u]kqtpBjrVc?eJcCB&J,~>
+JcC<$JcGECoD\^erqu]ks8)ckrqQNf!;?Eb:A"/Lo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt):<R$O#$o@a&qs4RA'ri#.\
+o!\Y-[f3ZBOKs.YJr#DJQ^jqWrODj9qmQ@/pU:+0r3ZL3s0Vd3ppC(/!4;X2o!\J*r3lI2rODa6
+rO;j<oXOb.pq$F7rOVg7r3u^7!4Vg7rODp>n[\\2pq-F9!kl=^rP/*Br5&6Hpr!*Lrl+lVrQ"cS
+s2Y#X"j+p0bKS3/blH&[ci;AldJqYne,Rqsf)O@uf`0Y"g&Tn,h#H11hYuF4huMa3ir.m;jSe3?
+k5OQDkl9lKlKdd6mJlVSn,MnUncSOWp\4[^"8_rorRLoYmGQ:3`PfO(\$)g0USFENrgGde_Rd+Z
+ZEKLJ^r+=+Tnfq6Ip-B0:O7hU:Jlh#NK]m&TV#+Z<E,NfW2Z#FQ'Rc(St;UMUSO^"s8A#W_#V:H
+^\kn>^\5AEGBS.PFoHIaF)l="E<:)tDuFSRD>nALC]8)HC%5m8C&VlGC]A5ND>nDRDfG\q,][sJ
+FEMbNGBeCZH@($fIXcm!JqJ`1L51VBMi<XUO-,ThQ'M$X6`6o`X0&P/Z*UgG\%0&]]Y;.s_SjF5
+aN;WLc-F\`daZguf@\g3gtgiFi8N_VjlY^gl07L!m-O--n*fc9o()DEo`"Lbp@n=\q#C0hqY^6i
+r;HTcrdk*%s*t~>
+JcC<$JcGECoD\^erqu]ks8)ckrqQNf!;?Eb:A"/Lo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt):<R$O#$opbuOr13_Tre0Ti
+nrNm4O8b.IEIqe9C2e6;H[g^*ooJg,pl530s,?u;qi(?1!0$9(o8`a0qN19/!0I2@pQ5<6qN1`>
+plP64r/gr@s-!ADplPB8r0%#@r0%#@rf[;FqNClBr0%)DrfmGHr075HrKdGLr0I8IqNq8Nqj@DO
+s-`qWoUPcKrLWnYs.K+[rM'%]!2TFe!2fanrM]^p!36$t!35pss/c+"r3$"%!3lI-s0D[2rO)U5
+$+ROV]"G_k^VIYa_>qLP`;dg^a2l?Db0%oNrlkAds3Chpcd0tbrm<mWdD*#eTpqC4O,\sKJ:;lk
+G&q\FF-ViHM2?t=F`*5!ObS0sKPFd[9O0qgASO_)@qBIpFEVqR84H?KH2`=&EH#o<FEVnSH?ssd
+I_Pg^D>nGOOSt7>OT1I@P5g[@OSk1>Nqn_=GBS.PFoHIaF)l="E<:)tDuFSRD>nALC]8)HC%5m8
+C&VlGC]A5ND>nDRDfG\q,][sJFEMbNGBeCZH@($fIXcm!JqJ`1L51VBMi<XUO-,ThQ'M$'6`6o`
+X0&P/Z*UgG\%0&]]Y;.s_SjF5aN;WLc-F\`daZguf@\g3gtgiFi8N_VjlY^gl07L!m-O--n*fc9
+o()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*%s*t~>
+JcC<$JcGECoD\^erqu]ks8)ckrqQNf!;?Eb;"XANo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVSt):<R$O#$:J^g`mSE.DmoKHg
+!^8q:r^$fV7Rp$B9hkR]s%iVjr(m>hqbcu^r(m;es%rJds%`Pf!)EAds%`MgpeLibqb[2fs%r\j
+!DlSi:&n)c:B+&f9_V9]:@h9]:&n)`:@q?E;#a>j:&n)V;#=,i;#a>h:]O;j:]O;d:B+,d;#4&`
+;Ya5k;Z0Ji;Z'Gp;Gg<i;Z9Sp<;KPn<;fhr<rZ5$<rQ+o<r5r(<``@)=]nj/=oMS)>Q.h+>PMJ%
+?2.b*?NjhG@:E_VrFGq?#\RgbBkV0oBPI?Yr+cRSD/F00E,fo=rc<O1EbA]_;c6:]7RKO/5Wq7m
+3]]5\2b-G/76s1'6UF.(5s@=h3AE!(,V:T%1c[HL1c[WZ5!VP(2`Eoa8kMZI5XRk+77B[76q'R;
+8Yr5ZVP^8iW2ZetXK8P,Xfek2Yd(L>ZaI3M\@B)\]">Vg^:h7q^qmk(_Sa@5aN4D'#Kt?8bKS5U
+cMYuid*gA@55\IW<VKJk<W#hr;uTbr;uTYtGBS.PFoHIaF)l="E<:)tDuFSRD>nALC]8)HC%5m8
+C&VlGC]A5ND>nDRDfG\q,][sJFEMbNGBeCZH@($fIXcm!JqJ`1L51VBMi<XUO-,ThQ'M#@6`6o`
+X0&P/Z*UgG\%0&]]Y;.s_SjF5aN;WLc-F\`daZguf@\g3gtgiFi8N_VjlY^gl07L!m-O--n*fc9
+o()DEo`"Lbp@n=\q#C0hqY^6ir;HTcrdk*%s*t~>
+JcC<$JcGBBo`"gfrqu]ks8)ckrV-Hgp@eLY9_@rIo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQSSXZ(8Q^.-pr7_2(r7LnFm\fli
+qR-sC\$WQLDl@r/J;0#EQ(4\Rrj_s:r3lF/pU:+0r3ZL3!4;^2q6]q)o!\G)rO2R3qmcR5rO;j<
+oXOb.pq$F7rOVg7r3u^7!4Vg7rODp>n[\\2pq-F9!58BGrkJ0BrPA?Ipr!*Lrl+lVr5\]Ss2Y#X
+s2b;abPo`bc2Z)\ci;AldJhSmdf@nsf)O@uf`0Y!gATe.h;7#fhZD`piVMR3j8J*>k5OQDkl9lI
+lMg,ImJlVSmfDqJrpp*]!VZ9ep]UEir;HWIrtb@kfZ_CU^VmdgX/MhgTpqO>S'&[^\GicgXcnRW
+bJq2kLmO?k=\!d3G_:uJ;M'X\PF%i6T28E\<DoirWMl#FQC!r0StMgQUo(j*rK$ils1nKGrP8'?
+pV$WPrceBc!-S6^!crC&rG_mXDf>Pks)%aOqeQ+EoP+5<r+l=Ks)%^P/8oKHEH-#?F*)MHG'A.T
+H$XdaI=6QpJ:W<)KSG5:M2@.LNK9-_P*;/sQ^IK^6E-ucXfen5Za@0M\@K5a^;%M$_o9X:aihlP
+cHsteeC<($f\5'7h;7&IiT&tZk2tjjl0@U$m-X60n*ol<o(2JFrq-?dp\4X]s7u]kr;6HjrVcBf
+JcCB&J,~>
+JcC<$JcGBBo`"gfrqu]ks8)ckrV-Hgp@eLY:%\&Jo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQSSXZ(8Q^+*6S,]#VSbelRK^OKg
+OSt7>O:[J7NK0!,IqED1D0'lII=d:KO8"\0N<"q8MuS_9NV\UpNUi,-O8=t/NrY:@O8"b7O84n;
+Onb%4Oo1=@OoLUDOnb%8Oo1C@Oo1C?OoLUEPPUIBPPgUDPQ$gGPPpaGQ2HsJQi*0IQhm*LRJW?S
+R@9S6S+W<JSc,/WTDtSYU&C_[UB%+cV>mFmVu<RnW;rssWV`aqXSf4#Xob`.Y5GI'Yl:p-Z2h60
+[J[N6\I6!\]Y;.q^qmn)_o)Jls2P)Zs2Y5_b5TTabl5iecMc)gd/VKeb.+RLSsYh*OH#!GIXHEa
+F`h_HQB@2cLk^V5F`3>*Ob\9uEc,VX4^16U@VJ,!@qB=kF*2_R84c9F97VPDIW9=IFEMhRH?sse
+J%bm\D>TFmO8k=AOo:IBOnk+3NrXG(GQ2gdFo?C`F)l="E<:)tDu=MQD>nAKC]%r>C&D`DC]A5N
+D>e?'DfBZ8EH6,AFEDYKGB\:WH?sseI=?]sJV&N-L5(J?M2R=PO,oEdPEhH#R.cS-WN*#$Y->1;
+['mHR\\#Mg^VRe)`Q$!@bKJ/Ud*^:keCN7(g=k?<hV[8Mj5]4_k3(smlKdg'mI'H3nF?)?oCMVR
+o`Fj]p\jmeq>^<hqu-HkrUg)?s+C?%~>
+JcC<$JcGBBo`"gfrqu]ks8)ckrV-Hgp@eLY9_@rIo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQSSXZ(8Q^.PGqG?HQmS<RYpf.f'
+<E).K6:4+*6q'U98PT.Ys%iVjrD3Giqbcu^r(m;e!`)WhpeUobr_3AfqG7,drD3/_s%iPhs%rkp
+;,L0e:]*rf:\dcc:&[i\:&du[:]F/i:\IQU:ZbLR:]=)h:[CpT;?'Jl:]4)i:]=/j:\[]b:\mo`
+;>3ub;u]bo;>a>i;u]_q;>a>l;u]hn;ZKeq<W6&!=8u>#<VTVm<rc;#=8l>0=BSd1>$G37>$G50
+>QA(.>l7n,?3":0?N"47?t!MR@q5LK$>!g]BP;*oBPM6qqeH"DrbV^TE,bess)UqO@pE,59hS&H
+6UF"#4[)%j3B/ui84Q'85=%J#6:4%)4?5>Y0e=:l/1iJ23%m*F2``ua5=7dr2`<lZ91_`I6UF+-
+6q0X66q0^=USRmcs/$%!W2ZesX/rE%XV%_>YHY:;ZF.*L\@B)\]">VfrOiWS^qmn)_o9X9aN;TI
+rQ>8dc-?75rm(VmdeuB*<r,hk<;T\i<!#urGlDpeFoZ[`F96N(ErBtZE,T[mDZ=SQD#8#GC@l6<
+CA_lID#\ANDCf^FE,fl<F)uGFF`qtQG^4U]I!pElJ:N3&K7nu6LP^kGN/`mZOckonQC"!4;aRI`
+X0&P/Z*UgG\%&u\]Y;.s_Sa@4aN;WKc-F\`daZdtf@\g2gtgiEi8N_VjQ>UfkiqBum-O--n*fc9
+o()DDo`"Lbp@n=[q#C0iqY^6hr;HTdrdk*%s*t~>
+JcC<$JcGBBo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nji6>n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnaWUSt):<R$R<rr7_2(qq1M=pS[nt
+rjMX1rj30ADk<ADItEQ>Q'e2C[(-+ErO2L/pU:+0r3QO5[']h=ppBh(o!\G)rO2R3qmcR5rO;j<
+oXOb.q7?L7rOVg7r3u^7q7-C6!4q^2s18!;qn)pBrkABHp;$XCqSN$Frl"cSs2OuWqSrQUr5eo[
+!QrUbbl,cdcL]B]d/VMndf%VueCE.$f@TiNs4R2$!8IM.s4m\3rnmb6!9*e6r8[_:s5s=Ds60LI
+rp0LLrpBjVnF6GJ$hO#_p@n@Wq>1$frn7<An)Da:a2Pg/\#u^.UnjZPR@'Ga^pgYTZ*0IPXKT[f
+\Y=hIQ'GHCG"m.3Le^raK8G_TS=?0J;c$LnWN)qsPE_E"Q^s_@rhI()s,ZulrP8?Gr4r$@p:^TR
+G^043!d8^/rcJ0]s)S'Xs)A!VrGMUOrbV=EphKS>s(q[OrbhaS!-%pWs)KQ0FEDYKGB\:WH?spc
+I=6TqJ:W?*KSG5;M2I4MNK9-_P*;/sQ^F52SG9l^WiN8)Yd(O@[C3TU]=bkm^r"".`lQ6DbK\>Y
+dF-Lnf%8R.g>(N@hr*JQj5f=akNM0plg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wirqu`noDX=@
+K`?Q~>
+JcC<$JcGBBo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_njr<?n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnaWUSt):<R$O98S,]#VSc##WS+D=-
+KDUc'O8k4LNF7$ZAnl1%FaAIeKoGhgpQ#!-!0$l7s,?u;r/:Z7N9#uiNr4t6OReG4OT(=9OSk18
+OT1I<OS=n8OT1ICP5^U=OSb1<P5UO@P5LIBP5gaBP5gaDP5gaFPl?mFPlI$HQN*<LQMd*GR/`TO
+QiNQRRK/iMSGJfTT)5/ZT_P5ZUA(G_V#$qfVZ3RmW;`drWrB!oX8f9uXT>T,riZ1&riuL/!OK03
+[JdQ<\@K2^]Y4<Zs2"`P!5ncR!li:$rl>2`b0/!-bl>ofcMZ#fcp5@RWM,iKPE1][K7JAuH?F:K
+Ec[J+NJWCDJp23fK9MIPH>.J<CI(*d6<I]/6V19gB5DO0G'QYM7nl^.JUr@NE<gQ-GBnL\I!rU+
+s)%atr/gf:!g&P,r0%#@qiLK3!dT$8rc\EeF`m\*s)\3\rGhjVs)7jRrb_XNpM9P=phTnGrb_XP
+s).mVrc.sY.<BTQF`qtQG^4U]H[L6iIt3'#K7ei3L5:\DMi<XVO-,ThQ'Rc(R[]iBO$'GCXfen5
+Za7'J\@K5a^;%J#_o9X:aND]NcHjnde'ut#f\5'7h;7&IiSrnYjlYail07O#m-X60n*olHncA@S
+rq6<b!;HHes7u]kqtpBjrVc?eJcCE'J,~>
+JcC<$JcGBBo`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nk&B@n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnaWUSt):<R$LNDq,$$GpJ1Tdo2Q&q
+5X@e*5X@_(r^[2d9hnGZ:]=2i:]F8g;=dW^:]=)i:Jgd]!)EJe!)EDer_EGgp.kW`rD<Jj"&Mil
+;#=&d:&n)c:B+&f9__?]:@h9]:&n)`:@q?D:]O;j:&n)V;#=,i;#X8h:]O;j:]O;d:B"&c;#4&`
+;Ya5k;Z0Jj;YsAn;Gm?ir_ierqG[DnrDikur`9)#r`/_oqc<i"=',B(s&]8(r`T;+r`T;+pK[Z&
+rE]J0rEfJ1s'Yk9s'u%=%V96aB4tsmBkV6qBkhBsrbD@H!,VXO!cN$src24V?s-H.9h@iC69mdu
+5!:tf2`N`e84>s55s@_(69[\$4?>DY0eF@n/M8Y22_[-K3&s&`5<qUr2`Eo_91hcJ5XIh*6q'O4
+77KhBU8+K[V5C)dVPpGmWiE-!XT,C5Y-5(7ZEgjG[^WcV\[oAark/9E$GO9j_8=+/`l?'?rQ,,`
+bKKn/$-gc@cd:%dd69be<r,hn;uouur)NGi"&jJiGlDmgG'.s,FT6F^ErC"XE;skTDZ4MPD"h`?
+CA;TED#S;NDZ=VTE;jkWE[u3QFEMbNGBeCZH@($fI=HctJV/T.L5(M@MMmFQO,oEdPEhH#R$sM7
+;cENj4K>HaY->1;ZaI6O\\#Mg^VI_(`Q$!?b0/&TcdC1ieCN7(g=k?<hV[8MioB+]k3(sml0I^&
+mI'H3nF?MK!V>s_p&F^cp\jmeq>^<gqu6NlrU^#>s+LE&~>
+JcC<$JcG?Ao`"gfrqu]ks8)ckrV07ap@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi2hlUS4?PSXZ(8Qh&i-gA]e&f^Pj9Vtdb$
+[K*`4Zk9XOZYPu>H@:@#NKBHtVm3_?r3lC.pU:+0qR$4-q6]n(o!\G)rO2R3qmcR5rO;j<osjh.
+q7?L7rOVg7r3u^7ppg=6!4q^2s18!;qn)pBrkA?GpV?aDqSN$Frl"cSs2OuWqSrQUr5eo["Nnp2
+bfp%1!7(2^rm:\ms3gho!7h)"!8%&!s4R2$!8IJ-!o;_irnde8iSjXmr8[b;s5s=Droa@HrTjCK
+s6fpUs7$'Zs76Qhp%J.Tq"agcrnIH3qWHY[aMu!7]sF]:V4sWOR[KSd_S!=_Z*:0hL:4q<^oFSs
+X,;F/8U=*RJr!-!:kOUfPan;<r_a;-<)]fqWK`U4QC")4Sti!S\c;\kpqcgBrkJEIp:p@9s*F]j
+!-nHd!d8^/rcJ0]s)S'Xs)A!VqelCMrG:q<rG;LNr,2OQ!-%pWs)KZ3FEDYJG'A.TH$Xd`I!pHn
+J:N6(K8#&7Ll%"IN/`mZOckonQC!u-S"-(Bq7o:sXfen4ZEpsI\@K5a]t_A"_o9U8aND]McHjnc
+e'uq"f@em4h;-uHi8WeXjlY^hl07L!m-O--n*fc9o()DEo`"Lbp@n=\q#:*hqY^6hr;HTcrdk*'
+s*t~>
+JcC<$JcG?Ao`"gfrqu]ks8)ckrV0:bp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi2hlUS4?PSXZ(8Q^m`<s.'"Xrg`kTn:^Xj
+plP93%uu^2?[.WDC2@j1G'ngnMu&M/Nq\M5N;\Y9N/`hpN;ne9N9#uiNr4t6OReG6OH5IsOSk17
+O8tF<OS=n8O8tFBP5^U=OSb1<P5UO@P5LIBP5gaBP5^[DP5^[FPl?mFPlI$HQN!6LQMd*FQiNQO
+QirhGR@9W;SGSlTT)5/[T_G/YUA1M`V#$qeV?!OmW;W[qWr8poX8]3uXTYf/Xfei)Y5kg+Z2_-0
+[/RH5[f3`G\@K2^]=bkm^VRb'_Sa:j`;djWa8X0[b5]ZabQ?&7cMZ!^cFL*SSsbn*OH,'HIsZKc
+FE;JCQB7,bLPCD0F)HhmO,JFADgZ5*69SL==^ku17n$p"D/aQ>H:URs:/+B4JUh`ZE,p&EH$=R\
+Hb'1VD>fUpOSY">OHG\(P5CC?OS4b8HN/6jGl;gfG'.s,FT6F^ErC"XE;skRDZ4MOD!u0<D#\AM
+DZ=VTE;jkWE\)9RFEM_LGB\:WH?spcI=?ZrJ:`E+Knb><M2I4MNK9-_P*;/sQ^F52S=ZAKO$ThK
+Y->.9ZaI6O\\#Mf^VI_(`Pom=b0/#ScdC.heCE1&g"P3:h;@/KioB+]k2tmll0@U$m-X60n*ol<
+o(2MGrq-?dp\4[^rqZTjr;6HjrVc?eJcCH(J,~>
+JcC<$JcG?Ao`"gfrqu]ks8)ckrV0=cp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8Na2Q$8_SEq"]XkY_[^<BGYcb+/Wi2hlUS4?PSXZ(8QVUEO;#X8g:]aEh;!LjQ
+:A@l_<=_8Z76j+*6psL78P;`P:J^sdr_NPjqbcu^r(m;e!DcPd:]F2g9`Rrc:]=,g:\IQ`:]4,h
+;>j>g:]*rf:\mic:&do]:&[oZ:\.?R:ZYCQ:]=)h:[CpT;?'Jl:\dfe:\[]a:\moa;>3ua;ZK_o
+;>X8h;u0Dk;ZKem;ZKeq<W?,!=8u>#<VTVm<rc;#=8lA&=9hu4>$G37>$Lo0!+#P.rETD.q-O&-
+s'Q7D@U`hWA7T7_AnG^irb2@Irb2CJC&VlECHlWPD/O92E,K/k=]/$i8Ol094$>Yf4?5D]3(ZS/
+6UF+'4[MG$5!_=m6oI"X.3'Zc/hSn</i>=A3BKDh5XbT1s#pcM8kDW?6UO7177R8F#"bM_U8+KZ
+rM:I1Vl6PnWiE,$XKAV-YHP18ZEpsI[^WcV\[oBO],J>q^;%J"_Sa=2`lH0AaiMTGb0.rNbfn>V
+cMl/ld69ba<r>to<;]bi<<%:EGlW*fG62r1FoHL_F8p:ZEW:"XDu4GOD>e;>C]/)LD>\;ODZFbU
+EW:&1F*)MHF`qtQG^4U]H[L6jIt3'$K7el4L5:\DMi<XVO-,ThQ'Rc(R[]h=TD;ANX0&P/Yd1UC
+[^`l[]Y2(q_Sa@3a2lEHbg+P^dF6Uqf@S^0gYL]Ci8EVTjQ5Odkiq?slg4!*mdKW6nac8Bo^r.U
+!quB_rqQKgs8)ZjrVZWmoDX=@L&ZZ~>
+JcC<$JcG?Ao`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nji6>n*f]3m-Es$l0.9ljlGI]i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnXQTSt):<R+V#`qqD)'qUkbEm\p/q
+p:((1'Xb<TZa@'Dba5neI"I*3Od;Q6Xge8;pU0b(s0_^1rj2C,pU0V$qR?I4qR?=2rO;7*q76=4
+r42d;q7-@3s0h^4rj`$?rj`$?ost+6pq-F9!58BGrP/*BrPA?Ipr!*LrPefVr5\ZRs2Y#X"j+p0
+bKS3/c2Z)\ci2;kdJqYndf@qtec==sfDsV"gAfq,h#H11hYuF4huMa4ir%j9jo+?@kPscGl2L#H
+mJcPRmgejWo()DDo_/%Rq"adarnRNHn)Dj>aN(s1]!/35UnOBLR[BM`^UCGQYc<nC]Z.t4Xdk$I
+PET3eBn&p'K8`H';1j[fPan;<P>b@Z<E#osWKNI/Q^=)2StMdO\,Z*:qS3*Gr4r*BpV-ZSrd"Wk
+G^043s*"EbrcJ0]s)S'Xrc%mUqel=KnSJ/@r,2OQs)@sWs)J*\rcBZ5G'A.TH$Xd`I!pElIt3*%
+K7nr5LPUeEMi<XVO-,ThQ'Rc(R[]h=T:hnS^d,$)YHY==[C3TU]"G_k^r""-`Q-'BbKS8Xd*^=l
+e^rF+g=tE=hVd>Oj5]7`k3)!nlKdg'mI'H3nF?)?oCMVRo`Fj]p\jmeq>^<hqu-HkrU^#>s+UK'~>
+JcC<$JcG?Ao`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nj`0=n*f]3m-Es$l0.9ljlGI]i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnXQTSt):<R.?aBSGJ`RKC4EbOSk.N
+NfT3ZW-*i+BPhU-G'e^lM#<>.NqSG4N;eb8N;nn8N;ne9N9-&iNr4t5ORnM7OH5IsOSk17O8tF<
+OSFt8O8tFBP5UO<OSk7=P5UO@P5LIBP5gaBP5^[DP5^[FPl6gFPl?sGQN*<LQMm0GQiNQOR/`TS
+RK/iLSGJfTT)5/[T`(PaUAU_`UA1M_V#."fV?!OmW;W^qWrB!sWrfB'X8]3rXo>L$YPk^.ZEppF
+rj<?H\$rlW]"5Mc]tV7s_84"*_u7LR`r=$XaT'E_bQ#fdc2Z'bcd'kQ[&TghQ]mGjMhH\1H?sdW
+F)u>bNf/aKKR\,_MiWs\J9GUUChc@7:L6@l@VJ/#7:]tHE--;MDb3Mp9hTtdJT5XJEHHAJG^=[_
+\,Z>fqN1W9s,[5Cr0$l<s,d#:s*O`k!dT$8rceBcs)n<_s)\3\rGhgUs)7dPr,(t?rGDIMs)7pV
+rc.sY!-A-].s6#ZGBeCZH@($fI=?ZrJV&N-KnbA=M2I4MNK9-_P*;/sQ^F52S=Z@GU&'g8Xfek3
+ZEpsI\@K2`]t_A"_o0O7aND]McHjkbe'uq"f@em4gtgiFi8WeWjlY^gl07L!m-O--n*fc9o()DD
+o`"Lbp@n=[q#C0iqY^6hr;HTcrdk*'s*t~>
+JcC<$JcG?Ao`"gfrqu]krqcZjrqQNf!;?Eb!VH!_njr<?n*f]3m-Es$l0.9ljlGI]i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUnXQTSt):<QqpNP;#X8d;#a>h;#O/W
+:]FMi<r#`+<*)=P5<hP'6q9a<8P2cSr_WVjs%rSioMGE\s%`Si!)WDc!)EGd!)EGfrD*AgohPN_
+rD<MkrD<;cohPK\s%N/]r_E&\o1npRs%i\mkYM7Tr_<GhlqmRVr_WVjq,%)eq+glaqb[,dp/:`c
+s&/emr)3DjqbmDls&Ahns&Aqs!*9&"!*9)!!EN:u<r5r"<``B$=Tqo1>$>-7r`T;+r`fG/qcs,+
+!F/q+?N4C4?iXX7@fKs<A-HOVAnPdjrb2ONBk_<rC&VlICB/,KCNaN2D/X?*?s-K+:/"/I6pEq!
+4$5P`3B/rg7mod35<VA#5sdq(4#],Y0eXLo-nm8-2*!?K1H%3S4[22!6T6qd4uu>.83fL.5t".2
+7RT[7TV/!QU8+KZV50rbVPgAkWMunuWiN5&Y-5%5Z*LaF[^WcV\c')L]=bhj^;%J#_o0L4`l?'s
+a9]o1b0.uPc-=T5d-Xm4<Vobm<VTPnHiA<mH$FT5GQ2jdFoHL_F8p:ZEW0qWDu4GMD=MH@D>\;O
+DuXeUEW:%ZF8g83F`qtQG^4U]H[L6iIXcm!JqJ`1L51SAMMmFQO,oEdPEhH#R$sM7StD[LqGKS\
+Y-5(8ZaI6O\[oGe^VI_(`5Td<b0/#Scd:(geCE1&g"P39h;7)JioB(\k2tjkl0@U$m-X60n*ol<
+o(2JFrq-?dp\4X]s7u]kr;6HjrVc?eJcCH(J,~>
+JcC<$JcG?AoD\^erqu]ks8)ckrqQNf!;?Ebs7AqTo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+qUnaWVSt2@>f\#iLqV(u&q:G\Eqkrt_
+r4)I0s0`NIZa-mAOgBC]J:i`APae>G[/RN/[J%'/[JdH8[C!<IZhUp%[IUd&\,Ni7[fX(K\,*W5
+\*pj'\bNc6\c0/?\bWc5[fNqHppg=6!4q^2s18'=!kc.Wr4E$CrkA?GpV?^CqSN'GrP\]Srl4oW
+q8WHTr5eo[!QrUbbl,cdcL]B]d/VMndf%VqeCFQLpt,T"ptGc&s4db3gtgiDrnde8iSjXmrSmn=
+roO.Aroa=Fs69LJr9aLO&+B#Wo()DDo_%qPq"X^_rSIQJp>juRa2c$8^9OZ9Unj]RS!]Vb_Rm4]
+YHOj^K!3/6[@rAHT8d;gBRNTsJr!&r;LsRYOd)B-ThnZc<E3"tWi;t^PEqN$SXl@IU:1*k_=tb?
+^\GMFI=-EhrH\NjG^043s*"EbrH/'\s)S'Xrc%jTq/5hAq/64Ns)@pVs)J*\rcA0`G5c\8G^4U]
+H[L6iIXls"JqJ`1L51SAMN!LRO-#KePEhH#R$sM7St;UKUSOa`^cAU&ZEpsI\%0)_]t_A!_SjF6
+aN;WLcHaeadaZguf@\g3gtgiEi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6i
+r;?Nbrdk*(s*t~>
+JcC<$JcG?AoD\^erqu]ks8)ckrqQNf!;?Ebs7AkRo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+qUnaWVSt2@>n=09EqO7JRqLe<kooT$2
+&<;a0N,jP^B5;='Fa8CdLQ2:opQ"s,#)nIuN/WaUr/CW5!0$$!o8`^/plP-/s,d8ApQ5<6mZ@4+
+qiCf?rf[8CpQ5<8r0$u?rK@)@s-!DGqNCiAr0%)Ds-3JGrfmDIr0IALr0I8IqNq8NqNqDRR[T_8
+opklLrLWnYrh07a!2B@arM'+_rhKUlUnn!drMKLkrM]dsri#mtr2]dtr2g+)Xf\b/qlg"(s0D[3
+rO)X6%_0'\]=Y_h^VIY$_8=(,rP\]UrQ,#]!6bAc8'T?)ccEStV4O*@OH>KVJU`)oGBItJEg2ZE
+Mhd"<I;j%VOH5!=Bm+Q284cQ^6!.N,6UsXVA8#duFa&.&8P)ZO9RhVEJGsKlEclSOGC"VEs7qfP
+OT(:BOHG\(P4t+7NrsfXI!bg<!dT$8rceBcs)n9^s)\3\rGhgUrbqUMoPODAs)7pVrGhjX!-A-]
+!HiSbG:Ii_H?spcI=6QpJ:W<)KS>/9Ll%"JN/`m[OckonQC!u-S"-(ATV8-VV>H<6YHY==[C3QT
+]"G_k^qmn+`Q-'AbKS8Wd*^:ke^i@)g=tE=hV[8Mj5]4_k3(smlKdg'mI'H3nF?MK!V>s_p&Fac
+p\ssfq>U6gqu6NkrU^#>s+^Q(~>
+JcC<$JcG?AoD\^erqu]ks8)ckrqQNf!;?Ebs7AkRo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+qUnaWVSt2@>r_N8bs%i,\qG-QVr)`Sm
+qc+))5!hM#5X@b*7n6*D:B"&k:Jama;=m]_:]=)j:Jam_:]F2f9`Rrd:]4&g:\@K_:]4,i;>j>e
+:\@K^:&do]:&du]:BF9e:\.?R:ZYCQ:]=)h:[:jT;>sDl:\[`d:\[]a:\moa;>3ua;ZK_o;>a>h
+;u9Jk;ZKen;u]hq<<-(u=8Z(n<r?#$<``@)r`T8'!EiV*>Q7k,>PDD%?2n1*?N+:5?t!LC@K9p;
+A-HOVB4kmkrb2LMBk_<rrG)7Gs(i-]C1(7H;Gg1]7mfU,4oRPm4#o8[84Q*96:!dt6U<t(5<Ltc
+3&3-/,:+up/ho792DR'H3'9Ah5t(]2$9UL68kDTH5XIk*qaD'gTV/!PU8"EXUnji`VP^8iri,ms
+&$)e6Y-5(7ZEppG[^WcV\c0/I]=bhj^;%J#_Sa=k`=g22aN2EBaN;QHbKJ,RcHjh`d-=[2<Vobn
+<V]SrI=-EhrH\NjG^043s*"EbrH/'\s)S'Xrc%jTq/5hAq/64Ns)@pVs)J*\rcA0`G5c\8G^4U]
+H[L6iIXls"JqJ`1L51SAMN!LRO-#KePEhH#R$sM7St;UKUSOa`;)thaZEpsI\%0)_]t_A!_SjF6
+aN;WLcHaeadaZguf@\g3gtgiEi8N_VjQ>UfkiqBum-O--n*fc9rpg*]o`"O`pAamdq#C0hqY^6i
+r;?Nbrdk*(s*t~>
+JcC<$JcG<@o`"gfrqu]ks8)ckrV-Hgp@eLY9D%iHo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt);&f_*qngAfk*f`'S'f_q]E
+VtI"Z\G`l:[f3ZFZ#ZM*H@UU)NK]a%WO'%Aq6fn(s0_g4"LYVDZa9G6pU0V$q6pF6\$l7Es0r'<
+qRHL5n$r5)pq$C6rji*?q7-@3!OfK4\Gj#=](*?2])'#?]XtfR]`5\F^AYh?_#;+G_YM+J`;[aT
+`r*mR`rF*WaT'?_b00e.rQP>fo[!K_s3^kprR1esec+.pf`0Y#gAfq-g]ZBeh;-rehuDU7iVMR4
+irJ0>jo+?@k6'r4l0A96!:9[OrpKgT%IioYo(2JFp@e7Uq>:*Is%M_8d`KPL]>_@bWMcPeSXZ%8
+R)ZqMZE^X4ObLTr`keULNN72C=^lbPG(>B@:f2arLQ@UdSY2WQ;c-Oq<2ustWKWO3Q'[r2StMaa
+s6[Yt_"th?^A`Q\HiSNlH3/A:GlDpeG5l^`FT6F^Er9qVE;a_ADZ4SRE;aeVEWC1[FT6IdG'A.T
+H2`+<H[L6jIt3'#JqJ`1L51SAMN!LSO-#KePEhE"R$jG6St;UKUSO`aW;OFfYd1UB[^WfY]Y2%o
+_8=.0`lQ9FbK\>ZdF-Oof%8R.g>(N@hr*JQj5f=akNM0plKdg(mf)YZnF?)?oCV\So`Fj]p\jme
+q>^<hqu-HkrU^#>s+^Q(~>
+JcC<$JcG<@o`"gfrqu]ks8)ckrV-Hgp@eLY9D%iHo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt):=RdusESGSfTReMI-K^t6#
+Nt71XH$a.<D/aQ@H[pd-O,s$qp5K67Mi3OQNVe\6MZA_/N<"q/NUi,,O8+h/O8k=AO8"b6O7&,)
+Oo(4?OoCOCOnXt8Oo1C?Oo:I@OoLUDPPUIBPPgUDPQ-mGPQ$gGQ2HsJQiE?QQ^3s8Qhm'LRJN9N
+RJrWTS+W<KSbo#UTDtS`T`ChaU&C_]U].%jV50pdV>[7kVu<RmWW0!uW;rstWr]<&rN,drs/u:'
+!3lI-"1#8?[/RHC[^W`U\[oDb]Y2%o^qdec_>qLQ_uRgVa8X0[b5]ZabYQO/^9FQ.S=#P$OGedB
+IsQHaF)l;@PE(QXL4aqrDN0sCMgTkhHX'N;93X_b?tM\o87H(@D/aQ<G'QYN85;oRIt<0$E,T]9
+FE_qPH$Zmus,d#<plGT=OH>V&P5(1=OSk1=IK+ZpHi86lH$FT5GQ2jdFo?F^F8p:YEW0qUDsVB@
+DuO_SEW:%ZF8g:]FTcl3GBeE4H74,fI=?ZrJ:W<)KS>/9Ll%"JN/is\OckonQ'[l+S"-(ATV8-V
+V5L9iO#4)HZa@0M\[oGe^;%M$`5Ta;aihlPcHsteeC<($f\5'7h;7&IiSrnYjlYail07L!m-X6?
+mfr:Oo()DEo`"Lbp@n=[q#C0iqY^6hr;HTcrdk*(s*t~>
+JcC<$JcG<@o`"gfrqu]ks8)ckrV-Hgp@eLY9D%iHo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SO"$]Xt_a[^EHIYck11Wi2hlUnXQTSt)9G:Z>4F:A%ER=8Gr2<E)1L
+6:!e#6:=:68P;`R:esnaqGHo^r(m;e!)NSjpeUobr(R/dr(m8ds%i>`r_NGg!)`\kq+pZYr_<Dd
+pJ(Z_ohPWa:J^RWoM=RF!)NShs%huXqbdAis%iDd!)NAbr_NAeqGHubq,78kr)*Air)<JjrDW_q
+qc!MorDikur`9)#rD`l!=8Gtp<ruE(=T2J'=92Q.rEK;*!*fD,!*fA+s'>Y0!+#D,s'Gh8@:B.E
+s'u%="D)1XBP@BZs(VXMC2.J^CAVcqCh6mS<)HC_7n#d04Ztnh4?5G^3(HG,6pX"$6U=(.5X%4l
+2`366*[L_;.l0(62DR*I3'05e5=7dt2`Ei`4%i.:8jG^06UjL47RT\:T:_dLTq\9VU].(hV#dHk
+r2:R6WiE/&Y-5%5Z*L^D[^NZT\@K/]]">Vg]tV;]_?[us`5T^8a2\,!$cpH3b0%oOc-FV\d-"I.
+<W5tn<W#hqIK+ZpHi86lH$FT5GQ2jdFo?F^F8p:YEW0qUDsVB@DuO_SEW:%ZF8g:]FTcl3GBeE4
+H74,fI=?ZrJ:W<)KS>/9Ll%"JN/is\OckonQ'[l+S"-(ATV8-VV5L9i;)GM_Za@0M\[oGe^;%M$
+`5Ta;aihlPcHsteeC<($f\5'7h;7&IiSrnYjlYail07L!m-X6?mfr:Oo()DEo`"Lbp@n=[q#C0i
+qY^6hr;HTcrdk*(s*t~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrqQNf!;?Eb9D%iIo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO%&]tCqe\$iZMZ*:C5Wi;nnUnaWVSt2A'f_*qlgABS%f`.iBVtd4[
+\Gs#N[^WWMZu;<2H[pd*N00BsVQRB'[Ips.[JdK4[K!T6ZhUp$[I^j&[fEl6\+[?3\*gd&\bNc6
+\c0/?\bWc5[fNqHppf_%s18'=!kc.Wr4N'Cs1\HHp;$XCqSN'GrP\ZRs2OuWq8NETr5eo["Nnp2
+bfp%1!7(2^rQtSls3gkp"4YlPf([esg&B\*g&9Y(gBHBegYCWArSIY6iVDL4j8\3>jo+?@kPj]G
+lMg)Lm/?>Nmf2_bnF?)?oCV_Lp@nCZqu,OS:%R>rc,IZ9a1nm\W2HA`S=,e3R)?MBZEUF/LoS)(
+`iYb_VMg%,8Td^IIYs%Z;1O=TOHZ''SY/eW;H?gs<N<!sOHPfnQ'[o1StMa_s6[Yt_"th@^&ie5
+If=`sI!^5>HN/9jGlDpeG5l^`FT6F]Er0kUE;FMLDYnAOE;X_UErU4[FT6I`G5c\>G^4U]H[L6i
+IXcluJqJ]/L5(J?M2I7NNfT9aP*;/sQ^F21S=Z=FTqeE[Vl6SpXT$!pZ*UgG\%0)^]Y;.s_Sa@4
+aN;TJc-FY_daQ^rf@\d1gYL]Ci8EVTj5oFckNV6rlg4!*mdKW6nc&([oCW%Ts7QHerV6Egs8)Wi
+rqu`no)=4?L];l~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrqQNf!;?Eb9D%iIo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO%&]tCqe\$iZMZ*:C5Wi;nnUnaWVSt2@>RdusESGSfSRe27-K^b*%
+Nt@;0NaR(GB5)4#Ed)k\K8GZ`NqSG9N/NXRNK*jprJLZ7oo/s1o8W=$r/^T6oT0$6s,Zo9r/^9-
+plYH8!0R8DrfQr:r/po?r/pr@r/q#Brfd2As-*ADs-*JIr0.,Es-<JI"dbO@Q^3s8Qhd!KRJW?S
+R@9P4S+W<JSc#)VTDtS`U&UkaU&Le^U\^edV>[7kVu<RlWW/t"WN)usX8K'oXT5O$YPk^-ZEpq:
+[K!`9\-fdY]=bej^VIY$_>_=N_uRdTa8a3]aiaV+s3)%n[]-!lR$<\pO+W"5I!KpYrc0<)Oc50Q
+Kn+SiK8beNIs5ONBO="g=@6+sAS=S)@Uj%eE,p&CH2^>H:JFPVJUi;iDfBZ9F*;bNH?uptr/g]9
+plPN<rK?o;rK.&?!e5ZJrd=iqH[Ga<s*=WhrceBcs)n9^s)\0[qf2USqJZ4JqeuIQr,MaWs)\0]
+s)e<brc^&@H$Xd`I!pElIt3'$K7ei3L51VBMN!LSO-#KePEhH#R$jG6St;UKUSO`aW2Zeurf9%D
+Za@0M\[oDc^;%M$_o9X:ai_fOcHjnde'uq"f\,!5h;-uHi8WeWjlY^gl07L!m-O--n*fc9rpg*]
+o`"O`p&Ojcq#C0iqYU0hr;HTbrdk*)s*t~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrqQNf!;?Eb9D%iIo()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO%&]tCqe\$iZMZ*:C5Wi;nnUnaWVSt2?H:\%?Y;>3oZ:A@WS=8c2"
+<=Mtm5tF7)6:F:47nH9Hr_WDfp/(W^r_<Ghr_WDds%`Gc!)EJgr([5fohPK^pe^`]p.kQ\s%N/]
+s%`5_!_uNeo1npRj\PqQr_EJhlqmRVs%r_kpeUrdpeLc`qb[,dpJUfcs&/emr)3Djr)3Gk!*&ho
+s&Anr!*9)#!*9%upK%,ls&f;(r`B2(>5hb+>5qh%>lS+/>QA(*?3FVC?t!LC@K9p;A--=SB)ZKC
+Ba&6cBkhBsrbDCI%qf6Q<DZ@\8Oc*85!:tj4oRDC2`O8qr^&M,4@2>#5sIFi2`<?=*%*9h/29%C
+2DR*I3''2e5=.as2E*c_4?H/,83fC+6UO=277BU5St>qRs.BFeU8%X^s.gR0VP^8iVl-JmWiE/&
+Xfek2Yd1UC[^NZT\@MUM#.qO]]tV:urke]Q'Z@u/`Q#p<`lH0Aai_cMc-=P[cdCfSr`/ttpf7>n
+!e5ZJrd=iqH[Ga<s*=WhrceBcs)n9^s)\0[qf2USqJZ4JqeuIQr,MaWs)\0]s)e<brc^&@H$Xd`
+I!pElIt3'$K7ei3L51VBMN!LSO-#KePEhH#R$jG6St;UKUSO`aW2Zeur_YY[Za@0M\[oDc^;%M$
+_o9X:ai_fOcHjnde'uq"f\,!5h;-uHi8WeWjlY^gl07L!m-O--n*fc9rpg*]o`"O`p&Ojcq#C0i
+qYU0hr;HTbrdk*)s*t~>
+JcC<$JcG9?o`"gfrqu]ks8)ckrV-Hgp@eLY"n_EWo'u5Kmm$4+m-Es$l0%3kjl>C\i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi2hlUnXQTSt,f4p=]2oqq:o"r20"^r3u4+
+s0iNI[EOf=I=$R$MNa?rTrYX![Igm-[JmQ4[K!T6Zh_!$[I^j&[fs4L\%&oVosk%2n$r2(qRQ^>
+])9,<\cB;:\GWf:[^Z%AmCE8.qRZgA]=\!Rs1SHHrP/'ArPA?Ipr!*LrPefVr5\WQs2Y)Zs2k;`
+!mAg3rQYAfo[!K_s3^kprR1o!e^i@(pt,T"rn7A*rS%8*"l.kegtgfbhuDU7iVMR5j8\3>jo+?@
+k6'r4l0A96!:9XNrpKgT%Is#[oCMVIp@n@Yqu$HTs%3.Ph9X-^_S*aqXJi(nU7RgAR?tq.[Bd$@
+WK)Y?_T03]LSCAn?#=CMDg7(r:JuXnLQ@UeS"H<L;GpIo<)orsWK<:,Q'I]'rgj+aZ2a1,pV?^A
+pqHcYs*k#trI"`pH[Ga<s*=WhrceBcs)n6]s)\0[qJl=MrbqXPqJlOUs)\0]s)e<brc\BfH2`,3
+H[L6iIXcm!JqJ]/L5(J?M2I7NNfT9aP*;/rQ^F21S=Q7ETq\?ZVl-MoXKAY@^pCDV\%&u\]Y;.r
+_Sa@4a2lEHbg+P]dF6Uqf@S^0gYCWAi8ESSj5f@bkNM0qlg4!*mdKW6naZ2@oCV\Jp%J+Rp\sse
+q>^<hqu-HkrU^#>s+gW)~>
+JcC<$JcG9?o`"gfrqu]ks8)ckrV-Hgp@eLY"n_EWo'u5Kmm$4+m-Es$l0%3kjl>C\i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi2hlUnXQTSt,eKo:,THqj[PQ!1Wn<nUpb#
+n<![2%?@6*K4ek5DK0fFIY*CMNqSG6N/NYoNW"h6MZA_0NW4t/NV8A6O,f7tO8"b.O8k:AO7n\6
+O6r&(Oo(4?OoCOCOnXt8Oo1C?Oo:I@OoLUDPPUIBPPgUDPQ$gFPQ$gHQ2?jNQ^3r(QBqH8q3V/M
+qj@AN!LfMNSGJfSScGG\T)t[ZU&Le`U&C_^U\^edV>[:kVuEXmWW0!uW;rstX8B!nXoGR%Y5kg+
+Z2_-0[/RK5\,Wu<\HKOW]Y2&Y^];4M_>qLQ_uRgVa8a3]aiaV+4NY1<V4X3COc>BVK7JDuH$47L
+EcI;'MM[(?I;s+ZNK/^<Bm4T-6r6`E<*NmI7n@&uB5DL-FE`"%84`_S$VQ&$JT#LGDfTrCGQ)jh
+rVlf's7qcOOnt1>Oo(=;Oo1=@JH(*!If4ZrI!^5>HN/9jGlDpeG5l^_FT6F]Er'eOE;jePE;FSS
+ErU4[FT6I`G5c[dG^9:7FF/C`I=?ZrJV&N,KSG5:M2@+KN/is\OckonQ'[l+S"-%@TV8*UV5L5j
+WiW>*O,pWS[^WcW]=bkm^r"".`lH0CbKS8Xd*^=le^rF+g=tE=hVd>Nj5]4_k3(smlKdg'mI'H3
+nF?&>o(2MGp%A%Pp\4[^rqZTjr;6HjrVc?eJcCN*J,~>
+JcC<$JcG9?o`"gfrqu]ks8)ckrV-Hgp@eLY"n_EWo'u5Kmm-:,m-Es$l0%3kjl>C\i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi2hlUnXQTSt&UH;#4&_;#F&X:Ae/]=8u;&
+;E[>F5Q=(T77Tj>8l&:Z;>*i`:]F/i:]4,c:B4/d9`Rre:]*rf:\@K_:\R]\:\IQ^9`Rl\:&dug
+:B45d:BF9e:\%9R:ZYCQ:]=,h:[CpT;?'Jl:]4)i:]=/j:\[]`:\mob;>*o`;ZK_o;>a>h;uKVk
+;u]hp;u]hp<<-)!=8u>#<W?)"=8Gtp<s2Q*=BSf+=92Q.rEK;*!*fD,!*fA+!+#S/!+#D,"CGPE
+@:B+D!+Z"=!G,mBB`;]GCAqrEC+j@;@9co4;+jPP6q'='4?GYf3BB,[7R][469[S#5sR_$4?>J]
+0e==m.4-Mu2)tRl(H+664[22!6T?t`4$Gbg8kDQ=5=.\(7/]Oh7%Bg=St;RHTV/!PU8"EWUnji`
+VPa?js/7$=WiN5'Xfnq4ZEgjF[^NZT\@K/]]">Vh^;%J!_8=(g_\0i(`5KX7`lH0Aai_fNc-=P[
+d,A%)<<-"n<W@ULIfOrrI0+eCHiA?kH2i-gGQ2jdFo6@]F8g4VEVXSQDu+GLEW:(ZF8g:]FT?Ua
+G6)r6rd&[5I!pElIt3*%K7ei3L51VBMN!LSO-#KePEhE"R$jG6SXuLJU84W`Vl?\tXfbMuZa@0M
+\@K5a^;%J#_o9X9aND]McHjkbe'uq"f@em4gtgiFi8N_VjQ>UfkiqBum-O--n*fc9nac8Bo^qhL
+p@e7TrqQKgs8)ZjrVZWmoDX=@L];l~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_njDs:n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJSaN)9<_SO"$]Y(hd\$iZMYck11Wi;nnUnaWVSt5l5o@`rnr7V##!8%%DoV_Mo
+osk%2&@T!PZ]CfPI=d*/O->m$WO2W3o="V)rjDI,p9jM#osY"4\$u%?s0qI,q76:3r42g<!4hp8
+r3l^8\+mK#\c98;]DoMD]DT>A^&PhF^\5JA_>;%D_u@UQ`W*sUa8*aTa8F$YaT9Q-rlk>c!7(5_
+rQtSlrmLep"OtuQf@TiNrn7>*s4RD*qV)&+h>Q71i;)C4j8S-=jo+?@kPj]GlMg)Lm/?>Nmf2_b
+nF?)@oCV\Jp\=U^r;GdX8FYQgbK.Z:`kARSVP^&[S=,b2R)6JBYct.+LTA/,`Mo;aWJP_"@sUgm
+Jr<9$:P=F^P*qf4T28E_<E<%tWMleYOcu&pQ^IcD!MZ6js8Be6_XbP;_#1tC^Aic`JH(*!If=cq
+I/eQmHN/9jGlDpeG5cX_FT-@\Ep.NBErU4ZFT6I`G5c^cG]J(UH@($fI=?ZrJ:W<)K8#&7LP^kG
+N/WdXOHG]iQ'I]'R@B_;StMdOUnsrdWN*&%Y->1H['d?P\\#Mf^VI_(`5Td<b0/#ScHsteeCE.%
+f\5'7h;7&IiSrnYjlYail07L!m-O--n*fc9o()DDo`"O`p&Ojcq#C0iqYU0hr;HTbrdk**s*t~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_njDs:n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJSaN)9<_SO"$]Y(hd\$iZMYck11Wi;nnUnaWVSt5kLo:,QGr1!YRs-s"=r.=Qn
+q2b31rf7SMNK%n'I;*D5E-6DQJ;&pWNrP(=Nqn\6N;eh8N;SS6N:r82N:`,&NWP9%Nr+n3OS+\+
+OSk1,OSFt8O8tFBP5^U;OSt=>P5LI@P5LIBP5^[AP5gaDP5gaFPl6gFPlI$GQN*9PQC%T:r0R8I
+!1E\N"IY^IS"',AqORPUqOde\!29@cr1X(`qP3k^!2]Xks/5jpql0Uq"KAE$X/l)urN-($rN-(&
+qlft'!j]/>rj<*A\%&rY\\#Me]tOB["2Vjk_u@RT`Q%nts2Z>)b0.].WM,iKP`ClcK7JGuH$FFP
+F)l8^N/<:BIsl3erf&(LF`)P=<'s>a6!7W15tFCRA8H1)FE`%%8OlNM97VSEJGsKjDfKlBGQ)jh
+HN!gArj;_!OSFt:OT(C=P5:=?OT0n2JH(*!If=cqI/eQmHN/9jGlDpeG5cX_FT-@\Ep.NBErU4Z
+FT6I`G5c^cG]J(UH@($fI=?ZrJ:W<)K8#&7LP^kGN/WdXOHG]iQ'I]'R@B_;StMdOUnsrdWN*&%
+Y->0l['d?P\\#Mf^VI_(`5Td<b0/#ScHsteeCE.%f\5'7h;7&IiSrnYjlYail07L!m-O--n*fc9
+o()DDo`"O`p&Ojcq#C0iqYU0hr;HTbrdk**s*t~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_njW*<n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZOgcHOJSaN)9<_SO"$]Y(hd\$iZMYck11Wi;nnUnaWVSt/YQnkf-Zp/(QZoM53_o2klk
+$p?pA5!VD%6q0[<9MG7Zs%i\mqG@#a!_uNerD<>ds%`Db!)EMhmnWjXpJCW\p.k-Ps%`5_!DZG\
+:A%EE:]O;j:B+,V;#=,i;#X8d:]O;d:Adob;#4&`;Ya5k;Z'Di;Z'Jl;YsDm<;]\p<;]br<rZ8$
+<WuK&<E<.%q,[>ns&]8(rE')'>5hb*>5_\+>Pq_+?2\".?27h,@/aU5@f9g<AnV*V!GQ<IC&_oJ
+C&ViRAR/D<;,0_T6:Cf<6TdLp3]K)Z3(?;&5X7Lq6:!k'5W^qa2_u^#,VCW#1H7'G0K(mO4[22!
+5r^e^5!M)$8P)N>5XIh*6q'L4779S7SGo)ZT)YG_TF.BeU8+HXUnji`VZ!FmW"5l.XKAV-YHY==
+Za@-K[^Z7G$G!aZ]=kqm^VI\%qn`r_`5KX7`lH0AaihiMbg"G[d,.mu<W@XLJH(*!If=cqI/eQm
+HN/9jGlDpeG5cX_FT-@\Ep.NBErU4ZFT6I`G5c^cG]J(UH@($fI=?ZrJ:W<)K8#&7LP^kGN/WdX
+OHG]iQ'I]'R@B_;StMdOUnsrdWN*&%Y->0.['d?P\\#Mf^VI_(`5Td<b0/#ScHsteeCE.%f\5'7
+h;7&IiSrnYjlYail07L!m-O--n*fc9o()DDo`"O`p&Ojcq#C0iqYU0hr;HTbrdk**s*t~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV0+]p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTgA]arg%jA"g&0M&fCl*:VuO7#
+[edH9[^W`RZi7<?ELUusJ:rc>P*MZ8Xo>a*[K*f5[f3Z4[J.'$[I^j"\,Wr<\+R62\*gd%\bWi5
+\c95@\bWc5[fNqHpUKY%s18'=s1A?Dr4N'Cs1\HHp;$XCqSN$Frl"cSrl4lVq8NETr5eo["Nnp2
+bfp%1!7(2^rQtSls3gkps4.,#qUkf#s4[M+rn@5'!o2Vgrnm_5!9*e6s5X+>roO+@roXRNl07Ku
+lg*p(rU'UPs6p!Xs7?9_#PIfcq>:*grosGHq;g>V`lGp1]X+Z:VP9]SR@0D/`4radYcascK"JtB
+\=nSDP_E.JFA$\)LeCQ@It`lFR%9kA:f:.j<)TaqW=5#TQ'IT"R\$+CU7e6`rr^*S_SQ/eo>17<
+qS2m@s+:9%rdY'"IX_9Es*Xinrd+Tis*4Kds*"Ebr,hmYrGqFJrGqpZr,hs]!-\?cs*+Nhrd&=+
+I!pElIt3'#JqJ`1L5(M@M2R=ONfT9aP*;/rQ^F21S"6.DTq\?YVPgDnX0&P/Z*L^D[^`lZ]Y2(q
+_8=.0a2lBGbg"G[dF-Oof%8R-g=tH>hr*JQj5f=ak3)!nlKdg'mI'H3nF?MK!V>s_p&Facp\ssf
+q>U6gqu-HkrU^#>s+p]*~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV0(\p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTn!j-Cr1!YRrgWe9r.=]rooJs2
+"HSY+O,a.!$t+?dB52:%FE`(^KSfPcs,@#=qi(]<NJrhpNW+n6MZA_1NW+n/NV/>3NrY4;O8"b/
+O7SJ2O6r&(Oo(4?OoCOCOnOn7Oo:I@Oo1C@OoCODPPUIBPPgUCPQ-mFPQ-mHQ2?jIQi*0IQhm'L
+RJN9NRJrWTS+`BJSc55VTDtPaU&C__U&C__U\U_cV>d@kVuN^mWW0!uW;rstX8B!sXT5I#XT5O%
+Y5kg*YlV2<rj?gU\%&rY\[oDc]tM.q_8*n'_Sa:0`5T^8a2c9Bai1`kV4F$?OH,9RJU`,qG^"7N
+EH75&MM[%>I;s([NfSm=BQJ$"5YP3F<aTE(7RgitCMn07G'Z\M7SQTLIt3*#E,fi8EcZDKG^4R\
+I/Np@rVlf's7;?IOoLOBOnY%;OoCIBK)^E$J-(4LIf=cqI/eQmHN/9jGl;jdG5l^_FT$:ZEq+/J
+ErU4YFT6I`G5c^cGQ<$gH>7eSI=6QoJ:N3&K7nr5L5:\CMi<UTO-#KePEhE"R$jG5SXuLJU84T^
+Vl?\sXfen5ZEpsI\@K2`]t_A!_SjF6aN;WLc-F\`daZdtf@\d1gYL]Ci8N\UjQ5OdkNV6rlg4!*
+mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@M#Vu~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV0(\p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTr_N)]q,-f]p.b<WoiCfgr)O4j
+68q1o5sn%17nH9HqGI8h!)`ShqG.,e:]+&c:B4/c9`Rrf:[_'X:]+#h:]4,b:\IQR:&du]:B=3d
+nP8aQj\PqQr_EJhlqmRVr_WVjq,%)eq+gi`qb[,dpJUfcs&/emr)3Djr_iSk!*&kps&Anrs&T/$
+s&K>(<)lq!<`f,uq,[T!=o;A%>5_\*>5__+>PMJ'?2n42?2\(1?XWh@raH(AA7]:_AnV*Vqe?(F
+s(Ou2>#nKs9hIrE6U!Xp4?Ybd3&rof770I/5!D:u5X@Xt3B/rP//ore/h8Y70/YRB3''/d5=7as
+2`<i`3(lh68jG[05sn'=70l:M8Xl3>S=Q5MT)YG_TEq6cTq\9VUnspdV@TT'W2ZhuXKAV-Yd(L?
+['fnAs0i0A\[oAa^&G_a^VI\%_SO+*_SX4/`5Ta:a2lBEb0.uQcd0tm<r,hrK)^E$J-(4LIf=cq
+I/eQmHN/9jGl;jdG5l^_FT$:ZEq+/JErU4YFT6I`G5c^cGQ<$gH>7eSI=6QoJ:N3&K7nr5L5:\C
+Mi<UTO-#KePEhE"R$jG5SXuLJU84T^Vl?\sXfen5ZEpsI\@K2`]t_A!_SjF6aN;WLc-F\`daZdt
+f@\d1gYL]Ci8N\UjQ5OdkNV6rlg4!*mdKW6nc&([oCW%Ts7ZKerqQNhrqcQirVZWmoDX=@M#Vu~>
+JcC<$JcG6>o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_njDs:n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVg=ZAWr7LDir7M&$!8-n?qksA$
+s0ha2!4Md6'"53T[BXS8OaDV3L5V4\S"QdgqR-C5qmHL4rj;X3pU'Y%o="G'!k>_Kn[JS.m^W,(
+pq$=4s1/3@q7-@3!OfK3\F-p-](rr=]Y"*Ss1SHHrP/$@rk\HJpr!'Krl+lVr5\WQs2Y)Zs2bDd
+bKJ,RrQYAfo[!K_s3^kprR1esec+1sf_sJ'gA]e)gA9P)gtr%frS[M2!9=%=roO+@roXCIl07L4
+lN$;MmJcPRmg\dVo(2JFo_%tSqY^<klMj$7i7-#l`P0@)YGe@rTq7aBR$j8X]XG&KX/UlNZbXMY
+RZ48$EEQn%9m;>M:JlRnLlmmlR\*AR;,pRnWrAptPEPp1#a_$PStD^MUSP!k!5\ZOs24cOotgI>
+qS2pAre(6&!.k*!!e5ZJrdFfos*O`ks*=WhrHJ9brcS*[r,_IMrH%jXs)n?brc`1'H$O^^H[L3h
+I=?ZrJ:W?*KS>/8Ll$tHN/WdXOHG]iQ'I]'R@B\:StD^NUSOcbW2co#Y-5(8ZaI6N\[oGe^;%M$
+`5Ta;ai_fOcHjnce'uq"f@em4gtgiFi8N_VjQ>Ufkiq?tm-O--rpL'\nac8BoCW%Ts7QHerV6Eg
+s8)Wirqu]moDX=@M>r)~>
+JcC<$JcG6>o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_nj2g8n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVn!j-Cr1!YRrgNnXr.=lur.=fu
+nrNX/s,R_OO,RIhEG'$'DfKrII=[-2rJpo;s,Qu9"-/A"N;eh8N;JM5N;&>2N:i2*NWP9%Nq\V/
+OSOq>OH5Kao8rm2rf@,@nW<O.qiCf?rf[8Cp5o37rK@)@r0%#@rf[;FqNCiArK@/Ds-3GFs-3MJ
+qj%5Kr0I8IqNq8NqO%8M!LfMPSG8ZST(noZTV8(YU&gs^rLs1aqP4%c!2KLg!2][lrhodpqPa\!
+WMuntX/l)uriQ4%rN-(&ql^"(rilL0Zi.9J[^`iX\[oDc]Y2%o_8*n'_SX4.`5KX7rl77E^Tj`1
+SX,P$OGngBIX66`FE2GCE0?0;L4au(DLdG"NIH"fH=]uA9O0tgA8+M'@:NqdE-$/I84Z3E9hU!8
+J-Bk1DfKf?rc\KjH@(!drVZ]os8KD*n<!@+pQGH:!0I24s+16%rI=s!IX_9Es*Xinrd+Tis*4Kd
+s*"BaqfMaWo5aeNqfMj\s*"BcCj:5NH?spcI!pElIt3'#K7ei2L5(M@M2R=ONfT9aP*;/rQ^F21
+S"6.CTq\<XVPgAmX0&P.Yd1UC[^WfY]Y2%o_8=.0`lQ9EbK\>YdF$Fme^rF+g=tE=hVd>Nj5]4_
+k3(sml0I^&mI'uB#4V0Ro(2JFrq6<b!;HHes7u]kqtpBjr;H6dJcCT,J,~>
+JcC<$JcG6>o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_nj2g8n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaWVrD29Ho1f*WnlGQfrDj@k5WM(n
+5XIh-84Q9H:&Rrh;#aDh;#!ia;#=&g:AITc:/=[S:B"&d:]O;j;"mcZ:@V$Y:@q<_:/CCTohX[G
+!)NShs%huXqbd>hs%iDd!)NDcr(m/cqbd&bq,78krDEGir)3Yp;c<Nl"&r2u<;fbq<;T\q<XDi.
+<`N*u<E<.%qH!DnqH*c$>5_Y+>$Lu2s',5&s'5\4?![D8!+5\5raPn;#A%FWAS5XhB_uNDC.Dc?
+=&`$k8P)695X.Fn4?PY`3]8ia770F.5!2.t5<qCn2`<QL,9J6e/2/q@1c$sJ3BKAf5X[Oi2Ej;b
+91_ZH5sdq+6:CfAs$QoX8P8rMs-s%Ys.97_s.BUjU7n<UUSO^bV>mFmVuN\3WiN2%Xfen5ZEpmE
+[C3KO\$rlX]">VgrkABHs1nWMs2"lU`5KXo`sKi/ai_iOcHjkbgK+2Ore(6&!.k*!!e5ZJrdFfo
+s*O`ks*=WhrHJ9brcS*[r,_IMrH%jXs)n?brc`1'H$O^^H[L3hI=?ZrJ:W?*KS>/8Ll$tHN/WdX
+OHG]iQ'I]'R@B\:StD^NUSOcbW2co#Y-5(8ZaI6N\[oGe^;%M$`5Ta;ai_fOcHjnce'uq"f@em4
+gtgiFi8N_VjQ>Ufkiq?tm-O--rpL'\nac8BoCW%Ts7QHerV6Egs8)Wirqu]moDX=@M>r)~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNf!;?Eb8+cEEo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'cXicHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5X/`+rV50iZg\fb&f^7AffDsOmVZ3Ri\,Ni3
+[JmW6[1K[MZETI-H@:F#MN*daT;8Xf[f<i7[f<c8[/@?3ZiIN2[.Uj#[K<qH[eR?3\,a#.\,a#+
+\GNi2])&u;\cB;:\GWf:[^Z"@m^`A/q7?[?]DT>A^&PhF^\,DA_>1tD_u7OQ`W!mTa8!XSa8X0Z
+aoBK`bPo`ablH&]ci)5jdJhSndfItKrn%#!rRh2)rn7;)rn@G,rn@M0h;8.grnme8qVhM8r8dn>
+r9"%B#jCO;lK[^$m-O]<s6fpUs6pEeoCMVHp%J4Xqu$EZs%i=Hg!%IU^qm^iX/MniT:VF<R$j;Y
+^9t2LXK%,/Yee8[SUmDdF')q#:3VDM:JlRmLlmsnStAhV:K:;NWMleoP*D5rQ^XM;TV8$RV5C<n
+s2"]Or58QOotgL?pqQdA!el;\rdt9(JV!fNs*t&trdFfo!.4Zjs*=WhrHJ6arcS$Yo5jbMs)n?b
+rHA<fH$TC8CjUPXI=?ZrJ:W<)K7nr5LPUeDMi<UTO-#KePEhE"R$jD4SXuIITqeE\Vl6VrXKA\1
+ZEppH\%0&]]Y;.r_Sa@4a2lEHbg+P]dF-Opf%8R.g>(N@hr*JQj5f=ak32'olKdg'mI'H3nF?MK
+#kR]\p%A%Pp\4X]s7u]kqtpBjrVc<dJcCW-J,~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNf!;?Eb8G)NFo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'cXicHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5X/`+rV50iZS=K)<qOIJQrL*_UrgWtXn:L[m
+mZ7@/rf7VNNK&m;=_;DbD/sfEI"?s.rf-u<rf6l8!fi8!rJgc7qhkH5pl562pl,?8NK*^ns,R/?
+pQ,'1q2YQ<O7A>0O8k=AO7JD,Oo(4?OoCOCOnOn7Oo:I@Oo1C@OoCODPPUIAPPp[DPQ-mFPQ-mH
+Q2?jNQ^3r(QBqH8nsKEE!h,UJpmh,MrgrnWs.B@cr1a.`rM'.`rhKOhrM9Iis/,am!3#an!36$t
+s/Q+"qlKe!s/c.#!3Z7'!3lI-!j]/>rj<0C\%&uZ]"5Pe]tM.qrP8QP_o)Jl<Q2tu_R?J?SX5V&
+NJiOCJ9uTdG&q\EE,q,$M2$_7I;`nSNK/L3Ap%Wa6;(TM=^u/87q#nADK'Z?H:LIp9hfMUJUi5h
+DfKf>G'J4VH@(!gJ,9'Ar;QZprjDdpOS+b1P5ULEKnP-YK*$XUJc:3"J,ausIK+ZpHi89jH2i-f
+GQ)dbFnp.NF8C"YFoQX`G63#7H2`,+H[L6iIXcluJV&N,KS>/9Ll$tHN/WdXOHG]iQ'I]'R@9V9
+StD^MUSOcbW2co"Xfnt7Za@0M\[f>b^;%J#_o9X9aND]McHjkbdaZguf@\g2gtgiEi8N\UjQ5Od
+kiq?slg4!*mdKW6nc&(boCV\Jp%J+Rp\jmeq>^<gqu6NlrUTr=s,-i,~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNf!;?Eb7eH<Do()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'cXicHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5X/`+rV50iZr_NMir(lcX!)N>cn4ipXmT03d
+rDj=i2aBJk5t".37n?3Hr_WYlr_`Mgq+h#f;>j>g:B4/b9`e'c:]!le:\IQ^:]=/l:Jajd;"mcY
+:@_*Z:@q<_:/CCTohX[G!)NShs%huXqbd>hs%iDd!)NAbr(m2dqbd&bq,78kr)*AiqGRAlr)3bu
+;cH^p<;oer<;T\q<XMo/<`N*u<E3(#=8Gtn<rlE+r`B8(=B\o->6.o3r`oG,pKRf+?<pk8?3+D@
+rF,\7!+Yt=!G6!DB`DdHBPD0l?WpE+:eO;I770:'4?G\f3&irW2+Bu#6U<q!6U3k%5<Cha2D-<t
+,VL`'1cR<J1cRKV4[DG$3&`c[4@Vn58kD676:+(.77K[67S$3FR$mrBrgWqXs.(:(T:_dLTqS3T
+USO]^V5C)dVl-JnX/i>(Y->19ZEpmErj<<G\$rlX]">Vg^:q:p^VIV"rkScT_o'F3`r=!aaN;QI
+c-=P\d+MIu<<@l-K`6T*Jq8LPJH(-!If=cqHiSNlHN/9jGl;jcG5cX[FRsSMFT6L`G5ZUdG^4T6
+H>IqUI=6QoJ:N3&K7ei2L51SAM2R=ONfT9aP*;/rQ^F20S"6.CTqS6WVPgAmX/rG,Yd1UB[^WfX
+]=bkm^r"".`lH0CbKS8Xd*^:ke^i@)g=k?<hV[8MioB+]k2tmll0@U$m-X60n*olHnd+jZo_%nN
+p@n=[q#C0iqYU0hr;HTbrdk*,s*t~>
+JcC<$JcG3=o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_nj2g8n*f]3m-Es$l0.9ljlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaX<r7V##mFhNlrRq5'!S>ojV?"(!
+\,Ni4[JmQ5Zi@9?Y@q`jIY!<3N00BqTrYR"[f<i7[f<`8[/792ZiIN2[.Uj#[K<qH[emN;\@8rW
+\@:>)qRQ@3qml^;!4hp8qR?4/m^`>.qRcU:s1SHHrP/$@rPA?Iq8<0LrPefVr5\WQs2Y,[rlP2_
+!6bAcrQP>fo?[B^s3^kprmLque^j`Oqq1i"!8@G*rn@5'!SlQ2hu2L/ir%m:jo+?@k6L58l0@R"
+lg4T;s6fpUs6pEdo(2JFo_/%Tqu$E[rt+GPe'#eN^rEg`W2QMaT:),HQmoqg\[J`GXK.20ZG+>^
+SUmPkG#i$t9Qu,I:JuXmLQIdkSY&_V:fUDarhp9iP*D5tR@TqATqS6XVPsOp_>_=J_tCkB_"b\C
+^''1EKnP-YK*$XUJc:3"IfOrrIK+ZpHi89jH2i-eGQ)dbFm=)JFoQX`GQ2mfH2`,2H[L3hI=?Zr
+J:W<)K7nr5LPUeDMi<UTO-#KePE_?!R$jD4SXuIITqeE[Vl6VqXKA\1Z*UgG\%&u\]Y;.r_Sa=2
+a2lBGbg"G[dF-Oof%8R-g=tH>hr*GPj5]7`k3(smlKdg'mI'H3nF5u=o(2JFrq6<b!;HHes7u]k
+qtpBjr;H6dJcCW-J,~>
+JcC<$JcG3=o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_nj)a7n*f]3m-Es$l0.9ljlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaX^SFW0GSG\iVRf&ZTSH#)HJcLhu
+O8P%<N"CnI=B]BQCi4<;H@CBuN/insNr4n:Nr4n7N;JM5N;/D1N;8G7NfB%nNrP.?Nqe\0OSY%;
+O8t@3OSk1>OT(=4OS=n7O8tFBP5^U;OSk7>P5LI?P5UOBP5gaBP5^[CP5gaGPl$[EPlI$DQ3*D=
+QMd*GQiNQMR/`TSRK/iPSG/TRT)##YTE(\_UAgkaUACYbU]@1fU]RBiVZ!CmW:m4jWrK-rXT,F%
+XSo:$Y5GI,Yd(I=ZEsP<s0`HI\[f;_]=bhj^;%M$_8=(g_u@Re`Oi=OTUM42Nf]*LIslZgGBIp)
+E]]DDMi*:BJ:2?PKoD%BG%Pr1=?oJ`6<Rf47n@&uB5MU/Fa?PJ7SQU'J:W5hEH#o=G'A1UH@(!f
+J,0*?!;lcns8Drr[K#]Woo]!3rK.5;KnY25rdt9(JV!fNs*k#trI+]n!.4Zjs*=Whr-/-`rcRLJ
+rcS6arHJ9d!."QiF*i:^I=6QoJ:N3&K7ei2L51SAM2R=ONfT9aP*;,qQ^F20S"6.CTqS6WV5L8l
+WiW>+Yd(OA[^WcW]=bkm^r""-`Q-'AbKS5Vd*^:keCN7(g"P3:h;@/KioB(\k2tjjl0@U$m-X60
+n*oi:o()DDo`"O`p&Ojcq#C0iqYU0hr;?Nbrdk*,s*t~>
+JcC<$JcG3=o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_nj)a7n*f]3m-Es$l0.9ljlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck11Wi;nnUnaX\:]=,`:\mod:\IWQ9`S2Y<r>r.
+2`<NV5X7\'7S$*C9hnP^r_`MgqG7,f!)`\kr(m>fpe:ca:\mfd:\d`e:JO[`:]=2h:]F8d:\@KQ
+9`Rr\:[_'O:ZYCQ:]=,h:[:jS;?'Jm:\[`d:\[]_:]!ub;>3ua;u]bo;>a>g;ZK_n;u]es;uTbq
+;ZKen<W,qu<W5r"<E<.%qH!Dn!E`M(=9DW,=^(],s'5S.!*],%r*B8-!+5\5raH(AA7]@aAnV*V
+rb4c6@9ci3:eaMO6:4%&4$>Yf2`EWQ2+Bu%6U<q#4@;D"5X.=i2`338*$['f/i5OF1c.-O3^,eq
+69$n_5!2G/84l-5r^-u[77BU57S$0EQN!3NR/WKSR[a;Hs.'LgT:_dMTq\9VUnmpb&#Q8'WN)u!
+Xfek3Z*CXA[/RHF[^W`U\[oDc]tM.n^:h7q^VKib&]2H'`5]g;a2l?DbKS8Xcd:(m<rH#$L4t>7
+K`6T*Jq8LPJH(*!If4]pHiSNlHN/9jGl2dbG5cXLFT-F_G5ZXbGQ<$gH?4F\I!pElIt3'#JqJ]/
+KnbA=M2@.LN/is\OckomQ'[l+R[]k>T:qsRUnsufWiE/&YHY:<['mHR\\#Mg^VI_(`5Td<aihoQ
+cHsteeC<($f\,!5h;-uHi8WeWjlY^gkiqBum-O--n*fc8nac8BoCW%Ts7QHerV6Egs8)Wirqu]m
+oDX=@MZ82~>
+JcC<$JcG3=o`"gfrVZTjs8)ckrqQNf!;?Eb9D%iIo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`<
+f[n^(e'cXicHXPTaN)<>_ns4(]tCqe\$iZMZ*:C5X/`+rV52o#g"P05g&0Lcg&K\+f@JL@VZ+%#
+\,Ni9\,Ni5[1osSZ*CO:B52=3J:r`:Mj'HuV6.3*\,Ec7[/dT2[0!_C[J[E)[J[H=\$i`S[^NZS
+[emQ6\,a"l\GNi1])0&<])T>9\GNc0\F-p,])'&7]E#YE^Abn?_#;+G_YM+J`;R[T`r=!ZaN++r
+rl>#Zs2k;`s3(GdrQP>fps/rcrQkGhs3^kprmUns!7q/$qq1i"!8@G*rn@5'!o2Vgrnm_5!9*e6
+!9="<s5j1@s5s[Ol07Kulg*p(rU'XQ!:TpV!:p-\s7?Khq"jmdrp]q[p#4TL`l>a5]WnH5W1fcP
+R$jA/Qc$DCZ*:C1O+sL7^Vm:GJYIs<?:T?8FF]<B<.9CROHc9)T2AK`<)[P2W2PoCPa.Q'SXuJQ
+U&h-iVuQb4rkeNLrkeHHqnVp?s1SJgreCH,!/1?(s+16%rI=s!IX_6D!do?ArHeKhrcn?brc\3^
+oQ:%Src\3`s*+Nhrd+Tk!.=coBmtP^J:W<)K7nr5LPUeDMi<UTO-#KePE_>uR$jD4S=Z@GTqeE[
+Vl6SpXKAY0Z*UdE[^`lZ]Y2(q_8=.0`lQ9EbK\>YdF$Fme^rF+g=tE=hV[8MioB+]k3(sml0@U$
+m-X60n*olHncA@Srq6<bs7cKes7u]kqtpBjrVc<dJcCZ.J,~>
+JcC<$JcG3=o`"gfrVZTjs8)ckrqQNf!;?Eb7.g*Bo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`<
+f[n^(e'cXicHXPTaN)<>_ns4(]tCqe\$iZMZ*:C5X/`+rV54*\s.01[oUG]Ip7))PrgWA.r/U]9
+rf6]5s,R,<s,.=d<`s'MCN"99G^P$qM>`J4NW5%;NVe\4MuSb3NVeY@NK0!XNfB$YNfEgoqi:`;
+qiCK5qN('+r/^i=rf?W3plYH8!0R8DrfQo9r/pr@r/po?r/q#Bs-*;Brfd8Cs-*JIqih&Es-<GH
+!gf4>rg*JKqj7AOq3_/L!LfMQSG/TRT)##YT`:_`UAgkaUACYbV#R4gV#R7kVYm@bWW0!uX8B!t
+XoGL#XT5O%Y5kg+YnF@K['d<M[^WcW]"5Md]tM.p_#;.K_\9u&ZDjUiR$E_oN.cb2H[9jWEcD"t
+4ckVZKnY,,F)HM]NK&I3Ap7ib76Fd?=CGo087?"@D/aW?Gt:Iq9hec@JUhZXE,fo@GBe@YH[L<m
+q"X[aq>gElr;Z`qrjDdoOS+b0P5gXEL]3&.K`Hf*KE$N'Jc1*#IsukFI0+eCHi89jH2`'dGQ)d`
+FnBeSFoHR^GQ2mfH2`-iHN8HmI;+.[J:N3&K7ei2L51SAM2R=ONfT9aP*;,qQC+)/S"-(BTV8-V
+V5L8kWiW>*Yd(O@[C3TU]"G_k^qmn+`Q$!@b0/&TcdC.heCE1&g"P39h;7&IiSrnYjlYail07L!
+m-O--n*fc9rpg*]o`"O`pAamcq#C0iqYU0hr;HTbrdk*-s*t~>
+JcC<$JcG3=o`"gfrVZTjs8)ckrqQNf!;?Eb7.g*Bo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`<
+f[n^(e'cXicHXPTaN)<>_ns4(]tCqe\$iZMZ*:C5X/`+rV53r`r(d&`qG@,dohbQ\ohGK]r`/u!
+s&]2#r`/Ym!EE2!<=LlD1d4/i6UXC67n?3GrDEDfqbR5gs&&_k!DcPk:B4/a9`e'c:]*uf:\mid
+:B4/f:BF?g;#O/i;"mcY:@V$Y:A%EN:A%EE:]O;i:&n)U;#=,i;#X8d:]O;e:A[ia;#4&`;YX2g
+;>X8a;u]es;uK\p;u0Mm<WH/!<<#tu<WH4t<r#hs=oVV(<ruK,>5VV)>lS"/>$Lr1!*fA+rE]>-
+!+>b6s'l"<!+l+@rFcdW@pN5:;GKnT779C)5!:ti3rV#k2)[lk6UF(&4$u>!5<qFq3&``J,p+Hd
+/MAn>0/bXF3BB8e5X[Uj2Ej8f8OuH<62j7O7/o^T7gM[YQ'IZ$Q^=*=RK&`US,\ubSXuIHTV8'R
+U8.[_s.p1%Vl-JlWN*&&YHY::ZMq0=['d<M\$rlY]">Vg^AY_I^;%J!rkS`S_o0O6rl5;cair#S
+cHjh`f2hoO!/LQ.s+LH+re(6&!.k*!!e5ZJrI"`pH[G^;s*=Tgr-/-`r,qXRrH8*_r-/0c!."Qi
+s*F`nrdAL0It3'#JqJ]/KnbA=M2@.LN/is\OckomQ'Rf*R[]h=T:hmQUnsufWN*&%Y->1;ZaI6O
+\[oGe^VI\&`5Ta;ai_fOcHjnce'uq"f@em4gtgiEi8N\UjQ5Oekiq?slg4!*mdKW6nc&([oCW%T
+s7ZKerV6Egs8)Wirqu`no)=4?MuS;~>
+JcC<$JcG0<o`"gfrqu]ks8)ckrV-Hgp@eLY7J-3Bo'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnUtsf)gAfk'f`0Xuf_*qtfE9aVe^X;j
+qPO.us0qp7s0Vj8r3[BKZa-pBZ*:I9AnZ=6I"-m,N0KWuTWGN0rO2=*r3Z.)rO2a8s0`*?[^NZS
+[f3`>\@8rW\@;1A!4h7%qmlC2r42j=s1.m6r3uF1m^`>.qRcR9!58BGrP/$@rk\HJq8<0LrPefV
+rl5)]a2e(srQ"oYs2k;`s3(DcrltJgq9K&drQkGhs3^hormLquf%0iPr7Lbsrn@5'!SlQ2hu2L0
+iW/$:jSn9>k5OQCl2U&Kli6>NmJlVSn,MkWnc&.[oEFs`q>:*ho)DP`jkJ2)`PBC,Z`Bt#US"*E
+R@0G/_S*C_Z*1.0L4ZbI`4r4;MkY</?"&"PFF]9A;G_t"OHQ*'TMSNa<E2nrW2YoBPa.Q&SXuIJ
+US=ZcV>pG/qSW<LpqcjCqnE-FrP&KLLkphAre:K.KS9>Ws+16%rI=s!IX_9Es*XinrHeHgs*4Ba
+r-%aUrHA'^s*4Qhrd"cqI!g?jIXh?ICOq(iK7nu6LPUeEMi<UTO-#KePE_>uR$a>3S=Z=FTq\?Z
+Vl-MoX0&P/Z*L^D[^WfY]Y2%o_8=+/`lQ6DbKS8Xd*^=le^i@)g=k?<hV[8MioB(\k2tjjl0@U$
+m-X60n*oi:o()DDo`"O`p&Ojcq#C0hqY^6hr;HTcrdk*-s*t~>
+JcC<$JcG0<o`"gfrqu]ks8)ckrV-Hgp@eLY6hL!@o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnV#6e`SGSfFSGAZSSGerNK)^E"K'SHr
+NW4t:M[rce@V'7gD/aT?H@CL%N/mgqrf6r:qi(H2rf$]5qi(K5"ceS%NfK+oNr+k;Nr>">OH9-t
+qiC-+r/^i=rf?T2q2tQ9!0R8DrfQl8r/puAr/po?r/q#Bs-*8As-*ADs-*GHr0./Fs-<GHrg3VM
+r0R>Ks-`\Mrg<hVS"'2CpmqDUpn%V\TqV@Xs.T@bq4e"eUSIa_!Mu[kVZ<[gW<0*#X88ptXo>F"
+XT5O%Y84@IZ*L^B['d?N\$roZ]">Se]tV4r_>_=N_`GZEXJDGVQ][;fKn=f$G^4LSEcQ/<Oc>6S
+KnFi'D/4ocNer.)DK]5\77g]L=CGo07n$luD/XN>H2^A79c?WRJ:MNUDfKf?GBe@YH[C3lp\4IY
+q>0sbqu6NnrVul)s6c!AOo(:AOo:FGObegKL]3#0KnP-YKE$N'Jc1*#IsukGIK+]pHi89iH2i-c
+GPlXWFo?L\GQ2pfH2`*oH[L3hI=?\FJ89^fK7ei3L51SAMMmFPNfT9aP*;,qQC+&.S"-(ATV8*U
+V5L5jWiN8)Yd(L?[C3QT]"G_j^VRe)`Q$!?b0/#Scd:(geCE.%f\5'7h;7&IiSrnXjlY^gkiqBu
+m-O--n*fc8nac8BoCW%Ts7QHerV6EgrqcQirVZWmoDX=@MuS;~>
+JcC<$JcG0<o`"gfrqu]ks8)ckrV-Hgp@eLY6hL!@o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Xt_a[^EHIYck11Wi;nnV#!ma:@D!N;"%0R=8u=n<W#f,2DmW^
+5=.S$6UsX;8PMuXq,$ra!)WYlrD3Yn:esk^:A7KY:&n)f:'FEg:/=Y\r(d;hr(m>hpJ:HWnkK-Z
+ohY!NohX[G!)NPg!)MoWqbdAir_N>ds%iJdqG6ubqbd&bq,@/fr)32dr_rtu<)los;u'Gm<WH.u
+<!--$<`f,uq,[i(=]ed-='/U/qca5/>?b97>Q.k->Pqb(?2\(1?XWh@"CbkNA7baP%qfQhB3nb@
+;G^(Z7RTR-5Q*]62E*NO2ag&$6U<mt4$c+t69dUm2`<NH,T\3a/MAn>0/YF>3BB;f5X[Oi2EX2_
+91_Z=5X[t,6psI37S--B99b[+Q'Ra8QiEF+R@9S6S"-">T:_dLTqS3TUSO]^UnsobVl-JmX/rJ,
+YHY::ZEpjC['d<M\$rr[rk&0Bs1SHH(;IZ#_84"*`5T^8a2c9DbKS5UcHje^gf=DTrDj&$LkphA
+re:K.KS9>Ws+16%rI=s!IX_9Es*XinrHeHgs*4Bar-%aUrHA'^s*4Qhrd"cqI!g?jIXh?ICOq(i
+K7nu6LPUeEMi<UTO-#KePE_>uR$a>3S=Z=FTq\?ZVl-MoX0&P/Z*L^D[^WfY]Y2%o_8=+/`lQ6D
+bKS8Xd*^=le^i@)g=k?<hV[8MioB(\k2tjjl0@U$m-X60n*oi:o()DDo`"O`p&Ojcq#C0hqY^6h
+r;HTcrdk*-s*t~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb8G)NFo()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHXPTaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+rUtsh]gY2Y[r7M&&p"8rjs4IA&s4$P8
+osX\(rj;X1'!edHYH;K5G^Y-uLPh1XQ(FnVrO2=*rNu4)rO2a8!4MX2"h;%N\@B$A\,a)%\GNi0
+])9,=\cB;6\G`o2\F-p,])'&7]E#YE^AYh>_#;+H_YM+J`;R[S`W4'Ya8j9Y`r*mVaSs<]aoKWa
+bl,cgcHjh^r6PDgrQkGhs3^kprmUnt!7q/$r7Lo"!8@G*rn@5'!o2Vgrnm_5!9*h7s5X%<s5j1@
+s5sCGrosIJ!pf4>rTs[Sn*g8F!:p-\#5%T_q>:*goD_YPh:0]h`kTU&Y,J.mSt;I>Q^<uS^:1JR
+Yc=g[J[`b=^o*WPXH.I6?>+a]GCkcG<.0CSOHQ'&TMSQa<`N%rWMki@PE_?!S=cCHTVJB_V#U;-
+rkeZPrPJ<FrP89ErkABHs,$c3!/LQ.s+UK+rdt9(JV!fNs*t&trdFfos*OZis*=TgpilFTq02j`
+s*=Qh!df<BrdAR2It3'#JqJ]/Knb>;Ll%"IN/WdXO-,ThPa.Q%R$sM7St;UKU84T^Vl?\sXfek3
+ZEppH\%0&]]Y;.r_Sa@3a2lBGbg"G[dF-Lnf%8R-g=tE=hVd>Nj5]4^k3(sml0@U$m-X60n*olH
+ncJFTo`"Lbp@n=[q#C0iqYU0hr;?Nbrdk*.s*t~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb6hL!Ao()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHXPTaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+rV#6e_SG\lGSGAZRSGerKK)U>jNVeb6
+N=h,-MMY>]AS5dpDK0fFI"I$/r/L]9rf-c5rJUW5qi1H2rf-H.qi:`;rJpu@O8+h5O6r&,O8b7?
+O788-Oo(4AOckn+OnFh6OoCOAOoLRGPEM+,OoLUEPPLCAPPgUDPQ$gEPQ-mHQ26gHQi<<KQi3<M
+RJN<MR0&hHS+rNJSc55VTDkP]UApqbUA:PaV#I.fV#R:gVtI%hWrK-sXT#@%XSf1#Y5>F%Z2_-9
+['d<M\$rlX])K<6]Y;+p^qmn)_o''fVkBNEP`Ci^Jq/8rG^":ME,fiYO,AaHKRSDfC57q3ML9PY
+Htc\U7Sd>W=^u/3875n=CiFE;Gt:Ls9h\7[J.?F8E,fo?GC"IZH[L<mpAXgdq#C-jqYU9is8Dus
+[K$5gn<!=*qi^r@s,mPJM2@%EL]3&.L&Zi*K*$XUJc:3"J,ausIK+]pHi/3iH2`'`GP64UGQ2pf
+H2W$jH[L5?I;=:]J:N3&K7ei2L5(J>M2I4MN/is[OckomQ'Rf)R[]h=StMdOUnjlcWN*#$Y-5(8
+Za@0M\[f>b^;%J#_o9U8aN;WLc-F\`daQ^sf@\d1gYCWAi8ESSj5f=akNM0plKdg'mI'H3nF?MK
+!qZ'Vrq-?dp\4X]s7u]kqtpBjr;H6dJcC]/J,~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb6hL!Ao()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHXPTaN)9<_ns4(]tCqe\$iZMZ*:C5X/`+rV"mga:@:pM;#X2\:A%]f<qKDj<"1]N
+5<_@s6:=:57n?6Iq,$ubs%r\lqb[;g!)E5^qG.&dr([Dk:/4S\:Adlf;#F,h;#!iY:@_-Z:A%EN
+:A%E^:]O;U;#a>j:&n)U;#=,i;#X8c:]O;g:AI]_;#=,f;?0Sl;Ya8g;>a>h;u]hq;uT_u;cHar
+r_rVmr`0#!rD`ess&K,$qH!Go$!:>5=BJX+=BSi*>6S89>?Y37r`oJ-r*92+rE]P4?srtB)e*;e
+A7T7`AnPaa>#eNu9hRrE6pNt"4?Ybc3;tco7RTR05X7In5s[_$5Wq(d2`EE=+Wr'a/1rb=0fCgE
+3BB;f5X[Li2a0Dd91_Z<5XRk)6psL4r^R#]8sB7=s-<VMs-NbQ(7CV[S"#q<StDXJTV8'RU8+NZ
+Unsobrhodp'rn@:Xfek3Z*L^AZa@-J[^W`U\[oBO])]MC^&PeI^qp#es2,/]`Poj;aN;WLbl5le
+cJ)D!<W6&!M>rA3L]3&.L&Zi*K*$XUJc:3"J,ausIK+]pHi/3iH2`'`GP64UGQ2pfH2W$jH[L5?
+I;=:]J:N3&K7ei2L5(J>M2I4MN/is[OckomQ'Rf)R[]h=StMdOUnjlcWN*#$Y-5(8Za@0M\[f>b
+^;%J#_o9U8aN;WLc-F\`daQ^sf@\d1gYCWAi8ESSj5f=akNM0plKdg'mI'H3nF?MK!qZ'Vrq-?d
+p\4X]s7u]kqtpBjr;H6dJcC]/J,~>
+JcC<$JcG0<oD\^erqu]ks8)ckrV-Hgp@eLY6hL!@o'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYck11Wi;nmhYu=5gtLH7r7M#%p=T&ks4IA&rm^G7
+pU9n*!OT94[/[HIZ*:C5YAKW=I!p['MN*deS"Zmj[^Pe8rj;=*r3lX7!4M[3s0r'<o!e\1kICK$
+!kPqQpppL<])0&<\cB;6\Giu7\,a)<\F-p,])'&=]E#YC]E#YE^AYh>_#;+H_YM+I`;[aT`W4'Y
+a8j9Y`r!gVaSs<]b5]Zbbl,cgcHje]r6PDgrQkGhs3^hos3q"u!nPuTqq1f!!8@G*rS%,&!SuW3
+hu2L0iW/$9jT"?>joOZ/rosIJs6K^Orp9dTn*g8F!:g$Z#5.]bqY^<kpA[GIhpoum`P'7'Z)aau
+Tq.aBQC!o%^q$kWYGnUZJ\/k6_P`lUV3$aC@V'mZF+&g9:/QIlLldgiS=iYV;--aqSGoGuP`q8p
+Q^OG:U7n?WW3!,(Y,;6r_>D(L_u7II_>M+F^\khGMZ/G6LkgcbLAur-K`6W(K)^E$JH(-!If=cq
+I/eQkHN&3hGjBSQGlN'fHN/<lI/\QoIW0deJ:W<)K7nr5L51SAMMmFPNfT6`P*;,qQC+&.S"-%@
+TV8*TUo(&gWiN5'YHY:<['mEQ\\#Mf^VI_'`5Ta;aihlPcHjnce'uq"f@em3gtgiEi8N\UjQ5Od
+kNV6rlg4!*mdKW6nF?)?oCMVRp&F^cp\jmeq>U6gqu-HkrU^#>s,?u.~>
+JcC<$JcG0<oD\^erqu]ks8)ckrV-Hgp@eLY6hL!@o'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYck11Wi;nmT)>/ZSG\lGSGAZRSG\lGK'eQqNrP(R
+N/NRMMI:[aAS>mtEclSQItNN8NK*msrf-c5rep]5qi1K3rJgB.qiCc;rJpu@O8+h5O6r&,O8k=?
+O788-Oo(4AOckn+OnFh6OoCOAOo1C?OoLUDPPUIBPPgUDPQ$gDP5pjHQ26gGQN3?KQi3<MRJE6M
+RK&]US+rNJSc55VTDbJ]UApqbU@k;[V#R:gVZ<[gWW/suX88ptXo>F"XT5O%YAg_NZ*L^B['d<M
+\%&u[]">Se]tV7s_8=($Yc+:eR$E_oN.cb0H['[UF)Z,<DiTa3L4au*E,:DmMi<%+BR"9)6qL'W
+6!%E(6:OLS@qTXsFEMk"8OlKK9mM8?J8]CFEHH>JH$OaaI=Hg!JqEarp]L?gqYU9is8Dus[K$,d
+o8rO*rf[2As,-f4!f2VereCH,!/1?(s+:9%rdb#us*jrqs*Xinr-J?frcmaQrcnHgrHeKj!.=co
+s*ep:J:N3&K7ei2L5(J>M2I4MN/is[OckomQ'Rf)R[]h<StMdOUSOcbW2co"Xfnt6Za@0L\@K5a
+]t_A"_SjF5aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5f=ak3)!nlKdg'mI'H3nF5u=o(2JFrq6<b
+!;HHes7uZjr;6HjrVc?eJcC]/J,~>
+JcC<$JcG0<oD\^erqu]ks8)ckrV-Hgp@eLY6M0m?o'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYck11Wi;nmq+po`mSEFNqb?cZnlPfkpf75k"$f1?
+6N04V6UaL984cKO:f%$drD3GirDEPj##S2n:JX_\pJ(KZs%iSgs%`VinkT6^pJ:T[s%iYinP'!Y
+oM><Ys%iAaohYQ`s%hoVs%iVh!)MoWqbd>hs%iAcr(d#_qb[,drDEVmr)3>h!)i_lqbm>js&Atr
+rDX##<)lms;c?Zk<W6%t<<#tu<WH4t<r,nt=T;M.=BAR+=^##*>Q.e/>?kE;>Pqb(?2e11?N=L4
+@K0j;A4U9DAn"tF;c$:a8jbs35X%@o3BB)W2)[<[6pa.)5!2.s6:!k#3]8rT0J+=i,qU]"0fCU@
+1,LpM3]oYm6oI"`4[(u#8OuJP63fqI6q9X97nEVPs%EEWrg!MLs-NbQs-X=bS"#q=StDXJTV8'R
+UAgniUnsrcrhg($WN3,'Y-5(7Z2V$6Za@-J[^WcWrOW$@!5/<E"2DXe_>_=O_Z[os`l?."b5TWb
+blQ,9i)]kXr`8qss,-f4!f2VereCH,!/1?(s+:9%rdb#us*jrqs*Xinr-J?frcmaQrcnHgrHeKj
+!.=cos*ep:J:N3&K7ei2L5(J>M2I4MN/is[OckomQ'Rf)R[]h<StMdOUSOcbW2co"Xfnt6Za@0L
+\@K5a]t_A"_SjF5aN;WKc-FY_dF6Uqf@S^0g>(N@hr*JQj5f=ak3)!nlKdg'mI'H3nF5u=o(2JF
+rq6<b!;HHes7uZjr;6HjrVc?eJcC]/J,~>
+JcC<$JcG-;o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nj`0=n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SX+']tCqe\$iZMZ*:C5X/W#ShVR)EgtUT;gAKV)g=c2PrRq5)s4RD*
+#hdk_f%/@$e^X,drO2=*q6U..rN[$=Xf[_fG^b7!Ll7C\R\6R_[e$p+[.Ld)[e.'/\,a#/\,a)&
+\G`r>]",BH\cKFSqmla<!4ha3s0qm8s1/-=m^`>.qRcd?rk8<D!58BHqS<-IqS<'Gqni0HrP\WQ
+s2G&Zrl>)[rPn]Ss2b2]s2tAbrlkAdrQbAfrm(Mhr6YJkrmLhq"OtuQf%9iPp"B>uqV)),h;8.g
+!oVtoqVqP8r8dn>r8n(Dkii$1s69UMrp9XO!UfFTn,W%Yo*4j\p\F^brV?Itrq5.#ccF/F`5AdZ
+VPU&ZS=>q3Q^,D#\$3'=X,MV3^pM"\SVEYuL0\1tH:r=.LPS`):4n7[OdMW0T28E_<`N%dW2HSW
+PED)qR@Kk@Tq\<ZX/rM.Xfnq5WW2_/rPJTNs2+QIrP8?Gs1SKJrOrAmMi3JkM#rKgL]3#0KnP-Y
+KE$N'Jc1*#IsukFIK+]pHi&-gH2W!ZGPudcH2W'hHiJKmI0"eHrd\[5JqJ]/Knb>;Ll%"IN/WdX
+O-,TgPa.Q$R$jG5SXuIITqeE[Vl6VqXKAY0Z*UdE[^`lZ]Y2%o_8=+/`lH0CbKS8Wd*^:keCN7(
+g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg-^o^r.U!quB_rV6Egs8)Wirqu]moDX=@NW4M~>
+JcC<$JcG-;o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_niu[6n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SX+']tCqe\$iZMZ*:C5X/W"hSt>eLr1!bXn!s<FrLEhU!1NM2s+1-/
+m>_.+r/D;HMMcG)AS>jrD/siGIY*61NW"n;NVSP4Mu8P3NV\V5NU`&+O8k7=O7n\3O6r&,O8k=?
+O8P(>O7eV3Oo(4AOckn+OnFh6OoCOAOo1C?OoLUDPPUIBPPgUCPQ-mEP5pjHQ26gGQN3?KQi<BM
+RJE6LR/rbGpRM&MrLWhW!20=bs.TLgpnIGVrM9Ii!2fXkor7tks/Z!ts/l=&qlTe"!3lI-rj)j:
+[C3NR\@T9N]2ZJX^;%Lq[&9XiR?`qrNeW+6I!^'\F`25<DNKg6L4k,,EGU>gKoCJ'Ble*#77^'U
+6!.K*B1>BY@qBFnEccMO84c<G9MKb]J:MKTDK']?G'SE5HNJ\JJGk-#LB%#Nq>0sbrqufp!<0D+
+qN:B2n<!^6rK.2@Mi3JkM#rKgL]3#0KnP-YKE$N'Jc1*#IsukFIK+]pHi&-gH2W!ZGPudcH2W'h
+HiJKmI0"eHrd\[5JqJ]/Knb>;Ll%"IN/WdXO-,TgPa.Q$R$jG5SXuIITqeE[Vl6VqXKAY0Z*UdE
+[^`lZ]Y2%o_8=+/`lH0CbKS8Wd*^:keCN7(g"P3:h;7)JiT&tZjlYail07L!m-O--n*fc9rpg-^
+o^r.U!quB_rV6Egs8)Wirqu]moDX=@NW4M~>
+JcC<$JcG-;o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_niZI3n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SX+']tCqe\$iZMZ*:C5X/W#r;#F,h;#F)h;"IKP:]O;d:&7WV<r?%u
+<qo\o<";,Z5sIY!6:=738P2WN:]4,g:]F8i;>sAr;,C(b:JO[Z:&7Tb:]*uf:B4/\:B45c:\dcc
+:]=,[9`Rr\:\mid:\RWW:]=2i:[:jW:]=)h:]4/Z;#=,h;#a>c:]O;i:A@W^;#4&f;?0Sk;YsDm
+;Z0Jh;Z'Jn<;ohm<!63#;c?Zj<W?+u<;oku<`f)tqcEf"s&oA(s&T8(=^(Z+r`]>+s'5S.r*92+
+ra,V3s'Yh7&n5?]A7]4T=]83o:.RlC69m^tr]C-=-8m_=6q0O25Wq4s5=%S#4ZYP^2)$U'+XJ`m
+/2B+E2)I!D3&j#br^$QD'K80=4A&198j>R,6:F:07RT^98P/nS*_f=$9hpt=QBml(R$a;1R[]h<
+StDXJTV8'RU8+N[rh]Uk$)a`$X/rG+Y-5)/Z2_*6['d<M\$rmG\I,p[]=bhj^;%J!_>_:W_o0L4
+a2lBEb5TQdbg"DXhcB\U!*9%u",r.rMZ&A5LkgcbL'!'^K`6W(JcLB#J-(4LIf4]pI/eQjHN&3g
+Gk6.XGlE!eHN/?lI/\NpIXh?IBRtbfK7nr5L51SAMMmFPNfT6`P*2&pQC!u,S"#t?T:qsRUnsuf
+WiE/&Y->1;ZaI6O\[oGe^;%M$_o9X9aND]McHaeadaZdtf@\d1gYL]Bi8ESSj5f=akNM0plKdg'
+mI'H3nF?MK!qZ'Vrq-?dp\4X]s7u]kqtpBjr;H6dJcC`0J,~>
+JcC<$JcG-;oD\afrVZTjs8)ckrV/tYp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi4k5hYu@2g]H6agAT_)gAfh+f_sG"f`'S#
+gAfh-f[n^ReH+1Kr201ar3cR5pU0h(rj2X0&[8OCX`'YQH[pd)MMmXdS"m%U[K!W*[JdQ2[fEr9
+\*pj+\`gR%\H0:PpUUC;])0&<\cB;4\,a#8\Gj&=\F-p,])'&=]`,VD]E#YE^\YbF_>D%H_>;%F
+_u7OO`W*sXa8a3\a8O$Sa8a6[ao9H_bQ#fac2Q#fci)/hchl)hdJqYpdfe1Ne^i@Mf_*qsgA9P*
+gtgidhZMfoi8FIk!9<t;s5j1@s60FGs69[Om-O`=!UfFTn,W"Xo*=p]p\F[_rVl]o>P[42ccO/G
+_Sid_Vl-8\S=Gt3QBmcK\?iBBWNV&-Ydh][Sr/o'H!aicH>@SMLJ(B>IY*95Od2E*TMJH_;,gLm
+W2Z_VP*;&oQC456T:r!SV5gW!Y-"n2Yl1i-s7F,-_Y(bC_#;%D^Aa)kMZAY6M>rA3L]3&.L&Zi*
+K*$XUJc:3"J,aurIK+]oHi&-fH1H4ZH2N!gHiJKmIK+`rJ,Xt/JV&N,KS>/8LPUeEMi<UTO,oBc
+P*D5tQ^F21S"6.CTV8-VV5L5jWiW>*YctF>[C3QT]">Vh^VI_(`Pom=aihoQcHjnde'uq"f@em4
+gtgiEi8N\UjQ5OdkNM0qlg4!*mf)YUnF?MK!V>s_p&Facp\jmeq>^<gqu6NlrUTr=s,R,0~>
+JcC<$JcG-;oD\afrVZTjs8)ckrV/tYp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi2P]T)"rUSH#/LSGerTSGerWRfA!2Jb>&o
+N>.D4NJrjSMI:[<A8,muEcu\TJ:i[VNW>(6N;nh5N;S\4N;\b,Nr+n:NrG+4OT1@AOT(=.OSb+=
+OSt7<O8t@6OSk7<O91Q-P5UO9OSk7?P5LI?P5LIBP5^[AP5gaDP5^[FPl$[EPlI$FQM-[FR/EBJ
+R/WKTR[]fASGA`RT),&ZT`(PbU8.LXoV;D]s.o^mqkjFmor7tk!3>striQ4%r2ft%rNH7*s02p:
+Za7$G[^N]U\[qdP?bF(d]sju9Ssbq0O,f!KIXQNeG'.hEE,KTRMhct<I=?$JKSb\?GAD29?:RIX
+>>eO0AO/dU?X[P^DK9iBGt:Ir7SQQLJ:N2gDJsH5FEMeQH?spbI=Qj#JV/T.L&H`-q>1!fr;Z`q
+rjDe&On4\#OoC=>MZAY6M>rA3L]3&.L&Zi*K*$XUJc:3"J,aurIK+]oHi&-fH1H4ZH2N!gHiJKm
+IK+`rJ,Xt/JV&N,KS>/8LPUeEMi<UTO,oBcP*D5tQ^F21S"6.CTV8-VV5L5jWiW>*YctF>[C3QT
+]">Vh^VI_(`Pom=aihoQcHjnde'uq"f@em4gtgiEi8N\UjQ5OdkNM0qlg4!*mf)YUnF?MK!V>s_
+p&Facp\jmeq>^<gqu6NlrUTr=s,R,0~>
+JcC<$JcG-;oD\afrVZTjs8)ckrV/kVp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JL%da?Fec-+;PaMu3:_SEq#]Xt_a[^EHIYck10Wi5nnohYTaohXsOnP/p]oiCulr`9"uqc!Y_
+5sRU45R'SE84c?E9`7fe:]F8h;?'Jm;?'Jm:B4/a:&.Na:]4&W:]=2c:\dcc:]=,[9`Rr\:\mic
+:\[]_:B4/e:]=2h:[CpX:]=)h:]4/Z;#=,h;#a>c:]O;j:A7Q_:]aKj;#=,h;Z9Pk;YsDm;Z0Jh
+;Z'Jm<<#nn<!?9$<)ZaqqGmPrs&K%tr`/\nqcEc!s&oA("BS].=^(c.!Er_+=p/&7>[(G1>l7n-
+?N+=3@/jXG@UiqX?<C-&:.n2M7RKL+r]L<D3&pmq-8e.X5sR[u4@)4s5X.:h3B&ZE+!2d]-nI,2
+0/YLA1cRKX5!D8#r\bcU4[(l!8Ou'35sdq,6UX@277g$@9M8#P9hS)R:B"&hQ5>mTR$jD3S=H.@
+StDXJTV8'RU8+N[V5=0gs/-U2WiN8(Y-5(7Z*L^AZa@-J[^NZS\Gj#G]">Vg]tV4q^qmkd_?Iiq
+`5]m>rlGAebKJ,Sbg#$Gpf7<Ps,-l7re^Z2!/LQ.s+UK+rdt9(JV!fNs*t&trI+]nrd4NgrH[sY
+rd"Efs*OcnrdFfq!.XuuA:]>bK7nr5L51SAMMmFPNfT6_P*2&pQC!u,S"#t?T:hmQUnsueWN*&%
+Y->.9ZaI6N\[oDc^;%J#_o9U8aN;WLc-FY_daQ^rf@S^0gYCWAhr*JQj5f=ak3(smlKdg'mI'uB
+!V#XYncA@Srq6<bs7cKes7u]kqtpBjrVc<dJcCc1J,~>
+JcC<$JcG*:o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_niZI3n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]tCqe\$iZMYck11Wi=qUhZ2O4h#cBdgAKY(g&]mZr7Cl!s4RD*
+s4dP,"5)5Wf)F2$eC2h9V>R^m[JmQ/ZN7A:riZp9CQc#OI=[-/Mj'NuTW,-&[e@*/[.Ld([emN6
+\GWi)\Gj&&\G`u3])K>=\c95@\a6j*\c92=\c922\c02:]DoPC^&GYH]tV7rqS<*HqS<*HqSN*H
+rP\WQrl,)]aN2EBrPn`T!6G)[s2t>a!6kAcrm(MhrQbGhqp>AjrmCu!eC<%"f)++mg&Ke&gB$*c
+rndV2!9!_5s5X%<s5j1@roj@Gs6BXMs6TaP!:KgT$h<fZoCV_Mq"jmdrr)juqW6JYb/D<6`4)kJ
+UnaZUS=5_/QBf:r['-[3Xb_P2_S`pXQ][q\A6<8TCNFoZ8kr32J;B8KR@9_>:Jt%e<)cbnW2HST
+PEV/nQ^O>7T:qsRV5^PuriZ:*qQ[1&lbNS:rPAHJr4i*B!fi8"repo:MMhCi!f2Vere:K.KS9>W
+s+:9%rdb#us*jops*XfmqKh[Wqg/6g!.=`nFaegiJ:N3%JqJ]/Knb>;Ll%"IN/WaWO-#NfPa.N#
+R$jD4S=Z@GTq\?ZVPgDnX0&P.Yd1UB[^WcW]=bhl^qmn+`Q$!@b0/&Tcd:(geCE.%f\5'6h;-uH
+i8N_VjQ5Oekiq?slg4!*mdKW6naZ2@oCV\Sp&F^cp\jmeq>U6gqu-HkrUTr=s,[21~>
+JcC<$JcG*:o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_niZI3n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]tCqe\$iZMYck11Wi;WiT),#USH#/ESG\lVRK/cHJc(N"NqSJ4
+N;e_JMI1FWA8,drDfU#IIY*92NfK+nMu\e5N;\b4N;\b,Nr+n:NrG+4OT1@AOT(=.OSk1=OSt7<
+OT1C6OT(C=O91Q-P5UO9OSk7?P5LI?P5LIBP5^[AP5^[DP5^[FPl-aEPlI$EQM6aFR/EBJR/`TS
+RK/iPSGA`RT),)ZT`1YbU&^t`U@k;\V#R:kVYd:`W<0*#X88ptXoGL"Xo5I'YlD!.ZN%68['mEP
+\@K3L]1K]FX.u;VQB[DkLkC5+H[0jZFDu2;DN9X2KnOo)DejucNJ)OqC33TO6:t'O='oN)7Rpir
+Ao2F,FEVq#8Ol6E9MBtdJ:MNUrbr!]Fa&+Wrd+p!J:N9'JqJc2qM#%Iqu6NnrVul*s7_ZKOR/)2
+NfB%tMunopMZ/G6LkgcbL'!'^K`6W(K)^E$JH(-!If4]pI/\KhHLZ:XHN&6kI/SJ9IXcitJ:W9'
+K7ei2L5(J>M2I4MN/`mZOHPckQ'I]'R@9V8StD[LU84W_Vl?\sXfek3ZEppH\%&u\]Y2(q_8=.0
+`lQ9EbK\>Yd*^=le^i@)g=k<;h;@/KiT&tZjlYail07L!m-O--n*fc9nac8Bo^r.Us7QHerV6Eg
+rqcQirVZWmo)=4?O8j_~>
+JcC<$JcG*:o`"gfrqu]krqZWjrV6Ee!;?Eb!VH!_niQC2n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJSaN)9<_SO"$]tCqe\$iZMYck11Wi>qnohYTaohY?Z!)`Mf!)N8^r_35hp/V#k
+r)`ku!*/qr!^T(=rBLZU779X:92&)W;#X5j;#4#o:f1(d:esk^pJ(?V!DQ>X:]=2d:\[]a:]F2\
+9`Rr\:]!oc:\[]_:B4/f:]4,f:[M!Y:]=)i:Jh$fmnijXs%i\kp.tfd:/:IXr_WVl!)WMhs&/hn
+r)3Djr_i_mq,7/ir`&nrq,@>orD`Vnr`0#!r`&hrpK%2nr`K2's&f;&!a&T/rEB;+>Q%b*>Q7t.
+>Pqb(?2n72?iOO5@1m$T>?=]t9M@uH6U<q"4Zkee3;tg*2+0f!5s[Xp6U3k&5<:b]0f(F*+!W-]
+/2K.:2)6sH3&s,d5sdpt3&W]Y4uu>.84l-46UO1.6UXF47S$$?9M.uO9MJ4[:AdofQP5aSR@9V8
+S=Q4BT:_dLTqS3TUSRmc%]6)"Vl6VrXf\b/YHY::riuU4[^H+C!k5\Lrj`'A]`,SJ^;%Fu_86,f
+"iJ9t`lQ7#aTBW.bPo`B<r#_sNfB%tMunopMZ/G6LkgcbL'!'^K`6W(K)^E$JH(-!If4]pI/\Kh
+HLZ:XHN&6kI/SJ9IXcitJ:W9'K7ei2L5(J>M2I4MN/`mZOHPckQ'I]'R@9V8StD[LU84W_Vl?\s
+Xfek3ZEppH\%&u\]Y2(q_8=.0`lQ9EbK\>Yd*^=le^i@)g=k<;h;@/KiT&tZjlYail07L!m-O--
+n*fc9nac8Bo^r.Us7QHerV6EgrqcQirVZWmo)=4?O8j_~>
+JcC<$JcG*:o`"gfrVZTjs8)ckrqQNf!;?Ebs7ASJo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)akcHXPTaiMK@_ns4(]tCqe\$iZMZ*:C5X/b+9rnd_4rS7J.qUu#(f\$/Sr7M&&s4[J,
+rn7J-f@SUPeH=7Id*VN_rh]CsoX+\+qm6=.'="dFYHG!fT6bs9K85AEPF8#:WTU\g[edK5\-'4M
+\$u@H!4h[1rjha4"1bqO\bN]5\b3Q5]DK,?]",B<\G<]6\FmE3])'&=]`,VD]E>j]^VBW\rk\HH
+rPABJ!Q2kR_u7OP`VmdVa8X-[a8O$S`rO3ZaoBN_bQ#fac2Z)gci)/hchl)hdJhPte'umte^jWM
+p"BB!q:bo)rSIP2!T;r5iW/$9jT"??joX`0kl0iHlMp2Mm/HAQmdL,D!:p-\AbGclq"jpfs8Vr]
+gsjQf`P0:+XfJ:oU7[sEQBml%_7I(ZYHG$dJ@!)(]q^pYJTu0KB4u%"I>:Hk:k+%OO-6!%T:ShV
+;-$[q;5gImW0!4,Ocu-"S"?7FTVA9]XKA_0Xfel&Z2V&4s6IN#^];4K_#;%E^Aj8oNW>(<N;ne9
+MZ/J4L]E50LAuu-K`6T*Jq8LOJH(-!If4]oI/eQdHN/9aHN/?kI/\QoIK4lsJ,t4Qre"g9Knb>;
+Ll%"IN/WaWO-#NfPEhE"R$jD4S=Z=FTq\?YVPgAmX/rG,Yd(OA[C3TU]"G_j^VRe)`Q#s>b0/#R
+cHstee'uq"f@em4gtgiEi8N\UjQ5OdkNM0qlg4!*mdBQ4nF?MK!qZ'Vrq-?dp\4X]s7u]kqtp?i
+rVc?eJcCf2J,~>
+JcC<$JcG*:o`"gfrVZTjs8)ckrqQNf!;?Ebs7ASJo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)akcHXPTaiMK@_ns4(]tCqe\$iZMZ*:C5X/_eargrbQl(%X?!1EhRoRR"&q2P$,qMc;M
+NJrgSMi*C2H=U]&CMn39H$k-oL5_,]N;\b5N;S\+Nr+n;Nr>%3OT1@COH5IhOSk1=OSt7<OT(=5
+OT1I>O91Q-P5UO9OSk7?P5LI?P5LIBP5^[AP5^[CP5gaGPl6gEPlI$EQM6aFR/EBJR/WKSR[a)B
+q47GTqOde\rh9@d!2K=`oV;D]!i;ckqkjFmor7tk!3>sts/l:%r2ft%rNH7*s0;U0#ICeF[^W`V
+\c033[]ZI"S=#S'O,J[CI=6EdF`_S@Df(PnMM?b7IrT7YN/<=:F)#)d<DQ7_:f^q65t4=O@qKOq
+F*)YO7n?0F9MA'/J:W5gDuO\XF*2\Ord"luI=Hj"JV&N,L%U3#qu6NnrjMk!Onk+*OoLLBNW>(<
+N;ne9MZ/J4L]E50LAuu-K`6T*Jq8LOJH(-!If4]oI/eQdHN/9aHN/?kI/\QoIK4lsJ,t4Qre"g9
+Knb>;Ll%"IN/WaWO-#NfPEhE"R$jD4S=Z=FTq\?YVPgAmX/rG,Yd(OA[C3TU]"G_j^VRe)`Q#s>
+b0/#RcHstee'uq"f@em4gtgiEi8N\UjQ5OdkNM0qlg4!*mdBQ4nF?MK!qZ'Vrq-?dp\4X]s7u]k
+qtp?irVc?eJcCf2J,~>
+JcC<$JcG*:o`"gfrVZTjs8)ckrqQNf!;?Ebs7ASJo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)akcHXPTaiMK@_ns4(]tCqe\$iZMZ*:C5X/]#or_WGeqbZr]rD<Agpe^rcoM#?d<;KPm
+<;BPl<rH,"<rZ1u<"_A\5sIY!5t+147nH9H:Jah`;#F2j;#X;l;#X8b:%_6]:$tgV;#*o_:Amug
+:@_*Z:A%EZ:Amu`:Adof:Amue;#F,U:]O;j:'"-er_`)[qbcr]!DcJ_:]F8j;#jGh;#jMm;>X8h
+;uT\o;>F,g;uKYq;u'Ao<E)ut<;TYu<`N1#<W5tr<VTVm=8c8$=oVS,='/U.>5_Y+>$Lr/!*fG-
+s',G,r*B;.s'Pe6&n,-N<Du^h9M.cD5sIRt4?P\ar\c2^6pj=-5Wq4s5XI_#4ZYJU/M&7r,pk#k
+1,U^B0f(dK3^#_m6:3Xi2Z>lQ2bQ_58jYd/6:+(,6q'L47n6/M9*@p_9M8(X:Adoe;#Zm_S,]#Y
+SHtgZT:hjNTq\=]V#I2(VPgAmWiW>)Y-+t4Z*L^B['[6KrjE'@\@B)[]=Y`T]`c'a^VI\b_Z.LU
+`Q#s>rlP2_rlb>chH'JQs,[2?!0-u:s,-l7re^Z2!/LQ.s+UK+rdt9(JV!cMs*t&trI+Zms*OEb
+s*=<as*O`mrdFfq!.Xuu!J,k%K4]djL5(J>M2I4MN/`mZOHPcjQ'I]'R@9V8St;UKU84T^Vl6Vr
+XKA\1Z*UgF[^`lZ]Y2%o_8=+/`lH0CbKS5Vd*^:jeCE1&g"P39h;7&IiSrnYjlY^gkiqBum-O--
+mdKW6nc&(\oCV\So`Fj]p\jmeq>^<gqu-HkrU^#>s,[21~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_ni?70n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11rnmn;i8<Dih#Z<cq:Yl&f`'M#f`'P(gA]k+
+g'QHbf@JL&eC;porm:>6rj2@+osOh,r3HC.rics:X_j?2H@CL$M2[R_R@g@Yl*^N!qR?L7"1PeL
+\,No;\b*E1\b<N8\[]2\ppg:5pppO;]"7mQ!4r*=!kPqQqmZX:o=4V,rODO2rjqs<s1J?Erk&?H
+^;%GZ_#D1H_#;+I_>qLQ`;IOP`;dgR`W4'Ya8j9Z`r!gVaSj6\b5TTabl#`bc2c2fc2c2fd/MGm
+dK\1MeCE+#fDO:nf`9b%gB$*crn[e8hV[5KqVqP8qr@b=rT=.Cs60LIs6BUL!:9[O!:KgT!:p-\
+AG,Zkq"agcp[d7mbfRlA`kegWVPKuYS=Gt2Q'@NH\$E0?W31l*[B@EIS!8GMFDGH#95o968kr33
+JVT8KR[]t";Gp@l<)TWmVl5W=P*D/pR@9\:T:hmPV>lmKYHG"2YH[c+qm*O-s2"`Pp;$aEqn`'C
+r4i*BrJq#?NK*pr!fMqnreU]4LPPk`!el;\re(6&s+10"s*t&tr-eQlrd4'Zrd4WlrI"`rIt.HJ
+!J,k%K5?3pL5(J>M2I4MN/`mZOHG]iPa.Q%R$sM7SXuIIU8+N\Vl6SpXKAY0Z*L^D[^WfY]=bkm
+^r""-`Q-'Ab0/&TcdC.heCE.%f\5'6h;-rGi8N_VjQ5Oekiq?slg4!*mdKW6nF?)?oCMVRp&Fac
+p\sseq>^<gqu6NlrUTr=s,d82~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_ni?70n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11rLa1`T'r6<SGerWRK/cSR.Z%.Nqn\&NYRM2
+N/WXO?Z^s3BPMC&F*;hXJq]#?nVmI,qMb?3o8`^/rf6u=nW3a3l]D%*rfI)>r/go=oT9*8qN1`>
+!0[;CooT*6rf[2Ar0$u?s-!AFqNCiAr0%)DrfdDHqiq,Gqj-oArg<VOq3_/L!h,UJpmh5PqO[_Z
+!hQ$Vrh07as.TLgpnIDUrhKOjrhfUk!3#Ohs/H("qQ'\!rN,t"!3Z:(rif8)ZEggC[C3QR\@K2Z
+Z)47eR$NkqNJ2q4I<p*\F`MG=D/G5iLP18-IVieSJW,#"D.?dM:J=ML<F03%7RpirASc:+Fa7If
+84H9H97VMAJGsF#E,ou@G'J:XH@($fj`GTqJqJ]/L%0otquZirrjVq-OoLU;Oo(7,Oo:=BNfB%t
+MunopMZ/G6LkgcbL'!'^K`6W(K)^E$JH(-!If+WnI/\K\HN&9jI/SHpIXckHJ,t4Qre#$?Knb>;
+Ll%"IN/WaWO-#KePE_>uR$a>3S=Q7DTq\<XV5L8kWiW>*Yd(L?[C3QT]">Vh^VI_(`5Td<ai_fO
+cHjnce'uq!f@\g2gYL]Bi8ESSj5f=akNM0plKdg'mI'H3nF5u=o(2JFrq6<bs7cNfrqZTjqtpBj
+rVc<dJcCi3J,~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV6Ee!;?Eb!VH!_ni?70n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJRaN)9<_SO"$]Xt_a[^EHIYck11rDESkqG6l_q+prcqGI#arD3)\rDikspf%,j
+pJq,lr`'P05!VFu5<qJ"77Kd;8kMfS;#=,i;#X>j:\RTW:B+&b:]F2b:]4,c:\dca:]=,\9`Rrd
+:B4/e:\mff:Jaj]:Adlf:Adod;#=&U:]O;j:'"-er_`)[qbco\o1o?_rD<PkqG@5jr)*AirDW\n
+rDE>fs&8hp!)r\m!``3"r`&bprDinur`&hrpf@;orE0&%#$=r.=BSg2qcj&'!*fG-s',D+r*B;.%
+UWUM>$+^":J48K6pa.&r]Ek93&`ZP2)[fh69me"4$c+r5!Ctb1G1+(+s\Kf/29%82)6sI2`a)c5
+X[gq2E*f`3D2q783oL+6UO1,6pj@17S$'AKKh[o9he8QqbI&bqbST-S"#q<SXl@ET:hjNU8"EYU
+SXc`VPg>kWiN5'Y-+t4Z*CU@Zi.<2[Kj:O\[f;`]=e-V"2;Rd_>V4S_o0R8a2n8%$-LB4bKJ.2<
+``A]<r,hpNrk?$NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc:3"J,auqIK"WnHgZ4ZHiAEkI0+kIJ
+,Xs!JV*lRCkRLsL51SAMMmFPNK9-^OckomQ'Rf)R[]h<StD^NUSO`aW2ZeuXfen5ZEpsI\%0)^]
+Y;.r_Sa=2a2lBFbK\>YdF$Fme^i@)g=k<;h;7)JiT&tZjlYail07L!m-O--n*fc8nac8BoCW%Ts
+7ZKerqQKgs8)Wirqu`no)=4?OT0h~>
+JcC<$JcG'9o`"gfrVZTjs8)ckrqQNf!;?Ebs7AGFo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5qVVD3hYu=2h"]S(g"?;UrRh,&!nuD`rRqS2
+f[n^)eC;sqdJ_GkU\LY]Zi.9#[JmNKZ*Ua@Y-+n/O.^iKJ:r`9NKfg#TW#'\[JmW2\,Nl>\[]/Y
+rj`!=oXOk1p:1(3ppg:5pppU=]"5Mcrjr'=!P5i<\,a)7\,a)<\G<]6\FmE3])'&=]`,VD]E>j]
+^VBW\rk\HHrPAHLrkncSr58KOqSiNUrl>)[rPn]S!6G,\rlY8as31DcrltMiqp#2fqp>>is3gqr
+s3q,#f%9fOp"9?!ptGf)qq_D3i8OOl!9<t;s5j4A#3Y46l07Kurp'RNrTsXRn,Dfcnac;Do_/%S
+q>0gEfZhOW`ko[#X/D_fTU_O?QBmf"^ppbTYH"^^K!321[@_r6HZO%:B7"B:K8NE%I=I$5Od_c3
+BMhW'<)ZYlW2HSTPEV/nQC456StMaKUSOjgs-K,PQN3?EYkbQ1rrBn5_YCtG_#D1F_#1tE^Aj;q
+OT(=@NW>(<N;ne9MZ/J4L]E50LAur-K`-N)Jq8LOJH(-!If+WnI/J?bHMi-hI/SKnIfFotJH(19
+JqJ]/KS>/8LPUeEMi<USNfT9aP*;,qQC!u,S"#t?T:qsRUnsueWN*#$Y-5(8Za@0M\@K5a]t_=u
+_SjF5aN2NIbg+M\dF-Lne^rF+g=tE=hV[8MioB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_
+rV6EgrqcQirVZWmoDX=@OT0h~>
+JcC<$JcG'9o`"gfrVZTjs8)ckrqQNf!;?Ebs7AGFo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5rLj.^s.8bOm[X<HrgNkTrL!8/if4,"NJrhp
+M@OTO@q]RlDK']BH@CI"MXl`*NVe\3NUr2-O8b1=O5uB&O8+h7O8k=>O8Y1=O7\P6Ont19OnFh5
+OoCOBOo1C?OoCODPPUIAPPgUDPP:=<QLgICR/EBJR/WKTR[]fASGSlRT)YD_T)PA]T`1YbU&^t`
+U@b5[V#I7gVt?tgWW9*rX8oC$XSo:$Y5PR(YlD!.Z;S$9[^NZT\[8?1SXPn0NfSpHIsZKdF`qhF
+EGfWRMhm(=Isl9OK92"CG@ki#=&DXc>Z"[6BgtU"@V9LqEclY.84Z3D91j\aJ:DHTDfBZ:FoHUk
+H$XgbIXgJ@F8U.QL&$K'rVul+rrA2ZP4Xn9OR&#/OT(=@NW>(<N;ne9MZ/J4L]E50LAur-K`-N)
+Jq8LOJH(-!If+WnI/J?bHMi-hI/SKnIfFotJH(19JqJ]/KS>/8LPUeEMi<USNfT9aP*;,qQC!u,
+S"#t?T:qsRUnsueWN*#$Y-5(8Za@0M\@K5a]t_=u_SjF5aN2NIbg+M\dF-Lne^rF+g=tE=hV[8M
+ioB(\k2tjjl07L!m-O--n*fc9rpg-^o^r.U!quB_rV6EgrqcQirVZWmoDX=@OT0h~>
+JcC<$JcG'9o`"gfrVZTjs8)ckrqQNf!;?Ebs7ASJo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN2B?_ns4(]tCqe\$iZMZ*:C5:f("dr)!;epe^f_rD<>fq,$rar_3)]qc3Vp
+pJ_)kpJh8o<E/rts&9Il5X.=q5!hS*84Q0C8l#@_!DlYm;#X>k:B4/b:%qBc9hnDW:A[ie:A@W`
+;#3u_:Amuf:@h0[:Amuf:Adob:B+)j:f$g\r(d;fr(m8fqbQTU!)NSh!DcPk;=79Z;#sKjoM>Qc
+;"RQ`;"[Zc;Z'Di;Z0Pn;Z0Jf;Z9Vn;ufkl<<#tt<;T\q<Wc?&<E9#ts&B%upK%5orE0&%s&]D*
+=BSg2rEB;+>Q%b(>QJ#4rET8+ra$XQ>Zk'(:JFJP77':)4?Yeg3&ifS2)Ici6UF(&4%'!5.R#pQ
+3&W99-6sll.5!G92)I-J3''2d5X[[m2E<ra2bQ_58jYd06UF.-r^6`Ur^R&]98%uq5Q=IP:AI]c
+SGeuuStDXJTqS3TUSFW]V5C,fWN*##Xf\b/YHY:;Zi.92[JmTC\%&u[]">Vf]tV7r_#D1L_@+<$
+`lH0AaiMQFaiaV,!*9#!j&Z%Ws,d;Crf@)>!0-u:s,-l7re^Z2!/LQ.s+LH+rIY0'JV!cMs*t&t
+r-eQlr-S-`r-SEjrI+]ps*t'!s++s;K7ei1Knb>;Ll%"IN/WaVO-#KePE_>uQ^F21S"6.CTqS6W
+V5L5jWiN8)YHY==['mHR\\#Mf^V@V%`5Ta;aND]McHaeadaQ^rf@S^0gYCWAhr*JQj5]7`k3(sm
+l0@U$m-X60n*olHncJFTo`"Lbp@n=[q#C0hqY^6hr;HTcrdk*2s*t~>
+JcC<$JcG'9oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_ni61/n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck2*i;_[;hVHuAg\KP*g"=s/qq1r%!8@G,s4Rh5
+f[na+e^W*tdF%m=r1j+apTsh*o!SM)(U^WUZa-d;Y&B\PH@LO$M2@:XR%C%O[-k@$[emQ4\,a);
+\Gj&2\GWo3\G`u5\G`u5\cfRT]">TR])B/?]".[Is1.s8s1/-=q76I6ost(5qRcd?qRlsE^VBT[
+s2"QIrPAHLrkncSr58NP!6+fSs2Y/\s2Y,YqSrTWr5nu]rlb>cr6>8e!71Pfs3LVirmCbos3q"t
+!nGlRqq1f!!8.2%rS%>-rS.A.r8.J2!9!_5s5X";!9O1As6'FG!pT"8rTjFLs6^lqnF5u=oCV\J
+p\=LBf[%^Z`P'4#X/DegTU_L@rg#'tOhS?4YHOt.Mh.qI_6]Y]S">=:B51smG_\md:k!tNNg#p%
+Skr<^<E)lqV\,kgPEM,nR$sV:T:_dMUSXrlrr;h]s-EGap9D(+s2"NJqn_j=qnN'CrfR>FOHBI&
+!fi8"repl9MZ/J4L]E50LAuu-K`6W(JcLB#JH(,uIf+WlI.VdaI/JEmIfFosJ8'RdJqJ]/KnY89
+LPUeEMi<USNfT9aP*;,qQC!u,S"#t?T:hmPUnsrdW2co"Xfnt6Za@-K\@K2`]Y;.s_Sa@3a2lBG
+bK\>YdF$Fme^i@)g=k<;h;7)JiT&tZjlY^hl07L!m-O--rpKmWnc&([oCW%Ts7ZKerV6Egs8)Wi
+rqu]moDX=@OoKq~>
+JcC<$JcG'9oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_ni61/n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck2-T`1S_T(8H?SH#)XReiEEJ`MjkN<,'!rf$i6%
+UaHiAS5^nDfKrGI=Hm)o8N^/qMb91ooAm0rf6u=jH'A&q2kK7s,d2?r/gl<oT9*8qN1]=!0[>Do
+T9!5rf[5Brf[;Fs-!ADrf[;FqNCiAr/q&DpQPZCqNg`>s-W\OqO%8Ms-`qWpmh5PqO[_Z!1s1^r
+h07as.TLgpnIDUrhTLir20OnoVqkj!3>doriQ1&rNH7*(9t0NZa7'J\$W03T:2+3NfT$KJ:2chr
+cL;ADf0B.NJiUHJpr,eCOqP(JTk^HEFV=0:JOelA3`US@:NteE--5J7n?0F9MBtdIt2ETDfKc=G
+'J92H3\eFIt3+2jQ?A]rH.ggp4iVH\GuSkq3'^!rfR>FOHBI&!fi8"repl9MZ/J4L]E50LAuu-K
+`6W(JcLB#JH(,uIf+WlI.VdaI/JEmIfFosJ8'RdJqJ]/KnY89LPUeEMi<USNfT9aP*;,qQC!u,S
+"#t?T:hmPUnsrdW2co"Xfnt6Za@-K\@K2`]Y;.s_Sa@3a2lBGbK\>YdF$Fme^i@)g=k<;h;7)Ji
+T&tZjlY^hl07L!m-O--rpKmWnc&([oCW%Ts7ZKerV6Egs8)Wirqu]moDX=@OoKq~>
+JcC<$JcG'9oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_ni61/n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO"$]Xt_a[^EHIYck2-;#F)h;#F,b;#3ud;#4&b;#3uc9_qKY<W5to
+;Zp&u;cH`k<Vo`.5=%=o4?Ynq6UaI88P2ZP;,C-h;#aAm;#X5j:A@QZ:'OEf9hnDX:Adoe:A@W_
+;#=&a:A[ie:@h0[:Amuf:Adob:B+,i;"m`_:]F2g:BOEj:f.$bm83^V!)WYlmSEm\rD3JkoM>Qc
+;"[Wa;#F/j;YErg:f7*fr_reor)*8fr_rDfr`/qsr)N\rs&K%ts&B)!<VTVm=8c8#=oDJ%>5MP'
+=o_e+>lIq0>[(H<r*;j">Zb$(:/+>O779F,4Ztkg3B/rU2`*B\6UF+)4Zc"r5XIUq2`N]N/fc5d
+/LiG20/YLA3&j#`5!qXs2`<i`3_N%88jYd0r^6WP#t@HV8P)QLK7emQ5PS"I:C<Y_SXl@ETV/!P
+UAgo#UnsrcVl6SpX/rG*Y-5(7Z*Ue9[/RK5[f<f:\c0/F]Y2"m^;%FurkSfU_o0O6`lJ"u#0G'3
+c-03hq,c]Zr)N`Z!g/S+rf7,@NK*pr!K2j7M>rA3L]3&.L&Zi*KE$N'Jc1-!J,XopIJeKbHi8?i
+IK+crJ,Xt4JV&K+K7nr4L5(J>M2I4MN/`jYOHG]iPa.Q$R$jG5SXuIHTq\?ZVPgAmX/rG,Yd(OA
+[C3TU]"G\i^VRe)`Pom=aihlPcHjnce'uq!f@\g2gYL]Bi8ESSj5f=ak32'olKdg'mI'uB!V#XY
+ncA@Srq6<bs7cKes7u]kqtpBjr;H6dJcCl4J,~>
+JcC<$JcG$8o`"gfrquZjs8)ckrqQNf!;?Eb4nS@;o()>?n*f]3m-O''l0.<mk2bR^iS`VMh;$`<
+f[n^(e'cXicHXPTaN)9=_ns4(]tCqe\$iZMZ*:D/iVqa<hqm5Fg\BM&f`KgXfDO;$g&0S'fa$0]
+f%&="daJ$>!71>6rNl4)s0_d5qR$R8[C!?KZEg_6Xq$PdH[^KuL5CkRQ^OMDY4/jt[emQ4\,a);
+\Gj&3\GNi2\GWo5\Gs)?]".UIs1/-@rOW!=!P5i=\G`u7\Gj&=\G<]6\FmE3])'&=]_];C^;%GY
+_#M7I_#;+J_Z%IQ`;IOP_uRdP`W=-$rl=uWqoA`XrQ5)^rlb>cr6=u]!71PhrmCbo!7Uqs!nGlR
+qq1l#s4I5%rS%>-rS%A.h>?%1hr*JjirA'9jT"??k5XTHkiqBtrTjFLs6a4^nF5u=oCV_Kp>t&X
+bf7W9`4`4NV4sWRS"#_/P`q0B\@&WFYG\L[JZ?B!YaU$6S:t$[CIi5eLIt<=It<E9PF\89:Jt"h
+<)KQlVl,W=P*;3#SXlCFTV8-YX/u3upm;#Hqlo^t!3j!5s2"EGrk\0@qnN'C!0dDFs,d;Crf@)>
+!0-u:!fMqnreU]4LPPk`!el;\re(6&s+1-!s*t&tqL/6gr-S<gqgJKns*t#uFFf$qK7ei2Knb>;
+Ll$tGN/WaVO-#KeP*D5sQ^F20S"-(ATV8*TUo(&gWiE/&Y->1:ZaI6N\[f>b]t_A!_SjF5aN2NI
+bg+M\dF-Lne^rF+g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHerV6EgrqcNh
+rqu`no)=4?P5g%~>
+JcC<$JcG$8o`"gfrquZjs8)ckrqQNf!;?Eb4nS@;o()>?n*f]3m-O''l0.<mk2bR^iS`VMh;$`<
+f[n^(e'cXicHXPTaN)9=_ns4(]tCqe\$iZMZ*:D/T`1S_T(/B@SGnuZR[KT?R.Z%"Nr4t7NX(Q(
+NK0!WN/IUk%WQl+BPD7#Df^)IIY*<1oo/p1qMb91ooAp1rf6r<mZ7F0plPN:qN1W9rfI)>r/gl<
+oT9'7qiLf>s-!DEoT9!5rf[5Brf[;Fs-!ADrf[;Fq3(cArK7/Ep6>TBqj-i?rg<VOqO%5L!LfMP
+SG\rRScYOUT)PA]T`1VdU8+LYU@k;\U]@7jVYm=lW:QthWiPut!3Q4$riQ1&rNH7*;mEX6Za7$F
+X/)DWR$EbnN.Z\/I!KjVF)l5<Ci,2jLk^S7IXZ3NJVoA8F_5f9@mEge4]GZr5t4@QA8#h"F*;h!
+84Q?I8q2ABIr9.BE-$/GGlE!rH[UBpJE,\NjQ>V%F8g:]F8L[`L&eHfs8S5TP2q`*PQ$aFOT:LB
+O8k4?NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,auoIJ\EiHi&3fIK+crJ,Xt?JV&K+K7nr4
+L5(J>M2@+KN/`jYOHG]hPa.N#R$jD4S=Z=FTq\<XVPgAmWiW>*Yd(L?[C3QT\\#Mf^VI\&`5Ta;
+aND]McHaeadaQ^rf@S^0gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*ol;o()DDo`"O`p&Ojcq#C0h
+qYU0hr;HTbrdk*4s*t~>
+JcC<$JcG$8o`"gfrquZjs8)ckrqQNf!;?Eb4nS@;o()>?n*f]3m-O''l0.<mk2bR^iS`VMh;$`<
+f[n^(e'cXicHXPTaN)9=_ns4(]tCqe\$iZMZ*:D/;"mc[;#=&f;#aDl;#X>h;#*le;"[QU<Us,c
+<Vo`*5!_4n5<_D"77Tg;8kMkV;#aAq:esk^:A@QZ:'"'ar_<Dfr(m;epeUfaqbR,b!)<Gfr(m;e
+oM,?\s%iPfrD3;c!)NSj!)NAbr(m;er(m>hqbQTUr(d;hr__oV!)`Ab!Du\d:]=2i;?'Pg;?'Gm
+;>X8k;uKVl;>=&g;tO&g<W5tq<W,tt<W5r!<E)rl<rH+u=T2J%=9)M'>5MP(=o_e+>Qe87>?kD3
+>l@q9=BAEt9h\,J6pX%$r]U9@!&sj71IXVt69dXs4$u;!69[Ii3&`QE*%!$].PN\32)@*L3BTGj
+6:*Uh2Ej;`91_ZH5<qS&6iBC]7S--A91qm/JqJ]0L%[b.:@q=%YaqAXT:hjNU8"EYUnsobVPpGn
+X/rG*Y-+t4Z2Cp.[/RK5[Kj:O\[oDb]Y4<Y$bsKl^qmk(`5KX7`r=$Xa9Ki3bKS12<q]VZ<r>qt
+PQ$aFOT:LBO8k4?NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,auoIJ\EiHi&3fIK+crJ,Xt?
+JV&K+K7nr4L5(J>M2@+KN/`jYOHG]hPa.N#R$jD4S=Z=FTq\<XVPgAmWiW>*Yd(L?[C3QT\\#Mf
+^VI\&`5Ta;aND]McHaeadaQ^rf@S^0gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*ol;o()DDo`"O`
+p&Ojcq#C0hqYU0hr;HTbrdk*4s*t~>
+JcC<$JcG$8oD\^erqu]ks8)ckrV-Hgp@eLY47r.8o'u5=n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYl!DYi;_[:hVHuApt>`$pt5W"rS%8(!SH$'eHFCM
+dEp8;cN'a5V!bYa[K<kD[JmK3YRmspR<a(,JVAo<Ng,s&U8bEm[0!eE[f3]6[emQ3\,a)<\G`u2
+\GNi4\GEc7\,s4N\Gj&4])T>?]D]>?\H0:PqmcU8qmc7.rODO2rjqs<s1J3A!kuFaq8!$Hq7usF
+rkeZPs2=iQrknfUq8NHUaSs6Y`r!gVaSs<\b5TTabl#`[c2c2fd/MGmdf7ere,n1OfDF5!g&BY%
+f`9b*g]-(.gB-0dh>H.0hZ;Zor8R_9r8dn>rT=.Cs60LJrTaIMrpB^Q>jq1Po(2MEl.a_3ai;0:
+_69l9US+0JR?s8*PE3Ae['Hp<W3)&2V8B=PW0r1$O+UAKDb"VkLIt<dIt<H:Pan;9:Jt%i<)KQl
+Vi?k%Od)6%SXuLITq\E`XKD@!pQtfDs021$rNNm5r5&'Co>(7<r4`2q!0dAE!KiKCO8k4?NW+k<
+Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,XomIJ8-bIK+crJ,OluJV*lR!JH1+L1Q-rM2@+KN/`jY
+O-,TgPa.N#R$a>3S=Q7DTqS6WV5L5jWiN8)YHY==['mEQ\[oGe^;%M$_o9U8aN;WKc-FY_dF6Uq
+f%8R-g=tH>hVd>NioB+]k2tjjl0@U$m-X6/n*fc9rpg-^o^r.U!quB_rV6EgrqcQirVZWmoDX=@
+P5g%~>
+JcC<$JcG$8oD\^erqu]ks8)ckrV-Hgp@eLY47r.8o'u5=n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYkt*mTD>)MSbnrSSc>5ZRfo1JR@'B>QN3EFJaSQl
+Nrk?$NrG";M@bV^G@Y2sBl%[,Fa8@aJqf0WMu\k6N;8J+Nr+n:Nr>%2OT1IAO8t@:OT1C<OSk1=
+OSt7<OSt7;O8t@>OSt==OT(CBP5g[:OSb1?P5UOBP5gaGP5^UCP5gaAP5gaGP5^[=PlI$GQLgIB
+R/EBLR/E?RR[]fASGf#OT)PA]T`1YbU&^t`UAL\cV#-qeU]@7jVYm@lW;EOoW;ERoWW9*mXT,F$
+Y5PR(YlD":Za-[.TU_C8OH5BTJpr&mGBJ"JDJj</Nf8dKKn=c%E,:&cJW+tuAT)9k4]53@;dEp#
+7U9G5BPha1G'QSK7ncQJIt)ucDJsK7F*;bPH?spcIt*!#iT&tZjlPWFEr'hWFSp4[L%U3!Ye'l4
+OnFn$OoLXGPPpXFOc]R's,I)=repo:MMhCi!f2Vere:K.KS9>Ws+:9%rIFotrdOZkpO)dbs*jut
+rI=p"K)UB'KSBD[AVZ(uM2I7NNK0'\OckllQ'I]'R$sM7SXuIITqeE[Vl-MoX0&P.Yd1UB[^N]V
+]"G_j^VRe)`Pom=aihlPcHjnce'uq!f@\d1gYL]Bi8ESRj5f=ak3(smlKdg'mI'E2n*olHncJFT
+o`"Lbp@n=[q#C0hqY^6hr;HTcrdk*4s*t~>
+JcC<$JcG$8oD\^erqu]ks8)ckrV-Hgp@eLY47r.8o'u5=n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3:_SO"$]Xt_a[^EHIYkq8j:\R]`:\did;>X2a:B4)]:$P^Y<;]br<WQ3$
+r)F;-4[;(l5!2%q6UjR88P)WOr_Ner:f'q`:/:UZq+gf]s%`Jfr_E5ar)!8dr([5dr_EAer_E)[
+s%`Sir(d2dqb@,er_NSjpeL`_r_E>d!)WPgm83^V!)WVkl;.IXoM>Td:f-m^r_WSkr_iJfs%r_m
+r)3Pnr_iVjpeq)io2P]hs&AnrrDrntr_ru"<)clm<r?%t=T2J&=9)M'>5MP(>5qh,>lS".>5hb+
+>S:=I=B8<s:.n/K6pa.(4?bkh3rCp-770F/5Wq:m6:!k'4?bba2`!0=)(6p^.kih52)7!J3BTGj
+6UE^j2Ej8_91VT>5<qM&6:4(-7n6*@8kMcKJ:`B*KS5%C55d\G5l!YE:A%E]YQLGfStQ%V&Yu1t
+V5:&fW2ckuXKAV-YHY;1Z37M@['d=@[L0OT\[oDc]Y2%o^Abk[^r!t+`5T^8a2Z0@aiV]KbKA!*
+<qTP]<r>ttPQ6pGOo^],rf@)>!0-u:!fMqnreU]4LPPk`!el;\re(6&s+1-!s*t#sq0i!bq0i9l
+s*sut!J,k%K)pXZre>!>Ll$tGN/WaVO,oEdP*D5sQ^F//S"-%@T:qsRUnsueWN*#$Y-5(8Za@0L
+\@K2`]tV7t_Sa@3a2lBGbK\>YdF$Fme^i@)g"P3:h;7)JiSrnYjlY^gkiqBum-O--mdKW6nc&(\
+oCV\So`Fj]p\jmeq>U6gqu-HkrU^#>s-!D4~>
+JcC<$JcG!7o`"gfrquZjs8)ckrqQNf!;?Eb47r.9o()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_SO%&]tCqe\$iZLYkm>XhuqrohVHr]gAT_$fDsV&gAfh2f[n^)eC2jm
+ps8c3rh]Xlj0fi4[C!<HYct:5YE>H&IXd!*M2[O]S"?CU[/.05[^EQO[JdQ2\,Ei:\c'&:\bW`:
+\[]0G\c9/>\bru6\c'&<\H'/=\bE]7\H9@S]DT8=\bio8\bio.\c'&2\c02:]DfJ?]`Pp_^\P\F
+_>1nF_>_=N_uI[Q_u@RS`VIOOa8O$S`rO3[ao0B]bQ#fbc1fN`chl)hdJqYpe,Ro!e^i@Lf_sM&
+f_sM'gA]k,h#H./h#H4-h?)TmiV_^7j8A!;jo+?Ak5sl3lM^#Km/?>Omf2bUnON*3gXF9d`l5p7
+ZDjasU7[pER?j&$O1`$1ZELF/X/DDba/QqVS!JhkLNHHbF@pJ!LIuc8ItEN=Q(4G;:Jt"h;c0Hk
+ViLb=%$[0MS=Z@GTq\KdXfhL"s-N\Mr0R8GpTa\$ri`s6qSDsDrk\<DqS2sBs-3YMPEZ!/!g/S+
+rf7)?NW+n:MZAY6M#rKgL]3&.K`Hf)K*$XUJc(&uJ,Xo`IK"]qJ,OotJH1<$K)pXZre>3DLl$tG
+Mi<XUO,oBcP*;,qQC+&-S"#t?T:hmPUnsrdW2co"Xfnt6Za7'J\%0)^]Y;.r_SX71`lQ6DbKS8W
+d*^:jeCE1&g"P08h;-uHi8WeWjQ5Oekiq?slg4!*mdKW6nF?)?oCMVRp&Facp\jmeq>^<gqu6Nk
+rU^#>s-*J5~>
+JcC<$JcG!7o`"gfrquZjs8)ckrqQNf!;?Eb47r.9o()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_SO%&]tCqe\$iZLYkk$lTCnfMSc,)TSc5/ZRf]%HR/30LR/_^;JGFcr
+K&_n0NK0!XN/ELLM2H;"A7fLjDJsT?H@16rLPtte!0-i6q2P'-r/^f:r/^N4s,m8A!0?r;rf?o;
+qiC`<rf?u=rK$i;s,[,?rK6r<s,m>Es,lr8oTB0:s-*JGrfR2Cs-*8AqNLT:!1!GIo9]HDr0dGL
+r0dSR!1WbRrLNVQrh'1_rh9@d!2K:_s.][lUSO^_UB%+hV>mFjVuN^mW;rmnWW0!kXT,F$Y5GJ3
+Yd(I6UnF3FQB[GjL4Xl$G^+=QF)Pu6D2jI0L4k,,I<p$dP(/C<G&qG8B37>[=$]hmAO9U,@:X%g
+EH?;K7n?-D92'hcJ8K1AEH6,DGBeF[H[L<oJV2q@j5]4^jlZG\olKn_!3uL,ri`s6qN:H6lB2+3
+!gJn4rfR>FOHBI&!KN0=N;ne9MZ/G6LkgcbLAur-K`-N)Jq8LNJH(,uIdDL^IfForJH(0#K)UB'
+KSBD[CPR_&M2I4MNK0'\OHPcjPa.Q%R$jG5SXuIHTq\?ZVPgAmX/rG,Yd(O@[C3QT]">Vh^VI_'
+`5Ta;aND]McHaeadaQ^rf@S^0g>(N?hr*GPj5]4^k3(sml0@U$m-X60n*oi:o()DDo`"O`pAamc
+q#C0iqYU0hr;?Nbrdk*5s*t~>
+JcC<$JcG!7o`"gfrquZjs8)ckrqQNf!;?Eb47r.9o()>?n*f]3m-O''l0.<mjlGI]iS`VMh;$`;
+f[n^(e'cXicHOJSaN)9<_SO%&]tCqe\$iZLYkh2i:]F5k;>O,e:\die;>O,`:]=&`:&duO<rH"u
+<;T\p<"qJ^3^,bk5s[q/7n-'B9MeP_:esmd:AIW[:A[cc:B"&h:B+&g:A@W`;#F,d:B+&g:A[ie
+:@h3U:B"&c:&n)h:]O;d:Adoe:A[fe;#=&U;#F)h;#O8V;#aDc;#aAm;#!ib;#X>k;Ys;m;Gg<i
+:]OAj;ZB\p;Yj8d;Z9Vd<;okt<;]bo<rH%r;ufqt<WH.s<rH+u=T)D&=T;P'>5MM/>$G39>[(E9
+r*'b8<`;gi91_WB6:!e!4Zkhe3W:p.2ap&$69[Op4#o5b6p3[p2a'&U2CBIl/1rJ-2D-[<1H7BW
+4[DG%2`N]Z4ZQ/,83oI*5t""+6UXC684Q<H91j_cJqAW.KSB:er]gEJqEOaN!3uL,riZBpT:u7Y
+&Yl.tV5:&eW2ZesXKAV-Y-5,/Z3%A>[/RK5[Ka4N\[oAa]_fDI^VI\&_o'Fl`W*p`a2uHGbK@uL
+b5,06=7]Jm<W#nq<WA<cP`q=1Oogc-OT(:ANfF$ss,-l7reU]4LPPk`s+LH+rIY0'JV!`Ls*t#s
+m!\k^s*suts+(0%rdt6)L&QgBLPUeDMMmFQNfT6_P*2#nQ'Rf)R@B\:StD[LU84W_Vl6VrXKA\1
+Z*UdE[^WfY]=bkm^r!t,`Q$!?b0/#ScHstee'uq"f@em3gtgfDi8EVTj5f=akNM0plKdg'mI'H3
+nF5u=o(2JFrq6<bs7cKes7u]kqtpBjr;H6dJcCr6J,~>
+JcC<$JcG!7oD\afrVZTjs8)ckrV/YPp@e1Po^qbGo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq"]XkY_[^<BGqVhG3s5*q8h;$c[gABS%fDsV&gAfh-f[n[Qe,n(G
+d/2/gc2c,eV#@.hVW5,b[0!_@Zi7-?Y,cK+WdK5DKntYHPa@l5VQKd(rO2a6rO2U4rODm<rODd9
+qR?U;\@D@F!P#]<\G<]7\Gs)>\Gj&5])K5A]">TP])B2:\G`u8\F[90\GEc9])K8>])0,<]_fAD
+^;%GY_#M7H_#;+K_Yq@P`;RUP_uRdO`r3sV`qm^WaN;R%b5TTabl#`[c2c2fd/MGmdf7c!eCE+$
+fDF5"g&BY&g&B_*g]#t0gYCT`h>H.0huD[5irA':jSn9>k5XWEkQ'oHli6>NmJcPRmmH6md`KVN
+`PTL%WMZDbSt)7=QBIDnO1DR%YH=b'VO3U0O,^$)MM[sVHr+TjHq\U3F`hkQIt`iCQ^XP<:f:(i
+;c3Ol%ul[5Od)3$S=Z@GTqeQdY4qtqQhm$HQhm$GYQ1s,YlCp+Y5bW<s7aA+_Yq=F_"thE^&XJu
+Q2d'KPQ$aFOT:LBNsC])NJrgSMi.Lj!f2Vere:K.KS9;V!ePuSr.+crrdO?brdOirrIFp!!.t3&
+!JH1+L1Z3sM2@+JN/WdXO-#KePE_>uQ^F20S"-(ATV8*TUo(&gWN*&%Y->.9Za@0M\@K5a]t_=u
+_Sa@3a2lBGbK\>YdF$Fme^i@)g"P39h;7&IiSrnYjlY^gkiq?slg4!*mdKW6nc&(\oCV\Sp&F^c
+p\jmeq>U6gqu-HkrUTr=s-3P6~>
+JcC<$JcG!7oD\afrVZTjs8)ckrV/YPp@e1Po^qbGo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq"]XkY_[^<BGqOmh[nt,]KrLE\S!1a"W!h,OErKmPMrKmG4rIOs"
+j,a5#!f`.trJ;)@@!.$2B5)7$E-->NI=d01nr3C(ooAs2rJpf:ooT39rfI,?qN1Z:qiL]9rK.&?
+r/gl<qiLi=r/go?q2b`AP*1rioT8^-s-!AF!0[>Drf[;Fq3(T<qiq,GrKI;Iqj-l@rL!JMrL!JM
+s-`qWpRM5RoUc&Ss.K=as.TLgpnI_^rhTFd"JhljVPa9hs/>gos/>gos/H("orJ.qr3#t$>,nBl
+S!]M*O,f$IIX?EdF`VVCDJX-)Mhm(?JUVrkFDu)5BmXu<CNEuj4&8RW6!.Pu=^56@@qfh#FEi%#
+8OlHI9RhSDD/O61EH?;IG^=[_I=Hg"hr*JQro4(@jlQ;YoQ0qb!3uL,s0)F)s/j$8pQ>*2mZ@L8
+rg!MJ!0dDFs,d;Crf7;ENK&mUMi3JlM#rKgL]3#0KnP-XK*$XUJc(&tJ,XodIK"]pJ,OotJH1<$
+K)pXZre>$?Ll$tGMi<UTO,oBbP*;,qQC!u,R[]h=StMdOUSOcbW2ZeuXfen4ZEppH\%&u\]Y2(p
+_8=+/`Q-'AbKJ/UcdC.heCE.%f\,!5gtgiEi8N\UjQ5OdkNM0plKdg'mI'H3nF?MK!qZ'Vrq6<b
+!;HHes7uZjr;6HjrVc<dJcCu7J,~>
+JcC<$JcG!7oD\afrVZTjs8)ckrV/YPp@e1Po^qbGo'u5=n*f]2m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+;PaMu3:_SEq"]XkY_[^<BGrD<)]r_WVlr_NVk;#*oc;#O8g;#=&g:Amud9`7]b
+:?,CQ<W,l2;a3K45<M(o5sRq/77TpA:/Fb_:]=,b:&.Q]:&duf:]F2i:&du`:]+&f:]!od:&dud
+:]=,]:&7W`:\mfd:]=/j:\[]_:BO?d:/:^_!)WPgm83^V!)WVkl;7LXohbZc!)WGdr_WSkr)3Gi
+!`DlmrD3JkpJUibpeq)io2PNcr)Wbrqc!Yt<`W5t<r?%t=T2J'=T;P'>5MM(>5h`7>[(E9>?b?6
+<`2gj8P;TC6:*n!4Zkkf3B&lT2`3rj69[Rr3]T/V2)@$L3&riP1+4"e-SI&(1b1:61G^pK4?l+u
+69$t`5!;#$8Ou-35X@_'6pjC47n?0D9MBnbJ:[]O!eZ/ZrBL6Er]g?Hq`k!S!3uL,s0)F)s/d97
+U7n<VUnjiaVPgDnWiN5'Xfek3Z*:L=Za-pErj<$?\$roZ]">Vgrk8]P^:qD!_SX71`;[aU`WsT,
+aiMTFaiX9XqH*8hr)NbtrD`i`rg!MJ!0dDFs,d;Crf7;ENK&mUMi3JlM#rKgL]3#0KnP-XK*$XU
+Jc(&tJ,XodIK"]pJ,OotJH1<$K)pXZre>$?Ll$tGMi<UTO,oBbP*;,qQC!u,R[]h=StMdOUSOcb
+W2ZeuXfen4ZEppH\%&u\]Y2(p_8=+/`Q-'AbKJ/UcdC.heCE.%f\,!5gtgiEi8N\UjQ5OdkNM0p
+lKdg'mI'H3nF?MK!qZ'Vrq6<b!;HHes7uZjr;6HjrVc<dJcCu7J,~>
+JcC<$JcFs6o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nhot,n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJRaN)9<_SO"$]Xt_a[^EI"q;M>2"lJ1nh;$c\gA'>%f\-2Vs4IJ+f@BlM"k(fF
+d*L&9cMl&gU\gkbV=q@b[0F(HZa-j?Y5YO9Ngk9@ItEB2MN3piT;&<l[C3L;[f!W4\Gj&=\GNi5
+\Gs)>\G<Z9\@MOIq76L7s1&3@\[hFFrj`'@]DB,;\c9/@\[]0J\c9/>\c0,1\c'&7\bWi6]D]DB
+^&>YF^\>PD_>1nF_>V7M_uI[T_u.IQ`V@IOa8O$Ta8a3\ao'<\bQ#fac1fK`chl)gdJqYpdfe1N
+f%/IMf`'S&f`'S'gAfq,g]cHfgtgiCqq_D3i8ORms5X(=rT4(Aroa=F!9sIJs6T^O7df[*gsX<d
+`l5d2];hd'U7[pDR$NntP)d&ZZEC=/W2>oGO,f-TLP:A-H[9gXEcZ>CEclMKGC>!sO-#g"TNP,i
+:K:@krhg9cO-5ThQ'n/6TV/!QW2cuns8J;aQhQgGQhcsEYlCp,Y5>?9s7aA+_Yq=M_#M1I_#;%F
+^&sahQBqN8#F(F9P*1riOT(:GNfB$WN/NUOreU]4LPPk`!el;\rIb-%s+1-!rI=cpp3ljfs*srs
+!eGrTrdt6)L&Qg9LPUeDMMmFPNK0']OckomQ'Rc(R@9V8SXuIITqeE[Vl-MoX0&M-Yd(OA[C3QT
+]">Vh^VI_'`5Ta;aND]McHaeadaQ^rf@S[/g>(N?hr*GOj5]4^k2tmll0@U$m-X6?mfDqJrpg-^
+o^r.U!quB_rV6Egs8)WirVZWmoDX=@PlH7~>
+JcC<$JcFs6o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nhot,n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJRaN)9<_SO"$]Xt_a[^EH6q4R_ZnXfZLrLE\S!1a"W".GXFQi!*JQN3ELJGaua
+O8"Y<NJrgSMM_=g%rli(AS5^oE,]rFI"-d&MtDu(NV/>0O8b1:O7eV7OoCIAO8=t:O8G%9O8Y1?
+O8Y1=O8=t<O8G%=Onk(AOckliOn=b,OT:RCPP^OCPPLC;PPg[FQ2QpIQ26g>Qi*6KRJiNLR0&hH
+S+rNQSb/NQTDtS_U&UheU\CM_U]%"cUB%+hV>mFjVuN^nWW/poWW/suX7`OoXo,@%Y8".>UnO6D
+QB[GiM1^8(H['[REH#gpC_hqaKnY),H[0^PD/3ftARf1T>?b33<rH)1=BSg4?Xm\aDK9iE9h@oH
+r_*BCJ:[];s)8]nFa/.WH@($hJUu\7i8EVSj5f:_jo08qEqOJSEeaLrs0)I*qlRX5pQ>'1o8s6=
+Occ#tQBqN8#F(F9P*1riOT(:GNfB$WN/NUOreU]4LPPk`!el;\rIb-%s+1-!rI=cpp3ljfs*srs
+!eGrTrdt6)L&Qg9LPUeDMMmFPNK0']OckomQ'Rc(R@9V8SXuIITqeE[Vl-MoX0&M-Yd(OA[C3QT
+]">Vh^VI_'`5Ta;aND]McHaeadaQ^rf@S[/g>(N?hr*GOj5]4^k2tmll0@U$m-X6?mfDqJrpg-^
+o^r.U!quB_rV6Egs8)WirVZWmoDX=@PlH7~>
+JcC<$JcFs6o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_ni$%-n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n['e'ZRhcHOJRaN)9<_SO"$]Xt_a[^EG=;>j>_:]F8k;>j>d:]4,g;>O)h:\mib:\mc_:%hWT
+<<-(t<<-"t;\;/W3B]Ph5=._,7n-*C92JD[rD*2`qG-l]!)EMhs%`Pfs%`>br)!>fr(d2bs%`Jf
+r_E)[qG-ubqG%#dr_NSjpeL`_"&;Qb:Amug;#=&V;#F,h;#X>k;#O2Y:]OAb:]XEiq+pudrDEJj
+r)!Mn;,R9gs&&Siq,-obr_rDfq,R>nrDi_o"BAK'<E8osrE&r"rE0,&r`T8)pKJeG>?b99=&r6s
+:eFAO7R9@*4Zbeh3B9&V2Dm<Z6pa+%4oRJA2$bul1GLR9/M/OQ/,h(@/MA\/0f([H3^#Yk6om7e
+2Ej;d91_Z?5sI\%6UX<@7hJ9^92&!,I=H`tJV&N,KS2NQrBL3Dr]g<Gr'(0Wr364)s/u7$s.L+#
+USO`_VPgDmWiE/&Xfeh1Z*:M4ZN%62[/RK5[g0FR]=Y_g]tOEZ"2DXf_Z%IP`;ddYa2uEErQ,#\
+pK%,lqH!Vrr)WPl".5F@QN!-SP`q;oP*(lgrf7;ENK&mUMi3JlM#rKgL]3#0KnP-XKE$Q'Jc1,t
+J,OiiIJeQoJ,FfuJV&LQK)pXZre=m;Ll$tGMi<USNfT9aP*;,qQC!u,R[]h<StD^MUSO`aVl?\s
+Xf\e2Z*UgF[^WfY]=bkm^r!t,`Q$!?b0/#ScHstee'uq"f@\g2gtgfDi8ESSj5f=ak32'olKdg'
+mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqYU0gr;HTcrdk*6s*t~>
+JcC<$JcFs6o`"gfrVZTjs8)ckrV/VOp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8NaMu3:_SEq"]XkY_[^=ugiVqd8hZVflgtUTYg@a.ug'cTdf%&=#e'l^kd*MU7
+rQY>:rM9@fosOG!rj*WPZa7$FZa$d>Y-"b+XHK6'I=R$,M2RO`S=l^Z[/RK6\,*Q2\,Ei8\c92:
+\bio.\HB@P\[_FFrj_m:p:C76!P5o>])B2>\Gs)>\G`u<\Gs,>\FR30\GEc3])0,<]`5\D^&YqB
+_#D1H_#;+J_Z%IQ_uR^P`;dgO`r3sV`r!gVaSO'ZbPo`ac1fN`chl)gd0S1Le'upuf%8ONf`'S'
+f`'S'gAfq,h#H+0gthe_s53n9qr7Y9rT*q=roX7Ds6'LJlMg,Km/QH)m,ZpLb/hTA_SNd^WM?2Z
+R[KS0O-#H_\?W?BY,\LTJ#ABgMi!.?K6qohGBNn+s)KH.F\Y_[JVK/GQ^XM;:fC4n<)c\mW2GZ;
+OcblmR@Kh?T:hpVX/u!on!3s?q3D)IYHRr.r2ot"!3<s9p;-UBrk\QKrP/BJr4i-Cs-WhQ!1*VL
+#F(F9P*1riOT(:ANfF$ss,-l7reU]4LPPk`!el;\re(6&rdjutrdXHerI=crs+13%rdt6)L&QgD
+LPUeDMMmFPNK0']OckllQ'IZ&R$sM6SXuIHTq\?YVPgAmWiW>*Yd(L?['mHR\\#Mf^V@V%_o9U8
+aN;WKc-FY^dF-Oof%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc8nac8BoCW%Ts7ZKerV6Eg
+s8)Wirqu]moDX=@Q2c@~>
+JcC<$JcFs6o`"gfrVZTjs8)ckrV/VOp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8NaMu3:_SEq"]XkY_[^;\&T_kART(&<JRff(GQ^@W9rg3YPrdacpqi:-+r/Uc9
+s,?u9!fDhjreCu)Ht-f'Ci403GBnXgKno>[q2P*.r/^f:r/^N4rfR2Arf?o;rK$f:qiC`<s,[,?
+rK$f:s,[#<!0R,>s,m>E!0Ql7o8s$9rKI,Arfd2Aq31`@s-<PIq3L`@qj@;Lrg<ML!h,UJpmh>S
+o:GuS!204_!huHbpnIb_rhTFds.o[ks/,^ls/>jpri#aos/Q+"r2]n!qlK[t/ZPV?R[9>)O,SpI
+J:)]gG&q_DD/=$*Mhd">JUVr_BRsu8BkCmb@U3/@=BAQ&=!1OH=[khf@V0CoEHHGN7nH6G9MA$,
+It2ESD/XB6Fa/01H4,+MJUlS5hr!ANioC%!!9O&sqf;COrGqqAriZ1$ri?+#_>j4ko9/^-rfI/I
+s-E_Orfm_QPEV/mOcbb)Nrb9#rf$l8!/gc4!f2Vere:K.KS9>Ws+:6$r.+crnUCFdrIFp!s+:6&
+!JH1+L2D^%M2@+JN/WaVO-#KeP*D5sQC+&.S"#t?T:hmPUnjlcW2cl!Xfen5ZEppH\%&u\]Y2(p
+_8=+/`Q-'AbKJ/Ucd:(feC<($f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF5u=o(2JFrq6<b
+s7cKes7u]kqtpBjr;H6dJcD#8J,~>
+JcC<$JcFs6o`"gfrVZTjs8)ckrV/YPp@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C[i8EJJgtUQ8
+f@JI$da?Fec-+8NaMu3:_SEq"]XkY_[^8n/rD<Mis%`8`s%r_mr_W>br_WPjqG7/fqG-rar_3)]
+oi:W`r_req!*/qrrDNkt5!h@m5Q3qQ6q0U991_kU:AR]]:A[cc:B"&h:B!uf:A@W_;#F,f:Amoe
+:Adoe:@h0\:/1[^rD3;cs%iYks%iDbr(dDi9heC]:]F8g:[V'W:]F8j;>sDj:[_*[;=mZc;,I*b
+r_WMir)3Gi!E)em;#aDk;?0Sn;YX,a;ZBYr<)rTjq,R>n"'&B%<VfYs<E<+"qc<VrrE0&%!*K5'
+s'#>)!aJr7r*02%'N.e)91h`D6:3t#4$5Sa3B/lS2DkD#s$%/[4$c.t2Dd-E0eb75/1W;&.P!(L
+/M/V51c%!J3]oYn6UEam2Ea5e2bQ_569mb$5sn%-7R]d;7nHBHI!pHmIt3*%rdt?,5<h=qq`k'D
+r]g6Er'14briZ1$ri?^4Tq\<XV5:&fWN)u!XKAY.YPtd)ZN%68['d?N\$rpI]*#^Z]Y4<Y!l)Rg
+qnif[`Pom=a2l?BaN2Ks<r,no<rH%t<qfVoR/`KQQN!-SP`q;oP*(lgrf7)?NW+n:MZAY6M#rKg
+L]3#0KnP-YKE$Q&Jc(&tJ+8!dJ,OotJcC?$K)pXZre>9FLl$tGMi<USNfT9aP*2&pQ'Rf)R[]e;
+StD[LU84T^Vl6VqXKAY0Z*L^C[^WcW]=bhl^VRe)`Pom=aihlPcHjkbdaZdtf@\d1gYCWAhr*JQ
+j5]4_k3(sml0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0iqYU0hr;?Nbrdk*7s*t~>
+JcC<$JcFs6oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nhot,n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^G&OqVhG3s5*q8h;-lag\]^ug&B\+g"?;Ss3q5$da?Fg
+ci)/dc2OO<U].(fV=q=r[.q!(Z5p3UZ*CO;Y-"h+X,<9hH[pa&M2I7TR@U(LX0oCFqR6=2rODg:
+!4_m9qmc.+!4_d6!4`$=!kPqQp:C:7s1/3Bq7?O8!4_m9s1&'=!4_R0s1%p9q7?I8rOi0DrOr9H
+pV?dEqS<'GrPJQOpV['Npr<9QrPn]S!6G#Zrlb>cr6=u]!71PhrmCbo#1M)Pe^i@(qq1o$rn.5'
+rS%;+rnIY2gtgiEqq_D3i8FIks5X+>r8mq?"R#"4l0835rp3eRjP/,)aMu39_7?PEUS=BNR[KS-
+OH,@5Z*LO7WiDkFUoLi?YD%U\I<g!ZF`;GCEefNJ:/HFmLlRUcR\66K;c$Rq<)JXQW2G]=Od))r
+R%0\=T:hpVWq68NQ2m3JXo>F#WrT0:s7X;*_Z%CM_"YV@^&XT#R/`KQQN!-SP`q;oP*(lgrf7)?
+NW+k<Mi*DkM#iEfrItB-KS9;Vs+:9%qgeWppO<$ir.+fus+:6&!JH1+L2Md&M2@+JN/WaVO,oBc
+P*;,qQC!u,S"#q>StMdOUSO`aW2ZetXfek3Z*UgF[^`lZ]=bkm^r!t,`Q$!?b0/#RcHstde'uq!
+f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$m-X60n*ol;o()DDo`"O`p&Ojcq#:*hqYU0hr;HTbrdk*8
+s*t~>
+JcC<$JcFs6oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nhot,n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^Da"qOmYVoq(`F!1`qU".GXFQi*0JQiEHFJbb>uO8Y+:
+N>me7Mi3IMM26tBLMqBHA8#^oDfBfBI"6g'LlM.fqMk3/r/^f:r/^T6!KiKCOoCI@O8P+:O8G%9
+O8b7@O8Y.BO-#HaqN1`<qN(]>qN1`>s,mAEo8rR+!0[;Eqi^rBqNCc?q3:oEs-3PKq3LcAqO%2K
+rg<PMrgEhVpRM8So:GrRr1X+a!2K=`rhKFfr1j:fs/#^lr29Rnr2K^pr2K^rs/Z(!!3?!u0s.U]
+Xf8+hR[9>)O,SpIIscNcG'%eGD/=!)Mhd%?Jpr&kBn(VeN.,;G?sQu?<`W6"<Y8kU7R]gT@qTXs
+F*)\Q7nH3Gr_*`=J:W2fDJsN8EccPNrd"ZoIY$;Rh>c@7i8N\Uro=(@pMp%MpN-:Rr2ot"rMopu
+_Z0=lqNCl@r0$Z6s,[5Krg<_P!1*VL#F(F9P*1riOT(:ANfF$s!fMqnreUZ3L])r/KnP-XKE$Q'
+JbsurJ+nEiJ,FisJcC?$K)pXZre><GLl$tGMi<USNfT6_P*2#nQ'Rc(R@B\9St;UKU8+N\Vl6Sp
+X0&P.Yd(OA[C3TU]">Vh^VI_'`5Ta;aND]Mc-F\`dF6Uqf%8R.g=tH>hV[8MioB+]k2tjjl07L!
+m-O--n*fc9nac8BoCW%Ts7QHerV6Bfs8)Wirqu`no)=4?QN)I~>
+JcC<$JcFs6oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nh]h*n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfcHOJRaMu3;_SO"$]Xt_a[^H*3r_WVjrD*,`q,$i^rD<JjqG75h:f%!aqbQiYp/V)k
+pf%#erDW_qs&8np&jAQ@4$Ghm5s[q-7nH?F9MJ8Wq+^`]qb7&cr_NMgr_<Aer(d;fr_NJhrD3>d
+r([2dr(m>fo1]6\:&Ric:]!oe:]F8k:\[]_:BO?d9htX_s%rSgmSNgWs%r\lr_WPhmna!]r_NSl
+peV#h:f.$br_WMir)3Dh!E)em:]OAk;ZBVo;YX,a;Z9Vd<;KVm<rH%p;up!"r`/ksqcEc!q,m]$
+qHEr)r`^7B=&Vsl91hcE6:!h"4$#G`3B/rT2)IZe6iK;,4#oSl4?l"k0/,"1/1W8%.P!&#2*!NO
+1Gq*N4$>bm6UEam2EX)b4@Vn58O5U+6UF1.7/fXY84Q6FHiAEmIKP(MJV*lR!/0r.s$$EHq*=mC
+r2ot"rMpU3U8"H[VPpJnWiE/&Xfeh1YctD2Z2h61[03qI\%'$K]DoPD^&G_H^r$&f"2_sn`;[dS
+a8a3\anAd3=8Gtf<</HdR/`KQQN!-SP`q;oP*(lgrf7)?NW+k<Mi*DkM#iEfrItB-KS9;Vs+:9%
+qgeWppO<$ir.+fus+:6&!JH1+L2Md&M2@+JN/WaVO,oBcP*;,qQC!u,S"#q>StMdOUSO`aW2Zet
+Xfek3Z*UgF[^`lZ]=bkm^r!t,`Q$!?b0/#RcHstde'uq!f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$
+m-X60n*ol;o()DDo`"O`p&Ojcq#:*hqYU0hr;HTbrdk*8s*t~>
+JcC<$JcFp5o`"gfrVZTjs8)ckrqQNfs7ZKcs7A;Bo()>?n*f]3m-O''l07Bnk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN)9<_ns4(]tCqe\$k5Qq;M>2"lJ1nh;$f_g\ok!g&Kb-g"=mTe-=CMdF$=f
+ci)/cc2=F8V#R:c[J[E1Zh:U/Z*Ud?YHFq-ri-NkSpPj9KntSEO-H*)USk6'qR6@3r4)^9!4_m9
+qmc=0!4qa3!4`$=!kPqQpU^=6!kQ"Uq7?R9!4_p:rj_=*!4_s;pU^76r4E$CrOr9HpV?dEqS<$F
+rke]Qp;?sMpr<9QrPn]S!6P)[rlb>cr6=u]!71PhrmCbo#1M)Pe^i='qUkf#rn%5(r7_2*rnRP.
+s5!_4r8%P5i8NYlirA'<jS\-=joFTDkY17+lg*p&jP/,(aMl*6_7?PEUS4<NR[KP-OH,E`ZEUL5
+X/i%HT<>K;Y*s[-T6O^E@!P@aI"m>M;1!kIN/s6nS"<DQ;,C=m<)KLkV[nfMOcu#oR[fn=StD^O
+W2fFgo9TEAn!<sSrN#gq`W,YJq830Js1e]N^qf]Zqn<-#R@4&A!LK,OPm<P;PEM)kOc]R'!KN0=
+Mueiore^Z2!/LQ.s+UK+re(6&rdjrsnULIerdb'$rIY-(L&Qg;LPUeDMMmFPNK0'\OHG]iPa.Q$
+R$jD4S=Q7DTqS6WV5C/hWiN5'Y->1:ZaI6N\@K5a]t_=u_Sa@3a2lBFbK\>Yd*^:keCE1&g"P08
+h;-uHi8N_VjQ5Odkiq?slg4!*mf)YUnF?MK!qZ'Vrq-?dp\4X]s7u]kqtp?irVc?eJcD&9J,~>
+JcC<$JcFp5o`"gfrVZTjs8)ckrqQNfs7ZKcs7A;Bo()>?n*f]3m-O''l07Bnk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN)9<_ns4(]tCqe\$hp$q4RSVoq(`Fs.'"Us-WqUQ^@Z:rKmMNoRZ+arf%/A
+NK&gPLk^]aL(A9M@qB@iDf9W;H$t0nL5Pbbqi19/r/^f:r/^T6rK7)@r/^c;qiCW9qiCc=rf@#>
+"-8P*O8G%<O8G%=Ont1>OoLREOn4\+OT:RCPP^OBPPUI?PPLI?Q2-a@Qhd$GR/iWMRJrWTS+iHQ
+Sb&HPTDYD^UAq"`U&^tdV#7"fV#R:jVYm@lW;NXoW;W^qWrB'sX8o=!XBVg.WMH2UQ^3eqN/<.;
+I!BmZF`VP>CM[d%Lk^V7J:)TVI=m33IWT(AEa;1&8QnAZ?Y!_;7:'J8C2S!3Fa6JJ84Q?J9M0__
+JU_QSDJsK7FEVqTH?spdIt@USs5!_4"5r.tj8J'<E;4GKEr:"YErU4YErN0=X8Ap9s7VTNP5LIB
+P5CC?OT(CAO91l=RJrQSQ^7W9#F(F9P*1riOT(:ANfF$s!K2j7M>rA3L]3&.L&Zi*KE$Q&Jbsuf
+J,FirJH1<#K)pXZre=s=Ll$tGMi<USNfT6_OckomQ'Rc(R@9V8SXuIITqeE[VPgAmX/rG+Yd(L?
+[C3QS\\#Mf^V@V%_o9U8aN;TJc-FY^dF-Ooe^rF+g=k?<h;@/KiT&tZjlY^hl07L!m-O--rpKmW
+nc&(\oCV\So`Fj]p\jmeq>^<gqu-HkrU^#>s-E\8~>
+JcC<$JcFp5o`"gfrVZTjs8)ckrqQNfs7ZKcs7A5@o()>?n*f]3m-O''l07Bnk2bR_iS`VMh;$`<
+f[n^(eC)ajcHXPTaN)9<_ns4(]tCqe\$l95rD3Jir(d#_qG?u`r)!>hr(m;gs%iSgr(m>hoM,'[
+r)EVnoMY]fqGIo&4[M7o5X.P#6q'O78P;WM:AIW]:Adid:B"&h:Adid:Adof:B+,f;#X8h:B!rj
+9MJ5V:Adof:@V'W:Adoc:B+,i:]O;b:Amrj:/+GXrD3GiqbQWVr(m>hr_`YkrD2lY!Du\m;><rh
+;,C*d:]F8g;>X8h;#sQlr(mAjr_i_m!)iPgpeq)io2PTeqH!SqqGdAmqc<VrrE/o!!*]8(s'-7A
+=BAEu:.n2N77':+5!(eg4?5D\r\Xs>6:!k"4ut_kr]Vhs3B/rV1+aRi,V:W!1H%6N2)@$G3BTGi
+6:<aj3&Wra5<2>-84c-65=%U76O-"L7Rfp>8kf52s*Xiq"+PiPK)L<'4[)'u5P@AB5Q7b_X8An'
+UnsufWN)u!XKDK)"0\r5Z2V$0ZaB_>&[o3[\@T;a]">Vg]tV7t_8=+g_?@cp`5T^p`r=$YaS&[1
+=8l8#<W?+i<<AVWRJrQSQ^7W9#F(F9P*1riOT(:ANfF$s!K2j7M>rA3L]3&.L&Zi*KE$Q&Jbsuf
+J,FirJH1<#K)pXZre=s=Ll$tGMi<USNfT6_OckomQ'Rc(R@9V8SXuIITqeE[VPgAmX/rG+Yd(L?
+[C3QS\\#Mf^V@V%_o9U8aN;TJc-FY^dF-Ooe^rF+g=k?<h;@/KiT&tZjlY^hl07L!m-O--rpKmW
+nc&(\oCV\So`Fj]p\jmeq>^<gqu-HkrU^#>s-E\8~>
+JcC<$JcFp5oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nhot,n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]XkY_hr!AMpYl/1"5htkh"f_)g@a,%g=b02f)F/$e'c[lrm1Yk
+q9Akurf-lRr2'%nrNuO0pp(mEZEga>Ycb./X/W(TQ'loGK8#/?N0'?oStr9er3lO4s0r*?\F[65
+\@K,Zrji'?qRQX;o!nb1rjh[4rOMp>q7?I6s186@rj_+$s1/3BqRZR9r4E$CrOr9HpV?dEqS<$F
+rke]Qp;?sMpr<6PrPn`T!Q`C[b5TTabl#`[cMu5gd/MGmdf7c"eCE+#f@ToPrn7;'s4R>(s4dP.
+"P__fhV\7fs53k8qVqP8s5a(=roX1C?0^b@jP//)ai236_RZ\FUS=BOR[B>)OcYT_Z`p[9XK/4K
+I]KinXdFEtSUb'L@!G:aIYUQk:jRVGNK9KrT4Ukr:fgRp;KJb7ViHb"P*D2sQ_'_<StD^OW2Zlg
+s7qr\Q2HsFQ1C4CQ^4\Qq5XIo`rGbKqSN6Js1n<BqnE*"!h,OFrg3_QQN!-]P`q;oP*(ifO,o<]
+NJrgSMi.Lj!f2VereCH,!/1<'s+:6$q1/3hqLJTss+:3%!JH1+L&m'creYBIMi<UTO,oBbP*2&p
+Q'[l*R[]e;StD[LU84T^Vl6SpXKAY/Yd(OA[C3TU]">Vh^VI_'`5Ta:aND]Mc-FY_dF6Uqf%8R-
+g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc8nac8BoCW%Ts7ZKerV6Egs8)Wirqu]moDX=@QiDR~>
+JcC<$JcFp5oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nh]h*n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]XkY_StGSHs.B"Vq47MV!1j+\!M#YVRKJtFR$[`:rg*VPrb_^S
+rbh[dr.4!jrf%nVNK&mTMi*CHL4t>!FE_5+CM[m-Ecl\UItNK6qMb<2p5]$2rf6o;p5o68rfI&=
+r/gc9r/gf:s,d5@rK%#?plPK9qiLi?qN1`>s,mAEplGK<rK-W5!0[;Eqi^rBqNCc?q3:`@qNh/J
+s-ESLpmCZ@rgNkVpmh>So:?#UTV27WrhBFfpn@b`qkX1crhKOjrMKLjs/>jps/>mqs/Q(!p8et-
+US+'BQBI8fM1^>+H$FLTEc5o6rb=0EL4k/.I!TRAK7o23FCT91@7N[W>!Q.rAO/dT?XdYbDK9iE
+<(KPL9MJ2R?\!]XDuOVaEH6&AGBeCZH@('iJUlMSg^)`mhV[8MioB(ujSa&uE;+AKErC(YErL.X
+ErW39WrK'<s7VTOP4Oh2OT1dOR[KTCQiWP>rfn([PEV/mOcYZcO,f6[N/W[QMZ/G6LkgcbLAur-
+K`-Q'K)U>sJG4QiJH(3#K)L<&KSBD[!JcL1M/%p+N/WdXO-#KeP*D5sQ^F//S"#t?T:hmPUnjlc
+W2ZeuXfek3Z*UgF[^`lZ]=bkm^r!t,`Q#s>b0/#RcHjnce'uq!f@\d1gYCWAhr*JQj5]4_k3(sm
+l0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0iqYU0hr;?Nbrdk*9s*t~>
+JcC<$JcFp5oD\^erqu]ks8)ckrV6Ee!;?Eb!VH!_nhK\(n*f]3m-O$%l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]XkY_r)*Gis%iVhpJ:N[rD3;er_WYlqbR2fqbR/er]pWQ5sR^6
+:AdiY<W,nq;t<id;#jGl;$9!G5<:q+5mTkG6q0X:8kMkT:&@]`9`Rre:]F2g:&[oc:]F2i:]+&g
+:]4&f:&doe9`Rrc:[h*W:Adoc:&n)h:]O;b:B"&h:B+#g:Amug;#=#h:f6^Yr(m>hr_`YkrD2lY
+r)*5cs%rbmqbI2gq,.&fr)!Jm;>a8j;?'Pn;#jMg;>3uf;Z]os;tj8g<Vfbp<Vf\m<W#np=8l=t
+=o)>:=BABr:eOGP7RBF,5!(eg3]K#W2Z>T567P2`3]fVn5X.Fn2`N]N0-;8^/M&D-2(g^C1Gq0R
+4[)+t3]B#W4[)(l5lO:X69mh%5skQ<#t.9Q7S$'B9M0X1HO,"II=?ZrJV&LQKDn%654:`.5QX0N
+X8/dqW?.q7WMunuXKAV-Y-5(6Z*CU?Za7$H[C3NR\[oAa])K;I]Y;+q_SO++_>_:O_u7LY`Q#p<
+a2lBDp/_#krDr>ds-j(YR@4&A!LK,OPnB7EPEM)kOH>NaNfK*XN/NUOreU]4LPPk`s+LH+rIb-%
+rdjlqpOE$is+13%rIY-(L&Qf-LPYqdC5Rq.N/is[OHG]hPa.N#R$a>3S"6.CTV8*UUo(&gWN*&%
+Y-5(7Za@-K\@K2_]Y;.r_SX71`lH0CbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'
+mI'H3nF5u=o(2JFrq6<bs7cKes7u]kqtpBjr;H6dJcD):J,~>
+JcC<$JcFm4o`"gfrVZTjs8)ckrqQNf!;?Ebs7A;Bo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'ZRhcHOJSaN)9<_SO"$]Xt_ahr!AMp>H25hr!;Hh>,h*gA9M%gAT\/f[eU&eC)eDd/q\@
+cMYoeN;\b5NrP(?Ni&]QV=M%n[/RE*ZN%3/Y5k^(WtMA/N15*=J:rZ5Mi<gbR\-LVYPu!.\,Wr=
+\[_7A"1YnO\Gj&=])&u;](!9$])K5?])B8:])9,=])T>?\E:@%])K>>])0,;]E#YD^&YqB_#D1G
+_#;+K_Z.OI_uRdN`r=$V`r!dWaN=;$rlb>cr6>5d!6tGes3LVirQto!e'lgse^i@(qUkf#rn%5(
+r7_2*#i+1igYCWAhr"Chs53h7qr7V8!9F%=roX1C>O(;'f#l+Q`5'4"W2QJbT:MF=Q'IAkNJk0I
+Y-"k0X+Po)`Oi:EItjV2DcB/N8oT-38ki-.ItirFR[TjE;G^1h<)Q\oW2HPQOHPflQ'n)3S=cCF
+U84`fY4)DaQN!-LQM?a;QN!3NQN!o]W;rm<s7O5)_Z.IO_"GJ?^&X]&Rf]%HRJrQSQ^7W9!L/fI
+Oo^],rf7)?NW+k<Mi*DkM#iEfrItB-KS9;Vs+:6$l[\tcs+:3%FbGI&L5(J>Ll$tGMi<USNfT9a
+P*2#oQ'Rc(R@9V8St;UKTqeE[Vl-MoX/rG,Yd(L?[C3QS\\#Mf^;%M$_o0O7aN;TJbg+M\dF-Ln
+e^rF*g=k<;h;7)JiSrnYjlY^gkiq?slg4!*mdKW6naZ2@oCMVRp&F^cp\jmdq>^<gqu6NlrUTr=
+s-Wh:~>
+JcC<$JcFm4o`"gfrVZTjs8)ckrqQNf!;?Ebs7A5@o()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'ZRhcHOJSaN)9<_SO"$]Xt_aStGPGs.B"VqORJS"J)'PR[X5Drg3\Pr0IAL!,_^Q!,_LK
+s+:6$nW*.!s,?r7!/^]2&qu!XG[b5sBl%a.EcubVJ:iT7r/CN4p5]$2rf6o;pQ5<8rfI&=r/gc9
+r/gf:s,d5@o8rs4qiLi?q2kT=!0R&<rfR5Bo8s$9rKI,Arfd2AqigoAq3CfB!13\Nqj7,GoU5WG
+!1WbRrgiYP!hZ-YrLs1a!2K:_qkX4drM0FirMKLjs/>gos/>prs/Q(!qlE/cXK8CrTUM75P`Lc[
+K7J;oG^"7NE,]W/C1rKZKS+f)Hu*MLO,&1-AnlEg;*R-F5ZM-%5Xn4M@qKOpEccOq7n6&J9E7`b
+J-pdED/XB5EccMLGlE!nI"$QrK%o)ZgBcTkhV[8MiT&ttjR.$cEr:"XErL.WErN*9W;rm<s7MNN
+P4Oh3O8tgMRf]%HRJrQSQ^7W9!L/fIOo^],rf7)?NW+k<Mi*DkM#iEfrItB-KS9;Vs+:6$l[\tc
+s+:3%FbGI&L5(J>Ll$tGMi<USNfT9aP*2#oQ'Rc(R@9V8St;UKTqeE[Vl-MoX/rG,Yd(L?[C3QS
+\\#Mf^;%M$_o0O7aN;TJbg+M\dF-Lne^rF*g=k<;h;7)JiSrnYjlY^gkiq?slg4!*mdKW6naZ2@
+oCMVRp&F^cp\jmdq>^<gqu6NlrUTr=s-Wh:~>
+JcC<$JcFm4o`"gfrVZTjs8)ckrqQNf!;?Ebs7A/>o()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^(e'ZRhcHOJSaN)9<_SO"$]Xt_ar)*Dh!)NShp.tN]!)`Dcs&&ems%iVhpeUod!'pNLrBUBK
+rBUBXr_;r`rD`\npJUibs%j7i5<D"k5!_G%6UX@48P;`Pr([&`rD!;er_NPhr([/crD3Dfr_NJh
+r_NJfr_<Dds%WMgr(lfVr_E;crD!>gr_NSjp.kT_s%`Sg!)EJgs%rSg!)WYlnkf6[s%r\lr_WPh
+m83dZpe^uf!)WPg!)WJgr)3Dh!)i\j!)`_nohkE\r_ikt;cEBhr)NPnr`/eor)NVpr)`i!qH3f%
+rEDuu<)ZUi9M7oF6UF%%4?>Pa3B&lT2)R3X6:!n%4?>_m6:!^p3&icO/gMGa/1rG.2(pgD1H.?U
+4[),"2`EWR4$>\g84c?E5sR_$62j4Y6q0^:8Ol<E9M0U.H3ekGI=?ZrJ:`CPK)e+54TI\65P%,?
+5Q7\[WW/n#WN)u!XKDK)&$N4AZ*CU?Za@*I[C3QT\bs#A]=bkm_#D.O^qmkd_Z%FV`5T^8`lJ)"
+oiCojrDrAe!1a%X!h,OFrg3_QQN!-MP`u*0!KiKCNrb9#repo:MMhCi!JlO0L'!'^K`-Q'K)U>e
+JGt-"K)L=EKS>,7L51S@M2@+JN/WaVO-#KeP*;/rQC!u,R[]h=StMdNUSO`aVl?\sXKA\1Z*L^D
+[^WcW]=bhk^VRe)`5Td<ai_fNcHaeadaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl07L!m-O--n*fc9
+nac8BoCW%Ts7QHerV6Bfs8)Wirqu`no)=4?R/_[~>
+JcC<$JcFm4oD\^erqu]ks8)ckrV-Hgp@eLY3qW%7o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkZ1hr!AMpYc>7hr!;Hh;%k]s4[;%r7VD/f[n['e'lbDd07nC
+cHXSWrepc7qi1N6s,@)?VPWdirj;[2pTjh()Qp3EY,nY'WMYcMH$t6sL5:_IPa7f2VQ-u2rO;g:
+s1&->n[SY0rji$>qRQU:rOMs>pUTk+rj`$?r4Dg:r42g<!4i*=k.1N'qn)m>qn)d=!58BGs1e<D
+rk\EGrPAKMs24QK!6+]Ps2Y#Vqo8`Yanj0ZbQ#fac2Pugc2>ldci)5hd07tIe'upurn%#!rn7;'
+!878'rnID,s5!b5rSIS3!oW%rqr7V8!9F"<:?La&kih'[e]GkM`5'4!WMcMaTUhO<QBdPmNK&jT
+N3BCdY,?l$VmF.<R!as^F^/0^HqJF0Mb-Z>IY*N=QC4@A;,C(g<)QVmVl,N7rfRDLR$jM8rgj=f
+USt/mY-.0ls-<>Ens/m6rg*VNri,dnaoD%MqSN9KrkS6Bqn<*%SGo#XRK/cTQiWP>rfmMKPQ$^G
+Oc]R'!KN0=Mueiore^Z2!/LQ.s+UK+rIb-%rdjHerdk*$rI]'BKnY89LPL\BM2I4MN/`jYO-#Ke
+PE_>uQ^F20S"-%@T:hmPUnjlcW2ZeuXfek3Z*UgF[^`lZ]=bkm^qmn*`Q#s>aihlPcHjkbdaZdt
+f@S^0gYCW@hr*GOj5]4^k2tmll0@U$m-X6/n*fc9rpg-^o^r.U!quB_rV6EgrqcQirVZWmo)=4?
+RK%d~>
+JcC<$JcFm4oD\^erqu]ks8)ckrV-Hgp@eLY3:uh5o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkYFStGSHs.B"Vq47GT"J)'QS!s8Cs-WhQrKdJ"")D^hD>nGN
+D>S2OJq<EOnW!R-)2a9-MMR%CL4jVq@V'7hCiF?7GC"[eK8,<`N;JV/Nr"h9Nr4t4OSk7@OSb+;
+OSFn8OSk1<OT1C5OT(=<O8tF<OT1FDP*,O$m?.C2!0d;Crfd/@r0.)DpQbE;r0R5HoU5WG!1WbR
+rgiYP!hZ-Yrh97as.f@`qP=.dr1j=hrMKLjs/>jps/>prri5suqlDr[US"!BQ'75eM1^;*H$=IT
+E,fi5CMIQtB4upLIt)f^BRkbnHuih8Dd5\"9O0nb@;/"r7:9YADK'ZB7fGpW9ERq<JUdZ:&8uN.
+F*2\OH$Xd`I=HctJqEsU$/4.ggtpoFhr3Soj8S*?EH(>cqf;IQqJuS7ql%X:oo]*6o9&j1!M,b[
+S,\oWRJrQSQ^7W9!L/fIOo^],rf7)?NW+k;Mi.Ljs+gZ1reCH,s+L?'s+:6$m=>1es+:3%E.iq!
+L5(J=Ll$tGMi<USNfT6_OckomQ'Rc(R@9V8SXuIHTq\?YVPgAlWiW>*YHY:<['d?P\[oDc^;%J"
+_Sa@4a2lBGbK\>Yd*^:keCN7'g"P39h;-uHi8N_VjQ5Odkiq?slg4!*mdBQ4nF?MK!qZ'Vrq-?d
+p\4X]s7uZjr;6HjrVc<dJcD/<J,~>
+JcC<$JcFm4oD\^erqu]ks8)ckrV-Hgp@eLY2>$M2o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-+8OaMu3:_SEq"]XkZN;>sAl:]=,^:]!ub;#jGk;#sKjr_NSjr(d&`r]gBIr^$QL
+r]g9F!DZAY<W#hg;u0Ak:_5cW4Zu%n5sIY&6UjR;8k`"Z:&@]a:&duf:]F2g:&Icc:]4&g:]+#h
+:]*uf:&R`e9hnI]:B4/\:&Ri`:]=,h:]=/j:\IQ_:]F2i9`Rre:B45f:B45j;=[Q]:\dfh:JOY\
+m83aYq,%)g!)WPg"&Mil;Z'Dj;Yj5k;Gm?g!)`_nohkE\r_ikt;cEBhr)NPnrDi\nr)NYqqcEc!
+q-!`%'Ne=4:ej\W84>m35<_1j3]T2Y2`CXm,Vq>55s7Fp3^>tr5<V%d3&NEB*[)g`/M8h>0JtXD
+2`a&b5XPH/"?&A*4?NO5!C9'O5lX4O6jH.N7R]j=8kf4Vs*=Wj$$giCH[U<kIXm"KK)UE!4o[_7
+5Oh#<WVWOpWN3-"XTbl2YHY79riu^6['d<M\GWo:\cBGA^])"K_>_:[_ns=/`5T^8a2l<Aan8^2
+=8l7g<<8Y\rgWqV!1EhR!LK,OPl[,5rfR;EOT(:ANfF$s!K2j7M>rA3L]3&.L&Zi)KE$Q&JaJ!e
+JcC?#K5cKtKnb>;LPUeDMMmFPNK0'\OHG]iPa.Q$R$jD4S=Q7DTV8*UUo(&gWN*&%Y-5(7Za@-K
+\@K2_]Y;.r_8=+/`lH0BbKJ/Ucd:(feC<($f@em4gtgfDi8ESSj5f=ak32'olKdg'mI'E2n*olH
+ncJFTo`"Lbp@n=[q#C0hqY^6hr;HTbrdk*;s*t~>
+JcC<$JcFj3o`"gfrquZjs8)ckrqQNf!;?Eb3qW%8o()>?n*f]3m-O''l0.<mjlGI]iS`VMh:pZ:
+f[n['e'ZOgcHOJRaMu3;_SO"$]Y!%Whr!AMpYl/1"lJ1nh;$f_gAot,g&B_)g&9Y(f`]pXeC;tH
+dJhJocd'f7N;JP4N;JV0NpjCT[/RE2ZMUmFY-4t/X/i8"W/?k-H$t<uLPh"LOdMZ3VlR3([fEr&
+\c',;\c',<\H'57\am?2\H'5=]D9&:\c0/?\c0,9\H'5.\c984]DT;A^&GbG^\5JC_>1nF_>_=O
+_tM"K`V7CPa8<mQ`rO6Xb5TTabl#`ccMu/fcMc)fd/D>rdaQ[pe^`7MfDF5!g&K_)g&0S&g]$".
+hYuF4hZ)I7i8NYlir7s<jSJ!<k$@*,g!e'a`5KI-\Z2O#T:haER$O#!N/WdUNK&mQM2I1KM4hGY
+\"]48Ru3/#CMHCTG(b`J:j@SGNK0BpT2/?^:K(.gKr9ujNfoNgQ'n)3S=Z@EU8=fgY-5%2m/I'M
+qN^rDpQbcCrK[)Bs-N_Nri#amb5VIWpVH[Bs2"`NotUF=".l'SSGnumR[KS2R$X,)Q'IStPEM)k
+OH>NaNfF$s#E+IsM2@%EL])r/KnP-XKDpK%Jae3hJc:9"K5lQuKnb>;LPUeDMMmFPNK0'\OHG]h
+Pa.N"R$a;2S"-(ATV8*TUnsueWN*##Xfnt6ZEppH\%&u[]Y2%o^r""-`Q$!?b0/#RcHjnce'uq!
+f@\d1gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*oi:rpg*]o`"O`pAamcq#C0iqYU0gr;HTcrdk*;
+s*t~>
+JcC<$JcFj3o`"gfrquZjs8)ckrqQNf!;?Eb2"^D2o()>?n*f]3m-O''l0.<mjlGI]iS`VMh:pZ:
+f[n['e'ZOgcHOJRaMu3;_SO"$]Y"07!2&hTs.B(XrLNqZrgj"Zrga1^S!oe6rg<\Org*7o!,_^Q
+qec4JmuI1&qi(Q4!/^]2'o.NuDg$A8AnPmsE,foAH[^O!Ll@;iNVAJ/O8k7=O7n\6OoCI>O8Y18
+O8Y1<O8Y1?O8P(>Onk+<O8G"=Onb%:Onb%*OoCLDPP^OBPPLC>P5pj>Q1^I@Qhd$@RJ`NRS,/ZQ
+Sb/KRTDkM_U&C_cU\LP`U\gkeU\pnfV>d@hVuN^mWW/psWW&psX8T+6Vk]lQQ^*bqN/<1:I!BjZ
+FDl,:D#J)LBPIEY-Y@"&H]!9+H#dA8B4X/#:d%][@q\>$?"%>]D/jZB7S$$<9h\2oJ,X<jD/XB6
+F*DhRrd"fsIXZj#JqJ^TgCDrlg=tB;h;7&Hi8NYTj8S-8E:IrFEqj_PErN$8Voo&5Onk13Ont.A
+St2FBrgOXkR@0G0Q^3r&Q'@JrP*1rhOH5H_NW+kAMi*CKM26tCrItB-KS9;Vrdt-#n::Lhrdt*$
+EJ0%"L5(J=Ll$tGMi<USNfT6_OckllQ'IZ&R$jG5S=Z=FTq\<XV5L5jWiN5'YHY:;Za@0M\@K2`
+]tV7s_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF5uIncA@S
+rq6<bs7cKes7u]kqtp?irVc?eJcD/<J,~>
+JcC<$JcFj3o`"gfrquZjs8)ckrqQNf!;?Eb2"^D2o()>?n*f]3m-O''l0.<mjlGI]iS`VMh:pZ:
+f[n['e'ZOgcHOJRaMu3;_SO"$]Y"#;rD3Jir_E;c!)EJgr(ur]s%r_krD*5cs$?BEr^$QLrBL0E
+moB<crDN\qrDW_qs&8ko'i@e(4?l"k4[2(p5Xe%-77^!A9284Y:B!uf:B"&g:Amob:B"&f:B+,g
+;#a>i:B!ud9`Ife:Adlf:@_-X:AI]c:B+,h:]O;d:'"-cr_NPhs%NJgrD*DiqG.)fr_`5_r(m,b
+"A_cf:J^[\!)NGfrDEAes%rbmqbI;j;,L6h;>a>h;#sQlr)!Djs&/PfohtWbp/Lujq,[GoqGdAm
+qc<VrrE/r"*`uHC;,C(^91_Q@5sIOp4$>Sa2*!QQ2)R3K1,UjDr\Zep5=7Rs3ArfR0J+1j.46Mt
+1cR?M0f:pN4[),"2`WcS5!:tq83K7)5<qJ$6:4.27n-$>85)]L9MJ3*rcnZnH$Xd`I/\QtIt3'$
+K)UE#4oRSD4TI\65Oh#<W;NOqWiN8(riQ7)ricC-riua7['d?O\@MUK%Cs'^]Y;.q^;%Cs^qdea
+_Z.LV`5T^9a8X-[anAd2=8l7h<<Jh`SXf\K'q1PYR$a5+QBd`"PEV/mOcYZcO,f5!N!G8uMM[1G
+Lkkq`!el;\rIb*$rdjQhrdk'#rI]*CKnY89LPL\BM2I4MN/`jYO-#KeP*D5sQC+&-S"#q>StMdO
+USO`aVl?\sXKA\1Z*L^C[^WcW]"G_j^VI_(`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8MioB([
+k2tjjl07L!m-O--n*fc8nc&([oCW%Ts7ZKerV6Egs8)WirVZWmoDX=@RK%d~>
+JcC<$JcFj3oD\^erqu]ks8)ckrV-Hgp@eLY1\C;0o'u5=n*f]2m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8Na2Q!6_8!^s]Dg[ehuDX/i<J5thqm2Fh##h+gA]e"g'?<`f[eU&e'e6Crm1_m
+c&DR[rJ^]5!fXY!qi1?1n[8D(rj2X1s03`OZ*:F9Y-+k-WiW2"VMpmdH@:C!LP^qKP*hi7W3*J:
+\EUR&])9,;])T>?](``9]"@UGrOE!@]=e*SqRZX9rji0A\@DCGs17X/s17s:!5/<Cr4E$CrkAEI
+p;$^Eq7upEs2+fRpVd*NpVm3RqSrEQs2Y2^qo\o]s31Dcs3CVgrm(Jgr6YGj#1CuLeCE+#rn%&"
+rRh2'rn75'rS.>,!SuW2hZhrphr*GOiV_^6j8.j_jP&,3a2l3:_nrsbVk]oXSXYt2Q&gudNJidS
+Mhm4HMM[1GLAlrcL6[UTF`C5JED(.qL.b9>H@^j2PF@u4:Jt%k<)QVQNK0![Od)#qR@Tn@St;[Q
+W2d#'Xf^mgr07&CrKd8Er072Gn<WpKbl@XWq8)pErk\WMp:pO>"eVBXSXl;MRfStGrg3_QQN!-M
+P`u*0#*G".O,f6[repl9MZ/G6LkgcbLAuu-K`-Q&K)U>lJGt-!K)L<'KS>-ZL&m'creYHKMi<US
+NfT6`P*2#nQ'Rc(R@9V8SXuIHTq\?YVPgAlWiW>*YHY:<['d?O\[oDc]t_=u_Sa@3a2lBFbK\>Y
+d*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3nF?&>o(2JFrq6<b!;HHerqZTjqtpBj
+rVc<dJcD2=J,~>
+JcC<$JcFj3oD\^erqu]ks8)ckrV-Hgp@eLY1\C;0o'u5=n*f]2m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8Na2Q!6_8!^s]DeE%TCSZTTD>)WSbJ]\SXc4>R[TY4rg<\Os-E\%r+u@Lr+uCm
+rbhUMqJPqcq2P?3*fGu8MMm@LLkphBL51G%G@=umC2@d+EH?DRIt<<0pl5-1q2YN9r/^Q5rK7)@
+qiCc=!KiK<O8k==O8P(>O8P(>Onk+=O8=t<Onk+;Onb%*OoCLDPPUIBPPLC?P5pj=Q1^I@Qhd$@
+RJ`NRS,/ZQSb/KRTDkM_U&:YbU\^_bU\^bdU\pqfV>mFhVZ<[mWW/psWVrjrWu%e2TV%X>Q'.;i
+M1^>+I!BdUEGoc3C23`^2eQf;B4baeAS,LaAn,@iCMR-S4?QY1<*a$#7S$ipB5DO,Fa-DI7nlZN
+95A?\DJa92EH?8HH2`+/I"$KpK7\`.g=b36gY1E9g=tE=hV[5KiSieUro<ZjnT"MJpiH7OqPVR;
+oo]*6nr`g2"eVBXSXl;MRfStGrg3_QQN!-MP`u*0#*G".O,f6[repl9MZ/G6LkgcbLAuu-K`-Q&
+K)U>lJGt-!K)L<'KS>-ZL&m'creYHKMi<USNfT6`P*2#nQ'Rc(R@9V8SXuIHTq\?YVPgAlWiW>*
+YHY:<['d?O\[oDc]t_=u_Sa@3a2lBFbK\>Yd*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'
+mI'H3nF?&>o(2JFrq6<b!;HHerqZTjqtpBjrVc<dJcD2=J,~>
+JcC<$JcFj3oD\^erqu]ks8)ckrV-Hgp@eLY2"^D1o'u5=n*f]2m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8Na2Q!6_8!^s]2JK&r_NSjr_E8br_<Ghr(ur]!`2Zgr(d/c!'gHJr^$?Fs&K%a
+s$6NIqEXRNr)E;e##S8q;,BD@r]C9J4[D=36j6%N84lTPqbI/cs%`Phr_EDdr(d8fr(d8frD<Mi
+rD*>drCm5c##7rj:JX_\nkK$WqG7,ds%iVj!)NAbr(m>fs%WDe!)WMf!)WYlnkf6[q+q2i:/4S\
+pe^rcqG@,fq,%)gs%rVh"&Mim;Z'Di;Ys;l;Gm?gs&&bnpJLT]qG[)er`/\nrDi\nr)NYqqcEc!
+rE0h:<)c^k:/"8P77BI+5!D(k3B9&Zr\Xg71c-pDr\OO2q_K0L1c$d4)^d0h.kih62)I'H3&s,c
+6UWjn2Ea5&4T@PS5sR_%6UX:07n?*@7n?>Q9)hQbGQ)jeGm/M>H$XgbrdG!"J:N3%rdsu0r&k!C
+mm$;,qPOCrXf_T*!3cC+#dL\@Za@-K[^c=Gs0r0A]=koU^';Bf^qmk(_>_:U_o0L5`Q#staRrU1
+=8c1h<<]"dSt2FBrgNqWRJrQSQ^7W9!L/fIOp7&1O,o<]NW+k;Mi.Lj!f2VereCH,s+L?'rdt-#
+npp^jrdt*$!ec8]re:H/M#N6IMMmFPNK0'\OcklkPa.Q$R$jD4S=Q7DTV8*UUo(&gWN*&%Y-5(7
+Za@-K\%0)^]Y2(p_8=+/`Q-'Ab0/&Tcd:(fe'uq"f@\g2gYL]Bi8ESRj5f=ak3(sml0@U$m-X60
+n*ol;o()DDo`"O`p&Ojcq#:*hqYU0hr;HTbrdk*<s*t~>
+JcC<$JcFg2o`"gfrqu]krqcZjrqQNf!;?Eb1\C;1o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]`-aihr*JOp>H56hqm2Fgt_e]!8@G*qV(r%s4@J*e^W'rrmCbm
+!71P$qi1N4s2OuHr/L]9!0?u:osO_)s0Ma2rimQLY-"h/X/rD&WMlbURs'+,KSYD?MN<siTVAEg
+[^j!?\c98>\bs&:\c',>\c',8\ad90\c9;A]`,P=])K8?])T>@\G`r@]",A_](NW6])B2=](`i3
+]E#YE^AbnA_#M7H_#2%J_Z.OL`;[aD`r3sXaT'BYb5TTabkTH^cMZ#ed/MGmdf7breGe&!fDF5!
+f`9\'g&9Y&gBQHhh;7#Gi;MR5i;_d6ir.m;jSe0cin2`'a2Z'9_nrp_VPBcTSXYt2Q&Uf`N4c]Y
+Mi!=HLkgeBLAlr2L4t87LAlu]LO;[6I>^`n:k!tPNg-!);,:%d<JHBgN/`jWO-,WiR@9\:T:VaO
+VlHo&Xf\eks8S;ZPkpXFQMHgBPl?s?QMef$Vp58?_"khC_Z%CO_"PP@^Aji*T)Y>]SGnuYR[O/B
+&!rTIQ'@MsP*1rhOH5H_NW+kAMi*CKM26tCrItB-KS98Urdt*"p43*mrdt*$s+CB+re>6ELkpnE
+MMmFPNK0'\OHG]iPa.N#R$a;2S"-(ATV8*TUnsueWN*##Xfen4ZEppH[^`lZ]Y(tn^r!t,`Q#s>
+aihlPcHjkbdaZdtf@S^0g>(N?hr*GOj5]4^k2tjkl0@U$m-X3.n*fc9rpg-^o^r.U!quB_rV6Eg
+rqcQirVZWmo)=4?S,\!~>
+JcC<$JcFg2o`"gfrqu]krqcZjrqQNf!;?Eb3:uh6o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]UkaeStGPG!2'%XrLNeVrgj(Z!h5XIrgEeRrg3P!rbVXOrbDLM
+rbV^QQBqH/s).^Nq/6(ip5Sp-!/pi5!/gc3!/LQ.&TW/*A8#[oD/XE9H$b$mL5M#gNVeb6O8k=A
+NrY4=O7n\4OoLO@O8P+6O8k==O8P(>O8P+>Ont1>O8Y.COcYZeOnk+9Ont1,OoCLDPPUIBPPLCA
+PQ$g<Q1^I@Qi*3NQi<BFRJWEQS,8`QSb/NRTDkM_U&C_cU\^_aU\gheU]%"fV>mFhVuN^mWW/ms
+WVrh4X/D_cSXGe.PECi]Jq/5qGBItHDf9IkC'foYB4tmgAnGUdrae`5ARo:]AS#IbAn>75='oZ-
+7RgcqBPh^1GXk:q7nm]2CM[m*Df'E3EH?>KH$Xd`I=?a!JqJ]/f\+s3g=t?7g=k<:h;7#Gi8NYo
+irA*0E:IrIEqaYSEr;4#Vp58?OoCOAOnt74Ont1>TDtM_SH,2ZRfStGrg44_QBd`"P`q8nOcYZc
+O,f5!N!G8uMM[1GLkkq`!el;\r.G!#rIOZmrIOs"rIb-'!/:E,Ckmh&M2@+JN/WaVO,oBbP*;,q
+Q'[l*R@B\9St;UKU8+N\Vl-MoX/rG+YctF>['mEQ\[oGd^;%J#_SjF5a2lBGbK\>Yd*^:keCN7'
+g"P08h;-uHi8N_VjQ5OdkNV6rlg4!*mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVc<dJcD5>
+J,~>
+JcC<$JcFg2o`"gfrqu]krqcZjrqQNf!;?Eb1\C;1o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOfc-4AQaMu3:_SEq"]_tb,;>j;n:JOY\r_WPhr_<GhqbZl]!`2Zgr(d5eq`jsC!($QK
+s%`Jls$6WMr'1!Bnl>Wfqc!Jlr_ieprD=Cq5Wh+j5!D4t6UXC58P)TL:/4S[:/+GXrD3Dfr_<8b
+s%iPfr_NMi!)NJes%WDb!DQ>f:B4/[:&Ic^:B4/h:BF?g:]!lg:JO[_:]=)h:%V3];#X>_;#F,b
+:]sQh:/=[\;#O2e;#O8e;#X;l;#=#i;,U<h;>jDf;>a5j;>sJf;>!i_;tj8j<VKPm<Vf\m<Vohp
+=8l>%=X@-K;c$4`9M.fD6U3h!4Zbbd3B/uT2)I-Z6SgPT1,:^D1GUaAr\GKN1c.!G1c7-F/M8h=
+0JtRB2`Wua5XRCf3&Wqu4;C%C5s@P!6:4+.7n,m;7nQHI9MA/SrceBes*4usH$O^_I!pHmIt3(K
+JcC>s4o@GB4nV#>55RS:5l=RYVuNmuXokl3Yd+25!OK34[f3`<\@T;ark8<FrkAHKrk\QM$,a^"
+`Q#s=aN;R&<rQ1u<r,nr<q',hTDtM_SH,2ZRfStGrg44_QBd`"P`q8nOcYZcO,f5!N!G8uMM[1G
+Lkkq`!el;\r.G!#rIOZmrIOs"rIb-'!/:E,Ckmh&M2@+JN/WaVO,oBbP*;,qQ'[l*R@B\9St;UK
+U8+N\Vl-MoX/rG+YctF>['mEQ\[oGd^;%J#_SjF5a2lBGbK\>Yd*^:keCN7'g"P08h;-uHi8N_V
+jQ5OdkNV6rlg4!*mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVc<dJcD5>J,~>
+JcC<$JcFg2o`"gfrVZTjs8)ckrV/DIp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!_>h>Z73hr+1d"5r(nh>Z12gY1B\gAot,g%jA%fa$0]f%&:!daJ-B
+o8NU,rl+ZBs,@&>NW+q<O84h5[JI9/Zi@?1YT0jLY,nb*Wi<"rWK<]pH[^X&Ll..RQ(+G@Wi``'
+\c98@\c98>\bs#@\[oA_p:C:7!4r*=s1/3BqRZ^=rOW!="M24W]Y+3Tq7?U:s186@s1&$<s1/9B
+]"7RFrjr*>rjqj9pq-U?rkABHpV?gFq7upErke]Qq8E9Om`,4Gs2b5^qTAi]rlk>c!6kDds3CMf
+rQtSlrmLhq!7_#!rn%)#pt>Z#qqM/+s4mb5hr+Ijro!h8ro3k9-fjCNhpp/ta2Z'9`ko-^V5'ZS
+SXYt1P`Uo`Mn6@'Ycb(+WJ?4aLAlrEKnP29Lkgb?L4tD:KnbA;L51M<LPLV<re:N/KSG6\M\M/3
+N0'0dPaS#3SXuFHUo15qY-"kis8A/XPk(+8Pl?sCQMAK#aSi$_s89\/_>1tJ_>_7E^\keITqJ%W
+SdV*ZS=?":R@0G0Q^7W9&<rBAP*(lgO,o<\NJrgSMMhCi!f2VereCH,s+L?'rIXruqgeTqrdt'#
+s+CB+re>*ALkpnEMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:qsQUnjlcW2ZetXfek3Z*UdE[^WfX
+]=bhl^VRe)`5Ta;aND]McHab`dF6Uqf%8R-g=tE=hV[8MioB([jlYail07L!m-O--rpKmWnc&([
+oCW%Ts7ZKerV6Egs8)Wirqu]moDX=@S,\!~>
+JcC<$JcFg2o`"gfrVZTjs8)ckrV/>Gp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!_`T)PAPTE(VZT)G5UT)YA]SH#&YRf8`SR/CgrD#A)JQM?O?DZ+GI
+DY/qcN;e_6M&;#(L5(D:KnaYp@V'4eCN"04G'SIbK8,<^NVe_BO-#HaO-#HaO,j1"p5o06rfI)>
+rK-]5!0I)=p5o<:qN1`<rK.&A!g&P,q2kH8qiL3-rfR8FqNClBq3(`@s-3,?op5QCr0[MNrg<AH
+r0mYTqjdPSoq)/Trh07arM'=eqP*tarM0FiqkX4fs/,Ui!3#dos/5psri-^1Tq@jBQB[MoNJN.8
+I!^'[F)c,9D#S,qN/<=DK7JArAnGUaA7]7]A7fCaA7f@`@qK:`AnPafB4YahAnP`TB`D]KBkhBu
+Ci')g'5qi0F`r%UH@(!eI=[!%K7hb-f`'P4g=b35g"P39h;7#Hi;V^8irA'>Dte5NEVXSGEW1"R
+F82"#QMm`-s88#VOoUX?P4Oh5O92,KTDkDiSXc4>S!ob5R$a5+rfn%ZPEM)kOcYWbNfB$WN/NRN
+reU]4LPPk`s+UK+rIb'#r.4`qr.4j!r.G$&!/:E,BSVD"M2@+JN/WaVO,oBbP*2#oQ'Rc(R@9V8
+SXuIITq\?YVPgAlWiN8)YHY:<ZaI6N\[f>b]t_=u_Sa=2`lQ6DbKS8WcdC.heCE.%f\,!5gtgiE
+i8N\Uj5f=akNM0plKdg'mI'uB!V#XYncA@Srq6<bs7cKes7u]kqtpBjr;H6dJcD5>J,~>
+JcC<$JcFg2o`"gfrVZTjs8)ckrV/>Gp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#:Zi8<DIgtLK7
+f@JI#dF$:cbfe,La2Q!6_8!_\;Z9Pm:]jKg:/CjcrD3>dr(uu^s%i\kqbI/TpHSL>r_E5f!^T(:
+rBL'BoMtihr)<Mkqb\+l5s@=l5!2(s6q'R77n?6F:JOYZ:/:dar(d8dqbI/erD*;es%r\jr(d5c
+rCd5d:Amrg:@V'V:@_3X:B+)i:Adod:@q<^;#X>_;#F,a;#X2i:\[cb:]!ue;>F&f;#jGj:BOEj
+;H!BhrDNDfrD<Mkr_iMgohtQ`p/M&lpK%2lqc*Gmr)W_sr`CRL<)HFd:.n2L6ps=)4Zthg3B9&X
+2)d?M77'@-5<_4k2)@!E1GgmDr\Os>1c@-I2)[<J2E1Up$T9k#2E<`U3B'#\48qAX4?G_m5<hG#
+6pjC58Ol9A8kVcK9MGG/s*+He$@-l@H$XgcI=?Zqrdb$"!ePtcof`79!'U<Fq*4mCq`jj@pJ_$g
+"0J`/YPta/Z*L[A[/IB4[f3`9\c02B]Y2#W^AktI^];4L_?e&t`5]g<aN;O$<r5qu<r#hr<q')j
+TqJ%WSdV*ZS=?":R@0G0Q^7W9&<rBAP*(lgO,o<\NJrgSMMhCi!f2VereCH,s+L?'rIXruqgeTq
+rdt'#s+CB+re>*ALkpnEMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:qsQUnjlcW2ZetXfek3Z*UdE
+[^WfX]=bhl^VRe)`5Ta;aND]McHab`dF6Uqf%8R-g=tE=hV[8MioB([jlYail07L!m-O--rpKmW
+nc&([oCW%Ts7ZKerV6Egs8)Wirqu]moDX=@S,\!~>
+JcC<$JcFg2oD\^erqu]krqcZjrqQNf!;?Eb!VH!_nh0J%n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8Na2Z*9_SEq@h#?.2hr+.c#2nCqh;$f?rRq;,gA]e$gAfh3f[n^)e'c[ld/Asn
+N;gcr`q6bANK3msq2Y0UrNlO0s02X/Y-.c*(9=I5VMCA-GBeUhLl%"KOd;N1U8k?'qmcmA\[f;_
+\c02=\bWf:\b3N7\[q^Ls1/3BqRZ^=rOW!=!P5oB]_oAA\biu<\c98@\c92<\c95B\[oBF\c',>
+\c027]D0#=^&GbF^]2+J^\ttJ_>1nE_>_=O_t_1M`W*pXa771Ka8X0[anj0ZbQ#fbbm)D:c-4GW
+cMPrcciDJmdf7breG[tufDX@rg&B_%gBQHhh;7#Gi;VX4huMa8iqqa=g!nHj`r3e-^TOQ4U7e-I
+R$X)#O,]'U]!J]FY,nY%IsSZ>[(rVpKnbD=L5(A7L5(D9KSG3[L*VJ.LP:G:L4tA9KnbA@M2S6k
+NffKgQ'n25SXuFHUo:;rY-"nis8%rUPk:78Pl?sHQM/Aua90P]Vl.oAr4r0Fq830Js1nBDqn<0+
+TV.qVScPCPrgNqWRJrQWQ^3o%P`u*0$^$O3O,f6[N/W[QMZ/G6LkgcbLAuu-K`$K%K(=KlK)C9$
+KE-`*LB!$KLl$tGMMmFPNK0'\OHPcjPa.Q$R$a>3S"6.BTV8*TUnsueWN*##Xfen4ZEppH[^`lZ
+]=bkm^qmn*`Pom=aihlPcHaeadaQ^rf@S[/g=tH>hV[8MioB+]k2tjjl07L!m-O--n*fc9nac8B
+oCW%Ts7ZKerqQKgs8)Wirqu`no)=4?SH"*~>
+JcC<$JcFg2oD\^erqu]krqcZjrqQNf!;?Eb!VH!_nh9P&n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8Na2Z*9_SEpWSt>qRn=TcRq4@PUq4@VWrgX"YRf8]TR/Lq!D>J)JC]0RkO7@,]
+NVe\7M]Rb4M26qBL4t84Dfg>9@qTLmDfTlAH@:9qL5LqLNW"n:O8k:AO8b7;O7n\3OoLOAO8Y15
+NrY:>O7eV7Ont1>O8Y1?OTLW,Onk+7Oo1=.OoCLHPEM)mPPpXEPPLC@PQ-m<Q1^IBQi*6NQi<BE
+RJiTRS,AfRSb8TRTDkM^U&C_aU]$qcU].(hV>R.fV#[CfVZ<[mWW&hOUnOEKR$<erNf/UCI=-?b
+F`MG<D/3j!BoIq(KS+f'H=pfFM1g_5A7]:aAS#C`@V'-MB)cKDAc?9FB4b^fAnM$Ts(MFI)f'8>
+D/O61E,p)FG^4U^H[^EpJqAW.f%/I)f_X8)g=tE=hVS7is5=(>j5]4uDtn;NEVaYHEW1"WF7YY!
+QDURXd/O*/rK6Z6o9&p3"/2B\TDkD_SXf\K!LfGUQj&hBQ'IStrfRYOOH5H_NfB!VMi3JlM#rKg
+L]3&.L&Zi(KDpJnJc:9!KE$T)L&Qi,LN/-,M2I1KN/WaVO,oBcP*;,qQC!u+R[]e;St;UKU8+N\
+Vl-MoX/rG+YctF>['mEQ\[oDc^;%J"_Sa@3a2lBGbK\>Xd*^:jeCE1&f\5'6h;-rFi8N\UjQ5Od
+kNM0plKdg'mI'H3nF?&>o(2JFrq6<bs7cNfrqZTjqtpBjrVc<dJcD8?J,~>
+JcC<$JcFg2oD\^erqu]krqcZjrqQNf!;?Eb!VH!_ngs>#n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ9
+f@JL%da?Fec-+8Na2Z*9_SEq];ZBVn;#X8g;#a>h:B+,h;"@Ha:f%$bq*+[?s$6TKr]pEWoMb9F
+p/V#ir_rbnr)"2*4$Q(q4[)"o5<qP&7n-!=8ki&T:Adod:&n#b:&n)f:Amug;#X8f:B+&e9E@j_
+rD*DgnkK!Vnk]-Xs%`Vir(m8doM5H`r_`5_r(m5erD3Df!)NAdrD3;erDEAer_WYlr(d>i;>sJk
+;>a>f;>j>j;>sJh;>!i];tj8k<VKPl<Vf\l<W,tr=".6P;c$7b:.e&G6pj7(5!M+k3B9&W2)[9I
+770C-5Wq4j5<_Cu5!D"`r\Og:1Gq$H2)Y@hs"sm<2`N_p3#4M62`N`X3]fJf4$?5#69d\"6UX:1
+8,c$Z8,Z*\9`K88G5c^`GQN/:HiAHmJ,b&tJc@k54S(`94T@SD55@DC55IMB5k7hmVPg>pY-5(6
+Z*CU@Za@*I[C3NQ\@K2_]=beir4W?L^q[\#_>V4R_o9U8a8O*W<q9>k<q')kTqJ'Nrgj.]SGnuY
+R[O/B"dbO?Q'@L3OpdD6O,o<]NJrgSMi.Lj!f2VereCH,s+L<&rds]lrdt'#s+CB+reCH.EJTI.
+MMd=NN/`jYO-#NfPE_>uQ^F//S"#t?StMdOUSO`aVl?\sXKAY0Yd1UB[^N]V]">Vh^VI\&_o9U8
+aN;WKc-FV]dF-Lne^rF*g=k<;h;7&IiSrnYjlY^gkiq?slg4!*mdKW6naZ2@oCMVRp&Facp\sse
+q>^<gqu6NlrUTr=s.'+>~>
+JcC<$JcFd1o`"gfrVZTjs8)ckrV/SNp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4^q\[[h;7&Ghr+1d#2nCqh;$f?rS%;+rn7,$rn.J,e^W'sdeAanN;^]q
+`pgJ<Nr+n4Nq]p[ZN7>:rid<DXfSS'Wi;nQQ'cc?IY<H4Mi<daS=lUTXL.u;s186@s1/3@rjr*>
+qmlmA]"5HL\cBA?\cTFR])K8?])K>>])B8?])K5C]"G_h]_oD7])T;D\@K2]\bs&3\bNc1]D0#>
+]tXEZs1nTJrP8EKq7usFrke]Qpr*3O!li:$n](ULrlG)\qTAf\rlkDerlbPjbfn>WcMPrdd/VMm
+dK7nIec+/"fDX@qg&Ke&g]-(/h#uTli8<Gii;_d9ir7sBin)W(`l5ss_CE*sVk^#ZSXGk2PE:fa
+MMo'NZ*(40W2Y5j]>_FmTpKhaO,$q@Knb;8LAZc'L)5PuLP:J:L4tA9Ln^T?ViHb!P*2,uS=KSM
+#,.llWiiM,jT"q;r06o?op#H@n]1[Nrhe*Cr4r-EqSN6Js1nBDr4W?/TqS-PTDkDqSXc1=R[TY3
+R$X,(Q'@MsP*1rhrf7)?NW+k;Mi.Lj!f2VereCH,s+L<&rIX]nrIXs"s+LE+re:H/M#N6EMMmFP
+NK0'\OHG]hPEhE!Q^F20S"-%@T:hmPUnjlcW2ZetXf\e2Z*L^C[^WcW]"G\i^VI_'`5Ta:aN;WK
+c-FY^dF-Ooe^rF+g=k?<h;@/KiSrnYjlY^gkiq?tlg4!*mdKW6nc&(\oCV\Sp&F^cp\jmeq>U6g
+qu-HkrUTr=s.01?~>
+JcC<$JcFd1o`"gfrVZTjs8)ckrV/MLp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4^qZG2St;RHqk*q_pRhMYpn%JUq4@SVs-s"V!1Eb%r,2@JqeZ1rnrNg2
+pMTqHs).Rjs,75CMi<ROMMR(Dre;,@KPtsV@qB:dD/XE7G'\RdK8#,?rf6r<s,[5ArfI#<rf@,B
+qN1N8rfI/@qiL<.ooT39qiLf<rK-r>q2kE7r/g9-r0%)DrK7/Eq3(`@s-3)>op5QCrg<YNs-WGH
+rL3_TqjdVUrLO"]pn%JWrh07a"/;K`UA^kdUAUecV#R:hV#@+iVYI%hW;<JSU7e'FQ'IMoNei@<
+I!^-_F`MJ>DJX$"Bo@h&K7\Z&HY6lHO,/I6EF*NsA4/aoA7]@cB4baeAS,NPAe/HcAnP^hB4u$p
+I!g?kDJfAk&or)=G^4U]H[^HqJqAX)eCE+#rn%&##hn%gh;-rFi8FUns5O+?pi$%Kqf2OQoPskN
+s-E2?rhe*Cm?7%&r/_)VTqS-PTDkDqSXc1=R[TY3R$X,(Q'@MsP*1rhrf7)?NW+k;Mi.Lj!f2Ve
+reCH,s+L<&rIX]nrIXs"s+LE+re:H/M#N6EMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:hmPUnjlc
+W2ZetXf\e2Z*L^C[^WcW]"G\i^VI_'`5Ta:aN;WKc-FY^dF-Ooe^rF+g=k?<h;@/KiSrnYjlY^g
+kiq?tlg4!*mdKW6nc&(\oCV\Sp&F^cp\jmeq>U6gqu-HkrUTr=s.01?~>
+JcC<$JcFd1o`"gfrVZTjs8)ckrV/;Fp@e1Po^qbGo'u5<n*]T0m-Es$ki_*jjQ#7Yi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4^q]VA!)`\kr_EVm;,C*g:]4&g:]4,_;?'Jl:B4/f4o%;<5Q3qG:B"5a
+;u/cY62NqA<W5tt;uKVk;%-8`5X%:l5!;.s5XRp<8,l-]92>C\rD!>eqbI/erD*5c!)WVir(d5c
+s%NGe!)EMhs%`Jds%N5_qbH`YrD!Di:/:U\rD)u\!)WYlnkf-Xs%rYir_<Ghpe^obqb[5gq,%&f
+!)WSh!DlYm;Z'Di;Ya2h;#O8j;Yj8`;YF&`<<#tl<r>tp<;T\n<rZ58<`;pn:ea\X7n#j55X%@o
+4$,G]2uY`81_iGG5sRUt4$#Sj6U3ju3]8lP0.n=gr\X[3r\P6G2`E]U2`N]U3]8uX2ENr]5!8d:
+s$?ZL#sgsH6q0[98Ol;M8d.m_F`_bKrc\9brHJTnH@($fI=?ZqrdY'$J:ZuKr]]j:q,@2jr)<Tl
+$EgS9YctC<ZEpmErj<'@\%&u[]=Y_h]`,VC^AktJ^];4L_?.Zp`r3pXaS]*0=8c1i<<]+jTqJ'N
+rgjdoS=?":R[KP1Q^3o%Pa%ApP*(k*Nrb9#repl9MZ/G6LkgcbLAuu-K`$K$K(X]nK)C9$K`?c*
+L&m'creY<GMi<USNfT6_OcklkQ'IZ%R$jD4S=Q7DTV8*UUo(&gWN*#$Xfnt6ZEppH\%&u[]Y(tn
+^r!t,`Q#s>aihlPcHjkbdaZdsf@S^0g>(N?hr*GOioB+]k2tjjl07O"m-O--n*fc9rpg-^o^r.U
+s7QHerV6EgrqcQirVZWmo)=4?Sc=3~>
+JcC<$JcFd1oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_nh9P&n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_:mZ!h;8.g!9!P/"Q81oh;&"arn@D,!nu>\rRqY4g=k65f\"g+eC2k>
+NW4t;NVJJ2`W!mF\GhNdO84e9O86-jZa$dAYct:4XfAG$rhgNiQC2oAI=m92MMmO\R\-:QY-Y[M
+]".gO!4i'>s1/$<!5&'<s1A3?!P,f@\c02>]D]>=]DfD@\HKLV]tM)V]D9#<]DfD?\c95@\bs&3
+\bNc1]D0#>]tXEZs1nTJrP8EKpqZjEs2+fRpr*3O!li:$nAbLK!6G/]q9&][rlkDeqof,dcHc=5
+r6PGkrmCkseCFQLrn%/%p=]H!qV)81h;-rFhr*Dii;_d9iaUs+e^;RZ`5BO3_R?D@US4<MR[9>'
+OcYQ\N4Q<uXfSM%V1*Zm_nN=GH]4DGNDF>%HqA:)Lk\Z"NIZ\>KnY89Knb7W:JOkg>G@gfVN-Xu
+P*2#sR[p"ASt;aTW3!/)XlKHUP5pdEPQ$g@Q1pOCQ0lWiVUGM?_#;+F_Z.IO_"b\A^&Xo,Ta%0^
+T:VXFSGnukR[KP1Q^3r&Q'@JqP*(ifO,o<\repl9MZ/J4L]E5/L&cr,K`$K#K(soqK)C9$K`?c*
+L'EEhLl$tGMuJZBNK0'\OcklkPa.N#R$a>3S"6.BTV8'SUnsrdW2cl!Xfek3Z*UgF[^WfX]=bhl
+^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8LioB([jlYail07L!m-O--rpKmWnc&(\oCV\S
+o`Fj]p\jmeq>U6gqu-HkrUTr=s.97@~>
+JcC<$JcFd1oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_nhK\(n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_47'eSt;RHqOmk^q4I_[pn%JUrLO:cSt;LDS=H(<rgNIrs).^NrbVFs
+nW3[0pMTkF!,hRks,./BMMd7HLk^Y<re(r)G'RS/BPMF'Df^&HI"-a&M2I>mO8b4@O8Y1>Nrb?'
+rf@,BqN1Q9rfI,?qiLN4!0I,>ooT39qiLf<rK-r>q2kE7r/g9-r0%)DrK7/Eq3(`@s-3)>op5QC
+rg<YNrg<AHrL3_TqjdVUo:GrRrh07a"/;K`UA^kdUAUecV#R:gV#@.bVuN^pWE6!kSt277P`h/h
+Lk1&'H?j[TEcGr5Ch[NpMhm(?JUVukBOlaUM19\ZCiX#s4&8UW5ZV6(Ak#7+@:X(aAn>UeB4aV'
+7SHKPI!gBlDJjB3E,g#DGBs16s*auuJc:9%e,Ii*e^i='f@\a/g">!3g]$%/hu;O:iSrnXjSEcq
+E,YPk!c`7$r,M[Spi6=SqNgc=r2.pBm?7('qiCfPrh0OhT:_^HSXf\K':P>VR$X,)Q'IStP*1rh
+OH5H_NW+k;Mi.Ljs+gZ1rIt<+re13%r.=]prIXs"s+LE+re:W4LkpnEMMqIm?]C),O-,TgPE_>t
+Q^F//S"#t?StMdNUSO``Vl6VqXKAY/Yd(OA[C3QT\\#Mf^V@V%_o0O6aN2NIbg"GZdF$Fme^i@)
+g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mf)YUnF?MK!qZ'Vrq-?dp\4X]s7uZjr;6HjrVc<dJcD>A
+J,~>
+JcC<$JcFd1oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_nga2!n*f]3m-Es$l0.9ljl>C\i8EJJgtLK7
+f@JI#da?Cdbfe/Ma2Q!6_>I12;>X5k;>a5k:Jh$fs%i\kr([5fr)!)as%r\joKE+9q`k*Vr(cc]
+r_ik`5<o*3r^$BGq,IPs;c?Xor_i\lr_O4j5Wh.l5!D4t5X[t/7S--D9ht[`rD!>eqbI/erD*&^
+r(d8dr_3>d!)EMh!)EDcs%N5_r(cfYrD*Ag!)E;br_E)]!)WYlnkf-Xs%rYir_<Ghpe^obqG@/g
+pe^ufs%rVh!)`_nqbd;ipe_#fr)*GkqGHl_pJ^rg!*/tss&Jeor)NSmr)NVps&1pS:JO\Y7mod4
+5<_4m4ZbY_2`<QN2)R`f5sRXu4$#Vk5=.Lo3B/lQ/h7he-SR,(1,_0O2*a#W3rV)@2`WiVr]($C
+4$ER9'M:VV5<hD"6pj@284H*?7nQBI9hkM-rc\<crHJNlH[L3hIX_9Gs*t0%J:ZrJr'(-F!'^9E
+s$66Ur)EYor2'ItricF.ZMq01[/RH5\Gj#@]"G\frk/9Es1SlS^;%Fu_84"*_o'Il`rF'ZaSAm0
+=8c1i<</cmTa%0^T:VXFSGnukR[KP1Q^3r&Q'@JqP*(ifO,o<\repl9MZ/J4L]E5/L&cr,K`$K#
+K(soqK)C9$K`?c*L'EEhLl$tGMuJZBNK0'\OcklkPa.N#R$a>3S"6.BTV8'SUnsrdW2cl!Xfek3
+Z*UgF[^WfX]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8LioB([jlYail07L!m-O--
+rpKmWnc&(\oCV\So`Fj]p\jmeq>U6gqu-HkrUTr=s.97@~>
+JcC<$JcFa0o`"gfrquZjs8)ckrqQNf!;?Eb2>$M3o()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@JL%da?Fec-+8NaMu3:_V3`!h;-rehZ2U-i</#qh;/(brRqA.g=b0XgAKV.f[n^)eVoI\NW+k:
+NVJG4`;R[S`rEO7\,_NeNrP1>Nr"h8Zm;raZ*1@6YH=q,XK/A"W2GTAF*;hXK85;BN0'<mTV8<g
+Ye%C@\cB;;])TD=])TD=])K8>])B8?\cTLV]`,PB])T;D]=bhj]_oD;])TDB])B28](NW/](`i3
+]E,^[r4i9IrP/<Hrk\KI!l)OdrPAKM!5nTMs2>&Za2d\h!QW:[ana*XbQ#fcc2>fcblH&dchu,i
+dJhPqe'uqIf)F;#f_4"tgA9S(g]cNjhr!ALr8@S5"5MARb5T@V`5]^%W2?;]TUM:9Q&q)iMiEY*
+Yd(:1Wi;b@SZ]K>XdOHjSni:AAoC1RFG,TE:47P@L5qC`R\$(:;,9qd<)]NbUSarJNKK?dPF7i0
+Sc52bTqeNcY-+kas7hfWP5CICPkgU>PQ8eka8Vq6VUYY@_#;+F_>qFO_"YVA^Ajr.UAgheTV)4T
+"eD0QS!ocEQk#IKQ'IStP*1rhOH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L<&qh"`sqh"`us+LE+reCH.
+!/UW2DMj@2N/`jYO-#KeP*D5sQC!u,R[]h<StD[LU84T^Vl-MoX/rG+Yd(L?['mEQ\[oGd^;%J"
+_Sa@3a2lBFbKS8Wd*^:jeCE.%f\,!5gtgiEi8N\Uj5oFckNM0plKdg'mI'H3nF5u=o(2JFrq6<b
+s7cKes7u]kqtpBjr;H6dJcD>AJ,~>
+JcC<$JcFa0o`"gfrquZjs8)ckrqQNf!;?Eb2tZ_5o()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@JL%da?Fec-+8NaMu3:_OR-eSXuFFTDP;[U&(GWT)P;ZT)>/ZSGo#XD>eAKD>nAGD>BLtNpr,.
+NrEqrD>eALD#nNmrJ_5ENJi[OM2I+FL51M<re(u*G@>#nB5;@&EH?8JI"6d$Ll7=Tq2bZ=OH9=$
+s,m2?qN:c=rf?o;pQ,?9rK$W5!0R,>rf@#>r/pf:q2tT:m#h4/s-*DEs-*;Brfd>Go9K!7rKmMN
+rKmMNopP`HrgWhUrgiVOrh'1_r1X+arM0Cer1j4ds/#XhrM9Lkq5=7k6`HrVT:2+3PE:odLOai#
+HZs[TEH#c2CM.?mMhd"=J:MukB6o2cMg]_WC3*HV4AJj<;-@CB5t,9k@qKOpEHHGLF8eZ/9E7`b
+Hkq3\DJa<1E,p&CGC"O\H@('hJV&H)df._qe,n1Of)F;$fFHTef\5*8h;-rFhr*GOir7s@jDSsU
+DtS&ODfB]9rGqjVs)@gS!13GGp6GWRrMJ*Em#pt&r/grR!2BId!MH(aSct[TS"#k7rg41^QBd`"
+PEM)kOH>NaNfF$s!K2j7M>rA3L])u-L&Zi(KDU8uJbt&sKE$W)L&Qi,LB*/0M/J3/N/WaVO,oBb
+P*2&pQ'Rc(R@9V8SXuIHTq\?YVPg>kWiN5'Y->1:Za@0L\@K2`]Y;.r_8=+/`Q-'Ab0/#ScHste
+e'uq!f@\d1gYCWAhr*JQj5]7`k3(sml0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0iqYU0hr;?Nb
+rdk*@s*t~>
+JcC<$JcFa0o`"gfrquZjs8)ckrqQNf!;?Eb0D+l-o()>?n*f]3m-O''l0.<mjlGI]iS`VLh:pZ:
+f@JL%da?Fec-+8NaMu3:_Y[72;>jAm;>F&f;#sKhqb@8i:esnap/1fc!BiR=4oRSB4oISE5Q4IV
+:B+;c<V]Vl5Q3nJ62<eE<<6'!r)3SnqG@l%4[;.m5<h=s5<hP&7Rfp?8kenQrD3Dfp.tQ\!)<Gd
+r_3Afr_NDcs%N5_qbH`YrD)u\s%`/]r_`5_q+q#erD3Df!)NAdrD38ds&&Mes&&emr(dDk;,U<h
+;>jDf;#jGl;$'Wm;>sJk;=d][;u9Mo<W,ns<VKPk<<6'!rD`\pr`9%t+&Ym1:.\)K770C+4Zttk
+4#o8[2)[6I1.+Ar5X%@m3rV>g5X%4f2`3BE-Q4E`.4Qu.3A<<Q1cIEV4[;8!6UWpp3'98crC[;c
+5s[_!62j7O71VmX84Z6C9M.uPFEM_JF`dV*s*"Bc%!Zu@H$XgbI!pHmIt.BH!.j>ss#pTN5!D1p
+55d\G<:Nob<;r`mVZ3k2Z*L[AZa@-K[^`iX\[oDcrOW'Br4NEN^V@S#_8=(,`;[aU`rF*Q<qf\p
+<q02iUB%%fT`LgYrgj:aS=?":RJrQ`Q^3o%P`q8nOcYZcO,f5!Mueiore^Z2!/LN-s+UK+r.Flu
+r.4`sr.G$&s+UH,s+^T1reYNMMi<USNfT6_OckllQ'IZ%R$jD4S=Q7DTV8*UUo(&fWN*##Xfen5
+ZEppH[^`lZ]Y(tn^qmn*`Pom=ai_fNcHaeadaQ^rf%8R-g=tE=hV[8MioB(\k2tjjl07L!m-O--
+n*fc8nac8BoCW%Ts7ZKerV6Egs8)Wirqu]moDX=@T)X<~>
+JcC<$JcFa0oD\^erqu]ks8)ckrV-Hgp@eLY2"^D1o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4g"P3:hVS7h!9!M."lS7ngtUT^gAfq,g&9Y'f`TmYe^XGSp5Sj+s2=oU
+rPnfFm(!)+rf-o;#EOn*O,oBaO8b7@ZiIE2YQ:o1ri?."WrAq1VN%!aG'\UiL5ChIOd2<+Tr5#r
+q76R:rji0C]"7mQrON'B]"7mQ!P5oA])K8>])B8?\cTLV]`,PB\d#^V]=bhj]_oD;])TD@])T>?
+\cBA?](W]0](`i3]E,^[r4i9IrP/<Hrk\KI!5JNKrk\TNs24ZNs2G#Xrl=TL!QW:\anX$WbQ#fc
+c25]dc-FW3ci)5jdJhPse'uq!f)F;$f_!krgA9P,gtgiEhtc2>f$Vjd`5]^4`5SsYV4sQQR@0D,
+NKB*XNJP*NYHP"-Whk/hXi%lSS9]pWD/rHCE(4SdKo8MsN.6J=O-?!"T:&GM:K1:lU7nE\Vi?[t
+OckooR@Tq=T:VXLV5L>sY,nb_s7_]ZP*;)mqih&Eqj%,E!1!PJrQ+EIr2'@hec5E[r5&9Is2"`N
+p:pR?s.gg5U8"?TTV%jJSt2C@S!ob5R$a5+Q'IStP*1riOH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L9%
+nq-aks+CB+rIt?.M#N6LMMmFPNK0'\OHG]hPE_>uQ^F//S"#q>StMdNUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGe^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3
+nF?&>o(2JFrq6<b!;HHerqZTjqtpBjr;H6dJcDABJ,~>
+JcC<$JcFa0oD\^erqu]ks8)ckrV-Hgp@eLY2Y?V3o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4S=H.@St;RHqOmb[r1O(^q4@SVrLWtYs.'+YrbVOMrGMIKr+u=Kpm1l=
+n;mI,!,h^Os).^N"`A6sNK&nrM?\opLkgb>LAli>K5u3E@qB7eD/O?6G'SLcJV8c8q2bT;rf@2D
+OHBI(rK-u?s-!ADrfI,?qiLN4s,d2?pQ,H=OHKC$rf@#>r/pf:q2tQ9m?.=0s-*DEs-*;Brfd>G
+o9K!7rKmMNrKmMNo9oTHrgWeTs.0%Y!2'%Xrh'4`qk=%as.][lUS=L\U]%"gV>I(fV#[CgVa[PX
+St2=9Q'@AmNJ;t4H[0dXF)c)7CMRQrB8VM!K7SJuH=pc>Nei.-A8,p`<BNBD4]5HnBgG1(@:O"f
+E-$,GF@Jbir_3?>%=N\SDJa90E,ouAG^+H3H3/MEIf=m$JqMP#df.\reCFQLs4@;'rn.h9gYCWA
+hV[5Ki8N\Tj5]4uDtJ#KDZOfsqf;LPrKm5Dq3ClSrMJ-Fs,m#<!0R/ArK7,AooUM]Unjc[U7n9R
+T:_^HSXc1=R[KS2R$X,(Q'@JqP*(lgO,o<\repl9MZ/J4L]E5/LAuu-K_pDmK):3#KE-`)L&m'c
+reYQNMi<USNfT6_OcklkPa.Q$R$a>3S"-(ATV8'SUnsrdW2cl!Xfek3Z*UdE[^WcW]"G_j^VI_'
+`5Ta:aN;WKc-FY^dF-Ooe^rF+g=k?<h;7)JiSrnYjlY^gkiq?slg4!*mdKW6naZ2@oCMVRp&F^c
+p\jmdq>^<gqu6NkrU^#>s.B=A~>
+JcC<$JcFa0oD\^erqu]ks8)ckrV-Hgp@eLY0(ec+o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,L`l5j4r)3Gir_`_nqG@,f!DlSi:'+3f;#X8b;?'J]4o@GB4o[_F:]!oc<9dHb
+5<_:15P@AB<W5ts;ZK_l;%?Dc5s.7o5!D4t5XIh,8,c'\8l,4WrD3GgoM>B[!)<Gdr_3Ji:JXa_
+:&do_:&7WW:]4&L:BF?i;=[QZ:]F8k:]*rf:\[cb:[V'Y;#jGk:BF?i;>sJk;>a>b;$'Wm;>sJk
+;=d][;uBVo<W5tt<VTVk<<6'!rD`\p(04C5;,9q^8P;QB6:4"'4Ztkg3B&iSr\Z;`6:*t'5<_+h
+5X.G"4ZYM\2D[$6)C[0d.kih@0/Z!O2E<l_5!VM)2E<c[4$ER9&kY_]5X.Fu6pX.-6q'X97n?-B
+r_!8d9`B,6Fo?F^FoHRaGQ)glH$XgbI=6QnrdP'$It3'#jur`.r]g?FrD`;cr`&flrMBY#Z*OA8
+&%/jT\%&rY]">Pd]Xteg]`#PD^AkqN^qmn)_u7LV`Q#p<a7E@/=8l8#<<-"j<WAj<US=KVTqJ$M
+St;LCS"#k7R@'A.QBd`"PEM)kOcYWbNfF$s!K2j7M>rA3L])u-L&Zi'KCXWkKE$T)L&H`,LPYqd
+Di0I3N/`jYO-#KeP*;,qQC!u+R[]e:St;UKTqeE[VPgAmWiW>*YHY:<ZaI6N\@K2`]tV7s_SX71
+`lH0BbKJ/Ucd:(feC<%#f@em3gtgfCi8ESRj5f=ak3(sml0@U$m-X60n*ol;o()DDo`"O`p&Ojc
+q#:*hqYU0hr;?Nbrdk*As*t~>
+JcC<$JcF^/o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nhBV'n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma2Q!Kf\,!6h;7#fhZ2U-i</#qh;&"arn@D,!nu>\rS%5'!SH!%N;nn;Mu\k:
+N:r8.N;pip`VdaK\+@-.\bqHdNW>.9O9VqoZ*(41X8](7W2?GgOI^H:H@:?uMN!OXPa@u7Vld25
+pppO=]"7mQrjr-A!4r-@!kQ"Urjr-?rjr!=s1/3Brk/3Arji*Ark/<Er4Dd9rk&!;s1A3?pUU(1
+pUg45!PQ5F^])%J^\ttI_>:qK^VIYa_>_=O_th7N`W*pZa2l<l`rF*ZanNsVbPo`cc25]dc-FW3
+chu,idJhPse'uq!f)=2#f_!krgA9S(h#H72hu2JCgXFKj`l>s6_8O!eV50iVSXGn4Q&UlbNJrb*
+ZELF5X/i7NH_S-M\YGI4Q&gPu?tF^XEdWd::/64gLl@LdR\-!D:JOke<M?1bVi6UsOckoqR@^">
+T:VXJUSb&nY-+n0h>d24s-!/@s-3GHr06utn]1X)rMBIif)PQ]pqcsHs2"`N!5JKHqnN*DrhKRi
+UAghiTV%gISXf\K&t55UR$X,(Q'@JqP*(lgO,o<\repl9MZ/J4L]E5/LAuu-K_pDnK):3#K`?c*
+LB!$GLl$tGMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:hmPUSO`aVl?\rXKAY0Yd1UB[C3QT\\#Mf
+^V@V%_o0O6aN2NIbg"GZdF$FmeCN7'g"P39h;-uHi8N_VjQ5OdkNV6rlg4!*mdBQ4nF?MK!qZ'V
+rq-?dp\4X]s7uZjr;6HjrVc<dJcDDCJ,~>
+JcC<$JcF^/o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_ngO%tn*f]3m-O$%l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma2Q!qSH#/[T)YG[T_bA\TE(V[T)P;ZT)G2\S=B=jr,)@Lr,)=Ip6P--p5]/i
+rbVCI!,hdSre^f7Lkg`aKboDpK7\/j?t3_YBl%[,EclVSIt33,Mi[Xp!g/S+rfR2Ar/guBrfR/@
+s,[&=ooK*6s,Zl8rfR&=rf@#>r/pf:q2tK7mudO2rfd>Es-*8As-*GHo9K!7rKmMNr0RGNopGiJ
+RJrZSS,8]USa`6MTDtS]U&Uk\U]%"fV>R.fV#[CjVcT[eSXYt4PEV,iMM-J,H[0gXEcGu3CMIKp
+ArDFuKS"`(Htm8AMg^>*EaNa!?pI7V>X2=sB0\pT?t*ecE-$,GF@Sbh9hS3.I!pH\D/O92EccGK
+G^'.5"ab]IJUrFPKDs<sdfe1Ne^i=NfDjM&g&Ke5gtgiDhr!ANio9stqJYnC!-.gTs)Ih#pQk]A
+rhTLhrMJ0Gr/pi=r/puArK7#>pQ>HN!McCgT`q*]St;LCrgOOhR@'A.QBd`"PEM)kOcYWbNfF$s
+!K2j7M>rA3L])u-L&Zi'KCa]lKE$W)L&Qi,LM_j(M2I1KN/WaVO,oBbP*2#oQ'Rc(R@9V8SXuIH
+Tq\<XV5L5jWiE/&Y->.9Za@-K\%0&]]Y2(p_8=+.`Q$!?b0/#RcHjnce'umuf@S^0gYCW@hr*GO
+j5]4^k2tjkl0@U$m-X6/n*fc9rpg-^o^r.U!quB_rV6EgrqcQirVZWmo)=4?T`9N~>
+JcC<$JcF^/o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nga2!n*f]3m-O$%l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma2Pto;>a>i;?'Mo;>F&f;#sKhr([;h:f.-e!)WMhs%rSVn3-Y2rD38bj&Q"@
+!'g0Br`&nrr_i_mr_O1j69ICq5!;+r5X@_*7nH3B9DM?]:]F2^:]*rh9h\7[:&Ica:&[i_:&%K_
+:B45e:]4&L:[_-U:]=/j:]*rf:\R]b:[V'Y;#jGk:BXKk;,U<h;>jDh;#jMm;>sGn;>sJl;=[WZ
+;uBVo<W?%s<V]\q<<-"p<W,ns<<?,u;Z9Gt9M%cD6UF+)55mVN3]B#T2)I0I0ge;,5t+""3^>no
+5s7=j2E!EH/K>r]0J+k33%m*F1H.?V4[;5"76*=e4?Yc!9M7r@5X.G!6pX1.6q'X98Ou?D9M8#Q
+9hTPKqfDj]FT-F_G5c^bGlN'rH[L6iIXZcrJ:IQKj#mK.5<_:+<:Wrf<;r]lV>[7pZ*L^C['fnB
+!4`$>rk&3A"hVFZ]Y2#X^AkqL^r!te_uI[T`<+'"a7*./=8u>#<W,nk<W8cpUS@a]"e_KZSt2DN
+RhD0XR$a5+Q'IStP*1riOH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L9%o7Hjls+LE+reCH.D2=%*MMd=N
+N/`jYO-#KeP*;/rQC!u,R[]h<StD[LU8+N\Vl-MoWiW>*YctF>['d?O\[f>b]t_=u_Sa=2`lQ6D
+bKS5VcdC.heC<($f@em4gtgfDi8ESSj5f=ak3)!nlKdg'mI'E2n*olHncJFTo`"Lbp@n=[q#C0h
+qY^6hr;HTbrdk*Bs*t~>
+JcC<$JcF^/oD\^erqu]ks8)ckrV/GJp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`l6N]g"Y9;hqn@i!9!P/s53q7h>Z1-g&Tn(gAT\*Mi@Rnrf$f8!06Z1s,?rq
+rl+cSn[J"t!4i&f"ceY(NfT8"OT1C@XrOODWiE"pVkp;RRr`atI"I-0NK96fQ_'hHX0K/5\cBAA
+])TAB])K>@])TAB])'&<])T>?])0)@]">TR]_oAC]">WS]`>_C]D9&:]DK2<]DT8<\c98@\bNc1
+]D0#>]tXEZrkSNJrP8EKqS3*GrkSQMrkeZPq8<<Q`r3sJ`W=-$prWZ[b0'_,rlkDeqof,dcHc=5
+rQtPkrmCkse^aTL!8-nr!8@5&CY[b&hr!AKda$(Y`5BO1_8<^ZVPKrXS!fV.PE1`^M2R1tY-+n.
+XKALRIX&9=\>l*GLl?:o:e,IuCjUqo:/6h#KT;+\R\-*H:/Fkg<MH7cVMpOqOHYs!S",t?St;[O
+V5^T"Y-"k1YMB0@PPpdHPk<&ga8Db3V>d=lVqD%E_">JC_#M1H^AbnG^Ak&0U`cG,U7n9RT:VXF
+S=H(<R[KP1Q^3o%P`q8nOcb`dO,f5!Mueiore^Z2!/LN-s+UK+qh+Nmqh+p%s+UH,s+^T1reY3D
+Mi<USNK0']OcklkPa.N#R$a;2S"-(AT:qsQUnjlcW2ZetXKAY0Z*L^C[^N]V]">Vg^VI\&_o9U8
+aN;TJbg+M\dF$Fme^i@)g"P39h;7&IiSrnXjQ5Oekiq?slg4!*mf)YUnF?MK!V>s_p&Facp\jme
+q>^<gqu6NkrU^#>s.KCB~>
+JcC<$JcF^/oD\^erqu]ks8)ckrV/5Dp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`l4I<rga1`T:V[IqOmVWs.K1Zrgj"ZrLNt)rGD@HqJH4Lr,)IMop5*.p5]$0
+!,_^OqJH7Mrbqdl*/B9&KnP)3JqS5k?t*VWBkqU*F*2bUJ:N<-MN7[t!0R8Bs,d;CrfR5BqiLlA
+rfR/@s,[&=p5f-5!0?r;!g/S+rfR&=s,[,?qiUW7qiUT6nr`j5rfd>Es-*8As-*GHns/m6rKmMN
+rKmMNp6buLR@4&Cs-rnUs./YNrgs1`qOmn`pS7Y^rh]LfrhW2`Vl-DbSXc(5P`q2iNei79H[C!\
+F)c)7C2%BoAS-dQKS"c)Isc!DA;6+uI<B(8C04M!4]OdH>\%M;7VlLDC2S'5G]u\K7fH-^I/eX%
+D/O60EcQ;EH$K=7$[dAPJ:W<(K7ei1dJ_Mke,Rttf)F;$f`0Y)gAp%.h>c@:i8NYSioB(nDt.fD
+EqG^lQN!0IV#@.hV?!OHs7qfTP4k%6OSY+>V>m>6US=KVTqJ$LSt2CAS"#k7R$a5+Q'IStP*1ri
+OH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L9%oRcsms+LE+reCH.!/UW2AVuD)N/`gWO-#KeP*;,qQ'[l*
+R@B\9St;RJTq\?YVPgAlWiN5'Y->1:Za@0L\@K2_]Y2(q_8=+/`Q-'Ab0/#ScHstde'uq!f@\d1
+gYCWAhr*JQj5]4^k3(sml0@U$m-X6?mfDqJrpg*]o`"O`pAamcq#C0iqYU0hr;?Nbrdk*Bs*t~>
+JcC<$JcF^/oD\^erqu]ks8)ckrV/5Dp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH`l1ePr)3Gir_`_nqG@,f!)WPf!DcPk:B45f;>EBO54^r;4T/(P:&n)M<W,nq
+4odhB5lX(J<;oet;Gg<j:_Q#Z4$>bk4[21s5se"18OQ-C:/Lpbr(m>fo2#<[!_l?^r_<>dqb@&`
+qG$c\oM>E\jA55@q+pudqb@,epJCfamnj!\!)WYjs%r_m!)iVir_iSi!)ibmqGR8hnP]0]qc*Pp
+s&Aqsq,[Mq!*&epr_sk;;c-@d:/+DQ84,d25sIIp4?GS`2`*BK1bpdPr]re45!1kl5X.S$4ZYJ[
+2)?m6)^d-g.kih@2)RWT2)m]`5XIjs3B9/a4\JIA8O#L*5"%b)6UXC77S--A8kVcKrCd5dErL.W
+F9?Z-F`m\,rceBes*>*#I!g?kIXcirIt*!!k<8i/rB9dPo2GR_rMBLj"fJZ4['mFB[fEu<\cBA@
+])K;C]Y2#X^&l'b_>V7N_uI[T`W*sC<rZ1r<;KVpV>m>6US=KVTqJ$LSt2CAS"#k7R$a5+Q'ISt
+P*1riOH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L9%oRcsms+LE+reCH.!/UW2AVuD)N/`gWO-#KeP*;,q
+Q'[l*R@B\9St;RJTq\?YVPgAlWiN5'Y->1:Za@0L\@K2_]Y2(q_8=+/`Q-'Ab0/#ScHstde'uq!
+f@\d1gYCWAhr*JQj5]4^k3(sml0@U$m-X6?mfDqJrpg*]o`"O`pAamcq#C0iqYU0hr;?Nbrdk*B
+s*t~>
+JcC<$JcF[.o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nh0J%n*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@AC"dEp4bbfe,L`l6K\f\5*9hYc72i:Z%4i8<DIgtVe]s4dJ*rRq1.!fDnpqi1W7rJg`8pl59k
+rPeZR!4Va3q7#b$!0-u<!0@,>s,[/@rf82&Wi;qpWhu_mOd^?7H$t7!Ll@FYQ'\)9V5pi.]">Pb
+q7H[<qRZa?rk&3As1/-?q7HR;#.qO[]=PVerk/<Eqn)j=!kZ%Tqn)d;r4Dm<rOM[6!kZ%TpUg45
+!PQ5F^])%I^])%J_>:qI^])%K_>_=N_th4O`Q%hro#:aOaN=;$s2k;`rQG5brltAb!6tMgqp58g
+rmC_n!n>cNr7Cu$o[s5uptH&/h;7#@da#u6`!O;o`PS[RVPKoWrg=%VOc>?XMi3J!riJ,\WN;nF
+H)%RJ]r[fjFH_Q6<FKHd8TK6:8l&90JVfALR[]mE:Jaec;.H;rVl#H6OHGftS=H)JSdM6hVlQu'
+Xfeh1YM0$LP5pd9P6$o5nAt=DqP=+erh][nf`1Z\pqcpEs1e3?!N)^mU]mNfTqS-OrgjmrS=?":
+R@'A.QBd`"PEM)kOH>NaNfF$s!K2j7M>rA3L])u-L&Zi&KD'ooKDpQ(L&QgLLPUbCM2I1KN/WaV
+O,oBbP*2#oQ'Rc(R@9V7SXuFGTq\<XV5C/hWiE/&Y-5(7Za7'J\%&u[]Y(tn^r!t,`Q#s>aihlP
+cHjkbdaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHerV6Bfs8)Wi
+rqu`no)=4?U&TW~>
+JcC<$JcF[.o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nh0J%n*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@AC"dEp4bbfe,L`l4F;S=Q4BT)G;]TE(\bT_P5[TE(V\T)P;\T)G5[C]J>OD#J5HD#%rIDZ4MF
+Q2m$=O7\J+NW!\oDZ"AODZ+MRLAuoHK8"o1K62BH@:WtbCMn*4Fa8@aJV/]6NKB9aOSP"=OSb.?
+P5^UBOT1C=OS4b5O8t@>O9Lc.OHGZerfR#<!0@)?qiUQ5rK6f8nr`j5rfd;D!0d5As-*GH!gT"7
+op,39rKmMNrKmMNpR2#J!1EhTrgWeT!1itX!2'%Xrh'"[s.]Og!2TLer1s:fr1s:f(o*^mR?j,%
+P)k]bKn+W"H$=FQE,TN*CMNi\7Yc\MJUi/sGA1W;K7\o-G&Uf,B43tq9O'e_?YD_p7:0P<CiFH<
+GXb+k7SQHRI"$QqD/O93EclJKG^Fd`I=H]sJV&N,re1<us3^hormLnte,Intf)F;$f`0V7g=tB;
+h;7#Gi8NYSioB(kDt.cJEH7B8QhQdGQ27<UV>d=lVqD%COT:R?OoCFBOnOn8OTD>UrhK^mU7n9R
+TDkDtSXc1=R[KP1Q^3o%P`q8nOcYZcO,f5!Mueiore^Z2!/LN-s+UK+qLeKnqh+m$s+UH,Fbbd/
+M2@+IMi<USNfT6_OcklkQ'IZ%R$jD4S"6.BTV8*TUnsrdW2cl!Xfek3Z*UdE[^WcW]"G\i^VI_'
+`5Ta:aN;WKc-FY^dF-Lne^rF*g=k<;h;7)JiSrnYjlY^gkiq?slg4!*mdKW6naZ2@oCMVRp&F^c
+p\jmdq>^<gqu6NlrUTr=s.TIC~>
+JcC<$JcF[.o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_ngEtsn*f]3m-Es$l0.9ljl>C[i8<DIgtLK7
+f@AC"dEp4bbfe,L`l7pSr)3Gis&/hnr)!>hs%i\krD!Di:f.-e!)WSjr]]s;rBBm;qG7)cr_EMo
+pf-]^pJh/Ws#pEIq*=pD$rg/';Gg=h:f'>A4$<L+%6m*B6pa=484H3D92A=\:B4/\:]4#i9h\7[
+:&Rie9a+3b9MJ2Sq+^Z[o2#?\jA55@q+puds%`Sgs%WPipJCfamnj!\s%r_ks%rDdrDNAepeq,h
+n5B0_s&8tsr)ESo!*&nsq,RPs<)iZns&0A(:JO\[8Oc3;6UF%&4T7E@3]AuR2)[3E1dXMp5X%:k
+2aBVm5<_4k3ArcQ0J+7g-86u&1H-sD2)@3Q4?Ynq6T6tb3'05d91qfH5sIM"6UF+-7Ros?84Q6D
+8PDfP9MJ6$rc8!ZrcA0`FSp:]G5c^cGRf"FH@($fI=?WpIXcitJE/ln54DPF;u3<hV>d>$VmEb<
+[^NZT\@K2^\[hXL$bO'a]tM.p^VIY$_>_:O_u@US`<!utr)WhtoN(lipJh)k!N)^mU]mNfTqS-O
+rgjmrS=?":R@'A.QBd`"PEM)kOH>NaNfF$s!K2j7M>rA3L])u-L&Zi&KD'ooKDpQ(L&QgLLPUbC
+M2I1KN/WaVO,oBbP*2#oQ'Rc(R@9V7SXuFGTq\<XV5C/hWiE/&Y-5(7Za7'J\%&u[]Y(tn^r!t,
+`Q#s>aihlPcHjkbdaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHe
+rV6Bfs8)Wirqu`no)=4?U&TW~>
+JcC<$JcF[.o`"gfrVZTjs8)ckrqQNf!;?Eb1\C;1o()>?n*f]3m-O'&l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma3rMhf\5*8h>Q72i:c+7i8<GKh;$c>rn@D,r7_2(pl#94N/[Xn!0$f7qi:Z8
+rP\]Sq8WHDn@%hqr4)`d!0@&<!frG)rJqnqW2HSj6B@P'GBeLbL5LhLP*VK,T;8KiZFILA])]G<
+])]MC]DK27]DT;C]=bfU])]MC]`>_A]DoJB])]G=]D]><]DK2>\bE]-]D0#>]tXEZrkSKIrP8HL
+r4iBM^q]las2"]OrknTNs2G#XrQ"iU!6=lS!lrC(qTAi[s2t>arlkAdrQP;ds3CJerm:YlrmLhr
+!7gtu!8-qss4[5%A(/ZEaMc$7^r4*tVkp2_T:D=9Q'@;hO,JmP[BHd:XK&D%J:)U@_m-G=Q$J%D
+K8s&77X.RCI#!JQ:6'pWNK0BoT:SkS:fLCoO/&SLN/ip\PF7i/S"H:EUSXlhY-+n0Y5YWXs8S>W
+PQ-g;PO-Bca8_q3V#I4iVZ3RJs8Kk/_"khH_#D+@^&k40V>d84US=HUTV.pKSt2C@S!ob4R$X,(
+Q'@JqP*(ifO,o<\repl9MZ/G6LkgcbLAlo,K_g>qK)1-"K`?c*LB!#/M#N53MMqImAW;_2O-#Nf
+PE_>tQC+&-R[]h<StD[LU8+N\Vl-MoX/rG+YctF>['d?O\[f>b]tV7s_Sa=2`lQ6DbKS5Vcd:(f
+eC<($f@em3gtgfDi8ESSj5f=ak3(smlKdg'mHs?1n*olHncJFTo`"Lbp@n=[q#C0hqY^6hr;HTb
+rdk*Ds*t~>
+JcC<$JcF[.o`"gfrVZTjs8)ckrqQNf!;?Eb2"^D2o()>?n*f]3m-O'&l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma.&QgSXuCDT:l1Us.K@bs.K7_r1F%^qO[\Ws.97]q/#kDqJ>tErbh\"p6PH6
+ooAI"rb_UOs(qaRqemF+KS+o.6?7?r@U`k^C2Im2Fa/7^J:iQ2MN<kpOT:L<Onb"<OoCI9O7n\8
+OT:L>On=b5On=b7OnOn-Oo1CAPPpXEPPLCAPP^U;Q1^IAQi<BNQi<BHRJrQRRJrZSS,8]USbeoX
+TD5#WTD>2\UA1M\V#I4eUgTgbS<oP*P)t`aLk:/)HZsUTDfBW1Bk_6nAVl(nJq/<!Htd2&J<#23
+G]I8-CL_$E5Wi18<*a'I7Rh6'@r#q%F*Vt"7Rg'G:2tZ1IVit?DfKlAGBnL]H@:9lJUrFPKDpQ'
+d/MGldf7eqeGn(uf)F;$f`'V)g]lTkhV[8MiVqg<j)Au4DuXeVDt@rFQL^C;QN*`WV#I4iVZ3RJ
+s6Pm=OT(@DVl$<iU`ZA+TqS-PT:VXFS=?":R@'A.QBd`"PEM)kOH>NaNfF$s!K2j7M#rKgL]3&-
+L&Zi&KD0uoKE$W)L&Qi,LB*/0M#iKlretEJNfT6_P*2#nQ'IZ&R$jD4S=Q7DTV8*TUnsueWN*##
+Xfen4ZEppG[^WfX]=bhk^VI_(`5Ta;aND]Mc-FY^dF-Oof%8O,g=k?<h;@/KiT&tZjlY^gkiqBu
+m-O-,mdKW6nc&(\oCV\So`Fj]p\jmeq>U6gqu-HkrUTr=s.]OD~>
+JcC<$JcF[.o`"gfrVZTjs8)ckrqQNf!;?Eb/+iH)o()>?n*f]3m-O'&l0.<mjlGI]i8EJJgtUQ8
+f@JI$da?Cdbfe/Ma8Jm5;Z'Dk;Z0Ji;#aAn:f%$b!`)Whr_EMjr_`DRlok>3!)NShr_EMhqbI8i
+<E7aPq`jsCrBL<[*)TU269[\#4?Pej5!_A!6:4767nH<H9MeM\:/:@UrD!Af9`@cb:B+&g9E\'`
+9h\7V:&.QT:B4/M:[_-U:]=/j:]=)g:B+,d:]OAj:[V'Z;?'Jm:]F5l;,[-cr_iJfr_ibprDEVm
+rDEVooMYTcs&9/#<)cjt<;'>i<WZ9%<W5tr<F]'.;,C(b9M.fD6pa7.5!D+i3]f>\2)I0K1,D6_
+6:!du4?,Sk5!M:q4?5;Z1bp[:*??LZ/LrM53]8i\2)[HX5X7Y'2E<cZ4Zu>08kD955=%\)6UX=5
+7nH6A8P2QJ9M>=Ys)J!Xs)\0]s)eBbF`mV*rce?es*FrtI=6QnIt%BH!e<Hupc\X@nNH8=pJ_*e
+qkX4frhf^n%CEOO\$rlX\[o>]\[o?N\dZ3`]Y2%n^V@S"_84"e_u7LR`V`d6<W?,"<Vohr<V9>j
+<<B(qV>d84US=HUTV.pKSt2C@S!ob4R$X,(Q'@JqP*(ifO,o<\repl9MZ/G6LkgcbLAlo,K_g>q
+K)1-"K`?c*LB!#/M#N53MMqImAW;_2O-#NfPE_>tQC+&-R[]h<StD[LU8+N\Vl-MoX/rG+YctF>
+['d?O\[f>b]tV7s_Sa=2`lQ6DbKS5Vcd:(feC<($f@em3gtgfDi8ESSj5f=ak3(smlKdg'mHs?1
+n*olHncJFTo`"Lbp@n=[q#C0hqY^6hr;HTbrdk*Ds*t~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrV-Hgp@eLY1\C;0o'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oHdaZk#g"P3:hYl@3i:l41i!&#phVHuArn@D,r7V/(rJgK/nW!O.!5nfSrl+ZP
+r3u1(n[JA)rK$o;qMuSWW'Wh5R@/2BI=?s-NK90dQ^OJ>VlR,3]=Y`S])]G<]DoPD]DK2>])]M@
+]D9,=]*,d[]tD#S]DoJ9]DfD;]CEK)]DfJA^&P_G]tXEZrkSKIrP8HLs1nTL!PlJL_#D1L_Z.ON
+`;[aU`rF'[aN*nls2P/]ans6ZaoBK`bP]Tac2Prdc2Z)cci)2jdJhSodfS%Mf)4/"f_!hsgA9Q7
+eBZ7X`PKI/^;IadW268aT9tq2Q'72cNf&XIZELC4X/E"pIsIj'W4f*rHZ5^9EaVd9DL"ioI#!SO
+:JZIkMN3piSXrSP:/=hf;PBq`VMpRrOd2E+SXc:CTqnNaY-4q/Y5YWVs8A2HPN^*b`rMk5U\gke
+V>d@kVq_7L_>:tC_>_7M^[o/^Vl$;eUnjc[TqS-PT:VXFS=?":R@'A.QBd`"PEM)kOT(:FNfB!V
+Mi3JlM#rKgL]3&.L&Qc%KD:&pKE$W)L&HaALPUbCM2I1KN/WaVO,oBbP*2#nQ'Rc(R$sM6S=Z=E
+TqS3VUo(&gWN*##Xfen4ZEppH[^`lZ]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8L
+ioB([jlYail07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jmeq>^<gqu-HkrUTr=s.fUE~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrV-Hgp@eLY0D+l,o'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oHR[]e;Sc52bT:hjLT:hkOU&:S`TDP5ZSc>8]Sb$[pD>A#ED#fh"Q2d-MQ2$[@
+O7nUsNVRJfD]46p6?7?r@:<\\C2Is3Fa&1\J:`H0MN*a\P4t(=P5^U:OT1@DNfT6]qiCH4p6#!/
+rfQ<(qN:c?r/po?rfd;D!0d8B!0d5Cop,39rKmMNrKmPOpR1uIs-`nUrgWeTs./_Prh'4`q4Re_
+rhBIhrM04brMBLhA>,Q`R$X##OH5E[K7JDuH['XQDf9H,B52*lAVl+nJU`)rH"^`;N.$M/F(AO!
+Am._h4]5KL<F03L5t4:O@qfe!FE`!u7n#pB91XGYIXZ-ODK0Z=Fa/.WH@(*jJ:W9'K7j/Vrm1Sj
+s3^hormUnsrmh#!s4@;'!nl;]rnRM0s5<q9s5F%=rG_OMq/H@Pr,D\&qNgZ<qj%5VrhK@ds/#^l
+rhnNNlB1b$rK/5#VPU,bUnaZXTqJ'NSt;LCS"#k7R$a5+Q'IStP*1rhrf78DNJrgSMi.Lj!f2Ve
+reCH,re1-#pk&?ps+LE+rJ#*CLkpnEMMd=NN/`jYO-#KeP*;,qQC!u+R[]e:St;RJTq\?YVPgAl
+WiN5'Y->.9Za@0L\@K2_]Y2(p_8=+.`Q$!?b0/#RcHjnce'uq!f@\d1gYCWAhr*GPj5]4^k3(sm
+l0@U$m-X6?mfDqJrpg-^o^r.U!quB_rV6Egs8)WirVZWmo)=4?U]5i~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrV-Hgp@eLY/+iH(o'u5<n*]T0m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bK@oH;Z0Jj;Z'Di;?0Sj;#aAn:f%$bs%r\j!`2`kn36;(rD*,`r_WMmfi7l6q`t'D
+),`df5!_@p4[2(n5!VA$6q0R97S?BJ:JO[U:]=,h9`Rld:&[of:&.KY:&.Q`:B4/A:\%?^;#jGg
+:]=/j:]=)g:B+,g:]OAl;#F,W;#X;l;#X5j;"mfi;Gg:h;YErf;Z9Vn;?0Sm;?0Ye;Z9Vl<<#qu
+<;'>i<WZ9%<W5tt<<uN$;,9t]9M.eR6iTLQ56!YM3BB)W2)I0J1,Ahq-UBsY3B9;g5X7Fo3]AuU
+2(pL')^d$g/M&S43AEBJ1c@<U4[;>#2?#QF3^#Gq9M%c?5X.V'6pa<@7gMXW8kVcM9he=\:&f23
+EW1"XF8g:]FoQUbFoHR_GQ)meHiAHlIfFltJGh\,4oIS<4mZ/B;ZNQkU\gkeV>d@kVZ=.([fO"L
+r4)d;rji0C]Y4<Ys1\TM_>_:W_ns=._o'F2`V`d0<W6%t<VBDj<?S3:V59u`US=HUTV.pKSt2C@
+S!ob4R$X,(Q'@JqP*(k*Ns:W(N/W[QMZ/G6LkgcbLAuu,K_g>rK)1-"K`?c)L22R#Ll$tGMMmFP
+NK0'\OHG]hPE_>uQ^F//S"#q>StD^MU84T^Vl6SpX/rG+YctF>['mEQ\[oDc]t_=u_Sa=2`lQ6D
+bKS5VcdC.heCE.%f\,!5gtgiEi8EVTj5f=akNM0plKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0i
+qYU0gr;HTbrdk*Es*t~>
+JcC<$JcFX-o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_nhBV'n*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,LdF6\!g"Y9:h;@,gi:c+1i8=Oj!SuQ0gA]h-g=uUdrf$i9oo/F#!Q)bR`;[aU
+`rF$T`r!77[d^d+\GWf<[ZHQ2rf6u=!g#]6rB_6]R?r&?I=$['NK'!_Q^FA;U8b<%\FmK5]`5V@
+])TAB]_f>7]`,VE]`#GC]Y"0SoXb+7pq-10!P>r8]DfJ>]`>eE^])%I^Au(C_#_?drkSNLrke]Q
+r5AQQs2P)Z!Q`=\`W4'S`r=!ZaN=>%rQ5)^!6b;arltGd!mT$9ps8rd!7Ceos3h&!e^jZMs4Hts
+s4[J,9%hS6a2Z$8_7de)Xf&%kTq7gAQ'RMmN/EUQLki:=XKAM'WgJ-WW5Q0HS!8#YQ[<L4>\\XY
+E.!G!8l&90ItW]>Pae/69iFhar_sh7U8FiINfK3aR$sP7SXuIJV5LAtXf\e2Yck7]rrA5[PkgLC
+P4b%#aSj0YUAgqcV#R:jVZ*LKs7jG/_"khF_#M1B^Ak,2V?E`kUna[`Td6;'St;LCS"#k7R$a5+
+Q'IStP*1rhO,o<\NJrgSMMd7ILkpibLAuu,K_g>sK)('!K`?c*LB!#/M#N53MMqImCQ4@8O-#Ke
+P*D5sQC!u,R[]h<St;UKU8+N\VPgAmWiN8(YHY:;ZaI6N\@K2`]Y;.r_8=+/`Q-'Ab0/#ScHste
+e'uq!f@\d1gYCWAhr*JQj5]7`k3(sml0@U$m-X60n*ol;o()DDo`"O`pAamdq#:*hqYU0hr;?Nb
+rdk*Es*t~>
+JcC<$JcFX-o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_ng3hqn*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,LrgO(]SY)LFTDP;TU&:P`TD>&ZSY#dqn8/&?pMBkHs-3DGs-E\Mqj-c4if*qs
+qelCO!cUFkrB_6>G^*V*AS5^oEH?5FH$XphK7nu;O8"b:P5^U:O9L]*NfT3\qN(B4rfI2DqN:?1
+!0R8B!0?B+qN:c?r/po?rfd;DplkN<op,39s-EbRQi<BMQhHjGR/`TRRf8fRS,f,VScGDZT)PA^
+T_Y;]UAptgV#@(aV#I1qU7Id@QBd\srf0'pJq&/oG^"7LE,KH*BP;*lA;5eiJ:;ooF_5-5OG&(+
+E*dI#>Z!7F:L-4c?"@Y87n-cn@qfe!F*2a,7i4]i9hn<.IXc0ODJsN:G'A1VH?ssfIY!(LKE$Z*
+KE0<sci2;jdJhSoe,Ikrec45"f*9m\g"P39h#?11i;V[:io=qSE;4AKE;OSQQhQg:Qi36LUAgqc
+V#R:jVZ*LKs5oI=OT(CBVuNUsV50o^UAgi3TV%gISXc1=R[KP1Q^3o%P`q8nOcYWbNfB$WN/NRN
+M2@%EL])u-L&Qc%KDC,pKE$W)L&Qi,LB*/0M#iKlretWPNfT6_OckllQ'IZ%R$jD4S=Q7CTV8*T
+UnsrdW2ckuXf\e2Z*L^D[^WcW]"G\i^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnX
+jlY^gkiq?slg4!*mdKW6naZ2@oCMVRp&Facp\sseq>^<gqu6NkrU^#>s.fUE~>
+JcC<$JcFX-o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_ng<nrn*f]3m-Es$l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1abfe,L;Z0Jj;Z'Dg;Ys;i;#sKhr_<Ghr_N\m:d72054q)::ARc`:]OJm<S(4M5P[SE
+62a+a5!V@q5!D+m5!VA"6UO=37nH<G:%qE`:Amuf:&n#f9`Iid:&n#d9E7fd9_qKY:B+,i:=i;4
+;#X>l;#=&f:]sQh9heC^:\dib:[V'Y;#jGl:\R`d;ZBSo;Y<le;Z9Vj;Z0Pe;Z9Vo<!$'!<:a,f
+<rQ,!<!#uq;>sAk9)h?`6UX:-55mYW3]T5Y2`*?L1bg^P69mh!4#f8"59E6V3]K&V2DZj0)^6U^
+/hA\53&*6I1Gq'M4?Yqr6oY**+ZhhN4\JF<5X7V"6UX=06q9^;7n?3D8PDiP:/4MXDfB[oEW1"Y
+F8g:\FoHObGBWt0s*4Qh!d]3?rd=frIK"ZsIt9`[557;;55[S/<;9DkUAgqcV#R:jVZ*Ip[^WaE
+\Gs#>\@9!H\cTOX^&G_J^VI\%qSN9Ms2=h9rDi_ooi:cdr`/urs/#pqUnjc[rh1U1T:VXFS=?":
+R@'A.QBd`"PEM)kOH5H_NK&mUMi*CKM26tCrJ(?+re1-#q1AEps+LE+reCH.!/UW2!K)g7N,+E5
+O,oBbP*2&pQ'Rc(R@9V8SXuFGTq\<XV5C/hWiE,%Xfnt6ZEpsI\%&u[]Y(tn^qmn*`Pom=ai_fN
+cHaeadaQ^rf%8R-g=tE=hV[8MioB(\k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7ZKerqQKgs8)Wi
+rqu]moDX=@U]5i~>
+JcC<$JcFX-oD\^erqu]ks8)ckrV/JKp@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK8&Ve(*+(g=tE=hV[5hi;)=<i8NVPhqm5GgtVh^rS%C2Mi@Om!0$l9p5Ja*"H8>"
+_ScAkqSi<Nq7#k%laQo&!jf8?rf?qBrB_6ZQ^Do<H@1@"M2dRXQ'[r3TVecp[J.<3]E#S@\cTLV
+]_f>7]`,SE]_oAB]Y"0Sl+?W"p:L@;s1A9CqRlmCr4i6HrP&?Jp;$jH^VIY`_>_=O_u.IO`W*sV
+a8a0Za8![Q`rX9'r6"u[s2t5_rltJes3:Shps8rdrR1_p"4YlPf)4,"f_!ksg1oBjbK.]A_8="&
+^pp>@UnXNRR['2%P)tW[N/E@DZ)t1/VlZhHHD7sL^8.'?LQI($='9!X95Jp/N(HfAH%:O*O-?!#
+T:SeS:/Fni;c99bVN$UqNf]NoR[fk<St;aSW2m,(Y-+t4Yg`XPP5gaGPkgOCP51=Aal:ACa.]4+
+UAq"dV#R:jVZ!FKs7O2._"tnG_#(nA^Ab#6VPU)aUS@a])5*UnSt2C@S!ob4R$X,(Q'@JqP*(ie
+O,f5!Mueiore^Z2!/LN-s+UK+q1JNqq1J^#re:?+s+^T1reYBIMi<USNfT6_OcklkPa.N#R$a;1
+S"-%@T:hmPUSO`aVl?\rXKAY/Yd(O@[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&f\5'7
+h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3nF?MK!qZ'Vrq6<b!;HHes7uZjqtpBjr;H6dJcDPGJ,~>
+JcC<$JcFX-oD\^erqu]ks8)ckrV/8Ep@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK60@S"#q=T)PAYT_Y8^TV;@X!hZ-Xpn%4qnne5@q/$(qpQbT@n;cIe!fN"qrbhU!
+rB_6>GBRA'@qTOnDK9f@G^=dgJqSr;N;8S9P5^U:O8t@>Nr"h2OT(@BP5:=/OT1C,OSY+=P5LI?
+P5^[DP5(7:PkLC7Q33J@R$[c=rg*VPp6kiG!1EhTrgWeT!1itX!2'.[rLa+_pn7\^rhBIhrhK:b
+9;S;OR[08'P)bT`MM$D-H?j^WFDl&6CM@BnBOtY,K7\T%I!TF:I>NB/H#dD/CLL%*6;(NJ<*WsJ
+5t=CN@:X(gE,p&GGt(:n7fH+!8UGo8D/O3.E,p&DH$FU\H[U?mJ:W?*K`6Z*c2Q#fci2;kdJhSn
+e,Iksec+/!fDjP(gCW/rh;7&Hi8ESQio9!9DJsImE;4ALE;jeQQhHa8QNEJHU&LedU\pqfV>d@j
+VqqC5Oo(7>OoD6^VPU)aUS@a])5*UnSt2C@S!ob4R$X,(Q'@JqP*(ieO,f5!Mueiore^Z2!/LN-
+s+UK+q1JNqq1J^#re:?+s+^T1reYBIMi<USNfT6_OcklkPa.N#R$a;1S"-%@T:hmPUSO`aVl?\r
+XKAY/Yd(O@[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&f\5'7h;-rGi8N\UjQ5OdkNM0p
+lKdg'mI'H3nF?MK!qZ'Vrq6<b!;HHes7uZjqtpBjr;H6dJcDPGJ,~>
+JcC<$JcFX-oD\^erqu]ks8)ckrV/,Ap@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK3UZ;Z0Jj;Z'Dh;?0Sk;#aAr:esk^:/Cgb!^/_2rBKO1qE=aOqG6rarD`_qg/J2R
+<)Zaqr]p?HrB^`O5X%:n4$>h-4odkI6j?+P7nH?I9_qNb:Amuf:&n#f9`Iid:&n#d9EIp^9_hEX
+:B+,h:B"#h:>AY9;#X>l;#=&f:]sQh9heC^:\dib:[V'Y;$0Wj:Jgd_r_i>b!)iboqGR8johtcf
+r_s&$<)cjt<qTJl<rQ)]<`;mm9i"GU84Q$86pj.#4?GVc3'0#V1c%!F0f26b5X.@m3^5en5<M+i
+2`ETL/gVP],qU]!0K(pF2#]?U2E<l_5!VJ%2`WiW4$5\h8kV]@69mb%6pa7.7Rp!>84`_P##%`b
+9hnH$rbqgUrc.pXrcA'\rcS6aqfi'bs*=`nI!km@rdG'$J:]mG4[&d.pc\F:k>_7Us.TFds.fLf
+s/#^lrMTY(s0`*?[^NZT\c0/M]=bhj^:q@u^qmk(_8=%e_Z%IN<rH%n<:s8g<;onsVZiroUnjc[
+rh14&T:VXFS=?":R@'A.QBd`"PEM)kOH5H_NW+k;Mi.Ljs+gZ1rJ(?+s+L3#qL\Nqs+LB*reCH.
+!/UW2C5Rq.N/`jYO-#KeP*;,qQ'[l*R@9V8SXuIHTq\<XV5L5jWiE/&Y-5(7Za7'J\%0&]]Y2%o
+^r!t,`Q#s>aihlPcHjkbdaZdsf@S[/g>(N?hVd>NioB+]k2tjjl07L!m-O--n*fc9rpg-^o^r.U
+s7QHerV6EgrqcNhrqu]moDX=@V#Pr~>
+JcC<$JcFU,o`"gfrquZjs8)ckrqQNf!;?Eb2>$M2o'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f%&9udEg+_bKA,Vdact&g=tE=hV[5hi:u:2i;VU9hVHuArn@D,s,$c3"Gr"nMi7=hoo/[*"Mqsm
+`5MMkq8WHCe[PLc"gt_BZE^S262NtaNL4U)FaAFeK8>MJOHGltT:r$WY-b_:])fRVrOi0BrOW$@
+rk/3Aot::;!5/9Brk/6Ake$Q"p:L16qRlmCr4i6HrP&?Jp;-^CrPAKMs24cQr5AZUrQ"rXrl=iS
+rPnr[ao'<[aoBN\bl5lebQ?&7cM,ZaciDJmdf7bueCE.$r7Cu$p"=*/ccF/F_o'7&`58[RV5'`W
+SX5V,OcYT]LP^nCYcb+/WMlbbI!2R+[&f^[F,uE3?WBU:7qm*tN(ZrBH%1I)Ng-!$T:JbR:/Fqi
+;cA@DVPfE6NK0'bR[BS6SXuFIV5L>sY-"k0YcuOTrK?l<rf[2Cr5n!?rLs7crhKFfs/#amr20On
+hZ*VmpVHmFqn`0FqnN$B!3#mp-`3`9UnaZXTqJ$LSt2C@S!ob4R$X,(Q'@JqP*(ifO,o<\N/W[Q
+MZ/G6LkgcbLAlo,K_^8tK(suuK`?c)L22R#Ll$tGMi3OQNK0'\OHG]hPE_>uQ^F//S"#q>StD^M
+U84T^Vl6SpX/rG+YctF>['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5VcdC.geC<($f@em4gtgfDi8ESS
+j5f=ak32'olKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqYU0gr;HTbrdk*Gs*t~>
+JcC<$JcFU,o`"gfrquZjs8)ckrqQNf!;?Eb0D+l,o'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f%&9udEg+_bK?6AS"-">T)PAYT_P5\TECgZT:bqNrG)CLp1sM@!,_RKq/$+Jrfm2CqN_,Hr/Uf:
+rJp]7rJp$"!K;s9M#`>062NtaE-PPo?t3h_Bl%d0F*;hUIXm')LPq5kOTL].OnFh9O8Y+6O8+h:
+OoCO@Om\>1O6_o(OoCOAOo1CAPPp[>PPLI<Q1L=AQi<?PQi<BPQiEHHRJ`EPRJrZSS,8`TSb/NQ
+TDtSZU&UkeUB%+hU\giVTU_I<QBdVpNfK*SJ:DrmH$+1JE,KK+BOtdgAVPkjJUW#pG@tH:N.ZS%
+E*mEr?Um=E<]j5]@qe4u7U9G5C2@j1FEr*/7N,#q91ioGIXc3PD/O93FEMhQH@'scIXZiuK)UE&
+L&T<qcMl/hd/MGldK.hFrm^qts475%&_Pdig=tB;h;-uGi8ESQio9"sDZ+MQE;FMODuahPQiEB8
+Qi3WXUAgqdV#R:kVYm=lW8@RSP4t+=ORJ>/O8u6YV^J@<Unjc[TqS-OSt;LCS"#k7R$a5+Q'ISt
+P*1rhOH5H_NJrgSMi.Lj!f2VereCE+s+L3#qh"Tqs+LE+rJ#*CLkpnEMMmCON/`jYO-#KeP*;,q
+QC!u+R[]e:St;RJTq\?YVPgAlWiN5'Y->.9Za@-K\%0&]]Y2(p_8=+.`Q$!?b0/#RcHjncdaZdt
+f@S^0gYCW@hr*GOj5]4^k2tmll0@U$m-X6?mfDqJrpg-^o^r.U!quB_rV6Egs8)WirVZWmo)=4?
+V>l&~>
+JcC<$JcFU,o`"gfrquZjs8)ckrqQNf!;?Eb..m-%o'u8>n*fZ1m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f%&9udEg+_bKBZYr)3GiqGI;jr)!Djs%rYis%r_Zr]U3Dr]fO/!'U3SqbR&b!)NGjqc2NQpf%,W
+qa)#Z5W(Vc4$>en5!M:u6UO@384Q9F:&Ice:B"&g:B+&f9E7fd:B+&d9EIp^9_hEY:B"&f:B+,i
+:>J_:;#X>l;#=&f:]sQh9heC^:\dib:[V'Y;>j>c;>sJb;#jMm;u0Dl;Z]os;tX&f;u]et<E/rt
+!*8bmr`0P0;c-=e:eseZ7n,m65sIR44T@DQ2`WcP2)@'F1.";p5s@Cl3W22r4utY^2)R*@+<;g[
+.4Qu-3&!6K1Gq'O4$>bm6p`gl3&s,`4ZPu*91V<65X.P&r^-iX7n6*?8H)6]9`Iie:B,,1D>nJR
+E;aeUErU4[FT-F^Focf1rceBe!dT*<rd5!"I!pElIXcm"rB1$Ar]^0Ar''4AqG[?ds.]LfrM9Ii
+s/,^l"K8f<[^H+Cs0rBG]"5Mc]Y2%o^])"P_8*n&_86#c"N+;B<`]0!rD`eqqc*5gqc!Qorhh-@
+V50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)kOH>NaNfB!VMi3JlM#rKgL]3&-L&Zi%KDU8qKE$W)
+L&HaALPUbCM2I4LN/WaVO,oBbP*2#nQ'Rc(R$sM6S=Z=ETqS3VUo(&gWN*##Xfen4ZEppG[^WfX
+]=bhl^VRe)`5Ta;aND]Mc-FY_dF-Oof%8O,g=tE=h;@/KiT&tZjlY^hl07L!m-O--rpKmWnc&(\
+oCV\So`Fj]p\jmeq>^<gqu-HkrUTr=s/#aG~>
+JcC<$JcFU,oD\^erqu]ks8)ckrqQNf!;?Eb2Y?V4o()>?n*f]3m-O$%l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1`bKJ/VdF6_#g=tE<h;7&HrS[M1s5<k5!oDbfrS%(("GhnlMi7Rnq2P*,qi(`o_8=./
+q8N-Kq6o1iqR6F1s02X0YH\#/q*GgbDf^&FH@CF"MN3dZQ'e&5TVecq[f3o9]`5VB])TDA]`#J8
+]`#PB]DfGE]=PT9]D/u9]DoPA]DB/@]tXEX!5ABGrkSKI!5S<ErP8BJrkeZPrP\WQs2P)Zrl4rX
+q8WBR!Q`C[b5KE_b00\+qoo,dp<Wcc!7Ceos3h)"e^`7KfDjM$g&K_)fkf*]b/VE<_SWst^q$GB
+USFKSR?j)#P)tWZL5:\@ZELC3W2HS`I!2O*[]>j\Ef>iu=]f$V95Jp0MFgT=I=[05OdMW1Sk`'V
+:fLFm;k]t`VN$UqNf]HjR[fn>SXuFIV5L>rYH4k/YHY7XrrA2ZP5(7=P5g^Gb506Aa8hn2U&Uke
+U]%"gV>mFkVuN^Qs8Bh0_>M+K_>1nC^\tnHW;ib9VPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q8n
+Oc]R'#*+\%N/NRNreU]4LPPk`s+UH*q1JQrq1J["s+UH,s+^T1reYTOMi<USNK0'\OHG]iPa.N"
+Q^F20S"-%@StMdOUSO``Vl6SpX0&M-Yd(L?['mEQ\[oDc]t_A!_Sa@3a2lBFbKS8Wd*^7ieCE.%
+f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF5u=o(2JFrq6<bs7cKes7u]kqtpBjr;H3cJcDVI
+J,~>
+JcC<$JcFU,oD\^erqu]ks8)ckrqQNf!;?Eb0_Fu.o()>?n*f]3m-O$%l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1`bKH9@S"#q=SY#hQqOmYXs.K:^qk!1jnne2?!gAk5pQbWArg!)8qiC]9k`,V#reUc5
+Lkgb>q*H$E=C>NGAS,UmDK0`>GC"^gJV/c9NKK?dP*(n"OT1C?Nqe\2OT(CAP5CC0OSk1,OSY+=
+P5LI?P5^[DP5(7:Pk^O7Q2m9NQiNKPR/`NQR.ZmGR/`TRRf8fRSH#/WScGD[T)PA^T_P5\UAptg
+V#@(gUhQHjR[9;(P`h)fNer@;IsZHbG&qS>ChdTqAS,RdLP1;2IscWeB4QONK77r]?>F.W6psUL
+5u_-#BL,*W?XdV`DK0cDG=G(k7ncWL8UPo7IVit>DK'T:G'8+TH$ajbIXZiuJ:`E,re1?qrlbAe
+rm(Mhrm:\mr6kSn!n>cNrmhD-f\"m2gY:N>h>Z=3i;_d9iW3t:rbhdSr,;OQr,;USpQtiEl^%UE
+r1X.bs.fOgs/#amrMT[ohuEY<plYK9mudU2s/>sq*N#[/UnaZXTqJ$LSt2C@S!ob4R$X,(Q'@Jq
+P*(k*Ns:W(N/W[PMZ/G6LkgcbLAuu,K_^8tK)(&uK`?c*LB!#/M#N6MMMmFPNK&sZO-#KePE_>t
+QC!u,R[]h<St;UKU8+N\VPgAlWiN8(YHY:;Za@0L\@K2_]Y2(q_8=+/`Q-'Ab0/#ScHstde'uq!
+f@\d1gYCWAhr*JQj5]4_k3(sml0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0iqYU0hr;?Nardk*H
+s*t~>
+JcC<$JcFU,oD\^erqu]ks8)ckrqQNf!;?Eb..m-&o()>?n*f]3m-O$%l0.9ljl>C[i8<DIgtLH6
+f@AC"dEp1`bKK]Yr)3JjqGI;jqb[;is%rYiqEOa=!'f^3!)NMfqG6ub!`)QcdT$*B!)ibo!)iVZ
+(-j]<4$5Vg5<V1o5XRq-84c9B92%rRr_EJhr_EJfrCm2cs%W;_q+^i`!)NPgr_NGe!)NShhG<]=
+r_`\lqbR2f"A_ce9ht[`qb[,bm83g[rD<5cr_iAcs&/eoq,.;n<)cfh;Z9Vp<;]br<r#bq<$t[H
+;Gg4c:/4JU84Q'96U="#4?bhf3&rrW2Dd3G2D@Kb6U*du3][1)4[D7m3&W]P0J"7f,:tQ!0JkaD
+2)I-J3''2e5XIgs3B/u[4$>Pr9M7oA5X.J#6pj@06UjR984Q3C9M8%X9F"9e:2=W]D/T>ks)@sW
+rc8!ZrcJ-^s)nHfG'<k/"*f*;HN&:!I=-HkIXZcsJNQ*o4T%A@55[SD53,]>;ZNKgU&UkeU]%"g
+V>mFkVuN^o[0j@O\%&rY]"5Md^AbkL^;%IurP8HLs2+fPs2+_9s&T,!rD`\nqc*Mos&Akqr`&or
+s/-m7V50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)kOT(:FNfB!VMi*DkM#rKgL]3&.L&Qc$KDU8r
+KDpQ(L&Qi,LB*/0M/\?1N/WaUNfT6_OckomQ'IZ%R$jD4S=Q7CTV8*TUnsrdW2ZetXf\e2Z*L^C
+[^N]V]">Vg^VI\&_o9U8aN;TJbg+M\dF$Fme^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4!*mdKW6
+nF?)?oCMVRp&Facp\jmeq>^<gqu6NkrUTr=s/,gH~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV/JKp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*L"]bKS8Zdad"(gYCWAhV[5hi;DO6i;V^8i;MO6hVA+aqhY**",MekMu/J4N<"q8NV\V5
+N<R,6_Sa=1qSi3Ks0qa2pUBq-q7$.-$+7.JZEUO8YHP,.XSY=#6YgLVF*;nZJV8l@OHGZmS"H@N
+VQR;8qRlj?rjr-As1J9Ap:U=:!5/<Crk/9C!4q:(q7?O:rOi-AqRcgAr4W3F^APbF_#;"J_"PVC
+_#;+K_Z%IO`;IUR`W4'Y`r=$R`r=!ZaN=>%rQ,)_bPTN\c1TE_ciDJmdK@tJeCFQLr7Cu$rRhA,
+d`]eP_u@OQ]`5cCXJhtkTq@d?Q]dGjNJWCDLP^bhXf\\&V5pJBGbW*RZ(@5(M3;Fa<Ch7*C3bPl
+8l/93K8GYRR[Tjk:/4Vc<)QYgUSarLNf]6]Q'Rl/rgj(\"JVZgW2op"s/u@*cN!m+s-!,?#F(F:
+PEV0Pb4j$AaSqk2U&UkeU]%"gV>mFkVuN[qWSmgT_YM%D^];4I_#(nF^Ak/XW2HPjV50o^U7n9R
+T:VXFS=?":R@'A.QBd`"PEM)kOH5H_NW+k;Mi.Lj!f2VerJ(?+s+L3#qL\Nqs+LE+rJ#KNLkpnE
+MMd=NN/`jYO-#KeP*;,qQ'[l*R@9V8SXuIHTq\<XV5L5iWiE/&Y-5(7Za7'J\%&u[]Y(tn^qmn*
+`Q#s>aihlPcHaeadaQ^rf%8R.g=tH>hV[8MioB+]k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHe
+rV6Bfs8)Wirqu]moDX=@VZ2/~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV/;Fp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*L"]Q^F20S"-%@T:bkNq4[h]r1EqZk\Kd+rbVY!rfm2CqNh,Gs,Z6$nW!R-$]Bt$M26qC
+LPCM:K_n(S6WR;l?smJVBP_R+F*2\QI"$X#KntYIP*(n"O8t@>Nq\V2OT(CAP5CC0OSb+;O8tF7
+OSY+=P5LI?P5^[DP5(79PkgU8Q2m9NQiNKPQiNKOR.csHR/`TRRf8fRSGo)WScGD[T)P>^T_>&Z
+UAgp&Una]VS=5b/Pa%>kO,f0QIt)ilG]\"HDf'6'An>LaB4Q[KK7JH"I<oR;I?/f-G&Ui(CJdhl
+4]apI>[qJ67RgcqBP_X.Fa.4_7Rg*H8kFDXIXc3PDJa<2F*;_OGBnL\I"$QpJ:W=OKDpT'b6#o4
+c2Q#fci2;jdJVGle,Insf)OA8g"P07gt^cChr!AMiSieVDJsIjE;a_PE;skMQi!*9Qi<ZVU&Uke
+U]%"gV>mFkVuN[qWSmgTP5179OR\J5OT2:*W2HPjV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)k
+OH5H_NW+k;Mi.Lj!f2VerJ(?+s+L3#qL\Nqs+LE+rJ#KNLkpnEMMd=NN/`jYO-#KeP*;,qQ'[l*
+R@9V8SXuIHTq\<XV5L5iWiE/&Y-5(7Za7'J\%&u[]Y(tn^qmn*`Q#s>aihlPcHaeadaQ^rf%8R.
+g=tH>hV[8MioB+]k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7QHerV6Bfs8)Wirqu]moDX=@VZ2/~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV.u=p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;Fg=k32
+f$r0rd*L"];#*ud;Z0Jg;?0Sk;#aAm;#X8h5kdM)4oeCU:A[i`:]aEf:=<,>;uKVo;uT\l65i3K
+1bq-T4Zu"n5!VD#6pjF47S$-C9h\;X:]=)h:&I]a:&n#`9_qK_:B"&g:B"&`:>\k<;#X>l;#=&f
+:]sQh9heC^:]=2a:[V'Z;>a8b;?'Pd;>sJm;u'>j;ufki;Z9Vp<;fhr<r#a2<)QUj:JX_Z91_]B
+6UF()5<V(g3]T2Y2D[0G1GUdB5sn"(5<M"f5<_>"4?PV`2Dd0@+rr$^/h/M23&*<I2)dQ[4[)2#
+4>]&Y5!(kd92%uL5X7P!6UO1.6UX@57Rfs>8P;]J9MA/Sr_<K0CAquLCi0/is)@pVrc8$[rH/'^
+qf`!`"F,3;H@,R;s*XuuIt<1M4T7MD4T%A>56!e*<;TVnT`(SaUAq"eV#R:kVZ!FmVuWgr[JmW@
+\@K2_]=bhk^](qJ^V9]^s1nZN!5e`O!Q)eR=8l5#<W,nm;u0Gn<W#hq<W?%uW?eF?Vl$;dUnaZX
+TqJ$LSt2C@S!ob4R$X,(Q'@JqP*(ieO,f5!MueioreU]4LPPh_s+UK+q1JNqq1J^#s+UE+G)(m0
+M2@+IMi<USNfT6_OcklkPa.N#R$a;1S"-%@T:hmPUSO`aVl6VqXKAY/Yd(O@[C3QS\[oGd^;%J"
+_Sa@4a2lBGbK\>Xd*^:jeCE.%f\5'6h;-rFi8N\UjQ5OdkNM0plKdg'mI'H3nF?&>o(2JFrq6<b
+!;HHerqZTjqtpBjr;H6dJcDVIJ,~>
+JcC<$JcFR+o`"gfrVZTjs8)ckrqQNf!;?Eb2Y?V3o'u8>n*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^bKJ/VdF?e$gYCW@hVR/Iro!_5qV_>0!SuQ&M#<)3Ll$tGqMbE5s,?l8rJ^cl"2Vjl
+`;.CG`qm1@[f!W7\Gs&9\G<W.[f3]6Zi@97Xfee/XK8K#6N9ChBPhU-FEr1_Jqo>IP*20#SY2XQ
+VlmA8rOi*@"M24W]Y+0Sp:U=:s1JBDrk/9C!4q:(q7?O:o=P(:qS)mBrkSKI!5S<ErP8HLqniBN
+r5AQQrl4uYs2P&Ypr<9Q!Q`C\b5KE_b00\+qp"cZ!mo?BrmLhr!7h)"r7Cu$s4J==b0.c@_83n"
+]"c(bWMQ>`T:;45PECl`MMV7c4c$;EX/`(rWMl85FelOJ];1a=K:Qgu5AP+-Bm,)e8l&?3JVT8L
+R[]pH:ejhd<)HPeUo(#LNK0*bQ'n-?SHYUZV5C5mriQ4'!3cC+bl@^)rfR5DpQPT@rQ=iUlH'!t
+rh04`!huHbrM9Iis/,dns/>ss!35&YrPJBHn\G"9rk9GRWMuhoVl$;dUnaZXTqJ$LSt2C@S!ob4
+R$X,(Q';31$B^F2O,f3YN/NUOreU]4LPPk`s+UH*q1JNqq1J^#s+UE+!JcL1M//!,Mi<USNfT6_
+OcklkPa.Q$R$a;2S"-(AT:qsQUnjibVl?\sXKAY0Yd1UB[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Y
+d*^:keCE1&g"P08h;-uHi8N\UjQ5OdkNM0qlg4!*mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6Hj
+rVc<dJcDYJJ,~>
+JcC<$JcFR+o`"gfrVZTjs8)ckrqQNf!;?Eb0_Fu-o'u8>n*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^Q^=)-R[fn=StGbMq4[e\qk)tcs(h[PoPFPkrfm2Cqj%5IrKd;@k`5=q!K<$;N;eb8
+M>`50K`Hf(6N9Ch<``C1@:Ee\Bl.d/F`r%VIt3'&KSbSIooK07r/UN4qN1]=rf[/@mZ@7*n<!L/
+rf[2Ar0%&CrK?r>pltT>ns09Brg3\Pq3_,Ks-W_Pr0RJPrgNhUqjdYVr13n\qO[\Yp7_M\s.^L'
+S=,Y,PEV,iNK&mOJ:;omH$=@ME,BB*B4h-R5A#V&Jq8E"I<p*L@Xa,`L3[cKBQ7*Q1Jh%6;-.4A
+6:XIO@qTUsEclUt84H'C9h@p(I"$N^D/O93F*2VLH2`*oI"$QqJ:`CPKDgN'b5TQabl5ldcMl/h
+d/VMndK%\odL=USeCE+#f%8R,g"P0Zh#H71huDU;iSrm7D>nGKDuahRE:fLmQLL7@TDkM^T`Us`
+U]%"gV>mFlVuN^qW;rsXs8A,VOnFh/OoLLaWi;trVl-DgUnjc[TqS-OSt;LCS"#k7R$a5+Q'IR4
+Op[>5O,o<\N/W[QMZ/G6LkgcbLAuu,K_^8sK)('!K`?c)L&m'creYEJMi3OQNK0'\OHG]hPE_>u
+Q^F/.S"#q>StD^MU84T]Vl-MoX/rG+YctF>['d?O\[f>b]tV7s_SX71`lH0BbKJ/Ucd:(feC<%#
+f@em3gtgfDi8ESRj5f=ak3(smlKdg'mHs?1n*olHncJFTo`"Lbp@n=[q#C0hqY^6hr;HTbrdk*I
+s*t~>
+JcC<$JcFR+o`"gfrVZTjs8)ckrqQNf!;?Eb..m-%o'u8>n*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f$r3tdEg+^:f-sbr)3JjqbmDjqb[8hrB:3GrBU*AlTPG75!Db<qbI#aqb[8fs%q6F!E2tn;uTYp
+;uT\m6N9Cl1,CUF4?Pbl5Wq=s6:4+/84Q-?8kMcN:/4MXr(I2e:/4OZ9_hE^:Amug:B"&_:>eq=
+;#X>l;#=&f:]sQh9heCP:[V'Y;>sDc;>sGp;,C*`;?'Pm;u0Dk<<#nj;Z9Vo<;onr<Xr,/<)lpr
+;,U4c9MJ2Q8H)!V5Su^K5!1ne3&iiR1c$pC1H%Wg69d[u4#o>#5TN0T4ZYM]2)6g4)_*<d.4mA:
+0f1aD2E<l_5!h[or](3H4$5Mr9M.nU5SumU6:4(,7n#m<7n?6F91_fN9h\;X:JP^(CB&&MCi0,h
+s)@sWrc8!ZrcJ-^!HrVbG5lafG^4T6Hi8?lI04qJJ:[V\pHAF<i)KVQs.B:`rLj:eUSId`s/#am
+rhodps/?@*[^NZS\@T8`]=e-Vq7cmDrP8HL!Q)bQ=8l8"<W?%k;tEs0Wi;trVl-DgUnjc[TqS-O
+St;LCS"#k7R$a5+Q'IR4Op[>5O,o<\N/W[QMZ/G6LkgcbLAuu,K_^8sK)('!K`?c)L&m'creYEJ
+Mi3OQNK0'\OHG]hPE_>uQ^F/.S"#q>StD^MU84T]Vl-MoX/rG+YctF>['d?O\[f>b]tV7s_SX71
+`lH0BbKJ/Ucd:(feC<%#f@em3gtgfDi8ESRj5f=ak3(smlKdg'mHs?1n*olHncJFTo`"Lbp@n=[
+q#C0hqY^6hr;HTbrdk*Is*t~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb0_Fu.o()>?n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC!dEp1\b0/&UdF6\"gYD_`s53h6r8IM1rndb5M>W/3M27"Fq2"p)"c/"lMMmDjN;eh7N;nn;
+^]_Kj_o0Lk`V7CO`rO-N\,Ni*\+R3.[K!Q4YQ:o1riH4%XSkKa6Q0ZVE,g#DH[UF!M2m^^PaRu2
+T:r0[Y-POL]_f>@]`#J9]_oJB]`5VD]]$Ku])B84]E#YA^APbF_#;"J_"PVD_#D1I_Z.OO`;[aS
+`rF*Y`rF*S`r3pYaN=>%rlG2`bPTN]blH&^ci;AldJhSoe,\%tf)=34f[@pb_na%&^:_"l^oaT6
+U7n3KR$EhtNf8gML4t;9YHP",W2HPlRs]@PZ)kC5R?NYaQ[F6QDJE`sF+0$@:Jc@fLlROaR\-*F
+:/=kh;H'9aVP]?6NK9?lR@Te;St;[QV5^NpXoGU%Yfm%HOSk7?P4t1>ao9HTamI1LT)YG_T`(Sa
+U&^teV#R7kVZ!FmVuiruWoF'Y_>hCJ_=>>;^](r%Wi;trVl-DgUnjc[TqS-OSt;LCS"#h5R$X,(
+Q'@JqP*(ieO,f6[N/W[PMM[1GLkkq`s+UK+q1JNqq1J["s+UH,s+^T1reUZ5MuJZDNK0'\OHG]h
+Pa.N"Q^F20S"#t?StMdNUSO]_Vl6SpX/rG+YctF>['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5VcdC.h
+eC<($f\,!5gtgiEi8EVTj5f=akNM0plKdg'mI'uB!V#XYncA@SrUg6cp\4X]s7u]kqtp?irVc<d
+JcD\KJ,~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb-1pg#o()>?n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC!dEp2<QO9+JR[]h<StD[KU%tAWU&Ue`T)`]cCB/2MD>J)KPQ$gAQ2$XJQ'R_rNqJJ#NqJD1
+N;ne8M$A`kL51M;L&F@:6Prg+?=72MA7oOkDfTrAGC+^eJ:W?,M2IAiOT1C?NqSP1OT(CBP5170
+OS4b+OSY+=P5LI?P5^[DP4t19PkgU8QN*<OQiNKKR/NHQR/<<MQiNQRRf8fSSGf#XScbOTStGnO
+rh'(]!20:a)krmnR$Eo!P)t]`N/WF?IscNeGB@hDDJNs#AH$(4@YKJeJ:E#pH?X"2I"[$'HZX1A
+BPq-]2c<II:fh%=5t4=O@:s@nEclYO7n6!B9hS'*I"$N]Ci434FEMeOH$XdaIsuotJqAW-K_pH'
+ao9H]bPocccMl/hd/;;jdK7nIeGdu3f%8O+g"P07gt^`BhV[5Ki8NYSrGDRPrbqgUs)IpTnsB-;
+nsBBJs.B=arLs7c!2KLgs.o^mrMT[o!i`3"irB%@s-!2?ooSj/s,\t8WMuhoVl$;dUnaZXTqJ$L
+St2C@S!fY2Q^3o%P`q8nOcYWbNfK*XN/NRNM2@%EL])u-L&Zi%KDL2qKDpQ(L&Qi,LB*/0M#iKl
+ret9FNfT6_OckllQ'IZ%R$jD4S"6.BTV8'SUnjlcW2ZetXKAY0Yd1UB[C3QT\\#Mf^V@V%_o0O6
+aN2NIbg"GZdF$FmeCN7(g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mf)YUnF?MK!V>s^o`Fj]p\jme
+q>^<gqu-HkrUTr=s/>sJ~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb..m-&o()>?n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC!dEp07:Jgjas&&hqr_i_mqGR5gr_WVlrB:*Cniuq6r]Ts=s%iMeqbR)cs%iSido?3CqGI>k
+;Z/r\6Q%[>3]]Ac4Zu"n5!VD#6pj@26q9d?8k_oQrCm5c!_uHar(I/d9MG:WrD*;es%`SiohOF@
+nkf<_s%rSgr_N_n:/+GXn5&IKr_`Ykp/1fe!`;cjpJLrgrDWSk!)rkrs&8Vhr_reqrDihts&BM+
+;,L+`9MA)O7mfX15lO"J49IZ)2`^jq!AuY30gS,n5s[_"4?5De5<qIu4ZYM[1Ggp?.2jT],q1H%
+3&!6J1H.9R4?l)!75R"b5!1qe92%rL5<qM$6UO1.6UsU:r^d;e8P)TL9hkL\qeH.H!GlWODuXeT
+EW1"YF8^4\FTQ`/FoHOqGBeCYH@(!dH[C-fI=6QoJaP\Y<;]\pT)YG_T`(SaU&^teV#R7kVZ!Fm
+W!KB&Wj]CH\[f<M]DfJC^&,PD^B;9d^qfrd#/aJB='&F'r`/qsnl,6]0rh4PW2HPjV50o^U7n9R
+T:VXFS=?"9R$a5+Q'IStP*1rhO,o<]NJrgSMMd7ILkpibLAuu-K_^8sK)(&uK`?c*LB!#/M#N53
+MMqIm@?$;.O-#KeP*D5sQC!u,R[]e;St;UKTqeEZVPgAlWiN5'Y->.9Za@-K\%0&]]Y2(p_8=+.
+`Q$!?b0/#RcHjnce'umuf@\d1gYCWAhr*GPj5]4^k3(sml0@U$m-X6?mfDqJrpg*]o_nFap@n=[
+q#C0iqYU0gr;HTbrdk*Js*t~>
+JcC<$JcFO*o`"gfrqu]krqZWjrV/AHp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=b-1
+e^W'qd*BbTbK\>[dact'gYL`CrSRV4qVhA1rnmL-!f2\iregW1s+pH,s,-c5rJ^`8s,?rm!l;ak
+rl"fTq8W<P!QN+W\,Ni8\+$iq\,Wo:[0s@IZ*CL9Xf\b.X/l1cr'M>iO-jp/Fa&.[K8PVLP*;,u
+R[p(FVP^N%\,Er;]`,P;]_fD=]]$Ku])B87]`,V?^APbF_#;%J_"#8<_Z.OO`;[aS`rF*Y`r=$S
+`r3pYaN=>%rQ,2bbKS2RrlkAdrm(5`rm1ksdaHUne^aWLs4;#5b/hH8^VIUr\\Pn[W2?5]T:VO<
+OckidLkUM9KS+u]XK/=tV5^&6FeGS3Z`':TN.?/$J6,cC@:i,QIu6or:O.DDNK9EpTUekQ:/Fkg
+<MH7cVi6UpO-Q'"S=?(@Str3[X0&P,YHRf,aT):%r/po?r0-fqr5efXp;m*NrLX%]s.K@bs.]Og
+rhTRj!2f^m!iW)tri5#Yp;-14rP/?Gs/Q*u.&a&AVPU)aUS=HUTV%gHS=?":R@'A.QBd`"PEM)k
+OH5H_NJrgSMi.Lj!f2VereCH,re1-#pk&?pre1<*re:K0Lku%eE/KR4N/`jYO-#KeP*;,qQ'Rc(
+R@9V8SXuIHTq\<XV5C/hWN*#$Xfnt6ZEppH[^`lZ]=bkm^qmn*`Pom=ai_fNcHaeadaQ^rf%8R-
+g=tE=hV[8MioB(\k2tjjl07L!m-O--n*fc9nac8BoCW%Ts7ZKerqQKgs8)Wirqu]mo)=4?WW.J~>
+JcC<$JcFO*o`"gfrqu]krqZWjrV.l:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=b-1
+e^W'qd*DWW#ah$JR[fn=StGbMpn@_\rh'.+r+u@JrbVUMrbV"<s(qUMrfd>Gq3CcAs-3\PQ'I[3
+NrP1=Nr"h$NrP+=N!kQ$M2@%ELPCS=Kn]Ilr'M>iF*Cqu?t!SZC2@g0F*)SOI=?a!K8,5@O8P+=
+O8b16O84n;OoCO=On"P4O8k7:O7JD1Oo:I@Oo1CAPPp[=PPLI=Q26dHQhm$JQi<?PQhm*KRJrTN
+RJiNQRJrZSS,SrTSc>8`SXuFFqk!h[s.K=as.KCc#G%?NQ'7AoOoC>IMhQY0I<^$]F`VP?Ch[Km
+A7K+Y@tTDcJ:;ilG\CT6I=ZusFDbi&>@(Z&5s@n85uqB+6UsXQ@V':jEHHJN7n6$<9heB1I"$Q]
+D/O94F*2\NH$XdbIXcp#JqJ]/qM"mirlY5`!6kGes3CVirQtJis3^nrrm^turn%2&#MIkdgtgfC
+hYuF4hu_lsiqdNiDu=PSR.?U;QM-[FQMmETTDtS`U&UkeU].(hV#[CkVZNfrWW&pXs7VTJOSt=@
+P5LIBOT2?\W@4^CVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o%P`q8nOcYWbNfB!VMi3JlM#rKgL]3&.
+L&Qc%KD:&pKDpQ(L&Qf.LPUccM/\?1N/WaVO,oBbP*2#nQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2Zet
+Xf\e2Z*L^C[^N]V]">Vh^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjlY^gkiq?s
+lg4!*mdKW6naZ2@oCMVRp&Facp\sseq>^<gqu6NkrUTr=s/H$K~>
+JcC<$JcFO*o`"gfrqu]krqZWjrV/#>p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=b-1
+e^W'qd*>E_:f-sbr)3JjqbdGl;#O8j;#3?Q54_#655RM@55n@T:AdoZ:t8P@;u0Al;>iiZ6Pi-S
+5s%.j4?Ynl5<_=u6UX=0779[:8P8qTqb@#_s%NJeqb?u`q+pZYi(ruA!Du\m;?'Ji:]=/o:JOVY
+:/:=TmSNm[r_W;cr_i_lpJLrgrDWVlr_req!)rShs&8kqrDiku%8p&":eaYX9M%`A6UF*<4r6=C
+4#]2[3B8oR1bpd?1I4>m5Wq4j3C*O-5<Ltc2D[!9/h7q`-R:#k/i#@<2E!?K2`Wua5XRjs3]K,\
+4ZuG391V945sdq*6UF117S--A8PD]L9MJ2V;#F,hC&2TECB89irbqdTrc.pXrcA'\r,r!^s*"Nh
+H@#L9s*Xips*juun3,T,rDWZds.B=arh9@ds.fRhs.o^mrMK^qWN#lsrODp>rjrEH]=Y_h]tV2Y
+^&u-a^VBcas2"cRr`9&!!*9)!s&AMepJh0ms/@EFVl-DgUnjc[TqS-OSt2C@S!ob4R$X,(Q'@Jq
+P*(ieO,f3YN/NUOreU]4LPPk`s+UH*qLeQpqLed#s+UH,!f)SfreYTOMi<USNfT6_OcklkPa.N"
+Q^F20S"-%@T:hmPUSO``Vl6SpX0&M-Yd(L?['mEQ\[oDc^;%J"_Sa@3a2lBFbKS8Wd*^:jeCE.%
+f\,!5gtgiEi8N\Uj5oFckNM0plKdg'mI'H3nF?&>o(2JFrq6<bs7cNfrqZTjqtpBjr;H3cJcD_L
+J,~>
+JcC<$JcFO*oD\afrVZTjs8)ckrqQNf!;?Eb2tZ_4o'u8>n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0rdEfqWb08,VdaZk$g>1WChV[5Khu;R1iVh[7hscL#MYr>2M#)u+MZ&J4N;gTo_8=+h`;[aP
+`qm^Y`l5p+\)Fdg[gKROZa@*DZELI7Xo>@$WW#6^6iTOmNg+I$FEVtXItro?O->clR@9\=Tr+cl
+ZF@IE]`,P;]_]>=]]$Ku])B87]`,SE^AYhG^APbF_#;%J_"#8<_Z.ON`;[aT`W4'X`r=$S`r3pY
+aN=>%rlP2_"3\p3bPo`bc2Q#_ci)5jd2^T`e(*""f%&0ja2>[,_7mOk^V$\HV4jQSSsYlDOAh0t
+Lk^V9K7^5+X/W"lW1SK^S=ZgeVjW]iJ9Z!G?UeF5F\6\&Ll=r&:O.JFNK9EqTUntS:/Fnh;08M.
+V2^IpOHl*!S"#t?St`'XX0&P,YHRf,`rH"!r/po?s-*&rqoJZVpW39Qs.0.\s.B=arh9@d!2KLg
+!i;ckrhodp!3,psjT"nhn%ek9rkAE4.B08DVl$>fUnaZXTqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWb
+NfK*XN/NSmM>rA3L])u-L&Zi&KD0uoKE$W)L&HaFLPUbCM2I1KN/WaVO,oBbP*2#nQ'I]'R$jD4
+S=Q7DTV8*TUnsueW2cl!Xfek3Z*UdE[^WcW]"G\i^VI\&`5Ta:aN;WKc-FY^dF-Lne^rF*g=k<;
+h;7)JiSrnYjlY^gkiq?slg4!*mdKW6nc&(\oCV\Sp&F^cp\jmeq>U6fqu6NlrUTr=s/H$K~>
+JcC<$JcFO*oD\afrVZTjs8)ckrqQNf!;?Eb,kU^!o'u8>n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0rdEhcX#ah$KS"-%?StGbMqk<t]!2&t%nnd`0rbVRtrfm2Cqj.&Coo9$3qMtE5mZ%=-N;e_=
+M2I+FLPGe^!/1><r'UKP)f^"+?X[ARAnc("Df^#BG'SLbJUrH-M2RFVOT(=?Nq\V2OSt=AP5(1;
+O8t@9OT(=?Nqnb.OSk7>P5LI?P5^[DP51=9PkgUAQN!6IQ2m9NQiNKLR/`TQR/<<NR/WNQRf8fU
+SGSi\St2FDStGkN!hZ-YrLn&#Ssu(4P*2#jO,]-VKReQ"G^4LTFDu/8C1h-gA7B"VKS+l,I=-Ed
+B4Q=9JUi)hDI6gU<),tG85*/O<aTHQ5t=CN@V'=lEHHJN7n-!<9h\,bI!pH\DJa<3EclSMH$Xda
+IXZj"JqJ]/qM"pirlP/^rlb>cs3:Pgrm1Sj#LUoFdF$Cje,IkseH4=RfDaD/g=tB;h;-rEhr"Fk
+!TE&5D?"MODuH'pQh6U<QiEWUT)YG_T`1YbU&^teU]RBiVZ*LnVuWgqWoX3QOnFh7Oo1CAOoLOC
+W[XpGVl-DhV50l\TqS-OSt;LCS"#k7R$X,(Q'@JqP*(ieO,f6[N/W[Pre^Z2!/LN-s+UK+qLeNo
+qLeg$s+UE+E/07*M2@+IMi<USNfT6_OcklkPa.N#R$a;1S"-%@T:hmPUSO`aVl6VqXKAY/Yd(O@
+[C3QS\[oGd^;%J"_SjF5a2lBGbK\>Yd*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3
+nF?MK!qZ'Vrq6<b!;HHes7uZjqtpBjrVc<dJcD_LJ,~>
+JcC<$JcFO*oD\afrVZTjs8)ckrqQNf!;?Eb,kU^!o'u8>n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0rdEhefs%rMgr)3JjqbdSp:f("d;"QpL55.;A56!kA56!eG4T7MC:]!oa:\@Qa:]45D<;]Yq
+;H*NlrDEP\r'UKP)*U8H3]fGe5!;"k5!VG$6q'L46q0[<8k_qV:&Rc\:&Ic^:\IQ@:\7K];?'Ji
+:]=/o:JOVY:/:=ToM>N`r)!Air_W;cs&&hor_WAerDNSmrDNVnr`&nrp/1lhr)=&(;c-Ce:JFMW
+91h_R6N]Y>5!Am-s#;nq3&roT1GppC1I=Am5<_4k3C#em5<h:l3ArfJ.Oc\h,:"Nh0.nt;3A<?J
+1c73P4?c"t6TG'*$pHa85tajB5X@V$6UUi@!_,UMr^[2d8PDfP:&Rof:]>&*C&ViLCM[j*rGV^T
+rc.mWs)\0]s)e<`rcS6arc\KjH?spard4Zm"FY`IIXglNgJn/Ns.0.\s.B=arh9@d!2KLg!i;ck
+rhodp!3,pss1/0>!4i'>s1A9Cs1S9Cs1eWNrkeY8qc3VpnPf0]s/INIW2HPjVPU)`U7n9RT:VXF
+S=?":R@'>,Q'IStP*1rhO,o<]NJrgSMZ/J4L]E5/LAuu-K_g>qK)1-"K`?c)L2_p(Ll$tGMMmFP
+NK0'\OHG]hPE_>tQ^F/.R[]h<StD[LU8+N\Vl-JnWiW>*YHY:<ZaI6N\@K2`]Y;.r_8=.0`lH0B
+bKJ/Ucd:(fe'uq"f@\g2gYL]Bi8ESRj5f=ak3(sml0@U$m-X60n*olHncJFTo`"O`p&Ojcq#C0h
+qYU0hr;HTbrdk*Ks*t~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nfI>jn*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f$r3tdJh5rb0/&TdaQe#gYCZDhu2L5iW%g:iSsdoro!!s!/g]2r.t<.r/1H2!5JNK!l;akrl"fT
+rPnWQs2G,Z`5DJ]rjMR/pU:%.oX4b-rj3!;Z*:I9XfSY*X8YH`6iBC]P*p<3FE`%YJVT,BO8b=L
+R@Be?U8=ln[(-+Js1A$<q7Z^=iOertr4D[8rk/<GoY:FArP/BJn\P+>s24`Prl+]Qrl=fRrPnoZ
+qo\o[s2kGebfe3/bl>rdcM,Zad/MGmdg"=Pd`onQ_#D+K]OSI`]re3.TqS*MR?s%uOH><SKSG&0
+JZl,SX/2SiUjdTZT!5]$R?D]IRW)nH7q$[:C3G&_:/FbbH@U^-Ng#p#TUenR:/P"j;-fljVN$Ut
+Ng,fsS"$"@SYE!XW3!,'YHRc+`W#q#rK-r>r0$WmprNBTp;m9Ss.'+[rgs.^!20=bs.TLgrM0Lk
+VPa?j!iW)tri6"!jo>%jm_Jb8s1U%bWiE%sVl-DgUnjc[TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ie
+O,f3YN/NUOreU]4LPPk`s+UK+qLeKnqLeg$s+UH,s+^T1reUZ5MuJZDNK0'\OHG]hPEhE!Q^F//
+S"#q>StD^MU84T^Vl-MoX/rG+YctF>['d?O\[f>b]tV7s_SX71`lQ6DbKS5Vcd:(feC<($f@em3
+gtgfDi8ESSj5f=ak32'olKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0iqYU0gr;HTbrdk*Ls*t~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nfI>jn*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f$r3tdJT=:R$jD4S=H1CTD"rVU&UkdT`/a)D"ql=D"qfGD#.rGPQ$gBQ2R$AQ2$C<N<#":NV\\7
+O78/4NJrdSMZ/G9Lkg\=Kn]Lmr'UEN(j(%0?X[ASAnc%!DfTrBGBnXeJqA]2M2hIps,Qi7q2kQ;
+!0[/?qiLi=plPK9r/UZ8oT9!5rK@)@qi^uCrK@2EnW`j7qj.5JqN_,Jrg3\PoU,NDrg<\QrgNhU
+s.&qV!1s1\s.04_qk!e[DP<\lR?s2%OHGTbN/WXIIt)ijH$4=NE,KK,BP;!f@q&i!Jq8E"I!g3Q
+AU8ZTKR7fX?YOIX9h%3;=[Q(h@:r#!7R^]o@qok!EccSM84Q0>9he2UI!gBYDJa92EHQJKG^=X_
+IsuluJV/T.q1SghrlG&[s2t;`!mJp6rm(Mhrm1_od*Vd>#L_)MeC<%!f)F;$fE9g]gYDeas5*e5
+rnmh9DYS)HDZ?(#R.Zg;QMHmISH#/ZT)YD_T`1YbU&^teU]RBiVZ*IpW2ZcqWrK-]s7VTIOT(C<
+OtMlYX/`2!W2HPjV50o^U7n9RT:VXFS=>t8R$a5+Q'IStP*1rhO,o<\N/W[QMZ/G6LkgcbLAuu-
+K_g>pK)1-"K`?c*LB!#/M#N53MMqIm@?$;.O-#KeP*;/rQC!u+R[]e:St;RJTq\?YVPg>kWiN5'
+Y->.9Za@-K\%0&]]Y2%o^r!t,`Q$!?b0/#RcHjkbdaZdtf@S^0g>(N?hr*GOj5]4^k2tmll0@U$
+m-X6?mfDqJrpg-^o^r.U!quB_rV6Egs8)WirVZWmo)=4?WrIS~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf[Jln*f]3m-Es$l0%3kjQ#7Yi8<AHgY1?4
+f$r3td8!I9:BXKk;,U<j;>X8i;>a;l;>sAl;=$IE55RSE4p!l24nq5@4o[YC:]!ob:\IWa:]F8Z
+;tj8i;tEud;u9Jm;>ro[6iBCj4[D.l4$5Yj4$,Si5X@_)7RKX57S$-D9MGF[s%N/]rD*>f!)WSh
+p.jL@oMGH_s%rPfs%ikp:/+GX:@V-Q;#a>g;#aDl:]aKl;Y<oe;#!od;Z0Pn;Z0Pn<<#nj;Z0Qi
+;Gg:f:J=GT8kMWB6UF('5X%=o4#]/X2`NWP1c7'G1.+;m5X%:k3Bo\l4[2(j3ArcQ1+=Oq,U4im
+.k`\<0Jk[G1Gq'M4?Pem6q'$53?14E4?H208j>R,5XRn,6U=437nH9C8kM`M9h\@\;#a>kBE2]E
+B`;`EC'/9hDJoGlrc%jVrc8!ZrcA0`FT-F^G5ladGl2meHN8HlI/nch4o[Xt<<#nsSH#/ZT)YD_
+T`1YbU&^teU]RBiVZ*IpW2ZcqWrK.!\,a):])TDB]E5d\^AbhG^]2(O_SO(*r`8ttrD`;cpJ`]E
+WiE%sVl-DgUnjc[TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NUOreU]4LPPk`s+UK+qLeKn
+qLeg$s+UH,s+^T1reUZ5MuJZDNK0'\OHG]hPEhE!Q^F//S"#q>StD^MU84T^Vl-MoX/rG+YctF>
+['d?O\[f>b]tV7s_SX71`lQ6DbKS5Vcd:(feC<($f@em3gtgfDi8ESSj5f=ak32'olKdg'mI'uB
+!V#XYncJFTo`"Lbp@n=[q#C0iqYU0gr;HTbrdk*Ls*t~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrV.f8p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Dg=b*0
+e^W$prQ,Gibg+Vae_&X3h;I8khuVfprSdb8ro*n8qhb?1k)&tk!f;ekqhkEgs1e]P_ScAkrl+lV
+s2P,Zq8WWX`Pf[2r4)U4!4M[1pU9n*qmQO4rj;[/s/lI)XK8E#6Ms4K6lV2QE,p#BG^FjjLPq4T
+P*;,tR\$1HVQ6o,\%D@HrOi3FrOr0BkI^c,rO_p;r4D[8rk/<GoY:FArP/BJn\P+>s24lT!5nfS
+rl+]Qrl=iSr5SiZans6[aoBN^bQ#fdc2>l^ci2;jd::PLaN)01^:h4m]XYPcXf/+iTq@gBQBI>k
+O,JdIL4k,,Jul#QW2-2cQ[<_HZFQp(O*$,FDhh,!@X1[`G_D&N:esr:Jr#AIQ("58SPW'U:KCCn
+;N.<FV2UCpOHc#uR@O8J"JDTfVlTg!s0):'_uBb"OT(CBOSY+/anNmRanNmVRf]+NSc55\T)bP`
+U&UheU].(hV#[ClVuN[qWW&ptWr]<(kPt+ho"b.;s1T\XWiE%sVl-DgUnjc[TqS-OSt2C@S!ob4
+R$X,(P`q8nOc]R'"ceS$N/NSmM>rA3L])u-L&Zi&KD'onKE$W)L&Qi,LB*/0M/\?1N/WaUNfT6_
+OckomQ'IZ%R$jD4S"6.BTV8'SUnjlcW2ZetXf\b1Yd1UB[C3TU]">Vg^V@V%_o0O6aN2NIbg"GZ
+dF$Fme^i@)g"P39h;7&IiSrnXjQ>Ufkiq?slg4!*mdKW6nF?)?oCMVRp&Facp\jmeq>^<gqu-Hk
+rUTr=s/Z0M~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrV.f8p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Dg=b*0
+e^W$pqj.SVR[Tb:SXuIGpRqJYs.TOfT_iO%D"MT<D#%lDD#KRsPk^ODQMZpIPkp[<Nq87tNrP+<
+N;e\6LBE6bKnTFlr'UBM)KL",?XR;PAS,XlDfBc=G'81[IY!'(LPUnJooJm0rfI2Dq2tQ9rf?l:
+rf?u;qiCB2r/pr@r/pl>s-*DEs-)u;q3CiCrg3JI!13\P!13;EqjIGNs-`hSrgNnXqOIVVrgj(\
+!2'+Z"e;!IQ'%4.O>i5ZN/<7?IscNdGB@nFDes0&B4b[a?smDpJUr<!H?s^G@=<f`H?F+5BQ$s\
+4%r:N6W7/uC.%tj.UZ^uCMe'5Fa8.#84H*D9h\/sI!gBYD/=*0EHQGJG^=X^IXZctJV/Q-q1\jg
+!6>&ZrlP/^rlY;crltGfrm1Mhrm:eqe'n<Grmq,$"5);[gA]n-h>c@3hZMfoi8FNNphfnpr0[2E
+nWs*>s-j([SXobOs.9:arh9@d!2KOhs.o^mrhodp!3,sts/Q1%Xlo`TOnFe9Onk1?OWpj+Wi;qp
+Vl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o$PEM)kOT(:ENfB!VMi.Ljs+gZ1rJ(?+s+L6$p4E-ns+LE+
+reCH.!/UW2E/KR4N/`gWO,oBbP*;,qQ'Rc(R@9V7SXuFGTqS6WUo(&gWN*#$Xfen4ZEppG[^`lZ
+]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--n*fc8nac8B
+oCW%Ts7ZKerV6Egs8)WirVZWmo)=4?X8d\~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrV.f8p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Dg=b*0
+e^W$pr_EGg"Ar&o;H!Eir)3Jjr)*Sn:f-sOlok>3r]^NL4ZtnirB:$ArD3;cqbR5g"&D`i;>sDi
+:B=9hk>V7Wq,@#e!)ren"&Vro;>ro[6i9=k4?knh3]]Ad5<V(j5X7V'6q'I27n6-C8P;`Np.bK\
+r_NPjrD3,^hbWl@r)*JjqG7,f"]%lf9hnIR:\R]a:BF?g:]=2i;?'Jl;YEud;#!oe;Z0Pn;Z9Vn
+<<#nj;Z9Mo:f%'b"\VH[7n#fE62j%X4?>M^2`<NN2Dm6H1,CZa5q,#^3]T2b5Wq=p4#o/W2)?m8
+)C-R\/h/P43&!9L1c%$N3]oSk6:=7%r](6K4$,Sp92%rBr]g]T6UX7,84Q2L8-V[Z92&#R:ARci
+BP2!lBDuTCC&ViLCMds,rGV^Trc.pXrc@sYrcS6a!dAm6r-J?hs*Xfo!.XT'fMqlLs-j([SXobO
+s.9:arh9@d!2KOhs.o^mrhodp!3,sts/Q1%Xo>g2]".dNs1A<D!kl7[rkAEIrkJZQ_GsT:rDiYm
+oMbK`,-.`DWMl_mVPU)aUS=HUTV%gHS=?":R@'A.QBd\uP*1rhrf75CNJrgSMZ/J4L]E5/LAuu-
+K_g>pK)1-"K`?c*LB!#/M#N6MMMmFPNK&sZO-#KePE_>tQC!u,R[]e;St;UKTqeEZVPgAlWiN8(
+Y->.9Za@-K\@K2_]Y2(p_8=+.`Q$!?b0/#RcHjnce'uq!f@\d1gYCWAhr*JQj5]4_k3(sml0@U$
+m-X60n*oi:o()DDo`"O`pAamcq#C0iqYU0gr;HTbrdk*Ms*t~>
+JcC<$JcFL)oD\afrVZTjs8)ckrqQNf!;?Eb+nYBso'u5<n*]T0m-Ep#ki_*ij5].Whqm2Eg=b-1
+e^W(GaU626c-Xngf@o!8hu;U7i;;L3iW.s2M>iD.M>iD#M>rA3M>W53^;'Z_!l;akrl"iUqo8HP
+s2G8^`5BI.\@DFH!4_s9r3lO2pU9b&&%&[KZ`pa>Y-+n.X/`3e6Ms4I6lVD/E,p#DH$t*nLl7:U
+PE_B#S=lOMV5LB![(6%Gr4N*ErOr0BqRZa?n%8S3rk&$<r4D[8rk/<GoY:FArP/BJn\P(=rPSWQ
+rl+ZPs2XuUr5\iY!6P,\rlG/_r6,)`!6tGeps8rd#LCK4_SEk!]DfBE\[]/MVk]rYT:D@9PE:ic
+MM?n<K7\](Y,eS&Vkg)`J9mfXWNi1cNcL/>RV,9.D0JWnIYg`q:j.5<LlII^R\-0H:eaY[<E)mq
+PG+bKN/j!ZOd23"S"'DK"JMZgVlTg!!3c4&_>aRuOc]="m`G.Cr5ncUrgWqXs.0.\#G7Z^TqS3T
+U].(hV#[ClVZNfrWW&n"X/rD)kPt%foYCC>s1SK6ri.QLW2HPjV50l\TqS-OSt;LCS!ob4R$X,(
+Q'@JqP*(ieO,f3YN/NUOM2@%EL])u-L&Zi'KCjclKE$W)L&Qi,LB*/0M/\?1N/WaVO,oBbP*2#n
+Q'IZ&R$jD4S=Q7DTV8*TUnsrdW2ZetXf\e2Z*L^C[^N]V]">Vh^VI\&_o9U8aN;TJbg+M\dF-Ln
+e^i@)g=k<;h;7&IiSrnYjlY^gkiq?slg4!*mdKW6naZ2@oCV\Sp&F^cp\jmdq>^<gqu6NkrU^#>
+s/Z0M~>
+JcC<$JcFL)oD\afrVZTjs8)ckrqQNf!;?Eb+nYBso'u5<n*]T0m-Ep#ki_*ij5].Whqm2Eg=b-1
+e^W(EQO&tIS"-">StDYKT`(PcU24Z@C\qrGD>nGJD>7rEC]8/JPQ$g;Q2d*DQ2Qd<Nq/2!NrP(J
+Mi<OPMMR%CKnY266:1T;qEu9F>[C`E@Uit^BkqX,F*2YMH[UBpJqSi5MN*YmO8"b/Oo(7=O8=t;
+O8P%8O7\P3Oo:I@Oo(=APPp[EPOXn4Q2HsIQi!*JQiEEQQh-UARJrQRRJ`NQS,&TTSGo)VSctXP
+Q^*_rrfA%YO,SmPK7SN"H$FRTEcGo2CM.3h@q&kT?\JE01k'k!H"^c9H[pWlF)5,tBRNW9;,gac
+='oT,84Hik@VBRrEH?DN7n?->78-EM9QPT/IVf"$&T;Z0F`r"SH?jjdIXcp"JqAXNK`K*k`W4'X
+aSs<\b5TQabl5iecMZ#gciDDkd/VJndf._qe,n1Of)F8'g"P07rnRP0s5*b4s5<lprbhRLpm:lF
+q3UQ9rg3VRs.'+[rgj@eTV/!PU8"F^V#R7kVZ*IpW2ZcqWWT<'XKC[cn<*I,rfR,As,d;^ri.QL
+W2HPjV50l\TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NUOM2@%EL])u-L&Zi'KCjclKE$W)
+L&Qi,LB*/0M/\?1N/WaVO,oBbP*2#nQ'IZ&R$jD4S=Q7DTV8*TUnsrdW2ZetXf\e2Z*L^C[^N]V
+]">Vh^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)g=k<;h;7&IiSrnYjlY^gkiq?slg4!*mdKW6naZ2@
+oCV\Sp&F^cp\jmdq>^<gqu6NkrU^#>s/Z0M~>
+JcC<$JcFL)oD\afrVZTjs8)ckrqQNf!;?Eb,4tKto'u5<n*]T0m-Ep#ki_*ij5].Whqm2Eg=b-1
+e^W&DrD*Ag!)WVlqGI2hrDEJjrB1!@r''@."[5(45!;(-4T.G@:]!o_:BF?i;>sDi:]F8k;?'VX
+;uBVb;Z]ir;uKVn;?&u\6i'1N55dME3BTGhr]L<I5skQ=#t@9P7n?3D92/1X:&Icc:]F8i:\IQ@
+:\7K];?'Jh:]F5p:JOVY:/:=Tpe^`]s%rSis&/Sgr)!/cr_i\ns&/bnr`&kqr_`_nr_a5':f'q`
+9MS5R84c3:6:(T9<BNE+4#o>\2`NTN2)@$F1bqEb5X@Os3]K>f5X.Fp4#o/V1b_!:)_*<l/MAk<
+0JtaC1H%9U4?c"t69$td3B98c4Zu>/9M7W95=%V&6UX:08Oc5L8-V[[92&#R:ARcbBE)WFBDlNC
+C&_oLCM[keDZ4SRE;jkWEWU6%F8L(YFoHOcG^4T4HN&6oI!pBkJ,MS+4oJ=5;ufkrS,]#YSc52c
+T:hjNTq\9VrhTRj!2fan!iW)tri-7)XK8P5\%&uZrOW$@s1JBFr4`3Gs1nZOs&K%ts&JempJ^fc
+!3?+!/ZG\HVl$;dUS=HUTV%gISXc1<R@'A.QBd`"PEM)kOH5H_NJrgSMi*@JLkpibLAuu-K_pDo
+K)1-"K`?c*LB!#/M#N6MMMmFPNK0'\OHG]hPE_>tQC+&-R[]h<StD[LU8+N\VPgAlWiN8(YHY:;
+Za@0L\@K2_]Y;.r_8=+/`Q-'Ab0/#ScHstee'uq!f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$m-X60
+n*ol;o()DEo`"O`p&Ojcq#:*hqYU0hr;?Nbrdk*Ms*t~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf72hn*fZ1m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r1HaoBKibg4\cf%Jg5hVe@k!93q8rSmX/qhb9/q2,!+mtq%$#JRsf^qmk(_u@UR`V[[Oa8a-_
+`Pf[2_8,uYqRQU8rO;X3!4DR0pU(.2[Bd$@riZL-XK8J(6Mj.G6le^aDK0]=GC"[cL5:bKOHbrq
+R%0b?Tq\E`X0K.Frk/0Bs1\HFrOi$>!5.d4rOi0BqRZU:p:UC<!5A*?s1nQI!5S-@qSN3KrknlW
+`5VMkrl=rVqoA`X!6P,\rlG/_r6,)`s3:Mfps3Koahtm*]=PYe]XbM_YGe=nTUqdFS!B5#O,]'P
+KnY).IsnDuWi2ekUSFEFHC^S&XeD,AEJ]Hl>ZaR>7r!:$ND">7H%1R*O-Q0)T3+l`9i"_e;I6&j
+V5903O-#NhQ'n/4rLO:iV5L8mXf\b0poqR6s,[;EOHB=$s2k2]oZ?^Gr5niWs-iqV!h>gPrgj@e
+TV/!PU8"F^U^*`nVPg>jW2]cr!irE(riPDamD8P4r4i9G/$#\MWMl_mVPU)aUS=HUTV%gHS=?":
+R@'A.QBd\uP*1rhO,o<\NJrgSMZ/G6LkgcbLAuu-K_pDmK):3#K`?c*L2_p(Ll$tGMMmFPNK0'\
+OHG]hPE_>tQ^F/.R[]h<StD[LU8+N\Vl-JnWiW>*YHY:<ZaI6N\@K2`]Y;.r_SX71`lH0BbKJ/U
+cd:(feC<%#f@em3gtgfDi8ESSj5f=ak3)!nlKdg'mI'E2n*olHncJFTo`"Lbp@n=[q#C0hqY^6h
+r;?Nbrdk*Ns*t~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf72hn*fZ1m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r1EQNESDS,Sr]StDXJT`1Y_T`(S[D#8#FD#8)HDYJ#CD#\;LPPpa;Q2QsBQ26R7NqA>%NX^u.
+Mi*CKMMd4FLPCLLqa:0I*CY-V?=.&KAS#LgCN"36F`r%VI=?]sK8#&:Mi<bsO7n\.Oo1==O8G%<
+O8P%8O7\P3Oo:I@Oo(=APPgRDPOXn4Q2HsIQi*0JQi<?PQhZpJQi<BLRJrQRRJ`NRRfJuTSc>5Y
+SHYUTS!]P*rfI,?B8h\*L4Fc&I!9g[F)l59CMINpA7K(W?snV<J:N)sH?sdUAU8ZOIX#jK?#!tT
+7RB=@4]5HnC-l$-?"%5XD/jZ@Gtpn#7R^!F92^.aI=?!MD/O?5EclPKG^=X]I"$NoJUrH*KD:0#
+`WX9#`lH.!aSj6[b5]Zbbl>oicHjh^rm(Vlci2;jd07tIe'upurmh8)f\"p4g]$".h>Q41hZ2U5
+D?+VSDZ+GPQM-[BR.ls;QN*EQRf]+NSc52cT:hjNTq\9VrhKdqVP^8hW2Q]pWWK6&XT#?cs6YsF
+OSb1?P5gXpX/`2!W2HPjV50o^U7n9RT:VUDS"#k7R$a5+Q'@JqP*(ieO,f3ZN/W[PreU]4LPPk`
+s+UK+qh+Hkqh+p%s+UH,E/07*M2@+IMi<USNfT6_OcklkPa.N#R$a;1S"-%@T:hmPUSO`aVl6Vq
+XKAY/Yd(O@[C3QS\[oGd^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h;-uHi8N_VjQ5OdkNV6r
+lg4!*mdBQ4nF?MK!qZ'Vrq-?dp\4X]s7uZjr;6Hjr;H6dJcDhOJ,~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf@8in*fZ1m-Es$ki_*ijQ#7Xi83;Fg=k32
+f$r/Er(d8f!)`\mqbd;irDEMkofW19!'^0@r]]X2s#g3TqbHu`s%r\lr_WMg!)WYlr`/ttoi(li
+oMbZeoMb`erDNer;,TaX6hs+N76pf4(-=ZB5!1tl5X@Y&770L46q9^;8P2TNrD!2b!`)Wgr_WPh
+pJ0UAoMGH_s%rPfs%i_l:B!rf:@V-W;"RN`;#=,h;Ya2e;#!od;YO,h<;ohq;Z9N::ej\W9M7rJ
+7n,j55X.Lu4$5Yf3BB)X3&EKK2)6pC1.2%+s#r"r3B9&_5<h=o3]JuU2)$R(*[iQh.PES>0JG4:
+2E!TY5!MD&2`NiY3BfJe55n1l8j5I*5XIe)6pj:384H*?84cEG92&#R:AIZcB)-*=B`2WIC27X&
+rbh[Qs)@sWs)J*Zrc/'^F*%>&rcJ?eGB\=Xrd+Tk!.+Wks*OirJ,MP/55dXo<<&EdRf]+NSc52c
+T:hjNTq\9VrhKdqVP^8hW2Q]pWWK6&XT#=(\%&rYrOW$@s1JBFr4`3G"i.sj_GjP(<;KPf<%G#L
+Wi;qpVl$;dUnaZXTqJ$LSXc1=R[KP1Q^3o$PEM)kOH5H_NK&mUMi.Lj!f2VereCH,s+L9%nq-ak
+s+LE+re>BILkpnEMMd=NN/`jYO-#KeP*;,qQ'[l*R@9V8SXuIHTq\<XV5L5iWiE/&Y-5(7Za7'J
+\%&u[]Y(tn^r!t,`Q#s>aihlPcHjkbdaZdsf@S^0g>(N?hr*GOj5]4^k2tjkl0@U$m-X6/n*fc9
+rpg-^o^r.U!quB_rV6EgrqcQirVZTloDX=@XT*e~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrV.f8p@e1Po^h\Fo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC2L[rQ,GibK\G_eCWI1hV[8iiW%p9iW%p2M#3&+MYi8-MXZK&MZ:Bj_#;(M_ScAks2FlTqT&WU
+"NA<t_nuDhqRHC4rj_d5o="D$$FI.GYHG"0X0&Bgqa:3JrC%0aE,fo>FF&@bKntYIOoCOQR$jP<
+TqJ3ZX0&_;]`#PC^AYbD]_oAA]^NK2]`5V?])926]`,SE^@]2?_#1qI_!o2;_YqCP`;d^U`5VMk
+rl=oUqo8`Yans6[ans9\bl>rdcMc(%cHOAL^q@:k]"GYb\%&cDVkTrZSt;=9QBRGlN/ECDK7JK%
+I]99EVl->bUmmU2NJ`V$[@`\BDkMc.='J4A9l,*0EcZ;FH@^m2O-c?/Ski*U:/t4l;kft^V2p^t
+OHl*!R@Ke<rgjCkV5L8mXf\b0pTV@2s,m8ArK7-$rlP)\ouZaFr5nrZ#ah$KR[]e:S=TYN#G7Z^
+TqS3TU].%iV5F6i#H4W$WiE,#XT#=%Y3GuN_>D%F^G<O)X/`2!W2HPjV50o^TqS-OSt;LCS!ob4
+R$X,(Q'@JqP*(ieO,f3YN/NRNM2@%EL]3&.L&Zi'KCOQkKDpN(L&HaALPUbCM2I4LN/WaVO,oBb
+P*2#nQ'Rc(R$sM6S=Z=ETqS3VUnsueWN*##Xfen4ZEppG[^WfX]=bhk^VI_(`5Ta;aND]Mc-FY_
+dF6Upf%8R-g=tE=hV[8LioB([jlYail07L!m-O--rpKmWnc&([oCW%Ts7ZKerV6Egs8)WirVZWm
+o)=4?XoEn~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrV.`6p@e1Po^h\Fo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC45["IPXIS=TYNs.B=arLs1_s.St!!,MIJqec4JoPOJAs-*;Ds-3SKpQb]ApQY`CplFs*p5S^)
+s,@;CM2@%ELPUXNqa:3JrC%]M>[CcE@:Ee]C27^,F*)MKH$ashJq8T0LP^qKooSm0r/gf:r/go=
+r/UZ8oT9!5rK@)@qi^uCr/q&Dn<Ea6qj.8Krg*GJrg3\Pq3_/Js-W\Org<SOs-s%Yr13eV"J)'O
+Q^.Q48</dmN/<IKJ:N,sH?aXVF)Yu5Ch[QoA7AtU?s\G8IsufoI!KmTDJX!"JqA2eCKu!m><t_B
+>=)7nA6)c7>[LrRCN"99H$K<X!(Hi[s*PZ3IV`k=DK0]>F`r"TH?jgbIXZctJV/Q,pOrUdr5ScW
+r5elZrlP5arlkDes3:YkcMPred/VJndf._qec+,%f@\a/rnIG-s4mn9h;7#GiSjNKr0I&Cr0[2E
+o9KZLR@9S6S"-">rgj@eTV/!PU8"F^U]I<hrhg""WMuntX/i?$XT5Ngs65[FOS=klXK/A$WMl_m
+VPU)aUS4BST:VXFS=>t8R$a5+Q'IStP*1rhO,o<\N/W[PMM[1GLkktas+UK+qh+Ejr.G!%!/:B+
+CPR_%M2@+JMi<USNfT6_OcklkPa.Q$R$a>3S"-(AT:qsQUnjibVl?\sXKAY0Yd1UB[C3QT\\#Mf
+^;%J#_o0O6aN2NIbg"GZdF$FmeCN7(g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mf)YUnF?MK!V>s_
+p&Facp\jmeq>^<gqu-HkrUTr=s/l<O~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrV.o;p@e1Po^h\Fo'u5<n*]T0lg!a!kN:pfj5T%Uhqd)Bg=Y$.
+eC.2h:/4O_:&n,e;Z0Jk;Z0Jm;XcgA4o7G94oRSB4o8%P:AR`d;#X>k;#F,h;#O8k<;ont<:s2e
+<:j)h<:j,h;ZBYt;H$FZqa:3JrC$cQ4$<L'!^&Y/r]L?J5sdp;6jZ:M7Ros?92&#Rr([;h:f70f
+rD32`hbWl@r)*JjqG7,f!DcJi9`RrX:]F8c:]4&g:B45g;>sJh;>sAn:Jam_;>jDe;uTbr;uTYn
+:]F''9M.oJ7R][05<qFt4$>_f3&iiU3&WYl1BB3sr]qqq5!(ec2E*NK1Hdc\3&NTN0.\+c-8$o%
+0fCX:0ekOE3''/c5XRmur]'sBr]L0Q"A1jD5=5<:"%,OJ7K,d_84cEH92&#R:A@W`B)Q?DBP1uV
+B`;]HC2Eldrbh^Rs)@gSs)S*[rcJ-^"*Sm4H2`*lH[:$brHeWoI=QkF4oIRn<!\kZR[T_8S=H/L
+Sd1m\TV8'RU8.^`!Mu[mV['0"WN)u!X/u<&"g5>E\@K0K])TDB]`5\C^Al"K_<Fqu;tj6GXK/A$
+WMl_mVPU)aUS4BST:VXFS=>t8R$a5+Q'IStP*1rhO,o<\N/W[PMM[1GLkktas+UK+qh+Ejr.G!%
+!/:B+CPR_%M2@+JMi<USNfT6_OcklkPa.Q$R$a>3S"-(AT:qsQUnjibVl?\sXKAY0Yd1UB[C3QT
+\\#Mf^;%J#_o0O6aN2NIbg"GZdF$FmeCN7(g"P39h;7&Ii8WeWjQ5Oekiq?slg4!*mf)YUnF?MK
+!V>s_p&Facp\jmeq>^<gqu-HkrUTr=s/l<O~>
+JcC<$JcFF'o`"jgrVZTjs8)ckrqIf6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$gj5]+Vhqd,Cg=b*/
+eGRAsai_fMbg4\ce_/a6hr+IlrSmh8s+pQ/qhY-+q25--pknj'rJ1T5^;%J!rkSWP_u@UR`V[[P
+a8X'[`Pf[n_Z%CM\cB;>\Gs)>])B2=\Fm?'[f3ZB['d<JZE^X;X/rD'r'U9JrC%etPF?K0F)uGL
+I=R!+N/Wg\P*D6!R[p(EU8=chYdM(?^AYbD]`#GB]^NK2]`5V?])926]`,SE^@]2>_#;"J_"#8;
+_YM(P`5T^8`V[[Sa8<mR`ra?(ans3^ai_d'bQ#fdc2>ijbK.fB^qBZXA\#=][CE98Tqe6PSXGn3
+Q]dMmN/E=CJUr8tI&a*AVPKoZU3Vr`N/NIEJq&2pG&qS8F&-I\I;<Y9E,fuCNdZP:Nffd#TU\hO
+9hn_f;LY=7VPfE6Od)-"R@Kh=StD^QV5L?mXT>T.p9;1/!g&P,rK.&A!li:$rlG,]qo\ZTnAtOL
+"j!'uR@9TDRfT%Mrgj^oTV/!PU8+KZUnsrcVl-JlWW&muX/u<&s/l@*lMp(ar4r0D!3?+!,,qN=
+VPU)aUS=HUTV%gHS=?":R@'A-Q'IStP*1rhO,o<\repl9MZ/G5Lkkq`!/:E*r.Fp!qLSQrr.G!%
+!/:B+#)A"jM2@+JretWPNfT6_OcklkQ'IZ%R$jD4S"6.BTV8'SUnjlcW2ZetXf\b1Yd1UB[^N]V
+]">Vg^V@V%_o9U8aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjlY^gkiq?slg4!*mdKW6naZ2@
+oCMVRp&Facp\jmeq>^<gqu-HkrUTr=s/uBP~>
+JcC<$JcFF'o`"jgrVZTjs8)ckrqIl8p@e1Po^qbGo'u5<n*]T0m-<j"kiV$gj5]+Vhqd,Cg=b*/
+e<ZErQO9.LS"-%@StDXJT_kG^T^?RoD?"GLD>8#DD>\2MPP178Q2HmEPlR-LQ2[$@O7&&(NW5%<
+O8b.ENK0$YN/NRMrJ1;<q*b0M*_(3p>[:]E@:<\ZBkhO)EcZ;GGC"XbIt<6*KntYHp5o'3rK-f8
+rfI,?r/UZ8oT9!5rK@)@qi^rBrK7/EnW`g6qj.5J!1*JJrg3\PqO%5Jrg<SN!goCDqjISUS=KMJ
+FI\efR$<brOH5KaNJiUMKRnT"H[0gYFE2A=D/<p!ARo4X?XI)hJ:E#rH['gIE,B?(B4PFY?<^K3
+<)cp\:/,%m;H-Xs=BTNL@VBRqF*;eP84H$99he;nI!gBmCi4-1EHQDIG^4U]H[U<lJUrH+JqWiO
+s2FlTs2Y&YrQ,8dbKJ/Sbg$%1r6PAhrmC_o!n>cNrmh/&g"HAZrnRP0#N":mhV[5LD>A&NPa.O3
+QM-[ER.H[<QN*<RR@9TDRfT%Mrgj^oTV/!PU8+KZUnsrcVl-JlWW&muX/u<&s/l@*lMp%0!0Hr;
+!3?+!,,qN=VPU)aUS=HUTV%gHS=?":R@'A-Q'IStP*1rhO,o<\repl9MZ/G5Lkkq`!/:E*r.Fp!
+qLSQrr.G!%!/:B+#)A"jM2@+JretWPNfT6_OcklkQ'IZ%R$jD4S"6.BTV8'SUnjlcW2ZetXf\b1
+Yd1UB[^N]V]">Vg^V@V%_o9U8aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjlY^gkiq?slg4!*
+mdKW6naZ2@oCMVRp&Facp\jmeq>^<gqu-HkrUTr=s/uBP~>
+JcC<$JcFF'o`"jgrVZTjs8)ckrqIf6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$gj5]+Vhqd,Cg=b*/
+eG`8D:B!uf:&n,f;Z0Ji;Z9P\4S:l4557;?497N+qbR)a!`)WhrD*DirDEPjrD3Giqbd,foi(Ta
+pJ_&jqbmPq;cEQkr'U9JrC%;f5!M(i3BT>b5!1nh4[21t62j4X779L77Rp'C92>I^!`2`krD<Gg
+q+fgCoMGH_s%rPfr_NSir_3AfnPB-\peUc^!DcPh;>sJh;?'Jm:]=2d;>jDe;^#+=;,L.b:J=DR
+91_]E770=)5sIRr4$5Ma3B8uV2`<NMrA+a66U3k#5!:tf5lNVD1GUU:1&`a3/1WA%)C-X_.k<4N
+/.40t1cRNX4$Gu"75t3+*BlSK6q^3I83T7(6:4./6UjR884H-@8k_iL9h\:\:AIZcAc-0=BE)ZF
+BDuTDB`VsbrbV^SDf5Mls)@pVs)8$ZEcV,"s)e6_!dAm6rd+Ni#C:`CH[C0jJGMG/4oeO1<<&<e
+R@9TDRfT%Mrgj^oTV/!PU8+KZUnsrcVl-JlWW&muX/u<&s/lL.\@B)[rOW$@s1JBFrkAEIrkJNM
+k>VF[pJ_-nri.0AW2HMhUnjc[TqS-OSt2C@S!ob4R$O#&P`q8nOcYWbNfF$s!K2j7M#iEfrIt<+
+re13%r.=crr.=j!re(9*rItN3LkpnEMMqImCQ4@8O-#KeP*;/rQC!u,R[]e;St;UKTqeEZVPgAl
+WiN8(Y->.9Za@0L\@K2_]Y2(p_8=+/`Q-'Ab0/#ScHstee'uq!f@\d1gYCWAhr*JQj5]7`k3(sm
+l0@U$m-X60n*ol;o()DDo`"O`pAamcq#C0iqYU0gr;HTbrdk*Ps*t~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb+8#0qo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+ebdDsai_fMc-b"hfA#*<hr+Ilro*q:qhb<0q2#*-qhb')re^9)qMG3d!5SQL"2_so`;[aR`qmaT
+`rF$W_u[cmrk\NDqmc^:pUL:6rO;a8rjVI,$+7.HZ*LU:Y,nf(6hs.K7K5h#8!KN`DfTuDH@10m
+Ko(bIOH>ZkQC4;9TqJ6ZVld22\%_gSr4N$@!5/->s1J0>rOi0BqRZU:ot:=<!5A*?rkSKI!5S3B
+pqljE!lW'rrl+fTrl=rVqT&TWqoSu^b0'V)rQKB,aN)66^Uq+h\@B#V[^<9<VPBlZSt279QB@Al
+O,/XHKReMuH[MfiV50l\T:U:LS[#i*K7A;sG'._?BjshKBPV?uCi=63;GN:&L5M"VS"-*\:eOMX
+<`;nQTqeKFO-#NiQ'n/2St)CDV5:&hXf\b0oWYn+"-J\,Oo:C@`<+'"a8X0Zao'<Vam[=LaT.\,
+QiWVDrgOIhSXl@DT:hjNTq\<WUnjiarhg""WMuntX/rE%XTGZ/Yj;>P_>V1G^FQCdWiE%sVl-Dg
+Unjc[TqJ$LSt2C@R[KP1Q^3o%P`q8nOcYWbNfB!VMi.Lj!f2VereCH,s+L<&r.=`qr.=j!s+LE+
+reCH.!/UW2!K)g7N+J!/O,oBbP*;,qQ'Rc(R@9V8SXuFGTq\<XV5C/hWN*#$Xfnt6ZEppH[^`lZ
+]Y(tn^qmn*`Pom=aihlPcHjkbdaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl0@U$m-X3.n*fc9rpg-^
+o^r.U!quB_rV6EgrqcNhrqu]mo)=4?YQ'+~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb+nYBso'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+eWuNsQOB1KS"#t?T:V[ITV24V!20:-s(q[Onndr8oPXMBop#H@s-EYL!g]+:rfm>Grg*PKrfll4
+pl><6rf6`4r/V/ENJrdRMM[1GM>Ta:7/]RS7Nb3BG["BZ@:<VTAnYprDK9f>Fa&(WI=?a!KS>2<
+MN*\nOT1FCP5LI@OS=h9OT1C=Nr+n0OSk7>P5LI>P5^[DOoU^;PkLC>QM-[EQiNKMR/E<MR/<9Q
+R$jB>RfAlWS7S1VR$Nu!OHGTaNK/sSLkgP2IX?BcG'%bDDf'<+Bk:jc@:<ML?@RKSIXHKdG%G00
+K8P(e@:!/@=&r3p9gVTO:esqe<*!$k7W)[GBl.d0G'HtW7R]^>9h]>MI",sKDJsT:rc\<d$$giF
+IXcp"K7\aJL&T'j`W4'Y`W4'Ya8j?]aSs9`b0.uPrlkMic-?75rm(Vlci)5idf._pe-4FTf@em3
+rnIG-s5!Y1!T2i7D$4`nD/O7jP6-u6Q2?m@QN3EDQhZjHQi<?QR@=,E&=f;^St;RITV8'RUSFW\
+V5F6i#H4W$WiE,$XT#='Y-5(qs4i_eXK/A$WMl_mVPU)aUS=HTT:VXFS=>t8R$a5+Q'IStP*1rh
+O,o<\N/W[PreU]4LPPk`s+UK+r.Fp!q18Hqr.G$&s+UH,s+^T1reUZ5MuJZHNK0'\OHG]iPa.N"
+Q^F20S"-%@StMdOUSO``Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J"_Sa@3a2lBGbK\>Yd*^:jeCE1&
+f\5'6h;-rGi8N\UjQ5OdkNM0qlg4!*mI'H3nF?MK!qZ'Vrq-?dp\4X]s7uZjqtpBjr;H3cJcDqR
+J,~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb+8#0qo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg=b*0
+ebr;D:Amlf:Jq'g!E2np;>a;l;>rZV4T7M74RbN/55dYD49/4T:]4#g:]=2h:B45i;>sDj:]=2j
+;#jMn;>sSq<;ohr<:Wuf<;fhr<;0>f<;BJj6hs.K7K5g\7m91"4?EF(s#^?G3^*I,!^]7Br^HfV
+#"VB\9MSA\rD<DfqbH!DoMGE^!)WMfr_NSir_3Afo2#6[q+pi^!DcPi;>sJi;?'Jl:]=2d;>jDi
+;\`2-:f'q_:/";S8P)HC7R][/5sR\"r]C->#rXXu2`<QO1c$uf1(HZ:5<_4m3]TDi5X@Rr0`<R,
+.kE5$.P(KJ&Lf1[/1rJ42*NiU3]fJh6UWm33=7r34[i";90Y[,6N'7\6qBd;7n?3D91hfM9hkL[
+qbR3&r+>k>s(DCFrb2=G#\n-kD/F0.Df5Mls)A!Xs)A!V"`\R'F)uC#Es-W/GBeE3H38M?H[>[<
+s*OisJGDA-;?0YG;ui9aQiWVDrgOIhSXl@DT:hjNTq\<WUnjiarhg""WMuntX/rE%XTkr3Ydh3R
+\c',>]DfJC^&PhG^]2+)<%G&NWiE%sVl-DgUnjc[TqJ$LSt2C@R[KP1Q^3o%P`q8nOcYWbNfB!V
+Mi.Lj!f2VereCH,s+L<&r.=`qr.=j!s+LE+reCH.!/UW2!K)g7N+J!/O,oBbP*;,qQ'Rc(R@9V8
+SXuFGTq\<XV5C/hWN*#$Xfnt6ZEppH[^`lZ]Y(tn^qmn*`Pom=aihlPcHjkbdaQ^rf@S[/g=tH>
+hVd>NioB+]k2tjjl0@U$m-X3.n*fc9rpg-^o^r.U!quB_rV6EgrqcNhrqu]mo)=4?YQ'+~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf.,gn*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+aiXG$$HgQ8bg4_ee_&[6ro!h8"6/;!iqSB-MY)c!M?&M%MZ1Bj_#D.N_ScAkrl+lVprEES#04a&
+`Pf^4r5&EFr4;d9rj_d7rO;j:q7-F5q6g:2rj)U1ricI*Y,qRhq*b3Nr^QlW+dJR8E-$,EH?ssi
+K8#5CO-5TeQ'du2TVJ6XVPpPtZaI@A]`,MC]_T2=]_]8=]`5V?])923]E,^[otULArP&?Jo>14=
+q8<3Mrl+cSs2Y)XqSrTWrlOrXqoa0'`l,[-]Xk\b[^WcU\$EEAWM?2[T:D:8Q'7AmOGo$PKn"T"
+H[:":VPBr]Tq.ZrF.8l.[]#aZG*8PWQtes*A:/BBFao4,>Yn4WIY!<6OI)H0T2/9W9ib7m;0\e0
+VN$UsOd)0!R[fq>T:r-ZW2m&&Y-7K%\,ZAgs,d9#rPefVs2Y/\rlP&[qoS3G!m-aprg4(]R[T_8
+S=Q4BStD\TT`Lm_rhKpuVPg>jW2ZesX/i?$XTYf1YHY7ts6mf(_#(tE_#;#%XK/A$WMl_lV50o^
+U7n9RSt;LCS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRNM2@%EL]3&.L&Zi(KDgDqJc12uKE$W)L&Qi,
+LB*/0M.MR&N/WaVO,oBbP*2#nQ'IZ&R$jD4S=Q7DTV8*TUnsueW2cl!Xfek3Z*UdE[^WcW]"G_j
+^VI_'`5Ta:aN;WKc-FY^dF-Oof%8O,g=tE=hV[8LioB([jlYail07L!m-O--rpKmWnc&([oCW"S
+!quB_rV6EgrqcQirVZTloDX=@YQ'+~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nepuen*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+rKd8G"IPXISXo\Ns.K=a!,V7DoPF2;mr%c^!1!AG!L8oHQ2R$JQ2[$JQ._2pNW5"ANJrjVMuJS8
+Ll$rd6hs.L7K,dU7j2qu>?tQB@:<VWB4u'uE,p&CFa/1ZIXcp#KS>/9LPq+PrfHu=rK-`6!g&J(
+qi:Q7oT8s4rf[2Aqi^rBrK7/Eo9As6qj-oAs-NeQr0[AJrg<JKr0deYR@'8)P5^P\NfT-YMi*@I
+KRnT!G^4OVFE2;=ChdZsARo=[?<plBIsufnH[9pYA7Bh3JqSMoD.%7)B6d<3;GC@t?<:NHBhV)h
+DI?peCMe'4H$VqN7R]sD9hJiAI"-!KCi=<6FEVnSH$XgcIXZj!K7\dKL&]*j`VmgVa8a0UaT'B^
+aoKZ]c2Q#fcNV\Acd:%drR1_ps3q)"f)F8&g"P0Zg]-(.h#uTjhVR/dD>TOsPlI$HQKFP0Q2m9N
+Qj]=NR[]e:SXl@DT:l1W!MZ@gU^O#rVl-JlWN)u!X/u<&"Knr3Yd!KoglX:lX/`2!W2HMhUnjc[
+TqS-NSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!VMi*CKM26tCreCH,s+L<&rIX`orIXs"s+LE+reCH.
+!/UW2AVuD)N/`jYO-#KeP*;,qQ'Rf)R@9V8SXuIHTq\<XV5L5iWiE/&Y-5(7Za7'J\%&u[]Y2%o
+^r!t,`Q#s>aihlPcHjkbdaZdtf@S^0gYCWAhr*GPj5]4^k3(sml0@U$m-X6?mfDqJrpg*]o_nFa
+p@n=[q#C0hqY^6hr;?Nbrdk*Qs*t~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nf72hn*]T0m-Es$ki_*ijQ#7Xi83;Fg=b-1
+;,L0h:]F2h9`\!brDNYo!)i_lr_iPR!'L-AoK;J'pce^Sr(m>frD3Dh!)NSjr)*Gis%iSi!`;in
+r)*Jpr`/ttlVdd_qGmMoqc!>jqc!G\q*b3Nr^QlW!^8k2r]19G4?Yeg5!(h)5Q=%Z6UaL67nH3@
+7S?BK9MPC[qbH!Dnkf9^!)WMfr_NSjr_3Afo2#6[q+pi^!DcPh;?'Pj;#jGk:]=2d;>jDm;]J\3
+:JOY\9hJ#N84uNF7R]a15sRUq4?GVb3&`hr2-2[n1c$mD1bpjQ5<_7o4ZYSg5<_:r4?GM[3&`]K
+2^KCj-8%&1/i#@G1c@6V1c@<S4?c"t6Spha3Bo\g4?uP590YX)5XRk*6UjR87n-'A8k_lN9MP.S
+qdo\;rFZ1FB4q0Vs(VXPD/O4gD?=`oDuO\ZEH#l8DfPbs$Zg?/F)uGGG'8(SH2MsoH$Xd`H[L6j
+J,2>*;ZB\J;ur;Org4(]R[T_8S=Q4BStD\TT`Lm_rhKpuVPg>jW2ZesX/i?$XTu#4YHY7@\[hXL
+s1A<D!58?Fs1eTJgf,u/X/`2!W2HMhUnjc[TqS-NSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!VMi*CK
+M26tCreCH,s+L<&rIX`orIXs"s+LE+reCH.!/UW2AVuD)N/`jYO-#KeP*;,qQ'Rf)R@9V8SXuIH
+Tq\<XV5L5iWiE/&Y-5(7Za7'J\%&u[]Y2%o^r!t,`Q#s>aihlPcHjkbdaZdtf@S^0gYCWAhr*GP
+j5]4^k3(sml0@U$m-X6?mfDqJrpg*]o_nFap@n=[q#C0hqY^6hr;?Nbrdk*Qs*t~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrV-Tkp@e1Po^i(Q)tEFdn*]Q/lg!`ukN:mej5T"ThVHu@g=Y$"
+ans-laihoOc-Xqhf%]!;iSieTio9"rMY;o,MY)beMZ(9i_#;(M_ScAks2FuWouI*P"NAC!_nu;e
+pq#h&oXOn0rjMj5#-kJ<Y->(1rBpBKrC-`Ur'r0$SSiCeFED_RI"6d$M2[OXP*;/tR%'_@TqeEZ
+Vl-W%ZaRKY]=Y_gqRc^=rOW*C]D]AB]D9&9]CWZ;]tV7spV6^CrP&?Jo>14=q8<3Mrl+cSs2Y)X
+qoA`XrlOrX$H^?/`594#]=GJ^rjFr!['I!>WMH>`SXc+7Pa7GoNfT'TLkC;/I=-EhVkp/^U7e$D
+G&j4PWN;k_O)p&DI>Cs,96,>UEI3M%r_P+BI=[00Ng,s%TV#"V92&,^<)cbOTr"TFO-#QjQ^O;4
+SXuFHVP^;mY-"o!YdON-Onlur`rF*VaS3gCa:X]'QC!u+R@0M5S"-%?St;RIrh0[nUSO]^VP^8h
+W2]cr!NW=$XTGZ/YPtcms7!l%_#M7G_#M.rXK/A$WMl_mVPU)aU7n9RT:VXFS"#k7R$a5+Q'@Jq
+P*(ieO,f5!N!>2tM2@%EL]3&.L&Zi(KDgDoJc:9!KE$W)L&Qi,LB*/0M/S90N/WaVO,oBbP*2#n
+Q'Rc(R$jG5S=Z=ETqS3VUnsueWN*##Xfen4ZEppG[^WfX]=bhl^VRe)`5Ta;aND]Mc-FY_dF6Uq
+f%8R-g=tE=hV[8MioB(\k2tjjl07L!m-O--n*fc8nac8BoCW%Ts7ZKerV6Egs8)WirVZWmo)=4?
+YlB4~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrV-Tkp@e1Po^i(Q)Y*=cn*]Q/lg!`ukN:mej5T"ThVHu@g=Y#D
+rg*GJ#+1aDR@9Y:r1F"^s.KFerG2@Jqec@Ls)%CEokjA>s)%dRrKI;GplkcDqNh#DqNh,G!0mDH
+duOEes,7/>Mi!7HM2;*tq*b0Ms$loV,'A09?!L`D@:E_ZBPD:#EcQ8FG'J=]IXcp#KS,#7Ll..N
+qiUi=p5]9:O,s0uqiCB2qiUi?rK6u?rfd;D!0d#=p6GN@op>]Gs-NYNr0RDMpmEIrR@';)P*(ie
+NK0!XN/EFJLkL>.I!U![F`hbEE,TN,BP:sf@UT1B86g[pI=-?dGB7;'H[^HnH#mh/BQ%3e5smk;
+>XMOuASX_*7n@#tB52:%F*)\Q84Z3>7nlZN8o&g&IV`n<DfKi@GBeCYH@,X@"+YrTKCafq`;dgS
+`r3sWa8j9Za90Q,bKK\*rm(Mh#ggoEdF-IldaJ-Ds3q/$f@S[Sg&Kb+g]$",h#cHhhYM*bPQ-mI
+Q2?m0Qi33^Q'R`&R$a;0R[]e:SXl@DT:l1W$DO;kUnsrcVl-Jmri-""XT#='Y-5&.YjDDGOX@01
+WiE%sVl-DgUnj`YTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H_NW+k@Mi*@JLkpicLAuu-K`$K$K(OWn
+K)C9$K`?c*LB!#/M#N6LMMmFPNK0'\OHG]hPE_>uQ^F/.S"#q>StD^MU84T]Vl-MoX/rG+YctF>
+['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5oFckNM0plKdg'mI'H3
+nF5u=o(2JFrq6<bs7cKes7u]kqtp?irVc<dJcDtSJ,~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrV-Tkp@e1Po^i(Q*:`Oen*]Q/lg!`ukN:mej5T"ThVHu@g=Y"T
+;,I6fs%`Me"AVcj;H!Km!)i_l!)iJOrB1*CoK;;"s$$EYpeUW\r_`Ge!)`_nqbd;mr`/ttku7R\
+qGmMos&8hpr)<P]q*b0Ms$loVs#pZL3'0/^4Ztq+3sIi55<hM&62j:]84c?C7S$0F9heDY:]*uZ
+:B45Y:[q9\;#jGh:]=/n:JOVY:@h9Y;#*o`:'"-eqbdAkq,.)dr_WDf*`>j3:ejh^9M7rM8P2ND
+8ju0:5X.Ru4ZYVd3]K)XrAO[4!];ekr\H2_5X.Lt5!1ka5X7P!5<Cqd2)[<I/hJ(c-n@#*/MT.D
+0/b^F1c@9R4?c"r6UWj23>k%D4$?#*9M.K55<qS&6pjF47n-!@8P2TKr_<#[q.9J9rFZ+Drb)4D
+"DMXfD/K/f$u^$$DfBZ8E,TZ6EH1kr"ES[-G'<k0rHeKhs*F]l"+5NFIel5';ZB\L<"YC]QC!u+
+R@0M5S"-%?St;RIrh0[nUSO]^VP^8hW2]cr!NW=$XTGZ/YPtd+\Gs,<])TAD]Y2#U^Akn&<$n]I
+WiE%sVl-DgUnj`YTqJ$LSt2@?R[KP1Q^3o$PEM)kOH5H_NW+k@Mi*@JLkpicLAuu-K`$K$K(OWn
+K)C9$K`?c*LB!#/M#N6LMMmFPNK0'\OHG]hPE_>uQ^F/.S"#q>StD^MU84T]Vl-MoX/rG+YctF>
+['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5oFckNM0plKdg'mI'H3
+nF5u=o(2JFrq6<bs7cKes7u]kqtp?irVc<dJcDtSJ,~>
+JcC<$JcFC&o`"jgrVZTjs7u`krV.W3p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVHuAg=Y$V
+ans-db0/#QcI(.lf\G?_iVqj:Mtr7pM<Bcp^Au(J_#_Ejrl"fTrl4WOrl,)[`5BF.r5%s8lad#)
+pp^71"gYD<Ycb,,6hs.L7K,dS8,l+,PFQK-E-$,GH[L6lK85AFOHPflQ'[i*SXuOLUnjlbW3*A4
+\%KBP]DB2>]DK5@]D/u9]CWZ;]tV7spV6O>o>11<qSW<Nrl+QMs2P2^a2e/"rlP,]0$2/Q_S3[q
+]",>Z[C<TPZ*^^8USFQUSt2=;QC!bsOH,0SL4t;2I=$6dVP^2brh)iSRsK1GTWGc$RuhfKOF_j`
+78%WI96#E;N(d&FH%1O(NK9EqTV#"U9MA/V<E)po<hZ:cNfK6cPa.W)R\$(BSti0[WN<5(YO\p(
+s88#T`W*mV`W*pXa8<sQamI1KPl[2;rg4@eR[]e:SXl@DT:hmOU8"EYUnssfV[KH&WiE,#XKAV-
+Y-7i/!3tqkn%nP0rkBVXX/`1uVl-DgUnjc[TqS*MSt2C@S!fY2Q^3o%P`q8nOoCCFNfB!VMi.Lj
+!f2Vere:K.KS98UrIXWlrdt'#s+LE+re>?HLkpnEMMd=NN/`jYO-#KeP*;/rQC!u,R[]e;St;UK
+TqeEZVPgAlWiN8(YHY:;Za@0L\@K2_]Y;.r_8=+/`Q-'Ab0/#ScHstee'uq"f@\g2gYL]Bi8ESR
+j5f=ak3(sml0@U$m-X60n*olHncJFTo`"O`p&Ojcq#:*hqYU0hr;?Nardk*Ss*t~>
+JcC<$JcFC&o`"jgrVZTjs7u`krV.]5p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVHuAg=Y#D
+Qi<<JQi<?]R@B_<T:hjLT:hjNCM``\rG;IMnndo7pMU"J!L&cIPPCCBQ26dHQ1gO<Q1^1:O6ho'
+NW+t;NW+n:MZ8M6Lkkprq*b3Nr^QfUs%"JYG[+KZ?sd;N@V07dCi=<7F*2YMG^+RaIY!*&KS,#7
+Ll74QOcfX)p5f68!0@#;q2b62qiUi?rfR&?q31E7op,H@nX'0@qj7;LrL*\QC6k*KP)tcdNfB!V
+MM[1GKn=f&H[9s\GBIqGDf'?*BkLse@pr_P?<r)2IslZkH?j[F@X<BQLO4/\?tsLd?:6_:<Eqgk
+?Y4%?84[&rASGsuEccSP84Q-=77BpE9M%m)I"#mICi497rcSZoH$XgbI=Hg!JqAXGL&8dg`VdaS
+a8a6\a8O*Zap6,6bg"AVc-613rm(Mhrm:PjrmM/&e^`7&f@\d0rn7_6gt^`@h;-lBgt_gEs-38A
+s-*MKqj-B2s-EYL!LB)OQkPmVS"#q=SXuFFTV8'RU8+N[V5F6i$`L&)WiN2%Xf\b/YPta+Z0hSH
+OWgg,WiE"qVl$;dUnaZXTq@pJSXc1=R@'A.QBd`"PEM)krf75CNJrgSMZ/G6LkgcbL'!'^K`$K$
+K(FQmK)C9$K`?c*L2Vj'Ll$tGMMmFPNK0'\OHG]hPEhE!Q^F20S"#t?StMdNUSO]_Vl6SpX0&M-
+Yd(L?['mEQ\[oDc^;%J"_Sa@3a2lBFbKS8Wd*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'
+mI'H3nF?MK!qZ'Vrq6<b!;HHerqZTjqtpBjr;H3cJcE"TJ,~>
+JcC<$JcFC&o`"jgrVZTjs7u`krV.c7p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVHuAg=Y"T
+;,L0h:]F2g9a"6g;,L6j;ZK_o;>WKN4755o4TS>TpeU`_s%iVjr_`Mgs&&bnqb[>iqH!Sqr)DoZ
+s&Anrqc*GkrBpBKr^HfUr($cX!Bi^H3WV6&r]M#Z4Zb_g5!M;"6:"".7R]m>84Q0A9MGC[nk]9^
+mSE@Lr_`\lqbR2f!)NPgo2#6[peUc^!DcP^;#jGk:]=2h;#jGk:/st\8kM`K8P2NC6q'F,5sROr
+4Zkhf3B9#W3&NTM1c$sE0/5+85X7Ou5!;%i3Bo_n5!D%h3&W]Q1bUF%*@WKo/hJh93&!3J1Gq*O
+3]oYn6UN^frAb*H4?GYd92%tW57p.J6UF1/7Rp!>7nH9F8kViPnkT3r!+bt<r+>n?!+u4Cs(DIJ
+C2<fcrb_gTDJj=jD?XrtDfBW6rc.sYrc&9dFEM_LGB\:WH$]F7s*=Zlrd=`o!.Oi/!)rShs&/qt
+<SpdTPl[2;rg4@eR[]e:SXl@DT:hmOU8"EYUnssfV[KH&WiE,#XKAV-Y-7i/"L5JH\[h[Mrk/6D
+rk8HI^:rB%+fq`EWi2hnVPU)aUS=HUT:VXFS=?"9R$a5+Q'IStP*1t,Ns1Q'N/W[PreU]4LPPk`
+!el;\r.Fs"o7?mmr.G$&s+UH,Dhj.)M2@+IMi<USNfT6_OcklkQ'IZ%R$jD4S"6.BTV8'SUnjlc
+W2ZetXf\e2Z*L^C[^N]V]">Vh^VI\&_o9U8aN;TJbg+M\dF-Lne^rF*g=k<;h;7)JiSrnYjlY^g
+kiq?slg4!*mdKW6nc&(\oCV\Sp&F^cp\jmdq>^<gqu6NkrUTr=s0;TS~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb*;&jno'u5<n*]T0m-<j"kN:pfj5T%Uhqd,Cg=cDG
+r5]8fb08)ScdL=pg>1Zcir=u6Mu&>$M#`G2M<Toq^Au(J_#_Ejrl"fTrl4oW!6G&XrPelV_u@ON
+_#hE_\aR,q\c'&:[g0=JZa$g?Z*"!mq*b3Nr^QfUr^d&\.@639Df]uCH$asfJ:iT7NKB9dPE_B"
+R@Bb?TqeE[VQ$]&ZF.3Q]Y(rU]`5VD]E#YE]E#S=])B84]E>j]^VKTYq7uU<pVQaDrPS]Tp;[-Q
+s2Y2\r5eoYI`B@D_7dFl]=PJ[[^EQPZa$a:W2$&[St;I?R[B>'PE:i_M26q@Jpr/sH?aRPE,0,s
+?='"DF-ro3YH4=[Men0'?tVlJCjo)uI#3hV;,MUgL5M"UR[g$K:ese[:K:=m;,W^RVP]?6Ocu#p
+Q^F23SXuFGVPU2jXf\b0o!#D!rK6inrl"iUs2P)Zr5e`VmE#<ls-3VNQi<?^R@9V7S=Q4BStD[L
+Tq\=]U]mTlVl-Jmri-""XT#=&Y-7i/s02R0mf2dmnA,(=0W_=TWi;qpVl$;dUS=HUTV%gHS=?":
+R@'A-Q'IStP*1rhO,o<\N/W[PMM[1GLPPk`s+UK+rIb*$qLSWrqgn]trIb-'s+UH,C57V$M2@+J
+Mi<USNfT6_OckomQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE[^WcW]"G\i^VI_'`5Ta:
+aN;WKc-FY^dF-Oof%8O,g=k?<h;@/KiT&tZjlY^hl07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jme
+q>U6fqu6NkrUTr=s0DZT~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb*;&jno'u5<n*]T0m-<j"kN:pfj5T%Uhqd,Cg=cFk
+rg*JKrg3hVR[]k>r1Nq&rbV=EoP=MEr+te<r,2CqplkiFQBh<4!13GGp6GQ:pQ#04muI(##E4Ot
+Ll$nDLAjR97/fXS7f5dU8H27.G'$tp?!guI@Us+aBl%[+EccDHG'A4XI=?]tJqSf2M2@%IN/s(p
+O8b7<Nqnb0OSb1=P5^U?P51=5PkC==QL^C?R/<3XR?s8+Q'@JpOH>N`rf%nVM2@%CK7JAuH?j^X
+G'%bEE,9B+BP1pg@prbPra#P-:KUXs;c6G6ARTh4Kn+SpEGJ]kAkl)[<Dd*i<aTHS6:a[S@:a1j
+DKBuG7n6*?7n$-H9M%ftI"$N\D/=-2F*2VKG^4R\H@:6kJUrH*KCX`q_u.FQ`V[[R`ra?&a8O'd
+b0.uPbg"AVc-4E2c2Q#fcNMVBdaHPBdf._peHOOUf@\d0rn@A,rS@M/!ScE.D>9@mPQ-mIQ2Hs1
+QiE<MPl[2;rg41`R[]e:SXl@DT:hmOU8.^`"f8)oVl6ToWWB0%riH4(YPtd+YlM)ts4rekXK/A$
+WMl_mVPU)`U7n9RT:VUDS"#k7R$a2)Q'@JqP*(ieO,f3YN/NRNM2@%DL]3&.L&Zi)KDpK!Jc:2s
+Jc13!KE$W)L&QgALPUbCM2I4LN/WaVO,oBbP*;,qQ'Rc(R@9V8SXuIHTq\<XV5C/hWiE/&Y-5(7
+Za7'J\%&u[]Y(tn^r!t,`Q#s>aihlPcHjkbdaZdtf@S^0g>(N?hr*GOj5]4^k2tmll0@U$m-X6?
+mfDqJrpg-^o^r.U!quB_rV6EgrqcNhrqu]mo)=4?ZN#F~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb-M6p#o'u5<n*]T0m-<j"kN:pfj5T%Uhqd,Cg=]D&
+;Gg:f:JX_\rCmDi:JandrDNer;*I2B4nLl:4n(Su4oJ1V:A[ib;#O2i;#X>f;#aDm;Z'Dl;#a>k
+<WH.r<rQ+q<:!Q`<;]bp<;]Yp;Z9&Z7/fXS7f5dU8H26^5<Sm)+?DSI4Zkki4$5Si5=%V&6UF72
+6q0[;7n?-C9MS>Y:JUX[r_W&ZnPK3^s%rSgr_NSjrD)r[qb[&`qb@/f;"7B_;#O/i;Z9ED9i"PX
+8kVcJ8kMWG7R]d869dh#5X.Co4$#D^2`N]T2Dd6H1c$pC1G^a@1,(Qa1++e;5<qFt5s77h2`*BJ
+0eF[j.4?l&/2B+D0fCpH2)mZZ4[;>&3&pmt%6-O54$5Jn9M@uA5=%R66OlOQ7Rop;7nH9E9M.uP
+:%D'YAcH<;Ac-0>B)lQCBE)WIBkhF"rb_[Q!c;gmrbVXQr,2UTEr0hWEc_5&"*Sm4GlE!gGlN$j
+H@(#:HiSTn4oJ=Q;ZB\Q<<&3_Pl[2;rg41`R[]e:SXl@DT:hmOU8.^`"f8)oVl6ToWWB0%riH4(
+YPtd+Ym%GC\[f;_rk&0Bs1JKJ]tOEZh,H)0X/`2!W2HPjV50l\TqS-OSt2C@S!ob4R$O#&P`q8n
+OcYWbNfB!VMi*CKM26qBreCH,s+L?'rdsutrdalsrIY!#s+LE+re>0CLkpnEMMmCON/`jYO-#Ke
+PE_>tQC!u,R[]h<StD[LU8+N\VPgAmWiW>*YHY:<ZaI6N\@K2`]Y;.r_SX71`lH0BbKJ/Ucd:(f
+eC<($f@em3gtgfDi8ESSj5f=ak32'olKdg'mI'uB!V#XYncJFTo`"Lbp@n=[q#C0hqYU0hr;?Na
+rdk*Ts*t~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb*q]'po'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=aQg
+rlP&Y%*?]:bg+Saf%Ad7i8XWmpP]!-nqldl!/pZ1r4`6IrP8NO_u@UR`W!mVa8X0Wa8X']`Pf[2
+_Yh4S^qmju\[o?N])B84]'Hm5\@/iRZa@$CYHRpmq*b3Nr^QfUr^d&\s%4;pS8E1aEccPPH@:6m
+K8#);O-#NgQBdf)R[p%DUAgtpVPgDpZEgjH\c05C]=bfU]`GdXpq$F9o=P1=^;%JX^\P\9_>(nC
+_u7LR`W!mW`V[XTa8X-h`l5m6_7mRm]=YVa[^Q1CDR?^QYH=e"US"-JSsbt6Q'@MrO,o<[LkUJ3
+J:)WfGH,_$CLq!^?!CK7=BS[OH[M-=G]&8)Ck#2mAUI6hHA7GU;,L5@KntbPR[g$H;,0h[=&i3t
+<)TBbM2dUZP*D6!QC454SY2RJVPgAmriH1(nZ]4srK6rprPe]Qs2>&Za2e(ur5nBJ*0QMMQ'IZ$
+Q^F/.R[]e:SXl@DT:hmOU8+N[V5F6i&ZD\/WiN5&Xf\b0YHY79Z*L_(s7*qt_#D(K_#D)%X/`2!
+W2HPjV50o^TqS-OSt;LBS!ob4R$X,(P`q8nOcYWbNfB!VMi3ILM26tCreCH,!/19&rdt*"pji9n
+rdt*$s+LE+re:W4LkpnEMMqImAW;_2O-#NfPE_>tQC+&-R[]h<StD[LU8+N\Vl-MoWiW>*YHY:<
+ZaI6N\[f>b]tV7s_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3
+nF5uIncA@Srq6<bs7cKes7uZjr;6Hjr;H3cJcE(VJ,~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb*;&jno'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=c@i
+!1*MKrg3hVS"6.Crh0:+qJ5nCr+kq@j_amYpltcC!g]+:rg*PMpm1Q;p5f!/r/^E/q2PE5#)e@s
+M26n@r^6KLr^HfUr($`Ws%35_'QeP&>[:TA?t!MSAnPdmCi=<6FERS,&UAbQIY!*'KS>29LkghG
+N/`tuO8b7@O8Y+7O8b4@Ont1:Oo:IBOnt7:POat4Q26g;Qi*47Q^3u(Pa%>mO-#?]NK&mVMMd7E
+LP18/I!U'_GBJ%LEcQ)9CMRTrARf4Y@:*;G>_-$\<`Dsp:JOSW91qkU>o[m%@9[D`='Ia]9jC%b
+?"Ie=84Z6[A8,muF*;g+8,c4&928*+I;E_:D/XH8FEM_MG^+O]H@10jJUrE)KCOZp_Z.OP`;dgR
+`qd[Ta9'K+bP]Qac2Prdc2Q#fci2;kdJhSoe,Ro$e^i='f\$2V!SZ<,g]H<eh#?%.h#;0kD=s.j
+P6-u6Q2?mAQN3?DQQ20PPa.N"QC!u+R@9V7S=Q4BStD[LTq\<XUnssfV\,l,WiE,$XKAV-YHP17
+Z*CU@mf2+*0<;+QWMl_mVPU)aUS4BST:VXFS"#k7R$a5+Q'@JqP*(ieO,f3YN/NUOM2@%EL]3&.
+K`Hf(KDpK$JbXcnJc:9"KE$W)L&Qf2LPUbCM2I5jN+J!/O,oBcP*;,qQ'Rf)R@9V8SXuIHTq\<X
+V5L5jWiE/&Y-5(7Za7'J\%0&]]Y2%o^r""-`Q$!?b0/#RcHjnce'uq!f@\d1gYCWAhr*JQj5]4_
+k3(sml0@U$m-X60n*oi:rpg*]o`"O`pAamcq#C0hqY^6hr;?Nardk*Us*t~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb,4tKto'u5<n*]T0m-<j"kiV$hj5]+Vhqd,Cg=]D'
+;Gg:fr_NPhrCmDi:JandrDW_Zq*+[="[5(45!D./55dY;4R501:]4&c:]=2f:]=2i;>F#h;,[9g
+s%r\j"Ai-#<`]0!qH!SqqGco^s&Anr!`W)trDW\_q*b3Nr^QfUr^d&\s%<;U*&]f=3'',_3''2c
+4?>Ve4$Z(r5smt*7RTX784WYM#>7Z_:/4MZ:Amuf;".9M;#X>l;#=&f:]O;i:@h9Y;#!i_:&n)[
+;$'He;#X5g8cVN`8h*A'7R]d86U3t(5X.Fr4$,J`3B&rW2`3KM1GUaC1,UjE6SUDS1GU^A1&`pa
+0f(XC1H.0M2)I*A.2sQZ/h\\.2*<QM2)I0M3^#Yl6:Npn3]]8c5!(nj4A&:35X@Y#r^6ZQs$d>d
+7n-$@8k_fM9MP%Prac%?rabn;r+>tAs(;4B"DMUdCi')f"`A0oDJa4hD>nJQE;snXE;jhaEcZ>E
+F`qqPG^+N4GR&M?H@(!dH[Ga>!'^BFmns-aiD^e[PE_>tQBml)R$jD4S"-%?St;RITqS3UUnjia
+rhgL0WN)u!XK8P+Y-5%5Yd(I=ZadNV])92?]E#YE]`,SE^@>2%;t*a>X/`2!W2HPjV50o^TqS-O
+St;LBS!ob4R$X,(P`q8nOcYWbNfB!VMi3ILM26tCreCH,!/19&rdt*"pji9nrdt*$s+LE+re:W4
+LkpnEMMqImAW;_2O-#NfPE_>tQC+&-R[]h<StD[LU8+N\Vl-MoWiW>*YHY:<ZaI6N\[f>b]tV7s
+_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5f@bkNM0plKdg'mI'H3nF5uIncA@Srq6<b
+s7cKes7uZjr;6Hjr;H3cJcE(VJ,~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb)t`amo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2DgAT+l
+ans-dai_iOcdC:pgYLcbN:Vu)MY)c&MYrD.MZ/P5M?JjP^q[Y`_#;(M_ScAkrl+lVrl>#ZqoA]U
+!Q;nT_YM%J]DfDA]DfD>]CWW&\H04NrjE'=Za6m@YX:eR7/fXS7f5dU8H29[8g$cnO`#,ZF*DhS
+I!pKmJ:rc:N006eQ'Rc(S=Q4CU7n=[V$EotWj/q<\%)CM!5/*<rO_[6"22F`_"YV>_",>:_YM+J
+`;ddV`r<sT`WjE"_8*aq\,NrT\@8lSZa6sDYcY(1WMcG`St;C>R$jA+rfRePNK/mPKnP#*H[0gY
+Wi)fpU^<cfSp+@>='/UOrI"Ql3dZ=(8nWKB96PoG:Jt%eIY<Q=OI2Q2;,C%_:/=kh;cJU3MMmLV
+OHYooQC454SXuFFVPgAlXKSb/n$&qorfQoms2FrTs2>/[`Q#p<a8F$Wam[=NOo^c2rfmeUQ^F/.
+R[]e:Sc52iT:hmOU8+N[V5C/gW2]cr#-4i-Xfeh1ricO1ZEggCnGi$pr4r?IqS<'E0ttE(X/`2!
+W2HMhUnjc[TqS*MSt2C@S!fY2Q^3o%P`q8mOH5H_NK&mUMi*@JLkpicLAuu-K`-Q&K)L8oJGk&u
+K)L?%K`?c*L&m'creYQNMi<USNfT6_OcklkPa.N#R$a;2S"-(AT:qsQUnjlcVl?\sXKAY0Yd1UB
+[C3TU]">Vg^V@V%_o9U8aN;TJbg+M\dF-Lne^i@)g=k<;h;7&IiSrnYjlY^gkiq?slg4!*mdKW6
+naZ2@oCMVRp&Facp\jmeq>^<gqu-HkrUTr=s0M`U~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb*;&jno'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2Dg6h`'
+!1*MKrg3kWS"6.CT_E4$CZfO2D>\;BD>KIkPl$aFQN!6GQM-UDQM6I?OSk16NrP13Nr+eCN/NXP
+M2@"CL-n?(7/fXS7f5dU8H29[8hE\ZF'DjT?=72N@V'.aBkqR%Df^#DG'A1VH[U<lJV&K,KS>,8
+LkpnHN/`p\rK$u=q2bN:rfR,?qiUi?rfR&?q31B6q3C`@ns;G(Q'IPrOcYWbNK&sWNJi[NMMHq@
+KRnW#I!L!]F`_\GE,]]2CMINrARo:Y?=$oB>_.HUIXQTiG]mWs9`Ia-?!^fB?=.)I?X7&H4A]9I
+6<[i577g$@?t<tfDf^&Hr'qVn9he;UC2@X$CMdj,EcQ8EGBeCYH[:'fJ,Y!#K7\aFL&]!f_>qLP
+`;[aR`r=!Y`r3sXa8sE*rlbJfbfn90bl5ldcMl/hd/MGmdK%bqeGe%uf`0V)gA]k*g]cHfgYCQ;
+rbhForK[>Gs-*JIs-<MJq3V)Hp6YfB!L&cIPmNbCR$a;1S"#q=rgjRkTV8'RUSO]^VPg>jWW&n%
+X/rG*Y-+u-YQV5:ZEpn,s4rejXK/A$WMl_lV50o^U7n9QSt;LCS"#h5R$X,(Q'@JqOcYWbNfB$W
+N/NRMM26tCreCH,s+L?'rdt*"p43*mrdt*$s+LE+re:H/M#N6LMMmFPNK0'\OHG]hPE_>tQ^F/.
+S"#q>StD^MU84T^Vl-MoX/rG+YctF>['d?P\[oDc]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE.%f\5'6
+h;-rFi8N\UjQ5OdkNM0plKdg'mI'H3nF?&>o(2JFrq6<bs7cKes7u]kqtp?irVc<dJcE(VJ,~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb)t`amo'u5<n*]T0m-Ep#kiV$hj5]+Vhqm2DgAY%N
+;ZBSo;#X8j:Amlh:/=\`r_rPSqE=mBrBC'Bs$$<C!'L6Dr]KR2s%iPfnk]6]r_`Mgq,%,grD3Gi
+o2YTes&JtrmSa*br`/qsr_rhaq*b3Nr^QfUr^d&\rCR,a5!8d()EKr?2`No_4Zkhi3^,hp5!_J$
+5t"+07Rp$?r^d&]#"qZc9i"M\n5&OMr_`\lqbR2fmSE^VpeUob!)NPg"A_ik:f.'e#u=;l:JO\]
+91hhU9,^Ao7nQ9@7R]d86:+(+5<_1m4?GS`3&rrX2uYZ61Cl2q1GL^C69mh$5!:qf3C!L!,;M)3
+1c$sD1bpjE1Ggm5-7p]!0/PU@2E*NM2EEr`5X@as3;to@3'KAd55m\Y5=%Lu5X[n+6q'O67n5s<
+8P2WKr_*;dn4isnrF>n>rFGb9rFQ%BrFZ%A!GH6HD#.uKD#S;ODZaruE,bbqs)J*\rcJ-_rHJ<d
+rcnEgs*FfnH[Ga>r]TsQq,@;ks&7uXs,mDHPl?pSQC!u+R@9V7S=TYN%A0;eTq\<XUnsrdVl6To
+WWoN*Xf\b/YPta0Z*L[AZap(Hq7HX=s1Rr%qG[#c0<D4SWi;qpVPU)aUS=HUT:VXFS=?"9R$a5+
+Q'IStP*(ieO,f3ZN/W[PM2@%EL]3&.L&Zi)KDpK$JbFWmJc:9"KE$W)L&Qf-LPYqdDi0I3N/`jY
+O-#KeP*;,qQ'[l*R@B\9St;RJTq\?YVPg>kWiN5'Y->.9Za@-K\@K2_]Y2(p_8=+/`Q-'Ab0/#S
+cHstee'uq!f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$m-X60n*ol;o()DDo`"O`pAamcq#C0iqYU0g
+r;HTbrdk*Us*t~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q(@gn_n*TK.lg!`ukN:mej5T"ShVHu@r5eo[
+qoB/eb0/#Rd*pOugkq$cN:Mo+MY)c&MYN,.MYrD._#;(L_u@UR`W!mVa8X0Wa8X'[`Pf[n_YCt:
+]CNQ(\HKFO\$`[DZi@<16hs.L7K,dS8,c'Z8c;9]9E.[=S8E1_EcZDLH$k!gIt<'&M2R@VPa%Gu
+QBmu1StDUITq\B[VPg>lX0T+?[(!TUqmua<rOi0Dq7HgC^;%JX^\GV9_>(nC_u7MM`Q#d3_8=%&
+]tV%d\\#G_[^WWMZE^[<XKJY(VPBfWStDL@QC=,*PED#hNfK'SL4b,0IX?6\F/l+5USFNWT:L1E
+R]*Bj[&9LYIXQZmHi8BmIK>"MrdQSMIt3*#J:iZ;OI;T2;G^2@JqAQ,L4tJBMkc>oOHPinQC454
+SY)LJVl$DmYH>"oYc[s*On6Kk`V[UR`W*sWa8<sXamd@OOoCLkPE_>tQC!u+R@9V7S=Q7CT:hmO
+U8"EYUnsrdVl6SpWiN5&Xf\b0ricI/ZEjJ9nGi$prP8?Gr4r9Gs1Tq_WiE%sVl-DgUnaZXTqJ$L
+SXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMZ/G5Lkktas+UK+rIb*$rdjZkrdk'#rIb-'s+UH,!JcL1
+M.qj*N/WaVO,oBbP*2#nQ'Rc(R$sM6SXuFGTqS6WV5C/hWN*#$Xfnt6ZEppH[^`lZ]Y(tn^qmn+
+`Q#s>aihlPcHjkbdaZdsf@S^0g>(N?hr*GOj5]4^k2tmll0@U$m-X6/n*fc9rpg-^o^r.Us7QHe
+rV6Bfs8)Wirqu]mo)=4?[/YX~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q(@gn_n*TK.lg!`ukN:mej5T"ShVHu@rg<;D
+"dk^HS=Z>CCB&)CD#A)ED#/#EDYS)EPPLI?Q2[*KQhZm@Q2Hs@O8P+<O62K&MueforeU`5LI4H)
+7/fXS7f5dU8H29[9)hQa9I"dc>$G<=?=./O@q91bBPVF$Dfg/HG'A.TH[UBlIt<0&K7s5Ys+gl:
+N/`dUOHKC#rfI#>s,d,?rK@/BqNCW;o9B'9pm1iE8sYa.P`q8mP)tcdO,f3[NK&mSM26tCKnb53
+J:2imH$OXYG&q\CE,KK.CM@HoA7]4[@U35C>Ch<RI=6HhG]mV)H%CTuK6h]YrEfP1rF,_611F[%
+@preU@:E\S@q][sEclXt84I3(B4bdjBkhBuHu!P7E,p#BFa&+UH?sseIt*$#re'Qk!5SNLs24lT
+rPeZR!lr=#rPo8dai_cLbfn8Sbfg"0rltGfrm1SjrmCbo!7Uqs!nGoSrn%;*g=lP\!8RM,"kqY`
+g2:g"Pl-gDPl?sIQKsk;OoCLkPE_>tQC!u+R@9V7S=Q7CT:hmOU8"EYUnsrdVl6SpWiN5&Xf\b0
+ricI/ZEjJ9nGh=,.BBJKWMl_mVPU)`U7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieO,f3YN/NSmM#iEf
+reCH,s+L?'rdt-#o76gkrdt*$s+LE+re:H/M#N6FMMmFPNK0'\OHG]hPE_>uQ^F//S"#t?StMdN
+USO``Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J"_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h;-uHi8N_V
+jQ5Odkiq?slg4!*mdBQ4nF?MK!qZ'Vrq6<b!;HHerqZTjqtpBjr;H3cJcE+WJ,~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-Tkp@e1Po^i(Q(@gn_n*TK.lg!`ukN:mej5T"ShVHu@rDW_o
+!Du\m:]F2g9a=Eh:f1+h4?W0tq*+R<r]]F,s%iMes%iVhpeUlcr_`JfqbdAir(m;gn5]Kf!``9$
+rDinur)E)_!`W)sr`&nbq*b3Nr^QfUr^d&\rC[)_s%F7o3&rrZ3BB5`2`Ei\4$#Je4?5Vk5sR\&
+r^$fX6q'R77nESMs%<Gg:/=Xa;"mcT;#X>l;#=&e;#F,e;#*ob;"m`e:/=[a:'FEj:/F\]r_=/(
+9hS,Q91hiL8k;ND7Ros<6:4(+r]q2^4Zkef3B0&[3]B#X1GpsF1bgfb1_N/A5<h=p4ZbYg5!M:t
+5<V(g2uYW91,CaDr\FR12#]?82Dm<K2?#KZ3BTDg5smLh3B0&Z3BB8a4Zbi$5X.Iu6pj@2779U8
+84Q6C9)_K`:$bXSA,0[4Ab]m;B*)a\C\qrHD?"GPD?"JWDfBZ8E,bers)J?cFEDYKGB\<1G63#7
+H2DpeHiJKn4T\S];ta,_;rpsYOoCLkPE_>tQC!u+R@9V7S=Q7CT:hmOU8"EYUnsrdVl6SpWiN5&
+Xf\b0ricI/ZEjJ9s1/0@rO`*@rk&0B!57o%pf$lc.BBJKWMl_mVPU)`U7n9RT:VUDS"#k7R$X,(
+Q'@JqP*(ieO,f3YN/NSmM#iEfreCH,s+L?'rdt-#o76gkrdt*$s+LE+re:H/M#N6FMMmFPNK0'\
+OHG]hPE_>uQ^F//S"#t?StMdNUSO``Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J"_SjF5a2lBGbK\>Y
+d*^:keCE1&g"P08h;-uHi8N_VjQ5Odkiq?slg4!*mdBQ4nF?MK!qZ'Vrq6<b!;HHerqZTjqtpBj
+r;H3cJcE+WJ,~>
+JcC<$JcF@%o`"jgrVZTjs7u`krV.N0p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu0r5elZ
+qoB#ab0/&TdFHnIMYrD.N;JM5MYi>3MYi51M#E2-MXcT+^qmkb_#D1M_>qLQ`;[aT`r=$XaSX$W
+`WX9!_o'@b_="r(](ifD\@8rU['d<KZa$`%q*b3Nr^QfUr^d&\rC[)_s%NGe2OLdeDfB]:F*2eU
+I!pNoItNQ5N/j$bPa7T#Q^4)2StD[KU8"N]Vl-JjWN*#$Za@-J[^WfYrOi0Dq7HgC^;%JX^\GV9
+_>(nG_[OK#^Vdn']t:nd\%'!J\Gip.[Bd*BZ*1=1XfJ=pU7e0OSsu4:Q^=#'PEV,lO,f0TLkUJ3
+IsQEbG'%]%VPL#\TV%a@F)7>A\$WH3PDj=6S:#Qd7<<0kIt@TK"b(rOJUr@NJH^XVJqAW+rIQ&@
+K7el3KV>3:UQ:P"PEhE!S"6(@StW'ZW2d#&YNE'lrrA2G`;dgV`rF*EaT%>TOcklkPa.N"Q^F/.
+R[]e:SXuFFTV8'RUSO]^VPg>jWMuntX/rG*Y-+t4Yd(I=rj2X3o)J6rrP83C!5SNIs1\N5-E3rA
+Vl$;dUnaWWTV%gISXZ+;R@'A.Q'IStP*1rhO,o<\N/W[PreUo:LPLV=KnY25rIb-%rIONirIP!#
+rIb-'s+UK-s+^T1reY0CMi<USNfT6_OckllQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE
+[^WfX]=bhk^VI_'`5Ta;aND]Mc-FY_dF6Upf%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--rpKmW
+nc&(\oCV\So`Fj]p\jmeq>U6fqu-HkrUTr=s0_lW~>
+JcC<$JcF@%o`"jgrVZTjs7u`krV.K/p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHubR.lpI
+QN!3RR$jG7C[Gm4C]A5GC\hlBD>J/LD$#ocPl-aBPk^OCQN!6GQ3*>;QMd$DQLKt8OSt7)NrP(=
+N;\Y:M26pSq*b3Nr^QfUr^d&\rC[)_s%NGe"*]W+>5hb=?!^uK@q94aBk_@#Df9]=Fa!b.)L6^X
+I=?]tJV8`0L5(J;LkpnDMi<XTNfT<aqiUo?qiUi?rfR&?plk<6q3ClD&!`BDQ'@GpOH>NaOH,<\
+NrG#9N/NOJM2-h?KS+i*I=6HhG^+CTF`VPCDf'B.C2%<mARf4X?X@&B=^#!ZJ:;lmHZjUS@U+5-
+L4Xu#E,/TkE*lj=2cW[[@:<VR@pieT@U`mHA,TpA@qB1]AnV'U)/">FI!][HDfKf>FEi"SH$Xgc
+IXcp"K7ej?L&Ssf_Z7XQ`Vd^Ua8X*Xa8a3aaihlObKKb+rltGfrm1Vkrm:eqe'n<Grmh/&f\$2W
+rn@S0gY1E9rn7;)!H+1mPl-gDPlI$JQL1%=O=u`ZP*;,qQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrd
+Vl6SoWiE,$Xf\b/YHY79Z*OA8s0V@sgl_W:-E3rAVl$;dUnaWWTV%gISXZ+;R@'A.Q'IStP*1rh
+O,o<\N/W[PreUo:LPLV=KnY25rIb-%rIONirIP!#rIb-'s+UK-s+^T1reY0CMi<USNfT6_Ockll
+Q'IZ%R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE[^WfX]=bhk^VI_'`5Ta;aND]Mc-FY_dF6Up
+f%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jmeq>U6fqu-HkrUTr=
+s0_lW~>
+JcC<$JcF@%o`"jgrVZTjs7u`krV.N0p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHsdrDW_o
+s%rbmr_NPhrCmAh:Jas`4RtZ754q/=541Q84?Yk,:\IQY:]=2i;>O,e;?'Ji:B=9fr_W#_qc*Sq
+!*9)!qc*2d!`DrqrDEV_q*b3Nr^QfUr^d&\rC[)_s%NGe*^;hJ3B0#Y3]]>_2`a#^4?Yhi4$>_k
+5X@Y#6:4%*r^6fW7n<PLr^m,_#u"&f:/+M\:JjpW;#X>l;#=&e;#F,e;#*oc;"mcc:`W;,:JO\]
+:/=MV8P)QJ8k_iM8kDNC77]p<6:4%+r]plV5!;"i3]f;^3B$jrs#'m71]B3I1GgmE1c%Ha5<_7n
+4$#8a4[2+p4?GP^r\Y!</M&"b.OQf)2?#K?1c%!J2)dHR2`1Ll%lH1)3B0&Y4$5Se3)!"=9)_'f
+6:4.0779U87n-'A8kVfN9hjeGrF>b9qdoP7s(;LKBkqO$C]/&LD>\2PD/O92rc.sW"`\R'F*)O'
+Fo?IdGBS1TGl2jfH2`-iHiABm4oJ=O;YF&Q<<&%5OcklkPa.N"Q^F/.R[]e:SXuFFTV8'RUSO]^
+VPg>jWMuntX/rG*Y-+t4Yd(I=rj2X3!4i*?!5&0?rk&3CnPo-Zq,IBo-E3rAVl$;dUnaWWTV%gI
+SXZ+;R@'A.Q'IStP*1rhO,o<\N/W[PreUo:LPLV=KnY25rIb-%rIONirIP!#rIb-'s+UK-s+^T1
+reY0CMi<USNfT6_OckllQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3Z*UdE[^WfX]=bhk^VI_'
+`5Ta;aND]Mc-FY_dF6Upf%8R-g=tE=hV[8MioB([k2tjjl07L!m-O--rpKmWnc&(\oCV\So`Fj]
+p\jmeq>U6fqu-HkrUTr=s0_lW~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.Q1p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHu1ans0Z
+ans-_ai_iPd*qWErJUK1s,6c3!/pi6pPJd)o8EUas1nWMrPJQO!6"fSs2P&YrlFrVrl,)[`5BL0
+otgC7!5/0?rjr-Aot(18r4;a8s0W$:['Hs@6hs.L7K,dR8,l-[8c;9]9E.]b:&ds):RRGbDfKl>
+GBeC[I"$QqJqSf3LPh(Rrfd_TQ^=)0StVjNU&LbkTqnT`VlH\pri6"$&$`LL[C<WT\@K/]]=bkm
+_"YV=_"PVC^];(I^DFVt]Xk\b]"5D[\$i`S[^NQN['R'DZ*F;4%'6D/X/2PbTqS'KR[X5B&!iHE
+PE:ldO,f-SL5(>2IK"KkF%(#FVkg)]TV.mGRs/jfS=ZdjU7.0eOI(c3DG+V^H$4RUIu9;@;MpB]
+JVT,CP*qf2K7JN*KM5*><10>NTqnEXO,oHfrfmq]S"6.CSu/B`WiW>*YN)jjs8U"#`;[aU`rF*H
+aT%;IOHG]hPE_>tQC!u+R@9V7S=Q7CT:hmOU8+N[V5C/gW2ZesX/u<&!NrX*YQ;#7rj2X3!4DCt
+o"k:?o"Y4=/uu"PWMcYkV50o^U7n6PSt;LCS!ob4R$X,(P`q8nOcYWbNfB!VMi*CKM26qBre:K.
+KS9;Vs+:6$mstCgs+:3%s+CB+reCH.EeoR/MMmCON/`jYO-#KePE_>tQC+&-R[]h<StD[LU84T]
+Vl-MoX/rG+YctF>['d?P\[oDc]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE.%f\5'6h;-rGi8N\UjQ5Od
+kNM0plKdg'mI'H3nF?&>o(2JFrq6<bs7cKes7u]kqtp?ir;H3cJcE1YJ,~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.K/p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHuaR/N?O
+QMd*LQN*9PR@<ndm:u3-rbVUO!,V7Ds)%gRrfmGHpQP`EQBqH6rg*PMoToKAp6P$*!0I/?l])4.
+N/ELLM24Op7/fXS7f,^U8H29[9)hQa9`@cd:*i\[FBVjR>@(WD@:<VUB4kmkCMdp-DfBf@Fa/+T
+H$b!gIXclurdb3*KnY89reCf9M2I.KN/`gXO8b7?OTU]-P*5g,qNCW;oooH?rfR>FP*>m-s,d2?
+r/CrANK&mTN/<DhLj4W,K7e](I=?KgG^":OFE2D@E,TW2CMIQtB4PO_@UNMJ>[(E8It2urI!g9c
+G'7D+>^:[HKR%ZV?uBsr:/X)I='Ag9=CGfXAk?fU?t*_`D/OE:G\(DsAn4G$9MB\YH[L6hHu!P;
+EH6,CG'A4WH@($gIt3+LKB%[c_Yq@P`;IUP`rF*Z`r3sXaTBW.bl5fbbQ?&5bl5ldcMl/iciDJm
+df.]$eCE.$f@S[.g&9V)g&B_&g&KdmPl6mDPlI$JQLL7@O!TmMP*2#nQ'IZ%R$a;1S"#q=St;RI
+TqS3UUnjiaVl-JmWiE,$riH4(YPta,Z*OA8s0Md6o)IO./uu"PWMcYkV50o^U7n6PSt;LCS!ob4
+R$X,(P`q8nOcYWbNfB!VMi*CKM26qBre:K.KS9;Vs+:6$mstCgs+:3%s+CB+reCH.EeoR/MMmCO
+N/`jYO-#KePE_>tQC+&-R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?P\[oDc]t_=u_Sa@3a2lBF
+bKS8Wd*^:jeCE.%f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3nF?&>o(2JFrq6<bs7cKes7u]k
+qtp?ir;H3cJcE1YJ,~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.N0p@e1Po^h\Fo'u5<n*]Q/lg!`ukN:mej5T"ThVHsdr)<Vn
+s%rbmrD*DgrD!;ep,r@:rB0^8r]^<GrBC'Br''p>rB1*C!'L6Vs%WPipeLW\r_WSkq,%#es%rJd
+"&Mch;"7Qc<;oku<)rcor`/eop/Cle!(6QMr^HfUqa^ZWs%3/]s%EAcr_<Df+AY0a2E!TU3BB/]
+3]K2^4?Yki4utei5<hJ!5sIV$6pprBr^HoY7fGsX8H_XY8kMeV:&dug:]=2j:]F5l;,I6hs%rSg
+o2,9Zs%r_m#>e2k:/+JZ:]=)j:eFF\8d%d\91qkU8,l*]6q0ZF6kD[Q5XRk(4?bni4?GVc3&itt
+3!;,u1c.)h1BB?hr\P9E5X7Ou5!;%k3B9>h4[)(q4?5D"2EiiJ-Q=?`/MT+81c@BU2aBSa2)mZY
+4?l(t3B0#[1cdW]4\JIC9MA)P5X.M"6psI56q9a:77g'C9M8&R:#f"KA,9a6AbTdGB5)*rCM[d$
+CM[g(Chs#d"E&-sE,khq!HN8ZFT6L\Fp<2:H$Xd^HN&3iHN&9kI/d+B;tEo\;sRE_O!TmMP*2#n
+Q'IZ%R$a;1S"#q=St;RITqS3UUnjiaVl-JmWiE,$riH4(YPta,Z*OA8s0Ms;\[f;^\bir?]=beg
+nl5*WrDYDMWiE%rVl$;dUnaZXTV%gISXc1<R@'A.QBd\uP*1rhO,o<\N/W[PMM[1GLPPk`!el;\
+rIb-%rdjNgrdk*$rIb-'!/:E,s+bWNM2@+JMi<USNfT6_OckomQ'IZ&R$jD4S=Q7DTV8*UUnsue
+WN*##Xfen4ZEppG[^`lZ]=bhl^VRe)`Pom=ai_fNcHaeadaQ^rf%8R.g=tH>hVd>NioB+]k2tjj
+l07L!m-O--n*fc9nac8BoCW%Ts7ZKerV6Egs8)WirVZTlo)=4?[f:j~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI`4p@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHu1b/hX$
+a8j?Ya90T.b_thFrJUT4rep]3oniR'oo&^`rkeWOs2=fRs2P#XrlFoU"ieO"_o'@__>V"H^&>VD
+]`>_E]`>_A]D];@]CEK0\HTIP['?m?q*b3Nr^QcTs%*/]rC[)_s%NDds%WPir_Ol,Zu9f"EcH2F
+G'\L`I=?ZsK7nr5L5M%TPa.Q#R[KS6S=lIGrh'apUSFQZVP^8iW2ZetWiQ-#s/l:(s0)X2Za-mD
+os=V)!joAErjMg5!42[1s0Dd6[C#q@s0Mj4Za9V9s0+#YYc=V!Wi2kkTqJ-QT:VL>Q^!c#P`q;n
+OH>K^Mi*CHL4t/.IXH?`E,fdpV*^lKT:VU@RWrdfS#*Hf]!@rpNcKl8JT"pdF)-8"DgR1tMG$j)
+H[gd.Nff]uTV.d?:/4MW<E+gHTV/'RU5Y.oP5UXTS"-%@T:VpXW2Zl#Y-6]dZ2ad?n&5(?"N89u
+`lA"unAmAFO,oBbP*2#nQ'IZ%R$a;1S"#q=St;RITqS3VUnsrdVl6PnWiE,$Xf\b0YHY79ZEjJ9
+!joACo)J<tr4qm<s1\N5+fVE<Vkp2bUS=HUTUqaGS=?"9R$a5+Q'IStP*(ieO,f5!N!>2tM2@%E
+L]3#0KnP-XKE$Q&JaS'fJcC?#KE$T)L&Qi,LBNEiM2I5jN+@p.O-#KeP*;,qQC!u+R@B\9St;RJ
+TqeEZVPgAlWiN8(YHY:;Za@0L\@K2`]Y;.r_8=.0`lH0BbKJ/Ucd:(feC<%#f@em3gtgfDi8ESS
+j5f=ak3)!nlKdg'mHs?1n*olHncJFTo`"O`pAamcq#C0iqYU0gr;HTbrdk*Xs*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI`4p@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHtTR$X0=
+R/WHOQMm0MQ3*ChC]8/BC[Gm3C]/)AD>\5BPlI$JQMd$HQN!6DQN*6AQKF5.OSk1/NrP(@MM[1F
+q*b3Nr^QcTs%*/]rC[)_s%NDds%WPir_NuGMHX.f>[C`E@:E^FA,g0@B`DiYD/O<5FEMbNH$FU]
+I!pHmrI5'&K7SZ/L4tB[L]*#7M26tFM2I.IN;\b4Nr+h4NW>(<NW>(<M\qG4NJrdRN/imWN/NRO
+M2-nALkpe=KS"jUJJN]_H[C$_GBS(NF)l;@E,KN0CMRWtBDuHA@U<JL?!^c>=atmJI!^3cG]e.>
+?sJ#+Km\Z*G&hG(Bkq0[8NBgJ?UIgu@VTRD7r2RCASZ.$F*)\QF`U&D7n-3IDL?eXI=-EXDJa?4
+EccGJG'S=YH[L9lJ:N6(KAM=]_uI[Q`VdaT`rO-X`rO3Zb5TT`bl5lec2c,gcMl,kd*^8?df.\s
+eCE+Kf)s[Yg"QDXqq1o$s4Z@prg!MLns;+lO,oBbP*2#nQ'IZ%R$a;1S"#q=St;RITqS3VUnsrd
+Vl6PnWiE,$Xf\b0YHY79ZEjJ9!joACo)IO.s/I6AW2HPiUnjc[TqS-NSt2C@S!fY2Q^3o%P`q8m
+OH5H_NW+k@Mi*@JLkpicL'!'^K`-Q'K)U>hJGt-"K)L?%KE-`*LB!#3Ll$tGMuJZGNK0']Ocklk
+Pa.Q$R$a;2S"-(AT:qsRUnjlcW2ZetXf\e2Z*L^C[^N]V]"G\i^VI\&`5Ta:aN;WKc-FY^dF-Oo
+e^rF+g=k?<h;@/KiT&tZjlY^gl07L!m-O-,mdKW6nc&(\oCV\Sp&Facp\jmeq>^<gqu-HkrUTr=
+s0hrX~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI`4p@e1Po^qbGo'u5<n*]T0lg!`ukN:mej5T"ThVHsd<)Z]o
+;u]_r;,I0d!)EMf!'Tm8q`Fa=oKE4<rB:*Cs$-BEqE=a=qbQu^q+prcr_`Phr_`Sip.tZa!*8\k
+oi(okr)E\rqGd2frDNGZr^HfUqa^ZWs%3/]s%EAcr_<Df!)NSj*^2_I2`<WT3B9,[3B0&Z4$5Yi
+4$,Pe4[2.r5X@\$r]pu[6UO7177Ka:6q9d>8c)-Y9DV?^:&n#d:AI]^:*`V09MJ2U:/+DS91qfK
+8kDWJ9M8#N8Ol6A84c<?7Rom76:!m96N08L69ICn3BB/]4#o>\3''#X2`<QO1c.!E1bppE1,CaO
+5X.Fr4?P\d3^>nm5<hCs4?>J]2)[<K/h8+d.OZu(.kie=3\`QX1c@<S3]fPk6UX@4r]1iU5WhP1
+9h\5R9L1g.5XRq-77K[87n,uI8d%g[9MJ7<:B+i)Ac60:Ac63@BDlECBPIB[!buLdrG;LNs).dS
+"`J@!EH6-tFT6L_Foll4Gl2geGlE!fHN/?lI,n3';sdO>NfT6_OcklkPa.N"Q^F/.R[]e:SXuFF
+TV8'RUnjiaVl-JlWN)u!XKAV-YHP17Z*L\7ZN@MA[Jm]@]",A_]=PTP])]D4<:s/i<;fbo<<&sA
+WMl_mV50o^U7n9RSt;LCS"#h5R$X,(Q'@JqOcYWbNfF$s#)e@qM26tCre:K.KS9;Vs+:6$mXY:f
+s+:3%s+CB+reCH."GhnkMMqImA;uV1OHG]hPE_>uQ^F/.S"#q>StD^MUSO]_Vl6SpX0&M-Yd(L?
+['mEQ\[oGd^;%J"_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h;-uHi8N_VjQ5OdkNV6rlg4!*mI'H3
+nF?MK!qZ'Vrq6<bs7cKes7u]kqtp?irVc<dJcE1YJ,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI]3p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVHH#bK9b(
+rlG,]qT&ZYqhs]rqMY**reUW4re^N0pP]$erPJQOqo&EO!64oVrlG&Ys2YGc`l?!9_o'@`_>h:N
+^\tkJ]tV5Y^&5VE^&PbB]D]>=\H0:Pr4;g:"h2"M[^EL<7/fXS7f5dU8H29[9)hQa9`@cd:&n)h
+;#aBP;H)tID/O?6FEMeNGC+U\I=?`uJqSi4L5:kMO->lsQ^XA4S=H1AStVjNTqS6UUSFW^V5L8j
+VuEOsVlQkuWiZ0$s/u7&s0)L.r3-1)ricU3ZEpjAZ*4/2s0!HGYdCgFXf&+oVPpAfU7n6QStMO<
+Q^F&'QBm`!P5^PZO,f0TLl$q?KS+o,IslWcF`MA8VPU#\St2=:QZd=`R\@?mZD3kPN,k#>Q[Na[
+<D$hFHusFYM3!<gB8h=mM2d[aS"64CQVU@O9N4u0StMdQTq[O.Ocu&rQB[f,S=Q:FTVeTaWN<5*
+YNi=mnF?IDp9:n'qSVjApqm<S`Poj:a2dbl.#j7JO-#KeP*;,qQ'Rc(R$jD4S"-%@T:hmOU8+N[
+V5C/gW2ZesX/u<&#-P/6Yd(I=rj2X3s0Vj8o`+O!r4qj;0#"?cWMl_mVPU)`U7n9RT:VUDS"#k7
+R$X,(Q'@JqP*(ieO,f3YN/NRMM26tCre:K.KS9;Vs+:6$m=>1es+:3%s+CB+re>-BLkpnEMMmFP
+NK0'\OHG]hPE_>uQ^F20S"#t?StMdOUSO``Vl6VqXKAY/Yd(O@[C3QT\\#Mf^;%J#_o0O6aN2NI
+bg"GZdF$Fme^i@)g"P39h;7&IiSrnXjQ5Oekiq?slg4!*mf)YUnF?MK!qZ'Vrq-?dp\4X]s7uZj
+qtp?irVc<dJcE4ZJ,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqIQ/p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVJ1!!1<bP
+!1<_OrKdGL!1*@qnS@`2phTnGs(qaPoPOSDpQYQ?rg*PKqj.5JrKdJMm$@[:s,m;Bi/dSls,I&;
+!K2j27/fXS7f5dU8H29[9)hQa9`@cd:&n)h;#aAr;H'iC=^(f0"^YSC?t!LC@h!$`B5)*rD/XB3
+EclMJrc\`pH$O^_I"$NoJUi=MK)^H*KS>,5re:T1LPL\AL\Zc$M>W82M$AcnMM[.FL]3*FLPCS?
+Lkgb?K7ec,JV&B"I=$<dH$=IUF`_bJF)l5;DJX0+CM@HoB4bXbART"T?X6rA>$+jUI=6KgGBS(L
+A7&SeI#*3%H$!t??#==o?r]ca4&K'b>?>3ECh?7>D.7!gCi+06G'\@Sr^R\m9MAc?H[L6hHu!S:
+EH-)CF`qtSH2`*mI"-WrJc:;eL&\OYFS:Ci_o0Lk`V[XVa2Z-ua8a6Zb5TT`bl,fdcMu2jcMl/h
+dJhSne,Ro(e^i='f\+s1f[p&R!8%5&rn.;*gm%i(s-E;D.#j7JO-#KeP*;,qQ'Rc(R$jD4S"-%@
+T:hmOU8+N[V5C/gW2ZesX/u<&#-P/6Yd(I=rj2X3s0Vj8o`*a0s/ITKW2HPjV50l\TqS-OSt2C@
+S!ob4Q^3o%P`q8nOcYWbNfB!VMi*@JLkpicL'!'^K`-Q'K)U>gJGt-"K)L?%KE-`*L1uF!Ll$tG
+Mi<USNfT6_OcklkPa.Q$R$jD4S"6.BTV8*TUnsrdW2cl!Xfek3Z*UdE[^WfX]=bhk^VI_(`5Ta;
+aND]Mc-FY_dF6Uqf%8R-g=tE=hV[8MioB([jlYail07L!m-O--rpKmWnc&(\oCV\So`Fj]p\jme
+q>U6fqu-HkrUTr=s0r#Y~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI]3p@e1Po^qbGo'u5<n*]T0lg!a!kN:mej5T%UhVD+/<)iip
+"]J;s;,L0f:]F/i4S_/54SV#:4SLu=55@A<55IGA4TA4W:B"&a:A[ia;#X>h:]OAi;"[W_;#=;i
+<W,ku;cH`j;u]eu;cH]l;uoospJV&iq*b3Nr^QfUr^d&\rC[)_s%NDds%WPir_WVl##\Ad4#]&V
+rAXm<3B/tr3r_>M4$#Ga4$>\j5<qO55lO(L6N9CS6q'QB7K>sX8-):Qr^d)\r^m2a9);3X9E@d[
+r(@Sn91qfF84Z<C8kDTF84Q9Cr^HoW7fGaU5=GK<s$6oU5sdau5!;"ir](fV2E3]X3B/uS2E*NP
+1c.!I1c.'H2)I*Fr]`b64?PYd3']Yj5<V1n4ZbY_2)dHN1+jt!+<N-b0Jk=92**]V4$PMZ3B]Jg
+5XIk-763Fi3BoYn8khuQ92%W85sRg:7/o[a6q9^:7n?3D91qrQ:$PLR>5^\Z:AeZ"Abfp>B4u&Y
+C]A/KC]8,MD>nGQE;a_TE<:0&FT-@\F9$I_G5ZXdH$K12s*FZk!IRi0;ZBVj;ZB\b<%*`dO,oBb
+P*2#nQ'IZ%R$a;1S"#q=StD[LTq\<XUnsrdVl6SpWiN6#XTkr3YctC;ZMq31[/[N<[^ioX\[o?M
+])oRS\*d5j;u'DmW[k'IVl-DgUnaZXTqJ$LSXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMM[1GLkkta
+!el;\rIb-%rdjHerdk*$rIb-'!/:E,BnqM#M2@+JN/WaVO,oBbP*2#nQ'Rc(R@9V7SXuFGTq\<X
+V5C/hWiE/&Y-5(7Za7'J\%0&]]Y2%o^r""-`Q$!?b0/#RcHjnce'uq!f@\d1gYCWAhr*JQj5]4^
+k3(sml0@U$m-X6?mfDqJrpg-^o^r.U!quB_rV6EgrqcNhrVZWmo)=4?\,Us~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb*VAsoo'u5<n*]T0lg!a!kN:pfj5T%UhVHH$bfe*,
+a8X0[ans0RMs#upMu8J4MZJ]nr/(K4qhk3-"2_mk_YqCJ`;IRS`r!gUaT'<ZaT'9^`l5mq_uIUH
+_>h=H^\Y\E^\PSF]tD#T]DfD@\c98@]DfDA\H'/=\,Wf8Zhd)h7K,dR8,l-[8c;9]9E.]b:&dug
+:]=0C;,U:j;cK$(QY^PZEHH;GGBeIZH[:-jJUrE)KS>/8LkpqKOHG`kQ'n)/R[p&KT*h6`T:qpN
+T:qsSV>[:iVuEXnWVrh0WN)qtX/rJ0YcOk(W2HSmVl$<iVZ<OlUAghiTUhO=R@!o=rf[_QOHGZb
+O,]*WMMI)gL1Z-jJq&2rH#n%HDf'?dVPKoXS=Gq4G&_8cUq3M0TU1b!DhXa;Ap[fSChn-C:OI;5
+L5_$`;i6ZdKo;"UR[p.EQqgCM9iG"fJY8[1TqRI-OHc#qQBmu0S=Q:DUSaodW3!/)YNW4in,`'F
+qNq#^ZiC'Cm)8V8#fO^$`l?'>aN4A$q8b+GNK0'\OHG]iPa.N"Q^F/.R[]e;St;RITqS3UUnjia
+Vl-JmWiE,$Xf\b0ricI/ZEjJ9"LPSE[^Pi.o>1C@n\>+</?5\JVl-DgUnj`YTqJ$LSXc1=R[KP0
+QBd`"PEM)kOH5H_NJrgSMM[1GLkkta!el;\rIb-%s+0Hcs+13%rIb-'!/:E,!JcL1M/J3/N/WaV
+O,oBbP*;,qQ'Rf)R@9V8SXuIHTq\?YV5L5jWiN5'Y->.9Za@-K\@K2_]Y2(p_8=+/`Q-'Ab0/#S
+cHstee'uq!f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$m-X60n*oi:o()DDo`"O`pAamcq#C0hqYU0h
+r;?Nardk*Zs*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb)"dFjo'u5<n*]T0lg!a!kN:pfj5T%UhVJ-u"IGF@
+Q^I`<rKdJMnndc1rbDIKs(_RL!,DIJs(h[NrG;LNs).LH!,VCoqj%2IrK[8Grg3YNrKli9rg!>B
+rf@,@rfI/Br/^u@OHAmkr/U`8!fMqnqF(<Or^QcTs%*/]rC[)_s%NDds%`Sir_Ob8;GpFl<-DMi
+>$5-8>[(N@?X[DQA7K.]AnYmnC27[(DZ4VTEs6]0G'J7WrHeKk!e#NHrdP*%JUrE)Jc:8tKDL6*
+KnP/5Knb?]LBE9aJqO#Q!.t)urd=ipH$K:3(NaeAF)l;@E,TZ4DJX0+C1q<nAn>L`@fBau?X6r@
+>$5!0IXQZmH?a[VF(AT^H$kEqJU)<RC0G:lAQ)i'3DrdW?q"I+?tF(e6:l$4@V'=lDf^)JH$0*V
++@](!95/^"I=-EXCi465F*2VLGBe=WH?ssgJ:N6'K7iBArNlQGqK2Oerl"`Rq8WBRs2k8_rQG5b
+rQY5brm1Vk!7Ceos3q"t!S,d#f)jUVfDa>&f[naSf_a>)g6@heQ/7c*Q1U@nN/`jYO-#KePE_>t
+QC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YPta-Z*L\7ZNRYC[C3O9s4regWi;qpVl$;d
+UnXQVTV%gHS=?":R@'>,Q'IStP*1rhO,o<\N/W[PM2@%EL]3#0KnP-XKE$Q'Ja.dcJcC?#KE$T)
+L&Qf-LPYqdDMj@2N/`jYO-#KePE_>tQC+&-R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?P\[oDc
+]t_=u_Sa@3a2lBFbKS8Wd*^:jeCE.%f\5'6h;-rFi8N\UjQ5OdkNM0plKdg'mI'H3nF5u=o(2JF
+rq6<bs7cKes7uZjqtpBjr;H3cJcE7[J,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb-hR$$o'u5<n*]T0lg!a!kN:pfj5T%UhVD+/<)cdo
+;H$Ll;Gg:f;#O2b4S_/84SLr94Sh5@4odbF55m_A55IDC4AYrOr_EPi:\mi`:]!uf;>!`f;,C%b
+pJ:]`r)Nbts&Jtr!)rkrlVdmb;c?Zk;uT\k7/fXS7f,^U8H29[9)hQa9`@cd:B+,h:`iP4;H$Ln
+5;,)W2)dKS2`NcW3]T5]3]fDc4Zkeg4$!:%!BiOD56=):5l<qI6N0@L7/]RU7n3>FrCHlWs%*,Z%
+7W`R779O4779O26pa3=6iTOX6UF+)5=594*BcMI3BB,[4#o>`3B9,[2DmBN1c.'I2`!9H1c7/i1
+f6%n5X.Lu4ZYYc5X%=q4[)"k3]T,U2)I0E/Lqq`,qUW$0K(R>2)mZP2EsGb2`j/c5X@b)76!:g3
+BoYj7SHEJ92%W95X@e+77B^87Rom;r^[2b9M8&R:$>@N=o^b_5P\(PAGg$:Ad`6`AnPdlCMR[#C
+23``rbMROrbhaS!,hdSs)A-]F)uC$F8g:[G5HLcH$FT4H2i3iHN8Hk;sI9X;>sJn;t<m=N/`jYO
+-#KePE_>tQC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YPta-Z*L\7ZN[_D[C3NQrji$>"
+hV@U[^ER1<;TVh<%P&KW2HPjV50o]TqS-OSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!VMi*@JLkpicL
+'!'^K`-Q'K)^DeJH(3#K)L?%KE-`*L&m'creYNMMi<USNfT6_OckomQ'IZ&R$jD4S=Q7DTV8*UU
+nsueWN*##Xfen4ZEppG[^`lZ]=bhl^VRe)`Pom=ai_fNcHaeadaQ^rf%8R.g=tH>hV[8MioB+]k
+2tjjl07L!m-O--n*fc8nac8BoCW%Ts7ZKerV6EgrqcNhrqu]mo)=4?\Gq'~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0lg!a!kN:pfj5T%Uhu1e$bf\$*
+a8a6\ao0<OMs#ufMuS\3MZAY3MZC]o_tM%H`W*sTa8!aU`s0Q&`Pf[2_XtYI^q[Xu_"PPA^A>V@
+^&bp[qn)d;r4<0E\[T#T['TWtr^HfUqa^ZWs%3/]s%EAcrCm>g:J^sd!`;inr_kdU<E<.ZCi!m(
+EGoi<F`qqRH$=O\I!pKpJ:W<'K8##9Ll%%INf]EfP*2#nPa@c,SXc1>SXuFGrLj4cr1O"^s.]Xk
+USIg_!i)H^rgsLgT:VUES!f\2Qi<:sP`qAsPEM#gP*(c`NfB!WMi!CMM26q?L4b&-IXQTjG'.eC
+E,TWiUnscXSt)=?QBuW0B:>?qYH41WNHV1ZQ?RI]8o/<dHV\R)Jr5VE9i=iGIY*3/Nff^!StMTN
+:/+GV<)c_ETVSBWUQ:M#Q'IZ#R@B\;T:_kWVZa$$XfnqjYl*tknX'6@q3V&a!N2g&s89e&`:_%J
+_udot`qmaQaT%2GNK0'\OHG]iPa.N"Q^F/.R[]h<St;RITqS3VUnsrdVl6SpWiN6#XTkr3YctC;
+ZMq31ZiIN5[e0Ul_>V1=^F6grWMl_mVPU)aUS=HTT:VXFS"#k7R$a5*Q'@JqP*(ieO,f3YN/NSm
+M#iEfre:K.KS9;Vs+:9%q1/9jq1/Krs+:3%!ec8]re>9FLl$tGMMmFPNK0'\OcklkPa.N#R$a;2
+S"-(AT:qsRUnjlcW2ZetXf\e2Z*L^C[^WcW]"G\i^VI_'`5Ta:aN;WKc-FY^dF-Oof%8O,g=k?<
+h;@/KiT&tZjlY^gl07L!m-O-,mdKW6nc&(\oCV\Sp&Facp\jmeq>^<gqu-HkrUTr=s1&)Z~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0lg!a!kN:pfj5T%Uhu&lDR$X-8
+Qi<9NQgS\PC\hlED>eAID>'4eQ2?mBQNWV@Q^4!-QMm'KP4k%:OT1I8ORS;3NfF$rs,-\Ar^HfU
+qa^ZWs%3/]s%EAcrCm>g:J^sd!`;inr_j,&<E<.>=BJ^0>5h_1>[C]C?t*RDA,g'AAS5Ufrb2^T
+D/O60DfB]9F*.D)s*"HgrceTlH[:!bI/SKnHiSTjI/A?hI/eKmH2`'gH2i'iG'.s+F96K&ErKtZ
+DJa9.rbMOJs(D@CBOk[b@prbR?=$lB>$+j,=FP^HI!^0aG^":O@U3/_HA$cqF`D5*Hu!S(=\CeR
+<*3Eo='T3JChH1088VdGAnc("EclVPG"G4p7n-0G94rU"I=-E[DK'T9F`qqPGBnI]H@13mJV*lR
+k(WiArj2[3rc8!ZqfMdj!iMp6r5JHNs2Y/\!6P5_rQG2arltJg!6tMgrm1Vk!7CeormLr!f%0fO
+!S5g#f)=5#f`Km[f`'P(g=VYhQ1pUEN$aOEO,oBbP*;,qQ'Rc(R$jD4S=Q7CT:hmOU84T]VPg>j
+WN)u!XT#=+Y-5(6Z*CV6Zi@B4[JmW,s5&kcWi;qpVl$;dUnaZXTV%gISXZ+;R@'A.Q'IStP*1rh
+O,o<\N/W[PreUZ3L]3#0KnP-XKE$Q'JbailJ,+WpJcC?#K*$^[L&QgDLPUeDMMd=NN/`jYO-,Tg
+PE_>tQ^F/.S"#q>StD^MUSO]_Vl6SpX0&M-Yd(L?['mHR\[oGd^;%J#_SjF5a2lBGbK\>Yd*^:k
+eCN7'g"P08h;-uHi8N_VjQ5OdkNV6rlg4!*mI'H3nF?MK!qZ'Vrq6<bs7cKes7u]kqtp?irVc<d
+JcE7[J,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0lg!a!kN:pfj5T%Uhu6RR<;oeq
+;u]bq;>sAl:[pRC4o7A83rhDA4nh,A4[)(,4TI\C4TJ=W:Adob:ARc`;#X>d;#aDl:]O;j;#3ub
+:]aZt<V]Sp;cMILr_iV]r^HfUqa^ZWs%3/]s%EAcrCm>g:J^sd!`;inr_jD.<E<-^1,CmI2`<ZU
+3''#Z3rM&F3]K/^4Zkhg4?E@$!'L0Cs$$]R5X@\&5sbE8nj<CDq*Y-Js$6]Q5sYE5&j/<?5<h=q
+4ZYbh3]K2\3]fA]r\tWN2)R9M2`EWQ1c.!D1c.*J1c.!E1Aj?B5!;"i3]]Jh4T7Q;4?>J]1c@EP
+1+b""*%!6g0eY(11c@BU1,h0W1c@3P4Zu"q6:=:&3]K,[5<_4u9h\5R9Kka.6psI47n#m;7S$$@
+7nZNK9MJ7D:A\5o56*nC5Q+=XVl'H(qdfe@B)H9EBPD0rC]%rIC]8/MD>\;ODZFbUEW1"XF8p=^
+FoHOdGBe@VrcnBeqg/9h!.=T@p/:feqbmDjr_N_p;GpFloMkjL-B4%HO-#KePE_>tQC!u+R@9V8
+SXuFFTV8'RUnjiaVl-JmWiE,$riHC-YHY79Z*OA8s0Md6rjMj:rOE-D\@&]O\%([%s&8kq!*/ts
+-`X/EVl-DgUnjc[TqJ$LSt2@?R[KP1Q^*i#PEM)kOH5H_NJrgSMZ/G5Lkkta!el;\rIb-%s+0ur
+q1&3js+13%rIY0)Kn]M\D23q(M2I1KN/WaVO,oEdP*;,qQ'[l*R@B\9St;RJTqeEZVPgAlWiN8(
+YHY:;Za@0M\@K2`]Y;.r_SX71`lH0BbKJ/Ucd:(feC<($f@em3gtgfDi8ESSj5f=ak3)!nlKdg'
+mHs?1n*olHncJFTo`"O`pAamcq#C0iqYU0gr;HTbrdk*Zs*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb)>*Oko'u5<n*]T0m-<j"kiV$gj5T%Uhp0OHblc/2
+aN4>#s2k8]m>L(`k_fG[ou-XE!64rWp;dEX`lH*;_u@OF_$7]i^V7Cs^uiE/^AknH]`#JB])B8@
+\H9:L[eiJl7K,dR8,l-[8c;9]9E.]a9`e'c:]=/l;,U<k;ZTitr`0\6=BVJ1CM[d&Df9Z<F)uPK
+G'A00H4>4LI=HctJV/Q.LPUbCr/1W8NK!js!K`HCP5UUAPQ6p?PR<V=PEM&lPEM#hOoCGZO,f-X
+N/W[QMMd7ILPLV;L51D5K7SQ%I!p?cF*)><Df0?cUS4<OSsu1:Pa-9,BU>3\\=U@<R?NSbI?9.l
+IoAmR91hj+G(PX6LJ:ZDN.?S;Mia'hR[p.FQr-[T9hePc;,a-\US=KCOHTR-&!rcTSXuFFV5C/g
+Xf\b0YNE(gn,2YXPa.N"QM$RHV50o^\,Z<Bn&4h8"N89u`l@kqrl?[LN/WaVO,oBbP*;,qQ'Rc(
+R$sM6S=Q7CT:qsQUSO]^VPg>jWN)u!XKAV-YPta3Z*L[AZa@*I[JdQ-s8Be4_#2%I_"5>=^+64_
+Vl-DgUnjc[TqJ$LSt2C@R[KP1Q^3o%PEM)kOH5H_NJrgSMMd7ILkktas+LH+rIb-%s+1#sp4)ph
+s+13%rI]!@KnY89LPL\BM2I4MN/`jYO-#KeP*;,qQC!u,R[]h<StD[LU8+N\VPgAmWiW>*YHY:<
+['d?O\[f>b]tV7t_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8N\Uj5f=akNM0plKdg'mI'uB
+!V#XYncJFTo`"O`p&Ojcq#:*hqYU0gr;HTbrdk*[s*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb)>*Oko'u5<n*]T0m-<j"kiV$gj5T%UhjU#4RK&WR
+QMd*KQK`5MC\V`AD>nGND>ogqPkLC?QL^C2QMm'KPk:+$OS=h9N<5&sMu,pA7K,dR8,l-[8c;9]
+9E.]a9`e'c:]=/l;,U<k;ZTitr`0>,=BToJ='/R->5hb+>manD?t*MO@:E\UAH$-EAnPaiBkqJ^
+C]A2UD/O91E,]i;r,MgZFSp7]FS'VVFE;JBqf)RQ!,qjS#]+?oCMRa%BkmTZ"D)+T@q5LI#@V"I
+?<pi@>5hVI<IT=CH[9p\G'.kH@U32_G^>-jL4=;`CM$shA5?Do4&Z&B(1CEUBP_<M8kEl/AS5dr
+Df^&EH?s[)r^RYl9h\5RH[L6hHYdS<EH-&BG'A1Vrd"frIt*!#JqJ^;L&\CdZEpmE['OamEcH)>
+Er:"VF9AA8Undk,q8WHTrlG&\rlb;brltGf!mf0;rm1Vk!7CeormUks"4l)Tf)F5!f)OA%f_aA%
+g=;GfQ2HsIPq@oQN/`jYO-#KePE_>tQC!u+R[]e:SXuFFTqS3UUnjiaVl-JmWiE,$Xf\b0ric[5
+ZEggC['[6KrO2G"rK7&?lB2(-/Wl-pWMcYkV50o^U7n6PSt;LCS!ob4R$X,(Q'7AoOcYWbNfB!V
+Mi*CKM26rdLAur-K`-Q'K)^DuJG+KhJH(3#K)L=>KS>,7L51P?M2@+JN/WaVO,oBbP*2#nQ'Rc(
+R@9V8SXuIHTq\<XV5C/hWiE/&Y-5(7Za@-K\%0&]]Y2%o_8=+.`Q$!?b0/#RcHjnce'uq!f@\d1
+gYCWAhr*JQj5]4^k3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7QHerV6Bfs8)WirVZWmo)=4?\c70~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf!;?Eb*q]'po'u5<n*]T0m-<j"kiV$gj5T%Uhc*QR;cH^p
+r_i_os&&blkrer.q)nF6s#g<Ep-/I=r]L!>s%iSgr(m>fpJ:]`r_`Acs&&Vh!`;cjr(m2d!`)it
+r`/ttku7RZmo06aqaCEPr^QcTs%*/]rC[)_s%NAc!_uNer_NYn;H!Km!E<(u<YSV;=Z\>s2DmBO
+2E<]U2`WiX3B0(u3<2,>497N+r]('A3BB1u3WV?)r&jsAs$-?Ds#p<E!'U*>s#p?D%Qum83]fDa
+3]fAa3]]>_r\sp92Z>WA2)[9I1GpsF1Go%f>r4>n1,M6[5!M1m4?>M_3']Vi5<h=r4Zthc2`3?C
+1GCF1*?QaW-RUc)1H%9U1,_*V1c@<T4Zu"p6:4+.2``oZ3BoYj4\SLB91qK75XIh*77B^97n,s=
+84cGQ9`IiK:An>o=opfL54^uBV50o^A7YXM!bQ(Yqe#qCC&2TDC]8/KD>nGPDZXltEW1"YEr^=]
+FT?U^GQ)jcH2`-hHiJKf;ta,e;u0Dl;>j;o;,U:j;tj6CMi<USNfT6_OckomQ'IZ%R$a>3S"-%@
+StD^MU8+N[V5C/gW2ZesX/rG*Y-7i/#dL\@Za7$G[C,tAs1&3@\[VRF!k#JHrD`_oj]!b1WMcYk
+V50o^U7n6PSt;LCS!ob4R$X,(Q'7AoOcYWbNfB!VMi*CKM26rdLAur-K`-Q'K)^DuJG+KhJH(3#
+K)L=>KS>,7L51P?M2@+JN/WaVO,oBbP*2#nQ'Rc(R@9V8SXuIHTq\<XV5C/hWiE/&Y-5(7Za@-K
+\%0&]]Y2%o_8=+.`Q$!?b0/#RcHjnce'uq!f@\d1gYCWAhr*JQj5]4^k3(sml0@U$m-X6?mfDqJ
+rpg-^o^r.Us7QHerV6Bfs8)WirVZWmo)=4?\c70~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb+nYBso'u5<n*]T0m-<j"kiV$gj5T%Ucd0n^c-=JT
+aN)C#`ra?(aQ\WFMX$*"`V%1G`VmgVa8O*Zanj*W`ra5u_u@OF_$%Qg^:q;Z^uN3*^&l!\]`#GB
+])K8?[JWGl7K,dR8,l-[8c23\9)qZa:&drg:]=2j;#jMn;^taH<E<.%=BJ^/>$GNGCM[g&Df0K2
+F)uJGF`qqQGBeCZH@(!dIXZcqJGt*#KnKAXs+LZ4L51S?M2D4hrep`6rf%/ANK&mTMi*GlMZ8P4
+L]`EgM2D4e#Dn1hKS4u2Jc:00IXHKiH?XOQFE)8;Df0CjU0aLbS=H(;P`g'+BpG0aVOaolS<f7o
+DeOfLE,0,p=&Daf95S9gKT1pb<)JO&Jqf5FOdV`1TqIKE:/4JW9N4tfBqM&oUnONDOd))qQBn#3
+S=Q:EU8=fdXKJ\/YN2nfmelPPnG\^OPlI'BQN3_hs7jM$`::bE_u[isqo:2-MMmFPNK0'\OHG]i
+Pa.N"Q^F20S"#q=StD[LTq\<XUnsueW2ZesX/u<&#-P/6Yd(I=rj2X3!4Da5pAb-.q7m!HrP8$>
+r4X\]WMcYkV50o^U7n6PSt;LCS!ob4R$X,(Q'7AoOcYWbNfB!VMi*CKM26rdLAur-K`-N'K)U>u
+JFe9fJH(3#K)L=CKS>,7L51P?M2@+JN/WaVO,oBbP*2&pQ'Rc(R@9V8SXuIHTq\?YV5L5jWiN5'
+Y->.9Za@0L\@K2_]Y2(q_8=+/`Q-'Ab0/#ScHstee'uq!f@\g2gYL]Bhr*JQj5f=ak3(sml0@U$
+m-X60n*oi:rpg*]o_nFap@n=[q#C0hqYU0hr;?Nardk*\s*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-<j"kiV$gj5T%UrL3_R!go=>
+rg*ML!1)\^lYH*.qJ?7ND>BIrPk:7@QLC1/QMm'KPkgI)OReG4NrG%<Mu6!B7K,dR8,l-[8c23\
+9)qZa:&drg:]=2j;#jMn;]Jb:<E<.%=BJ^/>$F]t>ZY$0>$G37>?b?:>[:Y7?OU=N@prhVA7]@a
+AnPcUB)cKIBkV3oBPR<X!,VXO!GlWPD#\AOC]S<grbMdSC2%?oB5%0T!G5pBAH$'I@UW\Q?XI)D
+?<g`>>5_PcIXQTkH?j^YG&qY4?<_VuI=?KlI!0OJCKjhQ>?=]t8OPm05X/CI?=[ec6qU'g@Us(e
+DK'Z>G'S@O8H)-Z7fQ.&93Q[hI!pBiD/XB5F*2VLG^+L[I!U3jJ:`B*K7r<>rNZC.rNlKDqf2UU
+r,_gY!29A1r5JiZ`l?'uaT'?^b5BH^bl,fcc2l8:rm(YmdF%sArmUks!S#]uec"(ufE0aYf`'S(
+g=__fP6-u6Q2[*LPpqTKN/WaVO,oBbP*;,qQ'Rc(R@9V7S=Q7DTV8'RUSO]^Vl-JmWiE,$riHC-
+YHY79Z*OA8s0Md6r3l>!rfR#<mZIF//#oSHVl$;dUnaZXTV%gISXc1<R@'A.QBd`!P*1rhO,o<\
+N/W[PMM[1GL]3&.K`Hf)K)gN&JbsuhJ,=crJcC?#K6)^"Knb>;LPUeDMMmFPNK0'\OHG]hPa.N"
+Q^F20S"-%@T:hmPUnjibVl?\sXKAY0Yd1UB[^N]V]">Vg^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)
+g=k<;h;7&IiSrnYjlY^gkiq?slg4!*mdKW6nF?MK!V>s^o`Fj]p\jmeq>U6fqu6NkrUTr=s185\~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0m-<j"kiV$gj5T%U;uTbr;u]eu
+;Gg?j;Z]io;#WW54Sh/>4T%A>55m_?4T@PE:\miV:]F8g;>O,h:\[cc;?'Jk:]F5k;>j;k:]4>n
+<W?%^;u9Jb;u]bn7/fXS7f,^U8H29Z9)hNa9`7]c:&n)h;#aAm;Z9T5<)lq!<``C*=]np4,;;AB
+3&NTO2E!NQ3&`eq3!;-"3&ihq3WD/P4?>J`3]T/Y3]T8^3&rrZ48V&33r_5>3X.T*3BB2]3W1o>
+3]AuUr\jg8r\YHJ1GgsE2)I*I2`EQO2`3EK1,LaB5X5638if's4#f2a4Zu"n5!M1m3]T/Y2)[<K
+/Lr4s,U4Q[,ptN"0f:pO0K1gQ1H%-Q4?Ynp6:O=03''#[3B9;d5!_h99MA)Q5!_J%r^75d7Rfm;
+7n?3C92/)R9hj\D!*];'rEB.^!^/_2o038LAGp'?AnV*V!bQ(Xrb27F!c)OcrbMLLrGDOOrbhjW
+EH1tus)S0^rH8'^s*+Edrd"Hgs*Ocns&A_kp/:cdqGR>jrD<Jj!E)km<%3]_N/WaVO,oBbP*;,q
+Q'Rc(R@9V7S=Q7DTV8'RUSO]^Vl-JmWiE,$riHC-YHY79Z*OA8s0Md6r3lX8#e%.IZa@-L\%)E:
+q,@#er`/Yk/#oSHVl$;dUnaZXTV%gISXc1<R@'A.QBd`!P*1rhO,o<\N/W[PMM[1GL]3&.K`Hf)
+K)gN&JbsuhJ,=crJcC?#K6)^"Knb>;LPUeDMMmFPNK0'\OHG]hPa.N"Q^F20S"-%@T:hmPUnjib
+Vl?\sXKAY0Yd1UB[^N]V]">Vg^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)g=k<;h;7&IiSrnYjlY^g
+kiq?slg4!*mdKW6nF?MK!V>s^o`Fj]p\jmeq>U6fqu6NkrUTr=s185\~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kiV$gj5]+Vrm1Sh#0kB7
+aN)?Brl5)]M2D.fl\jn_o8EU*s,-ru`Pqhprl+lTpr36Ps2Y/\qoJo\aiXP'rl5)[`5MVkotg[D
+!PcAFNW6f[^[Ai9]EPpX\@8rUrC$WRrC6]Ts%*,\rC[)_s%NDds%WPir_WVl!)iep(fXL8<`W:'
+=BSd1>?b?;?!^lpBonNpD/K8is)7mVs)\lpGBe@VG'8(SH$O^_I!^6gI=M*Es+1<'J:RWMrIXlu
+rdc/?J:N3'J:N)tI=-HjI=6HeG]n7NEH#l8EGfW1CM]^DTO+.\SXc1?PEL!+C6k?\]Ul+'Q][/K
+CPdb5I[Y[f9PJB]I=#g[:k+@bM,$uHN.?S=NffWsS=uUD;,0e[9h\Pd:lq<BU8+EVNf]EgQ'IZ%
+R\$(@T:VaQVl?\uXo>NaYl=(fn,DhSQ2d'MQ'@O4Q1pUFQFd+k`;[[G`9tPC`;dgS`rClHMi<US
+NfT6_OckomQ'IZ&R$jD4S"6.BT:hmOUSO]^VPg>jWN)u!XKAV-YPta3Z*L[AZa@*I[JdN6\+]k%
+_>(hG^])%@^\b`!WMl_lV50o^U7n9QSt;LCS"#h5R$X,(Q'@JqOcYWbNfB!VMi3ILM26qBL5(D9
+K`-Q'K)^E!JF\3eJH(3#K)UE&KE-`*L&m'creY!>Mi<USNfT6_P*2#nQ'I]'R$sM6S=Z=FTqS6W
+V5C/hWN*#$Xfnt6Za7'J\%&u[]Y2%o^r!t,`Q#s>aihlPcHjkbdaZdtf@S^0g>(N?hr*GOj5]4^
+k2tjkl0@U6ljN4Kn*fc9nac8BoCW%Ts7ZKerV6Egs8)WirVZWmo)=4?])R9~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0m-Ep#kiV$gj5]+VRJ`NRR0/hB
+Q'M?7s-NRtk%s@!n8/,Arg*PKrg*JI!1*DFs-E\Org<YNs-WYLoTfKBrKdDIqJ?1ojH/qns,I&;
+!/peDr^HcTr($cXr^m&\s%EAcr_<Df!)NSjs%rbor_jP2<E3(#='&L,=^#$6>[1Q@;/'9UFoGMC
+=Tqu3>?b98r`fb9?XR2J?sd8L@K'a9@0'hIqIKS:!b>eNrac%?s'uLKA7]=_AS#C`A7K-I@UEPQ
+?sd;L@:<ML?!^c@>?b64=]eg0=&s]rH[L0cG^":RFE1kt>Bb@=LO"5nFDkr&=__Se@")<J4&ApU
+?!UTB6XaVEBLPNaDI[6mD/aN;GC"RX84Z3@7n-3H961#Y(4CRXD/F32EcZAHGBeCYH?spbIXm!$
+re'3ar3?4+rj2NCs)A$Zr,MaWqK)[Y!lW'srPniW!65#Zs2bPhbKJ,Pb0/#QrQY>e#LC]@cd0tc
+dJ_Mme,Iksec4.uec42#fDaD(f@\aSf`9b'PQ7!)Pl$[DPlI$KM(FRDN/`jYO-#KePE_>tQC+&-
+R[]e;St;RITqS6WUnsrdVl6SpWiN5'Xfel,YR%M>ZEpmE['d=?[K*f1s8S5TOR\J1O>*Z4Vl$;d
+UnaZXTq@pJSXc1=R@'A.QBd`"PEM&iO,o<\N/W[QMM[1GLPLV=KnY3YKE$Q'JbsugJ,=crJcC?$
+KE$T)L&Qf-LPYqd?]'c#N/`jYO-#NfPE_>tQ^F//S"#q>StMdNUSO``Vl6SpX0&M-Yd(O@[C3QS
+\[oGe^;%J#_SjF5a2lBGbK\>Yd*^:keCN7'g"P08h;-uHi8N_VjQ5OdkNV6rli-5YmI'H3nF?&>
+o(2JFrq6<bs7cKes7u]kqtp?irVc<dJcE=]J,~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kiV$gj5]+Vr_r\n!`Dln
+rDN_p4oIMC45i:%48_5:3t"264?Yeh4Ztnj4?`F$s%`Mep.tW^r_NPjr)*;erD38dr)*JjrD3;e
+!'U3As&T/"r`&,\pJUidr_i\_r^HcTr($cXr^m&\s%EAcr_<Df!)NSjs%rbor_jP2<E3(#='&L,
+=^#$6>[1Q@1,_<Z4oI8?2)[>j2Zu*!2E*Vm2[_T(3B0#Y3&roV3'$t!r&Od9r\ss>3&pmr!B<+=
+2\J#*2Dd<L2)[?O2E*KM2)R9M2#]?<2Dm?K1c$pC2#]B45>FC-5!;"j4$,D]5Wq7p5!;7q4#o>\
+2`<NN1G^XK-lsBT/L`;-1c6a<2E<lT2E!cW3'',a5<hJ%6U`sq3'')\5Wh5$92/)R92%Q85lO.Z
+779X87n6$:84cBGr_3>di_KMWqcWl$s#pEGrB1*C!'^!=s(24Bs(;=Fqe#qCC&VlICB/,KC]/)K
+D>nGPDuObUEWC1[FS^.ZGQ)jcH2`-hHN8Hm<Vobm;ta,e;u0Dk;>j>k;?'Pn;u]hsM(FRDN/`jY
+O-#KePE_>tQC+&-R[]e;St;RITqS6WUnsrdVl6SpWiN5'Xfel,YR%M>ZEpmE['d=?[f<f:[/R?9
+['d?N\%#C:p/Cfeqc3Dj0WD"KVPU)aUS=HUT:VXFS=?"9R$a5+Q'IStP*(ieO,f3YN/NUOM2@%D
+LPCP;KnTDWs+:9%qge6eqge]ts+:6&s+CB+re:H/M#N6<MMmFPNK0'\OHPcjPa.N#R$a>3S"-(A
+TV8'SUnsrdW2ZetXf\e2Z*UdE[^WcW]"G_j^VI_'`5Ta:aN;WKc-FY^dF-Oof%8O,g=k?<h;@/K
+iT&tZjlY^gl07L!rp1$[mdKW6naZ2@oCMVRp&Facp\jmeq>^<gqu-HkrUTr=s185\~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(%h+go'u5<n*]T0m-Ep#kiV$hj5]+rci22lc-+5M
+rl5#[p5/^)mYg.`onrm/a2[eks2OrTrl4oXr5er]rlP/\rl5)[`5MVkot^[E^\!NV^[Ai3]`c'^
+]=GHM7/fXR7f5dV8H)3Z9)hQa9`@cd:&n)g:]XEkr_rhr!*0#!$<L>4=^#!5>[1Q@ra-:GLgFq_
+P%ff7P%ncLDf'B1DK,Sp$?1!*F`VYHF`qtPr-/9gG^045r-/NnG^+LZG^=UZGQ)h+GBS1RGBe:S
+F`_VDE,KT5D/F')Cn@5jSXZ.?rgH$AP`h/lO,]*VL4b)LT<#/^OGS*pK85Y4DIud>G"[(/;LhP@
+KoM0k:K17iKR\T/NKB?lSY)RICJdi%9MPLc&;HdKTVJ<WOH>]jQ'IZ%R\'ML#bRcaUo:5mY,qW+
+iNN=LrU0UPrU9fOr0@2Er078JqNh2J])Us3m)/kAs2G#X08PIAMMmFQNfT6_OckomQ'IZ&R$jD4
+S=Q7CT:hmPUSO]^VPg>jWN)u!XKAV-YPta,Z*OA8s0Vg6rO2a8q#CB1pqZ=4qn=2OVl$;dUnaZX
+TqJ!KSXc1=R[BJ/QBd`"PEM)jO,o<\req5CMM[1GLPLV=KnY3ZKE$Q'JbsuqJ,4WlJ,=crJcC?$
+KE$T)L&Qg?LPUeDMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:hmPUSO`aVl?\sXKAY0Yd1UB[C3QT
+\\#Mf^V@V%_o0O6aN;TJbg+M[dF$Fme^i@)g"P39h;7&IiSrnXjQ5Oekiq?slg4!*mf)YUnF?MK
+!qZ'Vrq6<b!;HHerqZTjqtp?irVc<dJcE@^J,~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(%h+go'u5<n*]T0m-Ep#kiV$hj5]+tRJ`NRR/iTP
+PlR-CCZ]HsC\2ECQ1L=9Q2R'KR/`NOR/30CQN*6JQN*3MD=q`&OSOq?OH,?\NVu9E7K#^R8,l-Z
+8c;9]9E.]b:&drg:]4)j;,[Bls&8tur`0A-=BSd1>$G6:?!dM;&7B6I=`edkDK9i#=BJ^.>$Ci.
+!a8f4r*0G3>[1TA?XNe="'o5>@/OC3@/XI4?jC%F?<piA>[@;5s',M,r`T)"#(1cEH$Xa\rcV.]
+F)c2<Df'6'BP(h#H@:3`DJ<H[B4u$`=&(tB=?ftr7U\VOAnl3P78$9FBOYOcCN"05Fa/1V=@YnP
+84H9I9Pf*&H[U<hCi432F)uJIGQ)jnH@1'cI=Hd!K)UB&L>dgeYH[o/rj)O0!H<&WEr9qWErL(X
+Er0qX`;IXR`rO3[ao0E_b5TQabl5lacMu2pd*^:ie'c\De,%Snec45#f)jUVfDaG%g&KdVPkpUD
+PV7iLM2I4MNK0'\OHG]iPa.N"R$a;1S"-%@StD[LU8+N[V5C/gW2ZesX/rG*Y-7i/!O8s0Zi@E4
+[JdQ6\+p"'On+V+Oo(4_W2HMhUnjc[TqS-NSt2C@S!o_3Q^3o%P`q8nOH5H_NW+kEMi*@JLkgb?
+L4t>7re(6&s+1&tr."Qlr."Tos+13%re(6(!/:E,BSVD#M2I4MN/`jYO-#KeP*;/rQC!u,R[]h<
+StD[LU8+N\Vl-MoX/rG+YctF>['d?O\[f>b]t_=u_Sa=2`lQ9EbKS8WcdC.heCE.%f\,!5gtgiE
+i8N\Uj5f=akNM0plKdg'mI'uB!V#XYncJFTo`"O`p&Ojcq#:*hqYU0gr;HTbrdk*]s*t~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kiV$hj5])trDWVn"]J8q
+;H$Nm4oIM=4756/49%G?49%G<48_5948h;A:Amle:A@W^:B"&f;#aDh;#O2d;#=)i;#O2f:]N]Y
+4nq/><W5tY;u0Di;ZK_o7/fXR7f5dV8H)3Z9)hQa9`@cd:&n)g:]XEkr_rhr!*0#!$<L>4=^#!5
+>[1Q@ra-7F4"rNS5!M+l4?#,U2Dd9N2Z5W82@)0!2E<]S2`<Pj2ZPc82ZPi72ZYfqrAag8#W4Lt
+2)[?M2DkCjr\OX62?#E01&sT=5"In#4Ztnj3BB/Z3&roU2`*BK4?Ybf3]AoS2)R3E/1W%f+"ANf
+1,(R8.lB:H0JGFE2*EcT3'05c5=%S'76NUj3]]8c5<VO79E\!S5X@d:6i][S7fZ!V8-V[[9h\5T
+:#JbH>Q.h'=oMS)>P^M`4oRPE4[/O'!G,mBB*2g[AnM$T#\[pdC2.O"C23``rbVOMs).gSrc.pX
+!-A-]s)n?`rcJ9cGBa"1rd"Hgs*Ocn!*9)!pf.5koMYWdqGR)cs&/kq08PIAMMmFQNfT6_Ockom
+Q'IZ&R$jD4S=Q7CT:hmPUSO]^VPg>jWN)u!XKAV-YPta,Z*OA8s0Vg6rO2a8s02j8['d<M\$f78
+o2GTepf7/i+K238V50o^U7n9RSt;LCS"#k6R$X,(Q'@JqP)t`cNfF$s$]Bn!M26qBL5(D9K`6W(
+K)^E!JGaonIf+]mJH(3#K)UE&KE-`*L1l?uM2@+JN/WaVO,oBbP*2#oQ'Rc(R@9V8SXuIHTq\<X
+V5L5jWiN5'Y->.9Za@-K\%0&]]Y2(p_8=+.`Q$!@b0/#ScHjnce'uq!f@\d1gYCWAhr*JQj5]4^
+k3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7QHerV6Bfs8)WirVZWmo)=4?]DmB~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb)>*Oko'u5<n*]T0m-Ep#kiV$hj5]+Ecd:&<ci;8l
+bfe--a8_%dM>`>'MrT]hMuLcs`qm[O`r*dU`r=$YaSa0Zb5KH^aSs6[`<=)q_ns:`_=rohNqeV2
+^Z<-.]`c![]=GKO7/fXS7f,^U8H)3Z9)hQa9`@cd:B+,h:^9iq;H$Ln<)rou!EWD&=TM]1r`gON
+?=.&I@:E\UHWjR1NejgBQ\:<XOcu&qQYUDQD/4"eDZFeUDujs"rcA0^FT$:\EY`_:F)l;@EcH#8
+DJsE1Df0B-C203+R/WLFQ^O2+Q^=#)OcXEpBP3U!SY!$^Y-kEXGBS+MEcQ)7CR'$\A5Q$?:/6%3
+:JOea:/Oh_:/?7eK8,8BOHZ*%SY;^KR8H^Q9hkUd+E3mCTV/*TUQ1M$Q'IZ%R@]q>StD^NVQ$Pq
+XKA\0Yd",1iirIMr9jOPr:'WKs-3\NQ'@O/Q2d0IQb<@\`9Y>?`&>SiLl$tGMi<XUO,oBcP*;,q
+QC!u+R@B\9SXuIHTqS3UUnsrdVl6SpWiN5'Xfek2YctC<ZMq03['d=>[f<i3rrBn1_!8]7^+ZF_
+Vkp2bUS=HUTV%gHS=?":R@'>,Q'IStP*1rhO,o<\N/W[PM2@%DLPCP;KnTDW!ePuSqgeWppO<$i
+r.+fus+:6&F+f7$L5(J=Ll$tGMi<USNfT6_OckomQ'IZ&R$jD4S=Q7DTqS3VUo(&gWN*#$Xfnt6
+ZEppH[^`lZ]Y(tn^qmn*`Q#s>aihlPcHjkbdaQ^rf@S[/g=tH>hVd>NioB+]k2tjjl07L!m-O--
+n*fc8nc&(\oCV\So`Fj]p\jmeq>U6fqu-HkrUTr=s1JA^~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(%h+go'u5<n*]T0m-Ep#kiV$hj5]+tRJWHQR0/b>
+Q'LrVj)"!rpMBMgrg3YNqj%,GrKmPO!13SMqNq#Dr0@2GrGD(@hN7_trf7#;r^?`Sr^QcTs%*,\
+rC[)_s%NDds%`Sir_Nhs;GpFl<)cls<WQ9(r`K8*>Q.kO?!^lF?t!MR@q/2'Anu(-Jp1pIEH?5F
+GBd.j=BSd1=]nr-=U826=^#$7>?Y2+>5qe6>[(E8=^"s1=BSc(<s)K)G^912.s?&YFEDSDE*QXP
+>'G7;H@gTqJp^j.=]ng-<E)mpCKae75!;n26!QlG7/fXS6kMjU?t*\[C2@d,F*)VPH$OO'r^R)^
+9M8)crd,H/I=-EZDfBc=F`qtRG^4U_H[:0lJ:`CPKAD7]YQ(j'Z2_-/Zi+hIEH6)>EcH*qEWC+Y
+Er:"Y`W!mU`rO3[ao9K^b5TQcbg"E0cMu2kd*_d>rR:er!7UqsrRLo!!nc,Vrn.5's4Yncqi`mm
+Ll$tGMi<XUO,oBcP*;,qQC!u+R@B\9SXuIHTqS3UUnsrdVl6SpWiN5'Xfek2YctC<ZMq03['d=>
+[f<i3rrA2MORnV7O>!Q1Vkp2bUS=HUTV%gHS=?":R@'>,Q'IStP*1rhO,o<\N/W[PM2@%DLPCP;
+KnTDW!ePuSqgeWppO<$ir.+fus+:6&F+f7$L5(J=Ll$tGMi<USNfT6_OckomQ'IZ&R$jD4S=Q7D
+TqS3VUo(&gWN*#$Xfnt6ZEppH[^`lZ]Y(tn^qmn*`Q#s>aihlPcHjkbdaQ^rf@S[/g=tH>hVd>N
+ioB+]k2tjjl07L!m-O--n*fc8nc&(\oCV\So`Fj]p\jmeq>U6fqu-HkrUTr=s1JA^~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0m-Ep#kiV$hj5])t<;]\n<!-#q
+;H*HUrB0^6o/t\fq+glar_WSiqbI,d!DlSc;#O2d;#F2j:]O;h:]OAk55m_;4TAC=;uKVo;u]bp
+7/fXS7f,^U8H)3Z9)hQa9`@cd:B+,h:^9iq;H$Ln<)rou!EWD&=TM]1r`gIL?=.&I@:E\U4#8<=
+2DmNX4ukVb4Zkkl5;b8T2#K322Z,E52DtIls"sp92)[?MrA=O0qD8+."uJ+l1,D0\rBC`V5<V1o
+4$,G`3^,Yh4oRZ15!M4o4ZY8N0.nh./hS\*1+b"&*ZljX-8@2'.k</'0.nk10/PLE2`Wr_5!M7u
+6Ua@23BB/]3^5ho6;'pFrCd8W5XYN=&k,8Z84Q-?84cBG9MJ/R9heAXr_;BIs',D)r)s&'s',Fb
+rB:3Gr]^<Es$$0Ar+H%Arb)7E!,;=FrbMOMr,)FNs).mVrc&![F*.D(s)\EcFEDYJG5c^bGlE!e
+HN/<mI!binr`/_mr_r#Ype`qILPUeDMMmFQNfT6_P*2#nQ'Rc(R$jG5S=Q7DTV8'RUSO``Vl-Jm
+WiE,$Xf\b0YHY79ZEjJ9!joACr3lX7$*ghE[C3QQ[^T6-;uK\j<VfZJW2HPiUnjc[TqS-OSt2C@
+S!ob4Q^3o%P`q8nOcYWbNfB!VMi*@JLkgb?L4t>7rIY0'JV!]KrI=Qjr."Wps+13%re#9FKnY89
+LPL\BM2I4MN/`jYO-#KePE_>tQC+&-R[]h<StD^MU84T^Vl6SpX0&M-Yd(L?['mEQ\[oGd^;%J"
+_Sa@4a2lBGbK\>Yd*^:jeCE1&f\5'6h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3nF5uIncJFTo`"Lb
+p@n=[q#C0hqYU0gr;HTbrdk*^s*t~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb)"dFjo'u5<n*]T0m-Ep#kiV$hj5\D0cd2U;#LC]@
+c-+5Na8:b_M>E,)Mr]cjM[.AFaN)<?`PqMirP\iXa2e2#!6P,\s2bAcaiVX'`rj?#`PhbnrkeNJ
+s,Hu;s,Hu;r4_rc!06!O#edsc]XkYa6q$uBr^QfUr^d&\rC[)_s%NAc!_uNer_WVl!)iep2,mRU
+<`W:(=BSd1>?b?;?!^lF?smDP@Uiq[AWNX7>CT^^BRtAKI%-:^SnMeOMi<[WOcu"*Q2R!KQi<?c
+Q^O;2S"-";S",t8R@0CSB4YXbrF5hArb*I@Q'@`6RC\ukX.blDMhc4cOb8j`J73G:?;Fa*=&i3u
+<W5l9;,:%dJp<!/N.HV=NKB9iS"61FT:'(`:J4GW:&\*7ELrbpTVJ<WNKTHiQ'Rc)St;LET:_gS
+W2Zi!Xfek3YkbK`Yl=%dmf)\QnGe^IPl$aGQMm'KQMm/`s5h2___?h#Ll$tGMi<XUO,oBcP*;,q
+QC!u+R[]e:St;RITqS6WUnsrdVl6SpWiN5'Xfel,YQ;#7rj2X3s0_d5s0qe'pqZ+.0>=?^VPL#_
+U7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRMM26tCL5(D9K`-N)Jq8LMJGt&jIf4coJH(3#
+K)UC:KS>,7L51S@M2@+JN/WaVO,oEdP*;,qQC!u+R[]e;St;UKU8+N\VPgAmWiW>*YHY:<ZaI6N
+\[f>b]tV7s_Sa=2`lQ6DbKS5VcdC.geC<($f@em4gtgfDi8ESSj5f=ak3(smlKeH9$gmBNn*ol;
+o()DDo`"O`pAamcq#C0hqYU0hr;?Nardk*_s*t~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kiV$hj5ZMorgE\Q"IYXD
+QB^oTi,%drph]Yiqj7;JrK[AJrKm;Hq3UuEqN_)Hs)%^PqeZIuP*(lgphTqIh2hf#NJrfa7/]RR
+7f5dU8H29[9)hQa9`7Ze:/=[b;#aAm;Z9TN<)lq!<``C*=]np4>?kE=?=.&I?t!MR@q9.^E-u4i
+@7NphAQ`5FG]\(T>?tHNDK'T:rcS'\q02a]20jCiG^"@TG'$__<)Zap;cH\#>$G3TG'/%WGDCHl
+I!BaOCM@!TCM.L%@8L'*7m0C57R]fG70,kHr^7MhAm]7iDI[9lCi434FEMnTH$*"T7n3JJ*DK1$
+?@.'GH[L6gD/aE7F*2VLGBnI[I!^0hIt3.LKA)%ZXoP[)YkkX(ZN%92Du4MQEV"5MF8j/Y`r=!c
+aN;QHb0.rLai_d*b6H28c-FY\c2Q#gciVVCdJ_Joe'e6E!7Lhqs4%,#qUbc"rRh2)c]nHn0p79H
+Ll$tGMi<XUO,oBcP*;,qQC!u+R[]e:St;RITqS6WUnsrdVl6SpWiN5'Xfel,YQ;#7rj2X3s0_d5
+s0qe'mu[%$s/.EFUnjc[TqS-OSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!VMi*@JLkph@L4t>7rIY0'
+JV!]KrdXQhrI=`qs+13%re"p<KnY89LPUbCM2I4MN/`jYO-,TgPE_>uQ^F//S"#t?StMdOUSO``
+Vl6VqXKAY/Yd(O@[C3QT\\#Mf^;%J#_o0O6aN2NIbg"GZdF$CleCN7'g"P39h;-uHi8N_VjQ5Od
+kNM0qli-5YmI'H3nF?&>o(2JFrq6<bs7cKes7uZjqtpBjr;H3cJcEF`J,~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0m-Ep#kiV$hj5X':<;]\n<!#ur
+;>EBR4RP<+4PMsn:A@Zb:\mic:\R]`:\moc;>a5j;>WTU4p!lB:B";m4T7GB49.P";uT\p7/]RR
+7f5dU8H29[9)hQa9`7Ze:/=[b;#aAm;Z9TB<)lq!<``C*=]np4>?kE=?=.&I?t!MR@q9.^6q0Bn
+1FFA!2(UL?r]U]T5!;(h3]]>a4Zu"+4TI\E5Q*eG5Q3nJ5Q3eT5!;(l4>erP2)R0G1c5.os$%Pg
+5<h:q4?P\e3]AuT2`*<J1GUU7.juP\.k</%.OtBJ)(dHm/NGgV5<h"b3]fAc5<hG"7RT[,3'')!
+3[6pT5=%q99MJ2S90Y[.6q'L37Rfm<7S$'B8kVfO92&&S:/:UZjA,YXqc`r$s&oJ.>WhgFs$$BG
+r]U?I55@GCB)uUWral.Crb2.CrbMOMs)%dR!,_^Q!cN$src.sZs)\<bFEIM'!H`J`G5ldcGl;pe
+HN/<mH@,Qjr`/\lr_qcR0SY@=M2@+JN/`jYO-#NfPE_>uQ^F//S"#q>StD[LTqeEZV5C/gW2Zes
+X/rG*Y-7i/!O8s0Zi@E4[J[K5\,Wi8[KO"H[^Wa;;uK\j<V]VoV_"^@UnaZXTqJ$LSXc1=R[KP0
+QBd`"PEM)kOH5H_NJrgSMM[1GLkg_>KnY3YK*$XUJbsusJ+S3gJ,FisJcC?$K5$!mKnb>;LkpnE
+MMmFPNK0'\OcklkPa.Q$R$a>3S"6.BTV8*TUnsrdW2cl!Xfek3Z*UdE[^WfX]=bhk^VI_(`5Ta;
+aND]Mc-FY_dF-Oof%8O,g=tE=h;@/KiT&tZjlY^gkiqBurp1$[mdKW6naZ2@oCMVRp&Facp\jme
+q>U6fqu6NkrUTr=s1SG_~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb,4tKto'u5<n*]T0m-Ep#kiV$hj5\D0cd0tbdEp7c
+cHXPSp58EtoSWX+onia+n;@(#"j>'1aiMNn`W4!V`rF*Za8j?Uap#o.a2l<@rl+oUs2+iRqnWJo
+Mi3OQNK*gqrOr?C^VBc^p5S(Gs1AHG\O8ja7K,dS8,c'Z8c;9]9E.]a:&drg:]=2j;#jMn;u]es
+<W6#"='5H)%U*(A>[:ZB?XI2L@U`hXrad*^B5!p-<*G9$Q<J`U?=\b>MI^U^Oe/_OVRi+iRJN3J
+Pk^LSPa7]+Un*m^XIZGDJRDhlrE_^?DJX#tObAaTKkPgX?rB`pE)()"G]/+/;M9sgP)b<LH\IN>
+N)>%]NKKEnS"6:IT:8YQ91qrP<)ZeXSt2JPT`:epUPt>!Q'@T$Q_'cISd:s^Uo12kXKAVpYNN.h
+m/QJKmf2bQnG\UNPQ$dHQ2?gDQ2R$KQ2d0MQbWR^`9>)sKnbA=M2@+JN/`jYO-,TgPEhE!Q^F20
+S"-%@StD^MU8+N[V5L5iWN)u!XKAV-Y-5(6Z*CV6Zi@E4[J[K5\,$(!_!&Nd^8Im+Unjc[TqS-O
+St2C@S!ob4R$O#&P`q8nOcYWbNfB!VMi*@JLkph@L4t>7re(6&s+1)urdXKfrI=`qs+(0%rIY-(
+L&Qg?LPUeDMMmFPNK0'\OHG]hPEhE!Q^F20S"-%@T:hmPUnjlcVl?\sXKAY0Yd1UB[^N]V]">Vg
+^VI\&_o9U8aN;TJbg+M\dF-Lne^i@)g"P39h;7&IiSrnXjQ5Oekiq?slg4!*mf)YUnF?MK!qZ'V
+rq6<bs7cKes7u]kqtp?ir;H3cJcEIaJ,~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kiV$hj5ZMorL*SP!h#FB
+ltcN8rGCh9mVDZ8op5KArg!PLqj.5JopGWCqj.)Dr+uCMrGMXPrK75AOcfX)p2&`Mrf.&=6q$uB
+r^QfUr^d&\rC[)_s%NAcs%WPir_WVl!)ieps&8tur`0&$=T2G5>$G6:?!^iE?XR;O@UisJAKPMs
+BRG+u9Q+6V8RPXn:1\!O<*O'RFF8@[Lj",iG'3A!s*+Kd$?p`CH$>!nH$s%/rD<Mk,>`#W>$"X=
+B52-j<*`X!5<V535u;&s>@KrfA7oXpCM7<jC&W!+7Ug+KDfBc>G'\IZG">+m7RomB9MKJQH[L-d
+H[U<iDf9T9F*2YLG^4U^H@1$fIXls#re(6(g4fI-!3cC+qm$+*s0M]Bs)7aQrc.XPrGr"Y`r=$Y
+a8j?]ap#u2aN;QHrQG5crltMgrm(Pj!n#HDqU,GodaJ*Cs4%8'f@SU)rn%/%rn.;*c'1/NKnbA=
+M2@+JN/`jYO-,TgPEhE!Q^F20S"-%@StD^MU8+N[V5L5iWN)u!XKAV-Y-5(6Z*CV6Zi@E4[J[K5
+\,$'mORSD4V_"^@UnaZXTqJ$LSXc1=R[KP1QBd`"PEM)kOH5H_NJrgSMM[1GLkg_>KnY3ZKE$Q'
+Jc(&tJ+A'eJ,FisJH1<#K)pXZre>*ALl$tGMi<USNfT6_OcklkQ'IZ%R$jD4S=Q7DTV8*UUo(&f
+WN*##Xfen4ZEppH[^`lZ]=bhl^qmn*`Pom=ai_fNcHaeadaQ^rf%8R-g=tE=hV[8MioB([jlYai
+l07L!m-O--rpKmWnc&(\oCV\Sp&Facp\jmeq>^<gqu-HjrUTr=s1\M`~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb)"dFjo'u5<n*]T0m-Ep#kiV$hj5X*;<)ifpr)<Yp
+oKE.8lT=o)iB-m2s%iJfr(dAh:J^par_N2`s%iJfqbd>h!)`\Xr]^3DrD!>lr)Ne[r]C-@s#^3B
+hbsSS6q$uBr^QfUr^d&\rC[)_s%NAcs%WPir_WVl!)ieps&8tur`0&$=T2G5>$G6:?!^iE?XR;O
+@UisJAJJfiBM(rT1dF#]/2Jq./i,=B1c@6Or]10E5s7Fsr]^<GpHJL>r]^?Fs$$HF4Y\TH1c$jA
+1G^jG2Dm<K1c-s@/hJOt*ZlOX,q:Z*1c?d61c@<S4$#Ac5<h=r/iPjR4[21r6:4.07Q<L/3XRi3
+5sRq492&#R9E%U"5!MD%6psI37Rp!>7n?9F8P;`M9MFtNk=u"\qHNi#$X$Y:>?Y694Ztnj4S_/?
+55RPE55@DGAnPagB)ZHDC&2QNCM[d&Ci+$,DJfAj!cN$src%pZr,hmYs)e9`!d8d3rHS<erd"Zn
+H?sr7<rQ+n<;ohV;Ds5`LPUeDMMmFQNfT6`P*2#oQ'Rc(R@9V8SXuFFTqS3UUnjibVl6SpWiN5'
+Xfeh1YctC;ZMq31[/[Q3[f<f;[C6(BrjMDsrD`MkrDYLM<)fcnVPL#_U7n9RT:VUDS"#k7R$a2)
+Q'@JqP*(ieO,f3YN/NRMM26tCL5(D9K`6W(K)^E"JGt&hIf4coJH(0#K)L<&KSBD[BSVD#M2I4M
+N/`jYO-#KeP*;/rQC!u,R[]h<StD[LU84T^Vl-MoX/rG+YctF>['mEQ\[oDc]t_A!_Sa@3a2lBF
+bKS8Wd*^:jeCE.%f\,!5gtgiEi8N\Uj5f=akNM0plKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0i
+qYU0gr;?Nardk*`s*t~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb+nYBso'u5<n*]T0m-Ep#kiV$gj3>fmcHjh`da?Fg
+cd'c*MXu\cM?&M#M@#3bbfe/NaN2EBn](OJ!Q`C\b5TQrb0.uNb/q`Fa2Z*;`l5m6_SZ8fs,-c5
+s,?f6r4W32[Jmu@^]2%CN<#""^AkkI^-qogr^QfUr^d&\r(?u^!)3>cs%WPirD3_r;GpFl<)cls
+<WQ9(r`K8*>Q.k_?!^lF?t!JQ@Uiq[AS,RgBPD3s<E5NLN)`q]ODpLf>$4p-<-;2A@=NoUML^;4
+Lj=:EH<ZAhR]is#Xg"=VNaT/LJr#\TNIQ%VFFeslJV8\\=^+a$:f2mnEd1J[<)Z_YNJM+FKo_4P
+;,gIm<fN9+R%0Y9TVA-MQr-XQ92&#Y;i79?SXuIHTqnHDOHfa0s-NkVSt5kP$(mlaUo12lX/rGi
+YN`:hm/QJKmJu_Sn,i.LnGSRMOoU^?Pl$aBQG<Iq`:UtD`9G/oKS>/8Ll$tGMi<XUO-#KeP*D5s
+QC+&-R[]h<StD[LTq\<XV5C/gW2ZesX/rG*Y-7i/!jT&:rj2X3s0_a4s0qk)q7u1.0#"3ZUnjc[
+TqS-OSt2C@S!ob4R$O#&P`q8nOcYWbNfB!VMi*@JLkph@L4t>7re(6&s+1)urdXfor-eHkrdXls
+s+13%re(6(EJ9.%LPL\BM2I4MN/`jYO-#NfPE_>tQ^F//S"#t?StMdNUSO``Vl6VqXKAY/Yd(O@
+[C3QS\[oGe^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h;-rGi8N\UjQ5OdkNM0plKdg'mI'H3
+nF5uIncA@SrUg6cp\4X]rqZTjqtp?irVc<dJcEIaJ,~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb'D1neo'u5<n*]T0m-Ep#kiV$gj8GAERJWEQRJq'u
+D"29@D"ql7D!Yp<CmXg\qj7&Cs-N>Er0R>Iqj%1sqeZ+Gr/q)5N;f">OoLO<C]J>5OT1@BO@9%9
+r^QfUr^d&\r(?u^!)3>cs%WPirD3_r;GpFl<)cls<WQ9(r`K8*>Q.kE?!^lF?t!JQ@Uiq[AS,Rg
+BPD3s9hKbPD>m0CDdIHV8k;QD7Ti)G93c"5B4PUfBjLXCs(`ZrM33gQMfrrT;NY[*BPqTu?s-3-
+@:3MP@q/;0:."qI%V&jN?:77P77M01Bi.N<rb`WD8Ou?CD/O<5F`hkRH@'gW84Z6?7n$0HDLDG1%
+XNJKI=,pNEH?5DG'8+Urd#$#I!^0gIt3*%JqJ]/K\(qSY5b^*Yl(d)ZMq3/DuOVSDuO\UEW'kUE
+VFMRErsA%a8X-[ao0?baiMTGb5TQcbg"E3c3;J<cHjkarR(Pk!7Ceor6tYq!nZ#Srn%/%r7U\+q
+NKp'0nb78L5:\CMMmFQNfT9aP*2&pQ'Rf)R@9V8SXuIHTqS3UUnsrdVl6SpWiN5'Xfel,YQD)8Z
+Mq31[/[Q2[f<i5s6u-=OY*H,Unjc[TqS-OSt2C@S!ob4R$O#&P`q8nOcYWbNfB!VMi*@JLkph@L
+4t>7re(6&s+1)urdXfor-eHkrdXlss+13%re(6(EJ9.%LPL\BM2I4MN/`jYO-#NfPE_>tQ^F//S
+"#t?StMdNUSO``Vl6VqXKAY/Yd(O@[C3QS\[oGe^;%J#_SjF5a2lBGbK\>Yd*^:keCE1&g"P08h
+;-rGi8N\UjQ5OdkNM0plKdg'mI'H3nF5uIncA@SrUg6cp\4X]rqZTjqtp?irVc<dJcEIaJ,~>
+JcC<$JcF=$o`"jgrqu]ks8)ckrqQNf!;?Eb)>*Oko'u5<n*]T0m-Ep#kiV$gj&K&X;cH`p;uK\p
+55[SB55@A>4T7DB4RbH-4Qnm+:]!le:]=2f:]=,f:]=,h:]+&g;$'Qk;><u^;>EBO55n=W:B=9j
+q,[>Qs#U3CiDT_ErC-]Tr($`Ws%3,\s%<>crD!;e!)NPi#>nAs;c?Xp<W6#"='5H)!Er_,>VKGi
+?XI2L@:E\UA7]=aB4tsmC25pn912*)1c.EU3\2m:0.82!+sA0\0eP4:2)I2i1&`jB2Dm?Y7n#X2
+3]K,U7l<+Y1bpa;/M&IP0c)Mu0f1dH,pjre0JPFB.kE8(0020V2)kIu#r"(i1,:pS5<_@35nZUR
+7RT3s3]K/[5XJ"78kViO:&[id56""M7/fXT7LVgX7n?0C8P2WL91qtF:$GFQ>52>%=q4b?>$G07
+>?kB;5!D1q55m\I5!;%mrB:0EoKN=frb)4Ds(VLJ!,;FI!,MRMrG;p[D/F0.DfBZ8EH6."FT6C^
+ErL+[FT$@]GQ)jcH2i0nH$Xd`Hhg_B<W?%k;rpn3KS>/8Ll$tGMi<XUO-#KeP*D5sQC+&-R[]h<
+StD[LTq\<XV5C/gW2ZesX/rG*Y-7i/!jT&:rj2X3s0_a4s0r$9r3l5rrD`MkrD`_o/Z,A?UnaZX
+TqJ$LSXc1=R[KP1QBd`"PEM)kOH5H_NJrgSMM[1GLkg_>KnY3ZKE$Q'Jc(&tJ,=]mIJ\KmJ,Oot
+JcC?$KE$UEKnb>;LPUeDMMmFPNK0'\OHPcjPa.N#R$a>3S"6.BTV8'SUnsrdW2cl!Xfek3Z*UdE
+[^WcW]"G_j^VI_'`5Ta:aN;WKc-FY^dF-Ooe^rF+g=k?<h;7)JiSrnYjlY^gkiq?slg4!*mdKW6
+nF?MK!V>s^o`Fj]p\jmdq>^<gqu-HkrUTr=s1\M`~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb)YEXlo'u5<n*]T0m-<j"kiV$gj3>imc-O__rmLhn
+!mc^[mu$UkeVaCN"O506b/sY(r5\NNrl5)]aiXG's31Mds2tA`!m&F&rPeoX`5DPjr/1H2s,?l8
+qnE*D"/`E?_>D%J^\a#iNrP1&^&YhE7K,dR8,l-[8c23\9E.]b:&dug:]=/l;,U<k;ZTitr`0D.
+=BJ^/>$G39>[:\8?T);#@U`hXAS#IcB4tsmC27U$D,XG6S:6HXO.96N=H\_rHZN.d<E<1$=+PI@
+IXcp"JqJ_U<;oerJbt08KSFr&F`;e-;H$SLLQ-h7JV&MWr`CjUDNBj<;H-Oo<`N*s<)Ze3H$X7&
+;c6Ff9MA)P9hSGb;dGQXSXuIHUnj]HP*D5srg<_V%A'2`StD^OVPgDnX/rH&Y5kflYO&InlhTlI
+mJ62Mn,MnVnGr(RP6$i1pQYK=rKb;"pVc^Aqo&BLp;6^E14t76L5(M@M2I7NNK0']OckomQ'I]'
+R$sM6S=Z=ETV8*TUnjiaVl-JnWiN2%Xf\b0ricI/ZEjJ9s0Vg6qR-C5qZ$E-k.`LFV50o^U7n9R
+T:VUDS"#k7R$a2)Q'@JqP*(ieO,f3YN/NRMM26tCL5(D9K`6W(K)^E"JGt&sIe\?hIf=iqJH(3#
+K)UB,KS>,7L51TaM-l-uN/WaWO-#KeP*;/rQC!u,R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?O
+\[oDc]t_=u_Sa=2`lQ6DbKS5VcdC.heCE.%f\,!5gtgiEi8ESSj5f=ak3(smlKeH9$gmBNn*ol;
+o()DDo`"O`pAamcq#C0hqYU0hr;?Nardk*as*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'D1neo'u5<n*]T0m-<j"kiV$gj8GAFRJNBPD"qlD
+D"DH?D#%rCD#\AKD!u0<Qh-OBQi*0HQh-UBQi*0JQ1f%lD?#b!PPgRGJr5_Tqi^u@qeZ1Ik)]S'
+rC-]Tqa^ZWs%3,\s%EAcr_<Dfs%iVj!`;inr_ihs<W6#,='/R-=^#$6>[1Q@ra-pY@:E\UA7]=a
+AnPdjBkhF!Ci)j?9R:5fDK0kn8P=&ABOtO@rC@&]87Pq4rF#h<@q.tsr^73(@qB4^A7]7^?X@#C
+@fAdu7qH:HrF,b:rCd5b>Q/R?8H)0\8Gu*n<afH>84lHE8Oc3>7n6!C9h\H+rd,T1H[U<hE,fl>
+FEMbNG^4U]H[C-eI=H`sJV&LQK@>PQXo,@%YPk^)Z2M!,ZhSG>DK#Mnrc.sWr,MUS"*&@%a8X-b
+ai_cJaiMQFrlY8a!R/gec3)>:cHlL:rmCbo"4>QEdJ_Mmdf@npec+/!f`0V+f\+sLPk^I8PkL=<
+PVRlEKnb><M2@+KN/`jYOHG]iPa.N#R$a>3S"-(AT:hmPUSO]^VPg>jWiE,#XKAV-YPta-Z*L\7
+Zi@E4[JI<3\,--pORJ;`VPU)aUS=HUTV%gHS=?":R@'A-Q'IStP*1rhO,o<\N/W[PM2@%ELPCP;
+KnTGXs+:9%r.+crrI4Nir-nWprIFp!s+:6&#)%\aL5(J>reY!>Mi<USO,oBbP*2#oQ'Rc(R@9V8
+SXuIHTq\?YV5L5jWiN5'Y->.9Za@-K\%0)^]Y2(p_8=+.`Q$!?b0/#RcHjnce'uq!f@\d1gYCWA
+hr*GOj5]4^k2tjjl0@U6ljN4Kn*fc9nac8BoCW%Ts7ZKerV6EgrqcNhrqu]mo)=4?^]/f~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(%h+go'u5<n*]T0m-<j"kiV$gj&B%U<;ohr<<#,O
+55.584RbH.4RP<0:]4&f:]4)i:\mib:]=,h:B45d;>F&_;>*0N56"CS:BFEo<V]\m3r_8C4?Yjh
+;uK/a7f,^U8H29Z9)hQa9`@cd:B+,h:]aKl;Z9Sq<)rou$WgG4=]np4>?kE=?N+:_?t!MR@q9.^
+AnG[hBPD3sCM[iO4?H7r6UF101c.!R5sILn0JY76/M/M32>K$-.0V1M-o*S5r\=U20JP=<r\jd+
+s""+,"ZA+k1G^ld2@26'5<hCf1,:R>rA+d;2)dW[3\rcU3]m7#.6'RX5sIk391qrQ9MA)E5sn%.
+77BU67Rp!>7n?6D8kM`M91qrQ9hnIK:$bUT>Q.h)>6%q)>6%k+>6.u5rET:a!'^BHpce^@s$$*?
+rau4Erb;=GrbMIKrbW*^D/F0.DfBZ8EH6,BFT-=]ErL.[FT6L`G5HL`GQW5;H?oL9!.=NAs&K(u
+oMbQ`p/1]b14t76L5(M@M2I7NNK0']OckomQ'I]'R$sM6S=Z=ETV8*TUnjiaVl-JnWiN2%Xf\b0
+ricI/ZEjJ9s0Vg6qR-C5rO)X5oi(fgpJq/krDP;FV50o^U7n9RT:VUDS"#k7R$a2)Q'@JqP*(ie
+O,f3YN/NRMM26tCL5(D9K`6W(K)^E"JGt&sIe\?hIf=iqJH(3#K)UB,KS>,7L51TaM-l-uN/WaW
+O-#KeP*;/rQC!u,R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?O\[oDc]t_=u_Sa=2`lQ6DbKS5V
+cdC.heCE.%f\,!5gtgiEi8ESSj5f=ak3(smlKeH9$gmBNn*ol;o()DDo`"O`pAamcq#C0hqYU0h
+r;?Nardk*as*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'_M"fo'u5<n*]T0m-<j"kiV$gj37MI"4#6=d/MGn
+d.`CgMXcPbMZ8P+M?2&KrlkVjbK@rJaSa*P`rF'\aN;U(bPKEbbK@uLrQ"uZrl,,\`5BI0M>N2.
+MuSb8NVpNg]`XOoYe9nMqnN9JNK*gq!KW?-^AknG7K,dR8,l-Z8c;9]9E.]b:&dug:]=/l;,U<k
+;[69%<E<.%='5H)$<gY=>[:WA?XI2LraI$\A7]=aB4tsmC27U$Ci+'-Dc9S8<)oK;:77'$Oe&/?
+F8])=<rQ/%<*#.ZO8k4ENJrdRN/NSmM#W;QLl.:UNf[1=;c?[sBoe@=P*:HKJ:U[!;H-Ok;,C-h
+:C^)l92/,\<)Zdr?%\]>T)PAkU84KFP*D5sQC+#/Sc52cTV%pPVPpJpri?1)Y--cfm]c`V!:0LJ
+s6]gR!:TpTrpTmVrp^!XrK?r>r0.8JPa(j+!1(M%ou-L?rP\NLotp^Gs+<4_KnbA=M2@+KN/`mZ
+OHG]iPa.Q$R$jD4S=Q7CT:qsQUSO``Vl-JmWiE,$Xf\b/YHY79Z*O>7s0Vg6q6p2#qS;7./\\'W
+UnaZXTqJ$LSXc1=R[KP1Q^*i#PEM)kOH5H_NJrgSMM[1GLkg_>KnY3ZKE$Q'Jc1,uJ,OihIJnWo
+J,OotJH1<$KE$T)L&Qg?LPUeDMMmFPNK0'\OHG]iPa.N#R$a>3S"-(ATV8'SUnsrdW2ZetXf\e2
+Z*UdE[^WcW]"G\i^VI\&`5Ta:aN;WKc-FY^dF-Lne^i@)g=k<:h;7&IiSrnXjQ>Ufkiq?slg4!*
+mf)YUnF?MK!qZ'Vrq6<bs7cKes7u]kqtp?irVc9cJcEOcJ,~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'D1neo'u5<n*]T0m-<j"kiV$gj8>;ERJ`NJD#8)J
+D"2<>D"MTDD#A/ID";BAR0&bBR/NBLQMHmFQMm0@R/<6JQN*6AD#S8RPEM,nr/q2HGCPC0r0./D
+rK./CCi&oalB)%,r^HfUqa^ZWr^m&\s%EAcr_<Dfs%iVj!`;inr_j&$<E3(#='&N'=UJ>:>[1Q?
+?=.&I@K'^e@q9.^AnPdjBkhF!Ci!s+DJr3B9h\3+@nM&cDK9rHHsTB:91hiM8kVcKE;XVPD>nAM
+C]8&XBl%a-Df8-:8P2QH<c.eR$XmLR@nB9b8OuHF8c;3[7fGma:/">U9i5YPH[>[<s*YW/E,fl=
+FEMbMG^4U]H[:'dI"$TrJc:9$KE$VOL&\7QXo5F&YPta.Z*:L<r3H:-rGM@JrG_OOqf2^Wa8X0[
+aoKQ^aSs?^b66&6cHa]6cMu5id/MGmdK.bBrmC_ns3q"ts4%,!rmh&"!8%,#s4Qt-pQP97oooB>
+s+<4_KnbA=M2@+KN/`mZOHG]iPa.Q$R$jD4S=Q7CT:qsQUSO``Vl-JmWiE,$Xf\b/YHY79Z*O>7
+s0Vg6q6p2#nW<1$/>]/<US=HUTV%gHS=?":R@'A.Q'IStP*1rhO,o<\N/W[PM2@%ELPCP;KnTGX
+s+:9%rIFlsrI4EfrI4`qrIFp!!.t3&s+CB+re>*ALl$tGMi<USNfT6_OckomQ'I]'R$sM6S=Z=F
+TqS6WV5C/hWN*#$Xfnt6Za7'J\%&u[]Y(tn^qmn+`Q#s>aihlPcHjkbdaQ^rf%8R.g=tE=hV[8M
+ioB([k2tjjl07L!m-O--rpKmWnc&(\oCV\Sp&Facp\jmeq>^<gqu-HkrUKl<s1nYb~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-<j"kiV$gj&8oWqc*So!*&\U
+q`b!B!'^'=q)n1/q)n+-s%r_k!)WJer_WVjqbI)c!_uNer_WAeqG?raqE=gArB:-D!DcJd:BO9c
+;,dBmqH!VWs#^6Cs#pBGs&A8^r^HfUqa^ZWr^m&\s%EAcr_<Dfs%iVj!`;inr_j&$<E3(#='&N'
+=UJ>:>[1Q??=.&I@K'^a@q9.^AnPdjBkhF!Ci!s+DJq^&4?Ybu3''Z"6:=:46T[._1G^jE1B''4
+5X.M!5Q!eH5PIDs5<qG!0etI?0f1dN4$Gek2DR$D2`EWR2E!NR3''&Z3]T5^3C#ho5<qA$9MA&Q
+:&[fi90km36q%#C$q<ZT84Q0@8P)NI92,=XhbEN6"^,#5>?Y5/>Q7t->6%q->6.u5qHWhZ!^8h5
+oKN"6s(D@Fs(VFH!,MIJqeZCPDf>Vo"`e[*FEDU&ErU4\F9$I_Foll2G5c[lG^4R\H$O^^H[PKe
+s&K(uoMbQ`ohk]ds+<4_KnbA=M2@+KN/`mZOHG]iPa.Q$R$jD4S=Q7CT:qsQUSO``Vl-JmWiE,$
+Xf\b/YHY79Z*O>7s0Vg6q6g@3[C-"Boi(fgpJq/kr)5/CUnjc[TqS-OSt2C@S!ob4R$X)'P`q8n
+OcYWbNfB!VMi*@JLkph@L4t>7re(6&s+1-!rdXlqomQdfrdXlss+(0%re(6(!/:E,BSVD#M2I4M
+N/`jYO-#KePE_>tQ^F//S"#q>StMdNUSO``Vl6SpX0&M-Yd(O@[C3QS\[oGd^;%J"_SjF5a2lBG
+bK\>Yd*^:jeCE.%f\5'6gtgiEi8N\Uj5f@bkNM0plKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0i
+qYU0gr;HTardk*bs*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'(kedo'u5<n*]T0m-<j"kN:pfrlkAd"jYH?dF-M=
+M>`8.M=uhuM<'QkM>W5=da6=cc-=JVbK7iHr5\TPrPo,`ai_fMbfp%1s3(Pfb0'_*s2Y2\rl4uW
+!6"knqMP<2r/:W8r4`$@"GN&4XLeAIr5&<H!0@)=qiC0Zs1SG$r^QcTs%*,\rC[)_s%NAc!_uNe
+r_WVl!)ieps&8tur`0&$=T2G(>$Lu2!F9%2?NjhG@U`hXracXQB4tsmC27U$D/O60E,fl<r_s2(
+;H$Rp<E>Z[RJrW]N/`m[OH,HgR@EfBq4mta%\]MbS=#V-P`UlbNK0!Xr/:l=R@0M5S"-,KSc>8^
+TTK/;'9e]JR$aA5SXuFFSt;UKU8=ffWrB(%Xfek1bch34kiqC3lhp,Jm/ZSRmf;eSn,DeWnaQO?
+!KrTEP5(7=Pl?pJQM6Z^s7=2$_u@UK_tLtI_uG?IKS>/9Ll$tHN/WdXO-#NfPEhE!R$a;1S"-%@
+T:hmOU84T]VPg>jWN)u!XKAV-YHP17Z*CV5Zi@E3[J@9/s80Un^EUCfUnaZXTqJ$LSXc1=R[KP1
+Q^*i#PEM)kOH5H_NJrgSMZ/G:Lkg_>KnY3ZKE$Q'Jc1,uJ,OigIJnWpJ,FfuJV&LQK*I!_Knb>;
+M#N6FMMmFPNK0']OcklkQ'IZ%R$jD4S=Q7DTV8*TUnsueWN*##Xfen4ZEppG[^WfX]=bhl^VRe)
+`5Ta;aND]Mc-FY_dF-Oof%8O,g=k?<h;@/KiSrnYjlY^gkiq?slg4!*mdKW6nF?MK!qZ'Vrq6<b
+!;HHerqZTjqtp?irVc9cJcERdJ,~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'_M"fo'u5<n*]T0m-<j"kN:pfR@3u?s-`nU!1Wq(
+qJ?1IrG2ILrG:k:!,Ut<r+u"@#Fh0NR@0G/R.?UCQM[$>R/`NQR/`NNQMt_$DZ+GIC]\I;Pl?mG
+P5URID0:5[Nr"t>P5LFBDYJ#9OT1CA7K,dR8,l-Z8c;9]9E.]a9`e'c:]=2j;#jMn;u]es<W6#"
+='5H)!Er_,>QJ,:ra,h:@:E\UAH$-OAnPdjBkhF!Ci+'-DfB]9ErJ`4:&IZc976Y`$u^*(Df9T7
+FEMeSI!ka:qKi-f$[R/IH?aUWFEDSFEVsePDuY+`H2`*mI!^0cHiA<kHiA!dEcZC&G5lgbH3\eC
+H[L9lJ:[]Os+:?*K?T&LX8f:!Xo>L'YPtd)Z21d+Zi4h>DYJ)JE;aeVE;jkTEWX>&a83mVap-&5
+bg"GYc2>lecN)>hd/_PmdJ_Jne,7_peH"2"fDjJ+f@\a/g$t=#POt+5PQ-mIK/SC:L51SAM2R=O
+NfT6_P*2#oQ'Rf)R@9V8SXuIHTqS3VUnsrdVl6SpWiN5'Xfek2YctC;ZMh-0[/RK/[f$0rOR821
+U`ZA+TqS-OSt2C@S!ob4R$X)'P`q8nOcYWbNfB!VMi.Lj#)J%hL4t>7re(6&s+1-!rdXlqoR6[e
+s*srs!eGrTrdtE.KnY89LPYqdBo7h-N/`jYOHG]hPEhE!Q^F20S"-%@T:hmPUSO`aVl?\sXKAY0
+Yd1UB[C3QT\\#Mf^V@V%_o0O6aN2NIbg"GZdF$CleCN7'g"P08h;-uHi8N\UjQ5OdkNM0plKdg'
+mI'H3nF5uIncJFTo`"O`p&Ojcq#:*hqYU0gr;HTardk*cs*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'(kedo'u5<n*]T0m-<j"kN:pfr_rhsqGd5QrB0F0
+rB0I/q)n..qbR;h;"d]^:ARcc;#!oa;#4&`4o%;7:BX<b:/Fmc<Vfbq4T@SA55eIM;u];c7f,^U
+8H)3Z9)hQa9`7Ze:/=[b;#aAm;Z9Vp;ufqt<WQ9(r`K8*>Q.k.?!dM;"^kbJ@UisJAIrHdBP;*p
+CMRa'DJjB3EH-$u4TIVD3s7Z-3(lpC9)h<Y6iTOU77TfG6NBOL7JoUe6pj=277'C277Kd:77BU3
+6UguA!^oIGr^6ZWr_!8c9)VBg9h\2I6pj=07/]O^7R]d;84H*@8kDTHr(@#`r_:U3"BS]-=^(T)
+s',P.r`oG,qcj,*qE4X<of`FA5!Jd,s(D=E!,;FI!,MRM!c;aiqeZCPDf>Vo!-8!Y!-8$ZrcA-_
+qf_s_qKW-hI!kNds&K(upeq/lr_rSip/1ifs+<4_KnbA=M2@.LN/is[OHPcjQ'IZ&R$jD4S=Q7D
+TV8'RUnjiaVl-JmWiE,$Xf\b0YHY79Z*O>7s0Vd5q6p:1!OfE0;uK\i<W,no;u`X8US=HUTV%gH
+S=?":R@'A.Q'IStP*1rhO,o<\N/W[PreUi8LPCP;KnTGXs+:9%rIFlsrI4BerI4crr."j"JqEuS
+#)%\aL5(J>reY?HMi<USNfT9aP*2#oQ'Rc(R@9V8SXuIHTq\<XV5L5jWiN5'Y->.9Za@-K\%0&]
+]Y2(p_8=+.`Q$!?b0/#RcHjncdaZdtf@S^0g>(N?hr*GOioB+]k2tjjl07L!m-O--n*fc8nc&(\
+oCV\Sp&F^cp\jmdq>^<gqu-HkrUKl<s2"_c~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'(kedo'u5<n*]T0lg!a!kN:pfrlk>c"jYH@d>3VS
+M=uc(M><%tM<BcnM$/^cda6>>c3DP;bf\&KaSa*X`r!gUaT'?_b00Y+!mJj2rlY8_s2Y;_`lH*r
+M?&M4MZ/M6MZ/P4N;gQc]a&_6OI`D]_o)AgqnW?L_85l,o"G4>^:Zo67f,^T8H29[9)hQa9`7]c
+:&n)g:]aKl;Z9Sq<)rous&T\4=]np3>?kE=?!^lF?t'%D"_2(SAS,TSBFeflCMRa'DJjB3EH-#?
+FEI@Y!EN+s;Zp'"T:__SSHG@MS"&W0!1NnV"eD9XSt;MPSd:sZSt;RGStM2EPQmD>R$a>4SGo)c
+T:VXITqS9[WW&psX8o=#Y5k`GYQa.NkNM0qrp0LKrU'CKr:'`Lr/q#B!L&]APPgXFQ2HsEQ,N\&
+_t1h=_uI[K_tLr'JV/T.KnbA=M2I4MNK0']OckllQ'I]'R$sM6S=Z=ETV8*TUnjiaVl6SpWiN5&
+Xf\b0rilF-!4)R0s0Vd5q6p5$r4qC.s.ga3U7n9RSt;LCS"#k7R$a5*Q'@JqP*(ieO,f3YN/NSm
+M#iEfre:H-K`6W(K)^E#JGt&tIe%pdIf=iqJH(3#K)UB'KSBD[A;>ttM2I4MN/`jYO-#NfPE_>t
+Q^F//S"#t?StMdNUSO``Vl6VqX0&M-Yd(L?[C3QS\[oGd^;%J"_Sa@3a2lBFbKS8Wd*^:jeCE.%
+f\,!5gtgiEi8EVTj5f=ak32'olKeH9$gmBNn*ol;o()DDo`"O`pAamcq#C0hqYU0gr;HTbrdk*c
+s*t~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'_M"fo'u5<n*]T0lg!a!kN:pfR@3r>"IY^ICi&rb
+qJ>8/qJ>Y<rG;.Bs-s%WrgE_Pl^%X>QggCAQN3?JD>nGMD>\5MPl?jHP5:@I@r$.4K8YnUqigo?
+rfR1tqeZ=LnrNs7OH2j07f,^T8H29[9)hQa9`7]c:&n)g:]aKl;Z9Sq<)rous&T\4=]np3>?kE=
+?!^lF?t'%D"_2(SAS,TSBFeflCMRa'DJjB3EH-#?FEI@Q!DQ2b9E@d\r-JEkrH\Hhl[&SVrH\]q
+I!g9eH@(#<H4#"FH@1'dEH-#?FT-FbG^4T6H4,"FH[:$dIXZcsJV!cO"+u8[K?&]GWWK6&XST(!
+Y5b^*Yl(d%Z3%@MDZ+GOD?4ZnpM^"Ls)J!Vr,MaW#KFg*aN)BCao0B^bQc>;cHXY[c2Q#gchu2j
+d/DAkdK%bneGn)!f)O>'f[naSf`0V)POk%2POt+5P;@cBK7nr5LPUeEMi<XUO-#KeP*D5sQ^F//
+S"#q>StD[LU8+N[V5C/hWN)u!XK8P+Y-7i/s02R0rNlO2rjDR1r;ZAMm?.FE+/>R(TqJ!KSXc1=
+R[KP1Q^*i#PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1,uJ,XofIK"]pJ,OotJcC?$K)pXZ
+re=s=Ll$tGMi<USNfT6_P*2#nQ'I]'R$sM6SXuFGTqS6WV5C/hWiE,%Xfnt6ZEpsI\%&u[]Y(tn
+^qmn*`Pom=ai_fNcHaeadaQ^rf%8R-g=tE=hV[8LioB([jlY^hl07L!rp1$[mdKW6naZ2@oCMVR
+p&Facp\jmeq>U6fqu-HkrUTr=s2"_c~>
+JcC<$JcF=$p&=pgrqu]ks8)ckrqQNf!;?Eb'(kedo'u5<n*]T0lg!a!kN:pfr_ikt<E8rrs#g*?
+p,qn/rB0I/pcS.0!'KsOpeUc^qG7,fpJLc`rDE/LqEFOI"\D?\:/Fja<VTSp4nq5?<W#hj;ZK8c
+7f,^T8H29[9)hQa9`7]c:&n)g:]aKl;Z9Sq<)rous&T\4=]np3>?kE=?!^lF?t'%D"_2(SAS,TS
+BFeflCMRa'DJjB3EH-#?FEICC!BrXE3s%H)3VuGL9)_KI9)M<`9M8"S9E%Wb9ajZ^6psI377B[7
+6UXBB8H20\8P8tR"%l3Z9`@]_9ug$.=8uA(=^##)>P_V)>Pqb+>Q6k_497T-qE=[=!^Ak4pcemF
+B4kmkrb;FKqeZ.HrGM^UEW1"]EcZ8ArH%s[!-S0^s*+Kf"aP?;H$O`7HiR1<<rZ2"<;9Al<;ohk
+;YEsDJV/T.KnbA=M2I4MNK0']OckllQ'I]'R$sM6S=Z=ETV8*TUnjiaVl6SpWiN5&Xf\b0rilF-
+!4)R0s0Vd5q6p4/pJ_#ipJq,jr)<Wk+/>R(TqJ!KSXc1=R[KP1Q^*i#PEM)kOH5H_NJrgSMZ/G5
+Lkkta!JQ4+KE$Q'Jc1,uJ,XofIK"]pJ,OotJcC?$K)pXZre=s=Ll$tGMi<USNfT6_P*2#nQ'I]'
+R$sM6SXuFGTqS6WV5C/hWiE,%Xfnt6ZEpsI\%&u[]Y(tn^qmn*`Pom=ai_fNcHaeadaQ^rf%8R-
+g=tE=hV[8LioB([jlY^hl07L!rp1$[mdKW6naZ2@oCMVRp&Facp\jmeq>U6fqu-HkrUTr=s2"_c~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf(&%=no^qbGo'u5<n*]T0lg!a!kN:q)bl5igcHji9M"QW!
+M#E2*MX62bM?\oC>h.?PdJhJlc3;J:bK@rJouI!Os2b;abkfQcbfe3/b5]Q`aSs3^Mi*CMpko$.
+rf$l8rP%s<"`f0SS>`mq_u%=F_>]JnO8b4@OnZTi^&PbD7f5dU8H29Z9)hQa9`@cd:B+,h;#aAm
+;Z9Sr<)lrt<WQ9(r`K8*>Q.k.?!dM;"^kbJ@UisJAI2s]BP;*pCMRa'rb`']E,fl<F*)MHG'EXZ
+!EE%o;[ZK&<)Z^p<)lmr<)icor_`_pqbdi";c?[p;H$V!DhXXMrgj"Zs.B:^"ehT^Uo1-iWrB(#
+X02H*!3X,AroO1Bs5sOKlK[^$rTsLMs6f^Or:'THrfR2Cs-*JIqNLiA!L8uLQiE?QQ,q%cs8Kq-
+`9kJ?_>qLK_CpFjK7ei2L51SAMMmFQNfT9aP*;,qQC!u,R[]h<St;UKTq\<XV5C/gW2ZesX/u<&
+!NrX*YlCs.ZMh-/[/IE0[f-7$_!&NV^8.NuTqS*MSt2C@S!ob4R$X)'P`q8nOcYWbNfB!VMi.Lj
+#)J%hL4t>7re(6&s+1-!s*surnU:CcrdXlss+(0%re(6("GMSbLPYqdA;Z;(N/`mZOHG]hPEhE!
+Q^F20S"-%@T:hmPUnjibVl?\sXKAY0Yd1UB[C3QT\\#Mf^V@V%_o0O6aN2NIbg"GZd*^:keCE1&
+g"P07h;-rGi8N\Uj5oFckNM0plKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0iqYU0gr;?Nardk*d
+s*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf(A@Foo^qbGo'u5<n*]T0lg!a!kN:orrgE\Os-`k&pMKbC
+kA0^+p20\CqJ-4>>b%:QqjIMQrKuo;pm;&Lqj@ALrbhFH!,h[N!,VUuoofSgC3"WOM37_!qih#B
+rK6nmrbV7hs,[+Jr($`Ws%3,\s%EAcr_<Dfs%iVjs%rbor_ikt<E9$!!EWD&=TM]1r`fJ0?N+:8
+?t!MR@q>RM$"dg`BPD3sCM[keD@1<$EH-#?FEDYKGP+Z/9)qZ`9*e6b9M.rN9M8"W9DqK^8bu$f
+8P;ZJ8P)QJ9j;:SH2)^bHiJBlIJnWpJc13#KE$T)K><3=WWK6&XST%!Y5PR$Z1tWtDZ=YTE;=GF
+E!(*DP/dF@!6P5_#Kt?8c-=PYcMl)gcMu2nd*^7fdJhMldJqYpe,Rnte,Ihsebn"sfDjM'g&@3-
+Pk1+8Pl-^FPk^FqJ:W?*KS>/9Ll%"IN/`jYOHG]iPa.Q$R$jD4S=Q7CTV8'RUSO``Vl-JmWiE,$
+riH4(YPtd+YlM*.Zi7?1[JRE2s7;?=OW^HpU7n9QSt;LCS"#k7R$a5*Q'@JqP*(ieO,f3YN/NSm
+M$AckL5(D9K`6W(K)^E#JH(,tIdqjcIf=iqJH(0#K)UE&KER!`L51TaM.DL%N/WaWO-#KeP*;/r
+QC!u,R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5Vcd:(feC<%#
+f@em3gYL]Bi8ESRj5]7`k3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7ZKerV6Egs8)WirVZTlo)=4?
+_Z,,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqQNf(&%=no^qbGo'u5<n*]T0lg!a!kN:q);Z]ou<W5ts4S:l/
+4SV)<4RG6%4Sh,??!R;(rDEPjl;%CVpJLfas%rbmr]]p:r''XH#"M9[:/Fhfp/Urir]U'@qc3So
+rDWYar($`Ws%3,\s%EAcr_<Dfs%iVjs%rbor_ikt<E9$!!EWD&=TM]1r`fJ0?N+:8?t!MR@q>RM
+$"dg`BPD3sCM[keD@1<$EH-#?FEDYKGP=6(5<Cth4?NL(!':*@#Wat*3]]8]3&pappcApG4#o;^
+3]TAh6psI47f,aU7fZ0Z8HDFWrC[,ar(Xt%r)`l"s&f>*q-3Z"!*fD,r`f1]rB1*Cs$$9Br''m?
+s%WN+"DDLaC2<Z^r+uFOrbhpYEH6,Ar,VdXs)e9`s)nBbrHA0brd"Khrd+Wmr`/Pjs&K(upeq/l
+r_rSipe`\pJV/T.KnbA=M2I4MNK0']OckomQ'Rc(R@9V8SXuFGTqS3UUnsrdVl6SpWiN6#XT>T.
+rilF-!4)R0rj;X3qmQI1q,7;n;uK\i<W#hn;]qm2U7n9QSt;LCS"#k7R$a5*Q'@JqP*(ieO,f3Y
+N/NSmM$AckL5(D9K`6W(K)^E#JH(,tIdqjcIf=iqJH(0#K)UE&KER!`L51TaM.DL%N/WaWO-#Ke
+P*;/rQC!u,R[]h<StD[LU84T]Vl-MoX/rG+YctF>['d?O\[f>b]t_=u_Sa=2`lQ6DbKS5Vcd:(f
+eC<%#f@em3gYL]Bi8ESRj5]7`k3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7ZKerV6Egs8)WirVZTl
+o)=4?_Z,,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI<(p@e1Po^qbGo'u5<n*]T0lg!a!kN:n'bl5iecK^8bM#E2(
+MX-,hMAD,-MI'Rne^`0udEp4ccHa\YbK@rJaS*[SaSa-\bKTk.s3(JdrQ5,^rlFek!/g]4!K;s8
+N;UE_]a2>]AUTK(V6e#:`;[XK_>M+JNW>.>OT(C<^&l!\]`(Cu8,c'Z8c23\9E.]a9`e'c:]=2j
+;#jMn;u]es<W6#1='/R-=^#!5>[1Q@?=.&I@K'^>@q9.^AnV*V(27N!CM[j*DJsK5EH-#?FEDYK
+GB\:Wn5L*%<)lms;,L7i;H$Ik;c?[s<`N*srDESm#@;+fLR=m6VuEXpWW0"!Wr/suWrfB)Y5PQ5
+Yl<_`jo4BGkNV6rlKeH9qs=COq="7NqNCl@"-Se0P5UUDPkpUBPQI,9Qi5#*`rO3$s89e2`9+u0
+_Z,-BJV/T.L5(J>M2I4MNK0']OckonQ'Rc(R@9V8SXuIHTqS6WUnsrdVl6SpWiN5'Xfeh1rilF-
+!4)O/rj;U2rO2\)ot]t0s1TVOUS=HTT:VXFS=?":R@'A-Q'IStP*1rhO,o<\N/W[PreUZ3L]3#/
+KnTGXs+:9%rIFotrdO<ardOlsrIFp!s+:6&!JH1+L2Md&M2@+JN/WaVO,oBcP*;,qQC!u+R[]e;
+St;UKTqeE[VPgAmWiN8(YHY:;Za@0M\@K2`]Y;.r_8=+/`Q-'Ab0/#ScHstde'uq!f@\d1gYCW@
+hr*GOj5]4^k2tjjl07L!m-O--n*fc8nc&(\oCV\So`Fj]p\jmdq>^<gqu-HkrUTr=s2+ed~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqIB*p@e1Po^qbGo'u5<n*]T0lg!a!kN:lqRf8`QR/CdmD>J)6
+C[l6:D>%cK?<pg+SGerTRfAcUR/30LR/307Qi`UkD>nGED#eJQD>]XkP6dCS=D2YuIts*]P5(7@
+P5^U@D>e;GOT1C@7f5dU8H29Z9)hQa9`7Ze:/=[b;#aAm;Z9Vp;ufqt<Y/>7=BSd1>$G6:?!^iE
+?XR=A@Kg7PAS#Idrb*']C27U$D/O60E,]f:EcZ>EF`qtQG^8dP"AMQa9M>@Ys%E8`rCm;d9)D0a
+;-.+?G^b,@J,artJGt,rK)L?$KXZ[3WWB0%q5jY"ric@+r3?%&oPXVGrc%^PqJcCsrfR?(aiOJ'
+s2tAbrlkSkc-FSXrlkPjd*U2;d/D>ldehMne,\%rf)F;$f`0Y&PPUO<PPp[APPUO9PQ-.hJV/T.
+L5(J>M2I4MNK0']OckonQ'Rc(R@9V8SXuIHTqS6WUnsrdVl6SpWiN5'Xfeh1rilF-!4)O/rj;U2
+rO2\)q2kQ;!0HW2s,\A!US=HTT:VXFS=?":R@'A-Q'IStP*1rhO,o<\N/W[PreUZ3L]3#/KnTGX
+s+:9%rIFotrdO<ardOlsrIFp!s+:6&!JH1+L2Md&M2@+JN/WaVO,oBcP*;,qQC!u+R[]e;St;UK
+TqeE[VPgAmWiN8(YHY:;Za@0M\@K2`]Y;.r_8=+/`Q-'Ab0/#ScHstde'uq!f@\d1gYCW@hr*GO
+j5]4^k2tjjl07L!m-O--n*fc8nc&(\oCV\So`Fj]p\jmdq>^<gqu-HkrUTr=s2+ed~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI<(p@e1Po^qbGo'u5<n*]T0lg!a!kN:n&;Z]ru<9l^B4S_/<
+4RG5u49Str>Yn8n;>j>W:]F8d;>F&g4oRY84o[_7:]Eie8P;cQ;H36fqH!SYqEF^Ts&8tsr^QfU
+r^d&\r(?u^s%NAc!_uNer_WVl!)ieps&8tur`0S3=BJ^/>$>-8>[:ZB?XI2LraH%@A7]=aBDuQ[
+BkhF!Ci+'-DfBZ8EH6,BFEMbNGBeE&4T[l355[MB3rD&B4[2.p4o.5E4[;>%7nH;M8cVN`9`%H_
+9_D,m:AIrk=T2G'>52=p>lIss4oRYA4oISD5Pn+[9k\6UC27X$C]/)HD>nGUE,ou?qf;XV!-J*\
+s)nBdrcnEfrHeKj!.=]Do2YchpJV&kr_rPhqbdBD1P(12KSG5:Ll%"IN/`jYOHG]iQ'IZ%R$jD4
+S=Q7DTV8'SUnjiaVl-JmWiE,$Xf\b/YPtd+YlM*-Zi7?0[JdN6Zi7?.;uTbr<<-"m<W#hp;u]`<
+UnaZXTV%gISXc1=R[KP1QBd`"PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1-!J,XocIK"]q
+J,OotJcC?$K)pXZre><GLl$tGMi<USNfT6_P*2#nQ'Rc(R$sM6SXuFGTqS6WV5C/hWiE,%Xfnt6
+ZEppH\%&u[]Y(tn^qmn*`Pom=ai_fNcHaeadF6Uqf%8R-g=tE=h;@/KiT&tZjlY^gkiq?slg4!*
+mdKW6nF?MK!qZ'Vrq-?dp\4X]rqZTjqtp?irVc<dJcEUeJ,~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI9'p@e1Po^qbGo'u5<n*]T0lg!`ukN;WbrltJ#j,*>amYUIk
+(1:KU?!Pt2e^W$pd*U+acHXSVbK@rJpW*-P!QrX_c2YufbPoZ`ao..tMY;u.N;S\4^@o5?^AbnH
+@g$t9U9D9.`;[[R_YCtH^]9DoO8G(:^&YhF7f,^U8H)3Z9)hQa9`7]c:&n)g:]aKl;Z9T"<)lq!
+<``@)r`K8*>Q.k.?!dM;-X^@l@UiqZAS#IdBP;*pC27U$D/O60E,fl<F)uGFF`qtQG^4U]Hh:;.
+;[uc0?Y4(nG^Y4%OHuH4WVirrYlE_\jSe6@kl9lKlKdd8m/-2Gn,2\QOoCOBOo:I@PQ-mDPQ-mF
+aSa*"s8'Y0`9+u2_CU1eJ:`E+Knb>;M2@+KN/is[OckllQ'I]'R$sM6S=Z=ETV8*TUnjiaVl6To
+WWoN*Xf\b/YPtd+Z2_-.Zi.9,[Jg-u_!\u:^)s)CTqJ$LSt2C@S!ob4Q^3o%P`q8nOcYWbNfB!V
+Mi.Lj!JlO1L&m!]re(6&s+1-!s*t#smX>(`s*suts+(0%re#KLKnY89LPUeDMMmFPNK0'\OHG]h
+Pa.N"R$a;1S"-%@T:hmPUnjlcVl?\sXKAY0Yd1UB[C3QT\\#Mf^;%J#_SjF5a2lBGbK\>Yd*^:j
+eCE1&f\5'6gtgiEi8N\Uj5f=akNM0plKdg'mHs?1n*ol;o()DDo`"O`pAamcq#C0hqYU0hr;?Na
+rdk*es*t~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI9'p@e1Po^qbGo'u5<n*]T0lg!`ukN;c5!1NnTrg<S!nSS,=
+m;)3-q/,qD"CPSC?!RB!qO@MRrgEPKrKl`8qeYe>s).^upQPQ?!0dC_"ClJ$L5l"loooB<r,)@J
+qiCf=r^QcTs%*,\rC[)_s%NAcs%WPirD3Pm;H!Km#?4]'<`W:'=T2G(>$Lu2!F9%2?RK5i@U`hX
+A7]=aB4tsmC2.O"Ci+'-DfB]9EcZ;DFEMbNGBeCZH@,9Xnk0Hd:K(:t?=IM\D/j]DI=_<LV1nrK
+po4=qpoOV#YHRr0r3?('!,qFGr,;USqJZCQr0.&As2bJdaiV]JbKTn/rlkAd"4#6=d/MAid/MGh
+dfn7Oe^i:$rmq)#rn%5(qNLc?plkW=qigl@p6.%WJ:N6(K8#&7LP^kFN/WdXO-,TgPa.N#R$a>3
+S"-(AT:hmPUSO]^VPgAlri-1'XKAV-Y-7i/s0;U0rNlI0q6g2$qN0s(rfA4rTqS-OSt;LCS"#k7
+R$X,(Q'@JqP*(ieO,f3YN/NSmM#iEfre:H-K`6W(K)^E#JH(,uIdVX`IfForJH(0#K)UCJKS>,7
+L51SAM2I4MN/`jYO-#KeP*D5sQC+&-R[]h<StD[LU84T^Vl-MoX/rG+YctF>['d?O\[f>b]tV7s
+_SX71`lH0BbKJ/Ucd:(fe'uq"f@\g2gYCWAhr*JQj5]4^k3(sml0@U$m-X3.n*fc9nac8BoCW%T
+s7ZKerV6EgrqcNhrqu]mo)=4?_uG5~>
+JcC<$JcF@%o`"gfrqu]ks8)ckrqI?)p@e1Po^qbGo'u5<n*]T0lg!`ukN5Z?qc!Mokrni)p-&F<
+loX`""CPSC?!RA*qGI,dq+q#epJ1ccpJLfar]C*Amlg/9r_NSjr^6r]92/2[<)iKiqGmSrrB:$A
+qc*Vqr^QcTs%*,\rC[)_s%NAcs%WPirD3Pm;H!Km#?4]'<`W:'=T2G(>$Lu2!F9%2?RK5i@U`hX
+A7]=aB4tsmC2.O"Ci+'-DfB]9EcZ;DFEMbNGBeCZH@,9IniRCF5!M:u6:4./77Kg>8ke5=^J=c/
+q,dMts'#5&pfmf)r`oJ-lokA4q)n^ApItU$rbDFJrbMaTCi!s*DZ4PSE;OYRErL+^FEM_JrcJ9c
+GB`n.rd"Nj!.=WBo2YchpJV&kr_rPhrD>+qJ:N6(K8#&7LP^kFN/WdXO-,TgPa.N#R$a>3S"-(A
+T:hmPUSO]^VPgAlri-1'XKAV-Y-7i/s0;U0rNlI0q6g1-qc!JnoMtfgrDW\n+/5I&TV%gISXc1=
+R[KP0QBd`"PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1-!J,XobIK"]qJ,OotJH1<$K6`-(
+Knb>;Ll$tGMi<USNfT6_OckllQ'IZ&R$jD4S=Q7DTV8*UUo(&fWN*##Xfen4ZEppG[^WfX]=bhk
+^VI_'`5Ta:aN;WKc-FY^dF-Lne^rF*g=k<:h;7&IiSrnXjQ5Oekiq?slg4!*mI'H3nF?&>o(2JF
+rq6<bs7cKes7uZjqtpBjr;H3cJcEXfJ,~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.3'p@e1Po^h\Fo'u5<n*]Q/lg!`ukK_?NbQH,6bg$$BmYUn"
+r/'m"q2,'-rJC-'%UiaP?<u17f%&=#e'cUirm(eoc-4ARaiO>!rlFrX!R&^`bm)D8bKA#NanUem
+MYW21Muo!!^\bbE^&PhF^&G_J^V7Itrac%=")j!f\Ga>D`;RUQ_YCtI_#KJpO8tFBO9L]Z]tHm)
+qa^ZWr^m&\s%EAcrD!;es%iVjs%rbor_rhr!*0#!.p#hT=]np4>?kE=?=$uG?t!JQ@Uiq[AS,Oe
+BP;*pCMRa&D/O60E,fl<F8g7iF`qtQG^4U]H[L3hIJQq5;[uo:ASZ:1I=mE=QCXbKYGAE#iW/$<
+j8e<@k5XWEkQC)7lKeE8r9XLPq=":Onr`m6pQGTtqT/QSaT)(RqS_O6pqet=It3'$K7el4L5:\C
+Mi<XUO-#KePE_>uQ^F20S"-%@StMdNU8+N\VPg>jWN)u!X/rG*Y-+u-YlD!.ZMV!%[/^1!_!\u9
+^AjlHTV%gISXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1-!J,XobIK"]p
+J,XuuJcC?%KE$UAKnb>;LPUeDMMmFPNK0']OcklkPa.Q$R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3
+Z*UdE[^WcW]"G\i^VI\&_o9U8aN;TJbg+M[dF$FmeCN7'g"P08h;-uHi8N\UjQ5OdkNM0plKdg'
+mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*fs*t~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.3'p@e1Po^h\Fo'u5<n*]Q/lg!`ukF7q>S,\rVRJLacD>\5=
+C\_fFD>e;BD$49T?X@%6SGSfURK/cOR/`N>QiNQQR/Uq&DZ4MMD"_]GDYfUsPQ-mHPPLFL=B8F%
+<aBQjN0O=*q3(E7s-!@uqJ6:rO,lb"qa^ZWr^m&\s%EAcrD!;es%iVjs%rbor_rhr!*0#!.p#hT
+=]np4>?kE=?=$uG?t!JQ@Uiq[AS,OeBP;*pCMRa&D/O60E,fl<F8g7iF`qtQG^4U]H[L3hIJQY-
+9+F]p<a&g<Anc+%Fa8CdKVX>$W;`dmWrK+"XSJsuY5YX(Yl1j&ZMSS4DYJ)IPl?mDOoWZ(aTK]/
+bKTn/rlkAdqTo,es3Uqse'lbDe,.\pf)=2&f\+s3q31Z>q31]=qigl@pldXcIt3'$K7el4L5:\C
+Mi<XUO-#KePE_>uQ^F20S"-%@StMdNU8+N\VPg>jWN)u!X/rG*Y-+u-YlD!.ZMV!%[/^1&OQho+
+OT2!oTV%gISXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1-!J,XobIK"]p
+J,XuuJcC?%KE$UAKnb>;LPUeDMMmFPNK0']OcklkPa.Q$R$jD4S=Q7DTV8*TUnsrdW2cl!Xfek3
+Z*UdE[^WcW]"G\i^VI\&_o9U8aN;TJbg+M[dF$FmeCN7'g"P08h;-uHi8N\UjQ5OdkNM0plKdg'
+mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*fs*t~>
+JcC<$JcF@%o`"gfrqu]ks7u`krV.0&p@e1Po^h\Fo'u5<n*]Q/lg!`uk>V@Xs&/nsr_ql@pcS44
+r]L$=rB1$?o/m.a?sd5Gr)!)as%rPfr_WAcs%i_n;#*ue;"m'N4S:l;:@h9[;#X5j7K#UV77g3N
+rDW\pp/Uujs&JeWr`/tfqa^ZWr^m&\s%EAcrD!;es%iVjs%rbor_rhr!*0#!.p#hT=]np4>?kE=
+?=$uG?t!JQ@Uiq[AS,OeBP;*pCMRa&D/O60E,fl<F8g7iF`qtQG^4U]H[L3hIJQ+s4:XM<5<qM%
+6psI584cEH9]Jja:A\)g=8uD%=oV\$>PMJ'?2n10>Q6hJ4oA%L9`Jf0C2%EuC]8,RD/=$*D/T>k
+qJlISs)\3^!d/U,rcJ3arceBe!-eEercnKjrd=N@s&B%up/V)kpJV&kqc!8f2h$7,J:`E+Knb><
+M2@.LNK0']OckomQ'Rc(R@9V8SXuFGTqS3UUnsrdVl6SpWiN2%Xf\b/YPtd+Z2_-,ZhCd+ZM[Z"
+<:j2g<;fbo;ZEF1TV%gISXc1=R[KP0QBd`"PEM)kOH5H_NJrgSMZ/G5Lkkta!JQ4+KE$Q'Jc1-!
+J,XobIK"]pJ,XuuJcC?%KE$UAKnb>;LPUeDMMmFPNK0']OcklkPa.Q$R$jD4S=Q7DTV8*TUnsrd
+W2cl!Xfek3Z*UdE[^WcW]"G\i^VI\&_o9U8aN;TJbg+M[dF$FmeCN7'g"P08h;-uHi8N\UjQ5Od
+kNM0plKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*fs*t~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-EfpAX^co^i(Q&+T/Xmd9B-lg!`ukKhGuc2Poec1QtjM#`G/
+M><&/MscJuM=6<*@UWYO?<mK]&D#C^eC)akdEp4ccHa\Yb/sP$rQ+iW!m8^1q9Ao_!6atlqhk6.
+!5JEF!58?Frk86D!5JKH!+Z"=s'l.DJ=*S2_u@OK_>]MpOSt4?7f,^T8H29Z9)hQa9`@cd:B+,h
+;#aAm;Z0Mp<)rous&T2&r`K8*>Q.k.?!dM;$=I:O@UinYAS#Idrb)ILC27U$D>nDkDfB]9EcZ>E
+F`hkOGBeCZH@($eI=6QoJ:LVh;[uo:ASZ:1I=mE=QCXbKYGnc+WrCrViVqg:j8S->jo=KBk61#5
+lK[^5m/QGRmd:#AqsXLQmudR3r0-uts2auUb5_4RqS_g>!5eTMqSG4?IXcm!JqJ`1L51SAMMmFQ
+NfT9bP*;/rQC+&-S"#q=StD[LTqeEZV5C/gW2ZesX/rD)Xfek2rilF-rj)C,q6U40s8Vf.m_A_7
+s.LF*T:VXFS=?"9R$a5+Q'IStP*1rhO,o<\N/W[PreUi8LPCP;KnTGXs+16%rIFlsrdO6_rdOls
+rI=s#JqEuS!JH1+L2Vj'M2@+JN/WaVO,oBbP*;,qQ'[l*R@B\9St;RJTqeEZVPgAlWiN5'Y->.9
+Za@-K\%0&]]Y2%o^r!t,`Q#s>aihlPcHjkbdaQ^rf%8R-g=tE=hV[8LioB([jlY^gkiq?slg4!*
+mdKW6nF?MK!qZ'Vrq6<b!;HHerqZTjqtp?irVc9cJcE^hJ,~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-EfpAX^co^i(Q&Fo8Ymd9B-lg!`ukF7s0R[a;Fs)%aOr+uFO
+q/$+Lmqr#>rbMOMoP=A@mqi5;@:3GK>kjfhS,SrXS,\oWRH0b7RK&ZJDZ+GMD#/#FPQ6pGPQ6pA
+PlI$K=T;J&<<H?9G_c6^rfd2AoTT;lqJ61L7f,^T8H29Z9)hQa9`@cd:B+,h;#aAm;Z0Mp<)rou
+s&T2&r`K8*>Q.k.?!dM;$=I:O@UinYAS#Idrb)ILC27U$D>nDkDfB]9EcZ>EF`hkOGBeCZH@($e
+I=6QoJ:L>`9+F]p<a&g<Anc+%Fa8CdKW0\*WrApqW;`dmWrK+"XSK!uY5b^'YlD!(ZMJM1DZ"GH
+Pl6gFOoibJb5TTablQ&5rQP;d"O>?>cHcC7rQkVndaJ-DrmV"ueC=KJrRUu#rn7A,pQPH<qigi=
+qigl@qNEmeIXcm!JqJ`1L51SAMMmFQNfT9bP*;/rQC+&-S"#q=StD[LTqeEZV5C/gW2ZesX/rD)
+Xfek2rilF-rj)C,q6U40s8VtXl&kq+s.LF*T:VXFS=?"9R$a5+Q'IStP*1rhO,o<\N/W[PreUi8
+LPCP;KnTGXs+16%rIFlsrdO6_rdOlsrI=s#JqEuS!JH1+L2Vj'M2@+JN/WaVO,oBbP*;,qQ'[l*
+R@B\9St;RJTqeEZVPgAlWiN5'Y->.9Za@-K\%0&]]Y2%o^r!t,`Q#s>aihlPcHjkbdaQ^rf%8R-
+g=tE=hV[8LioB([jlY^gkiq?slg4!*mdKW6nF?MK!qZ'Vrq6<b!;HHerqZTjqtp?irVc9cJcE^h
+J,~>
+JcC<$JcF@%o`"jgrqu]ks8)ckrV-EfpAX^co^i(Q%IrrVmd9B-lg!`uk>YCY;?9]qmQCP6of_q0
+p-%P#"_(nJ?X@"7;#O5k;Ys>k;#=#j:f1(dpJ:fcpeh&f!'Kg6rB0p>r_E,^rD<Ae!(6WO!_>s[
+qG[Amoi:ojpHARHqa^WVs%3,\s%EAcr_<Dfs%iVjs%rborDN_r<W6&!<rcA%=TM]1r`fJ0?N+:=
+?t!MR@q0%\AS,TSBE`*bCMRa'rb`WmE,fl<F*)MHF`qtQG^4U]H[L3hI=?ZrJ3EEb%R!!?5X@b*
+6q'R98P2WLj%[Qhs/PipqH*Yu!*T;)q-3Sus'>V.r]U3Bm61DCr([2ds%WDb"DVXbC23``rbMmX
+DJjB2E,fl:E;abVErL.ZFT-F]FoZabGQ;seGQrG>H[L3hIJ6\><;'>k<;0;k<;TVj;E0)RIt3*%
+K7nr5LPUeEMi<XUO-#NfPEhE!R$a;2S"-%@T:hmOUSO]^VPg>jWN)u!XK8P+Y-5&.YlD!-ZMLp'
+Zi[S=Z2IW#<:a,g<;]\n;ZEF1TV%gISXc1=R@'A.QBd`"PEM)kOH5H_NJrgSMZ/G:Lkg_>KnY3Z
+KE$N'Jc1,uJ,XoaIK"]qJ,Om!JV&LQK)pXZre>?HLl$tGMi<USNfT6_OckomQ'I]'R$jG5S=Z=E
+TqS6WUo(&gWN*##Xfen4ZEppG[^WfX]=bhk^VI_'`5Ta:aN;WKc-FY^dF-Lne^i@)g"P39h;7&I
+i8WeWjQ5OdkNM0plKdg'mI'H3nF5uIncJFTo`"O`p&Ojcq#:*hqYU0gr;HTardk*gs*t~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb(\I=io'u5<n*]T0m-Ep#kg.W%ccs_YbjUGhM>E,0
+M>2u)Mti/0Mu&>.M=ZT=A7K(W?XI,Ef\"g-f%&@$e'cXjd/MAkc2u54ans-WaSO!ab0/#RcHa\[
+cMl&gbjLDgMYi;8^q[Uu^;'NY!58!<s()(<s'c(SOJot`_uIUL_>fPr7K,dR8,c'Z8c23\9E.]a
+:&drg:]4)k;,U<k;Z]ou<W6#"='5H)&6`:B>[1Q??=.&I@:<VS@q>RM.qWF-BPD3rCMRa'DJjB2
+E,fl<F*)MHG'8(RG^4U]H[L3hI=?ZrJ:W9'KD&4R=C5WTEHlnaMNF-pU8Y9!YlC^%W;YTRi;V^7
+irA'=jSn9@k5XTJkiq?slg+K8rpB[Pr9sURm#h70rlFQKbQ%7QqS_j?s2+WMr5/J^0n+V&JV&N-
+KnbA>M2I7NNK9-_P*2&pQ'[l*R[]e;St;RITq\<XUnsrdVl6SpWiN6#XoGO(YPk^*Z2_-"ZiC("
+_!\u8^)`o?T:VXFS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PreUi8LPCP;KnTGXs+16%rIFlss*j<_
+rdOlsrIFp!!.t3&s+CN/L5(J>reYBIMi<XUO,oBbP*2&pQ'Rc(R@9V8SXuIHTq\<XV5L5iWiE/&
+Y-5(7Za7'J\%&u[]Y(tn^qmn*`Pom=ai_fNc-FY_dF6Upf%8O,g=k?<h;7)JiSrnXjlY^gkiq?s
+lg4!*mdBQ4nF?MKs766_rq6<bs7cKes7uZjqtpBjr;H3cJcE^hJ,~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m-Ep#kl%"NRK8nHp20YDs)%UM
+mqqf8oP=DApMC4I@q&kR?X@!.Sc,)WSc,)YS,\oWRHKt7RIY7fD<mG`Q2Oei=&r=$@rd0aqiq)D
+rfZf8s(h[(r^QcTr^d&\r(?u^s%NAcs%WPirD3Pm;H!Km!`W0"r`0&$=T2G7>$G39>[:WA?XI2L
+@:E\UAH$-jAnPdjBkhBuCM[j*DJsH4EH-#?FEDYKG'A.TH$Xd`I!g?jIXcluJUrE*p.Glj;H?t-
+@:j4jEHQPTJV:4\s/H!rrMKUmri#dpql0^uXK;3!s/u@)rNH:,q6L!;r,;:Hs)%^Prg!)>rK@9*
+b5TTac25`bc2Z&jcd'i7ci)5idf%VteC2mreG[qtecXOVf\-5Wooo9;qigf<qigl@r0.//0n+V&
+JV&N-KnbA>M2I7NNK9-_P*2&pQ'[l*R[]e;St;RITq\<XUnsrdVl6SpWiN6#XoGO(YPk^*Z2_-"
+ZiC()OQVc(O<($fT:VXFS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PreUi8LPCP;KnTGXs+16%rIFls
+s*j<_rdOlsrIFp!!.t3&s+CN/L5(J>reYBIMi<XUO,oBbP*2&pQ'Rc(R@9V8SXuIHTq\<XV5L5i
+WiE/&Y-5(7Za7'J\%&u[]Y(tn^qmn*`Pom=ai_fNc-FY_dF6Upf%8O,g=k?<h;7)JiSrnXjlY^g
+kiq?slg4!*mdBQ4nF?MKs766_rq6<bs7cKes7uZjqtpBjr;H3cJcE^hJ,~>
+JcC<$JcF@%p&=pgrqu]ks8)ckrqQNf!;?Eb'D1neo'u5<n*]T0m-Ep#kZ(V^<;f_^4o.A=4n1Z5
+4TI\@4mtK<A7K(W?XI,EqbR8ir)3Dh!)WMf"&Mil;"mcc;#*rk:d$s(4S(Z54Sq;?:A7Q_;#!fd
+:B!TX6NfkN9i+a`;uTbh<W,tu4oe%N7f,^T8H29Z9)hQa9`7]c:&n)g:]aKl;Z9Sr<)lrt<WQ9(
+r`Ke9>?b?;?!UcD?XR;N@U`hXradTlB4tsmC2.O"Ci+'-Df9T7EH6,BFEMbMGB\:WH?spcI!pEl
+It3'#JV&OJ4:XM<5<qM%6psI584cEH9]Jjl:B.<mW;T`k<r,nt=9)M'>52=s>Qe>;>[(G04o7A6
+4oS7R:&n#c:B+&g9`Jc,BkmW_rbMmXDJjB2E,]f9E;abVErC(YFT-F^FoZacGlN!eGQE)9rd=`o
+s&A_kr`&Skr`&Acr)3QC0n+V&JV&N-KnbA>M2I7NNK9-_P*2&pQ'[l*R[]e;St;RITq\<XUnsrd
+Vl6SpWiN6#XoGO(YPk^*Z2_-"Zi@<1;uTbf<W#ho;uBN6TqJ$LSt2@?R[KP1Q^3o%P`q8nOcYWb
+NfB!VMi.Lj#)J%hL4t>7re(6&!.k*!rdXrsm!\k^s*suts+(0%re(6("GMSbLPYqdC5Rq.NK0'\
+OHG]hPa.N"Q^F20S"-%@T:hmPUSO`aVl6VqXKAY/Yd(O@[C3QS\[oGd^;%J"_Sa@3a2lBFbKS5V
+cdC.heC<($f@em3gtgfCi8ESRj5]7`k3(sml0@U$m-X6/n*fc9rpp*\!;-9`s7ZKerV6EgrqcNh
+rqu]mo)=4?`W(G~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb(A.4ho'u5<n*]T0m-Ep#kg.W&cd0k\onra,l&,(j
+oSWU(rJLK1s,%+oA7K(W?XI,Eg&9P7f@JO&eC2jndEp4ccHXVVaSj0WaSs<]b5]Qcb0/#Rqp#5e
+cK'ld_8*k$_#;%B^AktF^AkqJ_#7dCAH-0>@KUS)TXaF-s2+TJr^QcTs%*,\rC[)_s%NAcs%`Si
+r_WVl!)ieps&8tur`9&#!*K5'!Er_,>QJ,:ra,\6@K'^C@q9.^AnG[hBPD5\CB\NkDJjB3rc&*^
+F*)MHG5c[mG^4U]H[L3hI=?\FJ-LRVK7ei1L&=jZ=C5WTEHlnaMNF-pU8Y9'YkY-nhuDX6iW%p;
+j8S->jo4EAkl9lKlKdd7m/?>MmeuVQnElA<Oo^]cq8i-IbQ$D9o>3>2I=6QpJ:W?*KSG5;M2@.L
+NK0']OckomQ'Rc(R@9V8SXuFGTqS3UUnjibVl6PnWiE,$riQ4'!3c@*riuI.o<\JspqZ=4qn=&B
+St;LCS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PreUi8LPCP;KnTGXs+16%rIFotrdO0]rdOlsrI=s#
+JqEuSDhNh!L51P?M2@+JN/WaVO-#KeP*;,qQC!u,R[]e;St;UKTqeE[VPgAlWiN8(YHY:;Za@0L
+\@K2_]Y2(p_8=(-`Q#s>aihlPcHjkbdaQ^rf%8R-g=tE=hV[8LiT&tZjlY^gkiq?slg4!*mf)YU
+nF?MK!qZ'Vrq6<bs7cKes7u]kqtp?ir;H3cJcEaiJ,~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m-Ep#kkpqMRe:O`DXMB:D"qf@
+D#\>XARo:[@:*AJ>kX`eSH#&[R[KT.R/<<KD>%l?D#fjfPkgUC=8uD&<s;W)?>b1Mrfd>GlBD3:
+qa^ZWr^m&\s%EAcrD!;es%iVjs%rbor_rhr!*0#!s&T2&r`K8*>Q.k.?!dM;!FT@8@L?UUAS#Ic
+B4tsmCAquPCi+'-DfG\q"`e[+FEMd+G7&S?H?spcI!pElJ,Xs&JV&N,KS5'W9+F]p<a&g<Anc+%
+Fa8CdKXHO/Vu*@jVuEXoWVidrWroH*XfhN&s/u=(rNQ+'q/-1Nrb_^Sphg+LPkgU9PQd8nbKJ,S
+rlkDcs3(Jfqp,/drm1YmrmL_n!7Lkq!7_"us4.5&f`'S'g&TmtPkgO;P4=_mH[U<kJ:N3'K7nu6
+Ll$tHN/`jYOHG]iPa.Q$R$jD4S=Q7CTV8'RUSO]^Vl-JlWN)u!XT#@%XoP[(Yl:p,ZLbF&s8S2[
+Oo:I2Oo(4[T:VXFS=?":R@'A.QBd`"PEM)kOH5H_NJrgSMZ/G:Lkg_>KnY3ZKE$N'Jc1-!J,Xo_
+IK"]qJ,Om!JV&LQK5ZEsL5(J=Ll$tGMi<USNfT9aP*2#nQ'Rc(R@9V7SXuFGTqS6WV5C/hWN*#$
+Xfnt6ZEppH[^`lZ]=bhl^VRe(`5Ta:aN;WKc-FY^dF-Lne^i@)g"P39h;7&Ii8N_VjQ5OdkNM0p
+lKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0iqYU0gr;?Nardk*hs*t~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m-Ep#kl+T^<<#kc4oIM@4oISB
+4mG/q4o[VMARo:[@:*AJ>l7Ft;>a>i;?'Ji:BOEj;,I3es%rVh"&Mil;#F/j4oIM548qA?4oA(N
+:]+&b:]4&g6i04M6N]_J9i(ac!)iSjr`&Sks&T+gqa^ZWr^m&\s%EAcrD!;es%iVjs%rbor_rhr
+!*0#!s&T2&r`K8*>Q.k.?!dM;!FT@8@L?UUAS#IcB4tsmCAquPCi+'-DfG\q"`e[+FEMd+G7&S?
+H?spcI!pElJ,Xs&JV&N,KS5'W4:XM<5<qM%6psI584cEH9]Jjr:AC^e<;]bk<r5tu=T2J&>5MM)
+>[.,2!*fA+r`f1]q)nU=s#pHH:AI]W:'OF+BPD3sC]8,PD/O60qf)LR!-8$ZrcJ-^s*"Ed!-nEc
+"*f*;HiAElI0*DJ<;0>f<;KVo<:*U@H[U<kJ:N3'K7nu6Ll$tHN/`jYOHG]iPa.Q$R$jD4S=Q7C
+TV8'RUSO]^Vl-JlWN)u!XT#@%XoP[(Yl:p,ZLbC*Yd%,+<;ons<qo\m<;]\l;B2=#St2C@S!ob4
+R$X,(Q'@JqP*(ieO,f3YN/NSmM$AckL5(D9K`6W(JcLB#JH(,uId;F]IfForJ-(:RK)UC@KS>/8
+LPL\BM2I4MN/`jYOHG]hPE_>uQ^F20S"#t?StMdNUSO``Vl6SpX0&M-Yd(L?['mEQ\[oDc]t_=u
+_SX71`lH0BbKJ/Ucd:(fe'uq!f@\d1gYCWAhr*GOj5]4^k2tjjl07L!m-O--rpKmWnc&(\oCV\S
+p&Facp\jmeq>^<gqu-HjrUTr=s2P(h~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb(%h+go'u5<n*]T0m-<j"cHjh`d*L#9MuSb6MuS\2
+MsQ>rMZA_6Mt;f+M>W80MuS_EAn>L_@UWVN?<l4;g&BV0f@JO'eC;sqdJhJqcd'bXanWsWao'<]
+b6#o4c2Gofch`UcMuUWm^]M?f_#1qI^AP_I^;%G\^&c!arPADArFGq<")<CTZ2MT>_Y1nD_Yh7J
+8,l-Z8c;9]9E%Wa:&dug:]=2j;?'Pn;Z]ou<W6#"='5H)'j=gG>[1Q??=.&I?t!MR@q0%\AS,TS
+BF8HgCMRa&D/O60E;jhoEcZ>EF`qqPGBeCZH@(!dI=6QoIt3'#K)UB'KSBD[%YojsM/dcgK8PbV
+SYE'd^T[^7o;2SchVS.erS[\6s5O"<s5j:Cs6'CF!U8nKli-8LmJQDOn,;bPOoLU;Onm&paRdHs
+rrC!n_t1`,I!pEmJ:N6(K8#&8Ll%"IN/`jYOHPcjQ'IZ&R$jG5S=Q7DTV8'RUSO``Vl-JmWN)u!
+XK8P+Y-+t3rNQ:+r3H1*rNZG'p;$14qn=DLSt;LCS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PM2@%E
+LPCP;KnTGXs+16%rIFotrdO0]rdOlsrIFp!!.t3&!JH1+L1Z3sM2@+JN/WaVO,oBbP*;,qQ'[l*
+R@B\9St;RJTq\?YVPg>kWiN5'Y->.8Za7'J\%&u[]Y(tn^qmn*`Pom=ai_fNc-FY_dF-Oof%8O,
+g=k<;h;7&IiSrnXjQ5Oekiq?sli-5YmI'H3nF?&>o(2JFrUg6cp\4X]rqZTjqtp?irVc<dJcEai
+J,~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m-<j"Rf&WTRdk7\DY7iHDYJ#C
+D#8#FC^OccA7K(W?XI,ET(\`RS-5=MR[KT0R/<<CD>S5FD?#n#PQ7!>PkgUCQMsq`=8uD&<s)Z@
+G_kaNpQGGEs%*,\rC[)_r_3;cs%`Sir_WVls&/hp!`W0"r`0&$=T2G<>$G39>[:WA?XI2K@:E\U
+@q9.^AnV*V$>F6jCM[g(DJjB3rc&cqF*)MHG'8(RG^4U]H[C-gI=?ZqJ:N3&rdt6)L&Qf:LPUeD
+?=@G[D/j]DI=['dK`It@V?!IlV?!IkVZ!FlW;ijoWWB0%rN-(&qlTn$qlg%(!3uC+rbqIIrbqdR
+q3:cAo9B3trQG5b!6tMg!6tMgrQbPldF%sArR:bo!n5ZKrm_,%f@S[Sg&Kb,g"PnZqig]9nrl._
+I=6TqJ:`E+KnbA=M2I4MNK0']P*2#oQ'Rf)R@B\9SXuIHTqS3UUnsrdVl6SoWiE,$XKAV-Y-5&-
+Yl:p*ZMLp+Z3(&fOT(C<P4Fb4O=$TkSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26tCL5(D9
+K`6W(JcLB#JH(,uId;F]IfForJH(0#K)UB'KSBD[Aqu2!M2I4MN/`jYO-#KePE_>tQ^F/.S"#q>
+StD^MU84T^Vl-MoX/rG+YctC=ZaI6N\@K2`]Y;.r_8=+/`Q-'Ab0/#RcHjncdaZdtf@S^0g=tH>
+hV[8MioB([jlYail07L!rp1$[mdKW6naZ2@oCMVQo`Fj]p\jmdq>^<gqu-HkrUTr=s2P(h~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m-<j"<;fet<)`ZXof`"2qE<n%
+n3%(iARo:[@:*AJ>l7Cu;>F,f;?'Ji:BF?i;>X2e:]4,i;#jGh4oRS63rhDB4oA(O:\mob:\dca
+6iKFP62s7S6UsgG;Z0Jm;YX2i<;'>i8,l-Z8c;9]9E%Wa:&dug:]=2j;?'Pn;Z]ou<W6#"='5H)
+'j=gG>[1Q??=.&I?t!MR@q0%\AS,TSBF8HgCMRa&D/O60E;jhoEcZ>EF`qqPGBeCZH@(!dI=6Qo
+It3'#K)UB'KSBD[%YojsM*XKs6q'R98P2WLj%\?)!2]:a!2]WnrDiVnrDs)'='/T&=oV\&>Ph\)
+>Q.n+>P:5T49.P?:ARcY:&o#-CB&,MD?"JRDuO\UDuO_UEW:(XF8g:\FoQX`G5ugcG6<)9H[GX;
+"BJN&<)iTjqGd;kr`&;a4+)I)It3'$K7el4LPUeEMi<XUO-#NfPEhE!R$a;2S"-%@T:hmOU8+N\
+VPg>jWMuntX/rD)Xfeh1YPk^)Z2Cp(Zi.03Y>\D"r`/eqr)NYor)<Jj-D-m$SXc1=R[KP1Q^3o%
+P`q8nOcYWbNfB!VMi*@JLkph@L4t>7re(6&!.k*!s*t#sl[Ab]s*suts+(0%rdt6)L&Qg=LPUeD
+MMmFPNK0'\OHG]iPa.N#R$a;2S"-(AT:qsQUnjlcVl?\sXKAY0Yd(O@[C3QS\[oGd^;%J"_Sa@3
+a2lBFbKS5VcdC.geC<($f@em3gYL]Bhr*JQj5]4^k3(sml0@U6ljN4Kn*fc9nac8BoCW"S!quB_
+rV6Bfs8)WirVZWmo)=4?`rCP~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqIE+p@e1Po^qbGo'u5<n*]T0lg!a!c-FY]d*V]Kpl+s*rJLQ3
+!/gc6!/g`5!/gQ0q2G*,!K)g3MZ/MFN+cm:ARo7Z@:*AI>h[obg&BY(f*9gVeC;sqdJhJrcd'bW
+aN=8!s2k5^s3(Dc"3o-:ch!+bMuUWp_8-&drP/]T^qd_#^q[Y"rkJHH!l)OdrPANL!P`+CA,Ts<
+AcH9DAUKZ@_Z%IM_YV1K_>qFL_>qFO8,c'Z8c23\9E.]a:&drg:]4)k;,U<k;u]es<W6&!<rcA%
+=TM]1r`fh:?=$uG?t!JQ@UisJAH?CUrb)XQC27U$D/F0.DfG\q$?C30FEMbMGB\:Wrd#<+I!pEl
+IXcluJUrE*K7nr4L5(J=M#N53MMqIm!N3*AYPk6bU]B6LhYc:/i;_d9iW/$<jT"?Ak5FKBkl9rI
+li-8MmJH>On,;_UOo:C>Oo:I?On?ZoaRR<rs8Ksn_t:f"H[L6jIt3*%K7nr5LPUeEN/WaWO-,Tg
+Pa.N#R$a>3S"-(AT:hmPUSO]^VPg>jWW&n!X/rE%XTGZ/YPbX'Z1bL%Z1l'4^]2%A^\Y\ESg0er
+S"#k7R$a5+Q'IStP*1rhO,o<\N/W[PM2@%ELPCP;KnTGXs+16%rIFotrdO-\s*jutrIFp!!.t3&
+E.iq!L5(J>M2@+JN/WaVO,oBbP*2&pQ'Rc(R@9V8SXuIHTq\<XV5C/hWiE/&Xfnt6ZEppH[^`lZ
+]=bhl^VRe)`5Ta:aN;WKc-FV]dF-Lne^i@)g"P39h;-uHi8N\UjQ5OdkNM0plKdg'mI'uB!V#XY
+o)J:]o`"O`pAamcq#C0hqYU0hr;?Nardk*is*t~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqI9'p@e1Po^qbGo'u5<n*]T0lg!a!R[X2El>>s,phfhEphfY>
+s(DdPARo7Z@:*AI>b7P\Sc5/ZS,\rVRI$=>RJh$mD>J/LD>oe#Pl?sHPQ7!GPkLC=QMOY^=8c5'
+B6Aiinrrj3rf[>Fr^ZrYs%3,\s%EAcrD!;e!)NPi!`;inr_rhr!*0#!s&T2&r`K8*>Q.k8?!^iE
+?XR;N@U`hXrac+BBDuQOBkhF!Ci+$,DJsLnE=-`-FEDYKG'A.TH2`+)H[L6iIXZcsJ:W9'K7ei2
+Knb>;LPYqd!K)g7MueH]aFsMem\KlZs/,gmrhfUkrhogrqPjRsXSo:$Y5GF$Y5>C(Yd(J2Z2q:L
+r,;7Gs)7Oo!1!)=!mJj3rQG5b"O56;c-?75rQbJjrmC_n!n5TFrmLhq!S#[!f)F;#f_sLkPl$[;
+P4OkkH[L6jIt3*%K7nr5LPUeEN/WaWO-,TgPa.N#R$a>3S"-(AT:hmPUSO]^VPg>jWW&n!X/rE%
+XTGZ/YPbX'Z1bL%Z2Kg\P4Fb3OT1msSXc1=R[KP1Q^3o%P`q8nOcYWbNfB!VMi*@JLkph@L4t>7
+re(6&!.k*!s*t#sl@&\]s*suts+(0%re#0CKnY89LPUeDMMmFPNK0'\OHG]hPa.N"Q^F20S"-%@
+T:hmPUSO``Vl6VqXKAV.Yd(L?['mEQ\[oDc]t_=u_Sa=2`lH0BbKJ/UcHstee'uq!f@\d1gYCW@
+hr*GOioB+]k2tjjl07L!m-O--rpKmWnc&+Zo)SF^p&Facp\jmeq>U6fqu6NkrUTr=s2Y.i~>
+JcC<$JcFC&o`"gfrqu]ks8)ckrqI9'p@e1Po^qbGo'u5<n*]T0lg!a!<)ifro03(8o/uh3jZN3!
+s(DdPARo7Z@:*AI>Z"As:]OAf;Z0Jl;#F)j:f1*e;#*lh:f1%Or]C'@q`Xm?oK3"Hq+pf_r(m&^
+!DPoX6iTLP5mBYE8ki2^;Z9Pl;YX2i<;KVo8,c'Z8c23\9E.]a:&drg:]4)k;,U<k;u]es<W6&!
+<rcA%=TM]1r`fh:?=$uG?t!JQ@UisJAH?CUrb)XQC27U$D/F0.DfG\q$?C30FEMbMGB\:Wrd#<+
+I!pElIXcluJUrE*K7nr4L5(J=M#N53MMqIm!D?,-:&UjUV#"'i<VTVo=8Z1s=TDY%>Pqb)>Q.n,
+>Ot#T4S2DF:]F2f:]=,gCB&,MD?"JRDuFYTE<'tVE<(%YF8g:[FTQc1FoHR`G5upfHN&9jI/[1H
+<W?%m;u0Ji<W5te;_WQGI=?ZrJV&N-KnbA=M2I7NNK9-_P*2&pQ'[l*R[]e:St;RITq\<XUnsrd
+Vl6ToWWK6&XT#='Y-5&,Yl1j#ZMh'.<<#to<r>tq<;]\k;ZE=5SXc1=R[KP1Q^3o%P`q8nOcYWb
+NfB!VMi*@JLkph@L4t>7re(6&!.k*!s*t#sl@&\]s*suts+(0%re#0CKnY89LPUeDMMmFPNK0'\
+OHG]hPa.N"Q^F20S"-%@T:hmPUSO``Vl6VqXKAV.Yd(L?['mEQ\[oDc]t_=u_Sa=2`lH0BbKJ/U
+cHstee'uq!f@\d1gYCW@hr*GOioB+]k2tjjl07L!m-O--rpKmWnc&+Zo)SF^p&Facp\jmeq>U6f
+qu6NkrUTr=s2Y.i~>
+JcC<$JcFC&o`"gfrqu]ks7u`krV.9)p@e1Po^qbGo'u5<n*]T0lg!`Xbg"J\chiXkN:`&*N;eb4
+N;eb+N;/>1MZ8SHC1q6lARo7Z?sd8H>hdudg"HAWs47J+e^W*tdaA'@"jbH;b/qd%aT'B\b5]Za
+bl>ofcKgG_MZL`4qnW9Jrk\WMs2"WKr4`6Ir5&BJ$,=9k@:3JP@q0'GAHR.9Uq6NBpqm$JrkeQK
+!l@Gtr^d&\r(?u^s%NAcs%`Sir_WVls&/hp!`W0"r`08*=BJ^/>$>/0>QJ,:ra,\6@K'^:@q>RM%
+q]HfBPD0qCMRa'D/O60E;jhaEcZ>EF`qqPGBeE4H3&A?rd=frJ,Xs!JV*lR!JH1+L'NKiLl$tGM
+MqIm!f`5#rf7,BOcfX+s-!GIlE:2Yr1<kZrh0"Zo:c?Agt^`ahYl@0i;_d9ir8!<jT"<Ak54?Ak
+Q'lHlMp2Mm/HDKmJu_SnG\RHOSP"=aRdIN`q.6ss89gn_t:f#H@($fIXcm!K7ei3L5:\CMi<XUO
+-#KePE_>uQ^F20S"-%@StMdNU8+N[V5C/gW2]cr!irE(riQ4's0)=(oWeA!pqZmDqS)g@qS"8IS
+Xc1=R[KP1Q^3o%P`q8nOcYWbNfK*XN/NRMM26tCL5(D9K`6W(JcLB#JH(,uId2@]If=irJH(0#K
+)UE&KER!`L51TaM/8'-N/WdXO-#KeP*;/rQC!u,R[]e;St;UKTqeE[VPgAlWiN8(Y->.9Za@-K\%
+0&]]Y2%o^qmn*`Pom=ai_fNc-FY_dF-Ooe^rF*g=k<;h;7&IiSrnXjQ5OdkNV6rlKdg'mI'H3nF
+5uIncJFTo`"O`p&Ojbq#C0iqYU0gr;?Nardk*js*t~>
+JcC<$JcFC&o`"gfrqu]ks7u`krV.9)p@e1Po^qbGo'u5<n*]T0lg!`&R@9S6S)S;TDY@rBDYS)H
+C_(8oB4b^c@U`_P?X6p/St>bKqjd\Us-a"WR[X5Dqj7AOpmD#JphoM:r,2=q!0mJJr06r@qN_;O
+QC!q?=8Gts=8uA)A9*6^nWWa2!g?,Er^d&\r(?u^s%NAcs%`Sir_WVls&/hp!`W0"r`08*=BJ^/
+>$>/0>QJ,:ra,\6@K'^:@q>RM%q]HfBPD0qCMRa'D/O60E;jhaEcZ>EF`qqPGBeE4H3&A?rd=fr
+J,Xs!JV*lR!JH1+L'NKiLl$tGMMqIm!f`5#rf7,BOcfX+s-!GIl@]/.r1<kZrh0"Zo:l2Zs/#am
+rh]XlrMTUm!3,ps"fnZ'X/rE%Xo>L$XoGR$Y5kg+Z2V'/ZN=u]DYe;IDW$cZb5f]abQ#fdblZ28
+c2Q#eci)5fdJhPre'upurRV##rn.2&mZdU4o9/d10m\1oI=?ZrJV/T.L5(M@M2R=PNfT9aP*;,q
+QC!u,R[]h<St;UKTq\<XUnsrdVl6ToWWK6&XT#@%Y5b^&Yk54!YlBj\P4Fb3O<pKhS=?":R@'A.
+QBd`"PEM)kOH5H_NfB!VMi*@JLkph@L4t>7re(6&!.k*!s*t#sl@&\]rdXots+(0%re(6("GMSb
+LPYqdCl4.0N/is[OHG]hPEhE!Q^F20S"#t?StMdNUSO``Vl6SpX0&M,YctF>['d?O\[f>b]tV7s
+_8=+/`Q-'Ab0/#RcHjncdaZdsf@S[/g=tH>hV[8MioB([jlY^gl07Kulg4!*mdKW6nF?MK!qZ'V
+rq6<b!;HEds7u]kqtp?ir;H3cJcEgkJ,~>
+JcC<$JcFC&o`"gfrqu]ks7u`krV.9)p@e1Po^qbGo'u5<n*]T0lg!_5;cH^r<U;pI4o%524oRS@
+4mtN24Ul.>B4b^c@U`_P?X6o5qbd)cs&&\jr_NPjr_`SirD3>d!`(p@pH/@:qE=g?q)eRNrD*Di
+rD38dqbQr]"&2Nc62j4I6OlFK5sn1::f:4j;Gg:h;Y*id<!$&i8,c'Z8c23\9E.]a:&dug:]=2j
+;?'Pn;Z]ou<W6#(='/R-=^#!5r`fJ0?N+:4?t'%D!Fo[>AIiBcBP;*oC27U$D/F0.DfG\q$?C30
+FEMbMGB\:Wrd"TlI/\NpIXh?I!J,k%K)pXZre:Z5LkpnEMMd>kMuo!!NrG(@OHG\)P5g^GPj1sC
+Sc#)XTDkMXU%>#P<<#to<rH+u=SZ)">5DJ&>QA(->Q7t,>Q-bV4TIV4:@q<a:hjc^rb_[Qs)7mU
+!c`0urGhdVrcA'\"*Jd1FoHRaGQ2pdHN/?kI/I%F<W?%n;u0Jh<W5tg;_`TFI!pHnJ:W?*KSG5;
+M2@.LNK0']OckomQ'Rc(R@9V8SXuFGTqS3UUnjiaVl-Jmri-%#XK;E's/uC*qlo^trNH?&<E8iq
+r)NYor)<Gi-(^ZtS"#k7R$a5+Q'IStP*1rhO,o<]NJrgSMM[1GLkg_>KnY3ZKE$N'Jc1-!J,Xo^
+IK+cqJ,XuuJH1<$KE$T-Knb>;M#N6IMMmFPNfT6_OcklkQ'IZ%R$jD4S"6.BTV8'SUnsrdW2Zet
+Xf\b1Yd1UB[C3QT\\#Mf^;%J"_Sa@3a2lBFbKS5VcdC.geC<%#f@\g2gYL]Bhr*JQj5]4^k2tjk
+l0@R"m-O--n*fc8nc&(\oCV\Sp&F^cp\agdq>^<gqu-HjrUTr=s2b4j~>
+JcC<$JcFC&o`"jgrqu]ks8)ckrV.6(p@e1Po^h\Fo'u5<n*]Q/lg!`Wbfn>XqMX^!qMX*eqMPiB
+CM@HpAn>L^@UNPL?!R?^s4RD(s47h5e^W*tda?Fgcd0k[bK@uLqoJfZrlP5arQP;dqi0m"r/:Ql
+s2+TJ!5STM!PlPN_#M1K_#(tD_#%OC@Uiq[Ac?9FATETu[)2dZoYULAs%!)[r^m&\r_*8brCm>g
+:J^pc!`;inr_rhr!*0#!s&T2&r`L=H>?b?;?!UcD?XR8M@U`hWA7]=aAnPdjBkhBuCM[keD?4Zp
+rc'$#F*)MHF`qtQG^4R\H@($eI=6QoIt3'#JqAW-KS5'YL&m'cre^Z4!/pi8!f`5#rf@)@!0R8D
+s-*JIrg!MLs-N\Os-`kTrL<eVrginWrL`t[pn@Z?s4[V1h;/%ds53\2s5O";!9F.@qre"Cs69OJ
+!pf4>r9aCLs6p!W!:fuLpQ,B;rQ+WOq8W-Kci<m\iPY?*s*?AGI=6QpJ:`E+KnbA=M2I4MNK9-^
+P*2#oQ'Rf)R@B\9SXuIHTqS3UUnjiaVl-Jmri-%#XK;B&s/uC*l`gAl!PlPN_#D+B^AktC^*K8>
+S"#k7R$a5+Q'IStP*1rhO,o<\NJrgSMM[1GLPLV=KnY3ZKE$N'Jc1-!J,Xo^IK+cqJ,XuuJH1<$
+KE$UNKnb>;LkpnEMMmFPNK0']OcklkPa.Q$R$a>3S"-(AT:qsQUnjlcVl?\sXKAY/Yd(O@[C3QS
+\[oDc]t_=u_Sa=2`lQ6CbKJ/UcHstee'uq!f@\d1gYCW@hr*GOioB+]k2tjjl07L!m-O-,mdKW6
+naZ2@oCMVQo`Fj]p\jmdq>^<gqu-HkrUTr=s2b4j~>
+JcC<$JcFC&o`"jgrqu]ks8)ckrV.'#p@e1Po^h\Fo'u5<n*]Q/lg!a6RK&`4D=MN8D>J/FD%18p
+BP1pgA7B"U?X@#CrLWhUqjd\Ur0mVQs-WhQs-WbQrL!POrb_:Fmqq]^s-3;Ds-<YMqj.&Es&]5&
+!*B%urDs23DgmY1Q'Cs*plbYIs%*,\rC[&^s%NAc!_uNerD3Pm;H!Kms&8tur`9&#!*K5'+'MlQ
+>[1Q??=.&I?t!MR@q0%\AS,OeBP;*pC27U$D>nDRDfG\q+*)FEFEM_LGB\:WH$Xd`I!g?jIXcit
+J:W<(K7ei1L&Qf-LPYqds,$f7repo<NfO+"s,[5Crf[;Fs-3MJs-E\OrL!VQrgNeTrg`tYqO[YX
+qk3_XrM0:dqka:hrMT[os/H!tqlBaus/l7&rN-(&q6'k(Z*F85!4;`Bs).XNrb__$hNS&ab5TQa
+bl5ldc2c,gcMl/gd/25idK%erec")!fDXA$f`9aoPl$[8P4t1?H8'\oI=?]sJqJ]0L51SAMMmFQ
+O,oBcP*;/rQC+&-S"#q=StD[LTq\<XUnsrdVl6ToWWK6&XSo:$Y5b]kYl:g,P*>j-nr`^/,b:Hp
+S!ob4R$X,(Q'@JqP*(ieO,f3ZN/W[PM2@%DLPCP;KnTGXs+16%rIFotrdO-\s*jrsrdb$"!.t3&
+s+G]PL5(J>Ll$tGMi<USNfT9aP*2#nQ'Rc(R$sM6S=Z=ETqS3VUo(&fWN*##Xfek3Z*UdE[^WcW
+]">Vg^V@V%_o0O6aN2KHbK\>Xd*^:jeCE.%f\,!5gtgfDi8ESRj5f=ak3(sml0@U$m-X3.n*fc9
+nac8BoCW"S!quB_rV6Bfs8)WirVZWmo)=4?aT$b~>
+JcC<$JcFC&o`"jgrqu]ks8)ckrV.'#p@e1Po^h\Fo'u5<n*]Q/lg!a6;u]hX55[PD4QATp4:c4A
+BP1pgA7B"U?X@#C:f.$dqbdDmr_ibnmna']:f%!aq`OL4r]L$?r]L3Bs%`Ge!)EJgqb[,bpeCfb
+r_EJhrB^ELqEkQU6UsaC:f1+g;uT\d;u]hs8,l-Z8c;9\9E.]a9`e'c:]4)k;,U<k;u]es<W6&!
+<rcA%=W^gO>?kE=?!^lF?smDP@UinYAS#IcB4tsmC2.O"Ci0/h!H2rVE?B4BFEDYJG'A.TH$O^^
+H[L3hI=?ZqJ:N3&JqJ]/KSBD[!JcL1M>rG5MuJY:NK0%uO8k:AOoCODPQ-mHQ2d0MQi3<ORJrZR
+S,SrWSberVTDP;VU%21^<Vohp=8uCt=oMV&>Ph\'>6%q,>PpVW4TJ:B:A@Wb:]Y<HrbVXQrbqdT
+!,qjUrc.mWrcA*]s)eWkF`hkNGB\:VH2W'gHiAEi<rZ2"<;9Dg<;KVn<:j,hH8'\oI=?]sJqJ]0
+L51SAMMmFQO,oBcP*;/rQC+&-S"#q=StD[LTq\<XUnsrdVl6ToWWK6&XSo:$Y5b]kYl:g,<`f6#
+r)NYor)<Ag,b:HpS!ob4R$X,(Q'@JqP*(ieO,f3ZN/W[PM2@%DLPCP;KnTGXs+16%rIFotrdO-\
+s*jrsrdb$"!.t3&s+G]PL5(J>Ll$tGMi<USNfT9aP*2#nQ'Rc(R$sM6S=Z=ETqS3VUo(&fWN*##
+Xfek3Z*UdE[^WcW]">Vg^V@V%_o0O6aN2KHbK\>Xd*^:jeCE.%f\,!5gtgfDi8ESRj5f=ak3(sm
+l0@U$m-X3.n*fc9nac8BoCW"S!quB_rV6Bfs8)WirVZWmo)=4?aT$b~>
+JcC<$JcFC&p&=pgrqu]ks8)ckrqQNf!;?Eb%J98_o'u5<n*]T0m-Es9aoT]0qMXQrrJTTmrJg`6
+s,.G*Chm`uB4YXa@UWYO?<u@@r7V/(rn.8&&D#C]eC2jnd*U+ac-4ARaiXG$s2k;`!6bAcs3:1q
+nVmF+s,?rqs2+oT_8>u`!lDdirkJTM^qfla!5e`OrkSKKs2+eFs'bq8s'bq:!Fo[=Ad!%)RBOI)
+_Z.OJ_Yh7L8H29Z9)hQa9`7]c:B+,h;#aDm;Z9Sr<)lrt<X2].=BSd1>$Lu2!F9%2?P$UR@:E\U
+A7T7_AnPaiBPD5\CB86grb_aTE;jhlEcZ>EF`hkOGBe@XH?spbI!pElIXh?I!J,k%K*R'`Knb>;
+LPYqd!fDnorepo<NfO+"s,d8Crf[;Fs-3MJs-EYNrL!VQrgN_Rrg`qXpR_;Tq:Yr*gt^`ah>lI0
+i;_d6irnH)jlY_(kPscFl2KrKlg4N9r9jRQ!q>aMrfI2BqiUf<!6P/[p;cgFrQ"lV!6<Leo#0h2
+rPJEK3l6/gH@1-hIt3*%K7nr5LP^kFN/WdXO-,ThPa.Q$R$a>3S"-(AT:hmOU8+N[V5C/gW2Zbr
+WiN2%rN6(%ribjrrNH7(rN-(8rkIa4'V(Y^R[KP1Q^3o%P`q8nOcYWbNfF$s$]Bn!M26qBL5(D9
+K`6W(JcLB#JH(,uId2@\IfFosJH(3#K)^K'KQ)X"L51P?M2@+JN/WaVO,oBcP*;,qQ'[l*R@B\9
+SXuIHTq\<XV5L5iWiE/&Xfnt6ZEppH[^WfX]=bhk^VI_'`5T^9aN;TJbg"GZdF$CleCE1&f\5'6
+gtgiEi8EVTj5f=ak3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcNhrqu]mo)=4?ao?k~>
+JcC<$JcFC&p&=pgrqu]ks8)ckrqQNf!;?Eb%J98_o'u5<n*]T0m-Es7RGD`IDX20>C_1H"CM@Hp
+AS#@\@:3GK?([_]SbnrVS,JfTR/iWRQiEHQRJWBORJ1RjDY7iKQC!o'm?RI4pQklGr`8quqc<_u
+"'o\gM#EV5PPC=?8H29Z9)hQa9`7]c:B+,h;#aDm;Z9Sr<)lrt<X2].=BSd1>$Lu2!F9%2?P$UR
+@:E\UA7T7_AnPaiBPD5\CB86grb_aTE;jhlEcZ>EF`hkOGBe@XH?spbI!pElIXh?I!J,k%K*R'`
+Knb>;LPYqd!fDnorepo<NfO+"s,d8Crf[;Fs-3MJs-EYNrL!VQrgN_Rrg`qXpR_;Tq4mnaqPF4h
+r29Ons/PprriH.%riZ4%!3Z1%s0)L.rNcI0r,)FNqelIPrfu<(!6bAcrltJgs3:PgrQkGh!R]9m
+d07tIeC<%!rRUu"rn.8(!nc1jo99*:qigZ8rfd2C3g4i8H@1-hIt3*%K7nr5LP^kFN/WdXO-,Th
+Pa.Q$R$a>3S"-(AT:hmOU8+N[V5C/gW2ZbrWiN2%rN6(%ribjrrNH7(rN6*_nr`[.'V(Y^R[KP1
+Q^3o%P`q8nOcYWbNfF$s$]Bn!M26qBL5(D9K`6W(JcLB#JH(,uId2@\IfFosJH(3#K)^K'KQ)X"
+L51P?M2@+JN/WaVO,oBcP*;,qQ'[l*R@B\9SXuIHTq\<XV5L5iWiE/&Xfnt6ZEppH[^WfX]=bhk
+^VI_'`5T^9aN;TJbg"GZdF$CleCE1&f\5'6gtgiEi8EVTj5f=ak3(sml0@U$m-X6?mfDqJrpg-^
+o^r.Us7ZKerV6EgrqcNhrqu]mo)=4?ao?k~>
+JcC<$JcFC&p&=pgrqu]ks8)ckrqQNf!;?Eb%eTA`o'u5<n*]T0m-Eq9rDW2Lq`XO7h*(Ts%rH,u
+BkV-jARf1X?sd5G:]+&f;>3ug;=76\:]4&\4S1`74Sq;A:Adoe:Amuc;#3ud:'"-crD*DgqbI2Y
+r^$QL!($TNqa1ZX7nZTS:f1(f;Y!cd<;oGg8c23\9E.]a:&dug:]=2j;?'Pn;Z]ou<W6#(='/R-
+=^#!5r`fJ0?N+:C?t!JQ@UiqZAS#IdB4tsmCAquLCi0/h!H2rVE><M8FEDYJG'A.TG^4U]H[C-g
+I=?WprdY$#K)UB-KS>,7L51P?reU]6Mi7Rn!f`5#rf@)@s,m;Ds-*JIrg!MLrg3SNs-`kTqj[ST
+rLN\Sr1<sfn5TBer)W_sr`K,%!*]A)rEB/(rEKA->l7h*>lIt'4Sh2@;>sDl:[V!Q:]+&gD#eJQ
+DuXeVDuO_SEW'qWF8g=\G5c[eG^4T5HN&6mI!^8:<rQ+g<;KVd<'!s'H?sseI=HcuJqJ`1L51VB
+MN!LSO,oEdPE_>uQ^F//S"#q>StD[LTq\<XUnsrdVl6SoWiE,#XSo:#Y5YWpYl1d*Y5PL&<r>tq
+<;]\h;A>XjS!ob4R$X,(Q'@JqP*(ieO,f5!N!kQ$M2@%DLPCP;KnTGXs+16%rIFotrdO-\rdOls
+rdb$"s+:9's+G?FL5(J=Ll$tGMi<USNfT6_P*2#nQ'I]'R$jG5S=Q7DTV8*TUnsueW2cl!Xf\e2
+Z*L^C[^NZU\\#Mf^;%J#_SjF4a2lBFbKS5VcdC.geC<%#f@\g2gYCWAhr*GPj5]4^k2tjjl07L!
+m-O--rpKmWnc&(\oCV\Sp&Facp\jmeq>U6fqu6NkrUTr=s2k:k~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb%J98_o'u5<n*]T0m-Ep7b2nT]NV8>2NW+n6NW+n6
+NW+n-N=p,GCMRWtB4YXa@UWYO?<u@Ag\fb*g&BY(f*'[TeC;qGd0.hBcHXT4aoKQ]aT'B]aofi2
+c-H9JqMkB4rf-H,!6+oTs24fP"i8'l_SO(f_Z.IN_#;+K_Yh4M_Z%CL_Z!sF@UW^E?iXX7@L-IT
+AnGe.PcDOu_=YVC_>d(*8c;9]9E.]a:&dug:]4)k;,U<k;u]es<W6&!<rcA%=U/,7>?kE=?!dM;
+!FT@8@KBtLrac+BBDuQFBkmW_!GlWPD?4Zprc%sZF8g7^Fa!b.!I/nhH3&A?rd=frJ,Xs"JV&LQ
+K)pXZreCH.!/UW2s,$f7rf$l:!07#=s,[5CrK@2Es-3JIs-EYNr0[MPrgN\Qr1*YTp=fN#!o2Vf
+rn[Y4qr%M5!94"<rT""@k5FKCkl'cGl2g5;qX+4KrpKpXnacU?rK-u?r5noYoZ-@=df8gTlbiY;
+qnk:9H$XgbI=?ZrJV/T.L5(M@MMmFQNfT9aP*;,qQC!u,R[]h<St;RITq\<XUnsobVl-JmWW&n!
+X/rE$Xo>L$YPGF#YPt^&XoGL&WrTp"^*B/;S!ob4R$X,(Q'@JqP*(ieO,f3YN/NUOM2@%DLPCP;
+KS9>W!ePuSrIFotrdOQhs*XQhrdOlsrI=s#JqEuS!JH1+L1l?uM2@+JN/WaVO,oBbP*;,qQ'Rf)
+R@9V8SXuIHTq\<XV5C/hWN*##Xfen4ZEppG[^WcW]"G\i^VI\&_o0O6aN2KHbK\>Yd*^:jeCE.%
+f\,!5gtgfCi8ESRj5]7`k3(sml0@U6liukFn*fc9nc&([oCW"S!quB_rV6Bfs8)WirVZWmo)=4?
+ao?k~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb%J98_o'u5<n*]T0m-Ep7RHeYgDZ=SMDZ+G=DXM?T
+Ci4**CM@HpAS#@\@:3GK?([a\optuMrgWnUrL!YQrg*\RR@3u?s-`RtmV_o=rg3YNo9B<Arg!8E
+op>ZDr`B"ur`B&!s&T>+BQf)nrKRAIp65H<s%*,\rC[)_s%NAcs%`SirD3Pm;H!Kms&8tur`9&#
+!*K5'#?k>9>[1Q??N+:4?t'%D!Fo[>AH?CUrb)=HCAquLCi0/h!H2rVE<1*$rcA0`G5c[dG^9:7
+!IK4nI0"eHrdY'$JqEuS!JH1+LB!#/M#N82M?&S6N;nk;Nr>%=O8tFAP5gaGPl6mIQN!6KR/`TR
+ReiNOSGSlNU\pqaV>d@kVZ<[pWW0!qX8T."XoGR&XoGR$YPta+Z2V'/ZN.B-D#eJQDu,a\PlI$H
+PlAo*blZ28c2Q#echl)fdJq\qeGn)!f)O;#ec=>$fE9gZf\-7go990<qigT6rfd5D20aCmH[L6j
+It3*&K7nu6Ll%"IN/`jYOHG]iPa.Q$R$jD4S=Q7CT:hmPUSO]^V5C/gW2ZcqWWK6&XSo:#Y5GL!
+Yl(^(Y5GF%XT,?mOnXq^S=?":R@'A.QBd`"PEM)kOH5H_NJrgSMi*@JLkgb?L4t;6rdt9(JV!cM
+s*t#sp3lsgpO3$is*sut!eGrTrdt6)L&Qg?LPUeDMMmFPNK0'\OHG]iPa.N"R$a;1S"-%@T:hmP
+USO``Vl6SpX/rG+YctF>['d?O\@K2`]Y;.r_8=+.`Q$!?aihlPcHjkbdaQ^rf%8R-g=tE=h;7)J
+iSrnXjlY^gkiq?sli-5TmI'H3nF?&JncA@SrUg6cp\4X]rqZTjqtp?irVc<dJcEjlJ,~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqQNf!;?Eb&bP\co'u5<n*]T0m-En8<)Z`a54q)352/44DJa0)
+BkV-jARf1X?sd5G:J^mbrDEAgs&&Yir_`>b!`)Qdp,r48r]Kg7r]C6V:/:dar(d2drD3Pm:f.$b
+s%`Mgs%rDb"[YRC6:!p:5QF+J6N9CV6qBsG;,[Bjs&/Ges%*,\rC[)_s%NAcs%`SirD3Pm;H!Km
+s&8tur`9&#!*K5'#?k>9>[1Q??N+:4?t'%D!Fo[>AH?CUrb)=HCAquLCi0/h!H2rVE<1*$rcA0`
+G5c[dG^9:7!IK4nI0"eHrdY'$JqEuS!JH1+LB!#/M#N82M?&S6N;nk;Nr>%=O8tFAP5gaGPl6mI
+QN!6KR/`TRReiNOSGSlU;ufko;ufqm<;onr<rH+t=T;P'>5qb'>5hb)>kqV&>QJ&6pH8F<qGI5g
+s%i2\q+pi`s)%aQs).sXDf>VorGhdVs)\3^rcS3`rce?ds*=Tir-S0=r`/GeqGm/e20aCmH[L6j
+It3*&K7nu6Ll%"IN/`jYOHG]iPa.Q$R$jD4S=Q7CT:hmPUSO]^V5C/gW2ZcqWWK6&XSo:#Y5GL!
+Yl(^(Y5GF%XT,@"<W#ho;tj07S=?":R@'A.QBd`"PEM)kOH5H_NJrgSMi*@JLkgb?L4t;6rdt9(
+JV!cMs*t#sp3lsgpO3$is*sut!eGrTrdt6)L&Qg?LPUeDMMmFPNK0'\OHG]iPa.N"R$a;1S"-%@
+T:hmPUSO``Vl6SpX/rG+YctF>['d?O\@K2`]Y;.r_8=+.`Q$!?aihlPcHjkbdaQ^rf%8R-g=tE=
+h;7)JiSrnXjlY^gkiq?sli-5TmI'H3nF?&JncA@SrUg6cp\4X]rqZTjqtp?irVc<dJcEjlJ,~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqI0$p@e1Po^qbGo'u5<n*]T0m-;dnb2eNXNW4t9N<"q8NW"k;
+NW+q=NK3Ie!07&<'5qc*CMRWtB4YXa@UWYO?<uCBg\fe*g&BY(f*'[TeC2kFd0.hBcHOK2aoKQ]
+aT'B^ao]c1c2<Y$Nr=t2NrG%4N;^]t`5T[4rk\ZQq8*6O_SO(f^]M?h_>V7L_>h@P_=teJ@UNUC
+@JjL5@K'^@A7]>!Oeo\,rPAKM!5\HI!(d)\r(?u^s%NAcs%`Sir_WVls&/hp!`W0"r`0)%=BPQ*
+#?k>9>[1Q??N+:4?t'%D!Fo[>AH?CUrb)=HCAquLCi0/h!H2rVE<1*$rcA0`G5c[oG^4R\H@($e
+I=6QnJ,Xs'JV&K+K7no3reCH.!/UW2s,$f7rJUf;NfO+"s,d8CrK@2Es-3GHs-EYNqj@ANrL3SP
+rRpu"rS%D/h;/(es53e5s5Et:!9="<!p/S-rTO1D"7#4<m.p&Jmf)\Tn,`(NqN:];qT8WUo>g@?
+e,SjSm)/_;rPLO;G^=[_I=6TqJ:`E,KnbA=M2I7NNK9-_P*2&pQ'[l*R@B\9SXuIHTqS3UUnjia
+VPg>jWN#lss/Z1$r2oq#pTOLtr2p"#s/Z*u!NE$g^AY_d^:g#)R@'A.QBd`"P`q8nOcYWbNfB!V
+Mi*CKM26rdL'!'^K`6T*Jq8LOJH(,uId2@\IfForJ-(:RK)UB'KSBD[D23q(M2I4MN/`jYO-#Ke
+P*D5sQC!u,R[]h<St;UKTqeEZVPg>kWiN5'Y-5(7Za7$I[^`lZ]=bhk^VI_'`5Ta:aN;TJbg+M[
+dF$CleCE1&f\5'6gtgiEi8EVTj5f=ak3(sml0@U$m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcNh
+rqu]mo)=4?b5Zt~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqI0$p@e1Po^qbGo'u5<n*]T0m-:&=RH\S[DYS&KDZ+GFDXhQW
+Df0E-CM@HpAS#@\@:3GK?(dg]oUYoMrL<eTrL*YOs-WhSrKmYSCi&f^nS\ADqelA!s-E8Ap6PN@
+!1*PLqj.7_r`Att!*B%u"(cP*O8P:CPkL:@8H)3Y9)hQa9`7]c:B+,h;#aDm;Z9Sr<)lrt<WZ?)
+=T2G.>$G39>[:WAra,\6@K'^:@q>RM!G6!DBE;g^rbDOND>nDRDfG\q!HN8\F9-N-rc\cqH$O^^
+H[L3hI=?WprdY6)JqAW-KS5'YLB!#/M#N82M?&S5Muo!!NrG+>OT1IAP5gaGPl-gHQN!6JR/WNP
+ReiNPUA1M]V"gedVZ*LnVuWgrWr/prXT#=%Y5GF$Y5PR&YQD)8ZMq03ZtsRQD$#ugQM6[0Pl$aG
+PlJu+c2Z&hc2Grechl)gd/_Voe,@eqeH4=RfDaD)f@\a/r06f:s-3DEnWNm8rKK3aG^=[_I=6Tq
+J:`E,KnbA=M2I7NNK9-_P*2&pQ'[l*R@B\9SXuIHTqS3UUnjiaVPg>jWN#lss/Z1$r2oq#pTOLt
+r2p"#s/Z*u!NE$lOo1=>NujCDS!ob4R$X,(Q'@MsP*1rhO,o<\N/W[PMM[1GL]3#0KnP-YK*$XU
+Jc1-!J,Xo^IK"]qJ,Om!JV&LQK)pXZre>9FLl$tGMi<USNfT6_OckllQ'IZ%R$jD4S=Q7CTV8'S
+UnjlcVl?\sXKAY/Yd(O@['mEQ\[oDc]tV7s_SX71`lH0Bb0/#ScHjncdaZdsf@S[/g=tE=hV[8L
+ioB([jlY^gkiq?slg4!*mf)YUnF?MK!qZ'Vrq6<bs7cKes7uZjqtpBjr;H3cJcEmmJ,~>
+JcC<$JcFF'o`"gfrqu]ks8)ckrqI-#p@e1Po^qbGo'u5<n*]T0m-=OKm69i!!']=(r]UoWDf0E-
+CM@HpAS#@\@:3GK?27:q;"mi`;#X>c;#a>h4o%564oRS<49&%T:&n)d:Amub;#=#g:Amuf;"[Wa
+:B*WZ63'=L5QF+I63B_M9i1ge!)`_np/:r^r^m#[s%EAcrD!;es%iVjs&&eor_ikt<E9$!!`rK+
+r`KJ0>?b?;?!Ue9?NFPCraGn<AH$-@AnV*V!GQ<JCB86grb_aTE;jhXEc_5%!HiSbG78_AH$Xd`
+I!g?jIXZeGJ-UXWJqJ]/KSBD[s+^T1re^Z4!/pf7!f`5#rf@)@s,m8Cs-*JIr0@;Jrg3MLrgE_R
+qO@=\!)repr`/_ms&K"urE&kus&fA+>PVJ%>Q%e->?^r/r`fP2>[1S-4S2MN;#a>c:A@W\;#bD3
+DZ"GPE;jkUEWC1[FT-F^G5c^aGl;pkH[:!bHhCG=<U`ua<VBBMGBeF[H[U<lJ:N6(KS>/9Ll%"J
+N/`mZOckllQ'I]'R$jG5S=Q7DTV8'RUSO]^VP^8hW2ZcqWrK."XSf4!Y4o-tY5GF%XT,@"WWB)t
+r)ESmr)3Jj*`>k)R[KP1Q^3o%Pa%ApP*(ieO,f3YN/NRNM2@%Dre:K.KS9>W!ePuSrIFotrdO-\
+rdOlsrI=s#JqEuS!JH1+L2D^%M2@+JN/WaVO,oBbP*2&pQ'Rc(R@9V8SXuFGTqS6WUo(&fWN*##
+Xfek3Z*UdD[^N]V]">Vg^;%J#_SjF5a2lBFbKS8WcdC.geC<%#f@\g2gYCWAhr*GPj5]4^k2tjj
+l07L!m-O--rpKmWnc&(\oCV\Sp&Facp\jmeq>U6fqu6NkrUTr=s2t@l~>
+JcC<$JcFF'o`"jgrVZWkrqZWjrV.-%p@e1Po^h\Fo'u5<n*]T0lfu[:b2eNPNUr2/O8b19N<#";
+NW5"XEcH#8D/3m#BP1me@q&kS?X@$oh;$c>g=k65r7M&$&D#C]daHOjd*L%_bfe/PbK9\'s2b>b
+bKTmF!0I/?oT&s4qi:W7rJ^`p"ieO#`5BIk_uIUQ_Z7RQ_Z[im_8*n^_>qFC_?.Qj^&DL@@/j[5
+@/jX?@UinYGDr9)rPJQM!5e`Os2+cO!_>mSr(?u^s%NAcs%`SirD3Pm;H!Kms&8turDir#=T2J'
+=o_e+>R+P@?=.&I?t'%D!Fo[>AH?CUrb)=HCAquLCi0/h!H2rVE<1*$rcAQkG'8(RG^+L[H@(!d
+rd>$#It*!!JUrFPKE$T)L&Qi,LB*/0M>rJ5MuJ\8NW5%<O8k=AOo:IBPQ-mFQ2[*KQhd$KRK(k=
+f_jG!gABY)h#H41hZ)L2i;MX8j8A!<joFTDkkjWEl2p;<m/$,LmeuVSn,W"QOoLO<anWsKa7I="
+s80b2`VRO@_th1K__u^aH@($fIXcm!JqJ`2L51VBMi<XUO-#KePE_>uQ^F20S"#q=StD[LTq\<X
+UnsobVl-JlWVrjsX8f9tXnJpoXo>F%X8T%"WMlcpVZ<Ul^&YqH^A5GXR[KP1Q^3o%P`q8nOcb`d
+O,f3YN/NSmM#iEfre:K.KS9>W!ePuSrIFotrdO-\rdOlsrI=s#JqEuS!JH1+L1uF!M2@+JN/WaV
+O,oBbP*2#oQ'Rc(R@9V7SXuFFTqS3VUnsueWN)u"Xf\e2Z*L^C[C3QT\\#Mf^;%J"_Sa@3`lQ6D
+bKS5Vcd:(fe'uq!f@\d1gYCW@hVd>NioB([jlYail07L!rp0jVmdKW6nF?MK!qZ'Vrq6<bs7cKe
+s7u]kqtp?ir;H6dJcEmmJ,~>
+JcC<$JcFF'o`"jgrVZWkrqZWjrV.-%p@e1Po^h\Fo'u5<n*]T0lfsq-RJh$eD>.rBD>S/JD>.rB
+D&./3Df0E-C2%?oARo:[@:3GK?(dj_T(JTOSGerVRf8]VR$X0=R/`TRR.tLqD>8#KDtn5KD#eJP
+QiEBDQ2R$KQi36FQiEBKQi*0LPlQjC<rZ5%=BGH%!*B)!"(?.tNV\n?PkgLE84cDN9)hQa9`7]c
+:B+,g:]aKl;Z9Vp;ufqs<WQ9(r`T8)!*fG-#@1YB?XI2K@K'^:@q>RM!G6!DBE;g^rbDOND>nDR
+DfG\q!HN8\F:<;8G'A.TG^4U]H[C/>I0Y4NIt3'#JV*lRs+CB+reCH.!/UW2s,-i7rf$l:s,R)>
+s,d8CrK@/Ds-3GHrg*PMq3_2Ms.T=aqP3q`pndqds/5mq!3,strN#mup9"@t!3c:(s0;U0rj2Q?
+!,VLKr0Hu?l]h:3!6kDd!m]'8rQbAf!mo9>rm:\m!7Lhprm^qtrRV,'f@U#S!86Lun<3d7rff<b
+H$XgbI=?ZrJV&N-L5(J?M2R=PNfT9aP*;,qQC!u,R[]e:SXuIHTqS3UUnji`VPg>jW2]`qs/Z1$
+qQ9IoqQ9aus/Z*u!i`,srhfanqiUi=q2Z;[R@'A.QBd`"PEM)kOcYWbNfB!VMi.Lj!JlO1L'!'^
+K`6T*Jq8LOJH(,uId2@\IfForJ-(:RK)UB'KSBD[BnqM$M2I4MN/`jYO-#KeP*;/rQC!u,R[]e;
+St;RJTq\?YV5L5jWiE/&Xfnt6ZEppG[^WfX]=bhk^VI\&_o9U7aN2NIbg"GZd*^:jeCE.%f\,!5
+gtgfCi8ESRj5]4^k3(sml0@U6liukFn*fc8nc&(\oCV\Sp&Facp\jmeq>^<gqu-HjrU^#>s2t@l~>
+JcC<$JcFF'o`"jgrVZWkrqZWjrV.$"p@e1Po^h\Fo'u5<n*]T0lg"IKk!&)oq`O1-s#q'9EGo`3
+CMIQsB4YU`@UWYO?=!>%r_WAeq+q&gp/(cbs#p9Dr&t'Bpc\X@q`Xm?rB($RpJ1W^"&Mci;"d]_
+;"d]^:AmKX63]_@5X.Iu62a+P7S-9Mpepre!_>mSr(?u^s%NAcs%`SirD3Pm;H!Kms&8turDir#
+=T2J'=o_e+>R+P@?=.&I?t'%D!Fo[>AH?CUrb)=HCAquLCi0/h!H2rVE<1*$rcAQkG'8(RG^+L[
+H@(!drd>$#It*!!JUrFPKE$T)L&Qi,LB*/0M>rJ5MuJ\8NW5%<O8k=AOo:IBPQ-mFQ2[*KQhd$K
+RK$4X<;]_t<)lrq<<#tt<rH+s=T;P(=p%u4>?gu.r`f>+r*0,)s'5k74?Pbi4?Yk*4RZ/I;#X5m
+:/=V[peUW\!,_[PrGV[SrGhgW!-A-]rcS3`rHJ9d!."Ee!df<BoN(fgoMkZepJa%pH$XgbI=?Zr
+JV&N-L5(J?M2R=PNfT9aP*;,qQC!u,R[]e:SXuIHTqS3UUnji`VPg>jW2]`qs/Z1$qQ9IoqQ9au
+s/Z*u!i`,srhfdo<;]\n;Ya0*R[KP1Q^3o%P`q8nOcb`dO,f3YN/NSmM#iEfre:K.KS9>W!ePuS
+rIFotrdO-\rdOlsrI=s#JqEuS!JH1+L1uF!M2@+JN/WaVO,oBbP*2#oQ'Rc(R@9V7SXuFFTqS3V
+UnsueWN)u"Xf\e2Z*L^C[C3QT\\#Mf^;%J"_Sa@3`lQ6DbKS5Vcd:(fe'uq!f@\d1gYCW@hVd>N
+ioB([jlYail07L!rp0jVmdKW6nF?MK!qZ'Vrq6<bs7cKes7u]kqtp?ir;H6dJcEmmJ,~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nd"^Sn*fZ1m-FYoj,EPgn;d=*r/MSSNfK0A
+EcH#8D/3m#BP(gd@q&kR?X@":h>c7/gAfk(f`0P6f%&9uda?Ihcd'h\bfe2Pr5f&^aiV^#O8b7?
+O8+b2O8=kCNQ/rV`l?!:`5M;cs2"cPiPGT.r*o\6s'bn7rF,_8"*'*eZMVN8_>hCP8c;9\9E.]a
+:&dug:]=2j;?'Pn;u]es<W6&!<rcA%=TVc2>Q.k.?!dM;#@LtK@U`hWAH$-@AnV*V!GQ<JCB86g
+rb`-_E,]f:EcZ;DFEM_Lrc\BfH2`*pH[L3hI=?Wprdb$"!.t3&!ec8]reCH.!/UT1!fDnorJ^c9
+!07#=s,d5BrK@/Drfm;Frg*PM!7q/$rn./%qqCr%s4mY1s5*e5rS[_7s5O%<ro=1Ck3(q,kks]F
+lMp2Mm/?>OmK)_CqsORTnb81=an<aGa7mU's7sV0`VROA_t_))_fp?NH@($fIXls#K7el4LPUeE
+Mi<XVO-#NfPEhE!Q^F20S"#t?StD[LTq\<XUnsobrhfgrWN#lsri?(#m&g8gs/Z*us/H$srhfmr
+V59u`qS)d=!1EhR&snoLQ'@JqP*(ieO,f6[N/W[PreUZ3L]3#0KnP-YK*$XUJc1-!J,Xo^IK+cq
+J,Om!JV&LQK)pXZre><GLl$tGMi<USNfT6_OcklkQ'IZ%R$a>3S"-(AT:qsQUSO``Vl6VqX0&M-
+YctF>['d?O\@K2`]Y2(p_8=+.`Q#s>aihlOcHab`dF-Ooe^rF*g=k<:h;7&Ii8WeWjQ5OdkNM0p
+lKdg'mI'uB!V#XYo)J:]o`"O`pAamcq#C0hqYU0gr;HTbrdk*ms*t~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nd"^Sn*fZ1m-FY>q/5M8pMT_BokaPCqel:J
+'6A26Df0E-C2%?nARo:[@:*AJ>lLAsT:Y\Gr1*bUrL3_Rqj7GQR$d_eph]qHr,2=KqelFNr0RGL
+!L8uGQ2R$IQiEBGQi<<JQi36IPlQjA<WcE*=BGH%!*B/#"(,kkMYNJ6PQ+5Q9)_K`9`7]c:B+,h
+;#aDm;Z9Vp;ufqt<rZ5$=T2G)>$G51>QJ,:ra,n<@:<VS@q0'KAH?CUrb)=HCAquLCi0/h$u^*(
+EH-#?F*)MHFa!b.!I/nhH3\eEI!pElIXh?Is+(0%rdt9*Kn]M\s+^T1rJ:T5Mi7Oms,@#=rK$u?
+rfR/Brfd>Gqj%/Hrg*VXrLs(^qkO%aq5+%erMT[pri5sur2fUos/l@*r361*rj)R1pMK_lnWiF)
+rg!?)rQb8crm1YmrmLeprm^tus47)!"PD>YfTbQ_mZRR51R**.H$XgbI=?]sJqJ]0L51SAMMmFQ
+O,oBcP*;/rQC!u,R[]e;St;RITqS3UUnji`VZ*IpW2ZcqWrB(!XR*(gXT,@"WrK'uW;`\!VPU,b
+Ulgf;OSOq;RJrQdQ^3o%P`q8nOcYWbNfK*XN/NSmM#iEfre:K.KS9>W!ePuSrIFotrdO-\s*jrs
+rI=s#JqEuS!JH1+L2Md&M2@+JN/WaVO,oBbP*2#oQ'Rc(R$sM6S=Z=ETqS3UUnsrdW2ckuXf\e2
+Yd1UB[C3QS\[oGd]t_=u_Sa=2`lH0BbKJ,TcHjncdaZdsf@S[/g=tE=hV[8LioB([jlY^gkiq?s
+lg4!*mf)YUnF?MKs766_rq6<bs7cKes7uZjqtp?irVc<dJcEpnJ,~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nd=pVn*fZ1m-@VL<:)jL4nq5.4nUr-4VU)$
+EcH#8D/3m#BP(gd@q&kR?X@"8:]4#g:]=2j;<UjV:\[*N55.5955IDB4T8(L:@:pU;#X5j:A[i]
+:'+-V6N'4M6N9@O57'M<5X@_'6qL$Ip/:ifs%3/]r_*8brD!;es%iVjs&&eor_rhr!*0#!s&T2&
+r`K;+>?h)3!F9%2?O'tI@:E\U@q>RM!G6!DBE;g^rbDOND>nD]DfBZ8EH6,AFEDYJG5c[dG^9:7
+#CCiGI=6QnJ,XuuJH1<$K*$^[L&Qi,LB*//M#rQmMuAV7N<#";O8k=@Oo:IBPQ$gDQ2[*KQiC"b
+;t<o`<Vobq<W?+u=8>tt>5VV&>5hb)>l@n)>lJ%.4T7MB53YrC;#!iZ;#P;1DuO_SEW0tYF8g:[
+FoHR`G63#7H2`*iH2`-iHN8Ha<r,hg<;KVj<&/ZBH$XgbI=?]sJqJ]0L51SAMMmFQO,oBcP*;/r
+QC!u,R[]e;St;RITqS3UUnji`VZ*IpW2ZcqWrB(!XR*(gXT,@"WrK'uW;`\!VPU,bUf14i;Ya/i
+RJrQdQ^3o%P`q8nOcYWbNfK*XN/NSmM#iEfre:K.KS9>W!ePuSrIFotrdO-\s*jrsrI=s#JqEuS
+!JH1+L2Md&M2@+JN/WaVO,oBbP*2#oQ'Rc(R$sM6S=Z=ETqS3UUnsrdW2ckuXf\e2Yd1UB[C3QS
+\[oGd]t_=u_Sa=2`lH0BbKJ,TcHjncdaZdsf@S[/g=tE=hV[8LioB([jlY^gkiq?slg4!*mf)YU
+nF?MKs766_rq6<bs7cKes7uZjqtp?irVc<dJcEpnJ,~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb%eTA`o'u5<n*]T0m)mJogPl,kpQ#04pl>95rK-r<
+'m+M:EGo`2CMINrAn>L_@UWVN?<l@dh>c7/g&Th'f`0P6f%&9uda?Ihd*L"^bfn8QqT8,cqi:<0
+s,I*"r5S`T!6"NIrke]Qrk\ZQrke]Qm_\q?!PZ5G@K9j9@f9a6@/aR:DM+=Zq8*-Jrk\]P8c23\
+9E.]a:&dug:]4)k;,U<k;u]hs<W6##='/T(=U/,7>?kE=?!dM;#@LtK@U`hWAH$-@AnV*V!GQ<J
+CCG#rD/O60E,]f:EcQ7#F9-N-rc\EgH$TC8!IK4nIK+`rJ,Xs"JV&LQKE$T)L&Qi,L]<20M>rJ5
+MuAV7NW5%;O8k=@Oo1CAPQ$gEQ2fG7fDaG"g&'M$g]$".h#cHjhu;R4iVhg9j9+N+kNDg-rosIJ
+rp'RNrU'ROq<nCTOHB=$o?$REo#LRGf)PWcrPeWQs2G#VrknBFrPSWOqnrGX0mJ"jI!pEmJ:W<)
+KS>/9M2@.LN/is[OckllQ'I]'R$jD4S=Q7CT:hmOU8+N[V5:'gVuN[qWVrjrX8T-lXo5@#X8K!t
+WW/prVZN`lV>d7mUS=HUrkA0@s-NhRQN!-UP`q8nOcYWbNfF$s!K2j7M#iEfre:K.KS9>W!ePuS
+rIFotrdO0]rdOlsrIFp!s+:9's+CB+re>?HLl$tGMi<USNfT6_OcklkPa.Q$R$a>3S"-(AT:hmP
+USO``Vl6SpX/rG+YctC=ZaI6M\@K2_]Y2%o^r!t,`Pom=ai_fNc-FY^dF-Lne^i@)g"P39h;-rG
+i8N\Uj5f=akNM0plKdd&m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcQirVZTlo)=4?bl<1~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m$X91D>.r1D>8#DD=_TBD>e>e
+D00i=EGo`2CMINrAn>L_@UWVN?<mH%!M>tUSc##WS,SlTRJN<ID>eAOD>J)ID#eJHDuOYOQi36H
+Q2?mHQN3?GQiE?OQ2[*IQi<<GPlZo)rDj/)<`W:'=BJZ'<WuQ*?#"Y>pQbcC!L$+Q9)hQa9`7]c
+:B+,g:]aKl;Z9Vp<<#tt<WZ?)=T2G.>$G39>[:WAra,n<@:<VS@q0'KAH?CUrb)=HCAquWCi+$,
+DJsK5EH-#>F8g7^Fa!b.!dK!9rd"TlI/\QoIK4lsJ-(:RK)UE&KE-`*LB!&/M#N82MZ8V5N;nn;
+Nr>%=OT(C?P5^[EPl-dIT:l+UqP*k^r1s@h!2TUjr20Fj!N<!rWrK-rX9#H)qQ9e#s0)@)riuC,
+s(qOKpQk64l]_I9c-6.2rm(Adrm1YmrmLeprRChss4.2%rmq,$s4I=8m$%1,rfR&?qih&(0mJ"j
+I!pEmJ:W<)KS>/9M2@.LN/is[OckllQ'I]'R$jD4S=Q7CT:hmOU8+N[V5:'gVuN[qWVrjrX8T-l
+Xo5@#X8K!tWW/prVZN`lV>d7mUS=HUrfHo9s-NhRQN!-UP`q8nOcYWbNfF$s!K2j7M#iEfre:K.
+KS9>W!ePuSrIFotrdO0]rdOlsrIFp!s+:9's+CB+re>?HLl$tGMi<USNfT6_OcklkPa.Q$R$a>3
+S"-(AT:hmPUSO``Vl6SpX/rG+YctC=ZaI6M\@K2_]Y2%o^r!t,`Pom=ai_fNc-FY^dF-Lne^i@)
+g"P39h;-rGi8N\Uj5f=akNM0plKdd&m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcQirVZTlo)=4?
+bl<1~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb$hX&]o'u5<n*]T0m/Bra4RG?.4o[_04nCf24V`'[
+EH,o7Chmd!BP(gd@q&kR?X?u6r(m8d!)NSjs&&Vh!)N/^s%iYYkrni+qE=jQoM4mOr)!DhrD*8d
+ohPN]r'LBKs$H`O!'pNI"[G@A84u_N;?9]fr(?u^s%NAcs%`SirD3Pm;H!Kms&B"ur`0)%=BPQ*
+#?k>9>[1Q??N+::?t!JQ@UinYrac+BBDuQFBkmW_$uBctDJjB3E,fl<Ec_5%!HiSbG63#7H2`*j
+H[Pg@s*artrdY'$JqEuSs+CB+reCH.s+pZ2s,-i7rJ^c9s,R&=s,d5Br0%&Crfm>Gm8Wm]r`&hr
+s&T,#q,dW"r`]8)qca#(qcj,*q-<r*q)eX?m8<m[qGI)c!)N/^s).dRrc%gUs)S*[rcJ-^rc\9b
+"*f*:GlE!fH3/G@I.125<V08a<W?%uG;4>gH@1-hIt3*%K7nr5LP^kGN/WdXO-,TgPa.N#R$a;1
+S"-%@StD[LTq\<XUnsobrhodp!3,psri?"!oWA(nri>sss/H$srhfgpV5=0e"/DTaU&Isb;?*!a
+Q^7W9$'^X:P*(ieO,f5!MueioreUZ3L]3#0KnP-YK*$XUJc1-!J,Xo_IK"]qJ,OotJcC?%KE$T)
+L&QgFLPUeDMMmFPNK0'\OHG]hPE_>uQ^F//S"#q>StD[LU8+N\VPgAlWiN5'Y->.8Za7'J[^`lZ
+]=bhk^VI_'`5T^9aN;TJbg"GZd*^:jeCE.%f\,!5gtgfCi8ESRj5]4^k3(sml0@U#m-O--rpKmW
+nc&(\oCV\Sp&Facp\jmeq>U6gqu-HjrUTr=s31Ln~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb%J98_o'u5<n*]T0m)mK&N;eh9Nq/8,NW>.:O<Jdh
+F)c/;DJX*'BP;!hA7B"U?XI)DhVR)DgtUT;g"G$1r7Cr!!S,^!dL"=Jd*L"^bfn8Qr5nntoT/p3
+rK$c7s,[,?s,R6'aN+1t!QE"K_Z7RQ_Z7RP_Z7RP_th1L_tq7I_uIR\]jP5V@UW\Q@:NgG@JaF7
+I$CYGp;6c#s%E>brD!;es%iVjs&&eor_rhr!*0#!s&T2&r`T8)!*fG-s'5V2ra,\6@K'^@@q9+]
+AS,Oerb)=HCAquRCi+$,DJsH4rc%sZF8g7_F`qs-G6)r6rd+Tk!.=co!e,WKrdY'$JqEuSs+CB+
+rJ(?-!/UT1s,-i7rJ^c9s,R#<s,d5Bqi^oAs-3Q7s4@8&qq:i"r7h8,s5!_3!8me6ro!k:ro<t<
+"6J\-kPaWEl2U&Ili$5JmeZAPnbnRJOn$Q^aSs3[aS*[P`n(1d`;R[O`rF$X`;[[H_Z.OO_YqA*
+G'A1VH@($fIXls"K7el4LPUeEMi<XUO-#KePE_>uQ^F//S"#q=St;RITqS3UrhKRkVZ*LnW;ijp
+Wr9!iXSo3tWrK'uW;WUqVPU-gU]I6brh0FeT:VYL]`sjjQBd`"PQ$^KOcYWbNfF$s#)e@qM26tC
+re:K.KS9>W!ePuSrIFlss*j9^rdOlsrIFp!s+:9's+CB+re>`SLl$tGMi<USNfT6_OcklkPa.Q$
+R$a;2S"-%@T:hmPUSO``Vl6SpX/rG+YHY:;Za@0L\%0&]]Y(tn^qmn*`5Ta;aN;WKc-FV]dF$Fm
+eCN7'f\5'6gtgiEi8ESSj5f=ak3(sml0@U$m-X6/n*fc9nac8BoCW"S!quB_rV6Bfs8)WirVZWm
+nc"+>c2W:~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0m$X8YD=qf.D=qfAD=_TDD&7A;
+F)c/;DJX*'BP;!hA7B"U?XI)DTqVIY!M>t\Sb8NPS,8WSRJ`HPDY7lGD?=`oDYe5HDY\5IQi36J
+Q2$[<QiEBOQ2[*IQiEBDPlZnHqc<Mo$!(&+<``sYKT_SoQ2O>T9E%W`:&dug:]=2j;?'Pn;u]es
+<W6&!<rcA%=oVY*>Q.n->l\41?NFPCraH+BA7T7_AnG]TBE;g^rbDaTD/F0.Df9UoE<1*$rcA3a
+G'<k/!I/nhHN/<lI/\NqIXckHJ-(:RK)UE&KE-`)LB!#/M#E21MZ8V5N;nn;Nr4t<OT(C>P5UUE
+PlIESU&1S\U\^ecV>d@iVZNfrWVrgsX7r^mXo5C&YPYR'Z2M!,D#J5DQKsh8PQ7!=PQB"QrlkDe
+"4#6=cMc)gd/MGkdf%YoeH4=Pec+,&f@JO)fDUs#PPC=>Ont7>P:q*'G^4U^I!pHoJ:W?*KnbA=
+M2I4MNK0']OckomQ'Rc(R$sM6S=Q7CT:hmOU8.^`!Mu[mVuN^qWVidpX7NFkX8K!tWW/pqVZN`l
+V>d7kUS@a]"/)9XT(n?NR$X,(Q'@L3Op-u0O,o<\req&>MM[1GLkkta!el;\rdt9(JV!cMrdXrs
+l[Ab]s*suts+13%s+C?)!/:E,HA@<5M2I4MN/`jYO-#KeP*;,qQC!u+R@B\9SXuIHTq\<XV5C/h
+WN*##Xfek3Z*L^C[^NZU\\#Me^;%J"_Sa=2`lQ6CbKJ/UcHstde'umuf@S[/g=tE=hV[8LiT&tZ
+jlY^gkiq?slg4!*mdBQ4nF?&>o(2JFrUg6cp\4X]rqZTjqtp?irVc9cJcF!pJ,~>
+JcC<$JcFI(o`"gfrqu]ks8)ckrqQNf!;?Eb&+oJao'u5<n*]T0lr6qH4Sq;555[S=4Q\g&4S_,V
+G'%eFE,TW1CMINrAn>L^@UNPM?!L3&r(m8d!)NDer(m5e!)NAdpceL:q`a^:q`b$CpeL`]s%`#Y
+!)WVir(d/cnkK0Zqa(<N6N0:N6N9=V5<V.n5XnCBoht`\s%E>brD!;es%iVjs&&eor_rhr!*0#!
+s&T2&r`T8)!*fG-s'5V2ra,\6@K'^@@q9+]AS,Oerb)=HCAquRCi+$,DJsH4rc%sZF8g7_F`qs-
+G6)r6rd+Tk!.=co!e,WKrdY'$JqEuSs+CB+rJ(?-!/UT1s,-i7rJ^c9s,R#<s,d5Bqi^oAs-3+S
+s&8kqqGmPprDihts&]"ur`T8)rEK/&!*fD,!+#;'s'>F_m8<^VqGI5g!)`8_!,_[Ps).mVrG_gX
+rH%s[!d/U,rcJEgGB\:WG^045rHeKj!.=69qGm/ep/NbhGBeCZH[L6jJ:N3'K8#&8Ll%"IN/`jY
+OHG]iPa.Q$R$a>3S"-%@StD[LTq\=]U]I<hrhodps/GprrN#OkrN#jrs/H$srMK^oV5=0e!McCg
+T`^s[St>^S#+1aCQ'IStrfRGIOH5H_NW+k@Mi*@JLkpicL'!'^K`6T*Jq8LOJGt&uId;F]IfFor
+JH(3#K)^K'KE-`*L3eW2M2@+JN/WaVO,oBbP*2#nQ'Rc(R$jG5S=Q7DTV8*TUnsrdW2ZetXKAY/
+Yd(L?['mEP\[f>b]Y;.r_8=+.`Q$!?aihlPcHaeadF6Upf%8O+g=k<:h;7&Ii8N_VjQ5OdkNM0p
+lKdg'mI'E2n*ol;o()DDo_nFap@n=[q#:*hqYU0gr;HTardk*os*t~>
+JcC<$JcFI(o`"jgrqu]ks8)ckrV.$"p@e1Po^h\Fo'u5<n*]T0aiW(lrf-i9mZ.@.qMuP=F`_\E
+E,KQ0CMINqAn>L^@UNPM?!Q:DhVJ1d"l%bag"=sTfDa>%e^OKF#gq#FcHa\Yb0'_*q2PN9NfNss
+plPH8qi:W9s,d9'!QiCZ`W=&skJR)3rPSKKrPSTNs1o7V@:3GM?t!JO?t!PT@U`bSrEo_FMPn,]
+_Z!1-9E.]a:&dug:]4,i;#jMm;Z]ou<W6&!<rcA%=oVY*>Q.k/?!^k:?NFPCraGq=A7Y[N!G6!D
+BEr6dC27U$Ci0/h!H2rVE<:0%F8g7^Fa!b.s*+Nhrd"WmI!kpA!e,WKrdb$"!.t0%!ec8]rItB/
+Lku"ds,-i7r/CZ8s,R#<s3:YkOnY%<fDaG$g%jA!g]-%2h;7#Gro!e7s5O(=roF+@s5j=Eroj@G
+!:'OKs6TdQqX+CQmeuSTnF?C;!g1UIn]C1>n]1[LfDkWarPeWQs2G#VrknBF!5n]Ns2-O5GB\:X
+H@('gIt3*%K7nr5LP^kFN/WaWO-#NfPEhE!Q^F20S"#q=St;RITqS3UrhKUlVPa?js/>ssql94f
+qPsRpri#gos/,gmrhKRiUAghmTV%jJSt2CA]Y+3V$C@'EQ'IStP*1rhrf7GINJrgSMi*@JLkpic
+L&m!]rIY0'JV!cMrdXorm!\k^s*suts+(0%re(6(FG5I(LPL\BM2I4MN/`jYO-#KeP*;,qQC!u+
+R@B\9SXuIHTq\<XUo(&fWN)u"Xf\e2Z*L^C[C3QS\[oGd]t_=u_SX71`lH0Bb0/#RcHjkbdaQ^r
+f%8R-g=tE=h;7)JiSrnXjQ5Oekiq?slKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Na
+rdk*os*t~>
+JcC<$JcFI(o`"jgrqu]ks8)ckrV.*$p@e1Po^h\Fo'u5<n*]T0R@.o/o5<`.m;D]9q.ppmF`_\E
+E,KQ0CMINqAn>L^@UNPM?!O+tU&L\cT:YqNopl#Nr0mYRrg<P"p20eHr,;UQrbq[OqeuJ$r0RDK
+rK[,Cp6YfFrK[AJr0IDLr0@;Hq3CuEr`Aqsq,[c$<E3@FJrohnrg!ITs%EAcrD!;es%iSis%rbo
+rDNbs<E9$!s&T2&r`T8)!*fG-!aT,=ra,\6@K'^;@q9-LAH?CUrb)ONC2.O"Ci!tfD?4Zprc&![
+F*%>&!HiSbGQ2mfH2`*kH[L5?I0+kIJ,XuuJH1<#K*$^[L&H`-LPUcbM>rJ5Mu8P6NW5%:O8b[M
+DZ4SNP5CsOUA:S\V#I4jVYm@lVuWgpWrK-qX8o=!Xo5F%YPYR(Z2M!*C]\I>Qh?[/Q1't9bQ,ob
+cMl/hd/DAjdf7bueCE'urmgnss4@.4m$%:/qiU`<s-#-ZGB\:XH@('gIt3*%K7nr5LP^kFN/WaW
+O-#NfPEhE!Q^F20S"#q=St;RITqS3UrhKUlVPa?js/>ssql94fqPsRpri#gos/,gmrhKRiUAghm
+TV%jJSt2CANfO(!$C@'EQ'IStP*1rhrf7GINJrgSMi*@JLkpicL&m!]rIY0'JV!cMrdXorm!\k^
+s*suts+(0%re(6(FG5I(LPL\BM2I4MN/`jYO-#KeP*;,qQC!u+R@B\9SXuIHTq\<XUo(&fWN)u"
+Xf\e2Z*L^C[C3QS\[oGd]t_=u_SX71`lH0Bb0/#RcHjkbdaQ^rf%8R-g=tE=h;7)JiSrnXjQ5Oe
+kiq?slKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*os*t~>
+JcC<$JcFI(o`"jgrqu]ks8)ckrV.0&p@e1Po^h\Fo'u5<n*]T0;c>b>4?W=#qEFg?n3$M0!'K^5
+!'L*@(3anCF)c/:DJX*'BP1pgA7B"U?XI)Dr_WMgrD!>gq,$c\qG?uOr]U0Cs#p!<q`OpCr]L<H
+4\toLqG$ubpJ1carD*Ji:JUmbqbI#amnO$P5X@\&62j1O6ULc<%7<HJ5sILq5tFaK<)cfm;Z9;g
+9E.]a:&dug:]4,i;#jMm;Z]ou<W6&!<rcA%=oVY*>Q.k/?!^k:?NFPCraGq=A7Y[N!G6!DBEr6d
+C27U$Ci0/h!H2rVE<:0%F8g7^Fa!b.s*+Nhrd"WmI!kpA!e,WKrdb$"!.t0%!ec8]rItB/Lku"d
+s,-i7r/CZ8s,R#<r_ieZr]U+@pJh)irD`GirDrr"qH3]!r`];*qcWu(r`oG.pKR`)?MZbb;,Zj[
+ohbN_mnit#!,qjUrc%pYrH%jXrcJ6bGPl^aH2`-iHN8H\<r,hg<;9HIFa&%SH?spdI=HcuJqJ`1
+L51VBMN!LRO,oBcP*;/rQC!u,R[]e:SXuFFTV8'RU].%jV5C-hVuN^qWV`^dX88jrWW&jqVuNXo
+V>d7kUS@a]#G@]]St;LCSGQ.jQ^3r&Q'@JqP*(k*Nsgu-N/W[QMM[1GLkkta!JQ4*K*$XUJc1,u
+J,Xo`IK"]qJ,OotJH1<$KE$UHKnb>;LPUeDMMmFPNK0'\OHG]hPE_>uQ^F/.S"#q=StD[LU8+N[
+VPg>kWiE/&Xfnt6ZEppG[^WcW]"G\h^V@V%_SjF5a2lBFbKS5Vcd:(fe'uq!f@\d1gYCW@hVd>N
+ioB([jlYail07Kulg4!*mf)YUnF?MK!qZ'Vrq6<bs7cKes7uZjqtpBjr;H3cJcF!pJ,~>
+JcC<$JcFI(p&=pgrqu]ks8)ckrqQNf!;?Eb!VH!_nd"^Sn*f]2m)]0b!0,ThrJg`8lAla-G^":P
+F)c/:D/=!%BP1pgA7B"U?X@%;huDO5h>Z12gY1?[f_jA#ec=8!dgFONcd0n_c-+8Pao.;!Nqn\7
+Nr4t4OS=e@ONbnjaiMQDrPelW`9>,7_Y_7H_>qLM_Yq:QAn#4Xra5S2!+Pq;#\%4N?smDkR'lb,
+s%<;ar_38bs%`Sir_WVls&/hps&B"ur`0)%=BPQ*!a8f4r`f\6?=$uG?smFB@L$CRA7]=aAnV*V
+#AIpfCMRa&D>nDXDfBZ8EH6)@rcA3aG'<k/!dK!9rd"WmI!kpA!e,WKrdb$"!.t0%s+CB+rJ(?-
+s+pW1s,-f6rJ^Tu!0R2@!0R8DrfR64rRh/'pY,Q""l.qihVR/gi;_d9ir8!;jT"<Dk3(slrTO=I
+rp0RM!:BaQ!:B[Os6g$YnaZL<!6P)[oZ?UDnAkOJf`1Z`rPeWQs2G#Vrkn-?0m.Y`G^4U^I!pHn
+J:W?*Knb><M2I4MNK0']OckomQ'I]'R$jD4S"-%@StD[LTq\=]V#R7kVZ!FmW;`d^WrB!sW;WXo
+V?!IlV#R1iUAgi1TV%jJSt2FBS"#k7R(U)FQBd`"PEV/mOcYWbNfB$WN/NSmM$JilLPCP;KnTGX
+s+:9%rIFlsrdO6_rdOirrI=s#JqEuSIY<E/L5(J>Ll$tGMi<USNfT6_OcklkPa.Q$R$a;1S"-%@
+T:hmOUSO]_Vl-JnWiN8(YHY7:Za7'J\%&u[]=bhk^VI_'_o9U8aN2NIbK\>Yd*^:jeC<($f@em3
+gYL]Bhr*GPj5]4^k2tjjl07L!m-O--mdKW6naZ2@s766_rUp3a!;HEds7u]kqtp?ir;H3cJcF$q
+J,~>
+JcC<$JcFI(p&=pgrqu]ks8)ckrqQNf!;?Eb!VH!_nd=pVn*f]2m$Va.D=MN.D=)63D&7MCGBJ"K
+EH#f4Chm`uB4b^c@U`_P?=!Q)s.TFb!M>t\Sb8NQS,Si\S!oe6R@%jaDYJ#GDXhZFRK&ZOQiE?O
+Q1gO:QiEBKQ2[*KQiEBNQ2HmCPlR-KPlk)g=',2uq,dSs!bZe:r0.,Es%<;ar_38bs%`Sir_WVl
+s&/hps&B"ur`0)%=BPQ*!a8f4r`f\6?=$uG?smFB@L$CRA7]=aAnV*V#AIpfCMRa&D>nDXDfBZ8
+EH6)@rcA3aG'<k/!dK!9rd"WmI!kpA!e,WKrdb$"!.t0%s+CB+rJ(?-s+pW1s,-f6rJU`Hqjd_(
+qelCOrfR,PrhB.^qkX1erMK[nVuEUpWViarX88ptWrT7#Xo5F#YPYO(Z2M!*C]KdtQhcs5Q0jh8
+bl5lfc2Q#bci;>ldJ_Mje,Ro!e^i=Mec44rPjFV2P5:=;Oth*&GBeCZH[L6jIt3*&K8#&7Ll%"I
+N/`jYOHG]iPa.N#R$a;1S"#q=St;RITqS3UrhTRj!2f^ms/>prl`0r`ri#dns/#dmrhTRh!2BId
+,+tR#St;LDS=?":R@'"pO-Z&rP`q;oP*(ieO,f3ZN/W[PreUl9LPLV=KnY3ZKE$Q'Jc1,uJ,Xoa
+IK"]pJ,Om!JV&LQK78K-Knb>;LkpnEMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[LTqeEZVPg>j
+WiE,%Xfnt5ZEpmF[^WcW]">Vg^;%J#_Sa@3a2l?EbKJ/Ucd:(fe'umuf@S^0g=tH>hV[8LioB([
+jlY^gkiq?slg4!*mdBQ4nF?&>o)J:]o_nI_p&Ojbq#C0iqYU0gr;?Nardk*ps*t~>
+JcC<$JcFI(p&=pgrqu]ks8)ckrqQNf!;?Eb!VH!_nd"^Sn*f]2lr3mFq)n@6!'^<Dl9,)0nN?S0
+(j^FNF`_\EE,KN/CM@HpAn>L^@UNPL>u1Dqr(m8d!)NDep.tT_q*+O9k<AoAr(d#]s%`>bpJ(]a
+r(d)alV7IE62WtJ62j1[6UF()6:4(*5sIM"8l>Rd!E<"s;ZBAh9E%W`:&dug:]=2j;?'Pn;u]hs
+<W6##='/T(=TVc2>Q.k4?!^iE?XR8MraH+BA7T7_AnG]TBEr6dC27U$Ci0/h#B+R#EH-#>F8g7_
+F`qs-G63#7H2`*kH[L5?I0+kIJ,XuuJH1<#KE$T)L&Hc+L]<2/M>rJ4MuAV2;ZJrZ49%GA4oUT>
+<;]\m<;BPk<rQ1r=T;P&>5qe.>$5#->5qh,>l@t&>QJ,:q`FjUqGQu`pe^lar_NSlm83h#!H2rV
+EW'qVF8Bt^F`qqPG^'+2rd"Khs*Fco<U<c_<V08e<AAW>GBeCZH[L6jIt3*&K8#&7Ll%"IN/`jY
+OHG]iPa.N#R$a;1S"#q=St;RITqS3UrhTRj!2f^ms/>prl`0r`ri#dns/#dmrhTRh!2BId%%s5b
+St;LDS=?":R@*tN&sefJP`q;oP*(ieO,f3ZN/W[PreUl9LPLV=KnY3ZKE$Q'Jc1,uJ,XoaIK"]p
+J,Om!JV&LQK78K-Knb>;LkpnEMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[LTqeEZVPg>jWiE,%
+Xfnt5ZEpmF[^WcW]">Vg^;%J#_Sa@3a2l?EbKJ/Ucd:(fe'umuf@S^0g=tH>hV[8LioB([jlY^g
+kiq?slg4!*mdBQ4nF?&>o)J:]o_nI_p&Ojbq#C0iqYU0gr;?Nardk*ps*t~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb$hX&]o'u5<n*]T0a8LtsNRs-hNW"n;O8=n-Nu<7h
+G^":PEcH&9D/3p$BP1mf@q&kS?X@$prnmb4!8[Y0!o)G^rn./#rmh,#e,Iksdf7Yscd'eZbPdP#
+O8b1<NW"h8N<#":O8+h6O8k:Hbfe/NaN2EBrl+uX`9G29_YD%=_>qFOQ2R$J@/s^7?i=@@@:NeX
+@q/tV?uV%$_>D(P8kVfN9`7]c:B+,g;#aDm;Z9Vp;ufqt<rZ8$=T2G)>$G51>QJ,:ra5\5!+Gk9
+!b5bOrac+BBDuQGBkhD^CB86grbhaS!-%pW!ci@'rcABfG'8(RG^+N4H3/G@I/\NqIXckHJH(3#
+K)L<'KS>-YLB!&/M#E2'cMWh%OT(FCfDX@qgAK\/gtgfChV\7h!TE&9j8\0CjlY^gkl'cGlMp2K
+li?GPmf)SSmd9u@s7$'Yr/^p#oud$No#U:?rl+qFg&L]_rPeWQs2G#Vrkn0@.!9]WG^=[_I=6Tq
+JV&N-KnbA=M2I7NNK9-^P*2#nQ'Rc(R$jD4S=TYN#+qQ^Tq\<WrhKUlVPa<iri#dpnuD\gri#am
+s/,gmrhTRh!2BIds.B@argj.]SGnukR[KP1Q^3r&Q'@JqP*(lgO,o<\repl9MZ/G5Lkktas+LH+
+re(6&s+1-!rdXorm="t_s*suts+13%rdt6)L&Qf-LPYqdD2O71N/`jYO-#KeP*;,qQC!u+R@9V8
+SXuIHTqS6WUnsueW2ckuXf\b1Yd(O@[C3NR\[f>b]tV7s_8=+.`Q#s>aihlOcHab`dF-Ooe^rF*
+g"P39h;-uHi8N\Uj5f=akNM0plK[^%m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcNhrqu]mo)=4?
+cMrC~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb$hX&]o'u5<n*]T0RHnbQD>\;MDu4GDD&IYFG^":P
+EcH&9D/3p$BP1mf@q&kS?X@$3rhBFds.KCa!1s(Ypmh>S!1a"WrgEhTq/,nEqJH.JpMU%LqeuM&
+s-W\MoTo3;rg*DGrg*SNs-EYLqNUoCrg!PLqJlO9s&]/"oiD3&E.[qM"A2<[9MGCZs%`SirD<Mk
+s&/hps&8tur`9&#s&f8'!a8f4r`fJ0?N+=3?iXX7@KL%MAH$-@AnV*V!blCarbDOND>nGQDZFbU
+E<:0%F8g7dF`qqPGBe@XrH\NlI!kpA!e,WKrdb$"s+:3%!ec8]rJ(?-s+pW1!1j%Xqjd_'rGDFL
+"E/0qTqVFZp7qM\rh]Xls/5jn"/i)sWViarX8B!tWrfB)Xo5F!Y6(r3YPtd)ZM\M=QM-[BQL0t(
+PQkL=c-FVZc2,`bcN;J@dJ_Mndfe+JdaHVBeG[ntf(YErPP^O=Oo(:iF`qtRH?spdI=HcuJqJ`1
+L51SAMN!LRO,oBcP*;,qQC!u+R@9V8Sc52bT:hmOU8+L_U]RBiVZ!FlW;W^dWrB!sW;NRnVZ3Ll
+V#R1iUAgkdTE(V`ScPCPrgORiR@'A.QBmf$P`q8nOcb`dO,f5!MueioreUZ3L]3&.K`Hf*KE$Q'
+Jc1,uJ,XoaIK"]qJ,OotJcC?$K)pXZre:H/M#N6JMMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[L
+TqeEZV5L5iWiE,%Xfen4Z*UdE[^N]V\\#Mf^;%J"_Sa=2`lH0BbKJ,TcHjncdaZdsf@S[.g=tE=
+h;@/KiSrnXjQ5Oekiq?slKdg'mI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*ps*t~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqQNf!;?Eb$hX&]o'u5<n*]T0<;eoL4T%A&4T.G24<$G0H$FOU
+FE2A?DJa0)BkV-jARf1X?sd5G:/Cgbr(m8d!)NDerD3GirD3Ag!'U-AqE=d>r&sC1s%iSgq+^la
+peUBSqG6]Xs%WDdr]^9F!CB*M5QF+L63'CP5lsA?6N07O7nrhY"A2<[9MGCZs%`SirD<Mks&/hp
+s&8tur`9&#s&f8'!a8f4r`fJ0?N+=3?iXX7@KL%MAH$-@AnV*V!blCarbDOND>nGQDZFbUE<:0%
+F8g7dF`qqPGBe@XrH\NlI!kpA!e,WKrdb$"s+:3%!ec8]rJ(?-s+pW1oi(cO"$AY,4T%A><;TVl
+<;KVp<rZ8$<rH+q=9)M#>5h\)>5_\(?2.\(>l\4/49/7O;Yj8c;"RQQ:]k'CE,bbqrc7sY!d&L)
+rH/'_qKDpard"Hgs*XfGlrNs_oMk]f.!9]WG^=[_I=6TqJV&N-KnbA=M2I7NNK9-^P*2#nQ'Rc(
+R$jD4S=TYN#+qQ^Tq\<WrhKUlVPa<iri#dpnuD\gri#ams/,gmrhTRh!2BIds.B@argj.]SGnuk
+R[KP1Q^3r&Q'@JqP*(lgO,o<\repl9MZ/G5Lkktas+LH+re(6&s+1-!rdXorm="t_s*suts+13%
+rdt6)L&Qf-LPYqdD2O71N/`jYO-#KeP*;,qQC!u+R@9V8SXuIHTqS6WUnsueW2ckuXf\b1Yd(O@
+[C3NR\[f>b]tV7s_8=+.`Q#s>aihlOcHab`dF-Ooe^rF*g"P39h;-uHi8N\Uj5f=akNM0plK[^%
+m-X6?mfDqJrpg-^o^r.Us7ZKerV6EgrqcNhrqu]mo)=4?cMrC~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqI*"p@e1Po^qbGo'u5<n*]T0a8V%qNVn_8NUDc*NV&2-NW+t7
+O8k=;NrY:@NuNImH$=ITFE2A?DJa0)BkV-jARf1X?sd5GhVS7hs5!b3rnIY2g=b-2qq(hu!7h%t
+#1M#Id*L"^q2kH6s,R&;s,?o9rf?]5rJq0-bfe/NaiOG$!QN+V`;%7M`;daS`;IOO_Y:t<_>ohs
+Pm*Jj_82G'ra>k9?XN_=$=[LTA7K+YAUp8Yr4rA+r_38bs%`SirD3Pm;H!Hl!`W0"r`9&#!*K5'
+s&oD,r`oJ/!+,Y3s'Ph8raGq=A7Y[N!G6!DB`DcHCAquMCi+%gD?4Zprc.sY!-A-]s)e<brceBe
+!."Qis*OcnrdFfq!.Xrts+(0%rIb-'s+UE+n]pijrK.'2!nc2ZptGW"s4mY1s5!b5r8@S6rT!q=
+$g$O6kNM-ol0@R"li$2MmJlVOmJcPRn,MkZnWArqrQ4WQqT8<Ln]1UJs'FCYn&5(Arl"cQnA6Vr
+G'A1VH@($fIXcm!K7ei3L5:\CMi<UTO,oEdP*;/rQC!u+R@B\9Sc52bT:hmOU8"F^V#R:kVYm@j
+W:R"eW;ELmVZ3LkV#R1iUAgkdTE(V`ScPCPrgNqWRJrQ\Q^3o%Pa%ApP*(k*Nrb9#repl9MZ/G5
+Lkktas+LH+re(6&s+1-!rdXormX>(`rdXlss+(0%re(6(!/:E,!JcL1M0Oo9N/WaVO,oBbP*2#n
+Q'Rc(R$jD4S=Q7CTV8'RUnjiaVl6SpX/rG+YHY:;Za@0L\%0&\]Y(tn^VRe(`5Ta:aN;TJbg"GZ
+d*^:jeCE.%f\,!4gYL]Bhr*GPj5]4^k2tjjl07L!m-O--mdKW6naZ2@oCMVQp&F^cp\agdq>^<g
+qu-HjrUTr=s3L^q~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqI*"p@e1Po^qbGo'u5<n*]T0RH\VMD>nGLDuX_JD&[kKH$=IT
+FE2A?DJa0)BkV-jARf1X?sd5GTqVI[s.TIcs.9:_r13YRr1*hXrL<hUs)7mSrGD1Er,)FNpM]nG
+"IbaHR$dc;oTo6<r0I8Gqj.5Hq3:iCrKd4urg!M'!*9)#s&Seo"'TGcMu8b=9E%W`:&dug:]4)k
+;,U<j;Z]ou<W6&!<rcA%=oVY*>Q.n->l\41?iOL6@K'^;@q9-LAH?CUrb2=G!,DLK!c2^jrb_aT
+E;jkWEWC1[FT6I`G5c^cGQ<$gHN/?lI/\QoIK4lrJH(0#K)L?%K`?c)LB!eCSc##TSc<R)D#\AN
+D?OlqTq\:TU\pqfUB%+hV>mCmVu<IqVl6PnWVrgsX8K'tWr]<(rN?+&!3Z.$!3lI-"0uf^D>fdo
+Qi!*9Q0jh9?3AErbfoq.rQbDhrQt\pdF%sA!7Ukq!7h(us4-1oqi^]9rK8UOG'A1VH@($fIXcm!
+K7ei3L5:\CMi<UTO,oEdP*;/rQC!u+R@B\9Sc52bT:hmOU8"F^V#R:kVYm@jW:R"eW;ELmVZ3Lk
+V#R1iUAgkdTE(V`ScPCPrgNqWRJrQ\Q^3o%Pa%ApP*(k*Nrb9#repl9MZ/G5Lkktas+LH+re(6&
+s+1-!rdXormX>(`rdXlss+(0%re(6(!/:E,!JcL1M0Oo9N/WaVO,oBbP*2#nQ'Rc(R$jD4S=Q7C
+TV8'RUnjiaVl6SpX/rG+YHY:;Za@0L\%0&\]Y(tn^VRe(`5Ta:aN;TJbg"GZd*^:jeCE.%f\,!4
+gYL]Bhr*GPj5]4^k2tjjl07L!m-O--mdKW6naZ2@oCMVQp&F^cp\agdq>^<gqu-HjrUTr=s3L^q~>
+JcC<$JcFL)o`"gfrqu]ks8)ckrqI*"p@e1Po^qbGo'u5<n*]T0<;nu>4T@M04Sh544</`pH$=IT
+FE2A?DJa0)BkV-jARf1X?sd5G:/4U`;#F,f:&n)c;#X8i;#O2i;#``V4o.A>4o7A@4nh/?4o@MC
+:]4&a:%_<R:B"&h;#a>_:Amod:&mKS57'SO:JX5@6:!k&r]gHLrBgKL#!t[D6:OREr)3Sgr_38b
+s%`SirD3Pm;H!Hl!`W0"r`9&#!*K5's&oD,r`oJ/!+,Y3s'Ph8raGq=A7Y[N!G6!DB`DcHCAquM
+Ci+%gD?4Zprc.sY!-A-]s)e<brceBe!."Qis*OcnrdFfq!.Xrts+(0%rIb-'s+UE+s&&bnp/C`L
+"[5(34[)%.<;BJl<;KVo<rQ/#<r?%p=9)M$>5h\)>5_Y*>lJ%(>l@q.?N*(c;=[W];>j>Z:\@Qa
+?Mnd@E<(%XF8p:\ErpH+G5ZXbG5ladGl;peHN&9i<U<c_<V08h<@N$5GBeCZH[L6jIt3*&K7nu6
+Ll$tHN/WdXO-,TgPEhE!Q^F/.S"#q=rgj=dTV8'RU8.^`s/#amr29Llo;V\eqksIks/#[is.]Rg
+rh9@b!2'7^!M,b[RfStGrg4%ZQBd`"P`q8nOc]R'!KN0=MueioreUZ3L]3&.K`Hf*KE$Q'Jc1,u
+J,XobIK"]pJ,OotJH1<$KE$T)L&Qf-LPYqdG`%E<N/`jYO-#KeP*;,qQC!u+R@9V8SXuFGTqS3V
+UnsrdW2ZetXKAY/Yd(L?['mEP\[f;a]Y;.q_8=(-`Q#s>ai_fNc-FY^dF-Lne^i@)g"P07h;-rF
+i8EVTj5f=ak3(sml0@U$m-X6/n*fc9nac8BoCW"Ss7QHer:p<fs8)WirVZTlo)=4?ci8L~>
+JcC<$JcFL)p&=pgrqu]ks8)ckrV-rup@e1Po^h\Fo'u5<n*]S`rJ^T4rf$]5oSiR)qi(H4rf6i9
+q2kW;rfA.KI!U'^G'%hHEGo`3CMIQsB4YU`@UWYO?<uFFhYuF4h?VllgtUQ9f\$&Prmh)"rR:u!
+da6@eoT8j/s,I/?NfF$ur/^K3#LC]>bK@rKaSj0Z`rF![`l5m7qnrBN!5ncRr58NNpVZR=qj%)F
+qSE;sQBq8Q!b#PIrF5nPO/i2q!_Z3\rD!;es%iSis&&eor_rhrs&K&!s&T2&r`T8)!*fG-s'5V2
+ra5\5!+Gk9s'l%>rac.CB4q3W!GQ<JC]A2ND>nDSDfB[pE<:0%F8g7_F`qs-GQ2mfH2W$jH[L5?
+IK+crJ,XuuJcC?$KDj'hcMu/ecM`juOTLWsf`'S$gA0M'g]610hZ)L4i;_d9ir8!<jT"<Jk3(pk
+kiq?slg+N9p?hkI!:TpV!qDD8prW6Pq8r*Hp;d*Ns'>Y0g].;mn&5(Arl"cQo"lkuFa&%SH?spd
+I=HcuJqJ`1L51SAMMmFQNfT9aP*;,qQ'Rc(R@9V7S=TYN!M?%aT`Us`U].(hV>mFhVt-e_VuNXn
+V>d:jU]7(fU&UbcTDkDnSXc4>S!ob5R$a5+QBd`"PQ$^VOcYWbNfK*XN/NUOM2@%EL]3#0KnP-Y
+KE$Q'Jc(&uJ,OicIJnWpJ,OotJcC?$KE$T)L&QgALPUeDMMmCON/`jYO-#KeP*D5sQC!u+R@9V8
+SXuFGTqS3VUnsrdW2ZetXKAY/Yd(L?['d?O\@K2_]Y2(p^r!t+`Pom=aND]Lc-FV]dF$FmeCE1&
+f\,!5gtgfDi8ESRj5]4^k3(t-klpA<m-O--rpKmWnc&+Zo)SF^p&Facp\jmdq>^<gqu-HkrUTr=
+s3L^q~>
+JcC<$JcFL)p&=pgrqu]ks8)ckrV-rup@e1Po^h\Fo'u5<n*]S3kAKBuphg(Mq/6+I*IW<]H$=FR
+FE2A>DJa0(BkV-jA7K(W?sd5GTV8(YUA^bdTV)+Pq4.AR!1a"Ws).[Omr&,Ar,2CMqJQ>%s-`nS
+r0Qu?pm:oErg!>Grg!>ErK[>Ip2U+tr0@G&EH,%L<rulRL&R8;92&%X:&dug:]4,i;?'Pn;u]hs
+<W6&!<rcA%=oVY*>Q.n->l\41?iOL6@K'a9@fU'=AHHIVBDuQFBkmW_s(h[Prb_dUE,ber!ci@'
+rcA3aG'<k/s*+NhrH\NlI!kpAs*jutrdb$"s+:6&r1*\UrLE_T!,h^Or+uCMrbhb1pnR_^rhKLh
+s/#Og!N2mqWW0!uX8T-uX8f:$XoGR&YQ(d$Y5kg+Yl_4KDYTOnQi!*6Q1:+=?2n10bl>ofbl,fc
+c2c2hd/25hdf7ereGn"se,e+Nj-0A'p6#B<.WffWGBeF[H[U<lJ:W<)KS>/9Ll%"IN/`jYOHG]i
+Pa.N"Q^F20S"#q=rgj._T`1VdU8+L_V#R:kVY[4]W;<FlVZ*FkV#R4iUAgkdTE(V`Se.H_S=?":
+R@0G0Q^3r&Q'@L3Oq<b;O,o<]NJrgSMi*@JLkpicL'!'^K`6W(K)^E"JH(,tIdhdaIfForJH(3#
+K)UE&KE-`*L2)L"M2@+JMi<USNfT6_OckllQ'IZ%R$a;1S"-%@StMdNU84T]VPgAlWiN5'Y-5(7
+ZEppG[^WcW]">Vg^V@S$_Sa@3a2l?EbKJ/UcHstde'umtf@S[.g=tE=h;@/KiSrnXjQ5Oekl0fM
+lKdg'mI'uB!V#XYo)J:]o`"O`pAamcq#:*hqYU0gr;HTbrdk*qs*t~>
+JcC<$JcFL)p&=pgrqu]ks8)ckrV-rup@e1Po^h\Fo'u5<n*]RCrB'%%pcIk*!'Ts:)L[!ZH$=FR
+FE2A>DJa0(BkV-jA7K(W?sd5Gr_EGgs%r_kqG%#do2,B]r]^!<r'(!@rB1!@q`ap@!B`OD:]4&c
+:&du]:\7E^:]+&h:\IQ[:&@0Q5lOUY:BimG5XIb&6N04P5sdn*rBUQQ6UaUBr_ikk9MGCZs%`Si
+rD<Mks&/hps&B"ur`9&#!*K5's&oD,r`oJ/!+,Y3s'Ph8raPn;!+c(?!bQ(Xrb)=HCAr#KC]J>O
+D?=`qE;jhYEcZ=$F96T.G5c^cGQ<$fH3/G@I/\QoIfFosJH(3#K)UE$;#X>k;YF&]4o[\G4nhkT
+<;BPo<q]Vk=T2J'=ohc0r`T8)rEK8+!+#;'s'5_3>s(7E;>*o];>j>Z:\die?2n1/E;abXEcZ=#
+EWpN+F`hnPr-&'`rceEgrd+Tk!.=ZDlrNs_oMkij.WffWGBeF[H[U<lJ:W<)KS>/9Ll%"IN/`jY
+OHG]iPa.N"Q^F20S"#q=rgj._T`1VdU8+L_V#R:kVY[4]W;<FlVZ*FkV#R4iUAgkdTE(V`Se.H_
+S=?":R@0G0Q^3r&Q'@L3Oq<b;O,o<]NJrgSMi*@JLkpicL'!'^K`6W(K)^E"JH(,tIdhdaIfFor
+JH(3#K)UE&KE-`*L2)L"M2@+JMi<USNfT6_OckllQ'IZ%R$a;1S"-%@StMdNU84T]VPgAlWiN5'
+Y-5(7ZEppG[^WcW]">Vg^V@S$_Sa@3a2l?EbKJ/UcHstde'umtf@S[.g=tE=h;@/KiSrnXjQ5Oe
+kl0fMlKdg'mI'uB!V#XYo)J:]o`"O`pAamcq#:*hqYU0gr;HTbrdk*qs*t~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nceRQn*fY`r/C]:q2GB5oSr^+m>_+*qN(B4
+s,e=NI=$9cGBS(LEH,o7Chmd!BP(gd@q&kR?X@!ohYc:2hZ)C8gtUQ9f\$&Prmq,"rmV"uda7HE
+p5f66pQ,-3s3Ctrc-+;QaiMNDrl=uWs2=uVr586Ho#("7s-<AFpVQpGs-<^o?XNV:$XmLR@q0>0
+T"2\R9`7]c:B+,g;#aDm;Z9Vp<<#tt<WZ?)=T2J'=o_e+>lS(0?N+=3?iXX7@fKp<AH$-AAnPcU
+BEDm_CAquMCi+%gD?4ZprG_mZF*%>&!d/[0rceBe!."Nh!df<BrI"iuIt,\cbPfZ_c2,`ac2Grf
+O8t@>OSP%=OT3u4g&'M#g]-(.h>c@2hZi#tiSrkWj8S->jo=KBk61#5l0@U5m.B]Emf)\VnrWIb
+qo\ZTlcB"Eqo8V?s'+:Yo#:IDqSiHPrPS<F/AZFNG'A1VH@($fIXcm!K7ei3L5:\CMi<UTO,oBc
+P*;,qQC!u+R@9V7S=TYN!M?%aU&UheU]%"gV>d@WVuERnV>R.hU]7(fT`UmZTDkDsSXc4>S!oe6
+R$a5,QBd`"PEV/mOc]R'!KN0=MueioreU]4LPPk`!el;\re(6&s+1)urdXornU:@bs*srss+13%
+rdt`7KnY89LPUbCM2I4MN/`ksO)0o@P*;,qQ'Rc(R$jG5S=Q7CTV8'RUnjiaVl6SpX/rG+YHY:;
+Za@-K\%&u[]=bhk^VI\&_o0O6aN2KHbKS8WcdC.ge'uq!f@\d1g>(N?hV[8MioB([jlY^gkiq?s
+lg4!*mI'H3nF?&JncJFTo`"O`pAamcq#C0hqYU0hr;?Nardk*rs*t~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nceRQn*fY3r,(\9kABO&++AWbH?j^XFE;GA
+Df0B,C1q9mARo:[@:*AJ>bIa`U&LebT`LgYr13VQr1*nZS"'1jqJY;0rL*eUR$dl>nWrm8r0@>J
+pm1c@rK[;Hp2U+tr0I;Hs-3P'r`8eqs&T/$#$l(oNg#Z#rD!;es%iSis&&eor_rhrs&K&!!`rK+
+r`T8)!*fG-s'5V2ra5\5!+Gk9s'l%>rac.CB4q3W!blCarbDROD/K8i!H2rUE<:0%F8g7_F`qs-
+GQ2mfH2W$jH[L5>I0+kIJ+]?0Sc>5USc3L+DYn;KD#\>PUA(G^V#7"eV#R:gVZ3RoW;`grX8]4!
+X8f:#XT5O&YPt^$YQ(j+YlV.Io9T<@qj-B0p6>P]s',EFrQY>erQkJirR(VmqpYPos4-+mqi^`:
+rfSdRF`qtRH$XgbI=?ZrJV/T.L5(M@M2R=ONfT6_P*2#nQ'Rc(R$jD4S"-&KScPIVrh9@d!2KLg
+s/#^llDOWYs/#Xhs.fUgrh0CdT:c+S'qLkbS"#k8R@'A.Q^3o%P`q;oP*(k*Nrb9#repl9MZ/G6
+LkgcbL'!'^K`6W(K)^E"JGt&tIdqjbIfFoqJH(3#K)UB5KS>,7L51S@M2@+JN/WaVrf:lWP*2#n
+Q'IZ%R$a;2S"-%@StMdNU84T]VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%J"_Sa=2`lQ6CbKJ,T
+cHjncdaQ^rf%8R-g=k?<h;7&IiSrnXjQ5OdkNM0plKdg'mHs?1n*ol;rpg-^o^r.Us7ZKerV6Eg
+rqcNhrqu]mo)=4?d/SU~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nceRQn*fXCr&`q$niQ5$r&ap@)h*3^H?j^X
+FE;GADf0B,C1q9mARo:[@:*AJ>l@Fs:]F8k:]!oe:\dib;$'Qi:\m9/4oRPE:JUmbrD*;cr_E2`
+!`2ZgoM5E^r_WMgpJ(``:Amoe5PRM@;#3uf5l<tJ5Rp(H6:4"'5s[n19N"ef9`7]c:B+,g;#aDm
+;Z9Vp<<#tt<WZ?)=T2J'=o_e+>lS(0?N+=3?iXX7@fKp<AH$-AAnPcUBEDm_CAquMCi+%gD?4Zp
+rG_mZF*%>&!d/[0rceBe!."Nh!df<BrI"`rIt.Gqs&&Vhs&&bnpJ_&RnicbHs&Akqs&SeoqcNSq
+s'#A*mT]cu4S)GI;XdQ_;!q-X;#X`">Q8[AEW'nXEW0t[F*)O%FoHR_G63#7H2W$iH[PWhlrNs_
+oMd>_F`qtRH$XgbI=?ZrJV/T.L5(M@M2R=ONfT6_P*2#nQ'Rc(R$jD4S"-&KScPIVrh9@d!2KLg
+s/#^llDOWYs/#Xhs.fUgrh0CdT:c+S'qLkbS"#k8R@'A.Q^3o%P`q;oP*(k*Nrb9#repl9MZ/G6
+LkgcbL'!'^K`6W(K)^E"JGt&tIdqjbIfFoqJH(3#K)UB5KS>,7L51S@M2@+JN/WaVrf:lWP*2#n
+Q'IZ%R$a;2S"-%@StMdNU84T]VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%J"_Sa=2`lQ6CbKJ,T
+cHjncdaQ^rf%8R-g=k?<h;7&IiSrnXjQ5OdkNM0plKdg'mHs?1n*ol;rpg-^o^r.Us7ZKerV6Eg
+rqcNhrqu]mo)=4?d/SU~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb%eTA`o'u5<n*]T0m-Es$rJpT2!05rrrJpc9pQ-GY
+JUi2tH[9p\G'%eFE,TW1CMINrAn>L_@UWVN?!RBdro!h6s5*e3"l.kdg"=sRfDaA"eH47Le*E+`
+O84n:cNMP<bfe0.aTBQ(aSs6[`rF!X`;[[H`;%4M`;@IE_Xs/h_YM"LP*VF0?iFF<@:E\WI?q%P
+rD!;es%iSis%rborDW_q!*/tu!`rK+r`T8)!*fG-s'5V2ra5\5!+Gk9s'l%>ral+A!,):Es(MIJ
+rbMOM!,_^Qs).mVrc.sY!-A*\!d/[0rceBes*=Ti!.4Xe!6Y;arQP2arQb8arQb>%!0I2@rfI&?
+s,d95s4R;'rS.>,rS@M1rnmb7s5O(=s5a.?!9X:Ds6'XNlKdd&m/?>Om.fuJmf2_WnF?,KaR[FQ
+b4Wm?aSNm[>[(E9>$9Y\!64TKo>L:=r5/JU.WorZG^=[`I=6TqJV&N-KnbA=M2I4MNK0']Ocklk
+Q'IZ%R$a;1S"#q=rgj1`TV2:X!huHbr1s=grMK4br20Iir1s@fs.]Lds.KCargj@cS=H(<R[TZD
+QiWP>rfmMKPQ$^LOcYWbNfK+uMueioreU]4LPPk`!el;\re(6&s+1)urdXlqo6pRdrdXlss+13%
+re(6(!/:E,!JcL1M/\?1N/WaVO,oBbP*2#nQ'IZ%R$a;2S"-%@StMdNU84T]VPgAlWiN5'Y-5(6
+ZEpmF[^N]V]">Vg^;%J"_Sa=2`lH0Bb0/#RcHjkbdaQ^rf%8O,g=k<:h;7&Ii8N\UjQ5OdkNM0p
+lKdd&m-X6?mfDqJrpp*\!;-9`s7ZKerV6EgrqcNhrVZWmo)=4?d/SU~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb%eTA`o'u5<n*]T0m-Es$k&0I$lu!hpJ:;onH?aXW
+FE;G@Df0B,C1q9mARo:[@:*AI>lLGpUA^bdTV).QpmhATr1*V$no*Z.r0dYSR/NBCQLpO8QN*6J
+Pl6mGQLo.sQ26gHQ26^HD/jRk<rH,"<WlN;G)):[:&dug:]4,i;#jMm;u]es<W,r"='/T(=oVY*
+>Q.n->l\41?iOL6@K'a9@fU'=AcH?BBDuTEB`MoIC]A2ND>nGQDZFbUEW:%ZF8^1^F`qs-GQ2pf
+H2`*iHi'<*SFW6KD"VZFD"j_)V#-qdV#I4hVZ3OrW2Zbrr2]gu!3?+#rN-(&ric4%qQKq's02R1
+mZmj>qNg0,qNM1h>?b97=j-fgrQY>erQkGhrmCVkrmUboj-/qps)]`5GB\:XH@1-hIt3*%K7nr5
+LPUeEMi<XUO-#KeP*;/rQC!u+R@9V7S=TYN!hZ-Yrh0CfUSIa_rh]RjoV_Varh]Ogs.fUgrh9@b
+s.B:^#G%BTS"#k8RJrQSQ^7W9!L/fIOp7&1O,o<]NW+k;Mi.Lj!f2Vere:K.KS9>Ws+:9%r.+cr
+rI4?drI4`qrIFp!s+:6&s+CB+re:H/M#N6MMMmFPNK0'\OHG]hPE_>tQC!u+R@B\9SXuFGTqS3V
+UnsrdW2ZetXKAY/YctF>ZaI6M\@K2_]Y2%o^qmn*`5Ta:aN;TJbg"GZd*^:jeCE.%f@em3gYCWA
+hr*GOioB+]k2tjjl07L!lg4!*mf)YUnF?MKs766_rq6<bs7cKes7uZjqtp?irVc<dJcF*sJ,~>
+JcC<$JcFO*o`"gfrqu]ks8)ckrqQNf!;?Eb%eTA`o'u5<n*]T0m-Es$j#l]jniZe2*J&`iI=$9b
+GBS(LEH#i6Chmd!BP(gd@q&kR?X6q9:Adof;#a>i:B+,a;#F2j;"d*04oRPH:JOY\:]!le:&[oa
+:]F/i:]=2i:\@K^:B45h:\7E^:%U^J;"dZf4?u.u62j1[5sR\$6:4()5X@n5:fI<es%`SirD<Mk
+!)ibos&8turDiu$=BPQ*s&oD,r`oJ/!+,Y3s'Ph8raPn;!+c(?s(27Drb2=G!,DLKs(h[PrbhaS
+!-%pWs)J*\rH&*`G'<k/s*4Qhrd"Qkqbd>js&&Vhr_`Ympf%,Qr&j^:q,@;mrDihtoN1unqcWr$
+s&oA*rEK5*s',>)"']#7>Q%e,?1(Pi;X73Y;"%0g>[(E9>$5f`EH6)>ErL%_EcZ;DF`hg*Fo?L_
+GPugdHN&9e<U3]S<W@.jFa&%SH?sseI=HcuJqJ`1L51SAMMmFQNfT9aP*2#oQ'Rc(R$jD4S"-&K
+ScYOWT`1VdU8+L]V#I4hVY$eaVZ*FiV#R4iUAgkdT`:Y`Sd1gVS=?":R[O/B!LK,OPl[,5rfRJJ
+OH5H_NfF$s!K2j7M#rKgL]3#0KnP-YKE$Q'Jc(&tJ,OifIJnWoJ,OotJcC?$KE$T)L&Qf-LPYqd
+E/KR4N/`jYO-#KeP*;,qQ'Rc(R$jG5S=Q7CTV8'RUnjiaVl6SpX/rG+YHY7:Za7'J[^`lZ]=bhk
+^VI\&_o0O6a2lBFbKS5Vcd:(fe'uq!f@S^0g=tE=hV[8LiSrnYjlY^gkiq?slg*p(mI'uB!V#XY
+o)J:]o`"O`pAamcq#C0hqYU0gr;HTbrdk*rs*t~>
+JcC<$JcFO*o`"jgrqu]krqZWjrV.?+p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+oN<#%9NpD])
+NrG%;Nr>%=O8t@9O<9++J:;onH?aXVFE;G@DJj9+C1q6lARo7Z?sd8HhV\=js5=+=hr!;IrnR_3
+g=b-2qUbYrs4%,!muRO3qN1**rK.!(s3:Sf"3\j0ao0<[a8a-Z`UCbA_u@UO_u%:N_u@OEQMA>m
+_>;"LQBhASrEoS4$=RCbNM]EE:/4S\rD<Mks&/eo!`W0"r`9&#s&f8's&oD,r`oJ/!+,Y3s'Ph8
+raPn;!+c(?s(27DrFc7HC23``!c2^jrb_dUE,bers)J*\rH&3cG'8(RbPo``bPoWdbKA#Orlk;b
+s3CPes31Jerm(J(pQ,?9rfI5Cf`'S$gAfq-h##q-h>lI4i;_g9irJ0=jo4EBk6C/7lK[^$m/?>N
+m.fuImK;qInauXukfN,2r5\iWs',M,rE7tVrl4NJo>L=>rPC@3FEMbNG^4U^I!pHoJ:W?*KSG5:
+M2@+KN/`mZOHG]iPa.N"Q^F/.R[]e:SXl@DT:_eUU&UkeU\gkcV=^Y`V>I(fU]7(eU&UbcTDb>d
+SXc4>S!oe6rg3_QQN!-MP`u*0%$?X5O,o<\NJrgSMMhCi!JlO1LAuu-K`6W(K)^E"JGt&rIeA-f
+If=ipJH(3#K)UCPKS>,7L51P?M2@+IMi<USNfT6_OcklkPa.N"Q^F20S"#q=StD[LTq\?YV5C/h
+WN*##Xf\e2Yd1UA[C3NR\[f>b]Y;.q_8=(-`Pom=aND]Lc-FV]dF$FmeCE1&f\,!5gtgfCi8ESR
+j5]4^k2tjjl07L!m-O--mdKW6s7-*Z!qZ'Vrq6<bs7cKes7u]kqYU9ir;H3cJcF-tJ,~>
+JcC<$JcFO*o`"jgrqu]krqZWjrV.?+p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+aDX;6-DBFL^
+J:;onH?aXVFE;G@DJj9+C1q6lARo7Z?sd8HT:l1Wr1a+_!2'1[pmhATrg`h&lYcc@rGV4DrL3bS
+s-WbOop5-7p6PWAs-3PKs-<YOrg*.q!1!DHs-<GFrK[AJs)A!<q,[Ms$!(GRJ5&a5:/=[a;#aDm
+;Z0Mq<)lrt<rZ8$=T2J'=o_e+>lS(0?N+=3?iXX7@fKp<AH$0?AcQKBBEDm_CAquMCi+%gD?=`q
+E;jkWEWC1ZF9Qf1G'A/!p7(`Fnt#YorbMOMphff$!2B=brM9Iirhf^ns/5stWr&jrXT,F&Y5bX'
+Y5b^%Y5GL%YQM/9Z^9g?i0F>,s',M,rE9-D!mSs5rQY;drQkJirmC_nrR1o!e'ujqifikp1NRY\
+G'A1VH@($fIXls"K7ei3L51VBMN!LRO,oBbP*;,qQ'Rc(R$jD4S"-%?St;RHT`1YbUAq"cV#@.^
+VZ!@gV#I.hUA^ecTE(V_Sd1gVS=?":R[O/B!LK,OPl[,5rfR\POH>NaNfB$WN/NRNreUZ3L]3&.
+L&Zi*KE$Q'Jc(&tJ,FcgIJnWoJ,FisJcC?$K7AQ.Knb>;LPUeDMMd=NN/`jYO-#KeP*;,qQ'Rc(
+R@9V7S=Q7DTV8'RUnjiaVl6SpX/rG*YHY7:Za7'J[^`lY]=bej^V@V%_SjF4a2l?EbKJ/UcHstd
+e'umtf@S[.g=tE=h;7)JiSrnXjQ5OdkNM0plKdg'mI'E2n*pAIrpg-^o^r.Us7ZKerV6Egs8)Th
+rqu]mo)=4?dJn^~>
+JcC<$JcFO*o`"jgrqu]krqZWjrV.?+p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+o49.P94RG6$
+4T%8_K7SQ%I=$9bGBJ"KEH#f5Chmd!B4b^c@U`_P?X6B#r_EAes%r\jr_EJhpeV#h;H!Kknim%9
+!']^3pcS(AqbR5e!)NMhs%`\k:J^^[qbQo\!)NShoKWC@qbZfYs%r_\s$?WN!($TLs$I,Z5X\1>
+9heAX:J^pcs&&eorDNbs<E9$!s&]5&r`T8)!*fG-s'5V2ra5\5!+Gk9s'l%>ral+A!,)7D!blCa
+rbDROD/K8i!cN$src.sY!-A*\"Eem2GBa$a!Du\i;>jDm;>X2h;>sJg;u/TO4T%A=;uTbr<W?+t
+=8u=s=8l>"=oDG&=oDP(>Q%h+>Pqb&>6A,7>[>fUrD<,^s',M,rE08BEH6&<rGhgX"E\d.FERS)
+s)eEeGB\<1H2`-iHN8Hf<U3]U<AS]<F`qtRH$XgbI=?]sJV/T.L5(J?M2I7NNK9-^OckomQ'IZ%
+R$a;1S"#q=SXuFFT:l1Ws.]OgqkX1eoVVS`qkX4ds.]Ics.B@arLO7bS=H(<R[TZDQiWP>rfmMK
+PQ$^ROcYZcO,f3ZN/W[PMZ/G5Lkktas+UK+re(6&s+1)urdXipomQdfrdXirs+13%re#]RKnY89
+LPL\BM2I1KN/WaVO,oBbP*2#nQ'IZ%R$jD4S"-%@T:hmOU84T]VPgAlWiN5'Xfnt5ZEpmF[^N]V
+\\#Me^;%G!_SX71`Q-'@b0.uQcHaeadF6Upe^rF*g"P39h;-rGi8N\Uj5f=ak3(sml0@U$m-X6/
+n*fcGnc&(\oCV\Sp&Facp\jmeq>^<fqu6NkrUTr=s3^js~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV-EfpAX^co^i(Q)=d4bn*]T0lg!a!kN:pfj5T%Uhqd,Cg=_J[
+NpVi(Nr+n0O<K7.J:E#rH[9p\F`_\EE,KQ0CMINqAn>L^@UNPM?/OPtro*n:%,p.&hqm2FgtUQ9
+g"?/Qqpt_,rfI#<r/g`:r/gK1qiLj(s3CYhs3(Sgb0%j(aT'<\`W4!H`;IOM`;@IO_YqCBQ2ni!
+_YM%A_Yq=J?41+H?=7/WKM>3::J^pcs&&eor_rhrs&K&!s&]5&r`T8)!*fG-s'5V2rEfV6@:B.E
+!b5bOrac.CB4q3Ws(MIJrbMOM!,_[P!cN$src.hWrQG/`!6b2\s3(AbrQP>drltAbrltJgqiUf<
+q2YW>YcudZg&0P*gYCT\h>c=7hr*GOir.p:jo4EAk5sl3l2KuJlh]uCmJlVSmfN"Lo^p5kam@+E
+a8]?A=oVS(=5NuF`r3mM`:q1K_Z.ORF=_TZGBnL\I!pHnJ:W<)KS>/9Ll%"IN/`jYO-#NfPE_>t
+QC!u+R@9V7S=H/LScYOWT`1YbUAgqaV"CMZV#I.hUA^ecT`:Y`T)Y>]SGo#XRK/cTQk>[NQBd`"
+PEV/mOcb`dO,f6[repl9MZ/J4L]E50LAur-K`-Q'K)^E"JGjuqIeeEhIf=ipJH(3#K)UE&KE-`*
+L'EEhLl$tGMuJZPNK0'\OHG]hPE_>tQC+&-R[]e:SXuIHTqS3VUnsrdW2ZetXKAV.YctF>Za@0L
+\%0&\]Y(qm^VI_'_o9U7aN2KHbKS8WcdC.ge'uq!f@\d1g=tH>hV[8LiSrnYjlY^gkiq?slg*p(
+mI'uB!V#XYo)J:]o`"O`pAamcq#:*hqYU0gr;HTbrdk*ss*t~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV-EfpAX^co^i(Q)"I+an*]T0lg!a!kN:pfj5T%Uhqd,Cg=c"6
+m;;9/+bPAsIsufmH?aXVFE;G@DJj9+C1q6lARo7Z?sd8HTV/"XUAUbeU7qRZ!1s+Zpmh>SrGV[Q
+iG\@+rL3bSqj.;KrKmDIn<`j7q3:rGrKm%oqNh/HqNUrDrg*MJrKR:]q,R]*CJ@Q!:J^pcs&&eo
+r_rhrs&K&!s&]5&r`T8)!*fG-s'5V2rEfV6@:B.E!b5bOrac.CB4q3Ws(MIJrbMOM!,_[P!cN$s
+rc.\$p7)&O!1WbRoUYkrr+u@JrG;LNs+U?FrM'1arhTRjrMKRms/Gjqs/Z4&n#lVmr3-7-ZEsIq
+l'C4ls'#A(s&]>(bKKk.rQY>erQkJir6bPm!7Ukos3okhoTK6<s)]f8GB\=YH@1-iIt3*%K7nr5
+LPUeEMi<XUO,oBcP*;,qQ'Rc(R$jD4S"-">rgj1`TV2:Xs.]LfqP<b[q5""bs.]Ics.KCargs.\
+!1a%Xs-`qUrg4:aQBmf$P`q;oP*(lgO,o<]NW+k;Mi.Ljs+gZ1reCH,!/1<'s+:9%r.+`qr-nHi
+qgSNor.+fus+:6&s+CB+re:W4LkpnEMMqImD2jR:O-#KeP*;,qQ'Rf)R@9V7S=Q7DTV8'RUnjia
+Vl6SpX/rG*YHY7:Za7$I[^WfX]"G\h^V@S$_Sa@3`lQ6CbKJ,TcHjncdaQ^rf%8R-g=k<;h;7&I
+i8N\UjQ5OdkNM0plKdd&m-X6?mfDqJrpp*\!;-9`s7ZKerV6Bfs8)WirVZWmo)=4?dJn^~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrV-EfpAX^co^i(Q)"I+an*]T0lg!a!kN:pfj5T%Uhqd,Cg=c?c
+s#^$=m5sl$rAu0TJq/?"I=$9bGBJ"KEH#f5Chmd!B4b^c@U`_P?X6B#:AI]c;#X8i:B+,b:]OAl
+;Wg744o%5=:%V3[:]=,h:]+&e:\RW]:\[]`:\R*S5Q!eE;"@EV:]aEY62j1N62j.K6Np"T:/4S\
+rD<Mks&/hps&B"ur`9&#s&f8's&oD,r`oJ/!+,V2!aoGFraGq=A7Y[N!bQ(Xrb2=G!,DLKs(h[P
+rGD[TE,berqbd5gpeh#gr_`Mgr_`\nq,?rJ!'L6DrB1*Nqc!Jn!``9%r)`kur)`eur)ru#s&f>*
+r`T8)qHNo's',M,qca)+?-cCH;#!id>5_V(=92KCrc%jV!ci@'piHR[G'<k/"*f*:GlDsiH@1+t
+<q98jF=_TZGBnL\I!pHnJ:W<)KS>/9Ll%"IN/`jYO-#NfPE_>tQC!u+R@9V7S=H/LScYOWT`1Yb
+UAgqaV"CMZV#I.hUA^ecT`:Y`T)Y>]SGo#XRK/cTQk>[NQBd`"PEV/mOcb`dO,f6[repl9MZ/J4
+L]E50LAur-K`-Q'K)^E"JGjuqIeeEhIf=ipJH(3#K)UE&KE-`*L'EEhLl$tGMuJZPNK0'\OHG]h
+PE_>tQC+&-R[]e:SXuIHTqS3VUnsrdW2ZetXKAV.YctF>Za@0L\%0&\]Y(qm^VI_'_o9U7aN2KH
+bKS8WcdC.ge'uq!f@\d1g=tH>hV[8LiSrnYjlY^gkiq?slg*p(mI'uB!V#XYo)J:]o`"O`pAamc
+q#:*hqYU0gr;HTbrdk*ss*t~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrqQNf!;?Eb,kU^!o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEhfPmZ%4+q2b-/,DCc%J:DupH?j^YF`_YDE,KN/CM@HpAS#@\@:3GK?/XVti;V^8ir@sE
+i8<DJh;$c=g"G$RfDa@tO8Y+=O8k7=O8P+9Oo1==O8k==O8b4BOjDDRcMu/hbl>inb/qcHaiMQD
+a2Z-u`ULhG_t_1I_Z7RQ_siuj_u@OK_=b\;_>dgA?2e.5A55lq:]4,i;?'Pn;u]hs<W6&!=8uD%
+=oVY*>Q.n-?2n71?NOVD@K'a9@fU'=AcH?BBDlKFBkhD^CB/2HaSX*Zb5TT`bQ,ibb5]T^aoKW`
+bl>rebQ,o`bl>rfcMN_%Oo(7:Yl38TgA]k%h>c=9hr*GOioB(uj8e<@k5OQCkQ'lGlMp2Im.fuJ
+mf2_WnF?/?aR@7=aS<gS=oVV'<rc:Xs6[i)`V.7F_u7G%F*)PJGBeCZH[U<kJ:N3'K7nu6LP^kF
+N/WaVO-#KeP*;,qQ'Rc(R$jEBRfT%Mrgs.^s.K=as.]Lfm%jTTs.]Fbs.KCarLO(]S=KSJs-`qU
+rg3qWQBmf$Pa%C2Oo^],rf7;ENK&mUMi3JlM#rKgL]3#0KnP-XKE$Q'Jc(&sJ,=]lIJ\KlJ,Fis
+JH1<#K*$^[L&Qf-LPYqd"cA4sN/`ksO(j]<P*2#nQ'Rc(R$jD4S"-%@T:hmOU84T]VPgAlWiE/&
+Xfnt5Z*UdD[^NZU\[oDc]tV7s_8=+.`Q#s>ai_fNc-FY^dF-Lne^i@(f\5'6gtgiEi8ESRj5]4^
+k2tjjl07L!m-O--rpL*]naZ2@oCMVQp&F^cp\agdq>^<gqu-HjrUTr=s3gpt~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrqQNf!;?Eb,kU^!o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEhN(n87`6rG<d5K7\W'I=-?dGB\1OEcH&9D/=!%BP1mf@q&kS?X@$3TV/"XUAUbeU7qRZ
+!2'4\pRD5SeSk5#r0mYQp6PlIQ^3s)QhHaDQ2[*KQgf"kQ2m3HPl-gGQMm*FPl$aG<rH#$=ADUe
+:]4,i;?'Pn;u]hs<W6&!=8uD%=oVY*>Q.n-?2n71?NOVD@K'a9@fU'=AcH?BBDlKFBkhD^CB/2H
+RJ**?S+rNGSbm7%D>S/GL&IeEUAL_cV#R:iVZ3RoVuiruWr&h(XKAV-Y-5%3Y-"i#Y5GL%YlCs0
+Z^-pRQgC$rQ2Okc=T2A'<m/\_bl5lcci;>lci2;kdJ_MmdJ_MMPOt"fF*)PJGBeCZH[U<kJ:N3'
+K7nu6LP^kFN/WaVO-#KeP*;,qQ'Rc(R$jEBRfT%Mrgs.^s.K=as.]Lfm%jTTs.]Fbs.KCarLO(]
+S=KSJs-`qUrg3qWQBmf$Pa%C2Oo^],rf7;ENK&mUMi3JlM#rKgL]3#0KnP-XKE$Q'Jc(&sJ,=]l
+IJ\KlJ,FisJH1<#K*$^[L&Qf-LPYqd"cA4sN/`ksO(j]<P*2#nQ'Rc(R$jD4S"-%@T:hmOU84T]
+VPgAlWiE/&Xfnt5Z*UdD[^NZU\[oDc]tV7s_8=+.`Q#s>ai_fNc-FY^dF-Lne^i@(f\5'6gtgiE
+i8ESRj5]4^k2tjjl07L!m-O--rpL*]naZ2@oCMVQp&F^cp\agdq>^<gqu-HjrUTr=s3gpt~>
+JcC<$JcFR+o`"gfrqu]ks8)ckrqQNf!;?Eb,kU^!o'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEhYN!'KX1niZk4,DCc%J:DupH?j^YF`_YDE,KN/CM@HpAS#@\@:3GK>u"*g:AI]c;#*o^
+:]XEkl9522ofi::s$$<CrB1!PoM,B^qbI/er)!>fp.kK\qG.#cr]g?HpHSRPnk]*Ys%`VkpJ:fU
+#XCU=5XS:A:J^pcs&&eor_rhrs&K&!s&]5&r`T8)!*fG-s'>Y2ra,_7@:B.Es'l%>ral+A!,)7D
+!blCarbDLMr)!Gjqbd,dnko6[!)`YlqGZuIs#g-K!*&nqs&B"us&T,#qc<Vrr`K2'!E`M$=Sl8$
+>5MP(>lIt,>5DG'?-?+D;#F,f=oVV'<rc;#E;sqXErL._F*)MFrH/!]s*"]mH$FRZH$Xi:I,@ur
+<@W'3F`qtRH$XgcI=?]sJV/T.L5(J?M2I7NNK0']OcklkPa.N"Q^F/.Rf8cWS=TYNs.B=arLs7c
+rhJhUrM0Cer1X.`s.B7]!hGjOrgWqV!1EhR#FCaBQ'ISuPQ$^GOc]R'#EFe'N/W[QMZ/G6Lkgcb
+L'!'^K`-Q'K)^E"JGjupIf"QjIf4coJH(0#K)L<'KS>-ZL&m'creUf9Mi<USNrG)ROHG]hPE_>u
+Q^F/.R[]e:SXuIHTqS3VUnsrdW2ZesXKAV.YctC=Za@0L\%0&\]=bhk^VI\&_o0O6a2lBFbKS5V
+cd:(fe'uq!f@S[/g=tE=hV[8LiSrnXjQ5OdkNM0plKdg'mI'uB#Oq9Ro()DDo_nI_p&Ojbq#C0i
+qYU0gr;?Nardk*ts*t~>
+JcC<$JcFR+o`"jgrVZTjs8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0rd*L"]bK7iF`Uf)fNrG+.O<TF5K7\W'I=-?dGBS(MEcH#8D/3p$BP1mf@q&kS?X@$uiVqd7
+iW%p;i<eH"hVR)DgY1?5pt#MsrK-r<oo9$5qN1Q9o8s!5s,[9.ci)/hc2PohbK@uLrQ+uYs2P&W
+ji$u4!L8uMQh6U@_th.B_X,,:_>qLQ;#aDm;Z0Po<<#tt<rZ5$=T)D&=o_e+>lS+0?N+:5?t!LC
+@fKp=A7bbZr5S]Up;m0Rs2t2]!6Y5]qo\r^!R/adbl>l^bl5iecM3M"OnQ!Zg&B_)g]-()h>c=8
+hr*JPioC%!#3G"0kNM-orojCHrTaCJr9X1Fs6fpU!qGp)mE"k?nAt@Es&oA(s&],!huE#^rPeNL
+pr!*J.s#fTG'A1VH@($fIXcm!JqJ`1L51SAMMmFPNK9-^OcklkPa.N"Q^F/.Rf8cXS=Q5MScYOW
+T_tM^UAUe]V#-qcUAU_bT`1S_T)YA]SGo#XRK/cTQi`V?QN!-MP`u*0#Eb+0O,o<]NW+kAMi*CK
+M26tCrItB-KS9;Vs+:9%qgeWpnp^Oeqge]ts+:6&s+CB+re>NMLkpnEMMmCON/`jYO-#KeP*;,q
+Q'Rc(R$jD4S"6.BT:hmOUSO]^VPgAlWiE/&Xfen4Z*UdD[C3QS\[oDc]tV7s_8=+.`Q#s>ai_fN
+c-FV]dF$FmeCE1&f\,!5gtgfChr*JQj5]4^k2tjjl07L!rp0[Qmf)YUnF?MK!qZ'Vrq6<bs7cKe
+s7uZjqtp?irVc<dJcF0uJ,~>
+JcC<$JcFR+o`"jgrVZTjs8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0rd*L"]bK7iF`VXQDD=VTDD'F^gK7\W'I=-?dGBS(MEcH#8D/3p$BP1mf@q&kS?X@$5UAgkc
+UAUbjU7n6QT:VVHSGI1(E8kg9E;=GNDZ#q)R@'AuQh?[EQ2R$KQg\qkQ2m3HPl?sGQN!0FPjjt<
+QMs_\;?'Pm;u]hs<W6&!<rcA$=oVY*>Q.n-?2n71?NOVD@K'a9@f^+OrgEPKp6kWCnsfWK!1WnV
+pRV>Uph]nGr.b*&!2K@ar1j:f!2]XkrhfjsWN)uqX8f7%XfhW+!3Z='pTFCsrNH=-Zhp'bQg^7!
+Q2b"e=T;J#<WgOhbfft/s3:Shqp5;h!R]9ndKItEd*^8>dbU,[Ot1TqF`qtRH$XgbI=?ZrJV&N-
+KnbA=M2I4MN/`mZOHG]hPE_>tQC!u+R@=,E!h>gPrgj1`TV24VrM'4bpn[e^rM'4`s.K@`rgs.\
+s.'(Xs-`qUrg3bRQBqN8!L/fIOp@,2OH5H_NfF$s#E+IsM2@%EL])r/KnP-XKE$Q'JbsurJ+A'e
+J,=crJcC?$KE$T)L&QgKLPUbCM2I4LN/WaVO,oBbP*2#nQ'IZ%R$a;1S"#t?StD[LTqeEZV5C/h
+WN)u"Xf\b1Yd(O@['d?O\@K2_]Y2%o^qmn*`5Ta:aN;TJbg"GYd*^7ieC<%#f@\d1gYCW@hV[8M
+ioB([jlY^gkiq?sli-5OmI'uB!V#XYncJFTo`"O`pAamcq#C0hqYU0gr;HTbrdk*ts*t~>
+JcC<$JcFR+o`"jgrVZTjs8)ckrqJ5Bp@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;Fg=k32
+f$r0rd*L"]bK7iF`U#\W4T7DcL4t83J:DupH?j^XFEDPCDf0E-CM@HpAS#@\@:3GK>u1Dor_NJf
+!`)Whr(lu^cT_=k!Ba-T:%D$Z:]4&g:]+&h:\.?Y:]4&e:]ETX4odhH55meC55e=P:\IWK:]+&h
+;?'Pm;u]hs<W6&!<rcA$=oVY*>Q.n-?2n71?NOVD@K'a9@f^+Oohb?Zp/:BWr)!Djs&/Vj!*&SP
+rC?]Ts&B"ss&8tur`9&#qH!Jps&]8(pK7;qr`]5(rET>+!*]5'!*mQAr)!Drs&f;&r)Wf9s)S-\
+"a"g,FE;O&F9$I^G5c^aGQN2<HiAEL<qKBBF*)PJGBeCZH[L6jIt3*%K7nr5LPUeEMi<USO,oBb
+P*2#nQ'IZ%R$a;1rgNtZSXobO!hZ-Yr1X(`r1j%_qkO+ar1X.`rh'1]s.01[rgWqV!1EhR!gf4=
+rfmMKPQ$^MOcYZcO,f6[req)?MMd7ILkpibL'!'^K`-Q'K)^E!JGjugIf4cnJH(3#K)UE&KE-`*
+L3/3,Ll$tGMi3OQNK0'\OHG]hPE_>tQC!u+R@9V7SXuFFTV8'SUnjiaVl6SpWiW>)Y->.8Za7$H
+[^WcW]">Vg^;%J"_Sa=2`lH0Bb0/#RcHaeadF6Upe^rF*g"P39h;-rFi8N\Uj5f=ak3(sml0@U6
+liHMArpKmWnc&(\oCV\Sp&Facp\jmeq>U6fqu-HkrUTr=s3gpt~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nh'D$n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC"dEp1`bK@rJ`l5j4^q[Rqr/Cc<NK*ptrK$H0,_q,-K7SQ%I=-?dGBS(LEcH#8D/3m#BP1me
+@q&kS?X@$uj5U$qs5F";s5=:Bhqm5GgtUQ:f_O.mOSk1;NrP1>OT(C@P5:=<O8tF=OT3Z-chu)f
+blu>7bK@rKr5eoY"NJL%`PprWr58N!rKdJMpQk]orkeTLrPJQOrPIp;r5/3Gn&56t!*fD,!+#N@
+rl+fRrl+fTrQ"cU!6P5]r5nu]s3(Gbs3(Gbr5niY"O"s2bKTq.prrc_rK$f:!3u."rn7A,r7q5+
+rS@Y6i8NYoj8\3Ek3(pkl0A01s6BXMq<[nDs6^$YnF5u?r5n?IouZgHouI)7s&](us&J"Ws2F<D
+rPeNLqSW<L,B@mJFa&%SH?spdI=HctJqJ]/L5(J?M2I4MNK0'\OHG]iPl?pOQC!u+R@=,Es-s([
+rLX%]s.K7_qkEq^qP*h[s.K@`rLX%[!1a"W!h,OFrg3bRQBqN8#F(F9P*1riOT(:ANfF$ss,-l7
+re^Z2!/LQ.s+UK+rIb-%s+1&trI=EfrI=]ps+13%re(6(s+UK-s+^T1reY`SMi<USNK0'\OHG]h
+PE_>tQC!u+R@9V8SXuFFTV8*TUnjiaVl6SpWiW>)Y->.8ZEppG[^WcW]">Vg^;%J"_Sa=2`Q-'@
+b0.uQcHab`dF-Lne^i@)g"P07gtgiEi8ESRj5]4_k3(sll07L!m-O--rpL-^naZ2@oCMVHrq6<b
+s7cKes7uZjqtpBjr;H3cJcF4!J,~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nh9P&n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC"dEp1`bK@rJ`l5j4^q[RqDJoGj!,hRKpMU"JrbhaQ,_q,-K7SQ%I=-?dGBS(LEcH#8D/3m#
+BP1me@q&kS?X@$5US@^\s.]Fd#GRobTV%gHSbS`ODtn;JDZFbSDuFYODu+GMDuX_RRf/ZSR.lsG
+R-^1/QMPXpEVc"$Q2HmHQ2d0LQN3?NQ26a6Q1gO@QiEBGQiD70>Q%e,?2U)`RJ<0GR/i]TRJ**?
+RfJuXS,AfNSH,8TC]K7cLAZc#UA^hiUnsobVZ!CoW2ZcmX8]1%Xfel,Y5PKsY55@$YQ;#8p6P`F
+mZujts&f;&qc<_s!mJj2rQP8d!6tMgrQkMjs3^bkrmC_ngQVAp,B@mJFa&%SH?spdI=HctJqJ]/
+L5(J?M2I4MNK0'\OHG]iPl?pOQC!u+R@=,Es-s([rLX%]s.K7_qkEq^qP*h[s.K@`rLX%[!1a"W
+!h,OFrg3bRQBqN8#F(F9P*1riOT(:ANfF$ss,-l7re^Z2!/LQ.s+UK+rIb-%s+1&trI=EfrI=]p
+s+13%re(6(s+UK-s+^T1reY`SMi<USNK0'\OHG]hPE_>tQC!u+R@9V8SXuFFTV8*TUnjiaVl6Sp
+WiW>)Y->.8ZEppG[^WcW]">Vg^;%J"_Sa=2`Q-'@b0.uQcHab`dF-Lne^i@)g"P07gtgiEi8ESR
+j5]4_k3(sll07L!m-O--rpL-^naZ2@oCMVHrq6<bs7cKes7uZjqtpBjr;H3cJcF4!J,~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nh'D$n*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?4
+f@AC"dEp1`bK@rJ`l5j4^q[Rqr&Xm@pcJ%/s#VH\L4k21J:;ooH?j^XFE;JBDf0E-C2%?oARo:[
+@:3GK>u+8o:B+,g:'+3f;#=&`:ujh=5O1K6:JUj_o1o6[!)EMhqG?]WqbR5er_NJVr'(6H5<o!.
+r_W;ap/'sKp/(3Ts$6WhrEK>.q,-WXqG@5jr_`GgmSWs[rDE8erAsd:njiXXs&J_mqcESqs&o>'
+rE9/(r*'5+>?h#1s'#J,qHEr)_GU>8s&](us&B,>EH:hqs)e6_rc\6as*+QiHN&9kI,7or<?lO+
+FEMeOG^=[_I=6TqJ:`E+KSG5:M2@+JN/`jYO-#KePEc'3"dYLBR$jEBS,\uYSc,/[TDtS]U&1S\
+U\^_]U&UebTDbA]SH,2YRf]%HRJrQTQ^3s:Pm<P;PEM)kOc]R'!KN0=N;ne9MZ/J4L]E50LAuu-
+K`-Q'K)^E!JGjuhIf4cnJH(3#K)UE&K`?c+LB!#/M#N6QMMmFPNK&sZO-#KeP*;,qQ'Rc(R$jD4
+S=Q7CT:hmPUSO]^VPgAlWiE/&Xfen4Z*L^C[C3QS\[oDc]tV7s_8=+.`Pom=aND]Lc-FV\dF$Ck
+eCE.%f\,!4gYCWAhr*GOioB([k2tjjkiq?slg4!*mf)Y\nF?&>o(2JFo`"O`pAamcq#C0hqYU0h
+r;?Nardk*us*t~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb47r.8o'u5=n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEg+_bK@oH`PfX0^V7@m\[])UZa-fqNr4t-O=#g>L4k21J:;onH?aXWFE;GADf0B,C2%?n
+ARo:[@:3GK?012/j8@m8iWA)shu;I9h;$c=g=cATooT39r/gr>!K`BAOT(C:P5LIBOSY+=OT*W,
+ci22pcd'h\c-4ARrlP)ZrPnuZ`PqbnrPe3Cs24`"q3UuEqnr<J!5\TMrkn]OmD8_;p;?@;qjmk[
+>[76Grl+fRrl+fTrQ"WQr5eu^ana*WanNsTbP03\OSb+=OS5sUYlEDWg\oq)h>Z7>hr*JQioB([
+jlYail29iGl2U#KlhBc@m/ZSRmfW(Lou[3Sr5n?IprW3MoZ-u5r)Wesr`%hU!lW'slc/nBpVcsH
+s2$C/F*)PJGBeCZH[L6jIt3*%K7nr5LPUeDMi<USNfT6`P*2#nQ'IZ$Q^F/.R[X5F!h>gPrLX%]
+rh/GJrh07_r1<qZs.'(Xs-itUrg3bRQBqN8#F(F9P*1riOT(:BNfB%tMunopMZ/G6LkgcbLAur-
+K`-Q&K)^E!JGaojIf+]mJH(3#K)L<'KS>-ZL(B&qLl$tGMi3OQNK0'\OHKO*A!<.BQ'Rf)R@9V7
+S=Q7CT:hmPUSO]^Vl-JmWiN5'Xfen4Z*L^C[C3QS\[oDc]tV7r_8=(-`Poj<aN;WKbg"GZd*^:j
+eCE.%f@\g2gYCW@hVd>NioB([jlY^gkiq?sli-5TmI'H3nF5uIncJFTo`"O`pAamcq#:*hqYU0g
+r;HTardk+!s*t~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb3V;q6o'u5=n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEg+_bK@oH`PfX0^V7@m\[])UZa-h5DZ=SJDYe2rM2-h=K7SQ%I=$9bGBS(LEH,o7Chmd"
+BP(gd@q&kS?X@$6Undg]rhKIe"JMK]T:c+S!1j"Wol'SD!,qaRs)IgQrGVOOr,2S)rL3\Qrg3_Q
+R/NBKR-L%0QM#:oEVl(!PlR'JQ2d0LQi36HPjan2QLgIAR/2%,>lC&fR/i]RRJ<0CRJ**;S,8`N
+SH,8VD#/qaLAZc%UAUbgUnsobrhoaori5jrri?.&Y5,3oY5GL$YQ;#8i0NDgs&],!r`/qsrlb>c
+s31Vjc-?75rQk8crm:_ormBG`q3!@NF*)PJGBeCZH[L6jIt3*%K7nr5LPUeDMi<USNfT6`P*2#n
+Q'IZ$Q^F/.R[X5F!h>gPrLX%]rh/GJrh07_r1<qZs.'(Xs-itUrg3bRQBqN8#F(F9P*1riOT(:B
+NfB%tMunopMZ/G6LkgcbLAur-K`-Q&K)^E!JGaojIf+]mJH(3#K)L<'KS>-ZL(B&qLl$tGMi3OQ
+NK0'\OHKO*A!<.BQ'Rf)R@9V7S=Q7CT:hmPUSO]^Vl-JmWiN5'Xfen4Z*L^C[C3QS\[oDc]tV7r
+_8=(-`Poj<aN;WKbg"GZd*^:jeCE.%f@\g2gYCW@hVd>NioB([jlY^gkiq?sli-5TmI'H3nF5uI
+ncJFTo`"O`pAamcq#:*hqYU0gr;HTardk+!s*t~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb3V;q6o'u5=n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEg+_bK@oH`PfX0^V7@m\[])UZa-h54T@M44=#c=L4k21J:;onH?aXWFE;GADf0B,C2%?n
+ARo:[@:3GK>u4An:]*uc:\R]H55%524p4\X:/+IY:&n)c:A[ia;#X8\:AI]b55meC5lO"H55nCQ
+:\@QJ:\IWR;#ir[62t3d;=IEU;>X8W;?'Jm;>jDe;u/QT47>]><;onk<rQ2#<rZ7u=Su;'=BSf+
+>5VV(>5qh*>lS%.=o_e*>5haC;?'_q<rQ+u<!RD`F)uACF)q5#!-J3_s)nBbrHA?gH$Xf7HN8BK
+<qTHFEcZ>FG'A1VH@($fIXcm!JqJ`1L51SAM2R=ONK0'\OcklkPa.N"QC!u+R@9TDRf]+NSc,/[
+TDkMHU&L_aTDY;\Sc>5ZS,\rWRJrQTQ^3s:Pm<P;PEM)kOc]R'!fi8"repo:MMhCi!f2VereCH,
+!/1<'rdt0$qgeTop3uphqge]ts+:3%!ec8]re:r=LkpnEMMmCON/`jYO-#M'P%0]?Q'IZ&R$jD4
+S"-%@StD[LU8+N[V5L5iWN*##Xf\b1Yd(L?['d?O\@K2_]Y2%o^VRe(`5T^8aN2KHbKS5Vcd:(f
+e'uq!f@S[/g=tE=h;7)JiSrnXjQ5OdkNM0plKeH9#4:jIn*oi:rpg-^o^r.Us7ZKerV6Bfs8)Wi
+rVZWmnc"+>eGk%~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb5kO[=o'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa$a;XfJJ#VkijE.#Nk:L4k21J:;onH?aXVFE;G@Df0B,
+C1q9mARo:[@:*AJk2tdejQ$$p$K0h!hVR)DgY1?5r7Ct2q2kK9rf[&=p6,66rfI#>!7Cems3C\j
+rQbVlc-=JUrQ>/^s2b)X#0+X$`5KX6rl4uWr58TSou-cps-EAFrKdE"oYUUFrPIs<r5/6Hm_nml
+s.0/-rl+fRrl+cSrl5#[rl=lVqT8c[s2k;`qT8HRr6+iYr/^o>rj(ss"5;Mah"]_*hZ;Zoro3t<
+#j(43kih9rlKeB5s6KCFq!A@Tn*fc9o(C,HqoJZVo#URIpW3!I!*B)!r`/qsr_qeUs2=oUqSr!C
+p;HgF,]e'LG'A.UH?sseI=HctJqJ]/L5(J>M2I4MN/`mZOHG]hPEc'3!LB)OQiWVDrgWqXs.0(Z
+rh'.^nY,oSrLa"Zs.0.ZrgWqVs-`kRs-NbOrfm_QPEV/mOcbb)O8k4?NW+n:MZAY6M>rA3L])r/
+KnP-XKDpK&JbjomJ,aunJ,4]qJcC?#KE$T)L&Qi,LO+c5M2I1KN/WaVNfT6_OcklkPa.N"Q^F/.
+R[]e:SXuFGTqS3UUnjlcVl6SpX/rG*Y->.8ZEppG[^WcW]">Vf^;%G!_SX40`Q$!?ai_fNc-FY^
+dF$FmeCE1&f\,!5gtgfChr*GPj5]4^k2tjjl07Kulg4!*mf)Y[nF?&>o(2JFrUp3a!;HEds7uZj
+qtpBjr;H3cJcF7"J,~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb5kO[=o'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa$a;XfJJ#Vkj9.qel:J-]3b9L4k21J:;onH?aXVFE;G@
+Df0B,C1q9mARo:[@:*AJV59u`U\geaU]7%kTqJ'NTDkD^Sc##XE;=GLE;jkPE;4GKE;"5MS,JfR
+RIZa2Qh?[;EqaSOQM6[EQN!6LQMm*JPjan4QLU=@R.b_(R.QgAQiNQRR/36ERdHUBSG8WTT)3?s
+L\HQ%UACYbV#R=lVuEXpW;rspX8]3pXnT!tYPPI(Z*`DSjcogIr)Wesr`&kqs2tDdqp#)bs3C\j
+rm1Vk"4,??ci2;kd/hS?oons0qigT6,]e'LG'A.UH?sseI=HctJqJ]/L5(J>M2I4MN/`mZOHG]h
+PEc'3!LB)OQiWVDrgWqXs.0(Zrh'.^nY,oSrLa"Zs.0.ZrgWqVs-`kRs-NbOrfm_QPEV/mOcbb)
+O8k4?NW+n:MZAY6M>rA3L])r/KnP-XKDpK&JbjomJ,aunJ,4]qJcC?#KE$T)L&Qi,LO+c5M2I1K
+N/WaVNfT6_OcklkPa.N"Q^F/.R[]e:SXuFGTqS3UUnjlcVl6SpX/rG*Y->.8ZEppG[^WcW]">Vf
+^;%G!_SX40`Q$!?ai_fNc-FY^dF$FmeCE1&f\,!5gtgfChr*GPj5]4^k2tjjl07Kulg4!*mf)Y[
+nF?&>o(2JFrUp3a!;HEds7uZjqtpBjr;H3cJcF7"J,~>
+JcC<$JcFU,o`"gfrqu]ks8)ckrqQNf!;?Eb5kO[=o'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa$a;XfJJ#VkiiF-AmY8L4k21J:;onH?aXVFE;G@Df0B,
+C1q9mARo:[@:*AJ;,L.dq+po`r(m)as$$HGq`Y!Er'(*EpceC9nim(:s%i\kqbHu`pJ1`aqb[5e
+n4rmWqEFmCpd"gCs%rAapJC'Lpe^BU!(6NJ"$od^;Z9P_:]OAl;#4&g;Ys>k;#aAm;"@Ha:f7-g
+pJ^rMr^luXoLJj[r`0##r)Wbtr`9&#r)ir$!*]>(!*];)s'#D)!*]A+!aJr6p0%H$_bgD8r)Wes
+r`&kq"EJR(Ec_5#s)\3^#'G$0F`hkNrce<drd"WmH@#6bnl>Hcoi38YFED\MGBnL\I!pEmJ:N6(
+K7nu6LPUeEMi<USO,oBbP*2#nrfmMMQi<?QR@=,Es.'+[r1<n[rLi\SrLj+]r1<qZrg`tWs-itU
+rg<_Ps-EYL#F(F9P*1riOT(=@NW>(<N;ne9MZ/J4L]E5/L'!'^K`-Q&K)^DuJGF]pIeeKiJH(3#
+K)L?%KE-`*LB!$TLl$tGMMmFPNK0$[O-#KeP*;,qQ'Rc(R$jD4S"-%@StMdNU8+N[VPg>jWN*##
+Xf\b1Yd(L?['d?O\@K2_]Y(tn^VRe(_o9U7aN2KGbKS5Vcd:(ee'umtf@S[.g=tE=h;7&Ii8WeW
+jQ5OdkNM0plK[^%m-X6?mg&@Pnac8BoCW"Ss7QHer:p<frqcNhrqu]mo)=4?eGk%~>
+JcC<$JcFU,o`"jgrqu]ks8)ckrV0+]p@e1Po^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*Bq\bK7iF`P]R.^V.:k\[T#SZa$a;XK&7tVPKu\T:VRBRJDpkMi!7EKnFu-Isl]kH?aXV
+FE;G@DJj9+C1q6lARo7Z@:*AIkN:q+jT4H&q;MD4rndn9h;$c=f_sFmOnOq<OnFn0OT:LAOU'=^
+dEp7dd*Vd<rltYkbfn8RrQ5,^rlG#X!65#Ws2P)Z!64uV!6"iTpVd)uq3L`@!1*T$otp[FrPIs<
+r5/6Hm_ndi!6"iTrl"`Rqo8KQqT/'Gp<*<VpWWVt!g'drrNcL0n$2oI!8RD+s5!e7iVha=jQ5Oe
+kl0fHlM^&KlMg,Cm.frPmdKZ8oCV_TaoBHSanNmLan3[La8K'<<W5tp;r[iU`;[aP`p^n@`;@Fu
+EccDGGB\:XH@('gIXcm!JqJ`1L51SAM2I4MNK0'\OHG]hPEc'3!LB)OQi`\ERf8fVSH#/WT)G;O
+T`(MZT)YA\SGerWRfAfTR/`KQQMm'MP`q=1Op@,2OH5H_NfF$ss,-l7re^Z2s+gT.s+UK+rIb-%
+rdjorn:1:bs+13%rIb-'!/:E,s+^T1reUZ5MuJZ[NK0'\OHGZgP*;,qQ'Rc(R$jD4S"6.BT:hmO
+U8+N\VPg>jWN*##Xf\e2Yd(L?['d?O\@K/^]Y(tn^VI_'_o9U7a2lBFbKS5VcHstddaZdsf%8R-
+g=k<;h;7&Ii8N\Uj5f=ak3(sml0@U$m-X6/n*fc8nc&(\oCV\Sp&Facp\jmeq>U6fqu-HkrUTr=
+s4%(!~>
+JcC<$JcFU,o`"jgrqu]ks8)ckrV0+]p@e1Po^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*Bq\bK7iF`P]R.^V.:k\[T#SZa$a;XK&7tVPKu\T:VRBRJC\HMi!7EKnFu-Isl]kH?aXV
+FE;G@DJj9+C1q6lARo7Z@:*AIVPU-gV#R4gUA^keUApngTV%kUScG>\SFUXmE<'tNEVj_JDuQ7(
+RerNPR/`TKR/!$JR/`NPR/E<FQN)"$EVa_REVc!tQ2R$KQi366Q2$[9Qi3<EGP%<qR/36ERdHUB
+SG8WTT)EKrL\HQ'UA:PfUnsobVl0Nms/Pssr2fXps0)7$!3c7'"L58<[$^iZig08&qj.#BrDrnt
+r`&bn!6bAd!6kDdrltMir6>AicHc11o98a.rKHf8-$"*LFa&%SH?spdI=?ZrJV&N-KnbA=M2@+J
+N/`jYO-#KeP*;.0Pl[2;rg3bTR[X5Fs.'+[qk!bYnY#iQqO[_Xrg`qVs-itUrg<_P!1*SK!gJn4
+rfRMKOH>NaNfK+uN;ne9MZ/J4M#W80LAuu-K`-Q'K)U>tJFJ'bJH(3#K)L?%KE-`*LB!#/M#N53
+MMqImG`@`EO-#KdP*2#nQ'IZ%R$a;1S"#t?StD[LTq\<XV5C/gW2ZetXKAV.YctC<Za@-K\%&uZ
+]=bej^V@S$_Sa@3`lH0Bb0/#RcHaeadF-Ooe^i@)g"P07h;-rFi8ESRj5]4^k2tjjl07L!m-O--
+mdKW6nF?MK!qZ'Vrq6<bs7cKes7uZjqtp?irVc<dJcF7"J,~>
+JcC<$JcFU,o`"jgrqu]ks8)ckrV0+]p@e1Po^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=b-1
+e^W'qd*Bq\bK7iF`P]R.^V.:k\[T#SZa$a;XK&7tVPKu\T:VRBRJArlMi!7EKnFu-Isl]kH?aXV
+FE;G@DJj9+C1q6lARo7Z@:*AI;Gg<j;#3uc:Adoa;#WZO5Q<qB56*n?5P@;;4oS:X:B4/^:\[]b
+:]=2e:]F2h:\@K^:]EWS4o[_F5Pm\I5>Y2J:\diN:\[cS;>!<U;ZBVo;#=,^;#=)i;#=,c;".?[
+;YO,g3r;PG8cM?U8,cNe<WH5#<r?%u<rZ8#=T2J$>5q_,>$G51>5_V">5qb%>5qe->Z:W"!`;in
+b#/+<r`/qsqc!K7!-/!Y!-A$Z!-S9arce<dqg.j7nl>Neoi3;YFEDYLGBeF[H[U<kIt3*%K7nr5
+LPUeDMMmFQNfT6_OcklkPl?pKQC%T<!h#LGrgWqXs.0%YrL`VQrL`qXs.0.ZrL<hUs-`kRs-E_O
+rKRGKPEZ!/#Eb+0O,o<]NW+n:MZAY6M>rD3L]3&.L&Zi)KE$Q&JbjodJ,4]qJcC?#KE$T)L&Qi,
+LB*/0M#iKlreu)]NfT6_OcbfiPE_>tQC!u+R@9V7SXuFFTV8'RUSO``Vl-JmWiN5'Xfnt5Z*L^C
+[C3QS\[f>b]Y;.q^r!t+`Poj;aN;TJbg"GYd*^7heC<%"f@\d1g=tH>hV[8LiSrnXjQ5OdkNM0p
+lKdg'mI'E2n*oi:rpg-^o^r.Us7ZKerV6EgrqcNhrVZWmo)=4?eGk%~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`l5j4^q[Rq]",;XZa-g=XfSP%Vkp2`Tq@pHS!fV.P`h/iNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEH#f4Chm`uB4b^c@U`_P?X;jXroX7Bs5a+<ro*q:rne+?h;$f>f[n`;Ockn$Om8+u
+OoCFDda?J>d/2,gc2Z#dbQ#]daiMR$a8X*Va8a0T`VROQQg9t:_tCnD_Z7R?_>M1H_uI[L`VIIE
+T)Q\-`W*mS`V[[Oa83mFan3aRbPB?`NK0(s[/@9.ZLtI(gYCT]h>c=4hr+Im"QSS*kNMp0s6BCF
+p?_VB#O_'Lnac;Ep?Tj!aR[ICaSa*Y<rQ+u<;KPm;WRiX_u.IP`VRUG`;mpU`VRON_^9DFFEMbN
+G^4U^I!pHnJ:N6(K7nu6LPUeEMi<USNfT6_OcklkPl?pKQC%T<s-WkUrL<hWrgikVo:PfLrgj(Z
+r1!_Ts-`hQ!gf4=rg!MJ!0dAE!g/S+rf7,@NK*pr!fMqnre^Z2!/LN-s+UK+rIb-%rdjlqoRH[e
+rdk*$rIb-'s+UH,H&%33M2@+IMi<USNfK0]OHG]hPE_>tQC!u+R@9V7S=Q7CT:hmOU84T]VPg>j
+WiE,$Xf\e2Yd(O@['d?O\@K/^]Y(qm^VI_'_o0O6a2lBFbKJ/UcHjncdaQ^rf%8O,g=k<:h;-uH
+i8N\Uj5f=ak3(sml0@U6liHMArpKmWnc&+Zo)SF]o`Fj]p\agdq>^<gqu-HjrUTr=s4.."~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`l5j4^q[Rq]",;XZa-g=XfSP%Vkp2`Tq@pHS!fV.P`h/iNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEH#f4Chm`uB4b^c@U`_P?X9P+rh]Xjs.fOerM0Ces.KFcrh'4^s./_"l>cH8q/?8%
+qjR2G!goCDqj@8IpmCrFqNh&"p2TqL!-.b!rg!8EkEYn0n<a-AoQTqqoU,KCq3pQ;r1*VS!1s1+
+mYCRlpnJ.kV5:&eVl6PnWV`anXST'uY5YX'Y5PR#YQ_;;Za?*erg2W1oTf6<r0@:_r`/qsqG[Ak
+!mSs4rlkAd!7(Sgs3CSfrltMir6>>hP4Fh.P5UU9OsY3jFEMbNG^4U^I!pHnJ:N6(K7nu6LPUeE
+Mi<USNfT6_OcklkPl?pKQC%T<s-WkUrL<hWrgikVo:PfLrgj(Zr1!_Ts-`hQ!gf4=rg!MJ!0dAE
+!g/S+rf7,@NK*pr!fMqnre^Z2!/LN-s+UK+rIb-%rdjlqoRH[erdk*$rIb-'s+UH,H&%33M2@+I
+Mi<USNfK0]OHG]hPE_>tQC!u+R@9V7S=Q7CT:hmOU84T]VPg>jWiE,$Xf\e2Yd(O@['d?O\@K/^
+]Y(qm^VI_'_o0O6a2lBFbKJ/UcHjncdaQ^rf%8O,g=k<:h;-uHi8N\Uj5f=ak3(sml0@U6liHMA
+rpKmWnc&+Zo)SF]o`Fj]p\agdq>^<gqu-HjrUTr=s4.."~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*fZ1m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oH`l5j4^q[Rq]",;XZa-g=XfSP%Vkp2`Tq@pHS!fV.P`h/iNf8mQLk^V9Jq/?!
+I!U'^GBJ"JEH#f4Chm`uB4b^c@U`_P?X6Q-r_`\lqG7#aqbR/es$#m9rBBg;oKN(6r_WAcr_WJf
+peL]^!)E>coM5<Jp-&=;r]g!Mq,$6MqG@,fqbm/coL&UUoMP?Zqb[Dk;,R!_mns'^pJ_&PnOiaO
+r(-fWr`/qu!`rE'r)`hts&]5&r`SquqH<Vtr`T/&s',M.s&8\jhGO8KoMPWhr`/qsqG[Aks)J$Z
+rcA-]rcA-_rc\<cs*4Ngs*=Zjrd"QDq,R8lo2YWfp/NG[F*)PJGBeCZH[L6jIt3'$K7ei3L51SA
+MMmFPNK0'\OHG]hPEc'3!LB)OR/`QSRf/`USGo)TT(ATLT)P;\SG\lVRfAfSQi`V?QN!0LPQ6pG
+Oogc-OT(:BNfB%tMunopMZ/J4L]E5/LAuu-K`-Q'K)U>sJFn?eJGt-"K)L?%K`?c*L3\Q1Ll$tG
+MMmFPNK0$[O-#KeP*;,qQ'Rc(R$jD4S"-%@StD[LTq\?YV5C/gW2ckuXKAV.YctC=Za@-K\%&uZ
+]=bei^V@S$_Sa=2`lH0Bb0.uQcHab`dF-Lne^i@(g"P07gtgfDi8ESRj5]4^k2tjjl07L!rp0[Q
+mf)YUnF?MKs766_rUg6cp\4U\s7u]kqtp?ir;H3cJcF:#J,~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?EbFS,1qo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@mFR[BG,P`h/iNf8jPLPCJ7Jq/?!
+I!U'^G'.nIEH#f4CMRWtB4b^c@U`_P?=!Qnr9"%@roF+>ro+:Di8<GKh;$c<fTH#npQ=j+l]DA"
+da?LjdJhMlchl#fc2Z#ebQ#]daiMQqa8a0T`VmaNQi<<BQ2\\o_YV1L_XPD=_YV1M`:V%H`:KT#
+`;IUJ`qmaOaR@7Cb5BHYbQ*[u[/73'ZM_!-h#-".h?)TmiVqg>j5f=bkl0iGlM0]=m/$)VmdKW7
+o(2PJpWCY3amR4Ma8T*=<;KPl;Z9PSs8Tt@`5BL2`5T^k`pC\?`$iNDF*)PJGB\=YH@1-hIXls"
+JqJ`1L5(M@M2I4MN/`jYO-#KeP*;.0Pld8<Qi<?RR@9TBS,]#WSa2mGSc5/VS,\rWRJiNQQiEBN
+Q2d'KPPpXGOcY\(Nrk?$NW+n:MZAY6M>rD3L])r/KnP-WKDpK%JbXcjJ,"QnJcC?#KE$W)L&Qf3
+LPUbCM2I1Kreq#?NfT6_OoCMZPE_>tQC!u+R@9V7S=Q7CT:hmPUSO]^VPg>kWiE,$Xfek3Yd(O@
+['d?O\@K/^]Y(qm^VI\&_o0O6a2lBFbKJ/UcHjkbdaQ^rf%8O+g"P39h;-rFi8N\Uj5f=ak3(sm
+l0@R"m-O--rpL-^naZ2@oCMVHrq6<bs7cKes7uZjqtpBjr;H3cJcF:#J,~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?EbFS,1qo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@mFR[BG,P`h/iNf8jPLPCJ7Jq/?!
+I!U'^G'.nIEH#f4CMRWtB4b^c@U`_P?=!Q-r2'Fhq4mq`#,.]^St;LDmr7Z6m;W)Dqj[JOo9oKC
+rg3;Fqj78Irc@sWoPskNka(M!qNgN8oQC4YoU5B>q3h2Mk*u:=qOIYYD!-TOLAI\FV#R7rVPgAk
+WMuntrN#gsqlTe!p94@ts02X2ZaKb!qj6H2nWip9!1!O`s&AhnrDNVls3(Dcrlkbnc-=JWbfn>V
+bl5lecMc#fcMs'uPOjt:POt"cEcZ>FG'A.UH?sseI=?]sJV&N-Knb><M2@+JN/WaVO,oBbP*2#n
+rfmPNQ^@]=!h#LGr1!_VrLN8GrLNqXqj[VSs-`hQs-NbOrg!MJ!0dAE!g/S+rf7,@NK*prs,-l7
+re^Z2s+gQ-!el;\r.G!#rdjippj`'hrdk*$rIb-'s+UH,#D\+kM2@+IMuJY=NK0'\OHKO*CQk!J
+Q'Rc(R$jD4S"-%@StD[LU8+N[V5C/gWN)u!XKAY/YctC=Za@-K\%&uZ]=bei^V@S#_Sa=2`lH0B
+b0.uQcHab_dF-Lne^i@(f\,!5gtgfChr*JQj5]4^k2tjjl07Kulg4!*mf)Y\nF?&>o(2JFo`"O`
+pAamcq#C0hqYU0hr;?Nardk+"s*t~>
+JcC<$JcFX-o`"gfrqu]ks8)ckrqQNf!;?EbFS,1qo'u5<n*]T0m-Es$ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@mFR[BG,P`h/iNf8jPLPCJ7Jq/?!
+I!U'^G'.nIEH#f4CMRWtB4b^c@U`_P?=!P.r)*Jjr(m5cq+guSoKW:<s$-3@qEO@2s#g?Zr)!;e
+qG?u`oM53XpJ1KIoKE1;r_W>bpe^-LqG@,fr)35co0`OUr_`Jhs&&Meqbco\mnj<f;c?Xp;cH`o
+;ZJoB9)V<_86&[h<r,nq<rZ8#=T2Iu>5;=s>5h\%>5qh-?2[^q;WCXM:]OAl;#F2i<W?%p;uKVn
+;#kY9F8p@^Er^=]Fo?L_Gl2gkG^4R\HW3u@<V]\e<Vohk<@;g.FEMbNGBnL\I!pElJ:N3&K7nr5
+L5:\CMMmFPNK0'\OHG]hPEc'3!g]1>rg3bTR[X/Ds.'%Yl^n'Grg`kTs-itUrL!VOs-EYLs-*MI
+rK75EOHBI&!fi8"rf$l8!/gc4s+p]1rItB-KS98Urdt-#pji-hpji?ps+:3%s+LE+re:Z5LkpnE
+MMd>kN!53$O,oBbrfV&\Pa.N"Q^F/.R[]e:SXuFFTV8*TUnjiaVl-MoWiN5'Y-5(6Z*UdD[C3QS
+\[f>b]Y2(p^qmn*`5Ta:aN;TJbK\>Xcd:(fe'uq!f@S[.g=tE=h;7&IiSrnXjQ5OdkNM0plK[^%
+m-X6?mg/FQnac8BoCV\Sp&Facp\jmeq>U6fqu6NkrUTr=s4.."~>
+JcC<$JcFX-o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Eg=k32
+e^W'qd*L"]bK7iF`P]R/^V7@l\[T#SZa$a;XfJJ#VPKu\TUq^DR[BD+PEM#gNJraOLPCJ7JUi2t
+H[9s]G'%eGEGo`3CMRWtB4YXa@UWYO?=!Nmr9"%@roF+>ro+1Ai8EMLh;$caOnY%3OnFn%OTO(^
+e,7YodJ_Glchu)gc2PojbK@uLaN4%ps2OiQ!6"Jqrg*>Er58BJs24iSqnr<JoYLFAqSW?Oou6jI
+!2&hRrP\]SpW!'Mq8i$Ho?.!Sqof)c[I^d%ZhC^'h>Z:2hu;R<ioB+]kNMp0rTa1Ds6TaNqs=1H
+#k.9Qo(;VKq"Xj2fu`['!``3!qG[>jr)!Gjjo>4qrl"iUq8VjApr"e)F*)MHGB\:XH@($fIXcm!
+JqJ]/L5(J>M2@+JN/WdWO,oBbP*2#nPa.N"QC%Q;s-`nUr1!\UqORGRqORSTqj[VSrgE_Ps-NbO
+rg!MJs-*GFs,m>Crf7,@NK*prs,-l7rJ:T3LPPh_s+UK+r.G$$rdj3^s+10$rIb-'s+UH,s+^T1
+reUZ5MuJY9NK4"!G*%iLP*;,qQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdW2ZesX/rG+YHY79Za7$H
+[^WcW\\#Me]t_=t_8=+.`Q#s>aND]Lbg"GZd*^:jeC<%#f@\d1g>(N?hV[8LiSrnXjQ5OdkNM0p
+lKdg'mHs?1n*oi:rpg-^o^r.Us7ZKerV6Bfs8)WirVZWmo)=4?ec1.~>
+JcC<$JcFX-o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Eg=k32
+e^W'qd*L"]bK7iF`P]R/^V7@l\[T#SZa$a;XfJJ#VPKu\TUq^DR[BD+PEM#gNJraOLPCJ7JUi2t
+H[9s]G'%eGEGo`3CMRWtB4YXa@UWYO?=!N,r2'Fhq4mq`"JMK\T:Y7col958!1`hRqjR2Gr0RJN
+nsK<@!1*P(pi?%IjHf5!qNgoC!1*DH!-e!WopPK?q3h5NjI?(;qjd_Yn;%%"o8!:>r1s@is/,mr
+WW&prX8B!rXo#9pYPk[2Z*L^B['[6-Qi!0LQhZmEQ1L=5Q2$XH<E)ro;uKVl;#jGjbPo]dc-6.0
+qof/ebfn?2bQ,odP4Fh.OoU^<OtL`qFEDYLGBeF[H[L6jIt3*%K7ei3L51SAM2I4MN/ipZO-#Ke
+P*;,pQ'IZ$Qi3<ORK&`RS,SrSSb\lRSc,)US,\rVRJiNQQiEBNQ2d*KPQ$aFOoLOBNrk?$NW+n:
+MZAY5M#rKgL])u-L&Zi(KE$Q&J`_L_Jc:9"KE$W)L&Qi,LB*/0M#iKlrepl;NrG)_OHG]hPE_>t
+QC!u+R@9V7S=Q7CT:hmOU8+N[V5C/hWN)u!XKAY/YctC=Za@-K\%&uZ]=bei^V@S#_Sa=2`lH0A
+b0.uPc-FY^dF-LneCE1&f\,!4gtgfChr*GOioB([jlY^gkiq?slg4!*mI'H3nF5uIncJFTo`"O`
+pAamcq#:*hqYU0gr;HTbrdk+"s*t~>
+JcC<$JcFX-o`"jgrqu]ks8)ckrV1a6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vhqm2Eg=k32
+e^W'qd*L"]bK7iF`P]R/^V7@l\[T#SZa$a;XfJJ#VPKu\TUq^DR[BD+PEM#gNJraOLPCJ7JUi2t
+H[9s]G'%eGEGo`3CMRWtB4YXa@UWYO?<pM/;Z'Dl;#F)h:A7Q`54h(h55nFR;#X>i;#a>j;#a>`
+:AI]^:@g[L4TI\@4oA.P:\mo`:B45Z:\mod;>a>d;#j&U7.jIX;>3oa;=[QQ;?'Pj<;]Yp8`<;?
+<r#hr<rQ2!=T)D$>4u+r>5VP&>5h_->[:Y2;tX&R;=@<`;,pRpqG[>jr)!Gjrc8'[rc8']rcS3`
+!-eEe!."Hd!d]3?rD`Vnq,[)erDrYm/obrSFEMeOG^=[_I!pHnJ:W<)K7nu6LPUeDMMmFPNfK0]
+OHG]hPE_;sQ'R`&rL!VQs-ikTrg`hUq4@GRrLEbSs-iqTrL!VOs-EYLs-3PIrf[;Ds,d5@!fi8"
+rf$l8!/g`3!f2VerJ(?+s+L<&s+:6$k(*J_rdt*$s+LE+reCH.!/UW2!K)g7Mueourf;5aOcklk
+Pa.N"Q^F/.R[]e:SXuFFTV8'RUSO]^VPgAlWiE,$Xfek3Yd(O@['d?O\@K/^]Y(qm^VI\&_o0O6
+a2l?EbKJ,ScHjkbdaQ^qe^rF*g"P08h;-rFi8ESRj5]4^k2tjjl07L!m-O-,mdKW6nF?MK!qZ'V
+rq6<bs7cKerqZTjqtp?irVc<dJcF:#J,~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no+'fn*f]2m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH,o7D/3m#BP1mf@q&kS?XEWmr9"%@qrA"Bio/kSi8<AfOSt=<P5:=5P3A#1f%&:"
+r6t\o#LUuIdEp7dchu)gc2YujbK@rJaRmOQ`WF-!`r*gDQN3?JQ2SVs_Z.OM`;@IL_YM%E_YV1M
+`:_+I`;QA)TDbA[`;[aM`r*jYaN)?taR@7Bb5BH\bl>rd[J7--[JR?-Zi.30h>Q41i;_a>ioB+]
+kNMp0r9F"A!:'RLr9X@K$L[BPnalDGp@n@XrQ<g8n&YN.qc!Gkr)*Dhk5Y7prl"iUqSqX9.<9NP
+F`qtRH$XgbI=6TqJ:W<)KS>/8LP^kFMi<USNfT6_OHG]hPE_=2Pld8<Qi3<ORK&`PS,/ZPSbelP
+S,SlVRJ`HPQiEBMQ2d*KPQ$aFOT:LANrk?$NW+n:MuS\6M>rD3L]3&.L&Qc(KDpK$Ja%^aJc:9"
+KE$W)L&Qi,LB*/0M$o3!Mi<USNfK0]OHKO*BTn[GQ'Rc(R$jD4S"-%@StD[LTq\<XV5C/gW2Zes
+X0&M,YHY7:Za7$H[^WcW\\#Me]t_=t_8=+.`Pom=aN;WKbg"GZd*^7ieC<%"f@\d1g=tE=hV[8L
+iSrnXjQ5OdkNM0plKeH9!U]=SmfDqJrpp*\!;-6_s7QHer:p<frqcNhrqu]mo)=4?f)L7~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no+'fn*f]2m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH,o7D/3m#BP1mf@q&kS?XEW,r2'Fhq4mq`!hl9ZrGh4DoPs)6!hGjOoUGiKq3_;Q
+R@3E/r0Qnnpi-:Sjd,>"qNgoC!1*DHrHIpXopPH>qO.>OjI?(;qjd_YrJ:6(rJ:K/!/U6%s.fOg
+s/#ams/,stWN)uqX8K'uXnf-nY6D/8Z*L^Brj;^5qj7/Hs-N_Nop,9;o9K0<!gckcqc!Gkr)*Dh
+rQG/`"3Sa.b5KN`bQ,i^bkmRpPN@rVEccDGG'A1VH@($fI=HctJV&N-Knb>;M2@+JN/WaVO,oBa
+OcklkPa)04!g]1>rL!VQs-ieRqOIGRqOIANrgNkTr0[MNs-EVKs-3PIrf[;D!0I/?!fi8"rf$l8
+s,-f4s+p]1reCH,re16&rdt*"l%&bardt*$s+LE+reCH.!/UW2$]9k#N/WaVNfT6_OoCMWPE_>t
+QC!u+R@9V7S=Q7CT:hmOU8+N\VPg>jWN)u!Xf\b0YctF>Za@-K\%&uZ]=bei^V@S#_Sa=2`Q-'@
+aihlOc-FY^dF$FmeCE.%f\,!4gYCWAhr*GOioB([jlY^gkiq?sli-5OmI'uB!V#XYo)J:]o_nI_
+p&Ojbq#C0hqYU0hr;?Nardk+#s*t~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noF9in*f]2m-Es$ki_*jjQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY,nY&Vl$8bTqJ!IS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9bGBS(LEH,o7D/3m#BP1mf@q&kS?X?]2;uT\m;?'Ja:]!<R54h(n55J.S;#4&a;#a>a:A@W_
+:A@$H5PdSB;#3u`;#3ub;"@EY;#O8h;YO&Y7J0RY;>*ic;=IEQ;?'Po;u0Jk;tN]\9DV9X9DqK^
+<WZ?'<r5qu<r,nt=T)A&>4bts>5;>$>5qh)>kCtg;XdQM;#aMl;uKVl;>j;qF)l;BF*)O&FTQ`1
+GQ)ggGBe?1GlE$d<;KVk<q98i<qfTCEccDGG'A1VH@($fI=HctJV&N-Knb>;M2@+JN/WaVO,oBa
+OcklkPa)04!g]1>rL!VQs-ieRqOIGRqOIANrgNkTr0[MNs-EVKs-3PIrf[;D!0I/?!fi8"rf$l8
+s,-f4s+p]1reCH,re16&rdt*"l%&bardt*$s+LE+reCH.!/UW2$]9k#N/WaVNfT6_OoCMWPE_>t
+QC!u+R@9V7S=Q7CT:hmOU8+N\VPg>jWN)u!Xf\b0YctF>Za@-K\%&uZ]=bei^V@S#_Sa=2`Q-'@
+aihlOc-FY^dF$FmeCE.%f\,!4gYCWAhr*GOioB([jlY^gkiq?sli-5OmI'uB!V#XYo)J:]o_nI_
+p&Ojbq#C0hqYU0hr;?Nardk+#s*t~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?EbFS,1qo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^q[Rq\[])UZa-g=XfSP%Vl$8aTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?"
+I=$9bGBJ"KEH#i6Chmd!BP(gd@q&kS?XETlr9""?r8\(Bio/kSi8=3hrK7&As,l]3m?%J%f%0iN
+s4$tqrmLhorQtPi!7(Sg"jG04aiMQra8<mV`W);)R.-I@QN!0L_Z7XR_u@OP_tM%I_u7IJ_>M1K
+_uI[S_uI[R`W!mP`VH2&TDtM^`;[aM`rF*OaR@7Ab5KN_bl>ogcF3DRrj;F-qm?=.s5!_3s53k8
+s5F.@jQGb+l20c@li$,Ili-8LmJlYTnH\XWp%S7Wq>1$3pW<6Pn]C[L!6OfQ!*&horDNPjqG?>S
+pr!-Mrl+`RkJ\okF*)PJGB\=YH@('gIXcm!JqJ]/KnbA=M2@+JN/WaVO,oBaOcklkPEc'3s-E\O
+rL!VQrgNJK!1`YMrL3_Rr0[MNs-EVKs-3PIrK75EOHBF%!fi8"rf$l8s,-f4s+p]1rJ(?+s+L<&
+rdt*"l[\qbrdt*$s+LE+reCH.!/UW2(lF60N/WaUNfT6_OcbfiPE_>tQC!u+R@=,E=IbqRT:hmO
+U8+N[V5C/gW2ZetXKAV-YHY:;Za7$H[^WcW\\#Me]t_=t_8=+.`Pom=aN;TJbg"GZd*^7heC<%"
+f@S^0g=tE=h;7&IiSrnXjQ5OdkNMp0$gR'Em-X6/n*fc9nc&(\oCV\Sp&Facp\jmeq>U6fqu-Hk
+rUTr=s474#~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?EbFS,1qo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^q[Rq\[])UZa-g=XfSP%Vl$8aTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?"
+I=$9bGBJ"KEH#i6Chmd!BP(gd@q&kS?XET+r2'CgqP4%a!MQ1_EUn)9EU@]HSt2GNSG8TNRfAfQ
+RK/cAR/`N>Er'bUQfaV'Q2d0KQi<<>Qi21-GP?:SRIlmCRJrZ8S,JlSSc"??M#N2+M"HK&U]%"g
+VZ3RoVu`ltq5aIqs/l(!pTOV$!jT&;rj;[4!4Mlmq3V&Is-NVKp6GK?n<O$>!LHd_;uKVl;>O,h
+b5TTab5]Qbb/qd)b5]Wkb0.uNb0.uPbKKdGnrr7".WTTPF`qtQH$Xd`I=6QoJ:W<)K7nr5LPUeD
+MMmFPNK0'\OH>TfP*;)org!MLs-N\Os-`kToU>iNo:,]IrgE\Os-NbOrK[DIs-*DE!g/S+rJq#?
+NK*prs,6o7re^Z2s+gQ-s+UK+r.G!#rIO9brIOs"rIb-'s+UH,s+^T1reVJLMi3OQNK&sZO-#Kd
+P*2#nQ'IZ%R$a;1rgR#[SXuIHTqS3UUnjiaVl-JmWiN5'Xfek3Z*L^B['d?O\@K/^]Y(qm^VI\&
+_o0O5a2l?Db0/#RcHjkbdF-Ooe^i@(g"P07gtgfChr*JQj5]4^k2tjjrojgUlg4!*mdBQ4nF?&J
+ncJFTo`"O`pAamcq#C0hqYU0gr;HTbrdk+#s*t~>
+JcC<$JcF[.o`"gfrqu]ks8)ckrqQNf!;?EbGkCUuo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AGgY1?4
+f$r3tdEg+_bK@oH`PfX0^q[Rq\[])UZa-g=XfSP%Vl$8aTq@pHS!fY0Q'.8jNf8mQLk^V9Jq/?"
+I=$9bGBJ"KEH#i6Chmd!BP(gd@q&kS?X?Z1<)`cor)*GiohY6DrBBj<i'-m4!)WAdq+q&eohP6W
+s%`2Nq*=mCr]^<XqG6o`q+plaoM>K`rDEPjrDEJjpegKKp/:ofpe^ibnPJmUrDNSmrD`YmpIbEX
+r^uQNqc<;is&f8'!a&T-rE05+=^##.=TDY"=oV\*>Pqb*;Y<u\;Y<o]:]O;c:]OJl;uKVl;>O,h
+Er^=YFoHUbGlMsdGQ2pfGli;;H2CS:<Vfbe<W?+p<@W$1FEMbNGBnL\H[U<kIt3*%K7ei2L51SA
+M2I4MN/`jYO-#HcP*2#mPl?sJQN*<MR/`TRRe3'LSF`6KRf8`QR/`NQQMm*KPlHsGOogc-OSt4A
+NfB%tN;nh9MZ/J4M#W8/LAuu-K`$K%K)L8dJGk&uK)L?%K`?c*LB!#/M#N5JMMmCON/`gWO,oBb
+OcklkPa.N"Q^F/.Rf8dYS=Q7DTV8'RUSO]^VPg>jWN*##Xf\b0Yd(L?Za@-K\%&uZ]=bei^V@S#
+_Sa=2`Q-'@ai_fNc-FY^dF$CleCE.%f@em3gYCW@hV[8MioB([jlY^gkl0fSlKdg'mI'E2n*ol;
+rpg-^o^r.Us7ZKerV6EgrqcNhrVZWmo)=4?f)L7~>
+JcC<$JcF[.o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@pGR[BG,P`h/iNf8mQLk^V9Jq/?!
+I!U*`GBJ"KEH#f5Chmd!BP(gd@q&kS?XEQkqrRq@k5=<DjQ#:[iU`01Ol;JpOTO1efDX;#ebmnt
+e("<Es3_>'d*L"_c-=JUb/qcHoZ-mLqO%8MqO%#Drg*N$qSVjA!5nfQqSE'GrPSQOqo/QSpr2Zo
+rl"iUpW!6Ro>p=@oud3UrQP>fqmPUos0Vd]s53k7s5F.@jQ5V)l2']AlhTiElN$;Nm0rFOnF?,B
+p%S7WqYU3fb4s*OaS*a@aS]!8;Z0Jd;!7lP_uI[S`VRU=`?oVHFED\MGBeF[H[L6jIt3'#JqJ`1
+L5(J>M2@+JN/WaVO,oBaOoCLFPE_=2Q2d0MQi*6MRJiTCS,JfSRJWBNQiEBMQ2d*KPPp[EOoLOB
+O8k7?NW+n:MuS\5M#rKgL])u,L&Zi(KDpK$Ja@pdJc:9!KE$W)L&Qi,LB*/0M>rG5MuJY9NK4"!
+"d"k0P*;.0Q"H>KR$a;1S"#q=St;RITqS3UUnjiaVl-MoWiN5'Xfek3Z*L^B['mEP\@K/^]Y(qm
+^VI\&_o0O5`lQ6Cb0/#RcHaeadF-Lne^i@(f\,!5gtgfChr*GOioB([jlY^gkiq?sli-5OmI'uB
+!V#XYo)J:]o_nFap@n=Zq#C0iqYL*gr;?Nardk+$s*t~>
+JcC<$JcF[.o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@pGR[BG,P`h/iNf8mQLk^V9Jq/?!
+I!U*`GBJ"KEH#f5Chmd!BP(gd@q&kS?XEQ*qkX=hV>R.gU]7(eEr'eME92*2DuuZ'T)G5[SG&HG
+RK/cAR/1k&F7OALEW)1'Q0Xb0Q2-a0Qi;7"GP@NtR/36MRdusIRe<0JSG\rTMZ8P'M"QQ&U]7.i
+V>dCmVu`ltq5aIq!3Q.$!3Q7'!3c@(r3$L4Z*L^B['[6L[^WaBQLgI?QM-UAQLU7?QMa\[;Z0Jd
+:]nk`b0'V'!6G/]rlP5aqo\r^q3(<4l&mB6F*)MIGB\:XH@($fIXcluJV&N-Knb>;Ll$tGMi<US
+NfT6_OHKO*!gAk5rg!MLs-NYNrgE_Rn!j9ErL*PMrg3YNrK[DIs-*DEs,m>Crf@)>s,I#:s,6o7
+rJ:T3LPPh_re:B*r.G!#rIO<crdk'#r.G$&s+UH,s+^T1re^Z4!/pi8!KE-=Ns1W-P*2#nrfq)]
+Q^F/.R[]e:SXuFFTV8'RUSO]^VPg>kWiE,$Xf\b0Yd(L?Za@0L\%&uZ]=bei^V@S#_Sa=2`Q$!?
+ai_fNc-FV]dF$CkeCE.%f@\d1gYCW@hV[8LiSrnXjQ5OdkNM0plKeH9!U]=SmfDqJrpp*\!;-6_
+!quB_r:p<fs8)Thrqu]mo)=4?fDg@~>
+JcC<$JcF[.o`"jgrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5]+Vi83;Fg=k32
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfJJ#Vkp2`Tq@pGR[BG,P`h/iNf8mQLk^V9Jq/?!
+I!U*`GBJ"KEH#f5Chmd!BP(gd@q&kS?X?W/<)cfq;Ys;l:f7!a!)N&Hr]]s=j?EQ?rD<Mkr)!)a
+qbR8gp.k<WqEY$Gn3Ht;rD<Ggpe^c^qb[,bq,$c^r)3;er^HTMqF1-Vr_`VjpJLres%i;apJLle
+qc!Moq,@/_s%3/]nOraQs%E2ho2kro!*T8&r`T8)!*fD*!*Jqt!*]>*rET1sq,?`[p/1fcq+pud
+r_NGjrDNSkp.u':FEM_JFEM_LGPcR_G5umdGl`/6q,I/iqGui\-?=0LFEVkPG^=[_I!pHnJ:N3&
+K7nr5L51SAM2I4MN/`jYO-#HcrfR>HPa)04s-E\Or0[JOrL32ErL3\Qqj@ALs-EVKs-3PIrK@2C
+s,d5@s,R,=rf$l8s,-c3!f2VerJ(<*s+L<&rdt*"m"#(drdt'#s+LE+reCH.!/UW2s,$f7repl;
+NrG(COHG]hPEc'3AsSdNR$jD4S"-%@StD[LTq\<XUnsrdVl?\rX/rG*Y-5(7ZEpmE[^NZT\[f>b
+]Y2(p^qmn*`5T^8aN2KGbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRj5]4^k2tjjl07L!rp0[Q
+mf)YUnF?MKs766_rUg6cp\4U\s7u]kqYU9ir;H3cJcF@%J,~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no4-gn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,]*UM2-h=K7\W'
+I=-?dGB\1OEcH&9DJX*'BP;!hA7K(W?XI.6kPF?=jT=N'j7JH0OT:RDPN%c#OoO)6fDX;#ebmqs
+ec4,!ec+&"e'cVAc3MV<bK@rKaN4"o!li:$nsTBB!1E\N!13Z&qSVjArPJWPqn`3IrPSNNr5JWS
+q8M`or5JKOs2XlTs2Y)ZmE,"Cs3(Gd!6tJfq6o@l%Gfmui8ESRj5f=bkiq@-lMKoAlMg)\m-X3.
+n*oo=o_%qQq"adarVF\9aT0KZan<aJanWsWa83mV;uKVm;=dWJs7O;/`;dgP`p:SfEcZ>EFa&%S
+H$XgbI=6QoJ:W<)K7nr5L51SAM2I4MN/`ksNrb?)rf[;F!0mGIs-E\Oqj@;LnXBBDqO%8Krg*MJ
+s-3MHrK75EOHBF%s,R,=rf$l8s,-c3s+p]1rJ(?+s+L9%rdt'!n::Ffrdt'#s+LE+reCH.!/UW2
+s,$f7repl;NrG)YOHG]hPEV5rQ'Rc(R$jD4S"-">St;RITqS6WUnsrdVl6SpWiN5'Xfnt5Z*L^B
+[C3NQ\@K2_]Y(qm^VI\&_o0O5`lQ6Cb0/#RcHab`dF-LneCN7'f\,!4gtgfChr*GOioB([jlY^g
+kiq?sli-5OmI'uB#k7BSo()DDo^r.Us7ZKerV6EgrqcNhrVZWmo)=4?fDg@~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no4-gn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,]*UM2-h=K7\W'
+I=-?dGB\1OEcH&9DJX*'BP;!hA7K(W?XI.6VY[.eV#I.cEqjYPE8P[1E;uR1T)G5[SGerVSGSfO
+RfAfBR.>=qEWC1WEWC+XQMm*:QM-U>QMHjIR.?U>GkH:TR/iWQRJE6HRK&`IS,A`IS,JlTSb\0=
+M>)i"LBjTMUnsobVl0Nm!NE*sWr]<&r2]n#r3$%$q6'\"s02R1rj;^5"1G\K\G)<ZQi*0BPlR->
+Q2X_\;Z0Ja;#AB7a8j9ZaSX*Yao]]-bP.1jPO"AUEcZ>EFa&%SH$XgbI=6QoJ:W<)K7nr5L51SA
+M2I4MN/`ksNrb?)rf[;F!0mGIs-E\Oqj@;LnXBBDqO%8Krg*MJs-3MHrK75EOHBF%s,R,=rf$l8
+s,-c3s+p]1rJ(?+s+L9%rdt'!n::Ffrdt'#s+LE+reCH.!/UW2s,$f7repl;NrG)YOHG]hPEV5r
+Q'Rc(R$jD4S"-">St;RITqS6WUnsrdVl6SpWiN5'Xfnt5Z*L^B[C3NQ\@K2_]Y(qm^VI\&_o0O5
+`lQ6Cb0/#RcHab`dF-LneCN7'f\,!4gtgfChr*GOioB([jlY^gkiq?sli-5OmI'uB#k7BSo()DD
+o^r.Us7ZKerV6EgrqcNhrVZWmo)=4?fDg@~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no4-gn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?4
+f@AC"dEp1`bfe,L`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,]*UM2-h=K7\W'
+I=-?dGB\1OEcH&9DJX*'BP;!hA7K(W?XI.=;u]es;uKVj;>F&T4oIS:5Nb61;>!cY;>a8j:\[]X
+:\$gK5QF+H5QF%I;#O2b;#*oa;#3u`;#*ri;Gg<h;Ya2c7J0(C;Y!]b;#O2_;#*uf;Ya8k;ZB\q
+;Z'Jh9)M9[9)2-P9`.rj<s)K)='#,uqH3c#s'#D+!*]8&!*K,$!*]A+qcrknpf$c^nkoB_pJ:ce
+rDNSko2,@,"*Jd1Fo$:]G6<)8H$K=4pJguhq,Zf],'%aHFEMeOG^4U^I!pElIt3*%K7ei2L5(J>
+M2@+JN/WaVrf7)AOoCODP5pjGQ2d0MQi!0JRIQaDRJN<MQi<<LQ2d*JPPpXGOcY\'O8k7?NW+n:
+MuS\5M>rD3L])u-L&Zi'KDpK#Jae3fJc:9!KE$W)L&Qi,LB*/0M>rG5MuJY9NK4"!E0-3FP*;)o
+Q'IZ%R$a;1S"#q<SXuFFTV8'SUnjiaVl-JmWiE,$Xf\e2Yd(L?ZaI6M\%&u[]=bei^V@S#_Sa=2
+`Q$!?ai_fNc-FV\dF$CkeC<($f@\d1g>(N?hV[8LiSrnXjQ5OdkNM0plKeH9!U]=Smg/FQnac8B
+oCV\Sp&Facp\jmeq>U6fqu-HkrUTr=s4@:$~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=-?dGBS+NEcH&9D/=!%BP1pgA7B"V?XI.'pZM;5s5a7AooT'5g628o!87A(rn%/#o[OK%e'cUh
+cHa\Zbfe/OaiMQpa7>YgR/Ou"_t(bE_uIUN_>M1K_u%CD`W!mDT`2q*`rF*VaSX$VaT'B^aSEsX
+aSX*Qb5]Zabl>rdc2b?L[d1?u[LBS#hr*JPioB+^kih:+lMTrKlKS'.s6C9`mI'E2nac;Ep\=R\
+qu$EkbO`mPan3[Janj*Wa8X-[;uKVl;=RKHs7jM3_Z.OQ`;dgP`pCYbEccDGG'A1VH?spdI=?Zr
+J:W<)KS>/8LPUeDMMqIm!KE-=Nrb?)rf[;Fs-3JIs-EYNpmC]ApR(oGrg*JIs-3MHrK@2Cs,d2?
+!fi8"rJ^c7s,-c3s+p]1rJ(?+re13%rIXrunppXhrdt'#s+LE+rJ(?-!/UW2s,$f7repl;NrG(?
+OHKO*"d>19Q'Rd9Qu8=\S"#q=St;RITqS3UUnjiaVl-JmWiE/&Xfek3Yd(L?['d?N\%&u[]=bei
+^V@S#_Sa=2`Q$!?ai_fNc-FV\dF$CkeC<%#f@\d1g=tE=hV[8LiSrnXjQ5OdkNM0plK[^%m-X6/
+n*fc9nc&(\oCV\Sp&Facp\jmdq>^<gqu-HjrUTr=s4I@%~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?EbFnG:ro'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=-?dGBS+NEcH&9D/=!%BP1pgA7B"V?XI.5VY[.hU][HhUndj.no=JEhf/^:EH1rLrgs+[pRM/N
+r0mSPm[3-X!-8'[s-NbOqN^W;oTf9=m$I^=m!&&hpmCuIrgEnXR[X&Aq3prFr1*bW!1rtConiO$
+reLB,",E\JV>d=qVl6PnWN,ls!N`F%XT,F%Y5>@"Y5bX(Y5b[7Yd(I>['d<M[^W`U\X3/Yl^.L7
+k`l-HrDNPjnPB;/aN4A$rl4uY"3AU+aSO![b0A9+P4Fh'Or\RbFEMbNG^4U]H[U<kIt3'#JqJ`1
+L5(J>M2@+Jrepl;NrG(?OHKO*s-*JIrK[DKrg3DIoU5H@rKmMLr0@;Hrfd;Ds,m>CrJq#?NK*mq
+s,6o7rJCQ1s+gQ-s+UH*r.Fs"r.4Ehr.4j!r.G$&s+UE+s+^T1re^Z4!/pi8!KE-=Nrb?)rfRGK
+Pa.N"Qi<@iR@9V7S=Q7CT:hmOU8+N[V5C/gW2ZesXKAV-YHY79ZEppG[^NZT\[oDc]Y2(p^qmn*
+`5T^8aN2KGbKS5VcHjncdaQ^qe^rF*g"P07gtgiEi8ESRj5]4^k2tjjl07Kulg4!*mdBQ4nF?&J
+ncJFTo`"O`pAamcq#:*hqYU0gr;?Nardk+%s*t~>
+JcC<$JcF^/o`"gfrqu]ks8)ckrqQNf!;?EbFnG:ro'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@oI`l5j4^q[Rq]",;Y['R$AXfSP%Vl$8bTqJ!JS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=-?dGBS+NEcH&9D/=!%BP1pgA7B"V?XI.:;ufkq;Yj8j;#O8Q4oIS;5P.,>4o.>B;=RKV;?'Jk
+:\dcZ:]EZX5kmY=5lX(J5lFOY:\R]^:]!u`:\mo];=mcQ7/0[R;>j>g:\@Q[;?'Pj;ts8h;uK;g
+9DqKY8cD?Z9D)!X<rH)#<`f9$qcESq!EiV(>6J,4=]ei*=Su;&>$Ll/s'>Funl,B_l;@RXqbI2j
+rDNPjnPK1+rH/0bF`mY+!-eBd!-\?c!-n3:qGm>llr>'HFEDYKGBeCZH@('gIXcluJV&N-Knb>;
+Ll$tGMuJY9NK4"!!K`HCP5gaGPl6mIQN!6GR.Qg@R/NBNQMd$JPl?mFP5g[EOSt4ANfB%sN;nh9
+MZ&D3M#W8/LAuu,K`$K$K)C2jJGautK)C9$K`?c)LB!#/M#N82M?&S6Mueourf7)AOoCLIPE_>t
+QC%T<DOHr_S"-%@StD[LTq\<XUnsrdVl6SpWiW>)Y-5(6Z*L^C[C3NQ\@K2_]Y(qm^VI\&_o0O5
+`lQ6Cb0/#RcHab`dF-LneCE1&f\,!4gYCWAhr*GOioB([jlY^gkiq?slKdg'mI'E2n*ol;rpg-^
+o^r.Us7ZKerV6Bfs8)WirVZTlo)=4?f`-I~>
+JcC<$JcF^/o`"jgrqu]ks8)ckrV1a6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9cGBS(LEcH#8D/3p$BP1pgA7B"U?XN'skkO?;k5ONDk4au6On=h:PNe8)OoO)7f_X4uf)=.s
+f)O5%e'ZOgrltbnbfe/OaiMQra8_UtRIcgF`;@IN_uR^K`;RUR_Yh7I_Z%IH`:q7N`p05j`rF*Z
+aS3aNaSEsXaSO$Sb5TTabl,fccMG$J[dgcu[f>:ciW\B'jlYdkpZh_Cs69UKq!.kE&FAfPn*ol=
+p%A(Tq>:*frVl`<o#ggNoZ6aJrQ+lVr_iYkmSN0Jqo&9Is2=oUo#CUHqSXFqF*)PJGB\:XH@($f
+I=?]sJV&N,KS>/8LPUeDMMqIm!KE-=NrkE*OoCODPQ-mFQ2d0KQg'n9Qi36JQ2[$JPPgUDOoLOA
+O8k7?NW"h9MuS\5M>rD3L])u,L&Zi'KDgE!Jb=QkJc12uKE$W)L&Hc+LB*/0M>rG5MuJYCNK0$[
+O-#KdP*2#nrfqAeQ^F/.R[]e:SXuFFT:hmOU8+N[V5L5iWN)u!XKAV-YHY7:Za7$H[^NZU\[oDc
+]Y;.q^qmn*`5T^8aN2KGbKJ/UcHjkbdaQ^qe^i@)g"P07gtgfCi8ESRj5]4^k2tjikiq?slg4!*
+mI'uB!V#XYo)J:]o_nI_p&Ojbq#C0hqYU0hr;?Nardk+%s*t~>
+JcC<$JcF^/o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9cGBS(LEcH#8D/3p$BP1pgA7B"U?XNH&pS@kcrc7@Fqf(M6rGqn1rLa(\rLN_RrgWhSrL*/B
+i,\sdQBqE5rK[GKoTo*6rg)o;rg;tpoU5`Hs-`ePr0dGNq4%/JopblLrgi_>oni3ps/#am!2ogp
+s/?!urMoq"riQ4%riQ4'qQ9b"rN6+&$*US;ZEppG[^N[E\,a);QN3?5Qi!*8Q2X\Z;=79\a8<jV
+a8F$XaT0E]aTBZ1d-["ePPLC?OWJOaFEMbNGBeF[H[L6iIXls"JqJ]/Knb>;Ll$tGMuJY9NK4"!
+!g&P,rf[;Fs-3GHs-EVMl'VF9rKdAHrfmGHr0%)Bs,d2?s,R,=rJ^c7s,-c3s+p]1rJ(<*s+L9%
+rIXotomlskrIXs"s+LE+rJ(?-!/UW2s,$f7req5ENfK0]OHGZgP*;.0Q#;nSR$a;1S"#q=St;RH
+TV8'RUSO]^Vl-JmWiE,$Xf\b0YctF>Za@-K[^WfX]">Vf^;%Fu_8=+.`Poj<aN;TJbK\>Xcd:(f
+e'umtf%8R-g=k<:h;-rGi8N\Uj5f=ak3(pkl07L!m-O-,mf)YUnF?MKs766_rUp3a!;HEds7uZj
+qtpBjr;H3cJcFC&J,~>
+JcC<$JcF^/o`"jgrqu]ks8)ckrV1^5p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+^bK@oH`PfX0^V7@m\[])UZa-g=XfSP%Vkp2`Tq@pHS!fY0Q'7AmO,]*UM2-h=K7SQ%
+I=$9cGBS(LEcH#8D/3p$BP1pgA7B"U?XNV.!)rhop/0j5pceX@oKN%5!']aGq,./grD3;cp.t?G
+qEXX:!)WVinPK6]qbZr]r_W8boht'Cpepobr_WSis%`Gepe^farDNSmohtcfqb$o_r(Hu\q+:TY
+qFgZYs&T/$qH!MqpfIQ">5_Y,>$5#,=T;J&=T)A(>$G51>Q\8<?![,$nl,B_l;@OW!)NSlr))lY
+rH.pZ!-\?crceKgG'<h.m8`^Xoi3&RF*)PJGB\:XH@($fI=?]sJV&N,KS>/8LPUeDMMqIm!KE-=
+NrkE*OoCODPQ-mFQ2d0KQg'n9Qi36JQ2[$JPPgUDOoLOAO8k7?NW"h9MuS\5M>rD3L])u,L&Zi'
+KDgE!Jb=QkJc12uKE$W)L&Hc+LB*/0M>rG5MuJYCNK0$[O-#KdP*2#nrfqAeQ^F/.R[]e:SXuFF
+T:hmOU8+N[V5L5iWN)u!XKAV-YHY7:Za7$H[^NZU\[oDc]Y;.q^qmn*`5T^8aN2KGbKJ/UcHjkb
+daQ^qe^i@)g"P07gtgfCi8ESRj5]4^k2tjikiq?slg4!*mI'uB!V#XYo)J:]o_nI_p&Ojbq#C0h
+qYU0hr;?Nardk+%s*t~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no4-gn*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[[Bm0CY-"b)W2HJfU7n3NS=5h3Q'@GoO,f0WM26n?K7\Z)
+IXQQhG^"=QF)l8=DJa0)BkV-jARo7Z?sd:=klBrBkPOEAk5^Y@OSY+.P5^[-P5ULCg&0M!fD*qr
+eHOIOda?FfrltVjbfe0.aT0EWa8VM+RdQU=R/Y&$_u7ON_u%CL_u.@K_YqCG`;%=N`p05h`q@CJ
+aT'B^aSa-[aSO$Tb5]Zbbk]KacFEPVs0hO,qmQC2s5=1BjQ5Oekiqj,rp0IHs6KXKrTb'^mI'H4
+o(;VKp\F^`rVc`pbl#ZQb506PaSX*VaSa*Y;Z0JY;!S)X`:h+K`;[aH`r3mR`#j#@FEMbNGBeCZ
+H[L6iIXcluJV&N,KS>/8LPUeDMMqIm!KE-=O8k:AOo:ICPQ-mEQ2R$FQhm*FQi*0HQ2[$IPPgUD
+OoLOAO8b1>NW"h9MuS\5M>rD3L\uo,L&Qc&KDgDtJbsuoJc12tKE$W)L&Hc+LB*/0M>rG5MuJZ\
+NK0$[O-#KdP*2#nPa.N"Q^F/.R[T_8S=Q7CT:hmOU8+N[V5C/gW2ZesX/rG*Y->.8ZEpmE[C3QS
+\[f;`]Y2%o^VI\&_o0O5`lQ6Cb0.uQcHab_dF-LneCE.%f\,!4gYCW@hV[8LiSrnXjQ5OdkNM0p
+lKeH9!U]=Smg/FQnac8BoCV\Sp&Facp\jmeq>U6fqu-HkrUTr=s4I@%~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no4-gn*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[[Bm0CY-"b)W2HJfU7n3NS=5h3Q'@GoO,f0WM26n?K7\Z)
+IXQQhG^"=QF)l8=DJa0)BkV-jARo7Z?sd:6VY6hdEoqB>E8P[4T`1S^T)G5USGScURf&TFR/V-c
+Erq\oQMZsGQMZs?QM6[DQL1%;R/D3tGOV$uR/EBLReWBJRfAlWReiNNSGo)ZMtW&#M=QK&V$Elq
+Vl6PnWN,ru!3H!us/u$s!3H1%s/u^4Z*L^C[C3QRrjVs=g6_`'n<O#OrDDlW!65#Wrl4rY!6>&Z
+s2P;aaihoRd-HkcPP^OAOWSUbFEMbNGBeCZH[L6iIXcluJV&N,KS>/8LPUeDMMqIm!KE-=O8k:A
+Oo:ICPQ-mEQ2R$FQhm*FQi*0HQ2[$IPPgUDOoLOAO8b1>NW"h9MuS\5M>rD3L\uo,L&Qc&KDgDt
+JbsuoJc12tKE$W)L&Hc+LB*/0M>rG5MuJZ\NK0$[O-#KdP*2#nPa.N"Q^F/.R[T_8S=Q7CT:hmO
+U8+N[V5C/gW2ZesX/rG*Y->.8ZEpmE[C3QS\[f;`]Y2%o^VI\&_o0O5`lQ6Cb0.uQcHab_dF-Ln
+eCE.%f\,!4gYCW@hV[8LiSrnXjQ5OdkNM0plKeH9!U]=Smg/FQnac8BoCV\Sp&Facp\jmeq>U6f
+qu-HkrUTr=s4I@%~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noF9in*f]3m-Es$l0%3kjQ#:Zi8<DIgY1?5
+f@AC"dEp1abfe,L`l5j4_8!^s]=GG[[Bm0CY-"b)W2HJfU7n3NS=5h3Q'@GoO,f0WM26n?K7\Z)
+IXQQhG^"=QF)l8=DJa0)BkV-jARo7Z?sd8><;onr<!#ur;YEuG4l\a)4mGl>;#jGj:]=,_:Z"A:
+;#O2V;#X>l;"mcb;"[]Y;ZB2_7.`kH7/9^\;>j>i;?'Gm:]*ub:\[cb;>O/j;uBPn;>*oa9DM9[
+9DhE\8cD?\9D_E_<WH4t<rH+p=T;P'>Q7k0=]ed-=Su8"=T;P(>5qh+?2e.1;t<iW;u'>W;?'Pm
+;<q'XFT-F]G5ZUbGl;gbG5upS<Us2b<?H7&FEMbNGBeCZH[L6iIXcluJV&N,KS>/8LPUeDMMqIm
+!KE-=O8k:AOo:ICPQ-mEQ2R$FQhm*FQi*0HQ2[$IPPgUDOoLOAO8b1>NW"h9MuS\5M>rD3L\uo,
+L&Qc&KDgDtJbsuoJc12tKE$W)L&Hc+LB*/0M>rG5MuJZ\NK0$[O-#KdP*2#nPa.N"Q^F/.R[T_8
+S=Q7CT:hmOU8+N[V5C/gW2ZesX/rG*Y->.8ZEpmE[C3QS\[f;`]Y2%o^VI\&_o0O5`lQ6Cb0.uQ
+cHab_dF-LneCE.%f\,!4gYCW@hV[8LiSrnXjQ5OdkNM0plKeH9!U]=Smg/FQnac8BoCV\Sp&Fac
+p\jmeq>U6fqu-HkrUTr=s4I@%~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?EbFnG:ro'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@rJ`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W'
+I=6HgG^":PF)c2<DJa0(BkV-jARf1Y?sd:<klBrCkPOEAkP^MCOSY+&P5ga-OoX23f_X4sf)=,&
+eC2jnd*M^:#0kB8b/qfIprE6!s-i;Br0[E#rkn]QpV[$LqnrHNs2"TLrknEIp;Q6gou?sN!6FuV
+ouR*R!6G#YrQ>)^!6k2^!7(SRp:'h*q6g./qmQdhjQ5Oekiqg+!:0LHrTjFIrp(-_mdKZ9o(;YM
+q"adarVlisrlk>am)o1Ho>pjOrQ+uYrDDcTlMpb"!5nKJrl+KKr5JTP)fg"AFEMeOG^4U]H[L6j
+It3'#JqJ]/Knb>;M#N53MMqIm!f`5#rf7,BOcfU*s-*GHqN^E5pm(iCrfd8CrfR5Br/^l<s,Hu9
+s,6o7rJCN0s+gQ-re:?)qh+fumXb:fr.G!%s+UE+s+^T1re^Z4!/pi8&<2^1O,oBaOcklkPa%Gu
+QC%T<ELE8bS"-%@StD[LTq\<XUnsobVl6SpWiN5'Xfek3Yd(L?Za@0L\%&uZ]">Vg^;%Fu_SX4/
+`Pom=aN;TJbK\>Xcd:(fe'umtf%8O,g=k<:h;-rFi8ESRj5]4^k2tjjl07L!lg4!*mdBQ4nF?&J
+ncJFTo`"O`pAamcq#:*hqYU0gr;?Nardk+&s*t~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@rJ`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W'
+I=6HgG^":PF)c2<DJa0(BkV-jARf1Y?sd9=oqqJ[iGna6k&LB@q4R_ZrLX"ZqOIST!1a%X!1NhR
+s-NeSpR(o"rc@aSnT4Vorg!GJpQbK=q3CrFop>TDrg3VOpj)CSn<s9CqjI;Lq4%#FrL<VQrgj%H
+p58L!nq[[MVPg>jWMuntX/rDtXT5NuXo,7-Xfeh1Z*CXA[C*IB[fX(M\^m,EQM$OA;<UjU`W*sX
+`rX9$qSrf]b0/&Vda[TGnrrs6rfJ.?F*)MHGB\:WH?spcI=?ZrJ:W<)K7nr5L51TaM#iKlrepo<
+NfO+"!g&P,rK@2Erfm8Em$@F3rfmDGr0%&As,d/>s,R,=rJ^c7s,-c3reUT0rJ(<*re10$r.=?f
+r.=j!re1<*rJ(?-!/UW2s,$f7reqDJNfK0]OH>TfP*;,pQ'IZ%rg7\nR[]e:SXuFFTV8'RUSO]^
+V5C/hWN)u!XKAV-YHY79ZEpmE[^NZT\[f;`]Y2%o^VI_'_o0O5a2l?Db0.uQcHab_dF-LneCE.%
+f@em3gYCW@hV[8LiSrnXjQ5OdkNM0plKdd&m-X6/n*fc9nc&(\oCV\Sp&Facp\jmdq>^<gqu-Hj
+rUTr=s4RF&~>
+JcC<$JcFa0o`"gfrqu]ks8)ckrqQNf!;?EbGkCUuo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bK@rJ`l5j4^q[Rq]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W'
+I=6HgG^":PF)c2<DJa0(BkV-jARf1Y?sd8>;cN`rrD`eq!)iPggHFR\l;7:R!)WShs%`8`hEV!8
+lVRRXrD<;cr_W8bp/:ZSr^?BGq,.)er)!Jk:]!ob:\moe;#sQlp/:fcp/:WXoM#9Xp.G3U!`iB(
+qc<\tpK.c*>$>-6>$4s0=',?$r`B)$s&oA*s'5S0ra#S'mSa$_r)3Aiq,6NUkYV;$rH/0bGBWq/
+!HrVaFour6H[Y3[nQ,Hc)fg"AFEMeOG^4U]H[L6jIt3'#JqJ]/Knb>;M#N53MMqIm!f`5#rf7,B
+OcfU*s-*GHqN^E5pm(iCrfd8CrfR5Br/^l<s,Hu9s,6o7rJCN0s+gQ-re:?)qh+fumXb:fr.G!%
+s+UE+s+^T1re^Z4!/pi8&<2^1O,oBaOcklkPa%GuQC%T<ELE8bS"-%@StD[LTq\<XUnsobVl6Sp
+WiN5'Xfek3Yd(L?Za@0L\%&uZ]">Vg^;%Fu_SX4/`Pom=aN;TJbK\>Xcd:(fe'umtf%8O,g=k<:
+h;-rFi8ESRj5]4^k2tjjl07L!lg4!*mdBQ4nF?&JncJFTo`"O`pAamcq#:*hqYU0gr;?Nardk+&
+s*t~>
+JcC<$JcFa0o`"jgrqu]ks8)ckrV1a6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+_bK@oH`PfX0^V7Co]",;YZa-g=XfSP%Vl$8bTqJ!JS!o_1Q'7AmO,]*UM2-h>K7\W'
+I=-?eG^":PF)c/;DJX*'BkV-jARf1X?sd7:klBrCkPOEAP5CCAO8tF*P5CI,P4mQ*fDF.ueHF@L
+da?D?c3MV<bKA#NaiOD#"3ANORf&TNRd-:B`5T^k`:UtI_YqCI_YqCF`:h15T_?Cta7[OPaT0E\
+ao0B\bPfZ`blH&eblH&f\Fm?%[K*`/[KYaRk3(smpZheEqWe(Gqs"g[m-X61nac;DpA"FZqu$El
+s8W&ArQFHJqT8?Ms2k5\!6>%8k"u'Vrr2utrVllsp](*.s24QKrPeEKrPe]Q*--+BFEMbNGBnL\
+H[L6iIXcluJV&N,KS>/8LPYqd!K)g7Muo!!NrG+>OT1IAP5^[EPiJ&-Pl?mDP5g[DOSk1>NrP+;
+N;eb8MZ&D3M#N2.LAlo+K_g?!K(+?hK):3#K`6])LB!&/M#N82M?&S6N"Cu/NfT6_OHG]hPEV5r
+Q'Rd9Qj&nHS"#q=rgm;cTV8'RUSO]^VPg>jWN)u!XKAV-YHY79Za7$H[^NZT\[f>b]Y2%o^VI_'
+_o0O5a2l?Db0.uQcHab_dF$FmeCE.%f@\d1gYCW@hV[8LiSrnXjQ5OdkNMp0$gR'Em-X3.n*fc8
+nc&+Zo)SF]o`Fj]p\agdq>U6fqu6NkrUTr=s4RF&~>
+JcC<$JcFa0o`"jgrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+_bK@oH`PfX0^V7Co]",;YZa-g=XfSP%Vl$8bTqJ!JS!o_1Q'7AmO,]*UM2-h>K7\W'
+I=-?eG^":PF)c/;DJX*'BkV-jARf1X?sd6<VtHq_V;6.kE8km2TE(V^T)YAXSG\lVRf/WUR$jB=
+QiibDF*%8"rcA'\q/uXXp2g5"q3LZ<q3LlBqNgoCr0[MNrKubnnX9BDr0dDMpm^oErL<bU!1j+Z
+rgitFp58L!o8!OHVl6Pnri-""XRiRoXT,C8XKAS*X/i>'Xfek3Z*L^C[C*IB[fX(M]@<2FQM6[C
+;<C[V`5T^m`W4'X`X'W,b082[e'jNGP4Xt7P5gXaEcZ>EF`qtQH$Xd`I!pElIt3'#JqJ]/Knb>;
+M#N53MMqIm!f`5#rf@)@s,m8Crfd>Gj-BS-rfd5Bs,m;Br/^l<s,Hu9repf6rJCQ1reLH,re:?)
+qLe]tn:CLhqh+p%re:?+s+gW1re^Z4!/pi8&<2^1O,oBaOcklkPE_>tQC%T<"dtgKS"-&KSm%bZ
+TqS3UUnjiaVl-JmWiE,$Xf\b0YctC=Za@-K[^WcW\\#Me]tV7r^r!t+`5T^9aN2KGbKJ/UcHjkb
+dF6Upe^i@(f\,!5gtgfChr*GOioB([jlY^gkl0fSlKdg'mHs?1n*oi:rpp*\!;-6_!quB_r:p<f
+rqcNhrqu]mo)=4?g&HR~>
+JcC<$JcFa0o`"jgrqu]ks8)ckrV1a6p@e1Po^qbGo'u5<n*]T0m-<j"kiV$hj5].Wi83;Fg=k32
+f$r0sdEg+_bK@oH`PfX0^V7Co]",;YZa-g=XfSP%Vl$8bTqJ!JS!o_1Q'7AmO,]*UM2-h>K7\W'
+I=-?eG^":PF)c/;DJX*'BkV-jARf1X?sd7>;ZKer<W,ns;ZK_k;;47n55n@D;#=,i;#O/i:A@Tc
+:f$^Jq*=L8s%hlUs&&Me!)NPiohkE\ogSjJp-\jWpe^lc"&Mcg:]4&e:\dic;?0Sg;Ys>i;?0Ym
+;X[9R9`7W\9)M?^=8Q%u=8#_t=^##.=TMW+r`9&!r`9#"s&f;(#[1G:>[1Q@?=2YhqG[2fn58=E
+!-J0^rH8<fG'8"NrH89fH@1,)<Us2e<?-%#FEDYKGB\=YH@($fI=?ZrJ:W<)K7nr5L51TaM#iKl
+repo<NfO+"s,d8CrK@/DrflH.rKR;Fqi^uArfI&=s,R,=rJ^`6s,-c3s+pZ0rJ(<*re1-#r.=Eh
+r.=fus+LB*reCH.s+pZ2s,$f7reqDJNfK0]OH>TfP*;)oQ'IZ%rg3kWR[]e:Sc53aT:hmOU8+N[
+V5C/gW2ZesX/rG*Y-5(6Z*UdD[C3NQ\@K/^]Y(ql^V@S$_Sa=2`Q-'@ai_fMc-FV\d*^7ieC<%"
+f@S[.g=tE=h;7&Ii8N\Uj5f=ak3(t-kmQeBm-O-,mdKW6nF?MKs766_rUg6cp\4U\s7uZjqtpBj
+r;H3cJcFF'J,~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noF9in*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+Isl]jH$=ITFE2A?DJj9+C2%?nAS#@\@:3GKkkaNDkkO??joCS<OT:LAOm\D*PO"D2g%X.sfDF/!
+eI'gTe'cXjcd'h\bl5cjb/q`FaN)?BrL<GJm@!jjr5AEKmDAh>q8E6Lr5ANPn=fTLou?gJn]:RK
+rlY2_q9/i`rm(GdqRH7.k-bKVkNM0plKe92rp0IHs6K^Ms69RKs6C0^mdTc;oCV_Lq"ad`rVlcq
+rltGdrlaKIqT86Js&%fQ"T85srr)iq"9&5trqHHi`;RUI`;R[J`r3mS`#!K:FEMbNGBeCZH[L6i
+IXcluJV&N,KSBD[!JcL1M#iKlrf$l:!07#=s,d8Cr0%&Cr06W7r07/DqNCi?s,d,=s,R,=r/CZ6
+s,-`2s+p]1r.b3)re1-#qh"Bir.=fure1<*rJ(?-s+pZ2s,$f7reu8bNfK0]OH>TfP*;)oQ'IZ%
+Q^F/.R[]e:S=Q7CT:hmOU8+N[V5C/gW2ZesX/rG*Y-5(6Z*L^B['d?N\%&u[]=bei^;%J"_SX4/
+`Q#s>aN;TJbg"GYcd:(ee'umtf%8O+g"P39h;-rFi8ESRj5]4^k2tjjkiq?sli-5OmI'uB!V#XY
+o)J:]o_nI_pAamcq#C0hqYU0gr;HTbrdk+&s*t~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noXEkn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+Isl]jH$=ITFE2A?DJj9+C2%?nAS#@\@:3GKVPg?bVYd4%EV?(*TDY8\SbelQRfJoRRJrQUR@'A0
+rH.jVqK2XXpN6CUqj72Gp6GE=qN^Z<s-NYNs-N_Pn9XhSl'_O>oUGlLrgW\OrL3eWrgj%Ys./b>
+qMP$(o8*FF!3,sts/Q.$or\(lqlBb!s/uU1ZEpmE[JmT8\@MRLe<g&uq3CtWj%ofp`PhSk%*$?0
+ai_lTdaHUnPEY9pooo99rfJ"<FEDYKGB\:WH@($fI=?ZrJ:W<)K7nsXL&m'creUZ5MuJ\8N<#";
+O8k=AOo1CAPPg[5Q2HmFPPUIAOoLO?O8k7?NVnb8MuS\4M>rD3L\uo+L&Qc%KDU8kJc(,sKDpQ(
+L&Hc+L]<20M>rG5MuJZ`NK0$[O-#HcP*2#mPa.N"Q^=),R@9V7S=H.AStD[LTq\<XUnsrdVl6Sp
+WiN5'Xfek3Yd(L?Za@-K[^WcW]">Vf]tV7s_8=(,`5Ta:aN2KGbKS5VcHjkbdF6Upe^i@(f\,!5
+gtgfChr*GOioB([jlY^gkih9qlKeH9!U]=SmfDqJrpp*\!;-6_s7ZKerV6EgrqcNhrVZWmo)=4?
+g&HR~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*f]3m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG[[Bm0CYH=n+WMcSgU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+Isl]jH$=ITFE2A?DJj9+C2%?nAS#@\@:3GKrDW_qs&Jtr!E2nn;#icP53b;g55S.K:]OAg;#=)i
+;"RNa:dFJ6nj*1=s%hcRs%rbml;@:Ro1&^Js$ZZM!)`GdrD<Pkp.tQ^s&&_m!)`JgqG@5jr_r_m
+k"G_Jqb-ZU!*B%us&\nrrE9/&!EW>!<W6#0='/R-=^#!5>[1Q??=.&Gr_qcRqG[2fp/0jH!-J3_
+s*+Hc!HiM`FoQUgG^=^aI=:<ZnlGWf(NX\?F`qtQG^4U^I!pElIt3'#JqJ]/L&Qf-LPYqd!K)g7
+N;nk;Nr>%=OT1I@P5^[CPjXh7Pl6gBP5^UDOSb+=NrP+:N;nh9MYr>2M#W8.LAlo+K_g>uK(=Kj
+K):3"K`?c)LB!&/M#N82M?&S6N.$\GNfT6_OHG]hPEV5rQ'Rc'R$a;1S"#q<SXuFFTV8'RUSO]^
+VPg>jWN)u!XKAV-YHY79ZEpmE[C3NQ\@K2_]Y(ql^VI\&_Sa=2`lH0Aai_fNc-FV\d*^7ieC<%"
+f@S[.g=tE=h;7&Ii8N\Uj5f=ak3(sll07L!rp0[Qmf)YUnF?MKs766_rUp3as7cKes7uZjqtp?i
+rVc<dJcFF'J,~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?EbGkCUuo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+IXQTiH$=FSFE2A?DJj9+C1q9mARo:[@:3I)kNDd,s60OIpu_Y>nWEg4r/pK3p64p-s4RJ+p"9/n
+r72J1eC;sqdEp4ccHXVXbKJ&Mao0<\SGJ`QRfAlURdZ[>`;mjP_tCn>_th7L_tV+2U%ZM'a7%+G
+ao9H^bPKH_c2Grcc2"m@\*:='kNV6rrp0FGrp0IH!pf.:rTOjYm-X3/nFH2Cp@e7UqYU6gs8(">
+bl5fGb5KH^a8j?WaP]kpqu-EqrVZWlrV$9g_Z[oq_o0L``V7CM`Vm^lEccDGG'A.TH$Xd`I!pEl
+It3'#JqJ]/L&Qf-LPYqd!K)g7N;nn;Nr>%=OT1I>P5LO6Pl$[?P5UOCOSb+=NrG%9N;nh9MYr>2
+M#N2-LAlo+K_g>uK(FQkK)1-"K`6](LB!#/M#E/3MMmDlN"q>4NfT6_OHG]hPEV5rQ'Rc'R$a;1
+rgR/_SXuFFTV8'RUSFW\V5C/gW2ZesX/rG*Y-5(6Z*L^B['d?O\@K/]]=bei^;%J"_SX4/`Q#s>
+aN;TJbg"GYcd:(ee'umtf%8O+g"P07h;-rFi8ESRj5]4^roOCIkiq?sli-5OmI'uB!q>aMrpg-^
+o^r.Us7ZKerV6Bfs8)WirVZWmo)=4?g&HR~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+IXQTiH$=FSFE2A?DJj9+C1q9mARo:[@:3H=rMKRlpnn"dqf'>jpRqGVrgs+[r1*SP!1NbP!1<\P
+s)n0[r,_jZqK;COpm:lDqN^*,s-NJIpj2X\q0MV"rL3bSr0m)DpmV5Ps.'%Ys.'(Zq2561p5Ad)
+qhb*(rJ:TSWiH'!s/c$u!j&N+r2fmuri,t!ri?7*YHY:;rj2g9[^WcWr4:UK!1<VLqNh&Ei(sNn
+`5KRl`W*j``lQ9Ec-Oebe'c\,P4k+:P5gX]EccDGG'A.TH$Xd`I!pElIt3'#JqJ]/L&Qf-LPYqd
+!K)g7N;nn;Nr>%=OT1I>P5LO6Pl$[?P5UOCOSb+=NrG%9N;nh9MYr>2M#N2-LAlo+K_g>uK(FQk
+K)1-"K`6](LB!#/M#E/3MMmDlN"q>4NfT6_OHG]hPEV5rQ'Rc'R$a;1rgR/_SXuFFTV8'RUSFW\
+V5C/gW2ZesX/rG*Y-5(6Z*L^B['d?O\@K/]]=bei^;%J"_SX4/`Q#s>aN;TJbg"GYcd:(ee'umt
+f%8O+g"P07h;-rFi8ESRj5]4^roOCIkiq?sli-5OmI'uB!q>aMrpg-^o^r.Us7ZKerV6Bfs8)Wi
+rVZWmo)=4?g&HR~>
+JcC<$JcFd1o`"gfrqu]ks8)ckrqQNf!;?EbGP(Lto'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bKJ#K`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+i+
+IXQTiH$=FSFE2A?DJj9+C1q9mARo:[@:3G@;uTYt;cH^r<W#es;c<Qkq`X^=rBBO1j$*66q,%#e
+q,%)gs&/kos%iYkq+guerBU*Aks4?,k>CtOn4*@FqF($RrDEMiq+plas&&bns&&Si!`MuprDESm
+rDWVlh+RK7qc<_unQ5rr<`N.!<;ff"<``C+=oMS,>?kH>ra#Y5?=*J,iDTJMqGR5gi(sDrqfWEk
+F*)MHF`r"UH[C-gIJ-Y1<V'8h<>]auFEMbNGBeCZH@($fI=?ZrJ:W<)K7nsXL&m'creUZ5MuJ\8
+NW5%;O8k=AOnt7=POXn7PPLC?OoLO?O8k7>NVnb8MuS\4M>rD2L\uo+L&Qc%KDU8lJc(,rKE$W(
+L&Hc+LB*//M#rQmMuJYMNK0$[O-#HcP*2#mPa.N"Q^=),R@=,E>b%@VStD[LTq\<WUnjiaVl-Jm
+WiE,$Xf\b0YctC<Za7$H[^WcW\[oDc]Y2%o^qmn)_o0O6a2l?Db0/#RcHab_dF$FmeCE.%f@\d1
+g=tH>hV[8LiSrnXjQ6C'"m>+6l0@U6liHMArpKpXnaZVL!qZ'Vrq6<bs7cKerqZTjqtp?irVc<d
+JcFF'J,~>
+JcC<$JcFd1o`"jgrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;FgY1<3
+f$r3tdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'@GoO,f0WM26n?K7e`*
+IXQQhH$=FRFE2A?DJa3*C1q9mARo:[@:3I(k3(q*kl9lIkkaKBk5UV6Oo1=<On+\/POan:gAfju
+f_jA!edp<\eC2jod*L%`cHXSVbKBh+!6G#,oUGTDs-`_Ppr36Nqnr*Dp;?[DoY^$hrh0.^pW!*N
+n&YILrQ>&]rQP/`rQbAdpUKV"n?rD_lK\?6qs+.GqWe(Es6:*[mI'H4o(2MHpA"I[r;HKlp<ET\
+!6a3@rlP)Zhba1H!W;rjs7XA1`:CnA`r!aT`"[65FED\MGBeCZH@($fI=?ZrJ:W=OK*I!_L5(J=
+M#N54MMmDlN;nk;Nr4t<OT(C;P4=b1P5UOBOSb+<NrG%9N;nh8MZ&D2M#W8-LAlo+K_^8tK(acl
+K)1-"K`6](LB!#/M#E/3MMmDlN"q>4NfT6_OHG]hPEV5rQ'R`&R$a;1rgO(]SXuFFT`1WuU8+N[
+V5C/gW2ZesX/rG*Y-5(6Z*L^B['d?N\%&uZ]">Vg^;%Fu_8=(,`Poj;aN2KGbKS5VcHjkbdF6Up
+e^i@(f\,!4gYCWAhr*GOioB([jQ5OdkNM0plKdd&m-X6/n*fc8nc&(\oCV\Sp&Facp\agdq>^<f
+qu6NkrUTr=s4[L'~>
+JcC<$JcFd1o`"jgrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;FgY1<3
+f$r3tdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'@GoO,f0WM26n?K7e`*
+IXQQhH$=FRFE2A?DJa3*C1q9mARo:[@:3H<V>[:jVu!:gV=nlIEV?(&TDkG^Sc##RRfJoNRJM's
+FSU(SFT.[%Qi*0JQ/e21QhZsCHMr3dI/&'_RJ!$7S,/QRS,AfTSH,2ZSc4NDMtr8.Mtr8,M#`A,
+M#aRTX8]4#XoGL%XoGI&Xo,7%X/`6!WXc)2Xfek4Z*L^C[C*HP\GWo=\[p(QqN_,Hhba<i&B)K(
+`5T^8ai_iQd*U1gda@0>pQPH:'p3NXFED\MGBeCZH@($fI=?ZrJ:W=OK*I!_L5(J=M#N54MMmDl
+N;nk;Nr4t<OT(C;P4=b1P5UOBOSb+<NrG%9N;nh8MZ&D2M#W8-LAlo+K_^8tK(aclK)1-"K`6](
+LB!#/M#E/3MMmDlN"q>4NfT6_OHG]hPEV5rQ'R`&R$a;1rgO(]SXuFFT`1WuU8+N[V5C/gW2Zes
+X/rG*Y-5(6Z*L^B['d?N\%&uZ]">Vg^;%Fu_8=(,`Poj;aN2KGbKS5VcHjkbdF6Upe^i@(f\,!4
+gYCWAhr*GOioB([jQ5OdkNM0plKdd&m-X6/n*fc8nc&(\oCV\Sp&Facp\agdq>^<fqu6NkrUTr=
+s4[L'~>
+JcC<$JcFd1o`"jgrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ij5].Wi83;FgY1<3
+f$r3tdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2?AcTqJ!JS!o_2Q'@GoO,f0WM26n?K7e`*
+IXQQhH$=FRFE2A?DJa3*C1q9mARo:[@:3G?;cEZns&/tu<E8rr!E2nq;>`QU4oRYB5Q3k14m,$(
+:\dib;>F#g;>jAm;>j>f:\d9P5NtGp;"@K^;Yj8c;Y3HS8,c!T7JBXW;>j>i:\IW\;>X5n;c6Lj
+qbmAkrDM3>rC[#hs&\_m!EN4t<;ol)<`iL->$>-7>[:Y6?34J??1q4U;Ya8e;Vt=NFoul1F`dV(
+rcJHiG^=^aI!pD7<:X&]<r>r3EcZ>EG'A.TH$Xd`I!pElIt3'#K)UB,KS>/8LPL]bM#rQmMuJ\8
+N<#":O8k=@Onb+0PP:7=OoCI>O8b1=NVnb8MuJV4M>i>2L\li*L&Qc$KDU8oJbjupKE$W(L&Hc+
+LB*//M#rQmMuJYMNK0$[O-#HcP*2#mPa.N"QC!u+R@=,E"e;-TStD\TTkL0qUnjiaVl-JmWiE,$
+Xf\b0YctC<Za7$H[^NZT\[f;`]Y2%o^VI\&_Sa@3`lH0Aai_fNc-FV\d*^7ieC<%"f@S[.g=k<:
+h;7&Ii8N\Uj5f:_k2tjjl07L!lg4!*mdBQ4nF5uIncJFTo`"O`pAambq#C0iqYL*gr;?Nardk+'
+s*t~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrV-EfpAX`1o^h\Fo'u5<n*]T0lg!a!kN:pfj5]+Vhqm2Eg=b-1
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8bTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W(
+IXQQhG^"=QFE2A?DJa3*C1q9mARo:[@:3I(jlZL(s60LIs60@Cplb$,o9/O*plYZAgAT^sf_a;!
+f)O82eC2mpdEp4ccHa\XbK@uLqj[GPp7)#Lq4%>Orl+oWrPefTqSW9Ks24`Np;?[DoY]mdr1Nf(
+qoA9K!6P,\q9/`\qT\uas3:Shp:07oqR6F5!pT"8r9O=Hqs4:I!pT"8rok!Zlg4!*n+#u?o_/%S
+qYU3iq>^-4s31DahTGc<hbX=Mr;$HkrUg-`_u@UF`V@IM`=9b+F*)MHG'A.UH?spcrd><+It3'#
+JqJ]/KS>/8LPL]bM#rQmMuJ\8NW5%:O8b7>Olqo*Oo:C=O8b1=NVe\7MuJV3M>rD2L\uo+L&H]#
+KDC,pJbjupKDpQ(L&Hc+L]<20M>rJ5MuJY9NK4"!IuoeTP*2#mPa.N"QC!u+R@9S6S"-%@StDXJ
+TqS3UUnjiaVPg>jWN)u!XKAV-YHY79ZEpmE[C3NQ\@K/^]Y(ql^V@S#_SX71`Q#s>aN;TJbg"GY
+cd:(edaZdsf%8O+g"P07gtgfChr*GOioB([jlY^gkiq?slKdg'mJlVSn,MkWnc&+Zo)SF]p&Fac
+p\jmeq>U6fqu-HkrUTr=s4[L'~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrV-EfpAX`1o^h\Fo'u5<n*]T0lg!a!kN:pfj5]+Vhqm2Eg=b-1
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8bTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W(
+IXQQhG^"=QFE2A?DJa3*C1q9mARo:[@:3H<Uo"!drhoXjrh]1)j`1<@ol9nMpi-:Soq;2Srgs+[
+rLEeTs.'+Y".GXHRf&TNFS^.NFSU(XFSqNuQi330QN*<HR.Ye(Hh`!dHhWs(Rcg1>RerTQSGeuY
+SGo)WMYi=oMY`20MZ0[UXT,F%XT,F!XT,@!WrB%,XKJb2Z*L^C[C3NRrODp>rOL%:rg)G<qniZW
+`Q#s?bK\B3d/VJndc?SdPP^LPO`GMbFEMbNGBnL\H[Pg@%t9"YJ:W<)K7no3L5(J=M#N54MMmDl
+N;nn;Nr4t;OSt=)P5LI@OSb+<NrG%8N;nh8MYr>2M#N2-LAlo*K_^8rK)'uoK)1-!K`?c)LB!&/
+M#N82MZ8V6Mueourf;PjOcbfiPEV5rQ'R`&R$a;1R[]e:SXuFFT:hmOU8+N[V5C,fVl6SpWiN5'
+Xfek3Yd(L?Za@-K[^WcW\\#Me]tV7r^qmn)`5T^8a2l?Db0/#RcHab_dF$CleCE.%f@\d1g=tE=
+h;7&Ii8N\Uj5f=ak3(sml0@R"m-O->mf2bUn,W"Xo)J:]o_nI_pAamcq#C0hqYU0gr;HTbrdk+'
+s*t~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrV-EfpAX`2o^h\Fo'u5<n*]T0lg!a!kN:pfj5]+Vhqm2Eg=b-1
+f$r0rdEg+^bK7iG`PfX0^V7@m\[])UZa-g=XfSP%Vl$8bTqJ!JS!o_2Q'@GoO,f0WM26n?K7\W(
+IXQQhG^"=QFE2A?DJa3*C1q9mARo:[@:3G?;H$Nm;?Kis<E8rr!`MuoofW+7rBBR2o03(:pHJCK
+pJC`aqG@2hrDEVmr_WMgq`jsCpcnU?q*FsEj\YPGlr*@Cpdb?Rr^HQXrDDuZq,.&fs&8\jrDWYm
+dS'R@!a&N*pK.Dsr`BA+<`N*u;cEWo$W^>1=BSg3>?kE=?N+=2?N4=&;rCRH;r:FMFo?C]F9Hc2
+G^4W4Hh15-<V9Dk<=EnhFEDYKGB\=YH@(&=I1LdVJ:N3&K7ei1Knb>;LPYqd!fDnorf$l:s,R#<
+rfI)@kE>b*rK-o;rf6u;qi(Q5regW1s+pZ0r.b3)rIk!!q1AEnqL\Qrre1<*rJ(?-s+pZ2s,-i7
+repl;NrG)hOHGZgP*;)oQ'IZ$Q^F/.R[T_8S=Q7CT:_dMTq\<XUnsrcVl-JmWiE,$Xf\b0YctC<
+Za7$H[^NZT\[f>b]Y2%o^VI\&_SjF4`lH0Aai_fNc-FV\d*^7heC<%"f@S[.g=k<:h;-rFi8ESR
+j5]4^k2tjjl07Kulg4!*s6fpUs6p$Yrpp*\!;-6_s7ZKerV6EgrqcNhrVZWmo)=4?gAc[~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrqQNf!;?EbHM$h"o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKnFu-
+Isl`lH?aXWFE;JBDf0E-CM@HpAn>L_@UWYOjQ5Lcr9*t@rTEL0r/pT6o99-;o99.+n_!ckrRV#!%
+b/tVda?Fgcd0n]c-4ARpRCuKpm_/Lq3qB'rl4oUs2=ZLrl"?EpVcaBjIuRG!6+cRrQ"NN"3J^.b
+Po`^bPKHXc2>iechb3K\DF^olN-A<qs+%Dqs".G&*rWNn*oo>p%J.UqYU6jrqcWprq=V5bl5f?b
+2H1r;?-Fpq"agbrq-6__u@UF`VRUM`?0/CFEMbNGBeCZH@($fI=?ZrJ:W9'K7ei2Knb>;LPYqds
+,-i7rf$l:rf6l:rK-l<plbH8r/g`8rf6u;qi(N4s,-]1s+pZ0qhG*(re1'!q1AKpq1AEps+LB*r
+J(?-s+pZ2s,$f7rf$l:!07&>'p+Q?P*2#mPa.N"QC!u+R@9S6S"-&KSctaZTqS3UrhNSkVPg>jW
+N)u!XKAV-YHY79ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=+.`Poj;aN2KHbKS5VcHjkbdF-Ooe^i@(f
+\,!4gYCW@hV[8LiSrnXjQ5OdkNMp0!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cKerqZTjqtp?ir
+Vc<dJcFI(J,~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrqQNf!;?EbHM$h"o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKnFu-
+Isl`lH?aXWFE;JBDf0E-CM@HpAn>L_@UWYOUSFW]r20Cir20%(kAg<<qf24JrGhG%qk*kZs.0+Y
+s-rkT!1WtV".PaIRJ1h!Fn0YOFoQR^R.Zg<Q2m9<QN*<IR.5LpHiJBlHha$-RdZaFSF;sFSGSlR
+MYi>"MZ8P(MXRYHWr]6"r2L1,Xfek4Z*L^C[C3QSrOMs<"1PeM\'UKAQN*<KQJk[>;%(7W_SX4/
+`lH3Ebg$(3!n#HEifa,$qN;qAFEDYKGB\:WH?spcI=6QoJ:N3%JqJ]/KnY89LPL]bM>rJ5MuJ\8
+NW+t8O8Y1:Onb+8Oo1=:O8b1=NVe\6MuS\3M>rD2L\li*L&Qc#KDC,rJbaonKE$W(L&Hc+L]<20
+M>rG5MuJ\8N<#"<Ntmb=OcklkPE_>tQBml)R$jD3S"#q=rgj:cTV8'RU].&iV5C/gW2ZesX/rG*
+Y-5(6Z*L^B['d?N\%&uZ]">Vf]tV7r^qmn*`5T^8a2l?DbKJ,ScHab_dF$CleCE.%f@\d1g=tE=
+h;7&Ii8N\Uj5f=ak3(t-klL)8rp0[Qmf)YVnF?&JncJFTo`"O`pAamcq#:*hqYU0gr;HTbrdk+'
+s*t~>
+JcC<$JcFg2o`"gfrqu]ks8)ckrqQNf!;?EbHh?q#o'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC!dEp1`bfe,L`l5j4^q[Ur]=GG[[Bm0CYH=n+W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKnFu-
+Isl`lH?aXWFE;JBDf0E-CM@HpAn>L_@UWYO;c6Ll;uKSp;cN`rr)E5Lk<8E#o0<1;q+pZ[r)*;e
+s%rbor_j&";,C(d:esm_5lX(G5kdM>5l!_6;#O8i;"IQO;XHsK8,c!R;#4&Z;#!oc;?0Yh;Z9Vo
+;Z9A=9Dqrm=85nt=8uA*=&r=#<;fbq<!lW+=BJ^/>$P<<?N"47?<plC>[6_ri)9ALiDBMN%<Z`5
+EcZ;DFEMbOH$O`8HNJM?Hgt)+<VBJl<?H:(FEMbNGBeCZH@($fI=?ZrJ:W9'K7ei2Knb>;LPYqd
+s,-i7rf$l:rf6l:rK-l<plbH8r/g`8rf6u;qi(N4s,-]1s+pZ0qhG*(re1'!q1AKpq1AEps+LB*
+rJ(?-s+pZ2s,$f7rf$l:!07&>'p+Q?P*2#mPa.N"QC!u+R@9S6S"-&KSctaZTqS3UrhNSkVPg>j
+WN)u!XKAV-YHY79ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=+.`Poj;aN2KHbKS5VcHjkbdF-Ooe^i@(
+f\,!4gYCW@hV[8LiSrnXjQ5OdkNMp0!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cKerqZTjqtp?i
+rVc<dJcFI(J,~>
+JcC<$JcFg2o`"jgrqu]krqZWjrV1j9p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+l,
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UW['j5g7%!9X4Bqrn(CrKHi9rfcf6o98p5p65F-nCRcn
+f`'M$edp<\eC2jndEp7dcd'eZS"&`6qO@GPqO@H'rl+fRq8;mDqSW'Gou$U"l(J*Mq8WBRprNEU
+s2tAbnBCXO!7(Mgs18!9rODR1rj_=(s6B^PlhfuElN$5Jkn*.Glg4$.nac;Dp@nCZqu-Nks8W)u
+rV4Y3bl5f@b2Q7q;$?XgqYL0^s74)-`::hD`qmX_F*)MHG'A.TH$Xd`I/\NtIXcluJV*lR#D@eb
+L5(J=M#E/3MMmDkN;eh:Nqnb2OSk78OSFn8NrG%8N;eb7MYi81M#N2,LAlo*K_U2dK)(&uK`?c(
+LB!&/M#N82M?&S6N;nk;NrG(SOHGZgP*;,pQ'IZ%Q^F/.R[T_8S=TYN%\KDfTq\<WUnjiaVl-Jm
+ri/ntXKAV-YHY79ZEpmE[C3NQ\@K/]]=bei^;%J"_SX4/`Poj;aN;TJbKS5VcHjkbdF6Upe^i@(
+f\,!4gYCW@hV[8LiSrnXjQ5OdkNM-ol0@U6liHMArpKpXnaZVL!qZ'Vrq6<bs7cKerqZTjqtp?i
+r;H3cJcFL)J,~>
+JcC<$JcFg2o`"jgrqu]krqZWjrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+l,
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UWZ=U8+IaUo"!dr29OkrGhFJluD--qJcM-oUu#Ps.94\
+opc&PRf8cVRd"t`FT.[.R.Zg?QN!6MQiNKKQN!0GQN*<IR/)+&HLuOaHMO!-Re*$ESF;sGS,f,Z
+T)YAWMY`8!MYW,)MXdbLX/`3!WW&n+X/rJ-Yd(L?['[6M\Gj&=\G`o:[a1<8QJta=;$t.V_o'I5
+aND`Oc2Puhcd;[>i0*u$qN;8.FEDYKGB\:WH?spcrd=s!It3'#K)UB-KS>,7L51P?rJ:T5Mi7Om
+rf-r<q2b<4r/p`8plGB6rf-f6repc5qhb?/reLB*re:<(pk.pbq1J["s+UB*s+gW1re^Z4!/pi8
+s,@#=rf7eUOcbfiPE_;sQ'Rc'R$a;1R[]e:Sc52jT:hmOU8+KZUnsrdVl6ToW`,t"Xf\b0YctC<
+Za7$H[^NZT\[f;`]Y(ql^VI\&_Sa=2`Q#s>ai_fMbg"GYcd:(ee'umtf%8O+g"P07gtgfChr*GO
+ioB([jlY^gkih9qlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmdq>^<gqu-HjrUTr=s4dR(~>
+JcC<$JcFg2o`"jgrqu]krqZWjrV1j9p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1<3
+f$r3tdEg+_bK@oH`l5j4^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[MM[+CKS+l,
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UWYE<)`fps&8ko!E2ts<W5tr4nCf&4nCl/5PdS<:\@Q^
+;>O)i;,[Bl!)ibm!)WPXr^$6Cp-8L@qEaRHl;?qHq+'sEq*tESqG7/hrDNYmp/(H[m8Em]s&/\f
+rCm2`!)26Br`B/%q,mVt"^"i,<)Z]m;[ZQ*<``C+>$>-8?!dM;!+,Y1s'5S.r`&;ahbsGPi_]PM
+rGqmZ"Eo!6H$T=6s*O67nQ#?brDa8IFEDYKGB\:WH?spcrd=s!It3'#K)UB-KS>,7L51P?rJ:T5
+Mi7Omrf-r<q2b<4r/p`8plGB6rf-f6repc5qhb?/reLB*re:<(pk.pbq1J["s+UB*s+gW1re^Z4
+!/pi8s,@#=rf7eUOcbfiPE_;sQ'Rc'R$a;1R[]e:Sc52jT:hmOU8+KZUnsrdVl6ToW`,t"Xf\b0
+YctC<Za7$H[^NZT\[f;`]Y(ql^VI\&_Sa=2`Q#s>ai_fMbg"GYcd:(ee'umtf%8O+g"P07gtgfC
+hr*GOioB([jlY^gkih9qlKeH9!U]=SmfN"Knc&(\oCV\Sp&Facp\jmdq>^<gqu-HjrUTr=s4dR(~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrV-EfpAX`5o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0rdEg+^bK@oH`PfX0^V7Co]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,o9ZMM[+CKS+i+
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UW[&iT'"\jlZL(r9+1EPk^I?P4Xt5P5:CAPl6g9PkgO@
+g$IAifDjD+e^W*tdaHPAciDDfS*QUBS,\rRS,C8+`VmaI_t_1J_tM%B_Z6IoUALVa`VRUQ`rO3V
+ao0B\bPfWbc25`Wc2Greci;Aj](ro1\G`o2\F[3.lhp&Hli-2Jkn!(Flg4'.nFH5Ep\=U^r;HWo
+#ljo(rr2lpr;HK:qTSu_!6k5]il_;Cj\YkPrDE^mqu-'bs2=WK!5e]Pq8E-Kqo8NP&T`&9F`qtQ
+G^4R\H@($fI=?\FJ,t4Qrdt6)L&Qi,LB*//M>rJ5Mu8P6NW"mrO8P%;NV\V5MuJV2M>i>1L\li*
+L&Qc#KDC,pJbaooKDpQ(L&?Z,LPUcbM#rQmMuJY:NK0%uNrb?)rfRYQPa%GuQC!r*R$jEBRfT%M
+rgm_oTV8'RUSFW\V5C/gW2Q\qWiN5'Xfek3Yd(L?Za@-K[^WcW\[oDc]Y2%o^VI\&_Sa=2`Q-'@
+ai_fMbg"GYcd:(fe'umtf%8O+g"P07gtgfChr*GOioB([jlY^gkNM0plKeH9!U]=Sn,MkWnc&+Z
+o)SF]o`Fj]p\agdq>U6fqu6NkrUTr=s4dR(~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrV-EfpAX`5o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0rdEg+^bK@oH`PfX0^V7Co]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,o9ZMM[+CKS+i+
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UWZ<U8"EXUo"!dr20OlpMotIrc.gUpi6.Nrc@OKpMp2)
+pRq8Qrgs(ZpRM2OmreSNq/u:NrgEeRpQtW?s-NYNrKmJKs-<DGs-NSLja6lNq3h2MoUGfL!1WqW
+n!a<IrLNqZs.0.H!/p`3oS`C"nqdL,XK/G'qlBk"XK;E%!36!ss/H^4XKAY/Z*L^C[C3NQ\@B#X
+\$u7Cd$OQos-;\Br)*Dj#/eBu`lH0CrQGDhcd:(drmCb0rK?i9q3(B6qiVP4FEDYKGB\:WH$Xd`
+I!pElJ,Xs!JV*lR!JH1+LB!#/M#E21MZ8V4N;nn9No?&sNrG%7N;eb7MYi80M#N2,LAlo+K_U2q
+K)'unK)1-!K`?c(L'!-dM#E/3MMmDlMuo!!NrG(?OHKO*$^6g>Q'IZ%Q^F/.Rf8cWS=TYNAtP`i
+Tq\<WUnjiaVl-JlWN)u!XKAV-YHY79ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=(,`5T^9aN2KGbKJ,S
+cHab_dF-LneCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(pkl07L!rp0[Qmf)\Tn,W"Xo)J:]o_nFa
+p@n=Zq#C0hqYU0hr;?Nardk+(s*t~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrV-EfpAX`7o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0rdEg+^bK@oH`PfX0^V7Co]",;Y['R$AY-"b)W2HGdTqJ!JS!o_2Q'@GoO,o9ZMM[+CKS+i+
+Isl]jH?aXVFE;GADf0E-CM@HpAn>L_@UWYF<E)mp;H$Onr_`r!<)cjt<':"?p,r=;q`ad<qEFmC
+rBBg;qEFmAohY9XqGI2f!)`_ns&8np!)`ARs$?EFoKW:>r^$9TrD3>flr!1Kj[]2;qb[;irDNPj
+rD</am8EdZs&/hj!)E5^q+TmC!a&N*qH3Ys"BJK#;H!Hl$<1#+='8[0>?kH>r*BA/r`oD+s&K"s
+m8O$_r_qoVj\YkPrDEoAF)uGFG'A1UrH\9ds&JSgq,Qrcr`'POFEDYKGB\:WH$Xd`I!pElJ,Xs!
+JV*lR!JH1+LB!#/M#E21MZ8V4N;nn9No?&sNrG%7N;eb7MYi80M#N2,LAlo+K_U2qK)'unK)1-!
+K`?c(L'!-dM#E/3MMmDlMuo!!NrG(?OHKO*$^6g>Q'IZ%Q^F/.Rf8cWS=TYNAtP`iTq\<WUnjia
+Vl-JlWN)u!XKAV-YHY79ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=(,`5T^9aN2KGbKJ,ScHab_dF-Ln
+eCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(pkl07L!rp0[Qmf)\Tn,W"Xo)J:]o_nFap@n=Zq#C0h
+qYU0hr;?Nardk+(s*t~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrqQNf!;?EbJ+W@'o'u8>n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7FL4k21
+J:;ooH?jaZF`_\EEGo`3CMRWtB4b^c@q&kShVdAPjQ5Ock5FK@kl$bGQ1pOBPPpa7PPUOBQ0sn8
+PQ'88gAfjkf`0P.f%&=#e'c[lrQtD1k+)18qo8ZTs2=9As2=oSou-RAq4db[n=olTqSrQUs2b)Z
+rlY2_r64QQqTf,erm:SSppoCoqR?Iis6BRK!:9^Ns6BXKs6:*[m-X60nac>Gp\F^arVcTls8Drp
+!<)i?qTSfZ!6Y&ZjN?X^qbd;is&/srrpg$e`;%7L_YqCK`;.CN`r!^aF*)MHG'8(RG^4U]H[Pg@
+#(D&PJ:W9'rdt6)L&Qi,L]<2/M>rJ5Mu8P4NW"n'O8Ft9NVSP4MuJV1M>i>1L\li*L&H]"KD0ur
+JbXinKDpQ'L&Hc+L]<20M>rJ5MuJY?NK0$[O-#HcrfR;GPl?pKQC%T<!L]DURfT%MrgjIhTV8'R
+U8+N[V5F6i:oL@nWiN5'Xfeh1YctC<Za7$H[^NZT\[f;`]Y(ql^V@S#_SX40`Q#s>aN;TJbKS5V
+cHjncdaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ6C'&Ei9Al0@U#m-O--mdKW6nF?MKs766_rUp3a
+s7cKes7uZjqtp?irVc<dJcFL)J,~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrqQNf!;?EbGP(Lto'u8>n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7FL4k21
+J:;ooH?jaZF`_\EEGo`3CMRWtB4b^c@q&kSU&LedU]7+iV>[:hVt"d+E;OYDEqaYMEqFANTD5)O
+TDY;\SbJZSS,RQpFSU(SFT.^)R/NBDQM$RFQBh62s-NSLid:WMqO.;Nn!j?Im[O6HrLEq[rLND7
+pP\g(nqm@Hq5jUsri5pr$EC/.Xfnt6ZEpsHrjDj:\Giu;[K*`5[ca"UR-p=9Q2m35;#=,g;ZBZ'
+_o9[<b0%oNbg"GZrm:\m!7Lh0rK?i9qNCK7r/qM1FEDYKG'A.TH$Xd`I/\NuIXcluJUrFPK)pXZ
+reCH.s+pW1s,-i7r/CT6rJp3)qi:W7q2G<2regQ/reUQ/qhG*(rIjrupO`?ppk&?pre19)rJ(?-
+s+pZ2s,-i7req)ANfK0]OH>V(Oo^c2rfmMMQi<?QR@=,E!M#_[SdM*_TqS3TUSO]^VZ*JiW2Zes
+X/rG*Y-+t4Yd(L?Za@-K[^WcW\[oDc]Y2%o^VI\&_Sa@3`lH0Aai_fMbg"GYcdC.ge'umtf%8O+
+g"P07gtgfChr*GOioB([jo4BRkNM0plKdd&m-X6/n*fc8nc&+Zo)SF]p&Facp\jmeq>U6fqu-Hk
+rUTr=s4dR(~>
+JcC<$JcFj3o`"gfrqu]ks8)ckrqQNf!;?EbHM$h"o'u8>n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,L`l5m5_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7FL4k21
+J:;ooH?jaZF`_\EEGo`3CMRWtB4b^c@q&kS<`W4"qG[Dls&/tu<E8EKr&sR6qEOpDmQ^Y6ohY3V
+qGI5g!)`_nr_rhpo0E1=qEXa=rBUBKpJC`_r_VrYmS`%7rC6]]s&&eos%rborD<Pko25KbrDW;c
+qc!Jlr(QfYoh=UCs&],#rDs,&=&i7"r_i_o#ujr,='/U/>?kJ3?4'tC>?kB:>$>-7<rH%b;uK\o
+;s7-B;#=,g;ZBYtF)lAGrHJ3cs*=Zjrd+NCnPo?bnQ,Zi%<HW5F`qqPGBeCZH@(&=I0P.MJ:N3%
+K)UB'KSBD[s+gW1rJCQ3s,6f6rJgc9l]:q'rJgW3repc5qMG3-reLB*re:<(pk/<mrIO`qqLed#
+re:<*s+gW1re^Z4s,6l8#E=b(O,oBaOoCLEPEc'3!LB)OQiWVDrgNqYSc52fT:hmOU8"EYUnssf
+Vbj=kWiE,$Xf\b/YHY79ZEpmE[C3NQ\@K/]]=bei^;%Fu_8=(,`Poj;aN2KGbKJ,ScHab`dF-Ln
+eCE.%f@\d1g=tE=h;7&Ii8N\Uj5f>$jq-_>l07L!lg4!*mdBQ4nF5uIo)J:]o_nI_pAamcq#C0h
+qYU0gr;HTbrdk+(s*t~>
+JcC<$JcFj3o`"jgrqu]krqZWjrV1F-p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi8<AGgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7EKnP)0
+J:;ooH?j^YF`_\EE,TW2CMOStBP1pgA7K(W@,'MpiSrq[jlY_'kPs`GPkC=@Pl-gDPl6g@PQ7!D
+Pk^O>PQ7!EPlKG7gAfjlf`0P*f%&="rmLho!7:>,qjdPSopklJr5SZR!6"9BnAP%<pS.MXn=foV
+rPniWr5eiYrQ=u\lco7N!71YkqRZL5gpd@NrTjIL!pf4>rp0LI$L@'Hn+#u@pA"I\rVc]orr)cm
+!;lc?!R/gdbkfNZb4s0Db32\!;>jDj;t0h]`:_%E`;.CO`r!aSF;/k@GB\:WH?spbI!pElIt*!!
+JV&LQK*$^[L&Qi,LB*//M>iD4Mu&D1NU2]&NVSP3MuJV1M>i>1L\cc)L&H]"KDC,pJbaooKDpQ'
+L&Hc+L]<20M>rJ5MuJY?NK0$[O-#HcrfR;GPl?pKQC%T<!L]DURfT%MrgjIhTV8'RU8+N[V5F6i
+(9"44WiN5&Xf\b0YctC<Za7$H[^NZTrjau!]=bhk^V@S#_SX4/`Poj;aN2KGbKJ,ScHjkbdF-Ln
+eCE.%f@\d1g=tE=h;7&Ii8N\Uj5f>$jpUA9l07Kulg4!*mI'uB!V#XYo)J=]o`"O`pAamcq#:*h
+qYU0gr;HTbrdk+(s*t~>
+JcC<$JcFj3o`"jgrqu]krqZWjrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi8<AGgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7EKnP)0
+J:;ooH?j^YF`_\EE,TW2CMRWtB4b^c@q&kSStMeWUAgngUo"!ds/4jrpi6@Uqf;@Npi?1Ms.B(Z
+nt5iOs./nSq/tnCqK;^Xs-NeSq3^iAq3LuGrKmSOpQkiGqNq81i-PHMrL*JM!1WtVhjaY9pmpT*
+repQ/o83FHqlKasri6!t$EC/.Xfek4ZEppGrO2[6!4Ma3!4M-YpmCH8r0HPCqbd;ir)3pAaNDZI
+b0/#Rc2Q#kd*^:iqiguAp6#06p65B:rcAisG'A.TH$Xd`H[L6iIXcitJ:W<(rdt9*Kn]M\s+^T1
+rJCN2s,6`4r/L''qi1E1rJUZ4qMG3-reL?)re:<(pk/Boq18?nqLed#re:<*s+gW1re^Z4s,6l8
+#E=b(O,oBaOoCLEPEc'3!LB)OQiWVDrgNqYSc52fT:hmOU8"EYUnssfV\Z51WiE,$XKAV-YHY79
+ZEpmE[C3NQ\Gj#t]">Vg^;%Fu_8=(,`5T^8a2l?Db0.uPc-FY^dF$CkeC<%"f@S[.g=k<:h;-rF
+i8ESRj5]4^roOUOkiq?slKdg'mHs?@mfDqJrpp*\s7H<`s7ZKerV6Bfs8)WirVZWmo)=4?g])d~>
+JcC<$JcFj3o`"jgrqu]krqZWjrV1m:p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi8<AGgY1?4
+f%&9udEp1`bKJ#K`l5j4^q[Rq]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN]Mi!7EKnP)0
+J:;ooH?j^YF`_\EE,TW2CMRWtB4b^c@q&kS<E<-$<E/]ks&8t[k</]+mQ^J3!'gEGofr.Gnkf0[
+r_NSlr_i_o!($6Bog/L@oKN=@p/(Z_s%r/]r_`_nmS_q4!(Qf]r_`\l!)`_lnPT<arDW;cqc!Jl
+oM#0Wp.XaEs&]/$rE&u!(faO6;c6Ll<)cju='/R->$G9<?=$oC>[784qc`u!qc*,bpf./im8E.E
+qbd;ir)3W;Fo?IaGBit0s*FQBnl5Ebo2bijrcAisG'A.TH$Xd`H[L6iIXcitJ:W<(rdt9*Kn]M\
+s+^T1rJCN2s,6`4r/L''qi1E1rJUZ4qMG3-reL?)re:<(pk/Boq18?nqLed#re:<*s+gW1re^Z4
+s,6l8#E=b(O,oBaOoCLEPEc'3!LB)OQiWVDrgNqYSc52fT:hmOU8"EYUnssfV\Z51WiE,$XKAV-
+YHY79ZEpmE[C3NQ\Gj#t]">Vg^;%Fu_8=(,`5T^8a2l?Db0.uPc-FY^dF$CkeC<%"f@S[.g=k<:
+h;-rFi8ESRj5]4^roOUOkiq?slKdg'mHs?@mfDqJrpp*\s7H<`s7ZKerV6Bfs8)WirVZWmo)=4?
+g])d~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrV-EfpAX`7o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0sdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[Mi!7EKnFu.
+J:;onH?j^XF`_YDE,TW2CMIQsB4b^c@q&lsf%Ss:i8N_V!p&J*r9*g?rg!MLp6F[&mZmg:ptGc$
+lIZ6kf%&:!rmCeorLEGJqjdPSpRM/Ns2P)Zs2P)Xs2=<Bq8E3MrP\HJoV2/TnY5m#rlG#Zs2t>a
+rQONNq9B&fd*VR"rOVp;o=4e1m^W;_s6KaQqs4m[m-Es&m-O-.nF?,Bp\=R]rqu`orVc`nrqc]l
+p<<HXp<*-Qm)nWjqbd8hqGRAnnGi:%m)/e?rl+lVr5Aq_FEDYKGB\:Wrd"TlI/\NpIXh?I#_@SZ
+K7ei1Kn]M\s+gW1rJCN2repQ1m>^gurJUW3qMG3-rJ19)rIt6(pOi9npjr6mqLed#s+UB*s+gW1
+re^Z4!/pi8s,@#=rf7,BOcfX+!L&cIPl[2;rg3_SRf8cWS=TYNDkE\rTq\9VUnjiaVPg>jWN)u!
+X/rG*Y-5(6Z*L[AZa@-K[^WcW\[oDc]Y2%o^VI\&_Sa=2`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(
+f\,!4gYCW@hV[8LiSrnXjQ5Lck3(sml0@R"m-O-,mf)YVnF?&JncJFTo`"O`pAamcq#:*hqYU0g
+r;?Nardk+)s*t~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrV-EfpAX`3o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0sdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[Mi!7EKnFu.
+J:;onH?j^XF`_YDE,TW2CMIQsB4b^c@q&l8S=ZCIr1X4eV#7+EEVskUEVjePF7XGPEVQ3pTDP2[
+Sc5,^SXc7ASG%*fFSU%ZR/WNNR.cmAQMm0JQiNKKQN!6JR/MEjHh*W^S,]#TS`,J*Mu/D(M>sXR
+XT,=$XT#:#WrK+*XKAY/YctF>[/IB4[f3c9[f<`8[/78nQhQm:Qi369;#=,f;Yj;l<;joDb0/#Q
+c-FV\r6bD*rK?i9q3(K9r/q>,FEDYKGB\:Wrd"TlI/\NpIXh?I#_@SZK7ei1Kn]M\s+gW1rJCN2
+repQ1m>^gurJUW3qMG3-rJ19)rIt6(pOi9npjr6mqLed#s+UB*s+gW1re^Z4!/pi8s,@#=rf7,B
+OcfX+!L&cIPl[2;rg3_SRf8cWS=TYNDkE\rTq\9VUnjiaVPg>jWN)u!X/rG*Y-5(6Z*L[AZa@-K
+[^WcW\[oDc]Y2%o^VI\&_Sa=2`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrnX
+jQ5Lck3(sml0@R"m-O-,mf)YVnF?&JncJFTo`"O`pAamcq#:*hqYU0gr;?Nardk+)s*t~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrV-EfpAX`5o^h\Fo'u5<n*]T0lg!a!kiV$hj5]+Vhqm2Eg=k32
+f$r0sdEg+_bK@oH`Pf[2^q[Rq]",;Y['R$AY-"b)W2HJfU7n3NS=>q6QBdYsOH5B[Mi!7EKnFu.
+J:;onH?j^XF`_YDE,TW2CMIQsB4b^c@q&kE;H-[t<E8rrr)3SWi]R3'r]^6ErBC0E!'^?Gs$6EF
+r''sApeU<Sr)!Vq;,C(d;>sGn;tWHQ5kRGB5kRA9;#F,h;".?I;VXbB;=dWS;=%3Y;u]bP9^YOR
+=8l>#=8l5%<E)rs;[u](<)lq!='/U/>?kE=?N+44>[(B9r*',)oi1K\pJh&hnP\[Lqbd8hqGRGp
+F`m\,s*"QiH$OZ6H2`-e<Uj&a<V0>l<=!YfFEMbNGBeE4H3&A?rd=frJ,Xs(JV&K+K7no3L&Qi,
+L]<2/M>iD3Mti7uNV8>0MuAP0M>i>0L\li)L&Qc"KDC,oJbaooKDpQ(L&?]*L]<20M>rG5MuJ\8
+N<#"<NrkE*OoCLEPEc'3!LB)OQiWVDrgNqYSc54!T:hmOU8"EYUnsrcVl-JmWiE,#XKAV-YHY79
+ZEggC['d?N\%&uZ]">Vf]tV7r^qmn)_o0O5`lH0Aai_fNc-FV\d*^7he'umtf%8O+g"P07gtgfC
+hr*GOioB([jlPXekNM0plK[^%m-X3.rpKpXnaZVL!qZ'Vrq6<bs7cKerqZTjqtp?ir;H3cJcFO*
+J,~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_npU&tn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?5
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG\[^<BGYcb+/Wi2hlUnXQTSt):<R$O#$P)t`aN/EIIL4t83
+J:E#rH[9s]G'.nIEH#i6Chmd"BP1pgA7K(We'uq#gtprHioB+]rT<j?qNq/Hpm'd%qN_)Hqj$m/
+s4R%srRq2&#hdk^f%&:!daJ#^s.'%WqOI5JqjdPQs.'+Y!65#YrPnlVp;HgF!Q;nP`;@OP`:q1>
+UA:MXUAU_^a8*jWb5TT^bj3OKcMl2h])0,9])B24\G*Q,\-20cmd9E>li?GOlj<(InF?)@p%S7W
+rqc]nr;?ZorVcWuqtg0bq9-tVbl#ZTb4j*Kb3i+';>a>f;uT_r<Up+``9bD?`;RXT`r*dYF*)MH
+G5c[nG^4U]H[L3hI=?WprdY$#K)L<'KS>-ZLB!&.M#<,/MZ/OmN;SV4MYW,.M#E,+LAci)K_U2r
+K(OWjK)1-!K`?c)LB!&/M#E/3MMmDlN;nk;NrG(JOHGZgP*;)oQ'IZ$Qi<?QR@=,E'V(_cStDXJ
+TqS3TUSO]^VP^8hW2]cr"fn`,Xfel,YR.S?Za7$H[^NZTrjb2']=bei^;%Fu_8=(,`5Ta:aN2KG
+bKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4]jlY^gkl0fIlKeH9!U]=SmfN"Knc&(\
+oCV\Ro`Fj]p\agdq>U6fqu-HkrUTr=s4mX)~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_np0cpn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?5
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG\[^<BGYcb+/Wi2hlUnXQTSt):<R$O#$P)t`aN/EIIL4t83
+J:E#rH[9s]G'.nIEH#i6Chmd"BP1pgA7K(WR@9V:TV/!Prh9FgV#I43EVjeVF7aMHT^JHOSck[W
+SXl;LSaLXbFT$=^R/WNCR/*'KQMm0KR/WHLQMm0IR/23nHi/3]Rc'\6SGf#YS,f,<MZ/P1MY2i(
+XSo4"XSo1+XKAY.YHP4:Za9P:rjMj7rj;X3s0hrpjHoV.oU#NBmSNdXr)3>hr_s5)aiMTHbK\8T
+cHlI9s3^Y+rK?i9qNCT:rK7;)FEDYKrc\`pH$Xd`I!g?jIXZeGJ,t4QrIY0)Kn]M\s+gT0r/(E1
+reo`or/:N2q2,*,rJ19)rIt3'pk/EpoRZjjqLed#s+UE+s+gW1rJ:T5Mi7Rns,@#=rf7JLOcbfi
+PEV5rQ'R`&rg3_SRf8cjS=Q7CT:_dMTq\9VUnjiaVPg>jWW&n$X/rG*Y-7i/$*geBZa@-K[^WdG
+\NRO9]Y(ql^V@S#_SX4/`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Uj5f:_
+k2tjjrojIKli-5OmI'uB!q>aMrpg-^o^r+T!quB_r:p<frqcNhrVZWmo)=4?h#Dm~>
+JcC<$JcFm4o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_nosWnn*f]2m-Es$l0%3kjQ#7Yi8<DIgY1?5
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GG\[^<BGYcb+/Wi2hlUnXQTSt):<R$O#$P)t`aN/EIIL4t83
+J:E#rH[9s]G'.nIEH#i6Chmd"BP1pgA7K(W;GpFm<`]3"qGd;Qk</Q'nim(:mQLV8q+pc^s&&Jd
+r_`\n##S2n;,L4hqa(!DoKi.8q`b'Go2+jPku%LNiCEf8!)`AbnPSdRpf%2jrCbj<oh5<er`B)"
+!``9$r`&nr!*&ns"'8T-=oMV*>l@t.>PhV&>P1t`;tj8h;tX&V;#=,f;Ya8j<!cQIF`qtQG^4RZ
+r-8<hHhg\3<;KVe<WuKEFEDYKrc\`pH$Xd`I!g?jIXZeGJ,t4QrIY0)Kn]M\s+gT0r/(E1reo`o
+r/:N2q2,*,rJ19)rIt3'pk/EpoRZjjqLed#s+UE+s+gW1rJ:T5Mi7Rns,@#=rf7JLOcbfiPEV5r
+Q'R`&rg3_SRf8cjS=Q7CT:_dMTq\9VUnjiaVPg>jWW&n$X/rG*Y-7i/$*geBZa@-K[^WdG\NRO9
+]Y(ql^V@S#_SX4/`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Uj5f:_k2tjj
+rojIKli-5OmI'uB!q>aMrpg-^o^r+T!quB_r:p<frqcNhrVZWmo)=4?h#Dm~>
+JcC<$JcFm4o`"jgrVZTjs8)ckrqLs:p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euP)t`aN/EIIL4t83
+J:DuqH[9s]G'%hHEH#f5Chmd"BP1pgA7K(We'eZRe^rO2hV[;Oj5p:&qNg]=rg*AFhin,+qNh/H
+s$?>3s4R/!qq1u%rn.J-f@JL%e+B1.S,/Z@RfSttrl=uWrPeQMqnr3IqSiEOpquNo!28nVs.T>2
+qoSl\s3(;`rltJg!71SgoZd?[r6PAhpU^C:pU^@7ppfh(r4)dprpBaPs6TjTmJcMYn*ol=o_%qQ
+rVH6c#5e8mqYBp]qoel\r6+QOpWN3OnPK'Zr)3>hr`&ks!*8[j!5nQLkemG=qS`SYFEDYKrc\Bf
+H2`*jH[Pg@#C_/PJ:N3%K)L<'KS>-YLB!&.M#<,.MYrD"N;AJ1MYW,-M#N2+LAci)K_U2rK(4Eh
+K)1-!K`?c)LB!&/M#E/3MMmDlMuo!!NrG(?OHKO*,a4IWQ'IZ$Q^F/.R@9V7S=H.AStDXJTqS3U
+USO]^VP^8hW2]cr<3*+&Xfek2YctC<Za7$H[C3NQ\@K/]]=bei^;%Fu_8=(,`5T^8a2l?Db0.uP
+c-FV\d*^7he'umtf%8O+g"P07gtgfChr*GOioB([jQ5OdkNMp0!UB"MliHMArpKpXnaZVLs766_
+rUp3as7cKes7uZjqtp?irVc<dJcFO*J,~>
+JcC<$JcFm4o`"jgrVZTjs8)ckrqLm8p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euP)t`aN/EIIL4t83
+J:DuqH[9s]G'%hHEH#f5Chmd"BP1pgA7K(WrgEkWT)PD_U&UhhUSO]^qJcLUbAm)ns$?=Nn"0TO
+rh'4^rLNk0m<.]9!1<bRn<ij7q3_/Js-EVMr0[5+pNuRZr-SHirgWSLqO@MRlC7gDqjdeYSXnYq
+rJU<*r/(ESr2]gu$E^D3Xfeh1YctC<rNuO2rjDg7rNuU4rO2TjjHoV.pQtlFnPK'Zr)3>hr`&ks
+"'3Lbb5TQdbg+P\rm:\m!0[/ArK?u=rK?]7rK7;)FEDYKrc\BfH2`*jH[Pg@#C_/PJ:N3%K)L<'
+KS>-YLB!&.M#<,.MYrD"N;AJ1MYW,-M#N2+LAci)K_U2rK(4EhK)1-!K`?c)LB!&/M#E/3MMmDl
+Muo!!NrG(?OHKO*,a4IWQ'IZ$Q^F/.R@9V7S=H.AStDXJTqS3UUSO]^VP^8hW2]cr<3*+&Xfek2
+YctC<Za7$H[C3NQ\@K/]]=bei^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'umtf%8O+g"P07
+gtgfChr*GOioB([jQ5OdkNMp0!UB"MliHMArpKpXnaZVLs766_rUp3as7cKes7uZjqtp?irVc<d
+JcFO*J,~>
+JcC<$JcFm4o`"jgrVZTjs8)ckrqLm8p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f%&9udEp1`bfe,L`l5j4_8!^s]=GG[[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euP)t`aN/EIIL4t83
+J:DuqH[9s]G'%hHEH#f5Chmd"BP1pgA7K(WrDN\qr`9&!qc*DRlTFu+nilS,pce^Dq+plaqbd)a
+r_`\n!Du\m;>!6I6MNk=5QF%?;"%9G;Z&u\7d!;A7K?<W;"[]Q;ZB\m<;ohp9)D969`.Q_=8c/#
+<EB*!r`&kss&K/%=T)D/>?kH=>[(E9=oDM)>?q/3nPnpTpJh)ipepWYqGI/gq,@8lr`';+FEVkQ
+GB\=XG^045!d]2mq,QranQ#Qh"]]VcFEMd+G6)r6rd"TlI/\O!IXcitJ:W9'rIY0)Kn]J[s+gT0
+r/(B0r/9s$qMY9/q2,'+reL?)rIt3'pk/EpnU^RhqLed#s+UE+s+gW1rJ:T5Mi7Rn!f`5#rf7)A
+OoCLhPE_;sQ'R`&R$a;0R[]e:S=Q7CT:_dMTq\<WUnjiaVPg>jWW&nsX/rG*Y-5%5Yd(L?Za@-J
+[^NZT\[f;`]Y(ql^V@S#_SX4/`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESR
+j5]4]jlY^gkl0fIlKeH9!U]=SmfN"Knc&+Zo)SF]p&Facp\jmeq>U6fqu-HkrUTr=s4mX)~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrV1d7p@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;FgY1<3
+f$r3tdEg+_bK@oI`l5j4^q[Rq]",>Z[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN^N/EIIL4k22
+J:DuqH[9p\G'%hHEH#f5Chmd"BP1pgA7K(WrmM8)e^iF.h;7)Lj5f>#QL^C<QMQm:Pkp[APkLCB
+QMs2BgA]e&f_!i"f[n^)eFfC$SF2mHa8![Q`VmaO_uIXT`Vd[K`W*mO_sF,tU%"fVaSO$YaoKW\
+bl5lbcN)8hci;;ec25f_ci;Ac])TD:](`c8\Eg^*mf)STmd9HAmf;kVnH8@Sp%SF\rVQKi"9&/o
+qYp<iq"Mu2bl#ZOb4j*Rb4SU,;>X8e;uTbp<W6%is8U"4`95&;`;@ORF:iY=G'A.TH$O^^H[L3h
+I=?Wprdb$"!.t0%s+LE+rJ(?-reUE-r/0m"qhk-)rJ:E-qM+s&rIjruqh"3dr.=ctre1<*rJ(?-
+s+pZ2s,-i7repo<NfO+"!K`HCOsH6UPa.N"Q^=),R@0M5S"-">St;RITV8'RUSFW\V5C,fVl6To
+WWB0%riH@,YHY79ZMq0:['d?N\%&uZ]"@sS3k`8B^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-Ln
+eCE.%f@\d1g=tE=h;7&Ii8N\Uj5f:_k2tjjrojIKli-5OmI'uBs6p$Yrpp*\!;-6_s7ZKerV6Eg
+rqcNhrVZWmo)=4?h#Dm~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrV1d7p@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;FgY1<3
+f$r3tdEg+_bK@oI`l5j4^q[Rq]",>Z[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN^N/EIIL4k22
+J:DuqH[9p\G'%hHEH#f5Chmd"BP1pgA7K(WrgNtXS"9MN!29@crGhXRlZ)lBol9hKqJl.Jr^$1L
+l_"0Js./V%ol]\Es-`ADqNq5L!1EDFqj75Jr-eEhp3Z:Ts-rbOqj[MPqO@MT!hGjOqO@DQpRU/u
+rJU-%s/c.!"g"i.Y-+u-Xobf2ZMh-,[/dZ5[0!_C[J[K-R/30LR-p=8R/**KQM")M;>X8e;uTbp
+<W6#(ai_cMbg"GZrQtPks-!2ArK?u=rK?`8rK@2&&Tr8?GB\:WH$Xd`I!g?jIXZeGJH(0#K)L?%
+K`?c)LB!&.M#)u+MX??!MYDu+M#E,*LAci)K_U2sK'e-eK)1-!K`?c)LB!&/M#N82MZ8V6Muo!!
+NrG(?OHKO*,a4IWQ'IZ%Q^F/.R@9V7S=H.AStD[KTqS3UUSO]^VP^8hW2]cr!NW=$XTbl2YctC<
+rj)p<[C3NQ\@K/]]DfH(]tV7r^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(f\,!4gYCW@
+hV[8LiSrnXjQ,Fbk3(t-klL)8rp0[Qmf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYU0gr;HTbrdk+)
+s*t~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrV1d7p@e1Po^h\Fo'u5<n*]T0m-<j"kiV$hj5].Wi83;FgY1<3
+f$r3tdEg+_bK@oI`l5j4^q[Rq]",>Z[Bm0CYH=n+WMcVhUS4?PSXZ(8Q^*euOcPN^N/EIIL4k22
+J:DuqH[9p\G'%hHEH#f5Chmd"BP1pgA7K(Wr`&nr!*&qus&K"srB':,p-%h-mlg\7r^$?Uqb[)c
+q,%#es&/em!(-<Dr^-6Eqa19JpH\LMmSO$`;,QRUpdP*Mk=>2Aqbd>hs&&2^r)<Dj!E2tq9)D9M
+9`7]c9`7]S9`J2i<r,es<`o<'r`fA,s',D)qHNAemSijZr)<MkohbH]qbm5gr`&hrr`02GGB\:V
+H2`'gH2`*kHW3u?<Uj&Z<W6#5<HN>*G'8(RG^4R\H@($eI=6QnJ,XuuJH1<#KE$W)L&Hc+L]3,+
+M>W7uMu/D+M>`8/L\cc(L&H]"KDU8fJc(,rKDpQ(L&Hc+L]<20M>rJ5MuJY:NK0%uNrb?)rfSOj
+Pa%GuQC!r*R$jA2S"#q<SXuFFTV/!PU8+KZUnsrcVl-Jmri-""XT#=*Y-5(6Z*OA8$+.+K[^WcW
+\[oEP]K3a?^V@S#_SX4/`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4]
+jlY^gkl0fIlKeH9!U]=Sn,MkWnc&+Zo)SF]p&Facp\jmeq>U6fqu-HkrUTr=s4mX)~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noO?jn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSt2@>R$X)&P*(fcN/NRMLPCJ7
+Jq/?!I!^0aGBS(MEcH&9DJX*'BkV-kARo:[daJ*C#h7DVg"Y?>ioBQqq3LiAl]g\"rB^/2kLfmg
+fC>EjSH#)Ya8*aQ`VmaP_u@UC`;mjQ_sa?"U[b)WUBRC5aN;QHrlG2`bP06\blH&gci;;bchG`]
+ci;Ab])K>:]&1'umeuS`nF,l9nac8Bo_/"Qq>(!crVQQk!rMiiqY9^+!6kDbn&k1Dqo\b3pJLfc
+pf%/krDibr!*Adl!5e`QqS_O6rl"cSs)e9`"a5*6G^+N5H3&A?rdFfq!.Xuus+(0%rIb-'s+UB*
+s+gQ/pkeBqp5/^'rJ13'rIt3'pk/Hql@JncqLed#s+UE+s+gW1re^Z4s,6l8#E=b(O,oBaOoCLE
+PEc'3)O?_VR$a;1R[]e:SXl@DT:hjNTq\<WUnjiarhfdqWW&muX/u<&;6I+,Yd(L>Za7$H[^NZT
+\@K/]]=bei^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'umtf%8O+f\,!4gYCW@hV[8LiSrnX
+jQ,Fbk3(t-klL)8rp0[Qmf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYU0gr;HTbrdk+)s*t~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSt2@>R$X)&P*(fcN/NRMLPCJ7
+Jq/?!I!^0aGBS(MEcH&9DJX*'BkV-kARo:[qjRYWSY#hQ!hc9^nT+/>oPjSFl>lhhp7UT@s.8M!
+k]QoIs-`ADqj7;Lr0d/Drg3SNpjN$eom?:Vs-rhQr1!MNqj[PSr13VQqOI_YSXk\qMYrD%MYsRT
+XoGR&Y6D/8Z*L^BrNuO2s0hd3r3l6bs-NPKoU#-9qj.;KqG?o`qbm2fr`&hrr)O#'b0/#Qc-H75
+s3LbnrK?u?rK@#>rK?`8rf[;'s)eKgGB\:VH2`*jH[Pg@s*artrdb$"!.t0%s+LE+r.b6,rJ:6*
+m>CUor.t<,q1ej%rIjruqh"*arIXlure1<*rJ(?-s+pZ2s,-i7req)ANfK0]OH>V(Oo^c2rfnCf
+Q^=),R@9S6S"-%?St;RITV8'RUSFW\V5F6i!N<!sWWB0%riK&#YHY79ZEggC['d?N\%&rY\[oDc
+]Y2%o^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\a/g=k<:h;-rFi8ESRj5]4]jlY^g
+kl0fIlKeH9!U]=Sn,MkWnc&+Zo)SF]p&Facp\jmeq>U6fqu-HkrUTr=s4mX)~>
+JcC<$JcFp5o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_no=3hn*f]2m-Es$l0%3kjQ#:Zi8<DIgtLH6
+f@JI#dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYcb+/Wi2hlUnXQTSt2@>R$X)&P*(fcN/NRMLPCJ7
+Jq/?!I!^0aGBS(MEcH&9DJX*'BkV-kARo:[q,@Gr<`W6"<9ZOA4TI\<4nLr+4oI\C:\[c^;>a8f
+;#jMn;>`cO62j4I6i04C62s4G;!h-C;Y3EU7d<JG;,C(dqb[2fqb[;ir_ibno2>KbqG[Mp<)i`e
+qb-BOn4iUMr`Attr)Eo$='&L,=oDM(>Q.n+>Q7n'>6%pn<:j,Z<;]Yp;Yj5a;>X8d;uTbp<W#ku
+=*FRf!-eBdr-J<@q,QubnQ#Tis)e9`"a5*6G^+N5H3&A?rdFfq!.Xuus+(0%rIb-'s+UB*s+gQ/
+pkeBqp5/^'rJ13'rIt3'pk/Hql@JncqLed#s+UE+s+gW1re^Z4s,6l8#E=b(O,oBaOoCLEPEc'3
+)O?_VR$a;1R[]e:SXl@DT:hjNTq\<WUnjiarhfdqWW&muX/u<&;6I+,Yd(L>Za7$H[^NZT\@K/]
+]=bei^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'umtf%8O+f\,!4gYCW@hV[8LiSrnXjQ,Fb
+k3(t-klL)8rp0[Qmf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYU0gr;HTbrdk+)s*t~>
+JcC<$JcFp5o`"jgrVZTjs8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GJ][^<BGYcb+/Wi2hlUnXQTSt):<R$O#%P*(fcN/NOKLPCJ7
+JUi5uI!^0aGBS(MEcH&9DJX*'BkV-kARo:[rmL_n#1_;Wg>1WDm?[g=pQb33!0d5Cn!3f:pY+`^
+!8-t7qOQW9s2XfPrl+fRl,EY?r58$!rLs:en=ooWrlP,]!6b)[s3:DcrQkDgnBV*]qRcU8rk%p9
+iOT!W!q>aMrU:6co()DEp@n=Vq>'m`rVQQk!rMiirV-BerqHKfm`Y1Dlc]=Nr_W;cqbm2frD`br
+qc<\t!*Jmnrke]QqS_L5s2=oUs)e9`!-\?c!I/nhH3/G@I/\NqIXckHJH(0#K)L?%K`6]'LAlu,
+LuF3fM#E,)LAci(K_U2tK)'ukJGFcpK):3"K`?c)LB!&/M#N82MZ8V6Mueourf@)@!0R8D!L&cI
+Pl[2;rg3_SRf8cWS=TYN!M?%aT`Lm_rhKRkVZ*IoW2]cr!NW=$XU;57YctC;ZEpmE[JmTe\%&uZ
+]">Vf]tV4q^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\dUg'QNhh;-rFi8ESRro4RN
+jlY^gkih9qlKdd&m-X6/rpKmWnbr"[oCV\Sp&Facp\agdq>U6fqu6NkrUTr=s5!^*~>
+JcC<$JcFp5o`"jgrVZTjs8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GJ][^<BGYcb+/Wi2hlUnXQTSt):<R$O#%P*(fcN/NOKLPCJ7
+JUi5uI!^0aGBS(MEcH&9DJX*'BkV-kARo:[q3qDUT)G8]T^6^nEUIfAEURrG62.&ITDkMQTBCC^
+FoRlmR/!*=R/VR1IJS?aHhD^\Rf&ZMRf&WTSGf#VT(SZPS,f,VMrKWlMt)])X9,N,YPkX&Y6D/8
+ZEggCrj;R1s0ha2rjDg7k*Z"3n<j'=r_W;cqbm2frD`brqc<\t#$B'mc-=PZrQbPldF%lTq31c?
+q2tW=oTT9;s)e9`!-\?c!I/nhH3/G@I/\NqIXckHJH(0#K)L?%K`6]'LAlu,LuF3fM#E,)LAci(
+K_U2tK)'ukJGFcpK):3"K`?c)LB!&/M#N82MZ8V6Mueourf@)@!0R8D!L&cIPl[2;rg3_SRf8cW
+S=TYN!M?%aT`Lm_rhKRkVZ*IoW2]cr!NW=$XU;57YctC;ZEpmE[JmTe\%&uZ]">Vf]tV4q^VI\&
+_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\dUg'QNhh;-rFi8ESRro4RNjlY^gkih9qlKdd&
+m-X6/rpKmWnbr"[oCV\Sp&Facp\agdq>U6fqu6NkrUTr=s5!^*~>
+JcC<$JcFp5o`"jgrVZTjs8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp4bbfe,La2Q!6_8!^s]=GJ][^<BGYcb+/Wi2hlUnXQTSt):<R$O#%P*(fcN/NOKLPCJ7
+JUi5uI!^0aGBS(MEcH&9DJX*'BkV-kARo:[pf%Ds<`W4#<:rBL4TI\B4oRY54o%8A5Q!_<4o@VD
+:\7KZ;?'Jd;>EQM62O"F6iKFF62FFJ;>jAm;<LjR7Is"88,cB`;#O8e;#*ub;Yj>g<;]Yp<;9)`
+9Bo4C:&%E[=8l7u<<ZE)=BJ^/r`];*r*95*!*];)r`nSbqGZ]Zs&8nnp/1]bpf%,jr`/hrr`9,&
+GlDpeGlN'eH2pnB<;BPa<:NugFT6I`G5c[dG^9:7!df<Brd=isIt.HJs+(0%rIb-'re:9)reLH.
+iJIGfrJ13'rIt0&pk/Krq186iq18Krqh+m$s+UE+s+gW1re^Z4s,6l8!KE-=O8k:AOoCLEPEc'3
+!LB)OQiWVDrgNqYSc52]T:l1W!MZ@gU]I<hrhfdqWW&muX/u<&$EgS:Yd(I=Za7$HrjFGg\@K/]
+]=bei^:q@s^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(f\-8X$/=7kh;7&Ii8N\pit1;5
+k2tjjkiq?slg*p(mI'EAmfDqJrUL$]o^r.Us7ZKer:p<frqcNhrqu]mo)=4?h>`!~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bKJ#K`l5j4_8!^s]=GG[[Bm0CYH=n+WMcViUnXQTSt):<R$O#$P)t`bN/NOKL5(A6
+JUi5uI!U*`GBS(MEcH&9DJX*'BkV-kARo:[rR1Vm"Ou#Sg"Z"_q3L]=n!*1(qa'o/pY#T#s4RA)
+q:Y5,r12o=!6FrUrl4iSrl4oWrl4`P!64oTrl"cQ!6"H'rM9@dn"Kr[aiV]Jrlb)\rlt8ar6P>g
+r6bGh!mf6?r6P>Rqn2m>s183Apq#Fp!V,a[nc/+YnI"m[p@n=Vq"aa^qY9phqYBp]p]&D)bOis@
+bP+m1;YX2h<;fho<rQ2"=S)Oo_8=(g_u.I6_u@US`W(#\Fa!b.!dK!9rd"TlI/\QoIfFosJH(3#
+K)L?%K`6]'LAco)M!^&qM#<&'LAci(K_U2tK)1&eJGausK):3"K`?c)LB!&/M#N82M?&S6N;nk;
+NrG(EOHGZgP*;)orfmMMQi<?QR@=,E!M#_[ScPIVrh0@eU].%iV5F6i!N<!sWWB0%riI<GYHY79
+Z*L^B['d<M[^WcW\[oDb]Y(ql^V@S#_SX4/rl$5(a2l?Db0.uPc-FV\d*^7he'umtf%8O+g"P07
+gYCW@hV[8LiSsjs&EMs8k3(sll07L!lg4!*mdC)C!q>aMrpg-^o^r.Us7ZKer:p<frqcNhrVZWm
+o)=4?h>`!~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bKJ#K`l5j4_8!^s]=GG[[Bm0CYH=n+WMcViUnXQTSt):<R$O#$P)t`bN/NOKL5(A6
+JUi5uI!U*`GBS(MEcH&9DJX*'BkV-kARo:[pmVDVSXuIGpi?7QpN#qHp2KkJluMth!2&tXq4IVY
+s.B=apRgJhlZE2qkEtq1o9fE(qL/3foR$=YqO7GR!h,UJrL*eWR[X2ErLEkXs.9"Xr1<nYrL<nZ
+N;eb4N;\[tMYrD'M?'gXYPt^)Y6D/8ZEggCrNuI0!4ML,igBb4m[3m<pJLcbpf%,jrDi_qr`B)$
+"O#$6cHZ@6s3L_ls3^_,q31c?q2tW=oooB<s)\9aG5c[eG^4T6H3&A?rdFfqs*t#us+13%rIb-'
+re:9)rJ19+m>:[qr.k'%rIt0&pk/KrqLS*cr.4fuqh+m$s+UE+s+gW1re^Z4!/pi8s,@#=rf7;G
+OcbfiPEV71Pl[2;rg3_SRf8cWS=TYN!M?%aT`Lm_rhKRkVZ*IoW2]cr!NW=$XWXdMYctC;ZEpmE
+[C*HO\%&uZ]">Se]Y2%o^VI\&_Sa=k`?rUFaN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<9gtgfC
+hr*GOir7sLjQ5OdkNM-ol0@U#m-O--mf)YVnF?&JncJFTo`"O`pAambq#C0hqYU0gr;HTbrdk+*
+s*t~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Ep#ki_*ijQ#7Xi83;FgY1?4
+f%&9udEp1`bKJ#K`l5j4_8!^s]=GG[[Bm0CYH=n+WMcViUnXQTSt):<R$O#$P)t`bN/NOKL5(A6
+JUi5uI!U*`GBS(MEcH&9DJX*'BkV-kARo:[pJ_,mr`8eVq*"+/p-&79p-8I=r&spCr_NGgrDEAe
+mnr=9n3d1Aq*FmSnPS:DpI4"0s&&\js&&Vhp/1T_mo'3Zr^u`SlqI"Fqb6ujs&T%t"]e],=BSf*
+>5hb)>l@k,>5DJ'>lRa`<<#n\<;08d;YX2h<;fho<rQ2"=T*FDGl;peH38MA;cEWoq,Qranl>^3
+!HiSbG63#7H2`*jH[Pg@s*jutrdb$"s+:3%s+LB*r.b0*qhXWrqM>')pkJa$r.Oitr.=crmst=e
+rIXp!re1<*rJ(?-s+pZ2s,$f7rf$l:!07&>#EY(1P*2#mPl?pKQC%T<!L]DURfT%Mrgj._T`1Vc
+U8.^`!Mu[mVZE`qri-""XT#=EY-5(6Z*CU@Za@-J[^NZT\[f;`]=bei^;%Fu_8=(,`;[_&`lH0A
+ai_fMbg"GYcd:(edaQ^qe^i@(f\,!4gY:N>h;7&Ii8N\pit1;5k2tjjkiq?slg*p(mI'EAmfN"K
+nc&(\oCV\Sp&Facp\agdq>U6fqu-HkrUTr=s5!^*~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]Xt_a[^EHIYck11Wi;nnUnaWVSt2C@R@';*PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_@fFdWe'c\BdfJ"Mqj6i=m$7=0lBM?9qa'i-q:YMr
+r7U>)rgi5Bs2b8^r5nu[pW*-Orl>#XrPe]Srl+lTrke`Srh\qVm\Bg(!6Y8`qTSuapWi``qU#/f
+p!EKGq7Q[<q7>Oqs76-Y#4qK[p\4IXrV6HiqtpEis7u]ip\4R-o#p[Jl-&s$qGR#crD`brqH!Ss
+r`K/&o`+s-rke]Qr5@U4s2=qZ#Bb35GB\:VH2`*kH[L5?IK+`rJ,OotJcC?#KDpQ'L&-Q%L[9in
+L\HQ$L&H]"KD^>uJa%^`Jc12tKE$W)L&Hc+L]<20M>rG5MuJ\8N<#"<O$\qjOcklkPa%GuQBml)
+R$jA2S"#q<SXuFFT:hmOU8"EYUnsobVl-JlWN)u!X/rG*Y-+t4Yd(I=Za7$H[C3NQ\Gj#W]">Vf
+]tV7r^qde'_Sa=2`Q#s>aN;TJbKS61c4SCLdF$CkeC<%"f@S[.g=k<:rnSIKhr*GOioB([jQ5Od
+kNM-ol0@U#m-O--mf)YVnF?&JncJFTo_nFap@n=Zq#C0hqYU0gr;HTbrdk+*s*t~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]Xt_a[^EHIYck11Wi;nnUnaWVSt2C@R@';*PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_@fDhsSGScWS=Q5BEr:"SEq+/DE9_HD6Mj(JTD"rR
+TD>/VTAOh[FoRlkR.ZmAR/VU3Ie\?gI-u@XRL,IPR[]e8R[]e:rL<_Ts.01]oq2/RqOR,7l&,Cs
+nr!INr2p4,Yd(L>Zi.9%[/dT1[J6-dRG4,,QhsYV;YF&f<;ono<rQ2"=T2J'bl,cjcHjh`d*^8;
+P51=?P4at/P5fV/F`qqPGBe@Xrd"WmI!kpAs*artrIFp!s+:3%re19)qM+p'm"kLnpP/U"rIjru
+r.=fsl%&_`rIXp!s+LE+rJ(?-s+pZ2s,$f7rf$l:!07&>6BI=lP*2#nPa.N"QC!u+R@0M5S"-">
+St;RHTV8'RU8+N[V5:&eVl6PnWiE,#XKAV-Y-5(6Z*CU@Za@-J[^NZTrj`rY]=bei^;%Fu^qmn)
+_o0O5`lH0Aai_fMbg$.4&^ShOdF-LneCE.%f@\d1g=tE^h&5),i8ESRj5]4]jlY^gkih9qlKdd&
+m-X6/rpKpXnaZVL!qZ'VrUg6cp\4U\s7uZjqtp?irVc<dJcFR+J,~>
+JcC<$JcFs6o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-Es$l0.9ljl>C[i8EJJgtLK7
+f@JI$da?Cdc-+8NaMu3:_SEq"]Xt_a[^EHIYck11Wi;nnUnaWVSt2C@R@';*PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_@fB=,<Vf\p<<,2V4T7M)55.525P[JC6Mj(J:]4,d
+;>F&Z;:7i26N0:L;!V!A;Z9/Z7H6i<;Gm*`r)!Gjqbd&bn5JgLrCZr[mS*@Lr(I2o<`N3"<<ZE)
+=BJ^/rEB,'s'5M,r`])$qbta=qbd2fp/Cohr`/eqr`B)$r`T5E!-nEe!.+Wkr_rbpq,QZYqc3Z<
+#Bb35GB\:VH2`*kH[L5?IK+`rJ,OotJcC?#KDpQ'L&-Q%L[9inL\HQ$L&H]"KD^>uJa%^`Jc12t
+KE$W)L&Hc+L]<20M>rG5MuJ\8N<#"<O$\qjOcklkPa%GuQBml)R$jA2S"#q<SXuFFT:hmOU8"EY
+UnsobVl-JlWN)u!X/rG*Y-+t4Yd(I=Za7$H[C3NQ\Gj#W]">Vf]tV7r^qde'_Sa=2`Q#s>aN;TJ
+bKS61c4SCLdF$CkeC<%"f@S[.g=k<:rnSIKhr*GOioB([jQ5OdkNM-ol0@U#m-O--mf)YVnF?&J
+ncJFTo_nFap@n=Zq#C0hqYU0gr;HTbrdk+*s*t~>
+JcC<$JcFs6o`"jgrVZTjs8)ckrqQNf!;?EbGP(Lto'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYck11Wi;nnUnaWVSt2@>R$X,(PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_e,7Yje,Pd)QJ@c'Pjt%<6Ms.>gAT^pg&Th)S`u[E
+SbnrHS,15,b5KH^aRmURaSs6R`r<p[`5BL2`VZP(V>m@fV=CA]aTBW.bPKH_c1oT_chGf]dJhMk
+dIFjK]_oD<]&C1+o(2GDo_%qPq"Xg`rqcQi!W)Wkq#C*gpA+IXb4NmIb3dCO;>F,a;uK\o<Vfbq
+=8l>"=TDXts8Kk7_Z%IO`8SW6F96T.G5c[dG^9:7s*OcnrdFfq!.Xrts+13%r.G!%re:-%lA,%e
+rIt0&pk/Krr.3pZrIOp!r.G$&re:?+s+gW1re^Z4!/pi8s,@#=rf7)AOoCM,PE_;sQ'Rc'R$a;1
+R[]e:SXl@DT:hjNTq\<WUnjiaVPg>jWMuntX/i>(Xfeh1YctC;ZEpmE['d?N\%)FJ%_B9b]Y2"m
+^V@S#_SX4/rl$t=a2l?Db0.uPc-FV\d*^7he'lgre^i@(f\,!4gYCW@hVR/Ji8N\Uj5f:_k2tjj
+kiq?slg*p(mI'EAmfN"Knc&(\oCV\Ro`Fj]p\agdq>U6fqu-HkrUTr=s5!^*~>
+JcC<$JcFs6o`"jgrVZTjs8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYck11Wi;nnUnaWVSt2@>R$X,(PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_qj[GP!-.%>jDj^1r^-NKr1E_Vpn.5P!2&(jqK;OS
+q3gH6p6k`Dqg\HknU9qTr0mYTs-ikTrgWtXr1*eXs.8tWr1O"\qO[/7qhsp#qht''riZ[3YHY79
+ZEggC[']D3rj;O0pmCfDhO+8.r_`JhpJ_#irDi\pr`B)$r)j&(bPfZdcHlI9s3^Y*q31c?oo\p1
+s)\<bG'<k/!I/nhHN/?lI/\QoIK4lrJH(3#K)C9#K`6]#L?aQeLAci(K_U2tK)C2\JGk&tK)C9$
+K`6])LB!&/M#N82M?&S6N;nk;NrG(?OHKO*4d2+pQ'IZ%Q^F/.R[T_8S=Q4BStD[KTqS3UUSO]^
+VP^8hW2ZbrWiN2%Xf\b/YHY79Z*L^B['[6L[^WdG\IQ3_]Y(qk^;%Fu_8=(,`;[_;`lH0Aai_fM
+bg"GYcd:(edaQ[peCE.%f@\d1g=tE=h;7#Gi8ESRj5]4]jlY^gkih9qlKdd&m-X6/rpKpXnaZVL
+!qZ'VrUg6cp\4U\s7uZjqtp?irVc<dJcFR+J,~>
+JcC<$JcFs6o`"jgrVZTjs8)ckrqQNf!;?EbG4bCso'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!6_SEq"]XkY_[^<BGYck11Wi;nnUnaWVSt2@>R$X,(PEM#gNJrdPLk^V:
+K7SQ&I=-?eG^"=QFE2A?DJj9+CM@HpAn>L_qc*Mor`&h[r]U6Cr]S[nr'1$ArB:-Hr'C6Vp/1W^
+oMOF3n3R1Q;,R6hmSW1Ge40I8r)!Dhr_WMi!)WPioMY3Xmn<@Hqb-?Nr_<;a$!(&,<E<1&=BSf*
+>5DG'>lIt+=o__&>5hb$;p\MC;>F,a;uK\o<Vfbq=8l>"=ThoPG^+N5GQ<$fHN8Hl;uK\k<U!K]
+<W@.BF`qs-G6)r6rd+Tks*Xfos*artrIFp!s+:0$re19)pkJ'honNF!r.Oitr.=itjFI2[rIXs"
+s+LB*reCH.s+pZ2s,$f7rf$l:!07&>!K`HCP!,"nPa.N"Q^=),R@9S6S"-%?St;RITV8'RUSFW\
+V5C,fVl6SoWiE,#XKAV-Y-5(6Z*CU@Za@*I[^NZTrj`NM]=bei]tV7r^qmn)_o2Pn43#=^aN;TJ
+bKS5VcHjkbdF-LmeC<%"f@S[.g=k<:h;-rEhr*GOioB([jQ5OdkNM-ol0@U#m-O--mf)YVnF?&J
+ncJFTo_nFap@n=Zq#C0hqYU0gr;HTbrdk+*s*t~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,La2Q!6_8!^t]XkY_[^<BGYcb+/Wi2hlUnaWVSt2@>R$X)&P*1ofNJraOLk^V9
+K7SQ%I=-?eG^"=QFE2A?DJj<,CM@HqAn>O`rmUhoqpPP4r0R/Df9Q?"o9K5?rBUG<iS"@fg=l@n
+hjj>.s2jQKrQ,&\rQ"WOr5JZ6q5=%cqPF"b!2]Cbs2k;aq98f_"4,9=cMZ#]d.bofd/;;T]DB,!
+\Hqj#p%J+Rp\=O]q>C'jqtg-fq#C*epA"CTb4s0Ib43[O;YF&e<;ono<rQ2"=Sl8$>5qh"s8Be5
+_Z%IQ`8SW6FT6I`G5c[eG^4T6HN/<lI/SKnIK4lrJGt-"K)C9#K`-V\LAZc'K_U2tK)C2XJGk&u
+K):3#K`?c)L'!-dM#N82M?&S6N;nk;NrG(?OHKO*$^6g>Q'IZ%Q^F/.Rf8cWS=TYN!M?%aT`Lm_
+rhKRkVZ*J8W2ZbrWiN5&Xf\b/YHY79Z*L^B['[6L[^WcV\[f;`rk&EJ^;%Fu_>_:X_o0O5`lH0A
+aiaV+%F!)BcHjkbdF-LneCE.Lf-8l#g=k<:h;-rFhr*GOioB([jQ5OdkNM-ol0@U#m-O-,mf)YV
+nF?&JncJFTo_nI_pAamcq#C0hqYU0gr;HTbrdk+*s*t~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrV1g8p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,La2Q!6_8!^t]XkY_[^<BGYcb+/Wi2hlUnaWVSt2@>R$X)&P*1ofNJraOLk^V9
+K7SQ%I=-?eG^"=QFE2A?DJj<,CM@HqAn>O`SGSfQS,dX/EWC1VErU4MEoh<4Er89&62mMNT_P/N
+T_Wd*Fm=/IFnp.VRf&T=R.csGR.,UrIKFqHIJ/'fRf/`URf/`RS-,=PSXobOoq2/Tr1EkXlAYOs
+onrX)oSWXOs02O.s0D[2rj;^5rj2a7[']b=r3Z:-opGKAiL'V2qGR#cr)EYqqH!Ssr`K&#s'#G,
+"O#'7cHc@7!R]?iP51=?P4k%3P5fY(FT?UaG63#7H2`-iHN8HlIK+`rJ,OosJcC?"KDpQ&L#%L]
+L&?W!KD^?!J`)(WJc:8uKE$W)L&H`-LPUccM>rG5MuJ\8N<#"<Nrb?)rfRYQPa%GuQC!r*R$jEB
+RfT%Mrgj._T`1VcU8.^`!Mu[mV]Vk:WN)u!XK8P+Y-+t4Yd(I=Za7$G[C3NQ\@B)[]"@sS"hhXb
+^VI\b_?n,u`Poj;aN2KGrlYbpc-FV\d*^7he'umtf)F8Ff\,!4gYCW@hV[5Ki8N\Uj5f:_k2tjj
+kiq?slg*p(mHs?@mfN"Knc&(\oCV\Rp&Facp\jmeq>U6fqu-HkrUTr=s5!^*~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?4
+f@AC"dEp1abfe,La2Q!6_8!^t]XkY_[^<BGYcb+/Wi2hlUnaWVSt2@>R$X)&P*1ofNJraOLk^V9
+K7SQ%I=-?eG^"=QFE2A?DJj<,CM@HqAn>O`qGdDns&8t_pceX>b!,\cr'L?Jr(m>hp/1cbo25<N
+pHn+3oKiOTr)2fWlr*4?o1/IC"B&)o:f.*dr_WMi!)WSjo2>*Wl:^bAqFgHSr_<Ac#Zar+<``C*
+=]tZ+s',J+!F&b,>Q.h*=o;J'>Q.n#;q+eC;YF&e<;ono<rQ2"=Sl8$>5qh,GQ`58G^4W5HhUM8
+<Td?]FT6I`G5c[eG^4T6HN/<lI/SKnIK4lrJGt-"K)C9#K`-V\LAZc'K_U2tK)C2XJGk&uK):3#
+K`?c)L'!-dM#N82M?&S6N;nk;NrG(?OHKO*$^6g>Q'IZ%Q^F/.Rf8cWS=TYN!M?%aT`Lm_rhKRk
+VZ*J8W2ZbrWiN5&Xf\b/YHY79Z*L^B['[6L[^WcV\[f;`rk&EJ^;%Fu_>_:X_o0O5`lH0AaiaV+%
+F!)BcHjkbdF-LneCE.Lf-8l#g=k<:h;-rFhr*GOioB([jQ5OdkNM-ol0@U#m-O-,mf)YVnF?&Jn
+cJFTo_nI_pAamcq#C0hqYU0gr;HTbrdk+*s*t~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Fec-+;PaMu3:_SO"$]Xt_a[^EHJZ*:C5X/`+rV50iZT:VUCR[BG,P`h/jO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRWtBP(geACUV-rR1Yns-WMHpm0-hq*P*I!o;Ydo@j2u!SZ<)
+gA9RbSGA`MSGAZLb43[Tb5TN_aSa*N`W3%:WV`XmVt?k^Vtm4iV#e]]qTSuas3CSh!RT0jd/VMk
+d-]6B]Cic"\c;C'p]($`q>^<kq>^6gp\aa[p[QE'bNd7CbPb?4;uBVn<Vfbq=8l>!=oV\)>Q7t%
+s8'V2_uI[8_uIXWFEM_LrceBe!."Nh!df<BrI+]p!.Xoss+10$r.Fs$r.X?hqM"j#pOiBqr.4Eh
+p4)acrdk'#r.G$&s+UE+s+^T1rJ:c:Mi3OQNK&ttNrb?)rfR;GPl?pKQC%T<!L]DURfT%Mrgj._
+T`1VcU8.^`!Mu[mVZE`qri.'@XK8P+Y-5%5Yd(I=Za7$G[C3NQ\%&uZ]">Se]Y2&Y^F[1:_SX4/
+`Poj:a2l?Db0.uPc-FV\cd:(edaQ^qe^i@(f\+s3g=tE=h;7&gi!SH&j5]4^jlY^gkl0fOlKdd&
+m-X3.rpKpXnaZVLs766_rUp3as7cKerqZTjqtp?ir;H3cJcFU,J,~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noXEkn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Fec-+;PaMu3:_SO"$]Xt_a[^EHJZ*:C5X/`+rV50iZT:VUCR[BG,P`h/jO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRWtBP(geA=T1eS,JlOF8g:VF7OA<EU\#E6N9=PTV(tOoq1oM
+l?2H:qfVgYqjQl>q3^fBs-Wb8nUL+YomQk/rL3eUrL<_Trgj%[pn%PZm[rKtreofos02O.s0DU0
+p9ae+qm?1,nX0-?j-]h4rDN>fr)EVpqH!Ssr`K&#s'#D+s',ZNcHji7ciMPBp6,68q3(91s,mJ+
+F`hm,GQ2mfH2W$jH[L5>IK+`rJ,FisJc:9!KDgK$L$49fL&?VuKD^?!Jb"?bJ+\?kJc:9!KE$W)
+L&Hc+LB*//M$JorMi<USNK4"!!K`HCOo^c2rfmMMQi<?QR@=,E!M#_[ScPIVrh0@eU].%iV5F6i
+!N<!sWZS:CXKAV-YHP17Z*CU@Za@*I[^NZS\@K/]]=Y_g]tXK\/AT*=_Sa=2`Q#p<aN2KGbKJ,S
+cHab^d*^7he'umtf%8O+g"G*5gYCW@hV\=j$K:")j5f=`k2tjjroj[Qlg*p(mHs?@mfN"Knc&+Z
+o)SF]p&Facp\jmdq>^<gqu-HjrUTr=s5*d+~>
+JcC<$JcG!7o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noF9in*f]3m-Es$l0.9ljl>C\i8EJJgtUQ8
+f@JI$da?Fec-+;PaMu3:_SO"$]Xt_a[^EHJZ*:C5X/`+rV50iZT:VUCR[BG,P`h/jO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRWtBP(geAGK4'<W>;"557;:6N9=O;#=#g;"[Zc;#!of;#aDm
+;!LC36hs%K;W:RC;?0Y\7d3GC;#jGj:B45e;#jMm;>=&V;rUIG9)D9L9`J,q='/R-o3),urEB2'
+rEB5*r*8bjfMqfIp/ClgrDi\pr`B)$qcWr&r`fD-s*+Kgrd+NiqGd,fk>VP*F`hm,GQ2mfH2W$j
+H[L5>IK+`rJ,FisJc:9!KDgK$L$49fL&?VuKD^?!Jb"?bJ+\?kJc:9!KE$W)L&Hc+LB*//M$Jor
+Mi<USNK4"!!K`HCOo^c2rfmMMQi<?QR@=,E!M#_[ScPIVrh0@eU].%iV5F6i!N<!sWZS:CXKAV-
+YHP17Z*CU@Za@*I[^NZS\@K/]]=Y_g]tXK\/AT*=_Sa=2`Q#p<aN2KGbKJ,ScHab^d*^7he'umt
+f%8O+g"G*5gYCW@hV\=j$K:")j5f=`k2tjjroj[Qlg*p(mHs?@mfN"Knc&+Zo)SF]p&Facp\jmd
+q>^<gqu-HjrUTr=s5*d+~>
+JcC<$JcG$8oD\afrVZTjs8)ckrqQNf!;?EbH1^_!o'u8>n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHIYck12X/`+rV50iZT:VRBR[BG,P`h/iO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfAC]3/e,@_pe*`RsQM6[>QMQmDQLg@A6hitJ62o[@
+gtVSWr7h8,s4[P-pY5\:ka_:9p72)N!6k;_s31&Wr6#&]!6G#W!QN1V`rE%;Wr/joW:-YZW;ELl
+bPo``c2Gued,EC5]C3?"\H;O#q"+:]q#0s`pA4Lap@msss3(;^!6OiTo?6f*r)EVpqH!Ssr`K&#
+r`];*r*8sqq83*J!6!m7"*A[.G5ZUdG^4T6HN/?lI/\QoIf=iqJGt-"K)1,tK_L2tLA$>uK_L,s
+K)C2lJF.j\JGt-!K)C9$K`?c*LB!#/M#E/8MMmCON/`gWrf7)AOoCLEPEc'3!LB)OQiWVDrgOIh
+SXuFFT:hmOU8"EYUnsobrhfdqWW&muX/u<&)Qp9IYctC<ZEpmE['d?N\$rlX\[oDb]Y(qlrkArY
+_8=(,`5KX6`lH0AaiaV+'$SVGcHjkbdF-LmeC<%"f@S[.rn7P1gtgfChu;O@iSrnXjQ5Lck3(t-
+km-M>lg4!*mI'uB!q>aMrpp*\!;-6_s7ZKerV6Bfs8)WirVZTlo)=4?hZ&*~>
+JcC<$JcG$8oD\afrVZTjs8)ckrqQNf!;?EbGP(Lto'u8>n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHIYck12X/`+rV50iZT:VRBR[BG,P`h/iO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfAGhtrS,]#UF7aSKF7+)FEU@cH6hitJ62.&BTD5)@
+FmXALFoQRXRdHO@R.QdHR/)9oJ,XolIK#]2S,JlWSc>;]T)bJ]TDG5LTAGP*Ms#s!Z*L\4ZhCd+
+[J@00[JmW5[I'@]RGaJ4Qh=;T<;fhn<rQ2"=Sl8#>5hb(>lE"Kd/MDndaRlPq31W;nW<oqF`hm+
+G63#7H2`-iHiJKmIK+cqJ,OosJcC>uKD^DsL&6VuL&6PtKD^?!Jb4K[J+nKmJc:9!KE$W)L&Qi,
+LB*//M$JorMi<USNK4"!!K`HCOo^c2rfmMMQi<?QR@=,E&=f;_StDXJTqS3TUSO]^V5F6i!N<!s
+WWB0%riI*AYHP17Z*L[AZa@*I[^NZS\@K/]]=Y_g]tXK\%`#ot_Sa=1`Poj;aN2KGrlYquc-FV\
+d*^7he'lgre^i@(f\-8X"l%hgh;7&gi!SH&j5]4^jlY^gkl0fOlKdd&m-X3.rpKpXnaZVLs766_
+rUp3as7cKerqZTjqtp?ir;H3cJcFU,J,~>
+JcC<$JcG$8oD\afrVZTjs8)ckrqQNf!;?EbGP(Lto'u8>n*f]2m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHIYck12X/`+rV50iZT:VRBR[BG,P`h/iO,]*UM26n?
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfAH#R.<W,ns<U)aJ4n:f35Oq#24TIkE63'=N;#F,h
+;!q3X:]NlF6Kpl96K(f<;?0Yk;?0YU7dikI;#jGl:]F8f;>sGq;,U:hqGQWX!)2-?s%<2^mS!ab
+=BJ^/n65`mr`T;+ra#J-m8Me>oi(cfrDi\pr`B)$qcWo%r`f;*!I/ngHN&9kI/R%7<U!HbFEM_L
+rHA<fH$TC8s*OcnrdFfqrdXlsrdk*$qLe^!pP&L!p4`BspOiBqr.4Kjm=4k\rdk'#r.G$&s+UH,
+s+^T1rJ:c:Mi3OQNK&ttNrb?)rfR;GPl?pKQC%T<!L]DURh2*\St;RHTV8'RU8+N[V5:'gVZE`q
+ri-""XT#=?Y-5%5Yd(L>Za7$G[C3NQ\%&uZ]">Se]Y2&Y^CJ&q_SX4/`5T^8a2l?Db5TQsbg"GY
+cd:(edaQ[peCE.%f@\dUg'-6dh;-rFrnn.BioB([jlPXekNMp0#O:X@m-O-,mf)YVnF?&Jo)J:]
+o_nI_pAamcq#:*hqYU0gr;?Nardk++s*t~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrV1m:p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!7_SEq"]XkY`[^EHIYck11Wi;nnV50iZT:VRBR@';*P`h/iNfB!TM2-h>
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfeCE(LeG@YmR.?U6Q2m33QM-UC6hj"Gh#Z<cqV(l%
+r7q&$rg`nUka_=:opkHoqoefX!m/O)prE?QrM]@fr2B4boVhf5rlkDerm(PirQtSlrR(\prmCeo
+r6kSlo$RNOqn21*l+6T!o_A[eq=s^YpAXgapAOa`p&OjKb5BBVb4<aN;uBVn<V]\p=8l>!=oMV(
+>Pqb+>l\4*s89am_tq=OF96T.G5c^cGQ<$fHN/?lI/SKnIfFoqJGt-!K)(&oK_U8qK_9uqK)C2m
+JG4QhIe\EgJGt-!K)L?%K`?c)L'!-dM#N59MMmCON/`gWrf7)AOoCLEPEc'3!LB)OQlh`bS"#q<
+SXuFFTV/!PU8+KZUnsrcVl-JmWN)u!X/u<&!NrX*YQ;#7rj*?H[C*HO\$rlX\[oAa]Y(ql^;%Fu
+_>_:]_o0O5`lH-@aN;TJbKS61c6^f`dF$CkeC<%!f%8O+g"P07gt^`AhV[8LiSieVj5f=`k2tjj
+roj[Qlg*p(mHs?@mfN"Knc&+Zo)SF]p&Facp\jmdq>^<fqu6NkrUTr=s5*d+~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!7_SEq"]XkY`[^EHIYck11Wi;nnV50iZT:VRBR@';*P`h/iNfB!TM2-h>
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfp72,'nT=;B!HN89ErJH$6MR5ATDP;>FmaGNFn(pi
+RK&ZHR/iWKJE24ZIenKmRKAtIRf/`USGo)ZT)##ST^SN/N;JOtMYXUP[/RK1[/[N6[emK#R/E<J
+R/WHJQiNKEQiNKJ;uBVn<V]\p=8l>!=oMV(>Pqb+>l\41cN)>kdJhSdP4=b7P4k%<F96T.G5c^c
+GQ<$fHN/?lI/SKnIfFoqJGt-!K)(&oK_U8qK_9uqK)C2mJG4QhIe\EgJGt-!K)L?%K`?c)L'!-d
+M#N59MMmCON/`gWrf7)AOoCLEPEc'3!LB)OQlh`bS"#q<SXuFFTV/!PU8+KZUnsrcVl-JmWN)u!
+X/u<&!NrX*YQ;#7rj*?H[C*HO\$rlX\[oAa]Y(ql^;%Fu_>_:]_o0O5`lH-@aN;TJbKS61c6^f`
+dF$CkeC<%!f%8O+g"P07gt^`AhV[8LiSieVj5f=`k2tjjroj[Qlg*p(mHs?@mfN"Knc&+Zo)SF]
+p&Facp\jmdq>^<fqu6NkrUTr=s5*d+~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<AHgY1?5
+f@AC"dF$:cbfe/Ma2Q!7_SEq"]XkY`[^EHIYck11Wi;nnV50iZT:VRBR@';*P`h/iNfB!TM2-h>
+K7\Z)IXQTiH?aXWFEDPCE,TW2CMRZuBP1mfr)EPnmQU>-q`aO7q*+@4r^6HIr)!;es%r8`qG@,X
+j?i)uiDKDKr_r_m!)q]CoLAs[:f%$drDE8drDN\ol;I[XrD!5ag.Um.rE8SmrE08,>?kH>qcrAa
+n5KBdnl5B_r)EVpq,[Jrr`K&#r`];*r*98-!FC'LH38MAI!bcjkuI:Rs)\<bG'<k/s*+NhrHeKj
+s*Xcns*jutr.+ctrdsrupk8ErpOr3lr.=itomlddq0r*gq1/Hqrdt*$s+LE+rItB/Lku%e#E"Ft
+N/WaUNrG(?OHKO*!L&cIPl[2;rg4dqR[]e:S=Q7CT:hjNTq\<WUnjiaVPg>jWMuntX/i?$XT>T.
+ricF.ZMq0F['d<M[^W`U\[f;_]=bei^:q@s^qp#e%`?6(`Q#s=aN2KGbKJ,Srluh9d*^7he'umt
+e^i@(f\,!4gYCT?h;7&Ii8NYSj5]4^jlY^gkl0fOlKdd&m-X3.rpKpXnaZVLs766_rUp3as7cKe
+rqZTjqYU9ir;H3cJcFU,J,~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?EbI.[%%o()>?n*f]3m-O'&l0.<mjlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO%&]tCqe\$iZMZEUO7XK&7tVPKu\Tq@pHS!fY0Q'@GoO,f3YMM[+C
+KnFu.J:;ooH?sg[G'%hHEH#i6D/=!&BkV-kA^f/Ze^XKFqO$oAd['`pr'U9HqV;2-g]#q)g\BS"
+g\dT<S+W<9SbJZMc1]BVbPTH^aoBHVa8)\,WVNLdVtR(hbQ#fbcMu5id/MGldf._ldf7eqde;/g
+eG-`S]^NJn])B/>q"FLhqYBp]p\+=Tp\X[`p\XXapZ0KmanX$QbPG08<;fhm<rQ2!=Sl8#>5qh(
+>lS+/?3"@-s8'Uk_u%@SFEMbMrceBes*=Qh!df<Br-eTos*sorrdk'#on2jhnq6jlr.4Qlq1%a[
+r."Qnrdk*$r.G$&!/:B+!f)SfreU]6Mi7Rn!KE-=Nrb?)rfR;GPl?pTQC!u+R@0M5S"-&KScPIV
+rh0@eU].%iV5F6i!N<!sWX#T+XKAV-Y-7i/!O8s0ZPp3Y[C3NQ\@B)[]"5Md]Y2%n^V@S#_8=(,
+`;[^Z`lH0AaiaV+"jG6:cHjl:d07tIeC<%"rmq>+g"P07h#?+:hV[8LiSrkWj5f>$joOZ/roj[Q
+lg*p(mHs?@mfN"Knc&+Zo)SF]p&Facp\jmdq>U6fqu6NkrUTr=s5*d+~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O'&l0.<mjlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO%&]tCqe\$iZMZEUO7XK&7tVPKu\Tq@pHS!fY0Q'@GoO,f3YMM[+C
+KnFu.J:;ooH?sg[G'%hHEH#i6D/=!&BkV-kAbMY]FR=/,Er8<#6MdA?TDbGIFlITDFo7[%Rc0Y7
+R.PplJ,"KmIJoW6S,\uYSc55YT)bJ[TDbGMTA5D$MsQ<$ZMV!$[/[Q3[.^osR-g7?R/30DR/0bZ
+<;fhm<rQ2!=Sl8#>5qh(>lS+/?3"@2d/D>ld.3@iPPp[=OTT]JG'<k/s*4QhrH\NlI!kj?s*jut
+qgeZsrdsfqo7Z[er.=itp42sgm!ek^qLJQrs+:0$s+CB+rItB/Lku%e!fDnorepl;NrG(?OHKO*
+!L&cIPmWhDR$a;0R[]e:Sc52]T:l1W!MZ@gU]I<hrhfdqWW&n&X/rD)Xfeh1ricF.ZMq0K['d<M
+[^WcV\[f;_]=bei^:q@s^qmk(_Sa=k`<F9%aN2KGrlYJhc-FV\d/MDrdaQ^qe^j`O"k_M^g=tE^
+h$W#ri8ESRioB([jo4BCkNMp0#O:X@m-O-,mf)YVnF?&Jo)J:]o_nI_pAamcq#:*gqYU0hr;?Na
+rdk++s*t~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O'&l0.<mjlGI]i8EMKh:pZ:
+f@SR&e'ZOfcHOJRaN)9<_SO%&]tCqe\$iZMZEUO7XK&7tVPKu\Tq@pHS!fY0Q'@GoO,f3YMM[+C
+KnFu.J:;ooH?sg[G'%hHEH#i6D/=!&BkV-kAc#I)<UE!@4o@M>5P[M34o@\C6MaOV:]F8a;>F&c
+6gmA!6iL!C;>a>i;uTYp;q=G78,Z9_;>3ub;ZK_\;ZTWhqG-u`r_2HIs%NAan4Wgar`T#"s&o5&
+rE08,>?kE=qHW,\p/LlepJgufr)EVpq,[JrrE/r"r`]>+qcs/,ra#S3rHeEh!.+K@kuI=S"*A[/
+G5c^cGlN'fH3/G@I/JEmIfFopJGt-!K(XcfK^scnK)C2nJGF]]If+]lJGt-"K)C9$KE-`)L'!-d
+M#N54MMmDlMueourf7)AOoCLEPEc'3$C7$GR$jA2S"#q=rgj._T`1VcU8.^`!Mu[mVZE`qri-4(
+XK8P+Y-+u-YQ;#7rj*NM[C*HO\%&rY\[oAa]Y(ql^;%Fu_84"*_o2Pn"ieU(aN;U(b6?,7cHab_
+rm:nte'umtf)F8)f\,!4gYDea$Js[ui8N\Tj5]4^roO7Ekl0fOlKdd&m-X3.rpKpXnaZVLs766_
+rUp3as7cKerqZQiqtpBjr;H3cJcFU,J,~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_np']on*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Y(hd\$iZMZ*:C5XK&7tVPKu\TV%gGS!fY0Q'@GoO,f0XMM[+C
+KnFu.J:;ooH?sg[G'.nJEH,o7D/=!&BkV-kA^o2Ye^`1Je+]7"Qdh?#Q23lE6MT@:h##k$h"f_"
+SGAZPSE$1:SGph7cMl)ebQ,o]bkoTZb5]T`aSs6ZaRuLuWUHecbl>recMl/hd/VMldf._qde_Dn
+eC4<EpXSfIqn2R5o"+k5o"+Mi!VlEfpAXgap&Ojbp&k!]p@mUip<!*Pqoet;qc*Moq,[JrrE/r"
+r`];*r*95,ra,S2p](*,iPYT3"*A[.G5ZXbGQ<$fHN/?lI/JEmIf=ipJGk&tK&D:YK)C2nJGXik
+IeA-bIf4cnJGt-"K)L?%K`?c*LB!#/M#N82M?&S6Mueourf7)AOoCLSPE_>tQBml)R$jD3S"#q=
+rgj[nTV8'RU8+N[V5:&eVl6Pnri-""XT#=,Y-5%5Yd(I=rj)X4[JmTQ\%&rY\[oAa]Y(qk^;%Fu
+^qmn)_o0L4`Q#sta9B].bKJ,Srlt\nd*^7he,Ii#e^i@(f\-8X$JX@lh;7#Gi8ESRro4%?jo4BC
+kNMp0#O:X@m-O-,mf)YVnF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;HTbrdk++s*t~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Y(hd\$iZMZ*:C5XK&7tVPKu\TV%gGS!fY0Q'@GoO,f0XMM[+C
+KnFu.J:;ooH?sg[G'.nJEH,o7D/=!&BkV-kAY/[ekB-06j)Xu`qEjtMm@X?MlZM!+r0d>Ki0j+c
+k(!2UrgNeT!h>gQr1EqZj.G%aoS`@!s,$WZosF_+s0VR/!4;a5n<i.#qj@@]qc*Moq,[JrrE/r"
+r`];*r*95,ra,S2rQkPlrm1\lcLR.gPPp[>OTT]JFa!_-s*+NhrHeKjs*X`ms*jrsr.+`srIWs[
+qh"`sp43$ipjVmaq0r9lqgeZss+:3%s+LE+reCH.!/UW2s,$f7repl;NrG(?OHKO*&!N6CQ'R`&
+R$a;1R[]e:Sc52lT:hmOU8"EYUnsobVl-JlWW&muX/u<&#Hk86YctC;ZMq02['fnA)Rm5d\[f;_
+]=bei]tV7r^qde'_Sa=1`Poj;rl>8bb0.uPc2Pulcd:(edaS3F"kD2Uf@\dUg'ZTih;-rEhr*GO
+ir7s=jQ6C'!U&\Gkm-M>lg4!*mI'uB!q>aMrpp*\s7H<`s7ZKer:p<frqcNhrVZWmo)=4?hZ&*~>
+JcC<$JcG$8o`"gfrqu]ks8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%da?Fec-4AQaMu3;_SO"$]Y(hd\$iZMZ*:C5XK&7tVPKu\TV%gGS!fY0Q'@GoO,f0XMM[+C
+KnFu.J:;ooH?sg[G'.nJEH,o7D/=!&BkV-kAQAS+s&J5GnNHV1lTP)3qEjsRs%iPhoMPQ`pI"U?
+gdD'=i_fMLr);$5rC?larDEMk!)rhonP]Eep/Cifs%`AcqbI)ar_2WNr(R,bnkB'dp0%H!qH<r'
+>$LZ)k>V(RoMbWdr_r\nrDiYor`B&#qcWo%r`f;*ra#M0ra,YNrH\TlH?sdZqGc]ZoMbp7F`hm+
+GQ2mfH2W'hHiJKkIK+cqJ,FiqJc12YKDU8uJbFWkJ,"KcIJJ?jJ,=cqJcC?#KE$W)L&Qi,LB*/0
+M>rG5MuJY9NK4"!!K`HCOq3b@Q'IZ$Q^F/.R[T_8S=TYN&>,VhTq\9VUnji`VPg>jW2]cr!NW=$
+XTu#4YHY79Z*OA8!OT96[MlWb\@K/]]">Vf]tM.p^VIY$_SX4/`5T^8a8X-`ai_fMbg$.4"jbQC
+dF-MCe-4CRf@S[.rn7_6gtgfChV[8LiSsjs!T`AAjoOZ/roj[Qlg*p(mHs?@mfN"Knc&+ZoDeI^
+p&Facp\agdq>U6fqu-HkrUTr=s5*d+~>
+JcC<$JcG'9o`"gfrquZjs8)ckrqQNf!;?EbGP(Lto'u5=n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SO"$]Xt_a\$iZMZ*:C5X/`.sVPKu\TUq^ES!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*'BkV0lAc:-XeH+1Ko9es4qNh,Iig'R4qEt*Gp>#f*gY;JX
+rn@G.r7gq8pRD)Njdl=>s3Uel!m]'9n]gsSp<*EWr5e]5or%kirM\kXrltJgs3L_lrmC_nqpPPp
+rmU_no$m`kl+R#-q7HX;s1A$:qRcR7!*&gjrV6Bdrq?9as7QHcrV$-]oZI0Vo#gRGpr`W[!)rep
+rDiYorE&u#qH<f$r`f;*ra#M0r*KG3q#C-+iPYZ5"E\d/G'<k/s*4QhrHeKjs*X`mrdOlsqLJNq
+qh"-dqL\TqpON-jqL7aYqgSNoqgeZss+:3%s+CB+rItQ4LkpnEMMd>kMueourf7)AOoCLNPE_>t
+QBml)R$jEBRi7ffSt;RHTV8'RUSFW\V5C,fVl6SoWiE,#XT#=&Y-7i/#I1S?Za7$G[JmT8\%)FJ
+)S3Pm]Y(qk^;%Fu^qmn)_o'F3`Q#s=aN2KGrlYJhc-FV\d/ME+daQ^qe^i='f@\d1g=tB;h;-rF
+rnmh9ir7s=jQ6C'!U&\GklL)8rp9[P!:KjT!q>aMrpp*\s7H<`s7ZKer:p<frqcNhrVZWmo)=4?
+hZ&*~>
+JcC<$JcG'9o`"gfrquZjs8)ckrqQNf!;?EbH1^_!o'u5=n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SO"$]Xt_a\$iZMZ*:C5X/`.sVPKu\TUq^ES!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*'BkV0lAY,LlSc5/;FRjM:EWL5LqEt*Gp7UfFs.JOti-,'e
+pR:$.q186ik(!8Ws-iqV!h>gQrL`tYj.G"`s,Hu9oS`O&!*&m&osFS's0Vd5rNlU3[.KabRJ`H1
+QiEEQ;uBVn<V]\o=8l=u=oMV(>Pqb*?2e1.?N=L3cihY?cHqdFP4=b7P5::DFEM_LG5c^cGlN'f
+HN/?lI/JElIfFooJGk&rK'S'cK):,nJGXimId;FZIf=ioJGt-"K)L?%KE-`)L'NKiLl$tGMMqIm
+!KE-=Nrb?)rfRVPPa.N"QC!u+R@=,E)P!@iStDXJTqS3UUSO]^VP^8hW2ZbrWiN2%riH4(YPta2
+Z*L[AZa@*IrjDj:\Gj#W]">Se]Y2"m^V@S"_8=(,_o0O5`lH-@aN;U(b6?,7cHab_rm;D-e'umt
+f%/I)f\,!4gY:N>h;7&ghuVfrro4%?jo4BCkNMp0!UB"Mm/QGQmf)YVnF?&Jo)J=]o`"O`pAamb
+q#C0hqYU0gr;HTbrdk++s*t~>
+JcC<$JcG'9o`"gfrquZjs8)ckrqQNf!;?EbH1^_!o'u5=n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-+8OaMu3:_SO"$]Xt_a\$iZMZ*:C5X/`.sVPKu\TUq^ES!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*'BkV0lAQ;b,<8]t:4nLr*4TR`7qEt*Go2,0Yr_WPjs%r\^
+r^-KLo0VA&s&/>`rDN8bpeq,jq+'%+s%!&crDNVns&/;a!*&Vir)EShpJ:QZrD!8bpe1W\rCd#]
+qG$cZ!E<4i=o_e+>lS%)>lS%#;uTbl;t3iY;u]es;uBVn<V]\o=8l=u=oMV(>Pqb*?2e1.?N=L5
+HN/6mG^"=Tn5SpXp/D0:F`hkNrceBes*=Qhs*Ocnr-eQns*slqrIOitl\#%cqgnKlqg\Hkl[AYZ
+rdXfqrdk*$rIb-'!/:B+#D\+kM2@+IMuJY9NK4"!!K`HCOp[D;Q'IZ$Q^F/.Rf8cpS=Q7CT:_dM
+Tq\<WUnjiaVPg>jWMuntX/i?$XT>T.ricX4ZEggC['[7?[K3kIrj`rY]=Y_g]tM.p^VIY$_SX4.
+`5T^8a2c9BaiaV+"jG6:cHjl:d1asWeC<%"f%8O+g"P07gYCW@hV\=j!TE&;irS6&roO7Ekl0fI
+lKeH9s6TgSrpKpXnaZVLs7?9_rq6<bs7cHds7uZjqtp?irVc<dJcFU,J,~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgY1?5
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHJZ*:C5X/`+rVPKu\TUq^DS!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*(BkV0le'n6Es4%,!n<i4%rKd>IpQk`DrC$KLr'LG>rndJ,
+ptPl(rS7>*!1i_OqO@8Mk+2LAs3^kn!71GcrltJgrltGdrlaoUs2b8^ql'7goVhefpSdba#L1Q>
+cd0tbdJ_Mle,Ikse,.Yaec+.h^&G\<^&5PA]DoJ<]D]>6])]GA<;uXqq=saZq"a[`q#C'hp@\CX
+rq-9`rq6$.pWN6PrQ5&[prW?Ss&Anrq,[Gqr`K#"r`];*qcs/,ra,M0ra>b7q#C-+iPYZ5s)n?b
+rHJ9ds*=Qhs*Ocnr-eQnrdXcpqgms_qLS?jr."Tmj*giSrdXirrdk*$re(6(s+UH,s+^T1reV2D
+Mi3OQNK0$[O-#KdP*2#nrfmYQQ^F/.Rf8c`S=Q7CT:_dMTq\=]U]I<hrhfdqWW&n&X/rD)Xfeh1
+ricF.ZMq03['d=@[K3kIrja,^]=Y_g]tM.p^VIY$_SX4.`5T^8`lH0Aai_cLbKS61c4eONdF$Ck
+e'umtf%8O+f\,!4gYDea!T)`5i!\N'j5]4]jlY^gkNMp0!UB"MliQSBmf)YVnF?&Jo)J=]o`"O`
+pAambq#C0hqYU0gr;HTbrdk++s*t~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgY1?5
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHJZ*:C5X/`+rVPKu\TUq^DS!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*(BkV0lSXoePqjl;[q/ZOVqfDLPr,_g)qEt0Is.K@bq4R2K
+!2/=oj*('`iL04eqLI^XrdOm:rgX"[T)PAXT&cNqN;8J2N;/>1MZ-TRZh_!-[0<qF[^NTOrNuU4
+rj;[2!4;HepmM&Iq3UuEn<a/Sr)NPnrE&u#qH<f$r`f8)s'>V1r*TG2s'Z5[cHje\c-OhfPOXh+
+PPgU@OoKS(G5ZXbGlN'fHN/?lI/JElIf=inJGXo]K)1&lJGaooIcGkSIf=ipJGt-"K)UE&K`?c*
+LB!#/M#N5BMMmCON/`jXO,oBbOcklkPl?pOQC!u+R@=,E$CmZYStDXJTqS3UrhKRkVZ*IoW2]cr
+#HOr-Xf\b/YPta,Z*OA8!joACrjDj:\Gj#\]">Se]Y2"m^V@S"_8=(,_o0O5`l?'?aN;TIbKJ,S
+rlu2'd*^7he'lgre^i@(f\"m2g=tE^h#ZBirnn1CioB([jQ5OdkND(.klL)8rp0^RmdC)C!q>aM
+rpp*\s7H<`s7ZKer:p<frqcNhrVZWmo)=4?hZ&*~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgY1?5
+f@JI#da?Cdc-+8NaMu3:_SEq#]Xt_a[^EHJZ*:C5X/`+rVPKu\TUq^DS!fY0Q'7AnO,f0XMM[+C
+KnG#/J:DupH[9p\G'.nJEH,o7DJX*(BkV0lrDibp!*.''nicq>qEt0Is%r\lq,$i`qG@/gp-S[E
+nj;A(n59*]o25?^s&82Q!(QfTlULbLjAYqRs&8kqo1o9\nP9'Xr_3;an4`XPr`&Jm"'\r5>Q.n+
+>Pqb)>PD(j;ufk^<:s2i<;]bl<rH,!=Sc2">5hb'>lS+/?Mn10@/jX8H2`'gFoll5Hgk#)<VBDl
+FoQX`GQ2pfH2W'hHiJKkIK"]pJ,4]mJ`q^^JbFWlJ,=]TIJeQnJ,FirJcC?$KE$W)L&Qi,LB*/0
+M%GQ&Mi<USNfK0]OHGZgP*;.0Pm*J?R$a;1rgO7bSXuFFT:hmOU8.^`!Mu[mVZE`qri-4(XK8P+
+Y-+u-YQ;#7rj)[5[C-"B!OoT<\KADp]=bei]tV7r^qde'_Sa:0`Poj:a2l?Db0%oNbg$.4'@5%Q
+dF-LmeC<%"f@S[-g"P07h#?+1hV\=j$fU+*j5f:_k2tjikl0fIlKeH9!q#FDrpKpXnaZVLs7?9_
+rq6<bs7cHds7uZjqtp?irVc<dJcFU,J,~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrqQNf!;?EbGkCV!o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJSaN)9=_ns4(]tCtf\@/fOZEUR9XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EII
+L4t84JUi5uI!^0bGB\1OF)l8>DJj<,CMINrB@?e.rR:htm$Q%ar'^?JrBgA;q;(c"qqM%>qj[YW
+lC@(/"J!rhdEqU5!RAsfcMl)bbOis9W:Qq`W!B<Jcd:%ddaJ'BqpYVpr7(Yps47+ur7:hu!8.7a
+o=an2r4Vs>k.CUks7l9]rV6Ee"SVN]p@eLYrq-3_q9&6Nqo\cWqoJQSrQ>(=q,[Gqr`K#"r`];*
+qcs,+ra,M0ra>b7raP^'f#%X/F`hkNrHJ9ds*=Ngs*OcnqgJKnrI=Tmq186kpjr'fr."TmhL5?O
+rdXirs+13%rIb-'!/:E,s+^T1re^Z4%Z?:)NK&sZO-#KdP*2#nrfmYQQ^F/.Rf8c[S=Q7CT:l1W
+!MZ@gU]I<hrhfdqWW&muX/u<&#Hk86YctC;ZMq08['d<M[^W`Urj`HK]=Y_g]tM.p^VIY$rk\]R
+`;[^V`lJ)"$H^H6bKS2TcHab_rm;8)e'umte^i@(f\+s3g=tE^h%8H#i8ESQioB([jQ5OdkND(.
+klL)8rp9[P!:KjT!q>aMrpp*\s7H<`s7ZKer:p<frqcNhrVZWmo)=4?hZ&*~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJSaN)9=_ns4(]tCtf\@/fOZEUR9XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EII
+L4t84JUi5uI!^0bGB\1OF)l8>DJj<,CMINrBDnD$T)P;/FQ[`C7/94K6MdDOT^n`TT\ahSG5[p(
+RcBh9JFJ-eJE24[SH#,[T)G;XT&ZIANRWpbNVe\3MZAY6;uX-"[/IE2[f<c2[/@61[.9UZRJ`EP
+Qh6U9Qi0q[<rH,!=Sc2">5hb'>lJ%.?Mn10@/j[7@f=ORd*gIrrfcl8nWWp7r/q#%s*"?bs*4Qh
+r-JBis*X]ls*jorpji0kp4E'joRQjhqgRCMrI4`qr.+fus+:3%s+CB+reCH.!/UW2s,%;EN/WaU
+NfT6_OcbfiPEc'3"dYLBR$jEBRg#=QSt;RIrh0@eU].%iV5F6i!N<!sWWB0%riHF.YHP17Z*CV6
+ZNmkF[C3NQ\%)FJ%(a'_]Y(qk^;%Fu^qp#e!Q2kT`<"!!rl>Ggb0.uPbg"GYcd;[=&(8qVeCE+#
+f@S[.g"P07h#?+@hV[8LiSieVj5f:_k2tjikl0fIlKeH9s6TgSrpKpXnaZVLs7?9_rq6<bs7cHd
+s7uZjqtp?irVc<dJcFU,J,~>
+JcC<$JcG'9o`"gfrqu]ks8)ckrqQNf!;?EbGkCV!o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f@SR&e'ZOgcHOJSaN)9=_ns4(]tCtf\@/fOZEUR9XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EII
+L4t84JUi5uI!^0bGB\1OF)l8>DJj<,CMINrB2ne/r`$Zsq*"XDq*Y*IqGI2fpJLibr_NPj!)`JV
+r'LBMn3Z;*n59*]o25B_r_rhdkXYA<pdb0M!(Zucmo'3aq,@&dr_reqr_<Ghh+mlBlq@CRr_rDl
+s',P0r`oA*r`o>)q,>sGq,@5lq,[Gqr`K#"r`];*qcs,+ra,M0ra>b7raGkOrcSBgH$au-<:Nu`
+<<%+@G5ZXbGlN'eHN/?lI/A?lIf4ckJGFciK(sohJGaooIboMOIf=ipJH(3#K)L?%KE-`*LB!#/
+M#N82M@PQ'N/`gWO,oBbOcklkPl?pOQC!u+R@=,E"e;-TStD\TT`Lm_rhKRkVZ*IoW2]cr!NW=$
+XTu#4YHY79Z*OA8#ILnH[^NZS\Gj#I]">Se]Y2"m^V@S"_>_:P_o2Pn!QN1Za9p&3bKJ,Rc-FV\
+d/ME'daQ^qe^`7&f@\d0g=k<:rnS.Bhr*GOiSrnXjQ,Fbk3(pkrojIKli-8Nm/ZSRmfN"Knc&+Z
+oDeI^p&Facp\agdq>U6fqu-HkrUTr=s5*d+~>
+JcC<$JcG*:oD\afrVZTjs8)ckrqQNf!;?Eb!VH!_nosWnn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%e'ZOfcHOJRaN)9<_SX+']tCqe\@/fOZEUO8XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t84JUi5uI=$9cGB\1OF)l8>Df0E.CMIQsB@>8We'n<Gl'TterL!FLqEt3Jo\TQ&qV:r%nt#?A
+iLL/$da?Ihd.kr_c2c,fbkoTWb20)bVuP-DdJVJge,[tqeGn(lf)F;$f`'Rt^A5J']^EE1;uHCi
+q#0sbp]C3`pA4IYo_cksbP]N\anWsPaT,?:<rH,!=Sc2">5hb'>lJ%.?Me+0@/aU4@K9p7s6[_l
+_Z%IQ`;au[G5ZXaGlN'fHN&9kI/A?kIf4chJFS3]JGaooIe/!WI.r'fIf=iqJH(3#K)L<'KS>-Z
+L'!-dM#N53MMqIm$B:(,O-#HcP*2#nrfmYQQ^F/.Rf8c[S=Q7CT:l1W'r%J!UnsobVl-JmWN)u!
+X/rG*Y-+u-YQqG=ZEpmE['fnA#Ih4Q\[f;_]DfGJ]tV4q^VIY$rk\]R`;[^V`lJ)"&';u;bKS2T
+cHab^d*^7he,Ihte^j`O+5#9#g=tB;h;-rFhr*GOio9"YjQ5Lck3(sll07Kuli-5PmI'EAmfN"K
+nc&+ZoDeI^p&Facp\agdq>U6fqu-HkrUTr=s5*d+~>
+JcC<$JcG*:oD\afrVZTjs8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%e'ZOfcHOJRaN)9<_SX+']tCqe\@/fOZEUO8XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t84JUi5uI=$9cGB\1OF)l8>Df0E.CMIQsB:Spks.04]c?/AnqF(0IrBg.MrLihUs.K=6kB5a,
+rL<MLj-fdpq18QtqgnWpkC<N&s.94^pn$N<r/UZ6i/IVmn;RC*rDWa&rj;R1rO)g9[^EOBZiIH3
+[/RB3ZMq3.QiNQIR.m$JR/WHEQM?dH<V]\o=8l=u=oMV(>Ph\)?2e1-?iOO5@JjR>A'N<Gdact&
+rKHc7plk93s)n?brHJ6cs*=Qhrd4ZmqgJHmrI=KjnU^7]r."Tmo6p+UpO3!hrdXlss+13%rIY0)
+Kn]M\!f)SfreUZ5MuJYBNK0'\OH>TfP*;.0Pm*J?R$a;1rgO(]SXuFFT`1W"U8+N[V5:&eVl6So
+WiE,#XKAV-Y-7i/#I1S?Za7$G[JmT>\%&rY\[oAark&KL^:q@s^qdec_?%Qmrl"oXa8X-jai_fM
+bfn>WcHjh`dF$CkrmUu!f)F8Cf\,!4gY:N>h;7&Hi8ESRioB([jlPXekNM-ol0@R"rp0^RmdC)C
+!q>aMrpp*\s7H<`s7ZKer:p<frqcNhrVZWmo)=4?hZ&*~>
+JcC<$JcG*:oD\afrVZTjs8)ckrqQNf!;?Eb!VH!_noaKln*f]3m-Es$l0.9ljl>C\i8EJJgtUQ9
+f@JL%e'ZOfcHOJRaN)9<_SX+']tCqe\@/fOZEUO8XfJJ#Vkp2aTqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t84JUi5uI=$9cGB\1OF)l8>Df0E.CMIQsB2hl1rD`hs`'3u[rB0pEqEt3Js%r/]rD<>dnj31?
+!(6NJiBuEur)3JlqaT[;n4<OKs&/>br_iMiqGR5ir`%9?rCuiVrDWDns'#J.ra#P/r`fA,!+#G*
+r);*EqbmJpq,[Gqr`K#"r`];*qcs,+ra,J/s'Yh7r*fn@F`qtSH[U>0<;9Ja<<%+@G5ZXaGlN'f
+HN&9kI/A?kIf4chJFS3]JGaooIe/!WI.r'fIf=iqJH(3#K)L<'KS>-ZL'!-dM#N53MMqIm$B:(,
+O-#HcP*2#nrfmYQQ^F/.Rf8c[S=Q7CT:l1W'r%J!UnsobVl-JmWN)u!X/rG*Y-+u-YQqG=ZEpmE
+['fnA#Ih4Q\[f;_]DfGJ]tV4q^VIY$rk\]R`;[^V`lJ)"&';u;bKS2TcHab^d*^7he,Ihte^j`O
++5#9#g=tB;h;-rFhr*GOio9"YjQ5Lck3(sll07Kuli-5PmI'EAmfN"Knc&+ZoDeI^p&Facp\agd
+q>U6fqu-HkrUTr=s5*d+~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV-Hgp@eLYHh?q#o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-4AQaN)9<_SO"%]tCqe\$i]NZEUO7XK/A"Vkp2`TqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t;5JUi5uI=$9cG^"=QFE2A?Df0E.CMIQsdF-Ile,IkYR,42(R.s)G6iKFChYl:-h#,q)SAq*&
+e'cXkd.kr^cMl&gbl#ZXb3#Z#WV`X_VZP8odf._feGIemf(mqsg&Ke&^\bbA^$WK3]Cii1]DGP*
+p\FUap]'sep&F[`p&=R`oDJ7[b3I1Gb5BBTaSX*V<rH+u=Sl8">5hb'>lJ%/?Me+/@/aU4@fBj;
+AGZ>n_sP>@_Z7XSFoQX`GQ2peH2W'gHiAEiIJnWnJ)5_QJ,FcfIHQ"RIK"]pJ,OotJcC?$KE$W)
+L&Qf-LPYqd#)\=sN/WaVrf75EOcklkPl?pOQC!u+R@=,E':bVbStD[LTq\9VUnjiaVPg>jWW&mu
+X/u<&#Hk86YctC;ZMq03['d=@[K3kIrji'?!5&6C#JIjc^V@S"_>_:P_o2Pn!QN1Za8sE*rlY>d
+c2Puhcd;[=&(8qVeCE+#f@S[.g"P07h#?+1hV\=j!TE&;irS6&roOIKkih9qlK[^7liQSBmf)YV
+nF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;HTbrdk++s*t~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV-Hgp@eLYHh?q#o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-4AQaN)9<_SO"%]tCqe\$i]NZEUO7XK/A"Vkp2`TqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t;5JUi5uI=$9cG^"=QFE2A?Df0E.CMIQsR[]h<Sc55FF9$IEFRF5F7/B:M6LpiKT_P/ZT_`j)
+FjtU7SGo#QRcKn2JG=ZqK(a`qJE_R_ScGDVT(elTT`:Y^T`1S^TE(\^O7eLqN;&8(N;HNUZa@*I
+q6p70s0Mp8ZEpmErj2U0rj1pXrL*GJrg3;Dqj71\rE&r"qcWl$r`f8)ra#P1qd9>1raG_6raQ1D
+d*gLtf\,$?POjt:FoQX`GQ2peH2W'gHiAEiIJnWnJ)5_QJ,FcfIHQ"RIK"]pJ,OotJcC?$KE$W)
+L&Qf-LPYqd#)\=sN/WaVrf75EOcklkPl?pOQC!u+R@=,E':bVbStD[LTq\9VUnjiaVPg>jWW&mu
+X/u<&#Hk86YctC;ZMq03['d=@[K3kIrji'?!5&6C#JIjc^V@S"_>_:P_o2Pn!QN1Za8sE*rlY>d
+c2Puhcd;[=&(8qVeCE+#f@S[.g"P07h#?+1hV\=j!TE&;irS6&roOIKkih9qlK[^7liQSBmf)YV
+nF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;HTbrdk++s*t~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV-Hgp@eLYH1^_!o'u5<n*]T0m-Es$l0%3kjQ#:Zi8<DIgtLK7
+f@JI$da?Fec-4AQaN)9<_SO"%]tCqe\$i]NZEUO7XK/A"Vkp2`TqJ!JS!ob4QBdYsOcPN]N/EIJ
+L4t;5JUi5uI=$9cG^"=QFE2A?Df0E.CMIQs;H$Qm<Tu[I5N"a#4o7A:7/B:M6N'aO;>j>f:[ULK
+6IeH[;>jDk;tic88,>dJ;u0De;u]bk;uBVk:AIW;:Amo`9`%ce>5MP'>QA(&>l.b);sI?Z;t3i_
+;u9Vo=8c7u=oDP'>Ph\)?2n7.?iFI4@JjU6@g?OhH$apdIXUQ^q,R#crcS6arHJ9drd"Hgrd4Wl
+qgJElrI<[Sqg\NmoR5nMq0i6krdXlss+13%re(6(s+UH,!JcL1M$AiqMi<USNrG(COHG]hPEc'3
+"dYLBR$jEBRhM<_St;RITqS3TUSO]^VP^8hW2]cr!NW=$XTu#4YHY79Z*OA8!joACrjDj:\Gj&=
+\cBAA]Ec-a^;%Fu^qp#e!Q2kT`<"!!rl>,^b5TQbbg$.4!RK-ld1=[SeC<%!f%8O+g"G*5gYDea
+!T)`5huVfrro4%?jo4BIkNM-ol0@R"rp0^RmdC)C!q>aMrpp*\s7H<`s7ZKer:p<frqcNhrVZWm
+o)=4?hZ&*~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgtLK7
+f@JI$da?Cdc-+;PaMu3;_SO"$]tCqe\$iZMZEUO7XK&;!Vkp2`TqJ!JS!ob4QBdYsOcPN^N/EIJ
+L4t;5JUi6!I=$9cG^"=QFE2A@Df0H/CMRWtdF&!Bs3q"ts-WbQo9fHDrg<_RrL!VO!1<)=r0[8I
+pI+jFs$HbCo%s?$rnRP0s4mY/qOISVqO[#D!1rDFs3q"r!R]9hchYlcc25`Yb5S@>WT^;WWVEFd
+VZ>0Ee+M5gebI_nfDjM&g&B_*g\S\]^@],0]`#J4]`#J>;Z6@ep]1'fp&OdboEb'\o^h\Ho^h\P
+o_Q`#bOs$Uan*URao5?>=8c7u=oDP'>Ph\)?2e1.?iFI4@JaO6A,^!=AbuGo_sG8>_uFlZG5QRa
+GlN'eHN&9jI/89iIf"WYJGOcmIeA-cI-l:XI/89kIf=iqJH(3#K)UE&KE-`*L)l&*Ll$tGMMmFP
+NK0$[O-#KeP*;)oQ'IZ%R$a;1rgOCfSXuFFTV8'RU8+N[V5F6i!N<!sWWB0%riH4(YPta-Z*L\7
+ZN7G@rjMj9!4`$=!kQ"Urk&9F^AbkK^qmkd_?%Qmrl"oXa8X-kai_cLbKS5UcHab_d*^7he,Iht
+e^j`O!SH*)g&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/rosIJ!:0XN!q#FDrpKpXnaZVLs7?9_rq6<b
+s7cHds7uZjqtp?ir;H6dJcFU,J,~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgtLK7
+f@JI$da?Cdc-+;PaMu3;_SO"$]tCqe\$iZMZEUO7XK&;!Vkp2`TqJ!JS!ob4QBdYsOcPN^N/EIJ
+L4t;5JUi6!I=$9cG^"=QFE2A@Df0H/CMRWtR[O;IS=TYNm<&)Fk&g6:s)\6^pI+jFs$H4KrLiqX
+gNER@k]ZurrgWYNjdH*us+0urm"+h[pODe+qOdAPs.KFcrh9:bqN(K5oSr9tnVdC*!/p_Ps0Vg6
+s0hm8s0Vp8[C#q>r3H@/rNcF/!1DT/rg3;Ds-N^crE&r"qcWl$r`f8)ra#M0r*TG2raG\5s'u%=
+"D-*6f\-8Yo9/U,oTK5ss*"<as*4Qhr-J?hrd=QjrI4Wnk^`MZqgS3dqL%[WqgA6gs*jrsrIFp!
+s+:6&s+CB+re;GKLkpnEMMd=NN/`jXO,oBbP*2#mPa.N"Q^F/.Rf8cdS=Q7CT:hmOU8"EYUnssf
+VZE`qri-""XT#=&Y-7i/!jT&:rj)X4[JmW7[fEr;\H9@S]DfGD]tXK\!l2Xgrk\]R`;[^V`lJ)"
+&BW);bKJ,Sc-FV\d*U1fdaS3F!S,d#f)aOWrn7D-h#?+1hV\=j!TE&;irS6&roO7Ekl0iHl2^/L
+liQSBmf)YVnF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;?Nbrdk++s*t~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrV1j9p@e1Po^qbGo'u5<n*]T0m-Es$ki_*ijQ#7Yi8<DIgtLK7
+f@JI$da?Cdc-+;PaMu3;_SO"$]tCqe\$iZMZEUO7XK&;!Vkp2`TqJ!JS!ob4QBdYsOcPN^N/EIJ
+L4t;5JUi6!I=$9cG^"=QFE2A@Df0H/CMRWt;GmNo<;fha55.;,541Q64SM8?6iTLM;"@K_;#=&b
+61mS46NBO<6f_,D;Z9Pl;Z0Pn7fQ!S7c-`47fQ!P;tj2[;u'Dh:AR]`9__?B:A@Q\;ZBr!>Q7t.
+?1qM'>Q.n(>P_:g<:s2`<;0>j<rH+u=Sl8">5hb'>lJ%.?Mn10@/aU3@fKs;A--=hI/\NpIXUfe
+n5]9`r)<W<s*"<as*4Qhr-J?hrd=QjrI4Wnk^`MZqgS3dqL%[WqgA6gs*jrsrIFp!s+:6&s+CB+
+re;GKLkpnEMMd=NN/`jXO,oBbP*2#mPa.N"Q^F/.Rf8cdS=Q7CT:hmOU8"EYUnssfVZE`qri-""
+XT#=&Y-7i/!jT&:rj)X4[JmW7[fEr;\H9@S]DfGD]tXK\!l2Xgrk\]R`;[^V`lJ)"&BW);bKJ,S
+c-FV\d*U1fdaS3F!S,d#f)aOWrn7D-h#?+1hV\=j!TE&;irS6&roO7Ekl0iHl2^/LliQSBmf)YV
+nF?&Jo)J=]o`"O`pAambq#C0hqYU0gr;?Nbrdk++s*t~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrqQNf!;?EbIe<7'o()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPTaiMK@_ns7)^:_+i\[T#SZa-g=XfSP%W2HJfU7n6OSXZ(9R$O#$P*(fcNJraO
+Lk^Y;K7\W'IXQTiH?aXWF`_\EEH#f5D/3p%C!b8TdaHUnopPTBp6klJrL*MLs-N_Prg3MLr0dDM
+!(HTLqEk6Lqqq#%q:u&+o:>fNq47#Hm%+1+s3q"rr6Y,_rlt>ar6+u[r2At]q5F4jp8Ihc!7USi
+s4-enrR_)%rn.;*qqLt]!5J?DotBq/rO_^7r4Vo(s7cHd!Vc<eo`4XZoDeC]oDJ7Tb4a$Lb5'0P
+aSf3==Sc2">5hb'>lJ%.?Me+/@/aU4@fBm:AGp*9s6[_i_?@c!F`qs+GQ2peH2N!fHiAEgIJeQj
+J+A-bJ,=]gIJS?dHhMd]Hi8?hIK"]qJ,OotJcC?$K*$^[L&Qf-LPYqd!K)g7N"V,1O,oBbOcklk
+Pa.N"Q^F/.Rf8csS=Q7CT:hmOU8+KZUnsrdVl6PnWiE,#XKAV-Y-7i/!O8s0Zi@B4[JmT9\%&sI
+\H0:Rrk/9E!5AHI!l2Xgrk\]R`;[_4`lH-@aN;TIbKJ,Rc-FV\cd:(edaHUoeCE+#f@S[-g"P07
+gYCW@hVR/Ji8NYSj5]4]jo4BCkNMp0!p]+;rp0^RmdC)C!q>aMrpp*\!;-6_s7ZKer:p<frqcNh
+rVZTloDX=@hZ&*~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPTaiMK@_ns7)^:_+i\[T#SZa-g=XfSP%W2HJfU7n6OSXZ(9R$O#$P*(fcNJraO
+Lk^Y;K7\W'IXQTiH?aXWF`_\EEH#f5D/3p%C&XP'S"-(Ar,q@JpN>\Ar,_^V!(HTLqEk6Lm@jKO
+!M?%aTDNj!G49_BG5n*0S+<$IRJiTSRJ`NNRJ_TuJaS'bJ+fK2TD"rQT`ChaU\]uNO84h)NV&1u
+Mtp9M[/dZ7[fNqFrj2[3pp0q)rNcF/!1DK,s-NGF!13XcrE/o!r`];*qcs,+ra,J/ra>_6r*oY8
+rabt="4u5\g]#q#P3nJ+P5f\)G5QRaGlE!dHN&9jI//3gIenQbJG=WkIeJ3dI/&'^HMMpdI/A?k
+IfForJH(3#K)UB(KS>-ZL&m'creUZ5MuJYJNK0'\OHGZgP*;,qQ'Rc(R$jEBRiS#iSt;RITqS3U
+USO]^VPg>jW2ZesX/i>(Xfeh1ricF.ZMq31ZiIN5[K<qJ\Gj#>]"@sSs1JEHrkANM_86,f!Q2kT
+`AGTTa2l?Db0%oNbfn>WcHjh`dF$Cje'umte^i@(f\"m2g=tB;h;-rEhr*GOiSrnXjQ,G%joOZ/
+rojLLlg+Q:!q#FDrpKpXnaZVLs766_rUp3as7cHds7uZjqtp?ir;H6dJcFU,J,~>
+JcC<$JcG*:o`"gfrqu]ks8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O'&l0.<mjlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPTaiMK@_ns7)^:_+i\[T#SZa-g=XfSP%W2HJfU7n6OSXZ(9R$O#$P*(fcNJraO
+Lk^Y;K7\W'IXQTiH?aXWF`_\EEH#f5D/3p%C&V!4;cHasr'0p>q`Xj@pHS:6krf#8p-eaE!(-KX
+nPT<_r_N5SnO)e6oL&F@jAG\Mr)<M_njiUK!(luWnONFFqc!)an5K0_q+g`[oh>6Wkt_(Lq,72r
+s'5P/!aJr6qHX#("'f&7>l@n,>kV+j<:<c`<:s2g=8c7t=oMV(>Ph\)?2e1-?iFI4@JjU6A,^$;
+Ac@)[I!^6gnl5-Zq,I;ks)n?br-/0crd"Efrd4Wlq0i0iqLA'dpj`0ip3ldbpj;^\q0W'fqgJHm
+s*suts+13%rdt9*Kn]M\!JcL1M#iKlreqJLNfT6_OcbfiPE_>tQC!u+R@=,E*Lr[lStD[LTq\<W
+UnjiaVl-JlWN)u!X/rG*Y-+u-YQ;#7rj2X3!4Dg7!k5\Lrj`'@]DfJC]`>eG^B23e_>_:P_o2Pn
+1rdSVaN2KGb0.uPbg"GYcd0tcdF-IleC<%!f%8O+f\,!4gY:N>h;7#Gi8ESQioB([jQ6C'!U&\G
+klU/9li-5PmI'EAmfN"Knc&+Zo)SF]p&Facp\agdq>U6fqu-HjrU^#>s5*d+~>
+JcC<$JcG-;o`"gfrqu]krqZWjrV6Ee!;?EbIe<7&o'u8>n*f]3m-Es$l0.9ljl>C\i8EJJh:pZ:
+f@SR&e'ZRhcHOJSaN)<>_ns7)^:_(g\[T#SZa$a<XfSP%W2HJfU7n6OSXZ(9R$O#%P*(fdNJraO
+Lk^Y;K7\W(IXQTiH?aXWF`_\FEH#i6D/=!&cd0tcda?L4pmM2PrL3SNr0dVRns]<@!1<SMp6ttL
+pI+jF!^bi&rS[Y3rSIM1rS@P1rndY1oUYfLqOR#Fn=9^4eC;srrmLhorQt>crm(PgrQP)\s2t5<
+ri"_Ror.kfo[Nokpt#Dqrn.8(rS%2(!8R@`qS2g>qn;p?!580?pq-C8rOr&)s&&jkrqHNfp&=Rb
+oCDJMoD8%XoD\C^oD?](b5fcabOisSan3XS=8c7t=oMV(>Ph\)?2e1-?iFI4@JaO5A,g*:AcHB>
+s8'V(_s>2>FoQX_GQ)jdH2N!eHiAEgIJSE[J,+QdIJ\EgHg?"UHi8?hIK+crJ,OotJcC?$K+N]i
+Knb>;LPUeDMMd=NN/`ksNuF+BP*2#nQ'IZ%R$a;1R[]e:SXuFFTV8'RU].%rV5C/gW2ZbrWiN6#
+XTu#4YHY79Z*OA8#ILnH[^NZS\Gj&=\cBAA]E5d\^AbkP^qmk(_Sa:0rl#,^a2c9BaiV^)b5oi3
+rltPjd/MDndaS3F!S,d#f)aOWrn7D-h#?+1hV\=j!TE&;is4Z,jlY^gkNMp0#O:X@m-O-,mf)\T
+nGi%Xo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG-;o`"gfrqu]krqZWjrV6Ee!;?EbGkCUuo'u8>n*f]3m-Es$l0.9ljl>C\i8EJJh:pZ:
+f@SR&e'ZRhcHOJSaN)<>_ns7)^:_(g\[T#SZa$a<XfSP%W2HJfU7n6OSXZ(9R$O#%P*(fdNJraO
+Lk^Y;K7\W(IXQTiH?aXWF`_\FEH#i6D/=!&R[X5F!LfPQFmjGCFlRTC7JB4H6NTTJU&C_]U&C_a
+T`CbbU&UbcTD<]uG3sMCG57[.S+2sIS+W6MRJ;<qJaJ!eJ+fK3TD"rTU&C__UZda,NV/8(Mu$<N
+;Z=*1\$i]O['R*EZ2V'&YlM*.ZN-EIR/30JQMm-M=8c7t=oMV(>Ph\)?2e1-?iFI4@JaO5A,g*:
+AcH?Cg=cGYqN:]=m$%1,s)n?br-/-brd"EfrHnNkq0i*gm=4q\omQ^bqKqOSr-SBiqgJKns*sut
+s+13%rdtc8KnY89LPL\BM2I1KN/WaVrf7tZOcklkPa.N"Q^F/.R[T_8S=Q7CT:hmOU8.^`$DjVt
+Vl6SoWiE,$riHF.YHP17Z*CV6ZNmkF[C3NQ\%)FJs1/3Brk&<G^:sT]#Je0l_SX4.`;[^\`lH-@
+aN;QHrlY>dc2Puhcd;[=!RfHre,e+Nrmq2'g&B\+gYDea!T)`5huVfrro47EjlPXekND(.km-M>
+lg4!*mI'uBs7$'Yrpp*\!;-6_s7ZKer:p<frqcNhrVZTlo)=4?huA3~>
+JcC<$JcG-;o`"gfrqu]krqZWjrV6Ee!;?EbG4bCso'u8>n*f]3m-Es$l0.9ljl>C\i8EJJh:pZ:
+f@SR&e'ZRhcHOJSaN)<>_ns7)^:_(g\[T#SZa$a<XfSP%W2HJfU7n6OSXZ(9R$O#%P*(fdNJraO
+Lk^Y;K7\W(IXQTiH?aXWF`_\FEH#i6D/=!&r)3Vo;tiKV54Lf655%5=53P0/7JB4H6NBII;#!oe
+;#O8k:]O;Q6g[;?6h`qH60(o<;Z0Pd7eT@M8GGdU8Fo@N7fH?a;Z9Pg;XdW^<:N`Y:%h9X:&7W^
+:&@]`:&7`e;ZC#$>m">9>?_#1r`oJ-s'#8'rEK>.o2GTegf"2SrE/o!r`];*qcs,+ra,J/ra>_6
+qdTP7s()"<s(2:[I/\HmI/6e:<:Eo`<<#nsFoQX_GQ)jdH2N!eHiAEgIJSE[J,+QdIJ\EgHg?"U
+Hi8?hIK+crJ,OotJcC?$K+N]iKnb>;LPUeDMMd=NN/`ksNuF+BP*2#nQ'IZ%R$a;1R[]e:SXuFF
+TV8'RU].%rV5C/gW2ZbrWiN6#XTu#4YHY79Z*OA8#ILnH[^NZS\Gj&=\cBAA]E5d\^AbkP^qmk(
+_Sa:0rl#,^a2c9BaiV^)b5oi3rltPjd/MDndaS3F!S,d#f)aOWrn7D-h#?+1hV\=j!TE&;is4Z,
+jlY^gkNMp0#O:X@m-O-,mf)\TnGi%Xo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG-;o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C\i8EJJgtUQ9
+f@SR&e'ZOgcHOJSaN)<>_ns4(^:_(g\@8oRZa$a<XfSP%Vl-AeU7n6OSXZ(9R$O#%P*(fdNJrdP
+Lkg_<K7\Z)IXQTjH?j^YF`__GEH#i6D/=!'rm(\ndF-J5S,/QRS*?C:RIZdH7f>dM7/B7Pio/ko
+i:Z"'hWUR,SaE$?Sc71=eGn"rdK%\md/MAicMPidbkTB]XSJpsWW9*nWp?YWVuWaheGe"qf)F;#
+f_sJ'gAK_&h"\VS^\PVB^&PhE^&>V6]DfJ;;$-Lcp&=O_o)A1Znc84Snc8:ZoE=d/bKA!$bQ#f\
+bP00SanWsW=Sc2">5hb'>lJ%.?Me+/@/aU3@fBm:AG]s;B)cNAs7aD(_s5)=FoHR^GQ)jdH2Dpe
+Hi8?dIHQ(OIJeKhHfTMNHiAEjIK+crJ,OotJH1<$KE$T)L&Qf-LPYqd!K)g7N!YK(O,oBbP*2#n
+rfn(]Q^F/.R[]e:SXuFFTV8'RU].%mV5C/gW2]cr!NW=$XT>T.ricX4ZEggC['[7?[K<qJ\Gj#?
+]">TR]E,^[rkJKK!5\ZOs2+iTrl#,^a2c9BaiV^)b5oi3rltPjd/ME.daQ[peCE.$f@S[.g"P07
+gYCW@hVR/hhuVfrro4%?jo4BDkNM./klL)8rp9[P!:KjTs7$'Yrpp*\!;-6_s7ZKer:p<frqcNh
+rVZTlo)=4?huA3~>
+JcC<$JcG-;o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C\i8EJJgtUQ9
+f@SR&e'ZOgcHOJSaN)<>_ns4(^:_(g\@8oRZa$a<XfSP%Vl-AeU7n6OSXZ(9R$O#%P*(fdNJrdP
+Lkg_<K7\Z)IXQTjH?j^YF`__GEH#i6D/=!'rgNeTr,qIMn9+2A!-RpU!(QoUpI+jFrLs1arLs%]
+s.TIerLrq/lZVZ>o61#$rgWGHqj[>Ks+9*Ym!o(cpn%AToq;;X!2B1^iK!DeqMb0,pJD1'[^EKL
+Za-n8Yl_/7YkbR'ZMh-0RGF8"QiC1a=oMV(>Ph\)?2e1-?iFI4@JaO5A,^$9Ac?<ABE-Zag@pa.
+P5UU?PkgO;OoTY(G5QR`GlE!cHN&9iI.r'PIe8'dI/83NHMi-hI/JEmIfForJH(0#K)UE&KE-`*
+L&m'creUZ5MuJYANK0'\OHG]hPEc'3&XJcNR$jD4S"-%@StD[LTq\=]U]mTlVl-Jmri-""XT#=&
+Y-7i/#I1S?Za7$G[JmT9\%&sI\H9@S]DfGD]tXK\s1eWNrke]Q!6"lU#KFg)aN2KFb5TQbbg$.4
+!RK-ld2(0Ze'umtf%/I)f\+s3g=tB;h;-rEhu;O7iSsjs!T`AAjoX`0kl0fIlKeH9s6TgSrpTmV
+s7-*Zs766_rUp3as7cHds7uZjqtp?ir;H3cJcFX-J,~>
+JcC<$JcG-;o`"gfrqu]ks8)ckrV1d7p@e1Po^qbGo'u5<n*]T0m-Es$l0%3kjl>C\i8EJJgtUQ9
+f@SR&e'ZOgcHOJSaN)<>_ns4(^:_(g\@8oRZa$a<XfSP%Vl-AeU7n6OSXZ(9R$O#%P*(fdNJrdP
+Lkg_<K7\Z)IXQTjH?j^YF`__GEH#i6D/=!'qG[;Vpce.0r''g=r''O3!(QoUpI+jFohbQ`qG7/h
+r_WS]rC#g9!(?TLpI,!JpHejGp/1ZapJLW^s&8JXogegKqap]Vog]!OrDNJhqGQrapJ_,kr_EGg
+r_E>dpeLWZrCm&^qbHWTpJD&u?!LT<r`]2'rEB,'qcj,,nl,QfgJe,SqH<f$r`f8)ra#M0qd9>1
+raG\5raYq<qdob=s(D7VpJ^$Ms&/o?rc\3`rcnEfqg/6grI"?fkC3&Or-\?fjEg`Nrd=Wls*jut
+rIFp!!.t3&s+CB+re:H/M#N53MMqIm$&st+O-#KeP*;.0PnB=KR$a;1S"#q=St;RITqS3UrhK^o
+VPg>jWW&muX/u<&!NrX*YQqG=ZEpmE['fnA!k5\Lrj`*A]=\'T!PQ5H^]2(L_>_=O_Z7XS`<XE'
+a2l?DaiaV+!R/gfc2l8<rm;M0e'lgre^i='f@\d0g=k<9gtgfChV\=j!TE&;irS6&roO:Fkii$1
+!UB"Mm/QGQmf)\TnGi%Xo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG0<o`"gfrVZTjs8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^)eC)akcHaYWb/hWB`P]R.^V7@m\[],W['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h/jO,]*V
+M2@"BKnFu.J:DuqH[9s^GBS(MF)c2<DJj<,C]2Q[d*^sEkaDL@n!a8GrC-EJqa:ABs5Eb2q;;)+
+k+;=<nXf?Cs4.;&f%&=Ke,[tsdf.Yjchu)gc2>fbbNc2+X8]-gWV3:aeGn(tec=>$f_aA$g&Tn&
+h#H4)^?WK0^AGV@]^rc0;$?L]nac5Kn,i.LnG_tTo)A7XoDm,.bPBB[bOs$Nao'6W=oMV(>P_V(
+?2e1-?iOO5@JaO5A,^$9Ac?<@BDuTBs7aD(_s>2>FoQX^GQ)jdH2DpdHi8?aII_jXIJ\EhHes)J
+HiAEjIK+crJ,OotJH1<$K+rumKnb>;LPUeDMMd=NN/`jYO-#M'OtDl^Q'IZ%R$a;1S"#q=St;RI
+TqS3UUnji`VPg>jWN)u!X/rG*Y-+t4Yd(I=rj)X4[JmW7[fEr;\c95@]DfJC]`>eG^B23e_>_:Q
+_o0Lm`<"!!rlG,]!6Y;a!R/gfc4&%Gd*^7hdaQ^qe^`7Mf)aOWrn7D-h#?+7hV[5Ki8NYSro4%?
+jo4BIkNM-ol0@R"rp9[P!:KjTs7$'Yrpp*\!;-6_s7ZKer:p<frqcNhrVZTlo)=4?huA3~>
+JcC<$JcG0<o`"gfrVZTjs8)ckrqQNf!;?EbGP(Luo()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^)eC)akcHaYWb/hWB`P]R.^V7@m\[],W['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h/jO,]*V
+M2@"BKnFu.J:DuqH[9s^GBS(MF)c2<DJj<,C]0_%S*P1fFl%3AF%/Xt7J9.H6i3SUUA^eYUApqY
+GNsAAGOp"VSc>5XS,/TNRfJuVS+iBFK&hLMJGl)2TD>/[U&Uk[UYLn%NV\V/Mt^'K[/RB8ZE^[=
+Yd+,1qm$()rNcQmR@3!#m[*fRr`];*qHX#*ra,J/s'Yh7qdTP7rabn;rau.Brb);brS%".rK@,C
+pltT<q3(c#s*"9`rcnEfqg/3frI"6cnp^.XqgA9fhKo0Jrd=Wls*jutrIFp!!.t3&'SM0oL5(J=
+Ll$tGMMmFPNK0'\OHKO*/X)EaQ'Rc(R$jD4S"-%@StD[LTq\<XUnsobVl-JmWiE,#XKAV-Y-5(6
+Z*CV6ZN7G@rjMj9!4`$=s1/3Brk/9E!5AHI!l2Xgrk\`S`5MYo!QN1ZaT'?^b5TQbbg$.4%+!;I
+dF$Cje'umte^j`O!SH*)g&]s`rnRh9hr!AMiSieqirS6&roOIKkih9qlK[^7m/QGQmf)\TnGi%X
+o)J:]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG0<o`"gfrVZTjs8)ckrqQNf!;?EbGkCV!o()>?n*f]3m-O''l0.<mk2bR_iS`VMh;$`<
+f[n^)eC)akcHaYWb/hWB`P]R.^V7@m\[],W['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h/jO,]*V
+M2@"BKnFu.J:DuqH[9s^GBS(MF)c2<DJj<,CK::2pcdb%r''g=r''a9s$lrUp-edFo2,Hap.tfd
+6:1T;r^>g7r^-NMqaCBMpHnRNo2>TcoMY]Xm7-k@rCHiVr(-BKr_iPhqGR,fpf./is&/hkqG7)e
+pJ:NYoM,3Xo1esV!aJr6rEB,'qc`u'q-3o*oMbQbk>V@Zr)<Jqr`];*qHX#*ra,J/s'Yh7qdTP7
+rabn;rau.Brb27W!.=N>i)K`!s*"9`rcnEfqg/3frI"6cnp^.XqgA9fhKo0Jrd=Wls*jutrIFp!
+!.t3&'SM0oL5(J=Ll$tGMMmFPNK0'\OHKO*/X)EaQ'Rc(R$jD4S"-%@StD[LTq\<XUnsobVl-Jm
+WiE,#XKAV-Y-5(6Z*CV6ZN7G@rjMj9!4`$=s1/3Brk/9E!5AHI!l2Xgrk\`S`5MYo!QN1ZaT'?^
+b5TQbbg$.4%+!;IdF$Cje'umte^j`O!SH*)g&]s`rnRh9hr!AMiSieqirS6&roOIKkih9qlK[^7
+m/QGQmf)\TnGi%Xo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-O'&l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`5BI-^V.:l\[])V['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h2kO,]*V
+M2@"BKnG#/J:E#rI!U*`GBS+NF)l8>Df0E.c-H:6o:,]Ko:,6<p7(`DrC6`SpI+mGr8Rb8pu)//
+!9!e4s5)b,p7:rLnXTg9f@SU)rmgtsrmUkp!7C\jqp5;frltDcq5jOsmB$;fri5Rhpo+&=r71et
+s4I2$rn@A+rS78*pV,h*r4_g:qn2j=pe^rerp]dQs7#sVs76-[qt0g1r6+ZTr6+lXo?%$Rr`T5(
+r`f5(ra#M0qd9>1raG_6raYq<qITY<rb).Br;Yrss2"9Cs)n<ar-/-brH\9drHnHigjT'Iqg7p\
+nTjkTrd4Wlr-eTo!.Xrt!eGrTre!CfKnY89LPUbCM2I4MN/`gWO,oBbP*2#nQ'IZ%R$a;1S"#q=
+St;RITqS3UUnjiaVPg>jWN)u!XK8P+Y-7i/#I1S?Za7$G[JmT9\%&sI\H9@S]DfGE]tV5[^B23e
+_>_:V_o0L4`Q#p<rlG,]!6Y;a!R/gfcMu2jd/MDndaS3F!S,d#f*Bs]g"P07gYDea!T)`5huVfr
+ro=%>!9O4B!U&\Gl2U#Kli-8Nm/ZSRn,MkWnbr%Yo)SF]p&Facp\agdq>U6fqu-HjrUTr=s53j,~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_noO?jn*f]3m-O'&l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`5BI-^V.:l\[])V['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h2kO,]*V
+M2@"BKnG#/J:E#rI!U*`GBS+NF)l8>Df0E.R@4#Bj`LKEfQ@']rC-HKqa:1Q!2B=`p7hG.rHS!Z
+m<85JnTOo's./eO!1`\Nq3pu-!.sThrdsutmst8,s.9%YqOmk^rM'"\fT,T`qi(H2pe^re!OB!*
+YQ1m)YlD!*ZMh,eR-^1==oMV(>P_V(?2e1-?iFI4@JjU6A,^$8Ac?<@BDcECg&9XtOnk11PPUIB
+FoHR^GQ)jcH2DpdHi/9HIJ\EhHh2RRH1uXaHiAEjIK+`rJ,Om!JV&LQK0FsBKnb>;LkpnEMMmFP
+NK&sZO-#KeP*;,qQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrcVl-JmWiE,$XKAV-YPta2Z*L[AZa@*I
+rjDm;\@DOK!kQ"Urk&<G^:sT]!l2Xgrk\oX`5KX6`l?'uaT'?^b5TQbbg$.4s3C\lrm:bpe,Iht
+e^j`O#M@__g=k<9h#?+1hV\=j!TE&;j8\0?jo4BCkNMp0s69UMrp9[P!:KjTs6p$YrUU![!;-6_
+s7ZKer:p<frqcNhrVZTlo)=4?huA3~>
+JcC<$JcG0<o`"gfrquZjs8)ckrqQNf!;?Eb!VH!_no=3hn*f]3m-O'&l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`5BI-^V.:l\[])V['R$AYH=n+WMcYjUnXQUSt2@?R@';*P`h2kO,]*V
+M2@"BKnG#/J:E#rI!U*`GBS+NF)l8>Df0E.r`'#!;cETXg-,?tp-8I=qE=dHrC-HKqa9OC!)NJY
+!(6<FqEs^<njE:@nknUKr'fp@q+(ETl::kPq,.#eqc!2f!)r_lrD*5crD<5ao1npPpeL`]pe^re
+qc`r&qc`u'pfmf)pJ^W^mSim[s&8o"r`];*qHX#*ra,J/ra>_6r*oY8rabk:rau.Br+Q"TiD]GL
+s)n<ar-/-brH\9drHnHigjT'Iqg7p\nTjkTrd4Wlr-eTo!.Xrt!eGrTre!CfKnY89LPUbCM2I4M
+N/`gWO,oBbP*2#nQ'IZ%R$a;1S"#q=St;RITqS3UUnjiaVPg>jWN)u!XK8P+Y-7i/#I1S?Za7$G
+[JmT9\%&sI\H9@S]DfGE]tV5[^B23e_>_:V_o0L4`Q#p<rlG,]!6Y;a!R/gfcMu2jd/MDndaS3F
+!S,d#f*Bs]g"P07gYDea!T)`5huVfrro=%>!9O4B!U&\Gl2U#Kli-8Nm/ZSRn,MkWnbr%Yo)SF]
+p&Facp\agdq>U6fqu-HjrUTr=s53j,~>
+JcC<$JcG0<o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nosWnn*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`59C,^V.:l\[])V['R$AY-"e*WMcYjUnXQUSt2C@R@'>+P`h2kO,f0W
+MM[+CKnP)1J:E#rI!U*`GB\1OF)l8>Df0H/bfn>Wcd2EVnsoECpR:H<qjROTrC6`SpI+pHq;MD5
+ro!h8pu),.qk*#BoUY`JpRV>Ss4RP-f[p,Rr71_prmLenq9]/fs3CYhs312<m&g)bs/Z!rr2K^p
+r2K_Gp=08rf@\aRg&Ke(g]-(*h>c=3htFeH^\tn6^&G\;:]OAkmf;eSn,2\Tnc&+YoDA1Abl5f\
+b4NgUaSoBA>Ph\)?2e1-?iFI4@JaO5A,^$9Ac?<@BDQ<AC&J"o_Z.IC_>n`XG5HL_Gl;paHMi-f
+I,o_PI/A9`HK]YMHN&9kI/JEmIfFosJ-(:RK)UB'KSBD[!JcL1M(X[DN/WaVO,oBbP*2#nQ'IZ%
+R$a;1S"#q=St;RITqS3UUnjiaVPg>jWN)u!XT#=&Y-7i/!O8s0ZNmkF[C3NQ\%)FJs1/3Brk/9E
+!5AHIs1eWNrke]Q!6"lUs2G&Zrl>/_b0'_,!R/gfcMu2jd/MDndaS3F#M%DVf@S[-g&B\+gYDea
+#N"@qi8ESQir7sCjQ5Lck3(pkrojLLlg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cHds7uZjqtp?i
+r;H3cJcFX-J,~>
+JcC<$JcG0<o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_no=3hn*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`59C,^V.:l\[])V['R$AY-"e*WMcYjUnXQUSt2C@R@'>+P`h2kO,f0W
+MM[+CKnP)1J:E#rI!U*`GB\1OF)l8>Df0H/r0[PR\odsBrC6`SpI+pHqP!n_pn@MXom$(Pm<85J
+olg>+s./tUrL<YRpRD&Kh1>TXqLS0erLa%[pn.DUs.T@bpS6)qoSrj/ohYZdYPta+YPtd*YPbX(
+Z2M!-Zi@>cR.?UDQMt(d>Ph\)?2e1-?iFI4@JaO5A,^$9Ac?<@BDQ<AC&H]XOnk19P5pjCPP^LC
+FoHR]GQ)jcH2;jbHi/9PIJS?gHhD^KH22dcHiJKkIK+crJ,Xs"JV&LQK)pXZre:H/M#N5`MMmFP
+NK0'\OHG]hPE_>tQC!u+R@9V7S=Q7CT:hmOU8+N[V5C,fVl6SpWiN6#XT>T.ricF.ZMq08['d<M
+[^W`Urji'?!5&6Cs1JEHrkJKK!5\ZOs2+iTrl+oW!6>)[!m/U-rlY>dc2Q#gcN)>kd/h\ErmV2'
+f%/I)f\"mVg&]s`rnRh9hr!AMiSieqis4Z,jlY^gkNMp0!p]+;rp0^RmdC)Cs6p$YrUL$]o^r+T
+s7ZKer:p<frqcNhrVZTlo)=4?huA3~>
+JcC<$JcG0<o`"gfrqu]krqcZjrqQNf!;?Eb!VH!_nosWnn*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^(eC)akcHXSVaiMNA`59C,^V.:l\[])V['R$AY-"e*WMcYjUnXQUSt2C@R@'>+P`h2kO,f0W
+MM[+CKnP)1J:E#rI!U*`GB\1OF)l8>Df0H/<)cjt<)h4-q`amArBC*As%!#WrC-HKr'LN^:J^4O
+p-\C=qEs^<njEFDo24mQrDW_oqF0O9rC?iXm77+Qqbd5gqc!>jr)<Gip.kW`s%r5]qG-NSpJ1BX
+!)`\urEK,%s',5&!+#@umSrRPqGdGtrEK/(ra#M0qd9>1raG\5raYq<qdob=rb)(@s(VCXnPf*Y
+r)<>h!-S9aqfi$arH\6cr-S?hjF-lPqg8!^k]uuMrd4Zmr-eTos*t#u!eGrTrdt6)L&Qf-LPYqd
+/rGRGN/`jYO-#KeP*;,qQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrcVl-JmWiE,$riH4(YPta,Z*OA8
+#ILnH[^NZS\Gj&=\cBAA]`5YF^AbnI^];4M_Z.LR`;[aU`W4'Ya9'K+b5TQbbg$.4s3C\lrm:bp
+e,Ii%e^i='f@\a/rn7D-h#?+7hV[5Ki8NYSro47EjlPXekND(.klU/9li-5PmI'EAn,MkWnbr"[
+oCV\Rp&Facp\agdq>U6fqu-HjrUTr=s53j,~>
+JcC<$JcG3=oD\^erqu]ks8)ckrV-Hgp@eLYHh?q#o'u5=n*f]2m-Es$l0.9ljlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPUaiMNA`59C,^V.:l\[])V['R$AYH=n+WMl_kUnaWVSt;IAR@'>+P`q8lO,f0X
+MM[.DL4k22J:N)sI!^0bG^"=QFE;GAE,KQ1bKS2TcMj<rSG8QRRc0_9Rf5hU7f>dM7/]LQj7qX3
+i<&#tiVVO5htE]*T(\`IT(ni_gY1?6f\"g-f%0`Ks3q%trmLbms3U_lrm1_mcHb1HqQ0LnpT"&>
+!nPuTrn.5'rn@A+rS7>,#N"@qi8ESQir6^g^?*--^?iQ*;#g"^melPRnG_tXo)J:^o_&.Ss3:Md
+!6slSrQG#Zp<!9S!*]A+qcs,+ra,J/ra>_6qdTP7rabn;rau.BqIokBrbDE3kJI26oYLTNrHA'^
+rcnBeq0MscqL%[Yq0`'dom6FZnTaqVq0N'frd=Zms*artrI?_UJqAW-KS5&6L51P?M2@+JN/WaV
+NfT6_OcklkPa.N"Q^F20S"#q=St;RITqS3UUnjiarhfpuWN)u!XT#=+Y-5(6Z*CV6ZN7G@rjDm;
+\@DOK!kQ"Urk&<G^:sT]!l2Xgrk\`S`5MYo!li:$rl>/_b0'_,#L(H;cHab^d/MDtdaQ[peCE+#
+rmq2'g&B_*gAp%.h#ZBirnn%?io9"YjQ,G%joX`0kl0fJlKdd8liQSBmf)\Tn,W"WncJFTo_nI_
+pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG3=oD\^erqu]ks8)ckrV-Hgp@eLYG4bCso'u5=n*f]2m-Es$l0.9ljlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPUaiMNA`59C,^V.:l\[])V['R$AYH=n+WMl_kUnaWVSt;IAR@'>+P`q8lO,f0X
+MM[.DL4k22J:N)sI!^0bG^"=QFE;GAE,KQ1r0dP,]QF-CrC6`SpI+sIs.]@`rhB1]r1X18np'_L
+n94GJpicV-s./\Mp7(uKd=Lk=rLa(\qOd_Zr1Wt]qkO+crf>EdoSrK>!O&a+Y5ka(YPtd(Z2_-/
+Zi.3'QiNK5R.lsHQ2k+f>Ph\)?2e1-?iFI4@JaO5A,^$9Ac?<@BDQ<@C&VlGg@UO&P4=b6OoTY'
+G5HL_Gl;p`HMi-dI-l@XI/A9`HMMjVGl)d^HN/?kI/SKnIK4lrJ2Dh/JqJ]/KS>/8LPL\BM2I4M
+N/`jXO,oBbP*2#nQ'IZ%R$jD4S"-%@StD[LTq\<XUnssfVZj#uWiE,$riHC-YHY79Z*OA8!OT96
+[K<qJ\Gj#?]">TR]E5d\^AbkK^qmkd_?.Wn`;[^W`lH.!a9'K+b5TQhbg"DXcHjh`rm:u!e'lgr
+e^`7Mf)aOWrn@D,!8RS0!T)`5i!86#ioB([jQ6C'!pAe2rojLLlg+Q:!q#FDrpTmV!:g$Y!qZ'V
+rUp3as7cHds7uZjqtp?ir;H3cJcFX-J,~>
+JcC<$JcG3=oD\^erqu]ks8)ckrV-Hgp@eLYHh?q#o'u5=n*f]2m-Es$l0.9ljlGI]iS`VLh:pZ:
+f[n^(e'cXicHXPUaiMNA`59C,^V.:l\[])V['R$AYH=n+WMl_kUnaWVSt;IAR@'>+P`q8lO,f0X
+MM[.DL4k22J:N)sI!^0bG^"=QFE;GAE,KQ1;cH^r<Q[Ju55RMB8,YpU7JB4K6hjIW:]O;_:tnA+
+6M!S:;=7?Z;sd$S8,YpM7fZ$B8,Z?a;>X8g;uTbi;u9Jc:@1jR:@1dQ:@q?_>Q.h*>P_P'>Pqb+
+?2e(0?!d2&nPndPrDWc#r`f8)ra#M0qd9>1raG\5raYq<qdob=rb)(@rb;@H"+,??Hgao+;Z0Ph
+;uh(>G5HL_Gl;p`HMi-dI-l@XI/A9`HMMjVGl)d^HN/?kI/SKnIK4lrJ2Dh/JqJ]/KS>/8LPL\B
+M2I4MN/`jXO,oBbP*2#nQ'IZ%R$jD4S"-%@StD[LTq\<XUnssfVZj#uWiE,$riHC-YHY79Z*OA8
+!OT96[K<qJ\Gj#?]">TR]E5d\^AbkK^qmkd_?.Wn`;[^W`lH.!a9'K+b5TQhbg"DXcHjh`rm:u!
+e'lgre^`7Mf)aOWrn@D,!8RS0!T)`5i!86#ioB([jQ6C'!pAe2rojLLlg+Q:!q#FDrpTmV!:g$Y
+!qZ'VrUp3as7cHds7uZjqtp?ir;H3cJcFX-J,~>
+JcC<$JcG3=oD\afrVZTjs8)ckrqQNfs7ZKcs7CU.o()>?n*f]3m-O''l07Bnk2kX`io&bOh;-i>
+g"4j+eC2jncd'eYbK7iF`PfX0^q[Rq]=GG[[C!9FYck11Wi;qpV50l[TUqaFS!fY1Q'IPrOcPN^
+N/EIJLPCJ7Jq8H%I=6HgH$FOVF`_\FEH#i6D9L,Hbh\fFS,>eT7f>dN7/]LOj7hO5j8J!;iV_X&
+TBr0HSaE$HSc@IJgY1B6f`'M%f)F5"eGn"tde(reciDDFXno-hX8UWLeH4=RfDXD$g&Tn)h#?+8
+hV[5Ki8NYSir7s<jOq<D^@Ao-;#]n_mJZJPn,MnWnH&4Prq-0^s7H<8rm(Gdo$$jOr6"iWqoAbA
+qcs,+ra,J/ra>_6qdTP7rabn;rau+Aqe5qBrbDFJrr;,trPA0Ds)n<aqKMp`rH\0aqg7IQqKqm]
+qK_:LrH\9drd4ZmrI+]ps*t#u$\<n]K7ei2Knb>;M#N5VMMmFPNK0'\OHG]hPE_>tQC!u+R@9V7
+S=Q7CTV8'RUSO]^VZ*J2W2ZesX/rG*Y-+t4Yd(L>Za7$H[C3NQ\%)FJs1/3Brk/9E!5AHIs1eWN
+rke]Qs2=oU!li:$rl>/_b0'_,#L(H;cHab^d/MDodaQ\Ee,e+Nrmq5(g"HAY!ScE/h#cHjhu;O7
+iSsjs!p&J)roOIKkih9qlK[^7m/QJQmf)YVnF?&Jo)J=]o_nI_pAambq#C0hqYU0gr;?Nardk+,
+s*t~>
+JcC<$JcG3=oD\afrVZTjs8)ckrqQNfs7ZKcs7CI*o()>?n*f]3m-O''l07Bnk2kX`io&bOh;-i>
+g"4j+eC2jncd'eYbK7iF`PfX0^q[Rq]=GG[[C!9FYck11Wi;qpV50l[TUqaFS!fY1Q'IPrOcPN^
+N/EIJLPCJ7Jq8H%I=6HgH$FOVF`_\FEH#i6D>fn"Fh`%r8,YpU7JK:L6iEbWU&1S[U&UheU&9-,
+Gg^g6G5e*0Sa`0FS,Sl&Jb4KkTDtM\TDYA]U%Y2\U\pqdV=ou3Nqe\5NqSJ';#[ZqXoP[(YlD!.
+ZMq01ZMq31ZLsU`QfFJ.QN17e>lJ%.?Me+/@/aU3@fBm:AG]s;B)QB>B`2ZECAr#Jg@UO%P4Xt7
+P5f\(G5?F^Gl;p_HM`'OI/83_HMVpNGl;pbHN&9kI/SKnIfFosJ.$p[JqJ]/KnY89LPYqd,`7M=
+N/`jYO-#KeP*;,qQ'Rc(R$jD4S"-%@StMdNU8+N[V5F6i)5sO7WiN5'Xfeh1YctC<ZEpmE[C*HO
+\$rmH\c95@]DfJC]`>eG^]2(L_>_=O_uI[S`<+'"a8X-]ai_d*b6Q89c-FV\cd;[=!n,QHrmUu!
+f)F8&f\+sWg&]s`rnRY4hr"Fk!TE&;ir\<'jo4BIkNM-ol0@R"rp9[Ps6fmT!q>aMrpp*\s7H9_
+s7ZKer:p<frqcNhrVZTlo)=4?huA3~>
+JcC<$JcG3=oD\afrVZTjs8)ckrqQNfs7ZKcs7CU.o()>?n*f]3m-O''l07Bnk2kX`io&bOh;-i>
+g"4j+eC2jncd'eYbK7iF`PfX0^q[Rq]=GG[[C!9FYck11Wi;qpV50l[TUqaFS!fY1Q'IPrOcPN^
+N/EIJLPCJ7Jq8H%I=6HgH$FOVF`_\FEH#i6D,XA4<5h#s55[SA8,YpU7JK:L6h=+H:sMH'6MEk=
+;<_!E7f5dM8GbpL7f,^S;Z9Pl;X.3\;Z0P]:Adod:B"&Z:A.E[:@_6\>5MP(>5_\)>l7n+?L^tg
+<9R9Z;ug/">lJ%.?Me+/@/aU3@fBm:AG]s;B)QB>B`2ZECAr#KH2r<\;tNu_;uTbrFoHR\GQ)jc
+H2)^_Hff_PHhD^]H0BMOH2DpeHiJKlIK+crJ,Xs+JV&K+K7nr4L5(J>reVnXMi<USNfT6_Ocklk
+Pa.N"Q^F/.R[]e:SXuFGTqS3UUnjiarhgX4WN)u!XKAV-Y-5(6Z*L[AZa@-J[^NZS\Gj&=\cBAA
+]`5YF^AbnI^];4M_Z.OR`;[^W`lH.!a9'K+b5TQhbg"DXcHjh`rm:eqe'n<G!S,d#f)jUXg&B\+
+gYDea!oDhlrnmh9ir7s>jQ5M&jp1)5kiq?slKeH9s6]jSrpKpXnaZVLs7?9_rUp3as7cHds7uZj
+qtp?ir;H3cJcFX-J,~>
+JcC<$JcG3=o`"gfrquZjs8)ckrqQNf!;?EbHh?q$o()>?n*f]3m-O''l0.<mk2bR_iS`YNh;$c=
+g"4j+eC2gmcd'eYb/q`E`PfX0^q[Rq]=GG[[C!9FYck11WiE"qV50l[TV%gGS!o_2QBdYsOcPQ_
+N/NOLLPCM8K7SQ&IXQTiH?aXXF`__GEH,o7b0%oNbiG;mSbel?S,8`P8,c!V7JB4L6i5p7irA!;
+i9-a&T)"rESdCtEh;-l@g=b03rn%2$s4./!s3q"ro[3]c!709!m]?Dgr71o#f`'S(gATe(h#H17
+hr*GOiSrkqj8S*>jk%9?^@o81;#BYYmKE"Jnac;Mo`"O^oDm/2cMYrXbl#Z\b5BBWaSfBC?2e1-
+?iFI4@JaO5A,^$9Ac66?BDQ<@C&MfDC]=@r_Yh7D_>n`XG5?F]Gl;p^HMMpVI//-]HM`!aGjoqS
+Gl;pbHN/?lI/SKnIK4lsJH(0#K)UB'KSBD[22@!EM2I4MN/`gWO,oBbP*;,qQ'Rc(R$jD4S"-%@
+StD[LTq\<XUnsrdVl6SpWiN5'Xfel,YQ;#7rj)X4[JmT9\%&sI\H0:Rrk/9E!5AEH!l2Xgrk\`S
+`5MYos2G&ZrlG,]!6Y;as3(Jfrm(Pi!7:_ms3^nrrmV2'f%/I)f\"mVg'?BfgtgfChV\=j!o`.u
+ro4%?jo4EBk5a`Fl2U#Kli-8Nm/ZSRn,MnWnc&+ZoDeI]p&Facp\agdq>U6fqu-HjrUTr=s53j,~>
+JcC<$JcG3=o`"gfrquZjs8)ckrqQNf!;?EbHh?q$o()>?n*f]3m-O''l0.<mk2bR_iS`YNh;$c=
+g"4j+eC2gmcd'eYb/q`E`PfX0^q[Rq]=GG[[C!9FYck11WiE"qV50l[TV%gGS!o_2QBdYsOcPQ_
+N/NOLLPCM8K7SQ&IXQTiH?aXXF`__GEH,o7Q^=)-RJ:plFS9k@FSg4W8,c!V7JB4L6i3SXU%tGW
+U%`d(GgU^8G5Im1SaN$ES,Sl$Jb=QiTDYA[U&(M_U].(fV>[:YO7\J0NrY43O8b18NU]j@Y5b[.
+Yd(I=ZMq30Z2h60ZLjO\QfOP2Qi11g?2e1-?iFI4@JaO5A,^$9Ac66?BDQ<@C&MfDC]<&[OnY%2
+PPUFBFoHR\GPudbH1uX\Hgc@XHh;X]H2;dTGPcX`H2DpfHiJKlIK+`rJ,XuuJH1<$K)pXZre<:c
+Ll$tGMi<USNK0'\OHG]iPa.N"Q^F/.R[]e:SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YPta,Z*OA8
+!OT96[K<qJ\Gj#>]"@sSs1JEHrP&EL_86,f!lMsprl+oW!6>)[s2b8`rlb>c!6tMgs3C\lrmCbo
+!7Uqs#M%DVf@S[-g&B\1gYCT?h;7#Grnmk:io9st!T`AAk5XTEkl0iHl2^/Lm/QGQmf)\TnGi%X
+o)J=]o_nI_pAambq#C0hqYU0gr;?Nardk+,s*t~>
+JcC<$JcG3=o`"gfrquZjs8)ckrqQNf!;?EbG4bCto()>?n*f]3m-O''l0.<mk2bR_iS`YNh;$c=
+g"4j+eC2gmcd'eYb/q`E`PfX0^q[Rq]=GG[[C!9FYck11WiE"qV50l[TV%gGS!o_2QBdYsOcPQ_
+N/NOLLPCM8K7SQ&IXQTiH?aXXF`__GEH,o7rDN\qj?<3#kWSf,qFCNSrC-HKr^-Z^nPAsWb<tti
+qa9mNlVct:qa^BOr($0EpJU*OgJ.`EmnWgUrD)lZs'#)"!*oG-qd/YgrD_fU!*&o%ra#M0qd9>1
+raG\5raYq<qdo_<rb)(@rb;=GqeQ4X!.405o2>B_r_rl?rc\-^rHS9dpNlX^msOqXoQpC[qKVLR
+qfr'bqg/9hs*Xcns*artrdb$"!.t3&!JH1+L,FaBM2@+JN/WaUNfT6_OckomQ'IZ%R$a;1S"#q=
+St;RITqS3UUnjiaVl-JmWiE,$Xf\b0ricF.ZMq02['fnA!k5\Lrj`'@]DfJC]`>eF^B23e_>_:Q
+_o0Lm`W*pXa8X0[aT0K_bQ#cdc2Q#gcN)>kdJqVpe,Ii%e^i='f@\a/rn7V3gt^`AhVR/hhu_ls
+ir7s=jQ6C's5sCGrosIJ!:0XNs6TgSrpTmVs7-*Zs7?9_rUp3as7cHds7uZjqtp?ir;H3cJcFX-
+J,~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_no=3hn*f]3m-O'&l0.<mjlGI]iS`VMh;$c=
+g"4g*eC2gmcd'eYb/q`E`PfX0^V@Ip]",>Z[C!9FYck11WiE"qV50l[TV%gGS!o_3QBd\tOcYW`
+N/NRMLPCM9K7\W(IXQTjH?jaZG'%hIEcH&:rQ<ues.0(Xn!j$@s%)uVr^QiTpI,$Kq;_J6rT!\4
+ih-";!2&8Bs53k4s4d\1g=lPYrn%2#s3q,!daId8s3UMBrN>suordtim]?H?s4I>(rn7A,r7q>.
+s5!n9i8ESQro3k9roF+@d_GUlpV$)ns6TgQr9XXTn*ol<qt'm]qt0m6pWi]]o$%$Tr6"u[q8iS@
+ra#M0qd9>1s'be6raYq<qITY<rb)(@rb;=GqJ6+Irr;,trPA0D!-S6`qKMm_rH\'^k'Q`Hqg&$_
+l$*)NrH\<es*OcnrI+]p!.Xuus+(0%re!4aKnb>;LPUeDMMmFPNK0'\OHG]hPE_>tQC!u,R[]e:
+SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YPta1Z*L^B['[7?[K3kIrj`*A]=\'T!kl=^rkJKK!5\ZO
+s24lTrl"rYa2e2#s2b8`rlb>c!6tMgs3C\lrmCbo!7Uqs!nGlQrmq2'g&B_*gAp%.h$;fohr*GO
+iSsjss5X1AroO:Fkii$1!p]+;rp0^RmdC)Cs7$'Yrpp*\s7H9_s7ZKerV6BfrqcNhrVZTlo)=4?
+huA3~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_noF9in*f]3m-O'&l0.<mjlGI]iS`VMh;$c=
+g"4g*eC2gmcd'eYb/q`E`PfX0^V@Ip]",>Z[C!9FYck11WiE"qV50l[TV%gGS!o_3QBd\tOcYW`
+N/NRMLPCM9K7\W(IXQTjH?jaZG'%hIEcH&:R/WHEFmF/GFmjGGFoP#/8,c!V7JB4M6h[8QU]7(b
+U$-aLGQ4<3T)5)QSG/NQR`^3UJH)8>T_P5YUA^kdV#."gVZ3RTO8P%7O8G%7O8Ft9NU]jFY5PL&
+Xotr4Yd(J3ZhUj*RJ*$CQfFJ5QiC=i?2e1-?iFI5@JaO5A,^$8Ac?<@BDQ<@C&MfCC]A5Mg&R</
+OnY%0PPgRDFo?L[GPudbH1cLGHh;X]H2;dMGPudbH2N!gHiJKlIK+`rJ,XuuJH1<$K/nU=L5(J=
+Ll$tGMi<USNfT6_OcklkPa.N"Q^F20S"#q=St;RITqS3UUnjiaVl-JmWiE,$Xf\b0ricU3ZEpmE
+['fnA!OoT<\H9@S]DfGE]tV5[^]2(L_>_=O_uI[S`<+'"a8X0[aT0K_bQ#cdc2Q#gcN)>kdJqVp
+e,Ihue^i=Nf)aOWrn@D,!8RS0#N"@qi8ESQir8!<j8e<@joX`0kl0fJlKdd8liQSBmf)\TnGi%X
+o)J=]o_nI_pAamcq#:*gqYU0gr;?Nardk+,s*t~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_noaKln*f]3m-O'&l0.<mjlGI]iS`VMh;$c=
+g"4g*eC2gmcd'eYb/q`E`PfX0^V@Ip]",>Z[C!9FYck11WiE"qV50l[TV%gGS!o_3QBd\tOcYW`
+N/NRMLPCM9K7\W(IXQTjH?jaZG'%hIEcH&:<)cdphEC^!mlgA.s%)uVr^QiTpI,$K"Aqul:J^sd
+p.tT_fgG<sr^6?Fs$Q?SlVcq9kst85ohtTarD`AefM;<>mnWCLs'#,#s'5P/q-O&"bu=XIra#M0
+qd9>1s'be6raYq<qITY<rb)(@rb;=GqJ6+I!df6>mo/dTpeq2mFo?L[GPudbH1cLGHh;X]H2;dM
+GPudbH2N!gHiJKlIK+`rJ,XuuJH1<$K/nU=L5(J=Ll$tGMi<USNfT6_OcklkPa.N"Q^F20S"#q=
+St;RITqS3UUnjiaVl-JmWiE,$Xf\b0ricU3ZEpmE['fnA!OoT<\H9@S]DfGE]tV5[^]2(L_>_=O
+_uI[S`<+'"a8X0[aT0K_bQ#cdc2Q#gcN)>kdJqVpe,Ihue^i=Nf)aOWrn@D,!8RS0#N"@qi8ESQ
+ir8!<j8e<@joX`0kl0fJlKdd8liQSBmf)\TnGi%Xo)J=]o_nI_pAamcq#:*gqYU0gr;?Nardk+,
+s*t~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLYG4bCso'u8>n*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^)eC2glcd'eYb/q`E`PfX0^q[Rq]=GG[[^<BGYck11X/`+rVPKu\Tq@pIS!ob4QBd\tP)t`b
+N/WXNLk^Y;K7\Z)Isl`lH?sg[G'.nJEcH);rlX]"s./>Cn=06D!(m/\qFCNSrC-HK!(658qr62!
+j.6V:i8EMLh;$c>g"HAW#1qGWe^W'rqpG5f!7CYFriZ:'ordqjpoaLro;qrFrnID,s5!_3rnm_5
+s5<t;r8[e;"m+n/kND'O^\GM2;#KY_mI'H4nbr(Ro`+U]chG`bc10$VbP]N]ao'6[a8]HE?Me+/
+@/aU4@fBm:AGTm:B)ZH>B`;`ECADZDC]J>Os4>-fFoHR[GPl^aH1Q@MHh2R\H2DjIGPudcH2N!f
+HiJKmIK+`rJ,XuuJI-p\K7no3L5(J>reWgrMi<USNfT6_OckomQ'IZ%R$a;1S"#t?StD[LTq\<X
+UnsrdVl6SpWiN5'Xfek3Yd(I=Za7$H[C3NQ\%)FJ!P5oB]`5YF^AbnI_#M7M_?.Wn`;[aU`W4'X
+a9'K+b5TQcbg"E3cMu2jd/MGmdK%bqe,n1Of)F8+f\+s3g=tB;rn[V2!8me6!o`.uro47EjlPXe
+kND(.l2U#Kli$/OmI'EAn,MkWnbr%YoDeI^p&=[bp\jmdq>U6fqu-HjrUTr=s53j,~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLYG4bCso'u8>n*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^)eC2glcd'eYb/q`E`PfX0^q[Rq]=GG[[^<BGYck11X/`+rVPKu\Tq@pIS!ob4QBd\tP)t`b
+N/WXNLk^Y;K7\Z)Isl`lH?sg[G'.nJEcH);rg<4us)e9`eo^_1!(m/\qFCNSrC-HK!(6@PrM0Ce
+rLr=te9:ncqk*n[p7;/Ppm_;R!1V#[q1/45rhBCe!i2TdrhTOirhf[m!2f^m!3"P2o8rg/s,HJD
+rN6+&"0\r6Z21d+Z2Cp-Zhp0dR.Zg-R/^Ik?Me+/@/aU4@fBm:AGTm:B)ZH>B`;`ECADZDC]J>O
+g@UO%P4Fh8P5f\(G56@[Gl;pZHL?.OHM`!bGiX)IGlE!dHN&9kI/\QoIK4lsJH(0,JqJ]/KS>/8
+LPYqd5)P8WN/`jYO-#KePE_>tQC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YHY79Z*L^B
+['d<M[^W`Urj`'@]DfJC]`>eG^]2+L_>_:Q_o0Lm`W*pXa8O'\ai_d*b6#o4c2Q#gcN)>kdJqVp
+e,Ihue^i=Nf*Bs]g"P07gYDeas5!b5rnmk:io9st#NY".k2tjikl0iHl2^/KliQSBmf)\Tn,W"W
+o)J=]o`"O_pAamcq#:*gqYU0gr;?Nardk+,s*t~>
+JcC<$JcG6>oD\^erqu]ks8)ckrV-Hgp@eLYG4bCso'u8>n*f]3m-O$%l0.<mjlGI]iS`VMh;$`<
+f[n^)eC2glcd'eYb/q`E`PfX0^q[Rq]=GG[[^<BGYck11X/`+rVPKu\Tq@pIS!ob4QBd\tP)t`b
+N/WXNLk^Y;K7\Z)Isl`lH?sg[G'.nJEcH);r`&>Ls$#!sq*"dMr^clUr^QiTpI#!Kr_`Ph!`;cj
+pJ:fcj?rN*p-JUC!(6BFr_i>bpJUfc!)hoJkst>7pJUleqGd&bfM;9=nP8OLs',A(s',G,!+#M/
+rE]G0qc(sAs'>V1qd9>1raG_6raYq<qITY<rb)(@rb;=Gq.oqF")W@1Hgao(;YX2jFoHR[GPl^a
+H1Q@MHh2R\H2DjIGPudcH2N!fHiJKmIK+`rJ,XuuJI-p\K7no3L5(J>reWgrMi<USNfT6_Ockom
+Q'IZ%R$a;1S"#t?StD[LTq\<XUnsrdVl6SpWiN5'Xfek3Yd(I=Za7$H[C3NQ\%)FJ!P5oB]`5YF
+^AbnI_#M7M_?.Wn`;[aU`W4'Xa9'K+b5TQcbg"E3cMu2jd/MGmdK%bqe,n1Of)F8+f\+s3g=tB;
+rn[V2!8me6!o`.uro47EjlPXekND(.l2U#Kli$/OmI'EAn,MkWnbr%YoDeI^p&=[bp\jmdq>U6f
+qu-HjrUTr=s53j,~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNfs7ZKcs7?Hco()>?rpO^lm-O''l07Epk2k[aio/hQhVHu@
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8!au]Xt_a[^NQLZ*:F6XK/A"Vl$8bU7n3NSXZ+:R$X)&PEM#g
+NfB!TM26qAKnG#/J:E#rI!U*aGB\4PFE;GAao9H]SGA`UT(\`>SG/NHSGl+Z8GbpU7f>dN6ioa8
+ipYq,iqoA;T'DsFT)YAKT)[gMi<nN#hVI#BgY1?6f_sD'f%&:Le+V5]Y4]!oYk#!qY5PKuX8q#Q
+h#?.0hYuF4i;V[8ir8!;jSn9@k5OTDl,pd9^@>&!;?#nemI'H4o()DDqt'm]rq-0^pWrc_r6=iW
+r6,&]qT8]Ws'GS0ra>_6qdTP7rabn;rau.BqIokBrG).DrG;FL!cJ&<f"qE0rHA!\r-8-bf6[=>
+qfq"BrcnEfr-JBis*Xfos*artrd[IhJqAW-KS>,7L51SAM2I4MN/`jYO-#KeP*;,qQ'[l*R@9V7
+S=Q7DTV8'RUSO]^VPg>jWN)u!XKAV-YHY79ZEggC['fnA!OoT<\c95@]DfGE]tV5[^B23e_>_=O
+_Z7XR`<+'"a8X0[aT0K^b6#o4c2Puicd:&<dJqVpe,IkseH"2"f)jUXg&B\,gYCT`h#ZBiro!h8
+!94"<s5X1AroX7D!9jFHs69UMrp9[P!:KgS!q>aMrUL$]o^r+Ts7ZHdrV6BfrqcNhrVZTlo)=4?
+huA3~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNfs7ZKcs7?Hco()>?rpO[km-O''l07Epk2k[aio/hQhVHu@
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8!au]Xt_a[^NQLZ*:F6XK/A"Vl$8bU7n3NSXZ+:R$X)&PEM#g
+NfB!TM26qAKnG#/J:E#rI!U*aGB\4PFE;GArKuekhfSR7r^m)[qa^TSrC-KL!^iZTo:l5Z!2BId
+ics@)piue3#G@]]TV%jJT(nlUSG/NPSEGIcK)1&qJGl2@UA^kdV#."fVYR.fVuWgHO8"b4O8k71
+;#X>lXTkr3YHY79Z1YF$Zh^$cR.?U.R/^Li?iFI4@JaO5A,^$9Ac?<@BDQ<@C&MfBC]/)JD$+\0
+g62,kpQG97!0mDFrK7/'rHA!\r-8-bf6[=>qfq"BrcnEfr-JBis*Xfos*artrd[IhJqAW-KS>,7
+L51SAM2I4MN/`jYO-#KeP*;,qQ'[l*R@9V7S=Q7DTV8'RUSO]^VPg>jWN)u!XKAV-YHY79ZEggC
+['fnA!OoT<\c95@]DfGE]tV5[^B23e_>_=O_Z7XR`<+'"a8X0[aT0K^b6#o4c2Puicd:&<dJqVp
+e,IkseH"2"f)jUXg&B\,gYCT`h#ZBiro!h8!94"<s5X1AroX7D!9jFHs69UMrp9[P!:KgS!q>aM
+rUL$]o^r+Ts7ZHdrV6BfrqcNhrVZTlo)=4?huA3~>
+JcC<$JcG6>o`"gfrVZTjs8)ckrqQNfs7ZKcs7?Hco()>?rpO[km-O''l07Epk2k[aio/hQhVHu@
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8!au]Xt_a[^NQLZ*:F6XK/A"Vl$8bU7n3NSXZ+:R$X)&PEM#g
+NfB!TM26qAKnG#/J:E#rI!U*aGB\4PFE;GArD`GQoKM.qp-/IIr^coVrC6`Spd>0N:f.-gs%rVj
+s%rJdr^,U3r'Kd:nj<1NpJL]`!`MupqGZQHiCE]5peq#gq,Ho`e5#s<nkS^Or_`Sss',A*!+#P0
+r*B>/pJf[As'GS0ra>_6qdTP7rabn;rau.BqIokBrG).DrG;FL!cE=0mo/dTpJV'7rHA!\r-8-b
+f6[=>qfq"BrcnEfr-JBis*Xfos*artrd[IhJqAW-KS>,7L51SAM2I4MN/`jYO-#KeP*;,qQ'[l*
+R@9V7S=Q7DTV8'RUSO]^VPg>jWN)u!XKAV-YHY79ZEggC['fnA!OoT<\c95@]DfGE]tV5[^B23e
+_>_=O_Z7XR`<+'"a8X0[aT0K^b6#o4c2Puicd:&<dJqVpe,IkseH"2"f)jUXg&B\,gYCT`h#ZBi
+ro!h8!94"<s5X1AroX7D!9jFHs69UMrp9[P!:KgS!q>aMrUL$]o^r+Ts7ZHdrV6BfrqcNhrVZTl
+o)=4?huA3~>
+JcC<$JcG6>o`"gfrquZjs8)ckrqQNf!;?EbH1^_"o()>?n*f]3m-O''l07Eok2k[aio/hQh;-l?
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8*h!]Xt_a[^NQLZEUO7XfJJ$Vl$8cU7n6OSXc1;R$X)'PEM&h
+O,]*VM2@"BKnP)1J:N)sI=$9cG^"=RFE;JBaiV^'SG\rPT)5)ASH#)RSGA]U9)_E]8GbpU7fGjN
+7/c-5irG_7T(elHT)G5ST)>,Z62omBiW%d=hVHuBg=lPZs4IA'"kM5ReC2nCdf$BLY3N4eYjnpp
+Y5>@!XT.,UhZ)L4i;_d8iW/$;jSn9?k5XWEkQ'lHlMp1u^\bbE^\PV6;#X;tm-X60nF?)@oD/%S
+p%6Q1cM5ZWbl#Z_b4s'YaS]EE@/aU3@fBm:AG]s;B)ZH>B`;`ECADZDD#J5KD?0_(_YqC?_>n`W
+G5-:ZGl)dBHMVpbGk-(NG4p.ZGlE!eHN/?lI/\QoIK4lsJ-LRVJqJ]/L&QfgLPUeDMMmFPNK0'\
+OHG]iPa.N"Q^F/.S"#q=St;RITqS6WUnsrdVl6SpWiN5'Xfek3Yd(L>Za7$HrjDj:\Gj#>]"@sS
+s1JEHrkJKK!5\WN!lMsprl+oW!6>&Z!m/U-rlb>c!6tJf!mf6?rm:eqe'n<Gs4%,#rn%2&!87A*
+!o)McrnRY4hr"Fk!o`.uro4(@jlQL(!pAe2rojLLlg+Q:s6TgSrpTmVs7-*Zs7?9_rUp3as7cHd
+rqZTjqYU6hr;H3cJcFX-J,~>
+JcC<$JcG6>o`"gfrquZjs8)ckrqQNf!;?EbG4bCto()>?n*f]3m-O''l07Eok2k[aio/hQh;-l?
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8*h!]Xt_a[^NQLZEUO7XfJJ$Vl$8cU7n6OSXc1;R$X)'PEM&h
+O,]*VM2@"BKnP)1J:N)sI=$9cG^"=RFE;JBrg<G&rH@jVmWA;Js)e$Yq/ua1r^m)[qa^TSr^HQL
+rLrYRi-=I0pildar-/3-rLs+]rh'1]qORAMs.&/$k(<G\r."dArhKIgpn[tfpo"(hrMfgsb`Dab
+qMtW:nPK3^"Kei1YH\#2p9O_*rNl9eqj?i=m$R]Xra>_6qdTP7rabn;rau.BqIokBrG).DrG;FL
+r,)PhP4Xn2P4Fh8OoTY'G5-:ZGl)dBHMVpbGk-(NG4p.ZGlE!eHN/?lI/\QoIK4lsJ-LRVJqJ]/
+L&QfgLPUeDMMmFPNK0'\OHG]iPa.N"Q^F/.S"#q=St;RITqS6WUnsrdVl6SpWiN5'Xfek3Yd(L>
+Za7$HrjDj:\Gj#>]"@sSs1JEHrkJKK!5\WN!lMsprl+oW!6>&Z!m/U-rlb>c!6tJf!mf6?rm:eq
+e'n<Gs4%,#rn%2&!87A*!o)McrnRY4hr"Fk!o`.uro4(@jlQL(!pAe2rojLLlg+Q:s6TgSrpTmV
+s7-*Zs7?9_rUp3as7cHdrqZTjqYU6hr;H3cJcFX-J,~>
+JcC<$JcG6>o`"gfrquZjs8)ckrqQNf!;?EbG4bCto()>?n*f]3m-O''l07Eok2k[aio/hQh;-l?
+g=Y$.e^W$pd*L"]bK@oI`l5m5_8*h!]Xt_a[^NQLZEUO7XfJJ$Vl$8cU7n6OSXc1;R$X)'PEM&h
+O,]*VM2@"BKnP)1J:N)sI=$9cG^"=RFE;JBr`&VTlosr&r'(-DpceL<!)!5^r^coVrC6cTpI,$W
+s%rDds%rVh!`20Kr'K^:oKrC?pd4dD!CB0O63'=G;Yj8d;?0Yj;WL=)8,PjV;Ya8c<:No':@V0[
+;?'i">Ph\(?2n7->le8=oMjIAr*TG2raG\5raYq<qdob=rb)(@rb;=Gq.oqFrGDIM!."!2nl#6]
+!-S6`pilX\qg%"DqK`!`nos_Lp36L\rd"Hgs*OcnrdFfq!.Xuu#(_AXK7ei2re<LiLl$tGMi<US
+NfT6_OckomQ'IZ%R$a;2S"-%@StD[LTqeEZV5C/gW2ZesX/rG*Y-5(6Z*L[AZa@.>[K3kIrj`'@
+]DfJC]`>eG^]2(L_>V4P_o0Lm`W*pXa8O'\ai_d*bQ#cdc2Gohcd:&<d/qbFe,IkseH"2"fDjJ'
+g&B\,gYCT`h#cHjhu;O8iSrkrir\<'jo4BDkNM./klU/9li-8Nm/ZSRn,MnWnc&+ZoDeI]p&Fac
+p\agcq>^<fqu-HjrUTr=s53j,~>
+JcC<$JcG6>o`"gfrqu]krqcZjrqQNf!;?EbGkCV!o()>?n*f]3m-O''l07Bnk2kX`io&bPh;-i>
+g=Y$.eC;pod*L"]bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl$;dU7n6OSt):=R$X,(P`h/j
+O,f0WMM[.DL4k22JUi6!I=-?eH$=IUFEDSEaiX=JoUc#PoUPTDr1*eVoUYtRr^m,\qFCNSrC-KL
+qr7/+rL`2CpRguInt#eHr8Rk<iSjdos5"CEgtUQ:g"G$1f@SU)e^W'sdaS3D!O&['YN2qbYOSdm
+Xo>F%hu)C8iSrkWj8A!<jo=KBkPjZHl0@R4li6>!^[]&0;#=)nmdKZ8o(2VJqXjj\pWr]]r6=iW
+r6+u[qT8_Ds'Yh7qdTP7rabn;rau.BqIokBrG).DrG;FLq/664n\Y.?mD8jGrH@s[qfr!`id1HH
+qfqaWmWSALrcnEfrHeKjs*Xfos*artrdY$#K)UB`KS>/8LPUeDMMmFPNK0'\OHG]hPE_>tQ^F/.
+R[]e:St;RITqS3UUnjlcVl6SpWiN5'Xfek3Yd(M5ZO=.J[^NZS\@K/]]"@sS!kl=^rkANM_86,f
+s2+iTrl+oWs2Y,[s2b8`rQ>8dc-?75s3L_lrm:eqe'n<Gs4%,#rn%2&!87A*s4[P/rn[V2!8me6
+s5<t;ro=%>!9O4Bs5sCGrosIJ!:0UM!q#FDrpTmVs7-*Zs7?9_rUp3as7cHdrqZTjqYU6hrVc9c
+JcFX-J,~>
+JcC<$JcG6>o`"gfrqu]krqcZjrqQNf!;?EbGkCV!o()>?n*f]3m-O''l07Bnk2kX`io&bPh;-i>
+g=Y$.eC;pod*L"]bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl$;dU7n6OSt):=R$X,(P`h/j
+O,f0WMM[.DL4k22JUi6!I=-?eH$=IUFEDSER$dYkqKDUUoQ9MDoQL4+r^m,\qFCNSrC-KLqk<PS
+!-e-]pNc.NpNPtKs$?RW!297^rgs1^qORGP!h5^M^k)K8s.oCcr20FjqPaCmr2RSoo2,<]s02F+
+pp0q+s0Vd3!4)?eqO$f>m$RcZs'Yh7qdTP7rabn;rau.BqIokBrG).DrG;FLq/65d!0[#;pQG97
+!0mDFrK7/'rH@s[qfr!`id1HHqfqaWmWSALrcnEfrHeKjs*Xfos*artrdY$#K)UB`KS>/8LPUeD
+MMmFPNK0'\OHG]hPE_>tQ^F/.R[]e:St;RITqS3UUnjlcVl6SpWiN5'Xfek3Yd(M5ZO=.J[^NZS
+\@K/]]"@sS!kl=^rkANM_86,fs2+iTrl+oWs2Y,[s2b8`rQ>8dc-?75s3L_lrm:eqe'n<Gs4%,#
+rn%2&!87A*s4[P/rn[V2!8me6s5<t;ro=%>!9O4Bs5sCGrosIJ!:0UM!q#FDrpTmVs7-*Zs7?9_
+rUp3as7cHdrqZTjqYU6hrVc9cJcFX-J,~>
+JcC<$JcG6>o`"gfrqu]krqcZjrqQNf!;?EbGkCV!o()>?n*f]3m-O''l07Bnk2kX`io&bPh;-i>
+g=Y$.eC;pod*L"]bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl$;dU7n6OSt):=R$X,(P`h/j
+O,f0WMM[.DL4k22JUi6!I=-?eH$=IUFEDSE<)iWUjZ`2tr''a;r_!/]s%)uVr^QiTpdG*Wr_W;c
+s%r_k!Dl&Z62O">6g[5<61@8?6N9@.;TM?'8,c!P;u]hs;u0Ja;o)6#;#=,d>l@q.>k_P(?M@FL
+;uU/(@/aU3@fBm:AG]s;B)ZH>B`;`ECADZDD#J5HDZ>"N;t<i\;ZLt=G5-:YGl)dGHMVpaGk?4J
+G5-:\GlE!eHN/?lI/\QoIK4lsJ,t4Qre!7bKnb>;Ll$tGMi<USNfT6_OcklkPa.N#R$a;1S"#q>
+StD[LTq\<XUo(&fW2ZesX/rG*Y-5(6Z*OA8$ad=M[^W`U\[f;_]DfGE]tV5[^B23e_>_=O_Z7XS
+`W*sXa8X0[aT0K^b6#o4c2Q#gci;Akd/qbFe,IkseH"2"fDjJ'g&B_*gAp%.h>c=3hu;R6i;hm:
+j8\0?jo4EBk5a`Fl2U#Kli$/OmI'EAn,MnWnc&+ZoDeI]p&Facp\agcq>^<fqu-HkrUKl<s53j,~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l0.<mk2kX`io&bPh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl-AeUS4?QSt):=R$a2)P`h2k
+O,f0XMM[.EL4t84JUi9"I=-BfH$FOVF`_^(anhP*Sb\lRSar<BS,SoXS,SrSSbu+Z8cD9X8,c!V
+7JT@MiVhd6j8\-8j8,D1T(S`IT(SZQ62]gBir@sAi8<DJgt^Z_gAfe*fDaA#eH47Le+^',YktWp
+Y5YR$XS^oYiSrkWj8A!=k5=EAkl0lGlN$;Nm/Y!#^t-9l^@G+s;$HIZo()DDq=ORWrq-$4q9Jo_
+n]^sTpWEKWra>_6r*oY8rabn;rau.BqIokBrG)1Er+u=KpMU"L!<;Z-pVZF9!-S3_pNQO[q0D4N
+q0Dj^oQU"PrH7jXqKMp`s*=Qhs*OcnrdFfq!.Xuu!J,k%K/nU=L5(J>M2@+JN/WaVO,oBbP*2&p
+Q'Rc(R$jG5S=Q7CT:qsQUSO]^VPgAlWiE,$Xf\b0YctC<rj*0C[C3NQ\@B)[]">Se]Y2"mrkJKK
+!5\ZOs24lTrl"rYa2e2#s2k;`rlb>cs3:Pgs3C\lrQt\pe'n<G!nGlQrn%2&!87A*s4[P/rn[V2
+!8me6s5<t;rSmt?jlQL(!pAe2rojLLlg+Q:s6]jSrpTmV!:g$Ys7?9_rUp3as7cHds7uZjqYU6h
+rVc9cJcFX-J,~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l0.<mk2kX`io&bPh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl-AeUS4?QSt):=R$a2)P`h2k
+O,f0XMM[.EL4t84JUi9"I=-BfH$FOVF`_^(R/1t"G5$.MFR4/HG5Ou38cD9X8,c!V7JT@IU&:Yb
+U&(MSGjp"YGkH@FGl9r+U\gb`TE(V[T)"rWSA0XTJG,i;V?!OiW;<LlWW8.WO8=maO7H-D;>[Wo
+ZMV!.Z2h0*RIlm@Qg0t;@/aU4@fBm:AG]s;B)ZH>B`;`ECAM`DD#J5FDZ=VUg62)jpQG*2rK7/'
+r-%gYr-8$_l$E/NqfqaWp3-CWpNHCWrcnHgrHeKjs*Xfos*artrdY$#K)UB_KS>/8LPUeDMMmFP
+NK0'\OHG]hPa.N"Q^F/.S"#q=St;RJTq\<XUnsrdW2ZesX/rG*Y-5(6Z*OA8&@AjR[^WcV\[f;`
+]=bei]tXK\s1eWNrke]Qs2=oU!li:$rlG,]s2t>as31Mfrm(Pi!7:\l!n,QHrmV#"f%0iPs4@>)
+rn@D,!8RS0s5!b5ro!h8!93t;!p&J)roO:Fkii$1!p]+;rp9[Ps6fmTs6p$YrUU![s7H9_s7ZKe
+r:p<frqcKgrVZWmnc"+>huA3~>
+JcC<$JcG9?oD\^erqu]ks8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l0.<mk2kX`io&bPh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_a\$iZMZEUO8XfJJ$Vl-AeUS4?QSt):=R$a2)P`h2k
+O,f0XMM[.EL4t84JUi9"I=-BfH$FOVF`_^(<;Jc754Lf655IMA9)_E]8GbpV7f>dO7/9[Q;>sDd
+62X(>6g-l,6iB=.;Y3H07J0+M;u9Ji;uK\`;o2<#;#4#h?2.[u?2n7,<7=eF@/aU4@fBm:AG]s;
+B)ZH>B`;`ECAM`DD#J5FDZ=VTH1"W%;YX/jFo6FWGPl^]H0KYNH2DjYGP64YFn^(UGQ)jeH2W'h
+HiJKmIK+`rJ,Xs!JV*lR3J<*@L51SAM2I4MN/`jYO-#KeP*D5sQC!u+R@B\9SXuFFTqS3UUnjia
+Vl6SpWiN5'Xfek3Yd(M5ZOjLO[^NZT\@K/]]=Y_g]tM/Z^]2(L_>_=O_uI[S`<+'"a8X0[aoBN_
+bQ#fdc2Q#gcN)>jd/qbFe,Ihue^i=NfDjJ'g&B_*gAp%.h>c=3hu;R6i;hm9ir\<'jo4BDkNM./
+klU/9li-8NmJlVRn,MkWnbr%YoDeI]p&Facp\agdq>U6equ-HkrUKl<s53j,~>
+JcC<$JcG9?o`"gfrVZTjs8)ckrV-Hgp@eLYGP(Lto'u8>n*f]3m-O'&l0.<mk2bR_iS`YNh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_b\$iZMZEUR9XfSP%W2HJfUS4BRSt2@?R@'>+P`q8m
+O,o9ZMi*@HL5(A6Jq8H%I=6KhH?j^YG'%iJanqV&Sc55WSa2gDS+)sJ9DhE]8cM?X8,c!V7J]CR
+hr*GliVhd9j87j8j7f2@T&H=/T)YA[62TaBj8\-<i<J5thqm2Fh#6"-g&BV,f@JNVYP,3cZ2:d&
+YO\jpXo>C%i;V^8ir.s7k5OQDkl9oHlhp,Km/Y$$_>(h&^\#84;#4&h;ZH7go(2JJo_nI_o`"I[
+chPccchu&gc1&sRbPTH]ao5`G@fBm;AG]s;B)ZH>B`;`ECAM`ED#A/EDZ"DRE<#RIpVZgDrknQK
+!-S3_p36@XpNc@VpNcX\olp4TnoaePqfi$as*=Qhs*Ocnrd>0'It*!!JUrE*K7nsXL,=[AM2@+J
+N/WaWO-#KeP*;,qQ'[l*R@9V8SXuFFTV8*TUnjiaVl-JmWiN5'Xfek3Yd(M5ZN[_D[^NZTrj`'@
+]DfGE]tV5[^B23e_>_:Q_o0Lm`W*pXa8O*ZaT0K^b6#o4c2Q#gci;AkdJqVpe,@bte^i=NfDjJ'
+g&B_*gAp%-h#cHjhu;O8iSrkrir\<'jo4EBk5a`Fl2U&Kli-5PmI'EAn,MnWnbr"[oCV\Rp&=[b
+p\agdq>U6equ-HkrUTr=s5*d+~>
+JcC<$JcG9?o`"gfrVZTjs8)ckrV-Hgp@eLYGP(Lto'u8>n*f]3m-O'&l0.<mk2bR_iS`YNh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_b\$iZMZEUR9XfSP%W2HJfUS4BRSt2@?R@'>+P`q8m
+O,o9ZMi*@HL5(A6Jq8H%I=6KhH?j^YG'%hnR/;$uG5$.KFQmrJ9DhE]8cM?X8,c!V7J]FHU&Uka
+U&Le]GkZLYHKoeCGlN!d5ldb[U]@1fUA^ecT_Y5UT"KUSJG5o:Vu!@fWW&mtOSFn/NnKKc;#4&h
+;Z!a!ZMq01ZMq05ZEpmCZMq-,RI-C@Qfjb8@JaO5A,g*:Ac?<@BDQ<@C&MfCC]/)ID>.rGDZXn3
+P4at3P51=@Pl-aEOoTY&G4p.VGkZLTHM;^^GkH:VG4KePG5HL_GlN'fHN/?lI/\O%IXcitJ:W9'
+K7ei2re<7bLl$tGMi<USO,oBbP*2#nQ'I]'R$jD4S=Q7CT:hmPUSO]^VPg>jWN*##Xf\b0YctC<
+rj)d8[C3NQ\Gj#>]"@sS!kl=^rkANM_86,f!lMsprl+oW!6>&Zs2b8`rQ>8dc-?75s3L_lrmCbo
+!7Unr!nGlQrn%2&!87A*s4[P/rS7P3hr"Fk!o`.uro4(@jlQL(s5sCGrosIJs6K[N!q#FDrpTmV
+s7-'Y!qZ'VrUp0`s7cHds7uZjqYU6hrVc<dJcFU,J,~>
+JcC<$JcG9?o`"gfrVZTjs8)ckrV-Hgp@eLYGP(Lto'u8>n*f]3m-O'&l0.<mk2bR_iS`YNh;-i>
+g"=p-eC;pod*Bq\bK@oI`l5m5_8*h!]Xt_b\$iZMZEUR9XfSP%W2HJfUS4BRSt2@?R@'>+P`q8m
+O,o9ZMi*@HL5(A6Jq8H%I=6KhH?j^YG'%h*<;Si155@A556":R9)_E^8GYjU7f>dP6i^*Z;"dcW
+62a+M6hWqG6g-l26iTLO62a^_<)`!Ys&8qdo1%h1njN1?qbm;i!*&8_!)LL-oMGB]s&/Srp0I])
+r)EGi!*%ZNraG\5raYt=qdob=rb)(@rb;=GqJ6%Gr,)1Gr,2UTHLFf);YF#hFo6FVGPZRYH1Q@V
+H2DjZGPQFQFo$:YGQ)jeH2W'hHiJKmI1(LRIt3'#JV&N,KSBD[1l$mDM2I4MN/`mZOHG]hPE_>t
+Q^F/.R[]h<St;RITq\<XUnsrdVl6SpX/rG*Y-5(6Z*OA8"gk\G[^WdG\H0:Rrk&<G^:sT]!l2Xg
+rk\`S`5MYos2G&ZrQ,#\!6Y8`!mJp6rm(Pis3Ubms3^nrrR:o!f%0iPs4@>)rn@D,!8RP/!oDhl
+rnmk:io9st!p&J)roX7D!9jFHs6BXMrp0^RmdC)Cs7$'YrUL$]o^r+Trq?Bdr:p<frqcKgrVZWm
+o)=4?hZ&*~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNfs7ZKcs7CI*o()>?nF,i6mHj3)l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&]tCtf\[T#TZa-j?Y-"e*Wi2hmUnaZXT:VUDS!fY1QBdYs
+OcYWaN/WXNLkg_=K7e`*IsufnH[9s^GBS,Nao%\#SH,2XS`H=8SbnrW9`Ic`9)_E^8GYjU7f>dQ
+6ic-AhuMa/iW/$3T)bJ1TD"lS63$!?jT"9?iWA)si;VU6hYu@2h#H./gAfh(Yhu__Yl(]pY5PI&
+XT%8YjT"?>k5FKCkQL/8lKdd5m/HDP_Xt\>^u`?(^@b>";>a;lo)A7Zo_nF_o`"Leo^h\FoCDn,
+m`tgVo?@!Q!6Y5]qdTP7rabn;rau.Bqe5tCrG)1ErG;CKphotIr,D8EpVZsHqnr3G!-S3_p36=W
+jE^THolp7Ului5Lqfi'brd"Hg!df<Brd@FgIt*!!JUrE*K7nr5L51SAM2I4MN/`jYO-#KeP*D5s
+QC!u,R[]e:SXuIHTqS3UUnsrdVl6SpWiN8(Y-5(6Z*L^B['[6L[^WdG\H0:Rrk&9F^AbnI^];4M
+_Z.LR`;[aU`rF*YaT'B^b5TTabl>recMu2jd/DAldK%bpe,n1Of)F;$fDsV'g&g$ah#?+2hV[5i
+i;_a9ir8!<j8e<?joX`0kl0iHl2^/Lm/QJQmf)\TnGi%Xo)J=]o_nI_pAXgbq#:*gqYU0gr;?Na
+rdk++s*t~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNfs7ZKcs7CI*o()>?nF,i6mHj3)l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&]tCtf\[T#TZa-j?Y-"e*Wi2hmUnaZXT:VUDS!fY1QBdYs
+OcYWaN/WXNLkg_=K7e`*IsufnH[9s^GBS+rR/D*uG4]qLFRjSQG5HF^9`Ic`9)_E^8GYjU7f>dQ
+7.$ZLU3LqVH16.?H1cF[62[SXV#R1iUALY\T`:Y]T(moUJc;MCVYm@eW;3CqWiN1^OS=h&NoH,m
+;#=,f;Z*d$ZEpn9Zim_@ZEpk7Z2U0:R/:@lA,^$9Ac?<@BDZBAC&MfCC]/)ID>8#GDu=PSP4Xn2
+P5UUAPl-aDOoTY&G4p.UGiX/HGkH:WG3jALG5HL`GlE!eH3/G@I/\OeIXcitJ:W9'K7ei2L5(J>
+M2@+JN/WaVO,oBbP*2&pQ'Rc(R@9V7S=Q7DTV8'RUSO``Vl-JmWiE,%Xfek3Yd(L?Za@*I[^NZT
+rj`'@]DfGD]tXK\s1eWNrke]Q!6"lUs2P)ZrlG,]s2t>as31Mfrm(Pi!7:\ls3^nrrR:o!f%0iP
+s4@>)rRq>-gt_nb!oDhlro!h8!94"<s5X1ArT41Ekii$1s69UMrp9[Ps6fmTs7$'Yrpp*\s7H9_
+s7ZHdrV6BfrqcNhrVZTlo)=4?hZ&*~>
+JcC<$JcG9?o`"gfrquZjs8)ckrqQNfs7ZKcs7CI*o()>?nF,i6mHj3)l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&]tCtf\[T#TZa-j?Y-"e*Wi2hmUnaZXT:VUDS!fY1QBdYs
+OcYWaN/WXNLkg_=K7e`*IsufnH[9s^GBS+.<;\oA55[Y155d_C56"=V9DhE]8cM?X8,c!V7JfLP
+;><u_;=m0P6Mj.E7/TF16Ms.G<;]\_;ZB\b7c[#/7/04E;uTb`;u]YT:B!uI:A%H\;>a>f>lS+0
+?MRk-?=3\2c;XULraYq<qdob=rb)+Arb;=GqJ6%Gr,)4HqeuCOmSimYnl#O2r-%dXq0:tGqKV[W
+qKD4Jr-%s]s*4NgrH\NlI!kpA97DA?J:N3%JqJ]/Knb>;Ll$tGMi<USNfT6_OckllQ'IZ%R$jD4
+S"-%@T:hmOU8+N\VPg>jWN)u!Xf\b0YctC<Za7$G[C3NQ\Gj#>]"@sS!PQ5H^]2(L_>_=O_Z7XS
+`W*sXa8X0[aoBN_bQ#fdc2Q#gcN)>jdJqVpe,@bte^i=NfDjJ'g&9V+gYCT`h#cHjhu;R6i;hm:
+j8\0?jo+<CkNM./l2U#Kli-8NmJlVRn,MnWnc&+ZoDeI]p&Fabp\jmdq>U6fqu-HjrUTr=s5*d+~>
+JcC<$JcG<@oD\^erqu]krqcZjrqQNf!;?Ebs7?Hco()>?rpO^lmHj0(l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&^:_(h\[T#TZa6p@YH=n,Wi2hmUnj`YTUqaFS!o_3QBd\t
+P)t`bNJrdPM2-h>KS+l-J:DuqI!U*aGB\5PanqV%S_BV+SH><T9`@]_9)hK^8GYjU7f>dR7/l*>
+i;_d4ipr`@T')aDT^n`PT)YG[62BR?jSe-<irA!9i;VR5h>Z40g\J)4Z2:d'YOSdqXoCcjjQ5M%
+k54??kl'fGlN$;ImHVO`_!Ac0^@kD";>a>l;ucIgo_nI^oDnR`o`"C^naPbfrQY)\qTJcYs2k7L
+raYq<qdob=rb)+Arb;@Hq.oqFrGD:Hr,;FNs)A&=oYU@?!5eKJq8*,Sqf_XVpiu+Mq0;RVqKDRT
+r,h^VrHA'^rcnHgrH\NlI!kpA6%4<5J:N3&JqJ]/Knb>;Ll$tGMi<USNfT6`P*2#nQ'I]'R$jD4
+S=Q7CT:hmPUSO]^Vl-JmWiE,$Xf\b1Yd(M5ZOaFN[^NZT\[f;_]=bei]tXK\!l2Xgrk\`S`5MYo
+!li:$rQ#&^b0'\+!mJp6rQYJjd*Va=!n,QHrm^tus472$s4@>)rRq>-gt_nbs5!b5ro!h8s5O%<
+!p&J)roX7D!9jCG!p]+;rp9[P!:KgSs6p$YrUU![s7H9_s7ZHdrV6BfrqcNhrVZTlo)=4?hZ&*~>
+JcC<$JcG<@oD\^erqu]krqcZjrqQNf!;?Ebs7?Hco()>?rpO^lmHj0(l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&^:_(h\[T#TZa6p@YH=n,Wi2hmUnj`YTUqaFS!o_3QBd\t
+P)t`bNJrdPM2-h>KS+l-J:DuqI!U*aGB\4tR/;%"G4B_LFRsYJFole[9`@]_9)hK^8GYjU7f>dR
+7.HuLU@3BuHK0;GGl'f#V>d7gU&gs^qk<q\s.B";qh!(Ds$Zj`rMTCgq5O4j!3?!YqN'`ul]:a9
+qGI/gs&8s&s0D[2rj;X1rj)I,m?mp?iL'URraYq<qdob=rb)+Arb;@Hq.oqFrGD:Hr,;FNs)A(n
+P4at3OoU^?Pl-aEOoTY%G4g(SGjBYNGkH:WG4p(VFSL"WG5HL_GlN'fH3/G@I/\O[IXcitJ:W<(
+K7ei2L5(J>M2@+JN/WaVO,oEdP*;,qQ'[l*R@9V8SXuFFTV8*TUnjibVl6SpWiN5'Xfen4Z*OA8
+&%&aQ[^WcW\[oAa]Y(qk^AbkK^qmkd_?.Wn`;[^W`lH-ua9'K+b5KKbbg"E2c2u>=d/D>ndaQ\E
+eGn)!f)F;$fDsV'g&g$ah#?.0h>lI4i;_d9ir7s>jQ5M&k5XTEkl'`IlKdd8m/QGQmeuVSn,W"W
+o)J=]o_nI_pAXgbq#:*gqYU0gr;?Nardk++s*t~>
+JcC<$JcG<@oD\^erqu]krqcZjrqQNf!;?Ebs7?Hco()>?rpO^lmHj0(l07Epk2k[aj5JqShVHuA
+g=b-1f$r3tdEp1abfe/MaMu3;_SO%&^:_(h\[T#TZa6p@YH=n,Wi2hmUnj`YTUqaFS!o_3QBd\t
+P)t`bNJrdPM2-h>KS+l-J:DuqI!U*aGB\41<;SiC557A@55[Y?54q,A5"nZL9DhE^8cD9W8,c!V
+7JoRO;><ub;>roQ62X(L6iKFB6fgZ362":I;uT\p;sm-:7I`eC7K5dT<;KPm<:*WD:A7KK:A.N\
+;>a>l;uBnm?2n43?W>6JraPk:rabn;rau.Bqe5tCrbD7ErG;FLpMTnIqJcIS!.+*4qbll]!-S0^
+olp1UlZr;Nolp7Up3$:TpiZOYqfi$as*=Qh!df<Brd@(]It*!!JV&K+K7nr5L51SAM2I4MN/`jY
+O-,TgPE_>tQ^F/.R[]h<St;RITq\<XUnsueW2ZesX/rG*Y->.8ZMq0@['d?N\%&uZ]"5Md]Y2"m
+rkANM_86,f!lMsprl"rYa2e/"!m/U-rQ>8dc-?44!mf6?rQt\pe'n<Gs4./#rn%2&!87>)!o)Mc
+rn[V2!8me6s5F";ro4(@jlQL(s5sCGrTOCKlg+Q:s6TgSrU9dU!:g$Ys7?9_rUp3arqHBdrqZQi
+qtp?ir;H3cJcFU,J,~>
+JcC<$JcG<@oD\^erqu]ks8)ckrV6Ee!;?EbGP(Luo()>?n*f]3m-O''l07Epk2k[aio/hQhVHuA
+g=b*0f$r0sdEp1abfe/MaMu3;_SX+'^:_(h\[T#TZa6p@YH=q-Wi;nnV50l[TV%gHS!ob4Q^*i"
+P*(fdNJrdQM26n@KnG#/J:N)sI!^0bG^"ARSbS`PS`cLCSb/HDSc;Fa9`@]_9)hK^8GbpU7f>dS
+7/YpCi8=IjrSd_7q4@Y[pn.PWl_!pEo:PuQq*FW4qVqP6ro!e5"5_k<Yk>3sYj/LkYj\doY5^oh
+k5"3>kl0iFli$2LmJZAQmD6X;_!&T7_!8]1^@tJ$;>a>j;uZFfp%n:boCDG@n*]W-c2c2icMl)a
+bkoTZb5PoMAG]s;B)ZH?B`;`FCAM`ED#J5FDYnALE;+AG_X58:_Z+cUG4^"PGk?:TGkH:WG56:P
+FSg4ZG5HL`GlN'fH3/G@I/\NuIXcitJ:W=OK2.)RL5(J>M2@+JN/WaVO-#KeP*;,qQC!u+R[]e:
+SXuIHTqS3VUnsrdVl6VqX/rG*Y-5(6Z*L^B['d?N\%&uZ]"5Md]Y2%n^V@S"_>_=O_Z7XS`W*sX
+a8X0[aT0K^bQ#cdc2Grfci;AkdJqYpe,Iksec45"fDjJ'g&9V+gYCT`h>c=3hu2I7iSrkrj8\0?
+jo4EBkPscFl2U#Kli$/OmI'E@mfN"Knbr%YoDeI]p&Facp\agcq>U6fqu-HjrUTr=s5*d+~>
+JcC<$JcG<@oD\^erqu]ks8)ckrV6Ee!;?EbG4bCto()>?n*f]3m-O''l07Epk2k[aio/hQhVHuA
+g=b*0f$r0sdEp1abfe/MaMu3;_SX+'^:_(h\[T#TZa6p@YH=q-Wi;nnV50l[TV%gHS!ob4Q^*i"
+P*(fdNJrdQM26n@KnG#/J:N)sI!^0bG^"A!pN?@VmWJAJo6'YJs%WMer_*/]s%32\qa^TSrC-ZQ
+pS%>Uq0D(Jja$]Iq*FYLrhK+[!MQ1XKBRpWJb4QoJcA.;Vtm:_WVNRiOSb*uNpi&';#=,f;Z0Po
+ZNRS?Za@+<Zi790Z2_$/YH[D]r0QK3raYq<qdob=rb)+Arb;@HqJ6%GrGD:Hqeu@NpMonhqNCiA
+pQYT>rf[;(qf_UUp3?4Tp3?7SqKD[Wo5skPrHA'^s*4QhrH\NlI!kpA#(D&OJ:N3&re!t!Knb>;
+Ll$tGMi<USNfT9aP*2#nQ'Rc(R$sM6S=Q7DTV8'RUnjiaVl-JnWiN5'Xfek3Yd(L?Za@-K[^WcW
+\[oAa]Y(ql^;%Fu^qp#es2+iTrl+oWs2Y,[s2b8`rQG5b!6tJfs3L_lrmCbos3ptss4./#rn%2&
+!87>)!o)Mcrn[V2!8mb5!o`.uro=%>!9O4Bs6'FGrosIJ!:0UM!q#FDrU0gWnaZSKs7?9_rUp3a
+s7cHdrqZQiqtp?ir;H3cJcFU,J,~>
+JcC<$JcG<@oD\^erqu]ks8)ckrV6Ee!;?EbG4bCto()>?n*f]3m-O''l07Epk2k[aio/hQhVHuA
+g=b*0f$r0sdEp1abfe/MaMu3;_SX+'^:_(h\[T#TZa6p@YH=q-Wi;nnV50l[TV%gHS!ob4Q^*i"
+P*(fdNJrdQM26n@KnG#/J:N)sI!^0bG^"@3pH@q.oKN=@pcn^@o0<7Ls%NDbr(?u\r^coVrC6`S
+rC$N[qb[/es&/h`rB^KMhEps(mm?h9oMk9XlUKu)nO3=Es$ZW\s&A;_qb?9LqG$u`peC?TpJC`a
+r)3Jls'5V0p0IZ("'o5=?2R[h;ZKeY;uU;+AG]s;B)ZH?B`;`FCAM`ED#J5FDYnALE;+AB;u]b^
+;u_";G4^"PGk?:TGkH:WG56:PFSg4ZG5HL`GlN'fH3/G@I/\NuIXcitJ:W=OK2.)RL5(J>M2@+J
+N/WaVO-#KeP*;,qQC!u+R[]e:SXuIHTqS3VUnsrdVl6VqX/rG*Y-5(6Z*L^B['d?N\%&uZ]"5Md
+]Y2%n^V@S"_>_=O_Z7XS`W*sXa8X0[aT0K^bQ#cdc2Grfci;AkdJqYpe,Iksec45"fDjJ'g&9V+
+gYCT`h>c=3hu2I7iSrkrj8\0?jo4EBkPscFl2U#Kli$/OmI'E@mfN"Knbr%YoDeI]p&Facp\agc
+q>U6fqu-HjrUTr=s5*d+~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0e^W'rdEp1abfe/MaMu3;_SX+'^:_+i\[])U['R$AYHG".Wi;noV50l[Tq@pIS"#h5Q^3o$
+P*1ofNfB!UM2@"BKnP)1JUi6!I=-BfH$II0SbJWSS`ZI?Sb\fHSc):_9`@]`9)_E]8GbpU7f>dT
+7/5[>i;)@1T)bP\TC\ZETCJTITDtMY60mP2ir%d8huM[5Yj\dgYkG@"YjS^n7/l?Gk5a`Fl2U&K
+lhg&Klhg#Kli+`s_"tnE_YM%E_!f&7^A1V&;>a>g;ucLip&4LkoCV\Ho'u2<n*]T0m,H=hc2>f]
+bP]N^AG]s;B)ZH?B`;`FCAM`ED#J5GDYnALE:IrHEr<f@_th.LFo-@QGN=#?GPcR[FmX;KFo?L]
+GQ2pfH2W$jH[L5?I0"eHrd[[nJqJ]/KnY89LPUeDMN!LRNfT6_OckomQ'IZ&R$jD4S=Q7CT:qsQ
+USO]_Vl-JmWiN5'Xfek3Yd(L?Za@-K[^WcW\[oDb]Y(qlrkANM_86,f!lMsprl"rYa2e2#s2k;`
+rlb>cs3:Pgs3L_lrQt\pe'n9Fs4%,#rR_)%!87>)!o)Mcrn[V2s53h6!o`.uro=%>s5j7Bs5sCG
+rosIJs6K[Ns6]jSrpTmVs7-'Ys766_r:U*`s7cHdrqZQiqtp?ir;H3cJcFU,J,~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0e^W'rdEp1abfe/MaMu3;_SX+'^:_+i\[])U['R$AYHG".Wi;noV50l[Tq@pIS"#h5Q^3o$
+P*1ofNfB!UM2@"BKnP)1JUi6!I=-BfH$G_JFT?UNFo6@RFn0_S:&dod9DqK^8cD9X8,YpU7K,^C
+UA]B!HLlC^GjBYSGkjYtV>d:fU\LSWK]n'HK)J+:Vu!@_WW0!rWW/+WORnP!Npi&);#=,f;Yj>f
+ZN.</Z2_'-YQ(ioR/**4R/UXnAc?<@BDZBAC&VlDC]/)JD>8#GDu4MDEW'qUOo1C?PP17=PQ$^F
+Fo-@QGN=#?GPcR[FmX;KFo?L]GQ2pfH2W$jH[L5?I0"eHrd[[nJqJ]/KnY89LPUeDMN!LRNfT6_
+OckomQ'IZ&R$jD4S=Q7CT:qsQUSO]_Vl-JmWiN5'Xfek3Yd(L?Za@-K[^WcW\[oDb]Y(qlrkANM
+_86,f!lMsprl"rYa2e2#s2k;`rlb>cs3:Pgs3L_lrQt\pe'n9Fs4%,#rR_)%!87>)!o)Mcrn[V2
+s53h6!o`.uro=%>s5j7Bs5sCGrosIJs6K[Ns6]jSrpTmVs7-'Ys766_r:U*`s7cHdrqZQiqtp?i
+r;H3cJcFU,J,~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0e^W'rdEp1abfe/MaMu3;_SX+'^:_+i\[])U['R$AYHG".Wi;noV50l[Tq@pIS"#h5Q^3o$
+P*1ofNfB!UM2@"BKnP)1JUi6!I=-BfH$E<[4nCkh5Q+=V9`@]`9)_E]8GbpU7f>dT7/9^[;#=,h
+;Z/o^6e=Zu6h<Y?62ssY<;TVn<;9DJ7c6`67/9d]<:j,h;Yj>`:%1pS:%h9U:&Ic^;#=,f;Yj>j
+?2n1+>l\4-?2@OL;uU>)Ac?<@BDZBAC&VlDC]/)JD>8#GDu4MDEW'q8;ZLt;G4Kk<Gk6.VG5?@K
+FSp:[G5QRaGlN'fH3/G@I/\NpIXh?I9S%eJK7nr4L5(J>M2@+KN/`jYO-#KePE_>tQC+&-R[]h<
+St;RJTq\<XUo(&fW2ZetXKAV-YHY79ZEpmE[C3NQ\@K/]]=Y_g]tXK\!l2Xgrk\`S`5MYo!li:$
+rlG,]s2t>as31Mfrm(Pis3U_l!n,QHrRCkt!7q,#s4@>)rRq>-gt_nbs5*e5rnmk:io9sts5a4A
+roX7D!9jFHs6BXMrp9[Ps6fmTs7$'YrUU![!;-3^s7ZKer:p9erqcNhrVZTlo)=4?hZ&*~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0f$r3tdEp1abfe/NaMu3;_ns4(^:_+i\[])V['R'BYcb+0Wi;qpVPKu]TqJ!KS=>t7R$O#%
+PEM&hO,]*VMM[.DL4t84JUi9"I=6HgH?dR0Sb\fSSa)a>Sc5/LSc;I`:&doe9DhE]8cM?X8,c!V
+7K,^JhuDU7iVqa8iUic4T(&BBT_P/S63$!EjS@j9j8e6:j8e6<irA!7Yj&@gYkG?fYl-uhk5FHE
+kiq@1lLsNDm/-)M_ns:g_>h=I_=PMD_>:t9^\bbA;#F2f;Ya8ko`"O`o`"Feo'l,:mdBK/rp'R1
+im.MIr64lX!QnsNAc?<@BDZBAC&VlDC]/)JD>8#HDu4MDEV=GPF7$m@_Z+cTG4BeAGk-(UG5?@H
+FT$@\G5QRaGlN'fH3/G@I/\NpIXh?I7Y-/DK7nr5L51SAM2I4MN/`jYO-,TgPE_>uQ^F/.S"#q=
+StD[LTqeEZV5C/hWN)u!XKAY/YctC<Za7$H[^NZT\[f;`rk&9F^AbkJ^qp#es2+iTrl+oW!6>)[
+s2k;`rlb>cs3:Mf!mf6?rR(Yns3ptss4./#rn%2&s4RD*s4dS/rn[V2!8mb5!o`.uro=%>s5j7B
+s5sCGrTOCKlg+N9!q#FDrU0gWnaZSKs7?9_rUp3arqH?cs7uZjqYU6hr;H3cJcFU,J,~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0f$r3tdEp1abfe/NaMu3;_ns4(^:_+i\[])V['R'BYcb+0Wi;qpVPKu]TqJ!KS=>t7R$O#%
+PEM&hO,]*VMM[.DL4t84JUi9"I=6HgH?bkMFo?LMFoQR\Fo?L_Fn'YT:Amoe9`Ic`9)_E^8GYjU
+7f>dT7.-fFH0]eEH2i-gH16(R63!e\VY?neV#7(hV"peXK[,5JK)J+:Vu3LfWW&grWW&jmWW&%V
+OR/&!Npr,+;#F2f;Ya8iZO!qEZa$d>Z*:J1Y62#4Y*n[Ep6Y-5!+c"=rau.Bqe5tCrbD:FrG;FL
+php"Jqf)(Fp2^.Rr0$uApQYT>rf[;(qKDCQl?MlDqf_gYl?)uIrHA*_s*4QhrH\NlI!kpA!IfOt
+J4>*AK7ei2L5(J>M2@+JN/WaVO,oEdP*;,qQC!u+R@B\9SXuIHTqS6WUnsrdW2ZesX/rG+YHY79
+ZEpmE[C3NQ\@K/]]DfGD]tXK\!PlPN_Z.LR`;[aU`W4'YaT'B^b5TTabl>rdc2u>=d/DAldf7eq
+eGn)!f)F;$f`0Y(gAfq-h#?.0h>lI3hu_lsir8!<jT"?@k5XTEkl'`IlKdd7liQSBmeuSUnF?&I
+o)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk++s*t~>
+JcC<$JcG<@o`"gfrVZTjs8)ckrV-Hgp@eLY!VH!_no4-gn*f]3m-O''l07Eok2k[aio/hQhVHuA
+g=b*0f$r3tdEp1abfe/NaMu3;_ns4(^:_+i\[])V['R'BYcb+0Wi;qpVPKu]TqJ!KS=>t7R$O#%
+PEM&hO,]*VMM[.DL4t84JUi9"I=6HgH?`H^4nLqh5Q=LW:&doe9DhE]8cM?X8,c!V7K,^H;>a;l
+6-hms6h!G;62XaZ<;fbd<4k^!7/Bj]<;BJh;Yj>X:%qEZ:%(dQ:&7]a;>X8e;tOAp>l7n$<7b%K
+AGg$<B)ZH?B`;`FCAM`ED#J5GDZ"GME:IrAErL.A;u_":G4BeAGk-(UG5?@HFT$@\G5QRaGlN'f
+H3/G@I/\NpIXh?I7Y-/DK7nr5L51SAM2I4MN/`jYO-,TgPE_>uQ^F/.S"#q=StD[LTqeEZV5C/h
+WN)u!XKAY/YctC<Za7$H[^NZT\[f;`rk&9F^AbkJ^qp#es2+iTrl+oW!6>)[s2k;`rlb>cs3:Mf
+!mf6?rR(Yns3ptss4./#rn%2&s4RD*s4dS/rn[V2!8mb5!o`.uro=%>s5j7Bs5sCGrTOCKlg+N9
+!q#FDrU0gWnaZSKs7?9_rUp3arqH?cs7uZjqYU6hr;H3cJcFU,J,~>
+JcC<$JcG<@o`"gfrquZjs8)ckrV-Hgp@eLY!VH!_no+'fn*f]3m-O''l07Bnk2k[aio/hQhVHuA
+g=b*0f$r3tdEp4bbfe/NaN)9<_ns7)^:h1k\[],W['R'CYcb+0X/`+rVPU)`TqJ$LSXZ+:R$X)'
+PEM&iO,f3YMi!:GL4t;5Jq8H%IXQTjH?o@Xr1*PQn!rF/!`)Qdr([2bs%E8^r^m,\qa^TSrC-`S
+s5*A)s5<pLp7V>UnXfHHm%F9KpH\f>qW.Y9qrI\:rT*t<!93gYs0)=(n?;_npTa+iqa:MJkNDj.
+rTX1DrTj7D!9sL$s24ZLrPA'AqSDsBpV6[@qb[2fr)38fs&9$kp&4LboCDD>rpC!Xm-Es&lg!ER
+rQY8ap<3DGs(;7Cqe5tCrbD:FrG;IMphp"Jqf)+Gp2]hIs)dhLqSN8Tq0)1Mnp'YJqf_gYkB-ZF
+rc\3`s*4QhrH_:eI!g?jIXZcsJ:W9'K7ei2L5(J>M2@+JN/WaWO-#KeP*;/rQC!u,R[]e;St;RJ
+Tq\<XV5C/gW2ckuXKAV-YctC<Za7$H[^NZT\[f;`rk&9F^AbkJ^qp#e!lMsprl"rYa2e2#s2b8`
+rQ>8dc-?44s3L_lrmCbos3pqrs4./#rn%2&s4RD*s4dS/rn[V2s53h6s5<t;rT!q=!9O1A!pAe2
+rosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3arqHBdrqZQiqYU6hr;H3cJcFU,J,~>
+JcC<$JcG<@o`"gfrquZjs8)ckrV-Hgp@eLY!VH!_no+'fn*f]3m-O''l07Bnk2k[aio/hQhVHuA
+g=b*0f$r3tdEp4bbfe/NaN)9<_ns7)^:h1k\[],W['R'CYcb+0X/`+rVPU)`TqJ$LSXZ+:R$X)'
+PEM&iO,f3YMi!:GL4t;5Jq8H%IXQTjH?o1+pibnEqKDm_nob(1:/:^]s%NGcr(?r[s%*#WrC6`S
+s$Zm\nY4oems4>GpH\eUqPO+cqPO4frM/n9c\)4Kqa:L`W2TKjoVhbgri#gZs,m2?hN.\uo8icF
+r)*AipJ_)krNlO0!3uO-q6'h%Xo4[VR.Qa6R/LUrB)ZH?B`;`FCAM`ED#S;HDZ"GME:S#BEqOMR
+FT%EsPl-aFP5f\#G4'SFGjoqSG5?@EFT$@]G5QRaGlN'fH;Js9I!pElIXcluJUrE*K7nr5L51SA
+M2I4MN/`mZOHG]hPEhE!Q^F20S"#t?StD^MU8+N\VPg>jWiE,$Xf\b1Yd(L?Za@-K[^WcW\[oEP
+]E,^[rkAKL_>_:Q_o0Lm`<+'"a8X0[aT0K^b6#o4c2Grfci;AkdJqYpe,@erec45"fDjM'g&B_*
+g]-(.h>c@3hu;R6i;hm9j8\0?jo+<CkNM./l2U&Kli-8NmJlVRn,MnWnbr%YoDeI]p&Fabp\jmd
+q>U6equ-HjrUTr=s5*d+~>
+JcC<$JcG<@o`"gfrquZjs8)ckrV-Hgp@eLY!VH!_no+'fn*f]3m-O''l07Bnk2k[aio/hQhVHuA
+g=b*0f$r3tdEp4bbfe/NaN)9<_ns7)^:h1k\[],W['R'CYcb+0X/`+rVPU)`TqJ$LSXZ+:R$X)'
+PEM&iO,f3YMi!:GL4t;5Jq8H%IXQTjH?o0HqEFpDrBAar!`)Qdr([2bs%E8^r^m,\qa^TSrC-`S
+nPT<as$=:apH\dYqGmJnr)<VpqGmJn]LMcdqc!Gmr_rJfqbuNLpeLTYoh>B[qb[2fr)38fs&A_u
+r*05-ra#S1o2OFBrFQ"@rb)+Arb;@HqJ6%Grb_FJr,;IOno=ADolL.TlVmh+q0)1Mnp'YJqf_gY
+kB-ZFrc\3`s*4QhrH_:eI!g?jIXZcsJ:W9'K7ei2L5(J>M2@+JN/WaWO-#KeP*;/rQC!u,R[]e;
+St;RJTq\<XV5C/gW2ckuXKAV-YctC<Za7$H[^NZT\[f;`rk&9F^AbkJ^qp#e!lMsprl"rYa2e2#
+s2b8`rQ>8dc-?44s3L_lrmCbos3pqrs4./#rn%2&s4RD*s4dS/rn[V2s53h6s5<t;rT!q=!9O1A
+!pAe2rosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3arqHBdrqZQiqYU6hr;H3cJcFU,J,~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNfs7ZKcs7CC(o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHOJSaiMNA`P]R/^V@Ip]=GJ][^EHJZ*:F6XfJJ$Vl-AeUS4BRSt2C@R[BJ.
+Q'@JqOcPQ_N/NRMLkg_=K7ec+J:DuqI!U,7Sc>5OSbnrWSc##:Sc;Lc:Adid9`Ic`9)hK^8GbpU
+7f>aU7/c!6hts&?T_kAOT(elBT_C_QjQ6:"!9<n9p#Q27pTX\$m]cYnqloh"n$)[Wroa:ErTX4E
+s60dRl07Erl0.C1kQ'fF`:q1;_XbP>_#1qK^;%G\;#F2g;YX2h;ufqtoE=aTnaGrFm/ZMNl2p4p
+c/R%Hc25`[b5c,QB)ZH@B`;`ECAVfFD#S;IDZ"GME:\)BEq=AHFSNcL_Z+cSG0tO2G5?@CFT$@]
+G5QRaGlN'gHN/<lI/\NuIXcitJ:W=OK0Y*DL5(J>M2@+KN/`jYO-#KePE_>tQ^F/.R[]h<StD[L
+TqeEZV5C/hWN)u"Xf\b0YctC=Za@-K[^WcW\[oEP]EZ'`^V@S"_>_:P_o2Pns2G&ZrlG,]s2t>a
+s31Mfrm(Pis3U_ls3^nrrRCkts47/#s4@>)rS%;+s4mV0s5*e5ro!h8s5O%<s5X1ArT=.C!9jCG
+!p]+;rTjUQmdC&Bs7$'Yrpp*\s7H6^s7ZKer:p9erqcNhr;?Nlnc"+>hZ&*~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNfs7ZKcs7CC(o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHOJSaiMNA`P]R/^V@Ip]=GJ][^EHJZ*:F6XfJJ$Vl-AeUS4BRSt2C@R[BJ.
+Q'@JqOcPQ_N/NRMLkg_=K7ec+J:DuqI!U,5Fn9eRFT?UWFo-@YGP-.Z:]F2f:&doe9DhE^8cD9X
+8,YpU70#aSU%>#5HLZ:MGkXN#V#[CdV>R4iV>m=kU\f_^K)gN#7/j.bWV3:fVuN[qVuEXpVZ<Un
+P517?OQV]$O8tF<OSt7?OShrQ;>a>e;uKYq<W9<*Z*=&-riZ7&q3gf@nX&j7!+l.Arb).Brb;=G
+qeQ.Hrb_IKr,;IOo5XGDo5jYJplt]?rf[;(q0(/0qf_gYj`LHDrc\3`s*4Qhrd+Tk!.=co#(D&O
+J:N3&re!IhKnb>;Ll$tGN/WaVO,oBbP*;,qQ'[l*R@9V8SXuIHTqS6WUnsrdW2ZesXKAV-YHY79
+Za7$H[^NZT\[f;`rk&HK^;%Fu^qp#e!Q2kT`W*pXa8X0[aoBN_bQ#fdc2Q#gci;AjdJqVpe,@er
+ec45!fDjJ'g&9Y)g]-(.h>c@3hu;R6iW%p:j8\0?jo+?Ak5a`EklU/9li$/OmI'E@n,MnWnc&+Z
+oDeI\p&Facp\agcq>U6fqu$BjrUKl<s5*d+~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNfs7ZKcs7CC(o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHOJSaiMNA`P]R/^V@Ip]=GJ][^EHJZ*:F6XfJJ$Vl-AeUS4BRSt2C@R[BJ.
+Q'@JqOcPQ_N/NRMLkg_=K7ec+J:DuqI!U,54o.A>56*tG5Q="(5Q=OZ:Adid9`Ic`9)hK^8GbpU
+7f>aV6rNMOqa&"apH\dYqGmPppf$oe!*$U#qaC?\r)EVnpJUidiD&l<peC]\s%WDfr)*Aipf%,j
+!*0#(!aK#:qHX&+rEeqlhGXDcrau.Br+Q(DrG)4FrG;IMq/6+Kqf).HolBYFpN5n's)n-\d<GJ2
+qK:nArH8*_r-/0cs*=Tis*F`nrd>!"It*!!JV*lR5_OiGL51SAM2I7NNK0'\OHG]iPa.N#R$a;1
+S"-%@T:hmOUSO]^VPgAlWiE/&Xfek3Yd(O@['d?N\%&uZ]"@sS#/.ac^VIY$rk\]R`;[aU`W4'Y
+aT'B^b5TTabl>recMu5jd/DAldK%bpeGn)!f)=5#fDsV'gAfq-h#?.0hZ)L4i;_d9ir8!<j8e<?
+k5XTEkl'`IlKdd7liQSBmeuVSnGi%Xo)J=]o_eC^pAambq#:*gqYU0fr;HTardk++s*t~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNf!;?Ebs7C^1o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHXPUaiMNA`P]R/^V@Ip]=PP^[^EKKZ*:F7XfSP%W2HMgUnXQUSt;IAR[KP0
+Q'IPrOcYWaNJrdPM2-h?KS+l-J:E#rI=$9dG^"@TF`_\Fn!sHKfq&.>s%iYirD!8bs%E8^s%32\
+qa^TSrC-V?p>>e>pRh>Urh'4`qk*VSp7LfHog/W?r8m_7r8me;!9NmXs0)=(p9F:ppTa:nq*b5F
+s60FG!pJn5rTF:Fkl0`Fkl'ZHk3(mhrPe9DnA=h6r4r3Er_WMir)3;grD`br$M<r[nF5o8md9E.
+rTjLK!U8eEblH&fc0imPc2Gl\b5c/RBDZBAC&VlEC]/)KD>A)IDu=SGEV=GCF7+/K_tq7LFnp41
+GPcR[FlINAFoQX_GQ2pfH2`-iHN8HmI0P.MIt3'#K)UBtKS>/8LPUeEMi<USNfT6`P*2#nQ'Rc(
+R$sM6S=Z=ETV8*TUnsrdVl6VqX/rG+YHY79ZEpmE[C3QS\[f;`]=bei^;%Fu^qmn)_o'Fl`<+'"
+a8X-]ai_d*bQ#fdc2Q#gci;AjdJqYpe,@ereH"2!fDjM'g&9Y)gAp%-h>c@3hu;R6iW%p:j8\3?
+jo4EBkPscFl2U&Kli-8NmJlVRn,MnWnbr%YoDeI]p&=[bp\agcq>U6fqu-HjrUKl<s5*d+~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNf!;?Ebs7C^1o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHXPUaiMNA`P]R/^V@Ip]=PP^[^EKKZ*:F7XfSP%W2HMgUnXQUSt;IAR[KP0
+Q'IPrOcYWaNJrdPM2-h?KS+l-J:E#rI=$9dG^"@TF`_\Fmre\Rr-%jXqf_XVq0)d7s%iYirD!8b
+s%E8^s%32\qa^TSrC-UWp7hS5oQfSFnTjbOog.uArhfUi!2K@C`ImtSqksFlrho[k!2odm!2ogn
+rMBIUplYB6p5f*4!0?u<pQ>?7r_WMir)3;grD`br!jf/9pTFV#YPt[)XSS@TR-p=7QiLatBDZBA
+C&VlEC]/)KD>A)IDu=SGEV=GCF7+/KPl-aFP5]V"G1:a5G5?@@FT$@^G5QRaGlN'gHN/<lI/\Nu
+IXcitJ:W=OK2.)RL5(J>M2I4MN/`jYO-,TgPE_>uQ^F//S"#q>StD[LU8+N\VPg>jWiE,$Xfek3
+Yd(L?Za@-K\%&uZ]">Se]Y2%o^VIY$_SX4.`;[^W`lH.!a9'K+b5TTabl>recMu5jd/DAldf7ep
+eGn&!f)=5#f`0Y'gAfn-h#6(/hZ)L4i;_d9ir8!<jT"?@k5XWEkl0iHlMp2Lm/QJQmf)\TnGi%W
+o)J=]o_nI^pAambq#:*gqYU0gr;?N`rdk++s*t~>
+JcC<$JcG?AoD\^erqu]krqcZjrqQNf!;?Ebs7C^1o()>@nF,i6mHj3*lKRNqk2tddj5T%Uhqm2E
+gY1?4f@JI$da?FfcHXPUaiMNA`P]R/^V@Ip]=PP^[^EKKZ*:F7XfSP%W2HMgUnXQUSt;IAR[KP0
+Q'IPrOcYWaNJrdPM2-h?KS+l-J:E#rI=$9dG^"@TF`_\Fq`amAq`k-GqEWt's%r_ks%`Mer_3>b
+r(?u\r^coVrC6`Sr_i>bnj1Aaog/FSs&A\jr_rktr)CF#s$ulQr_r\n!)rShpf%,dj\=u7qb@&d
+r)*Aipf%,jr`&r(r`oG.rET;,ra#S1qGdDlp/L$M!+u4Cqe5tCrbD=GrG;IMq/6+Kr,D7Ip2]\E
+mWA/$rcS$[e9Ce5qK:e>rH8-`r-/0cs*=Tis*F`nrd>!"It*!!JV*lR:5"=UL51SAMMmFPNK0'\
+OcklkPa.Q$R$a>3S"-(AT:hmPUSO``Vl-JnWiN5'Y-5(6Z*L^B['d?O\@K/]]=Y_g]tV7r^qde'
+_Sa:0rl"rYa2e2#!m/U-rlb>cs3:Pgs3L_lrR(Yns3pqrs4%,#rR_)%s4RA)s4[P/rS@M1s53h6
+s5F";ro=%>s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp0`s7cHdrqZQiqtp?ir;H0b
+JcFU,J,~>
+JcC<$JcG?Ao`"gfrVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP:'mHj3*lKRNqk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`P]R/^q[Ur]=PP_[^NQLZEUR9XfSP&W2HMhUnaWWT:VUCS!fY1
+QBd\uP*(fdNJrdQM26qAKnP)1JUi6!I=-BfH$FOWG'%hIEcH)<Df0H0Cs\^Q;>sDl:]F2g:&[id
+9DhE^8cD9X8,YpV70)0?hY?"(T(\fHT^/6BT_(PGk5OHBjS@p5k4>hVYPYQ_Z1G3q7/lBIkksWA
+k5FKBk5XQCjS[!m`:1\5_Yh7E^]74/;>jDf;uBVn<W?)'naQ&:n*^/@s6BjRl07Epjo*I%bkoZW
+cM#N\bkTB]BDcHBC&VlEC]/)KD>A)JDu=SIEVFMEF5h<AFo0&UFng.3GPZL[Fl7B?FoHR_GQ2pf
+H2`-iHN8HmI0"eHrd\($JqJ]/Knb>;Ll$tGMi<USNfT9aP*2&pQ'Rc(R@9V8SXuFGTqS3VUnsrd
+W2ZetXKAV-YHY:;Za7$H[^NZT\[f;`]Y(ql^V@S#_8=(,`5KX6`l?'uaT'?^b5KKbbg"E2c2u>=
+d/DAldf7epeGn)!f)=5#f`0Y(gAfq-h#6(/h>lI3i;_d9ir8!<jT"?@k5XWEkl0iHlMp2Lm/QJQ
+meuVSnGi%Wo)J=]o_nI_pAXgaq#C0hqYL*fr;?N`rdk++s*t~>
+JcC<$JcG?Ao`"gfrVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP:'mHj3*lKRNqk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`P]R/^q[Ur]=PP_[^NQLZEUR9XfSP&W2HMhUnaWWT:VUCS!fY1
+QBd\uP*(fdNJrdQM26qAKnP)1JUi6!I=-BfH$FOWG'%hIEcH)<Df0H0D!cEGFo-@OGPu[b;>sDl
+:]F2g:&[id9DhE^8cD9X8,YpV70'"WU%kA]HLZ:WHMDj\HLlFXGlN![60>!DV"TJ^KD@q8Vu!:d
+V>R4eV=]rGOnk+<O84n'OT85U;>jDf;uBVn<W?+sYQ(j,YPbO)XfST%RI-C-Qhm*LBDcHBC&VlE
+C]/)KD>A)JDu=SIEVFMEF5h<AFoIU(P5f\"G1Us7G5HF?FT$@]G5ZXbGlN'gHN/<lI/\NpIXh?I
+=+PsUK7nr5L51SAM2I4MN/`jYOHG]hPa.N"Q^F20S"-%@StMdNU84T]VPgAlWiN5'Xfek3Z*L^B
+['d?N\%&uZ]">Vf]tV7r^qmk(_Sa=1`Poj:a8X0[aT0K^b6#o4c2Gohcd:&;dJqYpe,@erec45!
+fDjM'g&B_*g]-(-h>c=3hu2L5iW%p:j8\3?jo4EBkPscFl2U&Kli-8NmJlVQn,MnWnbr%YoDeI]
+p&Fabp\agdq>U6equ-HjrUKl<s5*d+~>
+JcC<$JcG?Ao`"gfrVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP:'mHj3*lKRNqk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`P]R/^q[Ur]=PP_[^NQLZEUR9XfSP&W2HMhUnaWWT:VUCS!fY1
+QBd\uP*(fdNJrdQM26qAKnP)1JUi6!I=-BfH$FOWG'%hIEcH)<Df0H0D#QZg5ib-0;>sDl:]F2g
+:&[id9DhE^8cD9X8,YpV7Jp'V;=6aH6MNq)6M*S@<W5tc;o2$$8,5RI;uTYp;>F,d;uBDP:#etK
+;#F2h;YX2g<;fhs<rZFu?2S%-<;'8b<9I3[<<$V/B`;`FCAVfFD#S;IDZ+MOE:n5FEq4;2FT6L\
+;u_"8G1Us7G5HF?FT$@]G5ZXbGlN'gHN/<lI/\NpIXh?I=+PsUK7nr5L51SAM2I4MN/`jYOHG]h
+Pa.N"Q^F20S"-%@StMdNU84T]VPgAlWiN5'Xfek3Z*L^B['d?N\%&uZ]">Vf]tV7r^qmk(_Sa=1
+`Poj:a8X0[aT0K^b6#o4c2Gohcd:&;dJqYpe,@erec45!fDjM'g&B_*g]-(-h>c=3hu2L5iW%p:
+j8\3?jo4EBkPscFl2U&Kli-8NmJlVQn,MnWnbr%YoDeI]p&Fabp\agdq>U6equ-HjrUKl<s5*d+~>
+JcC<$JcGBBoD\^erVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP=(mHj3*l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`PfX1^q[Ur]XkY`\$iZMZE^X;Xf\Y(WMcYjUnaZXTUqaFS!ob4
+Q^*i"P*(ieNfB!UM2@%CL4t84JUi9#I=6KhH?jaZG'.nKF)l8?E,TW3D/B5f"_qabBP1r2SH2Vc
+rD<Mis%`Mes%NDbrC[&\r^coVrC6fU!ScE-h>Q4.htiuFT(8NDT^8<FT_(PMjn7d6jnRs<Z1>-u
+YP#-_Z1bEs7/c9IkPXKAjo=HDjlZO's5a.=rPeiVn\jn6pqlpEq7uo*r)3;grD`_qrDipfrpTmS
+s6TdO!:'RJ"mG+1jiu'Bbl5l`cLoHXbk]H[B`;`FCAVfGD#S;IDZ+MOE;";IEq=A,FS^+[_Z"]Q
+G2%6:G5HF=FT-F^G5QRaGlN'gH3/G@I/\OjIXcluJUrE*K7nr5L51SAM2I4MNK0'\OHG]iPa.Q$
+R$a;2S"-(AT:hmPUSO``Vl-MoWiN5'Y-5(6ZEpmE[C3NQ\@K/]]=bei^;%Fu_>_:P_o2Pn!li:$
+rl>/_b0'_,s3(JfrQbGhs3U_l!n,QHrRCkts47/#s4IA)rS%;+s4mS/s5!b5rS[_7s5O%<s5a4A
+rT41Ekii!0s69UMrTsROs6fmTs7$'YrUU![s7H6^s7ZKer:p9erqcKgrVZTlo)=4?h>`!~>
+JcC<$JcGBBoD\^erVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP=(mHj3*l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`PfX1^q[Ur]XkY`\$iZMZE^X;Xf\Y(WMcYjUnaZXTUqaFS!ob4
+Q^*i"P*(ieNfB!UM2@%CL4t84JUi9#I=6KhH?jaZG'.nKF)l8?E,TW3D/B5f"_qabBP1rGG3jDR
+;GmBhs%iYirD!;cr_*2^r^m)[qa^TSs$cdWrLs.`qKhXVr-J'`pNlIWq0;NtjeVs2on:J?pdG+X
+!2TUjrM0FirhT:brM8eCplYN:r/q#@m#h3Cr)3;grD`_qrDrs&qlg%&s/c@*Xf_T'q3g`>lBhF9
+r+Q(DrbD=GrbVRNq/6.Lr,D@Lq/Z(JgN<:7!0[>(pibD9q0)XXhK8a>rc\3`s*4Qhrd"WmI!kpA
+:k!nEJ:W9'K7ei2L5(J>M2@+JN/`jYO-#KePE_>uQ^F/.S"#q>StD[LU8+N\VPg>kWiE,$Xfek3
+Yd1UA['d?N\%&uZ]">Vf]tV7r^qp#e!Q2kT`<+'"a8X-]ai_d*bQ#cdc2Grfci;Ajd/qbFe,@er
+ec45!fDjM'g&9Y)g]-(-h>c=3hu2L5iW%p:j8\3?jo+<CkNM..l2U#Kli$2MmJlVRn,MnWnbr%Y
+oDeI\p&Facp\agcq>U6equ-HjrUTr=s5!^*~>
+JcC<$JcGBBoD\^erVZTjs8)ckrV6Ee!;?Eb#5%NYo()>?rpP=(mHj3*l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXPUaiMNB`PfX1^q[Ur]XkY`\$iZMZE^X;Xf\Y(WMcYjUnaZXTUqaFS!ob4
+Q^*i"P*(ieNfB!UM2@%CL4t84JUi9#I=6KhH?jaZG'.nKF)l8?E,TW3D/B5f"_qabBP1rN5l*_D
+54Cc;;GmBhs%iYirD!;cr_*2^r^m)[qa^TSs$cc^peg9Ar'L*Ej$E`5oKiFTs&K"smo'3V_++Do
+pdFsWrDNSkr_iGgr(c<Ij\G_Nr)3;grD`_qrDrl%pg*l*s'>Y(nPf-\mSj$_r+Q(DrbD=GrbVRN
+q/6.Lr,D@Lq/Z(JgN<:7!)rl>pibD9q0)XXhK8a>rc\3`s*4Qhrd"WmI!kpA:k!nEJ:W9'K7ei2
+L5(J>M2@+JN/`jYO-#KePE_>uQ^F/.S"#q>StD[LU8+N\VPg>kWiE,$Xfek3Yd1UA['d?N\%&uZ
+]">Vf]tV7r^qp#e!Q2kT`<+'"a8X-]ai_d*bQ#cdc2Grfci;Ajd/qbFe,@erec45!fDjM'g&9Y)
+g]-(-h>c=3hu2L5iW%p:j8\3?jo+<CkNM..l2U#Kli$2MmJlVRn,MnWnbr%YoDeI\p&Facp\agc
+q>U6equ-HjrUTr=s5!^*~>
+JcC<$JcGBBoD\^erquZjs8)ckrV-Hgp@eLYJ+W@(o()>?n*f]4mHj3)l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXSVb/hWC`PfX1^q[Us]Xt_a\$i]NZa$a<Y-"e*Wi2hmUnj`YTV%gHS"#h5
+R$O#%PEM&hO,f0XMM[1FL4t;5Jq8H%IXQWkH?sj]GBS+NF9lr.EH#i6DJa4hCB\HeBP;$jrac+@
+A,]rtSc;Rf;>j>k:]F2g:&doe9DhE]8cD9X8,YmW7K)!@h#?..hYuF+TE(VDT^/6JT^tJLjm;.0
+k5sf/kPhaWYl:iWYl1d#6i][Rk5=?9jSe-;iW.s8`qdUC`:h+F_YV+F_#@4/;Ya8i<;fhm<XnNc
+md9B,lg!a!kih3lro=((pWWTZrljoWp!!9Us(MCGrbD=GrbVRNqJQ7Mr,DCMq/Z1Md<,))pNGG<
+q0)XXh/rX=rc\3`s*+NhrH_XoI!g?jIXZcsJ:W<(K7ei2L5(J>M2@.LN/`jYO-,TgPE_>uQ^F20
+S"#t?StD^MU84T]VPgAlWiN5'Xfen4Z*L^B[C3NQ\@K/]]=bei^;%Fu_84"*_o2Pn#KFg)aN2KF
+b5KKbbg"E3cMu5jd/DAldf7epeGn)!f)=5#f`0Y'gAfn-h#6(/hZ)L3i;_d9ir8!<jT"??joX`0
+kl'cGlMp2Lm/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#:*gqYL*fr;?Nardk+*s*t~>
+JcC<$JcGBBoD\^erquZjs8)ckrV-Hgp@eLYJ+W@(o()>?n*f]4mHj3)l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXSVb/hWC`PfX1^q[Us]Xt_a\$i]NZa$a<Y-"e*Wi2hmUnj`YTV%gHS"#h5
+R$O#%PEM&hO,f0XMM[1FL4t;5Jq8H%IXQWkH?sj]GBS+NF9lr.EH#i6DJa4hCB\HeBP;$jrac+@
+A,]s6G3X;O;?0Sm;#a>k:Amoe9`Ic`9)_E]8GbpU7K>mPT`(S`U@rm5H/a/9H2MpY604sBL#n!C
+KD7h77Jrt]U\^eaV>-kbPNS+fOoA5U;Ya8i<;fhm<r0#tXT5I$WrSU_RIZa4Qhm*LB`;`FCAVfG
+D#S;JDZ+MOE;+AJEqXS%FS9kOG2IN>G5HF<FT-F^G5QRaGQ<$fH<PZCI!pElIXcluJV&K+K7nr5
+L51SAM2R=ONK0'\OcklkPa.Q$R$jD4S"6.BT:qsQUnjiaVl6SpX/rG*Y->.8ZEpmF[^NZT\[f;`
+]Y(ql^V@S#_8=(,`;[^\`lH-@aN;QHrQ>8dc-?75s3L_lrR(Yns3pqrs4./#rR_)%s4RA)s4[P/
+rS@M1s53e5s5F";ro=%>s5j4A!pAe2rTX@Is6K[Ns6]jSrU9dUs7-'Ys7?9_rUp3arqH?crqZQi
+qYU6hr;H3cJcFR+J,~>
+JcC<$JcGBBoD\^erquZjs8)ckrV-Hgp@eLYJ+W@(o()>?n*f]4mHj3)l07Epk2tdcj5T%Uhqm2E
+gY1?5f@JI$da?FfcHXSVb/hWC`PfX1^q[Us]Xt_a\$i]NZa$a<Y-"e*Wi2hmUnj`YTV%gHS"#h5
+R$O#%PEM&hO,f0XMM[1FL4t;5Jq8H%IXQWkH?sj]GBS+NF9lr.EH#i6DJa4hCB\HeBP;$jrac+@
+A,]s65PRG65Q=U];>j>k:]F2g:&doe9DhE]8cD9X8,YmW7J'LW;>!6B6M<e@6L[A662+@J;ZKer
+8&7Xp8,,IP7Jp'Y;>jDe;tNiK:$GFP;>a>f;uK\o<V]\l>l7k2?<piA>ZCGrqbm>jpJg`_qGdK.
+rb;@HqeQ1Irb_LLrGVUQpMp"Lp2eW'p3$+Qhfnm>qfU_:rcS3`r-/0c!."Nh>'kXEI=6QnIt3'#
+JqAW-KS>/8LPUeDMi<USNfT6`P*2#nQ'Rc(R@9V7SXuFFTqS3VUnsrdW2ZetXKAV-YctC<Za7'J
+[^WcW\[oDc]Y2%o^VI\%_SX4/rl#,^a2c9BaiV^(b6#o4c2Q#gci;AjdJqYpe,@erec45!fDjM'
+g&9Y)gAp%-h>c@3hu2L5iW%p:j8\3?jo+<CkNM..l2U&Kli-8NmJlVQn,MnWnbr%YoDeI]p&Fab
+p\agcq>U6equ-HjrUTr=s5!^*~>
+JcC<$JcGBBoD\^erqu]krqcZjrV-Hgp@eLY!VH!_np^,un*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JI$e'ZRhcHXSVb/hZD`Pf[2_8!au]Xt_b\$i]OZa-g>Y-"e+Wi;noV50l\TqJ!KS=>t8
+R$X)'PEM)jO,f3YMi*@ILPCM9K7\Z)IsufnH[:!_GB\4QFEDSDE=Qr+DJj<-CMR["BkV0mB)Z?B
+A7PUJ!F]C8?iOF5?!Qfgs&8qq!)`\ks%iYirD!;cs%E8^r^m)[qa^TSqqM/+rS@M1!8[1<nY,KG
+q4I8Onj339!9a4@r9+"?rTEaVgT^7PpI#!MrT=%=rT!q=rT!k9ro*n8r5S9GnAP.?qni9Ir4i;0
+r)3>hrD`_qq,[Jr!q#@?rTX^Rkih0kjlGL^iVq+!bk]HYbkfTTbkoT`C&VlEC]/)KD>J/KDuFYL
+EVa_NF3A\!FnU"<GPQFYFmsMKF7jYRFoQX_GQ2mfH2W$iH[Pg@<.9=HJ:N3&K7ei2L5(J>M2@+J
+N/WaVO-#KeP*D5sQC+&-R[]h<StD[LU8+N[VPg>jWiE,$Xfek3Z*L^B['d?O\@K/]]=bei^;%Fu
+_84"*_o2Pn!QN1Za9'K+b5TTabQ,odc2u>=d/DAldf7epeGn)!f)=5#f`0Y'gAfq-h#6(/hZ)L3
+i;_d9ir8!<jT"??k5XTEkl'cGlMp2Km/QGQmeuVSnGi%Wo)J=]o_eC^pAamaq#C0hqYL*fr;?N`
+rdk+*s*t~>
+JcC<$JcGBBoD\^erqu]krqcZjrV-Hgp@eLY!VH!_np^,un*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JI$e'ZRhcHXSVb/hZD`Pf[2_8!au]Xt_b\$i]OZa-g>Y-"e+Wi;noV50l\TqJ!KS=>t8
+R$X)'PEM)jO,f3YMi*@ILPCM9K7\Z)IsufnH[:!_GB\4QFEDSDE=Qr+DJj<-CMR["BkV0mB)Z?B
+A7PUJ!F]C8?iOF5?!QfAs&8qq!)`\ks%iYirD!;cs%E8^r^m)[qa^TSoq;>Y!20:9eU$S-!-n'#
+qkj4dr207ciJ$WOnq6[)!(Hj^s.enUrKI;Gi0*hsqNC];!)`Ylq,@5krDiYor`B-&#Ht;5Xf\\+
+Xo5="WrAIaRIHU6QhQmIC&VlEC]/)KD>J/KDuFYLEVa_NF3A\!FnU"<GPQFYFmsMKF7jYRFoQX_
+GQ2mfH2W$iH[Pg@<.9=HJ:N3&K7ei2L5(J>M2@+JN/WaVO-#KeP*D5sQC+&-R[]h<StD[LU8+N[
+VPg>jWiE,$Xfek3Z*L^B['d?O\@K/]]=bei^;%Fu_84"*_o2Pn!QN1Za9'K+b5TTabQ,odc2u>=
+d/DAldf7epeGn)!f)=5#f`0Y'gAfq-h#6(/hZ)L3i;_d9ir8!<jT"??k5XTEkl'cGlMp2Km/QGQ
+meuVSnGi%Wo)J=]o_eC^pAamaq#C0hqYL*fr;?N`rdk+*s*t~>
+JcC<$JcGBBoD\^erqu]krqcZjrV-Hgp@eLY!VH!_np^,un*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JI$e'ZRhcHXSVb/hZD`Pf[2_8!au]Xt_b\$i]OZa-g>Y-"e+Wi;noV50l\TqJ!KS=>t8
+R$X)'PEM)jO,f3YMi*@ILPCM9K7\Z)IsufnH[:!_GB\4QFEDSDE=Qr+DJj<-CMR["BkV0mB)Z?B
+A7PUJ!F]C8?iOF5?!R.gpHS[Vs&&horD<Mis%`Mes%NGcr(?r[r^coVrC6?UrB^*CmR-V7q*XaA
+nj2hGoi(NRmmd=Ih+%-,!(Hiar)*>hq,@5k!)rhln4r1AnP0']r)3>hrD`_qq,[JrqHWr(r*95#
+qc!5er)<;gqG[,fs(VIIqeQ.Hrb_LLrGVXRpMp%MpiFW#p3$(Pick3AqK;:Lq/c4NrH8-`r-/0c
+!."Nh!IK4nI8kZFIt3'#JqJ]/Knb>;Ll$tGMi<USNfT9aP*2&pQ'Rf)R@9V8SXuIHTq\<XUo(&f
+W2ckuXKAY/Yd(L?Za@-K\%&uZ]">Vf]tV7r^qmk(_Sa=k`<"!!rl>/_b0'_,s3(JfrQYJjd*Va=
+s3gqrrRCkts47/#s4IA)rS%;+s4mS/s5*e5rS[_7s5O%<s5a4ArT=.C!9jCGs6BXMrTsRO!:KgS
+s7$'YrUU![s7H6^s7ZKeqtU3erqcKgrVZTlnc"+>h>`!~>
+JcC<$JcGBBoD\^erqu]krqcZjrqQNfs7ZHb!VH!_npg3!n*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JL%e'ZRhcHXSVb/hZD`Pf[2_8!au]Xtbc\@/iQZa-j?YH=q-Wi;qpVPL#^TqJ$LSXZ+;
+R$a2)P`q8mOH5E\N/NOLLk^Y<K7ec+J:DuqI!^0bG^"@TF`_\FEH)J-Df0H0Chmg$C2%?pB4h-S
+!G#^>@KBnFra5\3!+#S/!aAi3r`T#erDNbq;,R9gs%iYirD!;cs%E8^s%32\qFCNSq:kr)s5!_1
+!8ZP+rLibUn"B2:!9i\1!9ipWgT^=RpdG*MroF%<!93q:r8R\6r8@7fnAY";r58BJqSE,.q,@5k
+rDiYor`B,%#4(R>lg!`uroXLJjlGI]i8FIVr64lXlHK.KrbD=GrbVRNqJQ7MrG_OOqf;LR`H:`p
+olfPCpicLVn9"AFp2p:Vrc\6as*4Qhrd+Tk!.=co!IfOtJ51ZIK7ei2L5(J>M2@+JN/WdXO-#Ke
+PE_>tQ^F//S"#q>StD^MU8+N\VPgAlWiN5'Xfnt5Z*L^C[C3NQ\@K2_]Y(ql^V@S#_8=(,`;[^V
+`lJ)"#g(63bKJ,Rc-?75s3C\lrR(Yns3pqrs4./#rR_)%s4RA)s4dS/rS@J0s53h6s5F";rT!q=
+s5j4As6'FGrosIJs6KXMs6]jSrU9dUs7-'Ys7?9_rUp0`s7cHdrqZQiqYU6hr;H0bJcFR+J,~>
+JcC<$JcGBBoD\^erqu]krqcZjrqQNfs7ZHb!VH!_npg3!n*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JL%e'ZRhcHXSVb/hZD`Pf[2_8!au]Xtbc\@/iQZa-j?YH=q-Wi;qpVPL#^TqJ$LSXZ+;
+R$a2)P`q8mOH5E\N/NOLLk^Y<K7ec+J:DuqI!^0bG^"@TF`_\FEH)J-Df0H0Chmg$C2%?pB4h-S
+!G#^>@KBnFra5\3!+#S/!aAi3r`T#?rDNbq;,R9gs%iYirD!;cs%E8^s%32\qFCNSoq;>W!2016
+e9^S/nNl?8b(]MA!/(&7r^Hg^s.eqV!2]UXqNKg"rfQi9rDNGirD`_qq,[Jrs&f3%s/l4#"KSQ&
+WN#`_r0d/DoU#3;rbD=GrbVRNqJQ7MrG_OOqf;LR`H:`polfPCpicLVn9"AFp2p:Vrc\6as*4Qh
+rd+Tk!.=co!IfOtJ51ZIK7ei2L5(J>M2@+JN/WdXO-#KePE_>tQ^F//S"#q>StD^MU8+N\VPgAl
+WiN5'Xfnt5Z*L^C[C3NQ\@K2_]Y(ql^V@S#_8=(,`;[^V`lJ)"#g(63bKJ,Rc-?75s3C\lrR(Yn
+s3pqrs4./#rR_)%s4RA)s4dS/rS@J0s53h6s5F";rT!q=s5j4As6'FGrosIJs6KXMs6]jSrU9dU
+s7-'Ys7?9_rUp0`s7cHdrqZQiqYU6hr;H0bJcFR+J,~>
+JcC<$JcGBBoD\^erqu]krqcZjrqQNfs7ZHb!VH!_npg3!n*f]3m-O''l07Epk2tabj5T%Uhqm2E
+gY1?5f@JL%e'ZRhcHXSVb/hZD`Pf[2_8!au]Xtbc\@/iQZa-j?YH=q-Wi;qpVPL#^TqJ$LSXZ+;
+R$a2)P`q8mOH5E\N/NOLLk^Y<K7ec+J:DuqI!^0bG^"@TF`_\FEH)J-Df0H0Chmg$C2%?pB4h-S
+!G#^>@KBnFra5\3!+#S/!aAi3r`T4aq`k$X!`DlmrD<Mis%`Mes%NGcr(?u\r^clUr^QodpJV#g
+!)iY[ogA.8o0r+9nNltMr_reqoi(HPmmcS4oLAUDr^HEVrDWMk!)rekkt^D9qG-ueq,@5krDiYo
+r`B,%!*fD,ra#;(qGdAkp/:fepJ_,koMkg)qeQ1Irb_LLrGVXRpi61Oq/aMsoQBhMk]cfFqK;:L
+p2fqLrcS3`rHJ9ds*=Tis*F`nrd=frJ,XsnJV&N,KS>/8LPUeDMMmFPNfT6_OckomQ'I]'R$sM6
+S=Z=ETqS3UUnsrdW2ZetXKAV.YctC<Za@-K[^WcW]">Vf]tV7r^qmk(_Sa=k`<"!!rl>Aeb0%oN
+bfn>Vrm(Pi!7:\ls3gqrrRCkts47/#s4IA)rS%;+s4mS/rnd\4ro!h8s5O";s5a4ArT=.Cs60IH
+s6BXMrTsROs6fjSs7$'YrUU![s7H9_rq?Bdr:p9erqcKgrVZTlnc"+>h>`!~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNfs7ZKcs7?<_rpkO.nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2gmcd'h[bK@rJa2Q$8_SO%&^:_+i\[],W[Bm3EYck43XK&;!Vl$;dUS=HTSt;IA
+R[KP0QBd\tP)t`cNJrgRM26qAKnP)2JUi9"I=6KiH?jaZGBS(MF)q;#%WH?(DJa3*CMITuBP;$j
+rac+@A,]p<@:9(As'>\2r`fM/>$Co.!a&N*r`9&!!*&nq!`DlmrD<Mi!)EJer_3>br(?u\r^coV
+r^QqAq:c&+gY:N<l_4*Jl(S$Jpn@1CqWRn@pZVV>s6/^Oq60"dpTO<Zr^?hIn)F<)rS[^pn&Fk9
+q8E'GqSN50q,@5krDi\prE&r"!*T<d%-d!=kN:pgjQ#7ZiSaFSrljlTqonu]r65)^qeQ1Irb_LL
+rbqaSpi64PqK'DnoQBbKm<A8IqK;=MoQ0_JrcS3`rHJ9ds*=Ti!df<Brd@jsIt3'#JV&N,KS>/8
+LPUeDMN!LRNfT6`P*2#nQ'Rc(R@9V8SXuFGTqS6WUo(&fW2ckuXKAY/Yd(L?Za@0L\%&uZ]">Vf
+]tV7r^qmn)_o0O5`l?'ua8sE*rlb>c!6tMgs3L_lrmCbos3pqrs4./#rR_)%s4R>(s4dS/rS@M1
+s53e5s5F";rT!q=s5j4As6'FGrTOCKlg+N9s6]jSrU9dUs7-'Ys7?9_r:U*`rqH?crqZQiqYU6h
+r;H0bJcFR+J,~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNfs7ZKcs7?<_rpkO.nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2gmcd'h[bK@rJa2Q$8_SO%&^:_+i\[],W[Bm3EYck43XK&;!Vl$;dUS=HTSt;IA
+R[KP0QBd\tP)t`cNJrgRM26qAKnP)2JUi9"I=6KiH?jaZGBS(MF)q;#%WH?(DJa3*CMITuBP;$j
+rac+@A,]p<@:9(As'>\2r`fM/>$Co.!a&N*r`9&!!*&nq!`DlmrD<Mi!)EJer_3>br(?u\r^coV
+r^Qp[q4RYXpNb87r-89gq0DHqrMKRlm\\'ZpOr9/r^H(Irh]XYrfm5Bd?=K,q,@5krDi\prE&r"
+"^/%4Y-"i)XT#:"WW9$lRf8`IR.?U<R/:[uD#S;JDZ4SQE;4GNEr'jlFS'_IG3sMIG5?@OFS'YJ
+FT-F^G5ZXbGlN'gH3/G@I/\OqIXcluJUrE*K7nr5L51SAM2I7NNK0'\OcklkPa.Q$R$jD4S=Q7C
+TV8'SUnjlcVl6VqX/rG+YHY:;Za7$I[^WcW\[oDc]Y2%o^VI\&_Sa=2`Q#p<rl>,^b5TTabQ,oe
+cMu5jd/MGmdf7epeGn)!f)=5#f`0Y&gAfq-h#6(/hZ)L3i;_d9ir.p;jT"??k5XWEkl'`IlKdd7
+m/QJQmeuVSnGi%Wo)J=]o_eC^pAXgaq#:*gqYL*fr;?N`rdk+*s*t~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNfs7ZKcs7?<_rpkO.nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2gmcd'h[bK@rJa2Q$8_SO%&^:_+i\[],W[Bm3EYck43XK&;!Vl$;dUS=HTSt;IA
+R[KP0QBd\tP)t`cNJrgRM26qAKnP)2JUi9"I=6KiH?jaZGBS(MF)q;#%WH?(DJa3*CMITuBP;$j
+rac+@A,]p<@:9(As'>\2r`fM/>$Co.!a&N*r`9&!!*&nq!`DlmrD<Mi!)EJer_3>br(?u\r^coV
+r^Qibqbm>hs$HNKogI_,o0i(6qGcu`r`&DXmmcS4pI=mFr^?fbr_rMgrDWMks%`PhiD/W3r_iPj
+rD`_qqH!PrrE',(>[786p0@;jr)<Agqc!Akr)<>hqeQ1Irb_LLrbqaSpi64PqK'DnoQBbKm<A8I
+qK;=MoQ0_JrcS3`rHJ9ds*=Ti!df<Brd@jsIt3'#JV&N,KS>/8LPUeDMN!LRNfT6`P*2#nQ'Rc(
+R@9V8SXuFGTqS6WUo(&fW2ckuXKAY/Yd(L?Za@0L\%&uZ]">Vf]tV7r^qmn)_o0O5`l?'ua8sE*
+rlb>c!6tMgs3L_lrmCbos3pqrs4./#rR_)%s4R>(s4dS/rS@M1s53e5s5F";rT!q=s5j4As6'FG
+rTOCKlg+N9s6]jSrU9dUs7-'Ys7?9_r:U*`rqH?crqZQiqYU6hr;H0bJcFR+J,~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNf!;?Ebs7?<_rpkR/nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*Bq\bK@rJa2Z*:_SX+'^:h1k\[f2X[C!9GYct:4XfJJ$W2HMgUnXQUT:VUD
+S!o_3QBd`!P*(ieNfB!UMM[.EL4t;5Jq8H%IXQWlH?sj]GB\1OFE;L&E=Qr+DJj<-CMR["BkV0m
+B)Z?BA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l8#<<-"s;Z]io;>j;m:JO[`:&dod9DqK^8cD9W
+7fZ$WgATb+gAK^rU$eZ3U$k;@kl0i?kQ'l1YkP?dYkbKt7/TLFiq_R3i:b.Z`q77J`:CeG;Ya8i
+<;fhn<rH,!=T)D&klBrHkPsZFjlHF$s5F%:p<ET\ilh>FrQG1UrbVOMqel@Nrc%XPr,V[U]QE^e
+nTOJIolg.RnT=DEp2p:Vs*"<as*4Qhrd"s!I!g?jIXZcsJ:W=OK2RAVL5(J?M2I4MN/`jYOHG]h
+Pa.N"R$a;1S"-%@T:hmPUSO``Vl6SpWiW>)YHY79ZEppG[^NZU\[oDc]Y2%o^VI\&_Sa=2`Q#p<
+aN2KFb5TQcbg"E3cMu2jd/DAldK%bpeGn)!f)=5"f`0Y'gAfq-h#-".hZ)L3i;_d9ir.p;jT"??
+k5XWEkl'cGlMp2Km/QGQmeuVSnG_tVo)J=]o_eC^pAamaq#:*gqYL*fr;?N`rdk+*s*t~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNf!;?Ebs7?<_rpkR/nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*Bq\bK@rJa2Z*:_SX+'^:h1k\[f2X[C!9GYct:4XfJJ$W2HMgUnXQUT:VUD
+S!o_3QBd`!P*(ieNfB!UMM[.EL4t;5Jq8H%IXQWlH?sj]GB\1OFE;L&E=Qr+DJj<-CMR["BkV0m
+B)Z?BA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l8#<<-"s;Z]io;>j;m:JO[`:&dod9DqK^8cD9W
+7fZ$WTDbG[TCR9bHL6"H62mbWVt6bcVoFGdK_Rt57IR&NV>[:hPP^OCPL5Nn;Ya8i<;fhn<rH,!
+=T)A(Y-"i&X8o=!WrAF^Rf8`HR.-I=R/Un#D#J5JDZ+MQE;4GNEr0pjFRjSEG4KkMG56:NFS'YJ
+FT-F_G5QRaGlN'gH4,(II!pElIXcluJV*lR;M9aYL51VBMMmFPNK0']OckllQ'IZ&R$jD4S=Q7D
+TV8*TUnsrdW2ZesXKAV.YctC<Za@-K[^WfX]">Vf]tV7r^qmn)_o0O5`l?'?aN;QHrlYAec-?75
+s3C\lrR(Yn!7Unrs4./#rR_&$s4RA)s4dS/r8%D0s53e5s5F";rT!q=s5j4As6'FGrTX@Is6KXM
+s6TgSrU9dUrpfsXs7?9_r:U*`s7cEcrqZQiqYU6hr;H0bJcFR+J,~>
+JcC<$JcGBBo`"gfrVZTjs8)`jrqQNf!;?Ebs7?<_rpkR/nF,i6mHj3*lKRQskN:pfj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*Bq\bK@rJa2Z*:_SX+'^:h1k\[f2X[C!9GYct:4XfJJ$W2HMgUnXQUT:VUD
+S!o_3QBd`!P*(ieNfB!UMM[.EL4t;5Jq8H%IXQWlH?sj]GB\1OFE;L&E=Qr+DJj<-CMR["BkV0m
+B)Z?BA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l8#<<-"s;Z]io;>j;m:JO[`:&dod9DqK^8cD9W
+7fZ$U;uBPm;>W`U7+Og#7.3G<<:Wud<:EEG7d<M>7efCL7K-6Y;Z0Pj<7F\59`S)e;uK\o<Vfbp
+=8l>#=oM_,>lS%'>lI\&<VKJj;uKV[;u0JmC]8/KD>S5LDuO_NEVskSF1cVcFn'YGGP-.TFn'SG
+F7s_TFoQX_GQ2pfH2`*tH[L3hI=?WpJ:N3&re"+%Knb>;M2@+JN/WaVO-#KeP*D5sQC+&-R[]h<
+StD[LU8+N\VPgAlWiE/&Xfnt5Z*L^C[C3NQ\[f;`]Y(ql^V@S#_SX4/`Poj:a2l?DaiaV+!mJp6
+rm(Pi!7:\ls3^nrrRCkts47/#rn.8(rS%;+s4mP.s5*e5rS[_7s5O";s5a4ArT=.Cs60FGs6BXM
+rTsRO!:KgSs7$$XrUU![s7H6^s7ZKeqtU0drqcKgrVZTlnc"+>h>`!~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7?<_rpkO.nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*L"^bKJ#Ka2Z*:_ns7)^V.:l]",>Z[^<BHZ*:F7XfSP&W2HMhUnaZXTUqaF
+S"#h5Q^3o$PEM&hO,f0XMi!:HL5(D7K7\Z)IsufnH[:!`G^"=RFEA.:EcH)<Df0H0Chmg$C2%?p
+B4h-S!G#^>@L$=L?sd8I?=!P8!aAi3r`K;)=',B%!``3!r_rhps&&bls%iYirD!;cr_*2^r^m)[
+qFC55s4Zq8n"TKKrM&kVs.\sJroj7D!9j%=!9iOKp93bcr3,i_r'^VEqVq;/rS[_5ro!4`n](FE
+qS`'EqG[>lrDi\prE&u#qH<g]rT=.@ro4(>iSa[ZrlbAepWVO<!,MRMrb_LLrbqaSq/Q=Qr,_:J
+k&og.n9*H.piZ(JolKhKrcS3`rHJ9ds*=Tis*F`nrd@XmIt*!!JV&N,KS>/8LPUeDMMmFPNfT6_
+OckomQ'I]'R$sM6S=Z=ETqS3VUnsrdW2ZetXKAY/Yd(L?Za@0L\%&uZ]=bei^;%Fu_8=(,`;[^[
+`lH0AaiV^)b5oi3rQYJjd*Vd>s3gqrrm^tus47,"s4IA)rS%;+rnRJ.s5*e5rS[\6s5O";s5a4A
+rT=.Cs60FGs6BXMrTsROs6fjSs7$'YrUU![rq-0^rq?Bdr:p9erqcKgr;?Kknc"+>h>`!~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7?<_rpkO.nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*L"^bKJ#Ka2Z*:_ns7)^V.:l]",>Z[^<BHZ*:F7XfSP&W2HMhUnaZXTUqaF
+S"#h5Q^3o$PEM&hO,f0XMi!:HL5(D7K7\Z)IsufnH[:!`G^"=RFEA.:EcH)<Df0H0Chmg$C2%?p
+B4h-S!G#^>@L$=L?sd8I?=!P8!aAi3r`K;)=',B%!``3!r_rhps&&bls%iYirD!;cr_*2^r^m)[
+qFCFTrLj+]s*F3\hg4d;mm6`G!2oCb!/AFGr.Of4r'gX\p8%Y`pnmtQaccL!rD`_qqH!Prr`K#"
+riQ1$"Kec,X/l6"!3,g_!1NYMp6b66rg3\$rbVRNqJQ:NrG_RPr,V^VmW@T6k&g*8g3376n9">E
+p2p:Vrc\6as*4Qhrd+Tk!.=co;1="EJ:N3&K7ei2L5(J>M2@+JN/WdXO-#KePE_>tQ^F//S"#q>
+StD^MU84T]VPgAlWiN5'Y-5(7ZEpmE[^NZT\[f>b]Y2%o^VI\&_Sa=k`<O?&aN2KFb5TQbbg$+3
+!mf6?rmCbos3ptss4./#r7Cu$s4RA)s4dP.rS@M1s53e5ro*n:rT!q=s5j4As6'FGrTX@Is6KXM
+s6]jSrU9dUs7-'Ys7?6^rUp0`s7cHdrqZQiqYU3gr;H0bJcFR+J,~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7?<_rpkO.nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ9f[n^)eC2jnd*L"^bKJ#Ka2Z*:_ns7)^V.:l]",>Z[^<BHZ*:F7XfSP&W2HMhUnaZXTUqaF
+S"#h5Q^3o$PEM&hO,f0XMi!:HL5(D7K7\Z)IsufnH[:!`G^"=RFEA.:EcH)<Df0H0Chmg$C2%?p
+B4h-S!G#^>@L$=L?sd8I?=!P8!aAi3r`K;)=',B%!``3!r_rhps&&bls%iYirD!;cr_*2^r^m)[
+qFC?[qbllNf1#I&mm6eLo2GTehadT6l::bApI+pJ!)rJes&8\lcqa7.qG[>lrDi\prE&u#qH<f&
+r`f2'!*enki`#hU!,MRMrb_LLrbqaSq/Q=Qr,_:Jk&og.n9*H.piZ(JolKhKrcS3`rHJ9ds*=Ti
+s*F`nrd@XmIt*!!JV&N,KS>/8LPUeDMMmFPNfT6_OckomQ'I]'R$sM6S=Z=ETqS3VUnsrdW2Zet
+XKAY/Yd(L?Za@0L\%&uZ]=bei^;%Fu_8=(,`;[^[`lH0AaiV^)b5oi3rQYJjd*Vd>s3gqrrm^tu
+s47,"s4IA)rS%;+rnRJ.s5*e5rS[\6s5O";s5a4ArT=.Cs60FGs6BXMrTsROs6fjSs7$'YrUU![
+rq-0^rq?Bdr:p9erqcKgr;?Kknc"+>h>`!~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7C^1o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ:f[na*eC2jnd*L"^bfe/MaMu3;_ns7*^V7@n]",>[[^EKKZEUR9XfSS'WMl_lUnj`YTq@pI
+S=>t8R$X)'P`h2kO,o9ZN/EIKLPCP:K7ec+J:E#rI!^0c)0pING'.nKF)l8?E,TW3D/=!'C2.Hr
+BP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVn;#a>k:Amoe9`Ic`9)_E]
+8Gl!Vg]-"*g]#q"U#r*HU$8<>60RS5Z/r4`YNN.b7/KFOiq_R3i;2@1i9eMS`qdUN`:_%G;uK\o
+<Vfbp=8l=u=oMV)kPaNGjlGI^ir7p7c2GidbPKHUbPo`QbPuDXD>S5MDuFYNEW'qUF7FA,Fm*r:
+Fl%<:FmsMEF7s_TFoHR_GQ2pfH2`*kH[L5?I8GBBJ:N3%JqJ]/Knb>;Ll$tGN/WaVO,oBcP*;,q
+QC!u,R[]h<StD[LTqeEZVPg>kWiE/&Xfen4Z*L^C[C3NR\[f;`]Y(qm^VI\&_Sa=k`=']+aN2KF
+b0.uPbg$.4s3C\lrmCbos3pqrs4./#rR_)%s4RA)rnIJ.rS@M1rnm\4s5F";r8[h<s5j4As6'FG
+rTX@Is6KXMs6]jSrU9dUs7-'Yrq$0^rUp0`s7cEcrqZQiqYU6hr;H0bJcFO*J,~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7C^1o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ:f[na*eC2jnd*L"^bfe/MaMu3;_ns7*^V7@n]",>[[^EKKZEUR9XfSS'WMl_lUnj`YTq@pI
+S=>t8R$X)'P`h2kO,o9ZN/EIKLPCP:K7ec+J:E#rI!^0c)0pING'.nKF)l8?E,TW3D/=!'C2.Hr
+BP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVn;#a>k:Amoe9`Ic`9)_E]
+8Gl!TTD>/XHMVp?HLQ4J62meJVZ)=dL%n(570'+VV":J]PKB!c;uK\o<Vfbp=8l=u=oMV'XTPZ,
+XK25um$[R7m?dihrb_OMrbqaSq/Q@Rr,_CMgND_%n9*T2piZ(Jo5jVIrcS3`rHJ9ds*=Ti!df<B
+rd@UlIt3'#JV&N,KS>/8LPUeDMN!LRNfT6_P*2#nQ'Rc(R@9V8SXuIHTqS6WUo(&fWN)u"Xf\b1
+Yd(L?['d?N\@K/]]=bei^V@S#_SX4/rl#8ba2l?Dai_fMbfn?2cMu2jd/MGmdf7epeGn)!f)=5#
+f`0Y'gA]k,h#6(/hYuF2i;_d9ir%j:jT"??k5XWEkl'cGlMp2Km/QJQmeuVSnGi%Wo)A7\o_nI^
+pAamaq#:*gqYL*fr;?N`rdk+)s*t~>
+JcC<$JcGECoD\^erVZTjs8)ckrV6Ee!;?Ebs7C^1o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+gtUQ:f[na*eC2jnd*L"^bfe/MaMu3;_ns7*^V7@n]",>[[^EKKZEUR9XfSS'WMl_lUnj`YTq@pI
+S=>t8R$X)'P`h2kO,o9ZN/EIKLPCP:K7ec+J:E#rI!^0c)0pING'.nKF)l8?E,TW3D/=!'C2.Hr
+BP1rVAH?=OraH+@?sm>K?=$q:>QS,5>5hY+=BAT'<WZ9#<;ohr;ZBVn;#a>k:Amoe9`Ic`9)_E]
+8Gl!N;u]bg7*\6u7.*A?<W5ti;u9Po8AIaj7/KCQ;ta,f;tj8<:A%?Z;uK\o<Vfbp=8l=u=oMUu
+>lIso<;BJl<:*WaD#S;KDZ4SQE;=MPEr:"KFPCs%FRXG0G5-4LFRsSIFT-F^G5ZXbGlN'gH3/G@
+I/\OjIXcluJUrE*K7nr5L51SAM2I7NNK0'\OHPcjPa.Q$R$jD4S=Q7DTV8'SUnjlcVl?\rXKAV-
+YctC<Za@-K[^`lY]">Vf]t_=t_8=(,`;[^``lH0AaiV]KbKS2Trm(Pi!7:_ms3gqrrRCkts47/#
+s4IA)rS%8*s4mS/s5*b4rS[_7s5Nt:s5a4ArT=.Cs60FGs6BXMrTsROs6fjSs7$'YrUTsZs7H9_
+rq?BdqtU0drqcKgrVZTlnc"+>h#Dm~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cd3o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+h:pZ;f[na*eC;pod*L"^bfe/NaN)9=_ns:+^V7Co]=GJ^[^NQLZE^X;Y-"e*Wi2hnV50l\TqJ$L
+SXZ+;R$a2)Q'7AnOH5E]N/NRMLkg_=KS+o.J:N,tI=-BfH?fI6(3XhBFE;JBEH#i6DJa3*CMITu
+BP;$jrac+@A,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)iiqs&/kor_WVjs%`Mes%NGcr(?r[
+r^cuXq:Yi'r7]bsqk<DOlp9q$!9j9akcjfbl*0nMqF1ABqr%2*rS[(^o#CFCq8E-IrDWYorDi\p
+r`B&#qcWl$s',NdroO:DjQ$3u!TDu9c2,Z_b5fc[bP9<Pb6,o1D/K/frGV[Sq/Q@Rr,_LPo6'_L
+k]Q?9mWIN4pN>qHoQ0_JrH8-`r-/0c!."Nh$[[8KI=6QnIt3'#K)UC&KS>/8LPUeEMi<USNfT9a
+P*2#oQ'Rc(R@9V8SXuIHTq\<XV5C/hWN*##Xfek3Yd1UA['mEP\@K2_]Y(ql^V@S#_SX4/`Poj;
+aN2KFb0.uPbg$.4!mf6?rmCbo!7Unrs4./#rR_)%s4RA)rnIJ.rS@J0s53e5ro*n:rT!q=s5j1@
+s6'FGrTX@Is6KXMs6]jSrU9dUrpfsXs7?9_r:U*`rqH?crqZQiqYU3gr;H0bJcFO*J,~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cd3o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+h:pZ;f[na*eC;pod*L"^bfe/NaN)9=_ns:+^V7Co]=GJ^[^NQLZE^X;Y-"e*Wi2hnV50l\TqJ$L
+SXZ+;R$a2)Q'7AnOH5E]N/NRMLkg_=KS+o.J:N,tI=-BfH?fI6(3XhBFE;JBEH#i6DJa3*CMITu
+BP;$jrac+@A,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)iiqs&/kor_WVjs%`Mes%NGcr(?r[
+r^cuXq4IPWgj7t*lp:ZLl_aN5`eF.TqF14Urh]=crh]LUerouqqNCeUrD`_qqH!SsrE/r"rEB5*
+s/l:%rN#jrl'_74nWs<ED/K/frGV[Sq/Q@Rr,_LPo6'_Lk]Q?9mWIN4pN>qHoQ0_JrH8-`r-/0c
+!."Nh$[[8KI=6QnIt3'#K)UC&KS>/8LPUeEMi<USNfT9aP*2#oQ'Rc(R@9V8SXuIHTq\<XV5C/h
+WN*##Xfek3Yd1UA['mEP\@K2_]Y(ql^V@S#_SX4/`Poj;aN2KFb0.uPbg$.4!mf6?rmCbo!7Unr
+s4./#rR_)%s4RA)rnIJ.rS@J0s53e5ro*n:rT!q=s5j1@s6'FGrTX@Is6KXMs6]jSrU9dUrpfsX
+s7?9_r:U*`rqH?crqZQiqYU3gr;H0bJcFO*J,~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cd3o()>@nF,i6mHj3*lKRQskN:pgj5].Xi8<DI
+h:pZ;f[na*eC;pod*L"^bfe/NaN)9=_ns:+^V7Co]=GJ^[^NQLZE^X;Y-"e*Wi2hnV50l\TqJ$L
+SXZ+;R$a2)Q'7AnOH5E]N/NRMLkg_=KS+o.J:N,tI=-BfH?fI6(3XhBFE;JBEH#i6DJa3*CMITu
+BP;$jrac+@A,]pB@:3JM?X@&Er`fM/>$Co.!a&N*r`0)#<)iiqs&/kor_WVjs%`Mes%NGcr(?r[
+r^cuXo2EFnr^?*=!*/tsoi(`e!)r_b`^fbkqF1-VrDWDhbYJ"/rDWYorDi\pr`B&#qcWl$s',G,
+!*f5'kYqO\pf-`]s)%XNrGV[Sq/Q@Rr,_LPo6'_Lk]Q?9mWIN4pN>qHoQ0_JrH8-`r-/0c!."Nh
+$[[8KI=6QnIt3'#K)UC&KS>/8LPUeEMi<USNfT9aP*2#oQ'Rc(R@9V8SXuIHTq\<XV5C/hWN*##
+Xfek3Yd1UA['mEP\@K2_]Y(ql^V@S#_SX4/`Poj;aN2KFb0.uPbg$.4!mf6?rmCbo!7Unrs4./#
+rR_)%s4RA)rnIJ.rS@J0s53e5ro*n:rT!q=s5j1@s6'FGrTX@Is6KXMs6]jSrU9dUrpfsXs7?9_
+r:U*`rqH?crqZQiqYU3gr;H0bJcFO*J,~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cg4o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,eC;spdEg+`bfe/NaN)<>`59C-^V@Ip]=PP_\$i]NZa-g>Y-"e+Wi;qpVPU)`TqS*M
+St):=R@'>,Q'@JqOcYWaNJrdQM26qAKnP)1JUi9#I=6KiH?si9G7A_<FEDSEEH,r9DJj<-rbDjU
+BkV0mAnGUcA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l5%<E)rs;u]_q;>j>k:]F2g:&doe9DhE]
+8cD9[8+bNbUA:MQU?k22l1hOHYi2e\7/B=P7fM?Hi:,Y'i9\GR`qICC`;W^7<;fhn<rQ2!=Sl8#
+>5_\*>lNjmjlGL^ioB%WiS`Ygbj`gLbk]H[b56)UDuFYOEW'qUF7s_MFlml7FmaA=Fm!rAFmaAD
+F7s_TFoHR_GQ2pfH2`-iHN8HmI9qAPIt3'#JqJ]/Knb>;Ll$tGMi<USO,oBbP*;,qQ'[l*R@B\9
+St;RJTq\?YV5L5iWiE,%Xfek3Z*L^C[C3NR\[f;`]Y2%o^VI\&_Sa=2`Q#s>aN;QHbKJ,Rc2Pui
+cd:&<d/qbFe,Iksec45!fDjM'g&0S(g]-(,h>c@3hu)F4iW%p8j8\3?jo"9@kPscEl2U&Kli$2L
+mJlVQn,MnWnbr%XoDeI\p&Fabp\agcq>U6equ$BirUKl<s4mX)~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cg4o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,eC;spdEg+`bfe/NaN)<>`59C-^V@Ip]=PP_\$i]NZa-g>Y-"e+Wi;qpVPU)`TqS*M
+St):=R@'>,Q'@JqOcYWaNJrdQM26qAKnP)1JUi9#I=6KiH?si9G7A_<FEDSEEH,r9DJj<-rbDjU
+BkV0mAnGUcA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l5%<E)rs;u]_q;>j>k:]F2g:&doe9DhE]
+8cD9[7f]4VTDtS`HeWl.H0dimVt-_[L<##C7/B=P7erkYV>R4eV>leWPLkukPQ"M[<;fhn<rQ2!
+=Sl8#>5_\*>l1T-X/`2!WiE%tl'_.1oU#GmrbqaSqJlISr,_RRpN>VAm<.i=m<.T8p3#eFoQ0_J
+rcS3`rHJ9ds*=Tis*F`nrdA+%It*!!JV&N,KS>/8LPUeDMMmFPNK9-^OckomQ'I]'R$jG5S=Z=E
+TqS3VUnsueW2ckuXf\b0Yd(L?['d?N\@K/]]=bhk^V@S#_SX4/`Poj;aN2KFb0.uPbg$.4!mf6?
+rm:eqe'n<Gs4./#rR_)%s4R>(s4dS/r8%D0s53b4s5F";r8[h<s5j1@s6'FGrTX@Is6KXMrpBaR
+rU9dUs7-'Yrq$0^r:U*`rqH?crqZQiqYU3gr;H0bJcFO*J,~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7Cg4o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,eC;spdEg+`bfe/NaN)<>`59C-^V@Ip]=PP_\$i]NZa-g>Y-"e+Wi;qpVPU)`TqS*M
+St):=R@'>,Q'@JqOcYWaNJrdQM26qAKnP)1JUi9#I=6KiH?si9G7A_<FEDSEEH,r9DJj<-rbDjU
+BkV0mAnGUcA7PUJ#@V"J?XI,G?2e(1>?Y50=TV],=8l5%<E)rs;u]_q;>j>k:]F2g:&doe9DhE]
+8cD9[7fZN];nYU"7-m2><W,nj;u0Jg8B46q7/B=P7fH<`;t3i*:B"2k<;fhn<rQ2!=Sl8#>5_\*
+>lIt$>h`6M;u:J3DuFYOEW'qUF7s_MFlml7FmaA=Fm!rAFmaADF7s_TFoHR_GQ2pfH2`-iHN8Hm
+I9qAPIt3'#JqJ]/Knb>;Ll$tGMi<USO,oBbP*;,qQ'[l*R@B\9St;RJTq\?YV5L5iWiE,%Xfek3
+Z*L^C[C3NR\[f;`]Y2%o^VI\&_Sa=2`Q#s>aN;QHbKJ,Rc2Puicd:&<d/qbFe,Iksec45!fDjM'
+g&0S(g]-(,h>c@3hu)F4iW%p8j8\3?jo"9@kPscEl2U&Kli$2LmJlVQn,MnWnbr%XoDeI\p&Fab
+p\agcq>U6equ$BirUKl<s4mX)~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7C[0o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,e^W'qdEp1ac-+;PaN2B?`5BI.^q[Ur]Xt_b\$i`PZa-j?YHG"/WiE%rVkp2bU7n6P
+St2C@R[KP0QBd\tP*(fdNf8pTM2@%DL4t;5Jq8H&IXQVYI!^0bG^"@TF`__HEcH)<Df0H0D#S2b
+C2%?pB4baeARo:\@U`bR?sd8I?=!P8#?tA8=]nj/=8l8#<W?%t;Z]io;>j;m:JO[`:&[id9DhE]
+8cD9\8+bN`UA1GTU?b,1l1V@KZ21]cYPCT_7K,dTi;2=2i;2@1huMa&`U_%A`Uq+I<;fhn<rQ2!
+=Sl8#>5hb(>lWpojlGL_j5T+ZiSi_Qrlt;`mE>4Irlb/\rGMUQrc%^RrGqgWpN61QhKJ@1m<%`<
+l?;lDm<&#Bp2p7Us*"<as*4Qhrd"WmI!kpA;gs4HJ:W9'K7ei2L5(J>M2@+JN/`jYO-#NfPE_>u
+Q^F20S"#t?StMdNUSO]_Vl-MoWiW>)YHY79Za7$I[^WcW]">Vf]tV7s_8=(,`5T^8a8X-fai_fM
+bfn>WcHjh`rmCbo!7Unrs4%,#rR_)%s4R>(s4dS/r8%D0s53b4s5Et:rT!n<s5j4As6'FGr9=7H
+s6KXMs6]gRrU9dUs7-$Xs7?9_r:U*`rqH?crqZNhqYU6hr;H-aJcFO*J,~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7C[0o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,e^W'qdEp1ac-+;PaN2B?`5BI.^q[Ur]Xt_b\$i`PZa-j?YHG"/WiE%rVkp2bU7n6P
+St2C@R[KP0QBd\tP*(fdNf8pTM2@%DL4t;5Jq8H&IXQVYI!^0bG^"@TF`__HEcH)<Df0H0D#S2b
+C2%?pB4baeARo:\@U`bR?sd8I?=!P8#?tA8=]nj/=8l8#<W?%t;Z]io;>j;m:JO[`:&[id9DhE]
+8cD9\8,f1VT)bP^He`r1H0[cdVu!:dLAlnhL?+'a7/B@O7fB.ZV#[CdV>c_VPLYilPPnJZ<Vfbq
+=8c7u=oMV(>Pqb(XT,@!WrK'^RIQ[=Qi1h$DuO_PEW'qUF8'eOFl%<1FmX;<Fm=/DFmX;DF7s_S
+FoQX_GQ2pfH2`*kH[L5?I8bTEJ:N3%JqJ]/Knb>;Ll$tGMi<XUO,oBcP*;,qQC!u,R[]e;St;UK
+TqeEZVPg>kWiE/&Xfnt5Z*UdD[^NZT\[oDc]Y2%o^qmn)_o0O5`lJ)"$d$Q7bKS2TcHab^d/MGm
+dK%bpeGn&!f)=5#f`0Y&gAfq-h#-".hZ)L2i;_d8ir.p:jT"??k5XWEkks]FlMp2Km/QJPmeuVS
+nGi%Vo)J=]o_eC^pAXgaq#:*fqYL*fr;?N_rdk+)s*t~>
+JcC<$JcGECoD\^erquZjs8)ckrV6Ee!;?Ebs7C[0o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EJJ
+h;$`<g"4j,e^W'qdEp1ac-+;PaN2B?`5BI.^q[Ur]Xt_b\$i`PZa-j?YHG"/WiE%rVkp2bU7n6P
+St2C@R[KP0QBd\tP*(fdNf8pTM2@%DL4t;5Jq8H&IXQVYI!^0bG^"@TF`__HEcH)<Df0H0D#S2b
+C2%?pB4baeARo:\@U`bR?sd8I?=!P8#?tA8=]nj/=8l8#<W?%t;Z]io;>j;m:JO[`:&[id9DhE]
+8cD9\8,cK^;nYWc62adV;u'Dd8*3A'8,5RL7K,dA<5_Q1<;fhn<rQ2!=Sl8#>5hb(>lIt$>hE$M
+;uLV5DuO_PEW'qUF8'eOFl%<1FmX;<Fm=/DFmX;DF7s_SFoQX_GQ2pfH2`*kH[L5?I8bTEJ:N3%
+JqJ]/Knb>;Ll$tGMi<XUO,oBcP*;,qQC!u,R[]e;St;UKTqeEZVPg>kWiE/&Xfnt5Z*UdD[^NZT
+\[oDc]Y2%o^qmn)_o0O5`lJ)"$d$Q7bKS2TcHab^d/MGmdK%bpeGn&!f)=5#f`0Y&gAfq-h#-".
+hZ)L2i;_d8ir.p:jT"??k5XWEkks]FlMp2Km/QJPmeuVSnGi%Vo)J=]o_eC^pAXgaq#:*fqYL*f
+r;?N_rdk+)s*t~>
+JcC<$JcGECoD\^erquZjs8)ckrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaN2E@`P]R0^q[Us]Xtbc\@8oSZa6sAYcb+1X/`.tVl$;dUS=HT
+T:VUCS!o_3Q^*i"P*1ofO,]*WMM[1GL5(D8K7\Z)Isufo'RY7RH$FOWG'.nKF)l8?E,TW3D/B2e
+'l%GrBP1phAS#C^@q&nU?sm>K?=$q:>QS,5>5hY*=BGK&s&K(ur_ikr;,R9gs%`VirD!8bs%E8^
+r^m)[!(Z_9c_C0-r1a.blTt++r94.EoW[_fnZ_Mdq*b'JrC-eGp>Gu.qV_D4!64EFlc/h@ou-l0
+rDi\pr`B&#qcWo%r`f8)s'5Zfjo4??irnB#i8ESjc2GlObPKH]bPTE^DZ4SQE;FSREr:"QFS^.R
+G4BeGG4B_BFR"#?G4TkDFS0_JFT-F^G5ZXbGlN'fH4,(II!pElIXcluJV*lR=G2B_L51SAM2R=O
+NK0'\OcklkQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['d?N\@K/]]=bhk^V@S#_SX40
+`Q#s=aN2KGbKJ,Sc-FV\cd;[=!n,QHrm^tus472$s4IA)r7_2*s4mP.s5*e5r8@S5s5Nt:s5a4A
+r9"%Bs60CFs6BXMrTsONs6fjSs7$'Yr:9mZrq-0^rq?BdqtU0drqcKgr;?Kknc"+>g])d~>
+JcC<$JcGECoD\^erquZjs8)ckrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaN2E@`P]R0^q[Us]Xtbc\@8oSZa6sAYcb+1X/`.tVl$;dUS=HT
+T:VUCS!o_3Q^*i"P*1ofO,]*WMM[1GL5(D8K7\Z)Isufo'RY7RH$FOWG'.nKF)l8?E,TW3D/B2e
+'l%GrBP1phAS#C^@q&nU?sm>K?=$q:>QS,5>5hY*=BGK&s&K(ur_ikr;,R9gs%`VirD!8bs%E8^
+r^m)[!(Zs[r1F"^q0V@Pi-G9IlTt*>q53n@re90_n:g[+qF1?PrM9CgrMK:brKR/Bc]\<-rDi\p
+r`B&#qcWo%r`f8)s'>Z+r2]gsri,@S!1NeQm?md;!,hdSrG_UQrc7pXpN67Sp3,tMn94>Em<%W9
+o60_Jm<&#BolU1Urc\6as*4QhrH\iuI!g?jIXZcsJ:W=OK33e\L5(J>M2@.LN/`jYO-,TgPEhE!
+Q^F20S"-%@T:hmPUSO``Vl6SpX/rG+YHY:;Za@-K[^`lY]">Vg^;%Fu_8=(,`Poj;a2l?Db0.uP
+c-=PZcd0u;d/qbFe,Iksec45"fDjM'g&0S(g]-(,h>c@3hu)F3iW%p8j8\3?jo"9@kPscDl2U&K
+li$2LmJlVQn,MnWnbhtXoD\C\p&=[bp\Xabq>U6equ$BirUKl<s4dR(~>
+JcC<$JcGECoD\^erquZjs8)ckrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaN2E@`P]R0^q[Us]Xtbc\@8oSZa6sAYcb+1X/`.tVl$;dUS=HT
+T:VUCS!o_3Q^*i"P*1ofO,]*WMM[1GL5(D8K7\Z)Isufo'RY7RH$FOWG'.nKF)l8?E,TW3D/B2e
+'l%GrBP1phAS#C^@q&nU?sm>K?=$q:>QS,5>5hY*=BGK&s&K(ur_ikr;,R9gs%`VirD!8bs%E8^
+r^m)[!_63hpJ\^nlTtJKpf$od!(ccQh+7$*q*b'JrC6'O`(p>3rDi\pr`B&#qcWo%r`f8)s'5Y1
+>PVP(>6%pX<;TSoDZ4SQE;FSREr:"QFS^.RG4BeGG4B_BFR"#?G4TkDFS0_JFT-F^G5ZXbGlN'f
+H4,(II!pElIXcluJV*lR=G2B_L51SAM2R=ONK0'\OcklkQ'IZ%R$jD4S=Q7DTV8*TUnsrdW2Zet
+XKAY/Yd(L?['d?N\@K/]]=bhk^V@S#_SX40`Q#s=aN2KGbKJ,Sc-FV\cd;[=!n,QHrm^tus472$
+s4IA)r7_2*s4mP.s5*e5r8@S5s5Nt:s5a4Ar9"%Bs60CFs6BXMrTsONs6fjSs7$'Yr:9mZrq-0^
+rq?BdqtU0drqcKgr;?Kknc"+>g])d~>
+JcC<$JcGECo`"derqu]krqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaiMNB`Pf[2_8!b!]Y(hd\[T#U['R'CYck43XK/A#W2HMgUnaWW
+T:VXES"#h5R$O#%PEM&iO,f3YMi*@JLPCP;K7ec,J:E#rI2%'UH?jaZGBS+NFE;JBEH#i6DJa4h
+CDCSuBP;$kAn>Oa@q/tW@:3JM?X@&Er`f\4>$>'3=BJZ(<rZ/"<;f_s;Gg<j;#a>k:Amoe9`@]_
+9)_E]8-.N#pY*HXrM/XDo'-/;rTWjVm]l8cnuqjWqaLEPq;D20rS[S3s2P#Vq8W9Ml,NV>pr!/3
+rDi\pr`B&#qcWo%r`f8)ra#P1rT++Aj5L!q!T2i2c2GlMb5fc\bPoZaDuO_PEW'qVF80kRFnp4@
+GP$(KFmjG8Fo-@OFm=)EF7aSRFoHR^GQ2pfH2`-iHN8HmI0"eHrd\7)JqJ]/Knb>;Ll$tGMi<US
+O,oBbP*2&pQ'Rf)R@B\9St;RJTq\?YV5L5iWiE,%Xfen4Z*L^C[C3QS\[oDc]Y2%o^qmn)_o0O5
+`lH0Aai_fMbfn>WcHjh`rm:eqe'n<Gs4%,#rR_)%s4RA)s4dS/r8%D0rnm\4ro*n:r8[h<roO+@
+roa=FrTX=Hs6KXMrpBaRrU9dUrpfsXrq$0^r:U*`rqH?crqZNhqYU6hqu-'aJcFL)J,~>
+JcC<$JcGECo`"derqu]krqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaiMNB`Pf[2_8!b!]Y(hd\[T#U['R'CYck43XK/A#W2HMgUnaWW
+T:VXES"#h5R$O#%PEM&iO,f3YMi*@JLPCP;K7ec,J:E#rI2%'UH?jaZGBS+NFE;JBEH#i6DJa4h
+CDCSuBP;$kAn>Oa@q/tW@:3JM?X@&Er`f\4>$>'3=BJZ(<rZ/"<;f_s;Gg<j;#a>k:Amoe9`@]_
+9)_E]8-#@\TE(V_T_EfsHK9AMHKmfeVu!:`LAch^L@U&o7/KFN7f9(]V>R4hV>R1jV>QSQPLGZp
+<;fhn<rQ2!=Sl8#>5hb'>lJ%/?N$r+X/c&rnX9?EqO-];rg3Y'rc%^RrGqjXpiQ@Tq0(eBoQKbI
+mr[`8qf_IOl?)iCoQ:(Trc\3`s*4Qhrd+Tk!.=co!IfOtJ6[YWK7ei2L5(J>M2@+JN/WaWO-#Ke
+P*D5sQC+&-S"#q>StD^MU84T]Vl-JnWiN8(Y->.8ZEppG[^WcW]">Vf]tV7s_8=(,`5T^8a2l?D
+b0.uPbg"GYcd0u;d/qbFe,IkseH"2!fDjM'g&9Y)g]-(,h>c@2hu2L4iW%p8j8\3>jo+?@kPscE
+l2KuJli$2LmJlVQn,MnVnbr%XoDeI\p&Fabp\agcq>L0dqu-HirUKl<s4dR(~>
+JcC<$JcGECo`"derqu]krqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#7Yi8EMK
+h;$c=g"=p-e^W'rdEp4bc-4ARaiMNB`Pf[2_8!b!]Y(hd\[T#U['R'CYck43XK/A#W2HMgUnaWW
+T:VXES"#h5R$O#%PEM&iO,f3YMi*@JLPCP;K7ec,J:E#rI2%'UH?jaZGBS+NFE;JBEH#i6DJa4h
+CDCSuBP;$kAn>Oa@q/tW@:3JM?X@&Er`f\4>$>'3=BJZ(<rZ/"<;f_s;Gg<j;#a>k:Amoe9`@]_
+9)_E]8H2Z`;sd$:7fPpU7e&q462adY;tj8i8G,L/8Ff:H7/KFN7ep$]<W,np<<-";:&n8l<Vfbq
+=8c7u=oMV(>Ph\)?2n42>Ph\(>6%pU<;ohrDuO_PEW'qVF80kRFnp4@GP$(KFmjG8Fo-@OFm=)E
+F7aSRFoHR^GQ2pfH2`-iHN8HmI0"eHrd\7)JqJ]/Knb>;Ll$tGMi<USO,oBbP*2&pQ'Rf)R@B\9
+St;RJTq\?YV5L5iWiE,%Xfen4Z*L^C[C3QS\[oDc]Y2%o^qmn)_o0O5`lH0Aai_fMbfn>WcHjh`
+rm:eqe'n<Gs4%,#rR_)%s4RA)s4dS/r8%D0rnm\4ro*n:r8[h<roO+@roa=FrTX=Hs6KXMrpBaR
+rU9dUrpfsXrq$0^r:U*`rqH?crqZNhqYU6hqu-'aJcFL)J,~>
+JcC<$JcGECo`"gfrVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#:Zi8EML
+h;$c=g"=p.e^W*sdF$:ccHOJTaiMQC`Pf[2_8*h"]tCtg\[],W[Bm3FYct=5XfSP&W2HPiUnj`Y
+TV%gHS=>t8R$X,(P`q8mOH5E]N/NRMLkg_>KS+o/JUi6!s*YT/H?sj]GB\4QFEDSEEH,r9DJj<-
+rbE6`BkV0mB4b^dA7K+Y@UWYP?XI,G?2e(0>?_#/s&]8&r`9&!!*&qrs&/kor_WVjs%`Mes%NDb
+r(?u\r^d%Ds4dG)j.bq9n"T&4rTNq=!9j@Fj0AWir3>=eq*b'JqaUMAnDX>cs2FQK!6=]Nr5\`T
+oYggKr`/eqr`B&#qcWo%r`f8)ra#M0"CL<Qjl?@""QA:shr+=Tr63m<s)@jTrGqjXpiQFVq0(M:
+p3,tKmrZs"eo^n6rc\3`s*4Qhrd+Tk!.=cos*dstJ:N3&JqJ]/Knb>;Ll$tGMi<XUO,oBbP*;,q
+QC!u+R[]e;St;UKTqeEZVPg>kWiE/&Xfnt5ZEpmE[^NZU\[oDc]tV7r^qmn*`5T^8a2l?Db5TQg
+bg"GYcd0u;d/qbFe,Ihue^i=NfDjM'g&9Y)g]$",h>Z:2hu)F4iVqj7j8\3?jo"9?kPscEl2KuJ
+li$2LmJlVQn,DhVnbhtXoDeI\p&=[bp\Xabq>U6dqu-HjrUBf;s4dR(~>
+JcC<$JcGECo`"gfrVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#:Zi8EML
+h;$c=g"=p.e^W*sdF$:ccHOJTaiMQC`Pf[2_8*h"]tCtg\[],W[Bm3FYct=5XfSP&W2HPiUnj`Y
+TV%gHS=>t8R$X,(P`q8mOH5E]N/NRMLkg_>KS+o/JUi6!s*YT/H?sj]GB\4QFEDSEEH,r9DJj<-
+rbE6`BkV0mB4b^dA7K+Y@UWYP?XI,G?2e(0>?_#/s&]8&r`9&!!*&qrs&/kor_WVjs%`Mes%NDb
+r(?u\r^d$^q4RA,n9Y%[qg.@Lks>9For%\ao7m6ugkPKUq*b'JqaUL[n>?)InWWR-r0-Q3r`/eq
+r`B&#qcWo%r`f8)ra#M0#[a[6X/`2!WiH#sm[=*DpmLH8s)@jTrGqjXpiQFVq0(M:p3,tKmrZs"
+eo^n6rc\3`s*4Qhrd+Tk!.=cos*dstJ:N3&JqJ]/Knb>;Ll$tGMi<XUO,oBbP*;,qQC!u+R[]e;
+St;UKTqeEZVPg>kWiE/&Xfnt5ZEpmE[^NZU\[oDc]tV7r^qmn*`5T^8a2l?Db5TQgbg"GYcd0u;
+d/qbFe,Ihue^i=NfDjM'g&9Y)g]$",h>Z:2hu)F4iVqj7j8\3?jo"9?kPscEl2KuJli$2LmJlVQ
+n,DhVnbhtXoDeI\p&=[bp\Xabq>U6dqu-HjrUBf;s4dR(~>
+JcC<$JcGECo`"gfrVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lKRQskN:pgjQ#:Zi8EML
+h;$c=g"=p.e^W*sdF$:ccHOJTaiMQC`Pf[2_8*h"]tCtg\[],W[Bm3FYct=5XfSP&W2HPiUnj`Y
+TV%gHS=>t8R$X,(P`q8mOH5E]N/NRMLkg_>KS+o/JUi6!s*YT/H?sj]GB\4QFEDSEEH,r9DJj<-
+rbE6`BkV0mB4b^dA7K+Y@UWYP?XI,G?2e(0>?_#/s&]8&r`9&!!*&qrs&/kor_WVjs%`Mes%NDb
+r(?u\r^crdqc!5XqF:KTp.#!Nl:1J9ks>;Jq,?udqagENgdq*.q*b'JqaUK_n5[G&r`/eqr`B&#
+qcWo%r`f8)ra#M0!FK(0>l._*?-Q@KE;OYRErC(SFSp:WG2%67G4B_DFO>6^FT-F^G5QRaGlN'g
+HN/<lI/\QoIT:lJJ:W<(K7ei2L5(J>M2@+JN/`jYO-#KePE_>uQ^F//S"#t?StMdNUSO]_Vl-Mo
+WiW>)YHY7:Za7$I[^WfX]">Vg^;%Fu_8=+.`Poj;aN2KGrlYMic-FV\cd;[=!n,QHrmV#"f%0iP
+s4IA)rS%;+rnRJ.rnd\4r8@V6ro3k9s5a4Ar9""As60FGrp'OLrTsONs6fjSrp]sXr:9mZs7H6^
+rq?BdqtU0drqcHfrVZTlnG\"=g])d~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#:[i8EML
+h;$c=g=Y$/f$r3udF$=dcHXPUb/hZE`Pod4_SO"%^:_+j\[f2X[^<BIZ*:I8XfSS'WMl_lV50l\
+TqJ$LSXc1<R@'>,Q'@JqOcYWaNJrdQM26qAL4k23Jq/B$IfFg1I!U*aG^"@TF`__HEcH)<Df0H0
+D#S2bC2%?pB4kgfARo:\@U`bR?sd8I?=!P8!F&b,=oVS(=8l5%<E)rs;u]bq;>sDl:]F2g:&doe
+9D_?\8H;<Zh#cBdg]#q,U\1A9U[b)B629[:l/8l*Z2-lb7JfOS8,_B7iVUXla8![Ka8EsRa8<mM
+`;ip7<rQ2!=Sl8#>5hb'>lJ%.?N"43jlHF$s5Et8!9*^tr63p=qJlLTrH%aUr,qjZf6?q3noa;@
+eTKGbrH8*_r-/0c!."Nh!df<Brd=frJ,Xt&JV&N,KS>,7L51SAMMmFPNK0'\OcklkPa.Q$R$jD4
+S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['d?O\@K/^]Y(ql^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjh`
+rm:bpe,IkseH"2!fDjJ'g&9Y)g]$",h>c@2hu)F4iVqj7j8\3>jo"9@kPscDl2U&Jli$2LmJlVQ
+n,DhVnbhtXoD\C[p&Fabp\agbq>U6equ$BirUKl<s4[L'~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#:[i8EML
+h;$c=g=Y$/f$r3udF$=dcHXPUb/hZE`Pod4_SO"%^:_+j\[f2X[^<BIZ*:I8XfSS'WMl_lV50l\
+TqJ$LSXc1<R@'>,Q'@JqOcYWaNJrdQM26qAL4k23Jq/B$IfFg1I!U*aG^"@TF`__HEcH)<Df0H0
+D#S2bC2%?pB4kgfARo:\@U`bR?sd8I?=!P8!F&b,=oVS(=8l5%<E)rs;u]bq;>sDl:]F2g:&doe
+9D_?\8H;<ZU&1M<Hi&-QH0@QkVXgY\L['WoLZ!p`7/B@L7K>sVV=:AZPj">/P4Xt3OoSMY<rQ2!
+=Sl8#>5hb'>lJ%.?N"72X8f3rW;r=ERI6I=EW1"WF80kTFo$:5GP64NFmO5#Fk1[5FoHR^GQ2mf
+H2W$jH[L5?I0"eHrd\4(JqJ]/KnY89LPUeEMi<USNfT6`P*2#nQ'Rc(R@9V8SXuIHTq\<XV5C/h
+WN*##Xfek3Z*L^C[C3QS\[f>b]Y2%o^qmn)_o0O5`lH0Aai_fMbg"GYcd0u;d/h\Erm^tu!7q,#
+s4@>)rS%;+rnRJ.s5*b4r8@V6ro3k9s5a1@r9"%Bs60CFs6BULrTsONs6fjSrp]sXr:9mZrq--]
+s7ZHdr:p6drqcKgr;?Kknc"+>gAc[~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYJ+W@(o()>@nF,i6mHj3*lKRQskN:pgjQ#:[i8EML
+h;$c=g=Y$/f$r3udF$=dcHXPUb/hZE`Pod4_SO"%^:_+j\[f2X[^<BIZ*:I8XfSS'WMl_lV50l\
+TqJ$LSXc1<R@'>,Q'@JqOcYWaNJrdQM26qAL4k23Jq/B$IfFg1I!U*aG^"@TF`__HEcH)<Df0H0
+D#S2bC2%?pB4kgfARo:\@U`bR?sd8I?=!P8!F&b,=oVS(=8l5%<E)rs;u]bq;>sDl:]F2g:&doe
+9D_?\8H;<Z<;TVo7J9488+9">7Hd&;<;KPd<52!#7/B@L7K>sW<:Elf<5hT4<Vfbq=8c7u=oMV(
+>Ph\)?2e1/?i"%->68&8;pJA=EW1"WF80kTFo$:5GP64NFmO5#Fk1[5FoHR^GQ2mfH2W$jH[L5?
+I0"eHrd\4(JqJ]/KnY89LPUeEMi<USNfT6`P*2#nQ'Rc(R@9V8SXuIHTq\<XV5C/hWN*##Xfek3
+Z*L^C[C3QS\[f>b]Y2%o^qmn)_o0O5`lH0Aai_fMbg"GYcd0u;d/h\Erm^tu!7q,#s4@>)rS%;+
+rnRJ.s5*b4r8@V6ro3k9s5a1@r9"%Bs60CFs6BULrTsONs6fjSrp]sXr:9mZrq--]s7ZHdr:p6d
+rqcKgr;?Kknc"+>gAc[~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lK[WtkN:pgjQ#:[iS`VM
+h;-i>g=b*0f%&:!da?FfcHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKZE^X;Y-"e+Wi;qpVPL#_
+TqS-NSt2@?R[BJ/Q'ISsP*(fdNf8pTMM[.EL4t;5K7\W(0n4Y#I=-?eH$FOWG'.nKF)l8?E,TW3
+D/=$(CMIQsBP1siAS#C^@q&nU?sm>K?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\ks%iYirD!;c
+r_*/]r^lqAs4mOIoV1-9oV1M7qrdk?q!#T"qF(0KqaUTUlf%larPmU4oZ$mLqc<\trE/r"r`];*
+qcs,+ra,J/"Qe_)ioC!rs5<Xrr63s>rGhgWrH%dVr,qm[cZf,,oQBD?fQGefrH8*_r-/0cs*=Ti
+s*F`nrdFfq=atsPJUrE*K7nr5L51SAM2I4MN/`jYOHG]hPa.N"R$a;1S"-%@T:hmPUSO``Vl6Sp
+X0&M,YctC=Za@-K\%&u[]=bej^V@S#_Sa=2`Q#s>aN;TJbKS61c2l8<rm:bpe,IkseH"2"fDjM'
+g&9Y)g]-(-h>Z:2hu)F4iVqj7j8\3>jo"9@kPj]Cl2U&Klhp,LmJcPPn,DhVnbhtXoD\C[p&Fab
+p\Xabq>U6dqu-HjrUBf;s4[L'~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lK[WtkN:pgjQ#:[iS`VM
+h;-i>g=b*0f%&:!da?FfcHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKZE^X;Y-"e+Wi;qpVPL#_
+TqS-NSt2@?R[BJ/Q'ISsP*(fdNf8pTMM[.EL4t;5K7\W(0n4Y#I=-?eH$FOWG'.nKF)l8?E,TW3
+D/=$(CMIQsBP1siAS#C^@q&nU?sm>K?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\ks%iYirD!;c
+r_*/]r^m'_rLs7agjAsFkBZ5Vqkiq^pP8$giJ77tqF19Ns$us_s/,[iq54%RplkT<h37i$qc<\t
+rE/r"r`];*qcs,+ra,J/!ir?$q5O=[i0j/'rGhgWrH%dVr,qm[cZf,,oQBD?fQGefrH8*_r-/0c
+s*=Tis*F`nrdFfq=atsPJUrE*K7nr5L51SAM2I4MN/`jYOHG]hPa.N"R$a;1S"-%@T:hmPUSO``
+Vl6SpX0&M,YctC=Za@-K\%&u[]=bej^V@S#_Sa=2`Q#s>aN;TJbKS61c2l8<rm:bpe,IkseH"2"
+fDjM'g&9Y)g]-(-h>Z:2hu)F4iVqj7j8\3>jo"9@kPj]Cl2U&Klhp,LmJcPPn,DhVnbhtXoD\C[
+p&Fabp\Xabq>U6dqu-HjrUBf;s4[L'~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYIe<7'o()>@nF,i6mHj3*lK[WtkN:pgjQ#:[iS`VM
+h;-i>g=b*0f%&:!da?FfcHXSVb/q`F`l5m6_SO%&^:h1k]",>[[^EKKZE^X;Y-"e+Wi;qpVPL#_
+TqS-NSt2@?R[BJ/Q'ISsP*(fdNf8pTMM[.EL4t;5K7\W(0n4Y#I=-?eH$FOWG'.nKF)l8?E,TW3
+D/=$(CMIQsBP1siAS#C^@q&nU?sm>K?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\ks%iYirD!;c
+r_*/]r^lobs&8eai^`K-o0qh.lr;"rqFUNOqF19Ns$uTZqc(O0qc<\trE/r"r`];*qcs,+ra,J/
+!aK#:qHO#+rDV*CrGhgWrH%dVr,qm[cZf,,oQBD?fQGefrH8*_r-/0cs*=Tis*F`nrdFfq=atsP
+JUrE*K7nr5L51SAM2I4MN/`jYOHG]hPa.N"R$a;1S"-%@T:hmPUSO``Vl6SpX0&M,YctC=Za@-K
+\%&u[]=bej^V@S#_Sa=2`Q#s>aN;TJbKS61c2l8<rm:bpe,IkseH"2"fDjM'g&9Y)g]-(-h>Z:2
+hu)F4iVqj7j8\3>jo"9@kPj]Cl2U&Klhp,LmJcPPn,DhVnbhtXoD\C[p&Fabp\Xabq>U6dqu-Hj
+rUBf;s4[L'~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLY$hX&^o()>@nF,i6mJcI%lg!a!kiV$hjQ#:[iS`VM
+h;-l?g=b-1f%&:!da?IgcHaYWbK7iH`l5p7_SX+'^V.:m]",A\[^NQLZa$a=Y-"h,WiE"qVkp2b
+U7n9QSt;IAS!fY2QBd`!P*1ofO,f0XMi!:HLPCM9K7e`*J:E#rI=-?eH$FOWG'.nK-Za<JEH#i6
+DJa6,CMR[!BP;$kAn>Oa@q/tW@:3JM?X@#D>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm;#a>k:Amoe
+9`Ic_9)hH_h>?(.h>3o<U>;U=U?4c=kP=?=l2@sVZMLojZM1^&7/B@L7f>jWir7m:iqhX4iW.s:
+imc$>`r&m:=8l>!=oMV(>Ph\)?2e1-?iFF5j8S';i;hg8iV1Umbi$\EEW1"WF89qVFo-@KGPQLI
+GPH@RFm!l#FkLm8Fo?L]GQ2pfH2W$jH[L5?I0"eHrd\1'JqJ]/KS>/8LPUeDMMmFQNfT6_Ockom
+Q'I]'R$sM6S=Z=ETqS3VUnsueW2cl!Xf\e2Yd1UA[C3NQ\[f;`]Y2%o^qmn)_o0O5a2l?Db0.uP
+bg"GYcd;[=!RfHreGn&!f)F;$f`0Y(gAfq-h#-".hZ)L2i;_d8ir%j9jT"?>k5OQDkks]ElMp2J
+m/QJPmeuVRnGi%Vo)J=\o_eC]pAamaq#:*fqYL*er;?N_rdk+'s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLY$hX&^o()>@nF,i6mJcI%lg!a!kiV$hjQ#:[iS`VM
+h;-l?g=b-1f%&:!da?IgcHaYWbK7iH`l5p7_SX+'^V.:m]",A\[^NQLZa$a=Y-"h,WiE"qVkp2b
+U7n9QSt;IAS!fY2QBd`!P*1ofO,f0XMi!:HLPCM9K7e`*J:E#rI=-?eH$FOWG'.nK-Za<JEH#i6
+DJa6,CMR[!BP;$kAn>Oa@q/tW@:3JM?X@#D>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm;#a>k:Amoe
+9`Ic_9)hKZUAgkcI.2LMHKKM861^uNVt>c=LAH]&L?"'d7/B@L7f>jKV>@(dPkUC7P2VW&<rQ2"
+=Sl8#>5hb'>lJ%.?Me+/?im=+W;3FlR,+2(Qi`[qEW1"WF89qVFo-@KGPQLIGPH@RFm!l#FkLm8
+Fo?L]GQ2pfH2W$jH[L5?I0"eHrd\1'JqJ]/KS>/8LPUeDMMmFQNfT6_OckomQ'I]'R$sM6S=Z=E
+TqS3VUnsueW2cl!Xf\e2Yd1UA[C3NQ\[f;`]Y2%o^qmn)_o0O5a2l?Db0.uPbg"GYcd;[=!RfHr
+eGn&!f)F;$f`0Y(gAfq-h#-".hZ)L2i;_d8ir%j9jT"?>k5OQDkks]ElMp2Jm/QJPmeuVRnGi%V
+o)J=\o_eC]pAamaq#:*fqYL*er;?N_rdk+'s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLY$hX&^o()>@nF,i6mJcI%lg!a!kiV$hjQ#:[iS`VM
+h;-l?g=b-1f%&:!da?IgcHaYWbK7iH`l5p7_SX+'^V.:m]",A\[^NQLZa$a=Y-"h,WiE"qVkp2b
+U7n9QSt;IAS!fY2QBd`!P*1ofO,f0XMi!:HLPCM9K7e`*J:E#rI=-?eH$FOWG'.nK-Za<JEH#i6
+DJa6,CMR[!BP;$kAn>Oa@q/tW@:3JM?X@#D>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm;#a>k:Amoe
+9`Ic_9)hKZ<;ohk7drq97dEM*61%Xj8Gc!U7/B@L7f>jN<VKJ3:Ae/l=8l>!=oMV(>Ph\)?2e1-
+?iFI.>lS++;q4kIEW1"WF89qVFo-@KGPQLIGPH@RFm!l#FkLm8Fo?L]GQ2pfH2W$jH[L5?I0"eH
+rd\1'JqJ]/KS>/8LPUeDMMmFQNfT6_OckomQ'I]'R$sM6S=Z=ETqS3VUnsueW2cl!Xf\e2Yd1UA
+[C3NQ\[f;`]Y2%o^qmn)_o0O5a2l?Db0.uPbg"GYcd;[=!RfHreGn&!f)F;$f`0Y(gAfq-h#-".
+hZ)L2i;_d8ir%j9jT"?>k5OQDkks]ElMp2Jm/QJPmeuVRnGi%Vo)J=\o_eC]pAamaq#:*fqYL*e
+r;?N_rdk+'s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrqQNfs7ZHb$hX&^o()>@nF,i6mJcI$lg!a!ki_*ijQ#:[iS`YN
+h;-l@g=b-1f@AC#e'ZRicHa\YbK@rJa2Z*:_ns7*^V7Co]=PP_\$i]OZa-j?YHG"/X/`.tVl$;d
+US=HTT:VUDS!ob4Q^3o$PEM&iO,o9ZN/NOLLkg_=KS+o.J:N,uI=6HgH?jaZGBS-/F=2-MEH,r9
+DJj<-Chmg$BkV0mB4b^dA7K+Y@UWYP?XI,F?!LW=>?_#/!a&N*r`0)#<)iiqs&&horD<Mis%`Me
+s%NGcqapi[ptkb?ntP!9q4d";rT=%@p?;%Rpp9q+oX"4rq6U(-qaC9LqaUKRrSmk;ro++AioB([
+jSn3=iq1:gaT'<TaSa'YaS<gJ`r/s;=8l>!=oMV'>Pqb*?2e1-?iFI5@0GWMj5T(ti;V^0c1]BA
+bPlP\F8C"VFo6FQGO'M@GPH@SFlRT$FkLm8Fo?L]GQ2pfH2W'hHN8HmIK+b%It3'#JV&N,KS>/8
+LPUeDMMmFPNK0'\OcklkPa.Q$R$jD4S"6.BTV8'SUnjlcW2ZetXKAY/Yd(L?['d?O\@K2_]Y(tn
+^VI\&_o0O5`lH0Aai_fMbg"GYcd;[=!RfHre,n1Of)F8&f\+sVgAfq-h#6(/hZ)L2i;_d8ir%j9
+jT"?=k5XWDkks]ElMp2Jm/QJPmelPRnGi%Vo)A7\o_eC]pAXg`q#:*gqYC$er;6H_rdk+&s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrqQNfs7ZHb$hX&^o()>@nF,i6mJcI$lg!a!ki_*ijQ#:[iS`YN
+h;-l@g=b-1f@AC#e'ZRicHa\YbK@rJa2Z*:_ns7*^V7Co]=PP_\$i]OZa-j?YHG"/X/`.tVl$;d
+US=HTT:VUDS!ob4Q^3o$PEM&iO,o9ZN/NOLLkg_=KS+o.J:N,uI=6HgH?jaZGBS-/F=2-MEH,r9
+DJj<-Chmg$BkV0mB4b^dA7K+Y@UWYP?XI,F?!LW=>?_#/!a&N*r`0)#<)iiqs&&horD<Mis%`Me
+s%NGcqapo]USI[[s*aclnpBtSid'ZPmABK1p4h7UqaC9LqaUKRoVMA\qipf<p6,68!0lf5rDro!
+r`K&#r`]8)r*95,ra,J/ra>b7rM]dsql/YErg<DIr0[JOrc7sYqK2XXr-%USlZhf@pic=Qj)j1$
+fl[18rHA*_s*4QhrHeKj!.=cos*e7'J:N3%JqJ]/Knb>;Ll$tGMi<USNfT6`P*2#nQ'Rc(R@9V7
+SXuFGTqS6WUo(&gWN*##Xfek3Z*L^C[C3QS\[oDc]Y;.q^qmn*`5T^8a2l?Db0.uPc-FV\d/MDn
+daS3F!nGlQrmq5(g"H>Xs4dS/rS@M1s53b4s5Et:r8[e;s5j.?s6'CFr9=4Gs6KULs6]gRr9s[T
+s7-$Xrq$0^r:U'_rqH<brqZQiq>:-gqu-'aJcFF'J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrqQNfs7ZHb$hX&^o()>@nF,i6mJcI$lg!a!ki_*ijQ#:[iS`YN
+h;-l@g=b-1f@AC#e'ZRicHa\YbK@rJa2Z*:_ns7*^V7Co]=PP_\$i]OZa-j?YHG"/X/`.tVl$;d
+US=HTT:VUDS!ob4Q^3o$PEM&iO,o9ZN/NOLLkg_=KS+o.J:N,uI=6HgH?jaZGBS-/F=2-MEH,r9
+DJj<-Chmg$BkV0mB4b^dA7K+Y@UWYP?XI,F?!LW=>?_#/!a&N*r`0)#<)iiqs&&horD<Mis%`Me
+s%NGcqapo]<E8lpgd^9lk!AB6_asbuqaC9LqaUKRqc32dh+drGlV@CZr`B)$qcWo%rEK2)ra#M0
+qd9>1s'b\-s'>@tfMqijrH%gWr,qp\nTX;Dm<A>Kol];:hf[UorH8'^r-/0cs*=Qhs*F`nrdFfq
+?%7BTJUrE*K7nr5L51SAM2I4MN/`jYO-,TgPE_>uQ^F20S"#t?StMdNUSO]_Vl6SpX/rG+YHY:;
+Za@-K\%&u[]=bej^V@S#_Sa=2`Q#s>aN;TJbKS5VcHjl:d/h\ErmV#"f%0iP!nc2ZrS%;+s4mS/
+s5*e5r8@V6ro3k9roF+@qr[qAroj:Erp'OLr9XINrpK^Qs7$'Yr:9jYs7H6^rq??cqtU0drqcHf
+rVZQknc"+>g&HR~>
+JcC<$JcGHDoD\^erVZTjs8)`jrqQNfs7ZHbJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI]iS`YO
+hVHuAg=k32f@JI$e'cXjcd'eZbK@rJaMu3<_ns:,^V@Lq]Xt_b\@/iR['R'CYck43XK/A#W2HMh
+UnaZXTV%gHS=>t8R$X,(P`q8mOH5E]N/WXNM26n@KnP)1JcC6@IsufoH[:!`G^"@TF`__HEcH)<
+Df0H0D/=!'C2*Z\'k_,iARo:\@U`bR?sd8I?!U]?>?b;1=TV],=8l5%<E)rs;Z]io;>j>k:]F2g
+:&dod9DhEWhY!Z6U>MaDU?+]>jne-8k5a`0[H=jgZhm/f7JfRN7f_TIj8e6:j9=T)jQ#:]qoA]W
+rQ"`TqoJiZr5nrZs2k5\r5\KMs&T,#r`K#"r`];*qcs,+s'GS0ra>_6s'bufq;D>5p<E6Rm)oCO
+r6#(\rc@mWrH8$]o695>ms"SNp3#87icWssrH8'^r-/0crd"Khs*Ocnrd=frJ,Xs!JV*lR=bMK`
+L51SAM2I4MN/`mZOHG]hPa.N"Q^F20S"-%@T:hmPUSO``Vl6SpX/rG+YHY:;Za@-K\%&u[]=bhk
+^V@V%_Sa=2`Q-'@ai_fMbg"GYcd0tcdF-MCe,n1Of)F8&f\+sWgAfq-h#6(/hZ)L2i;_d8ir%j9
+jT"?=k5XWDkks]ElMp2Jm/HDPmelPQnGi%Vo)A7\o_\=]pAXg`q#:*fqYL*er;?N_rdk+&s*t~>
+JcC<$JcGHDoD\^erVZTjs8)`jrqQNfs7ZHbJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI]iS`YO
+hVHuAg=k32f@JI$e'cXjcd'eZbK@rJaMu3<_ns:,^V@Lq]Xt_b\@/iR['R'CYck43XK/A#W2HMh
+UnaZXTV%gHS=>t8R$X,(P`q8mOH5E]N/WXNM26n@KnP)1JcC6@IsufoH[:!`G^"@TF`__HEcH)<
+Df0H0D/=!'C2*Z\'k_,iARo:\@U`bR?sd8I?!U]?>?b;1=TV],=8l5%<E)rs;Z]io;>j>k:]F2g
+:&dod9DhE\U\pk[I.M^UHKKM762dY\Vt-_TL\?JWL\jL:7JfRN7f]C`V?!IgVZ!CmW;)VPPP:79
+PPCC6PQ+\_=8l=u=oMV(>Ph\)?2n7.?iFI4@K0d<Wi;uoWpH/QR/<<LR.m!KR/E?PErL.UFT$@[
+G4Tq<GjfkPG4p(9FQ.GsFT$@\G5QRaGlE!fHN/?lI/\NpIXh?I!J,k%K3<k]L5(J>M2@+JN/WaW
+O-#KeP*D5sQC!u,R[]h<StD[LU8+N\VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%G!_SX4/`Pom=
+aN;TJbKS5VcHjh`dF$CkrmV#"f%0iP!nc2Zrn@D,s4mS/s5*e5r8@V6ro3k9roF+@qr[qAroj:E
+rp'OLr9XFMs6fgRrp]sXr:9jYs7H3]s7ZHdqtU0drVHBfr;?KknG\"=g&HR~>
+JcC<$JcGHDoD\^erVZTjs8)`jrqQNfs7ZHbJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI]iS`YO
+hVHuAg=k32f@JI$e'cXjcd'eZbK@rJaMu3<_ns:,^V@Lq]Xt_b\@/iR['R'CYck43XK/A#W2HMh
+UnaZXTV%gHS=>t8R$X,(P`q8mOH5E]N/WXNM26n@KnP)1JcC6@IsufoH[:!`G^"@TF`__HEcH)<
+Df0H0D/=!'C2*Z\'k_,iARo:\@U`bR?sd8I?!U]?>?b;1=TV],=8l5%<E)rs;Z]io;>j>k:]F2g
+:&dod9DhE\<W#hL7cm/$61.\P<P_3+8c(pQ7JfRN8,H<X<8C=G:[q3[<rQ2"=Sc2">5hb'>lJ%/
+?Me+/@/aU7@ej70?!d/%iD]eUr)<Z:rc@mWrH8$]o695>ms"SNp3#87icWssrH8'^r-/0crd"Kh
+s*Ocnrd=frJ,Xs!JV*lR=bMK`L51SAM2I4MN/`mZOHG]hPa.N"Q^F20S"-%@T:hmPUSO``Vl6Sp
+X/rG+YHY:;Za@-K\%&u[]=bhk^V@V%_Sa=2`Q-'@ai_fMbg"GYcd0tcdF-MCe,n1Of)F8&f\+sW
+gAfq-h#6(/hZ)L2i;_d8ir%j9jT"?=k5XWDkks]ElMp2Jm/HDPmelPQnGi%Vo)A7\o_\=]pAXg`
+q#:*fqYL*er;?N_rdk+&s*t~>
+JcC<$JcGHDoD\^erVZTjs8)`jrV-Hgp@eLY!qc*UrpkO.nF,i6md9B-lg!a!ki_*jjlGI^iS`YO
+hVI#Bg=k64f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[T#U['R*EYct=5XfSP&WMcYk
+UnjcZTqJ$LSXc1<R@'>,Q'@JqOcYWaNJrgRM2@%CL4t;5Jq8H&It%EG,("W^H$FOWG'.nKF)l8?
+E,TW3D/F*)CMIQsBP1siAS#C^raGn:@/aL6?=!P8#?tA8=]nj/=8l8#<<-"t;u]bq;>sDl:]F2f
+:&doe9DqK[hYl?WU\U_]UZ=]BjQ5Lrk5OQ*[HFpoZhq'+7/KFM7eoRNjo4?>jT+HAjT4MbrQ"`T
+rQ5#ZqT8WWqT8WUqT&NRrE&u#qcWo%r`f8)ra#M0r*TG2raGb7s5Nn6!93[rn]^UJq8rc^F*%/!
+rH8$]olp"PqK_XVn9=\OpN>85j`TC$qfVm]qfi'brd"Khs*OcnrdAL0It*!!JUrE*K7nr5L51S@
+M2I4MN/`jYO-#KePE_>tQ^F/.S"#q>StD[LU84T]Vl-JnWiN8(Y->.9Za7'J[^WfX]"G\h^;%J"
+_SX71`Q#s>aN;TJbfn>WcHjkbdF-LmeC<%"f)F8&f\+sWgAfn-h#6(/hZ)L2i;_d8ir%j9jT"?=
+k5OQDkkjWElMg,Im/HDPmelPQnGi%Vo)A7[o_eC]pAamaq#1$fqYC$er;6H^rdk+&s*t~>
+JcC<$JcGHDoD\^erVZTjs8)`jrV-Hgp@eLY!qc*UrpkO.nF,i6md9B-lg!a!ki_*jjlGI^iS`YO
+hVI#Bg=k64f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[T#U['R*EYct=5XfSP&WMcYk
+UnjcZTqJ$LSXc1<R@'>,Q'@JqOcYWaNJrgRM2@%CL4t;5Jq8H&It%EG,("W^H$FOWG'.nKF)l8?
+E,TW3D/F*)CMIQsBP1siAS#C^raGn:@/aL6?=!P8#?tA8=]nj/=8l8#<<-"t;u]bq;>sDl:]F2f
+:&doe9DqKWU[EO&HhD^\H1?4A5m!m[VYR.eV?!O_LXCkS7/KFM7eoRKVZNfpVu3LnWVht\Q26aB
+PPC=:POFb6PPnS^=Sl8#>5hb'>lJ%.?Mn10@/aU5@fEA'WpZ;MR/WNLR/WNLQi`[sF89qVFo6FU
+GOp(UH1H4LGPQFVFkh*#Fkq0:FoHR]GQ2peH2`-iHiJKmI;+.[It3'#JV&N,KS>/8LPUbCMMmFP
+NK0'\OHG]iPa.N#R$a;2S"-(AT:hmPUnjibVl6VqX0&M,YctF>ZaI6M\%0&\]Y(ql^VI\&_SjF4
+`lH0Aai_fNbg"GYcd:(edaQ[peCE.$rmq5(g"HAYs4[P/rS@M1s53b4s5Et:r8[e;s5j.?roa=F
+qs".Grp0LKrpBaRr9sXSs7-$Xrq$-]r:U'_s7cEcrV?Hhq>:-gqu-$`JcFF'J,~>
+JcC<$JcGHDoD\^erVZTjs8)`jrV-Hgp@eLY!qc*UrpkO.nF,i6md9B-lg!a!ki_*jjlGI^iS`YO
+hVI#Bg=k64f@JL%e'cXkcd'h\bKJ&LaN)<>`5BI.^q[Us]Xtbc\[T#U['R*EYct=5XfSP&WMcYk
+UnjcZTqJ$LSXc1<R@'>,Q'@JqOcYWaNJrgRM2@%CL4t;5Jq8H&It%EG,("W^H$FOWG'.nKF)l8?
+E,TW3D/F*)CMIQsBP1siAS#C^raGn:@/aL6?=!P8#?tA8=]nj/=8l8#<<-"t;u]bq;>sDl:]F2f
+:&doe9DqKW<V]/b7f>j<7eoLG7f>d:5lt%c<;onk;ufq58GkmQ7JfRM8+0FW<TR!P:B4/d:\RTa
+:]*ud=8l>!=oMV(>Ph\)?2e1.?iFI4@Js[4>lJ"/?LUnW<;BGo<-*-VFT$@[G4g(NGku^VGjoqQ
+G5$.7FQIZ$FSg4[G5HL`GlE!fHN/?lI/\P.IXcitJ:W9'K7ei2L5(J>Ll%"IN/WaVO,oBbP*;,q
+Q'[l*R@B\9St;RITq\?YV5L5iWiE,%Xfen4ZEpmF[^NZU\[oGd]tV7s_8=(-`Poj;aN2KGbKS2T
+cHab_dF$Cke'umtf%0iP!nc2Zrn@D,!8RP/s5*e5r8@V6ro3k9roF+@qr[n@s60@Es6BULr9XFM
+s6fgRrp]sXr:9jYrq--]rq?BdqtU-crqcHfrVZQknG\"=g&HR~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpkR/nF,i6md9B-lg!a!ki_*jjlGI^io&bP
+hVI#Cg=k64f@JL%eC2gmd*L"^bfe/NaN2B?`P]R0_8!b!]tCtg\[],W[C!9GZ*:I8Xf\Y(Wi2hn
+VPL#_TqS-NSt2@?R[BJ/Q'IStP*(ieNfB!UMM[1GL5(D8K7\Z)J:E%JI1UaOH?jaZGBS+NFE;JB
+EH#jqDA-l'CMR[!BP;$kAn>Oa@q/tW@:9(A!FB(2>R+J:>$5!1=BGK&s&B%ur_rhps&&bls%iYi
+r([2br_*8`ptte@h4sP:r1i:<ro=%>roO"=roa0elF#c]qm6:-r'^BMqaUBOrT3q=s5sXLkND'l
+kNM.-a8j?YaSO$Vb5TNZb4<[OaSs6[=8l>!=oMV(>Ph\)?2e1.?iFI4@JjU7@fYNciW%p0c0rmO
+bP'*TFSp:[G4p.TGj9SKGk-(SG5$.3FR"#*FSg4ZG5HL`GlE!eH3/G@I/\QoIK4lsJ,t4Qre"O1
+Knb>;Ll$tGMi<USNfT9aP*2#nQ'Rc(R$sM6SXuFGTqS6WUo(&fWN)u"Xf\e2Z*L^C[C3QS\[f>b
+]Y;.q^r!t+`5T^9aN2KGbKJ,ScHab_dF$Cje'umtf%0iP!SH*(g&g$ah#6(/hZ)L3i;_d8ir%j9
+jT"?=k5OQDkkjWDlMp2Im/QJPmelPQnGi%Vo)A7[o_eC]pAXg`q#:*gqYC$dr;?N_rdk+%s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpkR/nF,i6md9B-lg!a!ki_*jjlGI^io&bP
+hVI#Cg=k64f@JL%eC2gmd*L"^bfe/NaN2B?`P]R0_8!b!]tCtg\[],W[C!9GZ*:I8Xf\Y(Wi2hn
+VPL#_TqS-NSt2@?R[BJ/Q'IStP*(ieNfB!UMM[1GL5(D8K7\Z)J:E%JI1UaOH?jaZGBS+NFE;JB
+EH#jqDA-l'CMR[!BP;$kAn>Oa@q/tW@:9(A!FB(2>R+J:>$5!1=BGK&s&B%ur_rhps&&bls%iYi
+r([2br_*8`pnR/&o6]JCj$E[@r20Ikr20LlqhXj!e;!lhqF19Nq+(C]r2BRnqPsCWpltQ;rfZi9
+nWa&Tr`K&#r`];*qcs,+ra,M0ra>_6r*o\9!3,donX8s8!1E8BqK2XXrH@mYpiu(LpNZ7Qq0)LT
+fQ?D$hK8X;rHA'^s*4NgrH\NlI!kpAs*artrdY$#K)UC/KS>/8LPUeDMMmFPNK0']OcklkPa.Q$
+R$a>3S"6.BTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K/^]Y(tn^VI_'_o0O5a2l?Db0.uPc-FV\
+d*^7hdaQ^qe^i=Nf)aOWrRq>-gt_kas5*e5rS[_7ro3k9roF+@qr[n@s60@Erp'OLqs=@MrpK^Q
+rp]sXr:9jYrq--]rq??cqtU0drqcHfr;?KknG\"=f`-I~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpkR/nF,i6md9B-lg!a!ki_*jjlGI^io&bP
+hVI#Cg=k64f@JL%eC2gmd*L"^bfe/NaN2B?`P]R0_8!b!]tCtg\[],W[C!9GZ*:I8Xf\Y(Wi2hn
+VPL#_TqS-NSt2@?R[BJ/Q'IStP*(ieNfB!UMM[1GL5(D8K7\Z)J:E%JI1UaOH?jaZGBS+NFE;JB
+EH#jqDA-l'CMR[!BP;$kAn>Oa@q/tW@:9(A!FB(2>R+J:>$5!1=BGK&s&B%ur_rhps&&bls%iYi
+r([2br_*8`pf75_oLI:u!(Gp6r`/ksqGdSr<E8ofcUdh$r'^BMqaUBOnPoHej\GVImS<^Vs&]2%
+qcWo%r`f8)ra#M0r*TG2raG_6s'u%5rE]G0m8NCOp/Cg0r,qs]p36:Vl?W,KnosnQpN>,1l?1s*
+qfVj\qfi'brd"Hg!df<BrdFfq!.Xuu!J,k%K3j4bL5(J>M2@+JN/WaVO-#KeP*;,qQC!u+R[]e;
+St;UKTqeEZVPg>kWiE/&Xfnt6ZEppG[^WcW\\#Me^;%Fu_SX4/`Pom=aN;TJbKS5VcHjkbdF-Il
+eC<%"f)F8%f\-5W!o)McrS@M1s53e5s5Et:r8[e;s5j.?roa=Fqs"+Fs6KRKs6]gRr9sXSs7-$X
+rq$-]r:U'_rqH<brqZQiq>:*fr;H-aJcFC&J,~>
+JcC<$JcGHDoD\^erquZjs8)`jrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg!a!ki_*jjlGI^io/hQ
+hVI#CgY1?5f@SU'eC2jnd*L"_bfe2PaN2EA`Pf[2_8*h#]tD"i\[f5Y[^EKKZE^X;Y-"e+Wi;qp
+Vkp2bU7n9QSt;IAS!o_3Q^*i#P*1rhO,f3YMi*@JLPCP;KS+l-J:N,uI=6MCH4>.EGB\4QFEDSE
+EH,r9rb`3_Chmg$BkV0mB4b^dA7PUJ!F]C8?NFJ=r`f\4>$>'3=BJZ(<rZ/"<;ohr;ZBVn;#a>k
+:Adid9`@Zd9&AG$ht3`.UZ\HQU]3[A62]^Bj8J';jo+?;[d(9t[-Y-qZM[,f7JfRK8,VQJkQgA9
+l07Kul08)dq8iWZqoSBNo?%$TqoJiZr`K#"r`]>+qcs,+ra,J/s'Yh7qdTS8s((rao?HXGr6+fV
+qfMdZrH@mYq0:tGpiuCSq0)OUf6$8"j)k-?rHA$]s*4NgrH\NlI!kpAs*artrd\.&JqAW-KS>/8
+LPL\BM2I4MNK0'\OHG]hPa.N"Q^F20S"-%@T:hmPUSO``Vl6SpX/rG+YHY:;Za@-K\%&u[]=bhk
+^VI\&_Sa@3`lH0Aai_fNc-FV\d/MDsdaQ^qe^`7Mf)aOWrn@D,s4mV0s5*e5rS[\6s5Nt:roF+@
+qr[n@roj:Erp'LKr9XFMrpK^Qrp]sXqssdYrq--]rq??cqtU0drVHBfr;?HjnG\"=f`-I~>
+JcC<$JcGHDoD\^erquZjs8)`jrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg!a!ki_*jjlGI^io/hQ
+hVI#CgY1?5f@SU'eC2jnd*L"_bfe2PaN2EA`Pf[2_8*h#]tD"i\[f5Y[^EKKZE^X;Y-"e+Wi;qp
+Vkp2bU7n9QSt;IAS!o_3Q^*i#P*1rhO,f3YMi*@JLPCP;KS+l-J:N,uI=6MCH4>.EGB\4QFEDSE
+EH,r9rb`3_Chmg$BkV0mB4b^dA7PUJ!F]C8?NFJ=r`f\4>$>'3=BJZ(<rZ/"<;ohr;ZBVn;#a>k
+:Adid9`@Zd8tr'VU[W[%HN8BhHgZ4UHiHFn62[SOVYQ&>LXq4X7/KFM7e]FOW;W^mWr9!hQ2?g2
+PPUODQ26aE=Sc2">5qh(>lJ%.?Me+0@/aU3@fKs<AGN7tRG4,+FT$@\G4p.UGiX/FGk6.TG5-43
+FQmr.FS^.YG5?F_GlE!eH3/G@I/\QoIK4lsJ6@GTJqJ]/Knb>;LPUeDMMmFQNfT6_OckllQ'IZ%
+R$jD4S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['d?O\@K2_]Y2%o^qmn)_o9U7a2l?Db0/#RcHab_
+rm:que'umte^j`O!SH*)gAfq-h#?.0hZ)L3i;V^8ir%j9jT"?=k5OQCkks]ElMg,Im/HDOmelPQ
+nGi%Uo)J=\o_eC]pAXg`q#:*fqYL*er;6H^rdk+%s*t~>
+JcC<$JcGHDoD\^erquZjs8)`jrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg!a!ki_*jjlGI^io/hQ
+hVI#CgY1?5f@SU'eC2jnd*L"_bfe2PaN2EA`Pf[2_8*h#]tD"i\[f5Y[^EKKZE^X;Y-"e+Wi;qp
+Vkp2bU7n9QSt;IAS!o_3Q^*i#P*1rhO,f3YMi*@JLPCP;KS+l-J:N,uI=6MCH4>.EGB\4QFEDSE
+EH,r9rb`3_Chmg$BkV0mB4b^dA7PUJ!F]C8?NFJ=r`f\4>$>'3=BJZ(<rZ/"<;ohr;ZBVn;#a>k
+:Adid9`@Zd8lSdd<Vf8\8'ja*6KCH1<V0>f8^Bs)7fZ$V7/KFM7e]FE<;fh`:Amo^:B+,W:Amuf
+=Sc2">5qh(>lJ%.?Me+0@/aU3@fKs<AGKNq;tO&\;u:\8Fo?LWGPQLEH2)XUGPQFWFk:a"FlRT?
+Fo?L[GQ2peH2W$jH[L5?IK+`rJ,Xt$JV&K+K7nr5L51P?M2@+JN/`jYO-#KeP*D5sQC!u,R[]h<
+StD[LU8+N\VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%J"_SX40`Q#s>aN;TJbg"GYcd;[=#1CuM
+eCE+#rmq2'g&B_*g]-(.h>c@3hu2L4iW%p8j8S->jnn3>kPj]Cl2KuIlhp,KmJcPOn,DhVnb_nW
+oD\C[p&=[ap\Xabq>L0dqu$BhrUBf;s4I@%~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m+md9B-lg!a!ki_*jjlGI^io/hR
+hqm2EgY1B7f@SU(eC2jndEp1ac-4ARaiMQC`Pod4_SO%&^:h1k]",A\[^NTMZa-g>YHG"/X/`.t
+Vl$;dUS=HTT:VXES"#h5R$O#&P`h2lO,o<\N/NRMM2-h?KnP)1JUi9#IXQWks*>-"G^"@TF`__H
+EcH)<DuOVaD/=!'C2%?pB4kgfARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`0)#<)iiqs&/kor_WVj
+s%`Jds%NDbq;:_<m%aKSm\TfVr^,^4r8@V6s5F%=roF"=l*gApqm?=.m'?OWqaLBOpI>3SrTO1D
+qW\+IlM\j)aSEsBb4NgOb5PN?=oMV(>Ph\*?2e1-?iFI5@JaO5A,g'?A`E^J!T;u:iUkCZbl#Z[
+b5HG\Fo?LXGPZR@H22^WGPQFWFjtO!Fm!lBFo6FZGQ2peH2W'hHN8HlI:I_UIt3'#JV&N,KS5&6
+L51SAM2I4MN/`jYO-#KePE_>tQ^F/.S"#q=StD[LU8+N\VPgAlWiN5'Y->.8Za7$I[^WfX]"G\h
+^;%J"_Sa=2`Q$!?ai_fMbg"GYcd:(edaS3F!S,d#f)aOWrn@D,!8RP/s5*e5rS[_7s5Nt:roF+@
+qr[n@roj:Erp'LKqs==Ls6fdQs7$$Xr:9jYrq--]rq??cqtU-crqcHfr;?KknG\"=fDg@~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m+md9B-lg!a!ki_*jjlGI^io/hR
+hqm2EgY1B7f@SU(eC2jndEp1ac-4ARaiMQC`Pod4_SO%&^:h1k]",A\[^NTMZa-g>YHG"/X/`.t
+Vl$;dUS=HTT:VXES"#h5R$O#&P`h2lO,o<\N/NRMM2-h?KnP)1JUi9#IXQWks*>-"G^"@TF`__H
+EcH)<DuOVaD/=!'C2%?pB4kgfARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`0)#<)iiqs&/kor_WVj
+s%`Jds%NDbq4mM.m<ekZj*Ublj[&g>rhTIgr20"?q1mXXr'^ENqaU<M!(d'fql9Oo!N`@#QLL1>
+PjFV1PkgUD=Sl8#>5hb'>lS+/?Me+/@/j[4@fBm;A-$8Ar2Tn!X/kfZhO+7`rH8'^pNQIYhKepA
+oQU+SpiY).lZMB4q/uUYqKMsard"Hgs*F`nrI&1)It*!!JUrE*K7no3L5(J>M2@+JN/WaVO,oBb
+P*;,qQ'[l*R@B\9SXuIHTq\<XV5C/hWN*##Xfen4Z*UdD[^NZU\[oGd]tV7s_8=+.`Poj<aN;TJ
+bKS5VcHjkbdF-MCe,e+Nrmq2'g&B_*gAp%-h>c@3hu2L5iW%p8j8S->jnn3>kPj]Cl2KuIlhg&J
+mJlVOn,MnVnbhtWoD\C[p&=[ap\Xaaq>U6dqu$BirUBf;s4@:$~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m+md9B-lg!a!ki_*jjlGI^io/hR
+hqm2EgY1B7f@SU(eC2jndEp1ac-4ARaiMQC`Pod4_SO%&^:h1k]",A\[^NTMZa-g>YHG"/X/`.t
+Vl$;dUS=HTT:VXES"#h5R$O#&P`h2lO,o<\N/NRMM2-h?KnP)1JUi9#IXQWks*>-"G^"@TF`__H
+EcH)<DuOVaD/=!'C2%?pB4kgfARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`0)#<)iiqs&/kor_WVj
+s%`Jds%NDbq,QiQd74+%j[&oHr)EYqq,Z`OhFRQ7r'^ENqaU<M!(d&frD`hsqGmPrrCucVohGE\
+qb?QTr`K&#r`];*qcs/,ra,J/ra>b7qdTP7s'u+@rETG/?2e*l;ta2_;uLh:Fo?LXGPZR@H22^W
+GPQFWFjtO!Fm!lBFo6FZGQ2peH2W'hHN8HlI:I_UIt3'#JV&N,KS5&6L51SAM2I4MN/`jYO-#Ke
+PE_>tQ^F/.S"#q=StD[LU8+N\VPgAlWiN5'Y->.8Za7$I[^WfX]"G\h^;%J"_Sa=2`Q$!?ai_fM
+bg"GYcd:(edaS3F!S,d#f)aOWrn@D,!8RP/s5*e5rS[_7s5Nt:roF+@qr[n@roj:Erp'LKqs==L
+s6fdQs7$$Xr:9jYrq--]rq??cqtU-crqcHfr;?KknG\"=fDg@~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_k[md9B-lg"K6J*?(Xk2kX`io/hR
+hqm2FgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`l5m6_SX+'^V7@n]=PP_\$i]OZa6p@Yck12XK/A#
+W2HMhUnaZXTV%gHS=?"9R$a2)Q'7AoOcPQ`NJrdQM2@"BL4t;5Jq8H&IsufoH[:!`G^"@TFoQP"
+F)l8?E,TW3D/F*)CMIQsBP1phAS#C^raGn:@/aL6?=!P8!F&b,=TV],=8l5%<E)rs;u]_q;>j>k
+:]F2f:&doe9DRK6V#-qWV!=fUV#3RA62f[?hu;R5iVha9j5[TE[JdK1ZgP-t7/KFM7eT=R8EoC5
+lMKoEb506Cb4WmPaoGQ@=oMV(>Ph\)?2e1.?iFI4@JjU6A,g*<AHLiKi;MU7iq(Fbbl#``bkoT^
+b5ZS_Fo6FXGPZRYH1$"PH2;dXGPZLXFjkHpFn9_KFo-@YGQ)jeH2N!gHN8HlI0+kIJ,Xs!JV*lR
+?%dodL51S@M2@+JN/WaWO-#KeP*;,qQC!u+R[]e:St;RJTq\?YV5L5iWiE,%Xfen4ZEpmF[^N]V
+\\#Me^;%Fu_SX4/`Q#s>aN;TJbg"GYcd:(edaHUoeCE.Lf)aOWrn@D,!8RP/!oDhlrS[_7s5Nt:
+roF+@qr[n@roj:Erp'LKqs==LrpK^Qrp]pWr:9jYrq--]rq??cqY:'crqcHfr;?HjnG\"=fDg@~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_k[md9B-lg"K6J*?(Xk2kX`io/hR
+hqm2FgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`l5m6_SX+'^V7@n]=PP_\$i]OZa6p@Yck12XK/A#
+W2HMhUnaZXTV%gHS=?"9R$a2)Q'7AoOcPQ`NJrdQM2@"BL4t;5Jq8H&IsufoH[:!`G^"@TFoQP"
+F)l8?E,TW3D/F*)CMIQsBP1phAS#C^raGn:@/aL6?=!P8!F&b,=TV],=8l5%<E)rs;u]_q;>j>k
+:]F2f:&doe9DP@OI-u@\HKTYQ6KUT6UApqbUAUedU]@7ZLt.:\LAaO;7JfRJ7fl5]Wr&jsWr9!s
+XSeCSQ1gI8PPUO>PlOq`=oMV(>Ph\)?2e1.?iFI4@JjU6A,g*<AbiCpRI-@AQhQmIFT-F\G5-:X
+GkZLOHM2X\Gk?4VG5-4/FQR`;FS9kSG5?F^GlN'eHN/<lI/SHpIXckHJ,t4Qre"L0Knb>;LkpnE
+MMmFPNK9-^OcklkPa.Q$R$a>3S"-(AT:qsQUnjibVl6VqX0&M,YctF>ZaI6M\@K/^]Y(tn^VI_'
+_o0O6a2l?Db0/#RcHab_dF$Cje'umtf)F8%f\-8Xs4[P/rS7P3hr"Cjs5F";r8[e;s5j.?roa:E
+r9=4Grp0IJrpB^Qr9sXSrpfpWrq$-]r:U'_rqH9arqZQiq>:*fqu-$`JcF@%J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_k[md9B-lg"K6J*?(Xk2kX`io/hR
+hqm2FgY1B7f[n^)eC;sqdEp4bcHOJTb/hZE`l5m6_SX+'^V7@n]=PP_\$i]OZa6p@Yck12XK/A#
+W2HMhUnaZXTV%gHS=?"9R$a2)Q'7AoOcPQ`NJrdQM2@"BL4t;5Jq8H&IsufoH[:!`G^"@TFoQP"
+F)l8?E,TW3D/F*)CMIQsBP1phAS#C^raGn:@/aL6?=!P8!F&b,=TV],=8l5%<E)rs;u]_q;>j>k
+:]F2f:&doe9)qrg<<-(i8*NMB8*WSA6KUT6<VKJk<<-(T8`rYE8,YjQ7JfRJ7fl4]<Vohr<Vfbh
+:&%KD:&.Na=Sl8#>5hb'>lJ%.?Mn10@/aU4@fBm;AGp'@?!LV4>QA'j;ta2b;u^t=Fo6FXGPZRY
+H1$"PH2;dXGPZLXFjkHpFn9_KFo-@YGQ)jeH2N!gHN8HlI0+kIJ,Xs!JV*lR?%dodL51S@M2@+J
+N/WaWO-#KeP*;,qQC!u+R[]e:St;RJTq\?YV5L5iWiE,%Xfen4ZEpmF[^N]V\\#Me^;%Fu_SX4/
+`Q#s>aN;TJbg"GYcd:(edaHUoeCE.Lf)aOWrn@D,!8RP/!oDhlrS[_7s5Nt:roF+@qr[n@roj:E
+rp'LKqs==LrpK^Qrp]pWr:9jYrq--]rq??cqY:'crqcHfr;?HjnG\"=fDg@~>
+JcC<$JcGHDoD\^erquZjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg*j#l0.<mk2k[aj5JqS
+hqm2FgtUQ9f[na+e^W'rdF$:ccHXSVb/q`G`l5p8_ns7*^V@Ip]Xt_b\@8oS['R'CYct:4XfSP&
+WMl_lV50l\TqJ$LSXc1<R@'A-Q'IPrP*(fdNfB!UMM[1FL5(D8K7\Z)J:E%JI1UdPH?jaZGBS+N
+FE;JBEH#jqD@UN"CMR[!BP;$jAn>OaA,]pA@:3GL?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\k
+s%iYir([/aqVV1GpSHuIr2'%]rM9LiqEjC3rnIG-s5!V0!8me6iO8TjppBn(pp0idqF1<Op.,*Q
+q<S(GqWe.*qodp?p<!-QqcWr&r`f8)ra#M0qd9A2raG\5s'u%=r+5lcs5Et:o$-gNpW`TZr6#)_
+rH8'^pilU[q0D+Kpj)^\oQU1Uq/su)drkP2q02g_s*=Ngs*F`nrI"`rIt.HJ@Y',_K7ei2Knb>;
+Ll$tGMi<USNfT6_OckllQ'IZ%R$jD4S=Q7CTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K2_]Y2%o
+^qmn)`5T^8a2lBFbKJ,ScHab_dF$CkeC<%"rmqD-g"G*5gY:N_h>c@3hu2L5iW%p9j8S->jnn3>
+kPj]Bl2KuIlhg&JmJlVOn,DhUnbhtWoD\CZp&=[ap\Xabq>L0cqu$BirU9`:s4@:$~>
+JcC<$JcGHDoD\^erquZjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg*j#l0.<mk2k[aj5JqS
+hqm2FgtUQ9f[na+e^W'rdF$:ccHXSVb/q`G`l5p8_ns7*^V@Ip]Xt_b\@8oS['R'CYct:4XfSP&
+WMl_lV50l\TqJ$LSXc1<R@'A-Q'IPrP*(fdNfB!UMM[1FL5(D8K7\Z)J:E%JI1UdPH?jaZGBS+N
+FE;JBEH#jqD@UN"CMR[!BP;$jAn>OaA,]pA@:3GL?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\k
+s%iYir([/aqP3q8q0i'dmsG"Zl?i@okX#*=q4[h_!2Jq;eVF)kqF1<Op.,*QrN#murN#jtqj-f<
+mZd[6qNUf@qcWr&r`f8)ra#M0qd9A2raG\5s'u%=r+5])l^@4/rKmDKrH8'^pilU[q0D+Kpj)^\
+oQU1Uq/su)drkP2q02g_s*=Ngs*F`nrI"`rIt.HJ@Y',_K7ei2Knb>;Ll$tGMi<USNfT6_Ockll
+Q'IZ%R$jD4S=Q7CTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K2_]Y2%o^qmn)`5T^8a2lBFbKJ,S
+cHab_dF$CkeC<%"rmqD-g"G*5gY:N_h>c@3hu2L5iW%p9j8S->jnn3>kPj]Bl2KuIlhg&JmJlVO
+n,DhUnbhtWoD\CZp&=[ap\Xabq>L0cqu$BirU9`:s4@:$~>
+JcC<$JcGHDoD\^erquZjrqcZjrV-Hgp@eLYs7?<_rpg*[nG_m*md9B-lg*j#l0.<mk2k[aj5JqS
+hqm2FgtUQ9f[na+e^W'rdF$:ccHXSVb/q`G`l5p8_ns7*^V@Ip]Xt_b\@8oS['R'CYct:4XfSP&
+WMl_lV50l\TqJ$LSXc1<R@'A-Q'IPrP*(fdNfB!UMM[1FL5(D8K7\Z)J:E%JI1UdPH?jaZGBS+N
+FE;JBEH#jqD@UN"CMR[!BP;$jAn>OaA,]pA@:3GL?=$q:>QJ&4r`K;)=',B%!``3!r_rhp!)`\k
+s%iYir([/ar`&hrm76D1s$uEFqEjC3o2P]hg.CL!rC$KNr'pBMr^cugrE&bpoM,-Vj%]>EqcWr&
+r`f8)ra#M0qd9A2raG\5s'u%=r+5k3s',V2?=)Pgp/LofrH8'^pilU[q0D+Kpj)^\oQU1Uq/su)
+drkP2q02g_s*=Ngs*F`nrI"`rIt.HJ@Y',_K7ei2Knb>;Ll$tGMi<USNfT6_OckllQ'IZ%R$jD4
+S=Q7CTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K2_]Y2%o^qmn)`5T^8a2lBFbKJ,ScHab_dF$Ck
+eC<%"rmqD-g"G*5gY:N_h>c@3hu2L5iW%p9j8S->jnn3>kPj]Bl2KuIlhg&JmJlVOn,DhUnbhtW
+oD\CZp&=[ap\Xabq>L0cqu$BirU9`:s4@:$~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?Ebs7?<_rpg9`nF5o8md:#?J*ZCal0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p-e^W*tdF$=ecHXSVbK@rJa2Z*;_ns:,^q[Us]Xtbc\[])V[C!9GZ*:F7Xf\Y(
+Wi;noVPL#_U7n6PSt2C@R[KP0QBd`!P*1rgO,f3YMi*@ILPCP;KS+l-J:N,uI=6KhH4>.EGB\4Q
+FEDSEEH,r9rb``nChmg$BkV0mAnGUcA7K(X@:<PN?X@&E>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm
+;#a>k:Adid9`!Z8V:).>V>*CA62oR:gA'G&gu,X.[JdK3Zi.3.7/KFM7e]FO8GqiIlhJ]ubQ#`]
+bO`mOana*X=oMV(>Ph\)?2e1.?iFI4@JjU6A,g*:AcHBBhuMa7ipk:abkB<Zbl>ifb&qk*G5-:Z
+GklXDHMMj_GkH:XG56:*FOt[3G56@]GlE!dHN/?lI/\QoIK4lsJH(0,JqJ]/KS>/8LPYqd:Pt'h
+N/`jYOHG]hPE_>tQ^F/.R[]h<StD[LU8+N\VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%J"_Sa=2
+`Q-'@ai_fMc-FV\d*^7he,Ii)e^i@(f\+s3g=tB;rn[V2s53h6s5F";r8[h<s5j.?roa=Fqs"+F
+rTj@IrpB^QqsXRSrpfmVrq$-]qt9s^rqH<brqZNhq>:*fqu-$`JcF=$J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?Ebs7?<_rpg9`nF5o8md:#?J*ZCal0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p-e^W*tdF$=ecHXSVbK@rJa2Z*;_ns:,^q[Us]Xtbc\[])V[C!9GZ*:F7Xf\Y(
+Wi;noVPL#_U7n6PSt2C@R[KP0QBd`!P*1rgO,f3YMi*@ILPCP;KS+l-J:N,uI=6KhH4>.EGB\4Q
+FEDSEEH,r9rb``nChmg$BkV0mAnGUcA7K(X@:<PN?X@&E>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm
+;#a>k:Adid9_tORIJJ9gHi8?OHN8Hg6Kpf*T^.EcL]'X<7JfRK8,Z!TXSo3sXSA+LQ0OV0Q2Okb
+>5hb'>lJ%.?Mn10@/aU4@fBm;AG]s<B)8RlRIQ[AQiEESQZ[HLG5-:ZGklXDHMMj_GkH:XG56:*
+FOt[3G56@]GlE!dHN/?lI/\QoIK4lsJH(0,JqJ]/KS>/8LPYqd:Pt'hN/`jYOHG]hPE_>tQ^F/.
+R[]h<StD[LU8+N\VPgAlWiN5'Y-5(7ZEppG[^WcW]">Vg^;%J"_Sa=2`Q-'@ai_fMc-FV\d*^7h
+e,Ii)e^i@(f\+s3g=tB;rn[V2s53h6s5F";r8[h<s5j.?roa=Fqs"+FrTj@IrpB^QqsXRSrpfmV
+rq$-]qt9s^rqH<brqZNhq>:*fqu-$`JcF=$J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?Ebs7?<_rpg9`nF5o8md:#?J*ZCal0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p-e^W*tdF$=ecHXSVbK@rJa2Z*;_ns:,^q[Us]Xtbc\[])V[C!9GZ*:F7Xf\Y(
+Wi;noVPL#_U7n6PSt2C@R[KP0QBd`!P*1rgO,f3YMi*@ILPCP;KS+l-J:N,uI=6KhH4>.EGB\4Q
+FEDSEEH,r9rb``nChmg$BkV0mAnGUcA7K(X@:<PN?X@&E>[1K;>5hY+=BAT'<WZ9#<;ohr;?0Sm
+;#a>k:Adid9`%ch<U**C7f#XD7ef=762=FZ<;TVo<74A88GYjT8GtsR7JfRK8,Z!R=8>nh:%D'E
+:&.Q_=oMV(>Ph\)?2e1.?iFI4@JjU6A,g*:AcHBB>6J2:?=.(=<8^^K<;ohrFo?LYGPl^]H/X)F
+H2;dYGPcRZFj5$[Fo$:WGQ)jdH2N!gHiJKmIK+`rJ,XuuJI-p\K7no3L5(J>reXF.Mi<USNfT9a
+P*2#nQ'I]'R$jD4S=Q7DTV8*TUnsrdW2ZetXKAY/Yd(L?['d?O\@K2_]Y2%o^qmn*`5T^9aN2KG
+bKJ/UcHjkbdF-MCe-jgXf@S[.g"P07gYDeas5*e5ro!h8s5Nt:s5a4Aqr[n@s60@Erp'IJqs==L
+rpK[Ps7$$XqssaXrq-*\rq??cqtU0drVH?er;?HjnG\"=f)L7~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI^io/hR
+hqm2FgtLK8f[na+eC;sqdF$:ccHXSVb/q`Ga2Z*:_ns:+^V@Lr]Xtbc\[T#U[Bm3FZ*:F7XfSS'
+Wi2hnV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f0XMi*@IL]<)WKnP)1JUi9#IXQWkH?sj]GB\4Q
+FEDSEEH,r9DJj<.Chmg$BkV0mB)Z?QA7K(X@:<PN?X@#D>[1K;>5hY*=BGK&s&B%urDW_o!)`\k
+s%iYir(R/bqqq%Bs/,[ie"l_)ks>7"rRq&$hR;j[r3ZC.r^?WPqaU<Mr($fZrTs4CnBC:Cqo\`V
+q9&\>r`]>+qcs,+ra,J/s'Yh7r*oY8rabq<ral.Cro*h8nBLIHp<<T]r6,(_pilX\qK^nCq0Dj^
+olp:VqK9u'gi`F9pil[]s*=Ngs*OcnrI+]p!.Xuus+(0%rdt6)L&Qg4LPUeDMMmFPNK0'\OHG]h
+PEhE!Q^F//S"#q>StD[LU8+N\VPgAlWiN5'Y->.8Za7$I[^WfX]"G\h^V@S$_Sa=2`lH0AaihlO
+c-FV\d*^7he'umtf%8O+f\-8X!ScE/h>c=3hu2L5iW%p9j8\3>jo"9?kPscCl2BoHlhg&JmJcPN
+n,DhUnb_nVoD\CZp&=[ap\Xaaq>U6cqu-HirU9`:s474#~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI^io/hR
+hqm2FgtLK8f[na+eC;sqdF$:ccHXSVb/q`Ga2Z*:_ns:+^V@Lr]Xtbc\[T#U[Bm3FZ*:F7XfSS'
+Wi2hnV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f0XMi*@IL]<)WKnP)1JUi9#IXQWkH?sj]GB\4Q
+FEDSEEH,r9DJj<.Chmg$BkV0mB)Z?QA7K(X@:<PN?X@#D>[1K;>5hY*=BGK&s&B%urDW_o!)`\k
+s%iYir(R/bqkNe3s*jinnU0ePomHL#ks=j4lA4)Jr^?WPqaU<Mr($fZpoF7m!135Am?R:-q3Cq^
+r`]>+qcs,+ra,J/s'Yh7r*oY8rabq<ral.CqQ&\FoU,E?rc\'\r-8'`h0SmBqfqdXqf_gYbB2N^
+q0)OWrHS?fr-JBis*Xcns*artrdb$"!.t3&!JH1+L0]RjM2@+JN/WaVO,oBbP*2#oQ'Rc(R$sM6
+S=Z=ETV8*TUnsrdW2ZetXKAY0Yd(O@['mEP\[f;a]Y2(p^r!t+`5Ta:aN2KHbKS5VcHjkbdF-Ln
+eCE.%f@\a/rn7D-h#?.0h>lI3i;_d9ir.p;jSn9=k5OQDkkjWClMg,Hm/HDOmecJPnG_tTo)A7[
+o_\=\pAXg`q#1$fqY9sdr;6H]rdk+#s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaJ+W@(o()>@nF,i6mHs9,lg!a!ki_*jjlGI^io/hR
+hqm2FgtLK8f[na+eC;sqdF$:ccHXSVb/q`Ga2Z*:_ns:+^V@Lr]Xtbc\[T#U[Bm3FZ*:F7XfSS'
+Wi2hnV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f0XMi*@IL]<)WKnP)1JUi9#IXQWkH?sj]GB\4Q
+FEDSEEH,r9DJj<.Chmg$BkV0mB)Z?QA7K(X@:<PN?X@#D>[1K;>5hY*=BGK&s&B%urDW_o!)`\k
+s%iYir(R5d<E8usnjh_0qa^0GpHn+1rD`Ggd7O4+pIG3NqaLBOpIG-P!(lreqH!5_kt^hEq+gol
+r`]>+qcs,+ra,J/s'Yh7r*oY8rabq<ralCJ>[:WA?=.+:<8^^P<;]\oG5-:ZGku^AHMMj`GkH:X
+G5?@)FPM$7G5-:[GlN'eHN/?lI/SKnIK4lsJH(0#K)UB'KSBD[?&+5mM2I4MN/`jYO-#KeP*;/r
+QC!u+R[]e:St;RITq\<XV5C/hWN*##Xfen4Z*UdD[^NZU\[oGd]t_=t_SX4/`Q#s>aN;WKbg"GY
+cd:(edaQ^qe^i@(f\"mVg&]s`rn[V2!8mb5s5F";rT!q=roO(?roa=Fqs"(Erp0IJrpB^QqsXOR
+rpfmVrq$-]qt9s^rqH<brV?Hhq"t$fqu-!_JcF=$J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaHh?q$o()>@nF,i6md9B-lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:f[na+e^W*sdF$=ecHaYWbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^<BIZE^X;Y-"e+
+WiE"qVkp2bUS4BSSt;LCS!ob4Q^3o$PEM)jO,o<[N%^*HM26qAL4t;5Jq8H&IsufoI!^0bG^"@T
+F`__HEcH)<Df0H0D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>$Co.!E`G&<rZ/"<;fbq;?0Sm
+;#a>j:Amoei;MR&VYd4@V"@">5lfL6fDXA$g&Kd][edE([K*`4[/NJj7JfRK8,PpX8HA/Vm.TcC
+bQ,oUbk'$Tb59<Wb5YWD>5hb'>lJ%.?Mn10@/aU4@fBm;AG]s<B)ZEFB]7t1ro<Lmm*,CPr65/`
+!-\-]r-8'`fm<O@qfqdXqf_gYb&lWcpNH:TrHS<er-JBis*Xcns*artrdb$"!.t3&!JH1+L'<?g
+M2@+Jresg9NfT9aP*2#nQ'IZ&R$jD4S=Q7CTV8'RUnjibVl6VqX0&M-YctF>ZaI6M\@K/^]Y(tn
+^VRe(_o9U7a2lBFbKJ,ScHjkbdF-LneCE.$f@S[.rn7D-h#?.0h>lI3i;_a9ir.p:jT"?>k5OQD
+kkjWDlM^&Gm/HDOmeZDOnG_tTo)A7[o_\=\pAXg_q#:*fqYC$dr;6H^rdk+"s*t~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaHh?q$o()>@nF,i6md9B-lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:f[na+e^W*sdF$=ecHaYWbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^<BIZE^X;Y-"e+
+WiE"qVkp2bUS4BSSt;LCS!ob4Q^3o$PEM)jO,o<[N%^*HM26qAL4t;5Jq8H&IsufoI!^0bG^"@T
+F`__HEcH)<Df0H0D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>$Co.!E`G&<rZ/"<;fbq;?0Sm
+;#a>j:AmoeV#@(WIe8'FI.Tbk62RANT]_."L\$?!L]0^=7JfRK8,PpX8boF_XT+XPQL0t7Pkp[F
+=oMV(>Ph\)?2e1.?iFI4@JjU6A,g*:AcHBAB)lWEX8]3ZRJ3*DQN24(GPl^^H.dN@H2DjZGPcR[
+FingcFn^(RGPudcH2N!gHiJKlIK+`rJ,XuuJH1<$K)pXZre:T3Ll$tGMuJZ7NK0']OcklkPa.N"
+R$a;1S"-%@StMdNU84T]Vl-JnWiN8(YHY7:Za7'J[^`lY]=bej^V@V%_Sa@3`lH0Bb0.uPc-FY^
+dF$CkeC<%"f%8O+g&B\+gYDeas5!b5rS[_7!93t;roF+@r9""As60@Erp'IJqs==LrpKXOrp]pW
+qssaXrq-*\rq??cqY:'crVH?er;?HjnG\"=ec1.~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ee!;?BaHh?q$o()>@nF,i6md9B-lg!a!ki_*jjlGI^io/hR
+hqm2FgtUQ:f[na+e^W*sdF$=ecHaYWbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^<BIZE^X;Y-"e+
+WiE"qVkp2bUS4BSSt;LCS!ob4Q^3o$PEM)jO,o<[N%^*HM26qAL4t;5Jq8H&IsufoI!^0bG^"@T
+F`__HEcH)<Df0H0D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>$Co.!E`G&<rZ/"<;fbq;?0Sm
+;#a>j:Amoe<rZ2"<:rfZ8+&kE7JfRP8+]:C6L-r5<;KP=8c)'T8,bpR7JfRK8,PpX8HDppr`K)"
+r)Nf!oM,0Wr(lcVq+^]\s&o>)r`f8)ra#M0r*TG2raG_6raYt=qdoe>rau4Era,V3!+>P#fM_cn
+pilX\qK^b?qg&'`olp:VqK9r&icY!=pNQR\rd"Efs*OcnrI+]p!.Xuus+(0%rdt6)L&Qf1LPUeD
+MMqIm</lp!OHG]hPE_>tQC+&-R[]h<St;UKTq\?YV5L5iWiE,%Xfnt5ZEpmF[^N]V\\#Me^;%G!
+_SX40`Q#s>ai_fMbg"GZd*^7he'umtf%/I)f\-8X!ScE/h>c=3hu2L5i;hm9j8S->jo"9?kPscC
+l2KuHlhg&JmJcPMn,DhUnb_nVoD\CZp&=[ap\O[aq>L0cqu$BhrUBf;s4.."~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ees7ZHb#P@WZo()>@nG_m+md9B-lg!d"l0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p.e^W*tda?IhcHa\YbKJ&LaN)<>`P]R0_8*h"]tD"i\[f5Z[^EKKZa-g>YHG"/
+X/`.tVl-AeUnXQVTUqaGS=>t8R$X,(P`q8nOH5H_N/W[PM26qAL4t;5Jq8H&+b+rhI=-BfH$FOW
+G'.nKF)l8?E,TW3D/F*)CMIQsBP1rVAI;sX@U`bR?sd8I?2e(6>?Y35=]ed-r`9&!!*&nqs&&ho
+rD<Mir_EGe!SuW3huM[6V=CGYV;%gG6hE_362B+2fDX>%[f*Vk[edE([f!Q57/B@M7eT@N8H)0\
+mJQ>Flho!%c0`aPbO<RR=oMV(>Pqb*?2e1-?iOO5@JjU6A,^$:Ac?<ABDuTEir%g:cLK0;bkZJ\
+Gl)d:HM`!bGkQ@YG5?@(FQ[f>G4p.YGlE!cHN/?lI/SKnIK4lsJH(0#K)UC>KS>,7L51S@M2@+J
+N/WaVO,oBbP*2#nQ'Rc(R$jD4S=Q7DTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K2_]Y2%o^qmn*
+`5T^9aN2KGbKS5VcHjkbdF-LneCE.%f@\d0g=k<:gtgfChV\:i!o`.urT!q=s5j1@roa=Fqs"+F
+rp0FIrpB^QqX=FQrpfmVrq$-]qXsj]rqH9arqZNhq>:*fqu-!_JcF:#J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ees7ZHb#P@WZo()>@nG_m+md9B-lg!d"l0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p.e^W*tda?IhcHa\YbKJ&LaN)<>`P]R0_8*h"]tD"i\[f5Z[^EKKZa-g>YHG"/
+X/`.tVl-AeUnXQVTUqaGS=>t8R$X,(P`q8nOH5H_N/W[PM26qAL4t;5Jq8H&+b+rhI=-BfH$FOW
+G'.nKF)l8?E,TW3D/F*)CMIQsBP1rVAI;sX@U`bR?sd8I?2e(6>?Y35=]ed-r`9&!!*&nqs&&ho
+rD<Mir_EGe!MQ7eU]@1hIHl:XIH,_TIK)\,6L7#;T_5#@M!g&kL]E;0M#Tm>7JoXK8,Z!X8c#L_
+X8nODQKaY7=oMV(>Pqb*?2e1-?iOO5@JjU6A,^$:Ac?<ABDuT@X8n^IRJE6GQhbk'Gl)d:HM`!b
+GkQ@YG5?@(FQ[f>G4p.YGlE!cHN/?lI/SKnIK4lsJH(0#K)UC>KS>,7L51S@M2@+JN/WaVO,oBb
+P*2#nQ'Rc(R$jD4S=Q7DTV8'SUnjlcVl?\rXKAV.Yd(L?['d?O\@K2_]Y2%o^qmn*`5T^9aN2KG
+bKS5VcHjkbdF-LneCE.%f@\d0g=k<:gtgfChV\:i!o`.urT!q=s5j1@roa=Fqs"+Frp0FIrpB^Q
+qX=FQrpfmVrq$-]qXsj]rqH9arqZNhq>:*fqu-!_JcF:#J,~>
+JcC<$JcGHDoD\^erVZTjrqcZjrV6Ees7ZHb#P@WZo()>@nG_m+md9B-lg!d"l0.<mk2k[aj5T%U
+i8<AHgtUQ:g"=p.e^W*tda?IhcHa\YbKJ&LaN)<>`P]R0_8*h"]tD"i\[f5Z[^EKKZa-g>YHG"/
+X/`.tVl-AeUnXQVTUqaGS=>t8R$X,(P`q8nOH5H_N/W[PM26qAL4t;5Jq8H&+b+rhI=-BfH$FOW
+G'.nKF)l8?E,TW3D/F*)CMIQsBP1rVAI;sX@U`bR?sd8I?2e(6>?Y35=]ed-r`9&!!*&nqs&&ho
+rD<Mir_EGe!E2ts<WH/!8+fFM8,GdE7JfRQ8,#LQ6hE_362":V;p@o18Gl!X7/B@M7eT@N8H)3W
+=Sc,!=T(qh:&.QU:\[]Z:&I`d=oMV(>Pqb*?2e1-?iOO5@JjU6A,^$:Ac?<ABDuTB?iOO,<81@I
+GPl^_H.@6<H2Dj[GPcR[FinghFnKqOGPudcH2DpfHiJKlIK+`rJ,XuuJH1<$K5H9qKnb>;LkpnE
+MMmFPNK0'\OHG]hPE_>uQ^F/.R[]h<StD[LTqeEZVPg>kWiE/&Xfnt6ZEppG[^WcW]">Vg^;%J"
+_Sa=2`Q-'@ai_fNc-FV\d*^7he'umtf%8O+g"G*5gYCT?h;7#GrSRb9io9pss5a4Ar9""As60@E
+rp'LKqX"4KrpKXOrp]pWqssaXrq-'[rq??cqY:'crVH?er;?Hjn,@n<ec1.~>
+JcC<$JcGKEoD\[drquZjrqcZjrV6Ee!;?Ba#P@WZo()>@nG_m*md9B-lg!d"l0.<mk2k[aj5T%U
+i8<DIh;$`<g"=p.f%&:"da?Ihcd'h\bKJ&MaN2E@`Pf[2_SO"%^:h1l]",A]\$i]OZa6p@Yck12
+XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqOcYWbNf8pTMM[.EL5(D8K7\[SJ/EcbI=6KhH?jaZ
+GBS+NFE;JBEH#i6DJa4hCCY)nBP;$jAS#C_@q&nU@/aL6?=!P8!F&b,=oVS(=8l8#<<-"s;Z]io
+;>j>j:]F/o:"n@Wh;7&dV=CGXV;A$H6hNe562&n.fDi;1[K!W6[J%'.[JiSk7JfRK8,Z!V8HA,R
+li68Jli#&rc1B0VbONaS>5qh(>lJ%.?Mn10@/aU4@fBm;AG]s<B)ZH@BE7&ij8@3pc/QqIbPQM]
+Gl)d7HM`!cGkQ@ZG5?@&FR=5BG4g(XGlE!cHN/?kI/SHpIXckHJH(0#K)UE&KNs4cL51P?M2@+J
+N/WaVNfT9aP*2#nQ'IZ%R$jD4S"-(AT:hmPUSO``Vl6SpX/rG+YHY:;Za@-K\%&u[]=bhk^VI\&
+_o0O6a2l?DbKJ,ScHab`dF-LneCE.Lf*9m\g=k<9h#?+1hV\:i!o`.urT!q=s5j4Aroa=Fqs"+F
+rp0FIrpB^QqX=FQrUKdUrq$-]qt9p]rqH9arqZNhq>:*fqu-!_JcF7"J,~>
+JcC<$JcGKEoD\[drquZjrqcZjrV6Ee!;?Ba#P@WZo()>@nG_m*md9B-lg!d"l0.<mk2k[aj5T%U
+i8<DIh;$`<g"=p.f%&:"da?Ihcd'h\bKJ&MaN2E@`Pf[2_SO"%^:h1l]",A]\$i]OZa6p@Yck12
+XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqOcYWbNf8pTMM[.EL5(D8K7\[SJ/EcbI=6KhH?jaZ
+GBS+NFE;JBEH#i6DJa4hCCY)nBP;$jAS#C_@q&nU@/aL6?=!P8!F&b,=oVS(=8l8#<<-"s;Z]io
+;>j>j:]F/o9qS)OTq\=ZIHl:XIH>kVIJlP+6L@)4T`(SFM!p,hM#Kg>7JfRK8,Z!V8c5XgXT,@!
+XSnF\Q2m31QLU7>>5qh(>lJ%.?Mn10@/aU4@fBm;AG]s<B)ZH@B`"n/Rc0\3R/30HGPl^_H.%$9
+H2Mp\GPlX\Fi\[lFn9eLGPudcH2DpfHiAEkI0+kIJ,XuuJH1<$KE$U0Knb>;LPUeDMMmFPNK0$[
+OHG]hPE_>tQC!u,R[]e:St;RITq\<XV5C/hWN*##Xfek3Z*L^C[C3QS\[oDc]tV7s_8=+.`Q#s>
+aN;WKbg"GYcdC.ge'umtf)F8*f\,!4gY:N_h#ZBirSRb9io9pss5a4ArT=+Bs60@Erp'LKqX"4K
+rpKXOrp]mVqssaXrq-*\rV$6bqY:'crVH?er;?Hjn,@n<eGk%~>
+JcC<$JcGKEoD\[drquZjrqcZjrV6Ee!;?Ba#P@WZo()>@nG_m*md9B-lg!d"l0.<mk2k[aj5T%U
+i8<DIh;$`<g"=p.f%&:"da?Ihcd'h\bKJ&MaN2E@`Pf[2_SO"%^:h1l]",A]\$i]OZa6p@Yck12
+XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqOcYWbNf8pTMM[.EL5(D8K7\[SJ/EcbI=6KhH?jaZ
+GBS+NFE;JBEH#i6DJa4hCCY)nBP;$jAS#C_@q&nU@/aL6?=!P8!F&b,=oVS(=8l8#<<-"s;Z]io
+;>j>j:]F/i:&\#n;cHad7f>jL8GbpS7dieC7fGpR7f>^I6L@)=<;onp<;fbm8``M18c)'X8,bpR
+7JfRK8,Z!V8buQg=8Z2!9_hEY:@_3V:@_-Y>5qh(>lJ%.?Mn10@/aU4@fBm;AG]s<B)ZH@B`2<<
+@.dLR;u:e:Gl)d7HM`!cGkQ@ZG5?@&FR=5BG4g(XGlE!cHN/?kI/SHpIXckHJH(0#K)UE&KNs4c
+L51P?M2@+JN/WaVNfT9aP*2#nQ'IZ%R$jD4S"-(AT:hmPUSO``Vl6SpX/rG+YHY:;Za@-K\%&u[
+]=bhk^VI\&_o0O6a2l?DbKJ,ScHab`dF-LneCE.Lf*9m\g=k<9h#?+1hV\:i!o`.urT!q=s5j4A
+roa=Fqs"+Frp0FIrpB^QqX=FQrUKdUrq$-]qt9p]rqH9arqZNhq>:*fqu-!_JcF7"J,~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHb!qc*Urpg*[nG_kWmd:#?Id?:`l0.<mk2k[aj5T%U
+i8<DIh;$c=g=b-1f@AC#e'cXkd*L"^bfe2PaiMNB`Pod5_SO%&^V7Co]=PP`\@/iR['R'CYct=5
+XfSS'WMl_lV50l\TqS*MSt2@?R[BJ/QBd\uP*(ieO,f0XMi*@ILPCP;KS+l-J:N,us*YT/H?sj]
+GB\4QFEDSEEH,r9DJj<-rbE!YBkV0mAn>Oa@q/tW@:9(A!FB(2>QJ&4r`T8'!*B/#s&B%urDW_o
+!)`Yjs%iYi"k_M]g=tE^V<k)RV;e<J6hE_661WV*[dLQh[/[Q6[.C^*7/KFM7e]FN8Gu*[9(qQM
+li6;Oc2PrMc2,ZVbPB9\>5hb'>lJ%/?Me+/@/j[4@fKs;AGg$<B)ZH@BE;i,rSmn=q9B#ccM5ZD
+bku\_Gl2jOH2r<VHM`!cGkQ@ZG5HF&FRXGFG4^"VGlE!cHN&9kI/SKnIfFosJH(0#K)UE&KE-`*
+L0]RjM2@+IMi<USNfT6_OcklkPa.N#R$a;1S"-%@StD^MU84T]VPgAlWiN5'Y-5(7ZEppH[^WfX
+]"G\h^V@S$_Sa=2`lH0Bb0.uPc-FY^dF$CkeC<%"f@S[.rn7D-h#?+2hV[5ihu_lsir8!<jT"?>
+k5XWDkks]ElMg,Gm/HDNmecJOnG_tSo)A7[o_\=[pAXg_q#1$fqY9scr;6H]rdk+!s*t~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHb!qc*Urpg*[nG_kWmd:#?Id?:`l0.<mk2k[aj5T%U
+i8<DIh;$c=g=b-1f@AC#e'cXkd*L"^bfe2PaiMNB`Pod5_SO%&^V7Co]=PP`\@/iR['R'CYct=5
+XfSS'WMl_lV50l\TqS*MSt2@?R[BJ/QBd\uP*(ieO,f0XMi*@ILPCP;KS+l-J:N,us*YT/H?sj]
+GB\4QFEDSEEH,r9DJj<-rbE!YBkV0mAn>Oa@q/tW@:9(A!FB(2>QJ&4r`T8'!*B/#s&B%urDW_o
+!)`Yjs%iYirgj1`TV2:4k'm,Sm<nbYqa:!Bmm6N;pPAHuqM=QpqhY')s$Z`QqaU<Mr(-cX!(usc
+rN$!brg!;Fpm'p+q3:q`r`f8)ra#P1qd9>1s'be6s'u%=r+5k>rb).B!,;A4!3Q'c!L]D=RJN<J
+Qi)(*Gl2jOH2r<VHM`!cGkQ@ZG5HF&FRXGFG4^"VGlE!cHN&9kI/SKnIfFosJH(0#K)UE&KE-`*
+L0]RjM2@+IMi<USNfT6_OcklkPa.N#R$a;1S"-%@StD^MU84T]VPgAlWiN5'Y-5(7ZEppH[^WfX
+]"G\h^V@S$_Sa=2`lH0Bb0.uPc-FY^dF$CkeC<%"f@S[.rn7D-h#?+2hV[5ihu_lsir8!<jT"?>
+k5XWDkks]ElMg,Gm/HDNmecJOnG_tSo)A7[o_\=[pAXg_q#1$fqY9scr;6H]rdk+!s*t~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHb!qc*Urpg*[nG_kWmd:#?Id?:`l0.<mk2k[aj5T%U
+i8<DIh;$c=g=b-1f@AC#e'cXkd*L"^bfe2PaiMNB`Pod5_SO%&^V7Co]=PP`\@/iR['R'CYct=5
+XfSS'WMl_lV50l\TqS*MSt2@?R[BJ/QBd\uP*(ieO,f0XMi*@ILPCP;KS+l-J:N,us*YT/H?sj]
+GB\4QFEDSEEH,r9DJj<-rbE!YBkV0mAn>Oa@q/tW@:9(A!FB(2>QJ&4r`T8'!*B/#s&B%urDW_o
+!)`Yjs%iYiqbdJa7Rm8FoLSsOpdY0MoLAXHr'pQNoKr"4o2Pciq+9[=mRd4Fs$Z`QqaU<Mr(-cX
+!D6Jg=8c5$:&[iW:&Ic[:\dcV9`SAr>Ph\)?2n7.?iFI5@JaO6A,^$:Ac?<@BDcECC&VK>?iXX0
+<7t4JGPl^`H0KVTHg,kRH2Mp\GPlX]FiSUnFnBkLGPl^bH2DpeHiJKlIK+crJ,XuuJH1<$KE$T)
+L&Qg4LPUeDMMd=NN/`jYO-#KeP*;,qQ'[l*R@9V8SXuFFTqS3VUnsrdW2ZetXKAY/Yd(L?['mEP
+\[f;a]Y2(p^r!t+`5Ta:aN;TJbKS5Vcd:(edaQ^qe^i@(f\-8X!ScE/h#cHjhu;O8iSrkrj8\3?
+jo"9@kPj]Cl2KuIlh]uImJZJMn,;bTnbVhUoD\CZp&4U`p\O[`q>U6cqu$BhrU9`:s4%(!~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHbs7?<_rpkO.nF5o8md9E.m-Es$l0.?ok2tddj5].X
+i8EMLh;-l?g=b-1f@JL%eC2jnd*L"_c-4ASb/hZE`l5p8_ns7*^V@Lr]Xtbc\[])V[C!9GZ*:I9
+Xf\\*Wi;qpVPU)`U7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkl"b+,,B#Jq8H&IsufoI!^0b
+G^"@TF`__HEcH)<Df0H0D#S2[C2%?pB4b^dA7K+Y@UW[D?NFJ=r`fJ.>5h\)=9)G%<rZ/"<;fbq
+;ZBVm;#a;k:B&oGf`7lHVY[4^VY6kJV#!IN6L[;>eb@Yl[dLQWZiEMj7JoXL8,PpV8cMEYlMp2M
+m/HG2c2>fQbPk`D>lJ%.?Mn10@/aU4@fBm:AGg$=B)ZH@B`;]HC?,9RqTe`Xj37LHr-8-bn9XPM
+n9Y"Xr-7pZr-%s[`cUfpolfqNr-83dqKi0grd=Zms*jutrdb$"!.t3&s+CB+re:H/M#N61MMmFP
+NK0'\OHG]hPE_>tQC!u+R[]e:SXuIHTqS6WUo(&fW2ckuXf\b1Yd(O@[C3NR\[f>b]Y;.q_8=(-
+`Poj<aN;TJbg"GYcd:(ee'umtf)F8)f\,!4gYDea!oDhlrnmk:io9sts5a4ArT=.Croj:Erp'LK
+qX"4KrpKXOrUBgVqXXXWrq-'[rq?<bqY:'crVH<dr;?Hjn,@n<e,Op~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHbs7?<_rpkO.nF5o8md9E.m-Es$l0.?ok2tddj5].X
+i8EMLh;-l?g=b-1f@JL%eC2jnd*L"_c-4ASb/hZE`l5p8_ns7*^V@Lr]Xtbc\[])V[C!9GZ*:I9
+Xf\\*Wi;qpVPU)`U7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkl"b+,,B#Jq8H&IsufoI!^0b
+G^"@TF`__HEcH)<Df0H0D#S2[C2%?pB4b^dA7K+Y@UW[D?NFJ=r`fJ.>5h\)=9)G%<rZ/"<;fbq
+;ZBVm;#a;k:Ag[`IJeQjJ*h^\IJA3_IJnWk6hE_762dGMT_+*=MY`2!M"lc%M#3#/7/B@M7e]FN
+8Gu-[9)YgiWr/psXRqhKQ/n81>Pqb*?2e1.?iFI4@JjU6A,^$:AcHBABDcHBB`VtMrN5pbigKY1
+r0RD,r-8-bn9XPMn9Y"Xr-7pZr-%s[`cUfpolfqNr-83dqKi0grd=Zms*jutrdb$"!.t3&s+CB+
+re:H/M#N61MMmFPNK0'\OHG]hPE_>tQC!u+R[]e:SXuIHTqS6WUo(&fW2ckuXf\b1Yd(O@[C3NR
+\[f>b]Y;.q_8=(-`Poj<aN;TJbg"GYcd:(ee'umtf)F8)f\,!4gYDea!oDhlrnmk:io9sts5a4A
+rT=.Croj:Erp'LKqX"4KrpKXOrUBgVqXXXWrq-'[rq?<bqY:'crVH<dr;?Hjn,@n<e,Op~>
+JcC<$JcGKEo)AUdrquZjrqcZjrV6Ees7ZHbs7?<_rpkO.nF5o8md9E.m-Es$l0.?ok2tddj5].X
+i8EMLh;-l?g=b-1f@JL%eC2jnd*L"_c-4ASb/hZE`l5p8_ns7*^V@Lr]Xtbc\[])V[C!9GZ*:I9
+Xf\\*Wi;qpVPU)`U7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkl"b+,,B#Jq8H&IsufoI!^0b
+G^"@TF`__HEcH)<Df0H0D#S2[C2%?pB4b^dA7K+Y@UW[D?NFJ=r`fJ.>5h\)=9)G%<rZ/"<;fbq
+;ZBVm;#a;k:Adui7JoXC8,GaU8,Gd;8,>UF6L[;4<VK)H8F9"G8,u'S7JoXL8,PpV8cMEU<ruK*
+=6E<T:B"&c:@V'X>Pqb*?2e1.?iFI4@JjU6A,^$:AcHBABDcHBBa/<Z?smDP<VobH;uV"=Gl2jV
+HLH4MHMi'dGkQ@ZG5HF%FRsYJG4TqUGlE!bHN/?kI/SKnIfFosJH(0#K)UE&KE-`*L&m'creXU3
+Mi<USNfT6_OcklkPa.N"Q^F//S"#q=StD[LTqeEZVPg>jWiE,%Xfen4Z*UdE[^N]V\\#Me^;%G!
+_SX71`Q$!?ai_fNc-FV\d*^7ieC<%"rmq>+g"P07h#?+2hV[5ihu_lsir8!<jT"??k5XWDkks]E
+lMg,Gm/HDOmeZDNnG_tSo)A7[o_S7[pAOa^q#:*fqY9scr;6H]rdk*us*t~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpgHenF5o8mdBK/m-Es9l$_dYk2tddj5].X
+i8EMLh;-l@g=k64f@SR&eC2jndEp4bcHXPUb/q`Ga2Z*;_ns:,^q[Xu]Y(kf\[f2X[^EKKZE^X<
+Y-"h-WiE%sVl$;dUS=HUT:VXFS"#k6R$X,(P`q8mOH5H_N/W[PM26qAL4t;5Jq8H&Isufo+aeW_
+H$FOWG'.nKF)l8?E,TW3D/=!'C2.HrBP1pgARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`9&!!*&nq
+s&/korD<Mi!SQ-)g&7f@Vt?kNV=gVa7/94B6LdA=eG[qrec<2U[dLQZZiEMj7JoXL8,PpV8c;6]
+lMTrJm/68Nmbc:ebjN[S>Pqb*?2e1.?iFI4@JjU6A,g*:AcHBABDcHBC&_rJjSn3<cLK0>bl;nc
+Gl)dWHKokJHM`!cGkZF[G5HFIFT-@?FS0eMG4KkTGl;paHN/?kI/SKnIfForJH(0#K)UE&KE-`*
+L&m'creXd8Mi<USNK0'\OHG]hPE_>tQ^F/.R[]e;St;RITq\<XV5C/hWN)u"Xf\e2Yd1UB[C3QS
+\[oDc]tV7s_8=+.`Pom=aN;WKbg"GYd*^7he'umtf%8O+g&B\0gYCW@hVR/hhu_lsir8!<jT"??
+k5XWEkkjWElMg,Gm/HDOmeQ>NnGVnSo)81Zo_S7[pAOa^q#1$eqYC$dr;6H\rdk*us*t~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpgHenF5o8mdBK/m-Es9l$_dYk2tddj5].X
+i8EMLh;-l@g=k64f@SR&eC2jndEp4bcHXPUb/q`Ga2Z*;_ns:,^q[Xu]Y(kf\[f2X[^EKKZE^X<
+Y-"h-WiE%sVl$;dUS=HUT:VXFS"#k6R$X,(P`q8mOH5H_N/W[PM26qAL4t;5Jq8H&Isufo+aeW_
+H$FOWG'.nKF)l8?E,TW3D/=!'C2.HrBP1pgARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`9&!!*&nq
+s&/korD<Mi!M>t_TDa63J*qdGI/l\26hE_862mJPTDbGSM>N2,M<B]hM#]s?7JoXL8,PpV8c;9X
+WrB(!XT,EuQi!*9Q0FV7>Pqb*?2e1.?iFI4@JjU6A,g*:AcHBABDcHBC&_rGXo4^FRJ<0LQiD:.
+Gl)dWHKokJHM`!cGkZF[G5HFIFT-@?FS0eMG4KkTGl;paHN/?kI/SKnIfForJH(0#K)UE&KE-`*
+L&m'creXd8Mi<USNK0'\OHG]hPE_>tQ^F/.R[]e;St;RITq\<XV5C/hWN)u"Xf\e2Yd1UB[C3QS
+\[oDc]tV7s_8=+.`Pom=aN;WKbg"GYd*^7he'umtf%8O+g&B\0gYCW@hVR/hhu_lsir8!<jT"??
+k5XWEkkjWElMg,Gm/HDOmeQ>NnGVnSo)81Zo_S7[pAOa^q#1$eqYC$dr;6H\rdk*us*t~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpgHenF5o8mdBK/m-Es9l$_dYk2tddj5].X
+i8EMLh;-l@g=k64f@SR&eC2jndEp4bcHXPUb/q`Ga2Z*;_ns:,^q[Xu]Y(kf\[f2X[^EKKZE^X<
+Y-"h-WiE%sVl$;dUS=HUT:VXFS"#k6R$X,(P`q8mOH5H_N/W[PM26qAL4t;5Jq8H&Isufo+aeW_
+H$FOWG'.nKF)l8?E,TW3D/=!'C2.HrBP1pgARo<M@KBnFra,\4?2e(0>?_#/s&]8&r`9&!!*&nq
+s&/korD<Mi!)rhorC6HMmmc;,!(?WMoKr(6o2Pc_p.=@:mRd@J!(?ZPr'pENr(-cXrCZofr)iu#
+q+g*Ip.k6Ss',D+ra#M0r*TG2raG_6raYt=qdoe>rb).Brb;CIs'Yk8!+Pn,r)D<Is*+Edqg%aY
+l?i)Jqg&*apNQOYqfV1Grc@%?ol]tOnot"VrH\6cs*O`mrI+]ps*suts+(0%re(6(!/:E,!JcL1
+M-5^oN/WaUNfT6_OcklkPa.N#R$a;1S"#t?StD[LU8+N\VPgAlWiE/&Xfnt5ZEppG[^WcW]">Vg
+^;%J"_Sa=2`Q-'@aihlOc-FV]dF$CkeC<%"f@S[.rn7S2gtgfChV\=j!o`.uro=%>s5j4As6'FG
+qs".Grp0FIrpB^Qq="=PrUKdUrU^$\qXsj]rV-0`rV?Egq>:*fqu,s^JcF4!J,~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpp*Z!:^!VI.$Cgm-F!&l07Epk2tddj5].Y
+iS`YOh;-l@g=k64f@SU(eC;sqdF$=dcHXSVbK@rJaN)<>`5BI/_8*h#]tD"i]",>[[^NTNZa-j?
+Ycb+1XK&;"W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5$q,KS+l-J:N,uI=6Ki
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH(??sd8I?=!P8!F&b,=TV],=8l8#<<-"s
+;u]bq;>j;k:]8uBVY-k[VWalOU]<gX6hNe862]72ec")!\,*Pr[H4aq7/KFM7efLO8Gu-X9)\)U
+m/HDOmf2b3c1oNUbPtfE>lJ%.?Mn10@/j[4@fKs;AGg$<B)ZH@B`DfGCB&)JirIBlc/d+HGl2jY
+HKKSFHMi'dGkZF[G5QLMFS9e;FSBqPG4BeSGl;paHN&9kI/JEmIfForJH(0#K)UE&KE-`*L1?!p
+Ll$tGMi3OQNK0'\OHG]hPE_>tQC!u+R@9V8SXuFGTqS3UUnsrdW2ZetXKAY/Yd(L?['d?O\@K2_
+]Y2%o^qmn*`5Ta:aN2NIbKS5Vcd:(edaQ^qe^i@(f\,!4gYDea!T)`5hu_lsir8!<jT"?@k5OQD
+kks]FlMg,Hm/?>NmeZDNnGVnRo)A7Zo_S7[pAOa^q#1$eqY9scr;6H]rdk*ts*t~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpp*Z!:^!VI.$Cgm-F!&l07Epk2tddj5].Y
+iS`YOh;-l@g=k64f@SU(eC;sqdF$=dcHXSVbK@rJaN)<>`5BI/_8*h#]tD"i]",>[[^NTNZa-j?
+Ycb+1XK&;"W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5$q,KS+l-J:N,uI=6Ki
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH(??sd8I?=!P8!F&b,=TV],=8l8#<<-"s
+;u]bq;>j;k:]6p]IeA3ZIcYtX7/0.B6L[;9TDbGRM>N2%M=-2pM#]s@7JfRL8,PpV8c23ZWr8t%
+XKAV-Y-7VeqNgN6m$@ZUr*95,ra,M0ra>b7qdTS8rabq<rau.Br+Q+ErbDIKs/c@*Xd[t3pR(l'
+r-@m[k'QZFr-A3bpNQOYr,qCKp2f>;pN?4RnTXnUrH\6crd4Zmr-eTos*suts+(0%re(6(!/:E,
+@u#krM2@+JMi<USNfT6_OcklkPa.N"Q^F/.R[]h<St;UKTq\<XV5C/hWN*##Xfek3Z*L^C[C3QS
+\[oDc]tV7s_8=+.`Q#s>aND]Lbg"GZd*^7he'umtf%8O+g"P07h#?+1hV\=j!o`.uro=%>s5j7B
+roa=Fr9=7Hrp0IJrU'UPqX=CPrUKaTrq$*\qXsj]rV-0`rV?Egq"t!equ-!_JcF0uJ,~>
+JcC<$JcGKEo)AUdrVZTjrqcZjrV6Ees7ZHbs7?<_rpp*Z!:^!VI.$Cgm-F!&l07Epk2tddj5].Y
+iS`YOh;-l@g=k64f@SU(eC;sqdF$=dcHXSVbK@rJaN)<>`5BI/_8*h#]tD"i]",>[[^NTNZa-j?
+Ycb+1XK&;"W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5$q,KS+l-J:N,uI=6Ki
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH(??sd8I?=!P8!F&b,=TV],=8l8#<<-"s
+;u]bq;>j;k:]45f7eK:?7cd,?7/0.B6L[;5<W>\b8``M18cM<]7/KFM7efLO8Gu-X9)2Ng=Su7j
+:@1dO:@q9\>Pqb*?2e1.?iFI5@JaO6A,^$:Ac?<@BDcHCC&VlIC]7`C@TE)#h,=;Qr-8-bo6TPG
+np:4Zr-7s[r-&!\m<&&Cj`L6>pNH(Nr-80cqKi-fs*X`ms*jutrIFp!!.t3&s+CB+re=p<LkpnE
+MMmCON/`jYO-#KeP*;,qQ'Rc(R$jD4S=Q7CTV8'RUSO``Vl6SpX/rG+YHY:;Za@-K\%&u[]=bhk
+^VI\&_o0O6a2l?EbKJ,ScHjkbdF-LneCE.%f@\d1g=tE^h#ZBirnmk:io9sts5a4AroX4Cs60CF
+s6BULqs=:KrpKXOrUBdUqXXXWrUfsZrq?<bqY:$brVH<dr;?Hjn,@n<df4g~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_kWmd:#?J*ZCal0.<nk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXSVbK@rJa2Z*;`5BI/_8*h"]tD"i]",>[[^NTMZa-j?
+YHG"0XK&;"W2HMhUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J/j&fI=6Kh
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH7D?sd8I?<pf@>?b;1=TV],=8l8#<W?%t
+;u]bq;>j>jfDsY!VY-k\VWXfRV#<^W6hE_962f=.ea^-2[e@-(ZiEMk7JoXL8,PpV8c23\m/HDP
+mf2bUn,i.No'aj#cLfBSbk]E^>Pqb*?2e1.?iFI5@JaO6A,^$:Ac?<@BDcHCC&VlHC]*5fblH&_
+c/m1JGl2jYHK9GEHMi'dGkcL\G5HFOFRO;9FSBqQG4KkTGl2j`HN&9jI/JEmIfForJ-(:RK)UE&
+KE-`*L'rcmLl$tGMMmFPNK4"!?]^D5P*;,qQ'Rf)R@9V7S=Q7DTV8'SUnjibVl6VqX0&M,YctC=
+Za@0L\%0&\]Y(qm^VI_'_o0O6a2lBFbKJ/UcHjkbdaQ^qe^i@(f\,!4gYCT?h;7&Hi8ESQir8!<
+j8e<?k5XWEkks]FlMg,Hm/HDNmeZDNnG_tRo)A7Zo_S7ZpAXg^q#1$eqY9scr;6H]rdk*ss*t~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_kWmd:#?J*ZCal0.<nk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXSVbK@rJa2Z*;`5BI/_8*h"]tD"i]",>[[^NTMZa-j?
+YHG"0XK&;"W2HMhUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J/j&fI=6Kh
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH7D?sd8I?<pf@>?b;1=TV],=8l8#<W?%t
+;u]bq;>j>jT)bPXIeA3ZId):Z7/94B6LmG;TDbGPM>N1`M#]s@7JoXL8,PpV8c23\X8]4#Xo5F&
+Y5kg+R/30@QLL10Q2k.e>lJ%.?Mn10@/j[4@fKs;AGg$<B)ZH@B`DfGCAr#HXn\:aRcBh2R/M:-
+H1Q@CHh2R]H2Mp^GPlX]FmsMAF6[lAFng.NGPl^`H2;jdHiAEjIK+crJ,Om!JV&LQKE$T)L&Qf7
+LPUbCM2I1KN/WaVrf:EJOcklkPa.N"R$a;1S"#q=StD[LTqeEZV5L5iWiE,%Xfen4Z*UdD[^NZU
+\[oGd]t_=t_SX4/`Q#s>ai_fMc-FV\d*^:jeC<%"f@S[.g=k<:gtgfChr!AMiSieqj8\0?jo+?A
+kPscDl2U&Jlhg&JmJZJLn,;bTnbMbToDS=Xp&4U`p\FU_q>L0bqu$BhrU9`:s3^js~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_kWmd:#?J*ZCal0.<nk2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC2jndEp4bcHXSVbK@rJa2Z*;`5BI/_8*h"]tD"i]",>[[^NTMZa-j?
+YHG"0XK&;"W2HMhUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J/j&fI=6Kh
+H?jaZGBS+NFE;JBEH#i6DJa3*CMIS_BE`$\AS#C^raH7D?sd8I?<pf@>?b;1=TV],=8l8#<W?%t
+;u]bq;>j>j;ZKej7eK:B7cm5>7/94B6LmG7<W,P`8aK"88btsX7/KFN7e]FN8Gu-X9))Nd=6WK<
+9`SDq>lJ%.?Mn10@/j[4@fKs;AGg$<B)ZH@B`DfGCAr#J@K0g3;ufqr<9$pU<;h(>H1Q@CHh2R]
+H2Mp^GPlX]FmsMAF6[lAFng.NGPl^`H2;jdHiAEjIK+crJ,Om!JV&LQKE$T)L&Qf7LPUbCM2I1K
+N/WaVrf:EJOcklkPa.N"R$a;1S"#q=StD[LTqeEZV5L5iWiE,%Xfen4Z*UdD[^NZU\[oGd]t_=t
+_SX4/`Q#s>ai_fMc-FV\d*^:jeC<%"f@S[.g=k<:gtgfChr!AMiSieqj8\0?jo+?AkPscDl2U&J
+lhg&JmJZJLn,;bTnbMbToDS=Xp&4U`p\FU_q>L0bqu$BhrU9`:s3^js~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_k\md9E.m-Es9l$qp[k2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`Pf[2_SO"%^:h1l]=PP_\$i`QZa6sB
+Yck43XfJJ%WMcYkV50l\TqJ$LSt):>R[BJ/QBd\uP*(ieO,]*WMi*@ILPCP;KS+l-J:N,uI=3er
+H?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BP;$jAn>Oa@q&nU@:3GL?<piA>[(E9r`K;)=',B%s&K(u
+r_rhps&&bls4IA)oVV8YpSR)Ls.oQ\q*Xd@o0NE,s4$kpqmYk#n[JD(qR-7.!(?ZPr'pENrCHiX
+qapkWrp]sXs7-<ao_%nNn'1[Rp!**Pr6,"Cra#P1qd9>1s'be6s'u%=r+5k>s(D7Crb;@Hr+l8k
+lcnS9s*4EdoQoJCoQpF\r-8!\r-&!\noX,;m<&,Gq0)@Rr-8-bq0N$erd=Wls*jutrIFp!s+:6&
+s+CB+re=s=LkpnEMMd=NN/`gWO,oBbP*2#nQ'IZ%R$a;1S"-%@StD[LU8+N[VPg>kWiE,%Xfen4
+Z*UdD[^NZU\[oGd]t_=t_SX40`Q$!?ai_fNc-FV\dF$CkeC<%"f@S[.g=k<:rnRV3hu;O7iSsjs
+s5a4AroX7Ds60CFs6BULr9XCLrpKXOrUBdUqXXUVrUfsZrq?<bq=sparVH<dr;?Hjmf%e;dJn^~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_k\md9E.m-Es9l$qp[k2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`Pf[2_SO"%^:h1l]=PP_\$i`QZa6sB
+Yck43XfJJ%WMcYkV50l\TqJ$LSt):>R[BJ/QBd\uP*(ieO,]*WMi*@ILPCP;KS+l-J:N,uI=3er
+H?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BP;$jAn>Oa@q&nU@:3GL?<piA>[(E9r`K;)=',B%s&K(u
+r_rhps&&bls.B=aoR?.VpO;IWr'^?JoKr.8qOd\YqhaTqhh_>$qF1<OpIG0Qr(6cX!3Q7'ric@+
+rilI/rg<MJns8j3q3M#Hr0I7cra#P1qd9>1s'be6s'u%=r+5k>s(D7Crb;@Hr+l85fU;Q&s*4Ed
+oQoJCoQpF\r-8!\r-&!\noX,;m<&,Gq0)@Rr-8-bq0N$erd=Wls*jutrIFp!s+:6&s+CB+re=s=
+LkpnEMMd=NN/`gWO,oBbP*2#nQ'IZ%R$a;1S"-%@StD[LU8+N[VPg>kWiE,%Xfen4Z*UdD[^NZU
+\[oGd]t_=t_SX40`Q$!?ai_fNc-FV\dF$CkeC<%"f@S[.g=k<:rnRV3hu;O7iSsjss5a4AroX7D
+s60CFs6BULr9XCLrpKXOrUBdUqXXUVrUfsZrq?<bq=sparVH<dr;?Hjmf%e;dJn^~>
+JcC<$JcGKEo)AUdrVZQis8)ckr:g?fp@eIX!qc*Urpg*[nG_k\md9E.m-Es9l$qp[k2tddj5].X
+i8EMLh;-l@g=k64f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`Pf[2_SO"%^:h1l]=PP_\$i`QZa6sB
+Yck43XfJJ%WMcYkV50l\TqJ$LSt):>R[BJ/QBd\uP*(ieO,]*WMi*@ILPCP;KS+l-J:N,uI=3er
+H?sj]GB\4QFEDSEEH,r9DJj<-CMR[!BP;$jAn>Oa@q&nU@:3GL?<piA>[(E9r`K;)=',B%s&K(u
+r_rhps&&bls&8qsoL@(qr'^?JoKr.8oi:WVnO`IGqap6I!(?ZPr'pENrCHiXqb$K_k>(;:r_EAc
+r*95,s'GS0ra>b7qdTS8rabq<rau1Cr+Q(DrbD@Hs'bq:mo8OMqGdK>qg%g[iHt3Cr-A3bpilXZ
+r,qRPl#Z66piZCUo6:+Wr-A*ard4Wlr-eTos*suts+13%re(6(!/:E,A;>tsM2@+IMi<USNK0'\
+OHG]hPE_>tQC!u+R@9V8SXuFFTV8*TUnjlcVl?\rX0&M,YctC=Za@0L\%0&\]Y(qm^VI_'_o9U7
+aN2KGbKS5VcHjncdaQ^qe^i@(f\,!4gYDea!T)`5huVfrro=%>s5j7Bs6'FGr9=7Hrp0LKrU'UP
+qX=CPrUKaTrU^![qXsj]rV--_rV?Egq"t!equ,s^JcF-tJ,~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ee!;?Ba!qc*UrpkL-nF5o8mdBK/m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ&MaN2EA`Pod5_SX+'^V7Co]Xt_b\@8oT['R*E
+Z*:F7Xf\Y(Wi;noVPU)`U7n6PSt;IAS!o_3Q^3o$PEM&iO,o9ZN%U$GM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0H0Chmg$BkV0mB)Z?QA7K(X@:3JM?X@#D>[1K;>5hY+=BAT'<rZ2"
+<;ohr;Z9Mq:tO=Or2/\Upnm5NqF(-Ho0W+9p!roJhRNHlr3l@-!(?]QqaU?Nr(-cXqF^eYs76Bc
+p%A%QrqHKhn'1[RoZcjKrETA.ra,J/s'Yh7r*oY8rabq<rau1Cqe6"DrbD@H!,VVolHSJ8r-@p\
+o6^=]oR$4Vr-A3bpil[[r,qUQj`Bm4q/uOWo6:+Wr-A*ard4Wlr-eTordXlss+(0%rIY0)Kn]M\
+@#'PoM2@+IMi<USNK0'\OHG]hPE_>tQC!u+R@9V7S=Q7DTV8'RUnjiaVl6SpX/rG*YHY7:Za7'J
+[^`lY]=bej^V@V%_SjF4a2l?DbKJ,ScHjkbdF-LneCE1&f\-8X"l%hgh;7&ghu_lsir7s>jQ5M&
+k5XWEkl'cFlMp2Im/HDOmeZDNnG_tRo)81Yo_S7ZpAOa]q#:*eqY9scr;6H\rdk*rs*t~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ee!;?Ba!qc*UrpkL-nF5o8mdBK/m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ&MaN2EA`Pod5_SX+'^V7Co]Xt_b\@8oT['R*E
+Z*:F7Xf\Y(Wi;noVPU)`U7n6PSt;IAS!o_3Q^3o$PEM&iO,o9ZN%U$GM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0H0Chmg$BkV0mB)Z?QA7K(X@:3JM?X@#D>[1K;>5hY+=BAT'<rZ2"
+<;ohr;Z9Mq:nF8Ngjf$Hn9t.$q*Xa?og/JIqk3eBg5>``pP8f;qaLBOpdb6QrCQiXril@+s0D[2
+s0VfnpQtK;ns0$:q3V%bs'>V1qd9A2raG_6raYq<r+5k>s(D4Bs(VIIr+c:KrN4_?pmCu)oQp+U
+qL%p^oQpF\r-8!\rHA*]o5s)8mr\AJqKDISr-8-bq0N$erd=Wls*jrsrIFp!!.t0%!ec8]re=g9
+LkpnEMMd=NN/`gWO,oBbP*2#nQ'IZ%R$a;1S"#q=StD[LTq\?YV5C/hWN*##Xf\e2Yd1UA[C3NR
+\[f>b]Y;.q_8=(-`Pom=aN;WKbg"GZd*^7he'umtf@S[.rn7P1gtgfChu;O8iSrkrir\<'jo4EB
+kPscEl2KuJlhg&JmJcPMn,;bTnbMbSoDS=Xp&4U_p\FU`q>C*aqu$BhrU0Z9s3Udr~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ee!;?Ba!qc*UrpkL-nF5o8mdBK/m-Es%l07Epk2tddjQ#:[
+iS`YOhVI#CgY1B7f[na+e^W*tda?Ihcd'eZbKJ&MaN2EA`Pod5_SX+'^V7Co]Xt_b\@8oT['R*E
+Z*:F7Xf\Y(Wi;noVPU)`U7n6PSt;IAS!o_3Q^3o$PEM&iO,o9ZN%U$GM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0H0Chmg$BkV0mB)Z?QA7K(X@:3JM?X@#D>[1K;>5hY+=BAT'<rZ2"
+<;ohr;Z9Mq:f:1ir'nXqqF(-Ho0W+9oi:TUiCWl:pI>3OqaLBOpdb6QrCQiXqH3`"r`J>Yl:q(L
+rETA.ra,J/s'Yh7r*oY8rabq<rau1Cqe6"DrbD@H"DhLT@Uek,l;RCUr-@p\o6^=]oR$4Vr-A3b
+pil[[r,qUQj`Bm4q/uOWo6:+Wr-A*ard4Wlr-eTordXlss+(0%rIY0)Kn]M\@#'PoM2@+IMi<US
+NK0'\OHG]hPE_>tQC!u+R@9V7S=Q7DTV8'RUnjiaVl6SpX/rG*YHY7:Za7'J[^`lY]=bej^V@V%
+_SjF4a2l?DbKJ,ScHjkbdF-LneCE1&f\-8X"l%hgh;7&ghu_lsir7s>jQ5M&k5XWEkl'cFlMp2I
+m/HDOmeZDNnG_tRo)81Yo_S7ZpAOa]q#:*eqY9scr;6H\rdk*rs*t~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ees7ZHbs7?<_rpp*Z!:^!V!Uf@Slk\pPl07EpkN:pgjQ#:[
+iS`YOhVI#Cg]#oUg"=p.f$r3uda?Ihcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke\[],W[^EHJ
+ZE^X;Y-"h,WiE%rVl$;dUS=HTT:VXES"#k6R$X,(P`q8mOH5H^N/W[PM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0G!D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>?_#/!a&N*r`9&!
+s&Aqqs&&tsf%/I)qPN\YnttZJq*b!FoKr7;qpbMne[YOdr3lF/!(?]QqaU?Nr(-cXq+:\[p&=Xh
+p\=R[qYL*Xc1TBUc1&sV>lJ%/?Me+0@/aU4@fBm:AGg$<B)cNAB`;`FCA_lHD#WDobj3O9bl)hZ
+HM)XXI._jZHMi'eGkcL\G5QLTFQ7H3FS^.VG4g(WGl2j_HMr3iI/JEmIf=iqJH(3#K)UE&K`?c*
+L'NKiLl$tGMMqImA;uV1O-#KdP*2#nQ'IZ%R$a;1S"-%@StD[LU8+N[V5L5iWN*##Xfek3Z*L^C
+[C3QS\[oDc]tV7s_8=+.`Q#s>aND]Lbg+M[d*^7ieC<%"f@S[.g=k<:h;-rEhr*GOiSsjs!p&J)
+roX7Ds60FGs6BXMqs=@MrU0ONrp]mVq==LUrUfpYrV$3aq=sparVH<dqu$?imf%e;d/SU~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ees7ZHbs7?<_rpp*Z!:^!V!Uf@Slk\pPl07EpkN:pgjQ#:[
+iS`YOhVI#Cg]#oUg"=p.f$r3uda?Ihcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke\[],W[^EHJ
+ZE^X;Y-"h,WiE%rVl$;dUS=HTT:VXES"#k6R$X,(P`q8mOH5H^N/W[PM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0G!D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>?_#/!a&N*r`9&!
+s&Aqqs&&horLW8'q1/*eqgS-bq*b!FoKr7;qk*bYd>IgXq1o#=qaLBOpdb6QrCQfWrNcI0rj;^5
+!4Mlop6Y<8op,B>pm:tbra#P1qd9A2raG_6raYq<r+5k>s(D7Crb;@Hr+l:Js/c=)R+Ri&R/M=&
+HM)XXI._jZHMi'eGkcL\G5QLTFQ7H3FS^.VG4g(WGl2j_HMr3iI/JEmIf=iqJH(3#K)UE&K`?c*
+L'NKiLl$tGMMqImA;uV1O-#KdP*2#nQ'IZ%R$a;1S"-%@StD[LU8+N[V5L5iWN*##Xfek3Z*L^C
+[C3QS\[oDc]tV7s_8=+.`Q#s>aND]Lbg+M[d*^7ieC<%"f@S[.g=k<:h;-rEhr*GOiSsjs!p&J)
+roX7Ds60FGs6BXMqs=@MrU0ONrp]mVq==LUrUfpYrV$3aq=sparVH<dqu$?imf%e;d/SU~>
+JcC<$JcGKEo)AUdrVZQis8)`jrV6Ees7ZHbs7?<_rpp*Z!:^!V!Uf@Slk\pPl07EpkN:pgjQ#:[
+iS`YOhVI#Cg]#oUg"=p.f$r3uda?Ihcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke\[],W[^EHJ
+ZE^X;Y-"h,WiE%rVl$;dUS=HTT:VXES"#k6R$X,(P`q8mOH5H^N/W[PM26qAL4t;5Jq8H&Isufo
+H[:!`G^"@TF`__HEcH)<Df0G!D/=!'C2%?pB4h-S&7f9[@UWYP?XI,F?!LW=>?_#/!a&N*r`9&!
+s&Aqqs&&horDNJ]a%,qnpd=[?p-J@Ope'73qagNQ!(?]QqaU?Nr(-cXq+C<_s%h`OmS3IOr`oG.
+s'GS0s'Yh7r*oY8rabq<rau1Cr+Q(DrbD@HrbVRBn5SgSo2P[6oQp1WomHFZom6O]rHS*]r-&!\
+oQ9,7n9"MLqKDOUr-8-bq0N!drd=Wls*jrsrIFp!s+:6&s+LE+re:Z5LkpnEMMd>kN+@p.O,oBb
+OcklkPa.N"Q^F/.R[]h<St;RITq\<XUnsueW2ZetXKAY/Yd(L?['d?O\@K2_]Y2%o^qmn*`5Ta:
+aN2NIbKS8Wcd:(ee'umtf%8O+g"P07gtgfChV[8LiSieqir\<'jo4EBkPscEl2U&Klhg&KmJZJL
+n,DhTnbMbSoDS=Wp&4U_p\FU_q>L0bqtp<grU0Z9s3Udr~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZHbs7H?_s763[!:^!V#4CmGm-O''rojUMkN:pgjSn1h
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI.^q[Xu]tD"i\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J:E#r
+I=$9dH$FOW'm=_AFE;JBEH#i6DJa3*CMIQsBP1rVAIrB^@U`bR?sd8I?!U]?>?b;1=oVS(=8l8#
+<W?%s;u]bpf(c-/Vt6eTV>[:b7/94@6MWq?eC;#*\,<]3[JNDi7e]FO8Gu-U9)hNcpA"F^q>U6l
+r;H*/n]psTn]_#<ra#P1qd9A2raG_6raYq<r+5n?rb).Brb;@Hr+l:J!,__prlj`RkKNpNoQp4X
+nU1(Xom6O]rHS*]r-&$]oQ9)6nT=VMqf_XVr-8-bq0N$erd=TkrdOlsrIFp!s+:3%s+CB+rItQ4
+LkpnEMMd>kMueourf:6EOcklkPa.N"Q^F/.R[]e:SXuFGTqS3UUnsrdVl?\rX0&M,YctC<Za@-K
+\%&u[]=bhk^VI\&_o0O6a2lBFbKJ/UcHjkbdaQ^qe^i@(f\,!4gYCW@hV\=j!TE&;j8\0?jo4EB
+kPscEl2U&Klhp,KmJcPMn,DhTnbMbSoDS=Wp&4U_p\FU_q>C*aqtp<grU0Z9s3L^q~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZHbs7H?_s763[!:^!V#4CmGm-O''rojUMkN:pgjSn1h
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI.^q[Xu]tD"i\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J:E#r
+I=$9dH$FOW'm=_AFE;JBEH#i6DJa3*CMIQsBP1rVAIrB^@U`bR?sd8I?!U]?>?b;1=oVS(=8l8#
+<W?%s;u]bpT':auJFe9\IeH2*6h3S>61pl+MY)btM#0X<7e]FO8Gu-U9)hNaZM_*/[f<i9R.Zg2
+QN!0FQM?gH>lJ%/?Me+0@/aU4@fBm:AGg$=B)ZH@B`;`FCA_lHC]J>OY5XgARJN<MH1ZFVHguLX
+HhD^_H2W!_GPlX_FnBe8F7FAKFo-@TGPl^`H22dcHiAEiIK"]qJ,OotJcC?#KE$T)L&H`2LPUbC
+M2I1Krepl;NrG)COHG]hPE_>tQC!u+R@9V7S=Q7CTV8'RUSO``Vl-MoWiN8(Y->.8ZEppG[^WcW
+]">Vg^;%J"_Sa=2`lH0Bb0.uQcHab_dF-LneCE.%f@\d1g=tE=h;7&ghuVfrro=%>!9O4Bs6'FG
+rTX@Is6KULrpB^QqX=FQrUK^SrU^![q=X^[rV--_rV?Bfq"ssdqu,s^JcF'rJ,~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZHbs7H?_s763[!:^!V#4CmGm-O''rojUMkN:pgjSn1h
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI.^q[Xu]tD"i\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gIS=?":R$a5+Q'@JqOcYWbNf8pTMM[.EL5(D8K7\Z)J:E#r
+I=$9dH$FOW'm=_AFE;JBEH#i6DJa3*CMIQsBP1rVAIrB^@U`bR?sd8I?!U]?>?b;1=oVS(=8l8#
+<W?%s;uBPg7`e0o7/94@6MWqG<;BP@8bu!T8,GaP7e]FO8Gu-U9)hQZ=oV\);#O2L:A.EW:B+Su
+?2n7.?iOO5@JjU6A,^$:AcHBABDcHBC&VlFC]8,MD>mu4<:NoW<;q18HM2^UI.r!\HMi'eGkcL\
+G5ZRUFQ.B3FS^.WG4g(WGl2j_HN&9jI/A?kIfForJH(3#K)L?%KE-`)L'NKiLl$tGMMqIm!KE-=
+O'7X-P*2#nQ'IZ%R$a;1S"#q=St;UKTq\<XV5C/gWN)u!Xf\b1Yd(L?['d?O\@K2_]Y2%o^qmn*
+`5Ta:aN;TJbK\>Xcd:(fe'umtf%8O+g"P07gtgfChu;O7iSsjss5X1AroX7Ds60FGs6BXMr9XFM
+rpKXOrp]mVq==LUrUfpYrV$3aq=spar;-3cqu$?imf%e;ci8L~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZEa!qc*UrpgWjnF5o8mdBK/m-F!&l07EproS[kjQ#:[
+iS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xu]tD"h\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(D8K7\Z)J:E#r
+I!bm>/U;SbGBS+NFE;JBEH#i6DJa3*CMIQsBP1pgARo=]@U`bR?sd8I?!U]?>?b;1=oVS(=8c/$
+<E)rr;ZK_pf(Z'-Vt6eSV#[Cc7/0.<6N0:EeBtf(\+d?.7JfRL8,PpV8bl!Y9E"\cqu-HmcK`[M
+cM,TTbl:rI?2n7.?iOO5@JjU6A,^$:AcHBABDcHBC&_rFC]A5MD#eJQir70hc0*=NH1cLXHgH.T
+HhMd`H2Mp_GPu^_FnKkLF89kJF7XMNFo-@UGPl^aH22dbHiAEiIK"]qJ,FisJcC?$KE$W)L&Qi,
+LB*/0M>rG5MuJY9NK4"!"d"k0P*;.0PtdR2R$a;1S"-%@StD[LTqeEZV5C/hWN)u"Xf\e2Yd(O@
+['mEP\[f;a]Y2(p^r!t+`Poj;aN;TJbg"GYcdC.ge'umtf@S[.g=k<:rnRt=hr*GOio9"YjQ,G%
+k5XWEkl'cGlMp2Jm/QJPmecJOnGVnQo)81Yo_J1YpAF[\q#1$eqY0mbr;-B[rdk*ps*t~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZEa!qc*UrpgWjnF5o8mdBK/m-F!&l07EproS[kjQ#:[
+iS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xu]tD"h\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(D8K7\Z)J:E#r
+I!bm>/U;SbGBS+NFE;JBEH#i6DJa3*CMIQsBP1pgARo=]@U`bR?sd8I?!U]?>?b;1=oVS(=8c/$
+<E)rr;ZK_pT'1\"JG+KZIe?,(6gmA@62$rGMrT]eM=uc&7JfRL8,PpV8bl!Y9Du6s[f*]8RJrTI
+Qf+2*QiC=i?2n7.?iOO5@JjU6A,^$:AcHBABDcHBC&_rFC]A5MD#eJQY5XgARJWBOH1cLXHgH.T
+HhMd`H2Mp_GPu^_FnKkLF89kJF7XMNFo-@UGPl^aH22dbHiAEiIK"]qJ,FisJcC?$KE$W)L&Qi,
+LB*/0M>rG5MuJY9NK4"!"d"k0P*;.0PtdR2R$a;1S"-%@StD[LTqeEZV5C/hWN)u"Xf\e2Yd(O@
+['mEP\[f;a]Y2(p^r!t+`Poj;aN;TJbg"GYcdC.ge'umtf@S[.g=k<:rnRt=hr*GOio9"YjQ,G%
+k5XWEkl'cGlMp2Jm/QJPmecJOnGVnQo)81Yo_J1YpAF[\q#1$eqY0mbr;-B[rdk*ps*t~>
+JcC<$JcGKEo)AUdrVZQirqcZjrV6Ees7ZEa!qc*UrpgWjnF5o8mdBK/m-F!&l07EproS[kjQ#:[
+iS`YOhVR)EgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xu]tD"h\[f5Z[^NQL
+Za-j?YHG"0X/`2!Vl-DgUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(D8K7\Z)J:E#r
+I!bm>/U;SbGBS+NFE;JBEH#i6DJa3*CMIQsBP1pgARo=]@U`bR?sd8I?!U]?>?b;1=oVS(=8c/$
+<E)rr;uKSq7R]cB7d<M@7d!;77/0.<6N0:E<6\#38Gl!T7JfRL8,PpV8bl!Y9DVfi>5qJ!;"mcF
+:B!u`:B+Su?2n7.?iOO5@JjU6A,^$:AcHBABDcHBC&_rFC]A5MD#eJQ@I@+e;t*cdH1cLXHgH.T
+HhMd`H2Mp_GPu^_FnKkLF89kJF7XMNFo-@UGPl^aH22dbHiAEiIK"]qJ,FisJcC?$KE$W)L&Qi,
+LB*/0M>rG5MuJY9NK4"!"d"k0P*;.0PtdR2R$a;1S"-%@StD[LTqeEZV5C/hWN)u"Xf\e2Yd(O@
+['mEP\[f;a]Y2(p^r!t+`Poj;aN;TJbg"GYcdC.ge'umtf@S[.g=k<:rnRt=hr*GOio9"YjQ,G%
+k5XWEkl'cGlMp2Jm/QJPmecJOnGVnQo)81Yo_J1YpAF[\q#1$eqY0mbr;-B[rdk*ps*t~>
+JcC<$JcGKEo)ARcrquZjrqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojUMkN:pgjSn1g
+io/hRhqm2FgtUQ:g"=s/f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`P]R0_8*h#^:h1l]=GJ^\$i`P
+Za6sBYck43XfJJ%WMcYkV50l\TqJ$LSXc1=R@'A.Q'IStP*(ieO,]*WMi*@ILPCP;K7ec,J:N,u
+I=-BfH?jc8G91pMFEDSEEH,r9DJj<-CMR[!BP;$jAS#C^@q&nU@/aL6?=!P8s'#J,r`T8'!*B,"
+!``3!rDWaIoqq#Po;;A\pnn'[oL/IAmR$Wsk.'igrj_[2s0henqaU<MrCHlYq+CWZ!;ZTirqcir
+qtn[af?Ns3!*oM/ra,M0ra>b7qdTS8rabq<rau1Cr+Q(DrbD@HrbVUOs).kr!9="$m`jt>!."6`
+pNu1Qpj;^\rH\<cq02d\r,q^TpiGtGp2fkJqfVg[pNQO[rH\3brHnNkqgJKnrdXirs+13%rIb-'
+!/:B+!f)SfreU]6Mi7Rn!KE-=O'@^.P*2#mPa.N"Q^F/.R[]e:SXuFFTqS3UUnjlcVl6SpX/rG+
+YHY:;Za7'J[^`lY]=bej^V@V%_SjF4`lQ6Cb0/#RcHjkbdF-Lne^i@(f\,!4gYCW@hV\=j!TE&;
+ir\<'jo4BDkNM..klC#Jli$2LmJlVNn,DhTnbMbSoDS=Vp&4U_p\=O^q>L0aqtp<grU'T8s3CXp~>
+JcC<$JcGKEo)ARcrquZjrqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojUMkN:pgjSn1g
+io/hRhqm2FgtUQ:g"=s/f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`P]R0_8*h#^:h1l]=GJ^\$i`P
+Za6sBYck43XfJJ%WMcYkV50l\TqJ$LSXc1=R@'A.Q'IStP*(ieO,]*WMi*@ILPCP;K7ec,J:N,u
+I=-BfH?jc8G91pMFEDSEEH,r9DJj<-CMR[!BP;$jAS#C^@q&nU@/aL6?=!P8s'#J,r`T8'!*B,"
+!``3!rDN`hT&tP%JFJ'WIfDk/7/0.;6M@&7Mu&=uM>2o(7JfRK8,Z!W8bl!X9)u?t[0O.J[C3KN
+R@3l<qNp3-pm1tcra#M0r*TG2s'be6s'u%=r+5k>s(D7Crb;@Hr+l:Js)%dRriZ0dgR7r+!."6`
+pNu1Qpj;^\rH\<cq02d\r,q^TpiGtGp2fkJqfVg[pNQO[rH\3brHnNkqgJKnrdXirs+13%rIb-'
+!/:B+!f)SfreU]6Mi7Rn!KE-=O'@^.P*2#mPa.N"Q^F/.R[]e:SXuFFTqS3UUnjlcVl6SpX/rG+
+YHY:;Za7'J[^`lY]=bej^V@V%_SjF4`lQ6Cb0/#RcHjkbdF-Lne^i@(f\,!4gYCW@hV\=j!TE&;
+ir\<'jo4BDkNM..klC#Jli$2LmJlVNn,DhTnbMbSoDS=Vp&4U_p\=O^q>L0aqtp<grU'T8s3CXp~>
+JcC<$JcGKEo)ARcrquZjrqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojUMkN:pgjSn1g
+io/hRhqm2FgtUQ:g"=s/f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`P]R0_8*h#^:h1l]=GJ^\$i`P
+Za6sBYck43XfJJ%WMcYkV50l\TqJ$LSXc1=R@'A.Q'IStP*(ieO,]*WMi*@ILPCP;K7ec,J:N,u
+I=-BfH?jc8G91pMFEDSEEH,r9DJj<-CMR[!BP;$jAS#C^@q&nU@/aL6?=!P8s'#J,r`T8'!*B,"
+!``3!r)3Snr'gHOmmm%?l::kCoL/IAmR$VHk"4K%s$urTqaU<MrCHlYq+CWZpf[W!s&&JdpJ9[A
+!*oM/ra,M0ra>b7qdTS8rabq<rau1Cr+Q(DrbD@HrbVUOs).jF!+P=pp/CEZ!."6`pNu1Qpj;^\
+rH\<cq02d\r,q^TpiGtGp2fkJqfVg[pNQO[rH\3brHnNkqgJKnrdXirs+13%rIb-'!/:B+!f)Sf
+reU]6Mi7Rn!KE-=O'@^.P*2#mPa.N"Q^F/.R[]e:SXuFFTqS3UUnjlcVl6SpX/rG+YHY:;Za7'J
+[^`lY]=bej^V@V%_SjF4`lQ6Cb0/#RcHjkbdF-Lne^i@(f\,!4gYCW@hV\=j!TE&;ir\<'jo4BD
+kNM..klC#Jli$2LmJlVNn,DhTnbMbSoDS=Vp&4U_p\=O^q>L0aqtp<grU'T8s3CXp~>
+JcC<$JcGKEo)ARcrquWis8)ckr:p<ds7ZHbs7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTIjlGI^
+io0mp&`;I$h;$c=g=b-1f@JL%eC2kFd;[IYcHa\YbKJ&MaN2EA`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFEDSEEH#jqDA$f&CMR[!BP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(us&/sLfCPm*VrafS7J'"B6h!G>ebmqY\F$d)\G!E/7JoXL8,PpV8bl!X9DSDdq>0p4e]md2
+ra#M0r*TG2s'be6s'u%=r+5k>s(D4Bs(VIIr+l:Jrb_XPs5X"#n'1(?!."6`pj;4Pq0Vg]rH\<c
+q02d\rH7gUq/bnCpiH+Mr,qp\pNQR\rH\3brd4TkqgJKnrdXirs+13%rIb-'s+UH,s+gW1reU]6
+Mi7Rn!KE-=Nrb?)rfU]RPa.N"Q^F/.R[]e:SXuFFTV8'RUSO``Vl-MoWiN8(Y-5(7ZEppG[^WcW
+]">Vg^;%J"_SX71`Q-'@aihlOc-FY^dF$FmeCE.%f@\d1g=tE=h;7&Ii8N\Tj5]4]jo4BDkNM./
+l2U&Klhp,LmJcPNn,DhUnbMbSoDJ7Up&4U_p\=O^q>C*`qu$BgrU0Z9s31Ln~>
+JcC<$JcGKEo)ARcrquWis8)ckr:p<ds7ZHbs7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTIjlGI^
+io0mp&`;I$h;$c=g=b-1f@JL%eC2kFd;[IYcHa\YbKJ&MaN2EA`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFEDSEEH#jqDA$f&CMR[!BP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(us&8rik'mA]m=4YTrC-?HpI"F:qk3kZ!/frtq24Tsq2"o:r'pENr(-cXq+CWZq6^1.!OA-f
+R.ls8QN*<KQM?gG?2e1.?iFI5@JaO6A,^$:Ac?<ABDZBBC&VlFC]8/LD>nGQY5=U@RJ`EPH1cLY
+Hg#kQHhMdaH2Mp_GPu^`FnTqQF6mrBF7jYQFo6FWGPudbH22dcHi8?hIK+cqJ,FisJcC?#KE$W)
+L&Qi,L]<20M#rQmMuJY9NK4"!!K`HCP$sQ=Q'IZ%R$a;1S"#q=St;RITqS3UUnsrdVl?\rX0&M,
+YHY:;Za@-K\%&u[]=bhk^VI\&_SjF4a2l?DbKJ,ScHjkbdF6Upe^i@(f\,!4gYCW@hV[8LiSrkW
+j5f:_roO:Fkii$1s6BXMr9XINrpK[Prp]pWq==LUr:KdWrV$3aq"Xg`r;-0br;?Eimf%e;bl<1~>
+JcC<$JcGKEo)ARcrquWis8)ckr:p<ds7ZHbs7?<_rpp*Z!:^!V$h!ELm-O''lKRQskPjTIjlGI^
+io0mp&`;I$h;$c=g=b-1f@JL%eC2kFd;[IYcHa\YbKJ&MaN2EA`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFEDSEEH#jqDA$f&CMR[!BP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(urDWS^q*ssGnj_t9rC-?HpI"F:s&8\lj[n?#qaLEPpIG-PrCQfWr_*2ms&f2#!)`,[p.smI
+ra#M0r*TG2s'be6s'u%=r+5k>s(D4Bs(VIIr+l:Jrb_XPs'k=opf$T[!."6`pj;4Pq0Vg]rH\<c
+q02d\rH7gUq/bnCpiH+Mr,qp\pNQR\rH\3brd4TkqgJKnrdXirs+13%rIb-'s+UH,s+gW1reU]6
+Mi7Rn!KE-=Nrb?)rfU]RPa.N"Q^F/.R[]e:SXuFFTV8'RUSO``Vl-MoWiN8(Y-5(7ZEppG[^WcW
+]">Vg^;%J"_SX71`Q-'@aihlOc-FY^dF$FmeCE.%f@\d1g=tE=h;7&Ii8N\Tj5]4]jo4BDkNM./
+l2U&Klhp,LmJcPNn,DhUnbMbSoDJ7Up&4U_p\=O^q>C*`qu$BgrU0Z9s31Ln~>
+JcC<$JcGHDoD\[drVZQis8)`jrV6Ees7ZHbs7H?_rpg<anF5o8mdBKAljE(Dl07EqkN:pgjSn0C
+io/hRhqn@g&_u-pg=b-1f@JL%eC2jndEp5=c>_%PbKJ&MaN2E@`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFE;JBEH#i6DJa4hCCY)nBP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(u!`Rb(oqprNk,/&Fo0i=?nO!6+qUP,HoXO:trj_s:!4_p8r'gKPpIG0QrCQfWrC[,aqYC0d
+!;H96gs,Q:s'>V1r*TG2s'be6s'u%=r+5k>s(D4Bs(VIIr+l:Jrb_UOs5a""n]g:Ap3QL\k'ZuO
+p3Q[_rHS-^r-&$]pN67Ql#QT@olU+SrH@s[rHS9dq0N$erd=TkrdOirr.+fus+:3%s+LE+rJ(?-
+!/UW2s,$f7rf$l:!07&>!K`HCOp.&6Q'IZ%rg6WPR[]e:SXuIHTqS3UUnjibVl6SpX/rG*YHY79
+Za7$H[^WcW]">Vg^;%J"_Sa=2`lH0Bb0.uQcHab_dF-LneCE.%f\,!4gYCW@hV[5Ki8N\pirS6&
+roX7D!9jCGs69UMr9XINrpK^Qrp]mVq==LUrUfmXr:^*`q"Xd_rVH9cqu$?imJ_\:bl<1~>
+JcC<$JcGHDoD\[drVZQis8)`jrV6Ees7ZHbs7H?_rpg<anF5o8mdBKAljE(Dl07EqkN:pgjSn0C
+io/hRhqn@g&_u-pg=b-1f@JL%eC2jndEp5=c>_%PbKJ&MaN2E@`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFE;JBEH#i6DJa4hCCY)nBP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(u!`P_`l@8Y\mXOeVr'g3FpI"I;pRqPDo8E!nm>:^rr'gKPpIG0QrCQfWrC[,arj2X1s02[1
+Z*9YiR.-I9QLL7@?2e1.?iFI5@JaO6A,^$:Ac?<ABDZBBC&VlFC]8/LD>eAPY5+I@RJ`HGHMDjL
+I//-_HMr-fGklR]G5ZRXFS^(CEqseLFSp:[G5-:[Gl;p`HN&9jI/A?kIf=ipJH(3#K)L?%K`?c)
+LB!#/M#N82M?&S6N;nk;NrG(?OHKO*"d>19Q'Rd9QrBEAS"#q=StD[LTq\<XUnsueW2ZetXKAV.
+YctC=Za@-K\%&u[]=bhk^VI\&_o0O6a2lBFbKJ/UcHjkbdaQ^qe^i@)g"P07gtgfChr!AMiSsjs
+!T`AAk5XTEkl'cGl2^/Jm/QJPmelPQnGVnQo)81Yo_A+WpAOa\q#'sdqY0mar;6H[rdk*ns*t~>
+JcC<$JcGHDoD\[drVZQis8)`jrV6Ees7ZHbs7H?_rpg<anF5o8mdBKAljE(Dl07EqkN:pgjSn0C
+io/hRhqn@g&_u-pg=b-1f@JL%eC2jndEp5=c>_%PbKJ&MaN2E@`Pf[2_SO%&^V7Co]XkYa\@8oT
+['R*EZ*:F7Xf\Y(Wi;noVPU)`U7n6PSt2C@S!fY2Q^*i#PEM&iO,o9ZN/NRMLkg_>KnG#0JUi9#
+IXQTjH?sj]GB\4QFE;JBEH#i6DJa4hCCY)nBP;$jAS#C^@q&nU@/aL<?<piA>[(E9r`T8's&]2#
+s&K(ur_rY^r'p-Fo1&+;r'g3FpI"I;peq/lj@SN*!(m&Yr'gKPpIG0QrCQfWrC[,aqcNi!!*8kl
+m83LPn4s!hra,M0ra>b7qdTS8rabq<rau1Cqe6"DrbD@HrbVRNrGMXEl;[XZm8We*pj;.Nq0Vg]
+rH\?dq02a[rH7jVqK(nAq/c4Nr,qs]pil[]rH\3brd4WlqgJHmrdXirs+13%rIb-'s+UE+s+^T1
+re^Z4!/pi8s,@#=rf7)AOoCLIPE_>tQC%T<;jj)DS"-%@T:hmOU8+N[V5L5iWN*##Xf\e2Yd(O@
+['d?O\@K2_]Y2%o^qmn*`5Ta:aN;TJbK\>Xcd:(fe'umtf%8R-g=k<:h;-rFhr*GOir7s=jQ6C'
+s5sCGrTX@I!:0RLs6]gRr9sXSrUK^SrU^![q"=RYrV-*^r;$<fp\Xjcqu,p]JcEsoJ,~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojIIkPjTIjlGI^
+io0mpIG`o;h;$c=g=b03f@SU(eC;sqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(hd\[],W
+[^<BIZE^X;Y-"e+WiE%rVl$;dUS=HTT:VUDS"#h5R$X)'P`q8mOH5H^N/W[PM26qAL4t84Jq8H&
+Isl`mH[:!`G^"?LG'.nJEcH)<Df0H0Chmg$Bk_6oB4b^dA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&
+r`9&!!`[h)pnm)LrhfXln#$(Rr'g6Gp-\F<rn7;'rn$VLm'u_trj_p9rODboqaU<MrCHiXqF^]Z
+s%Eanq"XUXp@\(MoC1&mblGu_c2>f`bPtlJ?Me+0@/aU4@fBm;AG]s<B)ZH@B`;`GCAVfHD#S;L
+DZAbtbPBBPc0<IGHMMpKI/83`HMr-fGklR^G5ZRXFS^(AEqseNFSp:ZG56@\Gl;paHN&9jI/A?k
+If=ipJH(3#K)C9$K`?c*LB!&/M#N82M?&S6N;nk;NrG(?OHKO*@[!%AQ'R`&R$a;1S"#q=St;RI
+TqS3UUnsrdVl6VqX/rG+YHY7:Za7'J[^WfX]"G\h^V@S#_Sa=2`lH0Bb0/#RcHab`dF-LneCN7'
+f\,!4gYCW@hV[8LiSrkWj5f=`roO:Fkii$1s69UMrTsONs6fgRrp]mVqXXUVr:KdWrV$0`q"Xd_
+rVH6br;?EimJ_\:bQ!(~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojIIkPjTIjlGI^
+io0mpIG`o;h;$c=g=b03f@SU(eC;sqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(hd\[],W
+[^<BIZE^X;Y-"e+WiE%rVl$;dUS=HTT:VUDS"#h5R$X)'P`q8mOH5H^N/W[PM26qAL4t84Jq8H&
+Isl`mH[:!`G^"?LG'.nJEcH)<Df0H0Chmg$Bk_6oB4b^dA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&
+r`9&!!`YeapjW9opODjdmsjqXr^QfSoL/C?o0W5Fg5>0Pr'gKPpIG0Qr(6`WrCd/a$F-h>YHY46
+Y-"goopFs0s-E/@s'>Y2qd9A2raG_6raYt=qdoe>rb).Brb;CIqeQ4Jrb_RN!NrR"R,+2/R.bk%
+HfTSNHhMdaH2W!`GPu^`Fn^"SF6@T>F8'eSFo6FYGPudbH2;jdHiAEiIK"]pJ,FisJcC?"KE$W)
+L&Qi,L]<20M>rG5MuJ\8N<#"<Nrb?)rfU`SPa.N"QC!u+R@9V7S=Q7CT:hmOU8+N\VPg>jWiE,$
+Xfek3Yd1UA[C3NQ\[f;a]Y2(p^qmn*`5Ta:aN;TJbg"GYcdC.ge'umuf@S[.g=k<:h;-rFi8ESR
+ioB([jlQL(!pAe2rosIJ!:0UMrpBaRr9sXSrUKaTrU]sZq"=UZr:g!]r;$<fpA=dcqYfg\JcEpn
+J,~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEa!qc*Urpg-\nF6GG!Uf@SliHG;rojIIkPjTIjlGI^
+io0mpIG`o;h;$c=g=b03f@SU(eC;sqdF$=ecHa\YbKJ&MaN2EA`Pod5_SX.)^V@Lr]Y(hd\[],W
+[^<BIZE^X;Y-"e+WiE%rVl$;dUS=HTT:VUDS"#h5R$X)'P`q8mOH5H^N/W[PM26qAL4t84Jq8H&
+Isl`mH[:!`G^"?LG'.nJEcH)<Df0H0Chmg$Bk_6oB4b^dA7PUJ!F]C8?O'nC?!LW=>?_#/s&f;&
+r`9&!!`W)sqaLHQlppS8n43IIr'g6Gp-\F<!*/qrr_rhhj@SK)rCQoUqaU<MrCHiXqF^]Zs%NDo
+rE&u!nPSUKpJ:QZs'>Y2qd9A2raG_6raYt=qdoe>rb).Brb;CIqeQ4Jrb_RN!FfL%<;fb^<;(Y6
+HfTSNHhMdaH2W!`GPu^`Fn^"SF6@T>F8'eSFo6FYGPudbH2;jdHiAEiIK"]pJ,FisJcC?"KE$W)
+L&Qi,L]<20M>rG5MuJ\8N<#"<Nrb?)rfU`SPa.N"QC!u+R@9V7S=Q7CT:hmOU8+N\VPg>jWiE,$
+Xfek3Yd1UA[C3NQ\[f;a]Y2(p^qmn*`5Ta:aN;TJbg"GYcdC.ge'umuf@S[.g=k<:h;-rFi8ESR
+ioB([jlQL(!pAe2rosIJ!:0UMrpBaRr9sXSrUKaTrU]sZq"=UZr:g!]r;$<fpA=dcqYfg\JcEpn
+J,~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEas7?<_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmuYNe^W*tda?Ihcd'h\bfe2PaiVWF`l5p8_ns:,^q[Xu]tD"h\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(A6K7\Z)
+J:DuqI!^0cH$FOWG'%hIEcH)<Df0H0ChmesC2%BqBP1pgARo:\@U`bRra,_5?![G7!aAi3r`K;)
+=',?$!`dn*qki&En#$%Qr'g6Gp-\I=rnI>(rjh+"!4hC)rjVm:r'gKPpIG0QrCQfWrCd/a$2*r^
+oCDJBnaQ#Fc0imLc1oK_c25``b5tsU?Me+0@/aU4@fBm;AG]s<B)ZH@B`;`GCAVfHD#S;KD?4\:
+rlb/^o$-CBpNlX^ja?lNpNla_rHS-^rHA-^piQ@Rj`:3=pN6=UrHA!\rcnBeqKi-frd=TkrdOir
+r.+fus+:0$s+LE+rItB/Lku"d!fDnorepo<NfO+"!K`HCOo^c2rfpTOQ^F/.R[]e:SXuFFTV8'R
+USO]^VPgAlWiE,%Xfek3Z*L^C[C3NR\[f>b]Y2(p^r!t+`Poj;aN;TJbg"GYd*^7he'uq!f@S[.
+g=k<:h;-rFi8ESRro4%?jo4BDkNM./l2U&Kli-8MmJlVPn,DhUnbVhToDS=Up&4U^p\4I]q>C*_
+qu$BgrU'T8s2t@l~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEas7?<_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmuYNe^W*tda?Ihcd'h\bfe2PaiVWF`l5p8_ns:,^q[Xu]tD"h\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(A6K7\Z)
+J:DuqI!^0cH$FOWG'%hIEcH)<Df0H0ChmesC2%BqBP1pgARo:\@U`bRra,_5?![G7!aAi3r`K;)
+=',?$!`bkbqg\Noqg\-dmsjtYrC6]RoL/C?oKr>H!/fcmq24Kpr'gKPpIG0QrCQfWrCd/a$*UM6
+XfSV)X/`2kR+@T*?!^k7?iOO5@JjU6A,g*:AcHBABDcHBC&_rFC]A5MD>S2ODlrc$hO4;/pNlX^
+ja?lNpNla_rHS-^rHA-^piQ@Rj`:3=pN6=UrHA!\rcnBeqKi-frd=TkrdOirr.+fus+:0$s+LE+
+rItB/Lku"d!fDnorepo<NfO+"!K`HCOo^c2rfpTOQ^F/.R[]e:SXuFFTV8'RUSO]^VPgAlWiE,%
+Xfek3Z*L^C[C3NR\[f>b]Y2(p^r!t+`Poj;aN;TJbg"GYd*^7he'uq!f@S[.g=k<:h;-rFi8ESR
+ro4%?jo4BDkNM./l2U&Kli-8MmJlVPn,DhUnbVhToDS=Up&4U^p\4I]q>C*_qu$BgrU'T8s2t@l~>
+JcC<$JcGHDo)AUdrVZQirqcZjrV6Ees7ZEas7?<_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmuYNe^W*tda?Ihcd'h\bfe2PaiVWF`l5p8_ns:,^q[Xu]tD"h\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWbNJrgSMM[.EL5(A6K7\Z)
+J:DuqI!^0cH$FOWG'%hIEcH)<Df0H0ChmesC2%BqBP1pgARo:\@U`bRra,_5?![G7!aAi3r`K;)
+=',?$!``/tr^H]Rmml_6ogf!N!(ZuWr'g6Gp-\I=pf.;diCW3'r^m#VqaU<MrCHlYq+CTYs%EDo
+r)Wbrr)!)aj&#JG"&<-.?Me+0@/aU4@fBm;AG]s<B)ZH@B`;`GCAVfHD#S;KD?4Zak>VF[l;[M(
+q0V4Nq0Vj^r-A6cq02d\rH7mWqK(b=qK)CQr,qs]q02g_rH\6crd4WlqgJHmrdXirs+13%r.G$&
+s+UE+!f)SfrJ:T5Mi7Rn!f`5#rf7)AOoCLEPEc'3=I,;@R$jD4S"-%@StD[LTq\<XUnsrdW2Zes
+X0&M,YHY:;Za@-K[^`lY]=bei^V@S$_Sa@3`lH0Bb0/#RcHaeadF-Lne^i@(f\,!4gYCW@hV[8L
+iSsjs!T`AAjoX`0kl0iHlMp2Lm/HDPmelPQnG_tSo)81Yo_8%WpAF[Zq#1$dqY'gar;-BZrdk*l
+s*t~>
+JcC<$JcGHDo)AUdrVZQirqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTEjlHF$
+"leM!i8<Djh%nf#g=k64f@SU)e^W*tda?Ihcd'h\bl5e7b/q`Ga2Z*:_ns:,^q[Xu]tD"i\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWaNJrgSM2@%DL5(A6K7\Z)
+J:;opI!^0cH$FOWF`__HEcH)<Df0H0Chmg$Bk_6oB4b^dA7K+Y@UW[D?NOP>?2e(1>?Y50=oVV(
+=8l5#f`%btVt$Ya8,YpS7J'"@6h`nIh>H(-g\eVC\F7!&\GSen7e]FN8Gu-V9)VE^9F=M_nF,f5
+mHs9,cMGfVcM>`bbl5labl>lcbkK<[?Mn10@/j[5@fBm:AGg$=B)ZH@B`;`FCA_lHD#\ALDZ=YT
+j8R6tbk'*DbkQMZHf]YNHhVjbH2W!`GPu^`Fng(UF8'_KEVFMMF80kUFo?LZGQ)jcH2DpeHiAEi
+IK"]pJ,FisJcC?"KE$W)L&Hc+L]<20M>rG5MuJ\8N<#"<O8k:AOoCLEPEc'3<0il<R$jD3S"#q=
+St;RITqS3VUnsrdVl6SpX/rG*YHY79Za7$H[^WcW]">Vg^;%G!_SX71`Q-'@aihlOc-FY^dF$Fm
+eCE.%f@\g2gYCW@hV\=j$fU+*j5f=`k2tjikl0iHlMp2Lm/HDPmelPRnG_tSo)81Yo_A+WpAF[Z
+q#'scqY0mar;-BZrdk*ks*t~>
+JcC<$JcGHDo)AUdrVZQirqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTEjlHF$
+"leM!i8<Djh%nf#g=k64f@SU)e^W*tda?Ihcd'h\bl5e7b/q`Ga2Z*:_ns:,^q[Xu]tD"i\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWaNJrgSM2@%DL5(A6K7\Z)
+J:;opI!^0cH$FOWF`__HEcH)<Df0H0Chmg$Bk_6oB4b^dA7K+Y@UW[D?NOP>?2e(1>?Y50=oVV(
+=8l5#TDj?7J,k)cJFA!]IfDq:7f,XH7.iqA6MR8RMW0KhMX62t7JoXL8,PpV8bu'X9E%Tc9rn8n
+ri#psWUcG.Qi:=h?iFI5@JjU6A,^$:AcHBABDcHBC&VlFC]8/MD>S5NDZQrAp6ad+r0[8*pj;+M
+q0Vj^rH\?dq02d\rH7mWqfDLPp2ThIqK)FRrH8'^q02g_rH\9drd4WlqgJHmrdXirs+13%r.G$&
+s+UE+s+gW1re^Z4!/pi8s,@#=rf@)@!0R8D!L&cIPuO'9R$a;1R[]e:SXuFFTV8'RUnjiaVl-Jm
+WiN5'Xfnt5Z*UdD[C3QS\[oDc]tV7r_8=(-`Pom=aN;WKbg"GZd*^7ieC<%"f@S[/g=tE=h;7&g
+i!\N'j5]4^jlY^gkNMp0s6BXMrp9XOs6fgRs7$$XqXXUVrUfmXr:^'_p\=[^r;-0bqu$<hmJ_\:
+ao?k~>
+JcC<$JcGHDo)AUdrVZQirqcZjr:p<ds7ZHbs7H?_rpg-\nF6GG!Uf@SliHG;rojIIkPjTEjlHF$
+"leM!i8<Djh%nf#g=k64f@SU)e^W*tda?Ihcd'h\bl5e7b/q`Ga2Z*:_ns:,^q[Xu]tD"i\[f5Z
+[^NQLZa-j?YHG"/X/`1uVl-DfUnaZXTV%gHS=?"9R$a5*Q'@JqOcYWaNJrgSM2@%DL5(A6K7\Z)
+J:;opI!^0cH$FOWF`__HEcH)<Df0H0Chmg$Bk_6oB4b^dA7K+Y@UW[D?NOP>?2e(1>?Y50=oVV(
+=8l5#;uT5a7dik27f#XO7fQ!W7f,XH7.iqA6MOR[9&iJC8EEG@7JoXL8,PpV8bu'X9E%Tc9i_!g
+oMGQbg/.cEra,M0ra>b7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVUOqelFPs'X2Qpj2^^ja?lNpNld`
+rHS-^rHA-^piQCSpN#tIpN$+OpiQIWrHA!\rcnBeqg/6grd=TkrdOirr.+fus+:0$s+LE+rJ(?-
+s+pZ2s,$f7rf$l:!07&>s,[5CrfR;GPl?qIQC!u+R@9S6S"-%@StD[LTq\?YV5C/gW2ZetXKAV.
+YctC=Za@-K\%&u[]=bhk^V@V%_SjF4a2l?DbKJ,ScHjkbdF6Upe^i@(f\5'6gtgfChu;OAiSrnX
+jQ5Lck3(pkrosIJs6K[NrpBaRr9s[TrpfjUrU^![q"=RYr:fs\r;$9ep\XjcqYfg\JcEjlJ,~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEa!qc*Urpp*Z!:^!V(%1JVm-O'(lKRQski_*jjlGL_
+j5T%si.'Y@h;-l@gY1B7f[na+e^`1!e'cXkd*L"_c-4ASb0%iIaN)<>`P]R0_8*h#^:h1l]=GJ^
+\$i`PZa6sBYck43XK/A$W2HPjUnjc[TqJ$LSXc1=R@'A.Q'IStP*(ieNfB!VMi!:HLPCM9K7ec,
+J:E#rI=-BfH?jaZG'3h,%<HQ0EH#i6DJa3*CMIS_BE`$\AS#C^raGn:@/aL7?<pk9>QS,5>5h\)
+=T;J&<WLauVu*@iV>R4i8,PjS7Irq@6hj"Ch#P%a\`C9h\bWc57JfRK8,Z!W8bl!X9DqNa:&XDX
+lMg&JcMYrWcM>`\bjWaT?Mn10@/aU4@fKs;AGg$<B)ZH@B`DfGCA_lHD#S;LDZ4PTE9$l>qTSTV
+l-/pKpj;+Mq0Vj^rH\?dq02g]rH7mWqfDRRn8\8EqfDOSrH8'^qKMp`rd"BerHnQlqgJHmrdXir
+s+13%r.G$&s+UE+s+gW1re^Z4s,6l8s,@#=rf@)@!0R8D!L&cIQ!'E>R$a;0R[]e:SXuFFTV8'R
+USO]^VPgAlWiE,$Xfek3Yd1UA['mEP\@K2_]Y2%o^qmn*`5T^9aN2NIbKS8Wcd:(fe'umtf%8R-
+g=k<:h;-rFi8ESRro4%?jo4BDkNM./klU/9li$/MmJcPPn,DhUnb_nUoDS=Vp&+O]p\4I\q>C*_
+qtp<frTsN7s2k:k~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEa!qc*Urpp*Z!:^!V(%1JVm-O'(lKRQski_*jjlGL_
+j5T%si.'Y@h;-l@gY1B7f[na+e^`1!e'cXkd*L"_c-4ASb0%iIaN)<>`P]R0_8*h#^:h1l]=GJ^
+\$i`PZa6sBYck43XK/A$W2HPjUnjc[TqJ$LSXc1=R@'A.Q'IStP*(ieNfB!VMi!:HLPCM9K7ec,
+J:E#rI=-BfH?jaZG'3h,%<HQ0EH#i6DJa3*CMIS_BE`$\AS#C^raGn:@/aL7?<pk9>QS,5>5h\)
+=T;J&<WJcJJFA!^If;k87f5^H7.s"C6N3_ZU&C_aMW0KgMXQE"7JfRK8,Z!W8bl!X9DqNa:&([W
+R+Rc*?Mn10@/aU4@fKs;AGg$<B)ZH@B`DfGCA_lHD#S;LDZ4PTE3/`"i0jP2pj2^^ja?lNpNld`
+rHS-^rc\6_piQCSq/YtEq/Z@RpiQIWrHA$]rcnEfqg/3fs*X]lrdOirr.+fus+:0$s+LE+rJ(?-
+s+pZ2s,-i7rf$l:!07&>s,[5CrfR;GPl?qNQC!u+R@0M5S"-%@StD[LTq\<XUnsrdW2ZesX/rG+
+YHY7:Za7$I[^WcW]">Vg^;%J"_Sa=2`Q-'@b0.uPcHab_dF-LneCE.%f\,!4gYCW@hV[8LiSsjs
+!T`AAjoX`0kl0fJlKdd7li?GPmeuVRnG_tTo)81Yo_A+WpAF[Zq#'scqY'g`r;-BYrdk*ks*t~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEa!qc*Urpp*Z!:^!V(%1JVm-O'(lKRQski_*jjlGL_
+j5T%si.'Y@h;-l@gY1B7f[na+e^`1!e'cXkd*L"_c-4ASb0%iIaN)<>`P]R0_8*h#^:h1l]=GJ^
+\$i`PZa6sBYck43XK/A$W2HPjUnjc[TqJ$LSXc1=R@'A.Q'IStP*(ieNfB!VMi!:HLPCM9K7ec,
+J:E#rI=-BfH?jaZG'3h,%<HQ0EH#i6DJa3*CMIS_BE`$\AS#C^raGn:@/aL7?<pk9>QS,5>5h\)
+=T;J&<WH(p7e9.17fQ!P7fGpU7f5^H7.s"C6N1$_<W,P28c2$S7e]FO8Gu-U9)_K^9E7f^<6.o9
+?Mn10@/aU4@fKs;AGg$<B)ZH@B`DfGCA_lHD#S;LDZ4PTE*pskpj2^^ja?lNpNld`rHS-^rc\6_
+piQCSq/YtEq/Z@RpiQIWrHA$]rcnEfqg/3fs*X]lrdOirr.+fus+:0$s+LE+rJ(?-s+pZ2s,-i7
+rf$l:!07&>s,[5CrfR;GPl?qNQC!u+R@0M5S"-%@StD[LTq\<XUnsrdW2ZesX/rG+YHY7:Za7$I
+[^WcW]">Vg^;%J"_Sa=2`Q-'@b0.uPcHab_dF-LneCE.%f\,!4gYCW@hV[8LiSsjs!T`AAjoX`0
+kl0fJlKdd7li?GPmeuVRnG_tTo)81Yo_A+WpAF[Zq#'scqY'g`r;-BYrdk*ks*t~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n1g"=p.f%'cLJ()indEp4bcHXSVbK@rKaN2EA`Pf[2_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@S!fY2QBd`"PEM&iO,f3YN/NOLLkg_=KS+o/
+JUi6!I=6KiH?sg[GBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]p<@:9(A!a]/<r`fM/>$Co.
+s&f;&!ERdtVu*@iV>d@i8,PjS7Irq?6i'+MhVJ(crOV^5laZAnqmcPmr'pENr(-cXqF^]Zr_3>d
+r941Fs60I-rQY2a!71Meq9A`Zq9/`Zqof"Gqd9A2raG_6raYt=qdoe>rb).Brb;CIqeQ4Jrb_OM
+rbhgVj87$qbk96GbkQMZHff_OHhVjaH2W!aGPu^`Fnp.WF8BqCEVa_RF80kVFo?L[GQ)jdH2Dpe
+HiAEjIK"]pJ,FisJcC?"KE$W)L&Hc+L]<2/M#rQmMuJ\8NW5%<NsCc/OcklkPEc'3!LB)OQsZ8M
+S"#q=St;RITqS3UUnjiaVl-JmWiN5'Xfek3Z*L^C[C3NR\[f;a]Y2%o^qmn*`5Ta:aN;TJbK\>X
+cd:(fe'umuf@S[.g=k<:h;-rFi8ESRj5]4]jlY^gkNMp0s69UMrTsROs6fjSrp]sXqss^WrUfmX
+r:^'_pA"R]r;--aqY^3gmJ_\:aT$b~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n1g"=p.f%'cLJ()indEp4bcHXSVbK@rKaN2EA`Pf[2_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@S!fY2QBd`"PEM&iO,f3YN/NOLLkg_=KS+o/
+JUi6!I=6KiH?sg[GBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]p<@:9(A!a]/<r`fM/>$Co.
+s&f;&!EPiIJFS-aIf)_67f5^H7.iqD63*hZU]7%gMt;hlM><%uM>Tg?7e]FN8Gu-V9)VE^9`Iid
+Vu*F^R,jV4QM[$K?Me+0@/aU4@fBm;AG]s<B)ZH@B`;`GCAVfHD#S;KDZ4PTE3/YuigKb4pj2^^
+k'ZuOpNla_rHS0_rHA-^q/lOUqJtnAqJuLTpiQLXrHA$]rcnEfqg/6grd=WlrdOirr.+fus+:0$
+s+LE+rJ(?-s+pW1!fDnorf$l:s,R)>#EY(1P*2#mPl?pKQC%T<?^[@PS"-%@StD[LTq\<XUnsrd
+Vl6SpX/rG*Y-5(7ZEppG[^N]V\[oGd]tV7s_8=+.`Q#s>ai_fMc-FV\d*^:jeC<($f@\d1g=tE=
+h;7&Ii8N\Uj5f:_k2tjikl0iHl2^/Km/QJQmeuVRnGi%Uo)81Yo_A+WpAF[Yq#'scqY'g_r;-BZ
+rdk*js*t~>
+JcC<$JcGHDo)ARcrquWis8)`jrV6Ees7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n1g"=p.f%'cLJ()indEp4bcHXSVbK@rKaN2EA`Pf[2_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@S!fY2QBd`"PEM&iO,f3YN/NOLLkg_=KS+o/
+JUi6!I=6KiH?sg[GBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]p<@:9(A!a]/<r`fM/>$Co.
+s&f;&!EN.p7efL&7f5dS7f5^H7.iqD6MX[W9&</.8GkpS7e]FN8Gu-V9)VE^9`Iib<<#tu<rZ%i
+:]OAP;#O2e;#al!?iOO5@JjU6A,g*:AcHBABDcHBC&_rFC]A5MD>S5MDZOfacrBddpj;.Nq0Vj^
+r-A6cqKMm]rH7pXr,_^TlZ)cAr,_XTrcS0_qKMp`rd"Berd4Wlr-eQnrdXirs+13%r.G$&s+UE+
+s+gW1rJ:T5Mi7Rns,I&=rf7;GOcbfiPEV71Pl[2;rg7&\R[]e:SXuFFTV8'RUSO]^VPg>jWN*##
+Xf\b0Yd(L?['d?N\@K/]]Y(ql^VI\&_o0O6a2lBFbKJ/UcHjkbdaQ^qf%8O+g"P07gtgfChr*GO
+ioB([jQ5OdkND(.l2U#Kli$2MmJlVQn,DhVnb_nUoDS=Vp&+O]p\+C[q>C*_qtg6erU'T8s2b4j~>
+JcC<$JcGHDo)ARcrVZQirqcZjrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T(Wi8EMLrnRq:gY1B7g"=p.f%'cLJ()indEp4bcHXSVbK@uLaN2EA`Poa3_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=KS+o/
+JUi6!I=6KiH?jaZGBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]pB@:3JM?X@&Er`oJ-!*]>(
+s&]8&d\lf9rMBOkqa^QRr'g0EnjEFDq;1kWo""D&m^`;+r'gKPpIG0Qr(6`WrCd,`r_<CT!9jCE
+rQbGfq9Juar6G,_q98ZXpWEMBr*TG2s'bh7raYq<r+5n?rb).Brb;@Hr+l:Js)%XNrbqdTq9/WY
+p<E*Nrlb;bpj2^^k'ZuOpNld`rHS-^rHA0_piQFTqJtnAqJuLTq/lRXrc\-^rcnEfqg/9hrd=Wl
+rdOirr.+fus+:0$s+LE+rJ(?-s+pW1s,$f7rJ^c9!07&>s,[5Crf[;F!0mJJ!LB)OQr09?S"#q=
+SXuFFTV8'RUSO]^VPgAlWiE,$Xfek3Yd(O@['d?O\@K2_]Y(tn^VI_'_o9U7a2lBFbKS5VcHstd
+daQ^rf%8O+g"P07h;-rFrnmt=ioB([jo4BJkNM-ol0@R"li-8NmJlVQn,MnVnb_nVoDS=Vp&+O]
+p\4I[q>C*^qtp<frTsN7s2Y.i~>
+JcC<$JcGHDo)ARcrVZQirqcZjrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T(Wi8EMLrnRq:gY1B7g"=p.f%'cLJ()indEp4bcHXSVbK@uLaN2EA`Poa3_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=KS+o/
+JUi6!I=6KiH?jaZGBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]pB@:3JM?X@&Er`oJ-!*]>(
+s&]8&fmrUBq0r32r'pTQnjN%9s$HOWpP\-j!/p0#r'gKPpIG0Qr(6`WrCd,`r_3BjqPa"Qrg*VP
+jd5_-s'GV1ra>b7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVUOqelCOrc%FqigKe5pj2^^k'ZuOpNld`
+rHS-^rHA0_piQFTqJtnAqJuLTq/lRXrc\-^rcnEfqg/9hrd=WlrdOirr.+fus+:0$s+LE+rJ(?-
+s+pW1s,$f7rJ^c9!07&>s,[5Crf[;F!0mJJ!LB)OQr09?S"#q=SXuFFTV8'RUSO]^VPgAlWiE,$
+Xfek3Yd(O@['d?O\@K2_]Y(tn^VI_'_o9U7a2lBFbKS5VcHstddaQ^rf%8O+g"P07h;-rFrnmt=
+ioB([jo4BJkNM-ol0@R"li-8NmJlVQn,MnVnb_nVoDS=Vp&+O]p\4I[q>C*^qtp<frTsN7s2Y.i~>
+JcC<$JcGHDo)ARcrVZQirqcZjrV6Bd!;?Bas7H?_rpg-\nF6GG!Uf@Sm/QAblKRQski_*jjlPR`
+j5T(Wi8EMLrnRq:gY1B7g"=p.f%'cLJ()indEp4bcHXSVbK@uLaN2EA`Poa3_SO%&^V7Co]Xt_b
+\@8oT['R*EZ*:F7XfSS'Wi2hnVPL#_U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=KS+o/
+JUi6!I=6KiH?jaZGBS+NFE;JBEH#i6DJa3*CMIQsB`D]JAn>OaA,]pB@:3JM?X@&Er`oJ-!*]>(
+s&]8&pI>'Ncpmn&r'pTQnjN%9s$HN^pIa:6nOWRHqaU<MrCHiXqF^]Zr_3;cs&B"urDrnqqGH'F
+pJ:fqr*TG2s'bh7raYq<r+5n?rb).Brb;@Hr+l:Js)%XNrbqdTcrBddpj;.Nq0Vj^rH\?dq02d\
+rcS!Xr,_^TlZ)cAr,_[UrH8*_qKMp`rd"Bes*O`mr-eQnrdXirs+13%r.G$&s+UE+s+gW1rJCQ3
+!/pf7s,@#=rf@)@!0R8Ds-!GIrfmMMQi<@LR@9V7S=Q4BStD[LTq\<XUnsrdW2ZesX/rG+YHY79
+Za7$H[^WcW]">Vf^;%Fu_SX40`Q#s>ai_fNc-FV]dF$CkeCE.%f@\d1g=tH>hV\=j"l\J$j5f>$
+jp:/6kiq?slKdd8m/QJQmeuVSnG_tTo)A7Zo_A+WpAF[Zq"smbqXsa_r;-BYrdk*is*t~>
+JcC<$JcGHDo)ARcrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=<gtUQ:g"G$0f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:+^V@Lr]Y(kf
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS=HTT:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY%q]BaA7K+Y@UWYP?XI,G?2e+/>Q7n+
+=oVUTVt-__V#[Cg8,YpS7Iik;6i#R=]BHia\c92<7JfRK8,PpV8bl!X9DqQ`:&jAUjo=KCjo!C(
+c2#ZUc2#TZbP''Y?Me+0@/aU4@fBm;AGg$<B)ZH@B`;`GCAVfHD#S;KDZ4SRDue&VbPBBVc19*V
+bQ#f]HM;dMI//-_HMr-fGkuX_G5ZRZFSp4WEp%H>ErC(TFT$@]G5HL_GlE!dHN&9kI/A?lIf=iq
+JGt-"K)C9$K`?c)LB!&/M#E21MZ8V6N;nn;NrG(@OHG\)Op@28Pa.N"QC%T<<gfDGS"-">St;RI
+TqS3UUnjiaVl-JmWiE/&Xfek3Z*L^B['mEP\@K2_]Y2%o^VRe(_o9U7aN2KGbKS5VcHstddaQ^r
+f%8O+g"P39h;-rFi8ESRro4%?jo4BCkNMp0!p]+;rp9[Ps6fjSs7$$Xr:9gXrq-!YrV$-_p\=X]
+qtg$`qY^3gm/DS9`rCP~>
+JcC<$JcGHDo)ARcrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=<gtUQ:g"G$0f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:+^V@Lr]Y(kf
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS=HTT:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY%q]BaA7K+Y@UWYP?XI,G?2e+/>Q7n+
+=oVUVJFS-cIecM47f,XF7.N_@UrSDmMZ$!@7e]FN8Gu-U9)_K^9`@c`W;ideR,XJ+Q2k7g?iOO5
+@JjU6A,g*;Ac?<@BDcHBC&_rFC]A5MD>S5MDuO\UQgpI(RJrTKHM;dMI//-_HMr-fGkuX_G5ZRZ
+FSp4WEp%H>ErC(TFT$@]G5HL_GlE!dHN&9kI/A?lIf=iqJGt-"K)C9$K`?c)LB!&/M#E21MZ8V6
+N;nn;NrG(@OHG\)Op@28Pa.N"QC%T<<gfDGS"-">St;RITqS3UUnjiaVl-JmWiE/&Xfek3Z*L^B
+['mEP\@K2_]Y2%o^VRe(_o9U7aN2KGbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRro4%?jo4BC
+kNMp0!p]+;rp9[Ps6fjSs7$$Xr:9gXrq-!YrV$-_p\=X]qtg$`qY^3gm/DS9`rCP~>
+JcC<$JcGHDo)ARcrVZQirqcZjr:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=<gtUQ:g"G$0f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:+^V@Lr]Y(kf
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS=HTT:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY%q]BaA7K+Y@UWYP?XI,G?2e+/>Q7n+
+=oVU?7eoRQ7f,XF7.N_@<rGVc8cVHT9'o4@8Gu!S7e]FN8Gu-U9)_K^9`@`d<Vfbp;u0Dk;;tFG
+:B4_u?iOO5@JjU6A,g*;Ac?<@BDcHBC&_rFC]A5MD>S5MDuO\U<RFe@HM;dMI//-_HMr-fGkuX_
+G5ZRZFSp4WEp%H>ErC(TFT$@]G5HL_GlE!dHN&9kI/A?lIf=iqJGt-"K)C9$K`?c)LB!&/M#E21
+MZ8V6N;nn;NrG(@OHG\)Op@28Pa.N"QC%T<<gfDGS"-">St;RITqS3UUnjiaVl-JmWiE/&Xfek3
+Z*L^B['mEP\@K2_]Y2%o^VRe(_o9U7aN2KGbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRro4%?
+jo4BCkNMp0!p]+;rp9[Ps6fjSs7$$Xr:9gXrq-!YrV$-_p\=X]qtg$`qY^3gm/DS9`rCP~>
+JcC<$JcGHDnc&LcrVZNhs8)`jrV6Ees7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=<gtUQ:g"=s/f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS4BST:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY$>*j\A7K+Y@UWYPra,_5?![G7!aAi3
+rE9/&s&T2$go'Y=rMBNbq+(?Pr'g-DoL&N4s53gfl+5f`!4_trqaU<MrCHiXqF^]Zr_38brT!t=
+ro=(*p!3*Pq98ZXp<!AAr*TG2s'be6s'u%=r+5k>s(D7Crb;@Hr+l:Jrb_RNrbqdTqf)UVrQG#\
+ps&ESqTAl_pNlU]k^<2Qp3Q[_rHS0_rHA0_q/lOUqf:h=qf;UUqK2^Zrc\0_rcnEfr-J?hs*X`m
+rdOlsr.+fus+:0$s+LE+rJ(?-s+pW1s,-i7rf$l:s,R)>s,[5Crf[;F!0mJJs-<YOrg7;cR[]e:
+S=Q7CT:hmOU8+N[V5C/gW2ZesX/rG*YHY79ZEppG[^NZU\[oDc]tV7s_8=+.`Pom=aN;WKbg"GZ
+d*^7ieC<%"f@\d1g=tE=h;7&Ii8N\Uj5f=`k2tjjkiq?slKeE8!q#FDrU9dUrpfpWrq$*\q=X^[
+r:fmZr;$6dp&"U`qYfd[JcE^hJ,~>
+JcC<$JcGHDnc&LcrVZNhs8)`jrV6Ees7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=<gtUQ:g"=s/f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS4BST:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY$>*j\A7K+Y@UWYPra,_5?![G7!aAi3
+rE9/&s&T2$gjnpErdOlss%)rUr'pTQnO3":rM0=e`/FR_qaU<MrCHiXqF^]Zr_38brMTUkoU,6:
+qj-oAp6G\br*TG2s'be6s'u%=r+5k>s(D7Crb;@Hr+l:Jrb_RNrbqdTqf)UVopFg.s-WP,pj;4P
+q0Vg]rH\?dqKMm]rcS$Yr,_aUk&L9=r,_^VrcS3`qfi$ard"Efrd4Zmr-eQns*srss+13%r.G$&
+s+UE+s+gW1rJCQ3s,6l8s,I&=rf@)@!0R8Ds-!GIrg!ML!13\PAso*WS"-">St;RITqS3UUnjia
+Vl-JmWiE,$Xf\e2Yd(L?['d?N\%0&\]=bhk^VI\&_o0O5a2l?DbKJ,ScHjkbdF6Upe^i@)g"P07
+gtgfChr*GOioB([jlPXekNM-ol0@R"rTjUQmdC&Bs7$$Xr:9jYrUfpYrV$0`p%\I\qtg!_qY^3g
+m/DS9`W(G~>
+JcC<$JcGHDnc&LcrVZNhs8)`jrV6Ees7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=<gtUQ:g"=s/f@JLOe:5rqdF$=ecHa\Ybfe2PaiMQD`l5p8_ns7*^V@Lr]Y(ke
+\[],W[^<BIZE^X;Y-"e+WiE"qVl$8cUS4BST:VUDS!ob4R$O#&P`h2lOH5E]N/WXNM26qAKnP)2
+Jq/B$IXQWlH[9s^GB\4QFEDSEEH,r9DJj<-CMR[!BP@EY$>*j\A7K+Y@UWYPra,_5?![G7!aAi3
+rE9/&s&T2$a%$)"q+(?Pr'g-DoL&IU!*B"gqapi[oLeLBo18gKqaU<MrCHiXqF^]Zr_38bq,[/e
+!)iPglVR:N!+,S1ra>b7qdTS8rabq<rau1Cr+Q(DrbD@HrbVRNr,2LPrc%aS!-6XipNlU]k^<2Q
+p3Q[_rHS0_rHA0_q/lOUqf:h=qf;UUqK2^Zrc\0_rcnEfr-J?hs*X`mrdOlsr.+fus+:0$s+LE+
+rJ(?-s+pW1s,-i7rf$l:s,R)>s,[5Crf[;F!0mJJs-<YOrg7;cR[]e:S=Q7CT:hmOU8+N[V5C/g
+W2ZesX/rG*YHY79ZEppG[^NZU\[oDc]tV7s_8=+.`Pom=aN;WKbg"GZd*^7ieC<%"f@\d1g=tE=
+h;7&Ii8N\Uj5f=`k2tjjkiq?slKeE8!q#FDrU9dUrpfpWrq$*\q=X^[r:fmZr;$6dp&"U`qYfd[
+JcE^hJ,~>
+JcC<$JcGECo)ARcrquWirqcZjr:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqaGhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci24=c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NTMZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$a2)Q'@GpOcYWaNJrdQM2@%DL4t;5
+K7\W(IsufoI!^0bG^"@TF`__HEcH)<Df0H0Chmg$BkV0mB4b^dA7K-L@fKj:@/aL7?<pk9>lS".
+>5_V(=T;J#<rZ2!<<#n[VspS_V>a$\8,YpS7I`e>6i,[;]@a^c\c"to7eT@N8Gu-U9)_K^9`.W^
+ir\;fch>ZTc2#TZbOs$T?iOO5@JjU6A,g*;Ac?<@BDcHCC&VlFC]8/LD>S5MDuXeQEW1"XF8^4Z
+bkTHUbkK<UHM;dOI/&'_HMi'fGklR_G5ZRZFT$:YEoV0:ErC(UFT-F^G5HL`GlE!dHN/?kI/JEm
+IfFoqJH(3#K)C9$K`?c)LB!&/M#E21MZ8V5Muo!!Nr>"?OHG\)P5g^GPl?pZQC!r*R$jA2S"#q<
+SXuFFT`1W[U8+N[V5C/gW2ZetXKAV-YHY7:Za7$H[^WcW\\#Me]t_=t_8=+.`Q#s>aND]Lbg+M[
+d*^:jeC<%"f@\d1g=tE=h;7&Ii8N\Uj5f>$joOZ/rojLLlg+Q:s6]jSrpTmVrpfpWrq$-]q=X^[
+r:fp[qt^-co_\O`q>K[ZJcE[gJ,~>
+JcC<$JcGECo)ARcrquWirqcZjr:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqaGhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci24=c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NTMZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$a2)Q'@GpOcYWaNJrdQM2@%DL4t;5
+K7\W(IsufoI!^0bG^"@TF`__HEcH)<Df0H0Chmg$BkV0mB4b^dA7K-L@fKj:@/aL7?<pk9>lS".
+>5_V(=T;J#<rZ2!<<#n[JF.jc8GG^R7f,XE7.s"EUYUh.N9Q9!7JfRJ8,Z!W8bl!X9DqQ^:&:aZ
+R.?U9QN!6DQMY%h@/aU4@fBm;AGg$<B)ZH@B`DfGCA_lHD#S;KDZ4SSE;FSRErL.YFT%TgRJrTK
+HM;dOI/&'_HMi'fGklR_G5ZRZFT$:YEoV0:ErC(UFT-F^G5HL`GlE!dHN/?kI/JEmIfFoqJH(3#
+K)C9$K`?c)LB!&/M#E21MZ8V5Muo!!Nr>"?OHG\)P5g^GPl?pZQC!r*R$jA2S"#q<SXuFFT`1W[
+U8+N[V5C/gW2ZetXKAV-YHY7:Za7$H[^WcW\\#Me]t_=t_8=+.`Q#s>aND]Lbg+M[d*^:jeC<%"
+f@\d1g=tE=h;7&Ii8N\Uj5f>$joOZ/rojLLlg+Q:s6]jSrpTmVrpfpWrq$-]q=X^[r:fp[qt^-c
+o_\O`q>K[ZJcE[gJ,~>
+JcC<$JcGECo)ARcrquWirqcZjr:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0mUlK[Wukih4/joOT)
+ro4%=iVqaGhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci24=c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NTMZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$a2)Q'@GpOcYWaNJrdQM2@%DL4t;5
+K7\W(IsufoI!^0bG^"@TF`__HEcH)<Df0H0Chmg$BkV0mB4b^dA7K-L@fKj:@/aL7?<pk9>lS".
+>5_V(=T;J#<rZ2!<<#nG7fGsR8,YpS7I`e>6i'jY8c)-@8cM?[8bP^R7JfRJ8,Z!W8bl!X9DqQ^
+:&e5k<qK>e;YEu[;"[W]?iOO5@JjU6A,g*;Ac?<@BDcHCC&VlFC]8/LD>S5MDuXeQEW1"XF8^4;
+<;:e6Hg6"RHhVjaH2`'aGQ)daFnp.XF8U(=EVjeTF8C"XFoHR]GQ2peH2N!gHiAEjIK+crJ,Fis
+JcC?"KE$W)L&Hc+L]<2/M>rJ5MuAS9NK0%tNrkE*OoCODP5pjHPn97JQ^F/.R@9V7S=H.AStD\T
+Th_>WUnjiaVl-JmWiN5'Xfek3Yd1UA['d?O\@K/^]Y(qm^VI\&_o0O6a2l?EbKJ,TcHjkbdaQ^q
+e^i@)g"P07gtgfChr*GOioB([jo4BCkNMp0!p]+;rp9[Ps6fmTs7$$Xr:9jYrq-$ZrV$0`pA"O\
+qtfs^qu$9gm/DS9`;b>~>
+JcC<$JcGECo)ARcrVZQirqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#iki_-kk2k^c
+j5].YiS`YOhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci243c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NQLZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$X,(Q'7AoOcYWaNJrdQM2@%CL4t;5
+K7SQ'IsufoI!U*aG^"@TF`__HEcH)<Df0H0Chmg$C&VcRB4b^dA7T1Z@UW\Qra5\3!+#S/s',M,
+rE9/&s&]/"r`/ttqc!Jlr_WYlnYboS!i8I[r^cfSrC6ZQn3m%=!oDhlrSIF`be!hbrC-TQpIG-P
+rCQiXrCd,`qb?qH!6t5_n]gmRq9/HRr*TG2s'be6s'u%=r+5k>s(D7Crb;@Hr+l:Jrb_RNrbqdT
+qf2RTrc@pXrH8*_rlt/\p<35WpNu1Qq0Vg]rH\?dqKMm]rH7sYrH%jVic4m:rH%jXrH8-`qfi'b
+rd"Efs*O`mrI+]prdXlss+10$rIb-'s+UE+s+gW1rJCQ3s,6i7s,@#=rK$u?!0R8Ds-*JIrfmMM
+Qi<BPR:2PRS"-">St;RITV8'RUSO]^VPg>jWN)u!XKAV-YctC<Za7'J[^WcW]">Vf^;%Fu_SX4/
+`Q#s>ai_fMc-FV\d*^:jeC<($f@\d1g=tE=hV[8LiSrkWj5f=ak3(pkrojIKli-8NmJlVRn,MnV
+nbhtXoD\CXp&4U^p\+CZq>:$\qtg6drTjH6s2=qf~>
+JcC<$JcGECo)ARcrVZQirqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#iki_-kk2k^c
+j5].YiS`YOhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci243c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NQLZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$X,(Q'7AoOcYWaNJrdQM2@%CL4t;5
+K7SQ'IsufoI!U*aG^"@TF`__HEcH)<Df0H0Chmg$C&VcRB4b^dA7T1Z@UW\Qra5\3!+#S/s',M,
+rE9/&s&]/"r`/ttqc!Jlr_WYlnUU+Ys%32\pdb9PqaL!Bpd5%UqkMr)s,?9%rC-TQpIG-PrCQiX
+rCd,`qb?paopG68k*GpPra>b7qdTS8rabq<rau1Cr+Q(DrbD@HrbVRNr,2LPrc%aSrGqmYqK2[Y
+rc[Rps-WS-pNu1Qq0Vg]rH\?dqKMm]rH7sYrH%jVic4m:rH%jXrH8-`qfi'brd"Efs*O`mrI+]p
+rdXlss+10$rIb-'s+UE+s+gW1rJCQ3s,6i7s,@#=rK$u?!0R8Ds-*JIrfmMMQi<BPR:2PRS"-">
+St;RITV8'RUSO]^VPg>jWN)u!XKAV-YctC<Za7'J[^WcW]">Vf^;%Fu_SX4/`Q#s>ai_fMc-FV\
+d*^:jeC<($f@\d1g=tE=hV[8LiSrkWj5f=ak3(pkrojIKli-8NmJlVRn,MnVnbhtXoD\CXp&4U^
+p\+CZq>:$\qtg6drTjH6s2=qf~>
+JcC<$JcGECo)ARcrVZQirqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#iki_-kk2k^c
+j5].YiS`YOhqm2Fgt^Z<g=b-2f@SU(rmV,#da?Ihci243c-4ASb/q`Ga2Z*;`5BI/_8!b!]tD"i
+]",>[[^NQLZa-j?YHG"/X/`1uVl-DfUnaWWTV%gHS=>t8R$X,(Q'7AoOcYWaNJrdQM2@%CL4t;5
+K7SQ'IsufoI!U*aG^"@TF`__HEcH)<Df0H0Chmg$C&VcRB4b^dA7T1Z@UW\Qra5\3!+#S/s',M,
+rE9/&s&]/"r`/ttqc!Jlr_WYli(!`<r^cfSrC6ZQn3m%=!*/nspIY3Rj[nu5rC-TQpIG-PrCQiX
+rCd,`qb7&jqc<MjrDW5ap/1`aohYKmra>b7qdTS8rabq<rau1Cr+Q(DrbD@HrbVRNr,2LPrc%aS
+rGqmYqK2[Yrc[L)pj2[]l?rDSp3Q[_rHS0_rHA-^qK2[Wqf:\9r,VaWqfMdZs*"9`s*4Ngr-JBi
+rd=Zms*jrsrIFp!rdt*$s+LE+rJ(?-s+pW1s,-i7rJ^c9!07#=s,[5Crf[;Fs-3MJ!LB)OR/`R_
+R[]e:S=Q7CT:hjNTq\<XUnsrdVl6SpWiN5'Xfen4Z*L^B[C3NQ\@K2_]Y(tn^VI_'_o0O6a2lBF
+bKJ/UcHjkbdaQ^qf%8O+g"P07gtgiEi8ESRioB([jlY^gkNMp0!UB"Mm/QJQmf)\TnG_tUo)J=\
+o_J1YpAF[Yq"smaqXj[]r;$<Wrdk*fs*t~>
+JcC<$JcGECo)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_Gjr3@B
+jQ#:[iSi_Qhqm5Gh;$c>g=k64f[na+ec+&%e'cXkd*M^:FNr%QbK@rJaN)<>`Pf[2_SO"%^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1GL5(D8
+K7e`*J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\#%qOZARo=]raGn:@/aO5?3":0>lS".
+>5_V(=T2D#<rQ+u<;]\o;Z9Pj;#X8i:Aq*\VZ'0c8GPdR7f5^C7/K@JhVl'I]"@.:!4i(tqaU9L
+rCHlYq+CTYr_32`qVqP!p!*N\p!*?Wq9/EQr*TJ3raG_6raYt=qdoe>rb).Brb;CIqeQ4Jrb_OM
+rbqdTqf2UUrH%gWrH8'^q02e]oum)Uom?.Tpj;^\r-A6cqKMp^rH7sYr,_gWi,S[8rH%jXrcS3`
+r-/-bs*=Ngs*Ocnr-eTos*sutrdk*$rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=rf@)@s,m;D!gAk5
+rg!ML!13\PA!rdSS"#q<SXuFFTV/!PU8+N[V5C/gW2ZesX/rG*Y-5(6Z*UdD[C3NR\[f;`]Y2%o
+^qmn)_o9U7a2lBFbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRj5]4]jlY^gkl0fJlKdd8m/QGQ
+meuVSnGi%Vo)J=\o_S7ZpAF[Yq"smaqXaU\r;-BXrdk*ds*t~>
+JcC<$JcGECo)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_Gjr3@B
+jQ#:[iSi_Qhqm5Gh;$c>g=k64f[na+ec+&%e'cXkd*M^:FNr%QbK@rJaN)<>`Pf[2_SO"%^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1GL5(D8
+K7e`*J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\#%qOZARo=]raGn:@/aO5?3":0>lS".
+>5_V(=T2D#<rQ+u<;]\o;Z9Pj;#X8i:Ao_AIfP#mJ,W%<8GPdR7f5^C7/K=OUAL_aMrfluMi@Um
+s,?f4o8<N9qaU9LrCHlYq+CTYr_32`qPNqQn!E4'r*TJ3raG_6raYt=qdoe>rb).Brb;CIqeQ4J
+rb_OMrbqdTqf2UUrH%gWrH8'^q02Fus-WP,om?.Tpj;^\r-A6cqKMp^rH7sYr,_gWi,S[8rH%jX
+rcS3`r-/-bs*=Ngs*Ocnr-eTos*sutrdk*$rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=rf@)@s,m;D
+!gAk5rg!ML!13\PA!rdSS"#q<SXuFFTV/!PU8+N[V5C/gW2ZesX/rG*Y-5(6Z*UdD[C3NR\[f;`
+]Y2%o^qmn)_o9U7a2lBFbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRj5]4]jlY^gkl0fJlKdd8
+m/QGQmeuVSnGi%Vo)J=\o_S7ZpAF[Yq"smaqXaU\r;-BXrdk*ds*t~>
+JcC<$JcGECo)ARcrVZQirqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp0^PlK\B5!U/_Gjr3@B
+jQ#:[iSi_Qhqm5Gh;$c>g=k64f[na+ec+&%e'cXkd*M^:FNr%QbK@rJaN)<>`Pf[2_SO"%^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1GL5(D8
+K7e`*J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\#%qOZARo=]raGn:@/aO5?3":0>lS".
+>5_V(=T2D#<rQ+u<;]\o;Z9Pj;#X8i:@1OM8c;3U8,PjS7IES@6iL'`<W,M\9&rS88H)'T7eT@N
+8Gu-U9)VE^9`%Q\<npUL;>X2e:]+T"@/aU4@fBm;AG]s<B)ZH@B`;`GCAVfHD#S;KDZ4SRE;OYS
+ErC(UFT$@\G56@P<;1_3Hgc@WHhMd`H2W!aGQ)daFo$4XF8^.;EVskUF8L(YFoHR^GQ)jeH2N!g
+HiJKkIK+crJ,OosJcC?#KE$W)L&Hc+L]<2/M>rJ5MuAV7NW5%<O8k=AOoCLFPE_=2Q2d-MQi<@^
+R@9S6S"-">St;RITV8'RUSO]^VPg>jWN)u!XKAV-YHY79Za7$H[^N]V\[oDc]tV7s_8=(,`Poj;
+aN;TJbg"GYd*^7he'uq!f@S[.g=tE=h;7&Ii8N\Uj5f:_k2tjjrojLLlg+Q:s6TgSrU9dUs7-$X
+s7?6^qXsg\r:fp[qt^-coDAC^qYfaZJcEUeJ,~>
+JcC<$JcGECnc&LcrVZNhrqcZjr:p<ds7ZEa!qc*UrUL$[nF6GG!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4%=iVqaHhqm5Gh;$c>g=k64f[na+ec+'He'cXkd*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1FL5(D8
+K7\Z)J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`oJ-
+s'#A(s&f;&r)Wess&Akor_i_mqb[8fr_E>br_*;bqPO9brCQuZq+(?PqaKm?rBpJ=i4J-_rC-TQ
+pIG-PrCQfWr_*2`qb@%Jro3q#qTJrarlbAeprr`^q98TVpWED@ra>b7qdTS8rabq<rau1Cqe6"D
+rbD@HrbVRNqelCOrc%aSrc7sYqK2[YrH@pZr-86eqTJSYom?4VpNuU[rH\?dq02g]rcS$YrH%pX
+hJrL7rH%jXrcS3`r-/0cs*=Ngs*OcnrI+Zos*suts+13%rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=
+rf@)@s,m;Ds-!GIrKRGMQ^@]=!L]DURgYaWSXuFFTV/!PU8.^`9;SM`Vl6SpWiN5'Xfnt5Z*L^B
+['mEP\@K/^]Y(ql^VI\&_o0O5a2l?Db0/#RcHjkbdF-Ooe^i@(f\5'6gtgfChr*GOioB([jo4BC
+kNMp0#jUaAm-O-,mdC)Cs7$'Yr:9mZrq-'[rV$3apA"O\qtfp]qY^0fli)J8_>f#~>
+JcC<$JcGECnc&LcrVZNhrqcZjr:p<ds7ZEa!qc*UrUL$[nF6GG!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4%=iVqaHhqm5Gh;$c>g=k64f[na+ec+'He'cXkd*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1FL5(D8
+K7\Z)J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`oJ-
+s'#A(s&f;&r)Wess&Akor_i_mqb[8fr_E>br_*;bqLAN;rCQuZq+(?PqaKm?rBgRZr1j1Jjc&_f
+p58f;qaU<Mr(-cXq+CWZrCm)_qPNtRm?dL3s-NJGr*TG2s'be6s'u%=r+5k>s(D4Bs(VIIr+l:J
+rb_OMrbqdTqf2UUrH%gWrH8'^pNQO[s*=L0!1<J+om?4VpNuU[rH\?dq02g]rcS$YrH%pXhJrL7
+rH%jXrcS3`r-/0cs*=Ngs*OcnrI+Zos*suts+13%rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=rf@)@
+s,m;Ds-!GIrKRGMQ^@]=!L]DURgYaWSXuFFTV/!PU8.^`9;SM`Vl6SpWiN5'Xfnt5Z*L^B['mEP
+\@K/^]Y(ql^VI\&_o0O5a2l?Db0/#RcHjkbdF-Ooe^i@(f\5'6gtgfChr*GOioB([jo4BCkNMp0
+#jUaAm-O-,mdC)Cs7$'Yr:9mZrq-'[rV$3apA"O\qtfp]qY^0fli)J8_>f#~>
+JcC<$JcGECnc&LcrVZNhrqcZjr:p<ds7ZEa!qc*UrUL$[nF6GG!q,ICrp0[OlMg&JkQ'fFjoOT)
+ro4%=iVqaHhqm5Gh;$c>g=k64f[na+ec+'He'cXkd*L%`cHXSVbK@rJaN)<>`Pf[2_SO%&^:h1l
+]=PP_\$i`PZa6sBYck43XK/A$W2HPiUnjcZTqJ!KSXc1<R@'>,Q'IPrP*(fdNfB!UMM[1FL5(D8
+K7\Z)J:E#rI=$9dH$FOWG'.nKF)l8?E,TW3D/=!'C2*Z\!G?$DAH?=OraGq;?srt@!a]/<r`oJ-
+s'#A(s&f;&r)Wess&Akor_i_mqb[8fr_E>br_*;bqF:KWrCQuZq+(?PqaKm?rBpQ`r`/kfnk/"8
+ogo$MqaU<Mr(-cXq+CWZrCm)_qH!Smf2DHBr_WN"ra>b7qdTS8rabq<rau1Cqe6"DrbD@HrbVRN
+qelCOrc%aSrc7sYqK2[YrH@pZr-86eqGd07om?4VpNuU[rH\?dq02g]rcS$YrH%pXhJrL7rH%jX
+rcS3`r-/0cs*=Ngs*OcnrI+Zos*suts+13%rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=rf@)@s,m;D
+s-!GIrKRGMQ^@]=!L]DURgYaWSXuFFTV/!PU8.^`9;SM`Vl6SpWiN5'Xfnt5Z*L^B['mEP\@K/^
+]Y(ql^VI\&_o0O5a2l?Db0/#RcHjkbdF-Ooe^i@(f\5'6gtgfChr*GOioB([jo4BCkNMp0#jUaA
+m-O-,mdC)Cs7$'Yr:9mZrq-'[rV$3apA"O\qtfp]qY^0fli)J8_>f#~>
+JcC<$JcGBBo)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0?io0mpJ)B,>h;-l@gY1B7f\"g-f%&=#eC2jndEp7dcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EZ*:F7XfSS'WMl_mV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f3YMi*@JLPCP;
+KS+l-J:N,uI=-BfH?jaZG7f"@FEDSEEH,r9DJj<-CMR[!rb)=FB)Z?BA7PUJ!b#JEra5\3!+#P.
+s'#J,r)s&%s&],!r`/ttqc!Jlr_`Phr_NMgqb@&`r_*)[r^m&Zq+(?PqaKg=qqh7`jLaTdr^H]R
+p.,'Pr(6`WrCd,`qFq#diSjdq!9<drprrc]r65)^s30oSs2t7Hs'Yh7r*oY8s()"<s(;7Cr+Q(D
+rbD@HrbVRNr,2LPrc%^Rrc7sYqK2[YrH@pZr-8*anp9qTomHFZp3Q[_rHS0_rHA0_qK2[Wr,UY6
+rGqjXqfMj\rc\3`s*4Qhr-JBis*Xcns*jutrIFp!s+:3%s+LE+rJ(?-s+pW1s,-i7rJ^c9s,R)>
+s,d8Crf[;Fs-3MJs-<YOrg<_R!1NnV$_3cYSt;RITV8'RU].&iV5C/gW2ZesX/rG*Y-5(6Z*UdD
+[C3NQ\[f;`]Y(tn^VI_'_o0O6a2l?EbKJ,ScHjkbdF6Upe^i@)g"P07gtgfChr*GOioB([jlY^g
+kNM0plK[^7liQSBmeuSUnF?&Ho)J=\o_\=[pAOaZq"sm`qXaU\r;$<Wrdk*bs*t~>
+JcC<$JcGBBo)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0?io0mpJ)B,>h;-l@gY1B7f\"g-f%&=#eC2jndEp7dcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EZ*:F7XfSS'WMl_mV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f3YMi*@JLPCP;
+KS+l-J:N,uI=-BfH?jaZG7f"@FEDSEEH,r9DJj<-CMR[!rb)=FB)Z?BA7PUJ!b#JEra5\3!+#P.
+s'#J,r)s&%s&],!r`/ttqc!Jlr_`Phr_NMgqb@&`r_*)[r^m&Zq+(?PqaKg=!2BCdhi.)`pPSr=
+qaU9LrCHiXqF^]Zr_3/_!)EHh!2og`jHoV,p6YfFr*TJ3raG_6raYt=qdoe>rb).Brb;@Hr+l:J
+rb_RNrbqdTqJlLTrH%gWrH8'^pNQO[qg%aYoR$7Yom?CYrH\?dqKMm]rcS'ZrH%mWhJrL7rH%jX
+s)n<ar-/0cs*=Ngs*OcnrI+]ps*suts+13%rIb-'s+UE+s+gW1rJCQ3s,6i7s,I&=rf@)@s,m;D
+s-*JIrg!ML!13\Ps-WkUrgO:cSXl@DT:hjNTq\=]UfO=hVl-JmWiE,$Xf\b0YctC=Za@-K[^WfX
+]">Vf^;%Fu_SX4/`Q#s>aND]Lbg"GZd*^7ieC<%"f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(pkl07Ku
+li-5PmI'E@mfN"KnbhtXoD\CZp&4U_p\+CZq>0sZqtg6drTjH6s1nYb~>
+JcC<$JcGBBo)ARcrVZQirqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ#O(@6k2tde
+jSn0?io0mpJ)B,>h;-l@gY1B7f\"g-f%&=#eC2jndEp7dcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EZ*:F7XfSS'WMl_mV50o^TqS-NSt2C@R[KP0QBd\uP*1ofO,f3YMi*@JLPCP;
+KS+l-J:N,uI=-BfH?jaZG7f"@FEDSEEH,r9DJj<-CMR[!rb)=FB)Z?BA7PUJ!b#JEra5\3!+#P.
+s'#J,r)s&%s&],!r`/ttqc!Jlr_`Phr_NMgqb@&`r_*)[r^m&Zq+(?PqaKg=rD`eslq6>1pIP9P
+qaU9LrCHiXqF^]Zr_3/_!)EJns&T1spJKR@r_`T#s'Yh7r*oY8s()"<s(;7Cr+Q(DrbD@HrbVRN
+r,2LPrc%^Rrc7sYqK2[YrH@pZr-8*anp9qTomHFZp3Q[_rHS0_rHA0_qK2[Wr,UY6rGqjXqfMj\
+rc\3`s*4Qhr-JBis*Xcns*jutrIFp!s+:3%s+LE+rJ(?-s+pW1s,-i7rJ^c9s,R)>s,d8Crf[;F
+s-3MJs-<YOrg<_R!1NnV$_3cYSt;RITV8'RU].&iV5C/gW2ZesX/rG*Y-5(6Z*UdD[C3NQ\[f;`
+]Y(tn^VI_'_o0O6a2l?EbKJ,ScHjkbdF6Upe^i@)g"P07gtgfChr*GOioB([jlY^gkNM0plK[^7
+liQSBmeuSUnF?&Ho)J=\o_\=[pAOaZq"sm`qXaU\r;$<Wrdk*bs*t~>
+JcC<$JcGBBo)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp(#Rm)h;-l@gY1B7f\"g-f%&=#eC2kFd='BfcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EYct=6XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMIQtBP;$jrac=F@q/tW@:<RC?iOI4?2e+/
+>Q7n*=oMP'=8Z+u<W?%q;uT\o;>X2i:]=,d:&[ic9DV9[8c;3U8,PjR7I3G?hYFhG]BHj+7J]LJ
+8,PpV8bl!X9DqQ]:&ducipP"hbi$\C?iFI4@JjU6A,g*;Ac?<@BDcHBC&_rFC]A5MD>S5MDuO_P
+EW1"XF89qVFo?LXGPcX^H1H:=HhD^`H2W!`GQ)dbFnp.YF8U(MEVOMFEW'qVF8U.ZFoHR_GQ2pe
+H2W'hHiJKlIK+crJ,OotJcC?#KE$W)L&Qi,L]<2/M>rJ5MuAV7NW5%<O8k=AOo:FEPE_=2Q2d0M
+Qi<?RR@9TDRfT%Mrgm>dTV/!PU8+KZUnsrdVl6SpWiN5'Xfek3Yd(L?Za@-K\%&uZ]"G\h^;%G!
+_SX40`Q#s>ai_fMc-FV\d*^:jeC<%#f@\d1g=tE=h;7)JiSrkWj5f=ak3(t-klU/9li-5PmI'EA
+n,MnWnbr%YoD\CZp&4U_p\4I[q>:$Zqtg6crTjH6s1eSa~>
+JcC<$JcGBBo)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp(#Rm)h;-l@gY1B7f\"g-f%&=#eC2kFd='BfcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EYct=6XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMIQtBP;$jrac=F@q/tW@:<RC?iOI4?2e+/
+>Q7n*=oMP'=8Z+u<W?%q;uT\o;>X2i:]=,d:&[ic9DV9[8c;3U8,PjR7I3G?UYUmuMtr817J]LJ
+8,PpV8bl!X9DqQ]:&ducVuN.DQhZm=Qi1:j@/aU4@fBm;AGg$<B)ZH@B`;`GCAVfHD#S;KDZ4SR
+E;FSRErL.UFT$@\G5$4XGl)dWHJa)BHMr-fGklR_G5cX[FT-@ZEq=;GE:e/KErC(WFT-F^G5ZXb
+GlE!eHN/?lI/SKnIfForJH(3#K)L?%K`?c*LB!&/M#E21MZ8V5N;nn;NrG+>OT1IAOogi3Pl?sJ
+QN*<NQi`\ERf8cWS=TYN>G%R]TqS3UUSO]^VPg>jWN)u!XKAV-YHY79ZEpmE[C3QS\[f;a]Y2%o
+^VRe(_o9U7a2lBFbKJ/UcHjkbdaQ^qe^rF*g"P07gtgfCi8ESRioB([jlY^gkl0fJlKdd8liQSB
+mf)\TnGi%Wo)J=\o_\=[pAOa[q"smaqXXO[r:p6Vrdk*as*t~>
+JcC<$JcGBBo)ARcrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gk5XNC
+jSn0?io0mp(#Rm)h;-l@gY1B7f\"g-f%&=#eC2kFd='BfcHa\YbKJ&MaN2EA`Pod5_SX.)^V7Co
+]Xtbc\@8oT['R*EYct=6XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMIQtBP;$jrac=F@q/tW@:<RC?iOI4?2e+/
+>Q7n*=oMP'=8Z+u<W?%q;uT\o;>X2i:]=,d:&[ic9DV9[8c;3U8,PjR7I3G?<9d*:8bbjV7J]LJ
+8,PpV8bl!X9DqQ]:&dug<rH+p;"miE;ZBVm?iFI4@JjU6A,g*;Ac?<@BDcHBC&_rFC]A5MD>S5M
+DuO_PEW1"XF89qVFo?LXGPcX^H1H:=HhD^`H2W!`GQ)dbFnp.YF8U(MEVOMFEW'qVF8U.ZFoHR_
+GQ2peH2W'hHiJKlIK+crJ,OotJcC?#KE$W)L&Qi,L]<2/M>rJ5MuAV7NW5%<O8k=AOo:FEPE_=2
+Q2d0MQi<?RR@9TDRfT%Mrgm>dTV/!PU8+KZUnsrdVl6SpWiN5'Xfek3Yd(L?Za@-K\%&uZ]"G\h
+^;%G!_SX40`Q#s>ai_fMc-FV\d*^:jeC<%#f@\d1g=tE=h;7)JiSrkWj5f=ak3(t-klU/9li-5P
+mI'EAn,MnWnbr%YoD\CZp&4U_p\4I[q>:$Zqtg6crTjH6s1eSa~>
+JcC<$JcGBBo)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0mUlK[Wukih4/joXZ*
+jSn0?io0mp(#Rm)h;-l@gY1B7g"=p.f%/C$eC2kFd=0HgcHa\YbKJ&MaN2EA`Pod5_SX.)^V@Ip
+]Xtbc\@8oT[Bm3FZ*:F7XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMITuBP;$jB)cEDA7K-K@KKtG@/aL7?<pk8
+>lS%.>5_V(=T2D"<rQ,!<;TVn;Z9Pk;#X8i:A[cb9`@]^9)V?\8GG^Q7f#RB6ic-ChY=bF]BQp,
+7J]LJ8,PpV8bl!X9DqQ]:&ducil]IC?iFI5@JaO6A,^$:Ac?<ABDZBBC&VlFC]8/LD>S5MDuO_Q
+EW'qWF89qVFo6FWGPl^_H16.>HhD^_H2W!aGQ)daFo$4YF8^.OEV+5CEW1"XF8L(YFoQX_GQ2pf
+H2W'hHiJKlIK+crJ,Om!JV&LPKE$W)L&Hc+LB*//M>rJ5MuAV7NW5%<O8k=AOo:FEPE_=1Pld8<
+Qi<BPR/i]TS,\uYSc53cT:hjNTq\<WUnjiaVl-JmWN)u!XKAV-YHY7:Za7$H[^NZT\[oDc]Y2(p
+^qmn*`5T^8aN2KGbKS5VcHjncdaQ^qf%8O+g"P07h;-rFi8ESRj5]4^jlY^gkl0fIlKeH9s6TgS
+rpTmVs7-'Yrq$0^qt9s^rV-']r;$3co)&7\q>KUXJcEIaJ,~>
+JcC<$JcGBBo)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0mUlK[Wukih4/joXZ*
+jSn0?io0mp(#Rm)h;-l@gY1B7g"=p.f%/C$eC2kFd=0HgcHa\YbKJ&MaN2EA`Pod5_SX.)^V@Ip
+]Xtbc\@8oT[Bm3FZ*:F7XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMITuBP;$jB)cEDA7K-K@KKtG@/aL7?<pk8
+>lS%.>5_V(=T2D"<rQ,!<;TVn;Z9Pk;#X8i:A[cb9`@]^9)V?\8GG^Q7f#RB7/Wk9N:;c%MZ6-A
+7e]FN8Gu-U9)_K^9`%Qa:A^pgR-L%<R/30GQLgIA?iFI5@JaO6A,^$:Ac?<ABDZBBC&VlFC]8/L
+D>S5MDuO_QEW'qWF89qVFo6FWGPl^_H16.>HhD^_H2W!aGQ)daFo$4YF8^.OEV+5CEW1"XF8L(Y
+FoQX_GQ2pfH2W'hHiJKlIK+crJ,Om!JV&LPKE$W)L&Hc+LB*//M>rJ5MuAV7NW5%<O8k=AOo:FE
+PE_=1Pld8<Qi<BPR/i]TS,\uYSc53cT:hjNTq\<WUnjiaVl-JmWN)u!XKAV-YHY7:Za7$H[^NZT
+\[oDc]Y2(p^qmn*`5T^8aN2KGbKS5VcHjncdaQ^qf%8O+g"P07h;-rFi8ESRj5]4^jlY^gkl0fI
+lKeH9s6TgSrpTmVs7-'Yrq$0^qt9s^rV-']r;$3co)&7\q>KUXJcEIaJ,~>
+JcC<$JcGBBo)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0mUlK[Wukih4/joXZ*
+jSn0?io0mp(#Rm)h;-l@gY1B7g"=p.f%/C$eC2kFd=0HgcHa\YbKJ&MaN2EA`Pod5_SX.)^V@Ip
+]Xtbc\@8oT[Bm3FZ*:F7XfSS'WMl_mV50o]TqS-NSt2@?R[KP0QBd\uP*1ofO,f0XMi*@ILPCP;
+KS+l-J:N,uI=-BfH?jaZGBS+NFE;JBEH#i6DJa3*CMITuBP;$jB)cEDA7K-K@KKtG@/aL7?<pk8
+>lS%.>5_V(=T2D"<rQ,!<;TVn;Z9Pk;#X8i:A[cb9`@]^9)V?\8GG^Q7f#RB6i^6c<8:+98bkpW
+7J]LJ8,PpV8bl!X9DqQ]:&drg<r?%o;"7ED;?0Sm?iFI5@JaO6A,^$:Ac?<ABDZBBC&VlFC]8/L
+D>S5MDuO_QEW'qWF89qVFo6FWGPl^_H16.>HhD^_H2W!aGQ)daFo$4YF8^.OEV+5CEW1"XF8L(Y
+FoQX_GQ2pfH2W'hHiJKlIK+crJ,Om!JV&LPKE$W)L&Hc+LB*//M>rJ5MuAV7NW5%<O8k=AOo:FE
+PE_=1Pld8<Qi<BPR/i]TS,\uYSc53cT:hjNTq\<WUnjiaVl-JmWN)u!XKAV-YHY7:Za7$H[^NZT
+\[oDc]Y2(p^qmn*`5T^8aN2KGbKS5VcHjncdaQ^qf%8O+g"P07h;-rFi8ESRj5]4^jlY^gkl0fI
+lKeH9s6TgSrpTmVs7-'Yrq$0^qt9s^rV-']r;$3co)&7\q>KUXJcEIaJ,~>
+JcC<$JcGBBnc&IbrVZQirqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i.'Y@hVI#CgtUQ:g"G$0f@JO'eC;sqda?Ihcd'h\bfe2PaiVWE`l5p8_ns:,^q[Xt
+]Y(kf\[],W[^<BIZE^X;Y-"e+Wi;qpVPU)aU7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkg_>
+KnG#0JUi9#IXQTjH?sj]GBXL>F`__HEcH)<Df0H0D#S2XC2%?pB4kgfARo=]raGq;?srt@s'G_2
+rETA,s'#A(s&f8%r)Whtr`&bns&/hnqb[8fs%`Gcr_3;aqb$fYr^cfSr'pNOn3m33pUnncs185!
+qF:0KrCHiXqF^]Zr_3/_s%`UR!9=(<b00`jra>b7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVRNqelCO
+rc%aSrGqmYq/lRXr-%gYqfr!`ms=,Co6U@\rHS-^rc\9`qK2[WrGqRNnSn2Arc7sYr,hs]rc\6a
+s*4QhrHeKjs*Xcns*jutrdb$"s+:3%!ec8]rJ(?-s+pZ2s,-i7rJ^c9!07#=s,d8CrK75GPa)-3
+!g]1>rg<_Rs-iqV!h>gPrgj._T`1VcU8.^`!Mu[mVb*hdWiE,$Xf\b0YctC<Za7$H[^WcW\[oDc
+]tV7r^qmn*`5T^9aN2KGbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRj5]4^roOFJkiq?slKeH9
+!q#FDrpTmV!:g$Yrq$0^qt9s^rqH3_qt^*bo)&7\q>KRWJcEF`J,~>
+JcC<$JcGBBnc&IbrVZQirqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i.'Y@hVI#CgtUQ:g"G$0f@JO'eC;sqda?Ihcd'h\bfe2PaiVWE`l5p8_ns:,^q[Xt
+]Y(kf\[],W[^<BIZE^X;Y-"e+Wi;qpVPU)aU7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkg_>
+KnG#0JUi9#IXQTjH?sj]GBXL>F`__HEcH)<Df0H0D#S2XC2%?pB4kgfARo=]raGq;?srt@s'G_2
+rETA,s'#A(s&f8%r)Whtr`&bns&/hnqb[8fs%`Gcr_3;aqb$fYr^cfSr'pNOn3m2Md>[gXs,-hF
+qF:0KrCHiXqF^]Zr_3/_s%`QjrhTU^l'MC:q3V#Fo9]D_ra>b7r*oY8rabq<s(;7Cr+Q(DrbD@H
+rbVRNqelCOrc%aSrGqmYq/lRXr-%gYqfr!`ms=,Co6U@\rHS-^rc\9`qK2[WrGqRNnSn2Arc7sY
+r,hs]rc\6as*4QhrHeKjs*Xcns*jutrdb$"s+:3%!ec8]rJ(?-s+pZ2s,-i7rJ^c9!07#=s,d8C
+rK75GPa)-3!g]1>rg<_Rs-iqV!h>gPrgj._T`1VcU8.^`!Mu[mVb*hdWiE,$Xf\b0YctC<Za7$H
+[^WcW\[oDc]tV7r^qmn*`5T^9aN2KGbKS5VcHstddaQ^rf%8O+g"P39h;-rFi8ESRj5]4^roOFJ
+kiq?slKeH9!q#FDrpTmV!:g$Yrq$0^qt9s^rqH3_qt^*bo)&7\q>KRWJcEF`J,~>
+JcC<$JcGBBnc&IbrVZQirqcWirV6Bds7ZEas7?<_rUL$[nF6GGs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i.'Y@hVI#CgtUQ:g"G$0f@JO'eC;sqda?Ihcd'h\bfe2PaiVWE`l5p8_ns:,^q[Xt
+]Y(kf\[],W[^<BIZE^X;Y-"e+Wi;qpVPU)aU7n9QSt;LBS!ob4Q^3o$PEM&iO,o<[N/NRMLkg_>
+KnG#0JUi9#IXQTjH?sj]GBXL>F`__HEcH)<Df0H0D#S2XC2%?pB4kgfARo=]raGq;?srt@s'G_2
+rETA,s'#A(s&f8%r)Whtr`&bns&/hnqb[8fs%`Gcr_3;aqb$fYr^cfSr'pNOn3m1Skt:P?qF^BO
+s%*/YqF:0KrCHiXqF^]Zr_3/_s%`Sp!*B/#r)*DhnPS=ErEoP3s'bh7raYq<r+5n?rb).Brb;@H
+r+l:Jrb_OMrbqdTqf2RTrc@mWrH8$]pNQLZqg%XVk'Q]GrH\?dq02g]rcS'ZrH%pXol9M@p2U(P
+rH%mYs)n<arHJ9ds*=Qhs*OcnrI+]ps*t#us+13%rIY0)Kn]J[s+gW1re^Z4s,6i7s,@#=rK$u?
+s,m8C!gAk5rKRGMQ^@]=s-`nUrgNtZSXobO!M?%aT`Lm_rhKRkVZ*JbW2ZesX/rG*Y-5(6Z*L^B
+['d?O\@K/]]=bhk^V@S#_Sa=2`Q-'@ai_fNc-FV]dF$CkeCE.%f@\d1gYCW@hV[8LiSrnXjQ6C'
+#3Y47l0@R"rp0^RmdC)Cs6p$YrUTsZs7H3]rq??cq"Xa^qYKd[q>C'el2H86^&NT~>
+JcC<$JcGBBnc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f+-B^eC;srda?Ihcd'h\bl5e$b/q`Ga2Q$9_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n9QSt;IAS!o_3Q^3o$PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-rbD^QBkV0mB4h-S!G#^>@fKm:@/aO5?3":0
+>lS%.>5VP'=T2D"<rQ,!<;TVo;Z9Pj;#a>j:A[cb9`Ic^9)_E\8GG^Q7f#RE7/Ys8][=@k7J]LI
+8,Z!W8bl!W9E%W]:&[ocir@6gb5fcHbPbfJ@/aU4@fBm;AG]s<B)ZH@B`;`FCA_lHD#S;LDZ+MQ
+E;OYRErL.UFSp:[G4p.WGl)dSHKfeJHMi'eGkuX`G5ZR[FT-@[EqXM@E;+AOErL.WFT6L`G5QRa
+GlN'gHN/?lI/SKnIK4lrJH(0#K)L?%K`?c*LB!&/M#N82MZ8V5N;nk;Nr>%=OT1IBP5gaGPl6jK
+QC!s:Qi`\ERf8fVS,f,ZT)YD_T`1VcU8.^`!Mu[mVcfstWiE,$Xf\b0YctC<Za7$H[^NZT\[f>b
+]Y2%o^qmn)_o0O6a2l?EbKJ,ScHjkbdF-Ooe^i@(f\5'6gtgfChr*GOioB([jlY^gkih9qlKdd&
+m-X3.rpTmVs7-'Ys7?9_r:U'_rV--_qt^-co)&4[q#0IVJcEC_J,~>
+JcC<$JcGBBnc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f+-B^eC;srda?Ihcd'h\bl5e$b/q`Ga2Q$9_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n9QSt;IAS!o_3Q^3o$PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-rbD^QBkV0mB4h-S!G#^>@fKm:@/aO5?3":0
+>lS%.>5VP'=T2D"<rQ,!<;TVo;Z9Pj;#a>j:A[cb9`Ic^9)_E\8GG^Q7f#RE7/`n]V9k1pMuQ6B
+7eT@N8Gu-U9)VE^9_qK_:AgsgR-U+:R-0h7?iOO5@JjU6A,g*:AcHBABDcHBC&VlFC]8/LD>\;M
+DuO_QEW'qWF89qUFo?LWGPcX^H1$"CHh2R]H2W!aGQ)daFo$4ZF8^.QEUIf?EW1"XF8L(ZFoQX_
+GQ2pfH2`-iHiJKlIK+`rJ,OotJH1<#KE$W)L&Qi,L]<20M>rJ5MuAV7N<#";O8k=AOoCODPQ-mG
+Pld8<Qi39QR@9TDS,\uYSc55\T)bP`T`Lm_rhKRkVZ*JrW2ZesX/rG*Y-5(6Z*L^B['d?N\%&uZ
+]=bei^;%J"_SX4/`Q#s>aND]Lbg"GZd*^7heC<%"f@S[/g=tE=h;7&Ii8N\Uj5f=ak3(sll07L!
+lg4!*mI'uBs7$'YrUU![s7H6^rq?<bq=sj_qtfm\q#'pcl2H86]`3K~>
+JcC<$JcGBBnc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJs6'IGroOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f+-B^eC;srda?Ihcd'h\bl5e$b/q`Ga2Q$9_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n9QSt;IAS!o_3Q^3o$PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-rbD^QBkV0mB4h-S!G#^>@fKm:@/aO5?3":0
+>lS%.>5VP'=T2D"<rQ,!<;TVo;Z9Pj;#a>j:A[cb9`Ic^9)_E\8GG^Q7f#RE7/U'K9(P^P9(PXS
+7J]LI8,Z!W8bl!W9E%W]:&[oc<rZ(`;;tLP?iOO5@JjU6A,g*:AcHBABDcHBC&VlFC]8/LD>\;M
+DuO_QEW'qWF89qUFo?LWGPcX^H1$"CHh2R]H2W!aGQ)daFo$4ZF8^.QEUIf?EW1"XF8L(ZFoQX_
+GQ2pfH2`-iHiJKlIK+`rJ,OotJH1<#KE$W)L&Qi,L]<20M>rJ5MuAV7N<#";O8k=AOoCODPQ-mG
+Pld8<Qi39QR@9TDS,\uYSc55\T)bP`T`Lm_rhKRkVZ*JrW2ZesX/rG*Y-5(6Z*L^B['d?N\%&uZ
+]=bei^;%J"_SX4/`Q#s>aND]Lbg"GZd*^7heC<%"f@S[/g=tE=h;7&Ii8N\Uj5f=ak3(sll07L!
+lg4!*mI'uBs7$'YrUU![s7H6^rq?<bq=sj_qtfm\q#'pcl2H86]`3K~>
+JcC<$JcGBBnc&IbrVZNhrqcZjr:p9cs7ZEas7?<_rUU!Y!:]sU!q,ICrp0^PlK\B5!pJh1roOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f)aIQrmV,#da?Ihci243c-4ASb/q`Ga2Z*:_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n6PSt;IAS!o_3Q^*i#PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-S!b>eNraGq;?srt@s'G_2
+rETA,s'#>'s&f8%r)Whtr`&eor_i_mr)!Ags%`Gcr_3;aqb$iZrCH]RqaUBMogJc9pq?U<oXj_-
+mCN?eqF:0Kr(-cXq+CWZrCm)_r_<Ghr8RIpo?70XjNIL/s'Yh7r*oY8s()%=rau.Br+Q(Ds(_FH
+rbVUOqelCOrG_XRrGqjXq/lRXr-%dXqfqs_m<\2Inp:4ZrHS-^rc\9`qK2[WrGqXPlu;`>rc8!Z
+r,hp\s*"?bs*4QhrHeKj!.=`ns*artrIFp!!.t0%!ec8]rItB/Lku"d!fDnorJ^c9!07#=s,d8C
+rf[;Fs-3JIs-<YOrKmYSR[X5Fs.'+[rgj@eTV/!PU8"F^U]I<hrhfpuWN)u!XT#=kY-5(6Z*L^B
+['mEP\@K/]]=bej^V@S#_Sa=2`Q#s>ai_fMc-FV\d*^:jeC<%"f@\d1g=tE=h;7&Ii8N\Uj5f=a
+k3(t-klL)8rp0^RmdC)Cs6p$YrUU![rq--]rq??cq=sm`qYKd[q>C!cl2H86]DmB~>
+JcC<$JcGBBnc&IbrVZNhrqcZjr:p9cs7ZEas7?<_rUU!Y!:]sU!q,ICrp0^PlK\B5!pJh1roOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f)aIQrmV,#da?Ihci243c-4ASb/q`Ga2Z*:_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n6PSt;IAS!o_3Q^*i#PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-S!b>eNraGq;?srt@s'G_2
+rETA,s'#>'s&f8%r)Whtr`&eor_i_mr)!Ags%`Gcr_3;aqb$iZrCH]RqaUBMogAeUrh[kupko,@
+qF:0Kr(-cXq+CWZrCm)_r_<Ghr2'.To9]?Aka26Ts'Yh7r*oY8s()%=rau.Br+Q(Ds(_FHrbVUO
+qelCOrG_XRrGqjXq/lRXr-%dXqfqs_m<\2Inp:4ZrHS-^rc\9`qK2[WrGqXPlu;`>rc8!Zr,hp\
+s*"?bs*4QhrHeKj!.=`ns*artrIFp!!.t0%!ec8]rItB/Lku"d!fDnorJ^c9!07#=s,d8Crf[;F
+s-3JIs-<YOrKmYSR[X5Fs.'+[rgj@eTV/!PU8"F^U]I<hrhfpuWN)u!XT#=kY-5(6Z*L^B['mEP
+\@K/]]=bej^V@S#_Sa=2`Q#s>ai_fMc-FV\d*^:jeC<%"f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(t-
+klL)8rp0^RmdC)Cs6p$YrUU![rq--]rq??cq=sm`qYKd[q>C!cl2H86]DmB~>
+JcC<$JcGBBnc&IbrVZNhrqcZjr:p9cs7ZEas7?<_rUU!Y!:]sU!q,ICrp0^PlK\B5!pJh1roOII
+jQ,@]io8qri!8/rhVI#CgtVh^!SQ-)f)aIQrmV,#da?Ihci243c-4ASb/q`Ga2Z*:_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Y-"e+Wi;qpVPU)`U7n6PSt;IAS!o_3Q^*i#PEM&iO,o9ZN/NRMLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-S!b>eNraGq;?srt@s'G_2
+rETA,s'#>'s&f8%r)Whtr`&eor_i_mr)!Ags%`Gcr_3;aqb$iZrCH]RqaUBMogJaXk">5<qF^BO
+!(H`Rp.,$OrCQfWr_*2`qb@&b!)NMopJUT[i_o_^s'Yh7r*oY8s()%=rau.Br+Q(Ds(_FHrbVUO
+qelCOrG_XRrGqjXq/lRXr-%dXqfqs_m<\2Inp:4ZrHS-^rc\9`qK2[WrGqXPlu;`>rc8!Zr,hp\
+s*"?bs*4QhrHeKj!.=`ns*artrIFp!!.t0%!ec8]rItB/Lku"d!fDnorJ^c9!07#=s,d8Crf[;F
+s-3JIs-<YOrKmYSR[X5Fs.'+[rgj@eTV/!PU8"F^U]I<hrhfpuWN)u!XT#=kY-5(6Z*L^B['mEP
+\@K/]]=bej^V@S#_Sa=2`Q#s>ai_fMc-FV\d*^:jeC<%"f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(t-
+klL)8rp0^RmdC)Cs6p$YrUU![rq--]rq??cq=sm`qYKd[q>C!cl2H86]DmB~>
+JcC<$JcG?Ao)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roOII
+jQ,@]io8qrhu_fmhYu=3gtVh^!SQ-)f)aIQrmZAFda?Ihcd0n^c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-Ss'u+>raPn9!+>b4s'G_2
+rETA,s'#>'s&f;&qc<_sr`&eor_ibnr)!Agr_EAcr_3;aqb$fYrCH]RqaUBMpI,#=!T1Th^A#>'
+]^NH47J]LH8,Z!V8bu'X9E%W]:&[lf:]05?bl,``biR%I?iFI4@JjU7A,^$:Ac?<@BDcHCC&VlE
+C]A5MD>S5MDuFYPEW'qVF89qVFo6FVGPZR\H0]eKHgc:ZH2Mp`GQ)daFo$4ZF8^.REU.T=EW1"X
+F8U.[FoHR_GQ2mfH2W'hHiJKmIK+crJ,XuuJH1<#K*$^[L&Qi,L]<20M>rJ5MuJ\8NW5%<O8k=A
+Oo:FEPE_=1Q2d-MQi3<OR/i]SRf]+NSc55\T)bP`U&UheU].%iV5F6i8#WDeWiN2%Xf\b0YctC<
+Za7$H[^NZT\[f>b]Y2%o^VI_'_o0O5a2l?Db0/#RcHab_dF-LneCE1&f\,!4gYCW@hV[8Mir7sA
+jQ5OdkNMp0!UB"MliQSBmf)YVnF?&Io)J=]o_eC]pAXg^q#'scqXXOYr:g0Rrdk*\s*t~>
+JcC<$JcG?Ao)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roOII
+jQ,@]io8qrhu_fmhYu=3gtVh^!SQ-)f)aIQrmZAFda?Ihcd0n^c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-Ss'u+>raPn9!+>b4s'G_2
+rETA,s'#>'s&f;&qc<_sr`&eor_ibnr)!Agr_EAcr_3;aqb$fYrCH]RqaUBMpI+tVnr;C_qMP>B
+qF:-JrCHiXqF^]Zr_3/_r_<Ghr2&hKrKm>Il'MBVra>_6r*o\9rabq<rau.Br+Q+ErbD=Gs(q[O
+qelCOrG_XRrGqjXq/lRXr-%dXqKVj^l[&2Mms=qXr-8'^rc\6_qK2^XrGqXPlYuW=rc8!Zr,hs]
+rc\6as*+NhrHeKjs*Xfos*jutrdb$"!.t0%!ec8]reCH.s+pZ2s,-i7rf$l:s,R)>s,d8CrK75G
+Pa)-3s-<YOrL!VQ!1NkU!h>gPrgs.^!20=bs.TLgrhKRkVZ*J`W2ZesX/i>(Xfek3Yd(L?Za@-K
+[^WcW\\#Me]tV7r^r!t+`5T^9aN2KGbKS5VcHjkbdaQ^qe^rF*g"P07gtgfChr*JQro41CjlY^g
+kl0fIlKeH9!q#FDrpKpXnaZSKs7?9_r:U'_rqH6`r;$9eo)&4[p\j=TJcE=]J,~>
+JcC<$JcG?Ao)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roOII
+jQ,@]io8qrhu_fmhYu=3gtVh^!SQ-)f)aIQrmZAFda?Ihcd0n^c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9DJj<-Chmg$C&VcHB4h-Ss'u+>raPn9!+>b4s'G_2
+rETA,s'#>'s&f;&qc<_sr`&eor_ibnr)!Agr_EAcr_3;aqb$fYrCH]RqaUBMpI+sZr_(d6oLT$O
+qF:-JrCHiXqF^]Zr_3/_r_<Ji=8c7h;Z0JO;Z:&&@/aU4@fKs;AGg$<B)ZH@B`DfGCAVfHD#S;K
+DZ4SQE;OYRErC(TFT$@[G4p.VGku^OHLuRQHMr-eGkuX`G5ZR[FT-@[EqaS>E;4GPErL.XFT6L_
+G5ZXbGQ<$fHN/?lI/\QoIfFosJH(0#K)L<'KS>-ZLB!&/M#N82MZ8V6N;nn;NrG+>OT1IAOogi3
+Pl6mIQ2m9MR/`QSRf/]WS=Q5MT)YD_T`1YbU&^tfU]I<hrhi8bWN)u!X/rG*Y-5(6Z*L^B['d?N
+\%&uZ]=bei^;%Fu_SX4/`Pom=aN;TJbg"GYcd:(fe'umtf@S[.g=k<:h;-rFi8N\pis"N*k2tjj
+rojIKli-5PmI'EAmfN"Knbr%YoDeI\p&=[ap\FU^q>C*[qtU*`rTO63s185\~>
+JcC<$JcG?Anc&IbrVZNhrqcZjr:p<drq?<`s7H?_rpp*Zs7$$Vs6]mSrTjUOlK\B5!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=3gtVh^IbEB+f@SU(e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9s).jR$>aKnC2%BqBP1phrac.A@q5LI!b#JErEfV4
+?![D6r`fD+rE9,%s&],!r`/ttqc!Mmr_`Sis%iVhqb@)ar_*)[r^m&ZpIG*MpI4sI!9*q8qS):/
+o=XS)q*t'Jr(-cXq+CWZrCm)_rD*Ags5F"9qp"HNk0*a2ra>b7qdTS8rabq<rau1Cqe6"DrbD=G
+s(q[OqelCOrG_XRrGqjXq/lOWr-%dXqKVg]d!GV8r-8'^rHA0_qK2^XrGqXPpi-+Kpi-%Krc8!Z
+r,hs]s*"?bs*4Qhrd+Tks*Xfos*artrI=s#JqEuSs+CB+rItB/Lku%es,-i7rf$l:s,R)>s,d8C
+rf[;Fs-3JI!g]1>rL!VQ!1NkUs-s([rgs.^s.K@b!MZ@gV#R7kVZ*JeW2ZesX/i>(Xfek3Yd(L?
+Za@-K[^WcW\[oDc]Y2(p^qmn)_o0O6a2l?DbKJ,ScHaeadF-Lne^i@(f\,!4gYL]Bhr*GOioB([
+jo4BMkNM0plK[^%m-X3.rpTmVs7-*Zs7?9_r:U'_rqH9ar;$9eo)&4[p\j=TJcE7[J,~>
+JcC<$JcG?Anc&IbrVZNhrqcZjr:p<drq?<`s7H?_rpp*Zs7$$Vs6]mSrTjUOlK\B5!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=3gtVh^IbEB+f@SU(e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9s).jR$>aKnC2%BqBP1phrac.A@q5LI!b#JErEfV4
+?![D6r`fD+rE9,%s&],!r`/ttqc!Mmr_`Sis%iVhqb@)ar_*)[r^m&ZpIG*MpI4sIrMAS7kD]=s
+q*t'Jr(-cXq+CWZrCm)_rD*AgrM9=YkEtP$ra5Y4s'be6s'u%=r+5k>s(D4Bs(VIIqeQ4Jrb_OM
+rbqaSqf2RTrH%dVr,qp\p36@Xq0C>5r-A3bqKMm]rcS'ZrcA$YpMotIqeu7Kq/QCSrcA!Zs)n?b
+rHJ9ds*=Tis*OcnrdFfq!.Xrt!eGrTre(6(!/:B+!f)Sfre^Z4s,6l8s,I&=rf@)@s,m;Ds-*JI
+rKRGMQ^@Z<s-WkUrL<hW!1j+\s.B=arh0@eU].(hV#[ClVbF%gWiE,#XKAV-YHY79ZEpmE[C3NQ
+\@K/]]=bei^V@S#_SX4/`Q#s>aN;WKbg"GYd*^7he'uq!f@S[.g=k<;h;7&Ii8N\Uj5f>$jpUA9
+l07Kulg4!*mI'uBs7$'Yrpp*\s7H6^rq??cqY:!ar;-!]q#'mbkl-/5\Gq'~>
+JcC<$JcG?Anc&IbrVZNhrqcZjr:p<drq?<`s7H?_rpp*Zs7$$Vs6]mSrTjUOlK\B5!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=3gtVh^IbEB+f@SU(e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[^<BIZEUR:Xf\\*Wi;qpVPU)`U7n6PSt;IAS!fY2Q^*i#PEM&iO,f3YN/NOLLkg_>
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEEH,r9s).jR$>aKnC2%BqBP1phrac.A@q5LI!b#JErEfV4
+?![D6r`fD+rE9,%s&],!r`/ttqc!Mmr_`Sis%iVhqb@)ar_*)[r^m&ZpIG*MpI4sI!*0"trCc3D
+k"5A<p.,$OrCQfWr_*2`qb@#as%iSqqbtj>ra5Y4s'be6s'u%=r+5k>s(D4Bs(VIIqeQ4Jrb_OM
+rbqaSqf2RTrH%dVr,qp\p36@Xq0C>5r-A3bqKMm]rcS'ZrcA$YpMotIqeu7Kq/QCSrcA!Zs)n?b
+rHJ9ds*=Tis*OcnrdFfq!.Xrt!eGrTre(6(!/:B+!f)Sfre^Z4s,6l8s,I&=rf@)@s,m;Ds-*JI
+rKRGMQ^@Z<s-WkUrL<hW!1j+\s.B=arh0@eU].(hV#[ClVbF%gWiE,#XKAV-YHY79ZEpmE[C3NQ
+\@K/]]=bei^V@S#_SX4/`Q#s>aN;WKbg"GYd*^7he'uq!f@S[.g=k<;h;7&Ii8N\Uj5f>$jpUA9
+l07Kulg4!*mI'uBs7$'Yrpp*\s7H6^rq??cqY:!ar;-!]q#'mbkl-/5\Gq'~>
+JcC<$JcG?Anc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sU!q,ICrp9[N!:'OI!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=BgtUT;g=b03f@SU)e^W*tdf.X4d*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I9Xf\\)Wi;qpVPU)`U7n6PSt2C@S!fY2QBd`"P*1rhO,f3YN/NOLLkg_=
+KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9rb`*\Chmg$C2%?pB4kiUAcH9@A,]s;@K0a7?iOI4
+?2\%->Q7n)=oVV(=8Z+u<W?%r;uT\p;>X2i:]=,e:&[ic9D_?[8c;3T8,>^J7K5dSiVC4R^%8o,
+]D>"i8,Z!V8bu'X9E%W]:&[oe:]92Bc19*AbPklJ@/j[5@fBm:AGg$<B)cNAB`;`FCA_lHD#S;K
+DZ4SQE;OYRErC(SFSp:ZG4g(VGklX5HMi'dGklR_G5cX\FT$:[EqjYME:n/GE;FSRErL.XFT6L`
+G5ZUdG^4T5H3/G@I/\QoIfFosJ-(:RK)UE&KE-`*LB!&/M#N54MMmDlN;nn;NrG+>OT1IBP5gaG
+Pl?sJQN*<MQi`\ERf/`US,f,YScYOWT`1YbU&^tfUg0anVPg>jW2ZesX/i>(Xfek3Yd(L>Za7$H
+[^NZT\[oDc]Y2%o^VI\&_o0O5`lH0Bb0.uPcHab_dF$CleCE.%f@\d1gYCW@hV[8LiSrnXjQ5Od
+kNM-ol0@U6liQSBmf)YVnF?&Inc8:\o_nI^pAXg_q#1$cqXaUZr:g0Rrdk*Xs*t~>
+JcC<$JcG?Anc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sU!q,ICrp9[N!:'OI!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=BgtUT;g=b03f@SU)e^W*tdf.X4d*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I9Xf\\)Wi;qpVPU)`U7n6PSt2C@S!fY2QBd`"P*1rhO,f3YN/NOLLkg_=
+KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9rb`*\Chmg$C2%?pB4kiUAcH9@A,]s;@K0a7?iOI4
+?2\%->Q7n)=oVV(=8Z+u<W?%r;uT\p;>X2i:]=,e:&[ic9D_?[8c;3T8,>^J7K5dSV;mQuN;\\2
+7eK:M8Gl'U9)VE^9_qK_:B"&fV":#BR-U+<?iFI5@JjU6A,^$:Ac?<ABDcHBC&VlFC]8/LD>S5M
+DuFYPEW'qVF80kTFo6FUGPcX\H.%$:H2Mp_GQ)dbFo$4YF8g4TEVXSHDu+GLEW1"XF8U.[FoQX`
+G63#7H2W$jH[L5?IK+crJ,Xs"JV&LQKE$T)L&Qi,L]<20M#rQmMuJ\8NW5%<O8k=AOoCODPQ-mH
+Q2d0MQi39QR@9TCS,\uYSc,,]T:hkVU&UheU].&oV5C,fVl6PnWiE,#XKAV-YHY79ZEggC['d?N
+\%&u[]=bei^;%Fu_8=+.`Poj;aN;TJbKS8Wcd:(edaZdsf%8O+g"P39h;-rFi8ESRj5]4^k2tjj
+kiq?sli-5PmI'EAmfN"Knbr"YoD\C\p&=[ap\O[`q>:$[qtU*`rTO63s0hrX~>
+JcC<$JcG?Anc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Y!:]sU!q,ICrp9[N!:'OI!pJh1roO:D
+jQ-=#!TN);i;_[7hYu=BgtUT;g=b03f@SU)e^W*tdf.X4d*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I9Xf\\)Wi;qpVPU)`U7n6PSt2C@S!fY2QBd`"P*1rhO,f3YN/NOLLkg_=
+KS+o/JUi9"I=6KiH?sj]GB\4QFEDSEEH,r9rb`*\Chmg$C2%?pB4kiUAcH9@A,]s;@K0a7?iOI4
+?2\%->Q7n)=oVV(=8Z+u<W?%r;uT\p;>X2i:]=,e:&[ic9D_?[8c;3T8,>^J7K5dS<W#MN9'8eB
+7eK:M8Gl'U9)VE^9_qK_:B"&f=S#JD;Z:&&@/j[5@fBm:AGg$<B)cNAB`;`FCA_lHD#S;KDZ4SQ
+E;OYRErC(SFSp:ZG4g(VGklX5HMi'dGklR_G5cX\FT$:[EqjYME:n/GE;FSRErL.XFT6L`G5ZUd
+G^4T5H3/G@I/\QoIfFosJ-(:RK)UE&KE-`*LB!&/M#N54MMmDlN;nn;NrG+>OT1IBP5gaGPl?sJ
+QN*<MQi`\ERf/`US,f,YScYOWT`1YbU&^tfUg0anVPg>jW2ZesX/i>(Xfek3Yd(L>Za7$H[^NZT
+\[oDc]Y2%o^VI\&_o0O5`lH0Bb0.uPcHab_dF$CleCE.%f@\d1gYCW@hV[8LiSrnXjQ5OdkNM-o
+l0@U6liQSBmf)YVnF?&Inc8:\o_nI^pAXg_q#1$cqXaUZr:g0Rrdk*Xs*t~>
+JcC<$JcG?AnG`Cbr;?EgrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[N!:'RJs60LGroO:D
+jQ-=##NF_$i8EMMhYu>\gtUT;g=b03f@SU)e^W*tdaHOjd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEs)A6^Df9N2D/B2e!GZ?JBF&6_An>OaA7K-K@fKj:@/XI4
+?N4=0>lS%->5_V'=T;J#<rQ,!<;]\p;Z9Pk;#a>j:Adic9`@]^9)V?[8G>XM7eT:LiVC4Q^%8o.
+]D>"i8,PpV8bl!X9DqQ\:&[oe:]9/9c2#TJbPbfJ@/aU4@fBm:AGg$=B)ZH@B`;`FCA_lHD#S;K
+DZ4SQE;FSRErC(SFSp:YG4g(UGkcR8HM`!dGklR^G5cX\FT-@[EqjYOE:\#EE;FSRErL.YFT6L`
+G5ZXbGlN'gHN/<lI/SHpIXckHJ-(:RK)UB(KS>-ZLB!#/M#N82M?&S5Muo!!NrG+>OT1IBP5gaG
+Pl?sJQN*<MQi`\ERf/`US,f,YT)YD_T`1YbUAq"fU]I<hrhg.&WMuntX/i>(Xfel,YXGb%Za7$H
+[^NZT\[f;`]Y(ql^VI\&_Sa=2`lH0Aai_fNc-FV\d*^:jeC<%"f@S^0g=tE=h;7&Ii8N\Uj5f=a
+k3(t-klL)8rp0[Qmf)\TnGi%Xo)J=]o_nI^pAXg_q#1$dqXaUZr:g0Qrdk*Ws*t~>
+JcC<$JcG?AnG`Cbr;?EgrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[N!:'RJs60LGroO:D
+jQ-=##NF_$i8EMMhYu>\gtUT;g=b03f@SU)e^W*tdaHOjd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEs)A6^Df9N2D/B2e!GZ?JBF&6_An>OaA7K-K@fKj:@/XI4
+?N4=0>lS%->5_V'=T;J#<rQ,!<;]\p;Z9Pk;#a>j:Adic9`@]^9)V?[8G>XM7eT:LV;dKtN;nh4
+7eK:L8Gu-U9)_K^9_qK_:B"&fV!FHAR-g7=?iOO5@JjU6A,^$:AcHBABDcHBC&VlFC]8/LD>S5M
+DuFYOEW1"WF80kTFo-@TGPZRZH.I<=H2W!`GPu^aFo$4ZF8^.SEVj_HDu+GLEW1"XF8^4\FoQX`
+GQ2pfH2`-iHN8HlI0+kIJ,Xs"JV&LQK*$^[L&Qi,LB*/0M>rG5MuAS9NK0%uO8k=AOoCODPQ-mH
+Q2d0MQi39QR@9TCS,\uYSc,/[T)bP`U&UkeU].%iV5F6i$`L&(WiE,#XKAV-YPtaoZ*L^B['d?N
+\%&uZ]">Vf]tV7s_8=(,`5Ta:aN2KGbKS5VcHjkbdaQ^qe^i@(g"P07gtgfChr*GOioB([jlY^g
+kl0fIlKeH9!U]=Sn,MnWnc&+ZoDeI]p&=[ap\O[`q>C*\qtU*`rTF02s0_lW~>
+JcC<$JcG?AnG`Cbr;?EgrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[N!:'RJs60LGroO:D
+jQ-=##NF_$i8EMMhYu>\gtUT;g=b03f@SU)e^W*tdaHOjd*L"_c-4ASb/q`Ga2Z*;_ns:,^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#I=6KiH?sj]GB\4QFEDSEs)A6^Df9N2D/B2e!GZ?JBF&6_An>OaA7K-K@fKj:@/XI4
+?N4=0>lS%->5_V'=T;J#<rQ,!<;]\p;Z9Pk;#a>j:Adic9`@]^9)V?[8G>XM7eT:L<VoGM9'JqD
+7eK:L8Gu-U9)_K^9_qK_:B"&f=R/oE;Z0u&@/aU4@fBm:AGg$=B)ZH@B`;`FCA_lHD#S;KDZ4SQ
+E;FSRErC(SFSp:YG4g(UGkcR8HM`!dGklR^G5cX\FT-@[EqjYOE:\#EE;FSRErL.YFT6L`G5ZXb
+GlN'gHN/<lI/SHpIXckHJ-(:RK)UB(KS>-ZLB!#/M#N82M?&S5Muo!!NrG+>OT1IBP5gaGPl?sJ
+QN*<MQi`\ERf/`US,f,YT)YD_T`1YbUAq"fU]I<hrhg.&WMuntX/i>(Xfel,YXGb%Za7$H[^NZT
+\[f;`]Y(ql^VI\&_Sa=2`lH0Aai_fNc-FV\d*^:jeC<%"f@S^0g=tE=h;7&Ii8N\Uj5f=ak3(t-
+klL)8rp0[Qmf)\TnGi%Xo)J=]o_nI^pAXg_q#1$dqXaUZr:g0Qrdk*Ws*t~>
+JcC<$JcG<@nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs60LGroO:D
+jQ-=#!oi1trnmh7hYu@2g]6+.g&]mZrmu8Ce^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSErc&KgDf0H0Ci!m&C2%BqBP1siral+?!+Z";s'bq8rEoS2
+s'>S.s',J+rE9,%s&],!s&K%trDW\ns&&\jr_NPhqb@)ar_*)[rCQrYpIG!Jq*k;ApV,FroXt&j
+oLJjNr(6]Vr_*2`qb@#ar_NRNs4un`qon?KrEoS4raG_6raYq<r+5n?rb).Brb;@Hr+l:Jrb_OM
+rbqaSqJlISrH%aUr,qm[oQU+Upj(S>qg&*aqKMm]rcS'ZrH%sYpi61MnSe;DqJlLTs)\*[s)n?b
+rHA<fH$TC8s*Ocnrd=isIt.HJ!eGrTrdt9*Kn]M\!f)SfreU]6Mi7Rns,@#=rJq#AOcfX+s-*JI
+rg!MLs-N\O!h#LGrL<hW!1j([s.9:arLj:eUSIgas.o^mrhg.&WMuntX/rD)Xfel,YXPh&Za7$H
+[^NZT\[f;`]Y(ql^V@S#_Sa=2`Q#s>aND]Lbg"GYcdC.ge'umtf@S[.g=k<:h;-rFi8ESRj5]4^
+k2tjjrojIKli-5OmI'uBs6p$YrUU![s7H9_s7ZHdqY:$brVH0`q#'jak5Kr3[/YX~>
+JcC<$JcG<@nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs60LGroO:D
+jQ-=#!oi1trnmh7hYu@2g]6+.g&]mZrmu8Ce^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSErc&KgDf0H0Ci!m&C2%BqBP1siral+?!+Z";s'bq8rEoS2
+s'>S.s',J+rE9,%s&],!s&K%trDW\ns&&\jr_NPhqb@)ar_*)[rCQrYpIG!Jq*k:Zb`2IXqaU3J
+rCHiXq+CWZrCm)_rD*>frM8PCqO$];rEoS4raG_6raYq<r+5n?rb).Brb;@Hr+l:Jrb_OMrbqaS
+qJlISrH%aUr,qm[oQU+Upj(S>qg&*aqKMm]rcS'ZrH%sYpi61MnSe;DqJlLTs)\*[s)n?brHA<f
+H$TC8s*Ocnrd=isIt.HJ!eGrTrdt9*Kn]M\!f)SfreU]6Mi7Rns,@#=rJq#AOcfX+s-*JIrg!ML
+s-N\O!h#LGrL<hW!1j([s.9:arLj:eUSIgas.o^mrhg.&WMuntX/rD)Xfel,YXPh&Za7$H[^NZT
+\[f;`]Y(ql^V@S#_Sa=2`Q#s>aND]Lbg"GYcdC.ge'umtf@S[.g=k<:h;-rFi8ESRj5]4^k2tjj
+rojIKli-5OmI'uBs6p$YrUU![s7H9_s7ZHdqY:$brVH0`q#'jak5Kr3[/YX~>
+JcC<$JcG<@nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$$Vs6fpSrp9[N!:'RJs60LGroO:D
+jQ-=#!oi1trnmh7hYu@2g]6+.g&]mZrmu8Ce^W*te'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9HZ*:I8Xf\\)Wi;noVPU)`U7n6PSt2C@R[KP1QBd`"P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSErc&KgDf0H0Ci!m&C2%BqBP1siral+?!+Z";s'bq8rEoS2
+s'>S.s',J+rE9,%s&],!s&K%trDW\ns&&\jr_NPhqb@)ar_*)[rCQrYpIG!Jq*k9_qFf%)qaU3J
+rCHiXq+CWZrCm)_rD*>frE//[k>M7cs'Yh7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVRNqelCOrG_UQ
+rGqjXpiQFVqf_UUq0;[[g3WXAr-8'^rHA0_qK2[Wrc7dRqf)(Dqf)COrc8$[r,hs]s*"?b!dK!9
+rd+Tks*Xfo!e,WKrdY'$JqEuS!ec8]re:K0Lku%e!fDnorf$l:!07#=!g&P,rf[;Fs-3MJs-E\O
+rKmYSR[X2Es-s([rLX%]!20:a!huHbrhTRj!2fan$`L&(WiE,$XKAV-YPtapZ*L^B['d?N\%&uZ
+]">Vf]tV7r^qmn*`5T^8a2l?EbKJ,ScHab`dF-LneCE1&f\,!4gYCW@hV[8LiSrnXjQ5OdkNMp0
+!UB"MliHMArpTmV!:g$Ys7?9_rUp3arqH9arV?Ego_\F]pAO.QJcE+WJ,~>
+JcC<$JcG<@nc&FarVZNhrqcZjqtU3cs7ZEas7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roO:D
+jQ-=#!oi1trnn%=hVR)Egt^Z`g&]mZrmq2%ec+'Ie'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9GZ*:I8Xf\Y(Wi;noVPL#_TqS-OSt2C@R[KP0QBd`!P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSEEcH)<Df0H0D/=!'C2.J^BE;aXral+?s'u%;s'bq8ra5\3
+ra#J-s',M,r)s&%r`B&!r`/ttr)<Vnr_`Sis%iVhr([/ar_*,\rCQrYogedHr'gVDp:f=qot:2l
+oLJgMrCQfWrCd,`qG$rar_NPjs4uh^qTS<LrEoS4raG_6raYq<r+5n?rb).Brb;@Hr+l:Jrb_OM
+rbqaSqJlISrH%^Tr,qm[oQU+UpNbS@qg&*aq02d\rcS'ZrcA$Yq/Q:Nn8J2CqJlLTs)\*[s)n?b
+rceBes*=Ti!df<BrdFfq!.Xuu!eGrTrdt9*Kn]M\#D\+kM2@+IMuAS9NK0%uNrkE*OoCODPQ-mH
+Q2d0MQi<BPRK&`SS,\uYSc,/[T)bP_U&UheU].(hV#[ClVuN[qWW&n%X/rD)Xfel,YQ_;;Za7$H
+rjG>+\@K/]]=bej^V@S#_SX4/`Poj<aN;TJbKS5Vcd:(edaQ^rf%8O+g"P07gtgiEi8ESRj5]4^
+jlY^gkiq?slg*p(mHs?@mfN"Knc&+ZoDeI]p&=[bp\O[`q>L0^qt^0`rT4$0s0M`U~>
+JcC<$JcG<@nc&FarVZNhrqcZjqtU3cs7ZEas7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roO:D
+jQ-=#!oi1trnn%=hVR)Egt^Z`g&]mZrmq2%ec+'Ie'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9GZ*:I8Xf\Y(Wi;noVPL#_TqS-OSt2C@R[KP0QBd`!P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSEEcH)<Df0H0D/=!'C2.J^BE;aXral+?s'u%;s'bq8ra5\3
+ra#J-s',M,r)s&%r`B&!r`/ttr)<Vnr_`Sis%iVhr([/ar_*,\rCQrYogedHr'gU]bDlCXr'p<K
+r(-cXq+CTYr_3/_r_EGgs%r`kj-fb2n!Eu[s'Yh7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVRNqelCO
+rG_UQrGqjXpN6=Uqf_UUq0;XZh0SsDr-8$]rHA0_qK2^XrGq^Rqf)%Cqf)COrc8$[r,hs]s*"Bc
+s*4Qhrd"WmI!kpAs*artrdY'$JqEuS!ec8]re:Z5LkpnEMMd>jMuo!!NrG(@OHG\)P5gaGPl?sJ
+QN*<NR/`TSRf/`US,f,YT)YD_T`(SaU&^tfV#R7kVZ*LnVuWgrWWoN*XKAV-YPta0Z*L^B['fnA
+8%6"=\[oDc]Y;.q^qmn)_o0O5`lQ6Cb0.uPc-FY^dF$CkeCE.%f@\d1g=tE=hV[8LiSrnXjQ5Lc
+k3(sml0@U#m-O-,mf)YVnF?&Jo)J=]o_nI^pAam`q#1$eqXj[\r:^*Nrdk*Us*t~>
+JcC<$JcG<@nc&FarVZNhrqcZjqtU3cs7ZEas7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roO:D
+jQ-=#!oi1trnn%=hVR)Egt^Z`g&]mZrmq2%ec+'Ie'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(kf\[],W[C!9GZ*:I8Xf\Y(Wi;noVPL#_TqS-OSt2C@R[KP0QBd`!P*1rhO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QFEDSEEcH)<Df0H0D/=!'C2.J^BE;aXral+?s'u%;s'bq8ra5\3
+ra#J-s',M,r)s&%r`B&!r`/ttr)<Vnr_`Sis%iVhr([/ar_*,\rCQrYogedHr'gTbq+K(,r_*/Y
+oLJgMrCQfWrCd,`qG$rar_NPjs&e/Wlr*dhs'Yh7r*oY8rabq<s(;7Cr+Q(DrbD@HrbVRNqelCO
+rG_UQrGqjXpN6=Uqf_UUq0;XZh0SsDr-8$]rHA0_qK2^XrGq^Rqf)%Cqf)COrc8$[r,hs]s*"Bc
+s*4Qhrd"WmI!kpAs*artrdY'$JqEuS!ec8]re:Z5LkpnEMMd>jMuo!!NrG(@OHG\)P5gaGPl?sJ
+QN*<NR/`TSRf/`US,f,YT)YD_T`(SaU&^tfV#R7kVZ*LnVuWgrWWoN*XKAV-YPta0Z*L^B['fnA
+8%6"=\[oDc]Y;.q^qmn)_o0O5`lQ6Cb0.uPc-FY^dF$CkeCE.%f@\d1g=tE=hV[8LiSrnXjQ5Lc
+k3(sml0@U#m-O-,mf)YVnF?&Jo)J=]o_nI^pAam`q#1$eqXj[\r:^*Nrdk*Us*t~>
+JcC<$JcG<@nG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g'66_f[na+ec+'6e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Us
+]Y(ke\[],W[C!9GZ*:F7Xf\Y(Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QrcA<bEcH)<DuOVTD/B2e!GZ?JBEDgYB)ZBAA,p-<@fKj:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2!<;fbp;ZBVl;#a>j:Adic9`@]]9)_E[8G,LG7fMB?^>-Eq]_b1j
+8,PpV8bl!W9E%W]:&[oe:]F8kguclSbjimT?iOO5@JjU6A,^$:AcHBABDcHBC&VlFC]8/LD>S5L
+DuO_PEW'qUF80kSFo-@RGPHFWH/a/HH2Mp^GQ)daFo-:ZF8g4TEVj_DDu=SNEW:(YF8^4\FoQX`
+G63#7H2`-iHN8HmIK+`rJ,XuuJH1<$K*R'`Knb>;LPYqds,$f7rf$l:!07&>s,[5CrK75GPa)04
+s-E\Org<_Rs-inU!h>gPrLX%]!20:as.TLgrM0LkVPa?j!iW)tri-""XT#=&Y-7i/9<ke/Za@*I
+[^NZT\[f;`]Y(ql^V@S#_SX71`Q#s>aN;TJbg"GYcd:(ee'umtf%8O+g"P39h;-rFi8ESRj5]4^
+k2tjikiq?sli-5VmI'E2n*oi:nc&+ZoDeI]p&Fabp\Xabq>C*^qt^0`rT4$0s0;TS~>
+JcC<$JcG<@nG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g'66_f[na+ec+'6e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Us
+]Y(ke\[],W[C!9GZ*:F7Xf\Y(Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QrcA<bEcH)<DuOVTD/B2e!GZ?JBEDgYB)ZBAA,p-<@fKj:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2!<;fbp;ZBVl;#a>j:Adic9`@]]9)_E[8G,LG7fK7,NW"h57eB4K
+8Gu-U9)VE^9_qK_:B"&h;#d?ORJ<0>Qi1:k@/aU4@fBm:AGg$=B)ZH@B`;`FCA_lHD#S;KDZ+MQ
+E;FSQEr:"RFSg4XG4TqQGkZLCHMVpbGkcL^G5ZR\FT$:[EqjYOE:7`CE;FSSErL.YFT6L`G5ZUd
+G^4T6HN/<lI/\QoIK4lsJH(0#K)UB-KS>,7L51P?re^Z4!/pi8s,@#=rf@)@!0R5C!gAk5rg!ML
+s-N_Ps-`nUrL3kYSXo_Ns.9:arLs7c!2KLg!i;ckrhfgrWN#ls!NW=$XT>T.rif&#ZEpmE['d?N
+\%&uZ]">Vf]tV7r^qmn)`5T^8a2l?Db0/#RcHab_dF$FmeCE.%f@\d1gYCW@hV[8LiSrnXjQ5Od
+kND'nl0@U6lj3"HmdKW6nF?&Jo)J=]o_nI_pAXg`q#:*eqXsa]r:^*Nrdk*Ss*t~>
+JcC<$JcG<@nG`@arVZNhrqcWir:p<drq?<`s7H?_rUU!Ys7$$Vs6fpSrp9[N!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g'66_f[na+ec+'6e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Us
+]Y(ke\[],W[C!9GZ*:F7Xf\Y(Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQTjH?sj]GB\4QrcA<bEcH)<DuOVTD/B2e!GZ?JBEDgYB)ZBAA,p-<@fKj:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2!<;fbp;ZBVl;#a>j:Adic9`@]]9)_E[8G,LG7fHE`9@$319D_3N
+8,PpV8bl!W9E%W]:&[oe:]F8k=PHdD;Z0u&@/aU4@fBm:AGg$=B)ZH@B`;`FCA_lHD#S;KDZ+MQ
+E;FSQEr:"RFSg4XG4TqQGkZLCHMVpbGkcL^G5ZR\FT$:[EqjYOE:7`CE;FSSErL.YFT6L`G5ZUd
+G^4T6HN/<lI/\QoIK4lsJH(0#K)UB-KS>,7L51P?re^Z4!/pi8s,@#=rf@)@!0R5C!gAk5rg!ML
+s-N_Ps-`nUrL3kYSXo_Ns.9:arLs7c!2KLg!i;ckrhfgrWN#ls!NW=$XT>T.rif&#ZEpmE['d?N
+\%&uZ]">Vf]tV7r^qmn)`5T^8a2l?Db0/#RcHab_dF$FmeCE.%f@\d1gYCW@hV[8LiSrnXjQ5Od
+kND'nl0@U6lj3"HmdKW6nF?&Jo)J=]o_nI_pAXg`q#:*eqXsa]r:^*Nrdk*Ss*t~>
+JcC<$JcG9?nc&IbrVZNhrVHQiqtU3cs7ZB`s7H?_rUL$[nF6DFs6]mSrTsRM!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2G21j,g=k65f[na+f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(ke\[],W[C!9GZ*:F7XfSS'Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQWlH?sj]rc\ZlF`__HEcH)<DuOVTD/B2e#ARseBP;$kB)Q9BA7K-K@fKm:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2"<;]\p;Z9Pl;#X8j:A[cb9`@]^9)V?Z8G#FI7fM?=^>-Er]_t=k
+8,PpU8bl!X9DqQ\:&[oe:]F8kgZ?]MbkB6Y?iOO5@JjU6A,^$:AcHBABDcHBC&VlEC]A5MD>J/L
+DuO_OEW'qVF8'eRFo$:PGPHFVH0KYMH2Mp^GPu^aFo$4ZF8^.TEVj_CDu=SOEW1"YF8U.[FoQXa
+GQ2mfH2W$oH[L3hI=?Wprdb$"!.t3&!JH1+LB!#/M#N54MMmDlMueourf@)@s,m;D!gAk5rg!ML
+s-N_Ps-`nUrgWqXs.0+[!hZ-YrLs7c!2KLgs.o^mrhodp!3,sts/Q.$riH4(YPta,Z*OA88$o\4
+[^WcW\[oDc]Y2%o^VI\&_Sa=2`Q#s>aND]Lbg"GYcd:(fe'umtf%8O+g=k<:h;-rFi8ESRj5]4^
+k2tjjkiq?sli-5OmI'uBs6p$YrUL$]o^r+Trq?BdqtU0dr;--aq>BsbjSj`1YlB4~>
+JcC<$JcG9?nc&IbrVZNhrVHQiqtU3cs7ZB`s7H?_rUL$[nF6DFs6]mSrTsRM!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2G21j,g=k65f[na+f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(ke\[],W[C!9GZ*:F7XfSS'Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQWlH?sj]rc\ZlF`__HEcH)<DuOVTD/B2e#ARseBP;$kB)Q9BA7K-K@fKm:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2"<;]\p;Z9Pl;#X8j:A[cb9`@]^9)V?Z8G#FI7fK41NVAD17e9.J
+8Gl'T9)_K^9_qK_:B"&h;#d?NRIlm?Qi1:k@/aU4@fBm:AGg$=B)ZH@B`;`FCAVfHD#S;JDZ4SR
+E;=MPErC(RFSg4WG4KkPGkQFIHMDd`GkcL]G5cX\FT-@[Eqs_PE:.ZBE;OYSErU4YFT6L`G5c^c
+GQ<$fH3\eEI!pElIXh?Is+(0%rdt6)L&Qi,LB*/0M#rQmMuJY9NK4"!s,d8CrfR>HPa)04s-E\O
+rg<_Rs-iqVs.'+[rLO(_TV27Ws.TLgrM9Ii!2fans/5psri6"!!3H1%!NrX*YQ;#7rj,,%[C3NQ
+\@K/]]=bei^;%Fu_8=(,`5T^8a2l?EbKJ,ScHab_dF-LneCE.%f@\g2gYCW@hV[8LiSrnXjQ5Od
+kNM-ol0@U6liHMArpTmV!:g$Y!qZ'VrUp0`s7cEcrqZKgpA=[`pAO(OJcDtSJ,~>
+JcC<$JcG9?nc&IbrVZNhrVHQiqtU3cs7ZB`s7H?_rUL$[nF6DFs6]mSrTsRM!:'OI!pJh1roX7B
+!9F.>s5F%;ro!h6!8d_2G21j,g=k65f[na+f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`59C-^q[Xt
+]Y(ke\[],W[C!9GZ*:F7XfSS'Wi2hnV50o^TqS-NSt2C@R[KP0QBd`!P*1rgO,f3YN/EIKLkg_=
+KS+o/JUi9#IXQWlH?sj]rc\ZlF`__HEcH)<DuOVTD/B2e#ARseBP;$kB)Q9BA7K-K@fKm:@/XI4
+?N4=/>lS%.>5VP'=T;J#<rZ2"<;]\p;Z9Pl;#X8j:A[cb9`@]^9)V?Z8G#FI7fHE_9@-929Dq?O
+8,PpU8bl!X9DqQ\:&[oe:]F8k=PHdD;Z0u&@/aU4@fBm:AGg$=B)ZH@B`;`FCAVfHD#S;JDZ4SR
+E;=MPErC(RFSg4WG4KkPGkQFIHMDd`GkcL]G5cX\FT-@[Eqs_PE:.ZBE;OYSErU4YFT6L`G5c^c
+GQ<$fH3\eEI!pElIXh?Is+(0%rdt6)L&Qi,LB*/0M#rQmMuJY9NK4"!s,d8CrfR>HPa)04s-E\O
+rg<_Rs-iqVs.'+[rLO(_TV27Ws.TLgrM9Ii!2fans/5psri6"!!3H1%!NrX*YQ;#7rj,,%[C3NQ
+\@K/]]=bei^;%Fu_8=(,`5T^8a2l?EbKJ,ScHab_dF-LneCE.%f@\g2gYCW@hV[8LiSrnXjQ5Od
+kNM-ol0@U6liHMArpTmV!:g$Y!qZ'VrUp0`s7cEcrqZKgpA=[`pAO(OJcDtSJ,~>
+JcC<$JcG9?nG`@arVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$!Us6]mSrTsRM!:'OI!pJh1roX7B
+!9F+=!oi1trnmh7hYu@2g]6+.g&]mZrmuVMe^W*tda?Ihd*L"_c-4ARaiMQD`l5p8_SX.)^V@Ip
+]Xt_b\@8oS['R'CYck43XK/A$W2HPiUnj`YTqJ!KSXZ+;R@'>,Q'@JqP*(fdNfB!VMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r:Df0H0D/B5fs(VOJrb2=E!+u4As().>raPn9s'Ye4
+s'G_2rET>+s'#A(r`K2%rDrnts&Aqqr_ibnr)!Dhr_EAcr_3;aqF^]Xr(-ELqaUVDoY0+opUpJp
+njiUKr(6]Vr_*2`qb@#ar_NPjs4ZSZm*,@MrEoS4raG_6raYq<r+5n?rb).Brb;@HqeQ1Irb_OM
+rbqaSqJlFRrH%[SqfVdZnTXbQoQfqPpNcX\pil[[rcS'ZrH%sYpi64Nm;MoAqf2UUs)\-\s)n?b
+rHA<fH$TC8s*F`nrd>$#It*!!JUrFPK*R'`Knb>;LPYqd!K)g7N;nk;NrG(@OHG\)P5g^GPl?sJ
+QN*<NR/`QSRf/`USH#/ZT)YG_T`(SaU&^teV#R7kVZ!CoW2ZcqWX#T+XKAV-Y-7i/!O8s0ZU;+-
+[^NZT\[f;_]=bei^;%Fu_8=(-`Poj;aN2KGbKJ,ScHjkbdF-LneCE1&f\,!4gYCW@hV[8LiSrnX
+jQ5OdkNMp0!UB"MliHMArpKpXnaZVLs7?9_rUp3as7cEcrV?HhpA=[`pAO%NJcDqRJ,~>
+JcC<$JcG9?nG`@arVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$!Us6]mSrTsRM!:'OI!pJh1roX7B
+!9F+=!oi1trnmh7hYu@2g]6+.g&]mZrmuVMe^W*tda?Ihd*L"_c-4ARaiMQD`l5p8_SX.)^V@Ip
+]Xt_b\@8oS['R'CYck43XK/A$W2HPiUnj`YTqJ!KSXZ+;R@'>,Q'@JqP*(fdNfB!VMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r:Df0H0D/B5fs(VOJrb2=E!+u4As().>raPn9s'Ye4
+s'G_2rET>+s'#A(r`K2%rDrnts&Aqqr_ibnr)!Dhr_EAcr_3;aqF^]Xr(-ELqaUU]c].[Xr^QHK
+r(-`Wq+CWZrCm)_rD*>fs%r`kigK8&qj77gs'Yh7r*oY8rabq<s(;7Cr+Q(DrbD=GrbVRNqelCO
+rG_UQr,VaWp2p1Sqf_LRpiuFVn9XhSqfqm[rHA0_qK2[Wrc7dRr,D%Ar,DOQrc8$[rH/'^s*"?b
+!dK!9rd+Tk!.=co#C_/PJ:N3%K)UB-KS>,7L51P?reUZ5MuJ\8N<#"<NrkE*OoCODP5pjHQ2d0M
+Qi<BPR/i]SS,]#YSc55\TDtS_U&UheU]%"gV#[CkVZNfrWW&n&X/rD)Xfeh1ricF.ZMq0t['d?N
+\%&uZ]"5Md]Y2%o^VI\&_SjF4`lH0Aai_fMbg"GZd*^7he'umtf@S[.g=k<:h;-rFi8ESRj5]4^
+k2tjjrojIKli-5OmI'uB!q>aMrpp*\s7H9_s7ZKeqtU-crqc?cq>Bsbj8OW0YQ'+~>
+JcC<$JcG9?nG`@arVZNhrqcWir:p9cs7ZEas7H?_rUU!Ys7$!Us6]mSrTsRM!:'OI!pJh1roX7B
+!9F+=!oi1trnmh7hYu@2g]6+.g&]mZrmuVMe^W*tda?Ihd*L"_c-4ARaiMQD`l5p8_SX.)^V@Ip
+]Xt_b\@8oS['R'CYck43XK/A$W2HPiUnj`YTqJ!KSXZ+;R@'>,Q'@JqP*(fdNfB!VMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSEEH,r:Df0H0D/B5fs(VOJrb2=E!+u4As().>raPn9s'Ye4
+s'G_2rET>+s'#A(r`K2%rDrnts&Aqqr_ibnr)!Dhr_EAcr_3;aqF^]Xr(-ELqaUTcp.Nb)r^QHK
+r(-`Wq+CWZrCm)_rD*>fs%r_tgJdT>rEoS4raG_6raYq<r+5n?rb).Brb;@HqeQ1Irb_OMrbqaS
+qJlFRrH%[SqfVdZnTXbQoQfqPpNcX\pil[[rcS'ZrH%sYpi64Nm;MoAqf2UUs)\-\s)n?brHA<f
+H$TC8s*F`nrd>$#It*!!JUrFPK*R'`Knb>;LPYqd!K)g7N;nk;NrG(@OHG\)P5g^GPl?sJQN*<N
+R/`QSRf/`USH#/ZT)YG_T`(SaU&^teV#R7kVZ!CoW2ZcqWX#T+XKAV-Y-7i/!O8s0ZU;+-[^NZT
+\[f;_]=bei^;%Fu_8=(-`Poj;aN2KGbKJ,ScHjkbdF-LneCE1&f\,!4gYCW@hV[8LiSrnXjQ5Od
+kNMp0!UB"MliHMArpKpXnaZVLs7?9_rUp3as7cEcrV?HhpA=[`pAO%NJcDqRJ,~>
+JcC<$JcG6>nc&Ibr;?EgrqcWir:p<drq?<`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#!oi1trnmk8hVS7f!SlH/g&]mZrmq>)e^W*tdf.X0d*L"_c-4ARaiMQD`l5p8_SX.)^V7Co
+]XkYa\@/iR['R'CYck43XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSErc%sXDuOVTD/B2e!buF`rb)@GAnM$Rs'u+>rF5e8s'Ye4
+s'G_2rET>+s'#A(s&f8%rDrqus&Anps&/kor)!Dhr_EAcr_3;aqF^ZWr(-<I!_2,+o=j%opUpMq
+njiUKr(6]VrCd,`qG$rar_NMi!SQ,dc0*=L?iOO5@JjU6A,^$:Ac?<ABDZBBC&VlEC]8/LD>S5M
+DuFYNEW'qUF7s_QFo$:NGP?@>H2;d\GPu^`Fo$4ZF8^.TEVseBDuFYOEW:(YF8^4\FoQXaGQ2mf
+H2`-iHN8HmIK+`rJ,Xs!JV*lR#D@ebL5(J=M#N53MMqIm!f`5#rf7)AOoCODP5pjGPld8<Qi<BP
+RK&`TS,]#YSc55\TDtS_U&UheU]%"gV>mFlVuN[qWW&ptWrT7#XoGO(YPta,Z*OA8::.F;[^WcV
+\[f;`]Y(ql^V@S#_SX4/`Poj;aN2KGbKS5VcHjkbdF-Lne^i@(f\,!4gYCW@hV[8LiSrnXjQ5Od
+kNM0plK[^%m-X3.rpKpXnaZVLs766_rUp0`s7cHdrV?Egp\Xgbp\j+NJcDkPJ,~>
+JcC<$JcG6>nc&Ibr;?EgrqcWir:p<drq?<`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#!oi1trnmk8hVS7f!SlH/g&]mZrmq>)e^W*tdf.X0d*L"_c-4ARaiMQD`l5p8_SX.)^V7Co
+]XkYa\@/iR['R'CYck43XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSErc%sXDuOVTD/B2e!buF`rb)@GAnM$Rs'u+>rF5e8s'Ye4
+s'G_2rET>+s'#A(s&f8%rDrqus&Anps&/kor)!Dhr_EAcr_3;aqF^ZWr(-<I!_/u]c].[Xs$lQL
+r(-`Wq+CTYr_3/_r_EGgr_WWiiL/turEoS4raG_6raYq<r+5k>s(D4Bs(VIIqeQ1Irb_OMrbqaS
+q/Q@Rr,_RRqfVaYn9=VOhg,'Cpil[[rH7sYrcA$Yq/Q=Olu2iAqJlOUrcA$[s)n?brceBe!."Qi
+s*F`nrdFfq!.Xuu!J,k%K*R'`Knb>;LPYqd!K)g7Muo!!NrG(?OHKO*s-!GIrKRGMQ^@]=s-`nU
+rgWqXs.0.\s.B=arLs7c!2KLgs/#amrhodp!3,sts/Q.$riQ4'!3cC+!O8s0ZVIm8[^NZT\@K/]
+]=bei^;%Fu_8=(,`5T^8a2l?Db0/#RcHab_dF$CkeCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(sm
+l0@R"m-O-,mf)YVnF?&Jo)J:]o_nI^pAambq#1$eqY0m`r:g0Lrdk*Os*t~>
+JcC<$JcG6>nc&Ibr;?EgrqcWir:p<drq?<`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#!oi1trnmk8hVS7f!SlH/g&]mZrmq>)e^W*tdf.X0d*L"_c-4ARaiMQD`l5p8_SX.)^V7Co
+]XkYa\@/iR['R'CYck43XK/A#W2HMhUnj`YTq@pJSXZ+;R@'>,Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSErc%sXDuOVTD/B2e!buF`rb)@GAnM$Rs'u+>rF5e8s'Ye4
+s'G_2rET>+s'#A(s&f8%rDrqus&Anps&/kor)!Dhr_EAcr_3;aqF^ZWr(-<I!_-0ip.Nb)s$lQL
+r(-`Wq+CTYr_3/_r_EGgr_WVrg/IN>rEoS4raG_6raYq<r+5k>s(D4Bs(VIIqeQ1Irb_OMrbqaS
+q/Q@Rr,_RRqfVaYn9=VOhg,'Cpil[[rH7sYrcA$Yq/Q=Olu2iAqJlOUrcA$[s)n?brceBe!."Qi
+s*F`nrdFfq!.Xuu!J,k%K*R'`Knb>;LPYqd!K)g7Muo!!NrG(?OHKO*s-!GIrKRGMQ^@]=s-`nU
+rgWqXs.0.\s.B=arLs7c!2KLgs/#amrhodp!3,sts/Q.$riQ4'!3cC+!O8s0ZVIm8[^NZT\@K/]
+]=bei^;%Fu_8=(,`5T^8a2l?Db0/#RcHab_dF$CkeCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(sm
+l0@R"m-O-,mf)YVnF?&Jo)J:]o_nI^pAambq#1$eqY0m`r:g0Lrdk*Os*t~>
+JcC<$JcG6>nc&FarVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g&]mZrmuYNe^W*tdaHOjd*L"_c-4ARaiMQD`l5p7_SX.)^V7Co
+]XkYa\@/iRZa6sBYck43XK/A#W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSFEcH)<Df9N2D/=%gC]A,LC&VfGB)lQBAHHCPA,Tm:@K0a6
+?iOI4?2\%.>Q7n)=oVV(=8c2!<W?%s;u]bp;>j>j:]F2e:&[ic9DV9Y8c2-L8,qN=^>-Et]DtFk
+8,GjU8bbpW9DqQ\:&[oe:]4)ifAt3>bl1uK@/aU4@fBm:AGg$<B)cN@B`DfGCAVfGD#S;KDZ+MQ
+E;=MOEr:"PFS^.UG49_MGiX/HGkZF\G5ZR[FT-@[Eqs_QE9hH?E;OYTErL.YFT6I`G5ZUdG^4T6
+H3\eEI!pElIXh?I!J,k%K+*EeKnb>;LkpnEMMd>kMueourf7,BOcfX+!gAk5rfmPNQ^@]=s-WkU
+rL3kYSXo_Ns.B=arh9@ds.fOgs.o^mrMT[o!3,ps!irE(riHF.YHP17Z*CV6ZVRs9[^NZS\@K/]
+]=bei^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\dF$CkeC<%"f@S[.g=k<;h;7&Ii8N\Uj5f=`k2tjj
+l07L!lg4!*mdC)C!V#XXncJFTo_nI_pAXgaq#:*fqY0m`r:g0Lrdk*Ns*t~>
+JcC<$JcG6>nc&FarVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g&]mZrmuYNe^W*tdaHOjd*L"_c-4ARaiMQD`l5p7_SX.)^V7Co
+]XkYa\@/iRZa6sBYck43XK/A#W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSFEcH)<Df9N2D/=%gC]A,LC&VfGB)lQBAHHCPA,Tm:@K0a6
+?iOI4?2\%.>Q7n)=oVV(=8c2!<W?%s;u]bp;>j>j:]F2e:&[ic9DV9Y8c2-L8,oC1NV\S7Mam5,
+qagZWpe(NYrCm&^r_EGgrD3KhiL/tura5Y4raG_6raYq<r+5k>s(D4Bs(VIIqeQ1Irb_OMrGV[S
+q/Q=Qr,_RRqK;UWn9=VOjE^THpNQRZrH7sYrcA$Yq/Q=OlYl]?qf2XVrcA$[s)e<brHA<fH$TC8
+#CCiGI=6QnJ,Xs!JV*lR%"s=gL5(J>Ll$tGMMqIm!KE-=NrkE*OoCLFPE_=2Pld8<Qi<BPR/i]S
+Rf]+NSc,/[TDtS`U&UkeU]%"gV#[CkVuN[qWVrguX/rE%XTu#4YHY79Z*OA8:UIO<[^W`U\[f;`
+]Y(ql^V@S#_SX4/`Poj;aN2KGbKJ,ScHab`dF-LneCE.%f@\d1g=tH>hV[8LiSrnXjQ5Lck3(sm
+l0@U#m-O--mf)YUnF?JJ!qZ'VrUp3arqH?crqZNhp\Xgbp\j+NJcDhOJ,~>
+JcC<$JcG6>nc&FarVZNhrqcWir:p9cs7ZB`s7H?_rUU!Ys7$!Us6]mSrTsRM!:'OIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g&]mZrmuYNe^W*tdaHOjd*L"_c-4ARaiMQD`l5p7_SX.)^V7Co
+]XkYa\@/iRZa6sBYck43XK/A#W2HMhUnaZXTq@pJS=?":R$a5+Q'@JqP*(fdNfB!UMM[1GLPCP:
+K7ec,J:N,uI=6KiH?sj]GB\4QFEDSFEcH)<Df9N2D/=%gC]A,LC&VfGB)lQBAHHCPA,Tm:@K0a6
+?iOI4?2\%.>Q7n)=oVV(=8c2!<W?%s;u]bp;>j>j:]F2e:&[ic9DV9Y8c2-L8,lT^9@?E47e'"G
+8Gu-T9)_K^9_qK_:B"&f:]OSN;t3cb?iFI4@JjU6A,^$:Ac?<ABDZBBC&VlEC]8/LD>S5LDuO_O
+EVskTF7s_PFnp4MGP?@CH2;d[GPu^`Fo$4ZF8^.TEVseADu=SOEW:(YF8^4\FT?U`G63#7H2`*p
+H[L3hI=?WprdY$#K)UB2KS>,7L51S@M2@+IMuJY9NK4"!!g&P,rfR>HPa)04!g]1>rg<_R!1NkU
+!h>gPrLX%]s.K@bs.]OgrM9Ii!2f^ms/5psrMfq"XK;E'#Hk86YctC;ZMq1+['d?N\$rlX\[oDc
+]Y2%o^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjncdaQ^qe^i@(f\,!4gYL]Bhr*GOioB([jlPXekNM0p
+lKdd&m-X6/rpKmWnbr"[oCV\Rp&Fabp\agcq>L0aqtg6brSmg-s/c6N~>
+JcC<$JcG6>nG`@arVZKgrqcWir:p9cs7ZEarq-6^rUU!Ys7$!Us6]mSrTsRMs6BUJs60LGroX7B
+!9F.>s5O(;rnmh7hYu==gtUT;g=b03f@SU(rmY`4da?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1l
+]",A\[^NTMZa-g>YHG"/X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D7
+K7\Z)J:E#rI=-BfH?jaZGBS-.F:3/1EH,r:Df0H0D/B2e!buF`rb)@GAnM$Rs().>rF5e8s'Ye4
+s'G_2rETA,s'#A(r`K2%rDrqus&Anps&/kor)!Dhr_EAcr_3;aq+CTWqag9J!9!F^h7`WsnONII
+r(6]VrCd,`qG$rarD3Ag!7g,Skfj!4s'Yh7r*oY8rabq<rau1Cqe6"DrbD=GrbVRNqJQ:NrG_RP
+rGqdVolU%Qq0)4Nom#eJq0;UWrHA-^qK2^XrGq^Rr,D@J!,hOLrG_XRrc8$[rH/'^s*"Bcs*+Nh
+rd+Tk!.=co(4La_J:N3&JqJ]/KS>/8LPL\BM2I1Krepl;NrG(EOHGZgP*;)org!ML!13\Ps-WkU
+rL<hW!1j([s.9:arLs7cs.fOgs.o^mrMT[os/H!ts/Q.$riQ4'!3cC+8$TA*Za7$G[C3NQ\%&uZ
+]">Vf]tM.p^VI\&_Sa=2`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(g"P07gtgfChr*GOioB([jo4BG
+kNM0plKeH9!U]=Sn,MkWnc&+ZoDeI]p&Facp\agcq>L0bqtg6crT!m.s/>sJ~>
+JcC<$JcG6>nG`@arVZKgrqcWir:p9cs7ZEarq-6^rUU!Ys7$!Us6]mSrTsRMs6BUJs60LGroX7B
+!9F.>s5O(;rnmh7hYu==gtUT;g=b03f@SU(rmY`4da?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1l
+]",A\[^NTMZa-g>YHG"/X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D7
+K7\Z)J:E#rI=-BfH?jaZGBS-.F:3/1EH,r:Df0H0D/B2e!buF`rb)@GAnM$Rs().>rF5e8s'Ye4
+s'G_2rETA,s'#A(r`K2%rDrqus&Anps&/kor)!Dhr_EAcr_3;aq+CTWqag9J!2Ro"qMYE4nONII
+r(6]VrCd,`qG$rarD3Ag!2JJ?l^7WXs'Yh7r*oY8rabq<rau1Cqe6"DrbD=GrbVRNqJQ:NrG_RP
+rGqdVolU%Qq0)4Nom#eJq0;UWrHA-^qK2^XrGq^Rr,D@J!,hOLrG_XRrc8$[rH/'^s*"Bcs*+Nh
+rd+Tk!.=co(4La_J:N3&JqJ]/KS>/8LPL\BM2I1Krepl;NrG(EOHGZgP*;)org!ML!13\Ps-WkU
+rL<hW!1j([s.9:arLs7cs.fOgs.o^mrMT[os/H!ts/Q.$riQ4'!3cC+8$TA*Za7$G[C3NQ\%&uZ
+]">Vf]tM.p^VI\&_Sa=2`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(g"P07gtgfChr*GOioB([jo4BG
+kNM0plKeH9!U]=Sn,MkWnc&+ZoDeI]p&Facp\agcq>L0bqtg6crT!m.s/>sJ~>
+JcC<$JcG6>nG`@arVZKgrqcWir:p9cs7ZEarq-6^rUU!Ys7$!Us6]mSrTsRMs6BUJs60LGroX7B
+!9F.>s5O(;rnmh7hYu==gtUT;g=b03f@SU(rmY`4da?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1l
+]",A\[^NTMZa-g>YHG"/X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D7
+K7\Z)J:E#rI=-BfH?jaZGBS-.F:3/1EH,r:Df0H0D/B2e!buF`rb)@GAnM$Rs().>rF5e8s'Ye4
+s'G_2rETA,s'#A(r`K2%rDrqus&Anps&/kor)!Dhr_EAcr_3;aq+CTWqag9J!*/\bdRs%"qagWV
+q+CTYr_3/_r_EDfrD3Jqfi.H>rEoS4raG_6raYq<r+5k>s(D4Bs(VIIqeQ1Irb_LLrbqaSq/Q@R
+qfDFPqK;UWms"GLlZr;Np36IYrH7sYrcA$Yq/Q=Op29qKpM^"Lqf2UUs)\-\s)n?brceBe!."Qi
+s*F`nrd>Q2It*!!JV&K+K7no3L5(J=Ll$tGMMqIm!KE-=NsCc/OcklkPEc'3s-<YOrg<_R!1NkU
+s-s([rLX%]!20:as.]OgrM9Ii!2f^ms/>ssri6"!!3H1%s/l@*rientZEggC['[6L[^W`U\[f;`
+]Y(qk^;%Fu_8=(,`5T^8a2l?Db0/#RcHab_dF$CkeC<%"f@S^0g=tE=h;7&Ii8N\Uj5f>$josr3
+l07L!rp0[Qmf)\Tn,W"Xo)J=]o_nI_pAambq#:*fqY9sar:p6Nrdk*Js*t~>
+JcC<$JcG6>nG`=`rVZNhrVHNhr:p<drq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRI!pJh1roX7B
+s5a1>!oi1trnn%=hVR)Egt^Z`g2P`tf@SU(e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NTMZa-g>YH=q.X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D8
+K7\Z)J:E#rI=-BfH?jc7G6N/4FEDSErc%sXDuOVTD/B2es(VOJrb2=Es(;7As().>raPn9s'Ye4
+s'G_2r*98+s'#A(s&f;&rDrqus&Anps&/kor)!Dhr_EAcrCm2`q+CQVqFL<M!9!F^h7`WsnONII
+rCQcVrCd,`qG$rar_NGg!7^&Rkfj!4s'Yh7r*oY8rabq<rau1Cqe5tCs(_FHrbVRNqJQ:NrG_OO
+rGqdVoQ9qPpic(LnTakToQ^(RrHA-^qK2[Wrc7gSqf(k>rG_XRrc8$[rH/'^!-\<b!dK!9rd"Tl
+I/\QoIMmWcJ:W9'K7ei1Knb>;LPUeDMMd=NN/`gWrf7)AOoCLKPE_;sQ'R`&rg<_Rs-iqV!h>gP
+rLO(_TV27Ws.]OgrhTRjs/,ams/>ssri6"!!3H.$!j8`1ricF.ZMq0<['d<M[^W`U\[f;`rk(D-
+^;%Fu_8=(,`5T^8a2l?Db0.uPc-FV\d*^7he'uq!f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjkiq?s
+li-5OmI'uB!q>aMrpp*\s7H<`s7ZHdr:p9erqcEequ$6fiVnE.W;hA~>
+JcC<$JcG6>nG`=`rVZNhrVHNhr:p<drq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRI!pJh1roX7B
+s5a1>!oi1trnn%=hVR)Egt^Z`g2P`tf@SU(e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NTMZa-g>YH=q.X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D8
+K7\Z)J:E#rI=-BfH?jc7G6N/4FEDSErc%sXDuOVTD/B2es(VOJrb2=Es(;7As().>raPn9s'Ye4
+s'G_2r*98+s'#A(s&f;&rDrqus&Anps&/kor)!Dhr_EAcrCm2`q+CQVqFL<M!2Ro"q2Fi6qagZW
+pe(KXr_3/_r_EGgr(mBfi0inurEoS4raG_6raYq<r+5k>s(D4Brb;CIqeQ1Irb_LLrbqaSpi67Q
+qfDCOqK;RVmW\2Gq0DUWp36IYrH7sYrH%sYq/Q:NlYl`@qf2UUs)\-\s)e<brHA<fH$TC8!IK4n
+IK+a6It3'#JV&N,KS5&6L51P?M2@+IMi<USNK4"!!K`HCOp@28Pa.N"QC%T<s-`nUrgNtZSXo_N
+!hZ-YrLs7cs.fRhs/#amrMT[os/H!ts/Q.$rN-.(YHRr0!O8s0ZO=.J[C3NQ\%&uZ]"@sS4h\SE
+^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-Lne^i@(f\,!4gYCW@hV[8LiSrnXjQ5OdkNM-ol0@U6
+liHMArpKpXnaZVLs7?9_rq6<brqH?crqZQiq"ssdq#01NJcD\KJ,~>
+JcC<$JcG6>nG`=`rVZNhrVHNhr:p<drq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRI!pJh1roX7B
+s5a1>!oi1trnn%=hVR)Egt^Z`g2P`tf@SU(e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NTMZa-g>YH=q.X/`.tVl$;dUS=HTT:VXES"#k6R$X,(P`q8nOcPQ`NJrgRM2@%DL5(D8
+K7\Z)J:E#rI=-BfH?jc7G6N/4FEDSErc%sXDuOVTD/B2es(VOJrb2=Es(;7As().>raPn9s'Ye4
+s'G_2r*98+s'#A(s&f;&rDrqus&Anps&/kor)!Dhr_EAcrCm2`q+CQVqFL<M!*/Yadn9.#qagZW
+pe(KXr_3/_r_EGgr(mApfi.H>rEoS4raG_6raYq<r+5k>s(D4Brb;CIqeQ1Irb_LLrbqaSpi67Q
+qfDCOqK;RVmW\2Gq0DUWp36IYrH7sYrH%sYq/Q:NlYl`@qf2UUs)\-\s)e<brHA<fH$TC8!IK4n
+IK+a6It3'#JV&N,KS5&6L51P?M2@+IMi<USNK4"!!K`HCOp@28Pa.N"QC%T<s-`nUrgNtZSXo_N
+!hZ-YrLs7cs.fRhs/#amrMT[os/H!ts/Q.$rN-.(YHRr0!O8s0ZO=.J[C3NQ\%&uZ]"@sS4h\SE
+^VI\&_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-Lne^i@(f\,!4gYCW@hV[8LiSrnXjQ5OdkNM-ol0@U6
+liHMArpKpXnaZVLs7?9_rq6<brqH?crqZQiq"ssdq#01NJcD\KJ,~>
+JcC<$JcG3=nG`@ar;?EgrqcWiqtU3crq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g4.f.f@SU)e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NQLZa$a=YH=q.WiE%sVl$;dUS=HTT:VUDS"#k6R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7e`*J:E#rI=-BfH?jd\GB\4QFEDSFEcH)<Df>Yns(qaPrbDRMBkdQ[s(;=DrFQ">!+Yt:s'bq8
+rEoS2s'>S.s',M,r)s&%s&]/"s&K(urDW_or_`Vjr_NPhqb@&`rCcrYr(6]Tq+'qgh7`ZtnjiRJ
+r(6]VrCd)_qG$rar_NGg!7TuQkfj!4s'Yh7r*oY8rabq<rau.Br+Q(DrbD@HrbVOMqel@NrG_RP
+qf;UUo5seNpic%Kict-?rHA-^q/lUWrGq^Rqf(n?rG_UQs)S-\rH/'^s*"Bcs*+Nhrd"WmI!kpA
+!IfOtJ,t4Qrdu,BKnb>;LPUeDMMd=NN/`jXO,oBbOcklkPEc'3!g]1>rg3bTR[X5F!h>gPrgs.^
+s.K=a!huHbrM9Iis/,ams/5psrMomus/c4%!j8`1rilF-!4)U1'XY9U[^NZT\@K/]]=Y_g]tV7r
+^qp#e0Z1iJ`Q#s>aN;TJbKS5Vcd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ5OdkNMp0#3tO@
+m-X3.rpKpXnaZVL!qZ'VrUp3as7cHdrqZQiq"ssdq>K=PJcDSHJ,~>
+JcC<$JcG3=nG`@ar;?EgrqcWiqtU3crq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g4.f.f@SU)e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NQLZa$a=YH=q.WiE%sVl$;dUS=HTT:VUDS"#k6R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7e`*J:E#rI=-BfH?jd\GB\4QFEDSFEcH)<Df>Yns(qaPrbDRMBkdQ[s(;=DrFQ">!+Yt:s'bq8
+rEoS2s'>S.s',M,r)s&%s&]/"s&K(urDW_or_`Vjr_NPhqb@&`rCcrYr(6]Tq+&YgqMau8qagWV
+q+CTYrCm&^r_EGgr(mBehjNhurEoS4raG_6raYq<r+5k>rb).Brb;@Hr+l:JrGDFLrGVXRq/Q:P
+r,_IOq/uIUm<@Q7olp@XrH7pXrcA$Yq/Q:Nlu2iAqJlOUs)\-\s)n?brceBe!."Qi!df<Brd=fr
+J,Xs!JV*lR)MEg!L51P?M2@+IMi<USNfK0]OHGZgP*;)orfmPNQ^@]=!h#LGrgNtZSXobOs.B=a
+rLj:eUSId`s/#amrMT[o!3,pss/Z1$riH7)YHRr0s02R0rj*<G[C*HO\%&rY\[oDb]Y(ql^V@S#
+rk^A,`5T^8a2l?Db0.uPc-FY^dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjrojXPlg4!*
+mI'uB!q>aMrpg-^o^r+Ts7ZKer:p9erqcEequ$9gir4N/V>l&~>
+JcC<$JcG3=nG`@ar;?EgrqcWiqtU3crq?<`rq-6^rUU!Ys7$!Us6fpSrp9[Ns6BRIs6'IGrT41C
+jQ-=#s5F%;ro!h6!8d_2!SlH/g4.f.f@SU)e^W*tda?Ihcd'h\bfe2OaN2EA`Poa3_SO%&^:h1k
+]",A\[^NQLZa$a=YH=q.WiE%sVl$;dUS=HTT:VUDS"#k6R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7e`*J:E#rI=-BfH?jd\GB\4QFEDSFEcH)<Df>Yns(qaPrbDRMBkdQ[s(;=DrFQ">!+Yt:s'bq8
+rEoS2s'>S.s',M,r)s&%s&]/"s&K(urDW_or_`Vjr_NPhqb@&`rCcrYr(6]Tq+($Ldn91$qagWV
+q+CTYrCm&^r_EGgr(mApfMhB>rEoS4raG_6raYq<r+5k>rb).Brb;@Hr+l:JrGDFLrGVXRq/Q:P
+r,_IOq/uIUm<@Q7olp@XrH7pXrcA$Yq/Q:Nlu2iAqJlOUs)\-\s)n?brceBe!."Qi!df<Brd=fr
+J,Xs!JV*lR)MEg!L51P?M2@+IMi<USNfK0]OHGZgP*;)orfmPNQ^@]=!h#LGrgNtZSXobOs.B=a
+rLj:eUSId`s/#amrMT[o!3,pss/Z1$riH7)YHRr0s02R0rj*<G[C*HO\%&rY\[oDb]Y(ql^V@S#
+rk^A,`5T^8a2l?Db0.uPc-FY^dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjrojXPlg4!*
+mI'uB!q>aMrpg-^o^r+Ts7ZKer:p9erqcEequ$9gir4N/V>l&~>
+JcC<$JcG3=nG`=`rVZKgrqcWir:p9cs7ZB`s7H<^rUU!Ys7$!Us6fpSrTsRM!:'OIs60LGroX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g&]mZrmu,?e^W*tda?Ihcd'h\bfe2OaN2EA`Pf[2_SO"%^:h1k
+]",>[[^NQLZa$a=Y-"h-WiE%rVl$8cUS=HTT:VUDS"#h5R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7ec,J:E#rI=-EhH?sj]GB\4QrcA0^ErL%ZE,Y_n#]4BoCMR["BkdQ[!bZ+WrFH%@@q5IHs'bq8
+rEoS2s'>S.s',M,rE9/&s&]/"s&K(ur)<Vns&&\js%iVhqb@&`r_*#YqapQRrC?@kh7`]unjiRJ
+r(6ZUrCd,`qG$rarD3;eim$`3rEoP3s'be6raYt=qdoe>rb).Brb;@HqeQ1Irb_LLrbqaSpi61O
+r,_FNpiZ@TlZ_Z>not%Ur,qjXrH%pXq/Q=OlYl`@qf2UUs)\-\s)e<brHA<fH$TC8!IK4nI0"eH
+rdY$#K)UB'KSBD[)Ma-*M2I1KN/WaVNfT6_OcbfiPE_;sQ'R`&rg<_R!1NnVs-s([rLO(_TV2:X
+s.]OgrM9Iis/,am!iW)trMomus/c4%s/l@*rNH@.ZEjJ9!OT96[QCt.\@K/]]=Y_g]tV7r^qde'
+_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\g2gYCW@hV[8LiSsjs&*2j7k3(sml0@R"m-O-,
+mf)YUnF?JJ!qZ'VrUp3as7cHdrqZQiq>:'eq>K@QJcDMFJ,~>
+JcC<$JcG3=nG`=`rVZKgrqcWir:p9cs7ZB`s7H<^rUU!Ys7$!Us6fpSrTsRM!:'OIs60LGroX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g&]mZrmu,?e^W*tda?Ihcd'h\bfe2OaN2EA`Pf[2_SO"%^:h1k
+]",>[[^NQLZa$a=Y-"h-WiE%rVl$8cUS=HTT:VUDS"#h5R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7ec,J:E#rI=-EhH?sj]GB\4QrcA0^ErL%ZE,Y_n#]4BoCMR["BkdQ[!bZ+WrFH%@@q5IHs'bq8
+rEoS2s'>S.s',M,rE9/&s&]/"s&K(ur)<Vns&&\js%iVhqb@&`r_*#YqapQRrC>(kqi()9qagWV
+pe(KXr_3/_r_EDfqb[<[iL0&"rEoP3s'be6raYt=qdoe>rb).Brb;@HqeQ1Irb_LLrbqaSpi61O
+r,_FNpiZ@TlZ_Z>not%Ur,qjXrH%pXq/Q=OlYl`@qf2UUs)\-\s)e<brHA<fH$TC8!IK4nI0"eH
+rdY$#K)UB'KSBD[)Ma-*M2I1KN/WaVNfT6_OcbfiPE_;sQ'R`&rg<_R!1NnVs-s([rLO(_TV2:X
+s.]OgrM9Iis/,am!iW)trMomus/c4%s/l@*rNH@.ZEjJ9!OT96[QCt.\@K/]]=Y_g]tV7r^qde'
+_Sa=2`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\g2gYCW@hV[8LiSsjs&*2j7k3(sml0@R"m-O-,
+mf)YUnF?JJ!qZ'VrUp3as7cHdrqZQiq>:'eq>K@QJcDMFJ,~>
+JcC<$JcG3=nG`=`rVZKgrqcWir:p9cs7ZB`s7H<^rUU!Ys7$!Us6fpSrTsRM!:'OIs60LGroX7B
+!9F.>s5F%;ro!h6!8d_2!SlH/g&]mZrmu,?e^W*tda?Ihcd'h\bfe2OaN2EA`Pf[2_SO"%^:h1k
+]",>[[^NQLZa$a=Y-"h-WiE%rVl$8cUS=HTT:VUDS"#h5R$X,(P`q8nOH5H_NJrgRM2@%DL5(D8
+K7ec,J:E#rI=-EhH?sj]GB\4QrcA0^ErL%ZE,Y_n#]4BoCMR["BkdQ[!bZ+WrFH%@@q5IHs'bq8
+rEoS2s'>S.s',M,rE9/&s&]/"s&K(ur)<Vns&&\js%iVhqb@&`r_*#YqapQRrC?EOeOoC&qagWV
+pe(KXr_3/_r_EDfqbYpDo2>Nora>b7qdTP7s()"<s(;7Cr+Q(DrbD=GrbVRNqJQ:NrG_OOqf;UU
+noXYLpibtIlZhuErHA*]qK2[WrGq^Rr,Ct?rG_XRrc8$[rH/'^!-\<b!dK!9rd"TlI/\NpIXh?I
+!J,k%K)pXZre;>HLl$tGMMmFPNK0$[O-#KdP*2#nPa.N"QC%T<s-WkUrgWqX!1j([!hZ-Yrh9@d
+s.fOgs/#amrMK^qWN#irs/Z1$riQ4'!3c@*!jT&:rj)X4[JmTr\%&rY\[oDb]Y(ql^V@S"_8=(,
+`5T^8a2l?Db0.uPc-FV\d*^7he'umtf%8O+g=k<:h;-rFi8ESRro4OMjlY^gkiq?slKdg'mHs?@
+mfDqJrUL$]o^r+Ts7ZKer:p9erqcHfqu$9gj8OW0U]5i~>
+JcC<$JcG3=n,E7`r;?EgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BUJs60LGroX7B
+s5a1>!oi1trnmh7hYu=8gtUT;g=b-Xf6,ZpeC;sqdF$=ecHa\YbKJ#KaN)<>`5BI/_8!b!]tCtg
+\[],W[C!9HZ*:I8Xf\Y(Wi;noVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS.PFEDSErc&0^Df9N2D/F+gC]A,LC&M]HB4bcTAcH<@A,Tm:@K0a6
+?iOI4?2\%.>Q7n*=oVV(=8c2"<W?%s;u]bq;>a8i:]F2e:&[ib9DD-U8bYdE^A#>?]^*9.]^nYi
+8Gl'S9)_K^9_qK_:B"&c:u]aabl(oJ@/aU4@fBm:AGg$<B)cN@B`;`GCAVfGD#S;JDZ+MPE;4GM
+Er0qKFSL"QG3O5BGjoqTG5ZRZFT-@[EqjYPE9qN@E;OYTErL.ZFT6L`G5c^cGQ<$gH4YFNI!pEl
+IXcluJUrE*K7nsXL(B&qM2@+IMi<USNfK0]OHKO*!L&cIPm<VAQ^F/.R@=,Es-s([rgs.^s.K@b
+s.]OgrhTRjs/,ams/>ssrMomus/c4%s/uC*rilF-!4)U1s0Md6rjE3D\@B)[]">Se]Y2&Y^Bq]l
+_SX4/`Poj;rl?A,b0.uPc-FV\d*^:jeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^roOdTkiq?slg*p(
+mI'E2n*oi:rpp*\s7H<`s7ZKer:p9erqcHfqu$9gj8OW0UAo`~>
+JcC<$JcG3=n,E7`r;?EgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BUJs60LGroX7B
+s5a1>!oi1trnmh7hYu=8gtUT;g=b-Xf6,ZpeC;sqdF$=ecHa\YbKJ#KaN)<>`5BI/_8!b!]tCtg
+\[],W[C!9HZ*:I8Xf\Y(Wi;noVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS.PFEDSErc&0^Df9N2D/F+gC]A,LC&M]HB4bcTAcH<@A,Tm:@K0a6
+?iOI4?2\%.>Q7n*=oVV(=8c2"<W?%s;u]bq;>a8i:]F2e:&[ib9DD-U8bYd"NVe\+8,>dS8bbpW
+9DqQ\:&[oe:\moaR-'h'R/LCk@/aU4@fBm:AGg$<B)cN@B`;`GCAVfGD#S;JDZ+MPE;4GMEr0qK
+FSL"QG3O5BGjoqTG5ZRZFT-@[EqjYPE9qN@E;OYTErL.ZFT6L`G5c^cGQ<$gH4YFNI!pElIXclu
+JUrE*K7nsXL(B&qM2@+IMi<USNfK0]OHKO*!L&cIPm<VAQ^F/.R@=,Es-s([rgs.^s.K@bs.]Og
+rhTRjs/,ams/>ssrMomus/c4%s/uC*rilF-!4)U1s0Md6rjE3D\@B)[]">Se]Y2&Y^Bq]l_SX4/
+`Poj;rl?A,b0.uPc-FV\d*^:jeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^roOdTkiq?slg*p(mI'E2
+n*oi:rpp*\s7H<`s7ZKer:p9erqcHfqu$9gj8OW0UAo`~>
+JcC<$JcG3=n,E7`r;?EgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BUJs60LGroX7B
+s5a1>!oi1trnmh7hYu=8gtUT;g=b-Xf6,ZpeC;sqdF$=ecHa\YbKJ#KaN)<>`5BI/_8!b!]tCtg
+\[],W[C!9HZ*:I8Xf\Y(Wi;noVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?jaZGBS.PFEDSErc&0^Df9N2D/F+gC]A,LC&M]HB4bcTAcH<@A,Tm:@K0a6
+?iOI4?2\%.>Q7n*=oVV(=8c2"<W?%s;u]bq;>a8i:]F2e:&[ib9DD-U8bYdH9@ZZ+8,>dS8bbpW
+9DqQ\:&[oe:\mo>;tNud?iFI4@JjU6A,^$:Ac?<ABDZBAC&_rFC]8/LD>J/KDuFYMEVjeRF7OGJ
+Fn^(DGOp(KGPlX_Fnp.YF8^.SEVseBDu=SOEW:(YF8g:]FoQXaGQ2mfH2`+$H[L3hI=?WpJ:N3%
+JqJ]/L&Qf;LPUeDMMd=NN/`jXO,oBbrfR;GPl?pQQC!r*R$jA2rgWqX!1j+\s.B=arh9@ds.fRh
+s/#amrMT[os/Gsss/Z1$riQ4's0)F+s02R0rj2X3!4Dg7$b*XU\[f;`]=bei^AbkR^qmn)_o0O5
+`lJ)",g"3PbKS5VcHjkbdaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ6C'&Ei9Al0@U#m-O--mdKW6
+nF?MKs7?9_rq6<bs7cHdrqZQiq>:'eq>K@QJcDJEJ,~>
+JcC<$JcG0<nG`=`rVZKgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BRI!pJh1rT41C
+jQ-=#s5F%;rnr7_hVR)Egt^Z<g=b-2f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]tCtg
+\[],W[C!9GZ*:I8Xf\Y(Wi2hnVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GBX(2FoHI`F)q8"!H;uVD?=ZkD#S2OC2%D]B`D`FB)ZBAAH-0<@fKm:
+@/XF6?<pk8>lS%.>5_V(=T;J$<rZ2"<;fbp;ZBVl;#a>j:A[cb9`7WY9)2'U8FaFi^%o>,^&5P8
+8,>dS8bbpV9DqQ\:&[oe:]!rg;;odbbl(oJ@/aU4@fBm:AGg$<B)cN@B`;`FCA_lGD#S;JDZ+MP
+E;4GMEr'kHFSBqPG0tO2G5ZRZFT$:ZEqs_PE9qNAE;OYSErU4ZFT6I`G5ZUiG^4R\H@(!drd=fr
+J,Xs*JV&N,KS5&6L51TaM$8cpN/WaVrf7)AOoCLEPEc'3!LB)OQj9%JR[]e:S=TYNs.B=arh9@d
+s.fRhs/#amrMT[os/Gsss/Q.$rN6+&s0)F+s0;U0rj)[5[C-"B!OoT<\H]XW]=bei^Abl/^qmn)
+_o0L4`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(pkl07L!rp0[Q
+mf)YVnF?&Jo)J:]o_nI_pAambq#C0hqYC$dr;-BOrdk*Bs*t~>
+JcC<$JcG0<nG`=`rVZKgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BRI!pJh1rT41C
+jQ-=#s5F%;rnr7_hVR)Egt^Z<g=b-2f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]tCtg
+\[],W[C!9GZ*:I8Xf\Y(Wi2hnVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GBX(2FoHI`F)q8"!H;uVD?=ZkD#S2OC2%D]B`D`FB)ZBAAH-0<@fKm:
+@/XF6?<pk8>lS%.>5_V(=T;J$<rZ2"<;fbp;ZBVl;#a>j:A[cb9`7WY9)2'U8B["jN:]X:8Gl'S
+9)VE]9_qK_:B"&d:]OAcR-L+,R/LCk@/aU4@fBm:AGg$<B)cN@B`;`FCA_lGD#S;JDZ+MPE;4GM
+Er'kHFSBqPG0tO2G5ZRZFT$:ZEqs_PE9qNAE;OYSErU4ZFT6I`G5ZUiG^4R\H@(!drd=frJ,Xs*
+JV&N,KS5&6L51TaM$8cpN/WaVrf7)AOoCLEPEc'3!LB)OQj9%JR[]e:S=TYNs.B=arh9@ds.fRh
+s/#amrMT[os/Gsss/Q.$rN6+&s0)F+s0;U0rj)[5[C-"B!OoT<\H]XW]=bei^Abl/^qmn)_o0L4
+`Q#s>aN;TJbKS5VcHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Uj5f=ak3(pkl07L!rp0[Qmf)YV
+nF?&Jo)J:]o_nI_pAambq#C0hqYC$dr;-BOrdk*Bs*t~>
+JcC<$JcG0<nG`=`rVZKgrqcWiqtU0bs7ZB`s7H?_r:9mXs7$!Us6fpSrTsRMs6BRI!pJh1rT41C
+jQ-=#s5F%;rnr7_hVR)Egt^Z<g=b-2f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]tCtg
+\[],W[C!9GZ*:I8Xf\Y(Wi2hnVPL#_U7n6PSt2C@S!fY2Q^3o$PEM)kO,o<\N/W[PM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GBX(2FoHI`F)q8"!H;uVD?=ZkD#S2OC2%D]B`D`FB)ZBAAH-0<@fKm:
+@/XF6?<pk8>lS%.>5_V(=T;J$<rZ2"<;fbp;ZBVl;#a>j:A[cb9`7WY9)2'U8F]@(9(YXM8Gl'S
+9)VE]9_qK_:B"&d:]OAE;tNud?iFI4@JjU6A,^$:Ac?<ABDZBAC&VlFC]/)KD>J/KDuFYMEVjeQ
+F7=;GFn^(,GPcR^Fnp.XF8^.TEVj_ADuFYPEW1"YF8^4\FT?U`G6`A<H$Xd`H[Pg@!IfOtJ-pjZ
+K7ei1Knb>;M#N57MMmFPNK4"!!K`HCOo^c2rfmMMQi<?WR@9S6S"-">rgs.^s.K@bs.]OgrhTRj
+s/,ams/>ssrMomu!3H.$s/uC*rilF-s0DX1!joACrjDj:\Gj#C]">Se]Y2&Y^H96I_SX4/`5T^8
+a2l?Db0.uPc-FV\d*^7he'umtf%8O+g"P07gtgfChr*GOioB([jlY^gkNM0plKeH9!U]=SmfN"K
+nc&+Zo)SF]p&Facp\agdq>U6dqu$BgrSmg-s.KCB~>
+JcC<$JcG-;nG`@ar;?BfrqcWiqtU0bs7ZB`s7H<^rUU!Ys7#sTs6fpSrTjUOlK\?4s60LGroX7B
+!9F.>s5F%;ro!h6!8d_2EST=&g=b03f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]Y(kf
+\[],W[C!9GZ*:F7XfSS'Wi2hnVPL#_TqS-OSt2C@S!fY2Q^3o$PEM)kOH5E]N/W[PM2@"BL4t;5
+K7\Z)J:E#rI=-D@H3JS=GB\4QrcA0^ErL%`E,TZ4DJa6,rbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>S.s',M,r`T8's&]/"s&K(ur)<Vns&&\js%iVhqb@#_rCciVpdt3Nn\+b2lb35/p.+pL
+r(6WTrCd,`qG$rarD3;er___#lcf96ra>_6r*oY8rabq<rau.Br+Q(DrbD=GrbVRNqJQ7Mr,DCM
+qf;OSmr\;HpNG)2qf_p\piQLVrGq[Qr,D"@r,DOQs)S*[rcJ0_s*"Bcs*+Nhrd"s!I!g?jIXcit
+J:W=OK*?p^L5(J>reUf9Mi<USNrG(NOHG]hPEV5rQ'R`&R$a;0Rf8cXS=Q5MScYOWT`1YbU&^te
+V#R:kVZ!CoW2ZcpWrK."XSo:$Y5b^)YlD!.ZMq31ZiIN5[f<f:\Gj#>]"@sS!PQ5H^B)-drk^G.
+`5T^8a2l?Db0.uPc-=PZcd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrnXjQ5OdkNMp0!UB"MliHMA
+rpKpXnaZVL!qZ'VrUp3as7cKerqZQiqYU0fqu,RSJcD>AJ,~>
+JcC<$JcG-;nG`@ar;?BfrqcWiqtU0bs7ZB`s7H<^rUU!Ys7#sTs6fpSrTjUOlK\?4s60LGroX7B
+!9F.>s5F%;ro!h6!8d_2EST=&g=b03f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]Y(kf
+\[],W[C!9GZ*:F7XfSS'Wi2hnVPL#_TqS-OSt2C@S!fY2Q^3o$PEM)kOH5E]N/W[PM2@"BL4t;5
+K7\Z)J:E#rI=-D@H3JS=GB\4QrcA0^ErL%`E,TZ4DJa6,rbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>S.s',M,r`T8's&]/"s&K(ur)<Vns&&\js%iVhqb@#_rCciVpdt3NduF9ap.+pLr(6WT
+rCd,`qG$rarD3;er_`6Rn!WU2r*TG2raG_6raYq<r+5k>rb).Brb;@HqeQ1Irb_LLrGVUQpMp(N
+qK)+IpN?4ReT^n6rH7mWrcA$Ypi64Nlu2f@qf2XVrcA'\s)n?brceBe!."Qi$[[8KI=6QoIt3'#
+K)UB+KS>/8LPYqd"cA4sN/`ksNt@D8P*2#mPa.N"QC!u+R@0NCRf]+NSc52^T:hkVU&UheU]%"g
+V>mFkVZNfrWVrjsX8f:"XoGR(YPtd+Z2_-/Zi@B4[JmW7[fEr;\H0:Rrk&9F^AbkJ^qp#e1;h&L
+`Q#s>aN;TJbKS5UcHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjrojIKli-5OmI'uB
+!q>aMrpg-^o^r+Ts7ZKerV6BfrqcKgqu$?ij8OW0T)X<~>
+JcC<$JcG-;nG`@ar;?BfrqcWiqtU0bs7ZB`s7H<^rUU!Ys7#sTs6fpSrTjUOlK\?4s60LGroX7B
+!9F.>s5F%;ro!h6!8d_2EST=&g=b03f@SU(eC;sqdF$=ecHa\YbK@rJaN)<>`5BI/^q[Xu]Y(kf
+\[],W[C!9GZ*:F7XfSS'Wi2hnVPL#_TqS-OSt2C@S!fY2Q^3o$PEM)kOH5E]N/W[PM2@"BL4t;5
+K7\Z)J:E#rI=-D@H3JS=GB\4QrcA0^ErL%`E,TZ4DJa6,rbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>S.s',M,r`T8's&]/"s&K(ur)<Vns&&\js%iVhqb@#_rCciVpdt3Nc:[e#q+1ETpIbBW
+r_3/_r_EDfqb[8hfi.QAr*TG2raG_6raYq<r+5k>rb).Brb;@HqeQ1Irb_LLrGVUQpMp(NqK)+I
+pN?4ReT^n6rH7mWrcA$Ypi64Nlu2f@qf2XVrcA'\s)n?brceBe!."Qi$[[8KI=6QoIt3'#K)UB+
+KS>/8LPYqd"cA4sN/`ksNt@D8P*2#mPa.N"QC!u+R@0NCRf]+NSc52^T:hkVU&UheU]%"gV>mFk
+VZNfrWVrjsX8f:"XoGR(YPtd+Z2_-/Zi@B4[JmW7[fEr;\H0:Rrk&9F^AbkJ^qp#e1;h&L`Q#s>
+aN;TJbKS5UcHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^k2tjjrojIKli-5OmI'uB!q>aM
+rpg-^o^r+Ts7ZKerV6BfrqcKgqu$?ij8OW0T)X<~>
+JcC<$JcG-;n,E7`r;?EgrVHNhqtU3crq?9_s7H<^rUU!Ys7#sTs6fpSrTsRMs6BUJs60LGroX7B
+s5a1>#NF_$i8EMMhYu=3gtVh^B\D%if@JL%eC2jndEp4bcHXSVb/q`Ga2Z*:_ns7*^V@Ip]Xt_b
+\@8oS['R'CYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAKnP)2
+Jq8H&It%BF"akZCH?jc7G6W55FEDSFErL%ZE,Y_ns(qaPrbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>V/s',M,rE9/&s&]/"s&K(urDW_or_`Vjr_NMgqb@#_rCccToh"UCs1S9Alb380p.+pL
+qapQTrCd)_qG$rarD3;er_`Ymqc!Jns&JR5m*,B7ra>_6qdTS8rabq<rau.Br+Q(DrbD=GrbVOM
+qJQ7MrG_IMqJuCQmWA2Gp3,58qKDdZq/lRVrGq[Qr,D"@rG_XRrc8$[rH/'^!-\<b!I/nhHN/=K
+I!pElIXcluJV&K+K7nr5L51P?M2@+JN/WaVNfT6_OcklkPE_>tQC!r*R$jD3S"#q<Sc52^T:hkV
+U&UheU]%"gV#[CkVuN^qWVrjsX8f:"XoGR(YPtd+Z2_-/Zi@E4[JmT9\%&sI\H0:Rrk&HK^:q@s
+^qp#e1W./M`Q#s=aN2KGbKJ,ScHab_dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRioB([jlY^gkl0fN
+lKdg'mHs?@mfN"Knc&(\oCV\Sp&Facp\agcq>U6equ$BgrT4$0s.'+>~>
+JcC<$JcG-;n,E7`r;?EgrVHNhqtU3crq?9_s7H<^rUU!Ys7#sTs6fpSrTsRMs6BUJs60LGroX7B
+s5a1>#NF_$i8EMMhYu=3gtVh^B\D%if@JL%eC2jndEp4bcHXSVb/q`Ga2Z*:_ns7*^V@Ip]Xt_b
+\@8oS['R'CYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAKnP)2
+Jq8H&It%BF"akZCH?jc7G6W55FEDSFErL%ZE,Y_ns(qaPrbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>V/s',M,rE9/&s&]/"s&K(urDW_or_`Vjr_NMgqb@#_rCccToh"UCif3nqp.+pLqapQT
+rCd)_qG$rarD3;er_`Ymqc!Jns&Jr`o9o'7r*TG2raG\5s'u%=r+5k>rb).Brb;@HqeQ1IrGDCK
+rGVXRp2TqLq/btGpN?1QgirU<r,qgWrH%pXpi64Nlu2iAqf2UUs)\-\s)e<brHA9eH2`-iHSg+u
+I=?WpJ:N3&JqJ]/Knb>;LPUeDMMmFPNK0$[O-#KeP*;)oQ'IZ%Q^F/.R[T_8S=H/LScYOWT`1Yb
+U&^teV#R7kVZ!FmW;ijqWrK."XSo:$Y5b^)YlD!.ZMq31[/[Q5[K<qJ\Gj#>]"@sS#/.ab^V@S#
+rk^J/`5T^8a2c9Bai_fMbg"GYcd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrkWj5f=ak3(t-km$G=
+m-O-,mf)YVnF?&JncJFTo`"O`pAambq#:*gqYL*er;-BRrdk*>s*t~>
+JcC<$JcG-;n,E7`r;?EgrVHNhqtU3crq?9_s7H<^rUU!Ys7#sTs6fpSrTsRMs6BUJs60LGroX7B
+s5a1>#NF_$i8EMMhYu=3gtVh^B\D%if@JL%eC2jndEp4bcHXSVb/q`Ga2Z*:_ns7*^V@Ip]Xt_b
+\@8oS['R'CYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAKnP)2
+Jq8H&It%BF"akZCH?jc7G6W55FEDSFErL%ZE,Y_ns(qaPrbMOKs(VIGs(;=DrFQ">s'u%;s'bq8
+rEoS2s'>V/s',M,rE9/&s&]/"s&K(urDW_or_`Vjr_NMgqb@#_rCccToh"UChFdK3q+1BSpe(KX
+rCm&^r_EDfqb[8hr_iVlr`&nts&8kolr3UUr*TG2raG\5s'u%=r+5k>rb).Brb;@HqeQ1IrGDCK
+rGVXRp2TqLq/btGpN?1QgirU<r,qgWrH%pXpi64Nlu2iAqf2UUs)\-\s)e<brHA9eH2`-iHSg+u
+I=?WpJ:N3&JqJ]/Knb>;LPUeDMMmFPNK0$[O-#KeP*;)oQ'IZ%Q^F/.R[T_8S=H/LScYOWT`1Yb
+U&^teV#R7kVZ!FmW;ijqWrK."XSo:$Y5b^)YlD!.ZMq31[/[Q5[K<qJ\Gj#>]"@sS#/.ab^V@S#
+rk^J/`5T^8a2c9Bai_fMbg"GYcd:(edaQ^qe^i@(f\,!4gYCW@hV[8LiSrkWj5f=ak3(t-km$G=
+m-O-,mf)YVnF?&JncJFTo`"O`pAambq#:*gqYL*er;-BRrdk*>s*t~>
+JcC<$JcG*:nG`=`rVZKgrVHNhqtU3crq?9_s7H<^rUTsXs7$!Us6fpSrTsRMs6BRIs6'IGrT41C
+jQ-=#s5F%;rnmh7hYu=3gtVh^G1kO"f@JL%eC2jndEp4bcHXSVb/q`Ga2Q$9_ns7*^V@Ip]XkYa
+\@/iRZa6sBYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GB\4QrcA0^ErL(YDuahUD?=ZkD#S5MC&huHBEDgYB)Q9BA7K-J@fKm:
+@/aO5?N4=0>lS%.>5h\)=T;J$<rZ2"<;fbp;ZBVl;#a>j:AR]`9`.QT9(GR>8H)-K]`>_E^%b+m
+8Gc!Q9)VE]9_qK_:B"&d;#O8j;YsDl<;onp<rQ2"=T-M2bkkcI@/aU3@fBm;AG]s<B)ZH?B`DfG
+CAVfFD#S;JDZ+MOE;";IEqj_CFSBqOG2d`BG5HFWFT$:ZEqjYPE:%TAE;OYTErL.ZFT6L`G5c^c
+GQ<$gH3&A?rd=frJ,Xs%JV&N,KSBD[(Pdg'M2I4MN/`jXO,oBbP*2#nPa.N"Qi<?QR@=,E!M#_[
+T)YD_T`1YbU&^teU]RBiVZ!FmW;ijrWrK."XSo:$Y5b^(YlD!.ZMq31[/[Q5[f<f:\Gj&=\cBAA
+]E,^[rkAKL_>_;8_o0O5`l?'?aN;TJbKS5VcHjh`dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^
+jlY^gkiq?slKdg'mHs?@mfDqJrpp*\s7H<`s7ZKer:p9es8)Qgr;?Hjk5Kr3Rf@m~>
+JcC<$JcG*:nG`=`rVZKgrVHNhqtU3crq?9_s7H<^rUTsXs7$!Us6fpSrTsRMs6BRIs6'IGrT41C
+jQ-=#s5F%;rnmh7hYu=3gtVh^G1kO"f@JL%eC2jndEp4bcHXSVb/q`Ga2Q$9_ns7*^V@Ip]XkYa
+\@/iRZa6sBYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GB\4QrcA0^ErL(YDuahUD?=ZkD#S5MC&huHBEDgYB)Q9BA7K-J@fKm:
+@/aO5?N4=0>lS%.>5h\)=T;J$<rZ2"<;fbp;ZBVl;#a>j:AR]`9`.QT9(GR>8H)-KN<"q:NVH$=
+8Gc!Q9)VE]9_qK_:B"&d;#O8j;YsDl<;onp<rQ2"=SeHSR/:7j@/aU3@fBm;AG]s<B)ZH?B`DfG
+CAVfFD#S;JDZ+MOE;";IEqj_CFSBqOG2d`BG5HFWFT$:ZEqjYPE:%TAE;OYTErL.ZFT6L`G5c^c
+GQ<$gH3&A?rd=frJ,Xs%JV&N,KSBD[(Pdg'M2I4MN/`jXO,oBbP*2#nPa.N"Qi<?QR@=,E!M#_[
+T)YD_T`1YbU&^teU]RBiVZ!FmW;ijrWrK."XSo:$Y5b^(YlD!.ZMq31[/[Q5[f<f:\Gj&=\cBAA
+]E,^[rkAKL_>_;8_o0O5`l?'?aN;TJbKS5VcHjh`dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^
+jlY^gkiq?slKdg'mHs?@mfDqJrpp*\s7H<`s7ZKer:p9es8)Qgr;?Hjk5Kr3Rf@m~>
+JcC<$JcG*:nG`=`rVZKgrVHNhqtU3crq?9_s7H<^rUTsXs7$!Us6fpSrTsRMs6BRIs6'IGrT41C
+jQ-=#s5F%;rnmh7hYu=3gtVh^G1kO"f@JL%eC2jndEp4bcHXSVb/q`Ga2Q$9_ns7*^V@Ip]XkYa
+\@/iRZa6sBYck43XK/A#W2HPiUnjcZTqJ$LSXc1=R@'A.QBd\uP*1rhO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-BfH?ja[GB\4QrcA0^ErL(YDuahUD?=ZkD#S5MC&huHBEDgYB)Q9BA7K-J@fKm:
+@/aO5?N4=0>lS%.>5h\)=T;J$<rZ2"<;fbp;ZBVl;#a>j:AR]`9`.QT9(GR>8H)-G9)(pO8Gc!Q
+9)VE]9_qK_:B"&d;#O8j;YsDl<;onp<rQ2"=S#Jb;Ysi$@/aU3@fBm;AG]s<B)ZH?B`DfGCAVfF
+D#S;JDZ+MOE;";IEqj_CFSBqOG2d`BG5HFWFT$:ZEqjYPE:%TAE;OYTErL.ZFT6L`G5c^cGQ<$g
+H3&A?rd=frJ,Xs%JV&N,KSBD[(Pdg'M2I4MN/`jXO,oBbP*2#nPa.N"Qi<?QR@=,E!M#_[T)YD_
+T`1YbU&^teU]RBiVZ!FmW;ijrWrK."XSo:$Y5b^(YlD!.ZMq31[/[Q5[f<f:\Gj&=\cBAA]E,^[
+rkAKL_>_;8_o0O5`l?'?aN;TJbKS5VcHjh`dF$CkeC<%"f@S[.g=k<:h;-rFi8ESRj5]4^jlY^g
+kiq?slKdg'mHs?@mfDqJrpp*\s7H<`s7ZKer:p9es8)Qgr;?Hjk5Kr3Rf@m~>
+JcC<$JcG'9nG`=`rVZKgrqcThqtU3crq?9_s7H<^rUTsXs7$!Us6fpSr9OLNlK\?4s60LGroX7B
+!9F.>s5F%;rnn"<hVR)EgtVh^D;!Rnf@JL%eC2jndEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]XkYa
+\$i`QZa6sAYck43XK/A#W2HMhUnj`YTqJ$LSXc1=R@'A.QBd\uP*1rhO,o<[N/NRMM26qAL4t;5
+K7\Z)J:E#rI=-D@H4,"CGB\4RF`__HF)q8"!cW'rrb_dSCi')d!buF`rb2=Es(;7As().>rF5e8
+!+>b4s'G_2r`oJ-s'#A(s&f;&rDrqus&Aqqs&/kor)!Agr_E;arCm)]n4N1Am7?n?rkABFqFC9N
+qapNSrCd)_qG$rar_NAer_`Ymqc!Jnr`/eqr`B)$qcWl$r`f'>qd9>1raG_6raYq<r+5k>rb).B
+rb;@HqeQ1IrGDCKrGVUQol9eJpN,YBpN?1Ql$)oGr,qdVr,_gWpi61Mmr/,Cqf2UUs)\-\s)e<b
+rHA9eH2`-iHO5(JI=?WpJ:N3&rdtN1Knb>;Ll$tGMuJYFNK0'\OHG]hPE_;sQ'Rd9Qj/tIS"#q<
+Sc52cT:hjNTq\9VrM0LkVPa<i!iW)trMomus/c1$s/uC*rNQ=,s0DU0!joACrjMj9s1&'=!kQ"U
+rk&9F^AbkJ^qp#e!Q2kT`<F9%aN2KGrl[4Dc-FV\d*^7he'umtf%8O+g"P07gYCW@hV[8LiSrnX
+jQ5OdkND'nl0@U#m-O--mdKW6nF?MKs766_rUp3as7cKerqZQiqYU3gqu,^WJcD,;J,~>
+JcC<$JcG'9nG`=`rVZKgrqcThqtU3crq?9_s7H<^rUTsXs7$!Us6fpSr9OLNlK\?4s60LGroX7B
+!9F.>s5F%;rnn"<hVR)EgtVh^D;!Rnf@JL%eC2jndEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]XkYa
+\$i`QZa6sAYck43XK/A#W2HMhUnj`YTqJ$LSXc1=R@'A.QBd\uP*1rhO,o<[N/NRMM26qAL4t;5
+K7\Z)J:E#rI=-D@H4,"CGB\4RF`__HF)q8"!cW'rrb_dSCi')d!buF`rb2=Es(;7As().>rF5e8
+!+>b4s'G_2r`oJ-s'#A(s&f;&rDrqus&Aqqs&/kor)!Agr_E;arCm)]n4N1Am7?n?rf6u;qFC9N
+qapNSrCd)_qG$rar_NAer_`Ymqc!Jnr`/eqr`B)$qcWl$r`f&_qd9>1raG_6raYq<r+5k>rb).B
+rb;@HqeQ1IrGDCKrGVUQol9eJpN,YBpN?1Ql$)oGr,qdVr,_gWpi61Mmr/,Cqf2UUs)\-\s)e<b
+rHA9eH2`-iHO5(JI=?WpJ:N3&rdtN1Knb>;Ll$tGMuJYFNK0'\OHG]hPE_;sQ'Rd9Qj/tIS"#q<
+Sc52cT:hjNTq\9VrM0LkVPa<i!iW)trMomus/c1$s/uC*rNQ=,s0DU0!joACrjMj9s1&'=!kQ"U
+rk&9F^AbkJ^qp#e!Q2kT`<F9%aN2KGrl[4Dc-FV\d*^7he'umtf%8O+g"P07gYCW@hV[8LiSrnX
+jQ5OdkND'nl0@U#m-O--mdKW6nF?MKs766_rUp3as7cKerqZQiqYU3gqu,^WJcD,;J,~>
+JcC<$JcG'9nG`=`rVZKgrqcThqtU3crq?9_s7H<^rUTsXs7$!Us6fpSr9OLNlK\?4s60LGroX7B
+!9F.>s5F%;rnn"<hVR)EgtVh^D;!Rnf@JL%eC2jndEp4bcHXPUb/q`G`l5p8_ns7*^V7Co]XkYa
+\$i`QZa6sAYck43XK/A#W2HMhUnj`YTqJ$LSXc1=R@'A.QBd\uP*1rhO,o<[N/NRMM26qAL4t;5
+K7\Z)J:E#rI=-D@H4,"CGB\4RF`__HF)q8"!cW'rrb_dSCi')d!buF`rb2=Es(;7As().>rF5e8
+!+>b4s'G_2r`oJ-s'#A(s&f;&rDrqus&Aqqs&/kor)!Agr_E;arCm)]n4N1Am7?n?r_*5_qFC9N
+qapNSrCd)_qG$rar_NAer_`Ymqc!Jnr`/eqr`B)$qcWl$r`fD$pJUlqra>_6r*oY8rabq<rau.B
+r+Q(DrbD=GrbVOMqJQ7Mr,D=Kq/Z4NlZDlDp3,\EpicRXpiQFTrGq[Qqf)"Br,DOQrc8$[rH/'^
+!-\<b!I/nhHN/<uI!pElIXcluJV*lR$&""eL51SAM2I5jN"1i-O,oBbP*2#nPa.N"Qi<?VR@9V7
+S=H/LSd1m\TV8'RU8.[_!i;ckrMK^qWN#irs/Z1$rN6+&s0)C*s0;U0rNcR4[C-"Bs0r$<rj`*A
+]=\'T!PQ5H^B)-drk\]R`;[^Z`lH0AaiaV+2U'FkcHjkbdF-LneCE.%f@\d1g=tB;h;-rFi8ESR
+j5]4^k2tjikiq?slg*p(mI'E2n*oi:rpp*\!;-6_s7ZKerV6BfrqcKgr;?HjkPg&4R/_[~>
+JcC<$JcG'9nG`=`r;?BfrqcWiqtU0brq?9_s7H<^r:9mXs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+s5a1>!TN);i,df4hVI#CgY:H9g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",A\
+[^NQLZa-g>YH=q.X/`.tVl$;dUnXQVTV%gHS=?"9R$a5+Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2
+Jq8H&It%BF"akZCH?jc7G6)l0rcABdEcQ/>E,]apDZ=PRD#S5MCB&#IB`D`FB)ZBAAH-0=@fKm:
+@/aO5?N4=0>lS".>5_V(=T;J$<rZ2"<;fbq;Z9Pk;#X8i:AR]_9`%KL9(5F=8G#FE8Gc!Q9)VE]
+9_qK^:B"&d;#O8j;YsDl<;onp<rH,!=Sl8#>5_\&>lJ%.?Me+/@/aU4@fBm:AGg$<B)ZH@B`;`F
+CAVfGD#J5IDZ"GNE:e/GEqXS?FSBqLG4KkOG5?@VFT$:YEqjYNE:RrEE;OYSErU4ZFT6L`G5c[e
+G^4T6H3&A?rd>l;It3'#JqAW-KS>/8LPUeDMMd=NN/`jYO-#KeP*;.0Pn97JR$a;1R[]e:SXl@D
+T:hkVT`Us`U].%jV5C-hVuN^qWVrguX/rE$XoGR(YPbX)Z2_-/Zi@E4[JdN8\%&sI\c95@]DfJC
+]`>eG^B)-drk\]R`;[^c`lH0AaiV]KbKS5VcHjl:d2p`beC<%"f@S[.g=k<:h;-rFi8ESRioB([
+jlY^gkl0fIlKeH9!U]=SmfN"Knc&(\oCV\Ro`4^bp\jmdq>^<fqu$BhrTX<4s-<V7~>
+JcC<$JcG'9nG`=`r;?BfrqcWiqtU0brq?9_s7H<^r:9mXs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+s5a1>!TN);i,df4hVI#CgY:H9g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",A\
+[^NQLZa-g>YH=q.X/`.tVl$;dUnXQVTV%gHS=?"9R$a5+Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2
+Jq8H&It%BF"akZCH?jc7G6)l0rcABdEcQ/>E,]apDZ=PRD#S5MCB&#IB`D`FB)ZBAAH-0=@fKm:
+@/aO5?N4=0>lS".>5_V(=T;J$<rZ2"<;fbq;Z9Pk;#X8i:AR]_9`%KL9(5F=8G#FE8Gc!Q9)VE]
+9_qK^:B"&d;#O8j;YsDl<;onp<rH,!=Sl8#>5_\&>lJ%.?Me+/@/aU4@fBm:AGg$<B)ZH@B`;`F
+CAVfGD#J5IDZ"GNE:e/GEqXS?FSBqLG4KkOG5?@VFT$:YEqjYNE:RrEE;OYSErU4ZFT6L`G5c[e
+G^4T6H3&A?rd>l;It3'#JqAW-KS>/8LPUeDMMd=NN/`jYO-#KeP*;.0Pn97JR$a;1R[]e:SXl@D
+T:hkVT`Us`U].%jV5C-hVuN^qWVrguX/rE$XoGR(YPbX)Z2_-/Zi@E4[JdN8\%&sI\c95@]DfJC
+]`>eG^B)-drk\]R`;[^c`lH0AaiV]KbKS5VcHjl:d2p`beC<%"f@S[.g=k<:h;-rFi8ESRioB([
+jlY^gkl0fIlKeH9!U]=SmfN"Knc&(\oCV\Ro`4^bp\jmdq>^<fqu$BhrTX<4s-<V7~>
+JcC<$JcG'9nG`=`r;?BfrqcWiqtU0brq?9_s7H<^r:9mXs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+s5a1>!TN);i,df4hVI#CgY:H9g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",A\
+[^NQLZa-g>YH=q.X/`.tVl$;dUnXQVTV%gHS=?"9R$a5+Q'@JqP*(ieO,f3YMi*@JLkg_>KnP)2
+Jq8H&It%BF"akZCH?jc7G6)l0rcABdEcQ/>E,]apDZ=PRD#S5MCB&#IB`D`FB)ZBAAH-0=@fKm:
+@/aO5?N4=0>lS".>5_V(=T;J$<rZ2"<;fbq;Z9Pk;#X8i:AR]_9`%KL9(5F=8G#FE8Gc!Q9)VE]
+9_qK^:B"&d;#O8j;YsDl<;onp<rH,!=Sl8#>5_\&>lJ%.?Me+/@/aU4@fBm:AGg$<B)ZH@B`;`F
+CAVfGD#J5IDZ"GNE:e/GEqXS?FSBqLG4KkOG5?@VFT$:YEqjYNE:RrEE;OYSErU4ZFT6L`G5c[e
+G^4T6H3&A?rd>l;It3'#JqAW-KS>/8LPUeDMMd=NN/`jYO-#KeP*;.0Pn97JR$a;1R[]e:SXl@D
+T:hkVT`Us`U].%jV5C-hVuN^qWVrguX/rE$XoGR(YPbX)Z2_-/Zi@E4[JdN8\%&sI\c95@]DfJC
+]`>eG^B)-drk\]R`;[^c`lH0AaiV]KbKS5VcHjl:d2p`beC<%"f@S[.g=k<:h;-rFi8ESRioB([
+jlY^gkl0fIlKeH9!U]=SmfN"Knc&(\oCV\Ro`4^bp\jmdq>^<fqu$BhrTX<4s-<V7~>
+JcC<$JcG$8nG`=`r;?BfrqcThqtU3crq?9_rq-6^r:9mXrp]mTs6fpSr9XIL!:'OIs60LGroO:D
+jQ-=#IH'5Ei8EMMhVI#CgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",>[
+[^NQLZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?"9R$a5+Q'IPrP*(ieO,f3YN/NRMLkg_>KnP)2
+Jq8K'J:E#rI=-D@H3SY>GB\4RFoHI`F)q8"s)7sVrbhaQ!,VXMs(_RJrb2=E!+u1@s'u+>rF5e8
+s'Yh5s'G_2r`oJ-s'#A(!a&N*rDrqus&Anps&/koqb[8fr_E;aqb6l[k=Y58gdq95p.G9VrCm&^
+r_EDfqb[8hr_iSkr`&ksqc<Ysr`K&#r`]8)qcs,+ra,J/ra>_6qdTP7s()"<s(;7Cqe5tCrbD=G
+rbVOMq/6.Lqf).Hp2]kJlu_rDicb0@pN6=SrGqXPqJc"Dr,DLPs)S*[rH/'^!-\?cs*+Nhrd"cq
+I!g?jIXh?I"bD8XK7nsXL(T2sM2@+JN/WaVO,oBbP*2#nrfmYQQ^F/.Rf8cWS=TYN!M?%aT`Us`
+U].%jV5C-hVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfGE]tV5[^B)-d
+rk\]R`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfChr*GOir7sAjQ5OdkNMp0
+!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cHds7uZjqYU6hr;Gp[JcCo5J,~>
+JcC<$JcG$8nG`=`r;?BfrqcThqtU3crq?9_rq-6^r:9mXrp]mTs6fpSr9XIL!:'OIs60LGroO:D
+jQ-=#IH'5Ei8EMMhVI#CgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",>[
+[^NQLZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?"9R$a5+Q'IPrP*(ieO,f3YN/NRMLkg_>KnP)2
+Jq8K'J:E#rI=-D@H3SY>GB\4RFoHI`F)q8"s)7sVrbhaQ!,VXMs(_RJrb2=E!+u1@s'u+>rF5e8
+s'Yh5s'G_2r`oJ-s'#A(!a&N*rDrqus&Anps&/koqb[8fr_E;aqb6l[k=Y58gdq95p.G9VrCm&^
+r_EDfqb[8hr_iSkr`&ksqc<Ysr`K&#r`]8)qcs,+ra,J/ra>_6qdTP7s()"<s(;7Cqe5tCrbD=G
+rbVOMq/6.Lqf).Hp2]kJlu_rDicb0@pN6=SrGqXPqJc"Dr,DLPs)S*[rH/'^!-\?cs*+Nhrd"cq
+I!g?jIXh?I"bD8XK7nsXL(T2sM2@+JN/WaVO,oBbP*2#nrfmYQQ^F/.Rf8cWS=TYN!M?%aT`Us`
+U].%jV5C-hVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfGE]tV5[^B)-d
+rk\]R`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfChr*GOir7sAjQ5OdkNMp0
+!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cHds7uZjqYU6hr;Gp[JcCo5J,~>
+JcC<$JcG$8nG`=`r;?BfrqcThqtU3crq?9_rq-6^r:9mXrp]mTs6fpSr9XIL!:'OIs60LGroO:D
+jQ-=#IH'5Ei8EMMhVI#CgtUQ:g"=p.f%&:"e'cXkd*L"_bfe2PaiMNB`Pod4_SO%&^:h1k]",>[
+[^NQLZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?"9R$a5+Q'IPrP*(ieO,f3YN/NRMLkg_>KnP)2
+Jq8K'J:E#rI=-D@H3SY>GB\4RFoHI`F)q8"s)7sVrbhaQ!,VXMs(_RJrb2=E!+u1@s'u+>rF5e8
+s'Yh5s'G_2r`oJ-s'#A(!a&N*rDrqus&Anps&/koqb[8fr_E;aqb6l[k=Y58gdq95p.G9VrCm&^
+r_EDfqb[8hr_iSkr`&ksqc<Ysr`K&#r`]8)qcs,+ra,J/ra>_6qdTP7s()"<s(;7Cqe5tCrbD=G
+rbVOMq/6.Lqf).Hp2]kJlu_rDicb0@pN6=SrGqXPqJc"Dr,DLPs)S*[rH/'^!-\?cs*+Nhrd"cq
+I!g?jIXh?I"bD8XK7nsXL(T2sM2@+JN/WaVO,oBbP*2#nrfmYQQ^F/.Rf8cWS=TYN!M?%aT`Us`
+U].%jV5C-hVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfGE]tV5[^B)-d
+rk\]R`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfChr*GOir7sAjQ5OdkNMp0
+!UB"MliHMArpKpXnaZVL!qZ'Vrq6<bs7cHds7uZjqYU6hr;Gp[JcCo5J,~>
+JcC<$JcG$8n,E7`r;?BfrVHNhqtU0brq?9_rq-6^r:9jWs7$!UrpKgRrTsRMs6BUJs60LGroX7B
+!9F.>s5F%;rnr:`hVI#CgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaiMNB`Poa3_SO"%^:h1k]",>[
+[^EKKZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?":R$a5+Q'IStP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-EhH?sj]G^"?:G'.qLFE;MDrc&!YDf>Vm!c;airbMOK!,;CF!bZ+WrFH%@@q5IH
+!b#JErEfV4?![D6s'#J,rE9/&s&]/"s&K(urDW\ns&&\jr_NJfq+^`[q+Kd@nO_k6pdt0OrCd)_
+q+^i`r_NAer_`YmqG[Amr`/hrrE&u#qcWl$r`f8)ra#M0qHs81raG\5raYq<r+5k>rb).Brb;@H
+qJ6(HrGD@Jr,;LPnT"5BolKMBol]MBq/uCQr,_gWp2TnIpM]nIqJlLTs)\-\s)n?brc\ouH$O^^
+H[C-gI=?WpJ:N3&rdu8FKnb>;Ll$tGMi<USNfT6_OcklkPa%GuQC!u+R@=,E#+V6UStDXJrh0@e
+U].(hV#[ClVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfJC]`>eG^]2(L
+_>_:P_o2Pn!QN1Za8sE*rlZ)$c-FV\d*^7hdaQ^qe^i@(f\,!4gYDea(uF0.i8N\Uj5f=`k2tjj
+l07Kulg4!*mI'uB!V#XYo)J=]o`"O`pAamcq#:*gqYU0gr;6HZrdk*2s*t~>
+JcC<$JcG$8n,E7`r;?BfrVHNhqtU0brq?9_rq-6^r:9jWs7$!UrpKgRrTsRMs6BUJs60LGroX7B
+!9F.>s5F%;rnr:`hVI#CgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaiMNB`Poa3_SO"%^:h1k]",>[
+[^EKKZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?":R$a5+Q'IStP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-EhH?sj]G^"?:G'.qLFE;MDrc&!YDf>Vm!c;airbMOK!,;CF!bZ+WrFH%@@q5IH
+!b#JErEfV4?![D6s'#J,rE9/&s&]/"s&K(urDW\ns&&\jr_NJfq+^`[q+Kd@nO_k6pdt0OrCd)_
+q+^i`r_NAer_`YmqG[Amr`/hrrE&u#qcWl$r`f8)ra#M0qHs81raG\5raYq<r+5k>rb).Brb;@H
+qJ6(HrGD@Jr,;LPnT"5BolKMBol]MBq/uCQr,_gWp2TnIpM]nIqJlLTs)\-\s)n?brc\ouH$O^^
+H[C-gI=?WpJ:N3&rdu8FKnb>;Ll$tGMi<USNfT6_OcklkPa%GuQC!u+R@=,E#+V6UStDXJrh0@e
+U].(hV#[ClVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfJC]`>eG^]2(L
+_>_:P_o2Pn!QN1Za8sE*rlZ)$c-FV\d*^7hdaQ^qe^i@(f\,!4gYDea(uF0.i8N\Uj5f=`k2tjj
+l07Kulg4!*mI'uB!V#XYo)J=]o`"O`pAamcq#:*gqYU0gr;6HZrdk*2s*t~>
+JcC<$JcG$8n,E7`r;?BfrVHNhqtU0brq?9_rq-6^r:9jWs7$!UrpKgRrTsRMs6BUJs60LGroX7B
+!9F.>s5F%;rnr:`hVI#CgtUQ:g"=p.f%&:"e'cXkd*L"^bfe2PaiMNB`Poa3_SO"%^:h1k]",>[
+[^EKKZa$a=YH=q.WiE%sVl$;dUnXQVTV%gHS=?":R$a5+Q'IStP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E#rI=-EhH?sj]G^"?:G'.qLFE;MDrc&!YDf>Vm!c;airbMOK!,;CF!bZ+WrFH%@@q5IH
+!b#JErEfV4?![D6s'#J,rE9/&s&]/"s&K(urDW\ns&&\jr_NJfq+^`[q+Kd@nO_k6pdt0OrCd)_
+q+^i`r_NAer_`YmqG[Amr`/hrrE&u#qcWl$r`f8)ra#M0qHs81raG\5raYq<r+5k>rb).Brb;@H
+qJ6(HrGD@Jr,;LPnT"5BolKMBol]MBq/uCQr,_gWp2TnIpM]nIqJlLTs)\-\s)n?brc\ouH$O^^
+H[C-gI=?WpJ:N3&rdu8FKnb>;Ll$tGMi<USNfT6_OcklkPa%GuQC!u+R@=,E#+V6UStDXJrh0@e
+U].(hV#[ClVuN^qWW&ptX8f:"XoGR(YPk^*Z2_-.Zi@E4[JdN8\%&sH\H9@S]DfJC]`>eG^]2(L
+_>_:P_o2Pn!QN1Za8sE*rlZ)$c-FV\d*^7hdaQ^qe^i@(f\,!4gYDea(uF0.i8N\Uj5f=`k2tjj
+l07Kulg4!*mI'uB!V#XYo)J=]o`"O`pAamcq#:*gqYU0gr;6HZrdk*2s*t~>
+JcC<$JcG!7n,E7`r;?BfrVHNhqY:*brq?6^s7H<^r:9mXs7#sTs6fpSrTsRMs6BRIs6'IGrT4@H
+jQ,@]io8qrhuV`lrnVYNgY1B7f[na+e^W*tda?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]Y(kf\[],W
+[C!9GZ*:I8Xf\\)Wi;qpVPU)aU7n9RT:VUDS"#k6R$X,(Q'@JqOcYWbNfB!VMi*@JLkg_>KnP)2
+Jq8H&IsuipI=-D@H3SY>GB\4RFoHIfF)l;@EH#l8rbhaQs(q[M!buF`rb2=Es(;7As().>raPn9
+s'Yh5s'>\2rETA,s'#D)s&f;&rDrqus&Aqqr_ibnqb[8frD*,^qb6cXj@\r6lq$kBoh,0UrCm&^
+rD*>fqG@/gr_iVlrD`brqc<\trE/r"rEB2)qcs)*ra,J/ra>_6r*oY8rabn;s(;7Cqe5tCrbD=G
+rG;IMphp"Jqf(tColB_Hm<%uCo60hMolU.Rr,VLNp2L"LpMftKrc8$[rH/'^s*"Bcs*+Nhrd"Tl
+I/\NpIXh?I'nLshK7nr5L51SAM2I4MN/`jYO-#M'OqNtCQ'IZ%R$a;1S"#q<SXuFFT`1ViU8+KZ
+Unsobrhodp!3,pss/Q.$rN6+&s0)C*s0;U0rNlO2rjDa6s0r$<rOMs>!5&3B!kl=^rkANM_86,f
+!Q2kT`<"!!rl>,^b5TQobg"GYcd:%ddF-LneCE.Lf-]/'g=k<:h;-rFi8ESQioB([jlY^gkNM0p
+lKdd&m-X6/n*fc8nc&+Zo)SF]p&Facp\jmdq>^<fqu-HjrTjH6s,d82~>
+JcC<$JcG!7n,E7`r;?BfrVHNhqY:*brq?6^s7H<^r:9mXs7#sTs6fpSrTsRMs6BRIs6'IGrT4@H
+jQ,@]io8qrhuV`lrnVYNgY1B7f[na+e^W*tda?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]Y(kf\[],W
+[C!9GZ*:I8Xf\\)Wi;qpVPU)aU7n9RT:VUDS"#k6R$X,(Q'@JqOcYWbNfB!VMi*@JLkg_>KnP)2
+Jq8H&IsuipI=-D@H3SY>GB\4RFoHIfF)l;@EH#l8rbhaQs(q[M!buF`rb2=Es(;7As().>raPn9
+s'Yh5s'>\2rETA,s'#D)s&f;&rDrqus&Aqqr_ibnqb[8frD*,^qb6cXj@\r6lq$kBoh,0UrCm&^
+rD*>fqG@/gr_iVlrD`brqc<\trE/r"rEB2)qcs)*ra,J/ra>_6r*oY8rabn;s(;7Cqe5tCrbD=G
+rG;IMphp"Jqf(tColB_Hm<%uCo60hMolU.Rr,VLNp2L"LpMftKrc8$[rH/'^s*"Bcs*+Nhrd"Tl
+I/\NpIXh?I'nLshK7nr5L51SAM2I4MN/`jYO-#M'OqNtCQ'IZ%R$a;1S"#q<SXuFFT`1ViU8+KZ
+Unsobrhodp!3,pss/Q.$rN6+&s0)C*s0;U0rNlO2rjDa6s0r$<rOMs>!5&3B!kl=^rkANM_86,f
+!Q2kT`<"!!rl>,^b5TQobg"GYcd:%ddF-LneCE.Lf-]/'g=k<:h;-rFi8ESQioB([jlY^gkNM0p
+lKdd&m-X6/n*fc8nc&+Zo)SF]p&Facp\jmdq>^<fqu-HjrTjH6s,d82~>
+JcC<$JcG!7n,E7`r;?BfrVHNhqY:*brq?6^s7H<^r:9mXs7#sTs6fpSrTsRMs6BRIs6'IGrT4@H
+jQ,@]io8qrhuV`lrnVYNgY1B7f[na+e^W*tda?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]Y(kf\[],W
+[C!9GZ*:I8Xf\\)Wi;qpVPU)aU7n9RT:VUDS"#k6R$X,(Q'@JqOcYWbNfB!VMi*@JLkg_>KnP)2
+Jq8H&IsuipI=-D@H3SY>GB\4RFoHIfF)l;@EH#l8rbhaQs(q[M!buF`rb2=Es(;7As().>raPn9
+s'Yh5s'>\2rETA,s'#D)s&f;&rDrqus&Aqqr_ibnqb[8frD*,^qb6cXj@\r6lq$kBoh,0UrCm&^
+rD*>fqG@/gr_iVlrD`brqc<\trE/r"rEB2)qcs)*ra,J/ra>_6r*oY8rabn;s(;7Cqe5tCrbD=G
+rG;IMphp"Jqf(tColB_Hm<%uCo60hMolU.Rr,VLNp2L"LpMftKrc8$[rH/'^s*"Bcs*+Nhrd"Tl
+I/\NpIXh?I'nLshK7nr5L51SAM2I4MN/`jYO-#M'OqNtCQ'IZ%R$a;1S"#q<SXuFFT`1ViU8+KZ
+Unsobrhodp!3,pss/Q.$rN6+&s0)C*s0;U0rNlO2rjDa6s0r$<rOMs>!5&3B!kl=^rkANM_86,f
+!Q2kT`<"!!rl>,^b5TQobg"GYcd:%ddF-LneCE.Lf-]/'g=k<:h;-rFi8ESQioB([jlY^gkNM0p
+lKdd&m-X6/n*fc8nc&+Zo)SF]p&Facp\jmdq>^<fqu-HjrTjH6s,d82~>
+JcC<$JcG!7n,E4_r;?BfrVHNhqtU0brq?6^s7H<^r:9mXrp]mTrpKgRrTsRMs6BUJs60LGroO:D
+jQ-=#!TN);huV`lrnW%YgY1B7f[na+e^W*tda?IhcHa\YbKJ&LaN)<>`5BI/^q[Xu]Y(ke\[],W
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)`U7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2
+JqAQ(J:E#rI=-BgH?sj]G^"@TF`m_+s)S0\rc.sW!,qjSs(qaPrG)ILBkdQ[s(D@Dral+?!+Yt:
+!b#JEra5\3s'>V/s',M,rE9/&!*B,"s&K%trDW\ns&&Yir_NJfpJ(HWoh4C=mRd=Ink&LHrCd)_
+q+^i`rD3;er_`YmqG[Amr`/eqr`B&#qcWl$r`f5(ra#M0qd9>1raG\5raYt=qdob=s(D4Brb;@H
+qJ6(HrGD=Ir,;IOluDZ<olKMBiH=d7r,_dVp2TA:qJlLTrcA$[s)e<brHA9eH2`-iHOY@NI=?Zq
+J:N3&K7ei2re;VPLl$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:SXl@DT:l1W!MZ@gU^3foVPg>j
+W2ZcqWWK6&XSo:$Y5b^(YlD!.ZMh-0[/[Q4[f<i:\G`u<])TDA]`5YF^AYeO^qmk(_Sa:0rl#8b
+a2c9Bai_cLbKS61c3;P@dF$CkrmVS2f%8O+g"P07gYCW@hV[8LiSsjs$KU=2k3(sll07L!rp0[Q
+mf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYL*fr;?N[rdk*1s*t~>
+JcC<$JcG!7n,E4_r;?BfrVHNhqtU0brq?6^s7H<^r:9mXrp]mTrpKgRrTsRMs6BUJs60LGroO:D
+jQ-=#!TN);huV`lrnW%YgY1B7f[na+e^W*tda?IhcHa\YbKJ&LaN)<>`5BI/^q[Xu]Y(ke\[],W
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)`U7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2
+JqAQ(J:E#rI=-BgH?sj]G^"@TF`m_+s)S0\rc.sW!,qjSs(qaPrG)ILBkdQ[s(D@Dral+?!+Yt:
+!b#JEra5\3s'>V/s',M,rE9/&!*B,"s&K%trDW\ns&&Yir_NJfpJ(HWoh4C=mRd=Ink&LHrCd)_
+q+^i`rD3;er_`YmqG[Amr`/eqr`B&#qcWl$r`f5(ra#M0qd9>1raG\5raYt=qdob=s(D4Brb;@H
+qJ6(HrGD=Ir,;IOluDZ<olKMBiH=d7r,_dVp2TA:qJlLTrcA$[s)e<brHA9eH2`-iHOY@NI=?Zq
+J:N3&K7ei2re;VPLl$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:SXl@DT:l1W!MZ@gU^3foVPg>j
+W2ZcqWWK6&XSo:$Y5b^(YlD!.ZMh-0[/[Q4[f<i:\G`u<])TDA]`5YF^AYeO^qmk(_Sa:0rl#8b
+a2c9Bai_cLbKS61c3;P@dF$CkrmVS2f%8O+g"P07gYCW@hV[8LiSsjs$KU=2k3(sll07L!rp0[Q
+mf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYL*fr;?N[rdk*1s*t~>
+JcC<$JcG!7n,E4_r;?BfrVHNhqtU0brq?6^s7H<^r:9mXrp]mTrpKgRrTsRMs6BUJs60LGroO:D
+jQ-=#!TN);huV`lrnW%YgY1B7f[na+e^W*tda?IhcHa\YbKJ&LaN)<>`5BI/^q[Xu]Y(ke\[],W
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)`U7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieNfB!VMi*@JLkg_>KnP)2
+JqAQ(J:E#rI=-BgH?sj]G^"@TF`m_+s)S0\rc.sW!,qjSs(qaPrG)ILBkdQ[s(D@Dral+?!+Yt:
+!b#JEra5\3s'>V/s',M,rE9/&!*B,"s&K%trDW\ns&&Yir_NJfpJ(HWoh4C=mRd=Ink&LHrCd)_
+q+^i`rD3;er_`YmqG[Amr`/eqr`B&#qcWl$r`f5(ra#M0qd9>1raG\5raYt=qdob=s(D4Brb;@H
+qJ6(HrGD=Ir,;IOluDZ<olKMBiH=d7r,_dVp2TA:qJlLTrcA$[s)e<brHA9eH2`-iHOY@NI=?Zq
+J:N3&K7ei2re;VPLl$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:SXl@DT:l1W!MZ@gU^3foVPg>j
+W2ZcqWWK6&XSo:$Y5b^(YlD!.ZMh-0[/[Q4[f<i:\G`u<])TDA]`5YF^AYeO^qmk(_Sa:0rl#8b
+a2c9Bai_cLbKS61c3;P@dF$CkrmVS2f%8O+g"P07gYCW@hV[8LiSsjs$KU=2k3(sll07L!rp0[Q
+mf)\Tn,W"Xo)J:]o_nI_pAamcq#C0hqYL*fr;?N[rdk*1s*t~>
+JcC<$JcG!7mf*+^r;?BfrVHNhqY:'as7Z?_rq-6^r:9jWs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+!9F.>!TN);huV`lrnVMJgY1B7f[na+e^W*tda?IgcHa\YbKJ#KaN)<>`5BI.^q[Xt]Y(ke\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E%II0"_Brd"TjGlDmfG'3e+s)S0\rc&!YDf>Vm!c;airbMOKs(VIG!bZ+Wral+?s'u%;
+s'bq8ra5\3!+#P.s'#J,rE9/&s&]/"s&K(ur)<Vnr_`Phr_NJfohG3ToLn==iCWZ6r(Hu^qG$o`
+r_NAer_`YmqG[Amr`/eqr`B)$qH<c#r`f5(ra#M0qd9>1raG\5raYq<r+5k>rb).Brb;@HqJ6%G
+rb_CIr,;CMl#H?9p2fVCkB6B<r,_dVoPs;<q/QCSrcA$[s)e<brHAKkH$O^^H[C/>I0G(LJ:N3&
+rduAIKnb>;Ll$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:Sc52gT:hmOU8"EYUnsobrhfgrWN#ls
+!irE(rN-.(YHRo/s0;U0rNlO2rjD^5s0r$<rOMs>s1A9Cs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-a
+ai_cLbKS61c2l8<rm:nte'umtf)F8;f\,!4gYCW@hV[5Ki8N\Uj5f=`k2tjjrojIKli-5OmI'uB
+!q>aMrpg-^o^r+T!quB_r:p<frqcNhrVZQkmf%e;NW4M~>
+JcC<$JcG!7mf*+^r;?BfrVHNhqY:'as7Z?_rq-6^r:9jWs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+!9F.>!TN);huV`lrnVMJgY1B7f[na+e^W*tda?IgcHa\YbKJ#KaN)<>`5BI.^q[Xt]Y(ke\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E%II0"_Brd"TjGlDmfG'3e+s)S0\rc&!YDf>Vm!c;airbMOKs(VIG!bZ+Wral+?s'u%;
+s'bq8ra5\3!+#P.s'#J,rE9/&s&]/"s&K(ur)<Vnr_`Phr_NJfohG3ToLn==iCWZ6r(Hu^qG$o`
+r_NAer_`YmqG[Amr`/eqr`B)$qH<c#r`f5(ra#M0qd9>1raG\5raYq<r+5k>rb).Brb;@HqJ6%G
+rb_CIr,;CMl#H?9p2fVCkB6B<r,_dVoPs;<q/QCSrcA$[s)e<brHAKkH$O^^H[C/>I0G(LJ:N3&
+rduAIKnb>;Ll$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:Sc52gT:hmOU8"EYUnsobrhfgrWN#ls
+!irE(rN-.(YHRo/s0;U0rNlO2rjD^5s0r$<rOMs>s1A9Cs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-a
+ai_cLbKS61c2l8<rm:nte'umtf)F8;f\,!4gYCW@hV[5Ki8N\Uj5f=`k2tjjrojIKli-5OmI'uB
+!q>aMrpg-^o^r+T!quB_r:p<frqcNhrVZQkmf%e;NW4M~>
+JcC<$JcG!7mf*+^r;?BfrVHNhqY:'as7Z?_rq-6^r:9jWs7#sTs6fpSrTsRMs6BRI!pJh1roX7B
+!9F.>!TN);huV`lrnVMJgY1B7f[na+e^W*tda?IgcHa\YbKJ#KaN)<>`5BI.^q[Xt]Y(ke\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\Z)J:E%II0"_Brd"TjGlDmfG'3e+s)S0\rc&!YDf>Vm!c;airbMOKs(VIG!bZ+Wral+?s'u%;
+s'bq8ra5\3!+#P.s'#J,rE9/&s&]/"s&K(ur)<Vnr_`Phr_NJfohG3ToLn==iCWZ6r(Hu^qG$o`
+r_NAer_`YmqG[Amr`/eqr`B)$qH<c#r`f5(ra#M0qd9>1raG\5raYq<r+5k>rb).Brb;@HqJ6%G
+rb_CIr,;CMl#H?9p2fVCkB6B<r,_dVoPs;<q/QCSrcA$[s)e<brHAKkH$O^^H[C/>I0G(LJ:N3&
+rduAIKnb>;Ll$tGMi<USNfT6_OcklkPa.N"Q^F/.R[]e:Sc52gT:hmOU8"EYUnsobrhfgrWN#ls
+!irE(rN-.(YHRo/s0;U0rNlO2rjD^5s0r$<rOMs>s1A9Cs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-a
+ai_cLbKS61c2l8<rm:nte'umtf)F8;f\,!4gYCW@hV[5Ki8N\Uj5f=`k2tjjrojIKli-5OmI'uB
+!q>aMrpg-^o^r+T!quB_r:p<frqcNhrVZQkmf%e;NW4M~>
+JcC<$JcFs6mf*+^r;?BfrVHNhqY:'arq?9_rq-3]r:9mXrp]mTrpKgRrTsRM!:'OIs6'IGroX7B
+!9F.>#3+V#i8EMLrnVAFgY1B7f[na+e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Us]Y(hd\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$a5*Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\[RJ.R3ZI=6KjH[:!`G^+FVG'8$-F96N(ErL%[E,T[oD?=ZkD#S5MC&huHBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;fbp;Z9Pj;#O2f:@q9S9_;!A9'Ak<9)M?\9_hE^
+:Amuc;#X>j;YsDl<;fho<rH,!=Sc2!>5hb&>lJ%-?Me+/@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`F
+D#J5FDYnAJE92*4EqaYAFROABFSg.WEq=;@E;4GPErL.YFT6L`G5c^cGQ<$gH3&A?rd=frJ,XsN
+JV&N,KS>/8LPUeDMMmFPNK0'\OHG]hPE_>tQC!u+R@9V7S=Q7CT:_dMTq\=]U]I<hrhodp!3,st
+!irE(riQ4's0)C*s0;U0rNlO2s0_g6s0r$<r42j=s1A9Cs1SHHrkJKKs2"]O!lMsprl"oXa8X-f
+ai_cLbKS5UcHab_rm;_6e'umte^i@(f\,!4gY:N>h;7&Ii8NYSj5]4^roOUOkiq?slKdg'mHs?@
+mfN"Knc&(\oCV\Sp&Facp\agdq>U6fqu-HjrU0Z9s,?u.~>
+JcC<$JcFs6mf*+^r;?BfrVHNhqY:'arq?9_rq-3]r:9mXrp]mTrpKgRrTsRM!:'OIs6'IGroX7B
+!9F.>#3+V#i8EMLrnVAFgY1B7f[na+e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Us]Y(hd\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$a5*Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\[RJ.R3ZI=6KjH[:!`G^+FVG'8$-F96N(ErL%[E,T[oD?=ZkD#S5MC&huHBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;fbp;Z9Pj;#O2f:@q9S9_;!A9'Ak<9)M?\9_hE^
+:Amuc;#X>j;YsDl<;fho<rH,!=Sc2!>5hb&>lJ%-?Me+/@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`F
+D#J5FDYnAJE92*4EqaYAFROABFSg.WEq=;@E;4GPErL.YFT6L`G5c^cGQ<$gH3&A?rd=frJ,XsN
+JV&N,KS>/8LPUeDMMmFPNK0'\OHG]hPE_>tQC!u+R@9V7S=Q7CT:_dMTq\=]U]I<hrhodp!3,st
+!irE(riQ4's0)C*s0;U0rNlO2s0_g6s0r$<r42j=s1A9Cs1SHHrkJKKs2"]O!lMsprl"oXa8X-f
+ai_cLbKS5UcHab_rm;_6e'umte^i@(f\,!4gY:N>h;7&Ii8NYSj5]4^roOUOkiq?slKdg'mHs?@
+mfN"Knc&(\oCV\Sp&Facp\agdq>U6fqu-HjrU0Z9s,?u.~>
+JcC<$JcFs6mf*+^r;?BfrVHNhqY:'arq?9_rq-3]r:9mXrp]mTrpKgRrTsRM!:'OIs6'IGroX7B
+!9F.>#3+V#i8EMLrnVAFgY1B7f[na+e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Us]Y(hd\[])V
+[C!9GZ*:F7Xf\Y(Wi;qpVPU)aU7n9RT:VUDS"#k7R$a5*Q'@JqP*(ieO,f3YN/NRMM26qAL4t;5
+K7\[RJ.R3ZI=6KjH[:!`G^+FVG'8$-F96N(ErL%[E,T[oD?=ZkD#S5MC&huHBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;fbp;Z9Pj;#O2f:@q9S9_;!A9'Ak<9)M?\9_hE^
+:Amuc;#X>j;YsDl<;fho<rH,!=Sc2!>5hb&>lJ%-?Me+/@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`F
+D#J5FDYnAJE92*4EqaYAFROABFSg.WEq=;@E;4GPErL.YFT6L`G5c^cGQ<$gH3&A?rd=frJ,XsN
+JV&N,KS>/8LPUeDMMmFPNK0'\OHG]hPE_>tQC!u+R@9V7S=Q7CT:_dMTq\=]U]I<hrhodp!3,st
+!irE(riQ4's0)C*s0;U0rNlO2s0_g6s0r$<r42j=s1A9Cs1SHHrkJKKs2"]O!lMsprl"oXa8X-f
+ai_cLbKS5UcHab_rm;_6e'umte^i@(f\,!4gY:N>h;7&Ii8NYSj5]4^roOUOkiq?slKdg'mHs?@
+mfN"Knc&(\oCV\Sp&Facp\agdq>U6fqu-HjrU0Z9s,?u.~>
+JcC<$JcFp5n,E4_r;??erVHNhqY:'arq?6^s7H<^r:9jWs7#sTs6fpSrTsRMs6BUJs60LGroO7C
+jSn0Dio/kSi8<Djh.PNtg=k64f@SU(eC;sqdEp4bcHXSVb/q`G`l5p8_SX.)^V7Co]=PP`\$i`Q
+Za6sBYck43XfJJ%WMcYkV50o]TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@JLkg_>KnTGX
+"bM;UJ:E%II0"_Brd"TjGlDmgG'.s,F9-H'rc.sW!,qjSs)%dPrbDRMBkdQ[s(;=DrFH%@@q5LI
+s'Yn8rEfV4?![D6!aAi3rE9/&s&]/"s&K(ur)<Vnr_`MgrD3>dnkJdNoh4L@mn*%Ar(Hu^q+^i`
+rD38dr_`YmqG[Amr`/eqrE&u#qH<c#r`f5(rE]D/qd9>1raG\5raYq<r+5k>rb)+Arb;@HqeQ.H
+rGD:HqJZ+Ij)Od5piF`&qfDXTno=ABp2U(PrcA$[s)n?brceBe!."Qis*G3&I=6QnIt3'#JqJ]/
+L&QfVLPUeDMN!LRNfT6_OcklkPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5:'gVZE`qri6"!!3H1%
+s/uC*rilF-s0DU0s0Vg6r3lX7s1&$<s186BrOi0Ds1\HH!l2Xgrke]Q!6"lUs2G&Zrl>Ymb0%oN
+bfn>WcHjh`dF$CkrmVV3f%8O+f\,!4gYCW@hVR/Ji8N\pit1;5k2tjjkiq?slg*p(mI'EAmfDqJ
+rpp*\s7H<`s7ZKerV6Bfs8)ThrVZTln,@n<MuS;~>
+JcC<$JcFp5n,E4_r;??erVHNhqY:'arq?6^s7H<^r:9jWs7#sTs6fpSrTsRMs6BUJs60LGroO7C
+jSn0Dio/kSi8<Djh.PNtg=k64f@SU(eC;sqdEp4bcHXSVb/q`G`l5p8_SX.)^V7Co]=PP`\$i`Q
+Za6sBYck43XfJJ%WMcYkV50o]TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@JLkg_>KnTGX
+"bM;UJ:E%II0"_Brd"TjGlDmgG'.s,F9-H'rc.sW!,qjSs)%dPrbDRMBkdQ[s(;=DrFH%@@q5LI
+s'Yn8rEfV4?![D6!aAi3rE9/&s&]/"s&K(ur)<Vnr_`MgrD3>dnkJdNoh4L@mn*%Ar(Hu^q+^i`
+rD38dr_`YmqG[Amr`/eqrE&u#qH<c#r`f5(rE]D/qd9>1raG\5raYq<r+5k>rb)+Arb;@HqeQ.H
+rGD:HqJZ+Ij)Od5piF`&qfDXTno=ABp2U(PrcA$[s)n?brceBe!."Qis*G3&I=6QnIt3'#JqJ]/
+L&QfVLPUeDMN!LRNfT6_OcklkPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5:'gVZE`qri6"!!3H1%
+s/uC*rilF-s0DU0s0Vg6r3lX7s1&$<s186BrOi0Ds1\HH!l2Xgrke]Q!6"lUs2G&Zrl>Ymb0%oN
+bfn>WcHjh`dF$CkrmVV3f%8O+f\,!4gYCW@hVR/Ji8N\pit1;5k2tjjkiq?slg*p(mI'EAmfDqJ
+rpp*\s7H<`s7ZKerV6Bfs8)ThrVZTln,@n<MuS;~>
+JcC<$JcFp5n,E4_r;??erVHNhqY:'arq?6^s7H<^r:9jWs7#sTs6fpSrTsRMs6BUJs60LGroO7C
+jSn0Dio/kSi8<Djh.PNtg=k64f@SU(eC;sqdEp4bcHXSVb/q`G`l5p8_SX.)^V7Co]=PP`\$i`Q
+Za6sBYck43XfJJ%WMcYkV50o]TqS-OSt;IAS!ob4R$X,(P`q8nOcYWbNfB!VMi*@JLkg_>KnTGX
+"bM;UJ:E%II0"_Brd"TjGlDmgG'.s,F9-H'rc.sW!,qjSs)%dPrbDRMBkdQ[s(;=DrFH%@@q5LI
+s'Yn8rEfV4?![D6!aAi3rE9/&s&]/"s&K(ur)<Vnr_`MgrD3>dnkJdNoh4L@mn*%Ar(Hu^q+^i`
+rD38dr_`YmqG[Amr`/eqrE&u#qH<c#r`f5(rE]D/qd9>1raG\5raYq<r+5k>rb)+Arb;@HqeQ.H
+rGD:HqJZ+Ij)Od5piF`&qfDXTno=ABp2U(PrcA$[s)n?brceBe!."Qis*G3&I=6QnIt3'#JqJ]/
+L&QfVLPUeDMN!LRNfT6_OcklkPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5:'gVZE`qri6"!!3H1%
+s/uC*rilF-s0DU0s0Vg6r3lX7s1&$<s186BrOi0Ds1\HH!l2Xgrke]Q!6"lUs2G&Zrl>Ymb0%oN
+bfn>WcHjh`dF$CkrmVV3f%8O+f\,!4gYCW@hVR/Ji8N\pit1;5k2tjjkiq?slg*p(mI'EAmfDqJ
+rpp*\s7H<`s7ZKerV6Bfs8)ThrVZTln,@n<MuS;~>
+JcC<$JcFp5mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9mXrp]mTrpKgRrTjUOlK\?4!pJh1roOUM
+jQ,@]io8qTi8<Djh-\slg=k64f@SU(eC;spdEp4bcHXPUb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sBYck43XK/A$WMcYkV50o]TqS-OSt;LBS!ob4R$X,(Q'@JqP*(fdNfB!VMi.Lj$&F@kL4t;5
+K7\[RJ.$jUI=6KjH[:!`H$K=4!HrVbFT6C^ErL(YDuahUDZ=PRD#S5MCB&#IBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;]\o;Z9Pi;#F,e:@:jL9_M-)9)M?[9_qK^:Amuc
+;#O8j;YsDk<;ono<rH,!=Sc2!>5hb&>l@t-?Me+.@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`ED#J5E
+DY\5DE8ts4Eqj_)FS^(UEnta7ErL.YFT6L`G5ZUdG^4T6H3&A?rd?nXIt3'#JqAW-KS>/8LPUeD
+MMmFPNK0'\OHG]iPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5C,fVl6Sori-""XT#@%Y5b^)YlD!.
+ZMh-0[/[Q4[f<i:\GWo;])TD@]`5\F^AYhH^];4L_?.Wn`;[aU`W4'Ya<SgLb0.uPbg"GYcd0tc
+dF-IleC<%"f%8O+g"P07gYCW@hV\=j$K:")j5f=`k2tjjrojIKli-5UmI'E2n*oi:rpp*\!;-6_
+s7ZKerV6Bfs8)WirVZTln,@n<MZ82~>
+JcC<$JcFp5mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9mXrp]mTrpKgRrTjUOlK\?4!pJh1roOUM
+jQ,@]io8qTi8<Djh-\slg=k64f@SU(eC;spdEp4bcHXPUb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sBYck43XK/A$WMcYkV50o]TqS-OSt;LBS!ob4R$X,(Q'@JqP*(fdNfB!VMi.Lj$&F@kL4t;5
+K7\[RJ.$jUI=6KjH[:!`H$K=4!HrVbFT6C^ErL(YDuahUDZ=PRD#S5MCB&#IBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;]\o;Z9Pi;#F,e:@:jL9_M-)9)M?[9_qK^:Amuc
+;#O8j;YsDk<;ono<rH,!=Sc2!>5hb&>l@t-?Me+.@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`ED#J5E
+DY\5DE8ts4Eqj_)FS^(UEnta7ErL.YFT6L`G5ZUdG^4T6H3&A?rd?nXIt3'#JqAW-KS>/8LPUeD
+MMmFPNK0'\OHG]iPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5C,fVl6Sori-""XT#@%Y5b^)YlD!.
+ZMh-0[/[Q4[f<i:\GWo;])TD@]`5\F^AYhH^];4L_?.Wn`;[aU`W4'Ya<SgLb0.uPbg"GYcd0tc
+dF-IleC<%"f%8O+g"P07gYCW@hV\=j$K:")j5f=`k2tjjrojIKli-5UmI'E2n*oi:rpp*\!;-6_
+s7ZKerV6Bfs8)WirVZTln,@n<MZ82~>
+JcC<$JcFp5mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9mXrp]mTrpKgRrTjUOlK\?4!pJh1roOUM
+jQ,@]io8qTi8<Djh-\slg=k64f@SU(eC;spdEp4bcHXPUb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sBYck43XK/A$WMcYkV50o]TqS-OSt;LBS!ob4R$X,(Q'@JqP*(fdNfB!VMi.Lj$&F@kL4t;5
+K7\[RJ.$jUI=6KjH[:!`H$K=4!HrVbFT6C^ErL(YDuahUDZ=PRD#S5MCB&#IBEDgYB)ZBAA,p-<
+@KKtG@/aO5?N4=1>lS%.>5h\)=T;J$<rZ2!<;]\o;Z9Pi;#F,e:@:jL9_M-)9)M?[9_qK^:Amuc
+;#O8j;YsDk<;ono<rH,!=Sc2!>5hb&>l@t-?Me+.@/aU4@fBm:AG]s<B)ZH?B`;`FCAM`ED#J5E
+DY\5DE8ts4Eqj_)FS^(UEnta7ErL.YFT6L`G5ZUdG^4T6H3&A?rd?nXIt3'#JqAW-KS>/8LPUeD
+MMmFPNK0'\OHG]iPa.N"Q^F/.R[]e:SXuFFTV/!PU8+N[V5C,fVl6Sori-""XT#@%Y5b^)YlD!.
+ZMh-0[/[Q4[f<i:\GWo;])TD@]`5\F^AYhH^];4L_?.Wn`;[aU`W4'Ya<SgLb0.uPbg"GYcd0tc
+dF-IleC<%"f%8O+g"P07gYCW@hV\=j$K:")j5f=`k2tjjrojIKli-5UmI'E2n*oi:rpp*\!;-6_
+s7ZKerV6Bfs8)WirVZTln,@n<MZ82~>
+JcC<$JcFm4mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTsRMs6BUJs6'IGroOUM
+jQ,@]io8qTi8<Djh.YTug=k64f@SU(eC2jndEp4bcHOJTb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sAYck43XK/A$WMcYkV50o^TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t<[
+K,&uhJ:N,uIXQWlH[C'bH$FRXGBS.PrcA3_EcV/!!cW'rrb_dSCi')ds(VOJrb2=E!+u1@!b>eN
+raPn9!+>b4!a]/<r`oJ-s'#A(s&f;&rDrqus&Anpr_i_mq,$ubqG-EPp.Y3RdRsC0rCm#]rD*>f
+qG@/grDNMkrD`brqH!SsrE/o!rEB/(qHX#*rEfA.ra>_6qdTP7rabq<rau.Bqe5tCrbD:FrG;FL
+oksPCnSmT0pi?1OeTCY/qf:V7rGqmYrH/$]!-\<b!dK!9rd"cqI!g?jIXh?I."Qu&K7nr5L51SA
+M2I4MN/`jYO-#KeP*;,qQ'Rf)R@9V7S=Q7CT:l1W"eqcfUnssfVZE`qri-%#XK;E'!j8`1rilF-
+s0DX1s0Vg6rO2^7s1&$<s183ArOi0Ds1\HHs1nZNrke]Q!6"iT!li:$rl>>db0%oNbfn?2c2l8<
+rm:bpe,Ii(e^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BHkNM0plK[^7liHMArpKpXnaZVL!qZ'V
+rUg6cp\4U\s7uZjqtp?irVc9cJcCN*J,~>
+JcC<$JcFm4mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTsRMs6BUJs6'IGroOUM
+jQ,@]io8qTi8<Djh.YTug=k64f@SU(eC2jndEp4bcHOJTb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sAYck43XK/A$WMcYkV50o^TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t<[
+K,&uhJ:N,uIXQWlH[C'bH$FRXGBS.PrcA3_EcV/!!cW'rrb_dSCi')ds(VOJrb2=E!+u1@!b>eN
+raPn9!+>b4!a]/<r`oJ-s'#A(s&f;&rDrqus&Anpr_i_mq,$ubqG-EPp.Y3RdRsC0rCm#]rD*>f
+qG@/grDNMkrD`brqH!SsrE/o!rEB/(qHX#*rEfA.ra>_6qdTP7rabq<rau.Bqe5tCrbD:FrG;FL
+oksPCnSmT0pi?1OeTCY/qf:V7rGqmYrH/$]!-\<b!dK!9rd"cqI!g?jIXh?I."Qu&K7nr5L51SA
+M2I4MN/`jYO-#KeP*;,qQ'Rf)R@9V7S=Q7CT:l1W"eqcfUnssfVZE`qri-%#XK;E'!j8`1rilF-
+s0DX1s0Vg6rO2^7s1&$<s183ArOi0Ds1\HHs1nZNrke]Q!6"iT!li:$rl>>db0%oNbfn?2c2l8<
+rm:bpe,Ii(e^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BHkNM0plK[^7liHMArpKpXnaZVL!qZ'V
+rUg6cp\4U\s7uZjqtp?irVc9cJcCN*J,~>
+JcC<$JcFm4mf*+^r;??erVHNhqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTsRMs6BUJs6'IGroOUM
+jQ,@]io8qTi8<Djh.YTug=k64f@SU(eC2jndEp4bcHOJTb/q`F`l5p7_SX.(^V7Co]=PP_\$i`P
+Za6sAYck43XK/A$WMcYkV50o^TqS-OSt;LCS!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26qAL4t<[
+K,&uhJ:N,uIXQWlH[C'bH$FRXGBS.PrcA3_EcV/!!cW'rrb_dSCi')ds(VOJrb2=E!+u1@!b>eN
+raPn9!+>b4!a]/<r`oJ-s'#A(s&f;&rDrqus&Anpr_i_mq,$ubqG-EPp.Y3RdRsC0rCm#]rD*>f
+qG@/grDNMkrD`brqH!SsrE/o!rEB/(qHX#*rEfA.ra>_6qdTP7rabq<rau.Bqe5tCrbD:FrG;FL
+oksPCnSmT0pi?1OeTCY/qf:V7rGqmYrH/$]!-\<b!dK!9rd"cqI!g?jIXh?I."Qu&K7nr5L51SA
+M2I4MN/`jYO-#KeP*;,qQ'Rf)R@9V7S=Q7CT:l1W"eqcfUnssfVZE`qri-%#XK;E'!j8`1rilF-
+s0DX1s0Vg6rO2^7s1&$<s183ArOi0Ds1\HHs1nZNrke]Q!6"iT!li:$rl>>db0%oNbfn?2c2l8<
+rm:bpe,Ii(e^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BHkNM0plK[^7liHMArpKpXnaZVL!qZ'V
+rUg6cp\4U\s7uZjqtp?irVc9cJcCN*J,~>
+JcC<$JcFj3mf*+^r;??erVHKgqY:'arq?6^rq-3]r:9mXrp]mTs6fmRrp9[Ns6BUJs6'IGroX7B
+$0:.,io8qTi8<Djh.5<qg=k64f@SU(eC2jndEp4bc-4ASb/hZE`l5m6_SX+'^V7@n]=PP_\$i]O
+Za6sAYck43XK/A$WMcYkV50o^U7n6PSt;LCS"#k6R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'<9a
+K7ec,rdY$!If=`rI!bj=!I8qhG62r1FoHIaF)l=#E<:)tDuOVUD/=%fCBA6bC&VfGB)lQCAcH9@
+A,Tj<@:3LB?iOF4?2\%.>6%k*=oVV(=8c2!<W?%r;uKVn;><uc:\dcP:%q?V9@lf69DhKZ:&Rid
+:\mod;>sJi;uTbq<Vfbp=8c7t=oDP&>P_V(?2\+,?iFI4@JaO5A,^$9AcHBABDZBAC&MfCC]/)J
+D=h`>Ds_N.EVXYMF4k[3F89k;EW'qWF8U.ZFT?U`GQ2mfH2`+FH[L3hI=?WpJ:N3&K7ei1Knb>;
+Ll$tGMi<XUO,oBbP*2#nQ'IZ%R$a;1S"-%@StD\TT`q0cUnjiarhft!WN)u!X/u<&!j8`1rilF-
+!4)R0s0Vg6rO2a8s1&!;s186BrOi-Cs1\HHs1nZNrke]Qs2=oUs2G&ZrlG,]!6Y;as3(JfrltPj
+d/MDndaS3F!S,d#f*^0`g=k<9gtgfChu;OKiSrnXjQ,Fbk3(sll07L!lg4!*mI'uB!q>aMrpg-^
+o^r.Us7ZKerV6Bfs8)WirVZWmo)=4?L&ZZ~>
+JcC<$JcFj3mf*+^r;??erVHKgqY:'arq?6^rq-3]r:9mXrp]mTs6fmRrp9[Ns6BUJs6'IGroX7B
+$0:.,io8qTi8<Djh.5<qg=k64f@SU(eC2jndEp4bc-4ASb/hZE`l5m6_SX+'^V7@n]=PP_\$i]O
+Za6sAYck43XK/A$WMcYkV50o^U7n6PSt;LCS"#k6R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'<9a
+K7ec,rdY$!If=`rI!bj=!I8qhG62r1FoHIaF)l=#E<:)tDuOVUD/=%fCBA6bC&VfGB)lQCAcH9@
+A,Tj<@:3LB?iOF4?2\%.>6%k*=oVV(=8c2!<W?%r;uKVn;><uc:\dcP:%q?V9@lf69DhKZ:&Rid
+:\mod;>sJi;uTbq<Vfbp=8c7t=oDP&>P_V(?2\+,?iFI4@JaO5A,^$9AcHBABDZBAC&MfCC]/)J
+D=h`>Ds_N.EVXYMF4k[3F89k;EW'qWF8U.ZFT?U`GQ2mfH2`+FH[L3hI=?WpJ:N3&K7ei1Knb>;
+Ll$tGMi<XUO,oBbP*2#nQ'IZ%R$a;1S"-%@StD\TT`q0cUnjiarhft!WN)u!X/u<&!j8`1rilF-
+!4)R0s0Vg6rO2a8s1&!;s186BrOi-Cs1\HHs1nZNrke]Qs2=oUs2G&ZrlG,]!6Y;as3(JfrltPj
+d/MDndaS3F!S,d#f*^0`g=k<9gtgfChu;OKiSrnXjQ,Fbk3(sll07L!lg4!*mI'uB!q>aMrpg-^
+o^r.Us7ZKerV6Bfs8)WirVZWmo)=4?L&ZZ~>
+JcC<$JcFj3mf*+^r;??erVHKgqY:'arq?6^rq-3]r:9mXrp]mTs6fmRrp9[Ns6BUJs6'IGroX7B
+$0:.,io8qTi8<Djh.5<qg=k64f@SU(eC2jndEp4bc-4ASb/hZE`l5m6_SX+'^V7@n]=PP_\$i]O
+Za6sAYck43XK/A$WMcYkV50o^U7n6PSt;LCS"#k6R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'<9a
+K7ec,rdY$!If=`rI!bj=!I8qhG62r1FoHIaF)l=#E<:)tDuOVUD/=%fCBA6bC&VfGB)lQCAcH9@
+A,Tj<@:3LB?iOF4?2\%.>6%k*=oVV(=8c2!<W?%r;uKVn;><uc:\dcP:%q?V9@lf69DhKZ:&Rid
+:\mod;>sJi;uTbq<Vfbp=8c7t=oDP&>P_V(?2\+,?iFI4@JaO5A,^$9AcHBABDZBAC&MfCC]/)J
+D=h`>Ds_N.EVXYMF4k[3F89k;EW'qWF8U.ZFT?U`GQ2mfH2`+FH[L3hI=?WpJ:N3&K7ei1Knb>;
+Ll$tGMi<XUO,oBbP*2#nQ'IZ%R$a;1S"-%@StD\TT`q0cUnjiarhft!WN)u!X/u<&!j8`1rilF-
+!4)R0s0Vg6rO2a8s1&!;s186BrOi-Cs1\HHs1nZNrke]Qs2=oUs2G&ZrlG,]!6Y;as3(JfrltPj
+d/MDndaS3F!S,d#f*^0`g=k<9gtgfChu;OKiSrnXjQ,Fbk3(sll07L!lg4!*mI'uB!q>aMrpg-^
+o^r.Us7ZKerV6Bfs8)WirVZWmo)=4?L&ZZ~>
+JcC<$JcFj3mJd"]r;??erVHKgqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTjUOlK\B5s6'IGroX7B
+$0:.,io8qTi8<Djh.b[!g=k64f@JL%eC2jndEp1ac-4ASaiMQD`l5m6_SO%&^V.:m]=GJ^\$i]O
+Za6p@Yck43XK/A$WMl_lV50o^U7n6PSt;LCS"#k7R$a5+Q'IPrP*(ieO,f3ZN/W[PM2@%DL5(D8
+rdtc6JUi9#IsufoI!^3dH?jd\rc\TjF`heJF)uC$EW9tXDuOYSD#eDOC]A,LC&VfGBE)TCAHHCP
+A,]s;@/s^7?iOI4?2e+/>Q7n*=oVV(=8c2"<W5tp;uT\n;><ua:\[]P:&%EV9AW;<9DhKZ:&Ric
+:\moe;>sJi;uTbp<Vfbp=8l=t=oDP&>P_V'?2e1,?iFI4@JaO5A,g*:Ac?<@BDZBAC&VlCC]/)I
+D=_Z9DsVH1EVXYMF5:s6F89k>EVskVF8U.ZFoQXaGQ2mfH2`-iHN8HmI7/O6J:N3%JqJ]/Knb>;
+Ll$tGMi<USNfT6`P*2#nQ'IZ%R$a;1S"#q>StD[LTq\9VUnjiaVl-JmWN)u!XK8P+Y-+u-YlCs.
+ZMh-0ZiIN4[f<i:\GWo;])TD?]`5\F^AYhH_#M7L_Z.OR`;RXV`lH.!aT'?^b5TQcbg"E3c2l8<
+rm;,%e'lgre^i='f@\dUg&]s`rnS+Ahr*GOiSrnXjQ5Lck3(t-klL)8rp0^RmdC)C!V#XYo)J=]
+o`"O`pAamcq#C0hqYU0gr;HTbrdk*'s*t~>
+JcC<$JcFj3mJd"]r;??erVHKgqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTjUOlK\B5s6'IGroX7B
+$0:.,io8qTi8<Djh.b[!g=k64f@JL%eC2jndEp1ac-4ASaiMQD`l5m6_SO%&^V.:m]=GJ^\$i]O
+Za6p@Yck43XK/A$WMl_lV50o^U7n6PSt;LCS"#k7R$a5+Q'IPrP*(ieO,f3ZN/W[PM2@%DL5(D8
+rdtc6JUi9#IsufoI!^3dH?jd\rc\TjF`heJF)uC$EW9tXDuOYSD#eDOC]A,LC&VfGBE)TCAHHCP
+A,]s;@/s^7?iOI4?2e+/>Q7n*=oVV(=8c2"<W5tp;uT\n;><ua:\[]P:&%EV9AW;<9DhKZ:&Ric
+:\moe;>sJi;uTbp<Vfbp=8l=t=oDP&>P_V'?2e1,?iFI4@JaO5A,g*:Ac?<@BDZBAC&VlCC]/)I
+D=_Z9DsVH1EVXYMF5:s6F89k>EVskVF8U.ZFoQXaGQ2mfH2`-iHN8HmI7/O6J:N3%JqJ]/Knb>;
+Ll$tGMi<USNfT6`P*2#nQ'IZ%R$a;1S"#q>StD[LTq\9VUnjiaVl-JmWN)u!XK8P+Y-+u-YlCs.
+ZMh-0ZiIN4[f<i:\GWo;])TD?]`5\F^AYhH_#M7L_Z.OR`;RXV`lH.!aT'?^b5TQcbg"E3c2l8<
+rm;,%e'lgre^i='f@\dUg&]s`rnS+Ahr*GOiSrnXjQ5Lck3(t-klL)8rp0^RmdC)C!V#XYo)J=]
+o`"O`pAamcq#C0hqYU0gr;HTbrdk*'s*t~>
+JcC<$JcFj3mJd"]r;??erVHKgqY:'arq?6^rq-3]r:9jWs7#sTs6fpSrTjUOlK\B5s6'IGroX7B
+$0:.,io8qTi8<Djh.b[!g=k64f@JL%eC2jndEp1ac-4ASaiMQD`l5m6_SO%&^V.:m]=GJ^\$i]O
+Za6p@Yck43XK/A$WMl_lV50o^U7n6PSt;LCS"#k7R$a5+Q'IPrP*(ieO,f3ZN/W[PM2@%DL5(D8
+rdtc6JUi9#IsufoI!^3dH?jd\rc\TjF`heJF)uC$EW9tXDuOYSD#eDOC]A,LC&VfGBE)TCAHHCP
+A,]s;@/s^7?iOI4?2e+/>Q7n*=oVV(=8c2"<W5tp;uT\n;><ua:\[]P:&%EV9AW;<9DhKZ:&Ric
+:\moe;>sJi;uTbp<Vfbp=8l=t=oDP&>P_V'?2e1,?iFI4@JaO5A,g*:Ac?<@BDZBAC&VlCC]/)I
+D=_Z9DsVH1EVXYMF5:s6F89k>EVskVF8U.ZFoQXaGQ2mfH2`-iHN8HmI7/O6J:N3%JqJ]/Knb>;
+Ll$tGMi<USNfT6`P*2#nQ'IZ%R$a;1S"#q>StD[LTq\9VUnjiaVl-JmWN)u!XK8P+Y-+u-YlCs.
+ZMh-0ZiIN4[f<i:\GWo;])TD?]`5\F^AYhH_#M7L_Z.OR`;RXV`lH.!aT'?^b5TQcbg"E3c2l8<
+rm;,%e'lgre^i='f@\dUg&]s`rnS+Ahr*GOiSrnXjQ5Lck3(t-klL)8rp0^RmdC)C!V#XYo)J=]
+o`"O`pAamcq#C0hqYU0gr;HTbrdk*'s*t~>
+JcC<$JcFg2mf*(]r;??erVHKgqY:'arV$-]rq-6^qssdWrp]mTs6fpSrTsRM!:'OIH0FGSk2tde
+jQ#:[io/hRhqm2FgtUT;g=Y$/f%&:"e'cXkcd'h\bfe/NaN2E@`Pf[2_8*h"]tD"i\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS*MSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'iWf
+K7ec,JUi9#If=`rI!bj=#C1Q=GB\4RFoHL_Er^7[E<:)tDuOVUD/=%fCBA6bC&VcIB4bcTAcH9@
+A,]s;@K0a7?NOP>?2\"0>?Y5/=oVV(=8Z,!<W5tp;uT\n;>*i^:\RWP:&.KW9B8_A9DhKY:&[od
+:\moe;>jDh;uTbp<Vfbq=8c7s=oDP&>P_V'?2e1,?iFI4@JaO5A,^$:Ac?<@BDZB@C&VlDC]&#H
+D=DH/Dt.f8EVa_NF5V08F89kAEVskUF8U.[FoHR`GQ2pfH2`*jH[Pg@!IfOtJ2Dh/K7ei2L5(J>
+M2@+JN/WaVO,oBbP*2&pQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6ToWWB0%riH4(YPtd+YlM*.
+ZN@MA[JdQ6\,Wu:\c98@]DT>A^&GbE^]2+L_>V7N_uI[R`W*pXa8O'\ai_d*b6#o4c2Puhcd;[=
+("1R[eC<%!f%8O+f\,!4gYCT?h;7&ghuVfrro4%?jo4BCkNMp0!UB"MliHMArpTmV!:g'Zs766_
+rUp3as7cKes7uZjqtpBjr;H6dJcCE'J,~>
+JcC<$JcFg2mf*(]r;??erVHKgqY:'arV$-]rq-6^qssdWrp]mTs6fpSrTsRM!:'OIH0FGSk2tde
+jQ#:[io/hRhqm2FgtUT;g=Y$/f%&:"e'cXkcd'h\bfe/NaN2E@`Pf[2_8*h"]tD"i\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS*MSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'iWf
+K7ec,JUi9#If=`rI!bj=#C1Q=GB\4RFoHL_Er^7[E<:)tDuOVUD/=%fCBA6bC&VcIB4bcTAcH9@
+A,]s;@K0a7?NOP>?2\"0>?Y5/=oVV(=8Z,!<W5tp;uT\n;>*i^:\RWP:&.KW9B8_A9DhKY:&[od
+:\moe;>jDh;uTbp<Vfbq=8c7s=oDP&>P_V'?2e1,?iFI4@JaO5A,^$:Ac?<@BDZB@C&VlDC]&#H
+D=DH/Dt.f8EVa_NF5V08F89kAEVskUF8U.[FoHR`GQ2pfH2`*jH[Pg@!IfOtJ2Dh/K7ei2L5(J>
+M2@+JN/WaVO,oBbP*2&pQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6ToWWB0%riH4(YPtd+YlM*.
+ZN@MA[JdQ6\,Wu:\c98@]DT>A^&GbE^]2+L_>V7N_uI[R`W*pXa8O'\ai_d*b6#o4c2Puhcd;[=
+("1R[eC<%!f%8O+f\,!4gYCT?h;7&ghuVfrro4%?jo4BCkNMp0!UB"MliHMArpTmV!:g'Zs766_
+rUp3as7cKes7uZjqtpBjr;H6dJcCE'J,~>
+JcC<$JcFg2mf*(]r;??erVHKgqY:'arV$-]rq-6^qssdWrp]mTs6fpSrTsRM!:'OIH0FGSk2tde
+jQ#:[io/hRhqm2FgtUT;g=Y$/f%&:"e'cXkcd'h\bfe/NaN2E@`Pf[2_8*h"]tD"i\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS*MSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRMM26rdL'iWf
+K7ec,JUi9#If=`rI!bj=#C1Q=GB\4RFoHL_Er^7[E<:)tDuOVUD/=%fCBA6bC&VcIB4bcTAcH9@
+A,]s;@K0a7?NOP>?2\"0>?Y5/=oVV(=8Z,!<W5tp;uT\n;>*i^:\RWP:&.KW9B8_A9DhKY:&[od
+:\moe;>jDh;uTbp<Vfbq=8c7s=oDP&>P_V'?2e1,?iFI4@JaO5A,^$:Ac?<@BDZB@C&VlDC]&#H
+D=DH/Dt.f8EVa_NF5V08F89kAEVskUF8U.[FoHR`GQ2pfH2`*jH[Pg@!IfOtJ2Dh/K7ei2L5(J>
+M2@+JN/WaVO,oBbP*2&pQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6ToWWB0%riH4(YPtd+YlM*.
+ZN@MA[JdQ6\,Wu:\c98@]DT>A^&GbE^]2+L_>V7N_uI[R`W*pXa8O'\ai_d*b6#o4c2Puhcd;[=
+("1R[eC<%!f%8O+f\,!4gYCT?h;7&ghuVfrro4%?jo4BCkNMp0!UB"MliHMArpTmV!:g'Zs766_
+rUp3as7cKes7uZjqtpBjr;H6dJcCE'J,~>
+JcC<$JcFd1mJd"]r;??erVHKgqY:$`rq?6^rq-3]r:9jWs7#sTs6fpSrp9[Ns6BUJId#tXk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`PfX1_8*h"]tD"h\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS-OSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRNM2@%DL5(D8
+rdt6'Jc:0#It%BF!IT7nH3&;9rceBc!-S9_!crC&rc&!YDf>Vm!GuZPC]A,LC&M]HB4bcTAHHCP
+A,]p=@:3LB?iOI4?2e+/>Q7n*=oVV(=8Z,!<W5tp;uKVl;>!c\:\[]R:&.KW9Bo.F9DhKY:&Rid
+:\did;>sJi;uK\p<V]\p=8c7s=oDP&>PVP'?2\++?iFI4@JaO5A,g*:Ac?<@BDZBAC&MfCC]&#H
+D=)6(DtJ#=EVa_NF5qB:F8'_FEVa_SF8L(ZFoQX`GQ2pfH2`*jH[Pg@6[jN7J:N3&K7ei2Knb>;
+Ll$tGN/WaVO,oBbP*2#nQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6SpWiN2%Xf\b/YPta-Z*L\7
+ZN@MA[JmW7\,Wu:\c02?]D]DB^&GbE^])%K_>V7N_uI[R`W*sXa8X0[aT0K^b6Q89c-FV\cd;[=
+0@J=ueC<%!f%8O+f\,!4gY:N>h;7#Gi8ESRioB([jlPXekNM-ol0@U#m-O-,mf)YVnF?&JncJFT
+o_nFap@n=Zq#C0iqYU0gr;HTbrdk*&s*t~>
+JcC<$JcFd1mJd"]r;??erVHKgqY:$`rq?6^rq-3]r:9jWs7#sTs6fpSrp9[Ns6BUJId#tXk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`PfX1_8*h"]tD"h\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS-OSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRNM2@%DL5(D8
+rdt6'Jc:0#It%BF!IT7nH3&;9rceBc!-S9_!crC&rc&!YDf>Vm!GuZPC]A,LC&M]HB4bcTAHHCP
+A,]p=@:3LB?iOI4?2e+/>Q7n*=oVV(=8Z,!<W5tp;uKVl;>!c\:\[]R:&.KW9Bo.F9DhKY:&Rid
+:\did;>sJi;uK\p<V]\p=8c7s=oDP&>PVP'?2\++?iFI4@JaO5A,g*:Ac?<@BDZBAC&MfCC]&#H
+D=)6(DtJ#=EVa_NF5qB:F8'_FEVa_SF8L(ZFoQX`GQ2pfH2`*jH[Pg@6[jN7J:N3&K7ei2Knb>;
+Ll$tGN/WaVO,oBbP*2#nQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6SpWiN2%Xf\b/YPta-Z*L\7
+ZN@MA[JmW7\,Wu:\c02?]D]DB^&GbE^])%K_>V7N_uI[R`W*sXa8X0[aT0K^b6Q89c-FV\cd;[=
+0@J=ueC<%!f%8O+f\,!4gY:N>h;7#Gi8ESRioB([jlPXekNM-ol0@U#m-O-,mf)YVnF?&JncJFT
+o_nFap@n=Zq#C0iqYU0gr;HTbrdk*&s*t~>
+JcC<$JcFd1mJd"]r;??erVHKgqY:$`rq?6^rq-3]r:9jWs7#sTs6fpSrp9[Ns6BUJId#tXk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'cXjcd'h\bfe/NaN2B?`PfX1_8*h"]tD"h\[f5Z[^EKK
+Za$a=YHG"/X/`2!W2HMhUnjc[TqS-OSt2C@S!ob4R$X,(Q'@JqP*(ieO,f3YN/NRNM2@%DL5(D8
+rdt6'Jc:0#It%BF!IT7nH3&;9rceBc!-S9_!crC&rc&!YDf>Vm!GuZPC]A,LC&M]HB4bcTAHHCP
+A,]p=@:3LB?iOI4?2e+/>Q7n*=oVV(=8Z,!<W5tp;uKVl;>!c\:\[]R:&.KW9Bo.F9DhKY:&Rid
+:\did;>sJi;uK\p<V]\p=8c7s=oDP&>PVP'?2\++?iFI4@JaO5A,g*:Ac?<@BDZBAC&MfCC]&#H
+D=)6(DtJ#=EVa_NF5qB:F8'_FEVa_SF8L(ZFoQX`GQ2pfH2`*jH[Pg@6[jN7J:N3&K7ei2Knb>;
+Ll$tGN/WaVO,oBbP*2#nQ'Rc(R$jD4S"-%@StD[LTq\<XUnsrdVl6SpWiN2%Xf\b/YPta-Z*L\7
+ZN@MA[JmW7\,Wu:\c02?]D]DB^&GbE^])%K_>V7N_uI[R`W*sXa8X0[aT0K^b6Q89c-FV\cd;[=
+0@J=ueC<%!f%8O+f\,!4gY:N>h;7#Gi8ESRioB([jlPXekNM-ol0@U#m-O-,mf)YVnF?&JncJFT
+o_nFap@n=Zq#C0iqYU0gr;HTbrdk*&s*t~>
+JcC<$JcFa0mf*(]r;?<drVHKgqY:'arV$-]rq-3]r:9mXrp]mTs6fpSrTjUOlK\B5HKaPTk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'ZRicd'h[bKJ&MaN)<>`P]R0_8*h"]tCtg\[f5Y[^EKK
+Za$a=YHG"/X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(Q'@JqP*(lgO,o<\N/W[PM2@%Dre;/A
+KS+o/JUr?%IsuipI=-BgH?sj^GlDmlG'.qLFE;MDrc.sW!,qjS!c;airbDRMBkdQ[!bZ+Wrac.A
+@q5LIs'Yn8rEfV4?![G7s',M,rE9/&s&],!r`/qsqG[>jr)*&^pJ:QZnP/gQoh4pLpIkBWpeC]^
+rD38dr_`VlqG[AmrDi\prE&r"q-!Z"rEK)&rE]D/qHs50raG\5raYq<qdob=s(D1Arb;@Hq.onE
+qebD3lYlN:no=MHpN,M>p2f87rH%gWs)n?brHJ9ds*=Ti7sfW2I=6QnIt3'#JV&N,KS>/8LPUeD
+MMmFPNK0'\OcklkPa.N"Q^F20S"#q=St;RITqS3UUnjiaVl-JmWiE,$XKAV-YPtd+YlM*/ZN@MA
+[JmW7\,Wu:\c98@]DT>A^&PhE^]2+L_>M1M_uI[R`W*sXa8O'\ai_d*bQ#cdc2Q#gcN)>kdJqVp
+e,Ihte^j`O!SH*)g&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/rojIKli-5PmI'EAmfN"Knc&(\oCV\S
+p&Facp\jmdq>^<gqu-HkrUTr=s+LE&~>
+JcC<$JcFa0mf*(]r;?<drVHKgqY:'arV$-]rq-3]r:9mXrp]mTs6fpSrTjUOlK\B5HKaPTk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'ZRicd'h[bKJ&MaN)<>`P]R0_8*h"]tCtg\[f5Y[^EKK
+Za$a=YHG"/X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(Q'@JqP*(lgO,o<\N/W[PM2@%Dre;/A
+KS+o/JUr?%IsuipI=-BgH?sj^GlDmlG'.qLFE;MDrc.sW!,qjS!c;airbDRMBkdQ[!bZ+Wrac.A
+@q5LIs'Yn8rEfV4?![G7s',M,rE9/&s&],!r`/qsqG[>jr)*&^pJ:QZnP/gQoh4pLpIkBWpeC]^
+rD38dr_`VlqG[AmrDi\prE&r"q-!Z"rEK)&rE]D/qHs50raG\5raYq<qdob=s(D1Arb;@Hq.onE
+qebD3lYlN:no=MHpN,M>p2f87rH%gWs)n?brHJ9ds*=Ti7sfW2I=6QnIt3'#JV&N,KS>/8LPUeD
+MMmFPNK0'\OcklkPa.N"Q^F20S"#q=St;RITqS3UUnjiaVl-JmWiE,$XKAV-YPtd+YlM*/ZN@MA
+[JmW7\,Wu:\c98@]DT>A^&PhE^]2+L_>M1M_uI[R`W*sXa8O'\ai_d*bQ#cdc2Q#gcN)>kdJqVp
+e,Ihte^j`O!SH*)g&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/rojIKli-5PmI'EAmfN"Knc&(\oCV\S
+p&Facp\jmdq>^<gqu-HkrUTr=s+LE&~>
+JcC<$JcFa0mf*(]r;?<drVHKgqY:'arV$-]rq-3]r:9mXrp]mTs6fpSrTjUOlK\B5HKaPTk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"e'ZRicd'h[bKJ&MaN)<>`P]R0_8*h"]tCtg\[f5Y[^EKK
+Za$a=YHG"/X/`2!W2HPiUnjc[TqS-OSt;LCS"#k7R$X,(Q'@JqP*(lgO,o<\N/W[PM2@%Dre;/A
+KS+o/JUr?%IsuipI=-BgH?sj^GlDmlG'.qLFE;MDrc.sW!,qjS!c;airbDRMBkdQ[!bZ+Wrac.A
+@q5LIs'Yn8rEfV4?![G7s',M,rE9/&s&],!r`/qsqG[>jr)*&^pJ:QZnP/gQoh4pLpIkBWpeC]^
+rD38dr_`VlqG[AmrDi\prE&r"q-!Z"rEK)&rE]D/qHs50raG\5raYq<qdob=s(D1Arb;@Hq.onE
+qebD3lYlN:no=MHpN,M>p2f87rH%gWs)n?brHJ9ds*=Ti7sfW2I=6QnIt3'#JV&N,KS>/8LPUeD
+MMmFPNK0'\OcklkPa.N"Q^F20S"#q=St;RITqS3UUnjiaVl-JmWiE,$XKAV-YPtd+YlM*/ZN@MA
+[JmW7\,Wu:\c98@]DT>A^&PhE^]2+L_>M1M_uI[R`W*sXa8O'\ai_d*bQ#cdc2Q#gcN)>kdJqVp
+e,Ihte^j`O!SH*)g&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/rojIKli-5PmI'EAmfN"Knc&(\oCV\S
+p&Facp\jmdq>^<gqu-HkrUTr=s+LE&~>
+JcC<$JcFa0mJct\r;?<drVHKgqY:$`rq?3]rq-6^qssdWs7$!Us6fpSrTjUOlK\B5!pJh1roS[k
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"da?Ihcd'eZbKJ&MaN)<>`P]R0_8!b!]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50l\TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PMM[1GLPCP;
+KS4u1Jq<oO!IoRtI0"_Brd"WkG^043!HrVbF96N(ErL%[E,T[oD?4TjrbMOK!,;FGs(;=Dral+?
+!+Yt:!b#JEra5\3!+#P.s',M,rE9/&s&],!r`/qsqG[;iqbcl[peU]\nkJpRj%K5BpeC]^rD38d
+rDEPlqG[>lr`/bprE&r"q-!Z"rEK)&rE]A.qd9;0raG\5raYq<r+5k>rb)+ArFu7GphTeDqJFo'
+oPaPEo5XSHpiGV?olKD=qfDUUrcS6arHJ9ds*=Ti!df<Brd=frJ,XsWJV&N,KS>/8LPUeDMMmFP
+NK0'\OHG]iPa.N"Q^F/.R[]h<St;RITqS3UUnjiaVl-JmWiE,$riH4(YPta,Z*OA8s0Md6rjMj9
+s1&$<s186BrOi0Ds1\EGs1nWMrPJQOs2=lTs2P)ZrQ,#\!6Y8`!mJp6rm(Pi!7:_m!n,QHrmUu!
+f)F8Df\+s3g=tE<h;-rFhr*GOio9"YjQ5Lck3(pkl07Kuli-5OmI'uBs6p$Yrpp*\s7H<`s7ZKe
+rV6Bfs8)WirVZWmo)=4?K`?Q~>
+JcC<$JcFa0mJct\r;?<drVHKgqY:$`rq?3]rq-6^qssdWs7$!Us6fpSrTjUOlK\B5!pJh1roS[k
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"da?Ihcd'eZbKJ&MaN)<>`P]R0_8!b!]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50l\TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PMM[1GLPCP;
+KS4u1Jq<oO!IoRtI0"_Brd"WkG^043!HrVbF96N(ErL%[E,T[oD?4TjrbMOK!,;FGs(;=Dral+?
+!+Yt:!b#JEra5\3!+#P.s',M,rE9/&s&],!r`/qsqG[;iqbcl[peU]\nkJpRj%K5BpeC]^rD38d
+rDEPlqG[>lr`/bprE&r"q-!Z"rEK)&rE]A.qd9;0raG\5raYq<r+5k>rb)+ArFu7GphTeDqJFo'
+oPaPEo5XSHpiGV?olKD=qfDUUrcS6arHJ9ds*=Ti!df<Brd=frJ,XsWJV&N,KS>/8LPUeDMMmFP
+NK0'\OHG]iPa.N"Q^F/.R[]h<St;RITqS3UUnjiaVl-JmWiE,$riH4(YPta,Z*OA8s0Md6rjMj9
+s1&$<s186BrOi0Ds1\EGs1nWMrPJQOs2=lTs2P)ZrQ,#\!6Y8`!mJp6rm(Pi!7:_m!n,QHrmUu!
+f)F8Df\+s3g=tE<h;-rFhr*GOio9"YjQ5Lck3(pkl07Kuli-5OmI'uBs6p$Yrpp*\s7H<`s7ZKe
+rV6Bfs8)WirVZWmo)=4?K`?Q~>
+JcC<$JcFa0mJct\r;?<drVHKgqY:$`rq?3]rq-6^qssdWs7$!Us6fpSrTjUOlK\B5!pJh1roS[k
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:"da?Ihcd'eZbKJ&MaN)<>`P]R0_8!b!]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50l\TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhO,o<\N/W[PMM[1GLPCP;
+KS4u1Jq<oO!IoRtI0"_Brd"WkG^043!HrVbF96N(ErL%[E,T[oD?4TjrbMOK!,;FGs(;=Dral+?
+!+Yt:!b#JEra5\3!+#P.s',M,rE9/&s&],!r`/qsqG[;iqbcl[peU]\nkJpRj%K5BpeC]^rD38d
+rDEPlqG[>lr`/bprE&r"q-!Z"rEK)&rE]A.qd9;0raG\5raYq<r+5k>rb)+ArFu7GphTeDqJFo'
+oPaPEo5XSHpiGV?olKD=qfDUUrcS6arHJ9ds*=Ti!df<Brd=frJ,XsWJV&N,KS>/8LPUeDMMmFP
+NK0'\OHG]iPa.N"Q^F/.R[]h<St;RITqS3UUnjiaVl-JmWiE,$riH4(YPta,Z*OA8s0Md6rjMj9
+s1&$<s186BrOi0Ds1\EGs1nWMrPJQOs2=lTs2P)ZrQ,#\!6Y8`!mJp6rm(Pi!7:_m!n,QHrmUu!
+f)F8Df\+s3g=tE<h;-rFhr*GOio9"YjQ5Lck3(pkl07Kuli-5OmI'uBs6p$Yrpp*\s7H<`s7ZKe
+rV6Bfs8)WirVZWmo)=4?K`?Q~>
+JcC<$JcF[.mf*(]r;?<drVHKgq=ss`rV$-]rq-3]r:9mXrp]mTs6]mSrTsRM!:'RJDWp9Hk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50o^TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhrf7PLNJrgSMM[1GLPLV=
+KnTGX$\Eq[J:E&tI=6KjHiA<lH$K=4s)nBbrcA0^ErL(YDuahUD?=ZkD#S2OC2%D]BEDgYB)Z?C
+A7K-K@KKtG@/aO5?N4=1>lS%.>5_V'=T;J#<rQ+t<;BJj;Yj8[;#*o`:@_-S9^5:I9_V9Z:B"&b
+;#X>j;Yj>k<;fhn<rH+u=SQ%t>5VV#>lJ%-?M\%.@/aU3@fBm:AG]s;B)ZH?B`;`ECA;TBD#%qu
+DYA#FE:\)GEqaY=FRjMEEqsePFT6L_G5ZXbGlN'gHN/<lI/\NpIXh?I7Y-/DK7no3L5(J>M2@+J
+N/`jYO-#KeP*;,qQC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YHP17Z*L[AZa@*IrjMj9
+s1&'=s186BrOi0Ds1\EGs1nWMr5/KOs2=iSs2P)ZrQ,#\s2t>as31MfrltSkd*Vd>!n,QHrmV2'
+f%/I)f\"mVg&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/roj[Qlg*p(mHs?@n,MkWnc&+Zo)SF]p&Fac
+p\jmeq>U6fqu-HkrUTr=s+LE&~>
+JcC<$JcF[.mf*(]r;?<drVHKgq=ss`rV$-]rq-3]r:9mXrp]mTs6]mSrTsRM!:'RJDWp9Hk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50o^TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhrf7PLNJrgSMM[1GLPLV=
+KnTGX$\Eq[J:E&tI=6KjHiA<lH$K=4s)nBbrcA0^ErL(YDuahUD?=ZkD#S2OC2%D]BEDgYB)Z?C
+A7K-K@KKtG@/aO5?N4=1>lS%.>5_V'=T;J#<rQ+t<;BJj;Yj8[;#*o`:@_-S9^5:I9_V9Z:B"&b
+;#X>j;Yj>k<;fhn<rH+u=SQ%t>5VV#>lJ%-?M\%.@/aU3@fBm:AG]s;B)ZH?B`;`ECA;TBD#%qu
+DYA#FE:\)GEqaY=FRjMEEqsePFT6L_G5ZXbGlN'gHN/<lI/\NpIXh?I7Y-/DK7no3L5(J>M2@+J
+N/`jYO-#KeP*;,qQC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YHP17Z*L[AZa@*IrjMj9
+s1&'=s186BrOi0Ds1\EGs1nWMr5/KOs2=iSs2P)ZrQ,#\s2t>as31MfrltSkd*Vd>!n,QHrmV2'
+f%/I)f\"mVg&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/roj[Qlg*p(mHs?@n,MkWnc&+Zo)SF]p&Fac
+p\jmeq>U6fqu-HkrUTr=s+LE&~>
+JcC<$JcF[.mf*(]r;?<drVHKgq=ss`rV$-]rq-3]r:9mXrp]mTs6]mSrTsRM!:'RJDWp9Hk2tde
+jQ#:[io/hRhqm2FgtUQ:g"=p.f%&:!da?Ihcd'eZbKJ&LaN)<>`5BI/^q[Xu]tCtg\[f5Y[^EKK
+Za$a=YHG"0X/`2!W2HPjV50o^TqS-OSt;LCS"#k7R$a5+Q'IStP*1rhrf7PLNJrgSMM[1GLPLV=
+KnTGX$\Eq[J:E&tI=6KjHiA<lH$K=4s)nBbrcA0^ErL(YDuahUD?=ZkD#S2OC2%D]BEDgYB)Z?C
+A7K-K@KKtG@/aO5?N4=1>lS%.>5_V'=T;J#<rQ+t<;BJj;Yj8[;#*o`:@_-S9^5:I9_V9Z:B"&b
+;#X>j;Yj>k<;fhn<rH+u=SQ%t>5VV#>lJ%-?M\%.@/aU3@fBm:AG]s;B)ZH?B`;`ECA;TBD#%qu
+DYA#FE:\)GEqaY=FRjMEEqsePFT6L_G5ZXbGlN'gHN/<lI/\NpIXh?I7Y-/DK7no3L5(J>M2@+J
+N/`jYO-#KeP*;,qQC!u+R@9V7SXuFFTV8'RUSO]^VPg>jWN)u!XKAV-YHP17Z*L[AZa@*IrjMj9
+s1&'=s186BrOi0Ds1\EGs1nWMr5/KOs2=iSs2P)ZrQ,#\s2t>as31MfrltSkd*Vd>!n,QHrmV2'
+f%/I)f\"mVg&]s`rnRV3hu;O7iSsjs!T`AAjoOZ/roj[Qlg*p(mHs?@n,MkWnc&+Zo)SF]p&Fac
+p\jmeq>U6fqu-HkrUTr=s+LE&~>
+JcC<$JcFX-mf*(]qu$6dr;-Bfq=ss`rV$-]rq-6^r:9jWs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbbhqm2FgtUQ:g"=p-e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Xu]Y(kf\[f2X[^EKK
+ZE^X<YHG"0XK&;"W2HPjV50o^U7n9RT:VXFS"#k7R$a5,QBd`"PEM)kOH5H_NJrgSMMd7ILkg_>
+KnY24K7\Z*J:N,uIXQWls*Ocls*4Thrc\TjF`heJF)uC$E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9s'Yh5s'>\2rETA,s'#A(s&f8%r)Wbrr`&Ykqbm5enPK$WqG-WVp.Y'Npe:BUrD*;e
+q,%&frDNJjrD`brq,[GqrE/htrEB,'q-<l(ra,G.ra>\5qdTP7s()"<rau.BqIokBrG)+CqeZ(F
+dVehuqJc(HqJu=OkB,a*pN6CWs*"<as*4Qhrd+Tk!.=co#(D&OJ:N3&re!+^Knb>;Ll$tGMi<US
+NfT9aP*2#nQ'IZ&R$jD4S"-%@T:hmOU8+N[V5C/gW2ZesX/rG*Y-7i/!O8s0ZN@MA[JmT9\%&sI
+\c98@]D]DB^&PhF^])%K_>M1M_u@UQ`W!mWa8O*ZaoBN^b6#o4c2Q#gci;Akd/qbFe,Ii%e^i='
+f@\a/rn7D-h#?+AhV[5Ki8N\Tj5]4]jlY^gkNMp0!UB"MliQSBmf)YVnF?&JncJFTo_nI_pAamc
+q#C0hqYU0hr;?Nbrdk*%s*t~>
+JcC<$JcFX-mf*(]qu$6dr;-Bfq=ss`rV$-]rq-6^r:9jWs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbbhqm2FgtUQ:g"=p-e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Xu]Y(kf\[f2X[^EKK
+ZE^X<YHG"0XK&;"W2HPjV50o^U7n9RT:VXFS"#k7R$a5,QBd`"PEM)kOH5H_NJrgSMMd7ILkg_>
+KnY24K7\Z*J:N,uIXQWls*Ocls*4Thrc\TjF`heJF)uC$E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9s'Yh5s'>\2rETA,s'#A(s&f8%r)Wbrr`&Ykqbm5enPK$WqG-WVp.Y'Npe:BUrD*;e
+q,%&frDNJjrD`brq,[GqrE/htrEB,'q-<l(ra,G.ra>\5qdTP7s()"<rau.BqIokBrG)+CqeZ(F
+dVehuqJc(HqJu=OkB,a*pN6CWs*"<as*4Qhrd+Tk!.=co#(D&OJ:N3&re!+^Knb>;Ll$tGMi<US
+NfT9aP*2#nQ'IZ&R$jD4S"-%@T:hmOU8+N[V5C/gW2ZesX/rG*Y-7i/!O8s0ZN@MA[JmT9\%&sI
+\c98@]D]DB^&PhF^])%K_>M1M_u@UQ`W!mWa8O*ZaoBN^b6#o4c2Q#gci;Akd/qbFe,Ii%e^i='
+f@\a/rn7D-h#?+AhV[5Ki8N\Tj5]4]jlY^gkNMp0!UB"MliQSBmf)YVnF?&JncJFTo_nI_pAamc
+q#C0hqYU0hr;?Nbrdk*%s*t~>
+JcC<$JcFX-mf*(]qu$6dr;-Bfq=ss`rV$-]rq-6^r:9jWs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbbhqm2FgtUQ:g"=p-e^W*tda?IgcHa\YbK@rJaN)9=`5BI.^q[Xu]Y(kf\[f2X[^EKK
+ZE^X<YHG"0XK&;"W2HPjV50o^U7n9RT:VXFS"#k7R$a5,QBd`"PEM)kOH5H_NJrgSMMd7ILkg_>
+KnY24K7\Z*J:N,uIXQWls*Ocls*4Thrc\TjF`heJF)uC$E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9s'Yh5s'>\2rETA,s'#A(s&f8%r)Wbrr`&Ykqbm5enPK$WqG-WVp.Y'Npe:BUrD*;e
+q,%&frDNJjrD`brq,[GqrE/htrEB,'q-<l(ra,G.ra>\5qdTP7s()"<rau.BqIokBrG)+CqeZ(F
+dVehuqJc(HqJu=OkB,a*pN6CWs*"<as*4Qhrd+Tk!.=co#(D&OJ:N3&re!+^Knb>;Ll$tGMi<US
+NfT9aP*2#nQ'IZ&R$jD4S"-%@T:hmOU8+N[V5C/gW2ZesX/rG*Y-7i/!O8s0ZN@MA[JmT9\%&sI
+\c98@]D]DB^&PhF^])%K_>M1M_u@UQ`W!mWa8O*ZaoBN^b6#o4c2Q#gci;Akd/qbFe,Ii%e^i='
+f@\a/rn7D-h#?+AhV[5Ki8N\Tj5]4]jlY^gkNMp0!UB"MliQSBmf)YVnF?&JncJFTo_nI_pAamc
+q#C0hqYU0hr;?Nbrdk*%s*t~>
+JcC<$JcFU,mJd"]qu$3crVHKgq=sp_rq?6^rq-3]r:9mXs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbChqm2FgtUQ:g"4j,e^W*tda?FfcHa\YbK@rJaMu3<`5BI.^q[Xu]Y(kf\[f2X[^EKK
+Za$a=YHG"0XK/A#W2HPjV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)kOT(:NNfB!VMi*@JLkph@
+L4t<[K)pRTrdY$!If=`rI!bj=!dT$8rc\BdFoHIaF)l=#E<1#srbhaQ!,VXM!buF`rb)@GAnM$R
+!b>eNraGq;?srt@s'G_2rETA,s'#A(s&f8%qc<\rrD`JhqGR,dnkf0YqbH]Vj@o8Ar(d2dqG@,f
+r_iSkrD`_qq,[GqrE/htrEB,'q-<l(rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)+CqJ>kBdr+u"
+qf)1IqJu@Pj)j[0olU.Trc\6arcnHgrd+Tk!.=co5^n34J:N3&JqJ]/Knb>;Ll$tGMi<USNfT6_
+OckomQ'IZ%R$a>3S"-%@StD^MU8+N[V5C/gW2ZesX/rG*Y-7i/#-kJ?Za@*IrjDm;\@DOKs186B
+rk/9Es1\EGs1nWMrPJQOs2=iSs2P&YrQ,#\s2t;`s31Mfrm(Pi!7:\l!n,QHrmV2'f%/I)f\"mV
+g'?BfgtgfChV\=j!TE&;irS6&roOIKkih9qlK[^7liHMArpTmV!:g$Y!qZ'Vrq6<bs7cHds7uZj
+qtpBjr;H6dJcCB&J,~>
+JcC<$JcFU,mJd"]qu$3crVHKgq=sp_rq?6^rq-3]r:9mXs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbChqm2FgtUQ:g"4j,e^W*tda?FfcHa\YbK@rJaMu3<`5BI.^q[Xu]Y(kf\[f2X[^EKK
+Za$a=YHG"0XK/A#W2HPjV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)kOT(:NNfB!VMi*@JLkph@
+L4t<[K)pRTrdY$!If=`rI!bj=!dT$8rc\BdFoHIaF)l=#E<1#srbhaQ!,VXM!buF`rb)@GAnM$R
+!b>eNraGq;?srt@s'G_2rETA,s'#A(s&f8%qc<\rrD`JhqGR,dnkf0YqbH]Vj@o8Ar(d2dqG@,f
+r_iSkrD`_qq,[GqrE/htrEB,'q-<l(rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)+CqJ>kBdr+u"
+qf)1IqJu@Pj)j[0olU.Trc\6arcnHgrd+Tk!.=co5^n34J:N3&JqJ]/Knb>;Ll$tGMi<USNfT6_
+OckomQ'IZ%R$a>3S"-%@StD^MU8+N[V5C/gW2ZesX/rG*Y-7i/#-kJ?Za@*IrjDm;\@DOKs186B
+rk/9Es1\EGs1nWMrPJQOs2=iSs2P&YrQ,#\s2t;`s31Mfrm(Pi!7:\l!n,QHrmV2'f%/I)f\"mV
+g'?BfgtgfChV\=j!TE&;irS6&roOIKkih9qlK[^7liHMArpTmV!:g$Y!qZ'Vrq6<bs7cHds7uZj
+qtpBjr;H6dJcCB&J,~>
+JcC<$JcFU,mJd"]qu$3crVHKgq=sp_rq?6^rq-3]r:9mXs7$!Us6fpSrp9[N!:'RJs6'dPk2tde
+jQ#:[iVqbChqm2FgtUQ:g"4j,e^W*tda?FfcHa\YbK@rJaMu3<`5BI.^q[Xu]Y(kf\[f2X[^EKK
+Za$a=YHG"0XK/A#W2HPjV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEM)kOT(:NNfB!VMi*@JLkph@
+L4t<[K)pRTrdY$!If=`rI!bj=!dT$8rc\BdFoHIaF)l=#E<1#srbhaQ!,VXM!buF`rb)@GAnM$R
+!b>eNraGq;?srt@s'G_2rETA,s'#A(s&f8%qc<\rrD`JhqGR,dnkf0YqbH]Vj@o8Ar(d2dqG@,f
+r_iSkrD`_qq,[GqrE/htrEB,'q-<l(rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)+CqJ>kBdr+u"
+qf)1IqJu@Pj)j[0olU.Trc\6arcnHgrd+Tk!.=co5^n34J:N3&JqJ]/Knb>;Ll$tGMi<USNfT6_
+OckomQ'IZ%R$a>3S"-%@StD^MU8+N[V5C/gW2ZesX/rG*Y-7i/#-kJ?Za@*IrjDm;\@DOKs186B
+rk/9Es1\EGs1nWMrPJQOs2=iSs2P&YrQ,#\s2t;`s31Mfrm(Pi!7:\l!n,QHrmV2'f%/I)f\"mV
+g'?BfgtgfChV\=j!TE&;irS6&roOIKkih9qlK[^7liHMArpTmV!:g$Y!qZ'Vrq6<bs7cHds7uZj
+qtpBjr;H6dJcCB&J,~>
+JcC<$JcFR+mJct\r;?<dr;-Bfq=sp_rq?6^rq-3]rUTsXs7$!U!q,ICrp9[N!:'RJs6+gmk2tde
+jQ#:[iS`YOhVR)EgtLK8f[na+e^W*tdF$=ecHa\XbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMcYkV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEV/mOcYWbNfB!VMi3ILM26rd
+L(K&lK7ec-JUi9#IsufoI!g;?H3&;9rc\EeF`m\*!HW;\E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9!+>b4s'>\2rETA,s'#>'s&f8%qc<Yqr)EAgq,7#co2,<[qG-TUlV-qFrD*8dqG@,f
+r_iSkrD`_qq,[GqrE/esrEB,'pg!c'rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)(BqJ>P9g2?b*
+qf)4Jqf;FPa)q9&rc\3`s*4QhrHeKj!.=cos*b9(J:N3%JqJ]/L&QflLPUeDMMmFQNfT6_Ocklk
+Pa.Q$R$a;1S"-%@StD[LTqeEZV5C/gW2ZesX/rG*Y-5(6Z*CU@Za@-J[^NZS\Gj&=])TDA]`5\F
+^AYhH_#M7K_Z%IQ`;IUS`r=$WaSs<]b5KN`bl>recMu5jd/MGmdK%bpe-FOTf%8O+f\-8X!o)Mc
+rnRV3hu;OBiSrkWj5f=`k2tjikl0fOlKdd&m-X3.rpTmV!:g'Zs7?9_rq6<bs7cKerqZTjqtp?i
+r;H6dJcCB&J,~>
+JcC<$JcFR+mJct\r;?<dr;-Bfq=sp_rq?6^rq-3]rUTsXs7$!U!q,ICrp9[N!:'RJs6+gmk2tde
+jQ#:[iS`YOhVR)EgtLK8f[na+e^W*tdF$=ecHa\XbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMcYkV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEV/mOcYWbNfB!VMi3ILM26rd
+L(K&lK7ec-JUi9#IsufoI!g;?H3&;9rc\EeF`m\*!HW;\E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9!+>b4s'>\2rETA,s'#>'s&f8%qc<Yqr)EAgq,7#co2,<[qG-TUlV-qFrD*8dqG@,f
+r_iSkrD`_qq,[GqrE/esrEB,'pg!c'rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)(BqJ>P9g2?b*
+qf)4Jqf;FPa)q9&rc\3`s*4QhrHeKj!.=cos*b9(J:N3%JqJ]/L&QflLPUeDMMmFQNfT6_Ocklk
+Pa.Q$R$a;1S"-%@StD[LTqeEZV5C/gW2ZesX/rG*Y-5(6Z*CU@Za@-J[^NZS\Gj&=])TDA]`5\F
+^AYhH_#M7K_Z%IQ`;IUS`r=$WaSs<]b5KN`bl>recMu5jd/MGmdK%bpe-FOTf%8O+f\-8X!o)Mc
+rnRV3hu;OBiSrkWj5f=`k2tjikl0fOlKdd&m-X3.rpTmV!:g'Zs7?9_rq6<bs7cKerqZTjqtp?i
+r;H6dJcCB&J,~>
+JcC<$JcFR+mJct\r;?<dr;-Bfq=sp_rq?6^rq-3]rUTsXs7$!U!q,ICrp9[N!:'RJs6+gmk2tde
+jQ#:[iS`YOhVR)EgtLK8f[na+e^W*tdF$=ecHa\XbK@rJa2Z*;`5BI.^q[Xt]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMcYkV50o^U7n9RT:VXFS=?":R@'A.QBd`"PEV/mOcYWbNfB!VMi3ILM26rd
+L(K&lK7ec-JUi9#IsufoI!g;?H3&;9rc\EeF`m\*!HW;\E<:)tDuOVTD/B2es(VOJrb2=E!+u4A
+s'u+>raPn9!+>b4s'>\2rETA,s'#>'s&f8%qc<Yqr)EAgq,7#co2,<[qG-TUlV-qFrD*8dqG@,f
+r_iSkrD`_qq,[GqrE/esrEB,'pg!c'rEf>-ra>_6qdTP7rabn;rau.Bqe5qBrG)(BqJ>P9g2?b*
+qf)4Jqf;FPa)q9&rc\3`s*4QhrHeKj!.=cos*b9(J:N3%JqJ]/L&QflLPUeDMMmFQNfT6_Ocklk
+Pa.Q$R$a;1S"-%@StD[LTqeEZV5C/gW2ZesX/rG*Y-5(6Z*CU@Za@-J[^NZS\Gj&=])TDA]`5\F
+^AYhH_#M7K_Z%IQ`;IUS`r=$WaSs<]b5KN`bl>recMu5jd/MGmdK%bpe-FOTf%8O+f\-8X!o)Mc
+rnRV3hu;OBiSrkWj5f=`k2tjikl0fOlKdd&m-X3.rpTmV!:g'Zs7?9_rq6<bs7cKerqZTjqtp?i
+r;H6dJcCB&J,~>
+JcC<$JcFR+m/Hn\qu$3cr;-Bfq=sp_rq?6^rq-3]r:9mXs7$!U!q,ICrp9[N!:'RJE9QKJk2tdd
+jQ#:[iS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@rJa2Z*;`59C-^q[Us]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM&M2*
+L5(D8KS+o/JUr?%IsuipI=-BgH?sj^GlDmfG'3e+!crC&rc%sXDuOVUD/=%fCBnTgBkV0mB4h-S
+s'u+>rF,h:?srt@s'G_2rETA,s'#>'r`K2%qH!Ppr)E;eq,7&doMGE\qG-NSo1\^LrD*8dqG@,f
+rDNJjr`&hrq,[Gqr)i_sr*'#&pg!c'rEf>-ra>_6qdTP7rabn;rau.BqIohArG)(Bph\]%m;Dc=
+r,D=Kqf;LRa`RH'rc\0_s*4QhrHeKj!.=cos*artrd[1`JqJ]/KnY89LPUeDMMmFPNK0']Ocklk
+Pa.N"R$a;1S"#q>StD[LTq\?YV5C/gW2ZesX/rG*Y-5(6Z*OA8!OT96[Ks@P\@K/]]">TR]`5\F
+^AbnH_#M7L_Z%IQ`;IUR`rF*WaT'B]b5KN`bl>rdcMu2jd/DAldK%bqeGn&!f)F;$fDsV(gAfn-
+h#?+7hV[5Ki8NYSro4%?jo4BIkNM-ol0@R"rp0^RmdC)C!q>aMrpp*\!;-6_s7ZKerV6Bfs8)Wi
+rVZWmo)=4?KE$H~>
+JcC<$JcFR+m/Hn\qu$3cr;-Bfq=sp_rq?6^rq-3]r:9mXs7$!U!q,ICrp9[N!:'RJE9QKJk2tdd
+jQ#:[iS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@rJa2Z*;`59C-^q[Us]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM&M2*
+L5(D8KS+o/JUr?%IsuipI=-BgH?sj^GlDmfG'3e+!crC&rc%sXDuOVUD/=%fCBnTgBkV0mB4h-S
+s'u+>rF,h:?srt@s'G_2rETA,s'#>'r`K2%qH!Ppr)E;eq,7&doMGE\qG-NSo1\^LrD*8dqG@,f
+rDNJjr`&hrq,[Gqr)i_sr*'#&pg!c'rEf>-ra>_6qdTP7rabn;rau.BqIohArG)(Bph\]%m;Dc=
+r,D=Kqf;LRa`RH'rc\0_s*4QhrHeKj!.=cos*artrd[1`JqJ]/KnY89LPUeDMMmFPNK0']Ocklk
+Pa.N"R$a;1S"#q>StD[LTq\?YV5C/gW2ZesX/rG*Y-5(6Z*OA8!OT96[Ks@P\@K/]]">TR]`5\F
+^AbnH_#M7L_Z%IQ`;IUR`rF*WaT'B]b5KN`bl>rdcMu2jd/DAldK%bqeGn&!f)F;$fDsV(gAfn-
+h#?+7hV[5Ki8NYSro4%?jo4BIkNM-ol0@R"rp0^RmdC)C!q>aMrpp*\!;-6_s7ZKerV6Bfs8)Wi
+rVZWmo)=4?KE$H~>
+JcC<$JcFR+m/Hn\qu$3cr;-Bfq=sp_rq?6^rq-3]r:9mXs7$!U!q,ICrp9[N!:'RJE9QKJk2tdd
+jQ#:[iS`YOhVI#CgY1B7f[na+e^W*sdF$=ecHXSVbK@rJa2Z*;`59C-^q[Us]Y(kf\[],W[^EKK
+Za$a=YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM&M2*
+L5(D8KS+o/JUr?%IsuipI=-BgH?sj^GlDmfG'3e+!crC&rc%sXDuOVUD/=%fCBnTgBkV0mB4h-S
+s'u+>rF,h:?srt@s'G_2rETA,s'#>'r`K2%qH!Ppr)E;eq,7&doMGE\qG-NSo1\^LrD*8dqG@,f
+rDNJjr`&hrq,[Gqr)i_sr*'#&pg!c'rEf>-ra>_6qdTP7rabn;rau.BqIohArG)(Bph\]%m;Dc=
+r,D=Kqf;LRa`RH'rc\0_s*4QhrHeKj!.=cos*artrd[1`JqJ]/KnY89LPUeDMMmFPNK0']Ocklk
+Pa.N"R$a;1S"#q>StD[LTq\?YV5C/gW2ZesX/rG*Y-5(6Z*OA8!OT96[Ks@P\@K/]]">TR]`5\F
+^AbnH_#M7L_Z%IQ`;IUR`rF*WaT'B]b5KN`bl>rdcMu2jd/DAldK%bqeGn&!f)F;$fDsV(gAfn-
+h#?+7hV[5Ki8NYSro4%?jo4BIkNM-ol0@R"rp0^RmdC)C!q>aMrpp*\!;-6_s7ZKerV6Bfs8)Wi
+rVZWmo)=4?KE$H~>
+JcC<$JcFO*m/Hn\qu$0br;-Bfq=sp_rq?6^rq-6^r:9mXs7$!Us6]mSrp9[N!:'RJ#3b75k2tdd
+ro7eRiS`YOhVI#CgY1B7f[na+eC;sqdF$=dcHXSVbK7iHa2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-g>YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q;oP*(ieO,f5!N!5,sM2@%D
+re:H-K`6T)Jq<oO!IoRtI0"_Brd"fpG^+FVG'8$-F9-H'rc&!YDf>Vm!GuZPC]A,LC&VcIB4bcT
+AHHCPA,]s;@/s^6?iOI4?2\%.>Q7n)=oMP&=8>nq<Vobe;u0Dg;>!c_:]!o>:&Ica:\did;>jDh
+;uK\o<V]\o=8Z1q=o;J$>PMJ%?2\++?i=C3@JaO5A,^$9Ac?<@BDQ<?C&Mf?C\DSsD=MN@Du=SJ
+EVa_PF3Sh)Fo?L\GQ)jeH2W$jH[L5?IK+`rJ,Xs!JV*lR3J<*@L51SAM2I4MN/`jYO-#KeP*D5s
+QC!u+R[]e:SXuFGTqS3UUnjlcVl6SpWiN5'Xfek3Yd(M5ZNdeE[^NZS\Gj#?]">TR]`5YF^AYhH
+_#M7K_Z.OR`;IUR`rF*WaSs<]b5BH_bl>rdcMu5jd/MGmdf7eqeGn&!f)F;$fDsV(gAfn-h#?+2
+hV[5ihuVfrro47EjlPXekND(.klU/9li-5OmI'uBs6p$YrUL$]o^r+Ts7ZKerV6EgrqcNhrVZWm
+o)=4?KE$H~>
+JcC<$JcFO*m/Hn\qu$0br;-Bfq=sp_rq?6^rq-6^r:9mXs7$!Us6]mSrp9[N!:'RJ#3b75k2tdd
+ro7eRiS`YOhVI#CgY1B7f[na+eC;sqdF$=dcHXSVbK7iHa2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-g>YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q;oP*(ieO,f5!N!5,sM2@%D
+re:H-K`6T)Jq<oO!IoRtI0"_Brd"fpG^+FVG'8$-F9-H'rc&!YDf>Vm!GuZPC]A,LC&VcIB4bcT
+AHHCPA,]s;@/s^6?iOI4?2\%.>Q7n)=oMP&=8>nq<Vobe;u0Dg;>!c_:]!o>:&Ica:\did;>jDh
+;uK\o<V]\o=8Z1q=o;J$>PMJ%?2\++?i=C3@JaO5A,^$9Ac?<@BDQ<?C&Mf?C\DSsD=MN@Du=SJ
+EVa_PF3Sh)Fo?L\GQ)jeH2W$jH[L5?IK+`rJ,Xs!JV*lR3J<*@L51SAM2I4MN/`jYO-#KeP*D5s
+QC!u+R[]e:SXuFGTqS3UUnjlcVl6SpWiN5'Xfek3Yd(M5ZNdeE[^NZS\Gj#?]">TR]`5YF^AYhH
+_#M7K_Z.OR`;IUR`rF*WaSs<]b5BH_bl>rdcMu5jd/MGmdf7eqeGn&!f)F;$fDsV(gAfn-h#?+2
+hV[5ihuVfrro47EjlPXekND(.klU/9li-5OmI'uBs6p$YrUL$]o^r+Ts7ZKerV6EgrqcNhrVZWm
+o)=4?KE$H~>
+JcC<$JcFO*m/Hn\qu$0br;-Bfq=sp_rq?6^rq-6^r:9mXs7$!Us6]mSrp9[N!:'RJ#3b75k2tdd
+ro7eRiS`YOhVI#CgY1B7f[na+eC;sqdF$=dcHXSVbK7iHa2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-g>YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=R[KP1Q^3o%P`q;oP*(ieO,f5!N!5,sM2@%D
+re:H-K`6T)Jq<oO!IoRtI0"_Brd"fpG^+FVG'8$-F9-H'rc&!YDf>Vm!GuZPC]A,LC&VcIB4bcT
+AHHCPA,]s;@/s^6?iOI4?2\%.>Q7n)=oMP&=8>nq<Vobe;u0Dg;>!c_:]!o>:&Ica:\did;>jDh
+;uK\o<V]\o=8Z1q=o;J$>PMJ%?2\++?i=C3@JaO5A,^$9Ac?<@BDQ<?C&Mf?C\DSsD=MN@Du=SJ
+EVa_PF3Sh)Fo?L\GQ)jeH2W$jH[L5?IK+`rJ,Xs!JV*lR3J<*@L51SAM2I4MN/`jYO-#KeP*D5s
+QC!u+R[]e:SXuFGTqS3UUnjlcVl6SpWiN5'Xfek3Yd(M5ZNdeE[^NZS\Gj#?]">TR]`5YF^AYhH
+_#M7K_Z.OR`;IUR`rF*WaSs<]b5BH_bl>rdcMu5jd/MGmdf7eqeGn&!f)F;$fDsV(gAfn-h#?+2
+hV[5ihuVfrro47EjlPXekND(.klU/9li-5OmI'uBs6p$YrUL$]o^r+Ts7ZKerV6EgrqcNhrVZWm
+o)=4?KE$H~>
+JcC<$JcFL)m/Hk[qu$0brVHHfq=ss`rV$-]s7H<^rUU!Ys7$!Us6]mSrTjRNlMg#Pki_-kk2k\'
+j&Y0ui8EMLh;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`l5m6_SX.)^V7Co]Xtbc\@8oT[C!9H
+ZE^X<Y-"h-X/`2!W2HPjV50o^U7n9RT:VXFSGnueR[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM%ti%
+L5(D9KS+o/Jq8H&It)oqI=-Ehrd"TjGlDmfG'3e+#BOp+EH,r:DuOVUD/=%fCB80arb2=E!+u4A
+s'u+>rF,h:?srq?!a]/<r*98+s'#>'r`K,#q,[Dnqc*,bqbm;gohbN]qbGp@r(d/cq,%#er_iPj
+r`&hrq,[DprE/esr*'#&pK[Z&rEf>-ra>_6qdTP7rabn;rau+AqIohArG(t?g2-=soPXPEr,DCM
+qf;LRe9(M/rHA$]rcnHgrHeKjs*Xfos*artrdY$#K)UBnKS>/8LPUeDMMmFPNK0'\OHG]hPE_>u
+Q^F/.R[]h<St;RITq\<XUnsrdW2ZesX/rG*Y-5(6Z*L^B['d<M[^WcV\[f;_]DfJC]`>eF^]2+L
+_>V7N_u@UQ`W!mWa8<sXao9H]bPo`cc2Grfci;AjdJqVpe,@ereH"2"fDjJ'g&B_*gAp%.h>c=3
+hu;O=iSrkWj5f:_roOIKkih9qlK[^7m/QGQmf)\Tn,W"Xo)J=]o`"O`pAambq#C0hqYU0gr;HTb
+rdk*%s*t~>
+JcC<$JcFL)m/Hk[qu$0brVHHfq=ss`rV$-]s7H<^rUU!Ys7$!Us6]mSrTjRNlMg#Pki_-kk2k\'
+j&Y0ui8EMLh;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`l5m6_SX.)^V7Co]Xtbc\@8oT[C!9H
+ZE^X<Y-"h-X/`2!W2HPjV50o^U7n9RT:VXFSGnueR[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM%ti%
+L5(D9KS+o/Jq8H&It)oqI=-Ehrd"TjGlDmfG'3e+#BOp+EH,r:DuOVUD/=%fCB80arb2=E!+u4A
+s'u+>rF,h:?srq?!a]/<r*98+s'#>'r`K,#q,[Dnqc*,bqbm;gohbN]qbGp@r(d/cq,%#er_iPj
+r`&hrq,[DprE/esr*'#&pK[Z&rEf>-ra>_6qdTP7rabn;rau+AqIohArG(t?g2-=soPXPEr,DCM
+qf;LRe9(M/rHA$]rcnHgrHeKjs*Xfos*artrdY$#K)UBnKS>/8LPUeDMMmFPNK0'\OHG]hPE_>u
+Q^F/.R[]h<St;RITq\<XUnsrdW2ZesX/rG*Y-5(6Z*L^B['d<M[^WcV\[f;_]DfJC]`>eF^]2+L
+_>V7N_u@UQ`W!mWa8<sXao9H]bPo`cc2Grfci;AjdJqVpe,@ereH"2"fDjJ'g&B_*gAp%.h>c=3
+hu;O=iSrkWj5f:_roOIKkih9qlK[^7m/QGQmf)\Tn,W"Xo)J=]o`"O`pAambq#C0hqYU0gr;HTb
+rdk*%s*t~>
+JcC<$JcFL)m/Hk[qu$0brVHHfq=ss`rV$-]s7H<^rUU!Ys7$!Us6]mSrTjRNlMg#Pki_-kk2k\'
+j&Y0ui8EMLh;-l@g=k64f@JL%eC2jndEg+`c-4ARaiMQD`l5m6_SX.)^V7Co]Xtbc\@8oT[C!9H
+ZE^X<Y-"h-X/`2!W2HPjV50o^U7n9RT:VXFSGnueR[KP1Q^3o%P`q8nOc]R'"ceS$N/NSmM%ti%
+L5(D9KS+o/Jq8H&It)oqI=-Ehrd"TjGlDmfG'3e+#BOp+EH,r:DuOVUD/=%fCB80arb2=E!+u4A
+s'u+>rF,h:?srq?!a]/<r*98+s'#>'r`K,#q,[Dnqc*,bqbm;gohbN]qbGp@r(d/cq,%#er_iPj
+r`&hrq,[DprE/esr*'#&pK[Z&rEf>-ra>_6qdTP7rabn;rau+AqIohArG(t?g2-=soPXPEr,DCM
+qf;LRe9(M/rHA$]rcnHgrHeKjs*Xfos*artrdY$#K)UBnKS>/8LPUeDMMmFPNK0'\OHG]hPE_>u
+Q^F/.R[]h<St;RITq\<XUnsrdW2ZesX/rG*Y-5(6Z*L^B['d<M[^WcV\[f;_]DfJC]`>eF^]2+L
+_>V7N_u@UQ`W!mWa8<sXao9H]bPo`cc2Grfci;AjdJqVpe,@ereH"2"fDjJ'g&B_*gAp%.h>c=3
+hu;O=iSrkWj5f:_roOIKkih9qlK[^7m/QGQmf)\Tn,W"Xo)J=]o`"O`pAambq#C0hqYU0gr;HTb
+rdk*%s*t~>
+JcC<$JcFI(m/Hk[qu$0br;-Bfq=sp_rq?6^s7H<^rUU!Ys7$!Us6]mSrp9[N!:'RJ!U/_Gk'lFQ
+j5].XiS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob4R$X,(Q'@MsP*1rhO,o<\NJrgSMM[1G
+Lkg_>L&Zi+K)pRTrdY$!If=a(I!^3dH?ja[GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/aO5?N4=0>lIt->5MJ%=T)=r<r5nn<:j,d;Ys>b;#=&b:?,(G:Ado_;#X>j
+;Ya8j<;fhl<rH+t=SGtr>5MP!>l@t,?M\%-@/aU3@fBm:AG]s;B)ZH>B`2ZCC@c5jD"hf>DZ"GN
+E;+AMEr'k6FRsYPG56@]GlN'eHN/?lI/\QoIK4lsJ,t4Qrdt6)L&QfiLPUeDMMmFPNK0'\Ocklk
+Pa.N"Q^F20S"#q>StD[LTqeEZV5C/gW2ckuXKAV-YHY79ZEpmE[C*HO\%)FJ#J.OZ]Y(qk^AYhH
+^];4L_Z%IQ`;R[S`rF*VaT'B]b5BH_bl5lccMu5jd/DAldf7epe,n1Of)F;$fDsV(gAfn-h#?.0
+h>lI4i;_a9ir7sCjQ5Lck3(pkrojLLlg+Q:!q#FDrpKpXnaZVLs766_rUp3as7cHds7uZjqtpBj
+r;H3cJcCB&J,~>
+JcC<$JcFI(m/Hk[qu$0br;-Bfq=sp_rq?6^s7H<^rUU!Ys7$!Us6]mSrp9[N!:'RJ!U/_Gk'lFQ
+j5].XiS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob4R$X,(Q'@MsP*1rhO,o<\NJrgSMM[1G
+Lkg_>L&Zi+K)pRTrdY$!If=a(I!^3dH?ja[GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/aO5?N4=0>lIt->5MJ%=T)=r<r5nn<:j,d;Ys>b;#=&b:?,(G:Ado_;#X>j
+;Ya8j<;fhl<rH+t=SGtr>5MP!>l@t,?M\%-@/aU3@fBm:AG]s;B)ZH>B`2ZCC@c5jD"hf>DZ"GN
+E;+AMEr'k6FRsYPG56@]GlN'eHN/?lI/\QoIK4lsJ,t4Qrdt6)L&QfiLPUeDMMmFPNK0'\Ocklk
+Pa.N"Q^F20S"#q>StD[LTqeEZV5C/gW2ckuXKAV-YHY79ZEpmE[C*HO\%)FJ#J.OZ]Y(qk^AYhH
+^];4L_Z%IQ`;R[S`rF*VaT'B]b5BH_bl5lccMu5jd/DAldf7epe,n1Of)F;$fDsV(gAfn-h#?.0
+h>lI4i;_a9ir7sCjQ5Lck3(pkrojLLlg+Q:!q#FDrpKpXnaZVLs766_rUp3as7cHds7uZjqtpBj
+r;H3cJcCB&J,~>
+JcC<$JcFI(m/Hk[qu$0br;-Bfq=sp_rq?6^s7H<^rUU!Ys7$!Us6]mSrp9[N!:'RJ!U/_Gk'lFQ
+j5].XiS`YOhVI#CgY1?5f@SU(eC;sqdEp4bcHXSVb/q`Ga2Z*:_ns:,^q[Us]Y(kf\[],W[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob4R$X,(Q'@MsP*1rhO,o<\NJrgSMM[1G
+Lkg_>L&Zi+K)pRTrdY$!If=a(I!^3dH?ja[GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/aO5?N4=0>lIt->5MJ%=T)=r<r5nn<:j,d;Ys>b;#=&b:?,(G:Ado_;#X>j
+;Ya8j<;fhl<rH+t=SGtr>5MP!>l@t,?M\%-@/aU3@fBm:AG]s;B)ZH>B`2ZCC@c5jD"hf>DZ"GN
+E;+AMEr'k6FRsYPG56@]GlN'eHN/?lI/\QoIK4lsJ,t4Qrdt6)L&QfiLPUeDMMmFPNK0'\Ocklk
+Pa.N"Q^F20S"#q>StD[LTqeEZV5C/gW2ckuXKAV-YHY79ZEpmE[C*HO\%)FJ#J.OZ]Y(qk^AYhH
+^];4L_Z%IQ`;R[S`rF*VaT'B]b5BH_bl5lccMu5jd/DAldf7epe,n1Of)F;$fDsV(gAfn-h#?.0
+h>lI4i;_a9ir7sCjQ5Lck3(pkrojLLlg+Q:!q#FDrpKpXnaZVLs766_rUp3as7cHds7uZjqtpBj
+r;H3cJcCB&J,~>
+JcC<$JcFF'm/Hk[qY^'arVHHfq=ss`rV$0^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ!U/_Gk'Q4N
+j5].Xi8EMLh;-l@g=k64f@SU(eC;spdEp4bcHXPUb/q`Ga2Q$9_ns:,^V@Lr]Y(kf\[f2X[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob5R$a5+Q'IStP*1rhOH5H_NJrgSMi*@J
+Lkkta!JQ4+K)pRTrdY$!If=`rI!bj=!I8qhG78Y;F`__HF)l8?E,]apD?k#pChmg$C2*Z\s(;=D
+ral+?!+Yt:!b#JErEoS2s'>S.r`fD+qcWl"rE&_oqGmAkoi(`cr)*/aqbR&`kY:nKr(m)ar_`Vl
+q,@5kr`/_orE&o!p0%;sqcii#r*B8-qHs50rF,S4raYq<qdob=rb)(@rFu1En8$Niq/,eBrGVUQ
+pi61OqfD(FlZN#Hpil^^rd"Hgs*OcnrI"`rIt.HJ#(_AXK7ei2re<CfLl$tGMi<USNfT6_Ockll
+Q'IZ%R$a>3S"-%@T:hmOU8+N\VPg>jWN*##Xf\b0YctC<Za7$HrjE$?\@K/]]"@sS!kl=^rkJKK
+!5\WNs24lTr5J]Us2Y#Xs2k8_r6,)`s3:Jes3L_lrR(Yns3pqrs4./#rn%2&!87A*s4[P/rn[V2
+!8me6s5<t;ro4(@jlQL(#Nt=7l07Kuli-8Nm/ZSRn,MkWnbr"[oCV\Rp&Facp\jmdq>^<fqu6Nk
+rUTr=s+C?%~>
+JcC<$JcFF'm/Hk[qY^'arVHHfq=ss`rV$0^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ!U/_Gk'Q4N
+j5].Xi8EMLh;-l@g=k64f@SU(eC;spdEp4bcHXPUb/q`Ga2Q$9_ns:,^V@Lr]Y(kf\[f2X[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob5R$a5+Q'IStP*1rhOH5H_NJrgSMi*@J
+Lkkta!JQ4+K)pRTrdY$!If=`rI!bj=!I8qhG78Y;F`__HF)l8?E,]apD?k#pChmg$C2*Z\s(;=D
+ral+?!+Yt:!b#JErEoS2s'>S.r`fD+qcWl"rE&_oqGmAkoi(`cr)*/aqbR&`kY:nKr(m)ar_`Vl
+q,@5kr`/_orE&o!p0%;sqcii#r*B8-qHs50rF,S4raYq<qdob=rb)(@rFu1En8$Niq/,eBrGVUQ
+pi61OqfD(FlZN#Hpil^^rd"Hgs*OcnrI"`rIt.HJ#(_AXK7ei2re<CfLl$tGMi<USNfT6_Ockll
+Q'IZ%R$a>3S"-%@T:hmOU8+N\VPg>jWN*##Xf\b0YctC<Za7$HrjE$?\@K/]]"@sS!kl=^rkJKK
+!5\WNs24lTr5J]Us2Y#Xs2k8_r6,)`s3:Jes3L_lrR(Yns3pqrs4./#rn%2&!87A*s4[P/rn[V2
+!8me6s5<t;ro4(@jlQL(#Nt=7l07Kuli-8Nm/ZSRn,MkWnbr"[oCV\Rp&Facp\jmdq>^<fqu6Nk
+rUTr=s+C?%~>
+JcC<$JcFF'm/Hk[qY^'arVHHfq=ss`rV$0^rq-6^r:9mXs7$$Vs6]mSrp9[N!:'RJ!U/_Gk'Q4N
+j5].Xi8EMLh;-l@g=k64f@SU(eC;spdEp4bcHXPUb/q`Ga2Q$9_ns:,^V@Lr]Y(kf\[f2X[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ$LSt2C@S!ob5R$a5+Q'IStP*1rhOH5H_NJrgSMi*@J
+Lkkta!JQ4+K)pRTrdY$!If=`rI!bj=!I8qhG78Y;F`__HF)l8?E,]apD?k#pChmg$C2*Z\s(;=D
+ral+?!+Yt:!b#JErEoS2s'>S.r`fD+qcWl"rE&_oqGmAkoi(`cr)*/aqbR&`kY:nKr(m)ar_`Vl
+q,@5kr`/_orE&o!p0%;sqcii#r*B8-qHs50rF,S4raYq<qdob=rb)(@rFu1En8$Niq/,eBrGVUQ
+pi61OqfD(FlZN#Hpil^^rd"Hgs*OcnrI"`rIt.HJ#(_AXK7ei2re<CfLl$tGMi<USNfT6_Ockll
+Q'IZ%R$a>3S"-%@T:hmOU8+N\VPg>jWN*##Xf\b0YctC<Za7$HrjE$?\@K/]]"@sS!kl=^rkJKK
+!5\WNs24lTr5J]Us2Y#Xs2k8_r6,)`s3:Jes3L_lrR(Yns3pqrs4./#rn%2&!87A*s4[P/rn[V2
+!8me6s5<t;ro4(@jlQL(#Nt=7l07Kuli-8Nm/ZSRn,MkWnbr"[oCV\Rp&Facp\jmdq>^<fqu6Nk
+rUTr=s+C?%~>
+JcC<$JcFC&m/HhZqu$0br;-?eq=ss`rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ!U/_Gk#CI'
+j5].Xi8EMLh;-l@g=k64f@SU(eC2jndEp4bcHOJTb/q`G`l5p8_ns:,^V@Lr]Y(kf\[f5Y[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUna[`TadZeSt;LCS"#k7R$a5+rfmtXPEM)kOH5H_NfB!VMi.Lj
++,G],L4t>7K7ec,JUi9#IXZ]nI!^3dH?jd\GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/XI4?N4=/>lS%->5MJ$=Su7o<r,hn<:s2f;Z'Dc;#=&`:@M!R:A[i^;#O8j
+;Ya8i<;fhm<r?%s=S>nq>5MOu>l@t,?MRt-@/aU3@fBm:AG]s;B)QB=B`2ZCC?o[1D!Ys1D#/#B
+DZ+MOE;4GNEr0qJFRF;EG4p.YGlE!dHN/?lI/SHpIXckHJ3ng=JqJ]/KnY89LPUeDMMmFPNK0'\
+OHG]hPE_>tQ^F/.R[]h<St;RITq\<XUnsueW2ZesX/rG+YHY79ZEpmE[JmTB\%&uZ]">Se]Y2"m
+rkJKK!5\WNs24lTrPefVrl=rXs2k8_r6,)`rltDerm1Vkr6bPms3pqr!nGlQrRV,'g"HAYs4[P/
+rS7P3hr"Fk!TE&;j8\0?jo4EBk5a`FklU/9li-5PmI'EAmfN"Knc&+ZoDeI]o`4^bp\jmeq>U6f
+qu-HjrU^#>s+:9$~>
+JcC<$JcFC&m/HhZqu$0br;-?eq=ss`rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ!U/_Gk#CI'
+j5].Xi8EMLh;-l@g=k64f@SU(eC2jndEp4bcHOJTb/q`G`l5p8_ns:,^V@Lr]Y(kf\[f5Y[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUna[`TadZeSt;LCS"#k7R$a5+rfmtXPEM)kOH5H_NfB!VMi.Lj
++,G],L4t>7K7ec,JUi9#IXZ]nI!^3dH?jd\GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/XI4?N4=/>lS%->5MJ$=Su7o<r,hn<:s2f;Z'Dc;#=&`:@M!R:A[i^;#O8j
+;Ya8i<;fhm<r?%s=S>nq>5MOu>l@t,?MRt-@/aU3@fBm:AG]s;B)QB=B`2ZCC?o[1D!Ys1D#/#B
+DZ+MOE;4GNEr0qJFRF;EG4p.YGlE!dHN/?lI/SHpIXckHJ3ng=JqJ]/KnY89LPUeDMMmFPNK0'\
+OHG]hPE_>tQ^F/.R[]h<St;RITq\<XUnsueW2ZesX/rG+YHY79ZEpmE[JmTB\%&uZ]">Se]Y2"m
+rkJKK!5\WNs24lTrPefVrl=rXs2k8_r6,)`rltDerm1Vkr6bPms3pqr!nGlQrRV,'g"HAYs4[P/
+rS7P3hr"Fk!TE&;j8\0?jo4EBk5a`FklU/9li-5PmI'EAmfN"Knc&+ZoDeI]o`4^bp\jmeq>U6f
+qu-HjrU^#>s+:9$~>
+JcC<$JcFC&m/HhZqu$0br;-?eq=ss`rq?6^s7H<^rUU!Ys7$$Vs6]mSrp9[N!:'RJ!U/_Gk#CI'
+j5].Xi8EMLh;-l@g=k64f@SU(eC2jndEp4bcHOJTb/q`G`l5p8_ns:,^V@Lr]Y(kf\[f5Y[^EKK
+Za-j?Yck43XfSS'Wi;qpVl$;dUna[`TadZeSt;LCS"#k7R$a5+rfmtXPEM)kOH5H_NfB!VMi.Lj
++,G],L4t>7K7ec,JUi9#IXZ]nI!^3dH?jd\GB\4RFoHI`F)q8"#B4U"DJj<.D#S2OC2%D]BEDgY
+B)Z?CA7K-K@fKm:@/XI4?N4=/>lS%->5MJ$=Su7o<r,hn<:s2f;Z'Dc;#=&`:@M!R:A[i^;#O8j
+;Ya8i<;fhm<r?%s=S>nq>5MOu>l@t,?MRt-@/aU3@fBm:AG]s;B)QB=B`2ZCC?o[1D!Ys1D#/#B
+DZ+MOE;4GNEr0qJFRF;EG4p.YGlE!dHN/?lI/SHpIXckHJ3ng=JqJ]/KnY89LPUeDMMmFPNK0'\
+OHG]hPE_>tQ^F/.R[]h<St;RITq\<XUnsueW2ZesX/rG+YHY79ZEpmE[JmTB\%&uZ]">Se]Y2"m
+rkJKK!5\WNs24lTrPefVrl=rXs2k8_r6,)`rltDerm1Vkr6bPms3pqr!nGlQrRV,'g"HAYs4[P/
+rS7P3hr"Fk!TE&;j8\0?jo4EBk5a`FklU/9li-5PmI'EAmfN"Knc&+ZoDeI]o`4^bp\jmeq>U6f
+qu-HjrU^#>s+:9$~>
+JcC<$JcF@%li-bZqY^'ar;-Bfq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp9[N<U/i5kih3lk2k[b
+j5].Xi8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/q`F`l5p8_ns:+^V@Lr]Y(kf\[f5Z[^EKK
+Za-j?Yck43XfSS'Wi;rrV^&(8Unjc[TqS-OSt;LCS"#k7R@'A.QBd`"PEM)kOcYWbNfF$s$B'du
+M26qBL5(D8rdt6'Jc:0#It%BF!IT7nH3&;9rc\coF`heJF)l;@EH#l8rb_sXCi!m&C2.J^B`D]F
+B)ZBAAH-0=@fKm:@/XI4?N4=/>lIt,>5DD#=Su7n<r,hn<;0>h;Z'Dc;#3uL:A[i^;#O8i;Ya8i
+<;fhm<r?%s=S>np>5MOu>l7n+?M\%.@/XO2@fBm:AG]s;B)QB=B`2ZBC<:8dD#8)DDZ+MOE;=MO
+Er:"MFS0eHG4TqVGlE!cHN/?lI/SKnIfFosJ4kHFJqJ]/KnY89LPUeDMMd=NN/`jYOHG]hPE_>t
+QC!u,R[]e:St;RITqS6WUnsrdW2ZesX/rG*YHY79ZEpmE[C3NQ\%&uZ]"@sS#edsd^V@S"_86,f
+s24lTrPefVs2Y&Ys2k8_r6,)`rltAds3L\krR(Vms3pqrs4./#rn%2&s4RD*s4[P/rn[V2s53h6
+!o`.uro4%?jo4EBk5a`Fl2U#Kli-8Nm/ZSRn,MnWnc&+Zo)SF]p&Facp\agdq>U6fqu-HkrUTr=
+s+:9$~>
+JcC<$JcF@%li-bZqY^'ar;-Bfq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp9[N<U/i5kih3lk2k[b
+j5].Xi8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/q`F`l5p8_ns:+^V@Lr]Y(kf\[f5Z[^EKK
+Za-j?Yck43XfSS'Wi;rrV^&(8Unjc[TqS-OSt;LCS"#k7R@'A.QBd`"PEM)kOcYWbNfF$s$B'du
+M26qBL5(D8rdt6'Jc:0#It%BF!IT7nH3&;9rc\coF`heJF)l;@EH#l8rb_sXCi!m&C2.J^B`D]F
+B)ZBAAH-0=@fKm:@/XI4?N4=/>lIt,>5DD#=Su7n<r,hn<;0>h;Z'Dc;#3uL:A[i^;#O8i;Ya8i
+<;fhm<r?%s=S>np>5MOu>l7n+?M\%.@/XO2@fBm:AG]s;B)QB=B`2ZBC<:8dD#8)DDZ+MOE;=MO
+Er:"MFS0eHG4TqVGlE!cHN/?lI/SKnIfFosJ4kHFJqJ]/KnY89LPUeDMMd=NN/`jYOHG]hPE_>t
+QC!u,R[]e:St;RITqS6WUnsrdW2ZesX/rG*YHY79ZEpmE[C3NQ\%&uZ]"@sS#edsd^V@S"_86,f
+s24lTrPefVs2Y&Ys2k8_r6,)`rltAds3L\krR(Vms3pqrs4./#rn%2&s4RD*s4[P/rn[V2s53h6
+!o`.uro4%?jo4EBk5a`Fl2U#Kli-8Nm/ZSRn,MnWnc&+Zo)SF]p&Facp\agdq>U6fqu-HkrUTr=
+s+:9$~>
+JcC<$JcF@%li-bZqY^'ar;-Bfq=sp_rq?9_rq-6^rUU!Ys7$$Vs6]mSrp9[N<U/i5kih3lk2k[b
+j5].Xi8EMLh;-l@g=k64f@JL%eC2jndEp1ac-4ASb/q`F`l5p8_ns:+^V@Lr]Y(kf\[f5Z[^EKK
+Za-j?Yck43XfSS'Wi;rrV^&(8Unjc[TqS-OSt;LCS"#k7R@'A.QBd`"PEM)kOcYWbNfF$s$B'du
+M26qBL5(D8rdt6'Jc:0#It%BF!IT7nH3&;9rc\coF`heJF)l;@EH#l8rb_sXCi!m&C2.J^B`D]F
+B)ZBAAH-0=@fKm:@/XI4?N4=/>lIt,>5DD#=Su7n<r,hn<;0>h;Z'Dc;#3uL:A[i^;#O8i;Ya8i
+<;fhm<r?%s=S>np>5MOu>l7n+?M\%.@/XO2@fBm:AG]s;B)QB=B`2ZBC<:8dD#8)DDZ+MOE;=MO
+Er:"MFS0eHG4TqVGlE!cHN/?lI/SKnIfFosJ4kHFJqJ]/KnY89LPUeDMMd=NN/`jYOHG]hPE_>t
+QC!u,R[]e:St;RITqS6WUnsrdW2ZesX/rG*YHY79ZEpmE[C3NQ\%&uZ]"@sS#edsd^V@S"_86,f
+s24lTrPefVs2Y&Ys2k8_r6,)`rltAds3L\krR(Vms3pqrs4./#rn%2&s4RD*s4[P/rn[V2s53h6
+!o`.uro4%?jo4EBk5a`Fl2U#Kli-8Nm/ZSRn,MnWnc&+Zo)SF]p&Facp\agdq>U6fqu-HkrUTr=
+s+:9$~>
+JcC<$JcF=$li-_Yqu$0br;-?eq=ss`rq?9_rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3lk2k\'
+j'q$,i8EMLh;-l@g=k63f@JL%eC2jndEg+`c-4ASb/hZE`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXFS=?":R@'A.QN!-QP`q8nOc]R'$BC+)N/NRN
+M2@%Dre;>FKS+o/Jq8H&It)oqI=-EhH?sj^G^"@TG'3e+!HW;\E<1#srbhaQ!,VXM!buF`rb)@G
+AnM$R!b>eNrF,h:?srq?ra,V1r*95*r`],#r)ihtoiCriqc*;gr)3GipJCZ]lq[CQpJCfcrDNGi
+rD`_qq,[Dpr)iVpqc`l$p0@Q%rEf;,ra>_6qdTP7rabk:rau.Bq.T\?r+a5eq/#tGpMTqJrG_RP
+rGqgWolTtOoQK\Ir-80cqg/9hrd=Zms*artrI=p"K)UE&KLCNKL51S@M2@+JN/WaVO,oBbP*2&p
+Q'Rc(R$jG5S=Q7DTV8'RUSO``Vl-JnWiN5'Xfek3Z*L^B['d?N\%&rY\[oEP]E,^[rkANM_86,f
+s2+iTrPefVs2Y&Ys2k8_r6,)`rltAdrm1Vkr6bPmrmUhqs4./#rR_)%!87>)s4[P/rS7P3hr"Fk
+!o`.uro4(@jlQL(!pAe2rojLLlg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cKerqZQiqtp?irVc<d
+JcC?%J,~>
+JcC<$JcF=$li-_Yqu$0br;-?eq=ss`rq?9_rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3lk2k\'
+j'q$,i8EMLh;-l@g=k63f@JL%eC2jndEg+`c-4ASb/hZE`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXFS=?":R@'A.QN!-QP`q8nOc]R'$BC+)N/NRN
+M2@%Dre;>FKS+o/Jq8H&It)oqI=-EhH?sj^G^"@TG'3e+!HW;\E<1#srbhaQ!,VXM!buF`rb)@G
+AnM$R!b>eNrF,h:?srq?ra,V1r*95*r`],#r)ihtoiCriqc*;gr)3GipJCZ]lq[CQpJCfcrDNGi
+rD`_qq,[Dpr)iVpqc`l$p0@Q%rEf;,ra>_6qdTP7rabk:rau.Bq.T\?r+a5eq/#tGpMTqJrG_RP
+rGqgWolTtOoQK\Ir-80cqg/9hrd=Zms*artrI=p"K)UE&KLCNKL51S@M2@+JN/WaVO,oBbP*2&p
+Q'Rc(R$jG5S=Q7DTV8'RUSO``Vl-JnWiN5'Xfek3Z*L^B['d?N\%&rY\[oEP]E,^[rkANM_86,f
+s2+iTrPefVs2Y&Ys2k8_r6,)`rltAdrm1Vkr6bPmrmUhqs4./#rR_)%!87>)s4[P/rS7P3hr"Fk
+!o`.uro4(@jlQL(!pAe2rojLLlg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cKerqZQiqtp?irVc<d
+JcC?%J,~>
+JcC<$JcF=$li-_Yqu$0br;-?eq=ss`rq?9_rq-6^rUU!Ys7$$Vs6]mSrp1$YlK[Wukih3lk2k\'
+j'q$,i8EMLh;-l@g=k63f@JL%eC2jndEg+`c-4ASb/hZE`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXFS=?":R@'A.QN!-QP`q8nOc]R'$BC+)N/NRN
+M2@%Dre;>FKS+o/Jq8H&It)oqI=-EhH?sj^G^"@TG'3e+!HW;\E<1#srbhaQ!,VXM!buF`rb)@G
+AnM$R!b>eNrF,h:?srq?ra,V1r*95*r`],#r)ihtoiCriqc*;gr)3GipJCZ]lq[CQpJCfcrDNGi
+rD`_qq,[Dpr)iVpqc`l$p0@Q%rEf;,ra>_6qdTP7rabk:rau.Bq.T\?r+a5eq/#tGpMTqJrG_RP
+rGqgWolTtOoQK\Ir-80cqg/9hrd=Zms*artrI=p"K)UE&KLCNKL51S@M2@+JN/WaVO,oBbP*2&p
+Q'Rc(R$jG5S=Q7DTV8'RUSO``Vl-JnWiN5'Xfek3Z*L^B['d?N\%&rY\[oEP]E,^[rkANM_86,f
+s2+iTrPefVs2Y&Ys2k8_r6,)`rltAdrm1Vkr6bPmrmUhqs4./#rR_)%!87>)s4[P/rS7P3hr"Fk
+!o`.uro4(@jlQL(!pAe2rojLLlg+Q:!q#FDrpTmV!:g$Y!qZ'VrUp3as7cKerqZQiqtp?irVc<d
+JcC?%J,~>
+JcC<$JcF:#li-_YqY^'ar;-?eqY:'arq?6^s7H?_rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-kk2k[a
+j5T%si(;h_h;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgrhL=)U7n9RT:VXFS=?":R[KP1Q^3o%P`u*0"d+n-O,f5!N":i(
+M2@%ELPCP;KS4u1Jq<oO!IoRtI0"_Brd"TjGlDmfG'3e+#BOp+EH,r:DuOVTD/B2es(VOJrb2=E
+!+u4As().>raPn9s'Yb3s'G_2qcs,)rEB#"qcN_soiCujr)EDhrDNPjp/(KZp.k?Xp/(]brDNGi
+rD`_qq,[Dpr)iVpqHEc#p0@N$rEf>-rF#V5qdTP7rabn;rFZ%Aq.T\?qeF)cqeZ1Iphp%KrG_RP
+rGqgWp2p.RpNGtKqfr$aqKi0grd=Zms*jutrdb$"!.t3&s+F.$L5(J>Ll$tGMi<USNfT6_Ocklk
+Pa.N#R$a;1S"#t?StD[LU8+N[VPg>jWN*##Xf\b0YctC<Za@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e
+s2+iTrPefVs2Y)ZrlP2_r6,)`rltAdrm1Sjr6bPmrmUhqs4./#rR_)%s4RA)!o)Mcrn[V2s53h6
+!o`.uro=%>!9O4Bs5sCGrosIJ!:0XNs6TgSrpTmVs7-*Zs7?9_rq6<brqHBdrqZTjqtp?ir;H3c
+JcC?%J,~>
+JcC<$JcF:#li-_YqY^'ar;-?eqY:'arq?6^s7H?_rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-kk2k[a
+j5T%si(;h_h;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgrhL=)U7n9RT:VXFS=?":R[KP1Q^3o%P`u*0"d+n-O,f5!N":i(
+M2@%ELPCP;KS4u1Jq<oO!IoRtI0"_Brd"TjGlDmfG'3e+#BOp+EH,r:DuOVTD/B2es(VOJrb2=E
+!+u4As().>raPn9s'Yb3s'G_2qcs,)rEB#"qcN_soiCujr)EDhrDNPjp/(KZp.k?Xp/(]brDNGi
+rD`_qq,[Dpr)iVpqHEc#p0@N$rEf>-rF#V5qdTP7rabn;rFZ%Aq.T\?qeF)cqeZ1Iphp%KrG_RP
+rGqgWp2p.RpNGtKqfr$aqKi0grd=Zms*jutrdb$"!.t3&s+F.$L5(J>Ll$tGMi<USNfT6_Ocklk
+Pa.N#R$a;1S"#t?StD[LU8+N[VPg>jWN*##Xf\b0YctC<Za@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e
+s2+iTrPefVs2Y)ZrlP2_r6,)`rltAdrm1Sjr6bPmrmUhqs4./#rR_)%s4RA)!o)Mcrn[V2s53h6
+!o`.uro=%>!9O4Bs5sCGrosIJ!:0XNs6TgSrpTmVs7-*Zs7?9_rq6<brqHBdrqZTjqtp?ir;H3c
+JcC?%J,~>
+JcC<$JcF:#li-_YqY^'ar;-?eqY:'arq?6^s7H?_rUU!Ys7$$Vs6]mSrp10]lK[Wuki_-kk2k[a
+j5T%si(;h_h;$c=g=b-1f@JL%eC2jnd*L"_c-4ASaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\*WiE%sVl-DgrhL=)U7n9RT:VXFS=?":R[KP1Q^3o%P`u*0"d+n-O,f5!N":i(
+M2@%ELPCP;KS4u1Jq<oO!IoRtI0"_Brd"TjGlDmfG'3e+#BOp+EH,r:DuOVTD/B2es(VOJrb2=E
+!+u4As().>raPn9s'Yb3s'G_2qcs,)rEB#"qcN_soiCujr)EDhrDNPjp/(KZp.k?Xp/(]brDNGi
+rD`_qq,[Dpr)iVpqHEc#p0@N$rEf>-rF#V5qdTP7rabn;rFZ%Aq.T\?qeF)cqeZ1Iphp%KrG_RP
+rGqgWp2p.RpNGtKqfr$aqKi0grd=Zms*jutrdb$"!.t3&s+F.$L5(J>Ll$tGMi<USNfT6_Ocklk
+Pa.N#R$a;1S"#t?StD[LU8+N[VPg>jWN*##Xf\b0YctC<Za@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e
+s2+iTrPefVs2Y)ZrlP2_r6,)`rltAdrm1Sjr6bPmrmUhqs4./#rR_)%s4RA)!o)Mcrn[V2s53h6
+!o`.uro=%>!9O4Bs5sCGrosIJ!:0XNs6TgSrpTmVs7-*Zs7?9_rq6<brqHBdrqZTjqtp?ir;H3c
+JcC?%J,~>
+JcC<$JcF7"lMgYYqY^$`r;-Bfq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s-J*#bO
+j5T%Ui8<DIh;$c=g=b-1f@JL%e'cXkd*L"_c-4ARaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\N/W[Q
+MM[1GL]3#/KnTGX)M3NjJ:E&tI=6KjH[:!`H$FOWG'8"MFE;MDrc%sXDuOVUD/=%fCBA6bC&VcI
+B4bcTAcH9@A,Tm:@K0a5?iOI3?2In+>Q%b"=o;D!=7oVl<W,nk;uKVl;>!cM:\@Q^;>jDg;uK\o
+<V]\n=8Z1n=o)=u>P;>"?2\+*?iFI4@JaO4A,^$9Ac?<?BDH6=C&2S`C\qrHD>8#JDuFYNEW'qV
+F80kSFnp4KGPQL]H22dcHiAEkIK"ZqJ,OotJH1<$K2@5TKnb>;LPUeDMMmFPNK0'\OHG]hPE_>t
+QC!u,R[]e:SXuIHTqS6WUnsrdW2ZesX0&M,YHY79ZEpmE[^NZT\@K/]]=bei^:q@s^qmkd_?.Wn
+`;[aU`rF*XaT'B^b5BH^bl5lbcMl/hd/;;jdf7eoeGn)!f)4/"f`0Y(gAfq-h#?.0hZ)L4i;_a9
+ir8!<j8e<@k5XTEkl0iHlMp2LliQSBmf)\Tn,W"Wo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk*$
+s*t~>
+JcC<$JcF7"lMgYYqY^$`r;-Bfq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s-J*#bO
+j5T%Ui8<DIh;$c=g=b-1f@JL%e'cXkd*L"_c-4ARaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\N/W[Q
+MM[1GL]3#/KnTGX)M3NjJ:E&tI=6KjH[:!`H$FOWG'8"MFE;MDrc%sXDuOVUD/=%fCBA6bC&VcI
+B4bcTAcH9@A,Tm:@K0a5?iOI3?2In+>Q%b"=o;D!=7oVl<W,nk;uKVl;>!cM:\@Q^;>jDg;uK\o
+<V]\n=8Z1n=o)=u>P;>"?2\+*?iFI4@JaO4A,^$9Ac?<?BDH6=C&2S`C\qrHD>8#JDuFYNEW'qV
+F80kSFnp4KGPQL]H22dcHiAEkIK"ZqJ,OotJH1<$K2@5TKnb>;LPUeDMMmFPNK0'\OHG]hPE_>t
+QC!u,R[]e:SXuIHTqS6WUnsrdW2ZesX0&M,YHY79ZEpmE[^NZT\@K/]]=bei^:q@s^qmkd_?.Wn
+`;[aU`rF*XaT'B^b5BH^bl5lbcMl/hd/;;jdf7eoeGn)!f)4/"f`0Y(gAfq-h#?.0hZ)L4i;_a9
+ir8!<j8e<@k5XTEkl0iHlMp2LliQSBmf)\Tn,W"Wo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk*$
+s*t~>
+JcC<$JcF7"lMgYYqY^$`r;-Bfq=ss`rq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg#Kki_s-J*#bO
+j5T%Ui8<DIh;$c=g=b-1f@JL%e'cXkd*L"_c-4ARaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\N/W[Q
+MM[1GL]3#/KnTGX)M3NjJ:E&tI=6KjH[:!`H$FOWG'8"MFE;MDrc%sXDuOVUD/=%fCBA6bC&VcI
+B4bcTAcH9@A,Tm:@K0a5?iOI3?2In+>Q%b"=o;D!=7oVl<W,nk;uKVl;>!cM:\@Q^;>jDg;uK\o
+<V]\n=8Z1n=o)=u>P;>"?2\+*?iFI4@JaO4A,^$9Ac?<?BDH6=C&2S`C\qrHD>8#JDuFYNEW'qV
+F80kSFnp4KGPQL]H22dcHiAEkIK"ZqJ,OotJH1<$K2@5TKnb>;LPUeDMMmFPNK0'\OHG]hPE_>t
+QC!u,R[]e:SXuIHTqS6WUnsrdW2ZesX0&M,YHY79ZEpmE[^NZT\@K/]]=bei^:q@s^qmkd_?.Wn
+`;[aU`rF*XaT'B^b5BH^bl5lbcMl/hd/;;jdf7eoeGn)!f)4/"f`0Y(gAfq-h#?.0hZ)L4i;_a9
+ir8!<j8e<@k5XTEkl0iHlMp2LliQSBmf)\Tn,W"Wo)J:]o_nI_pAambq#C0hqYU0gr;?Nardk*$
+s*t~>
+JcC<$JcF4!lMgVXqY^$`r;-BfqY:'arq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg$<ki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@AC#e'cXkd*L"_bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBrid<EY-"h-X/`2!W2HPjV59u`US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]NJrgS
+MZ/GCLkg_>KnY24K7\Z*J:N,urd=fpHiA<lH$K=4!HrVbF9cl-EcH)<Df>Vm!GuZPC]A,LC&VfG
+B)lQBAcH9@A,Tm:@K0a5?iFC3?2@h)>Q%b!=o2>!=8#\n<W#hk;uKVl;=[QT:\.E\;>a>f;uK\o
+<V]\n=8Z1m=o)=u>P;>"?2\+*?iFI3@JaO5A,^$9Ac66?BD?0<C&)M`C\qrHD>A)JDuFYOEW1"W
+F80kTFo-@OGPQL[H2)^aHiAEjIK+crJ,Om!JV&LQK+!?dKnb>;LPUeDMMqIm16%<TO-#KePE_>t
+QC!u+R@B\9SXuFGTqS3UUnsrdVl?\rX/rG+YHY79ZEpmE[C3QSrj`3D]=bei^AbkJ^qp#e!lMsp
+rl+oWs2Y,[s2k8_rQG2as3:Gdrm1Sjr6bMlrmUeps4./#r7Cu$s4RA)s4[P/rS@M1!8mb5!o`.u
+ro=%>!9O1A!pAe2rojLLlg+Q:s6TgSrpTmVs7-*Zs7?9_rUp3as7cKerqZQiqtp?irVc<dJcC<$
+J,~>
+JcC<$JcF4!lMgVXqY^$`r;-BfqY:'arq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg$<ki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@AC#e'cXkd*L"_bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBrid<EY-"h-X/`2!W2HPjV59u`US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]NJrgS
+MZ/GCLkg_>KnY24K7\Z*J:N,urd=fpHiA<lH$K=4!HrVbF9cl-EcH)<Df>Vm!GuZPC]A,LC&VfG
+B)lQBAcH9@A,Tm:@K0a5?iFC3?2@h)>Q%b!=o2>!=8#\n<W#hk;uKVl;=[QT:\.E\;>a>f;uK\o
+<V]\n=8Z1m=o)=u>P;>"?2\+*?iFI3@JaO5A,^$9Ac66?BD?0<C&)M`C\qrHD>A)JDuFYOEW1"W
+F80kTFo-@OGPQL[H2)^aHiAEjIK+crJ,Om!JV&LQK+!?dKnb>;LPUeDMMqIm16%<TO-#KePE_>t
+QC!u+R@B\9SXuFGTqS3UUnsrdVl?\rX/rG+YHY79ZEpmE[C3QSrj`3D]=bei^AbkJ^qp#e!lMsp
+rl+oWs2Y,[s2k8_rQG2as3:Gdrm1Sjr6bMlrmUeps4./#r7Cu$s4RA)s4[P/rS@M1!8mb5!o`.u
+ro=%>!9O1A!pAe2rojLLlg+Q:s6TgSrpTmVs7-*Zs7?9_rUp3as7cKerqZQiqtp?irVc<dJcC<$
+J,~>
+JcC<$JcF4!lMgVXqY^$`r;-BfqY:'arq?9_s7H?_rUU!Ys7$$V!q,ICrp0[OlMg$<ki_*jjlPR`
+j5T%Ui8<DIh;$c=g=b-1f@AC#e'cXkd*L"_bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTN
+Za6sBrid<EY-"h-X/`2!W2HPjV59u`US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]NJrgS
+MZ/GCLkg_>KnY24K7\Z*J:N,urd=fpHiA<lH$K=4!HrVbF9cl-EcH)<Df>Vm!GuZPC]A,LC&VfG
+B)lQBAcH9@A,Tm:@K0a5?iFC3?2@h)>Q%b!=o2>!=8#\n<W#hk;uKVl;=[QT:\.E\;>a>f;uK\o
+<V]\n=8Z1m=o)=u>P;>"?2\+*?iFI3@JaO5A,^$9Ac66?BD?0<C&)M`C\qrHD>A)JDuFYOEW1"W
+F80kTFo-@OGPQL[H2)^aHiAEjIK+crJ,Om!JV&LQK+!?dKnb>;LPUeDMMqIm16%<TO-#KePE_>t
+QC!u+R@B\9SXuFGTqS3UUnsrdVl?\rX/rG+YHY79ZEpmE[C3QSrj`3D]=bei^AbkJ^qp#e!lMsp
+rl+oWs2Y,[s2k8_rQG2as3:Gdrm1Sjr6bMlrmUeps4./#r7Cu$s4RA)s4[P/rS@M1!8mb5!o`.u
+ro=%>!9O1A!pAe2rojLLlg+Q:s6TgSrpTmVs7-*Zs7?9_rUp3as7cKerqZQiqtp?irVc<dJcC<$
+J,~>
+JcC<$JcF-tlMgVXqY^'ar;-BfqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+@H-8(i8<DIh;$c=g=Y$/f%&:"e'cXkd*L"^bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTO
+['R*EZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV.pKSt2C@S!ocEQk#IKQ'IStP*1riOH5H_NW+kD
+Mi*@JLkgb?L4t<[K,T>mJ:N-!IXQWlH[C'bH$FRXGBS+OFEDSFErL%ZE,Y_n!c;airbDRMBkdQ[
+!bZ+Wral+?s'u":s'bq8r*TG0ra#A*r*0,'p0%8pr)`VnrDieqpf%)gr))0Er)*Djq,@2jrDiYo
+r)`btoi_)oqHNVtr*B8-qHs2/raG\5raYn;qdob=rFbq>qe>h?j(nF)m;)W9rGD@JrbqaSqJlLT
+rH%dVr,qp\o6:"TqK_d\rHnNkr-eQns*suts+(0%rI[^qKnY89LPL\BM2I4LN/WaVO,oBbP*2#n
+Q'I]'R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfek3Z*L^B['d?N\%&uZ]">Vf]tXK\!PlPN_?%Qm
+rl+oWs2Y,[s2k;`r6,,arltAdrm1Sjr6bMlrmUeprmh&"r7Cu$s4RA)s4dS/rS@M1!8mb5s5<t;
+ro=%>s5j7B!pAe2rosIJ!:0XNs6]jSrpTmV!:g$Ys766_rUp3as7cHdrqZTjqYU6hrVc<dJcC<$
+J,~>
+JcC<$JcF-tlMgVXqY^'ar;-BfqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+@H-8(i8<DIh;$c=g=Y$/f%&:"e'cXkd*L"^bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTO
+['R*EZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV.pKSt2C@S!ocEQk#IKQ'IStP*1riOH5H_NW+kD
+Mi*@JLkgb?L4t<[K,T>mJ:N-!IXQWlH[C'bH$FRXGBS+OFEDSFErL%ZE,Y_n!c;airbDRMBkdQ[
+!bZ+Wral+?s'u":s'bq8r*TG0ra#A*r*0,'p0%8pr)`VnrDieqpf%)gr))0Er)*Djq,@2jrDiYo
+r)`btoi_)oqHNVtr*B8-qHs2/raG\5raYn;qdob=rFbq>qe>h?j(nF)m;)W9rGD@JrbqaSqJlLT
+rH%dVr,qp\o6:"TqK_d\rHnNkr-eQns*suts+(0%rI[^qKnY89LPL\BM2I4LN/WaVO,oBbP*2#n
+Q'I]'R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfek3Z*L^B['d?N\%&uZ]">Vf]tXK\!PlPN_?%Qm
+rl+oWs2Y,[s2k;`r6,,arltAdrm1Sjr6bMlrmUeprmh&"r7Cu$s4RA)s4dS/rS@M1!8mb5s5<t;
+ro=%>s5j7B!pAe2rosIJ!:0XNs6]jSrpTmV!:g$Ys766_rUp3as7cHdrqZTjqYU6hrVc<dJcC<$
+J,~>
+JcC<$JcF-tlMgVXqY^'ar;-BfqY:'arq?9_s7H?_rUU!Ys7$$V&FSrQm-O'(lKRQski_*jjlHF$
+@H-8(i8<DIh;$c=g=Y$/f%&:"e'cXkd*L"^bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kf\[f5Z[^NTO
+['R*EZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV.pKSt2C@S!ocEQk#IKQ'IStP*1riOH5H_NW+kD
+Mi*@JLkgb?L4t<[K,T>mJ:N-!IXQWlH[C'bH$FRXGBS+OFEDSFErL%ZE,Y_n!c;airbDRMBkdQ[
+!bZ+Wral+?s'u":s'bq8r*TG0ra#A*r*0,'p0%8pr)`VnrDieqpf%)gr))0Er)*Djq,@2jrDiYo
+r)`btoi_)oqHNVtr*B8-qHs2/raG\5raYn;qdob=rFbq>qe>h?j(nF)m;)W9rGD@JrbqaSqJlLT
+rH%dVr,qp\o6:"TqK_d\rHnNkr-eQns*suts+(0%rI[^qKnY89LPL\BM2I4LN/WaVO,oBbP*2#n
+Q'I]'R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfek3Z*L^B['d?N\%&uZ]">Vf]tXK\!PlPN_?%Qm
+rl+oWs2Y,[s2k;`r6,,arltAdrm1Sjr6bMlrmUeprmh&"r7Cu$s4RA)s4dS/rS@M1!8mb5s5<t;
+ro=%>s5j7B!pAe2rosIJ!:0XNs6]jSrpTmV!:g$Ys766_rUp3as7cHdrqZTjqYU6hrVc<dJcC<$
+J,~>
+JcC<$JcF*slMgVXq>Bs`r;-BfqY:'as7ZB`s7H?_rUU!Y!:]sU!Uf@Slr*07lKRQskND!ijlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kg]",A]\$i`Q
+['R*EZ*:I9Y5YOFXK/A$WMl_mVPU,bUnaZXTqJ$LSt2FBS"#k7R$a5+rfmYOPEM)kOT(:JNfB!V
+Mi*CKM26rdL'iWfK7ec,JUi9#If=`rI!bj=!I8qhG6)l0rcA0^ErL%`E,TZ4DJa6,rbMOK!,;FG
+s(D@Dral+?s'u":s'bn7r*TG0ra#>)r*0)&p0%;qr)`YorDieqpf%)gr))BKqbd8hq,@5krDiVn
+r)`euoNCunq-3Msr*B8-q-X,/rF,S4raYq<qITY<rFbn=qe>e>mq_0&nn\/>rGDCKrGV[Sqf2RT
+rc@mWrH8'^olp7WqK_a[r-SBiqgJHms*suts+13%re(6(!/:E,:PXa^M2@+JMi<USNfT6_Ocklk
+Pa.N"Q^F20S"#q=StD[LTqeEZV5C/hWN)u!Xf\b0YctF>Za@-K[^WcW\[oDc]Y2%o^VI\%_SX4.
+`;[^W`lH.!aT'B^b5KN`bl5lbcMu5id/25idf._meGn(uf)4/"f`0Y&gAfq-h#6%1hV[5hhu_ls
+ir.m=jQ5M&k5XTEkl0iHlMp2Lm/QGQmf)\TnGi%Xo)J=]o_nI_pAambq#C0hqYL*gr;?Nardk*#
+s*t~>
+JcC<$JcF*slMgVXq>Bs`r;-BfqY:'as7ZB`s7H?_rUU!Y!:]sU!Uf@Slr*07lKRQskND!ijlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kg]",A]\$i`Q
+['R*EZ*:I9Y5YOFXK/A$WMl_mVPU,bUnaZXTqJ$LSt2FBS"#k7R$a5+rfmYOPEM)kOT(:JNfB!V
+Mi*CKM26rdL'iWfK7ec,JUi9#If=`rI!bj=!I8qhG6)l0rcA0^ErL%`E,TZ4DJa6,rbMOK!,;FG
+s(D@Dral+?s'u":s'bn7r*TG0ra#>)r*0)&p0%;qr)`YorDieqpf%)gr))BKqbd8hq,@5krDiVn
+r)`euoNCunq-3Msr*B8-q-X,/rF,S4raYq<qITY<rFbn=qe>e>mq_0&nn\/>rGDCKrGV[Sqf2RT
+rc@mWrH8'^olp7WqK_a[r-SBiqgJHms*suts+13%re(6(!/:E,:PXa^M2@+JMi<USNfT6_Ocklk
+Pa.N"Q^F20S"#q=StD[LTqeEZV5C/hWN)u!Xf\b0YctF>Za@-K[^WcW\[oDc]Y2%o^VI\%_SX4.
+`;[^W`lH.!aT'B^b5KN`bl5lbcMu5id/25idf._meGn(uf)4/"f`0Y&gAfq-h#6%1hV[5hhu_ls
+ir.m=jQ5M&k5XTEkl0iHlMp2Lm/QGQmf)\TnGi%Xo)J=]o_nI_pAambq#C0hqYL*gr;?Nardk*#
+s*t~>
+JcC<$JcF*slMgVXq>Bs`r;-BfqY:'as7ZB`s7H?_rUU!Y!:]sU!Uf@Slr*07lKRQskND!ijlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkcd'h\bfe2PaiMQD`l5p8_ns7*^V@Lr]Y(kg]",A]\$i`Q
+['R*EZ*:I9Y5YOFXK/A$WMl_mVPU,bUnaZXTqJ$LSt2FBS"#k7R$a5+rfmYOPEM)kOT(:JNfB!V
+Mi*CKM26rdL'iWfK7ec,JUi9#If=`rI!bj=!I8qhG6)l0rcA0^ErL%`E,TZ4DJa6,rbMOK!,;FG
+s(D@Dral+?s'u":s'bn7r*TG0ra#>)r*0)&p0%;qr)`YorDieqpf%)gr))BKqbd8hq,@5krDiVn
+r)`euoNCunq-3Msr*B8-q-X,/rF,S4raYq<qITY<rFbn=qe>e>mq_0&nn\/>rGDCKrGV[Sqf2RT
+rc@mWrH8'^olp7WqK_a[r-SBiqgJHms*suts+13%re(6(!/:E,:PXa^M2@+JMi<USNfT6_Ocklk
+Pa.N"Q^F20S"#q=StD[LTqeEZV5C/hWN)u!Xf\b0YctF>Za@-K[^WcW\[oDc]Y2%o^VI\%_SX4.
+`;[^W`lH.!aT'B^b5KN`bl5lbcMu5id/25idf._meGn(uf)4/"f`0Y&gAfq-h#6%1hV[5hhu_ls
+ir.m=jQ5M&k5XTEkl0iHlMp2Lm/QGQmf)\TnGi%Xo)J=]o_nI_pAambq#C0hqYL*gr;?Nardk*#
+s*t~>
+JcC<$JcF'rl2LMWqY^$`rVHKgqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-:$(Hr
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C!9HZE^[=Yck43XfST&WX5Z'Vl-DgUnjc[rh1d6T:VXFS=?":R[KP1Q^3o%P`q;oP*(ieO,f3Z
+N/W[PM2@%ELPCP;K`6T)Jq<oO'n:[\I=-EhH?sj]G^"@TF`heJF)uC$E<1#srb_dSCi')d!buF`
+rb2=Es(;7As().>rF5b7s'Y_2ra,P/q-<i%qc`_sr)io!pf@>nrD`Pjr)3Dhk"tqPr)3;grD`_q
+pf@;or)iSoq-*PtoN_<"rEf;,ra>_6qI9G6rabn;rFZ"@ph9P=bA-ZbrG;FLqJQ7Mrc%aSrc7sY
+qK2[YrH@pZqfr!`oQpF^r-\?hs*jrsr.+fu!.t0%s+CB+re=C-LkpnEMMd=NN/`jYO-#KeP*;,q
+Q'Rc(R$jD4S=Q7CT:qsQUSO``Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K/]]=bei^;%Fu_84"*_o0L4
+`Q#p<rlG,]s2t;`s31Mfr6G>grm:PirmLepqpbVqs47)!s4IA)r7_2*s4mS/s5*e5rSRb9io9ps
+!p&J)roX7D!9jCG!p]+;rp9[Ps6fmTs6p$YrUU![s7H9_s7ZKerV6BfrqcNhrVZTlo)=4?JcC6~>
+JcC<$JcF'rl2LMWqY^$`rVHKgqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-:$(Hr
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C!9HZE^[=Yck43XfST&WX5Z'Vl-DgUnjc[rh1d6T:VXFS=?":R[KP1Q^3o%P`q;oP*(ieO,f3Z
+N/W[PM2@%ELPCP;K`6T)Jq<oO'n:[\I=-EhH?sj]G^"@TF`heJF)uC$E<1#srb_dSCi')d!buF`
+rb2=Es(;7As().>rF5b7s'Y_2ra,P/q-<i%qc`_sr)io!pf@>nrD`Pjr)3Dhk"tqPr)3;grD`_q
+pf@;or)iSoq-*PtoN_<"rEf;,ra>_6qI9G6rabn;rFZ"@ph9P=bA-ZbrG;FLqJQ7Mrc%aSrc7sY
+qK2[YrH@pZqfr!`oQpF^r-\?hs*jrsr.+fu!.t0%s+CB+re=C-LkpnEMMd=NN/`jYO-#KeP*;,q
+Q'Rc(R$jD4S=Q7CT:qsQUSO``Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K/]]=bei^;%Fu_84"*_o0L4
+`Q#p<rlG,]s2t;`s31Mfr6G>grm:PirmLepqpbVqs47)!s4IA)r7_2*s4mS/s5*e5rSRb9io9ps
+!p&J)roX7D!9jCG!p]+;rp9[Ps6fmTs6p$YrUU![s7H9_s7ZKerV6BfrqcNhrVZTlo)=4?JcC6~>
+JcC<$JcF'rl2LMWqY^$`rVHKgqY:'arq?<`s7H?_rUU!Y!:^!Vs6]mSrp0jTlK[Wuki_s-:$(Hr
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2gmd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C!9HZE^[=Yck43XfST&WX5Z'Vl-DgUnjc[rh1d6T:VXFS=?":R[KP1Q^3o%P`q;oP*(ieO,f3Z
+N/W[PM2@%ELPCP;K`6T)Jq<oO'n:[\I=-EhH?sj]G^"@TF`heJF)uC$E<1#srb_dSCi')d!buF`
+rb2=Es(;7As().>rF5b7s'Y_2ra,P/q-<i%qc`_sr)io!pf@>nrD`Pjr)3Dhk"tqPr)3;grD`_q
+pf@;or)iSoq-*PtoN_<"rEf;,ra>_6qI9G6rabn;rFZ"@ph9P=bA-ZbrG;FLqJQ7Mrc%aSrc7sY
+qK2[YrH@pZqfr!`oQpF^r-\?hs*jrsr.+fu!.t0%s+CB+re=C-LkpnEMMd=NN/`jYO-#KeP*;,q
+Q'Rc(R$jD4S=Q7CT:qsQUSO``Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K/]]=bei^;%Fu_84"*_o0L4
+`Q#p<rlG,]s2t;`s31Mfr6G>grm:PirmLepqpbVqs47)!s4IA)r7_2*s4mS/s5*e5rSRb9io9ps
+!p&J)roX7D!9jCG!p]+;rp9[Ps6fmTs6p$YrUU![s7H9_s7ZKerV6BfrqcNhrVZTlo)=4?JcC6~>
+JcC<$JcF$ql2LJVqY^'ar;-BfqtU0brq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#Oki_*jjlHF$
+7H3:ai8<DIh;$c=g=b-1f@JI$e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C*BJZa-j?Yck5/XV._9WiE%sVl-DhV50o^U7n9RTDkE)SXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\
+N/W[QMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"TjGlDmfG'3e+!HW;\E<gH$Df0H0D/B2es(_RJ
+rb2=E!+u1@s().>r*o\7ra>V1rEfG.pg!`$r*&htr)io!q,[GorD`Pjr)3>fmnigWr)3;gr)EVp
+pf@>pqcNJnpfdJto3D3!rEf;,ra>\5qdTP7rabk:rFZ%ApLsD;bA-]crG;FLqJQ:Nrc%aSrc8!Z
+qK2^ZrH@s[r-8*aom6L^r-\<grdOirr.+fus+:6&s+LE+re=""LkpnEMMmCON/`jYO-#KeP*;,q
+Q'Rc(R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfen4Z*L^B['mEP\@K/]]=bei^;%Fu_>_:P_o2Pn
+!li:$rl>/_b0'\+s31MfrQbDgs3UYjrmLepqpbVqrmq#!rn.8(r7_2*rnRJ.s5*e5ro!h8s5O%<
+s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKer:p9es8)ThrVZWmnc"+>JcC6~>
+JcC<$JcF$ql2LJVqY^'ar;-BfqtU0brq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#Oki_*jjlHF$
+7H3:ai8<DIh;$c=g=b-1f@JI$e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C*BJZa-j?Yck5/XV._9WiE%sVl-DhV50o^U7n9RTDkE)SXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\
+N/W[QMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"TjGlDmfG'3e+!HW;\E<gH$Df0H0D/B2es(_RJ
+rb2=E!+u1@s().>r*o\7ra>V1rEfG.pg!`$r*&htr)io!q,[GorD`Pjr)3>fmnigWr)3;gr)EVp
+pf@>pqcNJnpfdJto3D3!rEf;,ra>\5qdTP7rabk:rFZ%ApLsD;bA-]crG;FLqJQ:Nrc%aSrc8!Z
+qK2^ZrH@s[r-8*aom6L^r-\<grdOirr.+fus+:6&s+LE+re=""LkpnEMMmCON/`jYO-#KeP*;,q
+Q'Rc(R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfen4Z*L^B['mEP\@K/]]=bei^;%Fu_>_:P_o2Pn
+!li:$rl>/_b0'\+s31MfrQbDgs3UYjrmLepqpbVqrmq#!rn.8(r7_2*rnRJ.s5*e5ro!h8s5O%<
+s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKer:p9es8)ThrVZWmnc"+>JcC6~>
+JcC<$JcF$ql2LJVqY^'ar;-BfqtU0brq?<`s7H?_rUL$[nF6GGs6]mSrp0[OlMg#Oki_*jjlHF$
+7H3:ai8<DIh;$c=g=b-1f@JI$e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=PP`\@8oT
+[C*BJZa-j?Yck5/XV._9WiE%sVl-DhV50o^U7n9RTDkE)SXc1=R[KP1Q^=#'Q'@JqP*(ifO,o<\
+N/W[QMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"TjGlDmfG'3e+!HW;\E<gH$Df0H0D/B2es(_RJ
+rb2=E!+u1@s().>r*o\7ra>V1rEfG.pg!`$r*&htr)io!q,[GorD`Pjr)3>fmnigWr)3;gr)EVp
+pf@>pqcNJnpfdJto3D3!rEf;,ra>\5qdTP7rabk:rFZ%ApLsD;bA-]crG;FLqJQ:Nrc%aSrc8!Z
+qK2^ZrH@s[r-8*aom6L^r-\<grdOirr.+fus+:6&s+LE+re=""LkpnEMMmCON/`jYO-#KeP*;,q
+Q'Rc(R$jD4S"6.BT:hmPUSO]^Vl-JmWiN5'Xfen4Z*L^B['mEP\@K/]]=bei^;%Fu_>_:P_o2Pn
+!li:$rl>/_b0'\+s31MfrQbDgs3UYjrmLepqpbVqrmq#!rn.8(r7_2*rnRJ.s5*e5ro!h8s5O%<
+s5a4AroX7Ds60IHs69UMrTjUQmdC)Cs7$'Yrpp*\s7H9_s7ZKer:p9es8)ThrVZWmnc"+>JcC6~>
+JcC<$JcEsol2LJVqY^'arVHKgqtU0brq?<`s7H?_rUL$[nF6GG8FGm4m-O'(lKRQski_*jjlGI^
+io/kSi8<DIh;$c=g=b*0f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=S!P$+RIQ
+[^EKKZa-k8YQ_55Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]
+NJrgSMZ/G9Lkg_>KnTGX++f&oJ:E&tI=6KiH[:!`G^+FVG'.qLFE;JCEH,r:DuOYSD#eDOC]A,L
+C&M]HB4bcSAcH<@A,Kg8@K'[2?iFC0?2%V%>Pq\"=oDJ$=8>nr<W,nk;uBPd;>j>a;>X8c;uK\o
+<VTVm=8Q+l=nl1q>Ou+t?2S%*?i=C3@JaO4A,^$9Ac66>BD?09C!(2bC]&#JD>J/LDuO_QEW1"X
+F8L(YFo?L[GPl^`H1lR]Hi&3dIJnWoJ,FirJcC?#KE$T)L&Qi,LB*/0M$AiqMi<USNrG)#OHG]h
+PE_>tQC+&-R[]e:SXuIHTqS3VUnsrdW2ZesX0&M,YHY:;Za7$H[^WcW\[oDc]Y2%o^VI\b_?%Qm
+rl"oXa8X0[aT0K^b6#o4c2>leci;AhdJqYoe,%Snec+.sfDjM&g&0S(g]$",h>c@3hu2L5iW%p:
+j8\3?jo4EBkPscFl2U#Kli$2Mm/ZSQmfN"Knbr%YoDeI]p&Facp\agdq>U6equ6NkrUTr=s+11M
+s*t~>
+JcC<$JcEsol2LJVqY^'arVHKgqtU0brq?<`s7H?_rUL$[nF6GG8FGm4m-O'(lKRQski_*jjlGI^
+io/kSi8<DIh;$c=g=b*0f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=S!P$+RIQ
+[^EKKZa-k8YQ_55Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]
+NJrgSMZ/G9Lkg_>KnTGX++f&oJ:E&tI=6KiH[:!`G^+FVG'.qLFE;JCEH,r:DuOYSD#eDOC]A,L
+C&M]HB4bcSAcH<@A,Kg8@K'[2?iFC0?2%V%>Pq\"=oDJ$=8>nr<W,nk;uBPd;>j>a;>X8c;uK\o
+<VTVm=8Q+l=nl1q>Ou+t?2S%*?i=C3@JaO4A,^$9Ac66>BD?09C!(2bC]&#JD>J/LDuO_QEW1"X
+F8L(YFo?L[GPl^`H1lR]Hi&3dIJnWoJ,FirJcC?#KE$T)L&Qi,LB*/0M$AiqMi<USNrG)#OHG]h
+PE_>tQC+&-R[]e:SXuIHTqS3VUnsrdW2ZesX0&M,YHY:;Za7$H[^WcW\[oDc]Y2%o^VI\b_?%Qm
+rl"oXa8X0[aT0K^b6#o4c2>leci;AhdJqYoe,%Snec+.sfDjM&g&0S(g]$",h>c@3hu2L5iW%p:
+j8\3?jo4EBkPscFl2U#Kli$2Mm/ZSQmfN"Knbr%YoDeI]p&Facp\agdq>U6equ6NkrUTr=s+11M
+s*t~>
+JcC<$JcEsol2LJVqY^'arVHKgqtU0brq?<`s7H?_rUL$[nF6GG8FGm4m-O'(lKRQski_*jjlGI^
+io/kSi8<DIh;$c=g=b*0f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=S!P$+RIQ
+[^EKKZa-k8YQ_55Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K(RgbZR$X,(Q'@MsP*1rhO,o<]
+NJrgSMZ/G9Lkg_>KnTGX++f&oJ:E&tI=6KiH[:!`G^+FVG'.qLFE;JCEH,r:DuOYSD#eDOC]A,L
+C&M]HB4bcSAcH<@A,Kg8@K'[2?iFC0?2%V%>Pq\"=oDJ$=8>nr<W,nk;uBPd;>j>a;>X8c;uK\o
+<VTVm=8Q+l=nl1q>Ou+t?2S%*?i=C3@JaO4A,^$9Ac66>BD?09C!(2bC]&#JD>J/LDuO_QEW1"X
+F8L(YFo?L[GPl^`H1lR]Hi&3dIJnWoJ,FirJcC?#KE$T)L&Qi,LB*/0M$AiqMi<USNrG)#OHG]h
+PE_>tQC+&-R[]e:SXuIHTqS3VUnsrdW2ZesX0&M,YHY:;Za7$H[^WcW\[oDc]Y2%o^VI\b_?%Qm
+rl"oXa8X0[aT0K^b6#o4c2>leci;AhdJqYoe,%Snec+.sfDjM&g&0S(g]$",h>c@3hu2L5iW%p:
+j8\3?jo4EBkPscFl2U#Kli$2Mm/ZSQmfN"Knbr%YoDeI]p&Facp\agdq>U6equ6NkrUTr=s+11M
+s*t~>
+JcC<$JcEpnkl1AUqY^*br;-EgqtU0brq?<`s7H?_rpp*Zs7$$V!Uf@Sliue@lKRQskPjU1jlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=YYb\[],W
+[^ELAZN[Y>Yct=6riH@*X/`2!W;`\-VPU)aUS=HUTV.pKSt2C@S!ocEQj&hBQ'IStrfRbROH5H_
+NJrgSMi*@JLkkta$AF.cK7\Z*J:N,urd=fpHiA<qH$FOWG'8$-F9-H'rc&!YDf>Vm!c;airbDRM
+BkdNZ!bZ+WrFQ">raYk8raGe6qHs2-r*B&%r*0,'pf[PtrE&hrrDieqpJ^lcmnrpZp/Cohr)NMm
+rE&kuoNColpKR5oqd'/,q-X,/rF,S4raYq<qITV;rb(t=phAl*n7hW3pM9_Drb_LLrbqdTr,M^V
+rc@sYrcS3`qKMm_r-A$_r-S<gpO3!hrdXfqs+10$rIb-'s+UH,s+^T1reUi:Mi3OQNK4"!3foJe
+P*;,qQ'Rc(R$jG5S=Q7CT:qsQUSO]_Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(ql^V@S#rk\lW
+`5T^8`lJ)"!m/U-rlb>c!6tJfs3L\kr6bPmrmUbormgtuqq(i"s4R;'s4dP.rS@M1rnm\4s5F";
+ro=%>s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQiqtp?ir;H3cJcC<$
+!<7Q~>
+JcC<$JcEpnkl1AUqY^*br;-EgqtU0brq?<`s7H?_rpp*Zs7$$V!Uf@Sliue@lKRQskPjU1jlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=YYb\[],W
+[^ELAZN[Y>Yct=6riH@*X/`2!W;`\-VPU)aUS=HUTV.pKSt2C@S!ocEQj&hBQ'IStrfRbROH5H_
+NJrgSMi*@JLkkta$AF.cK7\Z*J:N,urd=fpHiA<qH$FOWG'8$-F9-H'rc&!YDf>Vm!c;airbDRM
+BkdNZ!bZ+WrFQ">raYk8raGe6qHs2-r*B&%r*0,'pf[PtrE&hrrDieqpJ^lcmnrpZp/Cohr)NMm
+rE&kuoNColpKR5oqd'/,q-X,/rF,S4raYq<qITV;rb(t=phAl*n7hW3pM9_Drb_LLrbqdTr,M^V
+rc@sYrcS3`qKMm_r-A$_r-S<gpO3!hrdXfqs+10$rIb-'s+UH,s+^T1reUi:Mi3OQNK4"!3foJe
+P*;,qQ'Rc(R$jG5S=Q7CT:qsQUSO]_Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(ql^V@S#rk\lW
+`5T^8`lJ)"!m/U-rlb>c!6tJfs3L\kr6bPmrmUbormgtuqq(i"s4R;'s4dP.rS@M1rnm\4s5F";
+ro=%>s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQiqtp?ir;H3cJcC<$
+!<7Q~>
+JcC<$JcEpnkl1AUqY^*br;-EgqtU0brq?<`s7H?_rpp*Zs7$$V!Uf@Sliue@lKRQskPjU1jlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*L"_c-4ASb/q`Ga2Z*;`5BI/_8*h#^:h1l]=YYb\[],W
+[^ELAZN[Y>Yct=6riH@*X/`2!W;`\-VPU)aUS=HUTV.pKSt2C@S!ocEQj&hBQ'IStrfRbROH5H_
+NJrgSMi*@JLkkta$AF.cK7\Z*J:N,urd=fpHiA<qH$FOWG'8$-F9-H'rc&!YDf>Vm!c;airbDRM
+BkdNZ!bZ+WrFQ">raYk8raGe6qHs2-r*B&%r*0,'pf[PtrE&hrrDieqpJ^lcmnrpZp/Cohr)NMm
+rE&kuoNColpKR5oqd'/,q-X,/rF,S4raYq<qITV;rb(t=phAl*n7hW3pM9_Drb_LLrbqdTr,M^V
+rc@sYrcS3`qKMm_r-A$_r-S<gpO3!hrdXfqs+10$rIb-'s+UH,s+^T1reUi:Mi3OQNK4"!3foJe
+P*;,qQ'Rc(R$jG5S=Q7CT:qsQUSO]_Vl-JnWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(ql^V@S#rk\lW
+`5T^8`lJ)"!m/U-rlb>c!6tJfs3L\kr6bPmrmUbormgtuqq(i"s4R;'s4dP.rS@M1rnm\4s5F";
+ro=%>s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQiqtp?ir;H3cJcC<$
+!<7Q~>
+JcC<$JcEjlkl1AUqu$0brVHKgqtU3crq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg$8ki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Cp]Y(kf\[f5Z
+rjEWN['R*EZ*CO;YHG"0XK/D%Wi;qpVl$<iU_9GsTqS-OSt;LDS=?":R@'A.QN!-QP`q8nOc]R'
+"ceS$N/NSmM$8]jL5(D8rdt`5JUi9#IsufoI!^3dH?jc7G6`;6F`__HEcV/!!H;uVDZ=PRD#J,N
+C2%D\BEDgYB)H6?AH-0:@fBg8@/41-?N"1(>l@n)>5;>#=T)=s<rQ+s<;0>`;ZBVd;YF&e<;fhl
+<r?%s=S#\j>4u1k>l.h*?MRt,@/aU3@f9g9AGTm:B)QB9B_Z<.C?fO.CA;TCD#J5JDZ4SSE;OYS
+ErU4XFT-F^G5?F^Gl;p_HMi-fI.r'eIf4cnJGt-"K)C9$K`?c*LB!&/M#N53MMqIm!KE-=O#iAb
+P*2#nQ'IZ%R$a;1S"#t?StD[LU8+N[V5C/hWN*##Xf\b1Yd(L?ZaI6M\%&uZ]"G\h^;%Fu_>_:Z
+_o0O5`lH-@aN;QHrlb>cs3:Pgs3L_lr6bMls3pkprmh#!qUb`!rn75'rnIG-rS@J0s53e5s5F";
+rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3as7cHds7uZjqYU6hrVc9cJcC<$
+!<7Q~>
+JcC<$JcEjlkl1AUqu$0brVHKgqtU3crq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg$8ki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Cp]Y(kf\[f5Z
+rjEWN['R*EZ*CO;YHG"0XK/D%Wi;qpVl$<iU_9GsTqS-OSt;LDS=?":R@'A.QN!-QP`q8nOc]R'
+"ceS$N/NSmM$8]jL5(D8rdt`5JUi9#IsufoI!^3dH?jc7G6`;6F`__HEcV/!!H;uVDZ=PRD#J,N
+C2%D\BEDgYB)H6?AH-0:@fBg8@/41-?N"1(>l@n)>5;>#=T)=s<rQ+s<;0>`;ZBVd;YF&e<;fhl
+<r?%s=S#\j>4u1k>l.h*?MRt,@/aU3@f9g9AGTm:B)QB9B_Z<.C?fO.CA;TCD#J5JDZ4SSE;OYS
+ErU4XFT-F^G5?F^Gl;p_HMi-fI.r'eIf4cnJGt-"K)C9$K`?c*LB!&/M#N53MMqIm!KE-=O#iAb
+P*2#nQ'IZ%R$a;1S"#t?StD[LU8+N[V5C/hWN*##Xf\b1Yd(L?ZaI6M\%&uZ]"G\h^;%Fu_>_:Z
+_o0O5`lH-@aN;QHrlb>cs3:Pgs3L_lr6bMls3pkprmh#!qUb`!rn75'rnIG-rS@J0s53e5s5F";
+rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3as7cHds7uZjqYU6hrVc9cJcC<$
+!<7Q~>
+JcC<$JcEjlkl1AUqu$0brVHKgqtU3crq?<`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg$8ki_*jjlGL_
+j5T%Ui8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%&^V7Cp]Y(kf\[f5Z
+rjEWN['R*EZ*CO;YHG"0XK/D%Wi;qpVl$<iU_9GsTqS-OSt;LDS=?":R@'A.QN!-QP`q8nOc]R'
+"ceS$N/NSmM$8]jL5(D8rdt`5JUi9#IsufoI!^3dH?jc7G6`;6F`__HEcV/!!H;uVDZ=PRD#J,N
+C2%D\BEDgYB)H6?AH-0:@fBg8@/41-?N"1(>l@n)>5;>#=T)=s<rQ+s<;0>`;ZBVd;YF&e<;fhl
+<r?%s=S#\j>4u1k>l.h*?MRt,@/aU3@f9g9AGTm:B)QB9B_Z<.C?fO.CA;TCD#J5JDZ4SSE;OYS
+ErU4XFT-F^G5?F^Gl;p_HMi-fI.r'eIf4cnJGt-"K)C9$K`?c*LB!&/M#N53MMqIm!KE-=O#iAb
+P*2#nQ'IZ%R$a;1S"#t?StD[LU8+N[V5C/hWN*##Xf\b1Yd(L?ZaI6M\%&uZ]"G\h^;%Fu_>_:Z
+_o0O5`lH-@aN;QHrlb>cs3:Pgs3L_lr6bMls3pkprmh#!qUb`!rn75'rnIG-rS@J0s53e5s5F";
+rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrpTmVs7-'Ys7?9_rUp3as7cHds7uZjqYU6hrVc9cJcC<$
+!<7Q~>
+JcC<$JcEjlkPk8TqY^*brVHKgqtU3cs7ZB`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Oki_*jjlHF$
+2WE]Ri8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%'^V@Lr]Y(kfrj`3B
+\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;qqVl-DgUnjc[rh0stT:VXFS=?":R[KP1Q^3o%P`u*0%Zuj6
+O,f3YN/NUOM2@%Dre:T1KS+o/Jc:02IsufoI!g9eH?jd\GB\4RFoHI`F)q8"s)7sVrb_dSCi')d
+s(_RJrFl4Ds(;4@s()+=qdTP5rF#D-rEfD-pg!c%rEB#"r`K,#qH!Ppr)E>fmS`[Ur)ESopf@;o
+r)iSopKI8pnQbrsr*K5,rF#V5qI9G6rabk:rau(@pLs;8n7q*"q.fY>rbVOMqelFPrc%dTrc8!Z
+r,hp\rc\0_rcnBeq0N!dr-\6erI4ZoqLJQrrdt'#s+LE+rItB/Lku%es,$f7repl;NrG)#OHG]h
+PE_>tQC!u+R@9V7S=Q7DTV8'RUnjiaVl-MoWiN8(Y-5(7ZEpmE[C3QS\[f;`]Y(tn^VI\b_?Iiq
+`Poj;rl>/_b0'_,!mJp6rm(Pis3U_lrmLhqqpbVqrmpturRh,&qqD&(s4mM-s5*e5r8@V6s5O";
+s5a4AroX7Ds60FG!p]+;rTjUQmdC&Bs6p$YrUU![s7H9_s7ZHdrV6BfrqcNhrVZTlo)=4?JcGcM
+J,~>
+JcC<$JcEjlkPk8TqY^*brVHKgqtU3cs7ZB`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Oki_*jjlHF$
+2WE]Ri8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%'^V@Lr]Y(kfrj`3B
+\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;qqVl-DgUnjc[rh0stT:VXFS=?":R[KP1Q^3o%P`u*0%Zuj6
+O,f3YN/NUOM2@%Dre:T1KS+o/Jc:02IsufoI!g9eH?jd\GB\4RFoHI`F)q8"s)7sVrb_dSCi')d
+s(_RJrFl4Ds(;4@s()+=qdTP5rF#D-rEfD-pg!c%rEB#"r`K,#qH!Ppr)E>fmS`[Ur)ESopf@;o
+r)iSopKI8pnQbrsr*K5,rF#V5qI9G6rabk:rau(@pLs;8n7q*"q.fY>rbVOMqelFPrc%dTrc8!Z
+r,hp\rc\0_rcnBeq0N!dr-\6erI4ZoqLJQrrdt'#s+LE+rItB/Lku%es,$f7repl;NrG)#OHG]h
+PE_>tQC!u+R@9V7S=Q7DTV8'RUnjiaVl-MoWiN8(Y-5(7ZEpmE[C3QS\[f;`]Y(tn^VI\b_?Iiq
+`Poj;rl>/_b0'_,!mJp6rm(Pis3U_lrmLhqqpbVqrmpturRh,&qqD&(s4mM-s5*e5r8@V6s5O";
+s5a4AroX7Ds60FG!p]+;rTjUQmdC&Bs6p$YrUU![s7H9_s7ZHdrV6BfrqcNhrVZTlo)=4?JcGcM
+J,~>
+JcC<$JcEjlkPk8TqY^*brVHKgqtU3cs7ZB`s7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Oki_*jjlHF$
+2WE]Ri8<DIh;$c=g=b-1f@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[2_SO%'^V@Lr]Y(kfrj`3B
+\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;qqVl-DgUnjc[rh0stT:VXFS=?":R[KP1Q^3o%P`u*0%Zuj6
+O,f3YN/NUOM2@%Dre:T1KS+o/Jc:02IsufoI!g9eH?jd\GB\4RFoHI`F)q8"s)7sVrb_dSCi')d
+s(_RJrFl4Ds(;4@s()+=qdTP5rF#D-rEfD-pg!c%rEB#"r`K,#qH!Ppr)E>fmS`[Ur)ESopf@;o
+r)iSopKI8pnQbrsr*K5,rF#V5qI9G6rabk:rau(@pLs;8n7q*"q.fY>rbVOMqelFPrc%dTrc8!Z
+r,hp\rc\0_rcnBeq0N!dr-\6erI4ZoqLJQrrdt'#s+LE+rItB/Lku%es,$f7repl;NrG)#OHG]h
+PE_>tQC!u+R@9V7S=Q7DTV8'RUnjiaVl-MoWiN8(Y-5(7ZEpmE[C3QS\[f;`]Y(tn^VI\b_?Iiq
+`Poj;rl>/_b0'_,!mJp6rm(Pis3U_lrmLhqqpbVqrmpturRh,&qqD&(s4mM-s5*e5r8@V6s5O";
+s5a4AroX7Ds60FG!p]+;rTjUQmdC&Bs6p$YrUU![s7H9_s7ZHdrV6BfrqcNhrVZTlo)=4?JcGcM
+J,~>
+JcC<$JcEdjkPk8Tqu$3crVHKgqtU3cs7ZB`!qc*UrUL$[nF6GG$h!ELm-O''lKRQskPjTQjlGI^
+io/hRhqm2FgtVh^*SK)sf@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[n_@FDt^V@Lr]Y(kg]",A]
+\,NfY[C!9HZE^[=Yck43XfSS(WiE%sVl-DgV50o^U7n9RTDkDpSXc1=R[KP1Q^3r&Q'@JqP*(k*
+Nt.20N/W[PM2@%ELPCP;K`6T2Jq8H&IsuipI=-D@H3&;9rc\BdFoHL_Er^7[E<:)tDuOVUD/=%f
+C]A/LC&M`FBE)TAAcH<?A,Ba6@JsU/?i47/?2.\'>Q.h%=oMP%=8Gtq<W,nO;u9Pl<VTVm=8Z1m
+=nl1m>OYnp?2S%)?iFI4@JXI4A,^$8Ac66>BD-$2C&)N$C&2T>C]8/KD>S5NDuO_REW1"YF8U.Z
+FoHR^GQ)jcH2;jcHi8?eIJeQlJ,+WoJc:8uKE$W)L&Hc+L]<20M#rQmMuJY9NK4"!6]dFnP*;,q
+Q'Rc(R$jD4S"-%@StD^MU8+N[VPg>jWN*##Xf\e2Yd(L?['d?N\@K/]]=bei^;%Fu_8=(,`5T^8
+a8X-\aiaV+s3(Jfrm(Pis3U_ls3gnqr7(_rrmpturn.2&qqD&(rnRG-rnd\4r8@V6s5O";s5a4A
+rT=.Cs60FG!p]+;rTsRO!:KgSs7$'YrUL$]o^r(Ss7ZKer:p9es8)ThrVZTlo)=4?JcGcMJ,~>
+JcC<$JcEdjkPk8Tqu$3crVHKgqtU3cs7ZB`!qc*UrUL$[nF6GG$h!ELm-O''lKRQskPjTQjlGI^
+io/hRhqm2FgtVh^*SK)sf@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[n_@FDt^V@Lr]Y(kg]",A]
+\,NfY[C!9HZE^[=Yck43XfSS(WiE%sVl-DgV50o^U7n9RTDkDpSXc1=R[KP1Q^3r&Q'@JqP*(k*
+Nt.20N/W[PM2@%ELPCP;K`6T2Jq8H&IsuipI=-D@H3&;9rc\BdFoHL_Er^7[E<:)tDuOVUD/=%f
+C]A/LC&M`FBE)TAAcH<?A,Ba6@JsU/?i47/?2.\'>Q.h%=oMP%=8Gtq<W,nO;u9Pl<VTVm=8Z1m
+=nl1m>OYnp?2S%)?iFI4@JXI4A,^$8Ac66>BD-$2C&)N$C&2T>C]8/KD>S5NDuO_REW1"YF8U.Z
+FoHR^GQ)jcH2;jcHi8?eIJeQlJ,+WoJc:8uKE$W)L&Hc+L]<20M#rQmMuJY9NK4"!6]dFnP*;,q
+Q'Rc(R$jD4S"-%@StD^MU8+N[VPg>jWN*##Xf\e2Yd(L?['d?N\@K/]]=bei^;%Fu_8=(,`5T^8
+a8X-\aiaV+s3(Jfrm(Pis3U_ls3gnqr7(_rrmpturn.2&qqD&(rnRG-rnd\4r8@V6s5O";s5a4A
+rT=.Cs60FG!p]+;rTsRO!:KgSs7$'YrUL$]o^r(Ss7ZKer:p9es8)ThrVZTlo)=4?JcGcMJ,~>
+JcC<$JcEdjkPk8Tqu$3crVHKgqtU3cs7ZB`!qc*UrUL$[nF6GG$h!ELm-O''lKRQskPjTQjlGI^
+io/hRhqm2FgtVh^*SK)sf@JL%eC2jndEp4bcHXSVbK@rJaN)<>`Pf[n_@FDt^V@Lr]Y(kg]",A]
+\,NfY[C!9HZE^[=Yck43XfSS(WiE%sVl-DgV50o^U7n9RTDkDpSXc1=R[KP1Q^3r&Q'@JqP*(k*
+Nt.20N/W[PM2@%ELPCP;K`6T2Jq8H&IsuipI=-D@H3&;9rc\BdFoHL_Er^7[E<:)tDuOVUD/=%f
+C]A/LC&M`FBE)TAAcH<?A,Ba6@JsU/?i47/?2.\'>Q.h%=oMP%=8Gtq<W,nO;u9Pl<VTVm=8Z1m
+=nl1m>OYnp?2S%)?iFI4@JXI4A,^$8Ac66>BD-$2C&)N$C&2T>C]8/KD>S5NDuO_REW1"YF8U.Z
+FoHR^GQ)jcH2;jcHi8?eIJeQlJ,+WoJc:8uKE$W)L&Hc+L]<20M#rQmMuJY9NK4"!6]dFnP*;,q
+Q'Rc(R$jD4S"-%@StD^MU8+N[VPg>jWN*##Xf\e2Yd(L?['d?N\@K/]]=bei^;%Fu_8=(,`5T^8
+a8X-\aiaV+s3(Jfrm(Pis3U_ls3gnqr7(_rrmpturn.2&qqD&(rnRG-rnd\4r8@V6s5O";s5a4A
+rT=.Cs60FG!p]+;rTsRO!:KgSs7$'YrUL$]o^r(Ss7ZKer:p9es8)ThrVZTlo)=4?JcGcMJ,~>
+JcC<$JcE^hkPk8Tqu$3crVHNhqtU3cs7ZB`!qc*UrUL$[nF6GG!Uf@SliHG;rol`4kN:pgjlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[3_SX.)^V@Lr]tD"i])K5R
+\@8oT[C!<IZa-j?Yck75Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K&t55UR$X,(Q'@JrP*1rh
+O,o<\req>FMM[1GLPCP;KnP)2Jq<oO&:].WI=-EhH?sj^G^"@TG'3e+#BOp+EH,r:DuOYSD?"GO
+C]A/LC&M`FBE)TAAc?6>A,9[5@JsU/?i47/?27b(>Q.h&=oDJ%=8>nq<W#hR;uBVm<VKPm=8Z1m
+=nl1m>OGbn?2S%)?i=C3@JaO4A,^$8Ac?<>BD-#^C&2T>C]8/LD>S5MDuXeSEW1"YF8U.ZFoQX^
+GQ2peH2;jdHi8?eIJnWmJ,"QnJc12tKE$W(L&Hc+L]<20M>rG5MuJ\8N<#"<Ns1W-P*2#nrfoO1
+Q^F/.S"#q=St;RITqS6WUnsrdW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf]tV7r^qmn)_o0O5`lJ)"
+!QiL`b6#o4c2Puicd:&;dJqYpe,7_pec+.sfDaG%g%sG%g]$"*h>Z:2hu)F3iW%p9j8\3?jo+?A
+kPscEklU/9li$2MmJlVRn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HkrUKl<s+14Ms*t~>
+JcC<$JcE^hkPk8Tqu$3crVHNhqtU3cs7ZB`!qc*UrUL$[nF6GG!Uf@SliHG;rol`4kN:pgjlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[3_SX.)^V@Lr]tD"i])K5R
+\@8oT[C!<IZa-j?Yck75Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K&t55UR$X,(Q'@JrP*1rh
+O,o<\req>FMM[1GLPCP;KnP)2Jq<oO&:].WI=-EhH?sj^G^"@TG'3e+#BOp+EH,r:DuOYSD?"GO
+C]A/LC&M`FBE)TAAc?6>A,9[5@JsU/?i47/?27b(>Q.h&=oDJ%=8>nq<W#hR;uBVm<VKPm=8Z1m
+=nl1m>OGbn?2S%)?i=C3@JaO4A,^$8Ac?<>BD-#^C&2T>C]8/LD>S5MDuXeSEW1"YF8U.ZFoQX^
+GQ2peH2;jdHi8?eIJnWmJ,"QnJc12tKE$W(L&Hc+L]<20M>rG5MuJ\8N<#"<Ns1W-P*2#nrfoO1
+Q^F/.S"#q=St;RITqS6WUnsrdW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf]tV7r^qmn)_o0O5`lJ)"
+!QiL`b6#o4c2Puicd:&;dJqYpe,7_pec+.sfDaG%g%sG%g]$"*h>Z:2hu)F3iW%p9j8\3?jo+?A
+kPscEklU/9li$2MmJlVRn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HkrUKl<s+14Ms*t~>
+JcC<$JcE^hkPk8Tqu$3crVHNhqtU3cs7ZB`!qc*UrUL$[nF6GG!Uf@SliHG;rol`4kN:pgjlGI^
+io/hRhqm2FgtUQ:g"=p.f%&:"e'cXkd*U+acHXSVbK@rJaN)<>`Pf[3_SX.)^V@Lr]tD"i])K5R
+\@8oT[C!<IZa-j?Yck75Xf\\*ri-U1W2HPjV50o^US=HUTV%gISXf\K&t55UR$X,(Q'@JrP*1rh
+O,o<\req>FMM[1GLPCP;KnP)2Jq<oO&:].WI=-EhH?sj^G^"@TG'3e+#BOp+EH,r:DuOYSD?"GO
+C]A/LC&M`FBE)TAAc?6>A,9[5@JsU/?i47/?27b(>Q.h&=oDJ%=8>nq<W#hR;uBVm<VKPm=8Z1m
+=nl1m>OGbn?2S%)?i=C3@JaO4A,^$8Ac?<>BD-#^C&2T>C]8/LD>S5MDuXeSEW1"YF8U.ZFoQX^
+GQ2peH2;jdHi8?eIJnWmJ,"QnJc12tKE$W(L&Hc+L]<20M>rG5MuJ\8N<#"<Ns1W-P*2#nrfoO1
+Q^F/.S"#q=St;RITqS6WUnsrdW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf]tV7r^qmn)_o0O5`lJ)"
+!QiL`b6#o4c2Puicd:&;dJqYpe,7_pec+.sfDaG%g%sG%g]$"*h>Z:2hu)F3iW%p9j8\3?jo+?A
+kPscEklU/9li$2MmJlVRn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HkrUKl<s+14Ms*t~>
+JcC<$JcE[gk5P2Tqu$3crqcThr:p9cs7ZEas7H?_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+)<0W5i8<DIh;$c=g=b-1f@JL%eC2jndEp5=c3_b>bKJ&MaN2EArl#&Z_ns:,_#D(U^:h1l]=YYb
+\[]-J[L0FLZa6sCZ*:I9Y5YO,XK/A$WMofo&uMM$UnaZXTqJ'NSt;LCS"#k7rg4"YQBd`"PEM)k
+OT(:NNfB!VMi*@JLkph@L4t<[K*m3]J:N,uIXQWlHiA<lH$K=4#Bk64FEDSFErL(YDuahUDZ=SR
+D#S5MCB&#HB`;ZEB)H6>AGp$7@f9a6@/++-?N"1*>lIt+>5DD$=T)=t<r>tp<9R9W<;]bj<r?%s
+=S5hl>4Ytb>l.h)?MRt,@/aU2@fBm:AGTm9B)QB9BZb&dCA;TDD#S;KDZ=YSE;X_UErL.YFT-F_
+G5QR`GlE!cHN&9jI//3hIf+]jJGk&uK)1-!K`?c(LB!&/M#E/3MMmDlN!kW*NfT6_OHG]hPEc'3
+7$a1,R$jD4S"-(AT:hmOU8+N\VPg>kWiE,$Xfek3Yd1UA['d?O\@K/]]Y(ql^V@S#_SX4/`Poj;
+aN2KFb0.uPbg$.4s3C\lrR(Yns3pqrrmh&"qq(f!rn7/%rnIG-qVD2.rnmY3ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrU9dU!:g$Ys7?9_r:U*`s7cHdrqZQiqtp?ir;H0bJcC<$s8RT~>
+JcC<$JcE[gk5P2Tqu$3crqcThr:p9cs7ZEas7H?_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+)<0W5i8<DIh;$c=g=b-1f@JL%eC2jndEp5=c3_b>bKJ&MaN2EArl#&Z_ns:,_#D(U^:h1l]=YYb
+\[]-J[L0FLZa6sCZ*:I9Y5YO,XK/A$WMofo&uMM$UnaZXTqJ'NSt;LCS"#k7rg4"YQBd`"PEM)k
+OT(:NNfB!VMi*@JLkph@L4t<[K*m3]J:N,uIXQWlHiA<lH$K=4#Bk64FEDSFErL(YDuahUDZ=SR
+D#S5MCB&#HB`;ZEB)H6>AGp$7@f9a6@/++-?N"1*>lIt+>5DD$=T)=t<r>tp<9R9W<;]bj<r?%s
+=S5hl>4Ytb>l.h)?MRt,@/aU2@fBm:AGTm9B)QB9BZb&dCA;TDD#S;KDZ=YSE;X_UErL.YFT-F_
+G5QR`GlE!cHN&9jI//3hIf+]jJGk&uK)1-!K`?c(LB!&/M#E/3MMmDlN!kW*NfT6_OHG]hPEc'3
+7$a1,R$jD4S"-(AT:hmOU8+N\VPg>kWiE,$Xfek3Yd1UA['d?O\@K/]]Y(ql^V@S#_SX4/`Poj;
+aN2KFb0.uPbg$.4s3C\lrR(Yns3pqrrmh&"qq(f!rn7/%rnIG-qVD2.rnmY3ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrU9dU!:g$Ys7?9_r:U*`s7cHdrqZQiqtp?ir;H0bJcC<$s8RT~>
+JcC<$JcE[gk5P2Tqu$3crqcThr:p9cs7ZEas7H?_rpp*Z!:^!V&FSrQm-O'(lKRQski_*jjlHF$
+)<0W5i8<DIh;$c=g=b-1f@JL%eC2jndEp5=c3_b>bKJ&MaN2EArl#&Z_ns:,_#D(U^:h1l]=YYb
+\[]-J[L0FLZa6sCZ*:I9Y5YO,XK/A$WMofo&uMM$UnaZXTqJ'NSt;LCS"#k7rg4"YQBd`"PEM)k
+OT(:NNfB!VMi*@JLkph@L4t<[K*m3]J:N,uIXQWlHiA<lH$K=4#Bk64FEDSFErL(YDuahUDZ=SR
+D#S5MCB&#HB`;ZEB)H6>AGp$7@f9a6@/++-?N"1*>lIt+>5DD$=T)=t<r>tp<9R9W<;]bj<r?%s
+=S5hl>4Ytb>l.h)?MRt,@/aU2@fBm:AGTm9B)QB9BZb&dCA;TDD#S;KDZ=YSE;X_UErL.YFT-F_
+G5QR`GlE!cHN&9jI//3hIf+]jJGk&uK)1-!K`?c(LB!&/M#E/3MMmDlN!kW*NfT6_OHG]hPEc'3
+7$a1,R$jD4S"-(AT:hmOU8+N\VPg>kWiE,$Xfek3Yd1UA['d?O\@K/]]Y(ql^V@S#_SX4/`Poj;
+aN2KFb0.uPbg$.4s3C\lrR(Yns3pqrrmh&"qq(f!rn7/%rnIG-qVD2.rnmY3ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrU9dU!:g$Ys7?9_r:U*`s7cHdrqZQiqtp?ir;H0bJcC<$s8RT~>
+JcC<$JcEXfk5P2TqY^-crVHNhr:p9cs7ZEas7H?_rpg-\nF6GG'^kAUm-O'(lKRQskND!ijlGI^
+io0mp(#Rm(h;$c=g=b-1f@JL%eC2jndEp5=c5b*QbKJ&MaN2EA`l5p8_ns:,_8*h#^:h4m]XtcS
+\I,jU[^NTO['R*EZ2Us;YHG"0XK/D%Wi;qpVl$<iUbSX=TqS-OSt;LDS=?":R@'A.QBd`"PEV/m
+OcYWbNfB!VMi3ILM26qAL4t>7K7ec,rdYQ0IXQWlI!^0cH$OXYGBS.PrcA3_EcV/!!cW'rrbhaQ
+s(q[Ms(_RJr+Q+Crau(>rFGn;q-s;2r*]>-rEfG.qHX#(rEB)$rE0&#pf@;mqGcu`pf./kpK%2n
+r)iVpq-*Aol!4*kr*K2+rF#V5qI9G6rabk:rFZ"@ok;N_qeGnArbVRNr,2LPs)@mUrc8$[r,hs]
+s*"<arcnHgqg/6grd=QjrI4]pq1/EprIXitre19)r.b6,s+pW1s,$f7rJUc:NrG+>OA(e"P*;,p
+Q'IZ%R$a;1S"#q=St;UKTq\<XUnsueW2ZetXKAV.YctC<Za@-K[^`lY]">Vf^;%Fu_8=(,`5T^8
+a2l?Dai_fMbfn?2c2u>=d/MGmdf7epeGn(uf)4/!f`'S#gATe*h"ok+hYuF1i;V^8ir%j:jT"?>
+k5XWEkl'cGl2^/Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcEXfk5P2TqY^-crVHNhr:p9cs7ZEas7H?_rpg-\nF6GG'^kAUm-O'(lKRQskND!ijlGI^
+io0mp(#Rm(h;$c=g=b-1f@JL%eC2jndEp5=c5b*QbKJ&MaN2EA`l5p8_ns:,_8*h#^:h4m]XtcS
+\I,jU[^NTO['R*EZ2Us;YHG"0XK/D%Wi;qpVl$<iUbSX=TqS-OSt;LDS=?":R@'A.QBd`"PEV/m
+OcYWbNfB!VMi3ILM26qAL4t>7K7ec,rdYQ0IXQWlI!^0cH$OXYGBS.PrcA3_EcV/!!cW'rrbhaQ
+s(q[Ms(_RJr+Q+Crau(>rFGn;q-s;2r*]>-rEfG.qHX#(rEB)$rE0&#pf@;mqGcu`pf./kpK%2n
+r)iVpq-*Aol!4*kr*K2+rF#V5qI9G6rabk:rFZ"@ok;N_qeGnArbVRNr,2LPs)@mUrc8$[r,hs]
+s*"<arcnHgqg/6grd=QjrI4]pq1/EprIXitre19)r.b6,s+pW1s,$f7rJUc:NrG+>OA(e"P*;,p
+Q'IZ%R$a;1S"#q=St;UKTq\<XUnsueW2ZetXKAV.YctC<Za@-K[^`lY]">Vf^;%Fu_8=(,`5T^8
+a2l?Dai_fMbfn?2c2u>=d/MGmdf7epeGn(uf)4/!f`'S#gATe*h"ok+hYuF1i;V^8ir%j:jT"?>
+k5XWEkl'cGl2^/Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcEXfk5P2TqY^-crVHNhr:p9cs7ZEas7H?_rpg-\nF6GG'^kAUm-O'(lKRQskND!ijlGI^
+io0mp(#Rm(h;$c=g=b-1f@JL%eC2jndEp5=c5b*QbKJ&MaN2EA`l5p8_ns:,_8*h#^:h4m]XtcS
+\I,jU[^NTO['R*EZ2Us;YHG"0XK/D%Wi;qpVl$<iUbSX=TqS-OSt;LDS=?":R@'A.QBd`"PEV/m
+OcYWbNfB!VMi3ILM26qAL4t>7K7ec,rdYQ0IXQWlI!^0cH$OXYGBS.PrcA3_EcV/!!cW'rrbhaQ
+s(q[Ms(_RJr+Q+Crau(>rFGn;q-s;2r*]>-rEfG.qHX#(rEB)$rE0&#pf@;mqGcu`pf./kpK%2n
+r)iVpq-*Aol!4*kr*K2+rF#V5qI9G6rabk:rFZ"@ok;N_qeGnArbVRNr,2LPs)@mUrc8$[r,hs]
+s*"<arcnHgqg/6grd=QjrI4]pq1/EprIXitre19)r.b6,s+pW1s,$f7rJUc:NrG+>OA(e"P*;,p
+Q'IZ%R$a;1S"#q=St;UKTq\<XUnsueW2ZetXKAV.YctC<Za@-K[^`lY]">Vf^;%Fu_8=(,`5T^8
+a2l?Dai_fMbfn?2c2u>=d/MGmdf7epeGn(uf)4/!f`'S#gATe*h"ok+hYuF1i;V^8ir%j:jT"?>
+k5XWEkl'cGl2^/Km/QJQmeuVSnGi%Wo)J=]o_nI_pAXgaq#C0hqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcERdk5P2Tqu$6drVHNhr:p9cs7ZEas7?<_rUL$[nF6GG!Uf@SliHG;rojIIkPjTMjlGI^
+io/hRhqn@g)Vj*$g=b-1f@JL%eC2jndEp4ccHa\YbKJ&Mrl>8``l5p8_u@LR_8-&b&&,`i]Xtee
+\[f5Z\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;trVl-DgUnjc[rh0XkT:VXFS=?":RJrQ[Q^3o%P`q8n
+Oc]R'(QOK6N/NRMM26qBL5(D8K7ec,JUi9#If=`rI!bj=!I8qhG62r1FoHI`F)q5!!cW'rrbhaQ
+s(q[MrbDIIrFl1Crau%=rabt;q-s81rF#G.ra,P/qHX#(r`]/$r`K,#pf@8ll;[U[p/_)mr)iVp
+q-*Dpk$7dhr*K2+rF#V5qI9G6rFGe:rFYt?p1VW`qeGqBrG;IMr,2LPs)@mUs)S-\r,hs]s*"<a
+s*4Ngr-J?hs*XZkrdOfqq1/EprIXitre19)qhG-+reUN0s,-i7rf$l:!07&>#*=t0P*2#nrfp'@
+Q^F/.R[]e:SXuFFTV8*TUnjiaVl6SpWiN8(Y-5(7ZEpmF[^NZT\[oDc]Y2%o^qmn)_o0O5`lH0A
+aiV]KbKS5UcHab^d/MGmdf7epeGn)!f)4/!f`'S#gA]k*h"ok+hYuF0i;V^7ir.p:jT"??k5XWD
+kl'cGlMp2Lm/QJQmeuVSnGi%Wo)J=]o_nI^pAambq#:*gqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcERdk5P2Tqu$6drVHNhr:p9cs7ZEas7?<_rUL$[nF6GG!Uf@SliHG;rojIIkPjTMjlGI^
+io/hRhqn@g)Vj*$g=b-1f@JL%eC2jndEp4ccHa\YbKJ&Mrl>8``l5p8_u@LR_8-&b&&,`i]Xtee
+\[f5Z\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;trVl-DgUnjc[rh0XkT:VXFS=?":RJrQ[Q^3o%P`q8n
+Oc]R'(QOK6N/NRMM26qBL5(D8K7ec,JUi9#If=`rI!bj=!I8qhG62r1FoHI`F)q5!!cW'rrbhaQ
+s(q[MrbDIIrFl1Crau%=rabt;q-s81rF#G.ra,P/qHX#(r`]/$r`K,#pf@8ll;[U[p/_)mr)iVp
+q-*Dpk$7dhr*K2+rF#V5qI9G6rFGe:rFYt?p1VW`qeGqBrG;IMr,2LPs)@mUs)S-\r,hs]s*"<a
+s*4Ngr-J?hs*XZkrdOfqq1/EprIXitre19)qhG-+reUN0s,-i7rf$l:!07&>#*=t0P*2#nrfp'@
+Q^F/.R[]e:SXuFFTV8*TUnjiaVl6SpWiN8(Y-5(7ZEpmF[^NZT\[oDc]Y2%o^qmn)_o0O5`lH0A
+aiV]KbKS5UcHab^d/MGmdf7epeGn)!f)4/!f`'S#gA]k*h"ok+hYuF0i;V^7ir.p:jT"??k5XWD
+kl'cGlMp2Lm/QJQmeuVSnGi%Wo)J=]o_nI^pAambq#:*gqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcERdk5P2Tqu$6drVHNhr:p9cs7ZEas7?<_rUL$[nF6GG!Uf@SliHG;rojIIkPjTMjlGI^
+io/hRhqn@g)Vj*$g=b-1f@JL%eC2jndEp4ccHa\YbKJ&Mrl>8``l5p8_u@LR_8-&b&&,`i]Xtee
+\[f5Z\$i`Q[/RBJZE^X<YHG%1XfSS'Wi;trVl-DgUnjc[rh0XkT:VXFS=?":RJrQ[Q^3o%P`q8n
+Oc]R'(QOK6N/NRMM26qBL5(D8K7ec,JUi9#If=`rI!bj=!I8qhG62r1FoHI`F)q5!!cW'rrbhaQ
+s(q[MrbDIIrFl1Crau%=rabt;q-s81rF#G.ra,P/qHX#(r`]/$r`K,#pf@8ll;[U[p/_)mr)iVp
+q-*Dpk$7dhr*K2+rF#V5qI9G6rFGe:rFYt?p1VW`qeGqBrG;IMr,2LPs)@mUs)S-\r,hs]s*"<a
+s*4Ngr-J?hs*XZkrdOfqq1/EprIXitre19)qhG-+reUN0s,-i7rf$l:!07&>#*=t0P*2#nrfp'@
+Q^F/.R[]e:SXuFFTV8*TUnjiaVl6SpWiN8(Y-5(7ZEpmF[^NZT\[oDc]Y2%o^qmn)_o0O5`lH0A
+aiV]KbKS5UcHab^d/MGmdf7epeGn)!f)4/!f`'S#gA]k*h"ok+hYuF0i;V^7ir.p:jT"??k5XWD
+kl'cGlMp2Lm/QJQmeuVSnGi%Wo)J=]o_nI^pAambq#:*gqYL*fr;?Nardk*#s8N%K~>
+JcC<$JcELbk5P2Tr;??erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp1!XlKRQski_*jjlHF$
+$0'q%i8<DIh;$cag)J_tf@SU(eC;sqdF$=fcd'h\bfe2PaiVWFa2\+t&&cB&_SO((^V@Lr]tD"i
+])K5@\@;IG$FR7IZa-mAYct=6riH@*X/`2!W;`\$VPU)aUS=HUTV)4T.%QltS!ob4R$X,(Q'@Ms
+P*1rhO,o<\N/W[QMM[1GLPCP;KS4u1Jq<oO$\*VRI=-EhH?sj^GlDmlG'.qLFE;MDrc.sWs)7mS
+s)%dPrG2FJs(VCErb)4BqITV9raY_4rF,\5q-X,-rE];*r`f>)qcWl"rE&bppf6udpf6ufr)`eu
+p0%2poipE\qd',+pg=#.rF,S4rF>h;qITV;rFbe:b\?rhq.otGrb_OMs)7mUrGhjXrcA$[s)n?b
+r-/0cs*=Ngrd4Wlr-eNmrdXcprIOp!q1JX!re:6(reLN0r/(H2s,6l8s,I&=rf7)AOoCLEPEc'3
+3gQ,"R$jD4S"-%@StD[LTq\?YV5C/gW2ckuXKAY/YctC=Za@-K\%&uZ]"G\h^;%Fu_8=+.`Poj;
+rl>Jhb0.uPc-=PZcd:&<d/qbFe,@erec44ufDjM&g&'M%g]$"(h>Z:0htu@2iW%p7j8\3?jo"9@
+kPscEl2U&Kli$2MmJlVQn,MnWnbr%YoDeI\p&Fabp\agdq>U6equ-HjrUKl<s+14Ls*t~>
+JcC<$JcELbk5P2Tr;??erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp1!XlKRQski_*jjlHF$
+$0'q%i8<DIh;$cag)J_tf@SU(eC;sqdF$=fcd'h\bfe2PaiVWFa2\+t&&cB&_SO((^V@Lr]tD"i
+])K5@\@;IG$FR7IZa-mAYct=6riH@*X/`2!W;`\$VPU)aUS=HUTV)4T.%QltS!ob4R$X,(Q'@Ms
+P*1rhO,o<\N/W[QMM[1GLPCP;KS4u1Jq<oO$\*VRI=-EhH?sj^GlDmlG'.qLFE;MDrc.sWs)7mS
+s)%dPrG2FJs(VCErb)4BqITV9raY_4rF,\5q-X,-rE];*r`f>)qcWl"rE&bppf6udpf6ufr)`eu
+p0%2poipE\qd',+pg=#.rF,S4rF>h;qITV;rFbe:b\?rhq.otGrb_OMs)7mUrGhjXrcA$[s)n?b
+r-/0cs*=Ngrd4Wlr-eNmrdXcprIOp!q1JX!re:6(reLN0r/(H2s,6l8s,I&=rf7)AOoCLEPEc'3
+3gQ,"R$jD4S"-%@StD[LTq\?YV5C/gW2ckuXKAY/YctC=Za@-K\%&uZ]"G\h^;%Fu_8=+.`Poj;
+rl>Jhb0.uPc-=PZcd:&<d/qbFe,@erec44ufDjM&g&'M%g]$"(h>Z:0htu@2iW%p7j8\3?jo"9@
+kPscEl2U&Kli$2MmJlVQn,MnWnbr%YoDeI\p&Fabp\agdq>U6equ-HjrUKl<s+14Ls*t~>
+JcC<$JcELbk5P2Tr;??erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp1!XlKRQski_*jjlHF$
+$0'q%i8<DIh;$cag)J_tf@SU(eC;sqdF$=fcd'h\bfe2PaiVWFa2\+t&&cB&_SO((^V@Lr]tD"i
+])K5@\@;IG$FR7IZa-mAYct=6riH@*X/`2!W;`\$VPU)aUS=HUTV)4T.%QltS!ob4R$X,(Q'@Ms
+P*1rhO,o<\N/W[QMM[1GLPCP;KS4u1Jq<oO$\*VRI=-EhH?sj^GlDmlG'.qLFE;MDrc.sWs)7mS
+s)%dPrG2FJs(VCErb)4BqITV9raY_4rF,\5q-X,-rE];*r`f>)qcWl"rE&bppf6udpf6ufr)`eu
+p0%2poipE\qd',+pg=#.rF,S4rF>h;qITV;rFbe:b\?rhq.otGrb_OMs)7mUrGhjXrcA$[s)n?b
+r-/0cs*=Ngrd4Wlr-eNmrdXcprIOp!q1JX!re:6(reLN0r/(H2s,6l8s,I&=rf7)AOoCLEPEc'3
+3gQ,"R$jD4S"-%@StD[LTq\?YV5C/gW2ckuXKAY/YctC=Za@-K\%&uZ]"G\h^;%Fu_8=+.`Poj;
+rl>Jhb0.uPc-=PZcd:&<d/qbFe,@erec44ufDjM&g&'M%g]$"(h>Z:0htu@2iW%p7j8\3?jo"9@
+kPscEl2U&Kli$2MmJlVQn,MnWnbr%YoDeI\p&Fabp\agdq>U6equ-HjrUKl<s+14Ls*t~>
+JcC<$JcEIak5P2Tqu$9erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!V4RVV(m-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-2f@SU(eC;sqdF$=fcd'h\bfe2Pb/q`Ga2\+t!Q;nT_?%KgrkB/]]tD"i
+]=PP`\@B#V[^EKLZa6sBricR0Y-"h-X8]+QWMl_mVPU)aUSFQWTqJ$LSt2C@S!ob5R$a5+Q'ISt
+P*1rhO,o<]NJrgSMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"fpG^+FVG'8$-FT6C^ErL(YE;skU
+DZ=SRD#A)KCB&#FB`;ZDB)6*;AGp$6@f9a7@/=7/?N+7->lIt+>5MJ$=T)=o<p`oZ<r5tr=S>no
+>4u1X>l%b(?MIn,@/XO2@f9g9AGTm9B)QB8B[(8gCA;TDD#S;LDZ=YSE;aeVErL.YFT6L`G5ZXa
+GlN'fHN&9kI/A?kIf=ioJGk&tK)(&uK`-W$LAlu-M#E20MZ8V5Muo!!NrG+>O8tFBOo^c2rfoj:
+Q^F/.R[]e:SXuFFTV8'RUSO]_Vl-JmWiN5'Xfen4Z*L^C[C3NQ\[f;`]Y(tn^VI\&_Sa=2`Q#s>
+aN;TJbKS61c2u>=d/MDodaQ\EeGn)!f)=5"f`0Y%gATe*h"ok*hYl@/i;V^7iqqd9jSn9=k5XWE
+kl'cGlMp2Km/QJQmeuVSnGi%Vo)J=]o_nI^pAambq#:*gqYL*fr;?N`rdk*#s8N%K~>
+JcC<$JcEIak5P2Tqu$9erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!V4RVV(m-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-2f@SU(eC;sqdF$=fcd'h\bfe2Pb/q`Ga2\+t!Q;nT_?%KgrkB/]]tD"i
+]=PP`\@B#V[^EKLZa6sBricR0Y-"h-X8]+QWMl_mVPU)aUSFQWTqJ$LSt2C@S!ob5R$a5+Q'ISt
+P*1rhO,o<]NJrgSMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"fpG^+FVG'8$-FT6C^ErL(YE;skU
+DZ=SRD#A)KCB&#FB`;ZDB)6*;AGp$6@f9a7@/=7/?N+7->lIt+>5MJ$=T)=o<p`oZ<r5tr=S>no
+>4u1X>l%b(?MIn,@/XO2@f9g9AGTm9B)QB8B[(8gCA;TDD#S;LDZ=YSE;aeVErL.YFT6L`G5ZXa
+GlN'fHN&9kI/A?kIf=ioJGk&tK)(&uK`-W$LAlu-M#E20MZ8V5Muo!!NrG+>O8tFBOo^c2rfoj:
+Q^F/.R[]e:SXuFFTV8'RUSO]_Vl-JmWiN5'Xfen4Z*L^C[C3NQ\[f;`]Y(tn^VI\&_Sa=2`Q#s>
+aN;TJbKS61c2u>=d/MDodaQ\EeGn)!f)=5"f`0Y%gATe*h"ok*hYl@/i;V^7iqqd9jSn9=k5XWE
+kl'cGlMp2Km/QJQmeuVSnGi%Vo)J=]o_nI^pAambq#:*gqYL*fr;?N`rdk*#s8N%K~>
+JcC<$JcEIak5P2Tqu$9erVHNhr:p<ds7ZEas7H?_rpp*Z!:^!V4RVV(m-O'(lKRQskND!ijlGI^
+io8qTi8<DIh;$c=g=b-2f@SU(eC;sqdF$=fcd'h\bfe2Pb/q`Ga2\+t!Q;nT_?%KgrkB/]]tD"i
+]=PP`\@B#V[^EKLZa6sBricR0Y-"h-X8]+QWMl_mVPU)aUSFQWTqJ$LSt2C@S!ob5R$a5+Q'ISt
+P*1rhO,o<]NJrgSMM[1GL]3#8KnP)2Jq8K'J:E%II0"_Brd"fpG^+FVG'8$-FT6C^ErL(YE;skU
+DZ=SRD#A)KCB&#FB`;ZDB)6*;AGp$6@f9a7@/=7/?N+7->lIt+>5MJ$=T)=o<p`oZ<r5tr=S>no
+>4u1X>l%b(?MIn,@/XO2@f9g9AGTm9B)QB8B[(8gCA;TDD#S;LDZ=YSE;aeVErL.YFT6L`G5ZXa
+GlN'fHN&9kI/A?kIf=ioJGk&tK)(&uK`-W$LAlu-M#E20MZ8V5Muo!!NrG+>O8tFBOo^c2rfoj:
+Q^F/.R[]e:SXuFFTV8'RUSO]_Vl-JmWiN5'Xfen4Z*L^C[C3NQ\[f;`]Y(tn^VI\&_Sa=2`Q#s>
+aN;TJbKS61c2u>=d/MDodaQ\EeGn)!f)=5"f`0Y%gATe*h"ok*hYl@/i;V^7iqqd9jSn9=k5XWE
+kl'cGlMp2Km/QJQmeuVSnGi%Vo)J=]o_nI^pAambq#:*gqYL*fr;?N`rdk*#s8N%K~>
+JcC<$JcEC_k5P5Uqu$9erqcWir:p9cs7ZEas7?<_rUL3`nF5o8mdBKAliHG;rojIIkPjTIjlGI^
+io0mp$/aUqh;$c=g=b-Xf+-B^eC;sqdF$=fcd'h\bl5d,b/q`Ga2c3=`Pf[3_SX.)^q[Xu]tM(k
+]=PSa\[]-J[K3eCrj+VjZ*:I9Y-+n/XK/A$WMlbnVl$;dUnaZXTqJ$MSt;LCS"#k7R$a5+Q'ISt
+PEM)kOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J-LLPI=6KjHiA<lH$K=4s)nBbrcA3_EcV/!s)A!V
+rGMXPs(qXLrbDIIqe5tAratt;rFGk:qI9D3ra>S0ra,S0qHX#(r`]/$rE0#"g/e)Pr)iYqqHEYu
+gKaP[r*K/*ra>\5qdTM6rabk:rFZ"@ok;TaqeGqBrbVRNqelFPs)@mUs)S-\rH/'^s*"?bs*4Ng
+rHeKjrd=Wls*jrsqgeZsrIXlurIk-'qM,!)rJ:B.s,-i7r/:]:NfO(!#EY(1P*2#mPl?q8QC!u+
+R@9V7S=Q7CT:hmOU8+N[V5C/hWN)u!Xf\b0Yd(L?Za@0L\%&u[]=bei^;%J"_SX4/`Poj;aN2KG
+bKJ,SrltPjd/MGmdK%bqeGn)!f)=5#f`'S%gA]k*h"ok+hYl@.i;MX6iqqd9jSn9=k5XWDkl'cG
+lMp2Km/QJQmelPRnGi%Wo)J=]o_eC^pAambq#:*gqYL*fr;?N`rdk*#s8DtJ~>
+JcC<$JcEC_k5P5Uqu$9erqcWir:p9cs7ZEas7?<_rUL3`nF5o8mdBKAliHG;rojIIkPjTIjlGI^
+io0mp$/aUqh;$c=g=b-Xf+-B^eC;sqdF$=fcd'h\bl5d,b/q`Ga2c3=`Pf[3_SX.)^q[Xu]tM(k
+]=PSa\[]-J[K3eCrj+VjZ*:I9Y-+n/XK/A$WMlbnVl$;dUnaZXTqJ$MSt;LCS"#k7R$a5+Q'ISt
+PEM)kOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J-LLPI=6KjHiA<lH$K=4s)nBbrcA3_EcV/!s)A!V
+rGMXPs(qXLrbDIIqe5tAratt;rFGk:qI9D3ra>S0ra,S0qHX#(r`]/$rE0#"g/e)Pr)iYqqHEYu
+gKaP[r*K/*ra>\5qdTM6rabk:rFZ"@ok;TaqeGqBrbVRNqelFPs)@mUs)S-\rH/'^s*"?bs*4Ng
+rHeKjrd=Wls*jrsqgeZsrIXlurIk-'qM,!)rJ:B.s,-i7r/:]:NfO(!#EY(1P*2#mPl?q8QC!u+
+R@9V7S=Q7CT:hmOU8+N[V5C/hWN)u!Xf\b0Yd(L?Za@0L\%&u[]=bei^;%J"_SX4/`Poj;aN2KG
+bKJ,SrltPjd/MGmdK%bqeGn)!f)=5#f`'S%gA]k*h"ok+hYl@.i;MX6iqqd9jSn9=k5XWDkl'cG
+lMp2Km/QJQmelPRnGi%Wo)J=]o_eC^pAambq#:*gqYL*fr;?N`rdk*#s8DtJ~>
+JcC<$JcEC_k5P5Uqu$9erqcWir:p9cs7ZEas7?<_rUL3`nF5o8mdBKAliHG;rojIIkPjTIjlGI^
+io0mp$/aUqh;$c=g=b-Xf+-B^eC;sqdF$=fcd'h\bl5d,b/q`Ga2c3=`Pf[3_SX.)^q[Xu]tM(k
+]=PSa\[]-J[K3eCrj+VjZ*:I9Y-+n/XK/A$WMlbnVl$;dUnaZXTqJ$MSt;LCS"#k7R$a5+Q'ISt
+PEM)kOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J-LLPI=6KjHiA<lH$K=4s)nBbrcA3_EcV/!s)A!V
+rGMXPs(qXLrbDIIqe5tAratt;rFGk:qI9D3ra>S0ra,S0qHX#(r`]/$rE0#"g/e)Pr)iYqqHEYu
+gKaP[r*K/*ra>\5qdTM6rabk:rFZ"@ok;TaqeGqBrbVRNqelFPs)@mUs)S-\rH/'^s*"?bs*4Ng
+rHeKjrd=Wls*jrsqgeZsrIXlurIk-'qM,!)rJ:B.s,-i7r/:]:NfO(!#EY(1P*2#mPl?q8QC!u+
+R@9V7S=Q7CT:hmOU8+N[V5C/hWN)u!Xf\b0Yd(L?Za@0L\%&u[]=bei^;%J"_SX4/`Poj;aN2KG
+bKJ,SrltPjd/MGmdK%bqeGn)!f)=5#f`'S%gA]k*h"ok+hYl@.i;MX6iqqd9jSn9=k5XWDkl'cG
+lMp2Km/QJQmelPRnGi%Wo)J=]o_eC^pAambq#:*gqYL*fr;?N`rdk*#s8DtJ~>
+JcC<$JcE=]k5P5Ur;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmq>)e^W*tdf.W$d*L"_c-4DTbK@s+a8s?$rl"oV_u@LR_8-&b!PZ8H
+]E,XUrj`'>\,NfC[C!9HZE^[=Yck5/XVS"=WiE%sVl-DgV50o^U7n9RT:VXFSGnurR[KP1Q^3o%
+P`q8nOcYWbNfK*XN/NRMM26rdL'iWfK7ec,JUi9#If=a#I!^3dH?jd\rc\EeF`m\*!crC&rc.sW
+s)7jRs)%dPr+l=Irb;7CrFc+Aq.9M8raYb5raGe6qHs5.ra#D+r`fA*q-!Yur)_iXqcEYsp0%8r
+q-2KVq-El(pg=#.rF,S4rF>h;qITV;rFbh;c>!,iphTkFrb_RNs)7mUrGhjXs)\-\s)n?brHJ9d
+s*=Qhrd4Zmr-eTordXirrdk'#qLea"rIt*&rJ1B.qhb?1rep`6s,I&=rJq#AOcfX+$^6g>Q'IZ$
+Q^F/.Rf8d;S=Q7CT:hmPUSO]^VPg>jWiE,$Xf\e2Yd(L?['d?O\@K/]]=bhk^V@S$_Sa=2`Q#s>
+aN;TJbKS61c2l8<rm:eqe'n<G!nGlQrR_)%s4R>(rnIG-qVD,,rnmP0rSdb8qr@\:roO(?roa=F
+r9=7Hs6KXMs6]jSr9s[Ts7-'Ys7?9_r:U*`rqH?crqZQiqYU6hr;H0bJcC<$rVqB~>
+JcC<$JcE=]k5P5Ur;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmq>)e^W*tdf.W$d*L"_c-4DTbK@s+a8s?$rl"oV_u@LR_8-&b!PZ8H
+]E,XUrj`'>\,NfC[C!9HZE^[=Yck5/XVS"=WiE%sVl-DgV50o^U7n9RT:VXFSGnurR[KP1Q^3o%
+P`q8nOcYWbNfK*XN/NRMM26rdL'iWfK7ec,JUi9#If=a#I!^3dH?jd\rc\EeF`m\*!crC&rc.sW
+s)7jRs)%dPr+l=Irb;7CrFc+Aq.9M8raYb5raGe6qHs5.ra#D+r`fA*q-!Yur)_iXqcEYsp0%8r
+q-2KVq-El(pg=#.rF,S4rF>h;qITV;rFbh;c>!,iphTkFrb_RNs)7mUrGhjXs)\-\s)n?brHJ9d
+s*=Qhrd4Zmr-eTordXirrdk'#qLea"rIt*&rJ1B.qhb?1rep`6s,I&=rJq#AOcfX+$^6g>Q'IZ$
+Q^F/.Rf8d;S=Q7CT:hmPUSO]^VPg>jWiE,$Xf\e2Yd(L?['d?O\@K/]]=bhk^V@S$_Sa=2`Q#s>
+aN;TJbKS61c2l8<rm:eqe'n<G!nGlQrR_)%s4R>(rnIG-qVD,,rnmP0rSdb8qr@\:roO(?roa=F
+r9=7Hs6KXMs6]jSr9s[Ts7-'Ys7?9_r:U*`rqH?crqZQiqYU6hr;H0bJcC<$rVqB~>
+JcC<$JcE=]k5P5Ur;?BfrqcWir:p<ds7ZEas7H?_rpp*Z!:^!V,4=jcm-O'(lKRQski_*jjlGL_
+j5T%Ui8<DJh;-l@g=k64rmq>)e^W*tdf.W$d*L"_c-4DTbK@s+a8s?$rl"oV_u@LR_8-&b!PZ8H
+]E,XUrj`'>\,NfC[C!9HZE^[=Yck5/XVS"=WiE%sVl-DgV50o^U7n9RT:VXFSGnurR[KP1Q^3o%
+P`q8nOcYWbNfK*XN/NRMM26rdL'iWfK7ec,JUi9#If=a#I!^3dH?jd\rc\EeF`m\*!crC&rc.sW
+s)7jRs)%dPr+l=Irb;7CrFc+Aq.9M8raYb5raGe6qHs5.ra#D+r`fA*q-!Yur)_iXqcEYsp0%8r
+q-2KVq-El(pg=#.rF,S4rF>h;qITV;rFbh;c>!,iphTkFrb_RNs)7mUrGhjXs)\-\s)n?brHJ9d
+s*=Qhrd4Zmr-eTordXirrdk'#qLea"rIt*&rJ1B.qhb?1rep`6s,I&=rJq#AOcfX+$^6g>Q'IZ$
+Q^F/.Rf8d;S=Q7CT:hmPUSO]^VPg>jWiE,$Xf\e2Yd(L?['d?O\@K/]]=bhk^V@S$_Sa=2`Q#s>
+aN;TJbKS61c2l8<rm:eqe'n<G!nGlQrR_)%s4R>(rnIG-qVD,,rnmP0rSdb8qr@\:roO(?roa=F
+r9=7Hs6KXMs6]jSr9s[Ts7-'Ys7?9_r:U*`rqH?crqZQiqYU6hr;H0bJcC<$rVqB~>
+JcC<$JcE7[kPk>Vr;?BfrqcWir:p<ds7ZEas7H?_rpg-\nF6GG&FSrQm-O''lKRQskND!ijlHF$
+"leM!i8<Djh%&5pg=k64f@SU)e^W*tdf.WLd*L"_c-=JUbK@rKaN2EA`l5p8_o'@._83q%^V7Fq
+]Y(kg]",A]\@8oT[C!<IZa-k8YQ_55Xf\\*ri.$=W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^3o%
+P`u*0$'C=1O,f3YN/NSmM$8]jL5(D8rdt6'Jc:0#It%BF!IT7nH3/A:GlDmgG'.s,F96N(ErL(Y
+E;skTDZ4MQD#A)JCAqrEB`2TCB)-$:AH$*8@fBg8@/F=1?N+7,>lIt,>5;>"=Sl1b<r#hp=S>no
+>5DIT>k_P$?MIn+@/XO2@f9g9AGTm9B)QB9B[:DhCA;TDD#S;LDZ4SSE;aeVErU4ZFT6L`G5ZXb
+GlN'fHN/?lI/JEmIfFopJH(3"K)1-!K`-W$LAco,M#)u-MZ8V4N;nn;Nr>%=O8tFAOo^c2rfm\R
+Q^=),R@=,E5Fe:9StD[LTq\<XV5C/gW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf^;%Fu_8=(,`Poj;
+aN2KGbKJ,Sc-FV\d/MDndaS3Fs4./#rn%2&s4R>(s4dP.qVD/-rSRG/ro*h8qW%S9roO(?roa=F
+r9=7Hrp0OLs6]jSr9s[Ts7-'Ys7?6^rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$r;V9~>
+JcC<$JcE7[kPk>Vr;?BfrqcWir:p<ds7ZEas7H?_rpg-\nF6GG&FSrQm-O''lKRQskND!ijlHF$
+"leM!i8<Djh%&5pg=k64f@SU)e^W*tdf.WLd*L"_c-=JUbK@rKaN2EA`l5p8_o'@._83q%^V7Fq
+]Y(kg]",A]\@8oT[C!<IZa-k8YQ_55Xf\\*ri.$=W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^3o%
+P`u*0$'C=1O,f3YN/NSmM$8]jL5(D8rdt6'Jc:0#It%BF!IT7nH3/A:GlDmgG'.s,F96N(ErL(Y
+E;skTDZ4MQD#A)JCAqrEB`2TCB)-$:AH$*8@fBg8@/F=1?N+7,>lIt,>5;>"=Sl1b<r#hp=S>no
+>5DIT>k_P$?MIn+@/XO2@f9g9AGTm9B)QB9B[:DhCA;TDD#S;LDZ4SSE;aeVErU4ZFT6L`G5ZXb
+GlN'fHN/?lI/JEmIfFopJH(3"K)1-!K`-W$LAco,M#)u-MZ8V4N;nn;Nr>%=O8tFAOo^c2rfm\R
+Q^=),R@=,E5Fe:9StD[LTq\<XV5C/gW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf^;%Fu_8=(,`Poj;
+aN2KGbKJ,Sc-FV\d/MDndaS3Fs4./#rn%2&s4R>(s4dP.qVD/-rSRG/ro*h8qW%S9roO(?roa=F
+r9=7Hrp0OLs6]jSr9s[Ts7-'Ys7?6^rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$r;V9~>
+JcC<$JcE7[kPk>Vr;?BfrqcWir:p<ds7ZEas7H?_rpg-\nF6GG&FSrQm-O''lKRQskND!ijlHF$
+"leM!i8<Djh%&5pg=k64f@SU)e^W*tdf.WLd*L"_c-=JUbK@rKaN2EA`l5p8_o'@._83q%^V7Fq
+]Y(kg]",A]\@8oT[C!<IZa-k8YQ_55Xf\\*ri.$=W2HPjV50o^U7n9RTV%gISXc1=R[KP1Q^3o%
+P`u*0$'C=1O,f3YN/NSmM$8]jL5(D8rdt6'Jc:0#It%BF!IT7nH3/A:GlDmgG'.s,F96N(ErL(Y
+E;skTDZ4MQD#A)JCAqrEB`2TCB)-$:AH$*8@fBg8@/F=1?N+7,>lIt,>5;>"=Sl1b<r#hp=S>no
+>5DIT>k_P$?MIn+@/XO2@f9g9AGTm9B)QB9B[:DhCA;TDD#S;LDZ4SSE;aeVErU4ZFT6L`G5ZXb
+GlN'fHN/?lI/JEmIfFopJH(3"K)1-!K`-W$LAco,M#)u-MZ8V4N;nn;Nr>%=O8tFAOo^c2rfm\R
+Q^=),R@=,E5Fe:9StD[LTq\<XV5C/gW2ZesXKAV-YHY:;Za7'J[^WcW]">Vf^;%Fu_8=(,`Poj;
+aN2KGbKJ,Sc-FV\d/MDndaS3Fs4./#rn%2&s4R>(s4dP.qVD/-rSRG/ro*h8qW%S9roO(?roa=F
+r9=7Hrp0OLs6]jSr9s[Ts7-'Ys7?6^rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$r;V9~>
+JcC<$JcE1Ykl1GWr;?BfrqcWir:p<ds7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-*9H8A
+j5T%Vi8EMLh;-lAgY1B7f[na+f%&:"e'e6C!RT0lc2l26rlY>bao9?^a2\+t!Q;nT_?%KgrkB#Y
+]tM(k]=PSa\[],X[^NTNrj**?Z*:I9Y-+n/XK/A$WMofo,,V34UnaZXTqJ$LSt2C@S!ob5R$a5+
+Q'IStP*1rhO,o<\req#=MM[1GL]3#>KnP)2Jq8K'J:E#sI=6KjHiA<lH$K=4s)nBbrH&*^EcV+u
+s)A!VrGMXPrbVLJrbDFHqIoh?ratt;rabt;qdTP5ra>V1ra,S0qcs,)rEB#"r)i_qpK%#iqH3Go
+qc`i#f3IuSqHir(rF#V5qI9G6rFGb9rau+Ap1X)4phJo)qJ,e@rbVRNqelFPs)@pVrc8$[rcJ0_
+s*"?bs*4QhrHeKjs*Xcns*jutr.+cts+:-#re16(qM,!)rJ:<,reg]5r/CW7s,R&=s,d8CrfR>H
+Pa)04!LB)OQiWVDrgQ-BSXuFFTV8'RUSO]^Vl-JmWiE,$Xfek3Yd1UA['d?O\@K/^]Y(ql^VI\&
+_Sa=2`Q-'@ai_fMbg"DXcHjl:d/h\Erm^tu!7q/$s4IA)rS%8*s4mM-rSIP2q;D51rSm\6roF(?
+qr[n@roj:Es6BXMr9XINs6fgRs7$'YrUTsZs7H6^s7ZKeqtU0drqcKgrVZTlnc"+>JcGZJJ,~>
+JcC<$JcE1Ykl1GWr;?BfrqcWir:p<ds7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-*9H8A
+j5T%Vi8EMLh;-lAgY1B7f[na+f%&:"e'e6C!RT0lc2l26rlY>bao9?^a2\+t!Q;nT_?%KgrkB#Y
+]tM(k]=PSa\[],X[^NTNrj**?Z*:I9Y-+n/XK/A$WMofo,,V34UnaZXTqJ$LSt2C@S!ob5R$a5+
+Q'IStP*1rhO,o<\req#=MM[1GL]3#>KnP)2Jq8K'J:E#sI=6KjHiA<lH$K=4s)nBbrH&*^EcV+u
+s)A!VrGMXPrbVLJrbDFHqIoh?ratt;rabt;qdTP5ra>V1ra,S0qcs,)rEB#"r)i_qpK%#iqH3Go
+qc`i#f3IuSqHir(rF#V5qI9G6rFGb9rau+Ap1X)4phJo)qJ,e@rbVRNqelFPs)@pVrc8$[rcJ0_
+s*"?bs*4QhrHeKjs*Xcns*jutr.+cts+:-#re16(qM,!)rJ:<,reg]5r/CW7s,R&=s,d8CrfR>H
+Pa)04!LB)OQiWVDrgQ-BSXuFFTV8'RUSO]^Vl-JmWiE,$Xfek3Yd1UA['d?O\@K/^]Y(ql^VI\&
+_Sa=2`Q-'@ai_fMbg"DXcHjl:d/h\Erm^tu!7q/$s4IA)rS%8*s4mM-rSIP2q;D51rSm\6roF(?
+qr[n@roj:Es6BXMr9XINs6fgRs7$'YrUTsZs7H6^s7ZKeqtU0drqcKgrVZTlnc"+>JcGZJJ,~>
+JcC<$JcE1Ykl1GWr;?BfrqcWir:p<ds7ZEas7?<_rpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-*9H8A
+j5T%Vi8EMLh;-lAgY1B7f[na+f%&:"e'e6C!RT0lc2l26rlY>bao9?^a2\+t!Q;nT_?%KgrkB#Y
+]tM(k]=PSa\[],X[^NTNrj**?Z*:I9Y-+n/XK/A$WMofo,,V34UnaZXTqJ$LSt2C@S!ob5R$a5+
+Q'IStP*1rhO,o<\req#=MM[1GL]3#>KnP)2Jq8K'J:E#sI=6KjHiA<lH$K=4s)nBbrH&*^EcV+u
+s)A!VrGMXPrbVLJrbDFHqIoh?ratt;rabt;qdTP5ra>V1ra,S0qcs,)rEB#"r)i_qpK%#iqH3Go
+qc`i#f3IuSqHir(rF#V5qI9G6rFGb9rau+Ap1X)4phJo)qJ,e@rbVRNqelFPs)@pVrc8$[rcJ0_
+s*"?bs*4QhrHeKjs*Xcns*jutr.+cts+:-#re16(qM,!)rJ:<,reg]5r/CW7s,R&=s,d8CrfR>H
+Pa)04!LB)OQiWVDrgQ-BSXuFFTV8'RUSO]^Vl-JmWiE,$Xfek3Yd1UA['d?O\@K/^]Y(ql^VI\&
+_Sa=2`Q-'@ai_fMbg"DXcHjl:d/h\Erm^tu!7q/$s4IA)rS%8*s4mM-rSIP2q;D51rSm\6roF(?
+qr[n@roj:Es6BXMr9XINs6fgRs7$'YrUTsZs7H6^s7ZKeqtU0drqcKgrVZTlnc"+>JcGZJJ,~>
+JcC<$JcE.Xkl1GWr;?BfrqcZjr:p<drq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si#(A.h;-l@gY1B7f[na+f%&:"e'c[ldEp5=c2l26rlY>bao9?ia2Z-<`Pf^4_SX.*_#D(L
+^:jNY!P>rB\H04LrjEcR['R*EZ*CO;YHG"0XK/D%Wi;qpVl$;dUna[`Tb3riSt;LCS"#k7R$a5+
+Q'IStrfRSMOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J,t.Krd=iqH[Ga<!I8qhGQ2jdFoHL_F8p:[
+EW:"XDu=MQD>nAKC]8)JC&2NABDuN>Ac60=A,Ba7@K'[3?iFC2?2In+>Q%b#=o)7h=8>tk=o2D"
+>MEEN?2@n%?i=C3@JXI4A,Ts8Ac66>BD-$6C$]U)C%lB;C]8/LD>S5NDuXeTEW0tYF8^4\FoQX`
+GQ2pfH2`-iHiJKlIK+crJ,FisJc:9!KDpQ'L&-Q'L]*&*M>iD2Mu8P5NW5%:O8k=AOoCODP5pjH
+Q2d-MQi<?QR@=,E5Fe:9StD[LTq\<XUnsrdVl?\rX/rG*YHY79ZEppG[^NZU\[oDc]tV7r^qmn*
+`5T^8a2l?Db0.uPc-FV\d/MDndaS3F!nGlQrn%2&s4RA)s4dS/r8%>.rnmS1rSd_7q;_J8rT3q=
+roa:Er9=7Hrp0LKs6]jSr9s[Ts7-'Yrq$0^r:U*`rqH?crqZQiqYU6hr;H-aJcC<$r;V9~>
+JcC<$JcE.Xkl1GWr;?BfrqcZjr:p<drq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si#(A.h;-l@gY1B7f[na+f%&:"e'c[ldEp5=c2l26rlY>bao9?ia2Z-<`Pf^4_SX.*_#D(L
+^:jNY!P>rB\H04LrjEcR['R*EZ*CO;YHG"0XK/D%Wi;qpVl$;dUna[`Tb3riSt;LCS"#k7R$a5+
+Q'IStrfRSMOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J,t.Krd=iqH[Ga<!I8qhGQ2jdFoHL_F8p:[
+EW:"XDu=MQD>nAKC]8)JC&2NABDuN>Ac60=A,Ba7@K'[3?iFC2?2In+>Q%b#=o)7h=8>tk=o2D"
+>MEEN?2@n%?i=C3@JXI4A,Ts8Ac66>BD-$6C$]U)C%lB;C]8/LD>S5NDuXeTEW0tYF8^4\FoQX`
+GQ2pfH2`-iHiJKlIK+crJ,FisJc:9!KDpQ'L&-Q'L]*&*M>iD2Mu8P5NW5%:O8k=AOoCODP5pjH
+Q2d-MQi<?QR@=,E5Fe:9StD[LTq\<XUnsrdVl?\rX/rG*YHY79ZEppG[^NZU\[oDc]tV7r^qmn*
+`5T^8a2l?Db0.uPc-FV\d/MDndaS3F!nGlQrn%2&s4RA)s4dS/r8%>.rnmS1rSd_7q;_J8rT3q=
+roa:Er9=7Hrp0LKs6]jSr9s[Ts7-'Yrq$0^r:U*`rqH?crqZQiqYU6hr;H-aJcC<$r;V9~>
+JcC<$JcE.Xkl1GWr;?BfrqcZjr:p<drq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Tki_*jjlPR`
+j5T%si#(A.h;-l@gY1B7f[na+f%&:"e'c[ldEp5=c2l26rlY>bao9?ia2Z-<`Pf^4_SX.*_#D(L
+^:jNY!P>rB\H04LrjEcR['R*EZ*CO;YHG"0XK/D%Wi;qpVl$;dUna[`Tb3riSt;LCS"#k7R$a5+
+Q'IStrfRSMOH5H_NJrgSMZ/G9Lkg_>KnTGX!J5n%J,t.Krd=iqH[Ga<!I8qhGQ2jdFoHL_F8p:[
+EW:"XDu=MQD>nAKC]8)JC&2NABDuN>Ac60=A,Ba7@K'[3?iFC2?2In+>Q%b#=o)7h=8>tk=o2D"
+>MEEN?2@n%?i=C3@JXI4A,Ts8Ac66>BD-$6C$]U)C%lB;C]8/LD>S5NDuXeTEW0tYF8^4\FoQX`
+GQ2pfH2`-iHiJKlIK+crJ,FisJc:9!KDpQ'L&-Q'L]*&*M>iD2Mu8P5NW5%:O8k=AOoCODP5pjH
+Q2d-MQi<?QR@=,E5Fe:9StD[LTq\<XUnsrdVl?\rX/rG*YHY79ZEppG[^NZU\[oDc]tV7r^qmn*
+`5T^8a2l?Db0.uPc-FV\d/MDndaS3F!nGlQrn%2&s4RA)s4dS/r8%>.rnmS1rSd_7q;_J8rT3q=
+roa:Er9=7Hrp0LKs6]jSr9s[Ts7-'Yrq$0^r:U*`rqH?crqZQiqYU6hr;H-aJcC<$r;V9~>
+JcC<$JcE%Ul2LSYr;?EgrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+$KC%&i8<GKh;-l@rn8:Df[na+f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!QW4Z`=0]&_ns:,_8*h#
+^:q;[]FVWc\[f5[\$i`Q['[0GZEaD5$*UM6XfSS'Wi;rrV`L]OUnjc[TqS-OSt;LCS"#k7R$a5+
+QBd`"PEM)kOH5H_NJrgSMi*@JLkg_>KnY24K7\Z*J:N-!If=`rI!bj=s*4ThrceBc!-S6^s)\3\
+rGhjVs)7gQs)%aOqeQ.Frb;4BrFc+AqITY:raYh7raGe6r*TG0ra#A*r`f>)p0$Z_o3(roqciGm
+gKjV]pL!l,rF,P3raYq<qITV;rFbk<phAo+q.]J9phThErb_RNs)7mUrGhjXs)\-\!d/[0rHJ9d
+s*=Tis*OcnrI+]ps*suts+10$r.G$&re:6(reLH.qMG3/rJUQ3rf-o;rK$u?rfR2Cs-*JIrfp*A
+Q^=),R@0M5S"-">St;RITqS3UUnjiaVl-JmWiN5'Xfek3Z*L^B['mEP\@K2_]Y(qm^VI\&_Sa@3
+`lH0Aai_fMbg"GYcd;[=!RfHre,e+NrRV,'g"H>Xs4dS/r8%A/rnmS1rSd_7q;_G7roO"=roa:E
+r9=4Gs6KULrpBaRr9s[Ts7-$Xs7?9_r:U*`rqH?crqZQiq>:-gr;H0bJcC<$qu;0~>
+JcC<$JcE%Ul2LSYr;?EgrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+$KC%&i8<GKh;-l@rn8:Df[na+f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!QW4Z`=0]&_ns:,_8*h#
+^:q;[]FVWc\[f5[\$i`Q['[0GZEaD5$*UM6XfSS'Wi;rrV`L]OUnjc[TqS-OSt;LCS"#k7R$a5+
+QBd`"PEM)kOH5H_NJrgSMi*@JLkg_>KnY24K7\Z*J:N-!If=`rI!bj=s*4ThrceBc!-S6^s)\3\
+rGhjVs)7gQs)%aOqeQ.Frb;4BrFc+AqITY:raYh7raGe6r*TG0ra#A*r`f>)p0$Z_o3(roqciGm
+gKjV]pL!l,rF,P3raYq<qITV;rFbk<phAo+q.]J9phThErb_RNs)7mUrGhjXs)\-\!d/[0rHJ9d
+s*=Tis*OcnrI+]ps*suts+10$r.G$&re:6(reLH.qMG3/rJUQ3rf-o;rK$u?rfR2Cs-*JIrfp*A
+Q^=),R@0M5S"-">St;RITqS3UUnjiaVl-JmWiN5'Xfek3Z*L^B['mEP\@K2_]Y(qm^VI\&_Sa@3
+`lH0Aai_fMbg"GYcd;[=!RfHre,e+NrRV,'g"H>Xs4dS/r8%A/rnmS1rSd_7q;_G7roO"=roa:E
+r9=4Gs6KULrpBaRr9s[Ts7-$Xs7?9_r:U*`rqH?crqZQiq>:-gr;H0bJcC<$qu;0~>
+JcC<$JcE%Ul2LSYr;?EgrqcWir:p<ds7ZEas7?<_rUL$[nF6GG!Uf@SljN.ElKRQskND!ijlHF$
+$KC%&i8<GKh;-l@rn8:Df[na+f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!QW4Z`=0]&_ns:,_8*h#
+^:q;[]FVWc\[f5[\$i`Q['[0GZEaD5$*UM6XfSS'Wi;rrV`L]OUnjc[TqS-OSt;LCS"#k7R$a5+
+QBd`"PEM)kOH5H_NJrgSMi*@JLkg_>KnY24K7\Z*J:N-!If=`rI!bj=s*4ThrceBc!-S6^s)\3\
+rGhjVs)7gQs)%aOqeQ.Frb;4BrFc+AqITY:raYh7raGe6r*TG0ra#A*r`f>)p0$Z_o3(roqciGm
+gKjV]pL!l,rF,P3raYq<qITV;rFbk<phAo+q.]J9phThErb_RNs)7mUrGhjXs)\-\!d/[0rHJ9d
+s*=Tis*OcnrI+]ps*suts+10$r.G$&re:6(reLH.qMG3/rJUQ3rf-o;rK$u?rfR2Cs-*JIrfp*A
+Q^=),R@0M5S"-">St;RITqS3UUnjiaVl-JmWiN5'Xfek3Z*L^B['mEP\@K2_]Y(qm^VI\&_Sa@3
+`lH0Aai_fMbg"GYcd;[=!RfHre,e+NrRV,'g"H>Xs4dS/r8%A/rnmS1rSd_7q;_G7roO"=roa:E
+r9=4Gs6KULrpBaRr9s[Ts7-$Xs7?9_r:U*`rqH?crqZQiq>:-gr;H0bJcC<$qu;0~>
+JcC<$JcE"Tl2LSYr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n-g"?;U#1h>SeC2mprm:bnci22jc-611#Kk01aN2EB`r<pX`5DSk'u@]$
+^V@Lr]tD"i]=PP`\@8rU[^ELAZN[Y>Yct=6riINKX/`2!W2HPjV50o^U8"?TTV%gISXc1=R[KP1
+Q^3o%P`q8nOc]R''98'2N/NRMM26tCL5(D8KS+o/Jc:0)IsuipI=-Ehrd+Ti!-nKes*"EbrcJ0]
+s)S'Xrc%mUr,2LNrbVIIrbDCGqIok@rFYq<rac"<r*oY6ra>V1ra,S0qcs)(rEAbppfR#gqc`l$
+nQaUMpg3Z$rF#S4qI9G6rabk:rau+ApLsA:dVAMlrG;IMr,2OQrc%gUs)S-\rH/'^!-\<bs*+Nh
+rHeKjs*Xfos*jutrIFp!s+:0$re1<*qhG**reUE-regZ4qi(N6rf6l:s,d8CrK@2Es-3MJs-<YO
+rg6-BR[T_8S=Q4BStD[LTq\<XUnsrdVl6SpWiN5'Y-5(6Z*UdD[C3QS\[f;a]Y2%o^VRe(_o0O5
+a2l?Db0.uPc-FV\d/MDndaS3F!S,d#fDjJ'g&9Y)g]-(-h>Z:1htu@1iVhd3j8J';jn\'<kPj]B
+l2U&Jlhp,LmJcPPn,DhVnbhtXoDeI\p&=[bp\Xabq>U6equ-HirUKl<s+14Is*t~>
+JcC<$JcE"Tl2LSYr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n-g"?;U#1h>SeC2mprm:bnci22jc-611#Kk01aN2EB`r<pX`5DSk'u@]$
+^V@Lr]tD"i]=PP`\@8rU[^ELAZN[Y>Yct=6riINKX/`2!W2HPjV50o^U8"?TTV%gISXc1=R[KP1
+Q^3o%P`q8nOc]R''98'2N/NRMM26tCL5(D8KS+o/Jc:0)IsuipI=-Ehrd+Ti!-nKes*"EbrcJ0]
+s)S'Xrc%mUr,2LNrbVIIrbDCGqIok@rFYq<rac"<r*oY6ra>V1ra,S0qcs)(rEAbppfR#gqc`l$
+nQaUMpg3Z$rF#S4qI9G6rabk:rau+ApLsA:dVAMlrG;IMr,2OQrc%gUs)S-\rH/'^!-\<bs*+Nh
+rHeKjs*Xfos*jutrIFp!s+:0$re1<*qhG**reUE-regZ4qi(N6rf6l:s,d8CrK@2Es-3MJs-<YO
+rg6-BR[T_8S=Q4BStD[LTq\<XUnsrdVl6SpWiN5'Y-5(6Z*UdD[C3QS\[f;a]Y2%o^VRe(_o0O5
+a2l?Db0.uPc-FV\d/MDndaS3F!S,d#fDjJ'g&9Y)g]-(-h>Z:1htu@1iVhd3j8J';jn\'<kPj]B
+l2U&Jlhp,LmJcPPn,DhVnbhtXoDeI\p&=[bp\Xabq>U6equ-HirUKl<s+14Is*t~>
+JcC<$JcE"Tl2LSYr;?EgrqcWir:p<ds7ZEa!qc*Urpp*Z!:^!Vs6]mSrp0[OlMg#Kki_s-!TiDA
+isOf)i8EMMhVI#Cg]#n-g"?;U#1h>SeC2mprm:bnci22jc-611#Kk01aN2EB`r<pX`5DSk'u@]$
+^V@Lr]tD"i]=PP`\@8rU[^ELAZN[Y>Yct=6riINKX/`2!W2HPjV50o^U8"?TTV%gISXc1=R[KP1
+Q^3o%P`q8nOc]R''98'2N/NRMM26tCL5(D8KS+o/Jc:0)IsuipI=-Ehrd+Ti!-nKes*"EbrcJ0]
+s)S'Xrc%mUr,2LNrbVIIrbDCGqIok@rFYq<rac"<r*oY6ra>V1ra,S0qcs)(rEAbppfR#gqc`l$
+nQaUMpg3Z$rF#S4qI9G6rabk:rau+ApLsA:dVAMlrG;IMr,2OQrc%gUs)S-\rH/'^!-\<bs*+Nh
+rHeKjs*Xfos*jutrIFp!s+:0$re1<*qhG**reUE-regZ4qi(N6rf6l:s,d8CrK@2Es-3MJs-<YO
+rg6-BR[T_8S=Q4BStD[LTq\<XUnsrdVl6SpWiN5'Y-5(6Z*UdD[C3QS\[f;a]Y2%o^VRe(_o0O5
+a2l?Db0.uPc-FV\d/MDndaS3F!S,d#fDjJ'g&9Y)g]-(-h>Z:1htu@1iVhd3j8J';jn\'<kPj]B
+l2U&Jlhp,LmJcPPn,DhVnbhtXoDeI\p&=[bp\Xabq>U6equ-HirUKl<s+14Is*t~>
+JcC<$JcDqRlMg\Zr;?EgrqcWirV6Eerq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Kki_s-&*;m4
+j5T(Wi8EMLhVI#Cg]#n-g"?;U!S5g#e,e%Hrm:bnci22pc-4DTbK@uLrl>,\`r<sW_uR^S_?%Kg
+rkAKJ^&GYF]=S!P!P#W<[O\bmZa6sBZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV%gISXc1=R[KP1
+Q^7W9&sSTCP*(ieO,f3YN/NUOM2@%Dre:H-K`6T)Jq<oO!IoRtIK+ZpHiA?kGlW*fG62r1Fo?F^
+F8p:ZEW0qWDu=MPD>e;JC]8)IC&2NBBDuN?Ac?6>A,Kg8@K'[4?iFC2?2@h)>Pq[_=o)>!>Ol%J
+?2%\!?i4=2@JXI4A,Ts8Ac66>BD?0:C"$hiC]/)KD>\;NDuXeTEW:(ZF8^4\FT?U`GQ2mfH2W'h
+HN8HlIK+crJ,XuuJc:9"KE$W)L&6W)L]3,+M>iD2Mu/J3NW+t8O8k=@Oo:ICPQ-mHQ2d0MQi<?Q
+R@=,E8t;HCSt;RITqS3UUnjiaVl-JmWiE,$Xf\e2Yd(L?['d?N\%&u[]=bej^V@S#_Sa=2`Q#s>
+aND]Lbg"GYcd:%ddF-LneCE+#rmq5(g"HAYs4dS/rS@M1rnmV2ro*h8q;_D6rT3n<rTF1DqW\%F
+rp0LKrpBaRr9sXSs7-$Xs7?9_r:U'_rqH?crqZQiq>:-gr;H0bJcC<$qYu'~>
+JcC<$JcDqRlMg\Zr;?EgrqcWirV6Eerq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Kki_s-&*;m4
+j5T(Wi8EMLhVI#Cg]#n-g"?;U!S5g#e,e%Hrm:bnci22pc-4DTbK@uLrl>,\`r<sW_uR^S_?%Kg
+rkAKJ^&GYF]=S!P!P#W<[O\bmZa6sBZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV%gISXc1=R[KP1
+Q^7W9&sSTCP*(ieO,f3YN/NUOM2@%Dre:H-K`6T)Jq<oO!IoRtIK+ZpHiA?kGlW*fG62r1Fo?F^
+F8p:ZEW0qWDu=MPD>e;JC]8)IC&2NBBDuN?Ac?6>A,Kg8@K'[4?iFC2?2@h)>Pq[_=o)>!>Ol%J
+?2%\!?i4=2@JXI4A,Ts8Ac66>BD?0:C"$hiC]/)KD>\;NDuXeTEW:(ZF8^4\FT?U`GQ2mfH2W'h
+HN8HlIK+crJ,XuuJc:9"KE$W)L&6W)L]3,+M>iD2Mu/J3NW+t8O8k=@Oo:ICPQ-mHQ2d0MQi<?Q
+R@=,E8t;HCSt;RITqS3UUnjiaVl-JmWiE,$Xf\e2Yd(L?['d?N\%&u[]=bej^V@S#_Sa=2`Q#s>
+aND]Lbg"GYcd:%ddF-LneCE+#rmq5(g"HAYs4dS/rS@M1rnmV2ro*h8q;_D6rT3n<rTF1DqW\%F
+rp0LKrpBaRr9sXSs7-$Xs7?9_r:U'_rqH?crqZQiq>:-gr;H0bJcC<$qYu'~>
+JcC<$JcDqRlMg\Zr;?EgrqcWirV6Eerq??as7H?_rpp*Z!:^!V#O_!Hm-O'(lMg#Kki_s-&*;m4
+j5T(Wi8EMLhVI#Cg]#n-g"?;U!S5g#e,e%Hrm:bnci22pc-4DTbK@uLrl>,\`r<sW_uR^S_?%Kg
+rkAKJ^&GYF]=S!P!P#W<[O\bmZa6sBZ*:I9Y-"h-X/`2!WMl_mVPU)aUS=HUTV%gISXc1=R[KP1
+Q^7W9&sSTCP*(ieO,f3YN/NUOM2@%Dre:H-K`6T)Jq<oO!IoRtIK+ZpHiA?kGlW*fG62r1Fo?F^
+F8p:ZEW0qWDu=MPD>e;JC]8)IC&2NBBDuN?Ac?6>A,Kg8@K'[4?iFC2?2@h)>Pq[_=o)>!>Ol%J
+?2%\!?i4=2@JXI4A,Ts8Ac66>BD?0:C"$hiC]/)KD>\;NDuXeTEW:(ZF8^4\FT?U`GQ2mfH2W'h
+HN8HlIK+crJ,XuuJc:9"KE$W)L&6W)L]3,+M>iD2Mu/J3NW+t8O8k=@Oo:ICPQ-mHQ2d0MQi<?Q
+R@=,E8t;HCSt;RITqS3UUnjiaVl-JmWiE,$Xf\e2Yd(L?['d?N\%&u[]=bej^V@S#_Sa=2`Q#s>
+aND]Lbg"GYcd:%ddF-LneCE+#rmq5(g"HAYs4dS/rS@M1rnmV2ro*h8q;_D6rT3n<rTF1DqW\%F
+rp0LKrpBaRr9sXSs7-$Xs7?9_r:U'_rqH?crqZQiq>:-gr;H0bJcC<$qYu'~>
+JcC<$JcDkPli-e[rVZNhrqcWir:p<ds7ZEas7?<_rpp*Zs7$'Ws6]mSrp1BclK[Wukih3lk2k^c
+j5].XiS`YOhYu=3gtVh^!SQ-)f)aIQrmV2%daHOjd*L&;c2l26rlYPhaiVWFa2c4!`<X?!_ns:,
+_8-&b!PZ8H]E,XUrjc%=\$i`Q[C!9HZE^X<YHP+2XfSS'Wi;qpVl$;dUnaZXTqJ'NSt;LCS"#k7
+R$a5+Q'IStP*1rhO,o<]NJrgSMM[1GLkg_>KnP,3K7\Z*J:N-!If=`sI!^5>HN/6jGl;gfG'.s+
+FT6F^Er9qVE;skRDZ4MPD#.rHCAhlDB`;ZDB)?0=AH-0:@fKm9@/F=1?N+7,>l7h'>3]8d>5MOq
+>k_OM?M7b(@/XO1@fBm:AGTm:B)QB;B_uN;C@c60C@Z0=D#J5KDZ4SSE;aeVErU4ZFT6I`G5ZUd
+G^4T5H3/G@I/\QoIfForJH(3#K)L?%K`?c(LB!&.M#3&.MZ/P1N;\b8Nr+n:OT(C@P5^[FPl?sJ
+QN*<NR/`QSRf8cWS=TYN5bF^CTq\<XUnsrdVl6SpWiN5'Xfek3Z*L^B['mEP\@K/^]Y(ql^VI\&
+_Sa@3`lH0Aai_fMbg"GYcd:(edaS3F!S,d#f)jUXg&B\,gYCT_h>c@2hu)F3iVhd4j8A!:jn\';
+kPaWAl2KuIlhg&KmJcPOn,MnVnbhtXoDeI\p&=[ap\agcq>L0dqu-HjrUBf;s+14Hs*t~>
+JcC<$JcDkPli-e[rVZNhrqcWir:p<ds7ZEas7?<_rpp*Zs7$'Ws6]mSrp1BclK[Wukih3lk2k^c
+j5].XiS`YOhYu=3gtVh^!SQ-)f)aIQrmV2%daHOjd*L&;c2l26rlYPhaiVWFa2c4!`<X?!_ns:,
+_8-&b!PZ8H]E,XUrjc%=\$i`Q[C!9HZE^X<YHP+2XfSS'Wi;qpVl$;dUnaZXTqJ'NSt;LCS"#k7
+R$a5+Q'IStP*1rhO,o<]NJrgSMM[1GLkg_>KnP,3K7\Z*J:N-!If=`sI!^5>HN/6jGl;gfG'.s+
+FT6F^Er9qVE;skRDZ4MPD#.rHCAhlDB`;ZDB)?0=AH-0:@fKm9@/F=1?N+7,>l7h'>3]8d>5MOq
+>k_OM?M7b(@/XO1@fBm:AGTm:B)QB;B_uN;C@c60C@Z0=D#J5KDZ4SSE;aeVErU4ZFT6I`G5ZUd
+G^4T5H3/G@I/\QoIfForJH(3#K)L?%K`?c(LB!&.M#3&.MZ/P1N;\b8Nr+n:OT(C@P5^[FPl?sJ
+QN*<NR/`QSRf8cWS=TYN5bF^CTq\<XUnsrdVl6SpWiN5'Xfek3Z*L^B['mEP\@K/^]Y(ql^VI\&
+_Sa@3`lH0Aai_fMbg"GYcd:(edaS3F!S,d#f)jUXg&B\,gYCT_h>c@2hu)F3iVhd4j8A!:jn\';
+kPaWAl2KuIlhg&KmJcPOn,MnVnbhtXoDeI\p&=[ap\agcq>L0dqu-HjrUBf;s+14Hs*t~>
+JcC<$JcDkPli-e[rVZNhrqcWir:p<ds7ZEas7?<_rpp*Zs7$'Ws6]mSrp1BclK[Wukih3lk2k^c
+j5].XiS`YOhYu=3gtVh^!SQ-)f)aIQrmV2%daHOjd*L&;c2l26rlYPhaiVWFa2c4!`<X?!_ns:,
+_8-&b!PZ8H]E,XUrjc%=\$i`Q[C!9HZE^X<YHP+2XfSS'Wi;qpVl$;dUnaZXTqJ'NSt;LCS"#k7
+R$a5+Q'IStP*1rhO,o<]NJrgSMM[1GLkg_>KnP,3K7\Z*J:N-!If=`sI!^5>HN/6jGl;gfG'.s+
+FT6F^Er9qVE;skRDZ4MPD#.rHCAhlDB`;ZDB)?0=AH-0:@fKm9@/F=1?N+7,>l7h'>3]8d>5MOq
+>k_OM?M7b(@/XO1@fBm:AGTm:B)QB;B_uN;C@c60C@Z0=D#J5KDZ4SSE;aeVErU4ZFT6I`G5ZUd
+G^4T5H3/G@I/\QoIfForJH(3#K)L?%K`?c(LB!&.M#3&.MZ/P1N;\b8Nr+n:OT(C@P5^[FPl?sJ
+QN*<NR/`QSRf8cWS=TYN5bF^CTq\<XUnsrdVl6SpWiN5'Xfek3Z*L^B['mEP\@K/^]Y(ql^VI\&
+_Sa@3`lH0Aai_fMbg"GYcd:(edaS3F!S,d#f)jUXg&B\,gYCT_h>c@2hu)F3iVhd4j8A!:jn\';
+kPaWAl2KuIlhg&KmJcPOn,MnVnbhtXoDeI\p&=[ap\agcq>L0dqu-HjrUBf;s+14Hs*t~>
+JcC<$JcDeNm/Hn\rVZNhrqcWir:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=3gtVh^!SQ-)f*BmWe^W*tdaJ-B!RT0lc2u87bl5cdb/sY(s2P,Zrl"oV_u@Lf
+_8*k$^V7Fq]Y(kg]",A]\@8oT[C#q>$*ph?Yck43XfST&W\:?MVl-DgUnjc[TqS-OSt;LCS"#k7
+R$a5+Q'IStPEM)kOH5H_NJrgSMi*@JLkkta!JQ4+K*R!ZJUi9#It%BF!do?Ard+Tis*4Nes*"Eb
+rH/'\s)S$Wrc%jTqelCMrbVFHrbDFHqe5tArau%=s()+=r*oY6ra>V1ra,S0q-<f$k$%UcoN_/s
+b[0pKr*]J3qI9G6rFGe:rFZ%Aph9P=phJ2lr+u@LqelFPrc%gUs)S-\rH&*`G'<h.!dK!9rd+Tk
+s*Xfos*jutrdb$"s+:3%s+LE+rJ(<,s+pT0reg]5qMbE5rJpc9rfI,Aqi^uCs-3JIs-E\Org<_R
+!1NnVs-sCdSt;RHTV8'RU].&JV5C/gW2ZetXKAV-YHY79Za7$H[^N]V\[oDc]tV7r^r!t+`5T^8
+aN2KGbKJ,ScHab_dF$CkrmUu!f)F8%f\-5W!o)McrS@M1s53b4s5Eq9qW%P8rT3h:rTF.CqW[tD
+rp0LKrpB^Qr9s[TrpfpWs7?6^r:U*`rqH<brqZQiqYU3gr;H-aJcC<$qYu'~>
+JcC<$JcDeNm/Hn\rVZNhrqcWir:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=3gtVh^!SQ-)f*BmWe^W*tdaJ-B!RT0lc2u87bl5cdb/sY(s2P,Zrl"oV_u@Lf
+_8*k$^V7Fq]Y(kg]",A]\@8oT[C#q>$*ph?Yck43XfST&W\:?MVl-DgUnjc[TqS-OSt;LCS"#k7
+R$a5+Q'IStPEM)kOH5H_NJrgSMi*@JLkkta!JQ4+K*R!ZJUi9#It%BF!do?Ard+Tis*4Nes*"Eb
+rH/'\s)S$Wrc%jTqelCMrbVFHrbDFHqe5tArau%=s()+=r*oY6ra>V1ra,S0q-<f$k$%UcoN_/s
+b[0pKr*]J3qI9G6rFGe:rFZ%Aph9P=phJ2lr+u@LqelFPrc%gUs)S-\rH&*`G'<h.!dK!9rd+Tk
+s*Xfos*jutrdb$"s+:3%s+LE+rJ(<,s+pT0reg]5qMbE5rJpc9rfI,Aqi^uCs-3JIs-E\Org<_R
+!1NnVs-sCdSt;RHTV8'RU].&JV5C/gW2ZetXKAV-YHY79Za7$H[^N]V\[oDc]tV7r^r!t+`5T^8
+aN2KGbKJ,ScHab_dF$CkrmUu!f)F8%f\-5W!o)McrS@M1s53b4s5Eq9qW%P8rT3h:rTF.CqW[tD
+rp0LKrpB^Qr9s[TrpfpWs7?6^r:U*`rqH<brqZQiqYU3gr;H-aJcC<$qYu'~>
+JcC<$JcDeNm/Hn\rVZNhrqcWir:p<ds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp0[OlMg#Zki_-kk2k[b
+j5].XiS`YOhYu=3gtVh^!SQ-)f*BmWe^W*tdaJ-B!RT0lc2u87bl5cdb/sY(s2P,Zrl"oV_u@Lf
+_8*k$^V7Fq]Y(kg]",A]\@8oT[C#q>$*ph?Yck43XfST&W\:?MVl-DgUnjc[TqS-OSt;LCS"#k7
+R$a5+Q'IStPEM)kOH5H_NJrgSMi*@JLkkta!JQ4+K*R!ZJUi9#It%BF!do?Ard+Tis*4Nes*"Eb
+rH/'\s)S$Wrc%jTqelCMrbVFHrbDFHqe5tArau%=s()+=r*oY6ra>V1ra,S0q-<f$k$%UcoN_/s
+b[0pKr*]J3qI9G6rFGe:rFZ%Aph9P=phJ2lr+u@LqelFPrc%gUs)S-\rH&*`G'<h.!dK!9rd+Tk
+s*Xfos*jutrdb$"s+:3%s+LE+rJ(<,s+pT0reg]5qMbE5rJpc9rfI,Aqi^uCs-3JIs-E\Org<_R
+!1NnVs-sCdSt;RHTV8'RU].&JV5C/gW2ZetXKAV-YHY79Za7$H[^N]V\[oDc]tV7r^r!t+`5T^8
+aN2KGbKJ,ScHab_dF$CkrmUu!f)F8%f\-5W!o)McrS@M1s53b4s5Eq9qW%P8rT3h:rTF.CqW[tD
+rp0LKrpB^Qr9s[TrpfpWs7?6^r:U*`rqH<brqZQiqYU3gr;H-aJcC<$qYu'~>
+JcC<$JcD_LmJd%^r;?EgrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtVh^%,':cf@SU(e^W*te'e6C!mo9>rltPhbl5fcaoKQ_a9Tc*`l5p8`5DSk
+&Ac/t^V@Lr]tD"i]"5G_\@;IG"gt_DZa-k8YVWJcXf\\*WiE%sVl-DgUnjc[TqS-OSt;LCS=?":
+R@'A.QBd`"PEM)kOH5H_NfB!VMi.Lj#)J%hL4t>7rdt6'Jc:0$IsukGI0+eCHiA?kH2i-fG5ugc
+Fo?F^F8g4XEW:"WDu+AND>nAKC]8)JC&;TCBDuN@Ac?6?A,Ba8@K'[3?iFC1?2.\#>Ou%m>P)1r
+?1qUi?gV1i?i4=1@JXI3A,^$8Ac?<?BDH6=C&)MiC]/)JD>S5NDuO_SEW:(ZF8^4\FT?U`G63#7
+H2`-iHiJKmIK+`rJ,Om!JV&LPKE$W)L&Hc+L]<2.M>iD3Mu/J4NW"n7O8Y1>Oo1CAPQ$gFQ2d0M
+Qi39QR@9TDRgYaWSXuFFT:hmOU8.^`2l3CLVl6SpWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(qm^VI\&
+_SjF4`lH0Ab0.uPc-FV\d*^7he,Ihte^j`O!SH*)gAfn-h#6(/hZ)L3i;V^7iqqd7jSe38k5=E@
+kkXKBlMg,Hm/HDOmelPQnGi%Uo)J=\o_eC^pAXg`q#:*gqYC$er;?N_rdk*#s7u\F~>
+JcC<$JcD_LmJd%^r;?EgrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtVh^%,':cf@SU(e^W*te'e6C!mo9>rltPhbl5fcaoKQ_a9Tc*`l5p8`5DSk
+&Ac/t^V@Lr]tD"i]"5G_\@;IG"gt_DZa-k8YVWJcXf\\*WiE%sVl-DgUnjc[TqS-OSt;LCS=?":
+R@'A.QBd`"PEM)kOH5H_NfB!VMi.Lj#)J%hL4t>7rdt6'Jc:0$IsukGI0+eCHiA?kH2i-fG5ugc
+Fo?F^F8g4XEW:"WDu+AND>nAKC]8)JC&;TCBDuN@Ac?6?A,Ba8@K'[3?iFC1?2.\#>Ou%m>P)1r
+?1qUi?gV1i?i4=1@JXI3A,^$8Ac?<?BDH6=C&)MiC]/)JD>S5NDuO_SEW:(ZF8^4\FT?U`G63#7
+H2`-iHiJKmIK+`rJ,Om!JV&LPKE$W)L&Hc+L]<2.M>iD3Mu/J4NW"n7O8Y1>Oo1CAPQ$gFQ2d0M
+Qi39QR@9TDRgYaWSXuFFT:hmOU8.^`2l3CLVl6SpWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(qm^VI\&
+_SjF4`lH0Ab0.uPc-FV\d*^7he,Ihte^j`O!SH*)gAfn-h#6(/hZ)L3i;V^7iqqd7jSe38k5=E@
+kkXKBlMg,Hm/HDOmelPQnGi%Uo)J=\o_eC^pAXg`q#:*gqYC$er;?N_rdk*#s7u\F~>
+JcC<$JcD_LmJd%^r;?EgrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG#O_!Hm-O'(lMg#Kki_s-!TiDA
+irS/urnmh7hYu=3gtVh^%,':cf@SU(e^W*te'e6C!mo9>rltPhbl5fcaoKQ_a9Tc*`l5p8`5DSk
+&Ac/t^V@Lr]tD"i]"5G_\@;IG"gt_DZa-k8YVWJcXf\\*WiE%sVl-DgUnjc[TqS-OSt;LCS=?":
+R@'A.QBd`"PEM)kOH5H_NfB!VMi.Lj#)J%hL4t>7rdt6'Jc:0$IsukGI0+eCHiA?kH2i-fG5ugc
+Fo?F^F8g4XEW:"WDu+AND>nAKC]8)JC&;TCBDuN@Ac?6?A,Ba8@K'[3?iFC1?2.\#>Ou%m>P)1r
+?1qUi?gV1i?i4=1@JXI3A,^$8Ac?<?BDH6=C&)MiC]/)JD>S5NDuO_SEW:(ZF8^4\FT?U`G63#7
+H2`-iHiJKmIK+`rJ,Om!JV&LPKE$W)L&Hc+L]<2.M>iD3Mu/J4NW"n7O8Y1>Oo1CAPQ$gFQ2d0M
+Qi39QR@9TDRgYaWSXuFFT:hmOU8.^`2l3CLVl6SpWiN5'Y-5(6Z*L^C[C3NQ\@K2_]Y(qm^VI\&
+_SjF4`lH0Ab0.uPc-FV\d*^7he,Ihte^j`O!SH*)gAfn-h#6(/hZ)L3i;V^7iqqd7jSe38k5=E@
+kkXKBlMg,Hm/HDOmelPQnGi%Uo)J=\o_eC^pAXg`q#:*gqYC$er;?N_rdk*#s7u\F~>
+JcC<$JcDYJmf*._r;?HhrqcWir:p<ds7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=9gtUT;g=b03rmq2%ec+&"e'c\Dd/hV?rm(Pg!6kGc!m8X,rl>>b`l?!:`5KRm
+_?%KgrkAKJ^&GYF]=S!P1Usp&[^ENMZa6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RT:VXFS=?":
+R@'A.QBd`"PQ$^_OcYWbNfB!VMi3ILM26qBL5(D8KS+o/Jq<oO!e5ZJrdFfo!.4Zj!dT$8rHJ9b
+s)n6]s)\0[r,M^Trbq[OrGDOMqeQ1Grb;:Drb)7Cqdoe<raYk8raGe6qd9>/rE])$mT]3dqH`o'
+^L-nHrF,M2raYq<qITY<rFbq>rFu+CcYNGprGDCKs)7mUrGhjXs)\-\!d/[0rHA<fH$TC8s*F`n
+rI"`rIt.HJs+13%re(6(s+UE+s+gW1r/(H2rep]5rf-o;qN(W;rK6u?rfdAHr0@8Is-N_Ps-`nU
+rgWqX!1j+\!M?%aT`Lm_rhMZQVPg>jWN)u!XKAV-YctC<Za7$H[^WcW\[oGd]tV7r_8=(,`5Ta:
+aN2KGbKJ,TcHjkbdF-IleC<%"rmq2'g&B\,gYCT`h>c@3hu2L4iW%p7j8J';jnS!:kPXQ>l2BoH
+lh]uImJlVOn,DhVnbhtWoD\C[p&Fabp\Xabq>U6dqu-HirUKl<s+14Fs*t~>
+JcC<$JcDYJmf*._r;?HhrqcWir:p<ds7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=9gtUT;g=b03rmq2%ec+&"e'c\Dd/hV?rm(Pg!6kGc!m8X,rl>>b`l?!:`5KRm
+_?%KgrkAKJ^&GYF]=S!P1Usp&[^ENMZa6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RT:VXFS=?":
+R@'A.QBd`"PQ$^_OcYWbNfB!VMi3ILM26qBL5(D8KS+o/Jq<oO!e5ZJrdFfo!.4Zj!dT$8rHJ9b
+s)n6]s)\0[r,M^Trbq[OrGDOMqeQ1Grb;:Drb)7Cqdoe<raYk8raGe6qd9>/rE])$mT]3dqH`o'
+^L-nHrF,M2raYq<qITY<rFbq>rFu+CcYNGprGDCKs)7mUrGhjXs)\-\!d/[0rHA<fH$TC8s*F`n
+rI"`rIt.HJs+13%re(6(s+UE+s+gW1r/(H2rep]5rf-o;qN(W;rK6u?rfdAHr0@8Is-N_Ps-`nU
+rgWqX!1j+\!M?%aT`Lm_rhMZQVPg>jWN)u!XKAV-YctC<Za7$H[^WcW\[oGd]tV7r_8=(,`5Ta:
+aN2KGbKJ,TcHjkbdF-IleC<%"rmq2'g&B\,gYCT`h>c@3hu2L4iW%p7j8J';jnS!:kPXQ>l2BoH
+lh]uImJlVOn,DhVnbhtWoD\C[p&Fabp\Xabq>U6dqu-HirUKl<s+14Fs*t~>
+JcC<$JcDYJmf*._r;?HhrqcWir:p<ds7ZEa!qc*Urpp*Zs7$$V!Uf@Sm/QAOlMg#Kki_s-!TiDA
+irS/urnmh7hYu=9gtUT;g=b03rmq2%ec+&"e'c\Dd/hV?rm(Pg!6kGc!m8X,rl>>b`l?!:`5KRm
+_?%KgrkAKJ^&GYF]=S!P1Usp&[^ENMZa6sBYct=6Xf\\+X/`2!W2HPjV50o^U7n9RT:VXFS=?":
+R@'A.QBd`"PQ$^_OcYWbNfB!VMi3ILM26qBL5(D8KS+o/Jq<oO!e5ZJrdFfo!.4Zj!dT$8rHJ9b
+s)n6]s)\0[r,M^Trbq[OrGDOMqeQ1Grb;:Drb)7Cqdoe<raYk8raGe6qd9>/rE])$mT]3dqH`o'
+^L-nHrF,M2raYq<qITY<rFbq>rFu+CcYNGprGDCKs)7mUrGhjXs)\-\!d/[0rHA<fH$TC8s*F`n
+rI"`rIt.HJs+13%re(6(s+UE+s+gW1r/(H2rep]5rf-o;qN(W;rK6u?rfdAHr0@8Is-N_Ps-`nU
+rgWqX!1j+\!M?%aT`Lm_rhMZQVPg>jWN)u!XKAV-YctC<Za7$H[^WcW\[oGd]tV7r_8=(,`5Ta:
+aN2KGbKJ,TcHjkbdF-IleC<%"rmq2'g&B\,gYCT`h>c@3hu2L4iW%p7j8J';jnS!:kPXQ>l2BoH
+lh]uImJlVOn,DhVnbhtWoD\C[p&Fabp\Xabq>U6dqu-HirUKl<s+14Fs*t~>
+JcC<$JcDYJmJd%^rVZNhrqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp1'ZlK[Wukih3lk2k^c
+ro4%=iVqa9hqn@g#Me(gg=k65f`'J'f%'cLs3gtrrm:eocd2U9!mSs5rlYPhaiVWFa2c4!`<X?!
+_ns:,_8-&b!PZ8H]J$n.\[f5[\$i`Q['R*EZ*CO;YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=
+R[O/B&snoLQ'@JqP*(ieO,f6[N/W[PreUZ3L]3#5KnP,3K7\]+rdY'"IX_9Es*Xinrd+Tis*4Kd
+s*"Ebr,hs[rc7mUrc%jTqelCMrbVIIrbDIIqe6"Brau(>rac%=qdTS6ra>S0rEfG.gKaS\q-L[?
+r*]J3q-s>5rFGe:rau+AqIoe@qeFJnqeZ1IqelCOrc%gUs)S-\rH/'^!-\<b!dK!9rd+Tk!.=co
+s*artrI=s#JqEuSs+LE+rJ(?-s+pW1s,-i7qi(Q7rf6i9rfI)@qi^rBrfm;Fs-E\OrL!VQs-iqV
+s.'+[s.97_!20=b6)(-MUnsobVl-JmWiE,$Xf\b0YctF>Za@-K[^WfX]">Vg^;%Fu_8=+.`Poj;
+aN;TJbKS5VcHjkbdF-LneCE.Lf)aOWrn7G.gt_nbs5!b5rS[\6s5Nt:rT*t>q<%V<r93q?rTaCJ
+qX"1JrpK^Qrp]pWr:9jYs7H3]rq?BdqtU0drVHBfr;?KknG\"=JcGNFJ,~>
+JcC<$JcDYJmJd%^rVZNhrqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp1'ZlK[Wukih3lk2k^c
+ro4%=iVqa9hqn@g#Me(gg=k65f`'J'f%'cLs3gtrrm:eocd2U9!mSs5rlYPhaiVWFa2c4!`<X?!
+_ns:,_8-&b!PZ8H]J$n.\[f5[\$i`Q['R*EZ*CO;YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=
+R[O/B&snoLQ'@JqP*(ieO,f6[N/W[PreUZ3L]3#5KnP,3K7\]+rdY'"IX_9Es*Xinrd+Tis*4Kd
+s*"Ebr,hs[rc7mUrc%jTqelCMrbVIIrbDIIqe6"Brau(>rac%=qdTS6ra>S0rEfG.gKaS\q-L[?
+r*]J3q-s>5rFGe:rau+AqIoe@qeFJnqeZ1IqelCOrc%gUs)S-\rH/'^!-\<b!dK!9rd+Tk!.=co
+s*artrI=s#JqEuSs+LE+rJ(?-s+pW1s,-i7qi(Q7rf6i9rfI)@qi^rBrfm;Fs-E\OrL!VQs-iqV
+s.'+[s.97_!20=b6)(-MUnsobVl-JmWiE,$Xf\b0YctF>Za@-K[^WfX]">Vg^;%Fu_8=+.`Poj;
+aN;TJbKS5VcHjkbdF-LneCE.Lf)aOWrn7G.gt_nbs5!b5rS[\6s5Nt:rT*t>q<%V<r93q?rTaCJ
+qX"1JrpK^Qrp]pWr:9jYs7H3]rq?BdqtU0drVHBfr;?KknG\"=JcGNFJ,~>
+JcC<$JcDYJmJd%^rVZNhrqcWirV6Ees7ZEas7H?_rpp*Z!:^!Vs6]mSrp1'ZlK[Wukih3lk2k^c
+ro4%=iVqa9hqn@g#Me(gg=k65f`'J'f%'cLs3gtrrm:eocd2U9!mSs5rlYPhaiVWFa2c4!`<X?!
+_ns:,_8-&b!PZ8H]J$n.\[f5[\$i`Q['R*EZ*CO;YHG"0XK/A$WMl_mVPU)aUS=HUTV%gISXc1=
+R[O/B&snoLQ'@JqP*(ieO,f6[N/W[PreUZ3L]3#5KnP,3K7\]+rdY'"IX_9Es*Xinrd+Tis*4Kd
+s*"Ebr,hs[rc7mUrc%jTqelCMrbVIIrbDIIqe6"Brau(>rac%=qdTS6ra>S0rEfG.gKaS\q-L[?
+r*]J3q-s>5rFGe:rau+AqIoe@qeFJnqeZ1IqelCOrc%gUs)S-\rH/'^!-\<b!dK!9rd+Tk!.=co
+s*artrI=s#JqEuSs+LE+rJ(?-s+pW1s,-i7qi(Q7rf6i9rfI)@qi^rBrfm;Fs-E\OrL!VQs-iqV
+s.'+[s.97_!20=b6)(-MUnsobVl-JmWiE,$Xf\b0YctF>Za@-K[^WfX]">Vg^;%Fu_8=+.`Poj;
+aN;TJbKS5VcHjkbdF-LneCE.Lf)aOWrn7G.gt_nbs5!b5rS[\6s5Nt:rT*t>q<%V<r93q?rTaCJ
+qX"1JrpK^Qrp]pWr:9jYs7H3]rq?BdqtU0drVHBfr;?KknG\"=JcGNFJ,~>
+JcC<$JcDVImf*+^rVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"e,n+Idf.Vqd*L&;c2u87bl5cdb/sY(s2P,Zrl#Vj
+_o'@._83q%^V7Fq]Y(kg]",A]\,Nfp[C!9HZE^X<YHG"0XK/D%Wi;qpVl$;dUnaZXTqJ$LSt2C@
+S!ob4R$X,(Q'@JqP*(lgO,o<\req&>MM[1GLkkta!JQ4+K*$XUJc:0$IsukGIK+]pHiA?kH2i-e
+GQ2jdFo6@\F8g4XEW0qVDu4GOD>nAKC]8)KC&DZDBE)T@AcH<?A,Kg8@K'[2?i==.?0,>f?27g:
+?i4=0@JOC3A,Ts8Ac66?BDQ<>C&D_oC\_fED>J/MDuO_REW:(ZF8g:]FoQXaGQ2pfH2`*kH[L5?
+IK+`rJ,XuuJH1<#K*$^[L&Hc+LB*//M>iD4Mu8P6NW+t8O8b7?Ont7?PQ$gDQ2[*LQi*6NRK&`S
+Rf]+NSc53NT:hjNTq\9VUnji`VPg>jWN)u!XKAV-YHY79ZEppG[^NZT\[oDc]Y2%o^qmn)_o9U7
+a2l?DbKJ,ScHab_dF$CkeC<%"rmq2'g&B\,gYCT`h#cHjhu2L5iW%p8j8S-=jn\';kPXQ=l29iF
+lh]uHmJcPNn,DhVnb_nVoDeI[p&=[bp\Xabq>L0cqu-HjrUBf;s+14Es*t~>
+JcC<$JcDVImf*+^rVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"e,n+Idf.Vqd*L&;c2u87bl5cdb/sY(s2P,Zrl#Vj
+_o'@._83q%^V7Fq]Y(kg]",A]\,Nfp[C!9HZE^X<YHG"0XK/D%Wi;qpVl$;dUnaZXTqJ$LSt2C@
+S!ob4R$X,(Q'@JqP*(lgO,o<\req&>MM[1GLkkta!JQ4+K*$XUJc:0$IsukGIK+]pHiA?kH2i-e
+GQ2jdFo6@\F8g4XEW0qVDu4GOD>nAKC]8)KC&DZDBE)T@AcH<?A,Kg8@K'[2?i==.?0,>f?27g:
+?i4=0@JOC3A,Ts8Ac66?BDQ<>C&D_oC\_fED>J/MDuO_REW:(ZF8g:]FoQXaGQ2pfH2`*kH[L5?
+IK+`rJ,XuuJH1<#K*$^[L&Hc+LB*//M>iD4Mu8P6NW+t8O8b7?Ont7?PQ$gDQ2[*LQi*6NRK&`S
+Rf]+NSc53NT:hjNTq\9VUnji`VPg>jWN)u!XKAV-YHY79ZEppG[^NZT\[oDc]Y2%o^qmn)_o9U7
+a2l?DbKJ,ScHab_dF$CkeC<%"rmq2'g&B\,gYCT`h#cHjhu2L5iW%p8j8S-=jn\';kPXQ=l29iF
+lh]uHmJcPNn,DhVnb_nVoDeI[p&=[bp\Xabq>L0cqu-HjrUBf;s+14Es*t~>
+JcC<$JcDVImf*+^rVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GG!q,ICrp0[OlMg#Qki_-kk2k^c
+ro4%=iVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"e,n+Idf.Vqd*L&;c2u87bl5cdb/sY(s2P,Zrl#Vj
+_o'@._83q%^V7Fq]Y(kg]",A]\,Nfp[C!9HZE^X<YHG"0XK/D%Wi;qpVl$;dUnaZXTqJ$LSt2C@
+S!ob4R$X,(Q'@JqP*(lgO,o<\req&>MM[1GLkkta!JQ4+K*$XUJc:0$IsukGIK+]pHiA?kH2i-e
+GQ2jdFo6@\F8g4XEW0qVDu4GOD>nAKC]8)KC&DZDBE)T@AcH<?A,Kg8@K'[2?i==.?0,>f?27g:
+?i4=0@JOC3A,Ts8Ac66?BDQ<>C&D_oC\_fED>J/MDuO_REW:(ZF8g:]FoQXaGQ2pfH2`*kH[L5?
+IK+`rJ,XuuJH1<#K*$^[L&Hc+LB*//M>iD4Mu8P6NW+t8O8b7?Ont7?PQ$gDQ2[*LQi*6NRK&`S
+Rf]+NSc53NT:hjNTq\9VUnji`VPg>jWN)u!XKAV-YHY79ZEppG[^NZT\[oDc]Y2%o^qmn)_o9U7
+a2l?DbKJ,ScHab_dF$CkeC<%"rmq2'g&B\,gYCT`h#cHjhu2L5iW%p8j8S-=jn\';kPXQ=l29iF
+lh]uHmJcPNn,DhVnb_nVoDeI[p&=[bp\Xabq>L0cqu-HjrUBf;s+14Es*t~>
+JcC<$JcDPGn,E7`rVZNhrqcWirV6Bds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNH
+jQ#:[io0mp#N+Cph;-lAg]#n3g"=s/f@JO'rm^ts!7Lkos3Lblrm(Pg!6kGcs2k>`rlG,[!65#W
+!Q;nT_@+2q^q[Xu]tM(k]=S!P"h;%M[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:PNfB!VMi*CKM26qBL5(D9K`6W(JcLB$JH(*!If4]pHiSNlHN/9j
+Gl2dcG5cX^FT-@]Er0kUE;jeQDZ4MPD#A)JCB&#GB`;ZEB)H6>AH-0:@fBg8@/41-?M@b">kVJ!
+?LM7e@,52e@/OI/@f9g9AG]s:B)ZH>B`2ZCC@>rpD#8)FDZ4SRE;aeUErU4[FT6L`G5c^cGlN'g
+H3/G@I/\NqIXckHJH(0#K)UE&K`?c*LB!&/M#N82MZ8V4N;nn:Nr4t;OT(C=P5^[EPkp[EQN*<L
+R/`TRRf8fVSH#/ZT)YD_T`1WTU8+KZUnsrcVl-JmWiE,$Xf\b0YctC<Za7$I[^WcW\[oGd]tV7r
+^r!t+`5T^9aN2KGbKJ,ScHjkbdF-LneCE+#f@S[.rn7D-h#?.0hZ)L4i;_d9ir%j:jSn9;k5FK@
+kkF??lMTuDm/HDNmecJPnG_tTo)A7\o_\=\pAXg`q#:*gqYC$dr;?N_rdk*#s7cPD~>
+JcC<$JcDPGn,E7`rVZNhrqcWirV6Bds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNH
+jQ#:[io0mp#N+Cph;-lAg]#n3g"=s/f@JO'rm^ts!7Lkos3Lblrm(Pg!6kGcs2k>`rlG,[!65#W
+!Q;nT_@+2q^q[Xu]tM(k]=S!P"h;%M[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:PNfB!VMi*CKM26qBL5(D9K`6W(JcLB$JH(*!If4]pHiSNlHN/9j
+Gl2dcG5cX^FT-@]Er0kUE;jeQDZ4MPD#A)JCB&#GB`;ZEB)H6>AH-0:@fBg8@/41-?M@b">kVJ!
+?LM7e@,52e@/OI/@f9g9AG]s:B)ZH>B`2ZCC@>rpD#8)FDZ4SRE;aeUErU4[FT6L`G5c^cGlN'g
+H3/G@I/\NqIXckHJH(0#K)UE&K`?c*LB!&/M#N82MZ8V4N;nn:Nr4t;OT(C=P5^[EPkp[EQN*<L
+R/`TRRf8fVSH#/ZT)YD_T`1WTU8+KZUnsrcVl-JmWiE,$Xf\b0YctC<Za7$I[^WcW\[oGd]tV7r
+^r!t+`5T^9aN2KGbKJ,ScHjkbdF-LneCE+#f@S[.rn7D-h#?.0hZ)L4i;_d9ir%j:jSn9;k5FK@
+kkF??lMTuDm/HDNmecJPnG_tTo)A7\o_\=\pAXg`q#:*gqYC$dr;?N_rdk*#s7cPD~>
+JcC<$JcDPGn,E7`rVZNhrqcWirV6Bds7ZHbs7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJ!U/_Gk5XNH
+jQ#:[io0mp#N+Cph;-lAg]#n3g"=s/f@JO'rm^ts!7Lkos3Lblrm(Pg!6kGcs2k>`rlG,[!65#W
+!Q;nT_@+2q^q[Xu]tM(k]=S!P"h;%M[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:PNfB!VMi*CKM26qBL5(D9K`6W(JcLB$JH(*!If4]pHiSNlHN/9j
+Gl2dcG5cX^FT-@]Er0kUE;jeQDZ4MPD#A)JCB&#GB`;ZEB)H6>AH-0:@fBg8@/41-?M@b">kVJ!
+?LM7e@,52e@/OI/@f9g9AG]s:B)ZH>B`2ZCC@>rpD#8)FDZ4SRE;aeUErU4[FT6L`G5c^cGlN'g
+H3/G@I/\NqIXckHJH(0#K)UE&K`?c*LB!&/M#N82MZ8V4N;nn:Nr4t;OT(C=P5^[EPkp[EQN*<L
+R/`TRRf8fVSH#/ZT)YD_T`1WTU8+KZUnsrcVl-JmWiE,$Xf\b0YctC<Za7$I[^WcW\[oGd]tV7r
+^r!t+`5T^9aN2KGbKJ,ScHjkbdF-LneCE+#f@S[.rn7D-h#?.0hZ)L4i;_d9ir%j:jSn9;k5FK@
+kkF??lMTuDm/HDNmecJPnG_tTo)A7\o_\=\pAXg`q#:*gqYC$dr;?N_rdk*#s7cPD~>
+JcC<$JcDJEnG`@arVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gjp1#/
+jQ#:[io0mp#N+Cph;-lAg]#n.g"=sVf)jORec+&"e'c\Dd/q\@ci25iblGuebQ#]bao9?_a2Z-u
+`<!oprk\]P_#D(L^:jNY,.kFs\[],X[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[rh0psT:VXF
+S=?":R@'A.QBd`"PQ$^KOcYWbNfF$s!K2j7M$JilLPCP;KnTGXs+16%rdb#us*jrqs*XinrHeKh
+s*4Hcs*"Bar,hpZrc7mUrc%mUqelCMs(qRJs(_OIr+Q+Crau(>s()+=qdTP5ra>M.q-NSspKmAs
+g0j2Qq-a).q-s>5rFGe:rau+AqIokBr+bk>ghce'php(Lrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk
+s*Xfo!e,WKrdY'$JqEuS!ec8]reCH.!/UT1s,-i7rJ^c9s,R#<rfI,Aqi^rBrKR2ErKdGLr0[JO
+s-inUs.'+[rgs.^s.K@b!MZ@gU]I<hrhhoXWN)u!XKAV-YHY79ZEpmE[C3NR\[f;`]Y(tn^VI\&
+_SjF4`lH0Bb0.uPc-FV\d*^7he'umtf%8O+g&B\+gYDeas5!b5rSRb9io9mrs5a1@qr[k?rTO%@
+r9F4Gq!@tHrpKXOrp]pWqssaXrq-*\s7ZHdqY:'crqcHfr;?Kkn,@n<JcGKEJ,~>
+JcC<$JcDJEnG`@arVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gjp1#/
+jQ#:[io0mp#N+Cph;-lAg]#n.g"=sVf)jORec+&"e'c\Dd/q\@ci25iblGuebQ#]bao9?_a2Z-u
+`<!oprk\]P_#D(L^:jNY,.kFs\[],X[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[rh0psT:VXF
+S=?":R@'A.QBd`"PQ$^KOcYWbNfF$s!K2j7M$JilLPCP;KnTGXs+16%rdb#us*jrqs*XinrHeKh
+s*4Hcs*"Bar,hpZrc7mUrc%mUqelCMs(qRJs(_OIr+Q+Crau(>s()+=qdTP5ra>M.q-NSspKmAs
+g0j2Qq-a).q-s>5rFGe:rau+AqIokBr+bk>ghce'php(Lrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk
+s*Xfo!e,WKrdY'$JqEuS!ec8]reCH.!/UT1s,-i7rJ^c9s,R#<rfI,Aqi^rBrKR2ErKdGLr0[JO
+s-inUs.'+[rgs.^s.K@b!MZ@gU]I<hrhhoXWN)u!XKAV-YHY79ZEpmE[C3NR\[f;`]Y(tn^VI\&
+_SjF4`lH0Bb0.uPc-FV\d*^7he'umtf%8O+g&B\+gYDeas5!b5rSRb9io9mrs5a1@qr[k?rTO%@
+r9F4Gq!@tHrpKXOrp]pWqssaXrq-*\s7ZHdqY:'crqcHfr;?Kkn,@n<JcGKEJ,~>
+JcC<$JcDJEnG`@arVZNhrqcZjr:p<ds7ZEas7?<_rUL$[nF6GGs6]mSrp0^PlK\B5!U/_Gjp1#/
+jQ#:[io0mp#N+Cph;-lAg]#n.g"=sVf)jORec+&"e'c\Dd/q\@ci25iblGuebQ#]bao9?_a2Z-u
+`<!oprk\]P_#D(L^:jNY,.kFs\[],X[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[rh0psT:VXF
+S=?":R@'A.QBd`"PQ$^KOcYWbNfF$s!K2j7M$JilLPCP;KnTGXs+16%rdb#us*jrqs*XinrHeKh
+s*4Hcs*"Bar,hpZrc7mUrc%mUqelCMs(qRJs(_OIr+Q+Crau(>s()+=qdTP5ra>M.q-NSspKmAs
+g0j2Qq-a).q-s>5rFGe:rau+AqIokBr+bk>ghce'php(Lrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk
+s*Xfo!e,WKrdY'$JqEuS!ec8]reCH.!/UT1s,-i7rJ^c9s,R#<rfI,Aqi^rBrKR2ErKdGLr0[JO
+s-inUs.'+[rgs.^s.K@b!MZ@gU]I<hrhhoXWN)u!XKAV-YHY79ZEpmE[C3NR\[f;`]Y(tn^VI\&
+_SjF4`lH0Bb0.uPc-FV\d*^7he'umtf%8O+g&B\+gYDeas5!b5rSRb9io9mrs5a1@qr[k?rTO%@
+r9F4Gq!@tHrpKXOrp]pWqssaXrq-*\s7ZHdqY:'crqcHfr;?Kkn,@n<JcGKEJ,~>
+JcC<$JcDJEnG`@arVZNhrqcWirV6Bds7ZHbs7H?_rpp*Zs7$$V!q,ICrp0mUlK[Wukih4/jp1#/
+jQ#:[io0mp!oMkkrnRV1g]#q,f`9\(fDjD%ec+(ue,Rkqd/q\@ci22kc-4E2b6#i.ao9?da2Z-<
+`Pf^4rk\]P_#D(Y^:h1l]=PSa\[],W[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:ANfF$s!K2j7M#iEfreCH,!/1?(s+16%rI=s!IX_6Ds*XinrHeKh
+s*4Hcrc\<aqfMgYrc7pVrc%jTr,2LNrbVLJs(_RJr+Q(Bs(;1?rac"<qdTP5rF#;*mU#?hpgE2l
+ggL"fpgX54rFGe:rau+AqIokBrG)"@oPEK'pMTqJrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk!.=co
+s*artrdb$"!.t3&s+CB+rItB/Lku%es,-i7rJ^c9s,R&=rfI,Ar0%&CrKR2ErKdGLqj@ANs-ikT
+s.'+[rLO(_TV2:X!huHbrhKRkVZ*J[W2ZesX/rG*Y-5(6Z*L^B['d?N\%&u[]=bei^;%J"_SX4/
+`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(f\+s3g=tE^h>c=3hu;R6iW%p9j8\3?jnn3>kPaW>l29iE
+lhBcEmJZJLn,;bTnb_nVoD\CZp&Fabp\O[aq>L0dqu$BirU9`:s+14Ds*t~>
+JcC<$JcDJEnG`@arVZNhrqcWirV6Bds7ZHbs7H?_rpp*Zs7$$V!q,ICrp0mUlK[Wukih4/jp1#/
+jQ#:[io0mp!oMkkrnRV1g]#q,f`9\(fDjD%ec+(ue,Rkqd/q\@ci22kc-4E2b6#i.ao9?da2Z-<
+`Pf^4rk\]P_#D(Y^:h1l]=PSa\[],W[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:ANfF$s!K2j7M#iEfreCH,!/1?(s+16%rI=s!IX_6Ds*XinrHeKh
+s*4Hcrc\<aqfMgYrc7pVrc%jTr,2LNrbVLJs(_RJr+Q(Bs(;1?rac"<qdTP5rF#;*mU#?hpgE2l
+ggL"fpgX54rFGe:rau+AqIokBrG)"@oPEK'pMTqJrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk!.=co
+s*artrdb$"!.t3&s+CB+rItB/Lku%es,-i7rJ^c9s,R&=rfI,Ar0%&CrKR2ErKdGLqj@ANs-ikT
+s.'+[rLO(_TV2:X!huHbrhKRkVZ*J[W2ZesX/rG*Y-5(6Z*L^B['d?N\%&u[]=bei^;%J"_SX4/
+`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(f\+s3g=tE^h>c=3hu;R6iW%p9j8\3?jnn3>kPaW>l29iE
+lhBcEmJZJLn,;bTnb_nVoD\CZp&Fabp\O[aq>L0dqu$BirU9`:s+14Ds*t~>
+JcC<$JcDJEnG`@arVZNhrqcWirV6Bds7ZHbs7H?_rpp*Zs7$$V!q,ICrp0mUlK[Wukih4/jp1#/
+jQ#:[io0mp!oMkkrnRV1g]#q,f`9\(fDjD%ec+(ue,Rkqd/q\@ci22kc-4E2b6#i.ao9?da2Z-<
+`Pf^4rk\]P_#D(Y^:h1l]=PSa\[],W[^ELAZR)o^Yct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R$a5+rfmYOPEM)kOT(:ANfF$s!K2j7M#iEfreCH,!/1?(s+16%rI=s!IX_6Ds*XinrHeKh
+s*4Hcrc\<aqfMgYrc7pVrc%jTr,2LNrbVLJs(_RJr+Q(Bs(;1?rac"<qdTP5rF#;*mU#?hpgE2l
+ggL"fpgX54rFGe:rau+AqIokBrG)"@oPEK'pMTqJrc%dTs)S-\rH/'^s*"Bcs*+Nhrd+Tk!.=co
+s*artrdb$"!.t3&s+CB+rItB/Lku%es,-i7rJ^c9s,R&=rfI,Ar0%&CrKR2ErKdGLqj@ANs-ikT
+s.'+[rLO(_TV2:X!huHbrhKRkVZ*J[W2ZesX/rG*Y-5(6Z*L^B['d?N\%&u[]=bei^;%J"_SX4/
+`Q#s>aN;TJbg"GYcd:(edaQ^qe^i@(f\+s3g=tE^h>c=3hu;R6iW%p9j8\3?jnn3>kPaW>l29iE
+lhBcEmJZJLn,;bTnb_nVoD\CZp&Fabp\O[aq>L0dqu$BirU9`:s+14Ds*t~>
+JcC<$JcDABnc&Lcr;?HhrqcWirV6Ees7ZEas7H?_rpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoXZ*
+jSn0?io0mps5*h5rnRY2gY;_]!nl5Yrn%2$!7h(us3gtrrQt\ncd2U9!mSs5rlYAcaiXP'(!">6
+`Pod6_ns:,_8*h#^:q:n]XtcS\L"bp[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+rgO4_R@'A.QBd`"PQ$^QOcYWbNfK*XN/NUOreUZ3L]3&.K`Hf*KE$Q'Jc:3"J,ausIK+]oHi89j
+H2`'dGQ2jcFo-:\F8g4WEW:"WDu=MPD?"GMC]8)KC&DZEBDuN@Ac?6>A,Ba6@JjNf?hn+%@Imsu
+@H_+p@JF=1A,^$8Ac?<@BDQ<?C&VlAC\_f'D=_ZEDuFYQEW:(YF8^4\FT?U`G63#7H2`-iHN8Hm
+IK+`rJ,Xs"JV&LQK*$^[L&Qf.LPUccM>rJ5MuJ\8NW5%:O8k=AOo1CAPQ$gCQ2[*KQhm*KRJrZQ
+S,]#YSc,/[TDtS`U&UheU].(hV*1]RVl6PnWiE,$Xf\b0YHY79ZEppG[^NZT\[f;`]Y2%o^VI\&
+_o0O5`lH0Bb0.uPc-FV]dF$CkeC<%"rmqP1g"P07gt^`AhVR/hi;_d9ir8!<jSn9=k5OQCkkOE?
+lMTuBm/68LmeZDNnG_tTo)A7[o_\=\pAXg_q#:*fqYC$er;6H^rdk*#s7QDB~>
+JcC<$JcDABnc&Lcr;?HhrqcWirV6Ees7ZEas7H?_rpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoXZ*
+jSn0?io0mps5*h5rnRY2gY;_]!nl5Yrn%2$!7h(us3gtrrQt\ncd2U9!mSs5rlYAcaiXP'(!">6
+`Pod6_ns:,_8*h#^:q:n]XtcS\L"bp[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+rgO4_R@'A.QBd`"PQ$^QOcYWbNfK*XN/NUOreUZ3L]3&.K`Hf*KE$Q'Jc:3"J,ausIK+]oHi89j
+H2`'dGQ2jcFo-:\F8g4WEW:"WDu=MPD?"GMC]8)KC&DZEBDuN@Ac?6>A,Ba6@JjNf?hn+%@Imsu
+@H_+p@JF=1A,^$8Ac?<@BDQ<?C&VlAC\_f'D=_ZEDuFYQEW:(YF8^4\FT?U`G63#7H2`-iHN8Hm
+IK+`rJ,Xs"JV&LQK*$^[L&Qf.LPUccM>rJ5MuJ\8NW5%:O8k=AOo1CAPQ$gCQ2[*KQhm*KRJrZQ
+S,]#YSc,/[TDtS`U&UheU].(hV*1]RVl6PnWiE,$Xf\b0YHY79ZEppG[^NZT\[f;`]Y2%o^VI\&
+_o0O5`lH0Bb0.uPc-FV]dF$CkeC<%"rmqP1g"P07gt^`AhVR/hi;_d9ir8!<jSn9=k5OQCkkOE?
+lMTuBm/68LmeZDNnG_tTo)A7[o_\=\pAXg_q#:*fqYC$er;6H^rdk*#s7QDB~>
+JcC<$JcDABnc&Lcr;?HhrqcWirV6Ees7ZEas7H?_rpp*Zs7$$V!q,ICrp0[OlMg&JkQ'fFjoXZ*
+jSn0?io0mps5*h5rnRY2gY;_]!nl5Yrn%2$!7h(us3gtrrQt\ncd2U9!mSs5rlYAcaiXP'(!">6
+`Pod6_ns:,_8*h#^:q:n]XtcS\L"bp[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+rgO4_R@'A.QBd`"PQ$^QOcYWbNfK*XN/NUOreUZ3L]3&.K`Hf*KE$Q'Jc:3"J,ausIK+]oHi89j
+H2`'dGQ2jcFo-:\F8g4WEW:"WDu=MPD?"GMC]8)KC&DZEBDuN@Ac?6>A,Ba6@JjNf?hn+%@Imsu
+@H_+p@JF=1A,^$8Ac?<@BDQ<?C&VlAC\_f'D=_ZEDuFYQEW:(YF8^4\FT?U`G63#7H2`-iHN8Hm
+IK+`rJ,Xs"JV&LQK*$^[L&Qf.LPUccM>rJ5MuJ\8NW5%:O8k=AOo1CAPQ$gCQ2[*KQhm*KRJrZQ
+S,]#YSc,/[TDtS`U&UheU].(hV*1]RVl6PnWiE,$Xf\b0YHY79ZEppG[^NZT\[f;`]Y2%o^VI\&
+_o0O5`lH0Bb0.uPc-FV]dF$CkeC<%"rmqP1g"P07gt^`AhVR/hi;_d9ir8!<jSn9=k5OQCkkOE?
+lMTuBm/68LmeZDNnG_tTo)A7[o_\=\pAXg_q#:*fqYC$er;6H^rdk*#s7QDB~>
+JcC<$JcD>Ao)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i;_[7hYu@2g]6+.gAfh+f_sD'f%&=Me,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b!PZ8H]Eu3]\[f5Z[^NTNrj*oVZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:VXF
+S=?":R@'A.QN!-\P`q8nOcYZcO,f3ZN/W[PMZ/G5Lkktas+LH+rIY0'JV!fNs*t&trI+]ns*OZi
+s*=Tgr-/-`rcS-\rcA'Zr,M^Ts)7gQrb_[Or+l=Is(VCErb)7Cqdoe<raYb5rF,S2k?n!lpgN&h
+nR;3#p0mZ(rF>h;qITY<rb)(@rb;=GphTbCokiH$rGVXRr,M^Vs)\-\s)n?brHA<fH$TC8!df<B
+rd=isIt.HJ#D%JYK7ei1L&Qi,LB*//M#rQmMuJ\8NW5%;O8k=AOo1CAPQ$gDQ2[*KQhm*KRJrZP
+S,]#XSc,/[TDtS`U&UkeU].%iV5F6i8Z8VfWiE,$Xf\b/YHY79ZEpmE[C3QS\[f;`]Y(qm^VI\&
+_Sa@3`lH0AaihlOc-FV\d*^7he'umtf%8O+g"P07gYCW@hVR/hi;_a9ir.p;jT"?>k5XWDkkXK@
+lMTuBm/68KmeQ>MnG_tSo)A7[o_\=\pAXg_q#:*fqYC$dr;?N_rdk*#s7H>A~>
+JcC<$JcD>Ao)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i;_[7hYu@2g]6+.gAfh+f_sD'f%&=Me,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b!PZ8H]Eu3]\[f5Z[^NTNrj*oVZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:VXF
+S=?":R@'A.QN!-\P`q8nOcYZcO,f3ZN/W[PMZ/G5Lkktas+LH+rIY0'JV!fNs*t&trI+]ns*OZi
+s*=Tgr-/-`rcS-\rcA'Zr,M^Ts)7gQrb_[Or+l=Is(VCErb)7Cqdoe<raYb5rF,S2k?n!lpgN&h
+nR;3#p0mZ(rF>h;qITY<rb)(@rb;=GphTbCokiH$rGVXRr,M^Vs)\-\s)n?brHA<fH$TC8!df<B
+rd=isIt.HJ#D%JYK7ei1L&Qi,LB*//M#rQmMuJ\8NW5%;O8k=AOo1CAPQ$gDQ2[*KQhm*KRJrZP
+S,]#XSc,/[TDtS`U&UkeU].%iV5F6i8Z8VfWiE,$Xf\b/YHY79ZEpmE[C3QS\[f;`]Y(qm^VI\&
+_Sa@3`lH0AaihlOc-FV\d*^7he'umtf%8O+g"P07gYCW@hVR/hi;_a9ir.p;jT"?>k5XWDkkXK@
+lMTuBm/68KmeQ>MnG_tSo)A7[o_\=\pAXg_q#:*fqYC$dr;?N_rdk*#s7H>A~>
+JcC<$JcD>Ao)ARcrVZNhrqcZjr:p<ds7ZEas7H?_rpp*Z!:^!Vs6]mSrp9[N!:'RJs6'IGroO:D
+jQ-=#!TN);i;_[7hYu@2g]6+.gAfh+f_sD'f%&=Me,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b!PZ8H]Eu3]\[f5Z[^NTNrj*oVZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:VXF
+S=?":R@'A.QN!-\P`q8nOcYZcO,f3ZN/W[PMZ/G5Lkktas+LH+rIY0'JV!fNs*t&trI+]ns*OZi
+s*=Tgr-/-`rcS-\rcA'Zr,M^Ts)7gQrb_[Or+l=Is(VCErb)7Cqdoe<raYb5rF,S2k?n!lpgN&h
+nR;3#p0mZ(rF>h;qITY<rb)(@rb;=GphTbCokiH$rGVXRr,M^Vs)\-\s)n?brHA<fH$TC8!df<B
+rd=isIt.HJ#D%JYK7ei1L&Qi,LB*//M#rQmMuJ\8NW5%;O8k=AOo1CAPQ$gDQ2[*KQhm*KRJrZP
+S,]#XSc,/[TDtS`U&UkeU].%iV5F6i8Z8VfWiE,$Xf\b/YHY79ZEpmE[C3QS\[f;`]Y(qm^VI\&
+_Sa@3`lH0AaihlOc-FV\d*^7he'umtf%8O+g"P07gYCW@hVR/hi;_a9ir.p;jT"?>k5XWDkkXK@
+lMTuBm/68KmeQ>MnG_tSo)A7[o_\=\pAXg_q#:*fqYC$dr;?N_rdk*#s7H>A~>
+JcC<$JcD>Anc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ!pJh1roO:D
+jQ-=##NF_$i8EMMhYl73gtUT_g&fs[f`'M&ec=8!e,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b"hq[_]XtcS\Mq%-[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QBd`"PEV/mOc]R'!KN0=MunopMZ/G5Lkktas+UK+re(6&!.k*!s*t&trI+]nrd4Ti
+rd"Ngqfi'`rcS*[s)\0[r,M^Ts)7gQs)%aOrG2CIs(VCEs(D=Cr+5k<rF>Y4r*eYopgMQZk@+$m
+rF>e:qITY<rb)+ArFu7Gq.onEq/+`$r,;LPqf2XVrcA$[s)n?brceBes*=Ti!df<Brd=isIt.HJ
+!J,k%KE$T)L&Qf.LPUccM>rG5MuJ\8NW5%;O8k=AOo:IBPQ-mEQ2[*KQhm*KRJrZPS,SrWSc,/Z
+TDtS`U&UkeU].(hV#[ClVZE`qri/#[XKAV-Y-5(6Z*L^B['d?N\%&u[]=bei^;%G!_SX4/`Pom=
+aN;TJbKS5Vcd:(edaQ^qe^i@(f\-8X#2@qhh;7#Grnmk:io9sts5a4Ar9"%Broj4CrTa=Hp[%eE
+r9jCLrUBdUqXXXWrUg![rq??cqY:'crVH?er;?HjnG\"=JcGBBJ,~>
+JcC<$JcD>Anc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ!pJh1roO:D
+jQ-=##NF_$i8EMMhYl73gtUT_g&fs[f`'M&ec=8!e,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b"hq[_]XtcS\Mq%-[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QBd`"PEV/mOc]R'!KN0=MunopMZ/G5Lkktas+UK+re(6&!.k*!s*t&trI+]nrd4Ti
+rd"Ngqfi'`rcS*[s)\0[r,M^Ts)7gQs)%aOrG2CIs(VCEs(D=Cr+5k<rF>Y4r*eYopgMQZk@+$m
+rF>e:qITY<rb)+ArFu7Gq.onEq/+`$r,;LPqf2XVrcA$[s)n?brceBes*=Ti!df<Brd=isIt.HJ
+!J,k%KE$T)L&Qf.LPUccM>rG5MuJ\8NW5%;O8k=AOo:IBPQ-mEQ2[*KQhm*KRJrZPS,SrWSc,/Z
+TDtS`U&UkeU].(hV#[ClVZE`qri/#[XKAV-Y-5(6Z*L^B['d?N\%&u[]=bei^;%G!_SX4/`Pom=
+aN;TJbKS5Vcd:(edaQ^qe^i@(f\-8X#2@qhh;7#Grnmk:io9sts5a4Ar9"%Broj4CrTa=Hp[%eE
+r9jCLrUBdUqXXXWrUg![rq??cqY:'crVH?er;?HjnG\"=JcGBBJ,~>
+JcC<$JcD>Anc&IbrVZQirqcWirV6Bds7ZEa!qc*UrUL$[nF6GGs6]mSrp9[N!:'RJ!pJh1roO:D
+jQ-=##NF_$i8EMMhYl73gtUT_g&fs[f`'M&ec=8!e,n+Idf.YociDDjc2u87bl5cjb/qcHaN)?@
+rl"oV_u@LR_8-&b"hq[_]XtcS\Mq%-[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QBd`"PEV/mOc]R'!KN0=MunopMZ/G5Lkktas+UK+re(6&!.k*!s*t&trI+]nrd4Ti
+rd"Ngqfi'`rcS*[s)\0[r,M^Ts)7gQs)%aOrG2CIs(VCEs(D=Cr+5k<rF>Y4r*eYopgMQZk@+$m
+rF>e:qITY<rb)+ArFu7Gq.onEq/+`$r,;LPqf2XVrcA$[s)n?brceBes*=Ti!df<Brd=isIt.HJ
+!J,k%KE$T)L&Qf.LPUccM>rG5MuJ\8NW5%;O8k=AOo:IBPQ-mEQ2[*KQhm*KRJrZPS,SrWSc,/Z
+TDtS`U&UkeU].(hV#[ClVZE`qri/#[XKAV-Y-5(6Z*L^B['d?N\%&u[]=bei^;%G!_SX4/`Pom=
+aN;TJbKS5Vcd:(edaQ^qe^i@(f\-8X#2@qhh;7#Grnmk:io9sts5a4Ar9"%Broj4CrTa=Hp[%eE
+r9jCLrUBdUqXXXWrUg![rq??cqY:'crVH?er;?HjnG\"=JcGBBJ,~>
+JcC<$JcD;@nc&IbrVZQirqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJ!pJh1roO:D
+jQ-=#!oi1trnmk8hVS7fs4dV/rn@D*s4I>&s4.2#rR:ntdaJ-Bs3Lblrm(Pgs31Mds2k>`rl>Yk
+`l?!:`5KR1_SO((^V@Lrrk("u]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RTV%gI
+SXc1=R[KP1Q^7W9!L/fIOo^],rf7)?NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,aurIK+]o
+Hi/3iH2`'dGQ)dbFo6@]F8g4XEW:"WDuFSQD?"GMC]A/LC&DZDBDuN@Ac60=A+sI)@K0a+@I%Cn
+A*%1n@I[h*A,Ts7Ac?<?BDZBAC&MfCC]&#HD:ib%Du=SNEW1"YF8U.[FoQXaGQ2pfH2`*kH[L5?
+I0Y4NIt3'#JV*lR!ec8]re:H/M#N82M?&S5Muo!!NrG+>OT1IAP5gaFPl-gGQN*<JR/WNQReiNQ
+SGo)WT)PA^T`(SaUAq"fV#R7kVZ*LnW!TH'WiN2%Xf\b0rie;cZEpmE[C3NQ\@K/]]Y(ql^V@S#
+_Sa=2`Q#s>ai_fMbg"GYcd:(fe'umtf%8O+g"G*5gYDea!T)`5hu_lsir8!<jT"??k5XWDkkjWD
+lMTuBm/68Jme?2KnGVnRo)81Zo_S7[pAXg_q#:*fqYC$dr;6H^rdk*#s7?8@~>
+JcC<$JcD;@nc&IbrVZQirqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJ!pJh1roO:D
+jQ-=#!oi1trnmk8hVS7fs4dV/rn@D*s4I>&s4.2#rR:ntdaJ-Bs3Lblrm(Pgs31Mds2k>`rl>Yk
+`l?!:`5KR1_SO((^V@Lrrk("u]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RTV%gI
+SXc1=R[KP1Q^7W9!L/fIOo^],rf7)?NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,aurIK+]o
+Hi/3iH2`'dGQ)dbFo6@]F8g4XEW:"WDuFSQD?"GMC]A/LC&DZDBDuN@Ac60=A+sI)@K0a+@I%Cn
+A*%1n@I[h*A,Ts7Ac?<?BDZBAC&MfCC]&#HD:ib%Du=SNEW1"YF8U.[FoQXaGQ2pfH2`*kH[L5?
+I0Y4NIt3'#JV*lR!ec8]re:H/M#N82M?&S5Muo!!NrG+>OT1IAP5gaFPl-gGQN*<JR/WNQReiNQ
+SGo)WT)PA^T`(SaUAq"fV#R7kVZ*LnW!TH'WiN2%Xf\b0rie;cZEpmE[C3NQ\@K/]]Y(ql^V@S#
+_Sa=2`Q#s>ai_fMbg"GYcd:(fe'umtf%8O+g"G*5gYDea!T)`5hu_lsir8!<jT"??k5XWDkkjWD
+lMTuBm/68Jme?2KnGVnRo)81Zo_S7[pAXg_q#:*fqYC$dr;6H^rdk*#s7?8@~>
+JcC<$JcD;@nc&IbrVZQirqcZjr:p<ds7ZEas7H?_rpp*Zs7$$V!q,ICrp9[N!:'RJ!pJh1roO:D
+jQ-=#!oi1trnmk8hVS7fs4dV/rn@D*s4I>&s4.2#rR:ntdaJ-Bs3Lblrm(Pgs31Mds2k>`rl>Yk
+`l?!:`5KR1_SO((^V@Lrrk("u]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RTV%gI
+SXc1=R[KP1Q^7W9!L/fIOo^],rf7)?NW+k<Mi*DkM#rKgL]3#0KnP-YKE$Q'Jc1-!J,aurIK+]o
+Hi/3iH2`'dGQ)dbFo6@]F8g4XEW:"WDuFSQD?"GMC]A/LC&DZDBDuN@Ac60=A+sI)@K0a+@I%Cn
+A*%1n@I[h*A,Ts7Ac?<?BDZBAC&MfCC]&#HD:ib%Du=SNEW1"YF8U.[FoQXaGQ2pfH2`*kH[L5?
+I0Y4NIt3'#JV*lR!ec8]re:H/M#N82M?&S5Muo!!NrG+>OT1IAP5gaFPl-gGQN*<JR/WNQReiNQ
+SGo)WT)PA^T`(SaUAq"fV#R7kVZ*LnW!TH'WiN2%Xf\b0rie;cZEpmE[C3NQ\@K/]]Y(ql^V@S#
+_Sa=2`Q#s>ai_fMbg"GYcd:(fe'umtf%8O+g"G*5gYDea!T)`5hu_lsir8!<jT"??k5XWDkkjWD
+lMTuBm/68Jme?2KnGVnRo)81Zo_S7[pAXg_q#:*fqYC$dr;6H^rdk*#s7?8@~>
+JcC<$JcD8?o)ARcrVZNhs8)`jr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!pJh1roO:D
+jQ-=#!oi1tro!h6!8d_2s4mY/rn@D*!8.8%!nPoPrR:ntdaJ-Bs3LblrQYYmbfn8Rb0%j*aAp:#
+`l5p8`5BI/_8*k$^V7Co]Xtbd\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R@'A.QBd`"P`q8nOcb`dO,f6[repo:MMhCi!f2VereCH,!/1<'s+:9%rIFots*joprd=`m
+r-J?frcn?bs*"Bar,hpZs)S$Ws)A!Vr,2OOrbVOKrbDIIr+Q+Crau%=rFGk:o4%B$lXJa]emePe
+r+,Y8rau.Bqe5qBrbD:FrG;CKlu)!)qf)=Mrc8$[r,hs]s*"?bs*+Nhrd+Tk!.=cos*artrdY'$
+JqEuS!JH1+LB!#/M#N54MMmDlMuo!!NrG+>OT1IAP5gaGPl-gHQN!6JR/WNQReiNQSGo)VT)PA^
+T_tM`UAq"fV#R:kVZ*J$W2ZbrWiN5&Xf\b0rie;cZEpmE[C3NQ\@K/]]=bei^V@S#_SX4/`Q#s>
+aN;TJbK\>Xcd:(edaQ^qe^i@(f\,!4gYDea!T)`5hu_lsir8!<j8e<?k5OQDkkjWDlM^&Dm/-2J
+me6,InGVnQo)A7Zo_\=[pAXg_q#:*fqYC$dr;6H]rdk*#s7?8@~>
+JcC<$JcD8?o)ARcrVZNhs8)`jr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!pJh1roO:D
+jQ-=#!oi1tro!h6!8d_2s4mY/rn@D*!8.8%!nPoPrR:ntdaJ-Bs3LblrQYYmbfn8Rb0%j*aAp:#
+`l5p8`5BI/_8*k$^V7Co]Xtbd\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R@'A.QBd`"P`q8nOcb`dO,f6[repo:MMhCi!f2VereCH,!/1<'s+:9%rIFots*joprd=`m
+r-J?frcn?bs*"Bar,hpZs)S$Ws)A!Vr,2OOrbVOKrbDIIr+Q+Crau%=rFGk:o4%B$lXJa]emePe
+r+,Y8rau.Bqe5qBrbD:FrG;CKlu)!)qf)=Mrc8$[r,hs]s*"?bs*+Nhrd+Tk!.=cos*artrdY'$
+JqEuS!JH1+LB!#/M#N54MMmDlMuo!!NrG+>OT1IAP5gaGPl-gHQN!6JR/WNQReiNQSGo)VT)PA^
+T_tM`UAq"fV#R:kVZ*J$W2ZbrWiN5&Xf\b0rie;cZEpmE[C3NQ\@K/]]=bei^V@S#_SX4/`Q#s>
+aN;TJbK\>Xcd:(edaQ^qe^i@(f\,!4gYDea!T)`5hu_lsir8!<j8e<?k5OQDkkjWDlM^&Dm/-2J
+me6,InGVnQo)A7Zo_\=[pAXg_q#:*fqYC$dr;6H]rdk*#s7?8@~>
+JcC<$JcD8?o)ARcrVZNhs8)`jr:p<ds7ZEas7H?_rpp*Z!:]sU!q,ICrp0^PlK\B5!pJh1roO:D
+jQ-=#!oi1tro!h6!8d_2s4mY/rn@D*!8.8%!nPoPrR:ntdaJ-Bs3LblrQYYmbfn8Rb0%j*aAp:#
+`l5p8`5BI/_8*k$^V7Co]Xtbd\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k7R@'A.QBd`"P`q8nOcb`dO,f6[repo:MMhCi!f2VereCH,!/1<'s+:9%rIFots*joprd=`m
+r-J?frcn?bs*"Bar,hpZs)S$Ws)A!Vr,2OOrbVOKrbDIIr+Q+Crau%=rFGk:o4%B$lXJa]emePe
+r+,Y8rau.Bqe5qBrbD:FrG;CKlu)!)qf)=Mrc8$[r,hs]s*"?bs*+Nhrd+Tk!.=cos*artrdY'$
+JqEuS!JH1+LB!#/M#N54MMmDlMuo!!NrG+>OT1IAP5gaGPl-gHQN!6JR/WNQReiNQSGo)VT)PA^
+T_tM`UAq"fV#R:kVZ*J$W2ZbrWiN5&Xf\b0rie;cZEpmE[C3NQ\@K/]]=bei^V@S#_SX4/`Q#s>
+aN;TJbK\>Xcd:(edaQ^qe^i@(f\,!4gYDea!T)`5hu_lsir8!<j8e<?k5OQDkkjWDlM^&Dm/-2J
+me6,InGVnQo)A7Zo_\=[pAXg_q#:*fqYC$dr;6H]rdk*#s7?8@~>
+JcC<$JcD8?nc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roO:D
+jQ-=#s5F%;ro!h6s5*b2s4dV/rRq>+f\$/S!nPoPrm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pX`5DSk9>SEY^V7Fq]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXF
+S=?":R@'A.Q^3o%P`q;oP*(ifO,o<]NW+k<Mi*DkM#rKgL]3&.L&Zi)KE$Q'Jc1-!J,auqIK+]o
+Hi/3iH2`'dGQ)dcFo6@\F8p:YEW:"XDu=MQD?"GMC]A/KC&DZEBDuN>Ac60;A)CbhA)q1oA)Uno
+A,Ts6Ac?<?BDZBAC&VlDC]/)JD=h`.DtS)DEW1"XF8U.[FoHR`GQ2pfH2`-iHN8HmIK+`rJ,Xs'
+JV&K+K7no3re:H/M#N82M?&S6N;nk;NrG+>OT1IBP5gaGPl6mHQN*<KR/`TQRerTQSGo)VT)PA]
+T_tM`UAq"eV#R:kVZ*LnVuWgrWWB0%riH4(YPtafZ*L^B['d?N\%&uZ]">Vf]tV7r_8=(,`5T^8
+a2lBFbKJ,ScHaeadF-LneCE.%f@\d1g=tE<h;-rFrnmk:io9sts5X1ArT=.Cs60CFrp'IJq<\%H
+qsO1Hr:'XSq==LUrUfsZrq?<bqY:'crVH<dr;?Kkn,@n<JcG<@J,~>
+JcC<$JcD8?nc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roO:D
+jQ-=#s5F%;ro!h6s5*b2s4dV/rRq>+f\$/S!nPoPrm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pX`5DSk9>SEY^V7Fq]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXF
+S=?":R@'A.Q^3o%P`q;oP*(ifO,o<]NW+k<Mi*DkM#rKgL]3&.L&Zi)KE$Q'Jc1-!J,auqIK+]o
+Hi/3iH2`'dGQ)dcFo6@\F8p:YEW:"XDu=MQD?"GMC]A/KC&DZEBDuN>Ac60;A)CbhA)q1oA)Uno
+A,Ts6Ac?<?BDZBAC&VlDC]/)JD=h`.DtS)DEW1"XF8U.[FoHR`GQ2pfH2`-iHN8HmIK+`rJ,Xs'
+JV&K+K7no3re:H/M#N82M?&S6N;nk;NrG+>OT1IBP5gaGPl6mHQN*<KR/`TQRerTQSGo)VT)PA]
+T_tM`UAq"eV#R:kVZ*LnVuWgrWWB0%riH4(YPtafZ*L^B['d?N\%&uZ]">Vf]tV7r_8=(,`5T^8
+a2lBFbKJ,ScHaeadF-LneCE.%f@\d1g=tE<h;-rFrnmk:io9sts5X1ArT=.Cs60CFrp'IJq<\%H
+qsO1Hr:'XSq==LUrUfsZrq?<bqY:'crVH<dr;?Kkn,@n<JcG<@J,~>
+JcC<$JcD8?nc&LcrVZNhrqcZjr:p<ds7ZEas7H?_rUL$[nF6GGs6fpSrp0^PlK\B5!pJh1roO:D
+jQ-=#s5F%;ro!h6s5*b2s4dV/rRq>+f\$/S!nPoPrm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pX`5DSk9>SEY^V7Fq]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OT:VXF
+S=?":R@'A.Q^3o%P`q;oP*(ifO,o<]NW+k<Mi*DkM#rKgL]3&.L&Zi)KE$Q'Jc1-!J,auqIK+]o
+Hi/3iH2`'dGQ)dcFo6@\F8p:YEW:"XDu=MQD?"GMC]A/KC&DZEBDuN>Ac60;A)CbhA)q1oA)Uno
+A,Ts6Ac?<?BDZBAC&VlDC]/)JD=h`.DtS)DEW1"XF8U.[FoHR`GQ2pfH2`-iHN8HmIK+`rJ,Xs'
+JV&K+K7no3re:H/M#N82M?&S6N;nk;NrG+>OT1IBP5gaGPl6mHQN*<KR/`TQRerTQSGo)VT)PA]
+T_tM`UAq"eV#R:kVZ*LnVuWgrWWB0%riH4(YPtafZ*L^B['d?N\%&uZ]">Vf]tV7r_8=(,`5T^8
+a2lBFbKJ,ScHaeadF-LneCE.%f@\d1g=tE<h;-rFrnmk:io9sts5X1ArT=.Cs60CFrp'IJq<\%H
+qsO1Hr:'XSq==LUrUfsZrq?<bqY:'crVH<dr;?Kkn,@n<JcG<@J,~>
+JcC<$JcD8?nc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F.>s5O(;rnmk8hVS7fs4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pe`5BI/_83q%^V7Co]XtcS\LtD$[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QN!-MP`u*0!KiKCO8k4?NW+k<Mi*DkM>rA3L])u-L&Zi*KE$Q'Jc(&uJ,auqIK"Wo
+Hi/3hH2i-eGQ)dcFo6@]F8g4YEW:"WDuFSRD>nAMC]8)KC&DZDBDuN=Ac-*7A+3t$A+jI!AbK[.
+A*[V#A,Km5Ac66?BDZBAC&VlDC]/)JD>.rCDrbm0EW'qWF8L(ZFoQX`GQ2pfH2`*kH[L5?I0+kI
+J,Xs!JV*lR#D@ebL5(J=M#N54MMmDlMueourJq#AOcfX+s-*JIrK[DKs-NYNrgEbSqj[STrLNhW
+rh'1_qk=%arhKFfs/#amrhodp!3,sts/Q.$riH4(YPtaYZ*L^B['d?N\%&uZ]">Vf]tV7r^qmn)
+`5T^8a2l?Db0/#RcHab_dF$CkeC<%Jf+6Neg=k<:h;-rFhr*GOiSsjs!p&J)rT=.Cs60FGrp'LK
+q<\(IqsO.Gr:'XSq""CTrUfsZrV$6bqY:$brVH<dr;?Kkn,@n<JcG9?J,~>
+JcC<$JcD8?nc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F.>s5O(;rnmk8hVS7fs4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pe`5BI/_83q%^V7Co]XtcS\LtD$[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QN!-MP`u*0!KiKCO8k4?NW+k<Mi*DkM>rA3L])u-L&Zi*KE$Q'Jc(&uJ,auqIK"Wo
+Hi/3hH2i-eGQ)dcFo6@]F8g4YEW:"WDuFSRD>nAMC]8)KC&DZDBDuN=Ac-*7A+3t$A+jI!AbK[.
+A*[V#A,Km5Ac66?BDZBAC&VlDC]/)JD>.rCDrbm0EW'qWF8L(ZFoQX`GQ2pfH2`*kH[L5?I0+kI
+J,Xs!JV*lR#D@ebL5(J=M#N54MMmDlMueourJq#AOcfX+s-*JIrK[DKs-NYNrgEbSqj[STrLNhW
+rh'1_qk=%arhKFfs/#amrhodp!3,sts/Q.$riH4(YPtaYZ*L^B['d?N\%&uZ]">Vf]tV7r^qmn)
+`5T^8a2l?Db0/#RcHab_dF$CkeC<%Jf+6Neg=k<:h;-rFhr*GOiSsjs!p&J)rT=.Cs60FGrp'LK
+q<\(IqsO.Gr:'XSq""CTrUfsZrV$6bqY:$brVH<dr;?Kkn,@n<JcG9?J,~>
+JcC<$JcD8?nc&IbrVZQirqcWir:p<ds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F.>s5O(;rnmk8hVS7fs4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGcs2k>`rl>,\
+`r<pe`5BI/_83q%^V7Co]XtcS\LtD$[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc[TqS-OSt;LC
+S"#k8R@'A.QN!-MP`u*0!KiKCO8k4?NW+k<Mi*DkM>rA3L])u-L&Zi*KE$Q'Jc(&uJ,auqIK"Wo
+Hi/3hH2i-eGQ)dcFo6@]F8g4YEW:"WDuFSRD>nAMC]8)KC&DZDBDuN=Ac-*7A+3t$A+jI!AbK[.
+A*[V#A,Km5Ac66?BDZBAC&VlDC]/)JD>.rCDrbm0EW'qWF8L(ZFoQX`GQ2pfH2`*kH[L5?I0+kI
+J,Xs!JV*lR#D@ebL5(J=M#N54MMmDlMueourJq#AOcfX+s-*JIrK[DKs-NYNrgEbSqj[STrLNhW
+rh'1_qk=%arhKFfs/#amrhodp!3,sts/Q.$riH4(YPtaYZ*L^B['d?N\%&uZ]">Vf]tV7r^qmn)
+`5T^8a2l?Db0/#RcHab_dF$CkeC<%Jf+6Neg=k<:h;-rFhr*GOiSsjs!p&J)rT=.Cs60FGrp'LK
+q<\(IqsO.Gr:'XSq""CTrUfsZrV$6bqY:$brVH<dr;?Kkn,@n<JcG9?J,~>
+JcC<$JcD5>nc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F+=!oi1tro!h6s5*b2s4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc4j(mgaN2EB
+`l5p8_o'@._8*h#^:q:n]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ%WSct[T
+S"#k7rg3_QQN!-MP`u*0!KiKCO8k4?NW+n:MZAY5M#rKgL])r/KnP-XKE$Q&Jc1-!J,XopIK+]o
+Hi/3iH2`'eGQ)dcFo6@]F8p:YEW:"XDuFSQD?"GMC]A/KC&DZDBDlH;Abos*A+aBdAbT`qA,Bg4
+Ac66?BDQ<@C&VlEC]8/KD>8#GDtS)-EVskUF8L(ZFoQX`GQ2pfH2`-iHiJKmI0Y4NIt3'#JV*lR
+!JH1+L'NKiLl$tGMMqIm!f`5#rf7,BOcfX+s-*JIrg!MLs-NYNs-`kTr1!YTrginWrh'1_qk="`
+rhKFfs/#amrMT[os/H!t6E@2hXf\b/YHY79Z*L^B['d?N\%&rY\[oDc]tV7r^qmn)_o0O5a2l?D
+b0.uPc-FY^dF$CkeC<%"f@S[.g=k<:rnRe8hr*GOiSsjs!p&J)roX7Ds60CFs6BULqX"1Jr9j7H
+qsaORp[\:SrUfpYrV$6bq=ssbrVH<dr;?Hjn,@n<JcG9?J,~>
+JcC<$JcD5>nc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F+=!oi1tro!h6s5*b2s4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc4j(mgaN2EB
+`l5p8_o'@._8*h#^:q:n]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ%WSct[T
+S"#k7rg3_QQN!-MP`u*0!KiKCO8k4?NW+n:MZAY5M#rKgL])r/KnP-XKE$Q&Jc1-!J,XopIK+]o
+Hi/3iH2`'eGQ)dcFo6@]F8p:YEW:"XDuFSQD?"GMC]A/KC&DZDBDlH;Abos*A+aBdAbT`qA,Bg4
+Ac66?BDQ<@C&VlEC]8/KD>8#GDtS)-EVskUF8L(ZFoQX`GQ2pfH2`-iHiJKmI0Y4NIt3'#JV*lR
+!JH1+L'NKiLl$tGMMqIm!f`5#rf7,BOcfX+s-*JIrg!MLs-NYNs-`kTr1!YTrginWrh'1_qk="`
+rhKFfs/#amrMT[os/H!t6E@2hXf\b/YHY79Z*L^B['d?N\%&rY\[oDc]tV7r^qmn)_o0O5a2l?D
+b0.uPc-FY^dF$CkeC<%"f@S[.g=k<:rnRe8hr*GOiSsjs!p&J)roX7Ds60CFs6BULqX"1Jr9j7H
+qsaORp[\:SrUfpYrV$6bq=ssbrVH<dr;?Hjn,@n<JcG9?J,~>
+JcC<$JcD5>nc&LcrVZNhrqcWirV6Bds7ZEas7H?_rpp*Zs7$$Vs6]mSrp9[Ns6BUJ!pJh1roX7B
+!9F+=!oi1tro!h6s5*b2s4mY/rn@D*s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc4j(mgaN2EB
+`l5p8_o'@._8*h#^:q:n]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qpVl$;dUnaZXTqJ%WSct[T
+S"#k7rg3_QQN!-MP`u*0!KiKCO8k4?NW+n:MZAY5M#rKgL])r/KnP-XKE$Q&Jc1-!J,XopIK+]o
+Hi/3iH2`'eGQ)dcFo6@]F8p:YEW:"XDuFSQD?"GMC]A/KC&DZDBDlH;Abos*A+aBdAbT`qA,Bg4
+Ac66?BDQ<@C&VlEC]8/KD>8#GDtS)-EVskUF8L(ZFoQX`GQ2pfH2`-iHiJKmI0Y4NIt3'#JV*lR
+!JH1+L'NKiLl$tGMMqIm!f`5#rf7,BOcfX+s-*JIrg!MLs-NYNs-`kTr1!YTrginWrh'1_qk="`
+rhKFfs/#amrMT[os/H!t6E@2hXf\b/YHY79Z*L^B['d?N\%&rY\[oDc]tV7r^qmn)_o0O5a2l?D
+b0.uPc-FY^dF$CkeC<%"f@S[.g=k<:rnRe8hr*GOiSsjs!p&J)roX7Ds60CFs6BULqX"1Jr9j7H
+qsaORp[\:SrUfpYrV$6bq=ssbrVH<dr;?Hjn,@n<JcG9?J,~>
+JcC<$JcD5>nc&IbrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sUs6]mSrp9[Ns6BUJs6'IGroX7B
+s5a1>s5F%;rS[_5!8d\1s4dV/rS%;)s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc!QrO`a8s?$
+rl"oV_u@M!_8*h#^:h1l]=PP`\@8oT[C*BJZa$a=YHG"0XK/A$WMl_mVPX9f$)=5gTqJ$LSt2DN
+RgY[QR$a5,QBd`"P`u*0!KiKCO8k4?NW+n:MuS\6M>rD3L]3&.L&Zi)KE$Q&Jc1,uJ,auqIK+]o
+Hi/3iH2`'eGQ)dcFo?F]F8p:ZEW:"WDuFSRD>nAMC]8)JC&;TCBDlH7Aaa0iAcHB*AbK[)A,'U0
+Ac66?BDQ<@C&VlEC]8/KD>A)IDu+G.EVjeSF8L(YFoQX_GQ2mfH2W'hHN8HmIK+`rJ,Xs'JV&K+
+K7no3re:H/M#N59MMmCON/`gWrf@)@!0R8Ds-!GIrK[DKs-N\Os-`nUqj[VUrginWrh'.^qk="`
+rhKCerh]XlrMT[os/H!ts/Q.$riJ>dYHP17Z*L[AZa@-K[^W`U\[f;`]Y(ql^VI\&_Sa=2`Q#s>
+aND]Lbg"GYcd:(fe'umtf%8O+g"P07h#?+6hV[8LiSieqir\<'jo4EBkPscEl2U&Jlhg&ImJZJH
+n,)VOnb2POoDS=Wp&4U_p\O[`q>L0bqu$BhrU9`:s+14>s*t~>
+JcC<$JcD5>nc&IbrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sUs6]mSrp9[Ns6BUJs6'IGroX7B
+s5a1>s5F%;rS[_5!8d\1s4dV/rS%;)s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc!QrO`a8s?$
+rl"oV_u@M!_8*h#^:h1l]=PP`\@8oT[C*BJZa$a=YHG"0XK/A$WMl_mVPX9f$)=5gTqJ$LSt2DN
+RgY[QR$a5,QBd`"P`u*0!KiKCO8k4?NW+n:MuS\6M>rD3L]3&.L&Zi)KE$Q&Jc1,uJ,auqIK+]o
+Hi/3iH2`'eGQ)dcFo?F]F8p:ZEW:"WDuFSRD>nAMC]8)JC&;TCBDlH7Aaa0iAcHB*AbK[)A,'U0
+Ac66?BDQ<@C&VlEC]8/KD>A)IDu+G.EVjeSF8L(YFoQX_GQ2mfH2W'hHN8HmIK+`rJ,Xs'JV&K+
+K7no3re:H/M#N59MMmCON/`gWrf@)@!0R8Ds-!GIrK[DKs-N\Os-`nUqj[VUrginWrh'.^qk="`
+rhKCerh]XlrMT[os/H!ts/Q.$riJ>dYHP17Z*L[AZa@-K[^W`U\[f;`]Y(ql^VI\&_Sa=2`Q#s>
+aND]Lbg"GYcd:(fe'umtf%8O+g"P07h#?+6hV[8LiSieqir\<'jo4EBkPscEl2U&Jlhg&ImJZJH
+n,)VOnb2POoDS=Wp&4U_p\O[`q>L0bqu$BhrU9`:s+14>s*t~>
+JcC<$JcD5>nc&IbrVZNhrqcZjr:p<ds7ZB`!qc*UrUU!Y!:]sUs6]mSrp9[Ns6BUJs6'IGroX7B
+s5a1>s5F%;rS[_5!8d\1s4dV/rS%;)s4I>&s475#rm^tss3gnos3Lblrm(Pg!6kGc!QrO`a8s?$
+rl"oV_u@M!_8*h#^:h1l]=PP`\@8oT[C*BJZa$a=YHG"0XK/A$WMl_mVPX9f$)=5gTqJ$LSt2DN
+RgY[QR$a5,QBd`"P`u*0!KiKCO8k4?NW+n:MuS\6M>rD3L]3&.L&Zi)KE$Q&Jc1,uJ,auqIK+]o
+Hi/3iH2`'eGQ)dcFo?F]F8p:ZEW:"WDuFSRD>nAMC]8)JC&;TCBDlH7Aaa0iAcHB*AbK[)A,'U0
+Ac66?BDQ<@C&VlEC]8/KD>A)IDu+G.EVjeSF8L(YFoQX_GQ2mfH2W'hHN8HmIK+`rJ,Xs'JV&K+
+K7no3re:H/M#N59MMmCON/`gWrf@)@!0R8Ds-!GIrK[DKs-N\Os-`nUqj[VUrginWrh'.^qk="`
+rhKCerh]XlrMT[os/H!ts/Q.$riJ>dYHP17Z*L[AZa@-K[^W`U\[f;`]Y(ql^VI\&_Sa=2`Q#s>
+aND]Lbg"GYcd:(fe'umtf%8O+g"P07h#?+6hV[8LiSieqir\<'jo4EBkPscEl2U&Jlhg&ImJZJH
+n,)VOnb2POoDS=Wp&4U_p\O[`q>L0bqu$BhrU9`:s+14>s*t~>
+JcC<$JcD2=o)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs6'IGrT41C
+jQ-=#s5O(;ro!h6s5*_1s4dV/rS%;)s4I>&s475#rm^tss3gnos3LblrltSibfp(0!QrO`a8s?$
+rl#&Z_ns:,_#D(t^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMl_mVPU)aUS=HUTV)4T&=o>\
+S!ob5R$a5+QBd`"P`u*0#a(41O,o<]NK*pr!fMqnrJCQ1!/LN-s+UK+r.G$$s+1)us*t#srI+Zm
+s*OZis*=TgrHJ9brcS0]s)\3\r,MaUs)7jRrb_[Or+l:Hrb;7CrFc%?g1B/Rmq(`ook")6rb)(@
+rb;@HqeQ1IrGDCKrGVRPic4X3qfDRTrcS6ar-/0cs*=Qh!df<BrdFfq!.Xuu#D%JYK7ei1L&Qf-
+LPYqd!K)g7N!G?&NfT6_OHKO*s-!GIrKRGMQ^@Z<s-`nUr1!\Us.0%YrLa(^qP!n_rhK@drh]Xl
+r29Rn!3,pss/Q.$riQ4'!3cC+!O8s0ZT,>"[^NZS\@K/]]=bei^;%Fu_8=+.`Poj;aN2KGbKJ/U
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&ghuVfrro4(@jlQL(s6'FGrTX@Is6KRKrpB[Pp[A"Kqsj@M
+r:BjYq=X^[rV--_rV?Egq"t!equ,s^JcC<$nGe"~>
+JcC<$JcD2=o)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs6'IGrT41C
+jQ-=#s5O(;ro!h6s5*_1s4dV/rS%;)s4I>&s475#rm^tss3gnos3LblrltSibfp(0!QrO`a8s?$
+rl#&Z_ns:,_#D(t^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMl_mVPU)aUS=HUTV)4T&=o>\
+S!ob5R$a5+QBd`"P`u*0#a(41O,o<]NK*pr!fMqnrJCQ1!/LN-s+UK+r.G$$s+1)us*t#srI+Zm
+s*OZis*=TgrHJ9brcS0]s)\3\r,MaUs)7jRrb_[Or+l:Hrb;7CrFc%?g1B/Rmq(`ook")6rb)(@
+rb;@HqeQ1IrGDCKrGVRPic4X3qfDRTrcS6ar-/0cs*=Qh!df<BrdFfq!.Xuu#D%JYK7ei1L&Qf-
+LPYqd!K)g7N!G?&NfT6_OHKO*s-!GIrKRGMQ^@Z<s-`nUr1!\Us.0%YrLa(^qP!n_rhK@drh]Xl
+r29Rn!3,pss/Q.$riQ4'!3cC+!O8s0ZT,>"[^NZS\@K/]]=bei^;%Fu_8=+.`Poj;aN2KGbKJ/U
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&ghuVfrro4(@jlQL(s6'FGrTX@Is6KRKrpB[Pp[A"Kqsj@M
+r:BjYq=X^[rV--_rV?Egq"t!equ,s^JcC<$nGe"~>
+JcC<$JcD2=o)ARcrVZNhrqcWir:p<ds7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs6'IGrT41C
+jQ-=#s5O(;ro!h6s5*_1s4dV/rS%;)s4I>&s475#rm^tss3gnos3LblrltSibfp(0!QrO`a8s?$
+rl#&Z_ns:,_#D(t^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMl_mVPU)aUS=HUTV)4T&=o>\
+S!ob5R$a5+QBd`"P`u*0#a(41O,o<]NK*pr!fMqnrJCQ1!/LN-s+UK+r.G$$s+1)us*t#srI+Zm
+s*OZis*=TgrHJ9brcS0]s)\3\r,MaUs)7jRrb_[Or+l:Hrb;7CrFc%?g1B/Rmq(`ook")6rb)(@
+rb;@HqeQ1IrGDCKrGVRPic4X3qfDRTrcS6ar-/0cs*=Qh!df<BrdFfq!.Xuu#D%JYK7ei1L&Qf-
+LPYqd!K)g7N!G?&NfT6_OHKO*s-!GIrKRGMQ^@Z<s-`nUr1!\Us.0%YrLa(^qP!n_rhK@drh]Xl
+r29Rn!3,pss/Q.$riQ4'!3cC+!O8s0ZT,>"[^NZS\@K/]]=bei^;%Fu_8=+.`Poj;aN2KGbKJ/U
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&ghuVfrro4(@jlQL(s6'FGrTX@Is6KRKrpB[Pp[A"Kqsj@M
+r:BjYq=X^[rV--_rV?Egq"t!equ,s^JcC<$nGe"~>
+JcC<$JcD2=nc&IbrVZNhrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs60LGroX7B
+!9F+=s5F%;rS[_5s5*_1!o2PbrS%;)s4I>&s475#rm^tss3gno!mo9>rlu)"bfn8Rb/qcHaN)<?
+`Pod5rk^V1^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^US=HUTV%gISXc4>
+S!ocEQiWP>rfmPLPEZ!/!g/S+rf7,@NK*prs,6o7re^Z2s+gQ-s+UK+r.G$$s+1)us*t#sr-eTm
+s*OZis*=TgrHJ9bs)n6]s)\3\rGhjVrbqaQs)%aOr+l:Hrb;4Br+Gh;m:Gs&j(J*ueRe\krFbt?
+rb;@HqeQ1Irb_LLrGVUQo5X#8pN-(NrcS3`r-/0cs*=Qhs*F`nrI"p"It*!!JUrFPK+*EeKnb>;
+LkpnEMMd>kMueourf7;GOcbfiPEV70Pld8<Qi39QR@9TBS,]#XSc#)YTDkM[U&C_bU\gkdV>d@i
+VuN^qWVrjsWrT7"XTu#4YHY79Z*OA86aX80[^WcV\[f;`]Y(ql^V@S#_SX4/`Pom=aN;TJbKS5V
+cHjncdaQ^qe^i@(f\,!4gYCW@hV[5Ki8N\Tj5]4]jo4EBk5a`El2U&Klhg&JmJcPKn,)VOnauDM
+oDJ7Up&4U^p\FU_q>L0bqu$BhrU0Z9s+14=s*t~>
+JcC<$JcD2=nc&IbrVZNhrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs60LGroX7B
+!9F+=s5F%;rS[_5s5*_1!o2PbrS%;)s4I>&s475#rm^tss3gno!mo9>rlu)"bfn8Rb/qcHaN)<?
+`Pod5rk^V1^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^US=HUTV%gISXc4>
+S!ocEQiWP>rfmPLPEZ!/!g/S+rf7,@NK*prs,6o7re^Z2s+gQ-s+UK+r.G$$s+1)us*t#sr-eTm
+s*OZis*=TgrHJ9bs)n6]s)\3\rGhjVrbqaQs)%aOr+l:Hrb;4Br+Gh;m:Gs&j(J*ueRe\krFbt?
+rb;@HqeQ1Irb_LLrGVUQo5X#8pN-(NrcS3`r-/0cs*=Qhs*F`nrI"p"It*!!JUrFPK+*EeKnb>;
+LkpnEMMd>kMueourf7;GOcbfiPEV70Pld8<Qi39QR@9TBS,]#XSc#)YTDkM[U&C_bU\gkdV>d@i
+VuN^qWVrjsWrT7"XTu#4YHY79Z*OA86aX80[^WcV\[f;`]Y(ql^V@S#_SX4/`Pom=aN;TJbKS5V
+cHjncdaQ^qe^i@(f\,!4gYCW@hV[5Ki8N\Tj5]4]jo4EBk5a`El2U&Klhg&JmJcPKn,)VOnauDM
+oDJ7Up&4U^p\FU_q>L0bqu$BhrU0Z9s+14=s*t~>
+JcC<$JcD2=nc&IbrVZNhrqcZjr:p9cs7ZEas7H?_rUL$[nF6DF!q,ICrp9[Ns6BUJs60LGroX7B
+!9F+=s5F%;rS[_5s5*_1!o2PbrS%;)s4I>&s475#rm^tss3gno!mo9>rlu)"bfn8Rb/qcHaN)<?
+`Pod5rk^V1^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^US=HUTV%gISXc4>
+S!ocEQiWP>rfmPLPEZ!/!g/S+rf7,@NK*prs,6o7re^Z2s+gQ-s+UK+r.G$$s+1)us*t#sr-eTm
+s*OZis*=TgrHJ9bs)n6]s)\3\rGhjVrbqaQs)%aOr+l:Hrb;4Br+Gh;m:Gs&j(J*ueRe\krFbt?
+rb;@HqeQ1Irb_LLrGVUQo5X#8pN-(NrcS3`r-/0cs*=Qhs*F`nrI"p"It*!!JUrFPK+*EeKnb>;
+LkpnEMMd>kMueourf7;GOcbfiPEV70Pld8<Qi39QR@9TBS,]#XSc#)YTDkM[U&C_bU\gkdV>d@i
+VuN^qWVrjsWrT7"XTu#4YHY79Z*OA86aX80[^WcV\[f;`]Y(ql^V@S#_SX4/`Pom=aN;TJbKS5V
+cHjncdaQ^qe^i@(f\,!4gYCW@hV[5Ki8N\Tj5]4]jo4EBk5a`El2U&Klhg&JmJcPKn,)VOnauDM
+oDJ7Up&4U^p\FU_q>L0bqu$BhrU0Z9s+14=s*t~>
+JcC<$JcD2=nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$!U!q,ICrp9[Ns6BUJs60LGroX7B
+s5a1>s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno!mo9>rltPhbl5cib/qcHaN)="
+`Ab`Q_SX.)^V@Lr]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:_^HSXf\K
+!LfGUQiWP>rg!MJ!0dDF!g/S+rf@)>!0-r9s,-l7rJCQ1s+gQ-s+UH*rIb-%rdjuts*t&tr-eTm
+rd4Tis*=TgrHJ9bs)n9^s)\3\r,MaUs)7gQs)%aOr+l:HrFu%?q.K,-oOm<"ph0A6hdu[srFbt?
+rb;@HqeQ1Irb_LLrbqaSp2ThIl>uQ=rH8'^r-/0crd"Khs*OcnrdFfq!.Xuus+(0%rdt6)L&Qf=
+LPUbCM2I4LN/WaVNfT6_OHKO*!gAk5rfmPNQ^@]=s-`nUrL<hWs.0(Zrh'1_qP!n_rhK=crh]Uk
+qksImri,jrs/Q.$rN6+&!3cC+2R0QnZa7$G[C3NQ\@B)[]">Vf]tV7r^qmn)_o0O5`lH0AaihlO
+c-FV\d*^7he'umtf@S[.rn7n;gtgfChr*GOiSrnXjQ,G%k5XTEkl'cGlMp2Jm/HDOmeQ>LnGDbJ
+o)&%Vo_8%VpAOa]q#1$dqY9scr;6H\rdk*#s6fo;~>
+JcC<$JcD2=nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$!U!q,ICrp9[Ns6BUJs60LGroX7B
+s5a1>s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno!mo9>rltPhbl5cib/qcHaN)="
+`Ab`Q_SX.)^V@Lr]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:_^HSXf\K
+!LfGUQiWP>rg!MJ!0dDF!g/S+rf@)>!0-r9s,-l7rJCQ1s+gQ-s+UH*rIb-%rdjuts*t&tr-eTm
+rd4Tis*=TgrHJ9bs)n9^s)\3\r,MaUs)7gQs)%aOr+l:HrFu%?q.K,-oOm<"ph0A6hdu[srFbt?
+rb;@HqeQ1Irb_LLrbqaSp2ThIl>uQ=rH8'^r-/0crd"Khs*OcnrdFfq!.Xuus+(0%rdt6)L&Qf=
+LPUbCM2I4LN/WaVNfT6_OHKO*!gAk5rfmPNQ^@]=s-`nUrL<hWs.0(Zrh'1_qP!n_rhK=crh]Uk
+qksImri,jrs/Q.$rN6+&!3cC+2R0QnZa7$G[C3NQ\@B)[]">Vf]tV7r^qmn)_o0O5`lH0AaihlO
+c-FV\d*^7he'umtf@S[.rn7n;gtgfChr*GOiSrnXjQ,G%k5XTEkl'cGlMp2Jm/HDOmeQ>LnGDbJ
+o)&%Vo_8%VpAOa]q#1$dqY9scr;6H\rdk*#s6fo;~>
+JcC<$JcD2=nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rpp*Zs7$!U!q,ICrp9[Ns6BUJs60LGroX7B
+s5a1>s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno!mo9>rltPhbl5cib/qcHaN)="
+`Ab`Q_SX.)^V@Lr]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-X/`2!W2HPjV50o^U7n9RT:_^HSXf\K
+!LfGUQiWP>rg!MJ!0dDF!g/S+rf@)>!0-r9s,-l7rJCQ1s+gQ-s+UH*rIb-%rdjuts*t&tr-eTm
+rd4Tis*=TgrHJ9bs)n9^s)\3\r,MaUs)7gQs)%aOr+l:HrFu%?q.K,-oOm<"ph0A6hdu[srFbt?
+rb;@HqeQ1Irb_LLrbqaSp2ThIl>uQ=rH8'^r-/0crd"Khs*OcnrdFfq!.Xuus+(0%rdt6)L&Qf=
+LPUbCM2I4LN/WaVNfT6_OHKO*!gAk5rfmPNQ^@]=s-`nUrL<hWs.0(Zrh'1_qP!n_rhK=crh]Uk
+qksImri,jrs/Q.$rN6+&!3cC+2R0QnZa7$G[C3NQ\@B)[]">Vf]tV7r^qmn)_o0O5`lH0AaihlO
+c-FV\d*^7he'umtf@S[.rn7n;gtgfChr*GOiSrnXjQ,G%k5XTEkl'cGlMp2Jm/HDOmeQ>LnGDbJ
+o)&%Vo_8%VpAOa]q#1$dqY9scr;6H\rdk*#s6fo;~>
+JcC<$JcD/<nc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\?4!pJh1rT=.A
+!9F+=s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno#LLfCcHa\Zbl5cdb/sY("inX%
+`Pf[n_Ci[?^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc\U7n9RTDkDdSXc1=
+R[TZDQiWP>rg!MJ!0dDFs,d;CrJq#?NK*prs,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+rd4Tis*=WhrHJ6as)n9^s)\3\rGhgUs)7gQs)%aOqeQ1GrFtn;mUsp\q.KJ7l=Kj)r+Gh=rb;@H
+qeQ1Irb_OMrGV[Spi61OpN,;8r,qs]qfi'brd"Hgs*F`nrI"`rIt.HJ#D%JYK7ei1L&Qf-LPYqd
+!K)g7Mueourf7;GOcbfiPEV71Q2d-MQi<BPRK&`TS,]#XSc,/ZTDtS]U&LebU\^ecV>d@hVuEXo
+WVrjsX8f:"XoGO(YPtd+YlM*/ZNdeE[C3NQ\Gj#m]">Vf]tV7r^qmn)_o0O5`lH0Aai_fMbg+M[
+d*^7he'umtf%8O+g"P07gtgfChu;O<iSrnXjQ,G%k5XTEkl'`IlKdd6m/HDOmeZDNnGDbJo)&%U
+o_.tVpAF[\q#'sdqY0mbr;6H\rdk*#s6]i:~>
+JcC<$JcD/<nc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\?4!pJh1rT=.A
+!9F+=s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno#LLfCcHa\Zbl5cdb/sY("inX%
+`Pf[n_Ci[?^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc\U7n9RTDkDdSXc1=
+R[TZDQiWP>rg!MJ!0dDFs,d;CrJq#?NK*prs,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+rd4Tis*=WhrHJ6as)n9^s)\3\rGhgUs)7gQs)%aOqeQ1GrFtn;mUsp\q.KJ7l=Kj)r+Gh=rb;@H
+qeQ1Irb_OMrGV[Spi61OpN,;8r,qs]qfi'brd"Hgs*F`nrI"`rIt.HJ#D%JYK7ei1L&Qf-LPYqd
+!K)g7Mueourf7;GOcbfiPEV71Q2d-MQi<BPRK&`TS,]#XSc,/ZTDtS]U&LebU\^ecV>d@hVuEXo
+WVrjsX8f:"XoGO(YPtd+YlM*/ZNdeE[C3NQ\Gj#m]">Vf]tV7r^qmn)_o0O5`lH0Aai_fMbg+M[
+d*^7he'umtf%8O+g"P07gtgfChu;O<iSrnXjQ,G%k5XTEkl'`IlKdd6m/HDOmeZDNnGDbJo)&%U
+o_.tVpAF[\q#'sdqY0mbr;6H\rdk*#s6]i:~>
+JcC<$JcD/<nc&IbrVZNhrqcWir:p<ds7ZEas7H?_rUU!Ys7$!U!q,ICrTjUOlK\?4!pJh1rT=.A
+!9F+=s5O(;rS[_5s5*_1!o2PbrS%;)s4I;%!nPoPrm^tss3gno#LLfCcHa\Zbl5cdb/sY("inX%
+`Pf[n_Ci[?^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgUnjc\U7n9RTDkDdSXc1=
+R[TZDQiWP>rg!MJ!0dDFs,d;CrJq#?NK*prs,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+rd4Tis*=WhrHJ6as)n9^s)\3\rGhgUs)7gQs)%aOqeQ1GrFtn;mUsp\q.KJ7l=Kj)r+Gh=rb;@H
+qeQ1Irb_OMrGV[Spi61OpN,;8r,qs]qfi'brd"Hgs*F`nrI"`rIt.HJ#D%JYK7ei1L&Qf-LPYqd
+!K)g7Mueourf7;GOcbfiPEV71Q2d-MQi<BPRK&`TS,]#XSc,/ZTDtS]U&LebU\^ecV>d@hVuEXo
+WVrjsX8f:"XoGO(YPtd+YlM*/ZNdeE[C3NQ\Gj#m]">Vf]tV7r^qmn)_o0O5`lH0Aai_fMbg+M[
+d*^7he'umtf%8O+g"P07gtgfChu;O<iSrnXjQ,G%k5XTEkl'`IlKdd6m/HDOmeZDNnGDbJo)&%U
+o_.tVpAF[\q#'sdqY0mbr;6H\rdk*#s6]i:~>
+JcC<$JcD/<nc&Ibr;?HhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4s6'IGrT=.A
+s5a.=s5O(;rS[_5s5*_1s4mY/rn@D*s4I;%s4.2#rm^tss3gno!RT0lc3qn@bfe2Pb/q`Ga2\+t
+4iG7T_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qqVl-DgUnjc[TqS-PT:VXFS=H(<
+R[TZDQiWP>rg!MJ!0dDFs,m>Crf@)>s,I#:s,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+s*OZis*=WhrHJ9bs)n9^s)\3\r,MaUs)7gQrb_XNqeQ.Fqe=_sl=oa$ph/`$qe,_<rFu7GqeQ1I
+rb_OMrbqdTq/Q=QqfC\;q/uUYqKMp`s*=Ngs*OcnrdFfq!.Xuus+(0%rdtf9KnY89LPL\BM2I1K
+N/WaUNrG(?OHKO*!L&cIQ2d-MQi<BPR/i]SS,]#YSc,/[TDtS]U&LecU\^ecV>[:gVuEXoWVidq
+X8f:"XoGO(YPk[,Z*L\7ZN7G@rjDj:\Gj#i]">Vf]tV7r^qmk(_Sa@3`lH0Aai_fMbg"GYcd:(e
+daZdsf%8O+g"P07h#?+5hV[8LiSsjs!T`AAk5XTEkl'`IlKdd6m/QJPmecJOnGMhKo(qtTo_.tU
+pAF[[q#1$dqY0mbr;6H\rdk*#s6Tc9~>
+JcC<$JcD/<nc&Ibr;?HhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4s6'IGrT=.A
+s5a.=s5O(;rS[_5s5*_1s4mY/rn@D*s4I;%s4.2#rm^tss3gno!RT0lc3qn@bfe2Pb/q`Ga2\+t
+4iG7T_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qqVl-DgUnjc[TqS-PT:VXFS=H(<
+R[TZDQiWP>rg!MJ!0dDFs,m>Crf@)>s,I#:s,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+s*OZis*=WhrHJ9bs)n9^s)\3\r,MaUs)7gQrb_XNqeQ.Fqe=_sl=oa$ph/`$qe,_<rFu7GqeQ1I
+rb_OMrbqdTq/Q=QqfC\;q/uUYqKMp`s*=Ngs*OcnrdFfq!.Xuus+(0%rdtf9KnY89LPL\BM2I1K
+N/WaUNrG(?OHKO*!L&cIQ2d-MQi<BPR/i]SS,]#YSc,/[TDtS]U&LecU\^ecV>[:gVuEXoWVidq
+X8f:"XoGO(YPk[,Z*L\7ZN7G@rjDj:\Gj#i]">Vf]tV7r^qmk(_Sa@3`lH0Aai_fMbg"GYcd:(e
+daZdsf%8O+g"P07h#?+5hV[8LiSsjs!T`AAk5XTEkl'`IlKdd6m/QJPmecJOnGMhKo(qtTo_.tU
+pAF[[q#1$dqY0mbr;6H\rdk*#s6Tc9~>
+JcC<$JcD/<nc&Ibr;?HhrqcWir:p9cs7ZEas7H?_rUU!Ys7$$Vs6fpSrTjUOlK\?4s6'IGrT=.A
+s5a.=s5O(;rS[_5s5*_1s4mY/rn@D*s4I;%s4.2#rm^tss3gno!RT0lc3qn@bfe2Pb/q`Ga2\+t
+4iG7T_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;qqVl-DgUnjc[TqS-PT:VXFS=H(<
+R[TZDQiWP>rg!MJ!0dDFs,m>Crf@)>s,I#:s,6o7rJCQ1s+gN,s+UK+r.G$$s+1)us*t#srI+]n
+s*OZis*=WhrHJ9bs)n9^s)\3\r,MaUs)7gQrb_XNqeQ.Fqe=_sl=oa$ph/`$qe,_<rFu7GqeQ1I
+rb_OMrbqdTq/Q=QqfC\;q/uUYqKMp`s*=Ngs*OcnrdFfq!.Xuus+(0%rdtf9KnY89LPL\BM2I1K
+N/WaUNrG(?OHKO*!L&cIQ2d-MQi<BPR/i]SS,]#YSc,/[TDtS]U&LecU\^ecV>[:gVuEXoWVidq
+X8f:"XoGO(YPk[,Z*L\7ZN7G@rjDj:\Gj#i]">Vf]tV7r^qmk(_Sa@3`lH0Aai_fMbg"GYcd:(e
+daZdsf%8O+g"P07h#?+5hV[8LiSsjs!T`AAk5XTEkl'`IlKdd6m/QJPmecJOnGMhKo(qtTo_.tU
+pAF[[q#1$dqY0mbr;6H\rdk*#s6Tc9~>
+JcC<$JcD,;nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rUU!Ys7$$Vs6fpSrTsRM!:'OIs60LGrT41C
+jQ-:"s5O(;rS[_5rndV0s4mY/rn@D*s4I;%!nPoPrm^ts!7Lkos3LblrltPhbl5cdb/sY(0#tuN
+`Pf[2_SO((^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgrhL+#U7n9RT:_^HSXc4>
+S!ob5rg3_QQN!0LPlHsHOogc-OSt7?NW>(;N;nh9MZ&D2M#W8/LAuu,K`-Q&K)^E#JH(,uIf4]p
+I/eQlHN/9jGl;jdG5l^_FT6F^ErC"WE;skSDZ4MPD#%lECADT5B_#m(CA2H4B_H*5B(os4B`;`E
+CAVfGD#S;KDZ4SRE;FSQEr:"HFR=5IG5-:\GlE!dHN/?lI/SHpIXckHJ-(:RK)UB'KSBD[(5I^%
+M2@+JMi<USNfK0]OHGZgP*;)orfmMMQi<BPR/i]SRf]+NSc,/[TDtS^U&LecU\gkcV>d@gVuEXn
+WVidqX8f:"XoGR(YPk[,Z*L\7Zi@B4[JmT8\%)FJ"hM=Y]Y2&Y^GisE_SX4/`Poj;aN2KHbKS5V
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Tj5]4^jlY^gkNMm/!p]+;rTsONs6fdQrUBdUp@A(O
+qXjFQr:^'_q"Xd_r;-3cqu$?imf%e;JcG'9J,~>
+JcC<$JcD,;nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rUU!Ys7$$Vs6fpSrTsRM!:'OIs60LGrT41C
+jQ-:"s5O(;rS[_5rndV0s4mY/rn@D*s4I;%!nPoPrm^ts!7Lkos3LblrltPhbl5cdb/sY(0#tuN
+`Pf[2_SO((^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgrhL+#U7n9RT:_^HSXc4>
+S!ob5rg3_QQN!0LPlHsHOogc-OSt7?NW>(;N;nh9MZ&D2M#W8/LAuu,K`-Q&K)^E#JH(,uIf4]p
+I/eQlHN/9jGl;jdG5l^_FT6F^ErC"WE;skSDZ4MPD#%lECADT5B_#m(CA2H4B_H*5B(os4B`;`E
+CAVfGD#S;KDZ4SRE;FSQEr:"HFR=5IG5-:\GlE!dHN/?lI/SHpIXckHJ-(:RK)UB'KSBD[(5I^%
+M2@+JMi<USNfK0]OHGZgP*;)orfmMMQi<BPR/i]SRf]+NSc,/[TDtS^U&LecU\gkcV>d@gVuEXn
+WVidqX8f:"XoGR(YPk[,Z*L\7Zi@B4[JmT8\%)FJ"hM=Y]Y2&Y^GisE_SX4/`Poj;aN2KHbKS5V
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Tj5]4^jlY^gkNMm/!p]+;rTsONs6fdQrUBdUp@A(O
+qXjFQr:^'_q"Xd_r;-3cqu$?imf%e;JcG'9J,~>
+JcC<$JcD,;nc&IbrVZNhrqcWir:p<ds7ZB`s7H?_rUU!Ys7$$Vs6fpSrTsRM!:'OIs60LGrT41C
+jQ-:"s5O(;rS[_5rndV0s4mY/rn@D*s4I;%!nPoPrm^ts!7Lkos3LblrltPhbl5cdb/sY(0#tuN
+`Pf[2_SO((^V@Lr]Y(kf\[f5Z[^NTNZa6sBYct=6Xf\\*WiE%sVl-DgrhL+#U7n9RT:_^HSXc4>
+S!ob5rg3_QQN!0LPlHsHOogc-OSt7?NW>(;N;nh9MZ&D2M#W8/LAuu,K`-Q&K)^E#JH(,uIf4]p
+I/eQlHN/9jGl;jdG5l^_FT6F^ErC"WE;skSDZ4MPD#%lECADT5B_#m(CA2H4B_H*5B(os4B`;`E
+CAVfGD#S;KDZ4SRE;FSQEr:"HFR=5IG5-:\GlE!dHN/?lI/SHpIXckHJ-(:RK)UB'KSBD[(5I^%
+M2@+JMi<USNfK0]OHGZgP*;)orfmMMQi<BPR/i]SRf]+NSc,/[TDtS^U&LecU\gkcV>d@gVuEXn
+WVidqX8f:"XoGR(YPk[,Z*L\7Zi@B4[JmT8\%)FJ"hM=Y]Y2&Y^GisE_SX4/`Poj;aN2KHbKS5V
+cHjkbdF-LneCE.%f@\d1g=tE=h;7&Ii8N\Tj5]4^jlY^gkNMm/!p]+;rTsONs6fdQrUBdUp@A(O
+qXjFQr:^'_q"Xd_r;-3cqu$?imf%e;JcG'9J,~>
+JcC<$JcD,;nc&Ibr;?EgrqcWir:p<ds7ZB`s7H?_rUU!Ys7$!U!q,ICrTsRMs6BUJs60LGrT=.A
+s5a.=s5O(;rS[\4s5*_1s4mY/rRq>+f\$/S!nPoPrm^ts!7Lko&CAbLcHa\Zbfe2Pb/q`Ga2\+t
+-,d^<_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;rrVZiroUnjc[rh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8!gJn4rf[;Ds,d5@s,R,=rJ^c7s,-c3reUT0rJ(<*s+L?'rdt0$rIFots*jlo
+s*XinrHeKhs*4Kds*"EbrH/'\s)S$Wrc%mUqelCMrbV=EpM0D9n7q<*pM0M<nS%B(oP"2;rbD:F
+rbVRNr,2LPrc%^Rrc7pXp2oqLmWS5HrcnBer-JBis*Xcns*artrI>-(JqAW-KS5'YL&m'creUZ5
+MuJY9NK4"!!K`HCOo^c2rfmPNQ^@]=!L]DTRf]+NSc55\TDtS^U&UkdU\pqdV>d@gVu<RnWV`^p
+X8]3uXoGR(YPk^*YlM*/Zi@B4[JmW7[gBRT\[oAa]Y(qlrkBks_8=(,`5T^8a2l?Db0.uPc-FV\
+dF$CkeC<%"f@S[.g=k<:h;-rFrnn">ioB([jQ6C'!pAe2rojLLlg+N9s6]jSqsXORrUKXQqXaRU
+oC`"Sr:fs\rV?Bfp\Xjcqu,s^JcC<$lMlA~>
+JcC<$JcD,;nc&Ibr;?EgrqcWir:p<ds7ZB`s7H?_rUU!Ys7$!U!q,ICrTsRMs6BUJs60LGrT=.A
+s5a.=s5O(;rS[\4s5*_1s4mY/rRq>+f\$/S!nPoPrm^ts!7Lko&CAbLcHa\Zbfe2Pb/q`Ga2\+t
+-,d^<_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;rrVZiroUnjc[rh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8!gJn4rf[;Ds,d5@s,R,=rJ^c7s,-c3reUT0rJ(<*s+L?'rdt0$rIFots*jlo
+s*XinrHeKhs*4Kds*"EbrH/'\s)S$Wrc%mUqelCMrbV=EpM0D9n7q<*pM0M<nS%B(oP"2;rbD:F
+rbVRNr,2LPrc%^Rrc7pXp2oqLmWS5HrcnBer-JBis*Xcns*artrI>-(JqAW-KS5'YL&m'creUZ5
+MuJY9NK4"!!K`HCOo^c2rfmPNQ^@]=!L]DTRf]+NSc55\TDtS^U&UkdU\pqdV>d@gVu<RnWV`^p
+X8]3uXoGR(YPk^*YlM*/Zi@B4[JmW7[gBRT\[oAa]Y(qlrkBks_8=(,`5T^8a2l?Db0.uPc-FV\
+dF$CkeC<%"f@S[.g=k<:h;-rFrnn">ioB([jQ6C'!pAe2rojLLlg+N9s6]jSqsXORrUKXQqXaRU
+oC`"Sr:fs\rV?Bfp\Xjcqu,s^JcC<$lMlA~>
+JcC<$JcD,;nc&Ibr;?EgrqcWir:p<ds7ZB`s7H?_rUU!Ys7$!U!q,ICrTsRMs6BUJs60LGrT=.A
+s5a.=s5O(;rS[\4s5*_1s4mY/rRq>+f\$/S!nPoPrm^ts!7Lko&CAbLcHa\Zbfe2Pb/q`Ga2\+t
+-,d^<_SO%&^V7Co]Xtbc\[],W[^EKKZa-j?Yck43XfSS'Wi;rrVZiroUnjc[rh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8!gJn4rf[;Ds,d5@s,R,=rJ^c7s,-c3reUT0rJ(<*s+L?'rdt0$rIFots*jlo
+s*XinrHeKhs*4Kds*"EbrH/'\s)S$Wrc%mUqelCMrbV=EpM0D9n7q<*pM0M<nS%B(oP"2;rbD:F
+rbVRNr,2LPrc%^Rrc7pXp2oqLmWS5HrcnBer-JBis*Xcns*artrI>-(JqAW-KS5'YL&m'creUZ5
+MuJY9NK4"!!K`HCOo^c2rfmPNQ^@]=!L]DTRf]+NSc55\TDtS^U&UkdU\pqdV>d@gVu<RnWV`^p
+X8]3uXoGR(YPk^*YlM*/Zi@B4[JmW7[gBRT\[oAa]Y(qlrkBks_8=(,`5T^8a2l?Db0.uPc-FV\
+dF$CkeC<%"f@S[.g=k<:h;-rFrnn">ioB([jQ6C'!pAe2rojLLlg+N9s6]jSqsXORrUKXQqXaRU
+oC`"Sr:fs\rV?Bfp\Xjcqu,s^JcC<$lMlA~>
+JcC<$JcD,;nG`@arVZNhrqcWir:p9cs7ZEarq-6^rUU!Ys7$$Vs6fpSrTsRMs6BRIs60LGrT=.A
+s5a.=s5O(;r8@V4s5*_1s4mY/rS%;)!8.8%s4.2#rm^ts!7Lko$dd5GcHa\Ybfe2Pao9@)a2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHIl,$*:2-Wi;qpVl$<iU]I6brh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8s-*MIrK@2Cs,d5@s,R,=rJ^c7regZ2s+p]1r.b6*s+L<&s+:9%rIFots*jlo
+s*XinrH\NjG^0.1s*"EbrH/'\s)S$Wrc%mUqJQ:LrG:q<qeFGmqJ,k@gh?V"rG)4FrbVRNqelCO
+rc%aSrc7sYpiQ@To60>Ar-83dqg/6gs*Xcns*jutrdb$"!.t3&#D@ebL5(J=M#N53MMqIm&<2^2
+O-#HcP*2#mPa.N"QC%T<!h#LGrgNtZSXobOs.B=arLs7cs.fIes/#[kqksCkrMf[orN#t"qlTn$
+s0)@)!jT&:rNcR4[C-"B$b*XU\[f;`]=bei^Abki^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f`'S2gYCW@hV[8LiSsjs!T`AAjoX`0kl0fJlKdd7m/QJQmelPQnGVnPo)&%To^hbPpAF[Y
+q#'scqY0mar;6H[rdk*#s6BW7~>
+JcC<$JcD,;nG`@arVZNhrqcWir:p9cs7ZEarq-6^rUU!Ys7$$Vs6fpSrTsRMs6BRIs60LGrT=.A
+s5a.=s5O(;r8@V4s5*_1s4mY/rS%;)!8.8%s4.2#rm^ts!7Lko$dd5GcHa\Ybfe2Pao9@)a2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHIl,$*:2-Wi;qpVl$<iU]I6brh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8s-*MIrK@2Cs,d5@s,R,=rJ^c7regZ2s+p]1r.b6*s+L<&s+:9%rIFots*jlo
+s*XinrH\NjG^0.1s*"EbrH/'\s)S$Wrc%mUqJQ:LrG:q<qeFGmqJ,k@gh?V"rG)4FrbVRNqelCO
+rc%aSrc7sYpiQ@To60>Ar-83dqg/6gs*Xcns*jutrdb$"!.t3&#D@ebL5(J=M#N53MMqIm&<2^2
+O-#HcP*2#mPa.N"QC%T<!h#LGrgNtZSXobOs.B=arLs7cs.fIes/#[kqksCkrMf[orN#t"qlTn$
+s0)@)!jT&:rNcR4[C-"B$b*XU\[f;`]=bei^Abki^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f`'S2gYCW@hV[8LiSsjs!T`AAjoX`0kl0fJlKdd7m/QJQmelPQnGVnPo)&%To^hbPpAF[Y
+q#'scqY0mar;6H[rdk*#s6BW7~>
+JcC<$JcD,;nG`@arVZNhrqcWir:p9cs7ZEarq-6^rUU!Ys7$$Vs6fpSrTsRMs6BRIs60LGrT=.A
+s5a.=s5O(;r8@V4s5*_1s4mY/rS%;)!8.8%s4.2#rm^ts!7Lko$dd5GcHa\Ybfe2Pao9@)a2Z*;
+`5BI/_8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHIl,$*:2-Wi;qpVl$<iU]I6brh0@cTDkD_SXf\K
+!h,OFrg3bRQBqN8s-*MIrK@2Cs,d5@s,R,=rJ^c7regZ2s+p]1r.b6*s+L<&s+:9%rIFots*jlo
+s*XinrH\NjG^0.1s*"EbrH/'\s)S$Wrc%mUqJQ:LrG:q<qeFGmqJ,k@gh?V"rG)4FrbVRNqelCO
+rc%aSrc7sYpiQ@To60>Ar-83dqg/6gs*Xcns*jutrdb$"!.t3&#D@ebL5(J=M#N53MMqIm&<2^2
+O-#HcP*2#mPa.N"QC%T<!h#LGrgNtZSXobOs.B=arLs7cs.fIes/#[kqksCkrMf[orN#t"qlTn$
+s0)@)!jT&:rNcR4[C-"B$b*XU\[f;`]=bei^Abki^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f`'S2gYCW@hV[8LiSsjs!T`AAjoX`0kl0fJlKdd7m/QJQmelPQnGVnPo)&%To^hbPpAF[Y
+q#'scqY0mar;6H[rdk*#s6BW7~>
+JcC<$JcD):nc&Ibr;?EgrqcWir:p9cs7ZEas7H<^rUU!Ys7$!Us6fpSrp9[Ns6BRIs60LGr9"%@
+s5a.=s5O%:rS[_5s5*_1s4mY/rS%;)!8.8%!nPoPrmV"udaJ-B!RT0lc2l26rl[IIaiMQD`l5p8
+_o'@._8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMlbnVl$;dUna]ZTqS-PTDkD_SXf\K
+s-`qUrg<_P!1*SK!gJn4rK@2C!0I/?s,R,=rJ^`6s,-c3s+pZ0rJ(?+s+L<&s+:9%rIFots*jop
+s*XinrHeKhs*4Kds*"EbrH/$[s)S$Wrc%jTqJQ7KqeY)(m;29-qJ,h?k\0j-rG).DrbVRNqelCO
+s)@jTrc7sYq/lOWqf^tCq0;g_qg/6grd=Zms*jutrdb$"s+:6&!JH1+L)#K"Ll$tGMMmFPNK0$[
+O-#KdP*2#nrfm_SQ^=),R@0NCRf]+NSc55\T)bP_U&UkeU\pqfV>d@hVu<RnWVNRnX8]3tXo>L&
+YPk^*Z2_-.ZN@MA[JmW7[fEr;\H]XW]=bei^Abl,^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f\,!4gYCW@hV[8LiSieVj5f=`k2tjikl0fJlKdd7m/QJQmelPRnGVnQo)/+Uo^_\OpA=UX
+q#'scqY'g`r;6H[rdk*#s69Q6~>
+JcC<$JcD):nc&Ibr;?EgrqcWir:p9cs7ZEas7H<^rUU!Ys7$!Us6fpSrp9[Ns6BRIs60LGr9"%@
+s5a.=s5O%:rS[_5s5*_1s4mY/rS%;)!8.8%!nPoPrmV"udaJ-B!RT0lc2l26rl[IIaiMQD`l5p8
+_o'@._8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMlbnVl$;dUna]ZTqS-PTDkD_SXf\K
+s-`qUrg<_P!1*SK!gJn4rK@2C!0I/?s,R,=rJ^`6s,-c3s+pZ0rJ(?+s+L<&s+:9%rIFots*jop
+s*XinrHeKhs*4Kds*"EbrH/$[s)S$Wrc%jTqJQ7KqeY)(m;29-qJ,h?k\0j-rG).DrbVRNqelCO
+s)@jTrc7sYq/lOWqf^tCq0;g_qg/6grd=Zms*jutrdb$"s+:6&!JH1+L)#K"Ll$tGMMmFPNK0$[
+O-#KdP*2#nrfm_SQ^=),R@0NCRf]+NSc55\T)bP_U&UkeU\pqfV>d@hVu<RnWVNRnX8]3tXo>L&
+YPk^*Z2_-.ZN@MA[JmW7[fEr;\H]XW]=bei^Abl,^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f\,!4gYCW@hV[8LiSieVj5f=`k2tjikl0fJlKdd7m/QJQmelPRnGVnQo)/+Uo^_\OpA=UX
+q#'scqY'g`r;6H[rdk*#s69Q6~>
+JcC<$JcD):nc&Ibr;?EgrqcWir:p9cs7ZEas7H<^rUU!Ys7$!Us6fpSrp9[Ns6BRIs60LGr9"%@
+s5a.=s5O%:rS[_5s5*_1s4mY/rS%;)!8.8%!nPoPrmV"udaJ-B!RT0lc2l26rl[IIaiMQD`l5p8
+_o'@._8*h#^:h1l]=PP`\@8oT[C!9HZE^X<YHG"0XK/A$WMlbnVl$;dUna]ZTqS-PTDkD_SXf\K
+s-`qUrg<_P!1*SK!gJn4rK@2C!0I/?s,R,=rJ^`6s,-c3s+pZ0rJ(?+s+L<&s+:9%rIFots*jop
+s*XinrHeKhs*4Kds*"EbrH/$[s)S$Wrc%jTqJQ7KqeY)(m;29-qJ,h?k\0j-rG).DrbVRNqelCO
+s)@jTrc7sYq/lOWqf^tCq0;g_qg/6grd=Zms*jutrdb$"s+:6&!JH1+L)#K"Ll$tGMMmFPNK0$[
+O-#KdP*2#nrfm_SQ^=),R@0NCRf]+NSc55\T)bP_U&UkeU\pqfV>d@hVu<RnWVNRnX8]3tXo>L&
+YPk^*Z2_-.ZN@MA[JmW7[fEr;\H]XW]=bei^Abl,^qmn)_o0O5`lH0Aai_fMbg"GYcd:(edaQ^q
+e^i@(f\,!4gYCW@hV[8LiSieVj5f=`k2tjikl0fJlKdd7m/QJQmelPRnGVnQo)/+Uo^_\OpA=UX
+q#'scqY'g`r;6H[rdk*#s69Q6~>
+JcC<$JcD):nG`@arVZNhrVHNhr:p<drq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BRIs60LGr9"%@
+s5a.=ro3t:rS[_5s5*_1s4mY/rS%;)s4I>&!nPoPrmVM.daHOjd*U+acHXVXbKJ&Mrl@:D`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMl_mVPU,bUnaZYTqS-OT:VXFSXf\K
+s-`qUrg<_Ps-EYLs-3PIrf[;Ds,d2?s,R,=r/CZ6s,-c3reUT0rJ(?+s+L<&s+:9%rIFots*jop
+s*Xinrd+Tis*4Hcs*"EbrH/$[s)S$Wrc%gSq/6(Hhe_[spMBG:qJ,)*r+c%CrG;IMqelFPrc%aS
+rc8!ZqK2[Yr-%LPms+\Spj2pdrd=Wls*jutrI=s#JqEuSs+CB+re:H/M#N53MMqIm!KE-=Nrb?)
+rfR;GPl?pKQC%T<!L]DURf]+NSc55\T)bP_U&UkeU]%"gV>d@iVuEXnWVWXoX8T-rXo>L'YPbX(
+Z2_-.Zi@B4[JdN8\%&sI\H0:Rrk&9F^AbkN^qmn)_o2Pn*6-%?aN;TJbKS5VcHjkbdF-Lne^i@(
+f\,!4gYDea&)Q4%i8N\Uj5f:_k2tjikl0iHl2^/Km/QJQmeuVRnG_tSo)/+Vo^_\OpA4OVq#'sb
+qY'g`r;6H[rdk*#s60K5~>
+JcC<$JcD):nG`@arVZNhrVHNhr:p<drq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BRIs60LGr9"%@
+s5a.=ro3t:rS[_5s5*_1s4mY/rS%;)s4I>&!nPoPrmVM.daHOjd*U+acHXVXbKJ&Mrl@:D`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMl_mVPU,bUnaZYTqS-OT:VXFSXf\K
+s-`qUrg<_Ps-EYLs-3PIrf[;Ds,d2?s,R,=r/CZ6s,-c3reUT0rJ(?+s+L<&s+:9%rIFots*jop
+s*Xinrd+Tis*4Hcs*"EbrH/$[s)S$Wrc%gSq/6(Hhe_[spMBG:qJ,)*r+c%CrG;IMqelFPrc%aS
+rc8!ZqK2[Yr-%LPms+\Spj2pdrd=Wls*jutrI=s#JqEuSs+CB+re:H/M#N53MMqIm!KE-=Nrb?)
+rfR;GPl?pKQC%T<!L]DURf]+NSc55\T)bP_U&UkeU]%"gV>d@iVuEXnWVWXoX8T-rXo>L'YPbX(
+Z2_-.Zi@B4[JdN8\%&sI\H0:Rrk&9F^AbkN^qmn)_o2Pn*6-%?aN;TJbKS5VcHjkbdF-Lne^i@(
+f\,!4gYDea&)Q4%i8N\Uj5f:_k2tjikl0iHl2^/Km/QJQmeuVRnG_tSo)/+Vo^_\OpA4OVq#'sb
+qY'g`r;6H[rdk*#s60K5~>
+JcC<$JcD):nG`@arVZNhrVHNhr:p<drq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BRIs60LGr9"%@
+s5a.=ro3t:rS[_5s5*_1s4mY/rS%;)s4I>&!nPoPrmVM.daHOjd*U+acHXVXbKJ&Mrl@:D`l5p8
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMl_mVPU,bUnaZYTqS-OT:VXFSXf\K
+s-`qUrg<_Ps-EYLs-3PIrf[;Ds,d2?s,R,=r/CZ6s,-c3reUT0rJ(?+s+L<&s+:9%rIFots*jop
+s*Xinrd+Tis*4Hcs*"EbrH/$[s)S$Wrc%gSq/6(Hhe_[spMBG:qJ,)*r+c%CrG;IMqelFPrc%aS
+rc8!ZqK2[Yr-%LPms+\Spj2pdrd=Wls*jutrI=s#JqEuSs+CB+re:H/M#N53MMqIm!KE-=Nrb?)
+rfR;GPl?pKQC%T<!L]DURf]+NSc55\T)bP_U&UkeU]%"gV>d@iVuEXnWVWXoX8T-rXo>L'YPbX(
+Z2_-.Zi@B4[JdN8\%&sI\H0:Rrk&9F^AbkN^qmn)_o2Pn*6-%?aN;TJbKS5VcHjkbdF-Lne^i@(
+f\,!4gYDea&)Q4%i8N\Uj5f:_k2tjikl0iHl2^/Km/QJQmeuVRnG_tSo)/+Vo^_\OpA4OVq#'sb
+qY'g`r;6H[rdk*#s60K5~>
+JcC<$JcD&9nc&FarVZNhrqcWiqtU3crq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BOHs60LGrT=+@
+s5a.=ro3t:rS[_5rndV0s4dV/rS%;)!8.8%!nPoPrmUttdf.Vpd*M^:!R8jfb;7;_aN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTN['R*EZ*:I9Y-"h-X/`2!WMl_mVPX9f#G\#fTqS-PTDkD`SXc5L
+Rf]%HRJrTRQN3?MQ2d*KPPp[EOT:L@O8k7?NW"h9MuS\4M>rD3L])u-L&Zi(KE$Q'Jc:3"J,aur
+IK+]pHi89jH2i-fGQ2jdFo6@]F8g4WEW0qUDt\)-D<u07D>J)?C\DN<C%uH;C]/)KD>S5MDuO_R
+EW1"XF8L(XFo?LVGP6:MH1ZF]HiAEiIK+crJ,OotJH1<#K)pXZreCH.!/UW2!K)g7N#I\9O,oBa
+OcklkPa%GuQC!r*R$jD3S"#q<Sc52^T:hkVU&UkeU]%"gV>mFjVuEXoWV`^oX8T-rXo>L%YPbX(
+Z2_-.Zi@E4[JdN8\%&sI\H9@S]DfGD]tXK\1VgiD_Sa=1`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"
+f@S[.g=k<:h;-rFi8ESRioB([jo4BCkNMp0s69UMrTsROs6fjSs7$$XqXXUVr:KRQq=a[Zo_A@[
+qtg$`qu$<hmJ_\:JcFp5J,~>
+JcC<$JcD&9nc&FarVZNhrqcWiqtU3crq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BOHs60LGrT=+@
+s5a.=ro3t:rS[_5rndV0s4dV/rS%;)!8.8%!nPoPrmUttdf.Vpd*M^:!R8jfb;7;_aN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTN['R*EZ*:I9Y-"h-X/`2!WMl_mVPX9f#G\#fTqS-PTDkD`SXc5L
+Rf]%HRJrTRQN3?MQ2d*KPPp[EOT:L@O8k7?NW"h9MuS\4M>rD3L])u-L&Zi(KE$Q'Jc:3"J,aur
+IK+]pHi89jH2i-fGQ2jdFo6@]F8g4WEW0qUDt\)-D<u07D>J)?C\DN<C%uH;C]/)KD>S5MDuO_R
+EW1"XF8L(XFo?LVGP6:MH1ZF]HiAEiIK+crJ,OotJH1<#K)pXZreCH.!/UW2!K)g7N#I\9O,oBa
+OcklkPa%GuQC!r*R$jD3S"#q<Sc52^T:hkVU&UkeU]%"gV>mFjVuEXoWV`^oX8T-rXo>L%YPbX(
+Z2_-.Zi@E4[JdN8\%&sI\H9@S]DfGD]tXK\1VgiD_Sa=1`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"
+f@S[.g=k<:h;-rFi8ESRioB([jo4BCkNMp0s69UMrTsROs6fjSs7$$XqXXUVr:KRQq=a[Zo_A@[
+qtg$`qu$<hmJ_\:JcFp5J,~>
+JcC<$JcD&9nc&FarVZNhrqcWiqtU3crq?<`s7H<^rUU!Ys7$!Us6fpSrTsRMs6BOHs60LGrT=+@
+s5a.=ro3t:rS[_5rndV0s4dV/rS%;)!8.8%!nPoPrmUttdf.Vpd*M^:!R8jfb;7;_aN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTN['R*EZ*:I9Y-"h-X/`2!WMl_mVPX9f#G\#fTqS-PTDkD`SXc5L
+Rf]%HRJrTRQN3?MQ2d*KPPp[EOT:L@O8k7?NW"h9MuS\4M>rD3L])u-L&Zi(KE$Q'Jc:3"J,aur
+IK+]pHi89jH2i-fGQ2jdFo6@]F8g4WEW0qUDt\)-D<u07D>J)?C\DN<C%uH;C]/)KD>S5MDuO_R
+EW1"XF8L(XFo?LVGP6:MH1ZF]HiAEiIK+crJ,OotJH1<#K)pXZreCH.!/UW2!K)g7N#I\9O,oBa
+OcklkPa%GuQC!r*R$jD3S"#q<Sc52^T:hkVU&UkeU]%"gV>mFjVuEXoWV`^oX8T-rXo>L%YPbX(
+Z2_-.Zi@E4[JdN8\%&sI\H9@S]DfGD]tXK\1VgiD_Sa=1`Poj;aN2KGbKJ,ScHab_dF$CkeC<%"
+f@S[.g=k<:h;-rFi8ESRioB([jo4BCkNMp0s69UMrTsROs6fjSs7$$XqXXUVr:KRQq=a[Zo_A@[
+qtg$`qu$<hmJ_\:JcFp5J,~>
+JcC<$JcD&9nG`@arVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!Us6fpSr9XILs6BRIs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rm^ts'%51Td*U+acHXVXbKJ&MaN2EArl$5&
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMofo!N)^mU]I6brh0CdT:c+S!hGjO
+rgWqV!1EeQ!gf4=rK[DIs-*DEs,m>CrK$u=s,Hu9s,6l6rJCQ1s+gQ-s+UK+rIb-%s+1-!s*t&t
+rI+]n!.4Zjs*=Whr-/0as)n6]s)\0[qJlIQr,98dqJH+Gn8%]3o5";@rGDFLrbqdTqf2UUs)\'Z
+rH8*_pilU[om,_Hr-SBiqgJHms*suts+13%rdt9*Kn]M\'o.U$M2@+IMi<USNK0'\OHGZgP*;.0
+Pl[2;rg3_SRf8cWS=TYNs.9:arh9@ds.fRhs/#amr29Rnri,dpri?"!qQ9_!ric1&riuL/r3QF1
+s0_g6s0i!<rji'?!5&6Cs1LS0^V@S"_8=(,`5KX6`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(f\,!4
+gYCW@hV[5Ki8N\Uj5f=`k2tjjkl0fJlKdd8m/QGQmelPRnGi%Uo)81Xo^qhPpA+ISq"smaqXsa_
+r;-BYrdk*#s6'E4~>
+JcC<$JcD&9nG`@arVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!Us6fpSr9XILs6BRIs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rm^ts'%51Td*U+acHXVXbKJ&MaN2EArl$5&
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMofo!N)^mU]I6brh0CdT:c+S!hGjO
+rgWqV!1EeQ!gf4=rK[DIs-*DEs,m>CrK$u=s,Hu9s,6l6rJCQ1s+gQ-s+UK+rIb-%s+1-!s*t&t
+rI+]n!.4Zjs*=Whr-/0as)n6]s)\0[qJlIQr,98dqJH+Gn8%]3o5";@rGDFLrbqdTqf2UUs)\'Z
+rH8*_pilU[om,_Hr-SBiqgJHms*suts+13%rdt9*Kn]M\'o.U$M2@+IMi<USNK0'\OHGZgP*;.0
+Pl[2;rg3_SRf8cWS=TYNs.9:arh9@ds.fRhs/#amr29Rnri,dpri?"!qQ9_!ric1&riuL/r3QF1
+s0_g6s0i!<rji'?!5&6Cs1LS0^V@S"_8=(,`5KX6`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(f\,!4
+gYCW@hV[5Ki8N\Uj5f=`k2tjjkl0fJlKdd8m/QGQmelPRnGi%Uo)81Xo^qhPpA+ISq"smaqXsa_
+r;-BYrdk*#s6'E4~>
+JcC<$JcD&9nG`@arVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!Us6fpSr9XILs6BRIs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rm^ts'%51Td*U+acHXVXbKJ&MaN2EArl$5&
+_ns:,^q[Xu]tD"i]",A]\$i`Q['R*EZ*:I9Y-"h-XK/A$WMofo!N)^mU]I6brh0CdT:c+S!hGjO
+rgWqV!1EeQ!gf4=rK[DIs-*DEs,m>CrK$u=s,Hu9s,6l6rJCQ1s+gQ-s+UK+rIb-%s+1-!s*t&t
+rI+]n!.4Zjs*=Whr-/0as)n6]s)\0[qJlIQr,98dqJH+Gn8%]3o5";@rGDFLrbqdTqf2UUs)\'Z
+rH8*_pilU[om,_Hr-SBiqgJHms*suts+13%rdt9*Kn]M\'o.U$M2@+IMi<USNK0'\OHGZgP*;.0
+Pl[2;rg3_SRf8cWS=TYNs.9:arh9@ds.fRhs/#amr29Rnri,dpri?"!qQ9_!ric1&riuL/r3QF1
+s0_g6s0i!<rji'?!5&6Cs1LS0^V@S"_8=(,`5KX6`lH0Aai_fMbg"GYcd:(edaQ^qe^i@(f\,!4
+gYCW@hV[5Ki8N\Uj5f=`k2tjjkl0fJlKdd8m/QGQmelPRnGi%Uo)81Xo^qhPpA+ISq"smaqXsa_
+r;-BYrdk*#s6'E4~>
+JcC<$JcD#8nc&FarVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!UrpKgRrTsRMrp'IHs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rmUttdf.Vpd*M^:-I'cXbK@rKaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBricR0Y-"h-X8]+'WMl_mVP^3hU]I6brh0CdT:c+S!hGjO
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=s,Hu9repf6rJCQ1s+gQ-s+UK+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=WhrHJ6as)n6]rcA'Zq/Q=Oq/>S:j_s[,qec1GiG8@-rGDCKrbqdTr,M^Vrc@sY
+rcS3`qKMj^qg%7Kq0W!dqL/?ls*srss+13%re(6(!/:E,s+^T1reUZ5MuJY9NK4"!!K`HCOqj1F
+Q'IZ$Q^F/.R[T_8S=Q4BStDXJrh9@d!2KLgs.o^mr29Rns/Gmqri?%"qQ9_!rNH(%riuI.r3QF1
+rjD^5s0i!<rOE!@]=\'T'YV5p^V@S"_8=(,`5KX6`lH0AaiaV+*R)dRcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&Ii8N\pis+T+k2tjikl0fJlKdd8m/QGQmeuVRnGi%Uo)A7Yo_.tRpA"CQq"sm`qXsa_
+r;-BZrdk*#s5j92~>
+JcC<$JcD#8nc&FarVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!UrpKgRrTsRMrp'IHs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rmUttdf.Vpd*M^:-I'cXbK@rKaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBricR0Y-"h-X8]+'WMl_mVP^3hU]I6brh0CdT:c+S!hGjO
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=s,Hu9repf6rJCQ1s+gQ-s+UK+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=WhrHJ6as)n6]rcA'Zq/Q=Oq/>S:j_s[,qec1GiG8@-rGDCKrbqdTr,M^Vrc@sY
+rcS3`qKMj^qg%7Kq0W!dqL/?ls*srss+13%re(6(!/:E,s+^T1reUZ5MuJY9NK4"!!K`HCOqj1F
+Q'IZ$Q^F/.R[T_8S=Q4BStDXJrh9@d!2KLgs.o^mr29Rns/Gmqri?%"qQ9_!rNH(%riuI.r3QF1
+rjD^5s0i!<rOE!@]=\'T'YV5p^V@S"_8=(,`5KX6`lH0AaiaV+*R)dRcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&Ii8N\pis+T+k2tjikl0fJlKdd8m/QGQmeuVRnGi%Uo)A7Yo_.tRpA"CQq"sm`qXsa_
+r;-BZrdk*#s5j92~>
+JcC<$JcD#8nc&FarVZKgrqcWir:p9cs7ZB`s7H?_r:9mXs7$!UrpKgRrTsRMrp'IHs60IFrT=+@
+s5a+<s5O(;r8@V4s5*_1s4dV/rS%;)!8.;&s4.2#rmUttdf.Vpd*M^:-I'cXbK@rKaN2EA`Pod5
+_SX.)^V@Lr]Y(kf\[f5Z[^NTNZa6sBricR0Y-"h-X8]+'WMl_mVP^3hU]I6brh0CdT:c+S!hGjO
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=s,Hu9repf6rJCQ1s+gQ-s+UK+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=WhrHJ6as)n6]rcA'Zq/Q=Oq/>S:j_s[,qec1GiG8@-rGDCKrbqdTr,M^Vrc@sY
+rcS3`qKMj^qg%7Kq0W!dqL/?ls*srss+13%re(6(!/:E,s+^T1reUZ5MuJY9NK4"!!K`HCOqj1F
+Q'IZ$Q^F/.R[T_8S=Q4BStDXJrh9@d!2KLgs.o^mr29Rns/Gmqri?%"qQ9_!rNH(%riuI.r3QF1
+rjD^5s0i!<rOE!@]=\'T'YV5p^V@S"_8=(,`5KX6`lH0AaiaV+*R)dRcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&Ii8N\pis+T+k2tjikl0fJlKdd8m/QGQmeuVRnGi%Uo)A7Yo_.tRpA"CQq"sm`qXsa_
+r;-BZrdk*#s5j92~>
+JcC<$JcD#8nG`@ar;?EgrVHNhr:p9cs7ZB`s7H<^rUU!Yrp]mTs6fpSr9XILs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4mY/rn@D*!8.;&!nPoPrmUttdf.W<d*L"_c-4DTbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbc\[]-J[L'@KZa6sBYct=6riHR0X/`2!W2QVlVP^3hU]I6brh9@b!2'7^s.01[
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=rf-l8s,6o7rJCQ1s+gQ-s+UK+rIY0'JV!cMs*t&t
+rI+]n!.4Zjrd"NgrHJ6as)n3\rcA'ZpMotIn8I9)q/>nCqJH%En8%l:r,)7IrbqdTqf2UUs)\'Z
+rcS3`qfi!`r-@jZmsFhWpO3!hrdXlsrdk*$re(6(s+UH,#D\+kM2@+IMuJY9NK4"!$BUC5P*;,p
+Q'IZ%rg3_SRf8cWS=TYN#G7Z^TqS3TU]$tiV5C-gVuN^qWVidqX8f9tXo5F%YPGF%Z2M!*Zi@E3
+[JdQ6\,Wu:\c95@]DfJC]`>eG^F[1:_8=(,`5KX6`lH0Aai_cLbKS5VcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&gi!&*!j5]4^roO7Ekl0iHl2^/Lm/QJQmf)\SnGi%Vo)A7Zo_8%SpA+IPq"jg`qXj[^
+r;-BYrdk*#s5a31~>
+JcC<$JcD#8nG`@ar;?EgrVHNhr:p9cs7ZB`s7H<^rUU!Yrp]mTs6fpSr9XILs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4mY/rn@D*!8.;&!nPoPrmUttdf.W<d*L"_c-4DTbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbc\[]-J[L'@KZa6sBYct=6riHR0X/`2!W2QVlVP^3hU]I6brh9@b!2'7^s.01[
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=rf-l8s,6o7rJCQ1s+gQ-s+UK+rIY0'JV!cMs*t&t
+rI+]n!.4Zjrd"NgrHJ6as)n3\rcA'ZpMotIn8I9)q/>nCqJH%En8%l:r,)7IrbqdTqf2UUs)\'Z
+rcS3`qfi!`r-@jZmsFhWpO3!hrdXlsrdk*$re(6(s+UH,#D\+kM2@+IMuJY9NK4"!$BUC5P*;,p
+Q'IZ%rg3_SRf8cWS=TYN#G7Z^TqS3TU]$tiV5C-gVuN^qWVidqX8f9tXo5F%YPGF%Z2M!*Zi@E3
+[JdQ6\,Wu:\c95@]DfJC]`>eG^F[1:_8=(,`5KX6`lH0Aai_cLbKS5VcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&gi!&*!j5]4^roO7Ekl0iHl2^/Lm/QJQmf)\SnGi%Vo)A7Zo_8%SpA+IPq"jg`qXj[^
+r;-BYrdk*#s5a31~>
+JcC<$JcD#8nG`@ar;?EgrVHNhr:p9cs7ZB`s7H<^rUU!Yrp]mTs6fpSr9XILs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4mY/rn@D*!8.;&!nPoPrmUttdf.W<d*L"_c-4DTbK@rJaN)<>`Pf[2
+_SO%&^V7Co]Xtbc\[]-J[L'@KZa6sBYct=6riHR0X/`2!W2QVlVP^3hU]I6brh9@b!2'7^s.01[
+rgWqVs-`kRs-NbOrK[DIs-*DEs,m>CrK$u=rf-l8s,6o7rJCQ1s+gQ-s+UK+rIY0'JV!cMs*t&t
+rI+]n!.4Zjrd"NgrHJ6as)n3\rcA'ZpMotIn8I9)q/>nCqJH%En8%l:r,)7IrbqdTqf2UUs)\'Z
+rcS3`qfi!`r-@jZmsFhWpO3!hrdXlsrdk*$re(6(s+UH,#D\+kM2@+IMuJY9NK4"!$BUC5P*;,p
+Q'IZ%rg3_SRf8cWS=TYN#G7Z^TqS3TU]$tiV5C-gVuN^qWVidqX8f9tXo5F%YPGF%Z2M!*Zi@E3
+[JdQ6\,Wu:\c95@]DfJC]`>eG^F[1:_8=(,`5KX6`lH0Aai_cLbKS5VcHjkbdF-LneCE.%f@\d1
+g=tE=h;7&gi!&*!j5]4^roO7Ekl0iHl2^/Lm/QJQmf)\SnGi%Vo)A7Zo_8%SpA+IPq"jg`qXj[^
+r;-BYrdk*#s5a31~>
+JcC<$JcCu7nG`@ar;?EgrqcWiqtU0bs7ZB`s7H<^rUU!Yrp]mTs6fmRrTsOLs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4dV/rRq>+f\$2T!S5g#e-=CMda?Ihci23:c-4ASb/q`Ga2Z*;`5KR1
+_SO%&^V7Co]Xtbc\[],W[^EKKZa-k8YR7S:Xf\\*X/`2!W;`[rVPU-gU]I6brh9@bs.B:^!hGjO
+rL3kWR@4#@s-NbOrK[DIs-*DEs,m>Cr/^l<s,Hu9s,6o7rJCQ1s+gQ-s+LH+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=TgrHJ6arcS*[rH%pX_K#Bjqeu.FphfJ9qJH"FrbqdTqf2UUrcA!ZrcS3`qfi$a
+rH\-`pj;OYn9t4`rdXfqs+13%rIb-'s+UH,s+^T1reV2DMi3OQNK0$[O-#KdP*2#nrfn%\Q^F/.
+R@9V7S=Q4BStDXJrh0@eU]$tiV5C-hVuN^qWVrjrX8f9uXo5F%YPGF%Z2M!)Zi7?2[J[K5\,Wu:
+\c95@]D]AD]tV5[^B)-drk\lW`5KX6`lJ)"(!4VAbKS5VcHjkbdF-LneCE.%f@\dUg)/T"h;-rF
+i8ESRj5]4]jlY^gkNM0plK[^7m/QJQmf)\SnGi%Vo)A7[o_8%UpA+IOq"jg_qXj[]r;-BYrdk*#
+s5X-0~>
+JcC<$JcCu7nG`@ar;?EgrqcWiqtU0bs7ZB`s7H<^rUU!Yrp]mTs6fmRrTsOLs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4dV/rRq>+f\$2T!S5g#e-=CMda?Ihci23:c-4ASb/q`Ga2Z*;`5KR1
+_SO%&^V7Co]Xtbc\[],W[^EKKZa-k8YR7S:Xf\\*X/`2!W;`[rVPU-gU]I6brh9@bs.B:^!hGjO
+rL3kWR@4#@s-NbOrK[DIs-*DEs,m>Cr/^l<s,Hu9s,6o7rJCQ1s+gQ-s+LH+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=TgrHJ6arcS*[rH%pX_K#Bjqeu.FphfJ9qJH"FrbqdTqf2UUrcA!ZrcS3`qfi$a
+rH\-`pj;OYn9t4`rdXfqs+13%rIb-'s+UH,s+^T1reV2DMi3OQNK0$[O-#KdP*2#nrfn%\Q^F/.
+R@9V7S=Q4BStDXJrh0@eU]$tiV5C-hVuN^qWVrjrX8f9uXo5F%YPGF%Z2M!)Zi7?2[J[K5\,Wu:
+\c95@]D]AD]tV5[^B)-drk\lW`5KX6`lJ)"(!4VAbKS5VcHjkbdF-LneCE.%f@\dUg)/T"h;-rF
+i8ESRj5]4]jlY^gkNM0plK[^7m/QJQmf)\SnGi%Vo)A7[o_8%UpA+IOq"jg_qXj[]r;-BYrdk*#
+s5X-0~>
+JcC<$JcCu7nG`@ar;?EgrqcWiqtU0bs7ZB`s7H<^rUU!Yrp]mTs6fmRrTsOLs6BOHs60IFr9"%@
+roF%<ro3t:rS[_5s5*_1s4dV/rRq>+f\$2T!S5g#e-=CMda?Ihci23:c-4ASb/q`Ga2Z*;`5KR1
+_SO%&^V7Co]Xtbc\[],W[^EKKZa-k8YR7S:Xf\\*X/`2!W;`[rVPU-gU]I6brh9@bs.B:^!hGjO
+rL3kWR@4#@s-NbOrK[DIs-*DEs,m>Cr/^l<s,Hu9s,6o7rJCQ1s+gQ-s+LH+rIb-%s+1-!!e5ZJ
+rI+]ns*O]js*=TgrHJ6arcS*[rH%pX_K#Bjqeu.FphfJ9qJH"FrbqdTqf2UUrcA!ZrcS3`qfi$a
+rH\-`pj;OYn9t4`rdXfqs+13%rIb-'s+UH,s+^T1reV2DMi3OQNK0$[O-#KdP*2#nrfn%\Q^F/.
+R@9V7S=Q4BStDXJrh0@eU]$tiV5C-hVuN^qWVrjrX8f9uXo5F%YPGF%Z2M!)Zi7?2[J[K5\,Wu:
+\c95@]D]AD]tV5[^B)-drk\lW`5KX6`lJ)"(!4VAbKS5VcHjkbdF-LneCE.%f@\dUg)/T"h;-rF
+i8ESRj5]4]jlY^gkNM0plK[^7m/QJQmf)\SnGi%Vo)A7[o_8%UpA+IOq"jg_qXj[]r;-BYrdk*#
+s5X-0~>
+JcC<$JcCu7nG`=`rVZKgrqcWiqtU3crq?9_s7H<^rUTsXs7#sTs6fpSr9XILrp'FGs60IFr9""?
+s5a+<s5O(;rS[_5s5*_1s4dV/rRqM0f\"g-f%/CNe,e%Hrm<(>cd'h\bfe2Pb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`\@8oT[C#q>"gYD;Yck5/XT>N(ri-!uW;`[rVPU-gU]R<cUAghfTV%kUT)YA]
+SGo#XRfAfSR/`NQQMm*KPlHsGP5g[EOSk1>NrP+;N;nh9MZ&D3L]E5/LAuu-K`-N)Jq8LOJH(-!
+If4]pI/eQlHN/9jGl)^bG5cX[FT$:WEl)hnE;OSEDXVH8DZ+MQE;OYSErL.XFT-F^G5HL_GlE!a
+HM`'bI-#eRIf4cmJGt-"K)L?%K`?c*LB!&/M#W>3M?&S6Mueourf7)AOoCLNPE_>tQBml)R$jEB
+RfT%Mrgj._T`1VdU8+L_U]RBiVZ*LnW;ijrWrB(!XSf4"Y5YX$Yl1j*ZMCj+[/RK1[f<i:\GWo;
+\cBA@]`5YF^AbnI^];4M_?%Qmrl"oXa8X.-ai_fMbg"GYcd:%ddF-LneCE.%f@\d1g=tE=h;7&I
+i8N\Tj5]4^roO7Ekl0fJlKdd8liQSBmeuVSnGi%Wo)A7Zo_J1WpA4OPq"aa]qXaU\r;-BYrdk*#
+s5O'/~>
+JcC<$JcCu7nG`=`rVZKgrqcWiqtU3crq?9_s7H<^rUTsXs7#sTs6fpSr9XILrp'FGs60IFr9""?
+s5a+<s5O(;rS[_5s5*_1s4dV/rRqM0f\"g-f%/CNe,e%Hrm<(>cd'h\bfe2Pb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`\@8oT[C#q>"gYD;Yck5/XT>N(ri-!uW;`[rVPU-gU]R<cUAghfTV%kUT)YA]
+SGo#XRfAfSR/`NQQMm*KPlHsGP5g[EOSk1>NrP+;N;nh9MZ&D3L]E5/LAuu-K`-N)Jq8LOJH(-!
+If4]pI/eQlHN/9jGl)^bG5cX[FT$:WEl)hnE;OSEDXVH8DZ+MQE;OYSErL.XFT-F^G5HL_GlE!a
+HM`'bI-#eRIf4cmJGt-"K)L?%K`?c*LB!&/M#W>3M?&S6Mueourf7)AOoCLNPE_>tQBml)R$jEB
+RfT%Mrgj._T`1VdU8+L_U]RBiVZ*LnW;ijrWrB(!XSf4"Y5YX$Yl1j*ZMCj+[/RK1[f<i:\GWo;
+\cBA@]`5YF^AbnI^];4M_?%Qmrl"oXa8X.-ai_fMbg"GYcd:%ddF-LneCE.%f@\d1g=tE=h;7&I
+i8N\Tj5]4^roO7Ekl0fJlKdd8liQSBmeuVSnGi%Wo)A7Zo_J1WpA4OPq"aa]qXaU\r;-BYrdk*#
+s5O'/~>
+JcC<$JcCu7nG`=`rVZKgrqcWiqtU3crq?9_s7H<^rUTsXs7#sTs6fpSr9XILrp'FGs60IFr9""?
+s5a+<s5O(;rS[_5s5*_1s4dV/rRqM0f\"g-f%/CNe,e%Hrm<(>cd'h\bfe2Pb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=PP`\@8oT[C#q>"gYD;Yck5/XT>N(ri-!uW;`[rVPU-gU]R<cUAghfTV%kUT)YA]
+SGo#XRfAfSR/`NQQMm*KPlHsGP5g[EOSk1>NrP+;N;nh9MZ&D3L]E5/LAuu-K`-N)Jq8LOJH(-!
+If4]pI/eQlHN/9jGl)^bG5cX[FT$:WEl)hnE;OSEDXVH8DZ+MQE;OYSErL.XFT-F^G5HL_GlE!a
+HM`'bI-#eRIf4cmJGt-"K)L?%K`?c*LB!&/M#W>3M?&S6Mueourf7)AOoCLNPE_>tQBml)R$jEB
+RfT%Mrgj._T`1VdU8+L_U]RBiVZ*LnW;ijrWrB(!XSf4"Y5YX$Yl1j*ZMCj+[/RK1[f<i:\GWo;
+\cBA@]`5YF^AbnI^];4M_?%Qmrl"oXa8X.-ai_fMbg"GYcd:%ddF-LneCE.%f@\d1g=tE=h;7&I
+i8N\Tj5]4^roO7Ekl0fJlKdd8liQSBmeuVSnGi%Wo)A7Zo_J1WpA4OPq"aa]qXaU\r;-BYrdk*#
+s5O'/~>
+JcC<$JcCr6nG`@ar;?EgrVHNhqtU3crq?9_rq-6^r:9mXs7#sTrpKgRr9XILrp'FGrojCFr9""?
+s5a+<s5O%:rS[_5!8d\1s4dV/rn@D*!8.;&.+Zr!eC;sqda?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=S!P$+RIQ[^EKKZa-k8YQ:r1riH4&X8]+"WMofo!iDfjrhKUjU8%X\s.KCargs.\
+s.'(Xs-itUrL!VOs-EVKs-3MHrK@2Cs,d2?s,R,=rJ^c7s,-f4s+p]1rJ(?+s+LB(s+:9%rI=s!
+IX_6Ds*Xinr-JBgrcn?brc\6_piQ@Ric=d7oQ'PCr,DLNherC2rG_UQrc8$[qfMj\rc\0_rcnEf
+qKi*er-[gYoR?Xdpji?ps+:0$s+LE+rItB/Lku%e#E"FtN/WaUNrG(HOHG]hPEV5rQ'Rd9Qk5[S
+S"#q<SXuFFTV/!PU8"F^U]RBiVZ*IpW2ZcpWrK."XSo:#Y5YX%Yl1j*ZMLp+[/IE0[f3c9\GWo;
+])TD@]`5YF^AYeO^qmk(_Sa:0rl"oXa8X-`ai_fMbg$.4&^ShOdF-LneCE.%f@\d1g=tE^h%\`'
+i8ESRj5]4^jlY^gkih9qlK[^7liQSBmeuSSnG_tVo)A7[o_S7YpA4OPq"X[\qXXO[r;$<Xrdk*#
+s5F!.~>
+JcC<$JcCr6nG`@ar;?EgrVHNhqtU3crq?9_rq-6^r:9mXs7#sTrpKgRr9XILrp'FGrojCFr9""?
+s5a+<s5O%:rS[_5!8d\1s4dV/rn@D*!8.;&.+Zr!eC;sqda?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=S!P$+RIQ[^EKKZa-k8YQ:r1riH4&X8]+"WMofo!iDfjrhKUjU8%X\s.KCargs.\
+s.'(Xs-itUrL!VOs-EVKs-3MHrK@2Cs,d2?s,R,=rJ^c7s,-f4s+p]1rJ(?+s+LB(s+:9%rI=s!
+IX_6Ds*Xinr-JBgrcn?brc\6_piQ@Ric=d7oQ'PCr,DLNherC2rG_UQrc8$[qfMj\rc\0_rcnEf
+qKi*er-[gYoR?Xdpji?ps+:0$s+LE+rItB/Lku%e#E"FtN/WaUNrG(HOHG]hPEV5rQ'Rd9Qk5[S
+S"#q<SXuFFTV/!PU8"F^U]RBiVZ*IpW2ZcpWrK."XSo:#Y5YX%Yl1j*ZMLp+[/IE0[f3c9\GWo;
+])TD@]`5YF^AYeO^qmk(_Sa:0rl"oXa8X-`ai_fMbg$.4&^ShOdF-LneCE.%f@\d1g=tE^h%\`'
+i8ESRj5]4^jlY^gkih9qlK[^7liQSBmeuSSnG_tVo)A7[o_S7YpA4OPq"X[\qXXO[r;$<Xrdk*#
+s5F!.~>
+JcC<$JcCr6nG`@ar;?EgrVHNhqtU3crq?9_rq-6^r:9mXs7#sTrpKgRr9XILrp'FGrojCFr9""?
+s5a+<s5O%:rS[_5!8d\1s4dV/rn@D*!8.;&.+Zr!eC;sqda?Ihcd'h\c-4ASb/q`Ga2Z*;`5BI/
+_8*h#^:h1l]=S!P$+RIQ[^EKKZa-k8YQ:r1riH4&X8]+"WMofo!iDfjrhKUjU8%X\s.KCargs.\
+s.'(Xs-itUrL!VOs-EVKs-3MHrK@2Cs,d2?s,R,=rJ^c7s,-f4s+p]1rJ(?+s+LB(s+:9%rI=s!
+IX_6Ds*Xinr-JBgrcn?brc\6_piQ@Ric=d7oQ'PCr,DLNherC2rG_UQrc8$[qfMj\rc\0_rcnEf
+qKi*er-[gYoR?Xdpji?ps+:0$s+LE+rItB/Lku%e#E"FtN/WaUNrG(HOHG]hPEV5rQ'Rd9Qk5[S
+S"#q<SXuFFTV/!PU8"F^U]RBiVZ*IpW2ZcpWrK."XSo:#Y5YX%Yl1j*ZMLp+[/IE0[f3c9\GWo;
+])TD@]`5YF^AYeO^qmk(_Sa:0rl"oXa8X-`ai_fMbg$.4&^ShOdF-LneCE.%f@\d1g=tE^h%\`'
+i8ESRj5]4^jlY^gkih9qlK[^7liQSBmeuSSnG_tVo)A7[o_S7YpA4OPq"X[\qXXO[r;$<Xrdk*#
+s5F!.~>
+JcC<$JcCr6nG`=`rVZKgrqcThr:p9crq?9_rq-6^r:9mXrp]jSs6fmRr9XILrp'FGroj@Er9"%@
+roF%<ro3t:rSRb7hVS4e!o2Pbrn8[Of\"g-f%/C$eC2mpdF$=ecd'h\bfe2PaiMQD`l5p8_ns:,
+_#D(X^:h1l]=PP`\@8oT[C#q>&@/RFYck44Xf\\*X/`2!WMofo!iDfjrhTRh!2BFc!hc0XrLX%[
+!1a"Ws-itUrL!VOs-ESJs-3PIrK@2Cs,d2?s,R,=rJ^c7!/g`3s+p]1reCH,s+L?'!ePuSrIFot
+s*jops*Xinr-JBgrcn<arHA-^noX5>mWA/DqJu:LqJc:Lm;Dc=rG_RPrc8!Zr,hp\s*"9`s*4Ng
+qKi-frI"9domZF\omm!lrdt$"s+LE+rItB/Lku%es,$f7req5ENfK0]OHGZgP*;.0PmWhDR$a;0
+R[]e:Sc52]T:l1W!MZ@gU]RBiVZ*IpW2ZcqWrK."XSo:$Y5YX%Yl:p,ZMCj*[/IE/[f3c8\GWo:
+])TD@]`5\F^AbnI^];4M_?.Wn`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfC
+hr*GOir7sBjQ5OdkND(.klL)8rp9[P!:KgSs7$'YrUTsZs7H0\r:^$^nG)eSq"jRYq>C'eli)J8
+JcF[.J,~>
+JcC<$JcCr6nG`=`rVZKgrqcThr:p9crq?9_rq-6^r:9mXrp]jSs6fmRr9XILrp'FGroj@Er9"%@
+roF%<ro3t:rSRb7hVS4e!o2Pbrn8[Of\"g-f%/C$eC2mpdF$=ecd'h\bfe2PaiMQD`l5p8_ns:,
+_#D(X^:h1l]=PP`\@8oT[C#q>&@/RFYck44Xf\\*X/`2!WMofo!iDfjrhTRh!2BFc!hc0XrLX%[
+!1a"Ws-itUrL!VOs-ESJs-3PIrK@2Cs,d2?s,R,=rJ^c7!/g`3s+p]1reCH,s+L?'!ePuSrIFot
+s*jops*Xinr-JBgrcn<arHA-^noX5>mWA/DqJu:LqJc:Lm;Dc=rG_RPrc8!Zr,hp\s*"9`s*4Ng
+qKi-frI"9domZF\omm!lrdt$"s+LE+rItB/Lku%es,$f7req5ENfK0]OHGZgP*;.0PmWhDR$a;0
+R[]e:Sc52]T:l1W!MZ@gU]RBiVZ*IpW2ZcqWrK."XSo:$Y5YX%Yl:p,ZMCj*[/IE/[f3c8\GWo:
+])TD@]`5\F^AbnI^];4M_?.Wn`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfC
+hr*GOir7sBjQ5OdkND(.klL)8rp9[P!:KgSs7$'YrUTsZs7H0\r:^$^nG)eSq"jRYq>C'eli)J8
+JcF[.J,~>
+JcC<$JcCr6nG`=`rVZKgrqcThr:p9crq?9_rq-6^r:9mXrp]jSs6fmRr9XILrp'FGroj@Er9"%@
+roF%<ro3t:rSRb7hVS4e!o2Pbrn8[Of\"g-f%/C$eC2mpdF$=ecd'h\bfe2PaiMQD`l5p8_ns:,
+_#D(X^:h1l]=PP`\@8oT[C#q>&@/RFYck44Xf\\*X/`2!WMofo!iDfjrhTRh!2BFc!hc0XrLX%[
+!1a"Ws-itUrL!VOs-ESJs-3PIrK@2Cs,d2?s,R,=rJ^c7!/g`3s+p]1reCH,s+L?'!ePuSrIFot
+s*jops*Xinr-JBgrcn<arHA-^noX5>mWA/DqJu:LqJc:Lm;Dc=rG_RPrc8!Zr,hp\s*"9`s*4Ng
+qKi-frI"9domZF\omm!lrdt$"s+LE+rItB/Lku%es,$f7req5ENfK0]OHGZgP*;.0PmWhDR$a;0
+R[]e:Sc52]T:l1W!MZ@gU]RBiVZ*IpW2ZcqWrK."XSo:$Y5YX%Yl:p,ZMCj*[/IE/[f3c8\GWo:
+])TD@]`5\F^AbnI^];4M_?.Wn`;[^V`lJ)"'$8;>bKS5UcHab_dF$CkeC<%"rmqV3g"P07gtgfC
+hr*GOir7sBjQ5OdkND(.klL)8rp9[P!:KgSs7$'YrUTsZs7H0\r:^$^nG)eSq"jRYq>C'eli)J8
+JcF[.J,~>
+JcC<$JcCo5nG`=`rVZKgrVHNhqtU3crq?9_rq-6^r:9jWs7#sTrpKdQr9XFKs6BLGs60IFr9""?
+s5a+<s5O(;rSRb7hVS4e!o2Pbrn7D+f`'J'f%'cL!RoKrd0\1GcHa\YbKJ&Mrl>hp`l5p8_ns:,
+^q[Xu]tD"i]",A]\,NfC[C!9HZE^[=Yck5/XTtr.X/`2!WMofos/#dmrM0LiU8%X\s.KCarLX%[
+s.'%Ws-itUrL!VOs-EVKs-3PIrK@2Cs,d2?s,R,=rf$l8s,-c3s+gZ1rJ(?+!/1<'s+:9%rIFot
+s*jops*Xinr-J?frcn9`rHA'\`H:rtqf;CMq/Gb?qJc7MrGqmYr,hp\rc\3`rcnHgqg/6grI"Eh
+qL80gk^`S^rIXlus+LE+r.Y9.Lku"d#E"FtN/WaUNrG(?OHKO*$Bp^>Q'R`&R$a;1rgOIhSXuFF
+T:hmOU8+KZUnsobrhfgrWN#lss/Q.$rN6+&ric7(riuI.qQp1.r3cC0rO;d9qml^;s1A3As1SHH
+rkJKK!5\WN#K+Ku`Poj:a8X.3ai_fMbfn>WcHjkbdF-LmeC<%"f@S[.g=k<:h;-rFhr*GOioB([
+jlPXekNMp0!p]+;rp0^RmdC)Cs7$'YrUU![rq-'[rV$0`nbDkSp\OFWq>C'eli)J8JcFX-J,~>
+JcC<$JcCo5nG`=`rVZKgrVHNhqtU3crq?9_rq-6^r:9jWs7#sTrpKdQr9XFKs6BLGs60IFr9""?
+s5a+<s5O(;rSRb7hVS4e!o2Pbrn7D+f`'J'f%'cL!RoKrd0\1GcHa\YbKJ&Mrl>hp`l5p8_ns:,
+^q[Xu]tD"i]",A]\,NfC[C!9HZE^[=Yck5/XTtr.X/`2!WMofos/#dmrM0LiU8%X\s.KCarLX%[
+s.'%Ws-itUrL!VOs-EVKs-3PIrK@2Cs,d2?s,R,=rf$l8s,-c3s+gZ1rJ(?+!/1<'s+:9%rIFot
+s*jops*Xinr-J?frcn9`rHA'\`H:rtqf;CMq/Gb?qJc7MrGqmYr,hp\rc\3`rcnHgqg/6grI"Eh
+qL80gk^`S^rIXlus+LE+r.Y9.Lku"d#E"FtN/WaUNrG(?OHKO*$Bp^>Q'R`&R$a;1rgOIhSXuFF
+T:hmOU8+KZUnsobrhfgrWN#lss/Q.$rN6+&ric7(riuI.qQp1.r3cC0rO;d9qml^;s1A3As1SHH
+rkJKK!5\WN#K+Ku`Poj:a8X.3ai_fMbfn>WcHjkbdF-LmeC<%"f@S[.g=k<:h;-rFhr*GOioB([
+jlPXekNMp0!p]+;rp0^RmdC)Cs7$'YrUU![rq-'[rV$0`nbDkSp\OFWq>C'eli)J8JcFX-J,~>
+JcC<$JcCo5nG`=`rVZKgrVHNhqtU3crq?9_rq-6^r:9jWs7#sTrpKdQr9XFKs6BLGs60IFr9""?
+s5a+<s5O(;rSRb7hVS4e!o2Pbrn7D+f`'J'f%'cL!RoKrd0\1GcHa\YbKJ&Mrl>hp`l5p8_ns:,
+^q[Xu]tD"i]",A]\,NfC[C!9HZE^[=Yck5/XTtr.X/`2!WMofos/#dmrM0LiU8%X\s.KCarLX%[
+s.'%Ws-itUrL!VOs-EVKs-3PIrK@2Cs,d2?s,R,=rf$l8s,-c3s+gZ1rJ(?+!/1<'s+:9%rIFot
+s*jops*Xinr-J?frcn9`rHA'\`H:rtqf;CMq/Gb?qJc7MrGqmYr,hp\rc\3`rcnHgqg/6grI"Eh
+qL80gk^`S^rIXlus+LE+r.Y9.Lku"d#E"FtN/WaUNrG(?OHKO*$Bp^>Q'R`&R$a;1rgOIhSXuFF
+T:hmOU8+KZUnsobrhfgrWN#lss/Q.$rN6+&ric7(riuI.qQp1.r3cC0rO;d9qml^;s1A3As1SHH
+rkJKK!5\WN#K+Ku`Poj:a8X.3ai_fMbfn>WcHjkbdF-LmeC<%"f@S[.g=k<:h;-rFhr*GOioB([
+jlPXekNMp0!p]+;rp0^RmdC)Cs7$'YrUU![rq-'[rV$0`nbDkSp\OFWq>C'eli)J8JcFX-J,~>
+JcC<$JcCo5n,E4_rVZKgrVHNhqtU0bs7Z?_s7H<^r:9mXrp]jSrpKdQr9XFKrp'FGroj@Er9"%@
+roF%<s5O(;rSRb7hVS7fs4dV/rn@D*/(iJ*f%/C$eC2mpdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i])K5D\@8oT[C#q>!OB!0YQ:r1riHF,X/i8#WMuiqVuNXoV>d:jUB%%eU&UecTDbA]
+Sc>5YS,\rWRJiNQQiEBMQ2d*KPPp[EOoLOAO8k4?NW"h9MuS\6M>rD3L]3&.L&Zi*KE$Q'Jc1-!
+J,aurIK"WoHi&-gH2`'`GPZL/Fn9_PF8L"MEUIf>EW'qVF8L(ZFoHR^GQ)jdH2N!fHiAEhIJeQk
+J*2@WJbt&qKDpQ'L&Hc+L]<2/M#rQmMuJYHNK0$[O-#HcP*2#mPa.N"Qi<?ZR@9V7S=Q4BStD\T
+T`Lm_rhKRkVZ*IpW2ZcqWWK6&XSo:$Y5b^(Yl:p-ZMLp,[/IE.[f*]6\GNi9])K>>]`5\F^AYhH
+_#M7M_Z.LR`;[^e`lH-@aN;QHbKJ,Rc-FV\d/ME!daQ^qe^i@(f\-8X$/=7kh;7&Ii8N\pisXr0
+k2tjikiq?slKeH9!q#FDrpTmVs7-'Ys7?6^qt9p]rV,pYpA+IZn,)qYq>KUXJcC<$hZ&*~>
+JcC<$JcCo5n,E4_rVZKgrVHNhqtU0bs7Z?_s7H<^r:9mXrp]jSrpKdQr9XFKrp'FGroj@Er9"%@
+roF%<s5O(;rSRb7hVS7fs4dV/rn@D*/(iJ*f%/C$eC2mpdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i])K5D\@8oT[C#q>!OB!0YQ:r1riHF,X/i8#WMuiqVuNXoV>d:jUB%%eU&UecTDbA]
+Sc>5YS,\rWRJiNQQiEBMQ2d*KPPp[EOoLOAO8k4?NW"h9MuS\6M>rD3L]3&.L&Zi*KE$Q'Jc1-!
+J,aurIK"WoHi&-gH2`'`GPZL/Fn9_PF8L"MEUIf>EW'qVF8L(ZFoHR^GQ)jdH2N!fHiAEhIJeQk
+J*2@WJbt&qKDpQ'L&Hc+L]<2/M#rQmMuJYHNK0$[O-#HcP*2#mPa.N"Qi<?ZR@9V7S=Q4BStD\T
+T`Lm_rhKRkVZ*IpW2ZcqWWK6&XSo:$Y5b^(Yl:p-ZMLp,[/IE.[f*]6\GNi9])K>>]`5\F^AYhH
+_#M7M_Z.LR`;[^e`lH-@aN;QHbKJ,Rc-FV\d/ME!daQ^qe^i@(f\-8X$/=7kh;7&Ii8N\pisXr0
+k2tjikiq?slKeH9!q#FDrpTmVs7-'Ys7?6^qt9p]rV,pYpA+IZn,)qYq>KUXJcC<$hZ&*~>
+JcC<$JcCo5n,E4_rVZKgrVHNhqtU0bs7Z?_s7H<^r:9mXrp]jSrpKdQr9XFKrp'FGroj@Er9"%@
+roF%<s5O(;rSRb7hVS7fs4dV/rn@D*/(iJ*f%/C$eC2mpdF$=ecHa\Ybfe2PaiMQD`l5p8_ns:,
+^q[Xu]tD"i])K5D\@8oT[C#q>!OB!0YQ:r1riHF,X/i8#WMuiqVuNXoV>d:jUB%%eU&UecTDbA]
+Sc>5YS,\rWRJiNQQiEBMQ2d*KPPp[EOoLOAO8k4?NW"h9MuS\6M>rD3L]3&.L&Zi*KE$Q'Jc1-!
+J,aurIK"WoHi&-gH2`'`GPZL/Fn9_PF8L"MEUIf>EW'qVF8L(ZFoHR^GQ)jdH2N!fHiAEhIJeQk
+J*2@WJbt&qKDpQ'L&Hc+L]<2/M#rQmMuJYHNK0$[O-#HcP*2#mPa.N"Qi<?ZR@9V7S=Q4BStD\T
+T`Lm_rhKRkVZ*IpW2ZcqWWK6&XSo:$Y5b^(Yl:p-ZMLp,[/IE.[f*]6\GNi9])K>>]`5\F^AYhH
+_#M7M_Z.LR`;[^e`lH-@aN;QHbKJ,Rc-FV\d/ME!daQ^qe^i@(f\-8X$/=7kh;7&Ii8N\pisXr0
+k2tjikiq?slKeH9!q#FDrpTmVs7-'Ys7?6^qt9p]rV,pYpA+IZn,)qYq>KUXJcC<$hZ&*~>
+JcC<$JcCl4n,E7`r;?BfrqcThqtU0bs7Z?_s7H<^r:9jWrp]jSrpKdQr9XFKrp'CFrojCFr9""?
+s5a.=s5O(;rSRb7hVS7f!o2Pbrn7D+f`'J'f%'cL"k1oIdEp5=c5t6SbKJ&MaN2EA`Pod5_SX.)
+^V@Ls]tD"i]",A]\,NfD[C!9HZEga>Yck75riH7'X/l6"!i`,srhfgpV5=-d!i)KarLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,Hu9!fMqnrJCQ1!/LN-s+LH+rIb-%s+1-!
+s*t&tr-eTmrd4Ngrd"EdoQS]+q/uCQqfDXTiGnd9rH%jXrcS3`r-/-bs*=Kfrd4ZmqL/?lr."?h
+nq$Icp4N<sre:9)s+gW1rJ:T5Mi7Rns,@#=rf7)AOoCLEPEc'3$C7$GR$jA2S"#q=rgj[nTV8'R
+USFW\V5C,fVl6Pnri-%#XK;E's/uC*rNQ=,rj)I.rj;X3qR6@3rOD[6rjr'?r4N'CrkA?Gs1nZN
+rke]Q!6"iT!QN1Za:$,4b0.uPbg"GYcd;[="k(lLeCE.Lf*U*_g=k<:h;-rFrnmt=ioB([jo4BC
+kNMp0!UB"Mm/QGQmf)\TnGi%Wo)J=\o_eC\pAOaXq"OUXqX47Vr:p6Urdk*#s5!^*~>
+JcC<$JcCl4n,E7`r;?BfrqcThqtU0bs7Z?_s7H<^r:9jWrp]jSrpKdQr9XFKrp'CFrojCFr9""?
+s5a.=s5O(;rSRb7hVS7f!o2Pbrn7D+f`'J'f%'cL"k1oIdEp5=c5t6SbKJ&MaN2EA`Pod5_SX.)
+^V@Ls]tD"i]",A]\,NfD[C!9HZEga>Yck75riH7'X/l6"!i`,srhfgpV5=-d!i)KarLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,Hu9!fMqnrJCQ1!/LN-s+LH+rIb-%s+1-!
+s*t&tr-eTmrd4Ngrd"EdoQS]+q/uCQqfDXTiGnd9rH%jXrcS3`r-/-bs*=Kfrd4ZmqL/?lr."?h
+nq$Icp4N<sre:9)s+gW1rJ:T5Mi7Rns,@#=rf7)AOoCLEPEc'3$C7$GR$jA2S"#q=rgj[nTV8'R
+USFW\V5C,fVl6Pnri-%#XK;E's/uC*rNQ=,rj)I.rj;X3qR6@3rOD[6rjr'?r4N'CrkA?Gs1nZN
+rke]Q!6"iT!QN1Za:$,4b0.uPbg"GYcd;[="k(lLeCE.Lf*U*_g=k<:h;-rFrnmt=ioB([jo4BC
+kNMp0!UB"Mm/QGQmf)\TnGi%Wo)J=\o_eC\pAOaXq"OUXqX47Vr:p6Urdk*#s5!^*~>
+JcC<$JcCl4n,E7`r;?BfrqcThqtU0bs7Z?_s7H<^r:9jWrp]jSrpKdQr9XFKrp'CFrojCFr9""?
+s5a.=s5O(;rSRb7hVS7f!o2Pbrn7D+f`'J'f%'cL"k1oIdEp5=c5t6SbKJ&MaN2EA`Pod5_SX.)
+^V@Ls]tD"i]",A]\,NfD[C!9HZEga>Yck75riH7'X/l6"!i`,srhfgpV5=-d!i)KarLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,Hu9!fMqnrJCQ1!/LN-s+LH+rIb-%s+1-!
+s*t&tr-eTmrd4Ngrd"EdoQS]+q/uCQqfDXTiGnd9rH%jXrcS3`r-/-bs*=Kfrd4ZmqL/?lr."?h
+nq$Icp4N<sre:9)s+gW1rJ:T5Mi7Rns,@#=rf7)AOoCLEPEc'3$C7$GR$jA2S"#q=rgj[nTV8'R
+USFW\V5C,fVl6Pnri-%#XK;E's/uC*rNQ=,rj)I.rj;X3qR6@3rOD[6rjr'?r4N'CrkA?Gs1nZN
+rke]Q!6"iT!QN1Za:$,4b0.uPbg"GYcd;[="k(lLeCE.Lf*U*_g=k<:h;-rFrnmt=ioB([jo4BC
+kNMp0!UB"Mm/QGQmf)\TnGi%Wo)J=\o_eC\pAOaXq"OUXqX47Vr:p6Urdk*#s5!^*~>
+JcC<$JcCl4n,E4_r;?BfrqcThqtU0bs7Z?_rq-6^qssaVs7#pSrpKdQqs==Js6BLGroj@ErT=+@
+s5a.=s5O(;ro!h6s5*b2&DZ$pg=k65f[na+f%&:"e'e6C%FEGHcHXSVbK@rJaN)="`=9c'_SX.)
+^V@Lr]Y(kfrj`TM\$i`Q['[0GZE^[=Yck75riH7'X/l6"!i`,srhodns/#^js.fUgrLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,I#:s,6o7re^Z2s+gT.s+UK+rIY0'JV!`L
+s*t&tr-eTmrd4Kfr-A0aa`mT)qfVUSqfDRRno=JGr,_^VrcS3`r-/-brd"Efs*O`mqgJHmrI=Tm
+qLS9jl\#.hrIt-'s+gT0rJCQ3!/pf7#E=b(O,oBaOoCLNPE_>tQBml)R$jEBRgP[VSt;RITV8'R
+U].%iV5F6i!N<!sWrK+"XT#@%Y5b^)YlD!-ZMh-/[/RK0[f*]6\G<]6])B8<]`,VE^APbG_#M7L
+_?.Wn`;[aU`W4'Ya;rCFb0.uPbg"GYcd:%ddF-LneCE+#f@S[.g=k<:rnS:Fhr*GOioB([jQ5Od
+kNM-ol0@U#rp0^RmdC)C!q>aMrUU![rq--]rq?<bpA"FYpA4.Qq#'pcl2H86JcFO*J,~>
+JcC<$JcCl4n,E4_r;?BfrqcThqtU0bs7Z?_rq-6^qssaVs7#pSrpKdQqs==Js6BLGroj@ErT=+@
+s5a.=s5O(;ro!h6s5*b2&DZ$pg=k65f[na+f%&:"e'e6C%FEGHcHXSVbK@rJaN)="`=9c'_SX.)
+^V@Lr]Y(kfrj`TM\$i`Q['[0GZE^[=Yck75riH7'X/l6"!i`,srhodns/#^js.fUgrLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,I#:s,6o7re^Z2s+gT.s+UK+rIY0'JV!`L
+s*t&tr-eTmrd4Kfr-A0aa`mT)qfVUSqfDRRno=JGr,_^VrcS3`r-/-brd"Efs*O`mqgJHmrI=Tm
+qLS9jl\#.hrIt-'s+gT0rJCQ3!/pf7#E=b(O,oBaOoCLNPE_>tQBml)R$jEBRgP[VSt;RITV8'R
+U].%iV5F6i!N<!sWrK+"XT#@%Y5b^)YlD!-ZMh-/[/RK0[f*]6\G<]6])B8<]`,VE^APbG_#M7L
+_?.Wn`;[aU`W4'Ya;rCFb0.uPbg"GYcd:%ddF-LneCE+#f@S[.g=k<:rnS:Fhr*GOioB([jQ5Od
+kNM-ol0@U#rp0^RmdC)C!q>aMrUU![rq--]rq?<bpA"FYpA4.Qq#'pcl2H86JcFO*J,~>
+JcC<$JcCl4n,E4_r;?BfrqcThqtU0bs7Z?_rq-6^qssaVs7#pSrpKdQqs==Js6BLGroj@ErT=+@
+s5a.=s5O(;ro!h6s5*b2&DZ$pg=k65f[na+f%&:"e'e6C%FEGHcHXSVbK@rJaN)="`=9c'_SX.)
+^V@Lr]Y(kfrj`TM\$i`Q['[0GZE^[=Yck75riH7'X/l6"!i`,srhodns/#^js.fUgrLs7as.B7]
+s.01[rL<hUs-`hQs-NbOrK[DIs-*DEs,m>Crf@)>s,I#:s,6o7re^Z2s+gT.s+UK+rIY0'JV!`L
+s*t&tr-eTmrd4Kfr-A0aa`mT)qfVUSqfDRRno=JGr,_^VrcS3`r-/-brd"Efs*O`mqgJHmrI=Tm
+qLS9jl\#.hrIt-'s+gT0rJCQ3!/pf7#E=b(O,oBaOoCLNPE_>tQBml)R$jEBRgP[VSt;RITV8'R
+U].%iV5F6i!N<!sWrK+"XT#@%Y5b^)YlD!-ZMh-/[/RK0[f*]6\G<]6])B8<]`,VE^APbG_#M7L
+_?.Wn`;[aU`W4'Ya;rCFb0.uPbg"GYcd:%ddF-LneCE+#f@S[.g=k<:rnS:Fhr*GOioB([jQ5Od
+kNM-ol0@U#rp0^RmdC)C!q>aMrUU![rq--]rq?<bpA"FYpA4.Qq#'pcl2H86JcFO*J,~>
+JcC<$JcCi3n,E4_rVZHfrqcWiqY:'arq?9_rq-3]r:9jWrp]gRrpKdQqs==Jrp'CFs60IFr9"%@
+s5a.=s5O(;ro!h6!8d_2s4dV/rn7D+f`'JIf%&:"e'lamdEp4bcHXSVbK@rKaN2EA`Pod5_SX.)
+^V@Lrrk&EH]",A]\,Nf:[C#q>!OB!0YlCm,Y5YO)XK/E$WrK$uW;WXoVZ3LlV#R4iUA^ecT`:Y_
+T)YA]SGerVRfAfSR/`KQQMm*KPlHsGP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAur-K`-Q'K)^E#
+JGt&uIf+WnI/SEeHM`!9Gk-(UG5QLVFSKqKEqsePFT$@]G5QR`GlE!dHN/?kI/JElIf=imJGauq
+K'%^]K`$Q"LB!&.M#E21MZ8V5Muo!!NrG(?OHKO*#*Y:9Q'IZ%rg4apR[]e:S=Q7CT:hmOU8"EY
+UnsrcVl-JmWN)u!X/u<&s/l@*rNQ=,s0DU0s0Vd5qmQL5rOD[6r4;j=qRlg@rkA<Fs1nWMrPAWR
+`5MVn!li:$rl>,^b5TQlbg"DXcHjh`dF$CkrmV,%f%8O+g&B\8gYCW@hV[8LiSrkWj5f>$joOZ/
+rojIKli-5PmI'EAn,MkWnbr%YoD\C[p&=[`p\=OZq=a[NqtU*`rTX<4s+14(s*t~>
+JcC<$JcCi3n,E4_rVZHfrqcWiqY:'arq?9_rq-3]r:9jWrp]gRrpKdQqs==Jrp'CFs60IFr9"%@
+s5a.=s5O(;ro!h6!8d_2s4dV/rn7D+f`'JIf%&:"e'lamdEp4bcHXSVbK@rKaN2EA`Pod5_SX.)
+^V@Lrrk&EH]",A]\,Nf:[C#q>!OB!0YlCm,Y5YO)XK/E$WrK$uW;WXoVZ3LlV#R4iUA^ecT`:Y_
+T)YA]SGerVRfAfSR/`KQQMm*KPlHsGP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAur-K`-Q'K)^E#
+JGt&uIf+WnI/SEeHM`!9Gk-(UG5QLVFSKqKEqsePFT$@]G5QR`GlE!dHN/?kI/JElIf=imJGauq
+K'%^]K`$Q"LB!&.M#E21MZ8V5Muo!!NrG(?OHKO*#*Y:9Q'IZ%rg4apR[]e:S=Q7CT:hmOU8"EY
+UnsrcVl-JmWN)u!X/u<&s/l@*rNQ=,s0DU0s0Vd5qmQL5rOD[6r4;j=qRlg@rkA<Fs1nWMrPAWR
+`5MVn!li:$rl>,^b5TQlbg"DXcHjh`dF$CkrmV,%f%8O+g&B\8gYCW@hV[8LiSrkWj5f>$joOZ/
+rojIKli-5PmI'EAn,MkWnbr%YoD\C[p&=[`p\=OZq=a[NqtU*`rTX<4s+14(s*t~>
+JcC<$JcCi3n,E4_rVZHfrqcWiqY:'arq?9_rq-3]r:9jWrp]gRrpKdQqs==Jrp'CFs60IFr9"%@
+s5a.=s5O(;ro!h6!8d_2s4dV/rn7D+f`'JIf%&:"e'lamdEp4bcHXSVbK@rKaN2EA`Pod5_SX.)
+^V@Lrrk&EH]",A]\,Nf:[C#q>!OB!0YlCm,Y5YO)XK/E$WrK$uW;WXoVZ3LlV#R4iUA^ecT`:Y_
+T)YA]SGerVRfAfSR/`KQQMm*KPlHsGP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAur-K`-Q'K)^E#
+JGt&uIf+WnI/SEeHM`!9Gk-(UG5QLVFSKqKEqsePFT$@]G5QR`GlE!dHN/?kI/JElIf=imJGauq
+K'%^]K`$Q"LB!&.M#E21MZ8V5Muo!!NrG(?OHKO*#*Y:9Q'IZ%rg4apR[]e:S=Q7CT:hmOU8"EY
+UnsrcVl-JmWN)u!X/u<&s/l@*rNQ=,s0DU0s0Vd5qmQL5rOD[6r4;j=qRlg@rkA<Fs1nWMrPAWR
+`5MVn!li:$rl>,^b5TQlbg"DXcHjh`dF$CkrmV,%f%8O+g&B\8gYCW@hV[8LiSrkWj5f>$joOZ/
+rojIKli-5PmI'EAn,MkWnbr%YoD\C[p&=[`p\=OZq=a[NqtU*`rTX<4s+14(s*t~>
+JcC<$JcCf2n,E7`r;?BfrVHNhqY:'arq?6^s7H<^qssaVrp]gRrpKdQqX"4Irp'FGrojCFr9"%@
+s5a.=s5O(;rnmk8hVS7f!SlH/g'66_f[na+ec+&:e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%e
+^BM?b]Y(kfrj`6C\$i`Q[C#q>!OB!0YlCm,Y5YR'X8o="WWK/uW;WUqVPU-fV#R4iUA^ecT`:Y_
+T)P;\SGerWRfAfSR/`KQQMm*KPlHsHP5g[EOT(=@NrP+<N;nh9MZ/J4M#W80LAuu-K`-Q'K)^E"
+JH(,uIf"QmI/J?`HII08GkQ@ZG5QLPFSKqKFT$@]G5HL_GlE!dHN/?kI/JElIf=ioJGk&tK(FWb
+K_C,oLAco,M#<,0MZ8V5Muo!!NrG(@OHG\)Oo^c2rfmhVQ^F/.R@9V7S=TYN"eVH]Tq\=]U]I<h
+rhfdqWW&muX/u<&s/l@*rNH@.ZEjG8s0Vd5r3lU6rj_d7rOVp=q7Q^?rP&3ErkSQMr5/KO!6"iT
+s2G&ZrlG,]!6Y;a/'Q8_cHab^d*^7he'lgre^i@(f\"m2g=tE=h;7&Hi8ESRj5]4^jlY^gkl0fO
+lKdd&m-X3.rpTmVs7-*Zrq$0^r:U'_rqH3_qYBp_l215Qp\j=TJcC<$g&HR~>
+JcC<$JcCf2n,E7`r;?BfrVHNhqY:'arq?6^s7H<^qssaVrp]gRrpKdQqX"4Irp'FGrojCFr9"%@
+s5a.=s5O(;rnmk8hVS7f!SlH/g'66_f[na+ec+&:e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%e
+^BM?b]Y(kfrj`6C\$i`Q[C#q>!OB!0YlCm,Y5YR'X8o="WWK/uW;WUqVPU-fV#R4iUA^ecT`:Y_
+T)P;\SGerWRfAfSR/`KQQMm*KPlHsHP5g[EOT(=@NrP+<N;nh9MZ/J4M#W80LAuu-K`-Q'K)^E"
+JH(,uIf"QmI/J?`HII08GkQ@ZG5QLPFSKqKFT$@]G5HL_GlE!dHN/?kI/JElIf=ioJGk&tK(FWb
+K_C,oLAco,M#<,0MZ8V5Muo!!NrG(@OHG\)Oo^c2rfmhVQ^F/.R@9V7S=TYN"eVH]Tq\=]U]I<h
+rhfdqWW&muX/u<&s/l@*rNH@.ZEjG8s0Vd5r3lU6rj_d7rOVp=q7Q^?rP&3ErkSQMr5/KO!6"iT
+s2G&ZrlG,]!6Y;a/'Q8_cHab^d*^7he'lgre^i@(f\"m2g=tE=h;7&Hi8ESRj5]4^jlY^gkl0fO
+lKdd&m-X3.rpTmVs7-*Zrq$0^r:U'_rqH3_qYBp_l215Qp\j=TJcC<$g&HR~>
+JcC<$JcCf2n,E7`r;?BfrVHNhqY:'arq?6^s7H<^qssaVrp]gRrpKdQqX"4Irp'FGrojCFr9"%@
+s5a.=s5O(;rnmk8hVS7f!SlH/g'66_f[na+ec+&:e'cXkd*L"_c-=JUbK@rJaN)<>`Pf[2_SO%e
+^BM?b]Y(kfrj`6C\$i`Q[C#q>!OB!0YlCm,Y5YR'X8o="WWK/uW;WUqVPU-fV#R4iUA^ecT`:Y_
+T)P;\SGerWRfAfSR/`KQQMm*KPlHsHP5g[EOT(=@NrP+<N;nh9MZ/J4M#W80LAuu-K`-Q'K)^E"
+JH(,uIf"QmI/J?`HII08GkQ@ZG5QLPFSKqKFT$@]G5HL_GlE!dHN/?kI/JElIf=ioJGk&tK(FWb
+K_C,oLAco,M#<,0MZ8V5Muo!!NrG(@OHG\)Oo^c2rfmhVQ^F/.R@9V7S=TYN"eVH]Tq\=]U]I<h
+rhfdqWW&muX/u<&s/l@*rNH@.ZEjG8s0Vd5r3lU6rj_d7rOVp=q7Q^?rP&3ErkSQMr5/KO!6"iT
+s2G&ZrlG,]!6Y;a/'Q8_cHab^d*^7he'lgre^i@(f\"m2g=tE=h;7&Hi8ESRj5]4^jlY^gkl0fO
+lKdd&m-X3.rpTmVs7-*Zrq$0^r:U'_rqH3_qYBp_l215Qp\j=TJcC<$g&HR~>
+JcC<$JcCc1n,E4_rVZHfrqcThqtU0brq?6^rq-3]qssaVrp]dQrpKdQqs==Jrp'CFs60IFrT=.A
+s5a.=s5F%;rSRq<hVR)Egt^Z`g*kY,f@SU)e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;`5BL0_SO%&
+^V7D\]F_]d\[f5Z\$i`Q['[0GZEgb7YlCm,Y5YR'XT,@#WrK'uW;`^pVZ3LkV#R4iUA^ecT`1S^
+T)YA]SGerWRfAfSQi`V?QMm*KPlHsHP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAuu-K`-Q'K)^E"
+JGt&tIenKkI/A96HMVpbGkQ@ZG5?@EFSp:[G5?F^GlE!dHN&9kI/JElIfFopJGk&uK(jonK^sic
+LAZi+M#3&/MZ/P4Muo!!NrG+>O8tFBOtDl^Pa.N"QC!u+R@9S6S"-%@StD[KTqS3UUnji`VPg>j
+WMuntX/rD)Xfeh1rilF-s0DX1s0Vg6r3lU6rj_j9rOVs>pq6R=rP&-CrkSQMr5/KOs2=lTs2P)Z
+rl>/_b0'_,&BrDDcHab^d*^7hdaQ^qe^j`O"k_M^g=tE^h$)Zmi8ESRro4CIjlY^gkNM0plK[^7
+liQSBmf)YVnF?&Io)J=]o_eC]pAXg^q"sm_qW[nMr:g0Qrdk*#s4I@%~>
+JcC<$JcCc1n,E4_rVZHfrqcThqtU0brq?6^rq-3]qssaVrp]dQrpKdQqs==Jrp'CFs60IFrT=.A
+s5a.=s5F%;rSRq<hVR)Egt^Z`g*kY,f@SU)e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;`5BL0_SO%&
+^V7D\]F_]d\[f5Z\$i`Q['[0GZEgb7YlCm,Y5YR'XT,@#WrK'uW;`^pVZ3LkV#R4iUA^ecT`1S^
+T)YA]SGerWRfAfSQi`V?QMm*KPlHsHP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAuu-K`-Q'K)^E"
+JGt&tIenKkI/A96HMVpbGkQ@ZG5?@EFSp:[G5?F^GlE!dHN&9kI/JElIfFopJGk&uK(jonK^sic
+LAZi+M#3&/MZ/P4Muo!!NrG+>O8tFBOtDl^Pa.N"QC!u+R@9S6S"-%@StD[KTqS3UUnji`VPg>j
+WMuntX/rD)Xfeh1rilF-s0DX1s0Vg6r3lU6rj_j9rOVs>pq6R=rP&-CrkSQMr5/KOs2=lTs2P)Z
+rl>/_b0'_,&BrDDcHab^d*^7hdaQ^qe^j`O"k_M^g=tE^h$)Zmi8ESRro4CIjlY^gkNM0plK[^7
+liQSBmf)YVnF?&Io)J=]o_eC]pAXg^q"sm_qW[nMr:g0Qrdk*#s4I@%~>
+JcC<$JcCc1n,E4_rVZHfrqcThqtU0brq?6^rq-3]qssaVrp]dQrpKdQqs==Jrp'CFs60IFrT=.A
+s5a.=s5F%;rSRq<hVR)Egt^Z`g*kY,f@SU)e^W*tda?Ihd*L"_c-4ASb/q`Ga2Z*;`5BL0_SO%&
+^V7D\]F_]d\[f5Z\$i`Q['[0GZEgb7YlCm,Y5YR'XT,@#WrK'uW;`^pVZ3LkV#R4iUA^ecT`1S^
+T)YA]SGerWRfAfSQi`V?QMm*KPlHsHP5gXEOSt7?NW>(;MunopMZ&A5LkgcaLAuu-K`-Q'K)^E"
+JGt&tIenKkI/A96HMVpbGkQ@ZG5?@EFSp:[G5?F^GlE!dHN&9kI/JElIfFopJGk&uK(jonK^sic
+LAZi+M#3&/MZ/P4Muo!!NrG+>O8tFBOtDl^Pa.N"QC!u+R@9S6S"-%@StD[KTqS3UUnji`VPg>j
+WMuntX/rD)Xfeh1rilF-s0DX1s0Vg6r3lU6rj_j9rOVs>pq6R=rP&-CrkSQMr5/KOs2=lTs2P)Z
+rl>/_b0'_,&BrDDcHab^d*^7hdaQ^qe^j`O"k_M^g=tE^h$)Zmi8ESRro4CIjlY^gkNM0plK[^7
+liQSBmf)YVnF?&Io)J=]o_eC]pAXg^q"sm_qW[nMr:g0Qrdk*#s4I@%~>
+JcC<$JcCc1n,E4_r;??erqcThqtU0brV$-]rq-3]qssaVrp]dQrpKdQqX"4Irp'FGs60IFrT=.A
+s5a.=!oi1tro!h6!8d_2!SlH/g&]mZrmq>)e^W*tdf.W9d*L"_c-4ASb/q`Ga2Z-<`Pf[2_SO%&
+^V7Fq]Y(kfrj`'>\,Nf@[C!<IZa-mArilF+s/u@'s/Z4$rMomss/>mos/,gmrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrL!VO!1*SKs-*MIrK75EOHBI&s,R,=rf$l8s,-f4s+p]1reCH,s+L<&s+:9%
+qgeZqrdOWjqL$nAn9Y"XqfqjZqKD+Gqf_g[rHS<er-J?hs*X`mrdOlsqgeZsrdt!!r.Op#kD&ef
+r.t0*s,-f6rJ^c9s,R)>s,d8Cs-!DG!0mJJ!LB)OQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i!N<!s
+WWB0%riH4(YPtd+Z2_-/Zi@E4[JdQ6\,No7\c02=]D9,;^&>\@^])%J_>M1L_uI[R`W*sXa8X0[
+aT0K_bQ#cdc2Q!"cd:%ddF-IleC<%"f%8O+g&B\/gYCW@hV\=j$K:")j5f=`k2tjjroj[Qlg*p(
+mHs?@n,MkWnbr%YoDeI\p&=[ap\FU^q>'mOqt9m\rTF02s+14%s*t~>
+JcC<$JcCc1n,E4_r;??erqcThqtU0brV$-]rq-3]qssaVrp]dQrpKdQqX"4Irp'FGs60IFrT=.A
+s5a.=!oi1tro!h6!8d_2!SlH/g&]mZrmq>)e^W*tdf.W9d*L"_c-4ASb/q`Ga2Z-<`Pf[2_SO%&
+^V7Fq]Y(kfrj`'>\,Nf@[C!<IZa-mArilF+s/u@'s/Z4$rMomss/>mos/,gmrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrL!VO!1*SKs-*MIrK75EOHBI&s,R,=rf$l8s,-f4s+p]1reCH,s+L<&s+:9%
+qgeZqrdOWjqL$nAn9Y"XqfqjZqKD+Gqf_g[rHS<er-J?hs*X`mrdOlsqgeZsrdt!!r.Op#kD&ef
+r.t0*s,-f6rJ^c9s,R)>s,d8Cs-!DG!0mJJ!LB)OQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i!N<!s
+WWB0%riH4(YPtd+Z2_-/Zi@E4[JdQ6\,No7\c02=]D9,;^&>\@^])%J_>M1L_uI[R`W*sXa8X0[
+aT0K_bQ#cdc2Q!"cd:%ddF-IleC<%"f%8O+g&B\/gYCW@hV\=j$K:")j5f=`k2tjjroj[Qlg*p(
+mHs?@n,MkWnbr%YoDeI\p&=[ap\FU^q>'mOqt9m\rTF02s+14%s*t~>
+JcC<$JcCc1n,E4_r;??erqcThqtU0brV$-]rq-3]qssaVrp]dQrpKdQqX"4Irp'FGs60IFrT=.A
+s5a.=!oi1tro!h6!8d_2!SlH/g&]mZrmq>)e^W*tdf.W9d*L"_c-4ASb/q`Ga2Z-<`Pf[2_SO%&
+^V7Fq]Y(kfrj`'>\,Nf@[C!<IZa-mArilF+s/u@'s/Z4$rMomss/>mos/,gmrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrL!VO!1*SKs-*MIrK75EOHBI&s,R,=rf$l8s,-f4s+p]1reCH,s+L<&s+:9%
+qgeZqrdOWjqL$nAn9Y"XqfqjZqKD+Gqf_g[rHS<er-J?hs*X`mrdOlsqgeZsrdt!!r.Op#kD&ef
+r.t0*s,-f6rJ^c9s,R)>s,d8Cs-!DG!0mJJ!LB)OQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i!N<!s
+WWB0%riH4(YPtd+Z2_-/Zi@E4[JdQ6\,No7\c02=]D9,;^&>\@^])%J_>M1L_uI[R`W*sXa8X0[
+aT0K_bQ#cdc2Q!"cd:%ddF-IleC<%"f%8O+g&B\/gYCW@hV\=j$K:")j5f=`k2tjjroj[Qlg*p(
+mHs?@n,MkWnbr%YoDeI\p&=[ap\FU^q>'mOqt9m\rTF02s+14%s*t~>
+JcC<$JcC`0n,E4_r;??erqcThqY:'arq?6^rq-0\qssaVrUB^QrU0[Pqs==Jrp'FGrojCFrT=.A
+s5a1>s5O(;rnmh7hYu=NgtUT;g=b-2f@SU(eC;srda?Ihcd'h\bfe2Pao9?fa2Z*;`5BI/_8-&b
+$bj<e]Xtee\[f5[\,Nf:[C#q>s0;X0rilF+s/u@'s/c7$rMfpuW2TZms/,dlrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrg<_Ps-EYLs-3PIrf[;Ds,d5@s,I)=rJUf9MMh@hs+gZ1rJ(?+re16&rdt0$
+qgeWprI49bfR3LAp3QX^r-7jXlur,IrHS<eqg/9hrd=WlrdOlsr.+ctrdt$"rIk-'nqQ[ipPAR#
+rJLT4r/CZ8s,R)>s,d8CrfRhVPa%GuQBml)R$jA2S"#q=rgj:cTV8'RU].%rV5C/gW2ZbrWiN6#
+XTGZ/YPta,Z*O>7!joACrO2a8s1&!;rjr'?qRla>rP&'ArP8EKqni?Ms2=iSs2P)ZrlG,]s2t>a
+s3(Jfrlu)$d*U1fdaHUoeCE+#f@S[.rn7_6gtgfChV[8LiSsjs$fpF3k3(pkl07Kuli-5OmI'rA
+!q>aMrpp*\s7H6^s7ZHdq=sm`qtfUToDJ:[k5Kr3JcF=$J,~>
+JcC<$JcC`0n,E4_r;??erqcThqY:'arq?6^rq-0\qssaVrUB^QrU0[Pqs==Jrp'FGrojCFrT=.A
+s5a1>s5O(;rnmh7hYu=NgtUT;g=b-2f@SU(eC;srda?Ihcd'h\bfe2Pao9?fa2Z*;`5BI/_8-&b
+$bj<e]Xtee\[f5[\,Nf:[C#q>s0;X0rilF+s/u@'s/c7$rMfpuW2TZms/,dlrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrg<_Ps-EYLs-3PIrf[;Ds,d5@s,I)=rJUf9MMh@hs+gZ1rJ(?+re16&rdt0$
+qgeWprI49bfR3LAp3QX^r-7jXlur,IrHS<eqg/9hrd=WlrdOlsr.+ctrdt$"rIk-'nqQ[ipPAR#
+rJLT4r/CZ8s,R)>s,d8CrfRhVPa%GuQBml)R$jA2S"#q=rgj:cTV8'RU].%rV5C/gW2ZbrWiN6#
+XTGZ/YPta,Z*O>7!joACrO2a8s1&!;rjr'?qRla>rP&'ArP8EKqni?Ms2=iSs2P)ZrlG,]s2t>a
+s3(Jfrlu)$d*U1fdaHUoeCE+#f@S[.rn7_6gtgfChV[8LiSsjs$fpF3k3(pkl07Kuli-5OmI'rA
+!q>aMrpp*\s7H6^s7ZHdq=sm`qtfUToDJ:[k5Kr3JcF=$J,~>
+JcC<$JcC`0n,E4_r;??erqcThqY:'arq?6^rq-0\qssaVrUB^QrU0[Pqs==Jrp'FGrojCFrT=.A
+s5a1>s5O(;rnmh7hYu=NgtUT;g=b-2f@SU(eC;srda?Ihcd'h\bfe2Pao9?fa2Z*;`5BI/_8-&b
+$bj<e]Xtee\[f5[\,Nf:[C#q>s0;X0rilF+s/u@'s/c7$rMfpuW2TZms/,dlrM9Igs.]Ics.KCa
+rLX%[s.'%Ws-itUrg<_Ps-EYLs-3PIrf[;Ds,d5@s,I)=rJUf9MMh@hs+gZ1rJ(?+re16&rdt0$
+qgeWprI49bfR3LAp3QX^r-7jXlur,IrHS<eqg/9hrd=WlrdOlsr.+ctrdt$"rIk-'nqQ[ipPAR#
+rJLT4r/CZ8s,R)>s,d8CrfRhVPa%GuQBml)R$jA2S"#q=rgj:cTV8'RU].%rV5C/gW2ZbrWiN6#
+XTGZ/YPta,Z*O>7!joACrO2a8s1&!;rjr'?qRla>rP&'ArP8EKqni?Ms2=iSs2P)ZrlG,]s2t>a
+s3(Jfrlu)$d*U1fdaHUoeCE+#f@S[.rn7_6gtgfChV[8LiSsjs$fpF3k3(pkl07Kuli-5OmI'rA
+!q>aMrpp*\s7H6^s7ZHdq=sm`qtfUToDJ:[k5Kr3JcF=$J,~>
+JcC<$JcC`0mf*+^r;?BfrVHKgqY:'arq?3]rq-3]qXXUTrp]dQrpKaPqs==Jrp'FGs60LGrT=.A
+s5a1>s5F%;rnn@FhVR)Egt^Z<g=b03f@SU(rmV8'da?Ihcd'h\bl5clb/q`Ga2Z*;`5DSk&Ac/s
+^V7Cp]Y(kf]",A]\$u@F!O]<6Zi@?2Z2V!-Y5ka(XoGL&X8T'uWW/pqVuNXoV>[4iU]7(eU&Uec
+TDbA]Sc>5YS,\rWRJrTRQiEBNQ2d'KPPpXGOcY\(O8k7?NW+n:MuS\6M>rD3L])u-L&Zi(KDpK%
+JbjopJ,=]?IJS?gHhVjaH2DjFGPudbH2DpeHiAEjIK+cqJ,FirJcC?!KDpQ&L%pDuL[g2hM>W81
+Mu/J5NW5%;O8k=AOoCODP5pjHPl[2;rg3_SRf8ciS=Q7CT:_dMTq\<XUnsobVl-Jmri-1'XKAV-
+Y-7i/!jT&:rj)[5[C-"Bs0r$<r42g<s1A-?rOr0DpqQaBrPA?IrkncSr5JZTs2Y)Z!m/U-rQ>8d
+c-?75!RK-ldJqW)e'umte^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&IncJFTo_eC^pAXg_q#'sbqX"+Nr:KsLrdk*#s4%(!~>
+JcC<$JcC`0mf*+^r;?BfrVHKgqY:'arq?3]rq-3]qXXUTrp]dQrpKaPqs==Jrp'FGs60LGrT=.A
+s5a1>s5F%;rnn@FhVR)Egt^Z<g=b03f@SU(rmV8'da?Ihcd'h\bl5clb/q`Ga2Z*;`5DSk&Ac/s
+^V7Cp]Y(kf]",A]\$u@F!O]<6Zi@?2Z2V!-Y5ka(XoGL&X8T'uWW/pqVuNXoV>[4iU]7(eU&Uec
+TDbA]Sc>5YS,\rWRJrTRQiEBNQ2d'KPPpXGOcY\(O8k7?NW+n:MuS\6M>rD3L])u-L&Zi(KDpK%
+JbjopJ,=]?IJS?gHhVjaH2DjFGPudbH2DpeHiAEjIK+cqJ,FirJcC?!KDpQ&L%pDuL[g2hM>W81
+Mu/J5NW5%;O8k=AOoCODP5pjHPl[2;rg3_SRf8ciS=Q7CT:_dMTq\<XUnsobVl-Jmri-1'XKAV-
+Y-7i/!jT&:rj)[5[C-"Bs0r$<r42g<s1A-?rOr0DpqQaBrPA?IrkncSr5JZTs2Y)Z!m/U-rQ>8d
+c-?75!RK-ldJqW)e'umte^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&IncJFTo_eC^pAXg_q#'sbqX"+Nr:KsLrdk*#s4%(!~>
+JcC<$JcC`0mf*+^r;?BfrVHKgqY:'arq?3]rq-3]qXXUTrp]dQrpKaPqs==Jrp'FGs60LGrT=.A
+s5a1>s5F%;rnn@FhVR)Egt^Z<g=b03f@SU(rmV8'da?Ihcd'h\bl5clb/q`Ga2Z*;`5DSk&Ac/s
+^V7Cp]Y(kf]",A]\$u@F!O]<6Zi@?2Z2V!-Y5ka(XoGL&X8T'uWW/pqVuNXoV>[4iU]7(eU&Uec
+TDbA]Sc>5YS,\rWRJrTRQiEBNQ2d'KPPpXGOcY\(O8k7?NW+n:MuS\6M>rD3L])u-L&Zi(KDpK%
+JbjopJ,=]?IJS?gHhVjaH2DjFGPudbH2DpeHiAEjIK+cqJ,FirJcC?!KDpQ&L%pDuL[g2hM>W81
+Mu/J5NW5%;O8k=AOoCODP5pjHPl[2;rg3_SRf8ciS=Q7CT:_dMTq\<XUnsobVl-Jmri-1'XKAV-
+Y-7i/!jT&:rj)[5[C-"Bs0r$<r42g<s1A-?rOr0DpqQaBrPA?IrkncSr5JZTs2Y)Z!m/U-rQ>8d
+c-?75!RK-ldJqW)e'umte^i@(f\+s3g=tE^h$W#ri8ESRioB([jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&IncJFTo_eC^pAXg_q#'sbqX"+Nr:KsLrdk*#s4%(!~>
+JcC<$JcC]/mf*+^r;??erqcThqY:$`rq?3]rq-3]qXXUTrp]aPrpKdQqs==Jrp'FGs60LGrT41C
+jQ-=#s5O(;s5<q7!8d_2!SlH/g()fgf@SU)e^W*tda?Ihci22rc-4ASb/q`Ga2\+t"iS<q_SO%e
+^B)'^rk&9D])K5A\@8sH[K<kD[/RB5ZE^\6YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LkV#I.hUA^ec
+T`:Y`T)YA]SGerWRK/cSQi`V?QMm'MP`q=1P5gXEOSt4ANfB%sMunopMZ&D3M#W8/LAuu,K`$K%
+K)L8qJGF]JIdqjaI/J?cHM`!`Gk-(TGl2j`HN&9jI/JElIfFoqJH(3"K)C9#K`6]$LAZi(LusQi
+MYrD/N;eh9Nr>%=OT1IBP5g^GPl?sJQ2m9NQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i$E0r(WiN5&
+Xf\b0ricI/ZEjJ9!joACrjMj9s1&$<s183Ar4N!ArkA0Br4r9Ipqm$Jrl"]Qs2P)Zr5eo[s2t>a
+s3(Jfrm(Pi!7:_ms3_S0eC<%!f%8O+f\,!4gY:N>h;7&gi"4l,j5]4]jlY^gkih9qlK[^7liHMA
+rpTmVs7-*Zs7?9_rUp0`rqH<br;$9emJHJPoDRbLJcC<$eGk%~>
+JcC<$JcC]/mf*+^r;??erqcThqY:$`rq?3]rq-3]qXXUTrp]aPrpKdQqs==Jrp'FGs60LGrT41C
+jQ-=#s5O(;s5<q7!8d_2!SlH/g()fgf@SU)e^W*tda?Ihci22rc-4ASb/q`Ga2\+t"iS<q_SO%e
+^B)'^rk&9D])K5A\@8sH[K<kD[/RB5ZE^\6YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LkV#I.hUA^ec
+T`:Y`T)YA]SGerWRK/cSQi`V?QMm'MP`q=1P5gXEOSt4ANfB%sMunopMZ&D3M#W8/LAuu,K`$K%
+K)L8qJGF]JIdqjaI/J?cHM`!`Gk-(TGl2j`HN&9jI/JElIfFoqJH(3"K)C9#K`6]$LAZi(LusQi
+MYrD/N;eh9Nr>%=OT1IBP5g^GPl?sJQ2m9NQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i$E0r(WiN5&
+Xf\b0ricI/ZEjJ9!joACrjMj9s1&$<s183Ar4N!ArkA0Br4r9Ipqm$Jrl"]Qs2P)Zr5eo[s2t>a
+s3(Jfrm(Pi!7:_ms3_S0eC<%!f%8O+f\,!4gY:N>h;7&gi"4l,j5]4]jlY^gkih9qlK[^7liHMA
+rpTmVs7-*Zs7?9_rUp0`rqH<br;$9emJHJPoDRbLJcC<$eGk%~>
+JcC<$JcC]/mf*+^r;??erqcThqY:$`rq?3]rq-3]qXXUTrp]aPrpKdQqs==Jrp'FGs60LGrT41C
+jQ-=#s5O(;s5<q7!8d_2!SlH/g()fgf@SU)e^W*tda?Ihci22rc-4ASb/q`Ga2\+t"iS<q_SO%e
+^B)'^rk&9D])K5A\@8sH[K<kD[/RB5ZE^\6YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LkV#I.hUA^ec
+T`:Y`T)YA]SGerWRK/cSQi`V?QMm'MP`q=1P5gXEOSt4ANfB%sMunopMZ&D3M#W8/LAuu,K`$K%
+K)L8qJGF]JIdqjaI/J?cHM`!`Gk-(TGl2j`HN&9jI/JElIfFoqJH(3"K)C9#K`6]$LAZi(LusQi
+MYrD/N;eh9Nr>%=OT1IBP5g^GPl?sJQ2m9NQjT7MS"#q<SXuFFT`1VgU8+N[V5F6i$E0r(WiN5&
+Xf\b0ricI/ZEjJ9!joACrjMj9s1&$<s183Ar4N!ArkA0Br4r9Ipqm$Jrl"]Qs2P)Zr5eo[s2t>a
+s3(Jfrm(Pi!7:_ms3_S0eC<%!f%8O+f\,!4gY:N>h;7&gi"4l,j5]4]jlY^gkih9qlK[^7liHMA
+rpTmVs7-*Zs7?9_rUp0`rqH<br;$9emJHJPoDRbLJcC<$eGk%~>
+JcC<$JcCZ.mf*+^r;??erVHNhq=ss`rV$-]rUg*\q==OTrUB[PrU0[Pqs=@Krp'FGs60LGroX7B
+s5a1>s5F%;rnmh7hYu=8gtUT;g=b-Xf.,A%eC;sqdF$=fcd'h\bfe2PaiMQDa2Z*;`5BI/_83q%
+^V7Cp]Y(kg])K5A\@8sH[K<kD[/RE3Z2h0.YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LjV#R4iUA^ec
+T`:Y`T)YA]SGeoYR[KTCR/`NQQN!0LPQ6pGOogc-OT(=@NrP+<N;nh9MZ&D3M#W8/LAlo+K_pE#
+K)L8hJD>YMIeJ3gI/J?bHMDdZGklX[HN&9iI/JElIfFoqJGt-"K)C9#K`6]&LAco+M"->lMYN,(
+N;eh9Nr4t<OT1IAP5g^GPl?sJQ2m9NQj/tIR[]e:Sc52oT:hmOU8+KZUnsrdVl6SoWiE,$riHC-
+YHY79Z*OA8!joACrjMj9!4`!<s186Br4N$BrkA3CrP8?Ipqm!IrP\TPrl4rXrQ+u[s2t>as31Mf
+rm(Pi!7:_m#L_)MeC<%!f)F83f\,!4gY:N>h;7&Hi8ESRro4%?jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&Jo)J=]o_nI^pAam`q#1$dqXFCQr:9gHrdk*#s3^js~>
+JcC<$JcCZ.mf*+^r;??erVHNhq=ss`rV$-]rUg*\q==OTrUB[PrU0[Pqs=@Krp'FGs60LGroX7B
+s5a1>s5F%;rnmh7hYu=8gtUT;g=b-Xf.,A%eC;sqdF$=fcd'h\bfe2PaiMQDa2Z*;`5BI/_83q%
+^V7Cp]Y(kg])K5A\@8sH[K<kD[/RE3Z2h0.YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LjV#R4iUA^ec
+T`:Y`T)YA]SGeoYR[KTCR/`NQQN!0LPQ6pGOogc-OT(=@NrP+<N;nh9MZ&D3M#W8/LAlo+K_pE#
+K)L8hJD>YMIeJ3gI/J?bHMDdZGklX[HN&9iI/JElIfFoqJGt-"K)C9#K`6]&LAco+M"->lMYN,(
+N;eh9Nr4t<OT1IAP5g^GPl?sJQ2m9NQj/tIR[]e:Sc52oT:hmOU8+KZUnsrdVl6SoWiE,$riHC-
+YHY79Z*OA8!joACrjMj9!4`!<s186Br4N$BrkA3CrP8?Ipqm!IrP\TPrl4rXrQ+u[s2t>as31Mf
+rm(Pi!7:_m#L_)MeC<%!f)F83f\,!4gY:N>h;7&Hi8ESRro4%?jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&Jo)J=]o_nI^pAam`q#1$dqXFCQr:9gHrdk*#s3^js~>
+JcC<$JcCZ.mf*+^r;??erVHNhq=ss`rV$-]rUg*\q==OTrUB[PrU0[Pqs=@Krp'FGs60LGroX7B
+s5a1>s5F%;rnmh7hYu=8gtUT;g=b-Xf.,A%eC;sqdF$=fcd'h\bfe2PaiMQDa2Z*;`5BI/_83q%
+^V7Cp]Y(kg])K5A\@8sH[K<kD[/RE3Z2h0.YlCp,Y5PL&XT,@"WrK'uW;WXoVZ3LjV#R4iUA^ec
+T`:Y`T)YA]SGeoYR[KTCR/`NQQN!0LPQ6pGOogc-OT(=@NrP+<N;nh9MZ&D3M#W8/LAlo+K_pE#
+K)L8hJD>YMIeJ3gI/J?bHMDdZGklX[HN&9iI/JElIfFoqJGt-"K)C9#K`6]&LAco+M"->lMYN,(
+N;eh9Nr4t<OT1IAP5g^GPl?sJQ2m9NQj/tIR[]e:Sc52oT:hmOU8+KZUnsrdVl6SoWiE,$riHC-
+YHY79Z*OA8!joACrjMj9!4`!<s186Br4N$BrkA3CrP8?Ipqm!IrP\TPrl4rXrQ+u[s2t>as31Mf
+rm(Pi!7:_m#L_)MeC<%!f)F83f\,!4gY:N>h;7&Hi8ESRro4%?jo4BCkNMp0!UB"MliQSBmf)YV
+nF?&Jo)J=]o_nI^pAam`q#1$dqXFCQr:9gHrdk*#s3^js~>
+JcC<$JcCW-mf*+^r;??erVHKgqY:$`rq?3]rUg'[qXXUTrUB[PrpKdQqs==Js6BRIroa@FrT=.A
+!9F.>s5F%;ro!h6'&MI#gt^Z<g=b-2f@SU(eC;sqrm;P/cd'h\bfe2PaiVWFa2Z*;`5BL0_SO%e
+^B)'^rk&<E]"7mO!k>_KrjDm9[']h=s0D[0rNQ=*s/u=&s/c7$rMomss/>jns/,gmrM9Igs.]Ic
+s.KCargs.\s.'(Xs-itUrg<_P!1*VLs-3PIrf[;D!0I/?!fi8"rJ^c7!/g]2s+p]1r.b3)re1-#
+r.=`qd=D(Cr-nBgr-\Ehh0T$HrI"Kjs*jrsr.+furdt'#s+LB*qhG**reU?+q24g&m#:k%rf6l:
+rfI/BrK@2E!0mGI#F:^CR$a;0Rf8c`S=Q7CT:_dMTq\=]U^j5uVl-JmWiE,#XKAV-YPta,Z*OA8
+s0Md6rjDm;\@DLJ!kQ"Ur4N'CrkA6DrP8BJpqlsHr5AHNrl4rXr5eo[s2t8_!mJp6rQYJjd*Vd>
+#L_)MeC<%!f)F8%f\-8X!ScE/h&>/-i8ESQioB([jlPXekNM-ol0@U#m-O-,mf)\Tn,W"WncJFT
+o_eC^pAam`q#:*eqXXOTr:0aFrdk*#s3CXp~>
+JcC<$JcCW-mf*+^r;??erVHKgqY:$`rq?3]rUg'[qXXUTrUB[PrpKdQqs==Js6BRIroa@FrT=.A
+!9F.>s5F%;ro!h6'&MI#gt^Z<g=b-2f@SU(eC;sqrm;P/cd'h\bfe2PaiVWFa2Z*;`5BL0_SO%e
+^B)'^rk&<E]"7mO!k>_KrjDm9[']h=s0D[0rNQ=*s/u=&s/c7$rMomss/>jns/,gmrM9Igs.]Ic
+s.KCargs.\s.'(Xs-itUrg<_P!1*VLs-3PIrf[;D!0I/?!fi8"rJ^c7!/g]2s+p]1r.b3)re1-#
+r.=`qd=D(Cr-nBgr-\Ehh0T$HrI"Kjs*jrsr.+furdt'#s+LB*qhG**reU?+q24g&m#:k%rf6l:
+rfI/BrK@2E!0mGI#F:^CR$a;0Rf8c`S=Q7CT:_dMTq\=]U^j5uVl-JmWiE,#XKAV-YPta,Z*OA8
+s0Md6rjDm;\@DLJ!kQ"Ur4N'CrkA6DrP8BJpqlsHr5AHNrl4rXr5eo[s2t8_!mJp6rQYJjd*Vd>
+#L_)MeC<%!f)F8%f\-8X!ScE/h&>/-i8ESQioB([jlPXekNM-ol0@U#m-O-,mf)\Tn,W"WncJFT
+o_eC^pAam`q#:*eqXXOTr:0aFrdk*#s3CXp~>
+JcC<$JcCW-mf*+^r;??erVHKgqY:$`rq?3]rUg'[qXXUTrUB[PrpKdQqs==Js6BRIroa@FrT=.A
+!9F.>s5F%;ro!h6'&MI#gt^Z<g=b-2f@SU(eC;sqrm;P/cd'h\bfe2PaiVWFa2Z*;`5BL0_SO%e
+^B)'^rk&<E]"7mO!k>_KrjDm9[']h=s0D[0rNQ=*s/u=&s/c7$rMomss/>jns/,gmrM9Igs.]Ic
+s.KCargs.\s.'(Xs-itUrg<_P!1*VLs-3PIrf[;D!0I/?!fi8"rJ^c7!/g]2s+p]1r.b3)re1-#
+r.=`qd=D(Cr-nBgr-\Ehh0T$HrI"Kjs*jrsr.+furdt'#s+LB*qhG**reU?+q24g&m#:k%rf6l:
+rfI/BrK@2E!0mGI#F:^CR$a;0Rf8c`S=Q7CT:_dMTq\=]U^j5uVl-JmWiE,#XKAV-YPta,Z*OA8
+s0Md6rjDm;\@DLJ!kQ"Ur4N'CrkA6DrP8BJpqlsHr5AHNrl4rXr5eo[s2t8_!mJp6rQYJjd*Vd>
+#L_)MeC<%!f)F8%f\-8X!ScE/h&>/-i8ESQioB([jlPXekNM-ol0@U#m-O-,mf)\Tn,W"WncJFT
+o_eC^pAam`q#:*eqXXOTr:0aFrdk*#s3CXp~>
+JcC<$JcCW-mf*+^qu$6drVHKgqY:$`rV$*\rUg'[q==LSrp]aPrpKdQr9XFKs6BRIs60LGrT41C
+jQ-=#!oi1trnmh7hYu=<gtUQ:g"G$0f@JLOe-XUPdF$=ecHa\YrlYJfaiMQD`r<p]`5BI/_83qd
+^B)'^rk&<E]"7mO!k>_KrjMj7!4;^2s0D[0rNQ=*s/u=&s/c7$r2Tdrs/>mos/,gmrM9Igs.]Ic
+s.B@arLX%[!1a"W!h,OFrg<_Ps-EYL!gJn4rf[;Ds,d5@s,R,=rf$l8s,-`2s+p]1qhG*(rIjot
+pO_1OnppXfr-nEhr-\?fm!APUrI"HirdOirr.+furdt*$re1<*qhG**reUE-r/1B0k)B+qqi:N6
+rfI/BrK@2Es-3JI!g]1>rg3_SRf8c\S=Q4BStD\TT`q0cUnjiarhfpuWN)u!XT#=0Y-5(6Z*CU@
+Za@*IrjDm;\@DOKs186BrOi0DrkA<FrkSKKpqlsHr5ABLrl4oWr5elZs2t8_s3(JfrQbGh!7:_m
+s3^nrrm^tu!7q/$!SH*)g&]s`rnRV3hu;OFiSrnXjQ,Fbk3(pkl07Kuli-5PmI'EAmfN"Knc&+Z
+oDeI]p&Fabp\Xabq>C*\qt0gVrS[[+s+13ps*t~>
+JcC<$JcCW-mf*+^qu$6drVHKgqY:$`rV$*\rUg'[q==LSrp]aPrpKdQr9XFKs6BRIs60LGrT41C
+jQ-=#!oi1trnmh7hYu=<gtUQ:g"G$0f@JLOe-XUPdF$=ecHa\YrlYJfaiMQD`r<p]`5BI/_83qd
+^B)'^rk&<E]"7mO!k>_KrjMj7!4;^2s0D[0rNQ=*s/u=&s/c7$r2Tdrs/>mos/,gmrM9Igs.]Ic
+s.B@arLX%[!1a"W!h,OFrg<_Ps-EYL!gJn4rf[;Ds,d5@s,R,=rf$l8s,-`2s+p]1qhG*(rIjot
+pO_1OnppXfr-nEhr-\?fm!APUrI"HirdOirr.+furdt*$re1<*qhG**reUE-r/1B0k)B+qqi:N6
+rfI/BrK@2Es-3JI!g]1>rg3_SRf8c\S=Q4BStD\TT`q0cUnjiarhfpuWN)u!XT#=0Y-5(6Z*CU@
+Za@*IrjDm;\@DOKs186BrOi0DrkA<FrkSKKpqlsHr5ABLrl4oWr5elZs2t8_s3(JfrQbGh!7:_m
+s3^nrrm^tu!7q/$!SH*)g&]s`rnRV3hu;OFiSrnXjQ,Fbk3(pkl07Kuli-5PmI'EAmfN"Knc&+Z
+oDeI]p&Fabp\Xabq>C*\qt0gVrS[[+s+13ps*t~>
+JcC<$JcCW-mf*+^qu$6drVHKgqY:$`rV$*\rUg'[q==LSrp]aPrpKdQr9XFKs6BRIs60LGrT41C
+jQ-=#!oi1trnmh7hYu=<gtUQ:g"G$0f@JLOe-XUPdF$=ecHa\YrlYJfaiMQD`r<p]`5BI/_83qd
+^B)'^rk&<E]"7mO!k>_KrjMj7!4;^2s0D[0rNQ=*s/u=&s/c7$r2Tdrs/>mos/,gmrM9Igs.]Ic
+s.B@arLX%[!1a"W!h,OFrg<_Ps-EYL!gJn4rf[;Ds,d5@s,R,=rf$l8s,-`2s+p]1qhG*(rIjot
+pO_1OnppXfr-nEhr-\?fm!APUrI"HirdOirr.+furdt*$re1<*qhG**reUE-r/1B0k)B+qqi:N6
+rfI/BrK@2Es-3JI!g]1>rg3_SRf8c\S=Q4BStD\TT`q0cUnjiarhfpuWN)u!XT#=0Y-5(6Z*CU@
+Za@*IrjDm;\@DOKs186BrOi0DrkA<FrkSKKpqlsHr5ABLrl4oWr5elZs2t8_s3(JfrQbGh!7:_m
+s3^nrrm^tu!7q/$!SH*)g&]s`rnRV3hu;OFiSrnXjQ,Fbk3(pkl07Kuli-5PmI'EAmfN"Knc&+Z
+oDeI]p&Fabp\Xabq>C*\qt0gVrS[[+s+13ps*t~>
+JcC<$JcCT,mf*+^qu$6drVHKgq=sp_rV$*\rUg'[q""FSrUB[PrpKdQr9XFKs6BRIs60LGroX7B
+!9F.>s5F%;rnmh7hYu=3gtVh^"khP[f@JLOe0<AidF$=ecHa\Zbfe2PaiMQDa2Z*;`5BL0_SO%'
+^V@Lr^&GYG]=PTQ\H9:M\,Ni9[K!W4Zi@?2Z2Lp,YQ(d(XoGL%X8T'uWW/pqVuNXoV>[4iU]7(e
+T`UmZTDb>_SXc5LS,\rWRJrQTQ^3s:Q2d'KPPpXGOcY\'Nrk?$NW"h9MuS\4M>i>2L\cc(L&?VX
+KCXWjJbO]mJ,FciIJJ9\Hhr-cIK"]pJ,=crJc:9"KDpQ(L&?])L]3,,M>`>1MtDtuNV8D+O8Y1>
+Oo1CBPQ-mGPld8<Qi<?RR@9TDRfT%Mrgk+%TV8'RUSFW\V5C/gW2ZbrWiN5'Xfek2YctC<rj)j:
+[C*HO\$rmH\c98@]DfJC^&GbE^])%J_>1tG_u.IJ`VdaSa8<sWao9H]bQ#fcc2Q#gci;AkdJqVp
+e,IkseH"2"f)aOWrn7b7gt^`AhV[5Ki8N\pirS6&roO7Ekl0fIlKeH9s6TgSrpTmV!:g'Zs7?9_
+rUp3arqH<brqZNho_\@[n,;,BJcC<$bl<1~>
+JcC<$JcCT,mf*+^qu$6drVHKgq=sp_rV$*\rUg'[q""FSrUB[PrpKdQr9XFKs6BRIs60LGroX7B
+!9F.>s5F%;rnmh7hYu=3gtVh^"khP[f@JLOe0<AidF$=ecHa\Zbfe2PaiMQDa2Z*;`5BL0_SO%'
+^V@Lr^&GYG]=PTQ\H9:M\,Ni9[K!W4Zi@?2Z2Lp,YQ(d(XoGL%X8T'uWW/pqVuNXoV>[4iU]7(e
+T`UmZTDb>_SXc5LS,\rWRJrQTQ^3s:Q2d'KPPpXGOcY\'Nrk?$NW"h9MuS\4M>i>2L\cc(L&?VX
+KCXWjJbO]mJ,FciIJJ9\Hhr-cIK"]pJ,=crJc:9"KDpQ(L&?])L]3,,M>`>1MtDtuNV8D+O8Y1>
+Oo1CBPQ-mGPld8<Qi<?RR@9TDRfT%Mrgk+%TV8'RUSFW\V5C/gW2ZbrWiN5'Xfek2YctC<rj)j:
+[C*HO\$rmH\c98@]DfJC^&GbE^])%J_>1tG_u.IJ`VdaSa8<sWao9H]bQ#fcc2Q#gci;AkdJqVp
+e,IkseH"2"f)aOWrn7b7gt^`AhV[5Ki8N\pirS6&roO7Ekl0fIlKeH9s6TgSrpTmV!:g'Zs7?9_
+rUp3arqH<brqZNho_\@[n,;,BJcC<$bl<1~>
+JcC<$JcCT,mf*+^qu$6drVHKgq=sp_rV$*\rUg'[q""FSrUB[PrpKdQr9XFKs6BRIs60LGroX7B
+!9F.>s5F%;rnmh7hYu=3gtVh^"khP[f@JLOe0<AidF$=ecHa\Zbfe2PaiMQDa2Z*;`5BL0_SO%'
+^V@Lr^&GYG]=PTQ\H9:M\,Ni9[K!W4Zi@?2Z2Lp,YQ(d(XoGL%X8T'uWW/pqVuNXoV>[4iU]7(e
+T`UmZTDb>_SXc5LS,\rWRJrQTQ^3s:Q2d'KPPpXGOcY\'Nrk?$NW"h9MuS\4M>i>2L\cc(L&?VX
+KCXWjJbO]mJ,FciIJJ9\Hhr-cIK"]pJ,=crJc:9"KDpQ(L&?])L]3,,M>`>1MtDtuNV8D+O8Y1>
+Oo1CBPQ-mGPld8<Qi<?RR@9TDRfT%Mrgk+%TV8'RUSFW\V5C/gW2ZbrWiN5'Xfek2YctC<rj)j:
+[C*HO\$rmH\c98@]DfJC^&GbE^])%J_>1tG_u.IJ`VdaSa8<sWao9H]bQ#fcc2Q#gci;AkdJqVp
+e,IkseH"2"f)aOWrn7b7gt^`AhV[5Ki8N\pirS6&roO7Ekl0fIlKeH9s6TgSrpTmV!:g'Zs7?9_
+rUp3arqH<brqZNho_\@[n,;,BJcC<$bl<1~>
+JcC<$JcCQ+mJd"]r;?<drVHKgq=sp_rV$'[rUg'[q==LSrUB[PrpKgRr9XFKs6BRIs6'IGrT41C
+jQ-=#!TN);i!/)qhVI#Cg]#n:g"=p.f%&=#eC2jndEp5=c3;J:bKJ&Mrl>,\`r<pX`5DSk!PuSN
+^B2-_^&GYG]=PTQ\c9/>\,Ec8[K!W4Zi@?2Z2Lp,YQ(d'XoGL&X8K!tWW/pqVuNXoV>d:jU]7(e
+T`UmZTDkG^Sc>5ZS,\oWRJrTRQiEBNPld26PQ$aFOoLOBO8k7?NW"h9MuJV3M>i>1L\Z]&L%g8M
+KDU8uJbXcnJ,FcdIJ8-]IJnWoJ,=cqJcC?"KDpQ(L&?]*L]3,,M>iD3Mti8-NV&7sO8P+<Oo(=A
+PQ-mGQ2d0MQi<BPR/i]TRgYaWSXuFFTV/!PU8.^`%]-&#Vl6SpWiN2%Xf\b0ricU3ZEpmE['fnA
+!OoT<\c95@]D]DB^&PhF^]2+K_>D+J_u.II`VdaSa8*gTao9H\bQ#fdc2Grfci;Ajd/qbFe,Ihu
+e^i=Nf)aOWrn8=Ggt^`AhV[5Ki8N\Tj5]4^jlY^gkih9qlK[^7liHMArpTmV!:g$Ys766_rUp0`
+s7cEcrqZNhp&"L]nGV,@JcC<$bQ!(~>
+JcC<$JcCQ+mJd"]r;?<drVHKgq=sp_rV$'[rUg'[q==LSrUB[PrpKgRr9XFKs6BRIs6'IGrT41C
+jQ-=#!TN);i!/)qhVI#Cg]#n:g"=p.f%&=#eC2jndEp5=c3;J:bKJ&Mrl>,\`r<pX`5DSk!PuSN
+^B2-_^&GYG]=PTQ\c9/>\,Ec8[K!W4Zi@?2Z2Lp,YQ(d'XoGL&X8K!tWW/pqVuNXoV>d:jU]7(e
+T`UmZTDkG^Sc>5ZS,\oWRJrTRQiEBNPld26PQ$aFOoLOBO8k7?NW"h9MuJV3M>i>1L\Z]&L%g8M
+KDU8uJbXcnJ,FcdIJ8-]IJnWoJ,=cqJcC?"KDpQ(L&?]*L]3,,M>iD3Mti8-NV&7sO8P+<Oo(=A
+PQ-mGQ2d0MQi<BPR/i]TRgYaWSXuFFTV/!PU8.^`%]-&#Vl6SpWiN2%Xf\b0ricU3ZEpmE['fnA
+!OoT<\c95@]D]DB^&PhF^]2+K_>D+J_u.II`VdaSa8*gTao9H\bQ#fdc2Grfci;Ajd/qbFe,Ihu
+e^i=Nf)aOWrn8=Ggt^`AhV[5Ki8N\Tj5]4^jlY^gkih9qlK[^7liHMArpTmV!:g$Ys766_rUp0`
+s7cEcrqZNhp&"L]nGV,@JcC<$bQ!(~>
+JcC<$JcCQ+mJd"]r;?<drVHKgq=sp_rV$'[rUg'[q==LSrUB[PrpKgRr9XFKs6BRIs6'IGrT41C
+jQ-=#!TN);i!/)qhVI#Cg]#n:g"=p.f%&=#eC2jndEp5=c3;J:bKJ&Mrl>,\`r<pX`5DSk!PuSN
+^B2-_^&GYG]=PTQ\c9/>\,Ec8[K!W4Zi@?2Z2Lp,YQ(d'XoGL&X8K!tWW/pqVuNXoV>d:jU]7(e
+T`UmZTDkG^Sc>5ZS,\oWRJrTRQiEBNPld26PQ$aFOoLOBO8k7?NW"h9MuJV3M>i>1L\Z]&L%g8M
+KDU8uJbXcnJ,FcdIJ8-]IJnWoJ,=cqJcC?"KDpQ(L&?]*L]3,,M>iD3Mti8-NV&7sO8P+<Oo(=A
+PQ-mGQ2d0MQi<BPR/i]TRgYaWSXuFFTV/!PU8.^`%]-&#Vl6SpWiN2%Xf\b0ricU3ZEpmE['fnA
+!OoT<\c95@]D]DB^&PhF^]2+K_>D+J_u.II`VdaSa8*gTao9H\bQ#fdc2Grfci;Ajd/qbFe,Ihu
+e^i=Nf)aOWrn8=Ggt^`AhV[5Ki8N\Tj5]4^jlY^gkih9qlK[^7liHMArpTmV!:g$Ys766_rUp0`
+s7cEcrqZNhp&"L]nGV,@JcC<$bQ!(~>
+JcC<$JcCN*mf*(]r;?<drVHKgq"Xg^rV$'[r:KsZq==LSrUB^QrpKdQrTsOLs6BUJs60LGroX7B
+!9F.>&E;[-i8EMMhVI#CgY:H9g"?;U"kM5ReC2kFd07nCcHa\YrlYkqaiMQD`l?!:`5BL0_SO((
+rkANK]tOEX!kZ%Trji'=s0qs8s0_m6rNlO0s0;O,ric@)rN6+$s/Z'ts/H$srMT[ms/#^js.fUg
+rh9@bs.B:^!hGjOrgWqV!1EeQ!gf4=rg!MJ!0dAEs,d;CrK$u=s,Hu9repf6qhb<.rJ1'#kCr;V
+oRm'nrIO]nr."Tml$`JYrI=Zos+10$r.G!%s+UB*s+gT0r/(E1repW3rJg]7kE#A!r/pf<rfd>G
+rK[DKs-N_Ps-WkUrgWqX!1j+\!M?%aTamflUnjiaVPg>jWN)u!XT#=/Y-5(6Z*L[AZa@.>[Kj:O
+\@K/]]"@pR!kl=^rP/BJrk\NLrkn]Qpr30NqoAKQrQ5&]qoeu_s3:Jes3C\lrR(Yn!7Unr!nGlQ
+rmq2'g&B\;gYCT?h;7#Gi8ESQioB([jQ6C'!U&\GklL)8rp0^RmdC)C!q>aMrpp*\s7H9_s7ZKe
+qtU0drVH6bq#'[\gAZ['JcEgkJ,~>
+JcC<$JcCN*mf*(]r;?<drVHKgq"Xg^rV$'[r:KsZq==LSrUB^QrpKdQrTsOLs6BUJs60LGroX7B
+!9F.>&E;[-i8EMMhVI#CgY:H9g"?;U"kM5ReC2kFd07nCcHa\YrlYkqaiMQD`l?!:`5BL0_SO((
+rkANK]tOEX!kZ%Trji'=s0qs8s0_m6rNlO0s0;O,ric@)rN6+$s/Z'ts/H$srMT[ms/#^js.fUg
+rh9@bs.B:^!hGjOrgWqV!1EeQ!gf4=rg!MJ!0dAEs,d;CrK$u=s,Hu9repf6qhb<.rJ1'#kCr;V
+oRm'nrIO]nr."Tml$`JYrI=Zos+10$r.G!%s+UB*s+gT0r/(E1repW3rJg]7kE#A!r/pf<rfd>G
+rK[DKs-N_Ps-WkUrgWqX!1j+\!M?%aTamflUnjiaVPg>jWN)u!XT#=/Y-5(6Z*L[AZa@.>[Kj:O
+\@K/]]"@pR!kl=^rP/BJrk\NLrkn]Qpr30NqoAKQrQ5&]qoeu_s3:Jes3C\lrR(Yn!7Unr!nGlQ
+rmq2'g&B\;gYCT?h;7#Gi8ESQioB([jQ6C'!U&\GklL)8rp0^RmdC)C!q>aMrpp*\s7H9_s7ZKe
+qtU0drVH6bq#'[\gAZ['JcEgkJ,~>
+JcC<$JcCN*mf*(]r;?<drVHKgq"Xg^rV$'[r:KsZq==LSrUB^QrpKdQrTsOLs6BUJs60LGroX7B
+!9F.>&E;[-i8EMMhVI#CgY:H9g"?;U"kM5ReC2kFd07nCcHa\YrlYkqaiMQD`l?!:`5BL0_SO((
+rkANK]tOEX!kZ%Trji'=s0qs8s0_m6rNlO0s0;O,ric@)rN6+$s/Z'ts/H$srMT[ms/#^js.fUg
+rh9@bs.B:^!hGjOrgWqV!1EeQ!gf4=rg!MJ!0dAEs,d;CrK$u=s,Hu9repf6qhb<.rJ1'#kCr;V
+oRm'nrIO]nr."Tml$`JYrI=Zos+10$r.G!%s+UB*s+gT0r/(E1repW3rJg]7kE#A!r/pf<rfd>G
+rK[DKs-N_Ps-WkUrgWqX!1j+\!M?%aTamflUnjiaVPg>jWN)u!XT#=/Y-5(6Z*L[AZa@.>[Kj:O
+\@K/]]"@pR!kl=^rP/BJrk\NLrkn]Qpr30NqoAKQrQ5&]qoeu_s3:Jes3C\lrR(Yn!7Unr!nGlQ
+rmq2'g&B\;gYCT?h;7#Gi8ESQioB([jQ6C'!U&\GklL)8rp0^RmdC)C!q>aMrpp*\s7H9_s7ZKe
+qtU0drVH6bq#'[\gAZ['JcEgkJ,~>
+JcC<$JcCN*mJd"]qu$3crVHHfq=sm^rV$$ZrUg$Zq==LSrp]gRrpKdQrTsRMs6BRIs6'IGroX7B
+!9F.>s5F%;rnn.@hVI#CgtUQ:g"?;U"kM5ReC2kFd0e7HcHa\Ybfe2Pao9?^a2\+t!Q;nT_?.Qh
+_#D(M^:h5Z]E5^V])B2>\,a#:[f<c7[/I?2ZN%3-YlCp,Y5GF%XT,@"WrK'uW;WXoVZ3LlV#R4i
+UAgkdTE(V`T)YA]SGnuZR[KTCR/`KQQMm'MP`q=1P5g[EOSt7?NrP+:N;eb8MY`2.M#2tYLA-E!
+K_L,sK)L8pJGOc`IenQiJGt-!K)C9$K`6]'LB!&/M#<,/MZ/P2N;eh8NqAD'OS"\.P5^[EPl-gH
+QN*<MR/`TSRf8cWS=TYN$_O)bTqS3UUSO]^VZ*J'W2ZesX/rG*Y-+t4Yd(M5ZNdeE[^NZS\Gj#?
+]">TR]E5d\^AYhH_#M7K_Z.OQ`;.CM`r*mOaSa0Yb50<\bl>rccMu5id/MGmdf7eqeGn&!f)F;$
+fDsV(gAfn-h#?+1hV\=j!TE&;irS6&roO7Ekl0fOlKdd&m-X3.rpTmV!:g$Y!qZ'VrUp3arqH?c
+rqZNhp\Xdao)72>JcC<$a8^Y~>
+JcC<$JcCN*mJd"]qu$3crVHHfq=sm^rV$$ZrUg$Zq==LSrp]gRrpKdQrTsRMs6BRIs6'IGroX7B
+!9F.>s5F%;rnn.@hVI#CgtUQ:g"?;U"kM5ReC2kFd0e7HcHa\Ybfe2Pao9?^a2\+t!Q;nT_?.Qh
+_#D(M^:h5Z]E5^V])B2>\,a#:[f<c7[/I?2ZN%3-YlCp,Y5GF%XT,@"WrK'uW;WXoVZ3LlV#R4i
+UAgkdTE(V`T)YA]SGnuZR[KTCR/`KQQMm'MP`q=1P5g[EOSt7?NrP+:N;eb8MY`2.M#2tYLA-E!
+K_L,sK)L8pJGOc`IenQiJGt-!K)C9$K`6]'LB!&/M#<,/MZ/P2N;eh8NqAD'OS"\.P5^[EPl-gH
+QN*<MR/`TSRf8cWS=TYN$_O)bTqS3UUSO]^VZ*J'W2ZesX/rG*Y-+t4Yd(M5ZNdeE[^NZS\Gj#?
+]">TR]E5d\^AYhH_#M7K_Z.OQ`;.CM`r*mOaSa0Yb50<\bl>rccMu5id/MGmdf7eqeGn&!f)F;$
+fDsV(gAfn-h#?+1hV\=j!TE&;irS6&roO7Ekl0fOlKdd&m-X3.rpTmV!:g$Y!qZ'VrUp3arqH?c
+rqZNhp\Xdao)72>JcC<$a8^Y~>
+JcC<$JcCN*mJd"]qu$3crVHHfq=sm^rV$$ZrUg$Zq==LSrp]gRrpKdQrTsRMs6BRIs6'IGroX7B
+!9F.>s5F%;rnn.@hVI#CgtUQ:g"?;U"kM5ReC2kFd0e7HcHa\Ybfe2Pao9?^a2\+t!Q;nT_?.Qh
+_#D(M^:h5Z]E5^V])B2>\,a#:[f<c7[/I?2ZN%3-YlCp,Y5GF%XT,@"WrK'uW;WXoVZ3LlV#R4i
+UAgkdTE(V`T)YA]SGnuZR[KTCR/`KQQMm'MP`q=1P5g[EOSt7?NrP+:N;eb8MY`2.M#2tYLA-E!
+K_L,sK)L8pJGOc`IenQiJGt-!K)C9$K`6]'LB!&/M#<,/MZ/P2N;eh8NqAD'OS"\.P5^[EPl-gH
+QN*<MR/`TSRf8cWS=TYN$_O)bTqS3UUSO]^VZ*J'W2ZesX/rG*Y-+t4Yd(M5ZNdeE[^NZS\Gj#?
+]">TR]E5d\^AYhH_#M7K_Z.OQ`;.CM`r*mOaSa0Yb50<\bl>rccMu5id/MGmdf7eqeGn&!f)F;$
+fDsV(gAfn-h#?+1hV\=j!TE&;irS6&roO7Ekl0fOlKdd&m-X3.rpTmV!:g$Y!qZ'VrUp3arqH?c
+rqZNhp\Xdao)72>JcC<$a8^Y~>
+JcC<$JcCK)mJct\r;?<dr;-Bfq"Xd]rV$$Zr:KsZq""FSrUBaRrpKgRr9XILs6BUJs60LGroOII
+jQ,@]io8qrhuV`lrnSsWgY1B7f\"g-f%&:"e'lamdEp4bcHXVXbKJ&MaiMQD`l?!:`5KRm_?.Qh
+_#D(M^:h5Z]`5VD])K8?\Gs&:[f3]7[/I?1ZN%3.Yl:j+Y5PL&XT,@"WrK'uW;WXoV?!IkU]R<c
+UAgkdT`:Y`ScYIQSGo#XRK/cTR/`NQQN!0LPQ6pGP5g[EOSt7?NrG%9N;eb7MYN&)M!ToVLAZc'
+K_U2tK)C2lJF\3`JGk&uK):3#K`6]'LB!&/M#<,0MZ/P3N;eh8Nqnb5OS=n#P5CIAPl$aGQN!6L
+R/`QSRf/]\S=Q4BStDXJrh0@eU].%mV5C/gW2]cr"fn`,Xfel,YQ_;;Za7$HrjDj:\Gj#?]">TR
+]E5d\^AbnI_#M7L_Z%IQ`;7IO`r3sOaSa0Xb5'6[bl5lacMu5jd/;8mdaQ\DeGn&!f)F;$fDsV(
+gAfn-h#?+1hV\=j!TE&;isb#1jlY^gkNM0plK[^7liQSBmf)YVnF?&Jo)J=]o_nI_pAambq#:*f
+qY0m`r:Ks=rdk*#s2=qf~>
+JcC<$JcCK)mJct\r;?<dr;-Bfq"Xd]rV$$Zr:KsZq""FSrUBaRrpKgRr9XILs6BUJs60LGroOII
+jQ,@]io8qrhuV`lrnSsWgY1B7f\"g-f%&:"e'lamdEp4bcHXVXbKJ&MaiMQD`l?!:`5KRm_?.Qh
+_#D(M^:h5Z]`5VD])K8?\Gs&:[f3]7[/I?1ZN%3.Yl:j+Y5PL&XT,@"WrK'uW;WXoV?!IkU]R<c
+UAgkdT`:Y`ScYIQSGo#XRK/cTR/`NQQN!0LPQ6pGP5g[EOSt7?NrG%9N;eb7MYN&)M!ToVLAZc'
+K_U2tK)C2lJF\3`JGk&uK):3#K`6]'LB!&/M#<,0MZ/P3N;eh8Nqnb5OS=n#P5CIAPl$aGQN!6L
+R/`QSRf/]\S=Q4BStDXJrh0@eU].%mV5C/gW2]cr"fn`,Xfel,YQ_;;Za7$HrjDj:\Gj#?]">TR
+]E5d\^AbnI_#M7L_Z%IQ`;7IO`r3sOaSa0Xb5'6[bl5lacMu5jd/;8mdaQ\DeGn&!f)F;$fDsV(
+gAfn-h#?+1hV\=j!TE&;isb#1jlY^gkNM0plK[^7liQSBmf)YVnF?&Jo)J=]o_nI_pAambq#:*f
+qY0m`r:Ks=rdk*#s2=qf~>
+JcC<$JcCK)mJct\r;?<dr;-Bfq"Xd]rV$$Zr:KsZq""FSrUBaRrpKgRr9XILs6BUJs60LGroOII
+jQ,@]io8qrhuV`lrnSsWgY1B7f\"g-f%&:"e'lamdEp4bcHXVXbKJ&MaiMQD`l?!:`5KRm_?.Qh
+_#D(M^:h5Z]`5VD])K8?\Gs&:[f3]7[/I?1ZN%3.Yl:j+Y5PL&XT,@"WrK'uW;WXoV?!IkU]R<c
+UAgkdT`:Y`ScYIQSGo#XRK/cTR/`NQQN!0LPQ6pGP5g[EOSt7?NrG%9N;eb7MYN&)M!ToVLAZc'
+K_U2tK)C2lJF\3`JGk&uK):3#K`6]'LB!&/M#<,0MZ/P3N;eh8Nqnb5OS=n#P5CIAPl$aGQN!6L
+R/`QSRf/]\S=Q4BStDXJrh0@eU].%mV5C/gW2]cr"fn`,Xfel,YQ_;;Za7$HrjDj:\Gj#?]">TR
+]E5d\^AbnI_#M7L_Z%IQ`;7IO`r3sOaSa0Xb5'6[bl5lacMu5jd/;8mdaQ\DeGn&!f)F;$fDsV(
+gAfn-h#?+1hV\=j!TE&;isb#1jlY^gkNM0plK[^7liQSBmf)YVnF?&Jo)J=]o_nI_pAambq#:*f
+qY0m`r:Ks=rdk*#s2=qf~>
+JcC<$JcCH(mJct\qu$3cr;-Bfq"Xd]r:]pYr:KsZq==LSrp]gRs6fpSr9XIL!:'OI!pJh1roX7B
+!9F.>!TN);huV`lrnRq:gY1B7g"=p.f%'cL"k1oIdEp5=c2l26rlY>bao9?^a2\+t!lW!ork\`Q
+^qfra!ku@]rO`3D]"7jNs1&*<r3lX5s0V^1s0D[0r364)s/u=&s/c7$rMomss/>mo!iDfjrhTRh
+s.]Lds.B@args.\!1a"W!h,OFrg<_P!1*SK!gJn4rK@2Cs,d2?rf7#<qi(K3rJL0&iJ@2_onNF!
+r.Oitr.=fsk^`S^rIXp!re1<*r.b3+s+pT0s,-i7qi(Q7rf6i9rK-o=l&t_'qipoArg*PMrL!VQ
+s-inU!h>gPrgk.&TV/!PU8+KZUnsrcVl-JmWiE,$XKAV-YHY79ZMq0<['d?N\$rlX\[oAark&<G
+^:sT]s1nZNrkeZPs2=iSrPniWpW39Sqo\]WrQP5bqp,2es3U\ks3gqrrm^tus472$s4@>)rn7G.
+gt_nb!T)`5i!86#ioB([jQ6C'!U&\Gkm-M>lg4!*mI'uBs6p$YrUL$]o^r+Ts7ZKeqtU0drqcEe
+qY^$beGb%!JcEXfJ,~>
+JcC<$JcCH(mJct\qu$3cr;-Bfq"Xd]r:]pYr:KsZq==LSrp]gRs6fpSr9XIL!:'OI!pJh1roX7B
+!9F.>!TN);huV`lrnRq:gY1B7g"=p.f%'cL"k1oIdEp5=c2l26rlY>bao9?^a2\+t!lW!ork\`Q
+^qfra!ku@]rO`3D]"7jNs1&*<r3lX5s0V^1s0D[0r364)s/u=&s/c7$rMomss/>mo!iDfjrhTRh
+s.]Lds.B@args.\!1a"W!h,OFrg<_P!1*SK!gJn4rK@2Cs,d2?rf7#<qi(K3rJL0&iJ@2_onNF!
+r.Oitr.=fsk^`S^rIXp!re1<*r.b3+s+pT0s,-i7qi(Q7rf6i9rK-o=l&t_'qipoArg*PMrL!VQ
+s-inU!h>gPrgk.&TV/!PU8+KZUnsrcVl-JmWiE,$XKAV-YHY79ZMq0<['d?N\$rlX\[oAark&<G
+^:sT]s1nZNrkeZPs2=iSrPniWpW39Sqo\]WrQP5bqp,2es3U\ks3gqrrm^tus472$s4@>)rn7G.
+gt_nb!T)`5i!86#ioB([jQ6C'!U&\Gkm-M>lg4!*mI'uBs6p$YrUL$]o^r+Ts7ZKeqtU0drqcEe
+qY^$beGb%!JcEXfJ,~>
+JcC<$JcCH(mJct\qu$3cr;-Bfq"Xd]r:]pYr:KsZq==LSrp]gRs6fpSr9XIL!:'OI!pJh1roX7B
+!9F.>!TN);huV`lrnRq:gY1B7g"=p.f%'cL"k1oIdEp5=c2l26rlY>bao9?^a2\+t!lW!ork\`Q
+^qfra!ku@]rO`3D]"7jNs1&*<r3lX5s0V^1s0D[0r364)s/u=&s/c7$rMomss/>mo!iDfjrhTRh
+s.]Lds.B@args.\!1a"W!h,OFrg<_P!1*SK!gJn4rK@2Cs,d2?rf7#<qi(K3rJL0&iJ@2_onNF!
+r.Oitr.=fsk^`S^rIXp!re1<*r.b3+s+pT0s,-i7qi(Q7rf6i9rK-o=l&t_'qipoArg*PMrL!VQ
+s-inU!h>gPrgk.&TV/!PU8+KZUnsrcVl-JmWiE,$XKAV-YHY79ZMq0<['d?N\$rlX\[oAark&<G
+^:sT]s1nZNrkeZPs2=iSrPniWpW39Sqo\]WrQP5bqp,2es3U\ks3gqrrm^tus472$s4@>)rn7G.
+gt_nb!T)`5i!86#ioB([jQ6C'!U&\Gkm-M>lg4!*mI'uBs6p$YrUL$]o^r+Ts7ZKeqtU0drqcEe
+qY^$beGb%!JcEXfJ,~>
+JcC<$JcCE'm/Hn\qu$3cr;-?ep\=^]r:]mXr:KsZq==OTrp]jSrpKgRrTsRMs6BUJs6'IGroX7B
+!9F.>!TN);huV`lrnRV1g]#n1g"=p.f%'cL$IdGNdEp7dcHa\YrlY>bao9?da2Z-<`Pf^4rke]O
+s1nWKs1SKHrOi0Bs180>s1&*<r3lX5rj;X1rj)R/rNQ=*riZ4%s/c7$ri6!ts/>pps/,gmrhTRh
+!2BIds.B@arLO(]S=KSJ!h,OFrg<_Ps-EYLs-3PIrK@2Cs,d/>rf6u;qMb?1qMNj\q2"p'pkJa$
+r.OitqL\*cqh"Wrre19)r.b6,reUN0reg`6r/CZ8rf6l:rfI)@p6,-5n!*I0rKdGLr0[JOs-inU
+!h>gPrgj1`TV2:X!MZ@gU^ErqVl-JlWN)u!XT#=3Y-5(6Z*L^B['[6L[^WdG\Hf^X]=bei]tXK\
+s1eWNrPJTPs2=iSrl4rXqT/TVr6"]Ur65,aqTf)ds3U\krmLhqrR:o!f%0fO!nc2Zrn7G.gt_nb
+!T)`5i;_a9ir7s=jQ6C'#Nt=7l07Kuli-5PmI'EAmfN"Knc&+Zo)SF]p&Fabp\agcq>U6cqtp<b
+rRCgts+13cs*t~>
+JcC<$JcCE'm/Hn\qu$3cr;-?ep\=^]r:]mXr:KsZq==OTrp]jSrpKgRrTsRMs6BUJs6'IGroX7B
+!9F.>!TN);huV`lrnRV1g]#n1g"=p.f%'cL$IdGNdEp7dcHa\YrlY>bao9?da2Z-<`Pf^4rke]O
+s1nWKs1SKHrOi0Bs180>s1&*<r3lX5rj;X1rj)R/rNQ=*riZ4%s/c7$ri6!ts/>pps/,gmrhTRh
+!2BIds.B@arLO(]S=KSJ!h,OFrg<_Ps-EYLs-3PIrK@2Cs,d/>rf6u;qMb?1qMNj\q2"p'pkJa$
+r.OitqL\*cqh"Wrre19)r.b6,reUN0reg`6r/CZ8rf6l:rfI)@p6,-5n!*I0rKdGLr0[JOs-inU
+!h>gPrgj1`TV2:X!MZ@gU^ErqVl-JlWN)u!XT#=3Y-5(6Z*L^B['[6L[^WdG\Hf^X]=bei]tXK\
+s1eWNrPJTPs2=iSrl4rXqT/TVr6"]Ur65,aqTf)ds3U\krmLhqrR:o!f%0fO!nc2Zrn7G.gt_nb
+!T)`5i;_a9ir7s=jQ6C'#Nt=7l07Kuli-5PmI'EAmfN"Knc&+Zo)SF]p&Fabp\agcq>U6cqtp<b
+rRCgts+13cs*t~>
+JcC<$JcCE'm/Hn\qu$3cr;-?ep\=^]r:]mXr:KsZq==OTrp]jSrpKgRrTsRMs6BUJs6'IGroX7B
+!9F.>!TN);huV`lrnRV1g]#n1g"=p.f%'cL$IdGNdEp7dcHa\YrlY>bao9?da2Z-<`Pf^4rke]O
+s1nWKs1SKHrOi0Bs180>s1&*<r3lX5rj;X1rj)R/rNQ=*riZ4%s/c7$ri6!ts/>pps/,gmrhTRh
+!2BIds.B@arLO(]S=KSJ!h,OFrg<_Ps-EYLs-3PIrK@2Cs,d/>rf6u;qMb?1qMNj\q2"p'pkJa$
+r.OitqL\*cqh"Wrre19)r.b6,reUN0reg`6r/CZ8rf6l:rfI)@p6,-5n!*I0rKdGLr0[JOs-inU
+!h>gPrgj1`TV2:X!MZ@gU^ErqVl-JlWN)u!XT#=3Y-5(6Z*L^B['[6L[^WdG\Hf^X]=bei]tXK\
+s1eWNrPJTPs2=iSrl4rXqT/TVr6"]Ur65,aqTf)ds3U\krmLhqrR:o!f%0fO!nc2Zrn7G.gt_nb
+!T)`5i;_a9ir7s=jQ6C'#Nt=7l07Kuli-5PmI'EAmfN"Knc&+Zo)SF]p&Fabp\agcq>U6cqtp<b
+rRCgts+13cs*t~>
+JcC<$JcCB&m/Hn\qu$0br;-?ep\=[\r:]mXr:KsZqXXXUrp]jSrpKgRrTjUOlK\?4!pJh1roO7C
+jSn0Iio/kSi8<DJh;-l@rn7_4f[na+e^`1!e'e6C$dd5FcHXVXbKJ&Nao9?^a2\+ts24oTrke]O
+s1nWKs1\NHrOi0Bs180>rj`!;r3lX5s0V^1s0D[0r364)s/u=&s/c7$ri6!ts/>pps/#dmrM0Li
+U8%X\!hc0Xrgs.\!1a%Xs-itUrg<_P!1*SKs-3PIrK@2CrfI&=rf6r:pPem*iem5^r.t9+pkJa$
+r.O]pnq-RfrIk0(qhG-+reUN0reg`6r/CZ8rf6o;rfI,Aq3(W=q39s*qj.2Iqj@ANs-inUs.'+[
+rgs.^!20=b$_jDkUnjiaVPg>jWW&n$X/rG*Y-7i/"gPA>Za@.>[Ka4N\[f;_]DfGD]tXK\s1eWN
+rPAWR`5MSms2P&YqoJ`Xr6"`Vqonu_q9Jrbrm:Sjs3gnqrRCkts472$s4IA)rn7G.gt_nb#N"@q
+i8ESQir7sCjQ5Lck3(pkrojIKli-8Nm/ZSRn,MkWnc&+ZoDeI]p&Facp\agcq>U6cqtp<drR:as
+s+13as*t~>
+JcC<$JcCB&m/Hn\qu$0br;-?ep\=[\r:]mXr:KsZqXXXUrp]jSrpKgRrTjUOlK\?4!pJh1roO7C
+jSn0Iio/kSi8<DJh;-l@rn7_4f[na+e^`1!e'e6C$dd5FcHXVXbKJ&Nao9?^a2\+ts24oTrke]O
+s1nWKs1\NHrOi0Bs180>rj`!;r3lX5s0V^1s0D[0r364)s/u=&s/c7$ri6!ts/>pps/#dmrM0Li
+U8%X\!hc0Xrgs.\!1a%Xs-itUrg<_P!1*SKs-3PIrK@2CrfI&=rf6r:pPem*iem5^r.t9+pkJa$
+r.O]pnq-RfrIk0(qhG-+reUN0reg`6r/CZ8rf6o;rfI,Aq3(W=q39s*qj.2Iqj@ANs-inUs.'+[
+rgs.^!20=b$_jDkUnjiaVPg>jWW&n$X/rG*Y-7i/"gPA>Za@.>[Ka4N\[f;_]DfGD]tXK\s1eWN
+rPAWR`5MSms2P&YqoJ`Xr6"`Vqonu_q9Jrbrm:Sjs3gnqrRCkts472$s4IA)rn7G.gt_nb#N"@q
+i8ESQir7sCjQ5Lck3(pkrojIKli-8Nm/ZSRn,MkWnc&+ZoDeI]p&Facp\agcq>U6cqtp<drR:as
+s+13as*t~>
+JcC<$JcCB&m/Hn\qu$0br;-?ep\=[\r:]mXr:KsZqXXXUrp]jSrpKgRrTjUOlK\?4!pJh1roO7C
+jSn0Iio/kSi8<DJh;-l@rn7_4f[na+e^`1!e'e6C$dd5FcHXVXbKJ&Nao9?^a2\+ts24oTrke]O
+s1nWKs1\NHrOi0Bs180>rj`!;r3lX5s0V^1s0D[0r364)s/u=&s/c7$ri6!ts/>pps/#dmrM0Li
+U8%X\!hc0Xrgs.\!1a%Xs-itUrg<_P!1*SKs-3PIrK@2CrfI&=rf6r:pPem*iem5^r.t9+pkJa$
+r.O]pnq-RfrIk0(qhG-+reUN0reg`6r/CZ8rf6o;rfI,Aq3(W=q39s*qj.2Iqj@ANs-inUs.'+[
+rgs.^!20=b$_jDkUnjiaVPg>jWW&n$X/rG*Y-7i/"gPA>Za@.>[Ka4N\[f;_]DfGD]tXK\s1eWN
+rPAWR`5MSms2P&YqoJ`Xr6"`Vqonu_q9Jrbrm:Sjs3gnqrRCkts472$s4IA)rn7G.gt_nb#N"@q
+i8ESQir7sCjQ5Lck3(pkrojIKli-8Nm/ZSRn,MkWnc&+ZoDeI]p&Facp\agcq>U6cqtp<drR:as
+s+13as*t~>
+JcC<$JcC?%m/Hk[qu$0br;-?epA"R[r:]mXr:KsZqssaVrp]jSs6fpSrTsRMs6BUJ!pJh1roOdR
+jQ,@]io/kSi8<DJh;-l@rn7D+f`'J0f%&:"e'c[ldEp5=c2l26rlYPhaiVWFa2c4!`W*jV_u7FR
+_8*kb^]2%J^&>VD]DoJ?\c92>\,<]7[JmQ3Zi791Z2Lp,YQ(d(XoGI&X8T'uW;rmqVZN`lV>d7l
+US=L^U&UbcTDkG^SH,2YRf]%HRJrTRQiEBMQ2d*KPPp[DOoCI>O8Y+:NT5ubMu&>)M>`8.L\Z]&
+L&6PeKD^E$L&6W(L]<2.M>iD4MuAV6NW5%:O8b7?Oo(=?PPg[5Q11+9QhZsIRJrZQS,]#YSc55\
+T)bP`U&UheU].%iV5F6i-`F#EWiN2%Xf\b0YctC;ZEpmE[C3NQ\%&uZ]">Se]Y2%n^V@S"_>V4P
+_o0Ll`W*sXa8<sWao0BWbPTN\c1]H]ci2;gdJhSne,@erec45!fDjJ'g&9V+gYCT`h$;fohr*GO
+iSsjs#NY".k2tjikl0fJlKdd8liHMArpTmVs7-*Zs766_rUp3arqHBdrqZQiq"t!eq#/_AJcC<$
+]DmB~>
+JcC<$JcC?%m/Hk[qu$0br;-?epA"R[r:]mXr:KsZqssaVrp]jSs6fpSrTsRMs6BUJ!pJh1roOdR
+jQ,@]io/kSi8<DJh;-l@rn7D+f`'J0f%&:"e'c[ldEp5=c2l26rlYPhaiVWFa2c4!`W*jV_u7FR
+_8*kb^]2%J^&>VD]DoJ?\c92>\,<]7[JmQ3Zi791Z2Lp,YQ(d(XoGI&X8T'uW;rmqVZN`lV>d7l
+US=L^U&UbcTDkG^SH,2YRf]%HRJrTRQiEBMQ2d*KPPp[DOoCI>O8Y+:NT5ubMu&>)M>`8.L\Z]&
+L&6PeKD^E$L&6W(L]<2.M>iD4MuAV6NW5%:O8b7?Oo(=?PPg[5Q11+9QhZsIRJrZQS,]#YSc55\
+T)bP`U&UheU].%iV5F6i-`F#EWiN2%Xf\b0YctC;ZEpmE[C3NQ\%&uZ]">Se]Y2%n^V@S"_>V4P
+_o0Ll`W*sXa8<sWao0BWbPTN\c1]H]ci2;gdJhSne,@erec45!fDjJ'g&9V+gYCT`h$;fohr*GO
+iSsjs#NY".k2tjikl0fJlKdd8liHMArpTmVs7-*Zs766_rUp3arqHBdrqZQiq"t!eq#/_AJcC<$
+]DmB~>
+JcC<$JcC?%m/Hk[qu$0br;-?epA"R[r:]mXr:KsZqssaVrp]jSs6fpSrTsRMs6BUJ!pJh1roOdR
+jQ,@]io/kSi8<DJh;-l@rn7D+f`'J0f%&:"e'c[ldEp5=c2l26rlYPhaiVWFa2c4!`W*jV_u7FR
+_8*kb^]2%J^&>VD]DoJ?\c92>\,<]7[JmQ3Zi791Z2Lp,YQ(d(XoGI&X8T'uW;rmqVZN`lV>d7l
+US=L^U&UbcTDkG^SH,2YRf]%HRJrTRQiEBMQ2d*KPPp[DOoCI>O8Y+:NT5ubMu&>)M>`8.L\Z]&
+L&6PeKD^E$L&6W(L]<2.M>iD4MuAV6NW5%:O8b7?Oo(=?PPg[5Q11+9QhZsIRJrZQS,]#YSc55\
+T)bP`U&UheU].%iV5F6i-`F#EWiN2%Xf\b0YctC;ZEpmE[C3NQ\%&uZ]">Se]Y2%n^V@S"_>V4P
+_o0Ll`W*sXa8<sWao0BWbPTN\c1]H]ci2;gdJhSne,@erec45!fDjJ'g&9V+gYCT`h$;fohr*GO
+iSsjs#NY".k2tjikl0fJlKdd8liHMArpTmVs7-*Zs766_rUp3arqHBdrqZQiq"t!eq#/_AJcC<$
+]DmB~>
+JcC<$JcC<$m/Hk[qu$0bqtg6dpA"R[qtBdWrUg'[qssaVrp]jSs6fpSrp9[Ns6BUJs6'IGroOsW
+jQ,@]io8qTi8<GKh;-l@gY1B7f`'J;f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!lr=#rl+oU!5ncP
+s1n]NrP/BHs1S?Cs1A<Br42g:s0qp7s0_m6r3QF/s0;O,s0)I*rN6+$!3?'u!i`,srhodn!2][j
+s.]RgrLj:cT:c+S!hGjOrgWqV!1EeQs-NbOrK[DIs-*ADrfR2Aq2bE5pPmjbqMY9/pkes*rJ1-%
+qM"?jqh=j#reLK/r/(H2rep`6s,I#<r/^l>rfR,Arfd;FpQbN>n!EO2rL*YRqj[VUs.0+[s.9:a
+rh9@d!2KOh$`0_tVl-JmWN)u!XT#=*Y-5(6Z*OA8"gk\G[^WdG\H0:Rrk&9F^AbkK^qmkd_?.Wn
+`;[aU`rF*WaSs<\b5'6Ybl#`XcMZ#ed/)/hdf._neGn)!f)=5#f`0Y(gAfn-h#6%6hV[5Ki8NYS
+ro=%>!9O4B!U&\Gl2U#Kli-5PmI'EAmfN"Knc&+ZoDeI]p&Facp\agcq>U6dqu$BfrRUt!s+13Z
+s*t~>
+JcC<$JcC<$m/Hk[qu$0bqtg6dpA"R[qtBdWrUg'[qssaVrp]jSs6fpSrp9[Ns6BUJs6'IGroOsW
+jQ,@]io8qTi8<GKh;-l@gY1B7f`'J;f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!lr=#rl+oU!5ncP
+s1n]NrP/BHs1S?Cs1A<Br42g:s0qp7s0_m6r3QF/s0;O,s0)I*rN6+$!3?'u!i`,srhodn!2][j
+s.]RgrLj:cT:c+S!hGjOrgWqV!1EeQs-NbOrK[DIs-*ADrfR2Aq2bE5pPmjbqMY9/pkes*rJ1-%
+qM"?jqh=j#reLK/r/(H2rep`6s,I#<r/^l>rfR,Arfd;FpQbN>n!EO2rL*YRqj[VUs.0+[s.9:a
+rh9@d!2KOh$`0_tVl-JmWN)u!XT#=*Y-5(6Z*OA8"gk\G[^WdG\H0:Rrk&9F^AbkK^qmkd_?.Wn
+`;[aU`rF*WaSs<\b5'6Ybl#`XcMZ#ed/)/hdf._neGn)!f)=5#f`0Y(gAfn-h#6%6hV[5Ki8NYS
+ro=%>!9O4B!U&\Gl2U#Kli-5PmI'EAmfN"Knc&+ZoDeI]p&Facp\agcq>U6dqu$BfrRUt!s+13Z
+s*t~>
+JcC<$JcC<$m/Hk[qu$0bqtg6dpA"R[qtBdWrUg'[qssaVrp]jSs6fpSrp9[Ns6BUJs6'IGroOsW
+jQ,@]io8qTi8<GKh;-l@gY1B7f`'J;f%&:"e'lamdEp4ccHa\Zbfe2Pb/sY(!lr=#rl+oU!5ncP
+s1n]NrP/BHs1S?Cs1A<Br42g:s0qp7s0_m6r3QF/s0;O,s0)I*rN6+$!3?'u!i`,srhodn!2][j
+s.]RgrLj:cT:c+S!hGjOrgWqV!1EeQs-NbOrK[DIs-*ADrfR2Aq2bE5pPmjbqMY9/pkes*rJ1-%
+qM"?jqh=j#reLK/r/(H2rep`6s,I#<r/^l>rfR,Arfd;FpQbN>n!EO2rL*YRqj[VUs.0+[s.9:a
+rh9@d!2KOh$`0_tVl-JmWN)u!XT#=*Y-5(6Z*OA8"gk\G[^WdG\H0:Rrk&9F^AbkK^qmkd_?.Wn
+`;[aU`rF*WaSs<\b5'6Ybl#`XcMZ#ed/)/hdf._neGn)!f)=5#f`0Y(gAfn-h#6%6hV[5Ki8NYS
+ro=%>!9O4B!U&\Gl2U#Kli-5PmI'EAmfN"Knc&+ZoDeI]p&Facp\agcq>U6dqu$BfrRUt!s+13Z
+s*t~>
+JcC<$JcC<$!<;EbqYg<hp&"X_r;$$\r:g*^p\"LWrq$!Ws7-*XrU9dSs6]dOs6B[MrosIH!9a@D
+($4N;j5].YiS`YOhqm2FgtUT;g=b-Xf)aIQrmUttdf.Vpd*M^:!R8jfb6#i.ao9?_a2Z-u`W*jV
+_u7IP_>h=L^]2%J^&5PC]DfD>\c92=\,Ec7[K!W4Zi@?2Z2Lp,YQ(d)XoGL&X8].!W;rmqVZN`l
+V>d7lUS=L^T`UmZTDkG^SH,2YRf]%HRJiNQQiEBMQ2d*JPPgUBOo:C6O6DVnNV&2.Mu8J.M>`8.
+L\$8nL%U3!L]3,-M>iD4Mu8P6NW+t:O8b7@Oo1CAPQ$gBQ2R$FQf=D/RJiTNS,SrXSc,/[TDtS_
+Ta.<eUSO]^V5F6i!N<!sWZnLFXf\b0YHY79ZEpmE[C*HO\%&uZ]">Se]Y2%n^V@S"_>_:Q_o0Lm
+`W*sXa8O*YaoBN[bPo``c1TBZchl)adJhSne,.Ypec45!fDjM'g&9Y)gAp%-h#cHjhu;O=iSrkW
+j5f:_roO:Fkii$1!UB"Mm/QGQmf)\Tn,W"Wo)J:]o_nI_pAambq#:*gqYC$dr;$<Drdk*#s0VfV~>
+JcC<$JcC<$!<;EbqYg<hp&"X_r;$$\r:g*^p\"LWrq$!Ws7-*XrU9dSs6]dOs6B[MrosIH!9a@D
+($4N;j5].YiS`YOhqm2FgtUT;g=b-Xf)aIQrmUttdf.Vpd*M^:!R8jfb6#i.ao9?_a2Z-u`W*jV
+_u7IP_>h=L^]2%J^&5PC]DfD>\c92=\,Ec7[K!W4Zi@?2Z2Lp,YQ(d)XoGL&X8].!W;rmqVZN`l
+V>d7lUS=L^T`UmZTDkG^SH,2YRf]%HRJiNQQiEBMQ2d*JPPgUBOo:C6O6DVnNV&2.Mu8J.M>`8.
+L\$8nL%U3!L]3,-M>iD4Mu8P6NW+t:O8b7@Oo1CAPQ$gBQ2R$FQf=D/RJiTNS,SrXSc,/[TDtS_
+Ta.<eUSO]^V5F6i!N<!sWZnLFXf\b0YHY79ZEpmE[C*HO\%&uZ]">Se]Y2%n^V@S"_>_:Q_o0Lm
+`W*sXa8O*YaoBN[bPo``c1TBZchl)adJhSne,.Ypec45!fDjM'g&9Y)gAp%-h#cHjhu;O=iSrkW
+j5f:_roO:Fkii$1!UB"Mm/QGQmf)\Tn,W"Wo)J:]o_nI_pAambq#:*gqYC$dr;$<Drdk*#s0VfV~>
+JcC<$JcC<$!<;EbqYg<hp&"X_r;$$\r:g*^p\"LWrq$!Ws7-*XrU9dSs6]dOs6B[MrosIH!9a@D
+($4N;j5].YiS`YOhqm2FgtUT;g=b-Xf)aIQrmUttdf.Vpd*M^:!R8jfb6#i.ao9?_a2Z-u`W*jV
+_u7IP_>h=L^]2%J^&5PC]DfD>\c92=\,Ec7[K!W4Zi@?2Z2Lp,YQ(d)XoGL&X8].!W;rmqVZN`l
+V>d7lUS=L^T`UmZTDkG^SH,2YRf]%HRJiNQQiEBMQ2d*JPPgUBOo:C6O6DVnNV&2.Mu8J.M>`8.
+L\$8nL%U3!L]3,-M>iD4Mu8P6NW+t:O8b7@Oo1CAPQ$gBQ2R$FQf=D/RJiTNS,SrXSc,/[TDtS_
+Ta.<eUSO]^V5F6i!N<!sWZnLFXf\b0YHY79ZEpmE[C*HO\%&uZ]">Se]Y2%n^V@S"_>_:Q_o0Lm
+`W*sXa8O*YaoBN[bPo``c1TBZchl)adJhSne,.Ypec45!fDjM'g&9Y)gAp%-h#cHjhu;O=iSrkW
+j5f:_roO:Fkii$1!UB"Mm/QGQmf)\Tn,W"Wo)J:]o_nI_pAambq#:*gqYC$dr;$<Drdk*#s0VfV~>
+JcC<$JcC<$s8VHbqYg9gp&"X_qt]p[r:g*^q"=UXrq$$Xrpg$Xr9s[Rs6]gPs6B[MrosIH!9a@D
+s5aFFj5].YiVqaGhqm2Fgt^Z<g=b-2f@SU(rmUttdf.Vpd*M^:!mSs5rlYAcaiXP'!lr=#rl+oU
+s24fPs2"`NrP/BHrk86Bs1A9Ar42j;s0qp7s0_m6rNlO0s0;O,s0)I*riQ4%s/Z.!!i`,srhodn
+!2][js.]Rgrh9@b!2'4]!hGjOrgWqVs-`hQs-NbOr0@;Hrfd2Ar/pl<fT5ffqi1B0rJUT2q2,$*
+qhOEjr.k9-qMG3/s,6f6s,I#<rK$u?rfR/Brfd>Gqj%,GrKm,Cm@!^;pRD/PrgitYs.B=arLj:e
+USIga&>c8$Vl-JlWN)u!X/rG*Y-7i/"gPA>Za@.>[KX.M\[f;`rk&9F^AbkJ^qp#es2+iTrl+oW
+s2Y)Zs2k;`r6,&_rQY)^qp5/dp<iierR:Ynrmh&"r7Cu$s4RD*s4dS/rn[V2!8me6s5<t;ro=%>
+!9O4B!pAe2roj[Qlg*p(mHs?@n,MnWnc&+ZoDeI^p&Fabp\jmdq>U6dqu$BgrRq1$s+13Ts*t~>
+JcC<$JcC<$s8VHbqYg9gp&"X_qt]p[r:g*^q"=UXrq$$Xrpg$Xr9s[Rs6]gPs6B[MrosIH!9a@D
+s5aFFj5].YiVqaGhqm2Fgt^Z<g=b-2f@SU(rmUttdf.Vpd*M^:!mSs5rlYAcaiXP'!lr=#rl+oU
+s24fPs2"`NrP/BHrk86Bs1A9Ar42j;s0qp7s0_m6rNlO0s0;O,s0)I*riQ4%s/Z.!!i`,srhodn
+!2][js.]Rgrh9@b!2'4]!hGjOrgWqVs-`hQs-NbOr0@;Hrfd2Ar/pl<fT5ffqi1B0rJUT2q2,$*
+qhOEjr.k9-qMG3/s,6f6s,I#<rK$u?rfR/Brfd>Gqj%,GrKm,Cm@!^;pRD/PrgitYs.B=arLj:e
+USIga&>c8$Vl-JlWN)u!X/rG*Y-7i/"gPA>Za@.>[KX.M\[f;`rk&9F^AbkJ^qp#es2+iTrl+oW
+s2Y)Zs2k;`r6,&_rQY)^qp5/dp<iierR:Ynrmh&"r7Cu$s4RD*s4dS/rn[V2!8me6s5<t;ro=%>
+!9O4B!pAe2roj[Qlg*p(mHs?@n,MnWnc&+ZoDeI^p&Fabp\jmdq>U6dqu$BgrRq1$s+13Ts*t~>
+JcC<$JcC<$s8VHbqYg9gp&"X_qt]p[r:g*^q"=UXrq$$Xrpg$Xr9s[Rs6]gPs6B[MrosIH!9a@D
+s5aFFj5].YiVqaGhqm2Fgt^Z<g=b-2f@SU(rmUttdf.Vpd*M^:!mSs5rlYAcaiXP'!lr=#rl+oU
+s24fPs2"`NrP/BHrk86Bs1A9Ar42j;s0qp7s0_m6rNlO0s0;O,s0)I*riQ4%s/Z.!!i`,srhodn
+!2][js.]Rgrh9@b!2'4]!hGjOrgWqVs-`hQs-NbOr0@;Hrfd2Ar/pl<fT5ffqi1B0rJUT2q2,$*
+qhOEjr.k9-qMG3/s,6f6s,I#<rK$u?rfR/Brfd>Gqj%,GrKm,Cm@!^;pRD/PrgitYs.B=arLj:e
+USIga&>c8$Vl-JlWN)u!X/rG*Y-7i/"gPA>Za@.>[KX.M\[f;`rk&9F^AbkJ^qp#es2+iTrl+oW
+s2Y)Zs2k;`r6,&_rQY)^qp5/dp<iierR:Ynrmh&"r7Cu$s4RD*s4dS/rn[V2!8me6s5<t;ro=%>
+!9O4B!pAe2roj[Qlg*p(mHs?@n,MnWnc&+ZoDeI^p&Fabp\jmdq>U6dqu$BgrRq1$s+13Ts*t~>
+JcC<$JcC<$rr;?aq>L3go_\O^qt]p[qtL!]q=X^Yrq$$Xs7-*XrU9dSs6]gPs6K^Mroj[OkND!i
+jlPS&irS/urnmh7hYu=GgtUQ:g"G$0f@JL&eC;sqda?Ihd*M^:!R8jfbQ#]bao09^a2Z-t`<*uq
+_u7IO_>h=K^]2%J^&,JB]DfD?\c0,=\,<]7[K!W4Zi@?2Z2V!-YQ(d)XTGT)X8].!W;rmrVuNUo
+V>d:jUB%%eT`UmZTDkG^SH,2YS,\rWRJiNQQiEBKQ2[$IPPC=:OlqhkO8P%9NVSP3MuAP-M>E%s
+L\lo(M>`>3Mu8P5NW5%:O8k=AOo1CBPQ$gEQ2R$JQhZsERIQa3S,AfUSbo#YTDtS_U&UkeU].%j
+V5C-hVZE`qri-""XT#=BY-5(6Z*L[AZa@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e!Q2kT`W*sXa8X0[
+aoBN]bPo`bc2#Z_chl)]dJMAje,%Snec+.tfDjM'g&9Y)g]-(.h>c=3hu;R6iW%p;j8\0?jo4EB
+k5a`Fl2U#Kli-5PmI'EAn,MkWnc&+ZoDeI]p&Facp\agcq>U6equ$BhrS@I(s+13Ns*t~>
+JcC<$JcC<$rr;?aq>L3go_\O^qt]p[qtL!]q=X^Yrq$$Xs7-*XrU9dSs6]gPs6K^Mroj[OkND!i
+jlPS&irS/urnmh7hYu=GgtUQ:g"G$0f@JL&eC;sqda?Ihd*M^:!R8jfbQ#]bao09^a2Z-t`<*uq
+_u7IO_>h=K^]2%J^&,JB]DfD?\c0,=\,<]7[K!W4Zi@?2Z2V!-YQ(d)XTGT)X8].!W;rmrVuNUo
+V>d:jUB%%eT`UmZTDkG^SH,2YS,\rWRJiNQQiEBKQ2[$IPPC=:OlqhkO8P%9NVSP3MuAP-M>E%s
+L\lo(M>`>3Mu8P5NW5%:O8k=AOo1CBPQ$gEQ2R$JQhZsERIQa3S,AfUSbo#YTDtS_U&UkeU].%j
+V5C-hVZE`qri-""XT#=BY-5(6Z*L[AZa@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e!Q2kT`W*sXa8X0[
+aoBN]bPo`bc2#Z_chl)]dJMAje,%Snec+.tfDjM'g&9Y)g]-(.h>c=3hu;R6iW%p;j8\0?jo4EB
+k5a`Fl2U#Kli-5PmI'EAn,MkWnc&+ZoDeI]p&Facp\agcq>U6equ$BhrS@I(s+13Ns*t~>
+JcC<$JcC<$rr;?aq>L3go_\O^qt]p[qtL!]q=X^Yrq$$Xs7-*XrU9dSs6]gPs6K^Mroj[OkND!i
+jlPS&irS/urnmh7hYu=GgtUQ:g"G$0f@JL&eC;sqda?Ihd*M^:!R8jfbQ#]bao09^a2Z-t`<*uq
+_u7IO_>h=K^]2%J^&,JB]DfD?\c0,=\,<]7[K!W4Zi@?2Z2V!-YQ(d)XTGT)X8].!W;rmrVuNUo
+V>d:jUB%%eT`UmZTDkG^SH,2YS,\rWRJiNQQiEBKQ2[$IPPC=:OlqhkO8P%9NVSP3MuAP-M>E%s
+L\lo(M>`>3Mu8P5NW5%:O8k=AOo1CBPQ$gEQ2R$JQhZsERIQa3S,AfUSbo#YTDtS_U&UkeU].%j
+V5C-hVZE`qri-""XT#=BY-5(6Z*L[AZa@-K[^WcV\[f;`]Y(qk^;%Fu^qp#e!Q2kT`W*sXa8X0[
+aoBN]bPo`bc2#Z_chl)]dJMAje,%Snec+.tfDjM'g&9Y)g]-(.h>c=3hu;R6iW%p;j8\0?jo4EB
+k5a`Fl2U#Kli-5PmI'EAn,MkWnc&+ZoDeI]p&Facp\agcq>U6equ$BhrS@I(s+13Ns*t~>
+JcC<$JcC<$rVu3_q>L3go_\L]qt]mZr:g*^q=XaZrq$$Xs7--Yr9j^TmHsl=!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^#2.Y\f@JO'rmUttdf.Vpd*M^:s31Pfrlb>a!6P2\!lr=#rPefT
+s24fPrk\WMr4i9Grk86Brk&3Ar42j;s0qp7s0_m6rNcR2Z*F83!jAc0riQ4%s/Z.!!i`,srhfgp
+V5=0e!i)Karh9@b!2'4]!hGjOrL<hUs-`hQrg3YNqj%,Er0-N2k)oJ$p5f-3rJgW3rJUT2nqm-t
+oSNR)repZ4rf-r<r/^l>s,m5Bs-*JIr0@8Irg3JKrL*POjI>n6r13YTrh'4`r1X.b!2KLgs.o^m
+rhgs=WMuntX/i>(Xfek2YctC<Za7$G[C3NQ\@K/]]">Vf]tXK\!PlPN_?e&t`5T^8`lH.!aT'B^
+b5KN`bl5lacMc)dd.G`_dehMheG[qsf)4/!f`0Y'gAfq-h#6%1hV[5ii;_a9ir.m=jQ5M&joOZ/
+rosIJ!:0XNs6TgSrpTmVs7-*Zs766_rUp3as7cHdrqZQiqYU3gqu,IPJcC<$VuM8~>
+JcC<$JcC<$rVu3_q>L3go_\L]qt]mZr:g*^q=XaZrq$$Xs7--Yr9j^TmHsl=!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^#2.Y\f@JO'rmUttdf.Vpd*M^:s31Pfrlb>a!6P2\!lr=#rPefT
+s24fPrk\WMr4i9Grk86Brk&3Ar42j;s0qp7s0_m6rNcR2Z*F83!jAc0riQ4%s/Z.!!i`,srhfgp
+V5=0e!i)Karh9@b!2'4]!hGjOrL<hUs-`hQrg3YNqj%,Er0-N2k)oJ$p5f-3rJgW3rJUT2nqm-t
+oSNR)repZ4rf-r<r/^l>s,m5Bs-*JIr0@8Irg3JKrL*POjI>n6r13YTrh'4`r1X.b!2KLgs.o^m
+rhgs=WMuntX/i>(Xfek2YctC<Za7$G[C3NQ\@K/]]">Vf]tXK\!PlPN_?e&t`5T^8`lH.!aT'B^
+b5KN`bl5lacMc)dd.G`_dehMheG[qsf)4/!f`0Y'gAfq-h#6%1hV[5ii;_a9ir.m=jQ5M&joOZ/
+rosIJ!:0XNs6TgSrpTmVs7-*Zs766_rUp3as7cHdrqZQiqYU3gqu,IPJcC<$VuM8~>
+JcC<$JcC<$rVu3_q>L3go_\L]qt]mZr:g*^q=XaZrq$$Xs7--Yr9j^TmHsl=!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^#2.Y\f@JO'rmUttdf.Vpd*M^:s31Pfrlb>a!6P2\!lr=#rPefT
+s24fPrk\WMr4i9Grk86Brk&3Ar42j;s0qp7s0_m6rNcR2Z*F83!jAc0riQ4%s/Z.!!i`,srhfgp
+V5=0e!i)Karh9@b!2'4]!hGjOrL<hUs-`hQrg3YNqj%,Er0-N2k)oJ$p5f-3rJgW3rJUT2nqm-t
+oSNR)repZ4rf-r<r/^l>s,m5Bs-*JIr0@8Irg3JKrL*POjI>n6r13YTrh'4`r1X.b!2KLgs.o^m
+rhgs=WMuntX/i>(Xfek2YctC<Za7$G[C3NQ\@K/]]">Vf]tXK\!PlPN_?e&t`5T^8`lH.!aT'B^
+b5KN`bl5lacMc)dd.G`_dehMheG[qsf)4/!f`0Y'gAfq-h#6%1hV[5ii;_a9ir.m=jQ5M&joOZ/
+rosIJ!:0XNs6TgSrpTmVs7-*Zs766_rUp3as7cHdrqZQiqYU3gqu,IPJcC<$VuM8~>
+JcC<$JcC<$rVu0^q>L0fo_\L]qYBdYr:g-_q=XaZrq$'Yrpg$XrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^!SQ-)f)aIQrmUttdf.YociDDkc2u87bl5fcaoKQ^aT'<\`r3mV
+`;daQ_Z.IO_#1tI^AbhD]`5VC])9,=\Gs&:[f<c8[/I<4ZE^\6YlCp,Y5YO)XK/E$WWK/uW;`[r
+VPU-gV#R1iUAgkdT`:Y`T)YA]SGerWRfAfRR/WHOQMQmDPk^HqP5:==OSFn8Nr=t5N;SV1MX?8t
+MZ&J1N;eh9Nr>%<OT1IAP5^[FPl-gHQN!6JR/WNPRe<0?SFN0DT)G;\T_tM`UAq"eV#R7kVZ*Ln
+VuWgrWWB0%riH4(YPta0Z*L^B['fnA"h2"P\[oEP]F2Ee^V@S"_8=(,_o2Pn!li:$rlG,]!6Y8`
+s31Jer6G8erQt;dq9o/hp=0&krRUkts4I>(rS%;+s4mS/s5*e5ro!h8!94"<s5a4AroOIKkih9q
+lK[^7m/QJQmf)YVnF?&Jo)J=]o_nI_pAamcq#:*gqYL*er;6HRrdk*#s.]OD~>
+JcC<$JcC<$rVu0^q>L0fo_\L]qYBdYr:g-_q=XaZrq$'Yrpg$XrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^!SQ-)f)aIQrmUttdf.YociDDkc2u87bl5fcaoKQ^aT'<\`r3mV
+`;daQ_Z.IO_#1tI^AbhD]`5VC])9,=\Gs&:[f<c8[/I<4ZE^\6YlCp,Y5YO)XK/E$WWK/uW;`[r
+VPU-gV#R1iUAgkdT`:Y`T)YA]SGerWRfAfRR/WHOQMQmDPk^HqP5:==OSFn8Nr=t5N;SV1MX?8t
+MZ&J1N;eh9Nr>%<OT1IAP5^[FPl-gHQN!6JR/WNPRe<0?SFN0DT)G;\T_tM`UAq"eV#R7kVZ*Ln
+VuWgrWWB0%riH4(YPta0Z*L^B['fnA"h2"P\[oEP]F2Ee^V@S"_8=(,_o2Pn!li:$rlG,]!6Y8`
+s31Jer6G8erQt;dq9o/hp=0&krRUkts4I>(rS%;+s4mS/s5*e5ro!h8!94"<s5a4AroOIKkih9q
+lK[^7m/QJQmf)YVnF?&Jo)J=]o_nI_pAamcq#:*gqYL*er;6HRrdk*#s.]OD~>
+JcC<$JcC<$rVu0^q>L0fo_\L]qYBdYr:g-_q=XaZrq$'Yrpg$XrU9dS!:BaO!pf.:roj[OkND!i
+jlPS&irS/urnmh7hYu=3gtVh^!SQ-)f)aIQrmUttdf.YociDDkc2u87bl5fcaoKQ^aT'<\`r3mV
+`;daQ_Z.IO_#1tI^AbhD]`5VC])9,=\Gs&:[f<c8[/I<4ZE^\6YlCp,Y5YO)XK/E$WWK/uW;`[r
+VPU-gV#R1iUAgkdT`:Y`T)YA]SGerWRfAfRR/WHOQMQmDPk^HqP5:==OSFn8Nr=t5N;SV1MX?8t
+MZ&J1N;eh9Nr>%<OT1IAP5^[FPl-gHQN!6JR/WNPRe<0?SFN0DT)G;\T_tM`UAq"eV#R7kVZ*Ln
+VuWgrWWB0%riH4(YPta0Z*L^B['fnA"h2"P\[oEP]F2Ee^V@S"_8=(,_o2Pn!li:$rlG,]!6Y8`
+s31Jer6G8erQt;dq9o/hp=0&krRUkts4I>(rS%;+s4mS/s5*e5ro!h8!94"<s5a4AroOIKkih9q
+lK[^7m/QJQmf)YVnF?&Jo)J=]o_nI_pAamcq#:*gqYL*er;6HRrdk*#s.]OD~>
+JcC<$JcC<$qu>s\qYg6foDAC\qYBdYr:g0`q=XaZrq$'Ys7--YrU9dSs6]gP!pf.:rojLJkNDj,
+!TiDAirS/urnmh7hYu=3gtVh^!SQ-)f*BmWe^W*te'e6C!mo9>rltSibfp(0s2k>`rQ,#Zs2OuU
+s2=rTr5/HLs1nNHs1\KGr4N'Arjr'=s1&*<rO2a6s0Vd3s0D[0rilF+!3Z='s/Z4$ri6!t!3#mp
+s/#dmrhTRhs.]Lds.B@arLX%[s.'%Ws-iqTr0[JMrKd,Ans&@%o90$6r/g`8rJpi9pPes,o8<C&
+q2G<4rf6o;s,d5BrK@2ErfmAHrg*SNr0[JOrgNVOr1*MPih$(?rLj%]s.]LfrM0LkVPa?js/5ps
+ri6"!/$,kTY-+t4Yd(I=Za7$H[^NZS\@K/]]=bei]tV7r^qmk(_Sa=1`Poj:a8X0[aT0K^bQ#fd
+c2>ldci2;edJMAge+;)eec"(qfDaG%g&9Y(g]-(-h>c=3hu2L5i;hm9ir\<'jo4BDkNM./klU/9
+li-5PmI'EAn,MkWnbr"[oCV\Rp&Facp\agcq>U6equ-HirT4$0s+13Cs*t~>
+JcC<$JcC<$qu>s\qYg6foDAC\qYBdYr:g0`q=XaZrq$'Ys7--YrU9dSs6]gP!pf.:rojLJkNDj,
+!TiDAirS/urnmh7hYu=3gtVh^!SQ-)f*BmWe^W*te'e6C!mo9>rltSibfp(0s2k>`rQ,#Zs2OuU
+s2=rTr5/HLs1nNHs1\KGr4N'Arjr'=s1&*<rO2a6s0Vd3s0D[0rilF+!3Z='s/Z4$ri6!t!3#mp
+s/#dmrhTRhs.]Lds.B@arLX%[s.'%Ws-iqTr0[JMrKd,Ans&@%o90$6r/g`8rJpi9pPes,o8<C&
+q2G<4rf6o;s,d5BrK@2ErfmAHrg*SNr0[JOrgNVOr1*MPih$(?rLj%]s.]LfrM0LkVPa?js/5ps
+ri6"!/$,kTY-+t4Yd(I=Za7$H[^NZS\@K/]]=bei]tV7r^qmk(_Sa=1`Poj:a8X0[aT0K^bQ#fd
+c2>ldci2;edJMAge+;)eec"(qfDaG%g&9Y(g]-(-h>c=3hu2L5i;hm9ir\<'jo4BDkNM./klU/9
+li-5PmI'EAn,MkWnbr"[oCV\Rp&Facp\agcq>U6equ-HirT4$0s+13Cs*t~>
+JcC<$JcC<$qu>s\qYg6foDAC\qYBdYr:g0`q=XaZrq$'Ys7--YrU9dSs6]gP!pf.:rojLJkNDj,
+!TiDAirS/urnmh7hYu=3gtVh^!SQ-)f*BmWe^W*te'e6C!mo9>rltSibfp(0s2k>`rQ,#Zs2OuU
+s2=rTr5/HLs1nNHs1\KGr4N'Arjr'=s1&*<rO2a6s0Vd3s0D[0rilF+!3Z='s/Z4$ri6!t!3#mp
+s/#dmrhTRhs.]Lds.B@arLX%[s.'%Ws-iqTr0[JMrKd,Ans&@%o90$6r/g`8rJpi9pPes,o8<C&
+q2G<4rf6o;s,d5BrK@2ErfmAHrg*SNr0[JOrgNVOr1*MPih$(?rLj%]s.]LfrM0LkVPa?js/5ps
+ri6"!/$,kTY-+t4Yd(I=Za7$H[^NZS\@K/]]=bei]tV7r^qmk(_Sa=1`Poj:a8X0[aT0K^bQ#fd
+c2>ldci2;edJMAge+;)eec"(qfDaG%g&9Y(g]-(-h>c=3hu2L5i;hm9ir\<'jo4BDkNM./klU/9
+li-5PmI'EAn,MkWnbr"[oCV\Rp&Facp\agcq>U6equ-HirT4$0s+13Cs*t~>
+JcC<$JcC<$q>]d[q>L-eo)&:[qYBdYr:g0`qXsj[rq$*Zs7-*XrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAirS/urnnCGhVR)EgtUT;g=b-2f@SU)ec+&!e'e6Cs3Lblrm(Pgs31Jcs2tA`rQ,#Zs2P#V
+rl"iSr5/HLrkSHHrkAEGr4N$@s180>s1&*<rO2a6!4;^2s0;X0rilF+!3Z:&!j&H'ri-%!W2T]n
+!iDfjrhKUjU8%X\s.KCarLX%[s.'%WrgNhSqO%5Jqj-!%p6>H<pQGK;rK-i9rJpf8hi.PorJpf:
+rfI/Br0%)Ds-3GHs-EYNrL!SPrgN_RrLEeVl^mR;qk3_XrhBFfr1s@hs/,dns/>sss/Q+"!3H1%
+!NrX*YQ;#7rj)d8[C3NQ\Gj#B]">Vf]tXK\!PlPN_?%Qmrl"oXa8X0[aT0K^bQ#cdc2>leci2;f
+dJ_Mke+2#bebn"nfDaG%g&0S'g]-(-h>c@3hu2I7iSrkrj8\3?jo4BDkNM./klU/9li-8Nm/ZSR
+n,MnWnc&+ZoDeI]p&Facp\agdq>U6equ$BirT4$0s+13Bs*t~>
+JcC<$JcC<$q>]d[q>L-eo)&:[qYBdYr:g0`qXsj[rq$*Zs7-*XrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAirS/urnnCGhVR)EgtUT;g=b-2f@SU)ec+&!e'e6Cs3Lblrm(Pgs31Jcs2tA`rQ,#Zs2P#V
+rl"iSr5/HLrkSHHrkAEGr4N$@s180>s1&*<rO2a6!4;^2s0;X0rilF+!3Z:&!j&H'ri-%!W2T]n
+!iDfjrhKUjU8%X\s.KCarLX%[s.'%WrgNhSqO%5Jqj-!%p6>H<pQGK;rK-i9rJpf8hi.PorJpf:
+rfI/Br0%)Ds-3GHs-EYNrL!SPrgN_RrLEeVl^mR;qk3_XrhBFfr1s@hs/,dns/>sss/Q+"!3H1%
+!NrX*YQ;#7rj)d8[C3NQ\Gj#B]">Vf]tXK\!PlPN_?%Qmrl"oXa8X0[aT0K^bQ#cdc2>leci2;f
+dJ_Mke+2#bebn"nfDaG%g&0S'g]-(-h>c@3hu2I7iSrkrj8\3?jo4BDkNM./klU/9li-8Nm/ZSR
+n,MnWnc&+ZoDeI]p&Facp\agdq>U6equ$BirT4$0s+13Bs*t~>
+JcC<$JcC<$q>]d[q>L-eo)&:[qYBdYr:g0`qXsj[rq$*Zs7-*XrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAirS/urnnCGhVR)EgtUT;g=b-2f@SU)ec+&!e'e6Cs3Lblrm(Pgs31Jcs2tA`rQ,#Zs2P#V
+rl"iSr5/HLrkSHHrkAEGr4N$@s180>s1&*<rO2a6!4;^2s0;X0rilF+!3Z:&!j&H'ri-%!W2T]n
+!iDfjrhKUjU8%X\s.KCarLX%[s.'%WrgNhSqO%5Jqj-!%p6>H<pQGK;rK-i9rJpf8hi.PorJpf:
+rfI/Br0%)Ds-3GHs-EYNrL!SPrgN_RrLEeVl^mR;qk3_XrhBFfr1s@hs/,dns/>sss/Q+"!3H1%
+!NrX*YQ;#7rj)d8[C3NQ\Gj#B]">Vf]tXK\!PlPN_?%Qmrl"oXa8X0[aT0K^bQ#cdc2>leci2;f
+dJ_Mke+2#bebn"nfDaG%g&0S'g]-(-h>c@3hu2I7iSrkrj8\3?jo4BDkNM./klU/9li-8Nm/ZSR
+n,MnWnc&+ZoDeI]p&Facp\agdq>U6equ$BirT4$0s+13Bs*t~>
+JcC<$JcC<$q#BXYq>L-eo)&7ZqYBgZr:g0`qt9s\rq$'Ys7--YrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAit:;0iS`YOhVR)EgtUT;g=b03rmq2%ec+&"e'c\Dd/q\@ci25ic2Z#ebQ#`bao0<[a8a0W
+`W*mU_u%=N_>_7J^](tI^&5PC]DoJ@\c92>\,E`:[C!=?Zi@?2Z2Us/YHG&-XTGT)X8]+#WMlcp
+VZN`lV>d:jUB%%eU&UecTDbA]Sc>5XS,SlTRJE6GQg9t#Q2?gEPPC=>Oo:C;O8P%7NUVo(NW"n6
+O8k=@Oo1CBPQ-mFQ2d0MQi*6NRJrZQS,JlVSbJ`MTB`*@U&C_bU\pqfV>mFkVuN^qWW&nLX/rD)
+Xfeh1YctC;ZEpmE[C*HO\%&uZ]"5Md]Y2%o^VIY$_SX4/`5T^8a2e2#!m/U-rlYAec-?44s3L\k
+r6bJkrR:Jiq:5;lpXfArrRq)%s4dP.rS@M1s53e5s5F";ro=%>s5j7B!pAe2rosIJ!:0XNs6]jS
+rpKpXnaZSK!qZ'VrUp3as7cHdrqZQiqYU6hqu,[VJcC<$T)X<~>
+JcC<$JcC<$q#BXYq>L-eo)&7ZqYBgZr:g0`qt9s\rq$'Ys7--YrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAit:;0iS`YOhVR)EgtUT;g=b03rmq2%ec+&"e'c\Dd/q\@ci25ic2Z#ebQ#`bao0<[a8a0W
+`W*mU_u%=N_>_7J^](tI^&5PC]DoJ@\c92>\,E`:[C!=?Zi@?2Z2Us/YHG&-XTGT)X8]+#WMlcp
+VZN`lV>d:jUB%%eU&UecTDbA]Sc>5XS,SlTRJE6GQg9t#Q2?gEPPC=>Oo:C;O8P%7NUVo(NW"n6
+O8k=@Oo1CBPQ-mFQ2d0MQi*6NRJrZQS,JlVSbJ`MTB`*@U&C_bU\pqfV>mFkVuN^qWW&nLX/rD)
+Xfeh1YctC;ZEpmE[C*HO\%&uZ]"5Md]Y2%o^VIY$_SX4/`5T^8a2e2#!m/U-rlYAec-?44s3L\k
+r6bJkrR:Jiq:5;lpXfArrRq)%s4dP.rS@M1s53e5s5F";ro=%>s5j7B!pAe2rosIJ!:0XNs6]jS
+rpKpXnaZSK!qZ'VrUp3as7cHdrqZQiqYU6hqu,[VJcC<$T)X<~>
+JcC<$JcC<$q#BXYq>L-eo)&7ZqYBgZr:g0`qt9s\rq$'Ys7--YrpTmTs6]gPs6B[MrosIH!9a@D
+!TiDAit:;0iS`YOhVR)EgtUT;g=b03rmq2%ec+&"e'c\Dd/q\@ci25ic2Z#ebQ#`bao0<[a8a0W
+`W*mU_u%=N_>_7J^](tI^&5PC]DoJ@\c92>\,E`:[C!=?Zi@?2Z2Us/YHG&-XTGT)X8]+#WMlcp
+VZN`lV>d:jUB%%eU&UecTDbA]Sc>5XS,SlTRJE6GQg9t#Q2?gEPPC=>Oo:C;O8P%7NUVo(NW"n6
+O8k=@Oo1CBPQ-mFQ2d0MQi*6NRJrZQS,JlVSbJ`MTB`*@U&C_bU\pqfV>mFkVuN^qWW&nLX/rD)
+Xfeh1YctC;ZEpmE[C*HO\%&uZ]"5Md]Y2%o^VIY$_SX4/`5T^8a2e2#!m/U-rlYAec-?44s3L\k
+r6bJkrR:Jiq:5;lpXfArrRq)%s4dP.rS@M1s53e5s5F";ro=%>s5j7B!pAe2rosIJ!:0XNs6]jS
+rpKpXnaZSK!qZ'VrUp3as7cHdrqZQiqYU6hqu,[VJcC<$T)X<~>
+JcC<$JcC<$pAaFWq>L-enb`.YqYBgZrV-9aqt9s\s7?0Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAisar+iS`YOhqm2Fgt^Z`g&]mZrmq5&e^aZK!n5TGrm:eocd2U9s3:SfrQG5`s2k5\rl>&Y
+qo/TRrknWMs2"]Mr4i6Fs1SBDrk&3Arji'=s0r!9s0_m6rj2X1!3uO-s/uF*riQ4%!3?+!s/?!s
+rhodn!2]Xi!i)KarLs7as.B7]s.0.Zqj[PQrL*/BjHoY-p6GQ?rKI&?rfR,?pQ,*0qMk91q2bN:
+rfR,ArfdAHr0@;Js-NYNs-`nUr1!\UrginWr1EhYhkBn@rM04bs/#^lrMT[o!3,ps!irE(riH4(
+YPta1Z*L[AZa@.>[KX.M\[f;`rk&TO^;%Fu_84"*_o2Pn!QN1ZaT'?^b5TTabQ,odcMu5jd/;;j
+df._jeG@_kf(7Mlf_jG"gA]k+h#-".hZ)L3i;_d9ir8!<jT"?@joX`0kl0iHl2^/KliQSBmf)\T
+n,W"Wo)J:]o_nI_pAXgbq#:*gqYL*fr;6HVrdk*#s-s%=~>
+JcC<$JcC<$pAaFWq>L-enb`.YqYBgZrV-9aqt9s\s7?0Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAisar+iS`YOhqm2Fgt^Z`g&]mZrmq5&e^aZK!n5TGrm:eocd2U9s3:SfrQG5`s2k5\rl>&Y
+qo/TRrknWMs2"]Mr4i6Fs1SBDrk&3Arji'=s0r!9s0_m6rj2X1!3uO-s/uF*riQ4%!3?+!s/?!s
+rhodn!2]Xi!i)KarLs7as.B7]s.0.Zqj[PQrL*/BjHoY-p6GQ?rKI&?rfR,?pQ,*0qMk91q2bN:
+rfR,ArfdAHr0@;Js-NYNs-`nUr1!\UrginWr1EhYhkBn@rM04bs/#^lrMT[o!3,ps!irE(riH4(
+YPta1Z*L[AZa@.>[KX.M\[f;`rk&TO^;%Fu_84"*_o2Pn!QN1ZaT'?^b5TTabQ,odcMu5jd/;;j
+df._jeG@_kf(7Mlf_jG"gA]k+h#-".hZ)L3i;_d9ir8!<jT"?@joX`0kl0iHl2^/KliQSBmf)\T
+n,W"Wo)J:]o_nI_pAXgbq#:*gqYL*fr;6HVrdk*#s-s%=~>
+JcC<$JcC<$pAaFWq>L-enb`.YqYBgZrV-9aqt9s\s7?0Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAisar+iS`YOhqm2Fgt^Z`g&]mZrmq5&e^aZK!n5TGrm:eocd2U9s3:SfrQG5`s2k5\rl>&Y
+qo/TRrknWMs2"]Mr4i6Fs1SBDrk&3Arji'=s0r!9s0_m6rj2X1!3uO-s/uF*riQ4%!3?+!s/?!s
+rhodn!2]Xi!i)KarLs7as.B7]s.0.Zqj[PQrL*/BjHoY-p6GQ?rKI&?rfR,?pQ,*0qMk91q2bN:
+rfR,ArfdAHr0@;Js-NYNs-`nUr1!\UrginWr1EhYhkBn@rM04bs/#^lrMT[o!3,ps!irE(riH4(
+YPta1Z*L[AZa@.>[KX.M\[f;`rk&TO^;%Fu_84"*_o2Pn!QN1ZaT'?^b5TTabQ,odcMu5jd/;;j
+df._jeG@_kf(7Mlf_jG"gA]k+h#-".hZ)L3i;_d9ir8!<jT"?@joX`0kl0iHl2^/KliQSBmf)\T
+n,W"Wo)J:]o_nI_pAXgbq#:*gqYL*fr;6HVrdk*#s-s%=~>
+JcC<$JcC<$pAaCVq#1$dnGE%XqYBj[rV-<bqXsm\rq$*Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAis4T&iS`YOhqn@g!SlH/g'?<`f[na+f%'cLs3gtrrmCbms3L\is3:SfrQG5`rlP)Zs2Y,Y
+r5JZRrknWMs2"]Mr4i9Gs1S?Cs189BrOMs<s0r!9s0Vj6rj2X1!3uL,#Ht;5Xf\\+X8].!WW/pr
+VZN`lV>d:jU]7(eU&UecTDY;[Sc5/US,A`MRG!u(Qi*0EQ2QsGPPLC?Oo1=$O8Y1=Oo(=APQ$gF
+Q2d0LQi3<ORJrZRS,SrWSbo#XTDbGRU$8<HU\LY`V>mFjVuN^qWVrguX/rE%XTu#4YHY79Z*OA8
+'=>0U[^WcV\[f;`]Y(qk^;%Fu_>_:U_o0O5`l?'ua8sE*rlb>c!6tJf!mf6?r6bPmrmU_nr71\q
+n^mWir7Uo"rnIG-qq_;/s53e5s5F";rT!q=!9O1A!pAe2rosIJs6K[N!q#FDrpTmVs7-*Zs7?9_
+rUp3as7cHds7uZjqYU6hqu,j[JcC<$QiDR~>
+JcC<$JcC<$pAaCVq#1$dnGE%XqYBj[rV-<bqXsm\rq$*Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAis4T&iS`YOhqn@g!SlH/g'?<`f[na+f%'cLs3gtrrmCbms3L\is3:SfrQG5`rlP)Zs2Y,Y
+r5JZRrknWMs2"]Mr4i9Gs1S?Cs189BrOMs<s0r!9s0Vj6rj2X1!3uL,#Ht;5Xf\\+X8].!WW/pr
+VZN`lV>d:jU]7(eU&UecTDY;[Sc5/US,A`MRG!u(Qi*0EQ2QsGPPLC?Oo1=$O8Y1=Oo(=APQ$gF
+Q2d0LQi3<ORJrZRS,SrWSbo#XTDbGRU$8<HU\LY`V>mFjVuN^qWVrguX/rE%XTu#4YHY79Z*OA8
+'=>0U[^WcV\[f;`]Y(qk^;%Fu_>_:U_o0O5`l?'ua8sE*rlb>c!6tJf!mf6?r6bPmrmU_nr71\q
+n^mWir7Uo"rnIG-qq_;/s53e5s5F";rT!q=!9O1A!pAe2rosIJs6K[N!q#FDrpTmVs7-*Zs7?9_
+rUp3as7cHds7uZjqYU6hqu,j[JcC<$QiDR~>
+JcC<$JcC<$pAaCVq#1$dnGE%XqYBj[rV-<bqXsm\rq$*Zs7--YrU0gUmHso>s6B[MrosIH!9a@D
+!TiDAis4T&iS`YOhqn@g!SlH/g'?<`f[na+f%'cLs3gtrrmCbms3L\is3:SfrQG5`rlP)Zs2Y,Y
+r5JZRrknWMs2"]Mr4i9Gs1S?Cs189BrOMs<s0r!9s0Vj6rj2X1!3uL,#Ht;5Xf\\+X8].!WW/pr
+VZN`lV>d:jU]7(eU&UecTDY;[Sc5/US,A`MRG!u(Qi*0EQ2QsGPPLC?Oo1=$O8Y1=Oo(=APQ$gF
+Q2d0LQi3<ORJrZRS,SrWSbo#XTDbGRU$8<HU\LY`V>mFjVuN^qWVrguX/rE%XTu#4YHY79Z*OA8
+'=>0U[^WcV\[f;`]Y(qk^;%Fu_>_:U_o0O5`l?'ua8sE*rlb>c!6tJf!mf6?r6bPmrmU_nr71\q
+n^mWir7Uo"rnIG-qq_;/s53e5s5F";rT!q=!9O1A!pAe2rosIJs6K[N!q#FDrpTmVs7-*Zs7?9_
+rUp3as7cHds7uZjqYU6hqu,j[JcC<$QiDR~>
+JcC<$JcC<$p&F:Uq#1!cn,)qWqt]s\rV-<bqt9s\s7?3[s7--YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g#Me(gg=k65f`'J(f%&=Me,n+Idf.Yod/VGjcMu/hbl,`bb5TN\aSs6Z
+`r!aT`;[[O_Z.IO_#;%I^AknF]`5SD])B2>\,a#:[K<kD[/RB5ZE^\6YQD#2Y5YO)XK/E$WWK/u
+W;`^pV?!IkV#R4iUA^ecT`:Y]T)P;ZSG&HCRcg+1R/E<LQMHgEPl?mAP5LI<OS4b2OSt=<P5^[F
+Pl-gGQN*<MR/`TRRf/`USGo)WT)PA\T_Y;XU@=rBV#7(gVYd:kW;`dqWrK."XT#@%XoP[)YR@_A
+ZEpmE[C*HO\%)FJ"hM=Y]Y2&Y^C%cm_SX4/`5T^8a8X-bai_cLbKS2TrQYJjd*Va=s3gnqqpbVq
+r7:Mlpt5GrpY,T#rnRD,rnd\4r8@V6s5O";!p&J)rT41Ekii$1s6BXMrp9[P!:KgS!q>aMrpp*\
+s7H9_s7ZKer:p9erqcNhr;?KkmJ_\:JcCu7J,~>
+JcC<$JcC<$p&F:Uq#1!cn,)qWqt]s\rV-<bqt9s\s7?3[s7--YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g#Me(gg=k65f`'J(f%&=Me,n+Idf.Yod/VGjcMu/hbl,`bb5TN\aSs6Z
+`r!aT`;[[O_Z.IO_#;%I^AknF]`5SD])B2>\,a#:[K<kD[/RB5ZE^\6YQD#2Y5YO)XK/E$WWK/u
+W;`^pV?!IkV#R4iUA^ecT`:Y]T)P;ZSG&HCRcg+1R/E<LQMHgEPl?mAP5LI<OS4b2OSt=<P5^[F
+Pl-gGQN*<MR/`TRRf/`USGo)WT)PA\T_Y;XU@=rBV#7(gVYd:kW;`dqWrK."XT#@%XoP[)YR@_A
+ZEpmE[C*HO\%)FJ"hM=Y]Y2&Y^C%cm_SX4/`5T^8a8X-bai_cLbKS2TrQYJjd*Va=s3gnqqpbVq
+r7:Mlpt5GrpY,T#rnRD,rnd\4r8@V6s5O";!p&J)rT41Ekii$1s6BXMrp9[P!:KgS!q>aMrpp*\
+s7H9_s7ZKer:p9erqcNhr;?KkmJ_\:JcCu7J,~>
+JcC<$JcC<$p&F:Uq#1!cn,)qWqt]s\rV-<bqt9s\s7?3[s7--YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g#Me(gg=k65f`'J(f%&=Me,n+Idf.Yod/VGjcMu/hbl,`bb5TN\aSs6Z
+`r!aT`;[[O_Z.IO_#;%I^AknF]`5SD])B2>\,a#:[K<kD[/RB5ZE^\6YQD#2Y5YO)XK/E$WWK/u
+W;`^pV?!IkV#R4iUA^ecT`:Y]T)P;ZSG&HCRcg+1R/E<LQMHgEPl?mAP5LI<OS4b2OSt=<P5^[F
+Pl-gGQN*<MR/`TRRf/`USGo)WT)PA\T_Y;XU@=rBV#7(gVYd:kW;`dqWrK."XT#@%XoP[)YR@_A
+ZEpmE[C*HO\%)FJ"hM=Y]Y2&Y^C%cm_SX4/`5T^8a8X-bai_cLbKS2TrQYJjd*Va=s3gnqqpbVq
+r7:Mlpt5GrpY,T#rnRD,rnd\4r8@V6s5O";!p&J)rT41Ekii$1s6BXMrp9[P!:KgS!q>aMrpp*\
+s7H9_s7ZKer:p9erqcNhr;?KkmJ_\:JcCu7J,~>
+JcC<$JcC<$oDe(Sp\jmbn,)qWqt^!]rV-<bqt:!]s7?0Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"eGn"tdf.Yod/VGjcMu/hbl#Z`b5]T\aSs6Z
+`r!aT`;[[P_Z%CO_#1tI^AknF]E5^V])B/@\@8sH[f<`8[/RE3Z2h0/YlCm,Y5YR'X8o=#WrK$u
+W;WUqVPU-fV#R4iUA^ebT`1S\T)G5WSCsD+RerNJR/NBMQMHgEPl6g?P3e>+P5^[EPl-gGQN*<L
+R/`TSRf/`TSH#/XT)PA^T_bA\UAL_CV"geaVY[4iW;`dpWrK."XT#@%XoP[)YlCs.ZMq02['fnA
+$FdOU\[oAa]Y(qlrkAWP_8=(,`;[^V`lJ)"!QiL`b6#o4c2Q#gcN)>jdJqYpe,7_pec"(nfD=.p
+g%3qrg\oq(h>Z:2hu)F4iW%p9j8\3?jo+<CkNM./l2U&Kli-8Nm/ZSQn,MkWnbr%YoDeI^p&=[b
+p\jmdq>U6fqu$BirUBf;s+133s*t~>
+JcC<$JcC<$oDe(Sp\jmbn,)qWqt^!]rV-<bqt:!]s7?0Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"eGn"tdf.Yod/VGjcMu/hbl#Z`b5]T\aSs6Z
+`r!aT`;[[P_Z%CO_#1tI^AknF]E5^V])B/@\@8sH[f<`8[/RE3Z2h0/YlCm,Y5YR'X8o=#WrK$u
+W;WUqVPU-fV#R4iUA^ebT`1S\T)G5WSCsD+RerNJR/NBMQMHgEPl6g?P3e>+P5^[EPl-gGQN*<L
+R/`TSRf/`TSH#/XT)PA^T_bA\UAL_CV"geaVY[4iW;`dpWrK."XT#@%XoP[)YlCs.ZMq02['fnA
+$FdOU\[oAa]Y(qlrkAWP_8=(,`;[^V`lJ)"!QiL`b6#o4c2Q#gcN)>jdJqYpe,7_pec"(nfD=.p
+g%3qrg\oq(h>Z:2hu)F4iW%p9j8\3?jo+<CkNM./l2U&Kli-8Nm/ZSQn,MkWnbr%YoDeI^p&=[b
+p\jmdq>U6fqu$BirUBf;s+133s*t~>
+JcC<$JcC<$oDe(Sp\jmbn,)qWqt^!]rV-<bqt:!]s7?0Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa9hqn@g!o2Pbrn7D+f`'M&ec=8"eGn"tdf.Yod/VGjcMu/hbl#Z`b5]T\aSs6Z
+`r!aT`;[[P_Z%CO_#1tI^AknF]E5^V])B/@\@8sH[f<`8[/RE3Z2h0/YlCm,Y5YR'X8o=#WrK$u
+W;WUqVPU-fV#R4iUA^ebT`1S\T)G5WSCsD+RerNJR/NBMQMHgEPl6g?P3e>+P5^[EPl-gGQN*<L
+R/`TSRf/`TSH#/XT)PA^T_bA\UAL_CV"geaVY[4iW;`dpWrK."XT#@%XoP[)YlCs.ZMq02['fnA
+$FdOU\[oAa]Y(qlrkAWP_8=(,`;[^V`lJ)"!QiL`b6#o4c2Q#gcN)>jdJqYpe,7_pec"(nfD=.p
+g%3qrg\oq(h>Z:2hu)F4iW%p9j8\3?jo+<CkNM./l2U&Kli-8Nm/ZSQn,MkWnbr%YoDeI^p&=[b
+p\jmdq>U6fqu$BirUBf;s+133s*t~>
+JcC<$JcC<$oDe"Qp\jjan,)tXqt^!]rqHEcqt:!]rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa?hqm5Gh;$f?rn7G,f\$2Ts4.2#rm^tss3gkns3UelrQbGfs31A`s2t>_qoJcW
+rl4iSrl"iSr5/KMrkSKIs1\NHrk/9Cs183?s0r'<rjMj7!4;a3s0;X0rilF+!3Z='s/Z4$rMfpu
+W2T]ns/,gmrM9Igs.]Fbrh07_pn%>Ql^[+,r0mPOq3_,IrKd;Fr07,Ck*#Y+rfm;Frg*SNr0[MP
+s-inUrga"ZrLX"\rh01_rM':doq_&Qn##fVri#gqr2Tass/c4%s/uC*ricF.ZMq0<['d<M[^WcV
+\[f;`rk&TO^;%Fu_84"*_o2Pn#0+^)aN;QHrlY>dc2Q#gcN)>jdJqYpe,@eqec+.rfDF4sg$dYl
+g\oq'h>Z:1hu)F4iW%p8j8\3?jo4EBkPscFl2U&Kli-8NmJlVRn,MkWnbr%YoDeI]p&Facp\agd
+q>U6equ-HkrUBf;s+131s*t~>
+JcC<$JcC<$oDe"Qp\jjan,)tXqt^!]rqHEcqt:!]rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa?hqm5Gh;$f?rn7G,f\$2Ts4.2#rm^tss3gkns3UelrQbGfs31A`s2t>_qoJcW
+rl4iSrl"iSr5/KMrkSKIs1\NHrk/9Cs183?s0r'<rjMj7!4;a3s0;X0rilF+!3Z='s/Z4$rMfpu
+W2T]ns/,gmrM9Igs.]Fbrh07_pn%>Ql^[+,r0mPOq3_,IrKd;Fr07,Ck*#Y+rfm;Frg*SNr0[MP
+s-inUrga"ZrLX"\rh01_rM':doq_&Qn##fVri#gqr2Tass/c4%s/uC*ricF.ZMq0<['d<M[^WcV
+\[f;`rk&TO^;%Fu_84"*_o2Pn#0+^)aN;QHrlY>dc2Q#gcN)>jdJqYpe,@eqec+.rfDF4sg$dYl
+g\oq'h>Z:1hu)F4iW%p8j8\3?jo4EBkPscFl2U&Kli-8NmJlVRn,MkWnbr%YoDeI]p&Facp\agd
+q>U6equ-HkrUBf;s+131s*t~>
+JcC<$JcC<$oDe"Qp\jjan,)tXqt^!]rqHEcqt:!]rq$*Zs7$*YrU9dS!:BdPs6B[MrosIH!9a@D
+#Nb%-j5].YiVqa?hqm5Gh;$f?rn7G,f\$2Ts4.2#rm^tss3gkns3UelrQbGfs31A`s2t>_qoJcW
+rl4iSrl"iSr5/KMrkSKIs1\NHrk/9Cs183?s0r'<rjMj7!4;a3s0;X0rilF+!3Z='s/Z4$rMfpu
+W2T]ns/,gmrM9Igs.]Fbrh07_pn%>Ql^[+,r0mPOq3_,IrKd;Fr07,Ck*#Y+rfm;Frg*SNr0[MP
+s-inUrga"ZrLX"\rh01_rM':doq_&Qn##fVri#gqr2Tass/c4%s/uC*ricF.ZMq0<['d<M[^WcV
+\[f;`rk&TO^;%Fu_84"*_o2Pn#0+^)aN;QHrlY>dc2Q#gcN)>jdJqYpe,@eqec+.rfDF4sg$dYl
+g\oq'h>Z:1hu)F4iW%p8j8\3?jo4EBkPscFl2U&Kli-8NmJlVRn,MkWnbr%YoDeI]p&Facp\agd
+q>U6equ-HkrUBf;s+131s*t~>
+JcC<$JcC<$nc.bNp\jg`n,)tXr;$-_rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqa:hqm5hh#Z<crn@D*!8.8%!nPoPrm^tss3gkns3Uelr6G>erlk;`rlY5^qoJcW
+rl4iSs2=oSr5/KMs1nTJs1SKHrOi0B!4r->!k>_KrjDm9[']h=!j])9ricI-Y-.c+!j&H'ri6!t
+!3#jos/,gmrM9IgrhB:`rh01]n=J[2pmh)Jr0mSPqO%5JrKd8EqipH2r07#Brg*SNr0[MPrgNeT
+s.'(ZrLX%]rh01_rhBCeqP="bq52uGr2BRnql9Xrs/c1$s/uC*ricI/ZEjJ9!OT96[K3kIrj`'@
+]DfGH]tV7r^qp#e&AuH*`Q#p<aN2KGb0.uPc-?75!mf6?rmCbos3pqrs4.,"qq(f!r7USnq:kc$
+ptbr+rnmV2s5Et:rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQi
+qtp?ir;H0bJcC<$NW4M~>
+JcC<$JcC<$nc.bNp\jg`n,)tXr;$-_rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqa:hqm5hh#Z<crn@D*!8.8%!nPoPrm^tss3gkns3Uelr6G>erlk;`rlY5^qoJcW
+rl4iSs2=oSr5/KMs1nTJs1SKHrOi0B!4r->!k>_KrjDm9[']h=!j])9ricI-Y-.c+!j&H'ri6!t
+!3#jos/,gmrM9IgrhB:`rh01]n=J[2pmh)Jr0mSPqO%5JrKd8EqipH2r07#Brg*SNr0[MPrgNeT
+s.'(ZrLX%]rh01_rhBCeqP="bq52uGr2BRnql9Xrs/c1$s/uC*ricI/ZEjJ9!OT96[K3kIrj`'@
+]DfGH]tV7r^qp#e&AuH*`Q#p<aN2KGb0.uPc-?75!mf6?rmCbos3pqrs4.,"qq(f!r7USnq:kc$
+ptbr+rnmV2s5Et:rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQi
+qtp?ir;H0bJcC<$NW4M~>
+JcC<$JcC<$nc.bNp\jg`n,)tXr;$-_rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqa:hqm5hh#Z<crn@D*!8.8%!nPoPrm^tss3gkns3Uelr6G>erlk;`rlY5^qoJcW
+rl4iSs2=oSr5/KMs1nTJs1SKHrOi0B!4r->!k>_KrjDm9[']h=!j])9ricI-Y-.c+!j&H'ri6!t
+!3#jos/,gmrM9IgrhB:`rh01]n=J[2pmh)Jr0mSPqO%5JrKd8EqipH2r07#Brg*SNr0[MPrgNeT
+s.'(ZrLX%]rh01_rhBCeqP="bq52uGr2BRnql9Xrs/c1$s/uC*ricI/ZEjJ9!OT96[K3kIrj`'@
+]DfGH]tV7r^qp#e&AuH*`Q#p<aN2KGb0.uPc-?75!mf6?rmCbos3pqrs4.,"qq(f!r7USnq:kc$
+ptbr+rnmV2s5Et:rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-*Zs7?9_rUp3as7cHdrqZQi
+qtp?ir;H0bJcC<$NW4M~>
+JcC<$JcC<$nGhYMpAO^_n,)tXr;$0`rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqd8hZ2O4h#cBdg]#n.g"=sVfDjG%ec+(ue,RkpdJqSmci)/gc2PrabPoZ`ans0Y
+a8X*U`W*mU_u7IP_>h=L^]2"J^&>SF]=PTQ\c9/>\,Ni9[/dT5ZN@G;Z2Us/YHG&-XoGI&X8T%"
+WMlcoVuNXoV>R.hU]."aU&:SZT@]\2Sc##QS,SlTRJE6LQi*0BQ1L76Q2[*KQi!0MRK&`RS,]#Y
+Sc#)ZTDtS^U&UkdU\gkcV>R4UVsLAYWVWXoX8]3uXoGO(YPk[,Z*L\7ZQ?K][C3NQ\%&uZ]"5Md
+]Y2%n^V@S#_SX4.`5T^8a8X-\aiaV+!R/gfcMu2jd/MGmdf7eqeGn(uf)4/!f_sLrgA'Fsh"BM%
+hYuF/i;_d8ir%j:jT"??k5XWEkl0iHlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYU0g
+r;?N`rdk*#s,?u.~>
+JcC<$JcC<$nGhYMpAO^_n,)tXr;$0`rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqd8hZ2O4h#cBdg]#n.g"=sVfDjG%ec+(ue,RkpdJqSmci)/gc2PrabPoZ`ans0Y
+a8X*U`W*mU_u7IP_>h=L^]2"J^&>SF]=PTQ\c9/>\,Ni9[/dT5ZN@G;Z2Us/YHG&-XoGI&X8T%"
+WMlcoVuNXoV>R.hU]."aU&:SZT@]\2Sc##QS,SlTRJE6LQi*0BQ1L76Q2[*KQi!0MRK&`RS,]#Y
+Sc#)ZTDtS^U&UkdU\gkcV>R4UVsLAYWVWXoX8]3uXoGO(YPk[,Z*L\7ZQ?K][C3NQ\%&uZ]"5Md
+]Y2%n^V@S#_SX4.`5T^8a8X-\aiaV+!R/gfcMu2jd/MGmdf7eqeGn(uf)4/!f_sLrgA'Fsh"BM%
+hYuF/i;_d8ir%j:jT"??k5XWEkl0iHlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYU0g
+r;?N`rdk*#s,?u.~>
+JcC<$JcC<$nGhYMpAO^_n,)tXr;$0`rqHEcr:U']s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+!p/M(ro4%=iVqd8hZ2O4h#cBdg]#n.g"=sVfDjG%ec+(ue,RkpdJqSmci)/gc2PrabPoZ`ans0Y
+a8X*U`W*mU_u7IP_>h=L^]2"J^&>SF]=PTQ\c9/>\,Ni9[/dT5ZN@G;Z2Us/YHG&-XoGI&X8T%"
+WMlcoVuNXoV>R.hU]."aU&:SZT@]\2Sc##QS,SlTRJE6LQi*0BQ1L76Q2[*KQi!0MRK&`RS,]#Y
+Sc#)ZTDtS^U&UkdU\gkcV>R4UVsLAYWVWXoX8]3uXoGO(YPk[,Z*L\7ZQ?K][C3NQ\%&uZ]"5Md
+]Y2%n^V@S#_SX4.`5T^8a8X-\aiaV+!R/gfcMu2jd/MGmdf7eqeGn(uf)4/!f_sLrgA'Fsh"BM%
+hYuF/i;_d8ir%j:jT"??k5XWEkl0iHlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYU0g
+r;?N`rdk*#s,?u.~>
+JcC<$JcC<$nGhSKpAO[^n,*"Yr;$0`rqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro47CiSi_Qhr!;ih>c71g]#q,g&K_(fDjG%ec+(ue,RkodJqSmchu)fc2PrabPfT_ans0Y
+a8a0W`W!gU_u7IP_>h=M^]2%J^&G\E])]GA\c9/>\,Ni9[/dT5Zi@<2Z2V!-Y5ka)XoGL&X8].!
+WW/pqVuNXoV>I(fU]."]U%+f<TCe`QSc,)SS,SlTRJE6KQi!*7Q2HsHQi!0LRK&`RS,]#YSc#)Z
+TDtS^U&UkeU\gkdV>d@eVtd4PWUm.gX8]3tXoGR(YPk[,Z*L\7Zi@B4[JmTB\%&rY\[oDb]Y(ql
+rkAfU_8=(,`5KX6`lJ)"#0G$2bKS2TrltPjd/MGmdf7eqeGn)!f)4/!f`'S"gA9Ruh!j.thYl@.
+i;V^7ir%j:jT"??k5XWEkl'cGlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYL*fr;?Na
+rdk*#s,6o-~>
+JcC<$JcC<$nGhSKpAO[^n,*"Yr;$0`rqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro47CiSi_Qhr!;ih>c71g]#q,g&K_(fDjG%ec+(ue,RkodJqSmchu)fc2PrabPfT_ans0Y
+a8a0W`W!gU_u7IP_>h=M^]2%J^&G\E])]GA\c9/>\,Ni9[/dT5Zi@<2Z2V!-Y5ka)XoGL&X8].!
+WW/pqVuNXoV>I(fU]."]U%+f<TCe`QSc,)SS,SlTRJE6KQi!*7Q2HsHQi!0LRK&`RS,]#YSc#)Z
+TDtS^U&UkeU\gkdV>d@eVtd4PWUm.gX8]3tXoGR(YPk[,Z*L\7Zi@B4[JmTB\%&rY\[oDb]Y(ql
+rkAfU_8=(,`5KX6`lJ)"#0G$2bKS2TrltPjd/MGmdf7eqeGn)!f)4/!f`'S"gA9Ruh!j.thYl@.
+i;V^7ir%j:jT"??k5XWEkl'cGlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYL*fr;?Na
+rdk*#s,6o-~>
+JcC<$JcC<$nGhSKpAO[^n,*"Yr;$0`rqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro47CiSi_Qhr!;ih>c71g]#q,g&K_(fDjG%ec+(ue,RkodJqSmchu)fc2PrabPfT_ans0Y
+a8a0W`W!gU_u7IP_>h=M^]2%J^&G\E])]GA\c9/>\,Ni9[/dT5Zi@<2Z2V!-Y5ka)XoGL&X8].!
+WW/pqVuNXoV>I(fU]."]U%+f<TCe`QSc,)SS,SlTRJE6KQi!*7Q2HsHQi!0LRK&`RS,]#YSc#)Z
+TDtS^U&UkeU\gkdV>d@eVtd4PWUm.gX8]3tXoGR(YPk[,Z*L\7Zi@B4[JmTB\%&rY\[oDb]Y(ql
+rkAfU_8=(,`5KX6`lJ)"#0G$2bKS2TrltPjd/MGmdf7eqeGn)!f)4/!f`'S"gA9Ruh!j.thYl@.
+i;V^7ir%j:jT"??k5XWEkl'cGlMp2Lm/QJQmf)\TnGi%Wo)J=]o_nI_pAambq#C0hqYL*fr;?Na
+rdk*#s,6o-~>
+JcC<$JcC<$mJl8Hp&4R]nb`4[r;$3arqHEcr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojIIkPjWD
+jT+B@ir\6!iVqa:hqm5hh#cBdg]#q,f`9\'fDjG%ec""te,RkodJqSmchl#ec2Pr`bPoZ`ans0Y
+a8a0W`W*mV_u7IP_>h=M^]2"J^&G\E]DoJA\HfXR\$i`Q[C#q>s0;X0rilF+s/u@'!j&H'rMoms
+s/>morhf^lqP=(br1_i;pRqDUpn%GTrLE_RrL3\QpmCoEns90>q3_/Ls-ikTrga"ZrLX"\s.K=a
+s.]Lfr1s@hrhfOir2BLlfrFqMrN,muriZ:)rNQ=,s0DX1s0Md6rjMj9!4`$=!P5oB]F)?d^V@S"
+_8=(,`;[^e`lH0Aai_cLbKS5UcHab^d/MDodaQ\EeGn)!f)=5#f`'S#gATe&h!NqohYZ4+i;V^7
+iqqd9jT"?>k5XWEkl'cGlMp2Lm/QJQmeuSUnF?&Io)J=]o_nI_pAambq#:*gqYU0gr;?N`rdk*#
+s,6o-~>
+JcC<$JcC<$mJl8Hp&4R]nb`4[r;$3arqHEcr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojIIkPjWD
+jT+B@ir\6!iVqa:hqm5hh#cBdg]#q,f`9\'fDjG%ec""te,RkodJqSmchl#ec2Pr`bPoZ`ans0Y
+a8a0W`W*mV_u7IP_>h=M^]2"J^&G\E]DoJA\HfXR\$i`Q[C#q>s0;X0rilF+s/u@'!j&H'rMoms
+s/>morhf^lqP=(br1_i;pRqDUpn%GTrLE_RrL3\QpmCoEns90>q3_/Ls-ikTrga"ZrLX"\s.K=a
+s.]Lfr1s@hrhfOir2BLlfrFqMrN,muriZ:)rNQ=,s0DX1s0Md6rjMj9!4`$=!P5oB]F)?d^V@S"
+_8=(,`;[^e`lH0Aai_cLbKS5UcHab^d/MDodaQ\EeGn)!f)=5#f`'S#gATe&h!NqohYZ4+i;V^7
+iqqd9jT"?>k5XWEkl'cGlMp2Lm/QJQmeuSUnF?&Io)J=]o_nI_pAambq#:*gqYU0gr;?N`rdk*#
+s,6o-~>
+JcC<$JcC<$mJl8Hp&4R]nb`4[r;$3arqHEcr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojIIkPjWD
+jT+B@ir\6!iVqa:hqm5hh#cBdg]#q,f`9\'fDjG%ec""te,RkodJqSmchl#ec2Pr`bPoZ`ans0Y
+a8a0W`W*mV_u7IP_>h=M^]2"J^&G\E]DoJA\HfXR\$i`Q[C#q>s0;X0rilF+s/u@'!j&H'rMoms
+s/>morhf^lqP=(br1_i;pRqDUpn%GTrLE_RrL3\QpmCoEns90>q3_/Ls-ikTrga"ZrLX"\s.K=a
+s.]Lfr1s@hrhfOir2BLlfrFqMrN,muriZ:)rNQ=,s0DX1s0Md6rjMj9!4`$=!P5oB]F)?d^V@S"
+_8=(,`;[^e`lH0Aai_cLbKS5UcHab^d/MDodaQ\EeGn)!f)=5#f`'S#gATe&h!NqohYZ4+i;V^7
+iqqd9jT"?>k5XWEkl'cGlMp2Lm/QJQmeuSUnF?&Io)J=]o_nI_pAambq#:*gqYU0gr;?N`rdk*#
+s,6o-~>
+JcC<$JcC<$m/Q,Fo_nL]nb`4[rV?<brqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro=%<!9*q8!oMkkrn[V0!8IJ+!nl5YrR_)#s4.(ts3ptqr6bMjrm1JerltDcqoeu]rlP&Y
+s2Y,YrPefTs24fP!l;[frkJKIs1SEE!kZ%Trj`*?\$u@F!k#DBrj)[3Z*F;4!jAc0riQ4%s/Z*u
+s/H$sr29Okrh]FdqP38KkFqgHr1EhWrLNnWqO@GPrL)Q1rgEbSqj[VUrgj"Zs.B:`rLs7cs.fLf
+s/#^lqksFlrMfFhj/_sVpoXOuric7(s0;U0rj2X3s0_j7&@]0Z\[f;_]=bei]tV7r^qp#e$H'g$
+`Q#p<aN2KGrlY>dc2Puncd:%ddF-Ilrm^tus47/#s4IA)qqD&(r7pl!p>5W&pYc#/rSmb8roF(?
+rT=.Cs60CFs69UMrTsROs6fjSs6p$YrUU![s7H9_rq?Bdr:p<frqcKgrVZTlo)=4?JcCW-J,~>
+JcC<$JcC<$m/Q,Fo_nL]nb`4[rV?<brqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro=%<!9*q8!oMkkrn[V0!8IJ+!nl5YrR_)#s4.(ts3ptqr6bMjrm1JerltDcqoeu]rlP&Y
+s2Y,YrPefTs24fP!l;[frkJKIs1SEE!kZ%Trj`*?\$u@F!k#DBrj)[3Z*F;4!jAc0riQ4%s/Z*u
+s/H$sr29Okrh]FdqP38KkFqgHr1EhWrLNnWqO@GPrL)Q1rgEbSqj[VUrgj"Zs.B:`rLs7cs.fLf
+s/#^lqksFlrMfFhj/_sVpoXOuric7(s0;U0rj2X3s0_j7&@]0Z\[f;_]=bei]tV7r^qp#e$H'g$
+`Q#p<aN2KGrlY>dc2Puncd:%ddF-Ilrm^tus47/#s4IA)qqD&(r7pl!p>5W&pYc#/rSmb8roF(?
+rT=.Cs60CFs69UMrTsROs6fjSs6p$YrUU![s7H9_rq?Bdr:p<frqcKgrVZTlo)=4?JcCW-J,~>
+JcC<$JcC<$m/Q,Fo_nL]nb`4[rV?<brqHEcr:U*^s7?3[s7--YrpTmT!:BdPs6B[MrosIH!9a@D
+s5a7Aro=%<!9*q8!oMkkrn[V0!8IJ+!nl5YrR_)#s4.(ts3ptqr6bMjrm1JerltDcqoeu]rlP&Y
+s2Y,YrPefTs24fP!l;[frkJKIs1SEE!kZ%Trj`*?\$u@F!k#DBrj)[3Z*F;4!jAc0riQ4%s/Z*u
+s/H$sr29Okrh]FdqP38KkFqgHr1EhWrLNnWqO@GPrL)Q1rgEbSqj[VUrgj"Zs.B:`rLs7cs.fLf
+s/#^lqksFlrMfFhj/_sVpoXOuric7(s0;U0rj2X3s0_j7&@]0Z\[f;_]=bei]tV7r^qp#e$H'g$
+`Q#p<aN2KGrlY>dc2Puncd:%ddF-Ilrm^tus47/#s4IA)qqD&(r7pl!p>5W&pYc#/rSmb8roF(?
+rT=.Cs60CFs69UMrTsROs6fjSs6p$YrUU![s7H9_rq?Bdr:p<frqcKgrVZTlo)=4?JcCW-J,~>
+JcC<$JcC<$lMolCo_nI\o)&@]rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:roj[OkND!i
+jlPS&j8\*=iVqd8hZ2O3h#cBdg]#q,g&K_'fDjG%ebmqse,IendJhMkchl#dc2Pr`bQ#`aao'6Z
+a8a0X`W*mV_u@OQ_>h=M^B2-_^&G\E])]GA\H9:M\,Nf;[C!=?ZN@G;Z2V!-Y5ka(XoGL&X8T'u
+WW&joVu<LkV=:;>U\UYXU&CY_TDG/YSc,)SS,A`PRIHU@RJiTOS,SrXSc#)ZTDtS^U&UkeU]%"f
+V>mFjVuEXoWVNRkX7NFNXo,@$YPYR(Z2_-.Zi@E4[JmT9\%&sI\H0:Rrk&9F^AbkJ^qp#e"iJ9t
+`Q#sta8sE*rlY>dc2Puhcd;[=!n,QHrmV#"f%0fOs4IA)r7_/)rnR8(ptk]$oAKQ*rSm_7roF(?
+r9"%Bs60FGs6BXMrTsROs6fjSs7$'YrUU![s7H9_s7ZKer:p9erqcNhrVZTlnc"+>JcCW-J,~>
+JcC<$JcC<$lMolCo_nI\o)&@]rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:roj[OkND!i
+jlPS&j8\*=iVqd8hZ2O3h#cBdg]#q,g&K_'fDjG%ebmqse,IendJhMkchl#dc2Pr`bQ#`aao'6Z
+a8a0X`W*mV_u@OQ_>h=M^B2-_^&G\E])]GA\H9:M\,Nf;[C!=?ZN@G;Z2V!-Y5ka(XoGL&X8T'u
+WW&joVu<LkV=:;>U\UYXU&CY_TDG/YSc,)SS,A`PRIHU@RJiTOS,SrXSc#)ZTDtS^U&UkeU]%"f
+V>mFjVuEXoWVNRkX7NFNXo,@$YPYR(Z2_-.Zi@E4[JmT9\%&sI\H0:Rrk&9F^AbkJ^qp#e"iJ9t
+`Q#sta8sE*rlY>dc2Puhcd;[=!n,QHrmV#"f%0fOs4IA)r7_/)rnR8(ptk]$oAKQ*rSm_7roF(?
+r9"%Bs60FGs6BXMrTsROs6fjSs7$'YrUU![s7H9_s7ZKer:p9erqcNhrVZTlnc"+>JcCW-J,~>
+JcC<$JcC<$lMolCo_nI\o)&@]rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:roj[OkND!i
+jlPS&j8\*=iVqd8hZ2O3h#cBdg]#q,g&K_'fDjG%ebmqse,IendJhMkchl#dc2Pr`bQ#`aao'6Z
+a8a0X`W*mV_u@OQ_>h=M^B2-_^&G\E])]GA\H9:M\,Nf;[C!=?ZN@G;Z2V!-Y5ka(XoGL&X8T'u
+WW&joVu<LkV=:;>U\UYXU&CY_TDG/YSc,)SS,A`PRIHU@RJiTOS,SrXSc#)ZTDtS^U&UkeU]%"f
+V>mFjVuEXoWVNRkX7NFNXo,@$YPYR(Z2_-.Zi@E4[JmT9\%&sI\H0:Rrk&9F^AbkJ^qp#e"iJ9t
+`Q#sta8sE*rlY>dc2Puhcd;[=!n,QHrmV#"f%0fOs4IA)r7_/)rnR8(ptk]$oAKQ*rSm_7roF(?
+r9"%Bs60FGs6BXMrTsROs6fjSs7$'YrUU![s7H9_s7ZKer:p9erqcNhrVZTlnc"+>JcCW-J,~>
+JcC<$JcC<$kl9W@oDSC\o_\R_rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BdPs6K^MrojLJkNDj,
+!p/M(ro4(>iSjdo!oMkkrn[V0s4dP,s4RG)rR_)#rmgqrs3ptqqU,;hrm1GdrQY>cqoeu]s2k2[
+s2Y/ZrPefT!5ncP!l;[frkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1!3uL,!jAc0rN6+$s/Z't
+s/H!rqPX7gq5)W;qkO(`q4[b[rh'%YrLNnWpRCoGrgEMLpm_8QrgitYs.B=ar1X.bs.fOgs/#^l
+rMTXnri,dprN#jtfrb(Qr3,t$riuI.rNlO2s0_j7s0i!<rj`cT]=Y_g]tM.p^VIY$_SX4/`5T^8
+a8X-kai_fMbfn>WcHjkadF$Cje,IkseH"2!fDjJ'g&0S'g]-()h>?((hsB:uiVhd3j8S-=jo"9@
+kPj]Dl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HjrUTr=s+13,s*t~>
+JcC<$JcC<$kl9W@oDSC\o_\R_rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BdPs6K^MrojLJkNDj,
+!p/M(ro4(>iSjdo!oMkkrn[V0s4dP,s4RG)rR_)#rmgqrs3ptqqU,;hrm1GdrQY>cqoeu]s2k2[
+s2Y/ZrPefT!5ncP!l;[frkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1!3uL,!jAc0rN6+$s/Z't
+s/H!rqPX7gq5)W;qkO(`q4[b[rh'%YrLNnWpRCoGrgEMLpm_8QrgitYs.B=ar1X.bs.fOgs/#^l
+rMTXnri,dprN#jtfrb(Qr3,t$riuI.rNlO2s0_j7s0i!<rj`cT]=Y_g]tM.p^VIY$_SX4/`5T^8
+a8X-kai_fMbfn>WcHjkadF$Cje,IkseH"2!fDjJ'g&0S'g]-()h>?((hsB:uiVhd3j8S-=jo"9@
+kPj]Dl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HjrUTr=s+13,s*t~>
+JcC<$JcC<$kl9W@oDSC\o_\R_rV?<brqHHdr:U*^s7?3[s7--YrpTmT!:BdPs6K^MrojLJkNDj,
+!p/M(ro4(>iSjdo!oMkkrn[V0s4dP,s4RG)rR_)#rmgqrs3ptqqU,;hrm1GdrQY>cqoeu]s2k2[
+s2Y/ZrPefT!5ncP!l;[frkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1!3uL,!jAc0rN6+$s/Z't
+s/H!rqPX7gq5)W;qkO(`q4[b[rh'%YrLNnWpRCoGrgEMLpm_8QrgitYs.B=ar1X.bs.fOgs/#^l
+rMTXnri,dprN#jtfrb(Qr3,t$riuI.rNlO2s0_j7s0i!<rj`cT]=Y_g]tM.p^VIY$_SX4/`5T^8
+a8X-kai_fMbfn>WcHjkadF$Cje,IkseH"2!fDjJ'g&0S'g]-()h>?((hsB:uiVhd3j8S-=jo"9@
+kPj]Dl2U&Kli$2MmJlVQn,MnWnbr%YoDeI]p&Fabp\jmdq>U6equ-HjrUTr=s+13,s*t~>
+JcC<$JcC<$kPsH=oDSF]o_\R_rV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro4(>iSjdos5*h5rS@M/!8IJ+s4RG)r7Cu"s4."rrmUkpqU,;hrQk>crltGdr6,)^s2k2[
+s2Y/Zrl+oUs24iQs1n]NrkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1s0;R-s0)I*rN6+$s/Z't
+ri,jppS[Y\iMH1Br1j4bqP!n]rL`qXrLNkVjI?+<rLNkXrh'4`r1X.bs.fOgs/#amr29Rnri,gq
+ri?"!pT=(jj0/3]riuI.r3QF1s0_g6s0i!<rji'?!5&6C$ba9g^V@S#_8=(,`;[^_`lH0AaiV]K
+bKS61c2l8<rm:eqe'n<G!nGlQrn%2&!87>)rnIJ.qq_2,r86l!pYl#/puDA7roO%>s6'CFrTX=H
+s6KXMs6]jSrU9dUs7-'Ys7?9_rUp3arqH?cs7uZjqYU6hr;H0bJcC<$M>r)~>
+JcC<$JcC<$kPsH=oDSF]o_\R_rV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro4(>iSjdos5*h5rS@M/!8IJ+s4RG)r7Cu"s4."rrmUkpqU,;hrQk>crltGdr6,)^s2k2[
+s2Y/Zrl+oUs24iQs1n]NrkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1s0;R-s0)I*rN6+$s/Z't
+ri,jppS[Y\iMH1Br1j4bqP!n]rL`qXrLNkVjI?+<rLNkXrh'4`r1X.bs.fOgs/#amr29Rnri,gq
+ri?"!pT=(jj0/3]riuI.r3QF1s0_g6s0i!<rji'?!5&6C$ba9g^V@S#_8=(,`;[^_`lH0AaiV]K
+bKS61c2l8<rm:eqe'n<G!nGlQrn%2&!87>)rnIJ.qq_2,r86l!pYl#/puDA7roO%>s6'CFrTX=H
+s6KXMs6]jSrU9dUs7-'Ys7?9_rUp3arqH?cs7uZjqYU6hr;H0bJcC<$M>r)~>
+JcC<$JcC<$kPsH=oDSF]o_\R_rV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro4(>iSjdos5*h5rS@M/!8IJ+s4RG)r7Cu"s4."rrmUkpqU,;hrQk>crltGdr6,)^s2k2[
+s2Y/Zrl+oUs24iQs1n]NrkJKI!58BEs189Brji'=!4Vs9s0Vj6rj2X1s0;R-s0)I*rN6+$s/Z't
+ri,jppS[Y\iMH1Br1j4bqP!n]rL`qXrLNkVjI?+<rLNkXrh'4`r1X.bs.fOgs/#amr29Rnri,gq
+ri?"!pT=(jj0/3]riuI.r3QF1s0_g6s0i!<rji'?!5&6C$ba9g^V@S#_8=(,`;[^_`lH0AaiV]K
+bKS61c2l8<rm:eqe'n<G!nGlQrn%2&!87>)rnIJ.qq_2,r86l!pYl#/puDA7roO%>s6'CFrTX=H
+s6KXMs6]jSrU9dUs7-'Ys7?9_rUp3arqH?cs7uZjqYU6hr;H0bJcC<$M>r)~>
+JcC<$JcC<$jo=3:oDSF]p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro=%<!9*n7!oMkkrS7P1gY;\\s4RD(rR_&"s4."rrR:boq9f2grQkAdrltGdr6,,_rlP,[
+s2P,ZrPefT!5ncP!l;[frkANK]tOEX!kZ%Trj`'>\,E`:[C!=?Zi@<2Z2Lp,YQ(d(XoGL%X8Apq
+WVi^FVtd.dV>-kbU]."aU&CY`TD5#USbJZQS+iHOSberWTDtS^U&UkdU]%"gV>mFkVuEXpWVidq
+X8]3sXo,?uYL]rVZ2M!*Zi7?3[JdQ6[fEr:\Hf^X]=bei]tXK\!PlPN_@OQ&`Poj:a2l?Db0%oN
+bg$.4!RK-ld/h\Erm^tu!7q/$s4IA)rn@D,rnRG-rndV2oAK9"pYto,rT*q=qr[n@s60CFs6BXM
+r9XINs6fjSs7$'YrUU![s7H9_rq?Bdr:p9erqcNhrVZTlnc"+>JcCQ+J,~>
+JcC<$JcC<$jo=3:oDSF]p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro=%<!9*n7!oMkkrS7P1gY;\\s4RD(rR_&"s4."rrR:boq9f2grQkAdrltGdr6,,_rlP,[
+s2P,ZrPefT!5ncP!l;[frkANK]tOEX!kZ%Trj`'>\,E`:[C!=?Zi@<2Z2Lp,YQ(d(XoGL%X8Apq
+WVi^FVtd.dV>-kbU]."aU&CY`TD5#USbJZQS+iHOSberWTDtS^U&UkdU]%"gV>mFkVuEXpWVidq
+X8]3sXo,?uYL]rVZ2M!*Zi7?3[JdQ6[fEr:\Hf^X]=bei]tXK\!PlPN_@OQ&`Poj:a2l?Db0%oN
+bg$.4!RK-ld/h\Erm^tu!7q/$s4IA)rn@D,rnRG-rndV2oAK9"pYto,rT*q=qr[n@s60CFs6BXM
+r9XINs6fjSs7$'YrUU![s7H9_rq?Bdr:p9erqcNhrVZTlnc"+>JcCQ+J,~>
+JcC<$JcC<$jo=3:oDSF]p&"^arV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+!p/M(ro=%<!9*n7!oMkkrS7P1gY;\\s4RD(rR_&"s4."rrR:boq9f2grQkAdrltGdr6,,_rlP,[
+s2P,ZrPefT!5ncP!l;[frkANK]tOEX!kZ%Trj`'>\,E`:[C!=?Zi@<2Z2Lp,YQ(d(XoGL%X8Apq
+WVi^FVtd.dV>-kbU]."aU&CY`TD5#USbJZQS+iHOSberWTDtS^U&UkdU]%"gV>mFkVuEXpWVidq
+X8]3sXo,?uYL]rVZ2M!*Zi7?3[JdQ6[fEr:\Hf^X]=bei]tXK\!PlPN_@OQ&`Poj:a2l?Db0%oN
+bg$.4!RK-ld/h\Erm^tu!7q/$s4IA)rn@D,rnRG-rndV2oAK9"pYto,rT*q=qr[n@s60CFs6BXM
+r9XINs6fjSs7$'YrUU![s7H9_rq?Bdr:p9erqcNhrVZTlnc"+>JcCQ+J,~>
+JcC<$JcC<$jT"$7oDSI^pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+s5a7Aro=%<s5Et8s53k5rn[V0s4dM+rn7>(r7Cr!rmgkprmUhoq9f2grm1JerltGdrQG2_s2k8]
+s2Y/Zrl+oUs24iQ!l;[frkANK]tOEX!kZ%Trj`*?\$u@F!k#DBrj2X1s0;O,s0)I*r2p"#ri>jp
+qPiGPm&0cYrMB=crhKFdqP!n]rL`eTn"'3Erh'1_r1X.brhKFfs/#amrMTXns/Gssri?(#qlTh"
+rNG^pi3E0bqQp1.rjD^5s0r$<rOE!@]=\'T'tq>q^V@S"_8=(,_o0O5`l?'?aN;U(b5oi3rltPj
+d/MDndaS3F!nGlQrmq5(g"HAYs4dS/r8%A/rnmM/q;Lr)nDjH-rT3n<roa=Fr9=4Gs6KXMrpBaR
+rU9dUs7-'Ys7?9_r:U*`s7cHdrqZQiqYU6hr;H0bJcC<$M#Vu~>
+JcC<$JcC<$jT"$7oDSI^pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+s5a7Aro=%<s5Et8s53k5rn[V0s4dM+rn7>(r7Cr!rmgkprmUhoq9f2grm1JerltGdrQG2_s2k8]
+s2Y/Zrl+oUs24iQ!l;[frkANK]tOEX!kZ%Trj`*?\$u@F!k#DBrj2X1s0;O,s0)I*r2p"#ri>jp
+qPiGPm&0cYrMB=crhKFdqP!n]rL`eTn"'3Erh'1_r1X.brhKFfs/#amrMTXns/Gssri?(#qlTh"
+rNG^pi3E0bqQp1.rjD^5s0r$<rOE!@]=\'T'tq>q^V@S"_8=(,_o0O5`l?'?aN;U(b5oi3rltPj
+d/MDndaS3F!nGlQrmq5(g"HAYs4dS/r8%A/rnmM/q;Lr)nDjH-rT3n<roa=Fr9=4Gs6KXMrpBaR
+rU9dUs7-'Ys7?9_r:U*`s7cHdrqZQiqYU6hr;H0bJcC<$M#Vu~>
+JcC<$JcC<$jT"$7oDSI^pA=gbrV??crqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rojLJkNDj,
+s5a7Aro=%<s5Et8s53k5rn[V0s4dM+rn7>(r7Cr!rmgkprmUhoq9f2grm1JerltGdrQG2_s2k8]
+s2Y/Zrl+oUs24iQ!l;[frkANK]tOEX!kZ%Trj`*?\$u@F!k#DBrj2X1s0;O,s0)I*r2p"#ri>jp
+qPiGPm&0cYrMB=crhKFdqP!n]rL`eTn"'3Erh'1_r1X.brhKFfs/#amrMTXns/Gssri?(#qlTh"
+rNG^pi3E0bqQp1.rjD^5s0r$<rOE!@]=\'T'tq>q^V@S"_8=(,_o0O5`l?'?aN;U(b5oi3rltPj
+d/MDndaS3F!nGlQrmq5(g"HAYs4dS/r8%A/rnmM/q;Lr)nDjH-rT3n<roa=Fr9=4Gs6KXMrpBaR
+rU9dUs7-'Ys7?9_r:U*`s7cHdrqZQiqYU6hr;H0bJcC<$M#Vu~>
+JcC<$JcC<$i;_U3o_nU`pA=gbrqZHdrqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a@D
+s5j:Aro=%<!9*n7s5*h5rS@M/s4dJ*s4RD(r7CnurmgkprR:_nqU,8grm1MfrltJerQG5`s2k5\
+s2Y/Zrl"rW_o)Jjs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0Vj6rNlO0s0;O,s0)I*qlTk!rN#Oi
+gSt"IpS[terMBCerM0@dq4[b[r1E5FrLa%]qk=%arhKFfrh]XlrMT[os/Gprs/Z1$qlTk#ric.%
+qQ\h]oX"P(rO)R3s0r$<rOE!@]=\'Ts1JEHrkAiV_84"*_o0L4`Q#sta8sE*rlYksc-FV\cd:(e
+daHUoeCE+#rn%2&!87>)!o)Mcr8%D0rnmS1r8IJ2l/VX$r8mb:roa:Er9=4Gs6KULs6]jSr9s[T
+s7-'Ys7?9_r:U*`s7cEcs7uZjqYU6hr;H0bJcC<$L];l~>
+JcC<$JcC<$i;_U3o_nU`pA=gbrqZHdrqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a@D
+s5j:Aro=%<!9*n7s5*h5rS@M/s4dJ*s4RD(r7CnurmgkprR:_nqU,8grm1MfrltJerQG5`s2k5\
+s2Y/Zrl"rW_o)Jjs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0Vj6rNlO0s0;O,s0)I*qlTk!rN#Oi
+gSt"IpS[terMBCerM0@dq4[b[r1E5FrLa%]qk=%arhKFfrh]XlrMT[os/Gprs/Z1$qlTk#ric.%
+qQ\h]oX"P(rO)R3s0r$<rOE!@]=\'Ts1JEHrkAiV_84"*_o0L4`Q#sta8sE*rlYksc-FV\cd:(e
+daHUoeCE+#rn%2&!87>)!o)Mcr8%D0rnmS1r8IJ2l/VX$r8mb:roa:Er9=4Gs6KULs6]jSr9s[T
+s7-'Ys7?9_r:U*`s7cEcs7uZjqYU6hr;H0bJcC<$L];l~>
+JcC<$JcC<$i;_U3o_nU`pA=gbrqZHdrqHHdr:U*^s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a@D
+s5j:Aro=%<!9*n7s5*h5rS@M/s4dJ*s4RD(r7CnurmgkprR:_nqU,8grm1MfrltJerQG5`s2k5\
+s2Y/Zrl"rW_o)Jjs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0Vj6rNlO0s0;O,s0)I*qlTk!rN#Oi
+gSt"IpS[terMBCerM0@dq4[b[r1E5FrLa%]qk=%arhKFfrh]XlrMT[os/Gprs/Z1$qlTk#ric.%
+qQ\h]oX"P(rO)R3s0r$<rOE!@]=\'Ts1JEHrkAiV_84"*_o0L4`Q#sta8sE*rlYksc-FV\cd:(e
+daHUoeCE+#rn%2&!87>)!o)Mcr8%D0rnmS1r8IJ2l/VX$r8mb:roa:Er9=4Gs6KULs6]jSr9s[T
+s7-'Ys7?9_r:U*`s7cEcs7uZjqYU6hr;H0bJcC<$L];l~>
+JcC<$JcC<$hZ)=/pAOgbp\XpcrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a=C
+!p/M(ro=%<s5Et8s53k5rS@M/rnIA)s4RD(qq(etrmghorR:_nqU,;hrm1Mfs3:SfrQG5`s2k8]
+s2Y/Zrl+oU!5nfQs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0_m6rj2X1s0;L+s0)F)qQ9[sqlA,E
+ql0Llq5=4hrMB@drhKFdq4[\Ym[sEMqP!n_rhKFfrh]XlrMT[os/Gprs/Z1$r2p"%ric1&rNZ7*
+e$JqYrO)O2s0r$<r4)m?]=\'Ts1JEHrkJKK!5\ZO!Q2kT`<"!!rl>hrb0.uPbg"GYcd:%ddF-Lm
+eC<%!f)F8&f\+sWgAfn-h#6(.hZ)L1i;MX4ip,RujSJ!5k5FKBkkjWElMg,Im/QJQmelPRnGi%W
+o)J=\o_nI_pAXgaq#:*gqYL*fr;?N`rdk*#s+gW)~>
+JcC<$JcC<$hZ)=/pAOgbp\XpcrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a=C
+!p/M(ro=%<s5Et8s53k5rS@M/rnIA)s4RD(qq(etrmghorR:_nqU,;hrm1Mfs3:SfrQG5`s2k8]
+s2Y/Zrl+oU!5nfQs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0_m6rj2X1s0;L+s0)F)qQ9[sqlA,E
+ql0Llq5=4hrMB@drhKFdq4[\Ym[sEMqP!n_rhKFfrh]XlrMT[os/Gprs/Z1$r2p"%ric1&rNZ7*
+e$JqYrO)O2s0r$<r4)m?]=\'Ts1JEHrkJKK!5\ZO!Q2kT`<"!!rl>hrb0.uPbg"GYcd:%ddF-Lm
+eC<%!f)F8&f\+sWgAfn-h#6(.hZ)L1i;MX4ip,RujSJ!5k5FKBkkjWElMg,Im/QJQmelPRnGi%W
+o)J=\o_nI_pAXgaq#:*gqYL*fr;?N`rdk*#s+gW)~>
+JcC<$JcC<$hZ)=/pAOgbp\XpcrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIH!9a=C
+!p/M(ro=%<s5Et8s53k5rS@M/rnIA)s4RD(qq(etrmghorR:_nqU,;hrm1Mfs3:SfrQG5`s2k8]
+s2Y/Zrl+oU!5nfQs1n]NrkANK]tOEX!kZ%Trj`*?\$u@Fs0_m6rj2X1s0;L+s0)F)qQ9[sqlA,E
+ql0Llq5=4hrMB@drhKFdq4[\Ym[sEMqP!n_rhKFfrh]XlrMT[os/Gprs/Z1$r2p"%ric1&rNZ7*
+e$JqYrO)O2s0r$<r4)m?]=\'Ts1JEHrkJKK!5\ZO!Q2kT`<"!!rl>hrb0.uPbg"GYcd:%ddF-Lm
+eC<%!f)F8&f\+sWgAfn-h#6(.hZ)L1i;MX4ip,RujSJ!5k5FKBkkjWElMg,Im/QJQmelPRnGi%W
+o)J=\o_nI_pAXgaq#:*gqYL*fr;?N`rdk*#s+gW)~>
+JcC<$JcC<$h#H+-pAOgbp\XsdrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIHs6'CD
+s5a7ArT!q;!9*n7s53k5rS@J.s4dJ*rn7;'qUb\srRL_nrR:_nqpGDis3LVgs3:SfrQG5`s2k8]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189Brji'=!4Vp8s0Vj6rNlO0riuC*ric=(poX7kg8jnH
+rMfaoqPX=irh]IerM0=co:c#RoV)8YrM0:ds/#^lrMT[os/Gprs/Z1$rN6(%s0)=(riuF-p9WM\
+q6g%,rO;g:r42j=s1A9Cs1SHHrkBAe_84"*_o'F3`Q#p<aN2KFb0.uPc-=PZcd;[=!RfHre-FOT
+f%8O+f\-8Xs4dS/rn[V2rnmY3ro*h8o],N'p>tu0rTF1DqW\%Frp0LKs6]gRrU9aTs7-'Ys7?6^
+rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$LAuc~>
+JcC<$JcC<$h#H+-pAOgbp\XsdrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIHs6'CD
+s5a7ArT!q;!9*n7s53k5rS@J.s4dJ*rn7;'qUb\srRL_nrR:_nqpGDis3LVgs3:SfrQG5`s2k8]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189Brji'=!4Vp8s0Vj6rNlO0riuC*ric=(poX7kg8jnH
+rMfaoqPX=irh]IerM0=co:c#RoV)8YrM0:ds/#^lrMT[os/Gprs/Z1$rN6(%s0)=(riuF-p9WM\
+q6g%,rO;g:r42j=s1A9Cs1SHHrkBAe_84"*_o'F3`Q#p<aN2KFb0.uPc-=PZcd;[=!RfHre-FOT
+f%8O+f\-8Xs4dS/rn[V2rnmY3ro*h8o],N'p>tu0rTF1DqW\%Frp0LKs6]gRrU9aTs7-'Ys7?6^
+rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$LAuc~>
+JcC<$JcC<$h#H+-pAOgbp\XsdrV??cs7cNdrUp3_s7?3[s7--YrpTmT!:BaO!pf.:rosIHs6'CD
+s5a7ArT!q;!9*n7s53k5rS@J.s4dJ*rn7;'qUb\srRL_nrR:_nqpGDis3LVgs3:SfrQG5`s2k8]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189Brji'=!4Vp8s0Vj6rNlO0riuC*ric=(poX7kg8jnH
+rMfaoqPX=irh]IerM0=co:c#RoV)8YrM0:ds/#^lrMT[os/Gprs/Z1$rN6(%s0)=(riuF-p9WM\
+q6g%,rO;g:r42j=s1A9Cs1SHHrkBAe_84"*_o'F3`Q#p<aN2KFb0.uPc-=PZcd;[=!RfHre-FOT
+f%8O+f\-8Xs4dS/rn[V2rnmY3ro*h8o],N'p>tu0rTF1DqW\%Frp0LKs6]gRrU9aTs7-'Ys7?6^
+rUp0`s7cHdrqZQiqYU6hr;H0bJcC<$LAuc~>
+JcC<$JcC<$gAfk*p\jsdp\XsdrV?BdrqHHdr:U*^s7?3[s7$*YrU9dS!:BaOs6B[MrTOCIkNDj,
+s5j:Aro=%<s5Eq7s53k5r8%D.rnI>(rn7;'q:GSrr71YnrR:boqpGGjrm1Pgs3:SfrQ>8baiXP'
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189BrOE!>\$u@Fs0_m6r3QF/s0;I*rNH.%d]N;Gr2]Um
+rMfdpqPX=irMB@drM07am\0QQrM07crh]Xlr29Rns/Gssri?(#rN6+&ric7(s0;R/q6U"+pU/P[
+rO;d9r42j=rk&0Bs1SHHrkJKK!5\ZO&AuH)`Poj;a2l?Db0%oNbg$.4!RK-ld/h\ErmUu!f)F8&
+f\+sWg&g$ah#?.0hZ)L2i;V^7iqVR0jRM@$k5=E?kkaQClMp2Im/QJPmeuVSnG_tVo)J=\o_nI^
+pAamaq#C0hqYC$er;?N`rdk*#s+^Q(~>
+JcC<$JcC<$gAfk*p\jsdp\XsdrV?BdrqHHdr:U*^s7?3[s7$*YrU9dS!:BaOs6B[MrTOCIkNDj,
+s5j:Aro=%<s5Eq7s53k5r8%D.rnI>(rn7;'q:GSrr71YnrR:boqpGGjrm1Pgs3:SfrQ>8baiXP'
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189BrOE!>\$u@Fs0_m6r3QF/s0;I*rNH.%d]N;Gr2]Um
+rMfdpqPX=irMB@drM07am\0QQrM07crh]Xlr29Rns/Gssri?(#rN6+&ric7(s0;R/q6U"+pU/P[
+rO;d9r42j=rk&0Bs1SHHrkJKK!5\ZO&AuH)`Poj;a2l?Db0%oNbg$.4!RK-ld/h\ErmUu!f)F8&
+f\+sWg&g$ah#?.0hZ)L2i;V^7iqVR0jRM@$k5=E?kkaQClMp2Im/QJPmeuVSnG_tVo)J=\o_nI^
+pAamaq#C0hqYC$er;?N`rdk*#s+^Q(~>
+JcC<$JcC<$gAfk*p\jsdp\XsdrV?BdrqHHdr:U*^s7?3[s7$*YrU9dS!:BaOs6B[MrTOCIkNDj,
+s5j:Aro=%<s5Eq7s53k5r8%D.rnI>(rn7;'q:GSrr71YnrR:boqpGGjrm1Pgs3:SfrQ>8baiXP'
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs189BrOE!>\$u@Fs0_m6r3QF/s0;I*rNH.%d]N;Gr2]Um
+rMfdpqPX=irMB@drM07am\0QQrM07crh]Xlr29Rns/Gssri?(#rN6+&ric7(s0;R/q6U"+pU/P[
+rO;d9r42j=rk&0Bs1SHHrkJKK!5\ZO&AuH)`Poj;a2l?Db0%oNbg$.4!RK-ld/h\ErmUu!f)F8&
+f\+sWg&g$ah#?.0hZ)L2i;V^7iqVR0jRM@$k5=E?kkaQClMp2Im/QJPmeuVSnG_tVo)J=\o_nI^
+pAamaq#C0hqYC$er;?N`rdk*#s+^Q(~>
+JcC<$JcC<$f`0V'q#1'eq"t$drqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIH!9a=C
+s5a7ArT!q;s5Eq7s53h4r8%D.rnI>(rRq/%q:GPqrRLbormUkpr6bPks3LVg!mSs5rQG5`!6P5]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs1A<Brji'=!4Vp8s0_m6r3QF/riu:'r3,aqp9!qhmB->g
+r2][ori,mqqPX=irMB:bqP3bYqP3k^rh]Ukr29Rns/Gsss/Z.#rN6+&s0)@)s0;R/qm6:/r3aq\
+qR?F5qRQU:s1A6Bs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-\aiaV+!R/gfc3qtFdF$Cje'umte^j`O
+!SH*)gAfn-h#6%1hV[5gi;_d8iqh^5jS@p!k54?>kkXKBlMg,Hm/QJPmelPRnGi%Vo)J=\o_nI^
+pAamaq#:*gqYL*fr;?N`rdk*#s+UK'~>
+JcC<$JcC<$f`0V'q#1'eq"t$drqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIH!9a=C
+s5a7ArT!q;s5Eq7s53h4r8%D.rnI>(rRq/%q:GPqrRLbormUkpr6bPks3LVg!mSs5rQG5`!6P5]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs1A<Brji'=!4Vp8s0_m6r3QF/riu:'r3,aqp9!qhmB->g
+r2][ori,mqqPX=irMB:bqP3bYqP3k^rh]Ukr29Rns/Gsss/Z.#rN6+&s0)@)s0;R/qm6:/r3aq\
+qR?F5qRQU:s1A6Bs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-\aiaV+!R/gfc3qtFdF$Cje'umte^j`O
+!SH*)gAfn-h#6%1hV[5gi;_d8iqh^5jS@p!k54?>kkXKBlMg,Hm/QJPmelPRnGi%Vo)J=\o_nI^
+pAamaq#:*gqYL*fr;?N`rdk*#s+UK'~>
+JcC<$JcC<$f`0V'q#1'eq"t$drqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIH!9a=C
+s5a7ArT!q;s5Eq7s53h4r8%D.rnI>(rRq/%q:GPqrRLbormUkpr6bPks3LVg!mSs5rQG5`!6P5]
+s2P,Zrl+oU!5nfQs1n]NrkJKI!58BEs1A<Brji'=!4Vp8s0_m6r3QF/riu:'r3,aqp9!qhmB->g
+r2][ori,mqqPX=irMB:bqP3bYqP3k^rh]Ukr29Rns/Gsss/Z.#rN6+&s0)@)s0;R/qm6:/r3aq\
+qR?F5qRQU:s1A6Bs1SHHrkJKK!5\ZOs2+iTrl"oXa8X-\aiaV+!R/gfc3qtFdF$Cje'umte^j`O
+!SH*)gAfn-h#6%1hV[5gi;_d8iqh^5jS@p!k54?>kkXKBlMg,Hm/QJPmelPRnGi%Vo)J=\o_nI^
+pAamaq#:*gqYL*fr;?N`rdk*#s+UK'~>
+JcC<$JcC<$ec4;$q>L3gq"t$drqZHds7cQer:U*^s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'CD
+s5j:ArT!q;s5Eq7rnmb4r8%A-rS.2&rRq/%pt,JqrRLeprmUkprR(Yls3LYhs3:Sfrlb>as2k8]
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEX!kZ%Trji'=s0qs8s0_m6qm6:-riu.#f!"nPpT=Cqri>mq
+ri,mqqPX:hr2&JMrMBIir29Rnri,jrs/Z1$r2p"%s0)C*riuL/r3QC0rO)F/pp]Y#pp]q+pppC8
+rk&*@s1SHHrkJKKs2"]O#K+Ku`Poj:a8X-\aiaV+(!OqJcHjh`dF$Cke'umtf%/I)f\"mVg&g$a
+h#?.0hZ)L3i;_d9iqqd7jS\-&k4e'8kkOE@lMg,Hm/HDPmelPQnGi%Vo)J=\o_eC^pAXgaq#:*g
+qYL*fr;6H_rdk*#s+UK'~>
+JcC<$JcC<$ec4;$q>L3gq"t$drqZHds7cQer:U*^s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'CD
+s5j:ArT!q;s5Eq7rnmb4r8%A-rS.2&rRq/%pt,JqrRLeprmUkprR(Yls3LYhs3:Sfrlb>as2k8]
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEX!kZ%Trji'=s0qs8s0_m6qm6:-riu.#f!"nPpT=Cqri>mq
+ri,mqqPX:hr2&JMrMBIir29Rnri,jrs/Z1$r2p"%s0)C*riuL/r3QC0rO)F/pp]Y#pp]q+pppC8
+rk&*@s1SHHrkJKKs2"]O#K+Ku`Poj:a8X-\aiaV+(!OqJcHjh`dF$Cke'umtf%/I)f\"mVg&g$a
+h#?.0hZ)L3i;_d9iqqd7jS\-&k4e'8kkOE@lMg,Hm/HDPmelPQnGi%Vo)J=\o_eC^pAXgaq#:*g
+qYL*fr;6H_rdk*#s+UK'~>
+JcC<$JcC<$ec4;$q>L3gq"t$drqZHds7cQer:U*^s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'CD
+s5j:ArT!q;s5Eq7rnmb4r8%A-rS.2&rRq/%pt,JqrRLeprmUkprR(Yls3LYhs3:Sfrlb>as2k8]
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEX!kZ%Trji'=s0qs8s0_m6qm6:-riu.#f!"nPpT=Cqri>mq
+ri,mqqPX:hr2&JMrMBIir29Rnri,jrs/Z1$r2p"%s0)C*riuL/r3QC0rO)F/pp]Y#pp]q+pppC8
+rk&*@s1SHHrkJKKs2"]O#K+Ku`Poj:a8X-\aiaV+(!OqJcHjh`dF$Cke'umtf%/I)f\"mVg&g$a
+h#?.0hZ)L3i;_d9iqqd7jS\-&k4e'8kkOE@lMg,Hm/HDPmelPQnGi%Vo)J=\o_eC^pAXgaq#:*g
+qYL*fr;6H_rdk*#s+UK'~>
+JcC<$JcC<$df8#"q>L3gq"t'erqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'@C
+s5j:ArT!q;s5Eq7rnm_3r8%>,rnI8&r7V&$pt,Jqrmgnqs3ptqrR(Yls3LYhs31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs189BrOMs<s0qs8rjDd5qQp.+qm"DMr3-%$q5sXtrN#gq
+ri,jpqPX7gqPEk\qPF.fqksFlri,jrs/Z.#rN6+&s0)C*s0;R/rNlL1rjDU2rO;[6cFNnbrk&'?
+s1SHHrP/BJs2"]Os2+iTrl$#"a2c9BaiV]KbKS2TcHab^d*^7he'lgre^i='f@\a/rn7G.gt_nb
+!oDhlrS[_7s5Nt:rT*q=oB,Q*p?;57rTa@Iqs==LrpK^Qrp]sXr:9mZrq--]s7ZHdr:p9erqcKg
+r;?Kknc"+>JcCE'J,~>
+JcC<$JcC<$df8#"q>L3gq"t'erqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'@C
+s5j:ArT!q;s5Eq7rnm_3r8%>,rnI8&r7V&$pt,Jqrmgnqs3ptqrR(Yls3LYhs31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs189BrOMs<s0qs8rjDd5qQp.+qm"DMr3-%$q5sXtrN#gq
+ri,jpqPX7gqPEk\qPF.fqksFlri,jrs/Z.#rN6+&s0)C*s0;R/rNlL1rjDU2rO;[6cFNnbrk&'?
+s1SHHrP/BJs2"]Os2+iTrl$#"a2c9BaiV]KbKS2TcHab^d*^7he'lgre^i='f@\a/rn7G.gt_nb
+!oDhlrS[_7s5Nt:rT*q=oB,Q*p?;57rTa@Iqs==LrpK^Qrp]sXr:9mZrq--]s7ZHdr:p9erqcKg
+r;?Kknc"+>JcCE'J,~>
+JcC<$JcC<$df8#"q>L3gq"t'erqZHds7cNdrUp3_s7?3[s7--YrpTmTs6]gPs6K^MrosIHs6'@C
+s5j:ArT!q;s5Eq7rnm_3r8%>,rnI8&r7V&$pt,Jqrmgnqs3ptqrR(Yls3LYhs31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs189BrOMs<s0qs8rjDd5qQp.+qm"DMr3-%$q5sXtrN#gq
+ri,jpqPX7gqPEk\qPF.fqksFlri,jrs/Z.#rN6+&s0)C*s0;R/rNlL1rjDU2rO;[6cFNnbrk&'?
+s1SHHrP/BJs2"]Os2+iTrl$#"a2c9BaiV]KbKS2TcHab^d*^7he'lgre^i='f@\a/rn7G.gt_nb
+!oDhlrS[_7s5Nt:rT*q=oB,Q*p?;57rTa@Iqs==LrpK^Qrp]sXr:9mZrq--]s7ZHdr:p9erqcKg
+r;?Kknc"+>JcCE'J,~>
+JcC<$JcC<$d/Vi!q>L6hq"t$drqZKerqHHdr:U*^s7?3[s7$*YrU9dSs6]gPs6K^MrTX@G!9a=C
+s5j:ArT!n:s5En6rnm_3qq_5+rS.,$r7V&$q:GVsrmgqrs3ptqrR(Yls3L\is31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs1A<BrOMs<s0qp7s0_j5pp9h&e$8VNr3-+&qQ9^tri>pr
+rMfaopS[GVpo"+iri,gqs/Z1$r2p"%s0)C*s0;U0r3QF1rjD[4rO;a8o==;#o==V,r4Dj=rk8<F
+rP/BJs2"]Os2+iTrl+oW!6>)[&BW);bKJ,Sc-FV\d*U1fdaS3F!S,d#f*Bs]g"P07gYDeas5*e5
+ro!h8s5Nt:roF(?pZD86n*'<+r9F7HqX"4KrpK^Qrp]pWr:9mZrq--]s7ZHdr:p9erqcHfrVZTl
+nG\"=JcCE'J,~>
+JcC<$JcC<$d/Vi!q>L6hq"t$drqZKerqHHdr:U*^s7?3[s7$*YrU9dSs6]gPs6K^MrTX@G!9a=C
+s5j:ArT!n:s5En6rnm_3qq_5+rS.,$r7V&$q:GVsrmgqrs3ptqrR(Yls3L\is31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs1A<BrOMs<s0qp7s0_j5pp9h&e$8VNr3-+&qQ9^tri>pr
+rMfaopS[GVpo"+iri,gqs/Z1$r2p"%s0)C*s0;U0r3QF1rjD[4rO;a8o==;#o==V,r4Dj=rk8<F
+rP/BJs2"]Os2+iTrl+oW!6>)[&BW);bKJ,Sc-FV\d*U1fdaS3F!S,d#f*Bs]g"P07gYDeas5*e5
+ro!h8s5Nt:roF(?pZD86n*'<+r9F7HqX"4KrpK^Qrp]pWr:9mZrq--]s7ZHdr:p9erqcHfrVZTl
+nG\"=JcCE'J,~>
+JcC<$JcC<$d/Vi!q>L6hq"t$drqZKerqHHdr:U*^s7?3[s7$*YrU9dSs6]gPs6K^MrTX@G!9a=C
+s5j:ArT!n:s5En6rnm_3qq_5+rS.,$r7V&$q:GVsrmgqrs3ptqrR(Yls3L\is31PfrQ>8baiXP'
+!lr=#rl"rW_o)Jj!l;[frkANK]tOEXs1A<BrOMs<s0qp7s0_j5pp9h&e$8VNr3-+&qQ9^tri>pr
+rMfaopS[GVpo"+iri,gqs/Z1$r2p"%s0)C*s0;U0r3QF1rjD[4rO;a8o==;#o==V,r4Dj=rk8<F
+rP/BJs2"]Os2+iTrl+oW!6>)[&BW);bKJ,Sc-FV\d*U1fdaS3F!S,d#f*Bs]g"P07gYDeas5*e5
+ro!h8s5Nt:roF(?pZD86n*'<+r9F7HqX"4KrpK^Qrp]pWr:9mZrq--]s7ZHdr:p9erqcHfrVZTl
+nG\"=JcCE'J,~>
+JcC<$JcC<$c2ZSuq>L6hq"t'erV?BdrqHHdr:U*^s7?3[s7--YrpTmTs6]dOs6B[MrTX@Gs6'@C
+s5j:Ar8[h:s5Ek5rnm_3q;)#)r7h##rRq/%qUb_trmgtsrmUnqrQt\ncd2R8!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKI!58?Ds1A<BrOMs<s0qm6rjD[2cEm>Pqm#t$rNH4'qlTk!rN#dp
+rMfaokGS9WrMf^pri?(#r2p"%s0)C*s0;U0r3QF1s0_d5rjVm:q76@5e@YIfrOr3ErP/?Is2"]O
+s24lTrl#,^a2c9BaiV^)b5oi3rltPjd/MDndaS3F!S,d#f)aOWrn@D,!8RS0!oDhlro!h8s5Nt:
+s5a1@qW@\<pZU`'qs++FqX"1JrpK[Ps7$$Xr:9jYs7H6^rq??cr:p9erqcHfrVZTlnG\"=JcCB&
+J,~>
+JcC<$JcC<$c2ZSuq>L6hq"t'erV?BdrqHHdr:U*^s7?3[s7--YrpTmTs6]dOs6B[MrTX@Gs6'@C
+s5j:Ar8[h:s5Ek5rnm_3q;)#)r7h##rRq/%qUb_trmgtsrmUnqrQt\ncd2R8!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKI!58?Ds1A<BrOMs<s0qm6rjD[2cEm>Pqm#t$rNH4'qlTk!rN#dp
+rMfaokGS9WrMf^pri?(#r2p"%s0)C*s0;U0r3QF1s0_d5rjVm:q76@5e@YIfrOr3ErP/?Is2"]O
+s24lTrl#,^a2c9BaiV^)b5oi3rltPjd/MDndaS3F!S,d#f)aOWrn@D,!8RS0!oDhlro!h8s5Nt:
+s5a1@qW@\<pZU`'qs++FqX"1JrpK[Ps7$$Xr:9jYs7H6^rq??cr:p9erqcHfrVZTlnG\"=JcCB&
+J,~>
+JcC<$JcC<$c2ZSuq>L6hq"t'erV?BdrqHHdr:U*^s7?3[s7--YrpTmTs6]dOs6B[MrTX@Gs6'@C
+s5j:Ar8[h:s5Ek5rnm_3q;)#)r7h##rRq/%qUb_trmgtsrmUnqrQt\ncd2R8!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKI!58?Ds1A<BrOMs<s0qm6rjD[2cEm>Pqm#t$rNH4'qlTk!rN#dp
+rMfaokGS9WrMf^pri?(#r2p"%s0)C*s0;U0r3QF1s0_d5rjVm:q76@5e@YIfrOr3ErP/?Is2"]O
+s24lTrl#,^a2c9BaiV^)b5oi3rltPjd/MDndaS3F!S,d#f)aOWrn@D,!8RS0!oDhlro!h8s5Nt:
+s5a1@qW@\<pZU`'qs++FqX"1JrpK[Ps7$$Xr:9jYs7H6^rq??cr:p9erqcHfrVZTlnG\"=JcCB&
+J,~>
+JcC<$JcC<$aoC2rqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU0gUmHsl=s6K^MrTX@Gs6'@C
+s5j:Ar8[h:ro*b4rnm\2q;(u(r7h##rRq/%qq(l!rmgtss3q"rrR(Yl!71Vh!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKIs1SEEs1A<Br42j;rjVa4rO)I.bd75QrNZ4'rNH4'qlTk!rN#ao
+r2K%]r2KRnri?%"rN6(%s0)C*s0;U0rNlL1s0_g6rjVm:qml[:r4C.brOr0DqnN0Hs2"ZNs24lT
+rl+oW!6>)[#Kb-2bKJ,Rc2Puhcd;[=!RfHre,e+Nrmq2'g&B\,gYCT`h#cHjhu;R6i;hm8j8\3?
+jne-<kPXQ)l1aK?lhKiGmJZJMn,DhUnbhtWoDeI\p&=[ap\Xabq>U6equ$BirUBf;s+13&s*t~>
+JcC<$JcC<$aoC2rqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU0gUmHsl=s6K^MrTX@Gs6'@C
+s5j:Ar8[h:ro*b4rnm\2q;(u(r7h##rRq/%qq(l!rmgtss3q"rrR(Yl!71Vh!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKIs1SEEs1A<Br42j;rjVa4rO)I.bd75QrNZ4'rNH4'qlTk!rN#ao
+r2K%]r2KRnri?%"rN6(%s0)C*s0;U0rNlL1s0_g6rjVm:qml[:r4C.brOr0DqnN0Hs2"ZNs24lT
+rl+oW!6>)[#Kb-2bKJ,Rc2Puhcd;[=!RfHre,e+Nrmq2'g&B\,gYCT`h#cHjhu;R6i;hm8j8\3?
+jne-<kPXQ)l1aK?lhKiGmJZJMn,DhUnbhtWoDeI\p&=[ap\Xabq>U6equ$BirUBf;s+13&s*t~>
+JcC<$JcC<$aoC2rqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU0gUmHsl=s6K^MrTX@Gs6'@C
+s5j:Ar8[h:ro*b4rnm\2q;(u(r7h##rRq/%qq(l!rmgtss3q"rrR(Yl!71Vh!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jj!l;[frkJKIs1SEEs1A<Br42j;rjVa4rO)I.bd75QrNZ4'rNH4'qlTk!rN#ao
+r2K%]r2KRnri?%"rN6(%s0)C*s0;U0rNlL1s0_g6rjVm:qml[:r4C.brOr0DqnN0Hs2"ZNs24lT
+rl+oW!6>)[#Kb-2bKJ,Rc2Puhcd;[=!RfHre,e+Nrmq2'g&B\,gYCT`h#cHjhu;R6i;hm8j8\3?
+jne-<kPXQ)l1aK?lhKiGmJZJMn,DhUnbhtWoDeI\p&=[ap\Xabq>U6equ$BirUBf;s+13&s*t~>
+JcC<$JcC<$`W+lqqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaOs6K^MrTX@Gs6'@C
+roO1@r8[e9ro*b4rSRS1pYGc&r7h&$rn78&r7Cu"rmgtss3q"rrmCbms3L\i!mSs5rlb>a!6P5]
+!lr=#rl"rW_o)Jjs1n]NrP/BH!58?Ds1A9Ar42j;rO;O0dC&eWpp9q)riu=(ric=(qlTgurN#Xl
+oVqPari?%"r2ot$s0)C*s0;U0r3QF1s0_g6s0r!;r42g<rO_d9dCoIlqS3$Frk\QMs24lTrl+oW
+s2Y,[!QiL`bQ#cic-FV\cd;[=!RfHre,e+Nrmq2'g&B\+gYDeas5!b5ro!h8s5O";s5a4Aqr[n@
+rTN_7n*9]6p?_bFrU0ROrp]pWqssdYrq--]rq??cqtU0drqcHfrVZTlnG\"=JcC?%J,~>
+JcC<$JcC<$`W+lqqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaOs6K^MrTX@Gs6'@C
+roO1@r8[e9ro*b4rSRS1pYGc&r7h&$rn78&r7Cu"rmgtss3q"rrmCbms3L\i!mSs5rlb>a!6P5]
+!lr=#rl"rW_o)Jjs1n]NrP/BH!58?Ds1A9Ar42j;rO;O0dC&eWpp9q)riu=(ric=(qlTgurN#Xl
+oVqPari?%"r2ot$s0)C*s0;U0r3QF1s0_g6s0r!;r42g<rO_d9dCoIlqS3$Frk\QMs24lTrl+oW
+s2Y,[!QiL`bQ#cic-FV\cd;[=!RfHre,e+Nrmq2'g&B\+gYDeas5!b5ro!h8s5O";s5a4Aqr[n@
+rTN_7n*9]6p?_bFrU0ROrp]pWqssdYrq--]rq??cqtU0drqcHfrVZTlnG\"=JcC?%J,~>
+JcC<$JcC<$`W+lqqYg?iq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dS!:BaOs6K^MrTX@Gs6'@C
+roO1@r8[e9ro*b4rSRS1pYGc&r7h&$rn78&r7Cu"rmgtss3q"rrmCbms3L\i!mSs5rlb>a!6P5]
+!lr=#rl"rW_o)Jjs1n]NrP/BH!58?Ds1A9Ar42j;rO;O0dC&eWpp9q)riu=(ric=(qlTgurN#Xl
+oVqPari?%"r2ot$s0)C*s0;U0r3QF1s0_g6s0r!;r42g<rO_d9dCoIlqS3$Frk\QMs24lTrl+oW
+s2Y,[!QiL`bQ#cic-FV\cd;[=!RfHre,e+Nrmq2'g&B\+gYDeas5!b5ro!h8s5O";s5a4Aqr[n@
+rTN_7n*9]6p?_bFrU0ROrp]pWqssdYrq--]rq??cqtU0drqcHfrVZTlnG\"=JcC?%J,~>
+JcC<$JcC<$^Am<oqYg?iqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOs6K^MrTX@Gs6'@C
+roO1@qr@\8ro*_3r87J0p>,Z%rS.2&rn7;'r7Cu"s4.(ts3q"rrmCbms3L\i!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jjs2"`NrkJKIs1SBDs1A9Aqml^9r3sbUqmHC0q6U(+riu@)ric:'qlTdtr2].`
+rN#muqlTn$ric:)s0;U0rNlL1s0_g6s0r$<r42g<rk&$>r4Vm>o"XD&p:pRArk\NLs24lTrl+oW
+s2Y,[s2b8`rlZ)$c-=PZcd0tcdF-IleC<%!f%8O+f\-8X!ScE/h#cHjhu;R6i;hm9j8\3?jo"9?
+kPj]=l1=30lgsK@mJZJLn,DhUnb_nVoD\C[p&=[ap\agbq>U6equ$BirUBf;s+13$s*t~>
+JcC<$JcC<$^Am<oqYg?iqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOs6K^MrTX@Gs6'@C
+roO1@qr@\8ro*_3r87J0p>,Z%rS.2&rn7;'r7Cu"s4.(ts3q"rrmCbms3L\i!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jjs2"`NrkJKIs1SBDs1A9Aqml^9r3sbUqmHC0q6U(+riu@)ric:'qlTdtr2].`
+rN#muqlTn$ric:)s0;U0rNlL1s0_g6s0r$<r42g<rk&$>r4Vm>o"XD&p:pRArk\NLs24lTrl+oW
+s2Y,[s2b8`rlZ)$c-=PZcd0tcdF-IleC<%!f%8O+f\-8X!ScE/h#cHjhu;R6i;hm9j8\3?jo"9?
+kPj]=l1=30lgsK@mJZJLn,DhUnb_nVoD\C[p&=[ap\agbq>U6equ$BirUBf;s+13$s*t~>
+JcC<$JcC<$^Am<oqYg?iqYU6frqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOs6K^MrTX@Gs6'@C
+roO1@qr@\8ro*_3r87J0p>,Z%rS.2&rn7;'r7Cu"s4.(ts3q"rrmCbms3L\i!mSs5rlYAcaiXP'
+!lr=#rl"rW_o)Jjs2"`NrkJKIs1SBDs1A9Aqml^9r3sbUqmHC0q6U(+riu@)ric:'qlTdtr2].`
+rN#muqlTn$ric:)s0;U0rNlL1s0_g6s0r$<r42g<rk&$>r4Vm>o"XD&p:pRArk\NLs24lTrl+oW
+s2Y,[s2b8`rlZ)$c-=PZcd0tcdF-IleC<%!f%8O+f\-8X!ScE/h#cHjhu;R6i;hm9j8\3?jo"9?
+kPj]=l1=30lgsK@mJZJLn,DhUnb_nVoD\C[p&=[ap\agbq>U6equ$BirUBf;s+13$s*t~>
+JcC<$JcC<$]`7-nqu-Hjq>:-erqZKerqHHdrUp0^s7?3[s7--YrU9dSs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8rSdS1r87D.pYGf'rS.5'rn7;'rR_)#s4.(ts3gtrrQt\ncd2U9!mSs5rlYAcaiXP'
+!lr=#rl+oU!5nfQs2"`NrP/BHs1SBDrk&0@qRQL5caWSUr3cO2qQp1,riu@)rNH4'q5sLpo;hbi
+qQ9b"ric7(s0;U0r3QF1s0_g6s0r$<r42j=rk&'?rk86DahRbhrPABJs24lTrPefVs2Y,[s2b8`
+rlb>c!6tMg(=1@SdF$Cke'umtf%/I)f\"m2g=tB;rnRY4hr"Fk!o`.uro=%>s5j1@s6'CFq<@b@
+na#H+qsF@Mq="=PrUKdUs7?6^qt9s^rqH<brqZQiq>:-gqu-'aJcC<$Jc>`MJ,~>
+JcC<$JcC<$]`7-nqu-Hjq>:-erqZKerqHHdrUp0^s7?3[s7--YrU9dSs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8rSdS1r87D.pYGf'rS.5'rn7;'rR_)#s4.(ts3gtrrQt\ncd2U9!mSs5rlYAcaiXP'
+!lr=#rl+oU!5nfQs2"`NrP/BHs1SBDrk&0@qRQL5caWSUr3cO2qQp1,riu@)rNH4'q5sLpo;hbi
+qQ9b"ric7(s0;U0r3QF1s0_g6s0r$<r42j=rk&'?rk86DahRbhrPABJs24lTrPefVs2Y,[s2b8`
+rlb>c!6tMg(=1@SdF$Cke'umtf%/I)f\"m2g=tB;rnRY4hr"Fk!o`.uro=%>s5j1@s6'CFq<@b@
+na#H+qsF@Mq="=PrUKdUs7?6^qt9s^rqH<brqZQiq>:-gqu-'aJcC<$Jc>`MJ,~>
+JcC<$JcC<$]`7-nqu-Hjq>:-erqZKerqHHdrUp0^s7?3[s7--YrU9dSs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8rSdS1r87D.pYGf'rS.5'rn7;'rR_)#s4.(ts3gtrrQt\ncd2U9!mSs5rlYAcaiXP'
+!lr=#rl+oU!5nfQs2"`NrP/BHs1SBDrk&0@qRQL5caWSUr3cO2qQp1,riu@)rNH4'q5sLpo;hbi
+qQ9b"ric7(s0;U0r3QF1s0_g6s0r$<r42j=rk&'?rk86DahRbhrPABJs24lTrPefVs2Y,[s2b8`
+rlb>c!6tMg(=1@SdF$Cke'umtf%/I)f\"m2g=tB;rnRY4hr"Fk!o`.uro=%>s5j1@s6'CFq<@b@
+na#H+qsF@Mq="=PrUKdUs7?6^qt9s^rqH<brqZQiq>:-gqu-'aJcC<$Jc>`MJ,~>
+JcC<$JcC<$]Dq$mqu-Hjq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOrp0ULrTX@Groa4A
+roO1@qW%P6rSdM/r87D.ptbo(rnI>(s4RG)r7Cu"s4.+us3q"rrm:eocd2U9s31Pfrlb>a!6P5]
+s2P,Zrl+oU!5ncPs2"`NrkJHHs1S?Crk&-?ossCumCE#%r3uI0rjDa4qQp1,riu@)rNH1&o<%ql
+oWA(pric7(s0;U0r3QF1s0_g6s0r$<rOMp=s1A3Ark89EpqQU>otf\(qn`-Grkn`RrPefVs2Y,[
+s2k;`rlYPjc-=PZcd0u;d/h\ErmUu!f)F8+f\+s3g=tE<rnRV3hu;R6i;hm9ir\<'jo"9@kPj]B
+l29iCleq.*mJQDIn,DhTnb_nVoD\CZp&=[ap\Xabq>U6dqu$BirUBf;s+13$rrE(L~>
+JcC<$JcC<$]Dq$mqu-Hjq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOrp0ULrTX@Groa4A
+roO1@qW%P6rSdM/r87D.ptbo(rnI>(s4RG)r7Cu"s4.+us3q"rrm:eocd2U9s31Pfrlb>a!6P5]
+s2P,Zrl+oU!5ncPs2"`NrkJHHs1S?Crk&-?ossCumCE#%r3uI0rjDa4qQp1,riu@)rNH1&o<%ql
+oWA(pric7(s0;U0r3QF1s0_g6s0r$<rOMp=s1A3Ark89EpqQU>otf\(qn`-Grkn`RrPefVs2Y,[
+s2k;`rlYPjc-=PZcd0u;d/h\ErmUu!f)F8+f\+s3g=tE<rnRV3hu;R6i;hm9ir\<'jo"9@kPj]B
+l29iCleq.*mJQDIn,DhTnb_nVoD\CZp&=[ap\Xabq>U6dqu$BirUBf;s+13$rrE(L~>
+JcC<$JcC<$]Dq$mqu-Hjq>:-erqZKerqHHdr:U*^s7?3[s7--YrU9dSs6]dOrp0ULrTX@Groa4A
+roO1@qW%P6rSdM/r87D.ptbo(rnI>(s4RG)r7Cu"s4.+us3q"rrm:eocd2U9s31Pfrlb>a!6P5]
+s2P,Zrl+oU!5ncPs2"`NrkJHHs1S?Crk&-?ossCumCE#%r3uI0rjDa4qQp1,riu@)rNH1&o<%ql
+oWA(pric7(s0;U0r3QF1s0_g6s0r$<rOMp=s1A3Ark89EpqQU>otf\(qn`-Grkn`RrPefVs2Y,[
+s2k;`rlYPjc-=PZcd0u;d/h\ErmUu!f)F8+f\+s3g=tE<rnRV3hu;R6i;hm9ir\<'jo"9@kPj]B
+l29iCleq.*mJQDIn,DhTnb_nVoD\CZp&=[ap\Xabq>U6dqu$BirUBf;s+13$rrE(L~>
+JcC<$JcC<$])UsmqYg?iq>:0frqZHds7cNdrUp0^s7?3[s7--Yr9s[Rs6]dOs6K^Mr9=7Froa4A
+roO+>qW%P6r8IA-qqq>.q;)&*rnIA)s4RG)rR_)#s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,Zrl+oUs24iQs2"`NrP/?Gs1S<BrO_s<`OYrWrO;X3rjD^3qm6:-riu=(r3-"#nu_elrNH+&
+s0;R/rNlL1s0_g6s0r$<rOMs>rk&-Ark8<FqnN'Eqn_C2n\Ok7rPSWQr5J]Us2Y)Z!m/U-rlb>c
+!6tMg!mf6?rm:bpe,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>s5j4As6'FGqs"(Er9NJ2
+o^2MCp[A(MrUKdUrq$-]qt9s^rqH9arqZQiq>:*fr;H-aJcC<$JcGcMJ,~>
+JcC<$JcC<$])UsmqYg?iq>:0frqZHds7cNdrUp0^s7?3[s7--Yr9s[Rs6]dOs6K^Mr9=7Froa4A
+roO+>qW%P6r8IA-qqq>.q;)&*rnIA)s4RG)rR_)#s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,Zrl+oUs24iQs2"`NrP/?Gs1S<BrO_s<`OYrWrO;X3rjD^3qm6:-riu=(r3-"#nu_elrNH+&
+s0;R/rNlL1s0_g6s0r$<rOMs>rk&-Ark8<FqnN'Eqn_C2n\Ok7rPSWQr5J]Us2Y)Z!m/U-rlb>c
+!6tMg!mf6?rm:bpe,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>s5j4As6'FGqs"(Er9NJ2
+o^2MCp[A(MrUKdUrq$-]qt9s^rqH9arqZQiq>:*fr;H-aJcC<$JcGcMJ,~>
+JcC<$JcC<$])UsmqYg?iq>:0frqZHds7cNdrUp0^s7?3[s7--Yr9s[Rs6]dOs6K^Mr9=7Froa4A
+roO+>qW%P6r8IA-qqq>.q;)&*rnIA)s4RG)rR_)#s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,Zrl+oUs24iQs2"`NrP/?Gs1S<BrO_s<`OYrWrO;X3rjD^3qm6:-riu=(r3-"#nu_elrNH+&
+s0;R/rNlL1s0_g6s0r$<rOMs>rk&-Ark8<FqnN'Eqn_C2n\Ok7rPSWQr5J]Us2Y)Z!m/U-rlb>c
+!6tMg!mf6?rm:bpe,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>s5j4As6'FGqs"(Er9NJ2
+o^2MCp[A(MrUKdUrq$-]qt9s^rqH9arqZQiq>:*fr;H-aJcC<$JcGcMJ,~>
+JcC<$JcC<$\Gtakqu-Hjq>:0frqZHds7cNdr:U*^s7?3[rpg$XrU9dSs6]aNs6K^Mr9=4Es6':A
+roO+>q;_D4qr.8,r87J0qVD/+rnID*rn7>(rn%2$s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrP\iV_o)Gis2"`Nr4i9Grk8*>qRc%(lauu(ppp@5rO;[4rjDa4qm6:-rNZ.%pojUupojLt
+riuI.rNlL1s0_g6s0r$<rOMs>rk&-As1SEGr4i3GrPA'ApVYq+qnrBNqo/TTs2Y)Zs2k;`rQ>8d
+c-?75#LCcDdF$Cje,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>!9O1As6'CFr9=4GrTj%@
+m-XN7p$_kKrUKaTrU^$\qt9s^rqH9arqZNhqYU3gr;H*`JcC<$JcGcMJ,~>
+JcC<$JcC<$\Gtakqu-Hjq>:0frqZHds7cNdr:U*^s7?3[rpg$XrU9dSs6]aNs6K^Mr9=4Es6':A
+roO+>q;_D4qr.8,r87J0qVD/+rnID*rn7>(rn%2$s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrP\iV_o)Gis2"`Nr4i9Grk8*>qRc%(lauu(ppp@5rO;[4rjDa4qm6:-rNZ.%pojUupojLt
+riuI.rNlL1s0_g6s0r$<rOMs>rk&-As1SEGr4i3GrPA'ApVYq+qnrBNqo/TTs2Y)Zs2k;`rQ>8d
+c-?75#LCcDdF$Cje,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>!9O1As6'CFr9=4GrTj%@
+m-XN7p$_kKrUKaTrU^$\qt9s^rqH9arqZNhqYU3gr;H*`JcC<$JcGcMJ,~>
+JcC<$JcC<$\Gtakqu-Hjq>:0frqZHds7cNdr:U*^s7?3[rpg$XrU9dSs6]aNs6K^Mr9=4Es6':A
+roO+>q;_D4qr.8,r87J0qVD/+rnID*rn7>(rn%2$s4.+us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrP\iV_o)Gis2"`Nr4i9Grk8*>qRc%(lauu(ppp@5rO;[4rjDa4qm6:-rNZ.%pojUupojLt
+riuI.rNlL1s0_g6s0r$<rOMs>rk&-As1SEGr4i3GrPA'ApVYq+qnrBNqo/TTs2Y)Zs2k;`rQ>8d
+c-?75#LCcDdF$Cje,Ihte^j`O!SH*)g'?BfgtgfChV\=j!o`.uro=%>!9O1As6'CFr9=4GrTj%@
+m-XN7p$_kKrUKaTrU^$\qt9s^rqH9arqZNhqYU3gr;H*`JcC<$JcGcMJ,~>
+JcC<$JcC<$[K#Ljqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--YrU9dSrpB[Nrp0ULr9=4Eroa1@
+rT4"=pZ)22qVh2,rSRS1qq_;-rnID*s4RG)rR_)#!7h(us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrPefT!5n`Os2"`Nr4i3Erk67_qn)d;qRQR7rjVd5rjDa4qm67,rNYFfriuF-r3QF1rjD^5
+s0r$<rOMs>rk&-As1SHHr4i6Hrk\EIqSVU:l,3A9qSiHRrl=uYs2k;`rQG5b!6tMgs3C\lrm:u!
+e'lgre^`7Mf)aOWrn7D-h#?+2hV[5ihu_lsir7s>jQ5M%joFTDkl'cFlMg,Dm.]o4md]cDnGMhQ
+o)81Zo_S7[pAXg`q#1$fqYC$dr;?N^rdk*#s+14Ls*t~>
+JcC<$JcC<$[K#Ljqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--YrU9dSrpB[Nrp0ULr9=4Eroa1@
+rT4"=pZ)22qVh2,rSRS1qq_;-rnID*s4RG)rR_)#!7h(us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrPefT!5n`Os2"`Nr4i3Erk67_qn)d;qRQR7rjVd5rjDa4qm67,rNYFfriuF-r3QF1rjD^5
+s0r$<rOMs>rk&-As1SHHr4i6Hrk\EIqSVU:l,3A9qSiHRrl=uYs2k;`rQG5b!6tMgs3C\lrm:u!
+e'lgre^`7Mf)aOWrn7D-h#?+2hV[5ihu_lsir7s>jQ5M%joFTDkl'cFlMg,Dm.]o4md]cDnGMhQ
+o)81Zo_S7[pAXg`q#1$fqYC$dr;?N^rdk*#s+14Ls*t~>
+JcC<$JcC<$[K#Ljqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--YrU9dSrpB[Nrp0ULr9=4Eroa1@
+rT4"=pZ)22qVh2,rSRS1qq_;-rnID*s4RG)rR_)#!7h(us3q"rrm:eocd2U9!mSs5rlYAcaiXP'
+s2P,ZrPefT!5n`Os2"`Nr4i3Erk67_qn)d;qRQR7rjVd5rjDa4qm67,rNYFfriuF-r3QF1rjD^5
+s0r$<rOMs>rk&-As1SHHr4i6Hrk\EIqSVU:l,3A9qSiHRrl=uYs2k;`rQG5b!6tMgs3C\lrm:u!
+e'lgre^`7Mf)aOWrn7D-h#?+2hV[5ihu_lsir7s>jQ5M%joFTDkl'cFlMg,Dm.]o4md]cDnGMhQ
+o)81Zo_S7[pAXg`q#1$fqYC$dr;?N^rdk*#s+14Ls*t~>
+JcC<$JcC<$ZN'7iqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--Yr9s[Rs6]aNs6K[Lr9=4ErTF%>
+rT3t<p#Gr/r8IG/rSRV2r8%D.rnID*s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlYAcaiXP'
+s2Y/Zrl+oUs24cOs2"]MqnN*DqRu.+l+Q`%rO`$>qml^9rjVd5rjD^3qQp+*q6Bb"q6Bn(qm6:/
+rjD^5s0r$<r42j=s1A6Bs1SHHr4i9Irk\KKrPSQOho53*oYpdKrl=rXs2k;`rQG5bs3:Pg!mf6?
+rm:bpe,IkseH"2"f)aOWrn7D-h#?+7hV[5Ki8NYSro=%>s5j7Bs6'FGrTX=Hrp0CHqsF(EipZd6
+r:0URrU^$\qXsj]rV-3arV?Hhq"t$fqu-$`JcC<$JcG]KJ,~>
+JcC<$JcC<$ZN'7iqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--Yr9s[Rs6]aNs6K[Lr9=4ErTF%>
+rT3t<p#Gr/r8IG/rSRV2r8%D.rnID*s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlYAcaiXP'
+s2Y/Zrl+oUs24cOs2"]MqnN*DqRu.+l+Q`%rO`$>qml^9rjVd5rjD^3qQp+*q6Bb"q6Bn(qm6:/
+rjD^5s0r$<r42j=s1A6Bs1SHHr4i9Irk\KKrPSQOho53*oYpdKrl=rXs2k;`rQG5bs3:Pg!mf6?
+rm:bpe,IkseH"2"f)aOWrn7D-h#?+7hV[5Ki8NYSro=%>s5j7Bs6'FGrTX=Hrp0CHqsF(EipZd6
+r:0URrU^$\qXsj]rV-3arV?Hhq"t$fqu-$`JcC<$JcG]KJ,~>
+JcC<$JcC<$ZN'7iqu-Hjq>:0frqZHds7cNdr:U*^s7?0Zs7--Yr9s[Rs6]aNs6K[Lr9=4ErTF%>
+rT3t<p#Gr/r8IG/rSRV2r8%D.rnID*s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlYAcaiXP'
+s2Y/Zrl+oUs24cOs2"]MqnN*DqRu.+l+Q`%rO`$>qml^9rjVd5rjD^3qQp+*q6Bb"q6Bn(qm6:/
+rjD^5s0r$<r42j=s1A6Bs1SHHr4i9Irk\KKrPSQOho53*oYpdKrl=rXs2k;`rQG5bs3:Pg!mf6?
+rm:bpe,IkseH"2"f)aOWrn7D-h#?+7hV[5Ki8NYSro=%>s5j7Bs6'FGrTX=Hrp0CHqsF(EipZd6
+r:0URrU^$\qXsj]rV-3arV?Hhq"t$fqu-$`JcC<$JcG]KJ,~>
+JcC<$JcC<$Y5dngr;HQkq>:0frqZHds7cNdr:U*^s7?0Zs7-*XrU9aRs6]aNs6K[Lqs"+DrTF"=
+r8mh:p#Gr/r8IM1rnm_3r8%D.s4dM+s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlb>a!6P2\
+!lr=#rPefTs24cOrk\TLpqPUupqQO:qn;g<rO`'?qml^9rjVd5rjD^3pp9Copp9t,rjD[4s0r$<
+r42j=s1A6Bs1SHHrP/?Is2"TLrkn`Rou6=<j2Lr9rQ"fVrlP2_rQG5bs3:Pgs3C\lrmCbo!7Uqs
+#M%DVf@S[-g&B\+gYDea#N"@qi8ESQir8!<j8e<?joX`0kks]FlMg,Hm/68Imb[F.nGDbNo)81Y
+o_S7[pAXg_q#1$fqY9sdr;6H]rdk*#s+14Ks*t~>
+JcC<$JcC<$Y5dngr;HQkq>:0frqZHds7cNdr:U*^s7?0Zs7-*XrU9aRs6]aNs6K[Lqs"+DrTF"=
+r8mh:p#Gr/r8IM1rnm_3r8%D.s4dM+s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlb>a!6P2\
+!lr=#rPefTs24cOrk\TLpqPUupqQO:qn;g<rO`'?qml^9rjVd5rjD^3pp9Copp9t,rjD[4s0r$<
+r42j=s1A6Bs1SHHrP/?Is2"TLrkn`Rou6=<j2Lr9rQ"fVrlP2_rQG5bs3:Pgs3C\lrmCbo!7Uqs
+#M%DVf@S[-g&B\+gYDea#N"@qi8ESQir8!<j8e<?joX`0kks]FlMg,Hm/68Imb[F.nGDbNo)81Y
+o_S7[pAXg_q#1$fqY9sdr;6H]rdk*#s+14Ks*t~>
+JcC<$JcC<$Y5dngr;HQkq>:0frqZHds7cNdr:U*^s7?0Zs7-*XrU9aRs6]aNs6K[Lqs"+DrTF"=
+r8mh:p#Gr/r8IM1rnm_3r8%D.s4dM+s4RG)rn%2$!7h%t!n5TGrm:eocd2U9!mSs5rlb>a!6P2\
+!lr=#rPefTs24cOrk\TLpqPUupqQO:qn;g<rO`'?qml^9rjVd5rjD^3pp9Copp9t,rjD[4s0r$<
+r42j=s1A6Bs1SHHrP/?Is2"TLrkn`Rou6=<j2Lr9rQ"fVrlP2_rQG5bs3:Pgs3C\lrmCbo!7Uqs
+#M%DVf@S[-g&B\+gYDea#N"@qi8ESQir8!<j8e<?joX`0kks]FlMg,Hm/68Imb[F.nGDbNo)81Y
+o_S7[pAXg_q#1$fqY9sdr;6H]rdk*#s+14Ks*t~>
+JcC<$JcC<$WrMPer;HTlq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xr9s[RrpBXMrp0ULqW\"CrTEq;
+qrR_9p#Gu0rSdY3rnm_3rS@M/s4dM+s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlYAcaiXM&
+!lr=#rPecSs24`Nrk\QK_8#o^rOr'?rk&0@qml^9rjVa4rO)U2kHk,orjDX3s0r!;rOMs>s1A6B
+s1SHHr4i9Is2"WMrkn`RqSi?OjN$T+qoANRrlP2_r6,,as3:Pgs3L_lrm:eqe'n<G!S,d#f*Bs]
+g"P07gYDea!T)`5i;_a9ir8!<j8e<@k5XWEkl'cGlMg,Hm/HDMmc*^-nG;\Lo)/+Xo_S7[pAOa^
+q#:*fqY9sdr;6H]rdk*#s+14Js*t~>
+JcC<$JcC<$WrMPer;HTlq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xr9s[RrpBXMrp0ULqW\"CrTEq;
+qrR_9p#Gu0rSdY3rnm_3rS@M/s4dM+s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlYAcaiXM&
+!lr=#rPecSs24`Nrk\QK_8#o^rOr'?rk&0@qml^9rjVa4rO)U2kHk,orjDX3s0r!;rOMs>s1A6B
+s1SHHr4i9Is2"WMrkn`RqSi?OjN$T+qoANRrlP2_r6,,as3:Pgs3L_lrm:eqe'n<G!S,d#f*Bs]
+g"P07gYDea!T)`5i;_a9ir8!<j8e<@k5XWEkl'cGlMg,Hm/HDMmc*^-nG;\Lo)/+Xo_S7[pAOa^
+q#:*fqY9sdr;6H]rdk*#s+14Js*t~>
+JcC<$JcC<$WrMPer;HTlq>:0frqZHdrqHHdr:U*^rq$*Zrpg$Xr9s[RrpBXMrp0ULqW\"CrTEq;
+qrR_9p#Gu0rSdY3rnm_3rS@M/s4dM+s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlYAcaiXM&
+!lr=#rPecSs24`Nrk\QK_8#o^rOr'?rk&0@qml^9rjVa4rO)U2kHk,orjDX3s0r!;rOMs>s1A6B
+s1SHHr4i9Is2"WMrkn`RqSi?OjN$T+qoANRrlP2_r6,,as3:Pgs3L_lrm:eqe'n<G!S,d#f*Bs]
+g"P07gYDea!T)`5i;_a9ir8!<j8e<@k5XWEkl'cGlMg,Hm/HDMmc*^-nG;\Lo)/+Xo_S7[pAOa^
+q#:*fqY9sdr;6H]rdk*#s+14Js*t~>
+JcC<$JcC<$W;lAdr;HTlq>:0frqZHdrqHHdr:U']s7?0Zs7--Yr9sXQs6]^Mrp0RKqs"(Cr9*e9
+qW7S7pZ)53rSdY3s53k5r8%D.s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Yis3:Sfrlb>a!6P2\
+s2Y/ZrPecSrknWMr5&0DotTt2pVHR=pV6[@rk83Ark&0@qml^9rjV^3r3bmurO)L1rjVp;r42j=
+s1A6Bs1SHHr4i9Is2"ZNrkncSqo/NRr5[O4p;cgHrQ5&]r6,)`s3:Pgs3L_lrmCbo!7Uqss4%,#
+rmqD-g"G*5gY:N_h#ZBirnmk:io9st!p&J)roX7D!9jCGs6BULr9XFMrU07Fl1"E:o^_tPr:KjY
+rV$3aqY:$brqcEer;?Kkn,@n<JcC<$qu;0~>
+JcC<$JcC<$W;lAdr;HTlq>:0frqZHdrqHHdr:U']s7?0Zs7--Yr9sXQs6]^Mrp0RKqs"(Cr9*e9
+qW7S7pZ)53rSdY3s53k5r8%D.s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Yis3:Sfrlb>a!6P2\
+s2Y/ZrPecSrknWMr5&0DotTt2pVHR=pV6[@rk83Ark&0@qml^9rjV^3r3bmurO)L1rjVp;r42j=
+s1A6Bs1SHHr4i9Is2"ZNrkncSqo/NRr5[O4p;cgHrQ5&]r6,)`s3:Pgs3L_lrmCbo!7Uqss4%,#
+rmqD-g"G*5gY:N_h#ZBirnmk:io9st!p&J)roX7D!9jCGs6BULr9XFMrU07Fl1"E:o^_tPr:KjY
+rV$3aqY:$brqcEer;?Kkn,@n<JcC<$qu;0~>
+JcC<$JcC<$W;lAdr;HTlq>:0frqZHdrqHHdr:U']s7?0Zs7--Yr9sXQs6]^Mrp0RKqs"(Cr9*e9
+qW7S7pZ)53rSdY3s53k5r8%D.s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Yis3:Sfrlb>a!6P2\
+s2Y/ZrPecSrknWMr5&0DotTt2pVHR=pV6[@rk83Ark&0@qml^9rjV^3r3bmurO)L1rjVp;r42j=
+s1A6Bs1SHHr4i9Is2"ZNrkncSqo/NRr5[O4p;cgHrQ5&]r6,)`s3:Pgs3L_lrmCbo!7Uqss4%,#
+rmqD-g"G*5gY:N_h#ZBirnmk:io9st!p&J)roX7D!9jCGs6BULr9XFMrU07Fl1"E:o^_tPr:KjY
+rV$3aqY:$brqcEer;?Kkn,@n<JcC<$qu;0~>
+JcC<$JcC<$W;lAdqu-Kkq>:0frqZHdrqHHdr:U']s7?0Zrpg$Xr9sXQs6]^Mrp0OJqW[qAr9*\6
+qW7Y9puDA5ro*b4s53k5rS@M/s4dP,s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+s2Y/Zr5JZRrknKIjMC)tqSE*FqS3$DrOr-Ark&0@qml[8rjVU0o!S5#rjVm:r42j=s1A3As1SHH
+rP/BJs2"ZNs24iSr5JZTrQ"ZRkfMo,r5no[qof#`s3:Je!mf6?rQt\pe'n<G!nGlQrmq2'g&B\,
+gYCT`h#ZBirnmk:io9st!p&J)roO:Fkii!0s6BXMr9XFMrpKOLo^M,8o()\LrUfpYrV$3aqY:$b
+rVH?er;?Hjn,@n<JcC<$qYu'~>
+JcC<$JcC<$W;lAdqu-Kkq>:0frqZHdrqHHdr:U']s7?0Zrpg$Xr9sXQs6]^Mrp0OJqW[qAr9*\6
+qW7Y9puDA5ro*b4s53k5rS@M/s4dP,s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+s2Y/Zr5JZRrknKIjMC)tqSE*FqS3$DrOr-Ark&0@qml[8rjVU0o!S5#rjVm:r42j=s1A3As1SHH
+rP/BJs2"ZNs24iSr5JZTrQ"ZRkfMo,r5no[qof#`s3:Je!mf6?rQt\pe'n<G!nGlQrmq2'g&B\,
+gYCT`h#ZBirnmk:io9st!p&J)roO:Fkii!0s6BXMr9XFMrpKOLo^M,8o()\LrUfpYrV$3aqY:$b
+rVH?er;?Hjn,@n<JcC<$qYu'~>
+JcC<$JcC<$W;lAdqu-Kkq>:0frqZHdrqHHdr:U']s7?0Zrpg$Xr9sXQs6]^Mrp0OJqW[qAr9*\6
+qW7Y9puDA5ro*b4s53k5rS@M/s4dP,s4RG)rn%2$!7h(us3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+s2Y/Zr5JZRrknKIjMC)tqSE*FqS3$DrOr-Ark&0@qml[8rjVU0o!S5#rjVm:r42j=s1A3As1SHH
+rP/BJs2"ZNs24iSr5JZTrQ"ZRkfMo,r5no[qof#`s3:Je!mf6?rQt\pe'n<G!nGlQrmq2'g&B\,
+gYCT`h#ZBirnmk:io9st!p&J)roO:Fkii!0s6BXMr9XFMrpKOLo^M,8o()\LrUfpYrV$3aqY:$b
+rVH?er;?Hjn,@n<JcC<$qYu'~>
+JcC<$JcC<$VuQ8cr;HQkq>:0frqZHdrqHHdr:U']s7?0Zrpg!Wr9sXQs6][Lrp0OJq<@e?qrdP4
+qrRe;q;_J6s5En6s53k5rS@M/s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+rl>&Yqo/QQr571(pVZO<rPAHJqnN-Erk83Ark&0@qml[8r3tt"rO;a8qmla<s1A3As1SHHrP/BJ
+s2"ZNs24iSrPecUrl=lVr5n]Uq9/?OlcK%Hq9/f^rltDerm(SkrR(Yn!7Unr#M%DVf@S[-g&B\1
+gYCT?h;7#Grnmk:io9st!p&J)roO:Fkii!0s6BXMrTsONrpKUNqXEnBkOSNAr:KdWrV$6bq=spa
+rVH<dr;?Kkn,@n<JcC<$q>Ys~>
+JcC<$JcC<$VuQ8cr;HQkq>:0frqZHdrqHHdr:U']s7?0Zrpg!Wr9sXQs6][Lrp0OJq<@e?qrdP4
+qrRe;q;_J6s5En6s53k5rS@M/s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+rl>&Yqo/QQr571(pVZO<rPAHJqnN-Erk83Ark&0@qml[8r3tt"rO;a8qmla<s1A3As1SHHrP/BJ
+s2"ZNs24iSrPecUrl=lVr5n]Uq9/?OlcK%Hq9/f^rltDerm(SkrR(Yn!7Unr#M%DVf@S[-g&B\1
+gYCT?h;7#Grnmk:io9st!p&J)roO:Fkii!0s6BXMrTsONrpKUNqXEnBkOSNAr:KdWrV$6bq=spa
+rVH<dr;?Kkn,@n<JcC<$q>Ys~>
+JcC<$JcC<$VuQ8cr;HQkq>:0frqZHdrqHHdr:U']s7?0Zrpg!Wr9sXQs6][Lrp0OJq<@e?qrdP4
+qrRe;q;_J6s5En6s53k5rS@M/s4dP,s4RG)rmq5&e^aZKs3gtrrmCbm!71Vh!mSs5rlb>as2k5\
+rl>&Yqo/QQr571(pVZO<rPAHJqnN-Erk83Ark&0@qml[8r3tt"rO;a8qmla<s1A3As1SHHrP/BJ
+s2"ZNs24iSrPecUrl=lVr5n]Uq9/?OlcK%Hq9/f^rltDerm(SkrR(Yn!7Unr#M%DVf@S[-g&B\1
+gYCT?h;7#Grnmk:io9st!p&J)roO:Fkii!0s6BXMrTsONrpKUNqXEnBkOSNAr:KdWrV$6bq=spa
+rVH<dr;?Kkn,@n<JcC<$q>Ys~>
+JcC<$JcC<$VuQ5br;HQkqYU6frqZHdrqHHdqt:!]rq$'Yrpg$XqsXOPrpBULrTjFIpZ_P<q<.D4
+r8mn<qr@\8s5En6s53k5rS7P1gY;_]s4RG)rmq5&e^aZK!n5TGrmCbm!71Vh!mSs5rQG5`s2k5\
+rl>#XqSiBNikt$!qSW*Frk\QKqnN0Frk83Ark&0@q76F5m^N,(qRQU:s1A3As1SHHrP/BJs2"ZN
+s24iSrPefVrl=oWrlP)\fus!0oZR6XrltAds3L_lrR(Yns3ptss4%,#rn%2&!87A*#M\%hh;-rE
+hu;O=iSrkWj5f:_roX7Ds60IHs6BXMrTsONrpKXOr:'OPg[b44qt0[Vr:^*`q=ssbr;-6dr;?Hj
+n,@n<JcC<$q#>j~>
+JcC<$JcC<$VuQ5br;HQkqYU6frqZHdrqHHdqt:!]rq$'Yrpg$XqsXOPrpBULrTjFIpZ_P<q<.D4
+r8mn<qr@\8s5En6s53k5rS7P1gY;_]s4RG)rmq5&e^aZK!n5TGrmCbm!71Vh!mSs5rQG5`s2k5\
+rl>#XqSiBNikt$!qSW*Frk\QKqnN0Frk83Ark&0@q76F5m^N,(qRQU:s1A3As1SHHrP/BJs2"ZN
+s24iSrPefVrl=oWrlP)\fus!0oZR6XrltAds3L_lrR(Yns3ptss4%,#rn%2&!87A*#M\%hh;-rE
+hu;O=iSrkWj5f:_roX7Ds60IHs6BXMrTsONrpKXOr:'OPg[b44qt0[Vr:^*`q=ssbr;-6dr;?Hj
+n,@n<JcC<$q#>j~>
+JcC<$JcC<$VuQ5br;HQkqYU6frqZHdrqHHdqt:!]rq$'Yrpg$XqsXOPrpBULrTjFIpZ_P<q<.D4
+r8mn<qr@\8s5En6s53k5rS7P1gY;_]s4RG)rmq5&e^aZK!n5TGrmCbm!71Vh!mSs5rQG5`s2k5\
+rl>#XqSiBNikt$!qSW*Frk\QKqnN0Frk83Ark&0@q76F5m^N,(qRQU:s1A3As1SHHrP/BJs2"ZN
+s24iSrPefVrl=oWrlP)\fus!0oZR6XrltAds3L_lrR(Yns3ptss4%,#rn%2&!87A*#M\%hh;-rE
+hu;O=iSrkWj5f:_roX7Ds60IHs6BXMrTsONrpKXOr:'OPg[b44qt0[Vr:^*`q=ssbr;-6dr;?Hj
+n,@n<JcC<$q#>j~>
+JcC<$JcC<$VZ6/bqu-Kkq>:-erqZHdrqHHdqt:!]rq$'Yrpg!WqsXOPrpBRKrTjCHo]c28qWIS7
+rT4%>qr@_9ro*h6s53k5rn[V0s4dP,s4ID)rn%2$s4.+u!n5TGrmCbm!71Vh!mSs5rQG5`rlP)Z
+s2Y)XpVlF9hSoE2rPSKKrk\TLqnN-Erk83Ark&-?ossh,p::.5rk&*@s1SHHr4i9Is2"ZNs24lT
+rPefVrl=rXrlP/^pWM^Cj3.AErQY5bs3L_lrR(Yns3ptss4./#rmq5(g"HAY!ScE/h>c=3hu;O7
+iSsjss5X1AroX7Ds60IHs6BXMrTsROrpK[PrUB^Sh=C:2qXjOTr:^*`q=sparVH<dqu$?in,@n<
+JcC<$q#>j~>
+JcC<$JcC<$VZ6/bqu-Kkq>:-erqZHdrqHHdqt:!]rq$'Yrpg!WqsXOPrpBRKrTjCHo]c28qWIS7
+rT4%>qr@_9ro*h6s53k5rn[V0s4dP,s4ID)rn%2$s4.+u!n5TGrmCbm!71Vh!mSs5rQG5`rlP)Z
+s2Y)XpVlF9hSoE2rPSKKrk\TLqnN-Erk83Ark&-?ossh,p::.5rk&*@s1SHHr4i9Is2"ZNs24lT
+rPefVrl=rXrlP/^pWM^Cj3.AErQY5bs3L_lrR(Yns3ptss4./#rmq5(g"HAY!ScE/h>c=3hu;O7
+iSsjss5X1AroX7Ds60IHs6BXMrTsROrpK[PrUB^Sh=C:2qXjOTr:^*`q=sparVH<dqu$?in,@n<
+JcC<$q#>j~>
+JcC<$JcC<$VZ6/bqu-Kkq>:-erqZHdrqHHdqt:!]rq$'Yrpg!WqsXOPrpBRKrTjCHo]c28qWIS7
+rT4%>qr@_9ro*h6s53k5rn[V0s4dP,s4ID)rn%2$s4.+u!n5TGrmCbm!71Vh!mSs5rQG5`rlP)Z
+s2Y)XpVlF9hSoE2rPSKKrk\TLqnN-Erk83Ark&-?ossh,p::.5rk&*@s1SHHr4i9Is2"ZNs24lT
+rPefVrl=rXrlP/^pWM^Cj3.AErQY5bs3L_lrR(Yns3ptss4./#rmq5(g"HAY!ScE/h>c=3hu;O7
+iSsjss5X1AroX7Ds60IHs6BXMrTsROrpK[PrUB^Sh=C:2qXjOTr:^*`q=sparVH<dqu$?in,@n<
+JcC<$q#>j~>
+JcC<$JcC<$V>p&aqu-Kkq>:-erqZHdrqHEcr:U']rq$'Yrpg!WqsXOPrU'FIr9O:Gn`fo6qrdb:
+roO.?qr@_9s5Eq7s53k5rn[V0s4dP,s4ID)rn%2$!7h%t!n5TGrmCbm!71Vhs3:SfrQG5`rlP)Z
+rQ"iUhSng#ou6mJrknTLrk\WMqnN-Erk80@rO`!=mCE/+rO`!?rk8?Gr4i9Is2"ZNs24lTrPefV
+rl=uYrlP/^qoeo]qT\QUp!)dGqp"u_rm1SjrR(Yns3pqr!nGlQrn%2&!87A*s4[P/rnRY4hr"Fk
+!TE&;j8\0?jo4EBk5a`EklU/9li$2LmJlVOn,DhSn`o]2oD%tNp&+O^p\=O^q>L0aqu$BhrU9`:
+s+13$s7cPD~>
+JcC<$JcC<$V>p&aqu-Kkq>:-erqZHdrqHEcr:U']rq$'Yrpg!WqsXOPrU'FIr9O:Gn`fo6qrdb:
+roO.?qr@_9s5Eq7s53k5rn[V0s4dP,s4ID)rn%2$!7h%t!n5TGrmCbm!71Vhs3:SfrQG5`rlP)Z
+rQ"iUhSng#ou6mJrknTLrk\WMqnN-Erk80@rO`!=mCE/+rO`!?rk8?Gr4i9Is2"ZNs24lTrPefV
+rl=uYrlP/^qoeo]qT\QUp!)dGqp"u_rm1SjrR(Yns3pqr!nGlQrn%2&!87A*s4[P/rnRY4hr"Fk
+!TE&;j8\0?jo4EBk5a`EklU/9li$2LmJlVOn,DhSn`o]2oD%tNp&+O^p\=O^q>L0aqu$BhrU9`:
+s+13$s7cPD~>
+JcC<$JcC<$V>p&aqu-Kkq>:-erqZHdrqHEcr:U']rq$'Yrpg!WqsXOPrU'FIr9O:Gn`fo6qrdb:
+roO.?qr@_9s5Eq7s53k5rn[V0s4dP,s4ID)rn%2$!7h%t!n5TGrmCbm!71Vhs3:SfrQG5`rlP)Z
+rQ"iUhSng#ou6mJrknTLrk\WMqnN-Erk80@rO`!=mCE/+rO`!?rk8?Gr4i9Is2"ZNs24lTrPefV
+rl=uYrlP/^qoeo]qT\QUp!)dGqp"u_rm1SjrR(Yns3pqr!nGlQrn%2&!87A*s4[P/rnRY4hr"Fk
+!TE&;j8\0?jo4EBk5a`EklU/9li$2LmJlVOn,DhSn`o]2oD%tNp&+O^p\=O^q>L0aqu$BhrU9`:
+s+13$s7cPD~>
+JcC<$JcC<$V#Tr`qu-Kkq>:-erqZHdrqHEcqt9s\s7?-Yrpg!WqsXLOrU'CHqs4+Dn`fr7r9*n<
+roO1@r8[h:s5Eq7s53k5rn[V0s4dP,!nl5Yrn%2$!7h(us3q"rrmCbms3L\is3:Sfr6,,_rlOuW
+r5[s>o#LUJp;d*Nq8N?OrknWMrk\TLqnN-Erk8-?qn)F1r4Dd;rk8?Gr4i9Is2"ZNs24lTr5J]U
+s2Y)Zs2k8_qoeu_rQX$@n'1ROrQkJir6bPms3pqrs4%,#rRV,'g"HAY!o)McrnRV3hu;R6i;hm:
+ir\<'jo4BDkNM./l2U&Kli$2MmJlVPn,;bSnauD8oCV\Hp&+O]p\=O^q>C*aqtp<grU0Z9s+13$
+s7cPD~>
+JcC<$JcC<$V#Tr`qu-Kkq>:-erqZHdrqHEcqt9s\s7?-Yrpg!WqsXLOrU'CHqs4+Dn`fr7r9*n<
+roO1@r8[h:s5Eq7s53k5rn[V0s4dP,!nl5Yrn%2$!7h(us3q"rrmCbms3L\is3:Sfr6,,_rlOuW
+r5[s>o#LUJp;d*Nq8N?OrknWMrk\TLqnN-Erk8-?qn)F1r4Dd;rk8?Gr4i9Is2"ZNs24lTr5J]U
+s2Y)Zs2k8_qoeu_rQX$@n'1ROrQkJir6bPms3pqrs4%,#rRV,'g"HAY!o)McrnRV3hu;R6i;hm:
+ir\<'jo4BDkNM./l2U&Kli$2MmJlVPn,;bSnauD8oCV\Hp&+O]p\=O^q>C*aqtp<grU0Z9s+13$
+s7cPD~>
+JcC<$JcC<$V#Tr`qu-Kkq>:-erqZHdrqHEcqt9s\s7?-Yrpg!WqsXLOrU'CHqs4+Dn`fr7r9*n<
+roO1@r8[h:s5Eq7s53k5rn[V0s4dP,!nl5Yrn%2$!7h(us3q"rrmCbms3L\is3:Sfr6,,_rlOuW
+r5[s>o#LUJp;d*Nq8N?OrknWMrk\TLqnN-Erk8-?qn)F1r4Dd;rk8?Gr4i9Is2"ZNs24lTr5J]U
+s2Y)Zs2k8_qoeu_rQX$@n'1ROrQkJir6bPms3pqrs4%,#rRV,'g"HAY!o)McrnRV3hu;R6i;hm:
+ir\<'jo4BDkNM./l2U&Kli$2MmJlVPn,;bSnauD8oCV\Hp&+O]p\=O^q>C*aqtp<grU0Z9s+13$
+s7cPD~>
+JcC<$JcC<$V#To_r;HQkq>:-erqZHdrqHEcqt9s\rq$$Xrpg!WqX=CNrU'=FqWmqAoBH2:rTF%>
+s5j7@rT!q;s5Eq7s53k5rn[V0!8IJ+!nl5Yrmq5&e^aZKs3q"rrmCbms3LYhs3:Sfr6,)^rlOlT
+m)Ri$r5\cUqSiHPrknZNrk\TLqnN-ErOqj9qRcF5rOr3Er4i9Is2"WMs24lTrPefVs2Y)Zs2k8_
+r6,)`rlt5`jNli2r6PAhqpGDks3pqrs4./#rn%2&!87>)#M\%hh;-rEhu;R6i;hm:ir\<'jo4BD
+kNM./l2U&Kli$2MmJlVPn,DhUnb;VJoB,]6p&+O\p\=O]q>L0aqtp<grU0Z9s+13$s7ZJC~>
+JcC<$JcC<$V#To_r;HQkq>:-erqZHdrqHEcqt9s\rq$$Xrpg!WqX=CNrU'=FqWmqAoBH2:rTF%>
+s5j7@rT!q;s5Eq7s53k5rn[V0!8IJ+!nl5Yrmq5&e^aZKs3q"rrmCbms3LYhs3:Sfr6,)^rlOlT
+m)Ri$r5\cUqSiHPrknZNrk\TLqnN-ErOqj9qRcF5rOr3Er4i9Is2"WMs24lTrPefVs2Y)Zs2k8_
+r6,)`rlt5`jNli2r6PAhqpGDks3pqrs4./#rn%2&!87>)#M\%hh;-rEhu;R6i;hm:ir\<'jo4BD
+kNM./l2U&Kli$2MmJlVPn,DhUnb;VJoB,]6p&+O\p\=O]q>L0aqtp<grU0Z9s+13$s7ZJC~>
+JcC<$JcC<$V#To_r;HQkq>:-erqZHdrqHEcqt9s\rq$$Xrpg!WqX=CNrU'=FqWmqAoBH2:rTF%>
+s5j7@rT!q;s5Eq7s53k5rn[V0!8IJ+!nl5Yrmq5&e^aZKs3q"rrmCbms3LYhs3:Sfr6,)^rlOlT
+m)Ri$r5\cUqSiHPrknZNrk\TLqnN-ErOqj9qRcF5rOr3Er4i9Is2"WMs24lTrPefVs2Y)Zs2k8_
+r6,)`rlt5`jNli2r6PAhqpGDks3pqrs4./#rn%2&!87>)#M\%hh;-rEhu;R6i;hm:ir\<'jo4BD
+kNM./l2U&Kli$2MmJlVPn,DhUnb;VJoB,]6p&+O\p\=O]q>L0aqtp<grU0Z9s+13$s7ZJC~>
+JcC<$JcC<$U]9i_qu-Hjq>:-erqZHdrqHEcqt9s\rq$!Wrpg!Wq=":Mr9a+Bq!7b@p?DP>rTF+@
+roO1@rT!q;s5Eq7s5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrmCbms3LYhrltJeqoeu]r5mp=
+j2q&:rQ"oWqo/QQrknZNrk\TLqS3!Cr4VO2r4W*DqnN-Gs2"WMs24lTrPefVs2Y)Zs2k8_rQG2a
+rlt>cr6P5do$R0Xjj3kOqU,;jrmUhqs4./#rRV,'g"HAYs4[P/rn[V2!8me6s5<t;ro4(@jlQL(
+!pAe2rosIJ!:0UMs6]jSr9sXSrpfgTqXa.Ij7W9Br:fs\r;$9ep\Xmdqu,s^JcC<$JcGBBJ,~>
+JcC<$JcC<$U]9i_qu-Hjq>:-erqZHdrqHEcqt9s\rq$!Wrpg!Wq=":Mr9a+Bq!7b@p?DP>rTF+@
+roO1@rT!q;s5Eq7s5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrmCbms3LYhrltJeqoeu]r5mp=
+j2q&:rQ"oWqo/QQrknZNrk\TLqS3!Cr4VO2r4W*DqnN-Gs2"WMs24lTrPefVs2Y)Zs2k8_rQG2a
+rlt>cr6P5do$R0Xjj3kOqU,;jrmUhqs4./#rRV,'g"HAYs4[P/rn[V2!8me6s5<t;ro4(@jlQL(
+!pAe2rosIJ!:0UMs6]jSr9sXSrpfgTqXa.Ij7W9Br:fs\r;$9ep\Xmdqu,s^JcC<$JcGBBJ,~>
+JcC<$JcC<$U]9i_qu-Hjq>:-erqZHdrqHEcqt9s\rq$!Wrpg!Wq=":Mr9a+Bq!7b@p?DP>rTF+@
+roO1@rT!q;s5Eq7s5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrmCbms3LYhrltJeqoeu]r5mp=
+j2q&:rQ"oWqo/QQrknZNrk\TLqS3!Cr4VO2r4W*DqnN-Gs2"WMs24lTrPefVs2Y)Zs2k8_rQG2a
+rlt>cr6P5do$R0Xjj3kOqU,;jrmUhqs4./#rRV,'g"HAYs4[P/rn[V2!8me6s5<t;ro4(@jlQL(
+!pAe2rosIJ!:0UMs6]jSr9sXSrpfgTqXa.Ij7W9Br:fs\r;$9ep\Xmdqu,s^JcC<$JcGBBJ,~>
+JcC<$JcC<$U]9f^qu-Hjq>:-erqZEcrqHEcqt9s\rq$!WrpfsVq="7LqsEn>q!7hBq!%b@roa4A
+s5j:Ar8Rk<iSjans5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrR(Yls3LYhrltGdqTJfZkK3D>
+nB:XMr5nfVrl>#Xqo/QQrknZNrk\QKq7lg@oY(.9q7lpEs2"WMs24lTr5J]Us2Y)Zs2k;`rQG2a
+s3:Gdrm1PigX594pX/ugrmUeps4./#rR_)%!87>)!o)Mcrn[V2!8me6!o`.uro4(@jlQL(!pAe2
+rosIJ!:0UMs6]jSr9s[TrpfjUqt'UTg%G48qY0aZr;$9ep\Xjcqu,s^JcC<$JcG?AJ,~>
+JcC<$JcC<$U]9f^qu-Hjq>:-erqZEcrqHEcqt9s\rq$!WrpfsVq="7LqsEn>q!7hBq!%b@roa4A
+s5j:Ar8Rk<iSjans5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrR(Yls3LYhrltGdqTJfZkK3D>
+nB:XMr5nfVrl>#Xqo/QQrknZNrk\QKq7lg@oY(.9q7lpEs2"WMs24lTr5J]Us2Y)Zs2k;`rQG2a
+s3:Gdrm1PigX594pX/ugrmUeps4./#rR_)%!87>)!o)Mcrn[V2!8me6!o`.uro4(@jlQL(!pAe2
+rosIJ!:0UMs6]jSr9s[TrpfjUqt'UTg%G48qY0aZr;$9ep\Xjcqu,s^JcC<$JcG?AJ,~>
+JcC<$JcC<$U]9f^qu-Hjq>:-erqZEcrqHEcqt9s\rq$!WrpfsVq="7LqsEn>q!7hBq!%b@roa4A
+s5j:Ar8Rk<iSjans5*h5rS7P1gY;_]s4ID)rRV,%e^aZKs3q"rrR(Yls3LYhrltGdqTJfZkK3D>
+nB:XMr5nfVrl>#Xqo/QQrknZNrk\QKq7lg@oY(.9q7lpEs2"WMs24lTr5J]Us2Y)Zs2k;`rQG2a
+s3:Gdrm1PigX594pX/ugrmUeps4./#rR_)%!87>)!o)Mcrn[V2!8me6!o`.uro4(@jlQL(!pAe2
+rosIJ!:0UMs6]jSr9s[TrpfjUqt'UTg%G48qY0aZr;$9ep\Xjcqu,s^JcC<$JcG?AJ,~>
+JcC<$JcC<$UAs]]qu-Hjq>:-erqZEcrqHEcqXsj[rq$!WrUKjUq!\+Jq<dY;qWn(Eq<@nBs6'=B
+roO1@rSmt=iSjan!oMkkrn[V0s4dP,!nl5Yrn%2$s4.+us3q"rrR(Yls3LVgrltDcp<2pIeB@g5
+rQ4rXrl>#Xr5JZRrknWMrk\QKikPH-rk\NLs24iSrPefVs2Y)Zs2k;`rQG2as3:Jerm1SjpsJ6P
+h9l2LrR:\ormh&"rR_)%s4RD*s4dS/rnRY4hr"Fk!o`.uro4(@jlQL(!pAe2rojLLlg+N9s6]jS
+rU9dUrpfjUrU]pYg%G+5qY0[Xr;$9epA=dcqYfj]JcC<$JcG<@J,~>
+JcC<$JcC<$UAs]]qu-Hjq>:-erqZEcrqHEcqXsj[rq$!WrUKjUq!\+Jq<dY;qWn(Eq<@nBs6'=B
+roO1@rSmt=iSjan!oMkkrn[V0s4dP,!nl5Yrn%2$s4.+us3q"rrR(Yls3LVgrltDcp<2pIeB@g5
+rQ4rXrl>#Xr5JZRrknWMrk\QKikPH-rk\NLs24iSrPefVs2Y)Zs2k;`rQG2as3:Jerm1SjpsJ6P
+h9l2LrR:\ormh&"rR_)%s4RD*s4dS/rnRY4hr"Fk!o`.uro4(@jlQL(!pAe2rojLLlg+N9s6]jS
+rU9dUrpfjUrU]pYg%G+5qY0[Xr;$9epA=dcqYfj]JcC<$JcG<@J,~>
+JcC<$JcC<$UAs]]qu-Hjq>:-erqZEcrqHEcqXsj[rq$!WrUKjUq!\+Jq<dY;qWn(Eq<@nBs6'=B
+roO1@rSmt=iSjan!oMkkrn[V0s4dP,!nl5Yrn%2$s4.+us3q"rrR(Yls3LVgrltDcp<2pIeB@g5
+rQ4rXrl>#Xr5JZRrknWMrk\QKikPH-rk\NLs24iSrPefVs2Y)Zs2k;`rQG2as3:Jerm1SjpsJ6P
+h9l2LrR:\ormh&"rR_)%s4RD*s4dS/rnRY4hr"Fk!o`.uro4(@jlQL(!pAe2rojLLlg+N9s6]jS
+rU9dUrpfjUrU]pYg%G+5qY0[Xr;$9epA=dcqYfj]JcC<$JcG<@J,~>
+JcC<$JcC<$U&XT\qu-Hjq>:-erqZEcrqHBbqt9p[rq$!WrUKgTp@%kGq!IS;qs44Gqs"+Droa7B
+roO1@ro=%<s5Et8s53k5rn[V0!8IJ+!nl5Yrn%2$s4.+us3q"rrR(Vks3LSfrQY;biQLo<p!*9U
+priWYrlP&Yrl>&Yqo/QQrknWMrPABHn%\e9rPABJs24iSrPefVs2Y)Zs2k;`r6,,as3:Jes3L\k
+qpG>iqU>#bp=&cao?mE_r6tMls4.,"rR_)%s4RA)!o)Mcrn[V2!8me6s5<t;ro=%>!9O4Bs6'FG
+rojLLlg+N9!q#FDr9s[Ts7,sVrq$'[i:ZU5q=jOVqt^0dpA=dcqYfj]JcC<$JcG9?J,~>
+JcC<$JcC<$U&XT\qu-Hjq>:-erqZEcrqHBbqt9p[rq$!WrUKgTp@%kGq!IS;qs44Gqs"+Droa7B
+roO1@ro=%<s5Et8s53k5rn[V0!8IJ+!nl5Yrn%2$s4.+us3q"rrR(Vks3LSfrQY;biQLo<p!*9U
+priWYrlP&Yrl>&Yqo/QQrknWMrPABHn%\e9rPABJs24iSrPefVs2Y)Zs2k;`r6,,as3:Jes3L\k
+qpG>iqU>#bp=&cao?mE_r6tMls4.,"rR_)%s4RA)!o)Mcrn[V2!8me6s5<t;ro=%>!9O4Bs6'FG
+rojLLlg+N9!q#FDr9s[Ts7,sVrq$'[i:ZU5q=jOVqt^0dpA=dcqYfj]JcC<$JcG9?J,~>
+JcC<$JcC<$U&XT\qu-Hjq>:-erqZEcrqHBbqt9p[rq$!WrUKgTp@%kGq!IS;qs44Gqs"+Droa7B
+roO1@ro=%<s5Et8s53k5rn[V0!8IJ+!nl5Yrn%2$s4.+us3q"rrR(Vks3LSfrQY;biQLo<p!*9U
+priWYrlP&Yrl>&Yqo/QQrknWMrPABHn%\e9rPABJs24iSrPefVs2Y)Zs2k;`r6,,as3:Jes3L\k
+qpG>iqU>#bp=&cao?mE_r6tMls4.,"rR_)%s4RA)!o)Mcrn[V2!8me6s5<t;ro=%>!9O4Bs6'FG
+rojLLlg+N9!q#FDr9s[Ts7,sVrq$'[i:ZU5q=jOVqt^0dpA=dcqYfj]JcC<$JcG9?J,~>
+JcC<$JcC<$U&XQ[qu-Hjq>:-erV?<brqHEcqXsj[rU]jUrUKgTo^DPBp[.V>r9O@Iqs"+Ds6'=B
+s5j:Aro=%<s5Et8s53k5rnRY2gY;_]s4RG)rn%2$s4.(ts3q"rrR(Vkrm1Gdr6=EKpW_sJqp#)`
+qTJi[rlP)Zrl>#Xr5JZRrPSHJqSDm@qn`*FrkncSr5J]Url=uYs2k;`rQG5bs3:Mfrm1VkqpGDk
+rR9QOo[E]cpXArfrRLr!r7Cu$s4RA)s4dS/rn[V2!8me6s5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:
+s6]jSrU9dUrpfpWrU^![nFbl9p%S(Qqt^0dpA=abqYfg\JcC<$JcG9?J,~>
+JcC<$JcC<$U&XQ[qu-Hjq>:-erV?<brqHEcqXsj[rU]jUrUKgTo^DPBp[.V>r9O@Iqs"+Ds6'=B
+s5j:Aro=%<s5Et8s53k5rnRY2gY;_]s4RG)rn%2$s4.(ts3q"rrR(Vkrm1Gdr6=EKpW_sJqp#)`
+qTJi[rlP)Zrl>#Xr5JZRrPSHJqSDm@qn`*FrkncSr5J]Url=uYs2k;`rQG5bs3:Mfrm1VkqpGDk
+rR9QOo[E]cpXArfrRLr!r7Cu$s4RA)s4dS/rn[V2!8me6s5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:
+s6]jSrU9dUrpfpWrU^![nFbl9p%S(Qqt^0dpA=abqYfg\JcC<$JcG9?J,~>
+JcC<$JcC<$U&XQ[qu-Hjq>:-erV?<brqHEcqXsj[rU]jUrUKgTo^DPBp[.V>r9O@Iqs"+Ds6'=B
+s5j:Aro=%<s5Et8s53k5rnRY2gY;_]s4RG)rn%2$s4.(ts3q"rrR(Vkrm1Gdr6=EKpW_sJqp#)`
+qTJi[rlP)Zrl>#Xr5JZRrPSHJqSDm@qn`*FrkncSr5J]Url=uYs2k;`rQG5bs3:Mfrm1VkqpGDk
+rR9QOo[E]cpXArfrRLr!r7Cu$s4RA)s4dS/rn[V2!8me6s5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:
+s6]jSrU9dUrpfpWrU^![nFbl9p%S(Qqt^0dpA=abqYfg\JcC<$JcG9?J,~>
+JcC<$JcC<$T`=HZqu-Hjq>:-erV?<brV-<bqXsgZrU]jUr:0[RnF-)=qX+%DrTjIJqs".Es6'=B
+s5a7ArT!q;s5Et8s5*h5rS7P1gY;_]s4RG)rn%2$s4.(ts3q"rr6bMjrQk5`mEOtBps8NVrQY>c
+qTJl\s2k/Zrl>&Yqo/NPrPRX3rkn`Rr5JZTs2Y)Zs2k;`rQG2as3:Mfs3L_lr6bMlrmUYlkLJ88
+rRLnuqq(l#s4RA)s4dS/rS7P3hr"Fks5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:s6]jSrU9dUrpfpW
+rq$*\p%@YEmJ$,Fqt^-cp&"XaqYfg\JcC<$JcG6>J,~>
+JcC<$JcC<$T`=HZqu-Hjq>:-erV?<brV-<bqXsgZrU]jUr:0[RnF-)=qX+%DrTjIJqs".Es6'=B
+s5a7ArT!q;s5Et8s5*h5rS7P1gY;_]s4RG)rn%2$s4.(ts3q"rr6bMjrQk5`mEOtBps8NVrQY>c
+qTJl\s2k/Zrl>&Yqo/NPrPRX3rkn`Rr5JZTs2Y)Zs2k;`rQG2as3:Mfs3L_lr6bMlrmUYlkLJ88
+rRLnuqq(l#s4RA)s4dS/rS7P3hr"Fks5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:s6]jSrU9dUrpfpW
+rq$*\p%@YEmJ$,Fqt^-cp&"XaqYfg\JcC<$JcG6>J,~>
+JcC<$JcC<$T`=HZqu-Hjq>:-erV?<brV-<bqXsgZrU]jUr:0[RnF-)=qX+%DrTjIJqs".Es6'=B
+s5a7ArT!q;s5Et8s5*h5rS7P1gY;_]s4RG)rn%2$s4.(ts3q"rr6bMjrQk5`mEOtBps8NVrQY>c
+qTJl\s2k/Zrl>&Yqo/NPrPRX3rkn`Rr5JZTs2Y)Zs2k;`rQG2as3:Mfs3L_lr6bMlrmUYlkLJ88
+rRLnuqq(l#s4RA)s4dS/rS7P3hr"Fks5<t;ro=%>!9O4Bs5sCGrTOCKlg+Q:s6]jSrU9dUrpfpW
+rq$*\p%@YEmJ$,Fqt^-cp&"XaqYfg\JcC<$JcG6>J,~>
+JcC<$JcC<$TE"BZqu-Eiq>:-erV?<brV-9aqXsgZrU]dSqsjOPm-jc<qsF4Grp0RKr9=7Froa7B
+!p/M(rT!q;!9*n7!oMkkrn[V0s4dP,s4RG)rn%2$s4.(trmUnqqpGAhrQjHJpWr9SqTnr^rltGd
+qoeu]s2k/Zrl>#Xqo/NPqnqp?r58KOqo/QSs2Y&Ys2k;`rQG5bs3:Mfs3L_lr6bMls3phor71Vo
+pXf,ipXSTZqpkYrqq(i"s4RA)s4dS/rS@M1!8mb5!o`.uro=%>!9O4Bs5sCGrosIJs6K[Ns6]jS
+rU9dUs7-$Xrq$*\q"=CTj7hp8qYC$bp&"U`qYfg\JcC<$JcG3=J,~>
+JcC<$JcC<$TE"BZqu-Eiq>:-erV?<brV-9aqXsgZrU]dSqsjOPm-jc<qsF4Grp0RKr9=7Froa7B
+!p/M(rT!q;!9*n7!oMkkrn[V0s4dP,s4RG)rn%2$s4.(trmUnqqpGAhrQjHJpWr9SqTnr^rltGd
+qoeu]s2k/Zrl>#Xqo/NPqnqp?r58KOqo/QSs2Y&Ys2k;`rQG5bs3:Mfs3L_lr6bMls3phor71Vo
+pXf,ipXSTZqpkYrqq(i"s4RA)s4dS/rS@M1!8mb5!o`.uro=%>!9O4Bs5sCGrosIJs6K[Ns6]jS
+rU9dUs7-$Xrq$*\q"=CTj7hp8qYC$bp&"U`qYfg\JcC<$JcG3=J,~>
+JcC<$JcC<$TE"BZqu-Eiq>:-erV?<brV-9aqXsgZrU]dSqsjOPm-jc<qsF4Grp0RKr9=7Froa7B
+!p/M(rT!q;!9*n7!oMkkrn[V0s4dP,s4RG)rn%2$s4.(trmUnqqpGAhrQjHJpWr9SqTnr^rltGd
+qoeu]s2k/Zrl>#Xqo/NPqnqp?r58KOqo/QSs2Y&Ys2k;`rQG5bs3:Mfs3L_lr6bMls3phor71Vo
+pXf,ipXSTZqpkYrqq(i"s4RA)s4dS/rS@M1!8mb5!o`.uro=%>!9O4Bs5sCGrosIJs6K[Ns6]jS
+rU9dUs7-$Xrq$*\q"=CTj7hp8qYC$bp&"U`qYfg\JcC<$JcG3=J,~>
+JcC<$JcC<$T)\9Yqu-Eiq>:*drqZBbrV-<bq=X^Yr:B[RqXO@Mm-jf=rU'FIrp0ULr9=7Fs6'@C
+s5j:ArSmt=iSjdos53k5rn[V0!8IJ+s4RG)rn%2$rmgtsrmUnqqU,5fjj3_Kk0a+RrQk>crltGd
+qof#^rlP&Yrl>#Xq8N3Kp;?aFqSiHRrl=rXs2k;`rQG5bs3:Jes3L_lrR(YnrmUbormgtuhq.YS
+ma_3cq:GVurn78(rnIJ.rn[V2s53h6s5F";ro4(@jlQL(s5sCGrosIJs6K[Ns6]jSrU9dUs7-$X
+rq$-]q"=LWmJ#T7q>'m`p&"U`qYfd[JcC<$JcG0<J,~>
+JcC<$JcC<$T)\9Yqu-Eiq>:*drqZBbrV-<bq=X^Yr:B[RqXO@Mm-jf=rU'FIrp0ULr9=7Fs6'@C
+s5j:ArSmt=iSjdos53k5rn[V0!8IJ+s4RG)rn%2$rmgtsrmUnqqU,5fjj3_Kk0a+RrQk>crltGd
+qof#^rlP&Yrl>#Xq8N3Kp;?aFqSiHRrl=rXs2k;`rQG5bs3:Jes3L_lrR(YnrmUbormgtuhq.YS
+ma_3cq:GVurn78(rnIJ.rn[V2s53h6s5F";ro4(@jlQL(s5sCGrosIJs6K[Ns6]jSrU9dUs7-$X
+rq$-]q"=LWmJ#T7q>'m`p&"U`qYfd[JcC<$JcG0<J,~>
+JcC<$JcC<$T)\9Yqu-Eiq>:*drqZBbrV-<bq=X^Yr:B[RqXO@Mm-jf=rU'FIrp0ULr9=7Fs6'@C
+s5j:ArSmt=iSjdos53k5rn[V0!8IJ+s4RG)rn%2$rmgtsrmUnqqU,5fjj3_Kk0a+RrQk>crltGd
+qof#^rlP&Yrl>#Xq8N3Kp;?aFqSiHRrl=rXs2k;`rQG5bs3:Jes3L_lrR(YnrmUbormgtuhq.YS
+ma_3cq:GVurn78(rnIJ.rn[V2s53h6s5F";ro4(@jlQL(s5sCGrosIJs6K[Ns6]jSrU9dUs7-$X
+rq$-]q"=LWmJ#T7q>'m`p&"U`qYfd[JcC<$JcG0<J,~>
+JcC<$JcC<$ScA-Wqu-Hjq"t$drV?9arqHBbq=X[Xr:BUPq!n%HnF-;CrU'LKrp0ULr9=7Fs6'@C
+s5j:Aro=%<s5Et8s5*h5rS@M/!8IJ+s4RG)rR_)#s4.%srmUkppX/9QmEtUTo?mN`rm1JerltGd
+r6,)^rlP&Yrl=uWoYpaHoYpdKrl=rXs2k8_rQG5bs3:Mfs3L_lrR(Vms3pnqrmh#!pXecamaq![
+p"02qrn75'rnIJ.rS@M1!8mb5s5<t;rSmt?jlQL(!pAe2rosIJs6K[Ns6TgSrU9dUs7-$Xrq$-]
+qXsaZq"N;5q>'j_o_\L_qYfd[JcC<$JcG-;J,~>
+JcC<$JcC<$ScA-Wqu-Hjq"t$drV?9arqHBbq=X[Xr:BUPq!n%HnF-;CrU'LKrp0ULr9=7Fs6'@C
+s5j:Aro=%<s5Et8s5*h5rS@M/!8IJ+s4RG)rR_)#s4.%srmUkppX/9QmEtUTo?mN`rm1JerltGd
+r6,)^rlP&Yrl=uWoYpaHoYpdKrl=rXs2k8_rQG5bs3:Mfs3L_lrR(Vms3pnqrmh#!pXecamaq![
+p"02qrn75'rnIJ.rS@M1!8mb5s5<t;rSmt?jlQL(!pAe2rosIJs6K[Ns6TgSrU9dUs7-$Xrq$-]
+qXsaZq"N;5q>'j_o_\L_qYfd[JcC<$JcG-;J,~>
+JcC<$JcC<$ScA-Wqu-Hjq"t$drV?9arqHBbq=X[Xr:BUPq!n%HnF-;CrU'LKrp0ULr9=7Fs6'@C
+s5j:Aro=%<s5Et8s5*h5rS@M/!8IJ+s4RG)rR_)#s4.%srmUkppX/9QmEtUTo?mN`rm1JerltGd
+r6,)^rlP&Yrl=uWoYpaHoYpdKrl=rXs2k8_rQG5bs3:Mfs3L_lrR(Vms3pnqrmh#!pXecamaq![
+p"02qrn75'rnIJ.rS@M1!8mb5s5<t;rSmt?jlQL(!pAe2rosIJs6K[Ns6TgSrU9dUs7-$Xrq$-]
+qXsaZq"N;5q>'j_o_\L_qYfd[JcC<$JcG-;J,~>
+JcC<$JcC<$SH&$Vqu-Hjq"t$drV?9arV-9aq"=RWr:BLMp$qbFo^DbHrU'LKs6K[LrTX@Gs6'@C
+s5a7ArT!q;!9*n7!oMkkrS7P1gY;\\s4RG)rR_)#rmgqrrR:_nhpM5Im*kgZq9f2grQkDerltGd
+r6,)^rlP&YrQ"fTn&>4ErQ"fVs2k8_rQG5bs3:Jes3L_lrR(Yns3pnqs4.,"qUbYtkLoX_jOa=^
+rRq)%s4dP.rS@M1s53h6s5F";ro=%>s5j7B!pAe2rosIJ!:0UMs6TgSrU9dUs7-$Xs7?6^qXsd[
+qY/M7p\FX]oDAC^q>K[ZJcC<$JcG*:J,~>
+JcC<$JcC<$SH&$Vqu-Hjq"t$drV?9arV-9aq"=RWr:BLMp$qbFo^DbHrU'LKs6K[LrTX@Gs6'@C
+s5a7ArT!q;!9*n7!oMkkrS7P1gY;\\s4RG)rR_)#rmgqrrR:_nhpM5Im*kgZq9f2grQkDerltGd
+r6,)^rlP&YrQ"fTn&>4ErQ"fVs2k8_rQG5bs3:Jes3L_lrR(Yns3pnqs4.,"qUbYtkLoX_jOa=^
+rRq)%s4dP.rS@M1s53h6s5F";ro=%>s5j7B!pAe2rosIJ!:0UMs6TgSrU9dUs7-$Xs7?6^qXsd[
+qY/M7p\FX]oDAC^q>K[ZJcC<$JcG*:J,~>
+JcC<$JcC<$SH&$Vqu-Hjq"t$drV?9arV-9aq"=RWr:BLMp$qbFo^DbHrU'LKs6K[LrTX@Gs6'@C
+s5a7ArT!q;!9*n7!oMkkrS7P1gY;\\s4RG)rR_)#rmgqrrR:_nhpM5Im*kgZq9f2grQkDerltGd
+r6,)^rlP&YrQ"fTn&>4ErQ"fVs2k8_rQG5bs3:Jes3L_lrR(Yns3pnqs4.,"qUbYtkLoX_jOa=^
+rRq)%s4dP.rS@M1s53h6s5F";ro=%>s5j7B!pAe2rosIJ!:0UMs6TgSrU9dUs7-$Xs7?6^qXsd[
+qY/M7p\FX]oDAC^q>K[ZJcC<$JcG*:J,~>
+JcC<$JcC<$S,_pUqu-Hjq"t!crV?9arV-6`q"=OVqt'4Gp$qkIp[A+LrU'OLs6K[LrTX@Gs6'@C
+!p/M(rSmt=iSjan!oMkkrS7P1gY;\\s4RG)r7Cu"rmgkprR:Sjo[3E]q:"KUqpYMlqU,;hs3LSf
+rltJeqoeu]rlOuWqoA<JqoAQSrlP/^rQG2as3:Mfs3L_lrR(Yns3pnqs4.,"qq(i"r7U/bq:YAl
+rn$krr7Ur#rnIJ.r8%D0s53e5s5<t;rT!q=!9O4Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$-]
+qt9m\r:ek=oD/1Xo)&:]q>K[ZJcC<$JcG$8J,~>
+JcC<$JcC<$S,_pUqu-Hjq"t!crV?9arV-6`q"=OVqt'4Gp$qkIp[A+LrU'OLs6K[LrTX@Gs6'@C
+!p/M(rSmt=iSjan!oMkkrS7P1gY;\\s4RG)r7Cu"rmgkprR:Sjo[3E]q:"KUqpYMlqU,;hs3LSf
+rltJeqoeu]rlOuWqoA<JqoAQSrlP/^rQG2as3:Mfs3L_lrR(Yns3pnqs4.,"qq(i"r7U/bq:YAl
+rn$krr7Ur#rnIJ.r8%D0s53e5s5<t;rT!q=!9O4Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$-]
+qt9m\r:ek=oD/1Xo)&:]q>K[ZJcC<$JcG$8J,~>
+JcC<$JcC<$S,_pUqu-Hjq"t!crV?9arV-6`q"=OVqt'4Gp$qkIp[A+LrU'OLs6K[LrTX@Gs6'@C
+!p/M(rSmt=iSjan!oMkkrS7P1gY;\\s4RG)r7Cu"rmgkprR:Sjo[3E]q:"KUqpYMlqU,;hs3LSf
+rltJeqoeu]rlOuWqoA<JqoAQSrlP/^rQG2as3:Mfs3L_lrR(Yns3pnqs4.,"qq(i"r7U/bq:YAl
+rn$krr7Ur#rnIJ.r8%D0s53e5s5<t;rT!q=!9O4Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$-]
+qt9m\r:ek=oD/1Xo)&:]q>K[ZJcC<$JcG$8J,~>
+JcC<$JcC<$S,_pUqYg?ip\XpcrV?6`rV-6`p\"FUqX`qAq!n7Nq!\4MrpBXMs6K[LrTX@Gs6'CD
+s5j:Aro=%<s5Et8s53k5rn[V0s4dM+s4RD(r7Cu"rRL_np!`rho@*0Xo[WT`rR:_nqpGGjrm1Je
+s3:Peqoeu]rQ4ZPr5\HNrlP/^qof#`s3:Jes3L_lrR(Yns3pqrrmh&"r7Cr#rRpnuo@r`fk1TO`
+rnIG-r8%D0s53e5s5F";rSmt?jlQL(s6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$0^qt9p]r:f=J
+kkXrKnb`.[q>K[ZJcC<$JcG!7J,~>
+JcC<$JcC<$S,_pUqYg?ip\XpcrV?6`rV-6`p\"FUqX`qAq!n7Nq!\4MrpBXMs6K[LrTX@Gs6'CD
+s5j:Aro=%<s5Et8s53k5rn[V0s4dM+s4RD(r7Cu"rRL_np!`rho@*0Xo[WT`rR:_nqpGGjrm1Je
+s3:Peqoeu]rQ4ZPr5\HNrlP/^qof#`s3:Jes3L_lrR(Yns3pqrrmh&"r7Cr#rRpnuo@r`fk1TO`
+rnIG-r8%D0s53e5s5F";rSmt?jlQL(s6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$0^qt9p]r:f=J
+kkXrKnb`.[q>K[ZJcC<$JcG!7J,~>
+JcC<$JcC<$S,_pUqYg?ip\XpcrV?6`rV-6`p\"FUqX`qAq!n7Nq!\4MrpBXMs6K[LrTX@Gs6'CD
+s5j:Aro=%<s5Et8s53k5rn[V0s4dM+s4RD(r7Cu"rRL_np!`rho@*0Xo[WT`rR:_nqpGGjrm1Je
+s3:Peqoeu]rQ4ZPr5\HNrlP/^qof#`s3:Jes3L_lrR(Yns3pqrrmh&"r7Cr#rRpnuo@r`fk1TO`
+rnIG-r8%D0s53e5s5F";rSmt?jlQL(s6'FGrosIJ!:0UM!q#FDrU9dUs7-'Yrq$0^qt9p]r:f=J
+kkXrKnb`.[q>K[ZJcC<$JcG!7J,~>
+JcC<$JcC<$RK)^Squ-Eiq"t!crV?6`rV-6`p%A1Rp[dV>qsjURq="=Ns6]aNs6K[LrTOCIkNDg+
+s5j:Aro=%<s5Et8s53k5rn[V0s4dJ*s4RG)qq(hurRK]Qq:4f^qpkJkrmUkpr6bMjrm1MfrltGd
+qoer\qoS9Ir5no[qof#`rltDes3L_lrR(Yns3pnqs4./#r7Cr#rn7/%qqLPoq:jWWrS.>,qq_;/
+rnm\4s5F";ro=%>s5j7Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Ys7?6^qt9p]rV,jWiVE*An,)qY
+q>KXYJcC<$JcFs6J,~>
+JcC<$JcC<$RK)^Squ-Eiq"t!crV?6`rV-6`p%A1Rp[dV>qsjURq="=Ns6]aNs6K[LrTOCIkNDg+
+s5j:Aro=%<s5Et8s53k5rn[V0s4dJ*s4RG)qq(hurRK]Qq:4f^qpkJkrmUkpr6bMjrm1MfrltGd
+qoer\qoS9Ir5no[qof#`rltDes3L_lrR(Yns3pnqs4./#r7Cr#rn7/%qqLPoq:jWWrS.>,qq_;/
+rnm\4s5F";ro=%>s5j7Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Ys7?6^qt9p]rV,jWiVE*An,)qY
+q>KXYJcC<$JcFs6J,~>
+JcC<$JcC<$RK)^Squ-Eiq"t!crV?6`rV-6`p%A1Rp[dV>qsjURq="=Ns6]aNs6K[LrTOCIkNDg+
+s5j:Aro=%<s5Et8s53k5rn[V0s4dJ*s4RG)qq(hurRK]Qq:4f^qpkJkrmUkpr6bMjrm1MfrltGd
+qoer\qoS9Ir5no[qof#`rltDes3L_lrR(Yns3pnqs4./#r7Cr#rn7/%qqLPoq:jWWrS.>,qq_;/
+rnm\4s5F";ro=%>s5j7Bs6'FGrosIJ!:0UM!q#FDrU9dUs7-'Ys7?6^qt9p]rV,jWiVE*An,)qY
+q>KXYJcC<$JcFs6J,~>
+JcC<$JcC<$RK)[Rqu-Eip\Xpcr;$-_r:g-_o_%tNo^hJ@r:0aTqX=FOs6]aNs6K^MrTX@Gs6'@C
+!p/M(rSmt=iSjans5*h5rS@M/rnID*rn7>(qUb\sqpk)`q:5;lkL]U^rRLbormUkpr6bMjs3LSf
+rltGdq9/ZXo#^dOqTJl^rltDerm1VkrR(Yns3pqrs4./#r7Cu$rn72&rS.8*lJ;9kptP,gqqM))
+qq_8.s53b4s5F";rT!q=!9O1As5sCGrTOCKlg+Q:s6]jSrU9dUs7-'Ys7?6^r:U$^rV,sZkkXQ@
+mJH_Wq#0OXJcC<$JcFp5J,~>
+JcC<$JcC<$RK)[Rqu-Eip\Xpcr;$-_r:g-_o_%tNo^hJ@r:0aTqX=FOs6]aNs6K^MrTX@Gs6'@C
+!p/M(rSmt=iSjans5*h5rS@M/rnID*rn7>(qUb\sqpk)`q:5;lkL]U^rRLbormUkpr6bMjs3LSf
+rltGdq9/ZXo#^dOqTJl^rltDerm1VkrR(Yns3pqrs4./#r7Cu$rn72&rS.8*lJ;9kptP,gqqM))
+qq_8.s53b4s5F";rT!q=!9O1As5sCGrTOCKlg+Q:s6]jSrU9dUs7-'Ys7?6^r:U$^rV,sZkkXQ@
+mJH_Wq#0OXJcC<$JcFp5J,~>
+JcC<$JcC<$RK)[Rqu-Eip\Xpcr;$-_r:g-_o_%tNo^hJ@r:0aTqX=FOs6]aNs6K^MrTX@Gs6'@C
+!p/M(rSmt=iSjans5*h5rS@M/rnID*rn7>(qUb\sqpk)`q:5;lkL]U^rRLbormUkpr6bMjs3LSf
+rltGdq9/ZXo#^dOqTJl^rltDerm1VkrR(Yns3pqrs4./#r7Cu$rn72&rS.8*lJ;9kptP,gqqM))
+qq_8.s53b4s5F";rT!q=!9O1As5sCGrTOCKlg+Q:s6]jSrU9dUs7-'Ys7?6^r:U$^rV,sZkkXQ@
+mJH_Wq#0OXJcC<$JcFp5J,~>
+JcC<$JcC<$R/cRQqu-Eip\Xmbr;$-_qtL$^nb)SIoCMPDrUKjUqsXOPs6]aNs6K^MrTX@Gs6'CD
+s5j:Aro=%<s5Eq7s5*h5r8%D.s4dJ*rn7;'q:GJoo%!Ndmaq0bo[j&mrmgkps3ptqr6bMjrm1Je
+rltDcp<30Pp<3HZrlt>cs3L_lrR(Vms3pqrs4./#rR_)%rn75'rnID,g>2PZmb@Woq;)&,rnmY3
+s5F";rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrU0gWnaZPJs7?9_qt9s^rV-$\p%dPBl21;Sq#0LW
+JcC<$JcFm4J,~>
+JcC<$JcC<$R/cRQqu-Eip\Xmbr;$-_qtL$^nb)SIoCMPDrUKjUqsXOPs6]aNs6K^MrTX@Gs6'CD
+s5j:Aro=%<s5Eq7s5*h5r8%D.s4dJ*rn7;'q:GJoo%!Ndmaq0bo[j&mrmgkps3ptqr6bMjrm1Je
+rltDcp<30Pp<3HZrlt>cs3L_lrR(Vms3pqrs4./#rR_)%rn75'rnID,g>2PZmb@Woq;)&,rnmY3
+s5F";rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrU0gWnaZPJs7?9_qt9s^rV-$\p%dPBl21;Sq#0LW
+JcC<$JcFm4J,~>
+JcC<$JcC<$R/cRQqu-Eip\Xmbr;$-_qtL$^nb)SIoCMPDrUKjUqsXOPs6]aNs6K^MrTX@Gs6'CD
+s5j:Aro=%<s5Eq7s5*h5r8%D.s4dJ*rn7;'q:GJoo%!Ndmaq0bo[j&mrmgkps3ptqr6bMjrm1Je
+rltDcp<30Pp<3HZrlt>cs3L_lrR(Vms3pqrs4./#rR_)%rn75'rnID,g>2PZmb@Woq;)&,rnmY3
+s5F";rT!q=s5j7Bs6'FGrosIJs6K[Ns6]jSrU0gWnaZPJs7?9_qt9s^rV-$\p%dPBl21;Sq#0LW
+JcC<$JcFm4J,~>
+JcC<$JcC<$R/cRQqYg<hp\Xmbr;$']r:g']me-,Bp[e+LrUKmVqsXOPs6]aNs6K^MrosIHs6'@C
+s5a7ArT!q;s5Eq7!oMkkr8%D.s4dG)rn78&o[iign(7?en(IQiq:GSrrmgqrrmUkpr6bMjrm1Je
+rQY8alc]7NrQY5bs3L_lr6bPms3pqrs4./#r7Cu$s4R>(rnIG-q;(i&q;:o&nD3Thp"fW(rnmV2
+s5F";rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-$Xs7?9_r:U$^rqH0^q>'(Ij88TKq#0IV
+JcC<$JcFj3J,~>
+JcC<$JcC<$R/cRQqYg<hp\Xmbr;$']r:g']me-,Bp[e+LrUKmVqsXOPs6]aNs6K^MrosIHs6'@C
+s5a7ArT!q;s5Eq7!oMkkr8%D.s4dG)rn78&o[iign(7?en(IQiq:GSrrmgqrrmUkpr6bMjrm1Je
+rQY8alc]7NrQY5bs3L_lr6bPms3pqrs4./#r7Cu$s4R>(rnIG-q;(i&q;:o&nD3Thp"fW(rnmV2
+s5F";rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-$Xs7?9_r:U$^rqH0^q>'(Ij88TKq#0IV
+JcC<$JcFj3J,~>
+JcC<$JcC<$R/cRQqYg<hp\Xmbr;$']r:g']me-,Bp[e+LrUKmVqsXOPs6]aNs6K^MrosIHs6'@C
+s5a7ArT!q;s5Eq7!oMkkr8%D.s4dG)rn78&o[iign(7?en(IQiq:GSrrmgqrrmUkpr6bMjrm1Je
+rQY8alc]7NrQY5bs3L_lr6bPms3pqrs4./#r7Cu$s4R>(rnIG-q;(i&q;:o&nD3Thp"fW(rnmV2
+s5F";rT!q=s5j4As6'FGrosIJs6K[Ns6]jSrpTmVs7-$Xs7?9_r:U$^rqH0^q>'(Ij88TKq#0IV
+JcC<$JcFj3J,~>
+JcC<$JcC<$QN-@Oqu-EipA=dar;$']qY0j[kk4T?q=FCPrUKmVr9sXQs6]dOs6K^MrTX@Gs6'CD
+s5j:ArT!q;s5Et8s53h4rS@J.s4dG)rRq,$kL]O^q:Y&eqq:r#qUb_trmgnqs3ptqqpGGjrQk>c
+r6=ZRr6>)`rm1SjrR(Vms3pqrs4./#rR_)%rn78(rnIG-qq_2,q;:o(pYYi(i8+=frnmV2ro*n:
+r8[h<s5j4As5sCGrTX@Is6K[Ns6]jSrpTmVs7-'Yrq$0^r:U'_rV--_qYB^Ye,/n;p\j@UJcC<$
+JcFd1J,~>
+JcC<$JcC<$QN-@Oqu-EipA=dar;$']qY0j[kk4T?q=FCPrUKmVr9sXQs6]dOs6K^MrTX@Gs6'CD
+s5j:ArT!q;s5Et8s53h4rS@J.s4dG)rRq,$kL]O^q:Y&eqq:r#qUb_trmgnqs3ptqqpGGjrQk>c
+r6=ZRr6>)`rm1SjrR(Vms3pqrs4./#rR_)%rn78(rnIG-qq_2,q;:o(pYYi(i8+=frnmV2ro*n:
+r8[h<s5j4As5sCGrTX@Is6K[Ns6]jSrpTmVs7-'Yrq$0^r:U'_rV--_qYB^Ye,/n;p\j@UJcC<$
+JcFd1J,~>
+JcC<$JcC<$QN-@Oqu-EipA=dar;$']qY0j[kk4T?q=FCPrUKmVr9sXQs6]dOs6K^MrTX@Gs6'CD
+s5j:ArT!q;s5Et8s53h4rS@J.s4dG)rRq,$kL]O^q:Y&eqq:r#qUb_trmgnqs3ptqqpGGjrQk>c
+r6=ZRr6>)`rm1SjrR(Vms3pqrs4./#rR_)%rn78(rnIG-qq_2,q;:o(pYYi(i8+=frnmV2ro*n:
+r8[h<s5j4As5sCGrTX@Is6K[Ns6]jSrpTmVs7-'Yrq$0^r:U'_rV--_qYB^Ye,/n;p\j@UJcC<$
+JcFd1J,~>
+JcC<$JcC<$Q2g7NqYg<hpA=dar;$$\qY0dYj7W3>r:B^Srpg!Wr9s[RrpB[Ns6K^MrTOCIkNDg+
+s5j:ArSmt=iSj^ms53k5r8%D.rnI8&r7U>eq:XHTrRq2&qq(hurmgqrrmUkpr6bJirm1>ao$-pS
+rm1SjqpGGls3pqrrmh&"rR_)%s4R>(s4dS/qq_5-rSQVmqVV))n_O&ur87A/ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrpTmVs7-'Yrq$0^r:U'_rqH6`qYBj]d/3P7p\j=TJcC<$JcFa0J,~>
+JcC<$JcC<$Q2g7NqYg<hpA=dar;$$\qY0dYj7W3>r:B^Srpg!Wr9s[RrpB[Ns6K^MrTOCIkNDg+
+s5j:ArSmt=iSj^ms53k5r8%D.rnI8&r7U>eq:XHTrRq2&qq(hurmgqrrmUkpr6bJirm1>ao$-pS
+rm1SjqpGGls3pqrrmh&"rR_)%s4R>(s4dS/qq_5-rSQVmqVV))n_O&ur87A/ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrpTmVs7-'Yrq$0^r:U'_rqH6`qYBj]d/3P7p\j=TJcC<$JcFa0J,~>
+JcC<$JcC<$Q2g7NqYg<hpA=dar;$$\qY0dYj7W3>r:B^Srpg!Wr9s[RrpB[Ns6K^MrTOCIkNDg+
+s5j:ArSmt=iSj^ms53k5r8%D.rnI8&r7U>eq:XHTrRq2&qq(hurmgqrrmUkpr6bJirm1>ao$-pS
+rm1SjqpGGls3pqrrmh&"rR_)%s4R>(s4dS/qq_5-rSQVmqVV))n_O&ur87A/ro*n:r8[h<s5j4A
+s6'FGrTX@I!:0UMs6]jSrpTmVs7-'Yrq$0^r:U'_rqH6`qYBj]d/3P7p\j=TJcC<$JcFa0J,~>
+JcC<$JcC<$Q2g4MqYg<hpA=a`qt]mZq=jRUjn8KBr:BdUrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:Aro=%<s5En6s53k5qq_8,rnI2$mFh$`ptPDqq:k\urn7;'qq(l!rmgqrrmUkpqpGAhrQj]Q
+r6PAhqpGGlrmUhqs4./#r7Cu$s4RA)s4dP.r8%A/rnmG-nDWoqpYYT!qVV)+ro*k9r8[h<s5j1@
+s6'FGrosIJs6KXMs6TgSrU9dUs7-'Ys7?6^r:U*`rV-0`qt^*bc27/2p\j:SJcC<$JcF^/J,~>
+JcC<$JcC<$Q2g4MqYg<hpA=a`qt]mZq=jRUjn8KBr:BdUrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:Aro=%<s5En6s53k5qq_8,rnI2$mFh$`ptPDqq:k\urn7;'qq(l!rmgqrrmUkpqpGAhrQj]Q
+r6PAhqpGGlrmUhqs4./#r7Cu$s4RA)s4dP.r8%A/rnmG-nDWoqpYYT!qVV)+ro*k9r8[h<s5j1@
+s6'FGrosIJs6KXMs6TgSrU9dUs7-'Ys7?6^r:U*`rV-0`qt^*bc27/2p\j:SJcC<$JcF^/J,~>
+JcC<$JcC<$Q2g4MqYg<hpA=a`qt]mZq=jRUjn8KBr:BdUrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:Aro=%<s5En6s53k5qq_8,rnI2$mFh$`ptPDqq:k\urn7;'qq(l!rmgqrrmUkpqpGAhrQj]Q
+r6PAhqpGGlrmUhqs4./#r7Cu$s4RA)s4dP.r8%A/rnmG-nDWoqpYYT!qVV)+ro*k9r8[h<s5j1@
+s6'FGrosIJs6KXMs6TgSrU9dUs7-'Ys7?6^r:U*`rV-0`qt^*bc27/2p\j:SJcC<$JcF^/J,~>
+JcC<$JcC<$PlL+LqYg9gpA=a`qt]gXp\44OlLk)IrU]mVrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+!p/M(rT!q;ro*h6s53h4qq_8,r7g/`qV1i$n(miqr7h)%rn7;'r7Cr!rmgqrrmUkpqU,5fps8l`
+ps8ocqU,>krmUeps4./#rR_)%s4R>(s4dS/r8%A/rnmS1qr-u&q;Lf#o\]?"rSdb8qr@_;roO+@
+s6'FGrTX@Is6KXM!q#FDrU9dUs7-'Ys7?6^r:U*`rqH6`r;$3cd/3D3pAO.QJcC<$JcF[.J,~>
+JcC<$JcC<$PlL+LqYg9gpA=a`qt]gXp\44OlLk)IrU]mVrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+!p/M(rT!q;ro*h6s53h4qq_8,r7g/`qV1i$n(miqr7h)%rn7;'r7Cr!rmgqrrmUkpqU,5fps8l`
+ps8ocqU,>krmUeps4./#rR_)%s4R>(s4dS/r8%A/rnmS1qr-u&q;Lf#o\]?"rSdb8qr@_;roO+@
+s6'FGrTX@Is6KXM!q#FDrU9dUs7-'Ys7?6^r:U*`rqH6`r;$3cd/3D3pAO.QJcC<$JcF[.J,~>
+JcC<$JcC<$PlL+LqYg9gpA=a`qt]gXp\44OlLk)IrU]mVrpg!Wr9s[Rs6]dOs6K^MrTX@Gs6'@C
+!p/M(rT!q;ro*h6s53h4qq_8,r7g/`qV1i$n(miqr7h)%rn7;'r7Cr!rmgqrrmUkpqU,5fps8l`
+ps8ocqU,>krmUeps4./#rR_)%s4R>(s4dS/r8%A/rnmS1qr-u&q;Lf#o\]?"rSdb8qr@_;roO+@
+s6'FGrTX@Is6KXM!q#FDrU9dUs7-'Ys7?6^r:U*`rqH6`r;$3cd/3D3pAO.QJcC<$JcF[.J,~>
+JcC<$JcC<$P5jnJqYg<hp&"U^qt]aVoCq_Io(DqQrU]pWrpg$Xr9s[RrpB[Ns6K^MrosIHs6'@C
+s5j:ArT!q;ro*h6rnm_3qVD,*qV1PoptPZ#hVJ.crS.5'rn7;'r7Cr!rmgnqrmUkppsJHTq9f2i
+rmUeps4.,"rR_)%s4RA)s4dP.rS@J0s53\2ro*b6m,Rp$q;LAlr8IY7qW%V:roO+@roa=FrTX@I
+s6K[Ns6]jSrU9dUs7-'Ys7?6^rUp0`rqH9ar;$6de,/Y4o_mqOJcC<$JcFU,J,~>
+JcC<$JcC<$P5jnJqYg<hp&"U^qt]aVoCq_Io(DqQrU]pWrpg$Xr9s[RrpB[Ns6K^MrosIHs6'@C
+s5j:ArT!q;ro*h6rnm_3qVD,*qV1PoptPZ#hVJ.crS.5'rn7;'r7Cr!rmgnqrmUkppsJHTq9f2i
+rmUeps4.,"rR_)%s4RA)s4dP.rS@J0s53\2ro*b6m,Rp$q;LAlr8IY7qW%V:roO+@roa=FrTX@I
+s6K[Ns6]jSrU9dUs7-'Ys7?6^rUp0`rqH9ar;$6de,/Y4o_mqOJcC<$JcFU,J,~>
+JcC<$JcC<$P5jnJqYg<hp&"U^qt]aVoCq_Io(DqQrU]pWrpg$Xr9s[RrpB[Ns6K^MrosIHs6'@C
+s5j:ArT!q;ro*h6rnm_3qVD,*qV1PoptPZ#hVJ.crS.5'rn7;'r7Cr!rmgnqrmUkppsJHTq9f2i
+rmUeps4.,"rR_)%s4RA)s4dP.rS@J0s53\2ro*b6m,Rp$q;LAlr8IY7qW%V:roO+@roa=FrTX@I
+s6K[Ns6]jSrU9dUs7-'Ys7?6^rUp0`rqH9ar;$6de,/Y4o_mqOJcC<$JcFU,J,~>
+JcC<$JcC<$OoOeIqYg9go_\O^qYBLQn+ZJJp%A:UrU]pWrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!q;ro*e5rnm_3ptbc$p=o>so%iNdptbo(rnI>(rn7>(qq(hus4."rrR:_njjF%TrR:\o
+rmh&"rR_&$s4RA)s4dS/r8%D0s53_3ro*h8h;e@kp>Pc(pu2/1qW%S9roO+@roa=FrTX@Is6KXM
+s6]jSrU9dUs7-'Ys7?9_r:U'_rqH9arV?BfiVV[5oDRbLJcC<$JcFR+J,~>
+JcC<$JcC<$OoOeIqYg9go_\O^qYBLQn+ZJJp%A:UrU]pWrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!q;ro*e5rnm_3ptbc$p=o>so%iNdptbo(rnI>(rn7>(qq(hus4."rrR:_njjF%TrR:\o
+rmh&"rR_&$s4RA)s4dS/r8%D0s53_3ro*h8h;e@kp>Pc(pu2/1qW%S9roO+@roa=FrTX@Is6KXM
+s6]jSrU9dUs7-'Ys7?9_r:U'_rqH9arV?BfiVV[5oDRbLJcC<$JcFR+J,~>
+JcC<$JcC<$OoOeIqYg9go_\O^qYBLQn+ZJJp%A:UrU]pWrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!q;ro*e5rnm_3ptbc$p=o>so%iNdptbo(rnI>(rn7>(qq(hus4."rrR:_njjF%TrR:\o
+rmh&"rR_&$s4RA)s4dS/r8%D0s53_3ro*h8h;e@kp>Pc(pu2/1qW%S9roO+@roa=FrTX@Is6KXM
+s6]jSrU9dUs7-'Ys7?9_r:U'_rqH9arV?BfiVV[5oDRbLJcC<$JcFR+J,~>
+JcC<$JcC<$OT4\Hq>L0fo_\L]q>'4Kn+ZVNp\"LWrq$$Xs7-*XrU9aRs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!n:s5Ek5rnm\2oA05tn(misp##Z)pYYo*q;)&*rnIA)rn7;'r7Cr!rmgkprR:Ylo$R?_
+rR:Ynrmh&"r7Cu$s4R>(s4dS/rS@J0s53b4ro*k9puCZ#o&KH'pYko,puDA7roO%>s6'FGr9=7H
+s6KXMs6]jSrU9dUs7-'Ys7?9_r:U'_s7cBbrV?BflhfH7nbqPJJcC<$JcFL)J,~>
+JcC<$JcC<$OT4\Hq>L0fo_\L]q>'4Kn+ZVNp\"LWrq$$Xs7-*XrU9aRs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!n:s5Ek5rnm\2oA05tn(misp##Z)pYYo*q;)&*rnIA)rn7;'r7Cr!rmgkprR:Ylo$R?_
+rR:Ynrmh&"r7Cu$s4R>(s4dS/rS@J0s53b4ro*k9puCZ#o&KH'pYko,puDA7roO%>s6'FGr9=7H
+s6KXMs6]jSrU9dUs7-'Ys7?9_r:U'_s7cBbrV?BflhfH7nbqPJJcC<$JcFL)J,~>
+JcC<$JcC<$OT4\Hq>L0fo_\L]q>'4Kn+ZVNp\"LWrq$$Xs7-*XrU9aRs6]dOs6K^MrTX@Gs6'@C
+s5j:ArT!n:s5Ek5rnm\2oA05tn(misp##Z)pYYo*q;)&*rnIA)rn7;'r7Cr!rmgkprR:Ylo$R?_
+rR:Ynrmh&"r7Cu$s4R>(s4dS/rS@J0s53b4ro*k9puCZ#o&KH'pYko,puDA7roO%>s6'FGr9=7H
+s6KXMs6]jSrU9dUs7-'Ys7?9_r:U'_s7cBbrV?BflhfH7nbqPJJcC<$JcFL)J,~>
+JcC<$JcC<$O8nSGq>L0foDA@[q"`nDo_84Uq"=UXrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[h:ro*b4rSRP0k2#mjqVU>kr87J0qq_8,rnIA)rn7;'r7Cr!rRL_nqU>,cqpYAjrmh#!
+r7Cu$s4RA)rnIJ.rS@M1s53b4ro*k9qW%M7lK.j&n)O-$o],o2rT3q=s6'CFrTX@Is6KXMs6]gR
+rU9dUs7-'Ys7?9_r:U'_rqH<brV?BfnGCu<meu/EJcC<$JcFI(J,~>
+JcC<$JcC<$O8nSGq>L0foDA@[q"`nDo_84Uq"=UXrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[h:ro*b4rSRP0k2#mjqVU>kr87J0qq_8,rnIA)rn7;'r7Cr!rRL_nqU>,cqpYAjrmh#!
+r7Cu$s4RA)rnIJ.rS@M1s53b4ro*k9qW%M7lK.j&n)O-$o],o2rT3q=s6'CFrTX@Is6KXMs6]gR
+rU9dUs7-'Ys7?9_r:U'_rqH<brV?BfnGCu<meu/EJcC<$JcFI(J,~>
+JcC<$JcC<$O8nSGq>L0foDA@[q"`nDo_84Uq"=UXrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[h:ro*b4rSRP0k2#mjqVU>kr87J0qq_8,rnIA)rn7;'r7Cr!rRL_nqU>,cqpYAjrmh#!
+r7Cu$s4RA)rnIJ.rS@M1s53b4ro*k9qW%M7lK.j&n)O-$o],o2rT3q=s6'CFrTX@Is6KXMs6]gR
+rU9dUs7-'Ys7?9_r:U'_rqH<brV?BfnGCu<meu/EJcC<$JcFI(J,~>
+JcC<$JcC<$O8nMEq>L0fo)&4YpA*S?q"O^[q"=XYrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[e9ro*\2r86bqq;:`#n_s0!rSRV2qq_8,s4dG)rn7>(qq(etrmgViqpY2erRLnur7Cu$
+rn78(s4dS/r8%D0s53b4s5Et:qr@Y9r8m2*qW7P6jQ$-urT3q=roa=Fr9=7Hrp0OLs6]jSrU9dU
+s7-$Xs7?9_r:U*`rqH9arqZKgo)%GEkPa<;JcC<$JcFF'J,~>
+JcC<$JcC<$O8nMEq>L0fo)&4YpA*S?q"O^[q"=XYrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[e9ro*\2r86bqq;:`#n_s0!rSRV2qq_8,s4dG)rn7>(qq(etrmgViqpY2erRLnur7Cu$
+rn78(s4dS/r8%D0s53b4s5Et:qr@Y9r8m2*qW7P6jQ$-urT3q=roa=Fr9=7Hrp0OLs6]jSrU9dU
+s7-$Xs7?9_r:U*`rqH9arqZKgo)%GEkPa<;JcC<$JcFF'J,~>
+JcC<$JcC<$O8nMEq>L0fo)&4YpA*S?q"O^[q"=XYrq$'Yrpg$Xr9s[Rs6]dOs6K^MrTX@Gs6'=B
+s5j:Ar8[e9ro*\2r86bqq;:`#n_s0!rSRV2qq_8,s4dG)rn7>(qq(etrmgViqpY2erRLnur7Cu$
+rn78(s4dS/r8%D0s53b4s5Et:qr@Y9r8m2*qW7P6jQ$-urT3q=roa=Fr9=7Hrp0OLs6]jSrU9dU
+s7-$Xs7?9_r:U*`rqH9arqZKgo)%GEkPa<;JcC<$JcFF'J,~>
+JcC<$JcC<$NW8>Dq>L-enb`+XoD.;=qY0p]qXsgZs7?-Ys7--Yr9s[Rs6]dOs6K^Mr9=7Fs6'@C
+roO1@qr@\8ro*V0l/2*jq;Lc$qVh8.rnm_3qq_8,rnIA)rn7;'qq(etqpk)`r71bsqq(i"s4R>(
+s4dS/rS@J0s53e5ro*n:qr@\:rT2ktq;qA3p#Gl/r8mb:roa:Er9=7Hs6KULs6]jSrU9dUs7-'Y
+rq$0^r:U*`rqH<brV?Ego_\(Sg\p".JcC<$JcF=$J,~>
+JcC<$JcC<$NW8>Dq>L-enb`+XoD.;=qY0p]qXsgZs7?-Ys7--Yr9s[Rs6]dOs6K^Mr9=7Fs6'@C
+roO1@qr@\8ro*V0l/2*jq;Lc$qVh8.rnm_3qq_8,rnIA)rn7;'qq(etqpk)`r71bsqq(i"s4R>(
+s4dS/rS@J0s53e5ro*n:qr@\:rT2ktq;qA3p#Gl/r8mb:roa:Er9=7Hs6KULs6]jSrU9dUs7-'Y
+rq$0^r:U*`rqH<brV?Ego_\(Sg\p".JcC<$JcF=$J,~>
+JcC<$JcC<$NW8>Dq>L-enb`+XoD.;=qY0p]qXsgZs7?-Ys7--Yr9s[Rs6]dOs6K^Mr9=7Fs6'@C
+roO1@qr@\8ro*V0l/2*jq;Lc$qVh8.rnm_3qq_8,rnIA)rn7;'qq(etqpk)`r71bsqq(i"s4R>(
+s4dS/rS@J0s53e5ro*n:qr@\:rT2ktq;qA3p#Gl/r8mb:roa:Er9=7Hs6KULs6]jSrU9dUs7-'Y
+rq$0^r:U*`rqH<brV?Ego_\(Sg\p".JcC<$JcF=$J,~>
+JcC<$JcC<$N;r2Bq>L-en,)hTmeQ#?qtL'_qXsj[rq$'Yrpg$XrU9aRs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8r8HJiqr.A1m,S!&r8IM1rnm_3r8%A-s4dG)rn7;'q:GPqmFD-cqUb`!s4R>(rnIJ.
+rS@M1rnm\4s5Et:r8[e;roNq;lK@^"pZ;)/puV;5roa:Eqs".Grp0OLs6]jSr9s[Ts7-'Yrq$0^
+r:U*`rqH<brqZKgp&"CZg&9Y(JcC<$JcF7"J,~>
+JcC<$JcC<$N;r2Bq>L-en,)hTmeQ#?qtL'_qXsj[rq$'Yrpg$XrU9aRs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8r8HJiqr.A1m,S!&r8IM1rnm_3r8%A-s4dG)rn7;'q:GPqmFD-cqUb`!s4R>(rnIJ.
+rS@M1rnm\4s5Et:r8[e;roNq;lK@^"pZ;)/puV;5roa:Eqs".Grp0OLs6]jSr9s[Ts7-'Yrq$0^
+r:U*`rqH<brqZKgp&"CZg&9Y(JcC<$JcF7"J,~>
+JcC<$JcC<$N;r2Bq>L-en,)hTmeQ#?qtL'_qXsj[rq$'Yrpg$XrU9aRs6]dOs6K^MrTX=Fs6'=B
+s5j7@qr@\8r8HJiqr.A1m,S!&r8IM1rnm_3r8%A-s4dG)rn7;'q:GPqmFD-cqUb`!s4R>(rnIJ.
+rS@M1rnm\4s5Et:r8[e;roNq;lK@^"pZ;)/puV;5roa:Eqs".Grp0OLs6]jSr9s[Ts7-'Yrq$0^
+r:U*`rqH<brqZKgp&"CZg&9Y(JcC<$JcF7"J,~>
+JcC<$JcC<$MuW)Aq#1!cn,)_QlM9iBr:g0`qXsj[rq$'Ys7-*XrU9dSs6]aNs6K^MrTX=Fs6'=B
+roO.?qr@V6qr-o"q;M20h;eInrSdY3rnm_3r8%A-rnIA)rRq2&pXelbpt,Jsrn75's4dS/r8%D0
+s53b4s5F";r8[e;roO"=r9*A/q<.5/o]>`-rTF.Cqs".Grp0LKs6]jSrU9aTs7-'Ys7?6^r:U*`
+rqH<brqZNhp&"L]g\o\%JcC<$JcF0uJ,~>
+JcC<$JcC<$MuW)Aq#1!cn,)_QlM9iBr:g0`qXsj[rq$'Ys7-*XrU9dSs6]aNs6K^MrTX=Fs6'=B
+roO.?qr@V6qr-o"q;M20h;eInrSdY3rnm_3r8%A-rnIA)rRq2&pXelbpt,Jsrn75's4dS/r8%D0
+s53b4s5F";r8[e;roO"=r9*A/q<.5/o]>`-rTF.Cqs".Grp0LKs6]jSrU9aTs7-'Ys7?6^r:U*`
+rqH<brqZNhp&"L]g\o\%JcC<$JcF0uJ,~>
+JcC<$JcC<$MuW)Aq#1!cn,)_QlM9iBr:g0`qXsj[rq$'Ys7-*XrU9dSs6]aNs6K^MrTX=Fs6'=B
+roO.?qr@V6qr-o"q;M20h;eInrSdY3rnm_3r8%A-rnIA)rRq2&pXelbpt,Jsrn75's4dS/r8%D0
+s53b4s5F";r8[e;roO"=r9*A/q<.5/o]>`-rTF.Cqs".Grp0LKs6]jSrU9aTs7-'Ys7?6^r:U*`
+rqH<brqZNhp&"L]g\o\%JcC<$JcF0uJ,~>
+JcC<$JcC<$M>ul?q#1!cm/-2HmJ6>Jr:g0`qt9s\rq$'Ys7--Yr9s[Rs6]dOrp0ULrTX=Fs6'=B
+roO+>q;_A3m,@d"o&K&spZ)53ro*b4rnm_3r8%A-rnI>(rRq/%jk'I`rn72&s4dP.r8%D0s53e5
+ro*n:r8[h<roO%>rTF+BlKS-.q<-`!r9+%Bqs"+Frp0LKs6]gRrU9dUrpfsXs7?6^r:U*`rqH<b
+rqZNhpA=X_i;Lt#JcC<$JcF-tJ,~>
+JcC<$JcC<$M>ul?q#1!cm/-2HmJ6>Jr:g0`qt9s\rq$'Ys7--Yr9s[Rs6]dOrp0ULrTX=Fs6'=B
+roO+>q;_A3m,@d"o&K&spZ)53ro*b4rnm_3r8%A-rnI>(rRq/%jk'I`rn72&s4dP.r8%D0s53e5
+ro*n:r8[h<roO%>rTF+BlKS-.q<-`!r9+%Bqs"+Frp0LKs6]gRrU9dUrpfsXs7?6^r:U*`rqH<b
+rqZNhpA=X_i;Lt#JcC<$JcF-tJ,~>
+JcC<$JcC<$M>ul?q#1!cm/-2HmJ6>Jr:g0`qt9s\rq$'Ys7--Yr9s[Rs6]dOrp0ULrTX=Fs6'=B
+roO+>q;_A3m,@d"o&K&spZ)53ro*b4rnm_3r8%A-rnI>(rRq/%jk'I`rn72&s4dP.r8%D0s53e5
+ro*n:r8[h<roO%>rTF+BlKS-.q<-`!r9+%Bqs"+Frp0LKs6]gRrU9dUrpfsXs7?6^r:U*`rqH<b
+rqZNhpA=X_i;Lt#JcC<$JcF-tJ,~>
+JcC<$JcC<$M#Z`=q#0sbl20`AoD/%Rr:g3aqXsm\rq$'Ys7-*XrU9dSrpB[Ns6K^Mr9=4Es6':A
+roO+>p>bQ"o&KQ,l/hg'q;_J6ro*e5rnm_3qq_;-rS.2&rRq&"p"0&mrRq&$rnIJ.r8%D0rnm\4
+s5Et:rT!n<s5j.?roa7Dh<Fe"pZM)/qWIe?q<@nDrp0LKrpBaRr9s[Ts7-$Xs7?9_r:U'_s7cEc
+rV?Hhp\Xdam/=a!JcC<$JcF'rJ,~>
+JcC<$JcC<$M#Z`=q#0sbl20`AoD/%Rr:g3aqXsm\rq$'Ys7-*XrU9dSrpB[Ns6K^Mr9=4Es6':A
+roO+>p>bQ"o&KQ,l/hg'q;_J6ro*e5rnm_3qq_;-rS.2&rRq&"p"0&mrRq&$rnIJ.r8%D0rnm\4
+s5Et:rT!n<s5j.?roa7Dh<Fe"pZM)/qWIe?q<@nDrp0LKrpBaRr9s[Ts7-$Xs7?9_r:U'_s7cEc
+rV?Hhp\Xdam/=a!JcC<$JcF'rJ,~>
+JcC<$JcC<$M#Z`=q#0sbl20`AoD/%Rr:g3aqXsm\rq$'Ys7-*XrU9dSrpB[Ns6K^Mr9=4Es6':A
+roO+>p>bQ"o&KQ,l/hg'q;_J6ro*e5rnm_3qq_;-rS.2&rRq&"p"0&mrRq&$rnIJ.r8%D0rnm\4
+s5Et:rT!n<s5j.?roa7Dh<Fe"pZM)/qWIe?q<@nDrp0LKrpBaRr9s[Ts7-$Xs7?9_r:U'_s7cEc
+rV?Hhp\Xdam/=a!JcC<$JcF'rJ,~>
+JcC<$JcC<$L]?T;p\jjaj88*;q"aXYrV-9aqt9s\s7?0Zrpg$Xr9s[Rs6]aNs6K^Mr9=4Eroa1@
+rT4"=hW+InqW6r'qrRe;qW%S7ro*b4s53h4qq_8,rnI5%q:YPqq:YStrnIG-r8%D0s53b4s5F";
+r8[h<roO(?roa:EpZ_&0n`fi4n)sQ2q!%eCrTjCJrpBaRr9sXSs7-$Xs7?9_r:U'_s7cEcrV?Eg
+q"smbo)63"JcC<$JcF!pJ,~>
+JcC<$JcC<$L]?T;p\jjaj88*;q"aXYrV-9aqt9s\s7?0Zrpg$Xr9s[Rs6]aNs6K^Mr9=4Eroa1@
+rT4"=hW+InqW6r'qrRe;qW%S7ro*b4s53h4qq_8,rnI5%q:YPqq:YStrnIG-r8%D0s53b4s5F";
+r8[h<roO(?roa:EpZ_&0n`fi4n)sQ2q!%eCrTjCJrpBaRr9sXSs7-$Xs7?9_r:U'_s7cEcrV?Eg
+q"smbo)63"JcC<$JcF!pJ,~>
+JcC<$JcC<$L]?T;p\jjaj88*;q"aXYrV-9aqt9s\s7?0Zrpg$Xr9s[Rs6]aNs6K^Mr9=4Eroa1@
+rT4"=hW+InqW6r'qrRe;qW%S7ro*b4s53h4qq_8,rnI5%q:YPqq:YStrnIG-r8%D0s53b4s5F";
+r8[h<roO(?roa:EpZ_&0n`fi4n)sQ2q!%eCrTjCJrpBaRr9sXSs7-$Xs7?9_r:U'_s7cEcrV?Eg
+q"smbo)63"JcC<$JcF!pJ,~>
+JcC<$JcC<$LB$K:p\jg`gACC9q>'d[rV-9aqt:!]rq$'Ys7-*XrU9aRs6]aNs6K^Mqs"+Droa.?
+rT3n:mc4-(qW6GnrT4"=qr@\8ro*b4s53h4qq_5+rS-tuqq:SprnID,r8%A/s53b4s5F";r8[h<
+s5j1@roa:Eq<@eAmHaT5nEKB)p$)G?rp0IJrpB^Qr9s[Ts7-$Xrq$0^r:U'_s7cEcrV?Hhp\Xgb
+p&2H#JcC<$JcEmmJ,~>
+JcC<$JcC<$LB$K:p\jg`gACC9q>'d[rV-9aqt:!]rq$'Ys7-*XrU9aRs6]aNs6K^Mqs"+Droa.?
+rT3n:mc4-(qW6GnrT4"=qr@\8ro*b4s53h4qq_5+rS-tuqq:SprnID,r8%A/s53b4s5F";r8[h<
+s5j1@roa:Eq<@eAmHaT5nEKB)p$)G?rp0IJrpB^Qr9s[Ts7-$Xrq$0^r:U'_s7cEcrV?Hhp\Xgb
+p&2H#JcC<$JcEmmJ,~>
+JcC<$JcC<$LB$K:p\jg`gACC9q>'d[rV-9aqt:!]rq$'Ys7-*XrU9aRs6]aNs6K^Mqs"+Droa.?
+rT3n:mc4-(qW6GnrT4"=qr@\8ro*b4s53h4qq_5+rS-tuqq:SprnID,r8%A/s53b4s5F";r8[h<
+s5j1@roa:Eq<@eAmHaT5nEKB)p$)G?rp0IJrpB^Qr9s[Ts7-$Xrq$0^r:U'_s7cEcrV?Hhp\Xgb
+p&2H#JcC<$JcEmmJ,~>
+JcC<$JcC<$K`C67pAO[^ebf%9qt^$^rV-<bqt9s\rq$'Ys7--Yr9s[RrpB[Nrp0RKr9=4ErTF"=
+qW7/+q;q20kNDU%roO.?qr@\8ro*b4s53h4qVD,*r7gPkr7h2*qq_8.rnm\4ro*n:r8[h<s5j1@
+roa:Eqs"%Dqs3b<q!7b@h!+b%rp0FIrpB^Qr9sXSs7-$Xs7?6^r:U*`rqH<brqZNhq"ssdpAMN#
+JcC<$JcEdjJ,~>
+JcC<$JcC<$K`C67pAO[^ebf%9qt^$^rV-<bqt9s\rq$'Ys7--Yr9s[RrpB[Nrp0RKr9=4ErTF"=
+qW7/+q;q20kNDU%roO.?qr@\8ro*b4s53h4qVD,*r7gPkr7h2*qq_8.rnm\4ro*n:r8[h<s5j1@
+roa:Eqs"%Dqs3b<q!7b@h!+b%rp0FIrpB^Qr9sXSs7-$Xs7?6^r:U*`rqH<brqZNhq"ssdpAMN#
+JcC<$JcEdjJ,~>
+JcC<$JcC<$K`C67pAO[^ebf%9qt^$^rV-<bqt9s\rq$'Ys7--Yr9s[RrpB[Nrp0RKr9=4ErTF"=
+qW7/+q;q20kNDU%roO.?qr@\8ro*b4s53h4qVD,*r7gPkr7h2*qq_8.rnm\4ro*n:r8[h<s5j1@
+roa:Eqs"%Dqs3b<q!7b@h!+b%rp0FIrpB^Qr9sXSs7-$Xs7?6^r:U*`rqH<brqZNhq"ssdpAMN#
+JcC<$JcEdjJ,~>
+JcC<$JcC<$KE(*5p&4L[eGK(<qt^$^rV-<bqt:!]rq$'Ys7-*XrU9aRs6]aNrp0RKqs"+DrTEn:
+mH*p$qWI#)qrdh<rT4%>r8[e9ro*b4rnm_3qVD&(m+_HnqVD/-rnmY3ro*n:rT!n<s5j1@s6'CF
+qs"(ErTiJ0q<RkAl08'0rTj:GrpB^Qr9sXSrpfpWs7?6^r:U*`rqH<brqZNhq"ssdp\hW$JcC<$
+JcE^hJ,~>
+JcC<$JcC<$KE(*5p&4L[eGK(<qt^$^rV-<bqt:!]rq$'Ys7-*XrU9aRs6]aNrp0RKqs"+DrTEn:
+mH*p$qWI#)qrdh<rT4%>r8[e9ro*b4rnm_3qVD&(m+_HnqVD/-rnmY3ro*n:rT!n<s5j1@s6'CF
+qs"(ErTiJ0q<RkAl08'0rTj:GrpB^Qr9sXSrpfpWs7?6^r:U*`rqH<brqZNhq"ssdp\hW$JcC<$
+JcE^hJ,~>
+JcC<$JcC<$KE(*5p&4L[eGK(<qt^$^rV-<bqt:!]rq$'Ys7-*XrU9aRs6]aNrp0RKqs"+DrTEn:
+mH*p$qWI#)qrdh<rT4%>r8[e9ro*b4rnm_3qVD&(m+_HnqVD/-rnmY3ro*n:rT!n<s5j1@s6'CF
+qs"(ErTiJ0q<RkAl08'0rTj:GrpB^Qr9sXSrpfpWs7?6^r:U*`rqH<brqZNhq"ssdp\hW$JcC<$
+JcE^hJ,~>
+JcC<$JcC<$KE('4o_n:Webf4>r;$-_rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]aNrp0RKqs"(Cr9)r!
+qWI\<kNVp.r9*q=roO.?r8[e9ro*b4rnm\2ptb;lptbr+rnmV2s5F";r8[h<roO+@roa=Fqs"+F
+rTj+Bp?h>8q<R5/qWmtDrU'UPqsXRSrpfpWrq$0^r:U'_rqH<brqZNhq>:'eq#.c&JcC<$JcERd
+J,~>
+JcC<$JcC<$KE('4o_n:Webf4>r;$-_rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]aNrp0RKqs"(Cr9)r!
+qWI\<kNVp.r9*q=roO.?r8[e9ro*b4rnm\2ptb;lptbr+rnmV2s5F";r8[h<roO+@roa=Fqs"+F
+rTj+Bp?h>8q<R5/qWmtDrU'UPqsXRSrpfpWrq$0^r:U'_rqH<brqZNhq>:'eq#.c&JcC<$JcERd
+J,~>
+JcC<$JcC<$KE('4o_n:Webf4>r;$-_rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]aNrp0RKqs"(Cr9)r!
+qWI\<kNVp.r9*q=roO.?r8[e9ro*b4rnm\2ptb;lptbr+rnmV2s5F";r8[h<roO+@roa=Fqs"+F
+rTj+Bp?h>8q<R5/qWmtDrU'UPqsXRSrpfpWrq$0^r:U'_rqH<brqZNhq>:'eq#.c&JcC<$JcERd
+J,~>
+JcC<$JcC<$JcFj2oDS(Sf_bOAr;$0`rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]^Mrp0RKqW[qAqWI8.
+q<.V<g?JP!roa.?roO1@qr@\8ro*b4rSRS1inaRirnmV2ro*n:r8[h<s5j1@roa=Fr9=4GrTj7F
+p[.nHp$M;9jQlR,rU'ROqsXRSrpfmVs7?6^r:U'_rqH<brqZQiq"ssdqYe#)JcC<$JcEF`J,~>
+JcC<$JcC<$JcFj2oDS(Sf_bOAr;$0`rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]^Mrp0RKqW[qAqWI8.
+q<.V<g?JP!roa.?roO1@qr@\8ro*b4rSRS1inaRirnmV2ro*n:r8[h<s5j1@roa=Fr9=4GrTj7F
+p[.nHp$M;9jQlR,rU'ROqsXRSrpfmVs7?6^r:U'_rqH<brqZQiq"ssdqYe#)JcC<$JcEF`J,~>
+JcC<$JcC<$JcFj2oDS(Sf_bOAr;$0`rqHEcqt9s\s7?0Zrpg$Xr9sXQs6]^Mrp0RKqW[qAqWI8.
+q<.V<g?JP!roa.?roO1@qr@\8ro*b4rSRS1inaRirnmV2ro*n:r8[h<s5j1@roa=Fr9=4GrTj7F
+p[.nHp$M;9jQlR,rU'ROqsXRSrpfmVs7?6^r:U'_rqH<brqZQiq"ssdqYe#)JcC<$JcEF`J,~>
+JcC<$JcC<$JcGcMir8NIjo"3:qYL0dq=ss`rq?6^rq-6^qssdWrp]jSs6fmRqs==JrTa4CqWR8.
+q<7G7kN_j,rTO7DqW@h>roEt:ro3q9qV_>0qqgbsqqh;/qr%J4ro3k9s5a4Ar9"%Broj:Erp'LK
+qX".IkO/05mHjW6na-5ArU0ONrp]pWr:9jYrq--]rq??cqtU0drVH?equ$<h]DdB]JcC<$]DmB~>
+JcC<$JcC<$JcGcMir8NIjo"3:qYL0dq=ss`rq?6^rq-6^qssdWrp]jSs6fmRqs==JrTa4CqWR8.
+q<7G7kN_j,rTO7DqW@h>roEt:ro3q9qV_>0qqgbsqqh;/qr%J4ro3k9s5a4Ar9"%Broj:Erp'LK
+qX".IkO/05mHjW6na-5ArU0ONrp]pWr:9jYrq--]rq??cqtU0drVH?equ$<h]DdB]JcC<$]DmB~>
+JcC<$JcC<$JcGcMir8NIjo"3:qYL0dq=ss`rq?6^rq-6^qssdWrp]jSs6fmRqs==JrTa4CqWR8.
+q<7G7kN_j,rTO7DqW@h>roEt:ro3q9qV_>0qqgbsqqh;/qr%J4ro3k9s5a4Ar9"%Broj:Erp'LK
+qX".IkO/05mHjW6na-5ArU0ONrp]pWr:9jYrq--]rq??cqtU0drVH?equ$<h]DdB]JcC<$]DmB~>
+JcC<$JcC<$JcG]KiVr<EiV`$=qtg9eq=ss`rq?6^s7H<^r:9jWs7#pSs6fmRqs=:IrTa+@lKIg'
+qWd;1qs+"Aroj=Dqr[q?roEt:ro3n8q;D/-nD='"q;D82ro3k9roF+@r9"%Broj:Es6BULqX"1J
+qsNe=q<n(GhX(1-r9jFMrp]pWqssdYrq-*\s7ZHdqtU-crqcEer;?Ei^&ET_JcC<$\,Us~>
+JcC<$JcC<$JcG]KiVr<EiV`$=qtg9eq=ss`rq?6^s7H<^r:9jWs7#pSs6fmRqs=:IrTa+@lKIg'
+qWd;1qs+"Aroj=Dqr[q?roEt:ro3n8q;D/-nD='"q;D82ro3k9roF+@r9"%Broj:Es6BULqX"1J
+qsNe=q<n(GhX(1-r9jFMrp]pWqssdYrq-*\s7ZHdqtU-crqcEer;?Ei^&ET_JcC<$\,Us~>
+JcC<$JcC<$JcG]KiVr<EiV`$=qtg9eq=ss`rq?6^s7H<^r:9jWs7#pSs6fmRqs=:IrTa+@lKIg'
+qWd;1qs+"Aroj=Dqr[q?roEt:ro3n8q;D/-nD='"q;D82ro3k9roF+@r9"%Broj:Es6BULqX"1J
+qsNe=q<n(GhX(1-r9jFMrp]pWqssdYrq-*\s7ZHdqtU-crqcEer;?Ei^&ET_JcC<$\,Us~>
+JcC<$JcC<$JcGZJi;W*Ai;E'@r;-?eqY:'arq?6^rq-6^qssdWrp]jSrpKdQqX"1Hr9E&$qWdnB
+l0S<5rTa7Droj@Eqr[n>roEt:rSme7pYbPup>Gr/ro3h8s5a1@r9"%Broj:Es6BULqs=:KrU/S3
+q<n%Fm-OT9r9jCLrUBgVqssaXrq--]rq??cqtU0drVH?equ$<h`;Y>fJcC<$YQ'+~>
+JcC<$JcC<$JcGZJi;W*Ai;E'@r;-?eqY:'arq?6^rq-6^qssdWrp]jSrpKdQqX"1Hr9E&$qWdnB
+l0S<5rTa7Droj@Eqr[n>roEt:rSme7pYbPup>Gr/ro3h8s5a1@r9"%Broj:Es6BULqs=:KrU/S3
+q<n%Fm-OT9r9jCLrUBgVqssaXrq--]rq??cqtU0drVH?equ$<h`;Y>fJcC<$YQ'+~>
+JcC<$JcC<$JcGZJi;W*Ai;E'@r;-?eqY:'arq?6^rq-6^qssdWrp]jSrpKdQqX"1Hr9E&$qWdnB
+l0S<5rTa7Droj@Eqr[n>roEt:rSme7pYbPup>Gr/ro3h8s5a1@r9"%Broj:Es6BULqs=:KrU/S3
+q<n%Fm-OT9r9jCLrUBgVqssaXrq--]rq??cqtU0drVH?equ$<h`;Y>fJcC<$YQ'+~>
+JcC<$JcC<$JcGWIh>ZL6kPXoJr;-Bfq=ss`rq?9_rq-3]r:9jWrp]gRrpKdQqX".Gqs*A/q<IhB
+h<b(*rTa:Eroj@Eqr[n>roEq9rSme7jP]spro3h8roF(?r9"%Broj=Frp'LKr9XCLrU0@Io^M><
+q!RA5qX4.IrUBgVqXXXWrq--]rq??cqY:'crVH?er;?EibPm(mJcC<$VuM8~>
+JcC<$JcC<$JcGWIh>ZL6kPXoJr;-Bfq=ss`rq?9_rq-3]r:9jWrp]gRrpKdQqX".Gqs*A/q<IhB
+h<b(*rTa:Eroj@Eqr[n>roEq9rSme7jP]spro3h8roF(?r9"%Broj=Frp'LKr9XCLrU0@Io^M><
+q!RA5qX4.IrUBgVqXXXWrq--]rq??cqY:'crVH?er;?EibPm(mJcC<$VuM8~>
+JcC<$JcC<$JcGWIh>ZL6kPXoJr;-Bfq=ss`rq?9_rq-3]r:9jWrp]gRrpKdQqX".Gqs*A/q<IhB
+h<b(*rTa:Eroj@Eqr[n>roEq9rSme7jP]spro3h8roF(?r9"%Broj=Frp'LKr9XCLrU0@Io^M><
+q!RA5qX4.IrUBgVqXXXWrq--]rq??cqY:'crVH?er;?EibPm(mJcC<$VuM8~>
+JcC<$JcC<$JcGQGgA]q,nGMnTr;-BfqY:'arq?6^rq-3]r:9jWrp]gRrpKaPq<\"Ejm)^.na,Z1
+p?_bDrTa:Eroj@Eqr[n>roEn8rSm\4n_j<'r8RV6roF(?r9""As60CFrp'OLqs==LrpKOLk4%m/
+jmMg1rUBdUqssaXrUg![rq??cqtU-crqcEer;?EifD^@$JcC<$Rf@m~>
+JcC<$JcC<$JcGQGgA]q,nGMnTr;-BfqY:'arq?6^rq-3]r:9jWrp]gRrpKaPq<\"Ejm)^.na,Z1
+p?_bDrTa:Eroj@Eqr[n>roEn8rSm\4n_j<'r8RV6roF(?r9""As60CFrp'OLqs==LrpKOLk4%m/
+jmMg1rUBdUqssaXrUg![rq??cqtU-crqcEer;?EifD^@$JcC<$Rf@m~>
+JcC<$JcC<$JcGQGgA]q,nGMnTr;-BfqY:'arq?6^rq-3]r:9jWrp]gRrpKaPq<\"Ejm)^.na,Z1
+p?_bDrTa:Eroj@Eqr[n>roEn8rSm\4n_j<'r8RV6roF(?r9""As60CFrp'OLqs==LrpKOLk4%m/
+jmMg1rUBdUqssaXrUg![rq??cqtU-crqcEer;?EifD^@$JcC<$Rf@m~>
+JcC<$JcC<$JcGKEfDaP'o_e@YrVHKgqY:$`rq?9_rq-3]qssaVrp]gRrU0XOp[%P<rp'.Ao'H/=
+n*^&>q!@tFrp'CFroj@Eqr[n>rT*e7qVq&(qr7G3rT*t>r9""As60CFrp'OLqs=@MrU0LMr:&t@
+q!dY=q!RY?rUBdUq==OVrq-*\rq??cqY:'crVH?er;?Eih>W!*JcC<$P5g%~>
+JcC<$JcC<$JcGKEfDaP'o_e@YrVHKgqY:$`rq?9_rq-3]qssaVrp]gRrU0XOp[%P<rp'.Ao'H/=
+n*^&>q!@tFrp'CFroj@Eqr[n>rT*e7qVq&(qr7G3rT*t>r9""As60CFrp'OLqs=@MrU0LMr:&t@
+q!dY=q!RY?rUBdUq==OVrq-*\rq??cqY:'crVH?er;?Eih>W!*JcC<$P5g%~>
+JcC<$JcC<$JcGKEfDaP'o_e@YrVHKgqY:$`rq?9_rq-3]qssaVrp]gRrU0XOp[%P<rp'.Ao'H/=
+n*^&>q!@tFrp'CFroj@Eqr[n>rT*e7qVq&(qr7G3rT*t>r9""As60CFrp'OLqs=@MrU0LMr:&t@
+q!dY=q!RY?rUBdUq==OVrq-*\rq??cqY:'crVH?er;?Eih>W!*JcC<$P5g%~>
+JcC<$JcC<$JcGHDd/Mo#p\a[\rVHKgqY:'arq?6^rq-3]qssaVrp]dQrU0XOna-#9md0f;p[7YA
+q<n.IqX"1Hrp'CFroj@Eqr[k=rT*\4n`'9&roF%>qr[qAroj:Es6BULr9XFMrpKXOr:'URmIL&B
+q=*5/qsaORqXXUVrq-'[rq??cqtU-crqcEer;?Hjhu83,JcC<$NrOV~>
+JcC<$JcC<$JcGHDd/Mo#p\a[\rVHKgqY:'arq?6^rq-3]qssaVrp]dQrU0XOna-#9md0f;p[7YA
+q<n.IqX"1Hrp'CFroj@Eqr[k=rT*\4n`'9&roF%>qr[qAroj:Es6BULr9XFMrpKXOr:'URmIL&B
+q=*5/qsaORqXXUVrq-'[rq??cqtU-crqcEer;?Hjhu83,JcC<$NrOV~>
+JcC<$JcC<$JcGHDd/Mo#p\a[\rVHKgqY:'arq?6^rq-3]qssaVrp]dQrU0XOna-#9md0f;p[7YA
+q<n.IqX"1Hrp'CFroj@Eqr[k=rT*\4n`'9&roF%>qr[qAroj:Es6BULr9XFMrpKXOr:'URmIL&B
+q=*5/qsaORqXXUVrq-'[rq??cqtU-crqcEer;?Hjhu83,JcC<$NrOV~>
+JcC<$JcC<$JcG?A`r>3#q#'g^rVHKgqY:'arV$-]rq-3]qssaVrp]aPrU0RMi9^:,qX3A3r9jON
+qX"4IrTa:Eroj@EqW@b<rT*&"r8dh<qr[n@s60@Es6BULr9XFMrpK[PrUBaTiUZg7p[IM;q=+=P
+q""CTrq-'[rq??cqY:'crVH<dr;?HjjSj`1JcC<$M#Vu~>
+JcC<$JcC<$JcG?A`r>3#q#'g^rVHKgqY:'arV$-]rq-3]qssaVrp]aPrU0RMi9^:,qX3A3r9jON
+qX"4IrTa:Eroj@EqW@b<rT*&"r8dh<qr[n@s60@Es6BULr9XFMrpK[PrUBaTiUZg7p[IM;q=+=P
+q""CTrq-'[rq??cqY:'crVH<dr;?HjjSj`1JcC<$M#Vu~>
+JcC<$JcC<$JcG?A`r>3#q#'g^rVHKgqY:'arV$-]rq-3]qssaVrp]aPrU0RMi9^:,qX3A3r9jON
+qX"4IrTa:Eroj@EqW@b<rT*&"r8dh<qr[n@s60@Es6BULr9XFMrpK[PrUBaTiUZg7p[IM;q=+=P
+q""CTrq-'[rq??cqY:'crVH<dr;?HjjSj`1JcC<$M#Vu~>
+JcC<$JcC<$JcG<@^AdR!q>Bp_rVHKgqY:'arq?6^rq-3]qXXXUrUBXOqsO:In*Ki:q<lo(rU0XO
+qX"4Irp'CFroj=DqW@_;qW.2,qW.V:qW@e?roj7Ds6BULr9XFMrpK[PrUBdUf^eh-jm`-:p[\:S
+rq-'[rV$6bqY:'crVH<dr;?Hjkl-/5JcC<$KE$H~>
+JcC<$JcC<$JcG<@^AdR!q>Bp_rVHKgqY:'arq?6^rq-3]qXXXUrUBXOqsO:In*Ki:q<lo(rU0XO
+qX"4Irp'CFroj=DqW@_;qW.2,qW.V:qW@e?roj7Ds6BULr9XFMrpK[PrUBdUf^eh-jm`-:p[\:S
+rq-'[rV$6bqY:'crVH<dr;?Hjkl-/5JcC<$KE$H~>
+JcC<$JcC<$JcG<@^AdR!q>Bp_rVHKgqY:'arq?6^rq-3]qXXXUrUBXOqsO:In*Ki:q<lo(rU0XO
+qX"4Irp'CFroj=DqW@_;qW.2,qW.V:qW@e?roj7Ds6BULr9XFMrpK[PrUBdUf^eh-jm`-:p[\:S
+rq-'[rV$6bqY:'crVH<dr;?Hjkl-/5JcC<$KE$H~>
+JcC<$JcC<$JcG6>\c24!q>Bs`rVHKgqY:'arV$-]rq-3]qXXXUrUBRMqX3\:q!R\@l1"E8rU0XO
+qX"4Irp'CFrTO7Dpu_G7n`9Q.q<%Y=roj:Erp'LKr9XFMrpK[Prp]mVp@@SAn+-#=rUBILp%&(Q
+rUfpYrq?<bqY:'crVH?er;?Eili)J8JcC<$JcGcMJ,~>
+JcC<$JcC<$JcG6>\c24!q>Bs`rVHKgqY:'arV$-]rq-3]qXXXUrUBRMqX3\:q!R\@l1"E8rU0XO
+qX"4Irp'CFrTO7Dpu_G7n`9Q.q<%Y=roj:Erp'LKr9XFMrpK[Prp]mVp@@SAn+-#=rUBILp%&(Q
+rUfpYrq?<bqY:'crVH?er;?Eili)J8JcC<$JcGcMJ,~>
+JcC<$JcC<$JcG6>\c24!q>Bs`rVHKgqY:'arV$-]rq-3]qXXXUrUBRMqX3\:q!R\@l1"E8rU0XO
+qX"4Irp'CFrTO7Dpu_G7n`9Q.q<%Y=roj:Erp'LKr9XFMrpK[Prp]mVp@@SAn+-#=rUBILp%&(Q
+rUfpYrq?<bqY:'crVH?er;?Eili)J8JcC<$JcGcMJ,~>
+JcC<$JcC<$JcG-;\Gl.!qY^'arVHKgqY:'arq?3]rq-3]qXXUTr:'CJkjJ!0q!dY?qXF:KrU0[P
+qs==JrTa:ErTO4Cp?(i*p?)>:roj7Drp'LKr9XFMs6fdQrp]mVq""7PoCVbJmIK`9o()_MrUfpY
+rV$6bqY:$brVH?er;?Hjm/DS9JcC<$JcGZJJ,~>
+JcC<$JcC<$JcG-;\Gl.!qY^'arVHKgqY:'arq?3]rq-3]qXXUTr:'CJkjJ!0q!dY?qXF:KrU0[P
+qs==JrTa:ErTO4Cp?(i*p?)>:roj7Drp'LKr9XFMs6fdQrp]mVq""7PoCVbJmIK`9o()_MrUfpY
+rV$6bqY:$brVH?er;?Hjm/DS9JcC<$JcGZJJ,~>
+JcC<$JcC<$JcG-;\Gl.!qY^'arVHKgqY:'arq?3]rq-3]qXXUTr:'CJkjJ!0q!dY?qXF:KrU0[P
+qs==JrTa:ErTO4Cp?(i*p?)>:roj7Drp'LKr9XFMs6fdQrp]mVq""7PoCVbJmIK`9o()_MrUfpY
+rV$6bqY:$brVH?er;?Hjm/DS9JcC<$JcGZJJ,~>
+JcC<$JcC<$JcG!7\Gl4#qY^*brVHKgqY:'arV$-]rUg*\q==LSr:&8*q=+.KnacMGr:'ONrpKaP
+qs==JrTa7DrTO4CiTC+%rTO.Crp'LKqs=@MrpK[Prp]pWq==FSk4JH?eaiV/rUfmXrq?<bq=ssb
+rVH<dr;?HjmJ_\:JcC<$JcGTHJ,~>
+JcC<$JcC<$JcG!7\Gl4#qY^*brVHKgqY:'arV$-]rUg*\q==LSr:&8*q=+.KnacMGr:'ONrpKaP
+qs==JrTa7DrTO4CiTC+%rTO.Crp'LKqs=@MrpK[Prp]pWq==FSk4JH?eaiV/rUfmXrq?<bq=ssb
+rVH<dr;?HjmJ_\:JcC<$JcGTHJ,~>
+JcC<$JcC<$JcG!7\Gl4#qY^*brVHKgqY:'arV$-]rUg*\q==LSr:&8*q=+.KnacMGr:'ONrpKaP
+qs==JrTa7DrTO4CiTC+%rTO.Crp'LKqs=@MrpK[Prp]pWq==FSk4JH?eaiV/rUfmXrq?<bq=ssb
+rVH<dr;?HjmJ_\:JcC<$JcGTHJ,~>
+JcC<$JcC<$JcFm4\,Q1$qY^-cr;-Egq=ss`rV$-]rUg'[q==IRqs`M3q=+4MjRW6=r:'ONrpKdQ
+qX"4Irp'=Dr94%@mH4</r94"Arp'LKqs=@MrpK[Prp]pWqXXRUqXj.Ip[n4Oipus;qt0[VrV$3a
+qY:$brVH<dr;?Hjn,@n<JcC<$JcGKEJ,~>
+JcC<$JcC<$JcFm4\,Q1$qY^-cr;-Egq=ss`rV$-]rUg'[q==IRqs`M3q=+4MjRW6=r:'ONrpKdQ
+qX"4Irp'=Dr94%@mH4</r94"Arp'LKqs=@MrpK[Prp]pWqXXRUqXj.Ip[n4Oipus;qt0[VrV$3a
+qY:$brVH<dr;?Hjn,@n<JcC<$JcGKEJ,~>
+JcC<$JcC<$JcFm4\,Q1$qY^-cr;-Egq=ss`rV$-]rUg'[q==IRqs`M3q=+4MjRW6=r:'ONrpKdQ
+qX"4Irp'=Dr94%@mH4</r94"Arp'LKqs=@MrpK[Prp]pWqXXRUqXj.Ip[n4Oipus;qt0[VrV$3a
+qY:$brVH<dr;?Hjn,@n<JcC<$JcGKEJ,~>
+JcC<$JcC<$JcFd1\Gl=&qY^*brVHKgqY:$`rq?3]rUg'[q""=Pq!db@p[J"Kg%,(2rUB[PrU0[P
+qX"4IrTa4CqrmA/qrmk?rp'LKqs==LrpK[Prp]pWqXXUVr:Jq?q"44MoCDVHqt0XUr:^*`q=spa
+rVH<dr;?Hjn,@n<JcC<$JcGHDJ,~>
+JcC<$JcC<$JcFd1\Gl=&qY^*brVHKgqY:$`rq?3]rUg'[q""=Pq!db@p[J"Kg%,(2rUB[PrU0[P
+qX"4IrTa4CqrmA/qrmk?rp'LKqs==LrpK[Prp]pWqXXUVr:Jq?q"44MoCDVHqt0XUr:^*`q=spa
+rVH<dr;?Hjn,@n<JcC<$JcGHDJ,~>
+JcC<$JcC<$JcFd1\Gl=&qY^*brVHKgqY:$`rq?3]rUg'[q""=Pq!db@p[J"Kg%,(2rUB[PrU0[P
+qX"4IrTa4CqrmA/qrmk?rp'LKqs==LrpK[Prp]pWqXXUVr:Jq?q"44MoCDVHqt0XUr:^*`q=spa
+rVH<dr;?Hjn,@n<JcC<$JcGHDJ,~>
+JcC<$JcC<$JcF^/\Gl=&qu$3crVHKgq=ss`rV$*\rUg$Zp[\.Ml1"K<n+,o<o^_tNrUB[PrpKaP
+qs=:IrTa+@lfe',rp'IJqs==LrpK[Ps7$!Wqss^Wr:JY7p[mV>q=OCRr:^*`q=spar;-3cr;?Hj
+n,@n<JcC<$JcGECJ,~>
+JcC<$JcC<$JcF^/\Gl=&qu$3crVHKgq=ss`rV$*\rUg$Zp[\.Ml1"K<n+,o<o^_tNrUB[PrpKaP
+qs=:IrTa+@lfe',rp'IJqs==LrpK[Ps7$!Wqss^Wr:JY7p[mV>q=OCRr:^*`q=spar;-3cr;?Hj
+n,@n<JcC<$JcGECJ,~>
+JcC<$JcC<$JcF^/\Gl=&qu$3crVHKgq=ss`rV$*\rUg$Zp[\.Ml1"K<n+,o<o^_tNrUB[PrpKaP
+qs=:IrTa+@lfe',rp'IJqs==LrpK[Ps7$!Wqss^Wr:JY7p[mV>q=OCRr:^*`q=spar;-3cr;?Hj
+n,@n<JcC<$JcGECJ,~>
+JcC<$JcC<$JcFL)^&Ij+qu$3crVHKgq=sp_rV$*\r:KsZo^_)5n+-/Cp[n4Op[\:QrUB[PrpKaP
+qX"1HrT`5'rTa@IqX"4KrpK^Qrp]pWqXXUVrUfaTnFl5Ai:Q[7r:^'_q=sm`rVH<dr;?Hjmf%e;
+JcC<$JcGBBJ,~>
+JcC<$JcC<$JcFL)^&Ij+qu$3crVHKgq=sp_rV$*\r:KsZo^_)5n+-/Cp[n4Op[\:QrUB[PrpKaP
+qX"1HrT`5'rTa@IqX"4KrpK^Qrp]pWqXXUVrUfaTnFl5Ai:Q[7r:^'_q=sm`rVH<dr;?Hjmf%e;
+JcC<$JcGBBJ,~>
+JcC<$JcC<$JcFL)^&Ij+qu$3crVHKgq=sp_rV$*\r:KsZo^_)5n+-/Cp[n4Op[\:QrUB[PrpKaP
+qX"1HrT`5'rTa@IqX"4KrpK^Qrp]pWqXXUVrUfaTnFl5Ai:Q[7r:^'_q=sm`rVH<dr;?Hjmf%e;
+JcC<$JcGBBJ,~>
+JcC<$JcC<$JcF=$_#F0.qu$3crVHKgq=sp_rV$'[r:KpYlLFrFkjnN?jn/HAq""CRrp]dQrU0[P
+q<\%Fqs*D0r9F4GqX"4KrpK[Prp]pWqXXXWrUfgVjn@s3nFZ2Br:^'_q"Xg`r;-3cr;?Ein,@n<
+JcC<$JcG?AJ,~>
+JcC<$JcC<$JcF=$_#F0.qu$3crVHKgq=sp_rV$'[r:KpYlLFrFkjnN?jn/HAq""CRrp]dQrU0[P
+q<\%Fqs*D0r9F4GqX"4KrpK[Prp]pWqXXXWrUfgVjn@s3nFZ2Br:^'_q"Xg`r;-3cr;?Ein,@n<
+JcC<$JcG?AJ,~>
+JcC<$JcC<$JcF=$_#F0.qu$3crVHKgq=sp_rV$'[r:KpYlLFrFkjnN?jn/HAq""CRrp]dQrU0[P
+q<\%Fqs*D0r9F4GqX"4KrpK[Prp]pWqXXXWrUfgVjn@s3nFZ2Br:^'_q"Xg`r;-3cr;?Ein,@n<
+JcC<$JcG?AJ,~>
+JcC<$JcC<$JcEmmb5V89qu$3crVHKgq=sp_r:]sZqt0dWg@G%1q"3nFqXj^Wq""FSrUB[PrpKaP
+q!@qEpZhS=pZh\Bq<\(IrpK[Prp]pWqXXXWrUfmXq=a7Np%Hi,qY'j]p\=^_r;-3cqu$?in,@n<
+JcC<$JcG9?J,~>
+JcC<$JcC<$JcEmmb5V89qu$3crVHKgq=sp_r:]sZqt0dWg@G%1q"3nFqXj^Wq""FSrUB[PrpKaP
+q!@qEpZhS=pZh\Bq<\(IrpK[Prp]pWqXXXWrUfmXq=a7Np%Hi,qY'j]p\=^_r;-3cqu$?in,@n<
+JcC<$JcG9?J,~>
+JcC<$JcC<$JcEmmb5V89qu$3crVHKgq=sp_r:]sZqt0dWg@G%1q"3nFqXj^Wq""FSrUB[PrpKaP
+q!@qEpZhS=pZh\Bq<\(IrpK[Prp]pWqXXXWrUfmXq=a7Np%Hi,qY'j]p\=^_r;-3cqu$?in,@n<
+JcC<$JcG9?J,~>
+JcC<$JcC<$JcELbe,K1Ar;?<drVHHfq=sp_rV$!Yqt0aVjmr0;q=NV<qt0jYq==LSrp]aPrpKaP
+p[%\@p$2><q!@tHrpKXOrp]pWqss^Wrq-!YqtB%Dp@d;7q=a^[p\=[^rVH9cqu$?imf%e;JcC<$
+JcG9?J,~>
+JcC<$JcC<$JcELbe,K1Ar;?<drVHHfq=sp_rV$!Yqt0aVjmr0;q=NV<qt0jYq==LSrp]aPrpKaP
+p[%\@p$2><q!@tHrpKXOrp]pWqss^Wrq-!YqtB%Dp@d;7q=a^[p\=[^rVH9cqu$?imf%e;JcC<$
+JcG9?J,~>
+JcC<$JcC<$JcELbe,K1Ar;?<drVHHfq=sp_rV$!Yqt0aVjmr0;q=NV<qt0jYq==LSrp]aPrpKaP
+p[%\@p$2><q!@tHrpKXOrp]pWqss^Wrq-!YqtB%Dp@d;7q=a^[p\=[^rVH9cqu$?imf%e;JcC<$
+JcG9?J,~>
+JcC<$JcC<$JcE.Xh#@-Jr;?<dr;-Bfq=sm^rV#sXqXi\:q"3/1r:KsZq==LSrp]aPrU0XOoBc)7
+oBcGCrU0ROrUBgVqss^Wrq-$ZqtBm\m.g8Jo_.SCp\+IXpA"R]r;-0br;?Eimf%e;JcC<$JcG6>
+J,~>
+JcC<$JcC<$JcE.Xh#@-Jr;?<dr;-Bfq=sm^rV#sXqXi\:q"3/1r:KsZq==LSrp]aPrU0XOoBc)7
+oBcGCrU0ROrUBgVqss^Wrq-$ZqtBm\m.g8Jo_.SCp\+IXpA"R]r;-0br;?Eimf%e;JcC<$JcG6>
+J,~>
+JcC<$JcC<$JcE.Xh#@-Jr;?<dr;-Bfq=sm^rV#sXqXi\:q"3/1r:KsZq==LSrp]aPrU0XOoBc)7
+oBcGCrU0ROrUBgVqss^Wrq-$ZqtBm\m.g8Jo_.SCp\+IXpA"R]r;-0br;?Eimf%e;JcC<$JcG6>
+J,~>
+JcC<$JcC<$JcDtShu<KNqu$3crVHHfq=sm^r:]gVp[mqGp%7YEn+QAGr:KsZq==OTrUBXOrU0RM
+i9^C/rU0ONrUBgVqss^Wrq-$Zr:^$^iV<-@hY-a=p%\I\r;--ar;?Eimf%e;JcC<$JcG3=J,~>
+JcC<$JcC<$JcDtShu<KNqu$3crVHHfq=sm^r:]gVp[mqGp%7YEn+QAGr:KsZq==OTrUBXOrU0RM
+i9^C/rU0ONrUBgVqss^Wrq-$Zr:^$^iV<-@hY-a=p%\I\r;--ar;?Eimf%e;JcC<$JcG3=J,~>
+JcC<$JcC<$JcDtShu<KNqu$3crVHHfq=sm^r:]gVp[mqGp%7YEn+QAGr:KsZq==OTrUBXOrU0RM
+i9^C/rU0ONrUBgVqss^Wrq-$Zr:^$^iV<-@hY-a=p%\I\r;--ar;?Eimf%e;JcC<$JcG3=J,~>
+JcC<$JcC<$JcDeNj8SoRqu$3cr;-Bfp\=[\r:]^Sk4J'6j7`0=rUg'[q==LSrUBXOr9jFKlg4K8
+r9jCLrp]mVqss^Wrq-$ZrV$-_f_G+5m.U/IoD&7Zr;--aqu$<hmf%e;JcC<$JcG0<J,~>
+JcC<$JcC<$JcDeNj8SoRqu$3cr;-Bfp\=[\r:]^Sk4J'6j7`0=rUg'[q==LSrUBXOr9jFKlg4K8
+r9jCLrp]mVqss^Wrq-$ZrV$-_f_G+5m.U/IoD&7Zr;--aqu$<hmf%e;JcC<$JcG0<J,~>
+JcC<$JcC<$JcDeNj8SoRqu$3cr;-Bfp\=[\r:]^Sk4J'6j7`0=rUg'[q==LSrUBXOr9jFKlg4K8
+r9jCLrp]mVqss^Wrq-$ZrV$-_f_G+5m.U/IoD&7Zr;--aqu$<hmf%e;JcC<$JcG0<J,~>
+JcC<$JcC<$JcDYJjo5,Tqu$3cr;-Bfp\=[\qtA8,p@dhHq=aRUrUg'[q==LSrUBUNqsNY7qsO7J
+rUBgVqXXXWrUfsZr:^*`cM6;ko(`(Wr;-*`qu$?imJ_\:JcC<$JcG-;J,~>
+JcC<$JcC<$JcDYJjo5,Tqu$3cr;-Bfp\=[\qtA8,p@dhHq=aRUrUg'[q==LSrUBUNqsNY7qsO7J
+rUBgVqXXXWrUfsZr:^*`cM6;ko(`(Wr;-*`qu$?imJ_\:JcC<$JcG-;J,~>
+JcC<$JcC<$JcDYJjo5,Tqu$3cr;-Bfp\=[\qtA8,p@dhHq=aRUrUg'[q==LSrUBUNqsNY7qsO7J
+rUBgVqXXXWrUfsZr:^*`cM6;ko(`(Wr;-*`qu$?imJ_\:JcC<$JcG-;J,~>
+JcC<$JcC<$JcDPGkPk>Vqu$0brVHHfpA"R[qY&J4q"EY?qY'^WrUg'[q==LSr:'FKp?qeEp?q\D
+rUBdUqXXXWrUfsZrV$0`oD%bLjS83<mJ-PRqtg$`qY^6hmJ_\:JcC<$JcG*:J,~>
+JcC<$JcC<$JcDPGkPk>Vqu$0brVHHfpA"R[qY&J4q"EY?qY'^WrUg'[q==LSr:'FKp?qeEp?q\D
+rUBdUqXXXWrUfsZrV$0`oD%bLjS83<mJ-PRqtg$`qY^6hmJ_\:JcC<$JcG*:J,~>
+JcC<$JcC<$JcDPGkPk>Vqu$0brVHHfpA"R[qY&J4q"EY?qY'^WrUg'[q==LSr:'FKp?qeEp?q\D
+rUBdUqXXXWrUfsZrV$0`oD%bLjS83<mJ-PRqtg$`qY^6hmJ_\:JcC<$JcG*:J,~>
+JcC<$JcC<$JcDDCl2LPXr;?9cr;-?epA"LYq"Eb@p@e4Sl1k)KqtBgXrUg'[q==IRr:':Go^;>>
+r:'[Tq==OVrUfsZrV$3ao_@JBanY]-qtfs^qu$<hmJ_\:JcC<$JcG'9J,~>
+JcC<$JcC<$JcDDCl2LPXr;?9cr;-?epA"LYq"Eb@p@e4Sl1k)KqtBgXrUg'[q==IRr:':Go^;>>
+r:'[Tq==OVrUfsZrV$3ao_@JBanY]-qtfs^qu$<hmJ_\:JcC<$JcG'9J,~>
+JcC<$JcC<$JcDDCl2LPXr;?9cr;-?epA"LYq"Eb@p@e4Sl1k)KqtBgXrUg'[q==IRr:':Go^;>>
+r:'[Tq==OVrUfsZrV$3ao_@JBanY]-qtfs^qu$<hmJ_\:JcC<$JcG'9J,~>
+JcC<$JcC<$JcD;@li-bZqu$0br;-?ep%\@Wo_.tNo(MhPh>$mAqtBjYr:KsZq==IRqs`M3r:'XS
+q==LUrq-$ZrV$3apA"@Wo_S+RdeNY6qYKj]qu$<hm/DS9JcC<$JcG$8J,~>
+JcC<$JcC<$JcD;@li-bZqu$0br;-?ep%\@Wo_.tNo(MhPh>$mAqtBjYr:KsZq==IRqs`M3r:'XS
+q==LUrq-$ZrV$3apA"@Wo_S+RdeNY6qYKj]qu$<hm/DS9JcC<$JcG$8J,~>
+JcC<$JcC<$JcD;@li-bZqu$0br;-?ep%\@Wo_.tNo(MhPh>$mAqtBjYr:KsZq==IRqs`M3r:'XS
+q==LUrq-$ZrV$3apA"@Wo_S+RdeNY6qYKj]qu$<hm/DS9JcC<$JcG$8J,~>
+JcC<$JcC<$JcD5>m/Hk[qu$0bqtg3co_A4UjS&9@f(f.:r:]pYrUg'[p[\7Pq=*_=q=+=Pq""CT
+rq-$ZrV$3ap\=R[jneTEhtZp@qYKg\qu$9gmJ_\:JcC<$JcFs6J,~>
+JcC<$JcC<$JcD5>m/Hk[qu$0bqtg3co_A4UjS&9@f(f.:r:]pYrUg'[p[\7Pq=*_=q=+=Pq""CT
+rq-$ZrV$3ap\=R[jneTEhtZp@qYKg\qu$9gmJ_\:JcC<$JcFs6J,~>
+JcC<$JcC<$JcD5>m/Hk[qu$0bqtg3co_A4UjS&9@f(f.:r:]pYrUg'[p[\7Pq=*_=q=+=Pq""CT
+rq-$ZrV$3ap\=R[jneTEhtZp@qYKg\qu$9gmJ_\:JcC<$JcFs6J,~>
+JcC<$JcC<$JcD/<m/Hk[qu$0bqtg3co(_\Js7YmTbkV)0r:]sZr:KsZp[\1Njm`0;p[\:SrUfpY
+rV$3ap\=X]g\UF8n+cMMq"jUZqY^3gm/DS9JcC<$JcFp5J,~>
+JcC<$JcC<$JcD/<m/Hk[qu$0bqtg3co(_\Js7YmTbkV)0r:]sZr:KsZp[\1Njm`0;p[\:SrUfpY
+rV$3ap\=X]g\UF8n+cMMq"jUZqY^3gm/DS9JcC<$JcFp5J,~>
+JcC<$JcC<$JcD/<m/Hk[qu$0bqtg3co(_\Js7YmTbkV)0r:]sZr:KsZp[\1Njm`0;p[\:SrUfpY
+rV$3ap\=X]g\UF8n+cMMq"jUZqY^3gm/DS9JcC<$JcFp5J,~>
+JcC<$JcC<$JcD):m/Hk[qu$-aqtg0bn+c/AkkOB;o(`.WrV$$Zr:KsZp%%kIp$h_Gp@A1Rr:KjY
+rV$0`q"Xa^q"j:Qo(q)9p\OIXq>C*fli)J8JcC<$JcFp5J,~>
+JcC<$JcC<$JcD):m/Hk[qu$-aqtg0bn+c/AkkOB;o(`.WrV$$Zr:KsZp%%kIp$h_Gp@A1Rr:KjY
+rV$0`q"Xa^q"j:Qo(q)9p\OIXq>C*fli)J8JcC<$JcFp5J,~>
+JcC<$JcC<$JcD):m/Hk[qu$-aqtg0bn+c/AkkOB;o(`.WrV$$Zr:KsZp%%kIp$h_Gp@A1Rr:KjY
+rV$0`q"Xa^q"j:Qo(q)9p\OIXq>C*fli)J8JcC<$JcFp5J,~>
+JcC<$JcC<$JcD&9mJct\qY^$`qYL'a`q\Edo_A@Yr:]pYrUg!YoCD;=oCDhNrUfpYrV$0`q"Xd_
+q>0%HnbVJFo_S(SqY^0fli)J8JcC<$JcFj3J,~>
+JcC<$JcC<$JcD&9mJct\qY^$`qYL'a`q\Edo_A@Yr:]pYrUg!YoCD;=oCDhNrUfpYrV$0`q"Xd_
+q>0%HnbVJFo_S(SqY^0fli)J8JcC<$JcFj3J,~>
+JcC<$JcC<$JcD&9mJct\qY^$`qYL'a`q\Edo_A@Yr:]pYrUg!YoCD;=oCDhNrUfpYrV$0`q"Xd_
+q>0%HnbVJFo_S(SqY^0fli)J8JcC<$JcFj3J,~>
+JcC<$JcC<$JcD#8m/Hk[qY^!_qYL$`chR/.m/$JPp%\IZrV$!Yr:KpYf^eq2rUfmXrV$3ap\=[^
+qYJh@eb\_2q>C'eli)J8JcC<$JcFg2J,~>
+JcC<$JcC<$JcD#8m/Hk[qY^!_qYL$`chR/.m/$JPp%\IZrV$!Yr:KpYf^eq2rUfmXrV$3ap\=[^
+qYJh@eb\_2q>C'eli)J8JcC<$JcFg2J,~>
+JcC<$JcC<$JcD#8m/Hk[qY^!_qYL$`chR/.m/$JPp%\IZrV$!Yr:KpYf^eq2rUfmXrV$3ap\=[^
+qYJh@eb\_2q>C'eli)J8JcC<$JcFg2J,~>
+JcC<$JcC<$JcCu7m/HhZqY^!_q>0m^gA(=9htm3FpA"R[r:]mXqt0aViq!!<qt0[VrV$0`q"Xd_
+qteS7iqi!<q#'sdlMcA7JcC<$JcFd1J,~>
+JcC<$JcC<$JcCu7m/HhZqY^!_q>0m^gA(=9htm3FpA"R[r:]mXqt0aViq!!<qt0[VrV$0`q"Xd_
+qteS7iqi!<q#'sdlMcA7JcC<$JcFd1J,~>
+JcC<$JcC<$JcCu7m/HhZqY^!_q>0m^gA(=9htm3FpA"R[r:]mXqt0aViq!!<qt0[VrV$0`q"Xd_
+qteS7iqi!<q#'sdlMcA7JcC<$JcFd1J,~>
+JcC<$JcC<$JcCr6m/HhZqY]p]q>0d[k4nQDo(qnRpA4X]pA"R[rV#sXqt0XSn+-8Fqt0XUr:^*`
+q"Xd_qte,*p%mbHq#'pclMcA7JcC<$JcFa0J,~>
+JcC<$JcC<$JcCr6m/HhZqY]p]q>0d[k4nQDo(qnRpA4X]pA"R[rV#sXqt0XSn+-8Fqt0XUr:^*`
+q"Xd_qte,*p%mbHq#'pclMcA7JcC<$JcFa0J,~>
+JcC<$JcC<$JcCr6m/HhZqY]p]q>0d[k4nQDo(qnRpA4X]pA"R[rV#sXqt0XSn+-8Fqt0XUr:^*`
+q"Xd_qte,*p%mbHq#'pclMcA7JcC<$JcFa0J,~>
+JcC<$JcC<$JcCo5li-_YqY]m\p\NP<oD7PFq"jm`pA"R[r:]jWq=Nh@q=OCRr:^*`q"Xd_qtfUT
+qY[f!p\agbl2H86JcC<$JcF^/J,~>
+JcC<$JcC<$JcCo5li-_YqY]m\p\NP<oD7PFq"jm`pA"R[r:]jWq=Nh@q=OCRr:^*`q"Xd_qtfUT
+qY[f!p\agbl2H86JcC<$JcF^/J,~>
+JcC<$JcC<$JcCo5li-_YqY]m\p\NP<oD7PFq"jm`pA"R[r:]jWq=Nh@q=OCRr:^*`q"Xd_qtfUT
+qY[f!p\agbl2H86JcC<$JcF^/J,~>
+JcC<$JcC<$JcCl4li-\XqY]j[p%m_Eo(q,<q>1!apA"R[r:]aTiUld8r:^*`p\=[^qtfgZl28Hr
+pAF[`l2H86JcC<$JcFX-J,~>
+JcC<$JcC<$JcCl4li-\XqY]j[p%m_Eo(q,<q>1!apA"R[r:]aTiUld8r:^*`p\=[^qtfgZl28Hr
+pAF[`l2H86JcC<$JcFX-J,~>
+JcC<$JcC<$JcCl4li-\XqY]j[p%m_Eo(q,<q>1!apA"R[r:]aTiUld8r:^*`p\=[^qtfgZl28Hr
+pAF[`l2H86JcC<$JcFX-J,~>
+JcC<$JcC<$JcCi3lMgSWq>B[XeG@SiqYL*bpA"R[qtBOPme$&BqtBs^p\=[^qtfm\i;CdqpAFX_
+kl-/5JcC<$JcFU,J,~>
+JcC<$JcC<$JcCi3lMgSWq>B[XeG@SiqYL*bpA"R[qtBOPme$&BqtBs^p\=[^qtfm\i;CdqpAFX_
+kl-/5JcC<$JcFU,J,~>
+JcC<$JcC<$JcCi3lMgSWq>B[XeG@SiqYL*bpA"R[qtBOPme$&BqtBs^p\=[^qtfm\i;CdqpAFX_
+kl-/5JcC<$JcFU,J,~>
+JcC<$JcC<$JcCc1lMgVXq#'LUh>57jqYL*bpA"R[qY&G3qtBp]p\=[^r;-!]ebn%ro_eF]kPg&4
+JcC<$JcFR+J,~>
+JcC<$JcC<$JcCc1lMgVXq#'LUh>57jqYL*bpA"R[qY&G3qtBp]p\=[^r;-!]ebn%ro_eF]kPg&4
+JcC<$JcFR+J,~>
+JcC<$JcC<$JcCc1lMgVXq#'LUh>57jqYL*bpA"R[qY&G3qtBp]p\=[^r;-!]ebn%ro_eF]kPg&4
+JcC<$JcFR+J,~>
+JcC<$JcC<$JcC`0l2LJVq#'=Pn+s]oqtg3cp%\FYq=`Y;qY'g\pA"R]qtfs^oDJ.Wk5=NAn,2hV
+kPg&4JcC<$JcFL)J,~>
+JcC<$JcC<$JcC`0l2LJVq#'=Pn+s]oqtg3cp%\FYq=`Y;qY'g\pA"R]qtfs^oDJ.Wk5=NAn,2hV
+kPg&4JcC<$JcFL)J,~>
+JcC<$JcC<$JcC`0l2LJVq#'=Pn+s]oqtg3cp%\FYq=`Y;qY'g\pA"R]qtfs^oDJ.Wk5=NAn,2hV
+kPg&4JcC<$JcFL)J,~>
+JcC<$JcC<$JcCZ.lMgPVq#%Z!m/6;KqYL*bp%\CXq"EqEq"FRYpA"R]qtfs^p\a%LaSbZ.jo0i2
+JcC<$JcFL)J,~>
+JcC<$JcC<$JcCZ.lMgPVq#%Z!m/6;KqYL*bp%\CXq"EqEq"FRYpA"R]qtfs^p\a%LaSbZ.jo0i2
+JcC<$JcFL)J,~>
+JcC<$JcC<$JcCZ.lMgPVq#%Z!m/6;KqYL*bp%\CXq"EqEq"FRYpA"R]qtfs^p\a%LaSbZ.jo0i2
+JcC<$JcFL)J,~>
+JcC<$JcC<$JcCZ.kl1AUpADf)i;E*Aqtg3co_A4Ui:d!@p%\F[qtfs^q#&hDe,8e8jo0i2JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCZ.kl1AUpADf)i;E*Aqtg3co_A4Ui:d!@p%\F[qtfs^q#&hDe,8e8jo0i2JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCZ.kl1AUpADf)i;E*Aqtg3co_A4Ui:d!@p%\F[qtfs^q#&hDe,8e8jo0i2JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCT,kl1;Sp&*)3fDP19qtg0bo_A.SlLsuHo_A=Zqtfs^q#&J:i;E'Bj8OW0JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCT,kl1;Sp&*)3fDP19qtg0bo_A.SlLsuHo_A=Zqtfs^q#&J:i;E'Bj8OW0JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCT,kl1;Sp&*)3fDP19qtg0bo_A.SlLsuHo_A=Zqtfs^q#&J:i;E'Bj8OW0JcC<$
+JcF@%J,~>
+JcC<$JcC<$JcCQ+kPk2RoDI2:m/6GQoDJ.Uqtg0bnbD&:o(`+Xqtfp]q>Ba\pAX"KnGMVNiVnE.
+JcC<$JcF:#J,~>
+JcC<$JcC<$JcCQ+kPk2RoDI2:m/6GQoDJ.Uqtg0bnbD&:o(`+Xqtfp]q>Ba\pAX"KnGMVNiVnE.
+JcC<$JcF:#J,~>
+JcC<$JcC<$JcCQ+kPk2RoDI2:m/6GQoDJ.Uqtg0bnbD&:o(`+Xqtfp]q>Ba\pAX"KnGMVNiVnE.
+JcC<$JcF:#J,~>
+JcC<$JcC<$JcCK)kPk/QnbhACm/6&Fp&+CXqYL'amJ-,DmeHYSqtfp]q>Bm`kl/O!i;S<-JcC<$
+JcF4!J,~>
+JcC<$JcC<$JcCK)kPk/QnbhACm/6&Fp&+CXqYL'amJ-,DmeHYSqtfp]q>Bm`kl/O!i;S<-JcC<$
+JcF4!J,~>
+JcC<$JcC<$JcCK)kPk/QnbhACm/6&Fp&+CXqYL'amJ-,DmeHYSqtfp]q>Bm`kl/O!i;S<-JcC<$
+JcF4!J,~>
+JcC<$JcC<$JcCH(k5OuNl2:DTjo!s5p\aRYqYL'ac1q/2qYKj]q#'jag]#Y"h#;m)JcC<$JcF0u
+J,~>
+JcC<$JcC<$JcCH(k5OuNl2:DTjo!s5p\aRYqYL'ac1q/2qYKj]q#'jag]#Y"h#;m)JcC<$JcF0u
+J,~>
+JcC<$JcC<$JcCH(k5OuNl2:DTjo!s5p\aRYqYL'ac1q/2qYKj]q#'jag]#Y"h#;m)JcC<$JcF0u
+J,~>
+JcC<$JcC<$JcCE'jSn`KdJVJlp\aUZq>0m^f(f(:qYKg\q>Bsbdf/,%f`$I%JcC<$JcF*sJ,~>
+JcC<$JcC<$JcCE'jSn`KdJVJlp\aUZq>0m^f(f(:qYKg\q>Bsbdf/,%f`$I%JcC<$JcF*sJ,~>
+JcC<$JcC<$JcCE'jSn`KdJVJlp\aUZq>0m^f(f(:qYKg\q>Bsbdf/,%f`$I%JcC<$JcF*sJ,~>
+JcC<$JcC<$JcCB&j8SQHg\g=7nc&(Wq#'^[q>0j]hY?mAq>0^[q>C!c`W#B*e,FpuJcC<$JcF!p
+J,~>
+JcC<$JcC<$JcCB&j8SQHg\g=7nc&(Wq#'^[q>0j]hY?mAq>0^[q>C!c`W#B*e,FpuJcC<$JcF!p
+J,~>
+JcC<$JcC<$JcCB&j8SQHg\g=7nc&(Wq#'^[q>0j]hY?mAq>0^[q>C!c`W#B*e,FpuJcC<$JcF!p
+J,~>
+JcC<$JcC<$JcC?%i;Vs=o_dhLiVrNKq#'^[q"jUXmeHGMq>0[Zq>C!cL&QZ'JcC<$JcEpnJ,~>
+JcC<$JcC<$JcC?%i;Vs=o_dhLiVrNKq#'^[q"jUXmeHGMq>0[Zq>C!cL&QZ'JcC<$JcEpnJ,~>
+JcC<$JcC<$JcC?%i;Vs=o_dhLiVrNKq#'^[q"jUXmeHGMq>0[Zq>C!cL&QZ'JcC<$JcEpnJ,~>
+JcC<$JcC<$JcC<$!<:sU`r4Zkp&4[`nb`(Wg\LU?o)&7\p\fgFJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$!<:sU`r4Zkp&4[`nb`(Wg\LU?o)&7\p\fgFJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$!<:sU`r4Zkp&4[`nb`(Wg\LU?o)&7\p\fgFJcC<$JcC<$ao?k~>
+JcC<$JcC<$JcC<$rr:gRci)Amp&4[`n,)bRl1suJnGE%Zq#,mFJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcC<$rr:gRci)Amp&4[`n,)bRl1suJnGE%Zq#,mFJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcC<$rr:gRci)Amp&4[`n,)bRl1suJnGE%Zq#,mFJcC<$JcC<$a8^Y~>
+JcC<$JcC<$JcC<$r;YCJi;LarpAOdamebT3n,)nXq#,mFJcC<$JcC<$`W(G~>
+JcC<$JcC<$JcC<$r;YCJi;LarpAOdamebT3n,)nXq#,mFJcC<$JcC<$`W(G~>
+JcC<$JcC<$JcC<$r;YCJi;LarpAOdamebT3n,)nXq#,mFJcC<$JcC<$`W(G~>
+JcC<$JcC<$JcC<$qu=t@p&2N%pAOa`lMKW<lhgJTq#,pGJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcC<$qu=t@p&2N%pAOa`lMKW<lhgJTq#,pGJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcC<$qu=t@p&2N%pAOa`lMKW<lhgJTq#,pGJcC<$JcC<$_Z,,~>
+JcC<$JcC<$JcC<$q#>pEr;QEgp\a.Mp%meIp\agbLAlc(JcC<$JcEIaJ,~>
+JcC<$JcC<$JcC<$q#>pEr;QEgp\a.Mp%meIp\agbLAlc(JcC<$JcEIaJ,~>
+JcC<$JcC<$JcC<$q#>pEr;QEgp\a.Mp%meIp\agbLAlc(JcC<$JcEIaJ,~>
+JcC<$JcC<$JcC<$p]#gDqu6<fpADf)p\adaM#Mu*JcC<$JcE@^J,~>
+JcC<$JcC<$JcC<$p]#gDqu6<fpADf)p\adaM#Mu*JcC<$JcE@^J,~>
+JcC<$JcC<$JcC<$p]#gDqu6<fpADf)p\adaM#Mu*JcC<$JcE@^J,~>
+%%EndData
+showpage
+%%Trailer
+end
+%%EOF
diff --git a/doc/img/evas_big.png b/doc/img/evas_big.png
new file mode 100644 (file)
index 0000000..cd818f7
Binary files /dev/null and b/doc/img/evas_big.png differ
diff --git a/doc/img/evas_mini.png b/doc/img/evas_mini.png
new file mode 100644 (file)
index 0000000..f4f99f0
Binary files /dev/null and b/doc/img/evas_mini.png differ
diff --git a/doc/img/evas_small.png b/doc/img/evas_small.png
new file mode 100644 (file)
index 0000000..8bea367
Binary files /dev/null and b/doc/img/evas_small.png differ
diff --git a/doc/img/hilite.png b/doc/img/hilite.png
new file mode 100644 (file)
index 0000000..88a4381
Binary files /dev/null and b/doc/img/hilite.png differ
diff --git a/doc/img/n.gif b/doc/img/n.gif
new file mode 100644 (file)
index 0000000..28608c4
Binary files /dev/null and b/doc/img/n.gif differ
diff --git a/doc/img/n.png b/doc/img/n.png
new file mode 100644 (file)
index 0000000..2bb256f
Binary files /dev/null and b/doc/img/n.png differ
diff --git a/doc/img/t.gif b/doc/img/t.gif
new file mode 100644 (file)
index 0000000..cff3068
Binary files /dev/null and b/doc/img/t.gif differ
diff --git a/doc/img/t.png b/doc/img/t.png
new file mode 100644 (file)
index 0000000..06b6079
Binary files /dev/null and b/doc/img/t.png differ
diff --git a/doc/img/tl.gif b/doc/img/tl.gif
new file mode 100644 (file)
index 0000000..4455dbc
Binary files /dev/null and b/doc/img/tl.gif differ
diff --git a/doc/img/tl.png b/doc/img/tl.png
new file mode 100644 (file)
index 0000000..95ae5b6
Binary files /dev/null and b/doc/img/tl.png differ
diff --git a/evas-cairo-x11.pc.in b/evas-cairo-x11.pc.in
new file mode 100644 (file)
index 0000000..4f5c9cf
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-cairo-x11
+Description: Evas Cairo X11 engine
+Version: @VERSION@
diff --git a/evas-direct3d.pc.in b/evas-direct3d.pc.in
new file mode 100644 (file)
index 0000000..493f8cc
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-direct3d
+Description: Evas Direct3D engine
+Version: @VERSION@
diff --git a/evas-directfb.pc.in b/evas-directfb.pc.in
new file mode 100644 (file)
index 0000000..9a1bc3a
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-directfb
+Description: Evas DirectFB engine
+Version: @VERSION@
diff --git a/evas-fb.pc.in b/evas-fb.pc.in
new file mode 100644 (file)
index 0000000..0e1f0a0
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-fb
+Description: Evas framebuffer engine
+Version: @VERSION@
diff --git a/evas-glitz-x11.pc.in b/evas-glitz-x11.pc.in
new file mode 100644 (file)
index 0000000..dbf1ac5
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-glitz-x11
+Description: Evas Glitz X11 engine
+Version: @VERSION@
diff --git a/evas-opengl-glew.pc.in b/evas-opengl-glew.pc.in
new file mode 100644 (file)
index 0000000..c5ee7ab
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-opengl-glew
+Description: Evas OpenGL Glew engine
+Version: @VERSION@
diff --git a/evas-opengl-x11.pc.in b/evas-opengl-x11.pc.in
new file mode 100644 (file)
index 0000000..29b9338
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-opengl-x11
+Description: Evas OpenGL X11 engine
+Version: @VERSION@
diff --git a/evas-software-16-ddraw.pc.in b/evas-software-16-ddraw.pc.in
new file mode 100644 (file)
index 0000000..8c00f61
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-software-16-ddraw
+Description: Evas 16bit software DirectDaw engine
+Version: @VERSION@
diff --git a/evas-software-16-wince.pc.in b/evas-software-16-wince.pc.in
new file mode 100644 (file)
index 0000000..01fad48
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-software-16-wince
+Description: Evas 16bit software WinCE engine
+Version: @VERSION@
diff --git a/evas-software-16-x11.pc.in b/evas-software-16-x11.pc.in
new file mode 100644 (file)
index 0000000..75040a0
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-software-16-x11
+Description: Evas software X11 16bpp engine
+Version: @VERSION@
diff --git a/evas-software-buffer.pc.in b/evas-software-buffer.pc.in
new file mode 100644 (file)
index 0000000..da5d798
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-software-buffer
+Description: Evas software buffer engine
+Version: @VERSION@
diff --git a/evas-software-ddraw.pc.in b/evas-software-ddraw.pc.in
new file mode 100644 (file)
index 0000000..de4b6d2
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-software-ddraw
+Description: Evas software DirectDaw engine
+Version: @VERSION@
diff --git a/evas-software-qtopia.pc.in b/evas-software-qtopia.pc.in
new file mode 100644 (file)
index 0000000..4edb41c
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-software-qtopia
+Description: Evas software Qtopia engine
+Version: @VERSION@
diff --git a/evas-software-sdl.pc.in b/evas-software-sdl.pc.in
new file mode 100644 (file)
index 0000000..fb19724
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-software-sdl
+Description: Evas software SDL engine
+Version: @VERSION@
diff --git a/evas-software-x11.pc.in b/evas-software-x11.pc.in
new file mode 100644 (file)
index 0000000..7487b7c
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-software-x11
+Description: Evas software X11 engine
+Version: @VERSION@
diff --git a/evas-software-xcb.pc.in b/evas-software-xcb.pc.in
new file mode 100644 (file)
index 0000000..f91efbf
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-software-xcb
+Description: Evas software XCB engine
+Version: @VERSION@
diff --git a/evas-xrender-x11.pc.in b/evas-xrender-x11.pc.in
new file mode 100644 (file)
index 0000000..9d28d13
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-xrender-x11
+Description: Evas XRender X11 engine
+Version: @VERSION@
diff --git a/evas-xrender-xcb.pc.in b/evas-xrender-xcb.pc.in
new file mode 100644 (file)
index 0000000..ba30c43
--- /dev/null
@@ -0,0 +1,3 @@
+Name: evas-xrender-xcb
+Description: Evas XRender XCB engine
+Version: @VERSION@
diff --git a/evas.c.in b/evas.c.in
new file mode 100644 (file)
index 0000000..2a4319e
--- /dev/null
+++ b/evas.c.in
@@ -0,0 +1,222 @@
+/**
+
+@mainpage Evas
+@image latex evas_big.eps width=5cm
+@image html  evas.png
+@version 1.0.0
+@author Carsten Haitzler <raster\@rasterman.com>
+@author Till Adam <till\@adam-lilienthal.de>
+@author Steve Ireland <sireland\@pobox.com>
+@author Brett Nash <nash\@nash.id.au>
+@author Tilman Sauerbeck <tilman at code-monkey.de>
+@author Corey Donohoe <atmos\@atmos.org>
+@author Yuri Hudobin <glassy_ape\@users.sourceforge.net>
+@author Nathan Ingersoll <ningerso\@d.umn.edu>
+@author Willem Monsuwe <willem\@stack.nl>
+@author Vincent Torri <vtorri at univ-evry dot fr>
+@author Gustavo Barbieri <barbieri at profusion dot mobi>
+@author Cedric Bail <moa dot bluebugs at gmail dot com>
+@date 2000-2008
+
+
+@section intro What is Evas?
+
+Evas is a clean display canvas API for several target display systems that
+can draw anti-aliased text, smooth super and sub-sampled scaled images,
+alpha-blend objects much and more.
+
+It abstracts any need to know much about what the characteristics of your
+display system are or what graphics calls are used to draw them and how. It
+deals on an object level where all you do is create and manipulate objects
+in a canvas, set their properties, and the rest is done for you.
+
+Evas optimises the rendering pipeline to minimise effort in redrawing changes
+made to the canvas and so takes this work out of the programmers hand,
+saving a lot of time and energy.
+
+It's small and lean, designed to work on embedded systems all the way to
+large and powerful multi-cpu workstations. It can be compiled to only have
+the features you need for your target platform if you so wish, thus keeping
+it small and lean. It has several display back-ends, letting it display on
+several display systems, making it portable for cross-device and
+cross-platform development.
+
+
+@section work How does Evas work?
+
+Evas is a canvas display library. This is markedly different from most
+display and windowing systems as a Canvas is structural and is also a state
+engine, wheras most display and windowing systems are immediate mode display
+targets. Evas handles the logic between a structural display via its' state
+engine, and controls the target windowing system in order to produce
+rendered results of the current canvases state on the display.
+
+Immediate mode display systems retain very little, or no state. A program
+will execute a series of commands:
+
+@verbatim
+bitmap_handle = create_new_bitmap();
+draw_line(0, 0, 100, 200);
+draw_rectangle(10, 30, 50, 500);
+draw_bitmap(10, 30, bitmap_handle);
+etc.
+@endverbatim
+
+The series of commands is executed by the windowing system and the results
+are displayed on the screen (normally). Once the commands are executed the
+display system has little or no idea of how to reproduce this image again,
+and so has to be instructed by the application how to redraw sections of the
+screen whenever needed. Each sucessive command will be executed as
+instructed by the application and either emulated by software or sent to the
+graphics hardware on the device to be performed.
+
+The advantage of such a system is that it is simple, and gives a program
+tight control over how something looks and is drawn. Given the increasing
+complexity of displays and demands by users to have better looking
+interfaces, more and more work is needing to be done at this level by the
+internals of widget sets, custom display widgets and other programs. This
+means more and more logic and display rendering code needs to be written
+time and time again, each time the application needs to figure out how to
+minimise redraws so that display is fast and interactive, and keep track of
+redraw logic. The power comes at a high-price, lots of extra code and work.
+Programmers not very familiar with graphics programming will often make
+mistakes at this level and produce code that is sub optimal. Those familiar
+with this kind of programming will simply get bored by writing the same code
+again and again.
+
+Evas is a structural system in which the programmer creates and manages
+display objects and their properties, and as a result of this higher level
+state management, the canvas is able to redraw the set of objects when
+needed to represent the current state of the canvas.
+
+For example:
+
+@verbatim
+bitmap_handle = create_bitmap();
+move(bitmap_handle, 10, 30);
+show(bitmap_handle);
+rectangle_handle = create_rectangle();
+move(rectangle_handle, 10, 30);
+resize(rectangle_handle, 50, 500);
+show(rectangle_handle);
+line_handle = create_line();
+set_line_coords(line_handle, 0, 0, 100, 200);
+show(line_handle);
+etc.
+@endverbatim
+
+This may look longer, but when the display needs to be refreshed or updated,
+the programmer only moves, resizes, shows, hides etc. the objects that they
+need to change. The programmer simply thinks at the object logic level, and
+the canvas software does the rest of the work for them, figuring out what
+actually changed in the canvas since it was last drawn, how to most
+efficiently redraw he canvas and its contents to reflect the current state,
+and then it can go off and do the actual drawing of the canvas.
+
+This lets the programmer think in a more natural way when dealing with a
+display, and saves time and effort of working out how to load and display
+images, render given the current display system etc. Since Evas also is
+portable across different display systems, this also gives the programmer
+the ability to have their code ported and display on different display
+systems with very little work.
+
+Evas can be seen as a display system that stands somewhere between a widget
+set and an immediate mode display system. It retains basic display logic,
+but does very little high-level logic such as scrollbars, sliders, push
+buttons etc.
+
+
+@section compiling How to compile using Evas?
+
+Evas is a library your application links to. The proceedure for this is very
+simple. You simply have to compile your application with the appropriate
+compiler flags that the @p evas-config script outputs. For example:
+
+Compiling C or C++ files into object files:
+
+@verbatim
+gcc -c -o main.o main.c `pkg-config --cflags evas`
+@endverbatim
+
+Linking object files into a binary executable:
+
+@verbatim
+gcc -o my_application main.o `pkg-config --libs evas`
+@endverbatim
+
+You simply have to make sure that pkg-config is in your shell's PATH (see
+the manual page for your appropriate shell) and evas.pc in /usr/lib/pkgconfig
+or its path is in the PKG_CONFIG_PATH environment variable. It's that simple
+to link and use Evas once you have written your code to use it.
+
+Since the program is linked to Evas, it is now able to use any advertised
+API calls to display graphics in a canvas managed by Evas, as well as use
+the API calls provided to manage data as well.
+
+You should make sure you add any extra compile and link flags to your
+compile commands that your application may need as well. The above example
+is only guaranteed to make Evas add it's own requirements.
+
+
+@section install How is it installed?
+
+Simple:
+
+@verbatim
+./configure
+make
+su -
+...
+make install
+@endverbatim
+
+
+@todo (1.0) Need a way ot scaling an image and just PRODUCING the output (scaling direct to target buffe r- no blend/copy etc.)
+@todo (1.0) Could improve evas's scaling down code to limit multiple samples per output pixel to maybe 2x2?
+@todo (1.0) Document API
+@todo (1.0) Evas needs to check delete_me member for all object functions
+@todo (1.0) Evas engine that renders to Evas_Objects
+@todo (1.0) OpenGL engine needs to use texture meshes
+@todo (1.0) OpenGL engine needs texture cache and size setting
+@todo (1.0) OpenGL Engine needs YUV import API to YUV texture
+@todo (1.0) All engines need pixel import API
+@todo (1.0) Add parital render through composite layer api to engines
+@todo (1.0) Move callback processing to a queue and do it asynchronously???
+@todo (1.0) Add button grabbing
+@todo (1.0) Add generic object method call system
+@todo (1.0) Add callbacks set for smart object parents to be set on all child smart objects too.
+@todo (1.0) Define image load errors (and maybe have an error to string func)
+@todo (1.0) Add text styles (outline etc.)
+@todo (1.0) Add font load query calls (so we know if a font load failed)
+@todo (1.0) Add font listing calls
+@todo (1.0) Add ability to check image comments & disk format
+@todo (1.0) Add group objects
+@todo (1.0) Add fontset support
+@todo (1.0) Export engine rendering API cleanly to Evas API
+@todo (1.0) Add smart object ability to provide rendering callback
+@todo (1.1) Make freetype optional and put in optional graymap font engine
+@todo (1.1) Free images if object invisible (and put back in chache)
+@todo (1.1) Check robustness of malloc/calloc/realloc failures.
+@todo (1.1) Add memory use reduction code if any allocations fail
+@todo (1.1) If image loads fails due to memory allocatue failure, load reduced res version
+@todo (1.1) If image load fails due to memory allocation failure, try split it up into tiles and demand-load them
+@todo (1.2) Add external image loaders (application provided callbacks to load)
+@todo (1.2) Add loadable image loader module support (evas loads file.so)
+@todo (1.2) Add external image loader modules (application provides path to file.so)
+@todo (1.3) Add X11 primtive engine (ie pixmap)
+@todo (1.3) Add immediate mode drawing commands to image objects
+@todo (1.3) Fix FB engine to allocate vt and release properly
+@todo (1.4) Add ellipse objects (circle, arc, ellipse etc.)
+@todo (1.5) Make software engine draw lines & polys etc. with aa
+@todo (1.5) Add radial gradients to gradient objects
+@todo (1.5) Add Symbian Engine
+@todo (1.6) Add PalmOS Engine
+@todo (1.6) Add Apple OpenGL Engine
+@todo (1.7) Document engine API and other internals
+@todo (1.7) Allow any object to clip any other object, and not just rectangles
+@todo (1.8) Add more evas demos
+@todo (1.9) Write the error mechanism in evas_xcb_buffer.c
+@todo (1.9) Rewrite the render xcb engine
+@todo (1.10) Improve Win32 Direct3D Engine
+
+*/
diff --git a/evas.pc.in b/evas.pc.in
new file mode 100644 (file)
index 0000000..b65486c
--- /dev/null
@@ -0,0 +1,11 @@
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+libdir=@libdir@
+includedir=@includedir@
+
+Name: evas
+Description: Evas canvas display library
+Version: @VERSION@
+Libs: -L${libdir} -levas
+Libs.private: @pthread_libs@ @dlopen_libs@ @EDB_LIBS@ @EET_LIBS@ @FREETYPE_LIBS@ @FONTCONFIG_LIBS@
+Cflags: -I${includedir}
diff --git a/evas.spec.in b/evas.spec.in
new file mode 100644 (file)
index 0000000..828cbb5
--- /dev/null
@@ -0,0 +1,552 @@
+# Conditional build stuff; from rpm 4.4 /usr/lib/rpm/macros.
+# bcond_without defaults to WITH, and vice versa.  Yes, it's
+# ass-backward.  Blame PLD.
+%if %{!?with:1}0
+%define with() %{expand:%%{?with_%{1}:1}%%{!?with_%{1}:0}}
+%endif
+%if %{!?without:1}0
+%define without() %{expand:%%{?with_%{1}:0}%%{!?with_%{1}:1}}
+%endif
+%if %{!?bcond_with:1}0
+%define bcond_with() %{expand:%%{?_with_%{1}:%%global with_%{1} 1}}
+%endif
+%if %{!?bcond_without:1}0
+%define bcond_without() %{expand:%%{!?_without_%{1}:%%global with_%{1} 1}}
+%endif
+
+## disabled features
+%bcond_with    module_loader_edb
+%bcond_with    module_saver_edb
+%bcond_with    module_engine_directfb
+%bcond_with    module_engine_gl_x11
+%bcond_with    module_engine_software_qtopia
+%bcond_with    module_engine_software_sdl
+%bcond_with    module_engine_software_xcb
+%bcond_with    module_engine_xrender_x11
+%bcond_with    module_engine_xrender_xcb
+%bcond_with    module_loader_svg
+
+## enabled features
+%bcond_without module_engine_software_x11
+%bcond_without module_engine_buffer
+%bcond_without module_engine_fb
+%bcond_without module_loader_pmaps
+%bcond_without module_loader_png
+%bcond_without module_saver_png
+%bcond_without module_loader_jpeg
+%bcond_without module_saver_jpeg
+%bcond_without module_loader_gif
+%bcond_without module_loader_tiff
+%bcond_without module_saver_tiff
+%bcond_without module_loader_eet
+%bcond_without module_saver_eet
+%bcond_without module_loader_xpm
+
+# This just keeps a missing doxygen from killing the build.
+%define _missing_doc_files_terminate_build 0
+
+# Macros for ./configure use
+%define ac_with_module_loader_eet --%{?with_module_loader_eet:en}%{!?with_module_loader_eet:dis}able-image-loader-eet
+%define ac_with_module_loader_jpeg --%{?with_module_loader_jpeg:en}%{!?with_module_loader_jpeg:dis}able-image-loader-jpeg
+%define ac_with_module_loader_pmaps --%{?with_module_loader_pmaps:en}%{!?with_module_loader_pmaps:dis}able-image-loader-pmaps
+%define ac_with_module_loader_png --%{?with_module_loader_png:en}%{!?with_module_loader_png:dis}able-image-loader-png
+%define ac_with_module_loader_tiff --%{?with_module_loader_tiff:en}%{!?with_module_loader_tiff:dis}able-image-loader-tiff
+%define ac_with_module_loader_gif --%{?with_module_loader_gif:en}%{!?with_module_loader_gif:dis}able-image-loader-gif
+%define ac_with_module_loader_edb --%{?with_module_loader_edb:en}%{!?with_module_loader_edb:dis}able-image-loader-edb
+%define ac_with_module_loader_xpm --%{?with_module_loader_xpm:en}%{!?with_module_loader_xpm:dis}able-image-loader-xpm
+%define ac_with_module_loader_svg --%{?with_module_loader_svg:en}%{!?with_module_loader_svg:dis}able-image-loader-svg
+%define ac_with_module_saver_eet --%{?with_module_saver_eet:en}%{!?with_module_saver_eet:dis}able-image-saver-eet
+%define ac_with_module_saver_jpeg --%{?with_module_saver_jpeg:en}%{!?with_module_saver_jpeg:dis}able-image-saver-jpeg
+%define ac_with_module_saver_png --%{?with_module_saver_png:en}%{!?with_module_saver_png:dis}able-image-saver-png
+%define ac_with_module_saver_tiff --%{?with_module_saver_tiff:en}%{!?with_module_saver_tiff:dis}able-image-saver-tiff
+%define ac_with_module_saver_gif --%{?with_module_saver_gif:en}%{!?with_module_saver_gif:dis}able-image-saver-gif
+%define ac_with_module_saver_edb --%{?with_module_saver_edb:en}%{!?with_module_saver_edb:dis}able-image-saver-edb
+%define ac_with_module_saver_xpm --%{?with_module_saver_xpm:en}%{!?with_module_saver_xpm:dis}able-image-saver-xpm
+%define ac_with_module_engine_software-x11 --%{?with_module_engine_fb:en}%{!?with_module_engine_fb:dis}able-software-x11
+%define ac_with_module_engine_buffer --%{?with_module_engine_buffer:en}%{!?with_module_engine_buffer:dis}able-buffer
+%define ac_with_module_engine_fb --%{?with_module_engine_fb:en}%{!?with_module_engine_fb:dis}able-fb
+%define ac_with_module_engine_xrender_x11 --%{?with_module_engine_xrender_x11:en}%{!?with_module_engine_xrender_x11:dis}able-xrender-x11
+%define ac_with_module_engine_gl_x11 --%{?with_module_engine_gl_x11:en}%{!?with_module_engine_gl_x11:dis}able-gl-x11
+%define ac_with_module_engine_directfb --%{?with_module_engine_directfb:en}%{!?with_module_engine_directfb:dis}able-directfb
+%define ac_with_module_engine_software_qtopia --%{?with_module_engine_software_qtopia:en}%{!?with_module_engine_software_qtopia:dis}able-software-qtopia
+%define ac_with_module_engine_software_sdl --%{?with_module_engine_software_sdl:en}%{!?with_module_engine_software_sdl:dis}able-sdl
+%define ac_with_module_engine_software_xcb --%{?with_module_engine_software_xcb:en}%{!?with_module_engine_software_xcb:dis}able-software-xcb
+%define ac_with_module_engine_xrender_xcb --%{?with_module_engine_xrender_xcb:en}%{!?with_module_engine_xrender_xcb:dis}able-xrender-xcb
+
+Summary: Multi-platform Canvas Library
+Name: @PACKAGE@
+Version: @VERSION@
+Release: 0.%(date '+%Y%m%d')
+License: BSD
+Group: System Environment/Libraries
+URL: http://www.enlightenment.org/
+Source: %{name}-%{version}.tar.gz
+Packager: %{?_packager:%{_packager}}%{!?_packager:Michael Jennings <mej@eterm.org>}
+Vendor: %{?_vendorinfo:%{_vendorinfo}}%{!?_vendorinfo:The Enlightenment Project (http://www.enlightenment.org/)}
+Distribution: %{?_distribution:%{_distribution}}%{!?_distribution:%{_vendor}}
+BuildRequires: /usr/bin/freetype-config
+Provides: evas
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+
+%description
+Evas is a clean display canvas API for several target display systems
+that can draw anti-aliased text, smooth super and sub-sampled scaled
+images, alpha-blend objects much and more.
+
+%package devel
+Summary: Evas headers, static libraries, documentation and test programs
+Group: System Environment/Libraries
+Requires: %{name} = %{version}
+
+%description devel
+Headers, static libraries, test programs and documentation for Evas.
+
+%if %{with module_loader_eet}
+%package module_loader_eet
+Summary: EET Image loader module for Evas
+Group: System Environment/Libraries
+BuildRequires: eet-devel
+%description module_loader_eet
+EET Image loader module for Evas
+%endif
+
+%if %{with module_saver_eet}
+%package module_saver_eet
+Summary: EET Image saver module for Evas
+Group: System Environment/Libraries
+BuildRequires: eet-devel
+%description module_saver_eet
+EET Image saver module for Evas
+%endif
+
+%if %{with module_loader_jpeg}
+%package module_loader_jpeg
+Summary: JPEG Image loader module for Evas
+Group: System Environment/Libraries
+BuildRequires: libjpeg-devel
+%description module_loader_jpeg
+JPEG Image loader module for Evas
+%endif
+
+%if %{with module_saver_jpeg}
+%package module_saver_jpeg
+Summary: JPEG Image saver module for Evas
+Group: System Environment/Libraries
+BuildRequires: libjpeg-devel
+%description module_saver_jpeg
+JPEG Image saver module for Evas
+%endif
+
+%if %{with module_loader_pmaps}
+%package module_loader_pmaps
+Summary: Pixmap Image loader module for Evas
+Group: System Environment/Libraries
+BuildRequires: libXpm-devel
+%description module_loader_pmaps
+Pixmap Image loader module for Evas
+%endif
+
+%if %{with module_loader_png}
+%package module_loader_png
+Summary: PNG Image loader module for Evas
+Group: System Environment/Libraries
+BuildRequires: libpng-devel
+%description module_loader_png
+PNG Image loader module for Evas
+%endif
+
+%if %{with module_saver_png}
+%package module_saver_png
+Summary: PNG Image saver module for Evas
+Group: System Environment/Libraries
+BuildRequires: libpng-devel
+%description module_saver_png
+PNG Image saver module for Evas
+%endif
+
+%if %{with module_loader_tiff}
+%package module_loader_tiff
+Summary: TIFF Image loader module for Evas
+Group: System Environment/Libraries
+BuildRequires: libtiff-devel
+%description module_loader_tiff
+TIFF Image loader module for Evas
+%endif
+
+%if %{with module_saver_tiff}
+%package module_saver_tiff
+Summary: TIFF Image saver module for Evas
+Group: System Environment/Libraries
+BuildRequires: libtiff-devel
+%description module_saver_tiff
+TIFF Image saver module for Evas
+%endif
+
+%if %{with module_loader_gif}
+%package module_loader_gif
+Summary: GIF Image loader module for Evas
+Group: System Environment/Libraries
+#BuildSuggests: libungif-devel, giflib-devel
+BuildRequires: /usr/include/gif_lib.h
+%description module_loader_gif
+GIF Image loader module for Evas
+%endif
+
+%if %{with module_loader_edb}
+%package module_loader_edb
+Summary: EDB Image loader module for Evas
+Group: System Environment/Libraries
+BuildRequires: edb-devel
+%description module_loader_edb
+EDB Image loader module for Evas
+%endif
+
+%if %{with module_saver_edb}
+%package module_saver_edb
+Summary: EDB Image saver module for Evas
+Group: System Environment/Libraries
+BuildRequires: edb-devel
+%description module_saver_edb
+EDB Image saver module for Evas
+%endif
+
+%if %{with module_loader_xpm}
+%package module_loader_xpm
+Summary: XPM Image loader module for Evas
+Group: System Environment/Libraries
+##BuildRequires: (none, X?)
+%description module_loader_xpm
+XPM Image loader module for Evas
+%endif
+
+%if %{with module_loader_svg}
+%package module_loader_svg
+Summary: SVG Image loader module for Evas
+Group: System Environment/Libraries
+BuildRequires: librsvg-devel >= 2.14
+%description module_loader_svg
+svg Image loader module for Evas
+%endif
+
+%package module_engine_software_generic
+Summary: Software X11 rendering engine module for Evas
+Group: System Environment/Libraries
+Requires: evas
+%description module_engine_software_generic
+Software X11 rendering engine module for Evas
+
+%if %{with module_engine_software_x11}
+%package module_engine_software_x11
+Summary: Software X11 rendering engine module for Evas
+Group: System Environment/Libraries
+Requires: evas-module_engine_software_generic
+Requires: evas
+%description module_engine_software_x11
+Software X11 rendering engine module for Evas
+%endif
+
+%if %{with module_engine_buffer}
+%package module_engine_buffer
+Summary: Buffer rendering engine module for Evas
+Group: System Environment/Libraries
+Requires: evas-module_engine_software_generic
+Requires: evas
+%description module_engine_buffer
+Memory Buffer rendering engine module for Evas
+%endif
+
+%if %{with module_engine_fb}
+%package module_engine_fb
+Summary: Framebuffer rendering engine module for Evas
+Group: System Environment/Libraries
+Requires: evas-module_engine_software_generic
+Requires: evas
+%description module_engine_fb
+Framebuffer rendering engine module for Evas
+%endif
+
+%if %{with module_engine_xrender_x11}
+%package module_engine_xrender_x11
+Summary: XRender rendering engine module for Evas
+Group: System Environment/Libraries
+#BuildSuggests: xorg-x11-devel, XFree86-devel
+BuildRequires: xrender-devel
+Requires: evas-module_engine_software_generic
+Requires: evas
+%description module_engine_xrender_x11
+XRender rendering engine module for Evas
+%endif
+
+%if %{with module_engine_gl_x11}
+%package module_engine_gl_x11
+Summary: OpenGL under X11 rendering engine module for Evas
+Group: System Environment/Libraries
+#BuildSuggests: xorg-x11-devel, xorg-x11-Mesa-libGL, XFree86-devel
+Requires: evas
+%description module_engine_gl_x11
+OpenGL under X11 rendering engine module for Evas
+%endif
+
+%if %{with module_engine_directfb}
+%package module_engine_directfb
+Summary: Directfb rendering engine module for Evas
+Group: System Environment/Libraries
+#BuildSuggests: DirectFB, libdirectfb-devel, directfb-devel
+BuildRequires: /usr/include/directfb/dfb_types.h
+Requires: evas
+%description module_engine_directfb
+Directfb rendering engine module for Evas
+%endif
+
+%if %{with module_engine_software_qtopia}
+%package module_engine_software_qtopia
+Summary: Qtopia rendering engine module for Evas
+Group: System Environment/Libraries
+BuildRequires: qtopia-devel
+Requires: evas-module_engine_software_generic
+Requires: evas
+%description module_engine_software_qtopia
+Qtopia rendering engine module for Evas
+%endif
+
+%if %{with module_engine_software_sdl}
+%package module_engine_software_sdl
+Summary: Software SDL X11 rendering engine module for Evas
+Group: System Environment/Libraries
+BuildRequires: SDL-devel
+Requires: evas-module_engine_software_generic
+Requires: evas
+%description module_engine_software_sdl
+Software SDL X11 rendering engine module for Evas
+%endif
+
+%if %{with module_engine_software_xcb}
+%package module_engine_software_xcb
+Summary: Software XCB X11 rendering engine module for Evas
+Group: System Environment/Libraries
+BuildRequires: xcb-devel
+Requires: evas-module_engine_software_generic
+Requires: evas
+%description module_engine_software_xcb
+Software XCB X11 rendering engine module for Evas
+%endif
+
+%if %{with module_engine_xrender_xcb}
+%package module_engine_xrender_xcb
+Summary: Xrender XCB X11 rendering engine module for Evas
+Group: System Environment/Libraries
+BuildRequires: xcb-devel
+Requires: evas-module_engine_xrender_x11
+Requires: evas
+%description module_engine_xrender_xcb
+Xrender XCB X11 rendering engine module for Evas
+%endif
+
+%prep
+%setup -q -n %{name}-%{version}
+
+%build
+%{configure} --prefix=%{_prefix} --x-libraries=%{_prefix}/X11R6/%{_lib} \
+    %{?ac_with_module_loader_eet} \
+    %{?ac_with_module_saver_eet} \
+    %{?ac_with_module_loader_jpeg} \
+    %{?ac_with_module_saver_jpeg} \
+    %{?ac_with_module_loader_pmaps} \
+    %{?ac_with_module_loader_png} \
+    %{?ac_with_module_saver_png} \
+    %{?ac_with_module_loader_tiff} \
+    %{?ac_with_module_saver_tiff} \
+    %{?ac_with_module_loader_gif} \
+    %{?ac_with_module_loader_edb} \
+    %{?ac_with_module_saver_edb} \
+    %{?ac_with_module_loader_xpm} \
+    %{?ac_with_module_loader_svg} \
+    %{?ac_with_module_engine_software_x11} \
+    %{?ac_with_module_engine_buffer} \
+    %{?ac_with_module_engine_fb} \
+    %{?ac_with_module_engine_xrender_x11} \
+    %{?ac_with_module_engine_gl_x11} \
+    %{?ac_with_module_engine_directfb} \
+    %{?ac_with_module_engine_software_qtopia} \
+    %{?ac_with_module_engine_software_sdl} \
+    %{?ac_with_module_engine_software_xcb} \
+    %{?ac_with_module_engine_xrender_xcb} \
+    $RPM_CONFIGURE_OPTS
+%{__make} %{?_smp_mflags} %{?mflags}
+test -x `which doxygen` && /bin/sh gendoc || :
+
+%install
+%{__make} %{?mflags_install} DESTDIR=$RPM_BUILD_ROOT install
+%{__rm} -f $RPM_BUILD_ROOT%{_libdir}/%{name}/modules/*/*/*/*a
+
+%clean
+test "x$RPM_BUILD_ROOT" != "x/" && rm -rf $RPM_BUILD_ROOT
+
+%post
+/sbin/ldconfig
+
+%postun
+/sbin/ldconfig
+
+%files
+%defattr(-, root, root)
+%doc AUTHORS COPYING COPYING-PLAIN README
+%{_libdir}/*.so.*
+
+%files devel
+%defattr(-, root, root)
+%{_libdir}/*.so
+%{_libdir}/*.la
+%{_libdir}/*.a
+%{_libdir}/pkgconfig/*
+%{_includedir}/*.h
+
+%files module_engine_software_generic
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/software_generic/*/module.so
+
+%if %{with module_loader_eet}
+%files module_loader_eet
+%defattr(-, root, root)
+%{_libdir}/evas/modules/loaders/eet/*/module.so
+%endif
+
+%if %{with module_saver_eet}
+%files module_saver_eet
+%defattr(-, root, root)
+%{_libdir}/evas/modules/savers/eet/*/module.so
+%endif
+
+%if %{with module_loader_pmaps}
+%files module_loader_pmaps
+%defattr(-, root, root)
+%{_libdir}/evas/modules/loaders/pmaps/*/module.so
+%endif
+
+%if %{with module_loader_png}
+%files module_loader_png
+%defattr(-, root, root)
+%{_libdir}/evas/modules/loaders/png/*/module.so
+%endif
+
+%if %{with module_saver_png}
+%files module_saver_png
+%defattr(-, root, root)
+%{_libdir}/evas/modules/savers/png/*/module.so
+%endif
+
+%if %{with module_loader_jpeg}
+%files module_loader_jpeg
+%defattr(-, root, root)
+%{_libdir}/evas/modules/loaders/jpeg/*/module.so
+%endif
+
+%if %{with module_saver_jpeg}
+%files module_saver_jpeg
+%defattr(-, root, root)
+%{_libdir}/evas/modules/savers/jpeg/*/module.so
+%endif
+
+%if %{with module_loader_tiff}
+%files module_loader_tiff
+%defattr(-, root, root)
+%{_libdir}/evas/modules/loaders/tiff/*/module.so
+%endif
+
+%if %{with module_saver_tiff}
+%files module_saver_tiff
+%defattr(-, root, root)
+%{_libdir}/evas/modules/savers/tiff/*/module.so
+%endif
+
+%if %{with module_loader_gif}
+%files module_loader_gif
+%defattr(-, root, root)
+%{_libdir}/evas/modules/loaders/gif/*/module.so
+%endif
+
+%if %{with module_loader_edb}
+%files module_loader_edb
+%defattr(-, root, root)
+%{_libdir}/evas/modules/loaders/edb/*/module.so
+%endif
+
+%if %{with module_saver_edb}
+%files module_saver_edb
+%defattr(-, root, root)
+%{_libdir}/evas/modules/savers/edb/*/module.so
+%endif
+
+%if %{with module_loader_xpm}
+%files module_loader_xpm
+%defattr(-, root, root)
+%{_libdir}/evas/modules/loaders/xpm/*/module.so
+%endif
+
+%if %{with module_loader_svg}
+%files module_loader_svg
+%defattr(-, root, root)
+%{_libdir}/evas/modules/loaders/svg/*/module.so
+%endif
+
+%if %{with module_engine_software_x11}
+%files module_engine_software_x11
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/software_x11/*/module.so
+%endif
+
+%if %{with module_engine_buffer}
+%files module_engine_buffer
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/buffer/*/module.so
+%endif
+
+%if %{with module_engine_fb}
+%files module_engine_fb
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/fb/*/module.so
+%endif
+
+%if %{with module_engine_xrender_x11}
+%files module_engine_xrender_x11
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/xrender_x11/*/module.so
+%endif
+
+%if %{with module_engine_gl_x11}
+%files module_engine_gl_x11
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/gl_x11/*/module.so
+%endif
+
+%if %{with module_engine_directfb}
+%files module_engine_directfb
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/directfb/*/module.so
+%endif
+
+%if %{with module_engine_software_qtopia}
+%files module_engine_software_qtopia
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/software_qtopia/*/module.so
+%endif
+
+%if %{with module_engine_software_sdl}
+%files module_engine_software_sdl
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/software_sdl/*/module.so
+%endif
+
+%if %{with module_engine_software_xcb}
+%files module_engine_software_xcb
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/software_xcb/*/module.so
+%endif
+
+%if %{with module_engine_xrender_xcb}
+%files module_engine_xrender_xcb
+%defattr(-, root, root)
+%{_libdir}/evas/modules/engines/xrender_xcb/*/module.so
+%endif
+
+%changelog
diff --git a/gendoc b/gendoc
new file mode 100755 (executable)
index 0000000..1b099ce
--- /dev/null
+++ b/gendoc
@@ -0,0 +1,9 @@
+#!/bin/sh
+rm -rf ./doc/html ./doc/latex ./doc/man
+mkdir -p doc/html doc/man doc/latex
+doxygen
+cp doc/img/* doc/html/
+rm -f evas_docs.tar evas_docs.tar.gz
+tar -cvf evas_docs.tar doc/html doc/man doc/latex
+gzip -9 evas_docs.tar
+exit 0
diff --git a/m4/evas_converter.m4 b/m4/evas_converter.m4
new file mode 100644 (file)
index 0000000..4a5a390
--- /dev/null
@@ -0,0 +1,83 @@
+dnl use: EVAS_CONVERT_COLOR(bpp, colorspace, components[, default-enabled])
+AC_DEFUN([EVAS_CONVERT_COLOR],
+[
+pushdef([UP], translit([$1_$2_$3], [a-z], [A-Z]))dnl
+pushdef([DOWN_D], translit([$1-$2-$3], [A-Z], [a-z]))dnl
+pushdef([DOWN_U], translit([$1_$2_$3], [A-Z], [a-z]))dnl
+
+conv_[]DOWN_U="no"
+
+ifelse("x$4", "xno",
+[
+  AC_ARG_ENABLE(convert-[]DOWN_D,
+    AC_HELP_STRING(
+      [--enable-convert-[]DOWN_D],
+      [enable the $1bpp $2 $3 converter code]
+    ),
+    [ conv_[]DOWN_U=$enableval ],
+    [ conv_[]DOWN_U=no ]
+  )
+], [
+  AC_ARG_ENABLE(convert-[]DOWN_D,
+    AC_HELP_STRING(
+      [--disable-convert-[]DOWN_D],
+      [disable the $1bpp $2 $3 converter code]
+    ),
+    [ conv_[]DOWN_U=$enableval ],
+    [ conv_[]DOWN_U=yes ]
+  )
+])
+
+AC_MSG_CHECKING(whether to build $1bpp $2 $3 converter code)
+AC_MSG_RESULT($conv_[]DOWN_U)
+
+if test "x$conv_[]DOWN_U" = "xyes" ; then
+  AC_DEFINE(BUILD_CONVERT_[]UP, 1, [$1bpp $2 $3 Converter Support])
+fi
+
+popdef([UP])
+popdef([DOWN_D])
+popdef([DOWN_U])
+])
+
+dnl use: EVAS_CONVERT_ROT(bpp, colorspace, rot[, default-enabled])
+AC_DEFUN([EVAS_CONVERT_ROT],
+[
+pushdef([UP], translit([$1_$2_ROT$3], [a-z], [A-Z]))dnl
+pushdef([DOWN_D], translit([$1-$2-rot-$3], [A-Z], [a-z]))dnl
+pushdef([DOWN_U], translit([$1_$2_rot_$3], [A-Z], [a-z]))dnl
+
+conv_[]DOWN_U="no"
+
+ifelse("x$4", "xno",
+[
+  AC_ARG_ENABLE(convert-[]DOWN_D,
+    AC_HELP_STRING(
+      [--enable-convert-[]DOWN_D],
+      [enable the $1bpp $2 rotation $3 converter code]
+    ),
+    [ conv_[]DOWN_U=$enableval ],
+    [ conv_[]DOWN_U=no ]
+  )
+], [
+  AC_ARG_ENABLE(convert-[]DOWN_D,
+    AC_HELP_STRING(
+      [--disable-convert-[]DOWN_D],
+      [disable the $1bpp $2 rotation $3 converter code]
+    ),
+    [ conv_[]DOWN_U=$enableval ],
+    [ conv_[]DOWN_U=yes ]
+  )
+])
+
+AC_MSG_CHECKING(whether to build $1bpp $2 rotation $3 converter code)
+AC_MSG_RESULT($conv_[]DOWN_U)
+
+if test "x$conv_[]DOWN_U" = "xyes" ; then
+  AC_DEFINE(BUILD_CONVERT_[]UP, 1, [$1bpp $2 Rotation $3 Converter Support])
+fi
+
+popdef([UP])
+popdef([DOWN_D])
+popdef([DOWN_U])
+])
diff --git a/src/.cvsignore b/src/.cvsignore
new file mode 100644 (file)
index 0000000..3dda729
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile.in
+Makefile
diff --git a/src/Makefile.am b/src/Makefile.am
new file mode 100644 (file)
index 0000000..75f3f70
--- /dev/null
@@ -0,0 +1,3 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+SUBDIRS = lib modules
diff --git a/src/lib/.cvsignore b/src/lib/.cvsignore
new file mode 100644 (file)
index 0000000..84c11b0
--- /dev/null
@@ -0,0 +1,6 @@
+Makefile.in
+Makefile
+.deps
+.libs
+libevas.la
+main.lo
diff --git a/src/lib/Evas.h b/src/lib/Evas.h
new file mode 100644 (file)
index 0000000..1c45061
--- /dev/null
@@ -0,0 +1,881 @@
+#ifndef _EVAS_H
+#define _EVAS_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EVAS_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_EVAS_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+/**
+ * @file
+ * @brief These routines are used for Evas library interaction.
+ */
+
+#include <Evas_Data.h>
+
+typedef enum _Evas_Callback_Type
+{
+   EVAS_CALLBACK_MOUSE_IN, /**< Mouse In Event */
+   EVAS_CALLBACK_MOUSE_OUT, /**< Mouse Out Event */
+   EVAS_CALLBACK_MOUSE_DOWN, /**< Mouse Button Down Event */
+   EVAS_CALLBACK_MOUSE_UP, /**< Mouse Button Up Event */
+   EVAS_CALLBACK_MOUSE_MOVE, /**< Mouse Move Event */
+   EVAS_CALLBACK_MOUSE_WHEEL, /**< Mouse Wheel Event */
+   EVAS_CALLBACK_FREE, /**< Object Being Freed (Called after Del) */
+   EVAS_CALLBACK_KEY_DOWN, /**< Key Press Event */
+   EVAS_CALLBACK_KEY_UP, /**< Key Release Event */
+   EVAS_CALLBACK_FOCUS_IN, /**< Focus In Event */
+   EVAS_CALLBACK_FOCUS_OUT, /**< Focus Out Event */
+   EVAS_CALLBACK_SHOW, /**< Show Event */
+   EVAS_CALLBACK_HIDE, /**< Hide Event */
+   EVAS_CALLBACK_MOVE, /**< Move Event */
+   EVAS_CALLBACK_RESIZE, /**< Resize Event */
+   EVAS_CALLBACK_RESTACK, /**< Restack Event */
+   EVAS_CALLBACK_DEL, /**< Object Being Deleted (called before Free) */
+   EVAS_CALLBACK_HOLD, /**< Events go on/off hold */
+   EVAS_CALLBACK_CHANGED_SIZE_HINTS /**< Size hints changed event */
+} Evas_Callback_Type; /**< The type of event to trigger the callback */
+
+typedef enum _Evas_Button_Flags
+{
+   EVAS_BUTTON_NONE = 0, /**< No extra mouse button data */
+   EVAS_BUTTON_DOUBLE_CLICK = (1 << 0), /**< This mouse button press was the 2nd press of a double click */
+   EVAS_BUTTON_TRIPLE_CLICK = (1 << 1) /**< This mouse button press was the 3rd press of a triple click */
+} Evas_Button_Flags; /**< Flags for Mouse Button events */
+
+typedef enum _Evas_Event_Flags
+{
+   EVAS_EVENT_FLAG_NONE = 0, /**< No fancy flags set */
+   EVAS_EVENT_FLAG_ON_HOLD = (1 << 0) /**< This event is being delivered but should be put "on hold" until the on hold flag is unset. the event should be used for informational purposes and maybe some indications visually, but not actually perform anything */
+} Evas_Event_Flags; /**< Flags for Events */
+
+typedef enum _Evas_Font_Hinting_Flags
+{
+   EVAS_FONT_HINTING_NONE, /**< No font hinting */
+   EVAS_FONT_HINTING_AUTO, /**< Automatic font hinting */
+   EVAS_FONT_HINTING_BYTECODE /**< Bytecode font hinting */
+} Evas_Font_Hinting_Flags; /**< Flags for Font Hinting */
+
+typedef enum _Evas_Colorspace
+{
+   EVAS_COLORSPACE_ARGB8888, /**< ARGB 32 bits per pixel, high-byte is Alpha, accessed 1 32bit word at a time */
+     /* these are not currently supported - but planned for the future */
+   EVAS_COLORSPACE_YCBCR422P601_PL, /**< YCbCr 4:2:2 Planar, ITU.BT-601 specifications. The data poitned to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */
+   EVAS_COLORSPACE_YCBCR422P709_PL,/**< YCbCr 4:2:2 Planar, ITU.BT-709 specifications. The data poitned to is just an array of row pointer, pointing to the Y rows, then the Cb, then Cr rows */
+   EVAS_COLORSPACE_RGB565_A5P /**< 16bit rgb565 + Alpha plane at end - 5 bits of the 8 being used per alpha byte */
+} Evas_Colorspace; /**< Colorspaces for pixel data supported by Evas */
+
+typedef struct _Evas_Rectangle        Evas_Rectangle; /**< A generic rectangle handle */
+typedef struct _Evas_Coord_Rectangle  Evas_Coord_Rectangle; /**< A generic rectangle handle */
+typedef struct _Evas_Smart_Class      Evas_Smart_Class; /**< A smart object base class */
+
+typedef struct _Evas Evas; /**< An Evas canvas handle */
+typedef struct _Evas_Object Evas_Object; /**< An Evas Object handle */
+typedef void Evas_Performance; /**< An Evas Performance handle */
+typedef struct _Evas_Modifier Evas_Modifier; /**< An Evas Modifier */
+typedef struct _Evas_Lock Evas_Lock; /**< An Evas Lock */
+typedef struct _Evas_Smart Evas_Smart; /**< An Evas Smart Object handle */
+typedef struct _Evas_Native_Surface Evas_Native_Surface; /**< A generic datatype for engine specific native surface information */
+typedef unsigned long long Evas_Modifier_Mask; /**< An Evas modifier mask type */
+
+typedef int           Evas_Coord;
+typedef int           Evas_Font_Size;
+typedef int           Evas_Angle;
+
+struct _Evas_Rectangle /** A rectangle */
+{
+   int x; /**< top-left x co-ordinate of rectangle */
+   int y; /**< top-left y co-ordinate of rectangle */
+   int w; /**< width of rectangle */
+   int h; /**< height of rectangle */
+};
+
+struct _Evas_Coord_Rectangle /** A rectangle in Evas_Coord */
+{
+   Evas_Coord x; /**< top-left x co-ordinate of rectangle */
+   Evas_Coord y; /**< top-left y co-ordinate of rectangle */
+   Evas_Coord w; /**< width of rectangle */
+   Evas_Coord h; /**< height of rectangle */
+};
+
+typedef enum _Evas_Aspect_Control
+{
+   EVAS_ASPECT_CONTROL_NONE = 0,
+   EVAS_ASPECT_CONTROL_NEITHER = 1,
+   EVAS_ASPECT_CONTROL_HORIZONTAL = 2,
+   EVAS_ASPECT_CONTROL_VERTICAL = 3,
+   EVAS_ASPECT_CONTROL_BOTH = 4
+} Evas_Aspect_Control;
+
+
+#define EVAS_SMART_CLASS_VERSION 1 /** the version you have to put into the version field in the smart class struct */
+struct _Evas_Smart_Class /** a smart object class */
+{
+   const char *name; /** the string name of the class */
+   
+   int version;
+
+   void  (*add)         (Evas_Object *o);
+   void  (*del)         (Evas_Object *o);
+   void  (*move)        (Evas_Object *o, Evas_Coord x, Evas_Coord y);
+   void  (*resize)      (Evas_Object *o, Evas_Coord w, Evas_Coord h); 
+   void  (*show)        (Evas_Object *o); // FIXME: DELETE ME
+   void  (*hide)        (Evas_Object *o); // FIXME: DELETE ME
+   void  (*color_set)   (Evas_Object *o, int r, int g, int b, int a); // FIXME: DELETE ME
+   void  (*clip_set)    (Evas_Object *o, Evas_Object *clip); // FIXME: DELETE ME
+   void  (*clip_unset)  (Evas_Object *o); // FIXME: DELETE ME
+
+   const void *data;
+};
+
+typedef struct _Evas_Pixel_Import_Source Evas_Pixel_Import_Source; /**< A source description of pixels for importing pixels */
+typedef struct _Evas_Engine_Info      Evas_Engine_Info; /**< A generic Evas Engine information structure */
+typedef struct _Evas_Event_Mouse_Down Evas_Event_Mouse_Down; /**< Event structure for #EVAS_CALLBACK_MOUSE_DOWN event callbacks */
+typedef struct _Evas_Event_Mouse_Up   Evas_Event_Mouse_Up; /**< Event structure for #EVAS_CALLBACK_MOUSE_UP event callbacks */
+typedef struct _Evas_Event_Mouse_In   Evas_Event_Mouse_In; /**< Event structure for #EVAS_CALLBACK_MOUSE_IN event callbacks */
+typedef struct _Evas_Event_Mouse_Out  Evas_Event_Mouse_Out; /**< Event structure for #EVAS_CALLBACK_MOUSE_OUT event callbacks */
+typedef struct _Evas_Event_Mouse_Move Evas_Event_Mouse_Move; /**< Event structure for #EVAS_CALLBACK_MOUSE_MOVE event callbacks */
+typedef struct _Evas_Event_Mouse_Wheel Evas_Event_Mouse_Wheel; /**< Event structure for #EVAS_CALLBACK_MOUSE_WHEEL event callbacks */
+typedef struct _Evas_Event_Key_Down   Evas_Event_Key_Down; /**< Event structure for #EVAS_CALLBACK_KEY_DOWN event callbacks */
+typedef struct _Evas_Event_Key_Up     Evas_Event_Key_Up; /**< Event structure for #EVAS_CALLBACK_KEY_UP event callbacks */
+typedef struct _Evas_Event_Hold       Evas_Event_Hold; /**< Event structure for #EVAS_CALLBACK_HOLD event callbacks */
+
+#define EVAS_LOAD_ERROR_NONE                       0 /**< No error on load */
+#define EVAS_LOAD_ERROR_GENERIC                    1 /**< A non-specific error occured */
+#define EVAS_LOAD_ERROR_DOES_NOT_EXIST             2 /**< File (or file path) does not exist */
+#define EVAS_LOAD_ERROR_PERMISSION_DENIED          3 /**< Permission deinied to an existing file (or path) */
+#define EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED 4 /**< Allocation of resources failure prevented load */
+#define EVAS_LOAD_ERROR_CORRUPT_FILE               5 /**< File corrupt (but was detected as a known format) */
+#define EVAS_LOAD_ERROR_UNKNOWN_FORMAT             6 /**< File is not a known format */
+
+#define EVAS_ALLOC_ERROR_NONE                      0 /**< No allocation error */
+#define EVAS_ALLOC_ERROR_FATAL                     1 /**< Allocation failed despite attempts to free up memory */
+#define EVAS_ALLOC_ERROR_RECOVERED                 2 /**< Allocation succeeded, but extra memory had to be found by freeing up speculative resources */
+
+#define EVAS_TEXT_INVALID -1
+#define EVAS_TEXT_SPECIAL -2
+
+struct _Evas_Pixel_Import_Source
+{
+   int format; /**< pixel format type ie ARGB32, YUV420P_601 etc. */
+   int w, h; /**< width and height of source in pixels */
+   void **rows; /**< an array of pointers (size depends on format) pointing to left edge of each scanline */
+};
+
+struct _Evas_Native_Surface
+{
+   union {
+      void           *p;
+      unsigned short  s;
+      unsigned int    i;
+      unsigned long   l;
+   } data;
+};
+
+#define EVAS_LAYER_MIN -32768 /**< bottom-most layer number */
+#define EVAS_LAYER_MAX 32767  /**< top-most layer number */
+
+#define EVAS_PIXEL_FORMAT_NONE                     0 /**< No pixel format */
+#define EVAS_PIXEL_FORMAT_ARGB32                   1 /**< ARGB 32bit pixel format with A in the high byte per 32bit pixel word */
+#define EVAS_PIXEL_FORMAT_YUV420P_601              2 /**< YUV 420 Planar format with CCIR 601 color encoding wuth contiguous planes in the order Y, U and V */
+
+#define EVAS_COLOR_SPACE_ARGB                      0 /**< ARGB color space */
+#define EVAS_COLOR_SPACE_AHSV                      1 /**< AHSV color space */
+
+#define EVAS_TEXTURE_REFLECT            0 /**< Gradient and image fill tiling mode - tiling reflects */
+#define EVAS_TEXTURE_REPEAT             1 /**< tiling repeats */
+#define EVAS_TEXTURE_RESTRICT           2 /**< tiling clamps - range offset ignored */
+#define EVAS_TEXTURE_RESTRICT_REFLECT   3 /**< tiling clamps and any range offset reflects */
+#define EVAS_TEXTURE_RESTRICT_REPEAT    4 /**< tiling clamps and any range offset repeats */
+#define EVAS_TEXTURE_PAD                5 /**< tiling extends with end values */
+
+typedef enum _Evas_Render_Op
+{
+   EVAS_RENDER_BLEND = 0, /**< default op: d = d*(1-sa) + s */
+   EVAS_RENDER_BLEND_REL = 1, /**< d = d*(1 - sa) + s*da */
+   EVAS_RENDER_COPY = 2, /**< d = s */
+   EVAS_RENDER_COPY_REL = 3, /**< d = s*da */
+   EVAS_RENDER_ADD = 4, /**< d = d + s */
+   EVAS_RENDER_ADD_REL = 5, /**< d = d + s*da */
+   EVAS_RENDER_SUB = 6, /**< d = d - s */
+   EVAS_RENDER_SUB_REL = 7, /**< d = d - s*da */
+   EVAS_RENDER_TINT = 8, /**< d = d*s + d*(1 - sa) + s*(1 - da) */
+   EVAS_RENDER_TINT_REL = 9, /**< d = d*(1 - sa + s) */
+   EVAS_RENDER_MASK = 10, /**< d = d*sa */
+   EVAS_RENDER_MUL = 11 /**< d = d*s */
+} Evas_Render_Op; /**<  */
+
+
+struct _Evas_Engine_Info /** Generic engine information. Generic info is useless */
+{
+   int magic; /**< Magic number */
+};
+
+struct _Evas_Event_Mouse_Down /** Mouse button press event */
+{
+   int button; /**< Mouse button number that went down (1 - 32) */
+   struct {
+      int x, y;
+   } output;
+   struct {
+      Evas_Coord x, y;
+   } canvas;
+   void          *data;
+   Evas_Modifier *modifiers;
+   Evas_Lock     *locks;
+
+   Evas_Button_Flags flags;
+   unsigned int      timestamp;
+   Evas_Event_Flags  event_flags;
+};
+
+struct _Evas_Event_Mouse_Up /** Mouse button release event */
+{
+   int button; /**< Mouse button number that was raised (1 - 32) */
+   struct {
+      int x, y;
+   } output;
+   struct {
+      Evas_Coord x, y;
+   } canvas;
+   void          *data;
+   Evas_Modifier *modifiers;
+   Evas_Lock     *locks;
+
+   Evas_Button_Flags flags;
+   unsigned int      timestamp;
+   Evas_Event_Flags  event_flags;
+};
+
+struct _Evas_Event_Mouse_In /** Mouse enter event */
+{
+   int buttons; /**< Button pressed mask, Bits set to 1 are buttons currently pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */
+   struct {
+      int x, y;
+   } output;
+   struct {
+      Evas_Coord x, y;
+   } canvas;
+   void          *data;
+   Evas_Modifier *modifiers;
+   Evas_Lock     *locks;
+   unsigned int   timestamp;
+   Evas_Event_Flags  event_flags;
+};
+
+struct _Evas_Event_Mouse_Out /** Mouse leave event */
+{
+   int buttons; /**< Button pressed mask, Bits set to 1 are buttons currently pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */
+   struct {
+      int x, y;
+   } output;
+   struct {
+      Evas_Coord x, y;
+   } canvas;
+   void          *data;
+   Evas_Modifier *modifiers;
+   Evas_Lock     *locks;
+   unsigned int   timestamp;
+   Evas_Event_Flags  event_flags;
+};
+
+struct _Evas_Event_Mouse_Move /** Mouse button down event */
+{
+   int buttons; /**< Button pressed mask, Bits set to 1 are buttons currently pressed (bit 0 = mouse button 1, bit 1 = mouse button 2 etc.) */
+   struct {
+      struct {
+        int x, y;
+      } output;
+      struct {
+        Evas_Coord x, y;
+      } canvas;
+   } cur, prev;
+   void          *data;
+   Evas_Modifier *modifiers;
+   Evas_Lock     *locks;
+   unsigned int   timestamp;
+   Evas_Event_Flags  event_flags;
+};
+
+struct _Evas_Event_Mouse_Wheel /** Wheel event */
+{
+   int direction; /* 0 = default up/down wheel FIXME: more wheel types */
+   int z; /* ...,-2,-1 = down, 1,2,... = up */
+
+   struct {
+      int x, y;
+   } output;
+
+   struct {
+      Evas_Coord x, y;
+   } canvas;
+
+   void                 *data;
+   Evas_Modifier *modifiers;
+   Evas_Lock    *locks;
+   unsigned int   timestamp;
+   Evas_Event_Flags  event_flags;
+};
+
+struct _Evas_Event_Key_Down /** Key press event */
+{
+   char          *keyname; /**< The string name of the key pressed */
+   void          *data;
+   Evas_Modifier *modifiers;
+   Evas_Lock     *locks;
+
+   const char    *key; /**< The logical key : (eg shift+1 == exclamation) */
+   const char    *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
+   const char    *compose; /**< A UTF8 string if this keystroke has modified a string in the middle of being composed - this string replaces the previous one */
+   unsigned int   timestamp;
+   Evas_Event_Flags  event_flags;
+};
+
+struct _Evas_Event_Key_Up /** Key release event */
+{
+   char          *keyname; /**< The string name of the key released */
+   void          *data;
+   Evas_Modifier *modifiers;
+   Evas_Lock     *locks;
+
+   const char    *key; /**< The logical key : (eg shift+1 == exclamation) */
+   const char    *string; /**< A UTF8 string if this keystroke has produced a visible string to be ADDED */
+   const char    *compose; /**< A UTF8 string if this keystroke has modified a string in the middle of being composed - this string replaces the previous one */
+   unsigned int   timestamp;
+   Evas_Event_Flags  event_flags;
+};
+
+struct _Evas_Event_Hold /** Hold change event */
+{
+   int            hold; /**< The hold flag */
+   void          *data;
+   
+   unsigned int   timestamp;
+   Evas_Event_Flags  event_flags;
+};
+
+typedef enum _Evas_Object_Pointer_Mode
+{
+   EVAS_OBJECT_POINTER_MODE_AUTOGRAB, /**< default, X11-like */
+   EVAS_OBJECT_POINTER_MODE_NOGRAB
+} Evas_Object_Pointer_Mode;
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+   EAPI int               evas_alloc_error                  (void);
+
+   EAPI int               evas_init                         (void);
+   EAPI int               evas_shutdown                     (void);
+
+   EAPI Evas             *evas_new                          (void);
+   EAPI void              evas_free                         (Evas *e);
+
+   EAPI int               evas_render_method_lookup         (const char *name);
+   EAPI Evas_List        *evas_render_method_list           (void);
+   EAPI void              evas_render_method_list_free      (Evas_List *list);
+
+   EAPI void              evas_output_method_set            (Evas *e, int render_method);
+   EAPI int               evas_output_method_get            (const Evas *e);
+
+   EAPI Evas_Engine_Info *evas_engine_info_get              (const Evas *e);
+   EAPI void              evas_engine_info_set              (Evas *e, Evas_Engine_Info *info);
+
+   EAPI void              evas_output_size_set              (Evas *e, int w, int h);
+   EAPI void              evas_output_size_get              (const Evas *e, int *w, int *h);
+   EAPI void              evas_output_viewport_set          (Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
+   EAPI void              evas_output_viewport_get          (const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+   EAPI Evas_Coord        evas_coord_screen_x_to_world      (const Evas *e, int x);
+   EAPI Evas_Coord        evas_coord_screen_y_to_world      (const Evas *e, int y);
+   EAPI int               evas_coord_world_x_to_screen      (const Evas *e, Evas_Coord x);
+   EAPI int               evas_coord_world_y_to_screen      (const Evas *e, Evas_Coord y);
+
+   EAPI void              evas_pointer_output_xy_get        (const Evas *e, int *x, int *y);
+   EAPI void              evas_pointer_canvas_xy_get        (const Evas *e, Evas_Coord *x, Evas_Coord *y);
+   EAPI int               evas_pointer_button_down_mask_get (const Evas *e);
+   EAPI Evas_Bool         evas_pointer_inside_get           (const Evas *e);
+   EAPI void              evas_data_attach_set              (Evas *e, void *data);
+   EAPI void             *evas_data_attach_get              (const Evas *e);
+       
+/* DOC UP TO HERE */
+   EAPI void              evas_damage_rectangle_add         (Evas *e, int x, int y, int w, int h);
+   EAPI void              evas_obscured_rectangle_add       (Evas *e, int x, int y, int w, int h);
+   EAPI void              evas_obscured_clear               (Evas *e);
+   EAPI Evas_List        *evas_render_updates               (Evas *e);
+   EAPI void              evas_render_updates_free          (Evas_List *updates);
+   EAPI void              evas_render                       (Evas *e);
+   EAPI void              evas_norender                     (Evas *e);
+   EAPI void              evas_render_idle_flush            (Evas *e);
+       
+/* rectangle objects */
+   EAPI Evas_Object      *evas_object_rectangle_add         (Evas *e);
+
+/* line objects */
+   EAPI Evas_Object      *evas_object_line_add              (Evas *e);
+   EAPI void              evas_object_line_xy_set           (Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coord x2, Evas_Coord y2);
+   EAPI void              evas_object_line_xy_get           (const Evas_Object *obj, Evas_Coord *x1, Evas_Coord *y1, Evas_Coord *x2, Evas_Coord *y2);
+
+/* gradient objects */
+   EAPI Evas_Object      *evas_object_gradient_add            (Evas *e);
+   EAPI void              evas_object_gradient_color_stop_add (Evas_Object *obj, int r, int g, int b, int a, int delta);
+   EAPI void              evas_object_gradient_alpha_stop_add (Evas_Object *obj, int a, int delta);
+   EAPI void              evas_object_gradient_color_data_set (Evas_Object *obj, void *color_data, int len, Evas_Bool has_alpha);
+   EAPI void              evas_object_gradient_alpha_data_set (Evas_Object *obj, void *alpha_data, int len);
+   EAPI void              evas_object_gradient_clear          (Evas_Object *obj);
+   EAPI void              evas_object_gradient_type_set       (Evas_Object *obj, const char *type, const char *instance_params);
+   EAPI void              evas_object_gradient_type_get     (const Evas_Object *obj, char **type, char **instance_params);
+   EAPI void              evas_object_gradient_fill_set     (Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
+   EAPI void              evas_object_gradient_fill_get     (const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+   EAPI void              evas_object_gradient_fill_angle_set    (Evas_Object *obj, Evas_Angle angle);
+   EAPI Evas_Angle        evas_object_gradient_fill_angle_get    (const Evas_Object *obj);
+   EAPI void              evas_object_gradient_fill_spread_set   (Evas_Object *obj, int tile_mode);
+   EAPI int               evas_object_gradient_fill_spread_get   (const Evas_Object *obj);
+   EAPI void              evas_object_gradient_angle_set     (Evas_Object *obj, Evas_Angle angle);
+   EAPI Evas_Angle        evas_object_gradient_angle_get     (const Evas_Object *obj);
+   EAPI void              evas_object_gradient_direction_set (Evas_Object *obj, int direction);
+   EAPI int               evas_object_gradient_direction_get (const Evas_Object *obj);
+   EAPI void              evas_object_gradient_offset_set    (Evas_Object *obj, float offset);
+   EAPI float             evas_object_gradient_offset_get    (const Evas_Object *obj);
+
+/* polygon objects */
+   EAPI Evas_Object      *evas_object_polygon_add           (Evas *e);
+   EAPI void              evas_object_polygon_point_add     (Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+   EAPI void              evas_object_polygon_points_clear  (Evas_Object *obj);
+
+/* image objects */
+   EAPI Evas_Object      *evas_object_image_add             (Evas *e);
+   EAPI void              evas_object_image_file_set        (Evas_Object *obj, const char *file, const char *key);
+   EAPI void              evas_object_image_file_get        (const Evas_Object *obj, const char **file, const char **key);
+   EAPI void              evas_object_image_border_set      (Evas_Object *obj, int l, int r, int t, int b);
+   EAPI void              evas_object_image_border_get      (const Evas_Object *obj, int *l, int *r, int *t, int *b);
+   EAPI void              evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Bool fill);
+   EAPI Evas_Bool         evas_object_image_border_center_fill_get(const Evas_Object *obj);
+   EAPI void              evas_object_image_fill_set        (Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
+   EAPI void              evas_object_image_fill_get        (const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+   EAPI void              evas_object_image_size_set        (Evas_Object *obj, int w, int h);
+   EAPI void              evas_object_image_size_get        (const Evas_Object *obj, int *w, int *h);
+   EAPI int               evas_object_image_stride_get      (const Evas_Object *obj);
+   EAPI int               evas_object_image_load_error_get  (const Evas_Object *obj);
+   EAPI void              evas_object_image_data_set        (Evas_Object *obj, void *data);
+   EAPI void             *evas_object_image_data_convert    (Evas_Object *obj, Evas_Colorspace to_cspace);
+   EAPI void             *evas_object_image_data_get        (const Evas_Object *obj, Evas_Bool for_writing);
+   EAPI void              evas_object_image_data_copy_set   (Evas_Object *obj, void *data);
+   EAPI void              evas_object_image_data_update_add (Evas_Object *obj, int x, int y, int w, int h);
+   EAPI void              evas_object_image_alpha_set       (Evas_Object *obj, Evas_Bool has_alpha);
+   EAPI Evas_Bool         evas_object_image_alpha_get       (const Evas_Object *obj);
+   EAPI void              evas_object_image_smooth_scale_set(Evas_Object *obj, Evas_Bool smooth_scale);
+   EAPI Evas_Bool         evas_object_image_smooth_scale_get(const Evas_Object *obj);
+   EAPI void              evas_object_image_reload          (Evas_Object *obj);
+   EAPI Evas_Bool         evas_object_image_save            (const Evas_Object *obj, const char *file, const char *key, const char *flags);
+   EAPI Evas_Bool         evas_object_image_pixels_import          (Evas_Object *obj, Evas_Pixel_Import_Source *pixels);
+   EAPI void              evas_object_image_pixels_get_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *o), void *data);
+   EAPI void              evas_object_image_pixels_dirty_set       (Evas_Object *obj, Evas_Bool dirty);
+   EAPI Evas_Bool         evas_object_image_pixels_dirty_get       (const Evas_Object *obj);
+   EAPI void              evas_object_image_load_dpi_set           (Evas_Object *obj, double dpi);
+   EAPI double            evas_object_image_load_dpi_get           (const Evas_Object *obj);
+   EAPI void              evas_object_image_load_size_set          (Evas_Object *obj, int w, int h);
+   EAPI void              evas_object_image_load_size_get          (const Evas_Object *obj, int *w, int *h);
+   EAPI void              evas_object_image_load_scale_down_set    (Evas_Object *obj, int scale_down);
+   EAPI int               evas_object_image_load_scale_down_get    (const Evas_Object *obj);
+   EAPI void              evas_object_image_colorspace_set         (Evas_Object *obj, Evas_Colorspace cspace);
+   EAPI Evas_Colorspace   evas_object_image_colorspace_get         (const Evas_Object *obj);
+   EAPI void                 evas_object_image_native_surface_set  (Evas_Object *obj, Evas_Native_Surface *surf);
+   EAPI Evas_Native_Surface *evas_object_image_native_surface_get  (const Evas_Object *obj);
+
+/* image cache */
+   EAPI void              evas_image_cache_flush            (Evas *e);
+   EAPI void              evas_image_cache_reload           (Evas *e);
+   EAPI void              evas_image_cache_set              (Evas *e, int size);
+   EAPI int               evas_image_cache_get              (const Evas *e);
+
+/* text objects */
+   typedef enum _Evas_Text_Style_Type
+     {
+       EVAS_TEXT_STYLE_PLAIN,
+       EVAS_TEXT_STYLE_SHADOW,
+       EVAS_TEXT_STYLE_OUTLINE,
+       EVAS_TEXT_STYLE_SOFT_OUTLINE,
+       EVAS_TEXT_STYLE_GLOW,
+       EVAS_TEXT_STYLE_OUTLINE_SHADOW,
+       EVAS_TEXT_STYLE_FAR_SHADOW,
+       EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW,
+       EVAS_TEXT_STYLE_SOFT_SHADOW,
+       EVAS_TEXT_STYLE_FAR_SOFT_SHADOW
+     } Evas_Text_Style_Type;
+
+   EAPI Evas_Object      *evas_object_text_add              (Evas *e);
+   EAPI void              evas_object_text_font_source_set  (Evas_Object *obj, const char *font);
+   EAPI const char       *evas_object_text_font_source_get  (const Evas_Object *obj);
+   EAPI void              evas_object_text_font_set         (Evas_Object *obj, const char *font, Evas_Font_Size size);
+   EAPI void              evas_object_text_font_get         (const Evas_Object *obj, const char **font, Evas_Font_Size *size);
+   EAPI void              evas_object_text_text_set         (Evas_Object *obj, const char *text);
+   EAPI const char       *evas_object_text_text_get         (const Evas_Object *obj);
+   EAPI Evas_Coord        evas_object_text_ascent_get       (const Evas_Object *obj);
+   EAPI Evas_Coord        evas_object_text_descent_get      (const Evas_Object *obj);
+   EAPI Evas_Coord        evas_object_text_max_ascent_get   (const Evas_Object *obj);
+   EAPI Evas_Coord        evas_object_text_max_descent_get  (const Evas_Object *obj);
+   EAPI Evas_Coord        evas_object_text_horiz_advance_get(const Evas_Object *obj);
+   EAPI Evas_Coord        evas_object_text_vert_advance_get (const Evas_Object *obj);
+   EAPI Evas_Coord        evas_object_text_inset_get        (const Evas_Object *obj);
+   EAPI int               evas_object_text_char_pos_get     (const Evas_Object *obj, int pos, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch);
+   EAPI int               evas_object_text_char_coords_get  (const Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch);
+   EAPI Evas_Text_Style_Type evas_object_text_style_get     (const Evas_Object *obj);
+   EAPI void              evas_object_text_style_set        (Evas_Object *obj, Evas_Text_Style_Type type);
+   EAPI void              evas_object_text_shadow_color_set (Evas_Object *obj, int r, int g, int b, int a);
+   EAPI void              evas_object_text_shadow_color_get (const Evas_Object *obj, int *r, int *g, int *b, int *a);
+   EAPI void              evas_object_text_glow_color_set   (Evas_Object *obj, int r, int g, int b, int a);
+   EAPI void              evas_object_text_glow_color_get   (const Evas_Object *obj, int *r, int *g, int *b, int *a);
+   EAPI void              evas_object_text_glow2_color_set  (Evas_Object *obj, int r, int g, int b, int a);
+   EAPI void              evas_object_text_glow2_color_get  (const Evas_Object *obj, int *r, int *g, int *b, int *a);
+   EAPI void              evas_object_text_outline_color_set(Evas_Object *obj, int r, int g, int b, int a);
+   EAPI void              evas_object_text_outline_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a);
+   EAPI void              evas_object_text_style_pad_get    (const Evas_Object *obj, int *l, int *r, int *t, int *b);
+
+/* string and font handling */
+   EAPI int               evas_string_char_next_get         (const char *str, int pos, int *decoded);
+   EAPI int               evas_string_char_prev_get         (const char *str, int pos, int *decoded);
+
+   EAPI void              evas_font_path_clear              (Evas *e);
+   EAPI void              evas_font_path_append             (Evas *e, const char *path);
+   EAPI void              evas_font_path_prepend            (Evas *e, const char *path);
+   EAPI const Evas_List  *evas_font_path_list               (const Evas *e);
+   
+   EAPI void              evas_font_hinting_set             (Evas *e, Evas_Font_Hinting_Flags hinting);
+   EAPI Evas_Font_Hinting_Flags evas_font_hinting_get       (const Evas *e);
+   EAPI Evas_Bool         evas_font_hinting_can_hint        (const Evas *e, Evas_Font_Hinting_Flags hinting);
+
+   EAPI void              evas_font_cache_flush             (Evas *e);
+   EAPI void              evas_font_cache_set               (Evas *e, int size);
+   EAPI int               evas_font_cache_get               (const Evas *e);
+
+   EAPI Evas_List       *evas_font_available_list          (const Evas *e);
+   EAPI void             evas_font_available_list_free     (Evas *e, Evas_List *available);
+   
+/* textblock objects */
+   typedef struct _Evas_Textblock_Style     Evas_Textblock_Style;
+   typedef struct _Evas_Textblock_Cursor    Evas_Textblock_Cursor;
+   typedef struct _Evas_Textblock_Rectangle Evas_Textblock_Rectangle;
+   
+   struct _Evas_Textblock_Rectangle
+     {
+       Evas_Coord x, y, w, h;
+     };
+   
+   typedef enum _Evas_Textblock_Text_Type
+     {
+       EVAS_TEXTBLOCK_TEXT_RAW,
+       EVAS_TEXTBLOCK_TEXT_PLAIN
+     } Evas_Textblock_Text_Type;
+   
+   EAPI Evas_Object                 *evas_object_textblock_add(Evas *e);
+   
+   EAPI Evas_Textblock_Style        *evas_textblock_style_new(void);
+   EAPI void                         evas_textblock_style_free(Evas_Textblock_Style *ts);
+   EAPI void                         evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text);
+   EAPI const char                  *evas_textblock_style_get(const Evas_Textblock_Style *ts);
+   
+   EAPI void                         evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts);
+   EAPI const Evas_Textblock_Style  *evas_object_textblock_style_get(const Evas_Object *obj);
+   
+   EAPI void                         evas_object_textblock_text_markup_set(Evas_Object *obj, const char *text);
+   EAPI const char                  *evas_object_textblock_text_markup_get(const Evas_Object *obj);
+    
+   EAPI const Evas_Textblock_Cursor *evas_object_textblock_cursor_get(const Evas_Object *obj);
+   EAPI Evas_Textblock_Cursor       *evas_object_textblock_cursor_new(Evas_Object *obj);
+   
+   EAPI void                         evas_textblock_cursor_free(Evas_Textblock_Cursor *cur);
+   
+   EAPI void                         evas_textblock_cursor_node_first(Evas_Textblock_Cursor *cur);
+   EAPI void                         evas_textblock_cursor_node_last(Evas_Textblock_Cursor *cur);
+   EAPI Evas_Bool                    evas_textblock_cursor_node_next(Evas_Textblock_Cursor *cur);
+   EAPI Evas_Bool                    evas_textblock_cursor_node_prev(Evas_Textblock_Cursor *cur);
+   EAPI Evas_Bool                    evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur);
+   EAPI Evas_Bool                    evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur);
+   EAPI void                         evas_textblock_cursor_char_first(Evas_Textblock_Cursor *cur);
+   EAPI void                         evas_textblock_cursor_char_last(Evas_Textblock_Cursor *cur);
+   EAPI void                         evas_textblock_cursor_line_first(Evas_Textblock_Cursor *cur);
+   EAPI void                         evas_textblock_cursor_line_last(Evas_Textblock_Cursor *cur);
+   EAPI int                          evas_textblock_cursor_pos_get(const Evas_Textblock_Cursor *cur);
+   EAPI void                         evas_textblock_cursor_pos_set(Evas_Textblock_Cursor *cur, int pos);
+   EAPI Evas_Bool                    evas_textblock_cursor_line_set(Evas_Textblock_Cursor *cur, int line);
+   EAPI int                          evas_textblock_cursor_compare(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2);
+   EAPI void                         evas_textblock_cursor_copy(const Evas_Textblock_Cursor *cur, Evas_Textblock_Cursor *cur_dest);
+   
+   EAPI void                         evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *text);
+   EAPI void                         evas_textblock_cursor_text_prepend(Evas_Textblock_Cursor *cur, const char *text);
+
+   EAPI void                         evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *format);
+   EAPI void                         evas_textblock_cursor_format_prepend(Evas_Textblock_Cursor *cur, const char *format);
+   EAPI void                         evas_textblock_cursor_node_delete(Evas_Textblock_Cursor *cur);
+   EAPI void                         evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur);
+   EAPI void                         evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_Cursor *cur2);
+   
+   EAPI const char                  *evas_textblock_cursor_node_text_get(const Evas_Textblock_Cursor *cur);
+   EAPI int                          evas_textblock_cursor_node_text_length_get(const Evas_Textblock_Cursor *cur);
+   EAPI const char                  *evas_textblock_cursor_node_format_get(const Evas_Textblock_Cursor *cur);
+   EAPI char                        *evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format);
+       
+   EAPI int                          evas_textblock_cursor_char_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch);
+   EAPI int                          evas_textblock_cursor_line_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch);
+   EAPI Evas_Bool                    evas_textblock_cursor_char_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y);
+   EAPI int                          evas_textblock_cursor_line_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord y);
+   EAPI Evas_List                   *evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2);
+   
+   EAPI Evas_Bool                    evas_object_textblock_line_number_geometry_get(const Evas_Object *obj, int line, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch);
+   EAPI void                         evas_object_textblock_clear(Evas_Object *obj);
+   EAPI void                         evas_object_textblock_size_formatted_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+   EAPI void                         evas_object_textblock_size_native_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+   EAPI void                         evas_object_textblock_style_insets_get(const Evas_Object *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b);
+   
+   
+/* general objects */
+   EAPI void              evas_object_del                   (Evas_Object *obj);
+
+   EAPI const char       *evas_object_type_get              (const Evas_Object *obj);
+
+   EAPI void              evas_object_layer_set             (Evas_Object *obj, short l);
+   EAPI short             evas_object_layer_get             (const Evas_Object *obj);
+
+   EAPI void              evas_object_raise                 (Evas_Object *obj);
+   EAPI void              evas_object_lower                 (Evas_Object *obj);
+   EAPI void              evas_object_stack_above           (Evas_Object *obj, Evas_Object *above);
+   EAPI void              evas_object_stack_below           (Evas_Object *obj, Evas_Object *below);
+   EAPI Evas_Object      *evas_object_above_get             (const Evas_Object *obj);
+   EAPI Evas_Object      *evas_object_below_get             (const Evas_Object *obj);
+   EAPI Evas_Object      *evas_object_bottom_get            (const Evas *e);
+   EAPI Evas_Object      *evas_object_top_get               (const Evas *e);
+
+   EAPI void              evas_object_move                  (Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+   EAPI void              evas_object_resize                (Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+   EAPI void              evas_object_geometry_get          (const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h);
+
+   EAPI void              evas_object_size_hint_min_get     (const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+   EAPI void              evas_object_size_hint_min_set     (Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+   EAPI void              evas_object_size_hint_max_get     (const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+   EAPI void              evas_object_size_hint_max_set     (Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+   EAPI void              evas_object_size_hint_request_get (const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h);
+   EAPI void              evas_object_size_hint_request_set (Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+   EAPI void              evas_object_size_hint_aspect_get  (const Evas_Object *obj, Evas_Aspect_Control *aspect, Evas_Coord *w, Evas_Coord *h);
+   EAPI void              evas_object_size_hint_aspect_set  (Evas_Object *obj, Evas_Aspect_Control aspect, Evas_Coord w, Evas_Coord h);
+
+   EAPI void              evas_object_show                  (Evas_Object *obj);
+   EAPI void              evas_object_hide                  (Evas_Object *obj);
+   EAPI Evas_Bool         evas_object_visible_get           (const Evas_Object *obj);
+
+   EAPI void              evas_object_render_op_set         (Evas_Object *obj, Evas_Render_Op op);
+   EAPI Evas_Render_Op    evas_object_render_op_get         (const Evas_Object *obj);
+
+   EAPI void              evas_object_anti_alias_set        (Evas_Object *obj, Evas_Bool antialias);
+   EAPI Evas_Bool         evas_object_anti_alias_get        (const Evas_Object *obj);
+
+   EAPI void              evas_object_color_set             (Evas_Object *obj, int r, int g, int b, int a);
+   EAPI void              evas_object_color_get             (const Evas_Object *obj, int *r, int *g, int *b, int *a);
+
+   EAPI void              evas_object_color_interpolation_set  (Evas_Object *obj, int color_space);
+   EAPI int               evas_object_color_interpolation_get  (const Evas_Object *obj);
+
+   EAPI void              evas_object_clip_set              (Evas_Object *obj, Evas_Object *clip);
+   EAPI Evas_Object      *evas_object_clip_get              (const Evas_Object *obj);
+   EAPI void              evas_object_clip_unset            (Evas_Object *obj);
+   EAPI const Evas_List  *evas_object_clipees_get           (const Evas_Object *obj);
+
+   EAPI void              evas_object_data_set              (Evas_Object *obj, const char *key, const void *data);
+   EAPI void             *evas_object_data_get              (const Evas_Object *obj, const char *key);
+   EAPI void             *evas_object_data_del              (Evas_Object *obj, const char *key);
+
+   EAPI void              evas_object_name_set              (Evas_Object *obj, const char *name);
+   EAPI const char       *evas_object_name_get              (const Evas_Object *obj);
+   EAPI Evas_Object      *evas_object_name_find             (const Evas *e, const char *name);
+
+   EAPI Evas             *evas_object_evas_get              (const Evas_Object *obj);
+
+   EAPI Evas_Object      *evas_object_top_at_xy_get         (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Bool include_pass_events_objects, Evas_Bool include_hidden_objects);
+   EAPI Evas_Object      *evas_object_top_at_pointer_get    (const Evas *e);
+   EAPI Evas_Object      *evas_object_top_in_rectangle_get  (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Evas_Bool include_pass_events_objects, Evas_Bool include_hidden_objects);
+
+   EAPI Evas_List        *evas_objects_at_xy_get            (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Bool include_pass_events_objects, Evas_Bool include_hidden_objects);
+   EAPI Evas_List        *evas_objects_in_rectangle_get     (const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Evas_Bool include_pass_events_objects, Evas_Bool include_hidden_objects);
+
+/* smart objects */
+   EAPI Evas_Smart       *evas_smart_new                    (const char *name, void (*func_add) (Evas_Object *obj), void (*func_del) (Evas_Object *obj), void (*func_layer_set) (Evas_Object *obj, int l), void (*func_raise) (Evas_Object *obj), void (*func_lower) (Evas_Object *obj), void (*func_stack_above) (Evas_Object *obj, Evas_Object *above), void (*func_stack_below) (Evas_Object *obj, Evas_Object *below), void (*func_move) (Evas_Object *obj, Evas_Coord x, Evas_Coord y), void (*func_resize) (Evas_Object *obj, Evas_Coord w, Evas_Coord h), void (*func_show) (Evas_Object *obj), void (*func_hide) (Evas_Object *obj), void (*func_color_set) (Evas_Object *obj, int r, int g, int b, int a), void (*func_clip_set) (Evas_Object *obj, Evas_Object *clip), void (*func_clip_unset) (Evas_Object *obj), const void *data);
+   EAPI void              evas_smart_free                   (Evas_Smart *s);
+   EAPI Evas_Smart       *evas_smart_class_new              (const Evas_Smart_Class *sc);
+   EAPI const Evas_Smart_Class *evas_smart_class_get        (const Evas_Smart *s);
+
+   EAPI void             *evas_smart_data_get               (const Evas_Smart *s);
+
+   EAPI Evas_Object      *evas_object_smart_add             (Evas *e, Evas_Smart *s);
+   EAPI void              evas_object_smart_member_add      (Evas_Object *obj, Evas_Object *smart_obj);
+   EAPI void              evas_object_smart_member_del      (Evas_Object *obj);
+   EAPI Evas_Object      *evas_object_smart_parent_get      (const Evas_Object *obj);
+   EAPI Evas_List        *evas_object_smart_members_get     (const Evas_Object *obj);
+   EAPI Evas_Smart       *evas_object_smart_smart_get       (const Evas_Object *obj);
+   EAPI void             *evas_object_smart_data_get        (const Evas_Object *obj);
+   EAPI void              evas_object_smart_data_set        (Evas_Object *obj, void *data);
+   EAPI void              evas_object_smart_callback_add    (Evas_Object *obj, const char *event, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *data);
+   EAPI void             *evas_object_smart_callback_del    (Evas_Object *obj, const char *event, void (*func) (void *data, Evas_Object *obj, void *event_info));
+   EAPI void              evas_object_smart_callback_call   (Evas_Object *obj, const char *event, void *event_info);
+
+/* events */
+   EAPI void              evas_event_freeze                 (Evas *e);
+   EAPI void              evas_event_thaw                   (Evas *e);
+   EAPI int               evas_event_freeze_get             (const Evas *e);
+   EAPI void              evas_event_feed_mouse_down        (Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data);
+   EAPI void              evas_event_feed_mouse_up          (Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data);
+   EAPI void              evas_event_feed_mouse_move        (Evas *e, int x, int y, unsigned int timestamp, const void *data);
+   EAPI void              evas_event_feed_mouse_in          (Evas *e, unsigned int timestamp, const void *data);
+   EAPI void              evas_event_feed_mouse_out         (Evas *e, unsigned int timestamp, const void *data);
+   EAPI void              evas_event_feed_mouse_cancel      (Evas *e, unsigned int timestamp, const void *data);
+   EAPI void              evas_event_feed_mouse_wheel       (Evas *e, int direction, int z, unsigned int timestamp, const void *data);
+   EAPI void              evas_event_feed_key_down          (Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data);
+   EAPI void              evas_event_feed_key_up            (Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data);
+   EAPI void              evas_event_feed_hold              (Evas *e, int hold, unsigned int timestamp, const void *data);
+
+   EAPI void              evas_object_focus_set             (Evas_Object *obj, Evas_Bool focus);
+   EAPI Evas_Bool         evas_object_focus_get             (const Evas_Object *obj);
+
+   EAPI Evas_Object      *evas_focus_get                    (const Evas *e);
+
+   EAPI const Evas_Modifier *evas_key_modifier_get             (const Evas *e);
+   EAPI const Evas_Lock     *evas_key_lock_get                 (const Evas *e);
+
+   EAPI Evas_Bool         evas_key_modifier_is_set          (const Evas_Modifier *m, const char *keyname);
+
+   EAPI Evas_Bool         evas_key_lock_is_set              (const Evas_Lock *l, const char *keyname);
+
+   EAPI void              evas_key_modifier_add             (Evas *e, const char *keyname);
+   EAPI void              evas_key_modifier_del             (Evas *e, const char *keyname);
+   EAPI void              evas_key_lock_add                 (Evas *e, const char *keyname);
+   EAPI void              evas_key_lock_del                 (Evas *e, const char *keyname);
+
+   EAPI void              evas_key_modifier_on              (Evas *e, const char *keyname);
+   EAPI void              evas_key_modifier_off             (Evas *e, const char *keyname);
+   EAPI void              evas_key_lock_on                  (Evas *e, const char *keyname);
+   EAPI void              evas_key_lock_off                 (Evas *e, const char *keyname);
+
+   EAPI Evas_Modifier_Mask evas_key_modifier_mask_get       (const Evas *e, const char *keyname);
+
+   EAPI Evas_Bool         evas_object_key_grab              (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Evas_Bool exclusive);
+   EAPI void              evas_object_key_ungrab            (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers);
+
+   EAPI void              evas_object_pass_events_set       (Evas_Object *obj, Evas_Bool pass);
+   EAPI Evas_Bool         evas_object_pass_events_get       (const Evas_Object *obj);
+   EAPI void              evas_object_repeat_events_set     (Evas_Object *obj, Evas_Bool repeat);
+   EAPI Evas_Bool         evas_object_repeat_events_get     (const Evas_Object *obj);
+   EAPI void              evas_object_propagate_events_set  (Evas_Object *obj, Evas_Bool prop);
+   EAPI Evas_Bool         evas_object_propagate_events_get  (const Evas_Object *obj);
+   EAPI void              evas_object_pointer_mode_set      (Evas_Object *obj, Evas_Object_Pointer_Mode setting);
+   EAPI Evas_Object_Pointer_Mode evas_object_pointer_mode_get(const Evas_Object *obj);
+
+       
+   EAPI void              evas_object_precise_is_inside_set (Evas_Object *obj, Evas_Bool precise);
+   EAPI Evas_Bool         evas_object_precise_is_inside_get (const Evas_Object *obj);
+
+   EAPI void              evas_object_event_callback_add    (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data);
+   EAPI void             *evas_object_event_callback_del    (Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info));
+   EAPI void             *evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data);
+
+   EAPI int              evas_async_events_fd_get          (void);
+   EAPI int              evas_async_events_process         (void);
+   EAPI Evas_Bool        evas_async_events_put             (void *target, Evas_Callback_Type type, void *event_info, void (*func)(void *target, Evas_Callback_Type type, void *event_info));
+
+   EAPI void              evas_object_intercept_show_callback_add        (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data);
+   EAPI void             *evas_object_intercept_show_callback_del        (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
+   EAPI void              evas_object_intercept_hide_callback_add        (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data);
+   EAPI void             *evas_object_intercept_hide_callback_del        (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
+   EAPI void              evas_object_intercept_move_callback_add        (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y), const void *data);
+   EAPI void             *evas_object_intercept_move_callback_del        (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y));
+   EAPI void              evas_object_intercept_resize_callback_add      (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord w, Evas_Coord h), const void *data);
+   EAPI void             *evas_object_intercept_resize_callback_del      (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord w, Evas_Coord h));
+   EAPI void              evas_object_intercept_raise_callback_add       (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data);
+   EAPI void             *evas_object_intercept_raise_callback_del       (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
+   EAPI void              evas_object_intercept_lower_callback_add       (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data);
+   EAPI void             *evas_object_intercept_lower_callback_del       (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
+   EAPI void              evas_object_intercept_stack_above_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above), const void *data);
+   EAPI void             *evas_object_intercept_stack_above_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above));
+   EAPI void              evas_object_intercept_stack_below_callback_add (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below), const void *data);
+   EAPI void             *evas_object_intercept_stack_below_callback_del (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below));
+   EAPI void              evas_object_intercept_layer_set_callback_add   (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l), const void *data);
+   EAPI void             *evas_object_intercept_layer_set_callback_del   (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l));
+   EAPI void              evas_object_intercept_color_set_callback_add   (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int r, int g, int b, int a), const void *data);
+   EAPI void             *evas_object_intercept_color_set_callback_del   (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int r, int g, int b, int a));
+   EAPI void              evas_object_intercept_clip_set_callback_add    (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *clip), const void *data);
+   EAPI void             *evas_object_intercept_clip_set_callback_del    (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *clip));
+   EAPI void              evas_object_intercept_clip_unset_callback_add  (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data);
+   EAPI void             *evas_object_intercept_clip_unset_callback_del  (Evas_Object *obj, void (*func) (void *data, Evas_Object *obj));
+
+/* Evas utility routines for color space conversions */
+/* hsv color space has h in the range 0.0 to 360.0, and s,v in the range 0.0 to 1.0 */
+/* rgb color space has r,g,b in the range 0 to 255 */
+   EAPI void              evas_color_hsv_to_rgb             (float h, float s, float v, int *r, int *g, int *b);
+   EAPI void              evas_color_rgb_to_hsv             (int r, int g, int b, float *h, float *s, float *v);
+
+/* argb color space has a,r,g,b in the range 0 to 255 */
+   EAPI void              evas_color_argb_premul            (int a, int *r, int *g, int *b);
+   EAPI void              evas_color_argb_unpremul          (int a, int *r, int *g, int *b);
+
+   EAPI void              evas_data_argb_premul             (unsigned int *data, unsigned int len);
+   EAPI void              evas_data_argb_unpremul           (unsigned int *data, unsigned int len);
+
+/* Evas imaging api - exports some of the comon gfx engine routines */
+/* this is not complete and should be considered experimental. use at your */
+/* own risk */
+
+   typedef struct _Evas_Imaging_Image Evas_Imaging_Image;
+   typedef struct _Evas_Imaging_Font Evas_Imaging_Font;
+
+   EAPI Evas_Imaging_Image *evas_imaging_image_load      (const char *file, const char *key);
+   EAPI void                evas_imaging_image_free      (Evas_Imaging_Image *im);
+   EAPI void                evas_imaging_image_size_get  (const Evas_Imaging_Image *im, int *w, int *h);
+   EAPI Evas_Bool           evas_imaging_image_alpha_get (const Evas_Imaging_Image *im);
+   EAPI void                evas_imaging_image_cache_set (int bytes);
+   EAPI int                 evas_imaging_image_cache_get (void);
+
+   EAPI void                    evas_imaging_font_hinting_set      (Evas_Font_Hinting_Flags hinting);
+   EAPI Evas_Font_Hinting_Flags evas_imaging_font_hinting_get      (void);
+   EAPI Evas_Bool               evas_imaging_font_hinting_can_hint (Evas_Font_Hinting_Flags hinting);
+   
+   EAPI Evas_Imaging_Font  *evas_imaging_font_load                      (const char *file, const char *key, int size);
+   EAPI void                evas_imaging_font_free                      (Evas_Imaging_Font *fn);
+   EAPI int                 evas_imaging_font_ascent_get                (const Evas_Imaging_Font *fn);
+   EAPI int                 evas_imaging_font_descent_get               (const Evas_Imaging_Font *fn);
+   EAPI int                 evas_imaging_font_max_ascent_get            (const Evas_Imaging_Font *fn);
+   EAPI int                 evas_imaging_font_max_descent_get           (const Evas_Imaging_Font *fn);
+   EAPI int                 evas_imaging_font_line_advance_get          (const Evas_Imaging_Font *fn);
+   EAPI void                evas_imaging_font_string_advance_get        (const Evas_Imaging_Font *fn, char *str, int *x, int *y);
+   EAPI void                evas_imaging_font_string_size_query         (const Evas_Imaging_Font *fn, char *str, int *w, int *h);
+   EAPI int                 evas_imaging_font_string_inset_get          (const Evas_Imaging_Font *fn, char *str);
+   EAPI int                 evas_imaging_font_string_char_coords_get    (const Evas_Imaging_Font *fn, char *str, int pos, int *cx, int *cy, int *cw, int *ch);
+   EAPI int                 evas_imaging_font_string_char_at_coords_get (const Evas_Imaging_Font *fn, char *str, int x, int y, int *cx, int *cy, int *cw, int *ch);
+
+   EAPI void                evas_imaging_font_cache_set  (int bytes);
+   EAPI int                 evas_imaging_font_cache_get  (void);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/Evas_Data.h b/src/lib/Evas_Data.h
new file mode 100644 (file)
index 0000000..63b8cd3
--- /dev/null
@@ -0,0 +1,175 @@
+#ifndef _EVAS_DATA_H
+#define _EVAS_DATA_H
+
+#ifdef EAPI
+# undef EAPI
+#endif
+
+#ifdef _WIN32
+# ifdef EFL_EVAS_BUILD
+#  ifdef DLL_EXPORT
+#   define EAPI __declspec(dllexport)
+#  else
+#   define EAPI
+#  endif /* ! DLL_EXPORT */
+# else
+#  define EAPI __declspec(dllimport)
+# endif /* ! EFL_EVAS_BUILD */
+#else
+# ifdef __GNUC__
+#  if __GNUC__ >= 4
+#   define EAPI __attribute__ ((visibility("default")))
+#  else
+#   define EAPI
+#  endif
+# else
+#  define EAPI
+# endif
+#endif /* ! _WIN32 */
+
+/**
+ * @file
+ * @brief These routines are used for Evas data types.
+ */
+
+typedef unsigned char Evas_Bool;
+
+typedef struct _Evas_Array       Evas_Array;             /**< A generic vector */
+typedef struct _Evas_Array_Hash  Evas_Array_Hash;
+typedef struct _Evas_Hash        Evas_Hash;              /**< A Hash table handle */
+typedef struct _Evas_List        Evas_List;              /**< A generic linked list node handle */
+typedef struct _Evas_Object_List Evas_Object_List;
+
+
+struct _Evas_Array /** An array of data */
+{
+   void                **data;   /**< Pointer to a vector of pointer to payload */
+   unsigned int   total;  /**< Total number of slot in the vector */
+   unsigned int   count;  /**< Number of activ slot in the vector */
+   unsigned int          step;   /**< How much must we grow the vector When it is full */
+};
+
+struct _Evas_Hash
+{
+   int               population;
+   Evas_Object_List *buckets[256];
+};
+
+struct _Evas_List                             /** A linked list node */
+{
+   void      *data;                           /**< Pointer to list element payload */
+   Evas_List *next;                           /**< Next member in the list */
+   Evas_List *prev;                           /**< Previous member in the list */
+   struct _Evas_List_Accounting *accounting;  /**< Private list accounting info - don't touch */
+};
+
+struct _Evas_Object_List
+{
+   Evas_Object_List  *next, *prev;
+   Evas_Object_List  *last;
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+  /*
+   * Evas Array functions
+   */
+
+   EAPI Evas_Array *evas_array_new                  (unsigned int step);
+   EAPI void        evas_array_setup                (Evas_Array *array, unsigned int step);
+   EAPI void        evas_array_free                 (Evas_Array *array);
+   EAPI void        evas_array_append               (Evas_Array *array, void *data);
+   EAPI void       *evas_array_get                  (Evas_Array *array, unsigned int index);
+   EAPI void        evas_array_clean                (Evas_Array *array);
+   EAPI void        evas_array_flush                (Evas_Array *array);
+   EAPI void        evas_array_remove               (Evas_Array *array, Evas_Bool (*keep)(void *data, void *gdata), void *gdata);
+
+
+  /*
+   * Evas Array Hash functions
+   */
+
+   EAPI Evas_Array_Hash *evas_array_hash_new        (void);
+   EAPI void             evas_array_hash_free       (Evas_Array_Hash *hash);
+   EAPI void             evas_array_hash_add        (Evas_Array_Hash *hash, int key, int data);
+   EAPI int              evas_array_hash_search     (Evas_Array_Hash *hash, int key);
+
+
+  /*
+   * Evas Hash functions
+   */
+
+   /* FIXME: add:
+    * api to add find, del members by data, size not just string and also
+    * provide hash generation functions settable by the app
+    *
+    * do we really need this? hmmm - let me think... there may be a better way
+    */
+   EAPI Evas_Hash  *evas_hash_add                   (Evas_Hash *hash, const char *key, const void *data);
+   EAPI Evas_Hash  *evas_hash_direct_add            (Evas_Hash *hash, const char *key, const void *data);
+   EAPI Evas_Hash  *evas_hash_del                   (Evas_Hash *hash, const char *key, const void *data);
+   EAPI void       *evas_hash_find                  (const Evas_Hash *hash, const char *key);
+   EAPI void       *evas_hash_modify                (Evas_Hash *hash, const char *key, const void *data);
+   EAPI int         evas_hash_size                  (const Evas_Hash *hash);
+   EAPI void        evas_hash_free                  (Evas_Hash *hash);
+   EAPI void        evas_hash_foreach               (const Evas_Hash *hash, Evas_Bool (*func) (const Evas_Hash *hash, const char *key, void *data, void *fdata), const void *fdata);
+   EAPI int         evas_hash_alloc_error           (void);
+
+
+  /*
+   * Evas List functions
+   */
+
+   EAPI Evas_List  *evas_list_append                (Evas_List *list, const void *data);
+   EAPI Evas_List  *evas_list_prepend               (Evas_List *list, const void *data);
+   EAPI Evas_List  *evas_list_append_relative       (Evas_List *list, const void *data, const void *relative);
+   EAPI Evas_List  *evas_list_append_relative_list  (Evas_List *list, const void *data, Evas_List *relative);
+   EAPI Evas_List  *evas_list_prepend_relative      (Evas_List *list, const void *data, const void *relative);
+   EAPI Evas_List  *evas_list_prepend_relative_list (Evas_List *list, const void *data, Evas_List *relative);
+   EAPI Evas_List  *evas_list_remove                (Evas_List *list, const void *data);
+   EAPI Evas_List  *evas_list_remove_list           (Evas_List *list, Evas_List *remove_list);
+   EAPI Evas_List  *evas_list_promote_list          (Evas_List *list, Evas_List *move_list);
+   EAPI void       *evas_list_find                  (const Evas_List *list, const void *data);
+   EAPI Evas_List  *evas_list_find_list             (const Evas_List *list, const void *data);
+   EAPI Evas_List  *evas_list_free                  (Evas_List *list);
+   EAPI Evas_List  *evas_list_last                  (const Evas_List *list);
+   EAPI Evas_List  *evas_list_next                  (const Evas_List *list);
+   EAPI Evas_List  *evas_list_prev                  (const Evas_List *list);
+   EAPI void       *evas_list_data                  (const Evas_List *list);
+   EAPI int         evas_list_count                 (const Evas_List *list);
+   EAPI void       *evas_list_nth                   (const Evas_List *list, int n);
+   EAPI Evas_List  *evas_list_nth_list              (const Evas_List *list, int n);
+   EAPI Evas_List  *evas_list_reverse               (Evas_List *list);
+   EAPI Evas_List  *evas_list_sort                  (Evas_List *list, int size, int(*func)(void*,void*));
+   EAPI int         evas_list_alloc_error           (void);
+
+
+  /*
+   * Evas Object List functions
+   */
+
+   EAPI void *evas_object_list_append               (void *in_list, void *in_item);
+   EAPI void *evas_object_list_prepend              (void *in_list, void *in_item);
+   EAPI void *evas_object_list_append_relative      (void *in_list, void *in_item, void *in_relative);
+   EAPI void *evas_object_list_prepend_relative     (void *in_list, void *in_item, void *in_relative);
+   EAPI void *evas_object_list_remove               (void *in_list, void *in_item);
+   EAPI void *evas_object_list_find                 (void *in_list, void *in_item);
+
+
+  /*
+   * Evas Stringshare functions
+   */
+
+   EAPI void        evas_stringshare_init           (void);           /* not implemented */
+   EAPI void        evas_stringshare_shutdown       (void);           /* not implemented */
+   EAPI const char *evas_stringshare_add            (const char *str);
+   EAPI void        evas_stringshare_del            (const char *str);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _EVAS_DATA_H */
diff --git a/src/lib/Makefile.am b/src/lib/Makefile.am
new file mode 100644 (file)
index 0000000..ad080bf
--- /dev/null
@@ -0,0 +1,53 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+SUBDIRS = canvas data cache file engines imaging include
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-DPACKAGE_BIN_DIR=\"$(bindir)\" \
+-DPACKAGE_LIB_DIR=\"$(libdir)\" \
+-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+@FREETYPE_CFLAGS@ \
+@EET_CFLAGS@ \
+@FONTCONFIG_CFLAGS@ \
+@pthread_cflags@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+lib_LTLIBRARIES = libevas.la
+
+include_HEADERS = Evas.h Evas_Data.h
+
+libevas_la_SOURCES = main.c
+
+libevas_la_LIBADD = \
+canvas/libevas_canvas.la \
+data/libevas_data.la \
+file/libevas_file.la \
+cache/libevas_cache.la \
+imaging/libevas_imaging.la \
+engines/common/libevas_engine_common.la \
+engines/common_16/libevas_engine_common_16.la \
+-lm \
+@fnmatch_libs@ \
+@dlopen_libs@ \
+@FREETYPE_LIBS@ \
+@EET_LIBS@ \
+@FONTCONFIG_LIBS@ \
+@pthread_libs@
+
+libevas_la_DEPENDENCIES = \
+$(top_builddir)/config.h \
+canvas/libevas_canvas.la \
+data/libevas_data.la \
+file/libevas_file.la \
+cache/libevas_cache.la \
+imaging/libevas_imaging.la \
+engines/common/libevas_engine_common.la \
+engines/common_16/libevas_engine_common_16.la
+
+libevas_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -version-info @version_info@
+
diff --git a/src/lib/cache/.cvsignore b/src/lib/cache/.cvsignore
new file mode 100644 (file)
index 0000000..b477e9c
--- /dev/null
@@ -0,0 +1,6 @@
+Makefile.in
+Makefile
+.deps
+.libs
+*.la
+*.lo
diff --git a/src/lib/cache/Makefile.am b/src/lib/cache/Makefile.am
new file mode 100644 (file)
index 0000000..30b7943
--- /dev/null
@@ -0,0 +1,19 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS         = -I. \
+                      -I$(top_srcdir)/src/lib \
+                      -I$(top_srcdir)/src/lib/include \
+                      -DPACKAGE_BIN_DIR=\"$(bindir)\" \
+                      -DPACKAGE_LIB_DIR=\"$(libdir)\" \
+                      -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+                      @FREETYPE_CFLAGS@
+
+noinst_LTLIBRARIES      = libevas_cache.la
+libevas_cache_la_SOURCES  = \
+evas_cache_image.c \
+evas_cache_engine_image.c
+
+libevas_cache_la_DEPENDENCIES = $(top_builddir)/config.h
+
+EXTRA_DIST = evas_cache.h
diff --git a/src/lib/cache/evas_cache.h b/src/lib/cache/evas_cache.h
new file mode 100644 (file)
index 0000000..51ffc46
--- /dev/null
@@ -0,0 +1,163 @@
+#ifndef _EVAS_CACHE_H
+#define _EVAS_CACHE_H
+
+
+typedef struct _Evas_Cache_Image                Evas_Cache_Image;
+typedef struct _Evas_Cache_Image_Func           Evas_Cache_Image_Func;
+typedef struct _Evas_Cache_Engine_Image         Evas_Cache_Engine_Image;
+typedef struct _Evas_Cache_Engine_Image_Func    Evas_Cache_Engine_Image_Func;
+
+
+struct _Evas_Cache_Image_Func
+{
+   Image_Entry *(*alloc)(void);
+   void         (*dealloc)(Image_Entry *im);
+
+   /* The cache provide some helpers for surface manipulation. */
+   int          (*surface_alloc)(Image_Entry *im, int w, int h);
+   void         (*surface_delete)(Image_Entry *im);
+   DATA32      *(*surface_pixels)(Image_Entry *im);
+
+   /* The cache is doing the allocation and deallocation, you must just do the rest. */
+   int          (*constructor)(Image_Entry *im);
+   void         (*destructor)(Image_Entry *im);
+
+   void         (*dirty_region)(Image_Entry *im, int x, int y, int w, int h);
+   /* Only called when references > 0. Need to provide a fresh copie of im. */
+   /* The destination surface does have a surface, but no allocated pixel data. */
+   int          (*dirty)(Image_Entry *dst, const Image_Entry *src);
+   /* Only called when references == 1. We will call drop on `im'. */
+   /* The destination surface does not have any surface. */
+   int          (*size_set)(Image_Entry *dst, const Image_Entry *src, int w, int h);
+
+   /* The destination surface does not have any surface. */
+   int          (*copied_data)(Image_Entry *dst, int w, int h, DATA32 *image_data, int alpha, int cspace);
+   /* The destination surface does not have any surface. */
+   int          (*data)(Image_Entry *dst, int w, int h, DATA32 *image_data, int alpha, int cspace);
+   int          (*color_space)(Image_Entry *dst, int cspace);
+
+   /* This function need to update im->w and im->h. */
+   int          (*load)(Image_Entry *im);
+   int          (*mem_size_get)(Image_Entry *im);
+   void         (*debug)(const char *context, Image_Entry *im);
+};
+
+struct _Evas_Cache_Image
+{
+   Evas_Cache_Image_Func         func;
+
+   Evas_Object_List             *dirty;
+
+   Evas_Object_List             *lru;
+   Evas_Object_List             *lru_nodata;
+   Evas_Hash                    *inactiv;
+   Evas_Hash                    *activ;
+   void                         *data;
+
+   int                           usage;
+   int                           limit;
+   int                           references;
+};
+
+struct _Evas_Cache_Engine_Image_Func
+{
+   /* Must return a char* allocated with evas_stringshare_add. */
+   char*                (*key)(Image_Entry *im, const char *file, const char *key, RGBA_Image_Loadopts *lo, int *error);
+
+   Engine_Image_Entry*  (*alloc)(void);
+   void                 (*dealloc)(Engine_Image_Entry *eim);
+
+   int                  (*constructor)(Engine_Image_Entry *eim, void* data);
+   void                 (*destructor)(Engine_Image_Entry *eim);
+
+   void                 (*dirty_region)(Engine_Image_Entry *eim, int x, int y, int w, int h);
+   /* Only called when references > 0. Need to provide a fresh copie of im. */
+   int                  (*dirty)(Engine_Image_Entry *dst, const Engine_Image_Entry *src);
+   /* Only called when references == 1. We will call drop on `im'. */
+   int                  (*size_set)(Engine_Image_Entry *dst, const Engine_Image_Entry *src);
+
+   int                  (*update_data)(Engine_Image_Entry* dst, void* data);
+
+   void                 (*load)(Engine_Image_Entry *eim, const Image_Entry* im);
+   int                  (*mem_size_get)(Engine_Image_Entry *eim);
+   void                 (*debug)(const char* context, Engine_Image_Entry *eim);
+};
+
+struct _Evas_Cache_Engine_Image
+{
+   Evas_Cache_Engine_Image_Func func;
+
+   Evas_Object_List*            dirty;
+
+   Evas_Hash*                   activ;
+   Evas_Hash*                   inactiv;
+   Evas_Object_List*            lru;
+
+   Evas_Cache_Image*            parent;
+   Evas_Cache_Engine_Image*     brother;
+
+   int                          usage;
+   int                          limit;
+
+   int                          references;
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+EAPI Evas_Cache_Image*        evas_cache_image_init(const Evas_Cache_Image_Func *cb);
+EAPI void                     evas_cache_image_shutdown(Evas_Cache_Image *cache);
+EAPI Image_Entry*             evas_cache_image_request(Evas_Cache_Image *cache, const char *file, const char *key, RGBA_Image_Loadopts *lo, int *error);
+EAPI void                     evas_cache_image_drop(Image_Entry *im);
+EAPI void                     evas_cache_image_data_not_needed(Image_Entry *im);
+EAPI int                      evas_cache_image_flush(Evas_Cache_Image *cache);
+EAPI void                     evas_cache_private_set(Evas_Cache_Image *cache, const void *data);
+EAPI void*                    evas_cache_private_get(Evas_Cache_Image *cache);
+EAPI void*                    evas_cache_private_from_image_entry_get(Image_Entry *im);
+
+EAPI int                      evas_cache_image_usage_get(Evas_Cache_Image *cache);
+EAPI int                      evas_cache_image_get(Evas_Cache_Image *cache);
+EAPI void                     evas_cache_image_set(Evas_Cache_Image *cache, int size);
+
+EAPI Image_Entry*             evas_cache_image_alone(Image_Entry *im);
+EAPI Image_Entry*             evas_cache_image_dirty(Image_Entry *im, int x, int y, int w, int h);
+EAPI void                     evas_cache_image_load_data(Image_Entry *im);
+EAPI void                     evas_cache_image_surface_alloc(Image_Entry *im, int w, int h);
+EAPI DATA32*                  evas_cache_image_pixels(Image_Entry *im);
+EAPI Image_Entry*             evas_cache_image_copied_data(Evas_Cache_Image *cache, int w, int h, DATA32 *image_data, int alpha, int cspace);
+EAPI Image_Entry*             evas_cache_image_data(Evas_Cache_Image *cache, int w, int h, DATA32 *image_data, int alpha, int cspace);
+EAPI void                     evas_cache_image_colorspace(Image_Entry *im, int cspace);
+EAPI Image_Entry*             evas_cache_image_empty(Evas_Cache_Image *cache);
+EAPI Image_Entry*             evas_cache_image_size_set(Image_Entry *im, int w, int h);
+
+EAPI Evas_Cache_Engine_Image* evas_cache_engine_image_init(const Evas_Cache_Engine_Image_Func *cb, Evas_Cache_Image *parent);
+EAPI void                     evas_cache_engine_image_shutdown(Evas_Cache_Engine_Image *cache);
+
+EAPI void                     evas_cache_engine_image_shutdown(Evas_Cache_Engine_Image *cache);
+EAPI int                      evas_cache_engine_image_usage_get(Evas_Cache_Engine_Image *cache);
+EAPI int                      evas_cache_engine_image_get(Evas_Cache_Engine_Image *cache);
+EAPI void                     evas_cache_engine_image_set(Evas_Cache_Engine_Image *cache, int limit);
+
+EAPI Engine_Image_Entry*      evas_cache_engine_image_request(Evas_Cache_Engine_Image *cache, const char *file, const char *key, RGBA_Image_Loadopts *lo, void *engine_data, int *error);
+EAPI void                     evas_cache_engine_parent_not_needed(Engine_Image_Entry *eim);
+EAPI Engine_Image_Entry*      evas_cache_engine_image_engine(Evas_Cache_Engine_Image *cache, void *engine_data);
+EAPI void                     evas_cache_engine_image_drop(Engine_Image_Entry *eim);
+EAPI Engine_Image_Entry*      evas_cache_engine_image_alone(Engine_Image_Entry *eim, void *data);
+EAPI Engine_Image_Entry*      evas_cache_engine_image_dirty(Engine_Image_Entry *eim, int x, int y, int w, int h);
+EAPI Engine_Image_Entry*      evas_cache_engine_image_copied_data(Evas_Cache_Engine_Image *cache, int w, int h, DATA32 *image_data, int alpha, int cspace, void *engine_data);
+EAPI Engine_Image_Entry*      evas_cache_engine_image_data(Evas_Cache_Engine_Image *cache, int w, int h, DATA32 *image_data, int alpha, int cspace, void *engine_data);
+EAPI void                     evas_cache_engine_image_colorspace(Engine_Image_Entry *eim, int cspace, void *engine_data);
+EAPI Engine_Image_Entry*      evas_cache_engine_image_size_set(Engine_Image_Entry *eim, int w, int h);
+
+EAPI void                     evas_cache_engine_image_load_data(Engine_Image_Entry *eim);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _EVAS_CACHE_H */
diff --git a/src/lib/cache/evas_cache_engine_image.c b/src/lib/cache/evas_cache_engine_image.c
new file mode 100644 (file)
index 0000000..9c4ddae
--- /dev/null
@@ -0,0 +1,692 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <assert.h>
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+static void
+_evas_cache_engine_image_make_dirty(Evas_Cache_Engine_Image *cache,
+                                    Engine_Image_Entry *eim)
+{
+   eim->flags.cached = 1;
+   eim->flags.dirty = 1;
+   eim->flags.loaded = 1;
+   eim->flags.activ = 0;
+   cache->dirty = evas_object_list_prepend(cache->dirty, eim);
+}
+
+static void
+_evas_cache_engine_image_make_active(Evas_Cache_Engine_Image *cache,
+                                     Engine_Image_Entry *eim,
+                                     const char *key)
+{
+   eim->flags.cached = 1;
+   eim->flags.activ = 1;
+   eim->flags.dirty = 0;
+   cache->activ = evas_hash_add(cache->activ, key, eim);
+}
+
+static void
+_evas_cache_engine_image_make_inactive(Evas_Cache_Engine_Image *cache,
+                                       Engine_Image_Entry *eim,
+                                       const char *key)
+{
+   eim->flags.cached = 1;
+   eim->flags.dirty = 0;
+   eim->flags.activ = 0;
+   cache->inactiv = evas_hash_add(cache->inactiv, key, eim);
+   cache->lru = evas_object_list_prepend(cache->lru, eim);
+   cache->usage += cache->func.mem_size_get(eim);
+}
+
+static void
+_evas_cache_engine_image_remove_activ(Evas_Cache_Engine_Image *cache,
+                                      Engine_Image_Entry *eim)
+{
+   if (eim->flags.cached)
+     {
+        if (eim->flags.dirty)
+          {
+             cache->dirty = evas_object_list_remove(cache->dirty, eim);
+          }
+        else
+          if (eim->flags.activ)
+            {
+               cache->activ = evas_hash_del(cache->activ, eim->cache_key, eim);
+            }
+          else
+            {
+               cache->usage -= cache->func.mem_size_get(eim);
+               cache->inactiv = evas_hash_del(cache->inactiv, eim->cache_key, eim);
+               cache->lru = evas_object_list_remove(cache->lru, eim);
+            }
+        eim->flags.cached = 0;
+        eim->flags.dirty = 0;
+        eim->flags.activ = 0;
+     }
+}
+
+static Engine_Image_Entry *
+_evas_cache_engine_image_alloc(Evas_Cache_Engine_Image *cache,
+                               Image_Entry *ie,
+                               const char *hkey)
+{
+   Engine_Image_Entry   *eim;
+
+   assert(cache);
+
+   if (cache->func.alloc)
+     eim = cache->func.alloc();
+   else
+     eim = malloc(sizeof (Engine_Image_Entry));
+
+   if (!eim) goto on_error;
+   memset(eim, 0, sizeof (Engine_Image_Entry));
+
+   eim->cache = cache;
+   if (ie)
+     {
+        eim->w = ie->w;
+        eim->h = ie->h;
+        eim->src = ie;
+        eim->flags.need_parent = 1;
+     }
+   else
+     {
+        eim->w = -1;
+        eim->h = -1;
+        eim->flags.need_parent = 0;
+        eim->src = NULL;
+     }
+
+   eim->flags.cached = 0;
+   eim->references = 0;
+   eim->cache_key = hkey;
+
+   if (hkey)
+     _evas_cache_engine_image_make_active(cache, eim, hkey);
+   else
+     _evas_cache_engine_image_make_dirty(cache, eim);
+
+   return eim;
+
+ on_error:
+   if (eim)
+     evas_cache_engine_image_drop(eim);
+   evas_stringshare_del(hkey);
+   evas_cache_image_drop(ie);
+   return NULL;
+}
+
+static void
+_evas_cache_engine_image_dealloc(Evas_Cache_Engine_Image *cache, Engine_Image_Entry *eim)
+{
+   Image_Entry   *im;
+
+   if (cache->func.debug) cache->func.debug("delete", eim);
+
+   _evas_cache_engine_image_remove_activ(cache, eim);
+
+   im = eim->src;
+   cache->func.destructor(eim);
+   if (im) evas_cache_image_drop(im);
+
+   if (cache->func.dealloc)
+     {
+        cache->func.dealloc(eim);
+     }
+   else
+     {
+        memset(eim, 0, sizeof (Engine_Image_Entry));
+        free(eim);
+     }
+}
+
+EAPI int
+evas_cache_engine_image_usage_get(Evas_Cache_Engine_Image *cache)
+{
+   assert(cache != NULL);
+
+   return cache->usage;
+}
+
+EAPI int
+evas_cache_engine_image_get(Evas_Cache_Engine_Image *cache)
+{
+   assert(cache != NULL);
+
+   return cache->limit;
+}
+
+EAPI void
+evas_cache_engine_image_set(Evas_Cache_Engine_Image *cache, int limit)
+{
+   assert(cache != NULL);
+
+   cache->limit = limit;
+}
+
+EAPI Evas_Cache_Engine_Image *
+evas_cache_engine_image_init(const Evas_Cache_Engine_Image_Func *cb, Evas_Cache_Image *parent)
+{
+   Evas_Cache_Engine_Image     *new;
+
+   new = malloc(sizeof (Evas_Cache_Engine_Image));
+   if (!new)
+     return NULL;
+
+   new->func = *cb;
+
+   new->limit = 0;
+   new->usage = 0;
+
+   new->dirty = NULL;
+   new->lru = NULL;
+   new->activ = NULL;
+   new->inactiv = NULL;
+
+   new->parent = parent;
+   parent->references++;
+
+   new->brother = NULL;
+
+   return new;
+}
+
+EAPI Evas_Cache_Engine_Image *
+evas_cache_engine_image_dup(const Evas_Cache_Engine_Image_Func *cb, Evas_Cache_Engine_Image *brother)
+{
+   Evas_Cache_Engine_Image     *new;
+
+   new = malloc(sizeof (Evas_Cache_Engine_Image));
+   if (!new)
+     return NULL;
+
+   new->func = brother->func;
+
+#define ORD(Func) if (cb->Func) new->func.Func = cb->Func;
+
+   ORD(key);
+   ORD(constructor);
+   ORD(destructor);
+   ORD(dirty_region);
+   ORD(dirty);
+   ORD(size_set);
+   ORD(update_data);
+   ORD(load);
+   ORD(mem_size_get);
+   ORD(debug);
+
+#undef ORD
+
+   new->limit = -1;
+   new->usage = 0;
+   new->references = 1;
+
+   new->dirty = NULL;
+   new->activ = NULL;
+
+   new->parent = brother->parent;
+   new->parent->references++;
+
+   new->brother = brother;
+   brother->references++;
+
+   return new;
+}
+
+static Evas_Bool
+_evas_cache_engine_image_free_cb(const Evas_Hash *hash, const char *key, void *data, void *fdata)
+{
+   Evas_Cache_Engine_Image     *cache = fdata;
+   Engine_Image_Entry           *eim = data;
+
+   _evas_cache_engine_image_dealloc(cache, eim);
+
+   return 1;
+}
+
+EAPI void
+evas_cache_engine_image_flush(Evas_Cache_Engine_Image *cache)
+{
+   assert(cache != NULL);
+
+   while ((cache->lru) && (cache->limit < cache->usage))
+     {
+        Engine_Image_Entry      *eim;
+
+        eim = (Engine_Image_Entry *) cache->lru->last;
+        _evas_cache_engine_image_dealloc(cache, eim);
+     }
+}
+
+EAPI void
+evas_cache_engine_image_shutdown(Evas_Cache_Engine_Image *cache)
+{
+   Engine_Image_Entry   *eim;
+
+   assert(cache != NULL);
+
+   if (cache->func.debug) cache->func.debug("shutdown-engine", NULL);
+
+   evas_hash_foreach(cache->inactiv, _evas_cache_engine_image_free_cb, cache);
+   evas_hash_free(cache->inactiv);
+
+   /* This is mad, I am about to destroy image still alive, but we need to prevent leak. */
+   while (cache->dirty)
+     {
+        eim = (Engine_Image_Entry *) cache->dirty;
+        _evas_cache_engine_image_dealloc(cache, eim);
+     }
+
+   evas_hash_foreach(cache->activ, _evas_cache_engine_image_free_cb, cache);
+   evas_hash_free(cache->activ);
+
+   evas_cache_image_shutdown(cache->parent);
+   if (cache->brother)
+     evas_cache_engine_image_shutdown(cache->brother);
+   free(cache);
+}
+
+EAPI Engine_Image_Entry *
+evas_cache_engine_image_request(Evas_Cache_Engine_Image *cache,
+                                const char *file, const char *key,
+                                RGBA_Image_Loadopts *lo, void *data, int *error)
+{
+   Engine_Image_Entry   *eim;
+   Image_Entry          *im;
+   const char          *ekey;
+
+   assert(cache != NULL);
+
+   *error = -1;
+
+   ekey = NULL;
+   eim = NULL;
+
+   im = evas_cache_image_request(cache->parent, file, key, lo, error);
+   if (!im)
+     goto on_error;
+
+   if (cache->func.key)
+     ekey = cache->func.key(im, file, key, lo, data);
+   else
+     ekey = evas_stringshare_add(im->cache_key);
+   if (!ekey)
+     goto on_error;
+
+   eim = evas_hash_find(cache->activ, ekey);
+   if (eim)
+     {
+        evas_cache_image_drop(im);
+        goto on_ok;
+     }
+
+   eim = evas_hash_find(cache->inactiv, ekey);
+   if (eim)
+     {
+        _evas_cache_engine_image_remove_activ(cache, eim);
+        _evas_cache_engine_image_make_active(cache, eim, ekey);
+        evas_cache_image_drop(im);
+        goto on_ok;
+     }
+
+   eim = _evas_cache_engine_image_alloc(cache, im, ekey);
+   if (!eim) return NULL;
+
+   *error = cache->func.constructor(eim, data);
+   if (*error != 0) goto on_error;
+   if (cache->func.debug)
+     cache->func.debug("constructor-engine", eim);
+
+  on_ok:
+   eim->references++;
+   return eim;
+
+  on_error:
+   if (!eim)
+     {
+        if (im) evas_cache_image_drop(im);
+        if (ekey) evas_stringshare_del(ekey);
+     }
+   else
+     {
+        _evas_cache_engine_image_dealloc(cache, eim);
+     }
+
+   return NULL;
+}
+
+EAPI void
+evas_cache_engine_image_drop(Engine_Image_Entry *eim)
+{
+   Evas_Cache_Engine_Image     *cache;
+
+   assert(eim);
+   assert(eim->cache);
+
+   eim->references--;
+   cache = eim->cache;
+
+   if (eim->flags.dirty)
+     {
+        _evas_cache_engine_image_dealloc(cache, eim);
+        return ;
+     }
+
+   if (eim->references == 0)
+     {
+        _evas_cache_engine_image_remove_activ(cache, eim);
+        _evas_cache_engine_image_make_inactive(cache, eim, eim->cache_key);
+        evas_cache_engine_image_flush(cache);
+        return ;
+     }
+}
+
+EAPI Engine_Image_Entry *
+evas_cache_engine_image_dirty(Engine_Image_Entry *eim, int x, int y, int w, int h)
+{
+   Engine_Image_Entry           *eim_dirty = eim;
+   Image_Entry                  *im_dirty = NULL;
+   Image_Entry                  *im;
+   Evas_Cache_Engine_Image      *cache;
+   unsigned char                 alloc_eim;
+
+   assert(eim);
+   assert(eim->cache);
+
+   cache = eim->cache;
+   if (!(eim->flags.dirty))
+     {
+        alloc_eim = 0;
+
+        if (eim->flags.need_parent == 1)
+          {
+             im = eim->src;
+             im_dirty = evas_cache_image_dirty(im, x, y, w, h);
+
+             /* If im == im_dirty, this meens that we have only one reference to the eim. */
+             if (im != im_dirty)
+               {
+                  if (eim->references == 1)
+                    {
+                       _evas_cache_engine_image_remove_activ(cache, eim);
+                       _evas_cache_engine_image_make_dirty(cache, eim);
+
+                       eim->src = im_dirty;
+                    }
+                  else
+                    alloc_eim = 1;
+               }
+          }
+        else
+          if (eim->references > 1)
+            {
+               alloc_eim = 1;
+            }
+          else
+            {
+               _evas_cache_engine_image_remove_activ(cache, eim_dirty);
+               _evas_cache_engine_image_make_dirty(cache, eim_dirty);
+            }
+
+        if (alloc_eim == 1)
+          {
+             int           error;
+
+             eim_dirty = _evas_cache_engine_image_alloc(cache, im_dirty, NULL);
+             if (!eim_dirty) goto on_error;
+
+             eim_dirty->w = eim->w;
+             eim_dirty->h = eim->h;
+             eim_dirty->references = 1;
+
+             error = cache->func.dirty(eim_dirty, eim);
+             if (cache->func.debug)
+               cache->func.debug("dirty-engine", eim_dirty);
+
+             if (error != 0) goto on_error;
+
+             evas_cache_engine_image_drop(eim);
+          }
+     }
+
+   if (cache->func.dirty_region)
+     cache->func.dirty_region(eim_dirty, x, y, w, h);
+   if (cache->func.debug)
+     cache->func.debug("dirty-region-engine", eim_dirty);
+
+   return eim_dirty;
+
+  on_error:
+   if (eim) evas_cache_engine_image_drop(eim);
+   if (eim_dirty && eim_dirty != eim)
+     evas_cache_engine_image_drop(eim_dirty);
+   else
+     if (im_dirty) evas_cache_image_drop(im_dirty);
+
+   return NULL;
+}
+
+EAPI Engine_Image_Entry *
+evas_cache_engine_image_alone(Engine_Image_Entry *eim, void *data)
+{
+   Evas_Cache_Engine_Image      *cache;
+   Image_Entry                  *im;
+
+
+   assert(eim);
+   assert(eim->cache);
+
+   cache = eim->cache;
+   im = evas_cache_image_alone(eim->src);
+   if (im != eim->src)
+     {
+        eim = _evas_cache_engine_image_alloc(cache, im, NULL);
+        if (!eim) goto on_error;
+
+        eim->references = 1;
+
+        if (cache->func.constructor(eim, data)) goto on_error;
+     }
+   /* FIXME */
+   return eim;
+
+ on_error:
+   evas_cache_image_drop(im);
+   return NULL;
+}
+
+static Engine_Image_Entry *
+_evas_cache_engine_image_push_dirty(Evas_Cache_Engine_Image *cache, Image_Entry *im, void *engine_data)
+{
+   Engine_Image_Entry    *eim;
+   int                  error;
+
+   eim = _evas_cache_engine_image_alloc(cache, im, NULL);
+   if (!eim) goto on_error;
+   eim->references = 1;
+
+   error = cache->func.update_data(eim, engine_data);
+   if (cache->func.debug)
+     cache->func.debug("dirty-update_data-engine", eim);
+   if (error != 0) goto on_error;
+
+   return eim;
+
+  on_error:
+   if (eim)
+     evas_cache_engine_image_drop(eim);
+   return NULL;
+}
+
+EAPI Engine_Image_Entry *
+evas_cache_engine_image_copied_data(Evas_Cache_Engine_Image *cache, int w, int h, DATA32 *image_data, int alpha, int cspace, void *engine_data)
+{
+   Image_Entry           *im;
+
+   assert(cache);
+
+   im = evas_cache_image_copied_data(cache->parent, w, h, image_data, alpha, cspace);
+
+   return _evas_cache_engine_image_push_dirty(cache, im, engine_data);
+}
+
+EAPI Engine_Image_Entry *
+evas_cache_engine_image_data(Evas_Cache_Engine_Image *cache, int w, int h, DATA32 *image_data, int alpha, int cspace, void *engine_data)
+{
+   Image_Entry           *im;
+
+   assert(cache);
+
+   im = evas_cache_image_data(cache->parent, w, h, image_data, alpha, cspace);
+
+   return _evas_cache_engine_image_push_dirty(cache, im, engine_data);
+}
+
+EAPI Engine_Image_Entry *
+evas_cache_engine_image_size_set(Engine_Image_Entry *eim, int w, int h)
+{
+   Evas_Cache_Engine_Image      *cache;
+   Engine_Image_Entry           *new;
+   Image_Entry                  *im;
+   const char                   *hkey;
+   int                           error;
+
+   assert(eim);
+   assert(eim->cache);
+   assert(eim->references > 0);
+
+   im = NULL;
+   cache = eim->cache;
+
+   if (eim->flags.need_parent == 1)
+     {
+        assert(eim->src);
+
+        if (eim->src->w == w
+            && eim->src->h == h)
+          return eim;
+
+        im = evas_cache_image_size_set(eim->src, w, h);
+        /* FIXME: Good idea to call update_data ? */
+        if (im == eim->src) return eim;
+        eim->src = NULL;
+     }
+
+   hkey = (eim->references > 1 ) ? evas_stringshare_add(eim->cache_key) : NULL;
+
+   new = _evas_cache_engine_image_alloc(cache, im, hkey);
+   if (!new) goto on_error;
+
+   new->w = w;
+   new->h = h;
+   new->references = 1;
+
+   error = cache->func.size_set(new, eim);
+   if (error) goto on_error;
+
+   evas_cache_engine_image_drop(eim);
+   return new;
+
+  on_error:
+   if (new)
+     evas_cache_engine_image_drop(new);
+   else
+     if (im)
+       evas_cache_image_drop(im);
+   evas_cache_engine_image_drop(eim);
+
+   return NULL;
+}
+
+EAPI void
+evas_cache_engine_image_load_data(Engine_Image_Entry *eim)
+{
+   Evas_Cache_Engine_Image     *cache;
+   int                          size = 0;
+
+   assert(eim);
+   assert(eim->src);
+   assert(eim->cache);
+
+   if (eim->flags.loaded) return ;
+
+   if (eim->src)
+     evas_cache_image_load_data(eim->src);
+
+   cache = eim->cache;
+   if (cache->func.debug)
+     cache->func.debug("load-engine", eim);
+
+   if (eim->flags.dirty)
+     size = cache->func.mem_size_get(eim);
+   cache = eim->cache;
+   cache->func.load(eim, eim->src);
+   if (eim->flags.dirty)
+     cache->usage += cache->func.mem_size_get(eim) - size;
+
+   eim->flags.loaded = 1;
+}
+
+EAPI Engine_Image_Entry *
+evas_cache_engine_image_engine(Evas_Cache_Engine_Image *cache, void *engine_data)
+{
+   Engine_Image_Entry   *eim;
+   Image_Entry          *ie;
+   int                   error;
+
+   ie = evas_cache_image_empty(cache->parent);
+   if (!ie) return NULL;
+
+   eim = _evas_cache_engine_image_alloc(cache, ie, NULL);
+   if (!eim) goto on_error;
+   eim->references = 1;
+
+   error = cache->func.update_data(eim, engine_data);
+   if (cache->func.debug)
+     cache->func.debug("update_data-engine", eim);
+
+   if (error != 0) goto on_error;
+
+   return eim;
+
+  on_error:
+   if (!eim)
+     {
+        if (ie)
+          evas_cache_image_drop(ie);
+     }
+   else
+     {
+        evas_cache_engine_image_drop(eim);
+     }
+   return NULL;
+}
+
+EAPI void
+evas_cache_engine_image_colorspace(Engine_Image_Entry *eim, int cspace, void *engine_data)
+{
+   Evas_Cache_Engine_Image     *cache = eim->cache;
+
+   assert(cache);
+
+   cache->func.destructor(eim);
+   evas_cache_image_colorspace(eim->src, cspace);
+   cache->func.constructor(eim, engine_data);
+   if (cache->func.debug)
+     cache->func.debug("cosntructor-colorspace-engine", eim);
+}
+
+EAPI void
+evas_cache_engine_parent_not_needed(Engine_Image_Entry *eim)
+{
+   assert(eim);
+   assert(eim->cache);
+
+   eim->flags.need_parent = 0;
+   evas_cache_image_data_not_needed(eim->src);
+}
diff --git a/src/lib/cache/evas_cache_image.c b/src/lib/cache/evas_cache_image.c
new file mode 100644 (file)
index 0000000..cfd8ecd
--- /dev/null
@@ -0,0 +1,853 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <stdlib.h>
+#include <assert.h>
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+#define FREESTRC(Var)              \
+  if (Var)                         \
+    {                              \
+       evas_stringshare_del(Var);  \
+       Var = NULL;                 \
+    }
+
+static void _evas_cache_image_entry_delete(Evas_Cache_Image *cache, Image_Entry *ie);
+
+static void
+_evas_cache_image_make_dirty(Evas_Cache_Image *cache,
+                             Image_Entry *im)
+{
+   im->flags.cached = 1;
+   im->flags.dirty = 1;
+   im->flags.activ = 0;
+   im->flags.lru_nodata = 0;
+   cache->dirty = evas_object_list_prepend(cache->dirty, im);
+
+   if (im->cache_key)
+     {
+        evas_stringshare_del(im->cache_key);
+        im->cache_key = NULL;
+     }
+}
+
+static void
+_evas_cache_image_make_activ(Evas_Cache_Image *cache,
+                             Image_Entry *im,
+                             const char *key)
+{
+   im->cache_key = key;
+   if (key != NULL)
+     {
+        im->flags.cached = 1;
+        im->flags.activ = 1;
+        im->flags.lru_nodata = 0;
+        im->flags.dirty = 0;
+        cache->activ = evas_hash_direct_add(cache->activ, key, im);
+     }
+   else
+     {
+        _evas_cache_image_make_dirty(cache, im);
+     }
+}
+
+static void
+_evas_cache_image_make_inactiv(Evas_Cache_Image *cache,
+                               Image_Entry *im,
+                               const char *key)
+{
+   if (im->cache_key)
+     {
+       im->flags.activ = 0;
+       im->flags.dirty = 0;
+       im->flags.cached = 1;
+       cache->inactiv = evas_hash_direct_add(cache->inactiv, key, im);
+       cache->lru = evas_object_list_prepend(cache->lru, im);
+       cache->usage += cache->func.mem_size_get(im);
+     }
+   else
+     {
+       _evas_cache_image_entry_delete(cache, im);
+     }
+ }
+
+static void
+_evas_cache_image_remove_lru_nodata(Evas_Cache_Image *cache,
+                                    Image_Entry *im)
+{
+   if (im->flags.lru_nodata)
+     {
+        im->flags.lru_nodata = 0;
+        cache->lru_nodata = evas_object_list_remove(cache->lru_nodata, im);
+        cache->usage -= cache->func.mem_size_get(im);
+     }
+}
+
+static void
+_evas_cache_image_activ_lru_nodata(Evas_Cache_Image *cache,
+                                   Image_Entry *im)
+{
+   im->flags.need_data = 0;
+   im->flags.lru_nodata = 1;
+   cache->lru_nodata = evas_object_list_prepend(cache->lru_nodata, im);
+   cache->usage += cache->func.mem_size_get(im);
+}
+
+static void
+_evas_cache_image_remove_activ(Evas_Cache_Image *cache,
+                               Image_Entry *ie)
+{
+   if (ie->flags.cached)
+     {
+        if (ie->flags.activ)
+          {
+             cache->activ = evas_hash_del(cache->activ, ie->cache_key, ie);
+             _evas_cache_image_remove_lru_nodata(cache, ie);
+          }
+        else
+          {
+             if (ie->flags.dirty)
+               {
+                  cache->dirty = evas_object_list_remove(cache->dirty, ie);
+               }
+             else
+               {
+                  cache->inactiv = evas_hash_del(cache->inactiv, ie->cache_key, ie);
+                  cache->lru = evas_object_list_remove(cache->lru, ie);
+                  cache->usage -= cache->func.mem_size_get(ie);
+               }
+          }
+        ie->flags.cached = 0;
+        ie->flags.dirty = 0;
+        ie->flags.activ = 0;
+     }
+}
+
+static void
+_evas_cache_image_entry_delete(Evas_Cache_Image *cache, Image_Entry *ie)
+{
+   if (!ie) return ;
+
+   if (cache->func.debug)
+     cache->func.debug("deleting", ie);
+
+   cache->func.destructor(ie);
+
+   _evas_cache_image_remove_activ(cache, ie);
+
+   if (ie->cache_key)
+     {
+        evas_stringshare_del(ie->cache_key);
+        ie->cache_key = NULL;
+     }
+
+   FREESTRC(ie->file);
+   FREESTRC(ie->key);
+
+   cache->func.surface_delete(ie);
+   cache->func.dealloc(ie);
+}
+
+static Image_Entry *
+_evas_cache_image_entry_new(Evas_Cache_Image *cache,
+                            const char *hkey,
+                            time_t timestamp,
+                            const char *file,
+                            const char *key,
+                            RGBA_Image_Loadopts *lo,
+                            int *error)
+{
+   Image_Entry  *ie;
+   const char   *cache_key;
+
+   ie = cache->func.alloc();
+   if (!ie)
+     return NULL;
+
+   cache_key = hkey ? evas_stringshare_add(hkey) : NULL;
+
+   ie->flags.loaded = 0;
+   ie->flags.need_data = 1;
+
+   _evas_cache_image_make_activ(cache, ie, cache_key);
+
+   ie->space = EVAS_COLORSPACE_ARGB8888;
+   ie->w = -1;
+   ie->h = -1;
+   ie->allocated.w = 0;
+   ie->allocated.h = 0;
+
+   ie->references = 0;
+   ie->cache = cache;
+
+   ie->file = file ? evas_stringshare_add(file) : NULL;
+   ie->key = key ? evas_stringshare_add(key) : NULL;
+
+   ie->timestamp = timestamp;
+   ie->laststat = time(NULL);
+
+   ie->load_opts.scale_down_by = 0;
+   ie->load_opts.dpi = 0;
+   ie->load_opts.w = 0;
+   ie->load_opts.h = 0;
+   ie->scale = 1;
+
+   if (lo)
+     ie->load_opts = *lo;
+
+   if (file)
+     {
+        *error = cache->func.constructor(ie);
+        if (*error != 0)
+          {
+             _evas_cache_image_entry_delete(cache, ie);
+             return NULL;
+          }
+     }
+   if (cache->func.debug)
+     cache->func.debug("build", ie);
+
+   return ie;
+}
+
+static void
+_evas_cache_image_entry_surface_alloc(Evas_Cache_Image *cache,
+                                      Image_Entry *ie,
+                                      int w,
+                                      int h)
+{
+   int  wmin;
+   int  hmin;
+
+   wmin = w > 0 ? w : 1;
+   hmin = h > 0 ? h : 1;
+   if (ie->allocated.w == wmin && ie->allocated.h == hmin)
+     return ;
+
+   if (cache->func.surface_alloc(ie, wmin, hmin))
+     {
+        wmin = 0;
+        hmin = 0;
+     }
+   ie->w = wmin;
+   ie->h = hmin;
+   ie->allocated.w = wmin;
+   ie->allocated.h = hmin;
+}
+
+EAPI int
+evas_cache_image_usage_get(Evas_Cache_Image *cache)
+{
+   assert(cache != NULL);
+
+   return cache->usage;
+}
+
+EAPI int
+evas_cache_image_get(Evas_Cache_Image *cache)
+{
+   assert(cache != NULL);
+
+   return cache->limit;
+}
+
+EAPI void
+evas_cache_image_set(Evas_Cache_Image *cache, int limit)
+{
+   assert(cache != NULL);
+   if (cache->limit == limit) return;
+   cache->limit = limit;
+   evas_cache_image_flush(cache);
+}
+
+EAPI Evas_Cache_Image *
+evas_cache_image_init(const Evas_Cache_Image_Func *cb)
+{
+   Evas_Cache_Image    *new;
+
+   new = malloc(sizeof (Evas_Cache_Image));
+   if (!new)
+     return NULL;
+
+   new->func = *cb;
+
+   new->limit = 0;
+   new->usage = 0;
+
+   new->dirty = NULL;
+   new->lru = NULL;
+   new->lru_nodata = NULL;
+   new->inactiv = NULL;
+   new->activ = NULL;
+
+   new->references = 1;
+
+   return new;
+}
+
+static Evas_Bool
+_evas_cache_image_free_cb(const Evas_Hash *hash, const char *key, void *data, void *fdata)
+{
+   Evas_Cache_Image    *cache = fdata;
+   Image_Entry         *im = data;
+
+   _evas_cache_image_entry_delete(cache, im);
+
+   return 1;
+}
+
+EAPI void
+evas_cache_image_shutdown(Evas_Cache_Image *cache)
+{
+   Image_Entry  *im;
+
+   assert(cache != NULL);
+   cache->references--;
+
+   if (cache->references > 0)
+     return ;
+
+   while (cache->lru)
+     {
+        im = (Image_Entry *) cache->lru;
+        _evas_cache_image_entry_delete(cache, im);
+     }
+
+   while (cache->lru_nodata)
+     {
+        im = (Image_Entry *) cache->lru_nodata;
+        _evas_cache_image_entry_delete(cache, im);
+     }
+
+   /* This is mad, I am about to destroy image still alive, but we need to prevent leak. */
+   while (cache->dirty)
+     {
+        im = (Image_Entry *) cache->dirty;
+        _evas_cache_image_entry_delete(cache, im);
+     }
+
+   evas_hash_foreach(cache->activ, _evas_cache_image_free_cb, cache);
+   evas_hash_free(cache->activ);
+   evas_hash_free(cache->inactiv);
+
+   free(cache);
+}
+
+#define STAT_GAP 2
+
+EAPI Image_Entry *
+evas_cache_image_request(Evas_Cache_Image *cache, const char *file, const char *key, RGBA_Image_Loadopts *lo, int *error)
+{
+   const char           *format;
+   char                 *hkey;
+   Image_Entry          *im;
+   Evas_Image_Load_Opts  prevent;
+   int                   size;
+   int                   stat_done = 0;
+   struct stat           st;
+
+   assert(cache != NULL);
+
+   if (!file && !key) return NULL;
+   if (!file) return NULL;
+   if ((!lo) ||
+       (lo &&
+        (lo->scale_down_by == 0) &&
+        (lo->dpi = 0.0) &&
+        ((lo->w == 0) || (lo->h == 0))))
+     {
+        lo = &prevent;
+        if (key)
+          format = "%s//://%s";
+        else
+          format = "%s//://%p";
+     }
+   else
+     {
+        if (key)
+          format = "%s//://%s//@/%i/%1.5f/%ix%i";
+        else
+          format = "%s//://%p//@/%i/%1.5f/%ix%i";
+     }
+   size = strlen(file) + (key ? strlen(key) : 6) + 64;
+   hkey = alloca(sizeof (char) * size);
+   snprintf(hkey, size, format, file, key, lo->scale_down_by, lo->dpi, lo->w, lo->h);
+
+   im = evas_hash_find(cache->activ, hkey);
+   if (im)
+     {
+        time_t  t;
+        int     ok;
+
+        ok = 1;
+        t = time(NULL);
+
+        if ((t - im->laststat) > STAT_GAP)
+          {
+             stat_done = 1;
+             if (stat(file, &st) < 0) goto on_error;
+
+             im->laststat = t;
+             if (st.st_mtime != im->timestamp) ok = 0;
+          }
+        if (ok) goto on_ok;
+
+        _evas_cache_image_remove_activ(cache, im);
+       _evas_cache_image_make_dirty(cache, im);
+     }
+
+   im = evas_hash_find(cache->inactiv, hkey);
+   if (im)
+     {
+        int     ok;
+
+        ok = 1;
+        if (!stat_done)
+          {
+             time_t  t;
+
+             t = time(NULL);
+             if ((t - im->laststat) > STAT_GAP)
+               {
+                  stat_done = 1;
+                  if (stat(file, &st) < 0) goto on_error;
+
+                  im->laststat = t;
+                  if (st.st_mtime != im->timestamp) ok = 0;
+               }
+          }
+        else
+          if (st.st_mtime != im->timestamp) ok = 0;
+
+        if (ok)
+          {
+             _evas_cache_image_remove_activ(cache, im);
+             _evas_cache_image_make_activ(cache, im, im->cache_key);
+             goto on_ok;
+          }
+
+        _evas_cache_image_entry_delete(cache, im);
+     }
+
+   if (!stat_done)
+     {
+        if (stat(file, &st) < 0) return NULL;
+     }
+
+   im = _evas_cache_image_entry_new(cache, hkey, st.st_mtime, file, key, lo, error);
+   if (!im)
+     return NULL;
+
+   if (cache->func.debug)
+     cache->func.debug("request", im);
+
+ on_ok:
+   *error = 0;
+   im->references++;
+   if (im->references > 1 && im->flags.lru_nodata)
+     _evas_cache_image_remove_lru_nodata(cache, im);
+
+   return im;
+
+ on_error:
+   _evas_cache_image_entry_delete(cache, im);
+   return NULL;
+}
+
+EAPI void
+evas_cache_image_drop(Image_Entry *im)
+{
+   Evas_Cache_Image    *cache;
+
+   assert(im);
+   assert(im->cache);
+
+   im->references--;
+   cache = im->cache;
+
+   if (im->references == 0)
+     {
+       if (im->flags.dirty)
+         {
+            _evas_cache_image_entry_delete(cache, im);
+            return ;
+         }
+
+        _evas_cache_image_remove_activ(cache, im);
+       _evas_cache_image_make_inactiv(cache, im, im->cache_key);
+       evas_cache_image_flush(cache);
+     }
+}
+
+EAPI void
+evas_cache_image_data_not_needed(Image_Entry *im)
+{
+   Evas_Cache_Image    *cache;
+
+   assert(im);
+   assert(im->cache);
+
+   cache = im->cache;
+
+   if (im->references > 1) return ;
+   if (im->flags.dirty || !im->flags.need_data) return ;
+
+   _evas_cache_image_activ_lru_nodata(cache, im);
+}
+
+EAPI Image_Entry *
+evas_cache_image_dirty(Image_Entry *im, int x, int y, int w, int h)
+{
+   Image_Entry          *im_dirty = im;
+   Evas_Cache_Image     *cache;
+
+   assert(im);
+   assert(im->cache);
+
+   cache = im->cache;
+   if (!(im->flags.dirty))
+     {
+        if (im->references == 1) im_dirty = im;
+        else
+          {
+             int        error;
+
+             im_dirty = _evas_cache_image_entry_new(cache, NULL, im->timestamp, im->file, im->key, &im->load_opts, &error);
+             if (!im_dirty) goto on_error;
+
+             if (cache->func.debug)
+               cache->func.debug("dirty-src", im);
+             error = cache->func.dirty(im_dirty, im);
+             if (cache->func.debug)
+               cache->func.debug("dirty-out", im_dirty);
+
+             if (error != 0) goto on_error;
+
+             im_dirty->references = 1;
+
+             evas_cache_image_drop(im);
+          }
+
+       _evas_cache_image_remove_activ(cache, im_dirty);
+        _evas_cache_image_make_dirty(cache, im_dirty);
+     }
+
+   if (cache->func.debug)
+     cache->func.debug("dirty-region", im_dirty);
+   if (cache->func.dirty_region)
+     cache->func.dirty_region(im_dirty, x, y, w, h);
+
+   return im_dirty;
+
+ on_error:
+   if (im_dirty) _evas_cache_image_entry_delete(cache, im_dirty);
+   evas_cache_image_drop(im);
+   return NULL;
+}
+
+EAPI Image_Entry *
+evas_cache_image_alone(Image_Entry *im)
+{
+   Evas_Cache_Image     *cache;
+   Image_Entry          *im_dirty = im;
+
+   assert(im);
+   assert(im->cache);
+
+   cache = im->cache;
+   if (im->references == 1)
+     {
+        if (!(im->flags.dirty))
+          {
+             _evas_cache_image_remove_activ(cache, im);
+             _evas_cache_image_make_dirty(cache, im);
+          }
+     }
+   else
+     {
+        int     error;
+
+        im_dirty = _evas_cache_image_entry_new(cache, NULL, im->timestamp, im->file, im->key, &im->load_opts, &error);
+        if (!im_dirty) goto on_error;
+
+        if (cache->func.debug)
+          cache->func.debug("dirty-src", im);
+        error = cache->func.dirty(im_dirty, im);
+        if (cache->func.debug)
+          cache->func.debug("dirty-out", im_dirty);
+
+        if (error != 0) goto on_error;
+
+        im_dirty->references = 1;
+
+        evas_cache_image_drop(im);
+     }
+
+   return im_dirty;
+   
+   on_error:
+   if (im_dirty) _evas_cache_image_entry_delete(cache, im_dirty);
+   evas_cache_image_drop(im);
+   return NULL;
+}
+
+EAPI Image_Entry *
+evas_cache_image_copied_data(Evas_Cache_Image *cache, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Image_Entry  *im;
+
+   assert(cache);
+
+   if ((cspace == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (cspace == EVAS_COLORSPACE_YCBCR422P709_PL))
+     w &= ~0x1;
+
+   im = _evas_cache_image_entry_new(cache, NULL, 0, NULL, NULL, NULL, NULL);
+   if (!im) return NULL;
+
+   im->space = cspace;
+   im->flags.alpha = alpha;
+
+   _evas_cache_image_entry_surface_alloc(cache, im, w, h);
+
+   if (cache->func.copied_data(im, w, h, image_data, alpha, cspace) != 0)
+     {
+        _evas_cache_image_entry_delete(cache, im);
+        return NULL;
+     }
+   im->references = 1;
+
+   if (cache->func.debug)
+     cache->func.debug("copied-data", im);
+   return im;
+}
+
+EAPI Image_Entry *
+evas_cache_image_data(Evas_Cache_Image *cache, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Image_Entry  *im;
+
+   assert(cache);
+
+   if ((cspace == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (cspace == EVAS_COLORSPACE_YCBCR422P709_PL))
+     w &= ~0x1;
+
+   im = _evas_cache_image_entry_new(cache, NULL, 0, NULL, NULL, NULL, NULL);
+   im->w = w;
+   im->h = h;
+   im->flags.alpha = alpha;
+
+   if (cache->func.data(im, w, h, image_data, alpha, cspace) != 0)
+     {
+        _evas_cache_image_entry_delete(cache, im);
+        return NULL;
+     }
+   im->references = 1;
+
+   if (cache->func.debug)
+     cache->func.debug("data", im);
+   return im;
+}
+
+EAPI void
+evas_cache_image_surface_alloc(Image_Entry *im, int w, int h)
+{
+   Evas_Cache_Image     *cache;
+
+   assert(im);
+   assert(im->cache);
+
+   cache = im->cache;
+
+   if ((im->space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (im->space == EVAS_COLORSPACE_YCBCR422P709_PL))
+     w &= ~0x1;
+
+   _evas_cache_image_entry_surface_alloc(cache, im, w, h);
+
+   if (cache->func.debug)
+     cache->func.debug("surface-alloc", im);
+}
+
+EAPI Image_Entry *
+evas_cache_image_size_set(Image_Entry *im, int w, int h)
+{
+   Evas_Cache_Image    *cache;
+   Image_Entry         *new;
+   int                  error;
+
+   assert(im);
+   assert(im->cache);
+   assert(im->references > 0);
+
+   if ((im->space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (im->space == EVAS_COLORSPACE_YCBCR422P709_PL))
+     w &= ~0x1;
+
+   if ((im->w == w) && (im->h == h))
+     return im;
+
+   cache = im->cache;
+
+   new = _evas_cache_image_entry_new(cache, NULL, 0, NULL, NULL, NULL, &error);
+   if (!new) goto on_error;
+
+   new->flags.alpha = im->flags.alpha;
+   new->space = im->space;
+   new->load_opts = im->load_opts;
+
+   _evas_cache_image_entry_surface_alloc(cache, new, w, h);
+
+   error = cache->func.size_set(new, im, w, h);
+   if (error != 0) goto on_error;
+
+   new->references = 1;
+
+   evas_cache_image_drop(im);
+
+   if (cache->func.debug)
+     cache->func.debug("size_set", new);
+
+   return new;
+
+ on_error:
+   if (new) _evas_cache_image_entry_delete(cache, new);
+   evas_cache_image_drop(im);
+   return NULL;
+}
+
+EAPI void
+evas_cache_image_load_data(Image_Entry *im)
+{
+   Evas_Cache_Image    *cache;
+   int                  error;
+
+   assert(im);
+   assert(im->cache);
+
+   if (im->flags.loaded) return ;
+
+   cache = im->cache;
+
+   error = cache->func.load(im);
+
+   if (cache->func.debug)
+     cache->func.debug("load", im);
+
+   if (error)
+     {
+        _evas_cache_image_entry_surface_alloc(cache, im, im->w, im->h);
+        im->flags.loaded = 0;
+
+        return ;
+     }
+
+   im->flags.loaded = 1;
+}
+
+EAPI int
+evas_cache_image_flush(Evas_Cache_Image *cache)
+{
+   assert(cache);
+
+//   printf("cache->limit = %i (used = %i)\n", cache->limit, cache->usage);
+   if (cache->limit == -1)
+     return -1;
+
+   while ((cache->lru) && (cache->limit < cache->usage))
+     {
+        Image_Entry     *im;
+
+        im = (Image_Entry *) cache->lru->last;
+        _evas_cache_image_entry_delete(cache, im);
+     }
+
+   while ((cache->lru_nodata) && (cache->limit < cache->usage))
+     {
+        Image_Entry     *im;
+
+        im = (Image_Entry *) cache->lru_nodata->last;
+        _evas_cache_image_remove_lru_nodata(cache, im);
+
+        cache->func.surface_delete(im);
+
+        im->flags.loaded = 0;
+     }
+
+   return cache->usage;
+}
+
+EAPI Image_Entry *
+evas_cache_image_empty(Evas_Cache_Image *cache)
+{
+   Image_Entry  *new;
+
+   new = _evas_cache_image_entry_new(cache, NULL, 0, NULL, NULL, NULL, NULL);
+   if (!new) return NULL;
+
+   new->references = 1;
+
+   return new;
+}
+
+EAPI void
+evas_cache_image_colorspace(Image_Entry *im, int cspace)
+{
+   Evas_Cache_Image    *cache;
+
+   assert(im);
+   assert(im->cache);
+
+   cache = im->cache;
+
+   if (im->space == cspace) return ;
+
+   im->space = cspace;
+   cache->func.color_space(im, cspace);
+}
+
+EAPI void *
+evas_cache_private_from_image_entry_get(Image_Entry *im)
+{
+   Evas_Cache_Image    *cache;
+
+   assert(im);
+   assert(im->cache);
+
+   cache = im->cache;
+
+   return (void*) cache->data;
+}
+
+EAPI void *
+evas_cache_private_get(Evas_Cache_Image *cache)
+{
+   assert(cache);
+
+   return cache->data;
+}
+
+EAPI void
+evas_cache_private_set(Evas_Cache_Image *cache, const void *data)
+{
+   assert(cache);
+
+   cache->data = data;
+}
+
+EAPI DATA32 *
+evas_cache_image_pixels(Image_Entry *im)
+{
+   Evas_Cache_Image    *cache;
+
+   assert(im);
+   assert(im->cache);
+
+   cache = im->cache;
+
+   return cache->func.surface_pixels(im);
+}
diff --git a/src/lib/canvas/.cvsignore b/src/lib/canvas/.cvsignore
new file mode 100644 (file)
index 0000000..3923fb5
--- /dev/null
@@ -0,0 +1,6 @@
+Makefile.in
+Makefile
+.deps
+.libs
+libevas_canvas.la
+*.lo
diff --git a/src/lib/canvas/Makefile.am b/src/lib/canvas/Makefile.am
new file mode 100644 (file)
index 0000000..db66ba6
--- /dev/null
@@ -0,0 +1,43 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS         = -I. \
+                      -I$(top_srcdir)/src/lib \
+                      -I$(top_srcdir)/src/lib/include \
+                      -DPACKAGE_BIN_DIR=\"$(bindir)\" \
+                      -DPACKAGE_LIB_DIR=\"$(libdir)\" \
+                      -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+                      @FREETYPE_CFLAGS@ @EET_CFLAGS@ \
+                      @FONTCONFIG_CFLAGS@
+
+noinst_LTLIBRARIES   = libevas_canvas.la
+libevas_canvas_la_SOURCES  = \
+evas_callbacks.c \
+evas_clip.c \
+evas_data.c \
+evas_events.c \
+evas_focus.c \
+evas_key.c \
+evas_key_grab.c \
+evas_layer.c \
+evas_main.c \
+evas_name.c \
+evas_object_gradient.c \
+evas_object_image.c \
+evas_object_main.c \
+evas_object_inform.c \
+evas_object_intercept.c \
+evas_object_line.c \
+evas_object_polygon.c \
+evas_object_rectangle.c \
+evas_object_smart.c \
+evas_object_text.c \
+evas_object_textblock.c \
+evas_font_dir.c \
+evas_rectangle.c \
+evas_render.c \
+evas_smart.c \
+evas_stack.c \
+evas_async_events.c
+
+libevas_canvas_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/lib/canvas/evas_async_events.c b/src/lib/canvas/evas_async_events.c
new file mode 100644 (file)
index 0000000..e038450
--- /dev/null
@@ -0,0 +1,169 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#ifdef BUILD_ASYNC_EVENTS
+
+#include <unistd.h>
+#include <fcntl.h>
+#include <pthread.h>
+#include <errno.h>
+
+static int _fd_write = -1;
+static int _fd_read = -1;
+
+static int _init_evas_event = 0;
+static pthread_mutex_t _mutex = PTHREAD_MUTEX_INITIALIZER;
+
+typedef struct _Evas_Event_Async       Evas_Event_Async;
+struct _Evas_Event_Async
+{
+   void                        (*func)(void *target, Evas_Callback_Type type, void *event_info);
+   void                         *target;
+   Evas_Callback_Type    type;
+   void                         *event_info;
+};
+
+#endif
+
+int
+evas_async_events_init(void)
+{
+#ifdef BUILD_ASYNC_EVENTS
+   int filedes[2];
+
+   _init_evas_event++;
+   if (_init_evas_event > 1) return _init_evas_event;
+
+   if (pipe(filedes) == -1)
+     {
+       _init_evas_event = 0;
+       return 0;
+     }
+
+   _fd_read = filedes[0];
+   _fd_write = filedes[1];
+
+   fcntl(_fd_read, F_SETFL, O_NONBLOCK);
+
+   return _init_evas_event;
+#else
+   return 0;
+#endif
+}
+
+int
+evas_async_events_shutdown(void)
+{
+#ifdef BUILD_ASYNC_EVENTS
+   _init_evas_event--;
+   if (_init_evas_event > 0) return _init_evas_event;
+
+   close(_fd_read);
+   close(_fd_write);
+   _fd_read = -1;
+   _fd_write = -1;
+
+   return _init_evas_event;
+#else
+   return 0;
+#endif
+}
+
+EAPI int
+evas_async_events_fd_get(void)
+{
+#ifdef BUILD_ASYNC_EVENTS
+   return _fd_read;
+#else
+   return -1;
+#endif
+}
+
+EAPI int
+evas_async_events_process(void)
+{
+#ifdef BUILD_ASYNC_EVENTS
+   static Evas_Event_Async current;
+   static int size = 0;
+   int check;
+   int count = 0;
+
+   if (_fd_read == -1) return 0;
+
+   do
+     {
+       check = read(_fd_read, ((char*) &current) + size, sizeof(current) - size);
+
+       if (check > 0)
+         {
+            size += check;
+            if (size == sizeof(current))
+              {
+                 if (current.func) current.func(current.target, current.type, current.event_info);
+                 size = 0;
+                 count++;
+              }
+         }
+     }
+   while (check > 0);
+
+   if (check < 0)
+     switch (errno)
+       {
+       case EBADF:
+       case EINVAL:
+       case EIO:
+       case EISDIR:
+          _fd_read = -1;
+       }
+
+   return count;
+#else
+   return 0;
+#endif
+}
+
+EAPI Evas_Bool
+evas_async_events_put(void *target, Evas_Callback_Type type, void *event_info, void (*func)(void *target, Evas_Callback_Type type, void *event_info))
+{
+#ifdef BUILD_ASYNC_EVENTS
+   Evas_Event_Async new;
+   ssize_t check;
+   int offset = 0;
+   Evas_Bool result = 0;
+
+   if (!func) return 0;
+   if (_fd_write == -1) return 0;
+
+   new.func = func;
+   new.target = target;
+   new.type = type;
+   new.event_info = event_info;
+
+   pthread_mutex_lock(&_mutex);
+
+   do {
+      check = write(_fd_write, ((char*)&new) + offset, sizeof(new) - offset);
+      offset += check;
+   } while (offset != sizeof(new) && (errno == EINTR || errno == EAGAIN));
+
+   if (offset == sizeof(new))
+     result = 1;
+   else
+     switch (errno)
+       {
+       case EBADF:
+       case EINVAL:
+       case EIO:
+       case EPIPE:
+          _fd_write = -1;
+       }
+
+   pthread_mutex_unlock(&_mutex);
+
+   return result;
+#else
+   return 0;
+#endif
+}
+
diff --git a/src/lib/canvas/evas_callbacks.c b/src/lib/canvas/evas_callbacks.c
new file mode 100644 (file)
index 0000000..1fde375
--- /dev/null
@@ -0,0 +1,468 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+static void evas_object_event_callback_list_post_free(Evas_Object_List **list);
+static void evas_object_event_callback_clear(Evas_Object *obj);
+
+static void
+evas_object_event_callback_list_post_free(Evas_Object_List **list)
+{
+   Evas_Object_List *l;
+
+   /* MEM OK */
+   for (l = *list; l;)
+     {
+       Evas_Func_Node *fn;
+
+       fn = (Evas_Func_Node *)l;
+       l = l->next;
+       if (fn->delete_me)
+         {
+            *list = evas_object_list_remove(*list, fn);
+            free(fn);
+         }
+     }
+}
+
+static void
+evas_object_event_callback_clear(Evas_Object *obj)
+{
+   if (!obj->callbacks) return;
+   if (!obj->callbacks->deletions_waiting) return;
+   obj->callbacks->deletions_waiting = 0;
+   evas_object_event_callback_list_post_free(&obj->callbacks->callbacks);
+   if (!obj->callbacks->callbacks)
+     {
+        free(obj->callbacks);
+       obj->callbacks = NULL;
+     }
+}
+
+void
+evas_object_event_callback_all_del(Evas_Object *obj)
+{
+   Evas_Object_List *l;
+
+   if (!obj->callbacks) return;
+   for (l = obj->callbacks->callbacks; l; l = l->next)
+     {
+       Evas_Func_Node *fn;
+
+       fn = (Evas_Func_Node *)l;
+       fn->delete_me = 1;
+     }
+}
+
+void
+evas_object_event_callback_cleanup(Evas_Object *obj)
+{
+   /* MEM OK */
+   if (!obj->callbacks) return;
+   evas_object_event_callback_list_post_free(&obj->callbacks->callbacks);
+   free(obj->callbacks);
+   obj->callbacks = NULL;
+}
+
+void
+evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info)
+{
+   /* MEM OK */
+   Evas_Object_List **l_mod = NULL, *l;
+   Evas_Button_Flags flags = EVAS_BUTTON_NONE;
+   Evas *e;
+
+   if (obj->delete_me) return;
+   e = evas_object_evas_get(obj);
+     
+   _evas_walk(e);
+   if (obj->callbacks)
+     {
+       l_mod = &obj->callbacks->callbacks;
+        switch (type)
+          {
+             case EVAS_CALLBACK_MOUSE_DOWN:
+               {
+                  Evas_Event_Mouse_Down *ev = event_info;
+                  
+                  flags = ev->flags;
+                 if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK))
+                   {
+                      if (obj->last_mouse_down_counter < (e->last_mouse_down_counter - 1))
+                        ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK);
+                   }
+                  obj->last_mouse_down_counter = e->last_mouse_down_counter;
+                 break;
+               }
+             case EVAS_CALLBACK_MOUSE_UP:
+               {
+                  Evas_Event_Mouse_Up *ev = event_info;
+                  
+                  flags = ev->flags;
+                 if (ev->flags & (EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK))
+                   {
+                      if (obj->last_mouse_up_counter < (e->last_mouse_up_counter - 1))
+                        ev->flags &= ~(EVAS_BUTTON_DOUBLE_CLICK | EVAS_BUTTON_TRIPLE_CLICK);
+                   }
+                  obj->last_mouse_up_counter = e->last_mouse_up_counter;
+                 break;
+               }
+             default:
+               break;
+          }
+        obj->callbacks->walking_list++;
+        for (l = *l_mod; l; l = l->next)
+          {
+            Evas_Func_Node *fn;
+
+            fn = (Evas_Func_Node *)l;
+            if ((fn->type == type) && (!fn->delete_me))
+              {
+                 if (fn->func)
+                   fn->func(fn->data, obj->layer->evas, obj, event_info);
+              }
+            if (obj->delete_me) break;
+          }
+        obj->callbacks->walking_list--;
+        if (!obj->callbacks->walking_list)
+         {
+            evas_object_event_callback_clear(obj);
+            l_mod = NULL;
+         }
+        
+        if (type == EVAS_CALLBACK_MOUSE_DOWN)
+          {
+             Evas_Event_Mouse_Down *ev = event_info;
+             ev->flags = flags;
+          }
+        else if (type == EVAS_CALLBACK_MOUSE_UP)
+          {
+             Evas_Event_Mouse_Up *ev = event_info;
+             ev->flags = flags;
+          }
+     }
+   
+   if (!((obj->no_propagate) && (l_mod) && (*l_mod)))
+     {
+       if ((obj->smart.parent) && (type != EVAS_CALLBACK_FREE) &&
+           (type <= EVAS_CALLBACK_KEY_UP))
+         evas_object_event_callback_call(obj->smart.parent, type, event_info);
+     }
+   _evas_unwalk(e);
+}
+
+/**
+ * @defgroup Evas_Object_Callback_Group Object Callback Functions
+ *
+ * Functions that add and remove callbacks to evas objects.
+ */
+
+/**
+ * @todo Move this next code example and most of the documentation for
+ * this next function into the group documentation.
+ */
+
+/**
+ * Add a callback function to an object
+ * @param obj Object to attach a callback to
+ * @param type The type of event that will trigger the callback
+ * @param func The function to be called when the event is triggered
+ * @param data The data pointer to be passed to @p func
+ *
+ * This function adds a function callback to an object when the event of type
+ * @p type occurs on object @p obj. The function is @p func.
+ *
+ * In the event of a memory allocation error during addition of the callback to
+ * the object, evas_alloc_error() should be used to determine the nature of
+ * the error, if any, and the program should sensibly try and recover.
+ *
+ * The function will be passed the pointer @p data when it is called. A
+ * callback function must look like this:
+ *
+ * @code
+ * void callback (void *data, Evas *e, Evas_Object *obj, void *event_info);
+ * @endcode
+ *
+ * The first parameter @p data in this function will be the same value passed
+ * to evas_object_event_callback_add() as the @p data parameter. The second
+ * parameter is a convenience for the programmer to know what evas canvas the
+ * event occured on. The third parameter @p obj is the Object handle on which
+ * the event occured. The foruth parameter @p event_info is a pointer to a
+ * data structure that may or may not be passed to the callback, depending on
+ * the event type that triggered the callback.
+ *
+ * The event type @p type to trigger the function may be one of
+ * EVAS_CALLBACK_MOUSE_IN, EVAS_CALLBACK_MOUSE_OUT, EVAS_CALLBACK_MOUSE_DOWN,
+ * EVAS_CALLBACK_MOUSE_UP, EVAS_CALLBACK_MOUSE_MOVE, EVAS_CALLBACK_MOUSE_WHEEL,
+ * EVAS_CALLBACK_FREE, EVAS_CALLBACK_KEY_DOWN, EVAS_CALLBACK_KEY_UP,
+ * EVAS_CALLBACK_FOCUS_IN, EVAS_CALLBACK_FOCUS_OUT, EVAS_CALLBACK_SHOW,
+ * EVAS_CALLBACK_HIDE, EVAS_CALLBACK_MOVE, EVAS_CALLBACK_RESIZE or EVAS_CALLBACK_RESTACK.
+ * This determines the kind of event that will trigger the callback to be called.
+ * The @p event_info pointer passed to the callback will be one of the
+ * following, depending on the event triggering it:
+ *
+ * EVAS_CALLBACK_MOUSE_IN: event_info = pointer to Evas_Event_Mouse_In
+ *
+ * This event is triggered when the mouse pointer enters the region of
+ * the object @p obj. This may occur by the mouse pointer being moved by
+ * evas_event_feed_mouse_move() or evas_event_feed_mouse_move_data() calls,
+ * or by the object being shown, raised, moved, resized, or other objects
+ * being moved out of the way, hidden, lowered or moved out of the way.
+ *
+ * EVAS_CALLBACK_MOUSE_OUT: event_info = pointer to Evas_Event_Mouse_Out
+ *
+ * This event is triggered exactly like EVAS_CALLBACK_MOUSE_IN is, but occurs
+ * when the mouse pointer exits an object. Note that no out events will be
+ * reported if the mouse pointer is implicitly grabbed to an object (the
+ * mouse buttons are down at all and any were pressed on that object). An
+ * out event will be reported as soon as the mouse is no longer grabbed (no
+ * mouse buttons are depressed). Out events will be reported once all buttons
+ * are released, if the mouse has left the object.
+ *
+ * EVAS_CALLBACK_MOUSE_DOWN: event_info = pointer to Evas_Event_Mouse_Down
+ *
+ * This event is triggered by a mouse button being depressed while over an
+ * object. If pointermode is EVAS_OBJECT_POINTER_MODE_AUTOGRAB (default)
+ * this causes this object to passively grab the mouse until all mouse
+ * buttons have been released.
+ * That means if this mouse button is the first to be pressed, all future
+ * mouse events will be reported to only this object until no buttons are
+ * down. That includes mouse move events, in and out events, and further
+ * button presses. When all buttons are released, event propagation occurs
+ * as normal.
+ *
+ * EVAS_CALLBACK_MOUSE_UP: event_info = pointer to Evas_Event_Mouse_Up
+ *
+ * This event is triggered by a mouse button being released while over an
+ * object or when passively grabbed to an object. If this is the last mouse
+ * button to be raised on an object then the passive grab is released and
+ * event processing will continue as normal.
+ *
+ * EVAS_CALLBACK_MOUSE_MOVE: event_info = pointer to Evas_Event_Mouse_Move
+ *
+ * This event is triggered by the mouse pointer moving while over an object or
+ * passively grabbed to an object.
+ *
+ * EVAS_CALLBACK_MOUSE_WHEEL: event_info = pointer to Evas_Event_Mouse_Wheel
+ *
+ * This event is triggered by the mouse wheel being rolled while over an object
+ * or passively grabbed to an object.
+ *
+ * EVAS_CALLBACK_FREE: event_info = NULL
+ *
+ * This event is triggered just before Evas is about to free all memory used
+ * by an object and remove all references to it. This is useful for programs
+ * to use if they attached data to an object and want to free it when the
+ * object is deleted. The object is still valid when this callback is called,
+ * but after this callback returns, there is no guarantee on the object's
+ * validity.
+ *
+ * EVAS_CALLBACK_KEY_DOWN: event_info = pointer to Evas_Event_Key_Down
+ *
+ * This callback is called when a key is pressed and the focus is on the
+ * object, or a key has been grabbed to a particular object which wants to
+ * intercept the key press regardless of what object has the focus.
+ *
+ * EVAS_CALLBACK_KEY_UP: event_info = pointer to Evas_Event_Key_Up
+ *
+ * This callback is called when a key is released and the focus is on the
+ * object, or a key has been grabbed to a particular object which wants to
+ * intercept the key release regardless of what object has the focus.
+ *
+ * EVAS_CALLBACK_FOCUS_IN: event_info = NULL
+ *
+ * This event is called when an object gains the focus. When the callback is
+ * called the object has already gained the focus.
+ *
+ * EVAS_CALLBACK_FOCUS_OUT: event_info = NULL
+ *
+ * This event is triggered by an object losing the focus. When the callback is
+ * called the object has already lost the focus.
+ *
+ * EVAS_CALLBACK_SHOW: event_info = NULL
+ *
+ * This event is triggered by the object being shown by evas_object_show().
+ *
+ * EVAS_CALLBACK_HIDE: event_info = NULL
+ *
+ * This event is triggered by an object being hidden by evas_object_hide().
+ *
+ * EVAS_CALLBACK_MOVE: event_info = NULL
+ *
+ * This event is triggered by an object being moved. evas_object_move() can
+ * trigger this, as can any object-specific manipulations that would mean the
+ * object's origin could move.
+ *
+ * EVAS_CALLBACK_RESIZE: event_info = NULL
+ *
+ * This event is triggered by an object being resized. Resizes can be
+ * triggered by evas_object_resize() or by any object-specific calls that may
+ * cause the object to resize.
+ *
+ * Example:
+ * @code
+ * extern Evas_Object *object;
+ * extern void *my_data;
+ * void down_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+ * void up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+ *
+ * evas_object_event_callback_add(object, EVAS_CALLBACK_MOUSE_UP, up_callback, my_data);
+ * if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE)
+ *   {
+ *     fprintf(stderr, "ERROR: Callback registering failed! Abort!\n");
+ *     exit(-1);
+ *   }
+ * evas_object_event_callback_add(object, EVAS_CALLBACK_MOUSE_DOWN, down_callback, my_data);
+ * if (evas_alloc_error() != EVAS_ALLOC_ERROR_NONE)
+ *   {
+ *     fprintf(stderr, "ERROR: Callback registering failed! Abort!\n");
+ *     exit(-1);
+ *   }
+ * @endcode
+ * @ingroup Evas_Object_Callback_Group
+ */
+EAPI void
+evas_object_event_callback_add(Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data)
+{
+   /* MEM OK */
+   Evas_Func_Node *fn;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+
+   if (!func) return;
+
+   fn = evas_mem_calloc(sizeof(Evas_Func_Node));
+   if (!fn) return;
+   fn->func = func;
+   fn->data = (void *)data;
+   fn->type = type;
+
+   if (!obj->callbacks)
+     obj->callbacks = evas_mem_calloc(sizeof(Evas_Callbacks));
+   if (!obj->callbacks)
+     {
+       free(fn);
+       return;
+     }
+   obj->callbacks->callbacks = 
+     evas_object_list_append(obj->callbacks->callbacks, fn);
+}
+
+/**
+ * Delete a callback function from an object
+ * @param obj Object to remove a callback from
+ * @param type The type of event that was triggering the callback
+ * @param func The function that was to be called when the event was triggered
+ * @return The data pointer that was to be passed to the callback
+ *
+ * This function removes the most recently added callback from the object
+ * @p obj which was triggered by the event type @p type and was calling the
+ * function @p func when triggered. If the removal is successful it will also
+ * return the data pointer that was passed to evas_object_event_callback_add()
+ * when the callback was added to the object. If not successful NULL will be
+ * returned.
+ *
+ * Example:
+ * @code
+ * extern Evas_Object *object;
+ * void *my_data;
+ * void up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+ *
+ * my_data = evas_object_event_callback_del(object, EVAS_CALLBACK_MOUSE_UP, up_callback);
+ * @endcode
+ * @ingroup Evas_Object_Callback_Group
+ */
+EAPI void *
+evas_object_event_callback_del(Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info))
+{
+   /* MEM OK */
+   Evas_Object_List *l;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+
+   if (!func) return NULL;
+
+   if (!obj->callbacks) return NULL;
+
+   for (l = obj->callbacks->callbacks; l; l = l->next)
+     {
+       Evas_Func_Node *fn;
+
+       fn = (Evas_Func_Node *)l;
+       if ((fn->func == func) && (fn->type == type) && (!fn->delete_me))
+         {
+            void *data;
+
+            data = fn->data;
+            fn->delete_me = 1;
+            obj->callbacks->deletions_waiting = 1;
+            if (!obj->callbacks->walking_list)
+              evas_object_event_callback_clear(obj);
+            return data;
+         }
+     }
+   return NULL;
+}
+
+/**
+ * Delete a callback function from an object
+ * @param obj Object to remove a callback from
+ * @param type The type of event that was triggering the callback
+ * @param func The function that was to be called when the event was triggered
+ * @param data The data pointer that was to be passed to the callback
+ * @return The data pointer that was to be passed to the callback
+ *
+ * This function removes the most recently added callback from the object
+ * @p obj which was triggered by the event type @p type and was calling the
+ * function @p func with data @p data when triggered. If the removal is
+ * successful it will also return the data pointer that was passed to
+ * evas_object_event_callback_add() (that will be the same as the parameter)
+ * when the callback was added to the object. If not successful NULL will be
+ * returned.
+ *
+ * Example:
+ * @code
+ * extern Evas_Object *object;
+ * void *my_data;
+ * void up_callback(void *data, Evas *e, Evas_Object *obj, void *event_info);
+ *
+ * my_data = evas_object_event_callback_del_full(object, EVAS_CALLBACK_MOUSE_UP, up_callback, data);
+ * @endcode
+ * @ingroup Evas_Object_Callback_Group
+ */
+EAPI void *
+evas_object_event_callback_del_full(Evas_Object *obj, Evas_Callback_Type type, void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info), const void *data)
+{
+   /* MEM OK */
+   Evas_Object_List *l;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+
+   if (!func) return NULL;
+
+   if (!obj->callbacks) return NULL;
+
+   for (l = obj->callbacks->callbacks; l; l = l->next)
+     {
+       Evas_Func_Node *fn;
+
+       fn = (Evas_Func_Node *)l;
+       if ((fn->func == func) && (fn->type == type) && (fn->data == data) && (!fn->delete_me))
+         {
+            void *data;
+
+            data = fn->data;
+            fn->delete_me = 1;
+            obj->callbacks->deletions_waiting = 1;
+            if (!obj->callbacks->walking_list)
+              evas_object_event_callback_clear(obj);
+            return data;
+         }
+     }
+   return NULL;
+}
diff --git a/src/lib/canvas/evas_clip.c b/src/lib/canvas/evas_clip.c
new file mode 100644 (file)
index 0000000..dfc3e4f
--- /dev/null
@@ -0,0 +1,300 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+void
+evas_object_clip_dirty(Evas_Object *obj)
+{
+   Evas_List *l;
+
+   obj->cur.cache.clip.dirty = 1;
+   for (l = obj->clip.clipees; l; l = l->next)
+     evas_object_clip_dirty(l->data);
+}
+
+void
+evas_object_recalc_clippees(Evas_Object *obj)
+{
+   Evas_List *l;
+
+   if (obj->cur.cache.clip.dirty)
+     {
+       evas_object_clip_recalc(obj);
+       for (l = obj->clip.clipees; l; l = l->next)
+         evas_object_recalc_clippees(l->data);
+     }
+}
+
+int
+evas_object_clippers_was_visible(Evas_Object *obj)
+{
+   if (obj->prev.visible)
+     {
+       if (obj->prev.clipper)
+         return evas_object_clippers_is_visible(obj->prev.clipper);
+       return 1;
+     }
+   return 0;
+}
+
+/* public functions */
+
+/**
+ * @defgroup Evas_Clip_Group Clip Functions
+ *
+ * Functions that manage the clipping of objects by other objects.
+ */
+
+/**
+ * Clip one object to another.
+ * @param obj The object to be clipped
+ * @param clip The object to clip @p obj by
+ *
+ * This function will clip the object @p obj to the area occupied by the
+ * object @p clipper. This means the object @p obj will only be visible within
+ * the area occupied by the clipping object (@p clip). The color of the object
+ * being clipped will be multiplied by the color of the clipping object, so
+ * the resulting color for the clipped object is
+ * RESULT = (OBJ * CLIP) / (255 * 255) per color element (red, green, blue and
+ * alpha). Clipping is recursive, so clip objects may be clipped by other
+ * objects, and their color will in tern be multiplied. You may NOT set up
+ * circular clipping lists (i.e. object 1 clips object 2 which clips object 1).
+ * The behavior of Evas is undefined in this case. Objects which do not clip
+ * others are visible as normal, those that clip 1 or more objects become
+ * invisible themselves, only affecting what they clip. If an object ceases to
+ * have other objects being clipped by it, it will become visible again. The
+ * visibility of an object affects the objects that are clipped by it, so if
+ * the object clipping others is not shown, the objects clipped will not be
+ * shown either. If the object was being clipped by another object when this
+ * function is called, it is implicitly removed from the clipper it is being
+ * clipped to, and now is made to clip its new clipper.
+ *
+ * At the moment the only objects that can validly be used to clip other
+ * objects are rectangle objects. All other object types are invalid and the
+ * result of using them is undefined.
+ *
+ * The clip object @p clip must be a valid object, but may also be NULL in
+ * which case the effect of this function is the same as calling
+ * evas_object_clip_unset() on the @p obj object.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ * extern Evas_Object *obj;
+ * Evas_Object *clipper;
+ *
+ * clipper = evas_object_rectangle_add(evas);
+ * evas_object_color_set(clipper, 255, 255, 255, 255);
+ * evas_object_move(clipper, 10, 10);
+ * evas_object_resize(clipper, 20, 50);
+ * evas_object_clip_set(obj, clipper);
+ * evas_object_show(clipper);
+ * @endcode
+ *
+ * @ingroup Evas_Clip_Group
+ */
+EAPI void
+evas_object_clip_set(Evas_Object *obj, Evas_Object *clip)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!clip)
+     {
+       evas_object_clip_unset(obj);
+       return;
+     }
+   MAGIC_CHECK(clip, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->cur.clipper == clip) return;
+   if (obj == clip) return;
+   if (evas_object_intercept_call_clip_set(obj, clip)) return;
+   if (obj->smart.smart)
+     {
+       if (obj->smart.smart->smart_class->clip_set)
+         obj->smart.smart->smart_class->clip_set(obj, clip);
+     }
+   if (obj->cur.clipper)
+     {
+       /* unclip */
+       obj->cur.clipper->clip.clipees = evas_list_remove(obj->cur.clipper->clip.clipees, obj);
+       if (!obj->cur.clipper->clip.clipees) obj->cur.clipper->cur.have_clipees = 0;
+       evas_object_change(obj->cur.clipper);
+       evas_object_change(obj);
+       obj->cur.clipper = NULL;
+     }
+   /* clip me */
+   if ((clip->clip.clipees == NULL) && (clip->cur.visible))
+     {
+       /* Basically it just went invisible */
+       clip->changed = 1;
+       clip->layer->evas->changed = 1;
+       evas_damage_rectangle_add(clip->layer->evas,
+                                 clip->cur.geometry.x, clip->cur.geometry.y,
+                                 clip->cur.geometry.w, clip->cur.geometry.h);
+     }
+   obj->cur.clipper = clip;
+   clip->clip.clipees = evas_list_append(clip->clip.clipees, obj);
+   if (clip->clip.clipees) clip->cur.have_clipees = 1;
+   evas_object_change(clip);
+   evas_object_change(obj);
+   evas_object_clip_dirty(obj);
+   evas_object_recalc_clippees(obj);
+   if (!obj->smart.smart)
+     {
+       if (evas_object_is_in_output_rect(obj,
+                                         obj->layer->evas->pointer.x,
+                                         obj->layer->evas->pointer.y, 1, 1))
+         evas_event_feed_mouse_move(obj->layer->evas,
+                                    obj->layer->evas->pointer.x,
+                                    obj->layer->evas->pointer.y,
+                                    obj->layer->evas->last_timestamp,
+                                    NULL);
+     }
+}
+
+/**
+ * Get the object clipping this one (if any).
+ * @param obj The object to get the clipper from
+ *
+ * This function returns the the object clipping @p obj. If @p obj not being
+ * clipped, NULL is returned. The object @p obj must be a valid object.
+ *
+ * See also evas_object_clip_set(), evas_object_clip_unset() and
+ * evas_object_clipees_get().
+ *
+ * Example:
+ * @code
+ * extern Evas_Object *obj;
+ * Evas_Object *clipper;
+ *
+ * clipper = evas_object_clip_get(obj);
+ * if (clipper) evas_object_show(clipper);
+ * @endcode
+ *
+ * @ingroup Evas_Clip_Group
+ */
+EAPI Evas_Object *
+evas_object_clip_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   return obj->cur.clipper;
+}
+
+/**
+ * Disable clipping for an object.
+ *
+ * @param obj The object to cease clipping on
+ *
+ * This function disables clipping for the object @p obj, if it was already
+ * clipped. If it wasn't, this has no effect. The object @p obj must be a
+ * valid object.
+ *
+ * See also evas_object_clip_set(), evas_object_clipees_get() and
+ * evas_object_clip_get().
+ *
+ * Example:
+ * @code
+ * extern Evas_Object *obj;
+ * Evas_Object *clipper;
+ *
+ * clipper = evas_object_clip_get(obj);
+ * if (clipper)
+ *   {
+ *     evas_object_clip_unset(obj);
+ *     evas_object_hide(obj);
+ *   }
+ * @endcode
+ *
+ * @ingroup Evas_Clip_Group
+ */
+EAPI void
+evas_object_clip_unset(Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!obj->cur.clipper) return;
+   /* unclip */
+   if (evas_object_intercept_call_clip_unset(obj)) return;
+   if (obj->smart.smart)
+     {
+       if (obj->smart.smart->smart_class->clip_unset)
+         obj->smart.smart->smart_class->clip_unset(obj);
+     }
+   if (obj->cur.clipper) 
+     {
+        obj->cur.clipper->clip.clipees = evas_list_remove(obj->cur.clipper->clip.clipees, obj);
+       if (!obj->cur.clipper->clip.clipees) 
+         obj->cur.clipper->cur.have_clipees = 0;
+       evas_object_change(obj->cur.clipper);
+     }
+   obj->cur.clipper = NULL;
+   evas_object_change(obj);
+   evas_object_clip_dirty(obj);
+   evas_object_recalc_clippees(obj);
+   if (!obj->smart.smart)
+     {
+       if (evas_object_is_in_output_rect(obj,
+                                         obj->layer->evas->pointer.x,
+                                         obj->layer->evas->pointer.y, 1, 1))
+         evas_event_feed_mouse_move(obj->layer->evas,
+                                    obj->layer->evas->pointer.x,
+                                    obj->layer->evas->pointer.y,
+                                     obj->layer->evas->last_timestamp,
+                                    NULL);
+     }
+}
+
+/**
+ * Return a list of objects currently clipped by a specific object.
+ *
+ * @param obj The object to get a list of clippees from
+ *
+ * This returns the inernal list handle that contains all objects clipped by
+ * the object @p obj. If none are clipped, it returns NULL. This list is only
+ * valid until the clip list is changed and should be fetched again with another
+ * call to evas_object_clipees_get() if any objects being clipped by this object
+ * are unclipped, clipped by a new object, are deleted or the clipper is
+ * deleted.  These operations will invalidate the list returned so it should
+ * not be used anymore after that point. Any use of the list after this may have
+ * undefined results, not limited just to strange behavior but possible
+ * segfaults and other strange memory errors. The object @p obj must be a valid
+ * object.
+ *
+ * See also evas_object_clip_set(), evas_object_clip_unset() and
+ * evas_object_clip_get().
+ *
+ * Example:
+ * @code
+ * extern Evas_Object *obj;
+ * Evas_Object *clipper;
+ *
+ * clipper = evas_object_clip_get(obj);
+ * if (clipper)
+ *   {
+ *     Evas_List *clippees, *l;
+ *
+ *     clippees = evas_object_clipees_get(clipper);
+ *     printf("Clipper clips %i objects\n", evas_list_count(clippees));
+ *     for (l = clippees; l; l = l->next)
+ *       {
+ *         Evas_Object *obj_tmp;
+ *
+ *         obj_tmp = l->data;
+ *         evas_object_show(obj_tmp);
+ *       }
+ *   }
+ * @endcode
+ * @ingroup Evas_Clip_Group
+ */
+EAPI const Evas_List *
+evas_object_clipees_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   return obj->clip.clipees;
+}
diff --git a/src/lib/canvas/evas_data.c b/src/lib/canvas/evas_data.c
new file mode 100644 (file)
index 0000000..6ce6536
--- /dev/null
@@ -0,0 +1,161 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/**
+ * @defgroup Evas_Object_Data_Group Object Data Functions
+ *
+ * Functions that retrieve and set data associated attached to an evas
+ * object.
+ */
+
+/**
+ * Set an attached data pointer to an object with a given string key.
+ * @param obj The object to attach the data pointer to
+ * @param key The string key for the data to access it
+ * @param data The ponter to the data to be attached
+ *
+ * This attaches the pointer @p data to the object @p obj given the string
+ * @p key. This pointer will stay "hooked" to the object until a new pointer
+ * with the same string key is attached with evas_object_data_set() or it is
+ * deleted with evas_object_data_del(). On deletion of the object @p obj, the
+ * pointers will not be accessible from the object anymore.
+ *
+ * You can find the pointer attached under a string key using
+ * evas_object_data_get(). It is the job of the calling application to free
+ * any data pointed to by @p data when it is no longer required.
+ *
+ * If @p data is NULL, the old value stored at @p key will be removed but no
+ * new value will be stored. This is synonymous with calling
+ * evas_object_data_del() with @p obj and @p key.
+ *
+ * Example:
+ *
+ * @code
+ * int *my_data;
+ * extern Evas_Object *obj;
+ *
+ * my_data = malloc(500);
+ * evas_object_data_set(obj, "name_of_data", my_data);
+ * printf("The data that was attached was %p\n", evas_object_data_get(obj, "name_of_data"));
+ * @endcode
+ * @ingroup Evas_Object_Data_Group
+ */
+EAPI void
+evas_object_data_set(Evas_Object *obj, const char *key, const void *data)
+{
+   Evas_Data_Node *node;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!key) return;
+
+   evas_object_data_del(obj, key);
+   if (data == NULL) return;
+   node = malloc(sizeof(Evas_Data_Node) + strlen(key) + 1);
+   node->key = (char *)node + sizeof(Evas_Data_Node);
+   strcpy(node->key, key);
+   node->data = (void *)data;
+   obj->data.elements = evas_list_prepend(obj->data.elements, node);
+}
+
+/**
+ * Return an attached data pointer by its given string key.
+ * @param obj The object to which the data was attached
+ * @param key The string key the data was stored under
+ * @return The data pointer stored, or NULL if none was stored
+ *
+ * This function will return the data pointer attached to the object @p obj
+ * stored using the string key @p key. If the object is valid and data was
+ * stored under the given key, the pointer that was stored will be reuturned.
+ * If this is not the case, NULL will be returned, signifying an invalid object
+ * or non-existent key. It is possible a NULL pointer was stored given that
+ * key, but this situation is non-sensical and thus can be considered an error
+ * as well. NULL pointers are never stored as this is the return value if an
+ * error occurs.
+ *
+ * Example:
+ *
+ * @code
+ * int *my_data;
+ * extern Evas_Object *obj;
+ *
+ * my_data = evas_object_data_get(obj, "name_of_my_data");
+ * if (my_data) printf("Data stored was %p\n", my_data);
+ * else printf("No data was stored on the object\n");
+ * @endcode
+ * @ingroup Evas_Object_Data_Group
+ */
+EAPI void *
+evas_object_data_get(const Evas_Object *obj, const char *key)
+{
+   Evas_List *l;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!key) return NULL;
+
+   for (l = obj->data.elements; l; l = l->next)
+     {
+       Evas_Data_Node *node;
+
+       node = l->data;
+       if (!strcmp(node->key, key))
+         {
+            Evas_List *lst;
+            lst = obj->data.elements;
+            lst = evas_list_promote_list(lst, l);
+            ((Evas_Object *)obj)->data.elements = lst;
+            return node->data;
+         }
+     }
+   return NULL;
+}
+
+/**
+ * Delete at attached data pointer from an object.
+ * @param obj The object to delete the data pointer from
+ * @param key The string key the data was stored under
+ * @return The original data pointer stored at @p key on @p obj
+ *
+ * This will remove thee stored data pointer from @p obj stored under @p key,
+ * and return the original pointer stored under @p key, if any, nor NULL if
+ * nothing was stored under that key.
+ *
+ * Example:
+ *
+ * @code
+ * int *my_data;
+ * extern Evas_Object *obj;
+ *
+ * my_data = evas_object_data_del(obj, "name_of_my_data");
+ * @endcode
+ * @ingroup Evas_Object_Data_Group
+ */
+EAPI void *
+evas_object_data_del(Evas_Object *obj, const char *key)
+{
+   Evas_List *l;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!key) return NULL;
+   for (l = obj->data.elements; l; l = l->next)
+     {
+       Evas_Data_Node *node;
+
+       node = l->data;
+       if (!strcmp(node->key, key))
+         {
+            void *data;
+
+            data = node->data;
+            obj->data.elements = evas_list_remove_list(obj->data.elements, l);
+            free(node);
+            return data;
+         }
+     }
+   return NULL;
+}
diff --git a/src/lib/canvas/evas_events.c b/src/lib/canvas/evas_events.c
new file mode 100644 (file)
index 0000000..705feea
--- /dev/null
@@ -0,0 +1,1221 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+static Evas_List *
+_evas_event_object_list_in_get(Evas *e, Evas_List *in, const Evas_Object_List *list, Evas_Object *stop, int x, int y, int *no_rep)
+{
+   const Evas_Object_List *l;
+
+   if (!list) return in;
+   for (l = list->last; l; l = l->prev)
+     {
+       Evas_Object *obj;
+
+       obj = (Evas_Object *)l;
+       if (obj == stop)
+         {
+            *no_rep = 1;
+            return in;
+         }
+       if (!evas_event_passes_through(obj))
+         {
+            if ((obj->cur.visible) && (obj->delete_me == 0) &&
+                (!obj->clip.clipees) &&
+                (evas_object_clippers_is_visible(obj)))
+              {
+                 if (obj->smart.smart)
+                   {
+                      int norep;
+
+                      norep = 0;
+                      in = _evas_event_object_list_in_get(e, in,
+                                                          evas_object_smart_members_get_direct(obj),
+                                                          stop, x, y, &norep);
+                      if (norep)
+                        {
+                           *no_rep = 1;
+                           return in;
+                        }
+                   }
+                 else
+                   {
+                      if (evas_object_is_in_output_rect(obj, x, y, 1, 1) &&
+                          ((!obj->precise_is_inside) ||
+                           (evas_object_is_inside(obj, x, y))))
+                        {
+                           in = evas_list_append(in, obj);
+                           if (!obj->repeat_events)
+                             {
+                                *no_rep = 1;
+                                return in;
+                             }
+                        }
+                   }
+              }
+         }
+     }
+   *no_rep = 0;
+   return in;
+}
+
+Evas_List *
+evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y)
+{
+   Evas_Object_List *l;
+   Evas_List *in = NULL;
+
+   if (!e->layers) return NULL;
+   for (l = ((Evas_Object_List *)(e->layers))->last; l; l = l->prev)
+     {
+       Evas_Layer *lay;
+       int norep;
+
+       lay = (Evas_Layer *)l;
+       norep = 0;
+       in = _evas_event_object_list_in_get(e, in, (Evas_Object_List *)lay->objects, stop,
+                                           x, y, &norep);
+       if (norep) return in;
+     }
+   return in;
+}
+
+static Evas_List *evas_event_list_copy(Evas_List *list);
+static Evas_List *
+evas_event_list_copy(Evas_List *list)
+{
+   Evas_List *l, *new_l = NULL;
+
+   for (l = list; l; l = l->next)
+     new_l = evas_list_append(new_l, l->data);
+   return new_l;
+}
+/* public functions */
+
+/**
+ * @defgroup Evas_Event_Freezing_Group Evas Event Freezing Functions
+ *
+ * Functions that deal with the freezing of event processing of an evas.
+ */
+
+/**
+ * Freeze all event processing
+ * @param e The canvas to freeze event processing on
+ *
+ * This function will indicate to evas that the canvas @p e is to have all
+ * event processing frozen until a matching evas_event_thaw() function is
+ * called on the same canvas. Every freeze call must be matched by a thaw call
+ * in order to completely thaw out a canvas.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ * extern Evas_Object *object;
+ *
+ * evas_event_freeze(evas);
+ * evas_object_move(object, 50, 100);
+ * evas_object_resize(object, 200, 200);
+ * evas_event_thaw(evas);
+ * @endcode
+ * @ingroup Evas_Event_Freezing_Group
+ */
+EAPI void
+evas_event_freeze(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   e->events_frozen++;
+}
+
+/**
+ * Thaw a canvas out after freezing
+ * @param e The canvas to thaw out
+ *
+ * This will thaw out a canvas after a matching evas_event_freeze() call. If
+ * this call completely thaws out a canvas, events will start being processed
+ * again after this call, but this call will not invole any "missed" events
+ * to be evaluated.
+ *
+ * See evas_event_freeze() for an example.
+ * @ingroup Evas_Event_Freezing_Group
+ */
+EAPI void
+evas_event_thaw(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   e->events_frozen--;
+   if (e->events_frozen == 0)
+     {
+       Evas_Object_List *l;
+
+       for (l = (Evas_Object_List *)e->layers; l; l = l->next)
+         {
+            Evas_Object_List *l2;
+            Evas_Layer *lay;
+
+            lay = (Evas_Layer *)l;
+            for (l2 = (Evas_Object_List *)lay->objects; l2; l2 = l2->next)
+              {
+                 Evas_Object *obj;
+
+                 obj = (Evas_Object *)l2;
+                 evas_object_clip_recalc(obj);
+                 evas_object_recalc_clippees(obj);
+              }
+         }
+     }
+   if (e->events_frozen < 0)
+     evas_debug_generic("  Thaw of events when already thawed!!!\n");
+}
+
+/**
+ * Return the freeze count of a given canvas
+ * @param e The canvas to fetch the freeze count from
+ *
+ * This returns the number of times the canvas has been told to freeze events.
+ * It is possible to call evas_event_freeze() multiple times, and these must
+ * be matched by evas_event_thaw() calls. This call allows the program to
+ * discover just how many times things have been frozen in case it may want
+ * to break out of a deep freeze state where the count is high.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ *
+ * while (evas_event_freeze_get(evas) > 0) evas_event_thaw(evas);
+ * @endcode
+ * @ingroup Evas_Event_Freezing_Group
+ */
+EAPI int
+evas_event_freeze_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+   return e->events_frozen;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_event_feed_mouse_down(Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data)
+{
+   Evas_List *l, *copy;
+   Evas_Event_Mouse_Down ev;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if ((b < 1) || (b > 32)) return;
+
+   e->pointer.button |= (1 << (b - 1));
+
+   if (e->events_frozen > 0) return;
+   e->last_timestamp = timestamp;
+
+   ev.button = b;
+   ev.output.x = e->pointer.x;
+   ev.output.y = e->pointer.y;
+   ev.canvas.x = e->pointer.x;
+   ev.canvas.y = e->pointer.y;
+   ev.data = (void *)data;
+   ev.modifiers = &(e->modifiers);
+   ev.locks = &(e->locks);
+   ev.flags = flags;
+   ev.timestamp = timestamp;
+   ev.event_flags = EVAS_EVENT_FLAG_NONE;
+
+   _evas_walk(e);
+   copy = evas_event_list_copy(e->pointer.object.in);
+   for (l = copy; l; l = l->next)
+     {
+       Evas_Object *obj;
+
+       obj = l->data;
+       if (obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB)
+         {
+            obj->mouse_grabbed++;
+            e->pointer.mouse_grabbed++;
+         }
+
+       if (e->events_frozen <= 0)
+         evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_DOWN, &ev);
+       if (e->delete_me) break;
+     }
+   if (copy) copy = evas_list_free(copy);
+   e->last_mouse_down_counter++;
+   _evas_unwalk(e);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_event_feed_mouse_up(Evas *e, int b, Evas_Button_Flags flags, unsigned int timestamp, const void *data)
+{
+   Evas_List *l, *copy;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if ((b < 1) || (b > 32)) return;
+
+   e->pointer.button &= ~(1 << (b - 1));
+
+   if (e->events_frozen > 0) return;
+   e->last_timestamp = timestamp;
+
+     {
+       Evas_Event_Mouse_Up ev;
+
+       ev.button = b;
+       ev.output.x = e->pointer.x;
+       ev.output.y = e->pointer.y;
+       ev.canvas.x = e->pointer.x;
+       ev.canvas.y = e->pointer.y;
+       ev.data = (void *)data;
+       ev.modifiers = &(e->modifiers);
+       ev.locks = &(e->locks);
+       ev.flags = flags;
+       ev.timestamp = timestamp;
+       ev.event_flags = EVAS_EVENT_FLAG_NONE;
+
+       _evas_walk(e);
+       copy = evas_event_list_copy(e->pointer.object.in);
+       for (l = copy; l; l = l->next)
+         {
+            Evas_Object *obj;
+
+            obj = l->data;
+            if ((obj->pointer_mode != EVAS_OBJECT_POINTER_MODE_NOGRAB) &&
+                (obj->mouse_in) && (obj->mouse_grabbed > 0))
+              {
+                 obj->mouse_grabbed--;
+                 e->pointer.mouse_grabbed--;
+              }
+            if (e->events_frozen <= 0)
+              evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_UP, &ev);
+            if (e->delete_me) break;
+         }
+       if (copy) copy = evas_list_free(copy);
+       e->last_mouse_up_counter++;
+     }
+
+   if (!e->pointer.button)
+     {
+       Evas_List *ins;
+       Evas_List *l;
+
+         {
+            Evas_Event_Mouse_Out ev;
+
+            ev.buttons = e->pointer.button;
+            ev.output.x = e->pointer.x;
+            ev.output.y = e->pointer.y;
+            ev.canvas.x = e->pointer.x;
+            ev.canvas.y = e->pointer.y;
+            ev.data = (void *)data;
+            ev.modifiers = &(e->modifiers);
+            ev.locks = &(e->locks);
+            ev.timestamp = timestamp;
+            ev.event_flags = EVAS_EVENT_FLAG_NONE;
+
+            /* get new list of ins */
+            ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y);
+            /* go thru old list of in objects */
+            copy = evas_event_list_copy(e->pointer.object.in);
+            for (l = copy; l; l = l->next)
+              {
+                 Evas_Object *obj;
+
+                 obj = l->data;
+                 if ((!evas_list_find(ins, obj)) ||
+                     (!e->pointer.inside))
+                   {
+
+                      obj->mouse_in = 0;
+                      if (e->events_frozen <= 0)
+                        evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
+                   }
+                 if (e->delete_me) break;
+              }
+         }
+       if (copy) copy = evas_list_free(copy);
+       if (e->pointer.inside)
+         {
+            Evas_Event_Mouse_In ev;
+
+            ev.buttons = e->pointer.button;
+            ev.output.x = e->pointer.x;
+            ev.output.y = e->pointer.y;
+            ev.canvas.x = e->pointer.x;
+            ev.canvas.y = e->pointer.y;
+            ev.data = (void *)data;
+            ev.modifiers = &(e->modifiers);
+            ev.locks = &(e->locks);
+            ev.timestamp = timestamp;
+            ev.event_flags = EVAS_EVENT_FLAG_NONE;
+
+            for (l = ins; l; l = l->next)
+              {
+                 Evas_Object *obj;
+
+                 obj = l->data;
+
+                 if (!evas_list_find(e->pointer.object.in, obj))
+                   {
+
+                      obj->mouse_in = 1;
+                      if (e->events_frozen <= 0)
+                        evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
+                   }
+                 if (e->delete_me) break;
+              }
+         }
+       else
+         {
+            ins = evas_list_free(ins);
+         }
+       /* free our old list of ins */
+       e->pointer.object.in = evas_list_free(e->pointer.object.in);
+       /* and set up the new one */
+       e->pointer.object.in = ins;
+       if (e->pointer.inside)
+         evas_event_feed_mouse_move(e, e->pointer.x, e->pointer.y, timestamp, data);
+     }
+
+   if (e->pointer.mouse_grabbed < 0)
+     fprintf(stderr, "BUG? e->pointer.mouse_grabbed (=%d) < 0!\n",
+            e->pointer.mouse_grabbed);
+
+   if ((e->pointer.button == 0) && (e->pointer.mouse_grabbed))
+     {
+       e->pointer.mouse_grabbed = 0;
+     }
+   _evas_unwalk(e);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_event_feed_mouse_cancel(Evas *e, unsigned int timestamp, const void *data)
+{
+   int i;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if (e->events_frozen > 0) return;
+
+   _evas_walk(e);
+   for (i = 0; i < 32; i++)
+     {
+       if ((e->pointer.button & (1 << i)))
+         evas_event_feed_mouse_up(e, i + 1, 0, timestamp, data);
+     }
+   _evas_unwalk(e);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_event_feed_mouse_wheel(Evas *e, int direction, int z, unsigned int timestamp, const void *data)
+{
+   Evas_List *l, *copy;
+   Evas_Event_Mouse_Wheel ev;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if (e->events_frozen > 0) return;
+   e->last_timestamp = timestamp;
+
+   ev.direction = direction;
+   ev.z = z;
+   ev.output.x = e->pointer.x;
+   ev.output.y = e->pointer.y;
+   ev.canvas.x = e->pointer.x;
+   ev.canvas.y = e->pointer.y;
+   ev.data = (void *) data;
+   ev.modifiers = &(e->modifiers);
+   ev.locks = &(e->locks);
+   ev.timestamp = timestamp;
+   ev.event_flags = EVAS_EVENT_FLAG_NONE;
+
+   _evas_walk(e);
+   copy = evas_event_list_copy(e->pointer.object.in);
+
+   for (l = copy; l; l = l->next)
+     {
+       Evas_Object *obj = l->data;
+
+       if (e->events_frozen <= 0)
+         evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_WHEEL, &ev);
+       if (e->delete_me) break;
+     }
+   if (copy) copy = evas_list_free(copy);
+
+   _evas_unwalk(e);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_event_feed_mouse_move(Evas *e, int x, int y, unsigned int timestamp, const void *data)
+{
+   int px, py;
+////   Evas_Coord pcx, pcy;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   px = e->pointer.x;
+   py = e->pointer.y;
+////   pcx = e->pointer.canvas_x;
+////   pcy = e->pointer.canvas_y;
+
+   if (e->events_frozen > 0) return;
+   e->last_timestamp = timestamp;
+
+   e->pointer.x = x;
+   e->pointer.y = y;
+////   e->pointer.canvas_x = x;
+////   e->pointer.canvas_y = y;
+////   e->pointer.canvas_x = evas_coord_screen_x_to_world(e, x);
+////   e->pointer.canvas_y = evas_coord_screen_y_to_world(e, y);
+   if ((!e->pointer.inside) && (e->pointer.mouse_grabbed == 0)) return;
+   _evas_walk(e);
+   /* if our mouse button is grabbed to any objects */
+   if (e->pointer.mouse_grabbed > 0)
+     {
+       /* go thru old list of in objects */
+       Evas_List *outs = NULL;
+       Evas_List *l, *copy;
+
+         {
+            Evas_Event_Mouse_Move ev;
+
+            ev.buttons = e->pointer.button;
+            ev.cur.output.x = e->pointer.x;
+            ev.cur.output.y = e->pointer.y;
+            ev.cur.canvas.x = e->pointer.x;
+            ev.cur.canvas.y = e->pointer.y;
+            ev.prev.output.x = px;
+            ev.prev.output.y = py;
+            ev.prev.canvas.x = px;
+            ev.prev.canvas.y = py;
+            ev.data = (void *)data;
+            ev.modifiers = &(e->modifiers);
+            ev.locks = &(e->locks);
+            ev.timestamp = timestamp;
+            ev.event_flags = EVAS_EVENT_FLAG_NONE;
+            copy = evas_event_list_copy(e->pointer.object.in);
+            for (l = copy; l; l = l->next)
+              {
+                 Evas_Object *obj;
+
+                 obj = l->data;
+                 if ((obj->cur.visible) &&
+                     (evas_object_clippers_is_visible(obj)) &&
+                     (!evas_event_passes_through(obj)) &&
+                     (!obj->clip.clipees))
+                   {
+                      if ((px != x) || (py != y))
+                        {
+                           if (e->events_frozen <= 0)
+                             evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
+                        }
+                   }
+                 else
+                   outs = evas_list_append(outs, obj);
+                 if (e->delete_me) break;
+              }
+         }
+         {
+            Evas_Event_Mouse_Out ev;
+
+            ev.buttons = e->pointer.button;
+            ev.output.x = e->pointer.x;
+            ev.output.y = e->pointer.y;
+            ev.canvas.x = e->pointer.x;
+            ev.canvas.y = e->pointer.y;
+            ev.data = (void *)data;
+            ev.modifiers = &(e->modifiers);
+            ev.locks = &(e->locks);
+            ev.timestamp = timestamp;
+            ev.event_flags = EVAS_EVENT_FLAG_NONE;
+
+            if (copy) copy = evas_list_free(copy);
+            while (outs)
+              {
+                 Evas_Object *obj;
+
+                 obj = outs->data;
+                 outs = evas_list_remove(outs, obj);
+                 if ((!obj->mouse_grabbed) && (!e->delete_me))
+                   {
+                      e->pointer.object.in = evas_list_remove(e->pointer.object.in, obj);
+                        {
+                           obj->mouse_in = 0;
+                           if (e->events_frozen <= 0)
+                             evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
+                        }
+                   }
+              }
+         }
+     }
+   else
+     {
+       Evas_List *ins;
+       Evas_List *l, *copy;
+       Evas_Event_Mouse_Move ev;
+       Evas_Event_Mouse_Out ev2;
+       Evas_Event_Mouse_In ev3;
+
+       ev.buttons = e->pointer.button;
+       ev.cur.output.x = e->pointer.x;
+       ev.cur.output.y = e->pointer.y;
+       ev.cur.canvas.x = e->pointer.x;
+       ev.cur.canvas.y = e->pointer.y;
+       ev.prev.output.x = px;
+       ev.prev.output.y = py;
+       ev.prev.canvas.x = px;
+       ev.prev.canvas.y = py;
+       ev.data = (void *)data;
+       ev.modifiers = &(e->modifiers);
+       ev.locks = &(e->locks);
+       ev.timestamp = timestamp;
+       ev.event_flags = EVAS_EVENT_FLAG_NONE;
+
+       ev2.buttons = e->pointer.button;
+       ev2.output.x = e->pointer.x;
+       ev2.output.y = e->pointer.y;
+       ev2.canvas.x = e->pointer.x;
+       ev2.canvas.y = e->pointer.y;
+       ev2.data = (void *)data;
+       ev2.modifiers = &(e->modifiers);
+       ev2.locks = &(e->locks);
+       ev2.timestamp = timestamp;
+       ev2.event_flags = EVAS_EVENT_FLAG_NONE;
+
+       ev3.buttons = e->pointer.button;
+       ev3.output.x = e->pointer.x;
+       ev3.output.y = e->pointer.y;
+       ev3.canvas.x = e->pointer.x;
+       ev3.canvas.y = e->pointer.y;
+       ev3.data = (void *)data;
+       ev3.modifiers = &(e->modifiers);
+       ev3.locks = &(e->locks);
+       ev3.timestamp = timestamp;
+       ev3.event_flags = EVAS_EVENT_FLAG_NONE;
+
+       /* get all new in objects */
+       ins = evas_event_objects_event_list(e, NULL, x, y);
+       /* go thru old list of in objects */
+       copy = evas_event_list_copy(e->pointer.object.in);
+       for (l = copy; l; l = l->next)
+         {
+            Evas_Object *obj;
+
+            obj = l->data;
+            /* if its under the pointer and its visible and its in the new */
+            /* in list */
+// FIXME: i don't think we need this
+//          evas_object_clip_recalc(obj);
+            if (evas_object_is_in_output_rect(obj, x, y, 1, 1) &&
+                (obj->cur.visible) &&
+                (evas_object_clippers_is_visible(obj)) &&
+                (evas_list_find(ins, obj)) &&
+                (!evas_event_passes_through(obj)) &&
+                (!obj->clip.clipees) &&
+                ((!obj->precise_is_inside) ||
+                 (evas_object_is_inside(obj, x, y))))
+              {
+                 if ((px != x) || (py != y))
+                   {
+                      if (e->events_frozen <= 0)
+                        evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_MOVE, &ev);
+                   }
+              }
+            /* otherwise it has left the object */
+            else
+              {
+                 obj->mouse_in = 0;
+                 if (e->events_frozen <= 0)
+                   evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev2);
+              }
+            if (e->delete_me) break;
+         }
+       if (copy) copy = evas_list_free(copy);
+       /* go thru our current list of ins */
+       for (l = ins; l; l = l->next)
+         {
+            Evas_Object *obj;
+
+            obj = l->data;
+            /* if its not in the old list of ins send an enter event */
+            if (!evas_list_find(e->pointer.object.in, obj))
+              {
+                 obj->mouse_in = 1;
+
+                 if (e->events_frozen <= 0)
+                   evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev3);
+              }
+            if (e->delete_me) break;
+         }
+       /* free our old list of ins */
+       evas_list_free(e->pointer.object.in);
+       /* and set up the new one */
+       e->pointer.object.in = ins;
+     }
+   _evas_unwalk(e);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_event_feed_mouse_in(Evas *e, unsigned int timestamp, const void *data)
+{
+   Evas_List *ins;
+   Evas_List *l;
+   Evas_Event_Mouse_In ev;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   e->pointer.inside = 1;
+
+   if (e->events_frozen > 0) return;
+   e->last_timestamp = timestamp;
+
+   if (e->pointer.mouse_grabbed != 0) return;
+
+   ev.buttons = e->pointer.button;
+   ev.output.x = e->pointer.x;
+   ev.output.y = e->pointer.y;
+   ev.canvas.x = e->pointer.x;
+   ev.canvas.y = e->pointer.y;
+   ev.data = (void *)data;
+   ev.modifiers = &(e->modifiers);
+   ev.locks = &(e->locks);
+   ev.timestamp = timestamp;
+   ev.event_flags = EVAS_EVENT_FLAG_NONE;
+
+   _evas_walk(e);
+   /* get new list of ins */
+   ins = evas_event_objects_event_list(e, NULL, e->pointer.x, e->pointer.y);
+   for (l = ins; l; l = l->next)
+     {
+       Evas_Object *obj;
+
+       obj = l->data;
+
+       if (!evas_list_find(e->pointer.object.in, obj))
+         {
+
+            obj->mouse_in = 1;
+            if (e->events_frozen <= 0)
+              evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_IN, &ev);
+         }
+       if (e->delete_me) break;
+     }
+   /* free our old list of ins */
+   e->pointer.object.in = evas_list_free(e->pointer.object.in);
+   /* and set up the new one */
+   e->pointer.object.in = ins;
+   evas_event_feed_mouse_move(e, e->pointer.x, e->pointer.y, timestamp, data);
+   _evas_unwalk(e);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_event_feed_mouse_out(Evas *e, unsigned int timestamp, const void *data)
+{
+   Evas_Event_Mouse_Out ev;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   e->pointer.inside = 0;
+
+   if (e->events_frozen > 0) return;
+   e->last_timestamp = timestamp;
+
+   ev.buttons = e->pointer.button;
+   ev.output.x = e->pointer.x;
+   ev.output.y = e->pointer.y;
+   ev.canvas.x = e->pointer.x;
+   ev.canvas.y = e->pointer.y;
+   ev.data = (void *)data;
+   ev.modifiers = &(e->modifiers);
+   ev.locks = &(e->locks);
+   ev.timestamp = timestamp;
+   ev.event_flags = EVAS_EVENT_FLAG_NONE;
+
+   _evas_walk(e);
+   /* if our mouse button is grabbed to any objects */
+   if (e->pointer.mouse_grabbed == 0)
+     {
+       /* go thru old list of in objects */
+       Evas_List *l, *copy;
+
+       copy = evas_event_list_copy(e->pointer.object.in);
+       for (l = copy; l; l = l->next)
+         {
+            Evas_Object *obj;
+
+            obj = l->data;
+              {
+
+                 obj->mouse_in = 0;
+                 if (e->events_frozen <= 0)
+                   evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
+              }
+            if (e->delete_me) break;
+         }
+       if (copy) copy = evas_list_free(copy);
+       /* free our old list of ins */
+       e->pointer.object.in =  evas_list_free(e->pointer.object.in);
+     }
+   _evas_unwalk(e);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_event_feed_key_down(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   if (!keyname) return;
+   if (e->events_frozen > 0) return;
+   e->last_timestamp = timestamp;
+   _evas_walk(e);
+     {
+       Evas_Event_Key_Down ev;
+       int exclusive;
+
+       exclusive = 0;
+       ev.keyname = (char *)keyname;
+       ev.data = (void *)data;
+       ev.modifiers = &(e->modifiers);
+       ev.locks = &(e->locks);
+       ev.key = key;
+       ev.string = string;
+       ev.compose = compose;
+       ev.timestamp = timestamp;
+       ev.event_flags = EVAS_EVENT_FLAG_NONE;
+       if (e->grabs)
+         {
+            Evas_List *l;
+
+            e->walking_grabs++;
+            for (l = e->grabs; l; l= l->next)
+              {
+                 Evas_Key_Grab *g;
+
+                 g = l->data;
+                 if (g->just_added)
+                   {
+                      g->just_added = 0;
+                      continue;
+                   }
+                 if (g->delete_me) continue;
+                 if (((e->modifiers.mask & g->modifiers) ||
+                      (g->modifiers == e->modifiers.mask)) &&
+                     (!strcmp(keyname, g->keyname)))
+                   {
+                      if (!(e->modifiers.mask & g->not_modifiers))
+                        {
+                           if (e->events_frozen <= 0)
+                             evas_object_event_callback_call(g->object, EVAS_CALLBACK_KEY_DOWN, &ev);
+                           if (g->exclusive) exclusive = 1;
+                        }
+                   }
+                 if (e->delete_me) break;
+              }
+            e->walking_grabs--;
+            if (e->walking_grabs <= 0)
+              {
+                 while (e->delete_grabs > 0)
+                   {
+                      Evas_List *l;
+
+                      e->delete_grabs--;
+                      for (l = e->grabs; l;)
+                        {
+                           Evas_Key_Grab *g;
+
+                           g = l->data;
+                           l = l->next;
+                           if (g->delete_me)
+                             evas_key_grab_free(g->object, g->keyname, g->modifiers, g->not_modifiers);
+                        }
+                   }
+              }
+         }
+       if ((e->focused) && (!exclusive))
+         {
+            if (e->events_frozen <= 0)
+              evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_DOWN, &ev);
+         }
+     }
+   _evas_unwalk(e);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_event_feed_key_up(Evas *e, const char *keyname, const char *key, const char *string, const char *compose, unsigned int timestamp, const void *data)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   if (!keyname) return;
+   if (e->events_frozen > 0) return;
+   e->last_timestamp = timestamp;
+   _evas_walk(e);
+     {
+       Evas_Event_Key_Up ev;
+       int exclusive;
+
+       exclusive = 0;
+       ev.keyname = (char *)keyname;
+       ev.data = (void *)data;
+       ev.modifiers = &(e->modifiers);
+       ev.locks = &(e->locks);
+       ev.key = key;
+       ev.string = string;
+       ev.compose = compose;
+       ev.timestamp = timestamp;
+       ev.event_flags = EVAS_EVENT_FLAG_NONE;
+       if (e->grabs)
+         {
+            Evas_List *l;
+
+            e->walking_grabs++;
+            for (l = e->grabs; l; l= l->next)
+              {
+                 Evas_Key_Grab *g;
+
+                 g = l->data;
+                 if (g->just_added)
+                   {
+                      g->just_added = 0;
+                      continue;
+                   }
+                 if (g->delete_me) continue;
+                 if (((e->modifiers.mask & g->modifiers) ||
+                      (g->modifiers == e->modifiers.mask)) &&
+                     (!((e->modifiers.mask & g->not_modifiers) ||
+                        (g->not_modifiers == ~e->modifiers.mask))) &&
+                     (!strcmp(keyname, g->keyname)))
+                   {
+                      if (e->events_frozen <= 0)
+                        evas_object_event_callback_call(g->object, EVAS_CALLBACK_KEY_UP, &ev);
+                      if (g->exclusive) exclusive = 1;
+                   }
+                 if (e->delete_me) break;
+              }
+            e->walking_grabs--;
+            if (e->walking_grabs <= 0)
+              {
+                 while (e->delete_grabs > 0)
+                   {
+                      Evas_List *l;
+
+                      e->delete_grabs--;
+                      for (l = e->grabs; l; l= l->next)
+                        {
+                           Evas_Key_Grab *g;
+
+                           g = l->data;
+                           l = l->next;
+                           if (g->delete_me)
+                             evas_key_grab_free(g->object, g->keyname, g->modifiers, g->not_modifiers);
+                        }
+                   }
+              }
+         }
+       if ((e->focused) && (!exclusive))
+         {
+            if (e->events_frozen <= 0)
+              evas_object_event_callback_call(e->focused, EVAS_CALLBACK_KEY_UP, &ev);
+         }
+     }
+   _evas_unwalk(e);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_event_feed_hold(Evas *e, int hold, unsigned int timestamp, const void *data)
+{
+   Evas_List *l, *copy;
+   Evas_Event_Hold ev;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if (e->events_frozen > 0) return;
+   e->last_timestamp = timestamp;
+
+   ev.hold = hold;
+   ev.data = (void *)data;
+   ev.timestamp = timestamp;
+   ev.event_flags = EVAS_EVENT_FLAG_NONE;
+
+   _evas_walk(e);
+   copy = evas_event_list_copy(e->pointer.object.in);
+   for (l = copy; l; l = l->next)
+     {
+       Evas_Object *obj;
+
+       obj = l->data;
+       if (e->events_frozen <= 0)
+         evas_object_event_callback_call(obj, EVAS_CALLBACK_HOLD, &ev);
+       if (e->delete_me) break;
+     }
+   if (copy) copy = evas_list_free(copy);
+   _evas_unwalk(e);
+}
+
+/**
+ * @defgroup Evas_Object_Event_Flags_Group Evas Object Event Flag Functions
+ *
+ * Functions that deal with how events on an Evas Object are processed.
+ */
+
+/**
+ * Set an object's pass events state.
+ * @param obj the evas object
+ * @param pass whether to pass events or not
+ *
+ * If @p pass is true, this will cause events on @p obj to be ignored.
+ * They will be triggered on the next lower object (that is not set to
+ * pass events) instead.
+ *
+ * If @p pass is false, events will be processed as normal.
+ *
+ * @ingroup Evas_Object_Event_Flags_Group
+ */
+EAPI void
+evas_object_pass_events_set(Evas_Object *obj, Evas_Bool pass)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   obj->pass_events = pass;
+   evas_object_smart_member_cache_invalidate(obj);
+   if (evas_object_is_in_output_rect(obj,
+                                    obj->layer->evas->pointer.x,
+                                    obj->layer->evas->pointer.y, 1, 1) &&
+       ((!obj->precise_is_inside) ||
+       (evas_object_is_inside(obj,
+                               obj->layer->evas->pointer.x,
+                               obj->layer->evas->pointer.y))))
+     evas_event_feed_mouse_move(obj->layer->evas,
+                               obj->layer->evas->pointer.x,
+                               obj->layer->evas->pointer.y,
+                               obj->layer->evas->last_timestamp,
+                               NULL);
+}
+
+/**
+ * Determine whether an object is set to pass events.
+ * @param obj
+ * @return pass events state
+ *
+ * @ingroup Evas_Object_Event_Flags_Group
+ */
+EAPI Evas_Bool
+evas_object_pass_events_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   return obj->pass_events;
+}
+
+/**
+ * Set an object's repeat events state.
+ * @param obj the object
+ * @param repeat wheter to repeat events or not
+ *
+ * If @p repeat is true, this will cause events on @p obj to trigger
+ * callbacks, but also to be repeated on the next lower object in the
+ * stack.
+ *
+ * If @p repeat is false, events occuring on @p obj will be processed
+ * normally.
+ *
+ * @ingroup Evas_Object_Event_Flags_Group
+ */
+EAPI void
+evas_object_repeat_events_set(Evas_Object *obj, Evas_Bool repeat)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   obj->repeat_events = repeat;
+   if (evas_object_is_in_output_rect(obj,
+                                    obj->layer->evas->pointer.x,
+                                    obj->layer->evas->pointer.y, 1, 1) &&
+       ((!obj->precise_is_inside) ||
+       (evas_object_is_inside(obj,
+                               obj->layer->evas->pointer.x,
+                               obj->layer->evas->pointer.y))))
+     evas_event_feed_mouse_move(obj->layer->evas,
+                               obj->layer->evas->pointer.x,
+                               obj->layer->evas->pointer.y,
+                               obj->layer->evas->last_timestamp,
+                               NULL);
+}
+
+/**
+ * Determine whether an object is set to repeat events.
+ * @param obj
+ * @return repeat events state
+ *
+ * @ingroup Evas_Object_Event_Flags_Group
+ */
+EAPI Evas_Bool
+evas_object_repeat_events_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   return obj->repeat_events;
+}
+
+/**
+ * Set whether events on a smart member object should propagate to its parent.
+ *
+ * @param obj the smart member object
+ * @param prop wheter to propagate events or not
+ *
+ * This function has no effect if @p obj is not a member of a smart
+ * object.
+ *
+ * If @p prop is true, events occuring on this object will propagate on
+ * to the smart object of which @p obj is a member.
+ *
+ * If @p prop is false, events for which callbacks are set on the member
+ * object, @p obj, will not be passed on to the parent smart object.
+ *
+ * The default value is true.
+ * @ingroup Evas_Object_Event_Flags_Group
+ */
+EAPI void
+evas_object_propagate_events_set(Evas_Object *obj, Evas_Bool prop)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   obj->no_propagate = !prop;
+}
+
+/**
+ * Determine whether an object is set to propagate events.
+ * @param obj
+ * @return propogate events state
+ *
+ * @ingroup Evas_Object_Event_Flags_Group
+ */
+EAPI Evas_Bool
+evas_object_propagate_events_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   return !(obj->no_propagate);
+}
+
+/**
+ * Set pointer behavior.
+ *
+ * @param obj
+ * @param setting desired behavior.
+ *
+ * This function has direct effect on event callbacks related to mouse.
+ *
+ * If @p setting is EVAS_OBJECT_POINTER_MODE_AUTOGRAB, then when mouse is
+ * down at this object, events will be restricted to it as source, mouse
+ * moves, for example, will be emitted even if outside this object area.
+ *
+ * If @p setting is EVAS_OBJECT_POINTER_MODE_NOGRAB, then events will be
+ * emitted just when inside this object area.
+ *
+ * The default value is EVAS_OBJECT_POINTER_MODE_AUTOGRAB.
+ */
+EAPI void
+evas_object_pointer_mode_set(Evas_Object *obj, Evas_Object_Pointer_Mode setting)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   obj->pointer_mode = setting;
+}
+
+/**
+ * Determine how pointer will behave.
+ * @param obj
+ * @return pointer behavior.
+ */
+EAPI Evas_Object_Pointer_Mode
+evas_object_pointer_mode_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   return obj->pointer_mode;
+}
diff --git a/src/lib/canvas/evas_focus.c b/src/lib/canvas/evas_focus.c
new file mode 100644 (file)
index 0000000..ad6e259
--- /dev/null
@@ -0,0 +1,98 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* private calls */
+
+/* local calls */
+
+/* public calls */
+
+/**
+ * Sets focus to the given object.
+ * 
+ * @param obj The object to be focused or unfocused.
+ * @param focus set or remove focus to the object.
+ *
+ * Changing focus only affects where key events go.
+ * There can be only one object focused at any time.
+ * <p>
+ * If the parameter (@p focus) is set, the passed object will be set as the
+ * currently focused object.  It will receive all keyboard events that are not
+ * exclusive key grabs on other objects.
+ *
+ * @see evas_object_focus_get
+ * @see evas_focus_get
+ * @see evas_object_key_grab
+ * @see evas_object_key_ungrab
+ */
+EAPI void
+evas_object_focus_set(Evas_Object *obj, Evas_Bool focus)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+
+   if (focus)
+     {
+       if (obj->focused) return;
+       if (obj->layer->evas->focused)
+         evas_object_focus_set(obj->layer->evas->focused, 0);
+       obj->focused = 1;
+       obj->layer->evas->focused = obj;
+       evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_IN, NULL);
+     }
+   else
+     {
+       if (!obj->focused) return;
+       obj->focused = 0;
+       obj->layer->evas->focused = NULL;
+       evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL);
+     }
+}
+
+/**
+ * Test if the object has focus.
+ *
+ * @param obj The object to be tested.
+ * 
+ * If the passed object is the currently focused object 1 is returned,
+ * 0 otherwise.
+ * 
+ * @see evas_object_focus_set
+ * @see evas_focus_get
+ * @see evas_object_key_grab
+ * @see evas_object_key_ungrab
+ *
+ * @return 1 if the object has the focus, 0 otherwise.
+ */
+EAPI Evas_Bool
+evas_object_focus_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   return obj->focused;
+}
+
+/**
+ * Retrieve the object that currently has focus.
+ *
+ * @param e The @c Evas canvas to query focus on.
+ * 
+ * Returns the object that currently has focus, NULL otherwise.
+ * 
+ * @see evas_object_focus_set
+ * @see evas_object_focus_get
+ * @see evas_object_key_grab
+ * @see evas_object_key_ungrab
+ *
+ * @return The object that has focus or NULL is there is not one.
+ */
+EAPI Evas_Object *
+evas_focus_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   return e->focused;
+}
diff --git a/src/lib/canvas/evas_font_dir.c b/src/lib/canvas/evas_font_dir.c
new file mode 100644 (file)
index 0000000..a46b4d6
--- /dev/null
@@ -0,0 +1,787 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#ifdef BUILD_FONT_LOADER_EET
+#include <Eet.h>
+#endif
+#ifdef HAVE_FONTCONFIG
+#include <fontconfig/fontconfig.h>
+#endif
+
+/* font dir cache */
+static Evas_Hash *font_dirs = NULL;
+static Evas_List *fonts_cache = NULL;
+static Evas_List *fonts_zero = NULL;
+
+typedef struct _Fndat Fndat;
+
+struct _Fndat
+{
+   const char *name;
+   const char *source;
+   int         size;
+   void       *font;
+   int         ref;
+};
+
+/* private methods for font dir cache */
+static Evas_Bool font_cache_dir_free(const Evas_Hash *hash, const char *key, void *data, void *fdata);
+static Evas_Font_Dir *object_text_font_cache_dir_update(char *dir, Evas_Font_Dir *fd);
+static Evas_Font *object_text_font_cache_font_find_x(Evas_Font_Dir *fd, char *font);
+static Evas_Font *object_text_font_cache_font_find_file(Evas_Font_Dir *fd, char *font);
+static Evas_Font *object_text_font_cache_font_find_alias(Evas_Font_Dir *fd, char *font);
+static Evas_Font *object_text_font_cache_font_find(Evas_Font_Dir *fd, char *font);
+static Evas_Font_Dir *object_text_font_cache_dir_add(char *dir);
+static void object_text_font_cache_dir_del(char *dir, Evas_Font_Dir *fd);
+static int evas_object_text_font_string_parse(char *buffer, char dest[14][256]);
+
+void
+evas_font_dir_cache_free(void)
+{
+   if (!font_dirs) return;
+
+   evas_hash_foreach(font_dirs, font_cache_dir_free, NULL);
+   evas_hash_free(font_dirs);
+   font_dirs = NULL;
+}
+
+const char *
+evas_font_dir_cache_find(char *dir, char *font)
+{
+   Evas_Font_Dir *fd;
+
+   fd = evas_hash_find(font_dirs, dir);
+   fd = object_text_font_cache_dir_update(dir, fd);
+   if (fd)
+     {
+       Evas_Font *fn;
+
+       fn = object_text_font_cache_font_find(fd, font);
+       if (fn)
+         {
+            return fn->path;
+         }
+     }
+   return NULL;
+}
+
+static Evas_List *
+evas_font_set_get(const char *name)
+{
+   Evas_List *fonts = NULL;
+   char *p;
+
+   p = strchr(name, ',');
+   if (!p)
+     {
+       fonts = evas_list_append(fonts, evas_stringshare_add(name));
+     }
+   else
+     {
+       const char *pp;
+       char *nm;
+
+       pp = name;
+       while (p)
+         {
+            nm = alloca(p - pp + 1);
+            strncpy(nm, pp, p - pp);
+            nm[p - pp] = 0;
+            fonts = evas_list_append(fonts, evas_stringshare_add(nm));
+            pp = p + 1;
+            p = strchr(pp, ',');
+            if (!p) fonts = evas_list_append(fonts, evas_stringshare_add(pp));
+         }
+     }
+   return fonts;
+}
+
+void
+evas_font_free(Evas *evas, void *font)
+{
+   Evas_List *l;
+
+   for (l = fonts_cache; l; l = l->next)
+     {
+       Fndat *fd;
+
+       fd = l->data;
+       if (fd->font == font)
+         {
+            fd->ref--;
+            if (fd->ref == 0)
+              {
+                 fonts_cache = evas_list_remove_list(fonts_cache, l);
+                 fonts_zero = evas_list_append(fonts_zero, fd);
+              }
+            break;
+         }
+     }
+   while ((fonts_zero) &&
+         (evas_list_count(fonts_zero) > 4)) /* 4 is arbitrary */
+     {
+       Fndat *fd;
+
+       fd = evas_list_data(fonts_zero);
+       if (fd->ref != 0) break;
+       fonts_zero = evas_list_remove_list(fonts_zero, fonts_zero);
+       if (fd->name) evas_stringshare_del(fd->name);
+       if (fd->source) evas_stringshare_del(fd->source);
+       evas->engine.func->font_free(evas->engine.data.output, fd->font);
+       free(fd);
+     }
+}
+
+void *
+evas_font_load(Evas *evas, const char *name, const char *source, int size)
+{
+   void *font = NULL;
+   Evas_List *fonts, *l;
+   Fndat *fd;
+
+   if (!name) return NULL;
+   if (name[0] == 0) return NULL;
+
+   for (l = fonts_cache; l; l = l->next)
+     {
+       fd = l->data;
+       if (!strcmp(name, fd->name))
+         {
+            if (((!source) && (!fd->source)) ||
+                ((source) && (fd->source) && (!strcmp(source, fd->source))))
+              {
+                 if (size == fd->size)
+                   {
+                      fonts_cache = evas_list_promote_list(fonts_cache, l);
+                      fd->ref++;
+                      return fd->font;
+                   }
+              }
+         }
+     }
+
+   for (l = fonts_zero; l; l = l->next)
+     {
+       fd = l->data;
+       if (!strcmp(name, fd->name))
+         {
+            if (((!source) && (!fd->source)) ||
+                ((source) && (fd->source) && (!strcmp(source, fd->source))))
+              {
+                 if (size == fd->size)
+                   {
+                      fonts_zero = evas_list_remove_list(fonts_zero, l);
+                      fonts_cache = evas_list_prepend(fonts_cache, fd);
+                      fd->ref++;
+                      return fd->font;
+                   }
+              }
+         }
+     }
+   fonts = evas_font_set_get(name);
+   for (l = fonts; l; l = l->next) /* Load each font in append */
+     {
+       char *nm;
+
+       nm = l->data;
+       if ((l == fonts) || (!font)) /* First iteration OR no font */
+         {
+#ifdef BUILD_FONT_LOADER_EET
+            if (source) /* Load Font from "eet" source */
+              {
+                 Eet_File *ef;
+                 char *fake_name;
+
+                 fake_name = evas_file_path_join(source, nm);
+                 if (fake_name)
+                   {
+                      font = evas->engine.func->font_load(evas->engine.data.output, fake_name, size);
+                      if (!font) /* Load from fake name failed, probably not cached */
+                        {
+                           /* read original!!! */
+                           ef = eet_open(source, EET_FILE_MODE_READ);
+                           if (ef)
+                             {
+                                void *fdata;
+                                int fsize = 0;
+
+                                fdata = eet_read(ef, nm, &fsize);
+                                if ((fdata) && (fsize > 0))
+                                  {
+                                     font = evas->engine.func->font_memory_load(evas->engine.data.output, fake_name, size, fdata, fsize);
+                                     free(fdata);
+                                  }
+                                eet_close(ef);
+                             }
+                        }
+                      free(fake_name);
+                   }
+              }
+            if (!font) /* Source load failed */
+              {
+#endif
+                 if (evas_file_path_is_full_path((char *)nm)) /* Try filename */
+                   font = evas->engine.func->font_load(evas->engine.data.output, (char *)nm, size);
+                 else /* search font path */
+                   {
+                      Evas_List *l;
+
+                      for (l = evas->font_path; l; l = l->next)
+                        {
+                           const char *f_file;
+
+                           f_file = evas_font_dir_cache_find(l->data, (char *)nm);
+                           if (f_file)
+                             {
+                                font = evas->engine.func->font_load(evas->engine.data.output, f_file, size);
+                                if (font) break;
+                             }
+                        }
+                   }
+#ifdef BUILD_FONT_LOADER_EET
+              }
+#endif
+         }
+       else /* Base font loaded, append others */
+         {
+#ifdef BUILD_FONT_LOADER_EET
+            void *ok = NULL;
+
+            if (source)
+              {
+                 Eet_File *ef;
+                 char *fake_name;
+
+                 fake_name = evas_file_path_join(source, nm);
+                 if (fake_name)
+                   {
+                      /* FIXME: make an engine func */
+                      if (!evas->engine.func->font_add(evas->engine.data.output, font, fake_name, size))
+                        {
+                           /* read original!!! */
+                           ef = eet_open(source, EET_FILE_MODE_READ);
+                           if (ef)
+                             {
+                                void *fdata;
+                                int fsize = 0;
+
+                                fdata = eet_read(ef, nm, &fsize);
+                                if ((fdata) && (fsize > 0))
+                                  {
+                                     ok = evas->engine.func->font_memory_add(evas->engine.data.output, font, fake_name, size, fdata, fsize);
+                                     free(fdata);
+                                  }
+                                eet_close(ef);
+                             }
+                        }
+                      else
+                        ok = (void *)1;
+                      free(fake_name);
+                   }
+              }
+            if (!ok)
+              {
+#endif
+                 if (evas_file_path_is_full_path((char *)nm))
+                   evas->engine.func->font_add(evas->engine.data.output, font, (char *)nm, size);
+                 else
+                   {
+                      Evas_List *l;
+
+                      for (l = evas->font_path; l; l = l->next)
+                        {
+                           const char *f_file;
+
+                           f_file = evas_font_dir_cache_find(l->data, (char *)nm);
+                           if (f_file)
+                             {
+                                if (evas->engine.func->font_add(evas->engine.data.output, font, f_file, size))
+                                  break;
+                             }
+                        }
+                   }
+#ifdef BUILD_FONT_LOADER_EET
+              }
+#endif
+         }
+       evas_stringshare_del(nm);
+     }
+   evas_list_free(fonts);
+
+#ifdef HAVE_FONTCONFIG
+
+   if (!font) /* Search using fontconfig */
+     {
+       FcPattern *p_nm = NULL;
+       FcFontSet *set;
+       FcResult res;
+       int i;
+
+       p_nm = FcNameParse((FcChar8 *)name);
+       FcConfigSubstitute(NULL, p_nm, FcMatchPattern);
+       FcDefaultSubstitute(p_nm);
+
+       /* do matching */
+       set = FcFontSort(NULL, p_nm, FcTrue, NULL, &res);
+
+       /* Do loading for all in family */
+       for (i = 0; i < set->nfont; i++)
+         {
+            FcValue filename;
+
+            FcPatternGet(set->fonts[i], FC_FILE, 0, &filename);
+
+            if (font)
+              evas->engine.func->font_add(evas->engine.data.output, font, (char *)filename.u.s, size);           
+            else         
+              font = evas->engine.func->font_load(evas->engine.data.output, (char *)filename.u.s, size);
+         }
+
+       FcFontSetDestroy(set);
+       FcPatternDestroy(p_nm);
+     }
+#endif
+
+   fd = calloc(1, sizeof(Fndat));
+   if (fd)
+     {
+       fd->name = evas_stringshare_add(name);
+       if (source) fd->source = evas_stringshare_add(source);
+       fd->size = size;
+       fd->font = font;
+       fd->ref = 1;
+       fonts_cache = evas_list_prepend(fonts_cache, fd);
+     }
+
+   if (font)
+     evas->engine.func->font_hinting_set(evas->engine.data.output, font,
+                                        evas->hinting);
+   return font;
+}
+
+void
+evas_font_load_hinting_set(Evas *evas, void *font, int hinting)
+{
+   evas->engine.func->font_hinting_set(evas->engine.data.output, font,
+                                      hinting);
+}
+
+Evas_List *
+evas_font_dir_available_list(const Evas *evas)
+{
+   Evas_List *l;
+   Evas_List *ll;
+   Evas_List *available = NULL;
+
+#ifdef HAVE_FONTCONFIG
+   /* Add font config fonts */
+   FcPattern *p;
+   FcFontSet *set = NULL;
+   FcObjectSet *os;
+   int i;
+
+   p = FcPatternCreate();
+   os = FcObjectSetBuild(FC_FAMILY, FC_STYLE, NULL);
+
+   if (p && os) set = FcFontList(NULL, p, os);
+
+   if (p) FcPatternDestroy(p);
+   if (os) FcObjectSetDestroy(os);
+
+   if (set)
+     {
+       for (i = 0; i < set->nfont; i++)
+         {
+            char *font;
+
+            font = (char *)FcNameUnparse(set->fonts[i]);
+            available = evas_list_append(available, evas_stringshare_add(font));
+            free(font);
+         }
+
+       FcFontSetDestroy(set);
+     }
+#endif
+
+   /* Add fonts in evas font_path*/
+   if (!evas->font_path)
+     return available;
+
+   for (l = evas->font_path; l; l = l->next)
+     {
+       Evas_Font_Dir *fd;
+
+       fd = evas_hash_find(font_dirs, (char *)l->data);
+       fd = object_text_font_cache_dir_update((char *)l->data, fd);
+       if (fd && fd->aliases)
+         {
+            for (ll = fd->aliases; ll; ll = ll->next)
+              {
+                 Evas_Font_Alias *fa;
+
+                 fa = ll->data;
+                 available = evas_list_append(available, evas_stringshare_add((char *)fa->alias));
+              }
+         }
+     }
+
+   return available;
+}
+
+void
+evas_font_dir_available_list_free(Evas_List *available)
+{
+   while (available)
+     {
+       evas_stringshare_del(available->data);
+       available = evas_list_remove(available, available->data);
+     }
+}
+
+/* private stuff */
+static Evas_Bool
+font_cache_dir_free(const Evas_Hash *hash, const char *key, void *data, void *fdata)
+{
+   object_text_font_cache_dir_del((char *) key, data);
+   return 1;
+}
+
+static Evas_Font_Dir *
+object_text_font_cache_dir_update(char *dir, Evas_Font_Dir *fd)
+{
+   DATA64 mt;
+   char *tmp;
+
+   if (fd)
+     {
+       mt = evas_file_modified_time(dir);
+       if (mt != fd->dir_mod_time)
+         {
+            object_text_font_cache_dir_del(dir, fd);
+            font_dirs = evas_hash_del(font_dirs, dir, fd);
+         }
+       else
+         {
+            tmp = evas_file_path_join(dir, "fonts.dir");
+            if (tmp)
+              {
+                 mt = evas_file_modified_time(tmp);
+                 free(tmp);
+                 if (mt != fd->fonts_dir_mod_time)
+                   {
+                      object_text_font_cache_dir_del(dir, fd);
+                      font_dirs = evas_hash_del(font_dirs, dir, fd);
+                   }
+                 else
+                   {
+                      tmp = evas_file_path_join(dir, "fonts.alias");
+                      if (tmp)
+                        {
+                           mt = evas_file_modified_time(tmp);
+                           free(tmp);
+                        }
+                      if (mt != fd->fonts_alias_mod_time)
+                        {
+                           object_text_font_cache_dir_del(dir, fd);
+                           font_dirs = evas_hash_del(font_dirs, dir, fd);
+                        }
+                      else
+                        return fd;
+                   }
+              }
+         }
+     }
+   return object_text_font_cache_dir_add(dir);
+}
+
+static Evas_Font *
+object_text_font_cache_font_find_x(Evas_Font_Dir *fd, char *font)
+{
+   Evas_List *l;
+   char font_prop[14][256];
+   int num;
+
+   num = evas_object_text_font_string_parse(font, font_prop);
+   if (num != 14) return NULL;
+   for (l = fd->fonts; l; l = l->next)
+     {
+       Evas_Font *fn;
+
+       fn = l->data;
+       if (fn->type == 1)
+         {
+            int i;
+            int match = 0;
+
+            for (i = 0; i < 14; i++)
+              {
+                 if ((font_prop[i][0] == '*') && (font_prop[i][1] == 0))
+                   match++;
+                 else
+                   {
+                      if (!strcasecmp(font_prop[i], fn->x.prop[i])) match++;
+                      else break;
+                   }
+              }
+            if (match == 14) return fn;
+         }
+     }
+   return NULL;
+}
+
+static Evas_Font *
+object_text_font_cache_font_find_file(Evas_Font_Dir *fd, char *font)
+{
+   Evas_List *l;
+
+   for (l = fd->fonts; l; l = l->next)
+     {
+       Evas_Font *fn;
+
+       fn = l->data;
+       if (fn->type == 0)
+         {
+            if (!strcasecmp(font, fn->simple.name)) return fn;
+         }
+     }
+   return NULL;
+}
+
+static Evas_Font *
+object_text_font_cache_font_find_alias(Evas_Font_Dir *fd, char *font)
+{
+   Evas_List *l;
+
+   for (l = fd->aliases; l; l = l->next)
+     {
+       Evas_Font_Alias *fa;
+
+       fa = l->data;
+       if (!strcasecmp(fa->alias, font)) return fa->fn;
+     }
+   return NULL;
+}
+
+static Evas_Font *
+object_text_font_cache_font_find(Evas_Font_Dir *fd, char *font)
+{
+   Evas_Font *fn;
+
+   fn = evas_hash_find(fd->lookup, font);
+   if (fn) return fn;
+   fn = object_text_font_cache_font_find_alias(fd, font);
+   if (!fn) fn = object_text_font_cache_font_find_x(fd, font);
+   if (!fn) fn = object_text_font_cache_font_find_file(fd, font);
+   if (!fn) return NULL;
+   fd->lookup = evas_hash_add(fd->lookup, font, fn);
+   return fn;
+}
+
+static Evas_Font_Dir *
+object_text_font_cache_dir_add(char *dir)
+{
+   Evas_Font_Dir *fd;
+   char *tmp, *tmp2;
+   Evas_List *fdir;
+
+   fd = calloc(1, sizeof(Evas_Font_Dir));
+   if (!fd) return NULL;
+   font_dirs = evas_hash_add(font_dirs, dir, fd);
+
+   /* READ fonts.alias, fonts.dir and directory listing */
+
+   /* fonts.dir */
+   tmp = evas_file_path_join(dir, "fonts.dir");
+   if (tmp)
+     {
+       FILE *f;
+
+       f = fopen(tmp, "r");
+       if (f)
+         {
+            int num;
+            char fname[4096], fdef[4096];
+
+            if (fscanf(f, "%i\n", &num) != 1) goto cant_read;
+            /* read font lines */
+            while (fscanf(f, "%4090s %[^\n]\n", fname, fdef) == 2)
+              {
+                 char font_prop[14][256];
+                 int i;
+
+                 /* skip comments */
+                 if ((fdef[0] == '!') || (fdef[0] == '#')) continue;
+                 /* parse font def */
+                 num = evas_object_text_font_string_parse((char *)fdef, font_prop);
+                 if (num == 14)
+                   {
+                      Evas_Font *fn;
+
+                      fn = calloc(1, sizeof(Evas_Font));
+                      if (fn)
+                        {
+                           fn->type = 1;
+                           for (i = 0; i < 14; i++)
+                             fn->x.prop[i] = evas_stringshare_add(font_prop[i]);
+                           tmp2 = evas_file_path_join(dir, fname);
+                           if (tmp2)
+                             {
+                                fn->path = evas_stringshare_add(tmp2);
+                                free(tmp2);
+                             }
+                           fd->fonts = evas_list_append(fd->fonts, fn);
+                        }
+                   }
+              }
+            cant_read: ;
+            fclose(f);
+         }
+       free(tmp);
+     }
+
+   /* directoy listing */
+   fdir = evas_file_path_list(dir, "*.ttf", 0);
+   while (fdir)
+     {
+       tmp = evas_file_path_join(dir, fdir->data);
+       if (tmp)
+         {
+            Evas_Font *fn;
+
+            fn = calloc(1, sizeof(Evas_Font));
+            if (fn)
+              {
+                 char *p;
+
+                 fn->type = 0;
+                 tmp2 = alloca(strlen(fdir->data) + 1);
+                 strcpy(tmp2, fdir->data);
+                 p = strrchr(tmp2, '.');
+                 if (p) *p = 0;
+                 fn->simple.name = evas_stringshare_add(tmp2);
+                 tmp2 = evas_file_path_join(dir, fdir->data);
+                 if (tmp2)
+                   {
+                      fn->path = evas_stringshare_add(tmp2);
+                      free(tmp2);
+                   }
+                 fd->fonts = evas_list_append(fd->fonts, fn);
+              }
+            free(tmp);
+         }
+       free(fdir->data);
+       fdir = evas_list_remove(fdir, fdir->data);
+     }
+
+   /* fonts.alias */
+   tmp = evas_file_path_join(dir, "fonts.alias");
+   if (tmp)
+     {
+       FILE *f;
+
+       f = fopen(tmp, "r");
+       if (f)
+         {
+            char fname[4096], fdef[4096];
+
+            /* read font alias lines */
+            while (fscanf(f, "%4090s %[^\n]\n", fname, fdef) == 2)
+              {
+                 Evas_Font_Alias *fa;
+
+                 /* skip comments */
+                 if ((fname[0] == '!') || (fname[0] == '#')) continue;
+                 fa = calloc(1, sizeof(Evas_Font_Alias));
+                 if (fa)
+                   {
+                      fa->alias = evas_stringshare_add(fname);
+                      fa->fn = object_text_font_cache_font_find_x(fd, fdef);
+                      if ((!fa->alias) || (!fa->fn))
+                        {
+                           if (fa->alias) evas_stringshare_del(fa->alias);
+                           free(fa);
+                        }
+                      else
+                        fd->aliases = evas_list_append(fd->aliases, fa);
+                   }
+              }
+            fclose(f);
+         }
+       free(tmp);
+     }
+
+   fd->dir_mod_time = evas_file_modified_time(dir);
+   tmp = evas_file_path_join(dir, "fonts.dir");
+   if (tmp)
+     {
+       fd->fonts_dir_mod_time = evas_file_modified_time(tmp);
+       free(tmp);
+     }
+   tmp = evas_file_path_join(dir, "fonts.alias");
+   if (tmp)
+     {
+       fd->fonts_alias_mod_time = evas_file_modified_time(tmp);
+       free(tmp);
+     }
+
+   return fd;
+}
+
+static void
+object_text_font_cache_dir_del(char *dir, Evas_Font_Dir *fd)
+{
+   if (fd->lookup) evas_hash_free(fd->lookup);
+   while (fd->fonts)
+     {
+       Evas_Font *fn;
+       int i;
+
+       fn = fd->fonts->data;
+       fd->fonts = evas_list_remove(fd->fonts, fn);
+       for (i = 0; i < 14; i++)
+         {
+            if (fn->x.prop[i]) evas_stringshare_del(fn->x.prop[i]);
+         }
+       if (fn->simple.name) evas_stringshare_del(fn->simple.name);
+       if (fn->path) evas_stringshare_del(fn->path);
+       free(fn);
+     }
+   while (fd->aliases)
+     {
+       Evas_Font_Alias *fa;
+
+       fa = fd->aliases->data;
+       fd->aliases = evas_list_remove(fd->aliases, fa);
+       if (fa->alias) evas_stringshare_del(fa->alias);
+       free(fa);
+     }
+   free(fd);
+}
+
+static int
+evas_object_text_font_string_parse(char *buffer, char dest[14][256])
+{
+   char *p;
+   int n, m, i;
+
+   n = 0;
+   m = 0;
+   p = buffer;
+   if (p[0] != '-') return 0;
+   i = 1;
+   while (p[i])
+     {
+       dest[n][m] = p[i];
+       if ((p[i] == '-') || (m == 256))
+         {
+            dest[n][m] = 0;
+            n++;
+            m = -1;
+         }
+       i++;
+       m++;
+       if (n == 14) return n;
+     }
+   dest[n][m] = 0;
+   n++;
+   return n;
+}
diff --git a/src/lib/canvas/evas_key.c b/src/lib/canvas/evas_key.c
new file mode 100644 (file)
index 0000000..289a3f4
--- /dev/null
@@ -0,0 +1,418 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* private calls */
+
+static int
+evas_key_modifier_number(const Evas_Modifier *m, const char *keyname)
+{
+   int i;
+
+   for (i = 0; i < m->mod.count; i++)
+     {
+       if (!strcmp(m->mod.list[i], keyname)) return i;
+     }
+   return -1;
+}
+
+static int
+evas_key_lock_number(const Evas_Lock *l, const char *keyname)
+{
+   int i;
+
+   for (i = 0; i < l->lock.count; i++)
+     {
+       if (!strcmp(l->lock.list[i], keyname)) return i;
+     }
+   return -1;
+}
+
+/* local calls */
+
+/* public calls */
+
+/**
+ * Returns a handle to the modifiers available in the system.  This is required to check
+ * for modifiers with the evas_key_modifier_is_set_get function.
+ *
+ *
+ * @see evas_key_modifier_add
+ * @see evas_key_modifier_del
+ * @see evas_key_modifier_on
+ * @see evas_key_modifier_off
+ * @see evas_key_modifier_is_set_get
+ *
+ * @param e The pointer to the Evas Canvas
+ *
+ * @return An Evas_Modifier handle to query the modifier subsystem with
+ *     evas_key_modifier_is_set_get, or NULL on error.
+ */
+EAPI const Evas_Modifier *
+evas_key_modifier_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   return &(e->modifiers);
+}
+
+/**
+ * Returns a handle to the locks available in the system.  This is required to check for
+ * locks with the evas_key_lock_is_set_get function.
+ *
+ * @see evas_key_lock_add
+ * @see evas_key_lock_del
+ * @see evas_key_lock_on
+ * @see evas_key_lock_off
+ *
+ * @see evas_key_lock_is_set_get
+ * @param e The pointer to the Evas Canvas
+ *
+ * @return An Evas_Lock handle to query the lock subsystem with
+ *     evas_key_lock_is_set_get, or NULL on error.
+ */
+EAPI const Evas_Lock *
+evas_key_lock_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   return &(e->locks);
+}
+
+/**
+ * Checks the state of a given modifier.  If the modifier is set, such as shift being pressed
+ * this function returns true.
+ * 
+ * @see evas_key_modifier_add
+ * @see evas_key_modifier_del
+ * @see evas_key_modifier_get
+ * @see evas_key_modifier_on
+ * @see evas_key_modifier_off
+ * 
+ * @param m The current modifier set as returned by evas_key_modifier_get.
+ * @param keyname The name of the key to check its status.
+ *
+ * @return 1 if the @p keyname is on, 0 otherwise.
+ */
+EAPI Evas_Bool
+evas_key_modifier_is_set(const Evas_Modifier *m, const char *keyname)
+{
+   Evas_Modifier_Mask num;
+   int n;
+
+   if (!m) return 0;
+   if (!keyname) return 0;
+   n = evas_key_modifier_number(m, keyname);
+   if (n < 0) return 0;
+   num = (Evas_Modifier_Mask)n;
+   num = 1 << num;
+   if (m->mask & num) return 1;
+   return 0;
+}
+
+/**
+ * Checks the state of a given lock.  If the lock is set, such as caps lock, this function
+ * returns true.
+ *
+ * @see evas_key_lock_get
+ * @see evas_key_lock_add
+ * @see evas_key_lock_del
+ * @see evas_key_lock_on
+ * @see evas_key_lock_off
+ *
+ * @param l The current lock set as returned by evas_key_lock_get.
+ * @param keyname The name of the lock to add the the list.
+ * 
+ * @param 1 if the @p keyname kock is set, 0 otherwise.
+ */
+EAPI Evas_Bool
+evas_key_lock_is_set(const Evas_Lock *l, const char *keyname)
+{
+   Evas_Modifier_Mask num;
+   int n;
+
+   if (!l) return 0;
+   if (!keyname) return 0;
+   n = evas_key_lock_number(l, keyname);
+   if (n < 0) return 0;
+   num = (Evas_Modifier_Mask)n;
+   num = 1 << num;
+   if (l->mask & num) return 1;
+   return 0;
+}
+
+/**
+ * Adds the @p keyname to the current list of modifiers.
+ * 
+ * Modifiers can be keys like shift, alt and ctrl, as well as user defined.  This allows
+ * custom modifiers to be added to the evas system as run time.  It is then possible to set
+ * and unset the modifier for other parts of the program to check and act on.
+ *
+ * @see evas_key_modifier_del
+ * @see evas_key_modifier_get
+ * @see evas_key_modifier_on
+ * @see evas_key_modifier_off
+ * @see evas_key_modifier_is_set_get
+ * 
+ * @param e The pointer to the Evas Canvas
+ * @param keyname The name of the modifier to add to the list.
+ */
+EAPI void
+evas_key_modifier_add(Evas *e, const char *keyname)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   if (!keyname) return;
+   if (e->modifiers.mod.count >= 64) return;
+   evas_key_modifier_del(e, keyname);
+   e->modifiers.mod.count++;
+   e->modifiers.mod.list = realloc(e->modifiers.mod.list, e->modifiers.mod.count * sizeof(char *));
+   e->modifiers.mod.list[e->modifiers.mod.count - 1] = strdup(keyname);
+   e->modifiers.mask = 0;
+}
+
+/**
+ * Removes the @p keyname from the current list of modifiers.
+ *
+ * @see evas_key_modifier_add
+ * @see evas_key_modifier_get
+ * @see evas_key_modifier_on
+ * @see evas_key_modifier_off
+ * @see evas_key_modifier_is_set_get
+ * 
+ * @param e The pointer to the Evas Canvas
+ * @param keyname The name of the key to remove from the modifiers list.
+ */
+EAPI void
+evas_key_modifier_del(Evas *e, const char *keyname)
+{
+   int i;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   if (!keyname) return;
+   for (i = 0; i < e->modifiers.mod.count; i++)
+     {
+       if (!strcmp(e->modifiers.mod.list[i], keyname))
+         {
+            int j;
+
+            free(e->modifiers.mod.list[i]);
+            e->modifiers.mod.count--;
+            for (j = i; j < e->modifiers.mod.count; j++)
+              e->modifiers.mod.list[j] = e->modifiers.mod.list[j + 1];
+            e->modifiers.mask = 0;
+            return;
+         }
+     }
+}
+
+/**
+ * Adds the @p keyname to the current list of locks.
+ *
+ * Locks can be keys like caps lock, num lock or scroll lock, as well as user defined.  This
+ * allows custom locks to be added to the evas system at run time.  It is then possible to
+ * set and unset the lock for other parts of the program to check and act on.
+ * 
+ * @see evas_key_lock_get
+ * @see evas_key_lock_del
+ * @see evas_key_lock_on
+ * @see evas_key_lock_off
+ * 
+ * @param e The pointer to the Evas Canvas
+ * @param keyname The name of the key to remove from the modifier list.
+ */
+EAPI void
+evas_key_lock_add(Evas *e, const char *keyname)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   if (!keyname) return;
+   if (e->locks.lock.count >= 64) return;
+   evas_key_lock_del(e, keyname);
+   e->locks.lock.count++;
+   e->locks.lock.list = realloc(e->locks.lock.list, e->locks.lock.count * sizeof(char *));
+   e->locks.lock.list[e->locks.lock.count - 1] = strdup(keyname);
+   e->locks.mask = 0;
+}
+
+/**
+ * Removes The @p keyname from the current list of locks.
+ *
+ * @see evas_key_lock_get
+ * @see evas_key_lock_add
+ * @see evas_key_lock_on
+ * @see evas_key_lock_off
+ * 
+ * @param e The pointer to the Evas Canvas
+ * @param keyname The name of the key to remove from the lock list.
+ */
+EAPI void
+evas_key_lock_del(Evas *e, const char *keyname)
+{
+   int i;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   if (!keyname) return;
+   e->locks.mask = 0;
+   for (i = 0; i < e->locks.lock.count; i++)
+     {
+       if (!strcmp(e->locks.lock.list[i], keyname))
+         {
+            int j;
+
+            free(e->locks.lock.list[i]);
+            e->locks.lock.count--;
+            for (j = i; j < e->locks.lock.count; j++)
+              e->locks.lock.list[j] = e->locks.lock.list[j + 1];
+            e->locks.mask = 0;
+            return;
+         }
+     }
+}
+
+/**
+ * Enables or turns on the modifier with name @p keyname.
+ * 
+ * @see evas_key_modifier_add
+ * @see evas_key_modifier_get
+ * @see evas_key_modifier_off
+ * @see evas_key_modifier_is_set_get
+ * 
+ * @param e The pointer to the Evas Canvas
+ * @param keyname The name of the modifier to set.
+ */
+EAPI void
+evas_key_modifier_on(Evas *e, const char *keyname)
+{
+   Evas_Modifier_Mask num;
+   int n;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   n = (Evas_Modifier_Mask)evas_key_modifier_number(&(e->modifiers), keyname);
+   if (n < 0) return;
+   num = (Evas_Modifier_Mask)n;
+   num = 1 << num;
+   e->modifiers.mask |= num;
+}
+
+/**
+ * Disables or turns off the modifier with name @p keyname.
+ * 
+ * @see evas_key_modifier_add
+ * @see evas_key_modifier_get
+ * @see evas_key_modifier_on
+ * @see evas_key_modifier_is_set_get
+ * 
+ * @param e The pointer to the Evas Canvas
+ * @param keyname The name of the modifier to un-set.
+ */
+EAPI void
+evas_key_modifier_off(Evas *e, const char *keyname)
+{
+   Evas_Modifier_Mask num;
+   int n;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   n = evas_key_modifier_number(&(e->modifiers), keyname);
+   if (n < 0) return;
+   num = (Evas_Modifier_Mask)n;
+   num = 1 << num;
+   e->modifiers.mask &= ~num;
+}
+
+/**
+ * Enables or turns on the lock with name @p keyname.
+ *
+ * @see evas_key_lock_get
+ * @see evas_key_lock_add
+ * @see evas_key_lock_del
+ * @see evas_key_lock_off
+ * 
+ * @param e The pointer to the Evas Canvas
+ * @param keyname The name of the lock to set.
+ */
+EAPI void
+evas_key_lock_on(Evas *e, const char *keyname)
+{
+   Evas_Modifier_Mask num;
+   int n;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   n = evas_key_lock_number(&(e->locks), keyname);
+   if (n < 0) return;
+   num = (Evas_Modifier_Mask)n;
+   num = 1 << num;
+   e->locks.mask |= num;
+}
+
+/**
+ * Disables or turns off the lock with name @p keyname.
+ *
+ * @see evas_key_lock_get
+ * @see evas_key_lock_add
+ * @see evas_key_lock_del
+ * @see evas_key_lock_on
+ * 
+ * @param e The pointer to the Evas Canvas
+ * @param keyname The name of the lock to un-set.
+ */
+EAPI void
+evas_key_lock_off(Evas *e, const char *keyname)
+{
+   Evas_Modifier_Mask num;
+   int n;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   n = evas_key_lock_number(&(e->locks), keyname);
+   if (n < 0) return;
+   num = (Evas_Modifier_Mask)n;
+   num = 1 << num;
+   e->locks.mask &= ~num;
+}
+
+/* errr need to add key grabbing/ungrabbing calls - missing modifier stuff. */
+
+/**
+ * Creates a bit mask from the @p keyname for use with events to check for the presence
+ * of the @p keyname modifier.
+ *
+ * @see evas_key_modifier_add
+ * @see evas_key_modifier_get
+ * @see evas_key_modifier_on
+ * @see evas_key_modifier_off
+ * @see evas_key_modifier_is_set_get
+ * 
+ * @param keyname The name of the modifier to create the mask for.
+ *
+ * @returns the bit mask or 0 if the @p keyname wasn't registered as a modifier.
+ */
+EAPI Evas_Modifier_Mask
+evas_key_modifier_mask_get(const Evas *e, const char *keyname)
+{
+   Evas_Modifier_Mask num;
+   int n;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+   if (!keyname) return 0;
+   n = evas_key_modifier_number(&(e->modifiers), keyname);
+   if (n < 0) return 0;
+   num = (Evas_Modifier_Mask)n;
+   return 1 << num;
+}
diff --git a/src/lib/canvas/evas_key_grab.c b/src/lib/canvas/evas_key_grab.c
new file mode 100644 (file)
index 0000000..ce227c2
--- /dev/null
@@ -0,0 +1,238 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* private calls */
+
+/* FIXME: this is not optimal, but works. i should have a hash of keys per */
+/* Evas and then a linked lists of grabs for that key and what */
+/* modifiers/not_modifers they use */
+
+static Evas_Key_Grab *evas_key_grab_new  (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, int exclusive);
+static Evas_Key_Grab *evas_key_grab_find (Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, int exclusive);
+
+static Evas_Key_Grab *
+evas_key_grab_new(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, int exclusive)
+{
+   /* MEM OK */
+   Evas_Key_Grab *g;
+
+   g = evas_mem_calloc(sizeof(Evas_Key_Grab));
+   if (!g) return NULL;
+   g->object = obj;
+   g->modifiers = modifiers;
+   g->not_modifiers = not_modifiers;
+   g->exclusive = exclusive;
+   g->keyname = strdup(keyname);
+   if (obj->layer->evas->walking_grabs)
+     g->just_added = 1;
+   if (!g->keyname)
+     {
+       if (!evas_mem_free(strlen(keyname) + 1))
+         {
+            free(g);
+            return NULL;
+         }
+       g->keyname = strdup(keyname);
+       if (!g->keyname)
+         {
+            free(g);
+            return NULL;
+         }
+     }
+   g->object->grabs = evas_list_append(g->object->grabs, g);
+   if (evas_list_alloc_error())
+     {
+       MERR_BAD();
+       evas_mem_free(sizeof(Evas_List));
+       g->object->grabs = evas_list_append(g->object->grabs, g);
+       if (evas_list_alloc_error())
+         {
+            MERR_FATAL();
+            free(g);
+            free(g->keyname);
+            return NULL;
+         }
+     }
+   obj->layer->evas->grabs = evas_list_append(obj->layer->evas->grabs, g);
+   if (evas_list_alloc_error())
+     {
+       MERR_BAD();
+       evas_mem_free(sizeof(Evas_List));
+       obj->layer->evas->grabs = evas_list_append(obj->layer->evas->grabs, g);
+       if (evas_list_alloc_error())
+         {
+            MERR_FATAL();
+            g->object->grabs = evas_list_remove(g->object->grabs, g);
+            free(g);
+            free(g->keyname);
+            return NULL;
+         }
+     }
+   return g;
+}
+
+static Evas_Key_Grab *
+evas_key_grab_find(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, int exclusive)
+{
+   /* MEM OK */
+   Evas_List *l;
+
+   for (l = obj->layer->evas->grabs; l; l = l->next)
+     {
+       Evas_Key_Grab *g;
+
+       g = l->data;
+       if ((g->modifiers == modifiers) &&
+           (g->not_modifiers == not_modifiers) &&
+           (!strcmp(g->keyname, keyname)))
+         {
+            if ((exclusive) ||  (obj == g->object)) return g;
+         }
+     }
+   return NULL;
+}
+
+/* local calls */
+
+void
+evas_object_grabs_cleanup(Evas_Object *obj)
+{
+   if (obj->layer->evas->walking_grabs)
+     {
+       Evas_List *l;
+
+       for (l = obj->grabs; l; l = l->next)
+         {
+            Evas_Key_Grab *g;
+
+            g = l->data;
+            g->delete_me = 1;
+         }
+     }
+   else
+     {
+       while (obj->grabs)
+         {
+            Evas_Key_Grab *g;
+
+            g = obj->grabs->data;
+            if (g->keyname) free(g->keyname);
+            free(g);
+            obj->layer->evas->grabs = evas_list_remove(obj->layer->evas->grabs, g);
+            obj->grabs = evas_list_remove(obj->grabs, g);
+         }
+     }
+}
+
+void
+evas_key_grab_free(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers)
+{
+   /* MEM OK */
+   Evas_Key_Grab *g;
+
+   g = evas_key_grab_find(obj, keyname, modifiers, not_modifiers, 0);
+   if (!g) return;
+   g->object->grabs = evas_list_remove(g->object->grabs, g);
+   obj->layer->evas->grabs = evas_list_remove(obj->layer->evas->grabs, g);
+   if (g->keyname) free(g->keyname);
+   free(g);
+}
+
+/* public calls */
+
+/**
+ * Requests @p keyname key events be directed to @p obj.
+ *
+ * Key grabs allow an object to receive key events for specific key strokes
+ * even if another object has focus.  If the grab is non-exclusive then all
+ * objects that have grabs on the key will get the event, however if the
+ * grab is exclusive, no other object can get a grab on the key and only
+ * that object will get the event.
+ *
+ * @p keyname is a platform dependent symbolic name for the key pressed.
+ * It is sometimes possible to convert the string to an ASCII value of the
+ * key, but not always for example the enter key may be returned as the
+ * string 'Enter'.
+ *
+ * Typical platforms are Linux frame buffer (Ecore_FB) and X server (Ecore_X)
+ * when using Evas with Ecore and Ecore_Evas.
+ *
+ * For a list of keynames for the Linux frame buffer, please refer to the
+ * Ecore_FB documentation.
+ * 
+ * @p modifiers and @p not_modifiers are bit masks of all the modifiers that are required and
+ * not required respectively for the new grab.  Modifiers can be things such as shift and ctrl
+ * as well as user defigned types via evas_key_modifier_add.
+ *
+ * @see evas_object_key_ungrab
+ * @see evas_object_focus_set
+ * @see evas_object_focus_get
+ * @see evas_focus_get
+ * @see evas_key_modifier_add
+ * 
+ * @param obj the object to direct @p keyname events to.
+ * @param keyname the key to request events for.
+ * @param modifiers a mask of modifiers that should be present to trigger the event.
+ * @param not_modifiers a mask of modifiers that should not be present to trigger the event.
+ * @param exclusive request that the @p obj is the only object receiving the @p keyname events.
+ * @return Boolean indicating whether the grab succeeded
+ */
+EAPI Evas_Bool
+evas_object_key_grab(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers, Evas_Bool exclusive)
+{
+   /* MEM OK */
+   Evas_Key_Grab *g;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   if (!keyname) return 0;
+   if (exclusive)
+     {
+       g = evas_key_grab_find(obj, keyname, modifiers, not_modifiers, exclusive);
+       if (g) return 0;
+     }
+   g = evas_key_grab_new(obj, keyname, modifiers, not_modifiers, exclusive);
+   if (!g) return 0;
+   return 1;
+}
+
+/**
+ * Request that the grab on @p obj be removed.
+ * 
+ * Removes the grab on @p obj if @p keyname, @p modifiers, and @p not_modifiers
+ * match.
+ * 
+ * @see evas_object_key_grab
+ * @see evas_object_focus_set
+ * @see evas_object_focus_get
+ * @see evas_focus_get
+ *
+ * @param obj the object that has an existing grab.
+ * @param keyname the key the grab is for.
+ * @param modifiers a mask of modifiers that should be present to trigger the event.
+ * @param not_modifiers a mask of modifiers that should not be present to trigger the event.
+ */
+EAPI void
+evas_object_key_ungrab(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers)
+{
+   /* MEM OK */
+   Evas_Key_Grab *g;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!keyname) return;
+   g = evas_key_grab_find(obj, keyname, modifiers, not_modifiers, 0);
+   if (!g) return;
+   if (g->object->layer->evas->walking_grabs)
+     {
+       if (!g->delete_me)
+         {
+            g->object->layer->evas->delete_grabs++;
+            g->delete_me = 1;
+         }
+     }
+   else
+     evas_key_grab_free(g->object, keyname, modifiers, not_modifiers);
+}
diff --git a/src/lib/canvas/evas_layer.c b/src/lib/canvas/evas_layer.c
new file mode 100644 (file)
index 0000000..2f8f613
--- /dev/null
@@ -0,0 +1,201 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+void
+evas_object_inject(Evas_Object *obj, Evas *e)
+{
+   Evas_Layer *lay;
+
+   if (obj->in_layer) return;
+   lay = evas_layer_find(e, obj->cur.layer);
+   if (!lay)
+     {
+       lay = evas_layer_new(e);
+       lay->layer = obj->cur.layer;
+       evas_layer_add(lay);
+     }
+   lay->objects = evas_object_list_append(lay->objects, obj);
+   lay->usage++;
+   obj->layer = lay;
+   obj->in_layer = 1;
+}
+
+void
+evas_object_release(Evas_Object *obj, int clean_layer)
+{
+   if (!obj->in_layer) return;
+   obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
+   obj->layer->usage--;
+   if (clean_layer)
+     {
+       if (obj->layer->usage <= 0)
+         {
+            evas_layer_del(obj->layer);
+            evas_layer_free(obj->layer);
+         }
+     }
+   obj->layer = NULL;
+   obj->in_layer = 0;
+}
+
+Evas_Layer *
+evas_layer_new(Evas *e)
+{
+   Evas_Layer *lay;
+
+   lay = calloc(1, sizeof(Evas_Layer));
+   if (!lay) return NULL;
+   lay->evas = e;
+   return lay;
+}
+
+void
+evas_layer_pre_free(Evas_Layer *lay)
+{
+   Evas_Object_List *l;
+
+   for (l = (Evas_Object_List *)lay->objects; l; l = l->next)
+     {
+       Evas_Object *obj;
+
+       obj = (Evas_Object *)l;
+       if ((!obj->smart.parent) && (!obj->delete_me))
+         evas_object_del(obj);
+     }
+}
+
+void
+evas_layer_free(Evas_Layer *lay)
+{
+   while (lay->objects)
+     {
+       Evas_Object *obj;
+
+       obj = (Evas_Object *)lay->objects;
+       evas_object_free(obj, 0);
+     }
+   free(lay);
+}
+
+Evas_Layer *
+evas_layer_find(Evas *e, short layer_num)
+{
+   Evas_Object_List *list;
+
+   for (list = (Evas_Object_List *)e->layers; list; list = list->next)
+     {
+       Evas_Layer *layer;
+
+       layer = (Evas_Layer *)list;
+       if (layer->layer == layer_num) return layer;
+     }
+   return NULL;
+}
+
+void
+evas_layer_add(Evas_Layer *lay)
+{
+   Evas_Object_List *list;
+
+   for (list = (Evas_Object_List *)lay->evas->layers; list; list = list->next)
+     {
+       Evas_Layer *layer;
+
+       layer = (Evas_Layer *)list;
+       if (layer->layer > lay->layer)
+         {
+            lay->evas->layers = evas_object_list_prepend_relative(lay->evas->layers, lay, layer);
+            return;
+         }
+     }
+   lay->evas->layers = evas_object_list_append(lay->evas->layers, lay);
+}
+
+void
+evas_layer_del(Evas_Layer *lay)
+{
+   Evas_Object_List *ol;
+   Evas *e;
+
+   ol = (Evas_Object_List *)lay;
+   e = lay->evas;
+   e->layers = evas_object_list_remove(e->layers, lay);
+}
+
+/* public functions */
+
+/**
+ * @defgroup Evas_Object_Layer_Group Object Layer Functions
+ *
+ * Functions that retrieve and set the layer that an evas object is on.
+ *
+ * @todo Document which way layers go.
+ */
+
+/**
+ * Sets the layer of the evas that the given object will be part of.
+ * @param   obj The given evas object.
+ * @param   l   The number of the layer to place the object on.
+ * @ingroup Evas_Object_Layer_Group
+ */
+EAPI void
+evas_object_layer_set(Evas_Object *obj, short l)
+{
+   Evas *e;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (evas_object_intercept_call_layer_set(obj, l)) return;
+   if (obj->smart.parent) return;
+   if (obj->cur.layer == l)
+     {
+       evas_object_raise(obj);
+       return;
+     }
+   e = obj->layer->evas;
+   evas_object_release(obj, 1);
+   obj->cur.layer = l;
+   evas_object_inject(obj, e);
+   obj->restack = 1;
+   evas_object_change(obj);
+   if (obj->clip.clipees)
+     {
+       evas_object_inform_call_restack(obj);
+       return;
+     }
+   evas_object_change(obj);
+   if (!obj->smart.smart)
+     {
+       if (evas_object_is_in_output_rect(obj,
+                                         obj->layer->evas->pointer.x,
+                                         obj->layer->evas->pointer.y, 1, 1) &&
+           obj->cur.visible)
+         if (evas_list_find(obj->layer->evas->pointer.object.in, obj))
+           evas_event_feed_mouse_move(obj->layer->evas,
+                                      obj->layer->evas->pointer.x,
+                                      obj->layer->evas->pointer.y,
+                                      obj->layer->evas->last_timestamp,
+                                      NULL);
+     }
+   evas_object_inform_call_restack(obj);
+}
+
+/**
+ * Retrieves the layer of the evas that the given object is part of.
+ * @param   obj The given evas object.
+ * @return  Number of the layer.
+ * @ingroup Evas_Object_Layer_Group
+ */
+EAPI short
+evas_object_layer_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   if (obj->smart.parent)
+     {
+        return obj->smart.parent->cur.layer;
+     }
+   return obj->cur.layer;
+}
diff --git a/src/lib/canvas/evas_main.c b/src/lib/canvas/evas_main.c
new file mode 100644 (file)
index 0000000..27b3ce6
--- /dev/null
@@ -0,0 +1,1023 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+extern Evas_List *evas_modules;
+static int initcount = 0;
+
+EAPI int
+evas_init(void)
+{
+   if (initcount == 0)
+     evas_module_init();
+   return ++initcount;
+}
+
+EAPI int
+evas_shutdown(void)
+{
+   initcount--;
+   if (initcount == 0)
+     {
+       evas_font_dir_cache_free();
+       evas_common_shutdown();
+       evas_module_shutdown();
+     }
+   return initcount;
+}
+
+/**
+ * @defgroup Evas_Canvas Evas Canvas
+ *
+ * Functions that deal with the basic evas object.  They are the
+ * functions you need to use at a minimum to get a working evas, and
+ * to destroy it.
+ *
+ */
+
+/**
+ * Creates a new empty evas.
+ *
+ * Note that before you can use the evas, you will to at a minimum:
+ * @li Set its render method with @ref evas_output_method_set .
+ * @li Set its viewport size with @ref evas_output_viewport_set .
+ * @li Set its size of the canvas with @ref evas_output_size_set .
+ * @li Ensure that the render engine is given the correct settings with
+ *     @ref evas_engine_info_set .
+ *
+ * This function should only fail if the memory allocation fails.
+ *
+ * @return  A new uninitialised Evas canvas on success.  Otherwise, @c NULL.
+ * @ingroup Evas_Canvas
+ */
+EAPI Evas *
+evas_new(void)
+{
+   Evas *e;
+
+   e = calloc(1, sizeof(Evas));
+   if (!e) return NULL;
+
+   e->magic = MAGIC_EVAS;
+   e->output.render_method = RENDER_METHOD_INVALID;
+   e->viewport.w = 1;
+   e->viewport.h = 1;
+   e->hinting = EVAS_FONT_HINTING_BYTECODE;
+
+   evas_array_setup(&e->delete_objects, 16);
+   evas_array_setup(&e->active_objects, 16);
+   evas_array_setup(&e->restack_objects, 16);
+   evas_array_setup(&e->render_objects, 16);
+   evas_array_setup(&e->pending_objects, 16);
+   evas_array_setup(&e->obscuring_objects, 16);
+   evas_array_setup(&e->temporary_objects, 16);
+
+   return e;
+}
+
+/**
+ * Frees the given evas and any objects created on it.
+ *
+ * Any objects with 'free' callbacks will have those callbacks called
+ * in this function.
+ *
+ * @param   e The given evas.
+ * @ingroup Evas_Canvas
+ */
+EAPI void
+evas_free(Evas *e)
+{
+   Evas_Object_List *l;
+   int i;
+   int del;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if (e->walking_list == 0) evas_render_idle_flush(e);
+
+   if (e->walking_list > 0) return;
+   del = 1;
+   e->walking_list++;
+   e->cleanup = 1;
+   while (del)
+     {
+       del = 0;
+       for (l = (Evas_Object_List *)(e->layers); l; l = l->next)
+         {
+            Evas_Layer *lay;
+            Evas_Object_List *ll;
+
+            lay = (Evas_Layer *)l;
+            evas_layer_pre_free(lay);
+            for (ll = (Evas_Object_List *)lay->objects; ll; ll = ll->next)
+              {
+                 Evas_Object *o;
+
+                 o = (Evas_Object *)ll;
+                 if ((o->callbacks) && (o->callbacks->walking_list))
+                   {
+                      /* Defer free */
+                      e->delete_me = 1;
+                      e->walking_list--;
+                      return;
+                   }
+                 if (!o->delete_me)
+                   del = 1;
+              }
+         }
+     }
+   while (e->layers)
+     {
+       Evas_Layer *lay;
+
+       lay = e->layers;
+       evas_layer_del(lay);
+       evas_layer_free(lay);
+     }
+   e->walking_list--;
+   
+   evas_font_path_clear(e);
+   e->pointer.object.in = evas_list_free(e->pointer.object.in);
+
+   if (e->name_hash) evas_hash_free(e->name_hash);
+
+   while (e->damages)
+     {
+       free(e->damages->data);
+       e->damages = evas_list_remove(e->damages, e->damages->data);
+     }
+   while (e->obscures)
+     {
+       free(e->obscures->data);
+       e->obscures = evas_list_remove(e->obscures, e->obscures->data);
+     }
+
+   if (e->engine.func) 
+     {
+       e->engine.func->info_free(e, e->engine.info);
+       e->engine.func->context_free(e->engine.data.output, e->engine.data.context);
+       e->engine.func->output_free(e->engine.data.output);
+     }
+
+   for (i = 0; i < e->modifiers.mod.count; i++)
+     free(e->modifiers.mod.list[i]);
+   if (e->modifiers.mod.list) free(e->modifiers.mod.list);
+
+   for (i = 0; i < e->locks.lock.count; i++)
+     free(e->locks.lock.list[i]);
+   if (e->locks.lock.list) free(e->locks.lock.list);
+
+   if (e->engine.module) evas_module_unref(e->engine.module);
+
+   evas_array_flush(&e->delete_objects);
+   evas_array_flush(&e->active_objects);
+   evas_array_flush(&e->restack_objects);
+   evas_array_flush(&e->render_objects);
+   evas_array_flush(&e->pending_objects);
+   evas_array_flush(&e->obscuring_objects);
+   evas_array_flush(&e->temporary_objects);
+
+   e->magic = 0;
+   free(e);
+}
+
+/**
+ * @defgroup Evas_Output_Method Evas Render Engine Functions
+ *
+ * Functions that are used to set the render engine for a given function, and
+ * then get that engine working.
+ *
+ * The following code snippet shows how they can be used to
+ * initialise an evas that uses the X11 software engine:
+ * @code
+ * Evas *evas;
+ * Evas_Engine_Info_Software_X11 *einfo;
+ * extern Display *display;
+ * extern Window win;
+ *
+ * evas = evas_new();
+ * evas_output_method_set(evas, evas_render_method_lookup("software_x11"));
+ * evas_output_size_set(evas, 640, 480);
+ * evas_output_viewport_set(evas, 0, 0, 640, 480);
+ * einfo = (Evas_Engine_Info_Software_X11 *)evas_engine_info_get(evas);
+ * einfo->info.display = display;
+ * einfo->info.visual = DefaultVisual(display, DefaultScreen(display));
+ * einfo->info.colormap = DefaultColormap(display, DefaultScreen(display));
+ * einfo->info.drawable = win;
+ * einfo->info.depth = DefaultDepth(display, DefaultScreen(display));
+ * evas_engine_info_set(evas, (Evas_Engine_Info *)einfo);
+ * @endcode
+ */
+
+/**
+ * Sets the output engine for the given evas.
+ *
+ * Once the output engine for an evas is set, any attempt to change it
+ * will be ignored.  The value for @p render_method can be found using
+ * @ref evas_render_method_lookup .
+ *
+ * @param   e             The given evas.
+ * @param   render_method The numeric engine value to use.
+ * @ingroup Evas_Output_Method
+ */
+EAPI void
+evas_output_method_set(Evas *e, int render_method)
+{
+   Evas_List *l;
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   /* if our engine to set it to is invalid - abort */
+   if (render_method == RENDER_METHOD_INVALID) return;
+   /* if the engine is already set up - abort */
+   if (e->output.render_method != RENDER_METHOD_INVALID) return;
+   /* iterate trough the list to find the id */
+   for (l = evas_modules; l; l = l->next)
+     {
+       Evas_Module *em;
+       Evas_Module_Engine *eme;
+       
+       em = l->data;
+       if (em->type != EVAS_MODULE_TYPE_ENGINE) continue;
+       if (!em->data) continue;
+       eme = (Evas_Module_Engine *)em->data;
+       if (eme->id != render_method) continue;
+       if (!evas_module_load(em)) return;
+       /* set the correct render */
+       e->output.render_method = render_method;
+       e->engine.func = (em->functions);
+       evas_module_use(em);
+       if (e->engine.module) evas_module_unref(e->engine.module);
+       e->engine.module = em;
+       evas_module_ref(em);
+       /* get the engine info struct */
+       if (e->engine.func->info) e->engine.info = e->engine.func->info(e);
+       return;
+     }
+}
+
+/**
+ * Retrieves the number of the output engine used for the given evas.
+ * @param   e The given evas.
+ * @return  The ID number of the output engine being used.  @c 0 is
+ *          returned if there is an error.
+ * @ingroup Evas_Output_Method
+ */
+EAPI int
+evas_output_method_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return RENDER_METHOD_INVALID;
+   MAGIC_CHECK_END();
+
+   return e->output.render_method;
+}
+
+/**
+ * Retrieves the current render engine info struct from the given evas.
+ *
+ * The returned structure is publicly modifiable.  The contents are valid
+ * until either @ref evas_engine_info_set or @ref evas_render are called.
+ *
+ * This structure does not need to be freed by the caller.
+ *
+ * @param   e The given evas.
+ * @return  A pointer to the Engine Info structure.  @c NULL is returned if
+ *          an engine has not yet been assigned.
+ * @ingroup Evas_Output_Method
+ */
+EAPI Evas_Engine_Info *
+evas_engine_info_get(const Evas *e)
+{
+   Evas_Engine_Info *info;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+
+   if (!e->engine.info) return NULL;
+
+   info = e->engine.info;
+   ((Evas *)e)->engine.info_magic = info->magic;
+
+   return info;
+}
+
+/**
+ * Applies the engine settings for the given evas from the given @c
+ * Evas_Engine_Info structure.
+ *
+ * To get the Evas_Engine_Info structure to use, call @ref
+ * evas_engine_info_get .  Do not try to obtain a pointer to an
+ * @c Evas_Engine_Info structure in any other way.
+ *
+ * You will need to call this function at least once before you can
+ * create objects on an evas or render that evas.  Some engines allow
+ * their settings to be changed more than once.
+ *
+ * Once called, the @p info pointer should be considered invalid.
+ *
+ * Example:
+ *
+ * @param   e    The pointer to the Evas Canvas
+ * @param   info The pointer to the Engine Info to use
+ * @ingroup Evas_Output_Method
+ */
+EAPI void
+evas_engine_info_set(Evas *e, Evas_Engine_Info *info)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   if (!info) return;
+   if (info != e->engine.info) return;
+   if (info->magic != e->engine.info_magic) return;
+   e->engine.func->setup(e, info);
+}
+
+/**
+ * @defgroup Evas_Output_Size Evas Output and Viewport Resizing Functions
+ *
+ * Functions that set and retrieve the output and viewport size of an evas.
+ */
+
+/**
+ * Sets the output size of the render engine of the given evas.
+ *
+ * The evas will render to a rectangle of the given size once this
+ * function is called.  The output size is independent of the viewport
+ * size.  The viewport will be stretched to fill the given rectangle.
+ *
+ * The units used for @p w and @p h depend on the engine used by the
+ * evas.
+ *
+ * @param   e The given evas.
+ * @param   w The width in output units, usually pixels.
+ * @param   h The height in output units, usually pixels.
+ * @ingroup Evas_Output_Size
+ */
+EAPI void
+evas_output_size_set(Evas *e, int w, int h)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if ((w == e->output.w) && (h == e->output.h)) return;
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   e->output.w = w;
+   e->output.h = h;
+   e->output.changed = 1;
+   e->output_validity++;
+   e->changed = 1;
+   evas_render_invalidate(e);
+}
+
+/**
+ * Retrieve the output size of the render engine of the given evas.
+ *
+ * The output size is given in whatever the output units are for the
+ * engine.
+ *
+ * If either @p w or @p h is @c NULL, then it is ignored.  If @p e is
+ * invalid, the returned results are undefined.
+ *
+ * @param   e The given evas.
+ * @param   w The pointer to an integer to store the width in.
+ * @param   h The pointer to an integer to store the height in.
+ * @ingroup Evas_Output_Size
+ */
+EAPI void
+evas_output_size_get(const Evas *e, int *w, int *h)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   if (w) *w = 0;
+   if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+
+   if (w) *w = e->output.w;
+   if (h) *h = e->output.h;
+}
+
+/**
+ * Sets the output viewport of the given evas in evas units.
+ *
+ * The output viewport is the area of the evas that will be visible to the
+ * viewer.  The viewport will be stretched to fit the output target of the
+ * evas when rendering is performed.
+ *
+ * @note The coordinate values do not have to map 1-to-1 with the output
+ *       target.  However, it is generally advised that it is done for ease
+ *       of use.
+ *
+ * @param   e The given evas.
+ * @param   x The top-left corner x value of the viewport.
+ * @param   y The top-left corner y value of the viewport.
+ * @param   w The width of the viewport.  Must be greater than 0.
+ * @param   h The height of the viewport.  Must be greater than 0.
+ * @ingroup Evas_Output_Size
+ */
+EAPI void
+evas_output_viewport_set(Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if ((x == e->viewport.x) && (y == e->viewport.y) &&
+       (w == e->viewport.w) && (h == e->viewport.h)) return;
+   if (w <= 0) return;
+   if (h <= 0) return;
+   if ((x != 0) || (y != 0))
+     {
+       printf("EVAS: compat error. viewport x,y != 0,0 not supported\n");
+       x = 0;
+       y = 0;
+     }
+   e->viewport.x = x;
+   e->viewport.y = y;
+   e->viewport.w = w;
+   e->viewport.h = h;
+   e->viewport.changed = 1;
+   e->output_validity++;
+   e->changed = 1;
+}
+
+/**
+ * Get the render engine's output viewport co-ordinates in canvas units.
+ * @param e The pointer to the Evas Canvas
+ * @param x The pointer to a x variable to be filled in
+ * @param y The pointer to a y variable to be filled in
+ * @param w The pointer to a width variable to be filled in
+ * @param h The pointer to a height variable to be filled in
+ * @ingroup Evas_Output_Size
+ *
+ * Calling this function writes the current canvas output viewport size and
+ * location values into the variables pointed to by @p x, @p y, @p w and @p h.
+ * On success the variables have the output location and size values written to
+ * them in canvas units. Any of @p x, @p y, @p w or @p h that are NULL will not
+ * be written to. If @p e is invalid, the results are undefined.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ * Evas_Coord x, y, width, height;
+ *
+ * evas_output_viewport_get(evas, &x, &y, &w, &h);
+ * @endcode
+ */
+EAPI void
+evas_output_viewport_get(const Evas *e, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (w) *w = 0;
+   if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+
+   if (x) *x = e->viewport.x;
+   if (y) *y = e->viewport.y;
+   if (w) *w = e->viewport.w;
+   if (h) *h = e->viewport.h;
+}
+
+/**
+ * @defgroup Evas_Coord_Mapping_Group Evas Coordinate Mapping Functions
+ *
+ * Functions that are used to map coordinates from the canvas to the
+ * screen or the screen to the canvas.
+ */
+
+/**
+ * Convert/scale an ouput screen co-ordinate into canvas co-ordinates
+ *
+ * @param e The pointer to the Evas Canvas
+ * @param x The screen/output x co-ordinate
+ * @return The screen co-ordinate translated to canvas unit co-ordinates
+ * @ingroup Evas_Coord_Mapping_Group
+ *
+ * This function takes in a horizontal co-ordinate as the @p x parameter and
+ * converts it into canvas units, accounting for output size, viewport size
+ * and location, returning it as the function return value. If @p e is
+ * invalid, the results are undefined.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ * extern int screen_x;
+ * Evas_Coord canvas_x;
+ *
+ * canvas_x = evas_coord_screen_x_to_world(evas, screen_x);
+ * @endcode
+ */
+EAPI Evas_Coord
+evas_coord_screen_x_to_world(const Evas *e, int x)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+   if (e->output.w == e->viewport.w) return e->viewport.x + x;
+   return (long long)e->viewport.x + (((long long)x * (long long)e->viewport.w) / (long long)e->output.w);
+}
+
+/**
+ * Convert/scale an ouput screen co-ordinate into canvas co-ordinates
+ *
+ * @param e The pointer to the Evas Canvas
+ * @param y The screen/output y co-ordinate
+ * @return The screen co-ordinate translated to canvas unit co-ordinates
+ * @ingroup Evas_Coord_Mapping_Group
+ *
+ * This function takes in a vertical co-ordinate as the @p y parameter and
+ * converts it into canvas units, accounting for output size, viewport size
+ * and location, returning it as the function return value. If @p e is
+ * invalid, the results are undefined.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ * extern int screen_y;
+ * Evas_Coord canvas_y;
+ *
+ * canvas_y = evas_coord_screen_y_to_world(evas, screen_y);
+ * @endcode
+ */
+EAPI Evas_Coord
+evas_coord_screen_y_to_world(const Evas *e, int y)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+   if (e->output.h == e->viewport.h) return e->viewport.y + y;
+   return (long long)e->viewport.y + (((long long)y * (long long)e->viewport.h) / (long long)e->output.h);
+}
+
+/**
+ * Convert/scale a canvas co-ordinate into output screen co-ordinates
+ *
+ * @param e The pointer to the Evas Canvas
+ * @param x The canvas x co-ordinate
+ * @return The output/screen co-ordinate translated to output co-ordinates
+ * @ingroup Evas_Coord_Mapping_Group
+ *
+ * This function takes in a horizontal co-ordinate as the @p x parameter and
+ * converts it into output units, accounting for output size, viewport size
+ * and location, returning it as the function return value. If @p e is
+ * invalid, the results are undefined.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ * int screen_x;
+ * extern Evas_Coord canvas_x;
+ *
+ * screen_x = evas_coord_world_x_to_screen(evas, canvas_x);
+ * @endcode
+ */
+EAPI int
+evas_coord_world_x_to_screen(const Evas *e, Evas_Coord x)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+   if (e->output.w == e->viewport.w) return x - e->viewport.x;
+   return (int)((((long long)x - (long long)e->viewport.x) * (long long)e->output.w) /  (long long)e->viewport.w);
+}
+
+/**
+ * Convert/scale a canvas co-ordinate into output screen co-ordinates
+ *
+ * @param e The pointer to the Evas Canvas
+ * @param y The canvas y co-ordinate
+ * @return The output/screen co-ordinate translated to output co-ordinates
+ * @ingroup Evas_Coord_Mapping_Group
+ *
+ * This function takes in a vertical co-ordinate as the @p x parameter and
+ * converts it into output units, accounting for output size, viewport size
+ * and location, returning it as the function return value. If @p e is
+ * invalid, the results are undefined.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ * int screen_y;
+ * extern Evas_Coord canvas_y;
+ *
+ * screen_y = evas_coord_world_y_to_screen(evas, canvas_y);
+ * @endcode
+ */
+EAPI int
+evas_coord_world_y_to_screen(const Evas *e, Evas_Coord y)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+   if (e->output.h == e->viewport.h) return y - e->viewport.y;
+   return (int)((((long long)y - (long long)e->viewport.y) * (long long)e->output.h) /  (long long)e->viewport.h);
+}
+
+/**
+ * Look up a numeric ID from a string name of a rendering engine.
+ *
+ * @param name The string name of an engine
+ * @return A numeric (opaque) ID for the rendering engine
+ * @ingroup Evas_Output_Method
+ *
+ * This function looks up a numeric return value for the named engine in the
+ * string @p name. This is a normal C string, NUL byte terminated. The name
+ * is case sensitive. If the rendering engine is available, a numeric ID for
+ * that engine is returned that is not 0. If the engine is not available, 0
+ * is returned, indicating an invalid engine.
+ *
+ * The programmer should NEVER rely on the numeric ID of an engine unless it is
+ * returned by this function. Programs should NOT be written accessing render
+ * method ID's directly, without first obtaining it from this function.
+ *
+ * Example:
+ * @code
+ * int engine_id;
+ * Evas *evas;
+ *
+ * evas = evas_new();
+ * if (!evas)
+ *   {
+ *     fprintf(stderr, "ERROR: Canvas creation failed. Fatal error.\n");
+ *     exit(-1);
+ *   }
+ * engine_id = evas_render_method_lookup("software_x11");
+ * if (!engine_id)
+ *   {
+ *     fprintf(stderr, "ERROR: Requested rendering engine is absent.\n");
+ *     exit(-1);
+ *   }
+ * evas_output_method_set(evas, engine_id);
+ * @endcode
+ */
+EAPI int
+evas_render_method_lookup(const char *name)
+{
+   static int i = 1;
+   Evas_Module *em;
+   Evas_Module_Engine *eem;
+   
+   if (!name) return RENDER_METHOD_INVALID;
+   /* search on the engines list for the name */
+   em = evas_module_find_type(EVAS_MODULE_TYPE_ENGINE, name);
+   
+   if (!em) return RENDER_METHOD_INVALID;
+   
+   eem = (Evas_Module_Engine *)em->data;
+   if (!eem)
+     {
+       eem = malloc(sizeof(Evas_Module_Engine));
+       em->data = eem;
+       eem->id = i;
+       i++;
+     }
+   return eem->id;
+}
+
+/**
+ * List all the rendering engines compiled into the copy of the Evas library
+ *
+ * @return A linked list whose data members are C strings of engine names
+ * @ingroup Evas_Output_Method
+ *
+ * Calling this will return a handle (pointer) to an Evas linked list. Each node
+ * in the linked list will have the data pointer be a (char *) pointer to the
+ * string name of the rendering engine available. The strings should never be
+ * modified, neither should the list be modified. This list should be cleaned up
+ * as soon as the program no longer needs it using
+ * evas_render_method_list_free(). If no engines are available from Evas, NULL
+ * will be returned.
+ *
+ * Example:
+ * @code
+ * Evas_List *engine_list, *l;
+ *
+ * engine_list = evas_render_method_list();
+ * if (!engine_list)
+ *   {
+ *     fprintf(stderr, "ERROR: Evas supports no engines! Exit.\n");
+ *     exit(-1);
+ *   }
+ * printf("Availible Evas Engines:\n");
+ * for (l = engine_list; l; l = l->next)
+ *   {
+ *     char *engine_name;
+ *
+ *     engine_name = l->data;
+ *     printf("%s\n", engine_name);
+ *   }
+ * evas_render_method_list_free(engine_list);
+ * @endcode
+ */
+EAPI Evas_List *
+evas_render_method_list(void)
+{
+   Evas_List *methods = NULL;
+
+   /* FIXME: get from modules - this is currently coded-in */
+#ifdef BUILD_ENGINE_SOFTWARE_DDRAW
+   methods = evas_list_append(methods, strdup("software_ddraw"));
+#endif
+#ifdef BUILD_ENGINE_SOFTWARE_16_DDRAW
+   methods = evas_list_append(methods, strdup("software_16_ddraw"));
+#endif
+#ifdef BUILD_ENGINE_DIRECT3D
+   methods = evas_list_append(methods, strdup("direct3d"));
+#endif
+#ifdef BUILD_ENGINE_SOFTWARE_16_WINCE
+   methods = evas_list_append(methods, strdup("software_16_wince"));
+#endif
+#ifdef BUILD_ENGINE_SOFTWARE_X11
+   methods = evas_list_append(methods, strdup("software_x11"));
+#endif
+#ifdef BUILD_ENGINE_XRENDER_X11
+   methods = evas_list_append(methods, strdup("xrender_x11"));
+#endif
+#ifdef BUILD_ENGINE_SOFTWARE_XCB
+   methods = evas_list_append(methods, strdup("software_xcb"));
+#endif
+#ifdef BUILD_ENGINE_XRENDER_XCB
+   methods = evas_list_append(methods, strdup("xrender_xcb"));
+#endif
+#ifdef BUILD_ENGINE_SOFTWARE_16_X11
+   methods = evas_list_append(methods, strdup("software_16_x11"));
+#endif
+#ifdef BUILD_ENGINE_GL_X11
+   methods = evas_list_append(methods, strdup("gl_x11"));
+#endif
+#ifdef BUILD_ENGINE_GL_GLEW
+   methods = evas_list_append(methods, strdup("gl_glew"));
+#endif
+#ifdef BUILD_ENGINE_CAIRO_X11
+   methods = evas_list_append(methods, strdup("cairo_x11"));
+#endif
+#ifdef BUILD_ENGINE_DIRECTFB
+   methods = evas_list_append(methods, strdup("directfb"));
+#endif
+#ifdef BUILD_ENGINE_FB
+   methods = evas_list_append(methods, strdup("fb"));
+#endif
+#ifdef BUILD_ENGINE_BUFFER
+   methods = evas_list_append(methods, strdup("buffer"));
+#endif
+#ifdef BUILD_ENGINE_SOFTWARE_WIN32_GDI
+   methods = evas_list_append(methods, strdup("software_win32_gdi"));
+#endif
+#ifdef BUILD_ENGINE_SOFTWARE_QTOPIA
+   methods = evas_list_append(methods, strdup("software_qtopia"));
+#endif
+#ifdef BUILD_ENGINE_SDL
+   methods = evas_list_append(methods, strdup("software_sdl"));
+#endif
+
+   return methods;
+}
+
+/**
+ * This function should be called to free a list of engine names
+ *
+ * @param list The Evas_List base pointer for the engine list to be freed
+ * @ingroup Evas_Output_Method
+ *
+ * When this function is called it will free the engine list passed in as
+ * @p list. The list should only be a list of engines generated by calling
+ * evas_render_method_list(). If @p list is NULL, nothing will happen.
+ *
+ * Example:
+ * @code
+ * Evas_List *engine_list, *l;
+ *
+ * engine_list = evas_render_method_list();
+ * if (!engine_list)
+ *   {
+ *     fprintf(stderr, "ERROR: Evas supports no engines! Exit.\n");
+ *     exit(-1);
+ *   }
+ * printf("Availible Evas Engines:\n");
+ * for (l = engine_list; l; l = l->next)
+ *   {
+ *     char *engine_name;
+ *
+ *     engine_name = l->data;
+ *     printf("%s\n", engine_name);
+ *   }
+ * evas_render_method_list_free(engine_list);
+ * @endcode
+ */
+EAPI void
+evas_render_method_list_free(Evas_List *list)
+{
+   while (list)
+     {
+       free(list->data);
+       list = evas_list_remove(list, list->data);
+     }
+}
+
+/**
+ * @defgroup Evas_Pointer_Group Evas Pointer Functions
+ *
+ * Functions that deal with the status of the pointer.
+ */
+
+/**
+ * This function returns the current known pointer co-ordinates
+ *
+ * @param e The pointer to the Evas Canvas
+ * @param x The pointer to an integer to be filled in
+ * @param y The pointer to an integer to be filled in
+ * @ingroup Evas_Pointer_Group
+ *
+ * This function returns the current known screen/output co-ordinates of the
+ * mouse pointer and sets the contents of the integers pointed to by @p x
+ * and @p y to contain these co-ordinates. If @p e is not a valid canvas the
+ * results of this function are undefined.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ * int mouse_x, mouse_y;
+ *
+ * evas_pointer_output_xy_get(evas, &mouse_x, &mouse_y);
+ * printf("Mouse is at screen position %i, %i\n", mouse_x, mouse_y);
+ * @endcode
+ */
+EAPI void
+evas_pointer_output_xy_get(const Evas *e, int *x, int *y)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   if (x) *x = 0;
+   if (y) *y = 0;
+   return;
+   MAGIC_CHECK_END();
+   if (x) *x = e->pointer.x;
+   if (y) *y = e->pointer.y;
+}
+
+/**
+ * This function returns the current known pointer co-ordinates
+ *
+ * @param e The pointer to the Evas Canvas
+ * @param x The pointer to a Evas_Coord to be filled in
+ * @param y The pointer to a Evas_Coord to be filled in
+ * @ingroup Evas_Pointer_Group
+ *
+ * This function returns the current known canvas unit co-ordinates of the
+ * mouse pointer and sets the contents of the Evas_Coords pointed to by @p x
+ * and @p y to contain these co-ordinates. If @p e is not a valid canvas the
+ * results of this function are undefined.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ * Evas_Coord mouse_x, mouse_y;
+ *
+ * evas_pointer_output_xy_get(evas, &mouse_x, &mouse_y);
+ * printf("Mouse is at canvas position %f, %f\n", mouse_x, mouse_y);
+ * @endcode
+ */
+EAPI void
+evas_pointer_canvas_xy_get(const Evas *e, Evas_Coord *x, Evas_Coord *y)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   if (x) *x = 0;
+   if (y) *y = 0;
+   return;
+   MAGIC_CHECK_END();
+   if (x) *x = e->pointer.x;
+   if (y) *y = e->pointer.y;
+}
+
+/**
+ * Returns a bitmask with the mouse buttons currently pressed, set to 1
+ *
+ * @param e The pointer to the Evas Canvas
+ * @return A bitmask of the currently depressed buttons on the cavas
+ * @ingroup Evas_Pointer_Group
+ *
+ * Calling this function will return a 32-bit integer with the appropriate bits
+ * set to 1 that correspond to a mouse button being depressed. This limits
+ * Evas to a mouse devices with a maximum of 32 buttons, but that is generally
+ * in excess of any host system's pointing device abilities.
+ *
+ * A canvas by default begins with no mouse buttons being pressed and only
+ * calls to evas_event_feed_mouse_down(), evas_event_feed_mouse_down_data(),
+ * evas_event_feed_mouse_up() and evas_event_feed_mouse_up_data() will alter
+ * that.
+ *
+ * The least significant bit corresponds to the first mouse button (button 1)
+ * and the most significant bit corresponds to the last mouse button
+ * (button 32).
+ *
+ * If @p e is not a valid canvas, the return value is undefined.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ * int button_mask, i;
+ *
+ * button_mask = evas_pointer_button_down_mask_get(evas);
+ * printf("Buttons currently pressed:\n");
+ * for (i = 0; i < 32; i++)
+ *   {
+ *     if ((button_mask & (1 << i)) != 0) printf("Button %i\n", i + 1);
+ *   }
+ * @endcode
+ */
+EAPI int
+evas_pointer_button_down_mask_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+   return (int)e->pointer.button;
+}
+
+/**
+ * Returns whether the mouse pointer is logically inside the canvas
+ *
+ * @param e The pointer to the Evas Canvas
+ * @return An integer that is 1 if the mouse is inside the canvas, 0 otherwise
+ * @ingroup Evas_Pointer_Group
+ *
+ * When this function is called it will return a value of either 0 or 1,
+ * depending on if evas_event_feed_mouse_in(), evas_event_feed_mouse_in_data(),
+ * or evas_event_feed_mouse_out(), evas_event_feed_mouse_out_data() have been
+ * called to feed in a mouse enter event into the canvas.
+ *
+ * A return value of 1 indicates the mouse is logically inside the canvas, and
+ * 0 implies it is logically outside the canvas.
+ *
+ * A canvas begins with the mouse being assumed outside (0).
+ *
+ * If @p e is not a valid canvas, the return value is undefined.
+ *
+ * Example:
+ * @code
+ * extern Evas *evas;
+ *
+ * if (evas_pointer_inside_get(evas)) printf("Mouse is in!\n");
+ * else printf("Mouse is out!\n");
+ * @endcode
+ */
+EAPI Evas_Bool
+evas_pointer_inside_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+   return (int)e->pointer.inside;
+}
+
+/**
+ * Attaches a specific pointer to the evas for fetching later
+ * 
+ * @param e The canvas to attach the pointer to
+ * @param data The pointer to attach
+ */
+EAPI void
+evas_data_attach_set(Evas *e, void *data)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   e->attach_data = data;
+}
+
+/**
+ * Returns the pointer attached by evas_data_attach_set()
+ * 
+ * @param e The canvas to attach the pointer to
+ * @return The pointer attached
+ */
+EAPI void *
+evas_data_attach_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   return e->attach_data;
+}
+
+void
+_evas_walk(Evas *e)
+{
+   e->walking_list++;
+}
+
+void
+_evas_unwalk(Evas *e)
+{
+   e->walking_list--;
+   if ((e->walking_list == 0) && (e->delete_me)) evas_free(e);
+}
+
diff --git a/src/lib/canvas/evas_name.c b/src/lib/canvas/evas_name.c
new file mode 100644 (file)
index 0000000..c1cc94d
--- /dev/null
@@ -0,0 +1,67 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/**
+ * @defgroup Evas_Object_Name_Group Object Name Function
+ *
+ * Functions that retrieve and set the name of an evas object.
+ */
+
+/**
+ * Sets the name of the given evas object to the given name.
+ * @param   obj  The given object.
+ * @param   name The given name.
+ * @ingroup Evas_Object_Name_Group
+ */
+EAPI void
+evas_object_name_set(Evas_Object *obj, const char *name)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->name)
+     {
+       obj->layer->evas->name_hash = evas_hash_del(obj->layer->evas->name_hash, obj->name, obj);
+       free(obj->name);
+     }
+   if (!name) obj->name = NULL;
+   else
+     {
+       obj->name = strdup(name);
+       obj->layer->evas->name_hash = evas_hash_add(obj->layer->evas->name_hash, obj->name, obj);
+     }
+}
+
+/**
+ * Retrieves the name of the given evas object.
+ * @param   obj The given object.
+ * @return  The name of the object.  @c NULL if no name has been given
+ *          to the object.
+ * @ingroup Evas_Object_Name_Group
+ */
+EAPI const char *
+evas_object_name_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   return obj->name;
+}
+
+/**
+ * Retrieves the object on the given evas with the given name.
+ * @param   e    The given evas.
+ * @param   name The given name.
+ * @return  If successful, the evas object with the given name.  Otherwise,
+ *          @c NULL.
+ * @ingroup Evas_Object_Name_Group
+ */
+EAPI Evas_Object *
+evas_object_name_find(const Evas *e, const char *name)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!name) return NULL;
+   return (Evas_Object *)evas_hash_find(e->name_hash, name);
+}
diff --git a/src/lib/canvas/evas_object_gradient.c b/src/lib/canvas/evas_object_gradient.c
new file mode 100644 (file)
index 0000000..aef1059
--- /dev/null
@@ -0,0 +1,1091 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_private.h"
+#include "../engines/common/evas_convert_color.h"
+
+/* private magic number for gradient objects */
+static const char o_type[] = "gradient";
+
+/* private struct for gradient object internal data */
+typedef struct _Evas_Object_Gradient      Evas_Object_Gradient;
+
+struct _Evas_Object_Gradient
+{
+   DATA32            magic;
+
+   struct {
+      struct {
+      Evas_Angle     angle;
+      float          offset;
+      int            direction;
+      } map;
+      struct {
+         Evas_Coord  x, y, w, h;
+         Evas_Angle  angle;
+         int         spread;
+      } fill;
+      struct {
+         char       *name;
+         char       *params;
+      } type;
+      unsigned char    gradient_opaque : 1;
+   } cur, prev;
+
+   void             *engine_data;
+
+   unsigned char     changed : 1;
+   unsigned char     gradient_changed : 1;
+   unsigned char     type_changed : 1;
+};
+
+/* private methods for gradient objects */
+static void evas_object_gradient_init(Evas_Object *obj);
+static void *evas_object_gradient_new(void);
+static void evas_object_gradient_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
+static void evas_object_gradient_free(Evas_Object *obj);
+static void evas_object_gradient_render_pre(Evas_Object *obj);
+static void evas_object_gradient_render_post(Evas_Object *obj);
+
+static int evas_object_gradient_is_opaque(Evas_Object *obj);
+static int evas_object_gradient_was_opaque(Evas_Object *obj);
+
+static const Evas_Object_Func object_func =
+{
+   /* methods (compulsory) */
+   evas_object_gradient_free,
+     evas_object_gradient_render,
+     evas_object_gradient_render_pre,
+     evas_object_gradient_render_post,
+   /* these are optional. NULL = nothing */
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     evas_object_gradient_is_opaque,
+     evas_object_gradient_was_opaque,
+     NULL,
+     NULL,
+     NULL
+};
+
+/* the actual api call to add a gradient */
+
+/**
+ * @defgroup Evas_Object_Gradient_Group Evas Gradient Object Functions
+ *
+ * Functions that work on evas gradient objects.
+ *
+ * The following example shows how
+ */
+
+/**
+ * Adds a gradient object to the given evas.
+ * @param   e The given evas.
+ * @return  A new evas gradient object if successful.  Otherwise, @c NULL.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI Evas_Object *
+evas_object_gradient_add(Evas *e)
+{
+   Evas_Object *obj;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   obj = evas_object_new();
+   evas_object_gradient_init(obj);
+   evas_object_inject(obj, e);
+   if (obj->object_data)
+     {
+       Evas_Object_Gradient *o = (Evas_Object_Gradient *)(obj->object_data);
+
+       o->engine_data = e->engine.func->gradient_new(e->engine.data.output);
+     }
+   evas_object_change(obj);
+   return obj;
+}
+
+/**
+ * Adds a color stop to the given evas gradient object.
+ *
+ * The @p delta parameter determines the proportion of the gradient
+ * object that is to be set to the color.  For instance, if red is
+ * added with @p delta set to 2, and green is added with @p
+ * delta set to 1, two-thirds will be red or reddish and one-third
+ * will be green or greenish.
+ *
+ * Colors are added from the top downwards.
+ *
+ * @param   obj      The given evas gradient object.
+ * @param   r        Red component of the given color.
+ * @param   g        Green component of the given color.
+ * @param   b        Blue component of the given color.
+ * @param   a        Alpha component of the given color.
+ * @param   delta    Proportion of the gradient object that is this color.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI void
+evas_object_gradient_color_stop_add(Evas_Object *obj, int r, int g, int b, int a, int delta)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (o->engine_data)
+      obj->layer->evas->engine.func->gradient_color_stop_add(obj->layer->evas->engine.data.output,
+                                                            o->engine_data,
+                                                            r, g, b, a, delta);
+   o->gradient_changed = 1;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Adds an alpha stop to the given evas gradient object.
+ *
+ * The @p delta parameter determines the proportion of the gradient
+ * object that is to be set to the alpha value.
+ *
+ * Alphas are added from the top downwards.
+ *
+ * @param   obj      The given evas gradient object.
+ * @param   a        Alpha value.
+ * @param   delta    Proportion of the gradient object that is this alpha.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI void
+evas_object_gradient_alpha_stop_add(Evas_Object *obj, int a, int delta)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (o->engine_data)
+      obj->layer->evas->engine.func->gradient_alpha_stop_add(obj->layer->evas->engine.data.output,
+                                                            o->engine_data, a, delta);
+   o->gradient_changed = 1;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Deletes all stops set for the given evas gradient object or any set data.
+ * @param   obj The given evas gradient object.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI void
+evas_object_gradient_clear(Evas_Object *obj)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (o->engine_data)
+      obj->layer->evas->engine.func->gradient_clear(obj->layer->evas->engine.data.output,
+                                                   o->engine_data);
+   o->gradient_changed = 1;
+   o->changed = 1;
+   o->cur.gradient_opaque = 0;
+   evas_object_change(obj);
+}
+
+/**
+ * Sets color data for the given evas gradient object.
+ *
+ * If data is so set, any existing gradient stops will be deleted,
+ * The data is not copied, so if it was allocated, do not free it while it's set.
+ *
+ * @param   obj       The given evas gradient object.
+ * @param   data      The color data to be set. Should be in argb32 pixel format.
+ * @param   len       The length of the data pointer - multiple of the pixel size.
+ * @param   has_alpha A flag indicating if the data has alpha or not.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI void
+evas_object_gradient_color_data_set(Evas_Object *obj, void *data, int len, Evas_Bool has_alpha)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (o->engine_data)
+       obj->layer->evas->engine.func->gradient_color_data_set(obj->layer->evas->engine.data.output,
+                                                               o->engine_data,
+                                                               data, len, has_alpha);
+   o->gradient_changed = 1;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Sets alpha data for the given evas gradient object.
+ *
+ * If alpha data is so set, any existing gradient stops will be cleared,
+ * The data is not copied, so if it was allocated, do not free it while it's set.
+ *
+ * @param   obj       The given evas gradient object.
+ * @param   data      The alpha data to be set, in a8 format.
+ * @param   len       The length of the data pointer - multiple of the pixel size.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI void
+evas_object_gradient_alpha_data_set(Evas_Object *obj, void *data, int len)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (o->engine_data)
+       obj->layer->evas->engine.func->gradient_alpha_data_set(obj->layer->evas->engine.data.output,
+                                                               o->engine_data,
+                                                               data, len);
+   o->gradient_changed = 1;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * @defgroup Evas_Object_Gradient_Fill_Group Gradient Object Fill Rectangle Functions
+ *
+ * Functions that deal with what areas of the gradient object are to be
+ * tiled with the gradient.
+ */
+
+/**
+ * Sets the rectangle on the gradient object that the gradient will be
+ * drawn to.
+ *
+ * Note that the gradient may be tiled around this one rectangle,
+ * according to its spread value - restrict, repeat, or reflect.  To have
+ * only one 'cycle' of the gradient drawn, the spread value must be set
+ * to restrict, or @p x and @p y must be 0 and @p w and @p h need to be
+ * the width and height of the gradient object respectively.
+ *
+ * The default values for the fill parameters is @p x = 0, @p y = 0,
+ * @p w = 32 and @p h = 32.
+ *
+ * @param   obj The given evas gradient object.
+ * @param   x   The X coordinate for the top left corner of the rect.
+ * @param   y   The Y coordinate for the top left corner of the rect.
+ * @param   w   The width of the rect.
+ * @param   h   The height of the rect.
+ * @ingroup Evas_Object_Gradient_Fill_Group
+ */
+EAPI void
+evas_object_gradient_fill_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
+{
+   Evas_Object_Gradient *o;
+
+   if (w < 0) w = -w;
+   if (h < 0) h = -h;
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if ((o->cur.fill.x == x) &&
+       (o->cur.fill.y == y) &&
+       (o->cur.fill.w == w) &&
+       (o->cur.fill.h == h)) return;
+   o->cur.fill.x = x;
+   o->cur.fill.y = y;
+   o->cur.fill.w = w;
+   o->cur.fill.h = h;
+   o->gradient_changed = 1;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the dimensions of the rectangle on the gradient object that
+ * the gradient will use as its fill rect.
+ *
+ * See @ref evas_object_gradient_fill_set for more details.
+ *
+ * @param   obj The given evas gradient object.
+ * @param   x   Pointer to an Evas_Coord to store the X coordinate in.
+ * @param   y   Pointer to an Evas_Coord to store the Y coordinate in.
+ * @param   w   Pointer to an Evas_Coord to store the width in.
+ * @param   h   Pointer to an Evas_Coord to store the height in.
+ * @ingroup Evas_Object_Gradient_Fill_Group
+ */
+EAPI void
+evas_object_gradient_fill_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (w) *w = 0;
+   if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (w) *w = 0;
+   if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   if (x) *x = o->cur.fill.x;
+   if (y) *y = o->cur.fill.y;
+   if (w) *w = o->cur.fill.w;
+   if (h) *h = o->cur.fill.h;
+   return;
+}
+
+/**
+ * Sets the angle at which the given evas gradient object's fill sits clockwise
+ * from vertical.
+ * @param   obj   The given evas gradient object.
+ * @param   angle Angle in degrees.  Can be negative.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI void
+evas_object_gradient_fill_angle_set(Evas_Object *obj, Evas_Angle angle)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (angle == o->cur.fill.angle) return;
+   o->cur.fill.angle = angle;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the angle at which the given evas gradient object's fill sits
+ * clockwise from the vertical.
+ * @param   obj The given evas gradient object.
+ * @return  The current angle if successful. @c 0.0 otherwise.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI Evas_Angle
+evas_object_gradient_fill_angle_get(const Evas_Object *obj)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0.0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return 0.0;
+   MAGIC_CHECK_END();
+   return o->cur.fill.angle;
+}
+
+/**
+ * Sets the tiling mode for the given evas gradient object's fill.
+ * @param   obj   The given evas gradient object.
+ * @param   spread One of EVAS_TEXTURE_REFLECT, EVAS_TEXTURE_REPEAT,
+ * EVAS_TEXTURE_RESTRICT, EVAS_TEXTURE_RESTRICT_REFLECT, EVAS_TEXTURE_RESTRICT_REPEAT,
+ * or EVAS_TEXTURE_PAD.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI void
+evas_object_gradient_fill_spread_set(Evas_Object *obj, int spread)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (spread == o->cur.fill.spread) return;
+   o->cur.fill.spread = spread;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the spread (tiling mode) for the given gradient object's fill.
+ * @param   obj The given evas gradient object.
+ * @return  The current spread mode of the gradient object.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI int
+evas_object_gradient_fill_spread_get(const Evas_Object *obj)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return EVAS_TEXTURE_REFLECT;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return EVAS_TEXTURE_REFLECT;
+   MAGIC_CHECK_END();
+   return o->cur.fill.spread;
+}
+
+/**
+ * Sets the angle at which the given evas gradient sits,
+ * relative to whatever intrinsic orientation of the grad type.
+ * Used mostly by 'linear' kinds of gradients.
+ * @param   obj   The given evas gradient object.
+ * @param   angle Angle in degrees.  Can be negative.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI void
+evas_object_gradient_angle_set(Evas_Object *obj, Evas_Angle angle)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (angle == o->cur.map.angle) return;
+   o->cur.map.angle = angle;
+   o->gradient_changed = 1;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the angle at which the given evas gradient object sits
+ * rel to its intrinsic orientation.
+ * @param   obj The given evas gradient object.
+ * @return  The current angle if successful. @c 0.0 otherwise.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI Evas_Angle
+evas_object_gradient_angle_get(const Evas_Object *obj)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0.0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return 0.0;
+   MAGIC_CHECK_END();
+   return o->cur.map.angle;
+}
+
+/**
+ * Sets the offset of the given evas gradient object's spectrum.
+ * @param   obj   The given evas gradient object.
+ * @param   offset Values can be negative.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI void
+evas_object_gradient_offset_set(Evas_Object *obj, float offset)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (offset == o->cur.map.offset) return;
+   o->cur.map.offset = offset;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the spectrum's offset
+ * @param   obj The given evas gradient object.
+ * @return  The current gradient offset if successful. @c 0.0 otherwise.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI float
+evas_object_gradient_offset_get(const Evas_Object *obj)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0.0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return 0.0;
+   MAGIC_CHECK_END();
+   return o->cur.map.offset;
+}
+
+/**
+ * Sets the direction of the given evas gradient object's spectrum.
+ * @param   obj   The given evas gradient object.
+ * @param   direction Values are either 1 (the default) or -1.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI void
+evas_object_gradient_direction_set(Evas_Object *obj, int direction)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (direction == o->cur.map.direction) return;
+   o->cur.map.direction = direction;
+   o->changed = 1;
+   o->gradient_changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the evas gradient object's spectrum direction
+ * @param   obj The given evas gradient object.
+ * @return  The current gradient direction if successful. @c 1 otherwise.
+ * @ingroup Evas_Object_Gradient_Group
+ */
+EAPI int
+evas_object_gradient_direction_get(const Evas_Object *obj)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->cur.map.direction;
+}
+
+/**
+ * @defgroup Evas_Object_Gradient_Type_Group Gradient Object Type Functions
+ *
+ * Functions that set or get a gradient's geometric type. Examples are "linear",
+ * "linear.diag", "linear.codiag", "radial", "rectangular", "angular", "sinusoidal", ...
+ * Some types may accept additional parameters to further specify the look.
+ */
+
+/**
+ * Sets the geometric type displayed by the given gradient object.
+ * @param   obj  The given gradient object.
+ * @param   name Name of the geometric type that the gradient is to be drawn as.
+ * @param   params List of allowable params that the given gradient type allows.
+ * Can be NULL.
+ * @ingroup Evas_Object_Gradient_Type_Group
+ */
+EAPI void
+evas_object_gradient_type_set(Evas_Object *obj, const char *name, const char *params)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   if (!name || !*name)
+     {
+       name = "linear";
+       params = NULL;
+     }
+   if (params && !*params)
+       params = NULL;
+   if ((o->cur.type.name) && (!strcmp(o->cur.type.name, name)))
+     {
+       if ((!o->cur.type.params) && (!params))
+         return;
+       if ((o->cur.type.params) && (params) && (!strcmp(o->cur.type.params, params)))
+         return;
+       if (o->cur.type.params)
+         {
+           if (o->prev.type.params == o->cur.type.params)
+               o->prev.type.params = strdup(o->cur.type.params);
+           free(o->cur.type.params);
+           o->cur.type.params = NULL;
+         }
+       if (params)
+         o->cur.type.params = strdup(params);
+       o->changed = 1;
+       o->gradient_changed = 1;
+       o->type_changed = 1;
+       evas_object_change(obj);
+       return;
+     }
+
+   if (o->cur.type.name)
+     {
+       if (o->prev.type.name == o->cur.type.name)
+         o->prev.type.name = strdup(o->cur.type.name);
+       free(o->cur.type.name);
+       o->cur.type.name = NULL;
+     }
+   o->cur.type.name = strdup(name);
+
+   if (o->cur.type.params)
+     {
+       if (o->prev.type.params == o->cur.type.params)
+         o->prev.type.params = strdup(o->cur.type.params);
+       free(o->cur.type.params);
+       o->cur.type.params = NULL;
+     }
+   if (params)
+       o->cur.type.params = strdup(params);
+   o->changed = 1;
+   o->gradient_changed = 1;
+   o->type_changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the type name and params of the given gradient object.
+ * @param   obj  The given gradient object.
+ * @param   name Pointer to a character pointer to store the pointer to the type
+ *               name in.
+ * @param   params  Pointer to a character pointer to store the pointer to the type
+ *               params string in.
+ * @ingroup Evas_Object_Gradient_Type_Group
+ */
+EAPI void
+evas_object_gradient_type_get(const Evas_Object *obj, char **name, char **params)
+{
+   Evas_Object_Gradient *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (name) *name = NULL;
+   if (params) *params = NULL;
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   if (name) *name = NULL;
+   if (params) *params = NULL;
+   return;
+   MAGIC_CHECK_END();
+   if (name) *name = o->cur.type.name;
+   if (params) *params = o->cur.type.params;
+}
+
+
+/*
+  these two functions don't really belong here as they can apply to other
+  objs as well, but for now..
+*/
+
+/**
+   FIXME: ...
+**/
+EAPI void
+evas_color_hsv_to_rgb(float h, float s, float v, int *r, int *g, int *b)
+{
+   evas_common_convert_color_hsv_to_rgb(h, s, v, r, g, b);
+}
+
+/**
+   FIXME: ...
+**/
+EAPI void
+evas_color_rgb_to_hsv(int r, int g, int b, float *h, float *s, float *v)
+{
+   evas_common_convert_color_rgb_to_hsv(r, g, b, h, s, v);
+}
+
+/**
+   FIXME: ...
+**/
+EAPI void
+evas_color_argb_premul(int a, int *r, int *g, int *b)
+{
+   evas_common_convert_color_argb_premul(a, r, g, b);
+}
+
+/**
+   FIXME: ...
+**/
+EAPI void
+evas_color_argb_unpremul(int a, int *r, int *g, int *b)
+{
+   evas_common_convert_color_argb_unpremul(a, r, g, b);
+}
+
+/**
+   FIXME: ...
+**/
+EAPI void
+evas_data_argb_premul(unsigned int *data, unsigned int len)
+{
+   if (!data || (len < 1)) return;
+   evas_common_convert_argb_premul(data, len);
+}
+
+/**
+   FIXME: ...
+**/
+EAPI void
+evas_data_argb_unpremul(unsigned int *data, unsigned int len)
+{
+   if (!data || (len < 1)) return;
+   evas_common_convert_argb_unpremul(data, len);
+}
+
+
+
+/* all nice and private */
+static void
+evas_object_gradient_init(Evas_Object *obj)
+{
+   /* alloc grad ob, setup methods and default values */
+   obj->object_data = evas_object_gradient_new();
+   /* set up default settings for this kind of object */
+   obj->cur.color.r = 255;
+   obj->cur.color.g = 255;
+   obj->cur.color.b = 255;
+   obj->cur.color.a = 255;
+   obj->cur.geometry.x = 0;
+   obj->cur.geometry.y = 0;
+   obj->cur.geometry.w = 0;
+   obj->cur.geometry.h = 0;
+   obj->cur.layer = 0;
+   obj->cur.anti_alias = 1;
+   obj->cur.interpolation_color_space = EVAS_COLOR_SPACE_ARGB;
+   obj->cur.render_op = EVAS_RENDER_BLEND;
+   /* set up object-specific settings */
+   obj->prev = obj->cur;
+   /* set up methods (compulsory) */
+   obj->func = &object_func;
+   obj->type = o_type;
+}
+
+static void *
+evas_object_gradient_new(void)
+{
+   Evas_Object_Gradient *o;
+
+   /* alloc obj private data */
+   o = calloc(1, sizeof(Evas_Object_Gradient));
+   if (!o) return NULL;
+   o->magic = MAGIC_OBJ_GRADIENT;
+   o->cur.map.angle = 0.0;
+   o->cur.map.offset = 0.0;
+   o->cur.map.direction = 1;
+   o->cur.fill.x = 0;
+   o->cur.fill.y = 0;
+   o->cur.fill.w = 1;
+   o->cur.fill.h = 1;
+   o->cur.fill.angle = 0.0;
+   o->cur.fill.spread = EVAS_TEXTURE_REFLECT;
+   o->cur.type.name = strdup("linear");
+   o->cur.type.params = NULL;
+   o->cur.gradient_opaque = 0;
+   o->prev = o->cur;
+   o->changed = 1;
+   o->gradient_changed = 1;
+   o->type_changed = 1;
+   return o;
+}
+
+static void
+evas_object_gradient_free(Evas_Object *obj)
+{
+   Evas_Object_Gradient *o;
+
+   /* frees private object data. very simple here */
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Gradient, MAGIC_OBJ_GRADIENT);
+   return;
+   MAGIC_CHECK_END();
+   /* free obj */
+   if (o->prev.type.name && (o->prev.type.name != o->cur.type.name))
+       free(o->prev.type.name);
+   if (o->prev.type.params && (o->prev.type.params != o->cur.type.params))
+       free(o->prev.type.params);
+   if (o->cur.type.name)
+       free(o->cur.type.name);
+   if (o->cur.type.params)
+       free(o->cur.type.params);
+   if (o->engine_data)
+      obj->layer->evas->engine.func->gradient_free(obj->layer->evas->engine.data.output,
+                                                  o->engine_data);
+   free(o);
+   obj->object_data = NULL; 
+}
+
+
+static void
+evas_object_grad_get_fill_coords(Evas_Object *obj, Evas_Coord fx, Evas_Coord fy, Evas_Coord fw, Evas_Coord fh, Evas_Coord *fx_ret, Evas_Coord *fy_ret, Evas_Coord *fw_ret,
+Evas_Coord *fh_ret)
+{
+   Evas_Coord  x, y, w, h;
+
+   x = ((fx * obj->layer->evas->output.w) /
+           (Evas_Coord)obj->layer->evas->viewport.w);
+   w = ((fw * obj->layer->evas->output.w) /
+       (Evas_Coord)obj->layer->evas->viewport.w);
+   y = ((fy * obj->layer->evas->output.h) /
+           (Evas_Coord)obj->layer->evas->viewport.h);
+   h = ((fh * obj->layer->evas->output.h) /
+       (Evas_Coord)obj->layer->evas->viewport.h);
+
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+
+   *fx_ret = x;  *fw_ret = w;
+   *fy_ret = y;  *fh_ret = h;
+}
+
+
+
+static void
+evas_object_gradient_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
+{
+   Evas_Object_Gradient *o;
+
+   /* render object to surface with context, and offxet by x,y */
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   obj->layer->evas->engine.func->context_multiplier_unset(output, context);
+   obj->layer->evas->engine.func->context_anti_alias_set(output, context, obj->cur.anti_alias);
+   obj->layer->evas->engine.func->context_render_op_set(output, context, obj->cur.render_op);
+   if (o->engine_data)
+     {
+       obj->layer->evas->engine.func->gradient_draw(output, context, surface,
+                                                    o->engine_data,
+                                                    obj->cur.geometry.x + x,
+                                                    obj->cur.geometry.y + y,
+                                                    obj->cur.geometry.w,
+                                                    obj->cur.geometry.h);
+////                                                obj->cur.cache.geometry.x + x,
+////                                                obj->cur.cache.geometry.y + y,
+////                                                obj->cur.cache.geometry.w,
+////                                                obj->cur.cache.geometry.h);
+     }
+}
+
+static void
+evas_object_gradient_render_pre(Evas_Object *obj)
+{
+   Evas_Rectangles rects = { 0, 0, NULL };
+   Evas_Object_Gradient *o;
+   int is_v, was_v;
+
+   /* dont pre-render the obj twice! */
+   if (obj->pre_render_done) return;
+   obj->pre_render_done = 1;
+   /* pre-render phase. this does anything an object needs to do just before */
+   /* rendering. this could mean loading the image data, retrieving it from */
+   /* elsewhere, decoding video etc. */
+   /* then when this is done the object needs to figure if it changed and */
+   /* if so what and where and add the appropriate redraw rectangles */
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   /* if someone is clipping this obj - go calculate the clipper */
+   if (obj->cur.clipper)
+     {
+       if (obj->cur.cache.clip.dirty)
+         evas_object_clip_recalc(obj->cur.clipper);
+       obj->cur.clipper->func->render_pre(obj->cur.clipper);
+     }
+   /* if it changed color */
+   if ((obj->cur.color.r != obj->prev.color.r) ||
+       (obj->cur.color.g != obj->prev.color.g) ||
+       (obj->cur.color.b != obj->prev.color.b) ||
+       (obj->cur.color.a != obj->prev.color.a))
+     { o->gradient_changed = 1;  o->changed = 1; }
+   if ((!o->gradient_changed) && ((obj->cur.cache.clip.r != obj->prev.cache.clip.r) ||
+       (obj->cur.cache.clip.g != obj->prev.cache.clip.g) ||
+       (obj->cur.cache.clip.b != obj->prev.cache.clip.b) ||
+       (obj->cur.cache.clip.a != obj->prev.cache.clip.a)))
+     { o->gradient_changed = 1;  o->changed = 1; }
+   if (!o->gradient_changed && (obj->cur.interpolation_color_space != obj->prev.interpolation_color_space))
+     { o->gradient_changed = 1;  o->changed = 1; }
+   if (!o->changed && (obj->cur.render_op != obj->prev.render_op))
+       o->changed = 1;
+   if (!o->changed && (obj->cur.anti_alias != obj->prev.anti_alias))
+       o->changed = 1;
+   if (o->changed && o->engine_data)
+     {
+       Evas_Coord  fx, fy, fw, fh;
+
+       evas_object_grad_get_fill_coords(obj, o->cur.fill.x, o->cur.fill.y,
+                                        o->cur.fill.w, o->cur.fill.h,
+                                        &fx, &fy, &fw, &fh);
+       obj->layer->evas->engine.func->gradient_fill_set(obj->layer->evas->engine.data.output, o->engine_data,
+                                                        fx, fy, fw, fh);
+       obj->layer->evas->engine.func->gradient_fill_angle_set(obj->layer->evas->engine.data.output, o->engine_data,
+                                                               o->cur.fill.angle);
+       obj->layer->evas->engine.func->gradient_fill_spread_set(obj->layer->evas->engine.data.output, o->engine_data,
+                                                               o->cur.fill.spread);
+       obj->layer->evas->engine.func->gradient_angle_set(obj->layer->evas->engine.data.output, o->engine_data,
+                                                         o->cur.map.angle);
+       obj->layer->evas->engine.func->gradient_direction_set(obj->layer->evas->engine.data.output, o->engine_data,
+                                                             o->cur.map.direction);
+       obj->layer->evas->engine.func->gradient_offset_set(obj->layer->evas->engine.data.output, o->engine_data,
+                                                          o->cur.map.offset);
+       if (o->type_changed)
+           obj->layer->evas->engine.func->gradient_type_set(obj->layer->evas->engine.data.output, o->engine_data,
+                                                             o->cur.type.name, o->cur.type.params);
+
+       obj->layer->evas->engine.func->context_anti_alias_set(obj->layer->evas->engine.data.output,
+                                                               obj->layer->evas->engine.data.context,
+                                                               obj->cur.anti_alias);
+       obj->layer->evas->engine.func->context_render_op_set(obj->layer->evas->engine.data.output,
+                                                            obj->layer->evas->engine.data.context, obj->cur.render_op);
+       obj->layer->evas->engine.func->context_multiplier_set(obj->layer->evas->engine.data.output,
+                                                               obj->layer->evas->engine.data.context,
+                                                               obj->cur.cache.clip.r, obj->cur.cache.clip.g,
+                                                               obj->cur.cache.clip.b, obj->cur.cache.clip.a);
+       obj->layer->evas->engine.func->context_color_interpolation_set(obj->layer->evas->engine.data.output,
+                                                                       obj->layer->evas->engine.data.context,
+                                                                       obj->cur.interpolation_color_space);
+       if (o->gradient_changed)
+           obj->layer->evas->engine.func->gradient_render_pre(obj->layer->evas->engine.data.output,
+                                                               obj->layer->evas->engine.data.context,
+                                                               o->engine_data);
+       o->cur.gradient_opaque = obj->layer->evas->engine.func->gradient_is_opaque(obj->layer->evas->engine.data.output,
+                                                                                  obj->layer->evas->engine.data.context,
+                                                                                  o->engine_data,
+                                                                                  obj->cur.cache.clip.x, obj->cur.cache.clip.y,
+                                                                                  obj->cur.cache.clip.w, obj->cur.cache.clip.h);
+
+       if (obj->cur.cache.clip.a != 255)
+           o->cur.gradient_opaque = 0;
+    }
+   /* now figure what changed and add draw rects */
+   /* if it just became visible or invisible */
+   is_v = evas_object_is_visible(obj);
+   was_v = evas_object_was_visible(obj);
+   if (is_v != was_v)
+     {
+       evas_object_render_pre_visible_change(&rects, obj, is_v, was_v);
+       goto done;
+     }
+   /* its not visible - we accounted for it appearing or not so just abort */
+   if (!is_v) goto done;
+   /* clipper changed this is in addition to anything else for obj */
+   evas_object_render_pre_clipper_change(&rects, obj);
+   /* gradient changed */
+   if (o->changed || obj->restack)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed geometry */
+   if ((obj->cur.geometry.x != obj->prev.geometry.x) ||
+       (obj->cur.geometry.y != obj->prev.geometry.y) ||
+       (obj->cur.geometry.w != obj->prev.geometry.w) ||
+       (obj->cur.geometry.h != obj->prev.geometry.h))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
+   /* area so if there were updates for it they get wiped. don't do it if we */
+   /* arent fully opaque and we are visible */
+   
+   if (evas_object_is_visible(obj) &&
+       evas_object_is_opaque(obj))
+     obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
+                                                           obj->cur.cache.clip.x,
+                                                           obj->cur.cache.clip.y,
+                                                           obj->cur.cache.clip.w,
+                                                           obj->cur.cache.clip.h);
+   
+   done:
+   evas_object_render_pre_effect_updates(&rects, obj, is_v, was_v);
+}
+
+static void
+evas_object_gradient_render_post(Evas_Object *obj)
+{
+   Evas_Object_Gradient *o;
+
+   /* this moves the current data to the previous state parts of the object */
+   /* in whatever way is safest for the object. also if we don't need object */
+   /* data anymore we can free it if the object deems this is a good idea */
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   /* remove those pesky changes */
+   while (obj->clip.changes)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)obj->clip.changes->data;
+       obj->clip.changes = evas_list_remove(obj->clip.changes, r);
+       free(r);
+     }
+   /* move cur to prev safely for object data */
+   obj->prev = obj->cur;
+   if (o->prev.type.name && (o->prev.type.name != o->cur.type.name))
+       free(o->prev.type.name);
+   if (o->prev.type.params && (o->prev.type.params != o->cur.type.params))
+       free(o->prev.type.params);
+   o->prev = o->cur;
+   o->changed = 0;
+   o->gradient_changed = 0;
+   o->type_changed = 0;
+}
+
+static int
+evas_object_gradient_is_opaque(Evas_Object *obj)
+{
+   Evas_Object_Gradient *o;
+
+   /* this returns 1 if the internal object data implies that the object is */
+   /* currently fully opaque over the entire region it occupies */
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   if (!o->engine_data) return 0;
+   return o->cur.gradient_opaque;
+ }
+
+static int
+evas_object_gradient_was_opaque(Evas_Object *obj)
+{
+   Evas_Object_Gradient *o;
+
+   /* this returns 1 if the internal object data implies that the object was */
+   /* currently fully opaque over the entire region it occupies */
+   o = (Evas_Object_Gradient *)(obj->object_data);
+   if (!o->engine_data) return 0;
+   return o->prev.gradient_opaque;
+}
diff --git a/src/lib/canvas/evas_object_image.c b/src/lib/canvas/evas_object_image.c
new file mode 100644 (file)
index 0000000..487350c
--- /dev/null
@@ -0,0 +1,2463 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_private.h"
+#include "../engines/common/evas_convert_color.h"
+#include "../engines/common/evas_convert_colorspace.h"
+#include "../engines/common/evas_convert_yuv.h"
+
+/* private magic number for image objects */
+static const char o_type[] = "image";
+
+/* private struct for rectangle object internal data */
+typedef struct _Evas_Object_Image      Evas_Object_Image;
+
+struct _Evas_Object_Image
+{
+   DATA32            magic;
+
+   struct {
+      Evas_Coord_Rectangle fill;
+      struct {
+        short       w, h, stride;
+      } image;
+      struct {
+        short         l, r, t, b;
+        unsigned char fill;
+      } border;
+
+      const char    *file;
+      const char    *key;
+      int            cspace;
+
+      unsigned char  smooth_scale : 1;
+      unsigned char  has_alpha :1;
+   } cur, prev;
+
+   int               pixels_checked_out;
+   int               load_error;
+   Evas_List        *pixel_updates;
+
+   struct {
+      unsigned char  scale_down_by;
+      double         dpi;
+      short          w, h;
+   } load_opts;
+
+   struct {
+      void            (*get_pixels) (void *data, Evas_Object *o);
+      void             *get_pixels_data;
+   } func;
+
+   void             *engine_data;
+
+   unsigned char     changed : 1;
+   unsigned char     dirty_pixels : 1;
+};
+
+/* private methods for image objects */
+static void evas_object_image_unload(Evas_Object *obj);
+static void evas_object_image_load(Evas_Object *obj);
+static Evas_Coord evas_object_image_figure_x_fill(Evas_Object *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret);
+static Evas_Coord evas_object_image_figure_y_fill(Evas_Object *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret);
+
+static void evas_object_image_init(Evas_Object *obj);
+static void *evas_object_image_new(void);
+static void evas_object_image_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
+static void evas_object_image_free(Evas_Object *obj);
+static void evas_object_image_render_pre(Evas_Object *obj);
+static void evas_object_image_render_post(Evas_Object *obj);
+
+static int evas_object_image_is_opaque(Evas_Object *obj);
+static int evas_object_image_was_opaque(Evas_Object *obj);
+static int evas_object_image_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+
+static void *evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_Colorspace to_cspace);
+
+static const Evas_Object_Func object_func =
+{
+   /* methods (compulsory) */
+   evas_object_image_free,
+   evas_object_image_render,
+   evas_object_image_render_pre,
+   evas_object_image_render_post,
+   /* these are optional. NULL = nothing */
+   NULL,
+   NULL,
+   NULL,
+   NULL,
+   evas_object_image_is_opaque,
+   evas_object_image_was_opaque,
+   evas_object_image_is_inside,
+   NULL,
+   NULL
+};
+
+/**
+ * @defgroup Evas_Object_Image Image Object Functions
+ *
+ * Functions used to create and manipulate image objects.
+ *
+ * Note - Image objects may return or accept "image data" in multiple formats.
+ * This is based on the colorspace of an object. Here is a rundown on formats:
+ *
+ * EVAS_COLORSPACE_ARGB8888:
+ *
+ * This pixel format is a linear block of pixels, starting at the top-left row
+ * by row until the bottom right of the image or pixel region. All pixels are
+ * 32-bit unsigned int's with the high-byte being alpha and the low byte being
+ * blue in the format ARGB. Alpha may or may not be used by evas depending on
+ * the alpha flag of the image, but if not used, should be set to 0xff anyway.
+ *
+ * This colorspace uses premultiplied alpha. That means that R, G and B cannot
+ * exceed A in value. The conversion from non-premultiplied colorspace is:
+ *
+ * R = (r * a) / 255; G = (g * a) / 255; B = (b * a) / 255;
+ *
+ * So 50% transparent blue will be: 0x80000080. This will not be "dark" - just
+ * 50% transparent. Values are 0 == black, 255 == solid or full red, green or
+ * blue.
+ *
+ * EVAS_COLORSPACE_YCBCR422P601_PL:
+ *
+ * This is a pointer-list indirected set of YUV (YCbCr) pixel data. This means
+ * that the data returned or set is not actual pixel data, but pointers TO
+ * lines of pixel data. The list of pointers will first be N rows of pointers
+ * to the Y plane - pointing to the first pixel at the start of each row in
+ * the Y plane. N is the height of the image data in pixels. Each pixel in the
+ * Y, U and V planes is 1 byte exactly, packed. The next N / 2 pointers will
+ * point to rows in the U plane, and the next N / 2 pointers will point to
+ * the V plane rows. U and V planes are half the horizontal and vertical
+ * resolution of the U plane.
+ *
+ * Row order is top to bottom and row pixels are stored left to right.
+ *
+ * There is a limitation that these images MUST be a multiple of 2 pixels in
+ * size horizontally or vertically. This is due to the U and V planes being
+ * half resolution. Also note that this assumes the itu601 YUV colorspace
+ * specification. This is defined for standard television and mpeg streams.
+ * HDTV may use the itu709 specification.
+ *
+ * Values are 0 to 255, indicating full or no signal in that plane
+ * respectively.
+ *
+ * EVAS_COLORSPACE_YCBCR422P709_PL:
+ *
+ * Not implemented yet.
+ *
+ * EVAS_COLORSPACE_RGB565_A5P:
+ *
+ * In the process of being implemented in 1 engine only. This may change.
+ *
+ * This is a pointer to image data for 16-bit half-word pixel data in 16bpp
+ * RGB 565 format (5 bits red, 6 bits green, 5 bits blue), with the high-byte
+ * containing red and the low byte containing blue, per pixel. This data is
+ * packed row by row from the top-left to the bottom right.
+ *
+ * If the image has an alpha channel enabled there will be an extra alpha plane
+ * after the color pixel plane. If not, then this data will not exist and
+ * should not be accessed in any way. This plane is a set of pixels with 1
+ * byte per pixel defining the alpha values of all pixels in the image from
+ * the top-left to the bottom right of the image, row by row. Even though
+ * the values of the alpha pixels can be 0 to 255, only values 0 through to 32
+ * are used, 32 being solid and 0 being transparent.
+ *
+ * RGB values can be 0 to 31 for red and blue and 0 to 63 for green, with 0
+ * being black and 31 or 63 being full red, green or blue respectively. This
+ * colorspace is also pre-multiplied like EVAS_COLORSPACE_ARGB8888 so:
+ *
+ * R = (r * a) / 32; G = (g * a) / 32; B = (b * a) / 32;
+ */
+
+/**
+ * Creates a new image object on the given evas.
+ *
+ * @param e The given evas.
+ * @return The created image object.
+ * @ingroup Evas_Object_Image
+ */
+EAPI Evas_Object *
+evas_object_image_add(Evas *e)
+{
+   Evas_Object *obj;
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   obj = evas_object_new();
+   evas_object_image_init(obj);
+   evas_object_inject(obj, e);
+   o = (Evas_Object_Image *)(obj->object_data);
+   o->cur.cspace = obj->layer->evas->engine.func->image_colorspace_get(obj->layer->evas->engine.data.output,
+                                                                      o->engine_data);
+   return obj;
+}
+
+/**
+ * @defgroup Evas_Object_Image_File_Group Image Object File Functions
+ *
+ * Functions that write to or retrieve images from files.
+ */
+
+/**
+ * Sets the filename and key of the given image object.
+ *
+ * If the file supports multiple data stored in it as eet,
+ * you can specify the key to be used as the index of the
+ * image in this file.
+ *
+ * @param obj The given image object.
+ * @param file The image filename.
+ * @param key The image key in file, or NULL.
+ * @ingroup Evas_Object_Image_File_Group
+ */
+EAPI void
+evas_object_image_file_set(Evas_Object *obj, const char *file, const char *key)
+{
+   Evas_Object_Image *o;
+   Evas_Image_Load_Opts lo;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if ((o->cur.file) && (file) && (!strcmp(o->cur.file, file)))
+     {
+       if ((!o->cur.key) && (!key))
+         return;
+       if ((o->cur.key) && (key) && (!strcmp(o->cur.key, key)))
+         return;
+     }
+   if (o->cur.file) evas_stringshare_del(o->cur.file);
+   if (o->cur.key) evas_stringshare_del(o->cur.key);
+   if (file) o->cur.file = evas_stringshare_add(file);
+   else o->cur.file = NULL;
+   if (key) o->cur.key = evas_stringshare_add(key);
+   else o->cur.key = NULL;
+   o->prev.file = NULL;
+   o->prev.key = NULL;
+   if (o->engine_data)
+     obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
+                                              o->engine_data);
+   o->load_error = EVAS_LOAD_ERROR_NONE;
+   lo.scale_down_by = o->load_opts.scale_down_by;
+   lo.dpi = o->load_opts.dpi;
+   lo.w = o->load_opts.w;
+   lo.h = o->load_opts.h;
+   o->engine_data = obj->layer->evas->engine.func->image_load(obj->layer->evas->engine.data.output,
+                                                             o->cur.file,
+                                                             o->cur.key,
+                                                             &o->load_error,
+                                                             &lo);
+   if (o->engine_data)
+     {
+       int w, h;
+       int stride;
+
+       obj->layer->evas->engine.func->image_size_get(obj->layer->evas->engine.data.output,
+                                                     o->engine_data, &w, &h);
+       if (obj->layer->evas->engine.func->image_stride_get)
+         obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
+                                                         o->engine_data, &stride);
+       else
+         stride = w;
+       o->cur.has_alpha = obj->layer->evas->engine.func->image_alpha_get(obj->layer->evas->engine.data.output,
+                                                                         o->engine_data);
+       o->cur.cspace = obj->layer->evas->engine.func->image_colorspace_get(obj->layer->evas->engine.data.output,
+                                                                           o->engine_data);
+       o->cur.image.w = w;
+       o->cur.image.h = h;
+       o->cur.image.stride = stride;
+     }
+   else
+     {
+       o->load_error = EVAS_LOAD_ERROR_GENERIC;
+       o->cur.has_alpha = 1;
+       o->cur.cspace = EVAS_COLORSPACE_ARGB8888;
+       o->cur.image.w = 0;
+       o->cur.image.h = 0;
+       o->cur.image.stride = 0;
+     }
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the filename and key of the given image object.
+ *
+ * @param obj The given image object.
+ * @param file Location to store the image filename, or NULL.
+ * @param key Location to store the image key, or NULL.
+ * @ingroup Evas_Object_Image_File_Group
+ */
+EAPI void
+evas_object_image_file_get(const Evas_Object *obj, const char **file, const char **key)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (file) *file = NULL;
+   if (key) *key = NULL;
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   if (file) *file = NULL;
+   if (key) *key = NULL;
+   return;
+   MAGIC_CHECK_END();
+   if (file) *file = o->cur.file;
+   if (key) *key = o->cur.key;
+}
+
+/**
+ * @defgroup Evas_Object_Image_Border_Group Image Object Border Functions
+ *
+ * Functions that adjust the unscaled image border of image objects.
+ */
+
+/**
+ * Sets how much of each border of the given image object is not
+ * to be scaled.
+ *
+ * When rendering, the image may be scaled to fit the size of the
+ * image object. This function sets what area around the border of
+ * the image is not to be scaled. This sort of function is useful for
+ * widget theming, where, for example, buttons may be of varying
+ * sizes, but the border size must remain constant.
+ *
+ * The units used for @p l, @p r, @p t and @p b are output units.
+ *
+ * @param obj The given image object.
+ * @param l Distance of the left border that is not to be stretched.
+ * @param r Distance of the right border that is not to be stretched.
+ * @param t Distance of the top border that is not to be stretched.
+ * @param b Distance of the bottom border that is not to be stretched.
+ * @ingroup Evas_Object_Image_Border_Group
+ */
+EAPI void
+evas_object_image_border_set(Evas_Object *obj, int l, int r, int t, int b)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if (l < 0) l = 0;
+   if (r < 0) r = 0;
+   if (t < 0) t = 0;
+   if (b < 0) b = 0;
+   if ((o->cur.border.l == l) &&
+       (o->cur.border.r == r) &&
+       (o->cur.border.t == t) &&
+       (o->cur.border.b == b)) return;
+   o->cur.border.l = l;
+   o->cur.border.r = r;
+   o->cur.border.t = t;
+   o->cur.border.b = b;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves how much of each border of the given image object is not to
+ * be scaled.
+ *
+ * See @ref evas_object_image_border_set for more details.
+ *
+ * @param obj The given image object.
+ * @param l Location to store the left border width in, or NULL.
+ * @param r Location to store the right border width in, or NULL.
+ * @param t Location to store the top border width in, or NULL.
+ * @param b Location to store the bottom border width in, or NULL.
+ * @ingroup Evas_Object_Image_Border_Group
+ */
+EAPI void
+evas_object_image_border_get(const Evas_Object *obj, int *l, int *r, int *t, int *b)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (l) *l = 0;
+   if (r) *r = 0;
+   if (t) *t = 0;
+   if (b) *b = 0;
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   if (l) *l = 0;
+   if (r) *r = 0;
+   if (t) *t = 0;
+   if (b) *b = 0;
+   return;
+   MAGIC_CHECK_END();
+   if (l) *l = o->cur.border.l;
+   if (r) *r = o->cur.border.r;
+   if (t) *t = o->cur.border.t;
+   if (b) *b = o->cur.border.b;
+}
+
+/**
+ * @defgroup Evas_Object_Image_Fill_Group Image Object Fill Rectangle Functions
+ *
+ * Functions that deal with what areas of the image object are to be
+ * tiled with the given image.
+ */
+
+/**
+ * Sets if the center part of the given image object (not the border)
+ * should be drawn.
+ *
+ * When rendering, the image may be scaled to fit the size of the
+ * image object. This function sets if the center part of the scaled image
+ * is to be drawn or left completely blank. Very useful for frames and
+ * decorations.
+ *
+ * @param obj The given image object.
+ * @param fill Whether the center should be drawn.
+ * @ingroup Evas_Object_Image_Fill_Group
+ */
+EAPI void
+evas_object_image_border_center_fill_set(Evas_Object *obj, Evas_Bool fill)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if (((o->cur.border.fill) && (fill)) ||
+       ((!o->cur.border.fill) && (!fill)))
+     return;
+   o->cur.border.fill = fill;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves if the center of the given image object is to be drawn
+ * or not.
+ *
+ * See @ref evas_object_image_fill_set for more details.
+ *
+ * @param obj The given image object.
+ * @return If the center is to be drawn or not.
+ * @ingroup Evas_Object_Image_Fill_Group
+ */
+EAPI Evas_Bool
+evas_object_image_border_center_fill_get(const Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->cur.border.fill;
+}
+
+/**
+ * Sets the rectangle of the given image object that the image will
+ * be drawn to.
+ *
+ * Note that the image will be tiled around this one rectangle. To have
+ * only one copy of the image drawn, @p x and @p y must be 0 and @p w
+ * and @p h need to be the width and height of the image object
+ * respectively.
+ *
+ * The default values for the fill parameters is @p x = 0, @p y = 0,
+ * @p w = 32 and @p h = 32.
+ *
+ * @param obj The given image object.
+ * @param x The X coordinate for the top left corner of the image.
+ * @param y The Y coordinate for the top left corner of the image.
+ * @param w The width of the image.
+ * @param h The height of the image.
+ * @ingroup Evas_Object_Image_Fill_Group
+ */
+EAPI void
+evas_object_image_fill_set(Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h)
+{
+   Evas_Object_Image *o;
+
+   if (w < 0) w = -w;
+   if (h < 0) h = -h;
+   if (w == 0.0) return;
+   if (h == 0.0) return;
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if ((o->cur.fill.x == x) &&
+       (o->cur.fill.y == y) &&
+       (o->cur.fill.w == w) &&
+       (o->cur.fill.h == h)) return;
+   o->cur.fill.x = x;
+   o->cur.fill.y = y;
+   o->cur.fill.w = w;
+   o->cur.fill.h = h;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the dimensions of the rectangle of the given image object
+ * that the image will be drawn to.
+ *
+ * See @ref evas_object_image_fill_set for more details.
+ *
+ * @param obj The given image object.
+ * @param x Location to store the X coordinate for the top left corner of the image in, or NULL.
+ * @param y Location to store the Y coordinate for the top left corner of the image in, or NULL.
+ * @param w Location to store the width of the image in, or NULL.
+ * @param h Location to store the height of the image in, or NULL.
+ * @ingroup Evas_Object_Image_Fill_Group
+ */
+EAPI void
+evas_object_image_fill_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (w) *w = 0;
+   if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (w) *w = 0;
+   if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   if (x) *x = o->cur.fill.x;
+   if (y) *y = o->cur.fill.y;
+   if (w) *w = o->cur.fill.w;
+   if (h) *h = o->cur.fill.h;
+}
+
+/**
+ * @defgroup Evas_Object_Image_Size Image Object Image Size Functions
+ *
+ * Functions that change the size of the image used by an image object.
+ */
+
+/**
+ * Sets the size of the given image object.
+ *
+ * This function will scale down or crop the image so that it is
+ * treated as if it were at the given size. If the size given is
+ * smaller than the image, it will be cropped. If the size given is
+ * larger, then the image will be treated as if it were in the upper
+ * left hand corner of a larger image that is otherwise transparent.
+ *
+ * @param obj The given image object.
+ * @param w The new width of the image.
+ * @param h The new height of the image.
+ * @ingroup Evas_Object_Image_Size
+ */
+EAPI void
+evas_object_image_size_set(Evas_Object *obj, int w, int h)
+{
+   Evas_Object_Image *o;
+   int stride;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   if (w > 32768) return;
+   if (h > 32768) return;
+   if ((w == o->cur.image.w) &&
+       (h == o->cur.image.h)) return;
+   o->cur.image.w = w;
+   o->cur.image.h = h;
+   if (o->engine_data)
+     o->engine_data = obj->layer->evas->engine.func->image_size_set(obj->layer->evas->engine.data.output,
+                                                                   o->engine_data,
+                                                                   w, h);
+   else
+     o->engine_data = obj->layer->evas->engine.func->image_new_from_copied_data
+     (obj->layer->evas->engine.data.output, w, h, NULL, o->cur.has_alpha,
+      o->cur.cspace);
+
+   if (obj->layer->evas->engine.func->image_stride_get)
+     obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
+                                                    o->engine_data, &stride);
+   else
+     stride = w;
+   o->cur.image.stride = stride;
+
+/* FIXME - in engine call above
+   if (o->engine_data)
+     o->engine_data = obj->layer->evas->engine.func->image_alpha_set(obj->layer->evas->engine.data.output,
+                                                                    o->engine_data,
+                                                                    o->cur.has_alpha);
+*/
+   EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o);
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the size of the given image object.
+ *
+ * See @ref evas_object_image_size_set for more details.
+ *
+ * @param obj The given image object.
+ * @param w Location to store the width of the image in, or NULL.
+ * @param h Location to store the height of the image in, or NULL.
+ * @ingroup Evas_Object_Image_Size
+ */
+EAPI void
+evas_object_image_size_get(const Evas_Object *obj, int *w, int *h)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (w) *w = 0;
+   if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   if (w) *w = 0;
+   if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   if (w) *w = o->cur.image.w;
+   if (h) *h = o->cur.image.h;
+}
+
+/**
+ * Retrieves the row stride of the given image object,
+ *
+ * The row stride is the number of units between the start of a
+ * row and the start of the next row.
+ *
+ * @param obj The given image object.
+ * @return The stride of the image.
+ * @ingroup Evas_Object_Image_Size
+ */
+EAPI int
+evas_object_image_stride_get(const Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->cur.image.stride;
+}
+
+/**
+ * Retrieves a number representing any error that occurred during the last
+ * load of the given image object.
+ *
+ * @param obj The given image object.
+ * @return A value giving the last error that occurred. It should be one of
+ *         the @c EVAS_LOAD_ERROR_* values.  @c EVAS_LOAD_ERROR_NONE is
+ *         returned if there was no error.
+ * @ingroup Evas_Object_Image
+ */
+EAPI int
+evas_object_image_load_error_get(const Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->load_error;
+}
+
+/**
+ * @defgroup Evas_Object_Image_Data Image Object Image Data Functions
+ *
+ * Functions that allow you to access or modify the image pixel data of an
+ * image object.
+ */
+
+/**
+ * Converts the raw image data of the given image object to the
+ * specified colorspace.
+ *
+ * Note that this function does not modify the raw image data.
+ * If the requested colorspace is the same as the image colorspace
+ * nothing is done and NULL is returned. You should use
+ * evas_object_image_colorspace_get() to check the current image
+ * colorspace.
+ *
+ * See @ref evas_object_image_colorspace_get.
+ *
+ * @param obj The given image object.
+ * @param to_cspace The colorspace to which the image raw data will be converted.
+ * @return data A newly allocated data in the format specified by to_cspace.
+ * @ingroup Evas_Object_Image_Data
+ */
+EAPI void *
+evas_object_image_data_convert(Evas_Object *obj, Evas_Colorspace to_cspace)
+{
+   Evas_Object_Image *o;
+   DATA32 *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!o->engine_data) return NULL;
+   if (!o->cur.cspace == to_cspace) return NULL;
+   data = NULL;
+   o->engine_data = obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output,
+                                                                 o->engine_data,
+                                                                 0,
+                                                                 &data);
+   return evas_object_image_data_convert_internal(o, data, to_cspace);
+}
+
+/**
+ * Sets the raw image data of the given image object.
+ *
+ * Note that the raw data must be of the same size and colorspace
+ * of the image. If data is NULL the current image data will be freed.
+ *
+ * @param obj The given image object.
+ * @param data The raw data, or NULL.
+ * @ingroup Evas_Object_Image_Data
+ */
+EAPI void
+evas_object_image_data_set(Evas_Object *obj, void *data)
+{
+   Evas_Object_Image *o;
+   void *p_data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   p_data = o->engine_data;
+   if (data)
+     {
+       if (o->engine_data)
+         o->engine_data = obj->layer->evas->engine.func->image_data_put(obj->layer->evas->engine.data.output,
+                                                                        o->engine_data,
+                                                                        data);
+       else
+         o->engine_data = obj->layer->evas->engine.func->image_new_from_data(obj->layer->evas->engine.data.output,
+                                                                             o->cur.image.w,
+                                                                             o->cur.image.h,
+                                                                             data,
+                                                                             o->cur.has_alpha,
+                                                                             o->cur.cspace);
+     }
+   else
+     {
+       if (o->engine_data)
+         obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
+                                                   o->engine_data);
+       o->load_error = EVAS_LOAD_ERROR_NONE;
+       o->cur.image.w = 0;
+       o->cur.image.h = 0;
+       o->cur.image.stride = 0;
+       o->engine_data = NULL;
+     }
+/* FIXME - in engine call above
+   if (o->engine_data)
+     o->engine_data = obj->layer->evas->engine.func->image_alpha_set(obj->layer->evas->engine.data.output,
+                                                                    o->engine_data,
+                                                                    o->cur.has_alpha);
+*/
+   if (o->pixels_checked_out > 0) o->pixels_checked_out--;
+   if (p_data != o->engine_data)
+     {
+       EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o);
+       o->pixels_checked_out = 0;
+     }
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Get a pointer to the raw image data of the given image object.
+ *
+ * This function returns a pointer to an image object's internal pixel buffer,
+ * for reading only or read/write. If you request it for writing, the image
+ * will be marked dirty so that it gets redrawn at the next update.
+ *
+ * This is best suited when you want to modify an existing image,
+ * without changing its dimensions.
+ *
+ * @param obj The given image object.
+ * @param for_writing Whether the data being retrieved will be modified.
+ * @return The raw image data.
+ * @ingroup Evas_Object_Image_Data
+ */
+EAPI void *
+evas_object_image_data_get(const Evas_Object *obj, Evas_Bool for_writing)
+{
+   Evas_Object_Image *o;
+   DATA32 *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!o->engine_data) return NULL;
+   data = NULL;
+   o->engine_data = obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output,
+                                                                 o->engine_data,
+                                                                 for_writing,
+                                                                 &data);
+   o->pixels_checked_out++;
+   if (for_writing)
+     {
+       EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o);
+     }
+
+   return data;
+}
+
+/**
+ * Replaces the raw image data of the given image object.
+ *
+ * This function lets the application replace an image object's internal pixel
+ * buffer with a user-allocated one. For best results, you should generally
+ * first call evas_object_image_size_set() with the width and height for the
+ * new buffer.
+ *
+ * This call is best suited for when you will be using image data with
+ * different dimensions than the existing image data, if any. If you only need
+ * to modify the existing image in some fashion, then using
+ * evas_object_image_data_get() is probably what you are after.
+ *
+ * Note that the caller is responsible for freeing the buffer when finished
+ * with it, as user-set image data will not be automatically freed when the
+ * image object is deleted.
+ *
+ * See @ref evas_object_image_data_get for more details.
+ *
+ * @param obj The given image object.
+ * @param data The raw data.
+ * @ingroup Evas_Object_Image_Data
+ */
+EAPI void
+evas_object_image_data_copy_set(Evas_Object *obj, void *data)
+{
+   Evas_Object_Image *o;
+
+   if (!data) return;
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if ((o->cur.image.w <= 0) ||
+       (o->cur.image.h <= 0)) return;
+   if (o->engine_data)
+     obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
+                                              o->engine_data);
+   o->engine_data = obj->layer->evas->engine.func->image_new_from_copied_data(obj->layer->evas->engine.data.output,
+                                                                             o->cur.image.w,
+                                                                             o->cur.image.h,
+                                                                             data,
+                                                                             o->cur.has_alpha,
+                                                                             o->cur.cspace);
+   if (o->engine_data)
+     o->engine_data = obj->layer->evas->engine.func->image_alpha_set(obj->layer->evas->engine.data.output,
+                                                                    o->engine_data,
+                                                                    o->cur.has_alpha);
+   o->pixels_checked_out = 0;
+   EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o);
+}
+
+/**
+ * Mark a sub-region of the given image object to be redrawn.
+ *
+ * This function schedules a particular rectangular region of an image
+ * object to be updated (redrawn) at the next render.
+ *
+ * @param obj The given image object.
+ * @param x X-offset of the region to be updated.
+ * @param y Y-offset of the region to be updated.
+ * @param w Width of the region to be updated.
+ * @param h Height of the region to be updated.
+ * @ingroup Evas_Object_Image_Data
+ */
+EAPI void
+evas_object_image_data_update_add(Evas_Object *obj, int x, int y, int w, int h)
+{
+   Evas_Object_Image *o;
+   Evas_Rectangle *r;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, o->cur.image.w, o->cur.image.h);
+   if ((w <= 0)  || (h <= 0)) return;
+   NEW_RECT(r, x, y, w, h);
+   if (r) o->pixel_updates = evas_list_append(o->pixel_updates, r);
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * @defgroup Evas_Object_Image_Alpha Image Object Image Alpha Functions
+ *
+ * Functions that change the alpha of an image object.
+ */
+
+/**
+ * Enable or disable alpha channel of the given image object.
+ *
+ * This function sets a flag on an image object indicating whether or not to
+ * use alpha channel data. A value of 1 indicates to use alpha channel data,
+ * and 0 indicates to ignore any alpha channel data. Note that this has
+ * nothing to do with an object's color as manipulated by
+ * evas_object_color_set().
+ *
+ * @param obj The given image object.
+ * @param has_alpha Whether to use alpha channel data or not.
+ * @ingroup Evas_Object_Image_Alpha
+ */
+EAPI void
+evas_object_image_alpha_set(Evas_Object *obj, Evas_Bool has_alpha)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if (((has_alpha) && (o->cur.has_alpha)) ||
+       ((!has_alpha) && (!o->cur.has_alpha)))
+     return;
+   o->cur.has_alpha = has_alpha;
+   if (o->engine_data)
+     o->engine_data = obj->layer->evas->engine.func->image_alpha_set(obj->layer->evas->engine.data.output,
+                                                                    o->engine_data,
+                                                                    o->cur.has_alpha);
+   evas_object_image_data_update_add(obj, 0, 0, o->cur.image.w, o->cur.image.h);
+   EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o);
+}
+
+
+/**
+ * Retrieves the alpha channel setting of the given image object.
+ *
+ * This function returns 1 if the image object's alpha channel is being used,
+ * or 0 otherwise.
+ *
+ * See @ref evas_object_image_alpha_set for more details.
+ *
+ * @param obj The given image object.
+ * @return Whether the alpha channel data is being used.
+ * @ingroup Evas_Object_Image_Alpha
+ */
+EAPI Evas_Bool
+evas_object_image_alpha_get(const Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->cur.has_alpha;
+}
+
+/**
+ * @defgroup Evas_Object_Image_Scale Image Object Image Scaling Functions
+ *
+ * Functions that change the scaling quality of an image object.
+ */
+
+/**
+ * Sets whether to use of high-quality image scaling algorithm
+ * of the given image object.
+ *
+ * When enabled, a higher quality image scaling algorithm is used when scaling
+ * images to sizes other than the source image. This gives better results but
+ * is more computationally expensive.
+ *
+ * @param obj The given image object.
+ * @param smooth_scale Whether to use smooth scale or not.
+ * @ingroup Evas_Object_Image_Scale
+ */
+EAPI void
+evas_object_image_smooth_scale_set(Evas_Object *obj, Evas_Bool smooth_scale)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if (((smooth_scale) && (o->cur.smooth_scale)) ||
+       ((!smooth_scale) && (!o->cur.smooth_scale)))
+     return;
+   o->cur.smooth_scale = smooth_scale;
+}
+
+/**
+ * Retrieves whether the given image object is using use a high-quality
+ * image scaling algorithm.
+ *
+ * See @ref evas_object_image_smooth_scale_set for more details.
+ *
+ * @param obj The given image object.
+ * @return Whether smooth scale is being used.
+ * @ingroup Evas_Object_Image_Scale
+ */
+EAPI Evas_Bool
+evas_object_image_smooth_scale_get(const Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->cur.smooth_scale;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_image_reload(Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if ((!o->cur.file) ||
+       (o->pixels_checked_out > 0)) return;
+   if (o->engine_data)
+     o->engine_data = obj->layer->evas->engine.func->image_dirty_region(obj->layer->evas->engine.data.output, o->engine_data, 0, 0, o->cur.image.w, o->cur.image.h);
+   evas_object_image_unload(obj);
+   evas_object_image_load(obj);
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Save the given image object to a file.
+ *
+ * Note that you should pass the filename extension when saving.
+ * If the file supports multiple data stored in it as eet,
+ * you can specify the key to be used as the index of the
+ * image in this file.
+ *
+ * You can specify some flags when saving the image.
+ * Currently acceptable flags are quality and compress.
+ * Eg.: "quality=100 compress=9"
+ *
+ * @param obj The given image object.
+ * @param file The filename to be used to save the image.
+ * @param key The image key in file, or NULL.
+ * @param flags String containing the flags to be used.
+ * @ingroup Evas_Object_Image
+ */
+EAPI Evas_Bool
+evas_object_image_save(const Evas_Object *obj, const char *file, const char *key, const char *flags)
+{
+   Evas_Object_Image *o;
+   DATA32 *data = NULL;
+   int quality = 80, compress = 9, ok = 0;
+   RGBA_Image *im;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return 0;
+   MAGIC_CHECK_END();
+
+   if (!o->engine_data) return 0;
+   o->engine_data = obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output,
+                                                                 o->engine_data,
+                                                                 0,
+                                                                 &data);
+   if (flags)
+     {
+       char *p, *pp;
+       char *tflags;
+       
+       tflags = alloca(strlen(flags) + 1);
+       strcpy(tflags, flags);
+       p = tflags;
+       while (p)
+         {
+            pp = strchr(p, ' ');
+            if (pp) *pp = 0;
+            sscanf(p, "quality=%i", &quality);
+            sscanf(p, "compress=%i", &compress);
+            if (pp) p = pp + 1;
+            else break;
+         }
+     }
+   im = (RGBA_Image*) evas_cache_image_data(evas_common_image_cache_get(),
+                                            o->cur.image.w,
+                                            o->cur.image.h,
+                                            data,
+                                            o->cur.has_alpha,
+                                            EVAS_COLORSPACE_ARGB8888);
+   if (im)
+     {
+       if (o->cur.cspace == EVAS_COLORSPACE_ARGB8888)
+         im->image.data = data;
+       else
+         im->image.data = evas_object_image_data_convert_internal(o,
+                                                                  data,
+                                                                  EVAS_COLORSPACE_ARGB8888);
+       if (im->image.data)
+         {
+            ok = evas_common_save_image_to_file(im, file, key, quality, compress);
+
+            if (o->cur.cspace != EVAS_COLORSPACE_ARGB8888)
+              free(im->image.data);
+         }
+
+       evas_cache_image_drop(&im->cache_entry);
+     }
+   return ok;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Bool
+evas_object_image_pixels_import(Evas_Object *obj, Evas_Pixel_Import_Source *pixels)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return 0;
+   MAGIC_CHECK_END();
+
+   if ((pixels->w != o->cur.image.w) || (pixels->h != o->cur.image.h)) return 0;
+   switch (pixels->format)
+     {
+#if 0
+      case EVAS_PIXEL_FORMAT_ARGB32:
+         {
+            if (o->engine_data)
+              {
+                 DATA32 *image_pixels = NULL;
+
+                 o->engine_data =
+                   obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output,
+                                                                 o->engine_data,
+                                                                 1,
+                                                                 &image_pixels);
+/* FIXME: need to actualyl support this */
+/*               memcpy(image_pixels, pixels->rows, o->cur.image.w * o->cur.image.h * 4);*/
+                 if (o->engine_data)
+                   o->engine_data =
+                   obj->layer->evas->engine.func->image_data_put(obj->layer->evas->engine.data.output,
+                                                                 o->engine_data,
+                                                                 image_pixels);
+                 if (o->engine_data)
+                   o->engine_data =
+                   obj->layer->evas->engine.func->image_alpha_set(obj->layer->evas->engine.data.output,
+                                                                  o->engine_data,
+                                                                  o->cur.has_alpha);
+                 o->changed = 1;
+                 evas_object_change(obj);
+              }
+         }
+       break;
+#endif
+#ifdef BUILD_CONVERT_YUV
+      case EVAS_PIXEL_FORMAT_YUV420P_601:
+         {
+            if (o->engine_data)
+              {
+                 DATA32 *image_pixels = NULL;
+
+                 o->engine_data =
+                   obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output,
+                                                                 o->engine_data,
+                                                                 1,
+                                                                 &image_pixels);
+                 if (image_pixels)
+                   evas_common_convert_yuv_420p_601_rgba((DATA8 **) pixels->rows,
+                                                         (DATA8 *) image_pixels,
+                                                         o->cur.image.w,
+                                                         o->cur.image.h);
+                 if (o->engine_data)
+                   o->engine_data =
+                   obj->layer->evas->engine.func->image_data_put(obj->layer->evas->engine.data.output,
+                                                                 o->engine_data,
+                                                                 image_pixels);
+                 if (o->engine_data)
+                   o->engine_data =
+                   obj->layer->evas->engine.func->image_alpha_set(obj->layer->evas->engine.data.output,
+                                                                  o->engine_data,
+                                                                  o->cur.has_alpha);
+                 o->changed = 1;
+                 evas_object_change(obj);
+              }
+         }
+       break;
+#endif
+      default:
+       return 0;
+       break;
+     }
+   return 1;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_image_pixels_get_callback_set(Evas_Object *obj, void (*func) (void *data, Evas_Object *o), void *data)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   o->func.get_pixels = func;
+   o->func.get_pixels_data = data;
+}
+
+/**
+ * Mark whether the given image object is dirty (needs to be redrawn).
+ *
+ * @param obj The given image object.
+ * @param dirty Whether the image is dirty.
+ * @ingroup Evas_Object_Image
+ */
+EAPI void
+evas_object_image_pixels_dirty_set(Evas_Object *obj, Evas_Bool dirty)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if (dirty) o->dirty_pixels = 1;
+   else o->dirty_pixels = 0;
+   o->changed = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves whether the given image object is dirty (needs to be redrawn).
+ *
+ * @param obj The given image object.
+ * @return Whether the image is dirty.
+ * @ingroup Evas_Object_Image
+ */
+EAPI Evas_Bool
+evas_object_image_pixels_dirty_get(const Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return 0;
+   MAGIC_CHECK_END();
+   if (o->dirty_pixels) return 1;
+   return 0;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_image_load_dpi_set(Evas_Object *obj, double dpi)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   o->load_opts.dpi = dpi;
+   if (o->cur.file)
+     {
+       evas_object_image_unload(obj);
+       evas_object_image_load(obj);
+       o->changed = 1;
+       evas_object_change(obj);
+     }
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI double
+evas_object_image_load_dpi_get(const Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0.0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return 0.0;
+   MAGIC_CHECK_END();
+   return o->load_opts.dpi;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_image_load_size_set(Evas_Object *obj, int w, int h)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   o->load_opts.w = w;
+   o->load_opts.h = h;
+   if (o->cur.file)
+     {
+       evas_object_image_unload(obj);
+       evas_object_image_load(obj);
+       o->changed = 1;
+       evas_object_change(obj);
+     }
+}
+
+EAPI void
+evas_object_image_load_size_get(const Evas_Object *obj, int *w, int *h)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   if (w) *w = o->load_opts.w;
+   if (h) *h = o->load_opts.h;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_image_load_scale_down_set(Evas_Object *obj, int scale_down)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   o->load_opts.scale_down_by = scale_down;
+   if (o->cur.file)
+     {
+       evas_object_image_unload(obj);
+       evas_object_image_load(obj);
+       o->changed = 1;
+       evas_object_change(obj);
+     }
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI int
+evas_object_image_load_scale_down_get(const Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->load_opts.scale_down_by;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_image_colorspace_set(Evas_Object *obj, Evas_Colorspace cspace)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   o->cur.cspace = cspace;
+   if (o->engine_data)
+     obj->layer->evas->engine.func->image_colorspace_set(obj->layer->evas->engine.data.output,
+                                                        o->engine_data,
+                                                        cspace);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Colorspace
+evas_object_image_colorspace_get(const Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return EVAS_COLORSPACE_ARGB8888;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return EVAS_COLORSPACE_ARGB8888;
+   MAGIC_CHECK_END();
+   return o->cur.cspace;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_image_native_surface_set(Evas_Object *obj, Evas_Native_Surface *surf)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   obj->layer->evas->engine.func->image_native_set(obj->layer->evas->engine.data.output,
+                                                  o->engine_data,
+                                                  surf);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Native_Surface *
+evas_object_image_native_surface_get(const Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return NULL;
+   MAGIC_CHECK_END();
+   return obj->layer->evas->engine.func->image_native_get(obj->layer->evas->engine.data.output,
+                                                         o->engine_data);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_image_cache_flush(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   e->engine.func->image_cache_flush(e->engine.data.output);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_image_cache_reload(Evas *e)
+{
+   Evas_Object_List *l;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   evas_image_cache_flush(e);
+   for (l = (Evas_Object_List *)e->layers; l; l = l->next)
+     {
+       Evas_Layer *layer;
+       Evas_Object_List *l2;
+
+       layer = (Evas_Layer *)l;
+        for (l2 = (Evas_Object_List *)layer->objects; l2; l2 = l2->next)
+         {
+            Evas_Object *obj;
+            Evas_Object_Image *o;
+
+            obj = (Evas_Object *)l2;
+            o = (Evas_Object_Image *)(obj->object_data);
+            if (o->magic == MAGIC_OBJ_IMAGE)
+              {
+                 evas_object_image_unload(obj);
+              }
+         }
+     }
+   evas_image_cache_flush(e);
+   for (l = (Evas_Object_List *)e->layers; l; l = l->next)
+     {
+       Evas_Layer *layer;
+       Evas_Object_List *l2;
+
+       layer = (Evas_Layer *)l;
+        for (l2 = (Evas_Object_List *)layer->objects; l2; l2 = l2->next)
+         {
+            Evas_Object *obj;
+            Evas_Object_Image *o;
+
+            obj = (Evas_Object *)l2;
+            o = (Evas_Object_Image *)(obj->object_data);
+            if (o->magic == MAGIC_OBJ_IMAGE)
+              {
+                 evas_object_image_load(obj);
+                 o->changed = 1;
+                 evas_object_change(obj);
+              }
+         }
+     }
+   evas_image_cache_flush(e);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_image_cache_set(Evas *e, int size)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if (size < 0) size = 0;
+   e->engine.func->image_cache_set(e->engine.data.output, size);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI int
+evas_image_cache_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+
+   return e->engine.func->image_cache_get(e->engine.data.output);
+}
+
+/* all nice and private */
+
+static void
+evas_object_image_unload(Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   o = (Evas_Object_Image *)(obj->object_data);
+
+   if ((!o->cur.file) ||
+       (o->pixels_checked_out > 0)) return;
+   if (o->engine_data)
+     o->engine_data = obj->layer->evas->engine.func->image_dirty_region(obj->layer->evas->engine.data.output,
+                                                                       o->engine_data,
+                                                                       0, 0,
+                                                                       o->cur.image.w, o->cur.image.h);
+   if (o->engine_data)
+     obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
+                                              o->engine_data);
+   o->engine_data = NULL;
+   o->load_error = EVAS_LOAD_ERROR_NONE;
+   o->cur.has_alpha = 1;
+   o->cur.cspace = EVAS_COLORSPACE_ARGB8888;
+   o->cur.image.w = 0;
+   o->cur.image.h = 0;
+   o->cur.image.stride = 0;
+}
+
+static void
+evas_object_image_load(Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+   Evas_Image_Load_Opts lo;
+
+   o = (Evas_Object_Image *)(obj->object_data);
+   if (o->engine_data) return;
+
+   lo.scale_down_by = o->load_opts.scale_down_by;
+   lo.dpi = o->load_opts.dpi;
+   lo.w = o->load_opts.w;
+   lo.h = o->load_opts.h;
+   o->engine_data = obj->layer->evas->engine.func->image_load(obj->layer->evas->engine.data.output,
+                                                             o->cur.file,
+                                                             o->cur.key,
+                                                             &o->load_error,
+                                                             &lo);
+   if (o->engine_data)
+     {
+       int w, h;
+       int stride;
+
+       obj->layer->evas->engine.func->image_size_get(obj->layer->evas->engine.data.output,
+                                                     o->engine_data, &w, &h);
+       if (obj->layer->evas->engine.func->image_stride_get)
+         obj->layer->evas->engine.func->image_stride_get(obj->layer->evas->engine.data.output,
+                                                         o->engine_data, &stride);
+       else
+         stride = w;
+       o->cur.has_alpha = obj->layer->evas->engine.func->image_alpha_get(obj->layer->evas->engine.data.output,
+                                                                         o->engine_data);
+       o->cur.cspace = obj->layer->evas->engine.func->image_colorspace_get(obj->layer->evas->engine.data.output,
+                                                                           o->engine_data);
+       o->cur.image.w = w;
+       o->cur.image.h = h;
+       o->cur.image.stride = stride;
+     }
+   else
+     {
+       o->load_error = EVAS_LOAD_ERROR_GENERIC;
+     }
+}
+
+static Evas_Coord
+evas_object_image_figure_x_fill(Evas_Object *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret)
+{
+   Evas_Coord w;
+
+   w = ((size * obj->layer->evas->output.w) /
+       (Evas_Coord)obj->layer->evas->viewport.w);
+   if (size <= 0) size = 1;
+   if (start > 0)
+     {
+       while (start - size > 0) start -= size;
+     }
+   else if (start < 0)
+     {
+       while (start < 0) start += size;
+     }
+   start = ((start * obj->layer->evas->output.w) /
+           (Evas_Coord)obj->layer->evas->viewport.w);
+   *size_ret = w;
+   return start;
+}
+
+static Evas_Coord
+evas_object_image_figure_y_fill(Evas_Object *obj, Evas_Coord start, Evas_Coord size, Evas_Coord *size_ret)
+{
+   Evas_Coord h;
+
+   h = ((size * obj->layer->evas->output.h) /
+       (Evas_Coord)obj->layer->evas->viewport.h);
+   if (size <= 0) size = 1;
+   if (start > 0)
+     {
+       while (start - size > 0) start -= size;
+     }
+   else if (start < 0)
+     {
+       while (start < 0) start += size;
+     }
+   start = ((start * obj->layer->evas->output.h) /
+           (Evas_Coord)obj->layer->evas->viewport.h);
+   *size_ret = h;
+   return start;
+}
+
+static void
+evas_object_image_init(Evas_Object *obj)
+{
+   /* alloc image ob, setup methods and default values */
+   obj->object_data = evas_object_image_new();
+   /* set up default settings for this kind of object */
+   obj->cur.color.r = 255;
+   obj->cur.color.g = 255;
+   obj->cur.color.b = 255;
+   obj->cur.color.a = 255;
+   obj->cur.geometry.x = 0;
+   obj->cur.geometry.y = 0;
+   obj->cur.geometry.w = 0;
+   obj->cur.geometry.h = 0;
+   obj->cur.layer = 0;
+   obj->cur.anti_alias = 0;
+   obj->cur.render_op = EVAS_RENDER_BLEND;
+   /* set up object-specific settings */
+   obj->prev = obj->cur;
+   /* set up methods (compulsory) */
+   obj->func = &object_func;
+   obj->type = o_type;
+}
+
+static void *
+evas_object_image_new(void)
+{
+   Evas_Object_Image *o;
+
+   /* alloc obj private data */
+   o = calloc(1, sizeof(Evas_Object_Image));
+   o->magic = MAGIC_OBJ_IMAGE;
+   o->cur.fill.w = 1;
+   o->cur.fill.h = 1;
+   o->cur.smooth_scale = 1;
+   o->cur.border.fill = 1;
+   o->cur.cspace = EVAS_COLORSPACE_ARGB8888;
+   o->prev = o->cur;
+   return o;
+}
+
+static void
+evas_object_image_free(Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   /* frees private object data. very simple here */
+   o = (Evas_Object_Image *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE);
+   return;
+   MAGIC_CHECK_END();
+   /* free obj */
+   if (o->cur.file) evas_stringshare_del(o->cur.file);
+   if (o->cur.key) evas_stringshare_del(o->cur.key);
+   if (o->engine_data)
+     obj->layer->evas->engine.func->image_free(obj->layer->evas->engine.data.output,
+                                              o->engine_data);
+   o->engine_data = NULL;
+   o->magic = 0;
+   while (o->pixel_updates)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)o->pixel_updates->data;
+       o->pixel_updates = evas_list_remove(o->pixel_updates, r);
+       free(r);
+     }
+   free(o);
+}
+
+static void
+evas_object_image_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
+{
+   Evas_Object_Image *o;
+
+   /* render object to surface with context, and offset by x,y */
+   o = (Evas_Object_Image *)(obj->object_data);
+   obj->layer->evas->engine.func->context_color_set(output,
+                                                   context,
+                                                   255, 255, 255, 255);
+
+   if ((obj->cur.cache.clip.r == 255) &&
+       (obj->cur.cache.clip.g == 255) &&
+       (obj->cur.cache.clip.b == 255) &&
+       (obj->cur.cache.clip.a == 255))
+     {
+       obj->layer->evas->engine.func->context_multiplier_unset(output,
+                                                               context);
+     }
+   else
+     obj->layer->evas->engine.func->context_multiplier_set(output,
+                                                          context,
+                                                          obj->cur.cache.clip.r,
+                                                          obj->cur.cache.clip.g,
+                                                          obj->cur.cache.clip.b,
+                                                          obj->cur.cache.clip.a);
+
+   obj->layer->evas->engine.func->context_render_op_set(output, context,
+                                                       obj->cur.render_op);
+   if (o->engine_data)
+     {
+       Evas_Coord idw, idh, idx, idy;
+       int ix, iy, iw, ih;
+
+       if (o->dirty_pixels)
+         {
+            if (o->func.get_pixels)
+              {
+                 o->func.get_pixels(o->func.get_pixels_data, obj);
+                 o->engine_data = obj->layer->evas->engine.func->image_dirty_region(obj->layer->evas->engine.data.output, o->engine_data, 0, 0, o->cur.image.w, o->cur.image.h);
+              }
+            o->dirty_pixels = 0;
+         }
+       o->engine_data = obj->layer->evas->engine.func->image_border_set(output, o->engine_data,
+                                                                        o->cur.border.l, o->cur.border.r,
+                                                                        o->cur.border.t, o->cur.border.b);
+       idx = evas_object_image_figure_x_fill(obj, o->cur.fill.x, o->cur.fill.w, &idw);
+       idy = evas_object_image_figure_y_fill(obj, o->cur.fill.y, o->cur.fill.h, &idh);
+       if (idw < 1.0) idw = 1.0;
+       if (idh < 1.0) idh = 1.0;
+       if (idx > 0.0) idx -= idw;
+       if (idy > 0.0) idy -= idh;
+       while ((int)idx < obj->cur.geometry.w)
+         {
+            Evas_Coord ydy;
+            int dobreak_w = 0;
+
+            ydy = idy;
+            ix = idx;
+            if ((o->cur.fill.w == obj->cur.geometry.w) &&
+                (o->cur.fill.x == 0.0))
+              {
+                 dobreak_w = 1;
+                 iw = obj->cur.geometry.w;
+              }
+            else
+              iw = ((int)(idx + idw)) - ix;
+            while ((int)idy < obj->cur.geometry.h)
+              {
+                 int dobreak_h = 0;
+
+                 iy = idy;
+                 if ((o->cur.fill.h == obj->cur.geometry.h) &&
+                     (o->cur.fill.y == 0.0))
+                   {
+                      ih = obj->cur.geometry.h;
+                      dobreak_h = 1;
+                   }
+                 else
+                   ih = ((int)(idy + idh)) - iy;
+                 if ((o->cur.border.l == 0) &&
+                     (o->cur.border.r == 0) &&
+                     (o->cur.border.t == 0) &&
+                     (o->cur.border.b == 0) &&
+                     (o->cur.border.fill != 0))
+                   obj->layer->evas->engine.func->image_draw(output,
+                                                             context,
+                                                             surface,
+                                                             o->engine_data,
+                                                             0, 0,
+                                                             o->cur.image.w,
+                                                             o->cur.image.h,
+                                                             obj->cur.geometry.x + ix + x,
+                                                             obj->cur.geometry.y + iy + y,
+                                                             iw, ih,
+                                                             o->cur.smooth_scale);
+                 else
+                   {
+                      int inx, iny, inw, inh, outx, outy, outw, outh;
+                      int bl, br, bt, bb;
+                      int imw, imh, ox, oy;
+
+                      ox = obj->cur.geometry.x + ix + x;
+                      oy = obj->cur.geometry.y + iy + y;
+                      imw = o->cur.image.w;
+                      imh = o->cur.image.h;
+                      bl = o->cur.border.l;
+                      br = o->cur.border.r;
+                      bt = o->cur.border.t;
+                      bb = o->cur.border.b;
+                      if ((bl + br) > iw)
+                        {
+                           bl = iw / 2;
+                           br = iw - bl;
+                        }
+                      if ((bl + br) > imw)
+                        {
+                           bl = imw / 2;
+                           br = imw - bl;
+                        }
+                      if ((bt + bb) > ih)
+                        {
+                           bt = ih / 2;
+                           bb = ih - bt;
+                        }
+                      if ((bt + bb) > imh)
+                        {
+                           bt = imh / 2;
+                           bb = imh - bt;
+                        }
+
+                      inx = 0; iny = 0;
+                      inw = bl; inh = bt;
+                      outx = ox; outy = oy;
+                      outw = bl; outh = bt;
+                      obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                      inx = bl; iny = 0;
+                      inw = imw - bl - br; inh = bt;
+                      outx = ox + bl; outy = oy;
+                      outw = iw - bl - br; outh = bt;
+                      obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                      inx = imw - br; iny = 0;
+                      inw = br; inh = bt;
+                      outx = ox + iw - br; outy = oy;
+                      outw = br; outh = bt;
+                      obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+
+                      inx = 0; iny = bt;
+                      inw = bl; inh = imh - bt - bb;
+                      outx = ox; outy = oy + bt;
+                      outw = bl; outh = ih - bt - bb;
+                      obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                      if (o->cur.border.fill)
+                        {
+                           inx = bl; iny = bt;
+                           inw = imw - bl - br; inh = imh - bt - bb;
+                           outx = ox + bl; outy = oy + bt;
+                           outw = iw - bl - br; outh = ih - bt - bb;
+                           obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                        }
+                      inx = imw - br; iny = bt;
+                      inw = br; inh = imh - bt - bb;
+                      outx = ox + iw - br; outy = oy + bt;
+                      outw = br; outh = ih - bt - bb;
+                      obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+
+                      inx = 0; iny = imh - bb;
+                      inw = bl; inh = bb;
+                      outx = ox; outy = oy + ih - bb;
+                      outw = bl; outh = bb;
+                      obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                      inx = bl; iny = imh - bb;
+                      inw = imw - bl - br; inh = bb;
+                      outx = ox + bl; outy = oy + ih - bb;
+                      outw = iw - bl - br; outh = bb;
+                      obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                      inx = imw - br; iny = imh - bb;
+                      inw = br; inh = bb;
+                      outx = ox + iw - br; outy = oy + ih - bb;
+                      outw = br; outh = bb;
+                      obj->layer->evas->engine.func->image_draw(output, context, surface, o->engine_data, inx, iny, inw, inh, outx, outy, outw, outh, o->cur.smooth_scale);
+                   }
+                 idy += idh;
+                 if (dobreak_h) break;
+              }
+            idx += idw;
+            idy = ydy;
+            if (dobreak_w) break;
+         }
+     }
+}
+
+static void
+evas_object_image_render_pre(Evas_Object *obj)
+{
+   Evas_Rectangles rects = { 0, 0, NULL };
+   Evas_Object_Image *o;
+   int is_v, was_v;
+
+   /* dont pre-render the obj twice! */
+   if (obj->pre_render_done) return;
+   obj->pre_render_done = 1;
+   /* pre-render phase. this does anything an object needs to do just before */
+   /* rendering. this could mean loading the image data, retrieving it from */
+   /* elsewhere, decoding video etc. */
+   /* then when this is done the object needs to figure if it changed and */
+   /* if so what and where and add the appropriate redraw rectangles */
+   o = (Evas_Object_Image *)(obj->object_data);
+   /* if someone is clipping this obj - go calculate the clipper */
+   if (obj->cur.clipper)
+     {
+       if (obj->cur.cache.clip.dirty)
+         evas_object_clip_recalc(obj->cur.clipper);
+       obj->cur.clipper->func->render_pre(obj->cur.clipper);
+     }
+   /* now figure what changed and add draw rects */
+   /* if it just became visible or invisible */
+   is_v = evas_object_is_visible(obj);
+   was_v = evas_object_was_visible(obj);
+   if (is_v != was_v)
+     {
+       evas_object_render_pre_visible_change(&rects, obj, is_v, was_v);
+       if (!o->pixel_updates) goto done;
+     }
+   /* it's not visible - we accounted for it appearing or not so just abort */
+   if (!is_v) goto done;
+   /* clipper changed this is in addition to anything else for obj */
+   evas_object_render_pre_clipper_change(&rects, obj);
+   /* if we restacked (layer or just within a layer) and don't clip anyone */
+   if (obj->restack)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       if (!o->pixel_updates) goto done;
+     }
+   /* if it changed color */
+   if ((obj->cur.color.r != obj->prev.color.r) ||
+       (obj->cur.color.g != obj->prev.color.g) ||
+       (obj->cur.color.b != obj->prev.color.b) ||
+       (obj->cur.color.a != obj->prev.color.a))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       if (!o->pixel_updates) goto done;
+     }
+   /* if it changed render op */
+   if (obj->cur.render_op != obj->prev.render_op)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       if (!o->pixel_updates) goto done;
+     }
+   /* if it changed anti_alias */
+   if (obj->cur.anti_alias != obj->prev.anti_alias)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       if (!o->pixel_updates) goto done;
+     }
+   if (o->changed)
+     {
+       if (((o->cur.file) && (!o->prev.file)) ||
+           ((!o->cur.file) && (o->prev.file)) ||
+           ((o->cur.key) && (!o->prev.key)) ||
+           ((!o->cur.key) && (o->prev.key))
+           )
+         {
+            evas_object_render_pre_prev_cur_add(&rects, obj);
+            if (!o->pixel_updates) goto done;
+         }
+       if ((o->cur.image.w != o->prev.image.w) ||
+           (o->cur.image.h != o->prev.image.h) ||
+           (o->cur.has_alpha != o->prev.has_alpha) ||
+           (o->cur.cspace != o->prev.cspace) ||
+           (o->cur.smooth_scale != o->prev.smooth_scale))
+         {
+            evas_object_render_pre_prev_cur_add(&rects, obj);
+            if (!o->pixel_updates) goto done;
+         }
+       if ((o->cur.border.l != o->prev.border.l) ||
+           (o->cur.border.r != o->prev.border.r) ||
+           (o->cur.border.t != o->prev.border.t) ||
+           (o->cur.border.b != o->prev.border.b))
+         {
+            evas_object_render_pre_prev_cur_add(&rects, obj);
+            if (!o->pixel_updates) goto done;
+         }
+       if (o->dirty_pixels)
+         {
+            evas_object_render_pre_prev_cur_add(&rects, obj);
+            if (!o->pixel_updates) goto done;
+         }
+     }
+   /* if it changed geometry - and obviously not visibility or color */
+   /* caluclate differences since we have a constant color fill */
+   /* we really only need to update the differences */
+   if (((obj->cur.geometry.x != obj->prev.geometry.x) ||
+       (obj->cur.geometry.y != obj->prev.geometry.y) ||
+       (obj->cur.geometry.w != obj->prev.geometry.w) ||
+       (obj->cur.geometry.h != obj->prev.geometry.h)) &&
+       (o->cur.fill.w == o->prev.fill.w) &&
+       (o->cur.fill.h == o->prev.fill.h) &&
+       ((o->cur.fill.x + obj->cur.geometry.x) == (o->prev.fill.x + obj->prev.geometry.x)) &&
+       ((o->cur.fill.y + obj->cur.geometry.y) == (o->prev.fill.y + obj->prev.geometry.y)) &&
+       (!o->pixel_updates)
+       )
+     {
+       evas_rects_return_difference_rects(&rects,
+                                          obj->cur.geometry.x,
+                                          obj->cur.geometry.y,
+                                          obj->cur.geometry.w,
+                                          obj->cur.geometry.h,
+                                          obj->prev.geometry.x,
+                                          obj->prev.geometry.y,
+                                          obj->prev.geometry.w,
+                                          obj->prev.geometry.h);
+       if (!o->pixel_updates) goto done;
+     }
+   if (((obj->cur.geometry.x != obj->prev.geometry.x) ||
+       (obj->cur.geometry.y != obj->prev.geometry.y) ||
+       (obj->cur.geometry.w != obj->prev.geometry.w) ||
+       (obj->cur.geometry.h != obj->prev.geometry.h))
+       )
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       if (!o->pixel_updates) goto done;
+     }
+   if (o->changed)
+     {
+       if ((o->cur.fill.x != o->prev.fill.x) ||
+           (o->cur.fill.y != o->prev.fill.y) ||
+           (o->cur.fill.w != o->prev.fill.w) ||
+           (o->cur.fill.h != o->prev.fill.h))
+         {
+            evas_object_render_pre_prev_cur_add(&rects, obj);
+            if (!o->pixel_updates) goto done;
+         }
+       if ((o->cur.border.l == 0) &&
+           (o->cur.border.r == 0) &&
+           (o->cur.border.t == 0) &&
+           (o->cur.border.b == 0))
+         {
+            while (o->pixel_updates)
+              {
+                 Evas_Rectangle *rr;
+                 Evas_Coord idw, idh, idx, idy;
+                 int x, y, w, h;
+
+                 rr = o->pixel_updates->data;
+                 o->pixel_updates = evas_list_remove(o->pixel_updates, rr);
+                 obj->layer->evas->engine.func->image_dirty_region(obj->layer->evas->engine.data.output, o->engine_data, rr->x, rr->y, rr->w, rr->h);
+                 
+                 idx = evas_object_image_figure_x_fill(obj, o->cur.fill.x, o->cur.fill.w, &idw);
+                 idy = evas_object_image_figure_y_fill(obj, o->cur.fill.y, o->cur.fill.h, &idh);
+
+                 if (idw < 1) idw = 1;
+                 if (idh < 1) idh = 1;
+                 if (idx > 0) idx -= idw;
+                 if (idy > 0) idy -= idh;
+                 while (idx < obj->cur.geometry.w)
+                   {
+                      Evas_Coord ydy;
+
+                      ydy = idy;
+                      x = idx;
+                      w = ((int)(idx + idw)) - x;
+                      while (idy < obj->cur.geometry.h)
+                        {
+                           Evas_Rectangle r;
+
+                           y = idy;
+                           h = ((int)(idy + idh)) - y;
+
+                           r.x = ((rr->x - 1) * w) / o->cur.image.w;
+                           r.y = ((rr->y - 1) * h) / o->cur.image.h;
+                           r.w = ((rr->w + 2) * w) / o->cur.image.w;
+                           r.h = ((rr->h + 2) * h) / o->cur.image.h;
+                           r.x += obj->cur.geometry.x + x;
+                           r.y += obj->cur.geometry.y + y;
+                           evas_add_rect(&rects, r.x, r.y, r.w, r.h);
+                           idy += h;
+                        }
+                      idx += idw;
+                      idy = ydy;
+                   }
+                 free(rr);
+              }
+            goto done;
+         }
+       else
+         {
+            if (o->pixel_updates)
+              {
+                 while (o->pixel_updates)
+                   {
+                      Evas_Rectangle *r;
+
+                      r = (Evas_Rectangle *)o->pixel_updates->data;
+                      o->pixel_updates = evas_list_remove(o->pixel_updates, r);
+                      free(r);
+                   }
+                 obj->layer->evas->engine.func->image_dirty_region(obj->layer->evas->engine.data.output, o->engine_data, 0, 0, o->cur.image.w, o->cur.image.h);
+                 evas_object_render_pre_prev_cur_add(&rects, obj);
+                 goto done;
+              }
+         }
+     }
+   /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
+   /* area so if there were updates for it they get wiped. don't do it if we */
+   /* aren't fully opaque and we are visible */
+   if (evas_object_is_visible(obj) &&
+       evas_object_is_opaque(obj))
+     obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
+                                                           obj->cur.cache.clip.x,
+                                                           obj->cur.cache.clip.y,
+                                                           obj->cur.cache.clip.w,
+                                                           obj->cur.cache.clip.h);
+   done:
+   evas_object_render_pre_effect_updates(&rects, obj, is_v, was_v);
+}
+
+static void
+evas_object_image_render_post(Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   /* this moves the current data to the previous state parts of the object */
+   /* in whatever way is safest for the object. also if we don't need object */
+   /* data anymore we can free it if the object deems this is a good idea */
+   o = (Evas_Object_Image *)(obj->object_data);
+   /* remove those pesky changes */
+   while (obj->clip.changes)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)obj->clip.changes->data;
+       obj->clip.changes = evas_list_remove(obj->clip.changes, r);
+       free(r);
+     }
+   while (o->pixel_updates)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)o->pixel_updates->data;
+       o->pixel_updates = evas_list_remove(o->pixel_updates, r);
+       free(r);
+     }
+   /* move cur to prev safely for object data */
+   obj->prev = obj->cur;
+   o->prev = o->cur;
+   o->changed = 0;
+   /* FIXME: copy strings across */
+}
+
+static int
+evas_object_image_is_opaque(Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   /* this returns 1 if the internal object data implies that the object is */
+   /* currently fully opaque over the entire rectangle it occupies */
+   o = (Evas_Object_Image *)(obj->object_data);
+   if (((o->cur.border.l != 0) ||
+       (o->cur.border.r != 0) ||
+       (o->cur.border.t != 0) ||
+       (o->cur.border.b != 0)) &&
+       (!o->cur.border.fill)) return 0;
+   if (!o->engine_data) return 0;
+   if (obj->cur.render_op == EVAS_RENDER_COPY)
+       return 1;
+   if (o->cur.has_alpha) return 0;
+   if (obj->cur.render_op != EVAS_RENDER_BLEND)
+       return 0;
+   return 1;
+}
+
+static int
+evas_object_image_was_opaque(Evas_Object *obj)
+{
+   Evas_Object_Image *o;
+
+   /* this returns 1 if the internal object data implies that the object was */
+   /* previously fully opaque over the entire rectangle it occupies */
+   o = (Evas_Object_Image *)(obj->object_data);
+   if (((o->prev.border.l != 0) ||
+       (o->prev.border.r != 0) ||
+       (o->prev.border.t != 0) ||
+       (o->prev.border.b != 0)) &&
+       (!o->prev.border.fill)) return 0;
+   if (!o->engine_data) return 0;
+   if (obj->prev.render_op == EVAS_RENDER_COPY)
+       return 1;
+   if (o->prev.has_alpha) return 0;
+   if (obj->prev.render_op != EVAS_RENDER_BLEND)
+       return 0;
+   return 1;
+}
+
+static int
+evas_object_image_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   Evas_Object_Image *o;
+   DATA32 *data;
+   int w, h, stride;
+   int a;
+
+   o = (Evas_Object_Image *)(obj->object_data);
+
+   x -= obj->cur.cache.clip.x;
+   y -= obj->cur.cache.clip.y;
+   w = o->cur.image.w;
+   h = o->cur.image.h;
+
+   if ((x > w) || (y > h))
+     return 0;
+
+   if (!o->cur.has_alpha)
+     return 1;
+
+   stride = o->cur.image.stride;
+
+   o->engine_data = obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output,
+                                                                 o->engine_data,
+                                                                 0,
+                                                                 &data);
+   if (!data)
+     return 0;
+
+   switch (o->cur.cspace)
+     {
+       case EVAS_COLORSPACE_ARGB8888:
+         data = ((DATA32*)(data) + ((y * stride) + x));
+         a = (*((DATA32*)(data)) >> 24) & 0xff;
+         break;
+       case EVAS_COLORSPACE_RGB565_A5P:
+           data = (void*) ((DATA16*)(data) + (h * stride));
+         data = (void*) ((DATA8*)(data) + ((y * stride) + x));
+         a = (*((DATA8*)(data))) & 0x1f;
+         break;
+       default:
+         return 1;
+         break;
+     }
+
+   return (a != 0);
+}
+
+static void *
+evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_Colorspace to_cspace)
+{
+   void *out = NULL;
+
+   if (!data)
+     return NULL;
+
+   switch (o->cur.cspace)
+     {
+       case EVAS_COLORSPACE_ARGB8888:
+         out = evas_common_convert_argb8888_to(data,
+                                               o->cur.image.w,
+                                               o->cur.image.h,
+                                               o->cur.image.stride,
+                                               o->cur.has_alpha,
+                                               to_cspace);
+         break;
+       case EVAS_COLORSPACE_RGB565_A5P:
+         out = evas_common_convert_rgb565_a5p_to(data,
+                                                 o->cur.image.w,
+                                                 o->cur.image.h,
+                                                 o->cur.image.stride,
+                                                 o->cur.has_alpha,
+                                                 to_cspace);
+         break;
+       default:
+         break;
+     }
+
+   return out;
+}
diff --git a/src/lib/canvas/evas_object_inform.c b/src/lib/canvas/evas_object_inform.c
new file mode 100644 (file)
index 0000000..31271fc
--- /dev/null
@@ -0,0 +1,40 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* local calls */
+
+void
+evas_object_inform_call_show(Evas_Object *obj)
+{
+   evas_object_event_callback_call(obj, EVAS_CALLBACK_SHOW, NULL);
+}
+
+void
+evas_object_inform_call_hide(Evas_Object *obj)
+{
+   evas_object_event_callback_call(obj, EVAS_CALLBACK_HIDE, NULL);
+}
+
+void
+evas_object_inform_call_move(Evas_Object *obj)
+{
+   evas_object_event_callback_call(obj, EVAS_CALLBACK_MOVE, NULL);
+}
+
+void
+evas_object_inform_call_resize(Evas_Object *obj)
+{
+   evas_object_event_callback_call(obj, EVAS_CALLBACK_RESIZE, NULL);
+}
+
+void
+evas_object_inform_call_restack(Evas_Object *obj)
+{
+   evas_object_event_callback_call(obj, EVAS_CALLBACK_RESTACK, NULL);
+}
+
+void
+evas_object_inform_call_changed_size_hints(Evas_Object *obj)
+{
+   evas_object_event_callback_call(obj, EVAS_CALLBACK_CHANGED_SIZE_HINTS, NULL);
+}
diff --git a/src/lib/canvas/evas_object_intercept.c b/src/lib/canvas/evas_object_intercept.c
new file mode 100644 (file)
index 0000000..d724dd9
--- /dev/null
@@ -0,0 +1,769 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* local calls */
+
+static void evas_object_intercept_init(Evas_Object *obj);
+static void evas_object_intercept_deinit(Evas_Object *obj);
+
+static void
+evas_object_intercept_init(Evas_Object *obj)
+{
+   /* MEM OK */
+   if (!obj->interceptors)
+     obj->interceptors = evas_mem_calloc(sizeof(Evas_Intercept_Func));
+}
+
+static void
+evas_object_intercept_deinit(Evas_Object *obj)
+{
+   /* MEM OK */
+   if (!obj->interceptors) return;
+   if ((obj->interceptors->show.func) ||
+       (obj->interceptors->hide.func) ||
+       (obj->interceptors->move.func) ||
+       (obj->interceptors->resize.func) ||
+       (obj->interceptors->raise.func) ||
+       (obj->interceptors->lower.func) ||
+       (obj->interceptors->stack_above.func) ||
+       (obj->interceptors->stack_below.func) ||
+       (obj->interceptors->layer_set.func) ||
+       (obj->interceptors->color_set.func) ||
+       (obj->interceptors->clip_set.func) ||
+       (obj->interceptors->clip_unset.func))
+     return;
+   free(obj->interceptors);
+   obj->interceptors = NULL;
+}
+
+/* private calls */
+
+void
+evas_object_intercept_cleanup(Evas_Object *obj)
+{
+   /* MEM OK */
+   if (obj->interceptors) free(obj->interceptors);
+}
+
+int
+evas_object_intercept_call_show(Evas_Object *obj)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->show.func) != NULL);
+   if (obj->interceptors->show.func)
+     obj->interceptors->show.func(obj->interceptors->show.data, obj);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_hide(Evas_Object *obj)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->hide.func) != NULL);
+   if (obj->interceptors->hide.func)
+     obj->interceptors->hide.func(obj->interceptors->hide.data, obj);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->move.func) != NULL);
+   if (obj->interceptors->move.func)
+     obj->interceptors->move.func(obj->interceptors->move.data, obj, x, y);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->resize.func) != NULL);
+   if (obj->interceptors->resize.func)
+     obj->interceptors->resize.func(obj->interceptors->resize.data, obj, w, h);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_raise(Evas_Object *obj)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->raise.func) != NULL);
+   if (obj->interceptors->raise.func)
+     obj->interceptors->raise.func(obj->interceptors->raise.data, obj);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_lower(Evas_Object *obj)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->lower.func) != NULL);
+   if (obj->interceptors->lower.func)
+     obj->interceptors->lower.func(obj->interceptors->lower.data, obj);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->stack_above.func) != NULL);
+   if (obj->interceptors->stack_above.func)
+     obj->interceptors->stack_above.func(obj->interceptors->stack_above.data, obj, above);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->stack_below.func) != NULL);
+   if (obj->interceptors->stack_below.func)
+     obj->interceptors->stack_below.func(obj->interceptors->stack_below.data, obj, below);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_layer_set(Evas_Object *obj, int l)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->layer_set.func) != NULL);
+   if (obj->interceptors->layer_set.func)
+     obj->interceptors->layer_set.func(obj->interceptors->layer_set.data, obj, l);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_color_set(Evas_Object *obj, int r, int g, int b, int a)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->color_set.func) != NULL);
+   if (obj->interceptors->color_set.func)
+     obj->interceptors->color_set.func(obj->interceptors->color_set.data, obj, r, g, b, a);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_clip_set(Evas_Object *obj, Evas_Object *clip)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->clip_set.func) != NULL);
+   if (obj->interceptors->clip_set.func)
+     obj->interceptors->clip_set.func(obj->interceptors->clip_set.data, obj, clip);
+   obj->intercepted = 0;
+   return ret;
+}
+
+int
+evas_object_intercept_call_clip_unset(Evas_Object *obj)
+{
+   /* MEM OK */
+   int ret;
+
+   if (!obj->interceptors) return 0;
+   if (obj->intercepted) return 0;
+   obj->intercepted = 1;
+   ret = ((obj->interceptors->clip_unset.func) != NULL);
+   if (obj->interceptors->clip_unset.func)
+     obj->interceptors->clip_unset.func(obj->interceptors->clip_unset.data, obj);
+   obj->intercepted = 0;
+   return ret;
+}
+
+/* public calls */
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_show_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data)
+{
+   /* MEM OK */
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->show.func = func;
+   obj->interceptors->show.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_show_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->show.func = NULL;
+   data = obj->interceptors->show.data;
+   obj->interceptors->show.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_hide_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->hide.func = func;
+   obj->interceptors->hide.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_hide_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->hide.func = NULL;
+   data = obj->interceptors->hide.data;
+   obj->interceptors->hide.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_move_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->move.func = func;
+   obj->interceptors->move.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_move_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->move.func = NULL;
+   data = obj->interceptors->move.data;
+   obj->interceptors->move.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_resize_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord w, Evas_Coord h), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->resize.func = func;
+   obj->interceptors->resize.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_resize_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Coord w, Evas_Coord h))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->resize.func = NULL;
+   data = obj->interceptors->resize.data;
+   obj->interceptors->resize.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_raise_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->raise.func = func;
+   obj->interceptors->raise.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_raise_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->raise.func = NULL;
+   data = obj->interceptors->raise.data;
+   obj->interceptors->raise.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_lower_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->lower.func = func;
+   obj->interceptors->lower.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_lower_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->lower.func = NULL;
+   data = obj->interceptors->lower.data;
+   obj->interceptors->lower.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_stack_above_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->stack_above.func = func;
+   obj->interceptors->stack_above.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_stack_above_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *above))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->stack_above.func = NULL;
+   data = obj->interceptors->stack_above.data;
+   obj->interceptors->stack_above.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_stack_below_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->stack_below.func = func;
+   obj->interceptors->stack_below.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_stack_below_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *below))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->stack_below.func = NULL;
+   data = obj->interceptors->stack_below.data;
+   obj->interceptors->stack_below.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_layer_set_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->layer_set.func = func;
+   obj->interceptors->layer_set.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_layer_set_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int l))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->layer_set.func = NULL;
+   data = obj->interceptors->layer_set.data;
+   obj->interceptors->layer_set.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_color_set_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int r, int g, int b, int a), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->color_set.func = func;
+   obj->interceptors->color_set.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_color_set_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, int r, int g, int b, int a))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->color_set.func = NULL;
+   data = obj->interceptors->color_set.data;
+   obj->interceptors->color_set.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_clip_set_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *clip), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->clip_set.func = func;
+   obj->interceptors->clip_set.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_clip_set_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj, Evas_Object *clip))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->clip_set.func = NULL;
+   data = obj->interceptors->clip_set.data;
+   obj->interceptors->clip_set.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_intercept_clip_unset_callback_add(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj), const void *data)
+{
+   /* MEM OK */
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (!func) return;
+   evas_object_intercept_init(obj);
+   if (!obj->interceptors) return;
+   obj->interceptors->clip_unset.func = func;
+   obj->interceptors->clip_unset.data = (void *)data;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void *
+evas_object_intercept_clip_unset_callback_del(Evas_Object *obj, void (*func) (void *data, Evas_Object *obj))
+{
+   /* MEM OK */
+   void *data;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!func) return NULL;
+   if (!obj->interceptors) return NULL;
+   obj->interceptors->clip_unset.func = NULL;
+   data = obj->interceptors->clip_unset.data;
+   obj->interceptors->clip_unset.data = NULL;
+   evas_object_intercept_deinit(obj);
+   return data;
+}
diff --git a/src/lib/canvas/evas_object_line.c b/src/lib/canvas/evas_object_line.c
new file mode 100644 (file)
index 0000000..15bf61c
--- /dev/null
@@ -0,0 +1,468 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* private magic number for line objects */
+static const char o_type[] = "line";
+
+/* private struct for line object internal data */
+typedef struct _Evas_Object_Line      Evas_Object_Line;
+
+struct _Evas_Object_Line
+{
+   DATA32            magic;
+   struct {
+      struct {
+        int         x1, y1, x2, y2;
+        struct {
+           Evas_Coord w, h;
+        } object;
+      } cache;
+      Evas_Coord         x1, y1, x2, y2;
+   } cur, prev;
+
+   void             *engine_data;
+
+   char              changed : 1;
+};
+
+/* private methods for line objects */
+static void evas_object_line_init(Evas_Object *obj);
+static void *evas_object_line_new(void);
+static void evas_object_line_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
+static void evas_object_line_free(Evas_Object *obj);
+static void evas_object_line_render_pre(Evas_Object *obj);
+static void evas_object_line_render_post(Evas_Object *obj);
+
+static int evas_object_line_is_opaque(Evas_Object *obj);
+static int evas_object_line_was_opaque(Evas_Object *obj);
+static int evas_object_line_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+static int evas_object_line_was_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+static void evas_object_line_coords_recalc(Evas_Object *obj);
+
+static const Evas_Object_Func object_func =
+{
+   /* methods (compulsory) */
+   evas_object_line_free,
+     evas_object_line_render,
+     evas_object_line_render_pre,
+     evas_object_line_render_post,
+   /* these are optional. NULL = nothing */
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     evas_object_line_is_opaque,
+     evas_object_line_was_opaque,
+     evas_object_line_is_inside,
+     evas_object_line_was_inside,
+     evas_object_line_coords_recalc
+};
+
+/* the actual api call to add a rect */
+/* it has no other api calls as all properties are standard */
+
+/**
+ * @defgroup Evas_Line_Group Line Functions
+ *
+ * Functions used to deal with evas line objects.
+ */
+
+/**
+ * Adds a new evas line object to the given evas.
+ * @param   e The given evas.
+ * @return  The new evas line object.
+ * @ingroup Evas_Line_Group
+ */
+EAPI Evas_Object *
+evas_object_line_add(Evas *e)
+{
+   Evas_Object *obj;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   obj = evas_object_new();
+   evas_object_line_init(obj);
+   evas_object_inject(obj, e);
+   return obj;
+}
+
+/**
+ * Sets the coordinates of the end points of the given evas line object.
+ * @param   obj The given evas line object.
+ * @param   x1  The X coordinate of the first point.
+ * @param   y1  The Y coordinate of the first point.
+ * @param   x2  The X coordinate of the second point.
+ * @param   y2  The Y coordinate of the second point.
+ * @ingroup Evas_Line_Group
+ */
+EAPI void
+evas_object_line_xy_set(Evas_Object *obj, Evas_Coord x1, Evas_Coord y1, Evas_Coord x2, Evas_Coord y2)
+{
+   Evas_Object_Line *o;
+   Evas_Coord min_x, max_x, min_y, max_y;
+   int is, was = 0;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Line *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Line, MAGIC_OBJ_LINE);
+   return;
+   MAGIC_CHECK_END();
+   if ((x1 == o->cur.x1) && (y1 == o->cur.y1) &&
+       (x2 == o->cur.x2) && (y2 == o->cur.y2)) return;
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       if (!evas_event_passes_through(obj))
+         was = evas_object_is_in_output_rect(obj,
+                                             obj->layer->evas->pointer.x,
+                                             obj->layer->evas->pointer.y, 1, 1);
+     }
+   if (x1 < x2)
+     {
+       min_x = x1;
+       max_x = x2;
+     }
+   else
+     {
+       min_x = x2;
+       max_x = x1;
+     }
+   if (y1 < y2)
+     {
+       min_y = y1;
+       max_y = y2;
+     }
+   else
+     {
+       min_y = y2;
+       max_y = y1;
+     }
+   obj->cur.geometry.x = min_x;
+   obj->cur.geometry.y = min_y;
+   obj->cur.geometry.w = max_x - min_x + 2.0;
+   obj->cur.geometry.h = max_y - min_y + 2.0;
+////   obj->cur.cache.geometry.validity = 0;
+   o->cur.x1 = x1 - min_x;
+   o->cur.y1 = y1 - min_y;
+   o->cur.x2 = x2 - min_x;
+   o->cur.y2 = y2 - min_y;
+   o->changed = 1;
+   evas_object_change(obj);
+   evas_object_coords_recalc(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       is = evas_object_is_in_output_rect(obj,
+                                          obj->layer->evas->pointer.x,
+                                          obj->layer->evas->pointer.y, 1, 1);
+       if (!evas_event_passes_through(obj))
+         {
+            if ((is ^ was) && obj->cur.visible)
+              evas_event_feed_mouse_move(obj->layer->evas,
+                                         obj->layer->evas->pointer.x,
+                                         obj->layer->evas->pointer.y,
+                                         obj->layer->evas->last_timestamp,
+                                         NULL);
+         }
+     }
+   evas_object_inform_call_move(obj);
+   evas_object_inform_call_resize(obj);
+}
+
+/**
+ * Retrieves the coordinates of the end points of the given evas line object.
+ * @param obj The given line object.
+ * @param x1  Pointer to an integer in which to store the X coordinate of the
+ *            first end point.
+ * @param y1  Pointer to an integer in which to store the Y coordinate of the
+ *            first end point.
+ * @param x2  Pointer to an integer in which to store the X coordinate of the
+ *            second end point.
+ * @param y2  Pointer to an integer in which to store the Y coordinate of the
+ *            second end point.
+ * @ingroup Evas_Line_Group
+ */
+EAPI void
+evas_object_line_xy_get(const Evas_Object *obj, Evas_Coord *x1, Evas_Coord *y1, Evas_Coord *x2, Evas_Coord *y2)
+{
+   Evas_Object_Line *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (x1) *x1 = 0.0;
+   if (y1) *y1 = 0.0;
+   if (x2) *x2 = 0.0;
+   if (y2) *y2 = 0.0;
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Line *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Line, MAGIC_OBJ_LINE);
+   if (x1) *x1 = 0.0;
+   if (y1) *y1 = 0.0;
+   if (x2) *x2 = 0.0;
+   if (y2) *y2 = 0.0;
+   return;
+   MAGIC_CHECK_END();
+   if (x1) *x1 = obj->cur.geometry.x + o->cur.x1;
+   if (y1) *y1 = obj->cur.geometry.y + o->cur.y1;
+   if (x2) *x2 = obj->cur.geometry.x + o->cur.x2;
+   if (y2) *y2 = obj->cur.geometry.y + o->cur.y2;
+}
+
+
+
+/* all nice and private */
+static void
+evas_object_line_init(Evas_Object *obj)
+{
+   /* alloc image ob, setup methods and default values */
+   obj->object_data = evas_object_line_new();
+   /* set up default settings for this kind of object */
+   obj->cur.color.r = 255;
+   obj->cur.color.g = 255;
+   obj->cur.color.b = 255;
+   obj->cur.color.a = 255;
+   obj->cur.geometry.x = 0;
+   obj->cur.geometry.y = 0;
+   obj->cur.geometry.w = 0;
+   obj->cur.geometry.h = 0;
+   obj->cur.layer = 0;
+   obj->cur.anti_alias = 1;
+   obj->cur.render_op = EVAS_RENDER_BLEND;
+   /* set up object-specific settings */
+   obj->prev = obj->cur;
+   /* set up methods (compulsory) */
+   obj->func = &object_func;
+   obj->type = o_type;
+}
+
+static void *
+evas_object_line_new(void)
+{
+   Evas_Object_Line *o;
+
+   /* alloc obj private data */
+   o = calloc(1, sizeof(Evas_Object_Line));
+   o->magic = MAGIC_OBJ_LINE;
+   o->cur.x1 = 0.0;
+   o->cur.y1 = 0.0;
+   o->cur.x2 = 31.0;
+   o->cur.y2 = 31.0;
+   o->prev = o->cur;
+   return o;
+}
+
+static void
+evas_object_line_free(Evas_Object *obj)
+{
+   Evas_Object_Line *o;
+
+   /* frees private object data. very simple here */
+   o = (Evas_Object_Line *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Line, MAGIC_OBJ_LINE);
+   return;
+   MAGIC_CHECK_END();
+   /* free obj */
+   o->magic = 0;
+   free(o);
+}
+
+static void
+evas_object_line_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
+{
+   Evas_Object_Line *o;
+
+   /* render object to surface with context, and offxet by x,y */
+   o = (Evas_Object_Line *)(obj->object_data);
+   obj->layer->evas->engine.func->context_color_set(output,
+                                                   context,
+                                                   obj->cur.cache.clip.r,
+                                                   obj->cur.cache.clip.g,
+                                                   obj->cur.cache.clip.b,
+                                                   obj->cur.cache.clip.a);
+   obj->layer->evas->engine.func->context_multiplier_unset(output,
+                                                          context);
+   obj->layer->evas->engine.func->context_anti_alias_set(output, context,
+                                                        obj->cur.anti_alias);
+   obj->layer->evas->engine.func->context_render_op_set(output, context,
+                                                       obj->cur.render_op);
+   obj->layer->evas->engine.func->line_draw(output,
+                                           context,
+                                           surface,
+                                           o->cur.cache.x1 + x,
+                                           o->cur.cache.y1 + y,
+                                           o->cur.cache.x2 + x,
+                                           o->cur.cache.y2 + y);
+}
+
+static void
+evas_object_line_render_pre(Evas_Object *obj)
+{
+   Evas_Rectangles rects = { 0, 0, NULL };
+   Evas_Object_Line *o;
+   int is_v, was_v;
+
+   /* dont pre-render the obj twice! */
+   if (obj->pre_render_done) return;
+   obj->pre_render_done = 1;
+   /* pre-render phase. this does anything an object needs to do just before */
+   /* rendering. this could mean loading the image data, retrieving it from */
+   /* elsewhere, decoding video etc. */
+   /* then when this is done the object needs to figure if it changed and */
+   /* if so what and where and add the appropriate redraw lines */
+   o = (Evas_Object_Line *)(obj->object_data);
+   /* if someone is clipping this obj - go calculate the clipper */
+   if (obj->cur.clipper)
+     {
+       if (obj->cur.cache.clip.dirty)
+         evas_object_clip_recalc(obj->cur.clipper);
+       obj->cur.clipper->func->render_pre(obj->cur.clipper);
+     }
+   /* now figure what changed and add draw rects */
+   /* if it just became visible or invisible */
+   is_v = evas_object_is_visible(obj);
+   was_v = evas_object_was_visible(obj);
+   if (is_v != was_v)
+     {
+       evas_object_render_pre_visible_change(&rects, obj, is_v, was_v);
+       goto done;
+     }
+   /* it's not visible - we accounted for it appearing or not so just abort */
+   if (!is_v) goto done;
+   /* clipper changed this is in addition to anything else for obj */
+   evas_object_render_pre_clipper_change(&rects, obj);
+   /* if we restacked (layer or just within a layer) */
+   if (obj->restack)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed anti_alias */
+   if (obj->cur.anti_alias != obj->prev.anti_alias)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed render op */
+   if (obj->cur.render_op != obj->prev.render_op)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed color */
+   if ((obj->cur.color.r != obj->prev.color.r) ||
+       (obj->cur.color.g != obj->prev.color.g) ||
+       (obj->cur.color.b != obj->prev.color.b) ||
+       (obj->cur.color.a != obj->prev.color.a))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed geometry - and obviously not visibility or color */
+   /* caluclate differences since we have a constant color fill */
+   /* we really only need to update the differences */
+   if ((obj->cur.geometry.x != obj->prev.geometry.x) ||
+       (obj->cur.geometry.y != obj->prev.geometry.y) ||
+       (obj->cur.geometry.w != obj->prev.geometry.w) ||
+       (obj->cur.geometry.h != obj->prev.geometry.h) ||
+       ((o->changed) &&
+       ((o->cur.x1 != o->prev.x1) ||
+        (o->cur.y1 != o->prev.y1) ||
+        (o->cur.x2 != o->prev.x2) ||
+        (o->cur.y2 != o->prev.y2)))
+       )
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   done:
+   evas_object_render_pre_effect_updates(&rects, obj, is_v, was_v);
+}
+
+static void
+evas_object_line_render_post(Evas_Object *obj)
+{
+   Evas_Object_Line *o;
+
+   /* this moves the current data to the previous state parts of the object */
+   /* in whatever way is safest for the object. also if we don't need object */
+   /* data anymore we can free it if the object deems this is a good idea */
+   o = (Evas_Object_Line *)(obj->object_data);
+   /* remove those pesky changes */
+   while (obj->clip.changes)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)obj->clip.changes->data;
+       obj->clip.changes = evas_list_remove(obj->clip.changes, r);
+       free(r);
+     }
+   /* move cur to prev safely for object data */
+   obj->prev = obj->cur;
+   o->prev = o->cur;
+   o->changed = 0;
+}
+
+static int
+evas_object_line_is_opaque(Evas_Object *obj)
+{
+   Evas_Object_Line *o;
+
+   /* this returns 1 if the internal object data implies that the object is */
+   /* currently fully opaque over the entire line it occupies */
+   o = (Evas_Object_Line *)(obj->object_data);
+   return 0;
+}
+
+static int
+evas_object_line_was_opaque(Evas_Object *obj)
+{
+   Evas_Object_Line *o;
+
+   /* this returns 1 if the internal object data implies that the object was */
+   /* previously fully opaque over the entire line it occupies */
+   o = (Evas_Object_Line *)(obj->object_data);
+   return 0;
+}
+
+static int
+evas_object_line_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   Evas_Object_Line *o;
+
+   /* this returns 1 if the canvas co-ordinates are inside the object based */
+   /* on object private data. not much use for rects, but for polys, images */
+   /* and other complex objects it might be */
+   o = (Evas_Object_Line *)(obj->object_data);
+   return 1;
+   x = 0;
+   y = 0;
+}
+
+static int
+evas_object_line_was_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   Evas_Object_Line *o;
+
+   /* this returns 1 if the canvas co-ordinates were inside the object based */
+   /* on object private data. not much use for rects, but for polys, images */
+   /* and other complex objects it might be */
+   o = (Evas_Object_Line *)(obj->object_data);
+   return 1;
+   x = 0;
+   y = 0;
+}
+
+static void
+evas_object_line_coords_recalc(Evas_Object *obj)
+{
+   Evas_Object_Line *o;
+
+   o = (Evas_Object_Line *)(obj->object_data);
+   o->cur.cache.x1 = obj->cur.geometry.x + o->cur.x1;
+   o->cur.cache.y1 = obj->cur.geometry.y + o->cur.y1;
+   o->cur.cache.x2 = obj->cur.geometry.x + o->cur.x2;
+   o->cur.cache.y2 = obj->cur.geometry.y + o->cur.y2;
+   o->cur.cache.object.w = obj->cur.geometry.w;
+   o->cur.cache.object.h = obj->cur.geometry.h;
+}
diff --git a/src/lib/canvas/evas_object_main.c b/src/lib/canvas/evas_object_main.c
new file mode 100644 (file)
index 0000000..a585ce6
--- /dev/null
@@ -0,0 +1,1424 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* FIXME: this broken e17's mouse cursor - need to figure out why */
+
+/* uncomment the next line if smart objects should be informed
+ * if they are moved to the position they are already in
+ * (e.g. if they are in 0,0 and you call evas_object_move(o, 0, 0)
+ */
+//#define FORWARD_NOOP_MOVES_TO_SMART_OBJS
+
+/* likewise, for resizes
+ */
+//#define FORWARD_NOOP_RESIZES_TO_SMART_OBJS
+
+static Evas_Object_List *
+get_layer_objects_last(Evas_Layer *l)
+{
+   if( !l || !l->objects ) return NULL;
+
+   return ((Evas_Object_List *)(l->objects))->last;
+}
+
+/* evas internal stuff */
+Evas_Object *
+evas_object_new(void)
+{
+   Evas_Object *obj;
+
+   obj = calloc(1, sizeof(Evas_Object));
+   if (!obj) return NULL;
+
+   obj->magic = MAGIC_OBJ;
+
+   return obj;
+}
+
+void
+evas_object_free(Evas_Object *obj, int clean_layer)
+{
+   int was_smart_child = 0;
+
+   evas_object_grabs_cleanup(obj);
+   evas_object_intercept_cleanup(obj);
+   if (obj->smart.parent) was_smart_child = 1;
+   evas_object_smart_cleanup(obj);
+   obj->func->free(obj);
+   if (!was_smart_child) evas_object_release(obj, clean_layer);
+   if (obj->clip.clipees)
+     evas_list_free(obj->clip.clipees);
+   while (obj->clip.changes)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)obj->clip.changes->data;
+       obj->clip.changes = evas_list_remove(obj->clip.changes, r);
+       free(r);
+     }
+   evas_object_event_callback_all_del(obj);
+   evas_object_event_callback_cleanup(obj);
+   while (obj->data.elements)
+     {
+       Evas_Data_Node *node;
+
+       node = obj->data.elements->data;
+       obj->data.elements = evas_list_remove(obj->data.elements, node);
+       free(node);
+     }
+   obj->magic = 0;
+   if (obj->size_hints) free(obj->size_hints);
+   free(obj);
+}
+
+void
+evas_object_change(Evas_Object *obj)
+{
+   Evas_List *l;
+
+   obj->layer->evas->changed = 1;
+   if (obj->changed) return;
+   evas_render_object_recalc(obj);
+   /* set changed flag on all objects this one clips too */
+   for (l = obj->clip.clipees; l; l = l->next)
+     evas_object_change((Evas_Object *)l->data);
+   if (obj->smart.parent) evas_object_change(obj->smart.parent);
+}
+
+void
+evas_object_render_pre_visible_change(Evas_Rectangles *rects, Evas_Object *obj, int is_v, int was_v)
+{
+   if (obj->smart.smart) return ;
+   if (is_v == was_v) return ;
+   if (is_v)
+     {
+       evas_add_rect(rects,
+                     obj->cur.cache.clip.x,
+                     obj->cur.cache.clip.y,
+                     obj->cur.cache.clip.w,
+                     obj->cur.cache.clip.h);
+     }
+   else
+     {
+       evas_add_rect(rects,
+                     obj->prev.cache.clip.x,
+                     obj->prev.cache.clip.y,
+                     obj->prev.cache.clip.w,
+                     obj->prev.cache.clip.h);
+     }
+}
+
+void
+evas_object_render_pre_clipper_change(Evas_Rectangles *rects, Evas_Object *obj)
+{
+   if (obj->smart.smart) return ;
+   if (obj->cur.clipper == obj->prev.clipper) return ;
+   if ((obj->cur.clipper) && (obj->prev.clipper))
+     {
+       /* get difference rects between clippers */
+       evas_rects_return_difference_rects(rects,
+                                          obj->cur.clipper->cur.cache.clip.x,
+                                          obj->cur.clipper->cur.cache.clip.y,
+                                          obj->cur.clipper->cur.cache.clip.w,
+                                          obj->cur.clipper->cur.cache.clip.h,
+                                          obj->prev.clipper->prev.cache.clip.x,
+                                          obj->prev.clipper->prev.cache.clip.y,
+                                          obj->prev.clipper->prev.cache.clip.w,
+                                          obj->prev.clipper->prev.cache.clip.h);
+     }
+   else if (obj->cur.clipper)
+     {
+       evas_rects_return_difference_rects(rects,
+                                          obj->cur.geometry.x,
+                                          obj->cur.geometry.y,
+                                          obj->cur.geometry.w,
+                                          obj->cur.geometry.h,
+////   rl = evas_rects_return_difference_rects(obj->cur.cache.geometry.x,
+////                                           obj->cur.cache.geometry.y,
+////                                           obj->cur.cache.geometry.w,
+////                                           obj->cur.cache.geometry.h,
+                                          obj->cur.clipper->cur.cache.clip.x,
+                                          obj->cur.clipper->cur.cache.clip.y,
+                                          obj->cur.clipper->cur.cache.clip.w,
+                                          obj->cur.clipper->cur.cache.clip.h);
+     }
+   else if (obj->prev.clipper)
+     {
+       evas_rects_return_difference_rects(rects,
+                                          obj->prev.geometry.x,
+                                          obj->prev.geometry.y,
+                                          obj->prev.geometry.w,
+                                          obj->prev.geometry.h,
+////   rl = evas_rects_return_difference_rects(obj->prev.cache.geometry.x,
+////                                           obj->prev.cache.geometry.y,
+////                                           obj->prev.cache.geometry.w,
+////                                           obj->prev.cache.geometry.h,
+                                          obj->prev.clipper->prev.cache.clip.x,
+                                          obj->prev.clipper->prev.cache.clip.y,
+                                          obj->prev.clipper->prev.cache.clip.w,
+                                          obj->prev.clipper->prev.cache.clip.h);
+     }
+}
+
+void
+evas_object_render_pre_prev_cur_add(Evas_Rectangles *rects, Evas_Object *obj)
+{
+   evas_add_rect(rects,
+                obj->cur.geometry.x,
+                obj->cur.geometry.y,
+                obj->cur.geometry.w,
+                obj->cur.geometry.h);
+////       obj->cur.cache.geometry.x,
+////       obj->cur.cache.geometry.y,
+////       obj->cur.cache.geometry.w,
+////       obj->cur.cache.geometry.h);
+   evas_add_rect(rects,
+                obj->prev.geometry.x,
+                obj->prev.geometry.y,
+                obj->prev.geometry.w,
+                obj->prev.geometry.h);
+////       obj->prev.cache.geometry.x,
+////       obj->prev.cache.geometry.y,
+////       obj->prev.cache.geometry.w,
+////       obj->prev.cache.geometry.h);
+}
+
+void
+evas_object_render_pre_effect_updates(Evas_Rectangles *rects, Evas_Object *obj, int is_v, int was_v)
+{
+   Evas_Rectangle *r;
+   Evas_Object *clipper;
+   Evas_List *l;
+   unsigned int i;
+   int x, y, w, h;
+
+   if (obj->smart.smart) goto end;
+   /* FIXME: was_v isn't used... why? */
+   was_v = 0;
+   if (!obj->clip.clipees)
+     {
+       for (i = 0; i < rects->count; ++i)
+         {
+            /* get updates and clip to current clip */
+            x = rects->array[i].x;
+            y = rects->array[i].y;
+            w = rects->array[i].w;
+            h = rects->array[i].h;
+            RECTS_CLIP_TO_RECT(x, y, w, h,
+                               obj->cur.cache.clip.x,
+                               obj->cur.cache.clip.y,
+                               obj->cur.cache.clip.w,
+                               obj->cur.cache.clip.h);
+            if ((w > 0) && (h > 0))
+              obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
+                                                                     x, y, w, h);
+            /* get updates and clip to previous clip */
+            x = rects->array[i].x;
+            y = rects->array[i].y;
+            w = rects->array[i].w;
+            h = rects->array[i].h;
+            RECTS_CLIP_TO_RECT(x, y, w, h,
+                               obj->prev.cache.clip.x,
+                               obj->prev.cache.clip.y,
+                               obj->prev.cache.clip.w,
+                               obj->prev.cache.clip.h);
+            if ((w > 0) && (h > 0))
+              obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
+                                                                     x, y, w, h);
+         }
+       /* if the object is actually visible, take any parent clip changes */
+       if (is_v)
+         {
+            clipper = obj->cur.clipper;
+            while (clipper)
+              {
+                 for (l = clipper->clip.changes; l; l = l->next)
+                   {
+                      r = (Evas_Rectangle *)(l->data);
+                      /* get updates and clip to current clip */
+                      x = r->x; y = r->y; w = r->w; h = r->h;
+                      RECTS_CLIP_TO_RECT(x, y, w, h,
+                                         obj->cur.cache.clip.x,
+                                         obj->cur.cache.clip.y,
+                                         obj->cur.cache.clip.w,
+                                         obj->cur.cache.clip.h);
+                      if ((w > 0) && (h > 0))
+                        obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
+                                                                               x, y, w, h);
+                      /* get updates and clip to previous clip */
+                      x = r->x; y = r->y; w = r->w; h = r->h;
+                      RECTS_CLIP_TO_RECT(x, y, w, h,
+                                         obj->prev.cache.clip.x,
+                                         obj->prev.cache.clip.y,
+                                         obj->prev.cache.clip.w,
+                                         obj->prev.cache.clip.h);
+                      if ((w > 0) && (h > 0))
+                        obj->layer->evas->engine.func->output_redraws_rect_add(obj->layer->evas->engine.data.output,
+                                                                               x, y, w, h);
+                   }
+                 clipper = clipper->cur.clipper;
+              }
+         }
+     }
+   else
+     {
+       while (obj->clip.changes)
+         {
+            free(obj->clip.changes->data);
+            obj->clip.changes = evas_list_remove(obj->clip.changes, obj->clip.changes->data);
+         }
+       for (i = 0; i < rects->count; ++i)
+         {
+            r = malloc(sizeof(Evas_Rectangle));
+            if (!r) goto end;
+
+            *r = rects->array[i];
+            obj->clip.changes = evas_list_append(obj->clip.changes, r);
+         }
+     }
+
+ end:
+   free(rects->array);
+   rects->array = NULL;
+   rects->count = 0;
+   rects->total = 0;
+}
+
+int
+evas_object_was_in_output_rect(Evas_Object *obj, int x, int y, int w, int h)
+{
+   if (obj->smart.smart) return 0;
+   /* assumes coords have been recalced */
+   if ((RECTS_INTERSECT(x, y, w, h,
+                       obj->prev.cache.clip.x,
+                       obj->prev.cache.clip.y,
+                       obj->prev.cache.clip.w,
+                       obj->prev.cache.clip.h)))
+     return 1;
+   return 0;
+}
+
+int
+evas_object_was_visible(Evas_Object *obj)
+{
+   if (obj->smart.smart) return 0;
+   if ((obj->prev.visible) &&
+       (obj->prev.cache.clip.visible) &&
+       (obj->prev.cache.clip.a > 0))
+     {
+       if (obj->func->was_visible)
+         return obj->func->was_visible(obj);
+       return 1;
+     }
+   return 0;
+}
+
+int
+evas_object_was_opaque(Evas_Object *obj)
+{
+   if (obj->smart.smart) return 0;
+   if (obj->prev.cache.clip.a == 255)
+     {
+       if (obj->func->was_opaque)
+         return obj->func->was_opaque(obj);
+       return 1;
+     }
+   return 0;
+}
+
+int
+evas_object_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   if (obj->smart.smart) return 0;
+   if (obj->func->is_inside)
+     return obj->func->is_inside(obj, x, y);
+   return 0;
+}
+
+int
+evas_object_was_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   if (obj->smart.smart) return 0;
+   if (obj->func->was_inside)
+     return obj->func->was_inside(obj, x, y);
+   return 0;
+}
+/* routines apps will call */
+
+/**
+ * @defgroup Evas_Object_Group Generic Object Functions
+ *
+ * Functions that manipulate generic evas objects.
+ */
+
+/**
+ * Deletes the given evas object and frees its memory.
+ *
+ * The object's 'free' callback is called when this function is called.
+ * If the object currently has the focus, its 'focus out' callback is
+ * also called.
+ *
+ * @param   obj The given evas object.
+ * @ingroup Evas_Object_Group
+ */
+EAPI void
+evas_object_del(Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+
+   if (obj->delete_me) return;
+
+   evas_object_event_callback_call(obj, EVAS_CALLBACK_DEL, NULL);
+   if (obj->name) evas_object_name_set(obj, NULL);
+   if (!obj->layer)
+     {
+       evas_object_free(obj, 1);
+       return;
+     }
+   if (obj->focused)
+     {
+       obj->focused = 0;
+       obj->layer->evas->focused = NULL;
+       evas_object_event_callback_call(obj, EVAS_CALLBACK_FOCUS_OUT, NULL);
+     }
+   obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
+   obj->mouse_grabbed = 0;
+   evas_object_hide(obj);
+   evas_object_grabs_cleanup(obj);
+   while (obj->clip.clipees) evas_object_clip_unset(obj->clip.clipees->data);
+   if (obj->cur.clipper) evas_object_clip_unset(obj);
+   if (obj->smart.smart) evas_object_smart_del(obj);
+   evas_object_event_callback_call(obj, EVAS_CALLBACK_FREE, NULL);
+   evas_object_smart_cleanup(obj);
+   obj->delete_me = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Moves the given evas object to the given location.
+ * @param   obj The given evas object.
+ * @param   x   X position to move the object to, in canvas units.
+ * @param   y   Y position to move the object to, in canvas units.
+ * @ingroup Evas_Object_Group
+ */
+EAPI void
+evas_object_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   int is, was = 0, pass = 0;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return;
+   if (evas_object_intercept_call_move(obj, x, y)) return;
+#ifdef FORWARD_NOOP_MOVES_TO_SMART_OBJS
+   if (obj->smart.smart)
+     {
+       if (obj->smart.smart->smart_class->move)
+         obj->smart.smart->smart_class->move(obj, x, y);
+     }
+#endif
+   if ((obj->cur.geometry.x == x) &&
+       (obj->cur.geometry.y == y))
+     {
+       evas_object_inform_call_move(obj);
+       return;
+     }
+#ifndef FORWARD_NOOP_MOVES_TO_SMART_OBJS
+   if (obj->smart.smart)
+     {
+       if (obj->smart.smart->smart_class->move)
+         obj->smart.smart->smart_class->move(obj, x, y);
+     }
+#endif
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       pass = evas_event_passes_through(obj);
+       if (!pass)
+         was = evas_object_is_in_output_rect(obj,
+                                             obj->layer->evas->pointer.x,
+                                             obj->layer->evas->pointer.y, 1, 1);
+     }
+   obj->cur.geometry.x = x;
+   obj->cur.geometry.y = y;
+////   obj->cur.cache.geometry.validity = 0;
+   evas_object_change(obj);
+   evas_object_clip_dirty(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       evas_object_recalc_clippees(obj);
+       if (!pass)
+         {
+            if (!obj->smart.smart)
+              {
+                 is = evas_object_is_in_output_rect(obj,
+                                                    obj->layer->evas->pointer.x,
+                                                    obj->layer->evas->pointer.y, 1, 1);
+                 if ((is ^ was) && obj->cur.visible)
+                   evas_event_feed_mouse_move(obj->layer->evas,
+                                              obj->layer->evas->pointer.x,
+                                              obj->layer->evas->pointer.y,
+                                              obj->layer->evas->last_timestamp,
+                                              NULL);
+              }
+         }
+     }
+   evas_object_inform_call_move(obj);
+}
+
+/**
+ * Changes the size of the given evas object.
+ * @param   obj The given evas object.
+ * @param   w   The new width of the evas object.
+ * @param   h   The new height of the evas object.
+ * @ingroup Evas_Object_Group
+ */
+EAPI void
+evas_object_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
+{
+   int is, was = 0, pass = 0;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return;
+   if (w < 0.0) w = 0.0; if (h < 0.0) h = 0.0;
+   if (evas_object_intercept_call_resize(obj, w, h)) return;
+#ifdef FORWARD_NOOP_RESIZES_TO_SMART_OBJS
+   if (obj->smart.smart)
+     {
+       if (obj->smart.smart->smart_class->resize)
+         obj->smart.smart->smart_class->resize(obj, w, h);
+     }
+#endif
+   if ((obj->cur.geometry.w == w) &&
+       (obj->cur.geometry.h == h))
+     {
+       evas_object_inform_call_resize(obj);
+       return;
+     }
+#ifndef FORWARD_NOOP_RESIZES_TO_SMART_OBJS
+   if (obj->smart.smart)
+     {
+       if (obj->smart.smart->smart_class->resize)
+         obj->smart.smart->smart_class->resize(obj, w, h);
+     }
+#endif
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       pass = evas_event_passes_through(obj);
+       if (!pass)
+         was = evas_object_is_in_output_rect(obj,
+                                             obj->layer->evas->pointer.x,
+                                             obj->layer->evas->pointer.y, 1, 1);
+     }
+   obj->cur.geometry.w = w;
+   obj->cur.geometry.h = h;
+////   obj->cur.cache.geometry.validity = 0;
+   evas_object_change(obj);
+   evas_object_clip_dirty(obj);
+   evas_object_recalc_clippees(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       //   if (obj->func->coords_recalc) obj->func->coords_recalc(obj);
+       if (!pass)
+         {
+            if (!obj->smart.smart)
+              {
+                 is = evas_object_is_in_output_rect(obj,
+                                                    obj->layer->evas->pointer.x,
+                                                    obj->layer->evas->pointer.y, 1, 1);
+                 if ((is ^ was) && (obj->cur.visible))
+                   evas_event_feed_mouse_move(obj->layer->evas,
+                                              obj->layer->evas->pointer.x,
+                                              obj->layer->evas->pointer.y,
+                                              obj->layer->evas->last_timestamp,
+                                              NULL);
+              }
+         }
+     }
+   evas_object_inform_call_resize(obj);
+}
+
+/**
+ * Retrieves the position and rectangular size of the given evas object.
+ *
+ * Note that if any of @p x, @p y, @p w or @p h are @c NULL, the @c NULL
+ * parameters are ignored.
+ *
+ * @param obj The given evas object.
+ * @param   x   Pointer to an integer in which to store the X coordinate of
+ *              the object.
+ * @param   y   Pointer to an integer in which to store the Y coordinate of
+ *              the object.
+ * @param   w   Pointer to an integer in which to store the width of the
+ *              object.
+ * @param   h   Pointer to an integer in which to store the height of the
+ *              object.
+ * @ingroup Evas_Object_Group
+ */
+EAPI void
+evas_object_geometry_get(const Evas_Object *obj, Evas_Coord *x, Evas_Coord *y, Evas_Coord *w, Evas_Coord *h)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (x) *x = 0; if (y) *y = 0; if (w) *w = 0; if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me)
+     {
+       if (x) *x = 0; if (y) *y = 0; if (w) *w = 0; if (h) *h = 0;
+       return;
+     }
+   if (x) *x = obj->cur.geometry.x;
+   if (y) *y = obj->cur.geometry.y;
+   if (w) *w = obj->cur.geometry.w;
+   if (h) *h = obj->cur.geometry.h;
+}
+
+/**
+ * @defgroup Evas_Object_Size_Hints_Group Generic Object Size Hints Functions
+ *
+ * Functions that deals with hints about object size.
+ */
+
+/**
+ * Retrieves the size hint for the minimum size.
+ *
+ * This is not a size enforcement in any way, it's just a hint that should
+ * be used whenever appropriate.
+ *
+ * Note that if any of @p w or @p h are @c NULL, the @c NULL
+ * parameters are ignored.
+ *
+ * @param obj The given evas object.
+ * @param   w Pointer to an integer in which to store the minimum width.
+ * @param   h Pointer to an integer in which to store the minimum height.
+ * @ingroup Evas_Object_Size_Hints_Group
+ */
+EAPI void
+evas_object_size_hint_min_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (w) *w = 0; if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   if ((!obj->size_hints) || obj->delete_me)
+     {
+       if (w) *w = 0; if (h) *h = 0;
+       return;
+     }
+   if (w) *w = obj->size_hints->min.w;
+   if (h) *h = obj->size_hints->min.h;
+}
+
+/**
+ * Sets the size hint for the minimum size.
+ *
+ * This is not a size enforcement in any way, it's just a hint that should
+ * be used whenever appropriate.
+ *
+ * @param obj The given evas object.
+ * @param   w Integer to use as the minimum width hint.
+ * @param   h Integer to use as the minimum height hint.
+ * @ingroup Evas_Object_Size_Hints_Group
+ */
+EAPI void
+evas_object_size_hint_min_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me)
+     return;
+   if (!obj->size_hints)
+     obj->size_hints = calloc(1, sizeof(Evas_Size_Hints));
+
+   obj->size_hints->min.w = w;
+   obj->size_hints->min.h = h;
+
+   evas_object_inform_call_changed_size_hints(obj);
+}
+
+/**
+ * Retrieves the size hint for the maximum size.
+ *
+ * This is not a size enforcement in any way, it's just a hint that should
+ * be used whenever appropriate.
+ *
+ * Note that if any of @p w or @p h are @c NULL, the @c NULL
+ * parameters are ignored.
+ *
+ * @param obj The given evas object.
+ * @param   w Pointer to an integer in which to store the maximum width.
+ * @param   h Pointer to an integer in which to store the maximum height.
+ * @ingroup Evas_Object_Size_Hints_Group
+ */
+EAPI void
+evas_object_size_hint_max_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (w) *w = 0; if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   if ((!obj->size_hints) || obj->delete_me)
+     {
+       if (w) *w = 0; if (h) *h = 0;
+       return;
+     }
+   if (w) *w = obj->size_hints->max.w;
+   if (h) *h = obj->size_hints->max.h;
+}
+
+/**
+ * Sets the size hint for the maximum size.
+ *
+ * This is not a size enforcement in any way, it's just a hint that should
+ * be used whenever appropriate.
+ *
+ * @param obj The given evas object.
+ * @param   w Integer to use as the maximum width hint.
+ * @param   h Integer to use as the maximum height hint.
+ * @ingroup Evas_Object_Size_Hints_Group
+ */
+EAPI void
+evas_object_size_hint_max_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me)
+     return;
+   if (!obj->size_hints)
+     obj->size_hints = calloc(1, sizeof(Evas_Size_Hints));
+
+   obj->size_hints->max.w = w;
+   obj->size_hints->max.h = h;
+
+   evas_object_inform_call_changed_size_hints(obj);
+}
+
+/**
+ * Retrieves the size request hint.
+ *
+ * This is not a size enforcement in any way, it's just a hint that should
+ * be used whenever appropriate.
+ *
+ * Note that if any of @p w or @p h are @c NULL, the @c NULL
+ * parameters are ignored.
+ *
+ * @param obj The given evas object.
+ * @param   w Pointer to an integer in which to store the requested width.
+ * @param   h Pointer to an integer in which to store the requested height.
+ * @ingroup Evas_Object_Size_Hints_Group
+ */
+EAPI void
+evas_object_size_hint_request_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (w) *w = 0; if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   if ((!obj->size_hints) || obj->delete_me)
+     {
+       if (w) *w = 0; if (h) *h = 0;
+       return;
+     }
+   if (w) *w = obj->size_hints->request.w;
+   if (h) *h = obj->size_hints->request.h;
+}
+
+/**
+ * Sets the requested size hint.
+ *
+ * This is not a size enforcement in any way, it's just a hint that should
+ * be used whenever appropriate.
+ *
+ * @param obj The given evas object.
+ * @param   w Integer to use as the preferred width hint.
+ * @param   h Integer to use as the preferred height hint.
+ * @ingroup Evas_Object_Size_Hints_Group
+ */
+EAPI void
+evas_object_size_hint_request_set(Evas_Object *obj, Evas_Coord w, Evas_Coord h)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me)
+     return;
+   if (!obj->size_hints)
+     obj->size_hints = calloc(1, sizeof(Evas_Size_Hints));
+
+   obj->size_hints->request.w = w;
+   obj->size_hints->request.h = h;
+
+   evas_object_inform_call_changed_size_hints(obj);
+}
+
+/**
+ * Retrieves the size aspect control hint.
+ *
+ * This is not a size enforcement in any way, it's just a hint that should
+ * be used whenever appropriate.
+ *
+ * Note that if any of @p aspect, @p w or @p h are @c NULL, the @c NULL
+ * parameters are ignored.
+ *
+ * @param    obj The given evas object.
+ * @param aspect Returns the hint on how size should be calculated.
+ * @param      w Pointer to an integer in which to store the aspect width.
+ * @param      h Pointer to an integer in which to store the aspect height.
+ * @ingroup Evas_Object_Size_Hints_Group
+ */
+EAPI void
+evas_object_size_hint_aspect_get(const Evas_Object *obj, Evas_Aspect_Control *aspect, Evas_Coord *w, Evas_Coord *h)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (aspect) *aspect = EVAS_ASPECT_CONTROL_NONE;
+   if (w) *w = 0; if (h) *h = 0;
+   return;
+   MAGIC_CHECK_END();
+   if ((!obj->size_hints) || obj->delete_me)
+     {
+       if (aspect) *aspect = EVAS_ASPECT_CONTROL_NONE;
+       if (w) *w = 0; if (h) *h = 0;
+       return;
+     }
+   if (aspect) *aspect = obj->size_hints->aspect.mode;
+   if (w) *w = obj->size_hints->aspect.size.w;
+   if (h) *h = obj->size_hints->aspect.size.h;
+}
+
+/**
+ * Sets the size aspect control hint.
+ *
+ * This is not a size enforcement in any way, it's just a hint that should
+ * be used whenever appropriate.
+ *
+ * @param    obj The given evas object.
+ * @param aspect Hint on how to calculate size.
+ * @param      w Integer to use as aspect width hint.
+ * @param      h Integer to use as aspect height hint.
+ * @ingroup Evas_Object_Size_Hints_Group
+ */
+EAPI void
+evas_object_size_hint_aspect_set(Evas_Object *obj, Evas_Aspect_Control aspect, Evas_Coord w, Evas_Coord h)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me)
+     return;
+   if (!obj->size_hints)
+     obj->size_hints = calloc(1, sizeof(Evas_Size_Hints));
+
+   obj->size_hints->aspect.mode = aspect;
+   obj->size_hints->aspect.size.w = w;
+   obj->size_hints->aspect.size.h = h;
+
+   evas_object_inform_call_changed_size_hints(obj);
+}
+
+
+/**
+ * @defgroup Evas_Object_Visibility_Group Generic Object Visibility Functions
+ *
+ * Functions that deal with the visibility of evas objects.
+ */
+
+/**
+ * Makes the given evas object visible.
+ * @param   obj The given evas object.
+ * @ingroup Evas_Object_Visibility_Group
+ */
+EAPI void
+evas_object_show(Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return;
+   if (evas_object_intercept_call_show(obj)) return;
+   if (obj->smart.smart)
+     {
+       if (obj->smart.smart->smart_class->show)
+         obj->smart.smart->smart_class->show(obj);
+     }
+   if (obj->cur.visible)
+     {
+       evas_object_inform_call_show(obj);
+       return;
+     }
+   obj->cur.visible = 1;
+   evas_object_change(obj);
+   evas_object_clip_dirty(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       evas_object_recalc_clippees(obj);
+       if (!evas_event_passes_through(obj))
+         {
+            if (!obj->smart.smart)
+              {
+                 if (evas_object_is_in_output_rect(obj,
+                                                   obj->layer->evas->pointer.x,
+                                                   obj->layer->evas->pointer.y, 1, 1))
+                   evas_event_feed_mouse_move(obj->layer->evas,
+                                              obj->layer->evas->pointer.x,
+                                              obj->layer->evas->pointer.y,
+                                              obj->layer->evas->last_timestamp,
+                                              NULL);
+              }
+         }
+     }
+   evas_object_inform_call_show(obj);
+}
+
+/**
+ * Makes the given evas object invisible.
+ * @param   obj The given evas object.
+ * @ingroup Evas_Object_Visibility_Group
+ */
+EAPI void
+evas_object_hide(Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return;
+   if (evas_object_intercept_call_hide(obj)) return;
+   if (obj->smart.smart)
+     {
+       if (obj->smart.smart->smart_class->hide)
+         obj->smart.smart->smart_class->hide(obj);
+     }
+   if (!obj->cur.visible)
+     {
+       evas_object_inform_call_hide(obj);
+       return;
+     }
+   obj->cur.visible = 0;
+   evas_object_change(obj);
+   evas_object_clip_dirty(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       evas_object_recalc_clippees(obj);
+       if (!evas_event_passes_through(obj))
+         {
+            if (!obj->smart.smart)
+              {
+                 if (evas_object_is_in_output_rect(obj,
+                                                   obj->layer->evas->pointer.x,
+                                                   obj->layer->evas->pointer.y, 1, 1))
+                   evas_event_feed_mouse_move(obj->layer->evas,
+                                              obj->layer->evas->pointer.x,
+                                              obj->layer->evas->pointer.y,
+                                              obj->layer->evas->last_timestamp,
+                                              NULL);
+                 if (obj->delete_me) return;
+                 if (obj->mouse_grabbed > 0)
+                   {
+//                    if (obj->layer->evas->pointer.mouse_grabbed >= obj->mouse_grabbed)
+                        obj->layer->evas->pointer.mouse_grabbed -= obj->mouse_grabbed;
+                   }
+                   {
+                      if ((obj->mouse_in) || (obj->mouse_grabbed > 0))
+                        {
+                           obj->layer->evas->pointer.object.in = evas_list_remove(obj->layer->evas->pointer.object.in, obj);
+                        }
+                      obj->mouse_grabbed = 0;
+                      if (obj->layer->evas->events_frozen > 0)
+                        {
+                           obj->mouse_in = 0;
+                           return;
+                        }
+                      if (obj->mouse_in)
+                        {
+                           Evas_Event_Mouse_Out ev;
+                           
+                           obj->mouse_in = 0;
+                           ev.buttons = obj->layer->evas->pointer.button;
+                           ev.output.x = obj->layer->evas->pointer.x;
+                           ev.output.y = obj->layer->evas->pointer.y;
+                           ev.canvas.x = obj->layer->evas->pointer.x;
+                           ev.canvas.y = obj->layer->evas->pointer.y;
+                           ev.data = NULL;
+                           ev.modifiers = &(obj->layer->evas->modifiers);
+                           ev.locks = &(obj->layer->evas->locks);
+                           evas_object_event_callback_call(obj, EVAS_CALLBACK_MOUSE_OUT, &ev);
+                        }
+                   }
+              }
+         }
+     }
+   else
+     {
+       if ((obj->mouse_in) || (obj->mouse_grabbed > 0))
+         obj->layer->evas->pointer.object.in = evas_list_remove(obj->layer->evas->pointer.object.in, obj);
+       obj->mouse_grabbed = 0;
+       obj->mouse_in = 0;
+     }
+   evas_object_inform_call_hide(obj);
+}
+
+/**
+ * Retrieves whether or not the given evas object is visible.
+ * @param   obj The given evas object.
+ * @return  @c 1 if the object is visible.  @c 0 otherwise.
+ * @ingroup Evas_Object_Visibility_Group
+ */
+EAPI Evas_Bool
+evas_object_visible_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return 0;
+   return obj->cur.visible;
+}
+
+/**
+ * Sets the general colour of the given evas object to the given colour.
+ * @param obj The given evas object.
+ * @param r   The red component of the given colour.
+ * @param g   The green component of the given colour.
+ * @param b   The blue component of the given colour.
+ * @param a   The alpha component of the given colour.
+ * @ingroup Evas_Object_Group
+ */
+EAPI void
+evas_object_color_set(Evas_Object *obj, int r, int g, int b, int a)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return;
+   if (r > 255) r = 255; if (r < 0) r = 0;
+   if (g > 255) g = 255; if (g < 0) g = 0;
+   if (b > 255) b = 255; if (b < 0) b = 0;
+   if (a > 255) a = 255; if (a < 0) a = 0;
+   if (evas_object_intercept_call_color_set(obj, r, g, b, a)) return;
+   if (obj->smart.smart)
+     {
+       if (obj->smart.smart->smart_class->color_set)
+         obj->smart.smart->smart_class->color_set(obj, r, g, b, a);
+     }
+   if ((obj->cur.color.r == r) &&
+       (obj->cur.color.g == g) &&
+       (obj->cur.color.b == b) &&
+       (obj->cur.color.a == a)) return;
+   obj->cur.color.r = r;
+   obj->cur.color.g = g;
+   obj->cur.color.b = b;
+   if ((obj->cur.color.a == 0) && (a == 0)) return;
+   obj->cur.color.a = a;
+   evas_object_change(obj);
+}
+
+/**
+ * Retrieves the general colour of the given evas object.
+ *
+ * Note that if any of @p r, @p g, @p b or @p a are @c NULL, then the
+ * @c NULL parameters are ignored.
+ *
+ * @param   obj The given evas object.
+ * @param   r   Pointer to an integer in which to store the red component of
+ *              the colour.
+ * @param   g   Pointer to an integer in which to store the green component of
+ *              the colour.
+ * @param   b   Pointer to an integer in which to store the blue component of
+ *              the colour.
+ * @param   a   Pointer to an integer in which to store the alpha component of
+ *              the colour.
+ * @ingroup Evas_Object_Group
+ */
+EAPI void
+evas_object_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (r) *r = 0; if (g) *g = 0; if (b) *b = 0; if (a) *a = 0;
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me)
+     {
+       if (r) *r = 0; if (g) *g = 0; if (b) *b = 0; if (a) *a = 0;
+       return;
+     }
+   if (r) *r = obj->cur.color.r;
+   if (g) *g = obj->cur.color.g;
+   if (b) *b = obj->cur.color.b;
+   if (a) *a = obj->cur.color.a;
+}
+
+/**
+ * Sets whether or not the given evas object is to be drawn anti_aliased.
+ * @param   obj The given evas object.
+ * @param   anti_alias. 1 if the object is to be anti_aliased, 0 otherwise.
+ * @ingroup Evas_Object_Group
+ */
+EAPI void
+evas_object_anti_alias_set(Evas_Object *obj, Evas_Bool anti_alias)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return;
+   if (obj->cur.anti_alias == !!anti_alias)
+       return;
+   obj->cur.anti_alias = !!anti_alias;
+   evas_object_change(obj);
+}
+
+
+/**
+ * Retrieves whether or not the given evas object is to be drawn anti_aliased.
+ * @param   obj The given evas object.
+ * @return  @c 1 if the object is to be anti_aliased.  @c 0 otherwise.
+ * @ingroup Evas_Object_Group
+ */
+EAPI Evas_Bool
+evas_object_anti_alias_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return 0;
+   return obj->cur.anti_alias;
+}
+
+/**
+ * Sets the color_space to be used for linear interpolation of colors.
+ * @param   obj The given evas object.
+ * @param   color_space, one of EVAS_COLOR_SPACE_ARGB or EVAS_COLOR_SPACE_AHSV.
+ * @ingroup Evas_Object_Group
+ */
+EAPI void
+evas_object_color_interpolation_set(Evas_Object *obj, int color_space)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return;
+   if (obj->cur.interpolation_color_space == color_space)
+       return;
+   obj->cur.interpolation_color_space = color_space;
+   evas_object_change(obj);
+}
+
+
+/**
+ * Retrieves the current value of the color space used for linear interpolation.
+ * @param   obj The given evas object.
+ * @return  @c EVAS_COLOR_SPACE_ARGB or EVAS_COLOR_SPACE_AHSV.
+ * @ingroup Evas_Object_Group
+ */
+EAPI int
+evas_object_color_interpolation_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return 0;
+   return obj->cur.interpolation_color_space;
+}
+
+/**
+ * Sets the render_op to be used for rendering the evas object.
+ * @param   obj The given evas object.
+ * @param   render_op one of the Evas_Render_Op values.
+ * @ingroup Evas_Object_Group
+ */
+EAPI void
+evas_object_render_op_set(Evas_Object *obj, Evas_Render_Op render_op)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return;
+   if ((Evas_Render_Op)obj->cur.render_op == render_op)
+       return;
+   obj->cur.render_op = render_op;
+   evas_object_change(obj);
+}
+
+
+/**
+ * Retrieves the current value of the operation used for rendering the evas object.
+ * @param   obj The given evas object.
+ * @return  one of the enumerated values in Evas_Render_Op.
+ * @ingroup Evas_Object_Group
+ */
+EAPI Evas_Render_Op
+evas_object_render_op_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return EVAS_RENDER_BLEND;
+   return obj->cur.render_op;
+}
+
+/**
+ * Retrieves the evas that the given evas object is on.
+ * @param   obj The given evas object.
+ * @return  The evas that the object is on.
+ * @ingroup Evas_Object_Group
+ */
+EAPI Evas *
+evas_object_evas_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return 0;
+   return obj->layer->evas;
+}
+
+/**
+ * @defgroup Evas_Object_Finders Object Finder Functions
+ *
+ * Functions that determine what evas objects are at a given location
+ * or within a given region of an evas.
+ */
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ * @ingroup Evas_Object_Finders
+ */
+EAPI Evas_Object *
+evas_object_top_at_xy_get(const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Bool include_pass_events_objects, Evas_Bool include_hidden_objects)
+{
+   Evas_Object_List *l;
+   int xx, yy;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   xx = x;
+   yy = y;
+////   xx = evas_coord_world_x_to_screen(e, x);
+////   yy = evas_coord_world_y_to_screen(e, y);
+   for (l = ((Evas_Object_List *)(e->layers))->last; l; l = l->prev)
+     {
+       Evas_Object_List *l2;
+       Evas_Layer *lay;
+
+       lay = (Evas_Layer *)l;
+       for (l2 = get_layer_objects_last(lay); l2; l2 = l2->prev)
+         {
+            Evas_Object *obj;
+
+            obj = (Evas_Object *)l2;
+            if (obj->delete_me) continue;
+            if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
+            if ((!include_hidden_objects) && (!obj->cur.visible)) continue;
+            evas_object_clip_recalc(obj);
+            if ((evas_object_is_in_output_rect(obj, xx, yy, 1, 1)) &&
+                (!obj->clip.clipees))
+              return obj;
+         }
+     }
+   return NULL;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ * @ingroup Evas_Object_Finders
+ */
+EAPI Evas_Object *
+evas_object_top_at_pointer_get(const Evas *e)
+{
+////   return evas_object_top_at_xy_get(e, e->pointer.canvas_x, e->pointer.canvas_y, 0, 0);
+   return evas_object_top_at_xy_get(e, e->pointer.x, e->pointer.y, 1, 1);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ * @ingroup Evas_Object_Finders
+ */
+EAPI Evas_Object *
+evas_object_top_in_rectangle_get(const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Evas_Bool include_pass_events_objects, Evas_Bool include_hidden_objects)
+{
+   Evas_Object_List *l;
+   int xx, yy, ww, hh;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   xx = x;
+   yy = y;
+   ww = w;
+   hh = h;
+////   xx = evas_coord_world_x_to_screen(e, x);
+////   yy = evas_coord_world_y_to_screen(e, y);
+////   ww = evas_coord_world_x_to_screen(e, w);
+////   hh = evas_coord_world_y_to_screen(e, h);
+   if (ww < 1) ww = 1;
+   if (hh < 1) hh = 1;
+   for (l = ((Evas_Object_List *)(e->layers))->last; l; l = l->prev)
+     {
+       Evas_Object_List *l2;
+       Evas_Layer *lay;
+
+       lay = (Evas_Layer *)l;
+       for (l2 = get_layer_objects_last(lay); l2; l2 = l2->prev)
+         {
+            Evas_Object *obj;
+
+            obj = (Evas_Object *)l2;
+            if (obj->delete_me) continue;
+            if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
+            if ((!include_hidden_objects) && (!obj->cur.visible)) continue;
+            evas_object_clip_recalc(obj);
+            if ((evas_object_is_in_output_rect(obj, xx, yy, ww, hh)) &&
+                (!obj->clip.clipees))
+              return obj;
+         }
+     }
+   return NULL;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ * @ingroup Evas_Object_Finders
+ */
+EAPI Evas_List *
+evas_objects_at_xy_get(const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Bool include_pass_events_objects, Evas_Bool include_hidden_objects)
+{
+   Evas_List *in = NULL;
+   Evas_Object_List *l;
+   int xx, yy;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   xx = x;
+   yy = y;
+////   xx = evas_coord_world_x_to_screen(e, x);
+////   yy = evas_coord_world_y_to_screen(e, y);
+   for (l = ((Evas_Object_List *)(e->layers))->last; l; l = l->prev)
+     {
+       Evas_Object_List *l2;
+       Evas_Layer *lay;
+
+       lay = (Evas_Layer *)l;
+       for (l2 = get_layer_objects_last(lay); l2; l2 = l2->prev)
+         {
+            Evas_Object *obj;
+
+            obj = (Evas_Object *)l2;
+            if (obj->delete_me) continue;
+            if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
+            if ((!include_hidden_objects) && (!obj->cur.visible)) continue;
+            evas_object_clip_recalc(obj);
+            if ((evas_object_is_in_output_rect(obj, xx, yy, 1, 1)) &&
+                (!obj->clip.clipees))
+              in = evas_list_prepend(in, obj);
+         }
+     }
+   return in;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ * @ingroup Evas_Object_Finders
+ */
+EAPI Evas_List *
+evas_objects_in_rectangle_get(const Evas *e, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, Evas_Bool include_pass_events_objects, Evas_Bool include_hidden_objects)
+{
+   Evas_List *in = NULL;
+   Evas_Object_List *l;
+   int xx, yy, ww, hh;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   xx = x;
+   yy = y;
+   ww = w;                                
+   hh = h;
+////   xx = evas_coord_world_x_to_screen(e, x);
+////   yy = evas_coord_world_y_to_screen(e, y);
+////   ww = evas_coord_world_x_to_screen(e, w);
+////   hh = evas_coord_world_y_to_screen(e, h);
+   if (ww < 1) ww = 1;
+   if (hh < 1) hh = 1;
+   for (l = ((Evas_Object_List *)(e->layers))->last; l; l = l->prev)
+     {
+       Evas_Object_List *l2;
+       Evas_Layer *lay;
+
+       lay = (Evas_Layer *)l;
+       for (l2 = get_layer_objects_last(lay); l2; l2 = l2->prev)
+         {
+            Evas_Object *obj;
+
+            obj = (Evas_Object *)l2;
+            if (obj->delete_me) continue;
+            if ((!include_pass_events_objects) && (evas_event_passes_through(obj))) continue;
+            if ((!include_hidden_objects) && (!obj->cur.visible)) continue;
+            evas_object_clip_recalc(obj);
+            if ((evas_object_is_in_output_rect(obj, xx, yy, ww, hh)) &&
+                (!obj->clip.clipees))
+              in = evas_list_prepend(in, obj);
+         }
+     }
+   return in;
+}
+
+/**
+ * Retrieves the name of the type of the given evas object.
+ * @param   obj The given object.
+ * @return  The name.
+ * @ingroup Evas_Object_Group
+ */
+EAPI const char *
+evas_object_type_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (obj->delete_me) return "";
+   return obj->type;
+}
+
+/**
+ * Set whether to use a precise (usually expensive) point collision detection.
+ * @param obj The given object.
+ * @param precise wheter to use a precise point collision detection or not
+ * The default value is false.
+ * @ingroup Evas_Object_Group
+ */
+EAPI void
+evas_object_precise_is_inside_set(Evas_Object *obj, Evas_Bool precise)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   obj->precise_is_inside = precise;
+}
+
+/**
+ * Determine whether an object is set to use a precise point collision detection.
+ * @param obj The given object.
+ * @ingroup Evas_Object_Group
+ */
+EAPI Evas_Bool
+evas_object_precise_is_inside_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   return obj->precise_is_inside;
+}
diff --git a/src/lib/canvas/evas_object_polygon.c b/src/lib/canvas/evas_object_polygon.c
new file mode 100644 (file)
index 0000000..d327a61
--- /dev/null
@@ -0,0 +1,460 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* private magic number for polygon objects */
+static const char o_type[] = "polygon";
+
+/* private struct for line object internal data */
+typedef struct _Evas_Object_Polygon      Evas_Object_Polygon;
+typedef struct _Evas_Polygon_Point       Evas_Polygon_Point;
+
+struct _Evas_Object_Polygon
+{
+   DATA32            magic;
+   Evas_List        *points;
+   
+   void             *engine_data;
+
+   char              changed : 1;
+};
+
+struct _Evas_Polygon_Point
+{
+   Evas_Coord x, y;
+};
+
+/* private methods for polygon objects */
+static void evas_object_polygon_init(Evas_Object *obj);
+static void *evas_object_polygon_new(void);
+static void evas_object_polygon_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
+static void evas_object_polygon_free(Evas_Object *obj);
+static void evas_object_polygon_render_pre(Evas_Object *obj);
+static void evas_object_polygon_render_post(Evas_Object *obj);
+
+static int evas_object_polygon_is_opaque(Evas_Object *obj);
+static int evas_object_polygon_was_opaque(Evas_Object *obj);
+static int evas_object_polygon_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+static int evas_object_polygon_was_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+
+static const Evas_Object_Func object_func =
+{
+   /* methods (compulsory) */
+   evas_object_polygon_free,
+     evas_object_polygon_render,
+     evas_object_polygon_render_pre,
+     evas_object_polygon_render_post,
+   /* these are optional. NULL = nothing */
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     evas_object_polygon_is_opaque,
+     evas_object_polygon_was_opaque,
+     evas_object_polygon_is_inside,
+     evas_object_polygon_was_inside,
+     NULL
+};
+
+/* the actual api call to add a rect */
+/* it has no other api calls as all properties are standard */
+
+/**
+ * @defgroup Evas_Polygon_Group Polygon Functions
+ *
+ * Functions that operate on evas polygon objects.
+ */
+
+/**
+ * Adds a new evas polygon object to the given evas.
+ * @param   e The given evas.
+ * @return  A new evas polygon object.
+ * @ingroup Evas_Polygon_Group
+ */
+EAPI Evas_Object *
+evas_object_polygon_add(Evas *e)
+{
+   Evas_Object *obj;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   obj = evas_object_new();
+   evas_object_polygon_init(obj);
+   evas_object_inject(obj, e);
+   return obj;
+}
+
+/**
+ * Adds the given point to the given evas polygon object.
+ * @param obj The given evas polygon object.
+ * @param x   The X coordinate of the given point.
+ * @param y   The Y coordinate of the given point.
+ * @ingroup Evas_Polygon_Group
+ */
+EAPI void
+evas_object_polygon_point_add(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   Evas_Object_Polygon *o;
+   Evas_Polygon_Point *p;
+   Evas_Coord min_x, max_x, min_y, max_y;
+   int is, was = 0;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Polygon *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Polygon, MAGIC_OBJ_POLYGON);
+   return;
+   MAGIC_CHECK_END();
+   if (obj->layer->evas->events_frozen != 0)
+     {
+       if (!evas_event_passes_through(obj))
+         was = evas_object_is_in_output_rect(obj,
+                                             obj->layer->evas->pointer.x,
+                                             obj->layer->evas->pointer.y, 1, 1);
+     }
+   p = malloc(sizeof(Evas_Polygon_Point));
+   if (!p) return;
+   p->x = x;
+   p->y = y;
+
+   if (!o->points)
+     {
+       obj->cur.geometry.x = p->x;
+       obj->cur.geometry.y = p->y;
+       obj->cur.geometry.w = 2.0;
+       obj->cur.geometry.h = 2.0;
+     }
+   else
+     {
+       if (x < obj->cur.geometry.x) min_x = x;
+       else min_x = obj->cur.geometry.x;
+       if (x > (obj->cur.geometry.x + obj->cur.geometry.w - 2.0)) max_x = x;
+       else max_x = obj->cur.geometry.x + obj->cur.geometry.w - 2.0;
+       if (y < obj->cur.geometry.y) min_y = y;
+       else min_y = obj->cur.geometry.y;
+       if (y > (obj->cur.geometry.y + obj->cur.geometry.h - 2.0)) max_y = y;
+       else max_y = obj->cur.geometry.y + obj->cur.geometry.h - 2.0;
+       obj->cur.geometry.x = min_x;
+       obj->cur.geometry.y = min_y;
+       obj->cur.geometry.w = max_x - min_x + 2.0;
+       obj->cur.geometry.h = max_y - min_y + 2.0;
+     }
+   o->points = evas_list_append(o->points, p);
+
+////   obj->cur.cache.geometry.validity = 0;
+   o->changed = 1;
+   evas_object_change(obj);
+   evas_object_coords_recalc(obj);
+   if (obj->layer->evas->events_frozen != 0)
+     {
+       is = evas_object_is_in_output_rect(obj,
+                                          obj->layer->evas->pointer.x,
+                                          obj->layer->evas->pointer.y, 1, 1);
+       if (!evas_event_passes_through(obj))
+         {
+            if ((is ^ was) && obj->cur.visible)
+              evas_event_feed_mouse_move(obj->layer->evas,
+                                         obj->layer->evas->pointer.x,
+                                         obj->layer->evas->pointer.y,
+                                         obj->layer->evas->last_timestamp,
+                                         NULL);
+         }
+     }
+   evas_object_inform_call_move(obj);
+   evas_object_inform_call_resize(obj);
+}
+
+/**
+ * Removes all of the points from the given evas polygon object.
+ * @param   obj The given polygon object.
+ * @ingroup Evas_Polygon_Group
+ */
+EAPI void
+evas_object_polygon_points_clear(Evas_Object *obj)
+{
+   Evas_Object_Polygon *o;
+   int is, was;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Polygon *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Polygon, MAGIC_OBJ_POLYGON);
+   return;
+   MAGIC_CHECK_END();
+   was = evas_object_is_in_output_rect(obj,
+                                      obj->layer->evas->pointer.x,
+                                      obj->layer->evas->pointer.y, 1, 1);
+   while (o->points)
+     {
+       free(o->points->data);
+       o->points = evas_list_remove(o->points, o->points->data);
+     }
+   obj->cur.geometry.w = 0;
+   obj->cur.geometry.h = 0;
+////   obj->cur.cache.geometry.validity = 0;
+   o->changed = 1;
+   evas_object_change(obj);
+   evas_object_coords_recalc(obj);
+   is = evas_object_is_in_output_rect(obj,
+                                     obj->layer->evas->pointer.x,
+                                     obj->layer->evas->pointer.y, 1, 1);
+   if ((is || was) && obj->cur.visible)
+     evas_event_feed_mouse_move(obj->layer->evas,
+                               obj->layer->evas->pointer.x,
+                               obj->layer->evas->pointer.y,
+                               obj->layer->evas->last_timestamp,
+                               NULL);
+   evas_object_inform_call_move(obj);
+   evas_object_inform_call_resize(obj);
+}
+
+
+
+
+
+/* all nice and private */
+static void
+evas_object_polygon_init(Evas_Object *obj)
+{
+   /* alloc image ob, setup methods and default values */
+   obj->object_data = evas_object_polygon_new();
+   /* set up default settings for this kind of object */
+   obj->cur.color.r = 255;
+   obj->cur.color.g = 255;
+   obj->cur.color.b = 255;
+   obj->cur.color.a = 255;
+   obj->cur.geometry.x = 0.0;
+   obj->cur.geometry.y = 0.0;
+   obj->cur.geometry.w = 0.0;
+   obj->cur.geometry.h = 0.0;
+   obj->cur.layer = 0;
+   /* set up object-specific settings */
+   obj->prev = obj->cur;
+   /* set up methods (compulsory) */
+   obj->func = &object_func;
+   obj->type = o_type;
+}
+
+static void *
+evas_object_polygon_new(void)
+{
+   Evas_Object_Polygon *o;
+
+   /* alloc obj private data */
+   o = calloc(1, sizeof(Evas_Object_Polygon));
+   o->magic = MAGIC_OBJ_POLYGON;
+   return o;
+}
+
+static void
+evas_object_polygon_free(Evas_Object *obj)
+{
+   Evas_Object_Polygon *o;
+
+   /* frees private object data. very simple here */
+   o = (Evas_Object_Polygon *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Polygon, MAGIC_OBJ_POLYGON);
+   return;
+   MAGIC_CHECK_END();
+   /* free obj */
+   while (o->points)
+     {
+       free(o->points->data);
+       o->points = evas_list_remove(o->points, o->points->data);
+     }
+   o->engine_data = obj->layer->evas->engine.func->polygon_points_clear(obj->layer->evas->engine.data.output,
+                                                                       obj->layer->evas->engine.data.context,
+                                                                       o->engine_data);
+   o->magic = 0;
+   free(o);
+}
+
+static void
+evas_object_polygon_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
+{
+   Evas_Object_Polygon *o;
+   Evas_List *l;
+
+   /* render object to surface with context, and offxet by x,y */
+   o = (Evas_Object_Polygon *)(obj->object_data);
+   obj->layer->evas->engine.func->context_color_set(output,
+                                                   context,
+                                                   obj->cur.cache.clip.r,
+                                                   obj->cur.cache.clip.g,
+                                                   obj->cur.cache.clip.b,
+                                                   obj->cur.cache.clip.a);
+   obj->layer->evas->engine.func->context_multiplier_unset(output,
+                                                          context);
+   obj->layer->evas->engine.func->context_render_op_set(output, context,
+                                                       obj->cur.render_op);
+   o->engine_data = obj->layer->evas->engine.func->polygon_points_clear(obj->layer->evas->engine.data.output,
+                                                                       obj->layer->evas->engine.data.context,
+                                                                       o->engine_data);
+   for (l = o->points; l; l = l->next)
+     {
+       Evas_Polygon_Point *p;
+       //int px, py;
+
+        p = l->data;
+
+        //px = evas_coord_world_x_to_screen(obj->layer->evas, p->x);
+       //py = evas_coord_world_y_to_screen(obj->layer->evas, p->y);
+       o->engine_data = obj->layer->evas->engine.func->polygon_point_add(obj->layer->evas->engine.data.output,
+                                                                         obj->layer->evas->engine.data.context,
+                                                                         o->engine_data,
+                                                                         p->x + x, p->y + y);
+     }
+   if (o->engine_data)
+     obj->layer->evas->engine.func->polygon_draw(output,
+                                                context,
+                                                surface,
+                                                o->engine_data);
+}
+
+static void
+evas_object_polygon_render_pre(Evas_Object *obj)
+{
+   Evas_Rectangles rects = { 0, 0, NULL };
+   Evas_Object_Polygon *o;
+   int is_v, was_v;
+
+   /* dont pre-render the obj twice! */
+   if (obj->pre_render_done) return;
+   obj->pre_render_done = 1;
+   /* pre-render phase. this does anything an object needs to do just before */
+   /* rendering. this could mean loading the image data, retrieving it from */
+   /* elsewhere, decoding video etc. */
+   /* then when this is done the object needs to figure if it changed and */
+   /* if so what and where and add the appropriate redraw lines */
+   o = (Evas_Object_Polygon *)(obj->object_data);
+   /* if someone is clipping this obj - go calculate the clipper */
+   if (obj->cur.clipper)
+     {
+       if (obj->cur.cache.clip.dirty)
+         evas_object_clip_recalc(obj->cur.clipper);
+       obj->cur.clipper->func->render_pre(obj->cur.clipper);
+     }
+   /* now figure what changed and add draw rects */
+   /* if it just became visible or invisible */
+   is_v = evas_object_is_visible(obj);
+   was_v = evas_object_was_visible(obj);
+   if (is_v != was_v)
+     {
+       evas_object_render_pre_visible_change(&rects, obj, is_v, was_v);
+       goto done;
+     }
+   /* it's not visible - we accounted for it appearing or not so just abort */
+   if (!is_v) goto done;
+   /* clipper changed this is in addition to anything else for obj */
+   evas_object_render_pre_clipper_change(&rects, obj);
+   /* if we restacked (layer or just within a layer) */
+   if (obj->restack)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed render op */
+   if (obj->cur.render_op != obj->prev.render_op)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed color */
+   if ((obj->cur.color.r != obj->prev.color.r) ||
+       (obj->cur.color.g != obj->prev.color.g) ||
+       (obj->cur.color.b != obj->prev.color.b) ||
+       (obj->cur.color.a != obj->prev.color.a))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed geometry - and obviously not visibility or color */
+   /* caluclate differences since we have a constant color fill */
+   /* we really only need to update the differences */
+   if ((obj->cur.geometry.x != obj->prev.geometry.x) ||
+       (obj->cur.geometry.y != obj->prev.geometry.y) ||
+       (obj->cur.geometry.w != obj->prev.geometry.w) ||
+       (obj->cur.geometry.h != obj->prev.geometry.h) ||
+       (o->changed))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   done:
+   evas_object_render_pre_effect_updates(&rects, obj, is_v, was_v);
+}
+
+static void
+evas_object_polygon_render_post(Evas_Object *obj)
+{
+   Evas_Object_Polygon *o;
+
+   /* this moves the current data to the previous state parts of the object */
+   /* in whatever way is safest for the object. also if we don't need object */
+   /* data anymore we can free it if the object deems this is a good idea */
+   o = (Evas_Object_Polygon *)(obj->object_data);
+   /* remove those pesky changes */
+   while (obj->clip.changes)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)obj->clip.changes->data;
+       obj->clip.changes = evas_list_remove(obj->clip.changes, r);
+       free(r);
+     }
+   /* move cur to prev safely for object data */
+   obj->prev = obj->cur;
+   o->changed = 0;
+}
+
+static int
+evas_object_polygon_is_opaque(Evas_Object *obj)
+{
+   Evas_Object_Polygon *o;
+
+   /* this returns 1 if the internal object data implies that the object is */
+   /* currently fully opaque over the entire line it occupies */
+   o = (Evas_Object_Polygon *)(obj->object_data);
+   return 0;
+}
+
+static int
+evas_object_polygon_was_opaque(Evas_Object *obj)
+{
+   Evas_Object_Polygon *o;
+
+   /* this returns 1 if the internal object data implies that the object was */
+   /* previously fully opaque over the entire line it occupies */
+   o = (Evas_Object_Polygon *)(obj->object_data);
+   return 0;
+}
+
+static int
+evas_object_polygon_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   Evas_Object_Polygon *o;
+
+   /* this returns 1 if the canvas co-ordinates are inside the object based */
+   /* on object private data. not much use for rects, but for polys, images */
+   /* and other complex objects it might be */
+   o = (Evas_Object_Polygon *)(obj->object_data);
+   return 1;
+   x = 0;
+   y = 0;
+}
+
+static int
+evas_object_polygon_was_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y)
+{
+   Evas_Object_Polygon *o;
+
+   /* this returns 1 if the canvas co-ordinates were inside the object based */
+   /* on object private data. not much use for rects, but for polys, images */
+   /* and other complex objects it might be */
+   o = (Evas_Object_Polygon *)(obj->object_data);
+   return 1;
+   x = 0;
+   y = 0;
+}
diff --git a/src/lib/canvas/evas_object_rectangle.c b/src/lib/canvas/evas_object_rectangle.c
new file mode 100644 (file)
index 0000000..306877b
--- /dev/null
@@ -0,0 +1,376 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* private magic number for rectangle objects */
+static const char o_type[] = "rectangle";
+
+/* private struct for rectangle object internal data */
+typedef struct _Evas_Object_Rectangle      Evas_Object_Rectangle;
+
+struct _Evas_Object_Rectangle
+{
+   DATA32            magic;
+   void             *engine_data;
+};
+
+/* private methods for rectangle objects */
+static void evas_object_rectangle_init(Evas_Object *obj);
+static void *evas_object_rectangle_new(void);
+static void evas_object_rectangle_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
+static void evas_object_rectangle_free(Evas_Object *obj);
+static void evas_object_rectangle_render_pre(Evas_Object *obj);
+static void evas_object_rectangle_render_post(Evas_Object *obj);
+static int evas_object_rectangle_is_opaque(Evas_Object *obj);
+static int evas_object_rectangle_was_opaque(Evas_Object *obj);
+
+#if 0 /* usless calls for a rect object. much more useful for images etc. */
+static void evas_object_rectangle_store(Evas_Object *obj);
+static void evas_object_rectangle_unstore(Evas_Object *obj);
+static int evas_object_rectangle_is_visible(Evas_Object *obj);
+static int evas_object_rectangle_was_visible(Evas_Object *obj);
+static int evas_object_rectangle_is_inside(Evas_Object *obj, double x, double y);
+static int evas_object_rectangle_was_inside(Evas_Object *obj, double x, double y);
+#endif
+
+static const Evas_Object_Func object_func =
+{
+   /* methods (compulsory) */
+   evas_object_rectangle_free,
+     evas_object_rectangle_render,
+     evas_object_rectangle_render_pre,
+     evas_object_rectangle_render_post,
+   /* these are optional. NULL = nothing */
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     evas_object_rectangle_is_opaque,
+     evas_object_rectangle_was_opaque,
+     NULL,
+     NULL,
+     NULL
+};
+
+/* the actual api call to add a rect */
+/* it has no other api calls as all properties are standard */
+
+/**
+ * Adds a rectangle to the given evas.
+ * @param   e The given evas.
+ * @return  The new rectangle object.
+ * @todo Find a documentation group to put this under.
+ */
+EAPI Evas_Object *
+evas_object_rectangle_add(Evas *e)
+{
+   Evas_Object *obj;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   obj = evas_object_new();
+   evas_object_rectangle_init(obj);
+   evas_object_inject(obj, e);
+   return obj;
+}
+
+
+
+
+
+
+/* all nice and private */
+static void
+evas_object_rectangle_init(Evas_Object *obj)
+{
+   /* alloc image ob, setup methods and default values */
+   obj->object_data = evas_object_rectangle_new();
+   /* set up default settings for this kind of object */
+   obj->cur.color.r = 255;
+   obj->cur.color.g = 255;
+   obj->cur.color.b = 255;
+   obj->cur.color.a = 255;
+   obj->cur.geometry.x = 0;
+   obj->cur.geometry.y = 0;
+   obj->cur.geometry.w = 0;
+   obj->cur.geometry.h = 0;
+   obj->cur.layer = 0;
+   obj->cur.render_op = EVAS_RENDER_BLEND;
+   /* set up object-specific settings */
+   obj->prev = obj->cur;
+   /* set up methods (compulsory) */
+   obj->func = &object_func;
+   obj->type = o_type;
+}
+
+static void *
+evas_object_rectangle_new(void)
+{
+   Evas_Object_Rectangle *o;
+
+   /* alloc obj private data */
+   o = calloc(1, sizeof(Evas_Object_Rectangle));
+   o->magic = MAGIC_OBJ_RECTANGLE;
+   return o;
+}
+
+static void
+evas_object_rectangle_free(Evas_Object *obj)
+{
+   Evas_Object_Rectangle *o;
+
+   /* frees private object data. very simple here */
+   o = (Evas_Object_Rectangle *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Rectangle, MAGIC_OBJ_RECTANGLE);
+   return;
+   MAGIC_CHECK_END();
+   /* free obj */
+   o->magic = 0;
+   free(o);
+}
+
+static void
+evas_object_rectangle_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
+{
+   Evas_Object_Rectangle *o;
+
+   /* render object to surface with context, and offxet by x,y */
+   o = (Evas_Object_Rectangle *)(obj->object_data);
+   obj->layer->evas->engine.func->context_color_set(output,
+                                                   context,
+                                                   obj->cur.cache.clip.r,
+                                                   obj->cur.cache.clip.g,
+                                                   obj->cur.cache.clip.b,
+                                                   obj->cur.cache.clip.a);
+   obj->layer->evas->engine.func->context_multiplier_unset(output,
+                                                          context);
+   obj->layer->evas->engine.func->context_render_op_set(output, context,
+                                                       obj->cur.render_op);
+   obj->layer->evas->engine.func->rectangle_draw(output,
+                                                context,
+                                                surface,
+                                                obj->cur.geometry.x + x,
+                                                obj->cur.geometry.y + y,
+                                                obj->cur.geometry.w,
+                                                obj->cur.geometry.h);
+////                                            obj->cur.cache.geometry.x + x,
+////                                            obj->cur.cache.geometry.y + y,
+////                                            obj->cur.cache.geometry.w,
+////                                            obj->cur.cache.geometry.h);
+}
+
+static void
+evas_object_rectangle_render_pre(Evas_Object *obj)
+{
+   Evas_Rectangles rects = { 0, 0, NULL };
+   Evas_Object_Rectangle *o;
+   int is_v, was_v;
+
+   /* dont pre-render the obj twice! */
+   if (obj->pre_render_done) return;
+   obj->pre_render_done = 1;
+   /* pre-render phase. this does anything an object needs to do just before */
+   /* rendering. this could mean loading the image data, retrieving it from */
+   /* elsewhere, decoding video etc. */
+   /* then when this is done the object needs to figure if it changed and */
+   /* if so what and where and add the appropriate redraw rectangles */
+   o = (Evas_Object_Rectangle *)(obj->object_data);
+   /* if someone is clipping this obj - go calculate the clipper */
+   if (obj->cur.clipper)
+     {
+       if (obj->cur.cache.clip.dirty)
+         evas_object_clip_recalc(obj->cur.clipper);
+       obj->cur.clipper->func->render_pre(obj->cur.clipper);
+     }
+   /* now figure what changed and add draw rects */
+   /* if it just became visible or invisible */
+   is_v = evas_object_is_visible(obj);
+   was_v = evas_object_was_visible(obj);
+   if (is_v != was_v)
+     {
+       evas_object_render_pre_visible_change(&rects, obj, is_v, was_v);
+       goto done;
+     }
+   /* it's not visible - we accounted for it appearing or not so just abort */
+   if (!is_v) goto done;
+   /* clipper changed this is in addition to anything else for obj */
+   evas_object_render_pre_clipper_change(&rects, obj);
+   /* if we restacked (layer or just within a layer) and don't clip anyone */
+   if ((obj->restack) && (!obj->clip.clipees))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed render op */
+   if (obj->cur.render_op != obj->prev.render_op)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed color */
+   if ((obj->cur.color.r != obj->prev.color.r) ||
+       (obj->cur.color.g != obj->prev.color.g) ||
+       (obj->cur.color.b != obj->prev.color.b) ||
+       (obj->cur.color.a != obj->prev.color.a))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed geometry - and obviously not visibility or color */
+   /* caluclate differences since we have a constant color fill */
+   /* we really only need to update the differences */
+   if ((obj->cur.geometry.x != obj->prev.geometry.x) ||
+       (obj->cur.geometry.y != obj->prev.geometry.y) ||
+       (obj->cur.geometry.w != obj->prev.geometry.w) ||
+       (obj->cur.geometry.h != obj->prev.geometry.h))
+     {
+       evas_rects_return_difference_rects(&rects,
+                                          obj->cur.geometry.x,
+                                          obj->cur.geometry.y,
+                                          obj->cur.geometry.w,
+                                          obj->cur.geometry.h,
+                                          obj->prev.geometry.x,
+                                          obj->prev.geometry.y,
+                                          obj->prev.geometry.w,
+                                          obj->prev.geometry.h);
+////   rl = evas_rects_return_difference_rects(obj->cur.cache.geometry.x,
+////                                           obj->cur.cache.geometry.y,
+////                                           obj->cur.cache.geometry.w,
+////                                           obj->cur.cache.geometry.h,
+////                                           obj->prev.cache.geometry.x,
+////                                           obj->prev.cache.geometry.y,
+////                                           obj->prev.cache.geometry.w,
+////                                           obj->prev.cache.geometry.h);
+       goto done;
+     }
+   /* it obviously didn't change - add a NO obscure - this "unupdates"  this */
+   /* area so if there were updates for it they get wiped. don't do it if we */
+   /* arent fully opaque and we are visible */
+ /*   
+   if (evas_object_is_visible(obj) &&
+       evas_object_is_opaque(obj) &&
+       (!obj->clip.clipees))
+     obj->layer->evas->engine.func->output_redraws_rect_del(obj->layer->evas->engine.data.output,
+                                                           obj->cur.cache.clip.x,
+                                                           obj->cur.cache.clip.y,
+                                                           obj->cur.cache.clip.w,
+                                                           obj->cur.cache.clip.h);
+  */
+   done:
+   evas_object_render_pre_effect_updates(&rects, obj, is_v, was_v);
+}
+
+static void
+evas_object_rectangle_render_post(Evas_Object *obj)
+{
+   Evas_Object_Rectangle *o;
+
+   /* this moves the current data to the previous state parts of the object */
+   /* in whatever way is safest for the object. also if we don't need object */
+   /* data anymore we can free it if the object deems this is a good idea */
+   o = (Evas_Object_Rectangle *)(obj->object_data);
+   /* remove those pesky changes */
+   while (obj->clip.changes)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)obj->clip.changes->data;
+       obj->clip.changes = evas_list_remove(obj->clip.changes, r);
+       free(r);
+     }
+   /* move cur to prev safely for object data */
+   obj->prev = obj->cur;
+}
+
+static int
+evas_object_rectangle_is_opaque(Evas_Object *obj)
+{
+   Evas_Object_Rectangle *o;
+
+   /* this returns 1 if the internal object data implies that the object is */
+   /* currently fully opaque over the entire rectangle it occupies */
+   o = (Evas_Object_Rectangle *)(obj->object_data);
+   if (obj->cur.render_op == EVAS_RENDER_COPY)
+       return 1;
+   if (obj->cur.render_op != EVAS_RENDER_BLEND)
+       return 0;
+   return 1;
+}
+
+static int
+evas_object_rectangle_was_opaque(Evas_Object *obj)
+{
+   Evas_Object_Rectangle *o;
+
+   /* this returns 1 if the internal object data implies that the object was */
+   /* previously fully opaque over the entire rectangle it occupies */
+   o = (Evas_Object_Rectangle *)(obj->object_data);
+   if (obj->prev.render_op == EVAS_RENDER_COPY)
+       return 1;
+   if (obj->prev.render_op != EVAS_RENDER_BLEND)
+       return 0;
+   return 1;
+}
+
+#if 0 /* usless calls for a rect object. much more useful for images etc. */
+static void
+evas_object_rectangle_store(Evas_Object *obj)
+{
+   /* store... nothing for rectangle objects... it's a bit silly */
+   /* but for others that may have expensive caluclations to do to */
+   /* generate the object data, hint that they might want to be pre-calced */
+   /* once and stored */
+}
+
+static void
+evas_object_rectangle_unstore(Evas_Object *obj)
+{
+   /* store... nothing for rectangle objects... it's a bit silly */
+}
+
+static int
+evas_object_rectangle_is_visible(Evas_Object *obj)
+{
+   Evas_Object_Rectangle *o;
+
+   /* this returns 1 if the internal object data would imply that it is */
+   /* visible (ie drawing it draws something. this is not to do with events */
+   o = (Evas_Object_Rectangle *)(obj->object_data);
+   return 1;
+}
+
+static int
+evas_object_rectangle_was_visible(Evas_Object *obj)
+{
+   Evas_Object_Rectangle *o;
+
+   /* this returns 1 if the internal object data would imply that it was */
+   /* visible (ie drawing it draws something. this is not to do with events */
+   o = (Evas_Object_Rectangle *)(obj->object_data);
+   return 1;
+}
+
+static int
+evas_object_rectangle_is_inside(Evas_Object *obj, double x, double y)
+{
+   Evas_Object_Rectangle *o;
+
+   /* this returns 1 if the canvas co-ordinates are inside the object based */
+   /* on object private data. not much use for rects, but for polys, images */
+   /* and other complex objects it might be */
+   o = (Evas_Object_Rectangle *)(obj->object_data);
+   return 1;
+}
+
+static int
+evas_object_rectangle_was_inside(Evas_Object *obj, double x, double y)
+{
+   Evas_Object_Rectangle *o;
+
+   /* this returns 1 if the canvas co-ordinates were inside the object based */
+   /* on object private data. not much use for rects, but for polys, images */
+   /* and other complex objects it might be */
+   o = (Evas_Object_Rectangle *)(obj->object_data);
+   return 1;
+}
+#endif
diff --git a/src/lib/canvas/evas_object_smart.c b/src/lib/canvas/evas_object_smart.c
new file mode 100644 (file)
index 0000000..aaffd3e
--- /dev/null
@@ -0,0 +1,628 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+typedef struct _Evas_Object_Smart      Evas_Object_Smart;
+typedef struct _Evas_Smart_Callback    Evas_Smart_Callback;
+
+struct _Evas_Object_Smart
+{
+   DATA32            magic;
+   void             *engine_data;
+   void             *data;
+   Evas_List        *callbacks;
+   Evas_Object_List *contained;
+   int               walking_list;
+   Evas_Bool         deletions_waiting : 1;
+};
+
+struct _Evas_Smart_Callback
+{
+   const char *event;
+   void (*func) (void *data, Evas_Object *obj, void *event_info);
+   void *func_data;
+   char  delete_me : 1;
+};
+
+/* private methods for smart objects */
+static void evas_object_smart_callbacks_clear(Evas_Object *obj);
+static void evas_object_smart_init(Evas_Object *obj);
+static void *evas_object_smart_new(void);
+static void evas_object_smart_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
+static void evas_object_smart_free(Evas_Object *obj);
+static void evas_object_smart_render_pre(Evas_Object *obj);
+static void evas_object_smart_render_post(Evas_Object *obj);
+
+static const Evas_Object_Func object_func =
+{
+   /* methods (compulsory) */
+   evas_object_smart_free,
+     evas_object_smart_render,
+     evas_object_smart_render_pre,
+     evas_object_smart_render_post,
+     /* these are optional. NULL = nothing */
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL
+};
+
+/* public funcs */
+/**
+ * @defgroup Evas_Smart_Object_Group Evas Smart Object Functions
+ *
+ * Functions dealing with evas smart objects.
+ *
+ * Smart objects are groupings of primitive evas objects that behave as a
+ * cohesive group. For instance, a file manager icon may be a smart object
+ * composed of an image object, a text label and two rectangles that appear
+ * behind the image and text when the icon is selected. As a smart object,
+ * the normal evas api could be used on the icon object.
+ *
+ */
+/**
+ * Store a pointer to user data for a smart object.
+ *
+ * @param obj The smart object
+ * @param data A pointer to user data
+ * @ingroup Evas_Smart_Object_Group
+ */
+EAPI void
+evas_object_smart_data_set(Evas_Object *obj, void *data)
+{
+   Evas_Object_Smart *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Smart *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART);
+   return;
+   MAGIC_CHECK_END();
+   o->data = data;
+}
+
+/**
+ * Retrieve user data stored on a smart object.
+ *
+ * @param obj The smart object
+ * @return A pointer to data stored using evas_object_smart_data_set(), or 
+ *         NULL if none has been set.
+ * @ingroup Evas_Smart_Object_Group
+ */
+EAPI void *
+evas_object_smart_data_get(const Evas_Object *obj)
+{
+   Evas_Object_Smart *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Smart *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART);
+   return NULL;
+   MAGIC_CHECK_END();
+   return o->data;
+}
+
+/**
+ * Get the Evas_Smart from which @p obj was created.
+ *
+ * @param obj a smart object
+ * @return the Evas_Smart
+ * @ingroup Evas_Smart_Object_Group
+ */
+EAPI Evas_Smart *
+evas_object_smart_smart_get(const Evas_Object *obj)
+{
+   Evas_Object_Smart *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Smart *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART);
+   return NULL;
+   MAGIC_CHECK_END();
+   return obj->smart.smart;
+}
+
+/**
+ * Set an evas object as a member of a smart object.
+ *
+ * @param obj The member object
+ * @param smart_obj The smart object
+ *
+ * Members will automatically be stacked and layered with the smart object. 
+ * The various stacking function will operate on members relative to the
+ * other members instead of the entire canvas.
+ *
+ * Non-member objects can not interleave a smart object's members.
+ *
+ * @ingroup Evas_Smart_Object_Group
+ */
+EAPI void
+evas_object_smart_member_add(Evas_Object *obj, Evas_Object *smart_obj)
+{
+   Evas_Object_Smart *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   MAGIC_CHECK(smart_obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Smart *)(smart_obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART);
+   return;
+   MAGIC_CHECK_END();
+
+   if (obj->delete_me)
+     {
+       printf("EVAS ERROR: Adding deleted object %p to smart obj %p\n", obj, smart_obj);
+       abort();
+       return;
+     }
+   if (smart_obj->delete_me)
+     {
+       printf("EVAS ERROR: Adding object %p to deleted smart obj %p\n", obj, smart_obj);
+       abort();
+       return;
+     }
+   if (obj->smart.parent == smart_obj) return;
+   
+   if (obj->smart.parent) evas_object_smart_member_del(obj);
+   
+   evas_object_release(obj, 1);
+   obj->layer = smart_obj->layer;
+   obj->cur.layer = obj->layer->layer;
+   obj->layer->usage++;
+   obj->smart.parent = smart_obj;
+   o->contained = evas_object_list_append(o->contained, obj);
+   evas_object_smart_member_cache_invalidate(obj);
+   obj->restack = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Removes a member object from a smart object.
+ *
+ * @param obj the member object
+ * @ingroup Evas_Smart_Object_Group
+ *
+ * This removes a member object from a smart object. The object will still
+ * be on the canvas, but no longer associated with whichever smart object
+ * it was associated with.
+ *
+ */
+EAPI void
+evas_object_smart_member_del(Evas_Object *obj)
+{
+   Evas_Object_Smart *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+
+   if (!obj->smart.parent) return;
+
+   o = (Evas_Object_Smart *)(obj->smart.parent->object_data);
+   o->contained = evas_object_list_remove(o->contained, obj);
+   obj->smart.parent = NULL;
+   evas_object_smart_member_cache_invalidate(obj);
+   obj->layer->usage--;
+   obj->cur.layer = obj->layer->layer;
+   evas_object_inject(obj, obj->layer->evas);
+   obj->restack = 1;
+   evas_object_change(obj);
+}
+
+/**
+ * Gets the smart parent of an Evas_Object
+ * @param obj the Evas_Object you want to get the parent
+ * @return Returns the smart parent of @a obj, or NULL if @a obj is not a smart member of another Evas_Object
+ * @ingroup Evas_Smart_Object_Group
+ */
+EAPI Evas_Object *
+evas_object_smart_parent_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   
+   return obj->smart.parent;
+}
+
+/**
+ * Gets the list of the member objects of an Evas_Object
+ * @param obj the Evas_Object you want to get the list of member objects
+ * @return Returns the list of the member objects of @a obj.
+ * The returned list should be freed with evas_list_free() when you no longer need it
+ */
+EAPI Evas_List *
+evas_object_smart_members_get(const Evas_Object *obj)
+{
+   Evas_Object_Smart *o;
+   Evas_List *members;
+   Evas_Object_List *member;
+   
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Smart *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART);
+   return NULL;
+   MAGIC_CHECK_END();
+
+   members = NULL;
+   for (member = o->contained; member; member = member->next)
+      members = evas_list_append(members, member);
+   
+   return members;
+}
+
+const Evas_Object_List *
+evas_object_smart_members_get_direct(const Evas_Object *obj)
+{
+   Evas_Object_Smart *o;
+
+   o = (Evas_Object_Smart *)(obj->object_data);
+   return o->contained;
+}
+
+/**
+ * Instantiates a new smart object described by @p s.
+ *
+ * @param e the evas on which to add the object
+ * @param s the Evas_Smart describing the smart object
+ * @return a new Evas_Object
+ * @ingroup Evas_Smart_Object_Group
+ */
+EAPI Evas_Object *
+evas_object_smart_add(Evas *e, Evas_Smart *s)
+{
+   Evas_Object *obj;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   MAGIC_CHECK(s, Evas_Smart, MAGIC_SMART);
+   return NULL;
+   MAGIC_CHECK_END();
+
+   obj = evas_object_new();
+   if (!obj) return NULL;
+   obj->smart.smart = s;
+   obj->type = s->smart_class->name;
+   evas_object_smart_init(obj);
+   evas_object_inject(obj, e);
+
+   evas_object_smart_use(s);
+
+   if (s->smart_class->add) s->smart_class->add(obj);
+
+   return obj;
+}
+
+/**
+ * Add a callback for the smart event specified by @p event.
+ *
+ * @param obj a smart object
+ * @param event the event name
+ * @param func the callback function
+ * @param data user data to be passed to the callback function
+ * @ingroup Evas_Smart_Object_Group
+ */
+EAPI void
+evas_object_smart_callback_add(Evas_Object *obj, const char *event, void (*func) (void *data, Evas_Object *obj, void *event_info), const void *data)
+{
+   Evas_Object_Smart *o;
+   Evas_Smart_Callback *cb;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Smart *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART);
+   return;
+   MAGIC_CHECK_END();
+   if (!event) return;
+   if (!func) return;
+   cb = calloc(1, sizeof(Evas_Smart_Callback));
+   cb->event = evas_stringshare_add(event);
+   cb->func = func;
+   cb->func_data = (void *)data;
+   o->callbacks = evas_list_prepend(o->callbacks, cb);
+}
+
+/**
+ * Remove a smart callback
+ *
+ * Removes a callback that was added by evas_object_smart_callback_add()
+ *
+ * @param obj a smart object
+ * @param event the event name
+ * @param func the callback function
+ * @return the data pointer
+ * @ingroup Evas_Smart_Object_Group
+ */
+EAPI void *
+evas_object_smart_callback_del(Evas_Object *obj, const char *event, void (*func) (void *data, Evas_Object *obj, void *event_info))
+{
+   Evas_Object_Smart *o;
+   Evas_List *l;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Smart *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!event) return NULL;
+   for (l = o->callbacks; l; l = l->next)
+     {
+       Evas_Smart_Callback *cb;
+
+       cb = l->data;
+       if ((!strcmp(cb->event, event)) && (cb->func == func))
+         {
+            void *data;
+
+            data = cb->func_data;
+            cb->delete_me = 1;
+            o->deletions_waiting = 1;
+            evas_object_smart_callbacks_clear(obj);
+            return data;
+         }
+     }
+   return NULL;
+}
+
+/**
+ * Call any smart callbacks on @p obj for @p event.
+ *
+ * @param obj the smart object
+ * @param event the event name
+ * @param event_info an event specific struct of info to pass to the callback
+ *
+ * This should be called internally in the smart object when some specific
+ * event has occured. The documentation for the smart object should include
+ * a list of possible events and what type of @p event_info to expect.
+ *
+ * @ingroup Evas_Smart_Object_Group
+ */
+EAPI void
+evas_object_smart_callback_call(Evas_Object *obj, const char *event, void *event_info)
+{
+   Evas_Object_Smart *o;
+   Evas_List *l;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Smart *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART);
+   return;
+   MAGIC_CHECK_END();
+   if (!event) return;
+   if (obj->delete_me) return;
+   o->walking_list++;
+   for (l = o->callbacks; l; l = l->next)
+     {
+       Evas_Smart_Callback *cb;
+
+       cb = l->data;
+       if (!cb->delete_me)
+         {
+            if (!strcmp(cb->event, event))
+              cb->func(cb->func_data, obj, event_info);
+         }
+       if (obj->delete_me)
+         break;
+     }
+   o->walking_list--;
+   evas_object_smart_callbacks_clear(obj);
+}
+
+/* internal calls */
+static void
+evas_object_smart_callbacks_clear(Evas_Object *obj)
+{
+   Evas_Object_Smart *o;
+   Evas_List *l;
+
+   o = (Evas_Object_Smart *)(obj->object_data);
+
+   if (o->walking_list) return;
+   if (!o->deletions_waiting) return;
+   for (l = o->callbacks; l;)
+     {
+       Evas_Smart_Callback *cb;
+
+       cb = l->data;
+       l = l->next;
+       if (cb->delete_me)
+         {
+            o->callbacks = evas_list_remove(o->callbacks, cb);
+            if (cb->event) evas_stringshare_del(cb->event);
+            free(cb);
+         }
+     }
+}
+
+void
+evas_object_smart_del(Evas_Object *obj)
+{
+   Evas_Smart *s;
+
+   s = obj->smart.smart;
+   if (obj->delete_me) return;
+   if ((s) && (s->smart_class->del)) s->smart_class->del(obj);
+   if (obj->smart.parent) evas_object_smart_member_del(obj);
+   if (s) evas_object_smart_unuse(s);
+}
+
+void
+evas_object_smart_cleanup(Evas_Object *obj)
+{
+   Evas_Object_Smart *o;
+
+   if (obj->smart.parent)
+     evas_object_smart_member_del(obj);
+
+   o = (Evas_Object_Smart *)(obj->object_data);
+   if (o->magic == MAGIC_OBJ_SMART)
+     {
+       while (o->contained)
+         evas_object_smart_member_del((Evas_Object *)o->contained);
+
+       while (o->callbacks)
+         {
+            Evas_Smart_Callback *cb;
+
+            cb = o->callbacks->data;
+            o->callbacks = evas_list_remove(o->callbacks, cb);
+            if (cb->event) evas_stringshare_del(cb->event);
+            free(cb);
+         }
+
+       o->data = NULL;
+     }
+
+   obj->smart.parent = NULL;
+   obj->smart.smart = NULL;
+}
+
+void
+evas_object_smart_member_cache_invalidate(Evas_Object *obj)
+{
+   Evas_Object_Smart *o;
+   Evas_Object_List *l;
+
+   o = (Evas_Object_Smart *)(obj->object_data);
+   if (o->magic != MAGIC_OBJ_SMART)
+     return;
+
+   obj->parent_cache_valid = 0;
+   for (l = o->contained; l; l = l->next)
+     {
+       Evas_Object *obj2;
+       
+       obj2 = (Evas_Object *)l;
+       evas_object_smart_member_cache_invalidate(obj2);
+     }
+}
+
+void
+evas_object_smart_member_raise(Evas_Object *member)
+{
+   Evas_Object_Smart *o;
+
+   o = (Evas_Object_Smart *)(member->smart.parent->object_data);
+   o->contained = evas_object_list_remove(o->contained, member);
+   o->contained = evas_object_list_append(o->contained, member);
+}
+
+void
+evas_object_smart_member_lower(Evas_Object *member)
+{
+   Evas_Object_Smart *o;
+
+   o = (Evas_Object_Smart *)(member->smart.parent->object_data);
+   o->contained = evas_object_list_remove(o->contained, member);
+   o->contained = evas_object_list_prepend(o->contained, member);
+}
+
+void
+evas_object_smart_member_stack_above(Evas_Object *member, Evas_Object *other)
+{
+   Evas_Object_Smart *o;
+
+   o = (Evas_Object_Smart *)(member->smart.parent->object_data);
+   o->contained = evas_object_list_remove(o->contained, member);
+   o->contained = evas_object_list_append_relative(o->contained, member, other);
+}
+
+void
+evas_object_smart_member_stack_below(Evas_Object *member, Evas_Object *other)
+{
+   Evas_Object_Smart *o;
+
+   o = (Evas_Object_Smart *)(member->smart.parent->object_data);
+   o->contained = evas_object_list_remove(o->contained, member);
+   o->contained = evas_object_list_prepend_relative(o->contained, member, other);
+}
+
+/* all nice and private */
+static void
+evas_object_smart_init(Evas_Object *obj)
+{
+   /* alloc smart obj, setup methods and default values */
+   obj->object_data = evas_object_smart_new();
+   /* set up default settings for this kind of object */
+   obj->cur.color.r = 255;
+   obj->cur.color.g = 255;
+   obj->cur.color.b = 255;
+   obj->cur.color.a = 255;
+   obj->cur.geometry.x = 0;
+   obj->cur.geometry.y = 0;
+   obj->cur.geometry.w = 0;
+   obj->cur.geometry.h = 0;
+   obj->cur.layer = 0;
+   /* set up object-specific settings */
+   obj->prev = obj->cur;
+   /* set up methods (compulsory) */
+   obj->func = &object_func;
+}
+
+static void *
+evas_object_smart_new(void)
+{
+   Evas_Object_Smart *o;
+
+   /* alloc obj private data */
+   o = calloc(1, sizeof(Evas_Object_Smart));
+   o->magic = MAGIC_OBJ_SMART;
+   return o;
+}
+
+static void
+evas_object_smart_free(Evas_Object *obj)
+{
+   Evas_Object_Smart *o;
+
+   /* frees private object data. very simple here */
+   o = (Evas_Object_Smart *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Smart, MAGIC_OBJ_SMART);
+   return;
+   MAGIC_CHECK_END();
+   /* free obj */
+   o->magic = 0;
+   free(o);
+}
+
+static void
+evas_object_smart_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
+{
+   return;
+   obj = output = context = surface = NULL;
+   x = y = 0;
+}
+
+static void
+evas_object_smart_render_pre(Evas_Object *obj)
+{
+   if (obj->pre_render_done) return;
+   obj->pre_render_done = 1;
+}
+
+static void
+evas_object_smart_render_post(Evas_Object *obj)
+{
+   obj->prev = obj->cur;
+}
diff --git a/src/lib/canvas/evas_object_text.c b/src/lib/canvas/evas_object_text.c
new file mode 100644 (file)
index 0000000..55a9648
--- /dev/null
@@ -0,0 +1,1740 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* save typing */
+#define ENFN obj->layer->evas->engine.func
+#define ENDT obj->layer->evas->engine.data.output
+
+/* private magic number for text objects */
+static const char o_type[] = "text";
+
+/* private struct for text object internal data */
+typedef struct _Evas_Object_Text      Evas_Object_Text;
+
+struct _Evas_Object_Text
+{
+   DATA32               magic;
+
+   struct {
+      const char       *text;
+      const char       *font;
+      const char       *source;
+      Evas_Font_Size    size;
+      struct {
+        unsigned char  r, g, b, a;
+      } outline, shadow, glow, glow2;
+
+      unsigned char     style;
+   } cur, prev;
+
+   float                ascent, descent;
+   float                max_ascent, max_descent;
+
+   void                *engine_data;
+   
+   char                 changed : 1;
+};
+
+/* private methods for text objects */
+static void evas_object_text_init(Evas_Object *obj);
+static void *evas_object_text_new(void);
+static void evas_object_text_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
+static void evas_object_text_free(Evas_Object *obj);
+static void evas_object_text_render_pre(Evas_Object *obj);
+static void evas_object_text_render_post(Evas_Object *obj);
+
+static int evas_object_text_is_opaque(Evas_Object *obj);
+static int evas_object_text_was_opaque(Evas_Object *obj);
+
+static const Evas_Object_Func object_func =
+{
+   /* methods (compulsory) */
+   evas_object_text_free,
+     evas_object_text_render,
+     evas_object_text_render_pre,
+     evas_object_text_render_post,
+   /* these are optional. NULL = nothing */
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     evas_object_text_is_opaque,
+     evas_object_text_was_opaque,
+     NULL,
+     NULL,
+     NULL
+};
+
+/* the actual api call to add a rect */
+/* it has no other api calls as all properties are standard */
+
+/**
+ * Creates a new text @c Evas_Object on the provided @c Evas canvas.
+ *
+ * @param e The @c Evas canvas to create the text object upon.
+ *
+ * @see evas_object_text_font_source_set
+ * @see evas_object_text_font_set
+ * @see evas_object_text_text_set
+ *
+ * @returns NULL on error, A pointer to a new @c Evas_Object on success.
+ */
+EAPI Evas_Object *
+evas_object_text_add(Evas *e)
+{
+   Evas_Object *obj;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   obj = evas_object_new();
+   evas_object_text_init(obj);
+   evas_object_inject(obj, e);
+   return obj;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_font_source_set(Evas_Object *obj, const char *font_source)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   
+   if ((o->cur.source) && (font_source) &&
+       (!strcmp(o->cur.source, font_source)))
+     return;
+   if (o->cur.source) evas_stringshare_del(o->cur.source);
+   if (font_source) o->cur.source = evas_stringshare_add(font_source);
+   else o->cur.source = NULL;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI const char *
+evas_object_text_font_source_get(const Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return NULL;
+   MAGIC_CHECK_END();
+   return o->cur.source;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_font_set(Evas_Object *obj, const char *font, Evas_Font_Size size)
+{
+   Evas_Object_Text *o;
+   int l = 0, r = 0, t = 0, b = 0;
+   int is, was = 0, pass = 0;
+   int same_font = 0;
+
+   if (!font) return;
+   if (size <= 0) return;
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   
+   if ((o->cur.font) && (font) && (!strcmp(o->cur.font, font)))
+     {
+       same_font = 1;
+       if (size == o->cur.size) return;
+     }
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       pass = evas_event_passes_through(obj);
+       if (!pass)
+         was = evas_object_is_in_output_rect(obj,
+                                             obj->layer->evas->pointer.x,
+                                             obj->layer->evas->pointer.y, 1, 1);
+     }
+   /* DO IT */
+   if (o->engine_data)
+     {
+       evas_font_free(obj->layer->evas, o->engine_data);
+       o->engine_data = NULL;
+     }
+   o->engine_data = evas_font_load(obj->layer->evas, font, o->cur.source, size);
+   if (!same_font)
+     {
+       if (o->cur.font) evas_stringshare_del(o->cur.font);
+       if (font) o->cur.font = evas_stringshare_add(font);
+       else o->cur.font = NULL;
+       o->prev.font = NULL;
+     }
+   o->cur.size = size;
+   evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
+   if ((o->engine_data) && (o->cur.text))
+     {
+       int w, h;
+
+       ENFN->font_string_size_get(ENDT,
+                                  o->engine_data,
+                                  o->cur.text,
+                                  &w, &h);
+       o->ascent = ENFN->font_ascent_get(ENDT, o->engine_data);
+       o->descent = ENFN->font_descent_get(ENDT, o->engine_data);
+       o->max_ascent = ENFN->font_max_ascent_get(ENDT, o->engine_data);
+       o->max_descent = ENFN->font_max_descent_get(ENDT, o->engine_data);
+       obj->cur.geometry.w = w + l + r;
+       obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
+////        obj->cur.cache.geometry.validity = 0;
+     }
+   else
+     {
+       if (o->engine_data)
+         {
+            o->ascent = ENFN->font_ascent_get(ENDT, o->engine_data);
+            o->descent = ENFN->font_descent_get(ENDT, o->engine_data);
+            o->max_ascent = ENFN->font_max_ascent_get(ENDT, o->engine_data);
+            o->max_descent = ENFN->font_max_descent_get(ENDT, o->engine_data);
+         }
+       else
+         {
+            o->ascent = 0;
+            o->descent = 0;
+            o->max_ascent = 0;
+            o->max_descent = 0;
+         }
+       obj->cur.geometry.w = 0;
+       obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
+////   obj->cur.cache.geometry.validity = 0;
+     }
+   o->changed = 1;
+   evas_object_change(obj);
+   evas_object_coords_recalc(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       if (!pass)
+         {
+            is = evas_object_is_in_output_rect(obj,
+                                               obj->layer->evas->pointer.x,
+                                               obj->layer->evas->pointer.y, 1, 1);
+            if ((is ^ was) && obj->cur.visible)
+              evas_event_feed_mouse_move(obj->layer->evas,
+                                         obj->layer->evas->pointer.x,
+                                         obj->layer->evas->pointer.y,
+                                         obj->layer->evas->last_timestamp,
+                                         NULL);
+         }
+     }
+   evas_object_inform_call_resize(obj);
+}
+
+/**
+ * Query evas for font information of a text @c Evas_Object.
+ *
+ * This function allows the font name and size of a text @c Evas_Object as
+ * created with evas_object_text_add() to be queried. Be aware that the font
+ * name string is still owned by Evas and should NOT have free() called on
+ * it by the caller of the function.
+ * 
+ * @param obj  The evas text object to query for font information.
+ * @param font A pointer to the location to store the font name in (may be NULL).
+ * @param size A pointer to the location to store the font size in (may be NULL).
+ */
+EAPI void
+evas_object_text_font_get(const Evas_Object *obj, const char **font, Evas_Font_Size *size)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   if (font) *font = "";
+   if (size) *size = 0;
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   if (font) *font = "";
+   if (size) *size = 0;
+   return;
+   MAGIC_CHECK_END();
+   if (font) *font = o->cur.font;
+   if (size) *size = o->cur.size;
+}
+
+/**
+ * Sets the text to be displayed by the given evas text object.
+ * @param obj  Evas text object.
+ * @param text Text to display.
+ */
+EAPI void
+evas_object_text_text_set(Evas_Object *obj, const char *text)
+{
+   Evas_Object_Text *o;
+   int is, was;
+
+   if (!text) text = "";
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   if ((o->cur.text) && (text) && (!strcmp(o->cur.text, text))) return;
+   was = evas_object_is_in_output_rect(obj,
+                                      obj->layer->evas->pointer.x,
+                                      obj->layer->evas->pointer.y, 1, 1);
+   /* DO II */
+   if (o->cur.text) evas_stringshare_del(o->cur.text);
+   if ((text) && (*text)) o->cur.text = evas_stringshare_add(text);
+   else o->cur.text = NULL;
+   o->prev.text = NULL;
+   if ((o->engine_data) && (o->cur.text))
+     {
+       int w, h;
+       int l = 0, r = 0, t = 0, b = 0;
+
+       ENFN->font_string_size_get(ENDT,
+                                  o->engine_data,
+                                  o->cur.text,
+                                  &w, &h);
+       evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
+       obj->cur.geometry.w = w + l + r;
+        obj->cur.geometry.h = h + t + b;
+////        obj->cur.cache.geometry.validity = 0;
+     }
+   else
+     {
+       int t = 0, b = 0;
+
+       evas_text_style_pad_get(o->cur.style, NULL, NULL, &t, &b);
+       obj->cur.geometry.w = 0;
+        obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
+////        obj->cur.cache.geometry.validity = 0;
+     }
+   o->changed = 1;
+   evas_object_change(obj);
+   evas_object_coords_recalc(obj);
+   is = evas_object_is_in_output_rect(obj,
+                                     obj->layer->evas->pointer.x,
+                                     obj->layer->evas->pointer.y, 1, 1);
+   if ((is || was) && obj->cur.visible)
+     evas_event_feed_mouse_move(obj->layer->evas,
+                               obj->layer->evas->pointer.x,
+                               obj->layer->evas->pointer.y,
+                               obj->layer->evas->last_timestamp,
+                               NULL);
+   evas_object_inform_call_resize(obj);
+}
+
+/**
+ * Retrieves the text currently being displayed by the given evas text object.
+ * @param  obj The given evas text object.
+ * @return The text currently being displayed.  Do not free it.
+ */
+EAPI const char *
+evas_object_text_text_get(const Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return NULL;
+   MAGIC_CHECK_END();
+   return o->cur.text;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Coord
+evas_object_text_ascent_get(const Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->ascent;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Coord
+evas_object_text_descent_get(const Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->descent;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Coord
+evas_object_text_max_ascent_get(const Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->max_ascent;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Coord
+evas_object_text_max_descent_get(const Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return 0;
+   MAGIC_CHECK_END();
+   return o->max_descent;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Coord
+evas_object_text_inset_get(const Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return 0;
+   MAGIC_CHECK_END();
+   if (!o->engine_data) return 0;
+   if (!o->cur.text) return 0;
+   return ENFN->font_inset_get(ENDT, o->engine_data, o->cur.text);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Coord
+evas_object_text_horiz_advance_get(const Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return 0;
+   MAGIC_CHECK_END();
+   if (!o->engine_data) return 0;
+   if (!o->cur.text) return 0;
+   return ENFN->font_h_advance_get(ENDT, o->engine_data, o->cur.text);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Coord
+evas_object_text_vert_advance_get(const Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return 0;
+   MAGIC_CHECK_END();
+   if (!o->engine_data) return 0;
+   if (!o->cur.text) return o->ascent + o->descent;
+   return ENFN->font_v_advance_get(ENDT, o->engine_data, o->cur.text);
+}
+
+/**
+ * Retrieve position and dimension information of a character within a text @c Evas_Object.
+ *
+ * This function is used to obtain the X, Y, width and height of a the character
+ * located at @p pos within the @c Evas_Object @p obj. @p obj must be a text object
+ * as created with evas_object_text_add(). Any of the @c Evas_Coord parameters (@p cx,
+ * @p cy, @p cw, @p ch) may be NULL in which case no value will be assigned to that
+ * parameter.
+ *
+ * @param obj  The text object to retrieve position information for.
+ * @param pos  The character position to request co-ordinates for.
+ * @param cx   A pointer to an @c Evas_Coord to store the X value in (can be NULL).
+ * @param cy   A pointer to an @c Evas_Coord to store the Y value in (can be NULL).
+ * @param cw   A pointer to an @c Evas_Coord to store the Width value in (can be NULL).
+ * @param ch   A pointer to an @c Evas_Coord to store the Height value in (can be NULL).
+ *
+ * @returns 0 on error, 1 on success.
+ */
+EAPI int
+evas_object_text_char_pos_get(const Evas_Object *obj, int pos, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
+{
+   Evas_Object_Text *o;
+   int l = 0, r = 0, t = 0, b = 0;
+   int ret, x = 0, y = 0, w = 0, h = 0;
+   int inset;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return 0;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return 0;
+   MAGIC_CHECK_END();
+   if (!o->engine_data) return 0;
+   if (!o->cur.text) return 0;
+   inset =
+     ENFN->font_inset_get(ENDT, o->engine_data, o->cur.text);
+   ret = ENFN->font_char_coords_get(ENDT, o->engine_data, o->cur.text,
+                                                            pos,
+                                                            &x, &y,
+                                                            &w, &h);
+   evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
+   y += o->max_ascent - t;
+   x -= inset + l;
+   if (x < 0)
+     {
+       w += x;
+       x = 0;
+     }
+   if (x + w > obj->cur.geometry.w) w = obj->cur.geometry.w - x;
+   if (w < 0) w = 0;
+   if (y < 0)
+     {
+       h += y;
+       y = 0;
+     }
+   if (y + h > obj->cur.geometry.h) h = obj->cur.geometry.h - y;
+   if (h < 0) h = 0;
+   if (cx) *cx = x;
+   if (cy) *cy = y;
+   if (cw) *cw = w + l + r;
+   if (ch) *ch = h + t + b;
+   return ret;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI int
+evas_object_text_char_coords_get(const Evas_Object *obj, Evas_Coord x, Evas_Coord y, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
+{
+   Evas_Object_Text *o;
+   int l = 0, r = 0, t = 0, b = 0;
+   int ret, rx = 0, ry = 0, rw = 0, rh = 0;
+   int inset;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return -1;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return -1;
+   MAGIC_CHECK_END();
+   if (!o->engine_data) return -1;
+   if (!o->cur.text) return -1;
+   inset =
+     ENFN->font_inset_get(ENDT, o->engine_data, o->cur.text);
+   ret = ENFN->font_char_at_coords_get(ENDT,
+                                      o->engine_data,
+                                      o->cur.text,
+                                      x + inset,
+                                      y - o->max_ascent,
+                                      &rx, &ry,
+                                      &rw, &rh);
+   evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
+   ry += o->max_ascent - t;
+   rx -= inset + l;
+   if (rx < 0)
+     {
+       rw += rx;
+       rx = 0;
+     }
+   if (rx + rw > obj->cur.geometry.w) rw = obj->cur.geometry.w - rx;
+   if (rw < 0) rw = 0;
+   if (ry < 0)
+     {
+       rh += ry;
+       ry = 0;
+     }
+   if (ry + rh > obj->cur.geometry.h) rh = obj->cur.geometry.h - ry;
+   if (rh < 0) rh = 0;
+   if (cx) *cx = rx;
+   if (cy) *cy = ry;
+   if (cw) *cw = rw + l + r;
+   if (ch) *ch = rh + t + b;
+   return ret;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_style_set(Evas_Object *obj, Evas_Text_Style_Type style)
+{
+   Evas_Object_Text *o;
+   int pl = 0, pr = 0, pt = 0, pb = 0, l = 0, r = 0, t = 0, b = 0;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   if (o->cur.style == style)
+     return;
+   evas_text_style_pad_get(o->cur.style, &pl, &pr, &pt, &pb);
+   o->cur.style = style;
+   evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
+   if (o->cur.text)
+     obj->cur.geometry.w += (l - pl) + (r - pr);
+   else
+     obj->cur.geometry.w = 0;
+   obj->cur.geometry.h += (t - pt) + (b - pb);
+   evas_object_change(obj);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_Text_Style_Type
+evas_object_text_style_get(const Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return EVAS_TEXT_STYLE_PLAIN;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return EVAS_TEXT_STYLE_PLAIN;
+   MAGIC_CHECK_END();
+   return o->cur.style;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_shadow_color_set(Evas_Object *obj, int r, int g, int b, int a)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   if ((o->cur.shadow.r == r) && (o->cur.shadow.g == g) &&
+       (o->cur.shadow.b == b) && (o->cur.shadow.a == a))
+     return;
+   o->cur.shadow.r = r;
+   o->cur.shadow.g = g;
+   o->cur.shadow.b = b;
+   o->cur.shadow.a = a;
+   evas_object_change(obj);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_shadow_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   if (r) *r = o->cur.shadow.r;
+   if (g) *g = o->cur.shadow.g;
+   if (b) *b = o->cur.shadow.b;
+   if (a) *a = o->cur.shadow.a;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_glow_color_set(Evas_Object *obj, int r, int g, int b, int a)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   if ((o->cur.glow.r == r) && (o->cur.glow.g == g) &&
+       (o->cur.glow.b == b) && (o->cur.glow.a == a))
+     return;
+   o->cur.glow.r = r;
+   o->cur.glow.g = g;
+   o->cur.glow.b = b;
+   o->cur.glow.a = a;
+   evas_object_change(obj);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_glow_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   if (r) *r = o->cur.glow.r;
+   if (g) *g = o->cur.glow.g;
+   if (b) *b = o->cur.glow.b;
+   if (a) *a = o->cur.glow.a;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_glow2_color_set(Evas_Object *obj, int r, int g, int b, int a)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   if ((o->cur.glow2.r == r) && (o->cur.glow2.g == g) &&
+       (o->cur.glow2.b == b) && (o->cur.glow2.a == a))
+     return;
+   o->cur.glow2.r = r;
+   o->cur.glow2.g = g;
+   o->cur.glow2.b = b;
+   o->cur.glow2.a = a;
+   evas_object_change(obj);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_glow2_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   if (r) *r = o->cur.glow2.r;
+   if (g) *g = o->cur.glow2.g;
+   if (b) *b = o->cur.glow2.b;
+   if (a) *a = o->cur.glow2.a;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_outline_color_set(Evas_Object *obj, int r, int g, int b, int a)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   if ((o->cur.outline.r == r) && (o->cur.outline.g == g) &&
+       (o->cur.outline.b == b) && (o->cur.outline.a == a))
+     return;
+   o->cur.outline.r = r;
+   o->cur.outline.g = g;
+   o->cur.outline.b = b;
+   o->cur.outline.a = a;
+   evas_object_change(obj);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_outline_color_get(const Evas_Object *obj, int *r, int *g, int *b, int *a)
+{
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   if (r) *r = o->cur.outline.r;
+   if (g) *g = o->cur.outline.g;
+   if (b) *b = o->cur.outline.b;
+   if (a) *a = o->cur.outline.a;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_object_text_style_pad_get(const Evas_Object *obj, int *l, int *r, int *t, int *b)
+{
+   int sl = 0, sr = 0, st = 0, sb = 0;
+   Evas_Object_Text *o;
+
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   /* use temps to be certain we have initialized values */
+   evas_text_style_pad_get(o->cur.style, &sl, &sr, &st, &sb);
+   if (l) *l = sl;
+   if (r) *r = sr;
+   if (t) *t = st;
+   if (b) *b = sb;
+}
+
+
+/**
+ * @defgroup Evas_Font_Path_Group Font Path Functions
+ *
+ * Functions that edit the paths being used to load fonts.
+ */
+
+/**
+ * Removes all font paths loaded into memory for the given evas.
+ * @param   e The given evas.
+ * @ingroup Evas_Font_Path_Group
+ */
+EAPI void
+evas_font_path_clear(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   while (e->font_path)
+     {
+       evas_stringshare_del(e->font_path->data);
+       e->font_path = evas_list_remove(e->font_path, e->font_path->data);
+     }
+}
+
+/**
+ * Appends a font path to the list of font paths used by the given evas.
+ * @param   e    The given evas.
+ * @param   path The new font path.
+ * @ingroup Evas_Font_Path_Group
+ */
+EAPI void
+evas_font_path_append(Evas *e, const char *path)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   if (!path) return;
+
+   e->font_path = evas_list_append(e->font_path, evas_stringshare_add(path));
+}
+
+/**
+ * Prepends a font path to the list of font paths used by the given evas.
+ * @param   e The given evas.
+ * @param   path The new font path.
+ * @ingroup Evas_Font_Path_Group
+ */
+EAPI void
+evas_font_path_prepend(Evas *e, const char *path)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   
+   if (!path) return;
+   e->font_path = evas_list_prepend(e->font_path, evas_stringshare_add(path));
+}
+
+/**
+ * Retrieves the list of font paths used by the given evas.
+ * @param   e The given evas.
+ * @return  The list of font paths used.
+ * @ingroup Evas_Font_Path_Group
+ */
+EAPI const Evas_List *
+evas_font_path_list(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   return e->font_path;
+}
+
+static void
+evas_font_object_rehint(Evas_Object *obj)
+{
+   if (obj->smart.smart)
+     {
+       const Evas_Object_List *l3;
+       
+       for (l3 = evas_object_smart_members_get_direct(obj); l3; l3 = l3->next)
+         {
+            obj = (Evas_Object *)l3;
+            evas_font_object_rehint(obj);
+         }
+     }
+   else
+     {
+       if (!strcmp(obj->type, "text"))
+         _evas_object_text_rehint(obj);
+       if (!strcmp(obj->type, "textblock"))
+         _evas_object_textblock_rehint(obj);
+     }
+}
+
+EAPI void
+evas_font_hinting_set(Evas *e, Evas_Font_Hinting_Flags hinting)
+{
+   Evas_Object_List *l;
+   
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   if (e->hinting == hinting) return;
+   e->hinting = hinting;
+   for (l = (Evas_Object_List *)e->layers; l; l = l->next)
+     {
+       Evas_Object_List *l2;
+       Evas_Layer *lay;
+       
+       lay = (Evas_Layer *)l;
+       for (l2 = (Evas_Object_List *)lay->objects; l2; l2 = l2->next)
+         {
+            Evas_Object *obj;
+            
+            obj = (Evas_Object *)l2;
+            evas_font_object_rehint(obj);
+         }
+     }
+}
+
+EAPI Evas_Font_Hinting_Flags
+evas_font_hinting_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return EVAS_FONT_HINTING_BYTECODE;
+   MAGIC_CHECK_END();
+   return e->hinting;
+}
+
+EAPI Evas_Bool
+evas_font_hinting_can_hint(const Evas *e, Evas_Font_Hinting_Flags hinting)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+   if (e->engine.func->font_hinting_can_hint)
+     return e->engine.func->font_hinting_can_hint(e->engine.data.output,
+                                                 hinting);
+   return 0;
+}
+
+
+
+
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_font_cache_flush(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   e->engine.func->font_cache_flush(e->engine.data.output);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_font_cache_set(Evas *e, int size)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if (size < 0) size = 0;
+   e->engine.func->font_cache_set(e->engine.data.output, size);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI int
+evas_font_cache_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return 0;
+   MAGIC_CHECK_END();
+
+   return e->engine.func->font_cache_get(e->engine.data.output);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_List *
+evas_font_available_list(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+
+   return evas_font_dir_available_list(e);
+}
+   
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_font_available_list_free(Evas *e, Evas_List *available)
+{ 
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   return evas_font_dir_available_list_free(available); 
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI int
+evas_string_char_next_get(const char *str, int pos, int *decoded)
+{
+   int p, d;
+
+   if (decoded) *decoded = 0;
+   if (!str) return 0;
+   if (pos < 0) return 0;
+   p = pos;
+   d = evas_common_font_utf8_get_next((unsigned char *)str, &p);
+   if (decoded) *decoded = d;
+   return p;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI int
+evas_string_char_prev_get(const char *str, int pos, int *decoded)
+{
+   int p, d;
+
+   if (decoded) *decoded = 0;
+   if (!str) return 0;
+   if (pos < 1) return 0;
+   p = pos;
+   d = evas_common_font_utf8_get_prev((unsigned char *)str, &p);
+   if (decoded) *decoded = d;
+   return p;
+}
+
+/**
+ * Get the minimum padding a style adds to the text.
+ * @param style The style to determine padding.
+ * @param     l Pointer to the current left padding value
+ * @param     r Pointer to the current right padding value
+ * @param     t Pointer to the current top padding value
+ * @param     b Pointer to the current bottom padding value
+ */
+void
+evas_text_style_pad_get(Evas_Text_Style_Type style, int *l, int *r, int *t, int *b)
+{
+   int sl, sr, st, sb;
+
+   if (l) sl = *l;
+   else sl = 0;
+
+   if (r) sr = *r;
+   else sr = 0;
+
+   if (t) st = *t;
+   else st = 0;
+
+   if (b) sb = *b;
+   else sb = 0;
+
+   if (style == EVAS_TEXT_STYLE_SHADOW)
+     {
+       if (sr < 1) sr = 1;
+       if (sb < 1) sb = 1;
+     }
+   else if (style == EVAS_TEXT_STYLE_OUTLINE)
+     {
+       if (sl < 1) sl = 1;
+       if (sr < 1) sr = 1;
+       if (st < 1) st = 1;
+       if (sb < 1) sb = 1;
+     }
+   else if (style == EVAS_TEXT_STYLE_SOFT_OUTLINE)
+     {
+       if (sl < 2) sl = 2;
+       if (sr < 2) sr = 2;
+       if (st < 2) st = 2;
+       if (sb < 2) sb = 2;
+     }
+   else if (style == EVAS_TEXT_STYLE_GLOW)
+     {
+       if (sl < 2) sl = 2;
+       if (sr < 2) sr = 2;
+       if (st < 2) st = 2;
+       if (sb < 2) sb = 2;
+     }
+   else if (style == EVAS_TEXT_STYLE_OUTLINE_SHADOW)
+     {
+       if (sl < 1) sl = 1;
+       if (sr < 2) sr = 2;
+       if (st < 1) st = 1;
+       if (sb < 2) sb = 2;
+     }
+   else if (style == EVAS_TEXT_STYLE_FAR_SHADOW)
+     {
+       if (sr < 2) sr = 2;
+       if (sb < 2) sb = 2;
+     }
+   else if (style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW)
+     {
+       if (sl < 1) sl = 1;
+       if (sr < 3) sr = 3;
+       if (st < 1) st = 1;
+       if (sb < 3) sb = 3;
+     }
+   else if (style == EVAS_TEXT_STYLE_SOFT_SHADOW)
+     {
+       if (sl < 1) sl = 1;
+       if (sr < 3) sr = 3;
+       if (st < 1) st = 1;
+       if (sb < 3) sb = 3;
+     }
+   else if (style == EVAS_TEXT_STYLE_FAR_SOFT_SHADOW)
+     {
+       if (sr < 4) sr = 4;
+       if (sb < 4) sb = 4;
+     }
+   
+   if (l) *l = sl;
+   if (r) *r = sr;
+   if (t) *t = st;
+   if (b) *b = sb;
+}
+
+/* all nice and private */
+static void
+evas_object_text_init(Evas_Object *obj)
+{
+   /* alloc text ob, setup methods and default values */
+   obj->object_data = evas_object_text_new();
+   /* set up default settings for this kind of object */
+   obj->cur.color.r = 255;
+   obj->cur.color.g = 255;
+   obj->cur.color.b = 255;
+   obj->cur.color.a = 255;
+   obj->cur.geometry.x = 0.0;
+   obj->cur.geometry.y = 0.0;
+   obj->cur.geometry.w = 0.0;
+   obj->cur.geometry.h = 0.0;
+   obj->cur.layer = 0;
+   /* set up object-specific settings */
+   obj->prev = obj->cur;
+   /* set up methods (compulsory) */
+   obj->func = &object_func;
+   obj->type = o_type;
+}
+
+static void *
+evas_object_text_new(void)
+{
+   Evas_Object_Text *o;
+
+   /* alloc obj private data */
+   o = calloc(1, sizeof(Evas_Object_Text));
+   o->magic = MAGIC_OBJ_TEXT;
+   o->prev = o->cur;
+   return o;
+}
+
+static void
+evas_object_text_free(Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   /* frees private object data. very simple here */
+   o = (Evas_Object_Text *)(obj->object_data);
+   MAGIC_CHECK(o, Evas_Object_Text, MAGIC_OBJ_TEXT);
+   return;
+   MAGIC_CHECK_END();
+   /* free obj */
+   if (o->cur.text) evas_stringshare_del(o->cur.text);
+   if (o->cur.font) evas_stringshare_del(o->cur.font);
+   if (o->cur.source) evas_stringshare_del(o->cur.source);
+   if (o->engine_data) evas_font_free(obj->layer->evas, o->engine_data);
+   o->magic = 0;
+   free(o);
+}
+
+static void
+evas_object_text_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
+{
+   int i, j;
+   Evas_Object_Text *o;
+   const char vals[5][5] =
+     {
+         {0, 1, 2, 1, 0},
+         {1, 3, 4, 3, 1},
+         {2, 4, 5, 4, 2},
+         {1, 3, 4, 3, 1},
+         {0, 1, 2, 1, 0}
+     };
+   int sl = 0, st = 0;
+
+   /* render object to surface with context, and offxet by x,y */
+   o = (Evas_Object_Text *)(obj->object_data);
+   evas_text_style_pad_get(o->cur.style, &sl, NULL, &st, NULL);
+   ENFN->context_multiplier_unset(output, context);
+   ENFN->context_render_op_set(output, context, obj->cur.render_op);
+/*
+   ENFN->context_color_set(output,
+                                                   context,
+                                                   230, 160, 30, 100);
+   ENFN->rectangle_draw(output,
+                                                context,
+                                                surface,
+                                                obj->cur.cache.geometry.x + x,
+                                                obj->cur.cache.geometry.y + y,
+                                                obj->cur.cache.geometry.w,
+                                                obj->cur.cache.geometry.h);
+ */
+
+#define COLOR_ONLY_SET(object, sub, col) \
+       ENFN->context_color_set(output, context, \
+                               object->sub.col.r, \
+                               object->sub.col.g, \
+                               object->sub.col.b, \
+                               object->sub.col.a);
+
+#define COLOR_SET(object, sub, col) \
+        if (obj->cur.clipper)\
+          ENFN->context_color_set(output, context, \
+                               ((int)object->sub.col.r * ((int)obj->cur.clipper->cur.cache.clip.r + 1)) >> 8, \
+                               ((int)object->sub.col.g * ((int)obj->cur.clipper->cur.cache.clip.g + 1)) >> 8, \
+                               ((int)object->sub.col.b * ((int)obj->cur.clipper->cur.cache.clip.b + 1)) >> 8, \
+                               ((int)object->sub.col.a * ((int)obj->cur.clipper->cur.cache.clip.a + 1)) >> 8); \
+        else\
+          ENFN->context_color_set(output, context, \
+                               object->sub.col.r, \
+                               object->sub.col.g, \
+                               object->sub.col.b, \
+                               object->sub.col.a);
+
+#define COLOR_SET_AMUL(object, sub, col, amul) \
+        if (obj->cur.clipper) \
+           ENFN->context_color_set(output, context, \
+                               (((int)object->sub.col.r) * ((int)obj->cur.clipper->cur.cache.clip.r) * (amul)) / 65025, \
+                               (((int)object->sub.col.g) * ((int)obj->cur.clipper->cur.cache.clip.g) * (amul)) / 65025, \
+                               (((int)object->sub.col.b) * ((int)obj->cur.clipper->cur.cache.clip.b) * (amul)) / 65025, \
+                               (((int)object->sub.col.a) * ((int)obj->cur.clipper->cur.cache.clip.a) * (amul)) / 65025); \
+        else \
+           ENFN->context_color_set(output, context, \
+                               (((int)object->sub.col.r) * (amul)) / 255, \
+                               (((int)object->sub.col.g) * (amul)) / 255, \
+                               (((int)object->sub.col.b) * (amul)) / 255, \
+                               (((int)object->sub.col.a) * (amul)) / 255);
+          
+
+#define DRAW_TEXT(ox, oy) \
+   if ((o->engine_data) && (o->cur.text)) \
+     ENFN->font_draw(output, \
+                    context, \
+                    surface, \
+                    o->engine_data, \
+                    obj->cur.geometry.x + x + sl + ox, \
+                    obj->cur.geometry.y + y + st + oy + \
+                    (int) \
+                    (((o->max_ascent * obj->cur.geometry.h) / obj->cur.geometry.h) - 0.5), \
+                    obj->cur.geometry.w, \
+                    obj->cur.geometry.h, \
+                    obj->cur.geometry.w, \
+                    obj->cur.geometry.h, \
+                    o->cur.text);
+#if 0
+#define DRAW_TEXT(ox, oy) \
+   if ((o->engine_data) && (o->cur.text)) \
+     ENFN->font_draw(output, \
+                    context, \
+                    surface, \
+                    o->engine_data, \
+                    obj->cur.cache.geometry.x + x + sl + ox - \
+                    ENFN->font_inset_get(ENDT, o->engine_data, o->cur.text), \
+                    obj->cur.cache.geometry.y + y + st + oy + \
+                    (int) \
+                    (((o->max_ascent * obj->cur.cache.geometry.h) / obj->cur.geometry.h) - 0.5), \
+                    obj->cur.cache.geometry.w, \
+                    obj->cur.cache.geometry.h, \
+                    obj->cur.geometry.w, \
+                    obj->cur.geometry.h, \
+                    o->cur.text);
+#endif
+   /* shadows */
+   if (o->cur.style == EVAS_TEXT_STYLE_SHADOW)
+     {
+       COLOR_SET(o, cur, shadow);
+        DRAW_TEXT(1, 1);
+     }
+   else if ((o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
+           (o->cur.style == EVAS_TEXT_STYLE_FAR_SHADOW))
+     {
+       COLOR_SET(o, cur, shadow);
+        DRAW_TEXT(2, 2);
+     }
+   else if ((o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW) ||
+           (o->cur.style == EVAS_TEXT_STYLE_FAR_SOFT_SHADOW))
+     {
+       for (j = 0; j < 5; j++)
+         {
+            for (i = 0; i < 5; i++)
+              {
+                 if (vals[i][j] != 0)
+                   {
+                      COLOR_SET_AMUL(o, cur, shadow, vals[i][j] * 50);
+                      DRAW_TEXT(i, j);
+                   }
+              }
+         }
+     }
+   else if (o->cur.style == EVAS_TEXT_STYLE_SOFT_SHADOW)
+     {
+       for (j = 0; j < 5; j++)
+         {
+            for (i = 0; i < 5; i++)
+              {
+                 if (vals[i][j] != 0)
+                   {
+                      COLOR_SET_AMUL(o, cur, shadow, vals[i][j] * 50);
+                      DRAW_TEXT(i - 1, j - 1);
+                   }
+              }
+         }
+     }
+
+   /* glows */
+   if (o->cur.style == EVAS_TEXT_STYLE_GLOW)
+     {
+       for (j = 0; j < 5; j++)
+         {
+            for (i = 0; i < 5; i++)
+              {
+                 if (vals[i][j] != 0)
+                   {
+                      COLOR_SET_AMUL(o, cur, glow, vals[i][j] * 50);
+                      DRAW_TEXT(i - 2, j - 2);
+                   }
+              }
+         }
+       COLOR_SET(o, cur, glow2);
+       DRAW_TEXT(-1, 0);
+       DRAW_TEXT(1, 0);
+       DRAW_TEXT(0, -1);
+       DRAW_TEXT(0, 1);
+     }
+
+   /* outlines */
+   if ((o->cur.style == EVAS_TEXT_STYLE_OUTLINE) ||
+       (o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
+       (o->cur.style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW))
+     {
+       COLOR_SET(o, cur, outline);
+       DRAW_TEXT(-1, 0);
+       DRAW_TEXT(1, 0);
+       DRAW_TEXT(0, -1);
+       DRAW_TEXT(0, 1);
+     }
+   else if (o->cur.style == EVAS_TEXT_STYLE_SOFT_OUTLINE)
+     {
+       for (j = 0; j < 5; j++)
+         {
+            for (i = 0; i < 5; i++)
+              {
+                 if (((i != 2) || (j != 2)) && (vals[i][j] != 0))
+                   {
+                      COLOR_SET_AMUL(o, cur, outline, vals[i][j] * 50);
+                      DRAW_TEXT(i - 2, j - 2);
+                   }
+              }
+         }
+     }
+
+   /* normal text */
+   COLOR_ONLY_SET(obj, cur.cache, clip);
+   DRAW_TEXT(0, 0);
+}
+
+static void
+evas_object_text_render_pre(Evas_Object *obj)
+{
+   Evas_Rectangles rects = { 0, 0, NULL };
+   Evas_Object_Text *o;
+   int is_v, was_v;
+
+   /* dont pre-render the obj twice! */
+   if (obj->pre_render_done) return;
+   obj->pre_render_done = 1;
+   /* pre-render phase. this does anything an object needs to do just before */
+   /* rendering. this could mean loading the image data, retrieving it from */
+   /* elsewhere, decoding video etc. */
+   /* then when this is done the object needs to figure if it changed and */
+   /* if so what and where and add thr appropriate redraw rectangles */
+   o = (Evas_Object_Text *)(obj->object_data);
+   /* if someone is clipping this obj - go calculate the clipper */
+   if (obj->cur.clipper)
+     {
+       if (obj->cur.cache.clip.dirty)
+         evas_object_clip_recalc(obj->cur.clipper);
+       obj->cur.clipper->func->render_pre(obj->cur.clipper);
+     }
+   /* now figure what changed and add draw rects */
+   /* if it just became visible or invisible */
+   is_v = evas_object_is_visible(obj);
+   was_v = evas_object_was_visible(obj);
+   if (is_v != was_v)
+     {
+       evas_object_render_pre_visible_change(&rects, obj, is_v, was_v);
+       goto done;
+     }
+   /* its not visible - we accounted for it appearing or not so just abort */
+   if (!is_v) goto done;
+   /* clipper changed this is in addition to anything else for obj */
+   evas_object_render_pre_clipper_change(&rects, obj);
+   /* if we restacked (layer or just within a layer) and dont clip anyone */
+   if (obj->restack)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed color */
+   if ((obj->cur.color.r != obj->prev.color.r) ||
+       (obj->cur.color.g != obj->prev.color.g) ||
+       (obj->cur.color.b != obj->prev.color.b) ||
+       (obj->cur.color.a != obj->prev.color.a))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed geometry - and obviously not visibility or color */
+   /* caluclate differences since we have a constant color fill */
+   /* we really only need to update the differences */
+   if ((obj->cur.geometry.x != obj->prev.geometry.x) ||
+       (obj->cur.geometry.y != obj->prev.geometry.y) ||
+       (obj->cur.geometry.w != obj->prev.geometry.w) ||
+       (obj->cur.geometry.h != obj->prev.geometry.h))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   if (obj->cur.render_op != obj->prev.render_op)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   if (o->changed)
+     {
+       if ((o->cur.size != o->prev.size) ||
+           ((o->cur.font) && (o->prev.font) && (strcmp(o->cur.font, o->prev.font))) ||
+           ((o->cur.font) && (!o->prev.font)) ||
+           ((!o->cur.font) && (o->prev.font)) ||
+           ((o->cur.text) && (o->prev.text) && (strcmp(o->cur.text, o->prev.text))) ||
+           ((o->cur.text) && (!o->prev.text)) ||
+           ((!o->cur.text) && (o->prev.text)) ||
+           ((o->cur.style != o->prev.style)) ||
+           ((o->cur.shadow.r != o->prev.shadow.r)) ||
+           ((o->cur.shadow.g != o->prev.shadow.g)) ||
+           ((o->cur.shadow.b != o->prev.shadow.b)) ||
+           ((o->cur.shadow.a != o->prev.shadow.a)) ||
+           ((o->cur.outline.r != o->prev.outline.r)) ||
+           ((o->cur.outline.g != o->prev.outline.g)) ||
+           ((o->cur.outline.b != o->prev.outline.b)) ||
+           ((o->cur.outline.a != o->prev.outline.a)) ||
+           ((o->cur.glow.r != o->prev.glow.r)) ||
+           ((o->cur.glow.g != o->prev.glow.g)) ||
+           ((o->cur.glow.b != o->prev.glow.b)) ||
+           ((o->cur.glow.a != o->prev.glow.a)) ||
+           ((o->cur.glow2.r != o->prev.glow2.r)) ||
+           ((o->cur.glow2.g != o->prev.glow2.g)) ||
+           ((o->cur.glow2.b != o->prev.glow2.b)) ||
+           ((o->cur.glow2.a != o->prev.glow2.a)))
+         {
+            evas_object_render_pre_prev_cur_add(&rects, obj);
+            goto done;
+         }
+     }
+   done:
+   evas_object_render_pre_effect_updates(&rects, obj, is_v, was_v);
+}
+
+static void
+evas_object_text_render_post(Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   /* this moves the current data to the previous state parts of the object */
+   /* in whatever way is safest for the object. also if we don't need object */
+   /* data anymore we can free it if the object deems this is a good idea */
+   o = (Evas_Object_Text *)(obj->object_data);
+   /* remove those pesky changes */
+   while (obj->clip.changes)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)obj->clip.changes->data;
+       obj->clip.changes = evas_list_remove(obj->clip.changes, r);
+       free(r);
+     }
+   /* move cur to prev safely for object data */
+   obj->prev = obj->cur;
+   o->prev = o->cur;
+   o->changed = 0;
+}
+
+static int
+evas_object_text_is_opaque(Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   /* this returns 1 if the internal object data implies that the object is */
+   /* currently fulyl opque over the entire gradient it occupies */
+   o = (Evas_Object_Text *)(obj->object_data);
+   return 0;
+}
+
+static int
+evas_object_text_was_opaque(Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+
+   /* this returns 1 if the internal object data implies that the object was */
+   /* currently fulyl opque over the entire gradient it occupies */
+   o = (Evas_Object_Text *)(obj->object_data);
+   return 0;
+}
+
+void
+_evas_object_text_rehint(Evas_Object *obj)
+{
+   Evas_Object_Text *o;
+   int is, was;
+   
+   o = (Evas_Object_Text *)(obj->object_data);
+   if (!o->engine_data) return;
+   evas_font_load_hinting_set(obj->layer->evas, o->engine_data,
+                             obj->layer->evas->hinting);
+   was = evas_object_is_in_output_rect(obj,
+                                      obj->layer->evas->pointer.x,
+                                      obj->layer->evas->pointer.y, 1, 1);
+   /* DO II */
+   o->prev.text = NULL;
+   if ((o->engine_data) && (o->cur.text))
+     {
+       int w, h;
+       int l = 0, r = 0, t = 0, b = 0;
+       
+       ENFN->font_string_size_get(ENDT,
+                                  o->engine_data,
+                                  o->cur.text,
+                                  &w, &h);
+       evas_text_style_pad_get(o->cur.style, &l, &r, &t, &b);
+       obj->cur.geometry.w = w + l + r;
+       obj->cur.geometry.h = h + t + b;
+////   obj->cur.cache.geometry.validity = 0;
+     }
+   else
+     {
+       int t = 0, b = 0;
+       
+       evas_text_style_pad_get(o->cur.style, NULL, NULL, &t, &b);
+       obj->cur.geometry.w = 0;
+       obj->cur.geometry.h = o->max_ascent + o->max_descent + t + b;
+////   obj->cur.cache.geometry.validity = 0;
+     }
+   o->changed = 1;
+   evas_object_change(obj);
+   evas_object_coords_recalc(obj);
+   is = evas_object_is_in_output_rect(obj,
+                                     obj->layer->evas->pointer.x,
+                                     obj->layer->evas->pointer.y, 1, 1);
+   if ((is || was) && obj->cur.visible)
+     evas_event_feed_mouse_move(obj->layer->evas,
+                               obj->layer->evas->pointer.x,
+                               obj->layer->evas->pointer.y,
+                               obj->layer->evas->last_timestamp,
+                               NULL);
+   evas_object_inform_call_resize(obj);
+}
diff --git a/src/lib/canvas/evas_object_textblock.c b/src/lib/canvas/evas_object_textblock.c
new file mode 100644 (file)
index 0000000..baeaa8d
--- /dev/null
@@ -0,0 +1,4939 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* save typing */
+#define ENFN obj->layer->evas->engine.func
+#define ENDT obj->layer->evas->engine.data.output
+
+/* private magic number for textblock objects */
+static const char o_type[] = "textblock";
+
+/* private struct for textblock object internal data */
+typedef struct _Evas_Object_Textblock             Evas_Object_Textblock;
+typedef struct _Evas_Object_Style_Tag             Evas_Object_Style_Tag;
+typedef struct _Evas_Object_Textblock_Node        Evas_Object_Textblock_Node;
+typedef struct _Evas_Object_Textblock_Line        Evas_Object_Textblock_Line;
+typedef struct _Evas_Object_Textblock_Item        Evas_Object_Textblock_Item;
+typedef struct _Evas_Object_Textblock_Format_Item Evas_Object_Textblock_Format_Item;
+typedef struct _Evas_Object_Textblock_Format      Evas_Object_Textblock_Format;
+
+/* the current state of the formatting */
+
+#define  NODE_TEXT   0
+#define  NODE_FORMAT 1
+
+struct _Evas_Object_Style_Tag
+{  Evas_Object_List _list_data;
+   char *tag;
+   char *replace;
+};
+
+struct _Evas_Object_Textblock_Node
+{  Evas_Object_List _list_data;
+   char *text;
+   int   type;
+   int   len, alloc;
+};
+
+struct _Evas_Object_Textblock_Line
+{  Evas_Object_List _list_data;
+   Evas_Object_Textblock_Item        *items;
+   Evas_Object_Textblock_Format_Item *format_items;
+   int                                x, y, w, h;
+   int                                baseline;
+   int                                line_no;
+};
+
+struct _Evas_Object_Textblock_Item
+{  Evas_Object_List _list_data;
+   char                         *text;
+   Evas_Object_Textblock_Format *format;
+   Evas_Object_Textblock_Node   *source_node;
+   int                           x, w, h;
+   int                           inset, baseline;
+   int                           source_pos;
+   unsigned char                 type;
+};
+
+struct _Evas_Object_Textblock_Format_Item
+{  Evas_Object_List _list_data;
+   const char                   *item;
+   Evas_Object_Textblock_Node   *source_node;
+   int                           x, w;
+};
+
+struct _Evas_Object_Textblock_Format
+{
+   int                  ref;
+   double               halign;
+   double               valign;
+   struct {
+      const char       *name;
+      const char       *source;
+      const char       *fallbacks;
+      int               size;
+      void             *font;
+   } font;
+   struct {
+      struct {
+        unsigned char  r, g, b, a;
+      } normal, underline, underline2, outline, shadow, glow, glow2, backing,
+       strikethrough;
+   } color;
+   struct {
+      int               l, r;
+   } margin;
+   int                  tabstops;
+   unsigned char        style;
+   unsigned char        wrap_word : 1;
+   unsigned char        wrap_char : 1;
+   unsigned char        underline : 1;
+   unsigned char        underline2 : 1;
+   unsigned char        strikethrough : 1;
+   unsigned char        backing : 1;
+};
+
+struct _Evas_Textblock_Style
+{
+   char                  *style_text;
+   char                  *default_tag;
+   Evas_Object_Style_Tag *tags;
+   Evas_List             *objects;
+   unsigned char          delete_me : 1;
+};
+
+struct _Evas_Textblock_Cursor
+{
+   Evas_Object                *obj;
+   int                         pos;
+   Evas_Object_Textblock_Node *node;
+};
+
+struct _Evas_Object_Textblock
+{
+   DATA32                       magic;
+   Evas_Textblock_Style        *style;
+   Evas_Textblock_Cursor       *cursor;
+   Evas_List                   *cursors;
+   Evas_Object_Textblock_Node  *nodes;
+   Evas_Object_Textblock_Line  *lines;
+   int                          last_w;
+   struct {
+      int                       l, r, t, b;
+   } style_pad;
+   char                        *markup_text;
+   void                        *engine_data;
+   struct {
+      int                       w, h;
+      unsigned char             valid : 1;
+   } formatted, native;
+   unsigned char                redraw : 1;
+   unsigned char                changed : 1;
+};
+
+/* private methods for textblock objects */
+static void evas_object_textblock_init(Evas_Object *obj);
+static void *evas_object_textblock_new(void);
+static void evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
+static void evas_object_textblock_free(Evas_Object *obj);
+static void evas_object_textblock_render_pre(Evas_Object *obj);
+static void evas_object_textblock_render_post(Evas_Object *obj);
+
+static int evas_object_textblock_is_opaque(Evas_Object *obj);
+static int evas_object_textblock_was_opaque(Evas_Object *obj);
+
+static void evas_object_textblock_coords_recalc(Evas_Object *obj);
+
+static const Evas_Object_Func object_func =
+{
+   /* methods (compulsory) */
+   evas_object_textblock_free,
+     evas_object_textblock_render,
+     evas_object_textblock_render_pre,
+     evas_object_textblock_render_post,
+   /* these are optional. NULL = nothing */
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     evas_object_textblock_is_opaque,
+     evas_object_textblock_was_opaque,
+     NULL,
+     NULL,
+     evas_object_textblock_coords_recalc
+};
+
+/* the actual api call to add a textblock */
+
+#define TB_HEAD() \
+   Evas_Object_Textblock *o; \
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); \
+   return; \
+   MAGIC_CHECK_END(); \
+   o = (Evas_Object_Textblock *)(obj->object_data); \
+   MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK); \
+   return; \
+   MAGIC_CHECK_END();
+
+#define TB_HEAD_RETURN(x) \
+   Evas_Object_Textblock *o; \
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); \
+   return (x); \
+   MAGIC_CHECK_END(); \
+   o = (Evas_Object_Textblock *)(obj->object_data); \
+   MAGIC_CHECK(o, Evas_Object_Textblock, MAGIC_OBJ_TEXTBLOCK); \
+   return (x); \
+   MAGIC_CHECK_END();
+
+
+
+/* styles */
+static void
+_style_clear(Evas_Textblock_Style *ts)
+{
+   if (ts->style_text) free(ts->style_text);
+   if (ts->default_tag) free(ts->default_tag);
+   while (ts->tags)
+     {
+       Evas_Object_Style_Tag *tag;
+       
+       tag = (Evas_Object_Style_Tag *)ts->tags;
+       ts->tags = evas_object_list_remove(ts->tags, tag);
+       free(tag->tag);
+       free(tag->replace);
+       free(tag);
+     }
+   ts->style_text = NULL;
+   ts->default_tag = NULL;
+   ts->tags = NULL;
+}
+
+/* setting a textblock via markup */
+/*
+static char *
+_style_match_replace(Evas_Textblock_Style *ts, char *s)
+{
+   Evas_Object_List *l;
+   
+   for (l = (Evas_Object_List *)ts->tags; l; l = l->next)
+     {
+       Evas_Object_Style_Tag *tag;
+       
+       tag = (Evas_Object_Style_Tag *)l;
+       if (!strcmp(tag->replace, s)) return tag->tag;
+     }
+   return NULL;
+}
+*/
+
+static char *
+_style_match_tag(Evas_Textblock_Style *ts, char *s)
+{
+   Evas_Object_List *l;
+
+   for (l = (Evas_Object_List *)ts->tags; l; l = l->next)
+     {
+       Evas_Object_Style_Tag *tag;
+       
+       tag = (Evas_Object_Style_Tag *)l;
+       if (!strcmp(tag->tag, s)) return tag->replace;
+     }
+   return NULL;
+}
+
+static inline int
+_strbuf_realloc(char **strbuf, int *strbuf_alloc, int req_alloc)
+{
+   char *newbuf;
+   int newbuf_alloc;
+
+   newbuf_alloc = ((req_alloc + 31) >> 5) << 5;
+   if (newbuf_alloc == *strbuf_alloc)
+     return 1;
+
+   newbuf = realloc(*strbuf, newbuf_alloc);
+   if (!newbuf)
+     {
+       perror("realloc: could not allocate new strbuf");
+       return 0;
+     }
+
+   *strbuf = newbuf;
+   *strbuf_alloc = newbuf_alloc;
+   return 1;
+}
+
+static inline int
+_strbuf_grow_if_required(char **strbuf, int *strbuf_alloc, int req_alloc)
+{
+   if (req_alloc <= *strbuf_alloc)
+     return 1;
+
+   return _strbuf_realloc(strbuf, strbuf_alloc, req_alloc);
+}
+
+static char *
+_strbuf_append_int(char *strbuf, const char *text, int text_len, int *strbuf_len, int *strbuf_alloc)
+{
+   int req_alloc;
+
+   req_alloc = *strbuf_len + text_len + 1;
+   if (!_strbuf_grow_if_required(&strbuf, strbuf_alloc, req_alloc))
+     return strbuf;
+
+   memcpy(strbuf + *strbuf_len, text, text_len);
+   *strbuf_len += text_len;
+   strbuf[*strbuf_len] = '\0';
+
+   return strbuf;
+}
+
+static inline char *
+_strbuf_append(char *strbuf, const char *text, int *strbuf_len, int *strbuf_alloc)
+{
+   int text_len;
+
+   if ((!text) || (text[0] == '\0'))
+     return strbuf;
+
+   text_len = strlen(text);
+   return _strbuf_append_int(strbuf, text, text_len, strbuf_len, strbuf_alloc);
+}
+
+static inline char *
+_strbuf_append_n(char *strbuf, const char *text, int max_text_len, int *strbuf_len, int *strbuf_alloc)
+{
+   const char *p;
+   int text_len;
+
+   if ((!text) || (max_text_len < 1) || (text[0] == '\0'))
+     return strbuf;
+
+   text_len = 0;
+   for (p = text; (text_len < max_text_len) && (*p != '\0'); p++)
+     text_len++;
+
+   return _strbuf_append_int(strbuf, text, text_len, strbuf_len, strbuf_alloc);
+}
+
+static char *
+_strbuf_insert(char *strbuf, const char *text, int pos, int *strbuf_len, int *strbuf_alloc)
+{
+   int req_alloc, text_len, tail_len;
+
+   if ((!text) || (text[0] == '\0'))
+     return strbuf;
+
+   if (pos >= *strbuf_len)
+     return _strbuf_append(strbuf, text, strbuf_len, strbuf_alloc);
+   else if (pos < 0)
+     pos = 0;
+
+   text_len = strlen(text);
+   req_alloc = *strbuf_len + text_len + 1;
+   if (!_strbuf_grow_if_required(&strbuf, strbuf_alloc, req_alloc))
+     return strbuf;
+
+   tail_len = *strbuf_len - pos + 1; /* includes '\0' */
+   memmove(strbuf + pos + text_len, strbuf + pos, tail_len);
+   memcpy(strbuf + pos, text, text_len);
+   *strbuf_len += text_len;
+
+   return strbuf;
+}
+
+static char *
+_strbuf_remove(char *strbuf, int start, int end, int *strbuf_len, int *strbuf_alloc)
+{
+   int remove_len, tail_len, req_alloc;
+
+   if (!strbuf)
+     return NULL;
+
+   if (start <= 0)
+     start = 0;
+
+   if (end >= *strbuf_len)
+     end = *strbuf_len;
+
+   remove_len = end - start;
+   if (remove_len <= 0)
+     return strbuf;
+   else if (remove_len == *strbuf_len)
+     {
+       free(strbuf);
+       *strbuf_len = 0;
+       *strbuf_alloc = 0;
+       return NULL;
+     }
+
+   tail_len = *strbuf_len - end + 1; /* includes '\0' */
+   memmove(strbuf + start, strbuf + end, tail_len);
+   *strbuf_len -= remove_len;
+
+   req_alloc = *strbuf_len + 1;
+   _strbuf_realloc(&strbuf, strbuf_alloc, req_alloc);
+
+   return strbuf;
+}
+
+static void
+_nodes_clear(const Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   while (o->nodes)
+     {
+       Evas_Object_Textblock_Node *n;
+       
+       n = (Evas_Object_Textblock_Node *)o->nodes;
+       o->nodes = evas_object_list_remove(o->nodes, n);
+       if (n->text) free(n->text);
+       free(n);
+     }
+}
+
+static void
+_format_free(const Evas_Object *obj, Evas_Object_Textblock_Format *fmt)
+{
+   fmt->ref--;
+   if (fmt->ref > 0) return;
+   if (fmt->font.name) evas_stringshare_del(fmt->font.name);
+   if (fmt->font.fallbacks) evas_stringshare_del(fmt->font.fallbacks);
+   if (fmt->font.source) evas_stringshare_del(fmt->font.source);
+   evas_font_free(obj->layer->evas, fmt->font.font);
+   free(fmt);
+}
+
+static void
+_line_free(const Evas_Object *obj, Evas_Object_Textblock_Line *ln)
+{
+   while (ln->items)
+     {
+       Evas_Object_Textblock_Item *it;
+       
+       it = (Evas_Object_Textblock_Item *)ln->items;
+       ln->items = evas_object_list_remove(ln->items, ln->items);
+       if (it->text) free(it->text);
+       _format_free(obj, it->format);
+       free(it);
+     }
+   while (ln->format_items)
+     {
+       Evas_Object_Textblock_Format_Item *fi;
+       
+       fi = (Evas_Object_Textblock_Format_Item *)ln->format_items;
+       ln->format_items = evas_object_list_remove(ln->format_items, ln->format_items);
+       if (fi->item) evas_stringshare_del(fi->item);
+       free(fi);
+     }
+   if (ln) free(ln);
+}
+
+static void
+_lines_clear(const Evas_Object *obj, Evas_Object_Textblock_Line *lines)
+{
+   Evas_Object_Textblock *o;
+
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   while (lines)
+     {
+       Evas_Object_Textblock_Line *ln;
+       
+       ln = (Evas_Object_Textblock_Line *)lines;
+       lines = evas_object_list_remove(lines, ln);
+       _line_free(obj, ln);
+     }
+}
+
+/* table of html escapes (that i can find) this should be ordered with the
+ * most common first as it's a linear search to match - no hash for this.
+ *
+ * these are stored as one large string and one additional array that
+ * contains the offsets to the tokens for space efficiency.
+ */
+static const char escape_strings[] =
+       /* most common escaped stuff */
+       "&lt;\0\x3c\0"
+       "&gt;\0\x3e\0"
+       "&amp;\0\x26\0"
+       "&nbsp;\0\x20\0" /* NOTE: we allow nsbp's to break as we map early - maybe map to ascii 0x01 and then make the rendering code think 0x01 -> 0x20 */
+       "&quot;\0\x22\0"
+       /* all the rest */
+       "&copy;\0\xc2\xa9\0"
+       "&reg;\0\xc2\xae\0"
+       "&hellip;\0\xe2\x80\xa6\0"
+       "&Ntilde;\0\xc3\x91\0"
+       "&ntilde;\0\xc3\xb1\0"
+       "&Ccedil;\0\xc3\x87\0"
+       "&ccedil;\0\xc3\xa7\0"
+       "&szlig;\0\xc3\x9f\0"
+       "&THORN;\0\xc3\x9e\0"
+       "&thorn;\0\xc3\xbe\0"
+       "&ETH;\0\xc3\x90\0"
+       "&eth;\0\xc3\xb0\0"
+       "&acute;\0\xc2\xb4\0"
+       "&cedil;\0\xc2\xb8\0"
+       "&deg;\0\xc2\xb0\0"
+       "&uml;\0\xc2\xa8\0"
+       "&cent;\0\xc2\xa2\0"
+       "&pound;\0\xc2\xa3\0"
+       "&curren;\0\xc2\xa4\0"
+       "&yen;\0\xc2\xa5\0"
+       "&euro;\0\xe2\x82\xac\0"
+       "&sect;\0\xc2\xa7\0"
+       "&para;\0\xc2\xb6\0"
+       "&laquo;\0\xc2\xab\0"
+       "&raquo;\0\xc2\xbb\0"
+       "&iexcl;\0\xc2\xa1\0"
+       "&iquest;\0\xc2\xbf\0"
+       "&brvbar;\0\xc2\xa6\0"
+       "&ordf;\0\xc2\xaa\0"
+       "&ordm;\0\xc2\xba\0"
+       "&micro;\0\xc2\xb5\0"
+       "&macr;\0\xc2\xaf\0"
+       "&oplus;\0\xe2\x8a\x95\0"
+       "&int;\0\xe2\x88\xab\0"
+       "&sum;\0\xe2\x88\x91\0"
+       "&prod;\0\xe2\x88\x8f\0"
+       "&perp;\0\xe2\x8a\xa5\0"
+       "&or;\0\xe2\x88\xa8\0"
+       "&and;\0\xe2\x88\xa7\0"
+       "&equiv;\0\xe2\x89\xa1\0"
+       "&ne;\0\xe2\x89\xa0\0"
+       "&forall;\0\xe2\x88\x80\0"
+       "&exist;\0\xe2\x88\x83\0"
+       "&nabla;\0\xe2\x88\x87\0"
+       "&larr;\0\xe2\x86\x90\0"
+       "&rarr;\0\xe2\x86\x92\0"
+       "&uarr;\0\xe2\x86\x91\0"
+       "&darr;\0\xe2\x86\x93\0"
+       "&harr;\0\xe2\x86\x94\0"
+       "&lArr;\0\xe2\x87\x90\0"
+       "&rArr;\0\xe2\x87\x92\0"
+       "&plusmn;\0\xc2\xb1\0"
+       "&middot;\0\xc2\xb7\0"
+       "&times;\0\xc3\x97\0"
+       "&divide;\0\xc3\xb7\0"
+       "&sup1;\0\xc2\xb9\0"
+       "&sup2;\0\xc2\xb2\0"
+       "&sup3;\0\xc2\xb3\0"
+       "&frac14;\0\xc2\xbc\0"
+       "&frac12;\0\xc2\xbd\0"
+       "&frac34;\0\xc2\xbe\0"
+       "&not;\0\xc2\xac\0"
+       "&Aacute;\0\xc3\x81\0"
+       "&Eacute;\0\xc3\x89\0"
+       "&Iacute;\0\xc3\x8d\0"
+       "&Oacute;\0\xc3\x93\0"
+       "&Uacute;\0\xc3\x9a\0"
+       "&Yacute;\0\xc3\x9d\0"
+       "&aacute;\0\xc3\xa1\0"
+       "&eacute;\0\xc3\xa9\0"
+       "&iacute;\0\xc3\xad\0"
+       "&oacute;\0\xc3\xb3\0"
+       "&uacute;\0\xc3\xba\0"
+       "&yacute;\0\xc3\xbd\0"
+       "&Acirc;\0\xc3\x82\0"
+       "&Ecirc;\0\xc3\x8a\0"
+       "&Icirc;\0\xc3\x8e\0"
+       "&Ocirc;\0\xc3\x94\0"
+       "&Ucirc;\0\xc3\x9b\0"
+       "&acirc;\0\xc3\xa2\0"
+       "&ecirc;\0\xc3\xaa\0"
+       "&icirc;\0\xc3\xae\0"
+       "&ocirc;\0\xc3\xb4\0"
+       "&ucirc;\0\xc3\xbb\0"
+       "&Agrave;\0\xc3\x80\0"
+       "&Egrave;\0\xc3\x88\0"
+       "&Igrave;\0\xc3\x8c\0"
+       "&Ograve;\0\xc3\x92\0"
+       "&Ugrave;\0\xc3\x99\0"
+       "&agrave;\0\xc3\xa0\0"
+       "&egrave;\0\xc3\xa8\0"
+       "&igrave;\0\xc3\xac\0"
+       "&ograve;\0\xc3\xb2\0"
+       "&ugrave;\0\xc3\xb9\0"
+       "&Auml;\0\xc3\x84\0"
+       "&Euml;\0\xc3\x8b\0"
+       "&Iuml;\0\xc3\x8f\0"
+       "&Ouml;\0\xc3\x96\0"
+       "&auml;\0\xc3\xa4\0"
+       "&euml;\0\xc3\xab\0"
+       "&iuml;\0\xc3\xaf\0"
+       "&ouml;\0\xc3\xb6\0"
+       "&uuml;\0\xc3\xbc\0"
+       "&yuml;\0\xc3\xbf\0"
+       "&Atilde;\0\xc3\x83\0"
+       "&atilde;\0\xc3\xa3\0"
+       "&Otilde;\0\xc3\x95\0"
+       "&otilde;\0\xc3\xb5\0"
+       "&aring;\0\xc3\xa5\0"
+       "&Aring;\0\xc3\x85\0"
+       "&Oslash;\0\xc3\x98\0"
+       "&oslash;\0\xc3\xb8\0"
+       "&AElig;\0\xc3\x86\0"
+       "&aelig;\0\xc3\xa6\0"
+       "&Ntilde;\0\xc3\x91\0"
+       "&ntilde;\0\xc3\xb1\0"
+       "&Ccedil;\0\xc3\x87\0"
+       "&ccedil;\0\xc3\xa7\0"
+       "&szlig;\0\xc3\x9f\0"
+       "&THORN;\0\xc3\x9e\0"
+       "&thorn;\0\xc3\xbe\0"
+       "&ETH;\0\xc3\x90\0"
+       "&eth;\0\xc3\xb0\0"
+       "&alpha;\0\xce\xb1\0"
+       "&beta;\0\xce\xb2\0"
+       "&gamma;\0\xce\xb3\0"
+       "&delta;\0\xce\xb4\0"
+       "&epsilon;\0\xce\xb5\0"
+       "&zeta;\0\xce\xb6\0"
+       "&eta;\0\xce\xb7\0"
+       "&theta;\0\xce\xb8\0"
+       "&iota;\0\xce\xb9\0"
+       "&kappa;\0\xce\xba\0"
+       "&lambda;\0\xce\xbb\0"
+       "&mu;\0\xce\xbc\0"
+       "&nu;\0\xce\xbd\0"
+       "&omicron;\0\xce\xbf\0"
+       "&xi;\0\xce\xbe\0"
+       "&pi;\0\xcf\x80\0"
+       "&rho;\0\xcf\x81\0"
+       "&sigma;\0\xcf\x83\0"
+       "&tau;\0\xcf\x84\0"
+       "&upsilon;\0\xcf\x85\0"
+       "&phi;\0\xcf\x86\0"
+       "&chi;\0\xcf\x87\0"
+       "&psi;\0\xcf\x88\0"
+       "&omega;\0\xcf\x89\0"
+       "&Alpha;\0\xce\x91\0"
+       "&Beta;\0\xce\x92\0"
+       "&Gamma;\0\xce\x93\0"
+       "&Delta;\0\xce\x94\0"
+       "&Epsilon;\0\xce\x95\0"
+       "&Zeta;\0\xce\x96\0"
+       "&Eta;\0\xce\x97\0"
+       "&Theta;\0\xce\x98\0"
+       "&Iota;\0\xce\x99\0"
+       "&Kappa;\0\xce\x9a\0"
+       "&Lambda;\0\xce\x9b\0"
+       "&Mu;\0\xce\x9c\0"
+       "&Nu;\0\xce\x9d\0"
+       "&Omicron;\0\xce\x9f\0"
+       "&Xi;\0\xce\x9e\0"
+       "&Pi;\0\xce\xa0\0"
+       "&Rho;\0\xce\xa1\0"
+       "&Sigma;\0\xce\xa3\0"
+       "&Tau;\0\xce\xa4\0"
+       "&Upsilon;\0\xce\xa5\0"
+       "&Phi;\0\xce\xa6\0"
+       "&Chi;\0\xce\xa7\0"
+       "&Psi;\0\xce\xa8\0"
+       "&Omega;\0\xce\xa9\0"
+;
+
+
+static int
+_is_white(int c)
+{
+   /*
+    * unicode list of whitespace chars
+    *
+    * 0009..000D <control-0009>..<control-000D>
+    * 0020 SPACE
+    * 0085 <control-0085>
+    * 00A0 NO-BREAK SPACE
+    * 1680 OGHAM SPACE MARK
+    * 180E MONGOLIAN VOWEL SEPARATOR
+    * 2000..200A EN QUAD..HAIR SPACE
+    * 2028 LINE SEPARATOR
+    * 2029 PARAGRAPH SEPARATOR
+    * 202F NARROW NO-BREAK SPACE
+    * 205F MEDIUM MATHEMATICAL SPACE
+    * 3000 IDEOGRAPHIC SPACE
+    */
+   if (
+       (c == 0x20) ||
+       ((c >= 0x9) && (c <= 0xd)) ||
+       (c == 0x85) ||
+       (c == 0xa0) ||
+       (c == 0x1680) ||
+       (c == 0x180e) ||
+       ((c >= 0x2000) && (c <= 0x200a)) ||
+       (c == 0x2028) ||
+       (c == 0x2029) ||
+       (c == 0x202f) ||
+       (c == 0x205f) ||
+       (c == 0x3000)
+       )
+     return 1;
+   return 0;
+}
+
+static char *
+_clean_white(int clean_start, int clean_end, char *str)
+{
+   char *p, *p2, *str2 = NULL;
+   int white, pwhite, start, ok;
+
+   return str;
+   str2 = malloc(strlen(str) + 2);
+   p = str;
+   p2 = str2;
+   white = 0;
+   pwhite = 0;
+   start = 1;
+   ok = 1;
+   while (*p != 0)
+     {
+       pwhite = white;
+       if (isspace(*p) || _is_white(*p)) white = 1;
+       else white = 0;
+       if ((pwhite) && (white)) ok = 0;
+       else
+         {
+            if (!clean_start)
+              {
+                 if ((start) && (pwhite) && (!white))
+                   {
+//                    *p2 = ' ';
+//                    p2++;
+                   }
+              }
+            ok = 1;
+            if (!white) start = 0;
+         }
+       if (clean_start)
+         {
+            if ((start) && (ok)) ok = 0;
+         }
+       if (ok)
+         {
+            *p2 = *p;
+            p2++;
+         }
+       p++;
+     }
+   *p2 = 0;
+   if (clean_end)
+     {
+       while (p2 > str2)
+         {
+            p2--;
+            if (!(isspace(*p2) || _is_white(*p2))) break;
+            *p2 = 0;
+         }
+     }
+   free(str);
+   return str2;
+}
+
+static void
+_append_text_run(Evas_Object_Textblock *o, char *s, char *p)
+{
+   if ((s) && (p > s))
+     {
+       char *ts;
+       
+       ts = alloca(p - s + 1);
+       strncpy(ts, s, p - s);
+       ts[p - s] = 0;
+       ts = _clean_white(0, 0, ts);
+       evas_textblock_cursor_text_append(o->cursor, ts);
+     }
+}
+
+
+static int
+_hex_string_get(char ch)
+{
+   if ((ch >= '0') && (ch <= '9')) return (ch - '0');
+   else if ((ch >= 'A') && (ch <= 'F')) return (ch - 'A' + 10);
+   else if ((ch >= 'a') && (ch <= 'f')) return (ch - 'a' + 10);
+   return 0;
+}
+
+static void
+_format_color_parse(const char *str, unsigned char *r, unsigned char *g, unsigned char *b, unsigned char *a)
+{
+   int slen;
+   
+   slen = strlen(str);
+   *r = *g = *b = *a = 0;
+
+   if (slen == 7) /* #RRGGBB */
+     {
+       *r = (_hex_string_get(str[1]) << 4) | (_hex_string_get(str[2]));
+       *g = (_hex_string_get(str[3]) << 4) | (_hex_string_get(str[4]));
+       *b = (_hex_string_get(str[5]) << 4) | (_hex_string_get(str[6]));
+       *a = 0xff;
+     }
+   else if (slen == 9) /* #RRGGBBAA */
+     {
+       *r = (_hex_string_get(str[1]) << 4) | (_hex_string_get(str[2]));
+       *g = (_hex_string_get(str[3]) << 4) | (_hex_string_get(str[4]));
+       *b = (_hex_string_get(str[5]) << 4) | (_hex_string_get(str[6]));
+       *a = (_hex_string_get(str[7]) << 4) | (_hex_string_get(str[8]));
+     }
+   else if (slen == 4) /* #RGB */
+     {
+       *r = _hex_string_get(str[1]);
+       *r = (*r << 4) | *r;
+       *g = _hex_string_get(str[2]);
+       *g = (*g << 4) | *g;
+       *b = _hex_string_get(str[3]);
+       *b = (*b << 4) | *b;
+       *a = 0xff;
+     }
+   else if (slen == 5) /* #RGBA */
+     {
+       *r = _hex_string_get(str[1]);
+       *r = (*r << 4) | *r;
+       *g = _hex_string_get(str[2]);
+       *g = (*g << 4) | *g;
+       *b = _hex_string_get(str[3]);
+       *b = (*b << 4) | *b;
+       *a = _hex_string_get(str[4]);
+       *a = (*a << 4) | *a;
+     }
+   *r = (*r * *a) / 255;
+   *g = (*g * *a) / 255;
+   *b = (*b * *a) / 255;
+}
+
+static const char *fontstr;
+static const char *font_fallbacksstr;
+static const char *font_sizestr;
+static const char *font_sourcestr;
+static const char *colorstr;
+static const char *underline_colorstr;
+static const char *underline2_colorstr;
+static const char *outline_colorstr;
+static const char *shadow_colorstr;
+static const char *glow_colorstr;
+static const char *glow2_colorstr;
+static const char *backing_colorstr;
+static const char *strikethrough_colorstr;
+static const char *alignstr;
+static const char *valignstr;
+static const char *wrapstr;
+static const char *left_marginstr;
+static const char *right_marginstr;
+static const char *underlinestr;
+static const char *strikethroughstr;
+static const char *backingstr;
+static const char *stylestr;
+static const char *tabstopsstr;
+
+static void
+_format_command_init(void)
+{
+   fontstr = evas_stringshare_add("font");
+   font_fallbacksstr = evas_stringshare_add("font_fallbacks");
+   font_sizestr = evas_stringshare_add("font_size");
+   font_sourcestr = evas_stringshare_add("font_source");
+   colorstr = evas_stringshare_add("color");
+   underline_colorstr = evas_stringshare_add("underline_color");
+   underline2_colorstr = evas_stringshare_add("underline2_color");
+   outline_colorstr = evas_stringshare_add("outline_color");
+   shadow_colorstr = evas_stringshare_add("shadow_color");
+   glow_colorstr = evas_stringshare_add("glow_color");
+   glow2_colorstr = evas_stringshare_add("glow2_color");
+   backing_colorstr = evas_stringshare_add("backing_color");
+   strikethrough_colorstr = evas_stringshare_add("strikethrough_color");
+   alignstr = evas_stringshare_add("align");
+   valignstr = evas_stringshare_add("valign");
+   wrapstr = evas_stringshare_add("wrap");
+   left_marginstr = evas_stringshare_add("left_margin");
+   right_marginstr = evas_stringshare_add("right_margin");
+   underlinestr = evas_stringshare_add("underline");
+   strikethroughstr = evas_stringshare_add("strikethrough");
+   backingstr = evas_stringshare_add("backing");
+   stylestr = evas_stringshare_add("style");
+   tabstopsstr = evas_stringshare_add("tabstops");
+}
+
+static void
+_format_command_shutdown(void)
+{
+   evas_stringshare_del(fontstr);
+   evas_stringshare_del(font_fallbacksstr);
+   evas_stringshare_del(font_sizestr);
+   evas_stringshare_del(font_sourcestr);
+   evas_stringshare_del(colorstr);
+   evas_stringshare_del(underline_colorstr);
+   evas_stringshare_del(underline2_colorstr);
+   evas_stringshare_del(outline_colorstr);
+   evas_stringshare_del(shadow_colorstr);
+   evas_stringshare_del(glow_colorstr);
+   evas_stringshare_del(glow2_colorstr);
+   evas_stringshare_del(backing_colorstr);
+   evas_stringshare_del(strikethrough_colorstr);
+   evas_stringshare_del(alignstr);
+   evas_stringshare_del(valignstr);
+   evas_stringshare_del(wrapstr);
+   evas_stringshare_del(left_marginstr);
+   evas_stringshare_del(right_marginstr);
+   evas_stringshare_del(underlinestr);
+   evas_stringshare_del(strikethroughstr);
+   evas_stringshare_del(backingstr);
+   evas_stringshare_del(stylestr);
+   evas_stringshare_del(tabstopsstr);
+}
+
+static void
+_format_clean_param(char *dst, const char *src)
+{
+   const char *ss;
+   char *ds;
+
+   ds = dst;
+   for (ss = src; *ss; ss++, ds++)
+     {
+        if ((*ss == '\\') && *(ss + 1)) ss++;
+        *ds = *ss;
+     }
+   *ds = 0;
+}
+
+static void
+_format_command(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, const char *cmd, const char *param)
+{
+   int new_font = 0;
+   char *tmp_param;
+
+   tmp_param = alloca(strlen(param) + 1);
+   
+   _format_clean_param(tmp_param, param);
+   if (cmd == fontstr)
+     {
+       if ((!fmt->font.name) ||
+           ((fmt->font.name) && (strcmp(fmt->font.name, tmp_param))))
+         {
+            if (fmt->font.name) evas_stringshare_del(fmt->font.name);
+            fmt->font.name = evas_stringshare_add(tmp_param);
+            new_font = 1;
+         }
+     }
+   else if (cmd == font_fallbacksstr)
+     {
+       if ((!fmt->font.fallbacks) ||
+           ((fmt->font.fallbacks) && (strcmp(fmt->font.fallbacks, tmp_param))))
+         {
+            /* policy - when we say "fallbacks" do we prepend and use prior
+             * fallbacks... or should we replace. for now we replace
+             */
+            if (fmt->font.fallbacks) evas_stringshare_del(fmt->font.fallbacks);
+            fmt->font.fallbacks = evas_stringshare_add(tmp_param);
+            new_font = 1;
+         }
+     }
+   else if (cmd == font_sizestr)
+     {
+       int v;
+       
+       v = atoi(tmp_param);
+       if (v != fmt->font.size)
+         {
+            fmt->font.size = v;
+            new_font = 1;
+         }
+     }
+   else if (cmd == font_sourcestr)
+     {
+       if ((!fmt->font.source) ||
+           ((fmt->font.source) && (strcmp(fmt->font.source, tmp_param))))
+         {
+            if (fmt->font.source) evas_stringshare_del(fmt->font.source);
+            fmt->font.source = evas_stringshare_add(tmp_param);
+            new_font = 1;
+         }
+     }
+   else if (cmd == colorstr)
+     _format_color_parse(tmp_param,
+                        &(fmt->color.normal.r), &(fmt->color.normal.g),
+                        &(fmt->color.normal.b), &(fmt->color.normal.a));
+   else if (cmd == underline_colorstr)
+     _format_color_parse(tmp_param,
+                        &(fmt->color.underline.r), &(fmt->color.underline.g),
+                        &(fmt->color.underline.b), &(fmt->color.underline.a));
+   else if (cmd == underline2_colorstr)
+     _format_color_parse(tmp_param,
+                        &(fmt->color.underline2.r), &(fmt->color.underline2.g),
+                        &(fmt->color.underline2.b), &(fmt->color.underline2.a));
+   else if (cmd == outline_colorstr)
+     _format_color_parse(tmp_param,
+                        &(fmt->color.outline.r), &(fmt->color.outline.g),
+                        &(fmt->color.outline.b), &(fmt->color.outline.a));
+   else if (cmd == shadow_colorstr)
+     _format_color_parse(tmp_param,
+                        &(fmt->color.shadow.r), &(fmt->color.shadow.g),
+                        &(fmt->color.shadow.b), &(fmt->color.shadow.a));
+   else if (cmd == glow_colorstr)
+     _format_color_parse(tmp_param,
+                        &(fmt->color.glow.r), &(fmt->color.glow.g),
+                        &(fmt->color.glow.b), &(fmt->color.glow.a));
+   else if (cmd == glow2_colorstr)
+     _format_color_parse(tmp_param,
+                        &(fmt->color.glow2.r), &(fmt->color.glow2.g),
+                        &(fmt->color.glow2.b), &(fmt->color.glow2.a));
+   else if (cmd == backing_colorstr)
+     _format_color_parse(tmp_param,
+                        &(fmt->color.backing.r), &(fmt->color.backing.g),
+                        &(fmt->color.backing.b), &(fmt->color.backing.a));
+   else if (cmd == strikethrough_colorstr)
+     _format_color_parse(tmp_param,
+                        &(fmt->color.strikethrough.r), &(fmt->color.strikethrough.g),
+                        &(fmt->color.strikethrough.b), &(fmt->color.strikethrough.a));
+   else if (cmd == alignstr)
+     {
+       if (!strcmp(tmp_param, "middle")) fmt->halign = 0.5;
+       else if (!strcmp(tmp_param, "center")) fmt->halign = 0.5;
+       else if (!strcmp(tmp_param, "left")) fmt->halign = 0.0;
+       else if (!strcmp(tmp_param, "right")) fmt->halign = 1.0;
+       else if (strchr(tmp_param, '%'))
+         {
+            char *ts, *p;
+            
+            ts = alloca(strlen(tmp_param) + 1);
+            strcpy(ts, tmp_param);
+            p = strchr(ts, '%');
+            *p = 0;
+            fmt->halign = ((double)atoi(ts)) / 100.0;
+            if (fmt->halign < 0.0) fmt->halign = 0.0;
+            else if (fmt->halign > 1.0) fmt->halign = 1.0;
+         }
+       else
+         {
+            fmt->halign = atof(tmp_param);
+            if (fmt->halign < 0.0) fmt->halign = 0.0;
+            else if (fmt->halign > 1.0) fmt->halign = 1.0;
+         }
+     }
+   else if (cmd == valignstr)
+     {
+        if (!strcmp(tmp_param, "top")) fmt->valign = 0.0;
+       else if (!strcmp(tmp_param, "middle")) fmt->valign = 0.5;
+       else if (!strcmp(tmp_param, "center")) fmt->valign = 0.5;
+       else if (!strcmp(tmp_param, "bottom")) fmt->valign = 1.0;
+       else if (!strcmp(tmp_param, "baseline")) fmt->valign = -1.0;
+       else if (!strcmp(tmp_param, "base")) fmt->valign = -1.0;
+       else if (strchr(tmp_param, '%'))
+         {
+            char *ts, *p;
+            
+            ts = alloca(strlen(tmp_param) + 1);
+            strcpy(ts, tmp_param);
+            p = strchr(ts, '%');
+            *p = 0;
+            fmt->valign = ((double)atoi(ts)) / 100.0;
+            if (fmt->valign < 0.0) fmt->valign = 0.0;
+            else if (fmt->valign > 1.0) fmt->valign = 1.0;
+         }
+       else
+         {
+            fmt->valign = atof(tmp_param);
+            if (fmt->valign < 0.0) fmt->valign = 0.0;
+            else if (fmt->valign > 1.0) fmt->valign = 1.0;
+         }
+     }
+   else if (cmd == wrapstr)
+     {
+       if (!strcmp(tmp_param, "word"))
+         {
+            fmt->wrap_word = 1;
+            fmt->wrap_char = 0;
+         }
+       else if (!strcmp(tmp_param, "char"))
+         {
+            fmt->wrap_word = 0;
+            fmt->wrap_char = 1;
+         }
+       else
+         {
+            fmt->wrap_word = 0;
+            fmt->wrap_char = 0;
+         }
+     }
+   else if (cmd == left_marginstr)
+     {
+       if (!strcmp(tmp_param, "reset"))
+         fmt->margin.l = 0;
+       else
+         {
+            if (tmp_param[0] == '+')
+              fmt->margin.l += atoi(&(tmp_param[1]));
+            else if (tmp_param[0] == '-')
+              fmt->margin.l -= atoi(&(tmp_param[1]));
+            else
+              fmt->margin.l = atoi(tmp_param);
+            if (fmt->margin.l < 0) fmt->margin.l = 0;
+         }
+     }
+   else if (cmd == right_marginstr)
+     {
+       if (!strcmp(tmp_param, "reset"))
+         fmt->margin.r = 0;
+       else
+         {
+            if (tmp_param[0] == '+')
+              fmt->margin.r += atoi(&(tmp_param[1]));
+            else if (tmp_param[0] == '-')
+              fmt->margin.r -= atoi(&(tmp_param[1]));
+            else
+              fmt->margin.r = atoi(tmp_param);
+            if (fmt->margin.r < 0) fmt->margin.r = 0;
+         }
+     }
+   else if (cmd == underlinestr)
+     {
+       if (!strcmp(tmp_param, "off"))
+         {
+            fmt->underline = 0;
+            fmt->underline2 = 0;
+         }
+       else if ((!strcmp(tmp_param, "on")) ||
+                (!strcmp(tmp_param, "single")))
+         {
+            fmt->underline = 1;
+            fmt->underline2 = 0;
+         }
+       else if (!strcmp(tmp_param, "double"))
+         {
+            fmt->underline = 1;
+            fmt->underline2 = 1;
+         }
+     }
+   else if (cmd == strikethroughstr)
+     {
+       if (!strcmp(tmp_param, "off"))
+         fmt->strikethrough = 0;
+       else if (!strcmp(tmp_param, "on"))
+         fmt->strikethrough = 1;
+     }
+   else if (cmd == backingstr)
+     {
+       if (!strcmp(tmp_param, "off"))
+         fmt->backing = 0;
+       else if (!strcmp(tmp_param, "on"))
+         fmt->backing = 1;
+     }
+   else if (cmd == stylestr)
+     {
+       if (!strcmp(tmp_param, "off")) fmt->style = EVAS_TEXT_STYLE_PLAIN;
+       else if (!strcmp(tmp_param, "none")) fmt->style = EVAS_TEXT_STYLE_PLAIN;
+       else if (!strcmp(tmp_param, "plain")) fmt->style = EVAS_TEXT_STYLE_PLAIN;
+       else if (!strcmp(tmp_param, "shadow")) fmt->style = EVAS_TEXT_STYLE_SHADOW;
+       else if (!strcmp(tmp_param, "outline")) fmt->style = EVAS_TEXT_STYLE_OUTLINE;
+       else if (!strcmp(tmp_param, "soft_outline")) fmt->style = EVAS_TEXT_STYLE_SOFT_OUTLINE;
+       else if (!strcmp(tmp_param, "outline_shadow")) fmt->style = EVAS_TEXT_STYLE_OUTLINE_SHADOW;
+       else if (!strcmp(tmp_param, "outline_soft_shadow")) fmt->style = EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW;
+       else if (!strcmp(tmp_param, "glow")) fmt->style = EVAS_TEXT_STYLE_GLOW;
+       else if (!strcmp(tmp_param, "far_shadow")) fmt->style = EVAS_TEXT_STYLE_FAR_SHADOW;
+       else if (!strcmp(tmp_param, "soft_shadow")) fmt->style = EVAS_TEXT_STYLE_SOFT_SHADOW;
+       else if (!strcmp(tmp_param, "far_soft_shadow")) fmt->style = EVAS_TEXT_STYLE_FAR_SOFT_SHADOW;
+       else fmt->style = EVAS_TEXT_STYLE_PLAIN;
+     }
+   else if (cmd == tabstopsstr)
+     {
+       fmt->tabstops = atoi(tmp_param);
+       if (fmt->tabstops < 1) fmt->tabstops = 1;
+     }
+   
+   if (new_font)
+     {
+       void *of;
+       char *buf = NULL;
+
+       of = fmt->font.font;
+       if ((fmt->font.name) && (fmt->font.fallbacks))
+         {
+            buf = malloc(strlen(fmt->font.name) + 1 + strlen(fmt->font.fallbacks) + 1);
+            strcpy(buf, fmt->font.name);
+            strcat(buf, ",");
+            strcat(buf, fmt->font.fallbacks);
+         }
+       else if (fmt->font.name)
+         buf = strdup(fmt->font.name);
+       fmt->font.font = evas_font_load(obj->layer->evas, 
+                                       buf, fmt->font.source, 
+                                       fmt->font.size);
+       if (buf) free(buf);
+       if (of) evas_font_free(obj->layer->evas, of);
+     }
+}
+
+static int
+_format_is_param(char *item)
+{
+   if (strchr(item, '=')) return 1;
+   return 0;
+}
+
+static void
+_format_param_parse(char *item, const char **key, const char **val)
+{
+   char *p;
+   const char *k, *v;
+   
+   p = strchr(item, '=');
+   *p = '\0';
+   k = evas_stringshare_add(item);
+   *key = k;
+   *p = '=';
+   p++;
+   v = evas_stringshare_add(p);
+   *val = v;
+}
+
+static char *
+_format_parse(char **s)
+{
+   char *p, *item;
+   char *s1 = NULL, *s2 = NULL;
+   
+   p = *s;
+   if (*p == 0) return NULL;
+   for (;;)
+     {
+       if (!s1)
+         {
+            if (*p != ' ') s1 = p;
+            if (*p == 0) break;
+         }
+       else if (!s2)
+         {
+            if ((p > *s) && (p[-1] != '\\'))
+              {
+                 if (*p == ' ') s2 = p;
+              }
+            if (*p == 0) s2 = p;
+         }
+       p++;
+       if (s1 && s2)
+         {
+            item = s1;
+
+            *s = s2;
+            return item;
+         }
+     }
+   *s = p;
+   return NULL;
+}
+
+static void
+_format_fill(Evas_Object *obj, Evas_Object_Textblock_Format *fmt, char *str)
+{
+   char *s;
+   char *item;
+   
+   s = str;
+
+   /* get rid of anything +s or -s off the start of the string */
+   while ((*s == ' ') || (*s == '+') || (*s == '-')) s++;
+
+   while ((item = _format_parse(&s)))
+     {
+       char tmp_delim = *s;
+       *s = '\0';
+       if (_format_is_param(item))
+         {
+            const char *key = NULL, *val = NULL;
+            
+            _format_param_parse(item, &key, &val);
+            _format_command(obj, fmt, key, val);
+            evas_stringshare_del(key);
+            evas_stringshare_del(val);
+         }
+       else
+         {
+            /* immediate - not handled here */
+         }
+       *s = tmp_delim;
+     }
+}
+
+static Evas_Object_Textblock_Format *
+_format_dup(Evas_Object *obj, Evas_Object_Textblock_Format *fmt)
+{
+   Evas_Object_Textblock_Format *fmt2;
+   char *buf = NULL;
+   
+   fmt2 = calloc(1, sizeof(Evas_Object_Textblock_Format));
+   memcpy(fmt2, fmt, sizeof(Evas_Object_Textblock_Format));
+   fmt2->ref = 1;
+   if (fmt->font.name) fmt2->font.name = evas_stringshare_add(fmt->font.name);
+   if (fmt->font.fallbacks) fmt2->font.fallbacks = evas_stringshare_add(fmt->font.fallbacks);
+   if (fmt->font.source) fmt2->font.source = evas_stringshare_add(fmt->font.source);
+
+   if ((fmt2->font.name) && (fmt2->font.fallbacks))
+     {
+       buf = malloc(strlen(fmt2->font.name) + 1 + strlen(fmt2->font.fallbacks) + 1);
+       strcpy(buf, fmt2->font.name);
+       strcat(buf, ",");
+       strcat(buf, fmt2->font.fallbacks);
+     }
+   else if (fmt2->font.name)
+     buf = strdup(fmt2->font.name);
+   fmt2->font.font = evas_font_load(obj->layer->evas, 
+                                  buf, fmt2->font.source,
+                                  fmt2->font.size);
+   if (buf) free(buf);
+   return fmt2;
+}
+
+
+
+
+
+
+
+
+
+
+typedef struct _Ctxt Ctxt;
+
+struct _Ctxt
+{
+   Evas_Object *obj;
+   Evas_Object_Textblock *o;
+   
+   Evas_Object_Textblock_Line *lines;
+   Evas_Object_Textblock_Line *ln;
+
+   Evas_List *format_stack;
+   
+   int x, y;
+   int w, h;
+   int wmax, hmax;
+   int maxascent, maxdescent;
+   int marginl, marginr;
+   int line_no;
+   int underline_extend;
+   int have_underline, have_underline2;
+   double align;
+};
+
+static void
+_layout_format_ascent_descent_adjust(Ctxt *c, Evas_Object_Textblock_Format *fmt)
+{
+   int ascent, descent;
+
+   if (fmt->font.font)
+     {
+       ascent = c->ENFN->font_max_ascent_get(c->ENDT, fmt->font.font);
+       descent = c->ENFN->font_max_descent_get(c->ENDT, fmt->font.font);
+       if (c->maxascent < ascent) c->maxascent = ascent;
+       if (c->maxdescent < descent) c->maxdescent = descent;
+     }
+}
+
+static void
+_layout_line_new(Ctxt *c, Evas_Object_Textblock_Format *fmt)
+{
+   c->ln = calloc(1, sizeof(Evas_Object_Textblock_Line));
+   c->align = fmt->halign;
+   c->marginl = fmt->margin.l;
+   c->marginr = fmt->margin.r;
+   c->lines = evas_object_list_append(c->lines, c->ln);
+   c->x = 0;
+   c->maxascent = c->maxdescent = 0;
+   c->ln->line_no = -1;
+   _layout_format_ascent_descent_adjust(c, fmt);
+}
+
+static Evas_Object_Textblock_Format *
+_layout_format_push(Ctxt *c, Evas_Object_Textblock_Format *fmt)
+{
+   if (fmt)
+     {
+       fmt = _format_dup(c->obj, fmt);
+       c->format_stack  = evas_list_prepend(c->format_stack, fmt);
+     }
+   else
+     {
+       fmt = calloc(1, sizeof(Evas_Object_Textblock_Format));
+       c->format_stack  = evas_list_prepend(c->format_stack, fmt);
+       fmt->ref = 1;
+       fmt->halign = 0.0;
+       fmt->valign = -1.0;
+       fmt->style = EVAS_TEXT_STYLE_PLAIN;
+       fmt->tabstops = 32;
+     }
+   return fmt;
+}
+
+static Evas_Object_Textblock_Format *
+_layout_format_pop(Ctxt *c, Evas_Object_Textblock_Format *fmt)
+{
+   if ((c->format_stack) && (c->format_stack->next))
+     {
+       _format_free(c->obj, fmt);
+       c->format_stack = evas_list_remove_list(c->format_stack, c->format_stack);
+       fmt = c->format_stack->data;
+     }
+   return fmt;
+}
+
+static void
+_layout_format_value_handle(Ctxt *c, Evas_Object_Textblock_Format *fmt, char *item)
+{
+   const char *key = NULL, *val = NULL;
+   
+   _format_param_parse(item, &key, &val);
+   if ((key) && (val)) _format_command(c->obj, fmt, key, val);
+   if (key) evas_stringshare_del(key);
+   if (val) evas_stringshare_del(val);
+   c->align = fmt->halign;
+   c->marginl = fmt->margin.l;
+   c->marginr = fmt->margin.r;
+}
+
+static void
+_layout_line_advance(Ctxt *c, Evas_Object_Textblock_Format *fmt)
+{
+   Evas_Object_Textblock_Item *it;
+   Evas_Object_List *l;
+   
+   c->maxascent = c->maxdescent = 0;
+   if (!c->ln->items)
+     _layout_format_ascent_descent_adjust(c, fmt);
+   for (l = (Evas_Object_List *)c->ln->items; l; l = l->next)
+     {
+       int endx;
+       
+       it = (Evas_Object_Textblock_Item *)l;
+       if (it->format->font.font)
+         it->baseline = c->ENFN->font_max_ascent_get(c->ENDT, it->format->font.font);
+       _layout_format_ascent_descent_adjust(c, it->format);
+       endx = it->x + it->w;
+       if (endx > c->ln->w) c->ln->w = endx;
+     }
+   c->ln->y = c->y + c->o->style_pad.t;
+   c->ln->h = c->maxascent + c->maxdescent;
+   c->ln->baseline = c->maxascent;
+   if (c->have_underline2)
+     {
+       if (c->maxdescent < 4) c->underline_extend = 4 - c->maxdescent;
+     }
+   else if (c->have_underline)
+     {
+       if (c->maxdescent < 2) c->underline_extend = 2 - c->maxdescent;
+     }
+   c->ln->line_no = c->line_no;
+   c->line_no++;
+   c->y += c->maxascent + c->maxdescent;
+   if (c->w >= 0)
+     {
+       c->ln->x = c->marginl + c->o->style_pad.l +
+         ((c->w - c->ln->w -
+           c->o->style_pad.l - c->o->style_pad.r - 
+           c->marginl - c->marginr) * c->align);
+       if ((c->ln->x + c->ln->w + c->marginr - c->o->style_pad.l) > c->wmax)
+         c->wmax = c->ln->x + c->ln->w + c->marginl + c->marginr - c->o->style_pad.l;
+     }
+   else
+     {
+       c->ln->x = c->marginl + c->o->style_pad.l;
+       if ((c->ln->x + c->ln->w + c->marginr - c->o->style_pad.l) > c->wmax)
+         c->wmax = c->ln->x + c->ln->w + c->marginl + c->marginr - c->o->style_pad.l;
+     }
+   _layout_line_new(c, fmt);
+}
+
+static Evas_Object_Textblock_Item *
+_layout_item_new(Ctxt *c, Evas_Object_Textblock_Format *fmt, char *str)
+{
+   Evas_Object_Textblock_Item *it;
+   
+   it = calloc(1, sizeof(Evas_Object_Textblock_Item));
+   it->format = fmt;
+   it->format->ref++;
+   it->text = strdup(str);
+   return it;
+}
+
+static int
+_layout_text_cutoff_get(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Textblock_Item *it)
+{
+   int cx, cy, cw, ch;
+
+   if (fmt->font.font)
+     return c->ENFN->font_char_at_coords_get(c->ENDT, fmt->font.font, it->text,
+                                            c->w - 
+                                            c->o->style_pad.l - 
+                                            c->o->style_pad.r - 
+                                            c->marginl - 
+                                            c->marginr -
+                                            c->x,
+                                            0, &cx, &cy, &cw, &ch);
+   return -1;
+}
+
+static void
+_layout_item_text_cutoff(Ctxt *c, Evas_Object_Textblock_Item *it, int cut)
+{
+   char *ts;
+   
+   ts = it->text;
+   ts[cut] = 0;
+   it->text = strdup(ts);
+   free(ts);
+}
+
+static int
+_layout_word_start(char *str, int start)
+{
+   int p, tp, chr = 0;
+   
+   p = start;
+   chr = evas_common_font_utf8_get_next((unsigned char *)(str), &p);
+   if (_is_white(chr))
+     {
+       tp = p;
+       while (_is_white(chr) && (p >= 0))
+         {
+            tp = p;
+            chr = evas_common_font_utf8_get_next((unsigned char *)(str), &p);
+         }
+       return tp;
+     }
+   p = start;
+   tp = p;
+   while (p > 0)
+     {
+       chr = evas_common_font_utf8_get_prev((unsigned char *)(str), &p);
+       if (_is_white(chr)) break;
+       tp = p;
+     }
+   p = tp;
+   if (p < 0) p = 0;
+   if ((p >= 0) && (_is_white(chr)))
+     evas_common_font_utf8_get_next((unsigned char *)(str), &p);
+   return p;
+}
+
+static int
+_layout_ends_with_space(char *str)
+{
+   int p, chr;
+   
+   p = evas_common_font_utf8_get_last((unsigned char *)(str), strlen(str));
+   if (p < 0) return 0;
+   chr = evas_common_font_utf8_get_next((unsigned char *)(str), &p);
+   return _is_white(chr);
+}
+
+static int
+_layout_strip_trailing_whitespace(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Textblock_Item *it)
+{
+   int p, tp, chr, adv, tw, th;
+   
+   p = evas_common_font_utf8_get_last((unsigned char *)(it->text), strlen(it->text));
+   tp = p;
+   if (p >= 0)
+     {
+       chr = evas_common_font_utf8_get_prev((unsigned char *)(it->text), &p);
+       if (_is_white(chr))
+         {
+            _layout_item_text_cutoff(c, it, tp);
+            adv = 0;
+            if (it->format->font.font)
+              adv = c->ENFN->font_h_advance_get(c->ENDT, it->format->font.font, it->text);
+            tw = th = 0;
+            if (it->format->font.font)
+              c->ENFN->font_string_size_get(c->ENDT, it->format->font.font, it->text, &tw, &th);
+            it->w = tw;
+            it->h = th;
+            c->x = it->x + adv;
+            return 1;
+         }
+     }
+   return 0;
+}
+
+static int
+_layout_item_abort(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Textblock_Item *it)
+{
+   if (it->text) free(it->text);
+   _format_free(c->obj, it->format);
+   free(it);
+   if (c->ln->items)
+     {
+       it = (Evas_Object_Textblock_Item *)((Evas_Object_List *)c->ln->items)->last;
+       return _layout_strip_trailing_whitespace(c, fmt, it);
+     }
+   return 0;
+}
+
+#if 0
+static char *
+_layout_next_char_jump(Ctxt *c, Evas_Object_Textblock_Item *it, char *str)
+{
+   int index;
+   
+   index = 0;
+   evas_common_font_utf8_get_next((unsigned char *)str, &index);
+   if (index >= 0)
+     {
+       str = str + index;
+       _layout_item_text_cutoff(c, it, index);
+     }
+   else
+     str = NULL;
+   return str;
+}
+#endif
+
+static int
+_layout_last_item_ends_in_whitespace(Ctxt *c)
+{
+   Evas_Object_Textblock_Item *it;
+
+   if (!c->ln->items) return 1;
+   it = (Evas_Object_Textblock_Item *)((Evas_Object_List *)c->ln->items)->last;
+   return _layout_ends_with_space(it->text);
+}
+
+static int
+_layout_word_end(char *str, int p)
+{
+   int ch, tp;
+   
+   tp = p;
+   ch = evas_common_font_utf8_get_next((unsigned char *)str, &tp);
+   while ((!_is_white(ch)) && (tp >= 0) && (ch != 0))
+     {
+       p = tp;
+       ch = evas_common_font_utf8_get_next((unsigned char *)str, &tp);
+     }
+   if (ch == 0) return -1;
+   return p;
+}
+
+static int
+_layout_word_next(char *str, int p)
+{
+   int ch, tp;
+   
+   tp = p;
+   ch = evas_common_font_utf8_get_next((unsigned char *)str, &tp);
+   while ((!_is_white(ch)) && (tp >= 0) && (ch != 0))
+     {
+       p = tp;
+       ch = evas_common_font_utf8_get_next((unsigned char *)str, &tp);
+     }
+   if (ch == 0) return -1;
+   while ((_is_white(ch)) && (tp >= 0) && (ch != 0))
+     {
+       p = tp;
+       ch = evas_common_font_utf8_get_next((unsigned char *)str, &tp);
+     }
+   if (ch == 0) return -1;
+   return p;
+}
+
+static void
+_layout_walk_back_to_item_word_redo(Ctxt *c, Evas_Object_Textblock_Item *it)
+{
+   Evas_Object_Textblock_Item *pit, *new_it = NULL;
+   Evas_List *remove_items = NULL, *l;
+   int index, tw, th, inset, adv;
+   
+   /* it is not appended yet */
+   for (pit = (Evas_Object_Textblock_Item *)((Evas_Object_List *)c->ln->items)->last;
+       pit;
+       pit = (Evas_Object_Textblock_Item *)((Evas_Object_List *)pit)->prev)
+     {
+       if (_layout_ends_with_space(pit->text))
+         {
+            break;
+         }
+       index = evas_common_font_utf8_get_last((unsigned char *)(pit->text), strlen(pit->text));
+       index = _layout_word_start(pit->text, index);
+       if (index == 0)
+         remove_items = evas_list_prepend(remove_items, pit);
+       else
+         {
+            new_it = _layout_item_new(c, pit->format, pit->text + index);
+            new_it->source_node = pit->source_node;
+            new_it->source_pos = pit->source_pos + index;
+            _layout_item_text_cutoff(c, pit, index);
+            _layout_strip_trailing_whitespace(c, pit->format, pit);
+            break;
+         }
+     }
+   for (l = remove_items; l; l = l->next)
+     {
+       c->ln->items = evas_object_list_remove(c->ln->items, l->data);
+     }
+   /* new line now */
+   if (remove_items)
+     {
+       pit = remove_items->data;
+       _layout_line_advance(c, pit->format);
+     }
+   else
+     {
+       _layout_line_advance(c, it->format);
+     }
+   if (new_it)
+     {
+       /* append new_it */
+       tw = th = 0;
+       if (new_it->format->font.font)
+         c->ENFN->font_string_size_get(c->ENDT, new_it->format->font.font, new_it->text, &tw, &th);
+       new_it->w = tw;
+       new_it->h = th;
+       inset = 0;
+       if (new_it->format->font.font)
+         inset = c->ENFN->font_inset_get(c->ENDT, new_it->format->font.font, new_it->text);
+       new_it->inset = inset;
+       new_it->x = c->x;
+       adv = 0;
+       if (new_it->format->font.font)
+         adv = c->ENFN->font_h_advance_get(c->ENDT, new_it->format->font.font, new_it->text);
+       c->x += adv;
+       c->ln->items = evas_object_list_append(c->ln->items, new_it);
+     }
+   while (remove_items)
+     {
+       pit = remove_items->data;
+       remove_items = evas_list_remove_list(remove_items, remove_items);
+       /* append pit */
+       pit->x = c->x;
+       adv = c->ENFN->font_h_advance_get(c->ENDT, pit->format->font.font, pit->text);
+       c->x += adv;
+       c->ln->items = evas_object_list_append(c->ln->items, pit);
+     }
+   if (it)
+     {
+       /* append it */
+       it->x = c->x;
+       adv = 0;
+       if (it->format->font.font)
+         adv = c->ENFN->font_h_advance_get(c->ENDT, it->format->font.font, it->text);
+       c->x += adv;
+       c->ln->items = evas_object_list_append(c->ln->items, it);
+     }
+}
+
+static void
+_layout_text_append(Ctxt *c, Evas_Object_Textblock_Format *fmt, Evas_Object_Textblock_Node *n)
+{
+   int adv, inset, tw, th, new_line, empty_item;
+   int wrap, twrap, ch, index, white_stripped;
+   char *str;
+   Evas_Object_Textblock_Item *it;
+   
+   str = n->text;
+   new_line = 0;
+   empty_item = 0;
+   while (str)
+     {
+       /* if this is the first line item and it starts with spaces - remove them */
+       wrap = 0;
+       white_stripped = 0;
+/*     
+       if (!c->ln->items)
+         {
+            twrap = wrap;
+            ch = evas_common_font_utf8_get_next((unsigned char *)str, &wrap);
+            while (_is_white(ch))
+              {
+                 twrap = wrap;
+                 ch = evas_common_font_utf8_get_next((unsigned char *)str, &wrap);
+              }
+            str = str + twrap;
+         }
+ */
+       it = _layout_item_new(c, fmt, str);
+       it->source_node = n;
+       it->source_pos = str - n->text;
+       tw = th = 0;
+       if (fmt->font.font)
+         c->ENFN->font_string_size_get(c->ENDT, fmt->font.font, it->text, &tw, &th);
+       if ((c->w >= 0) && 
+           ((fmt->wrap_word) || (fmt->wrap_char)) && 
+           ((c->x + tw) > 
+            (c->w - c->o->style_pad.l - c->o->style_pad.r - 
+             c->marginl - c->marginr)))
+         {
+            wrap = _layout_text_cutoff_get(c, fmt, it);
+            if (wrap > 0)
+              {
+                 if (fmt->wrap_word)
+                   {
+                      index = wrap;
+                      ch = evas_common_font_utf8_get_next((unsigned char *)str, &index);
+                      if (!_is_white(ch))
+                        wrap = _layout_word_start(str, wrap);
+                      if (wrap > 0)
+                        {
+                           twrap = wrap;
+                           ch = evas_common_font_utf8_get_prev((unsigned char *)str, &twrap);
+                           /* the text intersects the wrap point on a whitespace char */
+                           if (_is_white(ch))
+                             {
+                                _layout_item_text_cutoff(c, it, wrap);
+                                twrap = wrap;
+                                ch = evas_common_font_utf8_get_next((unsigned char *)str, &twrap);
+                                str = str + twrap;
+                             }
+                           /* intersects a word */
+                           else
+                             {
+                                /* walk back to start of word */
+                                twrap = _layout_word_start(str, wrap);
+                                if (twrap != 0)
+                                  {
+                                     wrap = twrap;
+                                     ch = evas_common_font_utf8_get_prev((unsigned char *)str, &twrap);
+                                     _layout_item_text_cutoff(c, it, twrap);
+                                     str = str + wrap;
+                                  }
+                                else
+                                  {
+                                     empty_item = 1;
+                                     if (it->text) free(it->text);
+                                     _format_free(c->obj, it->format);
+                                     free(it);
+                                     it = (Evas_Object_Textblock_Item *)((Evas_Object_List *)c->ln->items)->last;
+                                     _layout_strip_trailing_whitespace(c, fmt, it);
+                                     twrap = _layout_word_end(str, wrap);
+                                     ch = evas_common_font_utf8_get_next((unsigned char *)str, &twrap);
+                                     str = str + twrap;
+                                  }
+                             }
+                        }
+                      else
+                        {
+                           /* wrap now is the index of the word START */
+                           index = wrap;
+                           ch = evas_common_font_utf8_get_next((unsigned char *)str, &index);
+                           if (!_is_white(ch) && 
+                               (!_layout_last_item_ends_in_whitespace(c)))
+                             {
+                                _layout_walk_back_to_item_word_redo(c, it);
+                                return;
+                             }
+                           if (c->ln->items != NULL)
+                             {
+                                white_stripped = _layout_item_abort(c, fmt, it);
+                                empty_item = 1;
+                             }
+                           else
+                             {
+                                if (wrap <= 0)
+                                  {
+                                     wrap = 0;
+                                     twrap = _layout_word_end(it->text, wrap);
+                                     wrap = twrap;
+                                     ch = evas_common_font_utf8_get_next((unsigned char *)str, &wrap);
+                                     if (twrap >= 0)
+                                       _layout_item_text_cutoff(c, it, twrap);
+                                     if (wrap > 0)
+                                       str = str + wrap;
+                                     else
+                                       str = NULL;
+                                  }
+                                else
+                                  str = NULL;
+                             }
+                        }
+                   }
+                 else if (fmt->wrap_char)
+                   {
+                      _layout_item_text_cutoff(c, it, wrap);
+                      str = str + wrap;
+                   }
+                 new_line = 1;
+              }
+            else
+              {
+                 /* wrap now is the index of the word START */
+                 if (wrap <= 0)
+                   {
+                      if (wrap < 0) wrap = 0;
+                      index = wrap;
+                      ch = evas_common_font_utf8_get_next((unsigned char *)str, &index);
+                      if (!_is_white(ch) && 
+                          (!_layout_last_item_ends_in_whitespace(c)))
+                        {
+                           _layout_walk_back_to_item_word_redo(c, it);
+                           return;
+                        }
+                   }
+                 if (c->ln->items != NULL)
+                   {
+                      white_stripped = _layout_item_abort(c, fmt, it);
+                      empty_item = 1;
+                      new_line = 1;
+                   }
+                 else
+                   {
+                      if (wrap <= 0)
+                        {
+                           wrap = 0;
+                           twrap = _layout_word_end(it->text, wrap);
+                           wrap = _layout_word_next(it->text, wrap);
+                           if (twrap >= 0)
+                             _layout_item_text_cutoff(c, it, twrap);
+                           if (wrap >= 0)
+                             str = str + wrap;
+                           else
+                             str = NULL;
+                        }
+                      else
+                        str = NULL;
+                      new_line = 1;
+                   }
+              }
+            if (!empty_item)
+              {
+                 tw = th = 0;
+                 if (fmt->font.font)
+                   c->ENFN->font_string_size_get(c->ENDT, fmt->font.font, it->text, &tw, &th);
+              }
+         }
+       else
+         str = NULL;
+       if (empty_item) empty_item = 0;
+       else
+         {
+            it->w = tw;
+            it->h = th;
+            inset = 0;
+            if (fmt->font.font)
+              inset = c->ENFN->font_inset_get(c->ENDT, fmt->font.font, it->text);
+            it->inset = inset;
+            it->x = c->x;
+            adv = 0;
+            if (fmt->font.font)
+              adv = c->ENFN->font_h_advance_get(c->ENDT, fmt->font.font, it->text);
+            c->x += adv;
+            c->ln->items = evas_object_list_append(c->ln->items, it);
+         }
+       if (new_line)
+         {
+            if (str)
+              {
+                 if (!white_stripped)
+                   {
+                      index = 0;
+                      ch = evas_common_font_utf8_get_next((unsigned char *)str, &index);
+                      if (_is_white(ch)) str += index;
+                   }
+              }
+            new_line = 0;
+            _layout_line_advance(c, fmt);
+         }
+     }
+}
+
+static Evas_Object_Textblock_Format_Item *
+_layout_format_item_add(Ctxt *c, Evas_Object_Textblock_Node *n, char *item)
+{
+   Evas_Object_Textblock_Format_Item *fi;
+   
+   fi = calloc(1, sizeof(Evas_Object_Textblock_Format_Item));
+   fi->item = evas_stringshare_add(item);
+   fi->source_node = n;
+   c->ln->format_items = evas_object_list_append(c->ln->format_items, fi);
+   return fi;
+}
+
+static void
+_layout(const Evas_Object *obj, int calc_only, int w, int h, int *w_ret, int *h_ret)
+{
+   Evas_Object_Textblock *o;
+   Ctxt ctxt, *c;
+   Evas_Object_List *l;
+   Evas_List *removes = NULL;
+   Evas_Object_Textblock_Format *fmt = NULL;
+   int style_pad_l = 0, style_pad_r = 0, style_pad_t = 0, style_pad_b = 0;
+
+   /* setup context */
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   c = &ctxt;
+   c->obj = (Evas_Object *)obj;
+   c->o = o;
+   c->lines = c->ln = NULL;
+   c->format_stack = NULL;
+   c->x = c->y = 0;
+   c->w = w;
+   c->h = h;
+   c->wmax = c->hmax = 0;
+   c->maxascent = c->maxdescent = 0;
+   c->marginl = c->marginr = 0;
+   c->have_underline = 0;
+   c->have_underline2 = 0;
+   c->underline_extend = 0;
+   c->line_no = 0;
+   c->align = 0.0;
+
+   _format_command_init();
+
+   /* setup default base style */
+   if ((c->o->style) && (c->o->style->default_tag))
+     {
+       fmt = _layout_format_push(c, NULL);
+       _format_fill(c->obj, fmt, c->o->style->default_tag);
+     }
+   if (!fmt)
+     {
+       _format_command_shutdown();
+       if (w_ret) *w_ret = 0;
+       if (h_ret) *h_ret = 0;
+       return;
+     }
+   /* run through all text and format nodes generating lines */
+   for (l = (Evas_Object_List *)c->o->nodes; l; l = l->next)
+     {
+       Evas_Object_Textblock_Node *n;
+       
+       n = (Evas_Object_Textblock_Node *)l;
+       if (!c->ln) _layout_line_new(c, fmt);
+       if ((n->type == NODE_FORMAT) && (n->text))
+         {
+            char *s;
+            char *item;
+            
+            s = n->text;
+            if (s[0] == '+')
+              {
+                 fmt = _layout_format_push(c, fmt);
+                 s++;
+              }
+            else if (s[0] == '-')
+              {
+                 fmt = _layout_format_pop(c, fmt);
+                 s++;
+              }
+            while ((item = _format_parse(&s)))
+              {
+                 char tmp_delim = *s;
+                 *s = '\0';
+                 if (_format_is_param(item))
+                   _layout_format_value_handle(c, fmt, item);
+                 else
+                   {
+                      if ((!strcmp(item, "\n")) || (!strcmp(item, "\\n")))
+                        {
+                           Evas_Object_Textblock_Format_Item *fi;
+                           
+                           fi = _layout_format_item_add(c, n, item);
+                           fi->x = c->x;
+                           fi->w = 0;
+                           _layout_line_advance(c, fmt);
+                        }
+                      else if ((!strcmp(item, "\t")) || (!strcmp(item, "\\t")))
+                        { 
+                           Evas_Object_Textblock_Format_Item *fi;
+                           int x2;
+                           
+                           x2 = (fmt->tabstops * ((c->x + fmt->tabstops) / fmt->tabstops));
+                           if (x2 >
+                               (c->w - c->o->style_pad.l - 
+                                c->o->style_pad.r - 
+                                c->marginl - c->marginr))
+                             {
+                                
+                                _layout_line_advance(c, fmt);
+                                x2 = (fmt->tabstops * ((c->x + fmt->tabstops) / fmt->tabstops));
+                             }
+                           if (c->ln->items)
+                             {
+                                Evas_Object_Textblock_Item *it;
+                                
+                                it = (Evas_Object_Textblock_Item *)((Evas_Object_List *)c->ln->items)->last;
+                                _layout_strip_trailing_whitespace(c, fmt, it);
+                             }
+                           fi = _layout_format_item_add(c, n, item);
+                           fi->x = c->x;
+                           fi->w = x2 - c->x;
+                           c->x = x2;
+                        }
+                   }
+                 *s = tmp_delim;
+              }
+
+            evas_text_style_pad_get(fmt->style, &style_pad_l, &style_pad_r, &style_pad_t, &style_pad_b);
+
+            if (fmt->underline2)
+              c->have_underline2 = 1;
+            else if (fmt->underline)
+              c->have_underline = 1;
+         }
+       else if ((n->type == NODE_TEXT) && (n->text))
+         {
+            _layout_text_append(c, fmt, n);
+            if ((c->have_underline2) || (c->have_underline))
+              {
+                 if (style_pad_b < c->underline_extend)
+                   style_pad_b = c->underline_extend;
+                 c->have_underline = 0;
+                 c->have_underline2 = 0;
+                 c->underline_extend = 0;
+              }
+         }
+     }
+   if ((c->ln) && (c->ln->items) && (fmt))
+     _layout_line_advance(c, fmt);
+   while (c->format_stack)
+     {
+       fmt = c->format_stack->data;
+       c->format_stack = evas_list_remove_list(c->format_stack, c->format_stack);
+       _format_free(c->obj, fmt);
+     }
+   for (l = (Evas_Object_List *)c->lines; l; l = l->next)
+     {
+       Evas_Object_Textblock_Line *ln;
+       
+       ln = (Evas_Object_Textblock_Line *)l;
+       if (ln->line_no == -1)
+         {
+            removes = evas_list_append(removes, ln);
+         }
+       else
+         {
+            if ((ln->y + ln->h) > c->hmax) c->hmax = ln->y + ln->h;
+         }
+     }
+   while (removes)
+     {
+       Evas_Object_Textblock_Line *ln;
+       
+       ln = removes->data;
+       c->lines = evas_object_list_remove(c->lines, ln);
+       removes = evas_list_remove_list(removes, removes);
+       _line_free(obj, ln);
+     }
+     
+   if (w_ret) *w_ret = c->wmax;
+   if (h_ret) *h_ret = c->hmax;
+   if ((o->style_pad.l != style_pad_l) || (o->style_pad.r != style_pad_r) ||
+       (o->style_pad.t != style_pad_t) || (o->style_pad.b != style_pad_b))
+     {
+       Evas_Object_Textblock_Line *lines;
+       
+       lines = c->lines;
+       c->lines = NULL;
+       o->style_pad.l = style_pad_l;
+       o->style_pad.r = style_pad_r;
+       o->style_pad.t = style_pad_t;
+       o->style_pad.b = style_pad_b;
+       _layout(obj, calc_only, w, h, w_ret, h_ret);
+        _lines_clear(obj, lines);
+       _format_command_shutdown();
+       return;
+     }
+   if (!calc_only)
+     {
+       o->lines = c->lines;
+       _format_command_shutdown();
+       return;
+     }
+   if (c->lines) _lines_clear(obj, c->lines);
+   _format_command_shutdown();
+}
+
+static void
+_relayout(const Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Line *lines;
+   
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   lines = o->lines;
+   o->lines = NULL;
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   _layout(obj, 
+          0,
+          obj->cur.geometry.w, obj->cur.geometry.h,
+          &o->formatted.w, &o->formatted.h);
+   o->formatted.valid = 1;
+   if (lines) _lines_clear(obj, lines);
+   o->last_w = obj->cur.geometry.w;
+   o->changed = 0;
+   o->redraw = 1;
+}
+
+static void
+_find_layout_item_line_match(Evas_Object *obj, Evas_Object_Textblock_Node *n, int pos, Evas_Object_Textblock_Line **lnr, Evas_Object_Textblock_Item **itr)
+{
+   Evas_Object_List *l, *ll;
+   Evas_Object_Textblock *o;
+   
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   for (l = (Evas_Object_List *)o->lines; l; l = l->next)
+     {
+        Evas_Object_Textblock_Line *ln;
+
+        ln = (Evas_Object_Textblock_Line *)l;
+       for (ll = (Evas_Object_List *)ln->items; ll; ll = ll->next)
+         {
+            Evas_Object_Textblock_Item *it;
+
+            it = (Evas_Object_Textblock_Item *)ll;
+            if (it->source_node == n)
+              {
+                 if ((int)(it->source_pos + strlen(it->text)) >= pos)
+                   {
+                      *lnr = ln;
+                      *itr = it;
+                      return;
+                   }
+              }
+         }
+     }
+}
+
+static void
+_find_layout_format_item_line_match(Evas_Object *obj, Evas_Object_Textblock_Node *n, Evas_Object_Textblock_Line **lnr, Evas_Object_Textblock_Format_Item **fir)
+{
+   Evas_Object_List *l, *ll;
+   Evas_Object_Textblock *o;
+   
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   for (l = (Evas_Object_List *)o->lines; l; l = l->next)
+     {
+        Evas_Object_Textblock_Line *ln;
+
+        ln = (Evas_Object_Textblock_Line *)l;
+       for (ll = (Evas_Object_List *)ln->format_items; ll; ll = ll->next)
+         {
+            Evas_Object_Textblock_Format_Item *fi;
+
+            fi = (Evas_Object_Textblock_Format_Item *)ll;
+            if (fi->source_node == n)
+              {
+                 *lnr = ln;
+                 *fir = fi;
+                 return;
+              }
+         }
+     }
+}
+
+static Evas_Object_Textblock_Line *
+_find_layout_line_num(const Evas_Object *obj, int line)
+{
+   Evas_Object_List *l;
+   Evas_Object_Textblock *o;
+   
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   for (l = (Evas_Object_List *)o->lines; l; l = l->next)
+     {
+        Evas_Object_Textblock_Line *ln;
+
+        ln = (Evas_Object_Textblock_Line *)l;
+       if (ln->line_no == line) return ln;
+     }
+   return NULL;
+}
+
+/**
+ * Adds a textblock to the given evas.
+ * @param   e The given evas.
+ * @return  The new textblock object.
+ * @todo Find a documentation group to put this under.
+ */
+EAPI Evas_Object *
+evas_object_textblock_add(Evas *e)
+{
+   Evas_Object *obj;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   obj = evas_object_new();
+   evas_object_textblock_init(obj);
+   evas_object_inject(obj, e);
+   return obj;
+}
+
+/**
+ * Creates a new textblock style.
+ * @return  The new textblock style.
+ */
+EAPI Evas_Textblock_Style *
+evas_textblock_style_new(void)
+{
+   Evas_Textblock_Style *ts;
+   
+   ts = calloc(1, sizeof(Evas_Textblock_Style));
+   return ts;
+}
+
+/**
+ * Destroys a textblock style.
+ * @param The textblock style to free.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_style_free(Evas_Textblock_Style *ts)
+{
+   if (!ts) return;
+   if (ts->objects)
+     {
+       ts->delete_me = 1;
+       return;
+     }
+   _style_clear(ts);
+   free(ts);
+}
+
+/**
+ * to be documented.
+ * @param ts  to be documented.
+ * @param text  to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_style_set(Evas_Textblock_Style *ts, const char *text)
+{
+   Evas_List *l;
+   
+   if (!ts) return;
+   _style_clear(ts);
+   if (text) ts->style_text = strdup(text);
+
+   if (ts->style_text)
+     {
+       // format MUST be KEY='VALUE'[KEY='VALUE']...
+       char *p;
+       char *key_start, *key_stop, *val_start, *val_stop;
+       
+       key_start = key_stop = val_start = val_stop = NULL;
+       p = ts->style_text;
+       while (*p)
+         {
+            if (!key_start)
+              {
+                 if (!isspace(*p))
+                   key_start = p;
+              }
+            else if (!key_stop)
+              {
+                 if ((*p == '=') || (isspace(*p)))
+                   key_stop = p;
+              }
+            else if (!val_start)
+              {
+                 if (((*p) == '\'') && (*(p + 1)))
+                   val_start = p + 1;
+              }
+            else if (!val_stop)
+              {
+                 if (((*p) == '\'') && (p > ts->style_text) && (p[-1] != '\\'))
+                   val_stop = p;
+              }
+            if ((key_start) && (key_stop) && (val_start) && (val_stop))
+              {
+                 char *tags, *replaces;
+                 Evas_Object_Style_Tag *tag;
+                 
+                 tags = malloc(key_stop - key_start + 1);
+                 if (tags)
+                   {
+                      tags[key_stop - key_start] = 0;
+                      strncpy(tags, key_start, key_stop - key_start);
+                      tags[key_stop - key_start] = 0;
+                   }
+                 
+                 replaces = malloc(val_stop - val_start + 1);
+                 if (replaces)
+                   {
+                      replaces[val_stop - val_start] = 0;
+                      strncpy(replaces, val_start, val_stop - val_start);
+                      replaces[val_stop - val_start] = 0;
+                   }
+                 if ((tags) && (replaces))
+                   {
+                      if (!strcmp(tags, "DEFAULT"))
+                        {
+                           ts->default_tag = replaces;
+                           free(tags);
+                        }
+                      else
+                        {
+                           tag = calloc(1, sizeof(Evas_Object_Style_Tag));
+                           if (tag)
+                             {
+                                tag->tag = tags;
+                                tag->replace = replaces;
+                                ts->tags = evas_object_list_append(ts->tags, tag);
+                             }
+                           else
+                             {
+                                free(tags);
+                                free(replaces);
+                             }
+                        }
+                   }
+                 else
+                   {
+                      if (tags) free(tags);
+                      if (replaces) free(replaces);
+                   }
+                 key_start = key_stop = val_start = val_stop = NULL;
+              }
+            p++;
+         }
+     }
+   
+   for (l = ts->objects; l; l = l->next)
+     {
+       Evas_Object *obj;
+       Evas_Object_Textblock *o;
+       
+       obj = l->data;
+       o = (Evas_Object_Textblock *)(obj->object_data);
+       if (o->markup_text)
+         evas_object_textblock_text_markup_set(obj, o->markup_text);
+     }
+}
+
+/**
+ * to be documented.
+ * @param ts  to be documented.
+ * @return to be documented.
+ */
+EAPI const char *
+evas_textblock_style_get(const Evas_Textblock_Style *ts)
+{
+   if (!ts) return NULL;
+   return ts->style_text;
+}
+
+/* textblock styles */
+/**
+ * to be documented.
+ * @param obj to be documented.
+ * @param ts  to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_object_textblock_style_set(Evas_Object *obj, Evas_Textblock_Style *ts)
+{
+   TB_HEAD();
+   if (ts == o->style) return;
+   if ((ts) && (ts->delete_me)) return;
+   if (o->style)
+     {
+       Evas_Textblock_Style *old_ts;
+       
+       old_ts = o->style;
+       old_ts->objects = evas_list_remove(old_ts->objects, obj);
+       if ((old_ts->delete_me) && (!old_ts->objects))
+         evas_textblock_style_free(old_ts);
+     }
+   if (ts)
+     {
+       ts->objects = evas_list_append(ts->objects, obj);
+       o->style = ts;
+     }
+   else
+     {
+       o->style = NULL;
+     }
+   if (o->markup_text)
+     evas_object_textblock_text_markup_set(obj, o->markup_text);
+}
+
+/**
+ * to be documented.
+ * @param obj  to be documented.
+ * @return to be documented.
+ */
+EAPI const Evas_Textblock_Style *
+evas_object_textblock_style_get(const Evas_Object *obj)
+{
+   TB_HEAD_RETURN(NULL);
+   return o->style;
+}
+
+static inline void
+_advance_after_end_of_string(const char **p_buf)
+{
+   while (**p_buf != 0) (*p_buf)++;
+   (*p_buf)++;
+}
+
+static inline int
+_is_eq_and_advance(const char *s, const char *s_end,
+                  const char **p_m, const char *m_end)
+{
+   for (;((s < s_end) && (*p_m < m_end)); s++, (*p_m)++)
+     {
+       if (*s != **p_m)
+         {
+            _advance_after_end_of_string(p_m);
+            return 0;
+         }
+     }
+   
+   if (*p_m < m_end)
+     _advance_after_end_of_string(p_m);
+
+   return s == s_end;
+}
+
+static inline void
+_append_escaped_char(Evas_Textblock_Cursor *cur, const char *s,
+                    const char *s_end)
+{
+   const char *map_itr, *map_end;
+
+   map_itr = escape_strings;
+   map_end = map_itr + sizeof(escape_strings);
+
+   while (map_itr < map_end)
+     {
+       if (_is_eq_and_advance(s, s_end, &map_itr, map_end))
+         {
+            evas_textblock_cursor_text_append(cur, map_itr);
+            return;
+         }
+       
+       if (map_itr < map_itr)
+         _advance_after_end_of_string(&map_itr);
+     }
+}
+
+/**
+ * to be documented.
+ * @param ts  to be documented.
+ * @param text to be documented.
+ * @return Return no value.
+ */
+EAPI void
+evas_object_textblock_text_markup_set(Evas_Object *obj, const char *text)
+{
+   TB_HEAD();
+   if ((text != o->markup_text) && (o->markup_text))
+     {
+       free(o->markup_text);
+       o->markup_text = NULL;
+     }
+   _nodes_clear(obj);
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   o->changed = 1;
+   evas_object_change(obj);
+   if (!o->style)
+     {
+       if (text != o->markup_text)
+         {
+            if (text) o->markup_text = strdup(text);
+         }
+       return;
+     }
+   evas_textblock_cursor_node_first(o->cursor);
+   if (text)
+     {
+       char *s, *p;
+       char *tag_start, *tag_end, *esc_start, *esc_end;
+       
+       tag_start = tag_end = esc_start = esc_end = NULL;
+       p = (char *)text;
+       s = p;
+       for (;;)
+         {
+            if ((*p == 0) || 
+                (tag_end) || (esc_end) || 
+                (tag_start) || (esc_start))
+              {
+                 if (tag_end)
+                   {
+                      char *ttag, *match;
+                      
+                      ttag = malloc(tag_end - tag_start);
+                      if (ttag)
+                        {
+                           strncpy(ttag, tag_start + 1, tag_end - tag_start - 1);
+                           ttag[tag_end - tag_start - 1] = 0;
+                           match = _style_match_tag(o->style, ttag);
+                           if (match)
+                             evas_textblock_cursor_format_append(o->cursor, match);
+                           else
+                             {
+                                if (ttag[0] == '/')
+                                  evas_textblock_cursor_format_append(o->cursor, "-");
+                                else
+                                  {
+                                     char *ttag2;
+                                     
+                                     ttag2 = malloc(strlen(ttag) + 2 + 1);
+                                     if (ttag2)
+                                       {
+                                          strcpy(ttag2, "+ ");
+                                          strcat(ttag2, ttag);
+                                          evas_textblock_cursor_format_append(o->cursor, ttag2);
+                                          free(ttag2);
+                                       }
+                                  }
+                             }
+                           free(ttag);
+                        }
+                      tag_start = tag_end = NULL;
+                   }
+                 else if (esc_end)
+                   {
+                      _append_escaped_char(o->cursor, esc_start, esc_end);
+                      esc_start = esc_end = NULL;
+                   }
+                 else if (*p == 0)
+                   {
+                      _append_text_run(o, s, p);
+                      s = NULL;
+                   }
+                 if (*p == 0)
+                   break;
+              }
+            if (*p == '<')
+              {
+                 if (!esc_start)
+                   {
+                      tag_start = p;
+                      tag_end = NULL;
+                      _append_text_run(o, s, p);
+                      s = NULL;
+                   }
+              }
+            else if (*p == '>')
+              {
+                 if (tag_start)
+                   {
+                      tag_end = p;
+                      s = p + 1;
+                   }
+              }
+            else if (*p == '&')
+              {
+                 if (!tag_start)
+                   {
+                      esc_start = p;
+                      esc_end = NULL;
+                      _append_text_run(o, s, p);
+                      s = NULL;
+                   }
+              }
+            else if (*p == ';')
+              {
+                 if (esc_start)
+                   {
+                      esc_end = p;
+                      s = p + 1;
+                   }
+              }
+            p++;
+         }
+       if (text != o->markup_text)
+         o->markup_text = strdup(text);
+     }
+     {
+       Evas_List *l;
+       
+       evas_textblock_cursor_node_first(o->cursor);
+       for (l = o->cursors; l; l = l->next)
+         evas_textblock_cursor_node_first(l->data);
+     }
+}
+
+/*
+ * to be documented.
+ * @param obj  to be documented.
+ * @return to be documented.
+ */
+EAPI const char *
+evas_object_textblock_text_markup_get(const Evas_Object *obj)
+{
+   TB_HEAD_RETURN(NULL);
+   return o->markup_text;
+}
+
+/* cursors */
+/*
+ * to be documented.
+ * @param obj  to be documented.
+ * @return to be documented.
+ */
+EAPI const Evas_Textblock_Cursor *
+evas_object_textblock_cursor_get(const Evas_Object *obj)
+{
+   TB_HEAD_RETURN(NULL);
+   return o->cursor;
+}
+
+/*
+ * to be documented.
+ * @param obj  to be documented.
+ * @return to be documented.
+ */
+EAPI Evas_Textblock_Cursor *
+evas_object_textblock_cursor_new(Evas_Object *obj)
+{
+   Evas_Textblock_Cursor *cur;
+   
+   TB_HEAD_RETURN(NULL);
+   cur = calloc(1, sizeof(Evas_Textblock_Cursor));
+   cur->obj = obj;
+   cur->node = o->nodes;
+   cur->pos = 0;
+   o->cursors = evas_list_append(o->cursors, cur);
+   return cur;
+}
+  
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_free(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+
+   if (!cur) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (cur == o->cursor) return;
+   o->cursors = evas_list_remove(o->cursors, cur);
+   free(cur);
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_node_first(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+   
+   if (!cur) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   cur->node = o->nodes;
+   cur->pos = 0;
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_node_last(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+   
+   if (!cur) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (o->nodes)
+     {
+       cur->node = (Evas_Object_Textblock_Node *)(((Evas_Object_List *)(o->nodes))->last);
+       cur->pos = 0;
+       evas_textblock_cursor_char_last(cur);
+     }
+   else
+     {
+       cur->node = NULL;
+       cur->pos = 0;
+     }
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return to be documented.
+ */
+EAPI Evas_Bool
+evas_textblock_cursor_node_next(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+   
+   if (!cur) return 0;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!cur->node) return 0;
+   if (((Evas_Object_List *)(cur->node))->next)
+     {
+       cur->node = (Evas_Object_Textblock_Node *)(((Evas_Object_List *)(cur->node))->next);
+       cur->pos = 0;
+       return 1;
+     }
+   return 0;
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return to be documented.
+ */
+EAPI Evas_Bool
+evas_textblock_cursor_node_prev(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+   
+   if (!cur) return 0;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!cur->node) return 0;
+   if (((Evas_Object_List *)(cur->node))->prev)
+     {
+       cur->node = (Evas_Object_Textblock_Node *)(((Evas_Object_List *)(cur->node))->prev);
+       evas_textblock_cursor_char_last(cur);
+       return 1;
+     }
+   return 0;
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return to be documented.
+ */
+EAPI Evas_Bool
+evas_textblock_cursor_char_next(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+   int index, tindex, ch;
+   
+   if (!cur) return 0;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!cur->node) return 0;
+   if (cur->node->type == NODE_FORMAT) return 0;
+   index = cur->pos;
+   ch = evas_common_font_utf8_get_next((unsigned char *)(cur->node->text), &index);
+   if ((ch == 0) || (index < 0)) return 0;
+   if (cur->node->text[index] == 0) return 0;
+   tindex = index;
+   cur->pos = index;
+   return 1;
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return to be documented.
+ */
+EAPI Evas_Bool
+evas_textblock_cursor_char_prev(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+   int index, ch;
+   
+   if (!cur) return 0;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!cur->node) return 0;
+   if (cur->node->type == NODE_FORMAT) return 0;
+   index = cur->pos;
+   ch = evas_common_font_utf8_get_prev((unsigned char *)(cur->node->text), &index);
+   if ((ch == 0) || (index < 0)) return 0;
+   cur->pos = index;
+   return 1;
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_char_first(Evas_Textblock_Cursor *cur)
+{
+   if (!cur) return;
+   cur->pos = 0;
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_char_last(Evas_Textblock_Cursor *cur)
+{
+   int index;
+   
+   if (!cur) return;
+   if (!cur->node) return;
+   if (cur->node->type == NODE_FORMAT)
+     {
+       cur->pos = 0;
+       return;
+     }
+   index = evas_common_font_utf8_get_last((unsigned char *)cur->node->text, cur->node->len);
+   if (index < 0) cur->pos = 0;
+   cur->pos = index;
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_line_first(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Line *ln = NULL;
+   Evas_Object_Textblock_Item *it = NULL;
+   Evas_Object_Textblock_Format_Item *fi = NULL;
+   
+   if (!cur) return;
+   if (!cur->node) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!o->formatted.valid) _relayout(cur->obj);
+   if (cur->node->type == NODE_FORMAT)
+     _find_layout_format_item_line_match(cur->obj, cur->node, &ln, &fi);
+   else
+     _find_layout_item_line_match(cur->obj, cur->node, cur->pos, &ln, &it);
+   if (!ln) return;
+   it = (Evas_Object_Textblock_Item *)ln->items;
+   fi = (Evas_Object_Textblock_Format_Item *)ln->format_items;
+   if ((it) && (fi))
+     {
+       if (it->x < fi->x) fi = NULL;
+       else it = NULL;
+     }
+   if (it)
+     {
+       cur->pos = it->source_pos;
+       cur->node = it->source_node;
+     }
+   else if (fi)
+     {
+       cur->pos = 0;
+       cur->node = fi->source_node;
+     }
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_line_last(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Line *ln = NULL;
+   Evas_Object_Textblock_Item *it = NULL;
+   Evas_Object_Textblock_Format_Item *fi = NULL;
+   
+   if (!cur) return;
+   if (!cur->node) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!o->formatted.valid) _relayout(cur->obj);
+   if (cur->node->type == NODE_FORMAT)
+     _find_layout_format_item_line_match(cur->obj, cur->node, &ln, &fi);
+   else
+     _find_layout_item_line_match(cur->obj, cur->node, cur->pos, &ln, &it);
+   if (!ln) return;
+   if (ln->items)
+     it = (Evas_Object_Textblock_Item *)(((Evas_Object_List *)ln->items)->last);
+   else
+     it = NULL;
+   if (ln->format_items)
+     fi = (Evas_Object_Textblock_Format_Item *)(((Evas_Object_List *)ln->format_items)->last);
+   else
+     fi = NULL;
+   if ((it) && (fi))
+     {
+       if ((it->x + it->w) > (fi->x + fi->w)) fi = NULL;
+       else it = NULL;
+     }
+   if (it)
+     {
+       int index;
+       
+       cur->pos = it->source_pos;
+       cur->node = it->source_node;
+       index = evas_common_font_utf8_get_last((unsigned char *)it->text, strlen(it->text));
+       if (index >= 0) cur->pos += index;
+     }
+   else if (fi)
+     {
+       cur->pos = 0;
+       cur->node = fi->source_node;
+     }
+}
+
+/*
+ * to be documented.
+ * @param cur  to be documented.
+ * @return to be documented.
+ */
+EAPI int
+evas_textblock_cursor_pos_get(const Evas_Textblock_Cursor *cur)
+{
+   if (!cur) return -1;
+   return cur->pos;
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param int to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_pos_set(Evas_Textblock_Cursor *cur, int pos)
+{
+   if (!cur) return;
+   if (!cur->node) return;
+   if (cur->node->type == NODE_FORMAT) pos = 0;
+   if (pos < 0) pos = 0;
+   else if (pos > cur->node->len) pos = cur->node->len;
+   cur->pos = pos;
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param int to be documented.
+ * @return to be documented.
+ */
+EAPI Evas_Bool
+evas_textblock_cursor_line_set(Evas_Textblock_Cursor *cur, int line)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Line *ln;
+   Evas_Object_Textblock_Item *it;
+   Evas_Object_Textblock_Format_Item *fi;
+   
+   if (!cur) return 0;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!o->formatted.valid) _relayout(cur->obj);
+
+   ln = _find_layout_line_num(cur->obj, line);
+   if (!ln) return 0;
+   it = (Evas_Object_Textblock_Item *)ln->items;
+   fi = (Evas_Object_Textblock_Format_Item *)ln->format_items;
+   if ((it) && (fi))
+     {
+       if (it->x < fi->x) fi = NULL;
+       else it = NULL;
+     }
+   if (it)
+     {
+       cur->pos = it->source_pos;
+       cur->node = it->source_node;
+     }
+   else if (fi)
+     {
+       cur->pos = 0;
+       cur->node = fi->source_node;
+     }
+   return 1;
+}
+
+/*
+ * to be documented.
+ * @param cur1 to be documented.
+ * @param cur2 to be documented.
+ * @return to be documented.
+ */
+EAPI int
+evas_textblock_cursor_compare(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2)
+{
+   Evas_Object_List *l1, *l2;
+   
+   if (!cur1) return 0;
+   if (!cur2) return 0;
+   if (cur1->obj != cur2->obj) return 0;
+   if ((!cur1->node) || (!cur2->node)) return 0;
+   if (cur1->node == cur2->node)
+     {
+       if (cur1->pos < cur2->pos) return -1; /* cur1 < cur2 */
+       else if (cur1->pos > cur2->pos) return 1; /* cur2 < cur1 */
+       return 0; /* cur1 == cur2 */
+     }
+   for (l1 = (Evas_Object_List *)cur1->node, 
+       l2 = (Evas_Object_List *)cur1->node; (l1) || (l2);)
+     {
+       if (l1 == (Evas_Object_List *)cur2->node) return 1; /* cur2 < cur 1 */
+       else if (l2 == (Evas_Object_List *)cur2->node) return -1; /* cur1 < cur 2 */
+       else if (!l1) return -1; /* cur1 < cur 2 */
+       else if (!l2) return 1; /* cur2 < cur 1 */
+       if (l1) l1 = l1->prev;
+       if (l2) l2 = l2->next;
+     }
+   return 0;
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param cur_dest to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_copy(const Evas_Textblock_Cursor *cur, Evas_Textblock_Cursor *cur_dest)
+{
+   if (!cur) return;
+   if (!cur_dest) return;
+   if (cur->obj != cur_dest->obj) return;
+   cur_dest->pos = cur->pos;
+   cur_dest->node = cur->node;
+}
+
+
+/* text controls */
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param text to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_text_append(Evas_Textblock_Cursor *cur, const char *text)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Node *n;
+   int index, ch;
+   
+   if (!cur) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+     {
+       Evas_List *l;
+
+       if (cur != o->cursor)
+         {
+            if (cur->node == o->cursor->node)
+              {
+                 if (o->cursor->pos > cur->pos)
+                   o->cursor->pos += strlen(text);
+              }
+         }
+       for (l = o->cursors; l; l = l->next)
+         {
+            if (l->data != cur)
+              {
+                 if (cur->node == ((Evas_Textblock_Cursor *)l->data)->node)
+                   {
+                      if (((Evas_Textblock_Cursor *)l->data)->pos > cur->pos)
+                        ((Evas_Textblock_Cursor *)l->data)->pos += strlen(text);
+                   }
+              }
+         }
+     }
+   n = cur->node;
+   if ((!n) || (n->type == NODE_FORMAT))
+     {
+       n = calloc(1, sizeof(Evas_Object_Textblock_Node));
+       n->type = NODE_TEXT;
+       o->nodes = evas_object_list_append(o->nodes, n);
+     }
+   cur->node = n;
+   index = cur->pos;
+   if (n->text)
+     {
+       ch = evas_common_font_utf8_get_next((unsigned char *)(n->text), &index);
+       if (ch != 0)
+         cur->pos = index;
+     }
+   if (cur->pos >= (n->len - 1))
+     n->text = _strbuf_append(n->text, (char *)text, &(n->len), &(n->alloc));
+   else
+     n->text = _strbuf_insert(n->text, (char *)text, cur->pos, &(n->len), &(n->alloc));
+   cur->pos += strlen(text);
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   o->changed = 1;
+   evas_object_change(cur->obj);
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param text to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_text_prepend(Evas_Textblock_Cursor *cur, const char *text)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Node *n;
+   int index;
+   
+   if (!cur) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+     {
+       Evas_List *l;
+
+       if (cur != o->cursor)
+         {
+            if (cur->node == o->cursor->node)
+              {
+                 if ((o->cursor->node) &&
+                     (o->cursor->node->type == NODE_TEXT) &&
+                     (o->cursor->pos >= cur->pos))
+                   o->cursor->pos += strlen(text);
+              }
+         }
+       for (l = o->cursors; l; l = l->next)
+         {
+            if (l->data != cur)
+              {
+                 if (cur->node == ((Evas_Textblock_Cursor *)l->data)->node)
+                   {
+                      if ((((Evas_Textblock_Cursor *)l->data)->node) &&
+                          (((Evas_Textblock_Cursor *)l->data)->node->type == NODE_TEXT) &&
+                          (((Evas_Textblock_Cursor *)l->data)->pos >= cur->pos))
+                        ((Evas_Textblock_Cursor *)l->data)->pos += strlen(text);
+                   }
+              }
+         }
+     }
+   n = cur->node;
+   if ((!n) || (n->type == NODE_FORMAT))
+     {
+       n = calloc(1, sizeof(Evas_Object_Textblock_Node));
+       n->type = NODE_TEXT;
+       o->nodes = evas_object_list_append(o->nodes, n);
+     }
+   cur->node = n;
+   index = cur->pos;
+   if (cur->pos >= (n->len - 1))
+     n->text = _strbuf_append(n->text, (char *)text, &(n->len), &(n->alloc));
+   else
+     n->text = _strbuf_insert(n->text, (char *)text, cur->pos, &(n->len), &(n->alloc));
+   cur->pos += strlen(text);
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   o->changed = 1;
+   evas_object_change(cur->obj);
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param format to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_format_append(Evas_Textblock_Cursor *cur, const char *format)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Node *n, *nc, *n2;
+   
+   if (!cur) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   nc = cur->node;
+   n = calloc(1, sizeof(Evas_Object_Textblock_Node));
+   n->type = NODE_FORMAT;
+   n->text = strdup(format);
+   n->len = strlen(n->text);
+   n->alloc = n->len + 1;
+   if (!nc)
+     {
+       o->nodes = evas_object_list_append(o->nodes, n);
+     }
+   else if (nc->type == NODE_FORMAT)
+     {
+       o->nodes = evas_object_list_append_relative(o->nodes, n, nc);
+     }
+   else if (nc->type == NODE_TEXT)
+     {
+       int index, ch = 0;
+       char *ts;
+       
+       index = cur->pos;
+       if (nc->text)
+         {
+            ch = evas_common_font_utf8_get_next((unsigned char *)(nc->text), &index);
+            if (ch != 0)
+              cur->pos = index;
+         }
+       o->nodes = evas_object_list_append_relative(o->nodes, n, nc);
+       if ((ch != 0) && (cur->pos < nc->len))
+         {
+            n2 = calloc(1, sizeof(Evas_Object_Textblock_Node));
+            n2->type = NODE_TEXT;
+            n2->text = _strbuf_append(n2->text, (char *)(nc->text + cur->pos), &(n2->len), &(n2->alloc));
+            o->nodes = evas_object_list_append_relative(o->nodes, n2, n);
+            
+            *(nc->text + cur->pos) = 0;
+            nc->len = cur->pos;
+            ts = realloc(nc->text, nc->len + 1);
+            if (ts)
+              {
+                 nc->text = ts;
+                 nc->alloc = nc->len + 1;
+              }
+         }
+     }
+   cur->node = n;
+   cur->pos = 0;
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   o->changed = 1;
+   evas_object_change(cur->obj);
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param format to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_format_prepend(Evas_Textblock_Cursor *cur, const char *format)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Node *n, *nc, *n2;
+   
+   if (!cur) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   nc = cur->node;
+   n = calloc(1, sizeof(Evas_Object_Textblock_Node));
+   n->type = NODE_FORMAT;
+   n->text = strdup(format);
+   n->len = strlen(n->text);
+   n->alloc = n->len + 1;
+   if (!nc)
+     {
+       o->nodes = evas_object_list_prepend(o->nodes, n);
+     }
+   else if (nc->type == NODE_FORMAT)
+     {
+       o->nodes = evas_object_list_prepend_relative(o->nodes, n, nc);
+     }
+   else if (nc->type == NODE_TEXT)
+     {
+       char *ts;
+       
+       if (cur->pos == 0)
+         o->nodes = evas_object_list_prepend_relative(o->nodes, n, nc);
+       else
+         o->nodes = evas_object_list_append_relative(o->nodes, n, nc);
+       if ((cur->pos < nc->len) && (cur->pos != 0))
+         {
+            n2 = calloc(1, sizeof(Evas_Object_Textblock_Node));
+            n2->type = NODE_TEXT;
+            n2->text = _strbuf_append(n2->text, (char *)(nc->text + cur->pos), &(n2->len), &(n2->alloc));
+            o->nodes = evas_object_list_append_relative(o->nodes, n2, n);
+            
+            *(nc->text + cur->pos) = 0;
+            nc->len = cur->pos;
+            ts = realloc(nc->text, nc->len + 1);
+            if (ts)
+              {
+                 nc->text = ts;
+                 nc->alloc = nc->len + 1;
+              }
+         }
+     }
+   cur->node = n;
+   cur->pos = 0;
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   o->changed = 1;
+   evas_object_change(cur->obj);
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_node_delete(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Node *n, *n2;
+   
+   if (!cur) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   n = cur->node;
+   n2 = (Evas_Object_Textblock_Node *)(((Evas_Object_List *)n)->next);
+   if (n2)
+     {
+       cur->node = n2;
+       cur->pos = 0;
+     }
+   else
+     {
+       n2 = (Evas_Object_Textblock_Node *)(((Evas_Object_List *)n)->prev);
+       cur->node = n2;
+       cur->pos = 0;
+       evas_textblock_cursor_char_last(cur);
+     }
+
+     {
+       Evas_List *l;
+
+       if (cur != o->cursor)
+         {
+            if (n == o->cursor->node)
+              {
+                 o->cursor->node = cur->node;
+                 o->cursor->pos = cur->pos;
+              }
+         }
+       for (l = o->cursors; l; l = l->next)
+         {
+            if (l->data != cur)
+              {
+                 if (n == ((Evas_Textblock_Cursor *)l->data)->node)
+                   {
+                      ((Evas_Textblock_Cursor *)l->data)->node = cur->node;
+                      ((Evas_Textblock_Cursor *)l->data)->pos = cur->pos;
+                   }
+              }
+         }
+     }
+   
+   o->nodes = evas_object_list_remove(o->nodes, n);
+   if (n->text) free(n->text);
+   free(n);
+   
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   o->changed = 1;
+   evas_object_change(cur->obj);
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_char_delete(Evas_Textblock_Cursor *cur)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Node *n, *n2;
+   int chr, index, ppos;
+   
+   if (!cur) return;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   n = cur->node;
+   if (n->type == NODE_FORMAT)
+     {
+       evas_textblock_cursor_node_delete(cur);
+       return;
+     }
+   index = cur->pos;
+   chr = evas_common_font_utf8_get_next((unsigned char *)n->text, &index);
+   if (chr == 0) return;
+   ppos = cur->pos;
+   n->text = _strbuf_remove(n->text, cur->pos, index, &(n->len), &(n->alloc));
+   if (!n->text)
+     {
+       evas_textblock_cursor_node_delete(cur);
+       return;
+     }
+   if (cur->pos == n->len)
+     {
+       n2 = (Evas_Object_Textblock_Node *)(((Evas_Object_List *)n)->next);
+       if (n2)
+         {
+            cur->node = n2;
+            cur->pos = 0;
+         }
+       else
+         {
+            cur->pos = 0;
+            evas_textblock_cursor_char_last(cur);
+         }
+     }
+   
+     {
+       Evas_List *l;
+
+       if (cur != o->cursor)
+         {
+            if ((n == o->cursor->node) &&
+                (o->cursor->pos > ppos))
+              {
+                 o->cursor->pos -= (index - ppos);
+              }
+         }
+       for (l = o->cursors; l; l = l->next)
+         {
+            if (l->data != cur)
+              {
+                 if ((n == ((Evas_Textblock_Cursor *)l->data)->node) &&
+                     (((Evas_Textblock_Cursor *)l->data)->pos > ppos))
+                   {
+                      ((Evas_Textblock_Cursor *)l->data)->pos -= (index - ppos);
+                   }
+              }
+         }
+     }
+   
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   o->changed = 1;
+   evas_object_change(cur->obj);
+}
+
+/*
+ * to be documented.
+ * @param cur1 to be documented.
+ * @param cur2 to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_textblock_cursor_range_delete(Evas_Textblock_Cursor *cur1, Evas_Textblock_Cursor *cur2)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Node *n1, *n2, *n, *tn;
+   Evas_Object_List *l;
+   
+   int chr, index;
+   
+   if (!cur1) return;
+   if (!cur2) return;
+   if (cur1->obj != cur2->obj) return;
+   o = (Evas_Object_Textblock *)(cur1->obj->object_data);
+   if (evas_textblock_cursor_compare(cur1, cur2) > 0)
+     {
+       Evas_Textblock_Cursor *tc;
+       
+       tc = cur1;
+       cur1 = cur2;
+       cur2 = tc;
+     }
+   n1 = cur1->node;
+   n2 = cur2->node;
+   index = cur2->pos;
+   chr = evas_common_font_utf8_get_next((unsigned char *)n2->text, &index);
+   if (chr == 0) return;
+   if (n1 == n2)
+     {
+       if (cur1->pos == cur2->pos)
+         {
+            evas_textblock_cursor_char_delete(cur1);
+            evas_textblock_cursor_copy(cur1, cur2);
+            return;
+         }
+       n1->text = _strbuf_remove(n1->text, cur1->pos, index, &(n1->len), &(n1->alloc));
+       if (!n1->text)
+         {
+            evas_textblock_cursor_node_delete(cur1);
+            evas_textblock_cursor_copy(cur1, cur2);
+            return;
+         }
+       if (cur1->pos >= n1->len)
+         {
+            n2 = (Evas_Object_Textblock_Node *)(((Evas_Object_List *)n1)->next);
+            if (n2)
+              {
+                 cur1->node = n2;
+                 cur1->pos = 0;
+              }
+            else
+              {
+                 cur1->pos = 0;
+                 evas_textblock_cursor_char_last(cur1);
+              }
+         }
+       evas_textblock_cursor_copy(cur1, cur2);
+     }
+   else
+     {
+       Evas_List *removes, *format_hump = NULL;
+       Evas_Textblock_Cursor tcur;
+       
+       tcur.node = n2;
+       tcur.pos = 0;
+       index = cur2->pos;
+       chr = evas_common_font_utf8_get_next((unsigned char *)n2->text, &index);
+       if ((chr == 0) || (index >= n2->len))
+         {
+            tcur.node = (Evas_Object_Textblock_Node *)((Evas_Object_List *)n2)->next;
+            tcur.pos = 0;
+            if (!tcur.node)
+              {
+                 if (cur1->pos != 0)
+                   {
+                      tcur.node = n1;
+                      index = cur1->pos;
+                      chr = evas_common_font_utf8_get_prev((unsigned char *)n2->text, &index);
+                      tcur.pos = index;
+                   }
+                 else
+                   {
+                      tcur.node = (Evas_Object_Textblock_Node *)((Evas_Object_List *)n1)->prev;
+                      if (tcur.node->type == NODE_TEXT)
+                        tcur.pos = evas_common_font_utf8_get_last((unsigned char *)tcur.node->text, tcur.node->len);
+                      else
+                        tcur.pos = 0;
+                   }
+              }
+         }
+       n1->text = _strbuf_remove(n1->text, cur1->pos, n1->len, &(n1->len), &(n1->alloc));
+       removes = NULL;
+       for (l = ((Evas_Object_List *)n1)->next; l != (Evas_Object_List *)n2; l = l->next)
+         removes = evas_list_append(removes, l);
+       if (n1->type == NODE_TEXT)
+         {
+            if (!n1->text)
+              evas_textblock_cursor_node_delete(cur1);
+         }
+       else
+         {
+            if (n1->text[0] == '+')
+              format_hump = evas_list_append(format_hump, n1);
+            else
+              {
+                 o->nodes = evas_object_list_remove(o->nodes, n1);
+                 if (n1->text) free(n1->text);
+                 free(n1);
+              }
+         }
+       format_hump = NULL;
+       while (removes)
+         {
+            n = removes->data;
+            if (n->type == NODE_TEXT)
+              {
+                 o->nodes = evas_object_list_remove(o->nodes, n);
+                 if (n->text) free(n->text);
+                 free(n);
+              }
+            else
+              {
+                 if (n->text[0] == '+')
+                   {
+                      format_hump = evas_list_append(format_hump, n);
+                   }
+                 else if (n->text[0] == '-')
+                   {
+                      tn = evas_list_data(evas_list_last(format_hump));
+                      if (tn)
+                        {
+                           format_hump = evas_list_remove_list(format_hump, evas_list_last(format_hump));
+                           o->nodes = evas_object_list_remove(o->nodes, tn);
+                           if (tn->text) free(tn->text);
+                           free(tn);
+                           o->nodes = evas_object_list_remove(o->nodes, n);
+                           if (n->text) free(n->text);
+                           free(n);
+                        }
+                   }
+                 else
+                   {
+                      o->nodes = evas_object_list_remove(o->nodes, n);
+                      if (n->text) free(n->text);
+                      free(n);
+                   }
+              }
+            removes = evas_list_remove_list(removes, removes);
+         }
+        if (n2->type == NODE_TEXT)
+         {
+            n2->text = _strbuf_remove(n2->text, 0, index, &(n2->len), &(n2->alloc));
+            if (!n2->text)
+              evas_textblock_cursor_node_delete(cur2);
+         }
+       else
+         {
+            if (n2->text[0] == '-')
+              {
+                 o->nodes = evas_object_list_remove(o->nodes, n2);
+                 if (n2->text) free(n2->text);
+                 free(n2);
+                 n = evas_list_data(evas_list_last(format_hump));
+                 if (n)
+                   {
+                      o->nodes = evas_object_list_remove(o->nodes, n);
+                      if (n->text) free(n->text);
+                      free(n);
+                   }
+              }
+            else
+              {
+                 o->nodes = evas_object_list_remove(o->nodes, n2);
+                 if (n2->text) free(n2->text);
+                 free(n2);
+              }
+         }
+       if (format_hump) format_hump = evas_list_free(format_hump);
+       cur1->node = tcur.node;
+       cur1->pos = tcur.pos;
+       cur2->node = tcur.node;
+       cur2->pos = tcur.pos;
+     }
+   
+   /* FIXME: adjust cursors that are affected by the change */
+   /* this is temporary just avoiding segv's - it sets all other cursors to
+    * the same pos as cur1 and cur2
+    */
+     {
+       Evas_List *l;
+
+       if ((cur1 != o->cursor) && (cur2 != o->cursor))
+         {
+            evas_textblock_cursor_copy(cur1, o->cursor);
+         }
+       for (l = o->cursors; l; l = l->next)
+         {
+            if ((l->data != cur1) && (l->data != cur2))
+              {
+                 evas_textblock_cursor_copy(cur1, l->data);
+              }
+         }
+     }
+   
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   o->changed = 1;
+   evas_object_change(cur1->obj);
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @return to be documented.
+ */
+EAPI const char *
+evas_textblock_cursor_node_text_get(const Evas_Textblock_Cursor *cur)
+{
+   if (!cur) return NULL;
+   if (!cur->node) return NULL;
+   if (cur->node->type == NODE_TEXT)
+     {
+       return cur->node->text;
+     }
+   return NULL;
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @return to be documented.
+ */
+EAPI int
+evas_textblock_cursor_node_text_length_get(const Evas_Textblock_Cursor *cur)
+{
+   if (!cur) return 0;
+   if (!cur->node) return 0;
+   if (cur->node->type == NODE_TEXT)
+     {
+       return cur->node->len;
+     }
+   return 0;
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @return to be documented.
+ */
+EAPI const char *
+evas_textblock_cursor_node_format_get(const Evas_Textblock_Cursor *cur)
+{
+   if (!cur) return NULL;
+   if (!cur->node) return NULL;
+   if (cur->node->type == NODE_FORMAT)
+     {
+       return cur->node->text;
+     }
+   return NULL;
+}
+
+/*
+ * to be documented.
+ * @param cur1 to be documented.
+ * @param cur2 to be documented.
+ * @param format to be documented.
+ * @return to be documented.
+ */
+EAPI char *
+evas_textblock_cursor_range_text_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2, Evas_Textblock_Text_Type format)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Node *n1, *n2, *n;
+   Evas_Object_List *l;
+   char *str = NULL, *s;
+   int len = 0, alloc = 0, chr, index;
+   
+   if (!cur1) return NULL;
+   if (!cur2) return NULL;
+   if (cur1->obj != cur2->obj) return NULL;
+   o = (Evas_Object_Textblock *)(cur1->obj->object_data);
+   if (evas_textblock_cursor_compare(cur1, cur2) > 0)
+     {
+       const Evas_Textblock_Cursor *tc;
+       
+       tc = cur1;
+       cur1 = cur2;
+       cur2 = tc;
+     }
+   n1 = cur1->node;
+   n2 = cur2->node;
+   index = cur2->pos;
+   chr = evas_common_font_utf8_get_next((unsigned char *)n2->text, &index);
+   for (l = (Evas_Object_List *)n1; ;l = l->next)
+     {
+       n = (Evas_Object_Textblock_Node *)l;
+       if (n->type == NODE_TEXT)
+         {
+            s = n->text;
+            if ((n == n1) && (n == n2))
+              {
+                 s += cur1->pos;
+                 str = _strbuf_append_n(str, s, index - cur1->pos, &len, &alloc);
+                 
+              }
+            else if (n == n1)
+              {
+                 s += cur1->pos;
+                 str = _strbuf_append(str, s, &len, &alloc);
+              }
+            else if (n == n2)
+              {
+                 str = _strbuf_append_n(str, s, index, &len, &alloc);
+              }
+            else
+              {
+                 str = _strbuf_append(str, s, &len, &alloc);
+              }
+         }
+       else
+         {
+            if (format == EVAS_TEXTBLOCK_TEXT_PLAIN)
+              {
+                 s = n->text;
+                 while (*s)
+                   {
+                      if (*s == '\n')
+                        str = _strbuf_append(str, "\n", &len, &alloc);
+                      else if (*s == '\t')
+                        str = _strbuf_append(str, "\t", &len, &alloc);
+                      s++;
+                   }
+              }
+         }
+       if (l == (Evas_Object_List *)n2) break;
+     }
+   return str;
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param cx to be documented.
+ * @param cy to be documented.
+ * @param cw to be documented.
+ * @param ch to be documented.
+ * @return to be documented.
+ */
+EAPI int
+evas_textblock_cursor_char_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Line *ln = NULL;
+   Evas_Object_Textblock_Item *it = NULL;
+   Evas_Object_Textblock_Format_Item *fi = NULL;
+   int x = 0, y = 0, w = 0, h = 0;
+   int pos, ret;
+   
+   if (!cur) return -1;
+   if (!cur->node) return -1;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!o->formatted.valid) _relayout(cur->obj);
+   if (cur->node->type == NODE_FORMAT)
+     _find_layout_format_item_line_match(cur->obj, cur->node, &ln, &fi);
+   else
+     _find_layout_item_line_match(cur->obj, cur->node, cur->pos, &ln, &it);
+   if (!ln) return -1;
+   if (it)
+     {
+       pos = cur->pos - it->source_pos;
+       ret = -1;
+       if (it->format->font.font)
+         ret = cur->ENFN->font_char_coords_get(cur->ENDT, it->format->font.font,
+                                               it->text,
+                                               pos,
+                                               &x, &y, &w, &h);
+       if (ret <= 0) return -1;
+       x = ln->x + it->x - it->inset + x;
+       if (x < ln->x)
+         {
+            x = ln->x;
+            w -= (ln->x - x);
+         }
+       y = ln->y;
+       h = ln->h;
+     }
+   else if (fi)
+     {
+       x = ln->x + fi->x;
+       y = ln->y;
+       w = fi->w;
+       h = ln->h;
+     }
+   else
+     return -1;
+   if (cx) *cx = x;
+   if (cy) *cy = y;
+   if (cw) *cw = w;
+   if (ch) *ch = h;
+   return ln->line_no;
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param cx to be documented.
+ * @param cy to be documented.
+ * @param cw to be documented.
+ * @param ch to be documented.
+ * @return to be documented.
+ */
+EAPI int
+evas_textblock_cursor_line_geometry_get(const Evas_Textblock_Cursor *cur, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_Textblock_Line *ln = NULL;
+   Evas_Object_Textblock_Item *it = NULL;
+   Evas_Object_Textblock_Format_Item *fi = NULL;
+   int x, y, w, h;
+   
+   if (!cur) return -1;
+   if (!cur->node) return -1;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!o->formatted.valid) _relayout(cur->obj);
+   if (cur->node->type == NODE_FORMAT)
+     _find_layout_format_item_line_match(cur->obj, cur->node, &ln, &fi);
+   else
+     _find_layout_item_line_match(cur->obj, cur->node, cur->pos, &ln, &it);
+   if (!ln) return -1;
+   x = ln->x;
+   y = ln->y;
+   w = ln->w;
+   h = ln->h;
+   if (cx) *cx = x;
+   if (cy) *cy = y;
+   if (cw) *cw = w;
+   if (ch) *ch = h;
+   return ln->line_no;
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param x to be documented.
+ * @param y to be documented.
+ * @return to be documented.
+ */
+EAPI Evas_Bool
+evas_textblock_cursor_char_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord x, Evas_Coord y)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_List *l, *ll;
+   Evas_Object_Textblock_Item *it = NULL, *it_break = NULL;
+   Evas_Object_Textblock_Format_Item *fi = NULL;
+   
+   if (!cur) return 0;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!o->formatted.valid) _relayout(cur->obj);
+   x += o->style_pad.l;
+   y += o->style_pad.t;
+   for (l = (Evas_Object_List *)o->lines; l; l = l->next)
+     {
+        Evas_Object_Textblock_Line *ln;
+
+        ln = (Evas_Object_Textblock_Line *)l;
+       if (ln->y > y) break;
+       if ((ln->y <= y) && ((ln->y + ln->h) > y))
+         {
+            for (ll = (Evas_Object_List *)ln->items; ll; ll = ll->next)
+              {
+                 it = (Evas_Object_Textblock_Item *)ll;
+                 if ((it->x +ln->x) > x)
+                   {
+                      it_break = it;
+                      break;
+                   }
+                 if (((it->x + ln->x) <= x) && (((it->x + ln->x) + it->w) > x))
+                   {
+                      int pos;
+                      int cx, cy, cw, ch;
+                      
+                      pos = -1;
+                      if (it->format->font.font)
+                        pos = cur->ENFN->font_char_at_coords_get(cur->ENDT,
+                                                                 it->format->font.font,
+                                                                 it->text,
+                                                                 x - it->x - ln->x, 0,
+                                                                 &cx, &cy, &cw, &ch);
+                      if (pos < 0)
+                        return 0;
+                      cur->pos = pos + it->source_pos;
+                      cur->node = it->source_node;
+                      return 1;
+                   }
+              }
+            for (ll = (Evas_Object_List *)ln->format_items; ll; ll = ll->next)
+              {
+                 fi = (Evas_Object_Textblock_Format_Item *)ll;
+                 if ((fi->x + ln->x) > x) break;
+                 if (((fi->x + ln->x) <= x) && (((fi->x + ln->x) + fi->w) > x))
+                   {
+                      cur->pos = 0;
+                      cur->node = fi->source_node;
+                      return 1;
+                   }
+              }
+            if (it_break)
+              {
+                 it = it_break;
+                 cur->pos = it->source_pos;
+                 cur->node = it->source_node;
+                 return 1;
+              }
+         }
+     }
+   return 0;
+}
+
+/*
+ * to be documented.
+ * @param cur to be documented.
+ * @param y to be documented.
+ * @return to be documented.
+ */
+EAPI int
+evas_textblock_cursor_line_coord_set(Evas_Textblock_Cursor *cur, Evas_Coord y)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_List *l;
+   
+   if (!cur) return -1;
+   o = (Evas_Object_Textblock *)(cur->obj->object_data);
+   if (!o->formatted.valid) _relayout(cur->obj);
+   y += o->style_pad.t;
+   for (l = (Evas_Object_List *)o->lines; l; l = l->next)
+     {
+        Evas_Object_Textblock_Line *ln;
+
+        ln = (Evas_Object_Textblock_Line *)l;
+       if (ln->y > y) break;
+       if ((ln->y <= y) && ((ln->y + ln->h) > y))
+         {
+            evas_textblock_cursor_line_set(cur, ln->line_no);
+            return ln->line_no;
+         }
+     }
+   return -1;
+}
+
+/*
+ * to be documented.
+ * @param cur1 to be documented.
+ * @param cur2 to be documented.
+ * @return to be documented.
+ */
+EAPI Evas_List *
+evas_textblock_cursor_range_geometry_get(const Evas_Textblock_Cursor *cur1, const Evas_Textblock_Cursor *cur2)
+{
+   Evas_Object_Textblock *o;
+   Evas_List *rects = NULL;
+   Evas_Coord cx, cy, cw, ch, lx, ly, lw, lh;
+   Evas_Textblock_Rectangle *tr;
+   int i, line, line2;
+   
+   if (!cur1) return NULL;
+   if (!cur2) return NULL;
+   if (cur1->obj != cur2->obj) return NULL;
+   o = (Evas_Object_Textblock *)(cur1->obj->object_data);
+   if (evas_textblock_cursor_compare(cur1, cur2) > 0)
+     {
+       const Evas_Textblock_Cursor *tc;
+       
+       tc = cur1;
+       cur1 = cur2;
+       cur2 = tc;
+     }
+   line = evas_textblock_cursor_char_geometry_get(cur1, &cx, &cy, &cw, &ch);
+   if (line < 0) return NULL;
+   line = evas_textblock_cursor_line_geometry_get(cur1, &lx, &ly, &lw, &lh);
+   if (line < 0) return NULL;
+   line2 = evas_textblock_cursor_line_geometry_get(cur2, NULL, NULL, NULL, NULL);
+   if (line2 < 0) return NULL;
+   if (line == line2)
+     {
+       tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
+       rects = evas_list_append(rects, tr);
+       tr->x = cx;
+       tr->y = ly;
+       tr->h = lh;
+       line = evas_textblock_cursor_char_geometry_get(cur2, &cx, &cy, &cw, &ch);
+       if (line < 0)
+         {
+            while (rects)
+              {
+                 free(rects->data);
+                 rects = evas_list_remove_list(rects, rects);
+              }
+            return NULL;
+         }
+       tr->w = cx + cw - tr->x;
+     }
+   else
+     {
+       tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
+       rects = evas_list_append(rects, tr);
+       tr->x = cx;
+       tr->y = ly;
+       tr->h = lh;
+       tr->w = lx + lw - cx;
+       for (i = line +1; i < line2; i++)
+         {
+            evas_object_textblock_line_number_geometry_get(cur1->obj, i, &lx, &ly, &lw, &lh);
+            tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
+            rects = evas_list_append(rects, tr);
+            tr->x = lx;
+            tr->y = ly;
+            tr->h = lh;
+            tr->w = lw;
+         }
+       line = evas_textblock_cursor_char_geometry_get(cur2, &cx, &cy, &cw, &ch);
+       if (line < 0)
+         {
+            while (rects)
+              {
+                 free(rects->data);
+                 rects = evas_list_remove_list(rects, rects);
+              }
+            return NULL;
+         }
+       line = evas_textblock_cursor_line_geometry_get(cur2, &lx, &ly, &lw, &lh);
+       if (line < 0)
+         {
+            while (rects)
+              {
+                 free(rects->data);
+                 rects = evas_list_remove_list(rects, rects);
+              }
+            return NULL;
+         }
+       tr = calloc(1, sizeof(Evas_Textblock_Rectangle));
+       rects = evas_list_append(rects, tr);
+       tr->x = lx;
+       tr->y = ly;
+       tr->h = lh;
+       tr->w = cx + cw - lx;
+     }
+   return rects;
+}
+
+/* general controls */
+/*
+ * to be documented.
+ * @param obj to be documented.
+ * @param line to be documented.
+ * @param cx to be documented.
+ * @param cy to be documented.
+ * @param cw to be documented.
+ * @param ch to be documented.
+ * @return to be documented.
+ */
+EAPI Evas_Bool
+evas_object_textblock_line_number_geometry_get(const Evas_Object *obj, int line, Evas_Coord *cx, Evas_Coord *cy, Evas_Coord *cw, Evas_Coord *ch)
+{
+   Evas_Object_Textblock_Line *ln;
+   
+   TB_HEAD_RETURN(0);
+   ln = _find_layout_line_num(obj, line);
+   if (!ln) return 0;
+   if (cx) *cx = ln->x;
+   if (cy) *cy = ln->y;
+   if (cw) *cw = ln->w;
+   if (ch) *ch = ln->h;
+   return 1;
+}
+
+/*
+ * to be documented.
+ * @param obj to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_object_textblock_clear(Evas_Object *obj)
+{
+   Evas_List *l;
+   
+   TB_HEAD();
+   _nodes_clear(obj);
+   o->cursor->node = NULL;
+   o->cursor->pos = 0;
+   for (l = o->cursors; l; l = l->next)
+     {
+       Evas_Textblock_Cursor *cur;
+       
+       cur = (Evas_Textblock_Cursor *)l->data;
+       cur->node = NULL;
+       cur->pos = 0;
+     }
+   if (o->markup_text)
+     {
+       free(o->markup_text);
+       o->markup_text = NULL;
+     }
+   if (o->lines)
+     {
+       _lines_clear(obj, o->lines);
+       o->lines = NULL;
+     }
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   o->changed = 1;
+   evas_object_change(obj);
+   /* FIXME: adjust cursors that are affected by the change */
+}
+
+/*
+ * to be documented.
+ * @param obj to be documented.
+ * @param w to be documented.
+ * @param h to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_object_textblock_size_formatted_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
+{
+   TB_HEAD();
+   if (!o->formatted.valid) _relayout(obj);
+   if (w) *w = o->formatted.w;
+   if (h) *h = o->formatted.h;
+}
+
+/*
+ * to be documented.
+ * @param obj to be documented.
+ * @param w to be documented.
+ * @param h to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_object_textblock_size_native_get(const Evas_Object *obj, Evas_Coord *w, Evas_Coord *h)
+{
+   TB_HEAD();
+   if (!o->native.valid)
+     {
+       _layout(obj, 
+               1,
+               -1, -1,
+               &o->native.w, &o->native.h);
+       o->native.valid = 1;
+     }
+   if (w) *w = o->native.w;
+   if (h) *h = o->native.h;
+}
+
+/*
+ * to be documented.
+ * @param obj to be documented.
+ * @param l to be documented.
+ * @param r to be documented.
+ * @param t to be documented.
+ * @param b to be documented.
+ * @return Returns no value.
+ */
+EAPI void
+evas_object_textblock_style_insets_get(const Evas_Object *obj, Evas_Coord *l, Evas_Coord *r, Evas_Coord *t, Evas_Coord *b)
+{
+   TB_HEAD();
+   if (!o->formatted.valid) _relayout(obj);
+   if (l) *l = o->style_pad.l;
+   if (r) *r = o->style_pad.r;
+   if (t) *t = o->style_pad.t;
+   if (b) *b = o->style_pad.b;
+}
+
+/* all nice and private */
+static void
+evas_object_textblock_init(Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+
+   /* alloc image ob, setup methods and default values */
+   obj->object_data = evas_object_textblock_new();
+   /* set up default settings for this kind of object */
+   obj->cur.color.r = 255;
+   obj->cur.color.g = 255;
+   obj->cur.color.b = 255;
+   obj->cur.color.a = 255;
+   obj->cur.geometry.x = 0.0;
+   obj->cur.geometry.y = 0.0;
+   obj->cur.geometry.w = 0.0;
+   obj->cur.geometry.h = 0.0;
+   obj->cur.layer = 0;
+   /* set up object-specific settings */
+   obj->prev = obj->cur;
+   /* set up methods (compulsory) */
+   obj->func = &object_func;
+   obj->type = o_type;
+
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   o->cursor->obj = obj;
+}
+
+static void *
+evas_object_textblock_new(void)
+{
+   Evas_Object_Textblock *o;
+
+   /* alloc obj private data */
+   o = calloc(1, sizeof(Evas_Object_Textblock));
+   o->magic = MAGIC_OBJ_TEXTBLOCK;
+   o->cursor = calloc(1, sizeof(Evas_Textblock_Cursor));
+   return o;
+}
+
+static void
+evas_object_textblock_free(Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+
+   evas_object_textblock_clear(obj);
+   evas_object_textblock_style_set(obj, NULL);
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   free(o->cursor);
+   while (o->cursors)
+     {
+       Evas_Textblock_Cursor *cur;
+       
+       cur = (Evas_Textblock_Cursor *)o->cursors->data;
+       o->cursors = evas_list_remove_list(o->cursors, o->cursors);
+       free(cur);
+     }
+   o->magic = 0;
+   free(o);
+}
+
+static void
+evas_object_textblock_render(Evas_Object *obj, void *output, void *context, void *surface, int x, int y)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_List *l, *ll;
+   int i, j;
+   int pback = 0, backx = 0;
+   int pline = 0, linex = 0;
+   int pline2 = 0, line2x = 0;
+   int pstrike = 0, strikex = 0;
+   int x2;
+   unsigned char r = 0, g = 0, b = 0, a = 0;
+   unsigned char r2 = 0, g2 = 0, b2 = 0, a2 = 0;
+   unsigned char r3 = 0, g3 = 0, b3 = 0, a3 = 0;
+   const char vals[5][5] =
+     {
+         {0, 1, 2, 1, 0},
+         {1, 3, 4, 3, 1},
+         {2, 4, 5, 4, 2},
+         {1, 3, 4, 3, 1},
+         {0, 1, 2, 1, 0}
+     };
+
+   /* render object to surface with context, and offxet by x,y */
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   obj->layer->evas->engine.func->context_multiplier_unset(output,
+                                                          context);
+#if 0 /* using for some debugging. will go soon */
+    obj->layer->evas->engine.func->context_color_set(output,
+                                                     context,
+                                                     230, 160, 30, 100);
+    obj->layer->evas->engine.func->rectangle_draw(output,
+                                                  context,
+                                                  surface,
+                                                  obj->cur.geometry.x + x,
+                                                  obj->cur.geometry.y + y,
+                                                  obj->cur.geometry.w,
+                                                  obj->cur.geometry.h);
+////                                                  obj->cur.cache.geometry.x + x,
+////                                                  obj->cur.cache.geometry.y + y,
+////                                                  obj->cur.cache.geometry.w,
+////                                                  obj->cur.cache.geometry.h);
+#endif
+#define ITEM_WALK() \
+   for (l = (Evas_Object_List *)o->lines; l; l = l->next) \
+     { \
+       Evas_Object_Textblock_Line *ln; \
+       \
+       ln = (Evas_Object_Textblock_Line *)l; \
+        pback = 0; \
+        pline = 0; \
+        pline2 = 0; \
+       pstrike = 0; \
+       for (ll = (Evas_Object_List *)ln->items; ll; ll = ll->next) \
+         { \
+            Evas_Object_Textblock_Item *it; \
+            int yoff; \
+            \
+            it = (Evas_Object_Textblock_Item *)ll; \
+            yoff = ln->baseline; \
+            if (it->format->valign != -1.0) \
+              yoff = (it->format->valign * (double)(ln->h - it->h)) + it->baseline;
+#define ITEM_WALK_END() \
+         } \
+     }
+#define COLOR_SET(col) \
+       ENFN->context_color_set(output, context, \
+                               (obj->cur.cache.clip.r * it->format->color.col.r) / 255, \
+                               (obj->cur.cache.clip.g * it->format->color.col.g) / 255, \
+                               (obj->cur.cache.clip.b * it->format->color.col.b) / 255, \
+                               (obj->cur.cache.clip.a * it->format->color.col.a) / 255);
+#define COLOR_SET_AMUL(col, amul) \
+       ENFN->context_color_set(output, context, \
+                               (obj->cur.cache.clip.r * it->format->color.col.r * (amul)) / 65025, \
+                               (obj->cur.cache.clip.g * it->format->color.col.g * (amul)) / 65025, \
+                               (obj->cur.cache.clip.b * it->format->color.col.b * (amul)) / 65025, \
+                               (obj->cur.cache.clip.a * it->format->color.col.a * (amul)) / 65025);
+#define DRAW_TEXT(ox, oy) \
+   if (it->format->font.font) ENFN->font_draw(output, context, surface, it->format->font.font, \
+                                                obj->cur.geometry.x + ln->x + it->x - it->inset + x + (ox), \
+                                                obj->cur.geometry.y + ln->y + yoff + y + (oy), \
+                                                it->w, it->h, it->w, it->h, it->text);
+#if 0
+#define DRAW_TEXT(ox, oy) \
+   if (it->format->font.font) ENFN->font_draw(output, context, surface, it->format->font.font, \
+                                                obj->cur.geometry.x + ln->x + it->x - it->inset + x + (ox), \
+                                                obj->cur.geometry.y + ln->y + yoff + y + (oy), \
+                                                obj->cur.cache.geometry.x + ln->x + it->x - it->inset + x + (ox), \
+                                                obj->cur.cache.geometry.y + ln->y + yoff + y + (oy), \
+                                                it->w, it->h, it->w, it->h, it->text);
+#endif
+   
+   pback = 0;
+   /* backing */
+   ITEM_WALK();
+   if ((it->format->backing) && (!pback) && (ll->next))
+     {
+       pback = 1;
+       backx = it->x;
+       r = it->format->color.backing.r;
+       g = it->format->color.backing.g;
+       b = it->format->color.backing.b;
+       a = it->format->color.backing.a;
+     }
+   else if (((pback) && (!it->format->backing)) ||
+           (!ll->next) ||
+           (it->format->color.backing.r != r) ||
+           (it->format->color.backing.g != g) ||
+           (it->format->color.backing.b != b) ||
+           (it->format->color.backing.a != a))
+     {
+       if ((it->format->backing) && (!pback))
+         {
+            backx = it->x;
+            r = it->format->color.backing.r;
+            g = it->format->color.backing.g;
+            b = it->format->color.backing.b;
+            a = it->format->color.backing.a;
+         }
+       x2 = it->x + it->w;
+       if (!it->format->backing)
+         {
+            x2 = it->x;
+            pback = 0;
+         }
+       if (x2 > backx)
+         {
+            ENFN->context_color_set(output,
+                                    context,
+                                    (obj->cur.cache.clip.r * r) / 255,
+                                    (obj->cur.cache.clip.g * g) / 255,
+                                    (obj->cur.cache.clip.b * b) / 255,
+                                    (obj->cur.cache.clip.a * a) / 255);
+            ENFN->rectangle_draw(output,
+                                 context,
+                                 surface,
+                                 obj->cur.geometry.x + ln->x + backx + x,
+                                 obj->cur.geometry.y + ln->y + y,
+////                             obj->cur.cache.geometry.x + ln->x + backx + x,
+////                             obj->cur.cache.geometry.y + ln->y + y,
+                                 x2 - backx,
+                                 ln->h);
+         }
+       if (it->format->backing) pback = 1;
+       backx = it->x;
+       r = it->format->color.backing.r;
+       g = it->format->color.backing.g;
+       b = it->format->color.backing.b;
+       a = it->format->color.backing.a;
+     }
+   ITEM_WALK_END();
+   
+   /* shadows */
+   ITEM_WALK();
+   if (it->format->style == EVAS_TEXT_STYLE_SHADOW)
+     {
+       COLOR_SET(shadow);
+       DRAW_TEXT(1, 1);
+     }
+   else if ((it->format->style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
+           (it->format->style == EVAS_TEXT_STYLE_FAR_SHADOW))
+     {
+       COLOR_SET(shadow);
+       DRAW_TEXT(2, 2);
+     }
+   else if ((it->format->style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW) ||
+           (it->format->style == EVAS_TEXT_STYLE_FAR_SOFT_SHADOW))
+     {
+       for (j = 0; j < 5; j++)
+         {
+            for (i = 0; i < 5; i++)
+              {
+                 if (vals[i][j] != 0)
+                   {
+                      COLOR_SET_AMUL(shadow, vals[i][j] * 50);
+                      DRAW_TEXT(i, j);
+                   }
+              }
+         }
+     }
+   else if (it->format->style == EVAS_TEXT_STYLE_SOFT_SHADOW)
+     {
+       for (j = 0; j < 5; j++)
+         {
+            for (i = 0; i < 5; i++)
+              {
+                 if (vals[i][j] != 0)
+                   {
+                      COLOR_SET_AMUL(shadow, vals[i][j] * 50);
+                      DRAW_TEXT(i - 1, j - 1);
+                   }
+              }
+         }
+     }
+   ITEM_WALK_END();
+   
+   /* glows */
+   ITEM_WALK();
+   if (it->format->style == EVAS_TEXT_STYLE_GLOW)
+     {
+       for (j = 0; j < 5; j++)
+         {
+            for (i = 0; i < 5; i++)
+              {
+                 if (vals[i][j] != 0)
+                   {
+                      COLOR_SET_AMUL(glow, vals[i][j] * 50);
+                      DRAW_TEXT(i - 2, j - 2);
+                   }
+              }
+         }
+       COLOR_SET(glow2);
+       DRAW_TEXT(-1, 0);
+       DRAW_TEXT(1, 0);
+       DRAW_TEXT(0, -1);
+       DRAW_TEXT(0, 1);
+     }
+   ITEM_WALK_END();
+   
+   /* outlines */
+   ITEM_WALK();
+   if ((it->format->style == EVAS_TEXT_STYLE_OUTLINE) ||
+       (it->format->style == EVAS_TEXT_STYLE_OUTLINE_SHADOW) ||
+       (it->format->style == EVAS_TEXT_STYLE_OUTLINE_SOFT_SHADOW))
+     {
+       COLOR_SET(outline);
+       DRAW_TEXT(-1, 0);
+       DRAW_TEXT(1, 0);
+       DRAW_TEXT(0, -1);
+       DRAW_TEXT(0, 1);
+     }
+   else if (it->format->style == EVAS_TEXT_STYLE_SOFT_OUTLINE)
+     {
+       for (j = 0; j < 5; j++)
+         {
+            for (i = 0; i < 5; i++)
+              {
+                 if (((i != 2) || (j != 2)) && (vals[i][j] != 0))
+                   {
+                      COLOR_SET_AMUL(outline, vals[i][j] * 50);
+                      DRAW_TEXT(i - 2, j - 2);
+                   }
+              }
+         }
+     }
+   ITEM_WALK_END();
+   
+   /* normal text */
+   ITEM_WALK();
+   COLOR_SET(normal);
+   DRAW_TEXT(0, 0);
+   if ((it->format->strikethrough) && (!pstrike) && (ll->next))
+     {
+       pstrike = 1;
+       strikex = it->x;
+       r3 = it->format->color.strikethrough.r;
+       g3 = it->format->color.strikethrough.g;
+       b3 = it->format->color.strikethrough.b;
+       a3 = it->format->color.strikethrough.a;
+     }
+   else if (((pstrike) && (!it->format->strikethrough)) ||
+           (!ll->next) ||
+           (it->format->color.strikethrough.r != r3) ||
+           (it->format->color.strikethrough.g != g3) ||
+           (it->format->color.strikethrough.b != b3) ||
+           (it->format->color.strikethrough.a != a3))
+     {
+       if ((it->format->strikethrough) && (!pstrike))
+         {
+            strikex = it->x;
+            r3 = it->format->color.strikethrough.r;
+            g3 = it->format->color.strikethrough.g;
+            b3 = it->format->color.strikethrough.b;
+            a3 = it->format->color.strikethrough.a;
+         }
+       x2 = it->x + it->w;
+       if (!it->format->strikethrough)
+         {
+            x2 = it->x;
+            pstrike = 0;
+         }
+       if (x2 > strikex)
+         {
+            ENFN->context_color_set(output,
+                                    context,
+                                    (obj->cur.cache.clip.r * r3) / 255,
+                                    (obj->cur.cache.clip.g * g3) / 255,
+                                    (obj->cur.cache.clip.b * b3) / 255,
+                                    (obj->cur.cache.clip.a * a3) / 255);
+            ENFN->rectangle_draw(output,
+                                 context,
+                                 surface,
+                                 obj->cur.geometry.x + ln->x + strikex + x,
+                                 obj->cur.geometry.y + ln->y + y + (ln->h / 2),
+////                             obj->cur.cache.geometry.x + ln->x + strikex + x,
+////                             obj->cur.cache.geometry.y + ln->y + y + (ln->h / 2),
+                                 x2 - strikex,
+                                 1);
+         }
+       if (it->format->strikethrough) pstrike = 1;
+       strikex = it->x;
+       r3 = it->format->color.strikethrough.r;
+       g3 = it->format->color.strikethrough.g;
+       b3 = it->format->color.strikethrough.b;
+       a3 = it->format->color.strikethrough.a;
+     }
+   if ((it->format->underline) && (!pline) && (ll->next))
+     {
+       pline = 1;
+       linex = it->x;
+       r = it->format->color.underline.r;
+       g = it->format->color.underline.g;
+       b = it->format->color.underline.b;
+       a = it->format->color.underline.a;
+     }
+   else if (((pline) && (!it->format->underline)) ||
+           (!ll->next) ||
+           (it->format->color.underline.r != r) ||
+           (it->format->color.underline.g != g) ||
+           (it->format->color.underline.b != b) ||
+           (it->format->color.underline.a != a))
+     {
+       if ((it->format->underline) && (!pline))
+         {
+            linex = it->x;
+            r = it->format->color.underline.r;
+            g = it->format->color.underline.g;
+            b = it->format->color.underline.b;
+            a = it->format->color.underline.a;
+         }
+       x2 = it->x + it->w;
+       if (!it->format->underline)
+         {
+            x2 = it->x;
+            pline = 0;
+         }
+       if (x2 > linex)
+         {
+            ENFN->context_color_set(output,
+                                    context,
+                                    (obj->cur.cache.clip.r * r) / 255,
+                                    (obj->cur.cache.clip.g * g) / 255,
+                                    (obj->cur.cache.clip.b * b) / 255,
+                                    (obj->cur.cache.clip.a * a) / 255);
+            ENFN->rectangle_draw(output,
+                                 context,
+                                 surface,
+                                 obj->cur.geometry.x + ln->x + linex + x,
+                                 obj->cur.geometry.y + ln->y + y + ln->baseline + 1,
+////                             obj->cur.cache.geometry.x + ln->x + linex + x,
+////                             obj->cur.cache.geometry.y + ln->y + y + ln->baseline + 1,
+                                 x2 - linex,
+                                 1);
+         }
+       if (it->format->underline) pline = 1;
+       linex = it->x;
+       r = it->format->color.underline.r;
+       g = it->format->color.underline.g;
+       b = it->format->color.underline.b;
+       a = it->format->color.underline.a;
+     }
+   if ((it->format->underline2) && (!pline2) && (ll->next))
+     {
+       pline2 = 1;
+       line2x = it->x;
+       r2 = it->format->color.underline2.r;
+       g2 = it->format->color.underline2.g;
+       b2 = it->format->color.underline2.b;
+       a2 = it->format->color.underline2.a;
+     }
+   else if (((pline2) && (!it->format->underline2)) ||
+           (!ll->next) ||
+           (it->format->color.underline2.r != r2) ||
+           (it->format->color.underline2.g != g2) ||
+           (it->format->color.underline2.b != b2) ||
+           (it->format->color.underline2.a != a2))
+     {
+       if ((it->format->underline2) && (!pline2))
+         {
+            line2x = it->x;
+            r2 = it->format->color.underline2.r;
+            g2 = it->format->color.underline2.g;
+            b2 = it->format->color.underline2.b;
+            a2 = it->format->color.underline2.a;
+         }
+       x2 = it->x + it->w;
+       if (!it->format->underline2)
+         {
+            x2 = it->x;
+            pline2 = 0;
+         }
+       if (x2 > line2x)
+         {
+            ENFN->context_color_set(output,
+                                    context,
+                                    (obj->cur.cache.clip.r * r2) / 255,
+                                    (obj->cur.cache.clip.g * g2) / 255,
+                                    (obj->cur.cache.clip.b * b2) / 255,
+                                    (obj->cur.cache.clip.a * a2) / 255);
+            ENFN->rectangle_draw(output,
+                                 context,
+                                 surface,
+                                 obj->cur.geometry.x + ln->x + line2x + x,
+                                 obj->cur.geometry.y + ln->y + y + ln->baseline + 3,
+////                             obj->cur.cache.geometry.x + ln->x + line2x + x,
+////                             obj->cur.cache.geometry.y + ln->y + y + ln->baseline + 3,
+                                 x2 - line2x,
+                                 1);
+         }
+       if (it->format->underline2) pline2 = 1;
+       line2x = it->x;
+       r2 = it->format->color.underline2.r;
+       g2 = it->format->color.underline2.g;
+       b2 = it->format->color.underline2.b;
+       a2 = it->format->color.underline2.a;
+     }
+   ITEM_WALK_END();
+}
+
+static void
+evas_object_textblock_render_pre(Evas_Object *obj)
+{
+   Evas_Rectangles rects = { 0, 0, NULL };
+   Evas_Object_Textblock *o;
+   int is_v, was_v;
+
+   /* dont pre-render the obj twice! */
+   if (obj->pre_render_done) return;
+   obj->pre_render_done = 1;
+   /* pre-render phase. this does anything an object needs to do just before */
+   /* rendering. this could mean loading the image data, retrieving it from */
+   /* elsewhere, decoding video etc. */
+   /* then when this is done the object needs to figure if it changed and */
+   /* if so what and where and add the appropriate redraw textblocks */
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   if ((o->changed) ||
+       (o->last_w != obj->cur.geometry.w))
+     {
+       Evas_Object_Textblock_Line *lines;
+
+       lines = o->lines;
+       o->lines = NULL;
+       o->formatted.valid = 0;
+       o->native.valid = 0;
+       _layout(obj, 
+               0,
+               obj->cur.geometry.w, obj->cur.geometry.h,
+               &o->formatted.w, &o->formatted.h);
+       o->formatted.valid = 1;
+       if (lines) _lines_clear(obj, lines);
+       o->last_w = obj->cur.geometry.w;
+       o->redraw = 0;
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       o->changed = 0;
+       is_v = evas_object_is_visible(obj);
+       was_v = evas_object_was_visible(obj);
+       goto done;
+     }
+   if (o->redraw)
+     {
+       o->redraw = 0;
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       o->changed = 0;
+       is_v = evas_object_is_visible(obj);
+       was_v = evas_object_was_visible(obj);
+       goto done;
+     }
+   /* if someone is clipping this obj - go calculate the clipper */
+   if (obj->cur.clipper)
+     {
+       if (obj->cur.cache.clip.dirty)
+         evas_object_clip_recalc(obj->cur.clipper);
+       obj->cur.clipper->func->render_pre(obj->cur.clipper);
+     }
+   /* now figure what changed and add draw rects */
+   /* if it just became visible or invisible */
+   is_v = evas_object_is_visible(obj);
+   was_v = evas_object_was_visible(obj);
+   if (is_v != was_v)
+     {
+       evas_object_render_pre_visible_change(&rects, obj, is_v, was_v);
+       goto done;
+     }
+   /* it's not visible - we accounted for it appearing or not so just abort */
+   if (!is_v) goto done;
+   /* clipper changed this is in addition to anything else for obj */
+   evas_object_render_pre_clipper_change(&rects, obj);
+   /* if we restacked (layer or just within a layer) and don't clip anyone */
+   if (obj->restack)
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed color */
+   if ((obj->cur.color.r != obj->prev.color.r) ||
+       (obj->cur.color.g != obj->prev.color.g) ||
+       (obj->cur.color.b != obj->prev.color.b) ||
+       (obj->cur.color.a != obj->prev.color.a))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   /* if it changed geometry - and obviously not visibility or color */
+   /* caluclate differences since we have a constant color fill */
+   /* we really only need to update the differences */
+   if ((obj->cur.geometry.x != obj->prev.geometry.x) ||
+       (obj->cur.geometry.y != obj->prev.geometry.y) ||
+       (obj->cur.geometry.w != obj->prev.geometry.w) ||
+       (obj->cur.geometry.h != obj->prev.geometry.h))
+     {
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       goto done;
+     }
+   if (o->changed)
+     {
+/*
+       Evas_Rectangle *r;
+
+       r = malloc(sizeof(Evas_Rectangle));
+       r->x = 0; r->y = 0;
+       r->w = obj->cur.geometry.w;
+       r->h = obj->cur.geometry.h;
+       updates = evas_list_append(updates, r);
+*/
+       evas_object_render_pre_prev_cur_add(&rects, obj);
+       o->changed = 0;
+     }
+   done:
+   evas_object_render_pre_effect_updates(&rects, obj, is_v, was_v);
+}
+
+static void
+evas_object_textblock_render_post(Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+
+   /* this moves the current data to the previous state parts of the object */
+   /* in whatever way is safest for the object. also if we don't need object */
+   /* data anymore we can free it if the object deems this is a good idea */
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   /* remove those pesky changes */
+   while (obj->clip.changes)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)obj->clip.changes->data;
+       obj->clip.changes = evas_list_remove(obj->clip.changes, r);
+       free(r);
+     }
+   /* move cur to prev safely for object data */
+   obj->prev = obj->cur;
+//   o->prev = o->cur;
+/*   o->changed = 0; */
+}
+
+static int
+evas_object_textblock_is_opaque(Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+
+   /* this returns 1 if the internal object data implies that the object is */
+   /* currently fulyl opque over the entire gradient it occupies */
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   return 0;
+}
+
+static int
+evas_object_textblock_was_opaque(Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+
+   /* this returns 1 if the internal object data implies that the object was */
+   /* currently fulyl opque over the entire gradient it occupies */
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   return 0;
+}
+
+static void
+evas_object_textblock_coords_recalc(Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   if (obj->cur.geometry.w != o->last_w)
+     {
+       o->formatted.valid = 0;
+       o->native.valid = 0;
+       o->changed = 1;
+     }
+}
+
+void
+_evas_object_textblock_rehint(Evas_Object *obj)
+{
+   Evas_Object_Textblock *o;
+   Evas_Object_List *l, *ll;
+   
+   o = (Evas_Object_Textblock *)(obj->object_data);
+   for (l = (Evas_Object_List *)o->lines; l; l = l->next)
+     {
+       Evas_Object_Textblock_Line *ln;
+       
+       ln = (Evas_Object_Textblock_Line *)l;
+       for (ll = (Evas_Object_List *)ln->items; ll; ll = ll->next)
+         {
+            Evas_Object_Textblock_Item *it;
+            
+            it = (Evas_Object_Textblock_Item *)ll;
+            if (it->format->font.font)
+              evas_font_load_hinting_set(obj->layer->evas,
+                                         it->format->font.font,
+                                         obj->layer->evas->hinting);
+         }
+     }
+   o->formatted.valid = 0;
+   o->native.valid = 0;
+   o->changed = 1;
+   evas_object_change(obj);
+}
diff --git a/src/lib/canvas/evas_rectangle.c b/src/lib/canvas/evas_rectangle.c
new file mode 100644 (file)
index 0000000..023442d
--- /dev/null
@@ -0,0 +1,101 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+void
+evas_rects_return_difference_rects(Evas_Rectangles *rects, int x, int y, int w, int h, int xx, int yy, int ww, int hh)
+{
+   unsigned int available = 0;
+
+   if (!RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh))
+     {
+       evas_add_rect(rects, x, y, w, h);
+       evas_add_rect(rects, xx, yy, ww, hh);
+     }
+   else
+     {
+       int x1[4], y1[4], i, j;
+       Evas_Rectangles tmp = { 0, 0, NULL };
+
+       if (x < xx)
+         {
+            x1[0] = x;
+            x1[1] = xx;
+         }
+       else
+         {
+            x1[0] = xx;
+            x1[1] = x;
+         }
+       if ((x + w) < (xx + ww))
+         {
+            x1[2] = x + w;
+            x1[3] = xx + ww;
+         }
+       else
+         {
+            x1[2] = xx + ww;
+            x1[3] = x + w;
+         }
+       if (y < yy)
+         {
+            y1[0] = y;
+            y1[1] = yy;
+         }
+       else
+         {
+            y1[0] = yy;
+            y1[1] = y;
+         }
+       if ((y + h) < (yy + hh))
+         {
+            y1[2] = y + h;
+            y1[3] = yy + hh;
+         }
+       else
+         {
+            y1[2] = yy + hh;
+            y1[3] = y + h;
+         }
+       for (j = 0; j < 3; j++)
+         {
+            for (i = 0; i < 3; i++)
+              {
+                 int intsec1, intsec2;
+                 int tx, ty, tw, th;
+
+                 tx = x1[i];
+                 ty = y1[j];
+                 tw = x1[i + 1] - x1[i];
+                 th = y1[j + 1] - y1[j];
+
+                 intsec1 = (RECTS_INTERSECT(tx, ty, tw, th, x, y, w, h));
+                 intsec2 = (RECTS_INTERSECT(tx, ty, tw, th, xx, yy, ww, hh));
+                 if (intsec1 ^ intsec2)
+                   {
+                      evas_add_rect(rects, tx, ty, tw, th);
+                   }
+              }
+         }
+/*     if (tmp.count > 0) */
+/*       { */
+/*          unsigned int i; */
+
+/*          for (i = 0; i < tmp.count; ++i) */
+/*            { */
+/*               if ((tmp.array[i].w > 0) && (tmp.array[i].h > 0)) */
+/*                 { */
+/*                    int intsec1, intsec2; */
+
+/*                    intsec1 = (RECTS_INTERSECT(tmp.array[i].x, tmp.array[i].y, tmp.array[i].w, tmp.array[i].h, x, y, w, h)); */
+/*                    intsec2 = (RECTS_INTERSECT(tmp.array[i].x, tmp.array[i].y, tmp.array[i].w, tmp.array[i].h, xx, yy, ww, hh)); */
+/*                    if (intsec1 ^ intsec2) */
+/*                      { */
+/*                         evas_add_rect(rects, tmp.array[i].x, tmp.array[i].y, tmp.array[i].w, tmp.array[i].h); */
+/*                      } */
+/*                 } */
+/*            } */
+/*          free(tmp.array); */
+/*       } */
+
+     }
+}
diff --git a/src/lib/canvas/evas_render.c b/src/lib/canvas/evas_render.c
new file mode 100644 (file)
index 0000000..8eb6a96
--- /dev/null
@@ -0,0 +1,732 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+static Evas_List *
+evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char do_draw);
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_damage_rectangle_add(Evas *e, int x, int y, int w, int h)
+{
+   Evas_Rectangle *r;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   r = malloc(sizeof(Evas_Rectangle));
+   if (!r) return;
+   r->x = x; r->y = y; r->w = w; r->h = h;
+   e->damages = evas_list_append(e->damages, r);
+   e->changed = 1;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_obscured_rectangle_add(Evas *e, int x, int y, int w, int h)
+{
+   Evas_Rectangle *r;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   r = malloc(sizeof(Evas_Rectangle));
+   if (!r) return;
+   r->x = x; r->y = y; r->w = w; r->h = h;
+   e->obscures = evas_list_append(e->obscures, r);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_obscured_clear(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+   while (e->obscures)
+     {
+       Evas_Rectangle *r;
+
+       r = (Evas_Rectangle *)e->obscures->data;
+       e->obscures = evas_list_remove(e->obscures, r);
+       free(r);
+     }
+}
+
+static void
+_evas_render_phase1_direct(Evas *e, Evas_Array *render_objects)
+{
+   unsigned int i;
+
+   for (i = 0; i < render_objects->count; ++i)
+     {
+       Evas_Object *obj;
+
+       obj = _evas_array_get(render_objects, i);
+       if (obj->changed) obj->func->render_pre(obj);
+       else
+         {
+            if (obj->smart.smart)
+              obj->func->render_pre(obj);
+            else
+              if (obj->rect_del)
+                {
+                   e->engine.func->output_redraws_rect_del(e->engine.data.output,
+                                                           obj->cur.cache.clip.x,
+                                                           obj->cur.cache.clip.y,
+                                                           obj->cur.cache.clip.w,
+                                                           obj->cur.cache.clip.h);
+                }
+         }
+     }
+}
+
+static Evas_Bool
+_evas_render_phase1_object_process(Evas *e, Evas_Object *obj, Evas_Array *active_objects, Evas_Array *restack_objects, Evas_Array *delete_objects, Evas_Array *render_objects, int restack)
+{
+   int clean_them = 0;
+   int is_active;
+
+   obj->rect_del = 0;
+   obj->render_pre = 0;
+
+/* if (obj->cur.cache.clip.dirty) */
+   evas_object_clip_recalc(obj);
+   /* because of clip objects - delete 2 cycles later */
+   if (obj->delete_me == 2)
+     _evas_array_append(delete_objects, obj);
+   else if (obj->delete_me != 0) obj->delete_me++;
+   /* If the object will be removed, we should not cache anything during this run. */
+   if (obj->delete_me != 0)
+     clean_them = 1;
+
+   /* build active object list */
+   is_active = evas_object_is_active(obj);
+
+   obj->is_active = is_active;
+   if ((is_active) || (obj->delete_me != 0))
+     _evas_array_append(active_objects, obj);
+   if (restack)
+     {
+       if (!obj->changed)
+         _evas_array_append(&e->pending_objects, obj);
+       obj->restack = 1;
+       obj->changed = 1;
+       clean_them = 1;
+     }
+   if (obj->changed)
+     {
+       if (obj->smart.smart)
+         {
+            const Evas_Object_List *l;
+
+            _evas_array_append(render_objects, obj);
+            obj->render_pre = 1;
+            for (l = evas_object_smart_members_get_direct(obj); l; l = l->next)
+              {
+                 Evas_Object *obj2;
+
+                 obj2 = (Evas_Object *)l;
+                 _evas_render_phase1_object_process(e, obj2,
+                                                    active_objects,
+                                                    restack_objects,
+                                                    delete_objects,
+                                                    render_objects,
+                                                    obj->restack);
+              }
+         }
+       else
+         {
+            if ((is_active) && (obj->restack) && (!obj->clip.clipees) &&
+                ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
+                 (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
+               _evas_array_append(restack_objects, obj);
+            else if ((is_active) && (!obj->clip.clipees) &&
+                     ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
+                      (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
+              {
+                 _evas_array_append(render_objects, obj);
+                 obj->render_pre = 1;
+              }
+         }
+     }
+   else
+     {
+       if ((!obj->clip.clipees) && (obj->delete_me == 0) &&
+           ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
+            (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
+         {
+            if (obj->smart.smart)
+              {
+                 const Evas_Object_List *l;
+
+                 _evas_array_append(render_objects, obj);
+                 obj->render_pre = 1;
+                 for (l = evas_object_smart_members_get_direct(obj); l; l = l->next)
+                   {
+                      Evas_Object *obj2;
+
+                      obj2 = (Evas_Object *)l;
+                      _evas_render_phase1_object_process(e, obj2,
+                                                         active_objects,
+                                                         restack_objects,
+                                                         delete_objects,
+                                                         render_objects,
+                                                         restack);
+                   }
+              }
+            else
+              {
+                 if (evas_object_is_opaque(obj) &&
+                     evas_object_is_visible(obj))
+                   {
+                      _evas_array_append(render_objects, obj);
+                      obj->rect_del = 1;
+                   }
+              }
+         }
+     }
+   if (!is_active) obj->restack = 0;
+   return clean_them;
+}
+
+static Evas_Bool
+_evas_render_phase1_process(Evas *e, Evas_Array *active_objects, Evas_Array *restack_objects, Evas_Array *delete_objects, Evas_Array *render_objects)
+{
+   Evas_Object_List *l;
+   int clean_them = 0;
+
+   for (l = (Evas_Object_List *)e->layers; l; l = l->next)
+     {
+       Evas_Object_List *l2;
+       Evas_Layer *lay;
+
+       lay = (Evas_Layer *)l;
+       for (l2 = (Evas_Object_List *)lay->objects; l2; l2 = l2->next)
+         {
+            Evas_Object *obj;
+
+            obj = (Evas_Object *)l2;
+            clean_them |= _evas_render_phase1_object_process(e, obj,
+                                                             active_objects, restack_objects,
+                                                             delete_objects, render_objects,
+                                                             0);
+         }
+     }
+
+   return clean_them;
+}
+
+static void
+_evas_render_check_pending_objects(Evas_Array *pending_objects, Evas *e)
+{
+   unsigned int i;
+
+   for (i = 0; i < pending_objects->count; ++i)
+     {
+       Evas_Object *obj;
+       int ok = 0;
+       int is_active;
+
+       obj = _evas_array_get(pending_objects, i);
+
+       if (!obj->layer) goto clean_stuff;
+
+       evas_object_clip_recalc(obj);
+       is_active = evas_object_is_active(obj);
+
+       if (!is_active &&
+           !obj->is_active &&
+           !obj->render_pre &&
+           !obj->rect_del)
+         {
+            ok = 1;
+            goto clean_stuff;
+         }
+
+       if (obj->is_active == is_active)
+         {
+            if (obj->changed)
+              {
+                 if (obj->smart.smart)
+                   {
+                      if (obj->render_pre
+                          || obj->rect_del)
+                        ok = 1;
+                   }
+                 else
+                   if ((is_active) && (obj->restack) && (!obj->clip.clipees) &&
+                       ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
+                        (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
+                     {
+                        if (!(obj->render_pre
+                              || obj->rect_del))
+                          ok = 1;
+                     }
+                   else
+                     if (is_active && (!obj->clip.clipees) &&
+                         ((evas_object_is_visible(obj) && (!obj->cur.have_clipees)) ||
+                          (evas_object_was_visible(obj) && (!obj->prev.have_clipees))))
+                       {
+                          if (obj->render_pre
+                              || obj->rect_del)
+                            ok = 1;
+                       }
+              }
+            else
+              {
+                 if ((!obj->clip.clipees) && (obj->delete_me == 0) &&
+                     (!obj->cur.have_clipees || (evas_object_was_visible(obj) && (!obj->prev.have_clipees)))
+                     && evas_object_is_opaque(obj) && evas_object_is_visible(obj))
+                   if (obj->rect_del || obj->smart.smart)
+                     {
+                        ok = 1;
+                     }
+              }
+         }
+
+     clean_stuff:
+       if (!ok)
+         {
+            evas_array_clean(&e->active_objects);
+            evas_array_clean(&e->render_objects);
+
+            evas_array_clean(&e->restack_objects);
+            evas_array_clean(&e->delete_objects);
+
+            e->invalidate = 1;
+
+            return ;
+         }
+     }
+}
+
+Evas_Bool pending_change(void *data, void *gdata)
+{
+   Evas_Object *obj;
+
+   obj = data;
+   if (obj->delete_me) return 0;
+   if (!obj->layer) obj->changed = 0;
+   return obj->changed;
+}
+
+static Evas_List *
+evas_render_updates_internal(Evas *e, unsigned char make_updates, unsigned char do_draw)
+{
+   Evas_List *updates = NULL;
+   Evas_List *ll;
+   void *surface;
+   Evas_Bool clean_them = 0;
+   int ux, uy, uw, uh;
+   int cx, cy, cw, ch;
+   unsigned int i, j;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (!e->changed) return NULL;
+
+   /* Check if the modified object mean recalculating every thing */
+   if (!e->invalidate)
+     _evas_render_check_pending_objects(&e->pending_objects, e);
+
+   /* phase 1. add extra updates for changed objects */
+   if (e->invalidate || e->render_objects.count <= 0)
+     clean_them = _evas_render_phase1_process(e, &e->active_objects, &e->restack_objects, &e->delete_objects, &e->render_objects);
+
+   _evas_render_phase1_direct(e, &e->render_objects);
+
+   /* phase 2. force updates for restacks */
+   for (i = 0; i < e->restack_objects.count; ++i)
+     {
+       Evas_Object *obj;
+
+       obj = _evas_array_get(&e->restack_objects, i);
+       obj->func->render_pre(obj);
+       e->engine.func->output_redraws_rect_add(e->engine.data.output,
+                                               obj->prev.cache.clip.x,
+                                               obj->prev.cache.clip.y,
+                                               obj->prev.cache.clip.w,
+                                               obj->prev.cache.clip.h);
+       e->engine.func->output_redraws_rect_add(e->engine.data.output,
+                                               obj->cur.cache.clip.x,
+                                               obj->cur.cache.clip.y,
+                                               obj->cur.cache.clip.w,
+                                               obj->cur.cache.clip.h);
+     }
+   evas_array_clean(&e->restack_objects);
+   /* phase 3. add exposes */
+   while (e->damages)
+     {
+       Evas_Rectangle *r;
+
+       r = e->damages->data;
+       e->damages = evas_list_remove(e->damages, r);
+       e->engine.func->output_redraws_rect_add(e->engine.data.output,
+                                              r->x, r->y, r->w, r->h);
+       free(r);
+     }
+   /* phase 4. output & viewport changes */
+   if (e->viewport.changed)
+     {
+       e->engine.func->output_redraws_rect_add(e->engine.data.output,
+                                               0, 0,
+                                               e->output.w, e->output.h);
+     }
+   if (e->output.changed)
+     {
+       e->engine.func->output_resize(e->engine.data.output,
+                                     e->output.w, e->output.h);
+       e->engine.func->output_redraws_rect_add(e->engine.data.output,
+                                               0, 0,
+                                               e->output.w, e->output.h);
+     }
+   if ((e->output.w != e->viewport.w) || (e->output.h != e->viewport.h))
+     {
+       printf("EVAS: error: viewport size != output size!\n");
+     }
+   /* phase 5. add obscures */
+   for (ll = e->obscures; ll; ll = ll->next)
+     {
+       Evas_Rectangle *r;
+
+       r = ll->data;
+       e->engine.func->output_redraws_rect_del(e->engine.data.output,
+                                              r->x, r->y, r->w, r->h);
+     }
+   /* build obscure objects list of active objects that obscure */
+   for (i = 0; i < e->active_objects.count; ++i)
+     {
+       Evas_Object *obj;
+
+       obj = _evas_array_get(&e->active_objects, i);
+       if (UNLIKELY(evas_object_is_opaque(obj) &&
+                     evas_object_is_visible(obj) &&
+                     (!obj->clip.clipees) &&
+                     (obj->cur.visible) &&
+                     (!obj->delete_me) &&
+                     (obj->cur.cache.clip.visible) &&
+                     (!obj->smart.smart)))
+/*       obscuring_objects = evas_list_append(obscuring_objects, obj); */
+         _evas_array_append(&e->obscuring_objects, obj);
+     }
+   /* save this list */
+/*    obscuring_objects_orig = obscuring_objects; */
+/*    obscuring_objects = NULL; */
+   /* phase 6. go thru each update rect and render objects in it*/
+   if (do_draw)
+     {
+       unsigned int offset = 0;
+
+       while ((surface =
+               e->engine.func->output_redraws_next_update_get(e->engine.data.output,
+                                                              &ux, &uy, &uw, &uh,
+                                                              &cx, &cy, &cw, &ch)))
+         {
+            int off_x, off_y;
+
+            if (make_updates)
+              {
+                 Evas_Rectangle *rect;
+
+                 rect = malloc(sizeof(Evas_Rectangle));
+                 if (rect)
+                   {
+                      rect->x = ux; rect->y = uy; rect->w = uw; rect->h = uh;
+                      updates = evas_list_append(updates, rect);
+                   }
+              }
+            off_x = cx - ux;
+            off_y = cy - uy;
+            /* build obscuring objects list (in order from bottom to top) */
+            for (i = 0; i < e->obscuring_objects.count; ++i)
+              {
+                 Evas_Object *obj;
+
+                 obj = (Evas_Object *) _evas_array_get(&e->obscuring_objects, i);
+                 if (evas_object_is_in_output_rect(obj, ux, uy, uw, uh))
+                   _evas_array_append(&e->temporary_objects, obj);
+              }
+            /* render all object that intersect with rect */
+             for (i = 0; i < e->active_objects.count; ++i)
+              {
+                 Evas_Object *obj;
+
+                 obj = _evas_array_get(&e->active_objects, i);
+
+                 /* if it's in our outpout rect and it doesn't clip anything */
+                 if (evas_object_is_in_output_rect(obj, ux, uy, uw, uh) &&
+                     (!obj->clip.clipees) &&
+                     (obj->cur.visible) &&
+                     (!obj->delete_me) &&
+                     (obj->cur.cache.clip.visible) &&
+                     (!obj->smart.smart) &&
+                     (obj->cur.color.a > 0))
+                   {
+                      int x, y, w, h;
+
+                      if ((e->temporary_objects.count > offset) &&
+                          (_evas_array_get(&e->temporary_objects, offset) == obj))
+                        offset++;
+                      x = cx; y = cy; w = cw; h = ch;
+                      RECTS_CLIP_TO_RECT(x, y, w, h,
+                                         obj->cur.cache.clip.x + off_x,
+                                         obj->cur.cache.clip.y + off_y,
+                                         obj->cur.cache.clip.w,
+                                         obj->cur.cache.clip.h);
+                      if ((w > 0) && (h > 0))
+                        {
+///                   printf("CLIP: %p | %i %i, %ix%i | %p %i %i %ix%i\n",
+///                          obj,
+///                          x, y, w, h,
+///                          obj->cur.clipper,
+///                          obj->cur.cache.clip.x + off_x,
+///                          obj->cur.cache.clip.y + off_y,
+///                          obj->cur.cache.clip.w,
+///                          obj->cur.cache.clip.h
+///                          );
+///                        if (((obj->cur.cache.clip.x + off_x) == 0) &&
+///                            ((obj->cur.cache.clip.w) == 960))
+///                          {
+///                             abort();
+///                          }
+
+                           e->engine.func->context_clip_set(e->engine.data.output,
+                                                            e->engine.data.context,
+                                                            x, y, w, h);
+#if 1 /* FIXME: this can slow things down... figure out optimum... coverage */
+                           for (j = offset; j < e->temporary_objects.count; ++j)
+                             {
+                                Evas_Object *obj2;
+
+                                obj2 = (Evas_Object *) _evas_array_get(&e->temporary_objects, j);
+                                e->engine.func->context_cutout_add(e->engine.data.output,
+                                                                   e->engine.data.context,
+                                                                   obj2->cur.cache.clip.x + off_x,
+                                                                   obj2->cur.cache.clip.y + off_y,
+                                                                   obj2->cur.cache.clip.w,
+                                                                   obj2->cur.cache.clip.h);
+                             }
+#endif
+                           obj->func->render(obj,
+                                             e->engine.data.output,
+                                             e->engine.data.context,
+                                             surface,
+                                             off_x, off_y);
+                           e->engine.func->context_cutout_clear(e->engine.data.output,
+                                                                e->engine.data.context);
+                        }
+                   }
+              }
+            /* punch rect out */
+            e->engine.func->output_redraws_next_update_push(e->engine.data.output,
+                                                            surface,
+                                                            ux, uy, uw, uh);
+            /* free obscuring objects list */
+            evas_array_clean(&e->temporary_objects);
+         }
+       /* flush redraws */
+       e->engine.func->output_flush(e->engine.data.output);
+     }
+   /* clear redraws */
+   e->engine.func->output_redraws_clear(e->engine.data.output);
+   /* and do a post render pass */
+   for (i = 0; i < e->active_objects.count; ++i)
+     {
+       Evas_Object *obj;
+
+       obj = _evas_array_get(&e->active_objects, i);
+       obj->pre_render_done = 0;
+       if ((obj->changed) && (do_draw))
+         {
+            obj->func->render_post(obj);
+            obj->restack = 0;
+            obj->changed = 0;
+         }
+/* moved to other pre-process phase 1
+       if (obj->delete_me == 2)
+         {
+            delete_objects = evas_list_append(delete_objects, obj);
+         }
+       else if (obj->delete_me != 0) obj->delete_me++;
+ */
+     }
+   /* free our obscuring object list */
+   evas_array_clean(&e->obscuring_objects);
+
+   /* If some object are still marked as changed, do not remove
+      them from the pending list. */
+   evas_array_remove(&e->pending_objects, pending_change, NULL);
+
+   /* delete all objects flagged for deletion now */
+   for (i = 0; i < e->delete_objects.count; ++i)
+     {
+       Evas_Object *obj;
+
+       obj = _evas_array_get(&e->delete_objects, i);
+       evas_object_free(obj, 1);
+     }
+   evas_array_clean(&e->delete_objects);
+
+   e->changed = 0;
+   e->viewport.changed = 0;
+   e->output.changed = 0;
+   e->invalidate = 0;
+
+   /* If their are some object to restack or some object to delete, it's useless to keep the render object list around. */
+   if (clean_them)
+     {
+       evas_array_clean(&e->active_objects);
+       evas_array_clean(&e->render_objects);
+
+       e->invalidate = 1;
+     }
+
+   evas_module_clean();
+
+   return updates;
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_render_updates_free(Evas_List *updates)
+{
+   while (updates)
+     {
+       free(updates->data);
+       updates = evas_list_remove(updates, updates->data);
+     }
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI Evas_List *
+evas_render_updates(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+
+   if (!e->changed) return NULL;
+   return evas_render_updates_internal(e, 1, 1);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_render(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if (!e->changed) return;
+   evas_render_updates_internal(e, 0, 1);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_norender(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+//   if (!e->changed) return;
+   evas_render_updates_internal(e, 0, 0);
+}
+
+/**
+ * To be documented.
+ *
+ * FIXME: To be fixed.
+ *
+ */
+EAPI void
+evas_render_idle_flush(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   if ((e->engine.func) && (e->engine.func->output_idle_flush) &&
+       (e->engine.data.output))
+     e->engine.func->output_idle_flush(e->engine.data.output);
+
+   evas_array_flush(&e->delete_objects);
+   evas_array_flush(&e->active_objects);
+   evas_array_flush(&e->restack_objects);
+   evas_array_flush(&e->render_objects);
+
+   e->invalidate = 1;
+}
+
+void
+evas_render_invalidate(Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return;
+   MAGIC_CHECK_END();
+
+   evas_array_clean(&e->active_objects);
+   evas_array_clean(&e->render_objects);
+
+   evas_array_flush(&e->restack_objects);
+   evas_array_flush(&e->delete_objects);
+
+   e->invalidate = 1;
+}
+
+void
+evas_render_object_recalc(Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+
+   if ((!obj->changed) && (obj->delete_me < 2))
+     {
+       Evas    *e;
+
+       e = obj->layer->evas;
+       if (!e || e->cleanup) return ;
+
+       if (!obj->changed)
+         _evas_array_append(&e->pending_objects, obj);
+       obj->changed = 1;
+     }
+}
+
diff --git a/src/lib/canvas/evas_smart.c b/src/lib/canvas/evas_smart.c
new file mode 100644 (file)
index 0000000..4fcb8c8
--- /dev/null
@@ -0,0 +1,190 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/* all public */
+
+/**
+ * @defgroup Evas_Smart_Group Evas Smart Functions
+ *
+ * Functions that deal with Evas_Smart's.
+ *
+ */
+
+/**
+ * Create an Evas_Smart, which can be used to instantiate new smart objects.
+ *
+ * This function internally creates an Evas_Smart_Class and sets the
+ * provided callbacks. Callbacks that are unneeded (or marked DEPRECATED
+ * below) should be set to NULL.
+ *
+ * Alternatively you can create an Evas_Smart_Class yourself and use 
+ * evas_smart_class_new().
+ *
+ * @param name a unique name for the smart
+ * @param func_add callback called when smart object is added
+ * @param func_del callback called when smart object is deleted
+ * @param func_layer_set DEPRECATED
+ * @param func_raise DEPRECATED
+ * @param func_lower DEPRECATED
+ * @param func_stack_above DEPRECATED
+ * @param func_stack_below DEPRECATED
+ * @param func_move callback called when smart object is moved 
+ * @param func_resize callback called when smart object is resized 
+ * @param func_show callback called when smart object is shown
+ * @param func_hide callback called when smart object is hidden
+ * @param func_color_set callback called when smart object has its color set
+ * @param func_clip_set callback called when smart object has its clip set
+ * @param func_clip_unset callback called when smart object has its clip unset
+ * @param data a pointer to user data for the smart
+ * @return an Evas_Smart
+ *
+ */
+EAPI Evas_Smart *
+evas_smart_new(const char *name,
+              void      (*func_add) (Evas_Object *o),
+              void      (*func_del) (Evas_Object *o),
+              void      (*func_layer_set) (Evas_Object *o, int l),
+              void      (*func_raise) (Evas_Object *o),
+              void      (*func_lower) (Evas_Object *o),
+              void      (*func_stack_above) (Evas_Object *o, Evas_Object *above),
+              void      (*func_stack_below) (Evas_Object *o, Evas_Object *below),
+              void      (*func_move) (Evas_Object *o, Evas_Coord x, Evas_Coord y),
+              void      (*func_resize) (Evas_Object *o, Evas_Coord w, Evas_Coord h),
+              void      (*func_show) (Evas_Object *o),
+              void      (*func_hide) (Evas_Object *o),
+              void      (*func_color_set) (Evas_Object *o, int r, int g, int b, int a),
+              void      (*func_clip_set) (Evas_Object *o, Evas_Object *clip),
+              void      (*func_clip_unset) (Evas_Object *o),
+              const void *data)
+{
+   Evas_Smart *s;
+   Evas_Smart_Class *sc;
+
+   printf("----- WARNING. evas_smart_new() will be deprecated and removed soon\n"
+         "----- Please use evas_smart_class_new() instead\n");
+   
+   if (!name) return NULL;
+
+   s = evas_mem_calloc(sizeof(Evas_Smart));
+   if (!s) return NULL;
+
+   s->magic = MAGIC_SMART;
+
+   s->class_allocated = 1;
+
+   sc = evas_mem_calloc(sizeof(Evas_Smart_Class));
+   if (!sc)
+     {
+       free(s);
+       return NULL;
+     }
+   sc->name = name;
+   sc->add = func_add;
+   sc->del = func_del;
+   sc->move = func_move;
+   sc->resize = func_resize;
+   sc->show = func_show;
+   sc->hide = func_hide;
+   sc->color_set = func_color_set;
+   sc->clip_set = func_clip_set;
+   sc->clip_unset = func_clip_unset;
+   sc->data = (void *)data;
+   s->smart_class = sc;
+
+   return s;
+}
+
+/**
+ * Free an Evas_Smart
+ *
+ * If this smart was created using evas_smart_class_new(), the associated
+ * Evas_Smart_Class will not be freed.
+ *
+ * @param s the Evas_Smart to free
+ *
+ */
+EAPI void
+evas_smart_free(Evas_Smart *s)
+{
+   MAGIC_CHECK(s, Evas_Smart, MAGIC_SMART);
+   return;
+   MAGIC_CHECK_END();
+   s->delete_me = 1;
+   if (s->usage > 0) return;
+   if (s->class_allocated) free((void *)s->smart_class);
+   free(s);
+}
+
+/**
+ * Creates an Evas_Smart from an Evas_Smart_Class.
+ *
+ * @param Evas_Smart_Class the smart class definition
+ * @return an Evas_Smart
+ */
+EAPI Evas_Smart *
+evas_smart_class_new(const Evas_Smart_Class *sc)
+{
+   Evas_Smart *s;
+
+   if (!sc) return NULL;
+
+   /* api does not match abi! for now refuse as we only have 1 version */
+   if (sc->version != EVAS_SMART_CLASS_VERSION) return NULL;
+   
+   s = evas_mem_calloc(sizeof(Evas_Smart));
+   if (!s) return NULL;
+
+   s->magic = MAGIC_SMART;
+
+   s->smart_class = sc;
+
+   return s;
+}
+
+/**
+ * Get the Evas_Smart_Class of an Evas_Smart
+ *
+ * @param s the Evas_Smart
+ * @return the Evas_Smart_Class
+ */
+EAPI const Evas_Smart_Class *
+evas_smart_class_get(const Evas_Smart *s)
+{
+   MAGIC_CHECK(s, Evas_Smart, MAGIC_SMART);
+   return NULL;
+   MAGIC_CHECK_END();
+   return s->smart_class;
+}
+
+/**
+ * Get the data pointer set on an Evas_Smart.
+ *
+ * This data pointer is set either as the final parameter to 
+ * evas_smart_new or as the data field in the Evas_Smart_Class passed
+ * in to evas_smart_class_new
+ *
+ * @param Evas_Smart 
+ *
+ */
+EAPI void *
+evas_smart_data_get(const Evas_Smart *s)
+{
+   MAGIC_CHECK(s, Evas_Smart, MAGIC_SMART);
+   return NULL;
+   MAGIC_CHECK_END();
+   return (void *)s->smart_class->data;
+}
+
+/* internal funcs */
+void
+evas_object_smart_use(Evas_Smart *s)
+{
+   s->usage++;
+}
+
+void
+evas_object_smart_unuse(Evas_Smart *s)
+{
+   s->usage--;
+   if ((s->usage <= 0) && (s->delete_me)) evas_smart_free(s);
+}
diff --git a/src/lib/canvas/evas_stack.c b/src/lib/canvas/evas_stack.c
new file mode 100644 (file)
index 0000000..9579557
--- /dev/null
@@ -0,0 +1,450 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+static Evas_Object *
+evas_object_above_get_internal(const Evas_Object *obj)
+{
+   if (((Evas_Object_List *)obj)->next)
+     return (Evas_Object *)(((Evas_Object_List *)obj)->next);
+   else
+     {
+       if (((Evas_Object_List *)(((Evas_Object *)obj)->layer))->next)
+         {
+            Evas_Layer *l;
+
+            l = (Evas_Layer *)(((Evas_Object_List *)(((Evas_Object *)obj)->layer))->next);
+            return l->objects;
+         }
+     }
+   return NULL;
+}
+
+static Evas_Object *
+evas_object_below_get_internal(const Evas_Object *obj)
+{
+   if (((Evas_Object_List *)obj)->prev)
+     return (Evas_Object *)(((Evas_Object_List *)obj)->prev);
+   else
+     {
+        if (((Evas_Object_List *)(((Evas_Object *)obj)->layer))->prev)
+         {
+            Evas_Layer *l;
+
+            l = (Evas_Layer *)(((Evas_Object_List *)(((Evas_Object *)obj)->layer))->prev);
+            return (Evas_Object *)(((Evas_Object_List *)(l->objects))->last);
+         }
+     }
+   return NULL;
+}
+
+/**
+ * Raise @p obj to the top of its layer.
+ *
+ * @param obj the object to raise
+ *
+ */
+EAPI void
+evas_object_raise(Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (evas_object_intercept_call_raise(obj)) return;
+   if (!(((Evas_Object_List *)obj)->next))
+     {
+       evas_object_inform_call_restack(obj);
+       return;
+     }
+   if (obj->smart.parent)
+     evas_object_smart_member_raise(obj);
+   else
+     {
+       if (obj->in_layer)
+         {
+            obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
+            obj->layer->objects = evas_object_list_append(obj->layer->objects, obj);
+         }
+     }
+   if (obj->clip.clipees)
+     {
+       evas_object_inform_call_restack(obj);
+       return;
+     }
+   if (obj->layer) evas_render_invalidate(obj->layer->evas);
+   obj->restack = 1;
+   evas_object_change(obj);
+   evas_object_inform_call_restack(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       if (!evas_event_passes_through(obj))
+         {
+            if (!obj->smart.smart)
+              {
+                 if (evas_object_is_in_output_rect(obj,
+                                                   obj->layer->evas->pointer.x,
+                                                   obj->layer->evas->pointer.y, 1, 1) &&
+                     obj->cur.visible)
+                   evas_event_feed_mouse_move(obj->layer->evas,
+                                              obj->layer->evas->pointer.x,
+                                              obj->layer->evas->pointer.y,
+                                              obj->layer->evas->last_timestamp,
+                                              NULL);
+              }
+         }
+     }
+}
+
+/**
+ * Lower @p obj to the bottom of its layer.
+ *
+ * @param obj the object to lower
+ *
+ */
+EAPI void
+evas_object_lower(Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (evas_object_intercept_call_lower(obj)) return;
+   if (!(((Evas_Object_List *)obj)->prev))
+     {
+       evas_object_inform_call_restack(obj);
+       return;
+     }
+   if (obj->smart.parent)
+     evas_object_smart_member_lower(obj);
+   else
+     {
+       if (obj->in_layer)
+         {
+            obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
+            obj->layer->objects = evas_object_list_prepend(obj->layer->objects, obj);
+         }
+     }
+   if (obj->clip.clipees)
+     {
+       evas_object_inform_call_restack(obj);
+       return;
+     }
+   if (obj->layer) evas_render_invalidate(obj->layer->evas);
+   obj->restack = 1;
+   evas_object_change(obj);
+   evas_object_inform_call_restack(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       if (!evas_event_passes_through(obj))
+         {
+            if (!obj->smart.smart)
+              {
+                 if (evas_object_is_in_output_rect(obj,
+                                                   obj->layer->evas->pointer.x,
+                                                   obj->layer->evas->pointer.y, 1, 1) &&
+                     obj->cur.visible)
+                   evas_event_feed_mouse_move(obj->layer->evas,
+                                              obj->layer->evas->pointer.x,
+                                              obj->layer->evas->pointer.y,
+                                              obj->layer->evas->last_timestamp,
+                                              NULL);
+              }
+         }
+     }
+}
+
+/**
+ * Stack @p obj immediately above @p above 
+ *
+ * If @p obj is a member of a smart object, then @p above must also be
+ * a member of the same smart object.
+ *
+ * Similarly, if @p obj is not a member of smart object, @p above may 
+ * not either. 
+ *
+ * @param obj the object to stack
+ * @param above the object above which to stack
+ *
+ */
+EAPI void
+evas_object_stack_above(Evas_Object *obj, Evas_Object *above)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   MAGIC_CHECK(above, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (evas_object_intercept_call_stack_above(obj, above)) return;
+   if (!above)
+     {
+       evas_object_raise(obj);
+       return;
+     }
+   if (((Evas_Object_List *)obj)->prev == (Evas_Object_List *)above)
+     {
+       evas_object_inform_call_restack(obj);
+       return;
+     }
+   if (obj->smart.parent)
+     {
+       if (obj->smart.parent != above->smart.parent)
+         {
+//          printf("BITCH! evas_object_stack_above(), %p not inside same smart as %p!\n", obj, above);
+            return;
+         }
+       evas_object_smart_member_stack_above(obj, above);
+     }
+   else
+     {
+       if (above->smart.parent) return;
+       if (obj->layer != above->layer)
+         {
+            return;
+         }
+       if (obj->in_layer)
+         {
+            obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
+            obj->layer->objects = evas_object_list_append_relative(obj->layer->objects, obj, above);
+         }
+     }
+   if (obj->clip.clipees)
+     {
+       evas_object_inform_call_restack(obj);
+       return;
+     }
+   if (obj->layer) evas_render_invalidate(obj->layer->evas);
+   obj->restack = 1;
+   evas_object_change(obj);
+   evas_object_inform_call_restack(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       if (!evas_event_passes_through(obj))
+         {
+            if (!obj->smart.smart)
+              {
+                 if (evas_object_is_in_output_rect(obj,
+                                                   obj->layer->evas->pointer.x,
+                                                   obj->layer->evas->pointer.y, 1, 1) &&
+                     obj->cur.visible)
+                   evas_event_feed_mouse_move(obj->layer->evas,
+                                              obj->layer->evas->pointer.x,
+                                              obj->layer->evas->pointer.y,
+                                              obj->layer->evas->last_timestamp,
+                                              NULL);
+              }
+         }
+     }
+}
+
+/**
+ * Stack @p obj immediately below @p below 
+ *
+ * If @p obj is a member of a smart object, then @p below must also be
+ * a member of the same smart object.
+ *
+ * Similarly, if @p obj is not a member of smart object, @p below may 
+ * not either. 
+ *
+ * @param obj the object to stack
+ * @param below the object below which to stack
+ *
+ */
+EAPI void
+evas_object_stack_below(Evas_Object *obj, Evas_Object *below)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   MAGIC_CHECK(below, Evas_Object, MAGIC_OBJ);
+   return;
+   MAGIC_CHECK_END();
+   if (evas_object_intercept_call_stack_below(obj, below)) return;
+   if (!below)
+     {
+       evas_object_lower(obj);
+       return;
+     }
+   if (((Evas_Object_List *)obj)->next == (Evas_Object_List *)below)
+     {
+       evas_object_inform_call_restack(obj);
+       return;
+     }
+   if (obj->smart.parent)
+     {
+       if (obj->smart.parent != below->smart.parent)
+         {
+//          printf("BITCH! evas_object_stack_below(), %p not inside same smart as %p!\n", obj, below);
+            return;
+         }
+       evas_object_smart_member_stack_below(obj, below);
+     }
+   else
+     {
+       if (below->smart.parent) return;
+       if (obj->layer != below->layer)
+         {
+            return;
+         }
+       if (obj->in_layer)
+         {
+            obj->layer->objects = evas_object_list_remove(obj->layer->objects, obj);
+            obj->layer->objects = evas_object_list_prepend_relative(obj->layer->objects, obj, below);
+         }
+     }
+   if (obj->clip.clipees)
+     {
+       evas_object_inform_call_restack(obj);
+       return;
+     }
+   if (obj->layer) evas_render_invalidate(obj->layer->evas);
+   obj->restack = 1;
+   evas_object_change(obj);
+   evas_object_inform_call_restack(obj);
+   if (obj->layer->evas->events_frozen <= 0)
+     {
+       if (!evas_event_passes_through(obj))
+         {
+            if (!obj->smart.smart)
+              {
+                 if (evas_object_is_in_output_rect(obj,
+                                                   obj->layer->evas->pointer.x,
+                                                   obj->layer->evas->pointer.y, 1, 1) &&
+                     obj->cur.visible)
+                   evas_event_feed_mouse_move(obj->layer->evas,
+                                              obj->layer->evas->pointer.x,
+                                              obj->layer->evas->pointer.y,
+                                              obj->layer->evas->last_timestamp,
+                                              NULL);
+              }
+         }
+     }
+}
+
+/**
+ * Get the evas object above @p obj
+ *
+ * @param obj an Evas_Object
+ * @return the Evas_Object directly above
+ *
+ */
+EAPI Evas_Object *
+evas_object_above_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (obj->smart.parent)
+     {
+       do
+         {
+            obj = (Evas_Object *)(((Evas_Object_List *)(obj))->next);
+            if ((obj) && (!obj->delete_me)) return (Evas_Object *)obj;
+         }
+       while (obj);
+       return NULL;
+     }
+   obj = evas_object_above_get_internal(obj);
+   while (obj)
+     {
+       if (!obj->delete_me) return (Evas_Object *)obj;
+       obj = evas_object_above_get_internal(obj);
+     }
+   return NULL;
+}
+
+/**
+ * Get the evas object below @p obj
+ *
+ * @param obj an Evas_Object
+ * @return the Evas_Object directly below
+ *
+ */
+EAPI Evas_Object *
+evas_object_below_get(const Evas_Object *obj)
+{
+   MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (obj->smart.parent)
+     {
+       do
+         {
+            obj = (Evas_Object *)(((Evas_Object_List *)(obj))->prev);
+            if ((obj) && (!obj->delete_me)) return (Evas_Object *)obj;
+         }
+       while (obj);
+       return NULL;
+     }
+   obj = evas_object_below_get_internal(obj);
+   while (obj)
+     {
+       if (!obj->delete_me) return (Evas_Object *)obj;
+       obj = evas_object_below_get_internal(obj);
+     }
+   return NULL;
+}
+
+/**
+ * Get the lowest evas object on the Evas @p e
+ *
+ * @param e an Evas
+ * @return the lowest object
+ *
+ */
+EAPI Evas_Object *
+evas_object_bottom_get(const Evas *e)
+{
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+   if (e->layers)
+     {
+       Evas_Object *obj;
+       
+       obj = e->layers->objects;
+       while (obj)
+         {
+            if (!obj->delete_me) return obj;
+            obj = evas_object_above_get_internal(obj);
+         }
+     }
+   return NULL;
+}
+
+/**
+ * Get the highest evas object on the Evas @p e
+ *
+ * @param e an Evas
+ * @return the highest object
+ *
+ */
+EAPI Evas_Object *
+evas_object_top_get(const Evas *e)
+{
+   Evas_Object *obj = NULL;
+   Evas_Object_List *list;
+   Evas_Layer *layer;
+
+   MAGIC_CHECK(e, Evas, MAGIC_EVAS);
+   return NULL;
+   MAGIC_CHECK_END();
+
+   list = (Evas_Object_List *) e->layers;
+   if (!list) return NULL;
+
+   layer = (Evas_Layer *) list->last;
+   if (!layer) return NULL;
+
+   list = (Evas_Object_List *) layer->objects;
+   if (!list) return NULL;
+
+   obj = (Evas_Object *) list->last;
+   if (!obj) return NULL;
+
+   while (obj)
+     {
+       if (!obj->delete_me) return obj;
+       obj = evas_object_below_get_internal(obj);
+     }
+
+   return obj;
+}
diff --git a/src/lib/data/.cvsignore b/src/lib/data/.cvsignore
new file mode 100644 (file)
index 0000000..b477e9c
--- /dev/null
@@ -0,0 +1,6 @@
+Makefile.in
+Makefile
+.deps
+.libs
+*.la
+*.lo
diff --git a/src/lib/data/Makefile.am b/src/lib/data/Makefile.am
new file mode 100644 (file)
index 0000000..6d3ef57
--- /dev/null
@@ -0,0 +1,25 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS         = -I. \
+                      -I$(top_srcdir)/src/lib \
+                      -I$(top_srcdir)/src/lib/include \
+                      -DPACKAGE_BIN_DIR=\"$(bindir)\" \
+                      -DPACKAGE_LIB_DIR=\"$(libdir)\" \
+                      -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+                      @FREETYPE_CFLAGS@
+
+noinst_LTLIBRARIES      = libevas_data.la
+libevas_data_la_SOURCES  = \
+evas_inline_array.x \
+evas_hash.c \
+evas_list.c \
+evas_array.c \
+evas_object_list.c \
+evas_stringshare.c \
+evas_array_hash.c \
+evas_mempool.c
+
+libevas_data_la_DEPENDENCIES = $(top_builddir)/config.h
+
+EXTRA_DIST = evas_mempool.h
diff --git a/src/lib/data/evas_array.c b/src/lib/data/evas_array.c
new file mode 100644 (file)
index 0000000..af9b3b8
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+
+#include "Evas_Data.h"
+#include "evas_inline_array.x"
+
+EAPI void
+evas_array_append(Evas_Array *array, void *data)
+{
+   _evas_array_append(array, data);
+}
+
+EAPI void *
+evas_array_get(Evas_Array *array, unsigned int index)
+{
+   return _evas_array_get(array, index);
+}
+
+EAPI void
+evas_array_clean(Evas_Array *array)
+{
+   array->count = 0;
+}
+
+EAPI void
+evas_array_setup(Evas_Array *array, unsigned int step)
+{
+   array->step = step;
+}
+
+EAPI void
+evas_array_flush(Evas_Array *array)
+{
+   array->count = 0;
+   array->total = 0;
+
+   if (array->data) free(array->data);
+   array->data = NULL;
+}
+
+EAPI Evas_Array *
+evas_array_new(unsigned int step)
+{
+   Evas_Array *array;
+
+   array = malloc(sizeof (Evas_Array));
+   if (!array) return NULL;
+
+   array->data = NULL;
+   array->total = 0;
+   array->count = 0;
+   array->step = step;
+
+   return array;
+}
+
+EAPI void
+evas_array_free(Evas_Array *array)
+{
+   evas_array_flush(array);
+   free(array);
+}
+
+EAPI void
+evas_array_remove(Evas_Array *array, Evas_Bool (*keep)(void *data, void *gdata), void *gdata)
+{
+   void **tmp;
+   unsigned int total = 0;
+   unsigned int i;
+
+   if (array->total == 0) return ;
+
+   tmp = malloc(sizeof (void*) * array->total);
+   if (!tmp) return ;
+
+   for (i = 0; i < array->count; i++)
+     {
+       void *data;
+
+       data = _evas_array_get(array, i);
+
+       if (keep(data, gdata))
+         {
+            tmp[total] = data;
+            total++;
+         }
+     }
+
+   free(array->data);
+
+   if (total == 0)
+     {
+       array->total = 0;
+       array->data = NULL;
+       free(tmp);
+     }
+   else
+     {
+       array->data = tmp;
+     }
+
+   array->count = total;
+}
diff --git a/src/lib/data/evas_array_hash.c b/src/lib/data/evas_array_hash.c
new file mode 100644 (file)
index 0000000..3724f43
--- /dev/null
@@ -0,0 +1,122 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+
+#include "Evas_Data.h"
+
+#define EAH_BUCKETS 256
+#define EAH_HASH(key) \
+       ( key % EAH_BUCKETS )
+
+typedef struct _Evas_Array_Hash_El    Evas_Array_Hash_El;
+
+struct _Evas_Array_Hash
+{
+   Evas_Array_Hash_El  *buckets[EAH_BUCKETS];
+};
+
+struct _Evas_Array_Hash_El
+{
+   int           data_max;
+   int           data_count;
+   int           *data;
+};
+
+/*
+ These functions provide an interface for a simple hash. The hash
+ is and array of int array pointers. Right now that hash size is 256.
+ The hash size is static. The key and data are ints.
+
+ Keys must be added in ascending order because the search function
+ assumes that the hash buckets are sorted.
+ */
+EAPI Evas_Array_Hash   *
+evas_array_hash_new(void)
+{
+   Evas_Array_Hash *hash;
+
+   hash = calloc(1, sizeof(Evas_Array_Hash));
+   return hash;
+}
+
+EAPI void
+evas_array_hash_free(Evas_Array_Hash *hash)
+{
+   int i;
+
+   for (i = 0; i < EAH_BUCKETS; i++)
+     {
+       if (hash->buckets[i])
+         {
+            free(hash->buckets[i]->data);
+            free(hash->buckets[i]);
+         }
+     }
+
+   free(hash);
+}
+
+EAPI void
+evas_array_hash_add(Evas_Array_Hash *hash, int key, int data)
+{
+   int hash_val;
+   Evas_Array_Hash_El *el;
+
+   hash_val = EAH_HASH(key);
+   el = hash->buckets[hash_val];
+   if (!el)
+     {
+       el = malloc(sizeof(Evas_Array_Hash_El));
+       el->data_max = 4;
+       el->data = malloc(sizeof(int) * el->data_max);
+       el->data_count = 0;
+       hash->buckets[hash_val] = el;
+     }
+   else if (el->data_count == el->data_max)
+     {
+       el->data_max *= 2;
+       el->data = realloc(el->data, sizeof(int) * el->data_max);
+     }
+
+   el->data[el->data_count++] = key;
+   el->data[el->data_count++] = data;
+}
+
+EAPI int
+evas_array_hash_search(Evas_Array_Hash *hash, int key)
+{
+   int hash_val;
+   Evas_Array_Hash_El *el;
+   int low, high, i, val;
+
+   hash_val = EAH_HASH(key);
+
+   el = hash->buckets[hash_val];
+   if (!el)
+     return 0;
+
+   /* Binary Search the bucket for key */
+   low = 0;
+   high = ( el->data_count / 2 ) - 1;
+
+   while ( high >= low )
+     {
+       i = (high + low) / 2;
+
+       val = el->data[i << 1];
+
+       if (val == key)
+         return el->data[(i << 1) + 1];
+       else if (val > key)
+         high = i - 1;
+       else
+         low = i + 1;
+     }
+   return 0;
+}
diff --git a/src/lib/data/evas_hash.c b/src/lib/data/evas_hash.c
new file mode 100644 (file)
index 0000000..9d36648
--- /dev/null
@@ -0,0 +1,497 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "Evas_Data.h"
+
+typedef struct _Evas_Hash_El Evas_Hash_El;
+
+struct _Evas_Hash_El
+{
+   Evas_Object_List  _list_data;
+   const char       *key;
+   void             *data;
+};
+
+static inline int _evas_hash_gen(const char *key);
+
+static int _evas_hash_alloc_error = 0;
+
+static inline int
+_evas_hash_gen(const char *key)
+{
+   unsigned int hash_num = 5381;
+   const unsigned char *ptr;
+   
+   if (!key) return 0;
+   for (ptr = (unsigned char *)key; *ptr; ptr++)
+     hash_num = (hash_num * 33) ^ *ptr;
+   
+   hash_num &= 0xff;
+   return (int)hash_num;
+}
+
+/**
+ * @defgroup Evas_Hash_Data Hash Data Functions
+ *
+ * Functions that add, access or remove data from hashes.
+ *
+ * The following example shows how to add and then access data in a
+ * hash table:
+ * @code
+ * Evas_Hash *hash = NULL;
+ * extern void *my_data;
+ *
+ * hash = evas_hash_add(hash, "My Data", my_data);
+ * if (evas_hash_alloc_error())
+ *   {
+ *     fprintf(stderr, "ERROR: Memory is low. Hash allocation failed.\n");
+ *     exit(-1);
+ *   }
+ * if (evas_hash_find(hash, "My Data") == my_data)
+ *   {
+ *     printf("My Data inserted and successfully found.\n");
+ *   }
+ * @endcode
+ *
+ * What follows is another example, showing how the @ref evas_hash_del
+ * function is used:
+ * @code
+ * extern Evas_Hash *hash;
+ * extern void *data;
+ *
+ * printf("Insert some data...\n");
+ * hash = evas_hash_add(hash, "My Data", my_data);
+ * printf("Removing by key...\n");
+ * hash = evas_hash_del(hash, "My Data", NULL);
+ * printf("Insert some more data as a NULL key...\n");
+ * hash = evas_hash_add(hash, NULL, my_data);
+ * printf("Removing by data as a NULL key...\n");
+ * hash = evas_hash_del(hash, NULL, my_data);
+ * @endcode
+ */
+
+/**
+ * Adds an entry to the given hash table.
+ *
+ * @p key is expected to be a unique string within the hash table.
+ * Otherwise, you cannot be sure which inserted data pointer will be
+ * accessed with @ref evas_hash_find , and removed with
+ * @ref evas_hash_del .
+ *
+ * Key strings are case sensitive.
+ *
+ * @ref evas_hash_alloc_error should be used to determine if an
+ * allocation error occurred during this function.
+ *
+ * @param   hash The given hash table.  Can be @c NULL, in which case a
+ *               new hash table is allocated and returned.
+ * @param   key  A unique string.  Can be @c NULL.
+ * @param   data Data to associate with the string given by @p key.
+ * @return  Either the given hash table, or if the given value for @p
+ *          hash is @c NULL, then a new one.  @c NULL will be returned
+ *          if memory could not be allocated for a new table.
+ * @ingroup Evas_Hash_Data
+ */
+EAPI Evas_Hash *
+evas_hash_add(Evas_Hash *hash, const char *key, const void *data)
+{
+   int hash_num;
+   Evas_Hash_El *el;
+
+   if ((!key) || (!data)) return hash;
+   _evas_hash_alloc_error = 0;
+   if (!hash)
+     {
+       hash = calloc(1, sizeof(struct _Evas_Hash));
+       if (!hash)
+         {
+            _evas_hash_alloc_error = 1;
+            return NULL;
+         }
+     }
+   if (!(el = malloc(sizeof(struct _Evas_Hash_El) + strlen(key) + 1)))
+     {
+        if (hash->population <= 0)
+         {
+            free(hash);
+            hash = NULL;
+         }
+       _evas_hash_alloc_error = 1;
+       return hash;
+     };
+   el->key = ((char *)el) + sizeof(struct _Evas_Hash_El);
+   strcpy((char *) el->key, key);
+   el->data = (void *)data;
+   hash_num = _evas_hash_gen(key);
+   hash->buckets[hash_num] = evas_object_list_prepend(hash->buckets[hash_num], el);
+   hash->population++;
+   return hash;
+}
+
+/**
+ * Adds an entry to the given hash table and does not duplicate the string key.
+ *
+ * @p key is expected to be a unique string within the hash table.
+ * Otherwise, you cannot be sure which inserted data pointer will be
+ * accessed with @ref evas_hash_find , and removed with
+ * @ref evas_hash_del . This call does not make a copy of the key so it must
+ * be a string constant or stored elsewhere (in the object being added) etc.
+ *
+ * Key strings are case sensitive.
+ *
+ * @ref evas_hash_alloc_error should be used to determine if an
+ * allocation error occurred during this function.
+ *
+ * @param   hash The given hash table.  Can be @c NULL, in which case a
+ *               new hash table is allocated and returned.
+ * @param   key  A unique string.  Can be @c NULL.
+ * @param   data Data to associate with the string given by @p key.
+ * @return  Either the given hash table, or if the given value for @p
+ *          hash is @c NULL, then a new one.  @c NULL will be returned
+ *          if memory could not be allocated for a new table.
+ * @ingroup Evas_Hash_Data
+ */
+EAPI Evas_Hash *
+evas_hash_direct_add(Evas_Hash *hash, const char *key, const void *data)
+{
+   int hash_num;
+   Evas_Hash_El *el;
+
+   if ((!key) || (!data)) return hash;
+   _evas_hash_alloc_error = 0;
+   if (!hash)
+     {
+       hash = calloc(1, sizeof(struct _Evas_Hash));
+       if (!hash)
+         {
+            _evas_hash_alloc_error = 1;
+            return NULL;
+         }
+     }
+   if (!(el = malloc(sizeof(struct _Evas_Hash_El))))
+     {
+        if (hash->population <= 0)
+         {
+            free(hash);
+            hash = NULL;
+         }
+       _evas_hash_alloc_error = 1;
+       return hash;
+     };
+   el->key = key;
+   el->data = (void *)data;
+   hash_num = _evas_hash_gen(key);
+   hash->buckets[hash_num] = evas_object_list_prepend(hash->buckets[hash_num], el);
+   hash->population++;
+   return hash;
+}
+
+/**
+ * Removes the entry identified by @p key or @p data from the given
+ * hash table.
+ *
+ * If @p key is @c NULL, then @p data is used to find a match to
+ * remove.
+ *
+ * @param   hash The given hash table.
+ * @param   key  The key string.  Can be @c NULL.
+ * @param   data The data pointer to remove if @p key is @c NULL.
+ *               Otherwise, not required and can be @c NULL.
+ * @return  The modified hash table.  If there are no entries left, the
+ *          hash table will be freed and @c NULL will be returned.
+ * @ingroup Evas_Hash_Data
+ */
+EAPI Evas_Hash *
+evas_hash_del(Evas_Hash *hash, const char *key, const void *data)
+{
+   int hash_num;
+   Evas_Hash_El *el;
+   Evas_Object_List *l;
+
+   if (!hash) return NULL;
+   if (!key)
+     {
+       int hash_num;
+       
+       for (hash_num = 0; hash_num < 256; hash_num++)
+         {
+            for (l = hash->buckets[hash_num]; l; l = l->next)
+              {
+                 el = (Evas_Hash_El *)l;
+                 if (el->data == data)
+                   {
+                      hash->buckets[hash_num] = evas_object_list_remove(hash->buckets[hash_num], el);
+                      free(el);
+                      hash->population--;
+                      if (hash->population <= 0)
+                        {
+                           free(hash);
+                           hash = NULL;
+                        }
+                      return hash;
+                   }
+              }
+         }
+     }
+   else
+     {
+       hash_num = _evas_hash_gen(key);
+       for (l = hash->buckets[hash_num]; l; l = l->next)
+         {
+            el = (Evas_Hash_El *)l;
+            if (!strcmp(el->key, key))
+              {
+                 hash->buckets[hash_num] = evas_object_list_remove(hash->buckets[hash_num], el);
+                 free(el);
+                 hash->population--;
+                 if (hash->population <= 0)
+                   {
+                      free(hash);
+                      hash = NULL;
+                   }
+                 return hash;
+              }
+         }
+     }
+   return hash;
+}
+
+/**
+ * Retrieves a specific entry in the given hash table.
+ * @param   hash The given hash table.
+ * @param   key  The key string of the entry to find.
+ * @return  The data pointer for the stored entry, or @c NULL if not
+ *          found.
+ * @ingroup Evas_Hash_Data
+ */
+EAPI void *
+evas_hash_find(const Evas_Hash *hash, const char *key)
+{
+   int hash_num;
+   Evas_Hash_El *el;
+   Evas_Object_List *l;
+
+   _evas_hash_alloc_error = 0;
+   if ((!hash) || (!key)) return NULL;
+   hash_num = _evas_hash_gen(key);
+   for (l = hash->buckets[hash_num]; l; l = l->next)
+     {
+       el = (Evas_Hash_El *)l;
+       if (!strcmp(el->key, key))
+         {
+            if (l != hash->buckets[hash_num])
+              {
+                 Evas_Object_List *bucket;
+
+                 bucket = hash->buckets[hash_num];
+                 bucket = evas_object_list_remove(bucket, el);
+                 bucket = evas_object_list_prepend(bucket, el);
+                 ((Evas_Hash *)hash)->buckets[hash_num] = bucket;
+              }
+            return el->data;
+         }
+     }
+   return NULL;
+}
+
+/**
+ * Modifies the entry pointer at the specified key and returns the old entry
+ * @param   hash The given hash table.
+ * @param   key  The key string of the entry to modify.
+ * @param   data The data to replace the old entry, if it exists.
+ * @return  The data pointer for the old stored entry, or @c NULL if not
+ *          found. If an existing entry is not found, nothing is added to the
+ *          hash.
+ * @ingroup Evas_Hash_Data
+ */
+EAPI void *
+evas_hash_modify(Evas_Hash *hash, const char *key, const void *data)
+{
+   int hash_num;
+   Evas_Hash_El *el;
+   Evas_Object_List *l;
+
+   _evas_hash_alloc_error = 0;
+   if (!hash) return NULL;
+   hash_num = _evas_hash_gen(key);
+   for (l = hash->buckets[hash_num]; l; l = l->next)
+     {
+       el = (Evas_Hash_El *)l;
+       if ((key) && (!strcmp(el->key, key)))
+         {
+            void *old_data;
+            
+            if (l != hash->buckets[hash_num])
+              {
+                 hash->buckets[hash_num] = evas_object_list_remove(hash->buckets[hash_num], el);
+                 hash->buckets[hash_num] = evas_object_list_prepend(hash->buckets[hash_num], el);
+              }
+            old_data = el->data;
+            el->data = (void *) data;
+            return old_data;
+         }
+     }
+   return NULL;
+}
+
+/**
+ * @defgroup Evas_Hash_General_Group Hash General Functions
+ *
+ * Miscellaneous functions that operate on hash objects.
+ */
+
+/**
+ * Retrieves the number of buckets available in the given hash table.
+ * @param hash The given hash table.
+ * @return @c 256 if @p hash is not @c NULL.  @c 0 otherwise.
+ * @ingroup Evas_Hash_General_Group
+ */
+EAPI int
+evas_hash_size(const Evas_Hash *hash)
+{
+   if (!hash) return 0;
+   return 256;
+}
+
+/**
+ * @todo Complete polishing documentation for evas_hash.c. The
+ * functions' docs may be grouped, but they need some simplification.
+ */
+
+/**
+ * Free an entire hash table
+ * @param hash The hash table to be freed
+ *
+ * This function frees up all the memory allocated to storing the specified
+ * hash tale pointed to by @p hash. Any entries in the table that the program
+ * has no more pointers for elsewhere may now be lost, so this should only be
+ * called if the program has lready freed any allocated data in the hash table
+ * or has the pointers for data in teh table stored elswehere as well.
+ *
+ * Example:
+ * @code
+ * extern Evas_Hash *hash;
+ *
+ * evas_hash_free(hash);
+ * hash = NULL;
+ * @endcode
+ * @ingroup Evas_Hash_General_Group
+ */
+EAPI void
+evas_hash_free(Evas_Hash *hash)
+{
+   int i, size;
+
+   if (!hash) return;
+   size = evas_hash_size(hash);
+   for (i = 0; i < size; i++)
+     {
+       while (hash->buckets[i])
+         {
+            Evas_Hash_El *el;
+
+            el = (Evas_Hash_El *)hash->buckets[i];
+            hash->buckets[i] = evas_object_list_remove(hash->buckets[i], el);
+            free(el);
+         }
+     }
+   free(hash);
+}
+
+/**
+ * Call a function on every member stored in the hash table
+ * @param hash The hash table whose members will be walked
+ * @param func The function to call on each parameter
+ * @param fdata The data pointer to pass to the function being called
+ *
+ * This function goes through every entry in the hash table @p hash and calls
+ * the function @p func on each member. The function should NOT modify the
+ * hash table contents if it returns 1. IF the hash table contents are
+ * modified by this function or the function wishes to stop processing it must
+ * return 0, otherwise return 1 to keep processing.
+ *
+ * Example:
+ * @code
+ * extern Evas_Hash *hash;
+ *
+ * Evas_Bool hash_fn(Evas_Hash *hash, const char *key, void *data, void *fdata)
+ * {
+ *   printf("Func data: %s, Hash entry: %s / %p\n", fdata, key, data);
+ *   return 1;
+ * }
+ *
+ * int main(int argc, char **argv)
+ * {
+ *   char *hash_fn_data;
+ *
+ *   hash_fn_data = strdup("Hello World");
+ *   evas_hash_foreach(hash, hash_fn, hash_fn_data);
+ *   free(hash_fn_data);
+ * }
+ * @endcode
+ * @ingroup Evas_Hash_General_Group
+ */
+EAPI void
+evas_hash_foreach(const Evas_Hash *hash, Evas_Bool (*func) (const Evas_Hash *hash, const char *key, void *data, void *fdata), const void *fdata)
+{
+   int i, size;
+
+   if (!hash) return;
+   size = evas_hash_size(hash);
+   for (i = 0; i < size; i++)
+     {
+       Evas_Object_List *l, *next_l;
+
+       for (l = hash->buckets[i]; l;)
+         {
+            Evas_Hash_El *el;
+
+            next_l = l->next;
+            el = (Evas_Hash_El *)l;
+            if (!func(hash, el->key, el->data, (void *)fdata)) return;
+            l = next_l;
+         }
+     }
+}
+
+/**
+ * Return memory allocation failure flag after an function requiring allocation
+ * @return The state of the allocation flag
+ *
+ * This function returns the state of the memory allocation flag. This flag is
+ * set if memory allocations fail during evas_hash_add() calls. If they do, 1
+ * will be returned, otherwise 0 will be returned. The flag will remain in its
+ * current state until the next call that requires allocation is called, and
+ * is then reset.
+ *
+ * Example:
+ * @code
+ * Evas_Hash *hash = NULL;
+ * extern void *my_data;
+ *
+ * hash = evas_hash_add(hash, "My Data", my_data);
+ * if (evas_hash_alloc_error())
+ *   {
+ *     fprintf(stderr, "ERROR: Memory is low. Hash allocation failed.\n");
+ *     exit(-1);
+ *   }
+ * if (evas_hash_find(hash, "My Data") == my_data)
+ *   {
+ *     printf("My Data inserted and successfully found.\n");
+ *   }
+ * @endcode
+ * @ingroup Evas_Hash_General_Group
+ */
+EAPI int
+evas_hash_alloc_error(void)
+{
+   return _evas_hash_alloc_error;
+}
diff --git a/src/lib/data/evas_inline_array.x b/src/lib/data/evas_inline_array.x
new file mode 100644 (file)
index 0000000..0ea0a0d
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef EVAS_INLINE_ARRAY_H
+#define EVAS_INLINE_ARRAY_H
+
+#ifdef __GNUC__
+# define UNLIKELY(x) __builtin_expect(!!(x), 0)
+#else
+# define UNLIKELY(x) (x)
+#endif
+
+static inline Evas_Bool
+_evas_array_grow(Evas_Array *array)
+{
+   void **tmp;
+   size_t total;
+   
+   total = array->total + array->step;
+   tmp = realloc(array->data, sizeof (void*) * total);
+   if (!tmp) return 0;
+   
+   array->total = total;
+   array->data = tmp;
+   
+   return 1;
+}
+
+static inline void
+_evas_array_append(Evas_Array *array, void *data)
+{
+   if (UNLIKELY((array->count + array->step) > array->total))
+     if (!_evas_array_grow(array)) return ;
+   
+   array->data[array->count++] = data;
+}
+
+static inline void *
+_evas_array_get(Evas_Array *array, unsigned int index)
+{
+   return array->data[index];
+}
+
+#endif
diff --git a/src/lib/data/evas_list.c b/src/lib/data/evas_list.c
new file mode 100644 (file)
index 0000000..926a495
--- /dev/null
@@ -0,0 +1,1031 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+
+#include "Evas_Data.h"
+#include <evas_mempool.h>
+
+typedef struct _Evas_List_Accounting Evas_List_Accounting;
+
+struct _Evas_List_Accounting
+{
+   Evas_List *last;
+   int        count;
+};
+
+static int _evas_list_alloc_error = 0;
+
+static Evas_Mempool _evas_list_mempool =
+{
+   sizeof(Evas_List),
+   320,
+   0, NULL, NULL
+};
+static Evas_Mempool _evas_list_accounting_mempool =
+{
+   sizeof(Evas_List_Accounting),
+   80,
+   0, NULL, NULL
+};
+
+/**
+ * @defgroup Evas_List_Data_Group Linked List Creation Functions
+ *
+ * Functions that add data to an Evas_List.
+ */
+
+/**
+ * Appends the given data to the given linked list.
+ *
+ * The following example code demonstrates how to ensure that the
+ * given data has been successfully appended.
+ *
+ * @code
+ * Evas_List *list = NULL;
+ * extern void *my_data;
+ *
+ * list = evas_list_append(list, my_data);
+ * if (evas_list_alloc_error())
+ *   {
+ *     fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
+ *     exit(-1);
+ *   }
+ * @endcode
+ *
+ * @param   list The given list.  If @c NULL is given, then a new list
+ *               is created.
+ * @param   data The data to append.
+ * @return  A new list pointer that should be used in place of the one
+ *          given to this function if successful.  Otherwise, the old
+ *          pointer is returned.
+ * @ingroup Evas_List_Data_Group
+ */
+EAPI Evas_List *
+evas_list_append(Evas_List *list, const void *data)
+{
+   Evas_List *l, *new_l;
+
+   _evas_list_alloc_error = 0;
+   new_l = evas_mempool_malloc(&_evas_list_mempool, sizeof(Evas_List));
+   if (!new_l)
+     {
+       _evas_list_alloc_error = 1;
+       return list;
+     }
+   new_l->next = NULL;
+   new_l->data = (void *)data;
+   if (!list)
+     {
+       new_l->prev = NULL;
+       new_l->accounting = evas_mempool_malloc(&_evas_list_accounting_mempool, sizeof(Evas_List_Accounting));
+       if (!new_l->accounting)
+         {
+            _evas_list_alloc_error = 1;
+            evas_mempool_free(&_evas_list_mempool, new_l);
+            return list;
+         }
+       new_l->accounting->last = new_l;
+       new_l->accounting->count = 1;
+       return new_l;
+     }
+   l = list->accounting->last;
+   l->next = new_l;
+   new_l->prev = l;
+   new_l->accounting = list->accounting;
+   list->accounting->last = new_l;
+   list->accounting->count++;
+   return list;
+}
+
+/**
+ * Prepends the given data to the given linked list.
+ *
+ * The following example code demonstrates how to ensure that the
+ * given data has been successfully prepended.
+ *
+ * Example:
+ * @code
+ * Evas_List *list = NULL;
+ * extern void *my_data;
+ *
+ * list = evas_list_prepend(list, my_data);
+ * if (evas_list_alloc_error())
+ *   {
+ *     fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
+ *     exit(-1);
+ *   }
+ * @endcode
+ *
+ * @param   list The given list.
+ * @param   data The given data.
+ * @return  A new list pointer that should be used in place of the one
+ *          given to this function, if successful.  Otherwise, the old
+ *          pointer is returned.
+ * @ingroup Evas_List_Data_Group
+ */
+EAPI Evas_List *
+evas_list_prepend(Evas_List *list, const void *data)
+{
+   Evas_List *new_l;
+
+   _evas_list_alloc_error = 0;
+   new_l = evas_mempool_malloc(&_evas_list_mempool, sizeof(Evas_List));
+   if (!new_l)
+     {
+       _evas_list_alloc_error = 1;
+       return list;
+     }
+   new_l->prev = NULL;
+   new_l->data = (void *)data;
+   if (!list)
+     {
+       new_l->next = NULL;
+       new_l->accounting = evas_mempool_malloc(&_evas_list_accounting_mempool, sizeof(Evas_List_Accounting));
+       if (!new_l->accounting)
+         {
+            _evas_list_alloc_error = 1;
+            evas_mempool_free(&_evas_list_mempool, new_l);
+            return list;
+         }
+       new_l->accounting->last = new_l;
+       new_l->accounting->count = 1;
+       return new_l;
+     }
+   new_l->next = list;
+   list->prev = new_l;
+   new_l->accounting = list->accounting;
+   list->accounting->count++;
+   return new_l;
+}
+
+/**
+ * Inserts the given data into the given linked list after the specified data.
+ *
+ * If @p relative is not in the list, @p data is appended to the end of the
+ * list.  If there are multiple instances of @p relative in the list,
+ * @p data is inserted after the first instance.
+ *
+ * The following example code demonstrates how to ensure that the
+ * given data has been successfully inserted.
+ *
+ * @code
+ * Evas_List *list = NULL;
+ * extern void *my_data;
+ * extern void *relative_member;
+ *
+ * list = evas_list_append(list, relative_member);
+ * if (evas_list_alloc_error())
+ *   {
+ *     fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
+ *     exit(-1);
+ *   }
+ * list = evas_list_append_relative(list, my_data, relative_member);
+ * if (evas_list_alloc_error())
+ *   {
+ *     fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
+ *     exit(-1);
+ *   }
+ * @endcode
+ *
+ * @param   list The given linked list.
+ * @param   data The given data.
+ * @param   relative The data to insert after.
+ * @return  A new list pointer that should be used in place of the one
+ *          given to this function if successful.  Otherwise, the old pointer
+ *          is returned.
+ * @ingroup Evas_List_Data_Group
+ */
+EAPI Evas_List *
+evas_list_append_relative(Evas_List *list, const void *data, const void *relative)
+{
+   Evas_List *l;
+
+   for (l = list; l; l = l->next)
+     {
+       if (l->data == relative)
+         return evas_list_append_relative_list(list, data, l);
+     }
+   return evas_list_append(list, data);
+}
+
+EAPI Evas_List *
+evas_list_append_relative_list(Evas_List *list, const void *data, Evas_List *relative)
+{
+   Evas_List *new_l;
+
+   if ((!list) || (!relative)) return evas_list_append(list, data);
+   _evas_list_alloc_error = 0;
+   new_l = evas_mempool_malloc(&_evas_list_mempool, sizeof(Evas_List));
+   if (!new_l)
+     {
+       _evas_list_alloc_error = 1;
+       return list;
+     }
+   new_l->data = (void *)data;
+   if (relative->next)
+     {
+       new_l->next = relative->next;
+       relative->next->prev = new_l;
+     }
+   else
+     new_l->next = NULL;
+
+   relative->next = new_l;
+   new_l->prev = relative;
+   new_l->accounting = list->accounting;
+   list->accounting->count++;
+   if (!new_l->next)
+     new_l->accounting->last = new_l;
+   return list;
+}
+
+/**
+ * Prepend a data pointer to a linked list before the memeber specified
+ * @param list The list handle to prepend @p data too
+ * @param data The data pointer to prepend to list @p list before @p relative
+ * @param relative The data pointer before which to insert @p data
+ * @return A new list handle to replace the old one
+
+ * Inserts the given data into the given linked list before the member
+ * specified.
+ *
+ * If @p relative is not in the list, @p data is prepended to the
+ * start of the list.  If there are multiple instances of @p relative
+ * in the list, @p data is inserted before the first instance.
+ *
+ * The following code example demonstrates how to ensure that the
+ * given data has been successfully inserted.
+ *
+ * @code
+ * Evas_List *list = NULL;
+ * extern void *my_data;
+ * extern void *relative_member;
+ *
+ * list = evas_list_append(list, relative_member);
+ * if (evas_list_alloc_error())
+ *   {
+ *     fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
+ *     exit(-1);
+ *   }
+ * list = evas_list_prepend_relative(list, my_data, relative_member);
+ * if (evas_list_alloc_error())
+ *   {
+ *     fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
+ *     exit(-1);
+ *   }
+ * @endcode
+ *
+ * @param   list The given linked list.
+ * @param   data The given data.
+ * @param   relative The data to insert before.
+ * @return  A new list pointer that should be used in place of the one
+ *          given to this function if successful.  Otherwise the old pointer
+ *          is returned.
+ * @ingroup Evas_List_Data_Group
+ */
+EAPI Evas_List *
+evas_list_prepend_relative(Evas_List *list, const void *data, const void *relative)
+{
+   Evas_List *l;
+
+   _evas_list_alloc_error = 0;
+   for (l = list; l; l = l->next)
+     {
+       if (l->data == relative)
+         return evas_list_prepend_relative_list(list, data, l);
+     }
+   return evas_list_prepend(list, data);
+}
+
+EAPI Evas_List *
+evas_list_prepend_relative_list(Evas_List *list, const void *data, Evas_List *relative)
+{
+   Evas_List *new_l;
+
+   if ((!list) || (!relative)) return evas_list_prepend(list, data);
+   _evas_list_alloc_error = 0;
+   new_l = evas_mempool_malloc(&_evas_list_mempool, sizeof(Evas_List));
+   if (!new_l)
+     {
+       _evas_list_alloc_error = 1;
+       return list;
+     }
+   new_l->data = (void *)data;
+   new_l->prev = relative->prev;
+   new_l->next = relative;
+   if (relative->prev) relative->prev->next = new_l;
+   relative->prev = new_l;
+   new_l->accounting = list->accounting;
+   list->accounting->count++;
+   if (new_l->prev)
+     return list;
+   return new_l;
+}
+
+/**
+ * @defgroup Evas_List_Remove_Group Linked List Remove Functions
+ *
+ * Functions that remove data from linked lists.
+ */
+
+/**
+ * Removes the first instance of the specified data from the given list.
+ *
+ * If the specified data is not in the given list, nothing is done.
+ *
+ * @param   list The given list.
+ * @param   data The specified data.
+ * @return  A new list pointer that should be used in place of the one
+ *          passed to this functions.
+ * @ingroup Evas_List_Remove_Group
+ */
+EAPI Evas_List *
+evas_list_remove(Evas_List *list, const void *data)
+{
+   Evas_List *l;
+
+   for (l = list; l; l = l->next)
+     {
+       if (l->data == data)
+         return evas_list_remove_list(list, l);
+     }
+   return list;
+}
+
+/**
+ * Removes the specified data
+ *
+ * Remove a specified member from a list
+ * @param list The list handle to remove @p remove_list from
+ * @param remove_list The list node which is to be removed
+ * @return A new list handle to replace the old one
+ *
+ * Calling this function takes the list node @p remove_list and removes it
+ * from the list @p list, freeing the list node structure @p remove_list.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ * Evas_List *l;
+ * extern void *my_data;
+ *
+ * for (l = list; l; l= l->next)
+ *   {
+ *     if (l->data == my_data)
+ *       {
+ *         list = evas_list_remove_list(list, l);
+ *         break;
+ *       }
+ *   }
+ * @endcode
+ * @ingroup Evas_List_Remove_Group
+ */
+EAPI Evas_List *
+evas_list_remove_list(Evas_List *list, Evas_List *remove_list)
+{
+   Evas_List *return_l;
+
+   if (!list) return NULL;
+   if (!remove_list) return list;
+   if (remove_list->next) remove_list->next->prev = remove_list->prev;
+   if (remove_list->prev)
+     {
+       remove_list->prev->next = remove_list->next;
+       return_l = list;
+     }
+   else
+     return_l = remove_list->next;
+   if (remove_list == list->accounting->last)
+     list->accounting->last = remove_list->prev;
+   list->accounting->count--;
+   if (list->accounting->count == 0)
+     evas_mempool_free(&_evas_list_accounting_mempool, list->accounting);
+   evas_mempool_free(&_evas_list_mempool, remove_list);
+   return return_l;
+}
+
+/**
+ * Moves the specified data to the head of the list
+ *
+ * Move a specified member to the head of the list
+ * @param list The list handle to move @p inside
+ * @param move_list The list node which is to be moved
+ * @return A new list handle to replace the old one
+ *
+ * Calling this function takes the list node @p move_list and moves it
+ * to the front of the @p list.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ * Evas_List *l;
+ * extern void *my_data;
+ *
+ * for (l = list; l; l= l->next)
+ *   {
+ *     if (l->data == my_data)
+ *       {
+ *         list = evas_list_promote_list(list, l);
+ *         break;
+ *       }
+ *   }
+ * @endcode
+ * @ingroup Evas_List_Promote_Group
+ */
+EAPI Evas_List *
+evas_list_promote_list(Evas_List *list, Evas_List *move_list)
+{
+   Evas_List *return_l;
+
+   if (!list) return NULL;
+   if (!move_list) return list;
+   if (move_list == list) return list;
+   if (move_list->next) move_list->next->prev = move_list->prev;
+   if (move_list->prev)
+     {
+       move_list->prev->next = move_list->next;
+       return_l = list;
+     }
+   else
+     return_l = move_list->next;
+   if (move_list == list->accounting->last)
+     list->accounting->last = move_list->prev;
+   move_list->prev = return_l->prev;
+   if (return_l->prev)
+     return_l->prev->next = move_list;
+   return_l->prev = move_list;
+   move_list->next = return_l;
+   return move_list;
+}
+
+
+
+/**
+ * @defgroup Evas_List_Find_Group Linked List Find Functions
+ *
+ * Functions that find specified data in a linked list.
+ */
+
+/**
+ * Find a member of a list and return the member
+ * @param list The list handle to search for @p data
+ * @param data The data pointer to find in the list @p list
+ * @return The found member data pointer
+ *
+ * A call to this function will search the list @p list from beginning to end
+ * for the first member whose data pointer is @p data. If it is found, @p data
+ * will be returned, otherwise NULL will be returned.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ * extern void *my_data;
+ *
+ * if (evas_list_find(list, my_data) == my_data)
+ *   {
+ *     printf("Found member %p\n", my_data);
+ *   }
+ * @endcode
+ * @ingroup Evas_List_Find_Group
+ */
+EAPI void *
+evas_list_find(const Evas_List *list, const void *data)
+{
+   const Evas_List *l;
+
+   for (l = list; l; l = l->next)
+     {
+       if (l->data == data) return (void *)data;
+     }
+   return NULL;
+}
+
+/**
+ * Find a member of a list and return the list node containing that member
+ * @param list The list handle to search for @p data
+ * @param data The data pointer to find in the list @p list
+ * @return The found members list node
+ *
+ * A call to this function will search the list @p list from beginning to end
+ * for the first member whose data pointer is @p data. If it is found, the
+ * list node containing the specified member will be returned, otherwise NULL
+ * will be returned.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ * extern void *my_data;
+ * Evas_List *found_node;
+ *
+ * found_node = evas_list_find_list(list, my_data);
+ * if (found_node)
+ *   {
+ *     printf("Found member %p\n", found_node->data);
+ *   }
+ * @endcode
+ * @ingroup Evas_List_Find_Group
+ */
+EAPI Evas_List *
+evas_list_find_list(const Evas_List *list, const void *data)
+{
+   const Evas_List *l;
+
+   for (l = list; l; l = l->next)
+     {
+       if (l->data == data) return (Evas_List *)l;
+     }
+   return NULL;
+}
+
+/**
+ * Free an entire list and all the nodes, ignoring the data contained
+ * @param list The list to free
+ * @return A NULL pointer
+ *
+ * This function will free all the list nodes in list specified by @p list.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ *
+ * list = evas_list_free(list);
+ * @endcode
+ * @ingroup Evas_List_Remove_Group
+ */
+EAPI Evas_List *
+evas_list_free(Evas_List *list)
+{
+   Evas_List *l, *free_l;
+
+   if (!list) return NULL;
+   evas_mempool_free(&_evas_list_accounting_mempool, list->accounting);
+   for (l = list; l;)
+     {
+       free_l = l;
+       l = l->next;
+       evas_mempool_free(&_evas_list_mempool, free_l);
+     }
+   return NULL;
+}
+
+/**
+ * @defgroup Evas_List_Traverse_Group Linked List Traverse Functions
+ *
+ * Functions that you can use to traverse a linked list.
+ */
+
+/**
+ * Get the last list node in the list
+ * @param list The list to get the last list node from
+ * @return The last list node in the list @p list
+ *
+ * This function will return the last list node in the list (or NULL if the
+ * list is empty).
+ *
+ * NB: This is a order-1 operation (it takes the same short time regardless of
+ * the length of the list).
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ * Evas_List *last, *l;
+ *
+ * last = evas_list_last(list);
+ * printf("The list in reverse:\n");
+ * for (l = last; l; l = l->prev)
+ *   {
+ *     printf("%p\n", l->data);
+ *   }
+ * @endcode
+ * @ingroup Evas_List_Traverse_Group
+ */
+EAPI Evas_List *
+evas_list_last(const Evas_List *list)
+{
+   if (!list) return NULL;
+   return list->accounting->last;
+}
+
+/**
+ * Get the next list node after the specified list node
+ * @param list The list node to get the next list node from
+ * @return The next list node, or NULL if no next list node exists
+ *
+ * This function returns the next list node after the current one. It is
+ * equivalent to list->next.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ * Evas_List *l;
+ *
+ * printf("The list:\n");
+ * for (l = list; l; l = evas_list_next(l))
+ *   {
+ *     printf("%p\n", l->data);
+ *   }
+ * @endcode
+ * @ingroup Evas_List_Traverse_Group
+ */
+EAPI Evas_List *
+evas_list_next(const Evas_List *list)
+{
+   if (!list) return NULL;
+   return list->next;
+}
+
+/**
+ * Get the previous list node before the specified list node
+ * @param list The list node to get the previous list node from
+ * @return The previous list node, or NULL if no previous list node exists
+ *
+ * This function returns the previous list node before the current one. It is
+ * equivalent to list->prev.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ * Evas_List *last, *l;
+ *
+ * last = evas_list_last(list);
+ * printf("The list in reverse:\n");
+ * for (l = last; l; l = evas_list_prev(l))
+ *   {
+ *     printf("%p\n", l->data);
+ *   }
+ * @endcode
+ * @ingroup Evas_List_Traverse_Group
+ */
+EAPI Evas_List *
+evas_list_prev(const Evas_List *list)
+{
+   if (!list) return NULL;
+   return list->prev;
+}
+
+/**
+ * @defgroup Evas_List_General_Group Linked List General Functions
+ *
+ * Miscellaneous functions that work on linked lists.
+ */
+
+/**
+ * Get the list node data member
+ * @param list The list node to get the data member of
+ * @return The data member from the list node @p list
+ *
+ * This function returns the data member of the specified list node @p list.
+ * It is equivalent to list->data.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ * Evas_List *l;
+ *
+ * printf("The list:\n");
+ * for (l = list; l; l = evas_list_next(l))
+ *   {
+ *     printf("%p\n", evas_list_data(l));
+ *   }
+ * @endcode
+ * @ingroup Evas_List_General_Group
+ */
+EAPI void *
+evas_list_data(const Evas_List *list)
+{
+   if (!list) return NULL;
+   return list->data;
+}
+
+/**
+ * Get the count of the number of items in a list
+ * @param list The list whose count to return
+ * @return The number of members in the list @p list
+ *
+ * This function returns how many members in the specified list: @p list. If
+ * the list is empty (NULL), 0 is returned.
+ *
+ * NB: This is an order-1 operation and takes the same tiem regardless of the
+ * length of the list.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ *
+ * printf("The list has %i members\n", evas_list_count(list));
+ * @endcode
+ * @ingroup Evas_List_General_Group
+ */
+EAPI int
+evas_list_count(const Evas_List *list)
+{
+   if (!list) return 0;
+   return list->accounting->count;
+}
+
+/**
+ * Get the nth member's data pointer in a list
+ * @param list The list to get member number @p n from
+ * @param n The number of the element (0 being the first)
+ * @return The data pointer stored in the specified element
+ *
+ * This function returns the data pointer of element number @p n, in the list
+ * @p list. The first element in the array is element number 0. If the element
+ * number @p n does not exist, NULL will be returned.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ * extern int number;
+ * void *data;
+ *
+ * data = evas_list_nth(list, number);
+ * if (data)
+ *   printf("Element number %i has data %p\n", number, data);
+ * @endcode
+ * @ingroup Evas_List_Find_Group
+ */
+EAPI void *
+evas_list_nth(const Evas_List *list, int n)
+{
+   Evas_List *l;
+
+   l = evas_list_nth_list(list, n);
+   return l ? l->data : NULL;
+}
+
+/**
+ * Get the nth member's list node in a list
+ * @param list The list to get member number @p n from
+ * @param n The number of the element (0 being the first)
+ * @return The list node stored in the numbered element
+ *
+ * This function returns the list node of element number @p n, in the list
+ * @p list. The first element in the array is element number 0. If the element
+ * number @p n does not exist, NULL will be returned.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ * extern int number;
+ * Evas_List *nth_list;
+ *
+ * nth_list = evas_list_nth_list(list, number);
+ * if (nth_list)
+ *   printf("Element number %i has data %p\n", number, nth_list->data);
+ * @endcode
+ * @ingroup Evas_List_Find_Group
+ */
+EAPI Evas_List *
+evas_list_nth_list(const Evas_List *list, int n)
+{
+   int i;
+   const Evas_List *l;
+
+   /* check for non-existing nodes */
+   if ((!list) || (n < 0) ||
+       (n > (list->accounting->count - 1)))
+     return NULL;
+
+   /* if the node is in the 2nd half of the list, search from the end
+    * else, search from the beginning.
+    */
+   if (n > (list->accounting->count / 2))
+     {
+       for (i = list->accounting->count - 1,
+            l = list->accounting->last;
+            l;
+            l = l->prev, i--)
+         {
+            if (i == n) return (Evas_List *)l;
+         }
+     }
+   else
+     {
+       for (i = 0, l = list; l; l = l->next, i++)
+         {
+            if (i == n) return (Evas_List *)l;
+         }
+     }
+   return NULL;
+}
+
+/**
+ * @defgroup Evas_List_Ordering_Group Linked List Ordering Functions
+ *
+ * Functions that change the ordering of data in a linked list.
+ */
+
+/**
+ * Reverse all the elements in the list
+ * @param list The list to reverse
+ * @return The list after it has been reversed
+ *
+ * This takes a list @p list, and reverses the order of all elements in the
+ * list, so the last member is now first, and so on.
+ *
+ * Example:
+ * @code
+ * extern Evas_List *list;
+ *
+ * list = evas_list_reverse(list);
+ * @endcode
+ * @ingroup Evas_List_Ordering_Group
+ */
+EAPI Evas_List *
+evas_list_reverse(Evas_List *list)
+{
+   Evas_List *l1, *l2;
+
+   if (!list) return NULL;
+   l1 = list;
+   l2 = list->accounting->last;
+   while (l1 != l2)
+     {
+       void *data;
+
+       data = l1->data;
+       l1->data = l2->data;
+       l2->data = data;
+       l1 = l1->next;
+       if (l1 == l2) break;
+       l2 = l2->prev;
+     }
+
+   return list;
+}
+
+/**
+ * Sort a list according to the ordering func will return
+ * @param list The list handle to sort
+ * @param size The length of the list to sort
+ * @param func A function pointer that can handle comparing the list data
+ * nodes
+ * @return A new sorted list
+ *
+ * This function sorts your list.  The data in your nodes can be arbitrary,
+ * you just have to be smart enough to know what kind of data is in your
+ * lists
+ *
+ * Example:
+ * @code
+ * int
+ * sort_cb(void *d1, void *d2)
+ * {
+ *   const char *txt = NULL;
+ *    const char *txt2 = NULL;
+ *
+ *    if(!d1) return(1);
+ *    if(!d2) return(-1);
+ *
+ *    return(strcmp((const char*)d1, (const char*)d2));
+ * }
+ * extern Evas_List *list;
+ *
+ * list = evas_list_sort(list, evas_list_count(list), sort_cb);
+ * if (evas_list_alloc_error())
+ *   {
+ *     fprintf(stderr, "ERROR: Memory is low. List Sorting failed.\n");
+ *     exit(-1);
+ *   }
+ * @endcode
+ * @ingroup Evas_List_Ordering_Group
+ */
+EAPI Evas_List *
+evas_list_sort(Evas_List *list, int size, int (*func)(void *, void *))
+{
+   Evas_List*   last;
+   unsigned int        list_number;
+   unsigned int        middle;
+   int         list_size;
+
+   if (!list || !func)
+     return NULL;
+
+   /* if the caller specified an invalid size, sort the whole list */
+   if ((size <= 0) ||
+       (size > list->accounting->count))
+     size = list->accounting->count;
+
+   last = list->accounting->last;
+   middle = size - size / 2;
+
+   for (list_number = middle, list_size = 1;
+       list_size < middle * 2;
+       list_number >>= 1, list_size <<= 1)
+     {
+       Evas_List       *head1 = list;
+       unsigned int    limit = size;
+       unsigned int    process_list;
+       unsigned int    pass_number;
+       unsigned int    split_size = list_size;
+
+       for (process_list = 0; process_list < list_number + 1; ++process_list)
+         {
+            Evas_List          *head2;
+            unsigned int       size_sum;
+            int                size1, size2;
+            int                i;
+
+            size1 = limit < split_size ? limit : split_size;
+            limit -= size1;
+
+            size2 = limit < split_size ? limit : split_size;
+            limit -= size2;
+
+            size_sum = size1 + size2;
+
+            for (head2 = head1, i = 0; i < size1; ++i)
+              head2 = evas_list_next (head2);
+
+            for (pass_number = 0; pass_number < size_sum; ++pass_number)
+              {
+                 Evas_List     *next;
+                 Evas_List     *prev1;
+                 Evas_List     *prev2;
+
+                 if (size1 == 0 || head1 == NULL) /* List1 is empty, head1 is already at the end of the list. So only need to update head2 */
+                   {
+                      for (; pass_number < size_sum; ++pass_number)
+                        head2 = evas_list_next (head2);
+                      break;
+                   }
+                 else
+                   if (size2 == 0 || head2 == NULL) /* List2 is empty, just leave */
+                     break;
+                   else
+                     if (func (head1->data, head2->data) < 0)
+                       {
+                          head1 = evas_list_next (head1);
+                          --size1;
+                       }
+                     else
+                       {
+                          next = evas_list_next (head2);
+                          prev1 = evas_list_prev (head1);
+                          prev2 = evas_list_prev (head2);
+
+                          if (next)
+                            next->prev = prev2;
+                          if (prev1)
+                            prev1->next = head2;
+                          if (prev2)
+                            prev2->next = next;
+
+                          head2->prev = prev1;
+                          head2->next = head1;
+                          head1->prev = head2;
+
+                          --size2;
+
+                           if (head1 == list)
+                             list = head2;
+                           if (head2 == last)
+                             last = prev2;
+
+                          head2 = next;
+                       }
+              }
+            head1 = head2;
+         }
+     }
+
+   list->accounting->last = last;
+   return list;
+}
+/**
+ * Return the memory allocation failure flag after any operation needin allocation
+ * @return The state of the allocation flag
+ *
+ * This function returns the state of the memory allocation flag. This flag is
+ * set if memory allocations during evas_list_append(), evas_list_prepend(),
+ * evas_list_append_relative(), or evas_list_prepend_relative() fail. If they
+ * do fail, 1 will be returned, otherwise 0 will be returned. The flag will
+ * remain in its current state until the next call that requires allocation
+ * is called, and is then reset.
+ *
+ * Example:
+ * @code
+ * Evas_List *list = NULL;
+ * extern void *my_data;
+ *
+ * list = evas_list_append(list, my_data);
+ * if (evas_list_alloc_error())
+ *   {
+ *     fprintf(stderr, "ERROR: Memory is low. List allocation failed.\n");
+ *     exit(-1);
+ *   }
+ * @endcode
+ * @ingroup Evas_List_General_Group
+ */
+EAPI int
+evas_list_alloc_error(void)
+{
+   return _evas_list_alloc_error;
+}
diff --git a/src/lib/data/evas_mempool.c b/src/lib/data/evas_mempool.c
new file mode 100644 (file)
index 0000000..6bbf390
--- /dev/null
@@ -0,0 +1,188 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <string.h>
+
+#include "Evas_Data.h"
+#include "evas_mempool.h"
+
+//#define NOPOOL
+
+typedef struct _Pool Pool;
+
+struct _Pool
+{
+   int   usage;
+   void *base;
+   Pool *prev, *next;
+};
+
+
+Pool *
+_evas_mp_pool_new(Evas_Mempool *pool)
+#ifdef NOPOOL
+{
+   static Pool thepool;
+   return &thepool;
+}
+#else
+{
+   Pool *p;
+   void **ptr;
+   int item_alloc, i;
+
+   item_alloc = ((pool->item_size + sizeof(void *) - 1) / sizeof(void *)) * sizeof(void *);
+   p = malloc(sizeof(Pool) + (pool->pool_size * item_alloc));
+   ptr = (void **)(((unsigned char *)p) + sizeof(Pool));
+   p->usage = 0;
+   p->base = ptr;
+   for (i = 0; i < pool->pool_size - 1; i++)
+     {
+       *ptr = (void **)(((unsigned char *)ptr) + item_alloc);
+       ptr = *ptr;
+     }
+   *ptr = NULL;
+   return p;
+}
+#endif
+
+void
+_evas_mp_pool_free(Pool *p)
+#ifdef NOPOOL
+{
+}
+#else
+{
+   free(p);
+}
+#endif
+
+void *
+evas_mempool_malloc(Evas_Mempool *pool, int size)
+#ifdef NOPOOL
+{
+   return malloc(size);
+}
+#else
+{
+   Pool *p;
+   void *mem;
+
+   for (p = pool->first; p; p = p->next) // look 4 pool from 2nd bucket on
+     {
+       if (p->base) // base is not NULL - has a free slot
+         {
+            if (p->prev)
+              {
+                 if (pool->last == p) pool->last = p->prev;
+                 p->prev->next = p->next;
+                 p->prev = NULL;
+                 p->next = pool->first;
+                 p->next->prev = p;
+                 pool->first = p;
+              }
+            break;
+         }
+     }
+   if (!p) // we have reached the end of the list - no free pools
+     {
+       p = _evas_mp_pool_new(pool);
+       if (!p) return NULL;
+       p->prev = NULL;
+       p->next = pool->first;
+       if (p->next) p->next->prev = p;
+       if (!pool->last) pool->last = p;
+       pool->first = p;
+     }
+   mem = p->base; // this points to the next free block - so take it
+   p->base = *((void **)mem); // base now points to the next free block
+   if (!p->base) // move to end - it just filled up
+     {
+       if (p->next)
+         {
+            if (p->prev) p->prev->next = p->next;
+            else pool->first = p->next;
+            p->next->prev = p->prev;
+            ((Pool *)pool->last)->next = p;
+            p->prev = pool->last;
+            p->next = NULL;
+            pool->last = p;
+         }
+     }
+   p->usage++;
+   pool->usage++;
+   return mem;
+}
+#endif
+
+void
+evas_mempool_free(Evas_Mempool *pool, void *ptr)
+#ifdef NOPOOL
+{
+   free(ptr);
+}
+#else
+{
+   Pool *p;
+   void *pmem;
+   int item_alloc, psize;
+
+   item_alloc = ((pool->item_size + sizeof(void *) - 1) / sizeof(void *)) * sizeof(void *);
+   psize = item_alloc * pool->pool_size;
+   for (p = (Pool *)(pool->first); p; p = p->next) // look 4 pool
+     {
+       pmem = (void *)(((unsigned char *)p) + sizeof(Pool)); // pool mem base
+       if ((ptr >= pmem) && ((unsigned char *)ptr < (((unsigned char *)pmem) + psize))) // is it in pool mem?
+         {
+            *((void **)ptr) = p->base; // freed node points to prev free node
+            p->base = ptr; // next free node is now the one we freed
+            p->usage--;
+            pool->usage--;
+            if (p->usage == 0) // free bucket
+              {
+                 if (p->prev) p->prev->next = p->next;
+                 if (p->next) p->next->prev = p->prev;
+                 if (pool->last == p) pool->last = p->prev;
+                 if (pool->first == p) pool->first = p->next;
+                 _evas_mp_pool_free(p);
+              }
+            else
+              {
+                 if (p->prev) // if not the first - move to front
+                   {
+                      p->prev->next = p->next;
+                      if (p->next) p->next->prev = p->prev;
+                      if (pool->last == p) pool->last = p->prev;
+                      p->prev = NULL;
+                      p->next = pool->first;
+                      p->next->prev = p;
+                      pool->first = p;
+                   }
+              }
+            break;
+         }
+     }
+}
+#endif
+
+void *
+evas_mempool_calloc(Evas_Mempool *pool, int size)
+#ifdef NOPOOL
+{
+   return calloc(1, size);
+}
+#else
+{
+   void *mem;
+
+   mem = evas_mempool_malloc(pool, size);
+   memset(mem, 0, size);
+   return mem;
+}
+#endif
diff --git a/src/lib/data/evas_mempool.h b/src/lib/data/evas_mempool.h
new file mode 100644 (file)
index 0000000..b1d5283
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_MEMPOOL_H
+#define _EVAS_MEMPOOL_H
+
+
+typedef struct _Evas_Mempool Evas_Mempool;
+
+struct _Evas_Mempool
+{
+   int           item_size;
+   int           pool_size;
+   int           usage;
+   void         *first, *last;
+};
+
+
+void *evas_mempool_malloc(Evas_Mempool *pool, int size);
+void  evas_mempool_free(Evas_Mempool *pool, void *ptr);
+void *evas_mempool_calloc(Evas_Mempool *pool, int size);
+
+
+#endif /* _EVAS_MEMPOOL_H */
diff --git a/src/lib/data/evas_object_list.c b/src/lib/data/evas_object_list.c
new file mode 100644 (file)
index 0000000..d77687c
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+
+#include "Evas_Data.h"
+
+/* list ops */
+void *
+evas_object_list_append(void *in_list, void *in_item)
+{
+   Evas_Object_List *l, *new_l;
+   Evas_Object_List *list;
+
+   list = in_list;
+   new_l = in_item;
+   new_l->next = NULL;
+   if (!list)
+     {
+       new_l->prev = NULL;
+       new_l->last = new_l;
+       return new_l;
+     }
+   if (list->last) l = list->last;
+   else for (l = list; (l) && (l->next); l = l->next);
+   l->next = new_l;
+   new_l->prev = l;
+   list->last = new_l;
+   return list;
+}
+
+void *
+evas_object_list_prepend(void *in_list, void *in_item)
+{
+   Evas_Object_List *new_l;
+   Evas_Object_List *list;
+
+   list = in_list;
+   new_l = in_item;
+   new_l->prev = NULL;
+   if (!list)
+     {
+       new_l->next = NULL;
+       new_l->last = new_l;
+       return new_l;
+     }
+   new_l->next = list;
+   list->prev = new_l;
+   new_l->last = list->last;
+   list->last = NULL;
+   return new_l;
+}
+
+void *
+evas_object_list_append_relative(void *in_list, void *in_item, void *in_relative)
+{
+   Evas_Object_List *list, *relative, *new_l;
+
+   list = in_list;
+   new_l = in_item;
+   relative = in_relative;
+   if (relative)
+     {
+       if (relative->next)
+         {
+            new_l->next = relative->next;
+            relative->next->prev = new_l;
+         }
+       else new_l->next = NULL;
+       relative->next = new_l;
+       new_l->prev = relative;
+       if (!new_l->next) list->last = new_l;
+       return list;
+     }
+   return evas_object_list_append(list, new_l);
+}
+
+void *
+evas_object_list_prepend_relative(void *in_list, void *in_item, void *in_relative)
+{
+   Evas_Object_List *list, *relative, *new_l;
+
+   list = in_list;
+   new_l = in_item;
+   relative = in_relative;
+   if (relative)
+     {
+       new_l->prev = relative->prev;
+       new_l->next = relative;
+       relative->prev = new_l;
+       if (new_l->prev)
+         {
+            new_l->prev->next = new_l;
+            if (!new_l->next)
+              list->last = new_l;
+            return list;
+         }
+       else
+         {
+            if (!new_l->next)
+              new_l->last = new_l;
+            else
+              {
+                 new_l->last = list->last;
+                 list->last = NULL;
+              }
+            return new_l;
+         }
+     }
+   return evas_object_list_prepend(list, new_l);
+}
+
+void *
+evas_object_list_remove(void *in_list, void *in_item)
+{
+   Evas_Object_List *return_l;
+   Evas_Object_List *list, *item;
+
+   /* checkme */
+   if(!in_list)
+     return in_list;
+
+   list = in_list;
+   item = in_item;
+   if (!item) return list;
+   if (item->next)
+     item->next->prev = item->prev;
+   if (item->prev)
+     {
+       item->prev->next = item->next;
+       return_l = list;
+     }
+   else
+     {
+       return_l = item->next;
+       if (return_l)
+         return_l->last = list->last;
+     }
+   if (item == list->last)
+     list->last = item->prev;
+   item->next = NULL;
+   item->prev = NULL;
+   return return_l;
+}
+
+void *
+evas_object_list_find(void *in_list, void *in_item)
+{
+   Evas_Object_List *l;
+   Evas_Object_List *list, *item;
+
+   list = in_list;
+   item = in_item;
+   for (l = list; l; l = l->next)
+     {
+       if (l == item) return item;
+     }
+   return NULL;
+}
diff --git a/src/lib/data/evas_stringshare.c b/src/lib/data/evas_stringshare.c
new file mode 100644 (file)
index 0000000..b05dcdf
--- /dev/null
@@ -0,0 +1,205 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+
+
+#include "Evas_Data.h"
+
+typedef struct _Evas_Stringshare             Evas_Stringshare;
+typedef struct _Evas_Stringshare_El          Evas_Stringshare_El;
+
+struct _Evas_Stringshare
+{
+   Evas_Stringshare_El *buckets[1024];
+};
+
+struct _Evas_Stringshare_El
+{
+   Evas_Stringshare_El *next;
+//   int op;
+   int                  references;
+};
+
+static Evas_Stringshare share =
+{
+     {
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+         
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+         
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
+       NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL
+     }
+};
+
+//static int op = 0;
+//static FILE *f = NULL;
+
+static inline int
+_evas_stringshare_hash_gen(const char *str, int *len)
+{
+   unsigned int hash_num = 5381;
+   const unsigned char *ptr;
+
+   for (ptr = (const unsigned char *)str; *ptr; ptr++)
+     {
+       hash_num = (hash_num * 33) ^ *ptr;
+     }
+
+   hash_num &= 0x3ff;
+   *len = ptr - (const unsigned char *)str;
+   return (int)hash_num;
+}
+
+EAPI const char *
+evas_stringshare_add(const char *str)
+{
+   int hash_num, slen;
+   char *el_str;
+   Evas_Stringshare_El *el, *pel = NULL;
+
+   if (!str) return NULL;
+//   if (!f)
+//     {
+//     char bf[256];
+//     snprintf(bf, sizeof(bf), "strlog-%i", getpid());
+//     f = fopen(bf, "w");
+//     }
+   hash_num = _evas_stringshare_hash_gen(str, &slen);
+   for (el = share.buckets[hash_num]; el; pel = el, el = el->next)
+     {
+       el_str = ((char *)el) + sizeof(Evas_Stringshare_El);
+       if (!strcmp(el_str, str))
+         {
+            if (pel)
+              {
+                 pel->next = el->next;
+                 el->next = share.buckets[hash_num];
+                 share.buckets[hash_num] = el;
+              }
+            el->references++;
+//          fprintf(f, "strings[%i] = str->add(strings[%i]);\n", el->op, el->op);
+//          fflush(f);
+            return el_str;
+         }
+     }
+   if (!(el = malloc(sizeof(Evas_Stringshare_El) + slen + 1))) return NULL;
+   el_str = ((char *)el) + sizeof(Evas_Stringshare_El);
+   strcpy(el_str, str);
+   el->references = 1;
+   el->next = share.buckets[hash_num];
+   share.buckets[hash_num] = el;
+//   el->op = op;
+//   fprintf(f, "strings[%i] = str->add(\"%s\");\n", el->op, el_str);
+//   fflush(f);
+//   op++;
+   return el_str;
+}
+
+EAPI void
+evas_stringshare_del(const char *str)
+{
+   int hash_num, slen;
+   char *el_str;
+   Evas_Stringshare_El *el, *pel = NULL;
+
+   if (!str) return;
+   hash_num = _evas_stringshare_hash_gen(str, &slen);
+   for (el = share.buckets[hash_num]; el; pel = el, el = el->next)
+     {
+       el_str = ((char *)el) + sizeof(Evas_Stringshare_El);
+       if (el_str == str)
+         {
+            el->references--;
+//          fprintf(f, "str->del(strings[%i]);\n", el->op);
+//          fflush(f);
+            if (el->references == 0)
+              {
+                 if (pel) pel->next = el->next;
+                 else share.buckets[hash_num] = el->next;
+                 free(el);
+              }
+            else
+              {
+                 if (pel)
+                   {
+                      pel->next = el->next;
+                      el->next = share.buckets[hash_num];
+                      share.buckets[hash_num] = el;
+                   }
+              }
+            return;
+         }
+     }
+   printf("EEEK trying to del non-shared stringshare \"%s\"\n", str);
+   abort();
+}
diff --git a/src/lib/engines/.cvsignore b/src/lib/engines/.cvsignore
new file mode 100644 (file)
index 0000000..3dda729
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile.in
+Makefile
diff --git a/src/lib/engines/Makefile.am b/src/lib/engines/Makefile.am
new file mode 100644 (file)
index 0000000..13f48e3
--- /dev/null
@@ -0,0 +1,5 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+SUBDIRS = \
+common common_16
diff --git a/src/lib/engines/common/.cvsignore b/src/lib/engines/common/.cvsignore
new file mode 100644 (file)
index 0000000..306efda
--- /dev/null
@@ -0,0 +1,6 @@
+Makefile.in
+Makefile
+.deps
+.libs
+libevas_engine_common.la
+*.lo
diff --git a/src/lib/engines/common/Makefile.am b/src/lib/engines/common/Makefile.am
new file mode 100644 (file)
index 0000000..516caf9
--- /dev/null
@@ -0,0 +1,100 @@
+
+SUBDIRS = evas_op_add evas_op_blend evas_op_copy evas_op_mask evas_op_mul evas_op_sub
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS         = -I. \
+                      -I$(top_srcdir)/src/lib \
+                      -I$(top_srcdir)/src/lib/include \
+                      -DPACKAGE_BIN_DIR=\"$(bindir)\" \
+                      -DPACKAGE_LIB_DIR=\"$(libdir)\" \
+                      -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+                      @FREETYPE_CFLAGS@ @VALGRIND_CFLAGS@ \
+                      @EET_CFLAGS@ @pthread_cflags@ \
+                      @WIN32_CFLAGS@
+
+noinst_LTLIBRARIES      = libevas_engine_common.la
+libevas_engine_common_la_SOURCES  = \
+evas_op_copy_main_.c \
+evas_op_blend_main_.c \
+evas_op_add_main_.c \
+evas_op_sub_main_.c \
+evas_op_mask_main_.c \
+evas_op_mul_main_.c \
+evas_blend_main.c \
+evas_blit_main.c \
+evas_convert_color.c \
+evas_convert_colorspace.c \
+evas_convert_gry_1.c \
+evas_convert_gry_4.c \
+evas_convert_gry_8.c \
+evas_convert_main.c \
+evas_convert_rgb_16.c \
+evas_convert_rgb_24.c \
+evas_convert_rgb_32.c \
+evas_convert_rgb_8.c \
+evas_convert_yuv.c \
+evas_cpu.c \
+evas_draw_main.c \
+evas_font_draw.c \
+evas_font_load.c \
+evas_font_main.c \
+evas_font_query.c \
+evas_gradient_main.c \
+evas_gradient_linear.c \
+evas_gradient_radial.c \
+evas_gradient_angular.c \
+evas_gradient_rectangular.c \
+evas_gradient_sinusoidal.c \
+evas_image_load.c \
+evas_image_save.c \
+evas_image_main.c \
+evas_image_data.c \
+evas_line_main.c \
+evas_polygon_main.c \
+evas_rectangle_main.c \
+evas_scale_main.c \
+evas_scale_sample.c \
+evas_scale_smooth.c \
+evas_scale_span.c \
+evas_tiler.c \
+evas_regionbuf.c \
+evas_pipe.c
+
+EXTRA_DIST = \
+evas_blend.h \
+evas_blend_private.h \
+evas_convert_color.h \
+evas_convert_colorspace.h \
+evas_convert_gry_1.h \
+evas_convert_gry_4.h \
+evas_convert_gry_8.h \
+evas_convert_main.h \
+evas_convert_rgb_16.h \
+evas_convert_rgb_24.h \
+evas_convert_rgb_32.h \
+evas_convert_rgb_8.h \
+evas_convert_yuv.h \
+evas_draw.h \
+evas_font.h \
+evas_gradient.h \
+evas_gradient_private.h \
+evas_image.h \
+evas_image_private.h \
+evas_line.h \
+evas_polygon.h \
+evas_rectangle.h \
+evas_scale_main.h \
+evas_scale_smooth.h \
+evas_scale_smooth_scaler.c \
+evas_scale_smooth_scaler_down.c \
+evas_scale_smooth_scaler_downx.c \
+evas_scale_smooth_scaler_downx_downy.c \
+evas_scale_smooth_scaler_downy.c \
+evas_scale_smooth_scaler_noscale.c \
+evas_scale_smooth_scaler_up.c \
+evas_scale_span.h \
+evas_pipe.h
+
+libevas_engine_common_la_DEPENDENCIES = \
+$(top_builddir)/config.h
diff --git a/src/lib/engines/common/evas_blend.h b/src/lib/engines/common/evas_blend.h
new file mode 100644 (file)
index 0000000..65ed493
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_BLEND_H
+#define _EVAS_BLEND_H
+
+
+EAPI void evas_common_blend_init (void);
+
+
+#endif /* _EVAS_BLEND_H */
diff --git a/src/lib/engines/common/evas_blend_main.c b/src/lib/engines/common/evas_blend_main.c
new file mode 100644 (file)
index 0000000..cd9808a
--- /dev/null
@@ -0,0 +1,329 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_blend_private.h"
+
+#if defined BUILD_MMX || defined BUILD_SSE
+#include "evas_mmx.h"
+#endif
+
+const DATA32 ALPHA_255 = 255;
+const DATA32 ALPHA_256 = 256;
+
+static void
+_composite_span_nothing(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l)
+{
+}
+
+static void
+_composite_pt_nothing(DATA32 s, DATA8 m, DATA32 c, DATA32 *d)
+{
+}
+
+static RGBA_Gfx_Compositor  *
+evas_gfx_compositor_get(unsigned char op)
+{
+   RGBA_Gfx_Compositor  *comp;
+
+   switch (op)
+      {
+       case _EVAS_RENDER_BLEND:
+          comp = evas_common_gfx_compositor_blend_get();
+          break;
+       case _EVAS_RENDER_BLEND_REL:
+          comp = evas_common_gfx_compositor_blend_rel_get();
+          break;
+       case _EVAS_RENDER_COPY:
+          comp = evas_common_gfx_compositor_copy_get();
+          break;
+       case _EVAS_RENDER_COPY_REL:
+          comp = evas_common_gfx_compositor_copy_rel_get();
+          break;
+/*
+       case _EVAS_RENDER_ADD:
+          comp = evas_common_gfx_compositor_add_get();
+          break;
+       case _EVAS_RENDER_ADD_REL:
+          comp = evas_common_gfx_compositor_add_rel_get();
+          break;
+       case _EVAS_RENDER_SUB:
+          comp = evas_common_gfx_compositor_sub_get();
+          break;
+       case _EVAS_RENDER_SUB_REL:
+          comp = evas_common_gfx_compositor_sub_rel_get();
+          break;
+*/
+       case _EVAS_RENDER_MASK:
+          comp = evas_common_gfx_compositor_mask_get();
+          break;
+       case _EVAS_RENDER_MUL:
+          comp = evas_common_gfx_compositor_mul_get();
+          break;
+       default:
+          comp = evas_common_gfx_compositor_blend_get();
+          break;
+      }
+   return comp;
+}
+
+EAPI void
+evas_common_blend_init(void)
+{
+   static int gfx_initialised = 0;
+   static int mmx = 0;
+   static int sse = 0;
+   static int sse2 = 0;
+   RGBA_Gfx_Compositor  *comp;
+
+   if (gfx_initialised) return;
+   gfx_initialised = 1;
+
+   evas_common_cpu_can_do(&mmx, &sse, &sse2);
+
+   comp = evas_common_gfx_compositor_copy_get();
+   if (comp) comp->init();
+   comp = evas_common_gfx_compositor_copy_rel_get();
+   if (comp) comp->init();
+
+   comp = evas_common_gfx_compositor_blend_get();
+   if (comp) comp->init();
+   comp = evas_common_gfx_compositor_blend_rel_get();
+   if (comp) comp->init();
+
+/*
+   comp = evas_common_gfx_compositor_add_get();
+   if (comp) comp->init();
+   comp = evas_common_gfx_compositor_add_rel_get();
+   if (comp) comp->init();
+   comp = evas_common_gfx_compositor_sub_get();
+   if (comp) comp->init();
+   comp = evas_common_gfx_compositor_sub_rel_get();
+   if (comp) comp->init();
+*/
+   comp = evas_common_gfx_compositor_mask_get();
+   if (comp) comp->init();
+
+   comp = evas_common_gfx_compositor_mul_get();
+   if (comp) comp->init();
+}
+
+void
+evas_common_blend_shutdown(void)
+{
+   RGBA_Gfx_Compositor  *comp;
+
+   comp = evas_common_gfx_compositor_copy_get();
+   if (comp) comp->shutdown();
+   comp = evas_common_gfx_compositor_copy_rel_get();
+   if (comp) comp->shutdown();
+
+   comp = evas_common_gfx_compositor_blend_get();
+   if (comp) comp->shutdown();
+   comp = evas_common_gfx_compositor_blend_rel_get();
+   if (comp) comp->shutdown();
+
+/*
+   comp = evas_common_gfx_compositor_add_get();
+   if (comp) comp->shutdown();
+   comp = evas_common_gfx_compositor_add_rel_get();
+   if (comp) comp->shutdown();
+   comp = evas_common_gfx_compositor_sub_get();
+   if (comp) comp->shutdown();
+   comp = evas_common_gfx_compositor_sub_rel_get();
+   if (comp) comp->shutdown();
+*/
+   comp = evas_common_gfx_compositor_mask_get();
+   if (comp) comp->shutdown();
+
+   comp = evas_common_gfx_compositor_mul_get();
+   if (comp) comp->shutdown();
+}
+
+
+RGBA_Gfx_Func
+evas_common_gfx_func_composite_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels, int op)
+{
+   RGBA_Gfx_Compositor  *comp;
+   RGBA_Gfx_Func        func = NULL;
+
+   if (src && (!src->cache_entry.flags.alpha))
+     {
+       if (op == _EVAS_RENDER_BLEND)
+          op = _EVAS_RENDER_COPY;
+       if (op == _EVAS_RENDER_BLEND_REL)
+          op = _EVAS_RENDER_COPY_REL;
+     }
+   comp = evas_gfx_compositor_get(op);
+   if (comp)
+       func = comp->composite_pixel_span_get(src, dst, pixels);
+   if (func)
+       return func;
+   return _composite_span_nothing;
+}
+
+RGBA_Gfx_Func
+evas_common_gfx_func_composite_color_span_get(DATA32 col, RGBA_Image *dst, int pixels, int op)
+{
+   RGBA_Gfx_Compositor  *comp;
+   RGBA_Gfx_Func        func = NULL;
+
+   if ((col & 0xff000000) == 0xff000000)
+     {
+       if (op == _EVAS_RENDER_BLEND)
+          op = _EVAS_RENDER_COPY;
+       if (op == EVAS_RENDER_BLEND_REL)
+          op = _EVAS_RENDER_COPY_REL;
+     }
+
+   comp = evas_gfx_compositor_get(op);
+   if (comp)
+       func = comp->composite_color_span_get(col, dst, pixels);
+   if (func)
+       return func;
+   return _composite_span_nothing;
+}
+
+RGBA_Gfx_Func
+evas_common_gfx_func_composite_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels, int op)
+{
+   RGBA_Gfx_Compositor  *comp;
+   RGBA_Gfx_Func        func = NULL;
+
+   if ((src && (!src->cache_entry.flags.alpha)) && ((col & 0xff000000) == 0xff000000))
+     {
+       if (op == _EVAS_RENDER_BLEND)
+          op = _EVAS_RENDER_COPY;
+       if (op == _EVAS_RENDER_BLEND_REL)
+          op = _EVAS_RENDER_COPY_REL;
+     }
+
+   comp = evas_gfx_compositor_get(op);
+   if (comp)
+       func = comp->composite_pixel_color_span_get(src, col, dst, pixels);
+   if (func)
+       return func;
+   return _composite_span_nothing;
+}
+
+RGBA_Gfx_Func
+evas_common_gfx_func_composite_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels, int op)
+{
+   RGBA_Gfx_Compositor  *comp;
+   RGBA_Gfx_Func        func = NULL;
+
+   comp = evas_gfx_compositor_get(op);
+   if (comp)
+       func = comp->composite_mask_color_span_get(col, dst, pixels);
+   if (func)
+       return func;
+   return _composite_span_nothing;
+}
+
+RGBA_Gfx_Func
+evas_common_gfx_func_composite_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels, int op)
+{
+   RGBA_Gfx_Compositor  *comp;
+   RGBA_Gfx_Func        func = NULL;
+
+   comp = evas_gfx_compositor_get(op);
+   if (comp)
+       func = comp->composite_pixel_mask_span_get(src, dst, pixels);
+   if (func)
+       return func;
+   return _composite_span_nothing;
+}
+
+RGBA_Gfx_Pt_Func
+evas_common_gfx_func_composite_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst, int op)
+{
+   RGBA_Gfx_Compositor  *comp;
+   RGBA_Gfx_Pt_Func     func = NULL;
+
+   if (!src_flags.alpha)
+     {
+       if (op == _EVAS_RENDER_BLEND)
+          op = _EVAS_RENDER_COPY;
+       if (op == _EVAS_RENDER_BLEND_REL)
+          op = _EVAS_RENDER_COPY_REL;
+     }
+   comp = evas_gfx_compositor_get(op);
+   if (comp)
+       func = comp->composite_pixel_pt_get(src_flags, dst);
+   if (func)
+       return func;
+   return _composite_pt_nothing;
+}
+
+RGBA_Gfx_Pt_Func
+evas_common_gfx_func_composite_color_pt_get(DATA32 col, RGBA_Image *dst, int op)
+{
+   RGBA_Gfx_Compositor  *comp;
+   RGBA_Gfx_Pt_Func     func = NULL;
+
+   if ((col & 0xff000000) == 0xff000000)
+     {
+       if (op == _EVAS_RENDER_BLEND)
+          op = _EVAS_RENDER_COPY;
+       if (op == EVAS_RENDER_BLEND_REL)
+          op = _EVAS_RENDER_COPY_REL;
+     }
+
+   comp = evas_gfx_compositor_get(op);
+   if (comp)
+       func = comp->composite_color_pt_get(col, dst);
+   if (func)
+       return func;
+   return _composite_pt_nothing;
+}
+
+RGBA_Gfx_Pt_Func
+evas_common_gfx_func_composite_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst, int op)
+{
+   RGBA_Gfx_Compositor  *comp;
+   RGBA_Gfx_Pt_Func     func = NULL;
+
+   if ((!src_flags.alpha) && ((col & 0xff000000) == 0xff000000))
+     {
+       if (op == _EVAS_RENDER_BLEND)
+          op = _EVAS_RENDER_COPY;
+       if (op == _EVAS_RENDER_BLEND_REL)
+          op = _EVAS_RENDER_COPY_REL;
+     }
+
+   comp = evas_gfx_compositor_get(op);
+   if (comp)
+       func = comp->composite_pixel_color_pt_get(src_flags, col, dst);
+   if (func)
+       return func;
+   return _composite_pt_nothing;
+}
+
+RGBA_Gfx_Pt_Func
+evas_common_gfx_func_composite_mask_color_pt_get(DATA32 col, RGBA_Image *dst, int op)
+{
+   RGBA_Gfx_Compositor  *comp;
+   RGBA_Gfx_Pt_Func     func = NULL;
+
+   comp = evas_gfx_compositor_get(op);
+   if (comp)
+       func = comp->composite_mask_color_pt_get(col, dst);
+   if (func)
+       return func;
+   return _composite_pt_nothing;
+}
+
+RGBA_Gfx_Pt_Func
+evas_common_gfx_func_composite_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst, int op)
+{
+   RGBA_Gfx_Compositor  *comp;
+   RGBA_Gfx_Pt_Func     func = NULL;
+
+   comp = evas_gfx_compositor_get(op);
+   if (comp)
+       func = comp->composite_pixel_mask_pt_get(src_flags, dst);
+   if (func)
+       return func;
+   return _composite_pt_nothing;
+}
diff --git a/src/lib/engines/common/evas_blend_private.h b/src/lib/engines/common/evas_blend_private.h
new file mode 100644 (file)
index 0000000..84513d1
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_BLEND_PRIVATE_H
+#define _EVAS_BLEND_PRIVATE_H
+
+
+RGBA_Gfx_Compositor *evas_common_gfx_compositor_blend_get                (void);
+RGBA_Gfx_Compositor *evas_common_gfx_compositor_blend_rel_get            (void);
+RGBA_Gfx_Compositor *evas_common_gfx_compositor_copy_get                 (void);
+RGBA_Gfx_Compositor *evas_common_gfx_compositor_copy_rel_get             (void);
+RGBA_Gfx_Compositor *evas_common_gfx_compositor_add_get                  (void);
+RGBA_Gfx_Compositor *evas_common_gfx_compositor_add_rel_get              (void);
+/*
+RGBA_Gfx_Compositor *evas_common_gfx_compositor_sub_get(void);
+RGBA_Gfx_Compositor *evas_common_gfx_compositor_sub_rel_get(void);
+*/
+RGBA_Gfx_Compositor *evas_common_gfx_compositor_mask_get                 (void);
+RGBA_Gfx_Compositor *evas_common_gfx_compositor_mul_get                  (void);
+
+RGBA_Gfx_Func        evas_common_gfx_func_composite_pixel_span_get       (RGBA_Image *src, RGBA_Image *dst, int pixels, int op);
+RGBA_Gfx_Func        evas_common_gfx_func_composite_color_span_get       (DATA32 col, RGBA_Image *dst, int pixels, int op);
+RGBA_Gfx_Func        evas_common_gfx_func_composite_pixel_color_span_get (RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels, int op);
+RGBA_Gfx_Func        evas_common_gfx_func_composite_mask_color_span_get  (DATA32 col, RGBA_Image *dst, int pixels, int op);
+RGBA_Gfx_Func        evas_common_gfx_func_composite_pixel_mask_span_get  (RGBA_Image *src, RGBA_Image *dst, int pixels, int op);
+
+RGBA_Gfx_Pt_Func     evas_common_gfx_func_composite_pixel_pt_get         (Image_Entry_Flags src_flags, RGBA_Image *dst, int op);
+RGBA_Gfx_Pt_Func     evas_common_gfx_func_composite_color_pt_get         (DATA32 col, RGBA_Image *dst, int op);
+RGBA_Gfx_Pt_Func     evas_common_gfx_func_composite_pixel_color_pt_get   (Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst, int op);
+RGBA_Gfx_Pt_Func     evas_common_gfx_func_composite_mask_color_pt_get    (DATA32 col, RGBA_Image *dst, int op);
+RGBA_Gfx_Pt_Func     evas_common_gfx_func_composite_pixel_mask_pt_get    (Image_Entry_Flags src_flags, RGBA_Image *dst, int op);
+
+
+#endif /* _EVAS_BLEND_PRIVATE_H */
diff --git a/src/lib/engines/common/evas_blit_main.c b/src/lib/engines/common/evas_blit_main.c
new file mode 100644 (file)
index 0000000..e350d79
--- /dev/null
@@ -0,0 +1,491 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+
+#if defined BUILD_MMX || defined BUILD_SSE
+#include "evas_mmx.h"
+#endif
+
+#define ALIGN_FIX
+
+static void evas_common_copy_pixels_c        (DATA32 *src, DATA32 *dst, int len);
+static void evas_common_copy_pixels_mmx      (DATA32 *src, DATA32 *dst, int len);
+static void evas_common_copy_pixels_mmx2     (DATA32 *src, DATA32 *dst, int len);
+static void evas_common_copy_pixels_sse/*NB*/ (DATA32 *src, DATA32 *dst, int len);
+
+static void evas_common_copy_pixels_rev_c           (DATA32 *src, DATA32 *dst, int len);
+static void evas_common_copy_pixels_rev_mmx         (DATA32 *src, DATA32 *dst, int len);
+static void evas_common_copy_pixels_rev_sse/*NB*/ (DATA32 *src, DATA32 *dst, int len);
+
+static void evas_common_copy_rev_pixels_c           (DATA32 *src, DATA32 *dst, int len);
+
+
+EAPI void
+evas_common_blit_init(void)
+{
+}
+
+EAPI void
+evas_common_blit_rectangle(const RGBA_Image *src, RGBA_Image *dst, int src_x, int src_y, int w, int h, int dst_x, int dst_y)
+{
+   int y;
+   Gfx_Func_Copy func;
+   DATA32 *src_ptr, *dst_ptr;
+
+   /* clip clip clip */
+   if (w <= 0) return;
+   if (src_x + w > src->cache_entry.w) w = src->cache_entry.w - src_x;
+   if (w <= 0) return;
+   if (src_x < 0)
+     {
+       dst_x -= src_x;
+       w += src_x;
+       src_x = 0;
+     }
+   if (w <= 0) return;
+
+   if (h <= 0) return;
+   if (src_y + h > src->cache_entry.h) h = src->cache_entry.h - src_y;
+   if (h <= 0) return;
+   if (src_y < 0)
+     {
+       dst_y -= src_y;
+       h += src_y;
+       src_y = 0;
+     }
+   if (h <= 0) return;
+
+   if (w <= 0) return;
+   if (dst_x + w > dst->cache_entry.w) w = dst->cache_entry.w - dst_x;
+   if (w <= 0) return;
+   if (dst_x < 0)
+     {
+       src_x -= dst_x;
+       w += dst_x;
+       dst_x = 0;
+     }
+   if (w <= 0) return;
+
+   if (h <= 0) return;
+   if (dst_y + h > dst->cache_entry.h) h = dst->cache_entry.h - dst_y;
+   if (h <= 0) return;
+   if (dst_y < 0)
+     {
+       src_y -= dst_y;
+       h += dst_y;
+       dst_y = 0;
+     }
+   if (h <= 0) return;
+
+   if (dst == src)
+     {
+       /* src after dst - go forward */
+       if (((src_y * src->cache_entry.w) + src_x) > ((dst_y * dst->cache_entry.w) + dst_x))
+         {
+            func = evas_common_draw_func_copy_get(w, 0);
+            for (y = 0; y < h; y++)
+              {
+                 src_ptr = src->image.data + ((y + src_y) * src->cache_entry.w) + src_x;
+                 dst_ptr = dst->image.data + ((y + dst_y) * dst->cache_entry.w) + dst_x;
+                 func(src_ptr, dst_ptr, w);
+              }
+         }
+       /* reverse */
+       else
+         {
+            func = evas_common_draw_func_copy_get(w, 1);
+            for (y = h - 1; y >= 0; y--)
+              {
+                 src_ptr = src->image.data + ((y + src_y) * src->cache_entry.w) + src_x;
+                 dst_ptr = dst->image.data + ((y + dst_y) * dst->cache_entry.w) + dst_x;
+                 func(src_ptr, dst_ptr, w);
+              }
+         }
+     }
+   else
+     {
+       func = evas_common_draw_func_copy_get(w, 0);
+       for (y = 0; y < h; y++)
+         {
+            src_ptr = src->image.data + ((y + src_y) * src->cache_entry.w) + src_x;
+            dst_ptr = dst->image.data + ((y + dst_y) * dst->cache_entry.w) + dst_x;
+            func(src_ptr, dst_ptr, w);
+         }
+     }
+}
+
+
+/****************************************************************************/
+
+static void
+evas_common_copy_rev_pixels_c(DATA32 *src, DATA32 *dst, int len)
+{
+   DATA32 *dst_end = dst + len;
+
+   src += len - 1;
+   while (dst < dst_end)
+       *dst++ = *src--;
+}
+
+#ifdef BUILD_C
+static void
+evas_common_copy_pixels_c(DATA32 *src, DATA32 *dst, int len)
+{
+   DATA32 *dst_end = dst + len;
+
+   while (dst < dst_end)
+       *dst++ = *src++;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+evas_common_copy_pixels_mmx(DATA32 *src, DATA32 *dst, int len)
+{
+   DATA32 *dst_end, *dst_end_pre;
+#ifdef ALIGN_FIX
+   intptr_t src_align;
+   intptr_t dst_align;
+
+   src_align = (intptr_t)src & 0x3f; /* 64 byte alignment */
+   dst_align = (intptr_t)dst & 0x3f; /* 64 byte alignment */
+
+   if ((src_align != dst_align) ||
+       ((src_align & 0x3) != 0))
+     {
+#ifdef BUILD_C
+       evas_common_copy_pixels_c(src, dst, len);
+       return;
+     }
+#endif
+
+   while ((src_align > 0) && (len > 0))
+     {
+       *dst++ = *src++;
+       len--;
+       src_align -= sizeof(DATA32);
+     }
+#endif /* ALIGN_FIX */
+
+   dst_end = dst + len;
+   dst_end_pre = dst + ((len / 16) * 16);
+
+   while (dst < dst_end_pre)
+     {
+       MOVE_16DWORDS_MMX(src, dst);
+       src += 16;
+       dst += 16;
+     }
+   while (dst < dst_end)
+       *dst++ = *src++;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+evas_common_copy_pixels_mmx2(DATA32 *src, DATA32 *dst, int len)
+{
+   DATA32 *dst_end, *dst_end_pre;
+#ifdef ALIGN_FIX
+   intptr_t src_align;
+   intptr_t dst_align;
+
+   src_align = (intptr_t)src & 0x3f; /* 64 byte alignment */
+   dst_align = (intptr_t)dst & 0x3f; /* 64 byte alignment */
+
+   if ((src_align != dst_align) ||
+       ((src_align & 0x3) != 0))
+     {
+#ifdef BUILD_C
+       evas_common_copy_pixels_c(src, dst, len);
+#endif
+       return;
+     }
+
+   while ((src_align > 0) && (len > 0))
+     {
+       *dst++ = *src++;
+       len--;
+       src_align -= sizeof(DATA32);
+     }
+#endif
+
+   dst_end = dst + len;
+   dst_end_pre = dst + ((len / 16) * 16);
+
+   while (dst < dst_end_pre)
+     {
+       MOVE_16DWORDS_MMX(src, dst);
+       src += 16;
+       dst += 16;
+     }
+   while (dst < dst_end)
+       *dst++ = *src++;
+}
+#endif
+
+#ifdef BUILD_SSE
+static void
+evas_common_copy_pixels_sse(DATA32 *src, DATA32 *dst, int len)
+{
+   DATA32 *src_ptr, *dst_ptr, *dst_end_ptr;
+
+   dst_end_ptr = dst + len;
+   dst_end_ptr -= 15;
+   src_ptr = src;
+   dst_ptr = dst;
+   while (dst_ptr < dst_end_ptr)
+     {
+       MOVE_16DWORDS_MMX2(src_ptr, dst_ptr);
+       src_ptr+=16;
+       dst_ptr+=16;
+     }
+   dst_end_ptr = dst + len;
+   while (dst_ptr < dst_end_ptr)
+     {
+       *dst_ptr = *src_ptr;
+       src_ptr++;
+       dst_ptr++;
+     }
+#if 0
+#ifdef ALIGN_FIX
+   int src_align;
+   int dst_align;
+
+   src_align = (int)src & 0x3f; /* 64 byte alignment */
+   dst_align = (int)dst & 0x3f; /* 64 byte alignment */
+
+   if ((src_align != dst_align) ||
+       ((src_align & 0x3) != 0))
+     {
+#ifdef BUILD_C
+       evas_common_copy_pixels_c(src, dst, len);
+#endif
+       return;
+     }
+
+   while ((src_align > 0) && (len > 0))
+     {
+       *dst = *src;
+       dst++;
+       src++;
+       len--;
+       src_align -= sizeof(DATA32);
+     }
+#endif /* ALIGN_FIX */
+
+   src_ptr = src;
+   dst_ptr = dst;
+   dst_end_ptr = dst + len;
+   dst_end_ptr_pre = dst + ((len / 16) * 16);
+
+   while (dst_ptr < dst_end_ptr_pre)
+     {
+       prefetch(&src_ptr[16]);
+       MOVE_16DWORDS_MMX(src_ptr, dst_ptr);
+       src_ptr+=16;
+       dst_ptr+=16;
+     }
+   while (dst_ptr < dst_end_ptr)
+     {
+       *dst_ptr = *src_ptr;
+       src_ptr++;
+       dst_ptr++;
+     }
+#endif
+}
+#endif
+
+/****************************************************************************/
+
+#ifdef BUILD_C
+static void
+evas_common_copy_pixels_rev_c(DATA32 *src, DATA32 *dst, int len)
+{
+   DATA32 *dst_end;
+
+   src = src + len - 1;
+   dst_end = dst - 1;
+   dst = dst + len - 1;
+
+   while (dst > dst_end)
+       *dst-- = *src--;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+evas_common_copy_pixels_rev_mmx(DATA32 *src, DATA32 *dst, int len)
+{
+   DATA32 *dst_end, *dst_end_pre;
+
+   if (len >= 16)
+     {
+       src = src + len - 16;
+       dst_end = dst;
+       dst_end_pre = dst + len - ((len / 16) * 16);
+       dst = dst + len - 16;
+
+       while (dst >= dst_end_pre)
+         {
+            MOVE_16DWORDS_MMX(src, dst);
+            src -= 16;
+            dst -= 16;
+         }
+       src += 15;
+       dst += 15;
+       while (dst >= dst_end)
+            *dst-- = *src--;
+     }
+   else
+     {
+       src = src + len - 1;
+       dst_end = dst - 1;
+       dst = dst + len - 1;
+       while (dst > dst_end)
+            *dst-- = *src--;
+     }
+}
+#endif
+
+#ifdef BUILD_SSE
+static void
+evas_common_copy_pixels_rev_sse(DATA32 *src, DATA32 *dst, int len)
+{
+   DATA32 *src_ptr, *dst_ptr, *dst_end_ptr, *dst_end_ptr_pre;
+
+   src_ptr = src + len - 16;
+   dst_ptr = dst + len - 16;
+   dst_end_ptr = dst;
+   dst_end_ptr_pre = dst + len - ((len / 16) * 16);
+
+   if (len >= 16)
+     {
+       while (dst_ptr >= dst_end_ptr_pre)
+         {
+            prefetch(&src_ptr[-16]);
+            MOVE_10DWORDS_MMX(src_ptr, dst_ptr);
+            src_ptr -= 16;
+            dst_ptr -= 16;
+         }
+       src_ptr += 15;
+       dst_ptr += 15;
+       while (dst_ptr >= dst_end_ptr)
+         {
+            *dst_ptr = *src_ptr;
+            src_ptr--;
+            dst_ptr--;
+         }
+     }
+   else
+     {
+       src_ptr = src + len - 1;
+       dst_ptr = dst + len - 1;
+       while (dst_ptr >= dst_end_ptr)
+         {
+            *dst_ptr = *src_ptr;
+            src_ptr--;
+            dst_ptr--;
+         }
+     }
+}
+#endif
+
+
+Gfx_Func_Copy
+evas_common_draw_func_copy_get(int pixels, int reverse)
+{
+   if (reverse == -1)
+       return evas_common_copy_rev_pixels_c;
+   if (reverse)
+     {
+#ifdef  BUILD_SSE
+       if (evas_common_cpu_has_feature(CPU_FEATURE_SSE) && (pixels > 256 * 256))
+         return evas_common_copy_pixels_rev_sse;
+#endif
+#ifdef BUILD_MMX
+# ifdef BUILD_SSE
+       else
+# endif
+         if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+           return evas_common_copy_pixels_rev_mmx;
+#endif
+#ifdef BUILD_C
+# ifdef BUILD_MMX
+       else
+# endif
+         return evas_common_copy_pixels_rev_c;
+#endif
+     }
+   else
+     {
+#if 1
+
+# ifdef BUILD_MMX
+# ifdef BUILD_C
+            if (evas_common_cpu_has_feature(CPU_FEATURE_MMX2))
+# endif
+              return evas_common_copy_pixels_mmx2;
+# ifdef BUILD_SSE
+            else
+# endif
+#endif
+#ifdef BUILD_SSE
+# ifdef BUILD_C
+              if (evas_common_cpu_has_feature(CPU_FEATURE_SSE) && (pixels > 64 * 64))
+# endif
+                return evas_common_copy_pixels_sse;
+# ifdef BUILD_MMX
+            else
+# endif
+#endif
+#ifdef BUILD_MMX
+# ifdef BUILD_C
+              if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+# endif
+                return evas_common_copy_pixels_mmx;
+# ifdef BUILD_C
+            else
+# endif
+#endif
+#ifdef BUILD_C
+              return evas_common_copy_pixels_c;
+#endif
+
+#else
+
+# ifdef BUILD_SSE
+            if (evas_common_cpu_has_feature(CPU_FEATURE_SSE) && (pixels > 256 * 256))
+              return evas_common_copy_pixels_sse;
+# ifdef BUILD_MMX
+            else
+# endif
+#endif
+#ifdef BUILD_MMX
+# ifdef BUILD_C
+              if (evas_common_cpu_has_feature(CPU_FEATURE_MMX2))
+# endif
+                return evas_common_copy_pixels_mmx2;
+# ifdef BUILD_C
+              else if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+# endif
+                return evas_common_copy_pixels_mmx;
+# ifdef BUILD_C
+            else
+# endif
+#endif
+#ifdef BUILD_C
+              return evas_common_copy_pixels_c;
+#endif
+
+#endif
+     }
+#ifdef BUILD_C
+   return evas_common_copy_pixels_c;
+#else
+   return NULL;
+#endif
+   pixels = 0;
+}
diff --git a/src/lib/engines/common/evas_convert_color.c b/src/lib/engines/common/evas_convert_color.c
new file mode 100644 (file)
index 0000000..3d75685
--- /dev/null
@@ -0,0 +1,244 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_color.h"
+
+
+EAPI void
+evas_common_convert_argb_premul(DATA32 *data, unsigned int len)
+{
+   DATA32  *de = data + len;
+
+   while (data < de)
+     {
+       DATA32  a = 1 + (*data >> 24);
+
+       *data = (*data & 0xff000000) +
+         (((((*data) >> 8) & 0xff) * a) & 0xff00) +
+         (((((*data) & 0x00ff00ff) * a) >> 8) & 0x00ff00ff);
+       data++;
+     }
+}
+
+EAPI void
+evas_common_convert_argb_unpremul(DATA32 *data, unsigned int len)
+{
+   DATA32  *de = data + len;
+
+   while (data < de)
+     {
+       DATA32  a = (*data >> 24);
+
+       if ((a > 0) && (a < 255))
+          *data = ARGB_JOIN(a,
+                            (R_VAL(data) * 255) / a,
+                            (G_VAL(data) * 255) / a,
+                            (B_VAL(data) * 255) / a);
+       data++;
+     }
+
+}
+
+EAPI void
+evas_common_convert_color_argb_premul(int a, int *r, int *g, int *b)
+{
+   a++;
+   if (r) { *r = (a * *r) >> 8; }
+   if (g) { *g = (a * *g) >> 8; }
+   if (b) { *b = (a * *b) >> 8; }
+}
+
+EAPI void
+evas_common_convert_color_argb_unpremul(int a, int *r, int *g, int *b)
+{
+   if (!a) return;
+   if (r) { *r = (255 * *r) / a; }
+   if (g) { *g = (255 * *g) / a; }
+   if (b) { *b = (255 * *b) / a; }
+}
+
+EAPI void
+evas_common_convert_color_hsv_to_rgb(float h, float s, float v, int *r, int *g, int *b)
+{
+   int i;
+   float f;
+
+   v *= 255;
+   if (s == 0)
+     {
+       if (r) *r = v;
+       if (g) *g = v;
+       if (b) *b = v;
+       return;
+     }
+
+   h /= 60;
+   i = h;
+   f = h - i;
+
+   s *= v;
+   f *= s;
+   s = v - s;
+
+   switch (i)
+     {
+       case 1:
+         if (r) *r = v - f;  if (g) *g = v;  if (b) *b = s;
+         return;
+       case 2:
+         if (r) *r = s;  if (g) *g = v;  if (b) *b = s + f;
+         return;
+       case 3:
+         if (r) *r = s;  if (g) *g = v - f;  if (b) *b = v;
+         return;
+       case 4:
+         if (r) *r = s + f;  if (g) *g = s;  if (b) *b = v;
+         return;
+       case 5:
+         if (r) *r = v;  if (g) *g = s;  if (b) *b = v - f;
+         return;
+       default:
+         if (r) *r = v;  if (g) *g = s + f;  if (b) *b = s;
+         break;
+     }
+}
+
+EAPI void
+evas_common_convert_color_rgb_to_hsv(int r, int g, int b, float *h, float *s, float *v)
+{
+   int max, min, d = r - g;
+
+   //set min to MIN(g,r)
+   d = (d & (~(d >> 8)));
+   min = r - d;
+   //set max to MAX(g,r)
+   max = g + d;
+
+   //set min to MIN(b,min)
+   d = min - b;
+   min -= (d & (~(d >> 8)));
+
+   //set max to MAX(max,b)
+   d = b - max;
+   max += (d & (~(d >> 8)));
+
+   d = max - min;
+
+   if (v) *v = (max / 255.0);
+   if (!max)
+     {
+       if (s) *s = 0;
+        if (h) *h = 0;
+       return;
+     }
+
+   if (s) *s = (d / (float)max);
+   if (r == max)
+     {
+       if (h)
+         {
+           *h = 60 * ((g - b) / (float)d);
+           if (*h < 0) *h += 360;
+         }
+       return;
+     }
+   if (g == max)
+     {
+       if (h)
+         {
+           *h = 120 + (60 * ((b - r) / (float)d));
+           if (*h < 0) *h += 360;
+         }
+       return;
+     }
+   if (h)
+     {
+       *h = 240 + (60 * ((r - g) / (float)d));
+       if (*h < 0) *h += 360;
+     }
+}
+
+EAPI void
+evas_common_convert_color_hsv_to_rgb_int(int h, int s, int v, int *r, int *g, int *b)
+{
+   int   i, f;
+
+   if (!s)
+     {
+       *r = *g = *b = v;
+       return;
+     }
+
+   i = h / 255;
+   f = h - (i * 255);
+   s = (v * s) / 255;
+   f = (s * f) / 255;
+   s = v - s;
+
+   switch (i)
+     {
+       case 1:
+         *r = v - f; *g = v; *b = s;
+         return;
+       case 2:
+         *r = s; *g = v; *b = s + f;
+         return;
+       case 3:
+         *r = s; *g = v - f; *b = v;
+         return;
+       case 4:
+         *r = s + f; *g = s; *b = v;
+         return;
+       case 5:
+         *r = v; *g = s; *b = v - f;
+         return;
+       default:
+         *r = v; *g = s + f; *b = s;
+         break;
+     }
+}
+
+EAPI void
+evas_common_convert_color_rgb_to_hsv_int(int r, int g, int b, int *h, int *s, int *v)
+{
+   int  min, max, d = r - g;
+
+   d = (d & (~(d >> 8)));
+   min = r - d;
+   max = g + d;
+
+   d = min - b;
+   min -= (d & (~(d >> 8)));
+
+   d = b - max;
+   max += (d & (~(d >> 8)));
+
+   d = max - min;
+
+   *v = max;
+   if (!max)
+     {
+       *s = *h = 0;
+       return;
+     }
+
+   *s = ((d * 255) / max);
+
+   if (r == max)
+     {
+       *h = (((g - b) * 255) / d);
+       if (*h < 0) *h += 1530;
+       return;
+     }
+   if (g == max)
+     {
+       *h = 510 + (((b - r) * 255) / d);
+       if (*h < 0) *h += 1530;
+       return;
+     }
+   *h = 1020 + (((r - g) * 255) / d);
+   if (*h < 0) *h += 1530;
+
+}
diff --git a/src/lib/engines/common/evas_convert_color.h b/src/lib/engines/common/evas_convert_color.h
new file mode 100644 (file)
index 0000000..81cb8c0
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_COLOR_H
+#define _EVAS_CONVERT_COLOR_H
+
+
+EAPI void evas_common_convert_argb_premul                          (DATA32 *src, unsigned int len);
+EAPI void evas_common_convert_argb_unpremul                        (DATA32 *src, unsigned int len);
+EAPI void evas_common_convert_color_argb_premul                    (int a, int *r, int *g, int *b);
+EAPI void evas_common_convert_color_argb_unpremul                  (int a, int *r, int *g, int *b);
+
+EAPI void evas_common_convert_color_hsv_to_rgb                     (float h, float s, float v, int *r, int *g, int *b);
+EAPI void evas_common_convert_color_rgb_to_hsv                     (int r, int g, int b, float *h, float *s, float *v);
+EAPI void evas_common_convert_color_hsv_to_rgb_int                 (int h, int s, int v, int *r, int *g, int *b);
+EAPI void evas_common_convert_color_rgb_to_hsv_int                 (int r, int g, int b, int *h, int *s, int *v);
+
+
+#endif /* _EVAS_CONVERT_COLOR_H */
diff --git a/src/lib/engines/common/evas_convert_colorspace.c b/src/lib/engines/common/evas_convert_colorspace.c
new file mode 100644 (file)
index 0000000..5cfa501
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_colorspace.h"
+
+#define CONVERT_RGB_565_TO_RGB_888(s) \
+       (((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) | \
+        ((((s) << 5) & 0xfc00) | (((s) >> 1) & 0x300)) | \
+        ((((s) << 8) & 0xf80000) | (((s) << 3) & 0x70000)))
+
+#define CONVERT_A5P_TO_A8(s) \
+       ((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7))
+
+static inline void *
+evas_common_convert_argb8888_to_rgb565_a5p(void *data, int w, int h, int stride, Evas_Bool has_alpha)
+{
+   return NULL;
+}
+
+static inline void *
+evas_common_convert_rgb565_a5p_to_argb8888(void *data, int w, int h, int stride, Evas_Bool has_alpha)
+{
+   DATA16 *src, *end;
+   DATA32 *ret, *dst;
+
+   src = data;
+   end = src + (stride * h);
+   ret = malloc(w * h * sizeof(DATA32));
+
+   dst = ret;
+   if (has_alpha)
+     {
+       DATA8 *alpha;
+
+       alpha = end;
+       for (; src < end; src++, alpha++, dst++)
+         *dst = (CONVERT_A5P_TO_A8(*alpha) << 24) |
+                 CONVERT_RGB_565_TO_RGB_888(*src);
+     }
+   else
+     {
+       for (; src < end; src++, dst++)
+         *dst = CONVERT_RGB_565_TO_RGB_888(*src);
+     }
+   return ret;
+}
+
+EAPI void *
+evas_common_convert_argb8888_to(void *data, int w, int h, int stride, Evas_Bool has_alpha, Evas_Colorspace cspace)
+{
+   switch (cspace)
+     {
+       case EVAS_COLORSPACE_RGB565_A5P:
+         return evas_common_convert_argb8888_to_rgb565_a5p(data, w, h, stride, has_alpha);
+       default:
+         break;
+     }
+   return NULL;
+}
+
+EAPI void *
+evas_common_convert_rgb565_a5p_to(void *data, int w, int h, int stride, Evas_Bool has_alpha, Evas_Colorspace cspace)
+{
+   switch (cspace)
+     {
+       case EVAS_COLORSPACE_ARGB8888:
+         return evas_common_convert_rgb565_a5p_to_argb8888(data, w, h, stride, has_alpha);
+       default:
+         break;
+     }
+   return NULL;
+}
diff --git a/src/lib/engines/common/evas_convert_colorspace.h b/src/lib/engines/common/evas_convert_colorspace.h
new file mode 100644 (file)
index 0000000..9630110
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_COLORSPACE_H
+#define _EVAS_CONVERT_COLORSPACE_H
+
+
+EAPI void *evas_common_convert_argb8888_to                         (void *data, int w, int h, int stride, Evas_Bool has_alpha, Evas_Colorspace cspace);
+EAPI void *evas_common_convert_rgb565_a5p_to                       (void *data, int w, int h, int stride, Evas_Bool has_alpha, Evas_Colorspace cspace);
+
+
+#endif /* _EVAS_CONVERT_COLORSPACE_H */
diff --git a/src/lib/engines/common/evas_convert_gry_1.c b/src/lib/engines/common/evas_convert_gry_1.c
new file mode 100644 (file)
index 0000000..3f9b5f2
--- /dev/null
@@ -0,0 +1,10 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_gry_1.h"
+
+#ifdef BUILD_CONVERT_1_GRY_1
+void evas_common_convert_rgba_to_1bpp_gry_1_dith       (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
+#endif
diff --git a/src/lib/engines/common/evas_convert_gry_1.h b/src/lib/engines/common/evas_convert_gry_1.h
new file mode 100644 (file)
index 0000000..81c99f6
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_GRY_1_H
+#define _EVAS_CONVERT_GRY_1_H
+
+
+void evas_common_convert_rgba_to_1bpp_gry_1_dith               (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+
+
+#endif /* _EVAS_CONVERT_GRY_1_H */
diff --git a/src/lib/engines/common/evas_convert_gry_4.c b/src/lib/engines/common/evas_convert_gry_4.c
new file mode 100644 (file)
index 0000000..a633f28
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_gry_4.h"
+
+#ifdef BUILD_CONVERT_4_GRY_4
+void evas_common_convert_rgba_to_4bpp_gry_4_dith       (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
+#endif
+
+#ifdef BUILD_CONVERT_4_GRY_1
+void evas_common_convert_rgba_to_4bpp_gry_1_dith       (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
+#endif
diff --git a/src/lib/engines/common/evas_convert_gry_4.h b/src/lib/engines/common/evas_convert_gry_4.h
new file mode 100644 (file)
index 0000000..fc7b0a7
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_GRY_4_H
+#define _EVAS_CONVERT_GRY_4_H
+
+
+void evas_common_convert_rgba_to_4bpp_gry_4_dith               (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_4bpp_gry_1_dith               (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+
+#endif /* _EVAS_CONVERT_GRY_4_H */
diff --git a/src/lib/engines/common/evas_convert_gry_8.c b/src/lib/engines/common/evas_convert_gry_8.c
new file mode 100644 (file)
index 0000000..a547114
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_gry_8.h"
+
+#ifdef BUILD_CONVERT_8_GRY_1
+void evas_common_convert_rgba_to_8bpp_gry_256_dith     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
+#endif
+
+#ifdef BUILD_CONVERT_8_GRY_4
+void evas_common_convert_rgba_to_8bpp_gry_64_dith      (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
+#endif
+
+#ifdef BUILD_CONVERT_8_GRY_16
+void evas_common_convert_rgba_to_8bpp_gry_16_dith      (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
+#endif
+
+#ifdef BUILD_CONVERT_8_GRY_64
+void evas_common_convert_rgba_to_8bpp_gry_4_dith       (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
+#endif
+
+#ifdef BUILD_CONVERT_8_GRY_256
+void evas_common_convert_rgba_to_8bpp_gry_1_dith       (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal){}
+#endif
diff --git a/src/lib/engines/common/evas_convert_gry_8.h b/src/lib/engines/common/evas_convert_gry_8.h
new file mode 100644 (file)
index 0000000..9e393cb
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_GRY_8_H
+#define _EVAS_CONVERT_GRY_8_H
+
+
+void evas_common_convert_rgba_to_8bpp_gry_256_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_8bpp_gry_64_dith              (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_8bpp_gry_16_dith              (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_8bpp_gry_4_dith               (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_8bpp_gry_1_dith               (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+
+#endif /* _EVAS_CONVERT_GRY_8_H */
diff --git a/src/lib/engines/common/evas_convert_main.c b/src/lib/engines/common/evas_convert_main.c
new file mode 100644 (file)
index 0000000..2a98b4c
--- /dev/null
@@ -0,0 +1,604 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_rgb_8.h"
+#include "evas_convert_rgb_16.h"
+#include "evas_convert_rgb_24.h"
+#include "evas_convert_rgb_32.h"
+#include "evas_convert_yuv.h"
+
+#ifdef USE_DITHER_44
+const DATA8 _evas_dither_44[4][4] =
+{
+     { 0,  8,  2, 10},
+     {12,  4, 14,  6},
+     { 3, 11,  1,  9},
+     {15,  7, 13,  5}
+};
+#endif
+
+#ifdef USE_DITHER_128128
+const DATA8 _evas_dither_128128[128][128] =
+{
+     { 0, 41, 23, 5, 17, 39, 7, 15, 62, 23, 40, 51, 31, 47, 9, 32, 52, 27, 57, 25, 6, 61, 27, 52, 37, 7, 40, 63, 18, 36, 10, 42, 25, 62, 45, 34, 20, 42, 37, 14, 35, 29, 50, 10, 61, 2, 40, 8, 37, 12, 58, 22, 5, 41, 10, 39, 0, 60, 11, 46, 2, 55, 38, 17, 36, 59, 13, 54, 37, 56, 8, 29, 16, 13, 63, 22, 41, 55, 7, 20, 49, 14, 23, 55, 37, 23, 19, 36, 15, 49, 23, 63, 30, 14, 38, 27, 53, 13, 22, 41, 19, 31, 7, 19, 50, 30, 49, 16, 3, 32, 56, 40, 29, 34, 8, 48, 19, 45, 4, 51, 12, 46, 35, 49, 16, 42, 12, 62 },
+     { 30, 57, 36, 54, 47, 34, 52, 27, 43, 4, 28, 7, 17, 36, 62, 13, 44, 7, 18, 48, 33, 21, 44, 14, 30, 47, 12, 33, 5, 55, 31, 58, 13, 30, 4, 17, 52, 10, 60, 26, 46, 0, 39, 27, 42, 22, 47, 25, 60, 32, 9, 38, 48, 17, 59, 30, 49, 18, 34, 25, 51, 19, 5, 48, 21, 8, 28, 46, 1, 32, 41, 19, 54, 47, 37, 18, 28, 11, 44, 30, 39, 56, 2, 33, 8, 42, 61, 28, 58, 8, 46, 9, 41, 4, 58, 7, 21, 48, 59, 10, 52, 14, 42, 57, 12, 25, 7, 53, 42, 24, 11, 50, 17, 59, 42, 2, 36, 60, 32, 17, 63, 29, 21, 7, 59, 32, 24, 39 },
+     { 22, 8, 16, 32, 3, 25, 13, 57, 18, 45, 58, 39, 55, 20, 5, 42, 23, 34, 63, 1, 51, 10, 58, 4, 60, 23, 53, 27, 44, 21, 3, 48, 8, 50, 43, 54, 27, 32, 5, 55, 21, 58, 12, 53, 6, 36, 14, 50, 17, 29, 53, 15, 24, 52, 7, 36, 13, 42, 4, 53, 9, 35, 61, 26, 56, 32, 49, 15, 62, 23, 6, 60, 2, 31, 4, 48, 58, 38, 15, 61, 5, 25, 47, 28, 50, 15, 7, 40, 3, 32, 33, 52, 25, 50, 35, 42, 61, 3, 28, 36, 23, 63, 4, 33, 46, 62, 36, 23, 60, 6, 54, 28, 4, 37, 23, 55, 25, 8, 42, 54, 14, 6, 56, 38, 19, 52, 4, 46 },
+     { 48, 53, 43, 12, 45, 63, 30, 37, 9, 34, 21, 1, 25, 47, 29, 58, 3, 54, 15, 39, 29, 17, 38, 35, 20, 43, 1, 49, 15, 59, 29, 39, 22, 35, 16, 23, 1, 47, 39, 18, 8, 44, 25, 31, 57, 19, 63, 4, 45, 3, 42, 61, 1, 31, 45, 20, 57, 29, 62, 21, 32, 41, 14, 44, 3, 39, 5, 34, 10, 43, 51, 35, 23, 52, 40, 10, 21, 1, 53, 18, 51, 43, 12, 62, 18, 54, 26, 51, 20, 57, 14, 1, 62, 16, 11, 18, 32, 39, 17, 44, 1, 48, 26, 37, 18, 2, 51, 14, 28, 45, 35, 18, 57, 13, 47, 11, 51, 20, 2, 39, 31, 47, 25, 1, 50, 11, 60, 7 },
+     { 18, 28, 1, 56, 21, 10, 51, 2, 46, 54, 14, 61, 11, 50, 13, 38, 19, 31, 45, 9, 55, 24, 47, 5, 54, 9, 62, 11, 35, 8, 51, 14, 57, 6, 63, 40, 58, 14, 51, 28, 62, 34, 15, 48, 1, 41, 30, 35, 55, 21, 34, 11, 49, 37, 8, 52, 4, 23, 15, 43, 1, 58, 11, 23, 53, 16, 55, 26, 58, 18, 27, 12, 45, 14, 25, 63, 42, 33, 27, 35, 9, 31, 21, 38, 1, 44, 34, 12, 48, 38, 21, 44, 29, 47, 26, 53, 1, 46, 54, 8, 59, 29, 11, 55, 22, 41, 33, 20, 39, 1, 48, 9, 44, 32, 5, 62, 29, 44, 57, 23, 10, 58, 34, 43, 15, 37, 26, 33 },
+     { 51, 38, 59, 24, 35, 42, 19, 60, 5, 32, 41, 26, 43, 33, 7, 53, 48, 11, 59, 23, 42, 2, 61, 30, 16, 40, 32, 24, 56, 41, 19, 33, 37, 26, 47, 9, 31, 22, 2, 45, 9, 54, 4, 37, 21, 52, 11, 23, 7, 57, 16, 25, 55, 18, 63, 27, 46, 39, 56, 10, 50, 37, 29, 47, 19, 63, 24, 9, 46, 2, 39, 60, 9, 57, 30, 7, 49, 11, 59, 3, 45, 57, 5, 60, 29, 22, 5, 60, 30, 9, 59, 18, 40, 6, 57, 36, 30, 12, 24, 34, 15, 40, 52, 6, 49, 9, 58, 4, 63, 12, 26, 61, 22, 53, 38, 16, 35, 14, 28, 50, 42, 17, 5, 28, 62, 20, 54, 12 },
+     { 26, 6, 31, 15, 49, 6, 38, 27, 22, 49, 16, 56, 2, 62, 30, 21, 0, 36, 28, 6, 49, 32, 13, 52, 26, 50, 19, 46, 3, 26, 62, 0, 53, 12, 29, 3, 53, 41, 60, 24, 38, 13, 58, 16, 43, 9, 59, 39, 46, 28, 44, 40, 2, 33, 13, 41, 16, 6, 47, 31, 26, 17, 57, 6, 38, 0, 42, 36, 29, 52, 20, 31, 48, 0, 34, 56, 20, 36, 23, 54, 14, 41, 24, 37, 10, 55, 46, 25, 16, 45, 36, 4, 55, 23, 15, 8, 50, 62, 5, 56, 44, 20, 13, 28, 59, 31, 24, 47, 31, 52, 37, 17, 40, 0, 26, 49, 3, 60, 7, 33, 0, 61, 53, 40, 8, 45, 2, 41 },
+     { 16, 63, 43, 4, 61, 24, 56, 13, 53, 8, 36, 12, 24, 41, 16, 46, 60, 26, 52, 39, 14, 57, 21, 37, 0, 45, 7, 59, 38, 17, 43, 10, 45, 20, 61, 43, 19, 11, 33, 17, 50, 32, 23, 61, 28, 49, 26, 0, 18, 51, 5, 60, 22, 58, 29, 0, 59, 34, 19, 62, 3, 52, 7, 44, 30, 59, 13, 50, 15, 62, 7, 17, 38, 22, 44, 15, 40, 4, 47, 28, 33, 17, 49, 16, 51, 40, 10, 56, 0, 53, 13, 49, 28, 38, 60, 21, 43, 19, 37, 27, 3, 51, 34, 39, 0, 45, 15, 43, 10, 21, 3, 55, 8, 33, 59, 10, 41, 18, 52, 24, 46, 20, 30, 13, 58, 22, 36, 57 },
+     { 50, 34, 11, 47, 29, 17, 44, 0, 33, 63, 28, 46, 52, 5, 57, 10, 42, 18, 4, 63, 20, 8, 44, 10, 56, 34, 14, 29, 5, 54, 23, 59, 32, 49, 7, 34, 49, 27, 56, 0, 42, 7, 46, 3, 40, 6, 54, 32, 62, 13, 36, 10, 47, 8, 35, 49, 24, 51, 12, 40, 22, 35, 60, 12, 22, 51, 33, 4, 40, 25, 43, 55, 5, 54, 12, 61, 26, 51, 8, 62, 0, 53, 7, 63, 2, 32, 19, 34, 42, 24, 31, 63, 2, 10, 45, 33, 0, 48, 9, 61, 22, 47, 8, 62, 18, 56, 7, 54, 27, 57, 46, 30, 50, 19, 45, 30, 56, 36, 22, 47, 11, 38, 3, 51, 32, 48, 18, 9 },
+     { 0, 21, 40, 19, 52, 9, 37, 48, 20, 40, 3, 18, 27, 38, 35, 22, 31, 56, 13, 35, 46, 28, 60, 40, 27, 18, 61, 50, 41, 30, 7, 36, 2, 25, 16, 57, 5, 15, 47, 29, 55, 19, 30, 52, 15, 34, 20, 12, 43, 30, 20, 54, 25, 44, 53, 12, 38, 5, 55, 27, 48, 15, 33, 27, 45, 8, 19, 28, 56, 11, 33, 49, 18, 36, 29, 2, 45, 16, 39, 19, 31, 43, 27, 35, 20, 52, 26, 6, 61, 11, 41, 17, 29, 51, 20, 56, 25, 32, 41, 17, 53, 31, 25, 14, 42, 23, 35, 16, 38, 6, 34, 12, 15, 62, 6, 21, 13, 1, 63, 9, 55, 27, 43, 25, 14, 4, 31, 55 },
+     { 44, 29, 61, 2, 35, 58, 26, 15, 60, 10, 51, 59, 14, 55, 8, 50, 2, 44, 25, 51, 1, 33, 16, 4, 48, 36, 2, 21, 12, 57, 48, 13, 51, 55, 40, 28, 37, 62, 8, 39, 12, 63, 36, 10, 59, 24, 56, 47, 9, 50, 41, 1, 32, 17, 6, 21, 61, 30, 9, 43, 1, 54, 41, 2, 54, 37, 48, 61, 1, 46, 21, 3, 58, 24, 50, 32, 60, 10, 57, 25, 46, 12, 59, 4, 45, 13, 57, 47, 27, 39, 5, 58, 47, 14, 35, 4, 52, 13, 60, 6, 36, 10, 45, 55, 4, 50, 29, 2, 61, 50, 25, 58, 44, 24, 36, 42, 54, 28, 40, 32, 16, 56, 6, 62, 46, 39, 60, 23 },
+     { 7, 48, 14, 54, 23, 40, 4, 45, 30, 22, 42, 32, 1, 44, 20, 29, 58, 8, 37, 19, 41, 54, 24, 58, 9, 53, 25, 46, 34, 16, 23, 38, 27, 11, 18, 1, 52, 21, 35, 22, 48, 5, 25, 45, 18, 38, 2, 27, 35, 4, 57, 15, 62, 39, 57, 28, 42, 16, 36, 60, 24, 18, 10, 63, 20, 5, 16, 23, 37, 14, 59, 27, 41, 8, 13, 42, 21, 35, 6, 50, 3, 38, 15, 48, 30, 39, 17, 3, 49, 14, 53, 33, 24, 7, 61, 44, 11, 39, 23, 49, 19, 58, 1, 32, 36, 12, 60, 41, 20, 13, 41, 4, 39, 1, 48, 8, 18, 51, 14, 44, 5, 37, 21, 34, 1, 26, 10, 37 },
+     { 53, 36, 27, 9, 50, 12, 32, 55, 2, 57, 7, 17, 48, 34, 63, 15, 40, 26, 62, 11, 49, 6, 31, 39, 22, 42, 6, 63, 1, 39, 60, 4, 42, 61, 32, 45, 24, 44, 2, 60, 16, 41, 53, 1, 33, 61, 49, 17, 63, 23, 45, 26, 33, 3, 23, 46, 2, 50, 20, 4, 45, 34, 49, 30, 39, 58, 44, 31, 53, 34, 6, 52, 30, 47, 63, 1, 53, 22, 42, 31, 58, 23, 54, 22, 61, 8, 36, 59, 22, 35, 21, 1, 55, 40, 27, 16, 30, 54, 2, 29, 43, 16, 39, 63, 21, 46, 26, 10, 48, 32, 19, 53, 30, 56, 26, 60, 33, 4, 61, 23, 49, 59, 15, 53, 19, 58, 42, 16 },
+     { 20, 5, 59, 46, 25, 62, 7, 19, 43, 25, 37, 61, 11, 24, 4, 54, 12, 52, 3, 32, 17, 61, 12, 47, 15, 55, 18, 31, 53, 28, 9, 50, 21, 6, 55, 9, 58, 14, 54, 26, 33, 7, 31, 58, 13, 21, 8, 42, 29, 6, 37, 11, 48, 52, 14, 60, 11, 39, 56, 32, 14, 58, 7, 26, 17, 4, 42, 8, 11, 47, 19, 38, 10, 17, 26, 37, 9, 55, 28, 13, 18, 40, 6, 33, 1, 43, 25, 11, 51, 7, 62, 43, 18, 37, 3, 57, 45, 9, 38, 58, 5, 52, 27, 7, 17, 53, 5, 57, 37, 2, 63, 9, 22, 15, 11, 38, 25, 45, 35, 0, 28, 10, 41, 30, 50, 8, 31, 57 },
+     { 49, 33, 16, 38, 1, 42, 51, 34, 53, 14, 28, 49, 30, 56, 36, 23, 43, 20, 38, 56, 22, 45, 28, 0, 62, 35, 26, 44, 11, 19, 52, 35, 44, 15, 30, 38, 10, 31, 40, 4, 46, 50, 20, 40, 27, 44, 51, 14, 56, 53, 19, 59, 7, 29, 41, 19, 35, 25, 8, 52, 22, 44, 13, 53, 50, 32, 61, 24, 56, 25, 63, 0, 45, 57, 33, 59, 16, 46, 4, 62, 50, 11, 60, 37, 52, 19, 55, 29, 37, 46, 13, 26, 48, 10, 50, 34, 21, 63, 26, 13, 42, 33, 22, 55, 35, 28, 43, 15, 24, 51, 27, 34, 46, 49, 58, 3, 52, 9, 57, 19, 48, 55, 3, 35, 12, 45, 24, 3 },
+     { 41, 11, 56, 28, 18, 31, 22, 10, 37, 6, 47, 13, 3, 41, 9, 46, 0, 48, 29, 6, 34, 10, 55, 37, 20, 8, 49, 3, 41, 59, 14, 25, 0, 63, 19, 47, 27, 51, 17, 57, 23, 10, 61, 6, 54, 3, 38, 31, 0, 22, 34, 43, 20, 55, 31, 0, 49, 63, 29, 38, 3, 62, 28, 40, 0, 22, 14, 35, 2, 48, 15, 43, 23, 14, 3, 29, 49, 20, 39, 34, 0, 44, 29, 9, 15, 47, 5, 42, 0, 31, 58, 5, 31, 61, 23, 15, 0, 47, 19, 50, 24, 3, 59, 11, 44, 0, 31, 59, 6, 42, 17, 60, 0, 39, 20, 31, 43, 17, 29, 40, 12, 25, 60, 22, 52, 15, 63, 29 },
+     { 20, 52, 8, 44, 62, 4, 59, 49, 17, 63, 21, 39, 60, 18, 52, 27, 33, 59, 14, 51, 59, 43, 24, 5, 51, 30, 57, 17, 32, 5, 37, 56, 48, 34, 42, 3, 60, 5, 36, 13, 43, 37, 18, 34, 25, 12, 59, 24, 47, 36, 11, 50, 3, 38, 9, 58, 16, 5, 43, 18, 47, 10, 37, 18, 59, 46, 29, 52, 40, 12, 34, 28, 56, 36, 53, 7, 43, 8, 24, 52, 26, 17, 56, 43, 24, 32, 63, 20, 57, 16, 22, 52, 36, 8, 41, 56, 29, 32, 54, 7, 35, 57, 14, 48, 20, 62, 13, 39, 53, 29, 8, 45, 13, 29, 7, 61, 14, 54, 6, 63, 38, 32, 18, 43, 2, 39, 6, 47 },
+     { 0, 58, 23, 35, 13, 46, 12, 39, 0, 31, 55, 24, 5, 35, 15, 61, 17, 5, 39, 25, 18, 2, 50, 33, 41, 13, 39, 23, 62, 46, 29, 12, 22, 8, 56, 25, 20, 49, 32, 62, 0, 56, 11, 46, 63, 42, 9, 16, 55, 5, 60, 15, 62, 26, 45, 21, 36, 51, 13, 57, 31, 24, 55, 6, 35, 9, 57, 5, 20, 60, 7, 51, 5, 19, 40, 25, 61, 32, 56, 12, 36, 48, 21, 2, 58, 12, 39, 28, 9, 50, 40, 12, 44, 18, 25, 49, 6, 38, 11, 62, 18, 46, 30, 9, 40, 25, 49, 19, 10, 36, 55, 22, 33, 52, 41, 18, 37, 27, 49, 21, 2, 46, 7, 53, 33, 61, 27, 35 },
+     { 41, 31, 5, 39, 51, 26, 33, 57, 27, 41, 9, 44, 54, 29, 48, 7, 44, 36, 57, 10, 31, 63, 16, 45, 11, 60, 1, 47, 7, 20, 43, 3, 58, 36, 13, 52, 39, 7, 15, 28, 22, 48, 30, 21, 1, 29, 49, 44, 27, 17, 40, 30, 24, 42, 12, 53, 33, 7, 47, 20, 1, 42, 11, 49, 25, 43, 17, 32, 45, 27, 41, 21, 31, 62, 11, 49, 2, 15, 42, 5, 63, 7, 41, 27, 49, 6, 54, 23, 46, 34, 2, 28, 54, 3, 59, 12, 46, 17, 42, 28, 40, 1, 37, 51, 5, 55, 2, 34, 47, 16, 3, 62, 47, 5, 23, 56, 1, 44, 12, 34, 51, 16, 57, 11, 25, 17, 54, 13 },
+     { 60, 26, 55, 18, 3, 60, 20, 6, 52, 15, 50, 19, 32, 11, 23, 53, 26, 21, 1, 47, 42, 27, 8, 58, 21, 27, 53, 36, 26, 54, 31, 50, 17, 30, 45, 1, 29, 59, 44, 53, 41, 4, 35, 58, 51, 19, 32, 4, 52, 34, 48, 8, 51, 5, 56, 2, 25, 61, 27, 38, 54, 27, 62, 21, 51, 1, 39, 62, 10, 50, 1, 58, 13, 47, 38, 18, 35, 54, 22, 51, 30, 19, 59, 34, 14, 32, 44, 4, 60, 15, 52, 62, 20, 43, 30, 35, 21, 60, 4, 52, 12, 24, 61, 18, 30, 42, 23, 61, 25, 50, 27, 38, 11, 59, 12, 35, 50, 30, 59, 24, 8, 42, 28, 37, 48, 9, 44, 21 },
+     { 10, 47, 15, 50, 30, 43, 8, 45, 29, 2, 36, 59, 1, 58, 41, 3, 63, 31, 54, 20, 13, 55, 35, 38, 4, 44, 15, 9, 61, 2, 14, 38, 61, 10, 23, 54, 18, 12, 24, 2, 14, 55, 16, 8, 38, 14, 41, 60, 10, 23, 1, 58, 32, 17, 28, 37, 41, 15, 3, 60, 15, 33, 4, 36, 16, 59, 28, 14, 23, 55, 37, 18, 44, 28, 2, 57, 30, 10, 27, 46, 14, 38, 3, 53, 21, 61, 17, 35, 10, 41, 26, 7, 33, 9, 57, 1, 53, 37, 26, 20, 56, 48, 9, 33, 58, 16, 37, 7, 45, 1, 57, 15, 32, 26, 42, 23, 7, 20, 4, 54, 31, 62, 22, 1, 59, 30, 4, 51 },
+     { 36, 2, 38, 11, 24, 36, 54, 22, 62, 47, 25, 8, 28, 45, 16, 38, 12, 43, 9, 37, 49, 3, 23, 52, 18, 30, 50, 33, 19, 42, 49, 26, 6, 40, 47, 35, 63, 38, 50, 33, 60, 26, 36, 47, 24, 57, 6, 26, 39, 63, 19, 44, 14, 46, 61, 9, 50, 30, 45, 23, 10, 50, 44, 8, 31, 54, 6, 46, 36, 4, 30, 54, 8, 52, 22, 41, 4, 60, 40, 0, 58, 24, 45, 10, 37, 1, 48, 30, 56, 17, 38, 48, 24, 47, 19, 39, 14, 8, 45, 32, 2, 34, 27, 44, 4, 52, 11, 56, 31, 21, 40, 19, 44, 51, 2, 63, 46, 58, 36, 43, 14, 5, 50, 38, 14, 56, 40, 23 },
+     { 61, 46, 32, 63, 54, 1, 14, 34, 12, 40, 18, 49, 37, 10, 61, 30, 51, 24, 60, 7, 29, 40, 62, 11, 46, 58, 6, 56, 24, 10, 34, 52, 21, 59, 16, 3, 27, 5, 20, 46, 9, 40, 7, 62, 2, 30, 53, 15, 48, 10, 28, 35, 54, 6, 21, 34, 18, 55, 7, 40, 57, 19, 26, 60, 41, 13, 24, 51, 19, 61, 9, 25, 34, 15, 63, 11, 45, 17, 20, 47, 33, 8, 31, 62, 43, 26, 53, 7, 24, 59, 0, 13, 55, 4, 62, 27, 51, 31, 63, 15, 58, 7, 54, 14, 46, 22, 28, 43, 12, 63, 8, 54, 5, 17, 39, 33, 15, 10, 27, 17, 47, 34, 19, 45, 27, 12, 33, 17 },
+     { 5, 28, 21, 7, 17, 48, 42, 58, 23, 4, 63, 14, 55, 21, 34, 5, 19, 0, 45, 17, 52, 15, 25, 32, 0, 22, 40, 13, 45, 62, 18, 0, 43, 11, 33, 55, 30, 42, 57, 19, 51, 31, 22, 43, 18, 45, 34, 0, 43, 31, 56, 3, 23, 40, 59, 0, 44, 13, 48, 35, 2, 32, 46, 0, 21, 48, 35, 3, 40, 32, 43, 59, 0, 48, 33, 26, 53, 36, 55, 12, 51, 16, 55, 5, 18, 29, 11, 39, 51, 19, 45, 31, 42, 21, 35, 6, 22, 47, 10, 38, 23, 50, 20, 36, 0, 60, 38, 4, 50, 35, 48, 34, 24, 57, 9, 53, 28, 48, 61, 0, 56, 24, 53, 3, 63, 6, 42, 57 },
+     { 13, 53, 45, 40, 58, 27, 6, 16, 38, 51, 33, 30, 43, 2, 47, 56, 40, 50, 33, 57, 27, 5, 47, 42, 60, 36, 16, 54, 28, 4, 37, 57, 28, 51, 22, 8, 45, 14, 6, 39, 0, 54, 11, 59, 28, 12, 50, 21, 61, 13, 19, 38, 49, 11, 25, 37, 58, 29, 22, 63, 14, 56, 12, 53, 30, 63, 9, 57, 26, 12, 47, 16, 23, 39, 50, 6, 31, 2, 25, 6, 28, 41, 36, 22, 50, 57, 42, 3, 34, 8, 28, 61, 11, 50, 16, 54, 41, 0, 55, 43, 5, 29, 41, 63, 25, 16, 53, 18, 26, 10, 21, 0, 61, 30, 41, 22, 3, 38, 20, 39, 29, 8, 41, 16, 36, 52, 22, 19 },
+     { 55, 34, 0, 25, 10, 32, 56, 44, 28, 0, 57, 7, 26, 53, 23, 8, 13, 35, 22, 12, 36, 60, 20, 8, 14, 29, 48, 2, 41, 49, 23, 13, 39, 7, 48, 58, 25, 53, 34, 62, 28, 16, 48, 4, 37, 56, 27, 5, 36, 52, 46, 7, 62, 33, 52, 11, 17, 53, 5, 28, 41, 24, 38, 17, 5, 39, 20, 45, 15, 56, 5, 38, 60, 8, 14, 57, 21, 48, 62, 39, 59, 13, 1, 60, 9, 32, 16, 63, 44, 25, 52, 15, 36, 2, 60, 29, 12, 33, 25, 17, 59, 45, 13, 8, 49, 32, 6, 40, 59, 29, 45, 37, 13, 47, 6, 55, 30, 45, 9, 52, 13, 59, 25, 47, 32, 1, 49, 30 },
+     { 9, 39, 14, 61, 49, 37, 3, 20, 50, 13, 41, 19, 46, 17, 38, 59, 28, 62, 4, 44, 54, 1, 34, 51, 55, 7, 63, 32, 21, 8, 56, 31, 62, 19, 36, 1, 41, 17, 24, 12, 42, 35, 25, 52, 20, 8, 44, 59, 25, 2, 22, 42, 16, 29, 4, 46, 20, 36, 43, 9, 51, 8, 49, 26, 58, 33, 54, 1, 37, 29, 52, 20, 27, 45, 19, 35, 42, 16, 10, 32, 20, 49, 46, 27, 40, 4, 47, 22, 13, 55, 4, 47, 26, 44, 23, 40, 58, 19, 48, 13, 31, 2, 57, 34, 42, 19, 61, 32, 14, 55, 5, 51, 26, 19, 58, 16, 49, 14, 62, 5, 33, 44, 21, 7, 60, 26, 11, 41 },
+     { 62, 24, 47, 29, 8, 19, 53, 11, 60, 24, 32, 61, 4, 55, 31, 2, 49, 16, 39, 9, 31, 24, 43, 17, 26, 38, 11, 25, 58, 43, 12, 35, 3, 46, 15, 32, 63, 4, 49, 56, 2, 60, 10, 32, 63, 17, 39, 12, 55, 30, 57, 9, 48, 55, 39, 24, 60, 2, 58, 31, 19, 61, 34, 3, 42, 11, 22, 46, 7, 61, 10, 42, 3, 55, 32, 1, 58, 28, 44, 54, 4, 34, 23, 15, 56, 20, 37, 58, 6, 30, 38, 18, 63, 9, 32, 5, 51, 3, 62, 37, 52, 18, 39, 23, 3, 51, 9, 47, 1, 23, 43, 15, 60, 35, 11, 40, 1, 36, 31, 26, 57, 2, 37, 54, 18, 44, 58, 16 },
+     { 5, 51, 3, 33, 43, 62, 21, 42, 35, 9, 48, 15, 36, 10, 22, 42, 20, 46, 26, 56, 50, 12, 59, 3, 48, 19, 45, 53, 1, 27, 47, 17, 52, 24, 56, 11, 51, 21, 37, 30, 20, 46, 14, 41, 1, 47, 33, 7, 41, 17, 35, 27, 20, 1, 14, 54, 26, 33, 18, 47, 1, 44, 14, 59, 16, 52, 28, 18, 49, 31, 25, 34, 63, 13, 51, 24, 9, 50, 3, 23, 38, 63, 7, 52, 29, 46, 11, 33, 50, 22, 57, 36, 1, 57, 49, 17, 39, 28, 9, 35, 6, 27, 53, 15, 55, 30, 24, 58, 36, 41, 11, 52, 32, 3, 44, 25, 62, 23, 51, 15, 42, 22, 50, 10, 39, 4, 31, 35 },
+     { 46, 22, 57, 17, 12, 39, 26, 5, 31, 59, 1, 45, 27, 62, 52, 7, 58, 33, 6, 18, 39, 22, 33, 41, 57, 5, 35, 18, 40, 16, 60, 5, 29, 42, 7, 39, 27, 44, 9, 47, 8, 26, 54, 22, 51, 29, 24, 49, 15, 61, 4, 51, 31, 63, 43, 6, 50, 8, 39, 12, 53, 37, 23, 30, 40, 6, 62, 43, 14, 53, 2, 49, 7, 36, 17, 41, 61, 37, 18, 56, 11, 18, 44, 35, 2, 19, 61, 0, 41, 14, 8, 30, 43, 12, 24, 46, 14, 54, 42, 21, 44, 61, 10, 46, 37, 11, 44, 7, 18, 63, 20, 29, 7, 49, 28, 54, 8, 43, 4, 48, 18, 63, 12, 29, 48, 24, 59, 20 },
+     { 13, 36, 28, 54, 35, 2, 56, 46, 16, 49, 22, 40, 11, 34, 14, 43, 29, 12, 63, 48, 2, 61, 7, 15, 28, 30, 50, 9, 61, 33, 38, 23, 54, 13, 61, 33, 3, 59, 16, 35, 58, 40, 5, 38, 13, 57, 3, 58, 37, 21, 45, 12, 39, 7, 35, 30, 13, 56, 22, 62, 27, 6, 55, 10, 48, 21, 33, 2, 38, 23, 40, 20, 44, 29, 59, 4, 26, 12, 33, 47, 28, 53, 31, 13, 59, 41, 27, 49, 26, 54, 45, 16, 53, 21, 35, 7, 59, 26, 11, 56, 1, 24, 33, 4, 28, 62, 21, 49, 31, 2, 56, 39, 24, 58, 13, 17, 37, 21, 56, 10, 38, 0, 34, 55, 15, 43, 1, 52 },
+     { 42, 9, 50, 6, 25, 60, 14, 38, 10, 29, 53, 18, 57, 3, 25, 51, 0, 53, 25, 17, 29, 37, 52, 46, 0, 62, 14, 37, 4, 50, 10, 44, 0, 46, 20, 25, 50, 19, 55, 0, 23, 31, 62, 34, 11, 45, 19, 32, 0, 53, 10, 59, 23, 47, 18, 60, 42, 28, 37, 3, 50, 15, 35, 44, 0, 51, 27, 60, 9, 57, 16, 58, 11, 22, 46, 15, 53, 48, 7, 42, 0, 60, 5, 49, 24, 54, 9, 17, 39, 5, 34, 62, 3, 40, 60, 31, 0, 47, 29, 16, 49, 39, 59, 17, 50, 0, 40, 13, 53, 38, 16, 46, 0, 42, 34, 60, 2, 53, 29, 31, 58, 46, 27, 6, 61, 8, 37, 28 },
+     { 0, 63, 21, 40, 45, 18, 51, 23, 63, 34, 6, 43, 28, 38, 55, 19, 40, 35, 8, 41, 54, 10, 21, 32, 39, 23, 53, 26, 55, 28, 22, 63, 30, 34, 9, 48, 6, 38, 29, 43, 49, 6, 18, 52, 27, 61, 9, 43, 28, 42, 33, 26, 56, 3, 51, 23, 0, 48, 16, 45, 32, 25, 63, 20, 57, 17, 42, 12, 35, 47, 5, 31, 39, 56, 6, 30, 34, 21, 61, 25, 14, 40, 22, 38, 15, 6, 36, 56, 20, 60, 25, 12, 51, 27, 10, 56, 42, 20, 36, 63, 32, 6, 21, 41, 12, 34, 60, 26, 5, 48, 27, 10, 62, 19, 6, 47, 39, 14, 45, 7, 24, 17, 41, 32, 23, 51, 19, 56 },
+     { 45, 31, 15, 59, 4, 33, 7, 47, 0, 41, 13, 61, 4, 47, 9, 23, 60, 14, 57, 31, 4, 45, 59, 6, 58, 10, 44, 20, 8, 42, 15, 6, 55, 17, 58, 31, 53, 12, 61, 10, 15, 57, 43, 2, 23, 35, 48, 14, 54, 6, 18, 49, 15, 38, 11, 34, 62, 9, 21, 58, 11, 41, 4, 31, 38, 8, 29, 55, 19, 36, 27, 52, 0, 25, 50, 43, 1, 39, 8, 55, 35, 51, 10, 30, 45, 62, 29, 2, 46, 10, 32, 48, 18, 38, 5, 22, 33, 8, 51, 3, 14, 44, 54, 25, 57, 30, 18, 52, 33, 22, 59, 28, 36, 52, 32, 21, 26, 50, 5, 55, 35, 60, 14, 54, 4, 40, 16, 33 },
+     { 27, 3, 49, 10, 30, 40, 55, 27, 57, 24, 52, 21, 32, 17, 60, 30, 5, 44, 27, 49, 19, 34, 13, 24, 43, 36, 3, 49, 31, 59, 37, 48, 26, 41, 2, 41, 14, 36, 21, 32, 40, 26, 13, 49, 55, 5, 16, 40, 25, 60, 36, 1, 63, 29, 17, 44, 25, 40, 52, 5, 29, 47, 54, 13, 46, 24, 60, 4, 51, 22, 63, 14, 45, 18, 12, 62, 17, 57, 19, 42, 3, 26, 58, 48, 1, 21, 40, 52, 23, 37, 44, 1, 29, 58, 43, 50, 15, 61, 19, 45, 58, 28, 7, 48, 2, 46, 8, 42, 3, 55, 8, 50, 12, 4, 55, 10, 63, 33, 20, 40, 11, 3, 46, 20, 48, 26, 61, 11 },
+     { 44, 56, 24, 36, 53, 19, 12, 37, 16, 44, 7, 36, 49, 54, 11, 37, 48, 21, 15, 1, 62, 25, 47, 56, 16, 18, 51, 12, 40, 1, 24, 11, 52, 16, 23, 59, 28, 1, 45, 53, 4, 60, 37, 21, 39, 30, 63, 20, 52, 10, 30, 45, 8, 41, 54, 4, 57, 7, 34, 55, 36, 18, 23, 59, 2, 48, 11, 32, 44, 1, 41, 8, 33, 54, 38, 23, 30, 46, 6, 29, 62, 18, 32, 16, 55, 34, 14, 11, 61, 7, 55, 16, 53, 13, 23, 2, 55, 37, 26, 10, 33, 23, 36, 16, 38, 22, 56, 15, 24, 43, 35, 17, 44, 40, 25, 46, 16, 1, 57, 25, 49, 36, 28, 62, 9, 35, 7, 53 },
+     { 17, 38, 8, 61, 1, 50, 26, 62, 3, 31, 56, 15, 1, 26, 40, 2, 34, 51, 56, 36, 42, 9, 38, 2, 29, 60, 32, 57, 19, 62, 34, 47, 4, 57, 39, 7, 44, 63, 24, 18, 46, 28, 8, 54, 1, 34, 7, 46, 3, 37, 50, 23, 57, 21, 13, 46, 31, 20, 43, 15, 1, 61, 8, 33, 37, 17, 56, 26, 15, 49, 24, 59, 28, 3, 56, 9, 52, 32, 13, 49, 10, 43, 5, 45, 8, 25, 59, 42, 28, 33, 19, 40, 8, 63, 35, 47, 25, 4, 40, 52, 1, 60, 12, 53, 63, 9, 29, 60, 37, 19, 1, 62, 31, 20, 58, 12, 41, 30, 43, 9, 18, 52, 22, 1, 39, 30, 58, 21 },
+     { 13, 47, 29, 18, 43, 34, 5, 48, 20, 42, 10, 45, 30, 58, 20, 63, 24, 11, 6, 28, 54, 14, 22, 52, 41, 7, 26, 5, 45, 15, 53, 13, 35, 27, 18, 50, 12, 33, 5, 56, 10, 17, 45, 24, 59, 15, 50, 26, 56, 13, 19, 5, 32, 52, 27, 36, 2, 61, 12, 26, 49, 40, 27, 52, 13, 50, 6, 39, 61, 34, 10, 37, 48, 20, 41, 27, 2, 36, 59, 24, 54, 33, 63, 20, 38, 50, 3, 17, 52, 4, 58, 27, 45, 21, 32, 11, 48, 17, 57, 20, 46, 38, 25, 43, 4, 34, 51, 6, 13, 45, 57, 26, 6, 48, 2, 35, 53, 23, 61, 34, 59, 6, 42, 56, 13, 51, 2, 41 },
+     { 32, 5, 55, 23, 58, 14, 22, 52, 29, 15, 61, 25, 51, 8, 43, 13, 53, 41, 46, 20, 3, 33, 63, 11, 48, 21, 54, 38, 28, 3, 30, 43, 21, 62, 9, 31, 55, 22, 51, 29, 37, 62, 32, 12, 42, 29, 41, 9, 33, 44, 62, 28, 43, 1, 59, 19, 48, 30, 51, 39, 24, 4, 58, 19, 42, 29, 22, 43, 3, 18, 53, 5, 13, 50, 16, 60, 45, 21, 7, 40, 15, 0, 26, 53, 13, 31, 43, 24, 47, 31, 15, 49, 2, 41, 6, 59, 29, 42, 9, 30, 14, 7, 49, 18, 31, 47, 20, 39, 49, 32, 11, 41, 54, 15, 61, 18, 7, 38, 4, 13, 44, 28, 15, 32, 45, 19, 27, 49 },
+     { 63, 34, 11, 39, 2, 45, 37, 8, 59, 39, 33, 4, 36, 17, 48, 5, 29, 18, 32, 61, 39, 50, 5, 27, 35, 0, 46, 12, 22, 49, 60, 6, 54, 0, 38, 49, 2, 42, 15, 40, 0, 47, 20, 51, 3, 57, 18, 61, 22, 0, 39, 16, 55, 12, 35, 8, 41, 22, 6, 59, 16, 45, 10, 36, 0, 62, 9, 54, 30, 58, 21, 43, 63, 31, 7, 35, 12, 48, 58, 28, 47, 37, 41, 9, 57, 20, 61, 0, 36, 11, 57, 35, 23, 52, 37, 18, 0, 62, 22, 55, 35, 62, 27, 54, 0, 15, 61, 28, 2, 59, 22, 9, 37, 27, 33, 51, 29, 48, 19, 50, 25, 37, 10, 57, 5, 37, 60, 8 },
+     { 20, 25, 46, 52, 31, 60, 12, 55, 0, 19, 11, 46, 62, 35, 23, 38, 57, 0, 55, 10, 16, 30, 58, 44, 17, 59, 29, 63, 42, 8, 36, 20, 33, 46, 16, 61, 25, 35, 8, 54, 26, 7, 58, 22, 34, 6, 47, 14, 53, 31, 48, 9, 37, 25, 49, 63, 16, 55, 45, 14, 34, 63, 21, 53, 25, 33, 46, 16, 35, 7, 46, 29, 0, 39, 25, 55, 22, 34, 18, 4, 56, 11, 23, 51, 28, 6, 39, 14, 62, 44, 19, 8, 60, 12, 56, 28, 50, 34, 39, 5, 51, 3, 41, 12, 57, 35, 10, 53, 25, 17, 52, 30, 47, 0, 43, 14, 5, 57, 31, 55, 0, 63, 47, 23, 54, 24, 14, 43 },
+     { 0, 57, 16, 6, 26, 19, 35, 28, 49, 42, 54, 26, 21, 1, 59, 27, 9, 47, 26, 44, 50, 22, 13, 40, 8, 37, 10, 34, 17, 56, 25, 58, 13, 27, 44, 9, 20, 58, 31, 17, 60, 36, 10, 41, 53, 25, 36, 39, 4, 24, 58, 17, 60, 4, 22, 38, 10, 32, 0, 50, 31, 7, 28, 47, 12, 57, 5, 26, 52, 23, 14, 40, 57, 17, 47, 5, 53, 1, 44, 31, 19, 60, 46, 2, 35, 48, 30, 54, 22, 5, 51, 39, 25, 31, 4, 43, 14, 9, 45, 16, 24, 44, 19, 29, 40, 23, 44, 7, 38, 42, 4, 63, 12, 54, 23, 59, 22, 42, 8, 15, 40, 21, 8, 34, 3, 41, 30, 50 },
+     { 39, 10, 48, 33, 41, 54, 5, 47, 23, 13, 32, 7, 52, 44, 14, 39, 58, 18, 35, 6, 37, 2, 60, 24, 55, 19, 53, 2, 51, 32, 1, 41, 51, 4, 40, 29, 47, 3, 52, 44, 13, 49, 28, 16, 1, 62, 11, 27, 52, 35, 5, 42, 29, 47, 14, 56, 28, 53, 26, 38, 9, 56, 40, 3, 38, 15, 41, 60, 1, 37, 50, 25, 11, 28, 61, 19, 42, 62, 10, 52, 39, 6, 32, 14, 58, 17, 7, 26, 42, 34, 27, 10, 54, 40, 20, 63, 26, 53, 21, 61, 32, 7, 59, 48, 3, 56, 18, 31, 58, 14, 49, 21, 36, 16, 45, 9, 36, 24, 62, 45, 27, 31, 53, 17, 49, 12, 62, 18 },
+     { 28, 59, 21, 58, 2, 16, 38, 9, 62, 3, 56, 41, 10, 31, 50, 4, 32, 52, 12, 63, 23, 46, 33, 31, 4, 48, 25, 43, 14, 23, 47, 11, 22, 55, 14, 60, 23, 37, 11, 39, 23, 2, 45, 56, 31, 43, 19, 55, 16, 46, 21, 51, 11, 33, 44, 2, 41, 18, 5, 52, 23, 44, 17, 60, 27, 49, 11, 32, 44, 10, 54, 2, 56, 33, 8, 38, 13, 29, 36, 16, 24, 63, 27, 51, 21, 43, 56, 12, 49, 3, 59, 48, 1, 15, 46, 7, 36, 2, 47, 11, 50, 27, 37, 13, 33, 8, 51, 46, 1, 34, 28, 40, 3, 33, 60, 29, 47, 1, 35, 11, 59, 42, 2, 60, 26, 46, 6, 35 },
+     { 4, 43, 9, 29, 36, 63, 24, 44, 20, 50, 30, 17, 60, 22, 16, 43, 25, 3, 42, 19, 51, 15, 8, 54, 42, 15, 61, 5, 39, 57, 18, 61, 31, 48, 34, 2, 50, 19, 57, 5, 63, 33, 19, 38, 13, 27, 48, 7, 32, 61, 2, 26, 58, 6, 24, 50, 13, 61, 42, 20, 62, 2, 35, 20, 51, 4, 62, 18, 23, 58, 20, 31, 43, 15, 51, 45, 26, 50, 4, 55, 45, 3, 35, 9, 38, 1, 32, 61, 20, 45, 17, 33, 24, 57, 29, 51, 22, 58, 38, 30, 15, 1, 54, 21, 63, 43, 26, 12, 24, 56, 8, 60, 50, 19, 5, 52, 13, 54, 17, 50, 4, 16, 36, 12, 32, 56, 22, 54 },
+     { 51, 25, 40, 53, 12, 49, 15, 57, 34, 7, 38, 47, 2, 36, 55, 8, 61, 30, 56, 7, 28, 59, 48, 11, 27, 35, 21, 45, 28, 36, 9, 38, 6, 16, 24, 63, 10, 32, 28, 43, 21, 53, 5, 60, 8, 57, 3, 45, 11, 37, 15, 54, 40, 20, 62, 36, 27, 34, 11, 48, 30, 15, 54, 8, 30, 42, 22, 34, 48, 13, 35, 63, 4, 37, 22, 2, 59, 9, 41, 23, 13, 41, 49, 18, 59, 24, 40, 5, 37, 30, 9, 61, 44, 6, 37, 11, 33, 17, 5, 55, 41, 60, 23, 39, 17, 5, 30, 62, 41, 16, 46, 25, 11, 56, 39, 26, 20, 38, 29, 39, 22, 52, 44, 20, 48, 1, 38, 14 },
+     { 15, 33, 2, 18, 44, 6, 27, 0, 32, 61, 25, 12, 58, 28, 40, 20, 47, 13, 34, 43, 38, 1, 23, 62, 40, 0, 51, 10, 63, 3, 52, 26, 44, 30, 45, 6, 41, 54, 0, 51, 12, 30, 46, 24, 49, 22, 40, 33, 63, 23, 43, 30, 9, 47, 0, 17, 54, 7, 57, 3, 37, 47, 24, 46, 13, 55, 7, 52, 2, 42, 6, 26, 49, 18, 60, 34, 16, 57, 33, 20, 61, 30, 8, 54, 14, 46, 12, 53, 16, 55, 38, 13, 22, 53, 18, 59, 46, 27, 43, 19, 32, 10, 45, 6, 49, 36, 52, 2, 20, 55, 6, 39, 32, 15, 44, 3, 58, 10, 63, 6, 56, 30, 7, 58, 9, 40, 19, 63 },
+     { 10, 47, 61, 23, 55, 31, 52, 42, 17, 45, 4, 51, 27, 6, 15, 53, 0, 49, 26, 10, 56, 18, 36, 6, 20, 58, 32, 30, 13, 49, 19, 56, 0, 59, 12, 53, 27, 17, 38, 25, 48, 9, 15, 36, 14, 30, 59, 17, 0, 50, 8, 58, 18, 56, 31, 45, 21, 41, 29, 19, 60, 6, 32, 59, 0, 36, 29, 39, 19, 59, 46, 12, 55, 30, 10, 47, 24, 3, 28, 48, 0, 55, 44, 27, 33, 4, 63, 29, 49, 0, 26, 50, 34, 2, 42, 14, 0, 62, 9, 56, 3, 52, 28, 34, 58, 9, 20, 48, 37, 32, 22, 53, 0, 62, 27, 49, 34, 46, 21, 33, 41, 14, 25, 37, 53, 29, 31, 45 },
+     { 56, 28, 7, 37, 11, 36, 20, 9, 54, 14, 39, 19, 34, 63, 45, 37, 24, 17, 60, 31, 21, 45, 53, 29, 47, 15, 7, 55, 40, 23, 34, 14, 42, 20, 37, 35, 15, 59, 7, 62, 34, 40, 59, 1, 51, 42, 10, 28, 54, 21, 35, 5, 38, 13, 36, 4, 59, 12, 39, 53, 15, 43, 9, 21, 39, 62, 16, 56, 25, 9, 32, 38, 0, 41, 14, 51, 40, 53, 43, 11, 37, 17, 5, 22, 57, 39, 19, 7, 42, 21, 60, 10, 31, 63, 25, 52, 30, 49, 36, 25, 48, 17, 61, 14, 22, 42, 29, 13, 60, 11, 47, 18, 35, 41, 7, 23, 4, 16, 51, 11, 0, 48, 61, 3, 17, 50, 5, 24 },
+     { 0, 42, 21, 49, 60, 3, 57, 40, 29, 48, 23, 56, 42, 11, 22, 5, 59, 39, 4, 50, 3, 41, 12, 57, 25, 50, 44, 18, 4, 46, 7, 62, 33, 50, 4, 56, 21, 32, 43, 18, 3, 23, 55, 34, 20, 4, 53, 38, 12, 46, 29, 52, 25, 61, 23, 51, 26, 46, 1, 34, 25, 57, 28, 51, 26, 11, 50, 3, 44, 28, 53, 21, 57, 27, 62, 6, 31, 19, 8, 63, 26, 59, 36, 47, 15, 29, 50, 25, 35, 47, 18, 41, 4, 48, 8, 40, 12, 23, 6, 44, 13, 40, 1, 31, 55, 0, 61, 43, 4, 50, 26, 58, 9, 53, 24, 61, 42, 55, 31, 43, 57, 20, 34, 27, 43, 8, 59, 39 },
+     { 18, 51, 30, 13, 26, 16, 46, 22, 2, 59, 8, 30, 1, 48, 33, 51, 29, 9, 46, 16, 62, 14, 33, 2, 38, 9, 27, 60, 37, 26, 53, 17, 28, 10, 24, 46, 2, 49, 8, 57, 29, 45, 6, 26, 62, 44, 18, 25, 61, 3, 42, 14, 49, 10, 43, 6, 17, 32, 63, 10, 49, 4, 40, 14, 45, 33, 22, 37, 12, 61, 5, 17, 43, 7, 23, 37, 15, 58, 49, 13, 39, 21, 10, 52, 1, 62, 9, 56, 12, 2, 58, 28, 36, 16, 56, 28, 56, 35, 20, 63, 24, 37, 51, 8, 45, 25, 16, 33, 27, 38, 2, 44, 13, 30, 17, 36, 12, 26, 5, 18, 28, 47, 13, 60, 23, 45, 13, 33 },
+     { 55, 4, 62, 34, 52, 38, 7, 63, 32, 37, 13, 53, 25, 62, 18, 12, 55, 41, 27, 35, 24, 49, 31, 52, 17, 63, 34, 1, 56, 12, 41, 2, 48, 58, 39, 16, 61, 27, 41, 52, 13, 19, 50, 39, 11, 31, 57, 6, 32, 40, 20, 55, 1, 28, 33, 57, 48, 8, 37, 22, 44, 18, 53, 1, 61, 5, 54, 16, 47, 36, 50, 24, 55, 34, 48, 45, 1, 30, 33, 46, 2, 50, 32, 42, 25, 34, 43, 21, 38, 52, 23, 45, 14, 54, 21, 4, 44, 16, 53, 29, 10, 47, 19, 57, 12, 54, 39, 10, 51, 15, 63, 21, 57, 40, 51, 1, 48, 57, 37, 62, 2, 38, 9, 52, 1, 35, 58, 22 },
+     { 36, 46, 10, 42, 1, 27, 43, 15, 50, 21, 45, 16, 41, 3, 35, 44, 20, 1, 57, 11, 55, 7, 43, 8, 22, 42, 13, 46, 21, 39, 31, 60, 22, 5, 29, 44, 11, 35, 20, 4, 36, 58, 32, 15, 47, 2, 36, 48, 16, 60, 8, 35, 44, 63, 16, 2, 40, 26, 55, 14, 58, 35, 24, 31, 19, 42, 31, 58, 1, 29, 10, 40, 2, 19, 12, 54, 22, 61, 7, 24, 56, 5, 28, 16, 54, 3, 15, 58, 6, 30, 8, 62, 1, 43, 31, 47, 7, 59, 1, 38, 58, 4, 34, 27, 38, 5, 31, 59, 7, 46, 30, 3, 34, 6, 28, 59, 20, 8, 32, 15, 53, 24, 55, 31, 19, 49, 11, 26 },
+     { 2, 24, 16, 58, 19, 55, 5, 35, 10, 61, 4, 28, 57, 24, 58, 7, 31, 47, 22, 38, 19, 28, 61, 36, 54, 5, 59, 29, 6, 52, 15, 11, 43, 36, 8, 54, 52, 1, 62, 25, 47, 9, 1, 60, 28, 53, 24, 14, 46, 27, 51, 22, 12, 24, 38, 53, 20, 11, 51, 3, 29, 7, 48, 63, 8, 49, 9, 21, 52, 14, 63, 32, 46, 60, 35, 4, 41, 16, 52, 35, 18, 42, 59, 7, 36, 61, 45, 27, 33, 51, 19, 39, 34, 11, 61, 18, 33, 41, 28, 15, 54, 22, 42, 3, 49, 21, 47, 18, 36, 23, 55, 19, 48, 24, 45, 10, 33, 44, 50, 40, 7, 35, 15, 41, 63, 6, 40, 54 },
+     { 62, 41, 32, 8, 47, 28, 60, 24, 44, 30, 38, 49, 9, 33, 14, 40, 50, 14, 60, 2, 54, 40, 0, 20, 25, 39, 16, 49, 24, 35, 57, 47, 19, 61, 33, 18, 23, 37, 13, 55, 31, 43, 22, 41, 17, 8, 42, 58, 0, 37, 5, 56, 31, 54, 7, 30, 60, 33, 42, 17, 59, 39, 12, 27, 38, 17, 35, 41, 27, 45, 20, 7, 25, 15, 29, 58, 27, 47, 11, 40, 14, 54, 23, 46, 19, 31, 11, 40, 13, 49, 5, 58, 24, 51, 26, 6, 50, 20, 49, 9, 32, 46, 17, 60, 14, 63, 24, 1, 57, 41, 9, 43, 14, 62, 16, 52, 3, 27, 14, 22, 61, 45, 4, 28, 9, 47, 29, 17 },
+     { 5, 50, 12, 53, 38, 18, 11, 51, 0, 55, 17, 6, 47, 54, 19, 63, 5, 26, 34, 45, 13, 30, 47, 58, 10, 48, 32, 3, 62, 9, 26, 0, 25, 14, 50, 3, 47, 30, 42, 16, 6, 63, 12, 49, 33, 55, 21, 10, 34, 63, 18, 41, 3, 47, 19, 43, 0, 49, 8, 28, 46, 20, 52, 0, 56, 24, 60, 3, 59, 5, 39, 57, 48, 52, 9, 38, 3, 21, 26, 60, 0, 32, 12, 38, 4, 48, 53, 0, 60, 15, 29, 44, 18, 10, 38, 57, 13, 60, 2, 26, 62, 7, 50, 29, 35, 8, 40, 53, 28, 12, 60, 33, 38, 5, 37, 29, 60, 39, 56, 0, 30, 18, 50, 34, 59, 25, 14, 44 },
+     { 20, 31, 60, 22, 3, 49, 33, 25, 40, 13, 34, 59, 22, 36, 0, 28, 37, 56, 8, 18, 51, 16, 4, 45, 27, 12, 53, 42, 18, 44, 51, 31, 55, 40, 28, 58, 7, 60, 10, 51, 27, 37, 24, 56, 5, 26, 44, 29, 50, 23, 45, 11, 34, 15, 59, 27, 13, 23, 62, 37, 4, 57, 15, 32, 42, 6, 47, 11, 30, 43, 23, 13, 0, 36, 18, 44, 63, 51, 37, 29, 49, 20, 57, 27, 62, 9, 24, 35, 23, 53, 37, 3, 42, 55, 0, 36, 23, 39, 31, 43, 17, 37, 24, 11, 52, 43, 19, 32, 5, 50, 26, 0, 56, 21, 54, 11, 19, 6, 47, 25, 59, 42, 12, 54, 21, 3, 38, 57 },
+     { 48, 0, 35, 27, 44, 14, 59, 7, 57, 46, 26, 2, 42, 12, 52, 43, 10, 27, 53, 42, 32, 62, 37, 21, 34, 61, 7, 23, 36, 4, 38, 12, 41, 5, 17, 45, 22, 27, 39, 21, 59, 0, 45, 18, 39, 62, 3, 38, 14, 7, 54, 26, 61, 39, 9, 52, 45, 36, 18, 50, 10, 34, 44, 22, 50, 14, 36, 55, 17, 34, 53, 62, 33, 26, 56, 6, 31, 12, 6, 53, 9, 44, 2, 50, 20, 40, 55, 17, 47, 7, 26, 63, 22, 32, 48, 16, 46, 8, 52, 12, 57, 41, 0, 56, 25, 3, 61, 14, 45, 35, 18, 44, 12, 46, 23, 42, 32, 51, 35, 10, 17, 36, 23, 1, 45, 52, 32, 10 },
+     { 37, 15, 43, 8, 63, 39, 21, 31, 16, 37, 19, 62, 30, 46, 17, 60, 21, 48, 1, 23, 6, 25, 11, 56, 1, 40, 30, 58, 15, 54, 21, 59, 9, 63, 35, 56, 11, 51, 2, 46, 34, 14, 53, 7, 30, 11, 51, 19, 60, 40, 30, 1, 24, 50, 20, 32, 3, 56, 5, 25, 31, 13, 61, 2, 29, 60, 25, 20, 51, 2, 27, 8, 18, 42, 10, 45, 21, 34, 43, 17, 62, 29, 41, 14, 34, 6, 30, 43, 2, 57, 33, 13, 45, 12, 27, 62, 4, 55, 21, 35, 5, 27, 45, 33, 16, 47, 30, 54, 22, 10, 51, 27, 63, 7, 49, 1, 58, 22, 15, 43, 53, 7, 57, 39, 27, 12, 61, 24 },
+     { 56, 51, 26, 56, 19, 2, 41, 54, 5, 52, 9, 48, 6, 23, 39, 4, 32, 15, 63, 35, 59, 49, 43, 15, 52, 19, 50, 9, 46, 33, 1, 29, 48, 20, 32, 1, 38, 33, 19, 54, 9, 32, 24, 48, 58, 35, 16, 48, 4, 52, 13, 57, 33, 5, 45, 59, 15, 29, 41, 55, 47, 39, 23, 53, 9, 40, 4, 57, 10, 44, 48, 40, 50, 14, 61, 24, 55, 1, 59, 22, 33, 8, 51, 25, 58, 46, 11, 59, 20, 41, 17, 51, 6, 56, 35, 25, 42, 30, 15, 58, 48, 18, 61, 9, 58, 39, 13, 2, 37, 59, 40, 2, 31, 16, 34, 41, 8, 30, 62, 3, 29, 48, 33, 5, 63, 16, 41, 7 },
+     { 22, 4, 46, 11, 33, 51, 29, 10, 62, 24, 43, 27, 15, 58, 50, 25, 54, 44, 9, 38, 18, 3, 29, 57, 32, 5, 26, 43, 17, 61, 24, 52, 8, 42, 23, 53, 15, 61, 7, 28, 57, 43, 4, 40, 20, 2, 43, 25, 32, 35, 21, 43, 17, 48, 10, 22, 38, 54, 11, 21, 1, 58, 16, 30, 48, 18, 46, 32, 38, 13, 22, 4, 59, 35, 2, 51, 30, 39, 15, 47, 4, 56, 13, 37, 1, 28, 16, 52, 32, 9, 61, 29, 38, 19, 3, 52, 10, 48, 1, 32, 11, 40, 20, 36, 6, 22, 49, 29, 55, 6, 20, 56, 36, 52, 19, 60, 26, 46, 18, 54, 40, 13, 20, 46, 35, 19, 49, 29 },
+     { 61, 17, 34, 53, 23, 6, 48, 35, 20, 40, 1, 56, 36, 29, 11, 34, 7, 41, 14, 30, 55, 20, 46, 8, 24, 38, 63, 2, 37, 10, 45, 14, 34, 49, 6, 13, 44, 25, 49, 41, 21, 12, 61, 15, 54, 29, 63, 12, 56, 8, 49, 2, 62, 36, 28, 61, 0, 25, 41, 63, 35, 8, 44, 6, 37, 62, 7, 21, 63, 28, 55, 31, 16, 24, 41, 19, 9, 57, 27, 36, 18, 42, 31, 62, 22, 55, 38, 4, 27, 47, 1, 40, 14, 54, 43, 20, 60, 23, 38, 63, 25, 51, 2, 53, 26, 63, 10, 42, 17, 34, 47, 25, 13, 5, 44, 11, 55, 2, 38, 27, 6, 60, 52, 25, 9, 55, 1, 40 },
+     { 8, 30, 58, 3, 42, 61, 17, 38, 13, 59, 32, 10, 54, 3, 51, 20, 61, 26, 57, 2, 46, 33, 12, 60, 41, 13, 48, 29, 55, 20, 39, 27, 57, 18, 62, 29, 55, 2, 31, 16, 37, 50, 26, 36, 6, 46, 9, 41, 27, 57, 23, 39, 26, 6, 51, 12, 31, 46, 7, 16, 27, 52, 19, 56, 26, 12, 33, 53, 1, 41, 8, 57, 46, 7, 54, 32, 47, 5, 49, 11, 60, 23, 5, 48, 10, 43, 19, 63, 35, 24, 49, 21, 59, 5, 31, 37, 14, 44, 7, 42, 6, 30, 46, 13, 44, 32, 19, 50, 4, 58, 8, 30, 62, 38, 28, 53, 21, 36, 13, 50, 21, 33, 15, 2, 44, 31, 14, 47 },
+     { 37, 13, 39, 16, 28, 9, 57, 0, 25, 49, 21, 45, 18, 47, 12, 42, 0, 49, 22, 39, 16, 53, 25, 36, 0, 52, 22, 16, 6, 60, 4, 51, 0, 26, 37, 47, 10, 36, 63, 5, 57, 0, 18, 59, 23, 33, 51, 19, 0, 44, 15, 11, 54, 17, 42, 35, 53, 18, 58, 33, 49, 4, 34, 42, 0, 50, 43, 25, 16, 49, 34, 20, 37, 28, 12, 63, 16, 38, 25, 44, 0, 40, 52, 17, 35, 3, 50, 14, 8, 53, 11, 36, 25, 45, 9, 62, 0, 54, 28, 17, 50, 55, 15, 24, 57, 0, 53, 34, 23, 41, 15, 45, 0, 49, 16, 4, 48, 9, 63, 45, 0, 42, 58, 37, 61, 22, 54, 26 },
+     { 0, 50, 21, 47, 54, 36, 27, 45, 52, 4, 34, 15, 63, 29, 37, 59, 17, 31, 6, 61, 28, 5, 48, 18, 59, 27, 34, 56, 44, 31, 35, 12, 41, 59, 16, 3, 40, 20, 50, 22, 30, 40, 52, 10, 45, 3, 59, 22, 37, 61, 29, 46, 31, 58, 2, 22, 9, 43, 3, 39, 14, 61, 24, 54, 15, 29, 11, 60, 39, 17, 5, 61, 0, 44, 50, 3, 31, 14, 58, 21, 54, 28, 15, 45, 60, 26, 33, 58, 44, 22, 60, 2, 57, 34, 49, 27, 18, 34, 21, 59, 29, 4, 36, 41, 8, 39, 28, 11, 62, 26, 53, 20, 35, 24, 59, 32, 29, 39, 24, 31, 57, 23, 11, 28, 5, 36, 11, 59 },
+     { 44, 32, 63, 5, 20, 12, 41, 7, 30, 61, 42, 8, 39, 5, 33, 8, 24, 53, 45, 11, 37, 58, 7, 44, 10, 50, 3, 40, 8, 22, 53, 19, 46, 9, 33, 52, 24, 58, 8, 44, 13, 47, 8, 34, 38, 30, 14, 47, 7, 34, 4, 55, 9, 19, 40, 49, 56, 26, 60, 21, 30, 45, 10, 19, 40, 58, 23, 36, 3, 52, 45, 23, 54, 13, 22, 42, 53, 45, 7, 33, 10, 36, 57, 6, 29, 12, 41, 0, 30, 15, 41, 30, 17, 7, 16, 53, 40, 56, 2, 39, 12, 61, 10, 52, 31, 60, 16, 45, 1, 37, 7, 61, 40, 10, 43, 17, 58, 7, 54, 14, 4, 51, 39, 49, 18, 56, 42, 20 },
+     { 14, 6, 24, 36, 56, 49, 22, 60, 18, 14, 23, 51, 26, 57, 21, 52, 41, 14, 35, 50, 19, 31, 40, 23, 33, 14, 63, 17, 32, 47, 7, 62, 23, 30, 56, 11, 42, 27, 14, 60, 35, 19, 28, 61, 17, 55, 25, 39, 53, 17, 42, 21, 38, 63, 25, 5, 14, 36, 12, 50, 1, 37, 59, 32, 2, 51, 6, 56, 27, 32, 11, 30, 38, 26, 60, 8, 26, 19, 62, 39, 50, 2, 21, 39, 53, 23, 56, 19, 49, 39, 5, 46, 55, 23, 42, 4, 31, 11, 47, 26, 45, 22, 48, 18, 21, 5, 48, 25, 57, 14, 47, 30, 3, 56, 12, 50, 1, 42, 19, 47, 35, 17, 8, 30, 45, 25, 4, 51 },
+     { 28, 58, 43, 1, 31, 8, 33, 2, 44, 55, 32, 1, 60, 12, 46, 27, 4, 62, 23, 1, 56, 13, 62, 2, 54, 36, 25, 51, 1, 57, 26, 42, 3, 49, 17, 38, 1, 48, 31, 4, 54, 3, 50, 24, 1, 49, 5, 63, 13, 27, 52, 1, 48, 13, 45, 33, 52, 30, 46, 20, 55, 28, 6, 48, 24, 38, 20, 47, 14, 62, 48, 9, 58, 4, 36, 30, 56, 1, 34, 12, 18, 63, 25, 48, 4, 16, 37, 7, 62, 10, 52, 28, 13, 50, 36, 63, 24, 51, 15, 58, 8, 33, 1, 38, 56, 35, 42, 9, 33, 51, 22, 18, 48, 32, 27, 37, 23, 61, 33, 11, 59, 29, 62, 1, 53, 10, 60, 33 },
+     { 12, 39, 17, 52, 26, 46, 53, 38, 25, 11, 48, 36, 16, 43, 2, 35, 55, 17, 39, 29, 43, 9, 28, 45, 20, 5, 46, 12, 42, 28, 13, 52, 36, 6, 60, 22, 54, 17, 62, 39, 25, 42, 15, 55, 44, 20, 31, 10, 35, 57, 24, 32, 29, 6, 59, 18, 7, 62, 3, 41, 10, 44, 16, 54, 13, 62, 31, 9, 41, 1, 21, 43, 18, 47, 15, 40, 11, 49, 28, 55, 46, 30, 8, 43, 32, 61, 28, 47, 25, 34, 21, 61, 32, 1, 20, 9, 46, 6, 35, 19, 41, 54, 27, 63, 14, 3, 51, 20, 62, 2, 38, 55, 8, 21, 63, 6, 46, 9, 26, 51, 3, 24, 43, 34, 16, 41, 18, 48 },
+     { 62, 23, 55, 9, 15, 62, 19, 13, 58, 40, 6, 30, 54, 19, 50, 31, 10, 44, 6, 59, 21, 47, 51, 15, 60, 39, 30, 54, 21, 61, 19, 33, 14, 29, 43, 11, 34, 45, 7, 21, 10, 56, 36, 6, 38, 11, 58, 42, 2, 47, 11, 60, 50, 16, 41, 28, 38, 23, 47, 17, 35, 63, 22, 33, 42, 5, 45, 17, 53, 35, 25, 56, 33, 6, 51, 19, 60, 23, 43, 15, 5, 40, 58, 13, 51, 1, 45, 11, 54, 3, 43, 8, 37, 48, 59, 29, 39, 21, 61, 43, 3, 31, 10, 44, 24, 29, 60, 12, 28, 40, 11, 25, 43, 52, 14, 41, 16, 57, 44, 20, 40, 55, 12, 21, 57, 27, 35, 2 },
+     { 37, 6, 31, 42, 40, 4, 29, 50, 0, 20, 63, 28, 9, 58, 14, 24, 63, 26, 48, 16, 34, 4, 32, 38, 23, 11, 58, 4, 37, 9, 45, 5, 63, 48, 26, 57, 2, 28, 32, 51, 46, 29, 13, 62, 27, 46, 28, 18, 50, 15, 40, 4, 19, 34, 54, 0, 53, 9, 26, 58, 28, 5, 49, 0, 57, 27, 19, 60, 29, 8, 59, 12, 37, 63, 24, 46, 3, 37, 6, 52, 26, 32, 20, 36, 9, 22, 59, 18, 35, 51, 14, 57, 17, 24, 12, 44, 56, 0, 30, 13, 59, 20, 49, 17, 54, 43, 6, 34, 46, 17, 58, 36, 0, 34, 29, 54, 25, 2, 36, 15, 60, 6, 37, 46, 4, 50, 9, 45 },
+     { 19, 59, 48, 3, 24, 60, 44, 22, 34, 51, 15, 45, 41, 5, 33, 47, 0, 37, 12, 55, 25, 54, 8, 57, 0, 47, 18, 34, 49, 15, 55, 24, 40, 20, 8, 35, 53, 13, 41, 18, 0, 59, 22, 33, 4, 52, 8, 60, 24, 36, 31, 56, 45, 26, 10, 43, 15, 56, 36, 4, 51, 14, 39, 30, 12, 55, 36, 2, 39, 49, 4, 44, 17, 0, 32, 13, 53, 35, 59, 17, 62, 0, 55, 24, 52, 38, 31, 6, 42, 19, 29, 40, 4, 54, 33, 5, 16, 27, 52, 37, 23, 55, 7, 37, 0, 39, 23, 49, 4, 53, 31, 15, 59, 10, 50, 4, 60, 34, 48, 7, 31, 49, 27, 14, 62, 22, 53, 29 },
+     { 46, 21, 14, 51, 36, 17, 7, 57, 10, 32, 3, 37, 22, 60, 39, 18, 56, 20, 42, 3, 36, 10, 44, 26, 41, 29, 53, 27, 2, 39, 30, 52, 0, 59, 15, 48, 23, 61, 6, 58, 37, 12, 40, 49, 16, 39, 20, 44, 0, 62, 8, 21, 3, 59, 23, 32, 49, 31, 12, 44, 22, 59, 18, 50, 24, 7, 43, 52, 15, 23, 41, 26, 51, 28, 55, 39, 21, 27, 10, 42, 12, 45, 27, 47, 3, 15, 63, 26, 55, 0, 60, 26, 45, 18, 62, 38, 58, 49, 8, 47, 4, 33, 46, 29, 57, 13, 56, 16, 59, 21, 5, 47, 23, 39, 18, 44, 13, 22, 28, 53, 19, 0, 58, 32, 41, 7, 26, 13 },
+     { 0, 56, 34, 28, 11, 55, 31, 47, 26, 41, 56, 13, 53, 28, 11, 49, 7, 52, 32, 61, 50, 22, 63, 17, 13, 56, 7, 19, 43, 62, 10, 21, 37, 32, 43, 4, 38, 19, 44, 25, 31, 54, 5, 23, 61, 30, 53, 12, 35, 22, 43, 53, 37, 48, 7, 62, 20, 2, 61, 41, 8, 34, 47, 9, 63, 34, 28, 10, 55, 33, 14, 57, 7, 47, 9, 61, 4, 49, 31, 50, 21, 38, 8, 16, 57, 44, 33, 5, 49, 36, 12, 50, 7, 34, 10, 25, 2, 22, 36, 15, 26, 61, 18, 9, 22, 46, 32, 8, 27, 37, 44, 30, 55, 3, 62, 24, 38, 56, 5, 45, 38, 24, 43, 10, 19, 54, 39, 61 },
+     { 41, 30, 8, 63, 43, 23, 38, 3, 62, 19, 8, 49, 25, 1, 58, 30, 23, 40, 9, 28, 18, 40, 6, 38, 49, 22, 35, 59, 8, 27, 50, 5, 56, 17, 11, 50, 30, 9, 55, 2, 51, 19, 34, 47, 9, 41, 6, 26, 48, 57, 14, 28, 17, 12, 39, 13, 37, 46, 25, 19, 54, 27, 1, 37, 16, 45, 20, 60, 1, 48, 20, 38, 31, 22, 42, 15, 19, 44, 1, 61, 6, 34, 56, 40, 29, 10, 20, 46, 13, 22, 41, 23, 59, 42, 30, 51, 45, 13, 63, 53, 42, 12, 51, 38, 62, 2, 26, 41, 50, 1, 61, 10, 19, 42, 31, 8, 49, 32, 12, 63, 9, 52, 16, 56, 36, 2, 31, 16 },
+     { 52, 5, 47, 20, 1, 53, 12, 50, 16, 35, 43, 21, 33, 43, 16, 44, 3, 59, 14, 46, 1, 30, 60, 33, 2, 45, 12, 42, 31, 47, 14, 33, 46, 25, 55, 27, 60, 36, 16, 42, 14, 46, 26, 1, 55, 15, 63, 32, 2, 38, 5, 47, 33, 61, 30, 52, 4, 57, 6, 38, 11, 43, 61, 24, 52, 3, 31, 22, 42, 10, 62, 3, 59, 11, 35, 57, 33, 54, 24, 14, 29, 48, 18, 2, 60, 41, 53, 24, 32, 62, 3, 53, 15, 1, 55, 17, 32, 40, 6, 31, 1, 40, 28, 5, 35, 52, 19, 63, 13, 33, 17, 41, 52, 26, 15, 57, 1, 20, 42, 17, 35, 27, 48, 5, 25, 50, 44, 11 },
+     { 35, 25, 38, 57, 33, 17, 40, 6, 59, 27, 54, 5, 61, 10, 52, 26, 36, 19, 51, 35, 57, 48, 11, 20, 54, 25, 61, 16, 1, 58, 24, 61, 3, 39, 7, 47, 1, 22, 49, 28, 63, 10, 58, 32, 17, 36, 45, 19, 51, 29, 59, 10, 50, 1, 23, 42, 18, 29, 51, 21, 56, 32, 14, 5, 40, 58, 47, 13, 54, 35, 29, 45, 18, 52, 26, 2, 38, 8, 46, 36, 58, 11, 52, 35, 17, 28, 1, 58, 9, 39, 17, 28, 37, 48, 20, 9, 57, 24, 50, 19, 58, 16, 48, 25, 43, 11, 35, 6, 45, 24, 56, 4, 36, 7, 47, 35, 52, 28, 59, 30, 2, 61, 21, 33, 63, 12, 18, 59 },
+     { 3, 49, 15, 10, 27, 61, 25, 45, 30, 0, 14, 47, 31, 38, 17, 62, 7, 55, 27, 4, 15, 24, 42, 52, 10, 34, 5, 51, 36, 18, 41, 11, 35, 21, 62, 13, 33, 57, 8, 35, 5, 40, 21, 43, 52, 3, 24, 56, 11, 16, 33, 25, 41, 20, 55, 8, 60, 35, 15, 48, 2, 57, 30, 49, 18, 25, 6, 39, 17, 57, 7, 25, 43, 5, 49, 16, 62, 22, 55, 4, 25, 43, 23, 7, 50, 11, 37, 48, 14, 51, 33, 57, 7, 27, 39, 46, 4, 29, 11, 43, 34, 56, 7, 60, 20, 54, 30, 57, 22, 49, 9, 33, 54, 14, 63, 23, 6, 43, 10, 40, 50, 13, 44, 8, 38, 33, 46, 23 },
+     { 55, 39, 22, 50, 44, 4, 36, 9, 52, 23, 37, 59, 21, 2, 46, 13, 31, 41, 11, 45, 62, 29, 6, 37, 19, 48, 30, 23, 44, 7, 53, 28, 54, 16, 41, 29, 44, 18, 52, 24, 60, 15, 48, 7, 27, 59, 9, 34, 42, 54, 7, 63, 4, 46, 31, 27, 45, 0, 40, 26, 34, 17, 37, 10, 53, 29, 36, 50, 2, 27, 51, 11, 61, 37, 23, 41, 30, 7, 18, 50, 39, 14, 63, 32, 45, 61, 19, 30, 25, 44, 2, 47, 23, 63, 11, 34, 59, 37, 60, 3, 22, 14, 44, 30, 15, 0, 47, 15, 3, 38, 61, 20, 27, 45, 11, 39, 51, 16, 55, 3, 22, 54, 29, 58, 1, 57, 6, 29 },
+     { 9, 17, 60, 2, 34, 56, 20, 62, 39, 12, 49, 6, 29, 56, 34, 48, 0, 58, 22, 38, 18, 43, 56, 0, 63, 14, 55, 3, 59, 31, 15, 45, 0, 49, 6, 58, 3, 38, 12, 45, 0, 37, 29, 57, 13, 39, 30, 49, 0, 23, 44, 36, 16, 57, 13, 54, 11, 24, 63, 9, 53, 7, 62, 42, 0, 59, 15, 23, 63, 34, 40, 16, 32, 0, 53, 12, 48, 28, 59, 33, 0, 53, 9, 27, 3, 22, 54, 5, 56, 9, 61, 13, 42, 14, 52, 19, 0, 21, 47, 27, 53, 36, 3, 50, 39, 58, 25, 40, 53, 28, 12, 50, 0, 59, 32, 2, 21, 34, 26, 46, 37, 7, 18, 47, 24, 14, 53, 42 },
+     { 61, 32, 13, 54, 29, 7, 46, 13, 28, 57, 18, 41, 53, 15, 9, 39, 24, 49, 33, 3, 53, 9, 26, 32, 40, 28, 46, 39, 25, 9, 56, 21, 63, 37, 26, 22, 51, 27, 17, 56, 31, 53, 4, 43, 22, 46, 12, 18, 60, 40, 20, 26, 50, 21, 39, 5, 49, 33, 16, 44, 22, 46, 20, 32, 24, 45, 8, 43, 12, 46, 4, 48, 56, 20, 29, 58, 3, 40, 10, 42, 31, 21, 47, 41, 56, 38, 15, 42, 36, 27, 20, 33, 55, 3, 26, 44, 31, 54, 12, 35, 9, 63, 28, 10, 21, 32, 9, 60, 17, 8, 43, 29, 40, 16, 36, 48, 60, 7, 57, 14, 62, 31, 42, 15, 36, 40, 20, 26 },
+     { 0, 37, 47, 23, 41, 18, 32, 48, 1, 35, 8, 25, 4, 26, 63, 20, 54, 8, 16, 61, 35, 23, 51, 15, 58, 7, 12, 20, 50, 34, 42, 4, 38, 10, 32, 47, 8, 60, 41, 20, 9, 25, 50, 19, 62, 1, 37, 56, 28, 8, 53, 11, 3, 58, 34, 43, 19, 60, 38, 4, 58, 31, 3, 51, 11, 55, 38, 30, 21, 58, 19, 26, 9, 44, 36, 13, 46, 20, 62, 24, 13, 60, 5, 28, 12, 34, 7, 59, 0, 53, 45, 6, 38, 30, 50, 7, 62, 16, 41, 5, 46, 18, 55, 42, 51, 5, 45, 23, 34, 48, 19, 58, 5, 25, 54, 19, 13, 41, 28, 21, 0, 49, 10, 60, 4, 51, 9, 45 },
+     { 19, 28, 6, 58, 10, 51, 4, 22, 55, 42, 60, 45, 34, 51, 42, 5, 30, 45, 27, 40, 13, 47, 4, 49, 21, 38, 60, 29, 2, 57, 17, 27, 52, 19, 61, 14, 30, 34, 2, 44, 63, 33, 11, 35, 16, 51, 25, 6, 14, 47, 31, 61, 37, 29, 18, 8, 52, 2, 28, 54, 13, 41, 15, 62, 35, 18, 2, 60, 6, 33, 41, 61, 31, 6, 56, 17, 34, 50, 6, 52, 44, 35, 16, 51, 59, 24, 48, 18, 31, 40, 16, 49, 21, 60, 17, 39, 10, 49, 32, 57, 24, 39, 1, 25, 18, 62, 37, 12, 56, 1, 37, 11, 52, 44, 9, 30, 47, 4, 51, 40, 55, 25, 34, 27, 56, 30, 32, 54 },
+     { 63, 40, 49, 15, 43, 26, 63, 38, 16, 20, 30, 12, 57, 14, 19, 60, 36, 12, 59, 2, 57, 17, 42, 31, 1, 44, 16, 35, 47, 11, 32, 48, 13, 43, 1, 39, 51, 12, 57, 23, 6, 40, 53, 3, 55, 31, 39, 60, 35, 44, 5, 15, 45, 1, 62, 41, 26, 14, 47, 22, 36, 27, 50, 9, 26, 47, 52, 28, 54, 16, 1, 13, 51, 39, 23, 63, 1, 30, 15, 26, 2, 57, 19, 37, 1, 44, 21, 50, 13, 63, 8, 24, 56, 1, 35, 25, 58, 20, 2, 28, 14, 51, 33, 59, 13, 30, 4, 49, 31, 24, 63, 26, 33, 3, 58, 38, 62, 24, 32, 8, 17, 45, 5, 48, 18, 3, 43, 11 },
+     { 21, 4, 24, 34, 59, 1, 37, 11, 53, 5, 47, 2, 22, 40, 32, 1, 24, 50, 21, 29, 38, 25, 63, 8, 55, 24, 53, 6, 62, 23, 59, 3, 54, 20, 58, 24, 5, 46, 15, 38, 48, 14, 27, 42, 23, 7, 46, 10, 17, 58, 25, 52, 23, 32, 49, 12, 55, 30, 40, 7, 59, 1, 56, 21, 39, 4, 23, 15, 37, 46, 55, 42, 21, 4, 48, 8, 45, 54, 37, 55, 32, 8, 46, 10, 30, 54, 4, 41, 25, 29, 36, 48, 11, 43, 14, 47, 5, 43, 53, 36, 61, 10, 45, 6, 41, 54, 27, 43, 16, 55, 6, 46, 18, 42, 23, 15, 1, 45, 12, 60, 37, 22, 62, 12, 39, 59, 16, 52 },
+     { 47, 35, 56, 7, 19, 46, 31, 50, 33, 24, 61, 35, 50, 7, 53, 44, 55, 6, 46, 10, 52, 5, 21, 43, 36, 10, 18, 41, 26, 37, 8, 29, 40, 36, 9, 49, 34, 26, 61, 21, 7, 59, 18, 62, 29, 54, 20, 32, 51, 0, 40, 10, 55, 6, 20, 36, 9, 61, 5, 51, 44, 19, 33, 43, 13, 57, 40, 63, 8, 24, 29, 10, 60, 34, 27, 40, 25, 18, 10, 42, 21, 49, 26, 62, 38, 12, 33, 61, 5, 57, 2, 19, 54, 28, 62, 22, 38, 31, 16, 7, 22, 47, 29, 17, 35, 8, 20, 51, 2, 40, 22, 50, 13, 61, 28, 53, 35, 20, 56, 30, 2, 53, 14, 41, 23, 34, 8, 31 },
+     { 12, 2, 42, 29, 52, 13, 21, 8, 55, 14, 41, 17, 28, 58, 23, 11, 17, 36, 31, 62, 17, 34, 50, 14, 28, 61, 33, 52, 2, 51, 17, 45, 7, 25, 62, 30, 18, 55, 0, 42, 30, 35, 45, 1, 12, 48, 3, 63, 21, 36, 30, 48, 19, 59, 43, 27, 46, 17, 34, 25, 12, 29, 53, 6, 48, 31, 11, 34, 49, 3, 36, 50, 19, 47, 14, 61, 11, 36, 58, 4, 60, 14, 39, 22, 6, 52, 15, 35, 17, 46, 31, 42, 9, 34, 3, 52, 12, 60, 26, 56, 40, 2, 53, 23, 57, 38, 62, 14, 36, 59, 10, 31, 39, 6, 49, 9, 41, 26, 5, 48, 43, 27, 33, 58, 1, 50, 25, 57 },
+     { 61, 37, 15, 61, 3, 39, 58, 43, 26, 0, 44, 10, 47, 3, 37, 63, 28, 43, 13, 39, 3, 57, 30, 59, 0, 48, 5, 43, 13, 22, 60, 33, 55, 15, 42, 4, 52, 10, 45, 13, 54, 4, 24, 49, 37, 26, 41, 14, 42, 9, 61, 13, 38, 23, 3, 53, 0, 58, 21, 42, 63, 10, 17, 61, 25, 0, 58, 28, 17, 44, 57, 12, 27, 0, 55, 5, 52, 28, 23, 47, 29, 0, 43, 17, 58, 28, 47, 23, 55, 10, 58, 23, 51, 40, 18, 33, 45, 0, 49, 8, 32, 61, 19, 48, 0, 26, 7, 47, 29, 18, 44, 0, 56, 34, 20, 59, 15, 51, 37, 18, 10, 52, 7, 20, 46, 9, 38, 17 },
+     { 6, 27, 48, 23, 45, 29, 5, 18, 38, 62, 27, 56, 20, 32, 15, 9, 48, 0, 54, 22, 45, 20, 7, 41, 23, 39, 19, 27, 58, 31, 44, 0, 12, 50, 23, 56, 20, 39, 32, 59, 16, 52, 33, 9, 57, 22, 6, 58, 28, 50, 24, 2, 56, 35, 16, 45, 32, 38, 15, 54, 2, 38, 46, 22, 35, 45, 20, 5, 52, 25, 7, 35, 59, 32, 22, 43, 38, 3, 51, 16, 34, 53, 32, 50, 3, 40, 8, 43, 0, 39, 27, 4, 14, 61, 8, 55, 15, 41, 20, 44, 27, 13, 39, 11, 46, 42, 54, 33, 4, 52, 23, 61, 14, 25, 43, 2, 33, 11, 63, 29, 61, 17, 40, 55, 22, 62, 28, 44 },
+     { 20, 54, 8, 56, 35, 10, 63, 31, 52, 12, 48, 6, 59, 41, 52, 33, 19, 58, 25, 49, 11, 37, 47, 12, 54, 15, 56, 35, 7, 47, 16, 53, 28, 34, 5, 37, 28, 8, 48, 3, 28, 38, 18, 61, 16, 43, 53, 32, 4, 17, 47, 27, 44, 8, 63, 10, 25, 49, 6, 37, 24, 52, 32, 3, 50, 12, 41, 56, 38, 14, 62, 20, 40, 16, 53, 31, 18, 63, 41, 9, 59, 7, 13, 25, 57, 20, 63, 26, 53, 18, 48, 62, 30, 46, 21, 25, 58, 29, 36, 4, 55, 34, 6, 60, 31, 16, 21, 12, 58, 38, 9, 29, 47, 7, 52, 30, 57, 44, 22, 0, 35, 45, 3, 31, 14, 36, 0, 51 },
+     { 42, 14, 33, 24, 16, 49, 40, 2, 22, 33, 16, 36, 25, 1, 21, 61, 38, 8, 33, 4, 62, 26, 29, 60, 6, 46, 30, 11, 63, 4, 36, 40, 19, 57, 46, 11, 41, 63, 22, 25, 58, 10, 46, 2, 34, 27, 11, 38, 56, 34, 12, 53, 18, 33, 41, 51, 13, 28, 60, 20, 47, 14, 29, 59, 16, 62, 8, 22, 32, 47, 9, 49, 2, 44, 7, 12, 45, 6, 20, 27, 45, 24, 62, 42, 36, 11, 33, 15, 37, 7, 32, 10, 37, 1, 35, 50, 6, 11, 63, 24, 52, 15, 50, 24, 3, 37, 56, 27, 34, 22, 49, 16, 36, 62, 17, 39, 4, 15, 54, 24, 50, 8, 58, 26, 49, 54, 11, 30 },
+     { 4, 59, 41, 1, 53, 12, 25, 45, 59, 7, 51, 39, 54, 14, 46, 4, 27, 53, 16, 44, 18, 51, 1, 32, 25, 2, 50, 40, 20, 54, 24, 9, 62, 2, 27, 60, 1, 17, 36, 50, 6, 40, 30, 55, 41, 19, 49, 1, 21, 60, 40, 5, 62, 1, 22, 30, 57, 4, 43, 31, 1, 55, 40, 7, 27, 37, 30, 54, 1, 19, 42, 30, 56, 26, 62, 49, 24, 57, 37, 56, 2, 39, 16, 5, 30, 55, 3, 49, 60, 23, 56, 44, 17, 52, 13, 42, 28, 48, 18, 45, 9, 37, 21, 41, 58, 10, 48, 1, 63, 5, 41, 57, 2, 24, 12, 48, 27, 42, 32, 46, 13, 38, 19, 34, 5, 41, 25, 60 },
+     { 39, 28, 21, 46, 32, 57, 36, 9, 19, 42, 4, 29, 11, 43, 30, 49, 13, 42, 35, 56, 9, 39, 15, 52, 36, 61, 18, 26, 45, 14, 31, 48, 21, 43, 14, 33, 49, 54, 14, 44, 21, 62, 13, 23, 8, 62, 15, 51, 44, 7, 30, 37, 20, 42, 56, 7, 39, 18, 50, 11, 61, 9, 19, 43, 57, 2, 48, 11, 39, 60, 28, 4, 37, 17, 35, 1, 33, 11, 31, 14, 48, 19, 35, 51, 46, 21, 44, 29, 12, 41, 2, 22, 58, 26, 54, 4, 59, 38, 2, 33, 57, 1, 63, 13, 28, 51, 15, 40, 18, 45, 8, 30, 43, 37, 54, 19, 8, 59, 21, 6, 60, 29, 55, 10, 63, 15, 47, 17 },
+     { 3, 50, 10, 62, 18, 5, 27, 49, 60, 23, 55, 18, 62, 24, 56, 10, 59, 28, 2, 23, 34, 59, 43, 20, 10, 42, 8, 49, 1, 37, 57, 6, 51, 29, 53, 7, 23, 31, 5, 32, 51, 0, 35, 54, 45, 31, 5, 26, 36, 24, 55, 15, 48, 29, 14, 48, 26, 60, 21, 41, 36, 26, 50, 33, 14, 44, 17, 24, 52, 15, 46, 23, 54, 6, 47, 21, 60, 50, 4, 53, 29, 61, 8, 23, 1, 60, 19, 6, 53, 16, 47, 34, 6, 39, 16, 31, 12, 20, 53, 22, 30, 43, 25, 46, 35, 6, 44, 32, 53, 26, 55, 19, 11, 59, 5, 33, 51, 1, 35, 53, 25, 3, 42, 23, 44, 32, 7, 53 },
+     { 22, 44, 37, 6, 26, 51, 38, 0, 34, 13, 31, 46, 3, 37, 6, 19, 40, 21, 47, 63, 12, 5, 29, 55, 22, 58, 34, 28, 60, 22, 11, 41, 17, 38, 9, 44, 59, 39, 56, 19, 11, 47, 25, 15, 3, 39, 57, 17, 61, 11, 46, 3, 58, 9, 54, 35, 2, 34, 8, 45, 15, 56, 5, 23, 53, 33, 63, 35, 4, 59, 10, 51, 13, 61, 29, 41, 15, 25, 43, 19, 40, 10, 54, 33, 41, 12, 38, 51, 31, 26, 61, 9, 30, 45, 24, 62, 49, 40, 10, 61, 14, 49, 5, 17, 54, 20, 60, 23, 3, 13, 35, 50, 32, 23, 46, 27, 38, 63, 16, 12, 39, 48, 18, 51, 1, 27, 56, 35 },
+     { 63, 15, 30, 55, 43, 14, 57, 17, 53, 44, 7, 48, 26, 50, 32, 60, 0, 53, 14, 31, 50, 24, 46, 0, 38, 13, 4, 52, 16, 45, 30, 59, 0, 25, 55, 35, 16, 10, 26, 42, 58, 29, 60, 38, 50, 22, 28, 47, 0, 50, 28, 19, 33, 39, 11, 44, 16, 52, 24, 59, 3, 38, 27, 51, 0, 21, 7, 42, 26, 34, 21, 40, 33, 18, 39, 3, 54, 38, 8, 59, 0, 44, 27, 15, 58, 28, 57, 9, 43, 0, 36, 50, 20, 59, 8, 34, 0, 27, 47, 7, 36, 19, 56, 32, 0, 38, 11, 29, 62, 47, 6, 61, 0, 41, 14, 56, 10, 23, 45, 31, 57, 8, 36, 13, 58, 38, 11, 19 },
+     { 0, 34, 12, 47, 21, 2, 40, 30, 11, 25, 61, 20, 40, 15, 35, 22, 45, 36, 7, 41, 17, 57, 9, 48, 32, 62, 44, 24, 35, 3, 54, 13, 33, 63, 19, 4, 48, 22, 62, 2, 37, 8, 33, 6, 20, 52, 9, 32, 43, 13, 39, 63, 25, 4, 49, 23, 62, 32, 9, 30, 48, 18, 63, 12, 46, 29, 58, 13, 48, 8, 57, 31, 0, 51, 9, 58, 12, 22, 47, 29, 35, 22, 49, 5, 46, 4, 34, 20, 63, 24, 56, 11, 41, 3, 51, 19, 56, 35, 17, 58, 28, 42, 9, 45, 59, 26, 51, 42, 17, 36, 25, 15, 53, 21, 44, 3, 30, 55, 5, 50, 21, 28, 61, 32, 6, 49, 28, 46 },
+     { 58, 42, 60, 4, 31, 59, 22, 63, 35, 38, 9, 54, 1, 57, 8, 51, 16, 58, 27, 53, 3, 38, 30, 15, 27, 6, 19, 56, 10, 50, 21, 36, 47, 5, 43, 28, 51, 32, 13, 46, 18, 54, 16, 43, 63, 12, 36, 59, 22, 34, 5, 52, 17, 59, 27, 41, 0, 19, 55, 37, 13, 43, 6, 34, 41, 10, 36, 55, 19, 44, 3, 16, 58, 27, 49, 25, 32, 62, 17, 55, 13, 63, 18, 52, 25, 37, 17, 48, 13, 32, 5, 46, 28, 37, 14, 43, 25, 5, 51, 39, 3, 52, 33, 22, 8, 40, 12, 4, 57, 9, 46, 39, 28, 58, 13, 62, 17, 42, 19, 36, 0, 47, 16, 43, 24, 21, 54, 13 },
+     { 25, 9, 23, 50, 36, 8, 45, 14, 3, 51, 16, 28, 44, 12, 42, 29, 4, 26, 10, 47, 22, 61, 18, 54, 51, 39, 46, 13, 41, 26, 58, 7, 18, 39, 12, 57, 15, 1, 52, 27, 41, 23, 48, 1, 27, 45, 18, 2, 57, 26, 55, 8, 43, 31, 6, 58, 14, 51, 40, 5, 61, 31, 24, 54, 17, 60, 22, 1, 39, 30, 53, 45, 36, 13, 43, 5, 45, 2, 37, 6, 34, 42, 2, 39, 10, 62, 7, 54, 40, 18, 60, 15, 52, 21, 63, 8, 55, 46, 15, 30, 23, 13, 62, 16, 50, 24, 58, 31, 48, 21, 34, 2, 49, 7, 31, 37, 26, 48, 9, 61, 40, 11, 52, 2, 60, 40, 4, 37 },
+     { 52, 28, 39, 16, 54, 19, 29, 55, 42, 20, 58, 33, 24, 63, 18, 55, 39, 62, 43, 34, 12, 40, 6, 35, 2, 25, 8, 62, 34, 1, 31, 42, 61, 27, 53, 24, 40, 61, 34, 8, 59, 4, 30, 56, 40, 6, 53, 42, 10, 48, 16, 37, 12, 46, 21, 36, 47, 11, 28, 45, 22, 10, 57, 2, 49, 31, 14, 44, 61, 11, 25, 6, 23, 63, 18, 36, 28, 56, 20, 51, 11, 48, 27, 56, 32, 22, 45, 30, 2, 42, 27, 39, 1, 44, 23, 31, 38, 22, 11, 61, 43, 54, 4, 47, 35, 2, 44, 16, 28, 54, 12, 62, 18, 43, 10, 52, 1, 58, 33, 15, 29, 56, 20, 34, 9, 30, 48, 17 },
+     { 46, 2, 56, 11, 41, 1, 49, 6, 27, 47, 2, 48, 5, 32, 37, 3, 13, 19, 32, 1, 55, 28, 60, 17, 43, 59, 32, 20, 49, 16, 55, 23, 14, 46, 2, 36, 6, 30, 20, 49, 12, 47, 35, 14, 21, 60, 29, 14, 35, 24, 46, 1, 56, 29, 53, 8, 33, 23, 56, 1, 35, 46, 20, 39, 26, 4, 53, 28, 17, 38, 60, 34, 48, 9, 55, 15, 46, 7, 41, 31, 60, 24, 16, 36, 1, 59, 19, 52, 35, 6, 55, 11, 59, 33, 7, 57, 4, 29, 48, 1, 19, 26, 37, 30, 18, 63, 37, 6, 59, 1, 40, 24, 56, 33, 46, 22, 35, 7, 24, 53, 39, 5, 26, 45, 55, 18, 62, 7 },
+     { 20, 60, 29, 34, 20, 62, 33, 52, 10, 36, 13, 60, 41, 21, 50, 27, 56, 49, 8, 51, 21, 45, 11, 48, 8, 23, 53, 3, 29, 44, 5, 52, 9, 32, 50, 17, 43, 56, 3, 38, 24, 10, 62, 25, 51, 9, 33, 49, 61, 7, 30, 62, 22, 19, 2, 42, 63, 5, 49, 18, 60, 15, 52, 7, 43, 56, 23, 50, 5, 50, 2, 20, 41, 30, 1, 52, 22, 61, 14, 26, 3, 43, 53, 7, 47, 28, 11, 14, 23, 58, 33, 25, 47, 13, 50, 17, 40, 54, 34, 60, 41, 6, 59, 14, 50, 7, 25, 55, 20, 42, 51, 8, 27, 4, 16, 60, 28, 50, 44, 3, 22, 49, 63, 12, 33, 1, 43, 31 },
+     { 36, 5, 46, 8, 44, 24, 13, 39, 25, 57, 31, 18, 8, 52, 10, 45, 6, 30, 36, 24, 63, 4, 33, 26, 57, 40, 15, 56, 37, 12, 40, 25, 37, 58, 11, 63, 21, 45, 16, 60, 31, 53, 18, 33, 3, 45, 23, 0, 20, 54, 40, 15, 50, 38, 60, 16, 25, 42, 29, 38, 7, 41, 25, 62, 18, 33, 8, 35, 42, 16, 32, 56, 12, 39, 59, 19, 34, 9, 49, 38, 57, 12, 21, 50, 14, 40, 61, 44, 50, 9, 49, 19, 3, 29, 35, 62, 12, 24, 7, 18, 52, 32, 10, 46, 21, 41, 32, 11, 36, 29, 14, 34, 60, 38, 54, 11, 41, 14, 19, 57, 32, 16, 7, 41, 51, 25, 14, 57 },
+     { 53, 18, 26, 50, 15, 58, 4, 63, 17, 43, 7, 40, 61, 35, 15, 41, 23, 60, 16, 38, 14, 42, 19, 50, 0, 31, 10, 46, 27, 63, 18, 60, 0, 20, 29, 39, 8, 26, 37, 5, 42, 0, 44, 39, 57, 17, 58, 41, 28, 37, 4, 32, 9, 44, 12, 31, 54, 10, 59, 14, 27, 53, 12, 36, 0, 47, 13, 63, 21, 58, 10, 24, 50, 27, 4, 26, 44, 53, 31, 0, 18, 42, 29, 33, 57, 4, 32, 26, 0, 38, 16, 61, 41, 53, 20, 0, 42, 44, 49, 27, 10, 56, 39, 0, 57, 15, 53, 49, 3, 61, 22, 47, 17, 5, 49, 26, 2, 63, 39, 10, 47, 27, 37, 23, 4, 59, 38, 10 },
+     { 23, 39, 61, 3, 37, 28, 48, 31, 0, 34, 51, 23, 2, 26, 58, 0, 53, 11, 46, 1, 57, 29, 52, 14, 37, 61, 21, 35, 2, 49, 7, 34, 47, 55, 4, 33, 54, 13, 58, 52, 19, 50, 22, 7, 13, 29, 36, 11, 51, 17, 60, 25, 55, 4, 34, 51, 0, 35, 20, 48, 32, 3, 51, 30, 59, 28, 40, 3, 46, 29, 54, 43, 7, 62, 47, 11, 39, 4, 23, 46, 55, 8, 63, 5, 25, 37, 18, 46, 21, 56, 31, 5, 36, 8, 45, 58, 26, 15, 2, 36, 47, 21, 29, 44, 25, 34, 3, 27, 43, 10, 52, 0, 45, 30, 24, 36, 43, 18, 34, 59, 0, 52, 61, 15, 44, 19, 30, 49 },
+     { 0, 27, 12, 43, 54, 9, 22, 53, 21, 46, 15, 55, 29, 47, 20, 33, 39, 28, 59, 35, 9, 44, 5, 24, 47, 7, 52, 17, 56, 22, 30, 42, 14, 26, 45, 18, 49, 1, 24, 34, 11, 27, 55, 32, 61, 47, 2, 56, 6, 44, 13, 47, 36, 27, 58, 22, 16, 47, 40, 4, 57, 38, 21, 45, 16, 9, 56, 26, 11, 38, 0, 22, 36, 17, 33, 57, 16, 30, 62, 15, 35, 40, 20, 45, 59, 10, 54, 8, 63, 13, 52, 27, 22, 57, 28, 12, 32, 51, 55, 22, 63, 4, 16, 54, 12, 62, 45, 19, 58, 13, 32, 40, 20, 56, 7, 57, 9, 54, 6, 29, 42, 21, 8, 55, 35, 47, 6, 41 },
+     { 56, 33, 58, 32, 19, 35, 42, 6, 59, 11, 38, 5, 49, 12, 62, 7, 52, 17, 5, 25, 54, 20, 61, 31, 54, 27, 41, 11, 44, 5, 59, 12, 36, 51, 10, 61, 28, 41, 48, 9, 43, 63, 5, 40, 20, 8, 49, 26, 34, 21, 58, 1, 18, 45, 7, 39, 61, 26, 8, 50, 23, 10, 63, 5, 55, 37, 19, 49, 52, 15, 59, 47, 13, 54, 1, 25, 42, 58, 10, 48, 3, 27, 50, 1, 17, 48, 34, 41, 16, 40, 2, 45, 10, 39, 17, 61, 5, 38, 19, 9, 41, 31, 60, 38, 5, 23, 36, 8, 30, 55, 24, 63, 12, 48, 14, 51, 31, 20, 45, 25, 12, 50, 32, 2, 28, 11, 62, 14 },
+     { 44, 16, 7, 48, 1, 62, 16, 50, 27, 33, 61, 25, 17, 44, 31, 14, 22, 43, 32, 48, 18, 40, 8, 36, 3, 16, 33, 62, 23, 38, 25, 53, 2, 21, 41, 6, 22, 15, 59, 29, 16, 37, 26, 15, 52, 42, 23, 15, 54, 39, 10, 30, 53, 11, 49, 24, 2, 43, 55, 17, 34, 44, 15, 31, 24, 44, 2, 32, 7, 35, 25, 5, 40, 45, 29, 51, 6, 21, 37, 52, 24, 60, 13, 31, 53, 23, 2, 28, 49, 24, 31, 60, 20, 51, 1, 34, 48, 14, 59, 33, 50, 1, 18, 33, 48, 60, 17, 51, 39, 6, 38, 2, 35, 29, 40, 23, 1, 62, 15, 53, 37, 17, 46, 57, 40, 51, 24, 22 },
+     { 5, 37, 52, 24, 45, 13, 40, 3, 45, 9, 19, 42, 56, 4, 37, 46, 56, 2, 63, 11, 51, 1, 49, 13, 59, 45, 39, 1, 48, 15, 58, 9, 46, 31, 54, 35, 57, 38, 3, 46, 56, 4, 47, 57, 1, 30, 38, 63, 3, 46, 28, 63, 41, 14, 33, 62, 19, 32, 13, 28, 61, 1, 53, 42, 11, 60, 22, 62, 27, 42, 61, 31, 19, 8, 61, 12, 32, 55, 2, 18, 33, 12, 43, 36, 9, 62, 30, 55, 6, 58, 35, 7, 43, 29, 54, 23, 43, 30, 3, 25, 11, 45, 52, 28, 7, 14, 42, 1, 22, 50, 16, 53, 19, 59, 4, 46, 33, 41, 4, 35, 58, 5, 26, 13, 20, 2, 34, 54 },
+     { 30, 63, 21, 10, 26, 55, 29, 59, 23, 39, 53, 1, 36, 24, 59, 27, 10, 34, 23, 38, 30, 60, 22, 42, 28, 19, 9, 57, 30, 19, 43, 33, 13, 63, 3, 19, 11, 50, 31, 20, 14, 34, 10, 35, 17, 59, 7, 31, 19, 25, 50, 5, 20, 57, 29, 6, 52, 41, 4, 46, 20, 37, 26, 17, 49, 6, 39, 18, 53, 14, 3, 49, 57, 23, 34, 48, 14, 41, 28, 38, 56, 6, 58, 25, 39, 19, 43, 15, 37, 11, 47, 18, 53, 4, 37, 9, 62, 21, 53, 40, 57, 24, 13, 40, 56, 26, 47, 31, 59, 25, 45, 27, 10, 43, 21, 61, 13, 27, 48, 9, 23, 43, 31, 62, 38, 59, 9, 47 },
+     { 25, 4, 40, 60, 34, 6, 18, 36, 8, 57, 12, 30, 49, 14, 6, 54, 41, 16, 50, 6, 43, 15, 34, 4, 53, 24, 50, 35, 4, 51, 7, 55, 28, 24, 39, 44, 60, 7, 25, 62, 42, 53, 24, 61, 28, 45, 52, 12, 48, 37, 9, 35, 43, 3, 37, 48, 12, 58, 30, 52, 9, 59, 6, 57, 33, 29, 48, 4, 37, 45, 20, 34, 10, 39, 0, 60, 22, 45, 8, 63, 21, 42, 14, 49, 3, 56, 11, 46, 21, 61, 0, 42, 25, 13, 63, 17, 36, 8, 46, 16, 6, 35, 63, 0, 21, 37, 4, 57, 9, 34, 5, 61, 48, 32, 8, 37, 54, 17, 56, 30, 60, 0, 50, 16, 7, 29, 42, 17 },
+     { 32, 50, 15, 48, 2, 43, 52, 25, 47, 16, 32, 63, 21, 52, 40, 19, 0, 61, 29, 58, 20, 56, 26, 46, 12, 55, 6, 22, 62, 32, 17, 40, 0, 49, 34, 8, 27, 32, 48, 0, 21, 39, 5, 44, 12, 6, 22, 40, 0, 57, 16, 60, 23, 17, 54, 22, 36, 15, 24, 39, 19, 34, 47, 23, 0, 54, 13, 51, 24, 9, 55, 16, 52, 27, 44, 20, 4, 54, 26, 49, 0, 30, 46, 16, 29, 51, 34, 4, 52, 28, 33, 15, 57, 39, 26, 49, 0, 56, 27, 31, 48, 20, 43, 29, 53, 11, 46, 19, 41, 13, 55, 18, 0, 57, 26, 51, 2, 44, 6, 38, 14, 40, 22, 45, 36, 53, 3, 57 },
+     { 44, 12, 37, 28, 22, 57, 11, 38, 0, 51, 9, 41, 4, 29, 11, 47, 33, 45, 12, 26, 3, 36, 9, 63, 31, 16, 38, 44, 14, 47, 25, 61, 20, 58, 15, 47, 17, 57, 13, 36, 9, 51, 18, 29, 50, 36, 54, 20, 61, 27, 32, 13, 53, 44, 9, 27, 0, 63, 45, 2, 56, 10, 14, 43, 41, 28, 58, 11, 35, 60, 30, 41, 6, 63, 11, 51, 37, 32, 15, 10, 35, 53, 5, 61, 22, 7, 26, 59, 23, 9, 44, 48, 21, 3, 51, 32, 24, 41, 12, 61, 2, 55, 9, 15, 35, 58, 28, 15, 62, 30, 37, 23, 42, 29, 11, 17, 35, 24, 63, 20, 52, 28, 8, 55, 11, 23, 47, 19 },
+     { 0, 56, 8, 53, 14, 31, 61, 20, 55, 28, 62, 18, 35, 60, 25, 57, 7, 23, 39, 54, 47, 17, 43, 0, 40, 59, 29, 2, 56, 10, 37, 5, 43, 11, 29, 52, 1, 23, 54, 41, 59, 30, 55, 1, 62, 15, 33, 4, 43, 10, 47, 39, 1, 31, 40, 60, 49, 33, 7, 55, 26, 50, 31, 61, 8, 18, 21, 32, 44, 1, 25, 47, 18, 36, 30, 23, 59, 7, 40, 59, 27, 19, 38, 32, 44, 54, 40, 17, 38, 60, 27, 6, 35, 55, 10, 14, 44, 5, 50, 17, 38, 26, 42, 50, 18, 3, 44, 52, 2, 49, 7, 52, 15, 46, 62, 39, 55, 10, 31, 48, 3, 58, 33, 18, 61, 34, 13, 59 },
+     { 39, 27, 63, 20, 35, 41, 4, 45, 26, 5, 38, 13, 44, 2, 50, 17, 37, 52, 2, 13, 28, 58, 24, 51, 21, 8, 34, 48, 27, 42, 18, 51, 31, 56, 5, 36, 38, 44, 4, 17, 26, 11, 38, 23, 42, 8, 56, 39, 24, 51, 5, 56, 21, 59, 14, 6, 18, 42, 22, 35, 16, 37, 3, 25, 39, 46, 63, 5, 50, 17, 58, 8, 55, 3, 50, 12, 43, 17, 47, 2, 51, 9, 62, 12, 1, 35, 13, 50, 1, 37, 12, 51, 19, 29, 46, 59, 22, 58, 33, 45, 22, 60, 10, 32, 61, 39, 8, 33, 25, 36, 20, 60, 38, 4, 21, 5, 28, 45, 12, 18, 42, 11, 49, 1, 27, 40, 6, 30 },
+     { 24, 16, 42, 1, 50, 10, 48, 17, 33, 43, 24, 48, 21, 55, 31, 42, 10, 21, 63, 35, 49, 6, 33, 13, 41, 53, 10, 20, 60, 6, 53, 26, 12, 41, 22, 60, 14, 28, 63, 33, 49, 3, 45, 16, 48, 26, 14, 46, 18, 30, 35, 26, 8, 50, 29, 51, 25, 57, 12, 47, 53, 9, 62, 20, 54, 2, 36, 15, 40, 28, 33, 13, 38, 24, 46, 1, 29, 56, 33, 20, 44, 24, 41, 26, 57, 20, 63, 8, 30, 55, 5, 41, 62, 8, 34, 2, 37, 10, 19, 6, 37, 1, 53, 23, 5, 27, 58, 22, 43, 12, 50, 26, 9, 34, 54, 32, 49, 1, 59, 37, 22, 46, 25, 36, 51, 15, 54, 46 },
+     { 52, 7, 45, 33, 26, 58, 14, 60, 7, 54, 3, 58, 8, 34, 14, 5, 59, 30, 18, 44, 8, 22, 48, 62, 3, 26, 55, 38, 23, 16, 39, 1, 62, 24, 49, 9, 53, 19, 46, 7, 19, 60, 31, 58, 2, 34, 53, 7, 59, 2, 62, 42, 46, 19, 36, 11, 44, 4, 38, 28, 1, 43, 32, 51, 12, 29, 56, 22, 52, 2, 62, 49, 22, 60, 14, 35, 63, 5, 25, 57, 14, 53, 4, 46, 18, 31, 42, 22, 47, 20, 58, 31, 16, 43, 23, 54, 30, 42, 52, 57, 29, 49, 30, 13, 45, 48, 16, 55, 6, 63, 1, 44, 14, 58, 19, 47, 15, 24, 51, 34, 6, 55, 5, 63, 20, 41, 21, 9 },
+     { 30, 62, 18, 55, 5, 23, 39, 29, 49, 30, 15, 36, 28, 46, 60, 25, 39, 46, 4, 32, 61, 40, 15, 30, 36, 45, 14, 2, 49, 33, 57, 45, 18, 32, 3, 45, 30, 2, 35, 52, 40, 27, 13, 21, 38, 63, 20, 28, 37, 23, 16, 10, 13, 55, 2, 62, 21, 32, 60, 17, 58, 23, 5, 40, 16, 48, 7, 45, 10, 26, 43, 19, 6, 31, 52, 21, 39, 16, 48, 9, 37, 28, 36, 55, 7, 48, 3, 59, 15, 45, 25, 1, 53, 13, 47, 7, 62, 15, 4, 25, 12, 41, 18, 60, 38, 11, 34, 19, 39, 31, 29, 56, 23, 42, 3, 27, 60, 41, 8, 16, 61, 29, 43, 9, 32, 2, 60, 34 },
+     { 3, 38, 13, 37, 52, 44, 2, 19, 12, 42, 63, 19, 40, 1, 20, 50, 12, 55, 15, 56, 27, 1, 54, 11, 57, 18, 32, 63, 44, 4, 29, 13, 37, 61, 35, 16, 42, 57, 12, 22, 6, 55, 43, 10, 50, 5, 44, 11, 48, 52, 34, 58, 28, 41, 38, 30, 7, 52, 11, 49, 30, 14, 45, 27, 59, 34, 21, 38, 32, 58, 11, 36, 56, 42, 9, 41, 3, 54, 31, 42, 0, 60, 16, 11, 39, 24, 52, 33, 6, 36, 10, 40, 32, 60, 26, 20, 39, 28, 47, 34, 63, 8, 54, 3, 24, 56, 0, 51, 13, 47, 16, 40, 7, 35, 52, 11, 36, 4, 57, 30, 39, 13, 18, 50, 58, 28, 12, 48 },
+     { 57, 24, 49, 21, 10, 31, 61, 36, 56, 0, 22, 53, 11, 56, 32, 7, 36, 27, 41, 9, 46, 19, 34, 42, 25, 7, 50, 9, 28, 21, 54, 8, 50, 7, 27, 59, 10, 25, 48, 62, 37, 0, 33, 58, 25, 18, 32, 61, 0, 15, 45, 5, 50, 3, 23, 55, 47, 17, 40, 6, 60, 34, 53, 8, 41, 0, 61, 13, 54, 4, 46, 28, 0, 17, 48, 27, 58, 13, 23, 61, 33, 21, 50, 30, 62, 8, 14, 29, 56, 27, 61, 49, 17, 2, 44, 11, 51, 0, 59, 17, 40, 20, 32, 47, 36, 21, 42, 28, 60, 4, 54, 10, 59, 17, 30, 62, 21, 43, 26, 48, 0, 56, 36, 25, 8, 44, 39, 17 },
+     { 10, 42, 4, 59, 27, 47, 8, 23, 51, 32, 45, 6, 37, 26, 48, 43, 62, 0, 21, 53, 38, 12, 51, 5, 60, 47, 24, 37, 59, 15, 35, 47, 22, 55, 0, 50, 21, 40, 6, 29, 15, 52, 24, 8, 41, 55, 13, 29, 40, 56, 24, 31, 19, 33, 61, 15, 0, 35, 24, 42, 21, 2, 19, 57, 24, 15, 30, 50, 20, 25, 40, 16, 57, 34, 61, 8, 29, 45, 6, 49, 11, 47, 2, 44, 19, 57, 38, 50, 12, 42, 21, 4, 35, 52, 28, 56, 23, 36, 13, 45, 4, 52, 27, 14, 6, 62, 9, 45, 21, 37, 25, 46, 33, 49, 0, 44, 7, 53, 13, 19, 53, 31, 3, 47, 15, 56, 22, 51 },
+     { 35, 28, 53, 32, 1, 16, 54, 40, 9, 17, 25, 58, 14, 59, 3, 22, 16, 51, 31, 5, 23, 58, 28, 17, 35, 20, 0, 42, 11, 52, 3, 31, 41, 17, 43, 13, 32, 54, 18, 60, 32, 45, 17, 49, 2, 36, 51, 22, 7, 36, 9, 63, 48, 12, 46, 26, 43, 28, 63, 13, 48, 37, 51, 33, 5, 47, 55, 9, 42, 63, 7, 51, 24, 12, 37, 19, 55, 34, 18, 38, 15, 28, 54, 34, 5, 43, 22, 0, 48, 14, 54, 24, 58, 9, 38, 5, 32, 55, 21, 30, 49, 9, 59, 43, 30, 51, 35, 26, 7, 53, 2, 22, 14, 27, 57, 18, 38, 24, 33, 45, 10, 41, 20, 60, 37, 5, 32, 0 },
+     { 63, 19, 15, 40, 62, 35, 14, 28, 46, 61, 4, 49, 35, 10, 29, 54, 33, 8, 45, 62, 37, 1, 43, 55, 10, 52, 61, 30, 19, 40, 25, 62, 11, 38, 27, 58, 36, 3, 46, 8, 39, 4, 62, 28, 47, 20, 4, 54, 47, 27, 43, 1, 21, 38, 8, 58, 10, 54, 4, 56, 9, 26, 12, 39, 60, 27, 18, 37, 1, 31, 35, 5, 45, 50, 2, 43, 26, 1, 59, 23, 56, 40, 7, 26, 58, 17, 32, 63, 25, 39, 7, 31, 45, 19, 63, 15, 48, 8, 37, 61, 16, 34, 1, 56, 18, 3, 15, 58, 49, 32, 63, 41, 55, 5, 40, 22, 50, 6, 59, 2, 63, 23, 52, 11, 26, 61, 44, 23 },
+     { 11, 56, 46, 6, 22, 43, 58, 3, 34, 21, 38, 30, 18, 44, 52, 13, 41, 57, 17, 28, 14, 49, 25, 7, 33, 39, 26, 6, 56, 48, 1, 20, 56, 5, 46, 9, 19, 51, 30, 25, 56, 21, 35, 14, 57, 42, 16, 33, 10, 57, 17, 59, 41, 25, 53, 37, 20, 40, 30, 18, 31, 62, 44, 22, 3, 44, 11, 48, 23, 53, 18, 60, 29, 22, 62, 15, 53, 47, 10, 41, 3, 19, 52, 36, 13, 46, 10, 35, 3, 61, 41, 16, 1, 50, 26, 42, 18, 46, 2, 25, 54, 20, 39, 23, 47, 31, 41, 12, 38, 17, 8, 19, 31, 48, 12, 61, 9, 54, 29, 35, 15, 38, 6, 43, 34, 14, 7, 47 },
+     { 39, 2, 33, 26, 53, 8, 18, 50, 41, 12, 53, 1, 63, 24, 19, 39, 2, 24, 47, 10, 60, 38, 19, 63, 48, 4, 15, 45, 32, 14, 60, 36, 29, 53, 23, 63, 34, 12, 61, 1, 43, 11, 53, 30, 1, 26, 60, 45, 23, 39, 3, 29, 12, 50, 4, 16, 51, 3, 45, 36, 50, 1, 16, 54, 35, 14, 57, 30, 58, 9, 46, 14, 41, 10, 32, 38, 4, 30, 21, 51, 32, 63, 25, 1, 60, 27, 53, 18, 51, 22, 28, 55, 34, 12, 40, 3, 60, 29, 57, 41, 6, 44, 11, 53, 8, 61, 24, 57, 1, 28, 44, 59, 36, 3, 34, 25, 41, 31, 16, 44, 22, 47, 28, 58, 1, 49, 54, 29 },
+     { 58, 25, 50, 13, 38, 30, 60, 24, 6, 57, 27, 42, 9, 45, 6, 61, 30, 50, 4, 34, 29, 3, 46, 13, 22, 42, 58, 28, 9, 39, 23, 44, 7, 15, 44, 2, 40, 15, 47, 41, 23, 37, 7, 59, 38, 11, 34, 6, 62, 14, 52, 35, 55, 19, 32, 61, 33, 24, 57, 6, 22, 59, 29, 7, 49, 25, 40, 3, 17, 39, 27, 52, 0, 55, 16, 57, 24, 61, 36, 6, 29, 12, 48, 39, 20, 44, 6, 40, 33, 5, 48, 10, 57, 36, 22, 51, 33, 9, 24, 12, 62, 29, 50, 35, 14, 43, 5, 33, 47, 52, 13, 23, 10, 51, 56, 16, 46, 1, 49, 4, 61, 9, 52, 18, 31, 21, 36, 17 },
+     { 19, 42, 9, 48, 2, 44, 11, 37, 48, 20, 33, 16, 55, 35, 49, 15, 37, 20, 59, 16, 53, 22, 56, 31, 50, 11, 34, 54, 16, 51, 4, 49, 33, 53, 21, 28, 56, 24, 31, 9, 52, 16, 48, 24, 44, 13, 51, 20, 31, 49, 18, 6, 34, 2, 44, 14, 47, 8, 15, 43, 13, 41, 33, 52, 20, 61, 7, 51, 34, 62, 4, 20, 36, 33, 43, 8, 46, 13, 53, 17, 45, 42, 9, 31, 52, 11, 30, 56, 13, 59, 17, 44, 27, 6, 62, 11, 43, 17, 49, 38, 26, 2, 16, 27, 58, 21, 54, 18, 26, 5, 35, 61, 43, 27, 7, 39, 14, 58, 37, 55, 20, 33, 13, 40, 62, 10, 55, 5 },
+     { 51, 14, 61, 29, 59, 20, 55, 31, 0, 49, 11, 60, 3, 26, 22, 56, 0, 40, 12, 43, 41, 8, 36, 0, 17, 57, 24, 2, 46, 26, 61, 18, 0, 38, 12, 59, 6, 49, 3, 57, 19, 63, 5, 33, 18, 54, 28, 56, 0, 43, 26, 46, 63, 27, 56, 22, 27, 54, 38, 28, 63, 24, 10, 45, 0, 31, 42, 21, 12, 25, 44, 49, 59, 6, 26, 50, 3, 34, 27, 59, 0, 35, 62, 16, 4, 58, 47, 0, 43, 24, 37, 2, 54, 20, 46, 31, 0, 56, 34, 5, 55, 45, 60, 37, 0, 40, 10, 38, 63, 46, 15, 20, 0, 53, 21, 62, 30, 11, 24, 27, 40, 0, 57, 26, 3, 45, 27, 35 }
+};
+#endif
+
+EAPI void
+evas_common_convert_init(void)
+{
+}
+
+EAPI Gfx_Func_Convert
+evas_common_convert_func_get(DATA8 *dest, int w, int h, int depth, DATA32 rmask, DATA32 gmask, DATA32 bmask, Convert_Pal_Mode pal_mode, int rotation)
+{
+   if ((rmask == 0) && (gmask == 0) && (bmask == 0))
+     {
+       if (depth == 8)
+         {
+#ifdef BUILD_CONVERT_8_RGB_332
+            if (pal_mode == PAL_MODE_RGB332)
+              return evas_common_convert_rgba_to_8bpp_rgb_332_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_666
+            if (pal_mode == PAL_MODE_RGB666)
+              return evas_common_convert_rgba_to_8bpp_rgb_666_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_232
+            if (pal_mode == PAL_MODE_RGB232)
+              return evas_common_convert_rgba_to_8bpp_rgb_232_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_222
+            if (pal_mode == PAL_MODE_RGB222)
+              return evas_common_convert_rgba_to_8bpp_rgb_222_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_221
+            if (pal_mode == PAL_MODE_RGB221)
+              return evas_common_convert_rgba_to_8bpp_rgb_221_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_121
+            if (pal_mode == PAL_MODE_RGB121)
+              return evas_common_convert_rgba_to_8bpp_rgb_121_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_111
+            if (pal_mode == PAL_MODE_RGB111)
+              return evas_common_convert_rgba_to_8bpp_rgb_111_dith;
+#endif
+         }
+       if (depth == 1)
+         {
+         }
+       if (depth == 4)
+         {
+         }
+     }
+   else
+     {
+       if (depth == 16)
+         {
+#ifdef BUILD_CONVERT_16_RGB_565
+            if ((rmask == 0x0000f800) && (gmask == 0x000007e0) && (bmask == 0x0000001f))
+              {
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+                 if (rotation == 0)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_565_dith;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_565_dith;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+                 if (rotation == 180)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_180;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_180;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+                 if (rotation == 270)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_270;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_270;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+                 if (rotation == 90)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_90;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_90;
+                   }
+#endif
+              }
+#endif
+#ifdef BUILD_CONVERT_16_BGR_565
+            if ((rmask == 0x0000001f) && (gmask == 0x000007e0) && (bmask == 0x0000f800))
+              {
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+                 if (rotation == 0)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_bgr_565_dith;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_bgr_565_dith;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+                 if (rotation == 180)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_180;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+                 if (rotation == 270)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_270;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_270;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+                 if (rotation == 90)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_90;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_90;
+                   }
+#endif
+              }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_555
+            if ((rmask == 0x00007c00) && (gmask == 0x000003e0) && (bmask == 0x0000001f))
+              {
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+                 if (rotation == 0)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_555_dith;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_555_dith;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+                 if (rotation == 180)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_180;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_180;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+                 if (rotation == 270)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_270;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_270;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+                 if (rotation == 90)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_90;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_90;
+                   }
+#endif
+              }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_444
+            if ((rmask == 0x00000f00) && (gmask == 0x000000f0) && (bmask == 0x0000000f))
+              {
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+                 if (rotation == 0)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_444_dith;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_444_dith;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+                 if (rotation == 180)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_180;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_180;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+                 if (rotation == 270)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_270;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_270;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+                 if (rotation == 90)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_90;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_90;
+                   }
+#endif
+              }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_454645
+            if ((rmask == 0x0000f000) && (gmask == 0x00000780) && (bmask == 0x0000001e))
+              {
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+                 if (rotation == 0)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_454645_dith;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_454645_dith;
+
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+                 if (rotation == 180)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_180;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_180;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+                 if (rotation == 270)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_270;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_270;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+                 if (rotation == 270)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_90;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_90;
+                   }
+#endif
+              }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_454645
+            if ((rmask == 0x0000f800) && (gmask == 0x000007e0) && (bmask == 0x0000001f))
+              {
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+                 if (rotation == 0)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_454645_dith;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_454645_dith;
+
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+                 if (rotation == 180)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_180;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_180;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+                 if (rotation == 270)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_270;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_270;
+                   }
+#endif
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+                 if (rotation == 90)
+                   {
+                      if ((!(w & 0x1)) && (!((intptr_t)dest & 0x3)))
+                        return evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_90;
+                      else
+                        return evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_90;
+                   }
+#endif
+              }
+#endif
+         }
+       if (depth == 32)
+         {
+#ifdef BUILD_CONVERT_32_RGB_8888
+            if ((rmask == 0x00ff0000) && (gmask == 0x0000ff00) && (bmask == 0x000000ff))
+              {
+#ifdef BUILD_CONVERT_32_RGB_ROT0
+                 if (rotation == 0)
+                   return evas_common_convert_rgba_to_32bpp_rgb_8888;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT180
+                 if (rotation == 180)
+                   return evas_common_convert_rgba_to_32bpp_rgb_8888_rot_180;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT270
+                 if (rotation == 270)
+                   return evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT90
+                 if (rotation == 90)
+                   return evas_common_convert_rgba_to_32bpp_rgb_8888_rot_90;
+#endif
+              }
+#endif
+#ifdef BUILD_CONVERT_32_RGBX_8888
+            if ((rmask == 0xff000000) && (gmask == 0x00ff0000) && (bmask == 0x0000ff00))
+              {
+#ifdef BUILD_CONVERT_32_RGB_ROT0
+                 if (rotation == 0)
+                   return evas_common_convert_rgba_to_32bpp_rgbx_8888;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT180
+                 if (rotation == 180)
+                   return evas_common_convert_rgba_to_32bpp_rgbx_8888_rot_180;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT270
+                 if (rotation == 270)
+                   return evas_common_convert_rgba_to_32bpp_rgbx_8888_rot_270;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT90
+                 if (rotation == 90)
+                   return evas_common_convert_rgba_to_32bpp_rgbx_8888_rot_90;
+#endif
+              }
+#endif
+#ifdef BUILD_CONVERT_32_BGR_8888
+            if ((rmask == 0x000000ff) && (gmask == 0x0000ff00) && (bmask == 0x00ff0000))
+              {
+#ifdef BUILD_CONVERT_32_RGB_ROT0
+                 if (rotation == 0)
+                   return evas_common_convert_rgba_to_32bpp_bgr_8888;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT180
+                 if (rotation == 180)
+                   return evas_common_convert_rgba_to_32bpp_bgr_8888_rot_180;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT270
+                 if (rotation == 270)
+                   return evas_common_convert_rgba_to_32bpp_bgr_8888_rot_270;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT90
+                 if (rotation == 90)
+                   return evas_common_convert_rgba_to_32bpp_bgr_8888_rot_90;
+#endif
+              }
+#endif
+#ifdef BUILD_CONVERT_32_BGRX_8888
+            if ((rmask == 0x0000ff00) && (gmask == 0x00ff0000) && (bmask == 0xff000000))
+              {
+#ifdef BUILD_CONVERT_32_RGB_ROT0
+                 if (rotation == 0)
+                   return evas_common_convert_rgba_to_32bpp_bgrx_8888;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT180
+                 if (rotation == 180)
+                   return evas_common_convert_rgba_to_32bpp_bgrx_8888_rot_180;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT270
+                 if (rotation == 270)
+                   return evas_common_convert_rgba_to_32bpp_bgrx_8888_rot_270;
+#endif
+#ifdef BUILD_CONVERT_32_RGB_ROT90
+                 if (rotation == 90)
+                   return evas_common_convert_rgba_to_32bpp_bgrx_8888_rot_90;
+#endif
+              }
+#endif
+         }
+       if (depth == 24)
+         {
+#ifdef BUILD_CONVERT_24_RGB_888
+            if ((rmask == 0x00ff0000) && (gmask == 0x0000ff00) && (bmask == 0x000000ff))
+              {
+                 if (rotation == 0)
+                   return evas_common_convert_rgba_to_24bpp_rgb_888;
+              }
+#endif
+#ifdef BUILD_CONVERT_24_BGR_888
+            if ((rmask == 0x000000ff) && (gmask == 0x0000ff00) && (bmask == 0x00ff0000))
+              {
+                 if (rotation == 0)
+                   return evas_common_convert_rgba_to_24bpp_bgr_888;
+              }
+#endif
+         }
+       printf("depth = %i mode = %i\n", depth, pal_mode);
+       if (depth == 8)
+         {
+#ifdef BUILD_CONVERT_8_RGB_332
+            if (pal_mode == PAL_MODE_RGB332)
+              return evas_common_convert_rgba_to_8bpp_rgb_332_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_666
+            if (pal_mode == PAL_MODE_RGB666)
+              return evas_common_convert_rgba_to_8bpp_rgb_666_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_232
+            if (pal_mode == PAL_MODE_RGB232)
+              return evas_common_convert_rgba_to_8bpp_rgb_232_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_222
+            if (pal_mode == PAL_MODE_RGB222)
+              return evas_common_convert_rgba_to_8bpp_rgb_222_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_221
+            if (pal_mode == PAL_MODE_RGB221)
+              return evas_common_convert_rgba_to_8bpp_rgb_221_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_121
+            if (pal_mode == PAL_MODE_RGB121)
+              return evas_common_convert_rgba_to_8bpp_rgb_121_dith;
+#endif
+#ifdef BUILD_CONVERT_8_RGB_111
+            if (pal_mode == PAL_MODE_RGB111)
+              return evas_common_convert_rgba_to_8bpp_rgb_111_dith;
+#endif
+         }
+       if (depth == 1)
+         {
+         }
+       if (depth == 4)
+         {
+         }
+    }
+   /* no optimised converter for this... no generic one either. NULL */
+   return NULL;
+   h = 0;
+   pal_mode = 0;
+}
diff --git a/src/lib/engines/common/evas_convert_main.h b/src/lib/engines/common/evas_convert_main.h
new file mode 100644 (file)
index 0000000..fb21203
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_MAIN_H
+#define _EVAS_CONVERT_MAIN_H
+
+
+EAPI void             evas_common_convert_init          (void);
+EAPI Gfx_Func_Convert evas_common_convert_func_get      (DATA8 *dest, int w, int h, int depth, DATA32 rmask, DATA32 gmask, DATA32 bmask, Convert_Pal_Mode pal_mode, int rotation);
+
+
+#endif /* _EVAS_CONVERT_MAIN_H */
diff --git a/src/lib/engines/common/evas_convert_rgb_16.c b/src/lib/engines/common/evas_convert_rgb_16.c
new file mode 100644 (file)
index 0000000..907fab2
--- /dev/null
@@ -0,0 +1,1959 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_rgb_16.h"
+
+#ifndef BUILD_NO_DITHER_MASK
+#ifdef USE_DITHER_44
+extern const DATA8 _evas_dither_44[4][4];
+#endif
+#ifdef USE_DITHER_128128
+extern const DATA8 _evas_dither_128128[128][128];
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_565
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+void
+evas_common_convert_rgba2_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_0();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 2;
+   b1 = (B_VAL(src_ptr)) >> 3;
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
+#endif
+   CONVERT_LOOP2_INC_ROT_0();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 2;
+   b2 = (B_VAL(src_ptr)) >> 3;
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 27) | (g2 << 21) | (b2 << 16) |
+     (r1 << 11) | (g1 << 5 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 27) | (g1 << 21) | (b1 << 16) |
+     (r2 << 11) | (g2 << 5 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_0();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_565
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+void
+evas_common_convert_rgba_to_16bpp_rgb_565_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 2;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (r << 11) | (g << 5) | (b);
+
+   CONVERT_LOOP_END_ROT_0();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_565
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+void
+evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_180();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 2;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_180();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 2;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 27) | (g2 << 21) | (b2 << 16) |
+     (r1 << 11) | (g1 << 5 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 27) | (g1 << 21) | (b1 << 16) |
+     (r2 << 11) | (g2 << 5 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_180();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_565
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+void
+evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_180();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 2;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (r << 11) | (g << 5) | (b);
+
+   CONVERT_LOOP_END_ROT_180();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_565
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+void
+evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_270();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 2;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_270();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 2;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 27) | (g2 << 21) | (b2 << 16) |
+     (r1 << 11) | (g1 << 5 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 27) | (g1 << 21) | (b1 << 16) |
+     (r2 << 11) | (g2 << 5 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_270();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_565
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+void
+evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_270();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 2;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (r << 11) | (g << 5) | (b);
+
+   CONVERT_LOOP_END_ROT_270();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_565
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+void
+evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_90();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 2;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_90();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 2;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 27) | (g2 << 21) | (b2 << 16) |
+     (r1 << 11) | (g1 << 5 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 27) | (g1 << 21) | (b1 << 16) |
+     (r2 << 11) | (g2 << 5 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_90();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_565
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+void
+evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_90();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 2;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (r << 11) | (g << 5) | (b);
+
+   CONVERT_LOOP_END_ROT_90();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_BGR_565
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+void
+evas_common_convert_rgba2_to_16bpp_bgr_565_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_0();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 2;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_0();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 2;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (b2 << 27) | (g2 << 21) | (r2 << 16) |
+     (b1 << 11) | (g1 << 5 ) | (r1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (b1 << 27) | (g1 << 21) | (r1 << 16) |
+     (b2 << 11) | (g2 << 5 ) | (r2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_0();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_BGR_565
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+void
+evas_common_convert_rgba_to_16bpp_bgr_565_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 2;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (b << 11) | (g << 5) | (r);
+
+   CONVERT_LOOP_END_ROT_0();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_BGR_565
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+void
+evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_180();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 2;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_180();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 2;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (b2 << 27) | (g2 << 21) | (r2 << 16) |
+     (b1 << 11) | (g1 << 5 ) | (r1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (b1 << 27) | (g1 << 21) | (r1 << 16) |
+     (b2 << 11) | (g2 << 5 ) | (r2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_180();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_BGR_565
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+void
+evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   fprintf(stderr, "evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180\n");
+
+   CONVERT_LOOP_START_ROT_180();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 2;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (b << 11) | (g << 5) | (r);
+
+   CONVERT_LOOP_END_ROT_180();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_BGR_565
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+void
+evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_270();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 2;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_270();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 2;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (b2 << 27) | (g2 << 21) | (r2 << 16) |
+     (b1 << 11) | (g1 << 5 ) | (r1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (b1 << 27) | (g1 << 21) | (r1 << 16) |
+     (b2 << 11) | (g2 << 5 ) | (r2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_270();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_BGR_565
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+void
+evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_270();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 2;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (b << 11) | (g << 5) | (r);
+
+   CONVERT_LOOP_END_ROT_270();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_BGR_565
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+void
+evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_90();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 2;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith ) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 2)) >= dith2) && (g1 < 0x3f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith ) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_90();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 2;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith ) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 2)) >= dith2) && (g2 < 0x3f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith ) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (b2 << 27) | (g2 << 21) | (r2 << 16) |
+     (b1 << 11) | (g1 << 5 ) | (r1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (b1 << 27) | (g1 << 21) | (r1 << 16) |
+     (b2 << 11) | (g2 << 5 ) | (r2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_90();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_BGR_565
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+void
+evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith, dith2;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_90();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 2;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(6);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith ) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 2)) >= dith2) && (g < 0x3f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith ) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (b << 11) | (g << 5) | (r);
+
+   CONVERT_LOOP_END_ROT_90();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_444
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+void
+evas_common_convert_rgba2_to_16bpp_rgb_444_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_0();
+
+   r1 = (R_VAL(src_ptr)) >> 4;
+   g1 = (G_VAL(src_ptr)) >> 4;
+   b1 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_0();
+
+   r2 = (R_VAL(src_ptr)) >> 4;
+   g2 = (G_VAL(src_ptr)) >> 4;
+   b2 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 24) | (g2 << 20) | (b2 << 16) |
+     (r1 << 8 ) | (g1 << 4 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 24) | (g1 << 20) | (b1 << 16) |
+     (r2 << 8 ) | (g2 << 4 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_0();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_444
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+void
+evas_common_convert_rgba_to_16bpp_rgb_444_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   r = (R_VAL(src_ptr)) >> 4;
+   g = (G_VAL(src_ptr)) >> 4;
+   b = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
+   if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
+   if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
+#endif
+
+   *dst_ptr = (r << 8) | (g << 4) | (b);
+
+   CONVERT_LOOP_END_ROT_0();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_444
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+void
+evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_180();
+
+   r1 = (R_VAL(src_ptr)) >> 4;
+   g1 = (G_VAL(src_ptr)) >> 4;
+   b1 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_180();
+
+   r2 = (R_VAL(src_ptr)) >> 4;
+   g2 = (G_VAL(src_ptr)) >> 4;
+   b2 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 24) | (g2 << 20) | (b2 << 16) |
+     (r1 << 8 ) | (g1 << 4 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 24) | (g1 << 20) | (b1 << 16) |
+     (r2 << 8 ) | (g2 << 4 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_180();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_444
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+void
+evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_180();
+
+   r = (R_VAL(src_ptr)) >> 4;
+   g = (G_VAL(src_ptr)) >> 4;
+   b = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
+   if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
+   if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
+#endif
+
+   *dst_ptr = (r << 8) | (g << 4) | (b);
+
+   CONVERT_LOOP_END_ROT_180();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_444
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+void
+evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_270();
+
+   r1 = (R_VAL(src_ptr)) >> 4;
+   g1 = (G_VAL(src_ptr)) >> 4;
+   b1 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_270();
+
+   r2 = (R_VAL(src_ptr)) >> 4;
+   g2 = (G_VAL(src_ptr)) >> 4;
+   b2 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 24) | (g2 << 20) | (b2 << 16) |
+     (r1 << 8 ) | (g1 << 4 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 24) | (g1 << 20) | (b1 << 16) |
+     (r2 << 8 ) | (g2 << 4 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_270();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_444
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+void
+evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_270();
+
+   r = (R_VAL(src_ptr)) >> 4;
+   g = (G_VAL(src_ptr)) >> 4;
+   b = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
+   if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
+   if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
+#endif
+
+   *dst_ptr = (r << 8) | (g << 4) | (b);
+
+   CONVERT_LOOP_END_ROT_270();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_444
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+void
+evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_90();
+
+   r1 = (R_VAL(src_ptr)) >> 4;
+   g1 = (G_VAL(src_ptr)) >> 4;
+   b1 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_90();
+
+   r2 = (R_VAL(src_ptr)) >> 4;
+   g2 = (G_VAL(src_ptr)) >> 4;
+   b2 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 24) | (g2 << 20) | (b2 << 16) |
+     (r1 << 8 ) | (g1 << 4 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 24) | (g1 << 20) | (b1 << 16) |
+     (r2 << 8 ) | (g2 << 4 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_90();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_444
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+void
+evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_90();
+
+   r = (R_VAL(src_ptr)) >> 4;
+   g = (G_VAL(src_ptr)) >> 4;
+   b = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
+   if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
+   if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
+#endif
+
+   *dst_ptr = (r << 8) | (g << 4) | (b);
+
+   CONVERT_LOOP_END_ROT_90();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_454645
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+void
+evas_common_convert_rgba2_to_16bpp_rgb_454645_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_0();
+
+   r1 = (R_VAL(src_ptr)) >> 4;
+   g1 = (G_VAL(src_ptr)) >> 4;
+   b1 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_0();
+
+   r2 = (R_VAL(src_ptr)) >> 4;
+   g2 = (G_VAL(src_ptr)) >> 4;
+   b2 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 28) | (g2 << 23) | (b2 << 17) |
+     (r1 << 12) | (g1 << 7 ) | (b1 << 1 );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 28) | (g1 << 23) | (b1 << 17) |
+     (r2 << 12) | (g2 << 7 ) | (b2 << 1 );
+#endif
+
+   CONVERT_LOOP2_END_ROT_0();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_454645
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+void
+evas_common_convert_rgba_to_16bpp_rgb_454645_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   r = (R_VAL(src_ptr)) >> 4;
+   g = (G_VAL(src_ptr)) >> 4;
+   b = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
+   if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
+   if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
+#endif
+
+   *dst_ptr = (r << 12) | (g << 7) | (b << 1);
+
+   CONVERT_LOOP_END_ROT_0();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_454645
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+void
+evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_180();
+
+   r1 = (R_VAL(src_ptr)) >> 4;
+   g1 = (G_VAL(src_ptr)) >> 4;
+   b1 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_180();
+
+   r2 = (R_VAL(src_ptr)) >> 4;
+   g2 = (G_VAL(src_ptr)) >> 4;
+   b2 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 28) | (g2 << 23) | (b2 << 17) |
+     (r1 << 12) | (g1 << 7 ) | (b1 << 1 );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 28) | (g1 << 23) | (b1 << 17) |
+     (r2 << 12) | (g2 << 7 ) | (b2 << 1 );
+#endif
+
+   CONVERT_LOOP2_END_ROT_180();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_454645
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+void
+evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_180();
+
+   r = (R_VAL(src_ptr)) >> 4;
+   g = (G_VAL(src_ptr)) >> 4;
+   b = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
+   if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
+   if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
+#endif
+
+   *dst_ptr = (r << 12) | (g << 7) | (b << 1);
+
+   CONVERT_LOOP_END_ROT_180();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+
+#ifdef BUILD_CONVERT_16_RGB_454645
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+void
+evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_270();
+
+   r1 = (R_VAL(src_ptr)) >> 4;
+   g1 = (G_VAL(src_ptr)) >> 4;
+   b1 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_270();
+
+   r2 = (R_VAL(src_ptr)) >> 4;
+   g2 = (G_VAL(src_ptr)) >> 4;
+   b2 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 28) | (g2 << 23) | (b2 << 17) |
+     (r1 << 12) | (g1 << 7 ) | (b1 << 1 );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 28) | (g1 << 23) | (b1 << 17) |
+     (r2 << 12) | (g2 << 7 ) | (b2 << 1 );
+#endif
+
+   CONVERT_LOOP2_END_ROT_270();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_454645
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+void
+evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_270();
+
+   r = (R_VAL(src_ptr)) >> 4;
+   g = (G_VAL(src_ptr)) >> 4;
+   b = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
+   if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
+   if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
+#endif
+
+   *dst_ptr = (r << 12) | (g << 7) | (b << 1);
+
+   CONVERT_LOOP_END_ROT_270();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_454645
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+void
+evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_90();
+
+   r1 = (R_VAL(src_ptr)) >> 4;
+   g1 = (G_VAL(src_ptr)) >> 4;
+   b1 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r1 << 4)) >= dith ) && (r1 < 0x0f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 4)) >= dith ) && (g1 < 0x0f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 4)) >= dith ) && (b1 < 0x0f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_90();
+
+   r2 = (R_VAL(src_ptr)) >> 4;
+   g2 = (G_VAL(src_ptr)) >> 4;
+   b2 = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r2 << 4)) >= dith ) && (r2 < 0x0f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 4)) >= dith ) && (g2 < 0x0f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 4)) >= dith ) && (b2 < 0x0f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 28) | (g2 << 23) | (b2 << 17) |
+     (r1 << 12) | (g1 << 7 ) | (b1 << 1 );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 28) | (g1 << 23) | (b1 << 17) |
+     (r2 << 12) | (g2 << 7 ) | (b2 << 1 );
+#endif
+
+   CONVERT_LOOP2_END_ROT_90();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_454645
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+void
+evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_90();
+
+   r = (R_VAL(src_ptr)) >> 4;
+   g = (G_VAL(src_ptr)) >> 4;
+   b = (B_VAL(src_ptr)) >> 4;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(4);
+   if (((R_VAL(src_ptr) - (r << 4)) >= dith ) && (r < 0x0f)) r++;
+   if (((G_VAL(src_ptr) - (g << 4)) >= dith ) && (g < 0x0f)) g++;
+   if (((B_VAL(src_ptr) - (b << 4)) >= dith ) && (b < 0x0f)) b++;
+#endif
+
+   *dst_ptr = (r << 12) | (g << 7) | (b << 1);
+
+   CONVERT_LOOP_END_ROT_90();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_555
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+void
+evas_common_convert_rgba2_to_16bpp_rgb_555_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_0();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 3;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 3)) >= dith) && (g1 < 0x1f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_0();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 3;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 3)) >= dith) && (g2 < 0x1f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 26) | (g2 << 21) | (b2 << 16) |
+     (r1 << 10) | (g1 << 5 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 26) | (g1 << 21) | (b1 << 16) |
+     (r2 << 10) | (g2 << 5 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_0();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_555
+#ifdef BUILD_CONVERT_16_RGB_ROT0
+void
+evas_common_convert_rgba_to_16bpp_rgb_555_dith (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 3;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 3)) >= dith) && (g < 0x1f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (r << 10) | (g << 5) | (b);
+
+   CONVERT_LOOP_END_ROT_0();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_555
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+void
+evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_180();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 3;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 3)) >= dith) && (g1 < 0x1f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_180();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 3;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 3)) >= dith) && (g2 < 0x1f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 26) | (g2 << 21) | (b2 << 16) |
+     (r1 << 10) | (g1 << 5 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 26) | (g1 << 21) | (b1 << 16) |
+     (r2 << 10) | (g2 << 5 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_180();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_555
+#ifdef BUILD_CONVERT_16_RGB_ROT180
+void
+evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_180();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 3;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 3)) >= dith) && (g < 0x1f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (r << 10) | (g << 5) | (b);
+
+   CONVERT_LOOP_END_ROT_180();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_555
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+void
+evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_270();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 3;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 3)) >= dith) && (g1 < 0x1f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_270();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 3;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 3)) >= dith) && (g2 < 0x1f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 26) | (g2 << 21) | (b2 << 16) |
+     (r1 << 10) | (g1 << 5 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 26) | (g1 << 21) | (b1 << 16) |
+     (r2 << 10) | (g2 << 5 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_270();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_555
+#ifdef BUILD_CONVERT_16_RGB_ROT270
+void
+evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_270();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 3;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 3)) >= dith) && (g < 0x1f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (r << 10) | (g << 5) | (b);
+
+   CONVERT_LOOP_END_ROT_270();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_555
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+void
+evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r1, g1, b1;
+   DATA8 r2, g2, b2;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP2_START_ROT_90();
+
+   r1 = (R_VAL(src_ptr)) >> 3;
+   g1 = (G_VAL(src_ptr)) >> 3;
+   b1 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r1 << 3)) >= dith) && (r1 < 0x1f)) r1++;
+   if (((G_VAL(src_ptr) - (g1 << 3)) >= dith) && (g1 < 0x1f)) g1++;
+   if (((B_VAL(src_ptr) - (b1 << 3)) >= dith) && (b1 < 0x1f)) b1++;
+#endif
+
+   CONVERT_LOOP2_INC_ROT_90();
+
+   r2 = (R_VAL(src_ptr)) >> 3;
+   g2 = (G_VAL(src_ptr)) >> 3;
+   b2 = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r2 << 3)) >= dith) && (r2 < 0x1f)) r2++;
+   if (((G_VAL(src_ptr) - (g2 << 3)) >= dith) && (g2 < 0x1f)) g2++;
+   if (((B_VAL(src_ptr) - (b2 << 3)) >= dith) && (b2 < 0x1f)) b2++;
+#endif
+
+#ifndef WORDS_BIGENDIAN
+   *((DATA32 *)dst_ptr) =
+     (r2 << 26) | (g2 << 21) | (b2 << 16) |
+     (r1 << 10) | (g1 << 5 ) | (b1      );
+#else
+   *((DATA32 *)dst_ptr) =
+     (r1 << 26) | (g1 << 21) | (b1 << 16) |
+     (r2 << 10) | (g2 << 5 ) | (b2      );
+#endif
+
+   CONVERT_LOOP2_END_ROT_90();
+   return;
+   pal = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_16_RGB_555
+#ifdef BUILD_CONVERT_16_RGB_ROT90
+void
+evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA16 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+#ifndef BUILD_NO_DITHER_MASK
+   DATA8 dith;
+#endif
+
+   dst_ptr = (DATA16 *)dst;
+
+   CONVERT_LOOP_START_ROT_90();
+
+   r = (R_VAL(src_ptr)) >> 3;
+   g = (G_VAL(src_ptr)) >> 3;
+   b = (B_VAL(src_ptr)) >> 3;
+
+#ifndef BUILD_NO_DITHER_MASK
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(5);
+   if (((R_VAL(src_ptr) - (r << 3)) >= dith) && (r < 0x1f)) r++;
+   if (((G_VAL(src_ptr) - (g << 3)) >= dith) && (g < 0x1f)) g++;
+   if (((B_VAL(src_ptr) - (b << 3)) >= dith) && (b < 0x1f)) b++;
+#endif
+
+   *dst_ptr = (r << 10) | (g << 5) | (b);
+
+   CONVERT_LOOP_END_ROT_90();
+   return;
+   pal = 0;
+}
+#endif
+#endif
diff --git a/src/lib/engines/common/evas_convert_rgb_16.h b/src/lib/engines/common/evas_convert_rgb_16.h
new file mode 100644 (file)
index 0000000..fd1e570
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_RGB_16_H
+#define _EVAS_CONVERT_RGB_16_H
+
+
+void evas_common_convert_rgba2_to_16bpp_rgb_565_dith            (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_565_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_bgr_565_dith            (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_bgr_565_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_444_dith            (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_444_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_454645_dith         (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_454645_dith          (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_555_dith            (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_555_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+void evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_180    (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_180     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_180    (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_180     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_180    (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_180     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_180  (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_180    (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_180     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+void evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_270    (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_270     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_270    (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_270     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_270    (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_270     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_270  (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_270    (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_270     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+void evas_common_convert_rgba2_to_16bpp_rgb_565_dith_rot_90     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_565_dith_rot_90      (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_bgr_565_dith_rot_90     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_bgr_565_dith_rot_90      (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_444_dith_rot_90     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_444_dith_rot_90      (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_454645_dith_rot_90  (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_454645_dith_rot_90   (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba2_to_16bpp_rgb_555_dith_rot_90     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_16bpp_rgb_555_dith_rot_90      (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+
+#endif /* _EVAS_CONVERT_RGB_16_H */
diff --git a/src/lib/engines/common/evas_convert_rgb_24.c b/src/lib/engines/common/evas_convert_rgb_24.c
new file mode 100644 (file)
index 0000000..ffb3ff8
--- /dev/null
@@ -0,0 +1,67 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_rgb_24.h"
+
+#ifdef BUILD_CONVERT_24_RGB_888
+void
+evas_common_convert_rgba_to_24bpp_rgb_888(DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA8 *)dst;
+   src_ptr = (DATA32 *)src;
+
+   for (y = 0; y < h; y++)
+     {
+       for (x = 0; x < w; x++)
+         {
+            dst_ptr[0] = R_VAL(src_ptr);
+            dst_ptr[1] = G_VAL(src_ptr);
+            dst_ptr[2] = B_VAL(src_ptr);
+            src_ptr++;
+            dst_ptr+=3;
+         }
+       src_ptr += src_jump;
+       dst_ptr += (dst_jump * 3);
+     }
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#ifdef BUILD_CONVERT_24_BGR_888
+void
+evas_common_convert_rgba_to_24bpp_bgr_888(DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA8 *)dst;
+   src_ptr = (DATA32 *)src;
+
+   for (y = 0; y < h; y++)
+     {
+       for (x = 0; x < w; x++)
+         {
+            dst_ptr[2] = R_VAL(src_ptr);
+            dst_ptr[1] = G_VAL(src_ptr);
+            dst_ptr[0] = B_VAL(src_ptr);
+            src_ptr++;
+            dst_ptr+=3;
+         }
+       src_ptr += src_jump;
+       dst_ptr += (dst_jump * 3);
+     }
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
diff --git a/src/lib/engines/common/evas_convert_rgb_24.h b/src/lib/engines/common/evas_convert_rgb_24.h
new file mode 100644 (file)
index 0000000..53fe088
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_RGB_24_H
+#define _EVAS_CONVERT_RGB_24_H
+
+
+void evas_common_convert_rgba_to_24bpp_rgb_888                 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_24bpp_bgr_888                 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+
+#endif /* _EVAS_CONVERT_RGB_24_H */
diff --git a/src/lib/engines/common/evas_convert_rgb_32.c b/src/lib/engines/common/evas_convert_rgb_32.c
new file mode 100644 (file)
index 0000000..9d03a31
--- /dev/null
@@ -0,0 +1,399 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_rgb_32.h"
+
+#ifdef BUILD_CONVERT_32_RGB_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT0
+void
+evas_common_convert_rgba_to_32bpp_rgb_8888 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int y;
+   Gfx_Func_Copy func;
+
+   dst_ptr = (DATA32 *)dst;
+   src_ptr = src;
+
+   func = evas_common_draw_func_copy_get(w, 0);
+
+   for (y = 0; y < h; y++)
+     {
+       func(src_ptr, dst_ptr, w);
+       src_ptr += w + src_jump;
+       dst_ptr += w + dst_jump;
+     }
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_RGB_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT180
+void
+evas_common_convert_rgba_to_32bpp_rgb_8888_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_180();
+
+   *dst_ptr = *src_ptr;
+
+   CONVERT_LOOP_END_ROT_180();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_RGB_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT270
+void
+evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_270();
+
+   *dst_ptr = *src_ptr;
+
+   CONVERT_LOOP_END_ROT_270();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_RGB_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT90
+void
+evas_common_convert_rgba_to_32bpp_rgb_8888_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_90();
+
+   *dst_ptr = *src_ptr;
+
+   CONVERT_LOOP_END_ROT_90();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_RGBX_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT0
+void
+evas_common_convert_rgba_to_32bpp_rgbx_8888 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+//   *dst_ptr = (R_VAL(src_ptr) << 24) | (G_VAL(src_ptr) << 16) | (B_VAL(src_ptr) << 8);
+   *dst_ptr = (*src_ptr << 8);
+
+   CONVERT_LOOP_END_ROT_0();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_RGBX_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT180
+void
+evas_common_convert_rgba_to_32bpp_rgbx_8888_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_180();
+
+//   *dst_ptr = (R_VAL(src_ptr) << 24) | (G_VAL(src_ptr) << 16) | (B_VAL(src_ptr) << 8);
+   *dst_ptr = (*src_ptr << 8);
+
+   CONVERT_LOOP_END_ROT_180();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_RGBX_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT270
+void
+evas_common_convert_rgba_to_32bpp_rgbx_8888_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_270();
+
+//   *dst_ptr = (R_VAL(src_ptr) << 24) | (G_VAL(src_ptr) << 16) | (B_VAL(src_ptr) << 8);
+   *dst_ptr = (*src_ptr << 8);
+
+   CONVERT_LOOP_END_ROT_270();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_RGBX_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT90
+void
+evas_common_convert_rgba_to_32bpp_rgbx_8888_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_90();
+
+//   *dst_ptr = (R_VAL(src_ptr) << 24) | (G_VAL(src_ptr) << 16) | (B_VAL(src_ptr) << 8);
+   *dst_ptr = (*src_ptr << 8);
+
+   CONVERT_LOOP_END_ROT_90();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_BGR_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT0
+void
+evas_common_convert_rgba_to_32bpp_bgr_8888 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   *dst_ptr = (B_VAL(src_ptr) << 16) | (G_VAL(src_ptr) << 8) | (R_VAL(src_ptr));
+
+   CONVERT_LOOP_END_ROT_0();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_BGR_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT180
+void
+evas_common_convert_rgba_to_32bpp_bgr_8888_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_180();
+
+   *dst_ptr = (B_VAL(src_ptr) << 16) | (G_VAL(src_ptr) << 8) | (R_VAL(src_ptr));
+
+   CONVERT_LOOP_END_ROT_180();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_BGR_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT270
+void
+evas_common_convert_rgba_to_32bpp_bgr_8888_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_270();
+
+   *dst_ptr = (B_VAL(src_ptr) << 16) | (G_VAL(src_ptr) << 8) | (R_VAL(src_ptr));
+
+   CONVERT_LOOP_END_ROT_270();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_BGR_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT90
+void
+evas_common_convert_rgba_to_32bpp_bgr_8888_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_90();
+
+   *dst_ptr = (B_VAL(src_ptr) << 16) | (G_VAL(src_ptr) << 8) | (R_VAL(src_ptr));
+
+   CONVERT_LOOP_END_ROT_90();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_BGRX_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT0
+void
+evas_common_convert_rgba_to_32bpp_bgrx_8888 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   *dst_ptr = (B_VAL(src_ptr) << 24) | (G_VAL(src_ptr) << 16) | (R_VAL(src_ptr) << 8);
+
+   CONVERT_LOOP_END_ROT_0();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_BGRX_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT180
+void
+evas_common_convert_rgba_to_32bpp_bgrx_8888_rot_180 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_180();
+
+   *dst_ptr = (B_VAL(src_ptr) << 24) | (G_VAL(src_ptr) << 16) | (R_VAL(src_ptr) << 8);
+
+   CONVERT_LOOP_END_ROT_180();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_BGRX_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT270
+void
+evas_common_convert_rgba_to_32bpp_bgrx_8888_rot_270 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_270();
+
+   *dst_ptr = (B_VAL(src_ptr) << 24) | (G_VAL(src_ptr) << 16) | (R_VAL(src_ptr) << 8);
+
+   CONVERT_LOOP_END_ROT_270();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
+
+#ifdef BUILD_CONVERT_32_BGRX_8888
+#ifdef BUILD_CONVERT_32_RGB_ROT90
+void
+evas_common_convert_rgba_to_32bpp_bgrx_8888_rot_90 (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA32 *dst_ptr;
+   int x, y;
+
+   dst_ptr = (DATA32 *)dst;
+
+   CONVERT_LOOP_START_ROT_90();
+
+   *dst_ptr = (B_VAL(src_ptr) << 24) | (G_VAL(src_ptr) << 16) | (R_VAL(src_ptr) << 8);
+
+   CONVERT_LOOP_END_ROT_90();
+   return;
+   pal = 0;
+   dith_x = 0;
+   dith_y = 0;
+}
+#endif
+#endif
diff --git a/src/lib/engines/common/evas_convert_rgb_32.h b/src/lib/engines/common/evas_convert_rgb_32.h
new file mode 100644 (file)
index 0000000..7adb9b2
--- /dev/null
@@ -0,0 +1,27 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_RGB_32_H
+#define _EVAS_CONVERT_RGB_32_H
+
+
+void evas_common_convert_rgba_to_32bpp_rgb_8888                (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_rgb_8888_rot_180        (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_rgb_8888_rot_270        (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_rgb_8888_rot_90         (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_rgbx_8888               (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_rgbx_8888_rot_180       (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_rgbx_8888_rot_270       (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_rgbx_8888_rot_90        (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_bgr_8888                (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_bgr_8888_rot_180        (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_bgr_8888_rot_270        (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_bgr_8888_rot_90         (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_bgrx_8888               (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_bgrx_8888_rot_180       (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_bgrx_8888_rot_270       (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_32bpp_bgrx_8888_rot_90        (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+
+#endif /* _EVAS_CONVERT_RGB_32_H */
diff --git a/src/lib/engines/common/evas_convert_rgb_8.c b/src/lib/engines/common/evas_convert_rgb_8.c
new file mode 100644 (file)
index 0000000..c2f08fb
--- /dev/null
@@ -0,0 +1,252 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_rgb_8.h"
+
+#ifdef USE_DITHER_44
+extern const DATA8 _evas_dither_44[4][4];
+#endif
+#ifdef USE_DITHER_128128
+extern const DATA8 _evas_dither_128128[128][128];
+#endif
+
+#ifdef BUILD_CONVERT_8_RGB_332
+void evas_common_convert_rgba_to_8bpp_rgb_332_dith     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+   DATA8 dith, dith2;
+
+   dst_ptr = (DATA8 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(3);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(2);
+/*   r = (R_VAL(src_ptr)) >> (8 - 3);*/
+/*   g = (G_VAL(src_ptr)) >> (8 - 3);*/
+/*   b = (B_VAL(src_ptr)) >> (8 - 2);*/
+/*   if (((R_VAL(src_ptr) - (r << (8 - 3))) >= dith ) && (r < 0x07)) r++;*/
+/*   if (((G_VAL(src_ptr) - (g << (8 - 3))) >= dith ) && (g < 0x07)) g++;*/
+/*   if (((B_VAL(src_ptr) - (b << (8 - 2))) >= dith2) && (b < 0x03)) b++;*/
+   r = (R_VAL(src_ptr)) * 7 / 255;
+   if (((R_VAL(src_ptr) - (r * 255 / 7)) >= dith ) && (r < 0x07)) r++;
+   g = (G_VAL(src_ptr)) * 7 / 255;
+   if (((G_VAL(src_ptr) - (g * 255 / 7)) >= dith ) && (g < 0x07)) g++;
+   b = (B_VAL(src_ptr)) * 3 / 255;
+   if (((B_VAL(src_ptr) - (b * 255 / 3)) >= dith2) && (b < 0x03)) b++;
+
+   *dst_ptr = pal[(r << 5) | (g << 2) | (b)];
+
+   CONVERT_LOOP_END_ROT_0();
+}
+#endif
+#ifdef BUILD_CONVERT_8_RGB_666
+static DATA8 p_to_6[256];
+static DATA8 p_to_6_err[256];
+
+void evas_common_convert_rgba_to_8bpp_rgb_666_dith     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+   DATA8 dith;
+   static int tables_calcualted = 0;
+
+   if (!tables_calcualted)
+     {
+       int i;
+
+       tables_calcualted = 1;
+       for (i = 0; i < 256; i++)
+         p_to_6[i] = (i * 5) / 255;
+       for (i = 0; i < 256; i++)
+         p_to_6_err[i] = ((i * 5) - (p_to_6[i] * 255)) * DM_DIV / 255;
+     }
+   dst_ptr = (DATA8 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   r = p_to_6[(R_VAL(src_ptr))];
+   g = p_to_6[(G_VAL(src_ptr))];
+   b = p_to_6[(B_VAL(src_ptr))];
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK];
+   if ((p_to_6_err[(R_VAL(src_ptr))] >= dith ) && (r < 5)) r++;
+   if ((p_to_6_err[(G_VAL(src_ptr))] >= dith ) && (g < 5)) g++;
+   if ((p_to_6_err[(B_VAL(src_ptr))] >= dith ) && (b < 5)) b++;
+
+   *dst_ptr = pal[(r * 36) + (g * 6) + (b)];
+
+   CONVERT_LOOP_END_ROT_0();
+}
+#endif
+#ifdef BUILD_CONVERT_8_RGB_232
+void evas_common_convert_rgba_to_8bpp_rgb_232_dith     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+   DATA8 dith, dith2;
+
+   dst_ptr = (DATA8 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(3);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(2);
+/*   r = (R_VAL(src_ptr)) >> (8 - 2);*/
+/*   g = (G_VAL(src_ptr)) >> (8 - 3);*/
+/*   b = (B_VAL(src_ptr)) >> (8 - 2);*/
+/*   if (((R_VAL(src_ptr) - (r << (8 - 2))) >= dith2) && (r < 0x03)) r++;*/
+/*   if (((G_VAL(src_ptr) - (g << (8 - 3))) >= dith ) && (g < 0x07)) g++;*/
+/*   if (((B_VAL(src_ptr) - (b << (8 - 2))) >= dith2) && (b < 0x03)) b++;*/
+   r = (R_VAL(src_ptr)) * 3 / 255;
+   if (((R_VAL(src_ptr) - (r * 255 / 3)) >= dith2) && (r < 0x03)) r++;
+   g = (G_VAL(src_ptr)) * 7 / 255;
+   if (((G_VAL(src_ptr) - (g * 255 / 7)) >= dith ) && (g < 0x07)) g++;
+   b = (B_VAL(src_ptr)) * 3 / 255;
+   if (((B_VAL(src_ptr) - (b * 255 / 3)) >= dith2) && (b < 0x03)) b++;
+
+   *dst_ptr = pal[(r << 5) | (g << 2) | (b)];
+
+   CONVERT_LOOP_END_ROT_0();
+}
+#endif
+#ifdef BUILD_CONVERT_8_RGB_222
+void evas_common_convert_rgba_to_8bpp_rgb_222_dith     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+   DATA8 dith;
+
+   dst_ptr = (DATA8 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(2);
+/*   r = (R_VAL(src_ptr)) >> (8 - 2);*/
+/*   g = (G_VAL(src_ptr)) >> (8 - 2);*/
+/*   b = (B_VAL(src_ptr)) >> (8 - 2);*/
+/*   if (((R_VAL(src_ptr) - (r << (8 - 2))) >= dith ) && (r < 0x03)) r++;*/
+/*   if (((G_VAL(src_ptr) - (g << (8 - 2))) >= dith ) && (g < 0x03)) g++;*/
+/*   if (((B_VAL(src_ptr) - (b << (8 - 2))) >= dith ) && (b < 0x03)) b++;*/
+   r = (R_VAL(src_ptr)) * 3 / 255;
+   if (((R_VAL(src_ptr) - (r * 255 / 3)) >= dith ) && (r < 0x03)) r++;
+   g = (G_VAL(src_ptr)) * 3 / 255;
+   if (((G_VAL(src_ptr) - (g * 255 / 3)) >= dith ) && (g < 0x03)) g++;
+   b = (B_VAL(src_ptr)) * 3 / 255;
+   if (((B_VAL(src_ptr) - (b * 255 / 3)) >= dith ) && (b < 0x03)) b++;
+
+   *dst_ptr = pal[(r << 4) | (g << 2) | (b)];
+
+   CONVERT_LOOP_END_ROT_0();
+}
+#endif
+#ifdef BUILD_CONVERT_8_RGB_221
+void evas_common_convert_rgba_to_8bpp_rgb_221_dith     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+   DATA8 dith, dith2;
+
+   dst_ptr = (DATA8 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(2);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(1);
+/*   r = (R_VAL(src_ptr)) >> (8 - 2);*/
+/*   g = (G_VAL(src_ptr)) >> (8 - 2);*/
+/*   b = (B_VAL(src_ptr)) >> (8 - 1);*/
+/*   if (((R_VAL(src_ptr) - (r << (8 - 2))) >= dith ) && (r < 0x03)) r++;*/
+/*   if (((G_VAL(src_ptr) - (g << (8 - 2))) >= dith ) && (g < 0x03)) g++;*/
+/*   if (((B_VAL(src_ptr) - (b << (8 - 1))) >= dith2) && (b < 0x01)) b++;*/
+   r = (R_VAL(src_ptr)) * 3 / 255;
+   if (((R_VAL(src_ptr) - (r * 255 / 3)) >= dith ) && (r < 0x03)) r++;
+   g = (G_VAL(src_ptr)) * 3 / 255;
+   if (((G_VAL(src_ptr) - (g * 255 / 3)) >= dith ) && (g < 0x03)) g++;
+   b = (B_VAL(src_ptr)) * 1 / 255;
+   if (((B_VAL(src_ptr) - (b * 255 / 1)) >= dith2) && (b < 0x01)) b++;
+
+   *dst_ptr = pal[(r << 3) | (g << 1) | (b)];
+
+   CONVERT_LOOP_END_ROT_0();
+}
+#endif
+#ifdef BUILD_CONVERT_8_RGB_121
+void evas_common_convert_rgba_to_8bpp_rgb_121_dith     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+   DATA8 dith, dith2;
+
+   dst_ptr = (DATA8 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(2);
+   dith2 = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(1);
+/*   r = (R_VAL(src_ptr)) >> (8 - 1);*/
+/*   g = (G_VAL(src_ptr)) >> (8 - 2);*/
+/*   b = (B_VAL(src_ptr)) >> (8 - 1);*/
+/*   if (((R_VAL(src_ptr) - (r << (8 - 1))) >= dith2) && (r < 0x01)) r++;*/
+/*   if (((G_VAL(src_ptr) - (g << (8 - 2))) >= dith ) && (g < 0x03)) g++;*/
+/*   if (((B_VAL(src_ptr) - (b << (8 - 1))) >= dith2) && (b < 0x01)) b++;*/
+
+   r = (R_VAL(src_ptr)) * 1 / 255;
+   if (((R_VAL(src_ptr) - (r * 255 / 1)) >= dith2) && (r < 0x01)) r++;
+   g = (G_VAL(src_ptr)) * 3 / 255;
+   if (((G_VAL(src_ptr) - (g * 255 / 3)) >= dith ) && (g < 0x03)) g++;
+   b = (B_VAL(src_ptr)) * 1 / 255;
+   if (((B_VAL(src_ptr) - (b * 255 / 1)) >= dith2) && (b < 0x01)) b++;
+
+   *dst_ptr = pal[(r << 3) | (g << 1) | (b)];
+
+   CONVERT_LOOP_END_ROT_0();
+}
+#endif
+#ifdef BUILD_CONVERT_8_RGB_111
+void evas_common_convert_rgba_to_8bpp_rgb_111_dith     (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal)
+{
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int x, y;
+   DATA8 r, g, b;
+   DATA8 dith;
+
+   dst_ptr = (DATA8 *)dst;
+
+   CONVERT_LOOP_START_ROT_0();
+
+   dith = DM_TABLE[(x + dith_x) & DM_MSK][(y + dith_y) & DM_MSK] >> DM_SHF(1);
+/*   r = (R_VAL(src_ptr)) >> (8 - 1);*/
+/*   g = (G_VAL(src_ptr)) >> (8 - 1);*/
+/*   b = (B_VAL(src_ptr)) >> (8 - 1);*/
+/*   if (((R_VAL(src_ptr) - (r << (8 - 1))) >= dith ) && (r < 0x01)) r++;*/
+/*   if (((G_VAL(src_ptr) - (g << (8 - 1))) >= dith ) && (g < 0x01)) g++;*/
+/*   if (((B_VAL(src_ptr) - (b << (8 - 1))) >= dith ) && (b < 0x01)) b++;*/
+
+   r = (R_VAL(src_ptr)) * 1 / 255;
+   if (((R_VAL(src_ptr) - (r * 255 / 1)) >= dith ) && (r < 0x01)) r++;
+   g = (G_VAL(src_ptr)) * 1 / 255;
+   if (((G_VAL(src_ptr) - (g * 255 / 1)) >= dith ) && (g < 0x01)) g++;
+   b = (B_VAL(src_ptr)) * 1 / 255;
+   if (((B_VAL(src_ptr) - (b * 255 / 1)) >= dith ) && (b < 0x01)) b++;
+
+   *dst_ptr = pal[(r << 2) | (g << 1) | (b)];
+
+   CONVERT_LOOP_END_ROT_0();
+}
+#endif
diff --git a/src/lib/engines/common/evas_convert_rgb_8.h b/src/lib/engines/common/evas_convert_rgb_8.h
new file mode 100644 (file)
index 0000000..b7f85b0
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_RGB_8_H
+#define _EVAS_CONVERT_RGB_8_H
+
+
+void evas_common_convert_rgba_to_8bpp_rgb_332_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_8bpp_rgb_666_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_8bpp_rgb_232_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_8bpp_rgb_222_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_8bpp_rgb_221_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_8bpp_rgb_121_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+void evas_common_convert_rgba_to_8bpp_rgb_111_dith             (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+
+#endif /* _EVAS_CONVERT_RGB_8_H */
diff --git a/src/lib/engines/common/evas_convert_yuv.c b/src/lib/engines/common/evas_convert_yuv.c
new file mode 100644 (file)
index 0000000..ebd019b
--- /dev/null
@@ -0,0 +1,978 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_yuv.h"
+
+#if defined BUILD_MMX || defined BUILD_SSE
+# include "evas_mmx.h"
+#endif
+
+#if defined HAVE_ALTIVEC_H
+# include <altivec.h>
+#ifdef CONFIG_DARWIN
+#define AVV(x...) (x)
+#else
+#define AVV(x...) {x}
+#endif
+
+#endif
+
+#ifdef BUILD_CONVERT_YUV
+
+static void _evas_yuv_init         (void);
+static void _evas_yv12torgb_sse    (unsigned char **yuv, unsigned char *rgb, int w, int h);
+static void _evas_yv12torgb_mmx    (unsigned char **yuv, unsigned char *rgb, int w, int h);
+static void _evas_yv12torgb_altivec(unsigned char **yuv, unsigned char *rgb, int w, int h);
+static void _evas_yv12torgb_raster (unsigned char **yuv, unsigned char *rgb, int w, int h);
+static void _evas_yv12torgb_diz    (unsigned char **yuv, unsigned char *rgb, int w, int h);
+
+#define CRV    104595
+#define CBU    132251
+#define CGU    25624
+#define CGV    53280
+#define YMUL   76283
+#define OFF    32768
+#define BITRES 16
+
+/* calculation float resolution in bits */
+/* ie RES = 6 is 10.6 fixed point */
+/*    RES = 8 is 8.8 fixed point */
+/*    RES = 4 is 12.4 fixed point */
+/* NB: going above 6 will lead to overflow... :( */
+#define RES    6
+
+#define RZ(i)  (i >> (BITRES - RES))
+#define FOUR(i) {i, i, i, i}
+
+#if defined BUILD_MMX || defined BUILD_SSE
+__attribute__ ((aligned (8))) const volatile unsigned short _const_crvcrv[4] = FOUR(RZ(CRV));
+__attribute__ ((aligned (8))) const volatile unsigned short _const_cbucbu[4] = FOUR(RZ(CBU));
+__attribute__ ((aligned (8))) const volatile unsigned short _const_cgucgu[4] = FOUR(RZ(CGU));
+__attribute__ ((aligned (8))) const volatile unsigned short _const_cgvcgv[4] = FOUR(RZ(CGV));
+__attribute__ ((aligned (8))) const volatile unsigned short _const_ymul  [4] = FOUR(RZ(YMUL));
+__attribute__ ((aligned (8))) const volatile unsigned short _const_128   [4] = FOUR(128);
+__attribute__ ((aligned (8))) const volatile unsigned short _const_32    [4] = FOUR(RZ(OFF));
+__attribute__ ((aligned (8))) const volatile unsigned short _const_16    [4] = FOUR(16);
+__attribute__ ((aligned (8))) const volatile unsigned short _const_ff    [4] = FOUR(-1);
+
+#define CONST_CRVCRV *_const_crvcrv
+#define CONST_CBUCBU *_const_cbucbu
+#define CONST_CGUCGU *_const_cgucgu
+#define CONST_CGVCGV *_const_cgvcgv
+#define CONST_YMUL   *_const_ymul
+#define CONST_128    *_const_128
+#define CONST_32     *_const_32
+#define CONST_16     *_const_16
+#define CONST_FF     *_const_ff
+
+/* for C non aligned cleanup */
+const int _crv = RZ(CRV);   /* 1.596 */
+const int _cbu = RZ(CBU);   /* 2.018 */
+const int _cgu = RZ(CGU);   /* 0.391 */
+const int _cgv = RZ(CGV);   /* 0.813 */
+
+#endif
+
+#ifdef BUILD_ALTIVEC
+#ifdef __VEC__
+const vector unsigned short res     = AVV(RES);
+const vector signed short crv       = AVV(RZ(CRV));
+const vector signed short cbu       = AVV(RZ(CBU));
+const vector signed short cgu       = AVV(RZ(CGU));
+const vector signed short cgv       = AVV(RZ(CGV));
+const vector signed short ymul      = AVV(RZ(YMUL));
+const vector signed short c128      = AVV(128);
+const vector signed short c32       = AVV(RZ(OFF));
+const vector signed short c16       = AVV(16);
+const vector unsigned char zero     = AVV(0);
+const vector signed short maxchar   = AVV(255);
+const vector unsigned char pickrg1  = AVV(0, 0x1, 0x11, 0,
+                                         0, 0x3, 0x13, 0,
+                                         0, 0x5, 0x15, 0,
+                                         0, 0x7, 0x17, 0);
+const vector unsigned char pickrg2  = AVV(0, 0x9, 0x19, 0,
+                                         0, 0xb, 0x1b, 0,
+                                         0, 0xd, 0x1d, 0,
+                                         0, 0xf, 0x1f, 0);
+const vector unsigned char pickrgb1 = AVV(0x3, 0x1, 0x2, 0x11,
+                                         0x7, 0x5, 0x6, 0x13,
+                                         0xb, 0x9, 0xa, 0x15,
+                                         0xf, 0xd, 0xe, 0x17);
+const vector unsigned char pickrgb2 = AVV(0x3, 0x1, 0x2, 0x19,
+                                         0x7, 0x5, 0x6, 0x1b,
+                                         0xb, 0x9, 0xa, 0x1d,
+                                         0xf, 0xd, 0xe, 0x1f);
+#endif
+#endif
+
+#ifdef BUILD_C
+
+/* shortcut speedup lookup-tables */
+static short _v1164[256];
+static short _v1596[256];
+static short _v813[256];
+static short _v391[256];
+static short _v2018[256];
+
+static unsigned char _clip_lut[1024];
+#define LUT_CLIP(i) ((_clip_lut+384)[(i)])
+
+#define CMP_CLIP(i) ((i&256)? (~(i>>10)) : i);
+
+#endif
+
+void
+evas_common_convert_yuv_420p_601_rgba(DATA8 **src, DATA8 *dst, int w, int h)
+{
+   int mmx, sse, sse2;
+
+#if defined BUILD_MMX || defined BUILD_SSE
+   evas_common_cpu_can_do(&mmx, &sse, &sse2);
+#endif
+#ifndef BUILD_SSE
+   sse = 0;
+   sse2 = 0;
+#endif
+#ifndef BUILD_MMX
+   mmx = 0;
+#endif
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX2))
+     _evas_yv12torgb_sse(src, dst, w, h);
+   else if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     _evas_yv12torgb_mmx(src, dst, w, h);
+#ifdef BUILD_ALTIVEC
+   if (evas_common_cpu_has_feature(CPU_FEATURE_ALTIVEC))
+     _evas_yv12torgb_altivec(src, dst, w, h);
+#endif
+   else
+     {
+#ifdef BUILD_C
+       static int initted = 0;
+
+       if (!initted) _evas_yuv_init();
+       initted = 1;
+       /* FIXME: diz may be faster sometimes */
+       _evas_yv12torgb_raster(src, dst, w, h);
+#endif
+     }
+}
+
+/* Thanks to Diz for this code. i've munged it a little and turned it into */
+/* inline macros. I tried beating it with a different algorithm using MMX */
+/* but failed. So here we are. This is the fastest YUV->RGB i know of for */
+/* x86. It has an issue that it doesnt convert colours accurately so the */
+/* image looks a little "yellowy". This is a result of only 10.6 fixed point */
+/* resolution as opposed to 16.16 in the C code. This could be fixed by */
+/* processing half the number of pixels per cycle and going up to 32bits */
+/* per element during compute, but it would all but negate the speedup */
+/* from mmx I think :( It might be possible to use SSE and SSE2 here, but */
+/* I haven't tried yet. Let's see. */
+
+/* NB: XviD has almost the same code in it's assembly YV12->RGB code. same */
+/* algorithm, same constants, same all over actually, except it actually */
+/* does a few extra memory accesses that this one doesn't, so in theory */
+/* this code should be faster. In the end it's all just an mmx version of */
+/* the reference implimentation done with fixed point math */
+
+static void
+_evas_yv12torgb_sse(unsigned char **yuv, unsigned char *rgb, int w, int h)
+{
+#ifdef BUILD_SSE
+   int xx, yy;
+   register unsigned char *yp1, *up, *vp;
+   unsigned char *dp1;
+
+   /* destination pointers */
+   dp1 = rgb;
+
+   for (yy = 0; yy < h; yy++)
+     {
+       /* plane pointers */
+       yp1 = yuv[yy];
+       up = yuv[h + (yy / 2)];
+       vp = yuv[h + (h / 2) + (yy / 2)];
+       for (xx = 0; xx < (w - 7); xx += 8)
+         {
+            movd_m2r(*up, mm3);
+            movd_m2r(*vp, mm2);
+            movq_m2r(*yp1, mm0);
+
+            pxor_r2r(mm7, mm7);
+            punpcklbw_r2r(mm7, mm2);
+            punpcklbw_r2r(mm7, mm3);
+
+            movq_r2r(mm0, mm1);
+            psrlw_i2r(8, mm0);
+            psllw_i2r(8, mm1);
+            psrlw_i2r(8, mm1);
+
+            movq_m2r(CONST_16, mm4);
+            psubsw_r2r(mm4, mm0);
+            psubsw_r2r(mm4, mm1);
+
+            movq_m2r(CONST_128, mm5);
+            psubsw_r2r(mm5, mm2);
+            psubsw_r2r(mm5, mm3);
+
+            movq_m2r(CONST_YMUL, mm4);
+            pmullw_r2r(mm4, mm0);
+            pmullw_r2r(mm4, mm1);
+
+            movq_m2r(CONST_CRVCRV, mm7);
+            pmullw_r2r(mm3, mm7);
+            movq_m2r(CONST_CBUCBU, mm6);
+            pmullw_r2r(mm2, mm6);
+            movq_m2r(CONST_CGUCGU, mm5);
+            pmullw_r2r(mm2, mm5);
+            movq_m2r(CONST_CGVCGV, mm4);
+            pmullw_r2r(mm3, mm4);
+
+            movq_r2r(mm0, mm2);
+            paddsw_r2r(mm7, mm2);
+            paddsw_r2r(mm1, mm7);
+
+            psraw_i2r(RES, mm2);
+            psraw_i2r(RES, mm7);
+            packuswb_r2r(mm7, mm2);
+
+            pxor_r2r(mm7, mm7);
+            movq_r2r(mm2, mm3);
+            punpckhbw_r2r(mm7, mm2);
+            punpcklbw_r2r(mm3, mm7);
+            por_r2r(mm7, mm2);
+
+            movq_r2r(mm0, mm3);
+            psubsw_r2r(mm5, mm3);
+            psubsw_r2r(mm4, mm3);
+            paddsw_m2r(CONST_32, mm3);
+
+            movq_r2r(mm1, mm7);
+            psubsw_r2r(mm5, mm7);
+            psubsw_r2r(mm4, mm7);
+            paddsw_m2r(CONST_32, mm7);
+
+            psraw_i2r(RES, mm3);
+            psraw_i2r(RES, mm7);
+            packuswb_r2r(mm7, mm3);
+
+            pxor_r2r(mm7, mm7);
+            movq_r2r(mm3, mm4);
+            punpckhbw_r2r(mm7, mm3);
+            punpcklbw_r2r(mm4, mm7);
+            por_r2r(mm7, mm3);
+
+            movq_m2r(CONST_32, mm4);
+            paddsw_r2r(mm6, mm0);
+            paddsw_r2r(mm6, mm1);
+            paddsw_r2r(mm4, mm0);
+            paddsw_r2r(mm4, mm1);
+            psraw_i2r(RES, mm0);
+            psraw_i2r(RES, mm1);
+            packuswb_r2r(mm1, mm0);
+
+            pxor_r2r(mm7, mm7);
+            movq_r2r(mm0, mm5);
+            punpckhbw_r2r(mm7, mm0);
+            punpcklbw_r2r(mm5, mm7);
+            por_r2r(mm7, mm0);
+
+            movq_m2r(CONST_FF, mm1);
+            movq_r2r(mm0, mm5);
+            movq_r2r(mm3, mm6);
+            movq_r2r(mm2, mm7);
+            punpckhbw_r2r(mm3, mm2);
+            punpcklbw_r2r(mm6, mm7);
+            punpckhbw_r2r(mm1, mm0);
+            punpcklbw_r2r(mm1, mm5);
+
+            movq_r2r(mm7, mm1);
+            punpckhwd_r2r(mm5, mm7);
+            punpcklwd_r2r(mm5, mm1);
+
+            movq_r2r(mm2, mm4);
+            punpckhwd_r2r(mm0, mm2);
+            punpcklwd_r2r(mm0, mm4);
+
+            movntq_r2m(mm1, *(dp1));
+            movntq_r2m(mm7, *(dp1 + 8));
+            movntq_r2m(mm4, *(dp1 + 16));
+            movntq_r2m(mm2, *(dp1 + 24));
+
+            yp1 += 8;
+            up += 4;
+            vp += 4;
+            dp1 += 8 * 4;
+         }
+       /* cleanup pixles that arent a multiple of 8 pixels wide */
+       if (xx < w)
+         {
+            int y, u, v, r, g, b;
+
+            for (; xx < w; xx += 2)
+              {
+                 u = (*up++) - 128;
+                 v = (*vp++) - 128;
+
+                 A_VAL(dp1) = 0xff;
+                 y = RZ(YMUL) * ((*yp1++) - 16);
+                 r = (y + (_crv * v)) >> RES;
+                 r = LUT_CLIP(r);
+                 R_VAL(dp1) = r;
+                 g = (y - (_cgu * u) - (_cgv * v) + RZ(OFF)) >> RES;
+                 g = LUT_CLIP(g);
+                 G_VAL(dp1) = g;
+                 b = (y + (_cbu * u) + RZ(OFF)) >> RES;
+                 b = LUT_CLIP(b);
+                 B_VAL(dp1) = b;
+
+                 dp1 += 4;
+
+                 A_VAL(dp1) = 0xff;
+                 y = RZ(YMUL) * ((*yp1++) - 16);
+                 r = (y + (_crv * v)) >> RES;
+                 r = LUT_CLIP(r);
+                 R_VAL(dp1) = r;
+                 g = (y - (_cgu * u) - (_cgv * v) + RZ(OFF)) >> RES;
+                 g = LUT_CLIP(g);
+                 G_VAL(dp1) = g;
+                 b = (y + (_cbu * u) + RZ(OFF)) >> RES;
+                 b = LUT_CLIP(b);
+                 B_VAL(dp1) = b;
+
+                 dp1 += 4;
+              }
+         }
+     }
+   emms();
+#else
+   _evas_yv12torgb_mmx(yuv, rgb, w, h);
+#endif
+}
+
+static void
+_evas_yv12torgb_mmx(unsigned char **yuv, unsigned char *rgb, int w, int h)
+{
+#ifdef BUILD_MMX
+   int xx, yy;
+   register unsigned char *yp1, *up, *vp;
+   unsigned char *dp1;
+
+   /* destination pointers */
+   dp1 = rgb;
+
+   for (yy = 0; yy < h; yy++)
+     {
+       /* plane pointers */
+       yp1 = yuv[yy];
+       up = yuv[h + (yy / 2)];
+       vp = yuv[h + (h / 2) + (yy / 2)];
+       for (xx = 0; xx < (w - 7); xx += 8)
+         {
+            movd_m2r(*up, mm3);
+            movd_m2r(*vp, mm2);
+            movq_m2r(*yp1, mm0);
+
+            pxor_r2r(mm7, mm7);
+            punpcklbw_r2r(mm7, mm2);
+            punpcklbw_r2r(mm7, mm3);
+
+            movq_r2r(mm0, mm1);
+            psrlw_i2r(8, mm0);
+            psllw_i2r(8, mm1);
+            psrlw_i2r(8, mm1);
+
+            movq_m2r(CONST_16, mm4);
+            psubsw_r2r(mm4, mm0);
+            psubsw_r2r(mm4, mm1);
+
+            movq_m2r(CONST_128, mm5);
+            psubsw_r2r(mm5, mm2);
+            psubsw_r2r(mm5, mm3);
+
+            movq_m2r(CONST_YMUL, mm4);
+            pmullw_r2r(mm4, mm0);
+            pmullw_r2r(mm4, mm1);
+
+            movq_m2r(CONST_CRVCRV, mm7);
+            pmullw_r2r(mm3, mm7);
+            movq_m2r(CONST_CBUCBU, mm6);
+            pmullw_r2r(mm2, mm6);
+            movq_m2r(CONST_CGUCGU, mm5);
+            pmullw_r2r(mm2, mm5);
+            movq_m2r(CONST_CGVCGV, mm4);
+            pmullw_r2r(mm3, mm4);
+
+            movq_r2r(mm0, mm2);
+            paddsw_r2r(mm7, mm2);
+            paddsw_r2r(mm1, mm7);
+
+            psraw_i2r(RES, mm2);
+            psraw_i2r(RES, mm7);
+            packuswb_r2r(mm7, mm2);
+
+            pxor_r2r(mm7, mm7);
+            movq_r2r(mm2, mm3);
+            punpckhbw_r2r(mm7, mm2);
+            punpcklbw_r2r(mm3, mm7);
+            por_r2r(mm7, mm2);
+
+            movq_r2r(mm0, mm3);
+            psubsw_r2r(mm5, mm3);
+            psubsw_r2r(mm4, mm3);
+            paddsw_m2r(CONST_32, mm3);
+
+            movq_r2r(mm1, mm7);
+            psubsw_r2r(mm5, mm7);
+            psubsw_r2r(mm4, mm7);
+            paddsw_m2r(CONST_32, mm7);
+
+            psraw_i2r(RES, mm3);
+            psraw_i2r(RES, mm7);
+            packuswb_r2r(mm7, mm3);
+
+            pxor_r2r(mm7, mm7);
+            movq_r2r(mm3, mm4);
+            punpckhbw_r2r(mm7, mm3);
+            punpcklbw_r2r(mm4, mm7);
+            por_r2r(mm7, mm3);
+
+            movq_m2r(CONST_32, mm4);
+            paddsw_r2r(mm6, mm0);
+            paddsw_r2r(mm6, mm1);
+            paddsw_r2r(mm4, mm0);
+            paddsw_r2r(mm4, mm1);
+            psraw_i2r(RES, mm0);
+            psraw_i2r(RES, mm1);
+            packuswb_r2r(mm1, mm0);
+
+            pxor_r2r(mm7, mm7);
+            movq_r2r(mm0, mm5);
+            punpckhbw_r2r(mm7, mm0);
+            punpcklbw_r2r(mm5, mm7);
+            por_r2r(mm7, mm0);
+
+            movq_m2r(CONST_FF, mm1);
+            movq_r2r(mm0, mm5);
+            movq_r2r(mm3, mm6);
+            movq_r2r(mm2, mm7);
+            punpckhbw_r2r(mm3, mm2);
+            punpcklbw_r2r(mm6, mm7);
+            punpckhbw_r2r(mm1, mm0);
+            punpcklbw_r2r(mm1, mm5);
+
+            movq_r2r(mm7, mm1);
+            punpckhwd_r2r(mm5, mm7);
+            punpcklwd_r2r(mm5, mm1);
+
+            movq_r2r(mm2, mm4);
+            punpckhwd_r2r(mm0, mm2);
+            punpcklwd_r2r(mm0, mm4);
+
+            movq_r2m(mm1, *(dp1));
+            movq_r2m(mm7, *(dp1 + 8));
+            movq_r2m(mm4, *(dp1 + 16));
+            movq_r2m(mm2, *(dp1 + 24));
+
+            yp1 += 8;
+            up += 4;
+            vp += 4;
+            dp1 += 8 * 4;
+         }
+       /* cleanup pixles that arent a multiple of 8 pixels wide */
+       if (xx < w)
+         {
+            int y, u, v, r, g, b;
+
+            for (; xx < w; xx += 2)
+              {
+                 u = (*up++) - 128;
+                 v = (*vp++) - 128;
+
+                 A_VAL(dp1) = 0xff;
+                 y = RZ(YMUL) * ((*yp1++) - 16);
+                 r = (y + (_crv * v)) >> RES;
+                 r = LUT_CLIP(r);
+                 R_VAL(dp1) = r;
+                 g = (y - (_cgu * u) - (_cgv * v) + RZ(OFF)) >> RES;
+                 g = LUT_CLIP(g);
+                 G_VAL(dp1) = g;
+                 b = (y + (_cbu * u) + RZ(OFF)) >> RES;
+                 b = LUT_CLIP(b);
+                 B_VAL(dp1) = b;
+
+                 dp1 += 4;
+
+                 A_VAL(dp1) = 0xff;
+                 y = RZ(YMUL) * ((*yp1++) - 16);
+                 r = (y + (_crv * v)) >> RES;
+                 r = LUT_CLIP(r);
+                 R_VAL(dp1) = r;
+                 g = (y - (_cgu * u) - (_cgv * v) + RZ(OFF)) >> RES;
+                 g = LUT_CLIP(g);
+                 G_VAL(dp1) = g;
+                 b = (y + (_cbu * u) + RZ(OFF)) >> RES;
+                 b = LUT_CLIP(b);
+                 B_VAL(dp1) = b;
+
+                 dp1 += 4;
+              }
+         }
+     }
+   emms();
+#else
+   _evas_yv12torgb_raster(yuv, rgb, w, h);
+#endif
+}
+
+static void
+_evas_yv12torgb_altivec(unsigned char **yuv, unsigned char *rgb, int w, int h)
+{
+#ifdef BUILD_ALTIVEC
+#ifdef __VEC__
+   int xx, yy;
+   int w2, h2;
+   unsigned char *yp1, *yp2, *up, *vp;
+   unsigned char *dp1, *dp2;
+   vector signed short y, u, v;
+   vector signed short r, g, b;
+   vector signed short tmp1, tmp2, tmp3;
+   vector unsigned char yperm, uperm, vperm, rgb1, rgb2;
+   vector unsigned char alpha;
+
+   /* handy halved w & h */
+   w2 = w / 2;
+   h2 = h / 2;
+   /* plane pointers */
+   yp1 = yuv;
+   yp2 = yuv + w;
+   up = yuv + (w * h);
+   vp = up + (w2 * h2);
+   /* destination pointers */
+   dp1 = rgb;
+   dp2 = rgb + (w * 4);
+
+   alpha = vec_mergeh((vector unsigned char)AVV(255), zero);
+   alpha = (vector unsigned char)vec_mergeh((vector unsigned short)alpha,
+                                           (vector unsigned short)zero);
+
+   for (yy = 0; yy < h2; yy++)
+     {
+       for (xx = 0; xx < w2; xx += 4)
+         {
+/* Cycles */
+            /*
+             * Load 4 y and 4 u & v pixels for the 8x2 pixel block.
+             */
+/* 3 */      tmp3 = (vector signed short)vec_lde(0, (unsigned int *)yp1);
+/* 3 */      tmp1 = (vector signed short)vec_lde(0, (unsigned int *)up);
+/* 3 */      tmp2 = (vector signed short)vec_lde(0, (unsigned int *)vp);
+
+            /* Prepare for aligning the data in their vectors */
+/* 3 */      yperm = vec_lvsl(0, yp1);
+/* 3 */      uperm = vec_lvsl(0, up);
+/* 3 */      vperm = vec_lvsl(0, vp);
+            yp1 += 4;
+
+            /* Save y and load the next 4 y pixels for a total of 8 */
+/* 2 */      y = vec_perm(tmp3, tmp3, yperm);
+/* 3 */      tmp3 = (vector signed short)vec_lde(0, (unsigned int *)yp1);
+
+            /* Setup and calculate the 4 u pixels */
+/* 2 */      tmp1 = vec_perm(tmp1, tmp1, uperm);
+/* 2 */      tmp2 = vec_perm(tmp2, tmp2, vperm);
+
+            /* Avoid dependancy stalls on yperm and calculate the 4 u values */
+/* 3 */      yperm = vec_lvsr(12, yp1);
+/* 1 */      tmp1 = (vector signed short)vec_mergeh((vector unsigned char)tmp1,
+                                                   (vector unsigned char)tmp1);
+/* 1 */      u = (vector signed short)vec_mergeh(zero,
+                                                (vector unsigned char)tmp1);
+
+/* 1 */      u = vec_sub(u, c128);
+/* 2 */      tmp3 = vec_perm(tmp3, tmp3, yperm);
+
+            /* Setup and calculate the 4 v values */
+/* 1 */      tmp2 = (vector signed short)vec_mergeh((vector unsigned char)tmp2,
+                                                   (vector unsigned char)tmp2);
+/* 1 */      v = (vector signed short)vec_mergeh(zero,
+                                                (vector unsigned char)tmp2);
+/* 4 */      tmp2 = vec_mladd(cgu, u, (vector signed short)zero);
+/* 1 */      v = vec_sub(v, c128);
+
+            /* Move the data into y and start loading the next 4 pixels */
+/* 1 */      y = (vector signed short)vec_mergeh(zero,
+                                                (vector unsigned char)y);
+/* 1 */      tmp3 = (vector signed short)vec_mergeh(zero,
+                                                   (vector unsigned char)tmp3);
+/* 1 */      y = vec_or(y, tmp3);
+
+            /* Finish calculating y */
+/* 1 */      y = vec_sub(y, c16);
+/* 4 */      y = vec_mladd(ymul, y, (vector signed short)zero);
+
+            /* Perform non-dependant multiplies first. */
+/* 4 */      tmp1 = vec_mladd(crv, v, y);
+/* 4 */      tmp2 = vec_mladd(cgv, v, tmp2);
+/* 4 */      tmp3 = vec_mladd(cbu, u, y);
+
+            /* Calculate rgb values */
+/* 1 */             r = vec_sra(tmp1, res);
+
+/* 1 */             tmp2 = vec_sub(y, tmp2);
+/* 1 */      tmp2 = vec_add(tmp2, c32);
+/* 1 */      g = vec_sra(tmp2, res);
+
+/* 1 */             tmp3 = vec_add(tmp3, c32);
+/* 1 */             b = vec_sra(tmp3, res);
+
+            /* Bound to 0 <= x <= 255 */
+/* 1 */             r = vec_min(r, maxchar);
+/* 1 */             g = vec_min(g, maxchar);
+/* 1 */             b = vec_min(b, maxchar);
+/* 1 */             r = vec_max(r, (vector signed short)zero);
+/* 1 */             g = vec_max(g, (vector signed short)zero);
+/* 1 */             b = vec_max(b, (vector signed short)zero);
+
+            /* Combine r, g and b. */
+/* 2 */             rgb1 = vec_perm((vector unsigned char)r, (vector unsigned char)g,
+                            pickrg1);
+/* 2 */             rgb2 = vec_perm((vector unsigned char)r, (vector unsigned char)g,
+                           pickrg2);
+
+/* 2 */             rgb1 = vec_perm(rgb1, (vector unsigned char)b, pickrgb1);
+/* 2 */             rgb2 = vec_perm(rgb2, (vector unsigned char)b, pickrgb2);
+
+/* 1 */      rgb1 = vec_or(alpha, rgb1);
+/* 1 */      rgb2 = vec_or(alpha, rgb2);
+
+/* 3 */             vec_stl(rgb1, 0, dp1);
+            dp1 += 16;
+/* 3 */             vec_stl(rgb2, 0, dp1);
+
+            /*
+             * Begin the second row calculations
+             */
+
+            /*
+             * Load 4 y pixels for the 8x2 pixel block.
+             */
+/* 3 */      yperm = vec_lvsl(0, yp2);
+/* 3 */      tmp3 = (vector signed short)vec_lde(0, (unsigned int *)yp2);
+            yp2 += 4;
+
+            /* Save y and load the next 4 y pixels for a total of 8 */
+/* 2 */      y = vec_perm(tmp3, tmp3, yperm);
+/* 3 */      yperm = vec_lvsr(12, yp2);
+/* 3 */      tmp3 = (vector signed short)vec_lde(0, (unsigned int *)yp2);
+/* 1 */      y = (vector signed short)vec_mergeh(zero,
+                                                (vector unsigned char)y);
+
+            /* Avoid dependancy stalls on yperm */
+/* 2 */      tmp3 = vec_perm(tmp3, tmp3, yperm);
+/* 1 */      tmp3 = (vector signed short)vec_mergeh(zero,
+                                                   (vector unsigned char)tmp3);
+/* 1 */      y = vec_or(y, tmp3);
+
+            /* Start the calculation for g */
+/* 4 */      tmp2 = vec_mladd(cgu, u, (vector signed short)zero);
+
+            /* Finish calculating y */
+/* 1 */      y = vec_sub(y, c16);
+/* 4 */      y = vec_mladd(ymul, y, (vector signed short)zero);
+
+            /* Perform non-dependant multiplies first. */
+/* 4 */      tmp2 = vec_mladd(cgv, v, tmp2);
+/* 4 */      tmp1 = vec_mladd(crv, v, y);
+/* 4 */      tmp3 = vec_mladd(cbu, u, y);
+
+            /* Calculate rgb values */
+/* 1 */             r = vec_sra(tmp1, res);
+
+/* 1 */             tmp2 = vec_sub(y, tmp2);
+/* 1 */      tmp2 = vec_add(tmp2, c32);
+/* 1 */      g = vec_sra(tmp2, res);
+
+/* 1 */             tmp3 = vec_add(tmp3, c32);
+/* 1 */             b = vec_sra(tmp3, res);
+
+            /* Bound to 0 <= x <= 255 */
+/* 1 */             r = vec_min(r, maxchar);
+/* 1 */             g = vec_min(g, maxchar);
+/* 1 */             b = vec_min(b, maxchar);
+/* 1 */             r = vec_max(r, (vector signed short)zero);
+/* 1 */             g = vec_max(g, (vector signed short)zero);
+/* 1 */             b = vec_max(b, (vector signed short)zero);
+
+            /* Combine r, g and b. */
+/* 2 */             rgb1 = vec_perm((vector unsigned char)r, (vector unsigned char)g,
+                           pickrg1);
+/* 2 */             rgb2 = vec_perm((vector unsigned char)r, (vector unsigned char)g,
+                           pickrg2);
+
+/* 2 */             rgb1 = vec_perm(rgb1, (vector unsigned char)b, pickrgb1);
+/* 2 */             rgb2 = vec_perm(rgb2, (vector unsigned char)b, pickrgb2);
+
+/* 1 */      rgb1 = vec_or(alpha, rgb1);
+/* 1 */      rgb2 = vec_or(alpha, rgb2);
+
+/* 3 */             vec_stl(rgb1, 0, dp2);
+            dp2 += 16;
+/* 3 */             vec_stl(rgb2, 0, dp2);
+
+            /* Increment the YUV data pointers to the next set of pixels. */
+            yp1 += 4;
+            yp2 += 4;
+            up += 4;
+            vp += 4;
+
+            /* Move the destination pointers to the next set of pixels. */
+            dp1 += 16;
+            dp2 += 16;
+         }
+
+       /* jump down one line since we are doing 2 at once */
+       yp1 += w;
+       yp2 += w;
+       dp1 += (w * 4);
+       dp2 += (w * 4);
+     }
+#endif
+#else
+   _evas_yv12torgb_diz(yuv, rgb, w, h);
+#endif
+}
+
+static void
+_evas_yuv_init(void)
+{
+#ifdef BUILD_C
+   int i;
+
+   for (i = 0; i < 256; i++)
+     {
+       _v1164[i] = (int)(((float)(i - 16 )) * 1.164);
+
+       _v1596[i] = (int)(((float)(i - 128)) * 1.596);
+       _v813[i]  = (int)(((float)(i - 128)) * 0.813);
+
+       _v391[i]  = (int)(((float)(i - 128)) * 0.391);
+       _v2018[i] = (int)(((float)(i - 128)) * 2.018);
+     }
+
+   for (i = -384; i < 640; i++)
+     {
+       _clip_lut[i+384] = i < 0 ? 0 : (i > 255) ? 255 : i;
+     }
+#endif
+}
+
+static void
+_evas_yv12torgb_diz(unsigned char **yuv, unsigned char *rgb, int w, int h)
+{
+#ifdef BUILD_C
+   int xx, yy;
+   int y, u, v, r, g, b;
+   unsigned char *yp1, *yp2, *up, *vp;
+   unsigned char *dp1, *dp2;
+   int crv, cbu, cgu, cgv;
+
+   /* destination pointers */
+   dp1 = rgb;
+   dp2 = rgb + (w * 4);
+
+   crv = CRV;   /* 1.596 */
+   cbu = CBU;   /* 2.018 */
+   cgu = CGU;   /* 0.391 */
+   cgv = CGU;   /* 0.813 */
+
+   for (yy = 0; yy < h; yy += 2)
+     {
+       /* plane pointers */
+       yp1 = yuv[yy];
+       yp2 = yuv[yy + 1];
+       up = yuv[h + (yy / 2)];
+       vp = yuv[h + (h / 2) + (yy / 2)];
+       for (xx = 0; xx < w; xx += 2)
+         {
+            /* collect u & v for 2x2 pixel block */
+            u = (*up++) - 128;
+            v = (*vp++) - 128;
+
+            /* do the top 2 pixels of the 2x2 block whcih shared u & v */
+            /* yuv to rgb */
+            A_VAL(dp1) = 0xff;
+            y = YMUL * ((*yp1++) - 16);
+            r = (y + (crv * v)) >> 16;
+            r = LUT_CLIP(r);
+            R_VAL(dp1) = r;
+            g = (y - (cgu * u) - (cgv * v) + OFF) >>16;
+            g = LUT_CLIP(g);
+            G_VAL(dp1) = g;
+            b = (y + (cbu * u) + OFF) >> 16;
+            b = LUT_CLIP(b);
+            B_VAL(dp1) = b;
+
+            dp1 += 4;
+
+            /* yuv to rgb */
+            A_VAL(dp1) = 0xff;
+            y = YMUL * ((*yp1++) - 16);
+            r = (y + (crv * v)) >> 16;
+            r = LUT_CLIP(r);
+            R_VAL(dp1) = r;
+            g = (y - (cgu * u) - (cgv * v) + OFF) >>16;
+            g = LUT_CLIP(g);
+            G_VAL(dp1) = g;
+            b = (y + (cbu * u) + OFF) >> 16;
+            b = LUT_CLIP(b);
+            B_VAL(dp1) = b;
+
+            dp1 += 4;
+
+            /* do the bottom 2 pixels */
+            /* yuv to rgb */
+            A_VAL(dp2) = 0xff;
+            y = YMUL * ((*yp2++) - 16);
+            r = (y + (crv * v)) >> 16;
+            r = LUT_CLIP(r);
+            R_VAL(dp2) = r;
+            g = (y - (cgu * u) - (cgv * v) + OFF) >>16;
+            g = LUT_CLIP(g);
+            G_VAL(dp2) = g;
+            b = (y + (cbu * u) + OFF) >> 16;
+            b = LUT_CLIP(b);
+            B_VAL(dp2) = b;
+
+            dp2 += 4;
+
+            /* yuv to rgb */
+            A_VAL(dp2) = 0xff;
+            y = YMUL * ((*yp2++) - 16);
+            r = (y + (crv * v)) >> 16;
+            r = LUT_CLIP(r);
+            R_VAL(dp2) = r;
+            g = (y - (cgu * u) - (cgv * v) + OFF) >>16;
+            g = LUT_CLIP(g);
+            G_VAL(dp2) = g;
+            b = (y + (cbu * u) + OFF) >> 16;
+            b = LUT_CLIP(b);
+            B_VAL(dp2) = b;
+
+            dp2 += 4;
+         }
+       /* jump down one line since we are doing 2 at once */
+       dp1 += (w * 4);
+       dp2 += (w * 4);
+     }
+#endif
+}
+
+static void
+_evas_yv12torgb_raster(unsigned char **yuv, unsigned char *rgb, int w, int h)
+{
+#ifdef BUILD_C
+   int xx, yy;
+   int y, u, v, r, g, b;
+   unsigned char *yp1, *yp2, *up, *vp;
+   unsigned char *dp1, *dp2;
+
+   /* destination pointers */
+   dp1 = rgb;
+   dp2 = rgb + (w * 4);
+
+   for (yy = 0; yy < h; yy += 2)
+     {
+       /* plane pointers */
+       yp1 = yuv[yy];
+       yp2 = yuv[yy + 1];
+       up = yuv[h + (yy / 2)];
+       vp = yuv[h + (h / 2) + (yy / 2)];
+       for (xx = 0; xx < w; xx += 2)
+         {
+            int vmu;
+
+            /* collect u & v for 2x2 pixel block */
+            u = *up++;
+            v = *vp++;
+
+            /* save lookups */
+            vmu = _v813[v] + _v391[u];
+            u = _v2018[u];
+            v = _v1596[v];
+
+             /* do the top 2 pixels of the 2x2 block whcih shared u & v */
+            /* yuv to rgb */
+            y = _v1164[*yp1++];
+            r = y + v;
+            r = LUT_CLIP(r);
+            g = y -  vmu;
+            g = LUT_CLIP(g);
+            b = y + u;
+            b = LUT_CLIP(b);
+
+            A_VAL(dp1) = 0xff;
+            R_VAL(dp1) = r;
+            G_VAL(dp1) = g;
+            B_VAL(dp1) = b;
+
+            dp1 += 4;
+
+            /* yuv to rgb */
+            y = _v1164[*yp1++];
+            r = y + v;
+            r = LUT_CLIP(r);
+            g = y -  vmu;
+            g = LUT_CLIP(g);
+            b = y + u;
+            b = LUT_CLIP(b);
+
+            A_VAL(dp1) = 0xff;
+            R_VAL(dp1) = r;
+            G_VAL(dp1) = g;
+            B_VAL(dp1) = b;
+
+            dp1 += 4;
+
+            /* do the bottom 2 pixels */
+            /* yuv to rgb */
+            y = _v1164[*yp2++];
+            r = y + v;
+            r = LUT_CLIP(r);
+            g = y -  vmu;
+            g = LUT_CLIP(g);
+            b = y + u;
+            b = LUT_CLIP(b);
+
+            A_VAL(dp2) = 0xff;
+            R_VAL(dp2) = r;
+            G_VAL(dp2) = g;
+            B_VAL(dp2) = b;
+
+            dp2 += 4;
+
+            /* yuv to rgb */
+            y = _v1164[*yp2++];
+            r = y + v;
+            r = LUT_CLIP(r);
+            g = y -  vmu;
+            g = LUT_CLIP(g);
+            b = y + u;
+            b = LUT_CLIP(b);
+
+            A_VAL(dp2) = 0xff;
+            R_VAL(dp2) = r;
+            G_VAL(dp2) = g;
+            B_VAL(dp2) = b;
+            
+            dp2 += 4;
+         }
+       /* jump down one line since we are doing 2 at once */
+       dp1 += (w * 4);
+       dp2 += (w * 4);
+     }
+#endif
+}
+
+#endif
diff --git a/src/lib/engines/common/evas_convert_yuv.h b/src/lib/engines/common/evas_convert_yuv.h
new file mode 100644 (file)
index 0000000..e03ff8b
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_CONVERT_YUV_H
+#define _EVAS_CONVERT_YUV_H
+
+
+EAPI void evas_common_convert_yuv_420p_601_rgba                     (DATA8 **src, DATA8 *dst, int w, int h);
+
+
+#endif /* _EVAS_CONVERT_YUV_H */
diff --git a/src/lib/engines/common/evas_cpu.c b/src/lib/engines/common/evas_cpu.c
new file mode 100644 (file)
index 0000000..1fbb673
--- /dev/null
@@ -0,0 +1,238 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+
+#if defined BUILD_MMX || defined BUILD_SSE
+#include "evas_mmx.h"
+#endif
+
+#include <setjmp.h>
+
+#ifndef _WIN32
+static sigjmp_buf detect_buf;
+#endif
+
+static int cpu_feature_mask = 0;
+
+#ifndef _WIN32
+static void evas_common_cpu_catch_ill(int sig);
+static void evas_common_cpu_catch_segv(int sig);
+
+static void
+evas_common_cpu_catch_ill(int sig)
+{
+   siglongjmp(detect_buf, 1);
+}
+
+static void
+evas_common_cpu_catch_segv(int sig)
+{
+   siglongjmp(detect_buf, 1);
+}
+#endif
+
+void
+evas_common_cpu_mmx_test(void)
+{
+#ifdef BUILD_MMX
+   pxor_r2r(mm4, mm4);
+#endif
+}
+
+void
+evas_common_cpu_mmx2_test(void)
+{
+#ifdef BUILD_MMX
+   char data[16];
+
+   data[0] = 0;
+   mmx_r2m(movntq, mm0, data);
+   data[0] = 0;
+#endif
+}
+
+void
+evas_common_cpu_sse_test(void)
+{
+#ifdef BUILD_SSE
+   int blah[16];
+
+   movntq_r2m(mm0, blah);
+#endif
+}
+
+void
+evas_common_cpu_altivec_test(void)
+{
+#ifdef __POWERPC__
+#ifdef __VEC__
+   vector unsigned int zero;
+
+   zero = vec_splat_u32(0);
+#endif /* __VEC__ */
+#endif /* __POWERPC__ */
+}
+
+void
+evas_common_cpu_vis_test(void)
+{
+#ifdef __SPARC__
+#endif /* __SPARC__ */
+}
+
+int
+evas_common_cpu_feature_test(void (*feature)(void))
+{
+#ifndef _WIN32
+   int enabled = 1;
+   struct sigaction act, oact, oact2;
+
+   act.sa_handler = evas_common_cpu_catch_ill;
+   act.sa_flags = SA_RESTART;
+   sigemptyset(&act.sa_mask);
+   sigaction(SIGILL, &act, &oact);
+
+   act.sa_handler = evas_common_cpu_catch_segv;
+   act.sa_flags = SA_RESTART;
+   sigemptyset(&act.sa_mask);
+   sigaction(SIGSEGV, &act, &oact2);
+
+   if (sigsetjmp(detect_buf, 1))
+     {
+       sigaction(SIGILL, &oact, NULL);
+       sigaction(SIGSEGV, &oact2, NULL);
+       return 0;
+     }
+
+   feature();
+
+   sigaction(SIGILL, &oact, NULL);
+   sigaction(SIGSEGV, &oact2, NULL);
+   return enabled;
+#else
+   return 0;
+#endif
+}
+
+EAPI void
+evas_common_cpu_init(void)
+{
+   static int called = 0;
+
+   if (called) return;
+   called = 1;
+#ifdef BUILD_MMX
+   cpu_feature_mask |= CPU_FEATURE_MMX *
+     evas_common_cpu_feature_test(evas_common_cpu_mmx_test);
+   evas_common_cpu_end_opt();
+   cpu_feature_mask |= CPU_FEATURE_MMX2 *
+     evas_common_cpu_feature_test(evas_common_cpu_mmx2_test);
+   evas_common_cpu_end_opt();
+#ifdef BUILD_SSE
+   cpu_feature_mask |= CPU_FEATURE_SSE *
+     evas_common_cpu_feature_test(evas_common_cpu_sse_test);
+   evas_common_cpu_end_opt();
+#endif /* BUILD_SSE */
+#endif /* BUILD_MMX */
+#ifdef __POWERPC__
+#ifdef __VEC__
+   cpu_feature_mask |= CPU_FEATURE_ALTIVEC *
+     evas_common_cpu_feature_test(evas_common_cpu_altivec_test);
+   evas_common_cpu_end_opt();
+#endif /* __VEC__ */
+#endif /* __POWERPC__ */
+#ifdef __SPARC__
+   cpu_feature_mask |= CPU_FEATURE_VIS *
+     evas_common_cpu_feature_test(evas_common_cpu_vis_test);
+   evas_common_cpu_end_opt();
+#endif /* __SPARC__ */
+}
+
+int
+evas_common_cpu_has_feature(unsigned int feature)
+{
+   return (cpu_feature_mask & feature);
+}
+
+int
+evas_common_cpu_have_cpuid(void)
+{
+   return 0;
+/*
+#ifdef BUILD_MMX
+   unsigned int have_cpu_id;
+
+   have_cpu_id = 0;
+   have_cpuid(have_cpu_id);
+   return have_cpu_id;
+#else
+   return 0;
+#endif
+ */
+}
+
+EAPI void
+evas_common_cpu_can_do(int *mmx, int *sse, int *sse2)
+{
+   static int do_mmx = 0, do_sse = 0, do_sse2 = 0, done = 0;
+
+   if (!done)
+     {
+# ifdef HARD_CODED_P3
+       cpu_feature_mask |= CPU_FEATURE_MMX;
+       cpu_feature_mask |= CPU_FEATURE_SSE;
+#endif
+#ifdef HARD_CODED_P2
+       cpu_feature_mask |= CPU_FEATURE_MMX;
+#endif
+       if (cpu_feature_mask & CPU_FEATURE_MMX) do_mmx = 1;
+       if (cpu_feature_mask & CPU_FEATURE_MMX2) do_sse = 1;
+       if (cpu_feature_mask & CPU_FEATURE_SSE) do_sse = 1;
+     }
+//   printf("%i %i %i\n", do_mmx, do_sse, do_sse2);
+   *mmx = do_mmx;
+   *sse = do_sse;
+   *sse2 = do_sse2;
+   done = 1;
+}
+
+#ifdef BUILD_MMX
+EAPI void
+evas_common_cpu_end_opt(void)
+{
+   if (cpu_feature_mask &
+       (CPU_FEATURE_MMX | CPU_FEATURE_MMX2))
+     {
+       emms();
+     }
+}
+#else
+EAPI void
+evas_common_cpu_end_opt(void)
+{
+}
+#endif
+
+EAPI int
+evas_common_cpu_count(void)
+{
+#ifdef BUILD_PTHREAD
+   cpu_set_t cpu;
+   int i;
+   static int cpus = 0;
+
+   if (cpus != 0) return cpus;
+
+   sched_getaffinity(getpid(), sizeof(cpu), &cpu);
+   for (i = 0; i < TH_MAX; i++)
+     {
+       if (CPU_ISSET(i, &cpu)) cpus = i + 1;
+       else break;
+     }
+   return cpus;
+#else
+   return 1;
+#endif
+}
diff --git a/src/lib/engines/common/evas_draw.h b/src/lib/engines/common/evas_draw.h
new file mode 100644 (file)
index 0000000..4683bc3
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_DRAW_H
+#define _EVAS_DRAW_H
+
+
+EAPI void               evas_common_draw_init                            (void);
+
+EAPI RGBA_Draw_Context *evas_common_draw_context_new                     (void);
+EAPI void               evas_common_draw_context_free                    (RGBA_Draw_Context *dc);
+EAPI void               evas_common_draw_context_font_ext_set            (RGBA_Draw_Context *dc,
+                                                                          void *data,
+                                                                          void *(*gl_new)  (void *data, RGBA_Font_Glyph *fg),
+                                                                          void  (*gl_free) (void *ext_dat),
+                                                                          void  (*gl_draw) (void *data, void *dest, void *context, RGBA_Font_Glyph *fg, int x, int y));
+EAPI void               evas_common_draw_context_clip_clip               (RGBA_Draw_Context *dc, int x, int y, int w, int h);
+EAPI void               evas_common_draw_context_set_clip                (RGBA_Draw_Context *dc, int x, int y, int w, int h);
+EAPI void               evas_common_draw_context_unset_clip              (RGBA_Draw_Context *dc);
+EAPI void               evas_common_draw_context_set_color               (RGBA_Draw_Context *dc, int r, int g, int b, int a);
+EAPI void               evas_common_draw_context_set_multiplier          (RGBA_Draw_Context *dc, int r, int g, int b, int a);
+EAPI void               evas_common_draw_context_unset_multiplier        (RGBA_Draw_Context *dc);
+EAPI Cutout_Rects      *evas_common_draw_context_cutouts_new             (void);
+EAPI void               evas_common_draw_context_cutouts_free            (Cutout_Rects* rects);
+EAPI void               evas_common_draw_context_cutouts_del             (Cutout_Rects* rects, int index);
+EAPI void               evas_common_draw_context_add_cutout              (RGBA_Draw_Context *dc, int x, int y, int w, int h);
+EAPI void               evas_common_draw_context_clear_cutouts           (RGBA_Draw_Context *dc);
+EAPI Cutout_Rects      *evas_common_draw_context_apply_cutouts           (RGBA_Draw_Context *dc);
+EAPI void               evas_common_draw_context_apply_clear_cutouts     (Cutout_Rects* rects);
+EAPI void               evas_common_draw_context_apply_clean_cutouts     (Cutout_Rects* rects);
+EAPI void               evas_common_draw_context_set_anti_alias          (RGBA_Draw_Context *dc, unsigned char aa);
+EAPI void               evas_common_draw_context_set_color_interpolation (RGBA_Draw_Context *dc, int color_space);
+EAPI void               evas_common_draw_context_set_render_op           (RGBA_Draw_Context *dc, int op);
+EAPI void               evas_common_draw_context_set_sli                 (RGBA_Draw_Context *dc, int y, int h);
+
+
+#endif /* _EVAS_DRAW_H */
diff --git a/src/lib/engines/common/evas_draw_main.c b/src/lib/engines/common/evas_draw_main.c
new file mode 100644 (file)
index 0000000..3c2962b
--- /dev/null
@@ -0,0 +1,559 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_main.h"
+
+EAPI Cutout_Rects*
+evas_common_draw_context_cutouts_new(void)
+{
+   Cutout_Rects *rects;
+
+   rects = malloc(sizeof(Cutout_Rects));
+   rects->rects = NULL;
+   rects->active = 0;
+   rects->max = 0;
+
+   return rects;
+}
+
+EAPI void
+evas_common_draw_context_cutouts_free(Cutout_Rects* rects)
+{
+   rects->active = 0;
+}
+
+static Cutout_Rect*
+evas_common_draw_context_cutouts_add(Cutout_Rects* rects,
+                                     int x, int y, int w, int h)
+{
+   Cutout_Rect* rect;
+
+   if (rects->max < (rects->active + 1))
+     {
+       rects->max += 32;
+       rects->rects = realloc(rects->rects, sizeof(Cutout_Rect) * rects->max);
+     }
+
+   rect = rects->rects + rects->active;
+   rect->x = x;
+   rect->y = y;
+   rect->w = w;
+   rect->h = h;
+   rects->active++;
+
+   return rect;
+}
+
+EAPI void
+evas_common_draw_context_cutouts_del(Cutout_Rects* rects,
+                                     int index)
+{
+   if ((index >= 0) && (index < rects->active))
+     {
+        Cutout_Rect*    rect;
+
+       rect = rects->rects + index;
+        memmove(rect, rect + 1,
+               sizeof(Cutout_Rect) * (rects->active - index - 1));
+        rects->active--;
+     }
+}
+
+void
+evas_common_init(void)
+{
+   evas_common_cpu_init();
+
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+}
+
+void
+evas_common_shutdown(void)
+{
+   evas_font_dir_cache_free();
+   evas_common_image_cache_free();
+}
+
+EAPI void
+evas_common_draw_init(void)
+{
+}
+
+EAPI RGBA_Draw_Context *
+evas_common_draw_context_new(void)
+{
+   RGBA_Draw_Context *dc;
+
+   dc = calloc(1, sizeof(RGBA_Draw_Context));
+   dc->sli.h = 1;
+   return dc;
+}
+
+EAPI void
+evas_common_draw_context_free(RGBA_Draw_Context *dc)
+{
+   if (!dc) return;
+
+   evas_common_draw_context_apply_clean_cutouts(&dc->cutout);
+   free(dc);
+}
+
+EAPI void
+evas_common_draw_context_clear_cutouts(RGBA_Draw_Context *dc)
+{
+   evas_common_draw_context_apply_clean_cutouts(&dc->cutout);
+}
+
+EAPI void
+evas_common_draw_context_font_ext_set(RGBA_Draw_Context *dc,
+                                     void *data,
+                                     void *(*gl_new)  (void *data, RGBA_Font_Glyph *fg),
+                                     void  (*gl_free) (void *ext_dat),
+                                     void  (*gl_draw) (void *data, void *dest, void *context, RGBA_Font_Glyph *fg, int x, int y))
+{
+   dc->font_ext.data = data;
+   dc->font_ext.func.gl_new = gl_new;
+   dc->font_ext.func.gl_free = gl_free;
+   dc->font_ext.func.gl_draw = gl_draw;
+}
+
+EAPI void
+evas_common_draw_context_clip_clip(RGBA_Draw_Context *dc, int x, int y, int w, int h)
+{
+   if (dc->clip.use)
+     {
+       RECTS_CLIP_TO_RECT(dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h,
+                          x, y, w, h);
+     }
+   else
+     evas_common_draw_context_set_clip(dc, x, y, w, h);
+}
+
+EAPI void
+evas_common_draw_context_set_clip(RGBA_Draw_Context *dc, int x, int y, int w, int h)
+{
+   dc->clip.use = 1;
+   dc->clip.x = x;
+   dc->clip.y = y;
+   dc->clip.w = w;
+   dc->clip.h = h;
+}
+
+EAPI void
+evas_common_draw_context_unset_clip(RGBA_Draw_Context *dc)
+{
+   dc->clip.use = 0;
+}
+
+EAPI void
+evas_common_draw_context_set_color(RGBA_Draw_Context *dc, int r, int g, int b, int a)
+{
+   R_VAL(&(dc->col.col)) = (DATA8)r;
+   G_VAL(&(dc->col.col)) = (DATA8)g;
+   B_VAL(&(dc->col.col)) = (DATA8)b;
+   A_VAL(&(dc->col.col)) = (DATA8)a;
+}
+
+EAPI void
+evas_common_draw_context_set_multiplier(RGBA_Draw_Context *dc, int r, int g, int b, int a)
+{
+   dc->mul.use = 1;
+   R_VAL(&(dc->mul.col)) = (DATA8)r;
+   G_VAL(&(dc->mul.col)) = (DATA8)g;
+   B_VAL(&(dc->mul.col)) = (DATA8)b;
+   A_VAL(&(dc->mul.col)) = (DATA8)a;
+}
+
+EAPI void
+evas_common_draw_context_unset_multiplier(RGBA_Draw_Context *dc)
+{
+   dc->mul.use = 0;
+}
+
+EAPI void
+evas_common_draw_context_add_cutout(RGBA_Draw_Context *dc, int x, int y, int w, int h)
+{
+   if (dc->clip.use)
+     {
+        RECTS_CLIP_TO_RECT(x, y, w, h,
+                          dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
+       if ((w < 1) || (h < 1)) return;
+     }
+   evas_common_draw_context_cutouts_add(&dc->cutout, x, y, w, h);
+}
+
+int
+evas_common_draw_context_cutout_split(Cutout_Rects* res, int index, Cutout_Rect *split)
+{
+   /* 1 input rect, multiple out */
+   Cutout_Rect  in = res->rects[index];
+
+   /* this is to save me a LOT of typing */
+#define INX1 (in.x)
+#define INX2 (in.x + in.w)
+#define SPX1 (split->x)
+#define SPX2 (split->x + split->w)
+#define INY1 (in.y)
+#define INY2 (in.y + in.h)
+#define SPY1 (split->y)
+#define SPY2 (split->y + split->h)
+#define X1_IN (in.x < split->x)
+#define X2_IN ((in.x + in.w) > (split->x + split->w))
+#define Y1_IN (in.y < split->y)
+#define Y2_IN ((in.y + in.h) > (split->y + split->h))
+#define R_NEW(_r, _x, _y, _w, _h) { evas_common_draw_context_cutouts_add(_r, _x, _y, _w, _h); }
+   if (!RECTS_INTERSECT(in.x, in.y, in.w, in.h,
+                       split->x, split->y, split->w, split->h))
+     {
+        /* No colision => no clipping, don't touch it. */
+       return 1;
+     }
+
+   /* S    = split (ie cut out rect) */
+   /* +--+ = in (rect to be cut) */
+
+   /*
+    *  +---+
+    *  |   |
+    *  | S |
+    *  |   |
+    *  +---+
+    *
+    */
+   if (X1_IN && X2_IN && Y1_IN && Y2_IN)
+     {
+        R_NEW(res, in.x, in.y, in.w, SPY1 - in.y);
+       R_NEW(res, in.x, SPY1, SPX1 - in.x, SPY2 - SPY1);
+       R_NEW(res, SPX2, SPY1, INX2 - SPX2, SPY2 - SPY1);
+        /* out => (in.x, SPY2, in.w, INY2 - SPY2) */
+        res->rects[index].h = INY2 - SPY2;
+        res->rects[index].y = SPY2;
+       return 1;
+     }
+   /* SSSSSSS
+    * S+---+S
+    * S|SSS|S
+    * S|SSS|S
+    * S|SSS|S
+    * S+---+S
+    * SSSSSSS
+    */
+   if (!X1_IN && !X2_IN && !Y1_IN && !Y2_IN)
+     {
+        evas_common_draw_context_cutouts_del(res, index);
+       return 0;
+     }
+   /* SSS
+    * S+---+
+    * S|S  |
+    * S|S  |
+    * S|S  |
+    * S+---+
+    * SSS
+    */
+   if (!X1_IN && X2_IN && !Y1_IN && !Y2_IN)
+     {
+        /* in => (SPX2, in.y, INX2 - SPX2, in.h) */
+        res->rects[index].w = INX2 - SPX2;
+        res->rects[index].x = SPX2;
+       return 1;
+     }
+   /*    S
+    *  +---+
+    *  | S |
+    *  | S |
+    *  | S |
+    *  +---+
+    *    S
+    */
+   if (X1_IN && X2_IN && !Y1_IN && !Y2_IN)
+     {
+        R_NEW(res, in.x, in.y, SPX1 - in.x, in.h);
+        /* in => (SPX2, in.y, INX2 - SPX2, in.h) */
+        res->rects[index].w = INX2 - SPX2;
+        res->rects[index].x = SPX2;
+       return 1;
+     }
+   /*     SSS
+    *  +---+S
+    *  |  S|S
+    *  |  S|S
+    *  |  S|S
+    *  +---+S
+    *     SSS
+    */
+   if (X1_IN && !X2_IN && !Y1_IN && !Y2_IN)
+     {
+        /* in => (in.x, in.y, SPX1 - in.x, in.h) */
+        res->rects[index].w = SPX1 - in.x;
+       return 1;
+     }
+   /* SSSSSSS
+    * S+---+S
+    * S|SSS|S
+    *  |   |
+    *  |   |
+    *  +---+
+    *
+    */
+   if (!X1_IN && !X2_IN && !Y1_IN && Y2_IN)
+     {
+        /* in => (in.x, SPY2, in.w, INY2 - SPY2) */
+        res->rects[index].h = INY2 - SPY2;
+        res->rects[index].y = SPY2;
+       return 1;
+     }
+   /*
+    *  +---+
+    *  |   |
+    * S|SSS|S
+    *  |   |
+    *  +---+
+    *
+    */
+   if (!X1_IN && !X2_IN && Y1_IN && Y2_IN)
+     {
+        R_NEW(res, in.x, SPY2, in.w, INY2 - SPY2);
+        /* in => (in.x, in.y, in.w, SPY1 - in.y) */
+        res->rects[index].h = SPY1 - in.y;
+       return 1;
+     }
+   /*
+    *  +---+
+    *  |   |
+    *  |   |
+    * S|SSS|S
+    * S+---+S
+    * SSSSSSS
+    */
+   if (!X1_IN && !X2_IN && Y1_IN && !Y2_IN)
+     {
+        /* in => (in.x, in.y, in.w, SPY1 - in.y) */
+        res->rects[index].h = SPY1 - in.y;
+       return 1;
+     }
+   /* SSS
+    * S+---+
+    * S|S  |
+    *  |   |
+    *  |   |
+    *  +---+
+    *
+    */
+   if (!X1_IN && X2_IN && !Y1_IN && Y2_IN)
+     {
+       R_NEW(res, SPX2, in.y, INX2 - SPX2, SPY2 - in.y);
+        /* in => (in.x, SPY2, in.w, INY2 - SPY2) */
+        res->rects[index].h = INY2 - SPY2;
+        res->rects[index].y = SPY2;
+       return 1;
+     }
+   /*    S
+    *  +---+
+    *  | S |
+    *  |   |
+    *  |   |
+    *  +---+
+    *
+    */
+   if (X1_IN && X2_IN && !Y1_IN && Y2_IN)
+     {
+       R_NEW(res, in.x, in.y, SPX1 - in.x, SPY2 - in.y);
+       R_NEW(res, SPX2, in.y, INX2 - SPX2, SPY2 - in.y);
+        /* in => (in.x, SPY2, in.w, INY2 - SPY2) */
+        res->rects[index].h = INY2 - SPY2;
+        res->rects[index].y = SPY2;
+       return 1;
+     }
+   /*     SSS
+    *  +---+S
+    *  |  S|S
+    *  |   |
+    *  |   |
+    *  +---+
+    *
+    */
+   if (X1_IN && !X2_IN && !Y1_IN && Y2_IN)
+     {
+       R_NEW(res, in.x, in.y, SPX1 - in.x, SPY2 - in.y);
+        /* in => (in.x, SPY2, in.w, INY2 - SPY2) */
+        res->rects[index].h = INY2 - SPY2;
+        res->rects[index].y = SPY2;
+       return 1;
+     }
+   /*
+    *  +---+
+    *  |   |
+    * S|S  |
+    *  |   |
+    *  +---+
+    *
+    */
+   if (!X1_IN && X2_IN && Y1_IN && Y2_IN)
+     {
+       R_NEW(res, in.x, SPY2, in.w, INY2 - SPY2);
+       R_NEW(res, SPX2, SPY1, INX2 - SPX2, SPY2 - SPY1);
+        /* in => (in.x, SPY2, in.w, INY2 - SPY2) */
+        res->rects[index].h = SPY1 - in.y;
+       return 1;
+     }
+   /*
+    *  +---+
+    *  |   |
+    *  |  S|S
+    *  |   |
+    *  +---+
+    *
+    */
+   if (X1_IN && !X2_IN && Y1_IN && Y2_IN)
+     {
+       R_NEW(res, in.x, SPY2, in.w, INY2 - SPY2);
+       R_NEW(res, in.x, SPY1, SPX1 - in.x, SPY2 - SPY1);
+        /* in => (in.x, in.y, in.w, SPY1 - in.y) */
+        res->rects[index].h = SPY1 - in.y;
+       return 1;
+     }
+   /*
+    *  +---+
+    *  |   |
+    *  |   |
+    * S|S  |
+    * S+---+
+    * SSS
+    */
+   if (!X1_IN && X2_IN && Y1_IN && !Y2_IN)
+     {
+        R_NEW(res, SPX2, SPY1, INX2 - SPX2, INY2 - SPY1);
+        /* in => (in.x, in.y, in.w, SPY1 - in.y) */
+        res->rects[index].h = SPY1 - in.y;
+       return 1;
+     }
+   /*
+    *  +---+
+    *  |   |
+    *  |   |
+    *  | S |
+    *  +---+
+    *    S
+    */
+   if (X1_IN && X2_IN && Y1_IN && !Y2_IN)
+     {
+       R_NEW(res, in.x, SPY1, SPX1 - in.x, INY2 - SPY1);
+        R_NEW(res, SPX2, SPY1, INX2 - SPX2, INY2 - SPY1);
+        /* in => (in.x, in.y, in.w, SPY1 - in.y) */
+        res->rects[index].h = SPY1 - in.y;
+       return 1;
+     }
+   /*
+    *  +---+
+    *  |   |
+    *  |   |
+    *  |  S|S
+    *  +---+S
+    *     SSS
+    */
+   if (X1_IN && !X2_IN && Y1_IN && !Y2_IN)
+     {
+        R_NEW(res, in.x, SPY1, SPX1 - in.x, INY2 - SPY1);
+        /* in => (in.x, in.y, in.w, SPY1 - in.y) */
+        res->rects[index].h = SPY1 - in.y;
+       return 1;
+     }
+   evas_common_draw_context_cutouts_del(res, index);
+   return 0;
+#undef INX1
+#undef INX2
+#undef SPX1
+#undef SPX2
+#undef INY1
+#undef INY2
+#undef SPY1
+#undef SPY2
+#undef X1_IN
+#undef X2_IN
+#undef Y1_IN
+#undef Y2_IN
+#undef R_NEW
+}
+
+EAPI Cutout_Rects*
+evas_common_draw_context_apply_cutouts(RGBA_Draw_Context *dc)
+{
+   Cutout_Rects*        res;
+   int                  i;
+   int                  j;
+
+   if (!dc->clip.use) return NULL;
+   if ((dc->clip.w <= 0) || (dc->clip.h <= 0)) return NULL;
+
+   res = evas_common_draw_context_cutouts_new();
+   evas_common_draw_context_cutouts_add(res, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
+
+   for (i = 0; i < dc->cutout.active; ++i)
+     {
+        /* Don't loop on the element just added to the list as they are already correctly clipped. */
+        int active = res->active;
+
+        for (j = 0; j < active; )
+          {
+             if (evas_common_draw_context_cutout_split(res, j, dc->cutout.rects + i))
+               ++j;
+             else
+               active--;
+          }
+     }
+   return res;
+}
+
+EAPI void
+evas_common_draw_context_apply_clear_cutouts(Cutout_Rects* rects)
+{
+   evas_common_draw_context_apply_clean_cutouts(rects);
+   free(rects);
+}
+
+EAPI void
+evas_common_draw_context_apply_clean_cutouts(Cutout_Rects* rects)
+{
+   free(rects->rects);
+   rects->rects = NULL;
+   rects->active = 0;
+   rects->max = 0;
+}
+
+EAPI void
+evas_common_draw_context_set_anti_alias(RGBA_Draw_Context *dc , unsigned char aa)
+{
+   dc->anti_alias = !!aa;
+}
+
+EAPI void
+evas_common_draw_context_set_color_interpolation(RGBA_Draw_Context *dc, int color_space)
+{
+   dc->interpolation.color_space = color_space;
+}
+
+EAPI void
+evas_common_draw_context_set_render_op(RGBA_Draw_Context *dc , int op)
+{
+   dc->render_op = op;
+}
+
+EAPI void
+evas_common_draw_context_set_sli(RGBA_Draw_Context *dc, int y, int h)
+{
+   dc->sli.y = y;
+   dc->sli.h = h;
+}
diff --git a/src/lib/engines/common/evas_font.h b/src/lib/engines/common/evas_font.h
new file mode 100644 (file)
index 0000000..0bf799c
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_FONT_H
+#define _EVAS_FONT_H
+
+
+/* main */
+
+EAPI void              evas_common_font_init                 (void);
+EAPI void              evas_common_font_shutdown             (void);
+
+EAPI int               evas_common_font_ascent_get           (RGBA_Font *fn);
+EAPI int               evas_common_font_descent_get          (RGBA_Font *fn);
+EAPI int               evas_common_font_max_ascent_get       (RGBA_Font *fn);
+EAPI int               evas_common_font_max_descent_get      (RGBA_Font *fn);
+EAPI int               evas_common_font_get_line_advance     (RGBA_Font *fn);
+
+EAPI int               evas_common_font_utf8_get_next        (unsigned char *buf, int *iindex);
+EAPI int               evas_common_font_utf8_get_prev        (unsigned char *buf, int *iindex);
+EAPI int               evas_common_font_utf8_get_last        (unsigned char *buf, int buflen);
+
+/* draw */
+
+EAPI void              evas_common_font_draw                 (RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const char *text);
+EAPI int               evas_common_font_glyph_search         (RGBA_Font *fn, RGBA_Font_Int **fi_ret, int gl);
+EAPI RGBA_Font_Glyph  *evas_common_font_int_cache_glyph_get  (RGBA_Font_Int *fi, FT_UInt index);
+
+/* load */
+
+EAPI RGBA_Font_Source *evas_common_font_source_memory_load   (const char *name, const void *data, int data_size);
+EAPI RGBA_Font_Source *evas_common_font_source_load          (const char *name);
+EAPI int               evas_common_font_source_load_complete (RGBA_Font_Source *fs);
+EAPI RGBA_Font_Source *evas_common_font_source_find          (const char *name);
+EAPI void              evas_common_font_source_free          (RGBA_Font_Source *fs);
+EAPI void              evas_common_font_size_use             (RGBA_Font *fn);
+EAPI RGBA_Font        *evas_common_font_memory_load          (const char *name, int size, const void *data, int data_size);
+EAPI RGBA_Font_Int    *evas_common_font_int_load             (const char *name, int size);
+EAPI RGBA_Font_Int    *evas_common_font_int_load_init        (RGBA_Font_Int *fn);
+EAPI RGBA_Font_Int    *evas_common_font_int_load_complete    (RGBA_Font_Int *fi);
+EAPI RGBA_Font        *evas_common_font_memory_load          (const char *name, int size, const void *data, int data_size);
+EAPI RGBA_Font        *evas_common_font_load                 (const char *name, int size);
+EAPI RGBA_Font        *evas_common_font_add                  (RGBA_Font *fn, const char *name, int size);
+EAPI RGBA_Font        *evas_common_font_memory_add           (RGBA_Font *fn, const char *name, int size, const void *data, int data_size);
+EAPI void              evas_common_font_free                 (RGBA_Font *fn);
+EAPI void              evas_common_font_hinting_set          (RGBA_Font *fn, Font_Hint_Flags hinting);
+EAPI Evas_Bool         evas_common_hinting_available         (Font_Hint_Flags hinting);
+EAPI RGBA_Font        *evas_common_font_memory_hinting_load  (const char *name, int size, const void *data, int data_size, Font_Hint_Flags hinting);
+EAPI RGBA_Font        *evas_common_font_hinting_load         (const char *name, int size, Font_Hint_Flags hinting);
+EAPI RGBA_Font        *evas_common_font_hinting_add          (RGBA_Font *fn, const char *name, int size, Font_Hint_Flags hinting);
+EAPI RGBA_Font        *evas_common_font_memory_hinting_add   (RGBA_Font *fn, const char *name, int size, const void *data, int data_size, Font_Hint_Flags hinting);
+EAPI void              evas_common_font_int_modify_cache_by  (RGBA_Font_Int *fi, int dir);
+EAPI int               evas_common_font_cache_get            (void);
+EAPI void              evas_common_font_cache_set            (int size);
+EAPI void              evas_common_font_flush                (void);
+EAPI void              evas_common_font_flush_last           (void);
+EAPI RGBA_Font_Int    *evas_common_font_int_find             (const char *name, int size);
+
+/* query */
+
+EAPI void              evas_common_font_query_size           (RGBA_Font *fn, const char *text, int *w, int *h);
+EAPI int               evas_common_font_query_inset          (RGBA_Font *fn, const char *text);
+EAPI void              evas_common_font_query_advance        (RGBA_Font *fn, const char *text, int *h_adv, int *v_adv);
+EAPI int               evas_common_font_query_char_coords    (RGBA_Font *fn, const char *text, int pos, int *cx, int *cy, int *cw, int *ch);
+EAPI int               evas_common_font_query_text_at_pos    (RGBA_Font *fn, const char *text, int x, int y, int *cx, int *cy, int *cw, int *ch);
+
+
+#endif /* _EVAS_FONT_H */
diff --git a/src/lib/engines/common/evas_font_draw.c b/src/lib/engines/common/evas_font_draw.c
new file mode 100644 (file)
index 0000000..e2f87ab
--- /dev/null
@@ -0,0 +1,359 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_blend_private.h"
+
+EAPI RGBA_Font_Glyph *
+evas_common_font_int_cache_glyph_get(RGBA_Font_Int *fi, FT_UInt index)
+{
+   RGBA_Font_Glyph *fg;
+   char key[6];
+   FT_UInt hindex;
+   FT_Error error;
+   const FT_Int32 hintflags[3] =
+     { FT_LOAD_NO_HINTING, FT_LOAD_FORCE_AUTOHINT, FT_LOAD_NO_AUTOHINT };
+
+   hindex = index + (fi->hinting * 500000000);
+
+   key[0] = ((hindex       ) & 0x7f) + 1;
+   key[1] = ((hindex >> 7  ) & 0x7f) + 1;
+   key[2] = ((hindex >> 14 ) & 0x7f) + 1;
+   key[3] = ((hindex >> 21 ) & 0x7f) + 1;
+   key[4] = ((hindex >> 28 ) & 0x0f) + 1;
+   key[5] = 0;
+
+   fg = evas_hash_find(fi->glyphs, key);
+   if (fg) return fg;
+
+//   error = FT_Load_Glyph(fi->src->ft.face, index, FT_LOAD_NO_BITMAP);
+   error = FT_Load_Glyph(fi->src->ft.face, index,
+                        FT_LOAD_RENDER | hintflags[fi->hinting]);
+   if (error) return NULL;
+
+   fg = malloc(sizeof(struct _RGBA_Font_Glyph));
+   if (!fg) return NULL;
+   memset(fg, 0, (sizeof(struct _RGBA_Font_Glyph)));
+
+   error = FT_Get_Glyph(fi->src->ft.face->glyph, &(fg->glyph));
+   if (error)
+     {
+       free(fg);
+       return NULL;
+     }
+   if (fg->glyph->format != FT_GLYPH_FORMAT_BITMAP)
+     {
+       error = FT_Glyph_To_Bitmap(&(fg->glyph), FT_RENDER_MODE_NORMAL, 0, 1);
+       if (error)
+         {
+            FT_Done_Glyph(fg->glyph);
+            free(fg);
+            return NULL;
+         }
+     }
+   fg->glyph_out = (FT_BitmapGlyph)fg->glyph;
+
+   fi->glyphs = evas_hash_add(fi->glyphs, key, fg);
+   return fg;
+}
+
+EAPI int
+evas_common_font_glyph_search(RGBA_Font *fn, RGBA_Font_Int **fi_ret, int gl)
+{
+   Evas_List *l;
+
+   for (l = fn->fonts; l; l = l->next)
+     {
+       RGBA_Font_Int *fi;
+       int index;
+
+       fi = l->data;
+
+       if (fi->src->charmap) /* Charmap loaded, FI/FS blank */
+         {
+            index = evas_array_hash_search(fi->src->charmap, gl);
+            if (index != 0)
+              {
+                 evas_common_font_source_load_complete(fi->src);
+                 evas_common_font_int_load_complete(fi);
+
+                 evas_array_hash_free(fi->src->charmap);
+                 fi->src->charmap = NULL;
+
+                 *fi_ret = fi;
+                 return index;
+              }
+         }
+       else if (!fi->src->ft.face) /* Charmap not loaded, FI/FS blank */
+         {
+            if (evas_common_font_source_load_complete(fi->src))
+              return 0;
+#if 0 /* FIXME: disable this. this can eat a LOT of memory and in my tests with expedite at any rate shows no visible improvements */
+            index = FT_Get_Char_Index(fi->src->ft.face, gl);
+            if (index == 0)
+              {
+                 /* Load Hash */
+                 FT_ULong  charcode;
+                 FT_UInt   gindex;
+
+                 fi->src->charmap = evas_array_hash_new();
+                 charcode = FT_Get_First_Char(fi->src->ft.face, &gindex);
+                 while (gindex != 0)
+                   {
+                      evas_array_hash_add(fi->src->charmap, charcode, gindex);
+                      charcode = FT_Get_Next_Char(fi->src->ft.face, charcode, &gindex);
+                   }
+
+                 /* Free face */
+                 FT_Done_Face(fi->src->ft.face);
+                 fi->src->ft.face = NULL;
+              }
+            else
+              {
+                 evas_common_font_int_load_complete(fi);
+
+                 *fi_ret = fi;
+                 return index;
+              }
+#endif
+         }
+       else /* Charmap not loaded, FS loaded */
+         {
+            index = FT_Get_Char_Index(fi->src->ft.face, gl);
+            if (index != 0)
+              {
+                 if (!fi->ft.size)
+                   evas_common_font_int_load_complete(fi);
+
+                 *fi_ret = fi;
+                 return index;
+              }
+         }
+     }
+   return 0;
+}
+
+EAPI void
+evas_common_font_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const char *text)
+{
+   int use_kerning;
+   int pen_x, pen_y;
+   int chr;
+   FT_UInt prev_index;
+   RGBA_Gfx_Func func;
+   int ext_x, ext_y, ext_w, ext_h;
+   DATA32 *im;
+   int im_w, im_h;
+   int c;
+   RGBA_Font_Int *fi;
+   FT_Face pface = NULL;
+
+   fi = fn->fonts->data;
+
+   im = dst->image.data;
+   im_w = dst->cache_entry.w;
+   im_h = dst->cache_entry.h;
+
+   ext_x = 0; ext_y = 0; ext_w = im_w; ext_h = im_h;
+   if (dc->clip.use)
+     {
+       ext_x = dc->clip.x;
+       ext_y = dc->clip.y;
+       ext_w = dc->clip.w;
+       ext_h = dc->clip.h;
+       if (ext_x < 0)
+         {
+            ext_w += ext_x;
+            ext_x = 0;
+         }
+       if (ext_y < 0)
+         {
+            ext_h += ext_y;
+            ext_y = 0;
+         }
+       if ((ext_x + ext_w) > im_w)
+         ext_w = im_w - ext_x;
+       if ((ext_y + ext_h) > im_h)
+         ext_h = im_h - ext_y;
+     }
+   if (ext_w <= 0) return;
+   if (ext_h <= 0) return;
+
+   pen_x = x;
+   pen_y = y;
+   LKL(fn->lock);
+   evas_common_font_size_use(fn);
+   use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+   prev_index = 0;
+   func = evas_common_gfx_func_composite_mask_color_span_get(dc->col.col, dst, 1, dc->render_op);
+   for (c = 0, chr = 0; text[chr];)
+     {
+       FT_UInt index;
+       RGBA_Font_Glyph *fg;
+       int chr_x, chr_y;
+       int gl;
+
+       gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr);
+       if (gl == 0) break;
+       index = evas_common_font_glyph_search(fn, &fi, gl);
+       /* hmmm kerning means i can't sanely do my own cached metric tables! */
+       /* grrr - this means font face sharing is kinda... not an option if */
+       /* you want performance */
+        if ((use_kerning) && (prev_index) && (index) &&
+           (pface == fi->src->ft.face))
+         {
+            FT_Vector delta;
+
+            if (FT_Get_Kerning(fi->src->ft.face, prev_index, index,
+                               ft_kerning_default, &delta) == 0)
+              pen_x += delta.x >> 6;
+         }
+       pface = fi->src->ft.face;
+       fg = evas_common_font_int_cache_glyph_get(fi, index);
+       if (!fg) continue;
+
+       if (dc->font_ext.func.gl_new)
+         {
+            /* extension calls */
+            fg->ext_dat = dc->font_ext.func.gl_new(dc->font_ext.data, fg);
+            fg->ext_dat_free = dc->font_ext.func.gl_free;
+         }
+
+       chr_x = (pen_x + (fg->glyph_out->left));
+       chr_y = (pen_y + (fg->glyph_out->top));
+
+       if (chr_x < (ext_x + ext_w))
+         {
+            DATA8 *data;
+            int i, j, w, h;
+
+            data = fg->glyph_out->bitmap.buffer;
+            j = fg->glyph_out->bitmap.pitch;
+            w = fg->glyph_out->bitmap.width;
+            if (j < w) j = w;
+            h = fg->glyph_out->bitmap.rows;
+/*
+            if ((fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays)
+                && (fg->glyph_out->bitmap.num_grays == 256)
+                )
+ */
+              {
+                 if ((j > 0) && (chr_x + w > ext_x))
+                   {
+                      if ((fg->ext_dat) && (dc->font_ext.func.gl_draw))
+                        {
+                           /* ext glyph draw */
+                           dc->font_ext.func.gl_draw(dc->font_ext.data,
+                                                     (void *)dst,
+                                                     dc, fg,
+                                                     chr_x,
+                                                     y - (chr_y - y)
+                                                     );
+                        }
+                      else
+                        {
+                           if ((fg->glyph_out->bitmap.num_grays == 256) &&
+                               (fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays))
+                             {
+                                for (i = 0; i < h; i++)
+                                  {
+                                     int dx, dy;
+                                     int in_x, in_w;
+
+                                     in_x = 0;
+                                     in_w = 0;
+                                     dx = chr_x;
+                                     dy = y - (chr_y - i - y);
+#ifdef EVAS_SLI
+                                     if (((dy) % dc->sli.h) == dc->sli.y)
+#endif
+                                       {
+                                          if ((dx < (ext_x + ext_w)) &&
+                                              (dy >= (ext_y)) &&
+                                              (dy < (ext_y + ext_h)))
+                                            {
+                                               if (dx + w > (ext_x + ext_w))
+                                                 in_w += (dx + w) - (ext_x + ext_w);
+                                               if (dx < ext_x)
+                                                 {
+                                                    in_w += ext_x - dx;
+                                                    in_x = ext_x - dx;
+                                                    dx = ext_x;
+                                                 }
+                                               if (in_w < w)
+                                                 {
+                                                    func(NULL, data + (i * j) + in_x, dc->col.col,
+                                                         im + (dy * im_w) + dx, w - in_w);
+                                                 }
+                                            }
+                                       }
+                                  }
+                             }
+                           else
+                             {
+                                DATA8 *tmpbuf = NULL, *dp, *tp, bits;
+                                int bi, bj;
+                                const DATA8 bitrepl[2] = {0x0, 0xff};
+
+                                tmpbuf = alloca(w);
+                                for (i = 0; i < h; i++)
+                                  {
+                                     int dx, dy;
+                                     int in_x, in_w, end;
+
+                                     in_x = 0;
+                                     in_w = 0;
+                                     dx = chr_x;
+                                     dy = y - (chr_y - i - y);
+#ifdef EVAS_SLI
+                                     if (((dy) % dc->sli.h) == dc->sli.y)
+#endif
+                                       {
+                                          tp = tmpbuf;
+                                          dp = data + (i * fg->glyph_out->bitmap.pitch);
+                                          for (bi = 0; bi < w; bi += 8)
+                                            {
+                                               bits = *dp;
+                                               if ((w - bi) < 8) end = w - bi;
+                                               else end = 8;
+                                               for (bj = 0; bj < end; bj++)
+                                                 {
+                                                    *tp = bitrepl[(bits >> (7 - bj)) & 0x1];
+                                                    tp++;
+                                                 }
+                                               dp++;
+                                            }
+                                          if ((dx < (ext_x + ext_w)) &&
+                                              (dy >= (ext_y)) &&
+                                              (dy < (ext_y + ext_h)))
+                                            {
+                                               if (dx + w > (ext_x + ext_w))
+                                                 in_w += (dx + w) - (ext_x + ext_w);
+                                               if (dx < ext_x)
+                                                 {
+                                                    in_w += ext_x - dx;
+                                                    in_x = ext_x - dx;
+                                                    dx = ext_x;
+                                                 }
+                                               if (in_w < w)
+                                                 {
+                                                    func(NULL, tmpbuf + in_x, dc->col.col,
+                                                         im + (dy * im_w) + dx, w - in_w);
+                                                 }
+                                            }
+                                       }
+                                  }
+                             }
+                        }
+                      c++;
+                   }
+              }
+         }
+       else
+         break;
+       pen_x += fg->glyph->advance.x >> 16;
+       prev_index = index;
+     }
+   LKU(fn->lock);
+}
diff --git a/src/lib/engines/common/evas_font_load.c b/src/lib/engines/common/evas_font_load.c
new file mode 100644 (file)
index 0000000..e8f64e9
--- /dev/null
@@ -0,0 +1,598 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+extern FT_Library         evas_ft_lib;
+
+static int                font_cache_usage = 0;
+static int                font_cache = 0;
+static Evas_Object_List * fonts_src = NULL;
+static Evas_Object_List * fonts = NULL;
+
+static Evas_Bool font_modify_cache_cb(const Evas_Hash *hash, const char *key, void *data, void *fdata);
+static Evas_Bool font_flush_free_glyph_cb(const Evas_Hash *hash, const char *key, void *data, void *fdata);
+
+EAPI RGBA_Font_Source *
+evas_common_font_source_memory_load(const char *name, const void *data, int data_size)
+{
+   int error;
+   RGBA_Font_Source *fs;
+
+   fs = calloc(1, sizeof(RGBA_Font_Source) + data_size);
+   if (!fs) return NULL;
+   fs->data = ((unsigned char *)fs) + sizeof(RGBA_Font_Source);
+   fs->data_size = data_size;
+   fs->current_size = 0;
+   memcpy(fs->data, data, data_size);
+   error = FT_New_Memory_Face(evas_ft_lib, fs->data, fs->data_size, 0, &(fs->ft.face));
+   if (error)
+     {
+       free(fs);
+       return NULL;
+     }
+   fs->name = evas_stringshare_add(name);
+   fs->file = NULL;
+   error = FT_Select_Charmap(fs->ft.face, ft_encoding_unicode);
+   fs->ft.orig_upem = fs->ft.face->units_per_EM;
+   fs->references = 1;
+   fonts_src = evas_object_list_prepend(fonts_src, fs);
+   return fs;
+}
+
+EAPI RGBA_Font_Source *
+evas_common_font_source_load(const char *name)
+{
+   RGBA_Font_Source *fs;
+
+   fs = calloc(1, sizeof(RGBA_Font_Source));
+   if (!fs) return NULL;
+   fs->data = NULL;
+   fs->data_size = 0;
+   fs->current_size = 0;
+   fs->ft.face = NULL;
+
+   fs->name = evas_stringshare_add(name);
+   fs->file = fs->name;
+
+   fs->ft.orig_upem = 0;
+
+   fs->references = 1;
+   fonts_src = evas_object_list_prepend(fonts_src, fs);
+   return fs;
+}
+
+EAPI int
+evas_common_font_source_load_complete(RGBA_Font_Source *fs)
+{
+   int error;
+
+   error = FT_New_Face(evas_ft_lib, fs->file, 0, &(fs->ft.face));
+   if (error)
+     {
+       fs->ft.face = NULL;
+       return error;
+     }
+
+   error = FT_Select_Charmap(fs->ft.face, ft_encoding_unicode);
+   if (error)
+     {
+       FT_Done_Face(fs->ft.face);
+       fs->ft.face = NULL;
+       return error;
+     }
+
+   fs->ft.orig_upem = fs->ft.face->units_per_EM;
+   return error;
+}
+
+EAPI RGBA_Font_Source *
+evas_common_font_source_find(const char *name)
+{
+   Evas_Object_List *l;
+
+   if (!name) return NULL;
+   for (l = fonts_src; l; l = l->next)
+     {
+       RGBA_Font_Source *fs;
+
+       fs = (RGBA_Font_Source *)l;
+       if ((fs->name) && (!strcmp(name, fs->name)))
+         {
+            fs->references++;
+            fonts_src = evas_object_list_remove(fonts_src, fs);
+            fonts_src = evas_object_list_prepend(fonts_src, fs);
+            return fs;
+         }
+     }
+   return NULL;
+}
+
+EAPI void
+evas_common_font_source_free(RGBA_Font_Source *fs)
+{
+   fs->references--;
+   if (fs->references > 0) return;
+
+   fonts_src = evas_object_list_remove(fonts_src, fs);
+   FT_Done_Face(fs->ft.face);
+   if (fs->charmap) evas_array_hash_free(fs->charmap);
+   if (fs->name) evas_stringshare_del(fs->name);
+   free(fs);
+}
+
+EAPI void
+evas_common_font_size_use(RGBA_Font *fn)
+{
+   Evas_List *l;
+
+   for (l = fn->fonts; l; l = l->next)
+     {
+       RGBA_Font_Int *fi;
+
+       fi = l->data;
+
+       if (fi->src->current_size != fi->size)
+         {
+            FT_Activate_Size(fi->ft.size);
+            fi->src->current_size = fi->size;
+         }
+     }
+}
+
+EAPI RGBA_Font_Int *
+evas_common_font_int_memory_load(const char *name, int size, const void *data, int data_size)
+{
+   RGBA_Font_Int *fi;
+
+   fi = evas_common_font_int_find(name, size);
+   if (fi) return fi;
+
+   fi = calloc(1, sizeof(RGBA_Font_Int));
+   if (!fi) return NULL;
+
+   fi->src = evas_common_font_source_find(name);
+   if (!fi->src)
+     fi->src = evas_common_font_source_memory_load(name, data, data_size);
+
+   if (!fi->src)
+     {
+       free(fi);
+       return NULL;
+     }
+
+   fi->size = size;
+
+   fi = evas_common_font_int_load_init(fi);
+   evas_common_font_int_load_complete(fi);
+
+   return fi;
+}
+
+EAPI RGBA_Font_Int *
+evas_common_font_int_load(const char *name, int size)
+{
+   RGBA_Font_Int *fi;
+
+   fi = evas_common_font_int_find(name, size);
+   if (fi) return fi;
+
+   fi = calloc(1, sizeof(RGBA_Font_Int));
+   if (!fi) return NULL;
+
+   fi->src = evas_common_font_source_find(name);
+   if (!fi->src && evas_file_path_is_file(name))
+     fi->src = evas_common_font_source_load(name);
+
+   if (!fi->src)
+     {
+       free(fi);
+       return NULL;
+     }
+
+   fi->size = size;
+
+   return evas_common_font_int_load_init(fi);
+}
+
+EAPI RGBA_Font_Int *
+evas_common_font_int_load_init(RGBA_Font_Int *fi)
+{
+   fi->ft.size = NULL;
+   fi->glyphs = NULL;
+   fi->usage = 0;
+   fi->references = 1;
+   fonts = evas_object_list_prepend(fonts, fi);
+   return fi;
+}
+
+EAPI RGBA_Font_Int *
+evas_common_font_int_load_complete(RGBA_Font_Int *fi)
+{
+   int error;
+
+   error = FT_New_Size(fi->src->ft.face, &(fi->ft.size));
+   if (!error)
+     {
+       FT_Activate_Size(fi->ft.size);
+     }
+   fi->real_size = fi->size * 64;
+   error = FT_Set_Char_Size(fi->src->ft.face, 0, fi->real_size, 75, 75);
+   if (error)
+     {
+       fi->real_size = fi->size;
+       error = FT_Set_Pixel_Sizes(fi->src->ft.face, 0, fi->real_size);
+     }
+   if (error)
+     {
+       int i;
+       int chosen_size = 0;
+       int chosen_width = 0;
+
+       for (i = 0; i < fi->src->ft.face->num_fixed_sizes; i++)
+         {
+            int s;
+            int d, cd;
+
+            s = fi->src->ft.face->available_sizes[i].height;
+            cd = chosen_size - fi->size;
+            if (cd < 0) cd = -cd;
+            d = s - fi->size;
+            if (d < 0) d = -d;
+            if (d < cd)
+              {
+                 chosen_width = fi->src->ft.face->available_sizes[i].width;
+                 chosen_size = s;
+              }
+            if (d == 0) break;
+         }
+       fi->real_size = chosen_size;
+       error = FT_Set_Pixel_Sizes(fi->src->ft.face, chosen_width, fi->real_size);
+       if (error)
+         {
+            /* couldn't choose the size anyway... what now? */
+         }
+     }
+   fi->src->current_size = fi->size;
+
+   return fi;
+}
+
+EAPI RGBA_Font *
+evas_common_font_memory_load(const char *name, int size, const void *data, int data_size)
+{
+   RGBA_Font *fn;
+   RGBA_Font_Int *fi;
+
+   fi = evas_common_font_int_memory_load(name, size, data, data_size);
+   if (!fi) return NULL;
+   fn = calloc(1, sizeof(RGBA_Font));
+   if (!fn)
+     {
+       free(fi);
+       return NULL;
+     }
+   fn->fonts = evas_list_append(fn->fonts, fi);
+   fn->hinting = FONT_BYTECODE_HINT;
+   fi->hinting = fn->hinting;
+   fn->references = 1;
+   LKI(fn->lock);
+   return fn;
+}
+
+EAPI RGBA_Font *
+evas_common_font_load(const char *name, int size)
+{
+   RGBA_Font *fn;
+   RGBA_Font_Int *fi;
+
+   fi = evas_common_font_int_load(name, size);
+   if (!fi) return NULL;
+
+   /* First font, complete load */
+   if (!fi->ft.size)
+     {
+       if (!fi->src->ft.face)
+         {
+            if (evas_common_font_source_load_complete(fi->src))
+              {
+                 fi->references--;
+                 if (fi->references == 0)
+                   {
+                      evas_common_font_int_modify_cache_by(fi, 1);
+                      evas_common_font_flush();
+                   }
+                 return NULL;
+              }
+         }
+       evas_common_font_int_load_complete(fi);
+     }
+
+   fn = calloc(1, sizeof(RGBA_Font));
+   if (!fn)
+     {
+       fi->references--;
+       if (fi->references == 0)
+         {
+            evas_common_font_int_modify_cache_by(fi, 1);
+            evas_common_font_flush();
+         }
+       return NULL;
+     }
+   fn->fonts = evas_list_append(fn->fonts, fi);
+   fn->hinting = FONT_BYTECODE_HINT;
+   fi->hinting = fn->hinting;
+   fn->references = 1;
+   LKI(fn->lock);
+   return fn;
+}
+
+EAPI RGBA_Font *
+evas_common_font_add(RGBA_Font *fn, const char *name, int size)
+{
+   RGBA_Font_Int *fi;
+
+   if (!fn)
+      return NULL;
+   fi = evas_common_font_int_load(name, size);
+   if (fi)
+     {
+       fn->fonts = evas_list_append(fn->fonts, fi);
+       fi->hinting = fn->hinting;
+       return fn;
+     }
+   return NULL;
+}
+
+EAPI RGBA_Font *
+evas_common_font_memory_add(RGBA_Font *fn, const char *name, int size, const void *data, int data_size)
+{
+   RGBA_Font_Int *fi;
+
+   if (!fn)
+      return NULL;
+   fi = evas_common_font_int_memory_load(name, size, data, data_size);
+   if (fi)
+     {
+       fn->fonts = evas_list_append(fn->fonts, fi);
+       fi->hinting = fn->hinting;
+       return fn;
+     }
+   return NULL;
+}
+
+EAPI void
+evas_common_font_free(RGBA_Font *fn)
+{
+   Evas_List *l;
+
+   if (!fn)
+      return;
+   fn->references--;
+   if (fn->references > 0) return;
+   for (l = fn->fonts; l; l = l->next)
+     {
+       RGBA_Font_Int *fi;
+
+       fi = l->data;
+       fi->references--;
+       if (fi->references == 0)
+         {
+            evas_common_font_int_modify_cache_by(fi, 1);
+            evas_common_font_flush();
+         }
+     }
+   evas_list_free(fn->fonts);
+   LKD(fn->lock);
+   free(fn);
+}
+
+EAPI void
+evas_common_font_hinting_set(RGBA_Font *fn, Font_Hint_Flags hinting)
+{
+   Evas_List *l;
+
+   if (!fn)
+     return;
+   fn->hinting = hinting;
+   for (l = fn->fonts; l; l = l->next)
+     {
+       RGBA_Font_Int *fi;
+
+       fi = l->data;
+       fi->hinting = fn->hinting;
+     }
+}
+
+EAPI Evas_Bool
+evas_common_hinting_available(Font_Hint_Flags hinting)
+{
+   switch (hinting)
+     {
+      case FONT_NO_HINT:
+      case FONT_AUTO_HINT:
+        /* these two hinting modes are always available */
+        return 1;
+      case FONT_BYTECODE_HINT:
+        /* Only use the bytecode interpreter if support for the _patented_
+         * algorithms is available because the free bytecode
+         * interpreter's results are too crappy.
+         *
+         * On freetyp 2.2+, we can ask the library about support for
+         * the patented interpreter. On older versions, we need to use
+         * macros to check for it.
+         */
+#if FREETYPE_MINOR >= 2
+        return FT_Get_TrueType_Engine_Type(evas_ft_lib) >=
+               FT_TRUETYPE_ENGINE_TYPE_PATENTED;
+#else
+        /* we may not rely on TT_CONFIG_OPTION_BYTECODE_INTERPRETER
+         * here to find out whether it's supported.
+         *
+         * so, assume it is. o_O
+         */
+        return 1;
+#endif
+     }
+
+   /* shouldn't get here - need to add another case statement */
+   return 0;
+}
+
+EAPI RGBA_Font *
+evas_common_font_memory_hinting_load(const char *name, int size, const void *data, int data_size, Font_Hint_Flags hinting)
+{
+   RGBA_Font *fn;
+
+   fn = evas_common_font_memory_load(name, size, data, data_size);
+   if (fn) evas_common_font_hinting_set(fn, hinting);
+   return fn;
+}
+
+EAPI RGBA_Font *
+evas_common_font_hinting_load(const char *name, int size, Font_Hint_Flags hinting)
+{
+   RGBA_Font *fn;
+
+   fn = evas_common_font_load(name, size);
+   if (fn) evas_common_font_hinting_set(fn, hinting);
+   return fn;
+}
+
+EAPI RGBA_Font *
+evas_common_font_hinting_add(RGBA_Font *fn, const char *name, int size, Font_Hint_Flags hinting)
+{
+   fn = evas_common_font_add(fn, name, size);
+   if (fn) evas_common_font_hinting_set(fn, hinting);
+   return fn;
+}
+
+EAPI RGBA_Font *
+evas_common_font_memory_hinting_add(RGBA_Font *fn, const char *name, int size, const void *data, int data_size, Font_Hint_Flags hinting)
+{
+   fn = evas_common_font_memory_add(fn, name, size, data, data_size);
+   if (fn) evas_common_font_hinting_set(fn, hinting);
+   return fn;
+}
+
+static Evas_Bool
+font_modify_cache_cb(const Evas_Hash *hash, const char *key, void *data, void *fdata)
+{
+   int *dir;
+   RGBA_Font_Glyph *fg;
+
+   fg = data;
+   dir = fdata;
+   font_cache_usage += (*dir) *
+     ((fg->glyph_out->bitmap.width * fg->glyph_out->bitmap.rows) +
+      sizeof(RGBA_Font_Glyph) + sizeof(Evas_List) + 400); /* fudge values */
+   return 1;
+   hash = 0;
+   key = 0;
+}
+
+/* when the fi->references == 0 we increase this instead of really deleting
+ * we then check if the cache_useage size is larger than allowed
+ * !If the cache is NOT too large we dont delete font_int
+ * !If the cache is too large we really delete font_int */
+EAPI void
+evas_common_font_int_modify_cache_by(RGBA_Font_Int *fi, int dir)
+{
+   int sz_hash = 0;
+
+   if (fi->glyphs) sz_hash = sizeof(Evas_Hash);
+   evas_hash_foreach(fi->glyphs, font_modify_cache_cb, &dir);
+   font_cache_usage += dir * (sizeof(RGBA_Font) + sz_hash +
+                             sizeof(FT_FaceRec) + 16384); /* fudge values */
+}
+
+EAPI int
+evas_common_font_cache_get(void)
+{
+   return font_cache;
+}
+
+EAPI void
+evas_common_font_cache_set(int size)
+{
+   font_cache = size;
+   evas_common_font_flush();
+}
+
+EAPI void
+evas_common_font_flush(void)
+{
+   if (font_cache_usage < font_cache) return;
+   while (font_cache_usage > font_cache) evas_common_font_flush_last();
+}
+
+static Evas_Bool
+font_flush_free_glyph_cb(const Evas_Hash *hash, const char *key, void *data, void *fdata)
+{
+   RGBA_Font_Glyph *fg;
+
+   fg = data;
+   FT_Done_Glyph(fg->glyph);
+   /* extension calls */
+   if (fg->ext_dat_free) fg->ext_dat_free(fg->ext_dat);
+   free(fg);
+   return 1;
+   hash = 0;
+   key = 0;
+   fdata = 0;
+}
+
+/* We run this when the cache gets larger than allowed size
+ * We check cache size each time a fi->references goes to 0
+ * PERFORMS: Find font_int(s) with references == 0 and delete them */
+EAPI void
+evas_common_font_flush_last(void)
+{
+   Evas_Object_List *l;
+   RGBA_Font_Int *fi = NULL;
+
+   for (l = fonts; l; l = l->next)
+     {
+       RGBA_Font_Int *fi_tmp;
+
+       fi_tmp = (RGBA_Font_Int *)l;
+       if (fi_tmp->references == 0) fi = fi_tmp;
+     }
+   if (!fi) return;
+
+   FT_Done_Size(fi->ft.size);
+
+   fonts = evas_object_list_remove(fonts, fi);
+   evas_common_font_int_modify_cache_by(fi, -1);
+
+   evas_hash_foreach(fi->glyphs, font_flush_free_glyph_cb, NULL);
+   evas_hash_free(fi->glyphs);
+
+   evas_common_font_source_free(fi->src);
+
+   free(fi);
+}
+
+EAPI RGBA_Font_Int *
+evas_common_font_int_find(const char *name, int size)
+{
+   Evas_Object_List *l;
+
+   for (l = fonts; l; l = l->next)
+     {
+       RGBA_Font_Int *fi;
+
+       fi = (RGBA_Font_Int *)l;
+       if ((fi->size == size) && (!strcmp(name, fi->src->name)))
+         {
+            if (fi->references == 0) evas_common_font_int_modify_cache_by(fi, -1);
+            fi->references++;
+            fonts = evas_object_list_remove(fonts, fi);
+            fonts = evas_object_list_prepend(fonts, fi);
+            return fi;
+         }
+     }
+   return NULL;
+}
diff --git a/src/lib/engines/common/evas_font_main.c b/src/lib/engines/common/evas_font_main.c
new file mode 100644 (file)
index 0000000..7f95760
--- /dev/null
@@ -0,0 +1,273 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+
+FT_Library      evas_ft_lib = 0;
+static int      initialised = 0;
+
+EAPI void
+evas_common_font_init(void)
+{
+   int error;
+
+   initialised++;
+   if (initialised != 1) return;
+   error = FT_Init_FreeType(&evas_ft_lib);
+   if (error)
+     {
+       initialised--;
+       return;
+     }
+}
+
+EAPI void
+evas_common_font_shutdown(void)
+{
+   int error;
+
+   initialised--;
+   if (initialised != 0) return;
+
+   evas_common_font_cache_set(0);
+   evas_common_font_flush();
+
+   error = FT_Done_FreeType(evas_ft_lib);
+   evas_ft_lib = 0;
+}
+
+EAPI int
+evas_common_font_ascent_get(RGBA_Font *fn)
+{
+   int val, dv;
+   int ret;
+   RGBA_Font_Int *fi;
+
+   evas_common_font_size_use(fn);
+   fi = fn->fonts->data;
+   val = (int)fi->src->ft.face->size->metrics.ascender;
+   if (fi->src->ft.face->units_per_EM == 0)
+     return val;  
+   dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM;
+   ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv);
+   return ret;
+}
+
+EAPI int
+evas_common_font_descent_get(RGBA_Font *fn)
+{
+   int val, dv;
+   int ret;
+   RGBA_Font_Int *fi;
+
+   evas_common_font_size_use(fn);
+   fi = fn->fonts->data;
+   val = -(int)fi->src->ft.face->size->metrics.descender;
+   if (fi->src->ft.face->units_per_EM == 0)
+     return val;  
+   dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM;
+   ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv);
+   return ret;
+}
+
+EAPI int
+evas_common_font_max_ascent_get(RGBA_Font *fn)
+{
+   int val, dv;
+   int ret;
+   RGBA_Font_Int *fi;
+
+   evas_common_font_size_use(fn);
+   fi = fn->fonts->data;
+   val = (int)fi->src->ft.face->bbox.yMax;
+   if (fi->src->ft.face->units_per_EM == 0)
+     return val;  
+   dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM;
+   ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv);
+   return ret;
+}
+
+EAPI int
+evas_common_font_max_descent_get(RGBA_Font *fn)
+{
+   int val, dv;
+   int ret;
+   RGBA_Font_Int *fi;
+
+   evas_common_font_size_use(fn);
+   fi = fn->fonts->data;
+   val = -(int)fi->src->ft.face->bbox.yMin;
+   if (fi->src->ft.face->units_per_EM == 0)
+     return val;  
+   dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM;
+   ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv);
+   return ret;
+}
+
+EAPI int
+evas_common_font_get_line_advance(RGBA_Font *fn)
+{
+   int val, dv;
+   int ret;
+   RGBA_Font_Int *fi;
+
+   evas_common_font_size_use(fn);
+   fi = fn->fonts->data;
+   val = (int)fi->src->ft.face->size->metrics.height;
+   if (fi->src->ft.face->units_per_EM == 0)
+     return val;  
+   dv = (fi->src->ft.orig_upem * 2048) / fi->src->ft.face->units_per_EM;
+   ret = (val * fi->src->ft.face->size->metrics.y_scale) / (dv * dv);
+   return ret;
+}
+
+EAPI int
+evas_common_font_utf8_get_next(unsigned char *buf, int *iindex)
+{
+   /* Reads UTF8 bytes from @buf, starting at *@index and returns
+    * the decoded code point at iindex offset, and advances iindex
+    * to the next code point after this.
+    *
+    * Returns 0 to indicate there is no next char
+    */
+   int index = *iindex, len, r;
+   unsigned char d, d2, d3, d4;
+
+   d = buf[index++];
+   if (!d)
+     return 0;
+   
+   while (buf[index] && ((buf[index] & 0xc0) == 0x80))
+     index++;
+   len = index - *iindex;
+   
+   if (len == 1)
+      r = d;
+   else if (len == 2)
+     {
+       /* 2 bytes */
+        d2 = buf[*iindex + 1];
+       r = d & 0x1f; /* copy lower 5 */
+       r <<= 6;
+       r |= (d2 & 0x3f); /* copy lower 6 */
+     }
+   else if (len == 3)
+     {
+       /* 3 bytes */
+        d2 = buf[*iindex + 1];
+        d3 = buf[*iindex + 2];
+       r = d & 0x0f; /* copy lower 4 */
+       r <<= 6;
+       r |= (d2 & 0x3f);
+       r <<= 6;
+       r |= (d3 & 0x3f);
+     }
+   else
+     {
+       /* 4 bytes */
+        d2 = buf[*iindex + 1];
+        d3 = buf[*iindex + 2];
+        d4 = buf[*iindex + 3];
+       r = d & 0x0f; /* copy lower 4 */
+       r <<= 6;
+       r |= (d2 & 0x3f);
+       r <<= 6;
+       r |= (d3 & 0x3f);
+       r <<= 6;
+       r |= (d4 & 0x3f);
+     }
+   
+   *iindex = index;
+   return r;
+}
+
+EAPI int
+evas_common_font_utf8_get_prev(unsigned char *buf, int *iindex)
+{
+   /* Reads UTF8 bytes from @buf, starting at *@index and returns
+    * the decoded code point at iindex offset, and advances iindex
+    * to the prev code point after this.
+    *
+    * Returns 0 to indicate there is no prev char
+    */
+   int index = *iindex, len, r;
+   unsigned char d, d2, d3, d4;
+
+   if (index <= 0)
+     return 0;
+   d = buf[index--];
+   
+   while ((index > 0) && ((buf[index] & 0xc0) == 0x80))
+     index--;
+   len = *iindex - index;
+   
+   if (len == 1)
+      r = d;
+   else if (len == 2)
+     {
+       /* 2 bytes */
+        d2 = buf[index + 1];
+       r = d & 0x1f; /* copy lower 5 */
+       r <<= 6;
+       r |= (d2 & 0x3f); /* copy lower 6 */
+     }
+   else if (len == 3)
+     {
+       /* 3 bytes */
+        d2 = buf[index + 1];
+        d3 = buf[index + 2];
+       r = d & 0x0f; /* copy lower 4 */
+       r <<= 6;
+       r |= (d2 & 0x3f);
+       r <<= 6;
+       r |= (d3 & 0x3f);
+     }
+   else
+     {
+       /* 4 bytes */
+        d2 = buf[index + 1];
+        d3 = buf[index + 2];
+        d4 = buf[index + 3];
+       r = d & 0x0f; /* copy lower 4 */
+       r <<= 6;
+       r |= (d2 & 0x3f);
+       r <<= 6;
+       r |= (d3 & 0x3f);
+       r <<= 6;
+       r |= (d4 & 0x3f);
+     }
+   
+   *iindex = index;
+   return r;
+}
+
+EAPI int
+evas_common_font_utf8_get_last(unsigned char *buf, int buflen)
+{
+   /* jumps to the nul byte at the buffer end and decodes backwards and
+    * returns the offset index byte in the buffer where the last character
+    * in the buffer begins.
+    *
+    * Returns -1 to indicate an error
+    */
+   int index;
+   unsigned char d;
+
+   if (buflen < 1) return 0;
+   index = buflen - 1;
+   d = buf[index];
+   if (!(d & 0x80))
+     return index;
+   else
+     {
+       while (index > 0)
+         {
+            index--;
+            d = buf[index];
+            if ((d & 0xc0) != 0x80)
+              return index;
+         }
+     }
+   return 0;
+}
diff --git a/src/lib/engines/common/evas_font_query.c b/src/lib/engines/common/evas_font_query.c
new file mode 100644 (file)
index 0000000..4595874
--- /dev/null
@@ -0,0 +1,344 @@
+#include "evas_common.h"
+
+/* string extents */
+EAPI void
+evas_common_font_query_size(RGBA_Font *fn, const char *text, int *w, int *h)
+{
+   int use_kerning;
+   int pen_x, pen_y;
+   int start_x, end_x;
+   int chr;
+   FT_UInt prev_index;
+   RGBA_Font_Int *fi;
+   FT_Face pface = NULL;
+
+   fi = fn->fonts->data;
+
+   start_x = 0;
+   end_x = 0;
+
+   pen_x = 0;
+   pen_y = 0;
+   evas_common_font_size_use(fn);
+   use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+   prev_index = 0;
+   for (chr = 0; text[chr];)
+     {
+       FT_UInt index;
+       RGBA_Font_Glyph *fg;
+       int chr_x, chr_y, chr_w;
+        int gl, kern;
+
+       gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr);
+       if (gl == 0) break;
+       index = evas_common_font_glyph_search(fn, &fi, gl);
+        /* hmmm kerning means i can't sanely do my own cached metric tables! */
+       /* grrr - this means font face sharing is kinda... not an option if */
+       /* you want performance */
+       kern = 0;
+       if ((use_kerning) && (prev_index) && (index) &&
+           (pface == fi->src->ft.face))
+         {
+            FT_Vector delta;
+
+            if (FT_Get_Kerning(fi->src->ft.face, prev_index, index,
+                               ft_kerning_default, &delta) == 0)
+              {
+                 kern = delta.x >> 6;
+                 pen_x += kern;
+              }
+         }
+       pface = fi->src->ft.face;
+       fg = evas_common_font_int_cache_glyph_get(fi, index);
+       if (!fg) continue;
+
+       if (kern < 0) kern = 0;
+       chr_x = ((pen_x - kern) + (fg->glyph_out->left));
+       chr_y = (pen_y + (fg->glyph_out->top));
+//     chr_w = fg->glyph_out->bitmap.width;
+       chr_w = fg->glyph_out->bitmap.width + kern;
+         {
+            int advw;
+
+            advw = ((fg->glyph->advance.x + (kern << 16)) >> 16);
+            if (chr_w < advw) chr_w = advw;
+         }
+
+       if ((!prev_index) && (chr_x < 0))
+         start_x = chr_x;
+       if ((chr_x + chr_w) > end_x)
+         end_x = chr_x + chr_w;
+
+       pen_x += fg->glyph->advance.x >> 16;
+       prev_index = index;
+     }
+   if (w) *w = end_x - start_x;
+   if (h) *h = evas_common_font_max_ascent_get(fn) + evas_common_font_max_descent_get(fn);
+}
+
+/* text x inset */
+EAPI int
+evas_common_font_query_inset(RGBA_Font *fn, const char *text)
+{
+   FT_UInt index;
+   RGBA_Font_Glyph *fg;
+   int chr;
+   int gl;
+   RGBA_Font_Int *fi;
+
+   fi = fn->fonts->data;
+
+   chr = 0;
+   if (!text[0]) return 0;
+   gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr);
+   if (gl == 0) return 0;
+   evas_common_font_size_use(fn);
+   index = evas_common_font_glyph_search(fn, &fi, gl);
+   fg = evas_common_font_int_cache_glyph_get(fi, index);
+   if (!fg) return 0;
+/*   
+   printf("fg->glyph_out->left = %i\n"
+         "fi->src->ft.face->glyph->bitmap_left = %i\n"
+         "fi->src->ft.face->glyph->metrics.horiBearingX = %i\n"
+         "fi->src->ft.face->glyph->metrics.horiBearingY = %i\n"
+         "fi->src->ft.face->glyph->metrics.horiAdvance = %i\n"
+         ,
+         (int)fg->glyph_out->left, 
+         (int)fi->src->ft.face->glyph->bitmap_left,
+         (int)fi->src->ft.face->glyph->metrics.horiBearingX >> 6,
+         (int)fi->src->ft.face->glyph->metrics.horiBearingY >> 6,
+         (int)fi->src->ft.face->glyph->metrics.horiAdvance >> 6
+         );
+ */
+   return fg->glyph_out->left;
+}
+
+/* h & v advance */
+EAPI void
+evas_common_font_query_advance(RGBA_Font *fn, const char *text, int *h_adv, int *v_adv)
+{
+   int use_kerning;
+   int pen_x, pen_y;
+   int start_x;
+   int chr;
+   FT_UInt prev_index;
+   RGBA_Font_Int *fi;
+   FT_Face pface = NULL;
+
+   fi = fn->fonts->data;
+
+   start_x = 0;
+   pen_x = 0;
+   pen_y = 0;
+   evas_common_font_size_use(fn);
+   use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+   prev_index = 0;
+   for (chr = 0; text[chr];)
+     {
+       FT_UInt index;
+       RGBA_Font_Glyph *fg;
+       int chr_x, chr_y, chr_w;
+        int gl;
+
+       gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr);
+       if (gl == 0) break;
+       index = evas_common_font_glyph_search(fn, &fi, gl);
+        /* hmmm kerning means i can't sanely do my own cached metric tables! */
+       /* grrr - this means font face sharing is kinda... not an option if */
+       /* you want performance */
+       if ((use_kerning) && (prev_index) && (index) &&
+           (pface == fi->src->ft.face))
+         {
+            FT_Vector delta;
+
+            if (FT_Get_Kerning(fi->src->ft.face, prev_index, index,
+                               ft_kerning_default, &delta) == 0)
+              pen_x += delta.x >> 6;
+         }
+       pface = fi->src->ft.face;
+       fg = evas_common_font_int_cache_glyph_get(fi, index);
+       if (!fg) continue;
+
+        chr_x = (pen_x + (fg->glyph_out->left));
+       chr_y = (pen_y + (fg->glyph_out->top));
+       chr_w = fg->glyph_out->bitmap.width;
+
+       pen_x += fg->glyph->advance.x >> 16;
+       prev_index = index;
+     }
+   if (v_adv) *v_adv = evas_common_font_get_line_advance(fn);
+   if (h_adv) *h_adv = pen_x - start_x;
+}
+
+/* x y w h for char at char pos */
+EAPI int
+evas_common_font_query_char_coords(RGBA_Font *fn, const char *text, int pos, int *cx, int *cy, int *cw, int *ch)
+{
+   int use_kerning;
+   int pen_x, pen_y;
+   int prev_chr_end;
+   int chr;
+   int asc, desc;
+   FT_UInt prev_index;
+   RGBA_Font_Int *fi;
+   FT_Face pface = NULL;
+
+   fi = fn->fonts->data;
+
+   pen_x = 0;
+   pen_y = 0;
+   evas_common_font_size_use(fn);
+   use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+   prev_index = 0;
+   prev_chr_end = 0;
+   asc = evas_common_font_max_ascent_get(fn);
+   desc = evas_common_font_max_descent_get(fn);
+   for (chr = 0; text[chr];)
+     {
+       int pchr;
+       FT_UInt index;
+       RGBA_Font_Glyph *fg;
+       int chr_x, chr_y, chr_w;
+        int gl, kern;
+
+       pchr = chr;
+       gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr);
+       if (gl == 0) break;
+       index = evas_common_font_glyph_search(fn, &fi, gl);
+       kern = 0;
+        /* hmmm kerning means i can't sanely do my own cached metric tables! */
+       /* grrr - this means font face sharing is kinda... not an option if */
+       /* you want performance */
+       if ((use_kerning) && (prev_index) && (index) &&
+           (pface == fi->src->ft.face))
+         {
+            FT_Vector delta;
+
+            if (FT_Get_Kerning(fi->src->ft.face, prev_index, index,
+                               ft_kerning_default, &delta) == 0)
+              {
+                 kern = delta.x >> 6;
+                 pen_x += kern;
+              }
+         }
+       pface = fi->src->ft.face;
+       fg = evas_common_font_int_cache_glyph_get(fi, index);
+       if (!fg) continue;
+
+       if (kern < 0) kern = 0;
+        chr_x = ((pen_x - kern) + (fg->glyph_out->left));
+       chr_y = (pen_y + (fg->glyph_out->top));
+       chr_w = fg->glyph_out->bitmap.width + (kern);
+/*     if (text[chr]) */
+         {
+            int advw;
+
+            advw = ((fg->glyph->advance.x + (kern << 16)) >> 16);
+            if (chr_w < advw) chr_w = advw;
+         }
+       if (chr_x > prev_chr_end)
+         {
+            chr_w += (chr_x - prev_chr_end);
+            chr_x = prev_chr_end;
+         }
+       if (pchr == pos)
+         {
+            if (cx) *cx = chr_x;
+            if (cy) *cy = -asc;
+            if (cw) *cw = chr_w;
+            if (ch) *ch = asc + desc;
+            return 1;
+         }
+       prev_chr_end = chr_x + chr_w;
+       pen_x += fg->glyph->advance.x >> 16;
+       prev_index = index;
+     }
+   return 0;
+}
+
+/* char pos of text at xy pos */
+EAPI int
+evas_common_font_query_text_at_pos(RGBA_Font *fn, const char *text, int x, int y, int *cx, int *cy, int *cw, int *ch)
+{
+   int use_kerning;
+   int pen_x, pen_y;
+   int prev_chr_end;
+   int chr;
+   int asc, desc;
+   FT_UInt prev_index;
+   RGBA_Font_Int *fi;
+   FT_Face pface = NULL;
+
+   fi = fn->fonts->data;
+
+   pen_x = 0;
+   pen_y = 0;
+   evas_common_font_size_use(fn);
+   use_kerning = FT_HAS_KERNING(fi->src->ft.face);
+   prev_index = 0;
+   prev_chr_end = 0;
+   asc = evas_common_font_max_ascent_get(fn);
+   desc = evas_common_font_max_descent_get(fn);
+   for (chr = 0; text[chr];)
+     {
+       int pchr;
+       FT_UInt index;
+       RGBA_Font_Glyph *fg;
+       int chr_x, chr_y, chr_w;
+        int gl, kern;
+
+       pchr = chr;
+       gl = evas_common_font_utf8_get_next((unsigned char *)text, &chr);
+       if (gl == 0) break;
+       index = evas_common_font_glyph_search(fn, &fi, gl);
+       kern = 0;
+        /* hmmm kerning means i can't sanely do my own cached metric tables! */
+       /* grrr - this means font face sharing is kinda... not an option if */
+       /* you want performance */
+       if ((use_kerning) && (prev_index) && (index) &&
+           (pface == fi->src->ft.face))
+         {
+            FT_Vector delta;
+
+            if (FT_Get_Kerning(fi->src->ft.face, prev_index, index,
+                               ft_kerning_default, &delta) == 0)
+              {
+                 kern = delta.x >> 6;
+                 pen_x += kern;
+              }
+         }
+       pface = fi->src->ft.face;
+       fg = evas_common_font_int_cache_glyph_get(fi, index);
+       if (!fg) continue;
+
+       if (kern < 0) kern = 0;
+        chr_x = ((pen_x - kern) + (fg->glyph_out->left));
+       chr_y = (pen_y + (fg->glyph_out->top));
+       chr_w = fg->glyph_out->bitmap.width + kern;
+/*     if (text[chr]) */
+         {
+            int advw;
+
+            advw = ((fg->glyph->advance.x + (kern << 16)) >> 16);
+            if (chr_w < advw) chr_w = advw;
+         }
+       if (chr_x > prev_chr_end)
+         {
+            chr_w += (chr_x - prev_chr_end);
+            chr_x = prev_chr_end;
+         }
+       if ((x >= chr_x) && (x <= (chr_x + chr_w)) &&
+           (y >= -asc) && (y <= desc))
+         {
+            if (cx) *cx = chr_x;
+            if (cy) *cy = -asc;
+            if (cw) *cw = chr_w;
+            if (ch) *ch = asc + desc;
+            return pchr;
+         }
+       prev_chr_end = chr_x + chr_w;
+       pen_x += fg->glyph->advance.x >> 16;
+       prev_index = index;
+     }
+   return -1;
+}
diff --git a/src/lib/engines/common/evas_gradient.h b/src/lib/engines/common/evas_gradient.h
new file mode 100644 (file)
index 0000000..d32d356
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_GRADIENT_H
+#define _EVAS_GRADIENT_H
+
+
+EAPI void           evas_common_gradient_init              (void);
+
+EAPI RGBA_Gradient *evas_common_gradient_new               (void);
+EAPI void           evas_common_gradient_free              (RGBA_Gradient *gr);
+EAPI void           evas_common_gradient_clear             (RGBA_Gradient *gr);
+EAPI void           evas_common_gradient_color_stop_add    (RGBA_Gradient *gr, int r, int g, int b, int a, int dist);
+EAPI void           evas_common_gradient_alpha_stop_add    (RGBA_Gradient *gr, int a, int dist);
+EAPI void           evas_common_gradient_color_data_set    (RGBA_Gradient *gr, DATA32 *data, int len, int alpha_flags);
+EAPI void           evas_common_gradient_alpha_data_set    (RGBA_Gradient *gr, DATA8 *adata, int len);
+EAPI void           evas_common_gradient_type_set          (RGBA_Gradient *gr, const char *name, char *params);
+EAPI void           evas_common_gradient_fill_set          (RGBA_Gradient *gr, int x, int y, int w, int h);
+EAPI void           evas_common_gradient_fill_angle_set    (RGBA_Gradient *gr, float angle);
+EAPI void           evas_common_gradient_fill_spread_set   (RGBA_Gradient *gr, int spread);
+EAPI void           evas_common_gradient_map_angle_set     (RGBA_Gradient *gr, float angle);
+EAPI void           evas_common_gradient_map_offset_set    (RGBA_Gradient *gr, float offset);
+EAPI void           evas_common_gradient_map_direction_set (RGBA_Gradient *gr, int direction);
+EAPI void           evas_common_gradient_map               (RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len);
+EAPI void           evas_common_gradient_draw              (RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h, RGBA_Gradient *gr);
+
+EAPI RGBA_Gradient_Type *evas_common_gradient_geometer_get (const char *name);
+
+
+#endif /* _EVAS_GRADIENT_H */
diff --git a/src/lib/engines/common/evas_gradient_angular.c b/src/lib/engines/common/evas_gradient_angular.c
new file mode 100644 (file)
index 0000000..2ee2368
--- /dev/null
@@ -0,0 +1,1899 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <math.h>
+
+#include "evas_common.h"
+#include "evas_gradient_private.h"
+
+typedef struct _Angular_Data   Angular_Data;
+struct _Angular_Data
+{
+   float  an, cy;
+
+   int    sx, sy, s;
+   float  off;
+   int    len;
+};
+
+static void
+angular_init(void);
+
+static void
+angular_shutdown(void);
+
+static void
+angular_init_geom(RGBA_Gradient *gr);
+
+static void
+angular_setup_geom(RGBA_Gradient *gr);
+
+static void
+angular_free_geom(void *gdata);
+
+static int
+angular_has_alpha(RGBA_Gradient *gr, int op);
+
+static int
+angular_has_mask(RGBA_Gradient *gr, int op);
+
+static int
+angular_get_map_len(RGBA_Gradient *gr);
+
+static Gfx_Func_Gradient_Fill
+angular_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa);
+
+static RGBA_Gradient_Type  angular = {"angular", angular_init, angular_shutdown,
+                                     angular_init_geom, angular_setup_geom, angular_free_geom,
+                                     angular_has_alpha, angular_has_mask,
+                                     angular_get_map_len, angular_get_fill_func};
+
+
+/** internal functions **/
+
+static void
+angular_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_reflect_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_reflect_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_reflect_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_reflect_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_repeat_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_repeat_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_repeat_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_repeat_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_reflect_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_reflect_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_reflect_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_reflect_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_repeat_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_repeat_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_repeat_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_restrict_repeat_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_pad_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_pad_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_pad_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+angular_pad_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+
+
+RGBA_Gradient_Type  *
+evas_common_gradient_angular_get(void)
+{
+    return &angular;
+}
+
+static void
+angular_init(void)
+{
+}
+
+static void
+angular_shutdown(void)
+{
+}
+
+static void
+angular_free_geom(void *gdata)
+{
+   Angular_Data *data = (Angular_Data *)gdata;
+   if (data) free(data);
+}
+
+static void
+angular_setup_geom(RGBA_Gradient *gr)
+{
+   Angular_Data   *angular_data;
+
+   if (!gr || (gr->type.geometer != &angular)) return;
+
+   angular_data = (Angular_Data *)gr->type.gdata;
+   if (!angular_data) return;
+   angular_data->sx = gr->fill.w;
+   angular_data->sy = gr->fill.h;
+   angular_data->s = angular_data->sx;
+   if (angular_data->sy > angular_data->sx)
+       angular_data->s = angular_data->sy;
+   angular_data->off = gr->map.offset;
+   angular_data->len = (2 * M_PI) * angular_data->s * angular_data->cy;
+}
+
+static void
+angular_init_geom(RGBA_Gradient *gr)
+{
+   Angular_Data   *angular_data;
+   int    err = 1;
+   char   *s, *p, key[256];
+   float  val, an, cy;
+
+   if (!gr || (gr->type.geometer != &angular)) return;
+
+   angular_data = (Angular_Data *)gr->type.gdata;
+   if (!angular_data)
+     {
+       angular_data = calloc(1, sizeof(Angular_Data));
+       if (!angular_data)  return;
+       angular_data->an = -1.0;
+       angular_data->cy = 1.0;
+       angular_data->sx = 32;
+       angular_data->sy = 32;
+       angular_data->s = 32;
+       angular_data->off = 0.0;
+       angular_data->len = (2 * M_PI) * 32;
+     }
+   gr->type.gdata = angular_data;
+   if (!gr->type.params || !*(gr->type.params))
+       return;
+
+   s = strdup(gr->type.params);
+   if (!s) return;
+
+   an = angular_data->an;
+   cy = angular_data->cy;
+   p = s;
+   while ((p = evas_common_gradient_get_key_fval(p, key, &val)))
+     {
+       if (!strcmp(key, "annulus"))
+         {
+           err = 0;
+           an = val;
+         }
+       else if (!strcmp(key, "wrap"))
+         {
+           err = 0;
+           cy = val;
+         }
+       else
+         {
+           err = 1;
+           break;
+         }
+     }
+   if (!err)
+     {
+       if (an < 0.0) an = 0.0;
+       if (an > 1.0) an = 1.0;
+       angular_data->an = an;
+       if (cy < 0.0) cy = 0.0;
+       if (cy > 1.0) cy = 1.0;
+       angular_data->cy = cy;
+     }
+   free(s);
+}
+
+
+static int
+angular_has_alpha(RGBA_Gradient *gr, int op)
+{
+   Angular_Data   *angular_data;
+
+   if (!gr || (gr->type.geometer != &angular)) return 0;
+
+   if (gr->has_alpha | gr->map.has_alpha)
+       return 1;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+       return 0;
+   angular_data = (Angular_Data *)gr->type.gdata;
+   if (!angular_data)  return 0;
+   if ((int)angular_data->an >= 0)
+       return 1;
+   if ( ((gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
+         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
+         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT))
+        && (angular_data->cy < 1.0) )
+       return 1;
+   return 0;
+}
+
+static int
+angular_has_mask(RGBA_Gradient *gr, int op)
+{
+   Angular_Data   *angular_data;
+
+   if (!gr || (gr->type.geometer != &angular)) return 0;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+     {
+       angular_data = (Angular_Data *)gr->type.gdata;
+       if (!angular_data)  return 0;
+       if ((int)angular_data->an >= 0)
+           return 1;
+       if ( ((gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
+             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
+             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT))
+             && (angular_data->cy < 1.0) )
+           return 1;
+     }
+   return 0;
+}
+
+static int
+angular_get_map_len(RGBA_Gradient *gr)
+{
+   Angular_Data   *angular_data;
+
+   if (!gr || (gr->type.geometer != &angular)) return 0;
+   angular_data = (Angular_Data *)gr->type.gdata;
+   if (!angular_data)  return 0;
+   return angular_data->len;
+}
+
+static Gfx_Func_Gradient_Fill
+angular_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa)
+{
+   Gfx_Func_Gradient_Fill  sfunc = NULL;
+   int masked_op = 0;
+   Angular_Data   *angular_data;
+
+   if (!gr || (gr->type.geometer != &angular)) return sfunc;
+   angular_data = (Angular_Data *)gr->type.gdata;
+   if (!angular_data)  return sfunc;
+
+   angular_data->off = gr->map.offset;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+       masked_op = 1;
+
+   switch (gr->fill.spread)
+     {
+      case _EVAS_TEXTURE_REFLECT:
+       {
+        if (aa)
+          {
+           if ((int)angular_data->an >= 0)
+             {
+               if (masked_op)
+                  sfunc = angular_reflect_aa_masked_annulus;
+               else
+                  sfunc = angular_reflect_aa_annulus;
+             }
+           else
+              sfunc = angular_reflect_aa;
+          }
+        else
+          {
+           if ((int)angular_data->an >= 0)
+             {
+               if (masked_op)
+                  sfunc = angular_reflect_masked_annulus;
+               else
+                  sfunc = angular_reflect_annulus;
+             }
+           else
+              sfunc = angular_reflect;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_REPEAT:
+       {
+        if (aa)
+          {
+           if ((int)angular_data->an >= 0)
+             {
+               if (masked_op)
+                  sfunc = angular_repeat_aa_masked_annulus;
+               else
+                  sfunc = angular_repeat_aa_annulus;
+             }
+           else
+              sfunc = angular_repeat_aa;
+          }
+        else
+          {
+           if ((int)angular_data->an >= 0)
+             {
+               if (masked_op)
+                  sfunc = angular_repeat_masked_annulus;
+               else
+                  sfunc = angular_repeat_annulus;
+             }
+           else
+              sfunc = angular_repeat;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT:
+        angular_data->off = 0;
+      case _EVAS_TEXTURE_RESTRICT_REFLECT:
+       {
+        if (aa)
+          {
+           if ((int)angular_data->an >= 0)
+             {
+               if (masked_op)
+                  sfunc = angular_restrict_reflect_aa_masked_annulus;
+               else
+                  sfunc = angular_restrict_reflect_aa_annulus;
+             }
+           else if (angular_data->cy < 1.0)
+             {
+               if (masked_op)
+                  sfunc = angular_restrict_reflect_aa_masked;
+               else
+                  sfunc = angular_restrict_reflect_aa;
+             }
+           else
+              sfunc = angular_restrict_reflect_aa;
+          }
+        else
+          {
+           if ((int)angular_data->an >= 0)
+             {
+               if (masked_op)
+                  sfunc = angular_restrict_reflect_masked_annulus;
+               else
+                  sfunc = angular_restrict_reflect_annulus;
+             }
+           else if (angular_data->cy < 1.0)
+             {
+               if (masked_op)
+                  sfunc = angular_restrict_reflect_masked;
+               else
+                  sfunc = angular_restrict_reflect;
+             }
+           else
+              sfunc = angular_restrict_reflect;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT_REPEAT:
+       {
+        if (aa)
+          {
+           if ((int)angular_data->an >= 0)
+             {
+               if (masked_op)
+                  sfunc = angular_restrict_repeat_aa_masked_annulus;
+               else
+                  sfunc = angular_restrict_repeat_aa_annulus;
+             }
+           else if (angular_data->cy < 1.0)
+             {
+               if (masked_op)
+                  sfunc = angular_restrict_repeat_aa_masked;
+               else
+                  sfunc = angular_restrict_repeat_aa;
+             }
+           else
+              sfunc = angular_restrict_repeat_aa;
+          }
+        else
+          {
+           if ((int)angular_data->an >= 0)
+             {
+               if (masked_op)
+                  sfunc = angular_restrict_repeat_masked_annulus;
+               else
+                  sfunc = angular_restrict_repeat_annulus;
+             }
+           else if (angular_data->cy < 1.0)
+             {
+               if (masked_op)
+                  sfunc = angular_restrict_repeat_masked;
+               else
+                  sfunc = angular_restrict_repeat;
+             }
+           else
+              sfunc = angular_restrict_repeat;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_PAD:
+       {
+        if (aa)
+          {
+           if ((int)angular_data->an >= 0)
+             {
+               if (masked_op)
+                  sfunc = angular_pad_aa_masked_annulus;
+               else
+                  sfunc = angular_pad_aa_annulus;
+             }
+           else
+              sfunc = angular_pad_aa;
+          }
+        else
+          {
+           if ((int)angular_data->an >= 0)
+             {
+               if (masked_op)
+                  sfunc = angular_pad_masked_annulus;
+               else
+                  sfunc = angular_pad_annulus;
+             }
+           else
+              sfunc = angular_pad;
+          }
+       }
+      default:
+       sfunc = angular_reflect_aa;
+      break;
+     }
+   return sfunc;
+}
+
+#define SETUP_ANGULAR_FILL \
+   if (gdata->sx != gdata->s) \
+     { \
+       axx = (gdata->s * axx) / gdata->sx; \
+       axy = (gdata->s * axy) / gdata->sx; \
+     } \
+   if (gdata->sy != gdata->s) \
+     { \
+       ayy = (gdata->s * ayy) / gdata->sy; \
+       ayx = (gdata->s * ayx) / gdata->sy; \
+     } \
+   xx = (axx * x) + (axy * y); \
+   yy = (ayx * x) + (ayy * y);
+
+
+static void
+angular_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI + atan2(yy, xx));
+       int  l = (ll >> 16);
+
+       l += ((ll - (l << 16)) >> 15) + off;
+       if (l < 0) l = -l;
+       if (l >= src_len)
+         {
+           int  m = (l % (2 * src_len));
+
+           l = (l % src_len);
+           if (m >= src_len)
+               l = src_len - l - 1;
+         }
+       *dst = src[l];
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI + atan2(yy, xx));
+       int  l = (ll >> 16), lp;
+       DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+       lp = l + off;
+       if (lp < 0) { lp = -lp;  a = 257 - a; }
+       if (lp >= src_len)
+         {
+           int  m = (lp % (2 * src_len));
+
+           lp = (lp % src_len);
+           if (m >= src_len)
+               { lp = src_len - lp - 1;  a = 257 - a; }
+         }
+       *dst = src[lp];
+       if (lp + 1 < src_len)
+          *dst = INTERP_256(a, src[lp + 1], *dst);
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_reflect_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;
+       if ((r >= r0) && (r <= r1))
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = (ll >> 16);
+
+           l += ((ll - (l << 16)) >> 15) + off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                   l = src_len - l - 1;
+             }
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_reflect_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   int     rr0 = r0 << 16, rr1 = r1 << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;
+       if ((r >= r0) && (r <= r1))
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = (ll >> 16), lp;
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+           *dst = src[lp];
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (r == r0)
+             {
+               a = 1 + ((rr - rr0) >> 8);
+               *dst = MUL_256(a, *dst);
+             }
+           if (r == r1)
+             {
+               a = 256 - ((rr - rr1) >> 8);
+               *dst = MUL_256(a, *dst);
+             }
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_reflect_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ((r >= r0) && (r <= r1))
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx)), l = ll >> 16;
+
+           l += ((ll - (l << 16)) >> 15) + off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                   l = src_len - l - 1;
+             }
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_reflect_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   int     rr0 = r0 << 16, rr1 = r1 << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ((r >= r0) && (r <= r1))
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = (ll >> 16), lp;
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+           *dst = src[lp];  *mask = 255;
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (r == r0)
+               *mask = ((rr - rr0) >> 8);
+           if (r == r1)
+               *mask = 255 - ((rr - rr1) >> 8);
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI + atan2(yy, xx));
+       int  l = ll >> 16;
+
+       l += ((ll - (l << 16)) >> 15) + off;
+       l = l % src_len;
+       if (l < 0)
+          l += src_len;
+       *dst = src[l];
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI + atan2(yy, xx));
+       int  l = (ll >> 16), lp;
+       DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+       lp = l + off;
+       lp = lp % src_len;
+       if (lp < 0)
+          lp += src_len;
+       *dst = src[lp];
+       if (lp + 1 < src_len)
+          *dst = INTERP_256(a, src[lp + 1], *dst);
+       if (lp == (src_len - 1))
+          *dst = INTERP_256(a, src[0], *dst);
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_repeat_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;
+       if ((r >= r0) && (r <= r1))
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16;
+
+           l += ((ll - (l << 16)) >> 15) + off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+          *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_repeat_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   int     rr0 = r0 << 16, rr1 = r1 << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;
+       if ((r >= r0) && (r <= r1))
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16, lp;
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           lp = lp % src_len;
+           if (lp < 0)
+               lp += src_len;
+           *dst = src[lp];
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (lp == (src_len - 1))
+               *dst = INTERP_256(a, src[0], *dst);
+           if (r == r0)
+             {
+               a = 1 + ((rr - rr0) >> 8);
+               *dst = MUL_256(a, *dst);
+             }
+           if (r == r1)
+             {
+               a = 256 - ((rr - rr1) >> 8);
+               *dst = MUL_256(a, *dst);
+             }
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_repeat_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ((r >= r0) && (r <= r1))
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16;
+
+           l += ((ll - (l << 16)) >> 15) + off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_repeat_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   int     rr0 = r0 << 16, rr1 = r1 << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ((r >= r0) && (r <= r1))
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16, lp;
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           lp = lp % src_len;
+           if (lp < 0)
+               lp += src_len;
+           *dst = src[lp];  *mask = 255;
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (lp == (src_len - 1))
+               *dst = INTERP_256(a, src[0], *dst);
+           if (r == r0)
+               *mask = ((rr - rr0) >> 8);
+           if (r == r1)
+               *mask = 255 - ((rr - rr1) >> 8);
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI + atan2(yy, xx));
+       int  l = ll >> 16;
+
+       *dst = 0;
+       l += ((ll - (l << 16)) >> 15);
+       if (l < src_len)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                  l = src_len - l - 1;
+             }
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI + atan2(yy, xx));
+       int  l = ll >> 16, lp;
+
+       *dst = 0;
+       if (l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+           *dst = src[lp];
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (l == (src_len - 1))
+               *dst = MUL_256(257 - a0, *dst);
+           if (l == 0)
+               *dst = MUL_256(a0, *dst);
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI + atan2(yy, xx)), l = ll >> 16;
+
+       *dst = 0;  *mask = 0;
+       l += (ll - (l << 16)) >> 15;
+       if (l < src_len)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                  l = src_len - l - 1;
+             }
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI +  atan2(yy, xx));
+       int  l = ll >> 16, lp;
+
+       *dst = 0;  *mask = 0;
+       if (l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+           *dst = src[lp];  *mask = 255;
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (l == (src_len - 1))
+               *mask = 255 - a0;
+           if (l == 0)
+               *mask = a0;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_reflect_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+           int  ll = ss * (M_PI +  atan2(yy, xx));
+           int  l = ll >> 16;
+
+           l += (ll - (l << 16)) >> 15;
+           if (l < src_len)
+             {
+               l += off;
+               if (l < 0) l = -l;
+               if (l >= src_len)
+                 {
+                   int  m = (l % (2 * src_len));
+
+                   l = (l % src_len);
+                   if (m >= src_len)
+                       l = src_len - l - 1;
+                 }
+               *dst = src[l];
+             }
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_reflect_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   int     rr0 = r0 << 16, rr1 = r1 << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+          int  ll = ss * (M_PI + atan2(yy, xx));
+          int  l = ll >> 16, lp;
+
+          if (l < src_len)
+            {
+               DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
+
+               lp = l + off;
+               if (lp < 0) { lp = -lp;  a = 257 - a; }
+               if (lp >= src_len)
+                 {
+                   int  m = (lp % (2 * src_len));
+
+                   lp = (lp % src_len);
+                   if (m >= src_len)
+                       { lp = src_len - lp - 1;  a = 257 - a; }
+                 }
+              *dst = src[lp];
+              if (lp + 1 < src_len)
+                 *dst = INTERP_256(a, src[lp + 1], *dst);
+              if (l == (src_len - 1))
+                  *dst = MUL_256(257 - a0, *dst);
+              if (l == 0)
+                  *dst = MUL_256(a0, *dst);
+              if (r == r0)
+                {
+                  a = 1 + ((rr - rr0) >> 8);
+                  *dst = MUL_256(a, *dst);
+                }
+              if (r == r1)
+                {
+                  a = 256 - ((rr - rr1) >> 8);
+                  *dst = MUL_256(a, *dst);
+                }
+            }
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_reflect_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16;
+
+           l += (ll - (l << 16)) >> 15;
+           if (l < src_len)
+             {
+               l += off;
+               if (l < 0) l = -l;
+               if (l >= src_len)
+                 {
+                   int  m = (l % (2 * src_len));
+
+                   l = (l % src_len);
+                   if (m >= src_len)
+                       l = src_len - l - 1;
+                 }
+               *dst = src[l];  *mask = 255;
+             }
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_reflect_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   int     rr0 = r0 << 16, rr1 = r1 << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+          int  ll = ss * (M_PI + atan2(yy, xx));
+          int  l = ll >> 16, lp;
+
+          if (l < src_len)
+            {
+               DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
+
+               lp = l + off;
+               if (lp < 0) { lp = -lp;  a = 257 - a; }
+               if (lp >= src_len)
+                 {
+                   int  m = (lp % (2 * src_len));
+
+                   lp = (lp % src_len);
+                   if (m >= src_len)
+                       { lp = src_len - lp - 1;  a = 257 - a; }
+                 }
+              *dst = src[lp];  *mask = 255;
+              if (lp + 1 < src_len)
+                 *dst = INTERP_256(a, src[lp + 1], *dst);
+              if (l == (src_len - 1))
+                  *mask = 255 - a0;
+              if (l == 0)
+                  *mask = a0;
+              if (r == r0)
+                  *mask = ((rr - rr0) >> 8);
+              if (r == r1)
+                  *mask = 255 - ((rr - rr1) >> 8);
+            }
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI + atan2(yy, xx));
+       int  l = ll >> 16;
+
+       *dst = 0;
+       l += ((ll - (l << 16)) >> 15);
+       if (l < src_len)
+         {
+           l += off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI + atan2(yy, xx));
+       int  l = ll >> 16, lp;
+
+       *dst = 0;
+       if (l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
+
+           lp = l + off;
+           lp = lp % src_len;
+           if (lp < 0)
+               lp += src_len;
+           *dst = src[lp];
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (lp == (src_len - 1))
+               *dst = INTERP_256(a, src[0], *dst);
+           if (l == (src_len - 1))
+               *dst = MUL_256(257 - a0, *dst);
+           if (l == 0)
+               *dst = MUL_256(a0, *dst);
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI + atan2(yy, xx)), l = ll >> 16;
+
+       *dst = 0;  *mask = 0;
+       l += (ll - (l << 16)) >> 15;
+       if (l < src_len)
+         {
+           l += off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI +  atan2(yy, xx));
+       int  l = ll >> 16, lp;
+
+       *dst = 0;  *mask = 0;
+       if (l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
+
+           lp = l + off;
+           lp = lp % src_len;
+           if (lp < 0)
+               lp += src_len;
+           *dst = src[lp];  *mask = 255;
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (lp == (src_len - 1))
+               *dst = INTERP_256(a, src[0], *dst);
+           if (l == (src_len - 1))
+               *mask = 255 - a0;
+           if (l == 0)
+               *mask = a0;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_repeat_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+           int  ll = ss * (M_PI +  atan2(yy, xx));
+           int  l = ll >> 16;
+
+           l += (ll - (l << 16)) >> 15;
+           if (l < src_len)
+             {
+               l += off;
+               l = l % src_len;
+               if (l < 0)
+                  l += src_len;
+               *dst = src[l];
+             }
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_repeat_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   int     rr0 = r0 << 16, rr1 = r1 << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16, lp;
+
+           if (l < src_len)
+             {
+               DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
+
+               lp = l + off;
+               lp = lp % src_len;
+               if (lp < 0)
+                  lp += src_len;
+               *dst = src[lp];
+               if (lp + 1 < src_len)
+                  *dst = INTERP_256(a, src[lp + 1], *dst);
+               if (lp == (src_len - 1))
+                  *dst = INTERP_256(a, src[0], *dst);
+               if (l == (src_len - 1))
+                  *dst = MUL_256(257 - a0, *dst);
+               if (l == 0)
+                  *dst = MUL_256(a0, *dst);
+               if (r == r0)
+                 {
+                   a = 1 + ((rr - rr0) >> 8);
+                   *dst = MUL_256(a, *dst);
+                 }
+               if (r == r1)
+                 {
+                   a = 256 - ((rr - rr1) >> 8);
+                   *dst = MUL_256(a, *dst);
+                 }
+             }
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_repeat_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16;
+
+           l += (ll - (l << 16)) >> 15;
+           if (l < src_len)
+             {
+               l += off;
+               l = l % src_len;
+               if (l < 0)
+                  l += src_len;
+               *dst = src[l];  *mask = 255;
+             }
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_restrict_repeat_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   int     rr0 = r0 << 16, rr1 = r1 << 16;
+   float   off = gdata->off * (src_len - 1);
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16, lp;
+
+           if (l < src_len)
+             {
+               DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
+
+               lp = l + off;
+               lp = lp % src_len;
+               if (lp < 0)
+                  lp += src_len;
+               *dst = src[lp];  *mask = 255;
+               if (lp + 1 < src_len)
+                  *dst = INTERP_256(a, src[lp + 1], *dst);
+               if (lp == (src_len - 1))
+                  *dst = INTERP_256(a, src[0], *dst);
+               if (l == (src_len - 1))
+                  *mask = 255 - a0;
+               if (l == 0)
+                  *mask = a0;
+               if (r == r0)
+                  *mask = ((rr - rr0) >> 8);
+               if (r == r1)
+                  *mask = 255 - ((rr - rr1) >> 8);
+             }
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI +  atan2(yy, xx));
+       int  l = ll >> 16;
+
+       l += (ll - (l << 16)) >> 15;
+       if (l >= src_len)
+           l = src_len - 1;
+       *dst++ = src[l];  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = ss * (M_PI +  atan2(yy, xx));
+       int  l = ll >> 16;
+       DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+       if (l + 1 < src_len)
+          *dst = INTERP_256(a, src[l + 1], src[l]);
+       else
+          *dst = src[src_len - 1];
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_pad_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16;
+
+           l += (ll - (l << 16)) >> 15;
+           if (l >= src_len)
+               l = src_len - 1;
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_pad_aa_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   int     rr0 = r0 << 16, rr1 = r1 << 16;
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16;
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           if (l + 1 < src_len)
+               *dst = INTERP_256(a, src[l + 1], src[l]);
+           else
+               *dst = src[src_len - 1];
+           if (r == r0)
+             {
+               a = 1 + ((rr - rr0) >> 8);
+               *dst = MUL_256(a, *dst);
+             }
+           if (r == r1)
+             {
+               a = 256 - ((rr - rr1) >> 8);
+               *dst = MUL_256(a, *dst);
+             }
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_pad_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16;
+
+           l += (ll - (l << 16)) >> 15;
+           if (l >= src_len)
+               l = src_len - 1;
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+angular_pad_aa_masked_annulus(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Angular_Data  *gdata = (Angular_Data *)params_data;
+   int     xx, yy;
+   int     ss = (gdata->s) << 16;
+   int     r1 = gdata->s, r0 = gdata->an * r1;
+   int     rr0 = r0 << 16, rr1 = r1 << 16;
+
+   SETUP_ANGULAR_FILL
+
+   while (dst < dst_end)
+     {
+       int rr = hypot(xx, yy), r = (rr >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ( (r >= r0) && (r <= r1) )
+         {
+           int  ll = ss * (M_PI + atan2(yy, xx));
+           int  l = ll >> 16;
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           if (l + 1 < src_len)
+               *dst = INTERP_256(a, src[l + 1], src[l]);
+           else
+               *dst = src[src_len - 1];
+
+           *mask = 255;
+           if (r == r0)
+               *mask = ((rr - rr0) >> 8);
+           if (r == r1)
+               *mask = 255 - ((rr - rr1) >> 8);
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
diff --git a/src/lib/engines/common/evas_gradient_linear.c b/src/lib/engines/common/evas_gradient_linear.c
new file mode 100644 (file)
index 0000000..8095285
--- /dev/null
@@ -0,0 +1,1510 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <math.h>
+
+#include "evas_common.h"
+#include "evas_gradient_private.h"
+
+#define GRAD_LINEAR_DIAG 1
+#define GRAD_LINEAR_CODIAG 2
+
+typedef struct _Linear_Data   Linear_Data;
+struct _Linear_Data
+{
+   int    type;
+
+   int    yy0;
+   float  ca, sa;
+   float  off;
+   int    len;
+
+   unsigned char at_angle : 1;
+};
+
+static void
+linear_init(void);
+
+static void
+linear_shutdown(void);
+
+static void
+linear_init_geom(RGBA_Gradient *gr);
+
+static void
+linear_setup_geom(RGBA_Gradient *gr);
+
+static void
+linear_free_geom(void *gdata);
+
+static int
+linear_has_alpha(RGBA_Gradient *gr, int op);
+
+static int
+linear_has_mask(RGBA_Gradient *gr, int op);
+
+static int
+linear_get_map_len(RGBA_Gradient *gr);
+
+static Gfx_Func_Gradient_Fill
+linear_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa);
+
+static RGBA_Gradient_Type  linear = {"linear", linear_init, linear_shutdown,
+                                    linear_init_geom, linear_setup_geom, linear_free_geom,
+                                    linear_has_alpha, linear_has_mask,
+                                    linear_get_map_len, linear_get_fill_func};
+
+
+
+/** internal functions **/
+static void
+linear_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+linear_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+
+
+RGBA_Gradient_Type  *
+evas_common_gradient_linear_get(void)
+{
+    return &linear;
+}
+
+static void
+linear_init(void)
+{
+}
+
+static void
+linear_shutdown(void)
+{
+}
+
+static void
+linear_free_geom(void *gdata)
+{
+   Linear_Data *data = (Linear_Data *)gdata;
+   if (data) free(data);
+}
+
+static void
+linear_init_geom(RGBA_Gradient *gr)
+{
+   Linear_Data *linear_data;
+
+   if (!gr || (gr->type.geometer != &linear)) return;
+   linear_data = (Linear_Data *)gr->type.gdata;
+   if (!linear_data)
+     {
+       linear_data = calloc(1, sizeof(Linear_Data));
+       if (!linear_data)  return;
+       linear_data->type = 0;
+       linear_data->yy0 = 0;
+       linear_data->ca = 1.0;
+       linear_data->sa = 0.0;
+       linear_data->off = 0.0;
+       linear_data->len = 32;
+       linear_data->at_angle = 0;
+       gr->type.gdata = linear_data;
+     }
+
+   linear_data->type = 0;
+   if (gr->type.name && !strcmp(gr->type.name, "linear.diag"))
+       linear_data->type = GRAD_LINEAR_DIAG;
+   else if (gr->type.name && !strcmp(gr->type.name, "linear.codiag"))
+       linear_data->type = GRAD_LINEAR_CODIAG;
+}
+
+static void
+linear_setup_geom(RGBA_Gradient *gr)
+{
+   Linear_Data *linear_data;
+   float  angle, a, ca, sa;
+   int    xoff = 0, yoff = 0;
+
+   if (!gr || (gr->type.geometer != &linear)) return;
+   linear_data = (Linear_Data *)gr->type.gdata;
+   if (!linear_data) return;
+
+   angle = gr->map.angle;
+   if (linear_data->type == GRAD_LINEAR_DIAG)
+       angle += ((atan2(gr->fill.h - 1, gr->fill.w - 1) * 180.0) / M_PI) - 90.0;
+   else if (linear_data->type == GRAD_LINEAR_CODIAG)
+       angle -= ((atan2(gr->fill.h - 1, gr->fill.w - 1) * 180.0) / M_PI) - 90.0;
+   a = ((angle + 90.0) * M_PI) / 180.0;
+   ca = cos(a);
+   sa = sin(a);
+   if ((sa >= 0) && (ca <= 0))
+     {
+       ca = -ca;
+       xoff = -(gr->fill.w - 1);
+     }
+   else if ((sa <= 0) && (ca <= 0))
+     {
+       ca = -ca;  sa = -sa;
+       xoff = -(gr->fill.w - 1);
+       yoff = -(gr->fill.h - 1);
+     }
+   else if ((sa <= 0) && (ca >= 0))
+     {
+       sa = -sa;
+       yoff = -(gr->fill.h - 1);
+     }
+   linear_data->len = 0.9961 + (ca * gr->fill.w) + (sa * gr->fill.h);
+
+   a = (angle * M_PI) / 180.0;
+   linear_data->ca = cos(a);
+   linear_data->sa = sin(a);
+
+   linear_data->yy0 = (linear_data->ca * (yoff << 16)) - (linear_data->sa * (xoff << 16));
+   linear_data->off = gr->map.offset;
+
+   if ((linear_data->ca != 1.0) || (linear_data->sa != 0.0))
+       linear_data->at_angle = 1;
+}
+
+static int
+linear_has_alpha(RGBA_Gradient *gr, int op)
+{
+   if (!gr || (gr->type.geometer != &linear)) return 0;
+   if (gr->has_alpha | gr->map.has_alpha)
+       return 1;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+       return 0;
+   if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
+         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
+         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
+       return 1;
+   return 0;
+}
+
+static int
+linear_has_mask(RGBA_Gradient *gr, int op)
+{
+   if (!gr || (gr->type.geometer != &linear)) return 0;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+     {
+       if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
+             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
+             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
+           return 1;
+     }
+   return 0;
+}
+
+static int
+linear_get_map_len(RGBA_Gradient *gr)
+{
+   Linear_Data   *linear_data;
+
+   if (!gr || (gr->type.geometer != &linear)) return 0;
+   linear_data = (Linear_Data *)gr->type.gdata;
+   if (!linear_data) return 0;
+   return linear_data->len;
+}
+
+static Gfx_Func_Gradient_Fill
+linear_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa)
+{
+   Linear_Data   *linear_data;
+   Gfx_Func_Gradient_Fill  sfunc = NULL;
+   int masked_op = 0;
+
+   if (!gr || (gr->type.geometer != &linear))
+       return sfunc;
+   linear_data = (Linear_Data *)gr->type.gdata;
+   if (!linear_data) return sfunc;
+
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+       masked_op = 1;
+
+   switch (gr->fill.spread)
+     {
+      case _EVAS_TEXTURE_REFLECT:
+       {
+        if (aa)
+              sfunc = linear_reflect_aa;
+        else
+              sfunc = linear_reflect;
+       }
+      break;
+      case _EVAS_TEXTURE_REPEAT:
+       {
+        if (aa)
+           sfunc = linear_repeat_aa;
+        else
+           sfunc = linear_repeat;
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT:
+       {
+        if (aa)
+          {
+            if (masked_op)
+               sfunc = linear_restrict_aa_masked;
+            else
+               sfunc = linear_restrict_aa;
+          }
+        else
+          {
+            if (masked_op)
+               sfunc = linear_restrict_masked;
+            else
+               sfunc = linear_restrict;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT_REFLECT:
+       {
+        if (aa)
+          {
+            if (masked_op)
+               sfunc = linear_restrict_reflect_aa_masked;
+            else
+               sfunc = linear_restrict_reflect_aa;
+          }
+        else
+          {
+            if (masked_op)
+               sfunc = linear_restrict_reflect_masked;
+            else
+               sfunc = linear_restrict_reflect;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT_REPEAT:
+       {
+        if (aa)
+          {
+            if (masked_op)
+               sfunc = linear_restrict_repeat_aa_masked;
+            else
+               sfunc = linear_restrict_repeat_aa;
+          }
+        else
+          {
+            if (masked_op)
+               sfunc = linear_restrict_repeat_masked;
+            else
+               sfunc = linear_restrict_repeat;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_PAD:
+       {
+        if (aa)
+              sfunc = linear_pad_aa;
+        else
+              sfunc = linear_pad;
+       }
+      break;
+      default:
+       sfunc = linear_reflect_aa;
+      break;
+     }
+   return sfunc;
+}
+
+/* the fill functions */
+
+#ifdef BUILD_MMX
+#define INTERP_256_P2R(a, s, mma, mms, mmd, mmz) \
+           MOV_A2R(a, mma) \
+           MOV_P2R(s, mms, mmz) \
+           INTERP_256_R2R(mma, mms, mmd, mm5)
+
+#define MUL_256_A2R(a, mma, mmd, mmz) \
+       MOV_A2R(a, mma) \
+       MUL4_256_R2R(mma, mmd)
+#endif
+
+#define AXIS_ALIGNED \
+   ( ((ayy == 0) || (ayx == 0)) && ((gdata->ca == 0.0) || (gdata->sa == 0.0)) )
+
+#define SETUP_LINEAR_FILL \
+   if (gdata->at_angle) \
+     { \
+       ayx = (-gdata->sa * axx) + (gdata->ca * ayx); \
+       ayy = (-gdata->sa * axy) + (gdata->ca * ayy); \
+     } \
+   yy = (ayx * x) + (ayy * y) + gdata->yy0;
+
+
+static void
+linear_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   SETUP_LINEAR_FILL
+
+   if (ayx == 0)
+     {
+       DATA32  c;
+
+       y = (yy >> 16) + off;
+       if (y < 0)  y = -y;
+       if (y >= src_len)
+         {
+           int  m = (y % (2 * src_len));
+
+           y = (y % src_len);
+           if (m >= src_len)
+               y = src_len - y - 1;
+         }
+       c = src[y];
+       while (dst < dst_end)
+           *dst++ = c;
+       return;
+     }
+
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       l += ((yy - (l << 16)) >> 15) + off;
+       if (l < 0)  l = -l;
+       if (l >= src_len)
+         {
+           int  m = (l % (2 * src_len));
+
+           l = (l % src_len);
+           if (m >= src_len)
+               l = src_len - l - 1;
+         }
+       *dst++ = src[l];  yy += ayx;
+     }
+}
+
+static void
+linear_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   if (AXIS_ALIGNED)
+     {
+       linear_reflect(src, src_len, dst, mask, dst_len, x, y,
+                      axx, axy, ayx, ayy, params_data);
+       return;
+     }
+
+   SETUP_LINEAR_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+       int  a = 1 + ((yy - (l << 16)) >> 8);
+
+       l += off;
+       if (l < 0) { l = -l;  a = 257 - a; }
+       if (l >= src_len)
+         {
+           int  m = (l % (2 * src_len));
+
+           l = (l % src_len);
+           if (m >= src_len)
+             { l = src_len - l - 1;  a = 257 - a; }
+         }
+#ifdef BUILD_MMX
+       MOV_P2R(src[l], mm1, mm0)
+#else
+       *dst = src[l];
+#endif
+       if (l + 1 < src_len)
+         {
+#ifdef BUILD_MMX
+           INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
+#else
+           *dst = INTERP_256(a, src[l + 1], *dst);
+#endif
+         }
+#ifdef BUILD_MMX
+       MOV_R2P(mm1, *dst, mm0)
+#endif
+       dst++;  yy += ayx;
+     }
+}
+
+static void
+linear_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   SETUP_LINEAR_FILL
+
+   if (ayx == 0)
+     {
+       DATA32  c;
+
+       y = (yy >> 16) + off;
+       y = y % src_len;
+       if (y < 0)
+          y += src_len;
+       c = src[y];
+       while (dst < dst_end)
+           *dst++ = c;
+       return;
+     }
+
+   if (ayy == 0)
+     {
+       Gfx_Func_Copy  func;
+       int  l;
+
+       x = (yy >> 16) + off;
+       x = x % src_len;
+       if (x < 0)
+          x += src_len;
+       if (ayx < 0)
+         {
+           l = x + 1;  x = 0;
+         }
+       else
+           l = src_len - x;
+       if (l > dst_len) l = dst_len;
+       func = evas_common_draw_func_copy_get(1, (ayx < 0 ? -1 : 0));
+       func(src + x, dst, l);
+       if (l == dst_len) return;
+       dst += l;  dst_len -= l;
+       l = dst_len / src_len;
+       while (l--)
+         {
+           func(src, dst, src_len);
+           dst += src_len;
+         }
+       l = dst_len % src_len;
+       if (ayx < 0)
+          src += src_len - l;
+       func(src, dst, l);
+       return;
+     }
+
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       l += ((yy - (l << 16)) >> 15) + off;
+       l = l % src_len;
+       if (l < 0)
+          l += src_len;
+       *dst++ = src[l];  yy += ayx;
+     }
+}
+
+static void
+linear_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   if (AXIS_ALIGNED)
+     {
+       linear_repeat(src, src_len, dst, mask, dst_len, x, y,
+                     axx, axy, ayx, ayy, params_data);
+       return;
+     }
+
+   SETUP_LINEAR_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+       int  a = 1 + ((yy - (l << 16)) >> 8);
+
+       l += off;
+       l = l % src_len;
+       if (l < 0)
+          l += src_len;
+#ifdef BUILD_MMX
+       MOV_P2R(src[l], mm1, mm0)
+#else
+       *dst = src[l];
+#endif
+       if (l + 1 < src_len)
+         {
+#ifdef BUILD_MMX
+           INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
+#else
+           *dst = INTERP_256(a, src[l + 1], *dst);
+#endif
+         }
+       if (l == (src_len - 1))
+         {
+#ifdef BUILD_MMX
+           INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
+#else
+          *dst = INTERP_256(a, src[0], *dst);
+#endif
+         }
+#ifdef BUILD_MMX
+       MOV_R2P(mm1, *dst, mm0)
+#endif
+       dst++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      yy;
+
+   SETUP_LINEAR_FILL
+
+   if (ayx == 0)
+     {
+       DATA32  c;
+
+       y = (yy >> 16);
+       if ((y < 0) || (y >= src_len))
+         {
+           memset(dst, 0, sizeof(DATA32) * dst_len);
+           return;
+         }
+       c = src[y];
+       while (dst < dst_end)
+           *dst++ = c;
+       return;
+     }
+
+   if (ayy == 0)
+     {
+       Gfx_Func_Copy  func;
+
+       x = yy >> 16;
+       ayx = (ayx < 0 ? -1 : 1);
+       if ((unsigned)x < src_len)
+         {
+           if ((ayx > 0) && ((src_len - x) >= dst_len))
+             {
+               func = evas_common_draw_func_copy_get(dst_len, 0);
+               func(src + x, dst, dst_len);
+               return;
+             }
+           if ((ayx < 0) && (x >= (dst_len - 1)))
+             {
+               func = evas_common_draw_func_copy_get(dst_len, -1);
+               func(src + x - (dst_len - 1), dst, dst_len);
+               return;
+             }
+         }
+       while (dst < dst_end)
+         {
+           *dst = 0;
+           if ((unsigned)x < src_len)
+               *dst = src[x];
+           dst++;  x += ayx;
+         }
+       return;
+     }
+
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       l += (yy - (l << 16)) >> 15;
+       *dst = 0;
+       if ((unsigned)l < src_len)
+           *dst = src[l];
+       dst++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      yy;
+
+   if (AXIS_ALIGNED)
+     {
+       linear_restrict(src, src_len, dst, mask, dst_len, x, y,
+                       axx, axy, ayx, ayy, params_data);
+       return;
+     }
+
+   SETUP_LINEAR_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       *dst = 0;
+       if ((unsigned)(l + 1) < (src_len + 1))
+         {
+           DATA32 a = 1 + ((yy - (l << 16)) >> 8);
+           int    lp = l;
+
+           if (l == -1) lp = 0;
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+           if (l == -1)
+             {
+#ifdef BUILD_MMX
+               MUL_256_A2R(a, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(a, *dst);
+#endif
+             }
+           if (l == (src_len - 1))
+             {
+#ifdef BUILD_MMX
+               a = 257 - a;
+               MUL_256_A2R(a, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(257 - a, *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+         }
+       dst++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      yy;
+
+   SETUP_LINEAR_FILL
+
+   if (ayx == 0)
+     {
+       DATA32  c;
+
+       y = (yy >> 16);
+       if ((y < 0) || (y >= src_len))
+         {
+           memset(dst, 0, sizeof(DATA32) * dst_len);
+           memset(mask, 0, sizeof(DATA8) * dst_len);
+           return;
+         }
+       c = src[y];
+       while (dst < dst_end)
+         {
+           *dst++ = c;  *mask++ = 255;
+         }
+       return;
+     }
+
+   if (ayy == 0)
+     {
+       Gfx_Func_Copy  func;
+
+       x = yy >> 16;
+       ayx = (ayx < 0 ? -1 : 1);
+       if ((unsigned)x < src_len)
+         {
+           if ((ayx > 0) && ((src_len - x) >= dst_len))
+             {
+               func = evas_common_draw_func_copy_get(dst_len, 0);
+               func(src + x, dst, dst_len);
+               memset(mask, 255, sizeof(DATA8) * dst_len);
+               return;
+             }
+           if ((ayx < 0) && (x >= (dst_len - 1)))
+             {
+               func = evas_common_draw_func_copy_get(dst_len, -1);
+               func(src + x - (dst_len - 1), dst, dst_len);
+               memset(mask, 255, sizeof(DATA8) * dst_len);
+               return;
+             }
+         }
+       while (dst < dst_end)
+         {
+           *dst = 0;  *mask = 0;
+           if ((unsigned)x < src_len)
+             {
+               *dst = src[x];  *mask = 255;
+             }
+           dst++;  mask++;  x += ayx;
+         }
+       return;
+     }
+
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       l += (yy - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      yy;
+
+   if (AXIS_ALIGNED)
+     {
+       linear_restrict_masked(src, src_len, dst, mask, dst_len, x, y,
+                              axx, axy, ayx, ayy, params_data);
+       return;
+     }
+
+   SETUP_LINEAR_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)(l + 1) < (src_len + 1))
+         {
+           DATA32 a = 1 + ((yy - (l << 16)) >> 8);
+           int    lp = l;
+
+           if (l == -1) lp = 0;
+
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];  *mask = 255;
+#endif
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+           if (l == -1)
+               *mask = a - 1;
+           if (l == (src_len - 1))
+               *mask = 256 - a;
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+         }
+       dst++;  mask++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   SETUP_LINEAR_FILL
+
+   if (ayx == 0)
+     {
+       DATA32  c;
+
+       y = (yy >> 16);
+       if ((y < 0) || (y >= src_len))
+         {
+           memset(dst, 0, sizeof(DATA32) * dst_len);
+           return;
+         }
+       y += off;
+       if (y < 0) y = -y;
+       if (y >= src_len)
+         {
+           int  m = (y % (2 * src_len));
+
+           y = (y % src_len);
+           if (m >= src_len)
+               y = src_len - y - 1;
+         }
+       c = src[y];
+       while (dst < dst_end)
+           *dst++ = c;
+       return;
+     }
+
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       l += (yy - (l << 16)) >> 15;
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                  l = src_len - l - 1;
+             }
+           *dst = src[l];
+         }
+       dst++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   if (AXIS_ALIGNED)
+     {
+       linear_restrict_reflect(src, src_len, dst, mask, dst_len, x, y,
+                               axx, axy, ayx, ayy, params_data);
+       return;
+     }
+
+   SETUP_LINEAR_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       *dst = 0;
+       if ((unsigned)(l + 1) < (src_len + 1))
+         {
+           DATA32 a = 1 + ((yy - (l << 16)) >> 8), a0 = a;
+           int    lp = l + off;
+
+           if (l == -1) lp = off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+           if (l == -1)
+             {
+#ifdef BUILD_MMX
+               MUL_256_A2R(a0, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(a0, *dst);
+#endif
+             }
+           if (l == (src_len - 1))
+             {
+#ifdef BUILD_MMX
+               a0 = 257 - a0;
+               MUL_256_A2R(a0, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(257 - a0, *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+         }
+       dst++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   SETUP_LINEAR_FILL
+
+   if (ayx == 0)
+     {
+       DATA32  c;
+
+       y = (yy >> 16);
+       if ((y < 0) || (y >= src_len))
+         {
+           memset(dst, 0, sizeof(DATA32) * dst_len);
+           memset(mask, 0, sizeof(DATA8) * dst_len);
+           return;
+         }
+       y += off;
+       if (y < 0) y = -y;
+       if (y >= src_len)
+         {
+           int  m = (y % (2 * src_len));
+
+           y = (y % src_len);
+           if (m >= src_len)
+               y = src_len - y - 1;
+         }
+       c = src[y];
+       while (dst < dst_end)
+         { *dst++ = c;  *mask++ = 255; }
+       return;
+     }
+
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       l += ((yy - (l << 16)) >> 15);
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                  l = src_len - l - 1;
+             }
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   if (AXIS_ALIGNED)
+     {
+       linear_restrict_reflect_masked(src, src_len, dst, mask, dst_len, x, y,
+                                      axx, axy, ayx, ayy, params_data);
+       return;
+     }
+
+   SETUP_LINEAR_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)(l + 1) < (src_len + 1))
+         {
+           DATA32 a = 1 + ((yy - (l << 16)) >> 8), a0 = a - 1;
+           int    lp = l + off;
+
+           if (l == -1) lp = off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                  { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           *mask = 255;
+
+           if (lp + 1 < src_len)
+            {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+            }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+           if (l == -1)
+               *mask = a0;
+           if (l == (src_len - 1))
+               *mask = 255 - a0;
+         }
+       dst++;  mask++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   SETUP_LINEAR_FILL
+
+   if (ayx == 0)
+     {
+       DATA32  c;
+
+       y = (yy >> 16);
+       if ((y < 0) || (y >= src_len))
+         {
+           memset(dst, 0, sizeof(DATA32) * dst_len);
+           return;
+         }
+       y += off;
+       y = y % src_len;
+       if (y < 0)
+          y += src_len;
+       c = src[y];
+       while (dst < dst_end)
+           *dst++ = c;
+       return;
+     }
+
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       l += (yy - (l << 16)) >> 15;
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];
+         }
+       dst++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   if (AXIS_ALIGNED)
+     {
+       linear_restrict_repeat(src, src_len, dst, mask, dst_len, x, y,
+                              axx, axy, ayx, ayy, params_data);
+       return;
+     }
+
+   SETUP_LINEAR_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       *dst = 0;
+       if ((unsigned)(l + 1) < (src_len + 1))
+         {
+           DATA32 a = 1 + ((yy - (l << 16)) >> 8);
+           int    lp = l + off;
+
+           if (l == -1) lp = off;
+           lp = lp % src_len;
+           if (lp < 0)
+               lp += src_len;
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+           if (lp == (src_len - 1))
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[0], *dst);
+#endif
+             }
+           if (l == -1)
+             {
+#ifdef BUILD_MMX
+               MUL_256_A2R(a, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(a, *dst);
+#endif
+             }
+           if (l == (src_len - 1))
+             {
+#ifdef BUILD_MMX
+               a = 257 - a;
+               MUL_256_A2R(a, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(257 - a, *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+         }
+       dst++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   SETUP_LINEAR_FILL
+
+   if (ayx == 0)
+     {
+       DATA32  c;
+
+       y = (yy >> 16);
+       if ((y < 0) || (y >= src_len))
+         {
+           memset(dst, 0, sizeof(DATA32) * dst_len);
+           memset(mask, 0, sizeof(DATA8) * dst_len);
+           return;
+         }
+       y += off;
+       y = y % src_len;
+       if (y < 0)
+          y += src_len;
+       c = src[y];
+       while (dst < dst_end)
+         { *dst++ = c;  *mask++ = 255; }
+       return;
+     }
+
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       l += ((yy - (l << 16)) >> 15);
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  yy += ayx;
+     }
+}
+
+static void
+linear_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      off = gdata->off * (src_len - 1);
+   int      yy;
+
+   if (AXIS_ALIGNED)
+     {
+       linear_restrict_repeat_masked(src, src_len, dst, mask, dst_len, x, y,
+                                     axx, axy, ayx, ayy, params_data);
+       return;
+     }
+
+   SETUP_LINEAR_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)(l + 1) < (src_len + 1))
+         {
+           DATA32 a = 1 + ((yy - (l << 16)) >> 8);
+           int    lp = l + off;
+
+           if (l == -1) lp = off;
+           lp = lp % src_len;
+           if (lp < 0)
+               lp += src_len;
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           *mask = 255;
+
+           if (lp + 1 < src_len)
+            {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+            }
+           if (lp == (src_len - 1))
+            {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[0], *dst);
+#endif
+            }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+           if (l == -1)
+               *mask = a - 1;
+           if (l == (src_len - 1))
+               *mask = 256 - a;
+         }
+       dst++;  mask++;  yy += ayx;
+     }
+}
+
+static void
+linear_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      yy;
+
+   SETUP_LINEAR_FILL
+
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       l += (yy - (l << 16)) >> 15;
+       if (l < 0) l = 0;
+       if (l >= src_len) l = src_len - 1;
+       *dst = src[l];
+       dst++;  yy += ayx;
+     }
+}
+
+static void
+linear_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Linear_Data  *gdata = (Linear_Data *)params_data;
+   int      yy;
+
+   if (AXIS_ALIGNED)
+     {
+       linear_pad(src, src_len, dst, mask, dst_len, x, y,
+                  axx, axy, ayx, ayy, params_data);
+       return;
+     }
+
+   SETUP_LINEAR_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  l = (yy >> 16);
+
+       if (l < 0) *dst = src[0];
+       if (l >= src_len) *dst = src[src_len - 1];
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((yy - (l << 16)) >> 8);
+
+#ifdef BUILD_MMX
+           MOV_P2R(src[l], mm1, mm0)
+#else
+           *dst = src[l];
+#endif
+           if (l && (l + 1 < src_len))
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[l + 1], *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+         }
+       dst++;  yy += ayx;
+     }
+}
diff --git a/src/lib/engines/common/evas_gradient_main.c b/src/lib/engines/common/evas_gradient_main.c
new file mode 100644 (file)
index 0000000..7a18836
--- /dev/null
@@ -0,0 +1,924 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <math.h>
+
+#include "evas_common.h"
+#include "evas_blend_private.h"
+#include "evas_gradient_private.h"
+
+
+static void _get_word(char *in, char *key);
+static void evas_common_gradient_map_argb(RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len);
+static void evas_common_gradient_map_ahsv(RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len);
+
+static  int grad_initialised = 0;
+
+static void
+_get_word(char *in, char *key)
+{
+   char  *p, *pp;
+   int    l;
+
+   if (!key) return;
+   *key = 0;
+   if (!in || !*in) return;
+
+   p = in;
+   while (*p && isspace(*p))
+       p++;
+   if (!*p) return;
+   pp = p;
+   while (*pp && !isspace(*pp))
+       pp++;
+   l = pp - p;
+   if (l >= 255) return;
+   *(p + l) = 0;
+   strncpy(key, p, l + 1);
+}
+
+static void
+_evas_common_gradient_stops_free(RGBA_Gradient *gr)
+{
+   if (!gr) return;
+   if (gr->color.stops)
+     {
+       Evas_Object_List *l;
+
+       while (gr->color.stops)
+         {
+          l = gr->color.stops;
+          gr->color.stops = evas_object_list_remove(gr->color.stops, gr->color.stops);
+          free(l);
+         }
+       gr->color.stops = NULL;
+       gr->color.nstops = 0;
+     }
+   if (gr->alpha.stops)
+     {
+       Evas_Object_List *l;
+
+       while (gr->alpha.stops)
+         {
+          l = gr->alpha.stops;
+          gr->alpha.stops = evas_object_list_remove(gr->alpha.stops, gr->alpha.stops);
+          free(l);
+         }
+       gr->alpha.stops = NULL;
+       gr->alpha.nstops = 0;
+     }
+}
+
+
+char *
+evas_common_gradient_get_key_fval(char *in, char *key, float *val)
+{
+   char   *p, *pp, sval[256];
+
+   if (!key || !val) return NULL;
+   *key = 0;
+   if (!in || !*in) return NULL;
+   p = strchr(in, '=');
+   if (!p || !*p)  return NULL;
+   *p = 0;  p++;
+   if (!*p)  return NULL;
+   pp = strchr(p, ';');
+   if (!pp || !*pp)  return NULL;
+   _get_word(in, key);
+   if (!*key)  return NULL;
+   *pp = 0;
+   _get_word(p, sval);
+   if (!sval[0])  return NULL;
+   *val = atof(sval);
+   return (pp + 1);
+}
+
+EAPI void
+evas_common_gradient_init(void)
+{
+   RGBA_Gradient_Type  *geom;
+
+   if (grad_initialised)
+       return;
+   geom = evas_common_gradient_geometer_get("linear");
+   if (geom)
+       geom->init();
+   geom = evas_common_gradient_geometer_get("radial");
+   if (geom)
+       geom->init();
+   geom = evas_common_gradient_geometer_get("rectangular");
+   if (geom)
+       geom->init();
+   geom = evas_common_gradient_geometer_get("angular");
+   if (geom)
+       geom->init();
+   geom = evas_common_gradient_geometer_get("sinusoidal");
+   if (geom)
+       geom->init();
+   grad_initialised = 1;
+}
+
+void
+evas_common_gradient_shutdown(void)
+{
+   RGBA_Gradient_Type  *geom;
+
+   if (!grad_initialised)
+       return;
+   geom = evas_common_gradient_geometer_get("linear");
+   if (geom)
+       geom->shutdown();
+   geom = evas_common_gradient_geometer_get("radial");
+   if (geom)
+       geom->shutdown();
+   geom = evas_common_gradient_geometer_get("rectangular");
+   if (geom)
+       geom->shutdown();
+   geom = evas_common_gradient_geometer_get("angular");
+   if (geom)
+       geom->shutdown();
+   geom = evas_common_gradient_geometer_get("sinusoidal");
+   if (geom)
+       geom->shutdown();
+   grad_initialised = 0;
+}
+
+EAPI RGBA_Gradient *
+evas_common_gradient_new(void)
+{
+   RGBA_Gradient *gr;
+
+   gr = calloc(1, sizeof(RGBA_Gradient));
+   gr->references = 1;
+   return gr;
+}
+
+EAPI void
+evas_common_gradient_free(RGBA_Gradient *gr)
+{
+   if (!gr) return;
+   gr->references--;
+   if (gr->references > 0) return;
+   evas_common_gradient_clear(gr);
+   if (gr->type.name) free(gr->type.name);
+   if (gr->type.params) free(gr->type.params);
+   if (gr->type.geometer && gr->type.gdata)
+       gr->type.geometer->geom_free(gr->type.gdata);
+   if (gr->map.data) free(gr->map.data);
+   free(gr);
+}
+
+EAPI void
+evas_common_gradient_clear(RGBA_Gradient *gr)
+{
+   if (!gr) return;
+
+   _evas_common_gradient_stops_free(gr);
+
+   if (gr->color.data && !gr->imported_data)
+       free(gr->color.data);
+   gr->color.data = NULL;
+   gr->color.len = 0;
+   if (gr->alpha.data && !gr->imported_data)
+       free(gr->alpha.data);
+   gr->alpha.data = NULL;
+   gr->alpha.len = 0;
+
+   gr->imported_data = 0;
+   gr->has_alpha = 0;
+}
+
+EAPI void
+evas_common_gradient_color_stop_add(RGBA_Gradient *gr, int r, int g, int b, int a, int dist)
+{
+   RGBA_Gradient_Color_Stop *gc, *gcm, *gc_last;
+
+   if (!gr) return;
+   if (gr->imported_data)
+     {
+       gr->color.data = NULL;
+       gr->color.len = 0;
+       gr->alpha.data = NULL;
+       gr->alpha.len = 0;
+       gr->imported_data = 0;
+       gr->has_alpha = 0;
+     }
+   gc = malloc(sizeof(RGBA_Gradient_Color_Stop));
+   if (!gc) return;
+   if (dist < 1) dist = 1;
+   if (dist > 32768) dist = 32768;
+   if (r < 0) r = 0;  if (r > 255) r = 255;
+   if (g < 0) g = 0;  if (g > 255) g = 255;
+   if (b < 0) b = 0;  if (b > 255) b = 255;
+   if (a < 0) a = 0;  if (a > 255) a = 255;
+   gc->r = r;
+   gc->g = g;
+   gc->b = b;
+   gc->a = a;
+   gc->dist = dist;
+
+   if (!gr->color.stops)
+     {
+       gr->color.stops = evas_object_list_append(gr->color.stops, gc);
+       gr->color.nstops = 1;
+       gr->color.len = 1;
+       if (a < 255)
+          gr->has_alpha = 1;
+       return;
+     }
+   gcm = malloc(sizeof(RGBA_Gradient_Color_Stop));
+   if (!gcm) { free(gc); return; }
+   gc_last = (RGBA_Gradient_Color_Stop *)(gr->color.stops->last);
+   if ((dist + gc_last->dist + gr->color.len) > 65535)
+       { free(gc); free(gcm); return; }
+   gcm->r = (gc_last->r + r) / 2;
+   gcm->g = (gc_last->g + g) / 2;
+   gcm->b = (gc_last->b + b) / 2;
+   gcm->a = (gc_last->a + a) / 2;
+   gcm->dist = dist;
+   gr->color.stops = evas_object_list_append(gr->color.stops, gcm);
+   gr->color.len += gc_last->dist;
+   gr->color.stops = evas_object_list_append(gr->color.stops, gc);
+   gr->color.len += dist;
+   gr->color.nstops += 2;
+   if (a < 255)
+       gr->has_alpha = 1;
+}
+
+EAPI void
+evas_common_gradient_alpha_stop_add(RGBA_Gradient *gr, int a, int dist)
+{
+   RGBA_Gradient_Alpha_Stop *ga, *gam, *ga_last;
+
+   if (!gr) return;
+   if (gr->imported_data)
+     {
+       gr->color.data = NULL;
+       gr->color.len = 0;
+       gr->alpha.data = NULL;
+       gr->alpha.len = 0;
+       gr->imported_data = 0;
+       gr->has_alpha = 0;
+     }
+   ga = malloc(sizeof(RGBA_Gradient_Alpha_Stop));
+   if (!ga) return;
+   if (dist < 1) dist = 1;
+   if (dist > 32768) dist = 32768;
+   if (a < 0) a = 0;  if (a > 255) a = 255;
+   ga->a = a;
+   ga->dist = dist;
+
+   if (!gr->alpha.stops)
+     {
+       gr->alpha.stops = evas_object_list_append(gr->alpha.stops, ga);
+       gr->alpha.nstops = 1;
+       gr->alpha.len = 1;
+       if (a < 255)
+          gr->has_alpha = 1;
+       return;
+     }
+   gam = malloc(sizeof(RGBA_Gradient_Alpha_Stop));
+   if (!gam) { free(ga); return; }
+   ga_last = (RGBA_Gradient_Alpha_Stop *)(gr->alpha.stops->last);
+   if ((dist + ga_last->dist + gr->alpha.len) > 65535)
+       { free(ga); free(gam); return; }
+   gam->a = (ga_last->a + a) / 2;
+   gam->dist = dist;
+   gr->alpha.stops = evas_object_list_append(gr->alpha.stops, gam);
+   gr->alpha.len += ga_last->dist;
+   gr->alpha.stops = evas_object_list_append(gr->alpha.stops, ga);
+   gr->alpha.len += dist;
+   gr->alpha.nstops += 2;
+   if (a < 255)
+       gr->has_alpha = 1;
+}
+
+EAPI void
+evas_common_gradient_color_data_set(RGBA_Gradient *gr, DATA32 *data, int len, int alpha_flags)
+{
+   if (!gr) return;
+   if (!gr->imported_data)
+       evas_common_gradient_clear(gr);
+   if (len < 1) data = NULL;
+   if (!data) len = 0;
+   gr->color.data = data;
+   gr->color.len = len;
+   gr->has_alpha = !!alpha_flags;
+   gr->imported_data = 1;
+}
+
+EAPI void
+evas_common_gradient_alpha_data_set(RGBA_Gradient *gr, DATA8 *data, int len)
+{
+   if (!gr) return;
+   if (!gr->imported_data)
+       evas_common_gradient_clear(gr);
+   if (len < 1) data = NULL;
+   if (!data) len = 0;
+   gr->alpha.data = data;
+   gr->alpha.len = len;
+   gr->has_alpha = 1;
+   gr->imported_data = 1;
+}
+
+EAPI void
+evas_common_gradient_type_set(RGBA_Gradient *gr, const char *name, char *params)
+{
+   RGBA_Gradient_Type   *geometer;
+
+   if (!gr) return;
+   if (!name || !*name)
+       name = "linear";
+
+   geometer = evas_common_gradient_geometer_get(name);
+   if (!geometer) return;
+   if (gr->type.gdata && (geometer != gr->type.geometer))
+     {
+       if (gr->type.geometer)
+          gr->type.geometer->geom_free(gr->type.gdata);
+       gr->type.gdata = NULL;
+     }
+   gr->type.geometer = geometer;
+
+   if (gr->type.name) free(gr->type.name);
+   gr->type.name = strdup(name);
+
+   if (params && !*params) 
+       params = NULL;
+   if (gr->type.params) free(gr->type.params);
+   gr->type.params = NULL;
+   if (params) gr->type.params = strdup(params);
+
+   gr->type.geometer->geom_init(gr);
+}
+
+EAPI void
+evas_common_gradient_fill_set(RGBA_Gradient *gr, int x, int y, int w, int h)
+{
+   if (!gr) return;
+   gr->fill.x = x;
+   gr->fill.y = y;
+   if ((w < 1) && (h < 1))
+     { w = h = 1; }
+   gr->fill.w = w;
+   gr->fill.h = h;
+}
+
+EAPI void
+evas_common_gradient_fill_angle_set(RGBA_Gradient *gr, float angle)
+{
+   if (!gr) return;
+   gr->fill.angle = angle;
+}
+
+EAPI void
+evas_common_gradient_fill_spread_set(RGBA_Gradient *gr, int spread)
+{
+   if (!gr) return;
+   gr->fill.spread = spread;
+}
+
+EAPI void
+evas_common_gradient_map_offset_set(RGBA_Gradient *gr, float offset)
+{
+   if (!gr) return;
+   gr->map.offset = offset;
+}
+
+EAPI void
+evas_common_gradient_map_direction_set(RGBA_Gradient *gr, int direction)
+{
+   if (!gr) return;
+   gr->map.direction = (direction >= 0 ? 1 : -1);
+}
+
+EAPI void
+evas_common_gradient_map_angle_set(RGBA_Gradient *gr, float angle)
+{
+   if (!gr) return;
+   gr->map.angle = angle;
+}
+
+EAPI RGBA_Gradient_Type  *
+evas_common_gradient_geometer_get(const char *name)
+{
+   RGBA_Gradient_Type  *geom = NULL;
+
+   if (!name || !*name)
+       name = "linear";
+   if (!strcmp(name,"linear") || !strcmp(name,"linear.diag") || !strcmp(name,"linear.codiag"))
+       geom = evas_common_gradient_linear_get();
+   else if (!strcmp(name,"radial"))
+       geom = evas_common_gradient_radial_get();
+   else if (!strcmp(name,"angular"))
+       geom = evas_common_gradient_angular_get();
+   else if (!strcmp(name,"sinusoidal"))
+       geom = evas_common_gradient_sinusoidal_get();
+   else if (!strcmp(name,"rectangular"))
+       geom = evas_common_gradient_rectangular_get();
+   if (!geom)
+       geom = evas_common_gradient_linear_get();
+   return geom;
+}
+
+EAPI void
+evas_common_gradient_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
+                         int x, int y, int w, int h, RGBA_Gradient *gr)
+{
+   Gfx_Func_Gradient_Fill   gfunc;
+   RGBA_Gfx_Func            bfunc;
+   int             len;
+   int             xin, yin, xoff, yoff;
+   int             clx, cly, clw, clh;
+   int             axx, axy, ayx, ayy;
+   DATA32          *pdst, *dst_end, *buf, *map;
+   RGBA_Image      *argb_buf = NULL, *alpha_buf = NULL;
+   DATA8           *mask = NULL;
+   void            *gdata;
+   float           angle;
+   int             direct_copy = 0, buf_step = 0;
+
+   if (!dst || !dc || !gr || !dst || !dst->image.data)
+     return;
+   if (!gr->map.data || !gr->type.geometer)
+     return;
+   if ((gr->fill.w < 1) || (gr->fill.h < 1))
+     return;
+   if ((w < 1) || (h < 1))
+     return;
+   clx = 0;  cly = 0;  clw = dst->cache_entry.w;  clh = dst->cache_entry.h;
+   if ((clw < 1) || (clh < 1))  return;
+
+   if (dc->clip.use)
+     RECTS_CLIP_TO_RECT(clx,cly,clw,clh, dc->clip.x,dc->clip.y,dc->clip.w,dc->clip.h);
+   if ((clw < 1) || (clh < 1))  return;
+
+   xin = x;  yin = y;
+   RECTS_CLIP_TO_RECT(x,y,w,h, clx,cly,clw,clh);
+   if ((w < 1) || (h < 1))  return;
+
+   xoff = (x - xin) - gr->fill.x;
+   yoff = (y - yin) - gr->fill.y;
+
+   if (!gr->type.geometer->has_mask(gr, dc->render_op))
+     {
+       if ((dc->render_op == _EVAS_RENDER_FILL) ||
+           (dc->render_op == _EVAS_RENDER_COPY))
+         {
+            direct_copy = 1;  buf_step = dst->cache_entry.w;
+            if (gr->type.geometer->has_alpha(gr, dc->render_op))
+               dst->cache_entry.flags.alpha = 1;
+         }
+       else if ((dc->render_op == _EVAS_RENDER_BLEND) &&
+                !gr->type.geometer->has_alpha(gr, dc->render_op))
+         {
+            direct_copy = 1;  buf_step = dst->cache_entry.w;
+         }
+     }
+
+   if (!direct_copy)
+     {
+       argb_buf = evas_common_image_line_buffer_obtain(w);
+       if (!argb_buf)
+          return;
+       argb_buf->cache_entry.flags.alpha = gr->type.geometer->has_alpha(gr, dc->render_op) ? 1 : 0;
+
+       if (gr->type.geometer->has_mask(gr, dc->render_op))
+         {
+            alpha_buf = evas_common_image_alpha_line_buffer_obtain(w);
+            if (!alpha_buf)
+              {
+                 evas_common_image_line_buffer_release(argb_buf);
+                 return;
+              }
+            bfunc = evas_common_gfx_func_composite_pixel_mask_span_get(argb_buf, dst, w, dc->render_op);
+         }
+       else
+         bfunc = evas_common_gfx_func_composite_pixel_span_get(argb_buf, dst, w, dc->render_op);
+     }
+
+   gfunc = gr->type.geometer->get_fill_func(gr, dc->render_op, dc->anti_alias);
+   gdata = gr->type.gdata;
+   if (!gdata)
+     {
+       if (!direct_copy)
+         {
+           evas_common_image_line_buffer_release(argb_buf);
+           if (alpha_buf)
+               evas_common_image_alpha_line_buffer_release(alpha_buf);
+         }
+       return;
+     }
+
+   /* I TOLD YOU! this here STOPS the gradeint bugs. it's a missing
+    * emms() before doing floating point operations! the thread pipe code
+    * just brought it out reliably. i swear i had seen this long before i
+    * ever added the thread/pipe code.
+    * 
+    * now here is why it happens. NO drawing function... EXCEPT
+    * evas_common_polygon_draw() and evas_common_gradient_draw() use floating
+    * point for drawing (the poly stuff should really lose it actually), but
+    * nicely nestled in the poly draw code is a evas_common_cpu_end_opt()
+    * before it does any operations that would use floating point. the fact
+    * is the gradient code was LUCKY before without the thread pipes to almost
+    * all the time have another func do a evas_common_cpu_end_opt() before it
+    * was called. that was no longer the case with the thread renderer and
+    * it suffered. that is why on amd systems it seemed to work as i beileve
+    * on amd cpu's the amms done by evas_common_cpu_end_opt() is not needed
+    * to do floatingpoint ops again.
+    * 
+    * after a lot of futzing about - this was the culprit (well axx and axy
+    * were garbage values eventually i found after much debugging and i traced
+    * their garbageness back to here).
+    */
+   evas_common_cpu_end_opt();
+   
+   angle = (gr->fill.angle * M_PI) / 180.0;
+   axx = (cos(angle) * 65536.0);
+   ayy = axx;
+   axy = (sin(angle) * 65536.0);
+   ayx = -axy;
+
+   map = gr->map.data;
+   len = gr->map.len;
+   pdst = dst->image.data + (y * dst->cache_entry.w) + x;
+   dst_end = pdst + (h * dst->cache_entry.w);
+   if (!direct_copy)
+     {
+       buf = argb_buf->image.data;
+       if (alpha_buf)
+         mask = (DATA8 *)alpha_buf->image.data;
+     }
+   else
+     buf = pdst;
+   while (pdst < dst_end)
+     {
+#ifdef EVAS_SLI
+       if (((yoff + y) % dc->sli.h) == dc->sli.y)
+#endif
+         {
+            gfunc(map, len, buf, mask, w, xoff, yoff, axx, axy, ayx, ayy, gdata);
+            evas_common_cpu_end_opt();
+            if (!direct_copy)
+              bfunc(buf, mask, 0, pdst, w);
+            evas_common_cpu_end_opt();
+         }
+       buf += buf_step;
+       pdst += dst->cache_entry.w;
+       yoff++;
+     }
+   
+   if (!direct_copy)
+     {
+       evas_common_image_line_buffer_release(argb_buf);
+       if (alpha_buf)
+          evas_common_image_alpha_line_buffer_release(alpha_buf);
+     }
+}
+
+static void
+evas_common_gradient_map_argb(RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len)
+{
+   DATA32   color;
+   int      mul_use;
+
+   if (!gr || !dc)
+       return;
+   if (len < 1)
+     {
+       if (gr->map.data)
+          free(gr->map.data);
+       gr->map.data = NULL;
+       gr->map.len = 0;
+       return;
+     }
+   if ((len != gr->map.len) || (!gr->map.data))
+       gr->map.data = realloc(gr->map.data, len * sizeof(DATA32));
+   if (!gr->map.data)
+     { gr->map.len = 0; return; }
+   gr->map.len = len;
+   gr->map.has_alpha = gr->has_alpha;
+
+   color = dc->mul.col;
+   mul_use = dc->mul.use;
+   if (dc->mul.col == 0xffffffff)
+       mul_use = 0;
+
+   if ((!gr->imported_data) && (!gr->color.stops) && (!gr->alpha.stops))
+     {
+       static DATA32  p = 0xffffffff;
+
+       gr->color.data = &p;
+       gr->color.len = 1;
+       gr->imported_data = 1;
+       gr->has_alpha = 0;
+     }
+
+   if (gr->color.stops)
+     {
+       Evas_Object_List  *lc;
+       RGBA_Gradient_Color_Stop  *gc, *gc_next;
+       DATA32  *pmap, *map_end;
+       int   i, dii;
+       int   r, g, b, a;
+       int   next_r, next_g, next_b, next_a;
+       int   rr, drr, gg, dgg, bb, dbb, aa, daa;
+       int   mr = 256, mg = 256, mb = 256, ma = 256;
+
+       gr->color.data = realloc(gr->color.data, gr->color.len * sizeof(DATA32));
+       if (!gr->color.data)  return;
+
+       gc = (RGBA_Gradient_Color_Stop *)gr->color.stops;
+       r = gc->r;  g = gc->g;  b = gc->b;  a = gc->a;
+       if (mul_use)
+         {
+           mr = 1 + ((color >> 16) & 0xff);  mg = 1 + ((color >> 8) & 0xff);
+           mb = 1 + ((color) & 0xff);  ma = 1 + (color >> 24);
+           if (ma < 256)
+              gr->map.has_alpha = 1;
+           r = (r * mr) >> 8;  g = (g * mg) >> 8;
+           b = (b * mb) >> 8;  a = (a * ma) >> 8;
+          }
+       lc = gr->color.stops->next;
+       pmap = gr->color.data;  map_end = pmap + gr->color.len;
+
+       while (pmap < map_end)
+         {
+           if (lc)
+             {
+               i = gc->dist;
+               dii = 65536 / i;
+               gc_next = (RGBA_Gradient_Color_Stop *)lc;
+               next_r = gc_next->r;  next_g = gc_next->g;
+               next_b = gc_next->b;  next_a = gc_next->a;
+               if (mul_use)
+                 {
+                   next_r = (next_r * mr) >> 8;  next_g = (next_g * mg) >> 8;
+                   next_b = (next_b * mb) >> 8;  next_a = (next_a * ma) >> 8;
+                 }
+               rr = r << 16;  drr = ((next_r - r) * dii);
+               gg = g << 16;  dgg = ((next_g - g) * dii);
+               bb = b << 16;  dbb = ((next_b - b) * dii);
+               aa = a << 16;  daa = ((next_a - a) * dii);
+               while (i--)
+                 {
+                   r = rr >> 16;  r += (rr - (r << 16)) >> 15;
+                   g = gg >> 16;  g += (gg - (g << 16)) >> 15;
+                   b = bb >> 16;  b += (bb - (b << 16)) >> 15;
+                   a = aa >> 16;  a += (aa - (a << 16)) >> 15;
+                   *pmap++ = ARGB_JOIN(a,r,g,b);
+                   rr += drr;  gg += dgg;  bb += dbb;  aa += daa;
+                 }
+               gc = gc_next;
+               r = next_r; g = next_g; b = next_b; a = next_a;
+               lc = lc->next;
+              }
+           else
+               *pmap++ = ARGB_JOIN(a,r,g,b);
+         }
+     }
+
+   if (gr->alpha.stops)
+     {
+       Evas_Object_List  *lc;
+       RGBA_Gradient_Alpha_Stop  *ga, *ga_next;
+       DATA8  *pamap, *amap_end;
+       int   i, dii;
+       int   a, next_a;
+       int   aa, daa;
+
+       gr->alpha.data = realloc(gr->alpha.data, gr->alpha.len * sizeof(DATA8));
+       if (!gr->alpha.data)  return;
+
+       ga = (RGBA_Gradient_Alpha_Stop *)gr->alpha.stops;
+       a = ga->a;
+       lc = gr->alpha.stops->next;
+       pamap = gr->alpha.data;  amap_end = pamap + gr->alpha.len;
+
+       while (pamap < amap_end)
+         {
+           if (lc)
+             {
+               i = ga->dist;
+               dii = 65536 / i;
+               ga_next = (RGBA_Gradient_Alpha_Stop *)lc;
+               next_a = ga_next->a;
+               aa = a << 16;  daa = ((next_a - a) * dii);
+               while (i--)
+                 {
+                   a = aa >> 16;  a += (aa - (a << 16)) >> 15;
+                   *pamap++ = a;
+                   aa += daa;
+                 }
+               ga = ga_next;
+               a = next_a;
+               lc = lc->next;
+              }
+           else
+               *pamap++ = a;
+         }
+     }
+
+   if (gr->color.data && gr->alpha.data)
+     {
+       if (!gr->imported_data)
+          color = 0xffffffff;
+       if (gr->color.len == gr->alpha.len)
+         {
+           evas_common_scale_rgba_a8_span(gr->color.data, gr->alpha.data, gr->color.len,
+                                          color, gr->map.data, gr->map.len, gr->map.direction);
+           return;
+         }
+       evas_common_scale_rgba_span(gr->color.data, NULL, gr->color.len,
+                                   color, gr->map.data, gr->map.len, gr->map.direction);
+       evas_common_scale_clip_a8_span(NULL, gr->alpha.data, gr->alpha.len,
+                                       0xffffffff, gr->map.data, gr->map.len, gr->map.direction);
+       return;
+     }
+
+   if (gr->color.data)
+     {
+       if (!gr->imported_data)
+          color = 0xffffffff;
+       evas_common_scale_rgba_span(gr->color.data, NULL, gr->color.len,
+                                   color, gr->map.data, gr->map.len, gr->map.direction);
+       gr->map.has_alpha |= (!!(255 - (color >> 24)));
+       return;
+     }
+       
+   evas_common_scale_a8_span(NULL, gr->alpha.data, gr->alpha.len,
+                            color, gr->map.data, gr->map.len, gr->map.direction);
+}
+
+static void
+evas_common_gradient_map_ahsv(RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len)
+{
+   DATA32   color;
+
+   if (!gr || !dc)
+       return;
+   if (len < 1)
+     {
+       if (gr->map.data)
+          free(gr->map.data);
+       gr->map.data = NULL;
+       gr->map.len = 0;
+       return;
+     }
+   if ((len != gr->map.len) || (!gr->map.data))
+       gr->map.data = realloc(gr->map.data, len * sizeof(DATA32));
+   if (!gr->map.data)
+     { gr->map.len = 0; return; }
+   gr->map.len = len;
+   gr->map.has_alpha = gr->has_alpha;
+
+   color = dc->mul.col;
+   if (!dc->mul.use)
+       color = 0xffffffff;
+
+   if ((!gr->imported_data) && (!gr->color.stops) && (!gr->alpha.stops))
+     {
+       static DATA32  p = 0xffffffff;
+
+       gr->color.data = &p;
+       gr->color.len = 1;
+       gr->imported_data = 1;
+       gr->has_alpha = 0;
+     }
+
+   if (gr->color.stops)
+     {
+       Evas_Object_List  *lc;
+       RGBA_Gradient_Color_Stop  *gc, *gc_next;
+       DATA32  *pmap, *map_end;
+       int   i, dii;
+       int   h, s, v;
+       int   next_h, next_s, next_v;
+       int   hh, dhh, ss, dss, vv, dvv, aa, daa;
+       int   r, g, b, a;
+       int   next_r, next_g, next_b, next_a;
+
+       gr->color.data = realloc(gr->color.data, gr->color.len * sizeof(DATA32));
+       if (!gr->color.data)  return;
+
+       gc = (RGBA_Gradient_Color_Stop *)gr->color.stops;
+       r = gc->r;  g = gc->g;  b = gc->b;  a = gc->a;
+       evas_common_convert_color_rgb_to_hsv_int(r, g, b, &h, &s, &v);
+
+       lc = gr->color.stops->next;
+       pmap = gr->color.data;  map_end = pmap + gr->color.len;
+
+       while (pmap < map_end)
+         {
+           if (lc)
+             {
+               i = gc->dist;
+               dii = 65536 / i;
+               gc_next = (RGBA_Gradient_Color_Stop *)lc;
+
+               next_r = gc_next->r;  next_g = gc_next->g;
+               next_b = gc_next->b;  next_a = gc_next->a;
+               evas_common_convert_color_rgb_to_hsv_int(next_r, next_g, next_b,
+                                                        &next_h, &next_s, &next_v);
+               hh = h << 16;  dhh = ((next_h - h) * dii);
+               ss = s << 16;  dss = ((next_s - s) * dii);
+               vv = v << 16;  dvv = ((next_v - v) * dii);
+               aa = a << 16;  daa = ((next_a - a) * dii);
+               while (i--)
+                 {
+                   h = hh >> 16;  h += (hh - (h << 16)) >> 15;
+                   s = ss >> 16;  s += (ss - (s << 16)) >> 15;
+                   v = vv >> 16;  v += (vv - (v << 16)) >> 15;
+                   a = aa >> 16;  a += (aa - (a << 16)) >> 15;
+                   evas_common_convert_color_hsv_to_rgb_int(h, s, v, &r, &g, &b);
+                   *pmap++ = ARGB_JOIN(a,r,g,b);
+                   hh += dhh;  ss += dss;  vv += dvv;  aa += daa;
+                 }
+               gc = gc_next;
+               h = next_h; s = next_s; v = next_v; a = next_a;
+               lc = lc->next;
+              }
+           else
+               *pmap++ = ARGB_JOIN(gc->a,gc->r,gc->g,gc->b);
+         }
+     }
+
+   if (gr->alpha.stops)
+     {
+       Evas_Object_List  *lc;
+       RGBA_Gradient_Alpha_Stop  *ga, *ga_next;
+       DATA8  *pamap, *amap_end;
+       int   i, dii;
+       int   a, next_a;
+       int   aa, daa;
+
+       gr->alpha.data = realloc(gr->alpha.data, gr->alpha.len * sizeof(DATA8));
+       if (!gr->alpha.data)  return;
+
+       ga = (RGBA_Gradient_Alpha_Stop *)gr->alpha.stops;
+       a = ga->a;
+       lc = gr->alpha.stops->next;
+       pamap = gr->alpha.data;  amap_end = pamap + gr->alpha.len;
+
+       while (pamap < amap_end)
+         {
+           if (lc)
+             {
+               i = ga->dist;
+               dii = 65536 / i;
+               ga_next = (RGBA_Gradient_Alpha_Stop *)lc;
+               next_a = ga_next->a;
+               aa = a << 16;  daa = ((next_a - a) * dii);
+               while (i--)
+                 {
+                   a = aa >> 16;  a += (aa - (a << 16)) >> 15;
+                   *pamap++ = a;
+                   aa += daa;
+                 }
+               ga = ga_next;
+               a = next_a;
+               lc = lc->next;
+              }
+           else
+               *pamap++ = a;
+         }
+     }
+
+   if (gr->color.data && gr->alpha.data)
+     {
+       if (gr->color.len == gr->alpha.len)
+         {
+           evas_common_scale_hsva_a8_span(gr->color.data, gr->alpha.data, gr->color.len,
+                                          color, gr->map.data, gr->map.len, gr->map.direction);
+           return;
+         }
+       evas_common_scale_hsva_span(gr->color.data, NULL, gr->color.len,
+                                   color, gr->map.data, gr->map.len, gr->map.direction);
+       evas_common_scale_clip_a8_span(NULL, gr->alpha.data, gr->alpha.len,
+                                       0xffffffff, gr->map.data, gr->map.len, gr->map.direction);
+       return;
+     }
+   if (gr->color.data)
+     {
+       evas_common_scale_hsva_span(gr->color.data, NULL, gr->color.len,
+                                   color, gr->map.data, gr->map.len, gr->map.direction);
+       gr->map.has_alpha |= (!!(255 - (color >> 24)));
+       return;
+     }
+       
+   evas_common_scale_a8_span(NULL, gr->alpha.data, gr->alpha.len,
+                            color, gr->map.data, gr->map.len, gr->map.direction);
+}
+
+EAPI void
+evas_common_gradient_map(RGBA_Draw_Context *dc, RGBA_Gradient *gr, int len)
+{
+   if (!gr || !dc) return;
+   if (dc->interpolation.color_space == _EVAS_COLOR_SPACE_AHSV)
+     {
+       evas_common_gradient_map_ahsv(dc, gr, len);
+       return;
+     }
+   evas_common_gradient_map_argb(dc, gr, len);
+}
diff --git a/src/lib/engines/common/evas_gradient_private.h b/src/lib/engines/common/evas_gradient_private.h
new file mode 100644 (file)
index 0000000..b4639d2
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_GRADIENT_PRIVATE_H
+#define _EVAS_GRADIENT_PRIVATE_H
+
+
+RGBA_Gradient_Type *evas_common_gradient_linear_get        (void);
+RGBA_Gradient_Type *evas_common_gradient_radial_get        (void);
+RGBA_Gradient_Type *evas_common_gradient_angular_get       (void);
+RGBA_Gradient_Type *evas_common_gradient_rectangular_get   (void);
+RGBA_Gradient_Type *evas_common_gradient_sinusoidal_get    (void);
+char               *evas_common_gradient_get_key_fval      (char *in, char *key, float *val);
+
+
+#endif /* _EVAS_GRADIENT_PRIVATE_H */
diff --git a/src/lib/engines/common/evas_gradient_radial.c b/src/lib/engines/common/evas_gradient_radial.c
new file mode 100644 (file)
index 0000000..300dbb1
--- /dev/null
@@ -0,0 +1,1147 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <math.h>
+
+#include "evas_common.h"
+#include "evas_gradient_private.h"
+
+
+typedef struct _Radial_Data   Radial_Data;
+struct _Radial_Data
+{
+   float  r0;
+
+   int    sx, sy, s;
+   float  off;
+   int    len;
+};
+
+static void
+radial_init(void);
+
+static void
+radial_shutdown(void);
+
+static void
+radial_init_geom(RGBA_Gradient *gr);
+
+static void
+radial_setup_geom(RGBA_Gradient *gr);
+
+static void
+radial_free_geom(void *gdata);
+
+static int
+radial_has_alpha(RGBA_Gradient *gr, int op);
+
+static int
+radial_has_mask(RGBA_Gradient *gr, int op);
+
+static int
+radial_get_map_len(RGBA_Gradient *gr);
+
+static Gfx_Func_Gradient_Fill
+radial_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa);
+
+static RGBA_Gradient_Type  radial = {"radial", radial_init, radial_shutdown,
+                                    radial_init_geom, radial_setup_geom, radial_free_geom,
+                                    radial_has_alpha, radial_has_mask,
+                                    radial_get_map_len, radial_get_fill_func};
+
+
+/** internal functions **/
+
+static void
+radial_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+static void
+radial_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_pad_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+radial_pad_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+
+RGBA_Gradient_Type  *
+evas_common_gradient_radial_get(void)
+{
+    return &radial;
+}
+
+static void
+radial_init(void)
+{
+}
+
+static void
+radial_shutdown(void)
+{
+}
+
+static void
+radial_free_geom(void *gdata)
+{
+   Radial_Data *data = (Radial_Data *)gdata;
+   if (data) free(data);
+}
+
+static void
+radial_setup_geom(RGBA_Gradient *gr)
+{
+   Radial_Data   *radial_data;
+
+   if (!gr || (gr->type.geometer != &radial)) return;
+
+   radial_data = (Radial_Data *)gr->type.gdata;
+   if (!radial_data) return;
+   radial_data->sx = gr->fill.w;
+   radial_data->sy = gr->fill.h;
+   radial_data->s = radial_data->sx;
+   if (radial_data->sy > radial_data->sx)
+       radial_data->s = radial_data->sy;
+   radial_data->off = gr->map.offset;
+   radial_data->len = radial_data->s - (int)(radial_data->s * radial_data->r0);
+}
+
+static void
+radial_init_geom(RGBA_Gradient *gr)
+{
+   Radial_Data   *radial_data;
+   int    err = 1;
+   char   *s, *p, key[256];
+   float  r0;
+
+   if (!gr || (gr->type.geometer != &radial)) return;
+
+   radial_data = (Radial_Data *)gr->type.gdata;
+   if (!radial_data)
+     {
+       radial_data = calloc(1, sizeof(Radial_Data));
+       if (!radial_data)  return;
+       radial_data->r0 = 0.0;
+       radial_data->sx = 32;
+       radial_data->sy = 32;
+       radial_data->s = 32;
+       radial_data->off = 0.0;
+       radial_data->len = 32;
+     }
+   gr->type.gdata = radial_data;
+
+   if (!gr->type.params || !*(gr->type.params))
+       return;
+
+   s = strdup(gr->type.params);
+   if (!s) return;
+
+   r0 = radial_data->r0;
+   p = s;
+   while ((p = evas_common_gradient_get_key_fval(p, key, &r0)))
+     {
+       if (!strcmp(key, "inner_radius"))
+           err = 0;
+       else
+         {
+           err = 1;
+           break;
+         }
+     }
+   if (!err)
+     {
+       if (r0 < 0.0) r0 = 0.0;
+       if (r0 > 1.0) r0 = 1.0;
+       radial_data->r0 = r0;
+     }
+   free(s);
+}
+
+
+static int
+radial_has_alpha(RGBA_Gradient *gr, int op)
+{
+   Radial_Data   *radial_data;
+
+   if (!gr || (gr->type.geometer != &radial)) return 0;
+   if (gr->has_alpha | gr->map.has_alpha)
+       return 1;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+       return 0;
+   radial_data = (Radial_Data *)gr->type.gdata;
+   if (!radial_data) return 0;
+   if (radial_data->r0 > 0)
+       return 1;
+   if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
+         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
+         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
+       return 1;
+   return 0;
+}
+
+static int
+radial_has_mask(RGBA_Gradient *gr, int op)
+{
+   Radial_Data   *radial_data;
+
+   if (!gr || (gr->type.geometer != &radial)) return 0;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+     {
+       radial_data = (Radial_Data *)gr->type.gdata;
+       if (!radial_data) return 0;
+       if (radial_data->r0 > 0)
+           return 1;
+       if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
+             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
+             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
+           return 1;
+     }
+   return 0;
+}
+
+static int
+radial_get_map_len(RGBA_Gradient *gr)
+{
+   Radial_Data   *radial_data;
+
+   if (!gr || (gr->type.geometer != &radial)) return 0;
+   radial_data = (Radial_Data *)gr->type.gdata;
+   if (!radial_data) return 0;
+   return radial_data->len;
+}
+
+static Gfx_Func_Gradient_Fill
+radial_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa)
+{
+   Radial_Data   *radial_data;
+   Gfx_Func_Gradient_Fill  sfunc = NULL;
+   int masked_op = 0;
+
+   if (!gr || (gr->type.geometer != &radial)) return sfunc;
+   radial_data = (Radial_Data *)gr->type.gdata;
+   if (!radial_data) return sfunc;
+
+   radial_data->off = gr->map.offset;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+       masked_op = 1;
+
+   switch (gr->fill.spread)
+     {
+      case _EVAS_TEXTURE_REFLECT:
+       {
+        if (aa)
+          {
+            if (radial_data->r0 > 0)
+              {
+               if (masked_op)
+                  sfunc = radial_reflect_aa_masked;
+               else
+                  sfunc = radial_reflect_aa;
+              }
+            else
+               sfunc = radial_reflect_aa;
+          }
+        else
+          {
+            if (radial_data->r0 > 0)
+              {
+               if (masked_op)
+                  sfunc = radial_reflect_masked;
+               else
+                  sfunc = radial_reflect;
+              }
+            else
+               sfunc = radial_reflect;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_REPEAT:
+       {
+        if (aa)
+          {
+            if (radial_data->r0 > 0)
+              {
+               if (masked_op)
+                  sfunc = radial_repeat_aa_masked;
+               else
+                  sfunc = radial_repeat_aa;
+              }
+            else
+               sfunc = radial_repeat_aa;
+          }
+        else
+          {
+            if (radial_data->r0 > 0)
+              {
+               if (masked_op)
+                  sfunc = radial_repeat_masked;
+               else
+                  sfunc = radial_repeat;
+              }
+            else
+               sfunc = radial_repeat;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT:
+        radial_data->off = 0;
+      case _EVAS_TEXTURE_RESTRICT_REFLECT:
+       {
+        if (aa)
+          {
+            if (masked_op)
+               sfunc = radial_restrict_reflect_aa_masked;
+            else
+               sfunc = radial_restrict_reflect_aa;
+          }
+        else
+          {
+            if (masked_op)
+               sfunc = radial_restrict_reflect_masked;
+            else
+               sfunc = radial_restrict_reflect;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT_REPEAT:
+       {
+        if (aa)
+          {
+            if (masked_op)
+               sfunc = radial_restrict_repeat_aa_masked;
+            else
+               sfunc = radial_restrict_repeat_aa;
+          }
+        else
+          {
+            if (masked_op)
+               sfunc = radial_restrict_repeat_masked;
+            else
+               sfunc = radial_restrict_repeat;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_PAD:
+       {
+        if (aa)
+          {
+            if (masked_op)
+               sfunc = radial_pad_aa_masked;
+            else
+               sfunc = radial_pad_aa;
+          }
+        else
+          {
+            if (masked_op)
+               sfunc = radial_pad_masked;
+            else
+               sfunc = radial_pad;
+          }
+       }
+      break;
+      default:
+       sfunc = radial_reflect_aa;
+      break;
+     }
+   return sfunc;
+}
+
+#define SETUP_RADIAL_FILL \
+   if (gdata->sx != gdata->s) \
+     { \
+       axx = (gdata->s * axx) / gdata->sx; \
+       axy = (gdata->s * axy) / gdata->sx; \
+     } \
+   if (gdata->sy != gdata->s) \
+     { \
+       ayy = (gdata->s * ayy) / gdata->sy; \
+       ayx = (gdata->s * ayx) / gdata->sy; \
+     } \
+   xx = (axx * x) + (axy * y); \
+   yy = (ayx * x) + (ayy * y); \
+   rr0 = gdata->r0 * gdata->s; \
+   rr0 <<= 16;
+
+
+static void
+radial_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;
+       if (l >= 0)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                   l = src_len - l - 1;
+             }
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16), lp;
+
+       *dst = 0;
+       if (l >= 0)
+         {
+           DATA32  a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+           *dst = src[lp];
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if ((l == 0) && rr0)
+               *dst = MUL_256(a0, *dst);
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if (l >= 0)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                   l = src_len - l - 1;
+             }
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16), lp;
+
+       *dst = 0;  *mask = 0;
+       if (l >= 0)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+           *dst = src[lp];  *mask = 255;
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if ((l == 0) && rr0)
+               *mask = a0;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;
+       if (l >= 0)
+         {
+           l += off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16), lp;
+
+       *dst = 0;
+       if (l >= 0)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           lp = lp % src_len;
+           if (lp < 0)
+               lp += src_len;
+           *dst = src[lp];
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (lp == src_len - 1)
+               *dst = INTERP_256(a, src[0], *dst);
+           if ((l == 0) && rr0)
+               *dst = MUL_256(a, *dst);
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if (l >= 0)
+         {
+           l += off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16), lp;
+
+       *dst = 0;
+       if (l >= 0)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           lp = lp % src_len;
+           if (lp < 0)
+               lp += src_len;
+           *dst = src[lp];  *mask = 255;
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (lp == src_len - 1)
+               *dst = INTERP_256(a, src[0], *dst);
+           if ((l == 0) && rr0)
+               *mask = a - 1;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                        int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                  l = src_len - l - 1;
+             }
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16), lp;
+
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+           *dst = src[lp];
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (l == (src_len - 1))
+               *dst = MUL_256(257 - a0, *dst);
+           if ((l == 0) && rr0)
+               *dst = MUL_256(a0, *dst);
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                  l = src_len - l - 1;
+             }
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16), lp;
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+           *dst = src[lp];  *mask = 255;
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (l == (src_len - 1))
+               *mask = 255 - a0;
+           if ((l == 0) && rr0)
+               *mask = a0;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           l = (l % src_len);
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16), lp;
+
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           lp = (lp % src_len);
+           if (lp < 0)
+               lp += src_len;
+           *dst = src[lp];
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (lp == (src_len - 1))
+               *dst = INTERP_256(a, src[0], *dst);
+           if (l == (src_len - 1))
+               *dst = MUL_256(257 - a, *dst);
+           if ((l == 0) && rr0)
+               *dst = MUL_256(a, *dst);
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           l = (l % src_len);
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                 int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16), lp;
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           lp = (lp % src_len);
+           if (lp < 0)
+               lp += src_len;
+           *dst = src[lp];  *mask = 255;
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (lp == (src_len - 1))
+               *dst = INTERP_256(a, src[0], *dst);
+           if (l == (src_len - 1))
+               *mask = 256 - a;
+           if ((l == 0) && rr0)
+               *mask = a - 1;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;
+       if (l >= 0)
+         {
+           if (l >= src_len)
+               l = src_len - 1;
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+       DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           *dst = src[l];
+           if (l + 1 < src_len)
+               *dst = INTERP_256(a, src[l + 1], src[l]);
+         }
+        if (l == 0)
+          {
+            *dst = src[0];
+            if (rr0)
+               *dst = MUL_256(a, *dst);
+          }
+        if (l >= src_len)
+          {
+            *dst = src[src_len - 1];
+          }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_pad_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if (l >= 0)
+         {
+           if (l >= src_len)
+               l = src_len - 1;
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+radial_pad_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Radial_Data  *gdata = (Radial_Data *)params_data;
+   int  xx, yy, rr0;
+
+   SETUP_RADIAL_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+       DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           *dst = src[l];
+           if (l + 1 < src_len)
+               *dst = INTERP_256(a, src[l + 1], src[l]);
+         }
+       if (l == 0)
+         {
+           *dst = src[0];  *mask = 255;
+           if (rr0)
+               *mask = a - 1;
+         }
+       if (l >= src_len)
+         {
+           *dst = src[src_len - 1];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
diff --git a/src/lib/engines/common/evas_gradient_rectangular.c b/src/lib/engines/common/evas_gradient_rectangular.c
new file mode 100644 (file)
index 0000000..fbdfb3e
--- /dev/null
@@ -0,0 +1,1463 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <math.h>
+
+#include "evas_common.h"
+#include "evas_gradient_private.h"
+
+
+typedef struct _Rectangular_Data   Rectangular_Data;
+struct _Rectangular_Data
+{
+   float  r0;
+
+   int    sx, sy, s;
+   float  off;
+   int    len;
+};
+
+static void
+rectangular_init(void);
+
+static void
+rectangular_shutdown(void);
+
+static void
+rectangular_init_geom(RGBA_Gradient *gr);
+
+static void
+rectangular_setup_geom(RGBA_Gradient *gr);
+
+static void
+rectangular_free_geom(void *gdata);
+
+static int
+rectangular_has_alpha(RGBA_Gradient *gr, int op);
+
+static int
+rectangular_has_mask(RGBA_Gradient *gr, int op);
+
+static int
+rectangular_get_map_len(RGBA_Gradient *gr);
+
+static Gfx_Func_Gradient_Fill
+rectangular_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa);
+
+static RGBA_Gradient_Type  rectangular = {"rectangular", rectangular_init, rectangular_shutdown,
+                                         rectangular_init_geom, rectangular_setup_geom, rectangular_free_geom,
+                                         rectangular_has_alpha, rectangular_has_mask,
+                                         rectangular_get_map_len, rectangular_get_fill_func};
+
+
+/** internal functions **/
+
+static void
+rectangular_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                         int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_pad_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+rectangular_pad_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+RGBA_Gradient_Type  *
+evas_common_gradient_rectangular_get(void)
+{
+    return &rectangular;
+}
+
+static void
+rectangular_init(void)
+{
+}
+
+static void
+rectangular_shutdown(void)
+{
+}
+
+static void
+rectangular_free_geom(void *gdata)
+{
+   Rectangular_Data *data = (Rectangular_Data *)gdata;
+   if (data) free(data);
+}
+
+static void
+rectangular_setup_geom(RGBA_Gradient *gr)
+{
+   Rectangular_Data   *rectangular_data;
+
+   if (!gr || (gr->type.geometer != &rectangular)) return;
+
+   rectangular_data = (Rectangular_Data *)gr->type.gdata;
+   if (!rectangular_data) return;
+   rectangular_data->sx = gr->fill.w;
+   rectangular_data->sy = gr->fill.h;
+   rectangular_data->s = rectangular_data->sx;
+   if (rectangular_data->sy > rectangular_data->sx)
+       rectangular_data->s = rectangular_data->sy;
+   rectangular_data->off = gr->map.offset;
+   rectangular_data->len = rectangular_data->s - (int)(rectangular_data->s * rectangular_data->r0);
+}
+
+static void
+rectangular_init_geom(RGBA_Gradient *gr)
+{
+   Rectangular_Data   *rectangular_data;
+   int    err = 1;
+   char   *s, *p, key[256];
+   float  r0;
+
+   if (!gr || (gr->type.geometer != &rectangular)) return;
+
+   rectangular_data = (Rectangular_Data *)gr->type.gdata;
+   if (!rectangular_data)
+     {
+       rectangular_data = calloc(1, sizeof(Rectangular_Data));
+       if (!rectangular_data)  return;
+       rectangular_data->r0 = 0.0;
+       rectangular_data->sx = 32;
+       rectangular_data->sy = 32;
+       rectangular_data->s = 32;
+       rectangular_data->off = 0.0;
+       rectangular_data->len = 32;
+     }
+   gr->type.gdata = rectangular_data;
+
+   if (!gr->type.params || !*(gr->type.params))
+       return;
+
+   s = strdup(gr->type.params);
+   if (!s) return;
+
+   r0 = rectangular_data->r0;
+   p = s;
+   while ((p = evas_common_gradient_get_key_fval(p, key, &r0)))
+     {
+       if (!strcmp(key, "inner_radius"))
+           err = 0;
+       else
+         {
+           err = 1;
+           break;
+         }
+     }
+   if (!err)
+     {
+       if (r0 < 0.0) r0 = 0.0;
+       if (r0 > 1.0) r0 = 1.0;
+       rectangular_data->r0 = r0;
+     }
+   free(s);
+}
+
+
+static int
+rectangular_has_alpha(RGBA_Gradient *gr, int op)
+{
+   Rectangular_Data   *rectangular_data;
+
+   if (!gr || (gr->type.geometer != &rectangular)) return 0;
+   if (gr->has_alpha | gr->map.has_alpha)
+       return 1;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+       return 0;
+   rectangular_data = (Rectangular_Data *)gr->type.gdata;
+   if (!rectangular_data) return 0;
+   if (rectangular_data->r0 > 0)
+       return 1;
+   if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
+         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
+         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
+       return 1;
+   return 0;
+}
+
+static int
+rectangular_has_mask(RGBA_Gradient *gr, int op)
+{
+   Rectangular_Data   *rectangular_data;
+
+   if (!gr || (gr->type.geometer != &rectangular)) return 0;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+     {
+       rectangular_data = (Rectangular_Data *)gr->type.gdata;
+       if (!rectangular_data) return 0;
+       if (rectangular_data->r0 > 0)
+           return 1;
+       if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
+             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
+             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
+           return 1;
+     }
+   return 0;
+}
+
+static int
+rectangular_get_map_len(RGBA_Gradient *gr)
+{
+   Rectangular_Data   *rectangular_data;
+
+   if (!gr || (gr->type.geometer != &rectangular)) return 0;
+   rectangular_data = (Rectangular_Data *)gr->type.gdata;
+   if (!rectangular_data) return 0;
+   return rectangular_data->len;
+}
+
+static Gfx_Func_Gradient_Fill
+rectangular_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa)
+{
+   Rectangular_Data   *rectangular_data;
+   Gfx_Func_Gradient_Fill  sfunc = NULL;
+   int masked_op = 0;
+
+   if (!gr || (gr->type.geometer != &rectangular))
+       return sfunc;
+   rectangular_data = (Rectangular_Data *)gr->type.gdata;
+   if (!rectangular_data) return sfunc;
+
+   rectangular_data->off = gr->map.offset;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+       masked_op = 1;
+   switch (gr->fill.spread)
+     {
+      case _EVAS_TEXTURE_REFLECT:
+       {
+        if (aa)
+          {
+           if (rectangular_data->r0 > 0)
+             {
+               if (masked_op)
+                  sfunc = rectangular_reflect_aa_masked;
+               else
+                  sfunc = rectangular_reflect_aa;
+             }
+           else
+               sfunc = rectangular_reflect_aa;
+          }
+        else
+          {
+           if (rectangular_data->r0 > 0)
+             {
+               if (masked_op)
+                  sfunc = rectangular_reflect_masked;
+               else
+                  sfunc = rectangular_reflect;
+             }
+           else
+               sfunc = rectangular_reflect;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_REPEAT:
+       {
+        if (aa)
+          {
+           if (rectangular_data->r0 > 0)
+             {
+               if (masked_op)
+                  sfunc = rectangular_repeat_aa_masked;
+               else
+                  sfunc = rectangular_repeat_aa;
+             }
+           else
+               sfunc = rectangular_repeat_aa;
+          }
+        else
+          {
+           if (rectangular_data->r0 > 0)
+             {
+               if (masked_op)
+                  sfunc = rectangular_repeat_masked;
+               else
+                  sfunc = rectangular_repeat;
+             }
+           else
+               sfunc = rectangular_repeat;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT:
+        rectangular_data->off = 0;
+      case _EVAS_TEXTURE_RESTRICT_REFLECT:
+       {
+        if (aa)
+          {
+           if (masked_op)
+               sfunc = rectangular_restrict_reflect_aa_masked;
+           else
+               sfunc = rectangular_restrict_reflect_aa;
+          }
+        else
+          {
+           if (masked_op)
+               sfunc = rectangular_restrict_reflect_masked;
+           else
+               sfunc = rectangular_restrict_reflect;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT_REPEAT:
+       {
+        if (aa)
+          {
+           if (masked_op)
+               sfunc = rectangular_restrict_repeat_aa_masked;
+           else
+               sfunc = rectangular_restrict_repeat_aa;
+          }
+        else
+          {
+           if (masked_op)
+               sfunc = rectangular_restrict_repeat_masked;
+           else
+               sfunc = rectangular_restrict_repeat;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_PAD:
+       {
+        if (aa)
+          {
+           if (rectangular_data->r0 > 0)
+             {
+               if (masked_op)
+                  sfunc = rectangular_pad_aa_masked;
+               else
+                  sfunc = rectangular_pad_aa;
+             }
+           else
+               sfunc = rectangular_pad_aa;
+          }
+        else
+          {
+           if (rectangular_data->r0 > 0)
+             {
+               if (masked_op)
+                  sfunc = rectangular_pad_masked;
+               else
+                  sfunc = rectangular_pad;
+             }
+           else
+               sfunc = rectangular_pad;
+          }
+       }
+      default:
+       sfunc = rectangular_reflect;
+      break;
+     }
+   return sfunc;
+}
+
+/* the fill functions */
+
+#ifdef BUILD_MMX
+#define INTERP_256_P2R(a, s, mma, mms, mmd, mmz) \
+           MOV_A2R(a, mma) \
+           MOV_P2R(s, mms, mmz) \
+           INTERP_256_R2R(mma, mms, mmd, mm5)
+
+#define MUL_256_A2R(a, mma, mmd, mmz) \
+       MOV_A2R(a, mma) \
+       MUL4_256_R2R(mma, mmd)
+#endif
+
+#define SETUP_RECT_FILL \
+   if (gdata->sx != gdata->s) \
+     { \
+       axx = (gdata->s * axx) / gdata->sx; \
+       axy = (gdata->s * axy) / gdata->sx; \
+     } \
+   if (gdata->sy != gdata->s) \
+     { \
+       ayy = (gdata->s * ayy) / gdata->sy; \
+       ayx = (gdata->s * ayx) / gdata->sy; \
+     } \
+   xx = (axx * x) + (axy * y); \
+   yy = (ayx * x) + (ayy * y); \
+   rr0 = gdata->r0 * gdata->s; \
+   rr0 <<= 16;
+
+static void
+rectangular_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;
+       if (l >= 0)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                   l = src_len - l - 1;
+             }
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy, lp;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       *dst = 0;
+       if (l >= 0)
+         {
+           DATA32  a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+           if ((l == 0) && rr0)
+             {
+#ifdef BUILD_MMX
+               MUL_256_A2R(a0, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(a0, *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if (l >= 0)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                   l = src_len - l - 1;
+             }
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy, lp;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       *dst = 0;  *mask = 0;
+       if (l >= 0)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           *mask = 255;
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+           if ((l == 0) && rr0)
+               *mask = a0;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;
+       if (l >= 0)
+         {
+           l += off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+          *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy, lp;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       *dst = 0;
+       if (l >= 0)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           lp = lp % src_len;
+           if (lp < 0)
+               lp += src_len;
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+           if (lp == (src_len - 1))
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[0], *dst);
+#endif
+             }
+           if ((l == 0) && rr0)
+             {
+#ifdef BUILD_MMX
+               MUL_256_A2R(a, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(a, *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if (l >= 0)
+         {
+           l += off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy, lp;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       *dst = 0;  *mask = 0;
+       if (l >= 0)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           lp = lp % src_len;
+           if (lp < 0)
+               lp += src_len;
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           *mask = 255;
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+           if (lp == (src_len - 1))
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[0], *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+           if ((l == 0) && rr0)
+               *mask = a - 1;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                             int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                  l = src_len - l - 1;
+             }
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy, lp;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a;
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+           if (l == (src_len - 1))
+             {
+#ifdef BUILD_MMX
+               a = 257 - a0;
+               MUL_256_A2R(a, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(257 - a0, *dst);
+#endif
+             }
+           if ((l == 0) && rr0)
+             {
+#ifdef BUILD_MMX
+               MUL_256_A2R(a0, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(a0, *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                    int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                  l = src_len - l - 1;
+             }
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy, lp;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a0 = a - 1;
+
+           lp = l + off;
+           if (lp < 0) { lp = -lp;  a = 257 - a; }
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           *mask = 255;
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+           if (l == (src_len - 1))
+               *mask = 255 - a0;
+           if ((l == 0) && rr0)
+               *mask = a0;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           l = (l % src_len);
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16), lp;
+
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8), a1 = 257 - a;
+
+           lp = l + off;
+           lp = (lp % src_len);
+           if (lp < 0)
+               lp += src_len;
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+           if (lp == (src_len - 1))
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[0], *dst);
+#endif
+             }
+           if (l == (src_len - 1))
+             {
+#ifdef BUILD_MMX
+               MUL_256_A2R(a1, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(a1, *dst);
+#endif
+             }
+           if ((l == 0) && rr0)
+             {
+#ifdef BUILD_MMX
+               MUL_256_A2R(a, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(a, *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16);
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           l = (l % src_len);
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+   int  off = gdata->off * (src_len - 1);
+
+   SETUP_RECT_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  ll = (hypot(xx, yy) - rr0);
+       int  l = (ll >> 16), lp;
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+           lp = l + off;
+           lp = (lp % src_len);
+           if (lp < 0)
+               lp += src_len;
+#ifdef BUILD_MMX
+           MOV_P2R(src[lp], mm1, mm0)
+#else
+           *dst = src[lp];
+#endif
+           *mask = 255;
+           if (lp + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[lp + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+#endif
+             }
+           if (lp == (src_len - 1))
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[0], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[0], *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+           if (l == (src_len - 1))
+               *mask = 256 - a;
+           if ((l == 0) && rr0)
+               *mask = a - 1;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+
+static void
+rectangular_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+
+   SETUP_RECT_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;
+       if (l >= 0)
+         {
+          if (l >= src_len)
+              l = src_len - 1;
+          *dst = src[l];
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+
+   SETUP_RECT_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       *dst = 0;
+       if (l >= src_len) *dst = src[src_len - 1];
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+#ifdef BUILD_MMX
+           MOV_P2R(src[l], mm1, mm0)
+#else
+           *dst = src[l];
+#endif
+           if (l + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[l + 1], *dst);
+#endif
+             }
+           if ((l == 0) && rr0)
+             {
+#ifdef BUILD_MMX
+               MUL_256_A2R(a, mm3, mm1, mm0)
+#else
+               *dst = MUL_256(a, *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+         }
+       dst++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_pad_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                       int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+
+   SETUP_RECT_FILL
+
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       l += (ll - (l << 16)) >> 15;
+       *dst = 0;  *mask = 0;
+       if (l >= 0)
+         {
+          if (l >= src_len)
+              l = src_len - 1;
+          *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
+
+static void
+rectangular_pad_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                          int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Rectangular_Data  *gdata = (Rectangular_Data *)params_data;
+   int  xx, yy, rr0;
+
+   SETUP_RECT_FILL
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+#endif
+   while (dst < dst_end)
+     {
+       int  ll = xx, l = yy;
+
+       if (ll < 0)  ll = -ll;
+       if (l < 0)  l = -l;
+       if (ll < l)  ll = l;
+       ll = ll - rr0;  l = ll >> 16;
+
+       *dst = 0;  *mask = 0;
+       if (l >= src_len) { *dst = src[src_len - 1];  *mask = 255; }
+       if ((unsigned)l < src_len)
+         {
+           DATA32 a = 1 + ((ll - (l << 16)) >> 8);
+
+#ifdef BUILD_MMX
+           MOV_P2R(src[l], mm1, mm0)
+#else
+           *dst = src[l];
+#endif
+           *mask = 255;
+           if (l + 1 < src_len)
+             {
+#ifdef BUILD_MMX
+               INTERP_256_P2R(a, src[l + 1], mm3, mm2, mm1, mm0)
+#else
+               *dst = INTERP_256(a, src[l + 1], *dst);
+#endif
+             }
+#ifdef BUILD_MMX
+           MOV_R2P(mm1, *dst, mm0)
+#endif
+           if ((l == 0) && rr0)
+               *mask = a - 1;
+         }
+       dst++;  mask++;  xx += axx;  yy += ayx;
+     }
+}
diff --git a/src/lib/engines/common/evas_gradient_sinusoidal.c b/src/lib/engines/common/evas_gradient_sinusoidal.c
new file mode 100644 (file)
index 0000000..9db4eec
--- /dev/null
@@ -0,0 +1,838 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <math.h>
+
+#include "evas_common.h"
+#include "evas_gradient_private.h"
+
+typedef struct _Sinusoidal_Data   Sinusoidal_Data;
+struct _Sinusoidal_Data
+{
+   float  amp, per;
+
+   float  sa, sp;
+   float  off;
+   int    len;
+};
+
+static void
+sinusoidal_init(void);
+
+static void
+sinusoidal_shutdown(void);
+
+static void
+sinusoidal_init_geom(RGBA_Gradient *gr);
+
+static void
+sinusoidal_setup_geom(RGBA_Gradient *gr);
+
+static void
+sinusoidal_free_geom(void *gdata);
+
+static int
+sinusoidal_has_alpha(RGBA_Gradient *gr, int op);
+
+static int
+sinusoidal_has_mask(RGBA_Gradient *gr, int op);
+
+static int
+sinusoidal_get_map_len(RGBA_Gradient *gr);
+
+static Gfx_Func_Gradient_Fill
+sinusoidal_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa);
+
+static RGBA_Gradient_Type  sinusoidal = {"sinusoidal", sinusoidal_init, sinusoidal_shutdown,
+                                        sinusoidal_init_geom, sinusoidal_setup_geom, sinusoidal_free_geom,
+                                        sinusoidal_has_alpha, sinusoidal_has_mask,
+                                        sinusoidal_get_map_len, sinusoidal_get_fill_func};
+
+
+/** internal functions **/
+
+static void
+sinusoidal_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+static void
+sinusoidal_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data);
+
+
+RGBA_Gradient_Type  *
+evas_common_gradient_sinusoidal_get(void)
+{
+    return &sinusoidal;
+}
+
+static void
+sinusoidal_init(void)
+{
+}
+
+static void
+sinusoidal_shutdown(void)
+{
+}
+
+static void
+sinusoidal_free_geom(void *gdata)
+{
+   Sinusoidal_Data *data = (Sinusoidal_Data *)gdata;
+   if (data) free(data);
+}
+
+static void
+sinusoidal_setup_geom(RGBA_Gradient *gr)
+{
+   Sinusoidal_Data   *sinusoidal_data;
+
+   if (!gr || (gr->type.geometer != &sinusoidal)) return;
+
+   sinusoidal_data = (Sinusoidal_Data *)gr->type.gdata;
+   if (!sinusoidal_data) return;
+   sinusoidal_data->sa = sinusoidal_data->amp * gr->fill.h;
+   sinusoidal_data->sp = sinusoidal_data->per * (M_PI / gr->fill.w);
+   sinusoidal_data->off = gr->map.offset;
+   sinusoidal_data->len = gr->fill.h;
+}
+
+static void
+sinusoidal_init_geom(RGBA_Gradient *gr)
+{
+   Sinusoidal_Data   *sinusoidal_data;
+   int    err = 1;
+   char   *s, *p, key[256];
+   float  amp, per, val;
+
+   if (!gr || (gr->type.geometer != &sinusoidal)) return;
+
+   sinusoidal_data = (Sinusoidal_Data *)gr->type.gdata;
+   if (!sinusoidal_data)
+     {
+       sinusoidal_data = calloc(1, sizeof(Sinusoidal_Data));
+       if (!sinusoidal_data)  return;
+       sinusoidal_data->amp = 1.0;
+       sinusoidal_data->per = 1.0;
+       sinusoidal_data->sa = 32;
+       sinusoidal_data->sp = M_PI / 32;
+       sinusoidal_data->off = 0.0;
+       sinusoidal_data->len = 32;
+     }
+   gr->type.gdata = sinusoidal_data;
+
+   if (!gr->type.params || !*(gr->type.params))
+       return;
+
+   s = strdup(gr->type.params);
+   if (!s) return;
+
+   amp = sinusoidal_data->amp;
+   per = sinusoidal_data->per;
+   p = s;
+   while ((p = evas_common_gradient_get_key_fval(p, key, &val)))
+     {
+       if (!strcmp(key, "amplitude"))
+         {
+           err = 0;
+           amp = val;
+         }
+       else if (!strcmp(key, "period"))
+         {
+           err = 0;
+           per = val;
+         }
+       else
+         {
+           err = 1;
+           break;
+         }
+     }
+   if (!err)
+     {
+       sinusoidal_data->amp = amp;
+       if (per < 0.0) per = -per;
+       sinusoidal_data->per = per;
+     }
+   free(s);
+}
+
+
+static int
+sinusoidal_has_alpha(RGBA_Gradient *gr, int op)
+{
+   if (!gr || (gr->type.geometer != &sinusoidal)) return 0;
+
+   if (gr->has_alpha | gr->map.has_alpha)
+       return 1;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+       return 0;
+   if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
+         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
+         (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
+       return 1;
+   return 0;
+}
+
+static int
+sinusoidal_has_mask(RGBA_Gradient *gr, int op)
+{
+   if (!gr || (gr->type.geometer != &sinusoidal)) return 0;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+     {
+       if ( (gr->fill.spread == _EVAS_TEXTURE_RESTRICT) ||
+             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REFLECT) ||
+             (gr->fill.spread == _EVAS_TEXTURE_RESTRICT_REPEAT) )
+           return 1;
+     }
+
+   return 0;
+}
+
+static int
+sinusoidal_get_map_len(RGBA_Gradient *gr)
+{
+   Sinusoidal_Data   *sinusoidal_data;
+
+   if (!gr || (gr->type.geometer != &sinusoidal)) return 0;
+   sinusoidal_data = (Sinusoidal_Data *)gr->type.gdata;
+   if (!sinusoidal_data) return 0;
+   return sinusoidal_data->len;
+}
+
+static Gfx_Func_Gradient_Fill
+sinusoidal_get_fill_func(RGBA_Gradient *gr, int op, unsigned char aa)
+{
+   Sinusoidal_Data   *sinusoidal_data;
+   Gfx_Func_Gradient_Fill  sfunc = NULL;
+   int masked_op = 0;
+
+   if (!gr || (gr->type.geometer != &sinusoidal))
+       return sfunc;
+   sinusoidal_data = (Sinusoidal_Data *)gr->type.gdata;
+   if (!sinusoidal_data) return sfunc;
+
+   sinusoidal_data->off = gr->map.offset;
+   if ( (op == _EVAS_RENDER_COPY) || (op == _EVAS_RENDER_COPY_REL) ||
+         (op == _EVAS_RENDER_MASK) || (op == _EVAS_RENDER_MUL) )
+       masked_op = 1;
+
+   switch (gr->fill.spread)
+     {
+      case _EVAS_TEXTURE_REFLECT:
+       {
+        if (aa)
+           sfunc = sinusoidal_reflect_aa;
+        else
+           sfunc = sinusoidal_reflect;
+       }
+      break;
+      case _EVAS_TEXTURE_REPEAT:
+       {
+        if (aa)
+           sfunc = sinusoidal_repeat_aa;
+        else
+           sfunc = sinusoidal_repeat;
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT:
+        sinusoidal_data->off = 0;
+      case _EVAS_TEXTURE_RESTRICT_REFLECT:
+       {
+        if (aa)
+          {
+           if (masked_op)
+               sfunc = sinusoidal_restrict_reflect_aa_masked;
+           else
+               sfunc = sinusoidal_restrict_reflect_aa;
+          }
+        else
+          {
+           if (masked_op)
+               sfunc = sinusoidal_restrict_reflect_masked;
+           else
+               sfunc = sinusoidal_restrict_reflect;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_RESTRICT_REPEAT:
+       {
+        if (aa)
+          {
+           if (masked_op)
+               sfunc = sinusoidal_restrict_repeat_aa_masked;
+           else
+               sfunc = sinusoidal_restrict_repeat_aa;
+          }
+        else
+          {
+           if (masked_op)
+               sfunc = sinusoidal_restrict_repeat_masked;
+           else
+               sfunc = sinusoidal_restrict_repeat;
+          }
+       }
+      break;
+      case _EVAS_TEXTURE_PAD:
+       {
+        if (aa)
+           sfunc = sinusoidal_pad_aa;
+        else
+           sfunc = sinusoidal_pad;
+       }
+      break;
+      default:
+       sfunc = sinusoidal_reflect_aa;
+      break;
+     }
+   return sfunc;
+}
+
+#define SETUP_SINU_FILL \
+   a00 = gdata->sp * (axx / 65536.0); \
+   a01 = gdata->sp * (axy / 65536.0); \
+   a10 = ayx / 65536.0; \
+   a11 = ayy / 65536.0; \
+   xf = (a00 * x) + (a01 * y); \
+   yf = (a10 * x) + (a11 * y);
+
+static void
+sinusoidal_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       int  l = (yf - (sa * sin(xf))) + off;
+
+       if (l < 0)  l = -l;
+        if (l >= src_len)
+          {
+           int  m = (l % (2 * src_len));
+
+           l = (l % src_len);
+           if (m >= src_len)
+               l = src_len - l - 1;
+          }
+       *dst++ = src[l];  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       float  r = (yf - (sa * sin(xf))) + off;
+       int    l = r, a;
+
+       if (r < 0)  r = -r;
+       a = 1 + (int)(255 * (r - (int)r));
+
+       if (l < 0)  l = -l;
+       if (l >= src_len)
+         {
+           int  m = (l % (2 * src_len));
+
+           l = (l % src_len);
+           if (m >= src_len)
+               { l = src_len - l - 1;  a = 257 - a; }
+         }
+       *dst = src[l];
+       if (l + 1 < src_len)
+         *dst = INTERP_256(a, src[l + 1], *dst);
+
+       dst++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       int  l = (yf - (sa * sin(xf))) + off;
+
+       l = (l % src_len);
+       if (l < 0)
+           l += src_len;
+       *dst++ = src[l];  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       float  r = (yf - (sa * sin(xf))) + off;
+       int    l = r, a;
+
+       if (r < 0) r = -r;
+       a = 1 + (int)(255 * (r - (int)r));
+
+       l = l % src_len;
+       if (l < 0)
+         { l += src_len;  a = 257 - a; }
+
+       *dst = src[l];
+       if (l + 1 < src_len)
+          *dst = INTERP_256(a, src[l + 1], *dst);
+       if (l == (src_len - 1))
+          *dst = INTERP_256(a, src[0], *dst);
+       dst++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_restrict_reflect(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                            int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       int  l = (yf - (sa * sin(xf)));
+
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                  l = src_len - l - 1;
+             }
+           *dst = src[l];
+         }
+       dst++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_restrict_reflect_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       float  r = (yf - (sa * sin(xf))) + off, s = r - off;
+       int    l = s;
+
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           int  a, lp = r;
+
+           if (r < 0)  r = -r;
+           a = 1 + (int)(255 * (r - (int)r));
+           if (lp < 0) lp = -lp;
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+           *dst = src[lp];
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if ((l == 0) && (s < 0))
+             {
+               a = 256 + (255 * s);
+               *dst = MUL_256(a, *dst);
+             }
+           if (l == (src_len - 1))
+             {
+               a = 256 - (255 * (s - l));
+               *dst = MUL_256(a, *dst);
+             }
+         }
+       dst++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_restrict_reflect_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                   int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       int  l = (yf - (sa * sin(xf)));
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           if (l < 0) l = -l;
+           if (l >= src_len)
+             {
+               int  m = (l % (2 * src_len));
+
+               l = (l % src_len);
+               if (m >= src_len)
+                  l = src_len - l - 1;
+             }
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_restrict_reflect_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                      int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       float  r = (yf - (sa * sin(xf))) + off, s = r - off;
+       int    l = s;
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           int  a, lp = r;
+
+           if (r < 0)  r = -r;
+           a = 1 + (int)(255 * (r - (int)r));
+           if (lp < 0) lp = -lp;
+           if (lp >= src_len)
+             {
+               int  m = (lp % (2 * src_len));
+
+               lp = (lp % src_len);
+               if (m >= src_len)
+                 { lp = src_len - lp - 1;  a = 257 - a; }
+             }
+           *dst = src[lp];  *mask = 255;
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if ((l == 0) && (s < 0))
+               *mask = 255 + (255 * s);
+           if (l == (src_len - 1))
+               *mask = 255 - (255 * (s - l));
+         }
+       dst++;  mask++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_restrict_repeat(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                           int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       int  l = (yf - (sa * sin(xf)));
+
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];
+         }
+       dst++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_restrict_repeat_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                              int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       float  r = (yf - (sa * sin(xf))) + off, s = r - off;
+       int    l = s;
+
+       *dst = 0;
+       if ((unsigned)l < src_len)
+         {
+           int  a, lp = r;
+
+           if (r < 0)  r = -r;
+           a = 1 + (int)(255 * (r - (int)r));
+           lp = lp % src_len;
+           if (lp < 0)
+             { lp += src_len;  a = 257 - a; }
+           *dst = src[lp];
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (lp == (src_len - 1))
+               *dst = INTERP_256(a, src[0], *dst);
+           if ((l == 0) && (s < 0))
+             {
+               a = 256 + (255 * s);
+               *dst = MUL_256(a, *dst);
+             }
+           if (l == (src_len - 1))
+             {
+               a = 256 - (255 * (s - l));
+               *dst = MUL_256(a, *dst);
+             }
+         }
+       dst++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_restrict_repeat_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       int  l = (yf - (sa * sin(xf)));
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           l += off;
+           l = l % src_len;
+           if (l < 0)
+               l += src_len;
+           *dst = src[l];  *mask = 255;
+         }
+       dst++;  mask++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_restrict_repeat_aa_masked(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                                     int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+   float  off = gdata->off * (src_len - 1);
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       float  r = (yf - (sa * sin(xf))) + off, s = r - off;
+       int    l = s;
+
+       *dst = 0;  *mask = 0;
+       if ((unsigned)l < src_len)
+         {
+           int  a, lp = r;
+
+           if (r < 0)  r = -r;
+           a = 1 + (int)(255 * (r - (int)r));
+           lp = lp % src_len;
+           if (lp < 0)
+             { lp += src_len;  a = 257 - a; }
+           *dst = src[lp];  *mask = 255;
+           if (lp + 1 < src_len)
+               *dst = INTERP_256(a, src[lp + 1], *dst);
+           if (lp == (src_len - 1))
+               *dst = INTERP_256(a, src[0], *dst);
+           if ((l == 0) && (s < 0))
+               *mask = 255 + (255 * s);
+           if (l == (src_len - 1))
+               *mask = 255 - (255 * (s - l));
+         }
+       dst++;  mask++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_pad(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+               int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       int  l = (yf - (sa * sin(xf)));
+
+       if (l < 0)
+           l = 0;
+       if (l >= src_len)
+           l = src_len - 1;
+       *dst = src[l];
+       dst++;  xf += a00;  yf += a10;
+     }
+}
+
+static void
+sinusoidal_pad_aa(DATA32 *src, int src_len, DATA32 *dst, DATA8 *mask, int dst_len,
+                  int x, int y, int axx, int axy, int ayx, int ayy, void *params_data)
+{
+   DATA32  *dst_end = dst + dst_len;
+   Sinusoidal_Data  *gdata = (Sinusoidal_Data *)params_data;
+   float  xf, yf, sa = gdata->sa;
+   float  a00, a01, a10, a11;
+
+   SETUP_SINU_FILL
+
+   while (dst < dst_end)
+     {
+       float  r = (yf - (sa * sin(xf)));
+       int    l = r;
+
+       *dst = 0;
+       if ((unsigned)l < (src_len - 1))
+         {
+           int  a;
+
+           if (r < 0) r = -r;
+           a = 1 + (int)(255 * (r - (int)r));
+           *dst = INTERP_256(a, src[l + 1], src[l]);
+         }
+       if (l < 0) *dst = src[0];
+       if (l >= src_len) *dst = src[src_len - 1];
+       dst++;  xf += a00;  yf += a10;
+     }
+}
diff --git a/src/lib/engines/common/evas_image.h b/src/lib/engines/common/evas_image.h
new file mode 100644 (file)
index 0000000..2dfde62
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef _EVAS_IMAGE_H
+#define _EVAS_IMAGE_H
+
+
+EAPI void              evas_common_image_init                      (void);
+EAPI void              evas_common_image_shutdown                  (void);
+
+EAPI void              evas_common_image_colorspace_normalize      (RGBA_Image *im);
+EAPI void              evas_common_image_colorspace_dirty          (RGBA_Image *im);
+EAPI void              evas_common_image_cache_free                (void); /*2*/
+EAPI void              evas_common_image_premul                    (Image_Entry *ie); /*2*/
+EAPI void              evas_common_image_set_alpha_sparse          (Image_Entry *ie); /*2*/
+/* EAPI RGBA_Image   *evas_common_image_alpha_create      (int w, int h); */
+/* EAPI RGBA_Image   *evas_common_image_create            (int w, int h); */
+EAPI RGBA_Image       *evas_common_image_new                       (void);
+EAPI Evas_Cache_Image *evas_common_image_cache_get                 (void);
+
+EAPI void              evas_common_image_set_cache                 (int size);
+EAPI int               evas_common_image_get_cache                 (void);
+
+EAPI RGBA_Image       *evas_common_image_line_buffer_obtain        (int len);
+EAPI void              evas_common_image_line_buffer_release       (RGBA_Image *im);
+
+EAPI RGBA_Image       *evas_common_image_alpha_line_buffer_obtain  (int len);
+EAPI void              evas_common_image_alpha_line_buffer_release (RGBA_Image *im);
+EAPI void              evas_common_image_alpha_line_buffer_free    (RGBA_Image *im);
+
+EAPI RGBA_Image       *evas_common_load_image_from_file            (const char *file, const char *key, RGBA_Image_Loadopts *lo);
+EAPI int               evas_common_save_image_to_file              (RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+
+
+#endif /* _EVAS_IMAGE_H */
diff --git a/src/lib/engines/common/evas_image_data.c b/src/lib/engines/common/evas_image_data.c
new file mode 100644 (file)
index 0000000..1a7090f
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <assert.h>
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+int
+evas_common_rgba_image_from_data(Image_Entry* ie_dst, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   RGBA_Image   *dst = (RGBA_Image *) ie_dst;
+
+   switch (cspace)
+     {
+     case EVAS_COLORSPACE_ARGB8888:
+       dst->cache_entry.w = w;
+       dst->cache_entry.h = h;
+       dst->image.data = image_data;
+       dst->image.no_free = 1;
+       dst->cache_entry.flags.alpha = alpha ? 1 : 0;
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       w &= ~0x1;
+       dst->cache_entry.w = w;
+       dst->cache_entry.h = h;
+       dst->cs.data = image_data;
+       dst->cs.no_free = 1;
+       break;
+      default:
+       abort();
+       break;
+     }
+   dst->cache_entry.space = cspace;
+   evas_common_image_colorspace_dirty(dst);
+   return 0;
+}
+
+int
+evas_common_rgba_image_from_copied_data(Image_Entry* ie_dst, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   RGBA_Image   *dst = (RGBA_Image *) ie_dst;
+
+   /* FIXME: Is dst->image.data valid. */
+   switch (cspace)
+     {
+     case EVAS_COLORSPACE_ARGB8888:
+       dst->cache_entry.flags.alpha = alpha ? 1 : 0;
+        if (image_data)
+          memcpy(dst->image.data, image_data, w * h * sizeof(DATA32));
+        break;
+     case EVAS_COLORSPACE_YCBCR422P601_PL:
+     case EVAS_COLORSPACE_YCBCR422P709_PL:
+        dst->cs.data = calloc(1, dst->cache_entry.h * sizeof(unsigned char*) * 2);
+        if (image_data && (dst->cs.data))
+          memcpy(dst->cs.data,  image_data, dst->cache_entry.h * sizeof(unsigned char*) * 2);
+        break;
+     default:
+        abort();
+        break;
+     }
+
+   dst->cache_entry.space = cspace;
+   evas_common_image_colorspace_dirty(dst);
+   return 0;
+}
+
+int
+evas_common_rgba_image_size_set(Image_Entry *ie_dst, const Image_Entry *ie_im, int w, int h)
+{
+   RGBA_Image   *dst = (RGBA_Image *) ie_dst;
+   RGBA_Image   *im = (RGBA_Image *) ie_im;
+
+   if ((im->cache_entry.space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (im->cache_entry.space == EVAS_COLORSPACE_YCBCR422P709_PL))
+     w &= ~0x1;
+
+   dst->flags = im->flags;
+   dst->cs.no_free = 0;
+   if ((im->cache_entry.space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (im->cache_entry.space == EVAS_COLORSPACE_YCBCR422P709_PL))
+     dst->cs.data = calloc(1, dst->cache_entry.h * sizeof(unsigned char *) * 2);
+   evas_common_image_colorspace_dirty(dst);
+
+   return 0;
+}
+
+int
+evas_common_rgba_image_colorspace_set(Image_Entry* ie_dst, int cspace)
+{
+   RGBA_Image   *dst = (RGBA_Image *) ie_dst;
+
+   switch (cspace)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (dst->cs.data)
+         {
+            if (!dst->cs.no_free) free(dst->cs.data);
+            dst->cs.data = NULL;
+            dst->cs.no_free = 0;
+         }
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       if (dst->image.no_free)
+         {
+            dst->image.data = NULL;
+            dst->image.no_free = 0;
+             /* FIXME: Must allocate image.data surface cleanly. */
+         }
+       if (dst->cs.data)
+         {
+            if (!dst->cs.no_free) free(dst->cs.data);
+         }
+       dst->cs.data = calloc(1, dst->cache_entry.h * sizeof(unsigned char *) * 2);
+       dst->cs.no_free = 0;
+       break;
+      default:
+       abort();
+       break;
+     }
+   dst->cache_entry.space = cspace;
+   evas_common_image_colorspace_dirty(dst);
+
+   return 0;
+}
diff --git a/src/lib/engines/common/evas_image_load.c b/src/lib/engines/common/evas_image_load.c
new file mode 100644 (file)
index 0000000..71a8486
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+extern Evas_List *evas_modules;
+
+struct ext_loader_s {
+   const char* extention;
+   const char* loader;
+};
+
+static struct ext_loader_s     loaders[] = {
+   { "png", "png" },
+   { "jpg", "jpeg" },
+   { "jpeg", "jpeg" },
+   { "jfif", "jpeg" },
+   { "eet", "eet" },
+   { "edj", "eet" },
+   { "eap", "eet" },
+   { "edb", "edb" },
+   { "xpm", "xpm" },
+   { "tiff", "tiff" },
+   { "tif", "tiff" },
+   { "svg", "svg" },
+   { "svgz", "svg" },
+   { "gif", "gif" },
+   { "pbm", "pmaps" },
+   { "pgm", "pmaps" },
+   { "ppm", "pmaps" },
+   { "pnm", "pmaps" }
+};
+
+int
+evas_common_load_rgba_image_module_from_file(Image_Entry *ie)
+{
+   Evas_Image_Load_Func *evas_image_load_func = NULL;
+   const char           *loader = NULL;
+   Evas_List            *l;
+   Evas_Module          *em;
+   char                 *dot;
+   int                   i;
+
+   dot = strrchr (ie->file, '.');
+   if (dot)
+     {
+       for (i = 0, ++dot; i < (sizeof (loaders) / sizeof (struct ext_loader_s)); ++i)
+         {
+            if (!strcasecmp (dot, loaders[i].extention))
+              {
+                 loader = loaders[i].loader;
+                 break;
+              }
+         }
+     }
+
+   if (loader)
+     {
+       em = evas_module_find_type(EVAS_MODULE_TYPE_IMAGE_LOADER, loader);
+       if (em)
+         {
+            if (evas_module_load(em))
+              {
+                 evas_module_use(em);
+                 evas_image_load_func = em->functions;
+                 if (evas_image_load_func->file_head(ie, ie->file, ie->key))
+                   goto ok;
+              }
+         }
+     }
+
+   for (l = evas_modules; l; l = l->next)
+     {
+       em = l->data;
+       if (em->type != EVAS_MODULE_TYPE_IMAGE_LOADER) continue;
+       if (!evas_module_load(em)) continue;
+        evas_image_load_func = em->functions;
+       evas_module_use(em);
+       if (evas_image_load_func->file_head(ie, ie->file, ie->key))
+         {
+            if (evas_modules != l)
+              {
+                 evas_modules = evas_list_promote_list(evas_modules, l);
+              }
+            goto ok;
+         }
+     }
+
+   return -1;
+
+  ok:
+   ie->info.module = (void*) em;
+   ie->info.loader = (void*) evas_image_load_func;
+   evas_module_ref((Evas_Module*) ie->info.module);
+   return 0;
+}
+
+int
+evas_common_load_rgba_image_data_from_file(Image_Entry *ie)
+{
+   Evas_Image_Load_Func *evas_image_load_func = NULL;
+
+   if (!ie->info.module) return -1;
+   if (ie->flags.loaded) return -1;
+
+   evas_image_load_func = ie->info.loader;
+   evas_module_use((Evas_Module*) ie->info.module);
+   if (!evas_image_load_func->file_data(ie, ie->file, ie->key))
+     return -1;
+
+   evas_module_unref((Evas_Module*) ie->info.module);
+   ie->info.module = NULL;
+
+   return 0;
+}
diff --git a/src/lib/engines/common/evas_image_main.c b/src/lib/engines/common/evas_image_main.c
new file mode 100644 (file)
index 0000000..6943120
--- /dev/null
@@ -0,0 +1,592 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"  /* so that EAPI in Eet.h is correctly defined */
+#endif
+
+#ifdef BUILD_LOADER_EET
+# include <Eet.h>
+#endif
+
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_image_private.h"
+#include "evas_convert_yuv.h"
+
+#ifdef HAVE_VALGRIND
+# include <memcheck.h>
+#endif
+
+static Evas_Cache_Image * eci = NULL;
+static int                reference = 0;
+
+/* static RGBA_Image *evas_rgba_line_buffer = NULL; */
+
+#define  EVAS_RGBA_LINE_BUFFER_MIN_LEN  256
+#define  EVAS_RGBA_LINE_BUFFER_MAX_LEN  2048
+
+/* static RGBA_Image *evas_alpha_line_buffer = NULL; */
+
+#define  EVAS_ALPHA_LINE_BUFFER_MIN_LEN  256
+#define  EVAS_ALPHA_LINE_BUFFER_MAX_LEN  2048
+
+
+static Image_Entry      *_evas_common_rgba_image_new(void);
+static void              _evas_common_rgba_image_delete(Image_Entry *ie);
+
+static int               _evas_common_rgba_image_surface_alloc(Image_Entry *ie, int w, int h);
+static void              _evas_common_rgba_image_surface_delete(Image_Entry *ie);
+static DATA32           *_evas_common_rgba_image_surface_pixels(Image_Entry *ie);
+
+static void              _evas_common_rgba_image_unload(Image_Entry *im);
+
+static void              _evas_common_rgba_image_dirty_region(Image_Entry *im, int x, int y, int w, int h);
+
+static int               _evas_common_rgba_image_ram_usage(Image_Entry *ie);
+
+/* Only called when references > 0. Need to provide a fresh copie of im. */
+/* The destination surface does have a surface, but no allocated pixel data. */
+static int               _evas_common_rgba_image_dirty(Image_Entry* dst, const Image_Entry* src);
+
+static void
+_evas_common_rgba_image_debug(const char* context, Image_Entry *eim)
+{
+   fprintf(stderr, "%p = [%s] {%s,%s} %i [%i|%i]\n", eim, context, eim->file, eim->key, eim->references, eim->w, eim->h);
+}
+
+static const Evas_Cache_Image_Func      _evas_common_image_func =
+{
+  _evas_common_rgba_image_new,
+  _evas_common_rgba_image_delete,
+  _evas_common_rgba_image_surface_alloc,
+  _evas_common_rgba_image_surface_delete,
+  _evas_common_rgba_image_surface_pixels,
+  evas_common_load_rgba_image_module_from_file,
+  _evas_common_rgba_image_unload,
+  _evas_common_rgba_image_dirty_region,
+  _evas_common_rgba_image_dirty,
+  evas_common_rgba_image_size_set,
+  evas_common_rgba_image_from_copied_data,
+  evas_common_rgba_image_from_data,
+  evas_common_rgba_image_colorspace_set,
+  evas_common_load_rgba_image_data_from_file,
+  _evas_common_rgba_image_ram_usage,
+/*   _evas_common_rgba_image_debug */
+  NULL
+};
+
+EAPI void
+evas_common_image_init(void)
+{
+   if (!eci)
+     eci = evas_cache_image_init(&_evas_common_image_func);
+   reference++;
+////   printf("REF++=%i\n", reference);
+
+#ifdef BUILD_LOADER_EET
+   eet_init();
+#endif
+}
+
+EAPI void
+evas_common_image_shutdown(void)
+{
+   if (--reference == 0)
+     {
+////   printf("REF--=%i\n", reference);
+// DISABLE for now - something wrong with cache shutdown freeing things
+// still in use - rage_thumb segv's now.
+//
+// actually - i think i see it. cache ref goes to 0 (and thus gets freed)
+// because in eng_setup() when a buffer changes size it is FIRST freed
+// THEN allocated again - thus brignhjing ref to 0 then back to 1 immediately
+// where it should stay at 1. - see evas_engine.c in the buffer enigne for
+// example. eng_output_free() is called BEFORE _output_setup(). although this
+// is only a SIGNE of the problem. we can patch this up with either freeing
+// after the setup (so we just pt a ref of 2 then back to 1), or just
+// evas_common_image_init() at the start and evas_common_image_shutdown()
+// after it all. really ref 0 should only be reached when no more canvases
+// with no more objects exist anywhere.
+//        evas_cache_image_shutdown(eci);
+//        eci = NULL;
+     }
+
+#ifdef BUILD_LOADER_EET
+   eet_shutdown();
+#endif
+}
+
+static Image_Entry *
+_evas_common_rgba_image_new(void)
+{
+   RGBA_Image *im;
+
+   im = calloc(1, sizeof(RGBA_Image));
+   if (!im) return NULL;
+   im->flags = RGBA_IMAGE_NOTHING;
+   im->ref = 1;
+   return &im->cache_entry;
+}
+
+static void
+_evas_common_rgba_image_delete(Image_Entry *ie)
+{
+   RGBA_Image   *im = (RGBA_Image *) ie;
+
+   evas_common_pipe_free(im);
+   if (ie->info.module) evas_module_unref((Evas_Module *)ie->info.module);
+   /* memset the image to 0x99 because i recently saw a segv where an
+    * seemed to be used BUT its contents were wrong - it looks like it was
+    * overwritten by something from efreet - as there was an execute command
+    * for a command there and some other signs - but to make sure, I am
+    * going to empty this struct out in case this happens again so i know
+    * that something else is overwritign this struct - or not */
+   memset(im, 0x99, sizeof(im));
+   free(im);
+}
+
+static int
+_evas_common_rgba_image_surface_alloc(Image_Entry *ie, int w, int h)
+{
+   RGBA_Image   *im = (RGBA_Image *) ie;
+   size_t        siz = 0;
+
+   if (im->image.no_free) return 0;
+
+   if (im->flags & RGBA_IMAGE_ALPHA_ONLY)
+     siz = w * h * sizeof(DATA8);
+   else
+     siz = w * h * sizeof(DATA32);
+
+   if (im->image.data) free(im->image.data);
+   im->image.data = malloc(siz);
+   if (im->image.data == NULL) return -1;
+
+#ifdef HAVE_VALGRIND
+# ifdef VALGRIND_MAKE_READABLE
+   VALGRIND_MAKE_READABLE(im->image.data, siz);
+# else
+#  ifdef VALGRIND_MAKE_MEM_DEFINED
+   VALGRIND_MAKE_MEM_DEFINED(im->image.data, siz);
+#  endif
+# endif
+#endif
+
+   return 0;
+}
+
+static void
+_evas_common_rgba_image_surface_delete(Image_Entry *ie)
+{
+   RGBA_Image   *im = (RGBA_Image *) ie;
+
+   if ((im->cs.data) && (im->image.data))
+     {
+       if (im->cs.data != im->image.data)
+         {
+            if (!im->cs.no_free) free(im->cs.data);
+         }
+     }
+   else if (im->cs.data)
+     {
+       if (!im->cs.no_free) free(im->cs.data);
+     }
+   im->cs.data = NULL;
+
+   if (im->image.data && !im->image.no_free)
+     free(im->image.data);
+   im->image.data = NULL;
+}
+
+static void
+_evas_common_rgba_image_unload(Image_Entry* im)
+{
+}
+
+static void
+_evas_common_rgba_image_dirty_region(Image_Entry* ie, int x, int y, int w, int h)
+{
+   RGBA_Image   *im = (RGBA_Image *) ie;
+
+   im->flags |= RGBA_IMAGE_IS_DIRTY;
+}
+
+/* Only called when references > 0. Need to provide a fresh copie of im. */
+static int
+_evas_common_rgba_image_dirty(Image_Entry *ie_dst, const Image_Entry *ie_src)
+{
+   RGBA_Image   *dst = (RGBA_Image *) ie_dst;
+   RGBA_Image   *src = (RGBA_Image *) ie_src;
+
+   evas_cache_image_load_data(&src->cache_entry);
+   if (_evas_common_rgba_image_surface_alloc(&dst->cache_entry,
+                                             src->cache_entry.w, src->cache_entry.h))
+     return 1;
+
+   evas_common_image_colorspace_normalize(src);
+   evas_common_image_colorspace_normalize(dst);
+/*    evas_common_blit_rectangle(src, dst, 0, 0, src->cache_entry.w, src->cache_entry.h, 0, 0); */
+/*    evas_common_cpu_end_opt(); */
+
+   return 0;
+}
+
+static int
+_evas_common_rgba_image_ram_usage(Image_Entry *ie)
+{
+   RGBA_Image   *im = (RGBA_Image *) ie;
+
+//   ram += sizeof(struct _RGBA_Image);
+//   if (im->info.real_file) ram += strlen(im->info.real_file);
+//   if (im->info.comment) ram += strlen(im->info.comment);
+   if ((im->image.data) && (!im->image.no_free))
+     return im->cache_entry.w * im->cache_entry.h * sizeof(DATA32);
+   return 0;
+}
+
+static DATA32 *
+_evas_common_rgba_image_surface_pixels(Image_Entry *ie)
+{
+   RGBA_Image *im = (RGBA_Image *) ie;
+
+   return im->image.data;
+}
+
+#if 0
+void
+evas_common_image_surface_alpha_tiles_calc(RGBA_Surface *is, int tsize)
+{
+   int x, y;
+   DATA32 *ptr;
+
+   if (is->spans) return;
+   if (!is->im->cache_entry.flags.alpha) return;
+   /* FIXME: dont handle alpha only images yet */
+   if ((is->im->flags & RGBA_IMAGE_ALPHA_ONLY)) return;
+   if (tsize < 0) tsize = 0;
+   is->spans = calloc(1, sizeof(RGBA_Image_Span *) * is->h);
+   if (!is->spans) return;
+   ptr = is->data;
+   for (y = 0; y < is->h; y++)
+     {
+       RGBA_Image_Span *sp;
+
+       sp = NULL;
+       for (x = 0; x < is->w; x++)
+         {
+            DATA8 a;
+
+            a = A_VAL(ptr);
+            if (sp)
+              {
+                 if (a == 0)
+                   {
+                      is->spans[y] = evas_object_list_append(is->spans[y], sp);
+                      sp = NULL;
+                   }
+                 else
+                   {
+                      sp->w++;
+                      if ((sp->v == 2) && (a != 255)) sp->v = 1;
+                   }
+              }
+            else
+              {
+                 if (a == 255)
+                   {
+                      sp = calloc(1, sizeof(RGBA_Image_Span));
+                      sp->x = x;
+                      sp->w = 1;
+                      sp->v = 2;
+                   }
+                 else if (a > 0)
+                   {
+                      sp = calloc(1, sizeof(RGBA_Image_Span));
+                      sp->x = x;
+                      sp->w = 1;
+                      sp->v = 1;
+                   }
+              }
+            ptr++;
+         }
+       if (sp)
+         {
+            is->spans[y] = evas_object_list_append(is->spans[y], sp);
+            sp = NULL;
+         }
+     }
+}
+#endif
+
+/* EAPI void */
+/* evas_common_image_surface_dealloc(RGBA_Surface *is) */
+/* { */
+/*    if ((is->data) && (!is->no_free)) */
+/*      { */
+/*     free(is->data); */
+/*     is->data = NULL; */
+/*      } */
+/* } */
+
+static RGBA_Image *
+evas_common_image_create(int w, int h)
+{
+   RGBA_Image *im;
+
+   im = (RGBA_Image *) _evas_common_rgba_image_new();
+   if (!im) return NULL;
+   im->cache_entry.w = w;
+   im->cache_entry.h = h;
+   if (_evas_common_rgba_image_surface_alloc(&im->cache_entry, w, h))
+     {
+        _evas_common_rgba_image_delete(&im->cache_entry);
+        return NULL;
+     }
+   im->cache_entry.flags.cached = 0;
+   return im;
+}
+
+EAPI RGBA_Image *
+evas_common_image_alpha_create(int w, int h)
+{
+   RGBA_Image   *im;
+
+   im = (RGBA_Image *) _evas_common_rgba_image_new();
+   if (!im) return NULL;
+   im->cache_entry.w = w;
+   im->cache_entry.h = h;
+   im->flags |= RGBA_IMAGE_ALPHA_ONLY;
+   if (_evas_common_rgba_image_surface_alloc(&im->cache_entry, w, h))
+     {
+        _evas_common_rgba_image_delete(&im->cache_entry);
+        return NULL;
+     }
+   im->cache_entry.flags.cached = 0;
+   return im;
+}
+
+void
+evas_common_image_colorspace_normalize(RGBA_Image *im)
+{
+   if ((!im->cs.data) ||
+       ((!im->cs.dirty) && (!(im->flags & RGBA_IMAGE_IS_DIRTY)))) return;
+   switch (im->cache_entry.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (im->image.data != im->cs.data)
+         {
+            if (!im->image.no_free) free(im->image.data);
+            im->image.data = im->cs.data;
+            im->cs.no_free = im->image.no_free;
+         }
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+#ifdef BUILD_CONVERT_YUV
+       if ((im->image.data) && (*((unsigned char **)im->cs.data)))
+         evas_common_convert_yuv_420p_601_rgba(im->cs.data, (DATA8*) im->image.data,
+                                               im->cache_entry.w, im->cache_entry.h);
+#endif
+       break;
+      default:
+       break;
+     }
+   im->cs.dirty = 0;
+}
+
+EAPI void
+evas_common_image_colorspace_dirty(RGBA_Image *im)
+{
+   im->cs.dirty = 1;
+}
+
+EAPI void
+evas_common_image_set_cache(int size)
+{
+   if (eci != NULL)
+     evas_cache_image_set(eci, size);
+}
+
+EAPI int
+evas_common_image_get_cache(void)
+{
+   return evas_cache_image_get(eci);
+}
+
+EAPI RGBA_Image *
+evas_common_load_image_from_file(const char *file, const char *key, RGBA_Image_Loadopts *lo)
+{
+   int           error;
+
+   if (file == NULL) return NULL;
+   return (RGBA_Image *) evas_cache_image_request(eci, file, key, lo, &error);
+}
+
+EAPI void
+evas_common_image_cache_free(void)
+{
+   evas_common_image_set_cache(0);
+}
+
+EAPI Evas_Cache_Image*
+evas_common_image_cache_get(void)
+{
+   return eci;
+}
+
+EAPI RGBA_Image *
+evas_common_image_line_buffer_obtain(int len)
+{
+   if (len < 1) return NULL;
+   if (len < EVAS_RGBA_LINE_BUFFER_MIN_LEN)
+       len = EVAS_RGBA_LINE_BUFFER_MIN_LEN;
+   return evas_common_image_create(len, 1);
+/*
+   if (evas_rgba_line_buffer)
+     {
+       if (evas_rgba_line_buffer->image->w >= len)
+          return evas_rgba_line_buffer;
+       evas_rgba_line_buffer->image->data = (DATA32 *)realloc(evas_rgba_line_buffer->image->data, len * sizeof(DATA32));
+       if (!evas_rgba_line_buffer->image->data)
+         {
+          evas_common_image_free(evas_rgba_line_buffer);
+          evas_rgba_line_buffer = NULL;
+          return NULL;
+         }
+       evas_rgba_line_buffer->image->w = len;
+       return evas_rgba_line_buffer;
+     }
+   evas_rgba_line_buffer = evas_common_image_create(len, 1);
+   if (!evas_rgba_line_buffer) return NULL;
+   return evas_rgba_line_buffer;
+ */
+}
+
+EAPI void
+evas_common_image_line_buffer_release(RGBA_Image *im)
+{
+    _evas_common_rgba_image_delete(&im->cache_entry);
+/*
+   if (!evas_rgba_line_buffer) return;
+   if (EVAS_RGBA_LINE_BUFFER_MAX_LEN < evas_rgba_line_buffer->image->w)
+     {
+       evas_rgba_line_buffer->image->w = EVAS_RGBA_LINE_BUFFER_MAX_LEN;
+       evas_rgba_line_buffer->image->data = (DATA32 *)realloc(evas_rgba_line_buffer->image->data,
+                                evas_rgba_line_buffer->image->w * sizeof(DATA32));
+       if (!evas_rgba_line_buffer->image->data)
+         {
+          evas_common_image_free(evas_rgba_line_buffer);
+          evas_rgba_line_buffer = NULL;
+         }
+     }
+ */
+}
+
+EAPI void
+evas_common_image_line_buffer_free(RGBA_Image *im)
+{
+    _evas_common_rgba_image_delete(&im->cache_entry);
+/*
+   if (!evas_rgba_line_buffer) return;
+   evas_common_image_free(evas_rgba_line_buffer);
+   evas_rgba_line_buffer = NULL;
+ */
+}
+
+EAPI RGBA_Image *
+evas_common_image_alpha_line_buffer_obtain(int len)
+{
+   if (len < 1) return NULL;
+   if (len < EVAS_ALPHA_LINE_BUFFER_MIN_LEN)
+       len = EVAS_ALPHA_LINE_BUFFER_MIN_LEN;
+   return evas_common_image_alpha_create(len, 1);
+/*
+   if (evas_alpha_line_buffer)
+     {
+       if (evas_alpha_line_buffer->image->w >= len)
+          return evas_alpha_line_buffer;
+       evas_alpha_line_buffer->image->data = realloc(evas_alpha_line_buffer->image->data, len * sizeof(DATA8));
+       if (!evas_alpha_line_buffer->image->data)
+         {
+          evas_common_image_free(evas_alpha_line_buffer);
+          evas_alpha_line_buffer = NULL;
+          return NULL;
+         }
+       evas_alpha_line_buffer->image->w = len;
+       return evas_alpha_line_buffer;
+     }
+   evas_alpha_line_buffer = evas_common_image_alpha_create(len, 1);
+   return evas_alpha_line_buffer;
+ */
+}
+
+EAPI void
+evas_common_image_alpha_line_buffer_release(RGBA_Image *im)
+{
+    _evas_common_rgba_image_delete(&im->cache_entry);
+/*
+   if (!evas_alpha_line_buffer) return;
+   if (EVAS_ALPHA_LINE_BUFFER_MAX_LEN < evas_alpha_line_buffer->image->w)
+     {
+       evas_alpha_line_buffer->image->w = EVAS_ALPHA_LINE_BUFFER_MAX_LEN;
+       evas_alpha_line_buffer->image->data = realloc(evas_alpha_line_buffer->image->data,
+                                evas_alpha_line_buffer->image->w * sizeof(DATA8));
+       if (!evas_alpha_line_buffer->image->data)
+         {
+          evas_common_image_free(evas_alpha_line_buffer);
+          evas_alpha_line_buffer = NULL;
+         }
+     }
+ */
+}
+
+EAPI void
+evas_common_image_premul(Image_Entry *ie)
+{
+   DATA32  *s, *se;
+   DATA32  nas = 0;
+
+   if (!ie) return ;
+   if (!evas_cache_image_pixels(ie)) return ;
+   if (!ie->flags.alpha) return;
+
+   s = evas_cache_image_pixels(ie);
+   se = s + (ie->w * ie->h);
+   while (s < se)
+     {
+       DATA32  a = 1 + (*s >> 24);
+
+       *s = (*s & 0xff000000) + (((((*s) >> 8) & 0xff) * a) & 0xff00) +
+                        (((((*s) & 0x00ff00ff) * a) >> 8) & 0x00ff00ff);
+       s++;
+       if ((a == 1) || (a == 256))
+          nas++;
+     }
+   if ((ALPHA_SPARSE_INV_FRACTION * nas) >= (ie->w * ie->h))
+     ie->flags.alpha_sparse = 1;
+}
+
+EAPI void
+evas_common_image_set_alpha_sparse(Image_Entry *ie)
+{
+   DATA32  *s, *se;
+   DATA32  nas = 0;
+
+   if (!ie) return;
+   if (!evas_cache_image_pixels(ie)) return ;
+   if (!ie->flags.alpha) return;
+
+   s = evas_cache_image_pixels(ie);
+   se = s + (ie->w * ie->h);
+   while (s < se)
+     {
+       DATA32  p = *s & 0xff000000;
+
+       if (!p || (p == 0xff000000))
+          nas++;
+       s++;
+     }
+   if ((ALPHA_SPARSE_INV_FRACTION * nas) >= (ie->w * ie->h))
+     ie->flags.alpha_sparse = 1;
+}
diff --git a/src/lib/engines/common/evas_image_private.h b/src/lib/engines/common/evas_image_private.h
new file mode 100644 (file)
index 0000000..5f07e8c
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef _EVAS_IMAGE_PRIVATE_H
+#define _EVAS_IMAGE_PRIVATE_H
+
+int             evas_common_load_rgba_image_module_from_file (Image_Entry *im);
+int             evas_common_load_rgba_image_data_from_file   (Image_Entry *im);
+
+int             evas_common_rgba_image_size_set              (Image_Entry* dst, const Image_Entry* im, int w, int h);
+int             evas_common_rgba_image_from_copied_data      (Image_Entry* dst, int w, int h, DATA32 *image_data, int alpha, int cspace);
+int             evas_common_rgba_image_from_data             (Image_Entry* dst, int w, int h, DATA32 *image_data, int alpha, int cspace);
+int             evas_common_rgba_image_colorspace_set        (Image_Entry* dst, int cspace);
+
+
+#endif /* _EVAS_IMAGE_PRIVATE_H */
diff --git a/src/lib/engines/common/evas_image_save.c b/src/lib/engines/common/evas_image_save.c
new file mode 100644 (file)
index 0000000..9d2a686
--- /dev/null
@@ -0,0 +1,57 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "evas_options.h"
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+
+extern Evas_List *evas_modules;
+
+int
+evas_common_save_image_to_file(RGBA_Image *im, const char *file, const char *key, int quality, int compress)
+{
+   Evas_Image_Save_Func *evas_image_save_func = NULL;
+   char *p;
+   char *saver = NULL;
+
+   p = strrchr(file, '.');
+   if (p)
+     {
+       p++;
+
+       if (!strcasecmp(p, "png"))
+          saver = "png";
+       if ((!strcasecmp(p, "jpg")) || (!strcasecmp(p, "jpeg")) ||
+           (!strcasecmp(p, "jfif")))
+          saver = "jpeg";
+       if ((!strcasecmp(p, "eet")) || (!strcasecmp(p, "edj")) ||
+            (!strcasecmp(p, "eap")))
+          saver = "eet";
+       if (!strcasecmp(p, "edb"))
+          saver = "edb";
+     }
+
+   if (saver)
+     {
+        Evas_Module *em;
+
+       em = evas_module_find_type(EVAS_MODULE_TYPE_IMAGE_SAVER, saver);
+       if (em)
+         {
+            evas_module_use(em);
+            if (evas_module_load(em))
+              {
+                 evas_image_save_func = em->functions;
+                 return evas_image_save_func->image_save(im, file, key, quality, compress);
+              }
+         }
+     }
+   return 0;
+}
diff --git a/src/lib/engines/common/evas_line.h b/src/lib/engines/common/evas_line.h
new file mode 100644 (file)
index 0000000..9d45e3d
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _EVAS_LINE_H
+#define _EVAS_LINE_H
+
+
+EAPI void          evas_common_line_init               (void);
+
+EAPI void          evas_common_line_draw               (RGBA_Image *dst, RGBA_Draw_Context *dc, int x1, int y1, int x2, int y2);
+
+
+#endif /* _EVAS_LINE_H */
+
diff --git a/src/lib/engines/common/evas_line_main.c b/src/lib/engines/common/evas_line_main.c
new file mode 100644 (file)
index 0000000..d036ff3
--- /dev/null
@@ -0,0 +1,663 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_blend_private.h"
+
+
+static void
+_evas_draw_point(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y);
+
+static void
+_evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1);
+
+static void
+_evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1);
+
+static void
+_evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1);
+
+
+#define IN_RANGE(x, y, w, h) \
+( ((unsigned)(x) < (w)) && ((unsigned)(y) < (h)) )
+
+#define IN_RECT(x, y, rx, ry, rw, rh) \
+( ((unsigned)((x) - (rx)) < (rw)) && ((unsigned)((y) - (ry)) < (rh)) )
+
+#define EXCHANGE_POINTS(x0, y0, x1, y1) \
+{ \
+       int _tmp = y0; \
+  \
+       y0 = y1;   \
+       y1 = _tmp; \
+  \
+       _tmp = x0; \
+       x0 = x1;   \
+       x1 = _tmp; \
+}
+
+
+EAPI void
+evas_common_line_init(void)
+{
+}
+
+EAPI void
+evas_common_line_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1)
+{
+   int  x, y, w, h;
+   int  clx, cly, clw, clh;
+   int  cuse, cx, cy, cw, ch;
+
+   if ((x0 == x1) && (y0 == y1))
+     {
+       _evas_draw_point(dst, dc, x0, y0);
+       return;
+     }
+
+   clx = cly = 0;
+   clw = dst->cache_entry.w;
+   clh = dst->cache_entry.h;
+
+   /* save out clip info */
+   cuse = dc->clip.use;
+   cx = dc->clip.x;
+   cy = dc->clip.y;
+   cw = dc->clip.w;
+   ch = dc->clip.h;
+
+   if (cuse)
+     {
+       RECTS_CLIP_TO_RECT(clx, cly, clw, clh, cx, cy, cw, ch);
+       if ((clw < 1) || (clh < 1))
+          return;
+     }
+
+   x = MIN(x0, x1);
+   y = MIN(y0, y1);
+   w = MAX(x0, x1) - x + 1;
+   h = MAX(y0, y1) - y + 1;
+
+   RECTS_CLIP_TO_RECT(clx, cly, clw, clh, x, y, w, h);
+   if ((clw < 1) || (clh < 1))
+       return;
+
+   dc->clip.use = 1;
+   dc->clip.x = clx;
+   dc->clip.y = cly;
+   dc->clip.w = clw;
+   dc->clip.h = clh;
+
+   if (dc->anti_alias)
+       _evas_draw_line_aa(dst, dc, x0, y0, x1, y1);
+   else
+       _evas_draw_line(dst, dc, x0, y0, x1, y1);
+
+   /* restore clip info */
+   dc->clip.use = cuse;
+   dc->clip.x = cx;
+   dc->clip.y = cy;
+   dc->clip.w = cw;
+   dc->clip.h = ch;
+}
+
+
+static void
+_evas_draw_point(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y)
+{
+   RGBA_Gfx_Pt_Func pfunc;
+
+   if (!IN_RANGE(x, y, dst->cache_entry.w, dst->cache_entry.h))
+       return;
+   if ((dc->clip.use) && (!IN_RECT(x, y, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h)))
+       return;
+   pfunc = evas_common_gfx_func_composite_color_pt_get(dc->col.col, dst, dc->render_op);
+   if (pfunc)
+       pfunc(0, 255, dc->col.col, dst->image.data + (dst->cache_entry.w * y) + x);
+}
+
+/*
+   these functions use the dc->clip data as bounding
+   data. they assume that such data has already been cut
+   back to lie in the dst image rect and the object's
+   (line) bounding rect.
+*/
+static void
+_evas_draw_simple_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1)
+{
+   int     dx, dy, len, lx, ty, rx, by;
+   int     clx, cly, clw, clh;
+   int     dstw;
+   DATA32  *p, color;
+   RGBA_Gfx_Pt_Func pfunc;
+   RGBA_Gfx_Func    sfunc;
+
+   dstw = dst->cache_entry.w;
+   color = dc->col.col;
+
+   if (y0 > y1)
+      EXCHANGE_POINTS(x0, y0, x1, y1)
+   if (x0 > x1)
+      EXCHANGE_POINTS(x0, y0, x1, y1)
+
+   dx = x1 - x0;
+   dy = y1 - y0;
+
+   clx = dc->clip.x;
+   cly = dc->clip.y;
+   clw = dc->clip.w;
+   clh = dc->clip.h;
+
+   lx = clx;
+   rx = clx + clw - 1;
+   ty = cly;
+   by = cly + clh - 1;
+
+   if (dy == 0)
+     {
+#ifdef EVAS_SLI
+       if (((y0) % dc->sli.h) == dc->sli.y)
+#endif
+         {
+            if ((y0 >= ty) && (y0 <= by))
+              {
+                 if (dx < 0)
+                   {
+                      int  tmp = x1;
+
+                      x1 = x0;
+                      x0 = tmp;
+                   }
+
+                 if (x0 < lx) x0 = lx;
+                 if (x1 > rx) x1 = rx;
+
+                 len = x1 - x0 + 1;
+                 p = dst->image.data + (dstw * y0) + x0;
+                 sfunc = evas_common_gfx_func_composite_color_span_get(color, dst, len, dc->render_op);
+                 if (sfunc)
+                   sfunc(NULL, NULL, color, p, len);
+              }
+         }
+       return;
+     }
+
+   pfunc = evas_common_gfx_func_composite_color_pt_get(color, dst, dc->render_op);
+   if (!pfunc) return;
+
+   if (dx == 0)
+     {
+       if ((x0 >= lx) && (x0 <= rx))
+         {
+            if (y0 < ty) y0 = ty;
+            if (y1 > by) y1 = by;
+
+            len = y1 - y0 + 1;
+            p = dst->image.data + (dstw * y0) + x0;
+            while (len--)
+              {
+#ifdef EVAS_SLI
+                 if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y)
+#endif
+                   {
+                      pfunc(0, 255, color, p);
+                   }
+                 p += dstw;
+              }
+         }
+       return;
+     }
+
+   if ((dy == dx) || (dy == -dx))
+     {
+       int   p0_in, p1_in;
+
+       p0_in = (IN_RECT(x0, y0, clx, cly, clw, clh) ? 1 : 0);
+       p1_in = (IN_RECT(x1, y1, clx, cly, clw, clh) ? 1 : 0);
+
+       if (dx > 0)
+         {
+           if (!p0_in)
+             {
+               x0 = x0 + (ty - y0);
+               y0 = ty;
+               if (x0 > rx) return;
+               if (x0 < lx)
+                 {
+                   y0 = y0 + (lx - x0);
+                   x0 = lx;
+                   if ((y0 < ty) || (y0 > by)) return;
+                 }
+             }
+           if (!p1_in)
+             {
+               x1 = x0 + (by - y0);
+               y1 = by;
+               if (x1 < lx) return;
+               if (x1 > rx)
+                 {
+                   y1 = y0 + (rx - x0);
+                   x1 = rx;
+                   if ((y1 < ty) || (y1 > by)) return;
+                 }
+             }
+         }
+       else
+         {
+           if (!p0_in)
+             {
+               x0 = x0 - (ty - y0);
+               y0 = ty;
+               if (x0 < lx) return;
+               if (x0 > rx)
+                 {
+                   y0 = y0 - (rx - x0);
+                   x0 = rx;
+                   if ((y0 < ty) || (y0 > by)) return;
+                 }
+             }
+           if (!p1_in)
+             {
+               x1 = x0 - (by - y0);
+               y1 = by;
+               if (x1 > rx) return;
+               if (x1 < lx)
+                 {
+                   y1 = y0 - (lx - x0);
+                   x1 = lx;
+                   if ((y1 < ty) || (y1 > by)) return;
+                 }
+             }
+         }
+       if (y1 > y0)
+         {
+            p = dst->image.data + (dstw * y0) + x0;
+            len = y1 - y0 + 1;
+            if (dx > 0)  dstw++;
+            else  dstw--;
+         }
+       else
+         {
+            len = y0 - y1 + 1;
+            p = dst->image.data + (dstw * y1) + x1;
+            if (dx > 0)  dstw--;
+            else  dstw++;
+         }
+
+       while (len--)
+         {
+#ifdef EVAS_SLI
+            if (((y1 + 1 - len) % dc->sli.h) == dc->sli.y)
+#endif
+              {
+                 pfunc(0, 255, color, p);
+              }
+           p += dstw;
+         }
+     }
+}
+
+
+#define SETUP_LINE_SHALLOW             \
+       if (x0 > x1)                                                    \
+         {                                                                     \
+          EXCHANGE_POINTS(x0, y0, x1, y1)                              \
+          dx = -dx;                                                    \
+          dy = -dy;                                                    \
+         }                                                                     \
+                                                                               \
+       px = x0;                                                                \
+       py = y0;                                                                \
+                                                                               \
+       p0_in = (IN_RANGE(x0 , y0 , clw, clh) ? 1 : 0);         \
+       p1_in = (IN_RANGE(x1 , y1 , clw, clh) ? 1 : 0);         \
+                                                                               \
+       dely = 1;                                                               \
+       dh = dstw;                                                              \
+       if (dy < 0)                                                             \
+         {                                                                     \
+          dely = -1;                                                   \
+          dh = -dstw;                                                  \
+         }                                                                     \
+                                                                               \
+       dyy = ((dy) << 16) / (dx);                                              \
+                                                                               \
+       if (!p0_in)                                                             \
+         {                                                                     \
+          dxx = ((dx) << 16) / (dy);                                   \
+          if (px < 0)                                                  \
+            {                                                          \
+               x = -px;  px = 0;                                               \
+               yy = x * dyy;                                           \
+               y = yy >> 16;                                           \
+               if (!a_a)                                                       \
+                   y += (yy - (y << 16)) >> 15;                        \
+               py += y;                                                        \
+               if ((dely > 0) && (py >= clh))                  \
+                  return;                                                      \
+               else if ((dely < 0) && (py < -1))                       \
+                  return;                                                      \
+            }                                                          \
+                                                                               \
+          y = 0;                                                               \
+          if ((dely > 0) && (py < -1))                         \
+               y = (-1 - py);                                          \
+          else if ((dely < 0) && (py >= clh))                  \
+               y = (clh - 1 - py);                                     \
+                                                                               \
+          xx = y * dxx;                                                        \
+          x = xx >> 16;                                                        \
+          if (!a_a)                                                    \
+              x += (xx - (x << 16)) >> 15;                     \
+          px += x;                                                             \
+          if (px >= clw) return;                                       \
+                                                                               \
+          yy = x * dyy;                                                        \
+          y = yy >> 16;                                                        \
+          if (!a_a)                                                    \
+              y += (yy - (y << 16)) >> 15;                     \
+          py += y;                                                             \
+          if ((dely > 0) && (py >= clh))                               \
+                return;                                                        \
+          else if ((dely < 0) && (py < -1))                    \
+                return;                                                        \
+         }                                                                     \
+                                                                               \
+       p = data + (dstw * py) + px;                                    \
+                                                                               \
+       x = px - x0;                                                    \
+       yy = x * dyy;                                                   \
+       prev_y = (yy >> 16);                                            \
+                                                                               \
+       rx = MIN(x1 + 1, clw);                                          \
+       by = clh - 1;
+
+
+#define SETUP_LINE_STEEP               \
+   if (y0 > y1)                                                                \
+     {                                                                 \
+       EXCHANGE_POINTS(x0, y0, x1, y1)                         \
+       dx = -dx;                                                               \
+       dy = -dy;                                                               \
+     }                                                                 \
+                                                                               \
+   px = x0;                                                                    \
+   py = y0;                                                                    \
+                                                                               \
+   p0_in = (IN_RANGE(x0 , y0 , clw, clh) ? 1 : 0);             \
+   p1_in = (IN_RANGE(x1 , y1 , clw, clh) ? 1 : 0);             \
+                                                                               \
+   delx = 1;                                                           \
+   if (dx < 0)                                                         \
+       delx = -1;                                                              \
+                                                                               \
+   dxx = ((dx) << 16) / (dy);                                          \
+                                                                               \
+   if (!p0_in)                                                         \
+     {                                                                 \
+       dyy = ((dy) << 16) / (dx);                                              \
+                                                                               \
+       if (py < 0)                                                             \
+         {                                                                     \
+          y = -py;  py = 0;                                            \
+          xx = y * dxx;                                                        \
+          x = xx >> 16;                                                        \
+          if (!a_a)                                                    \
+              x += (xx - (x << 16)) >> 15;                     \
+          px += x;                                                             \
+          if ((delx > 0) && (px >= clw))                               \
+               return;                                                 \
+          else if ((delx < 0) && (px < -1))                    \
+               return;                                                 \
+         }                                                                     \
+                                                                               \
+       x = 0;                                                          \
+       if ((delx > 0) && (px < -1))                                    \
+          x = (-1 - px);                                                       \
+       else if ((delx < 0) && (px >= clw))                             \
+          x = (clw - 1 - px);                                          \
+                                                                               \
+       yy = x * dyy;                                                   \
+       y = yy >> 16;                                                   \
+       if (!a_a)                                                               \
+           y += (yy - (y << 16)) >> 15;                                \
+       py += y;                                                                \
+       if (py >= clh) return;                                          \
+                                                                               \
+       xx = y * dxx;                                                   \
+       x = xx >> 16;                                                   \
+        if (!a_a)                                                              \
+           x += (xx - (x << 16)) >> 15;                                \
+       px += x;                                                                \
+       if ((delx > 0) && (px >= clw))                          \
+          return;                                                              \
+       else if ((delx < 0) && (px < -1))                               \
+          return;                                                              \
+     }                                                                 \
+                                                                               \
+   p = data + (dstw * py) + px;                                        \
+                                                                               \
+   y = py - y0;                                                                \
+   xx = y * dxx;                                                               \
+   prev_x = (xx >> 16);                                                        \
+                                                                               \
+   by = MIN(y1 + 1, clh);                                              \
+   rx = clw - 1;
+
+
+
+static void
+_evas_draw_line(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1)
+{
+   int     px, py, x, y, prev_x, prev_y;
+   int     dx, dy, rx, by, p0_in, p1_in, dh, a_a = 0;
+   int     delx, dely, xx, yy, dxx, dyy;
+   int     clx, cly, clw, clh;
+   int     dstw;
+   DATA32  *p, *data, color;
+   RGBA_Gfx_Pt_Func pfunc;
+
+   dx = x1 - x0;
+   dy = y1 - y0;
+
+   if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) )
+     {
+       _evas_draw_simple_line(dst, dc, x0, y0, x1, y1);
+       return;
+     }
+
+   color = dc->col.col;
+   pfunc = evas_common_gfx_func_composite_color_pt_get(color, dst, dc->render_op);
+   if (!pfunc) return;
+
+   clx = dc->clip.x;
+   cly = dc->clip.y;
+   clw = dc->clip.w;
+   clh = dc->clip.h;
+
+   data = dst->image.data;
+   dstw = dst->cache_entry.w;
+
+   data += (dstw * cly) + clx;
+   x0 -= clx;
+   y0 -= cly;
+   x1 -= clx;
+   y1 -= cly;
+
+   /* shallow: x-parametric */
+   if ((dy < dx) || (dy < -dx))
+     {
+       SETUP_LINE_SHALLOW
+
+       while (px < rx)
+         {
+           y = (yy >> 16);
+           y += ((yy - (y << 16)) >> 15);
+           if (prev_y != y)
+             {
+               prev_y = y;
+               p += dh;
+               py += dely;
+             }
+           if (!p1_in)
+             {
+               if ((py < 0) && (dely < 0)) return;
+               if ((py > by) && (dely > 0)) return;
+             }
+#ifdef EVAS_SLI
+            if (((py) % dc->sli.h) == dc->sli.y)
+#endif
+              {
+                 if (IN_RANGE(px, py, clw, clh))
+                   pfunc(0, 255, color, p);
+              }
+           yy += dyy;
+           px++;
+           p++;
+         }
+       return;
+     }
+
+   /* steep: y-parametric */
+
+   SETUP_LINE_STEEP
+
+   while (py < by)
+     {
+       x = (xx >> 16);
+       x += ((xx - (x << 16)) >> 15);
+       if (prev_x != x)
+         {
+           prev_x = x;
+           px += delx;
+           p += delx;
+         }
+       if (!p1_in)
+         {
+           if ((px < 0) && (delx < 0)) return;
+           if ((px > rx) && (delx > 0)) return;
+         }
+#ifdef EVAS_SLI
+       if (((py) % dc->sli.h) == dc->sli.y)
+#endif
+         {
+            if (IN_RANGE(px, py, clw, clh))
+              pfunc(0, 255, color, p);
+         }
+       xx += dxx;
+       py++;
+       p += dstw;
+     }
+}
+
+
+static void
+_evas_draw_line_aa(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1)
+{
+   int     px, py, x, y, prev_x, prev_y;
+   int     dx, dy, rx, by, p0_in, p1_in, dh, a_a = 1;
+   int     delx, dely, xx, yy, dxx, dyy;
+   int     clx, cly, clw, clh;
+   int     dstw;
+   DATA32  *p, *data, color;
+   RGBA_Gfx_Pt_Func pfunc;
+
+   if (y0 > y1)
+      EXCHANGE_POINTS(x0, y0, x1, y1)
+   dx = x1 - x0;
+   dy = y1 - y0;
+
+   if ( (dx == 0) || (dy == 0) || (dx == dy) || (dx == -dy) )
+     {
+       _evas_draw_simple_line(dst, dc, x0, y0, x1, y1);
+       return;
+     }
+
+   color = dc->col.col;
+   pfunc = evas_common_gfx_func_composite_mask_color_pt_get(color, dst, dc->render_op);
+   if (!pfunc) return;
+
+   clx = dc->clip.x;
+   cly = dc->clip.y;
+   clw = dc->clip.w;
+   clh = dc->clip.h;
+
+   data = dst->image.data;
+   dstw = dst->cache_entry.w;
+
+   data += (dstw * cly) + clx;
+   x0 -= clx;
+   y0 -= cly;
+   x1 -= clx;
+   y1 -= cly;
+
+   /* shallow: x-parametric */
+   if ((dy < dx) || (dy < -dx))
+     {
+       SETUP_LINE_SHALLOW
+
+       while (px < rx)
+         {
+           DATA8   aa;
+
+           y = (yy >> 16);
+           if (prev_y != y)
+             {
+               prev_y = y;
+               p += dh;
+               py += dely;
+             }
+           if (!p1_in)
+             {
+               if ((py < -1) && (dely < 0)) return;
+               if ((py > by) && (dely > 0)) return;
+             }
+           if ((unsigned)(px) < clw)
+             {
+               aa = ((yy - (y << 16)) >> 8);
+               if ((unsigned)(py) < clh)
+                  pfunc(0, 255 - aa, color, p);
+               if ((unsigned)(py + 1) < clh)
+                  pfunc(0, aa, color, p + dstw);
+             }
+           yy += dyy;
+           px++;
+           p++;
+         }
+       return;
+     }
+
+   /* steep: y-parametric */
+
+   SETUP_LINE_STEEP
+
+   while (py < by)
+     {
+       DATA8   aa;
+
+       x = (xx >> 16);
+       if (prev_x != x)
+         {
+           prev_x = x;
+           px += delx;
+           p += delx;
+         }
+       if (!p1_in)
+         {
+           if ((px < -1) && (delx < 0)) return;
+           if ((px > rx) && (delx > 0)) return;
+         }
+       if ((unsigned)(py) < clh)
+         {
+           aa = ((xx - (x << 16)) >> 8);
+           if ((unsigned)(px) < clw)
+               pfunc(0, 255 - aa, color, p);
+           if ((unsigned)(px + 1) < clw)
+               pfunc(0, aa, color, p + 1);
+         }
+       xx += dxx;
+       py++;
+       p += dstw;
+     }
+}
diff --git a/src/lib/engines/common/evas_op_add/.cvsignore b/src/lib/engines/common/evas_op_add/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/lib/engines/common/evas_op_add/Makefile.am b/src/lib/engines/common/evas_op_add/Makefile.am
new file mode 100644 (file)
index 0000000..8b2c2f3
--- /dev/null
@@ -0,0 +1,11 @@
+EXTRA_DIST = \
+op_add_color_.c \
+op_add_color_i386.c \
+op_add_mask_color_.c \
+op_add_mask_color_i386.c \
+op_add_pixel_.c \
+op_add_pixel_color_.c \
+op_add_pixel_color_i386.c \
+op_add_pixel_i386.c \
+op_add_pixel_mask_.c \
+op_add_pixel_mask_i386.c
diff --git a/src/lib/engines/common/evas_op_add/op_add_color_.c b/src/lib/engines/common/evas_op_add/op_add_color_.c
new file mode 100644 (file)
index 0000000..214ab67
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* add color -> dst */
+
+#ifdef BUILD_C
+static void
+init_add_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_add_color_pt_funcs_c(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* add_rel color -> dst */
+
+#ifdef BUILD_C
+static void
+init_add_rel_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_add_rel_color_pt_funcs_c(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_add/op_add_color_i386.c b/src/lib/engines/common/evas_op_add/op_add_color_i386.c
new file mode 100644 (file)
index 0000000..f81d47d
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* add color -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_add_color_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_add_color_pt_funcs_mmx(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* add_rel color -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_add_rel_color_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_add_rel_color_pt_funcs_mmx(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_add/op_add_mask_color_.c b/src/lib/engines/common/evas_op_add/op_add_mask_color_.c
new file mode 100644 (file)
index 0000000..4d903c2
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* add mask x color -> dst */
+
+#ifdef BUILD_C
+static void
+init_add_mask_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_add_mask_color_pt_funcs_c(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* add_rel mask x color -> dst */
+
+#ifdef BUILD_C
+static void
+init_add_rel_mask_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_add_rel_mask_color_pt_funcs_c(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_add/op_add_mask_color_i386.c b/src/lib/engines/common/evas_op_add/op_add_mask_color_i386.c
new file mode 100644 (file)
index 0000000..bcef9b2
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* add mask x color -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_add_mask_color_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_add_mask_color_pt_funcs_mmx(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* add_rel mask x color -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_add_rel_mask_color_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_add_rel_mask_color_pt_funcs_mmx(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_add/op_add_pixel_.c b/src/lib/engines/common/evas_op_add/op_add_pixel_.c
new file mode 100644 (file)
index 0000000..b2a6cf1
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* add pixel --> dst */
+
+#ifdef BUILD_C
+static void
+init_add_pixel_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_add_pixel_pt_funcs_c(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* add_rel pixel --> dst */
+
+#ifdef BUILD_C
+static void
+init_add_rel_pixel_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_add_rel_pixel_pt_funcs_c(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_add/op_add_pixel_color_.c b/src/lib/engines/common/evas_op_add/op_add_pixel_color_.c
new file mode 100644 (file)
index 0000000..35c8fab
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* add pixel x color --> dst */
+
+#ifdef BUILD_C
+static void
+init_add_pixel_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_add_pixel_color_pt_funcs_c(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* add_rel pixel x color --> dst */
+
+#ifdef BUILD_C
+static void
+init_add_rel_pixel_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_add_rel_pixel_color_pt_funcs_c(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_add/op_add_pixel_color_i386.c b/src/lib/engines/common/evas_op_add/op_add_pixel_color_i386.c
new file mode 100644 (file)
index 0000000..ce65d45
--- /dev/null
@@ -0,0 +1,30 @@
+
+/* add pixel x color --> dst */
+
+#ifdef BUILD_MMX
+static void
+init_add_pixel_color_span_funcs_mmx(void)
+{ }
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_add_pixel_color_pt_funcs_mmx(void)
+{ }
+#endif
+
+/*-----*/
+
+/* add_rel pixel x color --> dst */
+
+#ifdef BUILD_MMX
+static void
+init_add_rel_pixel_color_span_funcs_mmx(void)
+{ }
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_add_rel_pixel_color_pt_funcs_mmx(void)
+{ }
+#endif
diff --git a/src/lib/engines/common/evas_op_add/op_add_pixel_i386.c b/src/lib/engines/common/evas_op_add/op_add_pixel_i386.c
new file mode 100644 (file)
index 0000000..01497b2
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* add pixel --> dst */
+
+#ifdef BUILD_MMX
+static void
+init_add_pixel_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_add_pixel_pt_funcs_mmx(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* add_rel pixel --> dst */
+
+#ifdef BUILD_MMX
+static void
+init_add_rel_pixel_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_add_rel_pixel_pt_funcs_mmx(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_add/op_add_pixel_mask_.c b/src/lib/engines/common/evas_op_add/op_add_pixel_mask_.c
new file mode 100644 (file)
index 0000000..70c5d9d
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* add pixel x mask --> dst */
+
+#ifdef BUILD_C
+static void
+init_add_pixel_mask_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_add_pixel_mask_pt_funcs_c(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* add_rel pixel x mask --> dst */
+
+#ifdef BUILD_C
+static void
+init_add_rel_pixel_mask_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_add_rel_pixel_mask_pt_funcs_c(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_add/op_add_pixel_mask_i386.c b/src/lib/engines/common/evas_op_add/op_add_pixel_mask_i386.c
new file mode 100644 (file)
index 0000000..746d11d
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* add pixel x mask -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_add_pixel_mask_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_add_pixel_mask_pt_funcs_mmx(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* add_rel pixel x mask -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_add_rel_pixel_mask_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_add_rel_pixel_mask_pt_funcs_mmx(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_add_main_.c b/src/lib/engines/common/evas_op_add_main_.c
new file mode 100644 (file)
index 0000000..83121f5
--- /dev/null
@@ -0,0 +1,546 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+
+static RGBA_Gfx_Func     op_add_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+static RGBA_Gfx_Pt_Func  op_add_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+
+static void op_add_init(void);
+static void op_add_shutdown(void);
+
+static RGBA_Gfx_Func op_add_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_add_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_add_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_add_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_add_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+static RGBA_Gfx_Pt_Func op_add_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_add_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_add_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_add_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_add_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+
+static RGBA_Gfx_Compositor  _composite_add = { "add",
+ op_add_init, op_add_shutdown,
+ op_add_pixel_span_get, op_add_color_span_get,
+ op_add_pixel_color_span_get, op_add_mask_color_span_get,
+ op_add_pixel_mask_span_get,
+ op_add_pixel_pt_get, op_add_color_pt_get,
+ op_add_pixel_color_pt_get, op_add_mask_color_pt_get,
+ op_add_pixel_mask_pt_get
+ };
+
+RGBA_Gfx_Compositor  *
+evas_common_gfx_compositor_add_get(void)
+{
+   return &(_composite_add);
+}
+
+static RGBA_Gfx_Func     op_add_rel_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+static RGBA_Gfx_Pt_Func  op_add_rel_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+
+static void op_add_rel_init(void);
+static void op_add_rel_shutdown(void);
+
+static RGBA_Gfx_Func op_add_rel_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_add_rel_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_add_rel_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_add_rel_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_add_rel_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+static RGBA_Gfx_Pt_Func op_add_rel_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_add_rel_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_add_rel_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_add_rel_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_add_rel_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+
+static RGBA_Gfx_Compositor  _composite_add_rel = { "add_rel",
+ op_add_rel_init, op_add_rel_shutdown,
+ op_add_rel_pixel_span_get, op_add_rel_color_span_get,
+ op_add_rel_pixel_color_span_get, op_add_rel_mask_color_span_get,
+ op_add_rel_pixel_mask_span_get,
+ op_add_rel_pixel_pt_get, op_add_rel_color_pt_get,
+ op_add_rel_pixel_color_pt_get, op_add_rel_mask_color_pt_get,
+ op_add_rel_pixel_mask_pt_get
+ };
+
+RGBA_Gfx_Compositor  *
+evas_common_gfx_compositor_add_rel_get(void)
+{
+   return &(_composite_add_rel);
+}
+
+
+# include "./evas_op_add/op_add_pixel_.c"
+# include "./evas_op_add/op_add_color_.c"
+# include "./evas_op_add/op_add_pixel_color_.c"
+# include "./evas_op_add/op_add_pixel_mask_.c"
+# include "./evas_op_add/op_add_mask_color_.c"
+//# include "./evas_op_add/op_add_pixel_mask_color_.c"
+
+# include "./evas_op_add/op_add_pixel_i386.c"
+# include "./evas_op_add/op_add_color_i386.c"
+# include "./evas_op_add/op_add_pixel_color_i386.c"
+# include "./evas_op_add/op_add_pixel_mask_i386.c"
+# include "./evas_op_add/op_add_mask_color_i386.c"
+//# include "op_add_pixel_mask_color_.c"
+
+static void
+op_add_init(void)
+{
+   memset(op_add_span_funcs, 0, sizeof(op_add_span_funcs));
+   memset(op_add_pt_funcs, 0, sizeof(op_add_pt_funcs));
+#ifdef BUILD_MMX
+   init_add_pixel_span_funcs_mmx();
+   init_add_pixel_color_span_funcs_mmx();
+   init_add_pixel_mask_span_funcs_mmx();
+   init_add_color_span_funcs_mmx();
+   init_add_mask_color_span_funcs_mmx();
+
+   init_add_pixel_pt_funcs_mmx();
+   init_add_pixel_color_pt_funcs_mmx();
+   init_add_pixel_mask_pt_funcs_mmx();
+   init_add_color_pt_funcs_mmx();
+   init_add_mask_color_pt_funcs_mmx();
+#endif
+#ifdef BUILD_C
+   init_add_pixel_span_funcs_c();
+   init_add_pixel_color_span_funcs_c();
+   init_add_rel_pixel_mask_span_funcs_c();
+   init_add_color_span_funcs_c();
+   init_add_mask_color_span_funcs_c();
+
+   init_add_pixel_pt_funcs_c();
+   init_add_pixel_color_pt_funcs_c();
+   init_add_rel_pixel_mask_pt_funcs_c();
+   init_add_color_pt_funcs_c();
+   init_add_mask_color_pt_funcs_c();
+#endif
+}
+
+static void
+op_add_shutdown(void)
+{
+}
+
+static RGBA_Gfx_Func
+add_gfx_span_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Func  func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_add_span_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_add_span_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Func
+op_add_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_add_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_add_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_add_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_add_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+add_gfx_pt_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Pt_Func  func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_add_pt_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_add_pt_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Pt_Func
+op_add_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_add_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_add_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_add_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_add_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_gfx_pt_func_cpu(s, m, c, d);
+}
+
+
+
+static void
+op_add_rel_init(void)
+{
+   memset(op_add_rel_span_funcs, 0, sizeof(op_add_rel_span_funcs));
+   memset(op_add_rel_pt_funcs, 0, sizeof(op_add_rel_pt_funcs));
+#ifdef BUILD_MMX
+   init_add_rel_pixel_span_funcs_mmx();
+   init_add_rel_pixel_color_span_funcs_mmx();
+   init_add_rel_pixel_mask_span_funcs_mmx();
+   init_add_rel_color_span_funcs_mmx();
+   init_add_rel_mask_color_span_funcs_mmx();
+
+   init_add_rel_pixel_pt_funcs_mmx();
+   init_add_rel_pixel_color_pt_funcs_mmx();
+   init_add_rel_pixel_mask_pt_funcs_mmx();
+   init_add_rel_color_pt_funcs_mmx();
+   init_add_rel_mask_color_pt_funcs_mmx();
+#endif
+#ifdef BUILD_C
+   init_add_rel_pixel_span_funcs_c();
+   init_add_rel_pixel_color_span_funcs_c();
+   init_add_rel_pixel_mask_span_funcs_c();
+   init_add_rel_color_span_funcs_c();
+   init_add_rel_mask_color_span_funcs_c();
+
+   init_add_rel_pixel_pt_funcs_c();
+   init_add_rel_pixel_color_pt_funcs_c();
+   init_add_rel_pixel_mask_pt_funcs_c();
+   init_add_rel_color_pt_funcs_c();
+   init_add_rel_mask_color_pt_funcs_c();
+#endif
+}
+
+static void
+op_add_rel_shutdown(void)
+{
+}
+
+static RGBA_Gfx_Func
+add_rel_gfx_span_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Func  func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_add_rel_span_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_add_rel_span_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Func
+op_add_rel_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_add_rel_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_add_rel_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_add_rel_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_add_rel_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+add_rel_gfx_pt_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Pt_Func  func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_add_rel_pt_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_add_rel_pt_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Pt_Func
+op_add_rel_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_add_rel_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_add_rel_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_add_rel_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_add_rel_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return add_rel_gfx_pt_func_cpu(s, m, c, d);
+}
diff --git a/src/lib/engines/common/evas_op_blend/.cvsignore b/src/lib/engines/common/evas_op_blend/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/lib/engines/common/evas_op_blend/Makefile.am b/src/lib/engines/common/evas_op_blend/Makefile.am
new file mode 100644 (file)
index 0000000..196dbd0
--- /dev/null
@@ -0,0 +1,11 @@
+EXTRA_DIST = \
+op_blend_color_.c \
+op_blend_color_i386.c \
+op_blend_mask_color_.c \
+op_blend_mask_color_i386.c \
+op_blend_pixel_.c \
+op_blend_pixel_color_.c \
+op_blend_pixel_color_i386.c \
+op_blend_pixel_i386.c \
+op_blend_pixel_mask_.c \
+op_blend_pixel_mask_i386.c
diff --git a/src/lib/engines/common/evas_op_blend/op_blend_color_.c b/src/lib/engines/common/evas_op_blend/op_blend_color_.c
new file mode 100644 (file)
index 0000000..667f5f2
--- /dev/null
@@ -0,0 +1,110 @@
+
+/* blend color -> dst */
+
+#ifdef BUILD_C
+static void
+_op_blend_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l, a = 256 - (c >> 24);
+   while (d < e)
+     {
+       *d = c + MUL_256(a, *d);
+       d++;
+     }
+}
+
+#define _op_blend_caa_dp _op_blend_c_dp
+
+#define _op_blend_c_dpan _op_blend_c_dp
+#define _op_blend_caa_dpan _op_blend_c_dpan
+
+static void
+init_blend_color_span_funcs_c(void)
+{
+   op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_blend_c_dp;
+   op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_blend_caa_dp;
+
+   op_blend_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_blend_c_dpan;
+   op_blend_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_blend_pt_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = 256 - (c >> 24);
+       *d = c + MUL_256(s, *d);
+}
+
+#define _op_blend_pt_caa_dp _op_blend_pt_c_dp
+
+#define _op_blend_pt_c_dpan _op_blend_pt_c_dp
+#define _op_blend_pt_caa_dpan _op_blend_pt_c_dpan
+
+#define _op_blend_pt_c_dpas _op_blend_pt_c_dp
+#define _op_blend_pt_caa_dpas _op_blend_pt_c_dp
+
+static void
+init_blend_color_pt_funcs_c(void)
+{
+   op_blend_pt_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_blend_pt_c_dp;
+   op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_blend_pt_caa_dp;
+
+   op_blend_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_blend_pt_c_dpan;
+   op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pt_caa_dpan;
+}
+#endif
+
+/*-----*/
+
+/* blend_rel color -> dst */
+
+#ifdef BUILD_C
+static void
+_op_blend_rel_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   l = 256 - (c >> 24);
+   while (d < e)
+     {
+       *d = MUL_SYM(*d >> 24, c) + MUL_256(l, *d);
+       d++;
+     }
+}
+
+#define _op_blend_rel_caa_dp _op_blend_rel_c_dp
+
+#define _op_blend_rel_c_dpan _op_blend_c_dpan
+#define _op_blend_rel_caa_dpan _op_blend_caa_dpan
+
+static void
+init_blend_rel_color_span_funcs_c(void)
+{
+   op_blend_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_blend_rel_c_dp;
+   op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_caa_dp;
+
+   op_blend_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_c_dpan;
+   op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_blend_rel_pt_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = *d >> 24;
+       *d = MUL_SYM(s, c) + MUL_256(256 - (c >> 24), *d);
+}
+
+#define _op_blend_rel_pt_caa_dp _op_blend_rel_pt_c_dp
+
+#define _op_blend_rel_pt_c_dpan _op_blend_pt_c_dpan
+#define _op_blend_rel_pt_caa_dpan _op_blend_pt_caa_dpan
+
+static void
+init_blend_rel_color_pt_funcs_c(void)
+{
+   op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_blend_rel_pt_c_dp;
+   op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pt_caa_dp;
+
+   op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pt_c_dpan;
+   op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c b/src/lib/engines/common/evas_op_blend/op_blend_color_i386.c
new file mode 100644 (file)
index 0000000..d6c921b
--- /dev/null
@@ -0,0 +1,139 @@
+
+/* blend color --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_blend_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm2, mm0)
+   c = 256 - (c >> 24);
+   MOV_A2R(c, mm3)
+   while (d < e) {
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_256_R2R(mm3, mm1)
+       paddw_r2r(mm2, mm1);
+       MOV_R2P(mm1, *d, mm0)
+       d++;
+     }
+}
+
+#define _op_blend_caa_dp_mmx _op_blend_c_dp_mmx
+
+#define _op_blend_c_dpan_mmx _op_blend_c_dp_mmx
+#define _op_blend_caa_dpan_mmx _op_blend_c_dpan_mmx
+
+static void
+init_blend_color_span_funcs_mmx(void)
+{
+   op_blend_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_c_dp_mmx;
+   op_blend_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_caa_dp_mmx;
+
+   op_blend_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_c_dpan_mmx;
+   op_blend_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_blend_pt_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(c, mm2, mm0)
+       c = 256 - (c >> 24);
+       MOV_A2R(c, mm3)
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_256_R2R(mm3, mm1)
+       paddw_r2r(mm2, mm1);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_blend_pt_caa_dp_mmx _op_blend_pt_c_dp_mmx
+
+#define _op_blend_pt_c_dpan_mmx _op_blend_pt_c_dp_mmx
+#define _op_blend_pt_caa_dpan_mmx _op_blend_pt_c_dpan_mmx
+
+static void
+init_blend_color_pt_funcs_mmx(void)
+{
+   op_blend_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_c_dp_mmx;
+   op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_caa_dp_mmx;
+
+   op_blend_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_c_dpan_mmx;
+   op_blend_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_caa_dpan_mmx;
+}
+#endif
+/*-----*/
+
+/* blend_rel color -> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_blend_rel_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm2, mm0)
+   c = 256 - (c >> 24);
+   MOV_A2R(c, mm3)
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e) {
+       MOV_P2R(*d, mm1, mm0)
+       MOV_RA2R(mm1, mm4)
+       MUL4_256_R2R(mm3, mm1)
+       MUL4_SYM_R2R(mm2, mm4, mm5)
+       paddw_r2r(mm4, mm1);
+       MOV_R2P(mm1, *d, mm0)
+       d++;
+     }
+}
+
+#define _op_blend_rel_caa_dp_mmx _op_blend_rel_c_dp_mmx
+
+#define _op_blend_rel_c_dpan_mmx _op_blend_c_dpan_mmx
+#define _op_blend_rel_caa_dpan_mmx _op_blend_caa_dpan_mmx
+
+static void
+init_blend_rel_color_span_funcs_mmx(void)
+{
+   op_blend_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_rel_c_dp_mmx;
+   op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_rel_caa_dp_mmx;
+
+   op_blend_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_c_dpan_mmx;
+   op_blend_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_blend_rel_pt_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_256, mm6)
+       MOV_A2R(ALPHA_255, mm5)
+
+       MOV_P2R(c, mm2, mm0)
+       MOV_RA2R(mm2, mm1)
+       psubw_r2r(mm1, mm6);
+
+       MOV_P2R(*d, mm1, mm0)
+       MOV_RA2R(mm1, mm4)
+       MUL4_256_R2R(mm6, mm1)
+
+       MUL4_SYM_R2R(mm4, mm2, mm5)
+       paddw_r2r(mm2, mm1);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_blend_rel_pt_caa_dp_mmx _op_blend_rel_pt_c_dp_mmx
+
+#define _op_blend_rel_pt_c_dpan_mmx _op_blend_pt_c_dpan_mmx
+#define _op_blend_rel_pt_caa_dpan_mmx _op_blend_pt_caa_dpan_mmx
+
+static void
+init_blend_rel_color_pt_funcs_mmx(void)
+{
+   op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_blend_rel_pt_c_dp_mmx;
+   op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_rel_pt_caa_dp_mmx;
+
+   op_blend_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_c_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_caa_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_blend/op_blend_mask_color_.c b/src/lib/engines/common/evas_op_blend/op_blend_mask_color_.c
new file mode 100644 (file)
index 0000000..c88b0fe
--- /dev/null
@@ -0,0 +1,181 @@
+
+/* blend mask x color -> dst */
+
+#ifdef BUILD_C
+static void
+_op_blend_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   l = 256 - (c >> 24);
+   while (d < e) {
+       DATA32 a = *m;
+       switch(a)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = c + MUL_256(l, *d);
+               break;
+           default:
+             {
+               DATA32 mc = MUL_SYM(a, c);
+               a = 256 - (mc >> 24);
+               *d = mc + MUL_256(a, *d);
+             }
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+static void
+_op_blend_mas_can_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = c;
+               break;
+           default:
+               l++;
+               *d = INTERP_256(l, c, *d);
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_blend_mas_cn_dp _op_blend_mas_can_dp
+#define _op_blend_mas_caa_dp _op_blend_mas_c_dp
+
+#define _op_blend_mas_c_dpan _op_blend_mas_c_dp
+#define _op_blend_mas_cn_dpan _op_blend_mas_cn_dp
+#define _op_blend_mas_can_dpan _op_blend_mas_can_dp
+#define _op_blend_mas_caa_dpan _op_blend_mas_caa_dp
+
+static void
+init_blend_mask_color_span_funcs_c(void)
+{
+   op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_mas_c_dp;
+   op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_mas_cn_dp;
+   op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_mas_can_dp;
+   op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_mas_caa_dp;
+
+   op_blend_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_mas_c_dpan;
+   op_blend_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_mas_cn_dpan;
+   op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_mas_can_dpan;
+   op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_mas_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_blend_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = MUL_SYM(m, c);
+       m = 256 - (s >> 24);
+       *d = s + MUL_256(m, *d);
+}
+
+static void
+_op_blend_pt_mas_can_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       *d = INTERP_256(m + 1, c, *d);
+}
+
+#define _op_blend_pt_mas_cn_dp _op_blend_pt_mas_can_dp
+#define _op_blend_pt_mas_caa_dp _op_blend_pt_mas_c_dp
+
+#define _op_blend_pt_mas_c_dpan _op_blend_pt_mas_c_dp
+#define _op_blend_pt_mas_cn_dpan _op_blend_pt_mas_cn_dp
+#define _op_blend_pt_mas_can_dpan _op_blend_pt_mas_can_dp
+#define _op_blend_pt_mas_caa_dpan _op_blend_pt_mas_caa_dp
+
+static void
+init_blend_mask_color_pt_funcs_c(void)
+{
+   op_blend_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_pt_mas_c_dp;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_mas_cn_dp;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_pt_mas_can_dp;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_pt_mas_caa_dp;
+
+   op_blend_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_pt_mas_c_dpan;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_mas_cn_dpan;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_pt_mas_can_dpan;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_pt_mas_caa_dpan;
+}
+#endif
+
+/*-----*/
+
+/* blend_rel mask x color --> dst */
+
+#ifdef BUILD_C
+static void
+_op_blend_rel_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       DATA32 mc = MUL_SYM(*m, c);
+       l = 256 - (mc >> 24);
+       *d = MUL_SYM(*d >> 24, mc) + MUL_256(l, *d);
+       d++;
+       m++;
+     }
+}
+
+#define _op_blend_rel_mas_cn_dp _op_blend_rel_mas_c_dp
+#define _op_blend_rel_mas_can_dp _op_blend_rel_mas_c_dp
+#define _op_blend_rel_mas_caa_dp _op_blend_rel_mas_c_dp
+
+#define _op_blend_rel_mas_c_dpan _op_blend_mas_c_dpan
+#define _op_blend_rel_mas_cn_dpan _op_blend_mas_cn_dpan
+#define _op_blend_rel_mas_can_dpan _op_blend_mas_can_dpan
+#define _op_blend_rel_mas_caa_dpan _op_blend_mas_caa_dpan
+
+static void
+init_blend_rel_mask_color_span_funcs_c(void)
+{
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_rel_mas_c_dp;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_mas_can_dp;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_rel_mas_can_dp;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_rel_mas_caa_dp;
+
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_rel_mas_c_dpan;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_mas_cn_dpan;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_rel_mas_can_dpan;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_rel_mas_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_blend_rel_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = MUL_SYM(m, c);
+       c = 256 - (s >> 24);
+       *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
+}
+
+#define _op_blend_rel_pt_mas_cn_dp _op_blend_rel_pt_mas_c_dp
+#define _op_blend_rel_pt_mas_can_dp _op_blend_rel_pt_mas_c_dp
+#define _op_blend_rel_pt_mas_caa_dp _op_blend_rel_pt_mas_c_dp
+
+#define _op_blend_rel_pt_mas_c_dpan _op_blend_pt_mas_c_dpan
+#define _op_blend_rel_pt_mas_cn_dpan _op_blend_pt_mas_cn_dpan
+#define _op_blend_rel_pt_mas_can_dpan _op_blend_pt_mas_can_dpan
+#define _op_blend_rel_pt_mas_caa_dpan _op_blend_pt_mas_caa_dpan
+
+static void
+init_blend_rel_mask_color_pt_funcs_c(void)
+{
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_blend_rel_pt_mas_c_dp;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_mas_cn_dp;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_blend_rel_pt_mas_can_dp;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_blend_rel_pt_mas_caa_dp;
+
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_blend_rel_pt_mas_c_dpan;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_mas_cn_dpan;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pt_mas_can_dpan;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_mas_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_blend/op_blend_mask_color_i386.c b/src/lib/engines/common/evas_op_blend/op_blend_mask_color_i386.c
new file mode 100644 (file)
index 0000000..a9ecfc4
--- /dev/null
@@ -0,0 +1,252 @@
+
+/* blend mask x color -> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_blend_mas_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_256, mm6)
+   MOV_P2R(c, mm2, mm0)
+   c = 256 - (c >> 24);
+   MOV_A2R(c, mm4)
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               MOV_P2R(*d, mm1, mm0)
+               MUL4_256_R2R(mm4, mm1)
+               paddw_r2r(mm2, mm1);
+               MOV_R2P(mm1, *d, mm0)
+               break;
+           default:
+               l++;
+               MOV_A2R(l, mm3)
+               MUL4_256_R2R(mm2, mm3)
+
+               MOV_RA2R(mm3, mm1)
+               movq_r2r(mm6, mm7);
+               psubw_r2r(mm1, mm7);
+
+               MOV_P2R(*d, mm1, mm0)
+               MUL4_256_R2R(mm7, mm1)
+
+               paddw_r2r(mm3, mm1);
+               MOV_R2P(mm1, *d, mm0)
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+static void
+_op_blend_mas_can_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm2, mm0)
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = c;
+               break;
+           default:
+               l++;
+               MOV_A2R(l, mm3)
+               MOV_P2R(*d, mm1, mm0)
+               movq_r2r(mm2, mm4);
+               INTERP_256_R2R(mm3, mm4, mm1, mm5)
+               MOV_R2P(mm1, *d, mm0)
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_blend_mas_cn_dp_mmx _op_blend_mas_can_dp_mmx
+#define _op_blend_mas_caa_dp_mmx _op_blend_mas_c_dp_mmx
+
+#define _op_blend_mas_c_dpan_mmx _op_blend_mas_c_dp_mmx
+#define _op_blend_mas_cn_dpan_mmx _op_blend_mas_cn_dp_mmx
+#define _op_blend_mas_can_dpan_mmx _op_blend_mas_can_dp_mmx
+#define _op_blend_mas_caa_dpan_mmx _op_blend_mas_caa_dp_mmx
+
+static void
+init_blend_mask_color_span_funcs_mmx(void)
+{
+   op_blend_span_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_mas_c_dp_mmx;
+   op_blend_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_mas_cn_dp_mmx;
+   op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_mas_can_dp_mmx;
+   op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_mas_caa_dp_mmx;
+
+   op_blend_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_mas_c_dpan_mmx;
+   op_blend_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_mas_cn_dpan_mmx;
+   op_blend_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_mas_can_dpan_mmx;
+   op_blend_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_mas_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_blend_pt_mas_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = m + 1;
+       MOV_A2R(s, mm3)
+       MOV_A2R(ALPHA_256, mm6)
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(c, mm2, mm0)
+       MUL4_256_R2R(mm2, mm3)
+
+       MOV_RA2R(mm3, mm1)
+       psubw_r2r(mm1, mm6);
+
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_256_R2R(mm6, mm1)
+
+       paddw_r2r(mm3, mm1);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+
+#define _op_blend_pt_mas_cn_dp_mmx _op_blend_pt_mas_c_dp_mmx
+#define _op_blend_pt_mas_can_dp_mmx _op_blend_pt_mas_c_dp_mmx
+#define _op_blend_pt_mas_caa_dp_mmx _op_blend_pt_mas_c_dp_mmx
+
+#define _op_blend_pt_mas_c_dpan_mmx _op_blend_pt_mas_c_dp_mmx
+#define _op_blend_pt_mas_cn_dpan_mmx _op_blend_pt_mas_cn_dp_mmx
+#define _op_blend_pt_mas_can_dpan_mmx _op_blend_pt_mas_can_dp_mmx
+#define _op_blend_pt_mas_caa_dpan_mmx _op_blend_pt_mas_caa_dp_mmx
+
+static void
+init_blend_mask_color_pt_funcs_mmx(void)
+{
+   op_blend_pt_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_pt_mas_c_dp_mmx;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pt_mas_cn_dp_mmx;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_pt_mas_can_dp_mmx;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_pt_mas_caa_dp_mmx;
+
+   op_blend_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_pt_mas_c_dpan_mmx;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_mas_cn_dpan_mmx;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_mas_can_dpan_mmx;
+   op_blend_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_mas_caa_dpan_mmx;
+}
+#endif
+
+/*-----*/
+
+/* blend_rel mask x color -> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_blend_rel_mas_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_256, mm6)
+   MOV_A2R(ALPHA_255, mm5)
+   MOV_P2R(c, mm2, mm0)
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           default:
+               l++;
+               MOV_A2R(l, mm3)
+               MUL4_256_R2R(mm2, mm3)
+
+               MOV_RA2R(mm3, mm1)
+               movq_r2r(mm6, mm7);
+               psubw_r2r(mm1, mm7);
+
+               MOV_P2R(*d, mm1, mm0)
+               MOV_RA2R(mm1, mm4)
+               MUL4_256_R2R(mm7, mm1)
+
+               MUL4_SYM_R2R(mm4, mm3, mm5)
+
+               paddw_r2r(mm3, mm1);
+               MOV_R2P(mm1, *d, mm0)
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_blend_rel_mas_cn_dp_mmx _op_blend_rel_mas_c_dp_mmx
+#define _op_blend_rel_mas_can_dp_mmx _op_blend_rel_mas_c_dp_mmx
+#define _op_blend_rel_mas_caa_dp_mmx _op_blend_rel_mas_c_dp_mmx
+
+#define _op_blend_rel_mas_c_dpan_mmx _op_blend_mas_c_dpan_mmx
+#define _op_blend_rel_mas_cn_dpan_mmx _op_blend_mas_cn_dpan_mmx
+#define _op_blend_rel_mas_can_dpan_mmx _op_blend_mas_can_dpan_mmx
+#define _op_blend_rel_mas_caa_dpan_mmx _op_blend_mas_caa_dpan_mmx
+
+static void
+init_blend_rel_mask_color_span_funcs_mmx(void)
+{
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_rel_mas_c_dp_mmx;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_rel_mas_cn_dp_mmx;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_rel_mas_can_dp_mmx;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_rel_mas_caa_dp_mmx;
+
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_rel_mas_c_dpan_mmx;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_mas_cn_dpan_mmx;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_mas_can_dpan_mmx;
+   op_blend_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_mas_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_blend_rel_pt_mas_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_256, mm6)
+       MOV_A2R(ALPHA_255, mm5)
+       s = m + 1;
+       MOV_A2R(s, mm3)
+       MOV_P2R(c, mm2, mm0)
+       MUL4_256_R2R(mm2, mm3)
+
+       MOV_RA2R(mm3, mm1)
+       psubw_r2r(mm1, mm6);
+
+       MOV_P2R(*d, mm1, mm0)
+       MOV_RA2R(mm1, mm4)
+       MUL4_256_R2R(mm6, mm1)
+
+       MUL4_SYM_R2R(mm4, mm3, mm5)
+
+       paddw_r2r(mm3, mm1);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_blend_rel_pt_mas_cn_dp_mmx _op_blend_rel_pt_mas_c_dp_mmx
+#define _op_blend_rel_pt_mas_can_dp_mmx _op_blend_rel_pt_mas_c_dp_mmx
+#define _op_blend_rel_pt_mas_caa_dp_mmx _op_blend_rel_pt_mas_c_dp_mmx
+
+#define _op_blend_rel_pt_mas_c_dpan_mmx _op_blend_pt_mas_c_dpan_mmx
+#define _op_blend_rel_pt_mas_cn_dpan_mmx _op_blend_pt_mas_cn_dpan_mmx
+#define _op_blend_rel_pt_mas_can_dpan_mmx _op_blend_pt_mas_can_dpan_mmx
+#define _op_blend_rel_pt_mas_caa_dpan_mmx _op_blend_pt_mas_caa_dpan_mmx
+
+static void
+init_blend_rel_mask_color_pt_funcs_mmx(void)
+{
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_blend_rel_pt_mas_c_dp_mmx;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_mas_cn_dp_mmx;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_blend_rel_pt_mas_can_dp_mmx;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_blend_rel_pt_mas_caa_dp_mmx;
+
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_c_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_cn_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_can_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_mas_caa_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_blend/op_blend_pixel_.c b/src/lib/engines/common/evas_op_blend/op_blend_pixel_.c
new file mode 100644 (file)
index 0000000..25c1b06
--- /dev/null
@@ -0,0 +1,157 @@
+
+/* blend pixel --> dst */
+
+#ifdef BUILD_C
+static void
+_op_blend_p_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = 256 - (*s >> 24);
+       *d = *s++ + MUL_256(l, *d);
+       d++;
+     }
+}
+
+static void
+_op_blend_pas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e)
+     {
+       switch (*s & 0xff000000)
+         {
+           case 0:
+             break;
+           case 0xff000000:
+               *d = *s;
+             break;
+           default :
+               l = 256 - (*s >> 24);
+               *d = *s + MUL_256(l, *d);
+             break;
+         }
+       s++;  d++;
+     }
+}
+
+#define _op_blend_pan_dp NULL
+
+#define _op_blend_p_dpan _op_blend_p_dp
+#define _op_blend_pas_dpan _op_blend_pas_dp
+#define _op_blend_pan_dpan _op_blend_pan_dp
+
+static void
+init_blend_pixel_span_funcs_c(void)
+{
+   op_blend_span_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_blend_p_dp;
+   op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_blend_pas_dp;
+   op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_blend_pan_dp;
+
+   op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_p_dpan;
+   op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_pas_dpan;
+   op_blend_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_pan_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_blend_pt_p_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = 256 - (s >> 24);
+       *d = s + MUL_256(c, *d);
+}
+
+#define _op_blend_pt_pas_dp _op_blend_pt_p_dp
+#define _op_blend_pt_pan_dp NULL
+
+#define _op_blend_pt_p_dpan _op_blend_pt_p_dp
+#define _op_blend_pt_pan_dpan _op_blend_pt_pan_dp
+#define _op_blend_pt_pas_dpan _op_blend_pt_pas_dp
+
+static void
+init_blend_pixel_pt_funcs_c(void)
+{
+   op_blend_pt_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_blend_pt_p_dp;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_blend_pt_pas_dp;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_blend_pt_pan_dp;
+
+   op_blend_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_pt_p_dpan;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_pt_pas_dpan;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_pt_pan_dpan;
+}
+#endif
+
+/*-----*/
+
+/* blend_rel pixel -> dst */
+
+#ifdef BUILD_C
+static void
+_op_blend_rel_p_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = 256 - (*s >> 24);
+       c = 1 + (*d >> 24);
+       *d = MUL_256(c, *s) + MUL_256(l, *d);
+       d++;
+       s++;
+     }
+}
+
+static void
+_op_blend_rel_pan_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       c = 1 + (*d >> 24);
+       *d++ = MUL_256(c, *s);
+       s++;
+     }
+}
+
+#define _op_blend_rel_pas_dp _op_blend_rel_p_dp
+
+#define _op_blend_rel_p_dpan _op_blend_p_dpan
+#define _op_blend_rel_pan_dpan _op_blend_pan_dpan
+#define _op_blend_rel_pas_dpan _op_blend_pas_dpan
+
+static void
+init_blend_rel_pixel_span_funcs_c(void)
+{
+   op_blend_rel_span_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_p_dp;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_pas_dp;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_pan_dp;
+
+   op_blend_rel_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_p_dpan;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_pas_dpan;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_pan_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_blend_rel_pt_p_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = 256 - (s >> 24);
+       *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
+}
+
+static void
+_op_blend_rel_pt_pan_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       *d = MUL_SYM(*d >> 24, s);
+}
+
+#define _op_blend_rel_pt_pas_dp _op_blend_rel_pt_p_dp
+
+#define _op_blend_rel_pt_p_dpan _op_blend_pt_p_dpan
+#define _op_blend_rel_pt_pan_dpan _op_blend_pt_pan_dpan
+#define _op_blend_rel_pt_pas_dpan _op_blend_pt_pas_dpan
+
+static void
+init_blend_rel_pixel_pt_funcs_c(void)
+{
+   op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_pt_p_dp;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_pt_pas_dp;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_blend_rel_pt_pan_dp;
+
+   op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_p_dpan;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_pas_dpan;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_pan_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_.c b/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_.c
new file mode 100644 (file)
index 0000000..871df02
--- /dev/null
@@ -0,0 +1,274 @@
+
+/* blend pixel x color --> dst */
+
+#ifdef BUILD_C
+static void
+_op_blend_p_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       DATA32 sc = MUL4_SYM(c, *s);
+       l = 256 - (sc >> 24);
+       *d = sc + MUL_256(l, *d);
+       d++;
+       s++;
+     }
+}
+
+static void
+_op_blend_pan_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   l = 256 - (c >> 24);
+   while (d < e) {
+       *d = ((c & 0xff000000) + MUL3_SYM(c, *s)) + MUL_256(l, *d);
+       d++;
+       s++;
+     }
+}
+
+static void
+_op_blend_p_can_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = 256 - (*s >> 24);
+       *d = ((*s & 0xff000000) + MUL3_SYM(c, *s)) + MUL_256(l, *d);
+       d++;
+       s++;
+     }
+}
+
+static void
+_op_blend_pan_can_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       *d++ = 0xff000000 + MUL3_SYM(c, *s);
+       s++;
+     }
+}
+
+static void
+_op_blend_p_caa_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   c = 1 + (c & 0xff);
+  while (d < e) {
+       DATA32 sc = MUL_256(c, *s);
+       l = 256 - (sc >> 24);
+       *d = sc + MUL_256(l, *d);
+       d++;
+       s++;
+     }
+}
+
+static void
+_op_blend_pan_caa_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   c = 1 + (c & 0xff);
+   while (d < e) {
+       *d = INTERP_256(c, *s, *d);
+       d++;
+       s++;
+     }
+}
+
+#define _op_blend_pas_c_dp _op_blend_p_c_dp
+#define _op_blend_pas_can_dp _op_blend_p_can_dp
+#define _op_blend_pas_caa_dp _op_blend_p_caa_dp
+
+#define _op_blend_p_c_dpan _op_blend_p_c_dp
+#define _op_blend_pas_c_dpan _op_blend_pas_c_dp
+#define _op_blend_pan_c_dpan _op_blend_pan_c_dp
+#define _op_blend_p_can_dpan _op_blend_p_can_dp
+#define _op_blend_pas_can_dpan _op_blend_pas_can_dp
+#define _op_blend_pan_can_dpan _op_blend_pan_can_dp
+#define _op_blend_p_caa_dpan _op_blend_p_caa_dp
+#define _op_blend_pas_caa_dpan _op_blend_pas_caa_dp
+#define _op_blend_pan_caa_dpan _op_blend_pan_caa_dp
+
+static void
+init_blend_pixel_color_span_funcs_c(void)
+{
+   op_blend_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_blend_p_c_dp;
+   op_blend_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_blend_pas_c_dp;
+   op_blend_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_blend_pan_c_dp;
+   op_blend_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_blend_p_can_dp;
+   op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_blend_pas_can_dp;
+   op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_blend_pan_can_dp;
+   op_blend_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_blend_p_caa_dp;
+   op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_blend_pas_caa_dp;
+   op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_blend_pan_caa_dp;
+
+   op_blend_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_blend_p_c_dpan;
+   op_blend_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_blend_pas_c_dpan;
+   op_blend_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_blend_pan_c_dpan;
+   op_blend_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_p_can_dpan;
+   op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_pas_can_dpan;
+   op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_pan_can_dpan;
+   op_blend_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_p_caa_dpan;
+   op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pas_caa_dpan;
+   op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pan_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_blend_pt_p_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = MUL4_SYM(c, s);
+       c = 256 - (s >> 24);
+       *d = s + MUL_256(c, *d);
+}
+
+#define _op_blend_pt_pas_c_dp _op_blend_pt_p_c_dp
+#define _op_blend_pt_pan_c_dp _op_blend_pt_p_c_dp
+#define _op_blend_pt_p_can_dp _op_blend_pt_p_c_dp
+#define _op_blend_pt_pas_can_dp _op_blend_pt_p_c_dp
+#define _op_blend_pt_pan_can_dp _op_blend_pt_p_c_dp
+#define _op_blend_pt_p_caa_dp _op_blend_pt_p_c_dp
+#define _op_blend_pt_pas_caa_dp _op_blend_pt_p_c_dp
+#define _op_blend_pt_pan_caa_dp _op_blend_pt_p_c_dp
+
+#define _op_blend_pt_p_c_dpan _op_blend_pt_p_c_dp
+#define _op_blend_pt_pas_c_dpan _op_blend_pt_pas_c_dp
+#define _op_blend_pt_pan_c_dpan _op_blend_pt_pan_c_dp
+#define _op_blend_pt_p_can_dpan _op_blend_pt_p_can_dp
+#define _op_blend_pt_pas_can_dpan _op_blend_pt_pas_can_dp
+#define _op_blend_pt_pan_can_dpan _op_blend_pt_pan_can_dp
+#define _op_blend_pt_p_caa_dpan _op_blend_pt_p_caa_dp
+#define _op_blend_pt_pas_caa_dpan _op_blend_pt_pas_caa_dp
+#define _op_blend_pt_pan_caa_dpan _op_blend_pt_pan_caa_dp
+
+static void
+init_blend_pixel_color_pt_funcs_c(void)
+{
+   op_blend_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_blend_pt_p_c_dp;
+   op_blend_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_blend_pt_pas_c_dp;
+   op_blend_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_blend_pt_pan_c_dp;
+   op_blend_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_blend_pt_p_can_dp;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_blend_pt_pas_can_dp;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_blend_pt_pan_can_dp;
+   op_blend_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_blend_pt_p_caa_dp;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_blend_pt_pas_caa_dp;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_blend_pt_pan_caa_dp;
+
+   op_blend_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_blend_pt_p_c_dpan;
+   op_blend_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_blend_pt_pas_c_dpan;
+   op_blend_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_blend_pt_pan_c_dpan;
+   op_blend_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_pt_p_can_dpan;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_pt_pas_can_dpan;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_pt_pan_can_dpan;
+   op_blend_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pt_p_caa_dpan;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pt_pas_caa_dpan;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_pt_pan_caa_dpan;
+}
+#endif
+
+/*-----*/
+
+/* blend_rel pixel x color -> dst */
+
+#ifdef BUILD_C
+static void
+_op_blend_rel_p_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       DATA32 sc = MUL4_SYM(c, *s);
+       l = 256 - (sc >> 24);
+       *d = MUL_SYM(*d >> 24, sc) + MUL_256(l, *d);
+       d++;
+       s++;
+     }
+}
+
+#define _op_blend_rel_pas_c_dp _op_blend_rel_p_c_dp
+#define _op_blend_rel_pan_c_dp _op_blend_rel_p_c_dp
+#define _op_blend_rel_p_can_dp _op_blend_rel_p_c_dp
+#define _op_blend_rel_pas_can_dp _op_blend_rel_p_c_dp
+#define _op_blend_rel_pan_can_dp _op_blend_rel_p_c_dp
+#define _op_blend_rel_p_caa_dp _op_blend_rel_p_c_dp
+#define _op_blend_rel_pas_caa_dp _op_blend_rel_p_c_dp
+#define _op_blend_rel_pan_caa_dp _op_blend_rel_p_c_dp
+
+#define _op_blend_rel_p_c_dpan _op_blend_p_c_dpan
+#define _op_blend_rel_pas_c_dpan _op_blend_pas_c_dpan
+#define _op_blend_rel_pan_c_dpan _op_blend_pan_c_dpan
+#define _op_blend_rel_p_can_dpan _op_blend_p_can_dpan
+#define _op_blend_rel_pas_can_dpan _op_blend_pas_can_dpan
+#define _op_blend_rel_pan_can_dpan _op_blend_pan_can_dpan
+#define _op_blend_rel_p_caa_dpan _op_blend_p_caa_dpan
+#define _op_blend_rel_pas_caa_dpan _op_blend_pas_caa_dpan
+#define _op_blend_rel_pan_caa_dpan _op_blend_pan_caa_dpan
+
+static void
+init_blend_rel_pixel_color_span_funcs_c(void)
+{
+   op_blend_rel_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_blend_rel_p_c_dp;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_blend_rel_pas_c_dp;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_blend_rel_pan_c_dp;
+   op_blend_rel_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_p_can_dp;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_pas_can_dp;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_pan_can_dp;
+   op_blend_rel_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_p_caa_dp;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pas_caa_dp;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pan_caa_dp;
+
+   op_blend_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_p_c_dpan;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pas_c_dpan;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pan_c_dpan;
+   op_blend_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_p_can_dpan;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pas_can_dpan;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pan_can_dpan;
+   op_blend_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_p_caa_dpan;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pas_caa_dpan;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pan_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_blend_rel_pt_p_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = MUL4_SYM(c, s);
+       c = 256 - (s >> 24);
+       *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
+}
+
+#define _op_blend_rel_pt_pas_c_dp _op_blend_rel_pt_p_c_dp
+#define _op_blend_rel_pt_pan_c_dp _op_blend_rel_pt_p_c_dp
+#define _op_blend_rel_pt_p_can_dp _op_blend_rel_pt_p_c_dp
+#define _op_blend_rel_pt_pas_can_dp _op_blend_rel_pt_p_c_dp
+#define _op_blend_rel_pt_pan_can_dp _op_blend_rel_pt_p_c_dp
+#define _op_blend_rel_pt_p_caa_dp _op_blend_rel_pt_p_c_dp
+#define _op_blend_rel_pt_pas_caa_dp _op_blend_rel_pt_p_c_dp
+#define _op_blend_rel_pt_pan_caa_dp _op_blend_rel_pt_p_c_dp
+
+#define _op_blend_rel_pt_p_c_dpan _op_blend_pt_p_c_dpan
+#define _op_blend_rel_pt_pas_c_dpan _op_blend_pt_pas_c_dpan
+#define _op_blend_rel_pt_pan_c_dpan _op_blend_pt_pan_c_dpan
+#define _op_blend_rel_pt_p_can_dpan _op_blend_pt_p_can_dpan
+#define _op_blend_rel_pt_pas_can_dpan _op_blend_pt_pas_can_dpan
+#define _op_blend_rel_pt_pan_can_dpan _op_blend_pt_pan_can_dpan
+#define _op_blend_rel_pt_p_caa_dpan _op_blend_pt_p_caa_dpan
+#define _op_blend_rel_pt_pas_caa_dpan _op_blend_pt_pas_caa_dpan
+#define _op_blend_rel_pt_pan_caa_dpan _op_blend_pt_pan_caa_dpan
+
+static void
+init_blend_rel_pixel_color_pt_funcs_c(void)
+{
+   op_blend_rel_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_blend_rel_pt_p_c_dp;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_blend_rel_pt_pas_c_dp;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_blend_rel_pt_pan_c_dp;
+   op_blend_rel_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_pt_p_can_dp;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_pt_pas_can_dp;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_blend_rel_pt_pan_can_dp;
+   op_blend_rel_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pt_p_caa_dp;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pt_pas_caa_dp;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_blend_rel_pt_pan_caa_dp;
+
+   op_blend_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pt_p_c_dpan;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pt_pas_c_dpan;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_blend_rel_pt_pan_c_dpan;
+   op_blend_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pt_p_can_dpan;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pt_pas_can_dpan;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_blend_rel_pt_pan_can_dpan;
+   op_blend_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_p_caa_dpan;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_pas_caa_dpan;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_blend_rel_pt_pan_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_i386.c b/src/lib/engines/common/evas_op_blend/op_blend_pixel_color_i386.c
new file mode 100644 (file)
index 0000000..9a50a7b
--- /dev/null
@@ -0,0 +1,222 @@
+
+/* blend pixel x color --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_blend_p_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   MOV_A2R(ALPHA_256, mm6)
+   MOV_A2R(ALPHA_255, mm5)
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm2, mm0)
+   while (d < e) {
+       MOV_P2R(*s, mm3, mm0)
+       MUL4_SYM_R2R(mm2, mm3, mm5)
+
+       MOV_RA2R(mm3, mm1)
+       movq_r2r(mm6, mm4);
+       psubw_r2r(mm1, mm4);
+
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_256_R2R(mm4, mm1)
+
+       paddw_r2r(mm3, mm1);
+       MOV_R2P(mm1, *d, mm0)
+       s++;  d++;
+     }
+}
+
+static void
+_op_blend_pan_can_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm2, mm0)
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e) {
+       MOV_P2R(*s, mm1, mm0)
+       MUL4_SYM_R2R(mm2, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+       s++;  d++;
+     }
+}
+
+static void
+_op_blend_pan_caa_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   c = 1 + (c & 0xff);
+   MOV_A2R(c, mm2)
+   MOV_A2R(ALPHA_255, mm5)
+   pxor_r2r(mm0, mm0);
+   while (d < e) {
+       MOV_P2R(*s, mm3, mm0)
+       MOV_P2R(*d, mm1, mm0)
+       INTERP_256_R2R(mm2, mm3, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+       s++;  d++;
+     }
+}
+
+#define _op_blend_pas_c_dp_mmx _op_blend_p_c_dp_mmx
+#define _op_blend_pan_c_dp_mmx _op_blend_p_c_dp_mmx
+#define _op_blend_p_can_dp_mmx _op_blend_p_c_dp_mmx
+#define _op_blend_pas_can_dp_mmx _op_blend_p_c_dp_mmx
+#define _op_blend_p_caa_dp_mmx _op_blend_p_c_dp_mmx
+#define _op_blend_pas_caa_dp_mmx _op_blend_p_c_dp_mmx
+
+#define _op_blend_p_c_dpan_mmx _op_blend_p_c_dp_mmx
+#define _op_blend_pas_c_dpan_mmx _op_blend_pas_c_dp_mmx
+#define _op_blend_pan_c_dpan_mmx _op_blend_pan_c_dp_mmx
+#define _op_blend_p_can_dpan_mmx _op_blend_p_can_dp_mmx
+#define _op_blend_pas_can_dpan_mmx _op_blend_pas_can_dp_mmx
+#define _op_blend_pan_can_dpan_mmx _op_blend_pan_can_dp_mmx
+#define _op_blend_p_caa_dpan_mmx _op_blend_p_caa_dp_mmx
+#define _op_blend_pas_caa_dpan_mmx _op_blend_pas_caa_dp_mmx
+#define _op_blend_pan_caa_dpan_mmx _op_blend_pan_caa_dp_mmx
+
+
+static void
+init_blend_pixel_color_span_funcs_mmx(void)
+{
+   op_blend_span_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_blend_p_c_dp_mmx;
+   op_blend_span_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_blend_pas_c_dp_mmx;
+   op_blend_span_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_blend_pan_c_dp_mmx;
+   op_blend_span_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_p_can_dp_mmx;
+   op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pas_can_dp_mmx;
+   op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pan_can_dp_mmx;
+   op_blend_span_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_p_caa_dp_mmx;
+   op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pas_caa_dp_mmx;
+   op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pan_caa_dp_mmx;
+
+   op_blend_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_p_c_dpan_mmx;
+   op_blend_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pas_c_dpan_mmx;
+   op_blend_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pan_c_dpan_mmx;
+   op_blend_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_p_can_dpan_mmx;
+   op_blend_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pas_can_dpan_mmx;
+   op_blend_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pan_can_dpan_mmx;
+   op_blend_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_p_caa_dpan_mmx;
+   op_blend_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pas_caa_dpan_mmx;
+   op_blend_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pan_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_blend_pt_p_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       MOV_A2R(ALPHA_256, mm4)
+       MOV_A2R(ALPHA_255, mm5)
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(c, mm2, mm0)
+       MOV_P2R(s, mm3, mm0)
+       MUL4_SYM_R2R(mm2, mm3, mm5)
+
+       MOV_RA2R(mm3, mm1)
+       psubw_r2r(mm1, mm4);
+
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_256_R2R(mm4, mm1)
+
+       paddw_r2r(mm3, mm1);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_blend_pt_pas_c_dp_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pan_c_dp_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_p_can_dp_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pas_can_dp_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pan_can_dp_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_p_caa_dp_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pas_caa_dp_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pan_caa_dp_mmx _op_blend_pt_p_c_dp_mmx
+
+#define _op_blend_pt_p_c_dpan_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pas_c_dpan_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pan_c_dpan_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_p_can_dpan_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pas_can_dpan_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pan_can_dpan_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_p_caa_dpan_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pas_caa_dpan_mmx _op_blend_pt_p_c_dp_mmx
+#define _op_blend_pt_pan_caa_dpan_mmx _op_blend_pt_p_c_dp_mmx
+
+static void
+init_blend_pixel_color_pt_funcs_mmx(void)
+{
+   op_blend_pt_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_p_c_dp_mmx;
+   op_blend_pt_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_pas_c_dp_mmx;
+   op_blend_pt_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_blend_pt_pan_c_dp_mmx;
+   op_blend_pt_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pt_p_can_dp_mmx;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pt_pas_can_dp_mmx;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_blend_pt_pan_can_dp_mmx;
+   op_blend_pt_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_p_caa_dp_mmx;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_pas_caa_dp_mmx;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_blend_pt_pan_caa_dp_mmx;
+
+   op_blend_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_p_c_dpan_mmx;
+   op_blend_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_pas_c_dpan_mmx;
+   op_blend_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_pt_pan_c_dpan_mmx;
+   op_blend_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_p_can_dpan_mmx;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_pas_can_dpan_mmx;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_pt_pan_can_dpan_mmx;
+   op_blend_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_p_caa_dpan_mmx;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_pas_caa_dpan_mmx;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_pt_pan_caa_dpan_mmx;
+}
+#endif
+
+/*-----*/
+
+/* blend_rel pixel x color -> dst */
+
+#ifdef BUILD_MMX
+
+#define _op_blend_rel_p_c_dpan_mmx _op_blend_p_c_dpan_mmx
+#define _op_blend_rel_pas_c_dpan_mmx _op_blend_pas_c_dpan_mmx
+#define _op_blend_rel_pan_c_dpan_mmx _op_blend_pan_c_dpan_mmx
+#define _op_blend_rel_p_can_dpan_mmx _op_blend_p_can_dpan_mmx
+#define _op_blend_rel_pas_can_dpan_mmx _op_blend_pas_can_dpan_mmx
+#define _op_blend_rel_pan_can_dpan_mmx _op_blend_pan_can_dpan_mmx
+#define _op_blend_rel_p_caa_dpan_mmx _op_blend_p_caa_dpan_mmx
+#define _op_blend_rel_pas_caa_dpan_mmx _op_blend_pas_caa_dpan_mmx
+#define _op_blend_rel_pan_caa_dpan_mmx _op_blend_pan_caa_dpan_mmx
+
+static void
+init_blend_rel_pixel_color_span_funcs_mmx(void)
+{
+   op_blend_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_p_c_dpan_mmx;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pas_c_dpan_mmx;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pan_c_dpan_mmx;
+   op_blend_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_p_can_dpan_mmx;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pas_can_dpan_mmx;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pan_can_dpan_mmx;
+   op_blend_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_p_caa_dpan_mmx;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pas_caa_dpan_mmx;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pan_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+
+#define _op_blend_rel_pt_p_c_dpan_mmx _op_blend_pt_p_c_dpan_mmx
+#define _op_blend_rel_pt_pas_c_dpan_mmx _op_blend_pt_pas_c_dpan_mmx
+#define _op_blend_rel_pt_pan_c_dpan_mmx _op_blend_pt_pan_c_dpan_mmx
+#define _op_blend_rel_pt_p_can_dpan_mmx _op_blend_pt_p_can_dpan_mmx
+#define _op_blend_rel_pt_pas_can_dpan_mmx _op_blend_pt_pas_can_dpan_mmx
+#define _op_blend_rel_pt_pan_can_dpan_mmx _op_blend_pt_pan_can_dpan_mmx
+#define _op_blend_rel_pt_p_caa_dpan_mmx _op_blend_pt_p_caa_dpan_mmx
+#define _op_blend_rel_pt_pas_caa_dpan_mmx _op_blend_pt_pas_caa_dpan_mmx
+#define _op_blend_rel_pt_pan_caa_dpan_mmx _op_blend_pt_pan_caa_dpan_mmx
+
+static void
+init_blend_rel_pixel_color_pt_funcs_mmx(void)
+{
+   op_blend_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_c_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_c_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_c_dpan_mmx;
+   op_blend_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_can_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_can_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_can_dpan_mmx;
+   op_blend_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_caa_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_caa_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_caa_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c b/src/lib/engines/common/evas_op_blend/op_blend_pixel_i386.c
new file mode 100644 (file)
index 0000000..4dacf86
--- /dev/null
@@ -0,0 +1,216 @@
+
+/* blend pixel --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_blend_p_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_256, mm6)
+   while (d < e)
+     {
+       MOV_P2R(*s, mm2, mm0)
+       MOV_RA2R(mm2, mm1)
+       movq_r2r(mm6, mm3);
+       psubw_r2r(mm1, mm3);
+
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_256_R2R(mm3, mm1)
+
+       paddw_r2r(mm2, mm1);
+       MOV_R2P(mm1, *d, mm0)
+       s++;  d++;
+     }
+}
+
+static void
+_op_blend_pas_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_256, mm6)
+   while (d < e)
+     {
+       switch (*s & 0xff000000)
+         {
+           case 0:
+             break;
+           case 0xff000000:
+               *d = *s;
+             break;
+           default :
+               MOV_P2R(*s, mm2, mm0)
+               MOV_RA2R(mm2, mm1)
+               movq_r2r(mm6, mm3);
+               psubw_r2r(mm1, mm3);
+
+               MOV_P2R(*d, mm1, mm0)
+               MUL4_256_R2R(mm3, mm1)
+
+               paddw_r2r(mm2, mm1);
+               MOV_R2P(mm1, *d, mm0)
+             break;
+         }
+       s++;  d++;
+     }
+}
+
+#define _op_blend_pan_dp_mmx NULL
+
+#define _op_blend_p_dpan_mmx _op_blend_p_dp_mmx
+#define _op_blend_pas_dpan_mmx _op_blend_pas_dp_mmx
+#define _op_blend_pan_dpan_mmx _op_blend_pan_dp_mmx
+
+static void
+init_blend_pixel_span_funcs_mmx(void)
+{
+   op_blend_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_p_dp_mmx;
+   op_blend_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pas_dp_mmx;
+   op_blend_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pan_dp_mmx;
+
+   op_blend_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_p_dpan_mmx;
+   op_blend_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pas_dpan_mmx;
+   op_blend_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pan_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_blend_pt_p_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_256, mm6)
+       MOV_P2R(s, mm2, mm0)
+       MOV_RA2R(mm2, mm1)
+       movq_r2r(mm6, mm3);
+       psubw_r2r(mm1, mm3);
+
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_256_R2R(mm3, mm1)
+
+       paddw_r2r(mm2, mm1);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+
+#define _op_blend_pt_pan_dp_mmx NULL
+#define _op_blend_pt_pas_dp_mmx _op_blend_pt_p_dp_mmx
+
+#define _op_blend_pt_p_dpan_mmx _op_blend_pt_p_dp_mmx
+#define _op_blend_pt_pan_dpan_mmx _op_blend_pt_pan_dp_mmx
+#define _op_blend_pt_pas_dpan_mmx _op_blend_pt_pas_dp_mmx
+
+static void
+init_blend_pixel_pt_funcs_mmx(void)
+{
+   op_blend_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_p_dp_mmx;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_pas_dp_mmx;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_pt_pan_dp_mmx;
+
+   op_blend_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_p_dpan_mmx;
+   op_blend_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pas_dpan_mmx;
+   op_blend_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pan_dpan_mmx;
+}
+#endif
+
+/*-----*/
+
+/* blend_rel pixel -> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_blend_rel_p_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_256, mm6)
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e)
+     {
+       MOV_P2R(*s, mm2, mm0)
+       MOV_RA2R(mm2, mm1)
+       movq_r2r(mm6, mm3);
+       psubw_r2r(mm1, mm3);
+
+       MOV_P2R(*d, mm1, mm0)
+       MOV_RA2R(mm1, mm4)
+       MUL4_256_R2R(mm3, mm1)
+
+       MUL4_SYM_R2R(mm4, mm2, mm5)
+       paddw_r2r(mm2, mm1);
+       MOV_R2P(mm1, *d, mm0)
+       s++;  d++;
+     }
+}
+
+static void
+_op_blend_rel_pan_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_256, mm6)
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e)
+     {
+       MOV_P2R(*s, mm2, mm0)
+       MOV_PA2R(*d, mm1)
+       MUL4_SYM_R2R(mm2, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+       s++;  d++;
+     }
+}
+
+#define _op_blend_rel_pas_dp_mmx _op_blend_rel_p_dp_mmx
+
+#define _op_blend_rel_p_dpan_mmx _op_blend_p_dpan_mmx
+#define _op_blend_rel_pan_dpan_mmx _op_blend_pan_dpan_mmx
+#define _op_blend_rel_pas_dpan_mmx _op_blend_pas_dpan_mmx
+
+static void
+init_blend_rel_pixel_span_funcs_mmx(void)
+{
+   op_blend_rel_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_p_dp_mmx;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pas_dp_mmx;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pan_dp_mmx;
+
+   op_blend_rel_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_p_dpan_mmx;
+   op_blend_rel_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pas_dpan_mmx;
+   op_blend_rel_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pan_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_blend_rel_pt_p_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_256, mm6)
+       MOV_A2R(ALPHA_255, mm5)
+
+       MOV_P2R(s, mm2, mm0)
+       MOV_RA2R(mm2, mm1)
+       psubw_r2r(mm1, mm6);
+
+       MOV_P2R(*d, mm1, mm0)
+       MOV_RA2R(mm1, mm4)
+       MUL4_256_R2R(mm6, mm1)
+
+       MUL4_SYM_R2R(mm4, mm2, mm5)
+       paddw_r2r(mm2, mm1);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_blend_rel_pt_pas_dp_mmx _op_blend_rel_pt_p_dp_mmx
+#define _op_blend_rel_pt_pan_dp_mmx _op_blend_rel_pt_p_dp_mmx
+
+#define _op_blend_rel_pt_p_dpan_mmx _op_blend_pt_p_dpan_mmx
+#define _op_blend_rel_pt_pas_dpan_mmx _op_blend_pt_pas_dpan_mmx
+#define _op_blend_rel_pt_pan_dpan_mmx _op_blend_pt_pan_dpan_mmx
+
+static void
+init_blend_rel_pixel_pt_funcs_mmx(void)
+{
+   op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_p_dp_mmx;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_pas_dp_mmx;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_blend_rel_pt_pan_dp_mmx;
+
+   op_blend_rel_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_.c b/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_.c
new file mode 100644 (file)
index 0000000..641230c
--- /dev/null
@@ -0,0 +1,185 @@
+
+/* blend pixel x mask --> dst */
+
+#ifdef BUILD_C
+static void
+_op_blend_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               l = 256 - (*s >> 24);
+               *d = *s + MUL_256(l, *d);
+               break;
+           default:
+               c = MUL_SYM(l, *s);
+               l = 256 - (c >> 24);
+               *d = c + MUL_256(l, *d);
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+static void
+_op_blend_pas_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = (*s >> 24);
+       switch(*m & l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = *s;
+               break;
+           default:
+               c = MUL_SYM(l, *s);
+               l = 256 - (c >> 24);
+               *d = c + MUL_256(l, *d);
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+static void
+_op_blend_pan_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = *s;
+               break;
+           default:
+               l++;
+               *d = INTERP_256(l, *s, *d);
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+
+#define _op_blend_p_mas_dpan _op_blend_p_mas_dp
+#define _op_blend_pas_mas_dpan _op_blend_pas_mas_dp
+#define _op_blend_pan_mas_dpan _op_blend_pan_mas_dp
+
+static void
+init_blend_pixel_mask_span_funcs_c(void)
+{
+   op_blend_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_p_mas_dp;
+   op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_pas_mas_dp;
+   op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_pan_mas_dp;
+
+   op_blend_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_p_mas_dpan;
+   op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pas_mas_dpan;
+   op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pan_mas_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_blend_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = MUL_SYM(m, s);
+       c = 256 - (s >> 24);
+       *d = s + MUL_256(c, *d);
+}
+
+static void
+_op_blend_pt_pan_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       *d = INTERP_256(m + 1, s, *d);
+}
+
+#define _op_blend_pt_pas_mas_dp _op_blend_pt_p_mas_dp
+
+#define _op_blend_pt_p_mas_dpan _op_blend_pt_p_mas_dp
+#define _op_blend_pt_pas_mas_dpan _op_blend_pt_pas_mas_dp
+#define _op_blend_pt_pan_mas_dpan _op_blend_pt_pan_mas_dp
+
+static void
+init_blend_pixel_mask_pt_funcs_c(void)
+{
+   op_blend_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_p_mas_dp;
+   op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_pas_mas_dp;
+   op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_pt_pan_mas_dp;
+
+   op_blend_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_p_mas_dpan;
+   op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_pas_mas_dpan;
+   op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_pt_pan_mas_dpan;
+}
+#endif
+
+/*-----*/
+
+/* blend_rel pixel x mask -> dst */
+
+#ifdef BUILD_C
+static void
+_op_blend_rel_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       c = MUL_SYM(*m, *s);
+       l = 256 - (c >> 24);
+       *d = MUL_SYM(*d >> 24, c) + MUL_256(l, *d);
+       d++;
+       m++;
+       s++;
+     }
+}
+
+#define _op_blend_rel_pas_mas_dp _op_blend_rel_p_mas_dp
+#define _op_blend_rel_pan_mas_dp _op_blend_rel_p_mas_dp
+
+#define _op_blend_rel_p_mas_dpan _op_blend_p_mas_dpan
+#define _op_blend_rel_pas_mas_dpan _op_blend_pas_mas_dpan
+#define _op_blend_rel_pan_mas_dpan _op_blend_pan_mas_dpan
+
+static void
+init_blend_rel_pixel_mask_span_funcs_c(void)
+{
+   op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_p_mas_dp;
+   op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pas_mas_dp;
+   op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pan_mas_dp;
+
+   op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_p_mas_dpan;
+   op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pas_mas_dpan;
+   op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pan_mas_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_blend_rel_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = MUL_SYM(m, s);
+       c = 256 - (s >> 24);
+       *d = MUL_SYM(*d >> 24, s) + MUL_256(c, *d);
+}
+
+#define _op_blend_rel_pt_pas_mas_dp _op_blend_rel_pt_p_mas_dp
+#define _op_blend_rel_pt_pan_mas_dp _op_blend_rel_pt_p_mas_dp
+
+#define _op_blend_rel_pt_p_mas_dpan _op_blend_pt_p_mas_dpan
+#define _op_blend_rel_pt_pas_mas_dpan _op_blend_pt_pas_mas_dpan
+#define _op_blend_rel_pt_pan_mas_dpan _op_blend_pt_pan_mas_dpan
+
+static void
+init_blend_rel_pixel_mask_pt_funcs_c(void)
+{
+   op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_p_mas_dp;
+   op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_pas_mas_dp;
+   op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_blend_rel_pt_pan_mas_dp;
+
+   op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_p_mas_dpan;
+   op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_pas_mas_dpan;
+   op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_blend_rel_pt_pan_mas_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_i386.c b/src/lib/engines/common/evas_op_blend/op_blend_pixel_mask_i386.c
new file mode 100644 (file)
index 0000000..e81c6d2
--- /dev/null
@@ -0,0 +1,158 @@
+
+/* blend pixel x mask --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_blend_pas_mas_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_256, mm6)
+   while (d < e) {
+       l = (*s >> 24);
+       switch(*m & l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = *s;
+               break;
+           default:
+               l = 1 + *m;
+               MOV_A2R(l, mm3)
+               MOV_P2R(*s, mm2, mm0)
+               MUL4_256_R2R(mm3, mm2)
+
+               MOV_RA2R(mm2, mm1)
+               movq_r2r(mm6, mm3);
+               psubw_r2r(mm1, mm3);
+
+               MOV_P2R(*d, mm1, mm0)
+               MUL4_256_R2R(mm3, mm1)
+
+               paddw_r2r(mm2, mm1);
+               MOV_R2P(mm1, *d, mm0)
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+static void
+_op_blend_pan_mas_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   MOV_A2R(ALPHA_255, mm5)
+   pxor_r2r(mm0, mm0);
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = *s;
+               break;
+           default:
+               l++;
+               MOV_A2R(l, mm3)
+               MOV_P2R(*s, mm2, mm0)
+               MOV_P2R(*d, mm1, mm0)
+               INTERP_256_R2R(mm3, mm2, mm1, mm5)
+               MOV_R2P(mm1, *d, mm0)
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+#define _op_blend_p_mas_dp_mmx _op_blend_pas_mas_dp_mmx
+
+#define _op_blend_p_mas_dpan_mmx _op_blend_p_mas_dp_mmx
+#define _op_blend_pan_mas_dpan_mmx _op_blend_pan_mas_dp_mmx
+#define _op_blend_pas_mas_dpan_mmx _op_blend_pas_mas_dp_mmx
+
+static void
+init_blend_pixel_mask_span_funcs_mmx(void)
+{
+   op_blend_span_funcs[SP][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_p_mas_dp_mmx;
+   op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pas_mas_dp_mmx;
+   op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pan_mas_dp_mmx;
+
+   op_blend_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_p_mas_dpan_mmx;
+   op_blend_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pas_mas_dpan_mmx;
+   op_blend_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pan_mas_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_blend_pt_p_mas_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = m + 1;
+       MOV_A2R(c, mm3)
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_256, mm6)
+       MOV_P2R(s, mm2, mm0)
+       MUL4_256_R2R(mm3, mm2)
+
+       MOV_RA2R(mm2, mm1)
+       psubw_r2r(mm1, mm6);
+
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_256_R2R(mm6, mm1)
+
+       paddw_r2r(mm2, mm1);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_blend_pt_pan_mas_dp_mmx _op_blend_pt_p_mas_dp_mmx
+#define _op_blend_pt_pas_mas_dp_mmx _op_blend_pt_p_mas_dp_mmx
+
+#define _op_blend_pt_p_mas_dpan_mmx _op_blend_pt_p_mas_dp_mmx
+#define _op_blend_pt_pas_mas_dpan_mmx _op_blend_pt_pas_mas_dp_mmx
+#define _op_blend_pt_pan_mas_dpan_mmx _op_blend_pt_pan_mas_dp_mmx
+
+static void
+init_blend_pixel_mask_pt_funcs_mmx(void)
+{
+   op_blend_pt_funcs[SP][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pt_p_mas_dp_mmx;
+   op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pt_pas_mas_dp_mmx;
+   op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_MMX] = _op_blend_pt_pan_mas_dp_mmx;
+
+   op_blend_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_p_mas_dpan_mmx;
+   op_blend_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pas_mas_dpan_mmx;
+   op_blend_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_pt_pan_mas_dpan_mmx;
+}
+#endif
+
+/*-----*/
+
+/* blend_rel pixel x mask -> dst */
+
+#ifdef BUILD_MMX
+
+#define _op_blend_rel_p_mas_dpan_mmx _op_blend_p_mas_dpan_mmx
+#define _op_blend_rel_pas_mas_dpan_mmx _op_blend_pas_mas_dpan_mmx
+#define _op_blend_rel_pan_mas_dpan_mmx _op_blend_pan_mas_dpan_mmx
+
+static void
+init_blend_rel_pixel_mask_span_funcs_mmx(void)
+{
+   op_blend_rel_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_p_mas_dpan_mmx;
+   op_blend_rel_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pas_mas_dpan_mmx;
+   op_blend_rel_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pan_mas_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+
+#define _op_blend_rel_pt_p_mas_dpan_mmx _op_blend_pt_p_mas_dpan_mmx
+#define _op_blend_rel_pt_pas_mas_dpan_mmx _op_blend_pt_pas_mas_dpan_mmx
+#define _op_blend_rel_pt_pan_mas_dpan_mmx _op_blend_pt_pan_mas_dpan_mmx
+
+static void
+init_blend_rel_pixel_mask_pt_funcs_mmx(void)
+{
+   op_blend_rel_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_p_mas_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pas_mas_dpan_mmx;
+   op_blend_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_blend_rel_pt_pan_mas_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_blend_main_.c b/src/lib/engines/common/evas_op_blend_main_.c
new file mode 100644 (file)
index 0000000..08cfe66
--- /dev/null
@@ -0,0 +1,563 @@
+#include "evas_common.h"
+
+static RGBA_Gfx_Func     op_blend_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+static RGBA_Gfx_Pt_Func  op_blend_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+
+static void op_blend_init(void);
+static void op_blend_shutdown(void);
+
+static RGBA_Gfx_Func op_blend_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_blend_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_blend_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_blend_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_blend_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+static RGBA_Gfx_Pt_Func op_blend_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_blend_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_blend_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_blend_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_blend_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+
+static RGBA_Gfx_Compositor  _composite_blend = { "blend",
+ op_blend_init, op_blend_shutdown,
+ op_blend_pixel_span_get, op_blend_color_span_get,
+ op_blend_pixel_color_span_get, op_blend_mask_color_span_get,
+ op_blend_pixel_mask_span_get,
+ op_blend_pixel_pt_get, op_blend_color_pt_get,
+ op_blend_pixel_color_pt_get, op_blend_mask_color_pt_get,
+ op_blend_pixel_mask_pt_get
+ };
+
+RGBA_Gfx_Compositor  *
+evas_common_gfx_compositor_blend_get(void)
+{
+   return &(_composite_blend);
+}
+
+
+static RGBA_Gfx_Func     op_blend_rel_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+static RGBA_Gfx_Pt_Func  op_blend_rel_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+
+static void op_blend_rel_init(void);
+static void op_blend_rel_shutdown(void);
+
+static RGBA_Gfx_Func op_blend_rel_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_blend_rel_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_blend_rel_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_blend_rel_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_blend_rel_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+static RGBA_Gfx_Pt_Func op_blend_rel_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_blend_rel_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_blend_rel_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_blend_rel_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_blend_rel_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+
+static RGBA_Gfx_Compositor  _composite_blend_rel = { "blend_rel",
+ op_blend_rel_init, op_blend_rel_shutdown,
+ op_blend_rel_pixel_span_get, op_blend_rel_color_span_get,
+ op_blend_rel_pixel_color_span_get, op_blend_rel_mask_color_span_get,
+ op_blend_rel_pixel_mask_span_get,
+ op_blend_rel_pixel_pt_get, op_blend_rel_color_pt_get,
+ op_blend_rel_pixel_color_pt_get, op_blend_rel_mask_color_pt_get,
+ op_blend_rel_pixel_mask_pt_get
+ };
+
+RGBA_Gfx_Compositor  *
+evas_common_gfx_compositor_blend_rel_get(void)
+{
+   return &(_composite_blend_rel);
+}
+
+
+# include "./evas_op_blend/op_blend_pixel_.c"
+# include "./evas_op_blend/op_blend_color_.c"
+# include "./evas_op_blend/op_blend_pixel_color_.c"
+# include "./evas_op_blend/op_blend_pixel_mask_.c"
+# include "./evas_op_blend/op_blend_mask_color_.c"
+//# include "./evas_op_blend/op_blend_pixel_mask_color_.c"
+
+# include "./evas_op_blend/op_blend_pixel_i386.c"
+# include "./evas_op_blend/op_blend_color_i386.c"
+# include "./evas_op_blend/op_blend_pixel_color_i386.c"
+# include "./evas_op_blend/op_blend_pixel_mask_i386.c"
+# include "./evas_op_blend/op_blend_mask_color_i386.c"
+//# include "./evas_op_blend/op_blend_pixel_mask_color_i386.c"
+
+static void
+op_blend_init(void)
+{
+   memset(op_blend_span_funcs, 0, sizeof(op_blend_span_funcs));
+   memset(op_blend_pt_funcs, 0, sizeof(op_blend_pt_funcs));
+#ifdef BUILD_MMX
+   init_blend_pixel_span_funcs_mmx();
+   init_blend_pixel_color_span_funcs_mmx();
+   init_blend_pixel_mask_span_funcs_mmx();
+   init_blend_color_span_funcs_mmx();
+   init_blend_mask_color_span_funcs_mmx();
+
+   init_blend_pixel_pt_funcs_mmx();
+   init_blend_pixel_color_pt_funcs_mmx();
+   init_blend_pixel_mask_pt_funcs_mmx();
+   init_blend_color_pt_funcs_mmx();
+   init_blend_mask_color_pt_funcs_mmx();
+#endif
+#ifdef BUILD_C
+   init_blend_pixel_span_funcs_c();
+   init_blend_pixel_color_span_funcs_c();
+   init_blend_pixel_mask_span_funcs_c();
+   init_blend_color_span_funcs_c();
+   init_blend_mask_color_span_funcs_c();
+
+   init_blend_pixel_pt_funcs_c();
+   init_blend_pixel_color_pt_funcs_c();
+   init_blend_pixel_mask_pt_funcs_c();
+   init_blend_color_pt_funcs_c();
+   init_blend_mask_color_pt_funcs_c();
+#endif
+}
+
+static void
+op_blend_shutdown(void)
+{
+}
+
+static RGBA_Gfx_Func
+blend_gfx_span_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Func func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_blend_span_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_blend_span_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Func
+op_blend_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       s = SP;
+       if (src->cache_entry.flags.alpha_sparse)
+           s = SP_AS;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_blend_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_blend_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       s = SP;
+       if (src->cache_entry.flags.alpha_sparse)
+           s = SP_AS;
+     }
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_blend_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_blend_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       s = SP;
+       if (src->cache_entry.flags.alpha_sparse)
+           s = SP_AS;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_gfx_span_func_cpu(s, m, c, d);
+}
+
+
+static RGBA_Gfx_Pt_Func
+blend_gfx_pt_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Pt_Func func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_blend_pt_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_blend_pt_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Pt_Func
+op_blend_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_blend_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_blend_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_blend_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_blend_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_gfx_pt_func_cpu(s, m, c, d);
+}
+
+
+static void
+op_blend_rel_init(void)
+{
+   memset(op_blend_rel_span_funcs, 0, sizeof(op_blend_rel_span_funcs));
+   memset(op_blend_rel_pt_funcs, 0, sizeof(op_blend_rel_pt_funcs));
+#ifdef BUILD_MMX
+   init_blend_rel_pixel_span_funcs_mmx();
+   init_blend_rel_pixel_color_span_funcs_mmx();
+   init_blend_rel_pixel_mask_span_funcs_mmx();
+   init_blend_rel_color_span_funcs_mmx();
+   init_blend_rel_mask_color_span_funcs_mmx();
+
+   init_blend_rel_pixel_pt_funcs_mmx();
+   init_blend_rel_pixel_color_pt_funcs_mmx();
+   init_blend_rel_pixel_mask_pt_funcs_mmx();
+   init_blend_rel_color_pt_funcs_mmx();
+   init_blend_rel_mask_color_pt_funcs_mmx();
+#endif
+#ifdef BUILD_C
+   init_blend_rel_pixel_span_funcs_c();
+   init_blend_rel_pixel_color_span_funcs_c();
+   init_blend_rel_pixel_mask_span_funcs_c();
+   init_blend_rel_color_span_funcs_c();
+   init_blend_rel_mask_color_span_funcs_c();
+
+   init_blend_rel_pixel_pt_funcs_c();
+   init_blend_rel_pixel_color_pt_funcs_c();
+   init_blend_rel_pixel_mask_pt_funcs_c();
+   init_blend_rel_color_pt_funcs_c();
+   init_blend_rel_mask_color_pt_funcs_c();
+#endif
+}
+
+static void
+op_blend_rel_shutdown(void)
+{
+}
+
+static RGBA_Gfx_Func
+blend_rel_gfx_span_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Func func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_blend_rel_span_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_blend_rel_span_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Func
+op_blend_rel_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       s = SP;
+       if (src->cache_entry.flags.alpha_sparse)
+           s = SP_AS;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_blend_rel_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_blend_rel_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_blend_rel_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_blend_rel_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       s = SP;
+       if (src->cache_entry.flags.alpha_sparse)
+           s = SP_AS;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+blend_rel_gfx_pt_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Pt_Func func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_blend_rel_pt_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_blend_rel_pt_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Pt_Func
+op_blend_rel_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_blend_rel_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_blend_rel_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_blend_rel_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_blend_rel_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return blend_rel_gfx_pt_func_cpu(s, m, c, d);
+}
diff --git a/src/lib/engines/common/evas_op_copy/.cvsignore b/src/lib/engines/common/evas_op_copy/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/lib/engines/common/evas_op_copy/Makefile.am b/src/lib/engines/common/evas_op_copy/Makefile.am
new file mode 100644 (file)
index 0000000..7c1a883
--- /dev/null
@@ -0,0 +1,11 @@
+EXTRA_DIST = \
+op_copy_color_.c \
+op_copy_color_i386.c \
+op_copy_mask_color_.c \
+op_copy_mask_color_i386.c \
+op_copy_pixel_.c \
+op_copy_pixel_color_.c \
+op_copy_pixel_color_i386.c \
+op_copy_pixel_i386.c \
+op_copy_pixel_mask_.c \
+op_copy_pixel_mask_i386.c
diff --git a/src/lib/engines/common/evas_op_copy/op_copy_color_.c b/src/lib/engines/common/evas_op_copy/op_copy_color_.c
new file mode 100644 (file)
index 0000000..8b54e1d
--- /dev/null
@@ -0,0 +1,135 @@
+
+/* copy color --> dst */
+
+#ifdef BUILD_C
+static void
+_op_copy_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   for (; d < e; d++) {
+      *d = c;
+   }
+}
+
+#define _op_copy_cn_dp _op_copy_c_dp
+#define _op_copy_can_dp _op_copy_c_dp
+#define _op_copy_caa_dp _op_copy_c_dp
+
+#define _op_copy_c_dpan _op_copy_c_dp
+#define _op_copy_cn_dpan _op_copy_c_dp
+#define _op_copy_can_dpan _op_copy_c_dp
+#define _op_copy_caa_dpan _op_copy_c_dp
+
+static void
+init_copy_color_span_funcs_c(void)
+{
+   op_copy_span_funcs[SP_N][SM_N][SC_N][DP][CPU_C] = _op_copy_cn_dp;
+   op_copy_span_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_copy_c_dp;
+   op_copy_span_funcs[SP_N][SM_N][SC_AN][DP][CPU_C] = _op_copy_can_dp;
+   op_copy_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_copy_caa_dp;
+
+   op_copy_span_funcs[SP_N][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_cn_dpan;
+   op_copy_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_copy_c_dpan;
+   op_copy_span_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_can_dpan;
+   op_copy_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_copy_pt_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+      *d = c;
+}
+
+#define _op_copy_pt_cn_dp _op_copy_pt_c_dp
+#define _op_copy_pt_can_dp _op_copy_pt_c_dp
+#define _op_copy_pt_caa_dp _op_copy_pt_c_dp
+
+#define _op_copy_pt_c_dpan _op_copy_pt_c_dp
+#define _op_copy_pt_cn_dpan _op_copy_pt_c_dp
+#define _op_copy_pt_can_dpan _op_copy_pt_c_dp
+#define _op_copy_pt_caa_dpan _op_copy_pt_c_dp
+
+static void
+init_copy_color_pt_funcs_c(void)
+{
+   op_copy_pt_funcs[SP_N][SM_N][SC_N][DP][CPU_C] = _op_copy_pt_cn_dp;
+   op_copy_pt_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_copy_pt_c_dp;
+   op_copy_pt_funcs[SP_N][SM_N][SC_AN][DP][CPU_C] = _op_copy_pt_can_dp;
+   op_copy_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_copy_pt_caa_dp;
+
+   op_copy_pt_funcs[SP_N][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_pt_cn_dpan;
+   op_copy_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_copy_pt_c_dpan;
+   op_copy_pt_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pt_can_dpan;
+   op_copy_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pt_caa_dpan;
+}
+#endif
+
+/*-----*/
+
+/* copy_rel color --> dst */
+
+#ifdef BUILD_C
+static void
+_op_copy_rel_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   for (; d < e; d++) {
+       *d = MUL_SYM(*d >> 24, c);
+   }
+}
+
+
+#define _op_copy_rel_cn_dp _op_copy_rel_c_dp
+#define _op_copy_rel_can_dp _op_copy_rel_c_dp
+#define _op_copy_rel_caa_dp _op_copy_rel_c_dp
+
+#define _op_copy_rel_c_dpan _op_copy_c_dp
+#define _op_copy_rel_cn_dpan _op_copy_cn_dp
+#define _op_copy_rel_can_dpan _op_copy_can_dp
+#define _op_copy_rel_caa_dpan _op_copy_caa_dp
+
+static void
+init_copy_rel_color_span_funcs_c(void)
+{
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_N][DP][CPU_C] = _op_copy_rel_cn_dp;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_copy_rel_c_dp;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_can_dp;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_caa_dp;
+
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_rel_cn_dpan;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_c_dpan;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_can_dpan;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_copy_rel_pt_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = 1 + (*d >> 24);
+       *d = MUL_256(s, c);
+}
+
+
+#define _op_copy_rel_pt_cn_dp _op_copy_rel_pt_c_dp
+#define _op_copy_rel_pt_can_dp _op_copy_rel_pt_c_dp
+#define _op_copy_rel_pt_caa_dp _op_copy_rel_pt_c_dp
+
+#define _op_copy_rel_pt_c_dpan _op_copy_pt_c_dp
+#define _op_copy_rel_pt_cn_dpan _op_copy_pt_cn_dp
+#define _op_copy_rel_pt_can_dpan _op_copy_pt_can_dp
+#define _op_copy_rel_pt_caa_dpan _op_copy_pt_caa_dp
+
+static void
+init_copy_rel_color_pt_funcs_c(void)
+{
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_N][DP][CPU_C] = _op_copy_rel_pt_cn_dp;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_copy_rel_pt_c_dp;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pt_can_dp;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pt_caa_dp;
+
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_rel_pt_cn_dpan;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pt_c_dpan;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_can_dpan;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_copy/op_copy_color_i386.c b/src/lib/engines/common/evas_op_copy/op_copy_color_i386.c
new file mode 100644 (file)
index 0000000..31be24b
--- /dev/null
@@ -0,0 +1,151 @@
+
+/* copy color --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_copy_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l - 1;
+   movd_m2r(c, mm1);
+   movq_r2r(mm1, mm2);
+   psllq_i2r(32, mm1);
+   por_r2r(mm2, mm1);
+   for (; d < e; d+=2) {
+      movq_r2m(mm1, d[0]);
+   }
+   e+=1;
+   for (; d < e; d++) {
+      *d = c;
+   }
+}
+
+#define _op_copy_cn_dp_mmx _op_copy_c_dp_mmx
+#define _op_copy_can_dp_mmx _op_copy_c_dp_mmx
+#define _op_copy_caa_dp_mmx _op_copy_c_dp_mmx
+
+#define _op_copy_cn_dpan_mmx _op_copy_c_dp_mmx
+#define _op_copy_c_dpan_mmx _op_copy_c_dp_mmx
+#define _op_copy_can_dpan_mmx _op_copy_c_dp_mmx
+#define _op_copy_caa_dpan_mmx _op_copy_c_dp_mmx
+
+static void
+init_copy_color_span_funcs_mmx(void)
+{
+   op_copy_span_funcs[SP_N][SM_N][SC_N][DP][CPU_MMX] = _op_copy_cn_dp_mmx;
+   op_copy_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_copy_c_dp_mmx;
+   op_copy_span_funcs[SP_N][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_can_dp_mmx;
+   op_copy_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_caa_dp_mmx;
+
+   op_copy_span_funcs[SP_N][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_cn_dpan_mmx;
+   op_copy_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_c_dpan_mmx;
+   op_copy_span_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_can_dpan_mmx;
+   op_copy_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_copy_pt_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+     *d = c;
+}
+
+#define _op_copy_pt_cn_dp_mmx _op_copy_pt_c_dp_mmx
+#define _op_copy_pt_can_dp_mmx _op_copy_pt_c_dp_mmx
+#define _op_copy_pt_caa_dp_mmx _op_copy_pt_c_dp_mmx
+
+#define _op_copy_pt_cn_dpan_mmx _op_copy_pt_c_dp_mmx
+#define _op_copy_pt_c_dpan_mmx _op_copy_pt_c_dp_mmx
+#define _op_copy_pt_can_dpan_mmx _op_copy_pt_c_dp_mmx
+#define _op_copy_pt_caa_dpan_mmx _op_copy_pt_c_dp_mmx
+
+static void
+init_copy_color_pt_funcs_mmx(void)
+{
+   op_copy_pt_funcs[SP_N][SM_N][SC_N][DP][CPU_MMX] = _op_copy_pt_cn_dp_mmx;
+   op_copy_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_copy_pt_c_dp_mmx;
+   op_copy_pt_funcs[SP_N][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pt_can_dp_mmx;
+   op_copy_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pt_caa_dp_mmx;
+
+   op_copy_pt_funcs[SP_N][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_pt_cn_dpan_mmx;
+   op_copy_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pt_c_dpan_mmx;
+   op_copy_pt_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pt_can_dpan_mmx;
+   op_copy_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pt_caa_dpan_mmx;
+}
+#endif
+
+/*-----*/
+
+/* copy_rel color --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_copy_rel_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm2, mm0)
+   for (; d < e; d++) {
+       DATA32  da = 1 + (*d >> 24);
+       MOV_A2R(da, mm1)
+       MUL4_256_R2R(mm2, mm1)
+       MOV_R2P(mm1, *d, mm0)
+   }
+}
+
+#define _op_copy_rel_cn_dp_mmx _op_copy_rel_c_dp_mmx
+#define _op_copy_rel_can_dp_mmx _op_copy_rel_c_dp_mmx
+#define _op_copy_rel_caa_dp_mmx _op_copy_rel_c_dp_mmx
+
+#define _op_copy_rel_cn_dpan_mmx _op_copy_cn_dpan_mmx
+#define _op_copy_rel_c_dpan_mmx _op_copy_c_dpan_mmx
+#define _op_copy_rel_can_dpan_mmx _op_copy_can_dpan_mmx
+#define _op_copy_rel_caa_dpan_mmx _op_copy_caa_dpan_mmx
+
+static void
+init_copy_rel_color_span_funcs_mmx(void)
+{
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_N][DP][CPU_MMX] = _op_copy_rel_cn_dp_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_c_dp_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_can_dp_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_caa_dp_mmx;
+
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_cn_dpan_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_c_dpan_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_can_dpan_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_copy_rel_pt_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = 1 + (*d >> 24);
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(c, mm2, mm0)
+       MOV_A2R(s, mm1)
+       MUL4_256_R2R(mm2, mm1)
+       MOV_R2P(mm1, *d, mm0)
+}
+
+
+#define _op_copy_rel_pt_cn_dp_mmx _op_copy_rel_pt_c_dp_mmx
+#define _op_copy_rel_pt_can_dp_mmx _op_copy_rel_pt_c_dp_mmx
+#define _op_copy_rel_pt_caa_dp_mmx _op_copy_rel_pt_c_dp_mmx
+
+#define _op_copy_rel_pt_cn_dpan_mmx _op_copy_pt_cn_dpan_mmx
+#define _op_copy_rel_pt_c_dpan_mmx _op_copy_pt_c_dpan_mmx
+#define _op_copy_rel_pt_can_dpan_mmx _op_copy_pt_can_dpan_mmx
+#define _op_copy_rel_pt_caa_dpan_mmx _op_copy_pt_caa_dpan_mmx
+
+static void
+init_copy_rel_color_pt_funcs_mmx(void)
+{
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_N][DP][CPU_MMX] = _op_copy_rel_pt_cn_dp_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pt_c_dp_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pt_can_dp_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pt_caa_dp_mmx;
+
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pt_cn_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pt_c_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pt_can_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pt_caa_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_copy/op_copy_mask_color_.c b/src/lib/engines/common/evas_op_copy/op_copy_mask_color_.c
new file mode 100644 (file)
index 0000000..c81888a
--- /dev/null
@@ -0,0 +1,167 @@
+
+/* copy mask x color -> dst */
+
+#ifdef BUILD_C
+static void
+_op_copy_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = c;
+               break;
+           default:
+               l++;
+               *d = INTERP_256(l, c, *d);
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_copy_mas_cn_dp _op_copy_mas_c_dp
+#define _op_copy_mas_can_dp _op_copy_mas_c_dp
+#define _op_copy_mas_caa_dp _op_copy_mas_c_dp
+
+#define _op_copy_mas_c_dpan _op_copy_mas_c_dp
+#define _op_copy_mas_cn_dpan _op_copy_mas_c_dpan
+#define _op_copy_mas_can_dpan _op_copy_mas_c_dpan
+#define _op_copy_mas_caa_dpan _op_copy_mas_c_dpan
+
+static void
+init_copy_mask_color_span_funcs_c(void)
+{
+   op_copy_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_copy_mas_cn_dp;
+   op_copy_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_copy_mas_c_dp;
+   op_copy_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_copy_mas_can_dp;
+   op_copy_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_copy_mas_caa_dp;
+
+   op_copy_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_mas_cn_dpan;
+   op_copy_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_copy_mas_c_dpan;
+   op_copy_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_copy_mas_can_dpan;
+   op_copy_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_copy_mas_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_copy_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       *d = INTERP_256(m + 1, c, *d);
+}
+
+
+#define _op_copy_pt_mas_cn_dp _op_copy_pt_mas_c_dp
+#define _op_copy_pt_mas_can_dp _op_copy_pt_mas_c_dp
+#define _op_copy_pt_mas_caa_dp _op_copy_pt_mas_c_dp
+
+#define _op_copy_pt_mas_c_dpan _op_copy_pt_mas_c_dp
+#define _op_copy_pt_mas_cn_dpan _op_copy_pt_mas_c_dpan
+#define _op_copy_pt_mas_can_dpan _op_copy_pt_mas_c_dpan
+#define _op_copy_pt_mas_caa_dpan _op_copy_pt_mas_c_dpan
+
+static void
+init_copy_mask_color_pt_funcs_c(void)
+{
+   op_copy_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_copy_pt_mas_cn_dp;
+   op_copy_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_copy_pt_mas_c_dp;
+   op_copy_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_copy_pt_mas_can_dp;
+   op_copy_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_copy_pt_mas_caa_dp;
+
+   op_copy_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_pt_mas_cn_dpan;
+   op_copy_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_copy_pt_mas_c_dpan;
+   op_copy_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_copy_pt_mas_can_dpan;
+   op_copy_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_copy_pt_mas_caa_dpan;
+}
+#endif
+
+/*-----*/
+
+/* copy_rel mask x color -> dst */
+
+#ifdef BUILD_C
+static void
+_op_copy_rel_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               l = 1 + (*d >> 24);
+               *d = MUL_256(l, c);
+               break;
+           default:
+             {
+               DATA32 da = 1 + (*d >> 24);
+               da = MUL_256(da, c);
+               l++;
+               *d = INTERP_256(l, da, *d);
+             }
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+
+#define _op_copy_rel_mas_cn_dp _op_copy_rel_mas_c_dp
+#define _op_copy_rel_mas_can_dp _op_copy_rel_mas_c_dp
+#define _op_copy_rel_mas_caa_dp _op_copy_rel_mas_c_dp
+
+#define _op_copy_rel_mas_c_dpan _op_copy_mas_c_dpan
+#define _op_copy_rel_mas_cn_dpan _op_copy_mas_cn_dpan
+#define _op_copy_rel_mas_can_dpan _op_copy_mas_can_dpan
+#define _op_copy_rel_mas_caa_dpan _op_copy_mas_caa_dpan
+
+static void
+init_copy_rel_mask_color_span_funcs_c(void)
+{
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_copy_rel_mas_cn_dp;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_copy_rel_mas_c_dp;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_copy_rel_mas_can_dp;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_copy_rel_mas_caa_dp;
+
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_rel_mas_cn_dpan;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_copy_rel_mas_c_dpan;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_copy_rel_mas_can_dpan;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_copy_rel_mas_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_copy_rel_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = 1 + (*d >> 24);
+       s = MUL_256(s, c);
+       *d = INTERP_256(m + 1, s, *d);
+}
+
+#define _op_copy_rel_pt_mas_cn_dp _op_copy_rel_pt_mas_c_dp
+#define _op_copy_rel_pt_mas_can_dp _op_copy_rel_pt_mas_c_dp
+#define _op_copy_rel_pt_mas_caa_dp _op_copy_rel_pt_mas_c_dp
+
+#define _op_copy_rel_pt_mas_c_dpan _op_copy_pt_mas_c_dpan
+#define _op_copy_rel_pt_mas_cn_dpan _op_copy_pt_mas_cn_dpan
+#define _op_copy_rel_pt_mas_can_dpan _op_copy_pt_mas_can_dpan
+#define _op_copy_rel_pt_mas_caa_dpan _op_copy_pt_mas_caa_dpan
+
+static void
+init_copy_rel_mask_color_pt_funcs_c(void)
+{
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_C] = _op_copy_rel_pt_mas_cn_dp;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_copy_rel_pt_mas_c_dp;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_copy_rel_pt_mas_can_dp;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_copy_rel_pt_mas_caa_dp;
+
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_rel_pt_mas_cn_dpan;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_copy_rel_pt_mas_c_dpan;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_mas_can_dpan;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_mas_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_copy/op_copy_mask_color_i386.c b/src/lib/engines/common/evas_op_copy/op_copy_mask_color_i386.c
new file mode 100644 (file)
index 0000000..6704ba6
--- /dev/null
@@ -0,0 +1,194 @@
+
+/* copy mask x color -> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_copy_mas_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm2, mm0)
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = c;
+               break;
+           default:
+             {
+               l++;
+               MOV_A2R(l, mm3)
+               MOV_P2R(*d, mm1, mm0)
+               movq_r2r(mm2, mm4);
+               INTERP_256_R2R(mm3, mm4, mm1, mm5);
+               MOV_R2P(mm1, *d, mm0)
+             }
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_copy_mas_cn_dp_mmx _op_copy_mas_c_dp_mmx
+#define _op_copy_mas_can_dp_mmx _op_copy_mas_c_dp_mmx
+#define _op_copy_mas_caa_dp_mmx _op_copy_mas_c_dp_mmx
+
+#define _op_copy_mas_c_dpan_mmx _op_copy_mas_c_dp_mmx
+#define _op_copy_mas_cn_dpan_mmx _op_copy_mas_c_dpan_mmx
+#define _op_copy_mas_can_dpan_mmx _op_copy_mas_c_dpan_mmx
+#define _op_copy_mas_caa_dpan_mmx _op_copy_mas_c_dpan_mmx
+
+static void
+init_copy_mask_color_span_funcs_mmx(void)
+{
+   op_copy_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_mas_cn_dp_mmx;
+   op_copy_span_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_copy_mas_c_dp_mmx;
+   op_copy_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_copy_mas_can_dp_mmx;
+   op_copy_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_copy_mas_caa_dp_mmx;
+
+   op_copy_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_mas_cn_dpan_mmx;
+   op_copy_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_copy_mas_c_dpan_mmx;
+   op_copy_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_copy_mas_can_dpan_mmx;
+   op_copy_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_copy_mas_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_copy_pt_mas_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = m + 1;
+       MOV_A2R(ALPHA_255, mm5)
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(c, mm2, mm0)
+       MOV_A2R(s, mm3)
+       MOV_P2R(*d, mm1, mm0)
+       INTERP_256_R2R(mm3, mm2, mm1, mm5);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_copy_pt_mas_cn_dp_mmx _op_copy_pt_mas_c_dp_mmx
+#define _op_copy_pt_mas_can_dp_mmx _op_copy_pt_mas_c_dp_mmx
+#define _op_copy_pt_mas_caa_dp_mmx _op_copy_pt_mas_c_dp_mmx
+
+#define _op_copy_pt_mas_c_dpan_mmx _op_copy_pt_mas_c_dp_mmx
+#define _op_copy_pt_mas_cn_dpan_mmx _op_copy_pt_mas_c_dpan_mmx
+#define _op_copy_pt_mas_can_dpan_mmx _op_copy_pt_mas_c_dpan_mmx
+#define _op_copy_pt_mas_caa_dpan_mmx _op_copy_pt_mas_c_dpan_mmx
+
+static void
+init_copy_mask_color_pt_funcs_mmx(void)
+{
+   op_copy_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_pt_mas_cn_dp_mmx;
+   op_copy_pt_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_copy_pt_mas_c_dp_mmx;
+   op_copy_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_copy_pt_mas_can_dp_mmx;
+   op_copy_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_copy_pt_mas_caa_dp_mmx;
+
+   op_copy_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_pt_mas_cn_dpan_mmx;
+   op_copy_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_copy_pt_mas_c_dpan_mmx;
+   op_copy_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_copy_pt_mas_can_dpan_mmx;
+   op_copy_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_copy_pt_mas_caa_dpan_mmx;
+}
+#endif
+
+/*-----*/
+
+/* copy_rel mask x color -> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_copy_rel_mas_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm2, mm0)
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               l = 1 + (*d >> 24);
+               MOV_A2R(l, mm1)
+               MUL4_256_R2R(mm2, mm1)
+               MOV_R2P(mm1, *d, mm0)
+               break;
+           default:
+               l++;
+               MOV_A2R(l, mm3)
+               MOV_P2R(*d, mm1, mm0)
+               MOV_RA2R(mm1, mm4)
+               MUL4_256_R2R(mm2, mm4)
+               INTERP_256_R2R(mm3, mm4, mm1, mm5)
+               MOV_R2P(mm1, *d, mm0)
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_copy_rel_mas_cn_dp_mmx _op_copy_rel_mas_c_dp_mmx
+#define _op_copy_rel_mas_can_dp_mmx _op_copy_rel_mas_c_dp_mmx
+#define _op_copy_rel_mas_caa_dp_mmx _op_copy_rel_mas_c_dp_mmx
+
+#define _op_copy_rel_mas_c_dpan_mmx _op_copy_mas_c_dpan_mmx
+#define _op_copy_rel_mas_cn_dpan_mmx _op_copy_mas_cn_dpan_mmx
+#define _op_copy_rel_mas_can_dpan_mmx _op_copy_mas_can_dpan_mmx
+#define _op_copy_rel_mas_caa_dpan_mmx _op_copy_mas_caa_dpan_mmx
+
+static void
+init_copy_rel_mask_color_span_funcs_mmx(void)
+{
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_rel_mas_cn_dp_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_copy_rel_mas_c_dp_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_copy_rel_mas_can_dp_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_copy_rel_mas_caa_dp_mmx;
+
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_mas_cn_dpan_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_copy_rel_mas_c_dpan_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_mas_can_dpan_mmx;
+   op_copy_rel_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_mas_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_copy_rel_pt_mas_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = m + 1;
+       MOV_A2R(ALPHA_255, mm5)
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(s, mm3)
+       MOV_P2R(*d, mm1, mm0)
+       MOV_RA2R(mm1, mm4)
+       MOV_P2R(c, mm2, mm0)
+       MUL4_256_R2R(mm2, mm4)
+       INTERP_256_R2R(mm3, mm4, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_copy_rel_pt_mas_cn_dp_mmx _op_copy_rel_pt_mas_c_dp_mmx
+#define _op_copy_rel_pt_mas_can_dp_mmx _op_copy_rel_pt_mas_c_dp_mmx
+#define _op_copy_rel_pt_mas_caa_dp_mmx _op_copy_rel_pt_mas_c_dp_mmx
+
+#define _op_copy_rel_pt_mas_c_dpan_mmx _op_copy_pt_mas_c_dpan_mmx
+#define _op_copy_rel_pt_mas_cn_dpan_mmx _op_copy_pt_mas_cn_dpan_mmx
+#define _op_copy_rel_pt_mas_can_dpan_mmx _op_copy_pt_mas_can_dpan_mmx
+#define _op_copy_rel_pt_mas_caa_dpan_mmx _op_copy_pt_mas_caa_dpan_mmx
+
+static void
+init_copy_rel_mask_color_pt_funcs_mmx(void)
+{
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_rel_pt_mas_cn_dp_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_copy_rel_pt_mas_c_dp_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_copy_rel_pt_mas_can_dp_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_copy_rel_pt_mas_caa_dp_mmx;
+
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pt_mas_cn_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_copy_rel_pt_mas_c_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pt_mas_can_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pt_mas_caa_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_copy/op_copy_pixel_.c b/src/lib/engines/common/evas_op_copy/op_copy_pixel_.c
new file mode 100644 (file)
index 0000000..2fa31c3
--- /dev/null
@@ -0,0 +1,119 @@
+
+/* copy pixel --> dst */
+
+#ifdef BUILD_C
+static void
+_op_copy_p_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   for (; d < e; d++, s++) {
+      *d = *s;
+   }
+}
+
+#define _op_copy_pan_dp _op_copy_p_dp
+#define _op_copy_pas_dp _op_copy_p_dp
+
+#define _op_copy_p_dpan _op_copy_p_dp
+#define _op_copy_pan_dpan _op_copy_pan_dp
+#define _op_copy_pas_dpan _op_copy_pas_dp
+
+static void
+init_copy_pixel_span_funcs_c(void)
+{
+   op_copy_span_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_copy_p_dp;
+   op_copy_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_copy_pan_dp;
+   op_copy_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_copy_pas_dp;
+
+   op_copy_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_p_dpan;
+   op_copy_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_pan_dpan;
+   op_copy_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_pas_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_copy_pt_p_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+      *d = s;
+}
+
+#define _op_copy_pt_pan_dp _op_copy_pt_p_dp
+#define _op_copy_pt_pas_dp _op_copy_pt_p_dp
+
+#define _op_copy_pt_p_dpan _op_copy_pt_p_dp
+#define _op_copy_pt_pan_dpan _op_copy_pt_pan_dp
+#define _op_copy_pt_pas_dpan _op_copy_pt_pas_dp
+
+static void
+init_copy_pixel_pt_funcs_c(void)
+{
+   op_copy_pt_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_copy_pt_p_dp;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_copy_pt_pan_dp;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_copy_pt_pas_dp;
+
+   op_copy_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_pt_p_dpan;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_pt_pan_dpan;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_pt_pas_dpan;
+}
+#endif
+
+/*-----*/
+
+/* copy_rel pixel --> dst */
+
+#ifdef BUILD_C
+static void
+_op_copy_rel_p_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   for (; d < e; d++, s++) {
+       *d = MUL_SYM(*d >> 24, *s);
+   }
+}
+
+
+#define _op_copy_rel_pas_dp _op_copy_rel_p_dp
+#define _op_copy_rel_pan_dp _op_copy_rel_p_dp
+
+#define _op_copy_rel_p_dpan _op_copy_p_dpan
+#define _op_copy_rel_pan_dpan _op_copy_pan_dpan
+#define _op_copy_rel_pas_dpan _op_copy_pas_dpan
+
+static void
+init_copy_rel_pixel_span_funcs_c(void)
+{
+   op_copy_rel_span_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_copy_rel_p_dp;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_copy_rel_pan_dp;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_copy_rel_pas_dp;
+
+   op_copy_rel_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_rel_p_dpan;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_rel_pan_dpan;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_rel_pas_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_copy_rel_pt_p_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = 1 + (*d >> 24);
+       *d = MUL_256(c, s);
+}
+
+
+#define _op_copy_rel_pt_pan_dp _op_copy_rel_pt_p_dp
+#define _op_copy_rel_pt_pas_dp _op_copy_rel_pt_p_dp
+
+#define _op_copy_rel_pt_p_dpan _op_copy_pt_p_dpan
+#define _op_copy_rel_pt_pan_dpan _op_copy_pt_pan_dpan
+#define _op_copy_rel_pt_pas_dpan _op_copy_pt_pas_dpan
+
+static void
+init_copy_rel_pixel_pt_funcs_c(void)
+{
+   op_copy_rel_pt_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_copy_rel_pt_p_dp;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_copy_rel_pt_pan_dp;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_copy_rel_pt_pas_dp;
+
+   op_copy_rel_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_rel_pt_p_dpan;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_rel_pt_pan_dpan;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_copy_rel_pt_pas_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_.c b/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_.c
new file mode 100644 (file)
index 0000000..f035cbc
--- /dev/null
@@ -0,0 +1,234 @@
+
+/* copy pixel x color --> dst */
+
+#ifdef BUILD_C
+static void
+_op_copy_p_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       *d = MUL4_SYM(c, *s);
+       d++;
+       s++;
+     }
+}
+
+static void
+_op_copy_p_caa_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   c = 1 + (c >> 24);
+   while (d < e) {
+       *d = MUL_256(c, *s);
+       d++;
+       s++;
+     }
+}
+
+
+#define _op_copy_pas_c_dp _op_copy_p_c_dp
+#define _op_copy_pan_c_dp _op_copy_p_c_dp
+#define _op_copy_p_can_dp _op_copy_p_c_dp
+#define _op_copy_pas_can_dp _op_copy_p_can_dp
+#define _op_copy_pan_can_dp _op_copy_p_c_dp
+#define _op_copy_pas_caa_dp _op_copy_p_caa_dp
+#define _op_copy_pan_caa_dp _op_copy_p_caa_dp
+
+#define _op_copy_p_c_dpan _op_copy_p_c_dp
+#define _op_copy_pas_c_dpan _op_copy_pas_c_dp
+#define _op_copy_pan_c_dpan _op_copy_pan_c_dp
+#define _op_copy_p_can_dpan _op_copy_p_can_dp
+#define _op_copy_pas_can_dpan _op_copy_pas_can_dp
+#define _op_copy_pan_can_dpan _op_copy_pan_can_dp
+#define _op_copy_p_caa_dpan _op_copy_p_caa_dp
+#define _op_copy_pas_caa_dpan _op_copy_pas_caa_dp
+#define _op_copy_pan_caa_dpan _op_copy_pan_caa_dp
+
+static void
+init_copy_pixel_color_span_funcs_c(void)
+{
+   op_copy_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_p_c_dp;
+   op_copy_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_pas_c_dp;
+   op_copy_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_pan_c_dp;
+   op_copy_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_p_can_dp;
+   op_copy_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_pas_can_dp;
+   op_copy_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_pan_can_dp;
+   op_copy_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_p_caa_dp;
+   op_copy_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_pas_caa_dp;
+   op_copy_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_pan_caa_dp;
+
+   op_copy_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_p_c_dpan;
+   op_copy_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_pas_c_dpan;
+   op_copy_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_pan_c_dpan;
+   op_copy_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_p_can_dpan;
+   op_copy_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pas_can_dpan;
+   op_copy_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pan_can_dpan;
+   op_copy_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_p_caa_dpan;
+   op_copy_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pas_caa_dpan;
+   op_copy_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pan_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_copy_pt_p_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       *d = MUL4_SYM(c, s);
+}
+
+static void
+_op_copy_pt_p_caa_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       *d = MUL_SYM(c >> 24, s);
+}
+
+
+#define _op_copy_pt_p_can_dp _op_copy_pt_p_c_dp
+#define _op_copy_pt_pan_c_dp _op_copy_pt_p_c_dp
+#define _op_copy_pt_pan_can_dp _op_copy_pt_p_c_dp
+#define _op_copy_pt_pan_caa_dp _op_copy_pt_p_caa_dp
+#define _op_copy_pt_pas_c_dp _op_copy_pt_p_c_dp
+#define _op_copy_pt_pas_can_dp _op_copy_pt_p_can_dp
+#define _op_copy_pt_pas_caa_dp _op_copy_pt_p_caa_dp
+
+#define _op_copy_pt_p_c_dpan _op_copy_pt_p_c_dp
+#define _op_copy_pt_pas_c_dpan _op_copy_pt_pas_c_dp
+#define _op_copy_pt_pan_c_dpan _op_copy_pt_pan_c_dp
+#define _op_copy_pt_p_can_dpan _op_copy_pt_p_can_dp
+#define _op_copy_pt_pas_can_dpan _op_copy_pt_pas_can_dp
+#define _op_copy_pt_pan_can_dpan _op_copy_pt_pan_can_dp
+#define _op_copy_pt_p_caa_dpan _op_copy_pt_p_caa_dp
+#define _op_copy_pt_pas_caa_dpan _op_copy_pt_pas_caa_dp
+#define _op_copy_pt_pan_caa_dpan _op_copy_pt_pan_caa_dp
+
+static void
+init_copy_pixel_color_pt_funcs_c(void)
+{
+   op_copy_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_pt_p_c_dp;
+   op_copy_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_pt_pas_c_dp;
+   op_copy_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_pt_pan_c_dp;
+   op_copy_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_pt_p_can_dp;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_pt_pas_can_dp;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_pt_pan_can_dp;
+   op_copy_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_pt_p_caa_dp;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_pt_pas_caa_dp;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_pt_pan_caa_dp;
+
+   op_copy_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_pt_p_c_dpan;
+   op_copy_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_pt_pas_c_dpan;
+   op_copy_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_pt_pan_c_dpan;
+   op_copy_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pt_p_can_dpan;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pt_pas_can_dpan;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_pt_pan_can_dpan;
+   op_copy_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pt_p_caa_dpan;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pt_pas_caa_dpan;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_pt_pan_caa_dpan;
+}
+#endif
+
+/*-----*/
+
+/* copy_rel pixel x color --> dst */
+
+#ifdef BUILD_C
+static void
+_op_copy_rel_p_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       DATA32 cs = MUL4_SYM(c, *s);
+       *d = MUL_SYM(*d >> 24, cs);
+       d++;
+       s++;
+     }
+}
+
+#define _op_copy_rel_pas_c_dp _op_copy_rel_p_c_dp
+#define _op_copy_rel_pan_c_dp _op_copy_rel_p_c_dp
+#define _op_copy_rel_p_can_dp _op_copy_rel_p_c_dp
+#define _op_copy_rel_pas_can_dp _op_copy_rel_pas_c_dp
+#define _op_copy_rel_pan_can_dp _op_copy_rel_p_c_dp
+#define _op_copy_rel_p_caa_dp _op_copy_rel_p_c_dp
+#define _op_copy_rel_pas_caa_dp _op_copy_rel_p_c_dp
+#define _op_copy_rel_pan_caa_dp _op_copy_rel_p_c_dp
+
+#define _op_copy_rel_p_c_dpan _op_copy_p_c_dpan
+#define _op_copy_rel_pas_c_dpan _op_copy_pas_c_dpan
+#define _op_copy_rel_pan_c_dpan _op_copy_pan_c_dpan
+#define _op_copy_rel_p_can_dpan _op_copy_p_can_dpan
+#define _op_copy_rel_pas_can_dpan _op_copy_pas_can_dpan
+#define _op_copy_rel_pan_can_dpan _op_copy_pan_can_dpan
+#define _op_copy_rel_p_caa_dpan _op_copy_p_caa_dpan
+#define _op_copy_rel_pas_caa_dpan _op_copy_pas_caa_dpan
+#define _op_copy_rel_pan_caa_dpan _op_copy_pan_caa_dpan
+
+static void
+init_copy_rel_pixel_color_span_funcs_c(void)
+{
+   op_copy_rel_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_rel_p_c_dp;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_rel_pas_c_dp;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_rel_pan_c_dp;
+   op_copy_rel_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_p_can_dp;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pas_can_dp;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pan_can_dp;
+   op_copy_rel_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_p_caa_dp;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pas_caa_dp;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pan_caa_dp;
+
+   op_copy_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_p_c_dpan;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pas_c_dpan;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pan_c_dpan;
+   op_copy_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_p_can_dpan;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pas_can_dpan;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pan_can_dpan;
+   op_copy_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_p_caa_dpan;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pas_caa_dpan;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pan_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_copy_rel_pt_p_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = MUL4_SYM(c, s);
+       *d = MUL_SYM(*d >> 24, s);
+}
+
+#define _op_copy_rel_pt_pas_c_dp _op_copy_rel_pt_p_c_dp
+#define _op_copy_rel_pt_pan_c_dp _op_copy_rel_pt_p_c_dp
+#define _op_copy_rel_pt_p_can_dp _op_copy_rel_pt_p_c_dp
+#define _op_copy_rel_pt_pas_can_dp _op_copy_rel_pt_p_can_dp
+#define _op_copy_rel_pt_pan_can_dp _op_copy_rel_pt_p_c_dp
+#define _op_copy_rel_pt_p_caa_dp _op_copy_rel_pt_p_c_dp
+#define _op_copy_rel_pt_pas_caa_dp _op_copy_rel_pt_p_caa_dp
+#define _op_copy_rel_pt_pan_caa_dp _op_copy_rel_pt_p_caa_dp
+
+#define _op_copy_rel_pt_p_c_dpan _op_copy_pt_p_c_dpan
+#define _op_copy_rel_pt_pas_c_dpan _op_copy_pt_pas_c_dpan
+#define _op_copy_rel_pt_pan_c_dpan _op_copy_pt_pan_c_dpan
+#define _op_copy_rel_pt_p_can_dpan _op_copy_pt_p_can_dpan
+#define _op_copy_rel_pt_pas_can_dpan _op_copy_pt_pas_can_dpan
+#define _op_copy_rel_pt_pan_can_dpan _op_copy_pt_pan_can_dpan
+#define _op_copy_rel_pt_p_caa_dpan _op_copy_pt_p_caa_dpan
+#define _op_copy_rel_pt_pas_caa_dpan _op_copy_pt_pas_caa_dpan
+#define _op_copy_rel_pt_pan_caa_dpan _op_copy_pt_pan_caa_dpan
+
+static void
+init_copy_rel_pixel_color_pt_funcs_c(void)
+{
+   op_copy_rel_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_copy_rel_pt_p_c_dp;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_copy_rel_pt_pas_c_dp;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_copy_rel_pt_pan_c_dp;
+   op_copy_rel_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pt_p_can_dp;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pt_pas_can_dp;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_copy_rel_pt_pan_can_dp;
+   op_copy_rel_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pt_p_caa_dp;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pt_pas_caa_dp;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_copy_rel_pt_pan_caa_dp;
+
+   op_copy_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pt_p_c_dpan;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pt_pas_c_dpan;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_copy_rel_pt_pan_c_dpan;
+   op_copy_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_p_can_dpan;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_pas_can_dpan;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_copy_rel_pt_pan_can_dpan;
+   op_copy_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_p_caa_dpan;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_pas_caa_dpan;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_copy_rel_pt_pan_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_i386.c b/src/lib/engines/common/evas_op_copy/op_copy_pixel_color_i386.c
new file mode 100644 (file)
index 0000000..48868c5
--- /dev/null
@@ -0,0 +1,256 @@
+
+/* copy pixel x color --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_copy_p_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm3, mm0)
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e) {
+       MOV_P2R(*s, mm2, mm0)
+       MUL4_SYM_R2R(mm3, mm2, mm5);
+       MOV_R2P(mm2, *d, mm0)
+       s++;  d++;
+     }
+}
+
+
+static void
+_op_copy_p_caa_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   c = 1 + (c >> 24);
+   MOV_A2R(c, mm3)
+   pxor_r2r(mm0, mm0);
+   while (d < e) {
+       MOV_P2R(*s, mm2, mm0)
+       MUL4_256_R2R(mm3, mm2);
+       MOV_R2P(mm2, *d, mm0)
+       s++;  d++;
+     }
+}
+
+
+#define _op_copy_pas_c_dp_mmx _op_copy_p_c_dp_mmx
+#define _op_copy_pan_c_dp_mmx _op_copy_p_c_dp_mmx
+#define _op_copy_p_can_dp_mmx _op_copy_p_c_dp_mmx
+#define _op_copy_pas_can_dp_mmx _op_copy_pas_c_dp_mmx
+#define _op_copy_pan_can_dp_mmx _op_copy_pan_c_dp_mmx
+#define _op_copy_pas_caa_dp_mmx _op_copy_p_caa_dp_mmx
+#define _op_copy_pan_caa_dp_mmx _op_copy_p_caa_dp_mmx
+
+#define _op_copy_p_c_dpan_mmx _op_copy_p_c_dp_mmx
+#define _op_copy_pas_c_dpan_mmx _op_copy_pas_c_dp_mmx
+#define _op_copy_pan_c_dpan_mmx _op_copy_pan_c_dp_mmx
+#define _op_copy_p_can_dpan_mmx _op_copy_p_can_dp_mmx
+#define _op_copy_pas_can_dpan_mmx _op_copy_pas_can_dp_mmx
+#define _op_copy_pan_can_dpan_mmx _op_copy_pan_can_dp_mmx
+#define _op_copy_p_caa_dpan_mmx _op_copy_p_caa_dp_mmx
+#define _op_copy_pas_caa_dpan_mmx _op_copy_pas_caa_dp_mmx
+#define _op_copy_pan_caa_dpan_mmx _op_copy_pan_caa_dp_mmx
+
+static void
+init_copy_pixel_color_span_funcs_mmx(void)
+{
+   op_copy_span_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_copy_p_c_dp_mmx;
+   op_copy_span_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_copy_pas_c_dp_mmx;
+   op_copy_span_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_copy_pan_c_dp_mmx;
+   op_copy_span_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_p_can_dp_mmx;
+   op_copy_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pas_can_dp_mmx;
+   op_copy_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pan_can_dp_mmx;
+   op_copy_span_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_p_caa_dp_mmx;
+   op_copy_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pas_caa_dp_mmx;
+   op_copy_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pan_caa_dp_mmx;
+
+   op_copy_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_p_c_dpan_mmx;
+   op_copy_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pas_c_dpan_mmx;
+   op_copy_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pan_c_dpan_mmx;
+   op_copy_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_p_can_dpan_mmx;
+   op_copy_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pas_can_dpan_mmx;
+   op_copy_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pan_can_dpan_mmx;
+   op_copy_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_p_caa_dpan_mmx;
+   op_copy_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pas_caa_dpan_mmx;
+   op_copy_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pan_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_copy_pt_p_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_255, mm5)
+       MOV_P2R(c, mm2, mm0)
+       MOV_P2R(s, mm2, mm0)
+       MUL4_SYM_R2R(mm3, mm2, mm5);
+       MOV_R2P(mm2, *d, mm0)
+}
+
+#define _op_copy_pt_pas_c_dp_mmx _op_copy_pt_p_c_dp_mmx
+#define _op_copy_pt_pan_c_dp_mmx _op_copy_pt_p_c_dp_mmx
+#define _op_copy_pt_p_can_dp_mmx _op_copy_pt_p_c_dp_mmx
+#define _op_copy_pt_pas_can_dp_mmx _op_copy_pt_p_c_dp_mmx
+#define _op_copy_pt_pan_can_dp_mmx _op_copy_pt_p_c_dp_mmx
+#define _op_copy_pt_p_caa_dp_mmx _op_copy_pt_p_c_dp_mmx
+#define _op_copy_pt_pas_caa_dp_mmx _op_copy_pt_p_c_dp_mmx
+#define _op_copy_pt_pan_caa_dp_mmx _op_copy_pt_p_c_dp_mmx
+
+#define _op_copy_pt_p_c_dpan_mmx _op_copy_pt_p_c_dp_mmx
+#define _op_copy_pt_pas_c_dpan_mmx _op_copy_pt_pas_c_dp_mmx
+#define _op_copy_pt_pan_c_dpan_mmx _op_copy_pt_pan_c_dp_mmx
+#define _op_copy_pt_p_can_dpan_mmx _op_copy_pt_p_can_dp_mmx
+#define _op_copy_pt_pas_can_dpan_mmx _op_copy_pt_pas_can_dp_mmx
+#define _op_copy_pt_pan_can_dpan_mmx _op_copy_pt_pan_can_dp_mmx
+#define _op_copy_pt_p_caa_dpan_mmx _op_copy_pt_p_caa_dp_mmx
+#define _op_copy_pt_pas_caa_dpan_mmx _op_copy_pt_pas_caa_dp_mmx
+#define _op_copy_pt_pan_caa_dpan_mmx _op_copy_pt_pan_caa_dp_mmx
+
+static void
+init_copy_pixel_color_pt_funcs_mmx(void)
+{
+   op_copy_pt_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_copy_pt_p_c_dp_mmx;
+   op_copy_pt_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_copy_pt_pas_c_dp_mmx;
+   op_copy_pt_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_copy_pt_pan_c_dp_mmx;
+   op_copy_pt_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pt_p_can_dp_mmx;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pt_pas_can_dp_mmx;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_pt_pan_can_dp_mmx;
+   op_copy_pt_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pt_p_caa_dp_mmx;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pt_pas_caa_dp_mmx;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_pt_pan_caa_dp_mmx;
+
+   op_copy_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pt_p_c_dpan_mmx;
+   op_copy_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pt_pas_c_dpan_mmx;
+   op_copy_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_pt_pan_c_dpan_mmx;
+   op_copy_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pt_p_can_dpan_mmx;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pt_pas_can_dpan_mmx;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_pt_pan_can_dpan_mmx;
+   op_copy_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pt_p_caa_dpan_mmx;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pt_pas_caa_dpan_mmx;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_pt_pan_caa_dpan_mmx;
+}
+#endif
+
+/*-----*/
+
+/* copy_rel pixel x color --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_copy_rel_p_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm3, mm0)
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e) {
+       MOV_PA2R(*d, mm1)
+       MOV_P2R(*s, mm2, mm0)
+       MUL4_SYM_R2R(mm3, mm2, mm5);
+       MUL4_SYM_R2R(mm2, mm1, mm5);
+       MOV_R2P(mm1, *d, mm0)
+       s++;  d++;
+     }
+}
+
+
+#define _op_copy_rel_pas_c_dp_mmx _op_copy_rel_p_c_dp_mmx
+#define _op_copy_rel_pan_c_dp_mmx _op_copy_rel_p_c_dp_mmx
+#define _op_copy_rel_p_can_dp_mmx _op_copy_rel_p_c_dp_mmx
+#define _op_copy_rel_pas_can_dp_mmx _op_copy_rel_p_c_dp_mmx
+#define _op_copy_rel_pan_can_dp_mmx _op_copy_rel_p_c_dp_mmx
+#define _op_copy_rel_p_caa_dp_mmx _op_copy_rel_p_c_dp_mmx
+#define _op_copy_rel_pas_caa_dp_mmx _op_copy_rel_p_c_dp_mmx
+#define _op_copy_rel_pan_caa_dp_mmx _op_copy_rel_p_c_dp_mmx
+
+#define _op_copy_rel_p_c_dpan_mmx _op_copy_p_c_dpan_mmx
+#define _op_copy_rel_pas_c_dpan_mmx _op_copy_pas_c_dpan_mmx
+#define _op_copy_rel_pan_c_dpan_mmx _op_copy_pan_c_dpan_mmx
+#define _op_copy_rel_p_can_dpan_mmx _op_copy_p_can_dpan_mmx
+#define _op_copy_rel_pas_can_dpan_mmx _op_copy_pas_can_dpan_mmx
+#define _op_copy_rel_pan_can_dpan_mmx _op_copy_pan_can_dpan_mmx
+#define _op_copy_rel_p_caa_dpan_mmx _op_copy_p_caa_dpan_mmx
+#define _op_copy_rel_pas_caa_dpan_mmx _op_copy_pas_caa_dpan_mmx
+#define _op_copy_rel_pan_caa_dpan_mmx _op_copy_pan_caa_dpan_mmx
+
+static void
+init_copy_rel_pixel_color_span_funcs_mmx(void)
+{
+   op_copy_rel_span_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_p_c_dp_mmx;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pas_c_dp_mmx;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pan_c_dp_mmx;
+   op_copy_rel_span_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_p_can_dp_mmx;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pas_can_dp_mmx;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pan_can_dp_mmx;
+   op_copy_rel_span_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_p_caa_dp_mmx;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pas_caa_dp_mmx;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pan_caa_dp_mmx;
+
+   op_copy_rel_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_p_c_dpan_mmx;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pas_c_dpan_mmx;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pan_c_dpan_mmx;
+   op_copy_rel_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_p_can_dpan_mmx;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pas_can_dpan_mmx;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pan_can_dpan_mmx;
+   op_copy_rel_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_p_caa_dpan_mmx;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pas_caa_dpan_mmx;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pan_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_copy_rel_pt_p_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(c, mm3, mm0)
+       MOV_A2R(ALPHA_255, mm5)
+       MOV_PA2R(*d, mm1)
+       MOV_P2R(s, mm2, mm0)
+       MUL4_SYM_R2R(mm3, mm2, mm5);
+       MUL4_SYM_R2R(mm2, mm1, mm5);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+
+#define _op_copy_rel_pt_pas_c_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
+#define _op_copy_rel_pt_pan_c_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
+#define _op_copy_rel_pt_p_can_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
+#define _op_copy_rel_pt_pas_can_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
+#define _op_copy_rel_pt_pan_can_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
+#define _op_copy_rel_pt_p_caa_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
+#define _op_copy_rel_pt_pas_caa_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
+#define _op_copy_rel_pt_pan_caa_dp_mmx _op_copy_rel_pt_p_c_dp_mmx
+
+#define _op_copy_rel_pt_p_c_dpan_mmx _op_copy_pt_p_c_dpan_mmx
+#define _op_copy_rel_pt_pas_c_dpan_mmx _op_copy_pt_pas_c_dpan_mmx
+#define _op_copy_rel_pt_pan_c_dpan_mmx _op_copy_pt_pan_c_dpan_mmx
+#define _op_copy_rel_pt_p_can_dpan_mmx _op_copy_pt_p_can_dpan_mmx
+#define _op_copy_rel_pt_pas_can_dpan_mmx _op_copy_pt_pas_can_dpan_mmx
+#define _op_copy_rel_pt_pan_can_dpan_mmx _op_copy_pt_pan_can_dpan_mmx
+#define _op_copy_rel_pt_p_caa_dpan_mmx _op_copy_pt_p_caa_dpan_mmx
+#define _op_copy_rel_pt_pas_caa_dpan_mmx _op_copy_pt_pas_caa_dpan_mmx
+#define _op_copy_rel_pt_pan_caa_dpan_mmx _op_copy_pt_pan_caa_dpan_mmx
+
+
+static void
+init_copy_rel_pixel_color_pt_funcs_mmx(void)
+{
+   op_copy_rel_pt_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pt_p_c_dp_mmx;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pt_pas_c_dp_mmx;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_copy_rel_pt_pan_c_dp_mmx;
+   op_copy_rel_pt_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pt_p_can_dp_mmx;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pt_pas_can_dp_mmx;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_copy_rel_pt_pan_can_dp_mmx;
+   op_copy_rel_pt_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pt_p_caa_dp_mmx;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pt_pas_caa_dp_mmx;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_copy_rel_pt_pan_caa_dp_mmx;
+
+   op_copy_rel_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pt_p_c_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pt_pas_c_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_copy_rel_pt_pan_c_dpan_mmx;
+   op_copy_rel_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pt_p_can_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pt_pas_can_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_copy_rel_pt_pan_can_dpan_mmx;
+   op_copy_rel_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pt_p_caa_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pt_pas_caa_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_copy_rel_pt_pan_caa_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_copy/op_copy_pixel_i386.c b/src/lib/engines/common/evas_op_copy/op_copy_pixel_i386.c
new file mode 100644 (file)
index 0000000..9c4197c
--- /dev/null
@@ -0,0 +1,132 @@
+
+/* copy pixel --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_copy_p_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l - 15;
+   for (; d < e; d+=16, s+=16) {
+      MOVE_16DWORDS_MMX(s, d);
+   }
+   e+=15;
+   for (; d < e; d++, s++) {
+      *d = *s;
+   }
+}
+
+#define _op_copy_pan_dp_mmx _op_copy_p_dp_mmx
+#define _op_copy_pas_dp_mmx _op_copy_p_dp_mmx
+
+#define _op_copy_p_dpan_mmx _op_copy_p_dp_mmx
+#define _op_copy_pan_dpan_mmx _op_copy_pan_dp_mmx
+#define _op_copy_pas_dpan_mmx _op_copy_pas_dp_mmx
+
+static void
+init_copy_pixel_span_funcs_mmx(void)
+{
+   op_copy_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_copy_p_dp_mmx;
+   op_copy_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_copy_pan_dp_mmx;
+   op_copy_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_copy_pas_dp_mmx;
+
+   op_copy_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_p_dpan_mmx;
+   op_copy_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_pan_dpan_mmx;
+   op_copy_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_pas_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_copy_pt_p_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+      *d = s;
+}
+
+#define _op_copy_pt_pan_dp_mmx _op_copy_pt_p_dp_mmx
+#define _op_copy_pt_pas_dp_mmx _op_copy_pt_p_dp_mmx
+
+#define _op_copy_pt_p_dpan_mmx _op_copy_pt_p_dp_mmx
+#define _op_copy_pt_pan_dpan_mmx _op_copy_pt_pan_dp_mmx
+#define _op_copy_pt_pas_dpan_mmx _op_copy_pt_pas_dp_mmx
+
+static void
+init_copy_pixel_pt_funcs_mmx(void)
+{
+   op_copy_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_copy_pt_p_dp_mmx;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_copy_pt_pan_dp_mmx;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_copy_pt_pas_dp_mmx;
+
+   op_copy_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_pt_p_dpan_mmx;
+   op_copy_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_pt_pan_dpan_mmx;
+   op_copy_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_pt_pas_dpan_mmx;
+}
+#endif
+
+/*-----*/
+
+/* copy_rel pixel --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_copy_rel_p_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+   for (; d < e; d++, s++) {
+       MOV_PA2R(*d, mm1)
+       MOV_P2R(*s, mm2, mm0)
+       MUL4_SYM_R2R(mm2, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+   }
+}
+
+
+#define _op_copy_rel_pas_dp_mmx _op_copy_rel_p_dp_mmx
+#define _op_copy_rel_pan_dp_mmx _op_copy_rel_p_dp_mmx
+
+#define _op_copy_rel_p_dpan_mmx _op_copy_p_dpan_mmx
+#define _op_copy_rel_pan_dpan_mmx _op_copy_pan_dpan_mmx
+#define _op_copy_rel_pas_dpan_mmx _op_copy_pas_dpan_mmx
+
+static void
+init_copy_rel_pixel_span_funcs_mmx(void)
+{
+   op_copy_rel_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_copy_rel_p_dp_mmx;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_copy_rel_pan_dp_mmx;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_copy_rel_pas_dp_mmx;
+
+   op_copy_rel_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_p_dpan_mmx;
+   op_copy_rel_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pan_dpan_mmx;
+   op_copy_rel_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pas_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_copy_rel_pt_p_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = 1 + (*d >> 24);
+       MOV_A2R(c, mm1)
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(s, mm2, mm0)
+       MUL4_256_R2R(mm2, mm1)
+       MOV_R2P(mm1, *d, mm0)
+}
+
+
+#define _op_copy_rel_pt_pan_dp_mmx _op_copy_rel_pt_p_dp_mmx
+#define _op_copy_rel_pt_pas_dp_mmx _op_copy_rel_pt_p_dp_mmx
+
+#define _op_copy_rel_pt_p_dpan_mmx _op_copy_pt_p_dpan_mmx
+#define _op_copy_rel_pt_pan_dpan_mmx _op_copy_pt_pan_dpan_mmx
+#define _op_copy_rel_pt_pas_dpan_mmx _op_copy_pt_pas_dpan_mmx
+
+static void
+init_copy_rel_pixel_pt_funcs_mmx(void)
+{
+   op_copy_rel_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_copy_rel_pt_p_dp_mmx;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_copy_rel_pt_pan_dp_mmx;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_copy_rel_pt_pas_dp_mmx;
+
+   op_copy_rel_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pt_p_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pt_pan_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pt_pas_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_copy/op_copy_pixel_mask_.c b/src/lib/engines/common/evas_op_copy/op_copy_pixel_mask_.c
new file mode 100644 (file)
index 0000000..ecdcd48
--- /dev/null
@@ -0,0 +1,147 @@
+
+/* copy pixel x mask --> dst */
+
+#ifdef BUILD_C
+static void 
+_op_copy_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = *s;
+               break;
+           default:
+               l++;
+               *d = INTERP_256(l, *s, *d);
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+
+#define _op_copy_pan_mas_dp _op_copy_p_mas_dp
+#define _op_copy_pas_mas_dp _op_copy_p_mas_dp
+
+#define _op_copy_p_mas_dpan _op_copy_p_mas_dp
+#define _op_copy_pan_mas_dpan _op_copy_p_mas_dpan
+#define _op_copy_pas_mas_dpan _op_copy_p_mas_dpan
+
+static void
+init_copy_pixel_mask_span_funcs_c(void)
+{
+   op_copy_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_copy_p_mas_dp;
+   op_copy_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_copy_pan_mas_dp;
+   op_copy_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_copy_pas_mas_dp;
+
+   op_copy_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_p_mas_dpan;
+   op_copy_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_pan_mas_dpan;
+   op_copy_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_pas_mas_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_copy_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       *d = INTERP_256(m + 1, s, *d);
+}
+
+#define _op_copy_pt_pan_mas_dp _op_copy_pt_p_mas_dp
+#define _op_copy_pt_pas_mas_dp _op_copy_pt_p_mas_dp
+
+#define _op_copy_pt_p_mas_dpan _op_copy_pt_p_mas_dp
+#define _op_copy_pt_pan_mas_dpan _op_copy_pt_p_mas_dpan
+#define _op_copy_pt_pas_mas_dpan _op_copy_pt_p_mas_dpan
+
+static void
+init_copy_pixel_mask_pt_funcs_c(void)
+{
+   op_copy_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_copy_pt_p_mas_dp;
+   op_copy_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_copy_pt_pan_mas_dp;
+   op_copy_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_copy_pt_pas_mas_dp;
+
+   op_copy_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_pt_p_mas_dpan;
+   op_copy_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_pt_pan_mas_dpan;
+   op_copy_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_pt_pas_mas_dpan;
+}
+#endif
+
+/*-----*/
+
+/* copy_rel pixel x mask --> dst */
+
+#ifdef BUILD_C
+static void 
+_op_copy_rel_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = MUL_SYM(*d >> 24, *s);
+               break;
+           default:
+               c = MUL_SYM(*d >> 24, *s);
+               l++;
+               *d = INTERP_256(l, c, *d);
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+
+#define _op_copy_rel_pan_mas_dp _op_copy_rel_p_mas_dp
+#define _op_copy_rel_pas_mas_dp _op_copy_rel_p_mas_dp
+
+#define _op_copy_rel_p_mas_dpan _op_copy_p_mas_dpan
+#define _op_copy_rel_pan_mas_dpan _op_copy_pan_mas_dpan
+#define _op_copy_rel_pas_mas_dpan _op_copy_pas_mas_dpan
+
+static void
+init_copy_rel_pixel_mask_span_funcs_c(void)
+{
+   op_copy_rel_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_copy_rel_p_mas_dp;
+   op_copy_rel_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_copy_rel_pan_mas_dp;
+   op_copy_rel_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_copy_rel_pas_mas_dp;
+
+   op_copy_rel_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_rel_p_mas_dpan;
+   op_copy_rel_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_rel_pan_mas_dpan;
+   op_copy_rel_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_rel_pas_mas_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void 
+_op_copy_rel_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = MUL_SYM(*d >> 24, s);
+       *d = INTERP_256(m + 1, c, *d);
+}
+
+
+#define _op_copy_rel_pt_pan_mas_dp _op_copy_rel_pt_p_mas_dp
+#define _op_copy_rel_pt_pas_mas_dp _op_copy_rel_pt_p_mas_dp
+
+#define _op_copy_rel_pt_p_mas_dpan _op_copy_pt_p_mas_dpan
+#define _op_copy_rel_pt_pan_mas_dpan _op_copy_pt_pan_mas_dpan
+#define _op_copy_rel_pt_pas_mas_dpan _op_copy_pt_pas_mas_dpan
+
+static void
+init_copy_rel_pixel_mask_pt_funcs_c(void)
+{
+   op_copy_rel_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_copy_rel_pt_p_mas_dp;
+   op_copy_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_copy_rel_pt_pan_mas_dp;
+   op_copy_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_copy_rel_pt_pas_mas_dp;
+
+   op_copy_rel_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_rel_pt_p_mas_dpan;
+   op_copy_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_rel_pt_pan_mas_dpan;
+   op_copy_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_copy_rel_pt_pas_mas_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_copy/op_copy_pixel_mask_i386.c b/src/lib/engines/common/evas_op_copy/op_copy_pixel_mask_i386.c
new file mode 100644 (file)
index 0000000..2bfb85f
--- /dev/null
@@ -0,0 +1,177 @@
+
+/* copy pixel x mask --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_copy_p_mas_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = *s;
+               break;
+           default:
+               l++;
+               MOV_A2R(l, mm3)
+               MOV_P2R(*s, mm2, mm0)
+               MOV_P2R(*d, mm1, mm0)
+               INTERP_256_R2R(mm3, mm2, mm1, mm5);
+               MOV_R2P(mm1, *d, mm0)
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_copy_pan_mas_dp_mmx _op_copy_p_mas_dp_mmx
+#define _op_copy_pas_mas_dp_mmx _op_copy_p_mas_dp_mmx
+
+#define _op_copy_p_mas_dpan_mmx _op_copy_p_mas_dp_mmx
+#define _op_copy_pan_mas_dpan_mmx _op_copy_p_mas_dpan_mmx
+#define _op_copy_pas_mas_dpan_mmx _op_copy_p_mas_dpan_mmx
+
+static void
+init_copy_pixel_mask_span_funcs_mmx(void)
+{
+   op_copy_span_funcs[SP][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_p_mas_dp_mmx;
+   op_copy_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_pan_mas_dp_mmx;
+   op_copy_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_pas_mas_dp_mmx;
+
+   op_copy_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_p_mas_dpan_mmx;
+   op_copy_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_pan_mas_dpan_mmx;
+   op_copy_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_pas_mas_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_copy_pt_p_mas_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = m + 1;
+       MOV_A2R(ALPHA_255, mm5)
+       MOV_A2R(c, mm3)
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(s, mm2, mm0)
+       MOV_P2R(*d, mm1, mm0)
+       INTERP_256_R2R(mm3, mm2, mm1, mm5);
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_copy_pt_pan_mas_dp_mmx _op_copy_pt_p_mas_dp_mmx
+#define _op_copy_pt_pas_mas_dp_mmx _op_copy_pt_p_mas_dp_mmx
+
+#define _op_copy_pt_p_mas_dpan_mmx _op_copy_pt_p_mas_dp_mmx
+#define _op_copy_pt_pan_mas_dpan_mmx _op_copy_pt_p_mas_dpan_mmx
+#define _op_copy_pt_pas_mas_dpan_mmx _op_copy_pt_p_mas_dpan_mmx
+
+static void
+init_copy_pixel_mask_pt_funcs_mmx(void)
+{
+   op_copy_pt_funcs[SP][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_pt_p_mas_dp_mmx;
+   op_copy_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_pt_pan_mas_dp_mmx;
+   op_copy_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_pt_pas_mas_dp_mmx;
+
+   op_copy_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_pt_p_mas_dpan_mmx;
+   op_copy_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_pt_pan_mas_dpan_mmx;
+   op_copy_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_pt_pas_mas_dpan_mmx;
+}
+#endif
+
+/*-----*/
+
+/* copy_rel pixel x mask --> dst */
+
+#ifdef BUILD_MMX
+static void 
+_op_copy_rel_p_mas_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               MOV_P2R(*s, mm2, mm0)
+               MOV_PA2R(*d, mm1)
+               MUL4_SYM_R2R(mm2, mm1, mm5)
+               MOV_R2P(mm1, *d, mm0)
+               break;
+           default:
+               l++;
+               MOV_P2R(*s, mm3, mm0)
+               MOV_P2R(*d, mm1, mm0)
+               MOV_RA2R(mm1, mm2)
+               MUL4_SYM_R2R(mm3, mm2, mm5)
+               MOV_A2R(l, mm3)
+               INTERP_256_R2R(mm3, mm2, mm1, mm5)
+               MOV_R2P(mm1, *d, mm0)
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+#define _op_copy_rel_pan_mas_dp_mmx _op_copy_rel_p_mas_dp_mmx
+#define _op_copy_rel_pas_mas_dp_mmx _op_copy_rel_p_mas_dp_mmx
+
+#define _op_copy_rel_p_mas_dpan_mmx _op_copy_p_mas_dpan_mmx
+#define _op_copy_rel_pan_mas_dpan_mmx _op_copy_pan_mas_dpan_mmx
+#define _op_copy_rel_pas_mas_dpan_mmx _op_copy_pas_mas_dpan_mmx
+
+static void
+init_copy_rel_pixel_mask_span_funcs_mmx(void)
+{
+   op_copy_rel_span_funcs[SP][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_rel_p_mas_dp_mmx;
+   op_copy_rel_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_rel_pan_mas_dp_mmx;
+   op_copy_rel_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_rel_pas_mas_dp_mmx;
+
+   op_copy_rel_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_p_mas_dpan_mmx;
+   op_copy_rel_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pan_mas_dpan_mmx;
+   op_copy_rel_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pas_mas_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void 
+_op_copy_rel_pt_p_mas_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = m + 1;
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_255, mm5)
+       MOV_P2R(s, mm3, mm0)
+       MOV_P2R(*d, mm1, mm0)
+       MOV_RA2R(mm1, mm2)
+       MUL4_SYM_R2R(mm3, mm2, mm5)
+       MOV_A2R(c, mm3)
+       INTERP_256_R2R(mm3, mm2, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+}
+
+
+#define _op_copy_rel_pt_pan_mas_dp_mmx _op_copy_rel_pt_p_mas_dp_mmx
+#define _op_copy_rel_pt_pas_mas_dp_mmx _op_copy_rel_pt_p_mas_dp_mmx
+
+#define _op_copy_rel_pt_p_mas_dpan_mmx _op_copy_pt_p_mas_dpan_mmx
+#define _op_copy_rel_pt_pan_mas_dpan_mmx _op_copy_pt_pan_mas_dpan_mmx
+#define _op_copy_rel_pt_pas_mas_dpan_mmx _op_copy_pt_pas_mas_dpan_mmx
+
+static void
+init_copy_rel_pixel_mask_pt_funcs_mmx(void)
+{
+   op_copy_rel_pt_funcs[SP][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_rel_pt_p_mas_dp_mmx;
+   op_copy_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_rel_pt_pan_mas_dp_mmx;
+   op_copy_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_MMX] = _op_copy_rel_pt_pas_mas_dp_mmx;
+
+   op_copy_rel_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pt_p_mas_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pt_pan_mas_dpan_mmx;
+   op_copy_rel_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_copy_rel_pt_pas_mas_dpan_mmx;
+}
+#endif
+
diff --git a/src/lib/engines/common/evas_op_copy_main_.c b/src/lib/engines/common/evas_op_copy_main_.c
new file mode 100644 (file)
index 0000000..fa028af
--- /dev/null
@@ -0,0 +1,610 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_blend_private.h"
+
+static RGBA_Gfx_Func     op_copy_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+static RGBA_Gfx_Pt_Func  op_copy_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+
+static void op_copy_init(void);
+static void op_copy_shutdown(void);
+
+static RGBA_Gfx_Func op_copy_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_copy_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_copy_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_copy_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_copy_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+static RGBA_Gfx_Pt_Func op_copy_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_copy_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_copy_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_copy_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_copy_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+
+static RGBA_Gfx_Compositor  _composite_copy = { "copy",
+ op_copy_init, op_copy_shutdown,
+ op_copy_pixel_span_get, op_copy_color_span_get,
+ op_copy_pixel_color_span_get, op_copy_mask_color_span_get,
+ op_copy_pixel_mask_span_get,
+ op_copy_pixel_pt_get, op_copy_color_pt_get,
+ op_copy_pixel_color_pt_get, op_copy_mask_color_pt_get,
+ op_copy_pixel_mask_pt_get
+ };
+
+RGBA_Gfx_Compositor  *
+evas_common_gfx_compositor_copy_get(void)
+{
+   return &(_composite_copy);
+}
+
+
+static RGBA_Gfx_Func     op_copy_rel_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+static RGBA_Gfx_Pt_Func  op_copy_rel_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+
+static void op_copy_rel_init(void);
+static void op_copy_rel_shutdown(void);
+
+static RGBA_Gfx_Func op_copy_rel_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_copy_rel_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_copy_rel_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_copy_rel_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_copy_rel_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+static RGBA_Gfx_Pt_Func op_copy_rel_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_copy_rel_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_copy_rel_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_copy_rel_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_copy_rel_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+
+static RGBA_Gfx_Compositor  _composite_copy_rel = { "copy_rel",
+ op_copy_rel_init, op_copy_rel_shutdown,
+ op_copy_rel_pixel_span_get, op_copy_rel_color_span_get,
+ op_copy_rel_pixel_color_span_get, op_copy_rel_mask_color_span_get,
+ op_copy_rel_pixel_mask_span_get,
+ op_copy_rel_pixel_pt_get, op_copy_color_pt_get,
+ op_copy_rel_pixel_color_pt_get, op_copy_rel_mask_color_pt_get,
+ op_copy_rel_pixel_mask_pt_get
+ };
+
+RGBA_Gfx_Compositor  *
+evas_common_gfx_compositor_copy_rel_get(void)
+{
+   return &(_composite_copy_rel);
+}
+
+
+# include "./evas_op_copy/op_copy_pixel_.c"
+# include "./evas_op_copy/op_copy_color_.c"
+# include "./evas_op_copy/op_copy_pixel_color_.c"
+# include "./evas_op_copy/op_copy_pixel_mask_.c"
+# include "./evas_op_copy/op_copy_mask_color_.c"
+//# include "./evas_op_copy/op_copy_pixel_mask_color_.c"
+
+# include "./evas_op_copy/op_copy_pixel_i386.c"
+# include "./evas_op_copy/op_copy_color_i386.c"
+# include "./evas_op_copy/op_copy_pixel_color_i386.c"
+# include "./evas_op_copy/op_copy_pixel_mask_i386.c"
+# include "./evas_op_copy/op_copy_mask_color_i386.c"
+//# include "./evas_op_copy/op_copy_pixel_mask_color_i386.c"
+
+
+static void
+op_copy_init(void)
+{
+   memset(op_copy_span_funcs, 0, sizeof(op_copy_span_funcs));
+   memset(op_copy_pt_funcs, 0, sizeof(op_copy_pt_funcs));
+#ifdef BUILD_MMX
+   init_copy_pixel_span_funcs_mmx();
+   init_copy_pixel_color_span_funcs_mmx();
+   init_copy_pixel_mask_span_funcs_mmx();
+   init_copy_color_span_funcs_mmx();
+   init_copy_mask_color_span_funcs_mmx();
+
+   init_copy_pixel_pt_funcs_mmx();
+   init_copy_pixel_color_pt_funcs_mmx();
+   init_copy_pixel_mask_pt_funcs_mmx();
+   init_copy_color_pt_funcs_mmx();
+   init_copy_mask_color_pt_funcs_mmx();
+#endif
+#ifdef BUILD_C
+   init_copy_pixel_span_funcs_c();
+   init_copy_pixel_color_span_funcs_c();
+   init_copy_pixel_mask_span_funcs_c();
+   init_copy_color_span_funcs_c();
+   init_copy_mask_color_span_funcs_c();
+
+   init_copy_pixel_pt_funcs_c();
+   init_copy_pixel_color_pt_funcs_c();
+   init_copy_pixel_mask_pt_funcs_c();
+   init_copy_color_pt_funcs_c();
+   init_copy_mask_color_pt_funcs_c();
+#endif
+}
+
+static void
+op_copy_shutdown(void)
+{
+}
+
+static RGBA_Gfx_Func
+copy_gfx_span_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Func  func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+    {
+      cpu = CPU_MMX;
+      func = op_copy_span_funcs[s][m][c][d][cpu];
+      if (func) return func;
+    }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_copy_span_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Func
+op_copy_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_copy_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_copy_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_copy_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   return copy_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_copy_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   return copy_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+copy_gfx_pt_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Pt_Func  func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+    {
+      cpu = CPU_MMX;
+      func = op_copy_pt_funcs[s][m][c][d][cpu];
+      if (func) return func;
+    }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_copy_pt_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Pt_Func
+op_copy_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+     {
+       dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_copy_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_copy_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src_flags.alpha)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_copy_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   return copy_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_copy_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if (src_flags.alpha)
+       s = SP;
+   return copy_gfx_pt_func_cpu(s, m, c, d);
+}
+
+
+static void
+op_copy_rel_init(void)
+{
+   memset(op_copy_rel_span_funcs, 0, sizeof(op_copy_rel_span_funcs));
+   memset(op_copy_rel_pt_funcs, 0, sizeof(op_copy_rel_pt_funcs));
+#ifdef BUILD_MMX
+   init_copy_rel_pixel_span_funcs_mmx();
+   init_copy_rel_pixel_color_span_funcs_mmx();
+   init_copy_rel_pixel_mask_span_funcs_mmx();
+   init_copy_rel_color_span_funcs_mmx();
+   init_copy_rel_mask_color_span_funcs_mmx();
+
+   init_copy_rel_pixel_pt_funcs_mmx();
+   init_copy_rel_pixel_color_pt_funcs_mmx();
+   init_copy_rel_pixel_mask_pt_funcs_mmx();
+   init_copy_rel_color_pt_funcs_mmx();
+   init_copy_rel_mask_color_pt_funcs_mmx();
+#endif
+#ifdef BUILD_C
+   init_copy_rel_pixel_span_funcs_c();
+   init_copy_rel_pixel_color_span_funcs_c();
+   init_copy_rel_pixel_mask_span_funcs_c();
+   init_copy_rel_color_span_funcs_c();
+   init_copy_rel_mask_color_span_funcs_c();
+
+   init_copy_rel_pixel_pt_funcs_c();
+   init_copy_rel_pixel_color_pt_funcs_c();
+   init_copy_rel_pixel_mask_pt_funcs_c();
+   init_copy_rel_color_pt_funcs_c();
+   init_copy_rel_mask_color_pt_funcs_c();
+#endif
+}
+
+static void
+op_copy_rel_shutdown(void)
+{
+}
+
+static RGBA_Gfx_Func
+copy_rel_gfx_span_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Func func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+    {
+      cpu = CPU_MMX;
+      func = op_copy_rel_span_funcs[s][m][c][d][cpu];
+      if (func) return func;
+    }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_copy_rel_span_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Func
+op_copy_rel_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_copy_rel_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_copy_rel_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_copy_rel_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   return copy_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_copy_rel_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   return copy_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+copy_rel_gfx_pt_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Pt_Func func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+    {
+      cpu = CPU_MMX;
+      func = op_copy_rel_pt_funcs[s][m][c][d][cpu];
+      if (func) return func;
+    }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_copy_rel_pt_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Pt_Func
+op_copy_rel_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_copy_rel_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_copy_rel_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src_flags.alpha)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return copy_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_copy_rel_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == ((col >> 24) * 0x01010101))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   return copy_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_copy_rel_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if (src_flags.alpha)
+       s = SP;
+   return copy_rel_gfx_pt_func_cpu(s, m, c, d);
+}
diff --git a/src/lib/engines/common/evas_op_mask/.cvsignore b/src/lib/engines/common/evas_op_mask/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/lib/engines/common/evas_op_mask/Makefile.am b/src/lib/engines/common/evas_op_mask/Makefile.am
new file mode 100644 (file)
index 0000000..848c3e4
--- /dev/null
@@ -0,0 +1,11 @@
+EXTRA_DIST = \
+op_mask_color_.c \
+op_mask_color_i386.c \
+op_mask_mask_color_.c \
+op_mask_mask_color_i386.c \
+op_mask_pixel_.c \
+op_mask_pixel_color_.c \
+op_mask_pixel_color_i386.c \
+op_mask_pixel_i386.c \
+op_mask_pixel_mask_.c \
+op_mask_pixel_mask_i386.c
diff --git a/src/lib/engines/common/evas_op_mask/op_mask_color_.c b/src/lib/engines/common/evas_op_mask/op_mask_color_.c
new file mode 100644 (file)
index 0000000..43f5a8f
--- /dev/null
@@ -0,0 +1,51 @@
+
+
+/* mask color --> dst */
+
+#ifdef BUILD_C
+static void
+_op_mask_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   c = 1 + (c >> 24);
+   for (; d < e; d++) {
+       *d = MUL_256(c, *d);
+   }
+}
+
+#define _op_mask_caa_dp _op_mask_c_dp
+
+#define _op_mask_c_dpan _op_mask_c_dp
+#define _op_mask_caa_dpan _op_mask_caa_dp
+
+static void
+init_mask_color_span_funcs_c(void)
+{
+   op_mask_span_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_mask_c_dp;
+   op_mask_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_mask_caa_dp;
+
+   op_mask_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_mask_c_dpan;
+   op_mask_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_mask_pt_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       *d = MUL_SYM(c >> 24, *d);
+}
+
+#define _op_mask_pt_caa_dp _op_mask_pt_c_dp
+
+#define _op_mask_pt_c_dpan _op_mask_pt_c_dp
+#define _op_mask_pt_caa_dpan _op_mask_pt_caa_dp
+
+static void
+init_mask_color_pt_funcs_c(void)
+{
+   op_mask_pt_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_mask_pt_c_dp;
+   op_mask_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_mask_pt_caa_dp;
+
+   op_mask_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_mask_pt_c_dpan;
+   op_mask_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pt_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mask/op_mask_color_i386.c b/src/lib/engines/common/evas_op_mask/op_mask_color_i386.c
new file mode 100644 (file)
index 0000000..0a3e1d7
--- /dev/null
@@ -0,0 +1,59 @@
+
+/* mask color --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_mask_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   c = 1 + (c >> 24);
+   MOV_A2R(c, mm2)
+   pxor_r2r(mm0, mm0);
+   for (; d < e; d++) {
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_256_R2R(mm2, mm1)
+       MOV_R2P(mm1, *d, mm0)
+   }
+}
+
+#define _op_mask_caa_dp_mmx _op_mask_c_dp_mmx
+
+#define _op_mask_c_dpan_mmx _op_mask_c_dp_mmx
+#define _op_mask_caa_dpan_mmx _op_mask_caa_dp_mmx
+
+static void
+init_mask_color_span_funcs_mmx(void)
+{
+   op_mask_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_mask_c_dp_mmx;
+   op_mask_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_mask_caa_dp_mmx;
+
+   op_mask_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_mask_c_dpan_mmx;
+   op_mask_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_mask_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_mask_pt_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = 1 + (c >> 24);
+       MOV_A2R(c, mm2)
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_256_R2R(mm2, mm1)
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_mask_pt_caa_dp_mmx _op_mask_pt_c_dp_mmx
+
+#define _op_mask_pt_c_dpan_mmx _op_mask_pt_c_dp_mmx
+#define _op_mask_pt_caa_dpan_mmx _op_mask_pt_caa_dp_mmx
+
+static void
+init_mask_color_pt_funcs_mmx(void)
+{
+   op_mask_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_mask_pt_c_dp_mmx;
+   op_mask_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_mask_pt_caa_dp_mmx;
+
+   op_mask_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_mask_pt_c_dpan_mmx;
+   op_mask_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_mask_pt_caa_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mask/op_mask_mask_color_.c b/src/lib/engines/common/evas_op_mask/op_mask_mask_color_.c
new file mode 100644 (file)
index 0000000..5c8f2c3
--- /dev/null
@@ -0,0 +1,64 @@
+
+/* mask mask x color -> dst */
+
+#ifdef BUILD_C
+static void
+_op_mask_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   c = 1 + (c >> 24);
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = MUL_256(c, *d);
+               break;
+           default:
+               l = 256 - (((257 - c) * l) >> 8);
+               *d = MUL_256(l, *d);
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_mask_mas_caa_dp _op_mask_mas_c_dp
+
+#define _op_mask_mas_c_dpan _op_mask_mas_c_dp
+#define _op_mask_mas_caa_dpan _op_mask_mas_caa_dp
+
+static void
+init_mask_mask_color_span_funcs_c(void)
+{
+   op_mask_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_mask_mas_c_dp;
+   op_mask_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_mask_mas_caa_dp;
+
+   op_mask_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_mask_mas_c_dpan;
+   op_mask_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_mask_mas_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_mask_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = 256 - (((256 - (c >> 24)) * m) >> 8);
+       *d = MUL_256(c, *d);
+}
+
+#define _op_mask_pt_mas_caa_dp _op_mask_pt_mas_c_dp
+
+#define _op_mask_pt_mas_c_dpan _op_mask_pt_mas_c_dp
+#define _op_mask_pt_mas_caa_dpan _op_mask_pt_mas_caa_dp
+
+static void
+init_mask_mask_color_pt_funcs_c(void)
+{
+   op_mask_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_mask_pt_mas_c_dp;
+   op_mask_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_mask_pt_mas_caa_dp;
+
+   op_mask_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_mask_pt_mas_c_dpan;
+   op_mask_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_mask_pt_mas_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mask/op_mask_mask_color_i386.c b/src/lib/engines/common/evas_op_mask/op_mask_mask_color_i386.c
new file mode 100644 (file)
index 0000000..b1cc043
--- /dev/null
@@ -0,0 +1,14 @@
+
+/* mask mask x color -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_mask_mask_color_span_funcs_mmx(void)
+{}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_mask_mask_color_pt_funcs_mmx(void)
+{}
+#endif
diff --git a/src/lib/engines/common/evas_op_mask/op_mask_pixel_.c b/src/lib/engines/common/evas_op_mask/op_mask_pixel_.c
new file mode 100644 (file)
index 0000000..20dcfa5
--- /dev/null
@@ -0,0 +1,49 @@
+
+/* mask pixel --> dst */
+
+#ifdef BUILD_C
+static void
+_op_mask_p_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   for (; d < e; d++, s++) {
+       *d = MUL_SYM(*s >> 24, *d);
+   }
+}
+
+#define _op_mask_pas_dp _op_mask_p_dp
+
+#define _op_mask_p_dpan _op_mask_p_dp
+#define _op_mask_pas_dpan _op_mask_pas_dp
+
+static void
+init_mask_pixel_span_funcs_c(void)
+{
+   op_mask_span_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_mask_p_dp;
+   op_mask_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_mask_pas_dp;
+
+   op_mask_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_mask_p_dpan;
+   op_mask_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_mask_pas_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_mask_pt_p_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       *d = MUL_SYM(s >> 24, *d);
+}
+
+#define _op_mask_pt_pas_dp _op_mask_pt_p_dp
+
+#define _op_mask_pt_p_dpan _op_mask_pt_p_dp
+#define _op_mask_pt_pas_dpan _op_mask_pt_pas_dp
+
+static void
+init_mask_pixel_pt_funcs_c(void)
+{
+   op_mask_pt_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_mask_pt_p_dp;
+   op_mask_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_mask_pt_pas_dp;
+
+   op_mask_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_mask_pt_p_dpan;
+   op_mask_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_mask_pt_pas_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mask/op_mask_pixel_color_.c b/src/lib/engines/common/evas_op_mask/op_mask_pixel_color_.c
new file mode 100644 (file)
index 0000000..a381f6d
--- /dev/null
@@ -0,0 +1,101 @@
+
+/* mask pixel x color --> dst */
+
+#ifdef BUILD_C
+static void
+_op_mask_p_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   l = 1 + (c >> 24);
+   while (d < e) {
+       c = 1 + ((l * (*s >> 24)) >> 8);
+       *d = MUL_256(c, *d);
+       s++;  d++;
+     }
+}
+
+#define _op_mask_pas_c_dp _op_mask_p_c_dp
+#define _op_mask_pan_c_dp _op_mask_p_c_dp
+#define _op_mask_p_can_dp _op_mask_p_c_dp
+#define _op_mask_pas_can_dp _op_mask_p_c_dp
+#define _op_mask_p_caa_dp _op_mask_p_c_dp
+#define _op_mask_pas_caa_dp _op_mask_p_c_dp
+#define _op_mask_pan_caa_dp _op_mask_p_c_dp
+
+#define _op_mask_p_c_dpan _op_mask_p_c_dp
+#define _op_mask_pas_c_dpan _op_mask_p_c_dp
+#define _op_mask_pan_c_dpan _op_mask_p_c_dp
+#define _op_mask_p_can_dpan _op_mask_p_c_dp
+#define _op_mask_pas_can_dpan _op_mask_p_c_dp
+#define _op_mask_p_caa_dpan _op_mask_p_c_dp
+#define _op_mask_pas_caa_dpan _op_mask_p_c_dp
+#define _op_mask_pan_caa_dpan _op_mask_p_c_dp
+
+static void
+init_mask_pixel_color_span_funcs_c(void)
+{
+   op_mask_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_mask_p_c_dp;
+   op_mask_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_mask_pas_c_dp;
+   op_mask_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_mask_pan_c_dp;
+   op_mask_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_mask_p_can_dp;
+   op_mask_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_mask_pas_can_dp;
+   op_mask_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_mask_p_caa_dp;
+   op_mask_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_mask_pas_caa_dp;
+   op_mask_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_mask_pan_caa_dp;
+
+   op_mask_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_mask_p_c_dpan;
+   op_mask_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_mask_pas_c_dpan;
+   op_mask_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_mask_pan_c_dpan;
+   op_mask_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_mask_p_can_dpan;
+   op_mask_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_mask_pas_can_dpan;
+   op_mask_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_p_caa_dpan;
+   op_mask_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pas_caa_dpan;
+   op_mask_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pan_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_mask_pt_p_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = 1 + ((((c >> 24) * (s >> 24)) + 255) >> 8);
+       *d = MUL_256(c, *d);
+}
+
+#define _op_mask_pt_pas_c_dp _op_mask_pt_p_c_dp
+#define _op_mask_pt_pan_c_dp _op_mask_pt_p_c_dp
+#define _op_mask_pt_p_can_dp _op_mask_pt_p_c_dp
+#define _op_mask_pt_pas_can_dp _op_mask_pt_p_c_dp
+#define _op_mask_pt_p_caa_dp _op_mask_pt_p_c_dp
+#define _op_mask_pt_pas_caa_dp _op_mask_pt_p_c_dp
+#define _op_mask_pt_pan_caa_dp _op_mask_pt_p_c_dp
+
+#define _op_mask_pt_p_c_dpan _op_mask_pt_p_c_dp
+#define _op_mask_pt_pas_c_dpan _op_mask_pt_p_c_dp
+#define _op_mask_pt_pan_c_dpan _op_mask_pt_p_c_dp
+#define _op_mask_pt_p_can_dpan _op_mask_pt_p_c_dp
+#define _op_mask_pt_pas_can_dpan _op_mask_pt_p_c_dp
+#define _op_mask_pt_p_caa_dpan _op_mask_pt_p_c_dp
+#define _op_mask_pt_pas_caa_dpan _op_mask_pt_p_c_dp
+#define _op_mask_pt_pan_caa_dpan _op_mask_pt_p_c_dp
+
+static void
+init_mask_pixel_color_pt_funcs_c(void)
+{
+   op_mask_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_mask_pt_p_c_dp;
+   op_mask_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_mask_pt_pas_c_dp;
+   op_mask_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_mask_pt_pan_c_dp;
+   op_mask_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_mask_pt_p_can_dp;
+   op_mask_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_mask_pt_pas_can_dp;
+   op_mask_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_mask_pt_p_caa_dp;
+   op_mask_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_mask_pt_pas_caa_dp;
+   op_mask_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_mask_pt_pan_caa_dp;
+
+   op_mask_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_mask_pt_p_c_dpan;
+   op_mask_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_mask_pt_pas_c_dpan;
+   op_mask_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_mask_pt_pan_c_dpan;
+   op_mask_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_mask_pt_p_can_dpan;
+   op_mask_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_mask_pt_pas_can_dpan;
+   op_mask_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pt_p_caa_dpan;
+   op_mask_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pt_pas_caa_dpan;
+   op_mask_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_mask_pt_pan_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mask/op_mask_pixel_color_i386.c b/src/lib/engines/common/evas_op_mask/op_mask_pixel_color_i386.c
new file mode 100644 (file)
index 0000000..8f6c89d
--- /dev/null
@@ -0,0 +1,14 @@
+
+/* mask pixel x color --> dst */
+
+#ifdef BUILD_MMX
+static void
+init_mask_pixel_color_span_funcs_mmx(void)
+{ }
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_mask_pixel_color_pt_funcs_mmx(void)
+{ }
+#endif
diff --git a/src/lib/engines/common/evas_op_mask/op_mask_pixel_i386.c b/src/lib/engines/common/evas_op_mask/op_mask_pixel_i386.c
new file mode 100644 (file)
index 0000000..76be59e
--- /dev/null
@@ -0,0 +1,59 @@
+
+/* mask pixel --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_mask_p_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   MOV_A2R(ALPHA_255, mm5)
+   pxor_r2r(mm0, mm0);
+   for (; d < e; d++) {
+       MOV_P2R(*d, mm1, mm0)
+       MOV_PA2R(*s, mm2)
+       MUL4_SYM_R2R(mm2, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+   }
+}
+
+#define _op_mask_pas_dp_mmx _op_mask_p_dp_mmx
+
+#define _op_mask_p_dpan_mmx _op_mask_p_dp_mmx
+#define _op_mask_pas_dpan_mmx _op_mask_pas_dp_mmx
+
+static void
+init_mask_pixel_span_funcs_mmx(void)
+{
+   op_mask_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_mask_p_dp_mmx;
+   op_mask_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_mask_pas_dp_mmx;
+
+   op_mask_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_mask_p_dpan_mmx;
+   op_mask_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_mask_pas_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_mask_pt_p_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       MOV_A2R(ALPHA_255, mm5)
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(*d, mm1, mm0)
+       MOV_PA2R(s, mm2)
+       MUL4_SYM_R2R(mm2, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_mask_pt_pas_dp_mmx _op_mask_pt_p_dp_mmx
+
+#define _op_mask_pt_p_dpan_mmx _op_mask_pt_p_dp_mmx
+#define _op_mask_pt_pas_dpan_mmx _op_mask_pt_pas_dp_mmx
+
+static void
+init_mask_pixel_pt_funcs_mmx(void)
+{
+   op_mask_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_mask_pt_p_dp_mmx;
+   op_mask_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_mask_pt_pas_dp_mmx;
+
+   op_mask_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_mask_pt_p_dpan_mmx;
+   op_mask_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_mask_pt_pas_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mask/op_mask_pixel_mask_.c b/src/lib/engines/common/evas_op_mask/op_mask_pixel_mask_.c
new file mode 100644 (file)
index 0000000..add2719
--- /dev/null
@@ -0,0 +1,63 @@
+
+/* mask pixel x mask --> dst */
+
+#ifdef BUILD_C
+static void 
+_op_mask_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       l = *m;
+       switch(l)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = MUL_SYM(*s >> 24, *d);
+               break;
+           default:
+               l = 256 - (((256 - (*s >> 24)) * l) >> 8);
+               *d = MUL_256(l, *d);
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+#define _op_mask_pas_mas_dp _op_mask_p_mas_dp
+
+#define _op_mask_p_mas_dpan _op_mask_p_mas_dp
+#define _op_mask_pas_mas_dpan _op_mask_pas_mas_dp
+
+static void
+init_mask_pixel_mask_span_funcs_c(void)
+{
+   op_mask_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_mask_p_mas_dp;
+   op_mask_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_mask_pas_mas_dp;
+
+   op_mask_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_mask_p_mas_dpan;
+   op_mask_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_mask_pas_mas_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void 
+_op_mask_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = 256 - (((256 - (s >> 24)) * m) >> 8);
+       *d = MUL_256(s, *d);
+}
+
+#define _op_mask_pt_pas_mas_dp _op_mask_pt_p_mas_dp
+
+#define _op_mask_pt_p_mas_dpan _op_mask_pt_p_mas_dp
+#define _op_mask_pt_pas_mas_dpan _op_mask_pt_pas_mas_dp
+
+static void
+init_mask_pixel_mask_pt_funcs_c(void)
+{
+   op_mask_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_mask_pt_p_mas_dp;
+   op_mask_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_mask_pt_pas_mas_dp;
+
+   op_mask_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_mask_pt_p_mas_dpan;
+   op_mask_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_mask_pt_pas_mas_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mask/op_mask_pixel_mask_i386.c b/src/lib/engines/common/evas_op_mask/op_mask_pixel_mask_i386.c
new file mode 100644 (file)
index 0000000..285ebbc
--- /dev/null
@@ -0,0 +1,14 @@
+
+/* mask pixel x mask --> dst */
+
+#ifdef BUILD_MMX
+static void
+init_mask_pixel_mask_span_funcs_mmx(void)
+{ }
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_mask_pixel_mask_pt_funcs_mmx(void)
+{ }
+#endif
diff --git a/src/lib/engines/common/evas_op_mask_main_.c b/src/lib/engines/common/evas_op_mask_main_.c
new file mode 100644 (file)
index 0000000..1d0b529
--- /dev/null
@@ -0,0 +1,309 @@
+#include "evas_common.h"
+
+static RGBA_Gfx_Func     op_mask_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+static RGBA_Gfx_Pt_Func  op_mask_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+
+static void op_mask_init(void);
+static void op_mask_shutdown(void);
+
+static RGBA_Gfx_Func op_mask_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_mask_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_mask_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_mask_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+static RGBA_Gfx_Pt_Func op_mask_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_mask_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_mask_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_mask_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+
+static RGBA_Gfx_Compositor  _composite_mask = { "mask",
+ op_mask_init, op_mask_shutdown,
+ op_mask_pixel_span_get, op_mask_color_span_get,
+ op_mask_pixel_color_span_get, op_mask_mask_color_span_get,
+ op_mask_pixel_mask_span_get,
+ op_mask_pixel_pt_get, op_mask_color_pt_get,
+ op_mask_pixel_color_pt_get, op_mask_mask_color_pt_get,
+ op_mask_pixel_mask_pt_get
+ };
+
+RGBA_Gfx_Compositor  *
+evas_common_gfx_compositor_mask_get(void)
+{
+   return &(_composite_mask);
+}
+
+
+# include "./evas_op_mask/op_mask_pixel_.c"
+# include "./evas_op_mask/op_mask_color_.c"
+# include "./evas_op_mask/op_mask_pixel_color_.c"
+# include "./evas_op_mask/op_mask_pixel_mask_.c"
+# include "./evas_op_mask/op_mask_mask_color_.c"
+//# include "./evas_op_mask/op_mask_pixel_mask_color_.c"
+
+# include "./evas_op_mask/op_mask_pixel_i386.c"
+# include "./evas_op_mask/op_mask_color_i386.c"
+# include "./evas_op_mask/op_mask_pixel_color_i386.c"
+# include "./evas_op_mask/op_mask_pixel_mask_i386.c"
+# include "./evas_op_mask/op_mask_mask_color_i386.c"
+//# include "./evas_op_mask/op_mask_pixel_mask_color_i386.c"
+
+
+static void
+op_mask_init(void)
+{
+   memset(op_mask_span_funcs, 0, sizeof(op_mask_span_funcs));
+   memset(op_mask_pt_funcs, 0, sizeof(op_mask_pt_funcs));
+#ifdef BUILD_MMX
+   init_mask_pixel_span_funcs_mmx();
+   init_mask_pixel_color_span_funcs_mmx();
+   init_mask_pixel_mask_span_funcs_mmx();
+   init_mask_color_span_funcs_mmx();
+   init_mask_mask_color_span_funcs_mmx();
+
+   init_mask_pixel_pt_funcs_mmx();
+   init_mask_pixel_color_pt_funcs_mmx();
+   init_mask_pixel_mask_pt_funcs_mmx();
+   init_mask_color_pt_funcs_mmx();
+   init_mask_mask_color_pt_funcs_mmx();
+#endif
+#ifdef BUILD_C
+   init_mask_pixel_span_funcs_c();
+   init_mask_pixel_color_span_funcs_c();
+   init_mask_pixel_mask_span_funcs_c();
+   init_mask_color_span_funcs_c();
+   init_mask_mask_color_span_funcs_c();
+
+   init_mask_pixel_pt_funcs_c();
+   init_mask_pixel_color_pt_funcs_c();
+   init_mask_pixel_mask_pt_funcs_c();
+   init_mask_color_pt_funcs_c();
+   init_mask_mask_color_pt_funcs_c();
+#endif
+}
+
+static void
+op_mask_shutdown(void)
+{
+}
+
+static RGBA_Gfx_Func
+mask_gfx_span_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Func func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+    {
+      cpu = CPU_MMX;
+      func = op_mask_span_funcs[s][m][c][d][cpu];
+      if (func) return func;
+    }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_mask_span_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Func
+op_mask_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mask_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mask_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_mask_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mask_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_mask_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   return mask_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_mask_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   return mask_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+mask_gfx_pt_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Pt_Func func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+    {
+      cpu = CPU_MMX;
+      func = op_mask_pt_funcs[s][m][c][d][cpu];
+      if (func) return func;
+    }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_mask_pt_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Pt_Func
+op_mask_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+     {
+       dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mask_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mask_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_mask_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src_flags.alpha)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mask_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_mask_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   return mask_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_mask_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if (src_flags.alpha)
+       s = SP;
+   return mask_gfx_pt_func_cpu(s, m, c, d);
+}
diff --git a/src/lib/engines/common/evas_op_mul/.cvsignore b/src/lib/engines/common/evas_op_mul/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/lib/engines/common/evas_op_mul/Makefile.am b/src/lib/engines/common/evas_op_mul/Makefile.am
new file mode 100644 (file)
index 0000000..23a911b
--- /dev/null
@@ -0,0 +1,11 @@
+EXTRA_DIST = \
+op_mul_color_.c \
+op_mul_color_i386.c \
+op_mul_mask_color_.c \
+op_mul_mask_color_i386.c \
+op_mul_pixel_.c \
+op_mul_pixel_color_.c \
+op_mul_pixel_color_i386.c \
+op_mul_pixel_i386.c \
+op_mul_pixel_mask_.c \
+op_mul_pixel_mask_i386.c
diff --git a/src/lib/engines/common/evas_op_mul/op_mul_color_.c b/src/lib/engines/common/evas_op_mul/op_mul_color_.c
new file mode 100644 (file)
index 0000000..da26658
--- /dev/null
@@ -0,0 +1,66 @@
+
+/* mul color --> dst */
+
+#ifdef BUILD_C
+static void
+_op_mul_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   for (; d < e; d++) {
+      *d = MUL4_SYM(c, *d);
+   }
+}
+
+static void
+_op_mul_caa_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   c = 1 + (c >> 24);
+   for (; d < e; d++) {
+      *d = MUL_256(c, *d);
+   }
+}
+
+#define _op_mul_can_dp _op_mul_c_dp
+
+#define _op_mul_c_dpan _op_mul_c_dp
+#define _op_mul_can_dpan _op_mul_can_dp
+#define _op_mul_caa_dpan _op_mul_caa_dp
+
+static void
+init_mul_color_span_funcs_c(void)
+{
+   op_mul_span_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_mul_c_dp;
+   op_mul_span_funcs[SP_N][SM_N][SC_AN][DP][CPU_C] = _op_mul_can_dp;
+   op_mul_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_mul_caa_dp;
+
+   op_mul_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_mul_c_dpan;
+   op_mul_span_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_can_dpan;
+   op_mul_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_mul_pt_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       *d = MUL4_SYM(c, *d);
+}
+
+#define _op_mul_pt_can_dp _op_mul_pt_c_dp
+#define _op_mul_pt_caa_dp _op_mul_pt_c_dp
+
+#define _op_mul_pt_c_dpan _op_mul_pt_c_dp
+#define _op_mul_pt_can_dpan _op_mul_pt_can_dp
+#define _op_mul_pt_caa_dpan _op_mul_pt_caa_dp
+
+static void
+init_mul_color_pt_funcs_c(void)
+{
+   op_mul_pt_funcs[SP_N][SM_N][SC][DP][CPU_C] = _op_mul_pt_c_dp;
+   op_mul_pt_funcs[SP_N][SM_N][SC_AN][DP][CPU_C] = _op_mul_pt_can_dp;
+   op_mul_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_C] = _op_mul_pt_caa_dp;
+
+   op_mul_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_C] = _op_mul_pt_c_dpan;
+   op_mul_pt_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pt_can_dpan;
+   op_mul_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pt_caa_dpan;
+}
+#endif
+
diff --git a/src/lib/engines/common/evas_op_mul/op_mul_color_i386.c b/src/lib/engines/common/evas_op_mul/op_mul_color_i386.c
new file mode 100644 (file)
index 0000000..3b0c941
--- /dev/null
@@ -0,0 +1,67 @@
+
+/* mul color --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_mul_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+   MOV_P2R(c, mm2, mm0)
+   for (; d < e; d++) {
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_SYM_R2R(mm2, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+   }
+}
+
+#define _op_mul_can_dp_mmx _op_mul_c_dp_mmx
+#define _op_mul_caa_dp_mmx _op_mul_c_dp_mmx
+
+#define _op_mul_c_dpan_mmx _op_mul_c_dp_mmx
+#define _op_mul_can_dpan_mmx _op_mul_can_dp_mmx
+#define _op_mul_caa_dpan_mmx _op_mul_caa_dp_mmx
+
+static void
+init_mul_color_span_funcs_mmx(void)
+{
+   op_mul_span_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_mul_c_dp_mmx;
+   op_mul_span_funcs[SP_N][SM_N][SC_AN][DP][CPU_MMX] = _op_mul_can_dp_mmx;
+   op_mul_span_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_mul_caa_dp_mmx;
+
+   op_mul_span_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_mul_c_dpan_mmx;
+   op_mul_span_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_mul_can_dpan_mmx;
+   op_mul_span_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_mul_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_mul_pt_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_255, mm5)
+       MOV_P2R(c, mm2, mm0)
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_SYM_R2R(mm2, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_mul_pt_caa_dp_mmx _op_mul_pt_c_dp_mmx
+#define _op_mul_pt_can_dp_mmx _op_mul_pt_c_dp_mmx
+
+#define _op_mul_pt_c_dpan_mmx _op_mul_pt_c_dp_mmx
+#define _op_mul_pt_can_dpan_mmx _op_mul_pt_can_dp_mmx
+#define _op_mul_pt_caa_dpan_mmx _op_mul_pt_caa_dp_mmx
+
+static void
+init_mul_color_pt_funcs_mmx(void)
+{
+   op_mul_pt_funcs[SP_N][SM_N][SC][DP][CPU_MMX] = _op_mul_pt_c_dp_mmx;
+   op_mul_pt_funcs[SP_N][SM_N][SC_AN][DP][CPU_MMX] = _op_mul_pt_can_dp_mmx;
+   op_mul_pt_funcs[SP_N][SM_N][SC_AA][DP][CPU_MMX] = _op_mul_pt_caa_dp_mmx;
+
+   op_mul_pt_funcs[SP_N][SM_N][SC][DP_AN][CPU_MMX] = _op_mul_pt_c_dpan_mmx;
+   op_mul_pt_funcs[SP_N][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_mul_pt_can_dpan_mmx;
+   op_mul_pt_funcs[SP_N][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_mul_pt_caa_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mul/op_mul_mask_color_.c b/src/lib/engines/common/evas_op_mul/op_mul_mask_color_.c
new file mode 100644 (file)
index 0000000..687fcc7
--- /dev/null
@@ -0,0 +1,73 @@
+
+/* mul mask x color -> dst */
+
+#ifdef BUILD_C
+static void
+_op_mul_mas_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l, nc = ~c;
+   while (d < e)
+     {
+       DATA32 a = *m;
+       switch(a)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = MUL4_SYM(c, *d);
+               break;
+           default:
+               a = ~MUL_SYM(a, nc);
+               *d = MUL4_SYM(a, *d);
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_mul_mas_can_dp _op_mul_mas_c_dp
+#define _op_mul_mas_caa_dp _op_mul_mas_c_dp
+
+#define _op_mul_mas_c_dpan _op_mul_mas_c_dp
+#define _op_mul_mas_can_dpan _op_mul_mas_can_dp
+#define _op_mul_mas_caa_dpan _op_mul_mas_caa_dp
+
+static void
+init_mul_mask_color_span_funcs_c(void)
+{
+   op_mul_span_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_mul_mas_c_dp;
+   op_mul_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_mul_mas_can_dp;
+   op_mul_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_mul_mas_caa_dp;
+
+   op_mul_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_mul_mas_c_dpan;
+   op_mul_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_mul_mas_can_dpan;
+   op_mul_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_mul_mas_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_mul_pt_mas_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       c = ~c;
+       c = ~MUL_SYM(m, c);
+       *d = MUL4_SYM(c, *d);
+}
+
+#define _op_mul_pt_mas_can_dp _op_mul_pt_mas_c_dp
+#define _op_mul_pt_mas_caa_dp _op_mul_pt_mas_c_dp
+
+#define _op_mul_pt_mas_c_dpan _op_mul_pt_mas_c_dp
+#define _op_mul_pt_mas_can_dpan _op_mul_pt_mas_can_dp
+#define _op_mul_pt_mas_caa_dpan _op_mul_pt_mas_caa_dp
+
+static void
+init_mul_mask_color_pt_funcs_c(void)
+{
+   op_mul_pt_funcs[SP_N][SM_AS][SC][DP][CPU_C] = _op_mul_pt_mas_c_dp;
+   op_mul_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_C] = _op_mul_pt_mas_can_dp;
+   op_mul_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_C] = _op_mul_pt_mas_caa_dp;
+
+   op_mul_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_C] = _op_mul_pt_mas_c_dpan;
+   op_mul_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_C] = _op_mul_pt_mas_can_dpan;
+   op_mul_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_C] = _op_mul_pt_mas_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mul/op_mul_mask_color_i386.c b/src/lib/engines/common/evas_op_mul/op_mul_mask_color_i386.c
new file mode 100644 (file)
index 0000000..8fd486e
--- /dev/null
@@ -0,0 +1,93 @@
+
+/* mul mask x color -> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_mul_mas_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   MOV_P2R(c, mm2, mm0)
+   c = ~c;
+   MOV_P2R(c, mm3, mm0)
+   MOV_A2R(ALPHA_255, mm5)
+   pxor_r2r(mm0, mm0);
+   while (d < e) {
+       DATA32 a = *m;
+       switch(a)
+         {
+           case 0:
+               break;
+           case 255:
+               MOV_P2R(*d, mm1, mm0)
+               MUL4_SYM_R2R(mm2, mm1, mm5)
+               MOV_R2P(mm1, *d, mm0)
+               break;
+           default:
+               a++;
+               MOV_A2R(a, mm1)
+               MUL4_256_R2R(mm3, mm1)
+               movq_r2r(mm5, mm4);
+               psubw_r2r(mm1, mm4);
+               MOV_P2R(*d, mm1, mm0)
+               MUL4_SYM_R2R(mm4, mm1, mm5)
+               MOV_R2P(mm1, *d, mm0)
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_mul_mas_can_dp_mmx _op_mul_mas_c_dp_mmx
+#define _op_mul_mas_caa_dp_mmx _op_mul_mas_c_dp_mmx
+
+#define _op_mul_mas_c_dpan_mmx _op_mul_mas_c_dp_mmx
+#define _op_mul_mas_can_dpan_mmx _op_mul_mas_can_dp_mmx
+#define _op_mul_mas_caa_dpan_mmx _op_mul_mas_caa_dp_mmx
+
+static void
+init_mul_mask_color_span_funcs_mmx(void)
+{
+   op_mul_span_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_mul_mas_c_dp_mmx;
+   op_mul_span_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_mul_mas_can_dp_mmx;
+   op_mul_span_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_mul_mas_caa_dp_mmx;
+
+   op_mul_span_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_mul_mas_c_dpan_mmx;
+   op_mul_span_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_mul_mas_can_dpan_mmx;
+   op_mul_span_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_mul_mas_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_mul_pt_mas_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = m + 1;
+       c = ~c;
+       MOV_P2R(c, mm3, mm0)
+       MOV_A2R(ALPHA_255, mm4)
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(s, mm1)
+       MUL4_256_R2R(mm3, mm1)
+       psubw_r2r(mm1, mm4);
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_SYM_R2R(mm4, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_mul_pt_mas_can_dp_mmx _op_mul_pt_mas_c_dp_mmx
+#define _op_mul_pt_mas_caa_dp_mmx _op_mul_pt_mas_c_dp_mmx
+
+#define _op_mul_pt_mas_c_dpan_mmx _op_mul_pt_mas_c_dp_mmx
+#define _op_mul_pt_mas_can_dpan_mmx _op_mul_pt_mas_can_dp_mmx
+#define _op_mul_pt_mas_caa_dpan_mmx _op_mul_pt_mas_caa_dp_mmx
+
+static void
+init_mul_mask_color_pt_funcs_mmx(void)
+{
+   op_mul_pt_funcs[SP_N][SM_AS][SC][DP][CPU_MMX] = _op_mul_pt_mas_c_dp_mmx;
+   op_mul_pt_funcs[SP_N][SM_AS][SC_AN][DP][CPU_MMX] = _op_mul_pt_mas_can_dp_mmx;
+   op_mul_pt_funcs[SP_N][SM_AS][SC_AA][DP][CPU_MMX] = _op_mul_pt_mas_caa_dp_mmx;
+
+   op_mul_pt_funcs[SP_N][SM_AS][SC][DP_AN][CPU_MMX] = _op_mul_pt_mas_c_dpan_mmx;
+   op_mul_pt_funcs[SP_N][SM_AS][SC_AN][DP_AN][CPU_MMX] = _op_mul_pt_mas_can_dpan_mmx;
+   op_mul_pt_funcs[SP_N][SM_AS][SC_AA][DP_AN][CPU_MMX] = _op_mul_pt_mas_caa_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mul/op_mul_pixel_.c b/src/lib/engines/common/evas_op_mul/op_mul_pixel_.c
new file mode 100644 (file)
index 0000000..1beb0cf
--- /dev/null
@@ -0,0 +1,57 @@
+
+/* mul pixel --> dst */
+
+#ifdef BUILD_C
+static void
+_op_mul_p_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   for (; d < e; d++, s++) {
+      *d = MUL4_SYM(*s, *d);
+   }
+}
+
+#define _op_mul_pas_dp _op_mul_p_dp
+#define _op_mul_pan_dp _op_mul_p_dp
+
+#define _op_mul_p_dpan _op_mul_p_dp
+#define _op_mul_pas_dpan _op_mul_pas_dp
+#define _op_mul_pan_dpan _op_mul_pan_dp
+
+static void
+init_mul_pixel_span_funcs_c(void)
+{
+   op_mul_span_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_mul_p_dp;
+   op_mul_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_mul_pas_dp;
+   op_mul_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_mul_pan_dp;
+
+   op_mul_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_mul_p_dpan;
+   op_mul_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_mul_pas_dpan;
+   op_mul_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_mul_pan_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_mul_pt_p_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+      *d = MUL4_SYM(s, *d);
+}
+
+#define _op_mul_pt_pas_dp _op_mul_pt_p_dp
+#define _op_mul_pt_pan_dp _op_mul_pt_p_dp
+
+#define _op_mul_pt_p_dpan _op_mul_pt_p_dp
+#define _op_mul_pt_pan_dpan _op_mul_pt_pan_dp
+#define _op_mul_pt_pas_dpan _op_mul_pt_pas_dp
+
+static void
+init_mul_pixel_pt_funcs_c(void)
+{
+   op_mul_pt_funcs[SP][SM_N][SC_N][DP][CPU_C] = _op_mul_pt_p_dp;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_C] = _op_mul_pt_pas_dp;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_C] = _op_mul_pt_pan_dp;
+
+   op_mul_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_C] = _op_mul_pt_p_dpan;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_C] = _op_mul_pt_pas_dpan;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_C] = _op_mul_pt_pan_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mul/op_mul_pixel_color_.c b/src/lib/engines/common/evas_op_mul/op_mul_pixel_color_.c
new file mode 100644 (file)
index 0000000..8ba5a49
--- /dev/null
@@ -0,0 +1,123 @@
+
+/* mul pixel x color --> dst */
+
+#ifdef BUILD_C
+static void
+_op_mul_p_c_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e) {
+       DATA32 cs = MUL4_SYM(c, *s);
+       *d = MUL4_SYM(cs, *d);
+       s++;  d++;
+     }
+}
+
+static void
+_op_mul_p_caa_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   c = 1 + (c >> 24);
+   while (d < e)
+     {
+       DATA32 cs = MUL_256(c, *s);
+       *d = MUL4_SYM(cs, *d);
+       s++;  d++;
+     }
+}
+
+#define _op_mul_pas_c_dp _op_mul_p_c_dp
+#define _op_mul_pan_c_dp _op_mul_p_c_dp
+#define _op_mul_p_can_dp _op_mul_p_c_dp
+#define _op_mul_pas_can_dp _op_mul_p_c_dp
+#define _op_mul_pan_can_dp _op_mul_p_c_dp
+#define _op_mul_pas_caa_dp _op_mul_p_caa_dp
+#define _op_mul_pan_caa_dp _op_mul_p_caa_dp
+
+#define _op_mul_p_c_dpan _op_mul_p_c_dp
+#define _op_mul_pas_c_dpan _op_mul_pas_c_dp
+#define _op_mul_pan_c_dpan _op_mul_pan_c_dp
+#define _op_mul_p_can_dpan _op_mul_p_can_dp
+#define _op_mul_pas_can_dpan _op_mul_pas_can_dp
+#define _op_mul_pan_can_dpan _op_mul_pan_can_dp
+#define _op_mul_p_caa_dpan _op_mul_p_caa_dp
+#define _op_mul_pas_caa_dpan _op_mul_pas_caa_dp
+#define _op_mul_pan_caa_dpan _op_mul_pan_caa_dp
+
+static void
+init_mul_pixel_color_span_funcs_c(void)
+{
+   op_mul_span_funcs[SP][SM_N][SC][DP][CPU_C] = _op_mul_p_c_dp;
+   op_mul_span_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_mul_pas_c_dp;
+   op_mul_span_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_mul_pan_c_dp;
+   op_mul_span_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_mul_p_can_dp;
+   op_mul_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_mul_pas_can_dp;
+   op_mul_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_mul_pan_can_dp;
+   op_mul_span_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_mul_p_caa_dp;
+   op_mul_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_mul_pas_caa_dp;
+   op_mul_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_mul_pan_caa_dp;
+
+   op_mul_span_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_mul_p_c_dpan;
+   op_mul_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_mul_pas_c_dpan;
+   op_mul_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_mul_pan_c_dpan;
+   op_mul_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_p_can_dpan;
+   op_mul_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pas_can_dpan;
+   op_mul_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pan_can_dpan;
+   op_mul_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_p_caa_dpan;
+   op_mul_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pas_caa_dpan;
+   op_mul_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pan_caa_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_mul_pt_p_c_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = MUL4_SYM(c, s);
+       *d = MUL4_SYM(s, *d);
+}
+
+static void
+_op_mul_pt_p_caa_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = MUL_SYM(c >> 24, s);
+       *d = MUL4_SYM(s, *d);
+}
+
+#define _op_mul_pt_pas_c_dp _op_mul_pt_p_c_dp
+#define _op_mul_pt_pan_c_dp _op_mul_pt_p_c_dp
+#define _op_mul_pt_p_can_dp _op_mul_pt_p_c_dp
+#define _op_mul_pt_pas_can_dp _op_mul_pt_p_c_dp
+#define _op_mul_pt_pan_can_dp _op_mul_pt_p_c_dp
+#define _op_mul_pt_pas_caa_dp _op_mul_pt_p_caa_dp
+#define _op_mul_pt_pan_caa_dp _op_mul_pt_p_caa_dp
+
+#define _op_mul_pt_p_c_dpan _op_mul_pt_p_c_dp
+#define _op_mul_pt_pan_c_dpan _op_mul_pt_pan_c_dp
+#define _op_mul_pt_pas_c_dpan _op_mul_pt_pas_c_dp
+#define _op_mul_pt_p_can_dpan _op_mul_pt_p_can_dp
+#define _op_mul_pt_pan_can_dpan _op_mul_pt_pan_can_dp
+#define _op_mul_pt_pas_can_dpan _op_mul_pt_pas_can_dp
+#define _op_mul_pt_p_caa_dpan _op_mul_pt_p_caa_dp
+#define _op_mul_pt_pan_caa_dpan _op_mul_pt_pan_caa_dp
+#define _op_mul_pt_pas_caa_dpan _op_mul_pt_pas_caa_dp
+static void
+init_mul_pixel_color_pt_funcs_c(void)
+{
+   op_mul_pt_funcs[SP][SM_N][SC][DP][CPU_C] = _op_mul_pt_p_c_dp;
+   op_mul_pt_funcs[SP_AS][SM_N][SC][DP][CPU_C] = _op_mul_pt_pas_c_dp;
+   op_mul_pt_funcs[SP_AN][SM_N][SC][DP][CPU_C] = _op_mul_pt_pan_c_dp;
+   op_mul_pt_funcs[SP][SM_N][SC_AN][DP][CPU_C] = _op_mul_pt_p_can_dp;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_C] = _op_mul_pt_pas_can_dp;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_C] = _op_mul_pt_pan_can_dp;
+   op_mul_pt_funcs[SP][SM_N][SC_AA][DP][CPU_C] = _op_mul_pt_p_caa_dp;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_C] = _op_mul_pt_pas_caa_dp;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_C] = _op_mul_pt_pan_caa_dp;
+
+   op_mul_pt_funcs[SP][SM_N][SC][DP_AN][CPU_C] = _op_mul_pt_p_c_dpan;
+   op_mul_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_C] = _op_mul_pt_pas_c_dpan;
+   op_mul_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_C] = _op_mul_pt_pan_c_dpan;
+   op_mul_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pt_p_can_dpan;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pt_pas_can_dpan;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_C] = _op_mul_pt_pan_can_dpan;
+   op_mul_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pt_p_caa_dpan;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pt_pas_caa_dpan;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_C] = _op_mul_pt_pan_caa_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mul/op_mul_pixel_color_i386.c b/src/lib/engines/common/evas_op_mul/op_mul_pixel_color_i386.c
new file mode 100644 (file)
index 0000000..22e40f6
--- /dev/null
@@ -0,0 +1,121 @@
+
+/* mul pixel x color --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_mul_p_c_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   MOV_A2R(ALPHA_255, mm5)
+   pxor_r2r(mm0, mm0);
+   MOV_P2R(c, mm2, mm0)
+   while (d < e)
+     {
+       MOV_P2R(*s, mm3, mm0)
+       MUL4_SYM_R2R(mm2, mm3, mm5)
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_SYM_R2R(mm3, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+       s++;  d++;
+     }
+}
+
+#define _op_mul_pas_c_dp_mmx _op_mul_p_c_dp_mmx
+#define _op_mul_pan_c_dp_mmx _op_mul_p_c_dp_mmx
+#define _op_mul_p_can_dp_mmx _op_mul_p_c_dp_mmx
+#define _op_mul_pas_can_dp_mmx _op_mul_p_c_dp_mmx
+#define _op_mul_pan_can_dp_mmx _op_mul_p_c_dp_mmx
+#define _op_mul_p_caa_dp_mmx _op_mul_p_c_dp_mmx
+#define _op_mul_pas_caa_dp_mmx _op_mul_p_c_dp_mmx
+#define _op_mul_pan_caa_dp_mmx _op_mul_p_c_dp_mmx
+
+#define _op_mul_p_c_dpan_mmx _op_mul_p_c_dp_mmx
+#define _op_mul_pan_c_dpan_mmx _op_mul_pan_c_dp_mmx
+#define _op_mul_pas_c_dpan_mmx _op_mul_pas_c_dp_mmx
+#define _op_mul_p_can_dpan_mmx _op_mul_p_can_dp_mmx
+#define _op_mul_pan_can_dpan_mmx _op_mul_pan_can_dp_mmx
+#define _op_mul_pas_can_dpan_mmx _op_mul_pas_can_dp_mmx
+#define _op_mul_p_caa_dpan_mmx _op_mul_p_caa_dp_mmx
+#define _op_mul_pan_caa_dpan_mmx _op_mul_pan_caa_dp_mmx
+#define _op_mul_pas_caa_dpan_mmx _op_mul_pas_caa_dp_mmx
+
+static void
+init_mul_pixel_color_span_funcs_mmx(void)
+{
+   op_mul_span_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_mul_p_c_dp_mmx;
+   op_mul_span_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_mul_pas_c_dp_mmx;
+   op_mul_span_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_mul_pan_c_dp_mmx;
+   op_mul_span_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_mul_p_can_dp_mmx;
+   op_mul_span_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_mul_pas_can_dp_mmx;
+   op_mul_span_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_mul_pan_can_dp_mmx;
+   op_mul_span_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_mul_p_caa_dp_mmx;
+   op_mul_span_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_mul_pas_caa_dp_mmx;
+   op_mul_span_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_mul_pan_caa_dp_mmx;
+
+   op_mul_span_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_mul_p_c_dpan_mmx;
+   op_mul_span_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_mul_pas_c_dpan_mmx;
+   op_mul_span_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_mul_pan_c_dpan_mmx;
+   op_mul_span_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_mul_p_can_dpan_mmx;
+   op_mul_span_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_mul_pas_can_dpan_mmx;
+   op_mul_span_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_mul_pan_can_dpan_mmx;
+   op_mul_span_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_mul_p_caa_dpan_mmx;
+   op_mul_span_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_mul_pas_caa_dpan_mmx;
+   op_mul_span_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_mul_pan_caa_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_mul_pt_p_c_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       MOV_A2R(ALPHA_255, mm5)
+       pxor_r2r(mm0, mm0);
+       MOV_P2R(c, mm2, mm0)
+       MOV_P2R(s, mm3, mm0)
+       MUL4_SYM_R2R(mm2, mm3, mm5)
+       MOV_P2R(*d, mm1, mm0)
+       MUL4_SYM_R2R(mm3, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_mul_pt_pas_c_dp_mmx _op_mul_pt_p_c_dp_mmx
+#define _op_mul_pt_pan_c_dp_mmx _op_mul_pt_p_c_dp_mmx
+#define _op_mul_pt_p_can_dp_mmx _op_mul_pt_p_c_dp_mmx
+#define _op_mul_pt_pas_can_dp_mmx _op_mul_pt_p_c_dp_mmx
+#define _op_mul_pt_pan_can_dp_mmx _op_mul_pt_p_c_dp_mmx
+#define _op_mul_pt_p_caa_dp_mmx _op_mul_pt_p_c_dp_mmx
+#define _op_mul_pt_pas_caa_dp_mmx _op_mul_pt_p_c_dp_mmx
+#define _op_mul_pt_pan_caa_dp_mmx _op_mul_pt_p_c_dp_mmx
+
+#define _op_mul_pt_p_c_dpan_mmx _op_mul_pt_p_c_dp_mmx
+#define _op_mul_pt_pan_c_dpan_mmx _op_mul_pt_pan_c_dp_mmx
+#define _op_mul_pt_pas_c_dpan_mmx _op_mul_pt_pas_c_dp_mmx
+#define _op_mul_pt_p_can_dpan_mmx _op_mul_pt_p_can_dp_mmx
+#define _op_mul_pt_pan_can_dpan_mmx _op_mul_pt_pan_can_dp_mmx
+#define _op_mul_pt_pas_can_dpan_mmx _op_mul_pt_pas_can_dp_mmx
+#define _op_mul_pt_p_caa_dpan_mmx _op_mul_pt_p_caa_dp_mmx
+#define _op_mul_pt_pan_caa_dpan_mmx _op_mul_pt_pan_caa_dp_mmx
+#define _op_mul_pt_pas_caa_dpan_mmx _op_mul_pt_pas_caa_dp_mmx
+
+static void
+init_mul_pixel_color_pt_funcs_mmx(void)
+{
+   op_mul_pt_funcs[SP][SM_N][SC][DP][CPU_MMX] = _op_mul_pt_p_c_dp_mmx;
+   op_mul_pt_funcs[SP_AS][SM_N][SC][DP][CPU_MMX] = _op_mul_pt_pas_c_dp_mmx;
+   op_mul_pt_funcs[SP_AN][SM_N][SC][DP][CPU_MMX] = _op_mul_pt_pan_c_dp_mmx;
+   op_mul_pt_funcs[SP][SM_N][SC_AN][DP][CPU_MMX] = _op_mul_pt_p_can_dp_mmx;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_AN][DP][CPU_MMX] = _op_mul_pt_pas_can_dp_mmx;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_AN][DP][CPU_MMX] = _op_mul_pt_pan_can_dp_mmx;
+   op_mul_pt_funcs[SP][SM_N][SC_AA][DP][CPU_MMX] = _op_mul_pt_p_caa_dp_mmx;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_AA][DP][CPU_MMX] = _op_mul_pt_pas_caa_dp_mmx;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_AA][DP][CPU_MMX] = _op_mul_pt_pan_caa_dp_mmx;
+
+   op_mul_pt_funcs[SP][SM_N][SC][DP_AN][CPU_MMX] = _op_mul_pt_p_c_dpan_mmx;
+   op_mul_pt_funcs[SP_AS][SM_N][SC][DP_AN][CPU_MMX] = _op_mul_pt_pas_c_dpan_mmx;
+   op_mul_pt_funcs[SP_AN][SM_N][SC][DP_AN][CPU_MMX] = _op_mul_pt_pan_c_dpan_mmx;
+   op_mul_pt_funcs[SP][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_mul_pt_p_can_dpan_mmx;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_mul_pt_pas_can_dpan_mmx;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_AN][DP_AN][CPU_MMX] = _op_mul_pt_pan_can_dpan_mmx;
+   op_mul_pt_funcs[SP][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_mul_pt_p_caa_dpan_mmx;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_mul_pt_pas_caa_dpan_mmx;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_AA][DP_AN][CPU_MMX] = _op_mul_pt_pan_caa_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mul/op_mul_pixel_i386.c b/src/lib/engines/common/evas_op_mul/op_mul_pixel_i386.c
new file mode 100644 (file)
index 0000000..8f7f15b
--- /dev/null
@@ -0,0 +1,67 @@
+
+/* mul pixel --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_mul_p_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = s + l;
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+   for (; s < e; s++, d++) {
+       MOV_P2R(*d, mm1, mm0)
+       MOV_P2R(*s, mm2, mm0)
+       MUL4_SYM_R2R(mm2, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+   }
+}
+
+#define _op_mul_pas_dp_mmx _op_mul_p_dp_mmx
+#define _op_mul_pan_dp_mmx _op_mul_p_dp_mmx
+
+#define _op_mul_p_dpan_mmx _op_mul_p_dp_mmx
+#define _op_mul_pan_dpan_mmx _op_mul_pan_dp_mmx
+#define _op_mul_pas_dpan_mmx _op_mul_pas_dp_mmx
+
+static void
+init_mul_pixel_span_funcs_mmx(void)
+{
+   op_mul_span_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_mul_p_dp_mmx;
+   op_mul_span_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_mul_pan_dp_mmx;
+   op_mul_span_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_mul_pas_dp_mmx;
+
+   op_mul_span_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_mul_p_dpan_mmx;
+   op_mul_span_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_mul_pan_dpan_mmx;
+   op_mul_span_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_mul_pas_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+_op_mul_pt_p_dp_mmx(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_255, mm5)
+       MOV_P2R(*d, mm1, mm0)
+       MOV_P2R(s, mm2, mm0)
+       MUL4_SYM_R2R(mm2, mm1, mm5)
+       MOV_R2P(mm1, *d, mm0)
+}
+
+#define _op_mul_pt_pan_dp_mmx _op_mul_pt_p_dp_mmx
+#define _op_mul_pt_pas_dp_mmx _op_mul_pt_p_dp_mmx
+
+#define _op_mul_pt_p_dpan_mmx _op_mul_pt_p_dp_mmx
+#define _op_mul_pt_pan_dpan_mmx _op_mul_pt_pan_dp_mmx
+#define _op_mul_pt_pas_dpan_mmx _op_mul_pt_pas_dp_mmx
+
+static void
+init_mul_pixel_pt_funcs_mmx(void)
+{
+   op_mul_pt_funcs[SP][SM_N][SC_N][DP][CPU_MMX] = _op_mul_pt_p_dp_mmx;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_N][DP][CPU_MMX] = _op_mul_pt_pan_dp_mmx;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_N][DP][CPU_MMX] = _op_mul_pt_pas_dp_mmx;
+
+   op_mul_pt_funcs[SP][SM_N][SC_N][DP_AN][CPU_MMX] = _op_mul_pt_p_dpan_mmx;
+   op_mul_pt_funcs[SP_AN][SM_N][SC_N][DP_AN][CPU_MMX] = _op_mul_pt_pan_dpan_mmx;
+   op_mul_pt_funcs[SP_AS][SM_N][SC_N][DP_AN][CPU_MMX] = _op_mul_pt_pas_dpan_mmx;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mul/op_mul_pixel_mask_.c b/src/lib/engines/common/evas_op_mul/op_mul_pixel_mask_.c
new file mode 100644 (file)
index 0000000..6617b63
--- /dev/null
@@ -0,0 +1,118 @@
+
+/* mul pixel x mask --> dst */
+
+#ifdef BUILD_C
+static void
+_op_mul_p_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e)
+     {
+       c = *m;
+       switch(c)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = MUL4_SYM(*s, *d);
+               break;
+           default:
+               c = ~(*s);
+               c = ~MUL_SYM(*m, c);
+               *d = MUL4_SYM(c, *d);
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+static void
+_op_mul_pan_mas_dp(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e)
+     {
+       c = *m;
+       switch(c)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = (*d & 0xff000000) + MUL3_SYM(*s, *d);
+               break;
+           default:
+               c = ~(*s);
+               c = ~MUL_SYM(*m, c);
+               *d = (*d & 0xff000000) + MUL3_SYM(c, *d);
+               break;
+         }
+       m++;  s++;  d++;
+     }
+}
+
+static void
+_op_mul_p_mas_dpan(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   while (d < e)
+     {
+       c = *m;
+       switch(c)
+         {
+           case 0:
+               break;
+           case 255:
+               *d = (*s & 0xff000000) + MUL3_SYM(*s, *d);
+               break;
+           default:
+               c = ~(*s);
+               c = ~MUL_SYM(*m, c);
+               *d = (c & 0xff000000) + MUL3_SYM(c, *d);
+               break;
+         }
+       m++;  d++;
+     }
+}
+
+#define _op_mul_pas_mas_dp _op_mul_p_mas_dp
+
+#define _op_mul_pan_mas_dpan _op_mul_p_mas_dpan
+#define _op_mul_pas_mas_dpan _op_mul_p_mas_dpan
+
+static void
+init_mul_pixel_mask_span_funcs_c(void)
+{
+   op_mul_span_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_mul_p_mas_dp;
+   op_mul_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_mul_pas_mas_dp;
+   op_mul_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_mul_pan_mas_dp;
+
+   op_mul_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_p_mas_dpan;
+   op_mul_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_pas_mas_dpan;
+   op_mul_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_pan_mas_dpan;
+}
+#endif
+
+#ifdef BUILD_C
+static void
+_op_mul_pt_p_mas_dp(DATA32 s, DATA8 m, DATA32 c, DATA32 *d) {
+       s = ~s;
+       s = ~MUL_SYM(m, s);
+       *d = MUL4_SYM(s, *d);
+}
+
+#define _op_mul_pt_pas_mas_dp _op_mul_pt_p_mas_dp
+#define _op_mul_pt_pan_mas_dp _op_mul_pt_p_mas_dp
+
+#define _op_mul_pt_p_mas_dpan _op_mul_pt_p_mas_dp
+#define _op_mul_pt_pas_mas_dpan _op_mul_pt_p_mas_dp
+#define _op_mul_pt_pan_mas_dpan _op_mul_pt_p_mas_dp
+
+static void
+init_mul_pixel_mask_pt_funcs_c(void)
+{
+   op_mul_pt_funcs[SP][SM_AS][SC_N][DP][CPU_C] = _op_mul_pt_p_mas_dp;
+   op_mul_pt_funcs[SP_AS][SM_AS][SC_N][DP][CPU_C] = _op_mul_pt_pas_mas_dp;
+   op_mul_pt_funcs[SP_AN][SM_AS][SC_N][DP][CPU_C] = _op_mul_pt_pan_mas_dp;
+
+   op_mul_pt_funcs[SP][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_pt_p_mas_dpan;
+   op_mul_pt_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_pt_pas_mas_dpan;
+   op_mul_pt_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_C] = _op_mul_pt_pan_mas_dpan;
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mul/op_mul_pixel_mask_i386.c b/src/lib/engines/common/evas_op_mul/op_mul_pixel_mask_i386.c
new file mode 100644 (file)
index 0000000..b2c00ce
--- /dev/null
@@ -0,0 +1,64 @@
+
+/* mul pixel x mask --> dst */
+
+#ifdef BUILD_MMX
+static void
+_op_mul_p_mas_dp_mmx(DATA32 *s, DATA8 *m, DATA32 c, DATA32 *d, int l) {
+   DATA32 *e = d + l;
+   MOV_A2R(ALPHA_255, mm5)
+   pxor_r2r(mm0, mm0);
+   while (d < e) {
+       c = *m;
+       switch(c)
+         {
+           case 0:
+               break;
+           case 255:
+               MOV_P2R(*d, mm1, mm0)
+               MOV_P2R(*s, mm2, mm0)
+               MUL4_SYM_R2R(mm2, mm1, mm5)
+               MOV_R2P(mm1, *d, mm0)
+               break;
+           default:
+               c++;
+               MOV_A2R(c, mm1)
+               c = ~(*s);
+               MOV_P2R(c, mm3, mm0)
+               MUL4_256_R2R(mm3, mm1)
+               movq_r2r(mm5, mm4);
+               psubw_r2r(mm1, mm4);
+               MOV_P2R(*d, mm1, mm0)
+               MUL4_SYM_R2R(mm4, mm1, mm5)
+               MOV_R2P(mm1, *d, mm0)
+               break;
+         }
+       s++;  m++;  d++;
+     }
+}
+
+#define _op_mul_pas_mas_dp_mmx _op_mul_p_mas_dp_mmx
+#define _op_mul_pan_mas_dp_mmx _op_mul_p_mas_dp_mmx
+
+#define _op_mul_p_mas_dpan_mmx _op_mul_p_mas_dp_mmx
+#define _op_mul_pas_mas_dpan_mmx _op_mul_pas_mas_dp_mmx
+#define _op_mul_pan_mas_dpan_mmx _op_mul_pan_mas_dp_mmx
+
+static void
+init_mul_pixel_mask_span_funcs_mmx(void)
+{
+   op_mul_span_funcs[SP][SM_AS][SC_N][DP][CPU_MMX] = _op_mul_p_mas_dp_mmx;
+   op_mul_span_funcs[SP_AS][SM_AS][SC_N][DP][CPU_MMX] = _op_mul_pas_mas_dp_mmx;
+   op_mul_span_funcs[SP_AN][SM_AS][SC_N][DP][CPU_MMX] = _op_mul_pan_mas_dp_mmx;
+
+   op_mul_span_funcs[SP][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_mul_p_mas_dpan_mmx;
+   op_mul_span_funcs[SP_AS][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_mul_pas_mas_dpan_mmx;
+   op_mul_span_funcs[SP_AN][SM_AS][SC_N][DP_AN][CPU_MMX] = _op_mul_pan_mas_dpan_mmx;
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_mul_pixel_mask_pt_funcs_mmx(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_mul_main_.c b/src/lib/engines/common/evas_op_mul_main_.c
new file mode 100644 (file)
index 0000000..181352b
--- /dev/null
@@ -0,0 +1,308 @@
+#include "evas_common.h"
+
+static RGBA_Gfx_Func     op_mul_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+static RGBA_Gfx_Pt_Func  op_mul_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+
+static void op_mul_init(void);
+static void op_mul_shutdown(void);
+
+static RGBA_Gfx_Func op_mul_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_mul_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_mul_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_mul_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_mul_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+static RGBA_Gfx_Pt_Func op_mul_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_mul_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_mul_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_mul_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_mul_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+
+static RGBA_Gfx_Compositor  _composite_mul = { "mul",
+ op_mul_init, op_mul_shutdown,
+ op_mul_pixel_span_get, op_mul_color_span_get,
+ op_mul_pixel_color_span_get, op_mul_mask_color_span_get,
+ op_mul_pixel_mask_span_get,
+ op_mul_pixel_pt_get, op_mul_color_pt_get,
+ op_mul_pixel_color_pt_get, op_mul_mask_color_pt_get,
+ op_mul_pixel_mask_pt_get
+ };
+
+RGBA_Gfx_Compositor  *
+evas_common_gfx_compositor_mul_get(void)
+{
+   return &(_composite_mul);
+}
+
+
+# include "./evas_op_mul/op_mul_pixel_.c"
+# include "./evas_op_mul/op_mul_color_.c"
+# include "./evas_op_mul/op_mul_pixel_color_.c"
+# include "./evas_op_mul/op_mul_pixel_mask_.c"
+# include "./evas_op_mul/op_mul_mask_color_.c"
+//# include "./evas_op_mul/op_mul_pixel_mask_color_.c"
+
+# include "./evas_op_mul/op_mul_pixel_i386.c"
+# include "./evas_op_mul/op_mul_color_i386.c"
+# include "./evas_op_mul/op_mul_pixel_color_i386.c"
+# include "./evas_op_mul/op_mul_pixel_mask_i386.c"
+# include "./evas_op_mul/op_mul_mask_color_i386.c"
+// # include "./evas_op_mul/op_mul_pixel_mask_color_i386.c"
+
+static void
+op_mul_init(void)
+{
+   memset(op_mul_span_funcs, 0, sizeof(op_mul_span_funcs));
+   memset(op_mul_pt_funcs, 0, sizeof(op_mul_pt_funcs));
+#ifdef BUILD_MMX
+   init_mul_pixel_span_funcs_mmx();
+   init_mul_pixel_color_span_funcs_mmx();
+   init_mul_pixel_mask_span_funcs_mmx();
+   init_mul_color_span_funcs_mmx();
+   init_mul_mask_color_span_funcs_mmx();
+
+   init_mul_pixel_pt_funcs_mmx();
+   init_mul_pixel_color_pt_funcs_mmx();
+   init_mul_pixel_mask_pt_funcs_mmx();
+   init_mul_color_pt_funcs_mmx();
+   init_mul_mask_color_pt_funcs_mmx();
+#endif
+#ifdef BUILD_C
+   init_mul_pixel_span_funcs_c();
+   init_mul_pixel_color_span_funcs_c();
+   init_mul_pixel_mask_span_funcs_c();
+   init_mul_color_span_funcs_c();
+   init_mul_mask_color_span_funcs_c();
+
+   init_mul_pixel_pt_funcs_c();
+   init_mul_pixel_color_pt_funcs_c();
+   init_mul_pixel_mask_pt_funcs_c();
+   init_mul_color_pt_funcs_c();
+   init_mul_mask_color_pt_funcs_c();
+#endif
+}
+
+static void
+op_mul_shutdown(void)
+{
+}
+
+static RGBA_Gfx_Func
+mul_gfx_span_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Func func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_mul_span_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_mul_span_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Func
+op_mul_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mul_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_mul_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mul_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_mul_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mul_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_mul_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   return mul_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_mul_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   return mul_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+mul_gfx_pt_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Pt_Func func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+    {
+      cpu = CPU_MMX;
+      func = op_mul_pt_funcs[s][m][c][d][cpu];
+      if (func) return func;
+    }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_mul_pt_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Pt_Func
+op_mul_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+     {
+       dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mul_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_mul_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mul_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_mul_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src_flags.alpha)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       s = SP;
+     }
+   if ((col >> 24) < 255)
+     {
+       if (dst)
+          dst->cache_entry.flags.alpha = 1;
+       c = SC;
+     }
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return mul_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_mul_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   return mul_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_mul_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP;
+
+   if (dst)
+       dst->cache_entry.flags.alpha = 1;
+   if (src_flags.alpha)
+       s = SP;
+   return mul_gfx_pt_func_cpu(s, m, c, d);
+}
diff --git a/src/lib/engines/common/evas_op_sub/.cvsignore b/src/lib/engines/common/evas_op_sub/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/lib/engines/common/evas_op_sub/Makefile.am b/src/lib/engines/common/evas_op_sub/Makefile.am
new file mode 100644 (file)
index 0000000..cf0a068
--- /dev/null
@@ -0,0 +1,12 @@
+EXTRA_DIST = \
+op_sub_color_.c \
+op_sub_color_i386.c \
+op_sub_mask_color_.c \
+op_sub_mask_color_i386.c \
+op_sub_pixel_.c \
+op_sub_pixel_color_.c \
+op_sub_pixel_color_i386.c \
+op_sub_pixel_i386.c \
+op_sub_pixel_mask_.c \
+op_sub_pixel_mask_i386.c
+
diff --git a/src/lib/engines/common/evas_op_sub/op_sub_color_.c b/src/lib/engines/common/evas_op_sub/op_sub_color_.c
new file mode 100644 (file)
index 0000000..82d6db4
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* sub color -> dst */
+
+#ifdef BUILD_C
+static void
+init_sub_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_sub_color_pt_funcs_c(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* sub_rel color -> dst */
+
+#ifdef BUILD_C
+static void
+init_sub_rel_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_sub_rel_color_pt_funcs_c(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_sub/op_sub_color_i386.c b/src/lib/engines/common/evas_op_sub/op_sub_color_i386.c
new file mode 100644 (file)
index 0000000..0b3d5e5
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* sub color -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_sub_color_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_sub_color_pt_funcs_mmx(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* sub_rel color -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_sub_rel_color_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_sub_rel_color_pt_funcs_mmx(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_sub/op_sub_mask_color_.c b/src/lib/engines/common/evas_op_sub/op_sub_mask_color_.c
new file mode 100644 (file)
index 0000000..8457a0b
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* sub mask x color -> dst */
+
+#ifdef BUILD_C
+static void
+init_sub_mask_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_sub_mask_color_pt_funcs_c(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* sub_rel mask x color -> dst */
+
+#ifdef BUILD_C
+static void
+init_sub_rel_mask_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_sub_rel_mask_color_pt_funcs_c(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_sub/op_sub_mask_color_i386.c b/src/lib/engines/common/evas_op_sub/op_sub_mask_color_i386.c
new file mode 100644 (file)
index 0000000..1304121
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* sub mask x color -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_sub_mask_color_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_sub_mask_color_pt_funcs_mmx(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* sub_rel mask x color -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_sub_rel_mask_color_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_sub_rel_mask_color_pt_funcs_mmx(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_sub/op_sub_pixel_.c b/src/lib/engines/common/evas_op_sub/op_sub_pixel_.c
new file mode 100644 (file)
index 0000000..2ae74e3
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* sub pixel --> dst */
+
+#ifdef BUILD_C
+static void
+init_sub_pixel_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_sub_pixel_pt_funcs_c(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* sub_rel pixel --> dst */
+
+#ifdef BUILD_C
+static void
+init_sub_rel_pixel_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_sub_rel_pixel_pt_funcs_c(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_sub/op_sub_pixel_color_.c b/src/lib/engines/common/evas_op_sub/op_sub_pixel_color_.c
new file mode 100644 (file)
index 0000000..14d6b39
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* sub pixel x color --> dst */
+
+#ifdef BUILD_C
+static void
+init_sub_pixel_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_sub_pixel_color_pt_funcs_c(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* sub_rel pixel x color --> dst */
+
+#ifdef BUILD_C
+static void
+init_sub_rel_pixel_color_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_sub_rel_pixel_color_pt_funcs_c(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_sub/op_sub_pixel_color_i386.c b/src/lib/engines/common/evas_op_sub/op_sub_pixel_color_i386.c
new file mode 100644 (file)
index 0000000..ebf0b2e
--- /dev/null
@@ -0,0 +1,30 @@
+
+/* sub pixel x color --> dst */
+
+#ifdef BUILD_MMX
+static void
+init_sub_pixel_color_span_funcs_mmx(void)
+{ }
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_sub_pixel_color_pt_funcs_mmx(void)
+{ }
+#endif
+
+/*-----*/
+
+/* sub_rel pixel x color --> dst */
+
+#ifdef BUILD_MMX
+static void
+init_sub_rel_pixel_color_span_funcs_mmx(void)
+{ }
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_sub_rel_pixel_color_pt_funcs_mmx(void)
+{ }
+#endif
diff --git a/src/lib/engines/common/evas_op_sub/op_sub_pixel_i386.c b/src/lib/engines/common/evas_op_sub/op_sub_pixel_i386.c
new file mode 100644 (file)
index 0000000..93ddeaa
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* sub pixel --> dst */
+
+#ifdef BUILD_MMX
+static void
+init_sub_pixel_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_sub_pixel_pt_funcs_mmx(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* sub_rel pixel --> dst */
+
+#ifdef BUILD_MMX
+static void
+init_sub_rel_pixel_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_sub_rel_pixel_pt_funcs_mmx(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_sub/op_sub_pixel_mask_.c b/src/lib/engines/common/evas_op_sub/op_sub_pixel_mask_.c
new file mode 100644 (file)
index 0000000..041a736
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* sub pixel x mask --> dst */
+
+#ifdef BUILD_C
+static void
+init_sub_pixel_mask_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_sub_pixel_mask_pt_funcs_c(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* sub_rel pixel x mask --> dst */
+
+#ifdef BUILD_C
+static void
+init_sub_rel_pixel_mask_span_funcs_c(void)
+{
+}
+#endif
+
+#ifdef BUILD_C
+static void
+init_sub_rel_pixel_mask_pt_funcs_c(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_sub/op_sub_pixel_mask_i386.c b/src/lib/engines/common/evas_op_sub/op_sub_pixel_mask_i386.c
new file mode 100644 (file)
index 0000000..4875229
--- /dev/null
@@ -0,0 +1,34 @@
+
+/* sub pixel x mask -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_sub_pixel_mask_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_sub_pixel_mask_pt_funcs_mmx(void)
+{
+}
+#endif
+
+/*-----*/
+
+/* sub_rel pixel x mask -> dst */
+
+#ifdef BUILD_MMX
+static void
+init_sub_rel_pixel_mask_span_funcs_mmx(void)
+{
+}
+#endif
+
+#ifdef BUILD_MMX
+static void
+init_sub_rel_pixel_mask_pt_funcs_mmx(void)
+{
+}
+#endif
diff --git a/src/lib/engines/common/evas_op_sub_main_.c b/src/lib/engines/common/evas_op_sub_main_.c
new file mode 100644 (file)
index 0000000..f056cfc
--- /dev/null
@@ -0,0 +1,542 @@
+#include "evas_common.h"
+
+static RGBA_Gfx_Func     op_sub_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+static RGBA_Gfx_Pt_Func  op_sub_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+
+static void op_sub_init(void);
+static void op_sub_shutdown(void);
+
+static RGBA_Gfx_Func op_sub_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_sub_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_sub_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_sub_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_sub_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+static RGBA_Gfx_Pt_Func op_sub_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_sub_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_sub_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_sub_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_sub_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+
+static RGBA_Gfx_Compositor  _composite_sub = { "sub",
+ op_sub_init, op_sub_shutdown,
+ op_sub_pixel_span_get, op_sub_color_span_get,
+ op_sub_pixel_color_span_get, op_sub_mask_color_span_get,
+ op_sub_pixel_mask_span_get,
+ op_sub_pixel_pt_get, op_sub_color_pt_get,
+ op_sub_pixel_color_pt_get, op_sub_mask_color_pt_get,
+ op_sub_pixel_mask_pt_get
+ };
+
+RGBA_Gfx_Compositor  *
+evas_common_gfx_compositor_sub_get(void)
+{
+   return &(_composite_sub);
+}
+
+static RGBA_Gfx_Func     op_sub_rel_span_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+static RGBA_Gfx_Pt_Func  op_sub_rel_pt_funcs[SP_LAST][SM_LAST][SC_LAST][DP_LAST][CPU_LAST];
+
+static void op_sub_rel_init(void);
+static void op_sub_rel_shutdown(void);
+
+static RGBA_Gfx_Func op_sub_rel_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_sub_rel_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_sub_rel_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_sub_rel_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels);
+static RGBA_Gfx_Func op_sub_rel_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+static RGBA_Gfx_Pt_Func op_sub_rel_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_sub_rel_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_sub_rel_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_sub_rel_mask_color_pt_get(DATA32 col, RGBA_Image *dst);
+static RGBA_Gfx_Pt_Func op_sub_rel_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst);
+
+static RGBA_Gfx_Compositor  _composite_sub_rel = { "sub_rel",
+ op_sub_rel_init, op_sub_rel_shutdown,
+ op_sub_rel_pixel_span_get, op_sub_rel_color_span_get,
+ op_sub_rel_pixel_color_span_get, op_sub_rel_mask_color_span_get,
+ op_sub_rel_pixel_mask_span_get,
+ op_sub_rel_pixel_pt_get, op_sub_rel_color_pt_get,
+ op_sub_rel_pixel_color_pt_get, op_sub_rel_mask_color_pt_get,
+ op_sub_rel_pixel_mask_pt_get
+ };
+
+RGBA_Gfx_Compositor  *
+evas_common_gfx_compositor_sub_rel_get(void)
+{
+   return &(_composite_sub_rel);
+}
+
+
+# include "./evas_op_sub/op_sub_pixel_.c"
+# include "./evas_op_sub/op_sub_color_.c"
+# include "./evas_op_sub/op_sub_pixel_color_.c"
+# include "./evas_op_sub/op_sub_pixel_mask_.c"
+# include "./evas_op_sub/op_sub_mask_color_.c"
+//# include "./evas_op_sub/op_sub_pixel_mask_color_.c"
+
+# include "./evas_op_sub/op_sub_pixel_i386.c"
+# include "./evas_op_sub/op_sub_color_i386.c"
+# include "./evas_op_sub/op_sub_pixel_color_i386.c"
+# include "./evas_op_sub/op_sub_pixel_mask_i386.c"
+# include "./evas_op_sub/op_sub_mask_color_i386.c"
+//# include "./evas_op_sub/op_sub_pixel_mask_color_i386.c"
+
+static void
+op_sub_init(void)
+{
+   memset(op_sub_span_funcs, 0, sizeof(op_sub_span_funcs));
+   memset(op_sub_pt_funcs, 0, sizeof(op_sub_pt_funcs));
+#ifdef BUILD_MMX
+   init_sub_pixel_span_funcs_mmx();
+   init_sub_pixel_color_span_funcs_mmx();
+   init_sub_pixel_mask_span_funcs_mmx();
+   init_sub_color_span_funcs_mmx();
+   init_sub_mask_color_span_funcs_mmx();
+
+   init_sub_pixel_pt_funcs_mmx();
+   init_sub_pixel_color_pt_funcs_mmx();
+   init_sub_pixel_mask_pt_funcs_mmx();
+   init_sub_color_pt_funcs_mmx();
+   init_sub_mask_color_pt_funcs_mmx();
+#endif
+#ifdef BUILD_C
+   init_sub_pixel_span_funcs_c();
+   init_sub_pixel_color_span_funcs_c();
+   init_sub_rel_pixel_mask_span_funcs_c();
+   init_sub_color_span_funcs_c();
+   init_sub_mask_color_span_funcs_c();
+
+   init_sub_pixel_pt_funcs_c();
+   init_sub_pixel_color_pt_funcs_c();
+   init_sub_rel_pixel_mask_pt_funcs_c();
+   init_sub_color_pt_funcs_c();
+   init_sub_mask_color_pt_funcs_c();
+#endif
+}
+
+static void
+op_sub_shutdown(void)
+{
+}
+
+static RGBA_Gfx_Func
+sub_gfx_span_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Func  func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_sub_span_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_sub_span_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Func
+op_sub_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_sub_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_sub_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_sub_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_sub_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+sub_gfx_pt_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Pt_Func  func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_sub_pt_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_sub_pt_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Pt_Func
+op_sub_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_sub_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_sub_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_sub_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_sub_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_gfx_pt_func_cpu(s, m, c, d);
+}
+
+
+
+static void
+op_sub_rel_init(void)
+{
+   memset(op_sub_rel_span_funcs, 0, sizeof(op_sub_rel_span_funcs));
+   memset(op_sub_rel_pt_funcs, 0, sizeof(op_sub_rel_pt_funcs));
+#ifdef BUILD_MMX
+   init_sub_rel_pixel_span_funcs_mmx();
+   init_sub_rel_pixel_color_span_funcs_mmx();
+   init_sub_rel_pixel_mask_span_funcs_mmx();
+   init_sub_rel_color_span_funcs_mmx();
+   init_sub_rel_mask_color_span_funcs_mmx();
+
+   init_sub_rel_pixel_pt_funcs_mmx();
+   init_sub_rel_pixel_color_pt_funcs_mmx();
+   init_sub_rel_pixel_mask_pt_funcs_mmx();
+   init_sub_rel_color_pt_funcs_mmx();
+   init_sub_rel_mask_color_pt_funcs_mmx();
+#endif
+#ifdef BUILD_C
+   init_sub_rel_pixel_span_funcs_c();
+   init_sub_rel_pixel_color_span_funcs_c();
+   init_sub_rel_pixel_mask_span_funcs_c();
+   init_sub_rel_color_span_funcs_c();
+   init_sub_rel_mask_color_span_funcs_c();
+
+   init_sub_rel_pixel_pt_funcs_c();
+   init_sub_rel_pixel_color_pt_funcs_c();
+   init_sub_rel_pixel_mask_pt_funcs_c();
+   init_sub_rel_color_pt_funcs_c();
+   init_sub_rel_mask_color_pt_funcs_c();
+#endif
+}
+
+static void
+op_sub_rel_shutdown(void)
+{
+}
+
+static RGBA_Gfx_Func
+sub_rel_gfx_span_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Func  func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_sub_rel_span_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_sub_rel_span_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Func
+op_sub_rel_pixel_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_sub_rel_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_sub_rel_pixel_color_span_get(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_sub_rel_mask_color_span_get(DATA32 col, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Func
+op_sub_rel_pixel_mask_span_get(RGBA_Image *src, RGBA_Image *dst, int pixels)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src && src->cache_entry.flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_rel_gfx_span_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+sub_rel_gfx_pt_func_cpu(int s, int m, int c, int d)
+{
+   RGBA_Gfx_Pt_Func  func = NULL;
+   int cpu = CPU_N;
+#ifdef BUILD_MMX
+   if (evas_common_cpu_has_feature(CPU_FEATURE_MMX))
+     {
+       cpu = CPU_MMX;
+       func = op_sub_rel_pt_funcs[s][m][c][d][cpu];
+       if (func) return func;
+     }
+#endif
+#ifdef BUILD_C
+   cpu = CPU_C;
+   func = op_sub_rel_pt_funcs[s][m][c][d][cpu];
+   if (func) return func;
+#endif
+   return func;
+}
+
+static RGBA_Gfx_Pt_Func
+op_sub_rel_pixel_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_sub_rel_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_sub_rel_pixel_color_pt_get(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_N, c = SC_AN, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_sub_rel_mask_color_pt_get(DATA32 col, RGBA_Image *dst)
+{
+   int  s = SP_N, m = SM_AS, c = SC_AN, d = DP_AN;
+
+   if ((col >> 24) < 255)
+       c = SC;
+   if (col == (col | 0x00ffffff))
+       c = SC_AA;
+   if (col == 0xffffffff)
+       c = SC_N;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_rel_gfx_pt_func_cpu(s, m, c, d);
+}
+
+static RGBA_Gfx_Pt_Func
+op_sub_rel_pixel_mask_pt_get(Image_Entry_Flags src_flags, RGBA_Image *dst)
+{
+   int  s = SP_AN, m = SM_AS, c = SC_N, d = DP_AN;
+
+   if (src_flags.alpha)
+       s = SP;
+   if (dst && dst->cache_entry.flags.alpha)
+       d = DP;
+   return sub_rel_gfx_pt_func_cpu(s, m, c, d);
+}
diff --git a/src/lib/engines/common/evas_pipe.c b/src/lib/engines/common/evas_pipe.c
new file mode 100644 (file)
index 0000000..5ab156f
--- /dev/null
@@ -0,0 +1,592 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+
+static RGBA_Pipe *evas_common_pipe_add(RGBA_Pipe *pipe, RGBA_Pipe_Op **op);
+static void evas_common_pipe_draw_context_copy(RGBA_Draw_Context *dc, RGBA_Pipe_Op *op);
+static void evas_common_pipe_op_free(RGBA_Pipe_Op *op);
+
+/* utils */
+static RGBA_Pipe *
+evas_common_pipe_add(RGBA_Pipe *pipe, RGBA_Pipe_Op **op)
+{
+   RGBA_Pipe *p;
+   int first_pipe = 0;
+
+   if (!pipe)
+     {
+       first_pipe = 1;
+       p = calloc(1, sizeof(RGBA_Pipe));
+       if (!p) return NULL;
+       pipe = evas_object_list_append(pipe, p);
+     }
+   p = (RGBA_Pipe *)((Evas_Object_List *)pipe)->last;
+   if (p->op_num == PIPE_LEN)
+     {
+       p = calloc(1, sizeof(RGBA_Pipe));
+       if (!p) return NULL;
+       pipe = evas_object_list_append(pipe, p);
+     }
+   p->op_num++;
+   *op = &(p->op[p->op_num - 1]);
+   if (first_pipe)
+     {
+       /* FIXME: PTHREAD init any thread locks etc */
+     }
+   return pipe;
+}
+
+static void
+evas_common_pipe_draw_context_copy(RGBA_Draw_Context *dc, RGBA_Pipe_Op *op)
+{
+   memcpy(&(op->context), dc, sizeof(RGBA_Draw_Context));
+   if (op->context.cutout.active > 0)
+     {
+       op->context.cutout.rects = malloc(sizeof(Cutout_Rect) * op->context.cutout.active);
+       memcpy(op->context.cutout.rects, dc->cutout.rects, sizeof(Cutout_Rect) * op->context.cutout.active);
+     }
+   else
+     op->context.cutout.rects = NULL;
+}
+
+static void
+evas_common_pipe_op_free(RGBA_Pipe_Op *op)
+{
+   evas_common_draw_context_apply_clean_cutouts(&op->context.cutout);
+}
+
+/* main api calls */
+#ifdef BUILD_PTHREAD
+typedef struct _Thinfo
+{
+   int                    thread_num;
+   pthread_t              thread_id;
+   pthread_barrier_t     *barrier;
+   RGBA_Pipe_Thread_Info *info;
+} Thinfo;
+
+static void *
+evas_common_pipe_thread(void *data)
+{
+   Thinfo *thinfo;
+
+//   printf("TH [...........\n");
+   thinfo = data;
+   for (;;)
+     {
+       RGBA_Pipe_Thread_Info *info;
+       RGBA_Pipe *p;
+
+       /* wait for start signal */
+//     printf(" TH %i START...\n", thinfo->thread_num);
+       pthread_barrier_wait(&(thinfo->barrier[0]));
+       info = thinfo->info;
+//     if (info)
+//       {
+//          thinfo->info = NULL;
+//          printf(" TH %i GO\n", thinfo->thread_num);
+            for (p = info->im->pipe; p; p = (RGBA_Pipe *)((Evas_Object_List *)p)->next)
+              {
+                 int i;
+
+                 for (i = 0; i < p->op_num; i++)
+                   {
+                      if (p->op[i].op_func)
+                        p->op[i].op_func(info->im, &(p->op[i]), info);
+                   }
+              }
+            free(info);
+//       }
+//     printf(" TH %i DONE\n", thinfo->thread_num);
+       /* send finished signal */
+       pthread_barrier_wait(&(thinfo->barrier[1]));
+     }
+   return NULL;
+}
+#endif
+
+#ifdef BUILD_PTHREAD
+static int               thread_num = 0;
+static Thinfo            thinfo[TH_MAX];
+static pthread_barrier_t thbarrier[2];
+#endif
+
+EAPI void
+evas_common_pipe_begin(RGBA_Image *im)
+{
+#ifdef BUILD_PTHREAD
+   int i, y, h;
+
+   if (!im->pipe) return;
+   if (thread_num == 1) return;
+   if (thread_num == 0)
+     {
+       int cpunum;
+
+       cpunum = evas_common_cpu_count();
+       thread_num = cpunum;
+       if (thread_num == 1) return;
+       pthread_barrier_init(&(thbarrier[0]), NULL, thread_num + 1);
+       pthread_barrier_init(&(thbarrier[1]), NULL, thread_num + 1);
+       for (i = 0; i < thread_num; i++)
+         {
+            pthread_attr_t attr;
+            cpu_set_t cpu;
+
+            pthread_attr_init(&attr);
+            CPU_ZERO(&cpu);
+            CPU_SET(i % cpunum, &cpu);
+            pthread_attr_setaffinity_np(&attr, sizeof(cpu), &cpu);
+            thinfo[i].thread_num = i;
+            thinfo[i].info = NULL;
+            thinfo[i].barrier = thbarrier;
+            /* setup initial locks */
+            pthread_create(&(thinfo[i].thread_id), &attr,
+                           evas_common_pipe_thread, &(thinfo[i]));
+            pthread_attr_destroy(&attr);
+         }
+     }
+   y = 0;
+   h = im->cache_entry.h / thread_num;
+   if (h < 1) h = 1;
+   for (i = 0; i < thread_num; i++)
+     {
+       RGBA_Pipe_Thread_Info *info;
+
+//          if (y >= im->cache_entry.h) break;
+       info = calloc(1, sizeof(RGBA_Pipe_Thread_Info));
+       info->im = im;
+#ifdef EVAS_SLI
+       info->x = 0;
+       info->w = im->cache_entry.w;
+       info->y = i;
+       info->h = thread_num;
+#else
+       info->x = 0;
+       info->y = y;
+       info->w = im->cache_entry.w;
+       if (i == (thread_num - 1))
+         info->h = im->cache_entry.h - y;
+       else
+         info->h = h;
+       y += info->h;
+#endif
+       thinfo[i].info = info;
+     }
+   /* tell worker threads to start */
+   pthread_barrier_wait(&(thbarrier[0]));
+#endif
+}
+
+EAPI void
+evas_common_pipe_flush(RGBA_Image *im)
+{
+
+   RGBA_Pipe *p;
+   int i;
+
+   if (!im->pipe) return;
+#ifdef BUILD_PTHREAD
+   if (thread_num > 1)
+     {
+       /* sync worker threads */
+       pthread_barrier_wait(&(thbarrier[1]));
+     }
+   else
+#endif
+     {
+       /* process pipe - 1 thead */
+       for (p = im->pipe; p; p = (RGBA_Pipe *)((Evas_Object_List *)p)->next)
+         {
+            for (i = 0; i < p->op_num; i++)
+              {
+                 if (p->op[i].op_func)
+                   p->op[i].op_func(im, &(p->op[i]), NULL);
+              }
+         }
+     }
+   evas_common_cpu_end_opt();
+   evas_common_pipe_free(im);
+}
+
+EAPI void
+evas_common_pipe_free(RGBA_Image *im)
+{
+
+   RGBA_Pipe *p;
+   int i;
+
+   if (!im->pipe) return;
+   /* FIXME: PTHREAD join all threads here (if not finished) */
+
+   /* free pipe */
+   while (im->pipe)
+     {
+       p = im->pipe;
+       for (i = 0; i < p->op_num; i++)
+         {
+            if (p->op[i].free_func)
+              p->op[i].free_func(&(p->op[i]));
+         }
+       im->pipe = evas_object_list_remove(im->pipe, p);
+       free(p);
+     }
+}
+
+
+
+/* draw ops */
+/**************** RECT ******************/
+static void
+evas_common_pipe_rectangle_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
+{
+   if (info)
+     {
+       RGBA_Draw_Context context;
+
+       memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
+#ifdef EVAS_SLI
+       evas_common_draw_context_set_sli(&(context), info->y, info->h);
+#else
+       evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
+#endif
+       evas_common_rectangle_draw(dst, &(context),
+                                  op->op.rect.x, op->op.rect.y,
+                                  op->op.rect.w, op->op.rect.h);
+     }
+   else
+     evas_common_rectangle_draw(dst, &(op->context),
+                               op->op.rect.x, op->op.rect.y,
+                               op->op.rect.w, op->op.rect.h);
+}
+
+EAPI void
+evas_common_pipe_rectangle_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
+                               int x, int y, int w, int h)
+{
+   RGBA_Pipe_Op *op;
+
+   if ((w < 1) || (h < 1)) return;
+   dst->pipe = evas_common_pipe_add(dst->pipe, &op);
+   if (!dst->pipe) return;
+   op->op.rect.x = x;
+   op->op.rect.y = y;
+   op->op.rect.w = w;
+   op->op.rect.h = h;
+   op->op_func = evas_common_pipe_rectangle_draw_do;
+   op->free_func = evas_common_pipe_op_free;
+   evas_common_pipe_draw_context_copy(dc, op);
+}
+
+/**************** LINE ******************/
+static void
+evas_common_pipe_line_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
+{
+   if (info)
+     {
+       RGBA_Draw_Context context;
+
+       memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
+#ifdef EVAS_SLI
+       evas_common_draw_context_set_sli(&(context), info->y, info->h);
+#else
+       evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
+#endif
+       evas_common_line_draw(dst, &(context),
+                             op->op.line.x0, op->op.line.y0,
+                             op->op.line.x1, op->op.line.y1);
+     }
+   else
+     evas_common_line_draw(dst, &(op->context),
+                          op->op.line.x0, op->op.line.y0,
+                          op->op.line.x1, op->op.line.y1);
+}
+
+EAPI void
+evas_common_pipe_line_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
+                          int x0, int y0, int x1, int y1)
+{
+   RGBA_Pipe_Op *op;
+
+   dst->pipe = evas_common_pipe_add(dst->pipe, &op);
+   if (!dst->pipe) return;
+   op->op.line.x0 = x0;
+   op->op.line.y0 = y0;
+   op->op.line.x1 = x1;
+   op->op.line.y1 = y1;
+   op->op_func = evas_common_pipe_line_draw_do;
+   op->free_func = evas_common_pipe_op_free;
+   evas_common_pipe_draw_context_copy(dc, op);
+}
+
+/**************** POLY ******************/
+static void
+evas_common_pipe_op_poly_free(RGBA_Pipe_Op *op)
+{
+   RGBA_Polygon_Point *p;
+
+   while (op->op.poly.points)
+     {
+       p = op->op.poly.points;
+       op->op.poly.points = evas_object_list_remove(op->op.poly.points, p);
+       free(p);
+     }
+   evas_common_pipe_op_free(op);
+}
+
+static void
+evas_common_pipe_poly_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
+{
+   if (info)
+     {
+       RGBA_Draw_Context context;
+
+       memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
+#ifdef EVAS_SLI
+       evas_common_draw_context_set_sli(&(context), info->y, info->h);
+#else
+       evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
+#endif
+       evas_common_polygon_draw(dst, &(context),
+                                op->op.poly.points);
+     }
+   else
+     evas_common_polygon_draw(dst, &(op->context),
+                             op->op.poly.points);
+}
+
+EAPI void
+evas_common_pipe_poly_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
+                          RGBA_Polygon_Point *points)
+{
+   RGBA_Pipe_Op *op;
+   RGBA_Polygon_Point *pts = NULL, *p, *pp;
+
+   if (!points) return;
+   dst->pipe = evas_common_pipe_add(dst->pipe, &op);
+   if (!dst->pipe) return;
+   /* FIXME: copy points - maybe we should refcount? */
+   for (p = points; p; p = (RGBA_Polygon_Point *)((Evas_Object_List *)p)->next)
+     {
+       pp = calloc(1, sizeof(RGBA_Polygon_Point));
+       if (pp)
+         {
+            pp->x = p->x;
+            pp->y = p->y;
+            pts = evas_object_list_append(pts, pp);
+         }
+     }
+   op->op.poly.points = pts;
+   op->op_func = evas_common_pipe_poly_draw_do;
+   op->free_func = evas_common_pipe_op_poly_free;
+   evas_common_pipe_draw_context_copy(dc, op);
+}
+
+/**************** GRAD ******************/
+static void
+evas_common_pipe_op_grad_free(RGBA_Pipe_Op *op)
+{
+   evas_common_gradient_free(op->op.grad.grad);
+   evas_common_pipe_op_free(op);
+}
+
+static void
+evas_common_pipe_grad_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
+{
+   if (info)
+     {
+       RGBA_Draw_Context context;
+
+       memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
+#ifdef EVAS_SLI
+       evas_common_draw_context_set_sli(&(context), info->y, info->h);
+#else
+       evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
+#endif
+       evas_common_gradient_draw(dst, &(context),
+                                 op->op.grad.x, op->op.grad.y,
+                                 op->op.grad.w, op->op.grad.h,
+                                 op->op.grad.grad);
+     }
+   else
+     evas_common_gradient_draw(dst, &(op->context),
+                              op->op.grad.x, op->op.grad.y,
+                              op->op.grad.w, op->op.grad.h,
+                              op->op.grad.grad);
+}
+
+EAPI void
+evas_common_pipe_grad_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
+                          int x, int y, int w, int h, RGBA_Gradient *gr)
+{
+   RGBA_Pipe_Op *op;
+
+   if (!gr) return;
+   dst->pipe = evas_common_pipe_add(dst->pipe, &op);
+   if (!dst->pipe) return;
+   op->op.grad.x = x;
+   op->op.grad.y = y;
+   op->op.grad.w = w;
+   op->op.grad.h = h;
+   gr->references++;
+   op->op.grad.grad = gr;
+   op->op_func = evas_common_pipe_grad_draw_do;
+   op->free_func = evas_common_pipe_op_grad_free;
+   evas_common_pipe_draw_context_copy(dc, op);
+}
+
+/**************** TEXT ******************/
+static void
+evas_common_pipe_op_text_free(RGBA_Pipe_Op *op)
+{
+   evas_common_font_free(op->op.text.font);
+   free(op->op.text.text);
+   evas_common_pipe_op_free(op);
+}
+
+static void
+evas_common_pipe_text_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
+{
+   if (info)
+     {
+       RGBA_Draw_Context context;
+
+       memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
+#ifdef EVAS_SLI
+       evas_common_draw_context_set_sli(&(context), info->y, info->h);
+#else
+       evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
+#endif
+       evas_common_font_draw(dst, &(context),
+                             op->op.text.font, op->op.text.x, op->op.text.y,
+                             op->op.text.text);
+     }
+   else
+     evas_common_font_draw(dst, &(op->context),
+                          op->op.text.font, op->op.text.x, op->op.text.y,
+                          op->op.text.text);
+}
+
+EAPI void
+evas_common_pipe_text_draw(RGBA_Image *dst, RGBA_Draw_Context *dc,
+                          RGBA_Font *fn, int x, int y, const char *text)
+{
+   RGBA_Pipe_Op *op;
+
+   if ((!fn) || (!text)) return;
+   dst->pipe = evas_common_pipe_add(dst->pipe, &op);
+   if (!dst->pipe) return;
+   op->op.text.x = x;
+   op->op.text.y = y;
+   op->op.text.text = strdup(text);
+   fn->references++;
+   op->op.text.font = fn;
+   op->op_func = evas_common_pipe_text_draw_do;
+   op->free_func = evas_common_pipe_op_text_free;
+   evas_common_pipe_draw_context_copy(dc, op);
+}
+
+/**************** IMAGE *****************/
+static void
+evas_common_pipe_op_image_free(RGBA_Pipe_Op *op)
+{
+   op->op.image.src->ref--;
+   if (op->op.image.src->ref == 0)
+     evas_cache_image_drop(&op->op.image.src->cache_entry);
+   evas_common_pipe_op_free(op);
+}
+
+static void
+evas_common_pipe_image_draw_do(RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info)
+{
+   if (info)
+     {
+       RGBA_Draw_Context context;
+
+       memcpy(&(context), &(op->context), sizeof(RGBA_Draw_Context));
+#ifdef EVAS_SLI
+       evas_common_draw_context_set_sli(&(context), info->y, info->h);
+#else
+       evas_common_draw_context_clip_clip(&(context), info->x, info->y, info->w, info->h);
+#endif
+       if (op->op.image.smooth)
+         evas_common_scale_rgba_in_to_out_clip_smooth(op->op.image.src,
+                                                      dst, &(context),
+                                                      op->op.image.sx,
+                                                      op->op.image.sy,
+                                                      op->op.image.sw,
+                                                      op->op.image.sh,
+                                                      op->op.image.dx,
+                                                      op->op.image.dy,
+                                                      op->op.image.dw,
+                                                      op->op.image.dh);
+       else
+         evas_common_scale_rgba_in_to_out_clip_sample(op->op.image.src,
+                                                      dst, &(context),
+                                                      op->op.image.sx,
+                                                      op->op.image.sy,
+                                                      op->op.image.sw,
+                                                      op->op.image.sh,
+                                                      op->op.image.dx,
+                                                      op->op.image.dy,
+                                                      op->op.image.dw,
+                                                      op->op.image.dh);
+     }
+   else
+     {
+       if (op->op.image.smooth)
+         evas_common_scale_rgba_in_to_out_clip_smooth(op->op.image.src,
+                                                      dst, &(op->context),
+                                                      op->op.image.sx,
+                                                      op->op.image.sy,
+                                                      op->op.image.sw,
+                                                      op->op.image.sh,
+                                                      op->op.image.dx,
+                                                      op->op.image.dy,
+                                                      op->op.image.dw,
+                                                      op->op.image.dh);
+       else
+         evas_common_scale_rgba_in_to_out_clip_sample(op->op.image.src,
+                                                      dst, &(op->context),
+                                                      op->op.image.sx,
+                                                      op->op.image.sy,
+                                                      op->op.image.sw,
+                                                      op->op.image.sh,
+                                                      op->op.image.dx,
+                                                      op->op.image.dy,
+                                                      op->op.image.dw,
+                                                      op->op.image.dh);
+     }
+}
+
+EAPI void
+evas_common_pipe_image_draw(RGBA_Image *src, RGBA_Image *dst,
+                          RGBA_Draw_Context *dc, int smooth,
+                          int src_region_x, int src_region_y,
+                          int src_region_w, int src_region_h,
+                          int dst_region_x, int dst_region_y,
+                          int dst_region_w, int dst_region_h)
+{
+   RGBA_Pipe_Op *op;
+
+   if (!src) return;
+//   evas_common_pipe_flush(src);
+   dst->pipe = evas_common_pipe_add(dst->pipe, &op);
+   if (!dst->pipe) return;
+   op->op.image.smooth = smooth;
+   op->op.image.sx = src_region_x;
+   op->op.image.sy = src_region_y;
+   op->op.image.sw = src_region_w;
+   op->op.image.sh = src_region_h;
+   op->op.image.dx = dst_region_x;
+   op->op.image.dy = dst_region_y;
+   op->op.image.dw = dst_region_w;
+   op->op.image.dh = dst_region_h;
+   src->ref++;
+   op->op.image.src = src;
+   op->op_func = evas_common_pipe_image_draw_do;
+   op->free_func = evas_common_pipe_op_image_free;
+   evas_common_pipe_draw_context_copy(dc, op);
+}
diff --git a/src/lib/engines/common/evas_pipe.h b/src/lib/engines/common/evas_pipe.h
new file mode 100644 (file)
index 0000000..fec0d2b
--- /dev/null
@@ -0,0 +1,20 @@
+#ifndef _EVAS_PIPE_H
+#define _EVAS_PIPE_H
+
+
+/* image rendering pipelines... new optional system - non-immediate and
+ * threadable
+ */
+
+EAPI void evas_common_pipe_begin(RGBA_Image *im);
+EAPI void evas_common_pipe_flush(RGBA_Image *im);
+EAPI void evas_common_pipe_free(RGBA_Image *im);
+EAPI void evas_common_pipe_rectangle_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h);
+EAPI void evas_common_pipe_line_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1);
+EAPI void evas_common_pipe_poly_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points);
+EAPI void evas_common_pipe_grad_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h, RGBA_Gradient *gr);
+EAPI void evas_common_pipe_text_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Font *fn, int x, int y, const char *text);
+EAPI void evas_common_pipe_image_draw(RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int smooth, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h);
+
+
+#endif /* _EVAS_PIPE_H */
diff --git a/src/lib/engines/common/evas_polygon.h b/src/lib/engines/common/evas_polygon.h
new file mode 100644 (file)
index 0000000..d023568
--- /dev/null
@@ -0,0 +1,13 @@
+#ifndef _EVAS_POLYGON_H
+#define _EVAS_POLYGON_H
+
+
+EAPI void                evas_common_polygon_init         (void);
+
+EAPI RGBA_Polygon_Point *evas_common_polygon_point_add    (RGBA_Polygon_Point *points, int x, int y);
+EAPI RGBA_Polygon_Point *evas_common_polygon_points_clear (RGBA_Polygon_Point *points);
+EAPI void                evas_common_polygon_draw         (RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points);
+
+
+#endif /* _EVAS_POLYGON_H */
+
diff --git a/src/lib/engines/common/evas_polygon_main.c b/src/lib/engines/common/evas_polygon_main.c
new file mode 100644 (file)
index 0000000..66ddb83
--- /dev/null
@@ -0,0 +1,301 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include <math.h>
+
+#include "evas_common.h"
+#include "evas_blend_private.h"
+
+typedef struct _RGBA_Span RGBA_Span;
+typedef struct _RGBA_Edge RGBA_Edge;
+typedef struct _RGBA_Vertex RGBA_Vertex;
+
+struct _RGBA_Span
+{
+   Evas_Object_List _list_data;
+   int x, y, w;
+};
+
+struct _RGBA_Edge
+{
+   double x, dx;
+   int i;
+};
+
+struct _RGBA_Vertex
+{
+   double x, y;
+   int i;
+};
+
+#define POLY_EDGE_DEL(_i)                                               \
+{                                                                       \
+   int _j;                                                              \
+                                                                        \
+   for (_j = 0; (_j < num_active_edges) && (edges[_j].i != _i); _j++);  \
+   if (_j < num_active_edges)                                           \
+     {                                                                  \
+       num_active_edges--;                                             \
+       memmove(&(edges[_j]), &(edges[_j + 1]),                         \
+               (num_active_edges - _j) * sizeof(RGBA_Edge));           \
+     }                                                                  \
+}
+
+#define POLY_EDGE_ADD(_i, _y)                                           \
+{                                                                       \
+   int _j;                                                              \
+   float _dx;                                                           \
+   RGBA_Vertex *_p, *_q;                                                \
+   if (_i < (n - 1)) _j = _i + 1;                                       \
+   else _j = 0;                                                         \
+   if (point[_i].y < point[_j].y)                                       \
+     {                                                                  \
+       _p = &(point[_i]);                                              \
+       _q = &(point[_j]);                                              \
+     }                                                                  \
+   else                                                                 \
+     {                                                                  \
+       _p = &(point[_j]);                                              \
+       _q = &(point[_i]);                                              \
+     }                                                                  \
+   edges[num_active_edges].dx = _dx = (_q->x - _p->x) / (_q->y - _p->y); \
+   edges[num_active_edges].x = (_dx * ((float)_y + 0.5 - _p->y)) + _p->x; \
+   edges[num_active_edges].i = _i;                                      \
+   num_active_edges++;                                                  \
+}
+
+EAPI void
+evas_common_polygon_init(void)
+{
+}
+
+EAPI RGBA_Polygon_Point *
+evas_common_polygon_point_add(RGBA_Polygon_Point *points, int x, int y)
+{
+   RGBA_Polygon_Point *pt;
+
+   pt = malloc(sizeof(RGBA_Polygon_Point));
+   if (!pt) return points;
+   pt->x = x;
+   pt->y = y;
+   points = evas_object_list_append(points, pt);
+   return points;
+}
+
+EAPI RGBA_Polygon_Point *
+evas_common_polygon_points_clear(RGBA_Polygon_Point *points)
+{
+   if (points)
+     {
+       while (points)
+         {
+            RGBA_Polygon_Point *old_p;
+
+            old_p = points;
+            points = evas_object_list_remove(points, points);
+            free(old_p);
+         }
+     }
+   return NULL;
+}
+
+static int
+polygon_point_sorter(const void *a, const void *b)
+{
+   RGBA_Vertex *p, *q;
+
+   p = (RGBA_Vertex *)a;
+   q = (RGBA_Vertex *)b;
+   if (p->y <= q->y) return -1;
+   return 1;
+}
+
+static int
+polygon_edge_sorter(const void *a, const void *b)
+{
+   RGBA_Edge *p, *q;
+
+   p = (RGBA_Edge *)a;
+   q = (RGBA_Edge *)b;
+   if (p->x <= q->x) return -1;
+   return 1;
+}
+
+EAPI void
+evas_common_polygon_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points)
+{
+   RGBA_Gfx_Func      func;
+   RGBA_Polygon_Point *pt;
+   RGBA_Vertex       *point;
+   RGBA_Edge         *edges;
+   Evas_Object_List  *spans, *l;
+   int                num_active_edges;
+   int                n;
+   int                i, j, k;
+   int                y0, y1, y;
+   int                ext_x, ext_y, ext_w, ext_h;
+   int               *sorted_index;
+
+   ext_x = 0;
+   ext_y = 0;
+   ext_w = dst->cache_entry.w;
+   ext_h = dst->cache_entry.h;
+   if (dc->clip.use)
+     {
+       if (dc->clip.x > ext_x)
+         {
+            ext_w += ext_x - dc->clip.x;
+            ext_x = dc->clip.x;
+         }
+       if ((ext_x + ext_w) > (dc->clip.x + dc->clip.w))
+         {
+            ext_w = (dc->clip.x + dc->clip.w) - ext_x;
+         }
+       if (dc->clip.y > ext_y)
+         {
+            ext_h += ext_y - dc->clip.y;
+            ext_y = dc->clip.y;
+         }
+       if ((ext_y + ext_h) > (dc->clip.y + dc->clip.h))
+         {
+            ext_h = (dc->clip.y + dc->clip.h) - ext_y;
+         }
+     }
+   if ((ext_w <= 0) || (ext_h <= 0)) return;
+
+   evas_common_cpu_end_opt();
+
+   n = 0; for (l = (Evas_Object_List *)points; l; l = l->next) n++;
+   if (n < 3) return;
+   edges = malloc(sizeof(RGBA_Edge) * n);
+   if (!edges) return;
+   point = malloc(sizeof(RGBA_Vertex) * n);
+   if (!point)
+     {
+       free(edges);
+       return;
+     }
+   sorted_index = malloc(sizeof(int) * n);
+   if (!sorted_index)
+     {
+       free(edges);
+       free(point);
+       return;
+     }
+
+   k = 0;
+   for (l = (Evas_Object_List *)points; l; l = l->next)
+     {
+       pt = (RGBA_Polygon_Point *)l;
+       point[k].x = pt->x;
+       point[k].y = pt->y;
+       point[k].i = k;
+       k++;
+     }
+   qsort(point, n, sizeof(RGBA_Vertex), polygon_point_sorter);
+   for (k = 0; k < n; k++) sorted_index[k] = point[k].i;
+   k = 0;
+   for (l = (Evas_Object_List *)points; l; l = l->next)
+     {
+       pt = (RGBA_Polygon_Point *)l;
+       point[k].x = pt->x;
+       point[k].y = pt->y;
+       point[k].i = k;
+       k++;
+     }
+
+   y0 = MAX(ext_y, ceil(point[sorted_index[0]].y - 0.5));
+   y1 = MIN(ext_y + ext_h - 1, floor(point[sorted_index[n - 1]].y - 0.5));
+
+   k = 0;
+   num_active_edges = 0;
+   spans = NULL;
+
+   for (y = y0; y <= y1; y++)
+     {
+       for (; (k < n) && (point[sorted_index[k]].y <= ((double)y + 0.5)); k++)
+         {
+            i = sorted_index[k];
+
+            if (i > 0) j = i - 1;
+            else j = n - 1;
+            if (point[j].y <= ((double)y - 0.5))
+              {
+                 POLY_EDGE_DEL(j)
+              }
+            else if (point[j].y > ((double)y + 0.5))
+              {
+                 POLY_EDGE_ADD(j, y)
+              }
+            if (i < (n - 1)) j = i + 1;
+            else j = 0;
+            if (point[j].y <= ((double)y - 0.5))
+              {
+                 POLY_EDGE_DEL(i)
+              }
+            else if (point[j].y > ((double)y + 0.5))
+              {
+                 POLY_EDGE_ADD(i, y)
+              }
+         }
+
+       qsort(edges, num_active_edges, sizeof(RGBA_Edge), polygon_edge_sorter);
+
+       for (j = 0; j < num_active_edges; j += 2)
+         {
+            int x0, x1;
+
+            x0 = ceil(edges[j].x - 0.5);
+            if (j < (num_active_edges - 1))
+              x1 = floor(edges[j + 1].x - 0.5);
+            else
+              x1 = x0;
+            if ((x1 >= ext_x) && (x0 < (ext_x + ext_w)) && (x0 <= x1))
+              {
+                 RGBA_Span *span;
+
+                 if (x0 < ext_x) x0 = ext_x;
+                 if (x1 >= (ext_x + ext_w)) x1 = ext_x + ext_w - 1;
+                 span = malloc(sizeof(RGBA_Span));
+                 spans = evas_object_list_append(spans, span);
+                 span->y = y;
+                 span->x = x0;
+                 span->w = (x1 - x0) + 1;
+              }
+            edges[j].x += edges[j].dx;
+            edges[j + 1].x += edges[j + 1].dx;
+         }
+     }
+
+   free(edges);
+   free(point);
+   free(sorted_index);
+
+   func = evas_common_gfx_func_composite_color_span_get(dc->col.col, dst, 1, dc->render_op);
+   if (spans)
+     {
+       for (l = spans; l; l = l->next)
+         {
+            RGBA_Span *span;
+            DATA32 *ptr;
+
+            span = (RGBA_Span *)l;
+#ifdef EVAS_SLI
+            if (((span->y) % dc->sli.h) == dc->sli.y)
+#endif
+              {
+                 ptr = dst->image.data + (span->y * (dst->cache_entry.w)) + span->x;
+                 func(NULL, NULL, dc->col.col, ptr, span->w);
+              }
+         }
+       while (spans)
+         {
+            RGBA_Span *span;
+
+            span = (RGBA_Span *)spans;
+            spans = evas_object_list_remove(spans, spans);
+            free(span);
+         }
+     }
+}
diff --git a/src/lib/engines/common/evas_rectangle.h b/src/lib/engines/common/evas_rectangle.h
new file mode 100644 (file)
index 0000000..a653b04
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef _EVAS_RECTANGLE_H
+#define _EVAS_RECTANGLE_H
+
+
+EAPI void           evas_common_rectangle_init          (void);
+
+EAPI void           evas_common_rectangle_draw          (RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h);
+
+
+#endif /* _EVAS_RECTANGLE_H */
+
diff --git a/src/lib/engines/common/evas_rectangle_main.c b/src/lib/engines/common/evas_rectangle_main.c
new file mode 100644 (file)
index 0000000..c457848
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_blend_private.h"
+
+static void rectangle_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h);
+
+EAPI void
+evas_common_rectangle_init(void)
+{
+}
+
+EAPI void
+evas_common_rectangle_draw(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h)
+{
+   Cutout_Rects *rects;
+   Cutout_Rect  *r;
+   int          c, cx, cy, cw, ch;
+   int          i;
+   /* handle cutouts here! */
+
+   if ((w <= 0) || (h <= 0)) return;
+   if (!(RECTS_INTERSECT(x, y, w, h, 0, 0, dst->cache_entry.w, dst->cache_entry.h)))
+     return;
+   /* save out clip info */
+   c = dc->clip.use; cx = dc->clip.x; cy = dc->clip.y; cw = dc->clip.w; ch = dc->clip.h;
+   evas_common_draw_context_clip_clip(dc, 0, 0, dst->cache_entry.w, dst->cache_entry.h);
+   /* no cutouts - cut right to the chase */
+   if (!dc->cutout.rects)
+     {
+       rectangle_draw_internal(dst, dc, x, y, w, h);
+     }
+   else
+     {
+       evas_common_draw_context_clip_clip(dc, x, y, w, h);
+       /* our clip is 0 size.. abort */
+       if ((dc->clip.w > 0) && (dc->clip.h > 0))
+         {
+            rects = evas_common_draw_context_apply_cutouts(dc);
+            for (i = 0; i < rects->active; ++i)
+              {
+                 r = rects->rects + i;
+                 evas_common_draw_context_set_clip(dc, r->x, r->y, r->w, r->h);
+                 rectangle_draw_internal(dst, dc, x, y, w, h);
+              }
+            evas_common_draw_context_apply_clear_cutouts(rects);
+         }
+     }
+   /* restore clip info */
+   dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
+}
+
+static void
+rectangle_draw_internal(RGBA_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h)
+{
+   RGBA_Gfx_Func func;
+   int yy;
+   DATA32 *ptr;
+
+   RECTS_CLIP_TO_RECT(x, y, w, h, dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
+   if ((w <= 0) || (h <= 0)) return;
+
+   func = evas_common_gfx_func_composite_color_span_get(dc->col.col, dst, w, dc->render_op);
+   ptr = dst->image.data + (y * dst->cache_entry.w) + x;
+   for (yy = 0; yy < h; yy++)
+     {
+#ifdef EVAS_SLI
+       if (((yy + y) % dc->sli.h) == dc->sli.y)
+#endif
+         {
+            func(NULL, NULL, dc->col.col, ptr, w);
+         }
+       ptr += dst->cache_entry.w;
+     }
+}
diff --git a/src/lib/engines/common/evas_regionbuf.c b/src/lib/engines/common/evas_regionbuf.c
new file mode 100644 (file)
index 0000000..2e5150e
--- /dev/null
@@ -0,0 +1,357 @@
+#include "evas_common.h"
+
+#if 0
+Regionbuf *
+evas_common_regionbuf_new(int w, int h)
+{
+   Regionbuf *rb;
+
+   rb = calloc(1, sizeof(Regionbuf) + (h * sizeof(Regionspan)));
+   if (!rb) return NULL;
+   rb->spans = (Regionspan **)(rb + sizeof(Regionbuf));
+   rb->w = w;
+   rb->h = h;
+   return rb;
+}
+
+void
+evas_common_regionbuf_free(Regionbuf *rb)
+{
+   evas_common_regionbuf_clear(rb);
+   free(rb);
+}
+
+void
+evas_common_regionbuf_clear(Regionbuf *rb)
+{
+   int y;
+
+   for (y = 0; y < rb->h; y++)
+     {
+       while (rb->spans[y])
+         {
+            Regionspan *span;
+
+            span = rb->spans[y];
+            rb->spans[y] = evas_object_list_remove(rb->spans[y], rb->spans[y]);
+            free(span);
+         }
+     }
+}
+
+void
+evas_common_regionbuf_span_add(Regionbuf *rb, int x1, int x2, int y)
+{
+   Evas_Object_List *l;
+   Regionspan *span, *span2, *nspan, *sp_start, *sp_stop;
+
+   /* abort if outside */
+   if ((y < 0) ||
+       (y >= rb->h) ||
+       (x2 < 0) ||
+       (x1 >= rb->w)) return;
+   /* clip to horiz bounds */
+   if (x1 < 0) x1 = 0;
+   if (x2 < (rb->w - 1)) x2 = rb->w - 1;
+   sp_start = NULL;
+   sp_stop = NULL;
+   for (l = (Evas_Object_List *)rb->spans[y]; l; l = l->next)
+     {
+       span = (Regionspan *)l;
+       nspan = (Regionspan *)l->next;
+       /* we dont know what t do with the span yet */
+       if (!sp_start)
+         {
+            /* if new span starts before or on this span or just after
+             * with no gap */
+            if (x1 <= (span->x2 + 1))
+              sp_start = span;
+            /* if there is no next span */
+            if (!nspan)
+              {
+                 sp_stop = span;
+                 break;
+              }
+            /* if new span ends before the next span starts with a gap of
+             * 1 pixel (or more) */
+            else if (x2 < (nspan->x1 - 1))
+              {
+                 sp_stop = span;
+                 break;
+              }
+         }
+       /* we already know it already starts before or in sp_start */
+       else
+         {
+            /* there is no span after this one, so this has to be the stop */
+            if (!nspan)
+              {
+                 sp_stop = span;
+                 break;
+              }
+            /* if new span ends before the next span starts with a gap of
+             * 1 pixel (or more) */
+            else if (x2 < (nspan->x1 - 1))
+              {
+                 sp_stop = span;
+                 break;
+              }
+         }
+     }
+   /* sp_start is where the new span starts in or before */
+   /* sp_stop is where the new span stops in or after */
+   if ((sp_start) && (sp_stop))
+     {
+       /* same start and stop */
+       if (sp_start == sp_stop)
+         {
+            if (x2 < (sp_start->x1 - 1))
+              {
+                 span2 = calloc(1, sizeof(Regionspan));
+                 span2->x1 = x1;
+                 span2->x2 = x2;
+                 rb->spans[y] = evas_object_list_prepend_relative(rb->spans[y], span2, sp_start);
+                 return;
+              }
+            if (x1 < sp_start->x1)
+              sp_start->x1 = x1;
+            if (x2 > sp_start->x2)
+              sp_start->x2 = x2;
+            return;
+         }
+       else
+         {
+            /* remove all nodes after sp_start and before_sp_stop because
+             * the new  */
+            for (l = ((Evas_Object_List *)sp_start)->next; l != (Evas_Object_List *)sp_stop;)
+              {
+                 span = (Regionspan *)l;
+                 l = l->next;
+                 rb->spans[y] = evas_object_list_remove(rb->spans[y], span);
+                 free(span);
+              }
+            /* remove the end span */
+            rb->spans[y] = evas_object_list_remove(rb->spans[y], sp_stop);
+            /* if the new span is before the start span - extend */
+            if (x1 < sp_start->x1)
+              sp_start->x1 = x1;
+            /* if it goes beyond the stop span - extend stop span */
+            if (x2 > sp_stop->x2)
+              sp_stop->x2 = x2;
+            /* extend start span to stop span */
+            sp_start->x2 = sp_stop->x2;
+            /* don't need stop span anymore */
+            free(sp_stop);
+            return;
+         }
+     }
+   /* no start AND stop... just append */
+   span2 = calloc(1, sizeof(Regionspan));
+   span2->x1 = x1;
+   span2->x2 = x2;
+   rb->spans[y] = evas_object_list_append(rb->spans[y], span2);
+}
+
+void
+evas_common_regionbuf_span_del(Regionbuf *rb, int x1, int x2, int y)
+{
+   /* FIXME: del span */
+   Evas_Object_List *l;
+   Regionspan *span, *span2, *nspan, *sp_start, *sp_stop;
+
+   /* abort if outside */
+   if ((y < 0) ||
+       (y >= rb->h) ||
+       (x2 < 0) ||
+       (x1 >= rb->w)) return;
+   /* clip to horiz bounds */
+   if (x1 < 0) x1 = 0;
+   if (x2 < (rb->w - 1)) x2 = rb->w - 1;
+   sp_start = NULL;
+   sp_stop = NULL;
+   for (l = (Evas_Object_List *)rb->spans[y]; l; l = l->next)
+     {
+       span = (Regionspan *)l;
+       nspan = (Regionspan *)l->next;
+       /* we dont know what t do with the span yet */
+       if (!sp_start)
+         {
+            /* if new span starts before or on this span or just after
+             * with no gap */
+            if (x1 <= (span->x2))
+              sp_start = span;
+            /* if there is no next span */
+            if (!nspan)
+              {
+                 sp_stop = span;
+                 break;
+              }
+            /* if new span ends before the next span starts with a gap of
+             * 1 pixel (or more) */
+            else if (x2 < nspan->x1)
+              {
+                 sp_stop = span;
+                 break;
+              }
+         }
+       /* we already know it already starts before or in sp_start */
+       else
+         {
+            /* there is no span after this one, so this has to be the stop */
+            if (!nspan)
+              {
+                 sp_stop = span;
+                 break;
+              }
+            /* if new span ends before the next span starts with a gap of
+             * 1 pixel (or more) */
+            else if (x2 < nspan->x1)
+              {
+                 sp_stop = span;
+                 break;
+              }
+         }
+     }
+   /* sp_start is where the new span starts in or before */
+   /* sp_stop is where the new span stops in or after */
+   if ((sp_start) && (sp_stop))
+     {
+       /* same start and stop */
+       if (sp_start == sp_stop)
+         {
+            /* if it ends before this the span start starts... return */
+            if (x2 < sp_start->x1)
+              return;
+            /* it starts on or before this span */
+            else if (x1 <= sp_start->x1)
+              {
+                 /* right edge is within the span */
+                 if (x2 < sp_start->x2)
+                   {
+                      sp_start->x2 = x2;
+                      return;
+                   }
+                 else
+                   {
+                      rb->spans[y] = evas_object_list_remove(rb->spans[y], sp_start);
+                      return;
+                   }
+              }
+            /* it ends on or after the end of thsi span */
+            else if (x2 >= sp_start->x2)
+              {
+                 /* it starts after the start */
+                 if (x1 > sp_start->x1)
+                   {
+                      sp_start->x1 = x1;
+                      return;
+                   }
+                 /* remove it all */
+                 else
+                   {
+                      rb->spans[y] = evas_object_list_remove(rb->spans[y], sp_start);
+                      return;
+                   }
+                 return;
+              }
+            /* this breaks the span into 2 */
+            else
+              {
+                 span2 = calloc(1, sizeof(Regionspan));
+                 span2->x1 = sp_start->x1;
+                 span2->x2 = x1 - 1;
+                 rb->spans[y] = evas_object_list_prepend_relative(rb->spans[y], span2, sp_start);
+                 sp_start->x1 = x2 + 1;
+                 return;
+              }
+         }
+       else
+         {
+            /* remove all nodes after sp_start and before_sp_stop because
+             * the new  */
+            for (l = ((Evas_Object_List *)sp_start)->next; l != (Evas_Object_List *)sp_stop;)
+              {
+                 span = (Regionspan *)l;
+                 l = l->next;
+                 rb->spans[y] = evas_object_list_remove(rb->spans[y], span);
+                 free(span);
+              }
+            /* all of the start span is cut out */
+            if (x1 <= sp_start->x1)
+              {
+                 rb->spans[y] = evas_object_list_remove(rb->spans[y], sp_start);
+                 free(sp_start);
+              }
+            /* chup it off at the new span start */
+            else
+              sp_start->x2 = x1 - 1;
+            /* all of the end span is cut out */
+            if (x2 >= sp_stop->x2)
+              {
+                 rb->spans[y] = evas_object_list_remove(rb->spans[y], sp_stop);
+                 free(sp_stop);
+              }
+            /* chop it up at the end */
+            else
+              sp_stop->x1 = x2 + 1;
+            return;
+         }
+     }
+}
+
+Tilebuf_Rect *
+evas_common_regionbuf_rects_get(Regionbuf *rb)
+{
+   Tilebuf_Rect *rects = NULL, *r;
+   int y;
+
+   /* FIXME: take spans, make rects */
+   for (y = 0; y < rb->h; y++)
+     {
+       Evas_Object_List *l, *ll;
+
+       for (l = (Evas_Object_List *)rb->spans[y]; l;)
+         {
+            Regionspan *span;
+            Regionspan *sp_start;
+            int yy;
+
+            sp_start = (Regionspan *)l;
+            l = l->next;
+            rb->spans[y] = evas_object_list_remove(rb->spans[y], sp_start);
+            for (yy = y + 1; yy < rb->h; yy++)
+              {
+                 int match = 0;
+
+                 for (ll = (Evas_Object_List *)rb->spans[yy]; ll;)
+                   {
+                      span = (Regionspan *)ll;
+                      ll = ll->next;
+                      if (span->x1 == sp_start->x1)
+                        {
+                           if ((span->x1 != sp_start->x1) ||
+                               (span->x2 != sp_start->x2))
+                             {
+                                goto coallate;
+                             }
+                           match = 1;
+                           rb->spans[yy] = evas_object_list_remove(rb->spans[yy], span);
+                           free(span);
+                        }
+                   }
+                 if (!match) goto coallate;
+              }
+            coallate:
+            r = calloc(1, sizeof(Tilebuf_Rect));
+            r->x = sp_start->x1;
+            r->y = y;
+            r->w = sp_start->x2 - sp_start->x1 + 1;
+            r->h = yy - y;
+            rects = evas_object_list_append(rects, r);
+            free(sp_start);
+         }
+     }
+   evas_common_regionbuf_clear(rb);
+   return rects;
+}
+#endif
diff --git a/src/lib/engines/common/evas_scale_main.c b/src/lib/engines/common/evas_scale_main.c
new file mode 100644 (file)
index 0000000..8f0f535
--- /dev/null
@@ -0,0 +1,10 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+
+EAPI void
+evas_common_scale_init(void)
+{
+}
diff --git a/src/lib/engines/common/evas_scale_main.h b/src/lib/engines/common/evas_scale_main.h
new file mode 100644 (file)
index 0000000..5da6bdc
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_SCALE_MAIN_H
+#define _EVAS_SCALE_MAIN_H
+
+
+EAPI void evas_common_scale_init                            (void);
+
+EAPI void evas_common_scale_rgba_in_to_out_clip_smooth      (RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h);
+
+EAPI void evas_common_scale_rgba_in_to_out_clip_sample      (RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h);
+
+
+#endif /* _EVAS_SCALE_MAIN_H */
diff --git a/src/lib/engines/common/evas_scale_sample.c b/src/lib/engines/common/evas_scale_sample.c
new file mode 100644 (file)
index 0000000..0d57717
--- /dev/null
@@ -0,0 +1,338 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_blend_private.h"
+
+void scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h);
+
+#ifndef BUILD_SCALE_SMOOTH
+#ifdef BUILD_SCALE_SAMPLE
+EAPI void
+evas_common_scale_rgba_in_to_out_clip_smooth(RGBA_Image *src, RGBA_Image *dst,
+                                RGBA_Draw_Context *dc,
+                                int src_region_x, int src_region_y,
+                                int src_region_w, int src_region_h,
+                                int dst_region_x, int dst_region_y,
+                                int dst_region_w, int dst_region_h)
+{
+   evas_common_scale_rgba_in_to_out_clip_sample(src, dst, dc,
+                                   src_region_x, src_region_y,
+                                   src_region_w, src_region_h,
+                                   dst_region_x, dst_region_y,
+                                   dst_region_w, dst_region_h);
+}
+#endif
+#endif
+
+#ifdef BUILD_SCALE_SAMPLE
+EAPI void
+evas_common_scale_rgba_in_to_out_clip_sample(RGBA_Image *src, RGBA_Image *dst,
+                                RGBA_Draw_Context *dc,
+                                int src_region_x, int src_region_y,
+                                int src_region_w, int src_region_h,
+                                int dst_region_x, int dst_region_y,
+                                int dst_region_w, int dst_region_h)
+{
+   Cutout_Rects *rects;
+   Cutout_Rect  *r;
+   int          c, cx, cy, cw, ch;
+   int          i;
+   /* handle cutouts here! */
+
+   if ((dst_region_w <= 0) || (dst_region_h <= 0)) return;
+   if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h)))
+     return;
+   /* no cutouts - cut right to the chase */
+   if (!dc->cutout.rects)
+     {
+       scale_rgba_in_to_out_clip_sample_internal(src, dst, dc,
+                                                 src_region_x, src_region_y,
+                                                 src_region_w, src_region_h,
+                                                 dst_region_x, dst_region_y,
+                                                 dst_region_w, dst_region_h);
+       return;
+     }
+   /* save out clip info */
+   c = dc->clip.use; cx = dc->clip.x; cy = dc->clip.y; cw = dc->clip.w; ch = dc->clip.h;
+   evas_common_draw_context_clip_clip(dc, 0, 0, dst->cache_entry.w, dst->cache_entry.h);
+   evas_common_draw_context_clip_clip(dc, dst_region_x, dst_region_y, dst_region_w, dst_region_h);
+   /* our clip is 0 size.. abort */
+   if ((dc->clip.w <= 0) || (dc->clip.h <= 0))
+     {
+       dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
+       return;
+     }
+   rects = evas_common_draw_context_apply_cutouts(dc);
+   for (i = 0; i < rects->active; ++i)
+     {
+       r = rects->rects + i;
+       evas_common_draw_context_set_clip(dc, r->x, r->y, r->w, r->h);
+       scale_rgba_in_to_out_clip_sample_internal(src, dst, dc,
+                                                 src_region_x, src_region_y,
+                                                 src_region_w, src_region_h,
+                                                 dst_region_x, dst_region_y,
+                                                 dst_region_w, dst_region_h);
+
+     }
+   evas_common_draw_context_apply_clear_cutouts(rects);
+   /* restore clip info */
+   dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
+}
+
+void
+scale_rgba_in_to_out_clip_sample_internal(RGBA_Image *src, RGBA_Image *dst,
+                                         RGBA_Draw_Context *dc,
+                                         int src_region_x, int src_region_y,
+                                         int src_region_w, int src_region_h,
+                                         int dst_region_x, int dst_region_y,
+                                         int dst_region_w, int dst_region_h)
+{
+   int      x, y;
+   int     *lin_ptr;
+   DATA32  *buf, *dptr;
+   DATA32 **row_ptr;
+   DATA32  *ptr, *dst_ptr, *src_data, *dst_data;
+   int      dst_jump;
+   int      dst_clip_x, dst_clip_y, dst_clip_w, dst_clip_h;
+   int      src_w, src_h, dst_w, dst_h;
+   RGBA_Gfx_Func func;
+
+   if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h)))
+     return;
+   if (!(RECTS_INTERSECT(src_region_x, src_region_y, src_region_w, src_region_h, 0, 0, src->cache_entry.w, src->cache_entry.h)))
+     return;
+
+   src_w = src->cache_entry.w;
+   src_h = src->cache_entry.h;
+   dst_w = dst->cache_entry.w;
+   dst_h = dst->cache_entry.h;
+
+   src_data = src->image.data;
+   dst_data = dst->image.data;
+
+   if (dc->clip.use)
+     {
+       dst_clip_x = dc->clip.x;
+       dst_clip_y = dc->clip.y;
+       dst_clip_w = dc->clip.w;
+       dst_clip_h = dc->clip.h;
+       if (dst_clip_x < 0)
+         {
+            dst_clip_w += dst_clip_x;
+            dst_clip_x = 0;
+         }
+       if (dst_clip_y < 0)
+         {
+            dst_clip_h += dst_clip_y;
+            dst_clip_y = 0;
+         }
+       if ((dst_clip_x + dst_clip_w) > dst_w)
+         dst_clip_w = dst_w - dst_clip_x;
+       if ((dst_clip_y + dst_clip_h) > dst_h)
+         dst_clip_h = dst_h - dst_clip_y;
+     }
+   else
+     {
+       dst_clip_x = 0;
+       dst_clip_y = 0;
+       dst_clip_w = dst_w;
+       dst_clip_h = dst_h;
+     }
+
+   if (dst_clip_x < dst_region_x)
+     {
+       dst_clip_w += dst_clip_x - dst_region_x;
+       dst_clip_x = dst_region_x;
+     }
+   if ((dst_clip_x + dst_clip_w) > (dst_region_x + dst_region_w))
+     dst_clip_w = dst_region_x + dst_region_w - dst_clip_x;
+   if (dst_clip_y < dst_region_y)
+     {
+       dst_clip_h += dst_clip_y - dst_region_y;
+       dst_clip_y = dst_region_y;
+     }
+   if ((dst_clip_y + dst_clip_h) > (dst_region_y + dst_region_h))
+     dst_clip_h = dst_region_y + dst_region_h - dst_clip_y;
+
+   if ((src_region_w <= 0) || (src_region_h <= 0) ||
+       (dst_region_w <= 0) || (dst_region_h <= 0) ||
+       (dst_clip_w <= 0) || (dst_clip_h <= 0))
+     return;
+
+   /* sanitise x */
+   if (src_region_x < 0)
+     {
+       dst_region_x -= (src_region_x * dst_region_w) / src_region_w;
+       dst_region_w += (src_region_x * dst_region_w) / src_region_w;
+       src_region_w += src_region_x;
+       src_region_x = 0;
+     }
+   if (src_region_x >= src_w) return;
+   if ((src_region_x + src_region_w) > src_w)
+     {
+       dst_region_w = (dst_region_w * (src_w - src_region_x)) / (src_region_w);
+       src_region_w = src_w - src_region_x;
+     }
+   if (dst_region_w <= 0) return;
+   if (src_region_w <= 0) return;
+   if (dst_clip_x < 0)
+     {
+       dst_clip_w += dst_clip_x;
+       dst_clip_x = 0;
+     }
+   if (dst_clip_w <= 0) return;
+   if (dst_clip_x >= dst_w) return;
+   if (dst_clip_x < dst_region_x)
+     {
+       dst_clip_w += (dst_clip_x - dst_region_x);
+       dst_clip_x = dst_region_x;
+     }
+   if ((dst_clip_x + dst_clip_w) > dst_w)
+     {
+       dst_clip_w = dst_w - dst_clip_x;
+     }
+   if (dst_clip_w <= 0) return;
+
+   /* sanitise y */
+   if (src_region_y < 0)
+     {
+       dst_region_y -= (src_region_y * dst_region_h) / src_region_h;
+       dst_region_h += (src_region_y * dst_region_h) / src_region_h;
+       src_region_h += src_region_y;
+       src_region_y = 0;
+     }
+   if (src_region_y >= src_h) return;
+   if ((src_region_y + src_region_h) > src_h)
+     {
+       dst_region_h = (dst_region_h * (src_h - src_region_y)) / (src_region_h);
+       src_region_h = src_h - src_region_y;
+     }
+   if (dst_region_h <= 0) return;
+   if (src_region_h <= 0) return;
+   if (dst_clip_y < 0)
+     {
+       dst_clip_h += dst_clip_y;
+       dst_clip_y = 0;
+     }
+   if (dst_clip_h <= 0) return;
+   if (dst_clip_y >= dst_h) return;
+   if (dst_clip_y < dst_region_y)
+     {
+       dst_clip_h += (dst_clip_y - dst_region_y);
+       dst_clip_y = dst_region_y;
+     }
+   if ((dst_clip_y + dst_clip_h) > dst_h)
+     {
+       dst_clip_h = dst_h - dst_clip_y;
+     }
+   if (dst_clip_h <= 0) return;
+
+   /* allocate scale lookup tables */
+   lin_ptr = alloca(dst_clip_w * sizeof(int));
+   row_ptr = alloca(dst_clip_h * sizeof(DATA32 *));
+
+   /* figure out dst jump */
+   dst_jump = dst_w - dst_clip_w;
+
+   /* figure out dest start ptr */
+   dst_ptr = dst_data + dst_clip_x + (dst_clip_y * dst_w);
+
+   if (dc->mul.use)
+     func = evas_common_gfx_func_composite_pixel_color_span_get(src, dc->mul.col, dst, dst_clip_w, dc->render_op);
+   else
+     func = evas_common_gfx_func_composite_pixel_span_get(src, dst, dst_clip_w, dc->render_op);
+
+   if ((dst_region_w == src_region_w) && (dst_region_h == src_region_h))
+     {
+       ptr = src_data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x;
+       for (y = 0; y < dst_clip_h; y++)
+         {
+           /* * blend here [clip_w *] ptr -> dst_ptr * */
+#ifdef EVAS_SLI
+            if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y)
+#endif
+              {
+                 func(ptr, NULL, dc->mul.col, dst_ptr, dst_clip_w);
+              }
+           ptr += src_w;
+           dst_ptr += dst_w;
+         }
+     }
+   else
+     {
+       /* fill scale tables */
+       for (x = 0; x < dst_clip_w; x++)
+           lin_ptr[x] = (((x + dst_clip_x - dst_region_x) * src_region_w) / dst_region_w) + src_region_x;
+       for (y = 0; y < dst_clip_h; y++)
+           row_ptr[y] = src_data + (((((y + dst_clip_y - dst_region_y) * src_region_h) / dst_region_h)
+                       + src_region_y) * src_w);
+       /* scale to dst */
+       dptr = dst_ptr;
+#ifdef DIRECT_SCALE
+       if ((!src->cache_entry.flags.alpha) &&
+            (!dst->cache_entry.flags.alpha) &&
+            (!dc->mul.use))
+         {
+            for (y = 0; y < dst_clip_h; y++)
+              {
+#ifdef EVAS_SLI
+                if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y)
+#endif
+                  {
+                     dst_ptr = dptr;
+                     for (x = 0; x < dst_clip_w; x++)
+                       {
+                          ptr = row_ptr[y] + lin_ptr[x];
+                          *dst_ptr = *ptr;
+                          dst_ptr++;
+                       }
+                  }
+                dptr += dst_w;
+             }
+         }
+       else
+#endif
+         {
+           /* a scanline buffer */
+           buf = alloca(dst_clip_w * sizeof(DATA32));
+           for (y = 0; y < dst_clip_h; y++)
+             {
+#ifdef EVAS_SLI
+                if (((y + dst_clip_y) % dc->sli.h) == dc->sli.y)
+#endif
+                  {
+                     dst_ptr = buf;
+                     for (x = 0; x < dst_clip_w; x++)
+                       {
+                          ptr = row_ptr[y] + lin_ptr[x];
+                          *dst_ptr = *ptr;
+                          dst_ptr++;
+                       }
+                     /* * blend here [clip_w *] buf -> dptr * */
+                     func(buf, NULL, dc->mul.col, dptr, dst_clip_w);
+                  }
+               dptr += dst_w;
+             }
+         }
+     }
+}
+#else
+#ifdef BUILD_SCALE_SMOOTH
+EAPI void
+evas_common_scale_rgba_in_to_out_clip_sample(RGBA_Image *src, RGBA_Image *dst,
+                                RGBA_Draw_Context *dc,
+                                int src_region_x, int src_region_y,
+                                int src_region_w, int src_region_h,
+                                int dst_region_x, int dst_region_y,
+                                int dst_region_w, int dst_region_h)
+{
+   evas_common_scale_rgba_in_to_out_clip_smooth(src, dst, dc,
+                                   src_region_x, src_region_y,
+                                   src_region_w, src_region_h,
+                                   dst_region_x, dst_region_y,
+                                   dst_region_w, dst_region_h);
+}
+#endif
+#endif
diff --git a/src/lib/engines/common/evas_scale_smooth.c b/src/lib/engines/common/evas_scale_smooth.c
new file mode 100644 (file)
index 0000000..dcdcff6
--- /dev/null
@@ -0,0 +1,525 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_scale_smooth.h"
+#include "evas_blend_private.h"
+
+
+static DATA32 **scale_calc_y_points(DATA32 *src, int sw, int sh, int dh);
+static int     *scale_calc_x_points(int sw, int dw);
+static int     *scale_calc_a_points(int s, int d);
+
+static DATA32 **
+scale_calc_y_points(DATA32 *src, int sw, int sh, int dh)
+{
+   DATA32 **p;
+   int i, val, inc;
+
+   p = malloc((dh + 1) * sizeof(DATA32 *));
+   if (!p) return NULL;
+   val = 0;
+   inc = (sh << 16) / dh;
+   for (i = 0; i < dh; i++)
+     {
+       p[i] = src + ((val >> 16) * sw);
+       val += inc;
+     }
+   p[i] = p[i - 1];
+   return p;
+}
+
+static int *
+scale_calc_x_points(int sw, int dw)
+{
+   int *p;
+   int i, val, inc;
+
+   p = malloc((dw + 1) * sizeof(int));
+   if (!p) return NULL;
+   val = 0;
+   inc = (sw << 16) / dw;
+   for (i = 0; i < dw; i++)
+     {
+       p[i] = val >> 16;
+       val += inc;
+     }
+   p[i] = p[i - 1];
+   return p;
+}
+
+static int *
+scale_calc_a_points(int s, int d)
+{
+   int *p;
+   int i, val, inc;
+
+   p = malloc(d * sizeof(int));
+   if (!p) return NULL;
+   if (d >= s)
+     {
+       val = 0;
+       inc = (s << 16) / d;
+       for (i = 0; i < d; i++)
+         {
+            p[i] = (val >> 8) - ((val >> 8) & 0xffffff00);
+            if ((val >> 16) >= (s - 1)) p[i] = 0;
+            val += inc;
+         }
+     }
+   else
+     {
+       int ap, Cp;
+
+       val = 0;
+       inc = (s << 16) / d;
+       Cp = ((d << 14) / s) + 1;
+       for (i = 0; i < d; i++)
+         {
+            ap = ((0x100 - ((val >> 8) & 0xff)) * Cp) >> 8;
+            p[i] = ap | (Cp << 16);
+            val += inc;
+         }
+     }
+//   sleep(1);
+   return p;
+}
+
+#ifdef BUILD_SCALE_SMOOTH
+#ifdef BUILD_C
+EAPI void
+evas_common_scale_rgba_mipmap_down_2x2_c(DATA32 *src, DATA32 *dst, int src_w, int src_h)
+{
+   int x, y, dst_w, dst_h;
+   DATA32 *src_ptr, *src_ptr2, *dst_ptr;
+
+   dst_w = src_w >> 1;
+   dst_h = src_h >> 1;
+
+   if (dst_w < 1) dst_w = 1;
+   if (dst_h < 1) dst_h = 1;
+
+   src_ptr = src;
+   src_ptr2 = src + src_w;
+   dst_ptr = dst;
+   for (y = 0; y < dst_h; y++)
+     {
+       src_ptr = src + (y * src_w * 2);
+       src_ptr2 = src_ptr + src_w;
+       for (x = 0; x < dst_w; x++)
+         {
+            R_VAL(dst_ptr) = (R_VAL(src_ptr) + R_VAL(src_ptr + 1) + R_VAL(src_ptr2) + R_VAL(src_ptr2 + 1)) >> 2;
+            G_VAL(dst_ptr) = (G_VAL(src_ptr) + G_VAL(src_ptr + 1) + G_VAL(src_ptr2) + G_VAL(src_ptr2 + 1)) >> 2;
+            B_VAL(dst_ptr) = (B_VAL(src_ptr) + B_VAL(src_ptr + 1) + B_VAL(src_ptr2) + B_VAL(src_ptr2 + 1)) >> 2;
+            A_VAL(dst_ptr) = (A_VAL(src_ptr) + A_VAL(src_ptr + 1) + A_VAL(src_ptr2) + A_VAL(src_ptr2 + 1)) >> 2;
+
+            src_ptr+=2;
+            src_ptr2+=2;
+            dst_ptr++;
+         }
+     }
+}
+#endif
+#endif
+
+#ifdef BUILD_SCALE_SMOOTH
+#ifdef BUILD_C
+EAPI void
+evas_common_scale_rgba_mipmap_down_2x1_c(DATA32 *src, DATA32 *dst, int src_w, int src_h)
+{
+   int x, y, dst_w, dst_h;
+   DATA32 *src_ptr, *dst_ptr;
+
+   dst_w = src_w >> 1;
+   dst_h = src_h >> 1;
+
+   if (dst_w < 1) dst_w = 1;
+   if (dst_h < 1) dst_h = 1;
+
+   src_ptr = src;
+   dst_ptr = dst;
+   for (y = 0; y < dst_h; y++)
+     {
+       src_ptr = src + (y * src_w * 2);
+       for (x = 0; x < dst_w; x++)
+         {
+            R_VAL(dst_ptr) = (R_VAL(src_ptr) + R_VAL(src_ptr + 1)) >> 1;
+            G_VAL(dst_ptr) = (G_VAL(src_ptr) + G_VAL(src_ptr + 1)) >> 1;
+            B_VAL(dst_ptr) = (B_VAL(src_ptr) + B_VAL(src_ptr + 1)) >> 1;
+            A_VAL(dst_ptr) = (A_VAL(src_ptr) + A_VAL(src_ptr + 1)) >> 1;
+
+            src_ptr+=2;
+            dst_ptr++;
+         }
+     }
+}
+#endif
+#endif
+
+#ifdef BUILD_SCALE_SMOOTH
+#ifdef BUILD_C
+EAPI void
+evas_common_scale_rgba_mipmap_down_1x2_c(DATA32 *src, DATA32 *dst, int src_w, int src_h)
+{
+   int x, y, dst_w, dst_h;
+   DATA32 *src_ptr, *src_ptr2, *dst_ptr;
+
+   dst_w = src_w >> 1;
+   dst_h = src_h >> 1;
+
+   if (dst_w < 1) dst_w = 1;
+   if (dst_h < 1) dst_h = 1;
+
+   src_ptr = src;
+   src_ptr2 = src + src_w;
+   dst_ptr = dst;
+   for (y = 0; y < dst_h; y++)
+     {
+       src_ptr = src + (y * src_w * 2);
+       src_ptr2 = src_ptr + src_w;
+       for (x = 0; x < dst_w; x++)
+         {
+            R_VAL(dst_ptr) = (R_VAL(src_ptr) + R_VAL(src_ptr2)) >> 1;
+            G_VAL(dst_ptr) = (G_VAL(src_ptr) + G_VAL(src_ptr2)) >> 1;
+            B_VAL(dst_ptr) = (B_VAL(src_ptr) + B_VAL(src_ptr2)) >> 1;
+            A_VAL(dst_ptr) = (A_VAL(src_ptr) + A_VAL(src_ptr2)) >> 1;
+
+            src_ptr+=2;
+            src_ptr2+=2;
+            dst_ptr++;
+         }
+     }
+}
+#endif
+#endif
+
+#ifdef BUILD_SCALE_SMOOTH
+#ifdef BUILD_C
+EAPI void
+evas_common_scale_rgb_mipmap_down_2x2_c(DATA32 *src, DATA32 *dst, int src_w, int src_h)
+{
+   int x, y, dst_w, dst_h;
+   DATA32 *src_ptr, *src_ptr2, *dst_ptr;
+
+   dst_w = src_w >> 1;
+   dst_h = src_h >> 1;
+
+   if (dst_w < 1) dst_w = 1;
+   if (dst_h < 1) dst_h = 1;
+
+   src_ptr = src;
+   src_ptr2 = src + src_w;
+   dst_ptr = dst;
+   for (y = 0; y < dst_h; y++)
+     {
+       for (x = 0; x < dst_w; x++)
+         {
+            R_VAL(dst_ptr) = (R_VAL(src_ptr) + R_VAL(src_ptr + 1) + R_VAL(src_ptr2) + R_VAL(src_ptr2 + 1)) >> 2;
+            G_VAL(dst_ptr) = (G_VAL(src_ptr) + G_VAL(src_ptr + 1) + G_VAL(src_ptr2) + G_VAL(src_ptr2 + 1)) >> 2;
+            B_VAL(dst_ptr) = (B_VAL(src_ptr) + B_VAL(src_ptr + 1) + B_VAL(src_ptr2) + B_VAL(src_ptr2 + 1)) >> 2;
+            A_VAL(dst_ptr) = 0xff;
+
+            src_ptr+=2;
+            src_ptr2+=2;
+            dst_ptr++;
+         }
+       src_ptr += src_w;
+       src_ptr2 += src_w;
+     }
+}
+#endif
+#endif
+
+#ifdef BUILD_SCALE_SMOOTH
+#ifdef BUILD_C
+EAPI void
+evas_common_scale_rgb_mipmap_down_2x1_c(DATA32 *src, DATA32 *dst, int src_w, int src_h)
+{
+   int x, y, dst_w, dst_h;
+   DATA32 *src_ptr, *dst_ptr;
+
+   dst_w = src_w >> 1;
+   dst_h = src_h >> 1;
+
+   if (dst_w < 1) dst_w = 1;
+   if (dst_h < 1) dst_h = 1;
+
+   src_ptr = src;
+   dst_ptr = dst;
+   for (y = 0; y < dst_h; y++)
+     {
+       for (x = 0; x < dst_w; x++)
+         {
+            R_VAL(dst_ptr) = (R_VAL(src_ptr) + R_VAL(src_ptr + 1)) >> 1;
+            G_VAL(dst_ptr) = (G_VAL(src_ptr) + G_VAL(src_ptr + 1)) >> 1;
+            B_VAL(dst_ptr) = (B_VAL(src_ptr) + B_VAL(src_ptr + 1)) >> 1;
+            A_VAL(dst_ptr) = 0xff;
+
+            src_ptr+=2;
+            dst_ptr++;
+         }
+       src_ptr += src_w;
+     }
+}
+#endif
+#endif
+
+#ifdef BUILD_SCALE_SMOOTH
+#ifdef BUILD_C
+EAPI void
+evas_common_scale_rgb_mipmap_down_1x2_c(DATA32 *src, DATA32 *dst, int src_w, int src_h)
+{
+   int x, y, dst_w, dst_h;
+   DATA32 *src_ptr, *src_ptr2, *dst_ptr;
+
+   dst_w = src_w >> 1;
+   dst_h = src_h >> 1;
+
+   if (dst_w < 1) dst_w = 1;
+   if (dst_h < 1) dst_h = 1;
+
+   src_ptr = src;
+   src_ptr2 = src + src_w;
+   dst_ptr = dst;
+   for (y = 0; y < dst_h; y++)
+     {
+       for (x = 0; x < dst_w; x++)
+         {
+            R_VAL(dst_ptr) = (R_VAL(src_ptr) + R_VAL(src_ptr2)) >> 1;
+            G_VAL(dst_ptr) = (G_VAL(src_ptr) + G_VAL(src_ptr2)) >> 1;
+            B_VAL(dst_ptr) = (B_VAL(src_ptr) + B_VAL(src_ptr2)) >> 1;
+            A_VAL(dst_ptr) = 0xff;
+
+            src_ptr+=2;
+            src_ptr2+=2;
+            dst_ptr++;
+         }
+       src_ptr += src_w;
+       src_ptr2 += src_w;
+     }
+}
+#endif
+#endif
+
+#ifdef BUILD_SCALE_SMOOTH
+#ifdef BUILD_MMX
+EAPI void
+evas_common_scale_rgba_mipmap_down_2x2_mmx(DATA32 *src, DATA32 *dst, int src_w, int src_h)
+{
+   int x, y, dst_w, dst_h;
+   DATA32 *src_ptr, *src_ptr2, *dst_ptr;
+
+   dst_w = src_w >> 1;
+   dst_h = src_h >> 1;
+
+   if (dst_w < 1) dst_w = 1;
+   if (dst_h < 1) dst_h = 1;
+
+   src_ptr = src;
+   src_ptr2 = src + src_w;
+   dst_ptr = dst;
+   for (y = 0; y < dst_h; y++)
+     {
+       src_ptr = src + (y * src_w * 2);
+       src_ptr2 = src_ptr + src_w;
+       for (x = 0; x < dst_w; x++)
+         {
+            punpcklbw_m2r(src_ptr[0], mm0);
+            punpcklbw_m2r(src_ptr[1], mm1);
+            punpcklbw_m2r(src_ptr2[0], mm2);
+            punpcklbw_m2r(src_ptr2[1], mm3);
+            psrlw_i2r(8, mm0);
+            psrlw_i2r(8, mm1);
+            psrlw_i2r(8, mm2);
+            psrlw_i2r(8, mm3);
+            paddw_r2r(mm1, mm0);
+            paddw_r2r(mm2, mm0);
+            paddw_r2r(mm3, mm0);
+            psrlw_i2r(2, mm0);
+            packuswb_r2r(mm0, mm0);
+            movd_r2m(mm0, dst_ptr[0]);
+
+            src_ptr+=2;
+            src_ptr2+=2;
+            dst_ptr++;
+         }
+     }
+}
+#endif
+#endif
+
+#ifdef BUILD_SCALE_SMOOTH
+#ifdef BUILD_MMX
+EAPI void
+evas_common_scale_rgba_mipmap_down_2x1_mmx(DATA32 *src, DATA32 *dst, int src_w, int src_h)
+{
+   int x, y, dst_w, dst_h;
+   DATA32 *src_ptr, *dst_ptr;
+
+   dst_w = src_w >> 1;
+   dst_h = src_h >> 1;
+
+   if (dst_w < 1) dst_w = 1;
+   if (dst_h < 1) dst_h = 1;
+
+   src_ptr = src;
+   dst_ptr = dst;
+   for (y = 0; y < dst_h; y++)
+     {
+       src_ptr = src + (y * src_w * 2);
+       for (x = 0; x < dst_w; x++)
+         {
+            punpcklbw_m2r(src_ptr[0], mm0);
+            punpcklbw_m2r(src_ptr[1], mm1);
+            psrlw_i2r(8, mm0);
+            psrlw_i2r(8, mm1);
+            paddw_r2r(mm1, mm0);
+            psrlw_i2r(1, mm0);
+            packuswb_r2r(mm0, mm0);
+            movd_r2m(mm0, dst_ptr[0]);
+
+            src_ptr+=2;
+            dst_ptr++;
+         }
+     }
+}
+#endif
+#endif
+
+#ifdef BUILD_SCALE_SMOOTH
+#ifdef BUILD_MMX
+EAPI void
+evas_common_scale_rgba_mipmap_down_1x2_mmx(DATA32 *src, DATA32 *dst, int src_w, int src_h)
+{
+   int x, y, dst_w, dst_h;
+   DATA32 *src_ptr, *src_ptr2, *dst_ptr;
+
+   dst_w = src_w >> 1;
+   dst_h = src_h >> 1;
+
+   if (dst_w < 1) dst_w = 1;
+   if (dst_h < 1) dst_h = 1;
+
+   src_ptr = src;
+   src_ptr2 = src + src_w;
+   dst_ptr = dst;
+   for (y = 0; y < dst_h; y++)
+     {
+       src_ptr = src + (y * src_w * 2);
+       src_ptr2 = src_ptr + src_w;
+       for (x = 0; x < dst_w; x++)
+         {
+            punpcklbw_m2r(src_ptr[0], mm0);
+            punpcklbw_m2r(src_ptr2[0], mm1);
+            psrlw_i2r(8, mm0);
+            psrlw_i2r(8, mm1);
+            paddw_r2r(mm1, mm0);
+            psrlw_i2r(1, mm0);
+            packuswb_r2r(mm0, mm0);
+            movd_r2m(mm0, dst_ptr[0]);
+
+            src_ptr+=2;
+            src_ptr2+=2;
+            dst_ptr++;
+         }
+     }
+}
+#endif
+#endif
+
+#ifdef BUILD_SCALE_SMOOTH
+# ifdef BUILD_MMX
+#  undef SCALE_FUNC
+#  define SCALE_FUNC evas_common_scale_rgba_in_to_out_clip_smooth_mmx
+#  undef SCALE_USING_MMX
+#  define SCALE_USING_MMX
+#  include "evas_scale_smooth_scaler.c"
+# endif
+# ifdef BUILD_C
+#  undef SCALE_FUNC
+#  define SCALE_FUNC evas_common_scale_rgba_in_to_out_clip_smooth_c
+#  undef SCALE_USING_MMX
+#  include "evas_scale_smooth_scaler.c"
+# endif
+EAPI void
+evas_common_scale_rgba_in_to_out_clip_smooth(RGBA_Image *src, RGBA_Image *dst,
+                                RGBA_Draw_Context *dc,
+                                int src_region_x, int src_region_y,
+                                int src_region_w, int src_region_h,
+                                int dst_region_x, int dst_region_y,
+                                int dst_region_w, int dst_region_h)
+{
+# ifdef BUILD_MMX
+   int mmx, sse, sse2;
+# endif
+   Cutout_Rects *rects;
+   Cutout_Rect  *r;
+   int          c, cx, cy, cw, ch;
+   int          i;
+   /* handle cutouts here! */
+
+   if ((dst_region_w <= 0) || (dst_region_h <= 0)) return;
+   if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h)))
+     return;
+# ifdef BUILD_MMX
+   evas_common_cpu_can_do(&mmx, &sse, &sse2);
+# endif
+   /* no cutouts - cut right to the chase */
+   if (!dc->cutout.rects)
+     {
+# ifdef BUILD_MMX
+       if (mmx)
+         evas_common_scale_rgba_in_to_out_clip_smooth_mmx(src, dst, dc,
+                                              src_region_x, src_region_y,
+                                              src_region_w, src_region_h,
+                                              dst_region_x, dst_region_y,
+                                              dst_region_w, dst_region_h);
+       else
+# endif
+# ifdef BUILD_C
+         evas_common_scale_rgba_in_to_out_clip_smooth_c(src, dst, dc,
+                                            src_region_x, src_region_y,
+                                            src_region_w, src_region_h,
+                                            dst_region_x, dst_region_y,
+                                            dst_region_w, dst_region_h);
+# endif
+       return;
+     }
+   /* save out clip info */
+   c = dc->clip.use; cx = dc->clip.x; cy = dc->clip.y; cw = dc->clip.w; ch = dc->clip.h;
+   evas_common_draw_context_clip_clip(dc, 0, 0, dst->cache_entry.w, dst->cache_entry.h);
+   evas_common_draw_context_clip_clip(dc, dst_region_x, dst_region_y, dst_region_w, dst_region_h);
+   /* our clip is 0 size.. abort */
+   if ((dc->clip.w <= 0) || (dc->clip.h <= 0))
+     {
+       dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
+       return;
+     }
+   rects = evas_common_draw_context_apply_cutouts(dc);
+   for (i = 0; i < rects->active; ++i)
+     {
+       r = rects->rects + i;
+       evas_common_draw_context_set_clip(dc, r->x, r->y, r->w, r->h);
+# ifdef BUILD_MMX
+       if (mmx)
+         evas_common_scale_rgba_in_to_out_clip_smooth_mmx(src, dst, dc,
+                                              src_region_x, src_region_y,
+                                              src_region_w, src_region_h,
+                                              dst_region_x, dst_region_y,
+                                              dst_region_w, dst_region_h);
+       else
+# endif
+# ifdef BUILD_C
+         evas_common_scale_rgba_in_to_out_clip_smooth_c(src, dst, dc,
+                                            src_region_x, src_region_y,
+                                            src_region_w, src_region_h,
+                                            dst_region_x, dst_region_y,
+                                            dst_region_w, dst_region_h);
+# endif
+     }
+   evas_common_draw_context_apply_clear_cutouts(rects);
+   /* restore clip info */
+   dc->clip.use = c; dc->clip.x = cx; dc->clip.y = cy; dc->clip.w = cw; dc->clip.h = ch;
+}
+#endif
diff --git a/src/lib/engines/common/evas_scale_smooth.h b/src/lib/engines/common/evas_scale_smooth.h
new file mode 100644 (file)
index 0000000..d4bfb46
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_SCALE_SMOOTH_H
+#define _EVAS_SCALE_SMOOTH_H
+
+EAPI void evas_common_scale_rgba_mipmap_down_2x2_c          (DATA32 *src, DATA32 *dst, int src_w, int src_h);
+EAPI void evas_common_scale_rgba_mipmap_down_2x1_c          (DATA32 *src, DATA32 *dst, int src_w, int src_h);
+EAPI void evas_common_scale_rgba_mipmap_down_1x2_c          (DATA32 *src, DATA32 *dst, int src_w, int src_h);
+EAPI void evas_common_scale_rgb_mipmap_down_2x2_c           (DATA32 *src, DATA32 *dst, int src_w, int src_h);
+EAPI void evas_common_scale_rgb_mipmap_down_2x1_c           (DATA32 *src, DATA32 *dst, int src_w, int src_h);
+EAPI void evas_common_scale_rgb_mipmap_down_1x2_c           (DATA32 *src, DATA32 *dst, int src_w, int src_h);
+
+EAPI void evas_common_scale_rgba_mipmap_down_2x2_mmx        (DATA32 *src, DATA32 *dst, int src_w, int src_h);
+EAPI void evas_common_scale_rgba_mipmap_down_2x1_mmx        (DATA32 *src, DATA32 *dst, int src_w, int src_h);
+EAPI void evas_common_scale_rgba_mipmap_down_1x2_mmx        (DATA32 *src, DATA32 *dst, int src_w, int src_h);
+
+EAPI void evas_common_scale_rgba_in_to_out_clip_smooth_mmx  (RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h);
+EAPI void evas_common_scale_rgba_in_to_out_clip_smooth_c    (RGBA_Image *src, RGBA_Image *dst, RGBA_Draw_Context *dc, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h);
+
+
+#endif /* _EVAS_SCALE_SMOOTH_H */
diff --git a/src/lib/engines/common/evas_scale_smooth_scaler.c b/src/lib/engines/common/evas_scale_smooth_scaler.c
new file mode 100644 (file)
index 0000000..6cf7cc6
--- /dev/null
@@ -0,0 +1,205 @@
+void
+SCALE_FUNC(RGBA_Image *src, RGBA_Image *dst,
+          RGBA_Draw_Context *dc,
+          int src_region_x, int src_region_y,
+          int src_region_w, int src_region_h,
+          int dst_region_x, int dst_region_y,
+          int dst_region_w, int dst_region_h)
+{
+   DATA32  *dst_ptr;
+   int      dst_jump;
+   int      dst_clip_x, dst_clip_y, dst_clip_w, dst_clip_h;
+   int      src_w, src_h, dst_w, dst_h;
+
+   if (!(RECTS_INTERSECT(dst_region_x, dst_region_y, dst_region_w, dst_region_h, 0, 0, dst->cache_entry.w, dst->cache_entry.h)))
+     return;
+   if (!(RECTS_INTERSECT(src_region_x, src_region_y, src_region_w, src_region_h, 0, 0, src->cache_entry.w, src->cache_entry.h)))
+     return;
+
+   src_w = src->cache_entry.w;
+   src_h = src->cache_entry.h;
+   dst_w = dst->cache_entry.w;
+   dst_h = dst->cache_entry.h;
+
+   if (dc->clip.use)
+     {
+       dst_clip_x = dc->clip.x;
+       dst_clip_y = dc->clip.y;
+       dst_clip_w = dc->clip.w;
+       dst_clip_h = dc->clip.h;
+       if (dst_clip_x < 0)
+         {
+            dst_clip_w += dst_clip_x;
+            dst_clip_x = 0;
+         }
+       if (dst_clip_y < 0)
+         {
+            dst_clip_h += dst_clip_y;
+            dst_clip_y = 0;
+         }
+       if ((dst_clip_w <= 0) || (dst_clip_h <= 0)) return;
+       if ((dst_clip_x + dst_clip_w) > dst_w) dst_clip_w = dst_w - dst_clip_x;
+       if ((dst_clip_y + dst_clip_h) > dst_h) dst_clip_h = dst_h - dst_clip_y;
+     }
+   else
+     {
+       dst_clip_x = 0;
+       dst_clip_y = 0;
+       dst_clip_w = dst_w;
+       dst_clip_h = dst_h;
+     }
+
+   if (dst_clip_x < dst_region_x)
+     {
+       dst_clip_w += dst_clip_x - dst_region_x;
+       dst_clip_x = dst_region_x;
+     }
+   if ((dst_clip_x + dst_clip_w) > (dst_region_x + dst_region_w))
+     dst_clip_w = dst_region_x + dst_region_w - dst_clip_x;
+   if (dst_clip_y < dst_region_y)
+     {
+       dst_clip_h += dst_clip_y - dst_region_y;
+       dst_clip_y = dst_region_y;
+     }
+   if ((dst_clip_y + dst_clip_h) > (dst_region_y + dst_region_h))
+     dst_clip_h = dst_region_y + dst_region_h - dst_clip_y;
+
+   if ((src_region_w <= 0) || (src_region_h <= 0) ||
+       (dst_region_w <= 0) || (dst_region_h <= 0) ||
+       (dst_clip_w <= 0) || (dst_clip_h <= 0))
+     return;
+
+   /* sanitise x */
+   if (src_region_x < 0)
+     {
+       dst_region_x -= (src_region_x * dst_region_w) / src_region_w;
+       dst_region_w += (src_region_x * dst_region_w) / src_region_w;
+       src_region_w += src_region_x;
+       src_region_x = 0;
+     }
+   if (src_region_x >= src_w) return;
+   if ((src_region_x + src_region_w) > src_w)
+     {
+       dst_region_w = (dst_region_w * (src_w - src_region_x)) / (src_region_w);
+       src_region_w = src_w - src_region_x;
+     }
+   if (dst_region_w <= 0) return;
+   if (src_region_w <= 0) return;
+   if (dst_clip_x < 0)
+     {
+       dst_clip_w += dst_clip_x;
+       dst_clip_x = 0;
+     }
+   if (dst_clip_w <= 0) return;
+   if (dst_clip_x >= dst_w) return;
+   if (dst_clip_x < dst_region_x)
+     {
+       dst_clip_w += (dst_clip_x - dst_region_x);
+       dst_clip_x = dst_region_x;
+     }
+   if ((dst_clip_x + dst_clip_w) > dst_w)
+     {
+       dst_clip_w = dst_w - dst_clip_x;
+     }
+   if (dst_clip_w <= 0) return;
+
+   /* sanitise y */
+   if (src_region_y < 0)
+     {
+       dst_region_y -= (src_region_y * dst_region_h) / src_region_h;
+       dst_region_h += (src_region_y * dst_region_h) / src_region_h;
+       src_region_h += src_region_y;
+       src_region_y = 0;
+     }
+   if (src_region_y >= src_h) return;
+   if ((src_region_y + src_region_h) > src_h)
+     {
+       dst_region_h = (dst_region_h * (src_h - src_region_y)) / (src_region_h);
+       src_region_h = src_h - src_region_y;
+     }
+   if (dst_region_h <= 0) return;
+   if (src_region_h <= 0) return;
+   if (dst_clip_y < 0)
+     {
+       dst_clip_h += dst_clip_y;
+       dst_clip_y = 0;
+     }
+   if (dst_clip_h <= 0) return;
+   if (dst_clip_y >= dst_h) return;
+   if (dst_clip_y < dst_region_y)
+     {
+       dst_clip_h += (dst_clip_y - dst_region_y);
+       dst_clip_y = dst_region_y;
+     }
+   if ((dst_clip_y + dst_clip_h) > dst_h)
+     {
+       dst_clip_h = dst_h - dst_clip_y;
+     }
+   if (dst_clip_h <= 0) return;
+
+   /* figure out dst jump */
+   dst_jump = dst_w - dst_clip_w;
+
+   /* figure out dest start ptr */
+   dst_ptr = dst->image.data + dst_clip_x + (dst_clip_y * dst_w);
+
+/* FIXME:
+ *
+ * things to do later for speedups:
+ *
+ * break upscale into 3 cases (as listed below - up:up, 1:up, up:1)
+ *
+ * break downscale into more cases (as listed below)
+ *
+ * roll func (blend/copy/cultiply/cmod) code into inner loop of scaler.
+ * (578 fps vs 550 in mmx upscale in evas demo - this means probably
+ *  a good 10-15% speedup over the func call, but means massively larger
+ *  code)
+ *
+ * anything involving downscaling has no mmx equivalent code and maybe the
+ * C could do with a little work.
+ *
+ * ---------------------------------------------------------------------------
+ *
+ * (1 = no scaling (1:1 ratio), + = scale up, - = scale down)
+ * (* == fully optimised mmx, # = fully optimised C)
+ *
+ * h:v mmx C
+ *
+ * 1:1 *   #
+ *
+ * +:+ *   #
+ * 1:+ *   #
+ * +:1 *   #
+ *
+ * 1:-
+ * -:1
+ * +:-
+ * -:+
+ * -:-
+ *
+ */
+
+   /* if 1:1 scale */
+   if ((dst_region_w == src_region_w) &&
+       (dst_region_h == src_region_h))
+     {
+#include "evas_scale_smooth_scaler_noscale.c"
+     }
+   else
+     {
+       /* scaling up only - dont need anything except original */
+//     if ((!dc->anti_alias) || ((dst_region_w >= src_region_w) && (dst_region_h >= src_region_h)))
+       if (((dst_region_w >= src_region_w) && (dst_region_h >= src_region_h)))
+         {
+#include "evas_scale_smooth_scaler_up.c"
+            return;
+         }
+       else
+         /* scaling down... funkiness */
+         {
+#include "evas_scale_smooth_scaler_down.c"
+            return;
+         }
+     }
+}
diff --git a/src/lib/engines/common/evas_scale_smooth_scaler_down.c b/src/lib/engines/common/evas_scale_smooth_scaler_down.c
new file mode 100644 (file)
index 0000000..97498b0
--- /dev/null
@@ -0,0 +1,50 @@
+{
+   DATA32  **ypoints;
+   int     *xpoints;
+   int     *xapoints, *xapp;
+   int     *yapoints, *yapp;
+   DATA32  *buf, *src_data;
+
+   RGBA_Gfx_Func      func;
+
+   src_data = src->image.data;
+
+   xpoints = scale_calc_x_points(src_region_w, dst_region_w);
+   ypoints = scale_calc_y_points(src_data, src_w, src_region_h, dst_region_h);
+   xapoints = scale_calc_a_points(src_region_w, dst_region_w);
+   yapoints = scale_calc_a_points(src_region_h, dst_region_h);
+   if ( (!xpoints) || (!ypoints) || (!xapoints) || (!yapoints) )
+       goto done_scale_down;
+
+   /* a scanline buffer */
+   buf = alloca(dst_clip_w * sizeof(DATA32));
+
+   if (dc->mul.use)
+       func = evas_common_gfx_func_composite_pixel_color_span_get(src, dc->mul.col, dst, dst_clip_w, dc->render_op);
+   else
+       func = evas_common_gfx_func_composite_pixel_span_get(src, dst, dst_clip_w, dc->render_op);
+  /* scaling down vertically */
+   if ((dst_region_w >= src_region_w) &&
+       (dst_region_h <  src_region_h))
+     {
+#include "evas_scale_smooth_scaler_downy.c"
+     }
+   /* scaling down horizontally */
+   else if ((dst_region_w < src_region_w) &&
+           (dst_region_h >=  src_region_h))
+     {
+#include "evas_scale_smooth_scaler_downx.c"
+     }
+   /* scaling down both vertically & horizontally */
+   else if ((dst_region_w < src_region_w) &&
+           (dst_region_h <  src_region_h))
+     {
+#include "evas_scale_smooth_scaler_downx_downy.c"
+     }
+
+   done_scale_down:
+   if (xpoints) free(xpoints);
+   if (ypoints) free(ypoints);
+   if (xapoints) free(xapoints);
+   if (yapoints) free(yapoints);
+}
diff --git a/src/lib/engines/common/evas_scale_smooth_scaler_downx.c b/src/lib/engines/common/evas_scale_smooth_scaler_downx.c
new file mode 100644 (file)
index 0000000..f413b22
--- /dev/null
@@ -0,0 +1,250 @@
+{
+   int Cx, j;
+   DATA32 *pix, *dptr, *pbuf, **yp;
+   int r, g, b, a, rr, gg, bb, aa;
+   int *xp, xap, yap, pos;
+   int dyy, dxx;
+   int w = dst_clip_w;
+#ifdef EVAS_SLI
+   int ysli = dst_clip_y;
+#endif
+
+   dptr = dst_ptr;
+   pos = (src_region_y * src_w) + src_region_x;
+   dyy = dst_clip_y - dst_region_y;
+   dxx = dst_clip_x - dst_region_x;
+
+   xp = xpoints + dxx;
+   yp = ypoints + dyy;
+   xapp = xapoints + dxx;
+   yapp = yapoints + dyy;
+   pbuf = buf;
+
+   if (src->cache_entry.flags.alpha)
+     {
+       while (dst_clip_h--)
+         {
+#ifdef EVAS_SLI
+            if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+              {
+                 while (dst_clip_w--)
+                   {
+                      Cx = *xapp >> 16;
+                      xap = *xapp & 0xffff;
+                      pix = *yp + *xp + pos;
+
+                      a = (A_VAL(pix) * xap) >> 10;
+                      r = (R_VAL(pix) * xap) >> 10;
+                      g = (G_VAL(pix) * xap) >> 10;
+                      b = (B_VAL(pix) * xap) >> 10;
+                      for (j = (1 << 14) - xap; j > Cx; j -= Cx)
+                        {
+                           pix++;
+                           a += (A_VAL(pix) * Cx) >> 10;
+                           r += (R_VAL(pix) * Cx) >> 10;
+                           g += (G_VAL(pix) * Cx) >> 10;
+                           b += (B_VAL(pix) * Cx) >> 10;
+                        }
+                      if (j > 0)
+                        {
+                           pix++;
+                           a += (A_VAL(pix) * j) >> 10;
+                           r += (R_VAL(pix) * j) >> 10;
+                           g += (G_VAL(pix) * j) >> 10;
+                           b += (B_VAL(pix) * j) >> 10;
+                        }
+                      if ((yap = *yapp) > 0)
+                        {
+                           pix = *yp + *xp + src_w + pos;
+                           aa = (A_VAL(pix) * xap) >> 10;
+                           rr = (R_VAL(pix) * xap) >> 10;
+                           gg = (G_VAL(pix) * xap) >> 10;
+                           bb = (B_VAL(pix) * xap) >> 10;
+                           for (j = (1 << 14) - xap; j > Cx; j -= Cx)
+                             {
+                                pix++;
+                                aa += (A_VAL(pix) * Cx) >> 10;
+                                rr += (R_VAL(pix) * Cx) >> 10;
+                                gg += (G_VAL(pix) * Cx) >> 10;
+                                bb += (B_VAL(pix) * Cx) >> 10;
+                             }
+                           if (j > 0)
+                             {
+                                pix++;
+                                aa += (A_VAL(pix) * j) >> 10;
+                                rr += (R_VAL(pix) * j) >> 10;
+                                gg += (G_VAL(pix) * j) >> 10;
+                                bb += (B_VAL(pix) * j) >> 10;
+                             }
+                           a += ((aa - a) * yap) >> 8;
+                           r += ((rr - r) * yap) >> 8;
+                           g += ((gg - g) * yap) >> 8;
+                           b += ((bb - b) * yap) >> 8;
+                        }
+                      *pbuf++ = ARGB_JOIN(a >> 4, r >> 4, g >> 4, b >> 4);
+                      xp++;  xapp++;
+                   }
+
+                 func(buf, NULL, dc->mul.col, dptr, w);
+              }
+#ifdef EVAS_SLI
+            ysli++;
+#endif
+            pbuf = buf;
+            dptr += dst_w;  dst_clip_w = w;
+            yp++;  yapp++;
+            xp = xpoints + dxx;
+            xapp = xapoints + dxx;
+         }
+     }
+   else
+     {
+#ifdef DIRECT_SCALE
+        if ((!src->cache_entry.flags.alpha) &&
+           (!dst->cache_entry.flags.alpha) &&
+           (!dc->mul.use))
+         {
+            while (dst_clip_h--)
+              {
+                  pbuf = dptr;
+#ifdef EVAS_SLI
+                 if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+                   {
+                      while (dst_clip_w--)
+                        {
+                           Cx = *xapp >> 16;
+                           xap = *xapp & 0xffff;
+                           pix = *yp + *xp + pos;
+
+                           r = (R_VAL(pix) * xap) >> 10;
+                           g = (G_VAL(pix) * xap) >> 10;
+                           b = (B_VAL(pix) * xap) >> 10;
+                           for (j = (1 << 14) - xap; j > Cx; j -= Cx)
+                             {
+                                pix++;
+                                r += (R_VAL(pix) * Cx) >> 10;
+                                g += (G_VAL(pix) * Cx) >> 10;
+                                b += (B_VAL(pix) * Cx) >> 10;
+                             }
+                           if (j > 0)
+                             {
+                                pix++;
+                                r += (R_VAL(pix) * j) >> 10;
+                                g += (G_VAL(pix) * j) >> 10;
+                                b += (B_VAL(pix) * j) >> 10;
+                             }
+                           if ((yap = *yapp) > 0)
+                             {
+                                pix = *yp + *xp + src_w + pos;
+                                rr = (R_VAL(pix) * xap) >> 10;
+                                gg = (G_VAL(pix) * xap) >> 10;
+                                bb = (B_VAL(pix) * xap) >> 10;
+                                for (j = (1 << 14) - xap; j > Cx; j -= Cx)
+                                  {
+                                     pix++;
+                                     rr += (R_VAL(pix) * Cx) >> 10;
+                                     gg += (G_VAL(pix) * Cx) >> 10;
+                                     bb += (B_VAL(pix) * Cx) >> 10;
+                                  }
+                                if (j > 0)
+                                  {
+                                     pix++;
+                                     rr += (R_VAL(pix) * j) >> 10;
+                                     gg += (G_VAL(pix) * j) >> 10;
+                                     bb += (B_VAL(pix) * j) >> 10;
+                                  }
+                                r += ((rr - r) * yap) >> 8;
+                                g += ((gg - g) * yap) >> 8;
+                                b += ((bb - b) * yap) >> 8;
+                             }
+                           *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
+                           xp++;  xapp++;
+                        }
+                   }
+#ifdef EVAS_SLI
+                 ysli++;
+#endif
+
+                 dptr += dst_w;  dst_clip_w = w;
+                 yp++;  yapp++;
+                 xp = xpoints + dxx;
+                 xapp = xapoints + dxx;
+              }
+         }
+       else
+#endif
+         {
+            while (dst_clip_h--)
+              {
+#ifdef EVAS_SLI
+                 if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+                   {
+                      while (dst_clip_w--)
+                        {
+                           Cx = *xapp >> 16;
+                           xap = *xapp & 0xffff;
+                           pix = *yp + *xp + pos;
+
+                           r = (R_VAL(pix) * xap) >> 10;
+                           g = (G_VAL(pix) * xap) >> 10;
+                           b = (B_VAL(pix) * xap) >> 10;
+                           for (j = (1 << 14) - xap; j > Cx; j -= Cx)
+                             {
+                                pix++;
+                                r += (R_VAL(pix) * Cx) >> 10;
+                                g += (G_VAL(pix) * Cx) >> 10;
+                                b += (B_VAL(pix) * Cx) >> 10;
+                             }
+                           if (j > 0)
+                             {
+                                pix++;
+                                r += (R_VAL(pix) * j) >> 10;
+                                g += (G_VAL(pix) * j) >> 10;
+                                b += (B_VAL(pix) * j) >> 10;
+                             }
+                           if ((yap = *yapp) > 0)
+                             {
+                                pix = *yp + *xp + src_w + pos;
+                                rr = (R_VAL(pix) * xap) >> 10;
+                                gg = (G_VAL(pix) * xap) >> 10;
+                                bb = (B_VAL(pix) * xap) >> 10;
+                                for (j = (1 << 14) - xap; j > Cx; j -= Cx)
+                                  {
+                                     pix++;
+                                     rr += (R_VAL(pix) * Cx) >> 10;
+                                     gg += (G_VAL(pix) * Cx) >> 10;
+                                     bb += (B_VAL(pix) * Cx) >> 10;
+                                  }
+                                if (j > 0)
+                                  {
+                                     pix++;
+                                     rr += (R_VAL(pix) * j) >> 10;
+                                     gg += (G_VAL(pix) * j) >> 10;
+                                     bb += (B_VAL(pix) * j) >> 10;
+                                  }
+                                r += ((rr - r) * yap) >> 8;
+                                g += ((gg - g) * yap) >> 8;
+                                b += ((bb - b) * yap) >> 8;
+                             }
+                           *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
+                           xp++;  xapp++;
+                        }
+
+                      func(buf, NULL, dc->mul.col, dptr, w);
+                   }
+#ifdef EVAS_SLI
+                 ysli++;
+#endif
+
+                 pbuf = buf;
+                 dptr += dst_w;  dst_clip_w = w;
+                 yp++;  yapp++;
+                 xp = xpoints + dxx;
+                 xapp = xapoints + dxx;
+              }
+         }
+     }
+}
diff --git a/src/lib/engines/common/evas_scale_smooth_scaler_downx_downy.c b/src/lib/engines/common/evas_scale_smooth_scaler_downx_downy.c
new file mode 100644 (file)
index 0000000..f830187
--- /dev/null
@@ -0,0 +1,378 @@
+{
+   int Cx, Cy, i, j;
+   DATA32 *dptr, *sptr, *pix, *pbuf;
+   int a, r, g, b, rx, gx, bx, ax;
+   int xap, yap, pos;
+   int dyy, dxx;
+#ifdef EVAS_SLI
+   int ysli = dst_clip_y;
+#endif
+   
+   DATA32  **yp; 
+   int *xp;
+   int w = dst_clip_w;
+
+   dptr = dst_ptr;
+   pos = (src_region_y * src_w) + src_region_x;
+   dyy = dst_clip_y - dst_region_y;
+   dxx = dst_clip_x - dst_region_x;
+
+   xp = xpoints + dxx;
+   yp = ypoints + dyy;
+   xapp = xapoints + dxx;
+   yapp = yapoints + dyy;
+   pbuf = buf;
+/*#ifndef SCALE_USING_MMX */
+/* for now there's no mmx down scaling - so C only */
+#if 1
+   if (src->cache_entry.flags.alpha)
+     {
+       while (dst_clip_h--)
+         {
+#ifdef EVAS_SLI
+            if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+              {
+                 Cy = *yapp >> 16;
+                 yap = *yapp & 0xffff;
+                 
+                 while (dst_clip_w--)
+                   {
+                      Cx = *xapp >> 16;
+                      xap = *xapp & 0xffff;
+                      
+                      sptr = *yp + *xp + pos;
+                      pix = sptr;
+                      sptr += src_w;
+                      
+                      ax = (A_VAL(pix) * xap) >> 9;
+                      rx = (R_VAL(pix) * xap) >> 9;
+                      gx = (G_VAL(pix) * xap) >> 9;
+                      bx = (B_VAL(pix) * xap) >> 9;
+                      pix++;
+                      for (i = (1 << 14) - xap; i > Cx; i -= Cx)
+                        {
+                           ax += (A_VAL(pix) * Cx) >> 9;
+                           rx += (R_VAL(pix) * Cx) >> 9;
+                           gx += (G_VAL(pix) * Cx) >> 9;
+                           bx += (B_VAL(pix) * Cx) >> 9;
+                           pix++;
+                        }
+                      if (i > 0)
+                        {
+                           ax += (A_VAL(pix) * i) >> 9;
+                           rx += (R_VAL(pix) * i) >> 9;
+                           gx += (G_VAL(pix) * i) >> 9;
+                           bx += (B_VAL(pix) * i) >> 9;
+                        }
+                      
+                      a = (ax * yap) >> 14;
+                      r = (rx * yap) >> 14;
+                      g = (gx * yap) >> 14;
+                      b = (bx * yap) >> 14;
+                      
+                      for (j = (1 << 14) - yap; j > Cy; j -= Cy)
+                        {
+                           pix = sptr;
+                           sptr += src_w;
+                           ax = (A_VAL(pix) * xap) >> 9;
+                           rx = (R_VAL(pix) * xap) >> 9;
+                           gx = (G_VAL(pix) * xap) >> 9;
+                           bx = (B_VAL(pix) * xap) >> 9;
+                           pix++;
+                           for (i = (1 << 14) - xap; i > Cx; i -= Cx)
+                             {
+                                ax += (A_VAL(pix) * Cx) >> 9;
+                                rx += (R_VAL(pix) * Cx) >> 9;
+                                gx += (G_VAL(pix) * Cx) >> 9;
+                                bx += (B_VAL(pix) * Cx) >> 9;
+                                pix++;
+                             }
+                           if (i > 0)
+                             {
+                                ax += (A_VAL(pix) * i) >> 9;
+                                rx += (R_VAL(pix) * i) >> 9;
+                                gx += (G_VAL(pix) * i) >> 9;
+                                bx += (B_VAL(pix) * i) >> 9;
+                             }
+                           
+                           a += (ax * Cy) >> 14;
+                           r += (rx * Cy) >> 14;
+                           g += (gx * Cy) >> 14;
+                           b += (bx * Cy) >> 14;
+                        }
+                      if (j > 0)
+                        {
+                           pix = sptr;
+                           sptr += src_w;
+                           ax = (A_VAL(pix) * xap) >> 9;
+                           rx = (R_VAL(pix) * xap) >> 9;
+                           gx = (G_VAL(pix) * xap) >> 9;
+                           bx = (B_VAL(pix) * xap) >> 9;
+                           pix++;
+                           for (i = (1 << 14) - xap; i > Cx; i -= Cx)
+                             {
+                                ax += (A_VAL(pix) * Cx) >> 9;
+                                rx += (R_VAL(pix) * Cx) >> 9;
+                                gx += (G_VAL(pix) * Cx) >> 9;
+                                bx += (B_VAL(pix) * Cx) >> 9;
+                                pix++;
+                             }
+                           if (i > 0)
+                             {
+                                ax += (A_VAL(pix) * i) >> 9;
+                                rx += (R_VAL(pix) * i) >> 9;
+                                gx += (G_VAL(pix) * i) >> 9;
+                                bx += (B_VAL(pix) * i) >> 9;
+                             }
+                           
+                           a += (ax * j) >> 14;
+                           r += (rx * j) >> 14;
+                           g += (gx * j) >> 14;
+                           b += (bx * j) >> 14;
+                        }
+                      *pbuf++ = ARGB_JOIN(a >> 5, r >> 5, g >> 5, b >> 5);
+                      xp++;  xapp++;
+                   }
+                 
+                 func(buf, NULL, dc->mul.col, dptr, w);
+              }
+#ifdef EVAS_SLI
+            ysli++;
+#endif
+            pbuf = buf;
+            dptr += dst_w;   dst_clip_w = w;
+            xp = xpoints + dxx;
+            xapp = xapoints + dxx;
+            yp++;  yapp++;
+         }
+     }
+   else
+     {
+#ifdef DIRECT_SCALE
+        if ((!src->cache_entry.flags.alpha) &&
+           (!dst->cache_entry.flags.alpha) &&
+           (!dc->mul.use))
+         {
+            while (dst_clip_h--)
+              {
+#ifdef EVAS_SLI
+                 if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+                   {
+                      Cy = *yapp >> 16;
+                      yap = *yapp & 0xffff;
+                      
+                      pbuf = dptr;
+                      while (dst_clip_w--)
+                        {
+                           Cx = *xapp >> 16;
+                           xap = *xapp & 0xffff;
+                           
+                           sptr = *yp + *xp + pos;
+                           pix = sptr;
+                           sptr += src_w;
+                           
+                           rx = (R_VAL(pix) * xap) >> 9;
+                           gx = (G_VAL(pix) * xap) >> 9;
+                           bx = (B_VAL(pix) * xap) >> 9;
+                           pix++;
+                           for (i = (1 << 14) - xap; i > Cx; i -= Cx)
+                             {
+                                rx += (R_VAL(pix) * Cx) >> 9;
+                                gx += (G_VAL(pix) * Cx) >> 9;
+                                bx += (B_VAL(pix) * Cx) >> 9;
+                                pix++;
+                             }
+                           if (i > 0)
+                             {
+                                rx += (R_VAL(pix) * i) >> 9;
+                                gx += (G_VAL(pix) * i) >> 9;
+                                bx += (B_VAL(pix) * i) >> 9;
+                             }
+                           
+                           r = (rx * yap) >> 14;
+                           g = (gx * yap) >> 14;
+                           b = (bx * yap) >> 14;
+                           
+                           for (j = (1 << 14) - yap; j > Cy; j -= Cy)
+                             {
+                                pix = sptr;
+                                sptr += src_w;
+                                rx = (R_VAL(pix) * xap) >> 9;
+                                gx = (G_VAL(pix) * xap) >> 9;
+                                bx = (B_VAL(pix) * xap) >> 9;
+                                pix++;
+                                for (i = (1 << 14) - xap; i > Cx; i -= Cx)
+                                  {
+                                     rx += (R_VAL(pix) * Cx) >> 9;
+                                     gx += (G_VAL(pix) * Cx) >> 9;
+                                     bx += (B_VAL(pix) * Cx) >> 9;
+                                     pix++;
+                                  }
+                                if (i > 0)
+                                  {
+                                     rx += (R_VAL(pix) * i) >> 9;
+                                     gx += (G_VAL(pix) * i) >> 9;
+                                     bx += (B_VAL(pix) * i) >> 9;
+                                  }
+                                
+                                r += (rx * Cy) >> 14;
+                                g += (gx * Cy) >> 14;
+                                b += (bx * Cy) >> 14;
+                             }
+                           if (j > 0)
+                             {
+                                pix = sptr;
+                                sptr += src_w;
+                                rx = (R_VAL(pix) * xap) >> 9;
+                                gx = (G_VAL(pix) * xap) >> 9;
+                                bx = (B_VAL(pix) * xap) >> 9;
+                                pix++;
+                                for (i = (1 << 14) - xap; i > Cx; i -= Cx)
+                                  {
+                                     rx += (R_VAL(pix) * Cx) >> 9;
+                                     gx += (G_VAL(pix) * Cx) >> 9;
+                                     bx += (B_VAL(pix) * Cx) >> 9;
+                                     pix++;
+                                  }
+                                if (i > 0)
+                                  {
+                                     rx += (R_VAL(pix) * i) >> 9;
+                                     gx += (G_VAL(pix) * i) >> 9;
+                                     bx += (B_VAL(pix) * i) >> 9;
+                                  }
+                                
+                                r += (rx * j) >> 14;
+                                g += (gx * j) >> 14;
+                                b += (bx * j) >> 14;
+                             }
+                           *pbuf++ = ARGB_JOIN(0xff, r >> 5, g >> 5, b >> 5);
+                           xp++;  xapp++;
+                        }
+                   }
+#ifdef EVAS_SLI
+                 ysli++;
+#endif
+                 dptr += dst_w;   dst_clip_w = w;
+                 xp = xpoints + dxx;
+                 xapp = xapoints + dxx;
+                 yp++;  yapp++;
+              }
+         }
+       else
+#endif   
+         {
+            while (dst_clip_h--)
+              {
+#ifdef EVAS_SLI
+                 if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+                   {
+                      Cy = *yapp >> 16;
+                      yap = *yapp & 0xffff;
+                      
+                      while (dst_clip_w--)
+                        {
+                           Cx = *xapp >> 16;
+                           xap = *xapp & 0xffff;
+                           
+                           sptr = *yp + *xp + pos;
+                           pix = sptr;
+                           sptr += src_w;
+                           
+                           rx = (R_VAL(pix) * xap) >> 9;
+                           gx = (G_VAL(pix) * xap) >> 9;
+                           bx = (B_VAL(pix) * xap) >> 9;
+                           pix++;
+                           for (i = (1 << 14) - xap; i > Cx; i -= Cx)
+                             {
+                                rx += (R_VAL(pix) * Cx) >> 9;
+                                gx += (G_VAL(pix) * Cx) >> 9;
+                                bx += (B_VAL(pix) * Cx) >> 9;
+                                pix++;
+                             }
+                           if (i > 0)
+                             {
+                                rx += (R_VAL(pix) * i) >> 9;
+                                gx += (G_VAL(pix) * i) >> 9;
+                                bx += (B_VAL(pix) * i) >> 9;
+                             }
+                           
+                           r = (rx * yap) >> 14;
+                           g = (gx * yap) >> 14;
+                           b = (bx * yap) >> 14;
+                           
+                           for (j = (1 << 14) - yap; j > Cy; j -= Cy)
+                             {
+                                pix = sptr;
+                                sptr += src_w;
+                                rx = (R_VAL(pix) * xap) >> 9;
+                                gx = (G_VAL(pix) * xap) >> 9;
+                                bx = (B_VAL(pix) * xap) >> 9;
+                                pix++;
+                                for (i = (1 << 14) - xap; i > Cx; i -= Cx)
+                                  {
+                                     rx += (R_VAL(pix) * Cx) >> 9;
+                                     gx += (G_VAL(pix) * Cx) >> 9;
+                                     bx += (B_VAL(pix) * Cx) >> 9;
+                                     pix++;
+                                  }
+                                if (i > 0)
+                                  {
+                                     rx += (R_VAL(pix) * i) >> 9;
+                                     gx += (G_VAL(pix) * i) >> 9;
+                                     bx += (B_VAL(pix) * i) >> 9;
+                                  }
+                                
+                                r += (rx * Cy) >> 14;
+                                g += (gx * Cy) >> 14;
+                                b += (bx * Cy) >> 14;
+                             }
+                           if (j > 0)
+                             {
+                                pix = sptr;
+                                sptr += src_w;
+                                rx = (R_VAL(pix) * xap) >> 9;
+                                gx = (G_VAL(pix) * xap) >> 9;
+                                bx = (B_VAL(pix) * xap) >> 9;
+                                pix++;
+                                for (i = (1 << 14) - xap; i > Cx; i -= Cx)
+                                  {
+                                     rx += (R_VAL(pix) * Cx) >> 9;
+                                     gx += (G_VAL(pix) * Cx) >> 9;
+                                     bx += (B_VAL(pix) * Cx) >> 9;
+                                     pix++;
+                                  }
+                                if (i > 0)
+                                  {
+                                     rx += (R_VAL(pix) * i) >> 9;
+                                     gx += (G_VAL(pix) * i) >> 9;
+                                     bx += (B_VAL(pix) * i) >> 9;
+                                  }
+                                
+                                r += (rx * j) >> 14;
+                                g += (gx * j) >> 14;
+                                b += (bx * j) >> 14;
+                             }
+                           *pbuf++ = ARGB_JOIN(0xff, r >> 5, g >> 5, b >> 5);
+                           xp++;  xapp++;
+                        }
+                      
+                      func(buf, NULL, dc->mul.col, dptr, w);
+                   }
+#ifdef EVAS_SLI
+                 ysli++;
+#endif
+                 pbuf = buf;
+                 dptr += dst_w;   dst_clip_w = w;
+                 xp = xpoints + dxx;
+                 xapp = xapoints + dxx;
+                 yp++;  yapp++;
+              }
+         }
+     }
+#else
+   /* MMX scaling down would go here */
+#endif
+}
diff --git a/src/lib/engines/common/evas_scale_smooth_scaler_downy.c b/src/lib/engines/common/evas_scale_smooth_scaler_downy.c
new file mode 100644 (file)
index 0000000..89cc883
--- /dev/null
@@ -0,0 +1,251 @@
+{
+   int Cy, j;
+   DATA32 *dptr, *pix, *pbuf, **yp;
+   int r, g, b, a, rr, gg, bb, aa;
+   int *xp, xap, yap, pos;
+   int dyy, dxx;
+   int w = dst_clip_w;
+#ifdef EVAS_SLI
+   int ysli = dst_clip_y;
+#endif
+
+   dptr = dst_ptr;
+   pos = (src_region_y * src_w) + src_region_x;
+   dyy = dst_clip_y - dst_region_y;
+   dxx = dst_clip_x - dst_region_x;
+
+   xp = xpoints + dxx;
+   yp = ypoints + dyy;
+   xapp = xapoints + dxx;
+   yapp = yapoints + dyy;
+   pbuf = buf;
+
+   if (src->cache_entry.flags.alpha)
+     {
+       while (dst_clip_h--)
+         {
+#ifdef EVAS_SLI
+            if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+              {
+                 Cy = *yapp >> 16;
+                 yap = *yapp & 0xffff;
+
+                 while (dst_clip_w--)
+                   {
+                      pix = *yp + *xp + pos;
+
+                      a = (A_VAL(pix) * yap) >> 10;
+                      r = (R_VAL(pix) * yap) >> 10;
+                      g = (G_VAL(pix) * yap) >> 10;
+                      b = (B_VAL(pix) * yap) >> 10;
+                      for (j = (1 << 14) - yap; j > Cy; j -= Cy)
+                        {
+                           pix += src_w;
+                           a += (A_VAL(pix) * Cy) >> 10;
+                           r += (R_VAL(pix) * Cy) >> 10;
+                           g += (G_VAL(pix) * Cy) >> 10;
+                           b += (B_VAL(pix) * Cy) >> 10;
+                        }
+                      if (j > 0)
+                        {
+                           pix += src_w;
+                           a += (A_VAL(pix) * j) >> 10;
+                           r += (R_VAL(pix) * j) >> 10;
+                           g += (G_VAL(pix) * j) >> 10;
+                           b += (B_VAL(pix) * j) >> 10;
+                        }
+                      if ((xap = *xapp) > 0)
+                        {
+                           pix = *yp + *xp + 1 + pos;
+                           aa = (A_VAL(pix) * yap) >> 10;
+                           rr = (R_VAL(pix) * yap) >> 10;
+                           gg = (G_VAL(pix) * yap) >> 10;
+                           bb = (B_VAL(pix) * yap) >> 10;
+                           for (j = (1 << 14) - yap; j > Cy; j -= Cy)
+                             {
+                                pix += src_w;
+                                aa += (A_VAL(pix) * Cy) >> 10;
+                                rr += (R_VAL(pix) * Cy) >> 10;
+                                gg += (G_VAL(pix) * Cy) >> 10;
+                                bb += (B_VAL(pix) * Cy) >> 10;
+                             }
+                           if (j > 0)
+                             {
+                                pix += src_w;
+                                aa += (A_VAL(pix) * j) >> 10;
+                                rr += (R_VAL(pix) * j) >> 10;
+                                gg += (G_VAL(pix) * j) >> 10;
+                                bb += (B_VAL(pix) * j) >> 10;
+                             }
+                           a += ((aa - a) * xap) >> 8;
+                           r += ((rr - r) * xap) >> 8;
+                           g += ((gg - g) * xap) >> 8;
+                           b += ((bb - b) * xap) >> 8;
+                        }
+                      *pbuf++ = ARGB_JOIN(a >> 4, r >> 4, g >> 4, b >> 4);
+                      xp++;  xapp++;
+                   }
+
+                 func(buf, NULL, dc->mul.col, dptr, w);
+               }
+#ifdef EVAS_SLI
+            ysli++;
+#endif
+            pbuf = buf;
+            dptr += dst_w;  dst_clip_w = w;
+            yp++;  yapp++;
+            xp = xpoints + dxx;
+            xapp = xapoints + dxx;
+         }
+     }
+   else
+     {
+#ifdef DIRECT_SCALE
+        if ((!src->cache_entry.flags.alpha) &&
+           (!dst->cache_entry.flags.alpha) &&
+           (!dc->mul.use))
+         {
+            while (dst_clip_h--)
+              {
+#ifdef EVAS_SLI
+                 if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+                   {
+                      Cy = *yapp >> 16;
+                      yap = *yapp & 0xffff;
+
+                      pbuf = dptr;
+                      while (dst_clip_w--)
+                        {
+                           pix = *yp + *xp + pos;
+
+                           r = (R_VAL(pix) * yap) >> 10;
+                           g = (G_VAL(pix) * yap) >> 10;
+                           b = (B_VAL(pix) * yap) >> 10;
+                           for (j = (1 << 14) - yap; j > Cy; j -= Cy)
+                             {
+                                pix += src_w;
+                                r += (R_VAL(pix) * Cy) >> 10;
+                                g += (G_VAL(pix) * Cy) >> 10;
+                                b += (B_VAL(pix) * Cy) >> 10;
+                             }
+                           if (j > 0)
+                             {
+                                pix += src_w;
+                                r += (R_VAL(pix) * j) >> 10;
+                                g += (G_VAL(pix) * j) >> 10;
+                                b += (B_VAL(pix) * j) >> 10;
+                             }
+                           if ((xap = *xapp) > 0)
+                             {
+                                pix = *yp + *xp + 1 + pos;
+                                rr = (R_VAL(pix) * yap) >> 10;
+                                gg = (G_VAL(pix) * yap) >> 10;
+                                bb = (B_VAL(pix) * yap) >> 10;
+                                for (j = (1 << 14) - yap; j > Cy; j -= Cy)
+                                  {
+                                     pix += src_w;
+                                     rr += (R_VAL(pix) * Cy) >> 10;
+                                     gg += (G_VAL(pix) * Cy) >> 10;
+                                     bb += (B_VAL(pix) * Cy) >> 10;
+                                  }
+                                if (j > 0)
+                                  {
+                                     pix += src_w;
+                                     rr += (R_VAL(pix) * j) >> 10;
+                                     gg += (G_VAL(pix) * j) >> 10;
+                                     bb += (B_VAL(pix) * j) >> 10;
+                                  }
+                                r += ((rr - r) * xap) >> 8;
+                                g += ((gg - g) * xap) >> 8;
+                                b += ((bb - b) * xap) >> 8;
+                             }
+                           *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
+                           xp++;  xapp++;
+                        }
+                   }
+#ifdef EVAS_SLI
+                 ysli++;
+#endif
+                 dptr += dst_w;  dst_clip_w = w;
+                 yp++;  yapp++;
+                 xp = xpoints + dxx;
+                 xapp = xapoints + dxx;
+              }
+         }
+       else
+#endif
+         {
+            while (dst_clip_h--)
+              {
+#ifdef EVAS_SLI
+                 if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+                   {
+                      Cy = *yapp >> 16;
+                      yap = *yapp & 0xffff;
+
+                      while (dst_clip_w--)
+                        {
+                           pix = *yp + *xp + pos;
+
+                           r = (R_VAL(pix) * yap) >> 10;
+                           g = (G_VAL(pix) * yap) >> 10;
+                           b = (B_VAL(pix) * yap) >> 10;
+                           for (j = (1 << 14) - yap; j > Cy; j -= Cy)
+                             {
+                                pix += src_w;
+                                r += (R_VAL(pix) * Cy) >> 10;
+                                g += (G_VAL(pix) * Cy) >> 10;
+                                b += (B_VAL(pix) * Cy) >> 10;
+                             }
+                           if (j > 0)
+                             {
+                                pix += src_w;
+                                r += (R_VAL(pix) * j) >> 10;
+                                g += (G_VAL(pix) * j) >> 10;
+                                b += (B_VAL(pix) * j) >> 10;
+                             }
+                           if ((xap = *xapp) > 0)
+                             {
+                                pix = *yp + *xp + 1 + pos;
+                                rr = (R_VAL(pix) * yap) >> 10;
+                                gg = (G_VAL(pix) * yap) >> 10;
+                                bb = (B_VAL(pix) * yap) >> 10;
+                                for (j = (1 << 14) - yap; j > Cy; j -= Cy)
+                                  {
+                                     pix += src_w;
+                                     rr += (R_VAL(pix) * Cy) >> 10;
+                                     gg += (G_VAL(pix) * Cy) >> 10;
+                                     bb += (B_VAL(pix) * Cy) >> 10;
+                                  }
+                                if (j > 0)
+                                  {
+                                     pix += src_w;
+                                     rr += (R_VAL(pix) * j) >> 10;
+                                     gg += (G_VAL(pix) * j) >> 10;
+                                     bb += (B_VAL(pix) * j) >> 10;
+                                  }
+                                r += ((rr - r) * xap) >> 8;
+                                g += ((gg - g) * xap) >> 8;
+                                b += ((bb - b) * xap) >> 8;
+                             }
+                           *pbuf++ = ARGB_JOIN(0xff, r >> 4, g >> 4, b >> 4);
+                           xp++;  xapp++;
+                        }
+
+                      func(buf, NULL, dc->mul.col, dptr, w);
+                   }
+#ifdef EVAS_SLI
+                 ysli++;
+#endif
+                 pbuf = buf;
+                 dptr += dst_w;  dst_clip_w = w;
+                 yp++;  yapp++;
+                 xp = xpoints + dxx;
+                 xapp = xapoints + dxx;
+              }
+         }
+     }
+}
diff --git a/src/lib/engines/common/evas_scale_smooth_scaler_noscale.c b/src/lib/engines/common/evas_scale_smooth_scaler_noscale.c
new file mode 100644 (file)
index 0000000..957b6a3
--- /dev/null
@@ -0,0 +1,27 @@
+{
+   DATA32 *ptr;
+   RGBA_Gfx_Func func;
+#ifdef EVAS_SLI
+   int ysli = dst_clip_y;
+#endif
+
+   ptr = src->image.data + ((dst_clip_y - dst_region_y + src_region_y) * src_w) + (dst_clip_x - dst_region_x) + src_region_x;
+   if (dc->mul.use)
+       func = evas_common_gfx_func_composite_pixel_color_span_get(src, dc->mul.col, dst, dst_clip_w, dc->render_op);
+   else
+       func = evas_common_gfx_func_composite_pixel_span_get(src, dst, dst_clip_w, dc->render_op);
+   while (dst_clip_h--)
+     {
+#ifdef EVAS_SLI
+       if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+         {
+            func(ptr, NULL, dc->mul.col, dst_ptr, dst_clip_w);
+         }
+#ifdef EVAS_SLI
+       ysli++;
+#endif
+       ptr += src_w;
+       dst_ptr += dst_w;
+     }
+}
diff --git a/src/lib/engines/common/evas_scale_smooth_scaler_up.c b/src/lib/engines/common/evas_scale_smooth_scaler_up.c
new file mode 100644 (file)
index 0000000..15f6a07
--- /dev/null
@@ -0,0 +1,263 @@
+{
+   int         srx = src_region_x, sry = src_region_y;
+   int         srw = src_region_w, srh = src_region_h;
+   int         drx = dst_region_x, dry = dst_region_y;
+   int         drw = dst_region_w, drh = dst_region_h;
+
+   int         dsxx, dsyy, sxx, syy, sx, sy;
+   int         cx, cy;
+   int         direct_scale = 0, buf_step = 0;
+
+   DATA32      *psrc, *pdst, *pdst_end;
+   DATA32      *buf, *pbuf, *pbuf_end;
+   RGBA_Gfx_Func  func;
+
+   /* a scanline buffer */
+   pdst = dst_ptr;  // it's been set at (dst_clip_x, dst_clip_y)
+   pdst_end = pdst + (dst_clip_h * dst_w);
+   if (!dc->mul.use)
+     {
+       if ((dc->render_op == _EVAS_RENDER_BLEND) && !src->cache_entry.flags.alpha)
+         { direct_scale = 1;  buf_step = dst->cache_entry.w; }
+       else if (dc->render_op == _EVAS_RENDER_COPY)
+         {
+           direct_scale = 1;  buf_step = dst->cache_entry.w;
+           if (src->cache_entry.flags.alpha)
+               dst->cache_entry.flags.alpha = 1;
+         }
+     }
+   if (!direct_scale)
+     {
+       buf = alloca(dst_clip_w * sizeof(DATA32));
+       if (dc->mul.use)
+          func = evas_common_gfx_func_composite_pixel_color_span_get(src, dc->mul.col, dst, dst_clip_w, dc->render_op);
+       else
+          func  = evas_common_gfx_func_composite_pixel_span_get(src, dst, dst_clip_w, dc->render_op);
+     }
+   else
+       buf = pdst;
+
+   if ((srw > 1) && (drw > 1))
+       dsxx = ((srw - 1) << 16) / (drw - 1);
+   else
+       dsxx = (srw << 16) / drw;
+   if ((srh > 1) && (drh > 1))
+       dsyy = ((srh - 1) << 16) / (drh - 1);
+   else
+       dsyy = (srh << 16) / drh;
+
+   cx = dst_clip_x - drx;
+   cy = dst_clip_y - dry;
+
+   sxx = (dsxx * cx);
+   syy = (dsyy * cy);
+
+   sx = sxx >> 16;
+   sy = syy >> 16;
+
+   if (drh == srh)
+     {
+       int  sxx0 = sxx;
+#ifdef EVAS_SLI
+       int ysli = dst_clip_y;
+#endif
+       psrc = src->image.data + (src_w * (sry + cy)) + srx;
+       while (pdst < pdst_end)
+         {
+#ifdef EVAS_SLI
+            if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+              {
+                 pbuf = buf;  pbuf_end = buf + dst_clip_w;
+                 sxx = sxx0;
+#ifdef SCALE_USING_MMX
+                 pxor_r2r(mm0, mm0);
+                 MOV_A2R(ALPHA_255, mm5)
+#endif
+                   while (pbuf < pbuf_end)
+                     {
+                        DATA32   p0, p1;
+                        int      ax;
+
+                        sx = (sxx >> 16);
+                        ax = 1 + ((sxx - (sx << 16)) >> 8);
+                        p0 = p1 = *(psrc + sx);
+                        if ((sx + 1) < srw)
+                          p1 = *(psrc + sx + 1);
+#ifdef SCALE_USING_MMX
+                        MOV_P2R(p0, mm1, mm0)
+                          if (p0 | p1)
+                            {
+                               MOV_A2R(ax, mm3)
+                                 MOV_P2R(p1, mm2, mm0)
+                                   INTERP_256_R2R(mm3, mm2, mm1, mm5)
+                            }
+                        MOV_R2P(mm1, *pbuf, mm0)
+                          pbuf++;
+#else
+                        if (p0 | p1)
+                          p0 = INTERP_256(ax, p1, p0);
+                        *pbuf++ = p0;
+#endif
+                        sxx += dsxx;
+                     }
+                 /* * blend here [clip_w *] buf -> dptr * */
+                 if (!direct_scale)
+                   func(buf, NULL, dc->mul.col, pdst, dst_clip_w);
+              }
+#ifdef EVAS_SLI
+            ysli++;
+#endif
+            pdst += dst_w;
+            psrc += src_w;
+            buf += buf_step;
+         }
+
+       goto done_scale_up;
+     }
+   else if (drw == srw)
+     {
+       DATA32  *ps = src->image.data + (src_w * sry) + srx + cx;
+#ifdef EVAS_SLI
+       int ysli = dst_clip_y;
+#endif
+
+       while (pdst < pdst_end)
+         {
+#ifdef EVAS_SLI
+            if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+              {
+                 int        ay;
+
+                 sy = syy >> 16;
+                 psrc = ps + (sy * src_w);
+                 ay = 1 + ((syy - (sy << 16)) >> 8);
+#ifdef SCALE_USING_MMX
+                 pxor_r2r(mm0, mm0);
+                 MOV_A2R(ALPHA_255, mm5)
+                   MOV_A2R(ay, mm4)
+#endif
+                     pbuf = buf;  pbuf_end = buf + dst_clip_w;
+                 while (pbuf < pbuf_end)
+                   {
+                      DATA32  p0 = *psrc, p2 = p0;
+
+                      if ((sy + 1) < srh)
+                        p2 = *(psrc + src_w);
+#ifdef SCALE_USING_MMX
+                      MOV_P2R(p0, mm1, mm0)
+                        if (p0 | p2)
+                          {
+                             MOV_P2R(p2, mm2, mm0)
+                               INTERP_256_R2R(mm4, mm2, mm1, mm5)
+                          }
+                      MOV_R2P(mm1, *pbuf, mm0)
+                        pbuf++;
+#else
+                      if (p0 | p2)
+                        p0 = INTERP_256(ay, p2, p0);
+                      *pbuf++ = p0;
+#endif
+                      psrc++;
+                   }
+                 /* * blend here [clip_w *] buf -> dptr * */
+                 if (!direct_scale)
+                   func(buf, NULL, dc->mul.col, pdst, dst_clip_w);
+              }
+#ifdef EVAS_SLI
+            ysli++;
+#endif
+           pdst += dst_w;
+           syy += dsyy;
+           buf += buf_step;
+         }
+       goto done_scale_up;
+     }
+
+     {
+       DATA32  *ps = src->image.data + (src_w * sry) + srx;
+       int     sxx0 = sxx;
+#ifdef EVAS_SLI
+       int ysli = dst_clip_y;
+#endif
+
+       while (pdst < pdst_end)
+         {
+#ifdef EVAS_SLI
+            if (((ysli) % dc->sli.h) == dc->sli.y)
+#endif
+              {
+                 int   ay;
+
+                 sy = syy >> 16;
+                 psrc = ps + (sy * src_w);
+                 ay = 1 + ((syy - (sy << 16)) >> 8);
+#ifdef SCALE_USING_MMX
+                 MOV_A2R(ay, mm4)
+                   pxor_r2r(mm0, mm0);
+                 MOV_A2R(ALPHA_255, mm5)
+#endif
+                   pbuf = buf;  pbuf_end = buf + dst_clip_w;
+                 sxx = sxx0;
+                 while (pbuf < pbuf_end)
+                   {
+                      int     ax;
+                      DATA32  *p, *q;
+                      DATA32  p0, p1, p2, p3;
+
+                      sx = sxx >> 16;
+                      ax = 1 + ((sxx - (sx << 16)) >> 8);
+                      p = psrc + sx;  q = p + src_w;
+                      p0 = p1 = p2 = p3 = *p;
+                      if ((sx + 1) < srw)
+                        p1 = *(p + 1);
+                      if ((sy + 1) < srh)
+                        {
+                           p2 = *q;  p3 = p2;
+                           if ((sx + 1) < srw)
+                             p3 = *(q + 1);
+                        }
+#ifdef SCALE_USING_MMX
+                      MOV_A2R(ax, mm6)
+                        MOV_P2R(p0, mm1, mm0)
+                          if (p0 | p1)
+                            {
+                               MOV_P2R(p1, mm2, mm0)
+                                 INTERP_256_R2R(mm6, mm2, mm1, mm5)
+                            }
+                      MOV_P2R(p2, mm2, mm0)
+                        if (p2 | p3)
+                          {
+                             MOV_P2R(p3, mm3, mm0)
+                               INTERP_256_R2R(mm6, mm3, mm2, mm5)
+                          }
+                      INTERP_256_R2R(mm4, mm2, mm1, mm5)
+                        MOV_R2P(mm1, *pbuf, mm0)
+                          pbuf++;
+#else
+                      if (p0 | p1)
+                        p0 = INTERP_256(ax, p1, p0);
+                      if (p2 | p3)
+                        p2 = INTERP_256(ax, p3, p2);
+                      if (p0 | p2)
+                        p0 = INTERP_256(ay, p2, p0);
+                      *pbuf++ = p0;
+#endif
+                      sxx += dsxx;
+                   }
+                 /* * blend here [clip_w *] buf -> dptr * */
+                 if (!direct_scale)
+                   func(buf, NULL, dc->mul.col, pdst, dst_clip_w);
+              }
+#ifdef EVAS_SLI
+            ysli++;
+#endif
+            pdst += dst_w;
+            syy += dsyy;
+            buf += buf_step;
+         }
+     }
+   done_scale_up:
+   return;
+}
diff --git a/src/lib/engines/common/evas_scale_span.c b/src/lib/engines/common/evas_scale_span.c
new file mode 100644 (file)
index 0000000..8725240
--- /dev/null
@@ -0,0 +1,657 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#include "evas_common.h"
+#include "evas_convert_color.h"
+#include "evas_scale_span.h"
+
+static void
+evas_common_scale_rgba_span_(DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir)
+{
+   int  mul = 0, step = 1;
+   DATA32 *pdst = dst;
+
+   if (!src || !dst) return;
+   if ((src_len < 1) || (dst_len < 1)) return;
+   if ((src_len > 65535) || (dst_len > 65535)) return;
+   if (mul_col != 0xffffffff)
+       mul = 1;
+   if (dir < 0)
+     {
+       pdst += dst_len - 1;
+       step = -1;
+     }
+
+   if ((src_len == 1) || (dst_len == 1))
+     {
+       DATA32 c = *src;
+
+       if (mul) c = MUL4_SYM(mul_col, c);
+       while (dst_len--)
+          *dst++ = c;
+       return;
+     }
+
+   if (src_len == dst_len)
+     {
+       if (mul)
+         {
+#ifdef BUILD_MMX
+           pxor_r2r(mm0, mm0);
+           MOV_A2R(ALPHA_255, mm5)
+           MOV_P2R(mul_col, mm7, mm0)
+#endif
+           while (dst_len--)
+             {
+#ifdef BUILD_MMX
+               MOV_P2R(*src, mm1, mm0)
+               MUL4_SYM_R2R(mm7, mm1, mm5)
+               MOV_R2P(mm1, *pdst, mm0)
+#else
+               *pdst = MUL4_SYM(mul_col, *src);
+#endif
+               src++;  pdst += step;
+             }
+           return;
+         }
+       while (dst_len--)
+         {
+           *pdst = *src;
+           src++;  pdst += step;
+         }
+       return;
+     }
+
+     {
+       DATA32  dsxx = (((src_len - 1) << 16) / (dst_len - 1));
+       DATA32  sxx = 0;
+       int     sx = sxx >> 16;
+
+#ifdef BUILD_MMX
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_255, mm5)
+       if (mul)
+         {
+           MOV_P2R(mul_col, mm7, mm0)
+         }
+#endif
+       while (dst_len--)
+         {
+           DATA32   p2, p1 = 0;
+           int      a;
+
+           sx = (sxx >> 16);
+           if (sx < src_len)
+               p1 = *(src + sx);
+           p2 = p1;
+           if ((sx + 1) < src_len)
+               p2 = *(src + sx + 1);
+           a = 1 + ((sxx - (sx << 16)) >> 8);
+#ifdef BUILD_MMX
+           MOV_A2R(a, mm3)
+           MOV_P2R(p1, mm1, mm0)
+           MOV_P2R(p2, mm2, mm0)
+           INTERP_256_R2R(mm3, mm2, mm1, mm5)
+           if (mul)
+             {
+               MUL4_SYM_R2R(mm7, mm1, mm5)
+             }
+           MOV_R2P(mm1, *pdst, mm0)
+#else
+           p1 = INTERP_256(a, p2, p1);
+           if (mul)
+               p1 = MUL4_SYM(mul_col, p1);
+           *pdst = p1;
+#endif
+           pdst += step;  sxx += dsxx;
+         }
+       return;
+     }
+}
+
+static void
+evas_common_scale_rgba_a8_span_(DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir)
+{
+   int  mul = 0, step = 1;
+   DATA32 *pdst = dst;
+
+   if (!src || !mask || !dst) return;
+   if ((src_len < 1) || (dst_len < 1)) return;
+   if ((src_len > 65535) || (dst_len > 65535)) return;
+   if (mul_col != 0xffffffff)
+       mul = 1;
+   if (dir < 0)
+     {
+       pdst += dst_len - 1;
+       step = -1;
+     }
+
+   if ((src_len == 1) || (dst_len == 1))
+     {
+       DATA32 c = MUL_SYM(*mask, *src);
+
+       if (mul) c = MUL4_SYM(mul_col, c);
+       while (dst_len--)
+          *dst++ = c;
+       return;
+     }
+
+   if (src_len == dst_len)
+     {
+#ifdef BUILD_MMX
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_255, mm5)
+#endif
+       if (mul)
+         {
+#ifdef BUILD_MMX
+           MOV_P2R(mul_col, mm7, mm0)
+#endif
+           while (dst_len--)
+             {
+#ifdef BUILD_MMX
+               MOV_P2R(*src, mm1, mm0)
+               MOV_A2R(*mask, mm3)
+               MUL4_SYM_R2R(mm3, mm1, mm5)
+               MUL4_SYM_R2R(mm7, mm1, mm5)
+               MOV_R2P(mm1, *pdst, mm0)
+#else
+               DATA32  c = MUL_SYM(*mask, *src);
+               *pdst = MUL4_SYM(mul_col, c);
+#endif
+               src++;  mask++;  pdst += step;
+             }
+           return;
+         }
+       while (dst_len--)
+         {
+#ifdef BUILD_MMX
+           MOV_P2R(*src, mm1, mm0)
+           MOV_A2R(*mask, mm3)
+           MUL4_SYM_R2R(mm3, mm1, mm5)
+           MOV_R2P(mm1, *pdst, mm0)
+#else
+           *pdst = MUL_SYM(*mask, *src);
+#endif
+           src++;  mask++;  pdst += step;
+         }
+       return;
+     }
+
+     {
+       DATA32  dsxx = (((src_len - 1) << 16) / (dst_len - 1));
+       DATA32  sxx = 0;
+       int     sx = sxx >> 16;
+
+#ifdef BUILD_MMX
+       pxor_r2r(mm0, mm0);
+       MOV_A2R(ALPHA_255, mm5)
+       if (mul)
+         {
+           MOV_P2R(mul_col, mm7, mm0)
+         }
+#endif
+       while (dst_len--)
+         {
+           DATA32   p2, p1 = 0;
+           int      a, a2, a1 = 0;
+
+           sx = (sxx >> 16);
+           if (sx < src_len)
+             {
+               p1 = *(src + sx);
+               a1 = *(mask + sx);
+             }
+           p2 = p1;  a2 = a1;
+           if ((sx + 1) < src_len)
+             {
+               p2 = *(src + sx + 1);
+               a2 = *(mask + sx + 1);
+             }
+           a = 1 + ((sxx - (sx << 16)) >> 8);
+#ifdef BUILD_MMX
+           MOV_A2R(a, mm3)
+           MOV_P2R(p1, mm1, mm0)
+           MOV_P2R(p2, mm2, mm0)
+           INTERP_256_R2R(mm3, mm2, mm1, mm5)
+           a1 += 1 + ((a * (a2 - a1)) >> 8);
+           MOV_A2R(a1, mm3)
+           MUL4_256_R2R(mm3, mm1)
+           if (mul)
+             {
+               MUL4_SYM_R2R(mm7, mm1, mm5)
+             }
+           MOV_R2P(mm1, *pdst, mm0)
+#else
+           p1 = INTERP_256(a, p2, p1);
+           a1 += 1 + ((a * (a2 - a1)) >> 8);
+           p1 = MUL_256(a1, p1);
+           if (mul)
+               p1 = MUL4_SYM(mul_col, p1);
+           *pdst = p1;
+#endif
+           pdst += step;  sxx += dsxx;
+         }
+       return;
+     }
+}
+
+static void
+evas_common_scale_a8_span_(DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir)
+{
+   int    step = 1;
+   DATA32 *pdst = dst;
+
+   if (!mask || !dst) return;
+   if ((src_len < 1) || (dst_len < 1)) return;
+   if ((src_len > 65535) || (dst_len > 65535)) return;
+   if (dir < 0)
+     {
+       pdst += dst_len - 1;
+       step = -1;
+     }
+
+   if ((src_len == 1) || (dst_len == 1))
+     {
+       DATA32 c = MUL_SYM(*mask, mul_col);
+
+       while (dst_len--)
+          *dst++ = c;
+       return;
+     }
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+   MOV_P2R(mul_col, mm7, mm0)
+#endif
+   if (src_len == dst_len)
+     {
+       while (dst_len--)
+         {
+#ifdef BUILD_MMX
+           MOV_A2R(*mask, mm3)
+           MUL4_SYM_R2R(mm7, mm3, mm5)
+           MOV_R2P(mm3, *pdst, mm0)
+#else
+           *pdst = MUL_SYM(*mask, mul_col);
+#endif
+           mask++;  pdst += step;
+         }
+       return;
+     }
+
+     {
+       DATA32  dsxx = (((src_len - 1) << 16) / (dst_len - 1));
+       DATA32  sxx = 0;
+       int     sx = sxx >> 16;
+
+       while (dst_len--)
+         {
+           int   a, a2, a1 = 0;
+
+           sx = (sxx >> 16);
+           if (sx < src_len)
+               a1 = *(mask + sx);
+           a2 = a1;
+           if ((sx + 1) < src_len)
+               a2 = *(mask + sx + 1);
+           a = 1 + ((sxx - (sx << 16)) >> 8);
+           a1 += 1 + ((a * (a2 - a1)) >> 8);
+#ifdef BUILD_MMX
+           MOV_A2R(a1, mm3)
+           MUL4_256_R2R(mm7, mm3)
+           MOV_R2P(mm3, *pdst, mm0)
+#else
+           *pdst = MUL_256(a1, mul_col);
+#endif
+           pdst += step;  sxx += dsxx;
+         }
+       return;
+     }
+}
+
+static void
+evas_common_scale_clip_a8_span_(DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir)
+{
+   int   mul = 0, step = 1;
+   DATA32 *pdst = dst;
+
+   if (!mask || !dst) return;
+   if ((src_len < 1) || (dst_len < 1)) return;
+   if ((src_len > 65535) || (dst_len > 65535)) return;
+   if (mul_col != 0xffffffff)
+       mul = 1;
+   if (dir < 0)
+     {
+       pdst += dst_len - 1;
+       step = -1;
+     }
+
+#ifdef BUILD_MMX
+   pxor_r2r(mm0, mm0);
+   MOV_A2R(ALPHA_255, mm5)
+   if (mul)
+     {
+       MOV_P2R(mul_col, mm7, mm0)
+     }
+#endif
+   if ((src_len == 1) || (dst_len == 1))
+     {
+#ifdef BUILD_MMX
+       MOV_A2R(*mask, mm3)
+#else
+       DATA32 c = *mask;
+#endif
+       if (mul)
+         {
+#ifdef BUILD_MMX
+           MUL4_SYM_R2R(mm7, mm3, mm5)
+#else
+           c = MUL_SYM(c, mul_col);
+#endif
+           while (dst_len--)
+             {
+#ifdef BUILD_MMX
+               MOV_P2R(*dst, mm1, mm0)
+               MUL4_SYM_R2R(mm3, mm1, mm5)
+               MOV_R2P(mm1, *dst, mm0)
+#else
+               *dst = MUL4_SYM(c, *dst);
+#endif
+               dst++;
+             }
+           return;
+         }
+       while (dst_len--)
+         {
+#ifdef BUILD_MMX
+           MOV_P2R(*dst, mm1, mm0)
+           MUL4_SYM_R2R(mm3, mm1, mm5)
+           MOV_R2P(mm1, *dst, mm0)
+#else
+           *dst = MUL_SYM(c, *dst);
+#endif
+           dst++;
+         }
+       return;
+     }
+
+   if (src_len == dst_len)
+     {
+       if (mul)
+         {
+           while (dst_len--)
+             {
+#ifdef BUILD_MMX
+               MOV_A2R(*mask, mm3)
+               MUL4_SYM_R2R(mm7, mm3, mm5)
+               MOV_P2R(*pdst, mm1, mm0)
+               MUL4_SYM_R2R(mm3, mm1, mm5)
+               MOV_R2P(mm1, *pdst, mm0)
+#else
+               DATA32 c = MUL_SYM(*mask, mul_col);
+
+               *pdst = MUL4_SYM(c, *pdst);
+#endif
+               mask++;  pdst += step;
+             }
+           return;
+         }
+       while (dst_len--)
+         {
+#ifdef BUILD_MMX
+           MOV_A2R(*mask, mm3)
+           MOV_P2R(*pdst, mm1, mm0)
+           MUL4_SYM_R2R(mm3, mm1, mm5)
+           MOV_R2P(mm1, *pdst, mm0)
+#else
+           *pdst = MUL_SYM(*mask, *pdst);
+#endif
+           mask++;  pdst += step;
+         }
+       return;
+     }
+
+     {
+       DATA32  dsxx = (((src_len - 1) << 16) / (dst_len - 1));
+       DATA32  sxx = 0;
+       int     sx = sxx >> 16;
+
+       while (dst_len--)
+         {
+           int   a, a2, a1 = 0;
+
+           sx = (sxx >> 16);
+           if (sx < src_len)
+               a1 = *(mask + sx);
+           a2 = a1;
+           if ((sx + 1) < src_len)
+               a2 = *(mask + sx + 1);
+           a = 1 + ((sxx - (sx << 16)) >> 8);
+           a1 += 1 + ((a * (a2 - a1)) >> 8);
+#ifdef BUILD_MMX
+           MOV_A2R(a1, mm3)
+           MOV_P2R(*pdst, mm1, mm0)
+           MUL4_256_R2R(mm3, mm1)
+           if (mul)
+             {
+               MUL4_SYM_R2R(mm7, mm1, mm5)
+             }
+           MOV_R2P(mm1, *pdst, mm0)
+#else
+           *pdst = MUL_256(a1, *pdst);
+           if (mul)
+               *pdst = MUL4_SYM(mul_col, *pdst);
+#endif
+           pdst += step;  sxx += dsxx;
+         }
+       return;
+     }
+}
+
+EAPI void
+evas_common_scale_rgba_span(DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir)
+{
+   evas_common_scale_rgba_span_(src, mask, src_len, mul_col, dst, dst_len, dir);
+   evas_common_cpu_end_opt();
+}
+
+EAPI void
+evas_common_scale_rgba_a8_span(DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir)
+{
+   evas_common_scale_rgba_a8_span_(src, mask, src_len, mul_col, dst, dst_len, dir);
+   evas_common_cpu_end_opt();
+}
+
+EAPI void
+evas_common_scale_a8_span(DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir)
+{
+   evas_common_scale_a8_span_(src, mask, src_len, mul_col, dst, dst_len, dir);
+   evas_common_cpu_end_opt();
+}
+
+EAPI void
+evas_common_scale_clip_a8_span(DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir)
+{
+   evas_common_scale_clip_a8_span_(src, mask, src_len, mul_col, dst, dst_len, dir);
+   evas_common_cpu_end_opt();
+}
+
+EAPI void
+evas_common_scale_hsva_span(DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir)
+{
+   int  mul = 0, step = 1;
+   DATA32 *pdst = dst;
+
+   if (!src || !dst) return;
+   if ((src_len < 1) || (dst_len < 1)) return;
+   if ((src_len > 65535) || (dst_len > 65535)) return;
+   if (mul_col != 0xffffffff)
+       mul = 1;
+   if (dir < 0)
+     {
+       pdst += dst_len - 1;
+       step = -1;
+     }
+
+   if ((src_len == 1) || (dst_len == 1))
+     {
+       DATA32 c = *src;
+
+       if (mul) c = MUL4_SYM(mul_col, c);
+       while (dst_len--)
+          *dst++ = c;
+       return;
+     }
+
+   if (src_len == dst_len)
+     {
+       if (mul)
+         {
+           while (dst_len--)
+             {
+               *pdst = MUL4_SYM(mul_col, *src);
+               src++;  pdst += step;
+             }
+           return;
+         }
+       while (dst_len--)
+         {
+           *pdst = *src;
+           src++;  pdst += step;
+         }
+       return;
+     }
+
+     {
+       DATA32  dsxx = (((src_len - 1) << 16) / (dst_len - 1));
+       DATA32  sxx = 0;
+       int     sx = sxx >> 16;
+
+       while (dst_len--)
+         {
+           DATA32   p2, p1 = 0;
+           int      a, h1, s1, v1, h2, s2, v2;
+
+           sx = (sxx >> 16);
+           if (sx < src_len)
+               p1 = *(src + sx);
+           evas_common_convert_color_rgb_to_hsv_int((p1 >> 16) & 0xff, (p1 >> 8) & 0xff, p1 & 0xff,
+                                                    &h1, &s1, &v1);
+           p2 = p1;
+           if ((sx + 1) < src_len)
+               p2 = *(src + sx + 1);
+           evas_common_convert_color_rgb_to_hsv_int((p2 >> 16) & 0xff, (p2 >> 8) & 0xff, p2 & 0xff,
+                                                    &h2, &s2, &v2);
+           a = 1 + ((sxx - (sx << 16)) >> 8);
+           h1 += (a * (h2 - h1)) >> 8;
+           s1 += (a * (s2 - s1)) >> 8;
+           v1 += (a * (v2 - v1)) >> 8;
+           a = (((((p2 >> 8) & 0xff0000) - ((p1 >> 8) & 0xff0000)) * a) +
+                (p1 & 0xff000000)) & 0xff000000;
+           evas_common_convert_color_hsv_to_rgb_int(h1, s1, v1, &h2, &s2, &v2);
+           p1 = a + RGB_JOIN(h2,s2,v2);
+           if (mul)
+               p1 = MUL4_SYM(mul_col, p1);
+           *pdst = p1;
+           pdst += step;  sxx += dsxx;
+         }
+       return;
+     }
+}
+
+EAPI void
+evas_common_scale_hsva_a8_span(DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir)
+{
+   int  mul = 0, step = 1;
+   DATA32 *pdst = dst;
+
+   if (!src || !mask || !dst) return;
+   if ((src_len < 1) || (dst_len < 1)) return;
+   if ((src_len > 65535) || (dst_len > 65535)) return;
+   if (mul_col != 0xffffffff)
+       mul = 1;
+   if (dir < 0)
+     {
+       pdst += dst_len - 1;
+       step = -1;
+     }
+
+   if ((src_len == 1) || (dst_len == 1))
+     {
+       DATA32 c = MUL_SYM(*mask, *src);
+
+       if (mul) c = MUL4_SYM(mul_col, c);
+       while (dst_len--)
+          *dst++ = c;
+       return;
+     }
+
+   if (src_len == dst_len)
+     {
+       if (mul)
+         {
+           while (dst_len--)
+             {
+               DATA32  c = MUL_SYM(*mask, *src);
+               *pdst = MUL4_SYM(mul_col, c);
+               src++;  mask++;  pdst += step;
+             }
+           return;
+         }
+       while (dst_len--)
+         {
+           *pdst = MUL_SYM(*mask, *src);
+           src++;  mask++;  pdst += step;
+         }
+       return;
+     }
+
+     {
+       DATA32  dsxx = (((src_len - 1) << 16) / (dst_len - 1));
+       DATA32  sxx = 0;
+       int     sx = sxx >> 16;
+
+       while (dst_len--)
+         {
+           DATA32   p2, p1 = 0;
+           int      a, a2, a1 = 0;
+           int      h1, s1, v1, h2, s2, v2;
+
+           sx = (sxx >> 16);
+           if (sx < src_len)
+             {
+               p1 = *(src + sx);
+               a1 = *(mask + sx);
+             }
+           p2 = p1;  a2 = a1;
+           if ((sx + 1) < src_len)
+             {
+               p2 = *(src + sx + 1);
+               a2 = *(mask + sx + 1);
+             }
+           evas_common_convert_color_rgb_to_hsv_int((p1 >> 16) & 0xff, (p1 >> 8) & 0xff, p1 & 0xff,
+                                                     &h1, &s1, &v1);
+           evas_common_convert_color_rgb_to_hsv_int((p2 >> 16) & 0xff, (p2 >> 8) & 0xff, p2 & 0xff,
+                                                     &h2, &s2, &v2);
+           a = 1 + ((sxx - (sx << 16)) >> 8);
+           a1 += (a * (a2 - a1)) >> 8;
+           h1 += (a * (h2 - h1)) >> 8;
+           s1 += (a * (s2 - s1)) >> 8;
+           v1 += (a * (v2 - v1)) >> 8;
+           a = (((((p2 >> 8) & 0xff0000) - ((p1 >> 8) & 0xff0000)) * a) +
+                (p1 & 0xff000000)) & 0xff000000;
+
+           evas_common_convert_color_hsv_to_rgb_int(h1, s1, v1, &h2, &s2, &v2);
+           p1 = a + RGB_JOIN(h2,s2,v2);
+           p1 = MUL_SYM(a1, p1);
+           if (mul)
+               p1 = MUL4_SYM(mul_col, p1);
+           *pdst = p1;
+           pdst += step;  sxx += dsxx;
+         }
+       return;
+     }
+}
diff --git a/src/lib/engines/common/evas_scale_span.h b/src/lib/engines/common/evas_scale_span.h
new file mode 100644 (file)
index 0000000..6c51619
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef _EVAS_SCALE_SPAN_H
+#define _EVAS_SCALE_SPAN_H
+
+
+EAPI void evas_common_scale_rgba_span                       (DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir);
+EAPI void evas_common_scale_rgba_a8_span                    (DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir);
+EAPI void evas_common_scale_a8_span                         (DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir);
+EAPI void evas_common_scale_clip_a8_span                    (DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir);
+
+EAPI void evas_common_scale_hsva_span                       (DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir);
+EAPI void evas_common_scale_hsva_a8_span                    (DATA32 *src, DATA8 *mask, int src_len, DATA32 mul_col, DATA32 *dst, int dst_len, int dir);
+
+
+#endif /* _EVAS_SCALE_SPAN_H */
diff --git a/src/lib/engines/common/evas_tiler.c b/src/lib/engines/common/evas_tiler.c
new file mode 100644 (file)
index 0000000..5cee207
--- /dev/null
@@ -0,0 +1,1328 @@
+#include "evas_common.h"
+
+#ifdef EVAS_RECT_SPLIT
+
+static const list_node_t list_node_zeroed = { NULL };
+static const list_t list_zeroed = { NULL, NULL };
+
+
+typedef struct list_node_pool
+{
+   list_node_t *node;
+   int len;
+   int max;
+} list_node_pool_t;
+
+static list_node_pool_t list_node_pool = { NULL, 0, 1024 };
+
+void
+rect_list_node_pool_set_max(int max)
+{
+   int diff;
+
+   diff = list_node_pool.len - max;
+   for (; diff > 0 && list_node_pool.node != NULL; diff--)
+     {
+        list_node_t *node;
+
+        node = list_node_pool.node;
+        list_node_pool.node = node->next;
+        list_node_pool.len--;
+
+        free(node);
+     }
+
+   list_node_pool.max = max;
+}
+
+void
+rect_list_node_pool_flush(void)
+{
+   while (list_node_pool.node)
+     {
+        list_node_t *node;
+
+        node = list_node_pool.node;
+        list_node_pool.node = node->next;
+        list_node_pool.len--;
+
+        free(node);
+     }
+}
+
+inline list_node_t *
+rect_list_node_pool_get(void)
+{
+   if (list_node_pool.node)
+     {
+        list_node_t *node;
+
+        node = list_node_pool.node;
+        list_node_pool.node = node->next;
+        list_node_pool.len--;
+
+        return node;
+     }
+   else return malloc(sizeof(rect_node_t));
+}
+
+inline void
+rect_list_node_pool_put(list_node_t *node)
+{
+   if (list_node_pool.len < list_node_pool.max)
+     {
+        node->next = list_node_pool.node;
+        list_node_pool.node = node;
+        list_node_pool.len++;
+     }
+   else free(node);
+}
+
+inline void
+rect_init(rect_t *r, int x, int y, int w, int h)
+{
+   r->area = w * h;
+
+   r->left = x;
+   r->top = y;
+
+   r->right = x + w;
+   r->bottom = y + h;
+
+   r->width = w;
+   r->height = h;
+}
+
+void
+rect_print(const rect_t r)
+{
+   printf("<rect(%d, %d, %d, %d)>", r.left, r.top, r.width, r.height);
+}
+
+void
+rect_list_print(const list_t rects)
+{
+   list_node_t *node;
+   int len;
+
+   len = 0;
+   for (node = rects.head; node != NULL; node = node->next) len++;
+
+   printf("[");
+   for (node = rects.head; node != NULL; node = node->next)
+     {
+       rect_print(((rect_node_t *)node)->rect);
+       if (node->next)
+         {
+            putchar(',');
+            if (len < 4) putchar(' ');
+            else
+              {
+                 putchar('\n');
+                 putchar(' ');
+              }
+         }
+     }
+   printf("]\n");
+}
+
+inline void
+rect_list_append_node(list_t *rects, list_node_t *node)
+{
+   if (rects->tail)
+     {
+       rects->tail->next = node;
+       rects->tail = node;
+     }
+   else
+     {
+       rects->head = node;
+       rects->tail = node;
+     }
+}
+
+inline void
+rect_list_append(list_t *rects, const rect_t r)
+{
+   rect_node_t *rect_node;
+
+   rect_node = (rect_node_t *)rect_list_node_pool_get();
+   rect_node->rect = r;
+   rect_node->_lst = list_node_zeroed;
+
+   rect_list_append_node(rects, (list_node_t *)rect_node);
+}
+
+inline void
+rect_list_append_xywh(list_t *rects, int x, int y, int w, int h)
+{
+   rect_t r;
+
+   rect_init(&r, x, y, w, h);
+   rect_list_append(rects, r);
+}
+
+inline void
+rect_list_concat(list_t *rects, list_t *other)
+{
+   if (!other->head)
+     return;
+
+   if (rects->tail)
+     {
+       rects->tail->next = other->head;
+       rects->tail = other->tail;
+     }
+   else
+     {
+       rects->head = other->head;
+       rects->tail = other->tail;
+     }
+   *other = list_zeroed;
+}
+
+inline list_node_t *
+rect_list_unlink_next(list_t *rects, list_node_t *parent_node)
+{
+    list_node_t *node;
+
+    if (parent_node)
+     {
+        node = parent_node->next;
+        parent_node->next = node->next;
+     }
+   else
+     {
+        node = rects->head;
+        rects->head = node->next;
+     }
+
+   if (rects->tail == node) rects->tail = parent_node;
+   *node = list_node_zeroed;
+   return node;
+}
+
+inline void
+rect_list_del_next(list_t *rects, list_node_t *parent_node)
+{
+    list_node_t *node;
+
+    node = rect_list_unlink_next(rects, parent_node);
+    rect_list_node_pool_put(node);
+}
+
+void
+rect_list_clear(list_t *rects)
+{
+   list_node_t *node;
+
+   node = rects->head;
+   while (node)
+     {
+        list_node_t *aux;
+
+        aux = node->next;
+        rect_list_node_pool_put(node);
+        node = aux;
+     }
+   *rects = list_zeroed;
+}
+
+static inline void
+_calc_intra_rect_area(const rect_t a, const rect_t b, int *width, int *height)
+{
+   int max_left, min_right, max_top, min_bottom;
+
+   if (a.left < b.left) max_left = b.left;
+   else max_left = a.left;
+
+   if (a.right < b.right) min_right = a.right;
+   else min_right = b.right;
+
+   *width = min_right - max_left;
+
+   if (a.top < b.top) max_top = b.top;
+   else max_top = a.top;
+
+   if (a.bottom < b.bottom) min_bottom = a.bottom;
+   else min_bottom = b.bottom;
+
+   *height = min_bottom - max_top;
+}
+
+static inline void
+_split_strict(list_t *dirty, const rect_t current, rect_t r)
+{
+   int h_1, h_2, w_1, w_2;
+
+   h_1 = current.top - r.top;
+   h_2 = r.bottom - current.bottom;
+   w_1 = current.left - r.left;
+   w_2 = r.right - current.right;
+
+   if (h_1 > 0)
+     {
+       /*    .--.r (b)                .---.r2
+         *    |  |                     |   |
+         *  .-------.cur (a) .---.r    '---'
+         *  | |  |  |     -> |   |   +
+         *  | `--'  |        `---'
+         *  `-------'
+         */
+        rect_list_append_xywh(dirty, r.left, r.top, r.width, h_1);
+        r.height -= h_1;
+        r.top = current.top;
+     }
+
+   if (h_2 > 0)
+     {
+        /*  .-------.cur (a)
+         *  | .---. |        .---.r
+         *  | |   | |    ->  |   |
+         *  `-------'        `---'   +  .---.r2
+         *    |   |                     |   |
+         *    `---'r (b)                `---'
+         */
+        rect_list_append_xywh(dirty, r.left, current.bottom, r.width, h_2);
+        r.height -= h_2;
+     }
+
+   if (w_1 > 0)
+     {
+        /* (b) r  .----.cur (a)
+         *     .--|-.  |      .--.r2   .-.r
+         *     |  | |  |  ->  |  |   + | |
+         *     `--|-'  |      `--'     `-'
+         *        `----'
+         */
+        rect_list_append_xywh(dirty, r.left, r.top, w_1, r.height);
+        /* not necessary to keep these, r (b) will be destroyed */
+        /* r.width -= w_1; */
+        /* r.left = current.left; */
+     }
+
+   if (w_2 > 0)
+     {
+        /*  .----.cur (a)
+         *  |    |
+         *  |  .-|--.r (b)  .-.r   .--.r2
+         *  |  | |  |    -> | |  + |  |
+         *  |  `-|--'       `-'    `--'
+         *  `----'
+         */
+        rect_list_append_xywh(dirty, current.right, r.top, w_2, r.height);
+        /* not necessary to keep this, r (b) will be destroyed */
+        /* r.width -= w_2; */
+     }
+}
+
+void
+rect_list_del_split_strict(list_t *rects, const rect_t del_r)
+{
+   list_t modified = list_zeroed;
+   list_node_t *cur_node, *prev_node;
+
+   prev_node = NULL;
+   cur_node = rects->head;
+   while (cur_node)
+     {
+        int intra_width, intra_height;
+        rect_t current;
+
+        current = ((rect_node_t*)cur_node)->rect;
+
+        _calc_intra_rect_area(del_r, current, &intra_width, &intra_height);
+        if ((intra_width <= 0) || (intra_height <= 0))
+          {
+             /*  .---.current      .---.del_r
+              *  |   |             |   |
+              *  `---+---.del_r    `---+---.current
+              *      |   |             |   |
+              *      `---'             `---'
+              * no interception, nothing to do
+              */
+              prev_node = cur_node;
+              cur_node = cur_node->next;
+          }
+        else if ((intra_width == current.width) &&
+                 (intra_height == current.height))
+          {
+             /*  .-------.del_r
+              *  | .---. |
+              *  | |   | |
+              *  | `---'current
+              *  `-------'
+              * current is contained, remove from rects
+              */
+              cur_node = cur_node->next;
+              rect_list_del_next(rects, prev_node);
+          }
+        else
+          {
+              _split_strict(&modified, del_r, current);
+              cur_node = cur_node->next;
+              rect_list_del_next(rects, prev_node);
+          }
+     }
+
+   rect_list_concat(rects, &modified);
+}
+
+void
+rect_list_add_split_strict(list_t *rects, list_node_t *node)
+{
+   list_t dirty = list_zeroed;
+   list_t new_dirty = list_zeroed;
+   list_node_t *cur_node;
+
+   if (!rects->head)
+     {
+        rect_list_append_node(rects, node);
+        return;
+     }
+
+   rect_list_append_node(&dirty, node);
+
+   cur_node = rects->head;
+   while (dirty.head)
+     {
+        rect_t current;
+
+        if (!cur_node)
+         {
+            rect_list_concat(rects, &dirty);
+            break;
+         }
+
+        current = ((rect_node_t*)cur_node)->rect;
+
+        while (dirty.head)
+         {
+            int intra_width, intra_height;
+            rect_t r;
+
+            r = ((rect_node_t *)dirty.head)->rect;
+            _calc_intra_rect_area(r, current, &intra_width, &intra_height);
+            if ((intra_width == r.width) && (intra_height == r.height))
+              /*  .-------.cur
+               *  | .---.r|
+               *  | |   | |
+               *  | `---' |
+               *  `-------'
+               */
+              rect_list_del_next(&dirty, NULL);
+            else if ((intra_width <= 0) || (intra_height <= 0))
+              {
+                 /*  .---.cur     .---.r
+                  *  |   |        |   |
+                  *  `---+---.r   `---+---.cur
+                  *      |   |        |   |
+                  *      `---'        `---'
+                  */
+                 list_node_t *tmp;
+                 tmp = rect_list_unlink_next(&dirty, NULL);
+                 rect_list_append_node(&new_dirty, tmp);
+              }
+            else
+              {
+                 _split_strict(&new_dirty, current, r);
+                 rect_list_del_next(&dirty, NULL);
+              }
+         }
+        dirty = new_dirty;
+        new_dirty = list_zeroed;
+
+        cur_node = cur_node->next;
+    }
+}
+
+static inline void
+_calc_intra_outer_rect_area(const rect_t a, const rect_t b,
+                            rect_t *intra, rect_t *outer)
+{
+    int min_left, max_left, min_right, max_right;
+    int min_top, max_top, min_bottom, max_bottom;
+
+    if (a.left < b.left)
+     {
+        max_left = b.left;
+        min_left = a.left;
+     }
+   else
+     {
+        max_left = a.left;
+        min_left = b.left;
+     }
+
+   if (a.right < b.right)
+     {
+        min_right = a.right;
+        max_right = b.right;
+     }
+   else
+     {
+        min_right = b.right;
+        max_right = a.right;
+     }
+
+   intra->left = max_left;
+   intra->right = min_right;
+   intra->width = min_right - max_left;
+
+   outer->left = min_left;
+   outer->right = max_right;
+   outer->width = max_right - min_left;
+
+   if (a.top < b.top)
+     {
+       max_top = b.top;
+        min_top = a.top;
+     }
+   else
+     {
+        max_top = a.top;
+        min_top = b.top;
+     }
+
+   if (a.bottom < b.bottom)
+     {
+        min_bottom = a.bottom;
+        max_bottom = b.bottom;
+     }
+   else
+     {
+        min_bottom = b.bottom;
+        max_bottom = a.bottom;
+     }
+
+   intra->top = max_top;
+   intra->bottom = min_bottom;
+   intra->height = min_bottom - max_top;
+   if ((intra->width > 0) && (intra->height > 0))
+     intra->area = intra->width * intra->height;
+   else
+     intra->area = 0;
+
+   outer->top = min_top;
+   outer->bottom = max_bottom;
+   outer->height = max_bottom - min_top;
+   outer->area = outer->width * outer->height;
+}
+
+enum
+{
+   SPLIT_FUZZY_ACTION_NONE,
+     SPLIT_FUZZY_ACTION_SPLIT,
+     SPLIT_FUZZY_ACTION_MERGE
+};
+
+static inline int
+_split_fuzzy(list_t *dirty, const rect_t a, rect_t *b)
+{
+   int h_1, h_2, w_1, w_2, action;
+
+   h_1 = a.top - b->top;
+   h_2 = b->bottom - a.bottom;
+   w_1 = a.left - b->left;
+   w_2 = b->right - a.right;
+
+   action = SPLIT_FUZZY_ACTION_NONE;
+
+   if (h_1 > 0)
+     {
+        /*    .--.r (b)                .---.r2
+         *    |  |                     |   |
+         *  .-------.cur (a) .---.r    '---'
+         *  | |  |  |     -> |   |   +
+         *  | `--'  |        `---'
+         *  `-------'
+         */
+        rect_list_append_xywh(dirty, b->left, b->top, b->width, h_1);
+        b->height -= h_1;
+        b->top = a.top;
+        action = SPLIT_FUZZY_ACTION_SPLIT;
+     }
+
+   if (h_2 > 0)
+     {
+        /*  .-------.cur (a)
+         *  | .---. |        .---.r
+         *  | |   | |    ->  |   |
+         *  `-------'        `---'   +  .---.r2
+         *    |   |                     |   |
+         *    `---'r (b)                `---'
+         */
+        rect_list_append_xywh(dirty, b->left, a.bottom, b->width, h_2);
+        b->height -= h_2;
+        action = SPLIT_FUZZY_ACTION_SPLIT;
+     }
+
+   if (((w_1 > 0) || (w_2 > 0)) && (a.height == b->height))
+     return SPLIT_FUZZY_ACTION_MERGE;
+
+   if (w_1 > 0)
+     {
+        /* (b)  r  .----.cur (a)
+         *      .--|-.  |      .--.r2   .-.r
+         *      |  | |  |  ->  |  |   + | |
+         *      `--|-'  |      `--'     `-'
+         *         `----'
+         */
+        rect_list_append_xywh(dirty, b->left, b->top, w_1, b->height);
+        /* not necessary to keep these, r (b) will be destroyed */
+        /* b->width -= w_1; */
+        /* b->left = a.left; */
+        action = SPLIT_FUZZY_ACTION_SPLIT;
+     }
+
+   if (w_2 > 0)
+     {
+        /* .----.cur (a)
+         * |    |
+         * |  .-|--.r (b)  .-.r   .--.r2
+         * |  | |  |    -> | |  + |  |
+         * |  `-|--'       `-'    `--'
+         * `----'
+         */
+        rect_list_append_xywh(dirty, a.right, b->top, w_2, b->height);
+        /* not necessary to keep these, r (b) will be destroyed */
+        /* b->width -= w_2; */
+        action = SPLIT_FUZZY_ACTION_SPLIT;
+     }
+
+   return action;
+}
+
+list_node_t *
+rect_list_add_split_fuzzy(list_t *rects, list_node_t *node, int accepted_error)
+{
+   list_t dirty = list_zeroed;
+   list_node_t *old_last;
+
+   old_last = rects->tail;
+
+   if (!rects->head)
+     {
+        rect_list_append_node(rects, node);
+        return old_last;
+     }
+
+   rect_list_append_node(&dirty, node);
+   while (dirty.head)
+     {
+       list_node_t *d_node, *cur_node, *prev_cur_node;
+        int keep_dirty;
+        rect_t r;
+
+        d_node = rect_list_unlink_next(&dirty, NULL);
+        r = ((rect_node_t *)d_node)->rect;
+
+        prev_cur_node = NULL;
+        cur_node = rects->head;
+        keep_dirty = 1;
+        while (cur_node)
+         {
+            int area, action;
+            rect_t current, intra, outer;
+
+            current = ((rect_node_t *)cur_node)->rect;
+
+            _calc_intra_outer_rect_area(r, current, &intra, &outer);
+            area = current.area + r.area - intra.area;
+
+            if ((intra.width == r.width) && (intra.height == r.height))
+              {
+                 /*  .-------.cur
+                  *  | .---.r|
+                  *  | |   | |
+                  *  | `---' |
+                  *  `-------'
+                  */
+                 keep_dirty = 0;
+                 break;
+              }
+            else if ((intra.width == current.width) &&
+                     (intra.height == current.height))
+              {
+                 /* .-------.r
+                  * | .---.cur
+                  * | |   | |
+                  * | `---' |
+                  * `-------'
+                  */
+                 if (old_last == cur_node)
+                    old_last = prev_cur_node;
+                 cur_node = cur_node->next;
+                 rect_list_del_next(rects, prev_cur_node);
+              }
+            else if ((outer.area - area) <= accepted_error)
+              {
+                 /* .-----------. bounding box (outer)
+                  * |.---. .---.|
+                  * ||cur| |r  ||
+                  * ||   | |   ||
+                  * |`---' `---'|
+                  * `-----------'
+                  * merge them, remove both and add merged
+                  */
+                 rect_node_t *n;
+
+                 if (old_last == cur_node)
+                    old_last = prev_cur_node;
+
+                 n = (rect_node_t *)rect_list_unlink_next(rects, prev_cur_node);
+                 n->rect = outer;
+                 rect_list_append_node(&dirty, (list_node_t *)n);
+
+                 keep_dirty = 0;
+                 break;
+              }
+            else if (intra.area <= accepted_error)
+              {
+                 /*  .---.cur     .---.r
+                  *  |   |        |   |
+                  *  `---+---.r   `---+---.cur
+                  *      |   |        |   |
+                  *      `---'        `---'
+                  *  no split, no merge
+                  */
+                 prev_cur_node = cur_node;
+                 cur_node = cur_node->next;
+              }
+            else
+              {
+                 /* split is required */
+                 action = _split_fuzzy(&dirty, current, &r);
+                 if (action == SPLIT_FUZZY_ACTION_MERGE)
+                   {
+                      /* horizontal merge is possible: remove both, add merged */
+                      rect_node_t *n;
+
+                      if (old_last == cur_node)
+                        old_last = prev_cur_node;
+
+                      n = (rect_node_t *)
+                        rect_list_unlink_next(rects, prev_cur_node);
+
+                      n->rect.left = outer.left;
+                      n->rect.width = outer.width;
+                      n->rect.right = outer.right;
+                      n->rect.area = outer.width * r.height;
+                      rect_list_append_node(&dirty, (list_node_t *)n);
+                   }
+                 else if (action == SPLIT_FUZZY_ACTION_NONE)
+                   {
+                      /*
+                       * this rect check was totally useless,
+                       * should never happen
+                       */
+                      /* prev_cur_node = cur_node; */
+                      /* cur_node = cur_node->next; */
+                      printf("Should not get here!\n");
+                      abort();
+                   }
+
+                 keep_dirty = 0;
+                 break;
+              }
+         }
+
+        if (UNLIKELY(keep_dirty)) rect_list_append_node(rects, d_node);
+        else rect_list_node_pool_put(d_node);
+    }
+
+    return old_last;
+}
+
+static inline void
+_calc_outer_rect_area(const rect_t a, const rect_t b, rect_t *outer)
+{
+   int min_left, max_right;
+   int min_top, max_bottom;
+
+   if (a.left < b.left) min_left = a.left;
+   else min_left = b.left;
+
+   if (a.right < b.right) max_right = b.right;
+   else max_right = a.right;
+
+   outer->left = min_left;
+   outer->right = max_right;
+   outer->width = max_right - min_left;
+
+   if (a.top < b.top) min_top = a.top;
+   else min_top = b.top;
+
+   if (a.bottom < b.bottom) max_bottom = b.bottom;
+   else max_bottom = a.bottom;
+
+   outer->top = min_top;
+   outer->bottom = max_bottom;
+   outer->height = max_bottom - min_top;
+
+   outer->area = outer->width * outer->height;
+}
+
+void
+rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error)
+{
+   while (to_merge->head)
+     {
+        list_node_t *node, *parent_node;
+        rect_t r1;
+        int merged;
+
+        r1 = ((rect_node_t *)to_merge->head)->rect;
+
+        merged = 0;
+        parent_node = NULL;
+        node = rects->head;
+        while (node != NULL)
+         {
+            rect_t r2, outer;
+            int area;
+
+            r2 = ((rect_node_t *)node)->rect;
+
+            _calc_outer_rect_area(r1, r2, &outer);
+            area = r1.area + r2.area; /* intra area is taken as 0 */
+            if (outer.area - area <= accepted_error)
+              {
+                 /*
+                  * remove both r1 and r2, create r3
+                  * actually r3 uses r2 instance, saves memory
+                  */
+                 rect_node_t *n;
+
+                 n = (rect_node_t *)rect_list_unlink_next(rects, parent_node);
+                 n->rect = outer;
+                 rect_list_append_node(to_merge, (list_node_t *)n);
+                 merged = 1;
+                 break;
+              }
+
+            parent_node = node;
+            node = node->next;
+         }
+
+        if (!merged)
+         {
+            list_node_t *n;
+            n = rect_list_unlink_next(to_merge, NULL);
+            rect_list_append_node(rects, n);
+         }
+       else
+         rect_list_del_next(to_merge, NULL);
+    }
+}
+
+void
+rect_list_add_split_fuzzy_and_merge(list_t *rects,
+                                    list_node_t *node,
+                                    int split_accepted_error,
+                                    int merge_accepted_error)
+{
+   list_node_t *n;
+
+   n = rect_list_add_split_fuzzy(rects, node, split_accepted_error);
+   if (n && n->next)
+     {
+        list_t to_merge;
+
+        /* split list into 2 segments, already merged and to merge */
+        to_merge.head = n->next;
+        to_merge.tail = rects->tail;
+        rects->tail = n;
+        n->next = NULL;
+
+        rect_list_merge_rects(rects, &to_merge, merge_accepted_error);
+     }
+}
+#endif /* EVAS_RECT_SPLIT */
+
+#define TILE(tb, x, y) ((tb)->tiles.tiles[((y) * (tb)->tiles.w) + (x)])
+
+#ifdef RECTUPDATE
+#elif defined(EVAS_RECT_SPLIT)
+#else
+static int  tilebuf_x_intersect(Tilebuf *tb, int x, int w, int *x1, int *x2, int *x1_fill, int *x2_fill);
+static int  tilebuf_y_intersect(Tilebuf *tb, int y, int h, int *y1, int *y2, int *y1_fill, int *y2_fill);
+static int  tilebuf_intersect(int tsize, int tlen, int tnum, int x, int w, int *x1, int *x2, int *x1_fill, int *x2_fill);
+#endif
+static void tilebuf_setup(Tilebuf *tb);
+
+EAPI void
+evas_common_tilebuf_init(void)
+{
+}
+
+EAPI Tilebuf *
+evas_common_tilebuf_new(int w, int h)
+{
+   Tilebuf *tb;
+
+   tb = calloc(1, sizeof(Tilebuf));
+   if (!tb) return NULL;
+
+   tb->tile_size.w = 8;
+   tb->tile_size.h = 8;
+   tb->outbuf_w = w;
+   tb->outbuf_h = h;
+
+   return tb;
+}
+
+EAPI void
+evas_common_tilebuf_free(Tilebuf *tb)
+{
+#ifdef RECTUPDATE
+   evas_common_regionbuf_free(tb->rb);
+#elif defined(EVAS_RECT_SPLIT)
+   rect_list_clear(&tb->rects);
+   rect_list_node_pool_flush();
+#else
+   if (tb->tiles.tiles) free(tb->tiles.tiles);
+#endif
+   free(tb);
+}
+
+EAPI void
+evas_common_tilebuf_set_tile_size(Tilebuf *tb, int tw, int th)
+{
+   tb->tile_size.w = tw;
+   tb->tile_size.h = th;
+   tilebuf_setup(tb);
+}
+
+EAPI void
+evas_common_tilebuf_get_tile_size(Tilebuf *tb, int *tw, int *th)
+{
+   if (tw) *tw = tb->tile_size.w;
+   if (th) *th = tb->tile_size.h;
+}
+
+#ifdef EVAS_RECT_SPLIT
+static inline int
+_add_redraw(list_t *rects, int max_w, int max_h, int x, int y, int w, int h)
+{
+   rect_node_t *rn;
+
+   if ((w <= 0) || (h <= 0)) return 0;
+   RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, max_w, max_h);
+   if ((w <= 0) || (h <= 0)) return 0;
+
+   x >>= 1;
+   y >>= 1;
+   w += 2;
+   w >>= 1;
+   h += 2;
+   h >>= 1;
+
+   rn = (rect_node_t *)rect_list_node_pool_get();
+   rn->_lst = list_node_zeroed;
+   rect_init(&rn->rect, x, y, w, h);
+   //fprintf(stderr, "ACCOUNTING: add_redraw: %4d,%4d %3dx%3d\n", x, y, w, h);
+   //testing on my core2 duo desktop - fuzz of 32 or 48 is best.
+#define FUZZ 32
+   rect_list_add_split_fuzzy_and_merge(rects, (list_node_t *)rn,
+                                       FUZZ * FUZZ, FUZZ * FUZZ);
+   return 1;
+}
+#endif
+
+EAPI int
+evas_common_tilebuf_add_redraw(Tilebuf *tb, int x, int y, int w, int h)
+{
+#ifdef RECTUPDATE
+   int i;
+
+   if ((w <= 0) || (h <= 0)) return 0;
+   RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, tb->outbuf_w, tb->outbuf_h);
+   if ((w <= 0) || (h <= 0)) return 0;
+   for (i = 0; i < h; i++)
+     evas_common_regionbuf_span_add(tb->rb, x, x + w - 1, y + i);
+   return 1;
+#elif defined(EVAS_RECT_SPLIT)
+   return _add_redraw(&tb->rects, tb->outbuf_w, tb->outbuf_h, x, y, w, h);
+#else
+   int tx1, tx2, ty1, ty2, tfx1, tfx2, tfy1, tfy2, xx, yy;
+   int num;
+
+   if ((w <= 0) || (h <= 0)) return 0;
+   RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, tb->outbuf_w, tb->outbuf_h);
+   if ((w <= 0) || (h <= 0)) return 0;
+   num = 0;
+   /* wipes out any motion vectors in tiles it touches into redraws */
+   if (tilebuf_x_intersect(tb, x, w, &tx1, &tx2, &tfx1, &tfx2) &&
+       tilebuf_y_intersect(tb, y, h, &ty1, &ty2, &tfy1, &tfy2))
+     {
+        Tilebuf_Tile    *tbt;
+        int             delta_x;
+        int             delta_y;
+
+        tbt = &(TILE(tb, tx1, ty1));
+        delta_x = tx2 - tx1 + 1;
+        delta_y = ty2 - ty1 + 1;
+       for (yy = delta_y; yy > 0; yy--)
+         {
+            Tilebuf_Tile *tbti;
+
+            tbti = tbt;
+            for (xx = delta_x; xx > 0; xx--)
+              {
+                 tbti->redraw = 1;
+                 tbti++;
+              }
+             tbt += tb->tiles.w;
+         }
+       num = (tx2 - tx1 + 1) * (ty2 - ty1 + 1);
+     }
+   return num;
+#endif
+}
+
+EAPI int
+evas_common_tilebuf_del_redraw(Tilebuf *tb, int x, int y, int w, int h)
+{
+#ifdef RECTUPDATE
+   int i;
+
+   for (i = 0; i < h; i++)
+     evas_common_regionbuf_span_del(tb->rb, x, x + w - 1, y + i);
+#elif defined(EVAS_RECT_SPLIT)
+   rect_t r;
+
+   if (!tb->rects.head) return 0;
+   if ((w <= 0) || (h <= 0)) return 0;
+   RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, tb->outbuf_w, tb->outbuf_h);
+   if ((w <= 0) || (h <= 0)) return 0;
+
+   x += 1;
+   y += 1;
+   x >>= 1;
+   y >>= 1;
+   w -= 1;
+   w >>= 1;
+   h -= 1;
+   h >>= 1;
+
+   if ((w <= 0) || (h <= 0)) return 0;
+
+   rect_init(&r, x, y, w, h);
+   //fprintf(stderr, "ACCOUNTING: del_redraw: %4d,%4d %3dx%3d\n", x, y, w, h);
+
+   rect_list_del_split_strict(&tb->rects, r);
+   tb->need_merge = 1;
+   return 0;
+#else
+   int tx1, tx2, ty1, ty2, tfx1, tfx2, tfy1, tfy2, xx, yy;
+   int num;
+
+   num = 0;
+   /* wipes out any motion vectors in tiles it touches into redraws */
+   if (tilebuf_x_intersect(tb, x, w, &tx1, &tx2, &tfx1, &tfx2) &&
+       tilebuf_y_intersect(tb, y, h, &ty1, &ty2, &tfy1, &tfy2))
+     {
+        Tilebuf_Tile    *tbt;
+        int             delta_y;
+        int             delta_x;
+
+        if (!tfx1) tx1++;
+       if (!tfx2) tx2--;
+       if (!tfy1) ty1++;
+       if (!tfy2) ty2--;
+
+        tbt = &(TILE(tb, tx1, ty1));
+        delta_x = tx2 - tx1 + 1;
+        delta_y = ty2 - ty1 + 1;
+       for (yy = delta_y; yy > 0; yy--)
+         {
+            Tilebuf_Tile       *tbti;
+
+            tbti = tbt;
+            for (xx = delta_x; xx > 0; xx--)
+              {
+                 tbti->redraw = 0;
+                 tbti++;
+              }
+             tbt += tb->tiles.w;
+         }
+       num = (tx2 - tx1 + 1) * (ty2 - ty1 + 1);
+     }
+   return num;
+#endif
+}
+
+EAPI int
+evas_common_tilebuf_add_motion_vector(Tilebuf *tb, int x, int y, int w, int h, int dx, int dy, int alpha)
+{
+#ifdef EVAS_RECT_SPLIT
+   list_t lr = list_zeroed;
+   int num;
+
+   num = _add_redraw(&lr, tb->outbuf_w, tb->outbuf_h, x, y, w, h);
+   num += _add_redraw(&lr, tb->outbuf_w, tb->outbuf_h, x + dx, y + dy, w, h);
+   while (lr.head != NULL)
+     {
+        list_node_t *node = rect_list_unlink_next(&lr, NULL);
+        rect_list_add_split_fuzzy_and_merge(&tb->rects, node,
+                                            FUZZ * FUZZ, FUZZ * FUZZ);
+     }
+   return num;
+#else
+   /* FIXME: need to actually impliment motion vectors. for now it just */
+   /*        implements redraws */
+   int num;
+
+   num = evas_common_tilebuf_add_redraw(tb, x, y, w, h);
+   num += evas_common_tilebuf_add_redraw(tb, x + dx, y + dy, w, h);
+   return num;
+#endif
+}
+
+EAPI void
+evas_common_tilebuf_clear(Tilebuf *tb)
+{
+#ifdef RECTUPDATE
+   evas_common_regionbuf_clear(tb->rb);
+#elif defined(EVAS_RECT_SPLIT)
+   rect_list_clear(&tb->rects);
+   tb->need_merge = 0;
+#else
+   if (!tb->tiles.tiles) return;
+   memset(tb->tiles.tiles, 0, tb->tiles.w * tb->tiles.h * sizeof(Tilebuf_Tile));
+#endif
+}
+
+EAPI Tilebuf_Rect *
+evas_common_tilebuf_get_render_rects(Tilebuf *tb)
+{
+#ifdef RECTUPDATE
+   return evas_common_regionbuf_rects_get(tb->rb);
+#elif defined(EVAS_RECT_SPLIT)
+   list_node_t *n;
+   Tilebuf_Rect *rects = NULL;
+
+   if (tb->need_merge) {
+       list_t to_merge;
+       to_merge = tb->rects;
+       tb->rects = list_zeroed;
+       rect_list_merge_rects(&tb->rects, &to_merge, FUZZ * FUZZ);
+       tb->need_merge = 0;
+   }
+
+   for (n = tb->rects.head; n != NULL; n = n->next) {
+       rect_t cur;
+
+       cur = ((rect_node_t *)n)->rect;
+
+       cur.left <<= 1;
+       cur.top <<= 1;
+       cur.width <<= 1;
+       cur.height <<= 1;
+
+       RECTS_CLIP_TO_RECT(cur.left, cur.top, cur.width, cur.height,
+                         0, 0, tb->outbuf_w, tb->outbuf_h);
+       if ((cur.width > 0) && (cur.height > 0))
+        {
+           Tilebuf_Rect *r;
+
+           r = malloc(sizeof(Tilebuf_Rect));
+           r->_list_data.next = NULL;
+           r->_list_data.prev = NULL;
+           r->_list_data.last = NULL;
+           r->x = cur.left;
+           r->y = cur.top;
+           r->w = cur.width;
+           r->h = cur.height;
+
+           rects = evas_object_list_append(rects, r);
+        }
+   }
+   return rects;
+
+#else
+   Tilebuf_Rect *rects = NULL;
+   Tilebuf_Tile *tbt;
+   int x, y;
+
+   tbt = &(TILE(tb, 0, 0));
+   for (y = 0; y < tb->tiles.h; y++)
+     {
+       for (x = 0; x < tb->tiles.w; x++, tbt++)
+         {
+            if (tbt->redraw)
+              {
+                  Tilebuf_Tile *tbti;
+                 int can_expand_x = 1, can_expand_y = 1;
+                 Tilebuf_Rect *r = NULL;
+                 int xx = 0, yy = 0;
+                 r = malloc(sizeof(Tilebuf_Rect));
+                  r->_list_data.next = NULL;
+                  r->_list_data.prev = NULL;
+                  r->_list_data.last = NULL;
+
+/* amalgamate tiles */
+#if 1
+                  tbti = tbt;
+                 while (can_expand_x)
+                   {
+                       tbti++;
+                      xx++;
+                      if ((x + xx) >= tb->tiles.w)
+                        can_expand_x = 0;
+                      else if (!(tbti->redraw))
+                        can_expand_x = 0;
+                      if (can_expand_x)
+                        tbti->redraw = 0;
+                   }
+                  tbti = tbt;
+                 while (can_expand_y)
+                   {
+                      int i;
+
+                       tbti += tb->tiles.w;
+                      yy++;
+                      if ((y + yy) >= tb->tiles.h)
+                        can_expand_y = 0;
+                      if (can_expand_y)
+                        {
+                            Tilebuf_Tile *tbtj;
+
+                            tbtj = tbti;
+                           for (i = x; i < x + xx; i++, tbtj++)
+                             {
+                                if (!(tbtj->redraw))
+                                  {
+                                     can_expand_y = 0;
+                                     break;
+                                  }
+                             }
+                        }
+                      if (can_expand_y)
+                        {
+                            Tilebuf_Tile *tbtj;
+
+                            tbtj = tbti;
+                           for (i = x; i < x + xx; i++, tbtj++)
+                             tbtj->redraw = 0;
+                        }
+                   }
+                 tbt->redraw = 0;
+#else
+                 xx = 1;
+                 yy = 1;
+#endif
+                 r->x = x * tb->tile_size.w;
+                 r->y = y * tb->tile_size.h;
+                 r->w = (xx) * tb->tile_size.w;
+                 r->h = (yy) * tb->tile_size.h;
+                 rects = evas_object_list_append(rects, r);
+                 x = x + (xx - 1);
+                  tbt += xx - 1;
+              }
+         }
+     }
+   return rects;
+#endif
+}
+
+EAPI void
+evas_common_tilebuf_free_render_rects(Tilebuf_Rect *rects)
+{
+   while (rects)
+     {
+       Tilebuf_Rect *r;
+
+       r = rects;
+       rects = evas_object_list_remove(rects, r);
+       free(r);
+     }
+}
+
+/* need a way of getting rectangles to: blit, re-render */
+
+
+
+
+
+/* internal usage */
+
+static void
+tilebuf_setup(Tilebuf *tb)
+{
+   if ((tb->outbuf_w <= 0) || (tb->outbuf_h <= 0)) return;
+#ifdef RECTUPDATE
+   tb->rb = evas_common_regionbuf_new(tb->outbuf_w, tb->outbuf_h);
+#elif defined(EVAS_RECT_SPLIT)
+   tb->rects = list_zeroed;
+#else
+   if (tb->tiles.tiles) free(tb->tiles.tiles);
+   tb->tiles.tiles = NULL;
+
+   tb->tiles.w = (tb->outbuf_w + (tb->tile_size.w - 1)) / tb->tile_size.w;
+   tb->tiles.h = (tb->outbuf_h + (tb->tile_size.h - 1)) / tb->tile_size.h;
+
+   tb->tiles.tiles = malloc(tb->tiles.w * tb->tiles.h * sizeof(Tilebuf_Tile));
+
+   if (!tb->tiles.tiles)
+     {
+       tb->tiles.w = 0;
+       tb->tiles.h = 0;
+       return;
+     }
+   memset(tb->tiles.tiles, 0, tb->tiles.w * tb->tiles.h * sizeof(Tilebuf_Tile));
+#endif
+}
+
+#ifdef RECTUPDATE
+#elif defined(EVAS_RECT_SPLIT)
+#else
+static int
+tilebuf_x_intersect(Tilebuf *tb, int x, int w, int *x1, int *x2, int *x1_fill, int *x2_fill)
+{
+   return tilebuf_intersect(tb->tile_size.w, tb->outbuf_w, tb->tiles.w,
+                           x, w, x1, x2, x1_fill, x2_fill);
+}
+
+static int
+tilebuf_y_intersect(Tilebuf *tb, int y, int h, int *y1, int *y2, int *y1_fill, int *y2_fill)
+{
+   return tilebuf_intersect(tb->tile_size.h, tb->outbuf_h, tb->tiles.h,
+                           y, h, y1, y2, y1_fill, y2_fill);
+}
+
+static int
+tilebuf_intersect(int tsize, int tlen, int tnum, int x, int w, int *x1, int *x2, int *x1_fill, int *x2_fill)
+{
+   int p1, p2;
+
+   /* initial clip out of region */
+   if ((x + w) <= 0) return 0;
+   if (x >= tlen) return 0;
+
+   /* adjust x & w so it all fits in region */
+   if (x < 0)
+     {
+       w += x;
+       x = 0;
+     }
+   if (w < 0) return 0;
+   if ((x + w) > tlen) w = tlen - x;
+
+   /* now figure if the first edge is fully filling its tile */
+   p1 = (x) / tsize;
+   if ((p1 * tsize) == (x)) *x1_fill = 1;
+   else                     *x1_fill = 0;
+   *x1 = p1;
+
+   /* now figure if the last edge is fully filling its tile */
+   p2 = (x + w - 1) / tsize;
+   if (((p2 + 1) * tsize) == (x + w)) *x2_fill = 1;
+   else                               *x2_fill = 0;
+   *x2 = p2;
+
+   return 1;
+   tnum = 0;
+}
+#endif
diff --git a/src/lib/engines/common_16/.cvsignore b/src/lib/engines/common_16/.cvsignore
new file mode 100644 (file)
index 0000000..093d74e
--- /dev/null
@@ -0,0 +1,6 @@
+Makefile.in
+Makefile
+.deps
+.libs
+libevas_engine_common_16.la
+*.lo
diff --git a/src/lib/engines/common_16/Makefile.am b/src/lib/engines/common_16/Makefile.am
new file mode 100644 (file)
index 0000000..84321db
--- /dev/null
@@ -0,0 +1,29 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@VALGRIND_CFLAGS@ \
+@EET_CFLAGS@ \
+@pthread_cflags@
+
+noinst_LTLIBRARIES = libevas_engine_common_16.la
+
+libevas_engine_common_16_la_SOURCES = \
+evas_soft16_dither_mask.c \
+evas_soft16_font.c \
+evas_soft16_image_scaled_sampled.c \
+evas_soft16_image_unscaled.c \
+evas_soft16_main.c \
+evas_soft16_rectangle.c \
+evas_soft16_line.c \
+evas_soft16_polygon.c
+
+libevas_engine_common_16_la_DEPENDENCIES = $(top_builddir)/config.h
+
+EXTRA_DIST = \
+evas_soft16_scanline_blend.c \
+evas_soft16_scanline_fill.c
diff --git a/src/lib/engines/common_16/evas_soft16_dither_mask.c b/src/lib/engines/common_16/evas_soft16_dither_mask.c
new file mode 100644 (file)
index 0000000..9414e9a
--- /dev/null
@@ -0,0 +1,294 @@
+#include "evas_common_soft16.h"
+
+#define S16_DM_SIZE      128
+#define S16_DM_BITS      6
+#define S16_DM_DIV       64
+#define S16_DM_MSK       (S16_DM_SIZE - 1)
+#define S16_DM_SHF(_b)   (S16_DM_BITS - (8 - _b))
+
+static const DATA8 dither_table[S16_DM_SIZE][S16_DM_SIZE] =
+{
+     { 0, 41, 23, 5, 17, 39, 7, 15, 62, 23, 40, 51, 31, 47, 9, 32, 52, 27, 57, 25, 6, 61, 27, 52, 37, 7, 40, 63, 18, 36, 10, 42, 25, 62, 45, 34, 20, 42, 37, 14, 35, 29, 50, 10, 61, 2, 40, 8, 37, 12, 58, 22, 5, 41, 10, 39, 0, 60, 11, 46, 2, 55, 38, 17, 36, 59, 13, 54, 37, 56, 8, 29, 16, 13, 63, 22, 41, 55, 7, 20, 49, 14, 23, 55, 37, 23, 19, 36, 15, 49, 23, 63, 30, 14, 38, 27, 53, 13, 22, 41, 19, 31, 7, 19, 50, 30, 49, 16, 3, 32, 56, 40, 29, 34, 8, 48, 19, 45, 4, 51, 12, 46, 35, 49, 16, 42, 12, 62 },
+     { 30, 57, 36, 54, 47, 34, 52, 27, 43, 4, 28, 7, 17, 36, 62, 13, 44, 7, 18, 48, 33, 21, 44, 14, 30, 47, 12, 33, 5, 55, 31, 58, 13, 30, 4, 17, 52, 10, 60, 26, 46, 0, 39, 27, 42, 22, 47, 25, 60, 32, 9, 38, 48, 17, 59, 30, 49, 18, 34, 25, 51, 19, 5, 48, 21, 8, 28, 46, 1, 32, 41, 19, 54, 47, 37, 18, 28, 11, 44, 30, 39, 56, 2, 33, 8, 42, 61, 28, 58, 8, 46, 9, 41, 4, 58, 7, 21, 48, 59, 10, 52, 14, 42, 57, 12, 25, 7, 53, 42, 24, 11, 50, 17, 59, 42, 2, 36, 60, 32, 17, 63, 29, 21, 7, 59, 32, 24, 39 },
+     { 22, 8, 16, 32, 3, 25, 13, 57, 18, 45, 58, 39, 55, 20, 5, 42, 23, 34, 63, 1, 51, 10, 58, 4, 60, 23, 53, 27, 44, 21, 3, 48, 8, 50, 43, 54, 27, 32, 5, 55, 21, 58, 12, 53, 6, 36, 14, 50, 17, 29, 53, 15, 24, 52, 7, 36, 13, 42, 4, 53, 9, 35, 61, 26, 56, 32, 49, 15, 62, 23, 6, 60, 2, 31, 4, 48, 58, 38, 15, 61, 5, 25, 47, 28, 50, 15, 7, 40, 3, 32, 33, 52, 25, 50, 35, 42, 61, 3, 28, 36, 23, 63, 4, 33, 46, 62, 36, 23, 60, 6, 54, 28, 4, 37, 23, 55, 25, 8, 42, 54, 14, 6, 56, 38, 19, 52, 4, 46 },
+     { 48, 53, 43, 12, 45, 63, 30, 37, 9, 34, 21, 1, 25, 47, 29, 58, 3, 54, 15, 39, 29, 17, 38, 35, 20, 43, 1, 49, 15, 59, 29, 39, 22, 35, 16, 23, 1, 47, 39, 18, 8, 44, 25, 31, 57, 19, 63, 4, 45, 3, 42, 61, 1, 31, 45, 20, 57, 29, 62, 21, 32, 41, 14, 44, 3, 39, 5, 34, 10, 43, 51, 35, 23, 52, 40, 10, 21, 1, 53, 18, 51, 43, 12, 62, 18, 54, 26, 51, 20, 57, 14, 1, 62, 16, 11, 18, 32, 39, 17, 44, 1, 48, 26, 37, 18, 2, 51, 14, 28, 45, 35, 18, 57, 13, 47, 11, 51, 20, 2, 39, 31, 47, 25, 1, 50, 11, 60, 7 },
+     { 18, 28, 1, 56, 21, 10, 51, 2, 46, 54, 14, 61, 11, 50, 13, 38, 19, 31, 45, 9, 55, 24, 47, 5, 54, 9, 62, 11, 35, 8, 51, 14, 57, 6, 63, 40, 58, 14, 51, 28, 62, 34, 15, 48, 1, 41, 30, 35, 55, 21, 34, 11, 49, 37, 8, 52, 4, 23, 15, 43, 1, 58, 11, 23, 53, 16, 55, 26, 58, 18, 27, 12, 45, 14, 25, 63, 42, 33, 27, 35, 9, 31, 21, 38, 1, 44, 34, 12, 48, 38, 21, 44, 29, 47, 26, 53, 1, 46, 54, 8, 59, 29, 11, 55, 22, 41, 33, 20, 39, 1, 48, 9, 44, 32, 5, 62, 29, 44, 57, 23, 10, 58, 34, 43, 15, 37, 26, 33 },
+     { 51, 38, 59, 24, 35, 42, 19, 60, 5, 32, 41, 26, 43, 33, 7, 53, 48, 11, 59, 23, 42, 2, 61, 30, 16, 40, 32, 24, 56, 41, 19, 33, 37, 26, 47, 9, 31, 22, 2, 45, 9, 54, 4, 37, 21, 52, 11, 23, 7, 57, 16, 25, 55, 18, 63, 27, 46, 39, 56, 10, 50, 37, 29, 47, 19, 63, 24, 9, 46, 2, 39, 60, 9, 57, 30, 7, 49, 11, 59, 3, 45, 57, 5, 60, 29, 22, 5, 60, 30, 9, 59, 18, 40, 6, 57, 36, 30, 12, 24, 34, 15, 40, 52, 6, 49, 9, 58, 4, 63, 12, 26, 61, 22, 53, 38, 16, 35, 14, 28, 50, 42, 17, 5, 28, 62, 20, 54, 12 },
+     { 26, 6, 31, 15, 49, 6, 38, 27, 22, 49, 16, 56, 2, 62, 30, 21, 0, 36, 28, 6, 49, 32, 13, 52, 26, 50, 19, 46, 3, 26, 62, 0, 53, 12, 29, 3, 53, 41, 60, 24, 38, 13, 58, 16, 43, 9, 59, 39, 46, 28, 44, 40, 2, 33, 13, 41, 16, 6, 47, 31, 26, 17, 57, 6, 38, 0, 42, 36, 29, 52, 20, 31, 48, 0, 34, 56, 20, 36, 23, 54, 14, 41, 24, 37, 10, 55, 46, 25, 16, 45, 36, 4, 55, 23, 15, 8, 50, 62, 5, 56, 44, 20, 13, 28, 59, 31, 24, 47, 31, 52, 37, 17, 40, 0, 26, 49, 3, 60, 7, 33, 0, 61, 53, 40, 8, 45, 2, 41 },
+     { 16, 63, 43, 4, 61, 24, 56, 13, 53, 8, 36, 12, 24, 41, 16, 46, 60, 26, 52, 39, 14, 57, 21, 37, 0, 45, 7, 59, 38, 17, 43, 10, 45, 20, 61, 43, 19, 11, 33, 17, 50, 32, 23, 61, 28, 49, 26, 0, 18, 51, 5, 60, 22, 58, 29, 0, 59, 34, 19, 62, 3, 52, 7, 44, 30, 59, 13, 50, 15, 62, 7, 17, 38, 22, 44, 15, 40, 4, 47, 28, 33, 17, 49, 16, 51, 40, 10, 56, 0, 53, 13, 49, 28, 38, 60, 21, 43, 19, 37, 27, 3, 51, 34, 39, 0, 45, 15, 43, 10, 21, 3, 55, 8, 33, 59, 10, 41, 18, 52, 24, 46, 20, 30, 13, 58, 22, 36, 57 },
+     { 50, 34, 11, 47, 29, 17, 44, 0, 33, 63, 28, 46, 52, 5, 57, 10, 42, 18, 4, 63, 20, 8, 44, 10, 56, 34, 14, 29, 5, 54, 23, 59, 32, 49, 7, 34, 49, 27, 56, 0, 42, 7, 46, 3, 40, 6, 54, 32, 62, 13, 36, 10, 47, 8, 35, 49, 24, 51, 12, 40, 22, 35, 60, 12, 22, 51, 33, 4, 40, 25, 43, 55, 5, 54, 12, 61, 26, 51, 8, 62, 0, 53, 7, 63, 2, 32, 19, 34, 42, 24, 31, 63, 2, 10, 45, 33, 0, 48, 9, 61, 22, 47, 8, 62, 18, 56, 7, 54, 27, 57, 46, 30, 50, 19, 45, 30, 56, 36, 22, 47, 11, 38, 3, 51, 32, 48, 18, 9 },
+     { 0, 21, 40, 19, 52, 9, 37, 48, 20, 40, 3, 18, 27, 38, 35, 22, 31, 56, 13, 35, 46, 28, 60, 40, 27, 18, 61, 50, 41, 30, 7, 36, 2, 25, 16, 57, 5, 15, 47, 29, 55, 19, 30, 52, 15, 34, 20, 12, 43, 30, 20, 54, 25, 44, 53, 12, 38, 5, 55, 27, 48, 15, 33, 27, 45, 8, 19, 28, 56, 11, 33, 49, 18, 36, 29, 2, 45, 16, 39, 19, 31, 43, 27, 35, 20, 52, 26, 6, 61, 11, 41, 17, 29, 51, 20, 56, 25, 32, 41, 17, 53, 31, 25, 14, 42, 23, 35, 16, 38, 6, 34, 12, 15, 62, 6, 21, 13, 1, 63, 9, 55, 27, 43, 25, 14, 4, 31, 55 },
+     { 44, 29, 61, 2, 35, 58, 26, 15, 60, 10, 51, 59, 14, 55, 8, 50, 2, 44, 25, 51, 1, 33, 16, 4, 48, 36, 2, 21, 12, 57, 48, 13, 51, 55, 40, 28, 37, 62, 8, 39, 12, 63, 36, 10, 59, 24, 56, 47, 9, 50, 41, 1, 32, 17, 6, 21, 61, 30, 9, 43, 1, 54, 41, 2, 54, 37, 48, 61, 1, 46, 21, 3, 58, 24, 50, 32, 60, 10, 57, 25, 46, 12, 59, 4, 45, 13, 57, 47, 27, 39, 5, 58, 47, 14, 35, 4, 52, 13, 60, 6, 36, 10, 45, 55, 4, 50, 29, 2, 61, 50, 25, 58, 44, 24, 36, 42, 54, 28, 40, 32, 16, 56, 6, 62, 46, 39, 60, 23 },
+     { 7, 48, 14, 54, 23, 40, 4, 45, 30, 22, 42, 32, 1, 44, 20, 29, 58, 8, 37, 19, 41, 54, 24, 58, 9, 53, 25, 46, 34, 16, 23, 38, 27, 11, 18, 1, 52, 21, 35, 22, 48, 5, 25, 45, 18, 38, 2, 27, 35, 4, 57, 15, 62, 39, 57, 28, 42, 16, 36, 60, 24, 18, 10, 63, 20, 5, 16, 23, 37, 14, 59, 27, 41, 8, 13, 42, 21, 35, 6, 50, 3, 38, 15, 48, 30, 39, 17, 3, 49, 14, 53, 33, 24, 7, 61, 44, 11, 39, 23, 49, 19, 58, 1, 32, 36, 12, 60, 41, 20, 13, 41, 4, 39, 1, 48, 8, 18, 51, 14, 44, 5, 37, 21, 34, 1, 26, 10, 37 },
+     { 53, 36, 27, 9, 50, 12, 32, 55, 2, 57, 7, 17, 48, 34, 63, 15, 40, 26, 62, 11, 49, 6, 31, 39, 22, 42, 6, 63, 1, 39, 60, 4, 42, 61, 32, 45, 24, 44, 2, 60, 16, 41, 53, 1, 33, 61, 49, 17, 63, 23, 45, 26, 33, 3, 23, 46, 2, 50, 20, 4, 45, 34, 49, 30, 39, 58, 44, 31, 53, 34, 6, 52, 30, 47, 63, 1, 53, 22, 42, 31, 58, 23, 54, 22, 61, 8, 36, 59, 22, 35, 21, 1, 55, 40, 27, 16, 30, 54, 2, 29, 43, 16, 39, 63, 21, 46, 26, 10, 48, 32, 19, 53, 30, 56, 26, 60, 33, 4, 61, 23, 49, 59, 15, 53, 19, 58, 42, 16 },
+     { 20, 5, 59, 46, 25, 62, 7, 19, 43, 25, 37, 61, 11, 24, 4, 54, 12, 52, 3, 32, 17, 61, 12, 47, 15, 55, 18, 31, 53, 28, 9, 50, 21, 6, 55, 9, 58, 14, 54, 26, 33, 7, 31, 58, 13, 21, 8, 42, 29, 6, 37, 11, 48, 52, 14, 60, 11, 39, 56, 32, 14, 58, 7, 26, 17, 4, 42, 8, 11, 47, 19, 38, 10, 17, 26, 37, 9, 55, 28, 13, 18, 40, 6, 33, 1, 43, 25, 11, 51, 7, 62, 43, 18, 37, 3, 57, 45, 9, 38, 58, 5, 52, 27, 7, 17, 53, 5, 57, 37, 2, 63, 9, 22, 15, 11, 38, 25, 45, 35, 0, 28, 10, 41, 30, 50, 8, 31, 57 },
+     { 49, 33, 16, 38, 1, 42, 51, 34, 53, 14, 28, 49, 30, 56, 36, 23, 43, 20, 38, 56, 22, 45, 28, 0, 62, 35, 26, 44, 11, 19, 52, 35, 44, 15, 30, 38, 10, 31, 40, 4, 46, 50, 20, 40, 27, 44, 51, 14, 56, 53, 19, 59, 7, 29, 41, 19, 35, 25, 8, 52, 22, 44, 13, 53, 50, 32, 61, 24, 56, 25, 63, 0, 45, 57, 33, 59, 16, 46, 4, 62, 50, 11, 60, 37, 52, 19, 55, 29, 37, 46, 13, 26, 48, 10, 50, 34, 21, 63, 26, 13, 42, 33, 22, 55, 35, 28, 43, 15, 24, 51, 27, 34, 46, 49, 58, 3, 52, 9, 57, 19, 48, 55, 3, 35, 12, 45, 24, 3 },
+     { 41, 11, 56, 28, 18, 31, 22, 10, 37, 6, 47, 13, 3, 41, 9, 46, 0, 48, 29, 6, 34, 10, 55, 37, 20, 8, 49, 3, 41, 59, 14, 25, 0, 63, 19, 47, 27, 51, 17, 57, 23, 10, 61, 6, 54, 3, 38, 31, 0, 22, 34, 43, 20, 55, 31, 0, 49, 63, 29, 38, 3, 62, 28, 40, 0, 22, 14, 35, 2, 48, 15, 43, 23, 14, 3, 29, 49, 20, 39, 34, 0, 44, 29, 9, 15, 47, 5, 42, 0, 31, 58, 5, 31, 61, 23, 15, 0, 47, 19, 50, 24, 3, 59, 11, 44, 0, 31, 59, 6, 42, 17, 60, 0, 39, 20, 31, 43, 17, 29, 40, 12, 25, 60, 22, 52, 15, 63, 29 },
+     { 20, 52, 8, 44, 62, 4, 59, 49, 17, 63, 21, 39, 60, 18, 52, 27, 33, 59, 14, 51, 59, 43, 24, 5, 51, 30, 57, 17, 32, 5, 37, 56, 48, 34, 42, 3, 60, 5, 36, 13, 43, 37, 18, 34, 25, 12, 59, 24, 47, 36, 11, 50, 3, 38, 9, 58, 16, 5, 43, 18, 47, 10, 37, 18, 59, 46, 29, 52, 40, 12, 34, 28, 56, 36, 53, 7, 43, 8, 24, 52, 26, 17, 56, 43, 24, 32, 63, 20, 57, 16, 22, 52, 36, 8, 41, 56, 29, 32, 54, 7, 35, 57, 14, 48, 20, 62, 13, 39, 53, 29, 8, 45, 13, 29, 7, 61, 14, 54, 6, 63, 38, 32, 18, 43, 2, 39, 6, 47 },
+     { 0, 58, 23, 35, 13, 46, 12, 39, 0, 31, 55, 24, 5, 35, 15, 61, 17, 5, 39, 25, 18, 2, 50, 33, 41, 13, 39, 23, 62, 46, 29, 12, 22, 8, 56, 25, 20, 49, 32, 62, 0, 56, 11, 46, 63, 42, 9, 16, 55, 5, 60, 15, 62, 26, 45, 21, 36, 51, 13, 57, 31, 24, 55, 6, 35, 9, 57, 5, 20, 60, 7, 51, 5, 19, 40, 25, 61, 32, 56, 12, 36, 48, 21, 2, 58, 12, 39, 28, 9, 50, 40, 12, 44, 18, 25, 49, 6, 38, 11, 62, 18, 46, 30, 9, 40, 25, 49, 19, 10, 36, 55, 22, 33, 52, 41, 18, 37, 27, 49, 21, 2, 46, 7, 53, 33, 61, 27, 35 },
+     { 41, 31, 5, 39, 51, 26, 33, 57, 27, 41, 9, 44, 54, 29, 48, 7, 44, 36, 57, 10, 31, 63, 16, 45, 11, 60, 1, 47, 7, 20, 43, 3, 58, 36, 13, 52, 39, 7, 15, 28, 22, 48, 30, 21, 1, 29, 49, 44, 27, 17, 40, 30, 24, 42, 12, 53, 33, 7, 47, 20, 1, 42, 11, 49, 25, 43, 17, 32, 45, 27, 41, 21, 31, 62, 11, 49, 2, 15, 42, 5, 63, 7, 41, 27, 49, 6, 54, 23, 46, 34, 2, 28, 54, 3, 59, 12, 46, 17, 42, 28, 40, 1, 37, 51, 5, 55, 2, 34, 47, 16, 3, 62, 47, 5, 23, 56, 1, 44, 12, 34, 51, 16, 57, 11, 25, 17, 54, 13 },
+     { 60, 26, 55, 18, 3, 60, 20, 6, 52, 15, 50, 19, 32, 11, 23, 53, 26, 21, 1, 47, 42, 27, 8, 58, 21, 27, 53, 36, 26, 54, 31, 50, 17, 30, 45, 1, 29, 59, 44, 53, 41, 4, 35, 58, 51, 19, 32, 4, 52, 34, 48, 8, 51, 5, 56, 2, 25, 61, 27, 38, 54, 27, 62, 21, 51, 1, 39, 62, 10, 50, 1, 58, 13, 47, 38, 18, 35, 54, 22, 51, 30, 19, 59, 34, 14, 32, 44, 4, 60, 15, 52, 62, 20, 43, 30, 35, 21, 60, 4, 52, 12, 24, 61, 18, 30, 42, 23, 61, 25, 50, 27, 38, 11, 59, 12, 35, 50, 30, 59, 24, 8, 42, 28, 37, 48, 9, 44, 21 },
+     { 10, 47, 15, 50, 30, 43, 8, 45, 29, 2, 36, 59, 1, 58, 41, 3, 63, 31, 54, 20, 13, 55, 35, 38, 4, 44, 15, 9, 61, 2, 14, 38, 61, 10, 23, 54, 18, 12, 24, 2, 14, 55, 16, 8, 38, 14, 41, 60, 10, 23, 1, 58, 32, 17, 28, 37, 41, 15, 3, 60, 15, 33, 4, 36, 16, 59, 28, 14, 23, 55, 37, 18, 44, 28, 2, 57, 30, 10, 27, 46, 14, 38, 3, 53, 21, 61, 17, 35, 10, 41, 26, 7, 33, 9, 57, 1, 53, 37, 26, 20, 56, 48, 9, 33, 58, 16, 37, 7, 45, 1, 57, 15, 32, 26, 42, 23, 7, 20, 4, 54, 31, 62, 22, 1, 59, 30, 4, 51 },
+     { 36, 2, 38, 11, 24, 36, 54, 22, 62, 47, 25, 8, 28, 45, 16, 38, 12, 43, 9, 37, 49, 3, 23, 52, 18, 30, 50, 33, 19, 42, 49, 26, 6, 40, 47, 35, 63, 38, 50, 33, 60, 26, 36, 47, 24, 57, 6, 26, 39, 63, 19, 44, 14, 46, 61, 9, 50, 30, 45, 23, 10, 50, 44, 8, 31, 54, 6, 46, 36, 4, 30, 54, 8, 52, 22, 41, 4, 60, 40, 0, 58, 24, 45, 10, 37, 1, 48, 30, 56, 17, 38, 48, 24, 47, 19, 39, 14, 8, 45, 32, 2, 34, 27, 44, 4, 52, 11, 56, 31, 21, 40, 19, 44, 51, 2, 63, 46, 58, 36, 43, 14, 5, 50, 38, 14, 56, 40, 23 },
+     { 61, 46, 32, 63, 54, 1, 14, 34, 12, 40, 18, 49, 37, 10, 61, 30, 51, 24, 60, 7, 29, 40, 62, 11, 46, 58, 6, 56, 24, 10, 34, 52, 21, 59, 16, 3, 27, 5, 20, 46, 9, 40, 7, 62, 2, 30, 53, 15, 48, 10, 28, 35, 54, 6, 21, 34, 18, 55, 7, 40, 57, 19, 26, 60, 41, 13, 24, 51, 19, 61, 9, 25, 34, 15, 63, 11, 45, 17, 20, 47, 33, 8, 31, 62, 43, 26, 53, 7, 24, 59, 0, 13, 55, 4, 62, 27, 51, 31, 63, 15, 58, 7, 54, 14, 46, 22, 28, 43, 12, 63, 8, 54, 5, 17, 39, 33, 15, 10, 27, 17, 47, 34, 19, 45, 27, 12, 33, 17 },
+     { 5, 28, 21, 7, 17, 48, 42, 58, 23, 4, 63, 14, 55, 21, 34, 5, 19, 0, 45, 17, 52, 15, 25, 32, 0, 22, 40, 13, 45, 62, 18, 0, 43, 11, 33, 55, 30, 42, 57, 19, 51, 31, 22, 43, 18, 45, 34, 0, 43, 31, 56, 3, 23, 40, 59, 0, 44, 13, 48, 35, 2, 32, 46, 0, 21, 48, 35, 3, 40, 32, 43, 59, 0, 48, 33, 26, 53, 36, 55, 12, 51, 16, 55, 5, 18, 29, 11, 39, 51, 19, 45, 31, 42, 21, 35, 6, 22, 47, 10, 38, 23, 50, 20, 36, 0, 60, 38, 4, 50, 35, 48, 34, 24, 57, 9, 53, 28, 48, 61, 0, 56, 24, 53, 3, 63, 6, 42, 57 },
+     { 13, 53, 45, 40, 58, 27, 6, 16, 38, 51, 33, 30, 43, 2, 47, 56, 40, 50, 33, 57, 27, 5, 47, 42, 60, 36, 16, 54, 28, 4, 37, 57, 28, 51, 22, 8, 45, 14, 6, 39, 0, 54, 11, 59, 28, 12, 50, 21, 61, 13, 19, 38, 49, 11, 25, 37, 58, 29, 22, 63, 14, 56, 12, 53, 30, 63, 9, 57, 26, 12, 47, 16, 23, 39, 50, 6, 31, 2, 25, 6, 28, 41, 36, 22, 50, 57, 42, 3, 34, 8, 28, 61, 11, 50, 16, 54, 41, 0, 55, 43, 5, 29, 41, 63, 25, 16, 53, 18, 26, 10, 21, 0, 61, 30, 41, 22, 3, 38, 20, 39, 29, 8, 41, 16, 36, 52, 22, 19 },
+     { 55, 34, 0, 25, 10, 32, 56, 44, 28, 0, 57, 7, 26, 53, 23, 8, 13, 35, 22, 12, 36, 60, 20, 8, 14, 29, 48, 2, 41, 49, 23, 13, 39, 7, 48, 58, 25, 53, 34, 62, 28, 16, 48, 4, 37, 56, 27, 5, 36, 52, 46, 7, 62, 33, 52, 11, 17, 53, 5, 28, 41, 24, 38, 17, 5, 39, 20, 45, 15, 56, 5, 38, 60, 8, 14, 57, 21, 48, 62, 39, 59, 13, 1, 60, 9, 32, 16, 63, 44, 25, 52, 15, 36, 2, 60, 29, 12, 33, 25, 17, 59, 45, 13, 8, 49, 32, 6, 40, 59, 29, 45, 37, 13, 47, 6, 55, 30, 45, 9, 52, 13, 59, 25, 47, 32, 1, 49, 30 },
+     { 9, 39, 14, 61, 49, 37, 3, 20, 50, 13, 41, 19, 46, 17, 38, 59, 28, 62, 4, 44, 54, 1, 34, 51, 55, 7, 63, 32, 21, 8, 56, 31, 62, 19, 36, 1, 41, 17, 24, 12, 42, 35, 25, 52, 20, 8, 44, 59, 25, 2, 22, 42, 16, 29, 4, 46, 20, 36, 43, 9, 51, 8, 49, 26, 58, 33, 54, 1, 37, 29, 52, 20, 27, 45, 19, 35, 42, 16, 10, 32, 20, 49, 46, 27, 40, 4, 47, 22, 13, 55, 4, 47, 26, 44, 23, 40, 58, 19, 48, 13, 31, 2, 57, 34, 42, 19, 61, 32, 14, 55, 5, 51, 26, 19, 58, 16, 49, 14, 62, 5, 33, 44, 21, 7, 60, 26, 11, 41 },
+     { 62, 24, 47, 29, 8, 19, 53, 11, 60, 24, 32, 61, 4, 55, 31, 2, 49, 16, 39, 9, 31, 24, 43, 17, 26, 38, 11, 25, 58, 43, 12, 35, 3, 46, 15, 32, 63, 4, 49, 56, 2, 60, 10, 32, 63, 17, 39, 12, 55, 30, 57, 9, 48, 55, 39, 24, 60, 2, 58, 31, 19, 61, 34, 3, 42, 11, 22, 46, 7, 61, 10, 42, 3, 55, 32, 1, 58, 28, 44, 54, 4, 34, 23, 15, 56, 20, 37, 58, 6, 30, 38, 18, 63, 9, 32, 5, 51, 3, 62, 37, 52, 18, 39, 23, 3, 51, 9, 47, 1, 23, 43, 15, 60, 35, 11, 40, 1, 36, 31, 26, 57, 2, 37, 54, 18, 44, 58, 16 },
+     { 5, 51, 3, 33, 43, 62, 21, 42, 35, 9, 48, 15, 36, 10, 22, 42, 20, 46, 26, 56, 50, 12, 59, 3, 48, 19, 45, 53, 1, 27, 47, 17, 52, 24, 56, 11, 51, 21, 37, 30, 20, 46, 14, 41, 1, 47, 33, 7, 41, 17, 35, 27, 20, 1, 14, 54, 26, 33, 18, 47, 1, 44, 14, 59, 16, 52, 28, 18, 49, 31, 25, 34, 63, 13, 51, 24, 9, 50, 3, 23, 38, 63, 7, 52, 29, 46, 11, 33, 50, 22, 57, 36, 1, 57, 49, 17, 39, 28, 9, 35, 6, 27, 53, 15, 55, 30, 24, 58, 36, 41, 11, 52, 32, 3, 44, 25, 62, 23, 51, 15, 42, 22, 50, 10, 39, 4, 31, 35 },
+     { 46, 22, 57, 17, 12, 39, 26, 5, 31, 59, 1, 45, 27, 62, 52, 7, 58, 33, 6, 18, 39, 22, 33, 41, 57, 5, 35, 18, 40, 16, 60, 5, 29, 42, 7, 39, 27, 44, 9, 47, 8, 26, 54, 22, 51, 29, 24, 49, 15, 61, 4, 51, 31, 63, 43, 6, 50, 8, 39, 12, 53, 37, 23, 30, 40, 6, 62, 43, 14, 53, 2, 49, 7, 36, 17, 41, 61, 37, 18, 56, 11, 18, 44, 35, 2, 19, 61, 0, 41, 14, 8, 30, 43, 12, 24, 46, 14, 54, 42, 21, 44, 61, 10, 46, 37, 11, 44, 7, 18, 63, 20, 29, 7, 49, 28, 54, 8, 43, 4, 48, 18, 63, 12, 29, 48, 24, 59, 20 },
+     { 13, 36, 28, 54, 35, 2, 56, 46, 16, 49, 22, 40, 11, 34, 14, 43, 29, 12, 63, 48, 2, 61, 7, 15, 28, 30, 50, 9, 61, 33, 38, 23, 54, 13, 61, 33, 3, 59, 16, 35, 58, 40, 5, 38, 13, 57, 3, 58, 37, 21, 45, 12, 39, 7, 35, 30, 13, 56, 22, 62, 27, 6, 55, 10, 48, 21, 33, 2, 38, 23, 40, 20, 44, 29, 59, 4, 26, 12, 33, 47, 28, 53, 31, 13, 59, 41, 27, 49, 26, 54, 45, 16, 53, 21, 35, 7, 59, 26, 11, 56, 1, 24, 33, 4, 28, 62, 21, 49, 31, 2, 56, 39, 24, 58, 13, 17, 37, 21, 56, 10, 38, 0, 34, 55, 15, 43, 1, 52 },
+     { 42, 9, 50, 6, 25, 60, 14, 38, 10, 29, 53, 18, 57, 3, 25, 51, 0, 53, 25, 17, 29, 37, 52, 46, 0, 62, 14, 37, 4, 50, 10, 44, 0, 46, 20, 25, 50, 19, 55, 0, 23, 31, 62, 34, 11, 45, 19, 32, 0, 53, 10, 59, 23, 47, 18, 60, 42, 28, 37, 3, 50, 15, 35, 44, 0, 51, 27, 60, 9, 57, 16, 58, 11, 22, 46, 15, 53, 48, 7, 42, 0, 60, 5, 49, 24, 54, 9, 17, 39, 5, 34, 62, 3, 40, 60, 31, 0, 47, 29, 16, 49, 39, 59, 17, 50, 0, 40, 13, 53, 38, 16, 46, 0, 42, 34, 60, 2, 53, 29, 31, 58, 46, 27, 6, 61, 8, 37, 28 },
+     { 0, 63, 21, 40, 45, 18, 51, 23, 63, 34, 6, 43, 28, 38, 55, 19, 40, 35, 8, 41, 54, 10, 21, 32, 39, 23, 53, 26, 55, 28, 22, 63, 30, 34, 9, 48, 6, 38, 29, 43, 49, 6, 18, 52, 27, 61, 9, 43, 28, 42, 33, 26, 56, 3, 51, 23, 0, 48, 16, 45, 32, 25, 63, 20, 57, 17, 42, 12, 35, 47, 5, 31, 39, 56, 6, 30, 34, 21, 61, 25, 14, 40, 22, 38, 15, 6, 36, 56, 20, 60, 25, 12, 51, 27, 10, 56, 42, 20, 36, 63, 32, 6, 21, 41, 12, 34, 60, 26, 5, 48, 27, 10, 62, 19, 6, 47, 39, 14, 45, 7, 24, 17, 41, 32, 23, 51, 19, 56 },
+     { 45, 31, 15, 59, 4, 33, 7, 47, 0, 41, 13, 61, 4, 47, 9, 23, 60, 14, 57, 31, 4, 45, 59, 6, 58, 10, 44, 20, 8, 42, 15, 6, 55, 17, 58, 31, 53, 12, 61, 10, 15, 57, 43, 2, 23, 35, 48, 14, 54, 6, 18, 49, 15, 38, 11, 34, 62, 9, 21, 58, 11, 41, 4, 31, 38, 8, 29, 55, 19, 36, 27, 52, 0, 25, 50, 43, 1, 39, 8, 55, 35, 51, 10, 30, 45, 62, 29, 2, 46, 10, 32, 48, 18, 38, 5, 22, 33, 8, 51, 3, 14, 44, 54, 25, 57, 30, 18, 52, 33, 22, 59, 28, 36, 52, 32, 21, 26, 50, 5, 55, 35, 60, 14, 54, 4, 40, 16, 33 },
+     { 27, 3, 49, 10, 30, 40, 55, 27, 57, 24, 52, 21, 32, 17, 60, 30, 5, 44, 27, 49, 19, 34, 13, 24, 43, 36, 3, 49, 31, 59, 37, 48, 26, 41, 2, 41, 14, 36, 21, 32, 40, 26, 13, 49, 55, 5, 16, 40, 25, 60, 36, 1, 63, 29, 17, 44, 25, 40, 52, 5, 29, 47, 54, 13, 46, 24, 60, 4, 51, 22, 63, 14, 45, 18, 12, 62, 17, 57, 19, 42, 3, 26, 58, 48, 1, 21, 40, 52, 23, 37, 44, 1, 29, 58, 43, 50, 15, 61, 19, 45, 58, 28, 7, 48, 2, 46, 8, 42, 3, 55, 8, 50, 12, 4, 55, 10, 63, 33, 20, 40, 11, 3, 46, 20, 48, 26, 61, 11 },
+     { 44, 56, 24, 36, 53, 19, 12, 37, 16, 44, 7, 36, 49, 54, 11, 37, 48, 21, 15, 1, 62, 25, 47, 56, 16, 18, 51, 12, 40, 1, 24, 11, 52, 16, 23, 59, 28, 1, 45, 53, 4, 60, 37, 21, 39, 30, 63, 20, 52, 10, 30, 45, 8, 41, 54, 4, 57, 7, 34, 55, 36, 18, 23, 59, 2, 48, 11, 32, 44, 1, 41, 8, 33, 54, 38, 23, 30, 46, 6, 29, 62, 18, 32, 16, 55, 34, 14, 11, 61, 7, 55, 16, 53, 13, 23, 2, 55, 37, 26, 10, 33, 23, 36, 16, 38, 22, 56, 15, 24, 43, 35, 17, 44, 40, 25, 46, 16, 1, 57, 25, 49, 36, 28, 62, 9, 35, 7, 53 },
+     { 17, 38, 8, 61, 1, 50, 26, 62, 3, 31, 56, 15, 1, 26, 40, 2, 34, 51, 56, 36, 42, 9, 38, 2, 29, 60, 32, 57, 19, 62, 34, 47, 4, 57, 39, 7, 44, 63, 24, 18, 46, 28, 8, 54, 1, 34, 7, 46, 3, 37, 50, 23, 57, 21, 13, 46, 31, 20, 43, 15, 1, 61, 8, 33, 37, 17, 56, 26, 15, 49, 24, 59, 28, 3, 56, 9, 52, 32, 13, 49, 10, 43, 5, 45, 8, 25, 59, 42, 28, 33, 19, 40, 8, 63, 35, 47, 25, 4, 40, 52, 1, 60, 12, 53, 63, 9, 29, 60, 37, 19, 1, 62, 31, 20, 58, 12, 41, 30, 43, 9, 18, 52, 22, 1, 39, 30, 58, 21 },
+     { 13, 47, 29, 18, 43, 34, 5, 48, 20, 42, 10, 45, 30, 58, 20, 63, 24, 11, 6, 28, 54, 14, 22, 52, 41, 7, 26, 5, 45, 15, 53, 13, 35, 27, 18, 50, 12, 33, 5, 56, 10, 17, 45, 24, 59, 15, 50, 26, 56, 13, 19, 5, 32, 52, 27, 36, 2, 61, 12, 26, 49, 40, 27, 52, 13, 50, 6, 39, 61, 34, 10, 37, 48, 20, 41, 27, 2, 36, 59, 24, 54, 33, 63, 20, 38, 50, 3, 17, 52, 4, 58, 27, 45, 21, 32, 11, 48, 17, 57, 20, 46, 38, 25, 43, 4, 34, 51, 6, 13, 45, 57, 26, 6, 48, 2, 35, 53, 23, 61, 34, 59, 6, 42, 56, 13, 51, 2, 41 },
+     { 32, 5, 55, 23, 58, 14, 22, 52, 29, 15, 61, 25, 51, 8, 43, 13, 53, 41, 46, 20, 3, 33, 63, 11, 48, 21, 54, 38, 28, 3, 30, 43, 21, 62, 9, 31, 55, 22, 51, 29, 37, 62, 32, 12, 42, 29, 41, 9, 33, 44, 62, 28, 43, 1, 59, 19, 48, 30, 51, 39, 24, 4, 58, 19, 42, 29, 22, 43, 3, 18, 53, 5, 13, 50, 16, 60, 45, 21, 7, 40, 15, 0, 26, 53, 13, 31, 43, 24, 47, 31, 15, 49, 2, 41, 6, 59, 29, 42, 9, 30, 14, 7, 49, 18, 31, 47, 20, 39, 49, 32, 11, 41, 54, 15, 61, 18, 7, 38, 4, 13, 44, 28, 15, 32, 45, 19, 27, 49 },
+     { 63, 34, 11, 39, 2, 45, 37, 8, 59, 39, 33, 4, 36, 17, 48, 5, 29, 18, 32, 61, 39, 50, 5, 27, 35, 0, 46, 12, 22, 49, 60, 6, 54, 0, 38, 49, 2, 42, 15, 40, 0, 47, 20, 51, 3, 57, 18, 61, 22, 0, 39, 16, 55, 12, 35, 8, 41, 22, 6, 59, 16, 45, 10, 36, 0, 62, 9, 54, 30, 58, 21, 43, 63, 31, 7, 35, 12, 48, 58, 28, 47, 37, 41, 9, 57, 20, 61, 0, 36, 11, 57, 35, 23, 52, 37, 18, 0, 62, 22, 55, 35, 62, 27, 54, 0, 15, 61, 28, 2, 59, 22, 9, 37, 27, 33, 51, 29, 48, 19, 50, 25, 37, 10, 57, 5, 37, 60, 8 },
+     { 20, 25, 46, 52, 31, 60, 12, 55, 0, 19, 11, 46, 62, 35, 23, 38, 57, 0, 55, 10, 16, 30, 58, 44, 17, 59, 29, 63, 42, 8, 36, 20, 33, 46, 16, 61, 25, 35, 8, 54, 26, 7, 58, 22, 34, 6, 47, 14, 53, 31, 48, 9, 37, 25, 49, 63, 16, 55, 45, 14, 34, 63, 21, 53, 25, 33, 46, 16, 35, 7, 46, 29, 0, 39, 25, 55, 22, 34, 18, 4, 56, 11, 23, 51, 28, 6, 39, 14, 62, 44, 19, 8, 60, 12, 56, 28, 50, 34, 39, 5, 51, 3, 41, 12, 57, 35, 10, 53, 25, 17, 52, 30, 47, 0, 43, 14, 5, 57, 31, 55, 0, 63, 47, 23, 54, 24, 14, 43 },
+     { 0, 57, 16, 6, 26, 19, 35, 28, 49, 42, 54, 26, 21, 1, 59, 27, 9, 47, 26, 44, 50, 22, 13, 40, 8, 37, 10, 34, 17, 56, 25, 58, 13, 27, 44, 9, 20, 58, 31, 17, 60, 36, 10, 41, 53, 25, 36, 39, 4, 24, 58, 17, 60, 4, 22, 38, 10, 32, 0, 50, 31, 7, 28, 47, 12, 57, 5, 26, 52, 23, 14, 40, 57, 17, 47, 5, 53, 1, 44, 31, 19, 60, 46, 2, 35, 48, 30, 54, 22, 5, 51, 39, 25, 31, 4, 43, 14, 9, 45, 16, 24, 44, 19, 29, 40, 23, 44, 7, 38, 42, 4, 63, 12, 54, 23, 59, 22, 42, 8, 15, 40, 21, 8, 34, 3, 41, 30, 50 },
+     { 39, 10, 48, 33, 41, 54, 5, 47, 23, 13, 32, 7, 52, 44, 14, 39, 58, 18, 35, 6, 37, 2, 60, 24, 55, 19, 53, 2, 51, 32, 1, 41, 51, 4, 40, 29, 47, 3, 52, 44, 13, 49, 28, 16, 1, 62, 11, 27, 52, 35, 5, 42, 29, 47, 14, 56, 28, 53, 26, 38, 9, 56, 40, 3, 38, 15, 41, 60, 1, 37, 50, 25, 11, 28, 61, 19, 42, 62, 10, 52, 39, 6, 32, 14, 58, 17, 7, 26, 42, 34, 27, 10, 54, 40, 20, 63, 26, 53, 21, 61, 32, 7, 59, 48, 3, 56, 18, 31, 58, 14, 49, 21, 36, 16, 45, 9, 36, 24, 62, 45, 27, 31, 53, 17, 49, 12, 62, 18 },
+     { 28, 59, 21, 58, 2, 16, 38, 9, 62, 3, 56, 41, 10, 31, 50, 4, 32, 52, 12, 63, 23, 46, 33, 31, 4, 48, 25, 43, 14, 23, 47, 11, 22, 55, 14, 60, 23, 37, 11, 39, 23, 2, 45, 56, 31, 43, 19, 55, 16, 46, 21, 51, 11, 33, 44, 2, 41, 18, 5, 52, 23, 44, 17, 60, 27, 49, 11, 32, 44, 10, 54, 2, 56, 33, 8, 38, 13, 29, 36, 16, 24, 63, 27, 51, 21, 43, 56, 12, 49, 3, 59, 48, 1, 15, 46, 7, 36, 2, 47, 11, 50, 27, 37, 13, 33, 8, 51, 46, 1, 34, 28, 40, 3, 33, 60, 29, 47, 1, 35, 11, 59, 42, 2, 60, 26, 46, 6, 35 },
+     { 4, 43, 9, 29, 36, 63, 24, 44, 20, 50, 30, 17, 60, 22, 16, 43, 25, 3, 42, 19, 51, 15, 8, 54, 42, 15, 61, 5, 39, 57, 18, 61, 31, 48, 34, 2, 50, 19, 57, 5, 63, 33, 19, 38, 13, 27, 48, 7, 32, 61, 2, 26, 58, 6, 24, 50, 13, 61, 42, 20, 62, 2, 35, 20, 51, 4, 62, 18, 23, 58, 20, 31, 43, 15, 51, 45, 26, 50, 4, 55, 45, 3, 35, 9, 38, 1, 32, 61, 20, 45, 17, 33, 24, 57, 29, 51, 22, 58, 38, 30, 15, 1, 54, 21, 63, 43, 26, 12, 24, 56, 8, 60, 50, 19, 5, 52, 13, 54, 17, 50, 4, 16, 36, 12, 32, 56, 22, 54 },
+     { 51, 25, 40, 53, 12, 49, 15, 57, 34, 7, 38, 47, 2, 36, 55, 8, 61, 30, 56, 7, 28, 59, 48, 11, 27, 35, 21, 45, 28, 36, 9, 38, 6, 16, 24, 63, 10, 32, 28, 43, 21, 53, 5, 60, 8, 57, 3, 45, 11, 37, 15, 54, 40, 20, 62, 36, 27, 34, 11, 48, 30, 15, 54, 8, 30, 42, 22, 34, 48, 13, 35, 63, 4, 37, 22, 2, 59, 9, 41, 23, 13, 41, 49, 18, 59, 24, 40, 5, 37, 30, 9, 61, 44, 6, 37, 11, 33, 17, 5, 55, 41, 60, 23, 39, 17, 5, 30, 62, 41, 16, 46, 25, 11, 56, 39, 26, 20, 38, 29, 39, 22, 52, 44, 20, 48, 1, 38, 14 },
+     { 15, 33, 2, 18, 44, 6, 27, 0, 32, 61, 25, 12, 58, 28, 40, 20, 47, 13, 34, 43, 38, 1, 23, 62, 40, 0, 51, 10, 63, 3, 52, 26, 44, 30, 45, 6, 41, 54, 0, 51, 12, 30, 46, 24, 49, 22, 40, 33, 63, 23, 43, 30, 9, 47, 0, 17, 54, 7, 57, 3, 37, 47, 24, 46, 13, 55, 7, 52, 2, 42, 6, 26, 49, 18, 60, 34, 16, 57, 33, 20, 61, 30, 8, 54, 14, 46, 12, 53, 16, 55, 38, 13, 22, 53, 18, 59, 46, 27, 43, 19, 32, 10, 45, 6, 49, 36, 52, 2, 20, 55, 6, 39, 32, 15, 44, 3, 58, 10, 63, 6, 56, 30, 7, 58, 9, 40, 19, 63 },
+     { 10, 47, 61, 23, 55, 31, 52, 42, 17, 45, 4, 51, 27, 6, 15, 53, 0, 49, 26, 10, 56, 18, 36, 6, 20, 58, 32, 30, 13, 49, 19, 56, 0, 59, 12, 53, 27, 17, 38, 25, 48, 9, 15, 36, 14, 30, 59, 17, 0, 50, 8, 58, 18, 56, 31, 45, 21, 41, 29, 19, 60, 6, 32, 59, 0, 36, 29, 39, 19, 59, 46, 12, 55, 30, 10, 47, 24, 3, 28, 48, 0, 55, 44, 27, 33, 4, 63, 29, 49, 0, 26, 50, 34, 2, 42, 14, 0, 62, 9, 56, 3, 52, 28, 34, 58, 9, 20, 48, 37, 32, 22, 53, 0, 62, 27, 49, 34, 46, 21, 33, 41, 14, 25, 37, 53, 29, 31, 45 },
+     { 56, 28, 7, 37, 11, 36, 20, 9, 54, 14, 39, 19, 34, 63, 45, 37, 24, 17, 60, 31, 21, 45, 53, 29, 47, 15, 7, 55, 40, 23, 34, 14, 42, 20, 37, 35, 15, 59, 7, 62, 34, 40, 59, 1, 51, 42, 10, 28, 54, 21, 35, 5, 38, 13, 36, 4, 59, 12, 39, 53, 15, 43, 9, 21, 39, 62, 16, 56, 25, 9, 32, 38, 0, 41, 14, 51, 40, 53, 43, 11, 37, 17, 5, 22, 57, 39, 19, 7, 42, 21, 60, 10, 31, 63, 25, 52, 30, 49, 36, 25, 48, 17, 61, 14, 22, 42, 29, 13, 60, 11, 47, 18, 35, 41, 7, 23, 4, 16, 51, 11, 0, 48, 61, 3, 17, 50, 5, 24 },
+     { 0, 42, 21, 49, 60, 3, 57, 40, 29, 48, 23, 56, 42, 11, 22, 5, 59, 39, 4, 50, 3, 41, 12, 57, 25, 50, 44, 18, 4, 46, 7, 62, 33, 50, 4, 56, 21, 32, 43, 18, 3, 23, 55, 34, 20, 4, 53, 38, 12, 46, 29, 52, 25, 61, 23, 51, 26, 46, 1, 34, 25, 57, 28, 51, 26, 11, 50, 3, 44, 28, 53, 21, 57, 27, 62, 6, 31, 19, 8, 63, 26, 59, 36, 47, 15, 29, 50, 25, 35, 47, 18, 41, 4, 48, 8, 40, 12, 23, 6, 44, 13, 40, 1, 31, 55, 0, 61, 43, 4, 50, 26, 58, 9, 53, 24, 61, 42, 55, 31, 43, 57, 20, 34, 27, 43, 8, 59, 39 },
+     { 18, 51, 30, 13, 26, 16, 46, 22, 2, 59, 8, 30, 1, 48, 33, 51, 29, 9, 46, 16, 62, 14, 33, 2, 38, 9, 27, 60, 37, 26, 53, 17, 28, 10, 24, 46, 2, 49, 8, 57, 29, 45, 6, 26, 62, 44, 18, 25, 61, 3, 42, 14, 49, 10, 43, 6, 17, 32, 63, 10, 49, 4, 40, 14, 45, 33, 22, 37, 12, 61, 5, 17, 43, 7, 23, 37, 15, 58, 49, 13, 39, 21, 10, 52, 1, 62, 9, 56, 12, 2, 58, 28, 36, 16, 56, 28, 56, 35, 20, 63, 24, 37, 51, 8, 45, 25, 16, 33, 27, 38, 2, 44, 13, 30, 17, 36, 12, 26, 5, 18, 28, 47, 13, 60, 23, 45, 13, 33 },
+     { 55, 4, 62, 34, 52, 38, 7, 63, 32, 37, 13, 53, 25, 62, 18, 12, 55, 41, 27, 35, 24, 49, 31, 52, 17, 63, 34, 1, 56, 12, 41, 2, 48, 58, 39, 16, 61, 27, 41, 52, 13, 19, 50, 39, 11, 31, 57, 6, 32, 40, 20, 55, 1, 28, 33, 57, 48, 8, 37, 22, 44, 18, 53, 1, 61, 5, 54, 16, 47, 36, 50, 24, 55, 34, 48, 45, 1, 30, 33, 46, 2, 50, 32, 42, 25, 34, 43, 21, 38, 52, 23, 45, 14, 54, 21, 4, 44, 16, 53, 29, 10, 47, 19, 57, 12, 54, 39, 10, 51, 15, 63, 21, 57, 40, 51, 1, 48, 57, 37, 62, 2, 38, 9, 52, 1, 35, 58, 22 },
+     { 36, 46, 10, 42, 1, 27, 43, 15, 50, 21, 45, 16, 41, 3, 35, 44, 20, 1, 57, 11, 55, 7, 43, 8, 22, 42, 13, 46, 21, 39, 31, 60, 22, 5, 29, 44, 11, 35, 20, 4, 36, 58, 32, 15, 47, 2, 36, 48, 16, 60, 8, 35, 44, 63, 16, 2, 40, 26, 55, 14, 58, 35, 24, 31, 19, 42, 31, 58, 1, 29, 10, 40, 2, 19, 12, 54, 22, 61, 7, 24, 56, 5, 28, 16, 54, 3, 15, 58, 6, 30, 8, 62, 1, 43, 31, 47, 7, 59, 1, 38, 58, 4, 34, 27, 38, 5, 31, 59, 7, 46, 30, 3, 34, 6, 28, 59, 20, 8, 32, 15, 53, 24, 55, 31, 19, 49, 11, 26 },
+     { 2, 24, 16, 58, 19, 55, 5, 35, 10, 61, 4, 28, 57, 24, 58, 7, 31, 47, 22, 38, 19, 28, 61, 36, 54, 5, 59, 29, 6, 52, 15, 11, 43, 36, 8, 54, 52, 1, 62, 25, 47, 9, 1, 60, 28, 53, 24, 14, 46, 27, 51, 22, 12, 24, 38, 53, 20, 11, 51, 3, 29, 7, 48, 63, 8, 49, 9, 21, 52, 14, 63, 32, 46, 60, 35, 4, 41, 16, 52, 35, 18, 42, 59, 7, 36, 61, 45, 27, 33, 51, 19, 39, 34, 11, 61, 18, 33, 41, 28, 15, 54, 22, 42, 3, 49, 21, 47, 18, 36, 23, 55, 19, 48, 24, 45, 10, 33, 44, 50, 40, 7, 35, 15, 41, 63, 6, 40, 54 },
+     { 62, 41, 32, 8, 47, 28, 60, 24, 44, 30, 38, 49, 9, 33, 14, 40, 50, 14, 60, 2, 54, 40, 0, 20, 25, 39, 16, 49, 24, 35, 57, 47, 19, 61, 33, 18, 23, 37, 13, 55, 31, 43, 22, 41, 17, 8, 42, 58, 0, 37, 5, 56, 31, 54, 7, 30, 60, 33, 42, 17, 59, 39, 12, 27, 38, 17, 35, 41, 27, 45, 20, 7, 25, 15, 29, 58, 27, 47, 11, 40, 14, 54, 23, 46, 19, 31, 11, 40, 13, 49, 5, 58, 24, 51, 26, 6, 50, 20, 49, 9, 32, 46, 17, 60, 14, 63, 24, 1, 57, 41, 9, 43, 14, 62, 16, 52, 3, 27, 14, 22, 61, 45, 4, 28, 9, 47, 29, 17 },
+     { 5, 50, 12, 53, 38, 18, 11, 51, 0, 55, 17, 6, 47, 54, 19, 63, 5, 26, 34, 45, 13, 30, 47, 58, 10, 48, 32, 3, 62, 9, 26, 0, 25, 14, 50, 3, 47, 30, 42, 16, 6, 63, 12, 49, 33, 55, 21, 10, 34, 63, 18, 41, 3, 47, 19, 43, 0, 49, 8, 28, 46, 20, 52, 0, 56, 24, 60, 3, 59, 5, 39, 57, 48, 52, 9, 38, 3, 21, 26, 60, 0, 32, 12, 38, 4, 48, 53, 0, 60, 15, 29, 44, 18, 10, 38, 57, 13, 60, 2, 26, 62, 7, 50, 29, 35, 8, 40, 53, 28, 12, 60, 33, 38, 5, 37, 29, 60, 39, 56, 0, 30, 18, 50, 34, 59, 25, 14, 44 },
+     { 20, 31, 60, 22, 3, 49, 33, 25, 40, 13, 34, 59, 22, 36, 0, 28, 37, 56, 8, 18, 51, 16, 4, 45, 27, 12, 53, 42, 18, 44, 51, 31, 55, 40, 28, 58, 7, 60, 10, 51, 27, 37, 24, 56, 5, 26, 44, 29, 50, 23, 45, 11, 34, 15, 59, 27, 13, 23, 62, 37, 4, 57, 15, 32, 42, 6, 47, 11, 30, 43, 23, 13, 0, 36, 18, 44, 63, 51, 37, 29, 49, 20, 57, 27, 62, 9, 24, 35, 23, 53, 37, 3, 42, 55, 0, 36, 23, 39, 31, 43, 17, 37, 24, 11, 52, 43, 19, 32, 5, 50, 26, 0, 56, 21, 54, 11, 19, 6, 47, 25, 59, 42, 12, 54, 21, 3, 38, 57 },
+     { 48, 0, 35, 27, 44, 14, 59, 7, 57, 46, 26, 2, 42, 12, 52, 43, 10, 27, 53, 42, 32, 62, 37, 21, 34, 61, 7, 23, 36, 4, 38, 12, 41, 5, 17, 45, 22, 27, 39, 21, 59, 0, 45, 18, 39, 62, 3, 38, 14, 7, 54, 26, 61, 39, 9, 52, 45, 36, 18, 50, 10, 34, 44, 22, 50, 14, 36, 55, 17, 34, 53, 62, 33, 26, 56, 6, 31, 12, 6, 53, 9, 44, 2, 50, 20, 40, 55, 17, 47, 7, 26, 63, 22, 32, 48, 16, 46, 8, 52, 12, 57, 41, 0, 56, 25, 3, 61, 14, 45, 35, 18, 44, 12, 46, 23, 42, 32, 51, 35, 10, 17, 36, 23, 1, 45, 52, 32, 10 },
+     { 37, 15, 43, 8, 63, 39, 21, 31, 16, 37, 19, 62, 30, 46, 17, 60, 21, 48, 1, 23, 6, 25, 11, 56, 1, 40, 30, 58, 15, 54, 21, 59, 9, 63, 35, 56, 11, 51, 2, 46, 34, 14, 53, 7, 30, 11, 51, 19, 60, 40, 30, 1, 24, 50, 20, 32, 3, 56, 5, 25, 31, 13, 61, 2, 29, 60, 25, 20, 51, 2, 27, 8, 18, 42, 10, 45, 21, 34, 43, 17, 62, 29, 41, 14, 34, 6, 30, 43, 2, 57, 33, 13, 45, 12, 27, 62, 4, 55, 21, 35, 5, 27, 45, 33, 16, 47, 30, 54, 22, 10, 51, 27, 63, 7, 49, 1, 58, 22, 15, 43, 53, 7, 57, 39, 27, 12, 61, 24 },
+     { 56, 51, 26, 56, 19, 2, 41, 54, 5, 52, 9, 48, 6, 23, 39, 4, 32, 15, 63, 35, 59, 49, 43, 15, 52, 19, 50, 9, 46, 33, 1, 29, 48, 20, 32, 1, 38, 33, 19, 54, 9, 32, 24, 48, 58, 35, 16, 48, 4, 52, 13, 57, 33, 5, 45, 59, 15, 29, 41, 55, 47, 39, 23, 53, 9, 40, 4, 57, 10, 44, 48, 40, 50, 14, 61, 24, 55, 1, 59, 22, 33, 8, 51, 25, 58, 46, 11, 59, 20, 41, 17, 51, 6, 56, 35, 25, 42, 30, 15, 58, 48, 18, 61, 9, 58, 39, 13, 2, 37, 59, 40, 2, 31, 16, 34, 41, 8, 30, 62, 3, 29, 48, 33, 5, 63, 16, 41, 7 },
+     { 22, 4, 46, 11, 33, 51, 29, 10, 62, 24, 43, 27, 15, 58, 50, 25, 54, 44, 9, 38, 18, 3, 29, 57, 32, 5, 26, 43, 17, 61, 24, 52, 8, 42, 23, 53, 15, 61, 7, 28, 57, 43, 4, 40, 20, 2, 43, 25, 32, 35, 21, 43, 17, 48, 10, 22, 38, 54, 11, 21, 1, 58, 16, 30, 48, 18, 46, 32, 38, 13, 22, 4, 59, 35, 2, 51, 30, 39, 15, 47, 4, 56, 13, 37, 1, 28, 16, 52, 32, 9, 61, 29, 38, 19, 3, 52, 10, 48, 1, 32, 11, 40, 20, 36, 6, 22, 49, 29, 55, 6, 20, 56, 36, 52, 19, 60, 26, 46, 18, 54, 40, 13, 20, 46, 35, 19, 49, 29 },
+     { 61, 17, 34, 53, 23, 6, 48, 35, 20, 40, 1, 56, 36, 29, 11, 34, 7, 41, 14, 30, 55, 20, 46, 8, 24, 38, 63, 2, 37, 10, 45, 14, 34, 49, 6, 13, 44, 25, 49, 41, 21, 12, 61, 15, 54, 29, 63, 12, 56, 8, 49, 2, 62, 36, 28, 61, 0, 25, 41, 63, 35, 8, 44, 6, 37, 62, 7, 21, 63, 28, 55, 31, 16, 24, 41, 19, 9, 57, 27, 36, 18, 42, 31, 62, 22, 55, 38, 4, 27, 47, 1, 40, 14, 54, 43, 20, 60, 23, 38, 63, 25, 51, 2, 53, 26, 63, 10, 42, 17, 34, 47, 25, 13, 5, 44, 11, 55, 2, 38, 27, 6, 60, 52, 25, 9, 55, 1, 40 },
+     { 8, 30, 58, 3, 42, 61, 17, 38, 13, 59, 32, 10, 54, 3, 51, 20, 61, 26, 57, 2, 46, 33, 12, 60, 41, 13, 48, 29, 55, 20, 39, 27, 57, 18, 62, 29, 55, 2, 31, 16, 37, 50, 26, 36, 6, 46, 9, 41, 27, 57, 23, 39, 26, 6, 51, 12, 31, 46, 7, 16, 27, 52, 19, 56, 26, 12, 33, 53, 1, 41, 8, 57, 46, 7, 54, 32, 47, 5, 49, 11, 60, 23, 5, 48, 10, 43, 19, 63, 35, 24, 49, 21, 59, 5, 31, 37, 14, 44, 7, 42, 6, 30, 46, 13, 44, 32, 19, 50, 4, 58, 8, 30, 62, 38, 28, 53, 21, 36, 13, 50, 21, 33, 15, 2, 44, 31, 14, 47 },
+     { 37, 13, 39, 16, 28, 9, 57, 0, 25, 49, 21, 45, 18, 47, 12, 42, 0, 49, 22, 39, 16, 53, 25, 36, 0, 52, 22, 16, 6, 60, 4, 51, 0, 26, 37, 47, 10, 36, 63, 5, 57, 0, 18, 59, 23, 33, 51, 19, 0, 44, 15, 11, 54, 17, 42, 35, 53, 18, 58, 33, 49, 4, 34, 42, 0, 50, 43, 25, 16, 49, 34, 20, 37, 28, 12, 63, 16, 38, 25, 44, 0, 40, 52, 17, 35, 3, 50, 14, 8, 53, 11, 36, 25, 45, 9, 62, 0, 54, 28, 17, 50, 55, 15, 24, 57, 0, 53, 34, 23, 41, 15, 45, 0, 49, 16, 4, 48, 9, 63, 45, 0, 42, 58, 37, 61, 22, 54, 26 },
+     { 0, 50, 21, 47, 54, 36, 27, 45, 52, 4, 34, 15, 63, 29, 37, 59, 17, 31, 6, 61, 28, 5, 48, 18, 59, 27, 34, 56, 44, 31, 35, 12, 41, 59, 16, 3, 40, 20, 50, 22, 30, 40, 52, 10, 45, 3, 59, 22, 37, 61, 29, 46, 31, 58, 2, 22, 9, 43, 3, 39, 14, 61, 24, 54, 15, 29, 11, 60, 39, 17, 5, 61, 0, 44, 50, 3, 31, 14, 58, 21, 54, 28, 15, 45, 60, 26, 33, 58, 44, 22, 60, 2, 57, 34, 49, 27, 18, 34, 21, 59, 29, 4, 36, 41, 8, 39, 28, 11, 62, 26, 53, 20, 35, 24, 59, 32, 29, 39, 24, 31, 57, 23, 11, 28, 5, 36, 11, 59 },
+     { 44, 32, 63, 5, 20, 12, 41, 7, 30, 61, 42, 8, 39, 5, 33, 8, 24, 53, 45, 11, 37, 58, 7, 44, 10, 50, 3, 40, 8, 22, 53, 19, 46, 9, 33, 52, 24, 58, 8, 44, 13, 47, 8, 34, 38, 30, 14, 47, 7, 34, 4, 55, 9, 19, 40, 49, 56, 26, 60, 21, 30, 45, 10, 19, 40, 58, 23, 36, 3, 52, 45, 23, 54, 13, 22, 42, 53, 45, 7, 33, 10, 36, 57, 6, 29, 12, 41, 0, 30, 15, 41, 30, 17, 7, 16, 53, 40, 56, 2, 39, 12, 61, 10, 52, 31, 60, 16, 45, 1, 37, 7, 61, 40, 10, 43, 17, 58, 7, 54, 14, 4, 51, 39, 49, 18, 56, 42, 20 },
+     { 14, 6, 24, 36, 56, 49, 22, 60, 18, 14, 23, 51, 26, 57, 21, 52, 41, 14, 35, 50, 19, 31, 40, 23, 33, 14, 63, 17, 32, 47, 7, 62, 23, 30, 56, 11, 42, 27, 14, 60, 35, 19, 28, 61, 17, 55, 25, 39, 53, 17, 42, 21, 38, 63, 25, 5, 14, 36, 12, 50, 1, 37, 59, 32, 2, 51, 6, 56, 27, 32, 11, 30, 38, 26, 60, 8, 26, 19, 62, 39, 50, 2, 21, 39, 53, 23, 56, 19, 49, 39, 5, 46, 55, 23, 42, 4, 31, 11, 47, 26, 45, 22, 48, 18, 21, 5, 48, 25, 57, 14, 47, 30, 3, 56, 12, 50, 1, 42, 19, 47, 35, 17, 8, 30, 45, 25, 4, 51 },
+     { 28, 58, 43, 1, 31, 8, 33, 2, 44, 55, 32, 1, 60, 12, 46, 27, 4, 62, 23, 1, 56, 13, 62, 2, 54, 36, 25, 51, 1, 57, 26, 42, 3, 49, 17, 38, 1, 48, 31, 4, 54, 3, 50, 24, 1, 49, 5, 63, 13, 27, 52, 1, 48, 13, 45, 33, 52, 30, 46, 20, 55, 28, 6, 48, 24, 38, 20, 47, 14, 62, 48, 9, 58, 4, 36, 30, 56, 1, 34, 12, 18, 63, 25, 48, 4, 16, 37, 7, 62, 10, 52, 28, 13, 50, 36, 63, 24, 51, 15, 58, 8, 33, 1, 38, 56, 35, 42, 9, 33, 51, 22, 18, 48, 32, 27, 37, 23, 61, 33, 11, 59, 29, 62, 1, 53, 10, 60, 33 },
+     { 12, 39, 17, 52, 26, 46, 53, 38, 25, 11, 48, 36, 16, 43, 2, 35, 55, 17, 39, 29, 43, 9, 28, 45, 20, 5, 46, 12, 42, 28, 13, 52, 36, 6, 60, 22, 54, 17, 62, 39, 25, 42, 15, 55, 44, 20, 31, 10, 35, 57, 24, 32, 29, 6, 59, 18, 7, 62, 3, 41, 10, 44, 16, 54, 13, 62, 31, 9, 41, 1, 21, 43, 18, 47, 15, 40, 11, 49, 28, 55, 46, 30, 8, 43, 32, 61, 28, 47, 25, 34, 21, 61, 32, 1, 20, 9, 46, 6, 35, 19, 41, 54, 27, 63, 14, 3, 51, 20, 62, 2, 38, 55, 8, 21, 63, 6, 46, 9, 26, 51, 3, 24, 43, 34, 16, 41, 18, 48 },
+     { 62, 23, 55, 9, 15, 62, 19, 13, 58, 40, 6, 30, 54, 19, 50, 31, 10, 44, 6, 59, 21, 47, 51, 15, 60, 39, 30, 54, 21, 61, 19, 33, 14, 29, 43, 11, 34, 45, 7, 21, 10, 56, 36, 6, 38, 11, 58, 42, 2, 47, 11, 60, 50, 16, 41, 28, 38, 23, 47, 17, 35, 63, 22, 33, 42, 5, 45, 17, 53, 35, 25, 56, 33, 6, 51, 19, 60, 23, 43, 15, 5, 40, 58, 13, 51, 1, 45, 11, 54, 3, 43, 8, 37, 48, 59, 29, 39, 21, 61, 43, 3, 31, 10, 44, 24, 29, 60, 12, 28, 40, 11, 25, 43, 52, 14, 41, 16, 57, 44, 20, 40, 55, 12, 21, 57, 27, 35, 2 },
+     { 37, 6, 31, 42, 40, 4, 29, 50, 0, 20, 63, 28, 9, 58, 14, 24, 63, 26, 48, 16, 34, 4, 32, 38, 23, 11, 58, 4, 37, 9, 45, 5, 63, 48, 26, 57, 2, 28, 32, 51, 46, 29, 13, 62, 27, 46, 28, 18, 50, 15, 40, 4, 19, 34, 54, 0, 53, 9, 26, 58, 28, 5, 49, 0, 57, 27, 19, 60, 29, 8, 59, 12, 37, 63, 24, 46, 3, 37, 6, 52, 26, 32, 20, 36, 9, 22, 59, 18, 35, 51, 14, 57, 17, 24, 12, 44, 56, 0, 30, 13, 59, 20, 49, 17, 54, 43, 6, 34, 46, 17, 58, 36, 0, 34, 29, 54, 25, 2, 36, 15, 60, 6, 37, 46, 4, 50, 9, 45 },
+     { 19, 59, 48, 3, 24, 60, 44, 22, 34, 51, 15, 45, 41, 5, 33, 47, 0, 37, 12, 55, 25, 54, 8, 57, 0, 47, 18, 34, 49, 15, 55, 24, 40, 20, 8, 35, 53, 13, 41, 18, 0, 59, 22, 33, 4, 52, 8, 60, 24, 36, 31, 56, 45, 26, 10, 43, 15, 56, 36, 4, 51, 14, 39, 30, 12, 55, 36, 2, 39, 49, 4, 44, 17, 0, 32, 13, 53, 35, 59, 17, 62, 0, 55, 24, 52, 38, 31, 6, 42, 19, 29, 40, 4, 54, 33, 5, 16, 27, 52, 37, 23, 55, 7, 37, 0, 39, 23, 49, 4, 53, 31, 15, 59, 10, 50, 4, 60, 34, 48, 7, 31, 49, 27, 14, 62, 22, 53, 29 },
+     { 46, 21, 14, 51, 36, 17, 7, 57, 10, 32, 3, 37, 22, 60, 39, 18, 56, 20, 42, 3, 36, 10, 44, 26, 41, 29, 53, 27, 2, 39, 30, 52, 0, 59, 15, 48, 23, 61, 6, 58, 37, 12, 40, 49, 16, 39, 20, 44, 0, 62, 8, 21, 3, 59, 23, 32, 49, 31, 12, 44, 22, 59, 18, 50, 24, 7, 43, 52, 15, 23, 41, 26, 51, 28, 55, 39, 21, 27, 10, 42, 12, 45, 27, 47, 3, 15, 63, 26, 55, 0, 60, 26, 45, 18, 62, 38, 58, 49, 8, 47, 4, 33, 46, 29, 57, 13, 56, 16, 59, 21, 5, 47, 23, 39, 18, 44, 13, 22, 28, 53, 19, 0, 58, 32, 41, 7, 26, 13 },
+     { 0, 56, 34, 28, 11, 55, 31, 47, 26, 41, 56, 13, 53, 28, 11, 49, 7, 52, 32, 61, 50, 22, 63, 17, 13, 56, 7, 19, 43, 62, 10, 21, 37, 32, 43, 4, 38, 19, 44, 25, 31, 54, 5, 23, 61, 30, 53, 12, 35, 22, 43, 53, 37, 48, 7, 62, 20, 2, 61, 41, 8, 34, 47, 9, 63, 34, 28, 10, 55, 33, 14, 57, 7, 47, 9, 61, 4, 49, 31, 50, 21, 38, 8, 16, 57, 44, 33, 5, 49, 36, 12, 50, 7, 34, 10, 25, 2, 22, 36, 15, 26, 61, 18, 9, 22, 46, 32, 8, 27, 37, 44, 30, 55, 3, 62, 24, 38, 56, 5, 45, 38, 24, 43, 10, 19, 54, 39, 61 },
+     { 41, 30, 8, 63, 43, 23, 38, 3, 62, 19, 8, 49, 25, 1, 58, 30, 23, 40, 9, 28, 18, 40, 6, 38, 49, 22, 35, 59, 8, 27, 50, 5, 56, 17, 11, 50, 30, 9, 55, 2, 51, 19, 34, 47, 9, 41, 6, 26, 48, 57, 14, 28, 17, 12, 39, 13, 37, 46, 25, 19, 54, 27, 1, 37, 16, 45, 20, 60, 1, 48, 20, 38, 31, 22, 42, 15, 19, 44, 1, 61, 6, 34, 56, 40, 29, 10, 20, 46, 13, 22, 41, 23, 59, 42, 30, 51, 45, 13, 63, 53, 42, 12, 51, 38, 62, 2, 26, 41, 50, 1, 61, 10, 19, 42, 31, 8, 49, 32, 12, 63, 9, 52, 16, 56, 36, 2, 31, 16 },
+     { 52, 5, 47, 20, 1, 53, 12, 50, 16, 35, 43, 21, 33, 43, 16, 44, 3, 59, 14, 46, 1, 30, 60, 33, 2, 45, 12, 42, 31, 47, 14, 33, 46, 25, 55, 27, 60, 36, 16, 42, 14, 46, 26, 1, 55, 15, 63, 32, 2, 38, 5, 47, 33, 61, 30, 52, 4, 57, 6, 38, 11, 43, 61, 24, 52, 3, 31, 22, 42, 10, 62, 3, 59, 11, 35, 57, 33, 54, 24, 14, 29, 48, 18, 2, 60, 41, 53, 24, 32, 62, 3, 53, 15, 1, 55, 17, 32, 40, 6, 31, 1, 40, 28, 5, 35, 52, 19, 63, 13, 33, 17, 41, 52, 26, 15, 57, 1, 20, 42, 17, 35, 27, 48, 5, 25, 50, 44, 11 },
+     { 35, 25, 38, 57, 33, 17, 40, 6, 59, 27, 54, 5, 61, 10, 52, 26, 36, 19, 51, 35, 57, 48, 11, 20, 54, 25, 61, 16, 1, 58, 24, 61, 3, 39, 7, 47, 1, 22, 49, 28, 63, 10, 58, 32, 17, 36, 45, 19, 51, 29, 59, 10, 50, 1, 23, 42, 18, 29, 51, 21, 56, 32, 14, 5, 40, 58, 47, 13, 54, 35, 29, 45, 18, 52, 26, 2, 38, 8, 46, 36, 58, 11, 52, 35, 17, 28, 1, 58, 9, 39, 17, 28, 37, 48, 20, 9, 57, 24, 50, 19, 58, 16, 48, 25, 43, 11, 35, 6, 45, 24, 56, 4, 36, 7, 47, 35, 52, 28, 59, 30, 2, 61, 21, 33, 63, 12, 18, 59 },
+     { 3, 49, 15, 10, 27, 61, 25, 45, 30, 0, 14, 47, 31, 38, 17, 62, 7, 55, 27, 4, 15, 24, 42, 52, 10, 34, 5, 51, 36, 18, 41, 11, 35, 21, 62, 13, 33, 57, 8, 35, 5, 40, 21, 43, 52, 3, 24, 56, 11, 16, 33, 25, 41, 20, 55, 8, 60, 35, 15, 48, 2, 57, 30, 49, 18, 25, 6, 39, 17, 57, 7, 25, 43, 5, 49, 16, 62, 22, 55, 4, 25, 43, 23, 7, 50, 11, 37, 48, 14, 51, 33, 57, 7, 27, 39, 46, 4, 29, 11, 43, 34, 56, 7, 60, 20, 54, 30, 57, 22, 49, 9, 33, 54, 14, 63, 23, 6, 43, 10, 40, 50, 13, 44, 8, 38, 33, 46, 23 },
+     { 55, 39, 22, 50, 44, 4, 36, 9, 52, 23, 37, 59, 21, 2, 46, 13, 31, 41, 11, 45, 62, 29, 6, 37, 19, 48, 30, 23, 44, 7, 53, 28, 54, 16, 41, 29, 44, 18, 52, 24, 60, 15, 48, 7, 27, 59, 9, 34, 42, 54, 7, 63, 4, 46, 31, 27, 45, 0, 40, 26, 34, 17, 37, 10, 53, 29, 36, 50, 2, 27, 51, 11, 61, 37, 23, 41, 30, 7, 18, 50, 39, 14, 63, 32, 45, 61, 19, 30, 25, 44, 2, 47, 23, 63, 11, 34, 59, 37, 60, 3, 22, 14, 44, 30, 15, 0, 47, 15, 3, 38, 61, 20, 27, 45, 11, 39, 51, 16, 55, 3, 22, 54, 29, 58, 1, 57, 6, 29 },
+     { 9, 17, 60, 2, 34, 56, 20, 62, 39, 12, 49, 6, 29, 56, 34, 48, 0, 58, 22, 38, 18, 43, 56, 0, 63, 14, 55, 3, 59, 31, 15, 45, 0, 49, 6, 58, 3, 38, 12, 45, 0, 37, 29, 57, 13, 39, 30, 49, 0, 23, 44, 36, 16, 57, 13, 54, 11, 24, 63, 9, 53, 7, 62, 42, 0, 59, 15, 23, 63, 34, 40, 16, 32, 0, 53, 12, 48, 28, 59, 33, 0, 53, 9, 27, 3, 22, 54, 5, 56, 9, 61, 13, 42, 14, 52, 19, 0, 21, 47, 27, 53, 36, 3, 50, 39, 58, 25, 40, 53, 28, 12, 50, 0, 59, 32, 2, 21, 34, 26, 46, 37, 7, 18, 47, 24, 14, 53, 42 },
+     { 61, 32, 13, 54, 29, 7, 46, 13, 28, 57, 18, 41, 53, 15, 9, 39, 24, 49, 33, 3, 53, 9, 26, 32, 40, 28, 46, 39, 25, 9, 56, 21, 63, 37, 26, 22, 51, 27, 17, 56, 31, 53, 4, 43, 22, 46, 12, 18, 60, 40, 20, 26, 50, 21, 39, 5, 49, 33, 16, 44, 22, 46, 20, 32, 24, 45, 8, 43, 12, 46, 4, 48, 56, 20, 29, 58, 3, 40, 10, 42, 31, 21, 47, 41, 56, 38, 15, 42, 36, 27, 20, 33, 55, 3, 26, 44, 31, 54, 12, 35, 9, 63, 28, 10, 21, 32, 9, 60, 17, 8, 43, 29, 40, 16, 36, 48, 60, 7, 57, 14, 62, 31, 42, 15, 36, 40, 20, 26 },
+     { 0, 37, 47, 23, 41, 18, 32, 48, 1, 35, 8, 25, 4, 26, 63, 20, 54, 8, 16, 61, 35, 23, 51, 15, 58, 7, 12, 20, 50, 34, 42, 4, 38, 10, 32, 47, 8, 60, 41, 20, 9, 25, 50, 19, 62, 1, 37, 56, 28, 8, 53, 11, 3, 58, 34, 43, 19, 60, 38, 4, 58, 31, 3, 51, 11, 55, 38, 30, 21, 58, 19, 26, 9, 44, 36, 13, 46, 20, 62, 24, 13, 60, 5, 28, 12, 34, 7, 59, 0, 53, 45, 6, 38, 30, 50, 7, 62, 16, 41, 5, 46, 18, 55, 42, 51, 5, 45, 23, 34, 48, 19, 58, 5, 25, 54, 19, 13, 41, 28, 21, 0, 49, 10, 60, 4, 51, 9, 45 },
+     { 19, 28, 6, 58, 10, 51, 4, 22, 55, 42, 60, 45, 34, 51, 42, 5, 30, 45, 27, 40, 13, 47, 4, 49, 21, 38, 60, 29, 2, 57, 17, 27, 52, 19, 61, 14, 30, 34, 2, 44, 63, 33, 11, 35, 16, 51, 25, 6, 14, 47, 31, 61, 37, 29, 18, 8, 52, 2, 28, 54, 13, 41, 15, 62, 35, 18, 2, 60, 6, 33, 41, 61, 31, 6, 56, 17, 34, 50, 6, 52, 44, 35, 16, 51, 59, 24, 48, 18, 31, 40, 16, 49, 21, 60, 17, 39, 10, 49, 32, 57, 24, 39, 1, 25, 18, 62, 37, 12, 56, 1, 37, 11, 52, 44, 9, 30, 47, 4, 51, 40, 55, 25, 34, 27, 56, 30, 32, 54 },
+     { 63, 40, 49, 15, 43, 26, 63, 38, 16, 20, 30, 12, 57, 14, 19, 60, 36, 12, 59, 2, 57, 17, 42, 31, 1, 44, 16, 35, 47, 11, 32, 48, 13, 43, 1, 39, 51, 12, 57, 23, 6, 40, 53, 3, 55, 31, 39, 60, 35, 44, 5, 15, 45, 1, 62, 41, 26, 14, 47, 22, 36, 27, 50, 9, 26, 47, 52, 28, 54, 16, 1, 13, 51, 39, 23, 63, 1, 30, 15, 26, 2, 57, 19, 37, 1, 44, 21, 50, 13, 63, 8, 24, 56, 1, 35, 25, 58, 20, 2, 28, 14, 51, 33, 59, 13, 30, 4, 49, 31, 24, 63, 26, 33, 3, 58, 38, 62, 24, 32, 8, 17, 45, 5, 48, 18, 3, 43, 11 },
+     { 21, 4, 24, 34, 59, 1, 37, 11, 53, 5, 47, 2, 22, 40, 32, 1, 24, 50, 21, 29, 38, 25, 63, 8, 55, 24, 53, 6, 62, 23, 59, 3, 54, 20, 58, 24, 5, 46, 15, 38, 48, 14, 27, 42, 23, 7, 46, 10, 17, 58, 25, 52, 23, 32, 49, 12, 55, 30, 40, 7, 59, 1, 56, 21, 39, 4, 23, 15, 37, 46, 55, 42, 21, 4, 48, 8, 45, 54, 37, 55, 32, 8, 46, 10, 30, 54, 4, 41, 25, 29, 36, 48, 11, 43, 14, 47, 5, 43, 53, 36, 61, 10, 45, 6, 41, 54, 27, 43, 16, 55, 6, 46, 18, 42, 23, 15, 1, 45, 12, 60, 37, 22, 62, 12, 39, 59, 16, 52 },
+     { 47, 35, 56, 7, 19, 46, 31, 50, 33, 24, 61, 35, 50, 7, 53, 44, 55, 6, 46, 10, 52, 5, 21, 43, 36, 10, 18, 41, 26, 37, 8, 29, 40, 36, 9, 49, 34, 26, 61, 21, 7, 59, 18, 62, 29, 54, 20, 32, 51, 0, 40, 10, 55, 6, 20, 36, 9, 61, 5, 51, 44, 19, 33, 43, 13, 57, 40, 63, 8, 24, 29, 10, 60, 34, 27, 40, 25, 18, 10, 42, 21, 49, 26, 62, 38, 12, 33, 61, 5, 57, 2, 19, 54, 28, 62, 22, 38, 31, 16, 7, 22, 47, 29, 17, 35, 8, 20, 51, 2, 40, 22, 50, 13, 61, 28, 53, 35, 20, 56, 30, 2, 53, 14, 41, 23, 34, 8, 31 },
+     { 12, 2, 42, 29, 52, 13, 21, 8, 55, 14, 41, 17, 28, 58, 23, 11, 17, 36, 31, 62, 17, 34, 50, 14, 28, 61, 33, 52, 2, 51, 17, 45, 7, 25, 62, 30, 18, 55, 0, 42, 30, 35, 45, 1, 12, 48, 3, 63, 21, 36, 30, 48, 19, 59, 43, 27, 46, 17, 34, 25, 12, 29, 53, 6, 48, 31, 11, 34, 49, 3, 36, 50, 19, 47, 14, 61, 11, 36, 58, 4, 60, 14, 39, 22, 6, 52, 15, 35, 17, 46, 31, 42, 9, 34, 3, 52, 12, 60, 26, 56, 40, 2, 53, 23, 57, 38, 62, 14, 36, 59, 10, 31, 39, 6, 49, 9, 41, 26, 5, 48, 43, 27, 33, 58, 1, 50, 25, 57 },
+     { 61, 37, 15, 61, 3, 39, 58, 43, 26, 0, 44, 10, 47, 3, 37, 63, 28, 43, 13, 39, 3, 57, 30, 59, 0, 48, 5, 43, 13, 22, 60, 33, 55, 15, 42, 4, 52, 10, 45, 13, 54, 4, 24, 49, 37, 26, 41, 14, 42, 9, 61, 13, 38, 23, 3, 53, 0, 58, 21, 42, 63, 10, 17, 61, 25, 0, 58, 28, 17, 44, 57, 12, 27, 0, 55, 5, 52, 28, 23, 47, 29, 0, 43, 17, 58, 28, 47, 23, 55, 10, 58, 23, 51, 40, 18, 33, 45, 0, 49, 8, 32, 61, 19, 48, 0, 26, 7, 47, 29, 18, 44, 0, 56, 34, 20, 59, 15, 51, 37, 18, 10, 52, 7, 20, 46, 9, 38, 17 },
+     { 6, 27, 48, 23, 45, 29, 5, 18, 38, 62, 27, 56, 20, 32, 15, 9, 48, 0, 54, 22, 45, 20, 7, 41, 23, 39, 19, 27, 58, 31, 44, 0, 12, 50, 23, 56, 20, 39, 32, 59, 16, 52, 33, 9, 57, 22, 6, 58, 28, 50, 24, 2, 56, 35, 16, 45, 32, 38, 15, 54, 2, 38, 46, 22, 35, 45, 20, 5, 52, 25, 7, 35, 59, 32, 22, 43, 38, 3, 51, 16, 34, 53, 32, 50, 3, 40, 8, 43, 0, 39, 27, 4, 14, 61, 8, 55, 15, 41, 20, 44, 27, 13, 39, 11, 46, 42, 54, 33, 4, 52, 23, 61, 14, 25, 43, 2, 33, 11, 63, 29, 61, 17, 40, 55, 22, 62, 28, 44 },
+     { 20, 54, 8, 56, 35, 10, 63, 31, 52, 12, 48, 6, 59, 41, 52, 33, 19, 58, 25, 49, 11, 37, 47, 12, 54, 15, 56, 35, 7, 47, 16, 53, 28, 34, 5, 37, 28, 8, 48, 3, 28, 38, 18, 61, 16, 43, 53, 32, 4, 17, 47, 27, 44, 8, 63, 10, 25, 49, 6, 37, 24, 52, 32, 3, 50, 12, 41, 56, 38, 14, 62, 20, 40, 16, 53, 31, 18, 63, 41, 9, 59, 7, 13, 25, 57, 20, 63, 26, 53, 18, 48, 62, 30, 46, 21, 25, 58, 29, 36, 4, 55, 34, 6, 60, 31, 16, 21, 12, 58, 38, 9, 29, 47, 7, 52, 30, 57, 44, 22, 0, 35, 45, 3, 31, 14, 36, 0, 51 },
+     { 42, 14, 33, 24, 16, 49, 40, 2, 22, 33, 16, 36, 25, 1, 21, 61, 38, 8, 33, 4, 62, 26, 29, 60, 6, 46, 30, 11, 63, 4, 36, 40, 19, 57, 46, 11, 41, 63, 22, 25, 58, 10, 46, 2, 34, 27, 11, 38, 56, 34, 12, 53, 18, 33, 41, 51, 13, 28, 60, 20, 47, 14, 29, 59, 16, 62, 8, 22, 32, 47, 9, 49, 2, 44, 7, 12, 45, 6, 20, 27, 45, 24, 62, 42, 36, 11, 33, 15, 37, 7, 32, 10, 37, 1, 35, 50, 6, 11, 63, 24, 52, 15, 50, 24, 3, 37, 56, 27, 34, 22, 49, 16, 36, 62, 17, 39, 4, 15, 54, 24, 50, 8, 58, 26, 49, 54, 11, 30 },
+     { 4, 59, 41, 1, 53, 12, 25, 45, 59, 7, 51, 39, 54, 14, 46, 4, 27, 53, 16, 44, 18, 51, 1, 32, 25, 2, 50, 40, 20, 54, 24, 9, 62, 2, 27, 60, 1, 17, 36, 50, 6, 40, 30, 55, 41, 19, 49, 1, 21, 60, 40, 5, 62, 1, 22, 30, 57, 4, 43, 31, 1, 55, 40, 7, 27, 37, 30, 54, 1, 19, 42, 30, 56, 26, 62, 49, 24, 57, 37, 56, 2, 39, 16, 5, 30, 55, 3, 49, 60, 23, 56, 44, 17, 52, 13, 42, 28, 48, 18, 45, 9, 37, 21, 41, 58, 10, 48, 1, 63, 5, 41, 57, 2, 24, 12, 48, 27, 42, 32, 46, 13, 38, 19, 34, 5, 41, 25, 60 },
+     { 39, 28, 21, 46, 32, 57, 36, 9, 19, 42, 4, 29, 11, 43, 30, 49, 13, 42, 35, 56, 9, 39, 15, 52, 36, 61, 18, 26, 45, 14, 31, 48, 21, 43, 14, 33, 49, 54, 14, 44, 21, 62, 13, 23, 8, 62, 15, 51, 44, 7, 30, 37, 20, 42, 56, 7, 39, 18, 50, 11, 61, 9, 19, 43, 57, 2, 48, 11, 39, 60, 28, 4, 37, 17, 35, 1, 33, 11, 31, 14, 48, 19, 35, 51, 46, 21, 44, 29, 12, 41, 2, 22, 58, 26, 54, 4, 59, 38, 2, 33, 57, 1, 63, 13, 28, 51, 15, 40, 18, 45, 8, 30, 43, 37, 54, 19, 8, 59, 21, 6, 60, 29, 55, 10, 63, 15, 47, 17 },
+     { 3, 50, 10, 62, 18, 5, 27, 49, 60, 23, 55, 18, 62, 24, 56, 10, 59, 28, 2, 23, 34, 59, 43, 20, 10, 42, 8, 49, 1, 37, 57, 6, 51, 29, 53, 7, 23, 31, 5, 32, 51, 0, 35, 54, 45, 31, 5, 26, 36, 24, 55, 15, 48, 29, 14, 48, 26, 60, 21, 41, 36, 26, 50, 33, 14, 44, 17, 24, 52, 15, 46, 23, 54, 6, 47, 21, 60, 50, 4, 53, 29, 61, 8, 23, 1, 60, 19, 6, 53, 16, 47, 34, 6, 39, 16, 31, 12, 20, 53, 22, 30, 43, 25, 46, 35, 6, 44, 32, 53, 26, 55, 19, 11, 59, 5, 33, 51, 1, 35, 53, 25, 3, 42, 23, 44, 32, 7, 53 },
+     { 22, 44, 37, 6, 26, 51, 38, 0, 34, 13, 31, 46, 3, 37, 6, 19, 40, 21, 47, 63, 12, 5, 29, 55, 22, 58, 34, 28, 60, 22, 11, 41, 17, 38, 9, 44, 59, 39, 56, 19, 11, 47, 25, 15, 3, 39, 57, 17, 61, 11, 46, 3, 58, 9, 54, 35, 2, 34, 8, 45, 15, 56, 5, 23, 53, 33, 63, 35, 4, 59, 10, 51, 13, 61, 29, 41, 15, 25, 43, 19, 40, 10, 54, 33, 41, 12, 38, 51, 31, 26, 61, 9, 30, 45, 24, 62, 49, 40, 10, 61, 14, 49, 5, 17, 54, 20, 60, 23, 3, 13, 35, 50, 32, 23, 46, 27, 38, 63, 16, 12, 39, 48, 18, 51, 1, 27, 56, 35 },
+     { 63, 15, 30, 55, 43, 14, 57, 17, 53, 44, 7, 48, 26, 50, 32, 60, 0, 53, 14, 31, 50, 24, 46, 0, 38, 13, 4, 52, 16, 45, 30, 59, 0, 25, 55, 35, 16, 10, 26, 42, 58, 29, 60, 38, 50, 22, 28, 47, 0, 50, 28, 19, 33, 39, 11, 44, 16, 52, 24, 59, 3, 38, 27, 51, 0, 21, 7, 42, 26, 34, 21, 40, 33, 18, 39, 3, 54, 38, 8, 59, 0, 44, 27, 15, 58, 28, 57, 9, 43, 0, 36, 50, 20, 59, 8, 34, 0, 27, 47, 7, 36, 19, 56, 32, 0, 38, 11, 29, 62, 47, 6, 61, 0, 41, 14, 56, 10, 23, 45, 31, 57, 8, 36, 13, 58, 38, 11, 19 },
+     { 0, 34, 12, 47, 21, 2, 40, 30, 11, 25, 61, 20, 40, 15, 35, 22, 45, 36, 7, 41, 17, 57, 9, 48, 32, 62, 44, 24, 35, 3, 54, 13, 33, 63, 19, 4, 48, 22, 62, 2, 37, 8, 33, 6, 20, 52, 9, 32, 43, 13, 39, 63, 25, 4, 49, 23, 62, 32, 9, 30, 48, 18, 63, 12, 46, 29, 58, 13, 48, 8, 57, 31, 0, 51, 9, 58, 12, 22, 47, 29, 35, 22, 49, 5, 46, 4, 34, 20, 63, 24, 56, 11, 41, 3, 51, 19, 56, 35, 17, 58, 28, 42, 9, 45, 59, 26, 51, 42, 17, 36, 25, 15, 53, 21, 44, 3, 30, 55, 5, 50, 21, 28, 61, 32, 6, 49, 28, 46 },
+     { 58, 42, 60, 4, 31, 59, 22, 63, 35, 38, 9, 54, 1, 57, 8, 51, 16, 58, 27, 53, 3, 38, 30, 15, 27, 6, 19, 56, 10, 50, 21, 36, 47, 5, 43, 28, 51, 32, 13, 46, 18, 54, 16, 43, 63, 12, 36, 59, 22, 34, 5, 52, 17, 59, 27, 41, 0, 19, 55, 37, 13, 43, 6, 34, 41, 10, 36, 55, 19, 44, 3, 16, 58, 27, 49, 25, 32, 62, 17, 55, 13, 63, 18, 52, 25, 37, 17, 48, 13, 32, 5, 46, 28, 37, 14, 43, 25, 5, 51, 39, 3, 52, 33, 22, 8, 40, 12, 4, 57, 9, 46, 39, 28, 58, 13, 62, 17, 42, 19, 36, 0, 47, 16, 43, 24, 21, 54, 13 },
+     { 25, 9, 23, 50, 36, 8, 45, 14, 3, 51, 16, 28, 44, 12, 42, 29, 4, 26, 10, 47, 22, 61, 18, 54, 51, 39, 46, 13, 41, 26, 58, 7, 18, 39, 12, 57, 15, 1, 52, 27, 41, 23, 48, 1, 27, 45, 18, 2, 57, 26, 55, 8, 43, 31, 6, 58, 14, 51, 40, 5, 61, 31, 24, 54, 17, 60, 22, 1, 39, 30, 53, 45, 36, 13, 43, 5, 45, 2, 37, 6, 34, 42, 2, 39, 10, 62, 7, 54, 40, 18, 60, 15, 52, 21, 63, 8, 55, 46, 15, 30, 23, 13, 62, 16, 50, 24, 58, 31, 48, 21, 34, 2, 49, 7, 31, 37, 26, 48, 9, 61, 40, 11, 52, 2, 60, 40, 4, 37 },
+     { 52, 28, 39, 16, 54, 19, 29, 55, 42, 20, 58, 33, 24, 63, 18, 55, 39, 62, 43, 34, 12, 40, 6, 35, 2, 25, 8, 62, 34, 1, 31, 42, 61, 27, 53, 24, 40, 61, 34, 8, 59, 4, 30, 56, 40, 6, 53, 42, 10, 48, 16, 37, 12, 46, 21, 36, 47, 11, 28, 45, 22, 10, 57, 2, 49, 31, 14, 44, 61, 11, 25, 6, 23, 63, 18, 36, 28, 56, 20, 51, 11, 48, 27, 56, 32, 22, 45, 30, 2, 42, 27, 39, 1, 44, 23, 31, 38, 22, 11, 61, 43, 54, 4, 47, 35, 2, 44, 16, 28, 54, 12, 62, 18, 43, 10, 52, 1, 58, 33, 15, 29, 56, 20, 34, 9, 30, 48, 17 },
+     { 46, 2, 56, 11, 41, 1, 49, 6, 27, 47, 2, 48, 5, 32, 37, 3, 13, 19, 32, 1, 55, 28, 60, 17, 43, 59, 32, 20, 49, 16, 55, 23, 14, 46, 2, 36, 6, 30, 20, 49, 12, 47, 35, 14, 21, 60, 29, 14, 35, 24, 46, 1, 56, 29, 53, 8, 33, 23, 56, 1, 35, 46, 20, 39, 26, 4, 53, 28, 17, 38, 60, 34, 48, 9, 55, 15, 46, 7, 41, 31, 60, 24, 16, 36, 1, 59, 19, 52, 35, 6, 55, 11, 59, 33, 7, 57, 4, 29, 48, 1, 19, 26, 37, 30, 18, 63, 37, 6, 59, 1, 40, 24, 56, 33, 46, 22, 35, 7, 24, 53, 39, 5, 26, 45, 55, 18, 62, 7 },
+     { 20, 60, 29, 34, 20, 62, 33, 52, 10, 36, 13, 60, 41, 21, 50, 27, 56, 49, 8, 51, 21, 45, 11, 48, 8, 23, 53, 3, 29, 44, 5, 52, 9, 32, 50, 17, 43, 56, 3, 38, 24, 10, 62, 25, 51, 9, 33, 49, 61, 7, 30, 62, 22, 19, 2, 42, 63, 5, 49, 18, 60, 15, 52, 7, 43, 56, 23, 50, 5, 50, 2, 20, 41, 30, 1, 52, 22, 61, 14, 26, 3, 43, 53, 7, 47, 28, 11, 14, 23, 58, 33, 25, 47, 13, 50, 17, 40, 54, 34, 60, 41, 6, 59, 14, 50, 7, 25, 55, 20, 42, 51, 8, 27, 4, 16, 60, 28, 50, 44, 3, 22, 49, 63, 12, 33, 1, 43, 31 },
+     { 36, 5, 46, 8, 44, 24, 13, 39, 25, 57, 31, 18, 8, 52, 10, 45, 6, 30, 36, 24, 63, 4, 33, 26, 57, 40, 15, 56, 37, 12, 40, 25, 37, 58, 11, 63, 21, 45, 16, 60, 31, 53, 18, 33, 3, 45, 23, 0, 20, 54, 40, 15, 50, 38, 60, 16, 25, 42, 29, 38, 7, 41, 25, 62, 18, 33, 8, 35, 42, 16, 32, 56, 12, 39, 59, 19, 34, 9, 49, 38, 57, 12, 21, 50, 14, 40, 61, 44, 50, 9, 49, 19, 3, 29, 35, 62, 12, 24, 7, 18, 52, 32, 10, 46, 21, 41, 32, 11, 36, 29, 14, 34, 60, 38, 54, 11, 41, 14, 19, 57, 32, 16, 7, 41, 51, 25, 14, 57 },
+     { 53, 18, 26, 50, 15, 58, 4, 63, 17, 43, 7, 40, 61, 35, 15, 41, 23, 60, 16, 38, 14, 42, 19, 50, 0, 31, 10, 46, 27, 63, 18, 60, 0, 20, 29, 39, 8, 26, 37, 5, 42, 0, 44, 39, 57, 17, 58, 41, 28, 37, 4, 32, 9, 44, 12, 31, 54, 10, 59, 14, 27, 53, 12, 36, 0, 47, 13, 63, 21, 58, 10, 24, 50, 27, 4, 26, 44, 53, 31, 0, 18, 42, 29, 33, 57, 4, 32, 26, 0, 38, 16, 61, 41, 53, 20, 0, 42, 44, 49, 27, 10, 56, 39, 0, 57, 15, 53, 49, 3, 61, 22, 47, 17, 5, 49, 26, 2, 63, 39, 10, 47, 27, 37, 23, 4, 59, 38, 10 },
+     { 23, 39, 61, 3, 37, 28, 48, 31, 0, 34, 51, 23, 2, 26, 58, 0, 53, 11, 46, 1, 57, 29, 52, 14, 37, 61, 21, 35, 2, 49, 7, 34, 47, 55, 4, 33, 54, 13, 58, 52, 19, 50, 22, 7, 13, 29, 36, 11, 51, 17, 60, 25, 55, 4, 34, 51, 0, 35, 20, 48, 32, 3, 51, 30, 59, 28, 40, 3, 46, 29, 54, 43, 7, 62, 47, 11, 39, 4, 23, 46, 55, 8, 63, 5, 25, 37, 18, 46, 21, 56, 31, 5, 36, 8, 45, 58, 26, 15, 2, 36, 47, 21, 29, 44, 25, 34, 3, 27, 43, 10, 52, 0, 45, 30, 24, 36, 43, 18, 34, 59, 0, 52, 61, 15, 44, 19, 30, 49 },
+     { 0, 27, 12, 43, 54, 9, 22, 53, 21, 46, 15, 55, 29, 47, 20, 33, 39, 28, 59, 35, 9, 44, 5, 24, 47, 7, 52, 17, 56, 22, 30, 42, 14, 26, 45, 18, 49, 1, 24, 34, 11, 27, 55, 32, 61, 47, 2, 56, 6, 44, 13, 47, 36, 27, 58, 22, 16, 47, 40, 4, 57, 38, 21, 45, 16, 9, 56, 26, 11, 38, 0, 22, 36, 17, 33, 57, 16, 30, 62, 15, 35, 40, 20, 45, 59, 10, 54, 8, 63, 13, 52, 27, 22, 57, 28, 12, 32, 51, 55, 22, 63, 4, 16, 54, 12, 62, 45, 19, 58, 13, 32, 40, 20, 56, 7, 57, 9, 54, 6, 29, 42, 21, 8, 55, 35, 47, 6, 41 },
+     { 56, 33, 58, 32, 19, 35, 42, 6, 59, 11, 38, 5, 49, 12, 62, 7, 52, 17, 5, 25, 54, 20, 61, 31, 54, 27, 41, 11, 44, 5, 59, 12, 36, 51, 10, 61, 28, 41, 48, 9, 43, 63, 5, 40, 20, 8, 49, 26, 34, 21, 58, 1, 18, 45, 7, 39, 61, 26, 8, 50, 23, 10, 63, 5, 55, 37, 19, 49, 52, 15, 59, 47, 13, 54, 1, 25, 42, 58, 10, 48, 3, 27, 50, 1, 17, 48, 34, 41, 16, 40, 2, 45, 10, 39, 17, 61, 5, 38, 19, 9, 41, 31, 60, 38, 5, 23, 36, 8, 30, 55, 24, 63, 12, 48, 14, 51, 31, 20, 45, 25, 12, 50, 32, 2, 28, 11, 62, 14 },
+     { 44, 16, 7, 48, 1, 62, 16, 50, 27, 33, 61, 25, 17, 44, 31, 14, 22, 43, 32, 48, 18, 40, 8, 36, 3, 16, 33, 62, 23, 38, 25, 53, 2, 21, 41, 6, 22, 15, 59, 29, 16, 37, 26, 15, 52, 42, 23, 15, 54, 39, 10, 30, 53, 11, 49, 24, 2, 43, 55, 17, 34, 44, 15, 31, 24, 44, 2, 32, 7, 35, 25, 5, 40, 45, 29, 51, 6, 21, 37, 52, 24, 60, 13, 31, 53, 23, 2, 28, 49, 24, 31, 60, 20, 51, 1, 34, 48, 14, 59, 33, 50, 1, 18, 33, 48, 60, 17, 51, 39, 6, 38, 2, 35, 29, 40, 23, 1, 62, 15, 53, 37, 17, 46, 57, 40, 51, 24, 22 },
+     { 5, 37, 52, 24, 45, 13, 40, 3, 45, 9, 19, 42, 56, 4, 37, 46, 56, 2, 63, 11, 51, 1, 49, 13, 59, 45, 39, 1, 48, 15, 58, 9, 46, 31, 54, 35, 57, 38, 3, 46, 56, 4, 47, 57, 1, 30, 38, 63, 3, 46, 28, 63, 41, 14, 33, 62, 19, 32, 13, 28, 61, 1, 53, 42, 11, 60, 22, 62, 27, 42, 61, 31, 19, 8, 61, 12, 32, 55, 2, 18, 33, 12, 43, 36, 9, 62, 30, 55, 6, 58, 35, 7, 43, 29, 54, 23, 43, 30, 3, 25, 11, 45, 52, 28, 7, 14, 42, 1, 22, 50, 16, 53, 19, 59, 4, 46, 33, 41, 4, 35, 58, 5, 26, 13, 20, 2, 34, 54 },
+     { 30, 63, 21, 10, 26, 55, 29, 59, 23, 39, 53, 1, 36, 24, 59, 27, 10, 34, 23, 38, 30, 60, 22, 42, 28, 19, 9, 57, 30, 19, 43, 33, 13, 63, 3, 19, 11, 50, 31, 20, 14, 34, 10, 35, 17, 59, 7, 31, 19, 25, 50, 5, 20, 57, 29, 6, 52, 41, 4, 46, 20, 37, 26, 17, 49, 6, 39, 18, 53, 14, 3, 49, 57, 23, 34, 48, 14, 41, 28, 38, 56, 6, 58, 25, 39, 19, 43, 15, 37, 11, 47, 18, 53, 4, 37, 9, 62, 21, 53, 40, 57, 24, 13, 40, 56, 26, 47, 31, 59, 25, 45, 27, 10, 43, 21, 61, 13, 27, 48, 9, 23, 43, 31, 62, 38, 59, 9, 47 },
+     { 25, 4, 40, 60, 34, 6, 18, 36, 8, 57, 12, 30, 49, 14, 6, 54, 41, 16, 50, 6, 43, 15, 34, 4, 53, 24, 50, 35, 4, 51, 7, 55, 28, 24, 39, 44, 60, 7, 25, 62, 42, 53, 24, 61, 28, 45, 52, 12, 48, 37, 9, 35, 43, 3, 37, 48, 12, 58, 30, 52, 9, 59, 6, 57, 33, 29, 48, 4, 37, 45, 20, 34, 10, 39, 0, 60, 22, 45, 8, 63, 21, 42, 14, 49, 3, 56, 11, 46, 21, 61, 0, 42, 25, 13, 63, 17, 36, 8, 46, 16, 6, 35, 63, 0, 21, 37, 4, 57, 9, 34, 5, 61, 48, 32, 8, 37, 54, 17, 56, 30, 60, 0, 50, 16, 7, 29, 42, 17 },
+     { 32, 50, 15, 48, 2, 43, 52, 25, 47, 16, 32, 63, 21, 52, 40, 19, 0, 61, 29, 58, 20, 56, 26, 46, 12, 55, 6, 22, 62, 32, 17, 40, 0, 49, 34, 8, 27, 32, 48, 0, 21, 39, 5, 44, 12, 6, 22, 40, 0, 57, 16, 60, 23, 17, 54, 22, 36, 15, 24, 39, 19, 34, 47, 23, 0, 54, 13, 51, 24, 9, 55, 16, 52, 27, 44, 20, 4, 54, 26, 49, 0, 30, 46, 16, 29, 51, 34, 4, 52, 28, 33, 15, 57, 39, 26, 49, 0, 56, 27, 31, 48, 20, 43, 29, 53, 11, 46, 19, 41, 13, 55, 18, 0, 57, 26, 51, 2, 44, 6, 38, 14, 40, 22, 45, 36, 53, 3, 57 },
+     { 44, 12, 37, 28, 22, 57, 11, 38, 0, 51, 9, 41, 4, 29, 11, 47, 33, 45, 12, 26, 3, 36, 9, 63, 31, 16, 38, 44, 14, 47, 25, 61, 20, 58, 15, 47, 17, 57, 13, 36, 9, 51, 18, 29, 50, 36, 54, 20, 61, 27, 32, 13, 53, 44, 9, 27, 0, 63, 45, 2, 56, 10, 14, 43, 41, 28, 58, 11, 35, 60, 30, 41, 6, 63, 11, 51, 37, 32, 15, 10, 35, 53, 5, 61, 22, 7, 26, 59, 23, 9, 44, 48, 21, 3, 51, 32, 24, 41, 12, 61, 2, 55, 9, 15, 35, 58, 28, 15, 62, 30, 37, 23, 42, 29, 11, 17, 35, 24, 63, 20, 52, 28, 8, 55, 11, 23, 47, 19 },
+     { 0, 56, 8, 53, 14, 31, 61, 20, 55, 28, 62, 18, 35, 60, 25, 57, 7, 23, 39, 54, 47, 17, 43, 0, 40, 59, 29, 2, 56, 10, 37, 5, 43, 11, 29, 52, 1, 23, 54, 41, 59, 30, 55, 1, 62, 15, 33, 4, 43, 10, 47, 39, 1, 31, 40, 60, 49, 33, 7, 55, 26, 50, 31, 61, 8, 18, 21, 32, 44, 1, 25, 47, 18, 36, 30, 23, 59, 7, 40, 59, 27, 19, 38, 32, 44, 54, 40, 17, 38, 60, 27, 6, 35, 55, 10, 14, 44, 5, 50, 17, 38, 26, 42, 50, 18, 3, 44, 52, 2, 49, 7, 52, 15, 46, 62, 39, 55, 10, 31, 48, 3, 58, 33, 18, 61, 34, 13, 59 },
+     { 39, 27, 63, 20, 35, 41, 4, 45, 26, 5, 38, 13, 44, 2, 50, 17, 37, 52, 2, 13, 28, 58, 24, 51, 21, 8, 34, 48, 27, 42, 18, 51, 31, 56, 5, 36, 38, 44, 4, 17, 26, 11, 38, 23, 42, 8, 56, 39, 24, 51, 5, 56, 21, 59, 14, 6, 18, 42, 22, 35, 16, 37, 3, 25, 39, 46, 63, 5, 50, 17, 58, 8, 55, 3, 50, 12, 43, 17, 47, 2, 51, 9, 62, 12, 1, 35, 13, 50, 1, 37, 12, 51, 19, 29, 46, 59, 22, 58, 33, 45, 22, 60, 10, 32, 61, 39, 8, 33, 25, 36, 20, 60, 38, 4, 21, 5, 28, 45, 12, 18, 42, 11, 49, 1, 27, 40, 6, 30 },
+     { 24, 16, 42, 1, 50, 10, 48, 17, 33, 43, 24, 48, 21, 55, 31, 42, 10, 21, 63, 35, 49, 6, 33, 13, 41, 53, 10, 20, 60, 6, 53, 26, 12, 41, 22, 60, 14, 28, 63, 33, 49, 3, 45, 16, 48, 26, 14, 46, 18, 30, 35, 26, 8, 50, 29, 51, 25, 57, 12, 47, 53, 9, 62, 20, 54, 2, 36, 15, 40, 28, 33, 13, 38, 24, 46, 1, 29, 56, 33, 20, 44, 24, 41, 26, 57, 20, 63, 8, 30, 55, 5, 41, 62, 8, 34, 2, 37, 10, 19, 6, 37, 1, 53, 23, 5, 27, 58, 22, 43, 12, 50, 26, 9, 34, 54, 32, 49, 1, 59, 37, 22, 46, 25, 36, 51, 15, 54, 46 },
+     { 52, 7, 45, 33, 26, 58, 14, 60, 7, 54, 3, 58, 8, 34, 14, 5, 59, 30, 18, 44, 8, 22, 48, 62, 3, 26, 55, 38, 23, 16, 39, 1, 62, 24, 49, 9, 53, 19, 46, 7, 19, 60, 31, 58, 2, 34, 53, 7, 59, 2, 62, 42, 46, 19, 36, 11, 44, 4, 38, 28, 1, 43, 32, 51, 12, 29, 56, 22, 52, 2, 62, 49, 22, 60, 14, 35, 63, 5, 25, 57, 14, 53, 4, 46, 18, 31, 42, 22, 47, 20, 58, 31, 16, 43, 23, 54, 30, 42, 52, 57, 29, 49, 30, 13, 45, 48, 16, 55, 6, 63, 1, 44, 14, 58, 19, 47, 15, 24, 51, 34, 6, 55, 5, 63, 20, 41, 21, 9 },
+     { 30, 62, 18, 55, 5, 23, 39, 29, 49, 30, 15, 36, 28, 46, 60, 25, 39, 46, 4, 32, 61, 40, 15, 30, 36, 45, 14, 2, 49, 33, 57, 45, 18, 32, 3, 45, 30, 2, 35, 52, 40, 27, 13, 21, 38, 63, 20, 28, 37, 23, 16, 10, 13, 55, 2, 62, 21, 32, 60, 17, 58, 23, 5, 40, 16, 48, 7, 45, 10, 26, 43, 19, 6, 31, 52, 21, 39, 16, 48, 9, 37, 28, 36, 55, 7, 48, 3, 59, 15, 45, 25, 1, 53, 13, 47, 7, 62, 15, 4, 25, 12, 41, 18, 60, 38, 11, 34, 19, 39, 31, 29, 56, 23, 42, 3, 27, 60, 41, 8, 16, 61, 29, 43, 9, 32, 2, 60, 34 },
+     { 3, 38, 13, 37, 52, 44, 2, 19, 12, 42, 63, 19, 40, 1, 20, 50, 12, 55, 15, 56, 27, 1, 54, 11, 57, 18, 32, 63, 44, 4, 29, 13, 37, 61, 35, 16, 42, 57, 12, 22, 6, 55, 43, 10, 50, 5, 44, 11, 48, 52, 34, 58, 28, 41, 38, 30, 7, 52, 11, 49, 30, 14, 45, 27, 59, 34, 21, 38, 32, 58, 11, 36, 56, 42, 9, 41, 3, 54, 31, 42, 0, 60, 16, 11, 39, 24, 52, 33, 6, 36, 10, 40, 32, 60, 26, 20, 39, 28, 47, 34, 63, 8, 54, 3, 24, 56, 0, 51, 13, 47, 16, 40, 7, 35, 52, 11, 36, 4, 57, 30, 39, 13, 18, 50, 58, 28, 12, 48 },
+     { 57, 24, 49, 21, 10, 31, 61, 36, 56, 0, 22, 53, 11, 56, 32, 7, 36, 27, 41, 9, 46, 19, 34, 42, 25, 7, 50, 9, 28, 21, 54, 8, 50, 7, 27, 59, 10, 25, 48, 62, 37, 0, 33, 58, 25, 18, 32, 61, 0, 15, 45, 5, 50, 3, 23, 55, 47, 17, 40, 6, 60, 34, 53, 8, 41, 0, 61, 13, 54, 4, 46, 28, 0, 17, 48, 27, 58, 13, 23, 61, 33, 21, 50, 30, 62, 8, 14, 29, 56, 27, 61, 49, 17, 2, 44, 11, 51, 0, 59, 17, 40, 20, 32, 47, 36, 21, 42, 28, 60, 4, 54, 10, 59, 17, 30, 62, 21, 43, 26, 48, 0, 56, 36, 25, 8, 44, 39, 17 },
+     { 10, 42, 4, 59, 27, 47, 8, 23, 51, 32, 45, 6, 37, 26, 48, 43, 62, 0, 21, 53, 38, 12, 51, 5, 60, 47, 24, 37, 59, 15, 35, 47, 22, 55, 0, 50, 21, 40, 6, 29, 15, 52, 24, 8, 41, 55, 13, 29, 40, 56, 24, 31, 19, 33, 61, 15, 0, 35, 24, 42, 21, 2, 19, 57, 24, 15, 30, 50, 20, 25, 40, 16, 57, 34, 61, 8, 29, 45, 6, 49, 11, 47, 2, 44, 19, 57, 38, 50, 12, 42, 21, 4, 35, 52, 28, 56, 23, 36, 13, 45, 4, 52, 27, 14, 6, 62, 9, 45, 21, 37, 25, 46, 33, 49, 0, 44, 7, 53, 13, 19, 53, 31, 3, 47, 15, 56, 22, 51 },
+     { 35, 28, 53, 32, 1, 16, 54, 40, 9, 17, 25, 58, 14, 59, 3, 22, 16, 51, 31, 5, 23, 58, 28, 17, 35, 20, 0, 42, 11, 52, 3, 31, 41, 17, 43, 13, 32, 54, 18, 60, 32, 45, 17, 49, 2, 36, 51, 22, 7, 36, 9, 63, 48, 12, 46, 26, 43, 28, 63, 13, 48, 37, 51, 33, 5, 47, 55, 9, 42, 63, 7, 51, 24, 12, 37, 19, 55, 34, 18, 38, 15, 28, 54, 34, 5, 43, 22, 0, 48, 14, 54, 24, 58, 9, 38, 5, 32, 55, 21, 30, 49, 9, 59, 43, 30, 51, 35, 26, 7, 53, 2, 22, 14, 27, 57, 18, 38, 24, 33, 45, 10, 41, 20, 60, 37, 5, 32, 0 },
+     { 63, 19, 15, 40, 62, 35, 14, 28, 46, 61, 4, 49, 35, 10, 29, 54, 33, 8, 45, 62, 37, 1, 43, 55, 10, 52, 61, 30, 19, 40, 25, 62, 11, 38, 27, 58, 36, 3, 46, 8, 39, 4, 62, 28, 47, 20, 4, 54, 47, 27, 43, 1, 21, 38, 8, 58, 10, 54, 4, 56, 9, 26, 12, 39, 60, 27, 18, 37, 1, 31, 35, 5, 45, 50, 2, 43, 26, 1, 59, 23, 56, 40, 7, 26, 58, 17, 32, 63, 25, 39, 7, 31, 45, 19, 63, 15, 48, 8, 37, 61, 16, 34, 1, 56, 18, 3, 15, 58, 49, 32, 63, 41, 55, 5, 40, 22, 50, 6, 59, 2, 63, 23, 52, 11, 26, 61, 44, 23 },
+     { 11, 56, 46, 6, 22, 43, 58, 3, 34, 21, 38, 30, 18, 44, 52, 13, 41, 57, 17, 28, 14, 49, 25, 7, 33, 39, 26, 6, 56, 48, 1, 20, 56, 5, 46, 9, 19, 51, 30, 25, 56, 21, 35, 14, 57, 42, 16, 33, 10, 57, 17, 59, 41, 25, 53, 37, 20, 40, 30, 18, 31, 62, 44, 22, 3, 44, 11, 48, 23, 53, 18, 60, 29, 22, 62, 15, 53, 47, 10, 41, 3, 19, 52, 36, 13, 46, 10, 35, 3, 61, 41, 16, 1, 50, 26, 42, 18, 46, 2, 25, 54, 20, 39, 23, 47, 31, 41, 12, 38, 17, 8, 19, 31, 48, 12, 61, 9, 54, 29, 35, 15, 38, 6, 43, 34, 14, 7, 47 },
+     { 39, 2, 33, 26, 53, 8, 18, 50, 41, 12, 53, 1, 63, 24, 19, 39, 2, 24, 47, 10, 60, 38, 19, 63, 48, 4, 15, 45, 32, 14, 60, 36, 29, 53, 23, 63, 34, 12, 61, 1, 43, 11, 53, 30, 1, 26, 60, 45, 23, 39, 3, 29, 12, 50, 4, 16, 51, 3, 45, 36, 50, 1, 16, 54, 35, 14, 57, 30, 58, 9, 46, 14, 41, 10, 32, 38, 4, 30, 21, 51, 32, 63, 25, 1, 60, 27, 53, 18, 51, 22, 28, 55, 34, 12, 40, 3, 60, 29, 57, 41, 6, 44, 11, 53, 8, 61, 24, 57, 1, 28, 44, 59, 36, 3, 34, 25, 41, 31, 16, 44, 22, 47, 28, 58, 1, 49, 54, 29 },
+     { 58, 25, 50, 13, 38, 30, 60, 24, 6, 57, 27, 42, 9, 45, 6, 61, 30, 50, 4, 34, 29, 3, 46, 13, 22, 42, 58, 28, 9, 39, 23, 44, 7, 15, 44, 2, 40, 15, 47, 41, 23, 37, 7, 59, 38, 11, 34, 6, 62, 14, 52, 35, 55, 19, 32, 61, 33, 24, 57, 6, 22, 59, 29, 7, 49, 25, 40, 3, 17, 39, 27, 52, 0, 55, 16, 57, 24, 61, 36, 6, 29, 12, 48, 39, 20, 44, 6, 40, 33, 5, 48, 10, 57, 36, 22, 51, 33, 9, 24, 12, 62, 29, 50, 35, 14, 43, 5, 33, 47, 52, 13, 23, 10, 51, 56, 16, 46, 1, 49, 4, 61, 9, 52, 18, 31, 21, 36, 17 },
+     { 19, 42, 9, 48, 2, 44, 11, 37, 48, 20, 33, 16, 55, 35, 49, 15, 37, 20, 59, 16, 53, 22, 56, 31, 50, 11, 34, 54, 16, 51, 4, 49, 33, 53, 21, 28, 56, 24, 31, 9, 52, 16, 48, 24, 44, 13, 51, 20, 31, 49, 18, 6, 34, 2, 44, 14, 47, 8, 15, 43, 13, 41, 33, 52, 20, 61, 7, 51, 34, 62, 4, 20, 36, 33, 43, 8, 46, 13, 53, 17, 45, 42, 9, 31, 52, 11, 30, 56, 13, 59, 17, 44, 27, 6, 62, 11, 43, 17, 49, 38, 26, 2, 16, 27, 58, 21, 54, 18, 26, 5, 35, 61, 43, 27, 7, 39, 14, 58, 37, 55, 20, 33, 13, 40, 62, 10, 55, 5 },
+     { 51, 14, 61, 29, 59, 20, 55, 31, 0, 49, 11, 60, 3, 26, 22, 56, 0, 40, 12, 43, 41, 8, 36, 0, 17, 57, 24, 2, 46, 26, 61, 18, 0, 38, 12, 59, 6, 49, 3, 57, 19, 63, 5, 33, 18, 54, 28, 56, 0, 43, 26, 46, 63, 27, 56, 22, 27, 54, 38, 28, 63, 24, 10, 45, 0, 31, 42, 21, 12, 25, 44, 49, 59, 6, 26, 50, 3, 34, 27, 59, 0, 35, 62, 16, 4, 58, 47, 0, 43, 24, 37, 2, 54, 20, 46, 31, 0, 56, 34, 5, 55, 45, 60, 37, 0, 40, 10, 38, 63, 46, 15, 20, 0, 53, 21, 62, 30, 11, 24, 27, 40, 0, 57, 26, 3, 45, 27, 35 }
+};
+
+static always_inline void
+_soft16_convert_from_rgba_pt(const DATA32 *src, DATA16 *dst, DATA8 *alpha,
+                            const int x, const int y)
+{
+   DATA8 orig_r, orig_g, orig_b, orig_a;
+
+   orig_r = R_VAL(src);
+   orig_g = G_VAL(src);
+   orig_b = B_VAL(src);
+   orig_a = A_VAL(src);
+
+   if (orig_a == 255)
+     {
+       DATA8 dith5, dith6, dith, r, g, b;
+
+       dith = dither_table[x & S16_DM_MSK][y & S16_DM_MSK];
+       dith5 = dith >> S16_DM_SHF(5);
+       dith6 = dith >> S16_DM_SHF(6);
+
+       r = orig_r >> 3;
+       g = orig_g >> 2;
+       b = orig_b >> 3;
+
+       if (((orig_r - (r << 3)) >= dith5) && (r < 0x1f)) r++;
+       if (((orig_g - (g << 2)) >= dith6) && (g < 0x3f)) g++;
+       if (((orig_b - (b << 3)) >= dith5) && (b < 0x1f)) b++;
+
+       *dst = (r << 11) | (g << 5) | b;
+       *alpha = 31;
+     }
+   else if (orig_a == 0)
+     {
+       *dst = 0;
+       *alpha = 0;
+     }
+   else
+     {
+       DATA8 r, g, b, a;
+       r = orig_r >> 3;
+       g = orig_g >> 2;
+       b = orig_b >> 3;
+       a = (orig_a >> 3) + 1;
+
+       *dst = (r << 11) | (g << 5) | b;
+       *alpha = a;
+     }
+}
+
+static inline void
+_soft16_convert_from_rgba_scanline(const DATA32 *src, DATA16 *dst,
+                                  DATA8 *alpha, const int y, const int w)
+{
+   int x, m;
+
+   m = (w & ~7);
+   x = 0;
+   pld(src, 0);
+
+   while (x < m)
+     {
+       pld(src, 32);
+       UNROLL8({
+          _soft16_convert_from_rgba_pt(src, dst, alpha, x, y);
+          src++;
+          dst++;
+          alpha++;
+          x++;
+       });
+     }
+
+   for (; x < w; x++, src++, dst++, alpha++)
+     _soft16_convert_from_rgba_pt(src, dst, alpha, x, y);
+}
+
+void
+soft16_image_convert_from_rgba(Soft16_Image *im, const DATA32 *src)
+{
+   const DATA32 *sp;
+   DATA16 *dp;
+   DATA8 *ap;
+   int y;
+
+   sp = src;
+   dp = im->pixels;
+   ap = im->alpha;
+
+   for (y = 0; y < im->cache_entry.h; y++, sp += im->cache_entry.w, dp += im->stride, ap += im->stride)
+     _soft16_convert_from_rgba_scanline(sp, dp, ap, y, im->cache_entry.w);
+}
+
+static always_inline void
+_soft16_convert_from_rgb_pt(const DATA32 *src, DATA16 *dst,
+                           const int x, const int y)
+{
+   DATA8 orig_r, orig_g, orig_b, r, g, b, dith5, dith6, dith;
+
+   orig_r = R_VAL(src);
+   orig_g = G_VAL(src);
+   orig_b = B_VAL(src);
+
+   r = orig_r >> 3;
+   g = orig_g >> 2;
+   b = orig_b >> 3;
+
+   dith = dither_table[x & S16_DM_MSK][y & S16_DM_MSK];
+   dith5 = dith >> S16_DM_SHF(5);
+   dith6 = dith >> S16_DM_SHF(6);
+
+   if (((orig_r - (r << 3)) >= dith5) && (r < 0x1f)) r++;
+   if (((orig_g - (g << 2)) >= dith6) && (g < 0x3f)) g++;
+   if (((orig_b - (b << 3)) >= dith5) && (b < 0x1f)) b++;
+
+   *dst = (r << 11) | (g << 5) | b;
+}
+
+static inline void
+_soft16_convert_from_rgb_scanline(const DATA32 *src, DATA16 *dst, const int y,
+                                 const int w)
+{
+   int x, m;
+
+   m = (w & ~7);
+   x = 0;
+   pld(src, 0);
+
+   while (x < m)
+     {
+       pld(src, 32);
+       UNROLL8({
+          _soft16_convert_from_rgb_pt(src, dst, x, y);
+          src++;
+          dst++;
+          x++;
+       });
+     }
+
+   for (; x < w; x++, src++, dst++)
+     _soft16_convert_from_rgb_pt(src, dst, x, y);
+}
+
+void
+soft16_image_convert_from_rgb(Soft16_Image *im, const DATA32 *src)
+{
+   const DATA32 *sp;
+   DATA16 *dp;
+   int y, pad;
+
+   sp = src;
+   dp = im->pixels;
+   pad = im->stride - im->cache_entry.w;
+
+   for (y = 0; y < im->cache_entry.h; y++, sp += im->cache_entry.w, dp += im->stride)
+     _soft16_convert_from_rgb_scanline(sp, dp, y, im->cache_entry.w);
+}
diff --git a/src/lib/engines/common_16/evas_soft16_font.c b/src/lib/engines/common_16/evas_soft16_font.c
new file mode 100644 (file)
index 0000000..0874332
--- /dev/null
@@ -0,0 +1,302 @@
+#include "evas_common_soft16.h"
+#include "evas_soft16_scanline_blend.c"
+
+static always_inline void
+_glyph_pt_mask_solid_solid(DATA16 *dst,
+                          const DATA16 rgb565,
+                          const DATA32 rgb565_unpack,
+                          const DATA8 *mask)
+{
+   DATA8 alpha = *mask >> 3;
+
+   if (alpha == 31) *dst = rgb565;
+   else if (alpha > 0)
+     {
+       DATA32 d;
+
+       d = RGB_565_UNPACK(*dst);
+       d = RGB_565_UNPACKED_BLEND_UNMUL(rgb565_unpack, d, alpha);
+       *dst = RGB_565_PACK(d);
+     }
+}
+
+static void
+_glyph_scanline_mask_solid_solid(DATA16 *dst,
+                                int size,
+                                const DATA16 rgb565,
+                                const DATA32 rgb565_unpack,
+                                const DATA8 *mask)
+{
+   DATA16 *start, *end;
+
+   start = dst;
+   pld(start, 0);
+   pld(mask, 0);
+   end = start + (size & ~3);
+
+   while (start < end)
+     {
+       pld(start, 16);
+       pld(mask, 4);
+       UNROLL4({
+          _glyph_pt_mask_solid_solid(start, rgb565, rgb565_unpack, mask);
+          start++;
+          mask++;
+       });
+     }
+
+   end = start + (size & 3);
+   for (; start < end; start++, mask++)
+      _glyph_pt_mask_solid_solid(start, rgb565, rgb565_unpack, mask);
+}
+
+static always_inline void
+_glyph_pt_mask_transp_solid(DATA16 *dst,
+                           DATA32 rgb565_unpack,
+                           DATA8 alpha,
+                           const DATA8 *mask)
+{
+   DATA32 a, b;
+   int rel_alpha;
+
+   rel_alpha = *mask >> 3;
+   alpha = (alpha * rel_alpha) >> 5;
+   if (alpha == 0)
+     return;
+
+   alpha++;
+
+   a = ((rgb565_unpack * rel_alpha) >> 5) & RGB_565_UNPACKED_MASK;
+   b = RGB_565_UNPACK(*dst);
+   b = RGB_565_UNPACKED_BLEND(a, b, alpha);
+   *dst = RGB_565_PACK(b);
+}
+
+static void
+_glyph_scanline_mask_transp_solid(DATA16 *dst,
+                                 int size,
+                                 const DATA32 rgb565_unpack,
+                                 const DATA8 rel_alpha,
+                                 const DATA8 *mask)
+{
+   DATA16 *start, *end;
+
+   start = dst;
+   pld(start, 0);
+   pld(mask, 0);
+   end = start + (size & ~3);
+
+   while (start < end)
+     {
+       pld(start, 16);
+       pld(mask, 4);
+       UNROLL4({
+          _glyph_pt_mask_transp_solid(start, rgb565_unpack, rel_alpha, mask);
+          start++;
+          mask++;
+       });
+     }
+
+   end = start + (size & 3);
+   for (; start < end; start++, mask++)
+      _glyph_pt_mask_transp_solid(start, rgb565_unpack, rel_alpha, mask);
+}
+
+static inline void
+_calc_ext(const Soft16_Image *dst, const RGBA_Draw_Context *dc,
+         Evas_Rectangle *ext)
+{
+   ext->x = 0;
+   ext->y = 0;
+   ext->w = dst->cache_entry.w;
+   ext->h = dst->cache_entry.h;
+
+   if (dc->clip.use)
+     {
+       int v;
+
+       ext->x = dc->clip.x;
+       ext->y = dc->clip.y;
+       ext->w = dc->clip.w;
+       ext->h = dc->clip.h;
+       if (ext->x < 0)
+         {
+            ext->w += ext->x;
+            ext->x = 0;
+         }
+       if (ext->y < 0)
+         {
+            ext->h += ext->y;
+            ext->y = 0;
+         }
+
+       v = dst->cache_entry.w - ext->x;
+       if (ext->w > v) ext->w = v;
+
+       v = dst->cache_entry.h - ext->y;
+       if (ext->h > v) ext->h = v;
+     }
+}
+
+static inline void
+_glyph_scanline(Soft16_Image *dst, const DATA8 *p_mask,
+               const Evas_Rectangle ext, int dx, int dy, int max_x, int max_y,
+               int w, DATA8 alpha, const DATA16 rgb565,
+               const DATA32 rgb565_unpack)
+{
+   int size, in_x, in_w;
+   DATA16 *p_pixels;
+
+   if ((dx >= max_x) || (dy < ext.y) || (dy >= max_y)) return;
+
+   in_x = 0;
+   in_w = 0;
+
+   if (dx + w > max_x) in_w += (dx + w) - max_x;
+
+   if (dx < ext.x)
+     {
+       in_w += ext.x - dx;
+       in_x = ext.x - dx;
+       dx = ext.x;
+     }
+
+   size = w - in_w;
+   p_pixels = dst->pixels + (dy * dst->stride) + dx;
+   p_mask += in_x;
+
+   if (size > 1)
+     {
+       if (alpha == 31)
+          _glyph_scanline_mask_solid_solid
+              (p_pixels, size, rgb565, rgb565_unpack, p_mask);
+       else if (alpha != 0)
+          _glyph_scanline_mask_transp_solid
+              (p_pixels, size, rgb565_unpack, alpha, p_mask);
+     }
+   else if (size == 1)
+     {
+       if (alpha == 31)
+          _glyph_pt_mask_solid_solid(p_pixels, rgb565, rgb565_unpack, p_mask);
+       else if (alpha != 0)
+          _glyph_pt_mask_transp_solid(p_pixels, rgb565_unpack, alpha, p_mask);
+     }
+}
+
+static void
+_soft16_font_glyph_draw_grayscale(Soft16_Image *dst,
+                                 RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg,
+                                 int x, int y, DATA8 alpha, DATA16 rgb565,
+                                 const Evas_Rectangle ext, int bw, int bh,
+                                 int bpitch, const DATA8 *bitmap)
+{
+   const DATA32 rgb565_unpack = RGB_565_UNPACK(rgb565);
+   int i, max_x, max_y;
+
+   max_x = ext.x + ext.w;
+   max_y = ext.y + ext.h;
+
+   for (i = 0; i < bh; i++, bitmap += bpitch)
+      _glyph_scanline(dst, bitmap, ext, x, y + i, max_x, max_y, bw,
+                     alpha, rgb565, rgb565_unpack);
+}
+
+static inline void
+_glyph_create_mask_line(DATA8 *mask, const DATA8 *bitmap, int w)
+{
+   const DATA8 bitrepl[2] = {0x0, 0xff};
+   int i;
+
+   for (i = 0; i < w; i += 8, bitmap++)
+     {
+       int j, size;
+       DATA32 bits;
+
+       if (i + 8 < w) size = 8;
+       else           size = w - i;
+
+       bits = *bitmap;
+
+       for (j = size - 1; j >= 0; j--, mask++)
+         *mask = bitrepl[(bits >> j) & 0x1];
+     }
+}
+
+static void
+_soft16_font_glyph_draw_mono(Soft16_Image *dst,
+                            RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg,
+                            int x, int y, DATA8 alpha, DATA16 rgb565,
+                            const Evas_Rectangle ext, int bw, int bh,
+                            int bpitch, const DATA8 *bitmap)
+{
+   const DATA32 rgb565_unpack = RGB_565_UNPACK(rgb565);
+   DATA8 *mask;
+   int i, max_x, max_y;
+
+   max_x = ext.x + ext.w;
+   max_y = ext.y + ext.h;
+
+   mask = alloca(bpitch);
+   for (i = 0; i < bh; i++, bitmap += bpitch)
+     {
+       _glyph_create_mask_line(mask, bitmap, bw);
+       _glyph_scanline(dst, mask, ext, x, y + i, max_x, max_y, bw,
+                       alpha, rgb565, rgb565_unpack);
+     }
+}
+
+void
+soft16_font_glyph_draw(void *data, void *dest, void *context,
+                      RGBA_Font_Glyph *fg, int x, int y)
+{
+   Soft16_Image *dst;
+   RGBA_Draw_Context *dc;
+   const DATA8 *bitmap;
+   DATA8 alpha, r, g, b;
+   DATA16 rgb565;
+   Evas_Rectangle ext;
+   int bpitch, bw, bh;
+
+   dst = data;
+   dc = context;
+
+   alpha = A_VAL(&dc->col.col) >> 3;
+   if (alpha == 0) return; /* precision is 5 bits, 3 bits lost */
+
+   r = R_VAL(&dc->col.col) >> 3;
+   g = G_VAL(&dc->col.col) >> 2;
+   b = B_VAL(&dc->col.col) >> 3;
+
+   if (r > alpha) r = alpha;
+   if (g > (alpha << 1)) g = (alpha << 1);
+   if (b > alpha) b = alpha;
+
+   rgb565 = (r << 11) | (g << 5) | b;
+
+   bitmap = fg->glyph_out->bitmap.buffer;
+   bh = fg->glyph_out->bitmap.rows;
+   bw = fg->glyph_out->bitmap.width;
+   bpitch = fg->glyph_out->bitmap.pitch;
+   if (bpitch < bw) bpitch = bw;
+
+   _calc_ext(dst, dc, &ext);
+
+   if ((fg->glyph_out->bitmap.num_grays == 256) &&
+       (fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays))
+      _soft16_font_glyph_draw_grayscale(dst, dc, fg, x, y, alpha, rgb565,
+                                       ext, bw, bh, bpitch, bitmap);
+   else
+      _soft16_font_glyph_draw_mono(dst, dc, fg, x, y, alpha, rgb565,
+                                  ext, bw, bh, bpitch, bitmap);
+}
+
+void *
+soft16_font_glyph_new(void *data, RGBA_Font_Glyph *fg)
+{
+   return (void *)1; /* core requires != NULL to work */
+}
+
+void
+soft16_font_glyph_free(void *ext_dat)
+{
+}
diff --git a/src/lib/engines/common_16/evas_soft16_image_scaled_sampled.c b/src/lib/engines/common_16/evas_soft16_image_scaled_sampled.c
new file mode 100644 (file)
index 0000000..1a8f5cc
--- /dev/null
@@ -0,0 +1,474 @@
+#include "evas_common_soft16.h"
+#include "evas_soft16_scanline_blend.c"
+
+static void
+_soft16_image_draw_scaled_solid_solid(Soft16_Image *src,
+                                     Soft16_Image *dst,
+                                     RGBA_Draw_Context *dc,
+                                     int dst_offset, int w, int h,
+                                     int *offset_x, int *offset_y)
+{
+   DATA16 *dst_itr;
+   int y, w_align;
+
+   w_align = w & ~7;
+
+   dst_itr = dst->pixels + dst_offset;
+   for (y = 0; y < h; y++, dst_itr += dst->stride)
+     {
+       DATA16 *d, *s;
+       int x;
+
+       s = src->pixels + offset_y[y];
+       pld(s, 0);
+       pld(offset_x, 0);
+
+       d = dst_itr;
+       x = 0;
+       while (x < w_align)
+         {
+            pld(s, 32);
+            pld(offset_x + x, 32);
+
+            UNROLL8({
+               _soft16_pt_blend_solid_solid(d, s[offset_x[x]]);
+               x++;
+               d++;
+            });
+         }
+
+       for (; x < w; x++, d++)
+         _soft16_pt_blend_solid_solid(d, s[offset_x[x]]);
+     }
+}
+static void
+_soft16_image_draw_scaled_transp_solid(Soft16_Image *src,
+                                      Soft16_Image *dst,
+                                      RGBA_Draw_Context *dc,
+                                      int dst_offset, int w, int h,
+                                      int *offset_x, int *offset_y)
+{
+   DATA16 *dst_itr;
+   int y, w_align;
+
+   w_align = w & ~7;
+
+   dst_itr = dst->pixels + dst_offset;
+   for (y = 0; y < h; y++, dst_itr += dst->stride)
+     {
+       DATA16 *d, *s;
+       DATA8 *a;
+       int x;
+
+       s = src->pixels + offset_y[y];
+       a = src->alpha + offset_y[y];
+       pld(s, 0);
+       pld(a, 0);
+       pld(offset_x, 0);
+
+       d = dst_itr;
+       x = 0;
+       while (x < w_align)
+         {
+            pld(s, 32);
+            pld(a, 8);
+            pld(offset_x + x, 32);
+
+            UNROLL8({
+               int off_x = offset_x[x];
+               _soft16_pt_blend_transp_solid(d, s[off_x], a[off_x]);
+               x++;
+               d++;
+            });
+         }
+
+       for (; x < w; x++, d++)
+         _soft16_pt_blend_transp_solid(d, s[offset_x[x]], a[offset_x[x]]);
+     }
+}
+
+static inline void
+_soft16_image_draw_scaled_no_mul(Soft16_Image *src, Soft16_Image *dst,
+                                RGBA_Draw_Context *dc,
+                                int dst_offset, int w, int h,
+                                int *offset_x, int *offset_y)
+{
+   if ((src->cache_entry.flags.alpha && src->alpha) && 
+       (!dst->cache_entry.flags.alpha))
+      _soft16_image_draw_scaled_transp_solid
+       (src, dst, dc, dst_offset, w, h, offset_x, offset_y);
+   else if (!dst->cache_entry.flags.alpha)
+      _soft16_image_draw_scaled_solid_solid
+       (src, dst, dc, dst_offset, w, h, offset_x, offset_y);
+   else
+      fprintf(stderr,
+              "Unsupported draw of scaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITHOUT COLOR MUL\n",
+              src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha);
+}
+
+static void
+_soft16_image_draw_scaled_solid_solid_mul_alpha(Soft16_Image *src,
+                                               Soft16_Image *dst,
+                                               RGBA_Draw_Context *dc,
+                                               int dst_offset, int w, int h,
+                                               int *offset_x, int *offset_y,
+                                               DATA8 alpha)
+{
+   DATA16 *dst_itr;
+   int y, w_align;
+
+   w_align = w & ~7;
+
+   dst_itr = dst->pixels + dst_offset;
+   for (y = 0; y < h; y++, dst_itr += dst->stride)
+     {
+       DATA16 *d, *s;
+       int x;
+
+       s = src->pixels + offset_y[y];
+       pld(s, 0);
+       pld(offset_x, 0);
+
+       d = dst_itr;
+       x = 0;
+       while (x < w_align)
+         {
+            pld(s, 32);
+            pld(offset_x + x, 32);
+
+            UNROLL8({
+               _soft16_pt_blend_solid_solid_mul_alpha
+                 (d, s[offset_x[x]], alpha);
+               x++;
+               d++;
+            });
+         }
+
+       for (; x < w; x++, d++)
+         _soft16_pt_blend_solid_solid_mul_alpha
+           (d, s[offset_x[x]], alpha);
+     }
+}
+
+static void
+_soft16_image_draw_scaled_transp_solid_mul_alpha(Soft16_Image *src,
+                                                Soft16_Image *dst,
+                                                RGBA_Draw_Context *dc,
+                                                int dst_offset, int w, int h,
+                                                int *offset_x, int *offset_y,
+                                                DATA8 alpha)
+{
+   DATA16 *dst_itr;
+   int y, w_align;
+
+   w_align = w & ~7;
+
+   dst_itr = dst->pixels + dst_offset;
+   for (y = 0; y < h; y++, dst_itr += dst->stride)
+     {
+       DATA16 *d, *s;
+       DATA8 *a;
+       int x;
+
+       s = src->pixels + offset_y[y];
+       a = src->alpha + offset_y[y];
+       pld(s, 0);
+       pld(a, 0);
+       pld(offset_x, 0);
+
+       d = dst_itr;
+       x = 0;
+       while (x < w_align)
+         {
+            pld(s, 32);
+            pld(a, 8);
+            pld(offset_x + x, 32);
+
+            UNROLL8({
+               int off_x = offset_x[x];
+               _soft16_pt_blend_transp_solid_mul_alpha
+                 (d, s[off_x], a[off_x], alpha);
+               x++;
+               d++;
+            });
+         }
+
+       for (; x < w; x++, d++)
+         _soft16_pt_blend_transp_solid_mul_alpha
+           (d, s[offset_x[x]], a[offset_x[x]], alpha);
+     }
+}
+
+static inline void
+_soft16_image_draw_scaled_mul_alpha(Soft16_Image *src, Soft16_Image *dst,
+                                   RGBA_Draw_Context *dc,
+                                   int dst_offset, int w, int h,
+                                   int *offset_x, int *offset_y, DATA8 a)
+{
+   if ((src->cache_entry.flags.alpha && src->alpha) && 
+       (!dst->cache_entry.flags.alpha))
+      _soft16_image_draw_scaled_transp_solid_mul_alpha
+         (src, dst, dc, dst_offset, w, h, offset_x, offset_y, a);
+   else if (!dst->cache_entry.flags.alpha)
+      _soft16_image_draw_scaled_solid_solid_mul_alpha
+         (src, dst, dc, dst_offset, w, h, offset_x, offset_y, a);
+   else
+      fprintf(stderr,
+              "Unsupported draw of scaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITH ALPHA MUL %d\n",
+              src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha, A_VAL(&dc->mul.col));
+}
+
+static void
+_soft16_image_draw_scaled_solid_solid_mul_color(Soft16_Image *src,
+                                               Soft16_Image *dst,
+                                               RGBA_Draw_Context *dc,
+                                               int dst_offset, int w, int h,
+                                               int *offset_x, int *offset_y,
+                                               DATA8 r, DATA8 g, DATA8 b,
+                                               DATA8 alpha)
+{
+   DATA16 *dst_itr;
+   int y, w_align;
+
+   w_align = w & ~7;
+
+   dst_itr = dst->pixels + dst_offset;
+
+   if (alpha == 31)
+     for (y = 0; y < h; y++, dst_itr += dst->stride)
+       {
+         DATA16 *d, *s;
+         int x;
+
+         s = src->pixels + offset_y[y];
+         pld(s, 0);
+         pld(offset_x, 0);
+
+         d = dst_itr;
+         x = 0;
+         while (x < w_align)
+           {
+              pld(s, 32);
+              pld(offset_x + x, 32);
+
+              UNROLL8({
+                 _soft16_pt_blend_solid_solid_mul_color_solid
+                   (d, s[offset_x[x]], r, g, b);
+                 x++;
+                 d++;
+              });
+           }
+
+         for (; x < w; x++, d++)
+           _soft16_pt_blend_solid_solid_mul_color_solid
+             (d, s[offset_x[x]], r, g, b);
+       }
+   else
+     for (y = 0; y < h; y++, dst_itr += dst->stride)
+       {
+         DATA16 *d, *s;
+         int x;
+
+         s = src->pixels + offset_y[y];
+         pld(s, 0);
+         pld(offset_x, 0);
+
+         d = dst_itr;
+         x = 0;
+         while (x < w_align)
+           {
+              pld(s, 32);
+              pld(offset_x + x, 32);
+
+              UNROLL8({
+                 _soft16_pt_blend_solid_solid_mul_color_transp
+                   (d, s[offset_x[x]], alpha, r, g, b);
+                 x++;
+                 d++;
+              });
+           }
+
+         for (; x < w; x++, d++)
+           _soft16_pt_blend_solid_solid_mul_color_transp
+             (d, s[offset_x[x]], alpha, r, g, b);
+       }
+}
+
+static void
+_soft16_image_draw_scaled_transp_solid_mul_color(Soft16_Image *src,
+                                                Soft16_Image *dst,
+                                                RGBA_Draw_Context *dc,
+                                                int dst_offset, int w, int h,
+                                                int *offset_x, int *offset_y,
+                                                DATA8 r, DATA8 g, DATA8 b,
+                                                DATA8 alpha)
+{
+   DATA16 *dst_itr;
+   int y, w_align;
+
+   w_align = w & ~7;
+
+   dst_itr = dst->pixels + dst_offset;
+
+   if (alpha == 31)
+     for (y = 0; y < h; y++, dst_itr += dst->stride)
+       {
+         DATA16 *d, *s;
+         DATA8 *a;
+         int x;
+
+         s = src->pixels + offset_y[y];
+         a = src->alpha + offset_y[y];
+         pld(s, 0);
+         pld(a, 0);
+         pld(offset_x, 0);
+
+         d = dst_itr;
+         x = 0;
+         while (x < w_align)
+           {
+              pld(s, 32);
+              pld(a, 8);
+              pld(offset_x + x, 32);
+
+              UNROLL8({
+                 int off_x = offset_x[x];
+                 _soft16_pt_blend_transp_solid_mul_color_solid
+                   (d, s[off_x], a[off_x], r, g, b);
+                 x++;
+                 d++;
+              });
+           }
+
+         for (; x < w; x++, d++)
+           _soft16_pt_blend_transp_solid_mul_color_solid
+             (d, s[offset_x[x]], a[offset_x[x]], r, g, b);
+       }
+   else
+     for (y = 0; y < h; y++, dst_itr += dst->stride)
+       {
+         DATA16 *d, *s;
+         DATA8 *a;
+         int x;
+
+         s = src->pixels + offset_y[y];
+         a = src->alpha + offset_y[y];
+         pld(s, 0);
+         pld(a, 0);
+         pld(offset_x, 0);
+
+         d = dst_itr;
+         x = 0;
+         while (x < w_align)
+           {
+              pld(s, 32);
+              pld(a, 8);
+              pld(offset_x + x, 32);
+
+              UNROLL8({
+                 int off_x = offset_x[x];
+                 _soft16_pt_blend_transp_solid_mul_color_transp
+                   (d, s[off_x], a[off_x], alpha, r, g, b);
+                 x++;
+                 d++;
+              });
+           }
+
+         for (; x < w; x++, d++)
+           _soft16_pt_blend_transp_solid_mul_color_transp
+             (d, s[offset_x[x]], a[offset_x[x]], alpha, r, g, b);
+       }
+}
+
+static inline void
+_soft16_image_draw_scaled_mul_color(Soft16_Image *src, Soft16_Image *dst,
+                                   RGBA_Draw_Context *dc,
+                                   int dst_offset, int w, int h,
+                                   int *offset_x, int *offset_y,
+                                   DATA8 r, DATA8 g, DATA8 b, DATA8 a)
+{
+   if ((src->cache_entry.flags.alpha && src->alpha) && 
+       (!dst->cache_entry.flags.alpha))
+      _soft16_image_draw_scaled_transp_solid_mul_color
+         (src, dst, dc, dst_offset, w, h, offset_x, offset_y, r, g, b, a);
+   else if (!dst->cache_entry.flags.alpha)
+      _soft16_image_draw_scaled_solid_solid_mul_color
+         (src, dst, dc, dst_offset, w, h, offset_x, offset_y, r, g, b, a);
+   else
+      fprintf(stderr,
+              "Unsupported draw of scaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITH COLOR MUL 0x%08x\n",
+              src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha, dc->mul.col);
+}
+
+static inline void
+_soft16_image_draw_scaled_mul(Soft16_Image *src, Soft16_Image *dst,
+                             RGBA_Draw_Context *dc,
+                             int dst_offset, int w, int h,
+                             int *offset_x, int *offset_y, DATA8 r, DATA8 g,
+                             DATA8 b, DATA8 a)
+{
+   if ((a == r) && (a == (g >> 1)) && (a == b))
+      _soft16_image_draw_scaled_mul_alpha
+       (src, dst, dc, dst_offset, w, h, offset_x, offset_y, a);
+   else
+      _soft16_image_draw_scaled_mul_color
+       (src, dst, dc, dst_offset, w, h, offset_x, offset_y, r, g, b, a);
+}
+
+void
+soft16_image_draw_scaled_sampled(Soft16_Image *src, Soft16_Image *dst,
+                                RGBA_Draw_Context *dc,
+                                const Evas_Rectangle sr,
+                                const Evas_Rectangle dr,
+                                const Evas_Rectangle cr)
+{
+   int x, y, dst_offset, *offset_x, *offset_y;
+   DATA16 mul_rgb565;
+   DATA8 r, g, b, a;
+
+   if (!dc->mul.use)
+     {
+       r = b = a = 31;
+       g = 63;
+       mul_rgb565 = 0xffff;
+     }
+   else
+     {
+       a = A_VAL(&dc->mul.col) >> 3;
+       if (a == 0)
+         return;
+
+       r = R_VAL(&dc->mul.col) >> 3;
+       g = G_VAL(&dc->mul.col) >> 2;
+       b = B_VAL(&dc->mul.col) >> 3;
+
+       if (r > a) r = a;
+       if (g > (a << 1)) g = (a << 1);
+       if (b > a) b = a;
+
+       mul_rgb565 = (r << 11) || (g << 5) | b;
+     }
+
+   /* pre-calculated scale tables */
+   offset_x = alloca(cr.w * sizeof(*offset_x));
+   for (x = 0; x < cr.w; x++)
+     offset_x[x] = (((x + cr.x - dr.x) * sr.w) / dr.w) + sr.x;
+
+   offset_y = alloca(cr.h * sizeof(*offset_y));
+   for (y = 0; y < cr.h; y++)
+     offset_y[y] = (((((y + cr.y - dr.y) * sr.h) / dr.h) + sr.y)
+                   * src->stride);
+
+   dst_offset = cr.x + (cr.y * dst->stride);
+
+
+   if (mul_rgb565 == 0xffff)
+     _soft16_image_draw_scaled_no_mul
+       (src, dst, dc, dst_offset, cr.w, cr.h, offset_x, offset_y);
+   else
+     _soft16_image_draw_scaled_mul
+       (src, dst, dc, dst_offset, cr.w, cr.h, offset_x, offset_y, r, g, b, a);
+}
diff --git a/src/lib/engines/common_16/evas_soft16_image_unscaled.c b/src/lib/engines/common_16/evas_soft16_image_unscaled.c
new file mode 100644 (file)
index 0000000..f22e269
--- /dev/null
@@ -0,0 +1,290 @@
+#include "evas_common_soft16.h"
+#include "evas_soft16_scanline_blend.c"
+
+static void
+_soft16_image_draw_unscaled_solid_solid(Soft16_Image *src, Soft16_Image *dst,
+                                       RGBA_Draw_Context *dc,
+                                       int src_offset, int dst_offset,
+                                       int w, int h)
+{
+   DATA16 *src_itr, *dst_itr;
+   int y;
+
+   src_itr = src->pixels + src_offset;
+   dst_itr = dst->pixels + dst_offset;
+
+   for (y = 0; y < h; y++)
+     {
+       _soft16_scanline_blend_solid_solid(src_itr, dst_itr, w);
+       src_itr += src->stride;
+       dst_itr += dst->stride;
+     }
+}
+
+static void
+_soft16_image_draw_unscaled_transp_solid(Soft16_Image *src, Soft16_Image *dst,
+                                        RGBA_Draw_Context *dc,
+                                        int src_offset, int dst_offset,
+                                        int w, int h)
+
+{
+   DATA16 *src_itr, *dst_itr;
+   DATA8 *alpha_itr;
+   int y;
+
+   src_itr = src->pixels + src_offset;
+   alpha_itr = src->alpha + src_offset;
+   dst_itr = dst->pixels + dst_offset;
+
+   for (y = 0; y < h; y++)
+     {
+       _soft16_scanline_blend_transp_solid(src_itr, alpha_itr, dst_itr, w);
+       src_itr += src->stride;
+       alpha_itr += src->stride;
+       dst_itr += dst->stride;
+     }
+}
+
+static inline void
+_soft16_image_draw_unscaled_no_mul(Soft16_Image *src, Soft16_Image *dst,
+                                   RGBA_Draw_Context *dc,
+                                   int src_offset, int dst_offset,
+                                   int width, int height)
+{
+   if (src->cache_entry.flags.alpha && (!dst->cache_entry.flags.alpha))
+      _soft16_image_draw_unscaled_transp_solid(src, dst, dc,
+                                               src_offset, dst_offset,
+                                               width, height);
+   else if ((!src->cache_entry.flags.alpha) && (!dst->cache_entry.flags.alpha))
+      _soft16_image_draw_unscaled_solid_solid(src, dst, dc,
+                                              src_offset, dst_offset,
+                                              width, height);
+   else
+      fprintf(stderr,
+              "Unsupported draw of unscaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITHOUT COLOR MUL\n",
+              src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha);
+}
+
+static void
+_soft16_image_draw_unscaled_solid_solid_mul_alpha(Soft16_Image *src,
+                                                  Soft16_Image *dst,
+                                                  RGBA_Draw_Context *dc,
+                                                  int src_offset,
+                                                  int dst_offset,
+                                                  int w, int h, DATA8 a)
+{
+   DATA16 *src_itr, *dst_itr;
+   int y;
+
+   src_itr = src->pixels + src_offset;
+   dst_itr = dst->pixels + dst_offset;
+
+   for (y = 0; y < h; y++)
+     {
+       _soft16_scanline_blend_solid_solid_mul_alpha(src_itr, dst_itr, w, a);
+       src_itr += src->stride;
+       dst_itr += dst->stride;
+     }
+}
+
+static void
+_soft16_image_draw_unscaled_transp_solid_mul_alpha(Soft16_Image *src,
+                                                   Soft16_Image *dst,
+                                                   RGBA_Draw_Context *dc,
+                                                   int src_offset,
+                                                   int dst_offset,
+                                                   int w, int h, DATA8 a)
+
+{
+   DATA16 *src_itr, *dst_itr;
+   DATA8 *alpha_itr;
+   int y;
+
+   src_itr = src->pixels + src_offset;
+   alpha_itr = src->alpha + src_offset;
+   dst_itr = dst->pixels + dst_offset;
+
+   for (y = 0; y < h; y++)
+     {
+       _soft16_scanline_blend_transp_solid_mul_alpha(src_itr, alpha_itr,
+                                                      dst_itr, w, a);
+       src_itr += src->stride;
+       alpha_itr += src->stride;
+       dst_itr += dst->stride;
+     }
+}
+
+static inline void
+_soft16_image_draw_unscaled_mul_alpha(Soft16_Image *src, Soft16_Image *dst,
+                                      RGBA_Draw_Context *dc,
+                                      int src_offset, int dst_offset,
+                                      int width, int height, DATA8 a)
+{
+   if (src->cache_entry.flags.alpha && (!dst->cache_entry.flags.alpha))
+      _soft16_image_draw_unscaled_transp_solid_mul_alpha
+         (src, dst, dc, src_offset, dst_offset, width, height, a);
+   else if ((!src->cache_entry.flags.alpha) && (!dst->cache_entry.flags.alpha))
+      _soft16_image_draw_unscaled_solid_solid_mul_alpha
+         (src, dst, dc, src_offset, dst_offset, width, height, a);
+   else
+      fprintf(stderr,
+              "Unsupported draw of unscaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITH ALPHA MUL %d\n",
+              src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha, A_VAL(&dc->mul.col));
+}
+
+static void
+_soft16_image_draw_unscaled_solid_solid_mul_color(Soft16_Image *src,
+                                                  Soft16_Image *dst,
+                                                  RGBA_Draw_Context *dc,
+                                                  int src_offset,
+                                                  int dst_offset,
+                                                  int w, int h, DATA8 r,
+                                                 DATA8 g, DATA8 b, DATA8 a)
+{
+   DATA16 *src_itr, *dst_itr;
+   int y;
+
+   src_itr = src->pixels + src_offset;
+   dst_itr = dst->pixels + dst_offset;
+
+   if (a == 31)
+      for (y = 0; y < h; y++)
+         {
+            _soft16_scanline_blend_solid_solid_mul_color_solid
+               (src_itr, dst_itr, w, r, g, b);
+            src_itr += src->stride;
+            dst_itr += dst->stride;
+         }
+   else
+      for (y = 0; y < h; y++)
+         {
+            _soft16_scanline_blend_solid_solid_mul_color_transp
+               (src_itr, dst_itr, w, a, r, g, b);
+            src_itr += src->stride;
+            dst_itr += dst->stride;
+         }
+}
+
+static void
+_soft16_image_draw_unscaled_transp_solid_mul_color(Soft16_Image *src,
+                                                   Soft16_Image *dst,
+                                                   RGBA_Draw_Context *dc,
+                                                   int src_offset,
+                                                   int dst_offset,
+                                                   int w, int h, DATA8 r,
+                                                  DATA8 g, DATA8 b, DATA8 a)
+
+{
+   DATA16 *src_itr, *dst_itr;
+   DATA8 *alpha_itr;
+   int y;
+
+   src_itr = src->pixels + src_offset;
+   alpha_itr = src->alpha + src_offset;
+   dst_itr = dst->pixels + dst_offset;
+
+   if (a == 31)
+      for (y = 0; y < h; y++)
+         {
+            _soft16_scanline_blend_transp_solid_mul_color_solid
+               (src_itr, alpha_itr, dst_itr, w, r, g, b);
+            src_itr += src->stride;
+            alpha_itr += src->stride;
+            dst_itr += dst->stride;
+         }
+   else
+      for (y = 0; y < h; y++)
+         {
+            _soft16_scanline_blend_transp_solid_mul_color_transp
+               (src_itr, alpha_itr, dst_itr, w, a, r, g, b);
+            src_itr += src->stride;
+            alpha_itr += src->stride;
+            dst_itr += dst->stride;
+         }
+}
+
+static inline void
+_soft16_image_draw_unscaled_mul_color(Soft16_Image *src, Soft16_Image *dst,
+                                      RGBA_Draw_Context *dc,
+                                      int src_offset, int dst_offset,
+                                      int width, int height,
+                                     DATA8 r, DATA8 g, DATA8 b, DATA8 a)
+{
+   if (src->cache_entry.flags.alpha && (!dst->cache_entry.flags.alpha))
+     _soft16_image_draw_unscaled_transp_solid_mul_color
+       (src, dst, dc, src_offset, dst_offset, width, height, r, g, b, a);
+   else if ((!src->cache_entry.flags.alpha) && (!dst->cache_entry.flags.alpha))
+     _soft16_image_draw_unscaled_solid_solid_mul_color
+       (src, dst, dc, src_offset, dst_offset, width, height, r, g, b, a);
+   else
+      fprintf(stderr,
+              "Unsupported draw of unscaled images src->cache_entry.flags.alpha=%d, "
+              "dst->cache_entry.flags.alpha=%d, WITH COLOR MUL 0x%08x\n",
+              src->cache_entry.flags.alpha, dst->cache_entry.flags.alpha, dc->mul.col);
+}
+
+static inline void
+_soft16_image_draw_unscaled_mul(Soft16_Image *src, Soft16_Image *dst,
+                                RGBA_Draw_Context *dc,
+                                int src_offset, int dst_offset,
+                                int width, int height, DATA8 r, DATA8 g,
+                               DATA8 b, DATA8 a)
+{
+   if ((a == r) && (a == (g >> 1)) && (a == b))
+      _soft16_image_draw_unscaled_mul_alpha(src, dst, dc, src_offset,
+                                            dst_offset, width, height, a);
+   else
+      _soft16_image_draw_unscaled_mul_color(src, dst, dc, src_offset,
+                                            dst_offset, width, height,
+                                           r, g, b, a);
+}
+
+void
+soft16_image_draw_unscaled(Soft16_Image *src, Soft16_Image *dst,
+                          RGBA_Draw_Context *dc,
+                          const Evas_Rectangle sr,
+                          const Evas_Rectangle dr,
+                          const Evas_Rectangle cr)
+{
+   int src_offset_rows, src_offset, dst_offset;
+   DATA16 mul_rgb565;
+   DATA8 r, g, b, a;
+
+   if (!dc->mul.use)
+     {
+       r = b = a = 31;
+       g = 63;
+       mul_rgb565 = 0xffff;
+     }
+   else
+     {
+       a = A_VAL(&dc->mul.col) >> 3;
+       if (a == 0)
+         return;
+
+       r = R_VAL(&dc->mul.col) >> 3;
+       g = G_VAL(&dc->mul.col) >> 2;
+       b = B_VAL(&dc->mul.col) >> 3;
+
+       if (r > a) r = a;
+       if (g > (a << 1)) g = (a << 1);
+       if (b > a) b = a;
+
+       mul_rgb565 = (r << 11) || (g << 5) | b;
+     }
+
+
+   src_offset_rows = (cr.y - dr.y) + sr.y;
+   src_offset = (src_offset_rows * src->stride) + (cr.x - dr.x) + sr.x;
+
+   dst_offset = cr.x + (cr.y * dst->stride);
+
+   if (mul_rgb565 == 0xffff)
+       _soft16_image_draw_unscaled_no_mul(src, dst, dc, src_offset, dst_offset,
+                                          cr.w, cr.h);
+   else
+       _soft16_image_draw_unscaled_mul(src, dst, dc, src_offset, dst_offset,
+                                       cr.w, cr.h, r, g, b, a);
+}
diff --git a/src/lib/engines/common_16/evas_soft16_line.c b/src/lib/engines/common_16/evas_soft16_line.c
new file mode 100644 (file)
index 0000000..dd80afa
--- /dev/null
@@ -0,0 +1,444 @@
+#include "evas_common_soft16.h"
+#include "evas_soft16_scanline_fill.c"
+
+/*
+ * All functions except by soft16_line_draw() expect x0 <= x1.
+ */
+
+static inline int
+_in_range(int value, int min, int max)
+{
+   return min <= value && value <= max;
+}
+
+static inline int
+_is_xy_inside_clip(int x, int y, const struct RGBA_Draw_Context_clip clip)
+{
+   if (!clip.use)
+     return 1;
+
+   if (!_in_range(x, clip.x, clip.x + clip.w - 1))
+     return 0;
+
+   if (!_in_range(y, clip.y, clip.y + clip.h - 1))
+     return 0;
+
+   return 1;
+}
+
+static inline int
+_is_x_inside_clip(int x, const struct RGBA_Draw_Context_clip clip)
+{
+   if (!clip.use)
+     return 1;
+
+   return _in_range(x, clip.x, clip.x + clip.w - 1);
+}
+
+static inline int
+_is_y_inside_clip(int y, const struct RGBA_Draw_Context_clip clip)
+{
+   if (!clip.use)
+     return 1;
+
+   return _in_range(y, clip.y, clip.y + clip.h - 1);
+}
+
+static inline int
+_is_xy_inside_rect(int x, int y, int w, int h)
+{
+   return _in_range(x, 0, w - 1) && _in_range(y, 0, h - 1);
+}
+
+static inline int
+_is_empty_clip(const struct RGBA_Draw_Context_clip clip)
+{
+   return clip.w < 1 || clip.h < 1;
+}
+
+static void
+_soft16_line_point(Soft16_Image *dst, RGBA_Draw_Context *dc, int x, int y)
+{
+   DATA16 rgb565, *dst_itr;
+   DATA8 alpha;
+
+   if (!_is_xy_inside_rect(x, y, dst->cache_entry.w, dst->cache_entry.h))
+     return;
+
+   if (!_is_xy_inside_clip(x, y, dc->clip))
+     return;
+
+   dst_itr = dst->pixels + (dst->stride * y) + x;
+   alpha = A_VAL(&dc->col.col) >> 3;
+   rgb565 = RGB_565_FROM_COMPONENTS(R_VAL(&dc->col.col),
+                                   G_VAL(&dc->col.col),
+                                   B_VAL(&dc->col.col));
+
+   if (alpha == 31)
+     _soft16_pt_fill_solid_solid(dst_itr, rgb565);
+   else if (alpha > 0)
+     {
+       DATA32 rgb565_unpack;
+
+       rgb565_unpack = RGB_565_UNPACK(rgb565);
+       alpha++;
+       _soft16_pt_fill_transp_solid(dst_itr, rgb565_unpack, alpha);
+     }
+}
+
+static void
+_soft16_line_horiz(Soft16_Image *dst, RGBA_Draw_Context *dc, int x0, int x1, int y)
+{
+   DATA16 rgb565, *dst_itr;
+   DATA8 alpha;
+   int w;
+
+   if (!_is_y_inside_clip(y, dc->clip))
+     return;
+
+   if (x0 < dc->clip.x)
+     x0 = dc->clip.x;
+
+   if (x1 >= dc->clip.x + dc->clip.w)
+     x1 = dc->clip.x + dc->clip.w - 1;
+
+   w = x1 - x0;
+   if (w < 1)
+     return;
+
+   dst_itr = dst->pixels + (dst->stride * y) + x0;
+   alpha = A_VAL(&dc->col.col) >> 3;
+   rgb565 = RGB_565_FROM_COMPONENTS(R_VAL(&dc->col.col),
+                                   G_VAL(&dc->col.col),
+                                   B_VAL(&dc->col.col));
+
+   if (alpha == 31)
+     _soft16_scanline_fill_solid_solid(dst_itr, w, rgb565);
+   else if (alpha > 0)
+     {
+       DATA32 rgb565_unpack;
+
+       rgb565_unpack = RGB_565_UNPACK(rgb565);
+       alpha++;
+       _soft16_scanline_fill_transp_solid(dst_itr, w, rgb565_unpack, alpha);
+     }
+}
+
+static void
+_soft16_line_vert(Soft16_Image *dst, RGBA_Draw_Context *dc, int x, int y0, int y1)
+{
+   DATA16 rgb565, *dst_itr;
+   DATA8 alpha;
+   int h;
+
+   if (!_is_x_inside_clip(x, dc->clip))
+     return;
+
+   if (y1 < y0)
+     {
+       int t;
+       t = y0;
+       y0 = y1;
+       y1 = t;
+     }
+
+   if (y0 < dc->clip.y)
+     y0 = dc->clip.y;
+
+   if (y1 >= dc->clip.y + dc->clip.h)
+     y1 = dc->clip.y + dc->clip.h - 1;
+
+   h = y1 - y0;
+   if (h < 1)
+     return;
+
+   dst_itr = dst->pixels + (dst->stride * y0) + x;
+   alpha = A_VAL(&dc->col.col) >> 3;
+   rgb565 = RGB_565_FROM_COMPONENTS(R_VAL(&dc->col.col),
+                                   G_VAL(&dc->col.col),
+                                   B_VAL(&dc->col.col));
+
+   if (alpha == 31)
+     {
+       for (; h > 0; h--, dst_itr += dst->stride)
+         _soft16_pt_fill_solid_solid(dst_itr, rgb565);
+     }
+   else if (alpha > 0)
+     {
+       DATA32 rgb565_unpack;
+
+       rgb565_unpack = RGB_565_UNPACK(rgb565);
+       alpha++;
+
+       for (; h > 0; h--, dst_itr += dst->stride)
+         _soft16_pt_fill_transp_solid(dst_itr, rgb565_unpack, alpha);
+     }
+}
+
+static inline void
+_soft16_line_45deg_adjust_boundaries(const struct RGBA_Draw_Context_clip clip, int *p_x0, int *p_y0, int *p_x1, int *p_y1)
+{
+   int diff, dy, x0, y0, x1, y1;
+
+   x0 = *p_x0;
+   y0 = *p_y0;
+   x1 = *p_x1;
+   y1 = *p_y1;
+
+   dy = y1 - y0;
+
+   diff = clip.x - x0;
+   if (diff > 0)
+     {
+       x0 = clip.x;
+       y0 += (dy > 0) ? diff : -diff;
+     }
+
+   diff = x1 - (clip.x + clip.w);
+   if (diff > 0)
+     {
+       x1 = clip.x + clip.w;
+       y1 += (dy > 0) ? -diff : diff;
+     }
+
+   if (dy > 0)
+     {
+       diff = clip.y - y0;
+       if (diff > 0)
+         {
+            y0 = clip.y;
+            x0 += diff;
+         }
+
+       diff = y1 - (clip.y + clip.h);
+       if (diff > 0)
+         {
+            y1 = clip.y + clip.h;
+            x1 -= diff;
+         }
+     }
+   else
+     {
+       diff = clip.y - y1;
+       if (diff > 0)
+         {
+            y1 = clip.y;
+            x1 -= diff;
+         }
+
+       diff = y0 - (clip.y + clip.h - 1);
+       if (diff > 0)
+         {
+            y0 = clip.y + clip.h - 1;
+            x0 += diff;
+         }
+     }
+
+   *p_x0 = x0;
+   *p_y0 = y0;
+   *p_x1 = x1;
+   *p_y1 = y1;
+}
+
+static void
+_soft16_line_45deg(Soft16_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1)
+{
+   int dy, step_dst_itr, len;
+   DATA8 alpha;
+   DATA16 *dst_itr, rgb565;
+
+   alpha = A_VAL(&dc->col.col) >> 3;
+   if (alpha < 1)
+     return;
+
+   rgb565 = RGB_565_FROM_COMPONENTS(R_VAL(&dc->col.col),
+                                   G_VAL(&dc->col.col),
+                                   B_VAL(&dc->col.col));
+
+   dy = y1 - y0;
+   step_dst_itr = 1 + ((dy > 0) ? dst->stride : -dst->stride);
+
+   _soft16_line_45deg_adjust_boundaries(dc->clip, &x0, &y0, &x1, &y1);
+
+   len = (dy > 0) ? (y1 - y0) : (y0 - y1);
+   if (len < 1)
+     return;
+
+   dst_itr = dst->pixels + dst->stride * y0 + x0;
+   if (alpha == 31)
+     {
+       for (; len > 0; len--, dst_itr += step_dst_itr)
+         _soft16_pt_fill_solid_solid(dst_itr, rgb565);
+     }
+   else
+     {
+       DATA32 rgb565_unpack;
+
+       rgb565_unpack = RGB_565_UNPACK(rgb565);
+       alpha++;
+       for (; len > 0; len--, dst_itr += step_dst_itr)
+         _soft16_pt_fill_transp_solid(dst_itr, rgb565_unpack, alpha);
+     }
+}
+
+static always_inline void
+_soft16_line_aliased_pt(DATA16 *dst_itr, DATA16 rgb565, DATA32 rgb565_unpack, DATA8 alpha)
+{
+   if (alpha == 32)
+     _soft16_pt_fill_solid_solid(dst_itr, rgb565);
+   else
+     _soft16_pt_fill_transp_solid(dst_itr, rgb565_unpack, alpha);
+}
+
+static void
+_soft16_line_aliased(Soft16_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1)
+{
+   int dx, dy, step_y, step_dst_itr;
+   DATA32 rgb565_unpack;
+   DATA16 rgb565;
+   DATA8 alpha;
+
+   alpha = A_VAL(&dc->col.col) >> 3;
+   if (alpha == 0)
+     return;
+   alpha++;
+
+   rgb565 = RGB_565_FROM_COMPONENTS(R_VAL(&dc->col.col),
+                                   G_VAL(&dc->col.col),
+                                   B_VAL(&dc->col.col));
+   rgb565_unpack = RGB_565_UNPACK(rgb565);
+
+   dx = x1 - x0;
+   dy = y1 - y0;
+
+   if (dy >= 0)
+     {
+       step_y = 1;
+       step_dst_itr = dst->stride;
+     }
+   else
+     {
+       dy = -dy;
+       step_y = -1;
+       step_dst_itr = -dst->stride;
+     }
+
+   if (dx > dy)
+     {
+       DATA16 *dst_itr;
+       int e, x, y;
+
+       e = - (dx / 2);
+       y = y0;
+       dst_itr = dst->pixels + dst->stride * y0 + x0;
+       for (x=x0; x <= x1; x++, dst_itr++)
+         {
+            if (_is_xy_inside_clip(x, y, dc->clip))
+              _soft16_line_aliased_pt(dst_itr, rgb565, rgb565_unpack, alpha);
+
+            e += dy;
+            if (e >= 0)
+              {
+                 dst_itr += step_dst_itr;
+                 y += step_y;
+                 e -= dx;
+              }
+         }
+     }
+   else
+     {
+       DATA16 *dst_itr;
+       int e, x, y;
+
+       e = - (dy / 2);
+       x = x0;
+       dst_itr = dst->pixels + dst->stride * y0 + x0;
+       for (y=y0; y != y1; y += step_y, dst_itr += step_dst_itr)
+         {
+            if (_is_xy_inside_clip(x, y, dc->clip))
+              _soft16_line_aliased_pt(dst_itr, rgb565, rgb565_unpack, alpha);
+
+            e += dx;
+            if (e >= 0)
+              {
+                 dst_itr++;
+                 x++;
+                 e -= dy;
+              }
+         }
+     }
+}
+
+void
+soft16_line_draw(Soft16_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1)
+{
+   struct RGBA_Draw_Context_clip c_bkp, c_tmp;
+   int dx, dy;
+   int  x, y, w, h;
+
+   c_tmp.use = 1;
+   c_tmp.x = 0;
+   c_tmp.y = 0;
+   c_tmp.w = dst->cache_entry.w;
+   c_tmp.h = dst->cache_entry.h;
+
+   /* save out clip info */
+   c_bkp = dc->clip;
+   if (c_bkp.use)
+     {
+       RECTS_CLIP_TO_RECT(c_tmp.x, c_tmp.y, c_tmp.w, c_tmp.h,
+                          c_bkp.x, c_bkp.y, c_bkp.w, c_bkp.h);
+       if (_is_empty_clip(c_tmp))
+         return;
+     }
+
+   x = MIN(x0, x1);
+   y = MIN(y0, y1);
+   w = MAX(x0, x1) - x + 1;
+   h = MAX(y0, y1) - y + 1;
+
+   RECTS_CLIP_TO_RECT(c_tmp.x, c_tmp.y, c_tmp.w, c_tmp.h, x, y, w, h);
+   if (_is_empty_clip(c_tmp))
+     return;
+
+   /* Check if the line doesn't cross the clip area */
+   if (x0 < c_tmp.x && x1 < c_tmp.x)
+     return;
+   if (x0 >= c_tmp.x + c_tmp.w && x1 >= c_tmp.x + c_tmp.w)
+     return;
+   if (y0 < c_tmp.y && y1 < c_tmp.y)
+     return;
+   if (y0 >= c_tmp.y + c_tmp.h && y1 >= c_tmp.y + c_tmp.h)
+     return;
+
+   dc->clip = c_tmp;
+   dx = x1 - x0;
+   dy = y1 - y0;
+
+   if (dx < 0)
+     {
+       int t;
+
+       t = x0;
+       x0 = x1;
+       x1 = t;
+
+       t = y0;
+       y0 = y1;
+       y1 = t;
+     }
+
+   if (dx == 0 && dy == 0)
+     _soft16_line_point(dst, dc, x0, y0);
+   else if (dx == 0)
+     _soft16_line_vert(dst, dc, x0, y0, y1);
+   else if (dy == 0)
+     _soft16_line_horiz(dst, dc, x0, x1, y0);
+   else if (dy == dx || dy == -dx)
+     _soft16_line_45deg(dst, dc, x0, y0, x1, y1);
+   else
+     _soft16_line_aliased(dst, dc, x0, y0, x1, y1);
+
+   /* restore clip info */
+   dc->clip = c_bkp;
+}
diff --git a/src/lib/engines/common_16/evas_soft16_main.c b/src/lib/engines/common_16/evas_soft16_main.c
new file mode 100644 (file)
index 0000000..cb93d16
--- /dev/null
@@ -0,0 +1,599 @@
+#include "evas_common_soft16.h"
+
+static Evas_Cache_Image *eci = NULL;
+static int               reference = 0;
+
+static Image_Entry      *_evas_common_soft16_image_new(void);
+static void              _evas_common_soft16_image_delete(Image_Entry *ie);
+
+static int               _evas_common_soft16_image_surface_alloc(Image_Entry *ie, int w, int h);
+static void              _evas_common_soft16_image_surface_delete(Image_Entry *ie);
+static DATA32          *_evas_common_soft16_image_surface_pixels(Image_Entry *ie);
+
+static int               _evas_common_load_soft16_image_from_file(Image_Entry *ie);
+static void              _evas_common_soft16_image_unload(Image_Entry *ie);
+
+static void              _evas_common_soft16_image_dirty_region(Image_Entry *im, int x, int y, int w, int h);
+static int               _evas_common_soft16_image_dirty(Image_Entry *ie_dst, const Image_Entry *ie_src);
+
+static int               _evas_common_soft16_image_ram_usage(Image_Entry *ie);
+
+static int               _evas_common_soft16_image_size_set(Image_Entry *ie_dst, const Image_Entry *ie_im, int w, int h);
+static int               _evas_common_soft16_image_from_copied_data(Image_Entry* ie_dst, int w, int h, DATA32 *image_data, int alpha, int cspace);
+static int               _evas_common_soft16_image_from_data(Image_Entry* ie_dst, int w, int h, DATA32 *image_data, int alpha, int cspace);
+static int               _evas_common_soft16_image_colorspace_set(Image_Entry* ie_dst, int cspace);
+
+static int               _evas_common_load_soft16_image_data_from_file(Image_Entry *ie);
+
+static void
+_evas_common_soft16_image_debug(const char* context, Image_Entry *eim)
+{
+   fprintf(stderr, "[16] %p = [%s] {%s,%s} %i [%i|%i]\n", eim, context, eim->file, eim->key, eim->references, eim->w, eim->h);
+}
+
+static const Evas_Cache_Image_Func      _evas_common_soft16_image_func =
+{
+   _evas_common_soft16_image_new,
+   _evas_common_soft16_image_delete,
+   _evas_common_soft16_image_surface_alloc,
+   _evas_common_soft16_image_surface_delete,
+   _evas_common_soft16_image_surface_pixels,
+   _evas_common_load_soft16_image_from_file,
+   _evas_common_soft16_image_unload,
+   _evas_common_soft16_image_dirty_region,
+   _evas_common_soft16_image_dirty,
+   _evas_common_soft16_image_size_set,
+   _evas_common_soft16_image_from_copied_data,
+   _evas_common_soft16_image_from_data,
+   _evas_common_soft16_image_colorspace_set,
+   _evas_common_load_soft16_image_data_from_file,
+   _evas_common_soft16_image_ram_usage,
+/*    _evas_common_soft16_image_debug */
+   NULL
+};
+
+EAPI void
+evas_common_soft16_image_init(void)
+{
+   if (!eci)
+     eci = evas_cache_image_init(&_evas_common_soft16_image_func);
+   reference++;
+}
+
+EAPI void
+evas_common_soft16_image_shutdown(void)
+{
+   if (--reference == 0)
+     {
+// DISABLE for now - something wrong with cache shutdown freeing things
+// still in use - rage_thumb segv's now.
+// 
+// actually - i think i see it. cache ref goes to 0 (and thus gets freed)
+// because in eng_setup() when a buffer changes size it is FIRST freed
+// THEN allocated again - thus brignhjing ref to 0 then back to 1 immediately
+// where it should stay at 1. - see evas_engine.c in the buffer enigne for
+// example. eng_output_free() is called BEFORE _output_setup(). although this
+// is only a SIGNE of the problem. we can patch this up with either freeing
+// after the setup (so we just pt a ref of 2 then back to 1), or just 
+// evas_common_image_init() at the start and evas_common_image_shutdown()
+// after it all. really ref 0 should only be reached when no more canvases
+// with no more objects exist anywhere.
+//        evas_cache_image_shutdown(eci);
+//        eci = NULL;
+     }
+}
+
+EAPI Evas_Cache_Image *
+evas_common_soft16_image_cache_get(void)
+{
+   return eci;
+}
+
+static Image_Entry *
+_evas_common_soft16_image_new(void)
+{
+   Soft16_Image *im;
+
+   im = calloc(1, sizeof(Soft16_Image));
+   if (!im) return NULL;
+
+   im->stride = -1;
+
+   return (Image_Entry *) im;
+}
+
+static void
+_evas_common_soft16_image_delete(Image_Entry *ie)
+{
+   memset(ie, 0xFF, sizeof (Soft16_Image));
+   free(ie);
+}
+
+static int
+_evas_common_soft16_image_surface_alloc(Image_Entry *ie, int w, int h)
+{
+   Soft16_Image *im = (Soft16_Image *) ie;
+
+   if (im->stride < 0) im->stride = _calc_stride(w);
+
+   im->pixels = realloc(im->pixels, IMG_BYTE_SIZE(im->stride, h, ie->flags.alpha));
+   if (!im->pixels) return -1;
+
+   if (ie->flags.alpha)
+     {
+        im->alpha = (DATA8 *)(im->pixels + (im->stride * h));
+        im->flags.free_alpha = 0;
+     }
+   im->flags.free_pixels = 1;
+
+   return 0;
+}
+
+static void
+_evas_common_soft16_image_surface_delete(Image_Entry *ie)
+{
+   Soft16_Image *im = (Soft16_Image *) ie;
+
+   if (im->flags.free_pixels)
+     free(im->pixels);
+   im->pixels = NULL;
+   im->flags.free_pixels = 0;
+
+   if (im->flags.free_alpha)
+     free(im->alpha);
+   im->alpha = NULL;
+   im->flags.free_alpha = 0;
+}
+
+static DATA32 *
+_evas_common_soft16_image_surface_pixels(Image_Entry *ie)
+{
+   abort();
+
+   return NULL;
+}
+
+static int
+_evas_common_load_soft16_image_from_file(Image_Entry *ie)
+{
+   Soft16_Image *sim = (Soft16_Image *) ie;
+   RGBA_Image   *im;
+   int           error = 0;
+
+   im = (RGBA_Image *) evas_cache_image_request(evas_common_image_cache_get(), sim->cache_entry.file, sim->cache_entry.key, &sim->cache_entry.load_opts, &error);
+   sim->source = im;
+   if (!sim->source) return -1;
+
+   sim->cache_entry.w = sim->source->cache_entry.w;
+   sim->cache_entry.h = sim->source->cache_entry.h;
+   ie->flags.alpha = im->cache_entry.flags.alpha;
+   if (sim->stride < 0) sim->stride = _calc_stride(sim->cache_entry.w);
+
+   return 0;
+}
+
+static void
+_evas_common_soft16_image_unload(Image_Entry *ie)
+{
+}
+
+static void
+_evas_common_soft16_image_dirty_region(Image_Entry *im, int x, int y, int w, int h)
+{
+}
+
+static int
+_evas_common_soft16_image_dirty(Image_Entry *ie_dst, const Image_Entry *ie_src)
+{
+   Soft16_Image *dst = (Soft16_Image *) ie_dst;
+   Soft16_Image *src = (Soft16_Image *) ie_src;
+
+   evas_cache_image_load_data(&src->cache_entry);
+   evas_cache_image_surface_alloc(&dst->cache_entry,
+                                  src->cache_entry.w, src->cache_entry.h);
+
+/*    evas_common_blit_rectangle(src, dst, 0, 0, src->cache_entry.w, src->cache_entry.h, 0, 0); */
+
+   return 0;
+}
+
+static int
+_evas_common_soft16_image_ram_usage(Image_Entry *ie)
+{
+   Soft16_Image *im = (Soft16_Image *) ie;
+
+   if (im->pixels && im->flags.free_pixels)
+     return IMG_BYTE_SIZE(im->stride, im->cache_entry.h, ie->flags.alpha);
+   return 0;
+}
+
+static int
+_evas_common_soft16_image_size_set(Image_Entry *ie_dst, const Image_Entry *ie_im, int w, int h)
+{
+   Soft16_Image *dst = (Soft16_Image *) ie_dst;
+   Soft16_Image *im = (Soft16_Image *) ie_im;
+
+   dst->flags = im->flags;
+
+   return 0;
+}
+
+static int
+_evas_common_soft16_image_from_data(Image_Entry* ie_dst, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Soft16_Image *im = (Soft16_Image *) ie_dst;
+
+   /* FIXME: handle colorspace */
+   ie_dst->w = w;
+   ie_dst->h = h;
+   ie_dst->flags.alpha = alpha;
+
+   im->flags.free_pixels = 0;
+   im->flags.free_alpha = 0;
+
+   /* FIXME: That's bad, the application must be aware of the engine internal. */
+   im->pixels = (DATA16 *) image_data;
+   if (ie_dst->flags.alpha)
+     im->alpha = (DATA8 *)(im->pixels + (im->stride * h));
+
+   return 0;
+}
+
+static int
+_evas_common_soft16_image_from_copied_data(Image_Entry* ie_dst, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Soft16_Image *im = (Soft16_Image *) ie_dst;
+
+   /* FIXME: handle colorspace */
+   if (image_data)
+     memcpy(im->pixels, image_data, IMG_BYTE_SIZE(im->stride, h, ie_dst->flags.alpha));
+   else
+     memset(im->pixels, 0, IMG_BYTE_SIZE(im->stride, h, ie_dst->flags.alpha));
+
+   return 0;
+}
+
+static int
+_evas_common_soft16_image_colorspace_set(Image_Entry* ie_dst, int cspace)
+{
+   /* FIXME: handle colorspace */
+   return 0;
+}
+
+static int
+_evas_common_load_soft16_image_data_from_file(Image_Entry *ie)
+{
+   Soft16_Image *im = (Soft16_Image *) ie;
+
+   if (im->pixels) return 0;
+   if (!im->source) return -1;
+
+   evas_cache_image_load_data(&im->source->cache_entry);
+   if (im->source->image.data)
+     {
+        DATA32 *sp;
+
+        evas_cache_image_surface_alloc(&im->cache_entry,
+                                       im->source->cache_entry.w,
+                                       im->source->cache_entry.h);
+
+        sp = im->source->image.data;
+        if (im->alpha)
+          soft16_image_convert_from_rgba(im, sp);
+        else
+          soft16_image_convert_from_rgb(im, sp);
+     }
+   evas_cache_image_drop(&im->source->cache_entry);
+   im->source = NULL;
+
+   return 0;
+}
+
+/* Soft16_Image * */
+/* soft16_image_new(int w, int h, int stride, int have_alpha, DATA16 *pixels, */
+/*              int copy) */
+/* { */
+/*    Soft16_Image *im; */
+
+/*    if (stride < 0) stride = _calc_stride(w); */
+
+/*    im = soft16_image_alloc(w, h, stride, have_alpha, copy); */
+/*    if (!im) return NULL; */
+
+/*    if (pixels) */
+/*      { */
+/*     if (copy) */
+/*       memcpy(im->pixels, pixels, IMG_BYTE_SIZE(stride, h, have_alpha)); */
+/*     else */
+/*       { */
+/*          im->pixels = pixels; */
+/*          if (have_alpha) im->alpha = (DATA8 *)(im->pixels + (stride * h)); */
+/*       } */
+/*      } */
+/*    return im; */
+/* } */
+
+static inline void
+_get_clip(const RGBA_Draw_Context *dc, const Soft16_Image *im,
+         Evas_Rectangle *clip)
+{
+   if (dc->clip.use)
+     {
+       clip->x = dc->clip.x;
+       clip->y = dc->clip.y;
+       clip->w = dc->clip.w;
+       clip->h = dc->clip.h;
+       if (clip->x < 0)
+         {
+            clip->w += clip->x;
+            clip->x = 0;
+         }
+       if (clip->y < 0)
+         {
+            clip->h += clip->y;
+            clip->y = 0;
+         }
+       if ((clip->x + clip->w) > im->cache_entry.w) clip->w = im->cache_entry.w - clip->x;
+       if ((clip->y + clip->h) > im->cache_entry.h) clip->h = im->cache_entry.h - clip->y;
+     }
+   else
+     {
+       clip->x = 0;
+       clip->y = 0;
+       clip->w = im->cache_entry.w;
+       clip->h = im->cache_entry.h;
+     }
+}
+
+static inline int
+_is_empty_rectangle(const Evas_Rectangle *r)
+{
+   return (r->w < 1) || (r->h < 1);
+}
+
+static inline void
+_shrink(int *s_pos, int *s_size, int pos, int size)
+{
+   int d;
+
+   d = (*s_pos) - pos;
+   if (d < 0)
+     {
+       (*s_size) += d;
+       (*s_pos) = pos;
+     }
+
+   d = size + pos - (*s_pos);
+   if ((*s_size) > d)
+     (*s_size) = d;
+}
+
+static int
+_soft16_adjust_areas(Evas_Rectangle *src,
+                    int src_max_x, int src_max_y,
+                    Evas_Rectangle *dst,
+                    int dst_max_x, int dst_max_y,
+                    Evas_Rectangle *dst_clip)
+{
+   if (_is_empty_rectangle(src) ||
+       _is_empty_rectangle(dst) ||
+       _is_empty_rectangle(dst_clip))
+     return 0;
+
+   /* shrink clip */
+   _shrink(&dst_clip->x, &dst_clip->w, dst->x, dst->w);
+   _shrink(&dst_clip->y, &dst_clip->h, dst->y, dst->h);
+   if (_is_empty_rectangle(dst_clip)) return 0;
+
+   /* sanitise x */
+   if (src->x < 0)
+     {
+       dst->x -= (src->x * dst->w) / src->w;
+       dst->w += (src->x * dst->w) / src->w;
+       src->w += src->x;
+       src->x = 0;
+     }
+   if (src->x >= src_max_x) return 0;
+   if ((src->x + src->w) > src_max_x)
+     {
+       dst->w = (dst->w * (src_max_x - src->x)) / (src->w);
+       src->w = src_max_x - src->x;
+     }
+   if (dst->w <= 0) return 0;
+   if (src->w <= 0) return 0;
+   if (dst_clip->x < 0)
+     {
+       dst_clip->w += dst_clip->x;
+       dst_clip->x = 0;
+     }
+   if (dst_clip->w <= 0) return 0;
+   if (dst_clip->x >= dst_max_x) return 0;
+
+   _shrink(&dst_clip->x, &dst_clip->w, 0, dst_max_x);
+   if (dst_clip->w <= 0) return 0;
+
+   /* sanitise y */
+   if (src->y < 0)
+     {
+       dst->y -= (src->y * dst->h) / src->h;
+       dst->h += (src->y * dst->h) / src->h;
+       src->h += src->y;
+       src->y = 0;
+     }
+   if (src->y >= src_max_y) return 0;
+   if ((src->y + src->h) > src_max_y)
+     {
+       dst->h = (dst->h * (src_max_y - src->y)) / (src->h);
+       src->h = src_max_y - src->y;
+     }
+   if (dst->h <= 0) return 0;
+   if (src->h <= 0) return 0;
+   if (dst_clip->y < 0)
+     {
+       dst_clip->h += dst_clip->y;
+       dst_clip->y = 0;
+     }
+   if (dst_clip->h <= 0) return 0;
+   if (dst_clip->y >= dst_max_y) return 0;
+
+   _shrink(&dst_clip->y, &dst_clip->h, 0, dst_max_y);
+   if (dst_clip->h <= 0) return 0;
+
+   return 1;
+}
+
+static void
+_soft16_image_draw_sampled_int(Soft16_Image *src, Soft16_Image *dst,
+                              RGBA_Draw_Context *dc,
+                              Evas_Rectangle sr, Evas_Rectangle dr)
+{
+   Evas_Rectangle cr;
+
+   if (!(RECTS_INTERSECT(dr.x, dr.y, dr.w, dr.h, 0, 0, dst->cache_entry.w, dst->cache_entry.h)))
+     return;
+   if (!(RECTS_INTERSECT(sr.x, sr.y, sr.w, sr.h, 0, 0, src->cache_entry.w, src->cache_entry.h)))
+     return;
+
+   _get_clip(dc, dst, &cr);
+   if (!_soft16_adjust_areas(&sr, src->cache_entry.w, src->cache_entry.h, &dr, dst->cache_entry.w, dst->cache_entry.h, &cr))
+     return;
+
+   if ((dr.w == sr.w) && (dr.h == sr.h))
+     soft16_image_draw_unscaled(src, dst, dc, sr, dr, cr);
+   else
+     soft16_image_draw_scaled_sampled(src, dst, dc, sr, dr, cr);
+}
+
+EAPI void
+soft16_image_draw(Soft16_Image *src, Soft16_Image *dst,
+                 RGBA_Draw_Context *dc,
+                 int src_region_x, int src_region_y,
+                 int src_region_w, int src_region_h,
+                 int dst_region_x, int dst_region_y,
+                 int dst_region_w, int dst_region_h,
+                 int smooth)
+{
+   Evas_Rectangle sr, dr;
+   Cutout_Rects *rects;
+   Cutout_Rect  *r;
+   struct RGBA_Draw_Context_clip clip_bkp;
+   int i;
+
+   /* handle cutouts here! */
+   dr.x = dst_region_x;
+   dr.y = dst_region_y;
+   dr.w = dst_region_w;
+   dr.h = dst_region_h;
+
+   if (_is_empty_rectangle(&dr)) return;
+   if (!(RECTS_INTERSECT(dr.x, dr.y, dr.w, dr.h, 0, 0, dst->cache_entry.w, dst->cache_entry.h)))
+     return;
+
+   sr.x = src_region_x;
+   sr.y = src_region_y;
+   sr.w = src_region_w;
+   sr.h = src_region_h;
+
+   if (_is_empty_rectangle(&sr)) return;
+   if (!(RECTS_INTERSECT(sr.x, sr.y, sr.w, sr.h, 0, 0, src->cache_entry.w, src->cache_entry.h)))
+     return;
+
+   /* no cutouts - cut right to the chase */
+   if (!dc->cutout.rects)
+     {
+       _soft16_image_draw_sampled_int(src, dst, dc, sr, dr);
+       return;
+     }
+
+   /* save out clip info */
+   clip_bkp = dc->clip;
+   evas_common_draw_context_clip_clip(dc, 0, 0, dst->cache_entry.w, dst->cache_entry.h);
+   evas_common_draw_context_clip_clip(dc, dst_region_x, dst_region_y, dst_region_w, dst_region_h);
+   /* our clip is 0 size.. abort */
+   if ((dc->clip.w <= 0) || (dc->clip.h <= 0))
+     {
+       dc->clip = clip_bkp;
+       return;
+     }
+   rects = evas_common_draw_context_apply_cutouts(dc);
+   for (i = 0; i < rects->active; i++)
+     {
+       r = rects->rects + i;
+       evas_common_draw_context_set_clip(dc, r->x, r->y, r->w, r->h);
+       _soft16_image_draw_sampled_int(src, dst, dc, sr, dr);
+     }
+   evas_common_draw_context_apply_clear_cutouts(rects);
+   dc->clip = clip_bkp;
+}
+
+EAPI Soft16_Image *
+soft16_image_alpha_set(Soft16_Image *im, int have_alpha)
+{
+   Soft16_Image   *new_im;
+
+   if (im->cache_entry.flags.alpha == have_alpha) return im;
+
+   new_im = (Soft16_Image *) evas_cache_image_alone(&im->cache_entry);
+
+   new_im->cache_entry.flags.alpha = have_alpha;
+
+   if (im->cache_entry.w > 0
+       && im->cache_entry.h)
+     new_im = (Soft16_Image *) evas_cache_image_size_set(&new_im->cache_entry, im->cache_entry.w, im->cache_entry.h);
+
+   return new_im;
+}
+
+/* Soft16_Image * */
+/* soft16_image_size_set(Soft16_Image *old_im, int w, int h) */
+/* { */
+/*    Soft16_Image *new_im; */
+/*    DATA16 *dp, *sp; */
+/*    int i, cw, ch, ew; */
+
+/*    if ((old_im->cache_entry.w == w) && (old_im->cache_entry.h == h)) return old_im; */
+
+/*    new_im = soft16_image_new(w, h, -1, old_im->flags.have_alpha, NULL, 1); */
+
+/*    if (old_im->cache_entry.w < new_im->cache_entry.w) */
+/*      cw = old_im->cache_entry.w; */
+/*    else */
+/*      cw = new_im->cache_entry.w; */
+
+/*    ew = new_im->cache_entry.w - cw; */
+
+/*    if (old_im->cache_entry.h < new_im->cache_entry.h) */
+/*      ch = old_im->cache_entry.h; */
+/*    else */
+/*      ch = new_im->cache_entry.h; */
+
+/*    dp = new_im->pixels; */
+/*    sp = old_im->pixels; */
+/*    for (i = 0; i < ch; i++) */
+/*      { */
+/*     memcpy(dp, sp, cw * sizeof(DATA16)); */
+/*     if (ew > 0) memset(dp, 0, ew * sizeof(DATA16)); */
+
+/*     dp += new_im->stride; */
+/*     sp += old_im->stride; */
+/*      } */
+
+/*    if (old_im->flags.have_alpha) */
+/*      { */
+/*     DATA8 *dp, *sp; */
+
+/*     dp = new_im->alpha; */
+/*     sp = old_im->alpha; */
+/*     for (i = 0; i < ch; i++) */
+/*       { */
+/*          memcpy(dp, sp, cw * sizeof(DATA8)); */
+/*          if (ew > 0) memset(dp, 0, ew * sizeof(DATA8)); */
+
+/*          dp += new_im->stride; */
+/*          sp += old_im->stride; */
+/*       } */
+/*      } */
+
+/*    evas_cache_image_drop(&old_im->cache_entry); */
+/*    return new_im; */
+/* } */
diff --git a/src/lib/engines/common_16/evas_soft16_polygon.c b/src/lib/engines/common_16/evas_soft16_polygon.c
new file mode 100644 (file)
index 0000000..1a60995
--- /dev/null
@@ -0,0 +1,231 @@
+#include <evas_common_soft16.h>
+#include "evas_soft16_scanline_fill.c"
+#include <math.h>
+
+typedef struct _RGBA_Edge RGBA_Edge;
+typedef struct _RGBA_Vertex RGBA_Vertex;
+
+struct _RGBA_Edge
+{
+   float x, dx;
+   int i;
+};
+
+struct _RGBA_Vertex
+{
+   float x, y;
+   int i;
+};
+
+#define POLY_EDGE_DEL(_i)                                               \
+{                                                                       \
+   int _j;                                                              \
+                                                                        \
+   for (_j = 0; (_j < num_active_edges) && (edges[_j].i != _i); _j++);  \
+   if (_j < num_active_edges)                                           \
+     {                                                                  \
+       num_active_edges--;                                             \
+       memmove(&(edges[_j]), &(edges[_j + 1]),                         \
+               (num_active_edges - _j) * sizeof(RGBA_Edge));           \
+     }                                                                  \
+}
+
+#define POLY_EDGE_ADD(_i, _y)                                           \
+{                                                                       \
+   int _j;                                                              \
+   float _dx;                                                           \
+   RGBA_Vertex *_p, *_q;                                                \
+   if (_i < (n - 1)) _j = _i + 1;                                       \
+   else _j = 0;                                                         \
+   if (point[_i].y < point[_j].y)                                       \
+     {                                                                  \
+       _p = &(point[_i]);                                              \
+       _q = &(point[_j]);                                              \
+     }                                                                  \
+   else                                                                 \
+     {                                                                  \
+       _p = &(point[_j]);                                              \
+       _q = &(point[_i]);                                              \
+     }                                                                  \
+   edges[num_active_edges].dx = _dx = (_q->x - _p->x) / (_q->y - _p->y); \
+   edges[num_active_edges].x = (_dx * ((float)_y + 0.5 - _p->y)) + _p->x; \
+   edges[num_active_edges].i = _i;                                      \
+   num_active_edges++;                                                  \
+}
+
+static int
+polygon_point_sorter(const void *a, const void *b)
+{
+   RGBA_Vertex *p, *q;
+
+   p = (RGBA_Vertex *)a;
+   q = (RGBA_Vertex *)b;
+   if (p->y <= q->y) return -1;
+   return 1;
+}
+
+static int
+polygon_edge_sorter(const void *a, const void *b)
+{
+   RGBA_Edge *p, *q;
+
+   p = (RGBA_Edge *)a;
+   q = (RGBA_Edge *)b;
+   if (p->x <= q->x) return -1;
+   return 1;
+}
+
+void
+soft16_polygon_draw(Soft16_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points)
+{
+   RGBA_Polygon_Point *pt;
+   RGBA_Vertex       *point;
+   RGBA_Edge         *edges;
+   Evas_Object_List *l;
+   int                num_active_edges;
+   int                n;
+   int                i, j, k;
+   int                y0, y1, y;
+   int                ext_x, ext_y, ext_w, ext_h;
+   int               *sorted_index;
+   DATA8 alpha;
+   DATA16 rgb565;
+   DATA32 rgb565_unpack;
+
+   alpha = A_VAL(&dc->col.col) >> 3;
+   if (alpha == 0)
+     return;
+   alpha++;
+
+   rgb565 = RGB_565_FROM_COMPONENTS(R_VAL(&dc->col.col),
+                                   G_VAL(&dc->col.col),
+                                   B_VAL(&dc->col.col));
+   rgb565_unpack = RGB_565_UNPACK(rgb565);
+
+   ext_x = 0;
+   ext_y = 0;
+   ext_w = dst->cache_entry.w;
+   ext_h = dst->cache_entry.h;
+   if (dc->clip.use)
+     RECTS_CLIP_TO_RECT(ext_x, ext_y, ext_w, ext_h,
+                       dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
+
+   if ((ext_w <= 0) || (ext_h <= 0))
+     return;
+
+   n = 0;
+   for (l = (Evas_Object_List *)points; l; l = l->next)
+     n++;
+
+   if (n < 3)
+     return;
+
+   edges = malloc(sizeof(RGBA_Edge) * n);
+   if (!edges)
+     return;
+
+   point = malloc(sizeof(RGBA_Vertex) * n);
+   if (!point)
+     {
+       free(edges);
+       return;
+     }
+
+   sorted_index = malloc(sizeof(int) * n);
+   if (!sorted_index)
+     {
+       free(edges);
+       free(point);
+       return;
+     }
+
+   for (k = 0, l = (Evas_Object_List *)points; l; k++, l = l->next)
+     {
+       pt = (RGBA_Polygon_Point *)l;
+       point[k].x = pt->x;
+       point[k].y = pt->y;
+       point[k].i = k;
+     }
+   qsort(point, n, sizeof(RGBA_Vertex), polygon_point_sorter);
+
+   for (k = 0; k < n; k++)
+     sorted_index[k] = point[k].i;
+
+   for (k = 0, l = (Evas_Object_List *)points; l; k++, l = l->next)
+     {
+       pt = (RGBA_Polygon_Point *)l;
+       point[k].x = pt->x;
+       point[k].y = pt->y;
+       point[k].i = k;
+     }
+
+   y0 = MAX(ext_y, ceil(point[sorted_index[0]].y - 0.5));
+   y1 = MIN(ext_y + ext_h - 1, floor(point[sorted_index[n - 1]].y - 0.5));
+
+   k = 0;
+   num_active_edges = 0;
+
+   for (y = y0; y <= y1; y++)
+     {
+       for (; (k < n) && (point[sorted_index[k]].y <= ((float)y + 0.5)); k++)
+         {
+            i = sorted_index[k];
+
+            if (i > 0) j = i - 1;
+            else j = n - 1;
+            if (point[j].y <= ((float)y - 0.5))
+              {
+                 POLY_EDGE_DEL(j)
+              }
+            else if (point[j].y > ((float)y + 0.5))
+              {
+                 POLY_EDGE_ADD(j, y)
+              }
+            if (i < (n - 1)) j = i + 1;
+            else j = 0;
+            if (point[j].y <= ((float)y - 0.5))
+              {
+                 POLY_EDGE_DEL(i)
+              }
+            else if (point[j].y > ((float)y + 0.5))
+              {
+                 POLY_EDGE_ADD(i, y)
+              }
+         }
+
+       qsort(edges, num_active_edges, sizeof(RGBA_Edge), polygon_edge_sorter);
+
+       for (j = 0; j < num_active_edges; j += 2)
+         {
+            int x0, x1;
+
+            x0 = ceil(edges[j].x - 0.5);
+            if (j < (num_active_edges - 1))
+              x1 = floor(edges[j + 1].x - 0.5);
+            else
+              x1 = x0;
+            if ((x1 >= ext_x) && (x0 < (ext_x + ext_w)) && (x0 <= x1))
+              {
+                 DATA16 *dst_itr;
+                 int w;
+
+                 if (x0 < ext_x) x0 = ext_x;
+                 if (x1 >= (ext_x + ext_w)) x1 = ext_x + ext_w - 1;
+
+                 w = (x1 - x0) + 1;
+                 dst_itr = dst->pixels + (y * dst->stride) + x0;
+
+                 if (alpha == 32)
+                   _soft16_scanline_fill_solid_solid(dst_itr, w, rgb565);
+                 else
+                   _soft16_scanline_fill_transp_solid(dst_itr, w, rgb565_unpack, alpha);
+              }
+            edges[j].x += edges[j].dx;
+            edges[j + 1].x += edges[j + 1].dx;
+         }
+     }
+
+   free(edges);
+   free(point);
+   free(sorted_index);
+}
diff --git a/src/lib/engines/common_16/evas_soft16_rectangle.c b/src/lib/engines/common_16/evas_soft16_rectangle.c
new file mode 100644 (file)
index 0000000..eb6ae92
--- /dev/null
@@ -0,0 +1,126 @@
+#include "evas_common_soft16.h"
+#include "evas_soft16_scanline_fill.c"
+
+static inline int
+_is_empty_rectangle(const Evas_Rectangle *r)
+{
+   return (r->w < 1) || (r->h < 1);
+}
+
+static inline void
+_soft16_rectangle_draw_solid_solid(Soft16_Image *dst, int offset, int w, int h,
+                                  DATA16 rgb565)
+{
+   DATA16 *dst_itr;
+   int i;
+
+   dst_itr = dst->pixels + offset;
+
+   for (i = 0; i < h; i++, dst_itr += dst->stride)
+      _soft16_scanline_fill_solid_solid(dst_itr, w, rgb565);
+}
+
+static inline void
+_soft16_rectangle_draw_transp_solid(Soft16_Image *dst, int offset, int w, int h,
+                                   DATA16 rgb565, DATA8 alpha)
+{
+   DATA16 *dst_itr;
+   DATA32 rgb565_unpack;
+   int i;
+
+   dst_itr = dst->pixels + offset;
+   rgb565_unpack = RGB_565_UNPACK(rgb565);
+   alpha++;
+
+   for (i = 0; i < h; i++, dst_itr += dst->stride)
+     _soft16_scanline_fill_transp_solid(dst_itr, w, rgb565_unpack, alpha);
+}
+
+static void
+_soft16_rectangle_draw_int(Soft16_Image *dst, RGBA_Draw_Context *dc,
+                           Evas_Rectangle dr)
+{
+   int dst_offset;
+
+   if (_is_empty_rectangle(&dr)) return;
+   RECTS_CLIP_TO_RECT(dr.x, dr.y, dr.w, dr.h, 0, 0, dst->cache_entry.w, dst->cache_entry.h);
+   if (_is_empty_rectangle(&dr)) return;
+
+   if (dc->clip.use)
+      RECTS_CLIP_TO_RECT(dr.x, dr.y, dr.w, dr.h, dc->clip.x,
+                         dc->clip.y, dc->clip.w, dc->clip.h);
+   if (_is_empty_rectangle(&dr)) return;
+   if (A_VAL(&dc->col.col) == 0) return;
+
+   dst_offset = dr.x + (dr.y * dst->cache_entry.w);
+
+   if (!dst->cache_entry.flags.alpha)
+      {
+        DATA16 rgb565;
+        DATA8 alpha;
+
+        alpha = A_VAL(&dc->col.col) >> 3;
+        rgb565 = RGB_565_FROM_COMPONENTS(R_VAL(&dc->col.col),
+                                         G_VAL(&dc->col.col),
+                                         B_VAL(&dc->col.col));
+         if (alpha == 31)
+          _soft16_rectangle_draw_solid_solid
+            (dst, dst_offset, dr.w, dr.h, rgb565);
+         else if (alpha > 0)
+          _soft16_rectangle_draw_transp_solid
+            (dst, dst_offset, dr.w, dr.h, rgb565, alpha);
+      }
+   else
+      fprintf(stderr,
+              "Unsupported feature: drawing rectangle to non-opaque "
+              "destination.\n");
+}
+
+void
+soft16_rectangle_draw(Soft16_Image *dst, RGBA_Draw_Context *dc,
+                      int x, int y, int w, int h)
+{
+   Evas_Rectangle dr;
+   Cutout_Rects *rects;
+   Cutout_Rect  *r;
+   struct RGBA_Draw_Context_clip c_bkp;
+   int i;
+
+   /* handle cutouts here! */
+   dr.x = x;
+   dr.y = y;
+   dr.w = w;
+   dr.h = h;
+
+   if (_is_empty_rectangle(&dr)) return;
+   if (!(RECTS_INTERSECT(dr.x, dr.y, dr.w, dr.h, 0, 0, dst->cache_entry.w, dst->cache_entry.h)))
+     return;
+
+   /* no cutouts - cut right to the chase */
+   if (!dc->cutout.rects)
+     {
+        _soft16_rectangle_draw_int(dst, dc, dr);
+       return;
+     }
+
+   c_bkp = dc->clip;
+
+   evas_common_draw_context_clip_clip(dc, 0, 0, dst->cache_entry.w, dst->cache_entry.h);
+   evas_common_draw_context_clip_clip(dc, x, y, w, h);
+   /* our clip is 0 size.. abort */
+   if ((dc->clip.w <= 0) || (dc->clip.h <= 0))
+     {
+       dc->clip = c_bkp;
+       return;
+     }
+   rects = evas_common_draw_context_apply_cutouts(dc);
+   for (i = 0; i < rects->active; ++i)
+     {
+       r = rects->rects + i;
+       evas_common_draw_context_set_clip(dc, r->x, r->y, r->w, r->h);
+        _soft16_rectangle_draw_int(dst, dc, dr);
+     }
+   evas_common_draw_context_apply_clear_cutouts(rects);
+   dc->clip = c_bkp;
+}
+
diff --git a/src/lib/engines/common_16/evas_soft16_scanline_blend.c b/src/lib/engines/common_16/evas_soft16_scanline_blend.c
new file mode 100644 (file)
index 0000000..409eb10
--- /dev/null
@@ -0,0 +1,471 @@
+/** NOTE: This file is meant to be included by users **/
+
+/** NOTE2: r, g, b parameters are 16bits, so you can pass 0 to 256 inclusive.
+ **        this is due our division by 256 when multiplying the color.
+ **/
+
+/*****************************************************************************
+ * Scanline processing
+ *
+ *    _soft16_scanline_<description>_<src>_<dst>[_<modifier>]()
+ *
+ ****************************************************************************/
+
+static always_inline void
+_soft16_pt_blend_transp_solid(DATA16 *p_dst, DATA16 src, DATA8 alpha)
+{
+   if (alpha == 31) *p_dst = src;
+   else if (alpha != 0)
+     {
+        DATA32 a, b;
+
+        a = RGB_565_UNPACK(src);
+        b = RGB_565_UNPACK(*p_dst);
+        b = RGB_565_UNPACKED_BLEND(a, b, alpha);
+        *p_dst = RGB_565_PACK(b);
+     }
+}
+
+/***********************************************************************
+ * Regular blend operations
+ */
+static void
+_soft16_scanline_blend_transp_solid(DATA16 *src, DATA8 *alpha, DATA16 *dst, int size)
+{
+   DATA16 *start, *end;
+
+   start = dst;
+   end = start + (size & ~7);
+
+   pld(alpha, 0);
+   pld(src, 0);
+
+   /* work on 8 pixels per time, do data preload */
+   while (start < end)
+     {
+       DATA8 alpha1, alpha2;
+
+       alpha1 = alpha[0];
+       alpha += 8;
+
+       /* empirical tests show these give the best performance */
+       pld(alpha, 8);
+       pld(src, 32);
+
+       src += 8;
+       start += 8;
+
+       alpha2 = alpha[-7];
+        _soft16_pt_blend_transp_solid(start - 8, src[-8], alpha1);
+
+       alpha1 = alpha[-6];
+        _soft16_pt_blend_transp_solid(start - 7, src[-7], alpha2);
+
+       alpha2 = alpha[-5];
+       _soft16_pt_blend_transp_solid(start - 6, src[-6], alpha1);
+
+       alpha1 = alpha[-4];
+       _soft16_pt_blend_transp_solid(start - 5, src[-5], alpha2);
+
+       alpha2 = alpha[-3];
+       _soft16_pt_blend_transp_solid(start - 4, src[-4], alpha1);
+
+       alpha1 = alpha[-2];
+       _soft16_pt_blend_transp_solid(start - 3, src[-3], alpha2);
+
+       alpha2 = alpha[-1];
+       _soft16_pt_blend_transp_solid(start - 2, src[-2], alpha1);
+
+       _soft16_pt_blend_transp_solid(start - 1, src[-1], alpha2);
+     }
+
+   /* remaining pixels (up to 7) */
+   end = start + (size & 7);
+   for (; start < end; start++, src++, alpha++)
+      _soft16_pt_blend_transp_solid(start, *src, *alpha);
+}
+
+static always_inline void
+_soft16_pt_blend_solid_solid(DATA16 *p_dst, DATA16 src)
+{
+   *p_dst = src;
+}
+
+static inline void
+_soft16_scanline_blend_solid_solid(DATA16 *src, DATA16 *dst, int size)
+{
+   memcpy(dst, src, size * sizeof(DATA16));
+}
+
+/***********************************************************************
+ * Blend operations taking an extra alpha (fade in, out)
+ */
+
+static inline void
+_soft16_pt_blend_transp_solid_mul_alpha(DATA16 *p_dst, DATA16 src, DATA8 alpha, DATA8 rel_alpha)
+{
+   DATA32 a, b;
+
+   alpha = (alpha * rel_alpha) >> 5;
+   if (alpha == 0)
+     return;
+
+   alpha++;
+
+   a = ((RGB_565_UNPACK(src) * rel_alpha) >> 5) & RGB_565_UNPACKED_MASK;
+   b = RGB_565_UNPACK(*p_dst);
+   b = RGB_565_UNPACKED_BLEND(a, b, alpha);
+   *p_dst = RGB_565_PACK(b);
+}
+
+static void
+_soft16_scanline_blend_transp_solid_mul_alpha(DATA16 *src, DATA8 *alpha, DATA16 *dst, int size, const DATA8 rel_alpha)
+{
+   DATA16 *start, *end;
+
+   start = dst;
+   end = start + (size & ~7);
+
+   pld(alpha, 0);
+   pld(src, 0);
+
+   while (start < end)
+     {
+       DATA8 alpha1, alpha2;
+
+       alpha1 = alpha[0];
+       alpha += 8;
+
+       pld(alpha, 8);
+       pld(src, 32);
+
+       src += 8;
+       start += 8;
+
+       alpha2 = alpha[-7];
+       _soft16_pt_blend_transp_solid_mul_alpha
+           (start - 8, src[-8], alpha1, rel_alpha);
+
+       alpha1 = alpha[-6];
+       _soft16_pt_blend_transp_solid_mul_alpha
+           (start - 7, src[-7], alpha2, rel_alpha);
+
+       alpha2 = alpha[-5];
+       _soft16_pt_blend_transp_solid_mul_alpha
+           (start - 6, src[-6], alpha1, rel_alpha);
+
+       alpha1 = alpha[-4];
+       _soft16_pt_blend_transp_solid_mul_alpha
+           (start - 5, src[-5], alpha2, rel_alpha);
+
+       alpha2 = alpha[-3];
+       _soft16_pt_blend_transp_solid_mul_alpha
+           (start - 4, src[-4], alpha1, rel_alpha);
+
+       alpha1 = alpha[-2];
+       _soft16_pt_blend_transp_solid_mul_alpha
+           (start - 3, src[-3], alpha2, rel_alpha);
+
+       alpha2 = alpha[-1];
+       _soft16_pt_blend_transp_solid_mul_alpha
+           (start - 2, src[-2], alpha1, rel_alpha);
+
+       _soft16_pt_blend_transp_solid_mul_alpha
+           (start - 1, src[-1], alpha2, rel_alpha);
+     }
+
+   end = start + (size & 7);
+   for (; start < end; start++, src++, alpha++)
+      _soft16_pt_blend_transp_solid_mul_alpha(start, *src, *alpha, rel_alpha);
+}
+
+static always_inline void
+_soft16_pt_blend_solid_solid_mul_alpha(DATA16 *p_dst, DATA16 src, DATA8 rel_alpha)
+{
+   DATA32 a, b;
+   a = RGB_565_UNPACK(src);
+   b = RGB_565_UNPACK(*p_dst);
+   b = RGB_565_UNPACKED_BLEND_UNMUL(a, b, rel_alpha);
+   *p_dst = RGB_565_PACK(b);
+}
+
+static void
+_soft16_scanline_blend_solid_solid_mul_alpha(DATA16 *src, DATA16 *dst, int size, DATA8 rel_alpha)
+{
+   DATA16 *start, *end;
+
+   start = dst;
+   end = start + (size & ~7);
+
+   pld(src, 0);
+
+   while (start < end)
+     {
+       pld(src, 32);
+        UNROLL8({
+           _soft16_pt_blend_solid_solid_mul_alpha(start, *src, rel_alpha);
+           start++;
+           src++;
+        });
+     }
+
+   end = start + (size & 7);
+   for (; start < end; start++, src++)
+     _soft16_pt_blend_solid_solid_mul_alpha(start, *src, rel_alpha);
+}
+
+/***********************************************************************
+ * Blend operations with extra alpha and multiply color
+ */
+
+static always_inline void
+_soft16_pt_blend_transp_solid_mul_color_transp(DATA16 *p_dst, DATA16 src, DATA8 alpha, DATA8 rel_alpha, DATA16 r, DATA16 g, DATA16 b)
+{
+   DATA32 rgb, d;
+   int r1, g1, b1;
+
+   alpha = (alpha * rel_alpha) >> 5;
+   if (alpha == 0)
+     return;
+
+   alpha++;
+
+   r1 = ((((src) >> 11) & 0x1f) * r) >> 5;
+   g1 = ((((src) >> 5) & 0x3f) * g) >> 6;
+   b1 = (((src) & 0x1f) * b) >> 5;
+   rgb = ((r1 << 11) | (g1 << 21) | b1) & RGB_565_UNPACKED_MASK;
+   d = RGB_565_UNPACK(*p_dst);
+   d = RGB_565_UNPACKED_BLEND(rgb, d, alpha);
+
+   *p_dst = RGB_565_PACK(d);
+}
+
+static void
+_soft16_scanline_blend_transp_solid_mul_color_transp(DATA16 *src, DATA8 *alpha, DATA16 *dst, int size, DATA8 rel_alpha, DATA16 r, DATA16 g, DATA16 b)
+{
+   DATA16 *start, *end;
+
+   start = dst;
+   end = start + (size & ~7);
+
+   pld(alpha, 0);
+   pld(src, 0);
+
+   while (start < end)
+     {
+       DATA8 alpha1, alpha2;
+
+       alpha1 = alpha[0];
+       alpha += 8;
+
+        pld(src, 32);
+        pld(start, 32);
+
+       src += 8;
+       start += 8;
+
+       alpha2 = alpha[-7];
+        _soft16_pt_blend_transp_solid_mul_color_transp
+           (start - 8, src[-8], alpha1, rel_alpha, r, g, b);
+
+       alpha1 = alpha[-6];
+        _soft16_pt_blend_transp_solid_mul_color_transp
+           (start - 7, src[-7], alpha2, rel_alpha, r, g, b);
+
+       alpha2 = alpha[-5];
+        _soft16_pt_blend_transp_solid_mul_color_transp
+           (start - 6, src[-6], alpha1, rel_alpha, r, g, b);
+
+       alpha1 = alpha[-4];
+        _soft16_pt_blend_transp_solid_mul_color_transp
+           (start - 5, src[-5], alpha2, rel_alpha, r, g, b);
+
+       alpha2 = alpha[-3];
+        _soft16_pt_blend_transp_solid_mul_color_transp
+           (start - 4, src[-4], alpha1, rel_alpha, r, g, b);
+
+       alpha1 = alpha[-2];
+        _soft16_pt_blend_transp_solid_mul_color_transp
+           (start - 3, src[-3], alpha2, rel_alpha, r, g, b);
+
+       alpha2 = alpha[-1];
+        _soft16_pt_blend_transp_solid_mul_color_transp
+           (start - 2, src[-2], alpha1, rel_alpha, r, g, b);
+
+        _soft16_pt_blend_transp_solid_mul_color_transp
+           (start - 1, src[-1], alpha2, rel_alpha, r, g, b);
+     }
+
+   end = start + (size & 7);
+   for (; start < end; start++, src++, alpha++)
+      _soft16_pt_blend_transp_solid_mul_color_transp
+         (start, *src, *alpha, rel_alpha, r, g, b);
+}
+
+static always_inline void
+_soft16_pt_blend_solid_solid_mul_color_transp(DATA16 *p_dst, DATA16 src, DATA8 rel_alpha, DATA16 r, DATA16 g, DATA16 b)
+{
+   int r1, g1, b1;
+   DATA32 rgb, d;
+
+   r1 = ((((src) >> 11) & 0x1f) * r) >> 5;
+   g1 = ((((src) >> 5) & 0x3f) * g) >> 6;
+   b1 = (((src) & 0x1f) * b) >> 5;
+
+   rgb = ((r1 << 11) | (g1 << 21) | b1) & RGB_565_UNPACKED_MASK;
+   d = RGB_565_UNPACK(*p_dst);
+   d = RGB_565_UNPACKED_BLEND(rgb, d, rel_alpha);
+   *p_dst = RGB_565_PACK(d);
+}
+
+static void
+_soft16_scanline_blend_solid_solid_mul_color_transp(DATA16 *src, DATA16 *dst, int size, DATA8 rel_alpha, DATA16 r, DATA16 g, DATA16 b)
+{
+   DATA16 *start, *end;
+
+   start = dst;
+   end = start + (size & ~7);
+
+   pld(src, 0);
+
+   while (start < end)
+     {
+       pld(src, 32);
+        UNROLL8({
+           _soft16_pt_blend_solid_solid_mul_color_transp
+              (start, *src, rel_alpha, r, g, b);
+           start++;
+           src++;
+        });
+     }
+
+   end = start + (size & 7);
+   for (; start < end; start++, src++)
+      _soft16_pt_blend_solid_solid_mul_color_transp
+         (start, *src, rel_alpha, r, g, b);
+}
+
+/***********************************************************************
+ * Blend operations with extra multiply color
+ */
+static always_inline void
+_soft16_pt_blend_transp_solid_mul_color_solid(DATA16 *p_dst, DATA16 src, DATA8 alpha, DATA8 r, DATA8 g, DATA8 b)
+{
+   int r1, g1, b1;
+
+   if (alpha == 0) return;
+
+   r1 = ((((src >> 11) & 0x1f) * r) >> 5) & 0x1f;
+   g1 = ((((src >> 5) & 0x3f) * g) >> 6) & 0x3f;
+   b1 = (((src & 0x1f) * b) >> 5) & 0x1f;
+
+   if (alpha == 31) *p_dst = (r1 << 11) | (g1 << 5) | b1;
+   else
+     {
+        DATA32 rgb_unpack, d;
+
+        rgb_unpack = ((r1 << 11) | (g1 << 21) | b1) & RGB_565_UNPACKED_MASK;
+        d = RGB_565_UNPACK(*p_dst);
+        d = RGB_565_UNPACKED_BLEND(rgb_unpack, d, alpha);
+        *p_dst = RGB_565_PACK(d);
+     }
+}
+
+static void
+_soft16_scanline_blend_transp_solid_mul_color_solid(DATA16 *src, DATA8 *alpha, DATA16 *dst, int size, DATA16 r, DATA16 g, DATA16 b)
+{
+   DATA16 *start, *end;
+
+   start = dst;
+   end = start + (size & ~7);
+
+   pld(alpha, 0);
+   pld(src, 0);
+
+   while (start < end)
+     {
+       DATA8 alpha1, alpha2;
+
+       alpha1 = alpha[0];
+       alpha += 8;
+
+       pld(alpha, 8);
+       pld(src, 32);
+
+       src += 8;
+       start += 8;
+
+       alpha2 = alpha[-7];
+        _soft16_pt_blend_transp_solid_mul_color_solid
+           (start - 8, src[-8], alpha1, r, g, b);
+
+       alpha1 = alpha[-6];
+        _soft16_pt_blend_transp_solid_mul_color_solid
+           (start - 7, src[-7], alpha2, r, g, b);
+
+       alpha2 = alpha[-5];
+        _soft16_pt_blend_transp_solid_mul_color_solid
+           (start - 6, src[-6], alpha1, r, g, b);
+
+       alpha1 = alpha[-4];
+        _soft16_pt_blend_transp_solid_mul_color_solid
+           (start - 5, src[-5], alpha2, r, g, b);
+
+       alpha2 = alpha[-3];
+        _soft16_pt_blend_transp_solid_mul_color_solid
+           (start - 4, src[-4], alpha1, r, g, b);
+
+       alpha1 = alpha[-2];
+        _soft16_pt_blend_transp_solid_mul_color_solid
+           (start - 3, src[-3], alpha2, r, g, b);
+
+       alpha2 = alpha[-1];
+        _soft16_pt_blend_transp_solid_mul_color_solid
+           (start - 2, src[-2], alpha1, r, g, b);
+
+        _soft16_pt_blend_transp_solid_mul_color_solid
+           (start - 1, src[-1], alpha2, r, g, b);
+     }
+
+   end = start + (size & 7);
+   for (; start < end; start++, src++, alpha++)
+     _soft16_pt_blend_transp_solid_mul_color_solid
+        (start, *src, *alpha, r, g, b);
+}
+
+static always_inline void
+_soft16_pt_blend_solid_solid_mul_color_solid(DATA16 *p_dst, DATA16 src, DATA16 r, DATA16 g, DATA16 b)
+{
+   int r1, g1, b1;
+
+   r1 = ((((src >> 11) & 0x1f) * r) >> 5) & 0x1f;
+   g1 = ((((src >> 5) & 0x3f) * g) >> 6) & 0x3f;
+   b1 = (((src & 0x1f) * b) >> 5) & 0x1f;
+
+   *p_dst = (r1 << 11) | (g1 << 5) | b1;
+}
+
+static void
+_soft16_scanline_blend_solid_solid_mul_color_solid(DATA16 *src, DATA16 *dst, int size, DATA8 r, DATA8 g, DATA8 b)
+{
+   DATA16 *start, *end;
+
+   start = dst;
+   end = start + (size & ~7);
+
+   pld(src, 0);
+
+   while (start < end)
+     {
+       pld(src, 32);
+        UNROLL8({
+           _soft16_pt_blend_solid_solid_mul_color_solid(start, *src, r, g, b);
+           start++;
+           src++;
+        });
+     }
+
+   end = start + (size & 7);
+   for (; start < end; start++, src++)
+     _soft16_pt_blend_solid_solid_mul_color_solid(start, *src, r, g, b);
+}
diff --git a/src/lib/engines/common_16/evas_soft16_scanline_fill.c b/src/lib/engines/common_16/evas_soft16_scanline_fill.c
new file mode 100644 (file)
index 0000000..b4ab630
--- /dev/null
@@ -0,0 +1,86 @@
+/** NOTE: This file is meant to be included by users **/
+
+/*****************************************************************************
+ * Point processing
+ *
+ *    _soft16_pt_<description>_<src>_<dst>[_<modifier>]()
+ *
+ * Scanline processing
+ *
+ *    _soft16_scanline_<description>_<src>_<dst>[_<modifier>]()
+ *
+ ****************************************************************************/
+static always_inline void
+_soft16_pt_fill_solid_solid(DATA16 *dst, DATA16 rgb565)
+{
+   *dst = rgb565;
+}
+
+static void
+_soft16_scanline_fill_solid_solid(DATA16 *dst, int size, DATA16 rgb565)
+{
+   DATA16 *start, *end;
+   DATA32 rgb565_double;
+
+   start = dst;
+
+   if ((long)start & 0x2)
+     {
+       *start = rgb565;
+       start++;
+       size--;
+     }
+
+   end = start + (size & ~7);
+
+   rgb565_double = (rgb565 << 16) | rgb565;
+
+   while (start < end)
+     {
+        DATA32 *p = (DATA32 *)start;
+
+        p[0] = rgb565_double;
+        p[1] = rgb565_double;
+        p[2] = rgb565_double;
+        p[3] = rgb565_double;
+
+        start += 8;
+     }
+
+   end = start + (size & 7);
+   for (; start < end; start++)
+      *start = rgb565;
+}
+
+static always_inline void
+_soft16_pt_fill_transp_solid(DATA16 *dst, DATA32 rgb565_unpack, DATA8 alpha)
+{
+   DATA32 d;
+
+   d = RGB_565_UNPACK(*dst);
+   d = RGB_565_UNPACKED_BLEND(rgb565_unpack, d, alpha);
+   *dst = RGB_565_PACK(d);
+}
+
+static void
+_soft16_scanline_fill_transp_solid(DATA16 *dst, int size, DATA32 rgb565_unpack, DATA8 alpha)
+{
+   DATA16 *start, *end;
+
+   start = dst;
+   pld(start, 0);
+   end = start + (size & ~7);
+
+   while (start < end)
+     {
+        pld(start, 32);
+        UNROLL8({
+           _soft16_pt_fill_transp_solid(start, rgb565_unpack, alpha);
+           start++;
+        });
+     }
+
+   end = start + (size & 7);
+   for (; start < end; start++)
+     _soft16_pt_fill_transp_solid(start, rgb565_unpack, alpha);
+}
diff --git a/src/lib/file/.cvsignore b/src/lib/file/.cvsignore
new file mode 100644 (file)
index 0000000..e62a1b3
--- /dev/null
@@ -0,0 +1,7 @@
+Makefile.in
+Makefile
+.deps
+.libs
+libevas_file.la
+evas_path.lo
+evas_module.lo
diff --git a/src/lib/file/Makefile.am b/src/lib/file/Makefile.am
new file mode 100644 (file)
index 0000000..686dd83
--- /dev/null
@@ -0,0 +1,23 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-DPACKAGE_BIN_DIR=\"$(bindir)\" \
+-DPACKAGE_LIB_DIR=\"$(libdir)\" \
+-DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+@FREETYPE_CFLAGS@ \
+@EVIL_CFLAGS@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+noinst_LTLIBRARIES      = libevas_file.la
+libevas_file_la_SOURCES  = \
+evas_path.c \
+evas_module.c
+libevas_file_la_LIBADD = @EVIL_LIBS@
+libevas_file_la_DEPENDENCIES = $(top_builddir)/config.h
+
+EXTRA_DIST = evas_module.h evas_path.h
diff --git a/src/lib/file/evas_module.c b/src/lib/file/evas_module.c
new file mode 100644 (file)
index 0000000..2123350
--- /dev/null
@@ -0,0 +1,443 @@
+#ifndef _GNU_SOURCE
+# define _GNU_SOURCE
+#endif
+
+#include <dirent.h>    /* DIR, dirent */
+#include <dlfcn.h>     /* dlopen,dlclose,etc */
+
+#include <evas_common.h>
+#include <evas_private.h>
+
+Evas_List *evas_modules = NULL;
+static Evas_List *evas_module_paths = NULL;
+
+static void
+_evas_module_path_append(Evas_Module_Type type, char *path, const char *subdir)
+{
+   Evas_Module_Path *mp;
+   char *buf;
+
+   buf = evas_file_path_join(path, subdir);
+   if (!buf) return;
+   if (evas_file_path_exists(buf))
+     {
+       mp = malloc(sizeof(Evas_Module_Path));
+       mp->type = type;
+       mp->path = buf;
+       evas_module_paths = evas_list_append(evas_module_paths, mp);
+     }
+   else
+     free(buf);
+}
+
+
+/* this will alloc a list of paths to search for the modules */
+/* by now these are:  */
+/* 1. ~/.evas/modules/ */
+/* 2. $(EVAS_MODULE_DIR)/evas/modules/ */
+/* 3. dladdr/evas/modules/ */
+/* 4. PREFIX/evas/modules/ */
+void
+evas_module_paths_init(void)
+{
+
+   char *prefix;
+   char *path;
+   Evas_List *paths = NULL;
+
+   /* 1. ~/.evas/modules/ */
+   prefix = getenv("HOME");
+   if (prefix)
+     {
+       path = malloc(strlen(prefix) + 1 + strlen("/.evas/modules"));
+       if (path)
+         {
+            path[0] = 0;
+            strcpy(path, prefix);
+            strcat(path, "/.evas/modules");
+            if (evas_file_path_exists(path))
+              paths = evas_list_append(paths, path);
+            else
+              free(path);
+         }
+     }
+
+   /* 2. $(EVAS_MODULE_DIR)/evas/modules/ */
+   prefix = getenv("EVAS_MODULES_DIR");
+   if (prefix)
+     {
+       path = malloc(strlen(prefix) + 1 + strlen("/evas/modules"));
+       if (path)
+         {
+            path[0] = 0;
+            strcpy(path, prefix);
+            strcat(path, "/evas/modules");
+            if (evas_file_path_exists(path))
+              paths = evas_list_append(paths, path);
+            else
+              free(path);
+         }
+     }
+
+#ifdef HAVE_DLADDR
+     {
+       Dl_info evas_dl;
+       /* 3. libevas.so/../evas/modules/ */
+       if (dladdr(evas_module_paths_init, &evas_dl))
+         {
+            int length;
+
+            if (strrchr(evas_dl.dli_fname, '/'))
+              {
+                 length = strlen(strrchr(evas_dl.dli_fname, '/'));
+                 path = malloc(strlen(evas_dl.dli_fname) - length +
+                               strlen("/evas/modules") + 1);
+                 if (path)
+                   {
+                      strncpy(path, evas_dl.dli_fname,
+                              strlen(evas_dl.dli_fname) - length);
+                      path[strlen(evas_dl.dli_fname) - length] = 0;
+                      strcat(path, "/evas/modules");
+                      if (evas_file_path_exists(path))
+                        paths = evas_list_append(paths, path);
+                      else
+                        free(path);
+                   }
+              }
+         }
+     }
+#else
+   /* 4. PREFIX/evas/modules/ */
+   prefix = PACKAGE_LIB_DIR;
+   path = malloc(strlen(prefix) + 1 + strlen("/evas/modules"));
+   if (path)
+     {
+       strcpy(path, prefix);
+       strcat(path, "/evas/modules");
+       if (evas_file_path_exists(path))
+         paths = evas_list_append(paths, path);
+       else
+         free(path);
+     }
+#endif
+
+   /* append all the module types subdirs */
+   while (paths)
+     {
+       /* here must be added all the types of modules and their subdirectory */
+       /* do this on a separate function */
+       /* 1. engines */
+       _evas_module_path_append(EVAS_MODULE_TYPE_ENGINE, paths->data, "engines");
+       _evas_module_path_append(EVAS_MODULE_TYPE_IMAGE_LOADER, paths->data, "loaders");
+       _evas_module_path_append(EVAS_MODULE_TYPE_IMAGE_SAVER, paths->data, "savers");
+       _evas_module_path_append(EVAS_MODULE_TYPE_OBJECT, paths->data, "objects");
+       free(paths->data);
+       paths = evas_list_remove_list(paths, paths);
+     }
+}
+
+/* this will alloc an Evas_Module struct for each module
+ * it finds on the paths */
+void
+evas_module_init(void)
+{
+   Evas_List *l;
+   int new_id_engine = 1;
+
+/*    printf("[init modules]\n"); */
+   evas_module_paths_init();
+   for (l = evas_module_paths; l; l = l->next)
+     {
+       Evas_Module_Path *mp;
+       DIR *dir;
+       struct dirent *de;
+
+       mp = l->data;
+
+       if (!(dir = opendir(mp->path))) break;
+/*     printf("[evas module] searching modules on %s\n", mp->path); */
+       while ((de = readdir(dir)))
+         {
+            char *buf;
+
+            if ((!strcmp(de->d_name, ".")) || (!strcmp(de->d_name, "..")))
+              continue;
+            buf = malloc(strlen(mp->path) + 1 + strlen(de->d_name) + 1);
+            sprintf(buf, "%s/%s", mp->path, de->d_name);
+            if (evas_file_path_is_dir(buf))
+              {
+                 Evas_Module *em;
+
+                 em = calloc(1, sizeof(Evas_Module));
+                 if (!em) continue;
+                 em->name = strdup(de->d_name);
+                 em->path = strdup(mp->path);
+                 em->type = mp->type;
+                 em->handle = NULL;
+                 em->data = NULL;
+                  em->loaded = 0;
+                 if (em->type == EVAS_MODULE_TYPE_ENGINE)
+                   {
+                      Evas_Module_Engine *eme;
+
+                      eme = malloc(sizeof(Evas_Module_Engine));
+                      if (eme)
+                        {
+                           eme->id = new_id_engine;
+                           em->data = eme;
+                           new_id_engine++;
+                        }
+                   }
+                  else if (em->type == EVAS_MODULE_TYPE_IMAGE_LOADER)
+                   {
+                   }
+                  else if (em->type == EVAS_MODULE_TYPE_IMAGE_SAVER)
+                   {
+                   }
+/*               printf("[evas module] including module path %s/%s of type %d\n",em->path, em->name, em->type); */
+                 evas_modules = evas_list_append(evas_modules, em);
+              }
+            free(buf);
+         }
+       closedir(dir);
+     }
+}
+
+Evas_Module *
+evas_module_find_type(Evas_Module_Type type, const char *name)
+{
+   Evas_List *l;
+
+   for (l = evas_modules; l; l = l->next)
+     {
+       Evas_Module *em;
+
+       em = (Evas_Module*)l->data;
+       if ((type == em->type) && (!strcmp(name,em->name)))
+         {
+             if (evas_modules != l)
+              {
+                 evas_modules = evas_list_promote_list(evas_modules, l);
+              }
+            return em;
+         }
+     }
+   return NULL;
+}
+
+int
+evas_module_load(Evas_Module *em)
+{
+   char buf[4096];
+   void *handle;
+
+   if (em->loaded) return 1;
+
+/*   printf("LOAD %s\n", em->name); */
+#if defined(__CEGCC__) || defined(__MINGW32CE__)
+   switch (em->type) {
+     case EVAS_MODULE_TYPE_IMAGE_SAVER:
+        snprintf(buf, sizeof(buf), "%s/%s/%s/saver_%s.dll", em->path, em->name, MODULE_ARCH, em->name);
+        break;
+     case EVAS_MODULE_TYPE_IMAGE_LOADER:
+        snprintf(buf, sizeof(buf), "%s/%s/%s/loader_%s.dll", em->path, em->name, MODULE_ARCH, em->name);
+        break;
+     case EVAS_MODULE_TYPE_ENGINE:
+        snprintf(buf, sizeof(buf), "%s/%s/%s/engine_%s.dll", em->path, em->name, MODULE_ARCH, em->name);
+        break;
+     default:
+        snprintf(buf, sizeof(buf), "%s/%s/%s/object_%s.dll", em->path, em->name, MODULE_ARCH, em->name);
+   }
+#elif _WIN32
+   snprintf(buf, sizeof(buf), "%s/%s/%s/module.dll", em->path, em->name, MODULE_ARCH);
+#else
+   snprintf(buf, sizeof(buf), "%s/%s/%s/module.so", em->path, em->name, MODULE_ARCH);
+#endif
+   if (!evas_file_path_exists(buf))
+     {
+       printf("[evas module] error loading the module %s. It doesnt exists\n", buf);
+       return 0;
+     }
+
+   handle = dlopen(buf, RTLD_LAZY);
+   if (handle)
+     {
+       em->handle = handle;
+       em->func.open = dlsym(em->handle, "module_open");
+       em->func.close = dlsym(em->handle, "module_close");
+       em->api = dlsym(em->handle, "evas_modapi");
+
+       if ((!em->func.open) || (!em->api) || (!em->func.close))
+         goto error_dl;
+       /* check the api */
+       if (em->api->version != EVAS_MODULE_API_VERSION)
+         {
+            printf("[evas module] error loading the modules %s. The version doesnt match\n", buf);
+            goto error_dl;
+         }
+       em->func.open(em);
+       em->loaded = 1;
+       return 1;
+     }
+   error_dl:
+     {
+       const char *err;
+
+       err = dlerror();
+       printf("[evas module] error loading the module %s. %s\n", buf, err);
+       if (handle)
+         dlclose(handle);
+       em->handle = NULL;
+       em->func.open = NULL;
+       em->func.close = NULL;
+       em->api = NULL;
+     }
+   return 0;
+}
+
+void
+evas_module_unload(Evas_Module *em)
+{
+   if (!em->loaded)
+     return;
+   if (em->handle)
+     {
+       em->func.close(em);
+       dlclose(em->handle);
+     }
+   em->handle = NULL;
+   em->func.open = NULL;
+   em->func.close = NULL;
+   em->api = NULL;
+   em->loaded = 0;
+}
+
+void
+evas_module_ref(Evas_Module *em)
+{
+   em->ref++;
+/*   printf("M: %s ref++ = %i\n", em->name, em->ref); */
+}
+
+void
+evas_module_unref(Evas_Module *em)
+{
+   em->ref--;
+/*   printf("M: %s ref-- = %i\n", em->name, em->ref); */
+}
+
+static int use_count = 0;
+
+void
+evas_module_use(Evas_Module *em)
+{
+   em->last_used = use_count;
+}
+
+void
+evas_module_clean(void)
+{
+   static int call_count = 0;
+   int ago;
+   int noclean = -1;
+   Evas_List *l;
+   Evas_Module *em;
+
+   /* only clean modules every 256 calls */
+   call_count++;
+   if (call_count <= 256) return;
+   call_count = 0;
+
+   if (noclean == -1)
+     {
+       if (getenv("EVAS_NOCLEAN"))
+         {
+            noclean = 1;
+         }
+       noclean = 0;
+     }
+   if (noclean == 1) return;
+
+   /* disable module cleaning for now - may cause instability with some modules */
+   return;
+
+   /* incriment use counter = 28bits */
+   use_count++;
+   if (use_count > 0x0fffffff) use_count = 0;
+
+   /* printf("CLEAN!\n"); */
+   /* go through all modules */
+   for (l = evas_modules; l; l = l->next)
+     {
+       em = l->data;
+        /* printf("M %s %i %i\n", em->name, em->ref, em->loaded); */
+       /* if the module is refernced - skip */
+       if ((em->ref > 0) || (!em->loaded)) continue;
+       /* how many clean cycles ago was this module last used */
+       ago = use_count - em->last_used;
+       if (em->last_used > use_count) ago += 0x10000000;
+       /* if it was used last more than N clean cycles ago - unload */
+       if (ago > 5)
+         {
+            /* printf("  UNLOAD %s\n", em->name); */
+            evas_module_unload(em);
+         }
+     }
+}
+
+/* will dlclose all the modules loaded and free all the structs */
+void
+evas_module_shutdown(void)
+{
+   Evas_Module *em;
+
+/*    printf("[shutdown modules]\n"); */
+   while (evas_modules)
+     {
+       em = (Evas_Module *)evas_modules->data;
+       evas_module_unload(em);
+       if (em->name) free(em->name);
+       if (em->path) free(em->path);
+       if (em->type == EVAS_MODULE_TYPE_ENGINE)
+         {
+            if (em->data) free(em->data);
+         }
+       else if (em->type == EVAS_MODULE_TYPE_IMAGE_LOADER)
+         {
+         }
+       else if (em->type == EVAS_MODULE_TYPE_IMAGE_SAVER)
+         {
+         }
+       free(evas_modules->data);
+       evas_modules = evas_list_remove_list(evas_modules, evas_modules);
+     }
+   while (evas_module_paths)
+     {
+       Evas_Module_Path *mp;
+
+       mp = evas_module_paths->data;
+       evas_module_paths = evas_list_remove_list(evas_module_paths, evas_module_paths);
+       free(mp->path);
+       free(mp);
+     }
+}
+
+EAPI int
+_evas_module_engine_inherit(Evas_Func *funcs, char *name)
+{
+   Evas_Module *em;
+
+   em = evas_module_find_type(EVAS_MODULE_TYPE_ENGINE, name);
+   if (em)
+     {
+       if (evas_module_load(em))
+         {
+            /* FIXME: no way to unref */
+            evas_module_ref(em);
+            evas_module_use(em);
+            *funcs = *((Evas_Func *)(em->functions));
+            return 1;
+         }
+     }
+   return 0;
+}
diff --git a/src/lib/file/evas_module.h b/src/lib/file/evas_module.h
new file mode 100644 (file)
index 0000000..06765df
--- /dev/null
@@ -0,0 +1,83 @@
+#ifndef _EVAS_MODULE_H
+#define _EVAS_MODULE_H
+
+
+/* the module api version */
+#define EVAS_MODULE_API_VERSION 1
+
+
+/* the module types */
+typedef enum _Evas_Module_Type
+{
+   EVAS_MODULE_TYPE_ENGINE,
+   EVAS_MODULE_TYPE_IMAGE_LOADER,
+   EVAS_MODULE_TYPE_IMAGE_SAVER,
+     EVAS_MODULE_TYPE_OBJECT
+} Evas_Module_Type;
+
+
+typedef struct _Evas_Module_Api    Evas_Module_Api;
+typedef struct _Evas_Module        Evas_Module;
+typedef struct _Evas_Module_Path   Evas_Module_Path;
+typedef struct _Evas_Module_Engine Evas_Module_Engine;
+
+/* the module api structure, all modules should define this struct */
+struct _Evas_Module_Api
+{
+   int                 version;
+   Evas_Module_Type    type;
+   const char          *name;
+   const char          *author;
+};
+
+/* the module structure */
+struct _Evas_Module
+{
+   Evas_Module_Api     *api;
+   void                        *handle;        /* the dlopen handle */
+   char                        *path;          /* the path where this modules is */
+   char                        *name;          /* the name of the dir where this module is */
+   struct
+     {
+       int (*open)(Evas_Module *);
+       void (*close)(Evas_Module *);
+     } func;
+   void                *functions;     /* this are the functions exported by the module */
+   void                *data;          /* some internal data for the module i.e the id for engines */
+
+   Evas_Module_Type    type;           /* the type detected by the path */
+
+   int           ref; /* how many refs */
+   int           last_used; /* the cycle count when it was last used */
+
+   unsigned char       loaded : 1;
+};
+
+
+/* the internals of the module api use this struct to reference a path with a module type
+ * instead of deduce the type from the path.
+ * */
+struct _Evas_Module_Path
+{
+   Evas_Module_Type    type;
+   char                       *path;
+};
+
+struct _Evas_Module_Engine
+{
+   int                 id;
+};
+
+void         evas_module_paths_init (void);
+void         evas_module_init       (void);
+Evas_Module *evas_module_find_type  (Evas_Module_Type type, const char *name);
+int          evas_module_load       (Evas_Module *em);
+void         evas_module_unload     (Evas_Module *em);
+void         evas_module_ref        (Evas_Module *em);
+void         evas_module_unref      (Evas_Module *em);
+void         evas_module_use        (Evas_Module *em);
+void         evas_module_clean      (void);
+void         evas_module_shutdown   (void);
+
+
+#endif /* _EVAS_MODULE_H */
diff --git a/src/lib/file/evas_path.c b/src/lib/file/evas_path.c
new file mode 100644 (file)
index 0000000..0394e16
--- /dev/null
@@ -0,0 +1,379 @@
+/* os dependant file code. for unix-y like fs's only for now */
+/* if your os doesn't use unix-like fs starting with "/" for the root and */
+/* the file path separator isn't "/" then you may need to help out by */
+/* adding in a new set of functions here */
+
+#ifndef _WIN32_WCE
+/* UNIX compatability functions */
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include <limits.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <sys/param.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* get the casefold feature! */
+#include <fnmatch.h>
+#include <dirent.h>
+
+int
+evas_file_path_is_full_path(const char *path)
+{
+   if (!path) return 0;
+   if (path[0] == '/') return 1;
+   return 0;
+}
+
+char *
+evas_file_path_join(const char *path, const char *end)
+{
+   char *res = NULL;
+   int len;
+
+   if ((!path) && (!end)) return NULL;
+   if (!path) return strdup(end);
+   if (!end) return strdup(path);
+   len = strlen(path);
+   len += strlen(end);
+   len += strlen("/");
+   res = malloc(len + 1);
+   if (!res) return NULL;
+   strcpy(res, path);
+   strcat(res, "/");
+   strcat(res, end);
+   return res;
+}
+
+int
+evas_file_path_exists(const char *path)
+{
+   struct stat st;
+
+   if (!stat(path, &st)) return 1;
+   return 0;
+}
+
+int
+evas_file_path_is_file(const char *path)
+{
+   struct stat st;
+
+   if (stat(path, &st) == -1) return 0;
+   if (S_ISREG(st.st_mode)) return 1;
+   return 0;
+}
+
+int
+evas_file_path_is_dir(const char *path)
+{
+   struct stat st;
+
+   if (stat(path, &st) == -1) return 0;
+   if (S_ISDIR(st.st_mode)) return 1;
+   return 0;
+}
+
+Evas_List *
+evas_file_path_list(char *path, const char *match, int match_case)
+{
+   Evas_List *files = NULL;
+   DIR *dir;
+
+   dir = opendir(path);
+   if (!dir) return NULL;
+     {
+       struct dirent      *dp;
+       int flags;
+
+       flags = FNM_PATHNAME;
+#ifdef FNM_CASEFOLD
+       if (!match_case)
+         flags |= FNM_CASEFOLD;
+#else
+/*#warning "Your libc does not provide case-insensitive matching!"*/
+#endif
+       while ((dp = readdir(dir)))
+         {
+            if ((!strcmp(dp->d_name, ".")) || (!strcmp(dp->d_name, "..")))
+              continue;
+            if (match)
+              {
+                 if (fnmatch(match, dp->d_name, flags) == 0)
+                   files = evas_list_append(files, strdup(dp->d_name));
+              }
+            else
+              files = evas_list_append(files, strdup(dp->d_name));
+         }
+       closedir(dir);
+     }
+   return files;
+}
+
+DATA64
+evas_file_modified_time(const char *file)
+{
+   struct stat st;
+
+   if (stat(file, &st) < 0) return 0;
+   if (st.st_ctime > st.st_mtime) return (DATA64)st.st_ctime;
+   else return (DATA64)st.st_mtime;
+   return 0;
+}
+
+char *
+evas_file_path_resolve(const char *file)
+{
+#if 0
+   char buf[PATH_MAX], *buf2;
+#endif
+
+   return strdup(file);
+#if 0
+   if (!realpath(file, buf)) return NULL;
+   buf2 = strdup(buf);
+   return buf2;
+#endif
+}
+
+#else
+/* WIN32 WINCE compatability functions */
+
+/* Forward declarations */
+
+static DWORD     winstat(char *path);
+static wchar_t  *convert_utf_unicode(const char* putf);
+static char     *convert_unicode_utf(const wchar_t* punicode);
+
+
+/* Unicode to utf and utf to unicode conversion functions */
+static wchar_t *
+convert_utf_unicode(const char *putf)
+{
+   int len;
+   wchar_t *punicode;
+
+   len = strlen(putf)+ 1; //add one for safety
+
+   punicode = (wchar_t *)malloc(len * sizeof(wchar_t));
+
+   if (punicode == NULL) return NULL;
+
+#ifdef UNICODE
+   strcpy(punicode,putf);
+#else
+   if (mbstowcs(punicode,putf,len) < 0)
+     {
+       free(punicode);
+       return NULL;
+     }
+#endif
+   return punicode;
+}
+
+static char *
+convert_unicode_utf(const wchar_t *punicode)
+{
+   int len;
+   char *putf;
+
+   /* add one for safety */
+   len = wcslen(punicode) + 1;
+
+   /* this will alloc too many bytes */
+   putf = (char *)malloc(len * sizeof(wchar_t));
+
+   if (putf == NULL) return NULL;
+
+#ifdef UNICODE
+   strcpy(putf,punicode);
+#else
+   if (wcstombs(putf,punicode,len) < 0)
+     {
+       free(putf);
+       return NULL;
+     }
+#endif
+   return putf;
+}
+
+/*
+ * win"stat"
+ * This is like the stat function except that it reurns a bitmask (DWORD)
+ * Since this library is complied using MBCS then the path is multibyte
+ */
+static DWORD
+winstat(char *path)
+{
+   DWORD fa;
+   wchar_t *pwpath;    /* A wide character type */
+
+   pwpath = convert_utf_unicode(path);
+   /* 0xFFFFFFFF is the error return val for the GetFile Attributes Function */
+   /* so I am usin this as an error return up here */
+   if (pwpath == NULL) return 0xFFFFFFFF;
+   /* this function needed the wide string"*/
+   /* I dont think that WinCe has mbcs equiv functions and only provides UNICODE*/
+   fa = GetFileAttributesW(pwpath);
+   free(pwpath);
+   return fa;
+}
+
+int
+evas_file_path_is_full_path(char *path)
+{
+   if (!path) return 0;
+   if (path[0] == '\\') return 1;
+   return 0;
+}
+
+char *
+evas_file_path_join(char *path, char *end)
+{
+   char *res = NULL;
+   int len;
+
+   if ((!path) && (!end)) return NULL;
+   if (!path) return strdup(end);
+   if (!end) return strdup(path);
+   len = strlen(path);
+   len += strlen(end);
+   len += strlen("\\");
+   res = malloc(len + 1);
+   if (!res) return NULL;
+   strcpy(res, path);
+   strcat(res, "\\");
+   strcat(res, end);
+   return res;
+}
+
+int
+evas_file_path_exists(char *path)
+{
+   DWORD fa;
+
+   fa = winstat(path);
+   if (fa == 0xFFFFFFFF) return 0;
+   return 1;
+}
+
+int
+evas_file_path_is_file(char *path)
+{
+   DWORD fa;
+
+   fa = winstat(path);
+   if (fa == 0xFFFFFFFF) return 0;
+   if (fa & FILE_ATTRIBUTE_DIRECTORY) return 0;
+   return 1;
+}
+
+int
+evas_file_path_is_dir(char *path)
+{
+   DWORD fa;
+
+   fa = winstat(path);
+   if (fa == 0xFFFFFFFF) return 0;
+   if (fa & FILE_ATTRIBUTE_DIRECTORY) return 1;
+   return 0;
+}
+
+Evas_List *
+evas_file_path_list(char *path, char *match, int match_case)
+{
+   Evas_List *files = NULL;
+   WIN32_FIND_DATAW find;
+   HANDLE fh;
+   int fullpathlen;
+   char *pfp;          /* full path pointer */
+   wchar_t *pfup;      /* full unicode path pointer */
+
+   /*
+    * work out the full path length of the combined patch and match
+    * if we are looking for a specific match eg *.txt then we will will add
+    * the length of *.txt and \\ to the string
+    * if we are not looking for a match then we want to list the whole
+    * directory and we find the length of \\*.*
+    */
+   fullpathlen = strlen(path);
+   if (match)
+     {
+       fullpathlen += strlen("\\");
+       fullpathlen += strlen(match);
+     }
+   else
+     fullpathlen += strlen("\\*.*");
+
+   /* Create the full search path */
+
+   pfp = (char *)malloc(fullpathlen + 1); /* add one for safety*/
+   if (pfp == NULL) return NULL;
+
+   /* construct the full path */
+   strcpy(pfp, path);
+   if (match)
+     {
+       strcat(pfp,"\\");
+       strcat(pfp,match);
+     }
+   else
+     strcat(pfp,"\\*.*");
+
+   /* pfp now contains the fully constructed path*/
+
+   pfup = convert_utf_unicode(pfp);
+   free(pfp); /* chuck it away now as we don't need it, we have a unicode version */
+   if (pfup == NULL) return NULL;
+
+   fh = FindFirstFileW(pfup,&find);
+   free(pfup); /* chuck it away now as we don't need it, we have a handle */
+   if (fh == INVALID_HANDLE_VALUE) return NULL;
+
+   /* OK now go through the directory picking up filenames */
+   do
+     {
+       if (!(find.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY))
+         files = evas_list_append(files,convert_unicode_utf(find.cFileName));
+
+     }
+   while (FindNextFileW(fh,&find));
+   FindClose(fh);
+
+   return files;
+}
+
+DATA64
+evas_file_modified_time(const char *file)
+{
+   WIN32_FIND_DATAW find;
+   HANDLE fh;
+   ULARGE_INTEGER modtime;
+   wchar_t *pufile;
+
+   pufile = convert_utf_unicode(file);
+   if (pufile == NULL) return 0;
+
+   fh = FindFirstFileW(pufile,&find);
+   if (fh == INVALID_HANDLE_VALUE)
+     {
+       free(pufile);
+       return 0;
+     }
+   FindClose(fh);
+   free(pufile);
+
+   modtime.u.HighPart = find.ftCreationTime.dwHighDateTime;
+   modtime.u.LowPart = find.ftCreationTime.dwLowDateTime;
+
+   return modtime.QuadPart;
+}
+
+char *
+evas_file_path_resolve(const char *file)
+{
+   return strdup(file);
+}
+#endif
diff --git a/src/lib/file/evas_path.h b/src/lib/file/evas_path.h
new file mode 100644 (file)
index 0000000..9874675
--- /dev/null
@@ -0,0 +1,15 @@
+#ifndef _EVAS_PATH_H
+#define _EVAS_PATH_H
+
+
+int        evas_file_path_is_full_path (const char *path);
+char      *evas_file_path_join         (const char *path, const char *end);
+int        evas_file_path_exists       (const char *path);
+int        evas_file_path_is_file      (const char *path);
+int        evas_file_path_is_dir       (const char *path);
+Evas_List *evas_file_path_list         (char *path, const char *match, int match_case);
+DATA64     evas_file_modified_time     (const char *file);
+char      *evas_file_path_resolve      (const char *file);
+
+
+#endif /* _EVAS_PATH_H */
diff --git a/src/lib/imaging/.cvsignore b/src/lib/imaging/.cvsignore
new file mode 100644 (file)
index 0000000..7b51b3c
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+evas_imaging.lo
+libevas_imaging.la
diff --git a/src/lib/imaging/Makefile.am b/src/lib/imaging/Makefile.am
new file mode 100644 (file)
index 0000000..cd6528d
--- /dev/null
@@ -0,0 +1,17 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS         = -I. \
+                      -I$(top_srcdir)/src/lib \
+                      -I$(top_srcdir)/src/lib/include \
+                      -DPACKAGE_BIN_DIR=\"$(bindir)\" \
+                      -DPACKAGE_LIB_DIR=\"$(libdir)\" \
+                      -DPACKAGE_DATA_DIR=\"$(datadir)/$(PACKAGE)\" \
+                      @FREETYPE_CFLAGS@ \
+                      @EET_CFLAGS@
+
+noinst_LTLIBRARIES      = libevas_imaging.la
+libevas_imaging_la_SOURCES  = \
+evas_imaging.c
+
+libevas_imaging_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/lib/imaging/evas_imaging.c b/src/lib/imaging/evas_imaging.c
new file mode 100644 (file)
index 0000000..3befdce
--- /dev/null
@@ -0,0 +1,220 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"  /* so that EAPI in Eet.h is correctly defined */
+#endif
+
+#ifdef BUILD_FONT_LOADER_EET
+#include <Eet.h>
+#endif
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+EAPI Evas_Imaging_Image *
+evas_imaging_image_load(const char *file, const char *key)
+{
+   Evas_Imaging_Image *im;
+   RGBA_Image *image;
+
+   if (!file) file = "";
+   if (!key) key = "";
+   evas_common_cpu_init();
+   evas_common_image_init();
+   image = evas_common_load_image_from_file(file, key, NULL);
+   if (!image) return NULL;
+   im = calloc(1, sizeof(Evas_Imaging_Image));
+   if (!im)
+     {
+        evas_cache_image_drop(&image->cache_entry);
+       return NULL;
+     }
+   im->image = image;
+   return im;
+}
+
+EAPI void
+evas_imaging_image_free(Evas_Imaging_Image *im)
+{
+   if (!im) return;
+   evas_cache_image_drop(&im->image->cache_entry);
+   free(im);
+}
+
+EAPI void
+evas_imaging_image_size_get(const Evas_Imaging_Image *im, int *w, int *h)
+{
+   if (!im) return;
+   if (w) *w = im->image->cache_entry.w;
+   if (h) *h = im->image->cache_entry.h;
+}
+
+EAPI Evas_Bool
+evas_imaging_image_alpha_get(const Evas_Imaging_Image *im)
+{
+   if (!im) return 0;
+   if (im->image->cache_entry.flags.alpha) return 1;
+   return 0;
+}
+
+EAPI void
+evas_imaging_image_cache_set(int bytes)
+{
+   evas_common_image_set_cache(bytes);
+}
+
+EAPI int
+evas_imaging_image_cache_get(void)
+{
+   return evas_common_image_get_cache();
+}
+
+static Evas_Font_Hinting_Flags _evas_hinting = EVAS_FONT_HINTING_BYTECODE;
+
+EAPI void
+evas_imaging_font_hinting_set(Evas_Font_Hinting_Flags hinting)
+{
+   _evas_hinting = hinting;
+}
+
+EAPI Evas_Font_Hinting_Flags
+evas_imaging_font_hinting_get(void)
+{
+   return _evas_hinting;
+}
+
+EAPI Evas_Bool
+evas_imaging_font_hinting_can_hint(Evas_Font_Hinting_Flags hinting)
+{
+   return evas_common_hinting_available(hinting);
+}
+
+EAPI Evas_Imaging_Font *
+evas_imaging_font_load(const char *file, const char *key, int size)
+{
+   Evas_Imaging_Font *fn;
+   RGBA_Font *font;
+
+   evas_common_cpu_init();
+   evas_common_font_init();
+   if (!file) file = "";
+   if ((key) && (key[0] == 0)) key = NULL;
+#ifdef BUILD_FONT_LOADER_EET
+   if (key)
+     {
+       char *tmp;
+
+       tmp = evas_file_path_join(file, key);
+       if (tmp)
+         {
+            font = evas_common_font_hinting_load(tmp, size, _evas_hinting);
+            if (!font)
+              {
+                 Eet_File *ef;
+
+                 ef = eet_open((char *)file, EET_FILE_MODE_READ);
+                 if (ef)
+                   {
+                      void *fdata;
+                      int fsize = 0;
+
+                      fdata = eet_read(ef, (char *)key, &fsize);
+                      if ((fdata) && (fsize > 0))
+                        {
+                           font = evas_common_font_memory_hinting_load(tmp, size, fdata, fsize, _evas_hinting);
+                           free(fdata);
+                        }
+                      eet_close(ef);
+                   }
+              }
+            free(tmp);
+         }
+     }
+   else
+#endif
+     {
+       font = evas_common_font_hinting_load((char *)file, size, _evas_hinting);
+     }
+   fn = calloc(1, sizeof(RGBA_Font));
+   if (!fn) return NULL;
+   fn->font = font;
+   return fn;
+}
+
+EAPI void
+evas_imaging_font_free(Evas_Imaging_Font *fn)
+{
+   evas_common_font_free(fn->font);
+   free(fn);
+}
+
+EAPI int
+evas_imaging_font_ascent_get(const Evas_Imaging_Font *fn)
+{
+   return evas_common_font_ascent_get(fn->font);
+}
+
+EAPI int
+evas_imaging_font_descent_get(const Evas_Imaging_Font *fn)
+{
+   return evas_common_font_descent_get(fn->font);
+}
+
+EAPI int
+evas_imaging_font_max_ascent_get(const Evas_Imaging_Font *fn)
+{
+   return evas_common_font_max_ascent_get(fn->font);
+}
+
+EAPI int
+evas_imaging_font_max_descent_get(const Evas_Imaging_Font *fn)
+{
+   return evas_common_font_max_descent_get(fn->font);
+}
+
+EAPI int
+evas_imaging_font_line_advance_get(const Evas_Imaging_Font *fn)
+{
+   return evas_common_font_get_line_advance(fn->font);
+}
+
+EAPI void
+evas_imaging_font_string_advance_get(const Evas_Imaging_Font *fn, char *str, int *x, int *y)
+{
+   evas_common_font_query_advance(fn->font, str, x, y);
+}
+
+EAPI void
+evas_imaging_font_string_size_query(const Evas_Imaging_Font *fn, char *str, int *w, int *h)
+{
+   evas_common_font_query_size(fn->font, str, w, h);
+}
+
+EAPI int
+evas_imaging_font_string_inset_get(const Evas_Imaging_Font *fn, char *str)
+{
+   return evas_common_font_query_inset(fn->font, str);
+}
+
+EAPI int
+evas_imaging_font_string_char_coords_get(const Evas_Imaging_Font *fn, char *str, int pos, int *cx, int *cy, int *cw, int *ch)
+{
+   return evas_common_font_query_char_coords(fn->font, str, pos, cx, cy, cw, ch);
+}
+
+EAPI int
+evas_imaging_font_string_char_at_coords_get(const Evas_Imaging_Font *fn, char *str, int x, int y, int *cx, int *cy, int *cw, int *ch)
+{
+   return evas_common_font_query_text_at_pos(fn->font, str, x, y, cx, cy, cw, ch);
+}
+
+EAPI void
+evas_imaging_font_cache_set(int bytes)
+{
+   evas_common_font_cache_set(bytes);
+}
+
+EAPI int
+evas_imaging_font_cache_get(void)
+{
+   return evas_common_font_cache_get();
+}
+
diff --git a/src/lib/include/.cvsignore b/src/lib/include/.cvsignore
new file mode 100644 (file)
index 0000000..3dda729
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile.in
+Makefile
diff --git a/src/lib/include/Makefile.am b/src/lib/include/Makefile.am
new file mode 100644 (file)
index 0000000..1570bf4
--- /dev/null
@@ -0,0 +1,12 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+EXTRA_DIST = \
+evas_inline.x \
+evas_private.h \
+evas_options.h \
+evas_macros.h \
+evas_mmx.h \
+evas_common.h \
+evas_common_soft16.h \
+evas_blend_ops.h
diff --git a/src/lib/include/evas_blend_ops.h b/src/lib/include/evas_blend_ops.h
new file mode 100644 (file)
index 0000000..30588a4
--- /dev/null
@@ -0,0 +1,177 @@
+#ifndef EVAS_BLEND_OPS_H
+#define EVAS_BLEND_OPS_H
+
+#if defined BUILD_MMX || defined BUILD_SSE
+#include "evas_mmx.h"
+#endif
+
+/* src pixel flags: */
+
+/* pixels none */
+#define SP_N 0
+/* pixels (argb default) */
+#define SP 1
+/* pixels are rgb (ie. alphas == 255) */
+#define SP_AN 2
+/* pixels alpha are sparse */
+#define SP_AS 3
+/* src pixels flags count */
+#define SP_LAST 4
+
+/* src mask flags: */
+
+/* mask none */
+#define SM_N 0
+/* mask (alpha) */
+#define SM 1
+/* mask alphas are 'trivial - ie. only 0 or 255 */
+#define SM_AT 2
+/* mask alphas are sparse */
+#define SM_AS 3
+/* src mask flags count */
+#define SM_LAST 4
+
+/* src color flags: */
+
+/* color is 0xffffffff */
+#define SC_N 0
+/* color (argb default) */
+#define SC 1
+/* color is rgb (ie. 0xffrrggbb) */
+#define SC_AN 2
+/* color is 'alpha' (ie. 0xaaaaaaaa) */
+#define SC_AA 3
+/* src color flags count */
+#define SC_LAST 4
+
+/* dst pixels flags: */
+
+/* pixels (argb default) */
+#define DP  0
+/* pixels are rgb (ie. alphas == 255) */
+#define DP_AN  1
+/* dst pixels flags count */
+#define DP_LAST 2
+
+/* cpu types flags */
+
+/* none, bad news */
+#define CPU_N  0
+/* cpu C */
+#define CPU_C  1
+/* cpu MMX */
+#define CPU_MMX 2
+/* cpu SSE */
+#define CPU_SSE 3
+/* cpu SSE2 */
+#define CPU_SSE2 4
+/* cpu flags count */
+#define CPU_LAST 5
+
+
+/* some useful constants */
+
+extern const DATA32 ALPHA_255;
+extern const DATA32 ALPHA_256;
+
+/* some useful C macros */
+
+#define MUL4_256(a, r, g, b, c) \
+ ( (((((c) >> 8) & 0xff0000) * (a)) & 0xff000000) + \
+   (((((c) & 0xff0000) * (r)) >> 8) & 0xff0000) + \
+   (((((c) & 0xff00) * (g)) >> 8) & 0xff00) + \
+   ((((c) & 0xff) * (b)) >> 8) )
+
+#define MUL3_256(r, g, b, c) \
+ ( (((((c) & 0xff0000) * (r)) >> 8) & 0xff0000) + \
+   (((((c) & 0xff00) * (g)) >> 8) & 0xff00) + \
+   ((((c) & 0xff) * (b)) >> 8) )
+
+#define MUL_256(a, c) \
+ ( (((((c) >> 8) & 0x00ff00ff) * (a)) & 0xff00ff00) + \
+   (((((c) & 0x00ff00ff) * (a)) >> 8) & 0x00ff00ff) )
+
+#define MUL4_SYM(x, y) \
+ ( ((((((x) >> 16) & 0xff00) * (((y) >> 16) & 0xff00)) + 0xff0000) & 0xff000000) + \
+   ((((((x) >> 8) & 0xff00) * (((y) >> 16) & 0xff)) + 0xff00) & 0xff0000) + \
+   ((((((x) & 0xff00) * ((y) & 0xff00)) + 0xff00) >> 16) & 0xff00) + \
+   (((((x) & 0xff) * ((y) & 0xff)) + 0xff) >> 8) )
+
+#define MUL3_SYM(x, y) \
+ ( ((((((x) >> 8) & 0xff00) * (((y) >> 16) & 0xff)) + 0xff00) & 0xff0000) + \
+   ((((((x) & 0xff00) * ((y) & 0xff00)) + 0xff00) >> 16) & 0xff00) + \
+   (((((x) & 0xff) * ((y) & 0xff)) + 0xff) >> 8) )
+
+#define MUL_SYM(a, x) \
+ ( (((((x) >> 8) & 0x00ff00ff) * (a) + 0xff00ff) & 0xff00ff00) + \
+   (((((x) & 0x00ff00ff) * (a) + 0xff00ff) >> 8) & 0x00ff00ff) )
+
+#define MUL_A_256(a, c) \
+ ( ((((c) >> 8) & 0x00ff0000) * (a)) & 0xff000000 )
+
+#define MUL_A_SYM(a, c) \
+ ( (((((c) >> 8) & 0x00ff0000) * (a)) + 0x00ff0000) & 0xff000000 )
+
+#define INTERP_256(a, c0, c1) \
+ ( (((((((c0) >> 8) & 0xff00ff) - (((c1) >> 8) & 0xff00ff)) * (a)) \
+   + ((c1) & 0xff00ff00)) & 0xff00ff00) + \
+   (((((((c0) & 0xff00ff) - ((c1) & 0xff00ff)) * (a)) >> 8) \
+   + ((c1) & 0xff00ff)) & 0xff00ff) )
+
+#define INTERP_RGB_256(a, c0, c1) \
+ ( (((((((c0) >> 8) & 0xff) - (((c1) >> 8) & 0xff)) * (a)) \
+   + ((c1) & 0xff00)) & 0xff00) + \
+   (((((((c0) & 0xff00ff) - ((c1) & 0xff00ff)) * (a)) >> 8) \
+   + ((c1) & 0xff00ff)) & 0xff00ff) )
+
+#define INTERP_A_256(a, c0, c1) \
+ ( (((((((c0) >> 8) & 0xff0000) - (((c1) >> 8) & 0xff0000)) * (a)) \
+   + ((c1) & 0xff000000)) & 0xff000000) )
+
+
+/* some useful MMX macros */
+
+#ifdef BUILD_MMX
+#define MOV_A2R(a, mma) \
+       movd_m2r(a, mma); \
+       punpcklwd_r2r(mma, mma); \
+       punpckldq_r2r(mma, mma);
+
+#define MOV_P2R(c, mmc, mmz) \
+       movd_m2r(c, mmc); \
+       punpcklbw_r2r(mmz, mmc);
+
+#define MOV_R2P(mmc, c, mmz) \
+       packuswb_r2r(mmz, mmc); \
+       movd_r2m(mmc, c);
+
+#define MUL4_256_R2R(mmx, mmy) \
+       pmullw_r2r(mmx, mmy); \
+       psrlw_i2r(8, mmy);
+
+#define MUL4_SYM_R2R(mmx, mmy, mm255) \
+       pmullw_r2r(mmx, mmy); \
+       paddw_r2r(mm255, mmy); \
+       psrlw_i2r(8, mmy);
+
+#define MOV_RA2R(mmx, mma) \
+       movq_r2r(mmx, mma); \
+       punpckhwd_r2r(mma, mma); \
+       punpckhdq_r2r(mma, mma);
+
+#define MOV_PA2R(c, mma) \
+       movd_m2r(c, mma); \
+       punpcklbw_r2r(mma, mma); \
+       punpckhwd_r2r(mma, mma); \
+       punpckhdq_r2r(mma, mma);
+
+#define INTERP_256_R2R(mma, mmx, mmy, mm255) \
+       psubw_r2r(mmy, mmx); \
+       pmullw_r2r(mma, mmx); \
+       psrlw_i2r(8, mmx); \
+       paddw_r2r(mmx, mmy); \
+       pand_r2r(mm255, mmy);
+
+#endif
+
+#endif
diff --git a/src/lib/include/evas_cairo_common.h b/src/lib/include/evas_cairo_common.h
new file mode 100644 (file)
index 0000000..693e459
--- /dev/null
@@ -0,0 +1,169 @@
+#ifndef EVAS_CAIRO_COMMON_H
+#define EVAS_CAIRO_COMMON_H
+
+#include "evas_common.h"
+#include "config.h"
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+#include <cairo.h>
+#include <cairo-xlib.h>
+
+typedef struct _Evas_Cairo_Context                   Evas_Cairo_Context;
+typedef struct _Evas_Cairo_Image                     Evas_Cairo_Image;
+typedef struct _Evas_Cairo_Polygon                   Evas_Cairo_Polygon;
+typedef struct _Evas_Cairo_Polygon_Point             Evas_Cairo_Polygon_Point;
+typedef struct _Evas_Cairo_Gradient                  Evas_Cairo_Gradient;
+
+struct _Evas_Cairo_Context
+{
+   cairo_t         *cairo;
+
+   struct {
+      double r, g, b, a;
+   } col;
+   struct {
+      unsigned int set : 1;
+      double r, g, b, a;
+   } mul;
+};
+
+struct _Evas_Cairo_Image
+{
+   RGBA_Image         *im;
+   int                 references;
+   DATA32             *mulpix;
+   cairo_surface_t    *surface;
+   cairo_pattern_t    *pattern;
+#if 0
+   Evas_Cairo_Context *cc;
+   char                dirty : 1;
+   char                cached : 1;
+#endif
+};
+
+struct _Evas_Cairo_Polygon
+{
+   Evas_List *points;
+};
+
+struct _Evas_Cairo_Polygon_Point
+{
+   int x, y;
+};
+
+#if 0
+struct _Evas_Cairo_Context
+{
+   unsigned char   r, g, b, a;
+
+   struct {
+      char         size : 1;
+      char         dither : 1;
+      char         blend : 1;
+      char         color : 1;
+      char         texture : 1;
+      char         clip : 1;
+      char         buf : 1;
+      char         other : 1;
+   } change;
+
+   struct {
+      char         active : 1;
+      int          x, y, w, h;
+   } clip;
+
+   struct {
+      int checked : 1;
+      int sgis_generate_mipmap : 1;
+      int nv_texture_rectangle : 1;
+   } ext;
+
+   int             references;
+
+   Evas_List      *images;
+};
+
+struct _Evas_Cairo_Image
+{
+   Evas_Cairo_Context *cc;
+   RGBA_Image         *im;
+   cairo_surface_t    *surf;
+   DATA32             *mulpix;
+   int                 references;
+   char                dirty : 1;
+   char                cached : 1;
+};
+
+struct _Evas_Cairo_Polygon
+{
+   Evas_List *points;
+};
+
+struct _Evas_Cairo_Polygon_Point
+{
+   int x, y;
+};
+
+struct _Evas_Cairo_Gradient
+{
+   RGBA_Gradient   *grad;
+};
+#endif
+
+/*
+Evas_GL_Context  *evas_gl_common_context_new(void);
+void              evas_gl_common_context_free(Evas_GL_Context *gc);
+void              evas_gl_common_context_use(Evas_GL_Context *gc);
+void              evas_gl_common_context_resize(Evas_GL_Context *gc, int w, int h);
+void              evas_gl_common_context_color_set(Evas_GL_Context *gc, int r, int g, int b, int a);
+void              evas_gl_common_context_blend_set(Evas_GL_Context *gc, int blend);
+void              evas_gl_common_context_dither_set(Evas_GL_Context *gc, int dither);
+void              evas_gl_common_context_texture_set(Evas_GL_Context *gc, Evas_GL_Texture *tex, int smooth, int w, int h);
+void              evas_gl_common_context_font_texture_set(Evas_GL_Context *gc, Evas_GL_Font_Texture *ft);
+void              evas_gl_common_context_clip_set(Evas_GL_Context *gc, int on, int x, int y, int w, int h);
+void              evas_gl_common_context_read_buf_set(Evas_GL_Context *gc, GLenum buf);
+void              evas_gl_common_context_write_buf_set(Evas_GL_Context *gc, GLenum buf);
+
+Evas_GL_Texture  *evas_gl_common_texture_new(Evas_GL_Context *gc, RGBA_Image *im, int smooth);
+void              evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im, int smooth);
+void              evas_gl_common_texture_free(Evas_GL_Texture *tex);
+void              evas_gl_common_texture_mipmaps_build(Evas_GL_Texture *tex, RGBA_Image *im, int smooth);
+
+Evas_GL_Image    *evas_gl_common_image_load(Evas_GL_Context *gc, char *file, char *key);
+Evas_GL_Image    *evas_gl_common_image_new_from_data(Evas_GL_Context *gc, int w, int h, int *data);
+Evas_GL_Image    *evas_gl_common_image_new_from_copied_data(Evas_GL_Context *gc, int w, int h, int *data);
+Evas_GL_Image    *evas_gl_common_image_new(Evas_GL_Context *gc, int w, int h);
+void              evas_gl_common_image_free(Evas_GL_Image *im);
+void              evas_gl_common_image_dirty(Evas_GL_Image *im);
+
+Evas_GL_Polygon  *evas_gl_common_poly_point_add(Evas_GL_Polygon *poly, int x, int y);
+Evas_GL_Polygon  *evas_gl_common_poly_points_clear(Evas_GL_Polygon *poly);
+
+Evas_GL_Gradient *evas_gl_common_gradient_color_add(Evas_GL_Gradient *gr, int r, int g, int b, int a, int distance);
+Evas_GL_Gradient *evas_gl_common_gradient_colors_clear(Evas_GL_Gradient *gr);
+
+void              evas_gl_common_swap_rect(Evas_GL_Context *gc, int x, int y, int w, int h);
+
+void              evas_gl_common_rect_draw(Evas_GL_Context *gc, RGBA_Draw_Context *dc, int x, int y, int w, int h);
+void              evas_gl_common_image_draw(Evas_GL_Context *gc, RGBA_Draw_Context *dc, Evas_GL_Image *im, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, int smooth);
+void              evas_gl_common_line_draw(Evas_GL_Context *gc, RGBA_Draw_Context *dc, int x1, int y1, int x2, int y2);
+void              evas_gl_common_poly_draw(Evas_GL_Context *gc, RGBA_Draw_Context *dc, Evas_GL_Polygon *poly);
+void              evas_gl_common_gradient_draw(Evas_GL_Context *gc, RGBA_Draw_Context *dc, Evas_GL_Gradient *gr, int x, int y, int w, int h, double angle);
+
+Evas_GL_Font_Texture *evas_gl_font_texture_new(Evas_GL_Context *gc, RGBA_Font_Glyph *fg);
+void                  evas_gl_font_texture_free(Evas_GL_Font_Texture *ft);
+void                  evas_gl_font_texture_draw(Evas_GL_Context *gc, void *surface, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y);
+*/
+
+#endif
diff --git a/src/lib/include/evas_common.h b/src/lib/include/evas_common.h
new file mode 100644 (file)
index 0000000..9d71e3c
--- /dev/null
@@ -0,0 +1,868 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+
+#ifndef EVAS_COMMON_H
+#define EVAS_COMMON_H
+
+#ifdef HAVE_CONFIG_H
+# include "config.h"  /* so that EAPI in Evas.h is correctly defined */
+#endif
+
+#include "Evas.h"
+
+/*****************************************************************************/
+
+#include "evas_options.h"
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#ifdef BUILD_PTHREAD
+# include <pthread.h>
+# include <sched.h>
+# define LK(x)  pthread_mutex_t x
+# define LKI(x) pthread_mutex_init(&(x), NULL);
+# define LKD(x) pthread_mutex_destroy(&(x));
+# define LKL(x) pthread_mutex_lock(&(x));
+# define LKU(x) pthread_mutex_unlock(&(x));
+# define TH(x)  pthread_t x
+# define THI(x) int x
+# define TH_MAX 8
+
+// even though in theory having every Nth rendered line done by a different
+// thread might even out load across threads - it actually slows things down.
+//#define EVAS_SLI 1
+
+#else
+# define LK(x)
+# define LKI(x)
+# define LKD(x)
+# define LKL(x)
+# define LKU(x)
+# define TH(x)
+# define THI(x)
+# define TH_MAX 0
+#endif
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <signal.h>
+#include <setjmp.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <unistd.h>
+#include <time.h>
+#include <ctype.h>
+#include <stdint.h>
+
+#ifdef HAVE_ALLOCA_H
+# include <alloca.h>
+#elif defined __GNUC__
+# define alloca __builtin_alloca
+#elif defined _AIX
+# define alloca __alloca
+#elif defined _MSC_VER
+# include <malloc.h>
+# define alloca _alloca
+#else
+# include <stddef.h>
+# ifdef  __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+#endif
+
+#include <ft2build.h>
+#include FT_FREETYPE_H
+#include FT_GLYPH_H
+#include FT_SIZES_H
+#include FT_MODULE_H
+
+#ifdef __GNUC__
+# if __GNUC__ >= 4
+// BROKEN in gcc 4 on amd64
+//#  pragma GCC visibility push(hidden)
+# endif
+#define LIKELY(x)   __builtin_expect(!!(x), 1)
+#define UNLIKELY(x) __builtin_expect(!!(x), 0)
+#else
+#define LIKELY(x)   (x)
+#define UNLIKELY(x) (x)
+#endif
+
+/*****************************************************************************/
+
+/* use exact rects for updates not tiles */
+/* #define RECTUPDATE */
+#define TILESIZE 8
+
+#ifdef BUILD_SMALL_DITHER_MASK
+# define DM_TABLE     _evas_dither_44
+# define DM_SIZE      4
+# define DM_BITS      4
+# define DM_DIV       16
+# define USE_DITHER_44 1
+# define DM_MSK       (DM_SIZE - 1)
+# define DM_SHF(_b)   (DM_BITS - (8 - _b))
+#else
+# define DM_TABLE     _evas_dither_128128
+# define DM_SIZE      128
+# define DM_BITS      6
+# define DM_DIV       64
+# define USE_DITHER_128128 1
+# define DM_MSK       (DM_SIZE - 1)
+# define DM_SHF(_b)   (DM_BITS - (8 - _b))
+#endif
+
+/* if more than 1/ALPHA_SPARSE_INV_FRACTION is "alpha" (1-254) then sparse
+ * alpha flag gets set */
+#define ALPHA_SPARSE_INV_FRACTION 3
+
+/*****************************************************************************/
+
+/*****************************************************************************/
+
+typedef unsigned long long             DATA64;
+typedef unsigned int                   DATA32;
+typedef unsigned short                 DATA16;
+typedef unsigned char                   DATA8;
+
+typedef struct _Image_Entry             Image_Entry;
+typedef struct _Image_Entry_Flags      Image_Entry_Flags;
+typedef struct _Engine_Image_Entry      Engine_Image_Entry;
+
+typedef struct _RGBA_Image_Loadopts   RGBA_Image_Loadopts;
+typedef struct _RGBA_Pipe_Op          RGBA_Pipe_Op;
+typedef struct _RGBA_Pipe             RGBA_Pipe;
+typedef struct _RGBA_Pipe_Thread_Info RGBA_Pipe_Thread_Info;
+typedef struct _RGBA_Image            RGBA_Image;
+typedef struct _RGBA_Image_Span       RGBA_Image_Span;
+typedef struct _RGBA_Draw_Context     RGBA_Draw_Context;
+typedef struct _RGBA_Gradient         RGBA_Gradient;
+typedef struct _RGBA_Gradient_Color_Stop   RGBA_Gradient_Color_Stop;
+typedef struct _RGBA_Gradient_Alpha_Stop   RGBA_Gradient_Alpha_Stop;
+typedef struct _RGBA_Gradient_Type    RGBA_Gradient_Type;
+typedef struct _RGBA_Polygon_Point    RGBA_Polygon_Point;
+typedef struct _RGBA_Font             RGBA_Font;
+typedef struct _RGBA_Font_Int         RGBA_Font_Int;
+typedef struct _RGBA_Font_Source      RGBA_Font_Source;
+typedef struct _RGBA_Font_Glyph       RGBA_Font_Glyph;
+typedef struct _RGBA_Gfx_Compositor   RGBA_Gfx_Compositor;
+
+typedef struct _Cutout_Rect           Cutout_Rect;
+typedef struct _Cutout_Rects            Cutout_Rects;
+
+typedef struct _Convert_Pal             Convert_Pal;
+
+typedef struct _Tilebuf                 Tilebuf;
+typedef struct _Tilebuf_Tile            Tilebuf_Tile;
+typedef struct _Tilebuf_Rect           Tilebuf_Rect;
+
+/*
+typedef struct _Regionbuf             Regionbuf;
+typedef struct _Regionspan            Regionspan;
+*/
+
+typedef void (*RGBA_Gfx_Func)    (DATA32 *src, DATA8 *mask, DATA32 col, DATA32 *dst, int len);
+typedef void (*RGBA_Gfx_Pt_Func) (DATA32 src, DATA8 mask, DATA32 col, DATA32 *dst);
+typedef void (*Gfx_Func_Copy)    (DATA32 *src, DATA32 *dst, int len);
+
+typedef void (*Gfx_Func_Convert) (DATA32 *src, DATA8 *dst, int src_jump, int dst_jump, int w, int h, int dith_x, int dith_y, DATA8 *pal);
+
+typedef void (*Gfx_Func_Gradient_Fill)(DATA32 *src, int src_len,
+                                         DATA32 *dst, DATA8 *mask, int len,
+                                         int x, int y, int axx, int axy, int ayx, int ayy,
+                                         void *geom_data);
+
+#include "../cache/evas_cache.h"
+
+/*****************************************************************************/
+
+typedef enum _RGBA_Image_Flags
+{
+   RGBA_IMAGE_NOTHING       = (0),
+/*    RGBA_IMAGE_HAS_ALPHA     = (1 << 0), */
+   RGBA_IMAGE_IS_DIRTY      = (1 << 1),
+   RGBA_IMAGE_INDEXED       = (1 << 2),
+   RGBA_IMAGE_ALPHA_ONLY    = (1 << 3),
+   RGBA_IMAGE_ALPHA_TILES   = (1 << 4),
+/*    RGBA_IMAGE_ALPHA_SPARSE  = (1 << 5), */
+/*    RGBA_IMAGE_LOADED        = (1 << 6), */
+/*    RGBA_IMAGE_NEED_DATA     = (1 << 7) */
+} RGBA_Image_Flags;
+
+typedef enum _Convert_Pal_Mode
+{
+   PAL_MODE_NONE,
+   PAL_MODE_MONO,
+   PAL_MODE_GRAY4,
+   PAL_MODE_GRAY16,
+   PAL_MODE_GRAY64,
+   PAL_MODE_GRAY256,
+   PAL_MODE_RGB111,
+   PAL_MODE_RGB121,
+   PAL_MODE_RGB221,
+   PAL_MODE_RGB222,
+   PAL_MODE_RGB232,
+   PAL_MODE_RGB332,
+   PAL_MODE_RGB666,
+   PAL_MODE_LAST
+} Convert_Pal_Mode;
+
+typedef enum _CPU_Features
+{
+   CPU_FEATURE_C       = 0,
+   CPU_FEATURE_MMX     = (1 << 0),
+   CPU_FEATURE_MMX2    = (1 << 1),
+   CPU_FEATURE_SSE     = (1 << 2),
+   CPU_FEATURE_ALTIVEC = (1 << 3),
+   CPU_FEATURE_VIS     = (1 << 4),
+   CPU_FEATURE_VIS2    = (1 << 5)
+} CPU_Features;
+
+typedef enum _Font_Hint_Flags
+{
+   FONT_NO_HINT,
+   FONT_AUTO_HINT,
+   FONT_BYTECODE_HINT
+} Font_Hint_Flags;
+
+/*****************************************************************************/
+
+struct _RGBA_Image_Loadopts
+{
+   int                  scale_down_by; // if > 1 then use this
+   double               dpi; // if > 0.0 use this
+   int                  w, h; // if > 0 use this
+};
+
+struct _Image_Entry_Flags
+{
+   Evas_Bool loaded       : 1;
+   Evas_Bool dirty        : 1;
+   Evas_Bool activ        : 1;
+   Evas_Bool need_data    : 1;
+   Evas_Bool lru_nodata   : 1;
+   Evas_Bool cached       : 1;
+   Evas_Bool alpha        : 1;
+   Evas_Bool alpha_sparse : 1;
+};
+
+struct _Image_Entry
+{
+  Evas_Object_List       _list_data;
+
+  Evas_Cache_Image      *cache;
+
+  const char            *cache_key;
+
+  const char            *file;
+  const char            *key;
+
+  time_t                 timestamp;
+  time_t                 laststat;
+
+  int                    references;
+
+  unsigned char          scale;
+
+  RGBA_Image_Loadopts    load_opts;
+  int                    space;
+  int                    w;
+  int                    h;
+
+  struct
+  {
+     int                w;
+     int                h;
+  } allocated;
+
+  struct
+  {
+     void              *module;
+     void              *loader;
+  } info;
+
+  Image_Entry_Flags      flags;
+};
+
+struct _Engine_Image_Entry
+{
+   Evas_Object_List              _list_data;
+
+   /* Upper Engine data. */
+   Image_Entry                  *src;
+
+   /* Cache stuff. */
+   Evas_Cache_Engine_Image      *cache;
+   const char                   *cache_key;
+
+   struct
+   {
+     Evas_Bool                   cached : 1;
+     Evas_Bool                   activ : 1;
+     Evas_Bool                   dirty : 1;
+     Evas_Bool                   loaded : 1;
+     Evas_Bool                   need_parent : 1;
+   } flags;
+
+   int                           references;
+   int                           w;
+   int                           h;
+};
+
+struct _Cutout_Rect
+{
+   int               x, y, w, h;
+};
+
+struct _Cutout_Rects
+{
+   Cutout_Rect*      rects;
+   int               active;
+   int               max;
+};
+
+struct _RGBA_Draw_Context
+{
+   struct {
+      Evas_Bool use : 1;
+      DATA32 col;
+   } mul;
+   struct {
+      DATA32 col;
+   } col;
+   struct RGBA_Draw_Context_clip {
+      int    x, y, w, h;
+      Evas_Bool use : 1;
+   } clip;
+   Cutout_Rects cutout;
+   struct {
+      struct {
+        void *(*gl_new)  (void *data, RGBA_Font_Glyph *fg);
+        void  (*gl_free) (void *ext_dat);
+        void  (*gl_draw) (void *data, void *dest, void *context, RGBA_Font_Glyph *fg, int x, int y);
+      } func;
+      void *data;
+   } font_ext;
+   struct {
+      int color_space;
+   } interpolation;
+   struct {
+      int y, h;
+   } sli;
+   int            render_op;
+   Evas_Bool anti_alias : 1;
+};
+
+struct _RGBA_Pipe_Op
+{
+   RGBA_Draw_Context         context;
+   void                    (*op_func) (RGBA_Image *dst, RGBA_Pipe_Op *op, RGBA_Pipe_Thread_Info *info);
+   void                    (*free_func) (RGBA_Pipe_Op *op);
+
+   union {
+      struct {
+        int                 x, y, w, h;
+      } rect;
+      struct {
+        int                 x0, y0, x1, y1;
+      } line;
+      struct {
+        RGBA_Polygon_Point *points;
+      } poly;
+      struct {
+        RGBA_Gradient      *grad;
+        int                 x, y, w, h;
+      } grad;
+      struct {
+        RGBA_Font          *font;
+        int                 x, y;
+        char               *text;
+      } text;
+      struct {
+        RGBA_Image         *src;
+        int                 sx, sy, sw, sh, dx, dy, dw, dh;
+        int                 smooth;
+        char               *text;
+      } image;
+   } op;
+};
+
+#define PIPE_LEN 256
+
+struct _RGBA_Pipe
+{
+   Evas_Object_List  _list_data;
+   int               op_num;
+   RGBA_Pipe_Op      op[PIPE_LEN];
+};
+
+struct _RGBA_Pipe_Thread_Info
+{
+   RGBA_Image *im;
+   int         x, y, w, h;
+};
+
+struct _RGBA_Image
+{
+   Image_Entry          cache_entry;
+
+   RGBA_Image_Flags     flags;
+   struct
+     {
+/*     void           *module; */
+/*     void           *loader; */
+/*     char           *real_file; */
+       char           *comment;
+//     int             format;
+     } info;
+
+   void                *extended_info;
+   RGBA_Pipe           *pipe;
+   int                  ref;
+
+/*    unsigned char        scale; */
+
+   /* Colorspace stuff. */
+   struct {
+      void              *data;
+      Evas_Bool          no_free : 1;
+      Evas_Bool          dirty : 1;
+   } cs;
+
+   /* RGBA stuff */
+   struct
+   {
+      DATA32            *data;
+      Evas_Bool          no_free : 1;
+   } image;
+};
+
+struct _RGBA_Gradient_Color_Stop
+{
+   Evas_Object_List  _list_data;
+   int               r, g, b, a;
+   int               dist;
+};
+
+struct _RGBA_Gradient_Alpha_Stop
+{
+   Evas_Object_List  _list_data;
+   int               a;
+   int               dist;
+};
+
+struct _RGBA_Gradient
+{
+   struct
+     {
+       DATA32        *data;
+       int            len;
+       float          angle;
+       int            direction;
+       float          offset;
+       Evas_Bool      has_alpha : 1;
+     } map;
+
+   struct {
+       Evas_Object_List *stops;
+       DATA32           *data;
+       int               nstops;
+       int               len;
+   }  color;
+   struct {
+       Evas_Object_List *stops;
+       DATA8            *data;
+       int               nstops;
+       int               len;
+   }  alpha;
+
+   struct
+     {
+       int            x, y, w, h;
+       int            spread;
+       float          angle;
+     } fill;
+   struct
+     {
+       char          *name;
+       char          *params;
+       RGBA_Gradient_Type *geometer;
+       void          *gdata;
+     } type;
+
+   int references;
+
+   Evas_Bool imported_data : 1;
+   Evas_Bool has_alpha : 1;
+};
+
+struct _RGBA_Gradient_Type
+{
+   const char              *name;
+   void                    (*init)(void);
+   void                    (*shutdown)(void);
+   void                    (*geom_init)(RGBA_Gradient *gr);
+   void                    (*geom_set)(RGBA_Gradient *gr);
+   void                    (*geom_free)(void *gdata);
+   int                     (*has_alpha)(RGBA_Gradient *gr, int render_op);
+   int                     (*has_mask)(RGBA_Gradient *gr, int render_op);
+   int                     (*get_map_len)(RGBA_Gradient *gr);
+   Gfx_Func_Gradient_Fill  (*get_fill_func)(RGBA_Gradient *gr, int render_op, unsigned char aa);
+};
+
+struct _RGBA_Polygon_Point
+{
+   Evas_Object_List  _list_data;
+   int               x, y;
+};
+
+struct _RGBA_Font
+{
+   Evas_List *fonts;
+   Font_Hint_Flags hinting;
+   int references;
+   LK(lock);
+};
+
+struct _RGBA_Font_Int
+{
+   Evas_Object_List  _list_data;
+
+   RGBA_Font_Source *src;
+
+   int               size;
+   int               real_size;
+
+   struct {
+      FT_Size       size;
+   } ft;
+
+   Evas_Hash       *glyphs;
+
+   int              usage;
+   Font_Hint_Flags hinting;
+
+   int              references;
+};
+
+struct _RGBA_Font_Source
+{
+   Evas_Object_List  _list_data;
+
+   const char       *name;
+   const char       *file;
+
+   void             *data;
+   int               data_size;
+   int               current_size;
+   Evas_Array_Hash  *charmap;
+
+   struct {
+      int           orig_upem;
+      FT_Face       face;
+   } ft;
+
+   int              references;
+};
+
+struct _RGBA_Font_Glyph
+{
+   FT_Glyph        glyph;
+   FT_BitmapGlyph  glyph_out;
+   /* this is a problem - only 1 engine at a time can extend such a font... grrr */
+   void           *ext_dat;
+   void           (*ext_dat_free) (void *ext_dat);
+};
+
+struct _RGBA_Gfx_Compositor
+{
+   const char *name;
+
+   void              (*init)(void);
+   void              (*shutdown)(void);
+
+   RGBA_Gfx_Func  (*composite_pixel_span_get)(RGBA_Image *src, RGBA_Image *dst, int pixels);
+   RGBA_Gfx_Func  (*composite_color_span_get)(DATA32 col, RGBA_Image *dst, int pixels);
+   RGBA_Gfx_Func  (*composite_pixel_color_span_get)(RGBA_Image *src, DATA32 col, RGBA_Image *dst, int pixels);
+   RGBA_Gfx_Func  (*composite_mask_color_span_get)(DATA32 col, RGBA_Image *dst, int pixels);
+   RGBA_Gfx_Func  (*composite_pixel_mask_span_get)(RGBA_Image *src, RGBA_Image *dst, int pixels);
+
+   RGBA_Gfx_Pt_Func  (*composite_pixel_pt_get)(Image_Entry_Flags src_flags, RGBA_Image *dst);
+   RGBA_Gfx_Pt_Func  (*composite_color_pt_get)(DATA32 col, RGBA_Image *dst);
+   RGBA_Gfx_Pt_Func  (*composite_pixel_color_pt_get)(Image_Entry_Flags src_flags, DATA32 col, RGBA_Image *dst);
+   RGBA_Gfx_Pt_Func  (*composite_mask_color_pt_get)(DATA32 col, RGBA_Image *dst);
+   RGBA_Gfx_Pt_Func  (*composite_pixel_mask_pt_get)(Image_Entry_Flags src_flags, RGBA_Image *dst);
+};
+
+#define EVAS_RECT_SPLIT 1
+#ifdef EVAS_RECT_SPLIT
+typedef struct list_node list_node_t;
+typedef struct list list_t;
+typedef struct rect rect_t;
+typedef struct rect_node rect_node_t;
+
+struct list_node
+{
+    struct list_node *next;
+};
+
+struct list
+{
+    struct list_node *head;
+    struct list_node *tail;
+};
+
+struct rect
+{
+    short left;
+    short top;
+    short right;
+    short bottom;
+    short width;
+    short height;
+    int area;
+};
+
+struct rect_node
+{
+    struct list_node _lst;
+    struct rect rect;
+};
+
+void rect_list_node_pool_set_max(int max);
+void rect_list_node_pool_flush(void);
+list_node_t *rect_list_node_pool_get(void);
+void rect_list_node_pool_put(list_node_t *node);
+
+void rect_init(rect_t *r, int x, int y, int w, int h);
+void rect_list_append_node(list_t *rects, list_node_t *node);
+void rect_list_append(list_t *rects, const rect_t r);
+void rect_list_append_xywh(list_t *rects, int x, int y, int w, int h);
+void rect_list_concat(list_t *rects, list_t *other);
+list_node_t *rect_list_unlink_next(list_t *rects, list_node_t *parent_node);
+void rect_list_del_next(list_t *rects, list_node_t *parent_node);
+void rect_list_clear(list_t *rects);
+void rect_list_del_split_strict(list_t *rects, const rect_t del_r);
+void rect_list_add_split_strict(list_t *rects, list_node_t *node);
+list_node_t *rect_list_add_split_fuzzy(list_t *rects, list_node_t *node, int accepted_error);
+void rect_list_merge_rects(list_t *rects, list_t *to_merge, int accepted_error);void rect_list_add_split_fuzzy_and_merge(list_t *rects, list_node_t *node, int split_accepted_error, int merge_accepted_error);
+
+void rect_print(const rect_t r);
+void rect_list_print(const list_t rects);
+#endif /* EVAS_RECT_SPLIT */
+
+struct _Tilebuf
+{
+   int outbuf_w;
+   int outbuf_h;
+
+   struct {
+      int           w, h;
+   } tile_size;
+
+#ifdef RECTUPDATE
+   Regionbuf *rb;
+#elif defined(EVAS_RECT_SPLIT)
+   int need_merge;
+   list_t rects;
+#else
+   struct {
+      int           w, h;
+      Tilebuf_Tile *tiles;
+   } tiles;
+#endif
+};
+
+struct _Tilebuf_Tile
+{
+   Evas_Bool redraw : 1;
+/* FIXME: need these flags later - but not now */
+/*
+   Evas_Bool done   : 1;
+   Evas_Bool edge   : 1;
+   Evas_Bool from   : 1;
+
+   struct {
+      int dx, dy;
+   } vector;
+ */
+};
+
+struct _Tilebuf_Rect
+{
+   Evas_Object_List  _list_data;
+   int               x, y, w, h;
+};
+/*
+struct _Regionbuf
+{
+   int w, h;
+   Regionspan **spans;
+};
+
+struct _Regionspan
+{
+   Evas_Object_List  _list_data;
+   int x1, x2;
+};
+*/
+
+struct _Convert_Pal
+{
+   int               references;
+   int               count;
+   Convert_Pal_Mode  colors;
+   DATA8            *lookup;
+   void             *data;
+};
+
+/****/
+
+/*****************************************************************************/
+#include "evas_macros.h"
+
+#ifndef WORDS_BIGENDIAN
+/* x86 */
+#define A_VAL(p) ((DATA8 *)(p))[3]
+#define R_VAL(p) ((DATA8 *)(p))[2]
+#define G_VAL(p) ((DATA8 *)(p))[1]
+#define B_VAL(p) ((DATA8 *)(p))[0]
+#define AR_VAL(p) ((DATA16 *)(p)[1])
+#define GB_VAL(p) ((DATA16 *)(p)[0])
+#else
+/* ppc */
+#define A_VAL(p) ((DATA8 *)(p))[0]
+#define R_VAL(p) ((DATA8 *)(p))[1]
+#define G_VAL(p) ((DATA8 *)(p))[2]
+#define B_VAL(p) ((DATA8 *)(p))[3]
+#define AR_VAL(p) ((DATA16 *)(p)[0])
+#define GB_VAL(p) ((DATA16 *)(p)[1])
+#endif
+
+#define RGB_JOIN(r,g,b) \
+        (((r) << 16) + ((g) << 8) + (b))
+
+#define ARGB_JOIN(a,r,g,b) \
+        (((a) << 24) + ((r) << 16) + ((g) << 8) + (b))
+
+#include "evas_blend_ops.h"
+
+#define _EVAS_RENDER_FILL        -1
+#define _EVAS_RENDER_BLEND        0
+#define _EVAS_RENDER_BLEND_REL    1
+#define _EVAS_RENDER_COPY         2
+#define _EVAS_RENDER_COPY_REL     3
+#define _EVAS_RENDER_ADD          4
+#define _EVAS_RENDER_ADD_REL      5
+#define _EVAS_RENDER_SUB          6
+#define _EVAS_RENDER_SUB_REL      7
+#define _EVAS_RENDER_TINT         8
+#define _EVAS_RENDER_TINT_REL     9
+#define _EVAS_RENDER_MASK         10
+#define _EVAS_RENDER_MUL          11
+#define _EVAS_RENDER_CLIP         12
+
+#define _EVAS_TEXTURE_REFLECT           0
+#define _EVAS_TEXTURE_REPEAT            1
+#define _EVAS_TEXTURE_RESTRICT          2
+#define _EVAS_TEXTURE_RESTRICT_REFLECT  3
+#define _EVAS_TEXTURE_RESTRICT_REPEAT   4
+#define _EVAS_TEXTURE_PAD               5
+
+#define _EVAS_COLOR_SPACE_ARGB    0
+#define _EVAS_COLOR_SPACE_AHSV    1
+
+/*****************************************************************************/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****/
+void evas_common_init                                   (void);
+void evas_common_shutdown                               (void);
+
+EAPI void evas_common_cpu_init                          (void);
+
+int  evas_common_cpu_have_cpuid                         (void);
+int  evas_common_cpu_has_feature                        (unsigned int feature);
+EAPI void evas_common_cpu_can_do                        (int *mmx, int *sse, int *sse2);
+EAPI void evas_common_cpu_end_opt                       (void);
+EAPI int evas_common_cpu_count                          (void);
+
+/****/
+#include "../engines/common/evas_blend.h"
+
+EAPI Gfx_Func_Copy        evas_common_draw_func_copy_get        (int pixels, int reverse);
+
+/****/
+#include "../engines/common/evas_convert_color.h"
+#include "../engines/common/evas_convert_colorspace.h"
+#include "../engines/common/evas_convert_main.h"
+#include "../engines/common/evas_convert_yuv.h"
+#include "../engines/common/evas_scale_main.h"
+#include "../engines/common/evas_scale_smooth.h"
+#include "../engines/common/evas_scale_span.h"
+
+/****/
+#include "../engines/common/evas_image.h"
+
+/****/
+#include "../engines/common/evas_line.h"
+#include "../engines/common/evas_polygon.h"
+#include "../engines/common/evas_rectangle.h"
+
+/****/
+EAPI void     evas_common_blit_init               (void);
+
+EAPI void     evas_common_blit_rectangle          (const RGBA_Image *src, RGBA_Image *dst, int src_x, int src_y, int w, int h, int dst_x, int dst_y);
+
+/****/
+#include "../engines/common/evas_gradient.h"
+#include "../engines/common/evas_font.h"
+
+/****/
+EAPI void          evas_common_tilebuf_init               (void);
+
+EAPI Tilebuf      *evas_common_tilebuf_new               (int w, int h);
+EAPI void          evas_common_tilebuf_free              (Tilebuf *tb);
+EAPI void          evas_common_tilebuf_set_tile_size     (Tilebuf *tb, int tw, int th);
+EAPI void          evas_common_tilebuf_get_tile_size     (Tilebuf *tb, int *tw, int *th);
+EAPI int           evas_common_tilebuf_add_redraw        (Tilebuf *tb, int x, int y, int w, int h);
+EAPI int           evas_common_tilebuf_del_redraw        (Tilebuf *tb, int x, int y, int w, int h);
+EAPI int           evas_common_tilebuf_add_motion_vector (Tilebuf *tb, int x, int y, int w, int h, int dx, int dy, int alpha);
+EAPI void          evas_common_tilebuf_clear             (Tilebuf *tb);
+EAPI Tilebuf_Rect *evas_common_tilebuf_get_render_rects  (Tilebuf *tb);
+EAPI void          evas_common_tilebuf_free_render_rects (Tilebuf_Rect *rects);
+
+/*
+Regionbuf    *evas_common_regionbuf_new       (int w, int h);
+void          evas_common_regionbuf_free      (Regionbuf *rb);
+void          evas_common_regionbuf_clear     (Regionbuf *rb);
+void          evas_common_regionbuf_span_add  (Regionbuf *rb, int x1, int x2, int y);
+void          evas_common_regionbuf_span_del  (Regionbuf *rb, int x1, int x2, int y);
+Tilebuf_Rect *evas_common_regionbuf_rects_get (Regionbuf *rb);
+*/
+
+/****/
+#include "../engines/common/evas_draw.h"
+
+/****/
+#include "../engines/common/evas_pipe.h"
+
+void              evas_font_dir_cache_free(void);
+
+/****/
+
+/*****************************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/include/evas_common_soft16.h b/src/lib/include/evas_common_soft16.h
new file mode 100644 (file)
index 0000000..dd63ba3
--- /dev/null
@@ -0,0 +1,147 @@
+#ifndef EVAS_COMMON_SOFT16_H
+#define EVAS_COMMON_SOFT16_H
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef always_inline
+#if defined(__GNUC__) && (__GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ > 0)
+#    define always_inline __attribute__((always_inline)) inline
+#else
+#    define always_inline inline
+#endif
+#endif
+
+#define RGB_565_UNPACKED_MASK 0x07e0f81f
+#define RGB_565_UNPACK(rgb)                                             \
+   (((rgb) | ((rgb) << 16)) & RGB_565_UNPACKED_MASK)
+#define RGB_565_PACK(rgb)                                               \
+  ((((rgb) & RGB_565_UNPACKED_MASK) |                                   \
+   ((rgb) & RGB_565_UNPACKED_MASK) >> 16) & 0xffff)
+#define RGB_565_UNPACKED_BLEND(a, b, alpha)                             \
+   ((b) + (a) - ((((b) * (alpha)) >> 5) & RGB_565_UNPACKED_MASK))
+#define RGB_565_UNPACKED_BLEND_UNMUL(a, b, alpha)                       \
+   ((b) + ((((a) - (b)) * (alpha)) >> 5))
+
+#define RGB_565_FROM_COMPONENTS(r, g, b)                                \
+  (((((r) >> 3) & 0x1f) << 11) |                                        \
+   ((((g) >> 2) & 0x3f) << 5) |                                         \
+   (((b) >> 3) & 0x1f))
+
+#define UNROLL2(op...) op op
+#define UNROLL4(op...) UNROLL2(op) UNROLL2(op)
+#define UNROLL8(op...) UNROLL4(op) UNROLL4(op)
+#define UNROLL16(op...) UNROLL8(op) UNROLL8(op)
+
+#if defined(__ARM_ARCH_3M__) || defined(__ARM_ARCH_4__) || \
+    defined(__ARM_ARCH_4T__)
+# define __ARM_ARCH__ 4
+#endif
+
+#if defined(__ARM_ARCH_5__) || defined(__ARM_ARCH_5T__) || \
+    defined(__ARM_ARCH_5E__) || defined(__ARM_ARCH_5TE__) || \
+    defined(__ARM_ARCH_5TEJ__)
+# define __ARM_ARCH__ 5
+#endif
+
+#if defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || \
+    defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
+    defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__)
+# define __ARM_ARCH__ 6
+#endif
+
+#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
+    defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__)
+# define __ARM_ARCH__ 7
+#endif
+
+
+#if defined(__ARM_ARCH__) && (__ARM_ARCH__ >= 5)
+/* tested on ARMv6 (arm1136j-s), Nokia N800 CPU */
+#define pld(addr, off)                                                  \
+   __asm__("pld [%[address], %[offset]]"::                              \
+           [address] "r" (addr), [offset] "i" (off))
+#else
+#define pld(addr, off)
+#endif /* __ARMEL__ */
+
+static inline int
+_calc_stride(int w)
+{
+   int pad;
+
+   pad = w % 4;
+   if (!pad)  return w;
+   else return w + 4 - pad;
+}
+
+#define IMG_BYTE_SIZE(stride, height, has_alpha)                       \
+   ((stride) * (height) * (!(has_alpha) ? 2 : 3))
+
+typedef struct _Soft16_Image Soft16_Image;
+struct _Soft16_Image
+{
+   Image_Entry    cache_entry;
+
+   RGBA_Image    *source;
+
+   int            stride;     // pixel stride - likely a multiple of 2
+   DATA16        *pixels;     // 16bpp pixels rgb565
+   DATA8         *alpha;      // 8bit alpha mask - optional. points into pixels
+
+   struct
+   {
+/*      unsigned char  have_alpha  : 1; // 1 if we have halpha */
+     unsigned char  free_pixels : 1; // 1 if pixels should be freed
+     unsigned char  free_alpha  : 1; // 1 if alpha mask should be freed
+   } flags;
+};
+
+/**
+ * Image (evas_soft16_main.c)
+ */
+EAPI void                evas_common_soft16_image_init(void);
+EAPI void                evas_common_soft16_image_shutdown(void);
+EAPI Evas_Cache_Image   *evas_common_soft16_image_cache_get(void);
+
+EAPI void                soft16_image_draw(Soft16_Image *src, Soft16_Image *dst, RGBA_Draw_Context *dc, int src_region_x, int src_region_y, int src_region_w, int src_region_h, int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h, int smooth);
+EAPI Soft16_Image       *soft16_image_alpha_set(Soft16_Image *im, int have_alpha);
+
+void                     soft16_image_draw_unscaled(Soft16_Image *src, Soft16_Image *dst, RGBA_Draw_Context *dc, const Evas_Rectangle sr, const Evas_Rectangle dr, const Evas_Rectangle cr);
+void                     soft16_image_draw_scaled_sampled(Soft16_Image *src, Soft16_Image *dst, RGBA_Draw_Context *dc, const Evas_Rectangle sr, const Evas_Rectangle dr, const Evas_Rectangle cr);
+
+/* convert/dither functions */
+void                     soft16_image_convert_from_rgb(Soft16_Image *im, const DATA32 *src);
+void                     soft16_image_convert_from_rgba(Soft16_Image *im, const DATA32 *src);
+
+/**
+ * Rectangle (evas_soft16_rectangle.c)
+ */
+EAPI void                soft16_rectangle_draw(Soft16_Image *dst, RGBA_Draw_Context *dc, int x, int y, int w, int h);
+
+/**
+ * Polygon (evas_soft16_polygon.c)
+ */
+EAPI void                soft16_polygon_draw(Soft16_Image *dst, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points);
+
+/**
+ * Line (evas_soft16_line.c)
+ */
+EAPI void                soft16_line_draw(Soft16_Image *dst, RGBA_Draw_Context *dc, int x0, int y0, int x1, int y1);
+
+/**
+ * Font (evas_soft16_font.c)
+ */
+EAPI void               *soft16_font_glyph_new(void *data, RGBA_Font_Glyph *fg);
+EAPI void                soft16_font_glyph_free(void *ext_dat);
+EAPI void                soft16_font_glyph_draw(void *data, void *dest, void *context, RGBA_Font_Glyph *fg, int x, int y);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/lib/include/evas_inline.x b/src/lib/include/evas_inline.x
new file mode 100644 (file)
index 0000000..b60cccd
--- /dev/null
@@ -0,0 +1,207 @@
+#ifndef EVAS_INLINE_H
+#define EVAS_INLINE_H
+
+static inline void
+evas_add_rect(Evas_Rectangles *rects, int x, int y, int w, int h)
+{
+   if ((rects->count + 1) > rects->total)
+     {
+       Evas_Rectangle *_add_rect;
+       unsigned int _tmp_total;
+
+       _tmp_total = rects->total + 32;
+       _add_rect = (Evas_Rectangle *)realloc(rects->array, sizeof(Evas_Rectangle) * _tmp_total);
+       if (!_add_rect) return ;
+
+       rects->total = _tmp_total;
+       rects->array = _add_rect;
+     }
+   rects->array[rects->count].x = x;
+   rects->array[rects->count].y = y;
+   rects->array[rects->count].w = w;
+   rects->array[rects->count].h = h;
+   rects->count += 1;
+}
+
+static inline Cutout_Rect*
+evas_common_draw_context_cutouts_add(Cutout_Rects* rects,
+                                     int x, int y, int w, int h)
+{
+   Cutout_Rect* rect;
+
+   if (rects->max < (rects->active + 1))
+     {
+       rects->max += 32;
+       rects->rects = (Cutout_Rect *)realloc(rects->rects, sizeof(Cutout_Rect) * rects->max);
+     }
+
+   rect = rects->rects + rects->active;
+   rect->x = x;
+   rect->y = y;
+   rect->w = w;
+   rect->h = h;
+   rects->active++;
+
+   return rect;
+}
+
+static inline int
+evas_object_is_opaque(Evas_Object *obj)
+{
+   if (obj->smart.smart) return 0;
+   if (obj->cur.cache.clip.a == 255)
+     {
+       if (obj->func->is_opaque)
+         return obj->func->is_opaque(obj);
+       return 1;
+     }
+   return 0;
+}
+
+static inline int
+evas_event_passes_through(Evas_Object *obj)
+{
+   if (obj->layer->evas->events_frozen > 0) return 1;
+   if (obj->pass_events) return 1;
+   if (obj->parent_cache_valid) return obj->parent_pass_events;
+   if (obj->smart.parent)
+     {
+       int par_pass;
+
+       par_pass = evas_event_passes_through(obj->smart.parent);
+       obj->parent_cache_valid = 1;
+       obj->parent_pass_events = par_pass;
+       return par_pass;
+     }
+   return 0;
+}
+
+static inline int
+evas_object_is_visible(Evas_Object *obj)
+{
+   if (obj->smart.smart) return 0;
+   if ((obj->cur.visible) &&
+       (obj->cur.cache.clip.visible) &&
+       (obj->cur.cache.clip.a > 0))
+     {
+       if (obj->func->is_visible)
+         return obj->func->is_visible(obj);
+       return 1;
+     }
+   return 0;
+}
+
+static inline int
+evas_object_clippers_is_visible(Evas_Object *obj)
+{
+   if (obj->cur.visible)
+     {
+       if (obj->cur.clipper)
+         return evas_object_clippers_is_visible(obj->cur.clipper);
+       return 1;
+     }
+   return 0;
+}
+
+static inline int
+evas_object_is_in_output_rect(Evas_Object *obj, int x, int y, int w, int h)
+{
+   if (obj->smart.smart) return 0;
+   /* assumes coords have been recalced */
+   if ((RECTS_INTERSECT(x, y, w, h,
+                       obj->cur.cache.clip.x,
+                       obj->cur.cache.clip.y,
+                       obj->cur.cache.clip.w,
+                       obj->cur.cache.clip.h)))
+     return 1;
+   return 0;
+}
+
+static inline int
+evas_object_is_active(Evas_Object *obj)
+{
+   if (obj->smart.smart) return 0;
+   if ((evas_object_is_visible(obj) || evas_object_was_visible(obj)) &&
+       (evas_object_is_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
+                                     obj->layer->evas->output.h) ||
+       evas_object_was_in_output_rect(obj, 0, 0, obj->layer->evas->output.w,
+                                      obj->layer->evas->output.h)))
+     return 1;
+   return 0;
+}
+
+static inline void
+evas_object_coords_recalc(Evas_Object *obj)
+{
+   if (obj->smart.smart) return;
+////   if (obj->cur.cache.geometry.validity == obj->layer->evas->output_validity)
+////     return;
+////   obj->cur.cache.geometry.x =
+////     evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.x);
+////   obj->cur.cache.geometry.y =
+////     evas_coord_world_y_to_screen(obj->layer->evas, obj->cur.geometry.y);
+////   obj->cur.cache.geometry.w =
+////     evas_coord_world_x_to_screen(obj->layer->evas, obj->cur.geometry.w) -
+////     evas_coord_world_x_to_screen(obj->layer->evas, 0);
+////   obj->cur.cache.geometry.h =
+////     evas_coord_world_y_to_screen(obj->layer->evas, obj->cur.geometry.h) -
+////     evas_coord_world_y_to_screen(obj->layer->evas, 0);
+   if (obj->func->coords_recalc) obj->func->coords_recalc(obj);
+////   obj->cur.cache.geometry.validity = obj->layer->evas->output_validity;
+}
+
+static inline void
+evas_object_clip_recalc(Evas_Object *obj)
+{
+   int cx, cy, cw, ch, cvis, cr, cg, cb, ca;
+   int nx, ny, nw, nh, nvis, nr, ng, nb, na;
+
+   if (obj->layer->evas->events_frozen > 0) return;
+//   if (!obj->cur.clipper->cur.cache.clip.dirty) return;
+   evas_object_coords_recalc(obj);
+   cx = obj->cur.geometry.x; cy = obj->cur.geometry.y;
+   cw = obj->cur.geometry.w; ch = obj->cur.geometry.h;
+////   cx = obj->cur.cache.geometry.x; cy = obj->cur.cache.geometry.y;
+////   cw = obj->cur.cache.geometry.w; ch = obj->cur.cache.geometry.h;
+   if (obj->cur.color.a == 0) cvis = 0;
+   else cvis = obj->cur.visible;
+   cr = obj->cur.color.r; cg = obj->cur.color.g;
+   cb = obj->cur.color.b; ca = obj->cur.color.a;
+   if (obj->cur.clipper)
+     {
+// this causes problems... hmmm
+//     if (obj->cur.clipper->cur.cache.clip.dirty)
+         evas_object_clip_recalc(obj->cur.clipper);
+       nx = obj->cur.clipper->cur.cache.clip.x;
+       ny = obj->cur.clipper->cur.cache.clip.y;
+       nw = obj->cur.clipper->cur.cache.clip.w;
+       nh = obj->cur.clipper->cur.cache.clip.h;
+       RECTS_CLIP_TO_RECT(cx, cy, cw, ch, nx, ny, nw, nh);
+
+       nvis = obj->cur.clipper->cur.cache.clip.visible;
+       nr = obj->cur.clipper->cur.cache.clip.r;
+       ng = obj->cur.clipper->cur.cache.clip.g;
+       nb = obj->cur.clipper->cur.cache.clip.b;
+       na = obj->cur.clipper->cur.cache.clip.a;
+       cvis = cvis * nvis;
+       cr = (cr * (nr + 1)) >> 8;
+       cg = (cg * (ng + 1)) >> 8;
+       cb = (cb * (nb + 1)) >> 8;
+       ca = (ca * (na + 1)) >> 8;
+     }
+   if ((ca == 0) || (cw <= 0) || (ch <= 0)) cvis = 0;
+   obj->cur.cache.clip.x = cx;
+   obj->cur.cache.clip.y = cy;
+   obj->cur.cache.clip.w = cw;
+   obj->cur.cache.clip.h = ch;
+   obj->cur.cache.clip.visible = cvis;
+   obj->cur.cache.clip.r = cr;
+   obj->cur.cache.clip.g = cg;
+   obj->cur.cache.clip.b = cb;
+   obj->cur.cache.clip.a = ca;
+   obj->cur.cache.clip.dirty = 0;
+}
+
+#include "data/evas_inline_array.x"
+
+#endif
diff --git a/src/lib/include/evas_macros.h b/src/lib/include/evas_macros.h
new file mode 100644 (file)
index 0000000..56d8351
--- /dev/null
@@ -0,0 +1,218 @@
+#ifndef EVAS_MACROS_H
+#define EVAS_MACROS_H
+
+#undef ABS
+#define ABS(x) (((x) < 0) ? -(x) : (x))
+
+#undef SGN
+#define SGN(x) (((x) < 0) ? -1 : 1)
+
+#undef MIN
+#define MIN(x, y) (((x) < (y)) ? (x) : (y))
+
+#undef MAX
+#define MAX(x, y) (((x) > (y)) ? (x) : (y))
+
+#define SWAP32(x) (x) = \
+   ((((x) & 0x000000ff ) << 24) | \
+    (((x) & 0x0000ff00 ) << 8)  | \
+    (((x) & 0x00ff0000 ) >> 8)  | \
+    (((x) & 0xff000000 ) >> 24))
+
+#define SWAP16(x) (x) = \
+   ((((x) & 0x00ff ) << 8) | \
+    (((x) & 0xff00 ) >> 8))
+
+
+#define SPANS_COMMON(x1, w1, x2, w2) \
+(!((((x2) + (w2)) <= (x1)) || ((x2) >= ((x1) + (w1)))))
+
+#define RECTS_INTERSECT(x, y, w, h, xx, yy, ww, hh) \
+((SPANS_COMMON((x), (w), (xx), (ww))) && (SPANS_COMMON((y), (h), (yy), (hh))))
+
+#define RECTS_CLIP_TO_RECT(_x, _y, _w, _h, _cx, _cy, _cw, _ch) \
+{ \
+   if (RECTS_INTERSECT(_x, _y, _w, _h, _cx, _cy, _cw, _ch)) \
+     { \
+       if (_x < (_cx)) \
+         { \
+            _w += _x - (_cx); \
+            _x = (_cx); \
+            if (_w < 0) _w = 0; \
+         } \
+       if ((_x + _w) > ((_cx) + (_cw))) \
+         _w = (_cx) + (_cw) - _x; \
+       if (_y < (_cy)) \
+         { \
+            _h += _y - (_cy); \
+            _y = (_cy); \
+            if (_h < 0) _h = 0; \
+         } \
+       if ((_y + _h) > ((_cy) + (_ch))) \
+         _h = (_cy) + (_ch) - _y; \
+     } \
+   else \
+     { \
+       _w = 0; _h = 0; \
+     } \
+}
+
+
+#define INTERP_VAL(out, in1, in2, in3, in4, interp_x, interp_y)    \
+   {                                                               \
+      int _v, _vv;                                                 \
+                                                                   \
+      _v = (256 - (interp_x)) * (in1);                             \
+      if ((interp_x) > 0) _v += (interp_x) * (in2);                \
+      _v *= (256 - (interp_y));                                    \
+      if ((interp_y) > 0)                                          \
+       {                                                          \
+          _vv = (256 - (interp_x)) * (in3);                       \
+          if ((interp_x) > 0) _vv += (interp_x) * (in4);          \
+          _vv *= (interp_y);                                      \
+          (out) = ((_v + _vv) >> 16);                             \
+       }                                                          \
+      else (out) = (_v >> 16);                                     \
+   }
+
+#define INTERP_2(in1, in2, interp, interp_inv) \
+   ((in1 * interp_inv) + (in2 * interp)) >> 8
+
+
+#define CONVERT_LOOP_START_ROT_0() \
+   src_ptr = src; \
+   for (y = 0; y < h; y++) \
+     { \
+       for (x = 0; x < w; x++) \
+         {
+
+#define CONVERT_LOOP_END_ROT_0() \
+             dst_ptr++; \
+             src_ptr++; \
+          } \
+        src_ptr += src_jump; \
+        dst_ptr += dst_jump; \
+     }
+
+#define CONVERT_LOOP_START_ROT_180() \
+   src_ptr = src + (w - 1) + ((h - 1) * (w + src_jump)); \
+   for (y = 0; y < h; y++) \
+     { \
+        for (x = 0; x < w; x++) \
+          {
+
+#define CONVERT_LOOP_END_ROT_180() \
+             dst_ptr++; \
+             src_ptr--; \
+          } \
+        src_ptr = src + (w - 1) + ((h - y - 2) * (w + src_jump)); \
+        dst_ptr += dst_jump; \
+     }
+
+#define CONVERT_LOOP_START_ROT_270() \
+   src_ptr = src + ((w - 1) * (h + src_jump)); \
+   for (y = 0; y < h; y++) \
+     { \
+       for (x = 0; x < w; x++) \
+         {
+
+#define CONVERT_LOOP_END_ROT_270() \
+             dst_ptr++; \
+             src_ptr -= (h + src_jump); \
+          } \
+        src_ptr = src + ((w - 1) * (h + src_jump)) + (y + 1); \
+        dst_ptr += dst_jump; \
+     }
+
+#define CONVERT_LOOP_START_ROT_90() \
+   src_ptr = src + (h - 1); \
+   for (y = 0; y < h; y++) \
+     { \
+       for (x = 0; x < w; x++) \
+         {
+
+#define CONVERT_LOOP_END_ROT_90() \
+             dst_ptr++; \
+             src_ptr += (h + src_jump); \
+          } \
+        src_ptr = src + (h - 1) - y - 1; \
+        dst_ptr += dst_jump; \
+     }
+
+#define CONVERT_LOOP2_START_ROT_0() \
+   src_ptr = src; \
+   for (y = 0; y < h; y++) \
+     { \
+       for (x = 0; x < w; x++) \
+         {
+
+#define CONVERT_LOOP2_INC_ROT_0() \
+src_ptr++; \
+x++;
+
+#define CONVERT_LOOP2_END_ROT_0() \
+             dst_ptr+=2; \
+             src_ptr++; \
+          } \
+        src_ptr += src_jump; \
+        dst_ptr += dst_jump; \
+     }
+
+#define CONVERT_LOOP2_START_ROT_180() \
+   src_ptr = src + (w - 1) + ((h - 1) * (w + src_jump)); \
+   for (y = 0; y < h; y++) \
+     { \
+        for (x = 0; x < w; x++) \
+          {
+
+#define CONVERT_LOOP2_INC_ROT_180() \
+src_ptr--; \
+x++;
+
+#define CONVERT_LOOP2_END_ROT_180() \
+             dst_ptr+=2; \
+             src_ptr--; \
+          } \
+        src_ptr = src + (w - 1) + ((h - y - 2) * (w + src_jump)); \
+        dst_ptr += dst_jump; \
+     }
+
+#define CONVERT_LOOP2_START_ROT_270() \
+   src_ptr = src + ((w - 1) * (h + src_jump)); \
+   for (y = 0; y < h; y++) \
+     { \
+       for (x = 0; x < w; x++) \
+         {
+
+#define CONVERT_LOOP2_INC_ROT_270() \
+src_ptr -= (h + src_jump); \
+x++;
+
+#define CONVERT_LOOP2_END_ROT_270() \
+             dst_ptr+=2; \
+             src_ptr -= (h + src_jump); \
+          } \
+        src_ptr = src + ((w - 1) * (h + src_jump)) + (y + 1); \
+        dst_ptr += dst_jump; \
+     }
+
+#define CONVERT_LOOP2_START_ROT_90() \
+   src_ptr = src + (h - 1); \
+   for (y = 0; y < h; y++) \
+     { \
+       for (x = 0; x < w; x++) \
+         {
+
+#define CONVERT_LOOP2_INC_ROT_90() \
+src_ptr += (h + src_jump); \
+x++;
+
+#define CONVERT_LOOP2_END_ROT_90() \
+             dst_ptr+=2; \
+             src_ptr += (h + src_jump); \
+          } \
+        src_ptr = src + (h - 1) - y - 1; \
+        dst_ptr += dst_jump; \
+     }
+
+#endif
diff --git a/src/lib/include/evas_mmx.h b/src/lib/include/evas_mmx.h
new file mode 100644 (file)
index 0000000..e1095e1
--- /dev/null
@@ -0,0 +1,735 @@
+/*     mmx.h
+
+       MultiMedia eXtensions GCC interface library for IA32.
+
+       To use this library, simply include this header file
+       and compile with GCC.  You MUST have inlining enabled
+       in order for mmx_ok() to work; this can be done by
+       simply using -O on the GCC command line.
+
+       Compiling with -DMMX_TRACE will cause detailed trace
+       output to be sent to stderr for each mmx operation.
+       This adds lots of code, and obviously slows execution to
+       a crawl, but can be very useful for debugging.
+
+       THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY
+       EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT
+       LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+       AND FITNESS FOR ANY PARTICULAR PURPOSE.
+
+       1997-98 by H. Dietz and R. Fisher
+
+ History:
+       97-98*  R.Fisher        Early versions
+       980501  R.Fisher        Original Release
+       980611* H.Dietz         Rewrite, correctly implementing inlines, and
+               R.Fisher         including direct register accesses.
+       980616  R.Fisher        Release of 980611 as 980616.
+       980714  R.Fisher        Minor corrections to Makefile, etc.
+       980715  R.Fisher        mmx_ok() now prevents optimizer from using
+                                clobbered values.
+                               mmx_ok() now checks if cpuid instruction is
+                                available before trying to use it.
+       980726* R.Fisher        mm_support() searches for AMD 3DNow, Cyrix
+                                Extended MMX, and standard MMX.  It returns a
+                                value which is positive if any of these are
+                                supported, and can be masked with constants to
+                                see which.  mmx_ok() is now a call to this
+       980726* R.Fisher        Added i2r support for shift functions
+       980919  R.Fisher        Fixed AMD extended feature recognition bug.
+       980921  R.Fisher        Added definition/check for _MMX_H.
+                               Added "float s[2]" to mmx_t for use with
+                                 3DNow and EMMX.  So same mmx_t can be used.
+       981013  R.Fisher        Fixed cpuid function 1 bug (looked at wrong reg)
+                               Fixed psllq_i2r error in mmxtest.c
+
+       * Unreleased (internal or interim) versions
+
+ Notes:
+       It appears that the latest gas has the pand problem fixed, therefore
+         I'll undefine BROKEN_PAND by default.
+       String compares may be quicker than the multiple test/jumps in vendor
+         test sequence in mmx_ok(), but I'm not concerned with that right now.
+
+ Acknowledgments:
+       Jussi Laako for pointing out the errors ultimately found to be
+         connected to the failure to notify the optimizer of clobbered values.
+       Roger Hardiman for reminding us that CPUID isn't everywhere, and that
+         someone may actually try to use this on a machine without CPUID.
+         Also for suggesting code for checking this.
+       Robert Dale for pointing out the AMD recognition bug.
+       Jimmy Mayfield and Carl Witty for pointing out the Intel recognition
+         bug.
+       Carl Witty for pointing out the psllq_i2r test bug.
+*/
+
+#ifndef _MMX_H
+#define _MMX_H
+
+/*     Warning:  at this writing, the version of GAS packaged
+       with most Linux distributions does not handle the
+       parallel AND operation mnemonic correctly.  If the
+       symbol BROKEN_PAND is defined, a slower alternative
+       coding will be used.  If execution of mmxtest results
+       in an illegal instruction fault, define this symbol.
+*/
+#undef BROKEN_PAND
+
+
+/*     The type of an value that fits in an MMX register
+       (note that long long constant values MUST be suffixed
+        by LL and unsigned long long values by ULL, lest
+        they be truncated by the compiler)
+*/
+typedef        union {
+       long long               q;      /* Quadword (64-bit) value */
+       unsigned long long      uq;     /* Unsigned Quadword */
+       int                     d[2];   /* 2 Doubleword (32-bit) values */
+       unsigned int            ud[2];  /* 2 Unsigned Doubleword */
+       short                   w[4];   /* 4 Word (16-bit) values */
+       unsigned short          uw[4];  /* 4 Unsigned Word */
+       char                    b[8];   /* 8 Byte (8-bit) values */
+       unsigned char           ub[8];  /* 8 Unsigned Byte */
+       float                   s[2];   /* Single-precision (32-bit) value */
+}  __attribute__ ((aligned (8))) mmx_t;
+
+/*     Helper functions for the instruction macros that follow...
+       (note that memory-to-register, m2r, instructions are nearly
+        as efficient as register-to-register, r2r, instructions;
+        however, memory-to-memory instructions are really simulated
+        as a convenience, and are only 1/3 as efficient)
+*/
+
+/*     These macros are a lot simpler without the tracing...
+*/
+
+#define        mmx_i2r(op, imm, reg) \
+       __asm__ __volatile__ (#op " $" #imm ", %%" #reg \
+                             : /* nothing */ \
+                             : /* nothing */);
+
+#define        mmx_m2r(op, mem, reg) \
+       __asm__ __volatile__ (#op " %0, %%" #reg \
+                             : /* nothing */ \
+                             : "m" (mem))
+
+#define        mmx_r2m(op, reg, mem) \
+       __asm__ __volatile__ (#op " %%" #reg ", %0" \
+                             : "=m" (mem) \
+                             : /* nothing */ )
+
+#define        mmx_a2r(op, mem, reg) \
+       __asm__ __volatile__ (#op " %0, %%" #reg \
+                             : /* nothing */ \
+                             : "m" (mem))
+
+#define        mmx_r2a(op, reg, mem) \
+       __asm__ __volatile__ (#op " %%" #reg ", %0" \
+                             : "=m" (mem) \
+                             : /* nothing */ )
+
+#define        mmx_r2r(op, regs, regd) \
+       __asm__ __volatile__ (#op " %" #regs ", %" #regd)
+
+#define        mmx_m2m(op, mems, memd) \
+       __asm__ __volatile__ ("movq %0, %%mm0\n\t" \
+                             #op " %1, %%mm0\n\t" \
+                             "movq %%mm0, %0" \
+                             : "=X" (memd) \
+                             : "X" (mems))
+
+/*     1x64 MOVE Quadword
+       (this is both a load and a store...
+        in fact, it is the only way to store)
+*/
+#define        movq_m2r(var, reg)      mmx_m2r(movq, var, reg)
+#define        movq_r2m(reg, var)      mmx_r2m(movq, reg, var)
+#define        movq_r2r(regs, regd)    mmx_r2r(movq, regs, regd)
+#define        movq(vars, vard) \
+       __asm__ __volatile__ ("movq %1, %%mm0\n\t" \
+                             "movq %%mm0, %0" \
+                             : "=X" (vard) \
+                             : "X" (vars))
+#define        movntq_r2m(reg, var)   mmx_r2m(movntq, reg, var)
+
+
+/*     1x32 MOVE Doubleword
+       (like movq, this is both load and store...
+        but is most useful for moving things between
+        mmx registers and ordinary registers)
+*/
+#define        movd_m2r(var, reg)      mmx_a2r(movd, var, reg)
+#define        movd_r2m(reg, var)      mmx_r2a(movd, reg, var)
+#define        movd_r2r(regs, regd)    mmx_r2r(movd, regs, regd)
+#define        movd(vars, vard) \
+       __asm__ __volatile__ ("movd %1, %%mm0\n\t" \
+                             "movd %%mm0, %0" \
+                             : "=X" (vard) \
+                             : "X" (vars))
+
+
+/*     2x32, 4x16, and 8x8 Parallel ADDs
+*/
+#define        paddd_m2r(var, reg)     mmx_m2r(paddd, var, reg)
+#define        paddd_r2r(regs, regd)   mmx_r2r(paddd, regs, regd)
+#define        paddd(vars, vard)       mmx_m2m(paddd, vars, vard)
+
+#define        paddw_m2r(var, reg)     mmx_m2r(paddw, var, reg)
+#define        paddw_r2r(regs, regd)   mmx_r2r(paddw, regs, regd)
+#define        paddw(vars, vard)       mmx_m2m(paddw, vars, vard)
+
+#define        paddb_m2r(var, reg)     mmx_m2r(paddb, var, reg)
+#define        paddb_r2r(regs, regd)   mmx_r2r(paddb, regs, regd)
+#define        paddb(vars, vard)       mmx_m2m(paddb, vars, vard)
+
+
+/*     4x16 and 8x8 Parallel ADDs using Saturation arithmetic
+*/
+#define        paddsw_m2r(var, reg)    mmx_m2r(paddsw, var, reg)
+#define        paddsw_r2r(regs, regd)  mmx_r2r(paddsw, regs, regd)
+#define        paddsw(vars, vard)      mmx_m2m(paddsw, vars, vard)
+
+#define        paddsb_m2r(var, reg)    mmx_m2r(paddsb, var, reg)
+#define        paddsb_r2r(regs, regd)  mmx_r2r(paddsb, regs, regd)
+#define        paddsb(vars, vard)      mmx_m2m(paddsb, vars, vard)
+
+
+/*     4x16 and 8x8 Parallel ADDs using Unsigned Saturation arithmetic
+*/
+#define        paddusw_m2r(var, reg)   mmx_m2r(paddusw, var, reg)
+#define        paddusw_r2r(regs, regd) mmx_r2r(paddusw, regs, regd)
+#define        paddusw(vars, vard)     mmx_m2m(paddusw, vars, vard)
+
+#define        paddusb_m2r(var, reg)   mmx_m2r(paddusb, var, reg)
+#define        paddusb_r2r(regs, regd) mmx_r2r(paddusb, regs, regd)
+#define        paddusb(vars, vard)     mmx_m2m(paddusb, vars, vard)
+
+
+/*     2x32, 4x16, and 8x8 Parallel SUBs
+*/
+#define        psubd_m2r(var, reg)     mmx_m2r(psubd, var, reg)
+#define        psubd_r2r(regs, regd)   mmx_r2r(psubd, regs, regd)
+#define        psubd(vars, vard)       mmx_m2m(psubd, vars, vard)
+
+#define        psubw_m2r(var, reg)     mmx_m2r(psubw, var, reg)
+#define        psubw_r2r(regs, regd)   mmx_r2r(psubw, regs, regd)
+#define        psubw(vars, vard)       mmx_m2m(psubw, vars, vard)
+
+#define        psubb_m2r(var, reg)     mmx_m2r(psubb, var, reg)
+#define        psubb_r2r(regs, regd)   mmx_r2r(psubb, regs, regd)
+#define        psubb(vars, vard)       mmx_m2m(psubb, vars, vard)
+
+
+/*     4x16 and 8x8 Parallel SUBs using Saturation arithmetic
+*/
+#define        psubsw_m2r(var, reg)    mmx_m2r(psubsw, var, reg)
+#define        psubsw_r2r(regs, regd)  mmx_r2r(psubsw, regs, regd)
+#define        psubsw(vars, vard)      mmx_m2m(psubsw, vars, vard)
+
+#define        psubsb_m2r(var, reg)    mmx_m2r(psubsb, var, reg)
+#define        psubsb_r2r(regs, regd)  mmx_r2r(psubsb, regs, regd)
+#define        psubsb(vars, vard)      mmx_m2m(psubsb, vars, vard)
+
+
+/*     4x16 and 8x8 Parallel SUBs using Unsigned Saturation arithmetic
+*/
+#define        psubusw_m2r(var, reg)   mmx_m2r(psubusw, var, reg)
+#define        psubusw_r2r(regs, regd) mmx_r2r(psubusw, regs, regd)
+#define        psubusw(vars, vard)     mmx_m2m(psubusw, vars, vard)
+
+#define        psubusb_m2r(var, reg)   mmx_m2r(psubusb, var, reg)
+#define        psubusb_r2r(regs, regd) mmx_r2r(psubusb, regs, regd)
+#define        psubusb(vars, vard)     mmx_m2m(psubusb, vars, vard)
+
+
+/*     4x16 Parallel MULs giving Low 4x16 portions of results
+*/
+#define        pmullw_m2r(var, reg)    mmx_m2r(pmullw, var, reg)
+#define        pmullw_r2r(regs, regd)  mmx_r2r(pmullw, regs, regd)
+#define        pmullw(vars, vard)      mmx_m2m(pmullw, vars, vard)
+
+
+/*     4x16 Parallel MULs giving High 4x16 portions of results
+*/
+#define        pmulhw_m2r(var, reg)    mmx_m2r(pmulhw, var, reg)
+#define        pmulhw_r2r(regs, regd)  mmx_r2r(pmulhw, regs, regd)
+#define        pmulhw(vars, vard)      mmx_m2m(pmulhw, vars, vard)
+
+
+/*     4x16->2x32 Parallel Mul-ADD
+       (muls like pmullw, then adds adjacent 16-bit fields
+        in the multiply result to make the final 2x32 result)
+*/
+#define        pmaddwd_m2r(var, reg)   mmx_m2r(pmaddwd, var, reg)
+#define        pmaddwd_r2r(regs, regd) mmx_r2r(pmaddwd, regs, regd)
+#define        pmaddwd(vars, vard)     mmx_m2m(pmaddwd, vars, vard)
+
+
+/*     1x64 bitwise AND
+*/
+#ifdef BROKEN_PAND
+#define        pand_m2r(var, reg) \
+       { \
+               mmx_m2r(pandn, (mmx_t) -1LL, reg); \
+               mmx_m2r(pandn, var, reg); \
+       }
+#define        pand_r2r(regs, regd) \
+       { \
+               mmx_m2r(pandn, (mmx_t) -1LL, regd); \
+               mmx_r2r(pandn, regs, regd) \
+       }
+#define        pand(vars, vard) \
+       { \
+               movq_m2r(vard, mm0); \
+               mmx_m2r(pandn, (mmx_t) -1LL, mm0); \
+               mmx_m2r(pandn, vars, mm0); \
+               movq_r2m(mm0, vard); \
+       }
+#else
+#define        pand_m2r(var, reg)      mmx_m2r(pand, var, reg)
+#define        pand_r2r(regs, regd)    mmx_r2r(pand, regs, regd)
+#define        pand(vars, vard)        mmx_m2m(pand, vars, vard)
+#endif
+
+
+/*     1x64 bitwise AND with Not the destination
+*/
+#define        pandn_m2r(var, reg)     mmx_m2r(pandn, var, reg)
+#define        pandn_r2r(regs, regd)   mmx_r2r(pandn, regs, regd)
+#define        pandn(vars, vard)       mmx_m2m(pandn, vars, vard)
+
+
+/*     1x64 bitwise OR
+*/
+#define        por_m2r(var, reg)       mmx_m2r(por, var, reg)
+#define        por_r2r(regs, regd)     mmx_r2r(por, regs, regd)
+#define        por(vars, vard) mmx_m2m(por, vars, vard)
+
+
+/*     1x64 bitwise eXclusive OR
+*/
+#define        pxor_m2r(var, reg)      mmx_m2r(pxor, var, reg)
+#define        pxor_r2r(regs, regd)    mmx_r2r(pxor, regs, regd)
+#define        pxor(vars, vard)        mmx_m2m(pxor, vars, vard)
+
+
+/*     2x32, 4x16, and 8x8 Parallel CoMPare for EQuality
+       (resulting fields are either 0 or -1)
+*/
+#define        pcmpeqd_m2r(var, reg)   mmx_m2r(pcmpeqd, var, reg)
+#define        pcmpeqd_r2r(regs, regd) mmx_r2r(pcmpeqd, regs, regd)
+#define        pcmpeqd(vars, vard)     mmx_m2m(pcmpeqd, vars, vard)
+
+#define        pcmpeqw_m2r(var, reg)   mmx_m2r(pcmpeqw, var, reg)
+#define        pcmpeqw_r2r(regs, regd) mmx_r2r(pcmpeqw, regs, regd)
+#define        pcmpeqw(vars, vard)     mmx_m2m(pcmpeqw, vars, vard)
+
+#define        pcmpeqb_m2r(var, reg)   mmx_m2r(pcmpeqb, var, reg)
+#define        pcmpeqb_r2r(regs, regd) mmx_r2r(pcmpeqb, regs, regd)
+#define        pcmpeqb(vars, vard)     mmx_m2m(pcmpeqb, vars, vard)
+
+
+/*     2x32, 4x16, and 8x8 Parallel CoMPare for Greater Than
+       (resulting fields are either 0 or -1)
+*/
+#define        pcmpgtd_m2r(var, reg)   mmx_m2r(pcmpgtd, var, reg)
+#define        pcmpgtd_r2r(regs, regd) mmx_r2r(pcmpgtd, regs, regd)
+#define        pcmpgtd(vars, vard)     mmx_m2m(pcmpgtd, vars, vard)
+
+#define        pcmpgtw_m2r(var, reg)   mmx_m2r(pcmpgtw, var, reg)
+#define        pcmpgtw_r2r(regs, regd) mmx_r2r(pcmpgtw, regs, regd)
+#define        pcmpgtw(vars, vard)     mmx_m2m(pcmpgtw, vars, vard)
+
+#define        pcmpgtb_m2r(var, reg)   mmx_m2r(pcmpgtb, var, reg)
+#define        pcmpgtb_r2r(regs, regd) mmx_r2r(pcmpgtb, regs, regd)
+#define        pcmpgtb(vars, vard)     mmx_m2m(pcmpgtb, vars, vard)
+
+
+/*     1x64, 2x32, and 4x16 Parallel Shift Left Logical
+*/
+#define        psllq_i2r(imm, reg)     mmx_i2r(psllq, imm, reg)
+#define        psllq_m2r(var, reg)     mmx_m2r(psllq, var, reg)
+#define        psllq_r2r(regs, regd)   mmx_r2r(psllq, regs, regd)
+#define        psllq(vars, vard)       mmx_m2m(psllq, vars, vard)
+
+#define        pslld_i2r(imm, reg)     mmx_i2r(pslld, imm, reg)
+#define        pslld_m2r(var, reg)     mmx_m2r(pslld, var, reg)
+#define        pslld_r2r(regs, regd)   mmx_r2r(pslld, regs, regd)
+#define        pslld(vars, vard)       mmx_m2m(pslld, vars, vard)
+
+#define        psllw_i2r(imm, reg)     mmx_i2r(psllw, imm, reg)
+#define        psllw_m2r(var, reg)     mmx_m2r(psllw, var, reg)
+#define        psllw_r2r(regs, regd)   mmx_r2r(psllw, regs, regd)
+#define        psllw(vars, vard)       mmx_m2m(psllw, vars, vard)
+
+
+/*     1x64, 2x32, and 4x16 Parallel Shift Right Logical
+*/
+#define        psrlq_i2r(imm, reg)     mmx_i2r(psrlq, imm, reg)
+#define        psrlq_m2r(var, reg)     mmx_m2r(psrlq, var, reg)
+#define        psrlq_r2r(regs, regd)   mmx_r2r(psrlq, regs, regd)
+#define        psrlq(vars, vard)       mmx_m2m(psrlq, vars, vard)
+
+#define        psrld_i2r(imm, reg)     mmx_i2r(psrld, imm, reg)
+#define        psrld_m2r(var, reg)     mmx_m2r(psrld, var, reg)
+#define        psrld_r2r(regs, regd)   mmx_r2r(psrld, regs, regd)
+#define        psrld(vars, vard)       mmx_m2m(psrld, vars, vard)
+
+#define        psrlw_i2r(imm, reg)     mmx_i2r(psrlw, imm, reg)
+#define        psrlw_m2r(var, reg)     mmx_m2r(psrlw, var, reg)
+#define        psrlw_r2r(regs, regd)   mmx_r2r(psrlw, regs, regd)
+#define        psrlw(vars, vard)       mmx_m2m(psrlw, vars, vard)
+
+
+/*     2x32 and 4x16 Parallel Shift Right Arithmetic
+*/
+#define        psrad_i2r(imm, reg)     mmx_i2r(psrad, imm, reg)
+#define        psrad_m2r(var, reg)     mmx_m2r(psrad, var, reg)
+#define        psrad_r2r(regs, regd)   mmx_r2r(psrad, regs, regd)
+#define        psrad(vars, vard)       mmx_m2m(psrad, vars, vard)
+
+#define        psraw_i2r(imm, reg)     mmx_i2r(psraw, imm, reg)
+#define        psraw_m2r(var, reg)     mmx_m2r(psraw, var, reg)
+#define        psraw_r2r(regs, regd)   mmx_r2r(psraw, regs, regd)
+#define        psraw(vars, vard)       mmx_m2m(psraw, vars, vard)
+
+
+/*     2x32->4x16 and 4x16->8x8 PACK and Signed Saturate
+       (packs source and dest fields into dest in that order)
+*/
+#define        packssdw_m2r(var, reg)  mmx_m2r(packssdw, var, reg)
+#define        packssdw_r2r(regs, regd) mmx_r2r(packssdw, regs, regd)
+#define        packssdw(vars, vard)    mmx_m2m(packssdw, vars, vard)
+
+#define        packsswb_m2r(var, reg)  mmx_m2r(packsswb, var, reg)
+#define        packsswb_r2r(regs, regd) mmx_r2r(packsswb, regs, regd)
+#define        packsswb(vars, vard)    mmx_m2m(packsswb, vars, vard)
+
+
+/*     4x16->8x8 PACK and Unsigned Saturate
+       (packs source and dest fields into dest in that order)
+*/
+#define        packuswb_m2r(var, reg)  mmx_m2r(packuswb, var, reg)
+#define        packuswb_r2r(regs, regd) mmx_r2r(packuswb, regs, regd)
+#define        packuswb(vars, vard)    mmx_m2m(packuswb, vars, vard)
+
+
+/*     2x32->1x64, 4x16->2x32, and 8x8->4x16 UNPaCK Low
+       (interleaves low half of dest with low half of source
+        as padding in each result field)
+*/
+#define        punpckldq_m2r(var, reg) mmx_m2r(punpckldq, var, reg)
+#define        punpckldq_r2r(regs, regd) mmx_r2r(punpckldq, regs, regd)
+#define        punpckldq(vars, vard)   mmx_m2m(punpckldq, vars, vard)
+
+#define        punpcklwd_m2r(var, reg) mmx_m2r(punpcklwd, var, reg)
+#define        punpcklwd_r2r(regs, regd) mmx_r2r(punpcklwd, regs, regd)
+#define        punpcklwd(vars, vard)   mmx_m2m(punpcklwd, vars, vard)
+
+#define        punpcklbw_m2r(var, reg) mmx_m2r(punpcklbw, var, reg)
+#define        punpcklbw_r2r(regs, regd) mmx_r2r(punpcklbw, regs, regd)
+#define        punpcklbw(vars, vard)   mmx_m2m(punpcklbw, vars, vard)
+
+
+/*     2x32->1x64, 4x16->2x32, and 8x8->4x16 UNPaCK High
+       (interleaves high half of dest with high half of source
+        as padding in each result field)
+*/
+#define        punpckhdq_m2r(var, reg) mmx_m2r(punpckhdq, var, reg)
+#define        punpckhdq_r2r(regs, regd) mmx_r2r(punpckhdq, regs, regd)
+#define        punpckhdq(vars, vard)   mmx_m2m(punpckhdq, vars, vard)
+
+#define        punpckhwd_m2r(var, reg) mmx_m2r(punpckhwd, var, reg)
+#define        punpckhwd_r2r(regs, regd) mmx_r2r(punpckhwd, regs, regd)
+#define        punpckhwd(vars, vard)   mmx_m2m(punpckhwd, vars, vard)
+
+#define        punpckhbw_m2r(var, reg) mmx_m2r(punpckhbw, var, reg)
+#define        punpckhbw_r2r(regs, regd) mmx_r2r(punpckhbw, regs, regd)
+#define        punpckhbw(vars, vard)   mmx_m2m(punpckhbw, vars, vard)
+
+#define MOVE_8DWORDS_MMX(src,dst) \
+          __asm__ ( \
+               "movq (%1), %%mm0 \n" \
+               "movq 0x8(%1), %%mm1 \n" \
+               "movq 0x10(%1), %%mm2 \n" \
+               "movq 0x18(%1), %%mm3 \n" \
+               "movq %%mm0, (%0) \n" \
+               "movq %%mm1, 0x8(%0) \n" \
+               "movq %%mm2, 0x10(%0) \n" \
+               "movq %%mm3, 0x18(%0) \n" \
+               : \
+               : "q" (dst), "r" (src) \
+               : "memory",  "st");
+
+#define MOVE_10DWORDS_MMX(src,dst) \
+          __asm__ ( \
+               "movq (%1), %%mm0 \n" \
+               "movq 0x8(%1), %%mm1 \n" \
+               "movq 0x10(%1), %%mm2 \n" \
+               "movq 0x18(%1), %%mm3 \n" \
+               "movq 0x20(%1), %%mm4 \n" \
+               "movq %%mm0, (%0) \n" \
+               "movq %%mm1, 0x8(%0) \n" \
+               "movq %%mm2, 0x10(%0) \n" \
+               "movq %%mm3, 0x18(%0) \n" \
+               "movq %%mm4, 0x20(%0) \n" \
+               : \
+               : "q" (dst), "r" (src) \
+               : "memory",  "st");
+
+#define MOVE_16DWORDS_MMX(src,dst) \
+          __asm__ ( \
+               "movq (%1), %%mm0 \n" \
+               "movq 0x8(%1), %%mm1 \n" \
+               "movq 0x10(%1), %%mm2 \n" \
+               "movq 0x18(%1), %%mm3 \n" \
+               "movq 0x20(%1), %%mm4 \n" \
+               "movq 0x28(%1), %%mm5 \n" \
+               "movq 0x30(%1), %%mm6 \n" \
+               "movq 0x38(%1), %%mm7 \n" \
+               "movq %%mm0, (%0) \n" \
+               "movq %%mm1, 0x8(%0) \n" \
+               "movq %%mm2, 0x10(%0) \n" \
+               "movq %%mm3, 0x18(%0) \n" \
+               "movq %%mm4, 0x20(%0) \n" \
+               "movq %%mm5, 0x28(%0) \n" \
+               "movq %%mm6, 0x30(%0) \n" \
+               "movq %%mm7, 0x38(%0) \n" \
+               : \
+               : "q" (dst), "r" (src) \
+               : "memory",  "st");
+
+#define MOVE_16DWORDS_MMX2(src,dst) \
+          __asm__ ( \
+               "movq (%1), %%mm0 \n" \
+               "movq 0x8(%1), %%mm1 \n" \
+               "movq 0x10(%1), %%mm2 \n" \
+               "movq 0x18(%1), %%mm3 \n" \
+               "movq 0x20(%1), %%mm4 \n" \
+               "movq 0x28(%1), %%mm5 \n" \
+               "movq 0x30(%1), %%mm6 \n" \
+               "movq 0x38(%1), %%mm7 \n" \
+               "movntq %%mm0, (%0) \n" \
+               "movntq %%mm1, 0x8(%0) \n" \
+               "movntq %%mm2, 0x10(%0) \n" \
+               "movntq %%mm3, 0x18(%0) \n" \
+               "movntq %%mm4, 0x20(%0) \n" \
+               "movntq %%mm5, 0x28(%0) \n" \
+               "movntq %%mm6, 0x30(%0) \n" \
+               "movntq %%mm7, 0x38(%0) \n" \
+               : \
+               : "q" (dst), "r" (src) \
+               : "memory",  "st");
+
+#define MOVE_32DWORDS_SSE2(src,dst) \
+          __asm__ ( \
+               "movdqu (%1), %%xmm0 \n" \
+               "movdqu 0x10(%1), %%xmm1 \n" \
+               "movdqu 0x20(%1), %%xmm2 \n" \
+               "movdqu 0x30(%1), %%xmm3 \n" \
+               "movdqu 0x40(%1), %%xmm4 \n" \
+               "movdqu 0x50(%1), %%xmm5 \n" \
+               "movdqu 0x60(%1), %%xmm6 \n" \
+               "movdqu 0x70(%1), %%xmm7 \n" \
+               "movntdq %%xmm0, (%0) \n" \
+               "movntdq %%xmm1, 0x10(%0) \n" \
+               "movntdq %%xmm2, 0x20(%0) \n" \
+               "movntdq %%xmm3, 0x30(%0) \n" \
+               "movntdq %%xmm4, 0x40(%0) \n" \
+               "movntdq %%xmm5, 0x50(%0) \n" \
+               "movntdq %%xmm6, 0x60(%0) \n" \
+               "movntdq %%xmm7, 0x70(%0) \n" \
+               : \
+               : "q" (dst), "r" (src) \
+               : "memory",  "st");
+
+#define MOVE_32DWORDS_ALIGNED_SSE2(src,dst) \
+          __asm__ ( \
+               "movdqa (%1), %%xmm0 \n" \
+               "movdqa 0x10(%1), %%xmm1 \n" \
+               "movdqa 0x20(%1), %%xmm2 \n" \
+               "movdqa 0x30(%1), %%xmm3 \n" \
+               "movdqa 0x40(%1), %%xmm4 \n" \
+               "movdqa 0x50(%1), %%xmm5 \n" \
+               "movdqa 0x60(%1), %%xmm6 \n" \
+               "movdqa 0x70(%1), %%xmm7 \n" \
+               "movntdq %%xmm0, (%0) \n" \
+               "movntdq %%xmm1, 0x10(%0) \n" \
+               "movntdq %%xmm2, 0x20(%0) \n" \
+               "movntdq %%xmm3, 0x30(%0) \n" \
+               "movntdq %%xmm4, 0x40(%0) \n" \
+               "movntdq %%xmm5, 0x50(%0) \n" \
+               "movntdq %%xmm6, 0x60(%0) \n" \
+               "movntdq %%xmm7, 0x70(%0) \n" \
+               : \
+               : "q" (dst), "r" (src) \
+               : "memory",  "st");
+
+/*     Empty MMx State
+       (used to clean-up when going from mmx to float use
+        of the registers that are shared by both; note that
+        there is no float-to-mmx operation needed, because
+        only the float tag word info is corruptible)
+*/
+
+#define        emms()                  __asm__ __volatile__ ("emms":::"memory")
+#define        sfence()                __asm__ __volatile__ ("sfence":::"memory")
+
+/* additions to detect mmx - */
+/* Raster <raster@rasterman.com> */
+
+#define CPUID_MMX  (1 << 23) /* flags: mmx */
+#define CPUID_SSE  (1 << 25) /* flags: xmm */
+#define CPUID_SSE2 (1 << 26) /* flags: ? */
+
+/*
+#ifdef __amd64
+#define have_cpuid(cpuid_ret) \
+         __asm__ __volatile__ ( \
+                                  ".align 32               \n" \
+                                  "  pushq %%rbx           \n" \
+                                  "  pushfq                \n" \
+                                  "  popq %%rax            \n" \
+                                  "  movq %%rax, %%rbx     \n" \
+                                  "  xorq $0x200000, %%rax \n" \
+                                  "  pushq %%rax           \n" \
+                                  "  popfq                 \n" \
+                                  "  pushfq                \n" \
+                                  "  popq %%rax            \n" \
+                                  "  cmpq %%rax, %%rbx     \n" \
+                                  "  je 1f                 \n" \
+                                  "  movl $1, %0           \n" \
+                                  "  jmp 2f                \n" \
+                                  "1:                      \n" \
+                                  "  movl $0, %0           \n" \
+                                  "2:                      \n" \
+                                  "  popq %%rbx            \n" \
+                                  : "=m" (cpuid_ret)           \
+                                  );
+
+#define get_cpuid(cpuid_ret) \
+         __asm__ __volatile__ ( \
+                                  ".align 32               \n" \
+                                  "  pushq %%rax           \n" \
+                                  "  movl $1, %%eax        \n" \
+                                  "  cpuid                 \n" \
+                                  "  test $0x00800000, %%edx\n" \
+                                  "1:                      \n" \
+                                  "  movl %%edx, %0        \n" \
+                                  "  jmp 2f                \n" \
+                                  "2:                      \n" \
+                                  "  movl $0, %0           \n" \
+                                  "  popq %%rax            \n" \
+                                  : "=m" (cpuid_ret)           \
+                                  );
+#else
+#define have_cpuid(cpuid_ret) \
+        __asm__ __volatile__ ( \
+                                 ".align 32               \n" \
+                                 "  pushl %%ebx           \n" \
+                                 "  pushfl                \n" \
+                                 "  popl %%eax            \n" \
+                                 "  movl %%eax, %%ebx     \n" \
+                                 "  xorl $0x200000, %%eax \n" \
+                                 "  pushl %%eax           \n" \
+                                 "  popfl                 \n" \
+                                 "  pushfl                \n" \
+                                 "  popl %%eax            \n" \
+                                 "  cmpl %%eax, %%ebx     \n" \
+                                 "  je 1f                 \n" \
+                                 "  movl $1, %0           \n" \
+                                 "  jmp 2f                \n" \
+                                 "1:                      \n" \
+                                 "  movl $0, %0           \n" \
+                                 "2:                      \n" \
+                                 "  popl %%ebx            \n" \
+                                 : "=m" (cpuid_ret)           \
+                                 );
+
+#define get_cpuid(cpuid_ret) \
+        __asm__ __volatile__ ( \
+                                 ".align 32               \n" \
+                                 "  pushl %%eax           \n" \
+                                 "  movl $1, %%eax        \n" \
+                                 "  cpuid                 \n" \
+                                 "  test $0x00800000, %%edx\n" \
+                                 "1:                      \n" \
+                                 "  movl %%edx, %0        \n" \
+                                 "  jmp 2f                \n" \
+                                 "2:                      \n" \
+                                 "  movl $0, %0           \n" \
+                                 "  popl %%eax            \n" \
+                                 : "=m" (cpuid_ret)           \
+                                 );
+#endif
+ */
+
+#define prefetch(var) \
+       __asm__ __volatile__ ( \
+                                "prefetchnta (%0) \n" \
+                                : \
+                                : "r" (var) \
+                                );
+#define prefetch0(var) \
+       __asm__ __volatile__ ( \
+                                "prefetcht0 (%0) \n" \
+                                : \
+                                : "r" (var) \
+                                );
+#define prefetch1(var) \
+       __asm__ __volatile__ ( \
+                                "prefetcht1 (%0) \n" \
+                                : \
+                                : "r" (var) \
+                                );
+#define prefetch2(var) \
+       __asm__ __volatile__ ( \
+                                "prefetcht2 (%0) \n" \
+                                : \
+                                : "r" (var) \
+                                );
+#define pshufw(r1, r2, imm) \
+       __asm__ __volatile__ ( \
+                                "pshufw $" #imm ", %" #r1 ", %" #r2 " \n" \
+                                );
+
+#define pshufhw(r1, r2, imm) \
+       __asm__ __volatile__ ( \
+                                "pshufhw $" #imm ", %" #r1 ", %" #r2 " \n" \
+                                );
+
+#define pshuflw(r1, r2, imm) \
+       __asm__ __volatile__ ( \
+                                "pshuflw $" #imm ", %" #r1 ", %" #r2 " \n" \
+                                );
+#define pshufd(r1, r2, imm) \
+       __asm__ __volatile__ ( \
+                                "pshufd $" #imm ", %" #r1 ", %" #r2 " \n" \
+                                );
+
+/*     1x238 MOVE Doouble Quadword
+       (this is both a load and a store...
+        in fact, it is the only way to store)
+*/
+#define        movdqu_m2r(var, reg)    mmx_m2r(movdqu, var, reg)
+#define        movdqu_r2m(reg, var)    mmx_r2m(movdqu, reg, var)
+#define        movdqu_r2r(regs, regd)  mmx_r2r(movdqu, regs, regd)
+#define        movdqu(vars, vard) \
+       __asm__ __volatile__ ("movdqu %1, %%xmm0\n\t" \
+                             "movdqu %%xmm0, %0" \
+                             : "=X" (vard) \
+                             : "X" (vars))
+#define        movdqa_m2r(var, reg)    mmx_m2r(movdqa, var, reg)
+#define        movdqa_r2m(reg, var)    mmx_r2m(movdqa, reg, var)
+#define        movdqa_r2r(regs, regd)  mmx_r2r(movdqa, regs, regd)
+#define        movdqa(vars, vard) \
+       __asm__ __volatile__ ("movdqa %1, %%xmm0\n\t" \
+                             "movdqa %%xmm0, %0" \
+                             : "=X" (vard) \
+                             : "X" (vars))
+#define        movntdq_r2m(reg, var)   mmx_r2m(movntdq, reg, var)
+
+
+/* end additions */
+
+#endif
diff --git a/src/lib/include/evas_options.h b/src/lib/include/evas_options.h
new file mode 100644 (file)
index 0000000..4de3833
--- /dev/null
@@ -0,0 +1,70 @@
+#ifndef EVAS_OPTIONS_H
+#define EVAS_OPTIONS_H 1
+
+/* these may vary per OS */
+
+/* what to build *//* small dither table is MUCH faster on ipaq */
+/*#define BUILD_SMALL_DITHER_MASK*/
+
+/*#define HARD_CODED_P3*/
+/*#define HARD_CODED_P2*/
+
+/*#define BUILD_CONVERT_1_GRY_1*/
+/*#define BUILD_CONVERT_4_GRY_1*/
+/*#define BUILD_CONVERT_4_GRY_4*/
+/*#define BUILD_CONVERT_8_GRY_1*/
+/*#define BUILD_CONVERT_8_GRY_4*/
+/*#define BUILD_CONVERT_8_GRY_16*/
+/*#define BUILD_CONVERT_8_GRY_64*/
+/*#define BUILD_CONVERT_8_GRY_256*/
+/*#define BUILD_CONVERT_8_RGB_332*/
+/*#define BUILD_CONVERT_8_RGB_666*/
+/*#define BUILD_CONVERT_8_RGB_232*/
+/*#define BUILD_CONVERT_8_RGB_222*/
+/*#define BUILD_CONVERT_8_RGB_221*/
+/*#define BUILD_CONVERT_8_RGB_121*/
+/*#define BUILD_CONVERT_8_RGB_111*/
+/*#define BUILD_CONVERT_16_RGB_565*/
+/*#define BUILD_CONVERT_16_RGB_555*/
+/*#define BUILD_CONVERT_16_RGB_444*/
+/*#define BUILD_CONVERT_16_RGB_454645*/
+/*#define BUILD_CONVERT_16_RGB_ROT0*/
+/*#define BUILD_CONVERT_16_RGB_ROT270*/
+/*#define BUILD_CONVERT_24_RGB_888*/
+/*#define BUILD_CONVERT_24_BGR_888*/
+/*#define BUILD_CONVERT_32_RGB_8888*/
+/*#define BUILD_CONVERT_32_BGR_8888*/
+/*#define BUILD_CONVERT_32_RGB_ROT0*/
+/*#define BUILD_CONVERT_32_RGB_ROT270*/
+
+/*#define BUILD_SCALE_SAMPLE*/
+/*#define BUILD_SCALE_SMOOTH*/
+/*#define BUILD_SCALE_TRILINEAR*/
+
+/*#define BUILD_MMX*/
+/*#define BUILD_SSE*/
+/*#define BUILD_C*/
+
+/*#define BUILD_LOADER_PNG*/
+/*#define BUILD_LOADER_JPEG*/
+/*#define BUILD_LOADER_EET*/
+/*#define BUILD_LOADER_EDB*/
+
+/*#define BUILD_FMEMOPEN*/
+
+/* check in that the user configured it right */
+#ifndef BUILD_MMX
+# ifndef BUILD_SSE
+#  ifndef BUILD_C
+#   error "Please Read the README"
+#  endif
+# endif
+#endif
+
+#ifdef BUILD_FMEMOPEN
+# define _GNU_SOURCE
+#endif
+
+#define DIRECT_SCALE
+
+#endif
diff --git a/src/lib/include/evas_private.h b/src/lib/include/evas_private.h
new file mode 100644 (file)
index 0000000..3ca0962
--- /dev/null
@@ -0,0 +1,751 @@
+#ifndef EVAS_PRIVATE_H
+#define EVAS_PRIVATE_H
+
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#include "Evas.h"
+
+#include "../file/evas_module.h"
+#include "../file/evas_path.h"
+
+
+/* complain when peole pass in wrong object types etc. */
+#define MAGIC_DEBUG
+
+#define RENDER_METHOD_INVALID            0x00000000
+
+typedef struct _Evas_Layer                  Evas_Layer;
+typedef struct _Evas_Size                   Evas_Size;
+typedef struct _Evas_Aspect                 Evas_Aspect;
+typedef struct _Evas_Size_Hints             Evas_Size_Hints;
+typedef struct _Evas_Font_Dir               Evas_Font_Dir;
+typedef struct _Evas_Font                   Evas_Font;
+typedef struct _Evas_Font_Alias             Evas_Font_Alias;
+typedef struct _Evas_Data_Node              Evas_Data_Node;
+typedef struct _Evas_Func_Node              Evas_Func_Node;
+typedef RGBA_Image_Loadopts                 Evas_Image_Load_Opts;
+typedef struct _Evas_Func                   Evas_Func;
+typedef struct _Evas_Image_Load_Func        Evas_Image_Load_Func;
+typedef struct _Evas_Image_Save_Func        Evas_Image_Save_Func;
+typedef struct _Evas_Object_Func            Evas_Object_Func;
+typedef struct _Evas_Intercept_Func         Evas_Intercept_Func;
+typedef struct _Evas_Intercept_Func_Basic   Evas_Intercept_Func_Basic;
+typedef struct _Evas_Intercept_Func_SizePos Evas_Intercept_Func_SizePos;
+typedef struct _Evas_Intercept_Func_Obj     Evas_Intercept_Func_Obj;
+typedef struct _Evas_Intercept_Func_Int     Evas_Intercept_Func_Int;
+typedef struct _Evas_Intercept_Func_Color   Evas_Intercept_Func_Color;
+typedef struct _Evas_Key_Grab               Evas_Key_Grab;
+typedef struct _Evas_Callbacks              Evas_Callbacks;
+typedef struct _Evas_Format                 Evas_Format;
+typedef struct _Evas_Rectangles             Evas_Rectangles;
+
+#define MAGIC_EVAS          0x70777770
+#define MAGIC_OBJ           0x71777770
+#define MAGIC_OBJ_RECTANGLE 0x71777771
+#define MAGIC_OBJ_LINE      0x71777772
+#define MAGIC_OBJ_GRADIENT  0x71777773
+#define MAGIC_OBJ_POLYGON   0x71777774
+#define MAGIC_OBJ_IMAGE     0x71777775
+#define MAGIC_OBJ_TEXT      0x71777776
+#define MAGIC_OBJ_SMART     0x71777777
+#define MAGIC_OBJ_TEXTBLOCK 0x71777778
+#define MAGIC_SMART         0x72777770
+
+#ifdef MAGIC_DEBUG
+#define MAGIC_CHECK_FAILED(o, t, m) \
+{evas_debug_error(); \
+ if (!o) evas_debug_input_null(); \
+ else if (((t *)o)->magic == 0) evas_debug_magic_null(); \
+ else evas_debug_magic_wrong((m), ((t *)o)->magic); \
+}
+#else
+#define MAGIC_CHECK_FAILED(o, t, m)
+#endif
+#define MAGIC_CHECK(o, t, m) \
+{if ((!o) || (!(((t *)o)->magic == (m)))) { \
+MAGIC_CHECK_FAILED(o, t, m)
+#define MAGIC_CHECK_END() \
+}}
+
+#define NEW_RECT(_r, _x, _y, _w, _h) \
+{(_r) = malloc(sizeof(Evas_Rectangle)); \
+if (_r) \
+{ \
+   (_r)->x = (_x); (_r)->y = (_y); \
+   (_r)->w = (_w); (_r)->h = (_h); \
+}}
+
+#define MERR_NONE() _evas_alloc_error = EVAS_ALLOC_ERROR_NONE
+#define MERR_FATAL() _evas_alloc_error = EVAS_ALLOC_ERROR_FATAL
+#define MERR_BAD() _evas_alloc_error = EVAS_ALLOC_ERROR_RECOVERED
+
+#define EVAS_OBJECT_IMAGE_FREE_FILE_AND_KEY(o)                              \
+   if ((o)->cur.file)                                                       \
+     {                                                                      \
+         evas_stringshare_del((o)->cur.file);                               \
+        if ((o)->prev.file == (o)->cur.file)                               \
+              (o)->prev.file = NULL;                                       \
+        (o)->cur.file = NULL;                                              \
+     }                                                                      \
+   if ((o)->cur.key)                                                        \
+     {                                                                      \
+         evas_stringshare_del((o)->cur.key);                                \
+        if ((o)->prev.key == (o)->cur.key)                                 \
+              (o)->prev.key = NULL;                                        \
+        (o)->cur.key = NULL;                                               \
+     }                                                                      \
+   if ((o)->prev.file)                                                      \
+     {                                                                      \
+         evas_stringshare_del((o)->prev.file);                              \
+        (o)->prev.file = NULL;                                             \
+     }                                                                      \
+   if ((o)->prev.key)                                                       \
+     {                                                                      \
+         evas_stringshare_del((o)->prev.key);                               \
+        (o)->prev.key = NULL;                                              \
+     }
+
+struct _Evas_Intercept_Func_Basic
+{
+   void (*func) (void *data, Evas_Object *obj);
+   void *data;
+};
+
+struct _Evas_Intercept_Func_SizePos
+{
+   void (*func) (void *data, Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+   void *data;
+};
+
+struct _Evas_Intercept_Func_Obj
+{
+   void (*func) (void *data, Evas_Object *obj, Evas_Object *obj2);
+   void *data;
+};
+
+struct _Evas_Intercept_Func_Int
+{
+   void (*func) (void *data, Evas_Object *obj, int n);
+   void *data;
+};
+
+struct _Evas_Intercept_Func_Color
+{
+   void (*func) (void *data, Evas_Object *obj, int r, int g, int b, int a);
+   void *data;
+};
+
+struct _Evas_Key_Grab
+{
+   char               *keyname;
+   Evas_Modifier_Mask  modifiers;
+   Evas_Modifier_Mask  not_modifiers;
+   Evas_Object        *object;
+   unsigned char       exclusive : 1;
+   unsigned char       just_added : 1;
+   unsigned char       delete_me : 1;
+};
+
+struct _Evas_Intercept_Func
+{
+   Evas_Intercept_Func_Basic   show;
+   Evas_Intercept_Func_Basic   hide;
+   Evas_Intercept_Func_SizePos move;
+   Evas_Intercept_Func_SizePos resize;
+   Evas_Intercept_Func_Basic   raise;
+   Evas_Intercept_Func_Basic   lower;
+   Evas_Intercept_Func_Obj     stack_above;
+   Evas_Intercept_Func_Obj     stack_below;
+   Evas_Intercept_Func_Int     layer_set;
+   Evas_Intercept_Func_Color   color_set;
+   Evas_Intercept_Func_Obj     clip_set;
+   Evas_Intercept_Func_Basic   clip_unset;
+};
+
+struct _Evas_Smart
+{
+   DATA32            magic;
+
+   int               usage;
+
+   const Evas_Smart_Class *smart_class;
+
+   unsigned char     delete_me : 1;
+   unsigned char     class_allocated : 1;
+
+};
+
+struct _Evas_Modifier
+{
+   struct {
+      int       count;
+      char    **list;
+   } mod;
+   Evas_Modifier_Mask mask; /* ok we have a max of 64 modifiers */
+};
+
+struct _Evas_Lock
+{
+   struct {
+      int       count;
+      char    **list;
+   } lock;
+   Evas_Modifier_Mask mask; /* we have a max of 64 locks */
+};
+
+struct _Evas_Callbacks
+{
+   Evas_Object_List *callbacks;
+   int               walking_list;
+   unsigned char     deletions_waiting : 1;
+/*
+   Evas_Object_List *down;
+   Evas_Object_List *up;
+   Evas_Object_List *move;
+   Evas_Object_List *in;
+   Evas_Object_List *out;
+   Evas_Object_List *wheel;
+   Evas_Object_List *key_down;
+   Evas_Object_List *key_up;
+   Evas_Object_List *free;
+   Evas_Object_List *obj_focus_in;
+   Evas_Object_List *obj_focus_out;
+   Evas_Object_List *obj_show;
+   Evas_Object_List *obj_hide;
+   Evas_Object_List *obj_move;
+   Evas_Object_List *obj_resize;
+   Evas_Object_List *obj_restack;
+ */
+};
+
+struct _Evas
+{
+   Evas_Object_List  _list_data;
+
+   DATA32            magic;
+
+   struct {
+      unsigned char  inside : 1;
+      int            mouse_grabbed;
+      DATA32         button;
+      Evas_Coord     x, y;
+
+////      Evas_Coord         canvas_x, canvas_y;
+
+      struct {
+        Evas_List *in;
+      } object;
+
+   } pointer;
+
+   struct  {
+      Evas_Coord     x, y, w, h;
+      unsigned char  changed : 1;
+   } viewport;
+
+   struct {
+      int            w, h;
+      DATA32         render_method;
+      unsigned char  changed : 1;
+   } output;
+
+   Evas_List        *damages;
+   Evas_List        *obscures;
+
+   Evas_Layer       *layers;
+
+   Evas_Hash        *name_hash;
+
+   int               output_validity;
+
+   int               walking_list;
+   int               events_frozen;
+
+   struct {
+      Evas_Module *module;
+      Evas_Func *func;
+      struct {
+        void *output;
+
+        void *context;
+      } data;
+
+      void *info;
+      int   info_magic;
+   } engine;
+
+   Evas_Array     delete_objects;
+   Evas_Array     active_objects;
+   Evas_Array     restack_objects;
+   Evas_Array    render_objects;
+   Evas_Array    pending_objects;
+   Evas_Array     obscuring_objects;
+   Evas_Array     temporary_objects;
+
+   int            delete_grabs;
+   int            walking_grabs;
+   Evas_List     *grabs;
+
+   Evas_List     *font_path;
+
+   Evas_Object   *focused;
+   void          *attach_data;
+   Evas_Modifier  modifiers;
+   Evas_Lock      locks;
+   unsigned int   last_timestamp;
+   int            last_mouse_down_counter;
+   int            last_mouse_up_counter;
+   Evas_Font_Hinting_Flags hinting;
+   unsigned char  changed : 1;
+   unsigned char  delete_me : 1;
+   unsigned char  invalidate : 1;
+   unsigned char  cleanup : 1;
+};
+
+struct _Evas_Layer
+{
+   Evas_Object_List  _list_data;
+
+   short             layer;
+   Evas_Object      *objects;
+
+   Evas             *evas;
+
+   void             *engine_data;
+   int               usage;
+   unsigned char     delete_me : 1;
+};
+
+struct _Evas_Rectangles
+{
+   unsigned int    total;
+   unsigned int    count;
+   Evas_Rectangle *array;
+};
+
+struct _Evas_Size
+{
+   Evas_Coord w, h;
+};
+
+struct _Evas_Aspect
+{
+   Evas_Aspect_Control mode;
+   Evas_Size size;
+};
+
+struct _Evas_Size_Hints
+{
+   Evas_Size min, max, request;
+   Evas_Aspect aspect;
+};
+
+struct _Evas_Object
+{
+   Evas_Object_List  _list_data;
+
+   DATA32            magic;
+
+   const char       *type;
+   Evas_Layer       *layer;
+
+   struct {
+      struct {
+/*
+        struct {
+           int            x, y, w, h;
+           int            validity;
+        } geometry;
+ */
+        struct {
+           int            x, y, w, h;
+           unsigned char  r, g, b, a;
+           Evas_Bool      visible : 1;
+           Evas_Bool      dirty : 1;
+        } clip;
+      } cache;
+      Evas_Coord_Rectangle geometry;
+      struct {
+        unsigned char  r, g, b, a;
+      } color;
+      Evas_Object      *clipper;
+      short             layer;
+      Evas_Bool         visible : 1;
+      Evas_Bool         have_clipees : 1;
+      Evas_Bool         anti_alias : 1;
+      unsigned char     interpolation_color_space : 1;
+      Evas_Render_Op    render_op : 4;
+   } cur, prev;
+
+   char                       *name;
+
+   Evas_Intercept_Func *interceptors;
+
+   struct {
+      Evas_List *elements;
+   } data;
+
+   Evas_List *grabs;
+
+   Evas_Callbacks *callbacks;
+
+   struct {
+      Evas_List   *clipees;
+      Evas_List   *changes;
+   } clip;
+
+   const Evas_Object_Func *func;
+
+   void             *object_data;
+
+   struct {
+      Evas_Smart       *smart;
+      Evas_Object      *parent;
+   } smart;
+
+   Evas_Size_Hints            *size_hints;
+
+   int                         last_mouse_down_counter;
+   int                         last_mouse_up_counter;
+   int                         mouse_grabbed;
+
+   Evas_Object_Pointer_Mode    pointer_mode : 1;
+
+   Evas_Bool                   store : 1;
+   Evas_Bool                   pass_events : 1;
+   Evas_Bool                   parent_pass_events : 1;
+   Evas_Bool                   parent_cache_valid : 1;
+   Evas_Bool                   repeat_events : 1;
+   Evas_Bool                   restack : 1;
+   Evas_Bool                   changed : 1;
+   Evas_Bool                   is_active : 1;
+   Evas_Bool                   render_pre : 1;
+   Evas_Bool                   rect_del : 1;
+   Evas_Bool                   mouse_in : 1;
+   Evas_Bool                   pre_render_done : 1;
+   Evas_Bool                   intercepted : 1;
+   Evas_Bool                   focused : 1;
+   Evas_Bool                   in_layer : 1;
+   Evas_Bool                   no_propagate : 1;
+   Evas_Bool                   precise_is_inside : 1;
+
+   unsigned char               delete_me;
+};
+
+struct _Evas_Func_Node
+{
+   Evas_Object_List  _list_data;
+   void (*func) (void *data, Evas *e, Evas_Object *obj, void *event_info);
+   void *data;
+   Evas_Callback_Type type;
+   unsigned char delete_me : 1;
+};
+
+struct _Evas_Data_Node
+{
+   char *key;
+   void *data;
+};
+
+struct _Evas_Font_Dir
+{
+   Evas_Hash *lookup;
+   Evas_List *fonts;
+   Evas_List *aliases;
+   DATA64     dir_mod_time;
+   DATA64     fonts_dir_mod_time;
+   DATA64     fonts_alias_mod_time;
+};
+
+struct _Evas_Font
+{
+   struct {
+      const char *prop[14];
+   } x;
+   struct {
+      const char *name;
+   } simple;
+   const char *path;
+   char     type;
+};
+
+struct _Evas_Font_Alias
+{
+   const char *alias;
+   Evas_Font  *fn;
+};
+
+struct _Evas_Object_Func
+{
+   void (*free) (Evas_Object *obj);
+   void (*render) (Evas_Object *obj, void *output, void *context, void *surface, int x, int y);
+   void (*render_pre) (Evas_Object *obj);
+   void (*render_post) (Evas_Object *obj);
+
+   void (*store) (Evas_Object *obj);
+   void (*unstore) (Evas_Object *obj);
+
+   int  (*is_visible) (Evas_Object *obj);
+   int  (*was_visible) (Evas_Object *obj);
+
+   int  (*is_opaque) (Evas_Object *obj);
+   int  (*was_opaque) (Evas_Object *obj);
+
+   int  (*is_inside) (Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+   int  (*was_inside) (Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+
+   void (*coords_recalc) (Evas_Object *obj);
+};
+
+struct _Evas_Func
+{
+   void *(*info)                           (Evas *e);
+   void (*info_free)                       (Evas *e, void *info);
+   void (*setup)                           (Evas *e, void *info);
+
+   void (*output_free)                     (void *data);
+   void (*output_resize)                   (void *data, int w, int h);
+   void (*output_tile_size_set)            (void *data, int w, int h);
+   void (*output_redraws_rect_add)         (void *data, int x, int y, int w, int h);
+   void (*output_redraws_rect_del)         (void *data, int x, int y, int w, int h);
+   void (*output_redraws_clear)            (void *data);
+   void *(*output_redraws_next_update_get) (void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+   void (*output_redraws_next_update_push) (void *data, void *surface, int x, int y, int w, int h);
+   void (*output_flush)                    (void *data);
+   void (*output_idle_flush)               (void *data);
+
+   void *(*context_new)                    (void *data);
+   void (*context_free)                    (void *data, void *context);
+   void (*context_clip_set)                (void *data, void *context, int x, int y, int w, int h);
+   void (*context_clip_clip)               (void *data, void *context, int x, int y, int w, int h);
+   void (*context_clip_unset)              (void *data, void *context);
+   int  (*context_clip_get)                (void *data, void *context, int *x, int *y, int *w, int *h);
+   void (*context_color_set)               (void *data, void *context, int r, int g, int b, int a);
+   int  (*context_color_get)               (void *data, void *context, int *r, int *g, int *b, int *a);
+   void (*context_multiplier_set)          (void *data, void *context, int r, int g, int b, int a);
+   void (*context_multiplier_unset)        (void *data, void *context);
+   int  (*context_multiplier_get)          (void *data, void *context, int *r, int *g, int *b, int *a);
+   void (*context_cutout_add)              (void *data, void *context, int x, int y, int w, int h);
+   void (*context_cutout_clear)            (void *data, void *context);
+   void (*context_anti_alias_set)          (void *data, void *context, unsigned char aa);
+   unsigned char (*context_anti_alias_get) (void *data, void *context);
+   void (*context_color_interpolation_set) (void *data, void *context, int color_space);
+   int  (*context_color_interpolation_get) (void *data, void *context);
+   void (*context_render_op_set)           (void *data, void *context, int render_op);
+   int  (*context_render_op_get)           (void *data, void *context);
+
+   void (*rectangle_draw)                  (void *data, void *context, void *surface, int x, int y, int w, int h);
+
+   void (*line_draw)                       (void *data, void *context, void *surface, int x1, int y1, int x2, int y2);
+
+   void *(*polygon_point_add)              (void *data, void *context, void *polygon, int x, int y);
+   void *(*polygon_points_clear)           (void *data, void *context, void *polygon);
+   void (*polygon_draw)                    (void *data, void *context, void *surface, void *polygon);
+
+   void *(*gradient_new)                   (void *data);
+   void (*gradient_free)                   (void *data, void *gradient);
+   void (*gradient_color_stop_add)         (void *data, void *gradient, int r, int g, int b, int a, int delta);
+   void (*gradient_alpha_stop_add)         (void *data, void *gradient, int a, int delta);
+   void (*gradient_color_data_set)         (void *data, void *gradient, void *map, int len, int alpha_flag);
+   void (*gradient_alpha_data_set)         (void *data, void *gradient, void *alpha_map, int len);
+   void (*gradient_clear)                  (void *data, void *gradient);
+   void (*gradient_fill_set)               (void *data, void *gradient, int x, int y, int w, int h);
+   void (*gradient_fill_angle_set)         (void *data, void *gradient, double fill_angle);
+   void (*gradient_fill_spread_set)        (void *data, void *gradient, int spread);
+   void (*gradient_angle_set)              (void *data, void *gradient, double angle);
+   void (*gradient_offset_set)             (void *data, void *gradient, float offset);
+   void (*gradient_direction_set)          (void *data, void *gradient, int direction);
+   void (*gradient_type_set)               (void *data, void *gradient, char *name, char *params);
+   int  (*gradient_is_opaque)              (void *data, void *context, void *gradient, int x, int y, int w, int h);
+   int  (*gradient_is_visible)             (void *data, void *context, void *gradient, int x, int y, int w, int h);
+   void (*gradient_render_pre)             (void *data, void *context, void *gradient);
+   void (*gradient_render_post)            (void *data, void *gradient);
+   void (*gradient_draw)                   (void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h);
+
+   void *(*image_load)                     (void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo);
+   void *(*image_new_from_data)            (void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
+   void *(*image_new_from_copied_data)     (void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
+   void (*image_free)                      (void *data, void *image);
+   void (*image_size_get)                  (void *data, void *image, int *w, int *h);
+   void *(*image_size_set)                 (void *data, void *image, int w, int h);
+   void (*image_stride_get)                (void *data, void *image, int *stride);
+   void *(*image_dirty_region)             (void *data, void *image, int x, int y, int w, int h);
+   void *(*image_data_get)                 (void *data, void *image, int to_write, DATA32 **image_data);
+   void *(*image_data_put)                 (void *data, void *image, DATA32 *image_data);
+   void *(*image_alpha_set)                (void *data, void *image, int has_alpha);
+   int  (*image_alpha_get)                 (void *data, void *image);
+   void *(*image_border_set)               (void *data, void *image, int l, int r, int t, int b);
+   void  (*image_border_get)               (void *data, void *image, int *l, int *r, int *t, int *b);
+   void (*image_draw)                      (void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth);
+   char *(*image_comment_get)              (void *data, void *image, char *key);
+   char *(*image_format_get)               (void *data, void *image);
+   void (*image_colorspace_set)            (void *data, void *image, int cspace);
+   int  (*image_colorspace_get)            (void *data, void *image);
+   void (*image_native_set)                (void *data, void *image, void *native);
+   void *(*image_native_get)               (void *data, void *image);
+
+   void (*image_cache_flush)               (void *data);
+   void (*image_cache_set)                 (void *data, int bytes);
+   int  (*image_cache_get)                 (void *data);
+
+   void *(*font_load)                      (void *data, const char *name, int size);
+   void *(*font_memory_load)               (void *data, char *name, int size, const void *fdata, int fdata_size);
+   void *(*font_add)                       (void *data, void *font, const char *name, int size);
+   void *(*font_memory_add)                (void *data, void *font, char *name, int size, const void *fdata, int fdata_size);
+   void (*font_free)                       (void *data, void *font);
+   int  (*font_ascent_get)                 (void *data, void *font);
+   int  (*font_descent_get)                (void *data, void *font);
+   int  (*font_max_ascent_get)             (void *data, void *font);
+   int  (*font_max_descent_get)            (void *data, void *font);
+   void (*font_string_size_get)            (void *data, void *font, const char *text, int *w, int *h);
+   int  (*font_inset_get)                  (void *data, void *font, const char *text);
+   int  (*font_h_advance_get)              (void *data, void *font, const char *text);
+   int  (*font_v_advance_get)              (void *data, void *font, const char *text);
+   int  (*font_char_coords_get)            (void *data, void *font, const char *text, int pos, int *cx, int *cy, int *cw, int *ch);
+   int  (*font_char_at_coords_get)         (void *data, void *font, const char *text, int x, int y, int *cx, int *cy, int *cw, int *ch);
+   void (*font_draw)                       (void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text);
+
+   void (*font_cache_flush)                (void *data);
+   void (*font_cache_set)                  (void *data, int bytes);
+   int  (*font_cache_get)                  (void *data);
+
+   /* Engine functions will over time expand from here */
+
+   void (*font_hinting_set)                (void *data, void *font, int hinting);
+   int  (*font_hinting_can_hint)           (void *data, int hinting);
+
+/*    void (*image_rotation_set)              (void *data, void *image); */
+
+};
+
+struct _Evas_Image_Load_Func
+{
+  int (*file_head) (Image_Entry *ie, const char *file, const char *key);
+  int (*file_data) (Image_Entry *ie, const char *file, const char *key);
+};
+
+struct _Evas_Image_Save_Func
+{
+  int (*image_save) (RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+Evas_Object *evas_object_new(void);
+void evas_object_free(Evas_Object *obj, int clean_layer);
+void evas_object_inject(Evas_Object *obj, Evas *e);
+void evas_object_release(Evas_Object *obj, int clean_layer);
+void evas_object_change(Evas_Object *obj);
+void evas_object_render_pre_visible_change(Evas_Rectangles *rects, Evas_Object *obj, int is_v, int was_v);
+void evas_object_render_pre_clipper_change(Evas_Rectangles *rects, Evas_Object *obj);
+void evas_object_render_pre_prev_cur_add(Evas_Rectangles *rects, Evas_Object *obj);
+void evas_object_render_pre_effect_updates(Evas_Rectangles *rects, Evas_Object *obj, int is_v, int was_v);
+void evas_rects_return_difference_rects(Evas_Rectangles *rects, int x, int y, int w, int h, int xx, int yy, int ww, int hh);
+
+void evas_object_clip_dirty(Evas_Object *obj);
+void evas_object_recalc_clippees(Evas_Object *obj);
+Evas_Layer *evas_layer_new(Evas *e);
+void evas_layer_pre_free(Evas_Layer *lay);
+void evas_layer_free(Evas_Layer *lay);
+Evas_Layer *evas_layer_find(Evas *e, short layer_num);
+void evas_layer_add(Evas_Layer *lay);
+void evas_layer_del(Evas_Layer *lay);
+
+int evas_object_was_visible(Evas_Object *obj);
+int evas_object_was_in_output_rect(Evas_Object *obj, int x, int y, int w, int h);
+
+int evas_object_was_opaque(Evas_Object *obj);
+int evas_object_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+int evas_object_was_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+int evas_object_clippers_was_visible(Evas_Object *obj);
+void evas_object_event_callback_call(Evas_Object *obj, Evas_Callback_Type type, void *event_info);
+Evas_List *evas_event_objects_event_list(Evas *e, Evas_Object *stop, int x, int y);
+int evas_mem_free(int mem_required);
+int evas_mem_degrade(int mem_required);
+void evas_debug_error(void);
+void evas_debug_input_null(void);
+void evas_debug_magic_null(void);
+void evas_debug_magic_wrong(DATA32 expected, DATA32 supplied);
+void evas_debug_generic(const char *str);
+const char *evas_debug_magic_string_get(DATA32 magic);
+void evas_object_smart_use(Evas_Smart *s);
+void evas_object_smart_unuse(Evas_Smart *s);
+void evas_object_smart_del(Evas_Object *obj);
+void evas_object_smart_cleanup(Evas_Object *obj);
+void evas_object_smart_member_raise(Evas_Object *member);
+void evas_object_smart_member_lower(Evas_Object *member);
+void evas_object_smart_member_stack_above(Evas_Object *member, Evas_Object *other);
+void evas_object_smart_member_stack_below(Evas_Object *member, Evas_Object *other);
+const Evas_Object_List *evas_object_smart_members_get_direct(const Evas_Object *obj);
+void *evas_mem_calloc(int size);
+void evas_object_event_callback_all_del(Evas_Object *obj);
+void evas_object_event_callback_cleanup(Evas_Object *obj);
+void evas_object_inform_call_show(Evas_Object *obj);
+void evas_object_inform_call_hide(Evas_Object *obj);
+void evas_object_inform_call_move(Evas_Object *obj);
+void evas_object_inform_call_resize(Evas_Object *obj);
+void evas_object_inform_call_restack(Evas_Object *obj);
+void evas_object_inform_call_changed_size_hints(Evas_Object *obj);
+void evas_object_intercept_cleanup(Evas_Object *obj);
+int evas_object_intercept_call_show(Evas_Object *obj);
+int evas_object_intercept_call_hide(Evas_Object *obj);
+int evas_object_intercept_call_move(Evas_Object *obj, Evas_Coord x, Evas_Coord y);
+int evas_object_intercept_call_resize(Evas_Object *obj, Evas_Coord w, Evas_Coord h);
+int evas_object_intercept_call_raise(Evas_Object *obj);
+int evas_object_intercept_call_lower(Evas_Object *obj);
+int evas_object_intercept_call_stack_above(Evas_Object *obj, Evas_Object *above);
+int evas_object_intercept_call_stack_below(Evas_Object *obj, Evas_Object *below);
+int evas_object_intercept_call_layer_set(Evas_Object *obj, int l);
+int evas_object_intercept_call_color_set(Evas_Object *obj, int r, int g, int b, int a);
+int evas_object_intercept_call_clip_set(Evas_Object *obj, Evas_Object *clip);
+int evas_object_intercept_call_clip_unset(Evas_Object *obj);
+void evas_object_grabs_cleanup(Evas_Object *obj);
+void evas_key_grab_free(Evas_Object *obj, const char *keyname, Evas_Modifier_Mask modifiers, Evas_Modifier_Mask not_modifiers);
+void evas_font_dir_cache_free(void);
+const char *evas_font_dir_cache_find(char *dir, char *font);
+Evas_List *evas_font_dir_available_list(const Evas* evas);
+void evas_font_dir_available_list_free(Evas_List *available);
+void evas_font_free(Evas *evas, void *font);
+void *evas_font_load(Evas *evas, const char *name, const char *source, int size);
+void evas_font_load_hinting_set(Evas *evas, void *font, int hinting);
+void evas_object_smart_member_cache_invalidate(Evas_Object *obj);
+void evas_text_style_pad_get(Evas_Text_Style_Type style, int *l, int *r, int *t, int *b);
+void _evas_object_text_rehint(Evas_Object *obj);
+void _evas_object_textblock_rehint(Evas_Object *obj);
+
+extern int _evas_alloc_error;
+
+struct _Evas_Imaging_Image
+{
+   RGBA_Image *image;
+};
+
+struct _Evas_Imaging_Font
+{
+   RGBA_Font *font;
+};
+
+int evas_async_events_init(void);
+int evas_async_events_shutdown(void);
+
+void _evas_walk(Evas *e);
+void _evas_unwalk(Evas *e);
+
+EAPI int _evas_module_engine_inherit(Evas_Func *funcs, char *name);
+
+void evas_render_invalidate(Evas *e);
+void evas_render_object_recalc(Evas_Object *obj);
+
+#define EVAS_API_OVERRIDE(func, api, prefix) \
+     (api)->func = prefix##func
+
+#include "evas_inline.x"
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/lib/main.c b/src/lib/main.c
new file mode 100644 (file)
index 0000000..3578cc4
--- /dev/null
@@ -0,0 +1,209 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+int _evas_alloc_error = 0;
+static int _evas_debug_init = 0;
+static int _evas_debug_show = 0;
+static int _evas_debug_abort = 0;
+
+/**
+ * Return if any allocation errors have occured during the prior function
+ * @return The allocation error flag
+ *
+ * This function will return if any memory allocation errors occured during,
+ * and what kind they were. The return value will be one of
+ * EVAS_ALLOC_ERROR_NONE, EVAS_ALLOC_ERROR_FATAL or EVAS_ALLOC_ERROR_RECOVERED
+ * with each meaning something different.
+ *
+ * EVAS_ALLOC_ERROR_NONE means that no errors occured at all and the function
+ * worked as expected.
+ *
+ * EVAS_ALLOC_ERROR_FATAL means the function was completely unable to perform
+ * its job and will  have  exited as cleanly as possible. The programmer
+ * should consider this as a sign of very low memory and should try and safely
+ * recover from the prior functions failure (or try free up memory elsewhere
+ * and try again after more memory is freed).
+ *
+ * EVAS_ALLOC_ERROR_RECOVERED means that an allocation error occured, but was
+ * recovered from by evas finding memory of its own it has allocated and
+ * freeing what it sees as not really usefully allocated memory. What is freed
+ * may vary. Evas may reduce the resolution of images, free cached images or
+ * fonts, trhow out pre-rendered data, reduce the complexity of change lists
+ * etc. Evas and the program will function as per normal after this, but this
+ * is a sign of low memory, and it is suggested that the program try and
+ * identify memory it doesn't need, and free it.
+ *
+ * Example:
+ * @code
+ * extern Evas_Object *object;
+ * void callback (void *data, Evas *e, Evas_Object *obj, void *event_info);
+ *
+ * evas_object_event_callback_add(object, EVAS_CALLBACK_MOUSE_DOWN, callback, NULL);
+ * if (evas_alloc_error() == EVAS_ALLOC_ERROR_FATAL)
+ *   {
+ *     fprintf(stderr, "ERROR: Completely unable to attach callabck. Must\n");
+ *     fprintf(stderr, "       destroy object now as it cannot be used.\n");
+ *     evas_object_del(object);
+ *     object = NULL;
+ *     fprintf(stderr, "WARNING: Memory is really low. Cleaning out RAM.\n");
+ *     my_memory_cleanup();
+ *   }
+ * if (evas_alloc_error() == EVAS_ALLOC_ERROR_RECOVERED)
+ *   {
+ *     fprintf(stderr, "WARNING: Memory is really low. Cleaning out RAM.\n");
+ *     my_memory_cleanup();
+ *   }
+ * @endcode
+ */
+EAPI int
+evas_alloc_error(void)
+{
+   return _evas_alloc_error;
+}
+
+/* free cached items only in ram for speed reasons. return 0 if cant free */
+int
+evas_mem_free(int mem_required)
+{
+   return 0;
+}
+
+/* start reducing quality of images etc. return 0 if cant free anything */
+int
+evas_mem_degrade(int mem_required)
+{
+   return 0;
+}
+
+void *
+evas_mem_calloc(int size)
+{
+   void *ptr;
+
+   ptr = calloc(1, size);
+   if (ptr) return ptr;
+   MERR_BAD();
+   while ((!ptr) && (evas_mem_free(size))) ptr = calloc(1, size);
+   if (ptr) return ptr;
+   while ((!ptr) && (evas_mem_degrade(size))) ptr = calloc(1, size);
+   if (ptr) return ptr;
+   MERR_FATAL();
+   return NULL;
+}
+
+void
+evas_debug_error(void)
+{
+   if (!_evas_debug_init)
+     {
+       if (getenv("EVAS_DEBUG_SHOW")) _evas_debug_show = 1;
+       if (getenv("EVAS_DEBUG_ABORT")) _evas_debug_abort = 1;
+       _evas_debug_init = 1;
+     }
+   if (_evas_debug_show)
+     fprintf(stderr,
+            "*** EVAS ERROR: Evas Magic Check Failed!!!\n");
+}
+
+void
+evas_debug_input_null(void)
+{
+   if (!_evas_debug_init)
+     {
+       if (getenv("EVAS_DEBUG_SHOW")) _evas_debug_show = 1;
+       if (getenv("EVAS_DEBUG_ABORT")) _evas_debug_abort = 1;
+       _evas_debug_init = 1;
+     }
+   if (_evas_debug_show)
+     fprintf(stderr,
+            "  Input object pointer is NULL!\n");
+   if (_evas_debug_abort) abort();
+}
+
+void
+evas_debug_magic_null(void)
+{
+   if (!_evas_debug_init)
+     {
+       if (getenv("EVAS_DEBUG_SHOW")) _evas_debug_show = 1;
+       if (getenv("EVAS_DEBUG_ABORT")) _evas_debug_abort = 1;
+       _evas_debug_init = 1;
+     }
+   if (_evas_debug_show)
+     fprintf(stderr,
+            "  Input object is zero'ed out (maybe a freed object or zero-filled RAM)!\n");
+   if (_evas_debug_abort) abort();
+}
+
+void
+evas_debug_magic_wrong(DATA32 expected, DATA32 supplied)
+{
+   if (!_evas_debug_init)
+     {
+       if (getenv("EVAS_DEBUG_SHOW")) _evas_debug_show = 1;
+       if (getenv("EVAS_DEBUG_ABORT")) _evas_debug_abort = 1;
+       _evas_debug_init = 1;
+     }
+   if (_evas_debug_show)
+     fprintf(stderr,
+            "  Input object is wrong type\n"
+            "    Expected: %08x - %s\n"
+            "    Supplied: %08x - %s\n",
+            expected, evas_debug_magic_string_get(expected),
+            supplied, evas_debug_magic_string_get(supplied));
+   if (_evas_debug_abort) abort();
+}
+
+void
+evas_debug_generic(const char *str)
+{
+   if (!_evas_debug_init)
+     {
+       if (getenv("EVAS_DEBUG_SHOW")) _evas_debug_show = 1;
+       if (getenv("EVAS_DEBUG_ABORT")) _evas_debug_abort = 1;
+       _evas_debug_init = 1;
+     }
+   if (_evas_debug_show)
+     fprintf(stderr,
+            "*** EVAS ERROR:\n"
+            "%s", (char *)str);
+   if (_evas_debug_abort) abort();
+}
+
+const char *
+evas_debug_magic_string_get(DATA32 magic)
+{
+   switch (magic)
+     {
+      case MAGIC_EVAS:
+       return "Evas";
+       break;
+      case MAGIC_OBJ:
+       return "Evas_Object";
+       break;
+      case MAGIC_OBJ_RECTANGLE:
+       return "Evas_Object (Rectangle)";
+       break;
+      case MAGIC_OBJ_LINE:
+       return "Evas_Object (Line)";
+       break;
+      case MAGIC_OBJ_GRADIENT:
+       return "Evas_Object (Gradient)";
+       break;
+      case MAGIC_OBJ_POLYGON:
+       return "Evas_Object (Polygon)";
+       break;
+      case MAGIC_OBJ_IMAGE:
+       return "Evas_Object (Image)";
+       break;
+      case MAGIC_OBJ_TEXT:
+       return "Evas_Object (Text)";
+       break;
+      case MAGIC_OBJ_SMART:
+       return "Evas_Object (Smart)";
+       break;
+      default:
+       return "<UNKNOWN>";
+     };
+   return "<UNKNOWN>";
+}
diff --git a/src/modules/.cvsignore b/src/modules/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/modules/Makefile.am b/src/modules/Makefile.am
new file mode 100644 (file)
index 0000000..af10cbc
--- /dev/null
@@ -0,0 +1,3 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+SUBDIRS = engines loaders savers
diff --git a/src/modules/engines/.cvsignore b/src/modules/engines/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/modules/engines/Makefile.am b/src/modules/engines/Makefile.am
new file mode 100644 (file)
index 0000000..22e311b
--- /dev/null
@@ -0,0 +1,27 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+SUBDIRS = \
+software_generic \
+buffer \
+cairo_common \
+cairo_x11 \
+fb \
+gl_common \
+gl_x11 \
+gl_glew \
+software_qtopia \
+software_win32_gdi \
+software_ddraw \
+software_x11 \
+software_xcb \
+xrender_x11 \
+xrender_xcb \
+software_sdl \
+glitz_x11 \
+software_16 \
+software_16_x11 \
+direct3d \
+software_16_ddraw \
+software_16_wince \
+software_16_sdl
+
diff --git a/src/modules/engines/buffer/.cvsignore b/src/modules/engines/buffer/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/buffer/Evas_Engine_Buffer.h b/src/modules/engines/buffer/Evas_Engine_Buffer.h
new file mode 100644 (file)
index 0000000..02dea14
--- /dev/null
@@ -0,0 +1,37 @@
+#ifndef _EVAS_ENGINE_BUFFER_H
+#define _EVAS_ENGINE_BUFFER_H
+
+#define EVAS_ENGINE_BUFFER_DEPTH_ARGB32 0
+#define EVAS_ENGINE_BUFFER_DEPTH_BGRA32 1
+#define EVAS_ENGINE_BUFFER_DEPTH_RGB24  2
+#define EVAS_ENGINE_BUFFER_DEPTH_BGR24  3
+#define EVAS_ENGINE_BUFFER_DEPTH_RGB32  4
+
+typedef struct _Evas_Engine_Info_Buffer Evas_Engine_Info_Buffer;
+
+struct _Evas_Engine_Info_Buffer
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   struct {
+      int   depth_type;
+
+      void *dest_buffer;
+      int   dest_buffer_row_bytes;
+
+      char  use_color_key : 1;
+      int   alpha_threshold;
+      int   color_key_r;
+      int   color_key_g;
+      int   color_key_b;
+      struct {
+        void * (*new_update_region) (int x, int y, int w, int h, int *row_bytes);
+        void   (*free_update_region) (int x, int y, int w, int h, void *data);
+      } func;
+   } info;
+};
+#endif
+
+
diff --git a/src/modules/engines/buffer/Makefile.am b/src/modules/engines/buffer/Makefile.am
new file mode 100644 (file)
index 0000000..34a25b5
--- /dev/null
@@ -0,0 +1,32 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+if BUILD_ENGINE_BUFFER
+
+pkgdir = $(libdir)/evas/modules/engines/buffer/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = \
+evas_engine.c \
+evas_outbuf.c
+
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS =  @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Buffer.h
+
+endif
+
+EXTRA_DIST = evas_engine.h
diff --git a/src/modules/engines/buffer/evas_engine.c b/src/modules/engines/buffer/evas_engine.c
new file mode 100644 (file)
index 0000000..501f601
--- /dev/null
@@ -0,0 +1,360 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Buffer.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Tilebuf          *tb;
+   Outbuf           *ob;
+   Tilebuf_Rect     *rects;
+   Evas_Object_List *cur_rect;
+   int               end : 1;
+};
+
+/* prototypes we will use here */
+static void *_output_setup(int w, int h, void *dest_buffer, int dest_buffer_row_bytes, int depth_type, int use_color_key, int alpha_threshold, int color_key_r, int color_key_g, int color_key_b, void *(*new_update_region) (int x, int y, int w, int h, int *row_bytes), void (*free_update_region) (int x, int y, int w, int h, void *data));
+
+static void *eng_info(Evas *e);
+static void eng_info_free(Evas *e, void *info);
+static void eng_setup(Evas *e, void *info);
+static void eng_output_free(void *data);
+static void eng_output_resize(void *data, int w, int h);
+static void eng_output_tile_size_set(void *data, int w, int h);
+static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_clear(void *data);
+static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h);
+static void eng_output_flush(void *data);
+static void eng_output_idle_flush(void *data);
+
+/* internal engine routines */
+static void *
+_output_setup(int w,
+             int h,
+             void *dest_buffer,
+             int dest_buffer_row_bytes,
+             int depth_type,
+             int use_color_key,
+             int alpha_threshold,
+             int color_key_r,
+             int color_key_g,
+             int color_key_b,
+             void *(*new_update_region) (int x, int y, int w, int h, int *row_bytes),
+             void (*free_update_region) (int x, int y, int w, int h, void *data)
+             )
+{
+   Render_Engine *re;
+
+   re = calloc(1, sizeof(Render_Engine));
+   /* if we haven't initialized - init (automatic abort if already done) */
+   evas_common_cpu_init();
+
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+
+   evas_buffer_outbuf_buf_init();
+
+     {
+       Outbuf_Depth dep;
+       DATA32 color_key;
+
+       dep = OUTBUF_DEPTH_BGR_24BPP_888_888;
+       if      (depth_type == EVAS_ENGINE_BUFFER_DEPTH_ARGB32)
+         dep = OUTBUF_DEPTH_ARGB_32BPP_8888_8888;
+       else if (depth_type == EVAS_ENGINE_BUFFER_DEPTH_RGB32)
+         dep = OUTBUF_DEPTH_RGB_32BPP_888_8888;
+       else if (depth_type == EVAS_ENGINE_BUFFER_DEPTH_BGRA32)
+         dep = OUTBUF_DEPTH_BGRA_32BPP_8888_8888;
+       else if (depth_type == EVAS_ENGINE_BUFFER_DEPTH_RGB24)
+         dep = OUTBUF_DEPTH_RGB_24BPP_888_888;
+       else if (depth_type == EVAS_ENGINE_BUFFER_DEPTH_BGR24)
+         dep = OUTBUF_DEPTH_BGR_24BPP_888_888;
+       R_VAL(&color_key) = color_key_r;
+       G_VAL(&color_key) = color_key_g;
+       B_VAL(&color_key) = color_key_b;
+       A_VAL(&color_key) = 0;
+       re->ob = evas_buffer_outbuf_buf_setup_fb(w,
+                                                h,
+                                                dep,
+                                                dest_buffer,
+                                                dest_buffer_row_bytes,
+                                                use_color_key,
+                                                color_key,
+                                                alpha_threshold,
+                                                new_update_region,
+                                                free_update_region);
+     }
+   re->tb = evas_common_tilebuf_new(w, h);
+   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   return re;
+}
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Buffer *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_Buffer));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_Buffer *in;
+
+   in = (Evas_Engine_Info_Buffer *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_Buffer *info;
+
+   info = (Evas_Engine_Info_Buffer *)in;
+   if (e->engine.data.output)
+     eng_output_free(e->engine.data.output);
+   re = _output_setup(e->output.w,
+                     e->output.h,
+                     info->info.dest_buffer,
+                     info->info.dest_buffer_row_bytes,
+                     info->info.depth_type,
+                     info->info.use_color_key,
+                     info->info.alpha_threshold,
+                     info->info.color_key_r,
+                     info->info.color_key_g,
+                     info->info.color_key_b,
+                     info->info.func.new_update_region,
+                     info->info.func.free_update_region);
+   e->engine.data.output = re;
+   if (!e->engine.data.output) return;
+   if (!e->engine.data.context)
+     e->engine.data.context = e->engine.func->context_new(e->engine.data.output);
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_buffer_outbuf_buf_free(re->ob);
+   evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+     {
+       int      depth;
+       void    *dest;
+       int      dest_row_bytes;
+       int      alpha_level;
+       DATA32   color_key;
+       char     use_color_key;
+       void * (*new_update_region) (int x, int y, int w, int h, int *row_bytes);
+       void   (*free_update_region) (int x, int y, int w, int h, void *data);
+
+       depth = re->ob->depth;
+       dest = re->ob->dest;
+       dest_row_bytes = re->ob->dest_row_bytes;
+       alpha_level = re->ob->alpha_level;
+       color_key = re->ob->color_key;
+       use_color_key = re->ob->use_color_key;
+       new_update_region = re->ob->func.new_update_region;
+       free_update_region = re->ob->func.free_update_region;
+       evas_buffer_outbuf_buf_free(re->ob);
+       re->ob = evas_buffer_outbuf_buf_setup_fb(w,
+                                                h,
+                                                depth,
+                                                dest,
+                                                dest_row_bytes,
+                                                use_color_key,
+                                                color_key,
+                                                alpha_level,
+                                                new_update_region,
+                                                free_update_region);
+     }
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   RGBA_Image *surface;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *)re->rects;
+     }
+   if (!re->cur_rect) return NULL;
+   rect = (Tilebuf_Rect *)re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   if ((ux + uw) > re->ob->w) uw = re->ob->w - ux;
+   if ((uy + uh) > re->ob->h) uh = re->ob->h - uy;
+   if ((uw <= 0) || (uh <= 0)) return NULL;
+   surface = evas_buffer_outbuf_buf_new_region_for_update(re->ob,
+                                                         ux, uy, uw, uh,
+                                                         cx, cy, cw, ch);
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   return surface;
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_pipe_begin(surface);
+   evas_common_pipe_flush(surface);
+   evas_buffer_outbuf_buf_push_updated_region(re->ob, surface, x, y, w, h);
+   evas_buffer_outbuf_buf_free_region_for_update(re->ob, surface);
+   evas_common_cpu_end_opt();
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi = 
+{
+   EVAS_MODULE_API_VERSION, 
+     EVAS_MODULE_TYPE_ENGINE,
+     "buffer",
+     "none"
+};
diff --git a/src/modules/engines/buffer/evas_engine.h b/src/modules/engines/buffer/evas_engine.h
new file mode 100644 (file)
index 0000000..ac28620
--- /dev/null
@@ -0,0 +1,57 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+typedef struct _Outbuf                Outbuf;
+
+typedef enum   _Outbuf_Depth          Outbuf_Depth;
+
+enum _Outbuf_Depth
+{
+   OUTBUF_DEPTH_NONE,
+     OUTBUF_DEPTH_ARGB_32BPP_8888_8888,
+     OUTBUF_DEPTH_BGRA_32BPP_8888_8888,
+     OUTBUF_DEPTH_RGB_32BPP_888_8888,
+     OUTBUF_DEPTH_BGR_32BPP_888_8888,
+     OUTBUF_DEPTH_RGB_24BPP_888_888,
+     OUTBUF_DEPTH_BGR_24BPP_888_888,
+     OUTBUF_DEPTH_LAST
+};
+
+struct _Outbuf
+{
+   int                           w, h;
+   Outbuf_Depth                  depth;
+
+   void                         *dest;
+   int                           dest_row_bytes;
+
+   int                           alpha_level;
+   DATA32                        color_key;
+   char                          use_color_key : 1;
+
+   struct {
+      void * (*new_update_region) (int x, int y, int w, int h, int *row_bytes);
+      void   (*free_update_region) (int x, int y, int w, int h, void *data);
+   } func;
+
+   struct {
+      RGBA_Image                *back_buf;
+   } priv;
+};
+
+/****/
+
+void         evas_buffer_outbuf_buf_init                   (void);
+void         evas_buffer_outbuf_buf_free                   (Outbuf *buf);
+
+Outbuf      *evas_buffer_outbuf_buf_setup_fb               (int w, int h, Outbuf_Depth depth, void *dest, int dest_row_bytes, int use_color_key, DATA32 color_key, int alpha_level,
+                                                           void * (*new_update_region) (int x, int y, int w, int h, int *row_bytes),
+                                                           void   (*free_update_region) (int x, int y, int w, int h, void *data));
+
+
+RGBA_Image  *evas_buffer_outbuf_buf_new_region_for_update  (Outbuf *buf, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);
+void         evas_buffer_outbuf_buf_free_region_for_update (Outbuf *buf, RGBA_Image *update);
+void         evas_buffer_outbuf_buf_push_updated_region    (Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h);
+
+#endif
+
diff --git a/src/modules/engines/buffer/evas_outbuf.c b/src/modules/engines/buffer/evas_outbuf.c
new file mode 100644 (file)
index 0000000..27c7ed7
--- /dev/null
@@ -0,0 +1,361 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+#include <sys/time.h>
+
+void
+evas_buffer_outbuf_buf_init(void)
+{
+}
+
+void
+evas_buffer_outbuf_buf_free(Outbuf *buf)
+{
+   if (buf->priv.back_buf)
+     {
+        evas_cache_image_drop(&buf->priv.back_buf->cache_entry);
+     }
+   free(buf);
+}
+
+Outbuf *
+evas_buffer_outbuf_buf_setup_fb(int w, int h, Outbuf_Depth depth, void *dest, int dest_row_bytes, int use_color_key, DATA32 color_key, int alpha_level,
+                               void * (*new_update_region) (int x, int y, int w, int h, int *row_bytes),
+                               void   (*free_update_region) (int x, int y, int w, int h, void *data)
+                               )
+{
+   Outbuf *buf;
+   int y;
+   int bpp;
+   
+   buf = calloc(1, sizeof(Outbuf));
+   if (!buf) return NULL;
+
+   buf->w = w;
+   buf->h = h;
+   buf->depth = depth;
+
+   buf->dest = dest;
+   buf->dest_row_bytes = dest_row_bytes;
+
+   buf->alpha_level = alpha_level;
+   buf->color_key = color_key;
+   buf->use_color_key = use_color_key;
+
+   buf->func.new_update_region = new_update_region;
+   buf->func.free_update_region = free_update_region;
+
+   bpp = sizeof(DATA32);
+   if ((buf->depth == OUTBUF_DEPTH_RGB_24BPP_888_888) ||
+       (buf->depth == OUTBUF_DEPTH_BGR_24BPP_888_888))
+     bpp = 3;
+
+   if ((buf->depth == OUTBUF_DEPTH_ARGB_32BPP_8888_8888) &&
+       (buf->dest) && (buf->dest_row_bytes == (buf->w * sizeof(DATA32))))
+     {
+       for (y = 0; y < h; y++)
+         memset(((unsigned char *)(buf->dest)) + (y * buf->dest_row_bytes), 
+                0, w * bpp);
+       buf->priv.back_buf = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
+                                                                  w, h,
+                                                                  buf->dest,
+                                                                  1, EVAS_COLORSPACE_ARGB8888);
+     }
+   else if ((buf->depth == OUTBUF_DEPTH_RGB_32BPP_888_8888) &&
+       (buf->dest) && (buf->dest_row_bytes == (buf->w * sizeof(DATA32))))
+     {
+        buf->priv.back_buf = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
+                                                                  w, h,
+                                                                  buf->dest,
+                                                                  0, EVAS_COLORSPACE_ARGB8888);
+     }
+
+   return buf;
+}
+
+RGBA_Image *
+evas_buffer_outbuf_buf_new_region_for_update(Outbuf *buf, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch)
+{
+   RGBA_Image *im;
+   DATA32 *ptr;
+
+   if (buf->priv.back_buf)
+     {
+       *cx = x; *cy = y; *cw = w; *ch = h;
+       if (buf->priv.back_buf->cache_entry.flags.alpha)
+         {
+            int  ww = w;
+            ptr = buf->priv.back_buf->image.data + (y * buf->priv.back_buf->cache_entry.w) + x;
+            while (h--)
+              {
+                 while (w--)
+                   *ptr++ = 0;
+                 w = ww;
+                 ptr += (buf->priv.back_buf->cache_entry.w - w);
+              }
+         }
+       return buf->priv.back_buf;
+     }
+   else
+     {
+       *cx = 0; *cy = 0; *cw = w; *ch = h;
+       im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+        if (im)
+          {
+            if (((buf->depth == OUTBUF_DEPTH_ARGB_32BPP_8888_8888)) ||
+                ((buf->depth == OUTBUF_DEPTH_BGRA_32BPP_8888_8888)))
+              {
+                 im->cache_entry.flags.alpha = 1;
+                  im = (RGBA_Image *) evas_cache_image_size_set(&im->cache_entry, w, h);
+                  if (im)
+                    {
+                       memset(im->image.data, 0, w * h * sizeof(DATA32));
+                    }
+               }
+          }
+     }
+   return im;
+}
+
+void
+evas_buffer_outbuf_buf_free_region_for_update(Outbuf *buf, RGBA_Image *update)
+{
+   if (update != buf->priv.back_buf) evas_cache_image_drop(&update->cache_entry);
+}
+
+void
+evas_buffer_outbuf_buf_push_updated_region(Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h)
+{
+   /* copy update image to out buf & convert */
+   switch (buf->depth)
+     {
+      case OUTBUF_DEPTH_RGB_24BPP_888_888:
+       /* copy & pack into 24bpp - if colorkey is enabled... etc. */
+         {
+            DATA8 thresh;
+            int xx, yy;
+            int row_bytes;
+            DATA8 *dest;
+            DATA32 colorkey;
+            DATA32 *src;
+            DATA8 *dst;
+
+            colorkey = buf->color_key;
+            thresh = buf->alpha_level;
+            row_bytes = buf->dest_row_bytes;
+            dest = (DATA8 *)(buf->dest) + (y * row_bytes) + (x * 3);
+            if (buf->func.new_update_region)
+              {
+                 dest = buf->func.new_update_region(x, y, w, h, &row_bytes);
+              }
+            if (!dest) break;
+            if (buf->use_color_key)
+              {
+                 for (yy = 0; yy < h; yy++)
+                   {
+                      dst = dest + (yy * row_bytes);
+                      src = update->image.data + (yy * update->cache_entry.w);
+                      for (xx = 0; xx < w; xx++)
+                        {
+                           if (A_VAL(src) > thresh)
+                             {
+                                *dst++ = R_VAL(src);
+                                *dst++ = G_VAL(src);
+                                *dst++ = B_VAL(src);
+                             }
+                           else
+                             {
+                                *dst++ = R_VAL(&colorkey);
+                                *dst++ = G_VAL(&colorkey);
+                                *dst++ = B_VAL(&colorkey);
+                             }
+                           src++;
+                        }
+                   }
+              }
+            else
+              {
+                 for (yy = 0; yy < h; yy++)
+                   {
+                      dst = dest + (yy * row_bytes);
+                      src = update->image.data + (yy * update->cache_entry.w);
+                      for (xx = 0; xx < w; xx++)
+                        {
+                           *dst++ = R_VAL(src);
+                           *dst++ = G_VAL(src);
+                           *dst++ = B_VAL(src);
+                           src++;
+                        }
+                   }
+              }
+            if (buf->func.free_update_region)
+              {
+                 buf->func.free_update_region(x, y, w, h, dest);
+              }
+         }
+       break;
+      case OUTBUF_DEPTH_BGR_24BPP_888_888:
+       /* copy & pack into 24bpp - if colorkey is enabled... etc. */
+         {
+            DATA8 thresh;
+            int xx, yy;
+            int row_bytes;
+            DATA8 *dest;
+            DATA32 colorkey;
+            DATA32 *src;
+            DATA8 *dst;
+
+            colorkey = buf->color_key;
+            thresh = buf->alpha_level;
+            row_bytes = buf->dest_row_bytes;
+            dest = (DATA8 *)(buf->dest) + (y * row_bytes) + (x * 3);
+            if (buf->func.new_update_region)
+              {
+                 dest = buf->func.new_update_region(x, y, w, h, &row_bytes);
+              }
+            if (!dest) break;
+            if (buf->use_color_key)
+              {
+                 for (yy = 0; yy < h; yy++)
+                   {
+                      dst = dest + (yy * row_bytes);
+                      src = update->image.data + (yy * update->cache_entry.w);
+                      for (xx = 0; xx < w; xx++)
+                        {
+                           if (A_VAL(src) > thresh)
+                             {
+                                *dst++ = B_VAL(src);
+                                *dst++ = G_VAL(src);
+                                *dst++ = R_VAL(src);
+                             }
+                           else
+                             {
+                                *dst++ = B_VAL(&colorkey);
+                                *dst++ = G_VAL(&colorkey);
+                                *dst++ = R_VAL(&colorkey);
+                             }
+                           src++;
+                        }
+                   }
+              }
+            else
+              {
+                 for (yy = 0; yy < h; yy++)
+                   {
+                      dst = dest + (yy * row_bytes);
+                      src = update->image.data + (yy * update->cache_entry.w);
+                      for (xx = 0; xx < w; xx++)
+                        {
+                           *dst++ = B_VAL(src);
+                           *dst++ = G_VAL(src);
+                           *dst++ = R_VAL(src);
+                           src++;
+                        }
+                   }
+              }
+            if (buf->func.free_update_region)
+              {
+                 buf->func.free_update_region(x, y, w, h, dest);
+              }
+         }
+       break;
+      case OUTBUF_DEPTH_RGB_32BPP_888_8888:
+      case OUTBUF_DEPTH_ARGB_32BPP_8888_8888:
+         {
+            DATA32 *dest, *src, *dst;
+            int yy, row_bytes;
+
+            row_bytes = buf->dest_row_bytes;
+            dest = (DATA8 *)(buf->dest) + (y * row_bytes) + (x * 4);
+            if (buf->func.new_update_region)
+              {
+                 dest = buf->func.new_update_region(x, y, w, h, &row_bytes);
+              }
+            /* no need src == dest */
+            if (!buf->priv.back_buf)
+              {
+                 Gfx_Func_Copy func;
+                 
+                 func = evas_common_draw_func_copy_get(w, 0);
+                 if (func)
+                   {
+                      for (yy = 0; yy < h; yy++)
+                        {
+                           src = update->image.data + (yy * update->cache_entry.w);
+                           dst = (DATA8 *)(buf->dest) + ((y + yy) * row_bytes);
+                           func(src, dst, w);
+                        }
+                      
+                   }
+              }
+            if (buf->func.free_update_region)
+              {
+                 buf->func.free_update_region(x, y, w, h, dest);
+              }
+         }
+       break;
+      case OUTBUF_DEPTH_BGR_32BPP_888_8888:
+         {
+            DATA32 *src, *dst;
+            DATA8 *dest;
+            int xx, yy, row_bytes;
+            
+            row_bytes = buf->dest_row_bytes;
+            dest = (DATA8 *)(buf->dest) + (y * row_bytes) + (x * 4);
+            if (buf->func.new_update_region)
+              {
+                 dest = buf->func.new_update_region(x, y, w, h, &row_bytes);
+              }
+            for (yy = 0; yy < h; yy++)
+              {
+                 dst = dest + (yy * row_bytes);
+                 src = update->image.data + (yy * update->cache_entry.w);
+                 for (xx = 0; xx < w; xx++)
+                   {
+                      A_VAL(dst) = B_VAL(src);
+                      R_VAL(dst) = G_VAL(src);
+                      G_VAL(dst) = R_VAL(src);
+                      dst++;
+                      src++;
+                   }
+              }
+            if (buf->func.free_update_region)
+              {
+                 buf->func.free_update_region(x, y, w, h, dest);
+              }
+        }
+       break;
+      case OUTBUF_DEPTH_BGRA_32BPP_8888_8888:
+         {
+            DATA32 *src, *dst;
+            DATA8 *dest;
+            int xx, yy, row_bytes;
+            
+            row_bytes = buf->dest_row_bytes;
+            dest = (DATA8 *)(buf->dest) + (y * row_bytes) + (x * 4);
+            if (buf->func.new_update_region)
+              {
+                 dest = buf->func.new_update_region(x, y, w, h, &row_bytes);
+              }
+            for (yy = 0; yy < h; yy++)
+              {
+                 dst = dest + (yy * row_bytes);
+                 src = update->image.data + (yy * update->cache_entry.w);
+                 for (xx = 0; xx < w; xx++)
+                   {
+                      A_VAL(dst) = B_VAL(src);
+                      R_VAL(dst) = G_VAL(src);
+                      G_VAL(dst) = R_VAL(src);
+                      dst++;
+                      src++;
+                   }
+              }
+            if (buf->func.free_update_region)
+              {
+                 buf->func.free_update_region(x, y, w, h, dest);
+              }
+        }
+       break;
+      default:
+       break;
+     }
+}
diff --git a/src/modules/engines/cairo_common/.cvsignore b/src/modules/engines/cairo_common/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/cairo_common/Makefile.am b/src/modules/engines/cairo_common/Makefile.am
new file mode 100644 (file)
index 0000000..ce0d0cb
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS         = -I. \
+                      -I$(top_srcdir)/src/lib \
+                      -I$(top_srcdir)/src/lib/include \
+                      @FREETYPE_CFLAGS@ @CAIRO_CFLAGS@
+
+if BUILD_ENGINE_CAIRO_COMMON
+
+noinst_LTLIBRARIES      = libevas_engine_cairo_common.la
+libevas_engine_cairo_common_la_SOURCES  = \
+evas_cairo_private.h \
+evas_cairo_common.h \
+evas_cairo_main.c
+
+libevas_engine_cairo_common_la_LIBADD       = @CAIRO_LIBS@ $(top_builddir)/src/lib/libevas.la
+
+libevas_engine_cairo_common_la_DEPENDENCIES = \
+$(top_builddir)/config.h
+
+endif
diff --git a/src/modules/engines/cairo_common/evas_cairo_common.h b/src/modules/engines/cairo_common/evas_cairo_common.h
new file mode 100644 (file)
index 0000000..35d504f
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef EVAS_CAIRO_COMMON_H
+#define EVAS_CAIRO_COMMON_H
+
+#include "evas_common.h"
+#include "config.h"
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+#include <cairo.h>
+#include <cairo-xlib.h>
+
+typedef struct _Evas_Cairo_Context                   Evas_Cairo_Context;
+typedef struct _Evas_Cairo_Image                     Evas_Cairo_Image;
+typedef struct _Evas_Cairo_Polygon                   Evas_Cairo_Polygon;
+typedef struct _Evas_Cairo_Polygon_Point             Evas_Cairo_Polygon_Point;
+
+struct _Evas_Cairo_Context
+{
+   cairo_t         *cairo;
+
+   struct {
+      double r, g, b, a;
+   } col;
+   struct {
+      unsigned int set : 1;
+      double r, g, b, a;
+   } mul;
+};
+
+struct _Evas_Cairo_Image
+{
+   RGBA_Image         *im;
+   int                 references;
+   DATA32             *mulpix;
+   cairo_surface_t    *surface;
+   cairo_pattern_t    *pattern;
+};
+
+struct _Evas_Cairo_Polygon
+{
+   Evas_List *points;
+};
+
+struct _Evas_Cairo_Polygon_Point
+{
+   int x, y;
+};
+
+#endif
diff --git a/src/modules/engines/cairo_common/evas_cairo_main.c b/src/modules/engines/cairo_common/evas_cairo_main.c
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/modules/engines/cairo_common/evas_cairo_private.h b/src/modules/engines/cairo_common/evas_cairo_private.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/modules/engines/cairo_x11/.cvsignore b/src/modules/engines/cairo_x11/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/cairo_x11/Evas_Engine_Cairo_X11.h b/src/modules/engines/cairo_x11/Evas_Engine_Cairo_X11.h
new file mode 100644 (file)
index 0000000..3a7d64a
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef _EVAS_ENGINE_CAIRO_X11_H
+#define _EVAS_ENGINE_CAIRO_X11_H
+
+#include <X11/Xlib.h>
+
+typedef struct _Evas_Engine_Info_Cairo_X11 Evas_Engine_Info_Cairo_X11;
+
+struct _Evas_Engine_Info_Cairo_X11
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   /* engine specific data & parameters it needs to set up */
+   struct {
+      Display  *display;
+      Drawable  drawable;
+      Visual   *visual;
+      Colormap  colormap;
+      int       depth;
+   } info;
+   /* engine specific function calls to query stuff about the destination */
+   /* engine (what visual & colormap & depth to use, performance info etc. */
+};
+#endif
+
+
diff --git a/src/modules/engines/cairo_x11/Makefile.am b/src/modules/engines/cairo_x11/Makefile.am
new file mode 100644 (file)
index 0000000..aea46d7
--- /dev/null
@@ -0,0 +1,30 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = -I. -I$(top_srcdir)/src/lib -I$(top_srcdir)/src/lib/include -I$(top_srcdir)/src/modules/engines/cairo_common @FREETYPE_CFLAGS@ @x_cflags@ @CAIRO_CFLAGS@
+
+if BUILD_ENGINE_CAIRO_X11
+
+pkgdir = $(libdir)/evas/modules/engines/cairo_x11/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES  = \
+evas_engine.h \
+evas_engine.c \
+evas_x_main.c
+
+module_la_LIBADD = @CAIRO_LIBS@ @x_libs@ $(top_builddir)/src/modules/engines/cairo_common/libevas_engine_cairo_common.la $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Cairo_X11.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_x_main.c \
+Evas_Engine_Cairo_X11.h
diff --git a/src/modules/engines/cairo_x11/evas_engine.c b/src/modules/engines/cairo_x11/evas_engine.c
new file mode 100644 (file)
index 0000000..c100d21
--- /dev/null
@@ -0,0 +1,1460 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include <X11/Xlib.h>
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Cairo_X11.h"
+#include "evas_cairo_common.h"
+
+static void *eng_info(Evas *e);
+static void eng_info_free(Evas *e, void *info);
+static void eng_setup(Evas *e, void *info);
+static void *eng_output_setup(int w, int h, Display *disp, Drawable draw, Visual *vis, Colormap cmap, int depth);
+static void eng_output_free(void *data);
+static void eng_output_resize(void *data, int w, int h);
+static void eng_output_tile_size_set(void *data, int w, int h);
+static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_clear(void *data);
+static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h);
+static void eng_output_flush(void *data);
+
+static void *eng_context_new(void *data);
+static void eng_context_free(void *data, void *context);
+static void eng_context_clip_set(void *data, void *context, int x, int y, int w, int h);
+static void eng_context_clip_clip(void *data, void *context, int x, int y, int w, int h);
+static void eng_context_clip_unset(void *data, void *context);
+static int eng_context_clip_get(void *data, void *context, int *x, int *y, int *w, int *h);
+static void eng_context_color_set(void *data, void *context, int r, int g, int b, int a);
+static int eng_context_color_get(void *data, void *context, int *r, int *g, int *b, int *a);
+static void eng_context_multiplier_set(void *data, void *context, int r, int g, int b, int a);
+static void eng_context_multiplier_unset(void *data, void *context);
+static int eng_context_multiplier_get(void *data, void *context, int *r, int *g, int *b, int *a);
+static void eng_context_cutout_add(void *data, void *context, int x, int y, int w, int h);
+static void eng_context_cutout_clear(void *data, void *context);
+static void eng_context_anti_alias_set(void *data, void *context, unsigned char aa);
+static unsigned char eng_context_anti_alias_get(void *data, void *context);
+static void eng_context_color_interpolation_set(void *data, void *context, int color_space);
+static int eng_context_color_interpolation_get(void *data, void *context);
+static void eng_context_render_op_set(void *data, void *context, int op);
+static int eng_context_render_op_get(void *data, void *context);
+
+static void eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h);
+
+static void eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2);
+
+static void *eng_polygon_point_add(void *data, void *context, void *polygon, int x, int y);
+static void *eng_polygon_points_clear(void *data, void *context, void *polygon);
+static void eng_polygon_draw(void *data, void *context, void *surface, void *polygon);
+
+static void *eng_gradient_new(void *data);
+static void eng_gradient_free(void *data, void *gradient);
+static void eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta);
+static void eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta);
+static void eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha);
+static void eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len);
+static void eng_gradient_clear(void *data, void *gradient);
+static void eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h);
+static void eng_gradient_fill_angle_set(void *data, void *gradient, double angle);
+static void eng_gradient_fill_spread_set(void *data, void *gradient, int spread);
+static void eng_gradient_angle_set(void *data, void *gradient, double angle);
+static void eng_gradient_offset_set(void *data, void *gradient, float offset);
+static void eng_gradient_direction_set(void *data, void *gradient, int direction);
+static void eng_gradient_type_set(void *data, void *gradient, char *name, char *params);
+static int eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h);
+static int eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h);
+static void eng_gradient_render_pre(void *data, void *context, void *gradient);
+static void eng_gradient_render_post(void *data, void *gradient);
+static void eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h);
+
+static void *eng_image_load(void *data, char *file, char *key, int *error, Evas_Image_Load_Opts *lo);
+static void *eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
+static void *eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace);
+static void eng_image_free(void *data, void *image);
+static void eng_image_size_get(void *data, void *image, int *w, int *h);
+static void *eng_image_size_set(void *data, void *image, int w, int h);
+static void *eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h);
+static void *eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data);
+static void *eng_image_data_put(void *data, void *image, DATA32 *image_data);
+static void *eng_image_alpha_set(void *data, void *image, int has_alpha);
+static int eng_image_alpha_get(void *data, void *image);
+static void *eng_image_border_set(void *data, void *image, int l, int r, int t, int b);
+static void eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b);
+static void eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth);
+static char *eng_image_comment_get(void *data, void *image, char *key);
+static char *eng_image_format_get(void *data, void *image);
+static void eng_image_colorspace_set(void *data, void *image, int cspace);
+static int eng_image_colorspace_get(void *data, void *image);
+static void eng_image_native_set(void *data, void *image, void *native);
+static void *eng_image_native_get(void *data, void *image);
+static void eng_image_cache_flush(void *data);
+static void eng_image_cache_set(void *data, int bytes);
+static int eng_image_cache_get(void *data);
+
+static void *eng_font_load(void *data, char *name, int size);
+static void *eng_font_memory_load(void *data, char *name, int size, const void *fdata, int fdata_size);
+static void *eng_font_add(void *data, void *font, char *name, int size);
+static void *eng_font_memory_add(void *data, void *font, char *name, int size, const void *fdata, int fdata_size);
+static void eng_font_free(void *data, void *font);
+static int eng_font_ascent_get(void *data, void *font);
+static int eng_font_descent_get(void *data, void *font);
+static int eng_font_max_ascent_get(void *data, void *font);
+static int eng_font_max_descent_get(void *data, void *font);
+static void eng_font_string_size_get(void *data, void *font, char *text, int *w, int *h);
+static int eng_font_inset_get(void *data, void *font, char *text);
+static int eng_font_h_advance_get(void *data, void *font, char *text);
+static int eng_font_v_advance_get(void *data, void *font, char *text);
+static int eng_font_char_coords_get(void *data, void *font, char *text, int pos, int *cx, int *cy, int *cw, int *ch);
+static int eng_font_char_at_coords_get(void *data, void *font, char *text, int x, int y, int *cx, int *cy, int *cw, int *ch);
+static void eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, char *text);
+static void eng_font_cache_flush(void *data);
+static void eng_font_cache_set(void *data, int bytes);
+static int eng_font_cache_get(void *data);
+
+static void eng_font_hinting_set(void *data, void *font, int hinting);
+static int eng_font_hinting_can_hint(void *data, int hinting);
+
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Evas_Cairo_X11_Window *win;
+};
+
+static Evas_Func eng_func =
+{
+   eng_info,
+     eng_info_free,
+     eng_setup,
+     eng_output_free,
+     eng_output_resize,
+     eng_output_tile_size_set,
+     eng_output_redraws_rect_add,
+     eng_output_redraws_rect_del,
+     eng_output_redraws_clear,
+     eng_output_redraws_next_update_get,
+     eng_output_redraws_next_update_push,
+     eng_output_flush,
+     /* draw context virtual methods */
+     eng_context_new,
+     eng_context_free,
+     eng_context_clip_set,
+     eng_context_clip_clip,
+     eng_context_clip_unset,
+     eng_context_clip_get,
+     eng_context_color_set,
+     eng_context_color_get,
+     eng_context_multiplier_set,
+     eng_context_multiplier_unset,
+     eng_context_multiplier_get,
+     eng_context_cutout_add,
+     eng_context_cutout_clear,
+     eng_context_anti_alias_set,
+     eng_context_anti_alias_get,
+     eng_context_color_interpolation_set,
+     eng_context_color_interpolation_get,
+     eng_context_render_op_set,
+     eng_context_render_op_get,
+     /* rectangle draw funcs */
+     eng_rectangle_draw,
+     /* line draw funcs */
+     eng_line_draw,
+     /* polygon draw funcs */
+     eng_polygon_point_add,
+     eng_polygon_points_clear,
+     eng_polygon_draw,
+     /* gradient draw funcs */
+     eng_gradient_new,
+     eng_gradient_free,
+     eng_gradient_color_stop_add,
+     eng_gradient_alpha_stop_add,
+     eng_gradient_color_data_set,
+     eng_gradient_alpha_data_set,
+     eng_gradient_clear,
+     eng_gradient_fill_set,
+     eng_gradient_fill_angle_set,
+     eng_gradient_fill_spread_set,
+     eng_gradient_angle_set,
+     eng_gradient_offset_set,
+     eng_gradient_direction_set,
+     eng_gradient_type_set,
+     eng_gradient_is_opaque,
+     eng_gradient_is_visible,
+     eng_gradient_render_pre,
+     eng_gradient_render_post,
+     eng_gradient_draw,
+     /* image draw funcs */
+     eng_image_load,
+     eng_image_new_from_data,
+     eng_image_new_from_copied_data,
+     eng_image_free,
+     eng_image_size_get,
+     eng_image_size_set,
+     NULL,
+     eng_image_dirty_region,
+     eng_image_data_get,
+     eng_image_data_put,
+     eng_image_alpha_set,
+     eng_image_alpha_get,
+     eng_image_border_set,
+     eng_image_border_get,
+     eng_image_draw,
+     eng_image_comment_get,
+     eng_image_format_get,
+     eng_image_colorspace_set,
+     eng_image_colorspace_get,
+     eng_image_native_set,
+     eng_image_native_get,
+     /* image cache funcs */
+     eng_image_cache_flush,
+     eng_image_cache_set,
+     eng_image_cache_get,
+     /* font draw functions */
+     eng_font_load,
+     eng_font_memory_load,
+     eng_font_add,
+     eng_font_memory_add,
+     eng_font_free,
+     eng_font_ascent_get,
+     eng_font_descent_get,
+     eng_font_max_ascent_get,
+     eng_font_max_descent_get,
+     eng_font_string_size_get,
+     eng_font_inset_get,
+     eng_font_h_advance_get,
+     eng_font_v_advance_get,
+     eng_font_char_coords_get,
+     eng_font_char_at_coords_get,
+     eng_font_draw,
+     /* font cache functions */
+     eng_font_cache_flush,
+     eng_font_cache_set,
+     eng_font_cache_get,
+                              
+     eng_font_hinting_set,
+     eng_font_hinting_can_hint
+};
+
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Cairo_X11 *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_Cairo_X11));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   printf("CAIRO: create info...\n");
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_Cairo_X11 *in;
+
+   in = (Evas_Engine_Info_Cairo_X11 *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_Cairo_X11 *info;
+
+   info = (Evas_Engine_Info_Cairo_X11 *)in;
+   printf("CAIRO: setup info...\n");
+   if (!e->engine.data.output)
+     e->engine.data.output =
+     eng_output_setup(e->output.w,
+                                       e->output.h,
+                                       info->info.display,
+                                       info->info.drawable,
+                                       info->info.visual,
+                                       info->info.colormap,
+                                       info->info.depth);
+   if (!e->engine.data.output) return;
+
+   if (!e->engine.data.context)
+     e->engine.data.context =
+     e->engine.func->context_new(e->engine.data.output);
+   re = e->engine.data.output;
+}
+
+static void *
+eng_output_setup(int w, int h, Display *disp, Drawable draw, Visual *vis, Colormap cmap, int depth)
+{
+   Render_Engine *re;
+
+   re = calloc(1, sizeof(Render_Engine));
+   re->win = eng_window_new(disp, draw,
+                                             0 /* FIXME: screen 0 assumption */,
+                                             vis, cmap, depth, w, h);
+   if (!re->win)
+     {
+       free(re);
+       return NULL;
+     }
+   printf("CAIRO: cairo window setup done.\n");
+   evas_common_cpu_init();
+
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+
+   return re;
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+
+   eng_window_free(re->win);
+
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->win->w = w;
+   re->win->h = h;
+
+   eng_window_size_set(re->win, w, h);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in cairo engine */
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+   /* FIXME? cairo_surface_mark_dirty_rectangle */
+
+   re = (Render_Engine *)data;
+   if (!re->win->draw.redraw)
+     {
+       re->win->draw.x1 = 0;
+       re->win->draw.y1 = 0;
+       re->win->draw.x2 = re->win->w - 1;
+       re->win->draw.y2 = re->win->h - 1;
+     }
+   else
+     {
+       if (x < re->win->draw.x1) re->win->draw.x1 = x;
+       if (y < re->win->draw.y1) re->win->draw.y1 = y;
+       if ((x + w - 1) > re->win->draw.x2) re->win->draw.x2 = x + w - 1;
+       if ((y + h - 1) > re->win->draw.y2) re->win->draw.y2 = y + h - 1;
+     }
+   re->win->draw.redraw = 1;
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in cairo engine */
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->win->draw.redraw = 0;
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!re->win->draw.redraw) return NULL;
+
+   if (x) *x = re->win->draw.x1;
+   if (y) *y = re->win->draw.y1;
+   if (w) *w = re->win->draw.x2 - re->win->draw.x1 + 1;
+   if (h) *h = re->win->draw.y2 - re->win->draw.y1 + 1;
+   if (cx) *cx = re->win->draw.x1;
+   if (cy) *cy = re->win->draw.y1;
+   if (cw) *cw = re->win->draw.x2 - re->win->draw.x1 + 1;
+   if (ch) *ch = re->win->draw.y2 - re->win->draw.y1 + 1;
+   return re;
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->win->draw.redraw = 0;
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+   Evas_List *l;
+
+   re = (Render_Engine *)data;
+}
+
+static void *
+eng_context_new(void *data)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+
+   re = (Render_Engine *)data;
+   ctxt = calloc(1, sizeof(Evas_Cairo_Context));
+   if (!ctxt) return NULL;
+
+   ctxt->cairo = cairo_create(re->win->surface);
+
+   return ctxt;
+}
+
+static void
+eng_context_free(void *data, void *context)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+
+   re = (Render_Engine *)data;
+   ctxt = context;
+
+   cairo_destroy(ctxt->cairo);
+   free(ctxt);
+}
+
+static void
+eng_context_clip_set(void *data, void *context, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in cairo engine */
+}
+
+static void
+eng_context_clip_clip(void *data, void *context, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in cairo engine */
+}
+
+static void
+eng_context_clip_unset(void *data, void *context)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in cairo engine */
+}
+
+static int
+eng_context_clip_get(void *data, void *context, int *x, int *y, int *w, int *h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in cairo engine */
+   return 0;
+}
+
+static void
+eng_context_color_set(void *data, void *context, int r, int g, int b, int a)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+
+   ctxt->col.r = (double)r / 255.0;
+   ctxt->col.g = (double)g / 255.0;
+   ctxt->col.b = (double)b / 255.0;
+   ctxt->col.a = (double)a / 255.0;
+}
+
+static int
+eng_context_color_get(void *data, void *context, int *r, int *g, int *b, int *a)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+
+   if (r) *r = ctxt->col.r * 255;
+   if (g) *g = ctxt->col.g * 255;
+   if (b) *b = ctxt->col.b * 255;
+   if (a) *a = ctxt->col.a * 255;
+   return 1;
+}
+
+static void
+eng_context_multiplier_set(void *data, void *context, int r, int g, int b, int a)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+
+   ctxt->mul.r = (double)r / 255.0;
+   ctxt->mul.g = (double)g / 255.0;
+   ctxt->mul.b = (double)b / 255.0;
+   ctxt->mul.a = (double)a / 255.0;
+   ctxt->mul.set = 1;
+}
+
+static void
+eng_context_multiplier_unset(void *data, void *context)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+   ctxt->mul.set = 0;
+}
+
+static int
+eng_context_multiplier_get(void *data, void *context, int *r, int *g, int *b, int *a)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+
+   if (r) *r = ctxt->mul.r * 255;
+   if (g) *g = ctxt->mul.g * 255;
+   if (b) *b = ctxt->mul.b * 255;
+   if (a) *a = ctxt->mul.a * 255;
+   return ctxt->mul.set;
+}
+
+static void
+eng_context_cutout_add(void *data, void *context, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in cairo engine */
+}
+
+static void
+eng_context_cutout_clear(void *data, void *context)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in cairo engine */
+}
+
+static void
+eng_context_anti_alias_set(void *data, void *context, unsigned char aa)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static unsigned char
+eng_context_anti_alias_get(void *data, void *context)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return 1;
+}
+
+static void
+eng_context_color_interpolation_set(void *data, void *context, int color_space)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static int
+eng_context_color_interpolation_get(void *data, void *context)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static void
+eng_context_render_op_set(void *data, void *context, int op)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static int
+eng_context_render_op_get(void *data, void *context)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+
+static void
+eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+   double r, g, b, a;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+
+   cairo_rectangle(ctxt->cairo, x, y, w, h);
+   r = ctxt->col.r;
+   g = ctxt->col.g;
+   b = ctxt->col.b;
+   a = ctxt->col.a;
+   if (ctxt->mul.set)
+     {
+       r *= ctxt->mul.r;
+       g *= ctxt->mul.g;
+       b *= ctxt->mul.b;
+       a *= ctxt->mul.a;
+     }
+   cairo_set_source_rgba(ctxt->cairo, r, g, b, a);
+   cairo_fill(ctxt->cairo);
+}
+
+static void
+eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+   double r, g, b, a;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+
+   cairo_move_to(ctxt->cairo, x1, y1);
+   cairo_line_to(ctxt->cairo, x2, y2);
+   r = ctxt->col.r;
+   g = ctxt->col.g;
+   b = ctxt->col.b;
+   a = ctxt->col.a;
+   if (ctxt->mul.set)
+     {
+       r *= ctxt->mul.r;
+       g *= ctxt->mul.g;
+       b *= ctxt->mul.b;
+       a *= ctxt->mul.a;
+     }
+   cairo_set_source_rgba(ctxt->cairo, r, g, b, a);
+   cairo_stroke(ctxt->cairo);
+}
+
+static void *
+eng_polygon_point_add(void *data, void *context, void *polygon, int x, int y)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+   Evas_Cairo_Polygon *poly;
+   Evas_Cairo_Polygon_Point *pt;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+   poly = (Evas_Cairo_Polygon *)polygon;
+   if (!poly) poly = calloc(1, sizeof(Evas_Cairo_Polygon));
+
+   pt = malloc(sizeof(Evas_Cairo_Polygon_Point));
+   if (pt)
+     {
+       pt->x = x;
+       pt->y = y;
+       poly->points = evas_list_append(poly->points, pt);
+     }
+   return poly;
+}
+
+static void *
+eng_polygon_points_clear(void *data, void *context, void *polygon)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+   Evas_Cairo_Polygon *poly;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+   poly = (Evas_Cairo_Polygon *)polygon;
+   if (!poly) return NULL;
+
+   while (poly->points)
+     {
+       free(poly->points->data);
+       poly->points = evas_list_remove_list(poly->points, poly->points);
+     }
+   free(poly);
+
+   return NULL;
+}
+
+static void
+eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+   Evas_Cairo_Polygon *poly;
+   Evas_Cairo_Polygon_Point *pt;
+   double r, g, b, a;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+   poly = (Evas_Cairo_Polygon *)polygon;
+
+   pt = poly->points->data;
+   if (pt)
+     {
+       Evas_List *l;
+       cairo_move_to(ctxt->cairo, pt->x, pt->y);
+       for (l = poly->points->next; l; l = l->next)
+         {
+            pt = l->data;
+            cairo_line_to(ctxt->cairo, pt->x, pt->y);
+         }
+     }
+   r = ctxt->col.r;
+   g = ctxt->col.g;
+   b = ctxt->col.b;
+   a = ctxt->col.a;
+   if (ctxt->mul.set)
+     {
+       r *= ctxt->mul.r;
+       g *= ctxt->mul.g;
+       b *= ctxt->mul.b;
+       a *= ctxt->mul.a;
+     }
+   cairo_set_source_rgba(ctxt->cairo, r, g, b, a);
+   cairo_stroke(ctxt->cairo);
+}
+
+static void *
+eng_gradient_new(void *data)
+{
+   return evas_common_gradient_new();
+}
+
+static void
+eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
+{
+   evas_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
+}
+
+static void
+eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
+{
+   evas_common_gradient_alpha_stop_add(gradient, a, delta);
+}
+
+static void
+eng_gradient_clear(void *data, void *gradient)
+{
+   evas_common_gradient_clear(gradient);
+}
+
+static void
+eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
+{
+   evas_common_gradient_color_data_set(gradient, map, len, has_alpha);
+}
+
+static void
+eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
+{
+   evas_common_gradient_alpha_data_set(gradient, alpha_map, len);
+}
+
+static void
+eng_gradient_free(void *data, void *gradient)
+{
+   evas_common_gradient_free(gradient);
+}
+
+static void
+eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
+{
+   evas_common_gradient_fill_set(gradient, x, y, w, h);
+}
+
+static void
+eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
+{
+   evas_common_gradient_fill_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
+{
+   evas_common_gradient_fill_spread_set(gradient, spread);
+}
+
+static void
+eng_gradient_angle_set(void *data, void *gradient, double angle)
+{
+   evas_common_gradient_map_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_offset_set(void *data, void *gradient, float offset)
+{
+   evas_common_gradient_map_offset_set(gradient, offset);
+}
+
+static void
+eng_gradient_direction_set(void *data, void *gradient, int direction)
+{
+   evas_common_gradient_map_direction_set(gradient, direction);
+}
+
+static void
+eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
+{
+   evas_common_gradient_type_set(gradient, name, params);
+}
+
+static int
+eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   return 0;
+}
+
+static int
+eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   return 0;
+}
+
+static void
+eng_gradient_render_pre(void *data, void *context, void *gradient)
+{
+}
+
+static void
+eng_gradient_render_post(void *data, void *gradient)
+{
+}
+
+static void
+eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
+{
+}
+
+static void *
+eng_image_load(void *data, char *file, char *key, int *error, Evas_Image_Load_Opts *lo)
+{
+   Render_Engine *re;
+   Evas_Cairo_Image *im;
+   
+   re = (Render_Engine *)data;
+   if (error) *error = 0;
+
+   im = calloc(1, sizeof(Evas_Cairo_Image));
+   if (!im) return NULL;
+
+   im->im = evas_common_load_image_from_file(file, key, lo);
+   if (!im->im)
+     {
+       free(im);
+       return NULL;
+     }
+   im->references = 1;
+   return im;
+}
+
+static void *
+eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Render_Engine *re;
+   Evas_Cairo_Image *im;
+
+   re = (Render_Engine *)data;
+
+   /* FIXME, cache! */
+   im = calloc(1, sizeof(Evas_Cairo_Image));
+   if (!im) return NULL;
+
+   im->im = evas_common_image_new();
+   if (!im->im)
+     {
+       free(im);
+       return NULL;
+     }
+   im->im->image = evas_common_image_surface_new(im->im);
+   if (!im->im->image)
+     {
+       evas_common_image_free(im->im);
+       free(im);
+       return NULL;
+     }
+
+   im->im->image->w = w;
+   im->im->image->h = h;
+   im->im->image->data = image_data;
+   im->im->image->no_free = 1;
+   im->references = 1;
+   return im;
+}
+
+static void *
+eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Render_Engine *re;
+   Evas_Cairo_Image *im;
+
+   re = (Render_Engine *)data;
+
+   /* FIXME, cache! */
+   im = calloc(1, sizeof(Evas_Cairo_Image));
+   if (!im) return NULL;
+   im->references = 1;
+   im->im = evas_common_image_create(w, h);
+   if (!im->im)
+     {
+       free(im);
+       return NULL;
+     }
+   if (image_data)
+     memcpy(im->im->image->data, image_data, w * h * sizeof(DATA32));
+   return im;
+}
+
+static void
+eng_image_free(void *data, void *image)
+{
+   Render_Engine *re;
+   Evas_Cairo_Image *im;
+
+   re = (Render_Engine *)data;
+   im = (Evas_Cairo_Image *)image;
+   evas_common_image_unref(im->im);
+   if (im->surface) cairo_surface_destroy(im->surface);
+   if (im->pattern) cairo_pattern_destroy(im->pattern);
+   free(im);
+}
+
+static void
+eng_image_size_get(void *data, void *image, int *w, int *h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!image)
+     {
+       if (w) *w = 0;
+       if (h) *h = 0;
+     }
+   else
+     {
+       Evas_Cairo_Image *im;
+
+       im = image;
+       if (w) *w = im->im->image->w;
+       if (h) *h = im->im->image->h;
+     }
+}
+
+static void *
+eng_image_size_set(void *data, void *image, int w, int h)
+{
+   Render_Engine *re;
+
+   /* FIXME */
+   re = (Render_Engine *)data;
+   return image;
+}
+
+static void *
+eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   /* FIXME */
+   re = (Render_Engine *)data;
+   return image;
+}
+
+static void *
+eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data)
+{
+   Render_Engine *re;
+
+   /* FIXME */
+   re = (Render_Engine *)data;
+   *image_data = NULL;
+   return image;
+}
+
+static void *
+eng_image_data_put(void *data, void *image, DATA32 *image_data)
+{
+   Render_Engine *re;
+
+   /* FIXME */
+   re = (Render_Engine *)data;
+   return image;
+}
+
+static void *
+eng_image_alpha_set(void *data, void *image, int has_alpha)
+{
+   Render_Engine *re;
+
+   /* FIXME */
+   re = (Render_Engine *)data;
+   return image;
+}
+
+static int
+eng_image_alpha_get(void *data, void *image)
+{
+   Render_Engine *re;
+   Evas_Cairo_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image) return 0;
+
+   im = image;
+   if (im->im->cache_entry.flags.alpha) return 1;
+   return 0;
+}
+
+static void *
+eng_image_border_set(void *data, void *image, int l, int r, int t, int b)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return image;
+}
+
+static void
+eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return;
+}
+
+static void
+eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
+{
+   Render_Engine *re;
+   Evas_Cairo_Context *ctxt;
+   Evas_Cairo_Image *im;
+   DATA32 *pix;
+
+   re = (Render_Engine *)data;
+   ctxt = (Evas_Cairo_Context *)context;
+   if (!image) return;
+
+   im = image;
+   evas_common_load_image_data_from_file(im->im);
+   pix = im->im->image->data;
+   if (pix)
+     {
+       if (!im->surface)
+         {
+            im->mulpix = malloc(im->im->image->w * im->im->image->h * sizeof(DATA32));
+            if (im->mulpix)
+              {
+                 int i, n;
+                 DATA32 *p;
+
+                 n = im->im->image->w * im->im->image->h;
+                 p = im->mulpix;
+                 for (i = 0; i < n; i++)
+                   {
+                      int a;
+
+                      a = A_VAL(pix);
+                      R_VAL(p) = (R_VAL(pix) * a) / 255;
+                      G_VAL(p) = (G_VAL(pix) * a) / 255;
+                      B_VAL(p) = (B_VAL(pix) * a) / 255;
+                      A_VAL(p) = a;
+                      p++;
+                      pix++;
+                   }
+                 im->surface = cairo_image_surface_create_for_data(im->mulpix,
+                                                                   CAIRO_FORMAT_ARGB32,
+                                                                   im->im->image->w,
+                                                                   im->im->image->h,
+                                                                   0);
+                 im->pattern = cairo_pattern_create_for_surface(im->surface);
+              }
+         }
+
+       if (smooth)
+         cairo_pattern_set_filter(im->pattern, CAIRO_FILTER_BILINEAR);
+       else
+         cairo_pattern_set_filter(im->pattern, CAIRO_FILTER_NEAREST);
+       cairo_save(ctxt->cairo);
+       cairo_translate(ctxt->cairo, dst_x, dst_y);
+       cairo_scale(ctxt->cairo,
+                   (double)src_w / (double)dst_w,
+                   (double)src_h / (double)dst_h);
+       cairo_move_to(ctxt->cairo, 0, 0);
+       //     cairo_set_rgb_color(re->win->cairo,
+       //                        (double)(R_VAL(((RGBA_Draw_Context *)context)->col.col)) / 255.0,
+       //                        (double)(R_VAL(((RGBA_Draw_Context *)context)->col.col)) / 255.0,
+       //                        (double)(R_VAL(((RGBA_Draw_Context *)context)->col.col)) / 255.0);
+       //     cairo_set_alpha(re->win->cairo,
+       //                   (double)(A_VAL(((RGBA_Draw_Context *)context)->col.col)) / 255.0);
+       cairo_set_source_surface(ctxt->cairo,
+                                im->surface,
+                                im->im->image->w,
+                                im->im->image->h);
+       cairo_paint(ctxt->cairo);
+       cairo_restore(ctxt->cairo);
+     }
+}
+
+static char *
+eng_image_comment_get(void *data, void *image, char *key)
+{
+   Render_Engine *re;
+
+   /* FIXME */
+   re = (Render_Engine *)data;
+   return NULL;
+}
+
+static char *
+eng_image_format_get(void *data, void *image)
+{
+   Render_Engine *re;
+
+   /* FIXME */
+   re = (Render_Engine *)data;
+   return NULL;
+}
+
+static void
+eng_image_colorspace_set(void *data, void *image, int cspace)
+{
+}
+
+static int
+eng_image_colorspace_get(void *data, void *image)
+{
+   return EVAS_COLORSPACE_ARGB8888;
+}
+
+static void
+eng_image_native_set(void *data, void *image, void *native)
+{
+}
+
+static void *
+eng_image_native_get(void *data, void *image)
+{
+   return NULL;
+}
+
+static void
+eng_image_cache_flush(void *data)
+{
+   Render_Engine *re;
+   int tmp_size;
+
+   re = (Render_Engine *)data;
+   tmp_size = evas_common_image_get_cache();
+   evas_common_image_set_cache(0);
+   evas_common_image_set_cache(tmp_size);
+}
+
+static void
+eng_image_cache_set(void *data, int bytes)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_image_set_cache(bytes);
+}
+
+static int
+eng_image_cache_get(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return evas_common_image_get_cache();
+}
+
+static void *
+eng_font_load(void *data, char *name, int size)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return NULL;
+}
+
+static void *
+eng_font_memory_load(void *data, char *name, int size, const void *fdata, int fdata_size)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return NULL;
+}
+
+static void *
+eng_font_add(void *data, void *font, char *name, int size)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return NULL;
+}
+
+static void *
+eng_font_memory_add(void *data, void *font, char *name, int size, const void *fdata, int fdata_size)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return NULL;
+}
+
+static void
+eng_font_free(void *data, void *font)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+}
+
+static int
+eng_font_ascent_get(void *data, void *font)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static int
+eng_font_descent_get(void *data, void *font)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static int
+eng_font_max_ascent_get(void *data, void *font)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static int
+eng_font_max_descent_get(void *data, void *font)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static void
+eng_font_string_size_get(void *data, void *font, char *text, int *w, int *h)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+}
+
+static int
+eng_font_inset_get(void *data, void *font, char *text)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static int
+eng_font_h_advance_get(void *data, void *font, char *text)
+{
+   Render_Engine *re;
+   int h, v;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static int
+eng_font_v_advance_get(void *data, void *font, char *text)
+{
+   Render_Engine *re;
+   int h, v;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static int
+eng_font_char_coords_get(void *data, void *font, char *text, int pos, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static int
+eng_font_char_at_coords_get(void *data, void *font, char *text, int x, int y, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static void
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, char *text)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_font_cache_flush(void *data)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_font_cache_set(void *data, int bytes)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+}
+
+static int
+eng_font_cache_get(void *data)
+{
+   Render_Engine *re;
+
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+   return 0;
+}
+
+static void
+eng_font_hinting_set(void *data, void *font, int hinting)
+{
+   Render_Engine *re;
+   
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+}
+
+static int
+eng_font_hinting_can_hint(void *data, int hinting)
+{
+   Render_Engine *re;
+   
+   /* FIXME, use cairo font subsystem */
+   re = (Render_Engine *)data;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&eng_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_ENGINE,
+     "cairo_x11",
+     "none"
+};
diff --git a/src/modules/engines/cairo_x11/evas_engine.h b/src/modules/engines/cairo_x11/evas_engine.h
new file mode 100644 (file)
index 0000000..7d52241
--- /dev/null
@@ -0,0 +1,41 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+#include "evas_cairo_common.h"
+
+typedef struct _Evas_Cairo_X11_Window Evas_Cairo_X11_Window;
+
+struct _Evas_Cairo_X11_Window
+{
+   Display         *disp;
+   Window           win;
+   int              w, h;
+   int              screen;
+   Visual          *visual;
+   Colormap         colormap;
+   int              depth;
+   cairo_surface_t *surface;
+
+   struct {
+      int redraw : 1;
+      int x1, y1, x2, y2;
+   } draw;
+};
+
+Evas_Cairo_X11_Window *
+  evas_engine_cairo_x11_window_new(Display *disp,
+                                  Window   win,
+                                  int      screen,
+                                  Visual  *vis,
+                                  Colormap cmap,
+                                  int      depth,
+                                  int      w,
+                                  int      h);
+void
+  evas_engine_cairo_x11_window_free(Evas_Cairo_X11_Window *cw);
+void
+  evas_engine_cairo_x11_window_use(Evas_Cairo_X11_Window *cw);
+void
+  evas_engine_cairo_x11_window_size_set(Evas_Cairo_X11_Window *cw, int w, int h);
+
+#endif
diff --git a/src/modules/engines/cairo_x11/evas_x_main.c b/src/modules/engines/cairo_x11/evas_x_main.c
new file mode 100644 (file)
index 0000000..ae2cd82
--- /dev/null
@@ -0,0 +1,55 @@
+#include <X11/Xlib.h>
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Cairo_X11.h"
+#include "evas_cairo_common.h"
+
+static Evas_Cairo_X11_Window *_evas_cairo_x11_window = NULL;
+
+Evas_Cairo_X11_Window *
+evas_engine_cairo_x11_window_new(Display *disp,
+                                Window   win,
+                                int      screen,
+                                Visual  *vis,
+                                Colormap cmap,
+                                int      depth,
+                                int      w,
+                                int      h)
+{
+   Evas_Cairo_X11_Window *cw;
+
+   cw = calloc(1, sizeof(Evas_Cairo_X11_Window));
+   if (!cw) return NULL;
+   cw->disp = disp;
+   cw->win = win;
+   cw->screen = screen;
+   cw->visual = vis;
+   cw->colormap = cmap;
+   cw->depth = depth;
+   cw->surface = cairo_xlib_surface_create(disp, win, vis, w, h);
+   return cw;
+}
+
+void
+evas_engine_cairo_x11_window_free(Evas_Cairo_X11_Window *cw)
+{
+   if (cw == _evas_cairo_x11_window) _evas_cairo_x11_window = NULL;
+   cairo_surface_destroy(cw->surface);
+   free(cw);
+}
+
+void
+evas_engine_cairo_x11_window_use(Evas_Cairo_X11_Window *cw)
+{
+   if (_evas_cairo_x11_window != cw)
+     {
+       _evas_cairo_x11_window = cw;
+     }
+}
+
+void
+evas_engine_cairo_x11_window_size_set(Evas_Cairo_X11_Window *cw, int w, int h)
+{
+   cairo_xlib_surface_set_size(cw->surface, w, h);
+}
diff --git a/src/modules/engines/direct3d/.cvsignore b/src/modules/engines/direct3d/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/direct3d/Evas_Engine_Direct3D.h b/src/modules/engines/direct3d/Evas_Engine_Direct3D.h
new file mode 100644 (file)
index 0000000..753f523
--- /dev/null
@@ -0,0 +1,30 @@
+#ifndef __EVAS_ENGINE_DIRECT3D_H__
+#define __EVAS_ENGINE_DIRECT3D_H__
+
+
+#include <windows.h>
+#include <d3d9.h>
+#include <d3dx9.h>
+
+typedef struct _Evas_Engine_Info_Direct3D Evas_Engine_Info_Direct3D;
+
+struct _Evas_Engine_Info_Direct3D
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   struct {
+      HWND                window;
+      LPDIRECT3D9         object;    /* Direct3D object */
+      LPDIRECT3DDEVICE9   device;    /* Direct3D device */
+      LPD3DXSPRITE        sprite;    /* Direct3D sprite */
+      LPDIRECT3DTEXTURE9  texture;   /* Direct3D texture */
+
+      int                 depth;
+      int                 rotation;
+   } info;
+};
+
+
+#endif /* __EVAS_ENGINE_DIRECT3D_H__ */
diff --git a/src/modules/engines/direct3d/Makefile.am b/src/modules/engines/direct3d/Makefile.am
new file mode 100644 (file)
index 0000000..b3c14e7
--- /dev/null
@@ -0,0 +1,38 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@
+
+if BUILD_ENGINE_DIRECT3D
+
+pkgdir = $(libdir)/evas/modules/engines/direct3d/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_direct3d_buffer.c \
+evas_direct3d_main.cpp
+
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la @direct3d_libs@
+module_la_LDFLAGS = @lt_no_undefined@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Direct3D.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_direct3d_buffer.c \
+evas_direct3d_main.cpp \
+Evas_Engine_Direct3D.h
diff --git a/src/modules/engines/direct3d/evas_direct3d_buffer.c b/src/modules/engines/direct3d/evas_direct3d_buffer.c
new file mode 100644 (file)
index 0000000..cfa44e9
--- /dev/null
@@ -0,0 +1,88 @@
+#include <string.h>
+
+#include "evas_engine.h"
+
+
+Direct3D_Output_Buffer *
+evas_direct3d_output_buffer_new(int   depth,
+                                int   width,
+                                int   height,
+                                void *data)
+{
+   Direct3D_Output_Buffer *d3dob;
+
+   d3dob = calloc(1, sizeof(Direct3D_Output_Buffer));
+   if (!d3dob) return NULL;
+
+   d3dob->image = data;
+   d3dob->depth = depth;
+   d3dob->width = width;
+   d3dob->height = height;
+   d3dob->pitch = width * (depth >> 3);
+
+   if (!d3dob->image)
+     {
+        d3dob->image = malloc(d3dob->pitch * height);
+        if (!d3dob->image)
+          {
+            free(d3dob);
+            return NULL;
+          }
+     }
+
+   return d3dob;
+}
+
+void
+evas_direct3d_output_buffer_free(Direct3D_Output_Buffer *d3dob)
+{
+  if (d3dob->image) free(d3dob->image);
+  free(d3dob);
+}
+
+void
+evas_direct3d_output_buffer_paste(Direct3D_Output_Buffer *d3dob,
+                                  DATA8                  *d3d_data,
+                                  int                     d3d_width,
+                                  int                     d3d_height,
+                                  int                     d3d_pitch,
+                                  int                     x,
+                                  int                     y)
+{
+   DATA8         *evas_data;
+   int            width;
+   int            height;
+   int            pitch;
+   int            j;
+
+   if ((x >= d3d_width) || (y >= d3d_height))
+     return;
+
+   /* compute the size of the data to copy on the back surface */
+   width = ((x + d3dob->width) > d3d_width)
+     ? d3d_width - x
+     : d3dob->width;
+   height = ((y + d3dob->height) > d3d_height)
+     ? d3d_height - y
+     : d3dob->height;
+   pitch = width * (d3dob->depth >> 3);
+
+   d3d_data += y * d3d_pitch + x * (d3dob->depth >> 3);
+   evas_data = (unsigned char *)d3dob->image;
+   for (j = 0; j < height; j++, evas_data += d3dob->pitch, d3d_data += d3d_pitch)
+     memcpy(d3d_data, evas_data, pitch);
+}
+
+DATA8 *
+evas_direct3d_output_buffer_data(Direct3D_Output_Buffer *d3dob,
+                                 int                    *bytes_per_line_ret)
+{
+   if (bytes_per_line_ret) *bytes_per_line_ret = d3dob->pitch;
+   return d3dob->image;
+}
+
+int
+evas_direct3d_output_buffer_depth(Direct3D_Output_Buffer *d3dob)
+{
+   return d3dob->depth;
+}
diff --git a/src/modules/engines/direct3d/evas_direct3d_main.cpp b/src/modules/engines/direct3d/evas_direct3d_main.cpp
new file mode 100644 (file)
index 0000000..c58c6eb
--- /dev/null
@@ -0,0 +1,84 @@
+#include "evas_engine.h"
+
+
+extern "C" {
+
+int
+evas_direct3d_masks_get(Outbuf *buf)
+{
+   D3DSURFACE_DESC sd;
+
+   if (FAILED(buf->priv.d3d.texture->GetLevelDesc(0, &sd)))
+     return 0;
+
+   switch (sd.Format)
+     {
+     case D3DFMT_A8R8G8B8:
+     case D3DFMT_X8R8G8B8:
+       buf->priv.mask.r = 0x00ff0000;
+       buf->priv.mask.g = 0x0000ff00;
+       buf->priv.mask.b = 0x000000ff;
+       break;
+     case D3DFMT_R5G6B5:
+       buf->priv.mask.r = 0xf800;
+       buf->priv.mask.g = 0x07e0;
+       buf->priv.mask.b = 0x001f;
+       break;
+     default:
+       return 0;
+     }
+
+   return 1;
+}
+
+void *
+evas_direct3d_lock(Outbuf *buf, int *d3d_width, int *d3d_height, int *d3d_pitch)
+{
+   D3DSURFACE_DESC sd;
+   D3DLOCKED_RECT  d3d_rect;
+
+   /* is that call needed / overkill ? */
+   if (FAILED(buf->priv.d3d.texture->GetLevelDesc(0, &sd)))
+     return NULL;
+
+   if (FAILED(buf->priv.d3d.device->BeginScene()))
+     return NULL;
+  if (FAILED(buf->priv.d3d.sprite->Begin(D3DXSPRITE_DO_NOT_ADDREF_TEXTURE)))
+    {
+       buf->priv.d3d.device->EndScene();
+       return NULL;
+    }
+  if (FAILED(buf->priv.d3d.texture->LockRect(0, &d3d_rect, NULL, D3DLOCK_DISCARD)))
+    {
+       buf->priv.d3d.sprite->End();
+       buf->priv.d3d.device->EndScene();
+       return NULL;
+    }
+
+  *d3d_width = sd.Width;
+  *d3d_height = sd.Height;
+  *d3d_pitch = d3d_rect.Pitch;
+
+  return d3d_rect.pBits;
+}
+
+void
+evas_direct3d_unlock(Outbuf *buf)
+{
+  if (FAILED(buf->priv.d3d.texture->UnlockRect(0)))
+    return;
+
+  if (FAILED(buf->priv.d3d.sprite->Draw(buf->priv.d3d.texture,
+                                        NULL, NULL, NULL,
+                                        D3DCOLOR_ARGB (255, 255, 255, 255))))
+    return;
+  if (FAILED(buf->priv.d3d.sprite->End()))
+    return;
+
+  if (FAILED(buf->priv.d3d.device->EndScene()))
+    return;
+  if (FAILED(buf->priv.d3d.device->Present(NULL, NULL, NULL, NULL)))
+    return;
+}
+
+}
diff --git a/src/modules/engines/direct3d/evas_engine.c b/src/modules/engines/direct3d/evas_engine.c
new file mode 100644 (file)
index 0000000..d63ba77
--- /dev/null
@@ -0,0 +1,369 @@
+#include "evas_engine.h"
+#include "evas_private.h"
+#include "Evas_Engine_Direct3D.h"
+
+/* engine struct data */
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Tilebuf          *tb;
+   Outbuf           *ob;
+   Tilebuf_Rect     *rects;
+   Evas_Object_List *cur_rect;
+   int               end : 1;
+};
+
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* prototypes we will use here */
+static void *_output_setup(int                 width,
+                          int                 height,
+                          int                 rotation,
+                          HWND                window,
+                           LPDIRECT3D9         object,
+                           LPDIRECT3DDEVICE9   device,
+                           LPD3DXSPRITE        sprite,
+                           LPDIRECT3DTEXTURE9  texture,
+                          int                 w_depth);
+
+static void *eng_info(Evas *e);
+static void  eng_info_free(Evas *e,
+                          void *info);
+static void  eng_setup(Evas *e,
+                      void *info);
+static void  eng_output_free(void *data);
+static void  eng_output_resize(void *data,
+                              int   width,
+                              int   height);
+static void  eng_output_tile_size_set(void *data,
+                                     int   width,
+                                     int   height);
+static void  eng_output_redraws_rect_add(void *data,
+                                        int   x,
+                                        int   y,
+                                        int   width,
+                                        int   height);
+static void  eng_output_redraws_rect_del(void *data,
+                                        int   x,
+                                        int   y,
+                                        int   width,
+                                        int   height);
+static void  eng_output_redraws_clear(void *data);
+
+/* internal engine routines */
+static void *
+_output_setup(int                 width,
+             int                 height,
+             int                 rotation,
+             HWND                window,
+              LPDIRECT3D9         object,
+              LPDIRECT3DDEVICE9   device,
+              LPD3DXSPRITE        sprite,
+              LPDIRECT3DTEXTURE9  texture,
+             int                 w_depth)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)calloc(1, sizeof(Render_Engine));
+   if (!re) return NULL;
+
+   /* if we haven't initialized - init (automatic abort if already done) */
+   evas_common_cpu_init();
+
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+
+   evas_direct3d_outbuf_init();
+
+   /* get any stored performance metrics from device */
+   re->ob = evas_direct3d_outbuf_setup_d3d(width, height, rotation, OUTBUF_DEPTH_INHERIT, window, object, device, sprite, texture, w_depth);
+   if (!re->ob)
+     {
+       free(re);
+       return NULL;
+     }
+
+   re->tb = evas_common_tilebuf_new(width, height);
+   if (!re->tb)
+     {
+       evas_direct3d_outbuf_free(re->ob);
+       free(re);
+       return NULL;
+     }
+
+   /* FIXME: that comment :) */
+   /* in preliminary tests 16x16 gave highest framerates */
+   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+
+   return re;
+}
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Direct3D *info;
+
+   info = (Evas_Engine_Info_Direct3D *)calloc(1, sizeof(Evas_Engine_Info_Direct3D));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e,
+             void *info)
+{
+   Evas_Engine_Info_Direct3D *in;
+
+   in = (Evas_Engine_Info_Direct3D *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e,
+         void *info)
+{
+   Render_Engine                   *re;
+   Evas_Engine_Info_Direct3D *in;
+
+   in = (Evas_Engine_Info_Direct3D *)info;
+   if (!e->engine.data.output)
+     e->engine.data.output =
+     _output_setup(e->output.w,
+                  e->output.h,
+                  in->info.rotation,
+                  in->info.window,
+                  in->info.object,
+                  in->info.device,
+                  in->info.sprite,
+                  in->info.texture,
+                  in->info.depth);
+  if (!e->engine.data.output) return;
+   if (!e->engine.data.context)
+     e->engine.data.context =
+     e->engine.func->context_new(e->engine.data.output);
+
+   re = (Render_Engine *)e->engine.data.output;
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_direct3d_outbuf_free(re->ob);
+   evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data,
+                 int   width,
+                 int   height)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_direct3d_outbuf_reconfigure(re->ob,
+                                    width,
+                                    height,
+                                    evas_direct3d_outbuf_rot_get(re->ob),
+                                    OUTBUF_DEPTH_INHERIT);
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(width, height);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+}
+
+static void
+eng_output_tile_size_set(void *data,
+                        int   width,
+                        int   height)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, width, height);
+}
+
+static void
+eng_output_redraws_rect_add(void *data,
+                           int   x,
+                           int   y,
+                           int   width,
+                           int   height)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, width, height);
+}
+
+static void
+eng_output_redraws_rect_del(void *data,
+                           int   x,
+                           int   y,
+                           int   width,
+                           int   height)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, width, height);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data,
+                                  int  *x,
+                                  int  *y,
+                                  int  *w,
+                                  int  *h,
+                                  int  *cx,
+                                  int  *cy,
+                                  int  *cw,
+                                  int  *ch)
+{
+   Render_Engine *re;
+   RGBA_Image    *surface;
+   Tilebuf_Rect  *rect;
+   int            ux;
+   int            uy;
+   int            uw;
+   int            uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *)re->rects;
+     }
+   if (!re->cur_rect) return NULL;
+   rect = (Tilebuf_Rect *)re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   surface = evas_direct3d_outbuf_new_region_for_update(re->ob,
+                                                        ux, uy,
+                                                        uw, uh,
+                                                        cx, cy,
+                                                        cw, ch);
+   *x = ux; *y = uy; *w = uw; *h = uh;
+
+   return surface;
+}
+
+static void
+eng_output_redraws_next_update_push(void *data,
+                                   void *surface,
+                                   int   x,
+                                   int   y,
+                                   int   w,
+                                   int   h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_pipe_begin((RGBA_Image *)surface);
+   evas_common_pipe_flush((RGBA_Image *)surface);
+   evas_direct3d_outbuf_push_updated_region(re->ob, (RGBA_Image *)surface, x, y, w, h);
+   evas_direct3d_outbuf_free_region_for_update(re->ob, (RGBA_Image *)surface);
+   evas_common_cpu_end_opt();
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_direct3d_outbuf_flush(re->ob);
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_ENGINE,
+     "direct3d",
+     "none"
+};
diff --git a/src/modules/engines/direct3d/evas_engine.h b/src/modules/engines/direct3d/evas_engine.h
new file mode 100644 (file)
index 0000000..6be498f
--- /dev/null
@@ -0,0 +1,141 @@
+#ifndef __EVAS_ENGINE_H__
+#define __EVAS_ENGINE_H__
+
+
+#include <windows.h>
+#include <d3d9.h>
+#include <d3dx9.h>
+
+#include "evas_common.h"
+
+
+typedef struct _Outbuf                   Outbuf;
+typedef struct _Direct3D_Output_Buffer   Direct3D_Output_Buffer;
+
+
+enum _Outbuf_Depth
+{
+   OUTBUF_DEPTH_NONE,
+   OUTBUF_DEPTH_INHERIT,
+   OUTBUF_DEPTH_RGB_16BPP_565_565_DITHERED,
+   OUTBUF_DEPTH_RGB_16BPP_555_555_DITHERED,
+   OUTBUF_DEPTH_RGB_16BPP_444_444_DITHERED,
+   OUTBUF_DEPTH_RGB_16BPP_565_444_DITHERED,
+   OUTBUF_DEPTH_RGB_32BPP_888_8888,
+   OUTBUF_DEPTH_LAST
+};
+typedef enum   _Outbuf_Depth             Outbuf_Depth;
+
+
+struct _Outbuf
+{
+   int             width;
+   int             height;
+   int             rot;
+   Outbuf_Depth    depth;
+
+   struct {
+      struct {
+         HWND                window;
+         LPDIRECT3D9         object;
+         LPDIRECT3DDEVICE9   device;
+         LPD3DXSPRITE        sprite;
+         LPDIRECT3DTEXTURE9  texture;
+         int                 depth;
+      } d3d;
+      struct {
+         DATA32    r, g, b;
+      } mask;
+
+      /* a list of pending regions to write to the target */
+      Evas_List   *pending_writes;
+   } priv;
+};
+
+struct _Direct3D_Output_Buffer
+{
+   void *image;
+   int   x;
+   int   y;
+   int   width;
+   int   height;
+   int   depth;
+   int   pitch;
+};
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Outbuf functions */
+void         evas_direct3d_outbuf_init(void);
+void         evas_direct3d_outbuf_free(Outbuf *buf);
+Outbuf      *evas_direct3d_outbuf_setup_d3d(int                width,
+                                            int                height,
+                                            int                rotation,
+                                            Outbuf_Depth       depth,
+                                            HWND               window,
+                                            LPDIRECT3D9        object,
+                                            LPDIRECT3DDEVICE9  device,
+                                            LPD3DXSPRITE       sprite,
+                                            LPDIRECT3DTEXTURE9 texture,
+                                            int                w_depth);
+RGBA_Image  *evas_direct3d_outbuf_new_region_for_update(Outbuf *buf,
+                                                        int x,
+                                                        int y,
+                                                        int width,
+                                                        int height,
+                                                        int *cx,
+                                                        int *cy,
+                                                        int *cw,
+                                                        int *ch);
+void         evas_direct3d_outbuf_free_region_for_update(Outbuf     *buf,
+                                                         RGBA_Image *update);
+void         evas_direct3d_outbuf_flush(Outbuf *buf);
+void         evas_direct3d_outbuf_push_updated_region(Outbuf     *buf,
+                                                      RGBA_Image *update,
+                                                      int         x,
+                                                      int         y,
+                                                      int         width,
+                                                      int         height);
+void         evas_direct3d_outbuf_reconfigure(Outbuf      *buf,
+                                              int          width,
+                                              int          height,
+                                              int          rotation,
+                                              Outbuf_Depth depth);
+int          evas_direct3d_outbuf_width_get(Outbuf *buf);
+int          evas_direct3d_outbuf_height_get(Outbuf *buf);
+Outbuf_Depth evas_direct3d_outbuf_depth_get(Outbuf *buf);
+int          evas_direct3d_outbuf_rot_get(Outbuf *buf);
+
+/* Output Buffer functions */
+Direct3D_Output_Buffer *evas_direct3d_output_buffer_new(int   depth,
+                                                        int   width,
+                                                        int   height,
+                                                        void *data);
+void   evas_direct3d_output_buffer_free(Direct3D_Output_Buffer *d3dob);
+void   evas_direct3d_output_buffer_paste(Direct3D_Output_Buffer *d3dob,
+                                         DATA8                  *d3d_data,
+                                         int                     d3d_width,
+                                         int                     d3d_height,
+                                         int                     d3d_pitch,
+                                         int                     x,
+                                         int                     y);
+DATA8 *evas_direct3d_output_buffer_data(Direct3D_Output_Buffer *d3dob,
+                                        int                    *bytes_per_line_ret);
+int    evas_direct3d_output_buffer_depth(Direct3D_Output_Buffer *d3dob);
+
+
+int    evas_direct3d_masks_get(Outbuf *buf);
+void  *evas_direct3d_lock(Outbuf *buf, int *d3d_width, int *d3d_height, int *d3d_pitch);
+void   evas_direct3d_unlock(Outbuf *buf);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __EVAS_ENGINE_H__ */
diff --git a/src/modules/engines/direct3d/evas_outbuf.c b/src/modules/engines/direct3d/evas_outbuf.c
new file mode 100644 (file)
index 0000000..3db76db
--- /dev/null
@@ -0,0 +1,333 @@
+#include "evas_engine.h"
+
+
+void
+evas_direct3d_outbuf_init(void)
+{
+}
+
+void
+evas_direct3d_outbuf_free(Outbuf *buf)
+{
+   free(buf);
+}
+
+Outbuf *
+evas_direct3d_outbuf_setup_d3d(int                width,
+                               int                height,
+                               int                rotation,
+                               Outbuf_Depth       depth,
+                               HWND               window,
+                               LPDIRECT3D9        object,
+                               LPDIRECT3DDEVICE9  device,
+                               LPD3DXSPRITE       sprite,
+                               LPDIRECT3DTEXTURE9 texture,
+                               int                w_depth)
+{
+   Outbuf *buf;
+
+   buf = (Outbuf *)calloc(1, sizeof(Outbuf));
+   if (!buf)
+      return NULL;
+
+   buf->width = width;
+   buf->height = height;
+   buf->depth = depth;
+   buf->rot = rotation;
+
+   buf->priv.d3d.window = window;
+   buf->priv.d3d.object = object;
+   buf->priv.d3d.device = device;
+   buf->priv.d3d.sprite = sprite;
+   buf->priv.d3d.texture = texture;
+   buf->priv.d3d.depth = w_depth;
+
+   {
+      Gfx_Func_Convert        conv_func;
+      Direct3D_Output_Buffer *d3dob;
+
+      d3dob = evas_direct3d_output_buffer_new(buf->priv.d3d.depth, 1, 1, NULL);
+
+      conv_func = NULL;
+      if (d3dob)
+        {
+           if (evas_direct3d_masks_get(buf))
+             {
+                if ((rotation == 0) || (rotation == 180))
+                  conv_func = evas_common_convert_func_get(0,
+                                                           width,
+                                                           height,
+                                                           evas_direct3d_output_buffer_depth (d3dob),
+                                                           buf->priv.mask.r,
+                                                           buf->priv.mask.g,
+                                                           buf->priv.mask.b,
+                                                           PAL_MODE_NONE,
+                                                           rotation);
+                else if ((rotation == 90) || (rotation == 270))
+                  conv_func = evas_common_convert_func_get(0,
+                                                           height,
+                                                           width,
+                                                           evas_direct3d_output_buffer_depth (d3dob),
+                                                           buf->priv.mask.r,
+                                                           buf->priv.mask.g,
+                                                           buf->priv.mask.b,
+                                                           PAL_MODE_NONE,
+                                                           rotation);
+             }
+           evas_direct3d_output_buffer_free(d3dob);
+           if (!conv_func)
+             {
+               printf(".[ Evas Error ].\n"
+                      " {\n"
+                      "  At depth         %i:\n"
+                      "  RGB format mask: %08x, %08x, %08x\n"
+                      "  Not supported by and compiled in converters!\n"
+                      " }\n",
+                      buf->priv.d3d.depth,
+                      buf->priv.mask.r,
+                      buf->priv.mask.g,
+                      buf->priv.mask.b);
+             }
+        }
+   }
+
+   return buf;
+}
+
+RGBA_Image *
+evas_direct3d_outbuf_new_region_for_update(Outbuf *buf,
+                                           int x,
+                                           int y,
+                                           int width,
+                                           int height,
+                                           int *cx,
+                                           int *cy,
+                                           int *cw,
+                                           int *ch)
+{
+   RGBA_Image             *im;
+   Direct3D_Output_Buffer *d3dob = NULL;
+   int                     bpl = 0;
+
+   *cx = 0;
+   *cy = 0;
+   *cw = width;
+   *ch = height;
+
+   if ((buf->rot == 0) &&
+       (buf->priv.mask.r == 0xff0000) &&
+       (buf->priv.mask.g == 0x00ff00) &&
+       (buf->priv.mask.b == 0x0000ff))
+     {
+        im = evas_cache_image_empty(evas_common_image_cache_get());
+        im->image->w = width;
+        im->image->h = height;
+        im->image->data = NULL;
+        im->image->no_free = 1;
+        d3dob = evas_direct3d_output_buffer_new(buf->priv.d3d.depth,
+                                                width,
+                                                height,
+                                                NULL);
+        im->extended_info = d3dob;
+        im->image->data = (DATA32 *)evas_direct3d_output_buffer_data(d3dob, &bpl);
+     }
+   else
+     {
+        im = (RGBA_Image*) evas_cache_image_empty(evas_common_image_cache_get());
+        evas_cache_image_surface_alloc(&im->cache_entry, width, height);
+        im->extended_info = d3dob;
+        if ((buf->rot == 0) || (buf->rot == 180))
+          d3dob = evas_direct3d_output_buffer_new(buf->priv.d3d.depth,
+                                                  width,
+                                                  height,
+                                                  NULL);
+        else if ((buf->rot == 90) || (buf->rot == 270))
+          d3dob = evas_direct3d_output_buffer_new(buf->priv.d3d.depth,
+                                                  width,
+                                                  height,
+                                                  NULL);
+        im->extended_info = d3dob;
+     }
+
+   buf->priv.pending_writes = evas_list_append(buf->priv.pending_writes, im);
+
+   return im;
+}
+
+void
+evas_direct3d_outbuf_free_region_for_update(Outbuf     *buf,
+                                            RGBA_Image *update)
+{
+   /* no need to do anything - they are cleaned up on flush */
+}
+
+void
+evas_direct3d_outbuf_flush(Outbuf *buf)
+{
+   Evas_List *l;
+   void      *d3d_data;
+   int        d3d_width;
+   int        d3d_height;
+   int        d3d_pitch;
+
+   /* lock the texture */
+   if (!(d3d_data = evas_direct3d_lock(buf,
+                                       &d3d_width, &d3d_height, &d3d_pitch)))
+     goto free_images;
+
+   /* copy safely the images that need to be drawn onto the back surface */
+   for (l = buf->priv.pending_writes; l; l = l->next)
+     {
+       RGBA_Image             *im;
+       Direct3D_Output_Buffer *d3dob;
+
+       im = l->data;
+       d3dob = im->extended_info;
+       /* paste now */
+       evas_direct3d_output_buffer_paste(d3dob,
+                                          d3d_data,
+                                          d3d_width,
+                                          d3d_height,
+                                          d3d_pitch,
+                                          d3dob->x,
+                                          d3dob->y);
+     }
+
+   /* unlock the texture */
+   evas_direct3d_unlock(buf);
+
+ free_images:
+   while (buf->priv.pending_writes)
+     {
+        RGBA_Image             *im;
+        Direct3D_Output_Buffer *d3dob;
+
+        im = buf->priv.pending_writes->data;
+        buf->priv.pending_writes = evas_list_remove_list(buf->priv.pending_writes,
+                                                         buf->priv.pending_writes);
+        d3dob = im->extended_info;
+        evas_cache_image_drop(im);
+        if (d3dob) evas_direct3d_output_buffer_free(d3dob);
+     }
+   evas_common_cpu_end_opt();
+}
+
+void
+evas_direct3d_outbuf_push_updated_region(Outbuf     *buf,
+                                         RGBA_Image *update,
+                                         int         x,
+                                         int         y,
+                                         int         width,
+                                         int         height)
+{
+   Gfx_Func_Convert        conv_func;
+   Direct3D_Output_Buffer *d3dob;
+   DATA32                 *src_data;
+   void                   *data;
+   int                     bpl = 0;
+
+   conv_func = NULL;
+   d3dob = update->extended_info;
+
+   if ((buf->rot == 0) || (buf->rot == 180))
+     conv_func = evas_common_convert_func_get(NULL,
+                                              width,
+                                              height,
+                                              evas_direct3d_output_buffer_depth(d3dob),
+                                              buf->priv.mask.r,
+                                              buf->priv.mask.g,
+                                              buf->priv.mask.b,
+                                              PAL_MODE_NONE,
+                                              buf->rot);
+   else if ((buf->rot == 90) || (buf->rot == 270))
+     conv_func = evas_common_convert_func_get(NULL,
+                                              height,
+                                              width,
+                                              evas_direct3d_output_buffer_depth(d3dob),
+                                              buf->priv.mask.r,
+                                              buf->priv.mask.g,
+                                              buf->priv.mask.b,
+                                              PAL_MODE_NONE,
+                                              buf->rot);
+
+   if (!conv_func) return;
+
+   data = evas_direct3d_output_buffer_data(d3dob, &bpl);
+   src_data = update->image->data;
+   if (buf->rot == 0)
+     {
+        d3dob->x = x;
+        d3dob->y = y;
+     }
+   else if (buf->rot == 90)
+     {
+        d3dob->x = y;
+        d3dob->y = buf->width - x - width;
+     }
+   else if (buf->rot == 180)
+     {
+        d3dob->x = buf->width - x - width;
+        d3dob->y = buf->height - y - height;
+     }
+   else if (buf->rot == 270)
+     {
+        d3dob->x = buf->height - y - height;
+        d3dob->y = x;
+     }
+   if ((buf->rot == 0) || (buf->rot == 180))
+     {
+        d3dob->width = width;
+        d3dob->height = height;
+     }
+   else if ((buf->rot == 90) || (buf->rot == 270))
+     {
+        d3dob->width = height;
+        d3dob->height = width;
+     }
+
+   if (data != src_data)
+     conv_func(src_data, data,
+               0,
+               bpl /
+               ((evas_direct3d_output_buffer_depth(d3dob))) - d3dob->width,
+               d3dob->width, d3dob->height, x, y, NULL);
+}
+
+void
+evas_direct3d_outbuf_reconfigure(Outbuf      *buf,
+                                 int          width,
+                                 int          height,
+                                 int          rotation,
+                                 Outbuf_Depth depth)
+{
+   if ((width == buf->width) && (height == buf->height) &&
+       (rotation == buf->rot) && (depth == buf->depth))
+     return;
+   buf->width = width;
+   buf->height = height;
+   buf->rot = rotation;
+}
+
+int
+evas_direct3d_outbuf_width_get(Outbuf *buf)
+{
+   return buf->width;
+}
+
+int
+evas_direct3d_outbuf_height_get(Outbuf *buf)
+{
+   return buf->height;
+}
+
+Outbuf_Depth
+evas_direct3d_outbuf_depth_get(Outbuf *buf)
+{
+   return buf->depth;
+}
+
+int
+evas_direct3d_outbuf_rot_get(Outbuf *buf)
+{
+   return buf->rot;
+}
diff --git a/src/modules/engines/fb/.cvsignore b/src/modules/engines/fb/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/fb/Evas_Engine_FB.h b/src/modules/engines/fb/Evas_Engine_FB.h
new file mode 100644 (file)
index 0000000..7166e42
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef _EVAS_ENGINE_FB_H
+#define _EVAS_ENGINE_FB_H
+
+typedef struct _Evas_Engine_Info_FB Evas_Engine_Info_FB;
+
+struct _Evas_Engine_Info_FB
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   struct {
+
+      int virtual_terminal;
+      int device_number;
+      int refresh;
+      int rotation;
+   } info;
+};
+#endif
+
+
diff --git a/src/modules/engines/fb/Makefile.am b/src/modules/engines/fb/Makefile.am
new file mode 100644 (file)
index 0000000..0b0ac04
--- /dev/null
@@ -0,0 +1,38 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@
+
+if BUILD_ENGINE_FB
+
+pkgdir = $(libdir)/evas/modules/engines/fb/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = \
+evas_engine.h \
+evas_fb.h \
+evas_engine.c \
+evas_fb_main.c \
+evas_outbuf.c
+
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_FB.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_fb.h \
+evas_engine.c \
+evas_fb_main.c \
+evas_outbuf.c \
+Evas_Engine_FB.h
diff --git a/src/modules/engines/fb/evas_engine.c b/src/modules/engines/fb/evas_engine.c
new file mode 100644 (file)
index 0000000..797413c
--- /dev/null
@@ -0,0 +1,284 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_FB.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Tilebuf          *tb;
+   Outbuf           *ob;
+   Tilebuf_Rect     *rects;
+   Evas_Object_List *cur_rect;
+   int               end : 1;
+};
+
+/* prototypes we will use here */
+static void *_output_setup(int w, int h, int rot, int vt, int dev, int refresh);
+
+static void *eng_info(Evas *e);
+static void eng_info_free(Evas *e, void *info);
+static void eng_setup(Evas *e, void *info);
+static void eng_output_free(void *data);
+static void eng_output_resize(void *data, int w, int h);
+static void eng_output_tile_size_set(void *data, int w, int h);
+static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_clear(void *data);
+static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h);
+static void eng_output_flush(void *data);
+static void eng_output_idle_flush(void *data);
+
+/* internal engine routines */
+static void *
+_output_setup(int w, int h, int rot, int vt, int dev, int refresh)
+{
+   Render_Engine *re;
+
+   re = calloc(1, sizeof(Render_Engine));
+   /* if we haven't initialized - init (automatic abort if already done) */
+   evas_common_cpu_init();
+
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+
+   evas_fb_outbuf_fb_init();
+
+   /* get any stored performance metrics from device (xserver) */
+   re->ob = evas_fb_outbuf_fb_setup_fb(w, h, rot, OUTBUF_DEPTH_INHERIT, vt, dev, refresh);
+   re->tb = evas_common_tilebuf_new(evas_fb_outbuf_fb_get_width(re->ob), evas_fb_outbuf_fb_get_height(re->ob));
+   /* no backbuf! */
+   evas_fb_outbuf_fb_set_have_backbuf(re->ob, 0);
+   /* in preliminary tests 16x16 gave highest framerates */
+   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   return re;
+}
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_FB *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_FB));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_FB *in;
+
+   in = (Evas_Engine_Info_FB *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_FB *info;
+
+   info = (Evas_Engine_Info_FB *)in;
+   re = _output_setup(e->output.w,
+                     e->output.h,
+                     info->info.rotation,
+                     info->info.virtual_terminal,
+                     info->info.device_number,
+                     info->info.refresh);
+   e->engine.data.output = re;
+   if (!e->engine.data.output) return;
+   e->engine.data.context = e->engine.func->context_new(e->engine.data.output);
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_fb_outbuf_fb_free(re->ob);
+   evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_fb_outbuf_fb_reconfigure(re->ob, w, h,
+                                evas_fb_outbuf_fb_get_rot(re->ob),
+                                OUTBUF_DEPTH_INHERIT);
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   RGBA_Image *surface;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *)re->rects;
+     }
+   if (!re->cur_rect) return NULL;
+   rect = (Tilebuf_Rect *)re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   surface = evas_fb_outbuf_fb_new_region_for_update(re->ob,
+                                         ux, uy, uw, uh,
+                                         cx, cy, cw, ch);
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   return surface;
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_pipe_begin(surface);
+   evas_common_pipe_flush(surface);
+   evas_fb_outbuf_fb_push_updated_region(re->ob, surface, x, y, w, h);
+   evas_fb_outbuf_fb_free_region_for_update(re->ob, surface);
+   evas_common_cpu_end_opt();
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi = 
+{
+   EVAS_MODULE_API_VERSION, 
+     EVAS_MODULE_TYPE_ENGINE,
+     "fb",
+     "none"
+};
diff --git a/src/modules/engines/fb/evas_engine.h b/src/modules/engines/fb/evas_engine.h
new file mode 100644 (file)
index 0000000..d514582
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+#include "evas_fb.h"
+
+typedef struct _Outbuf                Outbuf;
+
+typedef enum   _Outbuf_Depth          Outbuf_Depth;
+
+enum _Outbuf_Depth
+{
+   OUTBUF_DEPTH_NONE,
+     OUTBUF_DEPTH_INHERIT,
+     OUTBUF_DEPTH_RGB_16BPP_565_565_DITHERED,
+     OUTBUF_DEPTH_RGB_16BPP_555_555_DITHERED,
+     OUTBUF_DEPTH_RGB_16BPP_444_444_DITHERED,
+     OUTBUF_DEPTH_RGB_16BPP_565_444_DITHERED,
+     OUTBUF_DEPTH_RGB_32BPP_888_8888,
+     OUTBUF_DEPTH_LAST
+};
+
+struct _Outbuf
+{
+   Outbuf_Depth    depth;
+   int             w, h;
+   int             rot;
+
+   struct {
+      struct {
+        FB_Mode  *fb;
+      } fb;
+      struct {
+        DATA32    r, g, b;
+      } mask;
+      RGBA_Image  *back_buf;
+   } priv;
+};
+
+/****/
+
+void         evas_fb_outbuf_fb_init                   (void);
+void         evas_fb_outbuf_fb_free                   (Outbuf *buf);
+
+Outbuf      *evas_fb_outbuf_fb_setup_fb               (int w, int h, int rot, Outbuf_Depth depth, int vt_no, int dev_no, int refresh);
+
+void         evas_fb_outbuf_fb_blit                   (Outbuf *buf, int src_x, int src_y, int w, int h, int dst_x, int dst_y);
+void         evas_fb_outbuf_fb_update                 (Outbuf *buf, int x, int y, int w, int h);
+RGBA_Image  *evas_fb_outbuf_fb_new_region_for_update  (Outbuf *buf, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);
+void         evas_fb_outbuf_fb_free_region_for_update (Outbuf *buf, RGBA_Image *update);
+void         evas_fb_outbuf_fb_push_updated_region    (Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h);
+void         evas_fb_outbuf_fb_reconfigure            (Outbuf *buf, int w, int h, int rot, Outbuf_Depth depth);
+int          evas_fb_outbuf_fb_get_width              (Outbuf *buf);
+int          evas_fb_outbuf_fb_get_height             (Outbuf *buf);
+Outbuf_Depth evas_fb_outbuf_fb_get_depth              (Outbuf *buf);
+int          evas_fb_outbuf_fb_get_rot                (Outbuf *buf);
+int          evas_fb_outbuf_fb_get_have_backbuf       (Outbuf *buf);
+void         evas_fb_outbuf_fb_set_have_backbuf       (Outbuf *buf, int have_backbuf);
+
+#endif
diff --git a/src/modules/engines/fb/evas_fb.h b/src/modules/engines/fb/evas_fb.h
new file mode 100644 (file)
index 0000000..0289102
--- /dev/null
@@ -0,0 +1,95 @@
+#ifndef _EVAS_FB_H
+#define _EVAS_FB_H 1
+
+/* -------------------------------------------------------------------- */
+/* LINUX FBCON FRAMEBUFFER UTILITY CODE                                 */
+/* makes setting up the framebuffer easy. Also makes it eays to port to */
+/* some other system if needed.                                         */
+/* Copyright (c) 1999 - Carsten Haitzler (The Rasterman)                */
+/* -------------------------------------------------------------------- */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <termios.h>
+#include <signal.h>
+#include <errno.h>
+#include <signal.h>
+#include <sys/ioctl.h>
+#include <sys/mman.h>
+#include <sys/wait.h>
+#include <sys/stat.h>
+#include <linux/kd.h>
+#include <linux/vt.h>
+#include <linux/fb.h>
+
+typedef struct _fb_mode FB_Mode;
+
+struct _fb_mode
+{
+  int             width;
+  int             height;
+  int             refresh;
+  int             depth;
+  int             bpp;
+  int             fb_fd;
+  void           *mem;
+  int             mem_offset;
+  struct fb_var_screeninfo fb_var;
+};
+
+/* init a framebuffer (and switch to) vt number vt. If vt == 0 use current   */
+/* vt                                                                        */
+void fb_init(int vt, int device);
+/* call this afetr setting or getting the fb mode (whichever) to complete    */
+/* the dsetup                                                                */
+int  fb_postinit(FB_Mode *mode);
+/* console switching - if a switch was requested this with block if block    */
+/* is 1, otherwise it will return 1 if current console is active or 0 if     */
+/* the user has switched away in the meantime                                */
+int  fb_await_switch(int block);
+/* list all current possible video modes listed in /etc/fb.modes             */
+/* returns pointer to an aray of FB_Mode, and sets num_return to the number  */
+/* of elements int he returned array                                         */
+FB_Mode *fb_list_modes(int *num_return);
+/* sets the fb mode to the resolution width x height and the depth to depth. */
+/* and if refresh > 0 attempts to use a mode with a refresh rate (in Hz) of  */
+/* that. If this fails it will return NULL - if it succeeds it will return   */
+/* a pointer to the FB_Mode thatwas set. only modes in /etc/fb.modes will    */
+/* be used. If refresh is 0 it uses the DEFAULT mode (the one with no        */
+/* refresh rate at the end of its name (WIDTHxHEIGHT-REFRESH)                */
+/* NB: in 8bpp you get a 332 palette. This is fixed so all modes are         */
+/* "truecolor" - the onyl difference is how many bits bep red, green and     */
+/* blue channel. This is for speed reasons                                   */
+FB_Mode *fb_setmode(int width, int height, int depth, int refresh);
+/* returns the current fb mode being used in FB_Mode                         */
+FB_Mode *fb_getmode(void);
+/* changes the bit depth of the current fb mode to depth and returns a new   */
+/* handle to a new fb mode with updated parameters. frees cur_mode for you.  */
+FB_Mode *fb_changedepth(FB_Mode *cur_mode, int depth);
+/* changes resolution - retaining current depth of the current mode,         */
+/* returning a handle to the new mode once done. frees cur_mode for you.     */
+FB_Mode *fb_changeres(FB_Mode *cur_mode, int width, int height, int refresh);
+/* chnages both resolution and depth and returns a handle to the new mode    */
+/* when done. frees cur_mode for you                                         */
+FB_Mode *fb_changemode(FB_Mode *cur_mode, int width, int height, int depth, int refresh);
+
+/* ------------------------------------------------------------------------- */
+/* How to init:                                                              */
+/* (Example)                                                                 */
+
+/* FB_Mode *mode;                                                            */
+/* int fb_fd = -1;                                                           */
+/* fb_init(0);                                                               */
+/* mode = fb_setmode(640, 480, 8, 0);                                        */
+/* if (mode)                                                                 */
+/*   fb_fd = fb_postinit(mode);                                              */
+/* if (fb_fd == -1)                                                          */
+/*   {                                                                       */
+/*     fprintf(stderr, "Frambuffer init failed\n");                          */
+/*     exit(1);                                                              */
+/*   }                                                                       */
+/* .... code to play with the FB                                             */
+#endif
diff --git a/src/modules/engines/fb/evas_fb_main.c b/src/modules/engines/fb/evas_fb_main.c
new file mode 100644 (file)
index 0000000..ce6946a
--- /dev/null
@@ -0,0 +1,601 @@
+/* -------------------------------------------------------------------- */
+/* LINUX FBCON FRAMEBUFFER UTILITY CODE                                 */
+/* makes setting up the framebuffer easy. Also makes it eays to port to */
+/* some other system if needed.                                         */
+/* Copyright (c) 1999 - Carsten Haitzler (The Rasterman)                */
+/* -------------------------------------------------------------------- */
+#include "evas_common.h"
+#include "evas_fb.h"
+
+#include <signal.h>
+#include <sys/ioctl.h>
+#include <sys/wait.h>
+#include <linux/kd.h>
+#include <linux/vt.h>
+#include <sys/user.h>
+
+#define FB_ACTIVE    0
+#define FB_REL_REQ   1
+#define FB_INACTIVE  2
+#define FB_ACQ_REQ   3
+
+/* -------------------------------------------------------------------- */
+/* internal variables                                                   */
+
+static struct fb_fix_screeninfo  fb_fix;
+static int                       fb, tty;
+static int                       bpp, depth;
+static int                       orig_vt_no = 0;
+static int                       kd_mode;
+static struct vt_mode            vt_omode;
+static struct fb_var_screeninfo  fb_ovar;
+static unsigned short            ored[256], ogreen[256], oblue[256];
+static unsigned short            red[256],  green[256],  blue[256];
+static struct fb_cmap            ocmap = { 0, 256, ored, ogreen, oblue, NULL };
+static struct fb_cmap            cmap  = { 0, 256, red,  green,  blue, NULL };
+
+/* -------------------------------------------------------------------- */
+/* internal function prototypes                                         */
+
+static void fb_cleanup(void);
+//static void fb_cleanup_fork(void);
+static void fb_setvt(int vtno);
+static void fb_init_palette_332(FB_Mode *mode);
+static void fb_init_palette_linear(FB_Mode *mode);
+
+/* -------------------------------------------------------------------- */
+/* palette setting                                                      */
+
+static void
+fb_init_palette_332(FB_Mode *mode)
+{
+  int r, g, b, i;
+
+  if (mode->fb_var.bits_per_pixel != 8)
+    return;
+  i = 0;
+
+  if (ioctl(fb, FBIOGETCMAP, &cmap) == -1)
+    perror("ioctl FBIOGETCMAP");
+
+  /* generate the palette */
+  for (r = 0; r < 8; r++)
+    {
+      for (g = 0; g < 8; g++)
+       {
+         for (b = 0; b < 4; b++)
+           {
+             int val;
+
+             val = (r << 5) | (r << 2) | (r >> 1);
+             red[i] = (val << 8) | val;
+             val = (g << 5) | (g << 2) | (g >> 1);
+             green[i] = (val << 8) | val;
+             val = (b << 6) | (b << 4) | (b << 2) | (b);
+             blue[i] = (val << 8) | val;
+             i++;
+           }
+       }
+    }
+
+  /* set colormap */
+  if (ioctl(fb, FBIOPUTCMAP, &cmap) == -1)
+    perror("ioctl FBIOPUTCMAP");
+
+}
+
+static void
+fb_init_palette_linear(FB_Mode *mode)
+{
+  int i;
+
+  if (mode->fb_var.bits_per_pixel != 8)
+    return;
+
+  if (ioctl(fb, FBIOGETCMAP, &cmap) == -1)
+    perror("ioctl FBIOGETCMAP");
+
+  /* generate the palette */
+  for (i = 0; i < 256; i++)
+    red[i] = (i << 8) | i;
+  for (i = 0; i < 256; i++)
+    green[i] = (i << 8) | i;
+  for (i = 0; i < 256; i++)
+    blue[i] = (i << 8) | i;
+
+  /* set colormap */
+  if (ioctl(fb, FBIOPUTCMAP, &cmap) == -1)
+    perror("ioctl FBIOPUTCMAP");
+
+}
+
+/* -------------------------------------------------------------------- */
+/* initialisation & cleanup                                             */
+
+FB_Mode *
+fb_list_modes(int *num_return)
+{
+  FILE *f;
+  char line[256], label[256], value[256];
+  FB_Mode *modes = NULL;
+  int num;
+
+  num = 0;
+  f = fopen("/etc/fb.modes","r");
+  if (!f)
+    {
+      *num_return = 0;
+      return NULL;
+    }
+  while (fgets(line, sizeof(line) - 1, f))
+    {
+      if (sscanf(line, "mode \"%250[^\"]\"", label) == 1)
+       {
+         char f1[32], f2[32], f3[32], f4[32];
+
+         f1[0] = 0; f2[0] = 0; f3[0] = 0; f4[0] = 0;
+         sscanf(label, "%30[^x]x%30[^-]-%30[^-]-%30s", f1, f2, f3, f4);
+         if ((f1[0]) && (f2[0]))
+           {
+             int geometry = 0;
+             int timings = 0;
+
+             num++;
+             modes = realloc(modes, num * sizeof(FB_Mode));
+             modes[num - 1].width = atoi(f1);
+             modes[num - 1].height = atoi(f2);
+             if (f3[0])
+               modes[num - 1].refresh = atoi(f3);
+             else
+               modes[num - 1].refresh = 0;
+             modes[num - 1].fb_var.sync = 0;
+             while ((fgets(line, sizeof(line) - 1, f)) &&
+                    (!strstr(line, "endmode")))
+               {
+
+                 if (sscanf(line," geometry %i %i %i %i %i",
+                            &modes[num - 1].fb_var.xres,
+                            &modes[num - 1].fb_var.yres,
+                            &modes[num - 1].fb_var.xres_virtual,
+                            &modes[num - 1].fb_var.yres_virtual,
+                            &modes[num - 1].fb_var.bits_per_pixel) == 5)
+                   geometry = 1;
+                 if (sscanf(line," timings %i %i %i %i %i %i %i",
+                            &modes[num - 1].fb_var.pixclock,
+                            &modes[num - 1].fb_var.left_margin,
+                            &modes[num - 1].fb_var.right_margin,
+                            &modes[num - 1].fb_var.upper_margin,
+                            &modes[num - 1].fb_var.lower_margin,
+                            &modes[num - 1].fb_var.hsync_len,
+                            &modes[num - 1].fb_var.vsync_len) == 7)
+                   timings = 1;
+                 if ((sscanf(line, " hsync %15s", value) == 1) &&
+                     (!strcmp(value,"high")))
+                   modes[num - 1].fb_var.sync |= FB_SYNC_HOR_HIGH_ACT;
+                 if ((sscanf(line, " vsync %15s", value) == 1) &&
+                     (!strcmp(value,"high")))
+                   modes[num - 1].fb_var.sync |= FB_SYNC_VERT_HIGH_ACT;
+                 if ((sscanf(line, " csync %15s", value) == 1) &&
+                     (!strcmp(value,"high")))
+                   modes[num - 1].fb_var.sync |= FB_SYNC_COMP_HIGH_ACT;
+                 if ((sscanf(line, " extsync %15s", value) == 1) &&
+                     (!strcmp(value,"true")))
+                   modes[num - 1].fb_var.sync |= FB_SYNC_EXT;
+                 if ((sscanf(line, " laced %15s", value) == 1) &&
+                     (!strcmp(value,"true")))
+                   modes[num - 1].fb_var.vmode |= FB_VMODE_INTERLACED;
+                 if ((sscanf(line, " double %15s",value) == 1) &&
+                     (!strcmp(value,"true")))
+                   modes[num - 1].fb_var.vmode |= FB_VMODE_DOUBLE;
+               }
+             if ((!geometry) || (!timings))
+               {
+                 num--;
+                 if (num == 0)
+                   {
+                     free(modes);
+                     modes = NULL;
+                   }
+               }
+             else
+               {
+                 modes[num - 1].fb_var.xoffset = 0;
+                 modes[num - 1].fb_var.yoffset = 0;
+               }
+           }
+
+       }
+    }
+  fclose(f);
+  *num_return = num;
+  return modes;
+}
+
+FB_Mode *
+fb_setmode(int width, int height, int depth, int refresh)
+{
+  FB_Mode *modes, *mode = NULL;
+  int      i, num_modes;
+
+  modes = fb_list_modes(&num_modes);
+  if (modes)
+    {
+      for (i = 0; i < num_modes; i++)
+       {
+         if ((modes[i].width == width) &&
+             (modes[i].height == height) &&
+             (!depth || modes[i].fb_var.bits_per_pixel == depth) &&
+             (modes[i].refresh == refresh))
+           {
+             if (depth) modes[i].fb_var.bits_per_pixel = depth;
+
+             if (ioctl(fb, FBIOPUT_VSCREENINFO, &modes[i].fb_var) == -1)
+               perror("ioctl FBIOPUT_VSCREENINFO");
+
+             free(modes);
+             return fb_getmode();
+           }
+       }
+      free(modes);
+    }
+  return mode;
+}
+
+FB_Mode *
+fb_changedepth(FB_Mode *cur_mode, int depth)
+{
+  cur_mode->fb_var.bits_per_pixel = depth;
+
+  if (ioctl(fb, FBIOPUT_VSCREENINFO, &cur_mode->fb_var) == -1)
+    perror("ioctl FBIOPUT_VSCREENINFO");
+
+  free(cur_mode);
+  return fb_getmode();
+}
+
+FB_Mode *
+fb_changeres(FB_Mode *cur_mode, int width, int height, int refresh)
+{
+  FB_Mode *modes;
+  int      i, num_modes;
+
+  modes = fb_list_modes(&num_modes);
+  if (modes)
+    {
+      for (i = 0; i < num_modes; i++)
+       {
+         if ((modes[i].width == width) &&
+             (modes[i].height == height) &&
+             (modes[i].refresh == refresh))
+           {
+             modes[i].fb_var.bits_per_pixel = cur_mode->depth;
+
+             if (ioctl(fb, FBIOPUT_VSCREENINFO, &modes[i].fb_var) == -1)
+               perror("ioctl FBIOPUT_VSCREENINFO");
+
+             free(modes);
+             free(cur_mode);
+             return fb_getmode();
+           }
+       }
+      free(modes);
+    }
+  return cur_mode;
+}
+
+FB_Mode *
+fb_changemode(FB_Mode *cur_mode, int width, int height, int depth, int refresh)
+{
+  FB_Mode *modes;
+  int      i, num_modes;
+
+  modes = fb_list_modes(&num_modes);
+  if (modes)
+    {
+      for (i = 0; i < num_modes; i++)
+       {
+         if ((modes[i].width == width) &&
+             (modes[i].height == height) &&
+             (!depth || modes[i].fb_var.bits_per_pixel == depth) &&
+             (modes[i].refresh == refresh))
+           {
+             if (depth) modes[i].fb_var.bits_per_pixel = depth;
+
+             if (ioctl(fb, FBIOPUT_VSCREENINFO, &modes[i].fb_var) == -1)
+               perror("ioctl FBIOPUT_VSCREENINFO");
+
+             free(modes);
+             free(cur_mode);
+             return fb_getmode();
+           }
+       }
+      free(modes);
+    }
+  return cur_mode;
+}
+
+FB_Mode *
+fb_getmode(void)
+{
+  FB_Mode *mode = NULL;
+  int      hpix, lines, clockrate;
+
+  mode = malloc(sizeof(FB_Mode));
+  /* look what we have now ... */
+
+  if (ioctl(fb, FBIOGET_VSCREENINFO, &mode->fb_var) == -1)
+    {
+      perror("ioctl FBIOGET_VSCREENINFO");
+      exit(1);
+    }
+
+  mode->width = mode->fb_var.xres;
+  mode->height = mode->fb_var.yres;
+  hpix =
+    mode->fb_var.left_margin +
+    mode->fb_var.xres +
+    mode->fb_var.right_margin +
+    mode->fb_var.hsync_len;
+  lines =
+    mode->fb_var.upper_margin +
+    mode->fb_var.yres +
+    mode->fb_var.lower_margin +
+    mode->fb_var.vsync_len;
+   if (mode->fb_var.pixclock > 0)
+     clockrate = 1000000 / mode->fb_var.pixclock;
+   else
+     clockrate = 0;
+   if ((lines > 0) && (hpix > 0))
+     mode->refresh = clockrate * 1000000 / (lines * hpix);
+  switch (mode->fb_var.bits_per_pixel)
+    {
+     case 1:
+      bpp = 1;
+      depth = 1;
+      break;
+     case 4:
+      bpp = 1;
+      depth = 4;
+      break;
+     case 8:
+      bpp = 1;
+      depth = 8;
+      break;
+     case 15:
+     case 16:
+      if (mode->fb_var.green.length == 6)
+       depth = 16;
+      else
+       depth = 15;
+      bpp = 2;
+      break;
+     case 24:
+      depth = 24;
+      bpp = mode->fb_var.bits_per_pixel / 8;
+      break;
+     case 32:
+      depth = 32;
+      bpp = mode->fb_var.bits_per_pixel / 8;
+      break;
+     default:
+      fprintf(stderr, "Cannot handle framebuffer of depth %i\n",
+             mode->fb_var.bits_per_pixel);
+      fb_cleanup();
+       free(mode);
+      return NULL;
+  }
+  mode->depth = depth;
+  mode->bpp = bpp;
+  if (mode->depth == 8)
+    fb_init_palette_332(mode);
+  else
+    fb_init_palette_linear(mode);
+  return mode;
+}
+
+static void
+fb_setvt(int vtno)
+{
+  struct vt_stat vts;
+  char vtname[32];
+
+  if (vtno < 0)
+    {
+
+      if ((ioctl(tty,VT_OPENQRY, &vtno) == -1))
+       {
+         perror("ioctl VT_OPENQRY");
+         exit(1);
+       }
+      if (vtno <= 0 )
+       {
+         perror("ioctl VT_OPENQRY vtno <= 0");
+         exit(1);
+       }
+
+    }
+  vtno &= 0xff;
+  sprintf(vtname, "/dev/tty%i", vtno);
+  chown(vtname, getuid(), getgid());
+  if (access(vtname,R_OK | W_OK) == -1)
+    {
+      fprintf(stderr,"access %s: %s\n",vtname,strerror(errno));
+      exit(1);
+    }
+  open(vtname,O_RDWR);
+
+  if (ioctl(tty, VT_GETSTATE, &vts) == -1)
+    {
+      perror("ioctl VT_GETSTATE");
+      exit(1);
+    }
+
+  orig_vt_no = vts.v_active;
+/*
+  if (ioctl(tty, VT_ACTIVATE, vtno) == -1)
+    {
+      perror("ioctl VT_ACTIVATE");
+      exit(1);
+    }
+  if (ioctl(tty, VT_WAITACTIVE, vtno) == -1)
+    {
+      perror("ioctl VT_WAITACTIVE");
+      exit(1);
+    }
+*/
+
+}
+
+void
+fb_init(int vt, int device)
+{
+   char dev[32];
+
+   tty = 0;
+#if 0
+   if (vt != 0) fb_setvt(vt);
+#endif
+   sprintf(dev, "/dev/fb/%i", device);
+   fb = open(dev, O_RDWR);
+   if ( fb == -1 )
+     {
+       sprintf(dev, "/dev/fb%i", device);
+       fb = open(dev, O_RDWR);
+     }
+   if (fb == -1)
+     {
+       fprintf(stderr,"open %s: %s\n", dev, strerror(errno));
+       fb_cleanup();
+       exit(1);
+     }
+
+   if (ioctl(fb, FBIOGET_VSCREENINFO, &fb_ovar) == -1)
+     {
+       perror("ioctl FBIOGET_VSCREENINFO");
+       exit(1);
+     }
+   if (ioctl(fb, FBIOGET_FSCREENINFO, &fb_fix) == -1)
+     {
+       perror("ioctl FBIOGET_FSCREENINFO");
+       exit(1);
+     }
+
+   if ((fb_ovar.bits_per_pixel == 8) ||
+       (fb_fix.visual == FB_VISUAL_DIRECTCOLOR))
+     {
+
+       if (ioctl(fb,FBIOGETCMAP , &ocmap) == -1)
+         {
+            perror("ioctl FBIOGETCMAP");
+            exit(1);
+         }
+
+     }
+#if 0
+   if (isatty(0))
+      tty = 0;
+   else if ((tty = open("/dev/tty",O_RDWR)) == -1)
+     {
+       fprintf(stderr,"open %s: %s\n", "/dev/tty", strerror(errno));
+       exit(1);
+     }
+   if (tty)
+     {
+       if (ioctl(tty, KDGETMODE, &kd_mode) == -1)
+         {
+            perror("ioctl KDGETMODE");
+            exit(1);
+         }
+       if (ioctl(tty, VT_GETMODE, &vt_omode) == -1)
+         {
+            perror("ioctl VT_GETMODE");
+            exit(1);
+         }
+     }
+#endif
+}
+
+int
+fb_postinit(FB_Mode *mode)
+{
+
+  if (ioctl(fb,FBIOGET_FSCREENINFO, &fb_fix) == -1)
+    {
+      perror("ioctl FBIOGET_FSCREENINFO");
+      fb_cleanup();
+      exit(1);
+    }
+
+  if (fb_fix.type != FB_TYPE_PACKED_PIXELS)
+    {
+      fprintf(stderr,"can handle only packed pixel frame buffers\n");
+      fb_cleanup();
+      exit(1);
+    }
+  mode->mem_offset = (unsigned)(fb_fix.smem_start) & (getpagesize()-1);
+  mode->mem = (unsigned char *)mmap(NULL, fb_fix.smem_len + mode->mem_offset,
+                                PROT_WRITE | PROT_READ, MAP_SHARED, fb, 0);
+  if (mode->mem == MAP_FAILED)
+    {
+      perror("mmap");
+      fb_cleanup();
+  }
+  /* move viewport to upper left corner */
+  if ((mode->fb_var.xoffset != 0) || (mode->fb_var.yoffset != 0))
+    {
+      mode->fb_var.xoffset = 0;
+      mode->fb_var.yoffset = 0;
+
+      if (ioctl(fb, FBIOPAN_DISPLAY, &(mode->fb_var)) == -1)
+       {
+         perror("ioctl FBIOPAN_DISPLAY");
+         fb_cleanup();
+       }
+    }
+#if 0
+   if (tty)
+     {
+       if (ioctl(tty,KDSETMODE, KD_GRAPHICS) == -1)
+         {
+            perror("ioctl KDSETMODE");
+            fb_cleanup();
+         }
+     }
+#endif
+  mode->fb_fd = fb;
+  return fb;
+}
+
+static void
+fb_cleanup(void)
+{
+  /* restore console */
+
+  if (ioctl(fb, FBIOPUT_VSCREENINFO, &fb_ovar) == -1)
+    perror("ioctl FBIOPUT_VSCREENINFO");
+  if (ioctl(fb, FBIOGET_FSCREENINFO, &fb_fix) == -1)
+    perror("ioctl FBIOGET_FSCREENINFO");
+
+  if ((fb_ovar.bits_per_pixel == 8) ||
+      (fb_fix.visual == FB_VISUAL_DIRECTCOLOR))
+    {
+
+      if (ioctl(fb, FBIOPUTCMAP, &ocmap) == -1)
+       perror("ioctl FBIOPUTCMAP");
+
+    }
+  close(fb);
+
+
+   if (tty)
+     {
+       if (ioctl(tty, KDSETMODE, kd_mode) == -1)
+         perror("ioctl KDSETMODE");
+       if (ioctl(tty, VT_SETMODE, &vt_omode) == -1)
+         perror("ioctl VT_SETMODE");
+/*     if ((ioctl(tty, VT_ACTIVATE, orig_vt_no) == -1) && (orig_vt_no))
+         perror("ioctl VT_ACTIVATE");
+*/     }
+
+  close(tty);
+}
diff --git a/src/modules/engines/fb/evas_outbuf.c b/src/modules/engines/fb/evas_outbuf.c
new file mode 100644 (file)
index 0000000..4a85b94
--- /dev/null
@@ -0,0 +1,401 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+#include <sys/time.h>
+#include <sys/utsname.h>
+
+void
+evas_fb_outbuf_fb_init(void)
+{
+}
+
+void
+evas_fb_outbuf_fb_free(Outbuf *buf)
+{
+   /* FIXME: impliment */
+   printf("destroying fb info.. not implemented!!!! WARNING. LEAK!\n");
+   if (buf->priv.back_buf)
+     evas_cache_image_drop(&buf->priv.back_buf->cache_entry);
+   free(buf);
+}
+
+Outbuf *
+evas_fb_outbuf_fb_setup_fb(int w, int h, int rot, Outbuf_Depth depth, int vt_no, int dev_no, int refresh)
+{
+   /* create outbuf struct */
+   /* setup window and/or fb */
+   /* if (dithered) create backbuf */
+   Outbuf *buf;
+   int fb_fd = -1;
+   int fb_depth;
+
+   fb_depth = -1;
+   if (depth == OUTBUF_DEPTH_RGB_16BPP_565_565_DITHERED) fb_depth = 16;
+   else if (depth == OUTBUF_DEPTH_RGB_16BPP_555_555_DITHERED) fb_depth = 15;
+   else if (depth == OUTBUF_DEPTH_RGB_16BPP_565_444_DITHERED) fb_depth = 16;
+   else if (depth == OUTBUF_DEPTH_RGB_16BPP_444_444_DITHERED) fb_depth = 12;
+   else if (depth == OUTBUF_DEPTH_RGB_32BPP_888_8888) fb_depth = 32;
+   else if (depth == OUTBUF_DEPTH_INHERIT) fb_depth = 0;
+   buf = calloc(1, sizeof(Outbuf));
+   if (!buf)
+     return NULL;
+
+   fb_init(vt_no, dev_no);
+   if (rot == 0 || rot == 180)
+     buf->priv.fb.fb = fb_setmode(w, h, fb_depth, refresh);
+   else if (rot == 90 || rot == 270)
+     buf->priv.fb.fb = fb_setmode(h, w, fb_depth, refresh);
+   if (!buf->priv.fb.fb) buf->priv.fb.fb = fb_getmode();
+   if (!buf->priv.fb.fb)
+     {
+       free(buf);
+       return NULL;
+     }
+   fb_fd = fb_postinit(buf->priv.fb.fb);
+
+   if (rot == 0 || rot == 180)
+     {
+       buf->w = buf->priv.fb.fb->width;
+       buf->h = buf->priv.fb.fb->height;
+     }
+   else if (rot == 90 || rot == 270)
+     {
+       buf->w = buf->priv.fb.fb->height;
+       buf->h = buf->priv.fb.fb->width;
+     }
+
+   buf->depth = depth;
+   buf->rot = rot;
+
+     {
+       Gfx_Func_Convert conv_func;
+       int i;
+
+       buf->priv.mask.r = 0;
+       for (i = 0; i < (int)buf->priv.fb.fb->fb_var.red.length; i++)
+         buf->priv.mask.r |= (1 << (buf->priv.fb.fb->fb_var.red.offset + i));
+       buf->priv.mask.g = 0;
+       for (i = 0; i < (int)buf->priv.fb.fb->fb_var.green.length; i++)
+         buf->priv.mask.g |= (1 << (buf->priv.fb.fb->fb_var.green.offset + i));
+       buf->priv.mask.b = 0;
+       for (i = 0; i < (int)buf->priv.fb.fb->fb_var.blue.length; i++)
+         buf->priv.mask.b |= (1 << (buf->priv.fb.fb->fb_var.blue.offset + i));
+
+       conv_func = NULL;
+       if (buf->rot == 0 || buf->rot == 180)
+         conv_func = evas_common_convert_func_get(0, buf->w, buf->h,
+                                      buf->priv.fb.fb->fb_var.bits_per_pixel,
+                                      buf->priv.mask.r,
+                                      buf->priv.mask.g,
+                                      buf->priv.mask.b,
+                                      PAL_MODE_NONE,
+                                      buf->rot);
+       else if (buf->rot == 90 || buf->rot == 270)
+         conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
+                                      buf->priv.fb.fb->fb_var.bits_per_pixel,
+                                      buf->priv.mask.r,
+                                      buf->priv.mask.g,
+                                      buf->priv.mask.b,
+                                      PAL_MODE_NONE,
+                                      buf->rot);
+       if (!conv_func)
+         {
+            free(buf);
+            return NULL;
+         }
+     }
+//   if (buf->priv.fb.fb->fb_var.bits_per_pixel < 24)
+//     buf->priv.back_buf = evas_common_image_create(buf->w, buf->h);
+
+   return buf;
+}
+
+void
+evas_fb_outbuf_fb_blit(Outbuf *buf, int src_x, int src_y, int w, int h, int dst_x, int dst_y)
+{
+   if (buf->priv.back_buf)
+     {
+       evas_common_blit_rectangle(buf->priv.back_buf, buf->priv.back_buf,
+                      src_x, src_y, w, h, dst_x, dst_y);
+       evas_fb_outbuf_fb_update(buf, dst_x, dst_y, w, h);
+     }
+   else
+     {
+       if (buf->priv.fb.fb)
+         {
+            /* FIXME: need to impliment an fb call for "copy area" */
+         }
+     }
+}
+
+void
+evas_fb_outbuf_fb_update(Outbuf *buf, int x, int y, int w, int h)
+{
+   if (!(buf->priv.back_buf)) return;
+   if (buf->priv.fb.fb)
+     {
+       Gfx_Func_Convert conv_func;
+       DATA8 *data;
+
+       data = NULL;
+       conv_func = NULL;
+        if (buf->rot == 0)
+         {
+            data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset +
+              buf->priv.fb.fb->bpp *
+              (x + (y * buf->priv.fb.fb->width));
+            conv_func = evas_common_convert_func_get(data, w, h, buf->priv.fb.fb->fb_var.bits_per_pixel,
+                                         buf->priv.mask.r, buf->priv.mask.g,
+                                         buf->priv.mask.b, PAL_MODE_NONE,
+                                         buf->rot);
+         }
+        else if (buf->rot == 180)
+          {
+             data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset +
+               buf->priv.fb.fb->bpp *
+               (buf->w - x - w + ((buf->h - y - h) * buf->priv.fb.fb->width));
+             conv_func = evas_common_convert_func_get(data, w, h, buf->priv.fb.fb->fb_var.bits_per_pixel,
+                                          buf->priv.mask.r, buf->priv.mask.g,
+                                          buf->priv.mask.b, PAL_MODE_NONE,
+                                          buf->rot);
+          }
+       else if (buf->rot == 270)
+         {
+            data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset +
+              buf->priv.fb.fb->bpp *
+              (buf->h - y - h + (x * buf->priv.fb.fb->width));
+            conv_func = evas_common_convert_func_get(data, h, w, buf->priv.fb.fb->fb_var.bits_per_pixel,
+                                         buf->priv.mask.r, buf->priv.mask.g,
+                                         buf->priv.mask.b, PAL_MODE_NONE,
+                                         buf->rot);
+         }
+       else if (buf->rot == 90)
+         {
+            data = (DATA8 *)buf->priv.fb.fb->mem + buf->priv.fb.fb->mem_offset +
+              buf->priv.fb.fb->bpp *
+              (y + ((buf->w - x - w) * buf->priv.fb.fb->width));
+            conv_func = evas_common_convert_func_get(data, h, w, buf->priv.fb.fb->fb_var.bits_per_pixel,
+                                         buf->priv.mask.r, buf->priv.mask.g,
+                                         buf->priv.mask.b, PAL_MODE_NONE,
+                                         buf->rot);
+         }
+       if (conv_func)
+         {
+            DATA32 *src_data;
+
+            src_data = buf->priv.back_buf->image.data + (y * buf->w) + x;
+            if (buf->rot == 0 || buf->rot == 180)
+              {
+                 conv_func(src_data, data,
+                           buf->w - w,
+                           buf->priv.fb.fb->width - w,
+                           w, h,
+                           x, y, NULL);
+              }
+            else if (buf->rot == 90 || buf->rot == 270)
+              {
+                 conv_func(src_data, data,
+                           buf->w - w,
+                           buf->priv.fb.fb->width - h,
+                           h, w,
+                           x, y, NULL);
+              }
+         }
+     }
+}
+
+RGBA_Image *
+evas_fb_outbuf_fb_new_region_for_update(Outbuf *buf, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch)
+{
+   if (buf->priv.back_buf)
+     {
+       *cx = x; *cy = y; *cw = w; *ch = h;
+       return buf->priv.back_buf;
+     }
+   else
+     {
+       RGBA_Image *im;
+
+       *cx = 0; *cy = 0; *cw = w; *ch = h;
+       im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+        im->cache_entry.flags.alpha = 1;
+        im = (RGBA_Image *) evas_cache_image_size_set(&im->cache_entry, w, h);
+
+        /* handle framebuffers with alpha channel */
+        if (buf->priv.fb.fb->fb_var.transp.length > 0) {
+           memset(im->image.data, 0, w * h * sizeof(DATA32));
+        }
+        return im;
+     }
+   return NULL;
+}
+
+void
+evas_fb_outbuf_fb_free_region_for_update(Outbuf *buf, RGBA_Image *update)
+{
+   if (update != buf->priv.back_buf) evas_cache_image_drop(&update->cache_entry);
+}
+
+void
+evas_fb_outbuf_fb_push_updated_region(Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h)
+{
+   if (!buf->priv.fb.fb) return;
+   if (buf->priv.back_buf)
+     {
+       if (update != buf->priv.back_buf)
+         evas_common_blit_rectangle(update, buf->priv.back_buf,
+                        0, 0, w, h, x, y);
+       evas_fb_outbuf_fb_update(buf, x, y, w, h);
+     }
+   else
+     {
+       Gfx_Func_Convert conv_func;
+       DATA8 *data;
+
+       data = NULL;
+       conv_func = NULL;
+       if (buf->rot == 0)
+         {
+            data = (DATA8 *)buf->priv.fb.fb->mem +
+              buf->priv.fb.fb->mem_offset +
+              buf->priv.fb.fb->bpp *
+              (x + (y * buf->priv.fb.fb->width));
+            conv_func = evas_common_convert_func_get(data, w, h,
+                                         buf->priv.fb.fb->fb_var.bits_per_pixel,
+                                         buf->priv.mask.r, buf->priv.mask.g,
+                                         buf->priv.mask.b, PAL_MODE_NONE,
+                                         buf->rot);
+         }
+        else if (buf->rot == 180)  
+          {
+             data = (DATA8 *)buf->priv.fb.fb->mem +
+               buf->priv.fb.fb->mem_offset +
+               buf->priv.fb.fb->bpp *  
+               (buf->w - x - w + ((buf->h - y - h) * buf->priv.fb.fb->width));
+             conv_func = evas_common_convert_func_get(data, w, h,
+                                          buf->priv.fb.fb->fb_var.bits_per_pixel,
+                                          buf->priv.mask.r, buf->priv.mask.g,
+                                          buf->priv.mask.b, PAL_MODE_NONE,
+                                          buf->rot);
+          }
+       else if (buf->rot == 270)
+         {
+            data = (DATA8 *)buf->priv.fb.fb->mem +
+              buf->priv.fb.fb->mem_offset +
+              buf->priv.fb.fb->bpp *
+              (buf->h - y - h + (x * buf->priv.fb.fb->width));
+            conv_func = evas_common_convert_func_get(data, h, w,
+                                         buf->priv.fb.fb->fb_var.bits_per_pixel,
+                                         buf->priv.mask.r, buf->priv.mask.g,
+                                         buf->priv.mask.b, PAL_MODE_NONE,
+                                         buf->rot);
+         }
+       else if (buf->rot == 90)
+         {
+            data = (DATA8 *)buf->priv.fb.fb->mem +
+              buf->priv.fb.fb->mem_offset +
+              buf->priv.fb.fb->bpp *
+              (y + ((buf->w - x - w) * buf->priv.fb.fb->width));
+            conv_func = evas_common_convert_func_get(data, h, w,
+                                         buf->priv.fb.fb->fb_var.bits_per_pixel,
+                                         buf->priv.mask.r, buf->priv.mask.g,
+                                         buf->priv.mask.b, PAL_MODE_NONE,
+                                         buf->rot);
+         }
+       if (conv_func)
+         {
+            DATA32 *src_data;
+
+            src_data = update->image.data;
+            if (buf->rot == 0 || buf->rot == 180)
+              {
+                 conv_func(src_data, data,
+                           0,
+                           buf->priv.fb.fb->width - w,
+                           w, h,
+                           x, y, NULL);
+              }
+            else if (buf->rot == 90 || buf->rot == 270)
+              {
+                 conv_func(src_data, data,
+                           0,
+                           buf->priv.fb.fb->width - h,
+                           h, w,
+                           x, y, NULL);
+              }
+         }
+     }
+}
+
+void
+evas_fb_outbuf_fb_reconfigure(Outbuf *buf, int w, int h, int rot, Outbuf_Depth depth)
+{
+   if ((w == buf->w) && (h == buf->h) &&
+       (rot == buf->rot) && (depth == buf->depth))
+     return;
+   if (buf->priv.back_buf)
+     {
+       evas_cache_image_drop(&buf->priv.back_buf->cache_entry);
+       buf->priv.back_buf = NULL;
+     }
+   if (buf->priv.fb.fb)
+     {
+       /* FIXME: impliment this */
+     }
+   /* if backbuf delet it */
+   /* resize window or reset fb mode */
+   /* if (dithered) create new backbuf */
+}
+
+int
+evas_fb_outbuf_fb_get_width(Outbuf *buf)
+{
+   return buf->w;
+}
+
+int
+evas_fb_outbuf_fb_get_height(Outbuf *buf)
+{
+   return buf->h;
+}
+
+Outbuf_Depth
+evas_fb_outbuf_fb_get_depth(Outbuf *buf)
+{
+   return buf->depth;
+}
+
+int
+evas_fb_outbuf_fb_get_rot(Outbuf *buf)
+{
+   return buf->rot;
+}
+
+int
+evas_fb_outbuf_fb_get_have_backbuf(Outbuf *buf)
+{
+   if (buf->priv.back_buf) return 1;
+   return 0;
+}
+
+void
+evas_fb_outbuf_fb_set_have_backbuf(Outbuf *buf, int have_backbuf)
+{
+   if (buf->priv.back_buf)
+     {
+       if (have_backbuf) return;
+        evas_cache_image_drop(&buf->priv.back_buf->cache_entry);
+       buf->priv.back_buf = NULL;
+     }
+   else
+     {
+       if (!have_backbuf) return;
+       if (buf->priv.fb.fb)
+         {
+            if (buf->priv.fb.fb->fb_var.bits_per_pixel  < 24)
+              {
+                 buf->priv.back_buf = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+                  buf->priv.back_buf = (RGBA_Image *) evas_cache_image_size_set(&buf->priv.back_buf->cache_entry, buf->w, buf->h);
+              }
+         }
+     }
+}
diff --git a/src/modules/engines/gl_common/.cvsignore b/src/modules/engines/gl_common/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/gl_common/Makefile.am b/src/modules/engines/gl_common/Makefile.am
new file mode 100644 (file)
index 0000000..172403f
--- /dev/null
@@ -0,0 +1,42 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@gl_cflags@
+
+if BUILD_ENGINE_GL_COMMON
+
+noinst_LTLIBRARIES = libevas_engine_gl_common.la
+libevas_engine_gl_common_la_SOURCES  = \
+evas_gl_private.h \
+evas_gl_common.h \
+evas_gl_context.c \
+evas_gl_font.c \
+evas_gl_gradient.c \
+evas_gl_image.c \
+evas_gl_line.c \
+evas_gl_misc.c \
+evas_gl_polygon.c \
+evas_gl_rectangle.c \
+evas_gl_texture.c
+
+libevas_engine_gl_common_la_LIBADD = @gl_libs@ $(top_builddir)/src/lib/libevas.la
+libevas_engine_gl_common_la_DEPENDENCIES = $(top_builddir)/config.h
+
+endif
+
+EXTRA_DIST = \
+evas_gl_private.h \
+evas_gl_context.c \
+evas_gl_font.c \
+evas_gl_gradient.c \
+evas_gl_image.c \
+evas_gl_line.c \
+evas_gl_misc.c \
+evas_gl_polygon.c \
+evas_gl_rectangle.c \
+evas_gl_texture.c
diff --git a/src/modules/engines/gl_common/evas_gl_common.h b/src/modules/engines/gl_common/evas_gl_common.h
new file mode 100644 (file)
index 0000000..0af1d35
--- /dev/null
@@ -0,0 +1,253 @@
+#ifndef EVAS_GL_COMMON_H
+#define EVAS_GL_COMMON_H
+
+/* FIXME: need to handle memory errors */
+/* FIXME: need to handle list errors */
+/* FIXME: need to handle gl errors */
+/* FIXME: need to free textures is texture ream runs out */
+/* FIXME: need to break image textures into meshes if too big */
+/* FIXME: need to page mesh textures if texture alloc fails */
+
+#include "evas_common.h"
+#include "evas_private.h"
+#include "config.h"
+
+#include <stdio.h>
+#include <unistd.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include <sys/time.h>
+#include <unistd.h>
+
+#ifdef BUILD_ENGINE_GL_GLEW
+#include <GL/glew.h>
+#endif /* BUILD_ENGINE_GL_GLEW */
+
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+typedef struct _Evas_GL_Context                      Evas_GL_Context;
+typedef struct _Evas_GL_Texture                      Evas_GL_Texture;
+typedef struct _Evas_GL_Image                        Evas_GL_Image;
+typedef struct _Evas_GL_Polygon                      Evas_GL_Polygon;
+typedef struct _Evas_GL_Polygon_Point                Evas_GL_Polygon_Point;
+typedef struct _Evas_GL_Gradient                     Evas_GL_Gradient;
+typedef struct _Evas_GL_Font_Texture                 Evas_GL_Font_Texture;
+typedef struct _Evas_GL_Font_Texture_Pool            Evas_GL_Font_Texture_Pool;
+typedef struct _Evas_GL_Font_Texture_Pool_Allocation Evas_GL_Font_Texture_Pool_Allocation;
+
+struct _Evas_GL_Context
+{
+   int             w, h;
+
+   unsigned char   dither : 1;
+   unsigned char   blend : 1;
+   unsigned char   blend_alpha : 1;
+   unsigned char   r, g, b, a;
+
+   struct {
+      unsigned char size : 1;
+      unsigned char dither : 1;
+      unsigned char blend : 1;
+      unsigned char color : 1;
+      unsigned char texture : 1;
+      unsigned char clip : 1;
+      unsigned char buf : 1;
+      unsigned char other : 1;
+   } change;
+
+   struct {
+      unsigned char active : 1;
+      int           x, y, w, h;
+   } clip;
+
+   struct {
+      int checked : 1;
+      int sgis_generate_mipmap : 1;
+      int nv_texture_rectangle : 1;
+      int arb_texture_non_power_of_two : 1;
+      int arb_program : 1;
+   } ext;
+
+   GLenum          read_buf;
+   GLenum          write_buf;
+
+   Evas_GL_Texture      *texture;
+   GLuint                font_texture;
+   unsigned char         font_texture_rectangle : 1;
+   unsigned char         texture_program : 1;
+
+   int             max_texture_depth;
+   int             max_texture_size;
+
+   int             references;
+
+   Evas_List      *images;
+   Evas_List      *tex_pool;
+
+   RGBA_Draw_Context  *dc;
+   
+   struct {
+      GLhandleARB  prog, fshad;
+   } yuv422p;
+};
+
+struct _Evas_GL_Texture
+{
+   Evas_GL_Context *gc;
+   int              w, h;
+   int              tw, th;
+   int              uw, uh;
+
+   GLuint           texture, texture2, texture3;
+
+   unsigned char    smooth : 1;
+   unsigned char    changed : 1;
+   unsigned char    have_mipmaps : 1;
+   unsigned char    rectangle : 1;
+   unsigned char    not_power_of_two : 1;
+   unsigned char    opt : 1;
+
+   int              references;
+   GLhandleARB      prog;
+};
+
+struct _Evas_GL_Image
+{
+   Evas_GL_Context *gc;
+   RGBA_Image      *im;
+   Evas_GL_Texture *tex;
+   RGBA_Image_Loadopts load_opts;
+   int              putcount;
+   int              references;
+   struct {
+      int           space;
+      void         *data;
+      unsigned char no_free : 1;
+   } cs;
+   unsigned char    dirty : 1;
+   unsigned char    cached : 1;
+};
+
+struct _Evas_GL_Polygon
+{
+   Evas_List *points;
+   GLuint     dl;
+   Evas_Bool  changed : 1;
+};
+
+struct _Evas_GL_Polygon_Point
+{
+   int x, y;
+};
+
+struct _Evas_GL_Gradient
+{
+   RGBA_Gradient   *grad;
+   Evas_GL_Texture *tex;
+   int              tw, th;
+   unsigned char    changed : 1;
+};
+
+struct _Evas_GL_Font_Texture
+{
+   Evas_GL_Context                      *gc;
+   int                                   x, y, w, h;
+   double                                tx1, ty1, tx2, ty2;
+   int                                   aw, ah;
+   GLuint                                texture;
+   Evas_GL_Font_Texture_Pool            *pool;
+   Evas_GL_Font_Texture_Pool_Allocation *alloc;
+};
+
+struct _Evas_GL_Font_Texture_Pool
+{
+   Evas_GL_Context *gc;
+   int              w, h;
+   GLuint           texture;
+   int              references;
+   unsigned char    rectangle : 1;
+   Evas_List       *allocations;
+};
+
+struct _Evas_GL_Font_Texture_Pool_Allocation
+{
+   Evas_GL_Font_Texture_Pool *pool;
+   int x, y, w, h;
+};
+
+Evas_GL_Context  *evas_gl_common_context_new(void);
+void              evas_gl_common_context_free(Evas_GL_Context *gc);
+void              evas_gl_common_context_use(Evas_GL_Context *gc);
+void              evas_gl_common_context_resize(Evas_GL_Context *gc, int w, int h);
+void              evas_gl_common_context_color_set(Evas_GL_Context *gc, int r, int g, int b, int a);
+void              evas_gl_common_context_blend_set(Evas_GL_Context *gc, int blend);
+void              evas_gl_common_context_dither_set(Evas_GL_Context *gc, int dither);
+void              evas_gl_common_context_texture_set(Evas_GL_Context *gc, Evas_GL_Texture *tex, int smooth, int w, int h);
+void              evas_gl_common_context_font_texture_set(Evas_GL_Context *gc, Evas_GL_Font_Texture *ft);
+void              evas_gl_common_context_clip_set(Evas_GL_Context *gc, int on, int x, int y, int w, int h);
+void              evas_gl_common_context_read_buf_set(Evas_GL_Context *gc, GLenum buf);
+void              evas_gl_common_context_write_buf_set(Evas_GL_Context *gc, GLenum buf);
+
+Evas_GL_Texture  *evas_gl_common_texture_new(Evas_GL_Context *gc, RGBA_Image *im, int smooth);
+void              evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im, int smooth);
+void              evas_gl_common_texture_free(Evas_GL_Texture *tex);
+void              evas_gl_common_texture_mipmaps_build(Evas_GL_Texture *tex, RGBA_Image *im, int smooth);
+Evas_GL_Texture  *evas_gl_common_ycbcr601pl_texture_new(Evas_GL_Context *gc, unsigned char **rows, int w, int h, int smooth);
+void              evas_gl_common_ycbcr601pl_texture_update(Evas_GL_Texture *tex, unsigned char **rows, int w, int h, int smooth);
+    
+Evas_GL_Image    *evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key, Evas_Image_Load_Opts *lo);
+Evas_GL_Image    *evas_gl_common_image_new_from_data(Evas_GL_Context *gc, int w, int h, DATA32 *data, int alpha, int cspace);
+Evas_GL_Image    *evas_gl_common_image_new_from_copied_data(Evas_GL_Context *gc, int w, int h, DATA32 *data, int alpha, int cspace);
+Evas_GL_Image    *evas_gl_common_image_new(Evas_GL_Context *gc, int w, int h, int alpha, int cspace);
+void              evas_gl_common_image_free(Evas_GL_Image *im);
+void              evas_gl_common_image_dirty(Evas_GL_Image *im);
+
+Evas_GL_Polygon  *evas_gl_common_poly_point_add(Evas_GL_Polygon *poly, int x, int y);
+Evas_GL_Polygon  *evas_gl_common_poly_points_clear(Evas_GL_Polygon *poly);
+
+Evas_GL_Gradient *evas_gl_common_gradient_new(void);
+void              evas_gl_common_gradient_free(Evas_GL_Gradient *gr);
+void              evas_gl_common_gradient_color_stop_add(Evas_GL_Gradient *gr, int r, int g, int b, int a, int delta);
+void              evas_gl_common_gradient_alpha_stop_add(Evas_GL_Gradient *gr, int a, int delta);
+void              evas_gl_common_gradient_color_data_set(Evas_GL_Gradient *gr, void *data, int len, int has_alpha);
+void              evas_gl_common_gradient_alpha_data_set(Evas_GL_Gradient *gr, void *alpha_data, int len);
+void              evas_gl_common_gradient_clear(Evas_GL_Gradient *gr);
+void              evas_gl_common_gradient_fill_set(Evas_GL_Gradient *gr, int x, int y, int w, int h);
+void              evas_gl_common_gradient_fill_angle_set(Evas_GL_Gradient *gr, double angle);
+void              evas_gl_common_gradient_fill_spread_set(Evas_GL_Gradient *gr, int spread);
+void              evas_gl_common_gradient_map_angle_set(Evas_GL_Gradient *gr, double angle);
+void              evas_gl_common_gradient_map_offset_set(Evas_GL_Gradient *gr, float offset);
+void              evas_gl_common_gradient_map_direction_set(Evas_GL_Gradient *gr, int direction);
+void              evas_gl_common_gradient_type_set(Evas_GL_Gradient *gr, char *name, char *params);
+int               evas_gl_common_gradient_is_opaque(Evas_GL_Context *gc, Evas_GL_Gradient *gr, int x, int y, int w, int h);
+int               evas_gl_common_gradient_is_visible(Evas_GL_Context *gc, Evas_GL_Gradient *gr, int x, int y, int w, int h);
+void              evas_gl_common_gradient_render_pre(Evas_GL_Context *gc, Evas_GL_Gradient *gr);
+void              evas_gl_common_gradient_render_post(Evas_GL_Gradient *gr);
+void              evas_gl_common_gradient_draw(Evas_GL_Context *gc, Evas_GL_Gradient *gr,
+                                               int x, int y, int w, int h);
+
+void              evas_gl_common_swap_rect(Evas_GL_Context *gc, int x, int y, int w, int h);
+
+void              evas_gl_common_rect_draw(Evas_GL_Context *gc, int x, int y, int w, int h);
+void              evas_gl_common_image_draw(Evas_GL_Context *gc, Evas_GL_Image *im, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, int smooth);
+void              evas_gl_common_line_draw(Evas_GL_Context *gc, int x1, int y1, int x2, int y2);
+void              evas_gl_common_poly_draw(Evas_GL_Context *gc, Evas_GL_Polygon *poly);
+
+Evas_GL_Font_Texture *evas_gl_font_texture_new(Evas_GL_Context *gc, RGBA_Font_Glyph *fg);
+void                  evas_gl_font_texture_free(Evas_GL_Font_Texture *ft);
+void                  evas_gl_font_texture_draw(Evas_GL_Context *gc, void *surface, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y);
+
+/* FIXME:
+ *
+ * for images:
+ * speculative cache for textures too
+ * texture mesh support
+ *
+ * for text/fonts:
+ * need to not render to a texture each time.... this is sloooooow.
+ * but its a "bootstrap" for just right now.
+ */
+
+#endif
diff --git a/src/modules/engines/gl_common/evas_gl_context.c b/src/modules/engines/gl_common/evas_gl_context.c
new file mode 100644 (file)
index 0000000..cca8fd8
--- /dev/null
@@ -0,0 +1,536 @@
+#include "evas_gl_private.h"
+
+static void _evas_gl_common_viewport_set(Evas_GL_Context *gc);
+static void _evas_gl_common_dither_set(Evas_GL_Context *gc);
+static void _evas_gl_common_blend_set(Evas_GL_Context *gc);
+static void _evas_gl_common_color_set(Evas_GL_Context *gc);
+static void _evas_gl_common_texture_set(Evas_GL_Context *gc);
+static void _evas_gl_common_clip_set(Evas_GL_Context *gc);
+static void _evas_gl_common_buf_set(Evas_GL_Context *gc);
+static void _evas_gl_common_other_set(Evas_GL_Context *gc);
+
+static Evas_GL_Context *_evas_gl_common_context = NULL;
+
+Evas_GL_Context *
+evas_gl_common_context_new(void)
+{
+   Evas_GL_Context *gc;
+
+   if (_evas_gl_common_context)
+     {
+       _evas_gl_common_context->references++;
+       return _evas_gl_common_context;
+     }
+   gc = calloc(1, sizeof(Evas_GL_Context));
+   if (!gc) return NULL;
+   gc->max_texture_depth = 32;
+   gc->max_texture_size = 2048;
+   gc->read_buf = GL_BACK;
+   gc->write_buf = GL_BACK;
+   gc->dither = 1;
+   gc->blend = 0;
+   gc->references     = 1;
+
+   gc->change.size    = 1;
+   gc->change.dither  = 1;
+   gc->change.blend   = 1;
+   gc->change.color   = 1;
+   gc->change.texture = 1;
+   gc->change.clip    = 1;
+   gc->change.buf     = 1;
+   gc->change.other   = 1;
+   
+   return gc;
+}
+
+void
+evas_gl_common_context_free(Evas_GL_Context *gc)
+{
+   gc->references--;
+   if (gc->references > 0) return;
+   if (gc->yuv422p.fshad)
+     {
+       glDeleteObjectARB(gc->yuv422p.fshad);
+     }
+   if (gc->yuv422p.prog)
+     {
+       glDeleteObjectARB(gc->yuv422p.prog);
+     }
+   
+   if (gc == _evas_gl_common_context) _evas_gl_common_context = NULL;
+   free(gc);
+}
+
+void
+evas_gl_common_context_use(Evas_GL_Context *gc)
+{
+   if (_evas_gl_common_context == gc) return;
+   if (!gc->ext.checked)
+     {
+       const GLubyte *ext;
+
+       ext = glGetString(GL_EXTENSIONS);
+       if (ext)
+         {
+//          if (strstr(ext, "GL_SGIS_generate_mipmap")) gc->ext.sgis_generate_mipmap = 1;
+//          if (strstr(ext, "GL_NV_texture_rectangle")) gc->ext.nv_texture_rectangle = 1;
+//          if (strstr(ext, "GL_EXT_texture_rectangle")) gc->ext.nv_texture_rectangle = 1;
+            if (strstr(ext, "GL_ARB_texture_non_power_of_two")) gc->ext.arb_texture_non_power_of_two = 1;
+            if (strstr(ext, "GL_ARB_shader_objects") && strstr(ext, "GL_ARB_vertex_shader")
+               && strstr(ext, "GL_ARB_fragment_shader") && strstr(ext, "GL_ARB_shading_language"))
+              gc->ext.arb_program = 1;
+//          printf("GL EXT supported: GL_SGIS_generate_mipmap = %x\n", gc->ext.sgis_generate_mipmap);
+//          printf("GL EXT supported: GL_NV_texture_rectangle = %x\n", gc->ext.nv_texture_rectangle);
+//          printf("GL EXT supported: GL_ARB_texture_non_power_of_two = %x\n", gc->ext.arb_texture_non_power_of_two);
+// this causes at least nvidia's drivers to go into pathological pain when
+// changing textures a lot (doing video). so we wont do anything with this
+// for now, but it does work.
+//          gc->ext.arb_texture_non_power_of_two = 0; printf("DISABLE GL_ARB_texture_non_power_of_two\n");
+//          gc->ext.nv_texture_rectangle = 0; printf("DISABLE GL_NV_texture_rectangle\n");
+         }
+       else
+         {
+//          printf("GL EXT supported: No extensions!!!!!\n");
+         }
+
+        if (gc->ext.arb_program)
+          {
+             gc->yuv422p.prog = glCreateProgramObjectARB();
+             // on an nv 6600gt this is fast - but on a 5500fx its DEAD SLOW!!!!!   
+             // if (!gc->ext.arb_texture_non_power_of_two) return NULL;
+             /* BEGIN LEAK */
+             gc->yuv422p.fshad = glCreateShaderObjectARB(GL_FRAGMENT_SHADER_ARB);
+             {
+                const char *code =
+                   "uniform sampler2D ytex, utex, vtex;\n"
+                   "void main(void) {\n"
+                   "  float r, g, b, y, u, v;\n"
+                   "  y = texture2D(ytex, gl_TexCoord[0].st).r;\n"
+                   "  u = texture2D(utex, gl_TexCoord[0].st).r;\n"
+                   "  v = texture2D(vtex, gl_TexCoord[0].st).r;\n"
+                   "  y = (y - 0.0625) * 1.164;\n"
+                   "  u = u - 0.5;\n"
+                   "  v = v - 0.5;\n"
+                   "  r = y + (1.402   * v);\n"
+                   "  g = y - (0.34414 * u) - (0.71414 * v);\n"
+                   "  b = y + (1.772   * u);\n"
+                   "  gl_FragColor = vec4(r * gl_Color.r * gl_Color.a, g * gl_Color.g * gl_Color.a, b * gl_Color.b * gl_Color.a, gl_Color.a);\n"
+                   "}\n";
+                   glShaderSourceARB(gc->yuv422p.fshad, 1, &code, NULL);
+             }
+             glCompileShaderARB(gc->yuv422p.fshad);
+             glAttachObjectARB(gc->yuv422p.prog, gc->yuv422p.fshad);
+             /* END LEAK - something in the above leaks... beats me what. */
+             glLinkProgramARB(gc->yuv422p.prog);
+   
+             glUseProgramObjectARB(gc->yuv422p.prog);
+             glUniform1iARB(glGetUniformLocationARB(gc->yuv422p.prog, "ytex"), 0);
+             glUniform1iARB(glGetUniformLocationARB(gc->yuv422p.prog, "utex"), 1);
+             glUniform1iARB(glGetUniformLocationARB(gc->yuv422p.prog, "vtex"), 2);
+             glUseProgramObjectARB(0);
+          }
+          
+        gc->ext.checked = 1;
+     }
+   _evas_gl_common_context = gc;
+   _evas_gl_common_viewport_set(gc);
+   _evas_gl_common_dither_set(gc);
+   _evas_gl_common_blend_set(gc);
+   _evas_gl_common_color_set(gc);
+   _evas_gl_common_texture_set(gc);
+   _evas_gl_common_texture_set(gc);
+   _evas_gl_common_clip_set(gc);
+   _evas_gl_common_buf_set(gc);
+   _evas_gl_common_other_set(gc);
+}
+
+void
+evas_gl_common_context_resize(Evas_GL_Context *gc, int w, int h)
+{
+   //if ((gc->w == w) && (gc->h == h)) return;
+   gc->change.size = 1;
+   gc->w = w;
+   gc->h = h;
+   if (_evas_gl_common_context == gc) _evas_gl_common_viewport_set(gc);
+}
+
+void
+evas_gl_common_context_color_set(Evas_GL_Context *gc, int r, int g, int b, int a)
+{
+   if (r < 0) r = 0;
+   else if (r > 255) r = 255;
+   if (g < 0) g = 0;
+   else if (g > 255) g = 255;
+   if (b < 0) b = 0;
+   else if (b > 255) b = 255;
+   if (a < 0) a = 0;
+   else if (a > 255) a = 255;
+   if ((gc->r == r) && (gc->g == g) && (gc->b == b) && (gc->a == a)) return;
+   gc->change.color = 1;
+   gc->r = r;
+   gc->g = g;
+   gc->b = b;
+   gc->a = a;
+   if (_evas_gl_common_context == gc) _evas_gl_common_color_set(gc);
+}
+
+void
+evas_gl_common_context_blend_set(Evas_GL_Context *gc, int blend)
+{
+   if (blend == 1)
+     {
+       if (gc->blend) return;
+       gc->change.blend = 1;
+       gc->blend = 1;
+       gc->blend_alpha = 0;
+     }
+   else if (blend == 2)
+     {
+       if (gc->blend_alpha) return;
+       gc->change.blend = 1;
+       gc->blend = 0;
+       gc->blend_alpha = 1;
+     }
+   else
+     {
+       if ((!gc->blend) && (!gc->blend_alpha)) return;
+       gc->change.blend = 1;
+       gc->blend = 0;
+       gc->blend_alpha = 0;
+     }
+   if (_evas_gl_common_context == gc) _evas_gl_common_blend_set(gc);
+}
+
+void
+evas_gl_common_context_dither_set(Evas_GL_Context *gc, int dither)
+{
+   if (((dither) && (gc->dither)) || ((!dither) && (!gc->dither))) return;
+   gc->change.dither = 1;
+   gc->dither = dither;
+   if (_evas_gl_common_context == gc) _evas_gl_common_dither_set(gc);
+}
+
+void
+evas_gl_common_context_texture_set(Evas_GL_Context *gc, Evas_GL_Texture *tex, int smooth, int w, int h)
+{
+   if (gc->font_texture > 0)
+     {
+       gc->font_texture = 0;
+       gc->change.texture = 1;
+     }
+   if (gc->texture != tex)
+     {
+       if (gc->texture) gc->texture->references--;
+       gc->texture = tex;
+       gc->change.texture = 1;
+       if (tex) tex->references++;
+     }
+   if (tex)
+     {
+       if (((smooth) && (!tex->smooth)) ||
+           ((!smooth) && (tex->smooth)))
+         {
+            tex->smooth = smooth;
+            tex->changed = 1;
+         }
+       tex->uw = w;
+       tex->uh = h;
+     }
+   if (_evas_gl_common_context == gc) _evas_gl_common_texture_set(gc);
+}
+
+void
+evas_gl_common_context_font_texture_set(Evas_GL_Context *gc, Evas_GL_Font_Texture *ft)
+{
+   if (gc->texture)
+     {
+       if (gc->texture) gc->texture->references--;
+       gc->texture = NULL;
+       gc->change.texture = 1;
+     }
+   if (gc->font_texture != ft->texture)
+     {
+       gc->font_texture = ft->texture;
+       gc->font_texture_rectangle = ft->pool->rectangle;
+       gc->change.texture = 1;
+     }
+   if (!gc->change.texture) return;
+   if (_evas_gl_common_context == gc) _evas_gl_common_texture_set(gc);
+}
+
+void
+evas_gl_common_context_clip_set(Evas_GL_Context *gc, int on, int x, int y, int w, int h)
+{
+   if (x < 0)
+     {
+       w += x;
+       x = 0;
+     }
+   if (y < 0)
+     {
+       h += y;
+       y = 0;
+     }
+   if (w < 0) w = 0;
+   if (h < 0) h = 0;
+   if (((!on) && (!gc->clip.active)) ||
+       ((on) && (gc->clip.active) &&
+       (x == gc->clip.x) && (y == gc->clip.y) &&
+       (w == gc->clip.w) && (h == gc->clip.h)))
+     return;
+   gc->change.clip = 1;
+   gc->clip.active = on;
+   gc->clip.x = x;
+   gc->clip.y = y;
+   gc->clip.w = w;
+   gc->clip.h = h;
+   if (_evas_gl_common_context == gc) _evas_gl_common_clip_set(gc);
+}
+
+void
+evas_gl_common_context_read_buf_set(Evas_GL_Context *gc, GLenum buf)
+{
+   if (gc->read_buf == buf) return;
+   gc->change.buf = 1;
+   gc->read_buf = buf;
+   if (_evas_gl_common_context == gc) _evas_gl_common_buf_set(gc);
+}
+
+void
+evas_gl_common_context_write_buf_set(Evas_GL_Context *gc, GLenum buf)
+{
+   if (gc->write_buf == buf) return;
+   gc->change.buf = 1;
+   gc->write_buf = buf;
+   if (_evas_gl_common_context == gc) _evas_gl_common_buf_set(gc);
+}
+
+static void
+_evas_gl_common_viewport_set(Evas_GL_Context *gc)
+{
+   if (!gc->change.size) return;
+   glViewport(0, 0, gc->w, gc->h);
+   glMatrixMode(GL_PROJECTION);
+   glLoadIdentity();
+   glOrtho(0, gc->w, 0, gc->h, -1, 1);
+   glMatrixMode(GL_MODELVIEW);
+   glLoadIdentity();
+   glScalef(1, -1, 1);
+   glTranslatef(0, - gc->h, 0);
+   gc->change.size = 0;
+}
+
+static void
+_evas_gl_common_dither_set(Evas_GL_Context *gc)
+{
+   if (!gc->change.dither) return;
+   if (gc->dither)
+     glEnable(GL_DITHER);
+   else
+     glDisable(GL_DITHER);
+   gc->change.dither = 0;
+}
+
+static void
+_evas_gl_common_blend_set(Evas_GL_Context *gc)
+{
+   if (!gc->change.blend) return;
+   if (gc->blend_alpha)
+     {
+       glEnable(GL_BLEND);
+        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+     }
+   else if (gc->blend)
+     {
+       glEnable(GL_BLEND);
+       glBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_ALPHA);
+     }
+   else
+     glDisable(GL_BLEND);
+   gc->change.blend = 0;
+}
+
+static void
+_evas_gl_common_color_set(Evas_GL_Context *gc)
+{
+   if (!gc->change.color) return;
+   glColor4d((double)gc->r / 255.0,
+            (double)gc->g / 255.0,
+            (double)gc->b / 255.0,
+            (double)gc->a / 255.0);
+   gc->change.color = 0;
+}
+
+static void
+_evas_gl_common_texture_set(Evas_GL_Context *gc)
+{
+   if (!gc->change.texture) return;
+   if (gc->font_texture > 0)
+     {
+       glUseProgramObjectARB(0);
+       if (gc->texture_program)
+         {
+            glUseProgramObjectARB(0);
+            
+            glActiveTexture(GL_TEXTURE1);
+            glDisable(GL_TEXTURE_2D);
+            glActiveTexture(GL_TEXTURE2);
+            glDisable(GL_TEXTURE_2D);
+            gc->texture_program = 0;
+         }
+       if (gc->font_texture_rectangle)
+         {
+            glActiveTexture(GL_TEXTURE0);
+            glEnable(GL_TEXTURE_2D);
+            glEnable(GL_TEXTURE_RECTANGLE_NV);
+            glBindTexture(GL_TEXTURE_RECTANGLE_NV, gc->font_texture);
+         }
+       else
+         {
+            glActiveTexture(GL_TEXTURE0);
+            if (gc->ext.nv_texture_rectangle)
+              glDisable(GL_TEXTURE_RECTANGLE_NV);
+            glEnable(GL_TEXTURE_2D);
+            glBindTexture(GL_TEXTURE_2D, gc->font_texture);
+         }
+     }
+   else if (gc->texture)
+     {
+       if (gc->texture->rectangle)
+         {
+            glActiveTexture(GL_TEXTURE0);
+            glEnable(GL_TEXTURE_2D);
+            glEnable(GL_TEXTURE_RECTANGLE_NV);
+            glBindTexture(GL_TEXTURE_RECTANGLE_NV, gc->texture->texture);
+         }
+       else
+         {
+            if (gc->ext.nv_texture_rectangle) glDisable(GL_TEXTURE_RECTANGLE_NV);
+            if ((gc->texture->prog) && 
+                (gc->texture->texture2) && (gc->texture->texture3))
+              {
+                 gc->texture_program = 1;
+                 glActiveTexture(GL_TEXTURE0);
+                 glEnable(GL_TEXTURE_2D);
+                 glBindTexture(GL_TEXTURE_2D, gc->texture->texture);
+
+                 glActiveTexture(GL_TEXTURE1);
+                 glEnable(GL_TEXTURE_2D);
+                 glBindTexture(GL_TEXTURE_2D, gc->texture->texture2);
+                 
+                 glActiveTexture(GL_TEXTURE2);
+                 glEnable(GL_TEXTURE_2D);
+                 glBindTexture(GL_TEXTURE_2D, gc->texture->texture3);
+                 glUseProgramObjectARB(gc->texture->prog);
+              }
+            else
+              {
+                 if (gc->texture_program)
+                   {
+                      glUseProgramObjectARB(0);
+                      
+                      glActiveTexture(GL_TEXTURE1);
+                      glDisable(GL_TEXTURE_2D);
+                      glActiveTexture(GL_TEXTURE2);
+                      glDisable(GL_TEXTURE_2D);
+                      gc->texture_program = 0;
+                   }
+                  glActiveTexture(GL_TEXTURE0);
+                 glBindTexture(GL_TEXTURE_2D, gc->texture->texture);
+                 glEnable(GL_TEXTURE_2D);
+              }
+         }
+       if (gc->texture->rectangle)
+         {
+            if (gc->texture->changed)
+              {
+                 gc->texture->changed = 0;
+              }
+         }
+       else
+         {
+            if (gc->texture->changed)
+              {
+                 if (gc->texture->rectangle)
+                   {
+                      if (gc->texture->smooth)
+                        {
+                           glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+                           glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+                        }
+                      else
+                        {
+                           glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+                           glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+                        }
+                   }
+                 else
+                   {
+                      if (gc->texture->smooth)
+                        {
+                           glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
+                           glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+//                         if (gc->texture->have_mipmaps)
+//                           glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
+//                         else
+                             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+                        }
+                      else
+                        {
+                           glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+                           glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+                        }
+                   }
+                 gc->texture->changed = 0;
+              }
+         }
+     }
+   else if (gc->font_texture == 0)
+     {
+       glDisable(GL_TEXTURE_2D);
+       if (gc->ext.nv_texture_rectangle) glDisable(GL_TEXTURE_RECTANGLE_NV);
+     }
+   gc->change.texture = 0;
+}
+
+static void
+_evas_gl_common_clip_set(Evas_GL_Context *gc)
+{
+   if (!gc->change.clip) return;
+   /* might be faster using clip planes ??? glClipPlane() */
+   if (gc->clip.active)
+     {
+       glEnable(GL_SCISSOR_TEST);
+       glScissor(gc->clip.x,
+                 gc->h - gc->clip.y - gc->clip.h,
+                 gc->clip.w,
+                 gc->clip.h);
+     }
+   else
+     glDisable(GL_SCISSOR_TEST);
+   gc->change.clip = 0;
+}
+
+static void
+_evas_gl_common_buf_set(Evas_GL_Context *gc)
+{
+   if (!gc->change.buf) return;
+   glDrawBuffer(gc->write_buf);
+   glReadBuffer(gc->read_buf);
+   gc->change.buf = 0;
+}
+
+static void
+_evas_gl_common_other_set(Evas_GL_Context *gc)
+{
+   if (!gc->change.other) return;
+   glShadeModel(GL_FLAT);
+   glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_FASTEST);
+//   glHint(GL_LINE_SMOOTH_HINT, GL_NICEST);
+   glDisable(GL_LINE_SMOOTH);
+   glDisable(GL_CULL_FACE);
+   glDepthMask(GL_FALSE);
+   glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
+   glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
+   gc->change.other = 0;
+}
diff --git a/src/modules/engines/gl_common/evas_gl_font.c b/src/modules/engines/gl_common/evas_gl_font.c
new file mode 100644 (file)
index 0000000..b1bc82b
--- /dev/null
@@ -0,0 +1,468 @@
+#include "evas_gl_private.h"
+
+static Evas_GL_Font_Texture_Pool_Allocation *_evas_gl_font_texture_pool_request(Evas_GL_Context *gc, int w, int h);
+static void                                  _evas_gl_font_texture_pool_relinquish(Evas_GL_Font_Texture_Pool_Allocation *fa);
+static int                                   _evas_gl_font_texture_pool_rect_find(Evas_GL_Font_Texture_Pool *fp, int w, int h, int *x, int *y);
+
+Evas_GL_Font_Texture *
+evas_gl_font_texture_new(Evas_GL_Context *gc, RGBA_Font_Glyph *fg)
+{
+   Evas_GL_Font_Texture *ft;
+   DATA8 *data;
+   int w, h, j;
+
+   int nw;
+   DATA8 *ndata;
+
+   if (fg->ext_dat) return fg->ext_dat;
+   
+   w = fg->glyph_out->bitmap.width;
+   h = fg->glyph_out->bitmap.rows;
+   
+   if ((w == 0) || (h == 0)) return NULL;
+   ft = calloc(1, sizeof(Evas_GL_Font_Texture));
+   if (!ft) return NULL;
+
+   data = fg->glyph_out->bitmap.buffer;
+   j = fg->glyph_out->bitmap.pitch;
+   if (j < w) j = w;
+
+   ft->gc = gc;
+
+   /* bug bug! glTexSubImage2D need a multiple of 4 pixels horizontally! :( */
+   nw = ((w + 3) / 4 ) * 4;
+   ndata = malloc(nw *h);
+   if (!ndata)
+     {
+       free(ft);
+       return NULL;
+     }
+   if (fg->glyph_out->bitmap.num_grays == 256)
+     {
+       int x, y;
+       DATA8 *p1, *p2;
+
+       for (y = 0; y < h; y++)
+         {
+            p1 = data + (j * y);
+            p2 = ndata + (nw * y);
+            for (x = 0; x < w; x++)
+              {
+                 *p2 = *p1;
+                 p1++;
+                 p2++;
+              }
+         }
+     }
+   else if (fg->glyph_out->bitmap.num_grays == 0)
+     {
+       DATA8 *tmpbuf = NULL, *dp, *tp, bits;
+       int bi, bj, end;
+       const DATA8 bitrepl[2] = {0x0, 0xff};
+       
+       tmpbuf = malloc(w);
+       if (tmpbuf)
+         {
+            int x, y;
+            DATA8 *p1, *p2;
+            
+            for (y = 0; y < h; y++)
+              {
+                 p1 = tmpbuf;
+                 p2 = ndata + (nw * y);
+                 tp = tmpbuf;
+                 dp = data + (y * fg->glyph_out->bitmap.pitch);
+                 for (bi = 0; bi < w; bi += 8)
+                   {
+                      bits = *dp;
+                      if ((w - bi) < 8) end = w - bi;
+                      else end = 8;
+                      for (bj = 0; bj < end; bj++)
+                        {
+                           *tp = bitrepl[(bits >> (7 - bj)) & 0x1];
+                           tp++;
+                        }
+                      dp++;
+                   }
+                 for (x = 0; x < w; x++)
+                   {
+                      *p2 = *p1;
+                      p1++;
+                      p2++;
+                   }
+              }
+            free(tmpbuf);
+         }
+     }
+   
+   /* where in pool texture does this live */
+   ft->w = w;
+   ft->h = h;
+   ft->aw = nw;
+   ft->ah = h;
+
+   ft->alloc = _evas_gl_font_texture_pool_request(gc, ft->aw, ft->ah);
+   if (!ft->alloc)
+     {
+       free(ndata);
+       free(ft);
+       return NULL;
+     }
+   ft->x = ft->alloc->x;
+   ft->y = ft->alloc->y;
+   ft->pool = ft->alloc->pool;
+   ft->texture =  ft->pool->texture;
+   if (ft->pool->rectangle)
+     {
+       glEnable(GL_TEXTURE_RECTANGLE_NV);
+       glBindTexture(GL_TEXTURE_RECTANGLE_NV, ft->texture);
+       glTexSubImage2D(GL_TEXTURE_RECTANGLE_NV, 0,
+                       ft->x, ft->y, nw, ft->h,
+                       GL_ALPHA, GL_UNSIGNED_BYTE, ndata);
+     }
+   else
+     {
+       glBindTexture(GL_TEXTURE_2D, ft->texture);
+       glTexSubImage2D(GL_TEXTURE_2D, 0,
+                       ft->x, ft->y, nw, ft->h,
+                       GL_ALPHA, GL_UNSIGNED_BYTE, ndata);
+     }
+   if (ndata) free(ndata);
+   if (gc->texture)
+     {
+       if (gc->texture) gc->texture->references--;
+       gc->texture = NULL;
+     }
+   gc->font_texture = ft->texture;
+   gc->font_texture_rectangle = ft->pool->rectangle;
+   gc->change.texture = 1;
+   if (ft->pool->rectangle)
+     {
+       ft->tx1 = ft->x;
+       ft->ty1 = ft->y;
+       ft->tx2 = ft->x + ft->w;
+       ft->ty2 = ft->y + ft->h;
+     }
+   else
+     {
+       ft->tx1 = (double)(ft->x        ) / (double)(ft->pool->w);
+       ft->ty1 = (double)(ft->y        ) / (double)(ft->pool->h);
+       ft->tx2 = (double)(ft->x + ft->w) / (double)(ft->pool->w);
+       ft->ty2 = (double)(ft->y + ft->h) / (double)(ft->pool->h);
+     }
+
+   return ft;
+}
+
+void
+evas_gl_font_texture_free(Evas_GL_Font_Texture *ft)
+{
+   if (!ft) return;
+   if (ft->gc->font_texture == ft->texture)
+     {
+       ft->gc->font_texture = 0;
+       ft->gc->change.texture = 1;
+     }
+   _evas_gl_font_texture_pool_relinquish(ft->alloc);
+   free(ft);
+}
+
+void
+evas_gl_font_texture_draw(Evas_GL_Context *gc, void *surface, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y)
+{
+   Evas_GL_Font_Texture *ft;
+
+   if (dc != gc->dc)
+       return;
+
+   /* 35 */
+   ft = fg->ext_dat;
+   if (!ft) return;
+//   if (surface == 0)
+     {
+       int r, g, b, a;
+
+       a = (dc->col.col >> 24) & 0xff;
+       if (a == 0) return;
+       r = (dc->col.col >> 16) & 0xff;
+       g = (dc->col.col >> 8 ) & 0xff;
+       b = (dc->col.col      ) & 0xff;
+       /* have to un-premul the color - as we are using blend mode 2 (non-premul blend) */
+       r = (r * 255) / a;
+       g = (g * 255) / a;
+       b = (b * 255) / a;
+       evas_gl_common_context_color_set(gc, r, g, b, a);
+       if (dc->clip.use)
+         evas_gl_common_context_clip_set(gc, 1,
+                                         dc->clip.x, dc->clip.y,
+                                         dc->clip.w, dc->clip.h);
+       else
+         evas_gl_common_context_clip_set(gc, 0,
+                                         0, 0, 0, 0);
+       evas_gl_common_context_blend_set(gc, 2);
+       evas_gl_common_context_read_buf_set(gc, GL_BACK);
+       evas_gl_common_context_write_buf_set(gc, GL_BACK);
+     }
+   /* 32 */
+   evas_gl_common_context_font_texture_set(gc, ft);
+   /* 32 */
+   glBegin(GL_QUADS);
+   glTexCoord2d(ft->tx1, ft->ty1); glVertex2i(x        , y        );
+   glTexCoord2d(ft->tx2, ft->ty1); glVertex2i(x + ft->w, y        );
+   glTexCoord2d(ft->tx2, ft->ty2); glVertex2i(x + ft->w, y + ft->h);
+   glTexCoord2d(ft->tx1, ft->ty2); glVertex2i(x        , y + ft->h);
+   glEnd();
+   /* 28 */
+}
+
+static Evas_GL_Font_Texture_Pool_Allocation *
+_evas_gl_font_texture_pool_request(Evas_GL_Context *gc, int w, int h)
+{
+   Evas_List *l;
+   Evas_GL_Font_Texture_Pool_Allocation *fa;
+   Evas_GL_Font_Texture_Pool *fp;
+   int minw = 256;
+   int minh = 256;
+   int shift;
+
+   for (l = gc->tex_pool; l; l = l->next)
+     {
+       int x, y;
+
+       fp = l->data;
+       if (_evas_gl_font_texture_pool_rect_find(fp, w, h, &x, &y))
+         {
+            fa = calloc(1, sizeof(Evas_GL_Font_Texture_Pool_Allocation));
+            if (!fa) return NULL;
+            fa->pool = fp;
+            fa->x = x;
+            fa->y = y;
+            fa->w = w;
+            fa->h = h;
+            fp->allocations = evas_list_prepend(fp->allocations, fa);
+            if (evas_list_alloc_error())
+              {
+                 free(fa);
+                 return NULL;
+              }
+            fp->references++;
+            return fa;
+         }
+     }
+   /* need new font texture pool entry */
+   /* minimum size either minw x minh OR the size of glyph up to power 2 */
+   if (w > minw)
+     {
+       minw = w;
+       shift = 1; while (minw > shift) shift = shift << 1; minw = shift;
+     }
+   if (h > minh)
+     {
+       minh = h;
+       shift = 1; while (minh > shift) shift = shift << 1; minh = shift;
+     }
+
+   fp = calloc(1, sizeof(Evas_GL_Font_Texture_Pool));
+   if (!fp) return NULL;
+   gc->tex_pool = evas_list_append(gc->tex_pool, fp);
+   if (evas_list_alloc_error())
+     {
+       free(fp);
+       return NULL;
+     }
+   fp->gc = gc;
+   fp->w = minw;
+   fp->h = minh;
+   if (gc->ext.nv_texture_rectangle) fp->rectangle = 1;
+
+   /* we dont want this mipmapped if sgis_generate_mipmap will mipmap it */
+   if (gc->ext.sgis_generate_mipmap)
+     glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_FALSE);
+//   glEnable(GL_TEXTURE_2D);
+   if (fp->rectangle)
+     {
+       glEnable(GL_TEXTURE_RECTANGLE_NV);
+       glGenTextures(1, &(fp->texture));
+       /* FIXME check gl error */
+
+       glBindTexture(GL_TEXTURE_RECTANGLE_NV, fp->texture);
+       glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_S, GL_REPEAT);
+       glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_WRAP_T, GL_REPEAT);
+       glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+       glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+       glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0,
+                    GL_ALPHA4, fp->w, fp->h, 0,
+                    GL_ALPHA, GL_UNSIGNED_BYTE, NULL);
+       /* FIXME check gl error */
+     }
+   else
+     {
+       glEnable(GL_TEXTURE_2D);
+       glGenTextures(1, &(fp->texture));
+       /* FIXME check gl error */
+
+       glBindTexture(GL_TEXTURE_2D, fp->texture);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+       glTexImage2D(GL_TEXTURE_2D, 0,
+                    GL_ALPHA4, fp->w, fp->h, 0,
+                    GL_ALPHA, GL_UNSIGNED_BYTE, NULL);
+       /* FIXME check gl error */
+     }
+
+   /* new allocation entirely */
+   fa = calloc(1, sizeof(Evas_GL_Font_Texture_Pool_Allocation));
+   if (!fa)
+     {
+       gc->tex_pool = evas_list_remove(gc->tex_pool, fp);
+       glDeleteTextures(1, &(fp->texture));
+       free(fp);
+       return NULL;
+     }
+   fa->pool = fp;
+   fa->x = 0;
+   fa->y = 0;
+   fa->w = w;
+   fa->h = h;
+   fp->allocations = evas_list_prepend(fp->allocations, fa);
+   if (evas_list_alloc_error())
+     {
+       printf("alloc prob\n");
+       gc->tex_pool = evas_list_remove(gc->tex_pool, fp);
+       glDeleteTextures(1, &(fp->texture));
+       free(fa);
+       free(fp);
+       return NULL;
+     }
+   fp->references++;
+   return fa;
+}
+
+static void
+_evas_gl_font_texture_pool_relinquish(Evas_GL_Font_Texture_Pool_Allocation *fa)
+{
+   fa->pool->allocations = evas_list_remove(fa->pool->allocations, fa);
+   fa->pool->references--;
+   if (fa->pool->references <= 0)
+     {
+       fa->pool->gc->tex_pool =
+         evas_list_remove(fa->pool->gc->tex_pool, fa->pool);
+       glDeleteTextures(1, &(fa->pool->texture));
+       free(fa->pool);
+     }
+   free(fa);
+}
+
+static int
+_evas_gl_font_texture_pool_rect_find(Evas_GL_Font_Texture_Pool *fp,
+                                    int w, int h,
+                                    int *x, int *y)
+{
+   Evas_List *l;
+
+   if ((w > fp->w) || (h > fp->h)) return 0;
+   for (l = fp->allocations; l; l = l->next)
+     {
+       Evas_GL_Font_Texture_Pool_Allocation *fa;
+       Evas_List *l2;
+       int tx, ty, tw, th;
+       int t1, t2;
+       int intersects;
+
+       fa = l->data;
+       t1 = t2 = 1;
+       if ((fa->x + fa->w + w) > fp->w) t1 = 0;
+       if ((fa->y + h) > fp->h) t1 = 0;
+       if ((fa->y + fa->h + h) > fp->h) t2 = 0;
+       if ((fa->x + w) > fp->w) t2 = 0;
+       intersects = 0;
+       if (t1)
+         {
+            /* 1. try here:
+             * +----++--+
+             * |AAAA||??|
+             * |AAAA|+--+
+             * |AAAA|
+             * +----+
+             */
+            tx = fa->x + fa->w;
+            ty = fa->y;
+            tw = w;
+            th = h;
+            for (l2 = fp->allocations; l2; l2 = l2->next)
+              {
+                 Evas_GL_Font_Texture_Pool_Allocation *fa2;
+                 int rx, ry, rw, rh;
+
+                 /* dont do the rect we are just using as our offset */
+                 if (l2 == l) continue;
+                 fa2 = l2->data;
+                 rx = fa2->x;
+                 ry = fa2->y;
+                 rw = fa2->w;
+                 rh = fa2->h;
+                 if (RECTS_INTERSECT(tx, ty, tw, th, rx, ry, rw, rh))
+                   {
+                      intersects = 1;
+                      break;
+                   }
+              }
+            if (!intersects)
+              {
+                 *x = tx;
+                 *y = ty;
+                 return 1;
+              }
+         }
+       intersects = 0;
+       if (t2)
+         {
+            /* 2. try here:
+             * +----+
+             * |AAAA|
+             * |AAAA|
+             * |AAAA|
+             * +----+
+             * +--+
+             * |??|
+             * +--+
+             */
+            tx = fa->x;
+            ty = fa->y + fa->h;
+            tw = w;
+            th = h;
+            for (l2 = fp->allocations; l2; l2 = l2->next)
+              {
+                 Evas_GL_Font_Texture_Pool_Allocation *fa2;
+                 int rx, ry, rw, rh;
+
+                 /* dont do the rect we are just using as our offset */
+                 if (l2 == l) continue;
+                 /* hmmm crash here on mga... l2->data seems broken */
+                 /* so far it looks like memory corruption, but i can't */
+                 /* use valgrind to inspect any further due to the dri */
+                 /* hardware stuff :( */
+                 fa2 = l2->data;
+
+                 rx = fa2->x;
+                 ry = fa2->y;
+                 rw = fa2->w;
+                 rh = fa2->h;
+                 if (RECTS_INTERSECT(tx, ty, tw, th, rx, ry, rw, rh))
+                   {
+                      intersects = 1;
+                      break;
+                   }
+              }
+            if (!intersects)
+              {
+                 *x = tx;
+                 *y = ty;
+                 return 1;
+              }
+         }
+     }
+   return 0;
+}
diff --git a/src/modules/engines/gl_common/evas_gl_gradient.c b/src/modules/engines/gl_common/evas_gl_gradient.c
new file mode 100644 (file)
index 0000000..7c34f74
--- /dev/null
@@ -0,0 +1,256 @@
+#include "evas_gl_private.h"
+
+Evas_GL_Gradient *
+evas_gl_common_gradient_new(void)
+{
+   Evas_GL_Gradient *gr;
+
+   gr = calloc(1, sizeof(Evas_GL_Gradient));
+   if (!gr) return NULL;
+   gr->grad = evas_common_gradient_new();
+   if (!gr->grad) { free(gr);  return NULL; }
+   gr->changed = 1;
+   return gr;
+}
+
+void
+evas_gl_common_gradient_free(Evas_GL_Gradient *gr)
+{
+   if (!gr) return;
+   if (gr->grad) evas_common_gradient_free(gr->grad);
+   if (gr->tex) evas_gl_common_texture_free(gr->tex);
+   free(gr);
+}
+
+void
+evas_gl_common_gradient_color_stop_add(Evas_GL_Gradient *gr, int r, int g, int b, int a, int delta)
+{
+   if (!gr) return;
+   evas_common_gradient_color_stop_add(gr->grad, r, g, b, a, delta);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_alpha_stop_add(Evas_GL_Gradient *gr, int a, int delta)
+{
+   if (!gr) return;
+   evas_common_gradient_alpha_stop_add(gr->grad, a, delta);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_color_data_set(Evas_GL_Gradient *gr, void * map, int len, int has_alpha)
+{
+   if (!gr) return;
+   evas_common_gradient_color_data_set(gr->grad, map, len, has_alpha);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_alpha_data_set(Evas_GL_Gradient *gr, void * alpha_map, int len)
+{
+   if (!gr) return;
+   evas_common_gradient_alpha_data_set(gr->grad, alpha_map, len);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_clear(Evas_GL_Gradient *gr)
+{
+   if (!gr) return;
+   evas_common_gradient_clear(gr->grad);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_fill_set(Evas_GL_Gradient *gr, int x, int y, int w, int h)
+{
+   if (!gr) return;
+   evas_common_gradient_fill_set(gr->grad, x, y, w, h);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_fill_angle_set(Evas_GL_Gradient *gr, double angle)
+{
+   if (!gr) return;
+   evas_common_gradient_fill_angle_set(gr->grad, angle);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_fill_spread_set(Evas_GL_Gradient *gr, int spread)
+{
+   if (!gr) return;
+   evas_common_gradient_fill_spread_set(gr->grad, spread);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_map_angle_set(Evas_GL_Gradient *gr, double angle)
+{
+   if (!gr) return;
+   evas_common_gradient_map_angle_set(gr->grad, angle);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_map_offset_set(Evas_GL_Gradient *gr, float offset)
+{
+   if (!gr) return;
+   evas_common_gradient_map_offset_set(gr->grad, offset);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_map_direction_set(Evas_GL_Gradient *gr, int direction)
+{
+   if (!gr) return;
+   evas_common_gradient_map_direction_set(gr->grad, direction);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_type_set(Evas_GL_Gradient *gr, char *name, char *params)
+{
+   if (!gr) return;
+   evas_common_gradient_type_set(gr->grad, name, params);
+   gr->changed = 1;
+}
+
+int
+evas_gl_common_gradient_is_opaque(Evas_GL_Context *gc, Evas_GL_Gradient *gr,
+                                  int x, int y, int w, int h)
+{
+   RGBA_Draw_Context *dc;
+
+   if (!gc || !gc->dc || !gr || !gr->grad || !gr->grad->type.geometer)  return 0;
+   dc = gc->dc;
+   return !(gr->grad->type.geometer->has_alpha(gr->grad, dc->render_op) |
+              gr->grad->type.geometer->has_mask(gr->grad, dc->render_op));
+}
+
+int
+evas_gl_common_gradient_is_visible(Evas_GL_Context *gc, Evas_GL_Gradient *gr,
+                                   int x, int y, int w, int h)
+{
+   if (!gc || !gr)  return 0;
+   return 1;
+}
+
+void
+evas_gl_common_gradient_render_pre(Evas_GL_Context *gc, Evas_GL_Gradient *gr)
+{
+   int  len;
+   RGBA_Draw_Context *dc;
+   RGBA_Gradient     *grad;
+
+   if (!gr || !gc || !gr->grad || !gc->dc) return;
+   grad = gr->grad;
+   dc = gc->dc;
+   if (!grad->type.geometer) return;
+   grad->type.geometer->geom_set(grad);
+   len = grad->type.geometer->get_map_len(grad);
+   evas_common_gradient_map(dc, grad, len);
+   gr->changed = 1;
+}
+
+void
+evas_gl_common_gradient_render_post(Evas_GL_Gradient *gr)
+{
+}
+
+void
+evas_gl_common_gradient_draw(Evas_GL_Context *gc,
+                            Evas_GL_Gradient *gr,
+                            int x, int y, int w, int h)
+{
+   int r, g, b, a;
+   RGBA_Draw_Context *dc;
+   double  tx2, ty2;
+   
+   if ((w < 1) || (h < 1)) return;
+   if (!gr || !gc || !gc->dc) return;
+   if (!gr->grad || !gr->grad->type.geometer) return;
+   
+   dc = gc->dc;
+   if (dc->mul.use)
+     {
+       a = (dc->mul.col >> 24) & 0xff;
+       r = (dc->mul.col >> 16) & 0xff;
+       g = (dc->mul.col >> 8 ) & 0xff;
+       b = (dc->mul.col      ) & 0xff;
+     }
+   else
+     {
+       r = g = b = a = 255;
+     }
+   evas_gl_common_context_color_set(gc, r, g, b, a);
+   
+   a = !evas_gl_common_gradient_is_opaque(gc, gr, x, y, w, h);
+   evas_gl_common_context_blend_set(gc, a);
+   
+   if (dc->clip.use)
+     evas_gl_common_context_clip_set(gc, 1,
+                                    dc->clip.x, dc->clip.y,
+                                    dc->clip.w, dc->clip.h);
+   else
+     evas_gl_common_context_clip_set(gc, 0,
+                                    0, 0, 0, 0);
+   
+   if (!gr->tex) gr->changed = 1;
+   if (((w != gr->tw) || (h != gr->th)) && gr->tex)
+     {
+       evas_gl_common_texture_free(gr->tex);
+       gr->tex = NULL;
+       gr->changed = 1;
+     }
+   if (gr->changed)
+     {
+       RGBA_Image *im;
+       int op = dc->render_op, cuse = dc->clip.use;
+
+       im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+        if (!im) return;
+        im = (RGBA_Image *) evas_cache_image_size_set(&im->cache_entry, w, h);
+       dc->render_op = _EVAS_RENDER_FILL;
+       dc->clip.use = 0;
+       evas_common_gradient_draw(im, dc, 0, 0, w, h, gr->grad);
+       if (!gr->tex)
+         gr->tex = evas_gl_common_texture_new(gc, im, 0);
+       else
+         evas_gl_common_texture_update(gr->tex, im, 0);
+
+       evas_cache_image_drop(&im->cache_entry);
+
+       dc->render_op = op;
+       dc->clip.use = cuse;
+       if (!gr->tex) return;
+     }
+   
+   if (gr->tex->rectangle)
+     {
+       tx2 = w;
+       ty2 = h;
+     }
+   else
+     {
+       tx2 = (double)w / (double)(gr->tex->w);
+       ty2 = (double)h / (double)(gr->tex->h);
+     }
+   
+   evas_gl_common_context_texture_set(gc, gr->tex, 0,
+                                     gr->tex->tw, gr->tex->th);
+   
+   evas_gl_common_context_read_buf_set(gc, GL_BACK);
+   evas_gl_common_context_write_buf_set(gc, GL_BACK);
+   
+   glBegin(GL_QUADS);
+   glTexCoord2d(0.0,  0.0); glVertex2i(x, y);
+   glTexCoord2d(tx2,  0.0); glVertex2i(x + w, y);
+   glTexCoord2d(tx2,  ty2); glVertex2i(x + w, y + h);
+   glTexCoord2d(0.0,  ty2); glVertex2i(x, y + h);
+   glEnd();
+   gr->changed = 0;
+   gr->tw = w;  gr->th = h;
+}
diff --git a/src/modules/engines/gl_common/evas_gl_image.c b/src/modules/engines/gl_common/evas_gl_image.c
new file mode 100644 (file)
index 0000000..a5069e9
--- /dev/null
@@ -0,0 +1,330 @@
+#include "evas_gl_private.h"
+
+Evas_GL_Image *
+evas_gl_common_image_load(Evas_GL_Context *gc, const char *file, const char *key, Evas_Image_Load_Opts *lo)
+{
+   Evas_GL_Image        *im;
+   RGBA_Image           *im_im;
+   Evas_List            *l;
+
+   im_im = evas_common_load_image_from_file(file, key, lo);
+   if (!im_im) return NULL;
+
+   for (l = gc->images; l; l = l->next)
+     {
+       im = l->data;
+       if (im->im == im_im)
+         {
+             evas_cache_image_drop(&im_im->cache_entry);
+            gc->images = evas_list_remove_list(gc->images, l);
+            gc->images = evas_list_prepend(gc->images, im);
+            im->references++;
+            return im;
+         }
+     }
+
+   im = calloc(1, sizeof(Evas_GL_Image));
+   if (!im) return NULL;
+   im->references = 1;
+   im->im = im_im;
+   if (!im->im)
+     {
+       free(im);
+       return NULL;
+     }
+   im->gc = gc;
+   im->references = 1;
+   im->cached = 1;
+   im->cs.space = EVAS_COLORSPACE_ARGB8888;
+   if (lo) im->load_opts = *lo;
+   gc->images = evas_list_prepend(gc->images, im);
+   return im;
+}
+
+Evas_GL_Image *
+evas_gl_common_image_new_from_data(Evas_GL_Context *gc, int w, int h, DATA32 *data, int alpha, int cspace)
+{
+   Evas_GL_Image *im;
+   Evas_List *l;
+
+   for (l = gc->images; l; l = l->next)
+     {
+       im = l->data;
+       if (((void *)(im->im->image.data) == (void *)data) &&
+           (im->im->cache_entry.w == w) &&
+           (im->im->cache_entry.h == h))
+         {
+            gc->images = evas_list_remove_list(gc->images, l);
+            gc->images = evas_list_prepend(gc->images, im);
+            im->references++;
+            return im;
+         }
+     }
+   im = calloc(1, sizeof(Evas_GL_Image));
+   if (!im) return NULL;
+   im->references = 1;
+   im->im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
+                                                 w, h, data, alpha, cspace);
+   if (!im->im)
+     {
+       free(im);
+       return NULL;
+     }
+   im->gc = gc;
+   im->cs.space = cspace;
+   switch (cspace)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+        break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+        if (im->tex) evas_gl_common_texture_free(im->tex);
+       im->tex = NULL;
+       im->cs.data = data;
+       im->cs.no_free = 1;
+       break;
+      default:
+       abort();
+       break;
+     }
+   /*
+    im->cached = 1;
+    gc->images = evas_list_prepend(gc->images, im);
+    */
+   printf("new im cs = %i\n", im->cs.space);
+   return im;
+}
+
+Evas_GL_Image *
+evas_gl_common_image_new_from_copied_data(Evas_GL_Context *gc, int w, int h, DATA32 *data, int alpha, int cspace)
+{
+   Evas_GL_Image *im;
+
+   im = calloc(1, sizeof(Evas_GL_Image));
+   if (!im) return NULL;
+   im->references = 1;
+   im->im = (RGBA_Image *) evas_cache_image_copied_data(evas_common_image_cache_get(),
+                                                        w, h, data, alpha, cspace);
+   if (!im->im)
+     {
+       free(im);
+       return NULL;
+     }
+   im->gc = gc;
+   im->cs.space = cspace;
+   switch (cspace)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+        if (im->tex) evas_gl_common_texture_free(im->tex);
+       im->tex = NULL;
+       im->cs.no_free = 0;
+        im->cs.data = calloc(1, im->im->cache_entry.h * sizeof(unsigned char *) * 2);
+        if ((data) && (im->cs.data))
+         memcpy(im->cs.data, data, im->im->cache_entry.h * sizeof(unsigned char *) * 2);
+       break;
+      default:
+       abort();
+       break;
+     }
+   return im;
+}
+
+Evas_GL_Image *
+evas_gl_common_image_new(Evas_GL_Context *gc, int w, int h, int alpha, int cspace)
+{
+   Evas_GL_Image *im;
+
+   im = calloc(1, sizeof(Evas_GL_Image));
+   if (!im) return NULL;
+   im->references = 1;
+   im->im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+   if (!im->im)
+     {
+       free(im);
+       return NULL;
+     }
+   im->gc = gc;
+   im->cs.space = cspace;
+   im->im->cache_entry.flags.alpha = alpha ? 1 : 0;
+   evas_cache_image_colorspace(&im->im->cache_entry, cspace);
+   im->im = (RGBA_Image *) evas_cache_image_size_set(&im->im->cache_entry, w, h);
+   switch (cspace)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+//        if (im->tex) evas_gl_common_texture_free(im->tex);
+       im->tex = NULL;
+       im->cs.no_free = 0;
+        im->cs.data = calloc(1, im->im->cache_entry.h * sizeof(unsigned char *) * 2);
+       break;
+      default:
+       abort();
+       break;
+     }
+   return im;
+}
+
+void
+evas_gl_common_image_free(Evas_GL_Image *im)
+{
+   im->references--;
+   if (im->references > 0) return;
+
+   if (im->cs.data)
+     {
+       if (!im->cs.no_free) free(im->cs.data);
+     }
+   if (im->cached) im->gc->images = evas_list_remove(im->gc->images, im);
+   if (im->im) evas_cache_image_drop(&im->im->cache_entry);
+   if (im->tex) evas_gl_common_texture_free(im->tex);
+   free(im);
+}
+
+void
+evas_gl_common_image_dirty(Evas_GL_Image *im)
+{
+   im->im = (RGBA_Image *) evas_cache_image_dirty(&im->im->cache_entry, 0, 0, im->im->cache_entry.w, im->im->cache_entry.h);
+   im->dirty = 1;
+}
+
+void
+evas_gl_common_image_draw(Evas_GL_Context *gc, Evas_GL_Image *im, int sx, int sy, int sw, int sh, int dx, int dy, int dw, int dh, int smooth)
+{
+   RGBA_Draw_Context *dc;
+   int r, g, b, a;
+   double tx1, ty1, tx2, ty2;
+   int    ow, oh;
+   int    space;
+
+   if (sw < 1) sw = 1;
+   if (sh < 1) sh = 1;
+   dc = gc->dc;
+   if (dc->mul.use)
+     {
+       a = (dc->mul.col >> 24) & 0xff;
+       r = (dc->mul.col >> 16) & 0xff;
+       g = (dc->mul.col >> 8 ) & 0xff;
+       b = (dc->mul.col      ) & 0xff;
+     }
+   else
+     {
+       r = g = b = a = 255;
+     }
+   
+   if (!gc->ext.arb_program && (im->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL
+      || im->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL))
+     {
+        if ((im->cs.data) && (*((unsigned char **)im->cs.data)))
+          {
+             if (im->dirty || !im->im->image.data)
+               {
+                  free(im->im->image.data);
+                  im->im->image.data = malloc(im->im->cache_entry.w * im->im->cache_entry.h * sizeof(DATA32));
+                  if (im->im->image.data)
+                    evas_common_convert_yuv_420p_601_rgba(im->cs.data, 
+                                                          (void *)im->im->image.data,
+                                                          im->im->cache_entry.w, im->im->cache_entry.h);
+               }
+          }
+        space = EVAS_COLORSPACE_ARGB8888;
+     }
+   else
+     space = im->cs.space;
+   
+/* leak in this switch */
+   switch (space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+        evas_cache_image_load_data(&im->im->cache_entry);
+       if ((im->tex) && (im->dirty))
+         {
+            evas_gl_common_texture_update(im->tex, im->im, im->tex->smooth);
+            im->dirty = 0;
+         }
+       if (!im->tex)
+         im->tex = evas_gl_common_texture_new(gc, im->im, smooth);
+       ow = (dw * im->tex->tw) / sw;
+       oh = (dh * im->tex->th) / sh;
+       if (im->tex->rectangle)
+         {
+            tx1 = sx;
+            ty1 = sy;
+            tx2 = sx + sw;
+            ty2 = sy + sh;
+         }
+       else
+         {
+            tx1 = (double)(sx     ) / (double)(im->tex->w);
+            ty1 = (double)(sy     ) / (double)(im->tex->h);
+            tx2 = (double)(sx + sw) / (double)(im->tex->w);
+            ty2 = (double)(sy + sh) / (double)(im->tex->h);
+         }
+       evas_gl_common_context_texture_set(gc, im->tex, smooth, ow, oh);
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       if ((im->tex) && (im->dirty))
+         {
+            evas_gl_common_ycbcr601pl_texture_update(im->tex, im->cs.data, im->im->cache_entry.w, im->im->cache_entry.h, smooth);
+            im->dirty = 0;
+         }
+       if ((!im->tex) && (im->cs.data) && (*((unsigned char **)im->cs.data)))
+         {
+            im->tex = evas_gl_common_ycbcr601pl_texture_new(gc, im->cs.data, im->im->cache_entry.w, im->im->cache_entry.h, smooth);
+         }
+       if (!im->tex) return;
+       ow = (dw * im->tex->tw) / sw;
+       oh = (dh * im->tex->th) / sh;
+       if (im->tex->rectangle)
+         {
+            tx1 = sx;
+            ty1 = sy;
+            tx2 = sx + sw;
+            ty2 = sy + sh;
+         }
+       else
+         {
+            tx1 = (double)(sx     ) / (double)(im->tex->w);
+            ty1 = (double)(sy     ) / (double)(im->tex->h);
+            tx2 = (double)(sx + sw) / (double)(im->tex->w);
+            ty2 = (double)(sy + sh) / (double)(im->tex->h);
+         }
+       evas_gl_common_context_texture_set(gc, im->tex, smooth, ow, oh);
+
+       break;
+      default:
+       abort();
+       break;
+    }
+
+//   if ((!im->tex->have_mipmaps) && (smooth) &&
+//       ((im->tex->uw < im->tex->tw) || (im->tex->uh < im->tex->th)) &&
+//       (!gc->ext.sgis_generate_mipmap))
+//     evas_gl_common_texture_mipmaps_build(im->tex, im->im, smooth);
+
+   evas_gl_common_context_color_set(gc, r, g, b, a);
+   if ((a < 255) || im->im->cache_entry.flags.alpha)
+     evas_gl_common_context_blend_set(gc, 1);
+   else evas_gl_common_context_blend_set(gc, 0);
+   if (dc->clip.use)
+     evas_gl_common_context_clip_set(gc, 1,
+                                    dc->clip.x, dc->clip.y,
+                                    dc->clip.w, dc->clip.h);
+   else
+     evas_gl_common_context_clip_set(gc, 0,
+                                    0, 0, 0, 0);
+   evas_gl_common_context_read_buf_set(gc, GL_BACK);
+   evas_gl_common_context_write_buf_set(gc, GL_BACK);
+
+   glBegin(GL_QUADS);
+   glTexCoord2d(tx1, ty1); glVertex2i(dx     , dy     );
+   glTexCoord2d(tx2, ty1); glVertex2i(dx + dw, dy     );
+   glTexCoord2d(tx2, ty2); glVertex2i(dx + dw, dy + dh);
+   glTexCoord2d(tx1, ty2); glVertex2i(dx     , dy + dh);
+   glEnd();
+}
diff --git a/src/modules/engines/gl_common/evas_gl_line.c b/src/modules/engines/gl_common/evas_gl_line.c
new file mode 100644 (file)
index 0000000..238892a
--- /dev/null
@@ -0,0 +1,30 @@
+#include "evas_gl_private.h"
+
+void
+evas_gl_common_line_draw(Evas_GL_Context *gc, int x1, int y1, int x2, int y2)
+{
+   int r, g, b, a;
+   RGBA_Draw_Context *dc = gc->dc;
+
+   a = (dc->col.col >> 24) & 0xff;
+   r = (dc->col.col >> 16) & 0xff;
+   g = (dc->col.col >> 8 ) & 0xff;
+   b = (dc->col.col      ) & 0xff;
+   evas_gl_common_context_color_set(gc, r, g, b, a);
+   if (a < 255) evas_gl_common_context_blend_set(gc, 1);
+   else evas_gl_common_context_blend_set(gc, 0);
+   if (dc->clip.use)
+     evas_gl_common_context_clip_set(gc, 1,
+                                    dc->clip.x, dc->clip.y,
+                                    dc->clip.w, dc->clip.h);
+   else
+     evas_gl_common_context_clip_set(gc, 0,
+                                    0, 0, 0, 0);
+   evas_gl_common_context_texture_set(gc, NULL, 0, 0, 0);
+   evas_gl_common_context_read_buf_set(gc, GL_BACK);
+   evas_gl_common_context_write_buf_set(gc, GL_BACK);
+   glBegin(GL_LINES);
+   glVertex2i(x1, y1);
+   glVertex2i(x2, y2);
+   glEnd();
+}
diff --git a/src/modules/engines/gl_common/evas_gl_misc.c b/src/modules/engines/gl_common/evas_gl_misc.c
new file mode 100644 (file)
index 0000000..66483c7
--- /dev/null
@@ -0,0 +1,14 @@
+#include "evas_gl_private.h"
+
+void
+evas_gl_common_swap_rect(Evas_GL_Context *gc, int x, int y, int w, int h)
+{
+   evas_gl_common_context_read_buf_set(gc, GL_BACK);
+   evas_gl_common_context_write_buf_set(gc, GL_FRONT);
+   evas_gl_common_context_blend_set(gc, 0);
+   evas_gl_common_context_clip_set(gc, 0, 0, 0, 0, 0);
+   evas_gl_common_context_dither_set(gc, 0);
+   y = gc->h - y - h;
+   glRasterPos2i(x, gc->h - y);
+   glCopyPixels(x, y, w, h, GL_COLOR);
+}
diff --git a/src/modules/engines/gl_common/evas_gl_polygon.c b/src/modules/engines/gl_common/evas_gl_polygon.c
new file mode 100644 (file)
index 0000000..43bf0b3
--- /dev/null
@@ -0,0 +1,169 @@
+#include "evas_gl_private.h"
+
+#define GLU_TESS
+
+Evas_GL_Polygon *
+evas_gl_common_poly_point_add(Evas_GL_Polygon *poly, int x, int y)
+{
+   Evas_GL_Polygon_Point *pt;
+
+   if (!poly) poly = calloc(1, sizeof(Evas_GL_Polygon));
+   if (!poly) return NULL;
+   pt = calloc(1, sizeof(Evas_GL_Polygon_Point));
+   if (!pt) return NULL;
+   pt->x = x;
+   pt->y = y;
+   poly->points = evas_list_append(poly->points, pt);
+   poly->changed = 1;
+   return poly;
+}
+
+Evas_GL_Polygon *
+evas_gl_common_poly_points_clear(Evas_GL_Polygon *poly)
+{
+   if (!poly) return NULL;
+   while (poly->points)
+     {
+       Evas_GL_Polygon_Point *pt;
+
+       pt = poly->points->data;
+       poly->points = evas_list_remove(poly->points, pt);
+       free(pt);
+     }
+   if (poly->dl > 0) glDeleteLists(poly->dl, 1);
+   free(poly);
+   return NULL;
+}
+
+#ifdef GLU_TESS
+static void _evas_gl_tess_begin_cb(GLenum which);
+static void _evas_gl_tess_end_cb(void);
+static void _evas_gl_tess_error_cb(GLenum errorcode);
+static void _evas_gl_tess_vertex_cb(GLvoid *vertex);
+static void _evas_gl_tess_combine_cb(GLdouble coords[3], GLdouble *vertex_data[4], GLfloat weight[4], GLdouble **data_out);
+
+static void
+_evas_gl_tess_begin_cb(GLenum which)
+{
+   glBegin(which);
+}
+
+static void
+_evas_gl_tess_end_cb(void)
+{
+   glEnd();
+}
+
+static void
+_evas_gl_tess_error_cb(GLenum errorcode)
+{
+}
+
+static void
+_evas_gl_tess_vertex_cb(GLvoid *vertex)
+{
+   GLdouble *v;
+
+   v = vertex;
+   glVertex2d(v[0], v[1]);
+}
+
+static void
+_evas_gl_tess_combine_cb(GLdouble coords[3], GLdouble *vertex_data[4], GLfloat weight[4], GLdouble **data_out)
+{
+   GLdouble *vertex;
+
+   vertex = (GLdouble *) malloc(6 * sizeof(GLdouble));
+   vertex[0] = coords[0];
+   vertex[1] = coords[1];
+   *data_out = vertex;
+}
+#endif
+
+void
+evas_gl_common_poly_draw(Evas_GL_Context *gc, Evas_GL_Polygon *poly)
+{
+   int r, g, b, a;
+   Evas_List *l;
+   static void *tess = NULL;
+   GLdouble *glp = NULL;
+   int i, num;
+   RGBA_Draw_Context *dc = gc->dc;
+
+   a = (dc->col.col >> 24) & 0xff;
+   r = (dc->col.col >> 16) & 0xff;
+   g = (dc->col.col >> 8 ) & 0xff;
+   b = (dc->col.col      ) & 0xff;
+   evas_gl_common_context_color_set(gc, r, g, b, a);
+   if (a < 255) evas_gl_common_context_blend_set(gc, 1);
+   else evas_gl_common_context_blend_set(gc, 0);
+   if (dc->clip.use)
+     evas_gl_common_context_clip_set(gc, 1,
+                                    dc->clip.x, dc->clip.y,
+                                    dc->clip.w, dc->clip.h);
+   else
+     evas_gl_common_context_clip_set(gc, 0,
+                                    0, 0, 0, 0);
+   evas_gl_common_context_texture_set(gc, NULL, 0, 0, 0);
+   evas_gl_common_context_read_buf_set(gc, GL_BACK);
+   evas_gl_common_context_write_buf_set(gc, GL_BACK);
+
+   if (poly->changed || poly->dl <= 0)
+     {
+       if (poly->dl > 0) glDeleteLists(poly->dl, 1);
+       poly->dl = glGenLists(1);
+
+       glNewList(poly->dl, GL_COMPILE_AND_EXECUTE);
+#ifdef GLU_TESS
+       if (!tess)
+         {
+            tess = gluNewTess();
+
+            gluTessCallback(tess, GLU_TESS_BEGIN, _evas_gl_tess_begin_cb);
+            gluTessCallback(tess, GLU_TESS_END, _evas_gl_tess_end_cb);
+            gluTessCallback(tess, GLU_TESS_ERROR, _evas_gl_tess_error_cb);
+            gluTessCallback(tess, GLU_TESS_VERTEX, _evas_gl_tess_vertex_cb);
+            gluTessCallback(tess, GLU_TESS_COMBINE, _evas_gl_tess_combine_cb);
+         }
+       num = 0;
+       num = evas_list_count(poly->points);
+       i = 0;
+       glp = malloc(num * 6 * sizeof(GLdouble));
+       gluTessNormal(tess, 0, 0, 1);
+       gluTessProperty(tess, GLU_TESS_WINDING_RULE, GLU_TESS_WINDING_ODD);
+       gluTessBeginPolygon(tess, NULL);
+       gluTessBeginContour(tess);
+       for (l = poly->points; l; l = l->next)
+         {
+            Evas_GL_Polygon_Point *p;
+
+            p = l->data;
+            glp[i++] = p->x;
+            glp[i++] = p->y;
+            glp[i++] = 0;
+            gluTessVertex(tess, &(glp[i - 3]), &(glp[i - 3]));
+            i += 3;
+         }
+       gluTessEndContour(tess);
+       gluTessEndPolygon(tess);
+       free(glp);
+#else
+       glBegin(GL_POLYGON);
+       for (l = poly->points; l; l = l->next)
+         {
+            Evas_GL_Polygon_Point *p;
+
+            p = l->data;
+            glVertex2i(p->x, p->y);
+         }
+       glEnd();
+#endif
+       glEndList();
+
+       poly->changed = 0;
+
+       return ;
+     }
+
+   glCallList(poly->dl);
+}
diff --git a/src/modules/engines/gl_common/evas_gl_private.h b/src/modules/engines/gl_common/evas_gl_private.h
new file mode 100644 (file)
index 0000000..8ad9f81
--- /dev/null
@@ -0,0 +1,90 @@
+#ifndef _EVAS_GL_PRIVATE_H
+#define _EVAS_GL_PRIVATE_H
+
+#include "evas_gl_common.h"
+
+#ifndef GL_TEXTURE_RECTANGLE_NV
+#define GL_TEXTURE_RECTANGLE_NV 0x84f5
+#endif
+
+#if 0
+#ifndef GL_WRITE_PIXEL_DATA_RANGE_NV
+/* nvidia extensions */
+extern void *glXAllocateMemoryNV(GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
+extern void glPixelDataRangeNV(GLenum target, GLsizei length, void *pointer);
+extern void glFlushPixelDataRangeNV(GLenum target);
+# define GL_WRITE_PIXEL_DATA_RANGE_NV 0x8878
+#define GL_READ_PIXEL_DATA_RANGE_NV 0x8879
+#endif
+
+/* arb extensions */
+void glBindBufferARB(GLenum target, uint buffer);
+void glDeleteBuffersARB(GLsizei n, const uint *buffers);
+void glGenBuffersARB(GLsizei n, GLuint *buffers);
+GLboolean glIsBufferARB(GLuint buffer);
+
+void glBufferDataARB(GLenum target, GLsizei size, const void *data,
+                                       GLenum usage);
+void glBufferSubDataARB(GLenum target, int offset, GLsizei size,
+                                             const void *data);
+void glGetBufferSubDataARB(GLenum target, int offset,
+                                                   GLsizei size, void *data);
+
+void *glMapBufferARB(GLenum target, GLenum access);
+GLboolean glUnmapBufferARB(GLenum target);
+
+void glGetBufferParameterivARB(GLenum target, GLenum pname, int *params);
+void glGetBufferPointervARB(GLenum target, GLenum pname, void **params);
+
+#define GL_ARRAY_BUFFER_ARB                             0x8892
+#define GL_ELEMENT_ARRAY_BUFFER_ARB                     0x8893
+#define GL_ARRAY_BUFFER_BINDING_ARB                     0x8894
+#define GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB             0x8895
+#define GL_VERTEX_ARRAY_BUFFER_BINDING_ARB              0x8896
+#define GL_BNORMAL_ARRAY_BUFFER_BINDING_ARB             0x8897
+#define GL_COLOR_ARRAY_BUFFER_BINDING_ARB               0x8898
+#define GL_INDEX_ARRAY_BUFFER_BINDING_ARB               0x8899
+#define GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB       0x889A
+#define GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB           0x889B
+#define GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB     0x889C
+#define GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB      0x889D
+#define GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB              0x889E
+#define GL_VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB       0x889F
+#define GL_STREAM_DRAW_ARB                              0x88E0
+#define GL_STREAM_READ_ARB                              0x88E1
+#define GL_STREAM_COPY_ARB                              0x88E2
+#define GL_STATIC_DRAW_ARB                              0x88E4
+#define GL_STATIC_READ_ARB                              0x88E5
+#define GL_STATIC_COPY_ARB                              0x88E6
+#define GL_DYNAMIC_DRAW_ARB                             0x88E8
+#define GL_DYNAMIC_READ_ARB                             0x88E9
+#define GL_DYNAMIC_COPY_ARB                             0x88EA
+#define GL_READ_ONLY_ARB                                0x88B8
+#define GL_WRITE_ONLY_ARB                               0x88B9
+#define GL_READ_WRITE_ARB                               0x88BA
+#define GL_BUFFER_SIZE_ARB                              0x8764
+#define GL_BUFFER_USAGE_ARB                             0x8765
+#define GL_BUFFER_ACCESS_ARB                            0x88BB
+#define GL_BUFFER_MAPPED_ARB                            0x88BC
+#define GL_BUFFER_MAP_POINTER_ARB                       0x88BD
+#endif
+
+
+
+
+
+
+/* evas ARGB pixel config */
+#define NATIVE_PIX_FORMAT GL_BGRA
+
+/* Big endian systems require the texture know the byte order is reversed */
+#ifdef WORDS_BIGENDIAN
+#define NATIVE_PIX_UNIT   GL_UNSIGNED_INT_8_8_8_8_REV
+#else
+/* fast on vidia */
+/*#define NATIVE_PIX_UNIT   GL_UNSIGNED_INT_8_8_8_8_REV*/
+/* fast on ati compared to GL_UNSIGNED_INT_8_8_8_8_REV */
+#define NATIVE_PIX_UNIT   GL_UNSIGNED_BYTE
+#endif
+
+#endif
diff --git a/src/modules/engines/gl_common/evas_gl_rectangle.c b/src/modules/engines/gl_common/evas_gl_rectangle.c
new file mode 100644 (file)
index 0000000..e429b66
--- /dev/null
@@ -0,0 +1,32 @@
+#include "evas_gl_private.h"
+
+void
+evas_gl_common_rect_draw(Evas_GL_Context *gc, int x, int y, int w, int h)
+{
+   int r, g, b, a;
+   RGBA_Draw_Context *dc = gc->dc;
+
+   a = (dc->col.col >> 24) & 0xff;
+   r = (dc->col.col >> 16) & 0xff;
+   g = (dc->col.col >> 8 ) & 0xff;
+   b = (dc->col.col      ) & 0xff;
+   evas_gl_common_context_color_set(gc, r, g, b, a);
+   if (a < 255) evas_gl_common_context_blend_set(gc, 1);
+   else evas_gl_common_context_blend_set(gc, 0);
+   if (dc->clip.use)
+     evas_gl_common_context_clip_set(gc, 1,
+                                    dc->clip.x, dc->clip.y,
+                                    dc->clip.w, dc->clip.h);
+   else
+     evas_gl_common_context_clip_set(gc, 0,
+                                    0, 0, 0, 0);
+   evas_gl_common_context_texture_set(gc, NULL, 0, 0, 0);
+   evas_gl_common_context_read_buf_set(gc, GL_BACK);
+   evas_gl_common_context_write_buf_set(gc, GL_BACK);
+   glBegin(GL_QUADS);
+   glVertex2i(x, y);
+   glVertex2i(x + w, y);
+   glVertex2i(x + w, y + h);
+   glVertex2i(x, y + h);
+   glEnd();
+}
diff --git a/src/modules/engines/gl_common/evas_gl_texture.c b/src/modules/engines/gl_common/evas_gl_texture.c
new file mode 100644 (file)
index 0000000..0962fc3
--- /dev/null
@@ -0,0 +1,620 @@
+#include "evas_gl_private.h"
+
+Evas_GL_Texture *
+evas_gl_common_texture_new(Evas_GL_Context *gc, RGBA_Image *im, int smooth)
+{
+   Evas_GL_Texture *tex;
+   DATA32 *im_data;
+   int im_w, im_h;
+   int tw, th;
+   int shift;
+   GLenum pixfmt, texfmt;
+
+   tex = calloc(1, sizeof(Evas_GL_Texture));
+   if (!tex) return NULL;
+
+   if ((gc->ext.nv_texture_rectangle) &&
+       (!(gc->ext.arb_texture_non_power_of_two &&
+         gc->ext.sgis_generate_mipmap)))
+     {
+       tex->gc = gc;
+       tex->w = im->cache_entry.w;
+       tex->h = im->cache_entry.h;
+       tex->rectangle = 1;
+       tex->tw = im->cache_entry.w;
+       tex->th = im->cache_entry.h;
+       tex->references = 0;
+       tex->smooth = smooth;
+       tex->changed = 1;
+
+       glEnable(GL_TEXTURE_2D);
+       glEnable(GL_TEXTURE_RECTANGLE_NV);
+       glGenTextures(1, &(tex->texture));
+       glBindTexture(GL_TEXTURE_RECTANGLE_NV, tex->texture);
+       if (smooth)
+         {
+            glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+            glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+         }
+       else
+         {
+            glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+            glTexParameteri(GL_TEXTURE_RECTANGLE_NV, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+         }
+
+       if (gc->texture) gc->texture->references--;
+       gc->texture = tex;
+       gc->change.texture = 1;
+       tex->references++;
+
+       if (im->cache_entry.flags.alpha) texfmt = GL_RGBA8;
+       else texfmt = GL_RGB8;
+       pixfmt = NATIVE_PIX_FORMAT;
+
+       glTexImage2D(GL_TEXTURE_RECTANGLE_NV, 0,
+                    texfmt, tex->w, tex->h, 0,
+                    pixfmt, NATIVE_PIX_UNIT, im->image.data);
+       return tex;
+     }
+
+   if ((gc->ext.arb_texture_non_power_of_two) && (gc->ext.sgis_generate_mipmap))
+     {
+       tw = im->cache_entry.w;
+       th = im->cache_entry.h;
+     }
+   else
+     {
+       shift = 1; while (im->cache_entry.w > shift) shift = shift << 1; tw = shift;
+       shift = 1; while (im->cache_entry.h > shift) shift = shift << 1; th = shift;
+     }
+   tex->gc = gc;
+   tex->w = tw;
+   tex->h = th;
+   tex->tw = im->cache_entry.w;
+   tex->th = im->cache_entry.h;
+   tex->references = 0;
+   tex->smooth = 0;
+   tex->changed = 1;
+   glEnable(GL_TEXTURE_2D);
+   glGenTextures(1, &(tex->texture));
+   glBindTexture(GL_TEXTURE_2D, tex->texture);
+   if (gc->texture) gc->texture->references--;
+   gc->texture = tex;
+   gc->change.texture = 1;
+   tex->references++;
+
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
+
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+
+   im_data = im->image.data;
+   im_w = im->cache_entry.w;
+   im_h = im->cache_entry.h;
+
+   if (im->cache_entry.flags.alpha) texfmt = GL_RGBA8;
+   else texfmt = GL_RGB8;
+   pixfmt = NATIVE_PIX_FORMAT;
+
+   glTexImage2D(GL_TEXTURE_2D, 0,
+               texfmt, tw, th, 0,
+               pixfmt, NATIVE_PIX_UNIT, NULL);
+/*   
+     {
+       int ttw, tth;
+       int l;
+
+       ttw = tw;
+       tth = th;
+       l = 0;
+       while ((ttw > 1) || (tth > 1))
+         {
+            l++;
+            ttw /= 2;
+            tth /= 2;
+            if (ttw < 1) ttw = 1;
+            if (tth < 1) tth = 1;
+            glTexImage2D(GL_TEXTURE_2D, l,
+                         texfmt, ttw, tth, 0,
+                         pixfmt, NATIVE_PIX_UNIT, NULL);
+         }
+     }
+ */
+   if (gc->ext.sgis_generate_mipmap)
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);
+       tex->have_mipmaps = 1;
+     }
+   glTexSubImage2D(GL_TEXTURE_2D, 0,
+                  0, 0, im_w, im_h,
+                  pixfmt, NATIVE_PIX_UNIT,
+                  im_data);
+   if (im_w < tw)
+     glTexSubImage2D(GL_TEXTURE_2D, 0,
+                    im_w, 0, 1, im_h,
+                    pixfmt, NATIVE_PIX_UNIT,
+                    im_data + im_w - 1);
+   if (im_h < th)
+     glTexSubImage2D(GL_TEXTURE_2D, 0,
+                    0, im_h, im_w, 1,
+                    pixfmt, NATIVE_PIX_UNIT,
+                    im_data + (im_w * (im_h - 1)));
+   if ((im_w < tw) && (im_h < th))
+     glTexSubImage2D(GL_TEXTURE_2D, 0,
+                    im_w, im_h, 1, 1,
+                    pixfmt, NATIVE_PIX_UNIT,
+                    im_data + (im_w * (im_h - 1)) + im_w - 1);
+   return tex;
+}
+
+void
+evas_gl_common_texture_update(Evas_GL_Texture *tex, RGBA_Image *im, int smooth)
+{
+   DATA32 *im_data;
+   int im_w, im_h;
+   int tw, th;
+   GLenum pixfmt, texfmt, target;
+
+   if (tex->rectangle)
+     {
+       void *data;
+
+       glEnable(GL_TEXTURE_2D);
+       glEnable(GL_TEXTURE_RECTANGLE_NV);
+       glBindTexture(GL_TEXTURE_RECTANGLE_NV, tex->texture);
+
+       data = im->image.data;
+#if 0 // trying the glXAllocateMemoryNV() thing but its abysmally slow
+       tmp = glXAllocateMemoryNV(tex->w * tex->h * sizeof(DATA32),
+                                 0.0, 1.0, 1.0);
+       if (tmp)
+         {
+            glEnableClientState(GL_WRITE_PIXEL_DATA_RANGE_NV);
+            glPixelDataRangeNV(GL_WRITE_PIXEL_DATA_RANGE_NV,
+                               tex->w * tex->h * sizeof(DATA32),
+                               tmp);
+//          evas_common_copy_pixels_rgba_to_rgba_mmx2(im->image->data, tmp,
+//                                                    tex->w * tex->h);
+            memcpy(tmp, im->image.data,
+                   tex->w * tex->h * sizeof(DATA32));
+            data = tmp;
+         }
+#endif
+       if (tex->gc->texture) tex->gc->texture->references--;
+       tex->gc->texture = tex;
+       tex->gc->change.texture = 1;
+       tex->references++;
+
+       if (im->cache_entry.flags.alpha) texfmt = GL_RGBA8;
+       else texfmt = GL_RGB8;
+       pixfmt = NATIVE_PIX_FORMAT;
+
+       glTexSubImage2D(GL_TEXTURE_RECTANGLE_NV, 0,
+                       0, 0, tex->w, tex->h,
+                       pixfmt, NATIVE_PIX_UNIT,
+                       data);
+#if 0 // trying the glXAllocateMemoryNV() thing but its abysmally slow
+       if (tmp)
+         {
+            glFlushPixelDataRangeNV(GL_WRITE_PIXEL_DATA_RANGE_NV);
+            glXFreeMemoryNV(tmp);
+         }
+#endif
+       return;
+     }
+   tw = tex->w;
+   th = tex->h;
+   tex->changed = 1;
+   tex->have_mipmaps = 0;
+//   if (tex->gc->ext.nv_texture_rectangle) glDisable(GL_TEXTURE_RECTANGLE_NV);
+   glEnable(GL_TEXTURE_2D);
+   if (tex->rectangle)
+     {
+       glEnable(GL_TEXTURE_RECTANGLE_NV);
+       target = GL_TEXTURE_RECTANGLE_NV;
+     }
+   else
+     {
+//     glDisable(GL_TEXTURE_RECTANGLE_NV);
+       glEnable(GL_TEXTURE_2D);//
+       target = GL_TEXTURE_2D;
+     }
+
+   glBindTexture(GL_TEXTURE_2D, tex->texture);
+
+   if (tex->gc->texture) tex->gc->texture->references--;
+   tex->gc->texture = tex;
+   tex->gc->change.texture = 1;
+   tex->references++;
+
+   /*
+   if (!tex->opt)
+     {
+       glPixelDataRangeNV(GL_WRITE_PIXEL_DATA_RANGE_NV,
+                        im->image->w * im->image->h * 4,
+                        im->image->data);
+       tex->opt = 1;
+     }
+   */
+
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+   tex->smooth = 0;
+
+   im_data = im->image.data;
+   im_w = im->cache_entry.w;
+   im_h = im->cache_entry.h;
+
+   if (im->cache_entry.flags.alpha) texfmt = GL_RGBA8;
+   else texfmt = GL_RGB8;
+   pixfmt = NATIVE_PIX_FORMAT;
+
+   if (tex->gc->ext.sgis_generate_mipmap)
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP_SGIS, GL_TRUE);
+       tex->have_mipmaps = 1;
+     }
+   glTexSubImage2D(GL_TEXTURE_2D, 0,
+                  0, 0, im_w, im_h,
+                  pixfmt, NATIVE_PIX_UNIT,
+                  im_data);
+#if 1 // this is sloooow... well slower than just the above...
+   if (im_w < tw)
+     glTexSubImage2D(GL_TEXTURE_2D, 0,
+                    im_w, 0, 1, im_h,
+                    pixfmt, NATIVE_PIX_UNIT,
+                    im_data + im_w - 1);
+   if (im_h < th)
+     glTexSubImage2D(GL_TEXTURE_2D, 0,
+                    0, im_h, im_w, 1,
+                    pixfmt, NATIVE_PIX_UNIT,
+                    im_data + (im_w * (im_h - 1)));
+   if ((im_w < tw) && (im_h < th))
+     glTexSubImage2D(GL_TEXTURE_2D, 0,
+                    im_w, im_h, 1, 1,
+                    pixfmt, NATIVE_PIX_UNIT,
+                    im_data + (im_w * (im_h - 1)) + im_w - 1);
+#endif
+}
+
+void
+evas_gl_common_texture_free(Evas_GL_Texture *tex)
+{
+   if (tex->references > 0)
+     {
+       /* FIXME: could be in more gc's */
+     }
+   if (tex->gc->texture == tex)
+     {
+       tex->gc->texture = NULL;
+       tex->gc->change.texture = 1;
+     }
+   glDeleteTextures(1, &tex->texture);
+   if (tex->texture2) glDeleteTextures(1, &tex->texture2);
+   if (tex->texture3) glDeleteTextures(1, &tex->texture3);
+/*   
+   if (tex->fshad)
+     {
+       glDeleteObjectARB(tex->fshad);
+     }
+   if (tex->prog)
+     {
+       glDeleteObjectARB(tex->prog);
+     }
+ */
+   free(tex);
+}
+
+void
+evas_gl_common_texture_mipmaps_build(Evas_GL_Texture *tex, RGBA_Image *im, int smooth)
+{
+   DATA32 *im_data;
+   int tw, th;
+   int im_w, im_h, w, h;
+   GLenum pixfmt, texfmt;
+   int level;
+   RGBA_Image *im1 = NULL, *im2 = NULL;
+#ifdef BUILD_MMX
+   int mmx, sse, sse2;
+#endif
+
+   if (!smooth) return;
+   if (tex->rectangle) return;
+#ifdef BUILD_MMX
+   evas_common_cpu_can_do(&mmx, &sse, &sse2);
+#endif
+   tw = tex->w;
+   th = tex->h;
+   w = im->cache_entry.w;
+   h = im->cache_entry.h;
+   level = 0;
+   im1 = im;
+
+   if (tex->gc->texture != tex)
+     {
+       if (tex->gc->texture) tex->gc->texture->references--;
+       tex->gc->texture = tex;
+       tex->gc->change.texture = 1;
+       if (tex) tex->references++;
+     }
+
+   if (im->cache_entry.flags.alpha) texfmt = GL_RGBA8;
+   else texfmt = GL_RGB8;
+   pixfmt = NATIVE_PIX_FORMAT;
+
+   if (tex->gc->ext.nv_texture_rectangle) glDisable(GL_TEXTURE_RECTANGLE_NV);
+   glEnable(GL_TEXTURE_2D);
+   glBindTexture(GL_TEXTURE_2D, tex->texture);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
+   while ((w > 1) || (h > 1))
+     {
+       int pw, ph;
+
+       pw = w;
+       ph = h;
+       w /= 2;
+       h /= 2;
+       if (w < 1) w = 1;
+       if (h < 1) h = 1;
+       tw /= 2;
+       th /= 2;
+
+       level++;
+       im2 = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+        im2 = (RGBA_Image *) evas_cache_image_size_set(&im2->cache_entry, w, h);
+#ifdef BUILD_MMX
+       if (mmx)
+         {
+            evas_common_scale_rgba_mipmap_down_2x2_mmx(im1->image.data,
+                                                       im2->image.data,
+                                                       pw, ph);
+         }
+       else
+#endif
+         {
+            if (im->cache_entry.flags.alpha)
+              evas_common_scale_rgba_mipmap_down_2x2_c(im1->image.data,
+                                                       im2->image.data,
+                                                       pw, ph);
+            else
+              evas_common_scale_rgb_mipmap_down_2x2_c(im1->image.data,
+                                                      im2->image.data,
+                                                      pw, ph);
+         }
+       if (im1 != im) evas_cache_image_drop(&im1->cache_entry);
+       im1 = NULL;
+
+       im_data = im2->image.data;
+       im_w = w;
+       im_h = h;
+       glTexSubImage2D(GL_TEXTURE_2D, level,
+                       0, 0, im_w, im_h,
+                       pixfmt, NATIVE_PIX_UNIT,
+                       im_data);
+       if (im_w < tw)
+         glTexSubImage2D(GL_TEXTURE_2D, level,
+                         im_w, 0, 1, im_h,
+                         pixfmt, NATIVE_PIX_UNIT,
+                         im_data + im_w - 1);
+       if (im_h < th)
+         glTexSubImage2D(GL_TEXTURE_2D, level,
+                         0, im_h, im_w, 1,
+                         pixfmt, NATIVE_PIX_UNIT,
+                         im_data + (im_w * (im_h - 1)));
+       if ((im_w < tw) && (im_h < th))
+         glTexSubImage2D(GL_TEXTURE_2D, level,
+                         im_w, im_h, 1, 1,
+                         pixfmt, NATIVE_PIX_UNIT,
+                         im_data + (im_w * (im_h - 1)) + im_w - 1);
+       im1 = im2;
+       im2 = NULL;
+     }
+   if ((im1 != im) && (im1)) evas_cache_image_drop(&im1->cache_entry);
+   tex->have_mipmaps = 1;
+#ifdef BUILD_MMX
+   if (mmx) evas_common_cpu_end_opt();
+#endif
+}
+
+Evas_GL_Texture *
+evas_gl_common_ycbcr601pl_texture_new(Evas_GL_Context *gc, unsigned char **rows, int w, int h, int smooth)
+{
+   Evas_GL_Texture *tex;
+   int im_w, im_h, tw, th, y;
+   GLenum texfmt;
+  
+// on an nv 6600gt this is fast - but on a 5500fx its DEAD SLOW!!!!!   
+//   if (!gc->ext.arb_texture_non_power_of_two) return NULL;
+   
+   tex = calloc(1, sizeof(Evas_GL_Texture));
+   if (!tex) return NULL;
+   
+   tw = w;
+   th = h;
+   tex->gc = gc;
+   tex->w = tw;
+   tex->h = th;
+   tex->tw = w;
+   tex->th = h;
+   tex->references = 0;
+   tex->smooth = 0;
+   tex->changed = 1;
+
+   tex->prog = gc->yuv422p.prog;
+   
+   glEnable(GL_TEXTURE_2D);
+   texfmt = GL_LUMINANCE;
+
+   glUseProgramObjectARB(tex->prog);
+   
+   glGenTextures(1, &(tex->texture));
+   glBindTexture(GL_TEXTURE_2D, tex->texture);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+   if (smooth)
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+     }
+   else
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+     }
+   glTexImage2D(GL_TEXTURE_2D, 0, texfmt, tex->w, tex->h, 0,
+               texfmt, GL_UNSIGNED_BYTE, NULL);
+   if (tex->h >= 2)
+     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[1] - rows[0]);
+   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w, tex->h,
+                  texfmt, GL_UNSIGNED_BYTE, rows[0]);
+//   for (y = 0; y < tex->h; y++)
+//     glTexSubImage2D(GL_TEXTURE_2D, 0,
+//                  0, y, tex->w, 1,
+//                  texfmt, GL_UNSIGNED_BYTE, rows[y]);
+   
+   glGenTextures(1, &(tex->texture2));
+   glBindTexture(GL_TEXTURE_2D, tex->texture2);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+   if (smooth)
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+     }
+   else
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+     }
+   glTexImage2D(GL_TEXTURE_2D, 0, texfmt, tex->w / 2, tex->h / 2, 0,
+               texfmt, GL_UNSIGNED_BYTE, NULL);
+   if (tex->h >= 4)
+     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[tex->h + 1] - rows[tex->h]);
+   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w / 2, tex->h / 2,
+                  texfmt, GL_UNSIGNED_BYTE, rows[tex->h]);
+//   for (y = 0; y < (tex->h / 2); y++)
+//     glTexSubImage2D(GL_TEXTURE_2D, 0,
+//                  0, y, tex->w / 2, 1,
+//                  texfmt, GL_UNSIGNED_BYTE, rows[tex->h + y]);
+   
+   glGenTextures(1, &(tex->texture3));
+   glBindTexture(GL_TEXTURE_2D, tex->texture3);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, 16);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+   if (smooth)
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+     }
+   else
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+     }
+   glTexImage2D(GL_TEXTURE_2D, 0,
+               texfmt, tex->w / 2, tex->h / 2, 0,
+               texfmt, GL_UNSIGNED_BYTE, NULL);
+   if (tex->h >= 4)
+     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[tex->h + (tex->h / 2) + 1] - rows[tex->h + (tex->h / 2)]);
+   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w / 2, tex->h / 2,
+                  texfmt, GL_UNSIGNED_BYTE, rows[tex->h + (tex->h / 2)]);
+//   for (y = 0; y < (tex->h / 2); y++)
+//     glTexSubImage2D(GL_TEXTURE_2D, 0,
+//                  0, y, tex->w / 2, 1,
+//                  texfmt, GL_UNSIGNED_BYTE, rows[tex->h + (tex->h / 2) + y]);
+   
+   glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
+   glUseProgramObjectARB(0);
+   
+   if (gc->texture) gc->texture->references--;
+   gc->texture = tex;
+   gc->change.texture = 1;
+   tex->references++;
+
+   return tex;
+}
+
+void
+evas_gl_common_ycbcr601pl_texture_update(Evas_GL_Texture *tex, unsigned char **rows, int w, int h, int smooth)
+{
+   int texfmt;
+   int y;
+   
+   /* FIXME: should use subimage */
+   glEnable(GL_TEXTURE_2D);
+   texfmt = GL_LUMINANCE;
+   
+   glBindTexture(GL_TEXTURE_2D, tex->texture);
+   if (smooth)
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+     }
+   else
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+     }
+   if (tex->h >= 2)
+     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[1] - rows[0]);
+   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w, tex->h,
+                  texfmt, GL_UNSIGNED_BYTE, rows[0]);
+//   for (y = 0; y < tex->h; y++)
+//     glTexSubImage2D(GL_TEXTURE_2D, 0,
+//                  0, y, tex->w, 1,
+//                  texfmt, GL_UNSIGNED_BYTE, rows[y]);
+   
+   glBindTexture(GL_TEXTURE_2D, tex->texture2);
+   if (smooth)
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+     }
+   else
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+     }
+   if (tex->h >= 4)
+     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[tex->h + 1] - rows[tex->h]);
+   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w / 2, tex->h / 2,
+                  texfmt, GL_UNSIGNED_BYTE, rows[tex->h]);
+//   for (y = 0; y < (tex->h / 2); y++)
+//     glTexSubImage2D(GL_TEXTURE_2D, 0,
+//                  0, y, tex->w / 2, 1,
+//                  texfmt, GL_UNSIGNED_BYTE, rows[tex->h + y]);
+   
+   glBindTexture(GL_TEXTURE_2D, tex->texture3);
+   if (smooth)
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+     }
+   else
+     {
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
+       glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
+     }
+   if (tex->h >= 4)
+     glPixelStorei(GL_UNPACK_ROW_LENGTH, rows[tex->h + (tex->h / 2) + 1] - rows[tex->h + (tex->h / 2)]);
+   glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, tex->w / 2, tex->h / 2,
+                  texfmt, GL_UNSIGNED_BYTE, rows[tex->h + (tex->h / 2)]);
+//   for (y = 0; y < (tex->h / 2); y++)
+//     glTexSubImage2D(GL_TEXTURE_2D, 0,
+//                  0, y, tex->w / 2, 1,
+//                  texfmt, GL_UNSIGNED_BYTE, rows[tex->h + (tex->h / 2) + y]);
+   glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
+
+   if (tex->gc->texture) tex->gc->texture->references--;
+   tex->gc->texture = tex;
+   tex->gc->change.texture = 1;
+   tex->references++;
+}
diff --git a/src/modules/engines/gl_glew/.cvsignore b/src/modules/engines/gl_glew/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/gl_glew/Evas_Engine_GL_Glew.h b/src/modules/engines/gl_glew/Evas_Engine_GL_Glew.h
new file mode 100644 (file)
index 0000000..c254fd0
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef __EVAS_ENGINE_GL_GLEW_H__
+#define __EVAS_ENGINE_GL_GLEW_H__
+
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+
+typedef struct _Evas_Engine_Info_GL_Glew              Evas_Engine_Info_GL_Glew;
+
+struct _Evas_Engine_Info_GL_Glew
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   /* engine specific data & parameters it needs to set up */
+   struct {
+      HWND  window;
+      int   depth;
+   } info;
+};
+
+
+#endif /* __EVAS_ENGINE_GL_GLEW_H__ */
diff --git a/src/modules/engines/gl_glew/Makefile.am b/src/modules/engines/gl_glew/Makefile.am
new file mode 100644 (file)
index 0000000..aad714f
--- /dev/null
@@ -0,0 +1,35 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines/gl_common \
+@FREETYPE_CFLAGS@
+
+if BUILD_ENGINE_GL_GLEW
+
+pkgdir = $(libdir)/evas/modules/engines/gl_glew/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES  = \
+evas_engine.h \
+evas_engine.c \
+evas_glew_main.c
+
+module_la_LIBADD = $(top_builddir)/src/modules/engines/gl_common/libevas_engine_gl_common.la $(top_builddir)/src/lib/libevas.la @gl_libs@ @glew_libs@
+module_la_LDFLAGS = @lt_no_undefined@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_GL_Glew.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_glew_main.c \
+Evas_Engine_GL_Glew.h
diff --git a/src/modules/engines/gl_glew/evas_engine.c b/src/modules/engines/gl_glew/evas_engine.c
new file mode 100644 (file)
index 0000000..33f790e
--- /dev/null
@@ -0,0 +1,970 @@
+#include "evas_engine.h"
+#include "Evas_Engine_GL_Glew.h"
+
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   HWND                 win;
+   HDC                  dc;
+   HGLRC                context;
+   Evas_GL_Glew_Window *window;
+   int                  end;
+};
+
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_GL_Glew *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_GL_Glew));
+   if (!info) return NULL;
+
+   info->magic.magic = rand();
+
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_GL_Glew *in;
+
+   in = (Evas_Engine_Info_GL_Glew *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine            *re;
+   Evas_Engine_Info_GL_Glew *info;
+
+   info = (Evas_Engine_Info_GL_Glew *)in;
+   if (!e->engine.data.output)
+     {
+       re = calloc(1, sizeof(Render_Engine));
+       if (!re) return;
+
+        if (!evas_glew_init(info->info.window, &re->dc, &re->context))
+          {
+            free(re);
+            e->engine.data.output = NULL;
+            return;
+          }
+
+        re->win = info->info.window;
+       e->engine.data.output = re;
+       re->window = eng_window_new(info->info.window,
+                                    re->dc,
+                                    re->context,
+                                    info->info.depth,
+                                    e->output.w,
+                                    e->output.h);
+       if (!re->window)
+         {
+            free(re);
+            e->engine.data.output = NULL;
+            return;
+         }
+
+       evas_common_cpu_init();
+
+       evas_common_blend_init();
+       evas_common_image_init();
+       evas_common_convert_init();
+       evas_common_scale_init();
+       evas_common_rectangle_init();
+       evas_common_gradient_init();
+       evas_common_polygon_init();
+       evas_common_line_init();
+       evas_common_font_init();
+       evas_common_draw_init();
+       evas_common_tilebuf_init();
+     }
+   else
+     {
+
+        if (!evas_glew_init(info->info.window, &re->dc, &re->context))
+          {
+            free(re);
+            e->engine.data.output = NULL;
+            return;
+          }
+
+        re->win = info->info.window;
+       re = e->engine.data.output;
+       eng_window_free(re->window);
+       re->window = eng_window_new(info->info.window,
+                                    re->dc,
+                                    re->context,
+                                    info->info.depth,
+                                    e->output.w,
+                                    e->output.h);
+     }
+   if (!e->engine.data.output) return;
+
+   if (!e->engine.data.context)
+     e->engine.data.context =
+       e->engine.func->context_new(e->engine.data.output);
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   eng_window_free(re->window);
+   evas_glew_shutdown(re->win, re->dc, re->context);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->window->width = w;
+   re->window->height = h;
+   evas_gl_common_context_resize(re->window->gl_context, w, h);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_gl_common_context_resize(re->window->gl_context, re->window->width, re->window->height);
+   /* simple bounding box */
+   if (!re->window->draw.redraw)
+     {
+#if 0
+       re->window->draw.x1 = x;
+       re->window->draw.y1 = y;
+       re->window->draw.x2 = x + w - 1;
+       re->window->draw.y2 = y + h - 1;
+#else
+       re->window->draw.x1 = 0;
+       re->window->draw.y1 = 0;
+       re->window->draw.x2 = re->window->width - 1;
+       re->window->draw.y2 = re->window->height - 1;
+#endif
+     }
+   else
+     {
+       if (x < re->window->draw.x1) re->window->draw.x1 = x;
+       if (y < re->window->draw.y1) re->window->draw.y1 = y;
+       if ((x + w - 1) > re->window->draw.x2) re->window->draw.x2 = x + w - 1;
+       if ((y + h - 1) > re->window->draw.y2) re->window->draw.y2 = y + h - 1;
+     }
+   re->window->draw.redraw = 1;
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->window->draw.redraw = 0;
+}
+
+#define SLOW_GL_COPY_RECT 1
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* get the upate rect surface - return engine data as dummy */
+   if (!re->window->draw.redraw)
+     {
+//     printf("GL: NO updates!\n");
+       return NULL;
+     }
+//   printf("GL: update....!\n");
+#ifdef SLOW_GL_COPY_RECT
+   /* if any update - just return the whole canvas - works with swap
+    * buffers then */
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (w) *w = re->window->width;
+   if (h) *h = re->window->height;
+   if (cx) *cx = 0;
+   if (cy) *cy = 0;
+   if (cw) *cw = re->window->width;
+   if (ch) *ch = re->window->height;
+#else
+   /* 1 update - INCREDIBLY SLOW if combined with swap_rect in flush. a gl
+    * problem where there just is no hardware path for somethnig that
+    * obviously SHOULD be there */
+   /* only 1 update to minimise gl context games and rendering multiple update
+    * regions as evas does with other engines
+    */
+   if (x) *x = re->window->draw.x1;
+   if (y) *y = re->window->draw.y1;
+   if (w) *w = re->window->draw.x2 - re->window->draw.x1 + 1;
+   if (h) *h = re->window->draw.y2 - re->window->draw.y1 + 1;
+   if (cx) *cx = re->window->draw.x1;
+   if (cy) *cy = re->window->draw.y1;
+   if (cw) *cw = re->window->draw.x2 - re->window->draw.x1 + 1;
+   if (ch) *ch = re->window->draw.y2 - re->window->draw.y1 + 1;
+#endif
+   return re;
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* put back update surface.. in this case just unflag redraw */
+   re->window->draw.redraw = 0;
+   re->window->draw.drew = 1;
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!re->window->draw.drew) return;
+
+   re->window->draw.drew = 0;
+   eng_window_use(re->window);
+
+#ifdef SLOW_GL_COPY_RECT
+   SwapBuffers(re->dc);
+#else
+   /* SLOW AS ALL HELL */
+   evas_gl_common_swap_rect(re->window->gl_context,
+                           re->window->draw.x1, re->window->draw.y1,
+                           re->window->draw.x2 - re->window->draw.x1 + 1,
+                           re->window->draw.y2 - re->window->draw.y1 + 1);
+#endif
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_context_cutout_add(void *data, void *context, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in gl engine */
+}
+
+static void
+eng_context_cutout_clear(void *data, void *context)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in gl engine */
+}
+
+static void
+eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   eng_window_use(re->window);
+   re->window->gl_context->dc = context;
+   evas_gl_common_rect_draw(re->window->gl_context, x, y, w, h);
+}
+
+static void
+eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->window->gl_context->dc = context;
+   evas_gl_common_line_draw(re->window->gl_context, x1, y1, x2, y2);
+}
+
+static void *
+eng_polygon_point_add(void *data, void *context, void *polygon, int x, int y)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return evas_gl_common_poly_point_add(polygon, x, y);
+
+}
+
+static void *
+eng_polygon_points_clear(void *data, void *context, void *polygon)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return evas_gl_common_poly_points_clear(polygon);
+}
+
+static void
+eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->window->gl_context->dc = context;
+   evas_gl_common_poly_draw(re->window->gl_context, polygon);
+}
+
+static void *
+eng_gradient_new(void *data)
+{
+   return evas_gl_common_gradient_new();
+}
+
+static void
+eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
+{
+   evas_gl_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
+}
+
+static void
+eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
+{
+   evas_gl_common_gradient_alpha_stop_add(gradient, a, delta);
+}
+
+static void
+eng_gradient_clear(void *data, void *gradient)
+{
+   evas_gl_common_gradient_clear(gradient);
+}
+
+static void
+eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
+{
+   evas_gl_common_gradient_color_data_set(gradient, map, len, has_alpha);
+}
+
+static void
+eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
+{
+   evas_gl_common_gradient_alpha_data_set(gradient, alpha_map, len);
+}
+
+static void
+eng_gradient_free(void *data, void *gradient)
+{
+   evas_gl_common_gradient_free(gradient);
+}
+
+static void
+eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
+{
+   evas_gl_common_gradient_fill_set(gradient, x, y, w, h);
+}
+
+static void
+eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
+{
+   evas_gl_common_gradient_fill_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
+{
+   evas_gl_common_gradient_fill_spread_set(gradient, spread);
+}
+
+static void
+eng_gradient_angle_set(void *data, void *gradient, double angle)
+{
+   evas_gl_common_gradient_map_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_offset_set(void *data, void *gradient, float offset)
+{
+   evas_gl_common_gradient_map_offset_set(gradient, offset);
+}
+
+static void
+eng_gradient_direction_set(void *data, void *gradient, int direction)
+{
+   evas_gl_common_gradient_map_direction_set(gradient, direction);
+}
+
+static void
+eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
+{
+   evas_gl_common_gradient_type_set(gradient, name, params);
+}
+
+static int
+eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   Render_Engine *re = (Render_Engine *)data;
+
+   re->window->gl_context->dc = context;
+   return evas_gl_common_gradient_is_opaque(re->window->gl_context, gradient, x, y, w, h);
+}
+
+static int
+eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   Render_Engine *re = (Render_Engine *)data;
+
+   re->window->gl_context->dc = context;
+   return evas_gl_common_gradient_is_visible(re->window->gl_context, gradient, x, y, w, h);
+}
+
+static void
+eng_gradient_render_pre(void *data, void *context, void *gradient)
+{
+   Render_Engine *re = (Render_Engine *)data;
+
+   re->window->gl_context->dc = context;
+   evas_gl_common_gradient_render_pre(re->window->gl_context, gradient);
+}
+
+static void
+eng_gradient_render_post(void *data, void *gradient)
+{
+   evas_gl_common_gradient_render_post(gradient);
+}
+
+static void
+eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   eng_window_use(re->window);
+   re->window->gl_context->dc = context;
+   evas_gl_common_gradient_draw(re->window->gl_context, gradient, x, y, w, h);
+}
+
+static int
+eng_image_alpha_get(void *data, void *image)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image) return 1;
+   im = image;
+   /* FIXME: can move to gl_common */
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (im->im->cache_entry.flags.alpha) return 1;
+      default:
+       break;
+     }
+   return 0;
+}
+
+static int
+eng_image_colorspace_get(void *data, void *image)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image) return EVAS_COLORSPACE_ARGB8888;
+   im = image;
+   return im->cs.space;
+}
+
+static void *
+eng_image_alpha_set(void *data, void *image, int has_alpha)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image) return NULL;
+   eng_window_use(re->window);
+   im = image;
+   /* FIXME: can move to gl_common */
+   if (im->cs.space != EVAS_COLORSPACE_ARGB8888) return im;
+   if ((has_alpha) && (im->im->cache_entry.flags.alpha)) return image;
+   else if ((!has_alpha) && (!im->im->cache_entry.flags.alpha)) return image;
+   if (im->references > 1)
+    {
+       Evas_GL_Image *im_new;
+
+        im_new = evas_gl_common_image_new_from_copied_data(im->gc, im->im->cache_entry.w, im->im->cache_entry.h, im->im->image.data,
+                                                          eng_image_alpha_get(data, image),
+                                                          eng_image_colorspace_get(data, image));
+       if (!im_new) return im;
+       evas_gl_common_image_free(im);
+       im = im_new;
+     }
+   else
+     evas_gl_common_image_dirty(im);
+   im->im->cache_entry.flags.alpha = has_alpha ? 1 : 0;
+   return image;
+}
+
+static void *
+eng_image_border_set(void *data, void *image, int l, int r, int t, int b)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return image;
+}
+
+static void
+eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static char *
+eng_image_comment_get(void *data, void *image, char *key)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image) return NULL;
+   im = image;
+   return im->im->info.comment;
+}
+
+static char *
+eng_image_format_get(void *data, void *image)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   im = image;
+   return NULL;
+}
+
+static void
+eng_image_colorspace_set(void *data, void *image, int cspace)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image) return;
+   im = image;
+   /* FIXME: can move to gl_common */
+   if (im->cs.space == cspace) return;
+   evas_cache_image_colorspace(&im->im->cache_entry, cspace);
+   switch (cspace)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (im->cs.data)
+         {
+            if (!im->cs.no_free) free(im->cs.data);
+            im->cs.data = NULL;
+            im->cs.no_free = 0;
+         }
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       if (im->tex) evas_gl_common_texture_free(im->tex);
+       im->tex = NULL;
+       if (im->cs.data)
+         {
+            if (!im->cs.no_free) free(im->cs.data);
+         }
+       im->cs.data = calloc(1, im->im->cache_entry.h * sizeof(unsigned char *) * 2);
+       im->cs.no_free = 0;
+       break;
+      default:
+       abort();
+       break;
+     }
+   im->cs.space = cspace;
+}
+
+static void
+eng_image_native_set(void *data, void *image, void *native)
+{
+}
+
+static void *
+eng_image_native_get(void *data, void *image)
+{
+   return NULL;
+}
+
+static void *
+eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   *error = 0;
+   eng_window_use(re->window);
+   return evas_gl_common_image_load(re->window->gl_context, file, key, lo);
+}
+
+static void *
+eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   eng_window_use(re->window);
+   return evas_gl_common_image_new_from_data(re->window->gl_context, w, h, image_data, alpha, cspace);
+}
+
+static void *
+eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   eng_window_use(re->window);
+   return evas_gl_common_image_new_from_copied_data(re->window->gl_context, w, h, image_data, alpha, cspace);
+}
+
+static void
+eng_image_free(void *data, void *image)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!image) return;
+   eng_window_use(re->window);
+   evas_gl_common_image_free(image);
+}
+
+static void
+eng_image_size_get(void *data, void *image, int *w, int *h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!image)
+     {
+       *w = 0;
+       *h = 0;
+       return;
+     }
+   if (w) *w = ((Evas_GL_Image *)image)->im->cache_entry.w;
+   if (h) *h = ((Evas_GL_Image *)image)->im->cache_entry.h;
+
+}
+
+static void *
+eng_image_size_set(void *data, void *image, int w, int h)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im, *im_old;
+
+   re = (Render_Engine *)data;
+   if (!image) return NULL;
+   eng_window_use(re->window);
+   im_old = image;
+   if ((eng_image_colorspace_get(data, image) == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (eng_image_colorspace_get(data, image) == EVAS_COLORSPACE_YCBCR422P709_PL))
+     w &= ~0x1;
+   if ((im_old) && (im_old->im->cache_entry.w == w) && (im_old->im->cache_entry.h == h))
+
+     return image;
+   if (im_old)
+     {
+       im = evas_gl_common_image_new(re->window->gl_context, w, h,
+                                     eng_image_alpha_get(data, image),
+                                     eng_image_colorspace_get(data, image));
+/*
+       evas_common_load_image_data_from_file(im_old->im);
+       if (im_old->im->image->data)
+         {
+            evas_common_blit_rectangle(im_old->im, im->im, 0, 0, w, h, 0, 0);
+            evas_common_cpu_end_opt();
+         }
+ */
+       evas_gl_common_image_free(im_old);
+     }
+   else
+     im = evas_gl_common_image_new(re->window->gl_context, w, h, 1, EVAS_COLORSPACE_ARGB8888);
+   return im;
+}
+
+static void *
+eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!image) return NULL;
+   evas_gl_common_image_dirty(image);
+   return image;
+}
+
+static void *
+eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image)
+     {
+       *image_data = NULL;
+       return NULL;
+     }
+   im = image;
+   eng_window_use(re->window);
+   evas_cache_image_load_data(&im->im->cache_entry);
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (to_write)
+         {
+            if (im->references > 1)
+              {
+                 Evas_GL_Image *im_new;
+
+                 im_new = evas_gl_common_image_new_from_copied_data(im->gc, im->im->cache_entry.w, im->im->cache_entry.h, im->im->image.data,
+                                                                    eng_image_alpha_get(data, image),
+                                                                    eng_image_colorspace_get(data, image));
+                 if (!im_new)
+                   {
+                      *image_data = NULL;
+                      return im;
+                   }
+                 evas_gl_common_image_free(im);
+                 im = im_new;
+              }
+            else
+              evas_gl_common_image_dirty(im);
+         }
+       *image_data = im->im->image.data;
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       *image_data = im->cs.data;
+       break;
+      default:
+       abort();
+       break;
+     }
+   return im;
+}
+
+static void *
+eng_image_data_put(void *data, void *image, DATA32 *image_data)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im, *im2;
+
+   re = (Render_Engine *)data;
+   if (!image) return NULL;
+   im = image;
+   eng_window_use(re->window);
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (image_data != im->im->image.data)
+         {
+            int w, h;
+
+            w = im->im->cache_entry.w;
+            h = im->im->cache_entry.h;
+            im2 = eng_image_new_from_data(data, w, h, image_data,
+                                          eng_image_alpha_get(data, image),
+                                          eng_image_colorspace_get(data, image));
+            if (!im2) return im;
+            evas_gl_common_image_free(im);
+            im = im2;
+         }
+        break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+        if (image_data != im->cs.data)
+         {
+            if (im->cs.data)
+              {
+                 if (!im->cs.no_free) free(im->cs.data);
+              }
+            im->cs.data = image_data;
+         }
+       break;
+      default:
+       abort();
+       break;
+     }
+   /* hmmm - but if we wrote... why bother? */
+   evas_gl_common_image_dirty(im);
+   return im;
+}
+
+static void
+eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!image) return;
+   eng_window_use(re->window);
+   re->window->gl_context->dc = context;
+   evas_gl_common_image_draw(re->window->gl_context, image,
+                            src_x, src_y, src_w, src_h,
+                            dst_x, dst_y, dst_w, dst_h,
+                            smooth);
+}
+
+static void
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+     {
+       static RGBA_Image *im = NULL;
+
+       if (!im)
+          im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+        if (!im) return ;
+        evas_cache_image_surface_alloc(&im->cache_entry, re->window->width, re->window->height);
+
+       evas_common_draw_context_font_ext_set(context,
+                                             re->window->gl_context,
+                                             evas_gl_font_texture_new,
+                                             evas_gl_font_texture_free,
+                                             evas_gl_font_texture_draw);
+       evas_common_font_draw(im, context, font, x, y, text);
+       evas_common_draw_context_font_ext_set(context,
+                                             NULL,
+                                             NULL,
+                                             NULL,
+                                             NULL);
+     }
+}
+
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+   #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(context_cutout_add);
+   ORD(context_cutout_clear);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   ORD(rectangle_draw);
+   ORD(line_draw);
+   ORD(polygon_point_add);
+   ORD(polygon_points_clear);
+   ORD(polygon_draw);
+   ORD(gradient_new);
+   ORD(gradient_free);
+   ORD(gradient_color_stop_add);
+   ORD(gradient_alpha_stop_add);
+   ORD(gradient_color_data_set);
+   ORD(gradient_alpha_data_set);
+   ORD(gradient_clear);
+   ORD(gradient_fill_set);
+   ORD(gradient_fill_angle_set);
+   ORD(gradient_fill_spread_set);
+   ORD(gradient_angle_set);
+   ORD(gradient_offset_set);
+   ORD(gradient_direction_set);
+   ORD(gradient_type_set);
+   ORD(gradient_is_opaque);
+   ORD(gradient_is_visible);
+   ORD(gradient_render_pre);
+   ORD(gradient_render_post);
+   ORD(gradient_draw);
+   ORD(image_load);
+   ORD(image_new_from_data);
+   ORD(image_new_from_copied_data);
+   ORD(image_free);
+   ORD(image_size_get);
+   ORD(image_size_set);
+   ORD(image_dirty_region);
+   ORD(image_data_get);
+   ORD(image_data_put);
+   ORD(image_alpha_set);
+   ORD(image_alpha_get);
+   ORD(image_border_set);
+   ORD(image_border_get);
+   ORD(image_draw);
+   ORD(image_comment_get);
+   ORD(image_format_get);
+   ORD(image_colorspace_set);
+   ORD(image_colorspace_get);
+   ORD(image_native_set);
+   ORD(image_native_get);
+   ORD(font_draw);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+   EVAS_MODULE_TYPE_ENGINE,
+   "gl_glew",
+   "none"
+};
diff --git a/src/modules/engines/gl_glew/evas_engine.h b/src/modules/engines/gl_glew/evas_engine.h
new file mode 100644 (file)
index 0000000..8df1782
--- /dev/null
@@ -0,0 +1,47 @@
+#ifndef __EVAS_ENGINE_H__
+#define __EVAS_ENGINE_H__
+
+#include <windows.h>
+
+#include "evas_gl_common.h"
+
+
+typedef struct _Evas_GL_Glew_Window Evas_GL_Glew_Window;
+
+struct _Evas_GL_Glew_Window
+{
+   HWND             window;
+   HDC              dc;
+   HGLRC            context;
+   int              width;
+   int              height;
+   int              depth;
+   Evas_GL_Context *gl_context;
+   struct {
+      int           x1;
+      int           y1;
+      int           x2;
+      int           y2;
+      int           redraw : 1;
+      int           drew : 1;
+   } draw;
+};
+
+int evas_glew_init(HWND window, HDC *dc, HGLRC *context);
+
+void evas_glew_shutdown(HWND  window,
+                        HDC   dc,
+                        HGLRC context);
+
+Evas_GL_Glew_Window *eng_window_new(HWND window,
+                                    HDC   dc,
+                                    HGLRC context,
+                                    int  depth,
+                                    int  width,
+                                    int  height);
+
+void eng_window_free(Evas_GL_Glew_Window *gw);
+void eng_window_use(Evas_GL_Glew_Window *gw);
+
+
+#endif /* __EVAS_ENGINE_H__ */
diff --git a/src/modules/engines/gl_glew/evas_glew_main.c b/src/modules/engines/gl_glew/evas_glew_main.c
new file mode 100644 (file)
index 0000000..1981719
--- /dev/null
@@ -0,0 +1,118 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+#include "Evas_Engine_GL_Glew.h"
+
+
+static Evas_GL_Glew_Window *_evas_gl_glew_window = NULL;
+
+int
+evas_glew_init(HWND window, HDC *dc, HGLRC *context)
+{
+   PIXELFORMATDESCRIPTOR pfd;
+   int                   format;
+
+   *dc = GetDC(window);
+   if (!*dc)
+    goto no_dc;
+
+   ZeroMemory(&pfd, sizeof (pfd));
+   pfd.nSize = sizeof (pfd);
+   pfd.nVersion = 1;
+   pfd.dwFlags = PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER;
+   pfd.iPixelType = PFD_TYPE_RGBA;
+   pfd.cColorBits = 24;
+   pfd.cDepthBits = 32;
+   pfd.iLayerType = PFD_MAIN_PLANE;
+
+   format = ChoosePixelFormat(*dc, &pfd);
+   if (!format)
+     goto no_format;
+
+   SetPixelFormat(*dc, format, &pfd);
+
+   if (pfd.iPixelType != PFD_TYPE_RGBA)
+     goto no_format;
+
+   *context = wglCreateContext(*dc);
+   if (!*context)
+     goto no_format;
+
+   wglMakeCurrent(*dc, *context);
+
+   if (glewInit() != GLEW_OK)
+     goto glew_init_failed;
+
+   if (GLEW_VERSION_2_0)
+     {
+       printf ("2.0\n");
+     }
+
+   return 1;
+
+ glew_init_failed:
+   wglMakeCurrent(NULL, NULL);
+   wglDeleteContext(*context);
+ no_format:
+   ReleaseDC(window, *dc);
+ no_dc:
+
+  return 0;
+}
+
+void
+evas_glew_shutdown(HWND  window,
+                   HDC   dc,
+                   HGLRC context)
+{
+   wglMakeCurrent(NULL, NULL);
+   wglDeleteContext(context);
+   ReleaseDC(window, dc);
+}
+
+Evas_GL_Glew_Window *
+eng_window_new(HWND  window,
+               HDC   dc,
+               HGLRC context,
+               int   depth,
+               int   width,
+               int   height)
+{
+   Evas_GL_Glew_Window *gw;
+
+   gw = calloc(1, sizeof(Evas_GL_Glew_Window));
+   if (!gw) return NULL;
+
+   gw->window = window;
+   gw->dc = dc;
+   gw->context = context;
+   gw->depth = depth;
+
+   gw->gl_context = evas_gl_common_context_new();
+   if (!gw->gl_context)
+     {
+       free(gw);
+       return NULL;
+     }
+   evas_gl_common_context_resize(gw->gl_context, width, height);
+
+   return gw;
+}
+
+void
+eng_window_free(Evas_GL_Glew_Window *gw)
+{
+   if (gw == _evas_gl_glew_window) _evas_gl_glew_window = NULL;
+   evas_gl_common_context_free(gw->gl_context);
+   free(gw);
+}
+
+void
+eng_window_use(Evas_GL_Glew_Window *gw)
+{
+   if (_evas_gl_glew_window != gw)
+     {
+       _evas_gl_glew_window = gw;
+       wglMakeCurrent(gw->dc, gw->context);
+     }
+   evas_gl_common_context_use(gw->gl_context);
+}
diff --git a/src/modules/engines/gl_x11/.cvsignore b/src/modules/engines/gl_x11/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/gl_x11/Evas_Engine_GL_X11.h b/src/modules/engines/gl_x11/Evas_Engine_GL_X11.h
new file mode 100644 (file)
index 0000000..853c2d9
--- /dev/null
@@ -0,0 +1,32 @@
+#ifndef _EVAS_ENGINE_GL_X11_H
+#define _EVAS_ENGINE_GL_X11_H
+
+#include <X11/Xlib.h>
+
+typedef struct _Evas_Engine_Info_GL_X11              Evas_Engine_Info_GL_X11;
+
+struct _Evas_Engine_Info_GL_X11
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   /* engine specific data & parameters it needs to set up */
+   struct {
+      Display  *display;
+      Drawable  drawable;
+      Visual   *visual;
+      Colormap  colormap;
+      int       depth;
+   } info;
+   /* engine specific function calls to query stuff about the destination */
+   /* engine (what visual & colormap & depth to use, performance info etc. */
+   struct {
+      Visual *  (*best_visual_get)   (Display *disp, int screen);
+      Colormap  (*best_colormap_get) (Display *disp, int screen);
+      int       (*best_depth_get)    (Display *disp, int screen);
+   } func;
+};
+#endif
+
+
diff --git a/src/modules/engines/gl_x11/Makefile.am b/src/modules/engines/gl_x11/Makefile.am
new file mode 100644 (file)
index 0000000..c058220
--- /dev/null
@@ -0,0 +1,37 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines/gl_common \
+@FREETYPE_CFLAGS@ \
+@x_cflags@ \
+@gl_cflags@
+
+if BUILD_ENGINE_GL_X11
+
+pkgdir = $(libdir)/evas/modules/engines/gl_x11/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES  = \
+evas_engine.h \
+evas_engine.c \
+evas_x_main.c
+
+module_la_LIBADD = @gl_libs@ @x_libs@ $(top_builddir)/src/modules/engines/gl_common/libevas_engine_gl_common.la $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_GL_X11.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_x_main.c \
+Evas_Engine_GL_X11.h
diff --git a/src/modules/engines/gl_x11/evas_engine.c b/src/modules/engines/gl_x11/evas_engine.c
new file mode 100644 (file)
index 0000000..a236a53
--- /dev/null
@@ -0,0 +1,1026 @@
+#ifdef HAVE_GL_GLEW_H
+# include <GL/glxew.h>
+#else
+# include <GL/glx.h>
+#endif
+
+#include "evas_gl_common.h"
+
+#include <X11/Xlib.h>
+#include <GL/gl.h>
+#include <GL/glu.h>
+
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_GL_X11.h"
+
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+static Visual *eng_best_visual_get(Display *disp, int screen);
+static Colormap eng_best_colormap_get(Display *disp, int screen);
+static int eng_best_depth_get(Display *disp, int screen);
+
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Evas_GL_X11_Window *win;
+   int                 end;
+};
+
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_GL_X11 *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_GL_X11));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   info->func.best_visual_get = eng_best_visual_get;
+   info->func.best_colormap_get = eng_best_colormap_get;
+   info->func.best_depth_get = eng_best_depth_get;
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_GL_X11 *in;
+
+   in = (Evas_Engine_Info_GL_X11 *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_GL_X11 *info;
+   int eb, evb;
+
+   info = (Evas_Engine_Info_GL_X11 *)in;
+   if (!e->engine.data.output)
+     {
+       if (!glXQueryExtension(info->info.display, &eb, &evb)) return;
+       re = calloc(1, sizeof(Render_Engine));
+       if (!re) return;
+       e->engine.data.output = re;
+       re->win = eng_window_new(info->info.display,
+                                info->info.drawable,
+                                0 /* FIXME: screen 0 assumption */,
+                                info->info.visual,
+                                info->info.colormap,
+                                info->info.depth,
+                                e->output.w,
+                                e->output.h);
+       if (!re->win)
+         {
+            free(re);
+            e->engine.data.output = NULL;
+            return;
+         }
+
+       evas_common_cpu_init();
+       
+       evas_common_blend_init();
+       evas_common_image_init();
+       evas_common_convert_init();
+       evas_common_scale_init();
+       evas_common_rectangle_init();
+       evas_common_gradient_init();
+       evas_common_polygon_init();
+       evas_common_line_init();
+       evas_common_font_init();
+       evas_common_draw_init();
+       evas_common_tilebuf_init();
+     }
+   else
+     {
+       re = e->engine.data.output;
+       eng_window_free(re->win);
+       re->win = eng_window_new(info->info.display,
+                                info->info.drawable,
+                                0,/* FIXME: screen 0 assumption */
+                                info->info.visual,
+                                info->info.colormap,
+                                info->info.depth,
+                                e->output.w,
+                                e->output.h);
+     }
+   if (!e->engine.data.output) return;
+   if (!e->engine.data.context)
+     e->engine.data.context =
+     e->engine.func->context_new(e->engine.data.output);
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   eng_window_free(re->win);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->win->w = w;
+   re->win->h = h;
+   evas_gl_common_context_resize(re->win->gl_context, w, h);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_gl_common_context_resize(re->win->gl_context, re->win->w, re->win->h);
+   /* smple bounding box */
+   if (!re->win->draw.redraw)
+     {
+#if 0
+       re->win->draw.x1 = x;
+       re->win->draw.y1 = y;
+       re->win->draw.x2 = x + w - 1;
+       re->win->draw.y2 = y + h - 1;
+#else
+       re->win->draw.x1 = 0;
+       re->win->draw.y1 = 0;
+       re->win->draw.x2 = re->win->w - 1;
+       re->win->draw.y2 = re->win->h - 1;
+#endif
+     }
+   else
+     {
+       if (x < re->win->draw.x1) re->win->draw.x1 = x;
+       if (y < re->win->draw.y1) re->win->draw.y1 = y;
+       if ((x + w - 1) > re->win->draw.x2) re->win->draw.x2 = x + w - 1;
+       if ((y + h - 1) > re->win->draw.y2) re->win->draw.y2 = y + h - 1;
+     }
+   re->win->draw.redraw = 1;
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->win->draw.redraw = 0;
+//   printf("GL: finish update cycle!\n");
+}
+
+/* at least the nvidia drivers are so abysmal that copying from the backbuffer
+ * to the front using glCopyPixels() that you literally can WATCH it draw the
+ * pixels slowly across the screen with a window update taking multiple
+ * seconds - so workaround by doing a full buffer render as frankly GL isn't
+ * up to doing anything that isn't done by quake (etc.)
+ */
+#define SLOW_GL_COPY_RECT 1
+/* vsync games - not for now though */
+//#define VSYNC_TO_SCREEN 1
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* get the upate rect surface - return engine data as dummy */
+   if (!re->win->draw.redraw)
+     {
+//     printf("GL: NO updates!\n");
+       return NULL;
+     }
+//   printf("GL: update....!\n");
+#ifdef SLOW_GL_COPY_RECT
+   /* if any update - just return the whole canvas - works with swap 
+    * buffers then */
+   if (x) *x = 0;
+   if (y) *y = 0;
+   if (w) *w = re->win->w;
+   if (h) *h = re->win->h;
+   if (cx) *cx = 0;
+   if (cy) *cy = 0;
+   if (cw) *cw = re->win->w;
+   if (ch) *ch = re->win->h;
+#else
+   /* 1 update - INCREDIBLY SLOW if combined with swap_rect in flush. a gl
+    * problem where there just is no hardware path for somethnig that
+    * obviously SHOULD be there */
+   /* only 1 update to minimise gl context games and rendering multiple update
+    * regions as evas does with other engines
+    */
+   if (x) *x = re->win->draw.x1;
+   if (y) *y = re->win->draw.y1;
+   if (w) *w = re->win->draw.x2 - re->win->draw.x1 + 1;
+   if (h) *h = re->win->draw.y2 - re->win->draw.y1 + 1;
+   if (cx) *cx = re->win->draw.x1;
+   if (cy) *cy = re->win->draw.y1;
+   if (cw) *cw = re->win->draw.x2 - re->win->draw.x1 + 1;
+   if (ch) *ch = re->win->draw.y2 - re->win->draw.y1 + 1;
+#endif   
+   return re;
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* put back update surface.. in this case just unflag redraw */
+//   printf("GL: update done.\n");
+   re->win->draw.redraw = 0;
+   re->win->draw.drew = 1;
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!re->win->draw.drew) return;
+   re->win->draw.drew = 0;
+//   printf("GL: flush your mush!\n");
+   eng_window_use(re->win);
+
+#ifdef VSYNC_TO_SCREEN
+   glFlush();
+     {
+       unsigned int rc;
+   
+       glXGetVideoSyncSGI(&rc);
+       glXWaitVideoSyncSGI(2, (rc + 1) % 2, &rc);
+     }
+#endif   
+#ifdef SLOW_GL_COPY_RECT
+   glXSwapBuffers(re->win->disp, re->win->win);
+#else
+   /* SLOW AS ALL HELL! */
+   evas_gl_common_swap_rect(re->win->gl_context,
+                           re->win->draw.x1, re->win->draw.y1,
+                           re->win->draw.x2 - re->win->draw.x1 + 1,
+                           re->win->draw.y2 - re->win->draw.y1 + 1);
+#endif
+//   glFlush();
+//   glXWaitGL();
+//   XSync(re->win->disp, False);
+//   printf("SYNC! %i\n", fr++);
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_context_cutout_add(void *data, void *context, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in gl engine */
+}
+
+static void
+eng_context_cutout_clear(void *data, void *context)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   /* not used in gl engine */
+}
+
+static void
+eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   eng_window_use(re->win);
+   re->win->gl_context->dc = context;
+   evas_gl_common_rect_draw(re->win->gl_context, x, y, w, h);
+}
+
+static void
+eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->win->gl_context->dc = context;
+   evas_gl_common_line_draw(re->win->gl_context, x1, y1, x2, y2);
+}
+
+static void *
+eng_polygon_point_add(void *data, void *context, void *polygon, int x, int y)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return evas_gl_common_poly_point_add(polygon, x, y);
+
+}
+
+static void *
+eng_polygon_points_clear(void *data, void *context, void *polygon)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return evas_gl_common_poly_points_clear(polygon);
+}
+
+static void
+eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   re->win->gl_context->dc = context;
+   evas_gl_common_poly_draw(re->win->gl_context, polygon);
+}
+
+static void *
+eng_gradient_new(void *data)
+{
+   return evas_gl_common_gradient_new();
+}
+
+static void
+eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
+{
+   evas_gl_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
+}
+
+static void
+eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
+{
+   evas_gl_common_gradient_alpha_stop_add(gradient, a, delta);
+}
+
+static void
+eng_gradient_clear(void *data, void *gradient)
+{
+   evas_gl_common_gradient_clear(gradient);
+}
+
+static void
+eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
+{
+   evas_gl_common_gradient_color_data_set(gradient, map, len, has_alpha);
+}
+
+static void
+eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
+{
+   evas_gl_common_gradient_alpha_data_set(gradient, alpha_map, len);
+}
+
+static void
+eng_gradient_free(void *data, void *gradient)
+{
+   evas_gl_common_gradient_free(gradient);
+}
+
+static void
+eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
+{
+   evas_gl_common_gradient_fill_set(gradient, x, y, w, h);
+}
+
+static void
+eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
+{
+   evas_gl_common_gradient_fill_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
+{
+   evas_gl_common_gradient_fill_spread_set(gradient, spread);
+}
+
+static void
+eng_gradient_angle_set(void *data, void *gradient, double angle)
+{
+   evas_gl_common_gradient_map_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_offset_set(void *data, void *gradient, float offset)
+{
+   evas_gl_common_gradient_map_offset_set(gradient, offset);
+}
+
+static void
+eng_gradient_direction_set(void *data, void *gradient, int direction)
+{
+   evas_gl_common_gradient_map_direction_set(gradient, direction);
+}
+
+static void
+eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
+{
+   evas_gl_common_gradient_type_set(gradient, name, params);
+}
+
+static int
+eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   Render_Engine *re = (Render_Engine *)data;
+
+   re->win->gl_context->dc = context;
+   return evas_gl_common_gradient_is_opaque(re->win->gl_context, gradient, x, y, w, h);
+}
+
+static int
+eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   Render_Engine *re = (Render_Engine *)data;
+
+   re->win->gl_context->dc = context;
+   return evas_gl_common_gradient_is_visible(re->win->gl_context, gradient, x, y, w, h);
+}
+
+static void
+eng_gradient_render_pre(void *data, void *context, void *gradient)
+{
+   Render_Engine *re = (Render_Engine *)data;
+
+   re->win->gl_context->dc = context;
+   evas_gl_common_gradient_render_pre(re->win->gl_context, gradient);
+}
+
+static void
+eng_gradient_render_post(void *data, void *gradient)
+{
+   evas_gl_common_gradient_render_post(gradient);
+}
+
+static void
+eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   eng_window_use(re->win);
+   re->win->gl_context->dc = context;
+   evas_gl_common_gradient_draw(re->win->gl_context, gradient, x, y, w, h);
+}
+
+static int
+eng_image_alpha_get(void *data, void *image)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image) return 1;
+   im = image;
+   /* FIXME: can move to gl_common */
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (im->im->cache_entry.flags.alpha) return 1;
+      default:
+       break;
+     }
+   return 0;
+}
+
+static int
+eng_image_colorspace_get(void *data, void *image)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+   
+   re = (Render_Engine *)data;
+   if (!image) return EVAS_COLORSPACE_ARGB8888;
+   im = image;
+   return im->cs.space;
+}
+
+static void *
+eng_image_alpha_set(void *data, void *image, int has_alpha)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image) return NULL;
+   eng_window_use(re->win);
+   im = image;
+   /* FIXME: can move to gl_common */
+   if (im->cs.space != EVAS_COLORSPACE_ARGB8888) return im;
+   if ((has_alpha) && (im->im->cache_entry.flags.alpha)) return image;
+   else if ((!has_alpha) && (!im->im->cache_entry.flags.alpha)) return image;
+   if (im->references > 1)
+    {
+       Evas_GL_Image *im_new;
+
+       im_new = evas_gl_common_image_new_from_copied_data(im->gc, im->im->cache_entry.w, im->im->cache_entry.h, im->im->image.data,
+                                                          eng_image_alpha_get(data, image),
+                                                          eng_image_colorspace_get(data, image));
+       if (!im_new) return im;
+       evas_gl_common_image_free(im);
+       im = im_new;
+     }
+   else
+     evas_gl_common_image_dirty(im);
+   im->im->cache_entry.flags.alpha = has_alpha ? 1 : 0;
+   return image;
+}
+
+static void *
+eng_image_border_set(void *data, void *image, int l, int r, int t, int b)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   return image;
+}
+
+static void
+eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static char *
+eng_image_comment_get(void *data, void *image, char *key)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image) return NULL;
+   im = image;
+   return im->im->info.comment;
+}
+
+static char *
+eng_image_format_get(void *data, void *image)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   im = image;
+   return NULL;
+}
+
+static void
+eng_image_colorspace_set(void *data, void *image, int cspace)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+   
+   re = (Render_Engine *)data;
+   if (!image) return;
+   im = image;
+   /* FIXME: can move to gl_common */
+   if (im->cs.space == cspace) return;
+   evas_cache_image_colorspace(&im->im->cache_entry, cspace);
+   switch (cspace)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (im->cs.data)
+         {
+            if (!im->cs.no_free) free(im->cs.data);
+            im->cs.data = NULL;
+            im->cs.no_free = 0;
+         }
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       if (im->tex) evas_gl_common_texture_free(im->tex);
+       im->tex = NULL;
+       if (im->cs.data)
+         {
+            if (!im->cs.no_free) free(im->cs.data);
+         }
+       im->cs.data = calloc(1, im->im->cache_entry.h * sizeof(unsigned char *) * 2);
+       im->cs.no_free = 0;
+       break;
+      default:
+       abort();
+       break;
+     }
+   im->cs.space = cspace;
+}
+
+static void
+eng_image_native_set(void *data, void *image, void *native)
+{
+}
+
+static void *
+eng_image_native_get(void *data, void *image)
+{
+   return NULL;
+}
+
+static void *
+eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   *error = 0;
+   eng_window_use(re->win);
+   return evas_gl_common_image_load(re->win->gl_context, file, key, lo);
+}
+
+static void *
+eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   eng_window_use(re->win);
+   return evas_gl_common_image_new_from_data(re->win->gl_context, w, h, image_data, alpha, cspace);
+}
+
+static void *
+eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   eng_window_use(re->win);
+   return evas_gl_common_image_new_from_copied_data(re->win->gl_context, w, h, image_data, alpha, cspace);
+}
+
+static void
+eng_image_free(void *data, void *image)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!image) return;
+   eng_window_use(re->win);
+   evas_gl_common_image_free(image);
+}
+
+static void
+eng_image_size_get(void *data, void *image, int *w, int *h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!image)
+     {
+       *w = 0;
+       *h = 0;
+       return;
+     }
+   if (w) *w = ((Evas_GL_Image *)image)->im->cache_entry.w;
+   if (h) *h = ((Evas_GL_Image *)image)->im->cache_entry.h;
+}
+
+static void *
+eng_image_size_set(void *data, void *image, int w, int h)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im, *im_old;
+
+   re = (Render_Engine *)data;
+   if (!image) return NULL;
+   eng_window_use(re->win);
+   im_old = image;
+   if ((eng_image_colorspace_get(data, image) == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (eng_image_colorspace_get(data, image) == EVAS_COLORSPACE_YCBCR422P709_PL))
+     w &= ~0x1;
+   if ((im_old) && (im_old->im->cache_entry.w == w) && (im_old->im->cache_entry.h == h))
+     return image;
+   if (im_old)
+     {
+       im = evas_gl_common_image_new(re->win->gl_context, w, h, 
+                                     eng_image_alpha_get(data, image),
+                                     eng_image_colorspace_get(data, image));
+/*     
+       evas_common_load_image_data_from_file(im_old->im);
+       if (im_old->im->image->data)
+         {
+            evas_common_blit_rectangle(im_old->im, im->im, 0, 0, w, h, 0, 0);
+            evas_common_cpu_end_opt();
+         }
+ */
+       evas_gl_common_image_free(im_old);
+     }
+   else
+     im = evas_gl_common_image_new(re->win->gl_context, w, h, 1, EVAS_COLORSPACE_ARGB8888);
+   return im;
+}
+
+static void *
+eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!image) return NULL;
+   evas_gl_common_image_dirty(image);
+   return image;
+}
+
+static void *
+eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im;
+
+   re = (Render_Engine *)data;
+   if (!image)
+     {
+       *image_data = NULL;
+       return NULL;
+     }
+   im = image;
+   eng_window_use(re->win);
+   evas_cache_image_load_data(&im->im->cache_entry);
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (to_write)
+         {
+            if (im->references > 1)
+              {
+                 Evas_GL_Image *im_new;
+                 
+                 im_new = evas_gl_common_image_new_from_copied_data(im->gc, im->im->cache_entry.w, im->im->cache_entry.h, im->im->image.data,
+                                                                    eng_image_alpha_get(data, image),
+                                                                    eng_image_colorspace_get(data, image));
+                 if (!im_new)
+                   {
+                      *image_data = NULL;
+                      return im;
+                   }
+                 evas_gl_common_image_free(im);
+                 im = im_new;
+              }
+            else
+              evas_gl_common_image_dirty(im);
+         }
+       *image_data = im->im->image.data;
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       *image_data = im->cs.data;
+       break;
+      default:
+       abort();
+       break;
+     }
+   return im;
+}
+
+static void *
+eng_image_data_put(void *data, void *image, DATA32 *image_data)
+{
+   Render_Engine *re;
+   Evas_GL_Image *im, *im2;
+
+   re = (Render_Engine *)data;
+   if (!image) return NULL;
+   im = image;
+   eng_window_use(re->win);
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (image_data != im->im->image.data)
+         {
+            int w, h;
+            
+            w = im->im->cache_entry.w;
+            h = im->im->cache_entry.h;
+            im2 = eng_image_new_from_data(data, w, h, image_data,
+                                          eng_image_alpha_get(data, image),
+                                          eng_image_colorspace_get(data, image));
+            if (!im2) return im;
+            evas_gl_common_image_free(im);
+            im = im2;
+         }
+        break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+        if (image_data != im->cs.data)
+         {
+            if (im->cs.data)
+              {
+                 if (!im->cs.no_free) free(im->cs.data);
+              }
+            im->cs.data = image_data;
+         }
+       break;
+      default:
+       abort();
+       break;
+     }
+   /* hmmm - but if we wrote... why bother? */
+   evas_gl_common_image_dirty(im);
+   return im;
+}
+
+static void
+eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (!image) return;
+   eng_window_use(re->win);
+   re->win->gl_context->dc = context;
+   evas_gl_common_image_draw(re->win->gl_context, image,
+                            src_x, src_y, src_w, src_h,
+                            dst_x, dst_y, dst_w, dst_h,
+                            smooth);
+}
+
+static void
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+     {
+       static RGBA_Image *im = NULL;
+
+       if (!im)
+          im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+        evas_cache_image_surface_alloc(&im->cache_entry, re->win->w, re->win->h);
+
+       evas_common_draw_context_font_ext_set(context,
+                                             re->win->gl_context,
+                                             evas_gl_font_texture_new,
+                                             evas_gl_font_texture_free,
+                                             evas_gl_font_texture_draw);
+       evas_common_font_draw(im, context, font, x, y, text);
+       evas_common_draw_context_font_ext_set(context,
+                                             NULL,
+                                             NULL,
+                                             NULL,
+                                             NULL);
+     }
+}
+
+/* private engine functions the calling prog can use */
+
+static Visual *
+eng_best_visual_get(Display *disp, int screen)
+{
+   if (!disp) return NULL;
+   if (!_evas_gl_x11_vi)
+     _evas_gl_x11_vi = glXChooseVisual(disp, screen,
+                                      _evas_gl_x11_configuration);
+   if (!_evas_gl_x11_vi) return NULL;
+   return _evas_gl_x11_vi->visual;
+}
+
+static Colormap
+eng_best_colormap_get(Display *disp, int screen)
+{
+   if (!disp) return 0;
+   if (!_evas_gl_x11_vi)
+     eng_best_visual_get(disp, screen);
+   if (!_evas_gl_x11_vi) return 0;
+   _evas_gl_x11_cmap = XCreateColormap(disp, RootWindow(disp, screen),
+                               _evas_gl_x11_vi->visual, 0);
+   return _evas_gl_x11_cmap;
+}
+
+static int
+eng_best_depth_get(Display *disp, int screen)
+{
+   if (!disp) return 0;
+   if (!_evas_gl_x11_vi)
+     eng_best_visual_get(disp, screen);
+   if (!_evas_gl_x11_vi) return 0;
+   return _evas_gl_x11_vi->depth;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+   #define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(context_cutout_add);
+   ORD(context_cutout_clear);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   ORD(rectangle_draw);
+   ORD(line_draw);
+   ORD(polygon_point_add);
+   ORD(polygon_points_clear);
+   ORD(polygon_draw);
+   ORD(gradient_new);
+   ORD(gradient_free);
+   ORD(gradient_color_stop_add);
+   ORD(gradient_alpha_stop_add);
+   ORD(gradient_color_data_set);
+   ORD(gradient_alpha_data_set);
+   ORD(gradient_clear);
+   ORD(gradient_fill_set);
+   ORD(gradient_fill_angle_set);
+   ORD(gradient_fill_spread_set);
+   ORD(gradient_angle_set);
+   ORD(gradient_offset_set);
+   ORD(gradient_direction_set);
+   ORD(gradient_type_set);
+   ORD(gradient_is_opaque);
+   ORD(gradient_is_visible);
+   ORD(gradient_render_pre);
+   ORD(gradient_render_post);
+   ORD(gradient_draw);
+   ORD(image_load);
+   ORD(image_new_from_data);
+   ORD(image_new_from_copied_data);
+   ORD(image_free);
+   ORD(image_size_get);
+   ORD(image_size_set);
+   ORD(image_dirty_region);
+   ORD(image_data_get);
+   ORD(image_data_put);
+   ORD(image_alpha_set);
+   ORD(image_alpha_get);
+   ORD(image_border_set);
+   ORD(image_border_get);
+   ORD(image_draw);
+   ORD(image_comment_get);
+   ORD(image_format_get);
+   ORD(image_colorspace_set);
+   ORD(image_colorspace_get);
+   ORD(image_native_set);
+   ORD(image_native_get);
+   ORD(font_draw);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_ENGINE,
+     "gl_x11",
+     "none"
+};
diff --git a/src/modules/engines/gl_x11/evas_engine.h b/src/modules/engines/gl_x11/evas_engine.h
new file mode 100644 (file)
index 0000000..6968ddb
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+#include <X11/Xlib.h>
+#include <X11/Xatom.h>
+#include <X11/Xutil.h>
+
+#include "evas_gl_common.h"
+
+typedef struct _Evas_GL_X11_Window Evas_GL_X11_Window;
+
+struct _Evas_GL_X11_Window
+{
+   Display         *disp;
+   Window           win;
+   int              w, h;
+   int              screen;
+   XVisualInfo     *visualinfo;
+   Visual          *visual;
+   Colormap         colormap;
+   int              depth;
+   GLXContext       context;
+   Evas_GL_Context *gl_context;
+   struct {
+      int              redraw : 1;
+      int              drew : 1;
+      int              x1, y1, x2, y2;
+   } draw;
+};
+
+extern int          _evas_gl_x11_configuration[9];
+extern XVisualInfo *_evas_gl_x11_vi;
+extern Colormap     _evas_gl_x11_cmap;
+
+Evas_GL_X11_Window *
+  eng_window_new(Display *disp,
+                Window   win,
+                int      screen,
+                Visual  *vis,
+                Colormap cmap,
+                int      depth,
+                int      w,
+                int      h);
+void
+  eng_window_free(Evas_GL_X11_Window *gw);
+void
+  eng_window_use(Evas_GL_X11_Window *gw);
+
+#endif
diff --git a/src/modules/engines/gl_x11/evas_x_main.c b/src/modules/engines/gl_x11/evas_x_main.c
new file mode 100644 (file)
index 0000000..bccd783
--- /dev/null
@@ -0,0 +1,87 @@
+#include "evas_gl_common.h"
+
+#include <X11/Xlib.h>
+#include <GL/gl.h>
+#include <GL/glu.h>
+#include <GL/glx.h>
+
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_GL_X11.h"
+
+static Evas_GL_X11_Window *_evas_gl_x11_window = NULL;
+
+/* FIXME: this will only work for 1 display connection... :( */
+static GLXContext context = 0;
+
+int _evas_gl_x11_configuration[9] =
+{
+   GLX_DOUBLEBUFFER,
+     GLX_RGBA,
+     GLX_RED_SIZE,   1,
+     GLX_GREEN_SIZE, 1,
+     GLX_BLUE_SIZE,  1,
+     None
+};
+
+XVisualInfo *_evas_gl_x11_vi = NULL;
+Colormap     _evas_gl_x11_cmap = 0;
+
+Evas_GL_X11_Window *
+eng_window_new(Display *disp,
+              Window   win,
+              int      screen,
+              Visual  *vis,
+              Colormap cmap,
+              int      depth,
+              int      w,
+              int      h)
+{
+   Evas_GL_X11_Window *gw;
+
+   if (!_evas_gl_x11_vi) return NULL;
+   gw = calloc(1, sizeof(Evas_GL_X11_Window));
+   if (!gw) return NULL;
+   gw->disp = disp;
+   gw->win = win;
+   gw->screen = screen;
+   gw->visual = vis;
+   gw->colormap = cmap;
+   gw->depth = depth;
+
+   gw->visualinfo = _evas_gl_x11_vi;
+   if (!context)
+     context = glXCreateContext(disp, gw->visualinfo, NULL, GL_TRUE);
+   gw->context = context;
+   glXMakeCurrent(gw->disp, gw->win, gw->context);
+   gw->gl_context = evas_gl_common_context_new();
+   if (!gw->gl_context)
+     {
+       glXDestroyContext(gw->disp, gw->context);
+       free(gw);
+       return NULL;
+     }
+   evas_gl_common_context_resize(gw->gl_context, w, h);
+   return gw;
+}
+
+void
+eng_window_free(Evas_GL_X11_Window *gw)
+{
+   if (gw == _evas_gl_x11_window) _evas_gl_x11_window = NULL;
+   evas_gl_common_context_free(gw->gl_context);
+//   glXDestroyContext(gw->disp, gw->context);
+   free(gw);
+}
+
+void
+eng_window_use(Evas_GL_X11_Window *gw)
+{
+   if (_evas_gl_x11_window != gw)
+     {
+       _evas_gl_x11_window = gw;
+       glXMakeCurrent(gw->disp, gw->win, gw->context);
+     }
+   evas_gl_common_context_use(gw->gl_context);
+}
diff --git a/src/modules/engines/glitz_x11/.cvsignore b/src/modules/engines/glitz_x11/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/glitz_x11/Evas_Engine_Glitz_X11.h b/src/modules/engines/glitz_x11/Evas_Engine_Glitz_X11.h
new file mode 100644 (file)
index 0000000..1593f8e
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef _EVAS_ENGINE_GLITZ_X11_H
+#define _EVAS_ENGINE_GLITZ_X11_H
+
+#include <X11/Xlib.h>
+
+typedef struct _Evas_Engine_Info_Glitz_X11              Evas_Engine_Info_Glitz_X11;
+
+struct _Evas_Engine_Info_Glitz_X11
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   /* engine specific data & parameters it needs to set up */
+   struct {
+      Display       *display;
+      Drawable       drawable;
+      Pixmap         mask;
+      Visual        *visual;
+      unsigned char  destination_alpha : 1;
+   } info;
+};
+#endif
+
+
diff --git a/src/modules/engines/glitz_x11/Makefile.am b/src/modules/engines/glitz_x11/Makefile.am
new file mode 100644 (file)
index 0000000..c3ffa61
--- /dev/null
@@ -0,0 +1,44 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@ \
+@x_cflags@ \
+@GLITZ_CFLAGS@
+
+if BUILD_ENGINE_GLITZ_X11
+
+pkgdir = $(libdir)/evas/modules/engines/glitz_x11/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES        = module.la
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_engine_ximage.c \
+evas_engine_glitz.c \
+evas_engine_image.c \
+evas_engine_font.c \
+evas_engine_gradient.c
+
+module_la_LIBADD = @x_libs@ @GLITZ_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Glitz_X11.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_engine_ximage.c \
+evas_engine_glitz.c \
+evas_engine_image.c \
+evas_engine_font.c \
+evas_engine_gradient.c \
+Evas_Engine_Glitz_X11.h
diff --git a/src/modules/engines/glitz_x11/evas_engine.c b/src/modules/engines/glitz_x11/evas_engine.c
new file mode 100644 (file)
index 0000000..3cc5097
--- /dev/null
@@ -0,0 +1,671 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Glitz_X11.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine        Render_Engine;
+typedef struct _Render_Engine_Update Render_Engine_Update;
+
+struct _Render_Engine_Update
+{
+   int x, y, w, h;
+// void *surface;
+};
+
+struct _Render_Engine
+{
+   Display              *disp;
+   Visual               *vis;
+   Drawable              win;
+   Pixmap                mask;
+   unsigned char         destination_alpha : 1;
+   
+   Tilebuf              *tb;
+   Tilebuf_Rect         *rects;
+   Evas_Object_List     *cur_rect;
+   int                   end : 1;
+   
+   Evas_List            *updates;
+};
+
+/* prototypes we will use here */
+static void *eng_info(Evas *e);
+static void eng_info_free(Evas *e, void *info);
+static void eng_setup(Evas *e, void *info);
+static void eng_output_free(void *data);
+static void eng_output_resize(void *data, int w, int h);
+static void eng_output_tile_size_set(void *data, int w, int h);
+static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_clear(void *data);
+static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h);
+static void eng_output_flush(void *data);
+static void eng_output_idle_flush(void *data);
+
+static void eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h);
+
+static void eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2);
+
+static void eng_polygon_draw(void *data, void *context, void *surface, void *polygon);
+
+static void *eng_gradient_new(void *data);
+static void eng_gradient_free(void *data, void *gradient);
+static void eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta);
+static void eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta);
+static void eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha);
+static void eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len);
+static void eng_gradient_clear(void *data, void *gradient);
+static void eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h);
+static void eng_gradient_fill_angle_set(void *data, void *gradient, double angle);
+static void eng_gradient_fill_spread_set(void *data, void *gradient, int spread);
+static void eng_gradient_angle_set(void *data, void *gradient, double angle);
+static void eng_gradient_offset_set(void *data, void *gradient, float offset);
+static void eng_gradient_direction_set(void *data, void *gradient, int direction);
+static void eng_gradient_type_set(void *data, void *gradient, char *name, char *params);
+static int eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h);
+static int eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h);
+static void eng_gradient_render_pre(void *data, void *context, void *gradient);
+static void eng_gradient_render_post(void *data, void *gradient);
+static void eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h);
+
+static void *eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo);
+static void *eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data);
+static void *eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data);
+static void eng_image_free(void *data, void *image);
+static void eng_image_size_get(void *data, void *image, int *w, int *h);
+static void *eng_image_size_set(void *data, void *image, int w, int h);
+static void *eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h);
+static void *eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data);
+static void *eng_image_data_put(void *data, void *image, DATA32 *image_data);
+static void *eng_image_alpha_set(void *data, void *image, int has_alpha);
+static int eng_image_alpha_get(void *data, void *image);
+static void *eng_image_border_set(void *data, void *image, int l, int r, int t, int b);
+static void eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b);
+static void eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth);
+static const char *eng_image_comment_get(void *data, void *image, char *key);
+static char *eng_image_format_get(void *data, void *image);
+static void eng_image_cache_flush(void *data);
+static void eng_image_cache_set(void *data, int bytes);
+static int eng_image_cache_get(void *data);
+
+static void eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text);
+
+/* internal engine routines */
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Glitz_X11 *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_Glitz_X11));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_Glitz_X11 *in;
+
+   in = (Evas_Engine_Info_Glitz_X11 *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_Glitz_X11 *info;
+   int resize = 1;
+
+   info = (Evas_Engine_Info_Glitz_X11 *)in;
+   if (!e->engine.data.output)
+     {
+       re = calloc(1, sizeof(Render_Engine));
+       evas_common_cpu_init();
+       evas_common_blend_init();
+       evas_common_image_init();
+       evas_common_convert_init();
+       evas_common_scale_init();
+       evas_common_rectangle_init();
+       evas_common_gradient_init();
+       evas_common_polygon_init();
+       evas_common_line_init();
+       evas_common_font_init();
+       evas_common_draw_init();
+       evas_common_tilebuf_init();
+       re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+       e->engine.data.output = re;
+       resize = 0;
+     }
+   re = e->engine.data.output;
+   if (!re) return;
+   
+   if (!e->engine.data.context) e->engine.data.context = e->engine.func->context_new(e->engine.data.output);
+   
+   re->disp = info->info.display;
+   re->vis = info->info.visual;
+   re->win = info->info.drawable;
+   re->mask = info->info.mask;
+   re->destination_alpha = info->info.destination_alpha;
+   
+   if (resize)
+     {
+       if (re->tb) evas_common_tilebuf_free(re->tb);
+       if ((e->output.w > 0) && (e->output.h > 0))
+         re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       else
+         re->tb = evas_common_tilebuf_new(1, 1);
+        if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+     }
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+   while (re->updates)
+     {
+       Render_Engine_Update *reu;
+       
+       reu = re->updates->data;
+       re->updates = evas_list_remove_list(re->updates, re->updates);
+//     surface_free(reu->surface);
+       free(reu);
+     }
+   if (re->tb) evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   free(re);
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb) evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *)re->rects;
+     }
+   if (!re->cur_rect) return NULL;
+   rect = (Tilebuf_Rect *)re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   *cx = 0; *cy = 0; *cw = uw; *ch = uh;
+   return NULL;
+   if ((re->destination_alpha) || (re->mask))
+     {
+//     Xrender_Surface *surface;
+//     
+//     surface = _xr_render_surface_new(re->xinf, uw, uh, re->xinf->fmt32, 1);
+//     _xr_render_surface_solid_rectangle_set(surface, 0, 0, 0, 0, 0, 0, uw, uh);
+//     return surface;
+     }
+//   return _xr_render_surface_new(re->xinf, uw, uh, re->xinf->fmt24, 0);
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+   Render_Engine_Update *reu;
+   
+   re = (Render_Engine *)data;
+   reu = malloc(sizeof(Render_Engine_Update));
+   if (!reu) return;
+   reu->x = x;
+   reu->y = y;
+   reu->w = w;
+   reu->h = h;
+//   reu->surface = surface;
+   re->updates = evas_list_append(re->updates, reu);
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   while (re->updates)
+     {
+       Render_Engine_Update *reu;
+       
+       reu = re->updates->data;
+       re->updates = evas_list_remove_list(re->updates, re->updates);
+//     if (re->mask_output)
+//       {
+//          Xrender_Surface *tsurf;
+//          
+//          _xr_render_surface_copy(reu->surface, re->output, 0, 0,
+//                                  reu->x, reu->y, reu->w, reu->h);
+//          tsurf = _xr_render_surface_new(re->xinf, reu->w, reu->h, re->xinf->fmt1, 1);
+//          if (tsurf)
+//            {
+//               _xr_render_surface_copy(reu->surface, tsurf, 0, 0,
+//                                       0, 0, reu->w, reu->h);
+//               _xr_render_surface_copy(tsurf, re->mask_output, 0, 0,
+//                                       reu->x, reu->y, reu->w, reu->h);
+//               _xr_render_surface_free(tsurf);
+//            }
+//       }
+//     else
+//       {
+//          _xr_render_surface_copy(reu->surface, re->output, 0, 0,
+//                                  reu->x, reu->y, reu->w, reu->h);
+//       }
+//     _xr_render_surface_free(reu->surface);
+       free(reu);
+     }
+   XSync(re->disp, False);
+//   _xr_image_info_pool_flush(re->xinf, 0, 0);
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
+{
+}
+
+static void
+eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
+{
+}
+
+static void
+eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
+{
+}
+
+static void *
+eng_gradient_new(void *data)
+{
+   Render_Engine *re = (Render_Engine *)data;
+
+   return NULL;
+}
+
+static void
+eng_gradient_free(void *data, void *gradient)
+{
+}
+
+static void
+eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
+{
+}
+
+static void
+eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
+{
+}
+
+static void
+eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
+{
+}
+
+static void
+eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
+{
+}
+
+static void
+eng_gradient_clear(void *data, void *gradient)
+{
+}
+
+static void
+eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
+{
+}
+
+static void
+eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
+{
+}
+
+static void
+eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
+{
+}
+
+static void
+eng_gradient_angle_set(void *data, void *gradient, double angle)
+{
+}
+
+static void
+eng_gradient_offset_set(void *data, void *gradient, float offset)
+{
+}
+
+static void
+eng_gradient_direction_set(void *data, void *gradient, int direction)
+{
+}
+
+static void
+eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
+{
+}
+
+static int
+eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   return 0;
+}
+
+static int
+eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   if (!context || !gradient)  return 0;
+   return 1;
+}
+
+static void
+eng_gradient_render_pre(void *data, void *context, void *gradient)
+{
+}
+
+static void
+eng_gradient_render_post(void *data, void *gradient)
+{
+}
+
+static void
+eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
+{
+}
+
+static void *
+eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
+{
+   return NULL;
+}
+
+static void *
+eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data)
+{
+   return NULL;
+}
+
+static void *
+eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data)
+{
+   return NULL;
+}
+
+static void
+eng_image_free(void *data, void *image)
+{
+}
+
+static void
+eng_image_size_get(void *data, void *image, int *w, int *h)
+{
+}
+
+static void *
+eng_image_size_set(void *data, void *image, int w, int h)
+{
+   return image;
+}
+
+static void *
+eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h)
+{
+   return image;
+}
+
+static void *
+eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data)
+{
+   return image;
+}
+
+static void *
+eng_image_data_put(void *data, void *image, DATA32 *image_data)
+{
+   return image;
+}
+
+static void *
+eng_image_alpha_set(void *data, void *image, int has_alpha)
+{
+   return image;
+}
+
+static int
+eng_image_alpha_get(void *data, void *image)
+{
+   return 0;
+}
+
+static void *
+eng_image_border_set(void *data, void *image, int l, int r, int t, int b)
+{
+   return image;
+}
+
+static void
+eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+{
+}
+
+static void
+eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
+{
+}
+
+static const char *
+eng_image_comment_get(void *data, void *image, char *key)
+{
+   return NULL;
+}
+
+static char *
+eng_image_format_get(void *data, void *image)
+{
+   return NULL;
+}
+
+static void
+eng_image_cache_flush(void *data)
+{
+   int tmp_size;
+
+//   tmp_size = _xre_image_cache_get();
+   pfunc.image_cache_flush(data);
+//   _xre_image_cache_set(0);
+//   _xre_image_cache_set(tmp_size);
+}
+
+static void
+eng_image_cache_set(void *data, int bytes)
+{
+   pfunc.image_cache_set(data, bytes);
+//   _xre_image_cache_set(bytes);
+}
+
+static int
+eng_image_cache_get(void *data)
+{
+   return pfunc.image_cache_get(data);
+}
+
+static void
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
+{
+}
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   ORD(rectangle_draw);
+   ORD(line_draw);
+   ORD(polygon_draw);
+   ORD(gradient_new);
+   ORD(gradient_free);
+   ORD(gradient_color_stop_add);
+   ORD(gradient_alpha_stop_add);
+   ORD(gradient_color_data_set);
+   ORD(gradient_alpha_data_set);
+   ORD(gradient_clear);
+   ORD(gradient_fill_set);
+   ORD(gradient_fill_angle_set);
+   ORD(gradient_fill_spread_set);
+   ORD(gradient_angle_set);
+   ORD(gradient_offset_set);
+   ORD(gradient_direction_set);
+   ORD(gradient_type_set);
+   ORD(gradient_is_opaque);
+   ORD(gradient_is_visible);
+   ORD(gradient_render_pre);
+   ORD(gradient_render_post);
+   ORD(gradient_draw);
+   ORD(image_load);
+   ORD(image_new_from_data);
+   ORD(image_new_from_copied_data);
+   ORD(image_free);
+   ORD(image_size_get);
+   ORD(image_size_set);
+   ORD(image_dirty_region);
+   ORD(image_data_get);
+   ORD(image_data_put);
+   ORD(image_alpha_set);
+   ORD(image_alpha_get);
+   ORD(image_border_set);
+   ORD(image_border_get);
+   ORD(image_draw);
+   ORD(image_comment_get);
+   ORD(image_format_get);
+   ORD(image_cache_flush);
+   ORD(image_cache_set);
+   ORD(image_cache_get);
+   ORD(font_draw);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi = 
+{
+   EVAS_MODULE_API_VERSION, 
+     EVAS_MODULE_TYPE_ENGINE,
+     "glitz_x11",
+     "none"
+};
+
diff --git a/src/modules/engines/glitz_x11/evas_engine.h b/src/modules/engines/glitz_x11/evas_engine.h
new file mode 100644 (file)
index 0000000..b0a08bb
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/Xatom.h>
+
+#include <glitz.h>
+#include <glitz-glx.h>
+    
+#endif
diff --git a/src/modules/engines/glitz_x11/evas_engine_font.c b/src/modules/engines/glitz_x11/evas_engine_font.c
new file mode 100644 (file)
index 0000000..12b0c14
--- /dev/null
@@ -0,0 +1,4 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Glitz_X11.h"
diff --git a/src/modules/engines/glitz_x11/evas_engine_glitz.c b/src/modules/engines/glitz_x11/evas_engine_glitz.c
new file mode 100644 (file)
index 0000000..9e4c852
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "evas_common.h"
+//#include "evas_macros.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Glitz_X11.h"
+#include <math.h>
diff --git a/src/modules/engines/glitz_x11/evas_engine_gradient.c b/src/modules/engines/glitz_x11/evas_engine_gradient.c
new file mode 100644 (file)
index 0000000..2d579cd
--- /dev/null
@@ -0,0 +1,5 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Glitz_X11.h"
+#include <math.h>
diff --git a/src/modules/engines/glitz_x11/evas_engine_image.c b/src/modules/engines/glitz_x11/evas_engine_image.c
new file mode 100644 (file)
index 0000000..12b0c14
--- /dev/null
@@ -0,0 +1,4 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Glitz_X11.h"
diff --git a/src/modules/engines/glitz_x11/evas_engine_ximage.c b/src/modules/engines/glitz_x11/evas_engine_ximage.c
new file mode 100644 (file)
index 0000000..12b0c14
--- /dev/null
@@ -0,0 +1,4 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Glitz_X11.h"
diff --git a/src/modules/engines/software_16/.cvsignore b/src/modules/engines/software_16/.cvsignore
new file mode 100644 (file)
index 0000000..09980ae
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/modules/engines/software_16/Makefile.am b/src/modules/engines/software_16/Makefile.am
new file mode 100644 (file)
index 0000000..63ad485
--- /dev/null
@@ -0,0 +1,26 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+if BUILD_ENGINE_SOFTWARE_16
+
+pkgdir = $(libdir)/evas/modules/engines/software_16/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES  = \
+evas_engine.c
+
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+endif
diff --git a/src/modules/engines/software_16/evas_engine.c b/src/modules/engines/software_16/evas_engine.c
new file mode 100644 (file)
index 0000000..76b591b
--- /dev/null
@@ -0,0 +1,845 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_common_soft16.h"
+
+/*
+ *****
+ **
+ ** ENGINE ROUTINES
+ **
+ *****
+ */
+
+#define NOT_IMPLEMENTED()                                               \
+   fprintf(stderr, "NOT_IMPLEMENTED: %s() at %s:%d\n",                  \
+           __FUNCTION__, __FILE__, __LINE__)
+
+static void *
+eng_context_new(void *data)
+{
+   return evas_common_draw_context_new();
+}
+
+static void
+eng_context_free(void *data, void *context)
+{
+   evas_common_draw_context_free(context);
+}
+
+static void
+eng_context_clip_set(void *data, void *context, int x, int y, int w, int h)
+{
+   evas_common_draw_context_set_clip(context, x, y, w, h);
+}
+
+static void
+eng_context_clip_clip(void *data, void *context, int x, int y, int w, int h)
+{
+   evas_common_draw_context_clip_clip(context, x, y, w, h);
+}
+
+static void
+eng_context_clip_unset(void *data, void *context)
+{
+   evas_common_draw_context_unset_clip(context);
+}
+
+static int
+eng_context_clip_get(void *data, void *context, int *x, int *y, int *w, int *h)
+{
+   *x = ((RGBA_Draw_Context *)context)->clip.x;
+   *y = ((RGBA_Draw_Context *)context)->clip.y;
+   *w = ((RGBA_Draw_Context *)context)->clip.w;
+   *h = ((RGBA_Draw_Context *)context)->clip.h;
+   return ((RGBA_Draw_Context *)context)->clip.use;
+}
+
+static void
+eng_context_color_set(void *data, void *context, int r, int g, int b, int a)
+{
+   evas_common_draw_context_set_color(context, r, g, b, a);
+}
+
+static int
+eng_context_color_get(void *data, void *context, int *r, int *g, int *b, int *a)
+{
+   *r = (int)(R_VAL(&((RGBA_Draw_Context *)context)->col.col));
+   *g = (int)(G_VAL(&((RGBA_Draw_Context *)context)->col.col));
+   *b = (int)(B_VAL(&((RGBA_Draw_Context *)context)->col.col));
+   *a = (int)(A_VAL(&((RGBA_Draw_Context *)context)->col.col));
+   return 1;
+}
+
+static void
+eng_context_multiplier_set(void *data, void *context, int r, int g, int b, int a)
+{
+   evas_common_draw_context_set_multiplier(context, r, g, b, a);
+}
+
+static void
+eng_context_multiplier_unset(void *data, void *context)
+{
+   evas_common_draw_context_unset_multiplier(context);
+}
+
+static int
+eng_context_multiplier_get(void *data, void *context, int *r, int *g, int *b, int *a)
+{
+   *r = (int)(R_VAL(&((RGBA_Draw_Context *)context)->mul.col));
+   *g = (int)(G_VAL(&((RGBA_Draw_Context *)context)->mul.col));
+   *b = (int)(B_VAL(&((RGBA_Draw_Context *)context)->mul.col));
+   *a = (int)(A_VAL(&((RGBA_Draw_Context *)context)->mul.col));
+   return ((RGBA_Draw_Context *)context)->mul.use;
+}
+
+static void
+eng_context_cutout_add(void *data, void *context, int x, int y, int w, int h)
+{
+   evas_common_draw_context_add_cutout(context, x, y, w, h);
+}
+
+static void
+eng_context_cutout_clear(void *data, void *context)
+{
+   evas_common_draw_context_clear_cutouts(context);
+}
+
+static void
+eng_context_anti_alias_set(void *data, void *context, unsigned char aa)
+{
+   evas_common_draw_context_set_anti_alias(context, aa);
+}
+
+static unsigned char
+eng_context_anti_alias_get(void *data, void *context)
+{
+   return ((RGBA_Draw_Context *)context)->anti_alias;
+}
+
+static void
+eng_context_color_interpolation_set(void *data, void *context, int color_space)
+{
+   evas_common_draw_context_set_color_interpolation(context, color_space);
+}
+
+static int
+eng_context_color_interpolation_get(void *data, void *context)
+{
+   return ((RGBA_Draw_Context *)context)->interpolation.color_space;
+}
+
+static void
+eng_context_render_op_set(void *data, void *context, int op)
+{
+   evas_common_draw_context_set_render_op(context, op);
+}
+
+static int
+eng_context_render_op_get(void *data, void *context)
+{
+   return ((RGBA_Draw_Context *)context)->render_op;
+}
+
+
+
+static void
+eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
+{
+   soft16_rectangle_draw(surface, context, x, y, w, h);
+}
+
+static void
+eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
+{
+   soft16_line_draw(surface, context, x1, y1, x2, y2);
+}
+
+static void *
+eng_polygon_point_add(void *data, void *context, void *polygon, int x, int y)
+{
+   return evas_common_polygon_point_add(polygon, x, y);
+}
+
+static void *
+eng_polygon_points_clear(void *data, void *context, void *polygon)
+{
+   return evas_common_polygon_points_clear(polygon);
+}
+
+static void
+eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
+{
+   soft16_polygon_draw(surface, context, polygon);
+}
+
+static void *
+eng_gradient_new(void *data)
+{
+   NOT_IMPLEMENTED();
+   return NULL;
+//   return evas_common_gradient_new();
+}
+
+static void
+eng_gradient_free(void *data, void *gradient)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_free(gradient);
+}
+
+static void
+eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
+}
+
+static void
+eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_alpha_stop_add(gradient, a, delta);
+}
+
+static void
+eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_color_data_set(gradient, map, len, has_alpha);
+}
+
+static void
+eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_alpha_data_set(gradient, alpha_map, len);
+}
+
+static void
+eng_gradient_clear(void *data, void *gradient)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_clear(gradient);
+}
+
+static void
+eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_fill_set(gradient, x, y, w, h);
+}
+
+static void
+eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_fill_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_fill_spread_set(gradient, spread);
+}
+
+static void
+eng_gradient_angle_set(void *data, void *gradient, double angle)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_map_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_offset_set(void *data, void *gradient, float offset)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_map_offset_set(gradient, offset);
+}
+
+static void
+eng_gradient_direction_set(void *data, void *gradient, int direction)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_map_direction_set(gradient, direction);
+}
+
+static void
+eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
+{
+   NOT_IMPLEMENTED();
+//   evas_common_gradient_type_set(gradient, name, params);
+}
+
+static int
+eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   NOT_IMPLEMENTED();
+   return 0;
+//   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
+//   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
+//
+//   if (!dc || !gr || !gr->type.geometer)  return 0;
+//   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
+//              gr->type.geometer->has_mask(gr, dc->render_op));
+}
+
+static int
+eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   NOT_IMPLEMENTED();
+   return 0;
+//   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
+//
+//   if (!dc || !gradient)  return 0;
+//   return 1;
+}
+
+static void
+eng_gradient_render_pre(void *data, void *context, void *gradient)
+{
+//   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
+//   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
+//   int  len;
+//
+//   if (!dc || !gr || !gr->type.geometer)  return;
+//   gr->type.geometer->geom_set(gr);
+//   len = gr->type.geometer->get_map_len(gr);
+//   evas_common_gradient_map(dc, gr, len);
+   NOT_IMPLEMENTED();
+}
+
+static void
+eng_gradient_render_post(void *data, void *gradient)
+{
+   NOT_IMPLEMENTED();
+}
+
+static void
+eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
+{
+//   evas_common_gradient_draw(surface, context, x, y, w, h, gradient);
+//   evas_common_cpu_end_opt();
+   NOT_IMPLEMENTED();
+}
+
+static int
+eng_image_alpha_get(void *data, void *image)
+{
+   Soft16_Image *im;
+
+   if (!image) return 0;
+   im = image;
+   return im->cache_entry.flags.alpha;
+}
+
+static int
+eng_image_colorspace_get(void *data, void *image)
+{
+   return EVAS_COLORSPACE_RGB565_A5P;
+}
+
+static void *
+eng_image_alpha_set(void *data, void *image, int have_alpha)
+{
+   if (!image) return NULL;
+   have_alpha = !!have_alpha;
+   image = soft16_image_alpha_set(image, have_alpha);
+   return image;
+}
+
+static void *
+eng_image_border_set(void *data, void *image, int l, int r, int t, int b)
+{
+   return image;
+}
+
+static void
+eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+{
+}
+
+static char *
+eng_image_comment_get(void *data, void *image, char *key)
+{
+   return NULL;
+}
+
+static char *
+eng_image_format_get(void *data, void *image)
+{
+   NOT_IMPLEMENTED();
+   return NULL;
+}
+
+static void
+eng_image_colorspace_set(void *data, void *image, int cspace)
+{
+   NOT_IMPLEMENTED();
+}
+
+static void
+eng_image_native_set(void *data, void *image, void *native)
+{
+   NOT_IMPLEMENTED();
+}
+
+static void *
+eng_image_native_get(void *data, void *image)
+{
+   NOT_IMPLEMENTED();
+   return NULL;
+}
+
+static void *
+eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
+{
+   return evas_cache_image_request(evas_common_soft16_image_cache_get(), file, key, lo, error);
+}
+
+static void *
+eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   if ((image_data) && (cspace != EVAS_COLORSPACE_RGB565_A5P))
+     {
+       fprintf(stderr, "Unsupported colorspace %d in %s() (%s:%d)\n",
+               cspace, __FUNCTION__, __FILE__, __LINE__);
+       return NULL;
+     }
+   return evas_cache_image_data(evas_common_soft16_image_cache_get(), w, h, image_data, alpha, EVAS_COLORSPACE_RGB565_A5P);
+}
+
+static void *
+eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   if ((image_data) && (cspace != EVAS_COLORSPACE_RGB565_A5P))
+     {
+       fprintf(stderr, "Unsupported colorspace %d in %s() (%s:%d)\n",
+               cspace, __FUNCTION__, __FILE__, __LINE__);
+       return NULL;
+     }
+   return evas_cache_image_copied_data(evas_common_soft16_image_cache_get(), w, h, image_data, alpha, EVAS_COLORSPACE_RGB565_A5P);
+}
+
+static void
+eng_image_free(void *data, void *image)
+{
+   evas_cache_image_drop((Image_Entry *) image);
+}
+
+static void
+eng_image_size_get(void *data, void *image, int *w, int *h)
+{
+   Soft16_Image *im;
+
+   if (w) *w = 0;
+   if (h) *h = 0;
+   if (!image) return;
+   im = image;
+   if (w) *w = im->cache_entry.w;
+   if (h) *h = im->cache_entry.h;
+}
+
+static void *
+eng_image_size_set(void *data, void *image, int w, int h)
+{
+   if (!image) return NULL;
+   if ((w <= 0) || (h <= 0))
+     {
+        evas_cache_image_drop((Image_Entry *) image);
+       return NULL;
+     }
+   return evas_cache_image_size_set((Image_Entry *) image, w, h);
+}
+
+static void
+eng_image_stride_get(void *data, void *image, int *stride)
+{
+   Soft16_Image *im;
+
+   if (stride) *stride = 0;
+   if (!image) return;
+   im = image;
+   if (stride) *stride = im->stride;
+}
+
+static void *
+eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h)
+{
+   /* FIXME: is this required? */
+   //NOT_IMPLEMENTED();
+   return image;
+}
+
+static void *
+eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data)
+{
+   Soft16_Image *im;
+
+   if (!image)
+     {
+       *image_data = NULL;
+       return NULL;
+     }
+
+   im = image;
+   evas_cache_image_load_data(&im->cache_entry);
+
+   if (to_write)
+     im = (Soft16_Image *) evas_cache_image_alone(&im->cache_entry);
+
+   if (image_data) *image_data = (DATA32 *) im->pixels;
+
+   return im;
+}
+
+static void *
+eng_image_data_put(void *data, void *image, DATA32 *image_data)
+{
+   Soft16_Image *old_im, *new_im;
+
+   if (!image) return NULL;
+
+   old_im = image;
+   if ((DATA16 *)image_data == old_im->pixels) return old_im;
+
+   new_im = (Soft16_Image *) evas_cache_image_copied_data(evas_common_soft16_image_cache_get(), old_im->cache_entry.w, old_im->cache_entry.h, image_data, old_im->cache_entry.flags.alpha, EVAS_COLORSPACE_RGB565_A5P);
+   evas_cache_image_drop(&old_im->cache_entry);
+   return new_im;
+}
+
+#include <assert.h>
+
+static void
+eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
+{
+   Soft16_Image *im;
+
+   im = (Soft16_Image *) image;
+
+   evas_cache_image_load_data(&im->cache_entry);
+   soft16_image_draw(im, surface, context,
+                    src_x, src_y, src_w, src_h,
+                    dst_x, dst_y, dst_w, dst_h,
+                    smooth);
+}
+
+static void
+eng_image_cache_flush(void *data)
+{
+   evas_cache_image_flush(evas_common_soft16_image_cache_get());
+}
+
+static void
+eng_image_cache_set(void *data, int bytes)
+{
+   evas_cache_image_set(evas_common_soft16_image_cache_get(), bytes);
+}
+
+static int
+eng_image_cache_get(void *data)
+{
+   return evas_cache_image_get(evas_common_soft16_image_cache_get());
+}
+
+static void *
+eng_font_load(void *data, const char *name, int size)
+{
+   return evas_common_font_load(name, size);
+}
+
+static void *
+eng_font_memory_load(void *data, char *name, int size, const void *fdata, int fdata_size)
+{
+   return evas_common_font_memory_load(name, size, fdata, fdata_size);
+}
+
+static void *
+eng_font_add(void *data, void *font, const char *name, int size)
+{
+   return evas_common_font_add(font, name, size);
+}
+
+static void *
+eng_font_memory_add(void *data, void *font, char *name, int size, const void *fdata, int fdata_size)
+{
+   return evas_common_font_memory_add(font, name, size, fdata, fdata_size);
+}
+
+static void
+eng_font_free(void *data, void *font)
+{
+   evas_common_font_free(font);
+}
+
+static int
+eng_font_ascent_get(void *data, void *font)
+{
+   return evas_common_font_ascent_get(font);
+}
+
+static int
+eng_font_descent_get(void *data, void *font)
+{
+   return evas_common_font_descent_get(font);
+}
+
+static int
+eng_font_max_ascent_get(void *data, void *font)
+{
+   return evas_common_font_max_ascent_get(font);
+}
+
+static int
+eng_font_max_descent_get(void *data, void *font)
+{
+   return evas_common_font_max_descent_get(font);
+}
+
+static void
+eng_font_string_size_get(void *data, void *font, const char *text, int *w, int *h)
+{
+   evas_common_font_query_size(font, text, w, h);
+}
+
+static int
+eng_font_inset_get(void *data, void *font, const char *text)
+{
+   return evas_common_font_query_inset(font, text);
+}
+
+static int
+eng_font_h_advance_get(void *data, void *font, const char *text)
+{
+   int h, v;
+
+   evas_common_font_query_advance(font, text, &h, &v);
+   return h;
+}
+
+static int
+eng_font_v_advance_get(void *data, void *font, const char *text)
+{
+   int h, v;
+
+   evas_common_font_query_advance(font, text, &h, &v);
+   return v;
+}
+
+static int
+eng_font_char_coords_get(void *data, void *font, const char *text, int pos, int *cx, int *cy, int *cw, int *ch)
+{
+   return evas_common_font_query_char_coords(font, text, pos, cx, cy, cw, ch);
+}
+
+static int
+eng_font_char_at_coords_get(void *data, void *font, const char *text, int x, int y, int *cx, int *cy, int *cw, int *ch)
+{
+   return evas_common_font_query_text_at_pos(font, text, x, y, cx, cy, cw, ch);
+}
+
+static void
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
+{
+   static RGBA_Image    *im = NULL;
+   Soft16_Image         *dst = surface;
+
+   if (!im)
+     im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+   evas_cache_image_surface_alloc(&im->cache_entry, dst->cache_entry.w, dst->cache_entry.h);
+   evas_common_draw_context_font_ext_set(context,
+                                        surface,
+                                        soft16_font_glyph_new,
+                                        soft16_font_glyph_free,
+                                        soft16_font_glyph_draw);
+   evas_common_font_draw(im, context, font, x, y, text);
+   evas_common_draw_context_font_ext_set(context,
+                                        NULL,
+                                        NULL,
+                                        NULL,
+                                        NULL);
+}
+
+static void
+eng_font_cache_flush(void *data)
+{
+   evas_common_font_flush();
+}
+
+static void
+eng_font_cache_set(void *data, int bytes)
+{
+   evas_common_font_cache_set(bytes);
+}
+
+static int
+eng_font_cache_get(void *data)
+{
+   return evas_common_font_cache_get();
+}
+
+static void
+eng_font_hinting_set(void *data, void *font, int hinting)
+{
+   evas_common_font_hinting_set(font, hinting);
+}
+
+static int
+eng_font_hinting_can_hint(void *data, int hinting)
+{
+   return evas_common_hinting_available(hinting);
+}
+
+
+/*
+ *****
+ **
+ ** ENGINE API
+ **
+ *****
+ */
+
+static Evas_Func func =
+{
+   NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     /* draw context virtual methods */
+     eng_context_new,
+     eng_context_free,
+     eng_context_clip_set,
+     eng_context_clip_clip,
+     eng_context_clip_unset,
+     eng_context_clip_get,
+     eng_context_color_set,
+     eng_context_color_get,
+     eng_context_multiplier_set,
+     eng_context_multiplier_unset,
+     eng_context_multiplier_get,
+     eng_context_cutout_add,
+     eng_context_cutout_clear,
+     eng_context_anti_alias_set,
+     eng_context_anti_alias_get,
+     eng_context_color_interpolation_set,
+     eng_context_color_interpolation_get,
+     eng_context_render_op_set,
+     eng_context_render_op_get,
+     /* rect draw funcs */
+     eng_rectangle_draw,
+     /* line draw funcs */
+     eng_line_draw,
+     /* polygon draw funcs */
+     eng_polygon_point_add,
+     eng_polygon_points_clear,
+     eng_polygon_draw,
+     /* gradient draw funcs */
+     eng_gradient_new,
+     eng_gradient_free,
+     eng_gradient_color_stop_add,
+     eng_gradient_alpha_stop_add,
+     eng_gradient_color_data_set,
+     eng_gradient_alpha_data_set,
+     eng_gradient_clear,
+     eng_gradient_fill_set,
+     eng_gradient_fill_angle_set,
+     eng_gradient_fill_spread_set,
+     eng_gradient_angle_set,
+     eng_gradient_offset_set,
+     eng_gradient_direction_set,
+     eng_gradient_type_set,
+     eng_gradient_is_opaque,
+     eng_gradient_is_visible,
+     eng_gradient_render_pre,
+     eng_gradient_render_post,
+     eng_gradient_draw,
+     /* image draw funcs */
+     eng_image_load,
+     eng_image_new_from_data,
+     eng_image_new_from_copied_data,
+     eng_image_free,
+     eng_image_size_get,
+     eng_image_size_set,
+     eng_image_stride_get,
+     eng_image_dirty_region,
+     eng_image_data_get,
+     eng_image_data_put,
+     eng_image_alpha_set,
+     eng_image_alpha_get,
+     eng_image_border_set,
+     eng_image_border_get,
+     eng_image_draw,
+     eng_image_comment_get,
+     eng_image_format_get,
+     eng_image_colorspace_set,
+     eng_image_colorspace_get,
+     eng_image_native_set,
+     eng_image_native_get,
+     /* image cache funcs */
+     eng_image_cache_flush,
+     eng_image_cache_set,
+     eng_image_cache_get,
+     /* font draw functions */
+     eng_font_load,
+     eng_font_memory_load,
+     eng_font_add,
+     eng_font_memory_add,
+     eng_font_free,
+     eng_font_ascent_get,
+     eng_font_descent_get,
+     eng_font_max_ascent_get,
+     eng_font_max_descent_get,
+     eng_font_string_size_get,
+     eng_font_inset_get,
+     eng_font_h_advance_get,
+     eng_font_v_advance_get,
+     eng_font_char_coords_get,
+     eng_font_char_at_coords_get,
+     eng_font_draw,
+     /* font cache functions */
+     eng_font_cache_flush,
+     eng_font_cache_set,
+     eng_font_cache_get,
+     /* font hinting functions */
+     eng_font_hinting_set,
+     eng_font_hinting_can_hint
+     /* FUTURE software generic calls go here */
+};
+
+/*
+ *****
+ **
+ ** MODULE ACCESSIBLE API API
+ **
+ *****
+ */
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+  EVAS_MODULE_API_VERSION,
+  EVAS_MODULE_TYPE_ENGINE,
+  "software_16",
+  "none"
+};
diff --git a/src/modules/engines/software_16_ddraw/.cvsignore b/src/modules/engines/software_16_ddraw/.cvsignore
new file mode 100644 (file)
index 0000000..8cb5c05
--- /dev/null
@@ -0,0 +1,4 @@
+Makefile.in
+Makefile
+.deps
+.libs
diff --git a/src/modules/engines/software_16_ddraw/Evas_Engine_Software_16_DDraw.h b/src/modules/engines/software_16_ddraw/Evas_Engine_Software_16_DDraw.h
new file mode 100644 (file)
index 0000000..7c3d888
--- /dev/null
@@ -0,0 +1,29 @@
+#ifndef __EVAS_ENGINE_SOFTWARE_16_DDRAW_H__
+#define __EVAS_ENGINE_SOFTWARE_16_DDRAW_H__
+
+
+#include <windows.h>
+#include <ddraw.h>
+
+typedef struct _Evas_Engine_Info_Software_16_DDraw Evas_Engine_Info_Software_16_DDraw;
+
+struct _Evas_Engine_Info_Software_16_DDraw
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   struct {
+      HWND                window;
+      LPDIRECTDRAW        object;          /* DirectDraw object */
+      LPDIRECTDRAWSURFACE surface_primary; /* DirectDraw primary surface */
+      LPDIRECTDRAWSURFACE surface_back;    /* DirectDraw back surface */
+      LPDIRECTDRAWSURFACE surface_source;  /* DirectDraw source surface */
+      int                 depth;
+
+      int                 rotation;
+   } info;
+};
+
+
+#endif /* __EVAS_ENGINE_SOFTWARE_16_DDRAW_H__ */
diff --git a/src/modules/engines/software_16_ddraw/Makefile.am b/src/modules/engines/software_16_ddraw/Makefile.am
new file mode 100644 (file)
index 0000000..9c1fb4f
--- /dev/null
@@ -0,0 +1,38 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+-I$(top_srcdir)/src/modules/engines/software_16 \
+@FREETYPE_CFLAGS@
+
+if BUILD_ENGINE_SOFTWARE_16_DDRAW
+
+pkgdir = $(libdir)/evas/modules/engines/software_16_ddraw/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_ddraw_buffer.cpp \
+evas_ddraw_main.cpp
+
+module_la_LIBADD = @ddraw_16_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Software_16_DDraw.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_ddraw_buffer.cpp \
+evas_ddraw_main.cpp \
+Evas_Engine_Software_16_DDraw.h
diff --git a/src/modules/engines/software_16_ddraw/evas_ddraw_buffer.cpp b/src/modules/engines/software_16_ddraw/evas_ddraw_buffer.cpp
new file mode 100644 (file)
index 0000000..a78507a
--- /dev/null
@@ -0,0 +1,85 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+
+DDraw_Output_Buffer *
+evas_software_ddraw_output_buffer_new(HWND                window,
+                                      LPDIRECTDRAW        object,
+                                      LPDIRECTDRAWSURFACE surface_primary,
+                                      LPDIRECTDRAWSURFACE surface_back,
+                                      LPDIRECTDRAWSURFACE surface_source,
+                                      int                 width,
+                                      int                 height)
+{
+   DDSURFACEDESC        surface_desc;
+   DDraw_Output_Buffer *ddob;
+
+   ddob = (DDraw_Output_Buffer *)calloc(1, sizeof(DDraw_Output_Buffer));
+   if (!ddob) return NULL;
+
+   ddob->dd.window = window;
+   ddob->dd.object = object;
+   ddob->dd.surface_primary = surface_primary;
+   ddob->dd.surface_back = surface_back;
+   ddob->dd.surface_source = surface_source;
+   ddob->width = width;
+   ddob->height = height;
+   ddob->pitch = width * 2;
+
+   ZeroMemory(&surface_desc, sizeof(surface_desc));
+   surface_desc.dwSize = sizeof(surface_desc);
+
+   if (FAILED(ddob->dd.surface_source->Lock(NULL,
+                                            &surface_desc,
+                                            DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR,
+                                            NULL)))
+     {
+        free(ddob);
+        return NULL;
+     }
+
+   ddob->im.pixels = (DATA16 *)surface_desc.lpSurface;
+   ddob->im.w = width;
+   ddob->im.h = height;
+   ddob->im.stride = width;
+   ddob->im.references = 1;
+
+   if (FAILED(ddob->dd.surface_source->Unlock(NULL)))
+     {
+        free(ddob);
+        return NULL;
+     }
+
+   return ddob;
+}
+
+void
+evas_software_ddraw_output_buffer_free(DDraw_Output_Buffer *ddob, int sync)
+{
+   free(ddob);
+}
+
+void
+evas_software_ddraw_output_buffer_paste(DDraw_Output_Buffer *ddob)
+{
+   RECT  dst_rect;
+   RECT  src_rect;
+   POINT p;
+
+   SetRect(&src_rect, 0, 0, ddob->width, ddob->height);
+
+   if (FAILED(ddob->dd.surface_back->BltFast(0, 0,
+                                             ddob->dd.surface_source,
+                                             &src_rect,
+                                             DDBLTFAST_NOCOLORKEY | DDBLTFAST_WAIT)))
+     return;
+
+   p.x = 0;
+   p.y = 0;
+   ClientToScreen(ddob->dd.window, &p);
+   GetClientRect(ddob->dd.window, &dst_rect);
+   OffsetRect(&dst_rect, p.x, p.y);
+   ddob->dd.surface_primary->Blt(&dst_rect,
+                                 ddob->dd.surface_back, &src_rect,
+                                 DDBLT_WAIT, NULL);
+}
diff --git a/src/modules/engines/software_16_ddraw/evas_ddraw_main.cpp b/src/modules/engines/software_16_ddraw/evas_ddraw_main.cpp
new file mode 100644 (file)
index 0000000..7a2eb7f
--- /dev/null
@@ -0,0 +1,71 @@
+#include "evas_engine.h"
+
+
+void *
+evas_software_ddraw_lock(DDraw_Output_Buffer *ddob, int *ddraw_width, int *ddraw_height, int *ddraw_pitch, int *ddraw_depth)
+{
+   DDSURFACEDESC surface_desc;
+
+   ZeroMemory(&surface_desc, sizeof(surface_desc));
+   surface_desc.dwSize = sizeof(surface_desc);
+
+   if (FAILED(ddob->dd.surface_back->Lock(NULL,
+                                          &surface_desc,
+                                          DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR | DDLOCK_WRITEONLY,
+                                          NULL)))
+     return NULL;
+
+   *ddraw_width = surface_desc.dwWidth;
+   *ddraw_height = surface_desc.dwHeight;
+   *ddraw_pitch = surface_desc.lPitch;
+   *ddraw_depth = surface_desc.ddpfPixelFormat.dwRGBBitCount >> 3;
+
+   return surface_desc.lpSurface;
+}
+
+void
+evas_software_ddraw_unlock_and_flip(DDraw_Output_Buffer *ddob)
+{
+   RECT    dst_rect;
+   RECT    src_rect;
+   POINT   p;
+
+   if (FAILED(ddob->dd.surface_back->Unlock(NULL)))
+     return;
+
+   /* we figure out where on the primary surface our window lives */
+   p.x = 0;
+   p.y = 0;
+   ClientToScreen(ddob->dd.window, &p);
+   GetClientRect(ddob->dd.window, &dst_rect);
+   OffsetRect(&dst_rect, p.x, p.y);
+   SetRect(&src_rect, 0, 0, ddob->width, ddob->height);
+
+   /* nothing to do if the function fails, so we don't check the result */
+   ddob->dd.surface_primary->BltFast(0, 0,
+                                     ddob->dd.surface_back, &dst_rect,
+                                     DDBLTFAST_WAIT || DDBLTFAST_NOCOLORKEY);
+}
+
+void
+evas_software_ddraw_surface_resize(DDraw_Output_Buffer *ddob)
+{
+   DDSURFACEDESC surface_desc;
+
+   ddob->dd.surface_back->Release();
+   memset (&surface_desc, 0, sizeof (surface_desc));
+   surface_desc.dwSize = sizeof (surface_desc);
+   /* FIXME: that code does not compile. Must know why */
+#if 0
+   surface_desc.dwFlags = DDSD_HEIGHT | DDSD_WIDTH;
+   surface_desc.dwWidth = width;
+   surface_desc.dwHeight = height;
+   IDirectDrawSurface7_SetSurfaceDesc(ddob->dd.surface_back, &surface_desc, NULL);
+#else
+   surface_desc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
+   surface_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
+   surface_desc.dwWidth = ddob->width;
+   surface_desc.dwHeight = ddob->height;
+   ddob->dd.object->CreateSurface(&surface_desc, &ddob->dd.surface_back, NULL);
+#endif
+}
diff --git a/src/modules/engines/software_16_ddraw/evas_engine.c b/src/modules/engines/software_16_ddraw/evas_engine.c
new file mode 100644 (file)
index 0000000..3da0d7d
--- /dev/null
@@ -0,0 +1,616 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Software_16_DDraw.h"
+#include "evas_common_soft16.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   HWND                 window;
+   LPDIRECTDRAW         object;
+   LPDIRECTDRAWSURFACE  surface_primary;
+   LPDIRECTDRAWSURFACE  surface_back;
+   LPDIRECTDRAWSURFACE  surface_source;
+   int                  width;
+   int                  height;
+   int                  rotation;
+   Tilebuf             *tb;
+   Tilebuf_Rect        *rects;
+   Tilebuf_Rect        *cur_rect;
+   DDraw_Output_Buffer *ddob;
+   Soft16_Image        *tmp_out; /* used by indirect render, like rotation */
+   HRGN                 clip_rects;
+   unsigned char        end : 1;
+};
+
+/* prototypes we will use here */
+
+static void *eng_info(Evas *e);
+static void eng_info_free(Evas *e, void *info);
+static void eng_setup(Evas *e, void *info);
+static void eng_output_free(void *data);
+static void eng_output_resize(void *data, int w, int h);
+static void eng_output_tile_size_set(void *data, int w, int h);
+static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_clear(void *data);
+static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h);
+static void eng_output_flush(void *data);
+static void eng_output_idle_flush(void *data);
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Software_16_DDraw *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_Software_16_DDraw));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_Software_16_DDraw *in;
+
+   in = (Evas_Engine_Info_Software_16_DDraw *)info;
+   free(in);
+}
+
+static void
+_tmp_out_free(Soft16_Image *tmp_out)
+{
+   free(tmp_out->pixels);
+   free(tmp_out);
+}
+
+static void
+_tmp_out_alloc(Render_Engine *re)
+{
+   Tilebuf_Rect *r;
+   int w = 0, h = 0;
+
+   for (r = re->rects; r; r = (Tilebuf_Rect *)(r->_list_data.next))
+     {
+       if (r->w > w) w = r->w;
+       if (r->h > h) h = r->h;
+     }
+
+   if (re->tmp_out)
+     {
+       if ((re->tmp_out->w < w) || (re->tmp_out->h < h))
+         {
+            _tmp_out_free(re->tmp_out);
+            re->tmp_out = NULL;
+         }
+     }
+
+   if (!re->tmp_out)
+     {
+       Soft16_Image *im;
+
+       im = calloc(1, sizeof(Soft16_Image));
+       im->w = w;
+       im->h = h;
+       im->stride = w + ((w % 4) ? (4 - (w % 4)) : 0);
+       im->have_alpha = 0;
+       im->references = 1;
+       im->free_pixels = 1;
+       im->pixels = malloc(h * im->stride * sizeof(DATA16));
+
+       re->tmp_out = im;
+     }
+}
+
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine                      *re;
+   Evas_Engine_Info_Software_16_DDraw *info;
+
+   info = (Evas_Engine_Info_Software_16_DDraw *)in;
+   if (!e->engine.data.output)
+     {
+       /* the only check - simplistic, i know, but enough for this
+        * "special purpose" engine. Remember it is meant to be used
+        * for limited power devices that have a 16bit display mode
+        * and no real other acceleration, and high resolution so we
+        * can pre-dither into 16bpp. */
+        if (info->info.depth != 16)
+         return;
+       /* do common routine init - we wil at least use it for core
+        * image loading and font loading/glyph rendering & placement */
+       evas_common_cpu_init();
+
+       evas_common_blend_init();
+       evas_common_image_init();
+       evas_common_convert_init();
+       evas_common_scale_init();
+       evas_common_rectangle_init();
+       evas_common_gradient_init();
+       evas_common_polygon_init();
+       evas_common_line_init();
+       evas_common_font_init();
+       evas_common_draw_init();
+       evas_common_tilebuf_init();
+        evas_common_soft16_image_init();
+
+       /* render engine specific data */
+       re = calloc(1, sizeof(Render_Engine));
+        if (!re)
+          return;
+       e->engine.data.output = re;
+       re->window = info->info.window;
+       re->object = info->info.object;
+       re->surface_primary = info->info.surface_primary;
+       re->surface_back = info->info.surface_back;
+       re->surface_source = info->info.surface_source;
+       re->width = e->output.w;
+       re->height = e->output.h;
+       re->rotation = info->info.rotation;
+       re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+     }
+   else
+     {
+       /* we changed the info after first init - do a re-eval where
+        * appropriate */
+       if (info->info.depth != 16)
+         return;
+       re = e->engine.data.output;
+       if (re->tb) evas_common_tilebuf_free(re->tb);
+       re->window = info->info.window;
+       re->object = info->info.object;
+       re->surface_primary = info->info.surface_primary;
+       re->surface_back = info->info.surface_back;
+       re->surface_source = info->info.surface_source;
+       re->width = e->output.w;
+       re->height = e->output.h;
+       re->rotation = info->info.rotation;
+       re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+       if (re->tmp_out)
+         {
+            _tmp_out_free(re->tmp_out);
+            re->tmp_out = NULL;
+         }
+     }
+   if (!e->engine.data.output) return;
+   /* add a draw context if we dont have one */
+   if (!e->engine.data.context)
+     e->engine.data.context =
+     e->engine.func->context_new(e->engine.data.output);
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->ddob) evas_software_ddraw_output_buffer_free(re->ddob, 0);
+   if (re->clip_rects) DeleteObject(re->clip_rects);
+   if (re->tb) evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   if (re->tmp_out) _tmp_out_free(re->tmp_out);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+   evas_common_soft16_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+
+   if ((re->width == w) && (re->height == h)) return;
+
+   if (re->ddob)
+     evas_software_ddraw_surface_resize(re->ddob);
+
+   evas_common_tilebuf_free(re->tb);
+   re->width = w;
+   re->height = h;
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   if (re->ddob)
+     {
+        evas_software_ddraw_output_buffer_free(re->ddob, 0);
+       re->ddob = NULL;
+     }
+   if (re->clip_rects)
+     {
+       DeleteObject(re->clip_rects);
+       re->clip_rects = NULL;
+     }
+   if (re->tmp_out)
+     {
+       _tmp_out_free(re->tmp_out);
+       re->tmp_out = NULL;
+     }
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static inline void
+_output_buffer_alloc(Render_Engine *re)
+{
+   int width;
+   int height;
+
+   if (re->ddob) return;
+
+   if ((re->rotation == 0) || (re->rotation == 180))
+     {
+       width = re->width;
+       height = re->height;
+     }
+   else
+     {
+       width = re->height;
+       height = re->width;
+     }
+
+   re->ddob = evas_software_ddraw_output_buffer_new(re->window,
+                                                    re->object,
+                                                    re->surface_primary,
+                                                    re->surface_back,
+                                                    re->surface_source,
+                                                    width,
+                                                    height);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       if (!re->rects) return NULL;
+
+       re->cur_rect = re->rects;
+       _output_buffer_alloc(re);
+       if (re->rotation != 0) _tmp_out_alloc(re); /* grows if required */
+     }
+   if (!re->cur_rect)
+     {
+       if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       return NULL;
+     }
+   rect = re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = (Tilebuf_Rect *)(re->cur_rect->_list_data.next);
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   if (re->rotation == 0)
+     {
+       *cx = ux; *cy = uy; *cw = uw; *ch = uh;
+       return &re->ddob->im;
+     }
+   else
+     {
+       *cx = 0; *cy = 0; *cw = uw; *ch = uh;
+       return re->tmp_out;
+     }
+}
+
+static void
+_blit_rot_90(Soft16_Image *dst, const Soft16_Image *src,
+            int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + (out_x +
+                      (w + out_y - 1) * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr -= dst->stride;
+         }
+       sp += src->stride;
+       dp++;
+     }
+}
+
+static void
+_blit_rot_180(Soft16_Image *dst, const Soft16_Image *src,
+             int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + ((w + out_x - 1) +
+                      (h + out_y - 1) * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr--;
+         }
+       sp += src->stride;
+       dp -= dst->stride;
+     }
+}
+
+static void
+_blit_rot_270(Soft16_Image *dst, const Soft16_Image *src,
+             int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + ((h + out_x - 1) +
+                      out_y * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr += dst->stride;
+         }
+       sp += src->stride;
+       dp--;
+     }
+}
+
+static void
+_tmp_out_process(Render_Engine *re, int out_x, int out_y, int w, int h)
+{
+   Soft16_Image *d, *s;
+
+   d = &re->ddob->im;
+   s = re->tmp_out;
+
+   if ((w < 1) || (h < 1) || (out_x >= d->w) || (out_y >= d->h))
+     return;
+
+   if (re->rotation == 90)
+     _blit_rot_90(d, s, out_x, out_y, w, h);
+   else if (re->rotation == 180)
+     _blit_rot_180(d, s, out_x, out_y, w, h);
+   else if (re->rotation == 270)
+     _blit_rot_270(d, s, out_x, out_y, w, h);
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+   HRGN           region;
+   int            xx;
+   int            yy;
+   int            width;
+   int            height;
+
+   re = (Render_Engine *)data;
+
+   if (!re->clip_rects)
+      re->clip_rects = CreateRectRgn(0, 0, 0, 0);
+
+   if (re->rotation == 0)
+     {
+       xx = x;
+       yy = y;
+       width = w;
+       height = h;
+     }
+   else if (re->rotation == 90)
+     {
+       xx = y;
+       yy = re->width - w - x;
+       width = h;
+       height = w;
+     }
+   else if (re->rotation == 180)
+     {
+       xx = re->width - w - x;
+       yy = re->height - h - y;
+       width = w;
+       height = h;
+     }
+   else if (re->rotation == 270)
+     {
+       xx = re->height - h - y;
+       yy = x;
+       width = h;
+       height = w;
+     }
+
+   region = CreateRectRgn(xx, yy, xx + width, yy + height);
+
+   if (re->rotation != 0)
+     _tmp_out_process(re, xx, yy, w, h);
+   CombineRgn(re->clip_rects, re->clip_rects, region, RGN_OR);
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+   void          *ddraw_data;
+   int            ddraw_width;
+   int            ddraw_height;
+   int            ddraw_pitch;
+   int            ddraw_depth;
+
+   re = (Render_Engine *)data;
+   if (re->clip_rects)
+     {
+        /* FIXME : i have to manage that */
+/*     XSetRegion(re->disp, re->gc, re->clip_rects); */
+       DeleteObject(re->clip_rects);
+       re->clip_rects = NULL;
+     }
+   else return;
+
+   evas_software_ddraw_output_buffer_paste(re->ddob);
+
+   /* FIXME : i have to manage that */
+/*    XSetClipMask(re->disp, re->gc, None); */
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->ddob)
+     {
+       evas_software_ddraw_output_buffer_free(re->ddob, 0);
+       re->ddob = NULL;
+     }
+   if (re->clip_rects)
+     {
+       DeleteObject(re->clip_rects);
+       re->clip_rects = NULL;
+     }
+   if (re->tmp_out)
+     {
+       _tmp_out_free(re->tmp_out);
+       re->tmp_out = NULL;
+     }
+}
+
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_16")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_ENGINE,
+     "software_16_ddraw",
+     "none"
+};
diff --git a/src/modules/engines/software_16_ddraw/evas_engine.h b/src/modules/engines/software_16_ddraw/evas_engine.h
new file mode 100644 (file)
index 0000000..a8e3eba
--- /dev/null
@@ -0,0 +1,59 @@
+#ifndef __EVAS_ENGINE_H__
+#define __EVAS_ENGINE_H__
+
+
+#include <windows.h>
+#include <ddraw.h>
+
+#include "evas_common_soft16.h"
+
+typedef struct _DDraw_Output_Buffer       DDraw_Output_Buffer;
+
+struct _DDraw_Output_Buffer
+{
+   Soft16_Image im;
+  struct {
+     HWND                window;
+     LPDIRECTDRAW        object;
+     LPDIRECTDRAWSURFACE surface_primary;
+     LPDIRECTDRAWSURFACE surface_back;
+     LPDIRECTDRAWSURFACE surface_source;
+  } dd;
+   int          x;
+   int          y;
+   int          width;
+   int          height;
+   int          depth;
+   int          pitch;
+};
+
+/****/
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+DDraw_Output_Buffer *evas_software_ddraw_output_buffer_new        (HWND                window,
+                                                                   LPDIRECTDRAW        object,
+                                                                   LPDIRECTDRAWSURFACE surface_primary,
+                                                                   LPDIRECTDRAWSURFACE surface_back,
+                                                                   LPDIRECTDRAWSURFACE surface_source,
+                                                                   int width,
+                                                                   int height);
+void                 evas_software_ddraw_output_buffer_free       (DDraw_Output_Buffer *ddob, int sync);
+void                 evas_software_ddraw_output_buffer_paste      (DDraw_Output_Buffer *ddob);
+
+
+void *evas_software_ddraw_lock(DDraw_Output_Buffer *ddob, int *ddraw_width, int *ddraw_height, int *ddraw_pitch, int *ddraw_depth);
+
+void  evas_software_ddraw_unlock_and_flip(DDraw_Output_Buffer *ddob);
+
+void  evas_software_ddraw_surface_resize(DDraw_Output_Buffer *ddob);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* __EVAS_ENGINE_H__ */
diff --git a/src/modules/engines/software_16_sdl/.cvsignore b/src/modules/engines/software_16_sdl/.cvsignore
new file mode 100644 (file)
index 0000000..09980ae
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/modules/engines/software_16_sdl/Evas_Engine_SDL_16.h b/src/modules/engines/software_16_sdl/Evas_Engine_SDL_16.h
new file mode 100644 (file)
index 0000000..20adccf
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef         _EVAS_ENGINE_SDL_16_H
+# define        _EVAS_ENGINE_SDL_16_H
+
+#include <SDL/SDL.h>
+
+typedef struct _Evas_Engine_Info_SDL_16 Evas_Engine_Info_SDL_16;
+struct _Evas_Engine_Info_SDL_16
+{
+  /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+  /* at you and make nasty noises */
+  Evas_Engine_Info magic;
+
+  struct {
+    int                         rotation;
+    int                         fullscreen : 1;
+    int                         hwsurface : 1;
+    int                         noframe : 1;
+    int                         alpha : 1;
+  } info;
+};
+
+#endif
diff --git a/src/modules/engines/software_16_sdl/Makefile.am b/src/modules/engines/software_16_sdl/Makefile.am
new file mode 100644 (file)
index 0000000..679d599
--- /dev/null
@@ -0,0 +1,28 @@
+AUTOMAKE_OPTIONS     = 1.4 foreign
+
+MAINTAINERCLEANFILES = Makefile.in
+
+INCLUDES = -I. -I$(top_srcdir)/src/lib -I$(top_srcdir)/src/lib/include @FREETYPE_CFLAGS@ @SDL_CFLAGS@
+
+if BUILD_ENGINE_SDL
+
+pkgdir = $(libdir)/evas/modules/engines/software_16_sdl/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES  = \
+evas_engine.c \
+evas_engine.h
+
+module_la_LIBADD = @SDL_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ -module -avoid-version -L$(top_builddir)/src/lib -L$(top_builddir)/src/lib/.libs
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_SDL_16.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.c \
+evas_engine.h \
+Evas_Engine_SDL_16.h
diff --git a/src/modules/engines/software_16_sdl/evas_engine.c b/src/modules/engines/software_16_sdl/evas_engine.c
new file mode 100644 (file)
index 0000000..ea4911e
--- /dev/null
@@ -0,0 +1,1257 @@
+#include <assert.h>
+#include <math.h>
+#include <string.h>
+#include <sys/time.h>
+#include <time.h>
+#include <SDL/SDL.h>
+
+#include "evas_engine.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func        func = {};
+static Evas_Func        pfunc = {};
+
+static Engine_Image_Entry       *_sdl16_image_alloc       (void);
+static void                      _sdl16_image_delete      (Engine_Image_Entry *eim);
+
+static int                       _sdl16_image_constructor (Engine_Image_Entry *ie, void* data);
+static void                      _sdl16_image_destructor  (Engine_Image_Entry *eim);
+
+static void                      _sdl16_image_dirty_region(Engine_Image_Entry *eim, int x, int y, int w, int h);
+
+static int                       _sdl16_image_dirty       (Engine_Image_Entry *dst, const Engine_Image_Entry *src);
+
+static int                       _sdl16_image_size_set    (Engine_Image_Entry *dst, const Engine_Image_Entry *src);
+
+static int                       _sdl16_image_update_data (Engine_Image_Entry* dst, void* engine_data);
+
+static void                      _sdl16_image_load        (Engine_Image_Entry *eim, const Image_Entry* im);
+static int                       _sdl16_image_mem_size_get(Engine_Image_Entry *eim);
+
+#ifdef DEBUG_SDL
+static void                      _sdl16_image_debug       (const char* context, Engine_Image_Entry* im);
+#endif
+
+static const Evas_Cache_Engine_Image_Func       _sdl16_cache_engine_image_cb = {
+  NULL /* key */,
+  _sdl16_image_alloc /* alloc */,
+  _sdl16_image_delete /* dealloc */,
+  _sdl16_image_constructor /* constructor */,
+  _sdl16_image_destructor /* destructor */,
+  _sdl16_image_dirty_region /* dirty_region */,
+  _sdl16_image_dirty /* dirty */,
+  _sdl16_image_size_set /* size_set */,
+  _sdl16_image_update_data /* update_data */,
+  _sdl16_image_load /* load */,
+  _sdl16_image_mem_size_get /* mem_size_get */,
+#ifdef DEBUG_SDL  /* debug */
+  _sdl16_image_debug
+#else
+  NULL
+#endif
+};
+
+#define _SDL_UPDATE_PIXELS(EIM)                                 \
+  ((Soft16_Image *) EIM->cache_entry.src)->pixels = EIM->surface->pixels;
+
+#define RMASK565 0xf800
+#define GMASK565 0x07e0
+#define BMASK565 0x001f
+#define AMASK565 0x0000
+
+/* engine api this module provides */
+static void *
+evas_engine_sdl16_info(Evas *e)
+{
+   Evas_Engine_Info_SDL_16      *info;
+
+   (void) e;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_SDL_16));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+}
+
+static void
+evas_engine_sdl16_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_SDL_16 *in;
+
+   in = (Evas_Engine_Info_SDL_16 *)info;
+   free(in);
+}
+
+static void
+_tmp_out_alloc(Render_Engine *re)
+{
+   Tilebuf_Rect *r;
+   int w = 0, h = 0;
+
+   for (r = re->rects; r; r = (Tilebuf_Rect *)(r->_list_data.next))
+     {
+       if (r->w > w) w = r->w;
+       if (r->h > h) h = r->h;
+     }
+
+   if (re->tmp_out)
+     {
+       if ((re->tmp_out->cache_entry.w < w) || (re->tmp_out->cache_entry.h < h))
+         {
+             evas_cache_image_drop(&re->tmp_out->cache_entry);
+            re->tmp_out = NULL;
+         }
+     }
+
+   if (!re->tmp_out)
+     {
+       Soft16_Image *im;
+
+        im = (Soft16_Image *) evas_cache_image_empty(evas_common_soft16_image_cache_get());
+        im->cache_entry.flags.alpha = 0;
+        evas_cache_image_surface_alloc(&im->cache_entry, w, h);
+
+       re->tmp_out = im;
+     }
+}
+
+static void*
+_sdl16_output_setup(int w, int h, int rotation, int fullscreen, int noframe, int hwsurface)
+{
+   Render_Engine       *re = calloc(1, sizeof(Render_Engine));
+   SDL_Surface          *surface;
+
+   /* if we haven't initialized - init (automatic abort if already done) */
+   evas_common_cpu_init();
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+   evas_common_soft16_image_init();
+
+   if (w <= 0) w = 640;
+   if (h <= 0) h = 480;
+
+   re->cache = evas_cache_engine_image_init(&_sdl16_cache_engine_image_cb, evas_common_soft16_image_cache_get());
+   if (!re->cache)
+     {
+        fprintf(stderr, "Evas_Cache_Engine_Image allocation failed!\n");
+        exit(-1);
+     }
+
+   re->tb = evas_common_tilebuf_new(w, h);
+   /* in preliminary tests 16x16 gave highest framerates */
+   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   re->w = w;
+   re->h = h;
+   re->rot = rotation;
+   re->flags.hwsurface = hwsurface;
+   re->flags.fullscreen = fullscreen;
+   re->flags.noframe = noframe;
+   re->flags.end = 0;
+
+   re->update_rects_count = 0;
+   re->update_rects_limit = 0;
+   re->update_rects = NULL;
+
+   surface = SDL_SetVideoMode(w, h, 16,
+                              (hwsurface ? SDL_HWSURFACE : SDL_SWSURFACE)
+                              | (fullscreen ? SDL_FULLSCREEN : 0)
+                              | (noframe ? SDL_NOFRAME : 0));
+   if (!surface)
+     {
+        fprintf(stderr, "SDL_SetVideoMode [ %i x %i x 16 ] failed\n", w, h);
+        exit(-1);
+     }
+
+   SDL_SetAlpha(surface, SDL_RLEACCEL, 0);
+   SDL_FillRect(surface, NULL, 0);
+
+   re->soft16_engine_image = (SDL_Engine_Image_Entry *) evas_cache_engine_image_engine(re->cache, surface);
+   if (!re->soft16_engine_image)
+     {
+        fprintf(stderr, "Soft16_Image allocation from SDL failed\n");
+        exit(-1);
+     }
+
+   return re;
+}
+
+
+static void
+evas_engine_sdl16_setup(Evas *e, void *in)
+{
+   Evas_Engine_Info_SDL_16      *info = (Evas_Engine_Info_SDL_16 *) in;
+
+   if (evas_output_method_get(e) != evas_render_method_lookup("software_16_sdl"))
+     return ;
+
+   SDL_Init(SDL_INIT_NOPARACHUTE);
+
+   if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
+     {
+        fprintf(stderr, "SDL_Init failed with %s\n", SDL_GetError());
+        exit(-1);
+     }
+
+   e->engine.data.output = _sdl16_output_setup(e->output.w, e->output.h,
+                                               info->info.rotation,
+                                               info->info.fullscreen,
+                                               info->info.noframe,
+                                               info->info.hwsurface);
+   if (!e->engine.data.output)
+     return;
+
+   e->engine.func = &func;
+   e->engine.data.context = e->engine.func->context_new(e->engine.data.output);
+}
+
+static void
+evas_engine_sdl16_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->tb) evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   if (re->tmp_out) evas_cache_image_drop(&re->tmp_out->cache_entry);
+   if (re->soft16_engine_image) evas_cache_engine_image_drop(&re->soft16_engine_image->cache_entry);
+   free(re);
+
+/*    evas_common_font_shutdown(); */
+   evas_common_image_shutdown();
+   evas_common_soft16_image_shutdown();
+}
+
+static void
+evas_engine_sdl16_output_resize(void *data, int w, int h)
+{
+   Render_Engine        *re = data;
+   SDL_Surface          *surface;
+
+   if ((re->w == w) && (re->h == h)) return;
+
+   evas_cache_engine_image_drop(&re->soft16_engine_image->cache_entry);
+
+   evas_common_tilebuf_free(re->tb);
+   re->w = w;
+   re->h = h;
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+
+   surface = SDL_SetVideoMode(w, h, 16,
+                              (re->flags.hwsurface ? SDL_HWSURFACE : SDL_SWSURFACE)
+                              | (re->flags.fullscreen ? SDL_FULLSCREEN : 0)
+                              | (re->flags.noframe ? SDL_NOFRAME : 0));
+   if (!surface)
+     {
+        fprintf(stderr, "Unable to change the resolution to : %ix%i\n", w, h);
+        exit(-1);
+     }
+   re->soft16_engine_image = (SDL_Engine_Image_Entry *) evas_cache_engine_image_engine(re->cache, surface);
+   if (!re->soft16_engine_image)
+     {
+       fprintf(stderr, "RGBA_Image allocation from SDL failed\n");
+       exit(-1);
+     }
+
+   SDL_FillRect(surface, NULL, 0);
+
+   if (re->tmp_out)
+     {
+        evas_cache_image_drop(&re->tmp_out->cache_entry);
+       re->tmp_out = NULL;
+     }
+}
+
+static void
+evas_engine_sdl16_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+evas_engine_sdl16_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+evas_engine_sdl16_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+evas_engine_sdl16_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+evas_engine_sdl16_output_redraws_next_update_get(void *data,
+                                                 int *x, int *y, int *w, int *h,
+                                                 int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine        *re = data;
+   Tilebuf_Rect         *tb_rect;
+   SDL_Rect              rect;
+
+   if (re->flags.end)
+     {
+       re->flags.end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = re->rects;
+       if (re->rot != 0) _tmp_out_alloc(re); /* grows if required */
+     }
+   if (!re->cur_rect)
+     {
+       if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       return NULL;
+     }
+
+   tb_rect = re->cur_rect;
+   *cx = *x = tb_rect->x;
+   *cy = *y = tb_rect->y;
+   *cw = *w = tb_rect->w;
+   *ch = *h = tb_rect->h;
+   re->cur_rect = (Tilebuf_Rect *)(re->cur_rect->_list_data.next);
+   if (!re->cur_rect)
+     {
+        evas_common_tilebuf_free_render_rects(re->rects);
+        re->rects = NULL;
+        re->flags.end = 1;
+     }
+
+   if (re->rot != 0)
+     {
+        *cx = 0;
+        *cy = 0;
+     }
+
+   rect.x = *x;
+   rect.y = *y;
+   rect.w = *w;
+   rect.h = *h;
+
+   SDL_FillRect(re->soft16_engine_image->surface, &rect, 0);
+
+   /* Return the "fake" surface so it is passed to the drawing routines. */
+   return re->soft16_engine_image;
+}
+
+static void
+_blit_rot_90(Soft16_Image *dst, const Soft16_Image *src,
+            int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + (out_x +
+                      (w + out_y - 1) * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr -= dst->stride;
+         }
+       sp += src->stride;
+       dp++;
+     }
+}
+
+static void
+_blit_rot_180(Soft16_Image *dst, const Soft16_Image *src,
+             int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + ((w + out_x - 1) +
+                      (h + out_y - 1) * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr--;
+         }
+       sp += src->stride;
+       dp -= dst->stride;
+     }
+}
+
+static void
+_blit_rot_270(Soft16_Image *dst, const Soft16_Image *src,
+             int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + ((h + out_x - 1) +
+                      out_y * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr += dst->stride;
+         }
+       sp += src->stride;
+       dp--;
+     }
+}
+
+static void
+_tmp_out_process(Render_Engine *re, int out_x, int out_y, int w, int h)
+{
+   Soft16_Image *d, *s;
+   DATA16 *dp, *sp;
+   int y, x, d_dir;
+
+   d = (Soft16_Image *) re->soft16_engine_image->cache_entry.src;
+   s = re->tmp_out;
+
+   if ((w < 1) || (h < 1)
+       || (out_x >= d->cache_entry.w) || (out_y >= d->cache_entry.h))
+     return;
+
+   if (re->rot == 90)
+     _blit_rot_90(d, s, out_x, out_y, w, h);
+   else if (re->rot == 180)
+     _blit_rot_180(d, s, out_x, out_y, w, h);
+   else if (re->rot == 270)
+     _blit_rot_270(d, s, out_x, out_y, w, h);
+}
+
+static void
+evas_engine_sdl16_output_redraws_next_update_push(void *data, void *surface,
+                                                  int x, int y, int w, int h)
+{
+   Render_Engine        *re = data;
+   SDL_Rect              rect;
+
+   if (re->update_rects_count + 1 > re->update_rects_limit)
+     {
+        re->update_rects_limit += 8;
+        re->update_rects = realloc(re->update_rects, sizeof (SDL_Rect) * re->update_rects_limit);
+     }
+
+   rect.x = x;
+   rect.y = y;
+   rect.w = w;
+   rect.h = h;
+
+   switch (re->rot)
+     {
+      case 0:
+         break;
+      case 90:
+         rect.x = y;
+         rect.y = re->w - w - x;
+         rect.w = h;
+         rect.h = w;
+         break;
+      case 180:
+         rect.x = re->w - w - x;
+         rect.y = re->h - h - y;
+         break;
+      case 270:
+         rect.x = re->h - h - y;
+         rect.y = x;
+         rect.w = h;
+         rect.h = w;
+         break;
+      default:
+         abort();
+     }
+
+   re->update_rects[re->update_rects_count] = rect;
+
+   if (re->rot != 0)
+     _tmp_out_process(re, rect.x, rect.y, w, h);
+
+   ++re->update_rects_count;
+}
+
+static void
+evas_engine_sdl16_output_flush(void *data)
+{
+   Render_Engine        *re = data;
+
+   if (re->update_rects_count > 0)
+     SDL_UpdateRects(re->soft16_engine_image->surface, re->update_rects_count, re->update_rects);
+
+   re->update_rects_count = 0;
+}
+
+static void
+evas_engine_sdl16_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->tmp_out)
+     {
+       evas_cache_image_drop(&re->tmp_out->cache_entry);
+       re->tmp_out = NULL;
+     }
+}
+
+static void*
+evas_engine_sdl16_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
+{
+   Render_Engine*      re = (Render_Engine*) data;;
+
+   *error = 0;
+   return evas_cache_engine_image_request(re->cache, file, key, lo, NULL, error);
+}
+
+static int
+evas_engine_sdl16_image_alpha_get(void *data, void *image)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   Soft16_Image                 *im;
+
+   (void) data;
+
+   if (!eim) return 1;
+   im = (Soft16_Image *) eim->cache_entry.src;
+   if (im->cache_entry.flags.alpha) return 1;
+   return 0;
+}
+
+static void
+evas_engine_sdl16_image_size_get(void *data, void *image, int *w, int *h)
+{
+   SDL_Engine_Image_Entry       *eim;
+
+   (void) data;
+
+   eim = image;
+   if (w) *w = eim->cache_entry.w;
+   if (h) *h = eim->cache_entry.h;
+}
+
+static int
+evas_engine_sdl16_image_colorspace_get(void *data, void *image)
+{
+   (void) data;
+   (void) image;
+
+   return EVAS_COLORSPACE_RGB565_A5P;
+}
+
+static void
+evas_engine_sdl16_image_colorspace_set(void *data, void *image, int cspace)
+{
+   (void) data;
+   (void) image;
+
+   /* FIXME: Not implemented. */
+}
+
+static void*
+evas_engine_sdl16_image_new_from_copied_data(void *data,
+                                             int w, int h,
+                                             DATA32* image_data,
+                                             int alpha, int cspace)
+{
+   Render_Engine       *re = data;
+
+   if (cspace != EVAS_COLORSPACE_RGB565_A5P)
+     {
+        fprintf(stderr, "Unsupported colorspace %d in %s() (%s:%d)\n",
+                cspace, __FUNCTION__, __FILE__, __LINE__);
+        return NULL;
+     }
+
+   fprintf(stderr, "s image_data: %p\n", image_data);
+
+   return evas_cache_engine_image_copied_data(re->cache,
+                                              w, h,
+                                              image_data,
+                                              alpha, cspace, NULL);
+}
+
+static void*
+evas_engine_sdl16_image_new_from_data(void *data, int w, int h, DATA32* image_data, int alpha, int cspace)
+{
+   Render_Engine       *re = data;
+
+   if (cspace != EVAS_COLORSPACE_RGB565_A5P)
+     {
+        fprintf(stderr, "Unsupported colorspace %d in %s() (%s:%d)\n",
+                cspace, __FUNCTION__, __FILE__, __LINE__);
+        return NULL;
+     }
+
+   return evas_cache_engine_image_data(re->cache,
+                                       w, h,
+                                       image_data,
+                                       alpha, cspace, NULL);
+}
+
+static void
+evas_engine_sdl16_image_free(void *data, void *image)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+
+   (void) data;
+
+   evas_cache_engine_image_drop(&eim->cache_entry);
+}
+
+static void*
+evas_engine_sdl16_image_size_set(void *data, void *image, int w, int h)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+
+   (void) data;
+
+   return evas_cache_engine_image_size_set(&eim->cache_entry, w, h);
+}
+
+static void*
+evas_engine_sdl16_image_dirty_region(void *data,
+                                     void *image,
+                                     int x, int y, int w, int h)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+
+   (void) data;
+
+   return evas_cache_engine_image_dirty(&eim->cache_entry, x, y, w, h);
+}
+
+static void*
+evas_engine_sdl16_image_data_get(void *data, void *image,
+                                 int to_write, DATA32** image_data)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   Soft16_Image                 *im;
+
+   (void) data;
+
+   if (!eim)
+     {
+        *image_data = NULL;
+        return NULL;
+     }
+   im = (Soft16_Image *) eim->cache_entry.src;
+   evas_cache_image_load_data(&im->cache_entry);
+
+   if (to_write)
+     eim = (SDL_Engine_Image_Entry *) evas_cache_engine_image_alone(&eim->cache_entry,
+                                                                    NULL);
+
+   /* FIXME: Handle colorspace convertion correctly. */
+   if (image_data) *image_data = (DATA32 *) im->pixels;
+
+   return eim;
+}
+
+static void*
+evas_engine_sdl16_image_data_put(void *data, void *image, DATA32* image_data)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   SDL_Engine_Image_Entry       *eim_new;
+   Render_Engine                *re = data;
+   Soft16_Image                 *im;
+
+   if (!eim) return NULL;
+   im = (Soft16_Image *) eim->cache_entry.src;
+
+   /* FIXME: Handle colorspace convertion correctly. */
+   if ((DATA16 *) image_data == im->pixels) return eim;
+
+   eim_new = (SDL_Engine_Image_Entry *) evas_cache_engine_image_data(re->cache,
+                                                                     eim->cache_entry.w, eim->cache_entry.h,
+                                                                     image_data,
+                                                                     func.image_alpha_get(data, eim),
+                                                                     func.image_colorspace_get(data, eim),
+                                                                     NULL);
+   evas_cache_engine_image_drop(&eim->cache_entry);
+
+   return eim_new;
+}
+
+static void*
+evas_engine_sdl16_image_alpha_set(void *data, void *image, int has_alpha)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   Soft16_Image                 *im;
+
+   (void) data;
+
+   if (!eim) return NULL;
+
+   im = (Soft16_Image *) eim->cache_entry.src;
+
+   if (im->cache_entry.flags.alpha == has_alpha) return eim;
+
+   eim = (SDL_Engine_Image_Entry *) evas_cache_engine_image_alone(&eim->cache_entry,
+                                                                  NULL);
+
+   im = (Soft16_Image *) eim->cache_entry.src;
+
+   im->cache_entry.flags.alpha = has_alpha;
+   eim = (SDL_Engine_Image_Entry *) evas_cache_engine_image_dirty(&eim->cache_entry, 0, 0, eim->cache_entry.w, eim->cache_entry.h);
+
+   return eim;
+}
+
+static void*
+evas_engine_sdl16_image_border_set(void *data, void *image, int l, int r, int t, int b)
+{
+   return image;
+}
+
+static void
+evas_engine_sdl16_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+{
+   /* FIXME: need to know what evas expect from this call */
+}
+
+static void
+evas_engine_sdl16_image_draw(void *data, void *context, void *surface, void *image,
+                             int src_region_x, int src_region_y, int src_region_w, int src_region_h,
+                             int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h,
+                             int smooth)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   SDL_Engine_Image_Entry       *dst = surface;
+   int                           mustlock_im = 0;
+   int                           mustlock_dst = 0;
+
+   (void) data;
+
+   evas_cache_engine_image_load_data(&eim->cache_entry);
+
+   /* Fallback to software method */
+   if (SDL_MUSTLOCK(dst->surface))
+     {
+        mustlock_dst = 1;
+       SDL_LockSurface(dst->surface);
+       _SDL_UPDATE_PIXELS(dst);
+     }
+
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
+     {
+        mustlock_im = 1;
+       SDL_LockSurface(eim->surface);
+       _SDL_UPDATE_PIXELS(eim);
+     }
+
+   soft16_image_draw((Soft16_Image *) eim->cache_entry.src,
+                     (Soft16_Image *) dst->cache_entry.src,
+                     context,
+                     src_region_x, src_region_y, src_region_w, src_region_h,
+                     dst_region_x, dst_region_y, dst_region_w, dst_region_h,
+                     smooth);
+
+   if (mustlock_im)
+     SDL_UnlockSurface(eim->surface);
+
+   if (mustlock_dst)
+     SDL_UnlockSurface(dst->surface);
+}
+
+static void
+evas_engine_sdl16_image_cache_flush(void *data)
+{
+   Render_Engine        *re = (Render_Engine*) data;
+   int                   size;
+
+   size = evas_cache_engine_image_get(re->cache);
+   evas_cache_engine_image_set(re->cache, 0);
+   evas_cache_engine_image_set(re->cache, size);
+}
+
+static void
+evas_engine_sdl16_image_cache_set(void *data, int bytes)
+{
+   Render_Engine        *re = (Render_Engine*) data;
+
+   evas_cache_engine_image_set(re->cache, bytes);
+}
+
+static int
+evas_engine_sdl16_image_cache_get(void *data)
+{
+   Render_Engine        *re = (Render_Engine*) data;
+
+   return evas_cache_engine_image_get(re->cache);
+}
+
+static char*
+evas_engine_sdl16_image_comment_get(void *data, void *image, char *key)
+{
+   (void) data;
+   (void) image;
+   (void) key;
+
+   return NULL;
+}
+
+static char*
+evas_engine_sdl16_image_format_get(void *data, void *image)
+{
+   /* FIXME: need to know what evas expect from this call */
+   return NULL;
+}
+
+static void
+evas_engine_sdl16_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
+{
+   static RGBA_Image            *im = NULL;
+   SDL_Engine_Image_Entry       *eim = surface;
+   Soft16_Image                 *dst = (Soft16_Image *) eim->cache_entry.src;
+   int                           mustlock_im = 0;
+
+   if (!im)
+     im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+   evas_cache_image_surface_alloc(&im->cache_entry, dst->cache_entry.w, dst->cache_entry.h);
+
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
+     {
+        mustlock_im = 1;
+       SDL_LockSurface(eim->surface);
+       _SDL_UPDATE_PIXELS(eim);
+     }
+   evas_common_draw_context_font_ext_set(context,
+                                         dst,
+                                         soft16_font_glyph_new,
+                                         soft16_font_glyph_free,
+                                         soft16_font_glyph_draw);
+   evas_common_font_draw(im, context, font, x, y, text);
+   evas_common_draw_context_font_ext_set(context,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL);
+
+   if (mustlock_im)
+     SDL_UnlockSurface(eim->surface);
+}
+
+static void
+evas_engine_sdl16_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
+{
+   SDL_Engine_Image_Entry       *eim = surface;
+   int                           mustlock_im = 0;
+
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
+     {
+        mustlock_im = 1;
+       SDL_LockSurface(eim->surface);
+       _SDL_UPDATE_PIXELS(eim);
+     }
+
+   soft16_line_draw((Soft16_Image *) eim->cache_entry.src,
+                    context,
+                    x1, y1, x2, y2);
+
+   if (mustlock_im)
+     SDL_UnlockSurface(eim->surface);
+}
+
+static void
+evas_engine_sdl16_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
+{
+   SDL_Engine_Image_Entry       *eim = surface;
+#if ENGINE_SDL_PRIMITIVE
+   RGBA_Draw_Context            *dc = context;
+#endif
+   Soft16_Image                 *im;
+   int                           mustlock_im = 0;
+
+#if ENGINE_SDL_PRIMITIVE
+   if (A_VAL(&dc->col.col) != 0x00)
+     {
+        if (A_VAL(&dc->col.col) != 0xFF)
+          {
+#endif
+             if (eim->surface && SDL_MUSTLOCK(eim->surface))
+               {
+                  mustlock_im = 1;
+                  SDL_LockSurface(eim->surface);
+                  _SDL_UPDATE_PIXELS(eim);
+               }
+
+             im = (Soft16_Image *) eim->cache_entry.src;
+
+             soft16_rectangle_draw(im, context, x, y, w, h);
+
+             if (mustlock_im)
+               SDL_UnlockSurface(eim->surface);
+#if ENGINE_SDL_PRIMITIVE
+          }
+        else
+          {
+             SDL_Rect        dstrect;
+
+             if (dc->clip.use)
+               {
+                  SDL_Rect   cliprect;
+
+                  cliprect.x = dc->clip.x;
+                  cliprect.y = dc->clip.y;
+                  cliprect.w = dc->clip.w;
+                  cliprect.h = dc->clip.h;
+
+                  SDL_SetClipRect(eim->surface, &cliprect);
+               }
+
+             dstrect.x = x;
+             dstrect.y = y;
+             dstrect.w = w;
+             dstrect.h = h;
+
+             SDL_FillRect(eim->surface, &dstrect, SDL_MapRGBA(eim->surface->format, R_VAL(&dc->col.col), G_VAL(&dc->col.col), B_VAL(&dc->col.col), 0xFF));
+
+             if (dc->clip.use)
+               SDL_SetClipRect(eim->surface, NULL);
+          }
+     }
+#endif
+}
+
+static void
+evas_engine_sdl16_polygon_draw(void *data, void *context, void *surface, void *polygon)
+{
+   SDL_Engine_Image_Entry       *eim = surface;
+   int                           mustlock_im = 0;
+
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
+     {
+        mustlock_im = 1;
+       SDL_LockSurface(eim->surface);
+       _SDL_UPDATE_PIXELS(eim);
+     }
+
+   soft16_polygon_draw((Soft16_Image *) eim->cache_entry.src, context, polygon);
+
+   if (mustlock_im)
+     SDL_UnlockSurface(eim->surface);
+}
+
+static void
+evas_engine_sdl16_image_stride_get(void *data, void *image, int *stride)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+
+   if (stride) *stride = 0;
+   if (!image) return;
+   if (stride) *stride = ((Soft16_Image*) eim->cache_entry.src)->stride;
+}
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_16")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, evas_engine_sdl16_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   ORD(image_load);
+   ORD(image_alpha_get);
+   ORD(image_size_get);
+   ORD(image_colorspace_get);
+   ORD(image_colorspace_set);
+   ORD(image_new_from_copied_data);
+   ORD(image_new_from_data);
+   ORD(image_free);
+   ORD(image_size_set);
+   ORD(image_dirty_region);
+   ORD(image_data_get);
+   ORD(image_data_put);
+   ORD(image_alpha_set);
+   ORD(image_border_set);
+   ORD(image_border_get);
+   ORD(image_draw);
+   ORD(image_cache_flush);
+   ORD(image_cache_set);
+   ORD(image_cache_get);
+   ORD(image_comment_get);
+   ORD(image_format_get);
+   ORD(image_stride_get);
+   ORD(font_draw);
+   ORD(line_draw);
+   ORD(rectangle_draw);
+   ORD(polygon_draw);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi = 
+{
+   EVAS_MODULE_API_VERSION, 
+     EVAS_MODULE_TYPE_ENGINE,
+     "software_16_sdl",
+     "none"
+};
+
+static Engine_Image_Entry*
+_sdl16_image_alloc(void)
+{
+   SDL_Engine_Image_Entry       *new;
+
+   new = calloc(1, sizeof (SDL_Engine_Image_Entry));
+
+   return (Engine_Image_Entry *) new;
+}
+
+static void
+_sdl16_image_delete(Engine_Image_Entry *eim)
+{
+   free(eim);
+}
+
+static int
+_sdl16_image_constructor(Engine_Image_Entry *ie, void* data)
+{
+   SDL_Surface                  *sdl = NULL;
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) ie;
+   Soft16_Image                 *im;
+
+   im = (Soft16_Image *) ie->src;
+
+   if (im->pixels)
+     {
+        /* FIXME: Take care of CSPACE */
+        sdl = SDL_CreateRGBSurfaceFrom(im->pixels,
+                                       ie->w, ie->h,
+                                       16, ie->w * 2,
+                                       RMASK565, GMASK565, BMASK565, AMASK565);
+        eim->surface = sdl;
+        eim->flags.engine_surface = 0;
+     }
+
+   return 0;
+}
+
+static void
+_sdl16_image_destructor(Engine_Image_Entry *eim)
+{
+   SDL_Engine_Image_Entry       *seie = (SDL_Engine_Image_Entry *) eim;
+
+   if (seie->surface && !seie->flags.engine_surface)
+     SDL_FreeSurface(seie->surface);
+   seie->surface = NULL;
+}
+
+static void
+_sdl16_image_dirty_region(Engine_Image_Entry *eim, int x, int y, int w, int h)
+{
+   SDL_Engine_Image_Entry       *dst;
+   RGBA_Image *im;
+
+   dst = (SDL_Engine_Image_Entry *) eim;
+
+   SDL_UpdateRect(dst->surface, x, y, w, h);
+
+   im = (RGBA_Image *)eim->src;
+   im->flags |= RGBA_IMAGE_IS_DIRTY;
+}
+
+static int
+_sdl16_image_dirty(Engine_Image_Entry *dst, const Engine_Image_Entry *src)
+{
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) dst;
+   SDL_Surface                  *sdl = NULL;
+   Soft16_Image                 *im;
+
+   im = (Soft16_Image *) dst->src;
+
+   /* FIXME: Take care of CSPACE */
+   sdl = SDL_CreateRGBSurfaceFrom(im->pixels,
+                                  dst->w, dst->h,
+                                  16, dst->w * 2,
+                                  RMASK565, GMASK565, BMASK565, AMASK565);
+   eim->surface = sdl;
+   eim->flags.engine_surface = 0;
+
+   return 0;
+}
+
+static int
+_sdl16_image_size_set(Engine_Image_Entry *dst, const Engine_Image_Entry *src)
+{
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) dst;
+   SDL_Surface                  *sdl;
+   Soft16_Image                 *im;
+
+   im = (Soft16_Image *) dst->src;
+
+   /* FIXME: handle im == NULL */
+   sdl = SDL_CreateRGBSurfaceFrom(im->pixels,
+                                  dst->w, dst->h,
+                                  16, dst->w * 2,
+                                  RMASK565, GMASK565, BMASK565, AMASK565);
+
+   eim->surface = sdl;
+
+   return 0;
+}
+
+static int
+_sdl16_image_update_data(Engine_Image_Entry* dst, void* engine_data)
+{
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) dst;
+   SDL_Surface                  *sdl = NULL;
+   Soft16_Image                 *im;
+
+   im = (Soft16_Image *) dst->src;
+
+   if (engine_data)
+     {
+        sdl = engine_data;
+
+        if (im)
+          {
+             im->pixels = sdl->pixels;
+             im->stride = sdl->pitch / 2;
+             im->flags.free_pixels = 0;
+/*              im->alpha = calloc(1, sizeof (DATA8) * _calc_stride(sdl->w) * sdl->h); */
+/*              im->flags.free_alpha = 0; */
+/*              im->flags.have_alpha = 1; */
+             im->alpha = NULL;
+             im->flags.free_alpha = 0;
+             im->cache_entry.flags.alpha = 0;
+
+             dst->src->w = sdl->w;
+             dst->src->h = sdl->h;
+          }
+        dst->w = sdl->w;
+        dst->h = sdl->h;
+     }
+   else
+     {
+        SDL_FreeSurface(eim->surface);
+        /* FIXME: Take care of CSPACE */
+        sdl = SDL_CreateRGBSurfaceFrom(im->pixels,
+                                       dst->w, dst->h,
+                                       16, dst->w * 2,
+                                       RMASK565, GMASK565, BMASK565, AMASK565);
+     }
+
+   eim->surface = sdl;
+
+   return 0;
+}
+
+static void
+_sdl16_image_load(Engine_Image_Entry *eim, const Image_Entry* ie_im)
+{
+   SDL_Engine_Image_Entry       *load = (SDL_Engine_Image_Entry *) eim;
+   SDL_Surface                  *sdl;
+
+   if (!load->surface)
+     {
+        Soft16_Image            *im;
+
+        im = (Soft16_Image *) ie_im;
+
+        sdl = SDL_CreateRGBSurfaceFrom(im->pixels,
+                                       eim->w, eim->h,
+                                       16, eim->w * 2,
+                                       RMASK565, GMASK565, BMASK565, AMASK565);
+        load->surface = sdl;
+     }
+}
+
+static int
+_sdl16_image_mem_size_get(Engine_Image_Entry *eim)
+{
+   SDL_Engine_Image_Entry       *seie = (SDL_Engine_Image_Entry *) eim;
+   int                           size = 0;
+
+   /* FIXME: Count surface size. */
+   if (seie->surface)
+     size = sizeof (SDL_Surface) + sizeof (SDL_PixelFormat);
+
+   return size;
+}
+
+#ifdef DEBUG_SDL
+static void
+_sdl16_image_debug(const char* context, Engine_Image_Entry* im)
+{
+}
+#endif
diff --git a/src/modules/engines/software_16_sdl/evas_engine.h b/src/modules/engines/software_16_sdl/evas_engine.h
new file mode 100644 (file)
index 0000000..03a1e36
--- /dev/null
@@ -0,0 +1,54 @@
+#ifndef EVAS_ENGINE_SDL_16_H
+#define EVAS_ENGINE_SDL_16_H
+
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_common_soft16.h"
+#include "Evas_Engine_SDL_16.h"
+
+typedef struct _SDL_Engine_Image_Entry SDL_Engine_Image_Entry;
+struct _SDL_Engine_Image_Entry
+{
+  Engine_Image_Entry     cache_entry;
+
+  SDL_Surface           *surface;
+
+  struct
+  {
+    unsigned int         engine_surface : 1;
+  } flags;
+};
+
+
+typedef struct _Render_Engine Render_Engine;
+struct _Render_Engine
+{
+  SDL_Engine_Image_Entry        *soft16_engine_image;
+
+  Evas_Cache_Engine_Image       *cache;
+
+  Soft16_Image                  *tmp_out;
+
+  int                            w;
+  int                            h;
+  int                            rot;
+
+  Tilebuf                       *tb;
+  Tilebuf_Rect                  *rects;
+  Tilebuf_Rect                  *cur_rect;
+
+  SDL_Rect                      *update_rects;
+  int                            update_rects_count;
+  int                            update_rects_limit;
+
+  struct
+  {
+    unsigned int                 fullscreen : 1;
+    unsigned int                 noframe : 1;
+    unsigned int                 alpha : 1;
+    unsigned int                 hwsurface : 1;
+    unsigned int                 end : 1;
+  } flags;
+};
+
+#endif
diff --git a/src/modules/engines/software_16_wince/.cvsignore b/src/modules/engines/software_16_wince/.cvsignore
new file mode 100644 (file)
index 0000000..9730646
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.la
+*.lo
diff --git a/src/modules/engines/software_16_wince/Evas_Engine_Software_16_WinCE.h b/src/modules/engines/software_16_wince/Evas_Engine_Software_16_WinCE.h
new file mode 100644 (file)
index 0000000..1624607
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef __EVAS_ENGINE_SOFTWARE_16_WINCE_H__
+#define __EVAS_ENGINE_SOFTWARE_16_WINCE_H__
+
+
+#include <windows.h>
+
+
+typedef struct _Evas_Engine_Info_Software_16_WinCE Evas_Engine_Info_Software_16_WinCE;
+
+struct _Evas_Engine_Info_Software_16_WinCE
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   struct {
+      HWND  window;
+      int   width;
+      int   height;
+      int   backend; /* 0: auto, 1: raw, 2: gapi, 3: ddraw */
+      int   rotation;
+   } info;
+   /* engine specific function calls to query stuff about messages */
+   struct {
+      int   (*suspend) (int backend);
+      int   (*resume)  (int backend);
+   } func;
+};
+
+
+#endif /* __EVAS_ENGINE_SOFTWARE_16_WINCE_H__ */
diff --git a/src/modules/engines/software_16_wince/Makefile.am b/src/modules/engines/software_16_wince/Makefile.am
new file mode 100644 (file)
index 0000000..d02e9af
--- /dev/null
@@ -0,0 +1,37 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+-I$(top_srcdir)/src/modules/engines/software_16 \
+@FREETYPE_CFLAGS@
+
+.rc.lo:
+       $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --tag=RC --mode=compile $(RC) $(RCFLAGS) $< -o $@
+
+if BUILD_ENGINE_SOFTWARE_16_WINCE
+
+pkgdir = $(libdir)/evas/modules/engines/software_16_wince/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_wince_fb_buffer.c \
+evas_wince_gapi_buffer.c \
+evas_wince_ddraw_buffer.cpp \
+evas_wince_gapi.rc
+
+module_la_CFLAGS = @WIN32_CFLAGS@
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Software_16_WinCE.h
+
+endif
diff --git a/src/modules/engines/software_16_wince/evas_engine.c b/src/modules/engines/software_16_wince/evas_engine.c
new file mode 100644 (file)
index 0000000..210ba6b
--- /dev/null
@@ -0,0 +1,716 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Software_16_WinCE.h"
+#include "evas_common_soft16.h"
+
+
+typedef enum
+{
+  EVAS_ENGINE_WINCE_FB,
+  EVAS_ENGINE_WINCE_GAPI,
+  EVAS_ENGINE_WINCE_DDRAW
+} Evas_Engine_WinCE_Backend;
+
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Evas_Engine_WinCE_Backend backend; /* 1: raw, 2: gapi, 3: ddraw */
+   void               *backend_priv;
+   void              (*backend_shutdown)(void *priv);
+   FB_Output_Buffer *(*backend_output_buffer_new)(void *priv,
+                                                  int width,
+                                                  int height);
+   void              (*backend_output_buffer_free)(FB_Output_Buffer *fbob);
+   void              (*backend_output_buffer_paste)(FB_Output_Buffer *fbob);
+   void              (*backend_surface_resize)(FB_Output_Buffer *fbob);
+
+   int               width;
+   int               height;
+   int               rotation;
+   Tilebuf          *tb;
+   Tilebuf_Rect     *rects;
+   Tilebuf_Rect     *cur_rect;
+   FB_Output_Buffer *fbob;
+   Soft16_Image     *tmp_out; /* used by indirect render, like rotation */
+   HRGN              clip_rects;
+   unsigned char     end : 1;
+};
+
+/* prototypes we will use here */
+
+static void *eng_info(Evas *e);
+static void eng_info_free(Evas *e, void *info);
+static void eng_setup(Evas *e, void *info);
+static void eng_output_free(void *data);
+static void eng_output_resize(void *data, int w, int h);
+static void eng_output_tile_size_set(void *data, int w, int h);
+static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_clear(void *data);
+static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h);
+static void eng_output_flush(void *data);
+static void eng_output_idle_flush(void *data);
+
+static int
+_suspend(int backend)
+{
+   switch (backend)
+     {
+      case 2: /* gapi */
+         return evas_software_wince_gapi_suspend();
+      default: /* other engines do not need it */
+         return 0;
+     }
+}
+
+static int
+_resume(int backend)
+{
+   switch (backend)
+     {
+      case 2: /* gapi */
+         return evas_software_wince_gapi_resume();
+      default: /* other engines do not need it */
+         return 0;
+     }
+}
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Software_16_WinCE *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_Software_16_WinCE));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   info->func.suspend = _suspend;
+   info->func.resume = _resume;
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_Software_16_WinCE *in;
+
+   in = (Evas_Engine_Info_Software_16_WinCE *)info;
+   free(in);
+}
+
+static void
+_tmp_out_alloc(Render_Engine *re)
+{
+   Tilebuf_Rect *r;
+   int w = 0, h = 0;
+
+   for (r = re->rects; r; r = (Tilebuf_Rect *)(r->_list_data.next))
+     {
+       if (r->w > w) w = r->w;
+       if (r->h > h) h = r->h;
+     }
+
+   if (re->tmp_out)
+     {
+       if ((re->tmp_out->cache_entry.w < w) || (re->tmp_out->cache_entry.h < h))
+         {
+             evas_cache_image_drop(&re->tmp_out->cache_entry);
+            re->tmp_out = NULL;
+         }
+     }
+
+   if (!re->tmp_out)
+     {
+       Soft16_Image *im;
+
+        im = (Soft16_Image *) evas_cache_image_empty(evas_common_soft16_image_cache_get());
+        im->cache_entry.flags.alpha = 0;
+        evas_cache_image_surface_alloc(&im->cache_entry, w, h);
+
+       re->tmp_out = im;
+     }
+}
+
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine                      *re;
+   Evas_Engine_Info_Software_16_WinCE *info;
+
+   info = (Evas_Engine_Info_Software_16_WinCE *)in;
+   if (!e->engine.data.output)
+     {
+       /* do common routine init - we wil at least use it for core
+        * image loading and font loading/glyph rendering & placement */
+       evas_common_cpu_init();
+
+       evas_common_blend_init();
+       evas_common_image_init();
+       evas_common_convert_init();
+       evas_common_scale_init();
+       evas_common_rectangle_init();
+       evas_common_gradient_init();
+       evas_common_polygon_init();
+       evas_common_line_init();
+       evas_common_font_init();
+       evas_common_draw_init();
+       evas_common_tilebuf_init();
+       evas_common_soft16_image_init();
+
+       /* render engine specific data */
+       re = calloc(1, sizeof(Render_Engine));
+        if (!re)
+          return;
+       e->engine.data.output = re;
+
+        switch(info->info.backend)
+          {
+           case 1: /* FB */
+              re->backend = EVAS_ENGINE_WINCE_FB;
+              re->backend_priv = evas_software_wince_fb_init(info->info.window, info->info.width, info->info.height);
+              if (!re->backend_priv)
+                {
+                   free(re);
+                   return;
+                }
+              re->backend_shutdown = evas_software_wince_fb_shutdown;
+              re->backend_output_buffer_new = evas_software_wince_fb_output_buffer_new;
+              re->backend_output_buffer_free = evas_software_wince_fb_output_buffer_free;
+              re->backend_output_buffer_paste = evas_software_wince_fb_output_buffer_paste;
+              re->backend_surface_resize = evas_software_wince_fb_surface_resize;
+              break;
+           case 2: /* GAPI */
+              re->backend = EVAS_ENGINE_WINCE_GAPI;
+              re->backend_priv = evas_software_wince_gapi_init(info->info.window, info->info.width, info->info.height);
+              if (!re->backend_priv)
+                {
+                   free(re);
+                   return;
+                }
+              re->backend_shutdown = evas_software_wince_gapi_shutdown;
+              re->backend_output_buffer_new = evas_software_wince_gapi_output_buffer_new;
+              re->backend_output_buffer_free = evas_software_wince_gapi_output_buffer_free;
+              re->backend_output_buffer_paste = evas_software_wince_gapi_output_buffer_paste;
+              re->backend_surface_resize = evas_software_wince_gapi_surface_resize;
+              break;
+           case 3: /* DirectDraw */
+              re->backend = EVAS_ENGINE_WINCE_DDRAW;
+              re->backend_priv = evas_software_wince_ddraw_init(info->info.window, info->info.width, info->info.height);
+              if (!re->backend_priv)
+                {
+                   free(re);
+                   return;
+                }
+              re->backend_shutdown = evas_software_wince_ddraw_shutdown;
+              re->backend_output_buffer_new = evas_software_wince_ddraw_output_buffer_new;
+              re->backend_output_buffer_free = evas_software_wince_ddraw_output_buffer_free;
+              re->backend_output_buffer_paste = evas_software_wince_ddraw_output_buffer_paste;
+              re->backend_surface_resize = evas_software_wince_ddraw_surface_resize;
+              break;
+           default:
+              free(re);
+              return;
+          }
+
+       re->width = e->output.w;
+       re->height = e->output.h;
+       re->rotation = info->info.rotation;
+       re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+     }
+   else
+     {
+       re = e->engine.data.output;
+       if (re->tb) evas_common_tilebuf_free(re->tb);
+
+        switch(info->info.backend)
+          {
+           case 1: /* FB */
+              re->backend = EVAS_ENGINE_WINCE_FB;
+              re->backend_priv = evas_software_wince_fb_init(info->info.window, info->info.width, info->info.height);
+              if (!re->backend_priv)
+                {
+                   free(re);
+                   return;
+                }
+              re->backend_shutdown = evas_software_wince_fb_shutdown;
+              re->backend_output_buffer_new = evas_software_wince_fb_output_buffer_new;
+              re->backend_output_buffer_free = evas_software_wince_fb_output_buffer_free;
+              re->backend_output_buffer_paste = evas_software_wince_fb_output_buffer_paste;
+              re->backend_surface_resize = evas_software_wince_fb_surface_resize;
+              break;
+           case 2: /* GAPI */
+              re->backend = EVAS_ENGINE_WINCE_GAPI;
+              re->backend_priv = evas_software_wince_gapi_init(info->info.window, info->info.width, info->info.height);
+              if (!re->backend_priv)
+                {
+                   free(re);
+                   return;
+                }
+              re->backend_shutdown = evas_software_wince_gapi_shutdown;
+              re->backend_output_buffer_new = evas_software_wince_gapi_output_buffer_new;
+              re->backend_output_buffer_free = evas_software_wince_gapi_output_buffer_free;
+              re->backend_output_buffer_paste = evas_software_wince_gapi_output_buffer_paste;
+              re->backend_surface_resize = evas_software_wince_gapi_surface_resize;
+              break;
+           case 3: /* DirectDraw */
+              re->backend = EVAS_ENGINE_WINCE_DDRAW;
+              re->backend_priv = evas_software_wince_ddraw_init(info->info.window, info->info.width, info->info.height);
+              if (!re->backend_priv)
+                {
+                   free(re);
+                   return;
+                }
+              re->backend_shutdown = evas_software_wince_ddraw_shutdown;
+              re->backend_output_buffer_new = evas_software_wince_ddraw_output_buffer_new;
+              re->backend_output_buffer_free = evas_software_wince_ddraw_output_buffer_free;
+              re->backend_output_buffer_paste = evas_software_wince_ddraw_output_buffer_paste;
+              re->backend_surface_resize = evas_software_wince_ddraw_surface_resize;
+              break;
+           default:
+              free(re);
+              return;
+          }
+
+       re->width = e->output.w;
+       re->height = e->output.h;
+       re->rotation = info->info.rotation;
+       re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+       if (re->tmp_out)
+         {
+             evas_cache_image_drop(&re->tmp_out->cache_entry);
+            re->tmp_out = NULL;
+         }
+     }
+   if (!e->engine.data.output) return;
+   /* add a draw context if we dont have one */
+   if (!e->engine.data.context)
+     e->engine.data.context =
+     e->engine.func->context_new(e->engine.data.output);
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->fbob) re->backend_output_buffer_free(re->backend_priv);
+   re->backend_shutdown(re->backend_priv);
+   if (re->clip_rects) DeleteObject(re->clip_rects);
+   if (re->tb) evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   if (re->tmp_out) evas_cache_image_drop(&re->tmp_out->cache_entry);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+   evas_common_soft16_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+
+   if ((re->width == w) && (re->height == h)) return;
+
+   /* FIXME: is it needed ?? */
+   if (re->fbob)
+     re->backend_surface_resize(re->fbob);
+
+   evas_common_tilebuf_free(re->tb);
+   re->width = w;
+   re->height = h;
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   if (re->fbob)
+     {
+        re->backend_output_buffer_free(re->fbob);
+       re->fbob = NULL;
+     }
+   if (re->clip_rects)
+     {
+       DeleteObject(re->clip_rects);
+       re->clip_rects = NULL;
+     }
+   if (re->tmp_out)
+     {
+       evas_cache_image_drop(&re->tmp_out->cache_entry);
+       re->tmp_out = NULL;
+     }
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static inline void
+_output_buffer_alloc(Render_Engine *re)
+{
+   int width;
+   int height;
+
+   if (re->fbob) return;
+
+   if ((re->rotation == 0) || (re->rotation == 180))
+     {
+       width = re->width;
+       height = re->height;
+     }
+   else
+     {
+       width = re->height;
+       height = re->width;
+     }
+
+   re->fbob = re->backend_output_buffer_new(re->backend_priv,
+                                            width,
+                                            height);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       if (!re->rects) return NULL;
+
+       re->cur_rect = re->rects;
+       _output_buffer_alloc(re);
+       if (re->rotation != 0) _tmp_out_alloc(re); /* grows if required */
+     }
+   if (!re->cur_rect)
+     {
+       if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       return NULL;
+     }
+   rect = re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = (Tilebuf_Rect *)(re->cur_rect->_list_data.next);
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   if (re->rotation == 0)
+     {
+       *cx = ux; *cy = uy; *cw = uw; *ch = uh;
+       return re->fbob->im;
+     }
+   else
+     {
+       *cx = 0; *cy = 0; *cw = uw; *ch = uh;
+       return re->tmp_out;
+     }
+}
+
+static void
+_blit_rot_90(Soft16_Image *dst, const Soft16_Image *src,
+            int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + (out_x +
+                      (w + out_y - 1) * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr -= dst->stride;
+         }
+       sp += src->stride;
+       dp++;
+     }
+}
+
+static void
+_blit_rot_180(Soft16_Image *dst, const Soft16_Image *src,
+             int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + ((w + out_x - 1) +
+                      (h + out_y - 1) * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr--;
+         }
+       sp += src->stride;
+       dp -= dst->stride;
+     }
+}
+
+static void
+_blit_rot_270(Soft16_Image *dst, const Soft16_Image *src,
+             int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + ((h + out_x - 1) +
+                      out_y * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr += dst->stride;
+         }
+       sp += src->stride;
+       dp--;
+     }
+}
+
+static void
+_tmp_out_process(Render_Engine *re, int out_x, int out_y, int w, int h)
+{
+   Soft16_Image *d, *s;
+
+   d = re->fbob->im;
+   s = re->tmp_out;
+
+   if ((w < 1) || (h < 1) || (out_x >= d->cache_entry.w) || (out_y >= d->cache_entry.h))
+     return;
+
+   if (re->rotation == 90)
+     _blit_rot_90(d, s, out_x, out_y, w, h);
+   else if (re->rotation == 180)
+     _blit_rot_180(d, s, out_x, out_y, w, h);
+   else if (re->rotation == 270)
+     _blit_rot_270(d, s, out_x, out_y, w, h);
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+   HRGN           region;
+   int            xx;
+   int            yy;
+   int            width;
+   int            height;
+
+   re = (Render_Engine *)data;
+
+   if (!re->clip_rects)
+      re->clip_rects = CreateRectRgn(0, 0, 0, 0);
+
+   if (re->rotation == 0)
+     {
+       xx = x;
+       yy = y;
+       width = w;
+       height = h;
+     }
+   else if (re->rotation == 90)
+     {
+       xx = y;
+       yy = re->width - w - x;
+       width = h;
+       height = w;
+     }
+   else if (re->rotation == 180)
+     {
+       xx = re->width - w - x;
+       yy = re->height - h - y;
+       width = w;
+       height = h;
+     }
+   else if (re->rotation == 270)
+     {
+       xx = re->height - h - y;
+       yy = x;
+       width = h;
+       height = w;
+     }
+
+   region = CreateRectRgn(xx, yy, xx + width, yy + height);
+
+   if (re->rotation != 0)
+     _tmp_out_process(re, xx, yy, w, h);
+   CombineRgn(re->clip_rects, re->clip_rects, region, RGN_OR);
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->clip_rects)
+     {
+        /* FIXME : i have to manage that */
+/*     XSetRegion(re->disp, re->gc, re->clip_rects); */
+       DeleteObject(re->clip_rects);
+       re->clip_rects = NULL;
+     }
+   else return;
+
+   re->backend_output_buffer_paste(re->fbob);
+
+   /* FIXME : i have to manage that */
+/*    XSetClipMask(re->disp, re->gc, None); */
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->fbob)
+     {
+       re->backend_output_buffer_free(re->fbob);
+       re->fbob = NULL;
+     }
+   if (re->clip_rects)
+     {
+       DeleteObject(re->clip_rects);
+       re->clip_rects = NULL;
+     }
+   if (re->tmp_out)
+     {
+       evas_cache_image_drop(&re->tmp_out->cache_entry);
+       re->tmp_out = NULL;
+     }
+}
+
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_16")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+   EVAS_MODULE_TYPE_ENGINE,
+   "software_16_wince_fb",
+   "none"
+};
diff --git a/src/modules/engines/software_16_wince/evas_engine.h b/src/modules/engines/software_16_wince/evas_engine.h
new file mode 100644 (file)
index 0000000..da762c4
--- /dev/null
@@ -0,0 +1,80 @@
+#ifndef __EVAS_ENGINE_H__
+#define __EVAS_ENGINE_H__
+
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+#include "evas_common_soft16.h"
+
+
+typedef struct _FB_Output_Buffer FB_Output_Buffer;
+
+struct _FB_Output_Buffer
+{
+   Soft16_Image *im;
+   void         *priv;
+};
+
+
+/* Raw FrameBuffer */
+
+void             *evas_software_wince_fb_init (HWND window,
+                                               int  width,
+                                               int  height);
+FB_Output_Buffer *evas_software_wince_fb_output_buffer_new (void *priv,
+                                                            int   width,
+                                                            int   height);
+void              evas_software_wince_fb_shutdown(void *priv);
+void              evas_software_wince_fb_output_buffer_free (FB_Output_Buffer *fbob);
+void              evas_software_wince_fb_output_buffer_paste (FB_Output_Buffer *fbob);
+
+void              evas_software_wince_fb_surface_resize(FB_Output_Buffer *fbob);
+
+
+/* GAPI */
+
+void             *evas_software_wince_gapi_init (HWND window,
+                                                 int  width,
+                                                 int  height);
+FB_Output_Buffer *evas_software_wince_gapi_output_buffer_new (void *priv,
+                                                              int   width,
+                                                              int   height);
+void              evas_software_wince_gapi_shutdown(void *priv);
+void              evas_software_wince_gapi_output_buffer_free (FB_Output_Buffer *fbob);
+void              evas_software_wince_gapi_output_buffer_paste (FB_Output_Buffer *fbob);
+
+void              evas_software_wince_gapi_surface_resize(FB_Output_Buffer *fbob);
+
+void             *evas_software_wince_gapi_default_keys(void);
+int               evas_software_wince_gapi_suspend(void);
+int               evas_software_wince_gapi_resume(void);
+
+
+/* DirectDraw */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+void             *evas_software_wince_ddraw_init (HWND window,
+                                                  int  width,
+                                                  int  height);
+FB_Output_Buffer *evas_software_wince_ddraw_output_buffer_new (void *priv,
+                                                               int   width,
+                                                               int   height);
+void              evas_software_wince_ddraw_shutdown(void *priv);
+void              evas_software_wince_ddraw_output_buffer_free (FB_Output_Buffer *fbob);
+void              evas_software_wince_ddraw_output_buffer_paste (FB_Output_Buffer *fbob);
+
+void              evas_software_wince_ddraw_surface_resize(FB_Output_Buffer *fbob);
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __EVAS_ENGINE_H__ */
diff --git a/src/modules/engines/software_16_wince/evas_wince_ddraw_buffer.cpp b/src/modules/engines/software_16_wince/evas_wince_ddraw_buffer.cpp
new file mode 100644 (file)
index 0000000..a895bc0
--- /dev/null
@@ -0,0 +1,195 @@
+
+#include <iostream>
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+#include <ddraw.h>
+
+#include "evas_common.h"
+#include "evas_engine.h"
+
+
+typedef LONG (*fct_DirectDrawCreate)(LPGUID, LPUNKNOWN *, LPUNKNOWN *);
+
+fct_DirectDrawCreate lib_DirectDrawCreate;
+
+typedef struct Evas_Engine_WinCE_DDraw_Priv Evas_Engine_WinCE_DDraw_Priv;
+
+struct Evas_Engine_WinCE_DDraw_Priv
+{
+   HMODULE             module;
+   LPDIRECTDRAW        object;
+   LPDIRECTDRAWSURFACE surface;
+   int                 width;
+   int                 height;
+   int                 stride;
+};
+
+void *
+evas_software_wince_ddraw_init(HWND window,
+                               int  width,
+                               int  height)
+{
+   DDSURFACEDESC                 surface_desc;
+   Evas_Engine_WinCE_DDraw_Priv *priv;
+   HRESULT                       res;
+
+   priv = (Evas_Engine_WinCE_DDraw_Priv *)malloc(sizeof(Evas_Engine_WinCE_DDraw_Priv));
+   if (!priv)
+     return NULL;
+
+   priv->module = LoadLibrary(L"ddraw.dll");
+   if (!priv->module)
+     {
+        std::cerr << "[Evas] [Engine] [WinCE DDraw] Can not load ddraw.dll" << std::endl;
+        goto free_priv;
+     }
+
+   lib_DirectDrawCreate = (fct_DirectDrawCreate)GetProcAddress(priv->module, L"DirectDrawCreate");
+   if (!lib_DirectDrawCreate)
+     {
+        std::cerr << "[Evas] [Engine] [WinCE DDraw] Can not initialize DirectDraw" << std::endl;
+        goto free_lib;
+     }
+
+   res = lib_DirectDrawCreate(NULL, (IUnknown**)&priv->object, NULL);
+   if (FAILED(res))
+     {
+        std::cerr << "[Evas] [Engine] [WinCE DDraw] Can not create DirectDraw object" << std::endl;
+        goto free_lib;
+     }
+
+   res = priv->object->SetCooperativeLevel(window, DDSCL_EXCLUSIVE | DDSCL_FULLSCREEN);
+   if (FAILED(res))
+     {
+        std::cerr<< "[Evas] [Engine] [WinCE DDraw] Can not set window to fullscreen" << std::endl;
+        goto release_object;
+     }
+
+   memset(&surface_desc, 0, sizeof(surface_desc));
+   surface_desc.dwSize = sizeof(surface_desc);
+   surface_desc.dwFlags = DDSD_CAPS;
+   surface_desc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
+
+   res = priv->object->CreateSurface(&surface_desc, &priv->surface, NULL);
+   if (FAILED(res))
+     {
+        std::cerr << "[Evas] [Engine] [WinCE DDraw] Can not create surface" << std::endl;
+        goto release_object;
+     }
+
+   memset(&surface_desc, 0, sizeof(surface_desc));
+   surface_desc.dwSize = sizeof(surface_desc);
+   res = priv->surface->Lock(NULL, &surface_desc, DDLOCK_READONLY, NULL);
+   if (FAILED(res))
+     {
+        std::cerr << "[Evas] [Engine] [WinCE DDraw] Can not lock surface" << std::endl;
+        goto release_surface;
+     }
+
+   priv->width = surface_desc.dwWidth;
+   priv->height = surface_desc.dwHeight;
+   priv->stride = surface_desc.lPitch / 2;
+
+   if ((priv->width != width) ||
+       (priv->height != height))
+     {
+        std::cerr << "[Evas] [Engine] [WinCE DDraw] Size mismatch" << std::endl;
+        std::cerr << "[Evas] [Engine] [WinCE DDraw] asked: " << width << "x" << height << std::endl;
+        std::cerr << "[Evas] [Engine] [WinCE DDraw] got  : " << priv->width << "x" << priv->height << std::endl;
+        goto release_surface;
+     }
+
+   res = priv->surface->Unlock(NULL);
+   if (FAILED(res))
+     {
+        std::cerr << "[Evas] [Engine] [WinCE DDraw] Can not unlock surface" << std::endl;
+        goto release_surface;
+     }
+
+   return priv;
+
+ release_surface:
+   priv->surface->Release();
+ release_object:
+   priv->object->Release();
+ free_lib:
+   FreeLibrary(priv->module);
+ free_priv:
+   free(priv);
+
+  return 0;
+}
+
+void
+evas_software_wince_ddraw_shutdown(void *priv)
+{
+   ((Evas_Engine_WinCE_DDraw_Priv *)priv)->surface->Release();
+   ((Evas_Engine_WinCE_DDraw_Priv *)priv)->object->Release();
+   FreeLibrary(((Evas_Engine_WinCE_DDraw_Priv *)priv)->module);
+   free(priv);
+}
+
+
+FB_Output_Buffer *
+evas_software_wince_ddraw_output_buffer_new(void *priv,
+                                            int   width,
+                                            int   height)
+{
+   FB_Output_Buffer *fbob;
+   void             *buffer;
+
+   fbob = (FB_Output_Buffer *)calloc(1, sizeof(FB_Output_Buffer));
+   if (!fbob) return NULL;
+
+   buffer = malloc (width * height * 2); /* we are sure to have 16bpp */
+   if (!buffer)
+     {
+        free(fbob);
+        return NULL;
+     }
+
+   fbob->priv = priv;
+
+   fbob->im = (Soft16_Image *) evas_cache_image_data(evas_common_soft16_image_cache_get(), width, height, (DATA32 *)buffer, 0, EVAS_COLORSPACE_RGB565_A5P);
+   if (fbob->im)
+     fbob->im->stride = ((Evas_Engine_WinCE_DDraw_Priv *)priv)->stride;
+
+   return fbob;
+}
+
+void
+evas_software_wince_ddraw_output_buffer_free(FB_Output_Buffer *fbob)
+{
+   free(fbob->im->pixels);
+   free(fbob);
+}
+
+void
+evas_software_wince_ddraw_output_buffer_paste(FB_Output_Buffer *fbob)
+{
+   DDSURFACEDESC                 surface_desc;
+   Evas_Engine_WinCE_DDraw_Priv *priv;
+   HRESULT                       res;
+
+   priv = (Evas_Engine_WinCE_DDraw_Priv *)fbob->priv;
+
+   memset(&surface_desc, 0, sizeof(surface_desc));
+   surface_desc.dwSize = sizeof(surface_desc);
+   res = priv->surface->Lock(NULL, &surface_desc, DDLOCK_WRITEONLY, NULL);
+   if (FAILED(res))
+     return;
+
+   if ((fbob->im->cache_entry.w == surface_desc.dwWidth) &&
+       (fbob->im->cache_entry.h == surface_desc.dwHeight))
+     memcpy(surface_desc.lpSurface, fbob->im->pixels,
+            surface_desc.dwWidth * surface_desc.dwHeight * 2);
+
+   priv->surface->Unlock(NULL);
+}
+
+void
+evas_software_wince_ddraw_surface_resize(FB_Output_Buffer *fbob)
+{
+}
diff --git a/src/modules/engines/software_16_wince/evas_wince_fb_buffer.c b/src/modules/engines/software_16_wince/evas_wince_fb_buffer.c
new file mode 100644 (file)
index 0000000..165e752
--- /dev/null
@@ -0,0 +1,212 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+
+#define GETGXINFO 0x00020000
+
+typedef struct GXDeviceInfo
+{
+    long Version;               //00 (should filled with 100 before calling ExtEscape)
+    void *pvFrameBuffer;        //04
+    unsigned long cbStride;     //08
+    unsigned long cxWidth;      //0c
+    unsigned long cyHeight;     //10
+    unsigned long cBPP;         //14
+    unsigned long ffFormat;     //18
+    char Unused[0x84 - 7 * 4];
+} GXDeviceInfo;
+
+
+#define GETRAWFRAMEBUFFER 0x00020001
+
+typedef struct _RawFrameBufferInfo
+{
+   WORD  wFormat;
+   WORD  wBPP;
+   VOID *pFramePointer;
+   int   cxStride;
+   int   cyStride;
+   int   cxPixels;
+   int   cyPixels;
+} RawFrameBufferInfo;
+
+
+typedef struct Evas_Engine_WinCE_FB_Priv Evas_Engine_WinCE_FB_Priv;
+
+struct Evas_Engine_WinCE_FB_Priv
+{
+   int   width;
+   int   height;
+   void *buffer;
+};
+
+static int
+_evas_software_wince_gxinfo_init(HDC dc, int *width, int *height, void **buffer)
+{
+   GXDeviceInfo gxInfo = { 0 };
+   int          result;
+
+   gxInfo.Version = 100;
+   result = ExtEscape(dc, GETGXINFO, 0, NULL, sizeof(gxInfo),
+                      (char *) &gxInfo);
+   if (result <= 0)
+     {
+        fprintf (stderr, "[Evas] [Engine] [WinCE FB] ExtEscape() with GETGXINFO failed\n");
+        return 0;
+     }
+
+   *width = gxInfo.cyHeight;
+   *height = gxInfo.cxWidth;
+   *buffer = gxInfo.pvFrameBuffer;
+
+   return 1;
+}
+
+void *
+evas_software_wince_fb_init(HWND window,
+                            int  width,
+                            int  height)
+{
+   WCHAR                      oemstr[100];
+   RawFrameBufferInfo         rfbi;
+   HDC                        dc;
+   Evas_Engine_WinCE_FB_Priv *priv;
+
+   priv = (Evas_Engine_WinCE_FB_Priv *)malloc(sizeof(Evas_Engine_WinCE_FB_Priv));
+   if (!priv)
+     return NULL;
+
+   dc = GetDC (window);
+   if (!dc)
+     {
+        fprintf (stderr, "[Evas] [Engine] [WinCE FB] Can not get DC\n");
+        free(priv);
+        return NULL;
+     }
+
+   SystemParametersInfo (SPI_GETOEMINFO, sizeof (oemstr), oemstr, 0);
+   if (((oemstr[12] == 'H') &&
+        (oemstr[13] == '3') &&
+        (oemstr[14] == '8')) ||
+       ((oemstr[12] == 'H') &&
+        (oemstr[13] == '3') &&
+        (oemstr[14] == '9')))
+     {
+       if (!_evas_software_wince_gxinfo_init(dc, &priv->width, &priv->height, &priv->buffer))
+          {
+             ReleaseDC(window, dc);
+             free(priv);
+             return NULL;
+          }
+
+       if ((priv->width != width) ||
+           (priv->height != height))
+         {
+            fprintf (stderr, "[Evas] [Engine] [WinCE FB] Size mismatch\n");
+            fprintf (stderr, "[Evas] [Engine] [WinCE FB] asked: %dx%d\n", width, height);
+            fprintf (stderr, "[Evas] [Engine] [WinCE FB] got  : %dx%d\n", priv->width, priv->height);
+            ReleaseDC(window, dc);
+            free(priv);
+            return NULL;
+         }
+
+        ReleaseDC(window, dc);
+
+        return priv;
+     }
+
+   if (!ExtEscape(dc, GETRAWFRAMEBUFFER, 0, 0, sizeof(rfbi), (char *) &rfbi)||
+       (rfbi.wBPP != 16) ||
+       (rfbi.wFormat != 1))
+     {
+        fprintf (stderr, "[Evas] [Engine] [WinCE FB] ExtEscape() with GETRAWFRAMEBUFFER failed\n");
+        fprintf (stderr, "[Evas] [Engine] [WinCE FB] trying ExtEscape() with GETGXINFO\n");
+        if (!_evas_software_wince_gxinfo_init(dc, &priv->width, &priv->height, &priv->buffer))
+          {
+             ReleaseDC(window, dc);
+             free(priv);
+             return NULL;
+          }
+
+        ReleaseDC(window, dc);
+        return priv;
+     }
+
+  priv->width = rfbi.cxPixels;
+  priv->height = rfbi.cyPixels;
+  priv->buffer = rfbi.pFramePointer;
+
+  if ((priv->width != width) ||
+      (priv->height != height))
+    {
+       fprintf (stderr, "[Evas] [Engine] [WinCE FB] Size mismatch\n");
+       fprintf (stderr, "[Evas] [Engine] [WinCE FB] asked: %dx%d\n", width, height);
+       fprintf (stderr, "[Evas] [Engine] [WinCE FB] got  : %dx%d\n", priv->width, priv->height);
+       ReleaseDC(window, dc);
+       free(priv);
+       return NULL;
+    }
+
+  ReleaseDC(window, dc);
+
+  return priv;
+}
+
+void
+evas_software_wince_fb_shutdown(void *priv)
+{
+   free(priv);
+}
+
+
+FB_Output_Buffer *
+evas_software_wince_fb_output_buffer_new(void *priv,
+                                         int   width,
+                                         int   height)
+{
+   FB_Output_Buffer *fbob;
+   void             *buffer;
+
+   fbob = calloc(1, sizeof(FB_Output_Buffer));
+   if (!fbob) return NULL;
+
+   buffer = malloc (width * height * 2); /* we are sure to have 16bpp */
+   if (!buffer)
+     {
+        free(fbob);
+        return NULL;
+     }
+
+   fbob->priv = priv;
+
+   fbob->im = (Soft16_Image *) evas_cache_image_data(evas_common_soft16_image_cache_get(), width, height, (DATA32 *)buffer, 0, EVAS_COLORSPACE_RGB565_A5P);
+   if (fbob->im)
+     fbob->im->stride = width;
+
+   return fbob;
+}
+
+void
+evas_software_wince_fb_output_buffer_free(FB_Output_Buffer *fbob)
+{
+   free(fbob->im->pixels);
+   free(fbob);
+}
+
+void
+evas_software_wince_fb_output_buffer_paste(FB_Output_Buffer *fbob)
+{
+   Evas_Engine_WinCE_FB_Priv *priv;
+
+   priv = (Evas_Engine_WinCE_FB_Priv *)fbob->priv;
+
+   if ((fbob->im->cache_entry.w == priv->width) &&
+       (fbob->im->cache_entry.h == priv->height))
+     memcpy(priv->buffer, fbob->im->pixels,
+            priv->width * priv->height * 2);
+}
+
+void
+evas_software_wince_fb_surface_resize(FB_Output_Buffer *fbob)
+{
+}
diff --git a/src/modules/engines/software_16_wince/evas_wince_gapi.rc b/src/modules/engines/software_16_wince/evas_wince_gapi.rc
new file mode 100644 (file)
index 0000000..2a185cd
--- /dev/null
@@ -0,0 +1 @@
+HI_RES_AWARE   CEUX   {1}
diff --git a/src/modules/engines/software_16_wince/evas_wince_gapi_buffer.c b/src/modules/engines/software_16_wince/evas_wince_gapi_buffer.c
new file mode 100644 (file)
index 0000000..486b095
--- /dev/null
@@ -0,0 +1,342 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+
+typedef int (*evas_engine_wince_close_display)();
+
+typedef struct Evas_Engine_WinCE_GAPI_Priv Evas_Engine_WinCE_GAPI_Priv;
+
+
+#define GETGXINFO 0x00020000
+
+typedef struct
+{
+    long Version;               //00 (should filled with 100 before calling ExtEscape)
+    void *pvFrameBuffer;        //04
+    unsigned long cbStride;     //08
+    unsigned long cxWidth;      //0c
+    unsigned long cyHeight;     //10
+    unsigned long cBPP;         //14
+    unsigned long ffFormat;     //18
+    char Unused[0x84 - 7 * 4];
+} _GXDeviceInfo;
+
+
+#define LINK(type,name,import) \
+  name = (gapi_##type)GetProcAddress (gapi_lib, import)
+
+#define GX_FULLSCREEN 0x01
+#define GX_NORMALKEYS 0x02
+
+#define kfDirect555   0x40
+#define kfDirect565   0x80
+
+
+typedef struct
+{
+   DWORD cxWidth;
+   DWORD cyHeight;
+   LONG  cbxPitch;
+   LONG  cbyPitch;
+   LONG  cBPP;
+   DWORD ffFormat;
+} _GAPI_Display_Properties;
+
+typedef int                      (*gapi_display_open)(HWND hWnd, DWORD dwFlags);
+typedef int                      (*gapi_display_close)();
+typedef _GAPI_Display_Properties (*gapi_display_properties_get)(void);
+typedef void*                    (*gapi_draw_begin)(void);
+typedef int                      (*gapi_draw_end)(void);
+typedef int                      (*gapi_suspend)(void);
+typedef int                      (*gapi_resume)(void);
+
+gapi_suspend          suspend = NULL;
+gapi_resume           resume = NULL;
+
+int
+evas_software_wince_gapi_suspend(void)
+{
+   if (suspend)
+     return suspend();
+   else
+     return 0;
+}
+
+int
+evas_software_wince_gapi_resume(void)
+{
+   if (resume)
+     return resume();
+   else
+     return 0;
+}
+
+
+struct Evas_Engine_WinCE_GAPI_Priv
+{
+   HMODULE            lib;
+   gapi_display_close close_display;
+   gapi_draw_begin    draw_begin;
+   gapi_draw_end      draw_end;
+   void              *buffer;
+   int                width;
+   int                height;
+   int                stride;
+};
+
+void *
+evas_software_wince_gapi_init(HWND window,
+                              int  width,
+                              int  height)
+{
+   WCHAR                        oemstr[100];
+   _GAPI_Display_Properties     prop;
+   HMODULE                      gapi_lib;
+   Evas_Engine_WinCE_GAPI_Priv *priv;
+
+   gapi_display_open            display_open = NULL;
+   gapi_display_close           display_close = NULL;
+   gapi_display_properties_get  display_properties_get = NULL;
+   gapi_draw_begin              draw_begin = NULL;
+   gapi_draw_end                draw_end = NULL;
+
+   priv = (Evas_Engine_WinCE_GAPI_Priv *)malloc(sizeof(Evas_Engine_WinCE_GAPI_Priv));
+   if (!priv)
+     return NULL;
+
+   gapi_lib = LoadLibrary(L"\\Windows\\gx.dll");
+   if (!gapi_lib)
+     {
+        gapi_lib = LoadLibrary(L"gx.dll");
+        if (!gapi_lib)
+          {
+             fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] Can not load gx.dll\n");
+             goto free_priv;
+          }
+     }
+
+   LINK(display_open, display_open, L"?GXOpenDisplay@@YAHPAUHWND__@@K@Z");
+   LINK(display_close, display_close, L"?GXCloseDisplay@@YAHXZ");
+   LINK(display_properties_get, display_properties_get, L"?GXGetDisplayProperties@@YA?AUGXDisplayProperties@@XZ");
+   LINK(draw_begin, draw_begin, L"?GXBeginDraw@@YAPAXXZ");
+   LINK(draw_end, draw_end, L"?GXEndDraw@@YAHXZ");
+   LINK(suspend, suspend, L"?GXSuspend@@YAHXZ" );
+   LINK(resume, resume, L"?GXResume@@YAHXZ" );
+
+   if (!display_open ||
+       !display_close ||
+       !display_properties_get ||
+       !draw_begin ||
+       !draw_end ||
+       !suspend ||
+       !resume)
+     {
+        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] Can not find valid symbols\n");
+        goto free_lib;
+     }
+
+   if (!display_open(window, GX_FULLSCREEN))
+     {
+        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] Can not open display\n");
+        goto free_lib;
+     }
+
+   prop = display_properties_get();
+
+   // verify pixel format
+   if(!(prop.ffFormat & kfDirect565) || (prop.cBPP != 16))
+     {
+        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] display format mismatch\n");
+        goto close_display;
+     }
+
+   // verify we have a vga device
+   if ((GetSystemMetrics(SM_CXSCREEN) != (int)prop.cxWidth) ||
+       (GetSystemMetrics(SM_CYSCREEN) != (int)prop.cyHeight))
+     {
+        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] display size mismatch\n");
+        goto close_display;
+     }
+
+   priv->lib = gapi_lib;
+   priv->close_display = display_close;
+   priv->draw_begin = draw_begin;
+   priv->draw_end = draw_end;
+
+   /* GAPI on Ipaq H38** and H39** is completely buggy */
+   /* They are detected as portrait device (width = 240 and height = 320) */
+   /* but the framebuffer is managed like a landscape device : */
+   /*
+     240
+ +---------+
+ |         |
+ |         |
+ |         |
+ |         |
+ |         | 320
+ | ^^^     |
+ | |||     |
+ | |||     |
+ | |||     |
+ +---------+
+  ---->
+
+   */
+   /* So these devices are considered as landscape devices */
+   /* and width and height are switched. */
+   /* Other devices are managed normally : */
+   /*
+     240
+  +---------+
+| |--->     |
+| |--->     |
+| |--->     |
+v |         |
+  |         | 320
+  |         |
+  |         |
+  |         |
+  |         |
+  +---------+
+
+    */
+
+   SystemParametersInfo (SPI_GETOEMINFO, sizeof (oemstr), oemstr, 0);
+
+   if (((oemstr[12] == 'H') &&
+        (oemstr[13] == '3') &&
+        (oemstr[14] == '8')) ||
+       ((oemstr[12] == 'H') &&
+        (oemstr[13] == '3') &&
+        (oemstr[14] == '9')))
+     {
+        _GXDeviceInfo gxInfo = { 0 };
+        HDC           dc;
+        int           result;
+
+        priv->width = prop.cyHeight;
+        priv->height = prop.cxWidth;
+        priv->stride = prop.cbxPitch;
+
+        dc = GetDC (window);
+        if (!dc)
+          {
+             fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] Can not get device\n");
+             goto close_display;
+          }
+
+        gxInfo.Version = 100;
+        result = ExtEscape(dc, GETGXINFO, 0, NULL, sizeof(gxInfo),
+                           (char *) &gxInfo);
+        if (result <= 0)
+          {
+             fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] ExtEscape failed\n");
+             ReleaseDC(window, dc);
+             goto close_display;
+          }
+
+        priv->buffer = gxInfo.pvFrameBuffer;
+        ReleaseDC(window, dc);
+     }
+   else
+     {
+        priv->width = prop.cxWidth;
+        priv->height = prop.cyHeight;
+        priv->stride = prop.cbyPitch;
+        priv->buffer = NULL;
+     }
+
+   if ((priv->width != width) ||
+       (priv->height != height))
+     {
+        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] Size mismatch\n");
+        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] asked: %dx%d\n", width, height);
+        fprintf (stderr, "[Evas] [Engine] [WinCE GAPI] got  : %dx%d\n", priv->width, priv->height);
+        goto close_display;
+     }
+
+   return priv;
+
+ close_display:
+   display_close();
+ free_lib:
+   FreeLibrary(gapi_lib);
+ free_priv:
+   free(priv);
+   return NULL;
+}
+
+void
+evas_software_wince_gapi_shutdown(void *priv)
+{
+   Evas_Engine_WinCE_GAPI_Priv *p;
+
+   p = (Evas_Engine_WinCE_GAPI_Priv *)priv;
+   p->close_display();
+   suspend = NULL;
+   resume = NULL;
+   FreeLibrary(p->lib);
+   free(p);
+}
+
+
+FB_Output_Buffer *
+evas_software_wince_gapi_output_buffer_new(void *priv,
+                                           int   width,
+                                           int   height)
+{
+   FB_Output_Buffer *fbob;
+   void             *buffer;
+
+   fbob = calloc(1, sizeof(FB_Output_Buffer));
+   if (!fbob) return NULL;
+
+   buffer = malloc (width * height * 2); /* we are sure to have 16bpp */
+   if (!buffer)
+     {
+        free(fbob);
+        return NULL;
+     }
+
+   fbob->priv = priv;
+
+   fbob->im = (Soft16_Image *) evas_cache_image_data(evas_common_soft16_image_cache_get(), width, height, (DATA32 *)buffer, 0, EVAS_COLORSPACE_RGB565_A5P);
+   if (fbob->im)
+     fbob->im->stride = ((Evas_Engine_WinCE_GAPI_Priv *)priv)->stride >> 1;
+
+   return fbob;
+}
+
+void
+evas_software_wince_gapi_output_buffer_free(FB_Output_Buffer *fbob)
+{
+   free(fbob->im->pixels);
+   free(fbob);
+}
+
+void
+evas_software_wince_gapi_output_buffer_paste(FB_Output_Buffer *fbob)
+{
+   Evas_Engine_WinCE_GAPI_Priv *priv;
+   void                        *buffer;
+
+   priv = (Evas_Engine_WinCE_GAPI_Priv *)fbob->priv;
+
+   buffer = priv->draw_begin();
+   if (!buffer)
+     return;
+
+   if (priv->buffer) buffer = priv->buffer;
+
+   if ((fbob->im->cache_entry.w == priv->width) &&
+       (fbob->im->cache_entry.h == priv->height))
+     memcpy(buffer, fbob->im->pixels,
+            priv->width * priv->height * 2);
+
+   priv->draw_end();
+}
+
+void
+evas_software_wince_gapi_surface_resize(FB_Output_Buffer *fbob)
+{
+}
diff --git a/src/modules/engines/software_16_x11/.cvsignore b/src/modules/engines/software_16_x11/.cvsignore
new file mode 100644 (file)
index 0000000..09980ae
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/modules/engines/software_16_x11/Evas_Engine_Software_16_X11.h b/src/modules/engines/software_16_x11/Evas_Engine_Software_16_X11.h
new file mode 100644 (file)
index 0000000..47885fa
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef _EVAS_ENGINE_SOFTWARE_16_X11_H
+#define _EVAS_ENGINE_SOFTWARE_16_X11_H
+
+#include <X11/Xlib.h>
+
+typedef struct _Evas_Engine_Info_Software_16_X11              Evas_Engine_Info_Software_16_X11;
+
+struct _Evas_Engine_Info_Software_16_X11
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   /* engine specific data & parameters it needs to set up */
+   struct {
+      Display  *display;
+      Drawable  drawable;
+      int rotation;
+   } info;
+};
+#endif
+
+
diff --git a/src/modules/engines/software_16_x11/Makefile.am b/src/modules/engines/software_16_x11/Makefile.am
new file mode 100644 (file)
index 0000000..628e459
--- /dev/null
@@ -0,0 +1,37 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+-I$(top_srcdir)/src/modules/engines/software_16 \
+@FREETYPE_CFLAGS@ \
+@x_cflags@
+
+if BUILD_ENGINE_SOFTWARE_16_X11
+
+pkgdir = $(libdir)/evas/modules/engines/software_16_x11/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_x_buffer.c
+
+module_la_LIBADD = @x_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Software_16_X11.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_x_buffer.c \
+Evas_Engine_Software_16_X11.h
diff --git a/src/modules/engines/software_16_x11/evas_engine.c b/src/modules/engines/software_16_x11/evas_engine.c
new file mode 100644 (file)
index 0000000..5eca87a
--- /dev/null
@@ -0,0 +1,585 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Software_16_X11.h"
+#include "evas_common_soft16.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Display          *disp;
+   Drawable          draw;
+   GC                gc;
+   int               w, h, rot;
+   Tilebuf          *tb;
+   Tilebuf_Rect     *rects;
+   Tilebuf_Rect     *cur_rect;
+   X_Output_Buffer  *shbuf;
+   Soft16_Image     *tmp_out; /* used by indirect render, like rotation */
+   Region            clip_rects;
+   unsigned char     end : 1;
+   unsigned char     shm : 1;
+};
+
+/* prototypes we will use here */
+
+static void *eng_info(Evas *e);
+static void eng_info_free(Evas *e, void *info);
+static void eng_setup(Evas *e, void *info);
+static void eng_output_free(void *data);
+static void eng_output_resize(void *data, int w, int h);
+static void eng_output_tile_size_set(void *data, int w, int h);
+static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_clear(void *data);
+static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h);
+static void eng_output_flush(void *data);
+static void eng_output_idle_flush(void *data);
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Software_16_X11 *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_Software_16_X11));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_Software_16_X11 *in;
+
+   in = (Evas_Engine_Info_Software_16_X11 *)info;
+   free(in);
+}
+
+static void
+_tmp_out_alloc(Render_Engine *re)
+{
+   Tilebuf_Rect *r;
+   int w = 0, h = 0;
+
+   for (r = re->rects; r; r = (Tilebuf_Rect *)(r->_list_data.next))
+     {
+       if (r->w > w) w = r->w;
+       if (r->h > h) h = r->h;
+     }
+
+   if (re->tmp_out)
+     {
+       if ((re->tmp_out->cache_entry.w < w) || (re->tmp_out->cache_entry.h < h))
+         {
+             evas_cache_image_drop(&re->tmp_out->cache_entry);
+            re->tmp_out = NULL;
+         }
+     }
+
+   if (!re->tmp_out)
+     {
+       Soft16_Image *im;
+
+        im = (Soft16_Image *) evas_cache_image_empty(evas_common_soft16_image_cache_get());
+        im->cache_entry.flags.alpha = 0;
+        evas_cache_image_surface_alloc(&im->cache_entry, w, h);
+
+       re->tmp_out = im;
+     }
+}
+
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_Software_16_X11 *info;
+/*    X_Output_Buffer *xob; */
+   XGCValues gcv;
+   
+   info = (Evas_Engine_Info_Software_16_X11 *)in;
+   if (!e->engine.data.output)
+     {
+       /* the only check - simplistic, i know, but enough for this 
+        * "special purpose" engine. Remember it is meant to be used
+        * for limited power devices that have a 16bit display mode
+        * and no real other acceleration, and high resolution so we
+        * can pre-dither into 16bpp. */
+//     if (DefaultDepth(info->info.display, 
+//                      DefaultScreen(info->info.display)) != 16)
+//       return;
+       /* do common routine init - we wil at least use it for core
+        * image loading and font loading/glyph rendering & placement */
+       evas_common_cpu_init();
+       
+       evas_common_blend_init();
+       evas_common_image_init();
+       evas_common_convert_init();
+       evas_common_scale_init();
+       evas_common_rectangle_init();
+       evas_common_gradient_init();
+       evas_common_polygon_init();
+       evas_common_line_init();
+       evas_common_font_init();
+       evas_common_draw_init();
+       evas_common_tilebuf_init();
+       evas_common_soft16_image_init();
+
+       /* render engine specific data */
+       re = calloc(1, sizeof(Render_Engine));
+       e->engine.data.output = re;
+       re->disp = info->info.display;
+       re->draw = info->info.drawable;
+       re->gc = XCreateGC(re->disp, re->draw, 0, &gcv);
+       re->w = e->output.w;
+       re->h = e->output.h;
+       re->rot = info->info.rotation;
+       re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+     }
+   else
+     {
+       /* we changed the info after first init - do a re-eval where
+        * appropriate */
+//     if (DefaultDepth(info->info.display, 
+//                      DefaultScreen(info->info.display)) != 16)
+//       return;
+       re = e->engine.data.output;
+       if (re->tb) evas_common_tilebuf_free(re->tb);
+       re->disp = info->info.display;
+       re->draw = info->info.drawable;
+       XFreeGC(re->disp, re->gc);
+       re->gc = XCreateGC(re->disp, re->draw, 0, &gcv);
+       re->w = e->output.w;
+       re->h = e->output.h;
+       re->rot = info->info.rotation;
+       re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+       if (re->tmp_out)
+         {
+             evas_cache_image_drop(&re->tmp_out->cache_entry);
+            re->tmp_out = NULL;
+         }
+     }
+   if (!e->engine.data.output) return;
+   /* add a draw context if we dont have one */
+   if (!e->engine.data.context)
+     e->engine.data.context =
+     e->engine.func->context_new(e->engine.data.output);
+   /* check if the display can do shm */
+   re->shm = evas_software_x11_x_can_do_shm(re->disp);
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->shbuf) evas_software_x11_x_output_buffer_free(re->shbuf, 0);
+   if (re->clip_rects) XDestroyRegion(re->clip_rects);
+   if (re->gc) XFreeGC(re->disp, re->gc);
+   if (re->tb) evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   if (re->tmp_out) evas_cache_image_drop(&re->tmp_out->cache_entry);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+   evas_common_soft16_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+
+   if ((re->w == w) && (re->h == h)) return;
+
+   evas_common_tilebuf_free(re->tb);
+   re->w = w;
+   re->h = h;
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   if (re->shbuf)
+     {
+        evas_software_x11_x_output_buffer_free(re->shbuf, 0);
+       re->shbuf = NULL;
+     }
+   if (re->clip_rects)
+     {
+       XDestroyRegion(re->clip_rects);
+       re->clip_rects = NULL;
+     }
+   if (re->tmp_out)
+     {
+        evas_cache_image_drop(&re->tmp_out->cache_entry);
+       re->tmp_out = NULL;
+     }
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static inline void
+_output_buffer_alloc(Render_Engine *re)
+{
+   int w, h;
+   if (re->shbuf) return;
+
+   if ((re->rot == 0) || (re->rot == 180))
+     {
+       w = re->w;
+       h = re->h;
+     }
+   else
+     {
+       w = re->h;
+       h = re->w;
+     }
+
+   re->shbuf = evas_software_x11_x_output_buffer_new
+     (re->disp, DefaultVisual(re->disp, DefaultScreen(re->disp)),
+      DefaultDepth(re->disp, DefaultScreen(re->disp)),
+      w, h, 1, NULL);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       if (!re->rects) return NULL;
+
+       re->cur_rect = re->rects;
+       _output_buffer_alloc(re);
+       if (re->rot != 0) _tmp_out_alloc(re); /* grows if required */
+     }
+   if (!re->cur_rect)
+     {
+       if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       return NULL;
+     }
+   rect = re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = (Tilebuf_Rect *)(re->cur_rect->_list_data.next);
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   if (re->rot == 0)
+     {
+       *cx = ux; *cy = uy; *cw = uw; *ch = uh;
+       return re->shbuf->im;
+     }
+   else
+     {
+       *cx = 0; *cy = 0; *cw = uw; *ch = uh;
+       return re->tmp_out;
+     }
+}
+
+static void
+_blit_rot_90(Soft16_Image *dst, const Soft16_Image *src,
+            int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + (out_x +
+                      (w + out_y - 1) * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr -= dst->stride;
+         }
+       sp += src->stride;
+       dp++;
+     }
+}
+
+static void
+_blit_rot_180(Soft16_Image *dst, const Soft16_Image *src,
+             int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + ((w + out_x - 1) +
+                      (h + out_y - 1) * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr--;
+         }
+       sp += src->stride;
+       dp -= dst->stride;
+     }
+}
+
+static void
+_blit_rot_270(Soft16_Image *dst, const Soft16_Image *src,
+             int out_x, int out_y, int w, int h)
+{
+   DATA16 *dp, *sp;
+   int x, y;
+
+   sp = src->pixels;
+   dp = dst->pixels + ((h + out_x - 1) +
+                      out_y * dst->stride);
+
+   for (y = 0; y < h; y++)
+     {
+       DATA16 *dp_itr, *sp_itr;
+
+       sp_itr = sp;
+       dp_itr = dp;
+
+       for (x = 0; x < w; x++)
+         {
+            *dp_itr = *sp_itr;
+
+            sp_itr++;
+            dp_itr += dst->stride;
+         }
+       sp += src->stride;
+       dp--;
+     }
+}
+
+static void
+_tmp_out_process(Render_Engine *re, int out_x, int out_y, int w, int h)
+{
+   Soft16_Image *d, *s;
+   DATA16 *dp, *sp;
+   int y, x, d_dir;
+
+   d = re->shbuf->im;
+   s = re->tmp_out;
+
+   if ((w < 1) || (h < 1) || (out_x >= d->cache_entry.w) || (out_y >= d->cache_entry.h))
+     return;
+
+   if (re->rot == 90)
+     _blit_rot_90(d, s, out_x, out_y, w, h);
+   else if (re->rot == 180)
+     _blit_rot_180(d, s, out_x, out_y, w, h);
+   else if (re->rot == 270)
+     _blit_rot_270(d, s, out_x, out_y, w, h);
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+   XRectangle r;
+
+   re = (Render_Engine *)data;
+
+   if (!re->clip_rects)
+      re->clip_rects = XCreateRegion();
+
+   if (re->rot == 0)
+     {
+       r.x = x;
+       r.y = y;
+       r.width = w;
+       r.height = h;
+     }
+   else if (re->rot == 90)
+     {
+       r.x = y;
+       r.y = re->w - w - x;
+       r.width = h;
+       r.height = w;
+     }
+   else if (re->rot == 180)
+     {
+       r.x = re->w - w - x;
+       r.y = re->h - h - y;
+       r.width = w;
+       r.height = h;
+     }
+   else if (re->rot == 270)
+     {
+       r.x = re->h - h - y;
+       r.y = x;
+       r.width = h;
+       r.height = w;
+     }
+
+   if (re->rot != 0)
+     _tmp_out_process(re, r.x, r.y, w, h);
+   XUnionRectWithRegion(&r, re->clip_rects, re->clip_rects);
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+   int w, h;
+
+   re = (Render_Engine *)data;
+   if (re->clip_rects)
+     {
+       XSetRegion(re->disp, re->gc, re->clip_rects);
+       XDestroyRegion(re->clip_rects);
+       re->clip_rects = NULL;
+     }
+   else return;
+
+   evas_software_x11_x_output_buffer_paste
+     (re->shbuf, re->draw, re->gc, 0, 0, re->shbuf->im->cache_entry.w, re->shbuf->im->cache_entry.h, 1);
+   XSetClipMask(re->disp, re->gc, None);
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->shbuf)
+     {
+       evas_software_x11_x_output_buffer_free(re->shbuf, 0);
+       re->shbuf = NULL;
+     }
+   if (re->clip_rects)
+     {
+       XDestroyRegion(re->clip_rects);
+       re->clip_rects = NULL;
+     }
+   if (re->tmp_out)
+     {
+        evas_cache_image_drop(&re->tmp_out->cache_entry);
+       re->tmp_out = NULL;
+     }
+}
+
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_16")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi = 
+{
+   EVAS_MODULE_API_VERSION, 
+     EVAS_MODULE_TYPE_ENGINE,
+     "software_16_x11",
+     "none"
+};
diff --git a/src/modules/engines/software_16_x11/evas_engine.h b/src/modules/engines/software_16_x11/evas_engine.h
new file mode 100644 (file)
index 0000000..7150126
--- /dev/null
@@ -0,0 +1,36 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/extensions/XShm.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+#include "evas_common_soft16.h"
+
+typedef struct _X_Output_Buffer       X_Output_Buffer;
+
+struct _X_Output_Buffer
+{
+   Soft16_Image    *im;
+   Display         *display;
+   XImage          *xim;
+   XShmSegmentInfo *shm_info;
+   void            *data;
+};
+
+/****/
+void             evas_software_x11_x_init                        (void);
+
+int              evas_software_x11_x_can_do_shm                  (Display *d);
+X_Output_Buffer *evas_software_x11_x_output_buffer_new           (Display *d, Visual *v, int depth, int w, int h, int try_shm, void *data);
+void             evas_software_x11_x_output_buffer_free          (X_Output_Buffer *xob, int sync);
+void             evas_software_x11_x_output_buffer_paste         (X_Output_Buffer *xob, Drawable d, GC gc, int x, int y, int w, int h, int sync);
+DATA8           *evas_software_x11_x_output_buffer_data          (X_Output_Buffer *xob, int *bytes_per_line_ret);
+int              evas_software_x11_x_output_buffer_depth         (X_Output_Buffer *xob);
+int              evas_software_x11_x_output_buffer_byte_order    (X_Output_Buffer *xob);
+int              evas_software_x11_x_output_buffer_bit_order     (X_Output_Buffer *xob);
+
+#endif
diff --git a/src/modules/engines/software_16_x11/evas_x_buffer.c b/src/modules/engines/software_16_x11/evas_x_buffer.c
new file mode 100644 (file)
index 0000000..d5d78f2
--- /dev/null
@@ -0,0 +1,186 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+static int _x_err = 0;
+
+int
+evas_software_x11_x_can_do_shm(Display *d)
+{
+   static Display *cached_d = NULL;
+   static int cached_result = 0;
+   
+   if (d == cached_d) return cached_result;
+   cached_d = d;
+   if (XShmQueryExtension(d))
+     {
+       X_Output_Buffer *xob;
+
+       xob = evas_software_x11_x_output_buffer_new
+         (d, DefaultVisual(d, DefaultScreen(d)),
+          DefaultDepth(d, DefaultScreen(d)), 16, 16, 2, NULL);
+       if (!xob)
+         {
+            cached_result = 0;
+            return 0;
+         }
+       evas_software_x11_x_output_buffer_free(xob, 1);
+       cached_result = 1;
+       return 1;
+     }
+   cached_result = 0;
+   return 0;
+}
+
+static void
+x_output_tmp_x_err(Display * d, XErrorEvent * ev)
+{
+   _x_err = 1;
+   return;
+}
+
+X_Output_Buffer *
+evas_software_x11_x_output_buffer_new(Display *d, Visual *v, int depth, int w, int h, int try_shm, void *data)
+{
+   X_Output_Buffer *xob;
+
+   xob = calloc(1, sizeof(X_Output_Buffer));
+   if (!xob) return NULL;
+
+   xob->display = d;
+   xob->xim = NULL;
+   xob->shm_info = NULL;
+
+   if (try_shm > 0)
+     {
+       xob->shm_info = malloc(sizeof(XShmSegmentInfo));
+       if (xob->shm_info)
+         {
+            xob->xim = XShmCreateImage(d, v, depth, ZPixmap, NULL,
+                                       xob->shm_info, w, h);
+            if (xob->xim)
+              {
+                 xob->shm_info->shmid = shmget(IPC_PRIVATE,
+                                               xob->xim->bytes_per_line *
+                                               xob->xim->height,
+                                               IPC_CREAT | 0777);
+                 if (xob->shm_info->shmid >= 0)
+                   {
+                      xob->shm_info->readOnly = False;
+                      xob->shm_info->shmaddr = xob->xim->data =
+                        shmat(xob->shm_info->shmid, 0, 0);
+                      if (xob->shm_info->shmaddr != NULL)
+                        {
+                           XErrorHandler ph;
+
+                           XSync(d, False);
+                           _x_err = 0;
+                           ph = XSetErrorHandler((XErrorHandler)
+                                                 x_output_tmp_x_err);
+                           XShmAttach(d, xob->shm_info);
+                           XSync(d, False);
+                           XSetErrorHandler((XErrorHandler)ph);
+                           if (!_x_err)
+                             {
+                                 xob->im = (Soft16_Image *) evas_cache_image_data(evas_common_soft16_image_cache_get(), w, h, (DATA32 *) xob->xim->data, 0, EVAS_COLORSPACE_RGB565_A5P);
+                                 if (xob->im)
+                                   xob->im->stride = xob->xim->bytes_per_line / sizeof(DATA16);
+                                return xob;
+                             }
+                        }
+                      shmdt(xob->shm_info->shmaddr);
+                      shmctl(xob->shm_info->shmid, IPC_RMID, 0);
+                   }
+                 if (xob->xim) XDestroyImage(xob->xim);
+                 xob->xim = NULL;
+              }
+            if (xob->shm_info) free(xob->shm_info);
+            xob->shm_info = NULL;
+         }
+     }
+
+   if (try_shm > 1) return NULL;
+
+   xob->xim = XCreateImage(d, v, depth, ZPixmap, 0, data, w, h, 32, 0);
+   if (!xob->xim)
+     {
+       free(xob);
+       return NULL;
+     }
+
+   xob->data = data;
+
+   if (!xob->xim->data)
+     {
+       xob->xim->data = malloc(xob->xim->bytes_per_line * xob->xim->height);
+       if (!xob->xim->data)
+         {
+            XDestroyImage(xob->xim);
+            free(xob);
+            return NULL;
+         }
+     }
+   if (xob->im)
+     evas_cache_image_drop(&xob->im->cache_entry);
+
+   xob->im =  (Soft16_Image *) evas_cache_image_data(evas_common_soft16_image_cache_get(), w, h, (DATA32 *) xob->xim->data, 0, EVAS_COLORSPACE_RGB565_A5P);
+   if (xob->im)
+     xob->im->stride = xob->xim->bytes_per_line / sizeof(DATA16);
+   return xob;
+}
+
+void
+evas_software_x11_x_output_buffer_free(X_Output_Buffer *xob, int sync)
+{
+   if (xob->shm_info)
+     {
+       if (sync) XSync(xob->display, False);
+       XShmDetach(xob->display, xob->shm_info);
+       XDestroyImage(xob->xim);
+       shmdt(xob->shm_info->shmaddr);
+       shmctl(xob->shm_info->shmid, IPC_RMID, 0);
+       free(xob->shm_info);
+     }
+   else
+     {
+       if (xob->data) xob->xim->data = NULL;
+       XDestroyImage(xob->xim);
+     }
+   free(xob);
+}
+
+void
+evas_software_x11_x_output_buffer_paste(X_Output_Buffer *xob, Drawable d, GC gc, int x, int y, int w, int h, int sync)
+{
+   if (xob->shm_info)
+     {
+       XShmPutImage(xob->display, d, gc, xob->xim, 0, 0, x, y, w, h, False);
+       if (sync) XSync(xob->display, False);
+     }
+   else
+     XPutImage(xob->display, d, gc, xob->xim, 0, 0, x, y, w, h);
+}
+
+DATA8 *
+evas_software_x11_x_output_buffer_data(X_Output_Buffer *xob, int *bytes_per_line_ret)
+{
+   if (bytes_per_line_ret) *bytes_per_line_ret = xob->xim->bytes_per_line;
+   return xob->xim->data;
+}
+
+int
+evas_software_x11_x_output_buffer_depth(X_Output_Buffer *xob)
+{
+   return xob->xim->bits_per_pixel;
+}
+
+int
+evas_software_x11_x_output_buffer_byte_order(X_Output_Buffer *xob)
+{
+   return xob->xim->byte_order;
+}
+
+int
+evas_software_x11_x_output_buffer_bit_order(X_Output_Buffer *xob)
+{
+   return xob->xim->bitmap_bit_order;
+}
diff --git a/src/modules/engines/software_ddraw/.cvsignore b/src/modules/engines/software_ddraw/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/software_ddraw/Evas_Engine_Software_DDraw.h b/src/modules/engines/software_ddraw/Evas_Engine_Software_DDraw.h
new file mode 100644 (file)
index 0000000..f0628d6
--- /dev/null
@@ -0,0 +1,26 @@
+#ifndef __EVAS_ENGINE_SOFTWARE_DDRAW_H__
+#define __EVAS_ENGINE_SOFTWARE_DDRAW_H__
+
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+
+
+typedef struct _Evas_Engine_Info_Software_DDraw Evas_Engine_Info_Software_DDraw;
+
+struct _Evas_Engine_Info_Software_DDraw
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   struct {
+      HWND                window;
+      int                 depth;
+      int                 rotation;
+   } info;
+};
+
+
+#endif /* __EVAS_ENGINE_SOFTWARE_DDRAW_H__ */
diff --git a/src/modules/engines/software_ddraw/Makefile.am b/src/modules/engines/software_ddraw/Makefile.am
new file mode 100644 (file)
index 0000000..aa817b7
--- /dev/null
@@ -0,0 +1,38 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@
+
+if BUILD_ENGINE_SOFTWARE_DDRAW
+
+pkgdir = $(libdir)/evas/modules/engines/software_ddraw/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_ddraw_buffer.c \
+evas_ddraw_main.cpp
+
+module_la_LIBADD = @ddraw_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Software_DDraw.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_ddraw_buffer.c \
+evas_ddraw_main.cpp \
+Evas_Engine_Software_DDraw.h
diff --git a/src/modules/engines/software_ddraw/evas_ddraw_buffer.c b/src/modules/engines/software_ddraw/evas_ddraw_buffer.c
new file mode 100644 (file)
index 0000000..870bcb2
--- /dev/null
@@ -0,0 +1,91 @@
+#include <string.h>
+
+#include "evas_common.h"
+#include "evas_engine.h"
+
+
+DD_Output_Buffer *
+evas_software_ddraw_output_buffer_new(int   depth,
+                                      int   width,
+                                      int   height,
+                                      void *data)
+{
+   DD_Output_Buffer *ddob;
+
+   ddob = calloc(1, sizeof(DD_Output_Buffer));
+   if (!ddob) return NULL;
+
+   ddob->data = data;
+   ddob->depth = depth;
+   ddob->width = width;
+   ddob->height = height;
+   ddob->pitch = width * depth / 8;
+
+   if (!ddob->data)
+     {
+        ddob->data = malloc(ddob->pitch * height);
+        if (!ddob->data)
+          {
+            free(ddob);
+            return NULL;
+          }
+     }
+
+   return ddob;
+}
+
+void
+evas_software_ddraw_output_buffer_free(DD_Output_Buffer *ddob)
+{
+   if (ddob->data) free(ddob->data);
+   free(ddob);
+}
+
+void
+evas_software_ddraw_output_buffer_paste(DD_Output_Buffer *ddob,
+                                        void             *ddraw_data,
+                                        int               ddraw_width,
+                                        int               ddraw_height,
+                                        int               ddraw_pitch,
+                                        int               ddraw_depth,
+                                        int               x,
+                                        int               y)
+{
+   DATA8 *dd_data;
+   DATA8 *evas_data;
+   int    width;
+   int    height;
+   int    pitch;
+   int    j;
+
+   if ((x >= ddraw_width) || (y >= ddraw_height))
+     return;
+
+   /* compute the size of the data to copy on the back surface */
+   width = ((x + ddob->width) > ddraw_width)
+     ? ddraw_width - x
+     : ddob->width;
+   height = ((y + ddob->height) > ddraw_height)
+     ? ddraw_height - y
+     : ddob->height;
+   pitch = width * ddob->depth / 8;
+
+   dd_data = (DATA8 *)ddraw_data + y * ddraw_pitch + x * ddraw_depth;
+   evas_data = (unsigned char *)ddob->data;
+   for (j = 0; j < height; j++, evas_data += ddob->pitch, dd_data += ddraw_pitch)
+     memcpy(dd_data, evas_data, pitch);
+}
+
+DATA8 *
+evas_software_ddraw_output_buffer_data(DD_Output_Buffer *ddob,
+                                       int              *bytes_per_line_ret)
+{
+   if (bytes_per_line_ret) *bytes_per_line_ret = ddob->pitch;
+   return ddob->data;
+}
+
+int
+evas_software_ddraw_output_buffer_depth(DD_Output_Buffer *ddob)
+{
+   return ddob->depth;
+}
diff --git a/src/modules/engines/software_ddraw/evas_ddraw_main.cpp b/src/modules/engines/software_ddraw/evas_ddraw_main.cpp
new file mode 100644 (file)
index 0000000..ec5c606
--- /dev/null
@@ -0,0 +1,195 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+int
+evas_software_ddraw_init (HWND    window,
+                          int     depth,
+                          Outbuf *buf)
+{
+   DDSURFACEDESC  surface_desc;
+   DDPIXELFORMAT  pixel_format;
+   RECT           rect;
+   LPDIRECTDRAW   o;
+   HRESULT        res;
+   int            width;
+   int            height;
+
+   if (!buf)
+     return 0;
+
+   if (!GetClientRect(window, &rect))
+     return 0;
+
+   width = rect.right - rect.left;
+   height = rect.bottom - rect.top;
+
+   buf->priv.dd.window = window;
+
+   res = DirectDrawCreate(NULL, &buf->priv.dd.object, NULL);
+   if (FAILED(res))
+     return 0;
+
+   res = buf->priv.dd.object->SetCooperativeLevel(window, DDSCL_NORMAL);
+   if (FAILED(res))
+     goto release_object;
+
+   res = buf->priv.dd.object->CreateClipper (0, &buf->priv.dd.clipper, NULL);
+   if (FAILED(res))
+     goto release_object;
+
+   res = buf->priv.dd.clipper->SetHWnd (0, window);
+   if (FAILED(res))
+     goto release_clipper;
+
+   memset(&surface_desc, 0, sizeof(surface_desc));
+   surface_desc.dwSize = sizeof(surface_desc);
+   surface_desc.dwFlags = DDSD_CAPS;
+   surface_desc.ddsCaps.dwCaps = DDSCAPS_PRIMARYSURFACE;
+
+   res = buf->priv.dd.object->CreateSurface (&surface_desc, &buf->priv.dd.surface_primary, NULL);
+   if (FAILED(res))
+     goto release_clipper;
+
+   res = buf->priv.dd.surface_primary->SetClipper (buf->priv.dd.clipper);
+   if (FAILED(res))
+     goto release_surface_primary;
+
+   memset (&surface_desc, 0, sizeof(surface_desc));
+   surface_desc.dwSize = sizeof(surface_desc);
+   surface_desc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
+   surface_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
+   surface_desc.dwWidth = width;
+   surface_desc.dwHeight = height;
+
+   res = buf->priv.dd.object->CreateSurface (&surface_desc, &buf->priv.dd.surface_back, NULL);
+   if (FAILED(res))
+     goto release_surface_primary;
+
+   ZeroMemory(&pixel_format, sizeof(pixel_format));
+   pixel_format.dwSize = sizeof(pixel_format);
+   buf->priv.dd.surface_primary->GetPixelFormat(&pixel_format);
+
+   if (pixel_format.dwRGBBitCount != depth)
+     goto release_surface_back;
+
+   buf->priv.dd.depth = depth;
+
+   return 1;
+
+ release_surface_back:
+   buf->priv.dd.surface_back->Release();
+ release_surface_primary:
+   buf->priv.dd.surface_primary->Release();
+ release_clipper:
+   buf->priv.dd.clipper->Release();
+ release_object:
+   buf->priv.dd.object->Release();
+
+   return 0;
+}
+
+void
+evas_software_ddraw_shutdown(Outbuf *buf)
+{
+   if (!buf)
+     return;
+
+   buf->priv.dd.surface_back->Release();
+   buf->priv.dd.surface_primary->Release();
+   buf->priv.dd.clipper->Release();
+   buf->priv.dd.object->Release();
+}
+
+int
+evas_software_ddraw_masks_get(Outbuf *buf)
+{
+   DDPIXELFORMAT pixel_format;
+
+   ZeroMemory(&pixel_format, sizeof(pixel_format));
+   pixel_format.dwSize = sizeof(pixel_format);
+
+   if (FAILED(buf->priv.dd.surface_primary->GetPixelFormat(&pixel_format)))
+     return 0;
+
+   buf->priv.mask.r = pixel_format.dwRBitMask;
+   buf->priv.mask.g = pixel_format.dwGBitMask;
+   buf->priv.mask.b = pixel_format.dwBBitMask;
+
+   return 1;
+}
+
+void *
+evas_software_ddraw_lock(Outbuf *buf,
+                         int    *ddraw_width,
+                         int    *ddraw_height,
+                         int    *ddraw_pitch,
+                         int    *ddraw_depth)
+{
+   DDSURFACEDESC surface_desc;
+
+   ZeroMemory(&surface_desc, sizeof(surface_desc));
+   surface_desc.dwSize = sizeof(surface_desc);
+
+   if (FAILED(buf->priv.dd.surface_back->Lock(NULL,
+                                              &surface_desc,
+                                              DDLOCK_WAIT | DDLOCK_SURFACEMEMORYPTR,
+                                              NULL)))
+     return NULL;
+
+   *ddraw_width = surface_desc.dwWidth;
+   *ddraw_height = surface_desc.dwHeight;
+   *ddraw_pitch = surface_desc.lPitch;
+   *ddraw_depth = surface_desc.ddpfPixelFormat.dwRGBBitCount >> 3;
+
+   return surface_desc.lpSurface;
+}
+
+void
+evas_software_ddraw_unlock_and_flip(Outbuf *buf)
+{
+   RECT    dst_rect;
+   RECT    src_rect;
+   POINT   p;
+
+   if (FAILED(buf->priv.dd.surface_back->Unlock(NULL)))
+     return;
+
+   /* we figure out where on the primary surface our window lives */
+   p.x = 0;
+   p.y = 0;
+   ClientToScreen(buf->priv.dd.window, &p);
+   GetClientRect(buf->priv.dd.window, &dst_rect);
+   OffsetRect(&dst_rect, p.x, p.y);
+   SetRect(&src_rect, 0, 0, buf->width, buf->height);
+
+   /* nothing to do if the function fails, so we don't check the result */
+   buf->priv.dd.surface_primary->Blt(&dst_rect,
+                                     buf->priv.dd.surface_back,
+                                     &src_rect,
+                                     DDBLT_WAIT, NULL);
+}
+
+void
+evas_software_ddraw_surface_resize(Outbuf *buf)
+{
+   DDSURFACEDESC surface_desc;
+
+   buf->priv.dd.surface_back->Release();
+   memset (&surface_desc, 0, sizeof (surface_desc));
+   surface_desc.dwSize = sizeof (surface_desc);
+   /* FIXME: that code does not compile. Must know why */
+#if 0
+   surface_desc.dwFlags = DDSD_HEIGHT | DDSD_WIDTH;
+   surface_desc.dwWidth = width;
+   surface_desc.dwHeight = height;
+   buf->priv.dd.surface_back->SetSurfaceDesc(&surface_desc, NULL);
+#else
+   surface_desc.dwFlags = DDSD_CAPS | DDSD_HEIGHT | DDSD_WIDTH;
+   surface_desc.ddsCaps.dwCaps = DDSCAPS_OFFSCREENPLAIN;
+   surface_desc.dwWidth = buf->width;
+   surface_desc.dwHeight = buf->height;
+   buf->priv.dd.object->CreateSurface(&surface_desc,
+                                      &buf->priv.dd.surface_back,
+                                      NULL);
+#endif
+}
diff --git a/src/modules/engines/software_ddraw/evas_engine.c b/src/modules/engines/software_ddraw/evas_engine.c
new file mode 100644 (file)
index 0000000..0772021
--- /dev/null
@@ -0,0 +1,346 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Software_DDraw.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Tilebuf          *tb;
+   Outbuf           *ob;
+   Tilebuf_Rect     *rects;
+   Evas_Object_List *cur_rect;
+   int               end : 1;
+};
+
+
+static void *
+_output_setup(int  width,
+              int  height,
+              int  rot,
+              HWND window,
+              int  depth)
+{
+   Render_Engine *re;
+
+   re = calloc(1, sizeof(Render_Engine));
+   if (!re)
+     return NULL;
+
+   /* if we haven't initialized - init (automatic abort if already done) */
+   evas_common_cpu_init();
+
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+
+   evas_software_ddraw_outbuf_init();
+
+   re->ob = evas_software_ddraw_outbuf_setup(width, height, rot,
+                                             OUTBUF_DEPTH_INHERIT,
+                                             window, depth);
+   if (!re->ob)
+     {
+       free(re);
+       return NULL;
+     }
+
+   /* for updates return 1 big buffer, but only use portions of it, also cache
+    it and keepit around until an idle_flush */
+   /* disable for now - i am hunting down why some expedite tests are slower,
+    * as well as shaped stuff is broken and probable non-32bpp is broken as
+    * convert funcs dont do the right thing
+    *
+   re->ob->onebuf = 1;
+    */
+
+   re->tb = evas_common_tilebuf_new(width, height);
+   if (!re->tb)
+     {
+       evas_software_ddraw_outbuf_free(re->ob);
+       free(re);
+       return NULL;
+     }
+   /* in preliminary tests 16x16 gave highest framerates */
+   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+
+   return re;
+}
+
+
+/* engine api this module provides */
+
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Software_DDraw *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_Software_DDraw));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_Software_DDraw *in;
+
+   in = (Evas_Engine_Info_Software_DDraw *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine                   *re;
+   Evas_Engine_Info_Software_DDraw *info;
+
+   info = (Evas_Engine_Info_Software_DDraw *)in;
+   if (!e->engine.data.output)
+     e->engine.data.output = _output_setup(e->output.w,
+                                           e->output.h,
+                                           info->info.rotation,
+                                           info->info.window,
+                                           info->info.depth);
+   else
+     {
+       int ponebuf = 0;
+
+       re = e->engine.data.output;
+       ponebuf = re->ob->onebuf;
+       evas_software_ddraw_outbuf_free(re->ob);
+       re->ob = evas_software_ddraw_outbuf_setup(e->output.w,
+                                                  e->output.h,
+                                                  info->info.rotation,
+                                                  OUTBUF_DEPTH_INHERIT,
+                                                  info->info.window,
+                                                  info->info.depth);
+       re->ob->onebuf = ponebuf;
+     }
+   if (!e->engine.data.output) return;
+   if (!e->engine.data.context)
+     e->engine.data.context = e->engine.func->context_new(e->engine.data.output);
+
+   re = e->engine.data.output;
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   if (!data) return;
+
+   re = (Render_Engine *)data;
+   evas_software_ddraw_outbuf_free(re->ob);
+   evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int width, int height)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_software_ddraw_outbuf_reconfigure(re->ob,
+                                         width,
+                                         height,
+                                          evas_software_ddraw_outbuf_rot_get(re->ob),
+                                          OUTBUF_DEPTH_INHERIT);
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(width, height);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data,
+                                   int  *x,
+                                   int  *y,
+                                   int  *w,
+                                   int  *h,
+                                   int  *cx,
+                                   int  *cy,
+                                   int  *cw,
+                                   int  *ch)
+{
+   Render_Engine *re;
+   RGBA_Image    *surface;
+   Tilebuf_Rect  *rect;
+   int            ux;
+   int            uy;
+   int            uw;
+   int            uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *)re->rects;
+     }
+   if (!re->cur_rect) return NULL;
+   rect = (Tilebuf_Rect *)re->cur_rect;
+   ux = rect->x;
+   uy = rect->y;
+   uw = rect->w;
+   uh = rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   surface = evas_software_ddraw_outbuf_new_region_for_update(re->ob,
+                                                              ux,
+                                                              uy,
+                                                              uw,
+                                                              uh,
+                                                              cx,
+                                                              cy,
+                                                              cw,
+                                                              ch);
+
+   *x = ux;
+   *y = uy;
+   *w = uw;
+   *h = uh;
+
+   return surface;
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_pipe_begin(surface);
+   evas_common_pipe_flush(surface);
+   evas_software_ddraw_outbuf_push_updated_region(re->ob, surface, x, y, w, h);
+   evas_software_ddraw_outbuf_free_region_for_update(re->ob, surface);
+   evas_common_cpu_end_opt();
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_software_ddraw_outbuf_flush(re->ob);
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_software_ddraw_outbuf_idle_flush(re->ob);
+}
+
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+   EVAS_MODULE_TYPE_ENGINE,
+   "software_ddraw",
+   "none"
+};
diff --git a/src/modules/engines/software_ddraw/evas_engine.h b/src/modules/engines/software_ddraw/evas_engine.h
new file mode 100644 (file)
index 0000000..b880b25
--- /dev/null
@@ -0,0 +1,192 @@
+#ifndef __EVAS_ENGINE_H__
+#define __EVAS_ENGINE_H__
+
+
+#define WIN32_LEAN_AND_MEAN
+#include <windows.h>
+#undef WIN32_LEAN_AND_MEAN
+#include <ddraw.h>
+
+typedef struct _Outbuf                Outbuf;
+typedef struct _Outbuf_Region         Outbuf_Region;
+typedef struct _DD_Output_Buffer      DD_Output_Buffer;
+
+enum _Outbuf_Depth
+{
+   OUTBUF_DEPTH_NONE,
+   OUTBUF_DEPTH_INHERIT,
+   OUTBUF_DEPTH_RGB_16BPP_565_565_DITHERED,
+   OUTBUF_DEPTH_RGB_16BPP_555_555_DITHERED,
+   OUTBUF_DEPTH_RGB_16BPP_444_444_DITHERED,
+   OUTBUF_DEPTH_RGB_16BPP_565_444_DITHERED,
+   OUTBUF_DEPTH_RGB_32BPP_888_8888,
+   OUTBUF_DEPTH_LAST
+};
+
+typedef enum   _Outbuf_Depth          Outbuf_Depth;
+
+struct _Outbuf
+{
+   Outbuf_Depth              depth;
+   int                       width;
+   int                       height;
+   int                       rot;
+   int                       onebuf;
+
+   struct {
+      Convert_Pal           *pal;
+      struct {
+         HWND                window;
+         LPDIRECTDRAW        object;
+         LPDIRECTDRAWSURFACE surface_primary;
+         LPDIRECTDRAWSURFACE surface_back;
+         LPDIRECTDRAWCLIPPER clipper;
+         int                 depth;
+         unsigned char       swap : 1;
+         unsigned char       bit_swap : 1;
+      } dd;
+      struct {
+         DATA32              r, g, b;
+      } mask;
+
+      /* 1 big buffer for updates - flush on idle_flush */
+      RGBA_Image            *onebuf;
+      Evas_List             *onebuf_regions;
+
+      /* a list of pending regions to write to the target */
+      Evas_List             *pending_writes;
+      /* a list of previous frame pending regions to write to the target */
+      Evas_List             *prev_pending_writes;
+
+      unsigned char          mask_dither : 1;
+      unsigned char          destination_alpha : 1;
+      unsigned char          debug : 1;
+      unsigned char          synced : 1;
+   } priv;
+};
+
+struct _Outbuf_Region
+{
+   DD_Output_Buffer *ddob;
+   int               x;
+   int               y;
+   int               width;
+   int               height;
+};
+
+struct _DD_Output_Buffer
+{
+   void *data;
+   int   width;
+   int   height;
+   int   depth;
+   int   pitch;
+/*    int              w, h, bpl; */
+   int              psize;
+};
+
+
+/* evas_outbuf.c */
+
+void evas_software_ddraw_outbuf_init(void);
+
+void evas_software_ddraw_outbuf_free(Outbuf *buf);
+
+Outbuf *evas_software_ddraw_outbuf_setup(int          width,
+                                         int          height,
+                                         int          rotation,
+                                         Outbuf_Depth depth,
+                                         HWND         window,
+                                         int          w_depth);
+
+void evas_software_ddraw_outbuf_reconfigure(Outbuf      *buf,
+                                            int          width,
+                                            int          height,
+                                            int          rotation,
+                                            Outbuf_Depth depth);
+
+RGBA_Image *evas_software_ddraw_outbuf_new_region_for_update(Outbuf *buf,
+                                                             int     x,
+                                                             int     y,
+                                                             int     w,
+                                                             int     h,
+                                                             int    *cx,
+                                                             int    *cy,
+                                                             int    *cw,
+                                                             int    *ch);
+
+void evas_software_ddraw_outbuf_push_updated_region(Outbuf     *buf,
+                                                    RGBA_Image *update,
+                                                    int        x,
+                                                    int        y,
+                                                    int        w,
+                                                    int        h);
+
+void evas_software_ddraw_outbuf_free_region_for_update(Outbuf     *buf,
+                                                       RGBA_Image *update);
+
+void evas_software_ddraw_outbuf_flush(Outbuf *buf);
+
+void evas_software_ddraw_outbuf_idle_flush(Outbuf *buf);
+
+int evas_software_ddraw_outbuf_width_get(Outbuf *buf);
+
+int evas_software_ddraw_outbuf_height_get(Outbuf *buf);
+
+Outbuf_Depth evas_software_ddraw_outbuf_depth_get(Outbuf *buf);
+
+int evas_software_ddraw_outbuf_rot_get(Outbuf *buf);
+
+/* evas_ddraw_buffer.c */
+
+DD_Output_Buffer *evas_software_ddraw_output_buffer_new(int   depth,
+                                                        int   width,
+                                                        int   height,
+                                                        void *data);
+
+void evas_software_ddraw_output_buffer_free(DD_Output_Buffer *ddob);
+
+void evas_software_ddraw_output_buffer_paste(DD_Output_Buffer *ddob,
+                                             void             *ddraw_data,
+                                             int               ddraw_width,
+                                             int               ddraw_height,
+                                             int               ddraw_pitch,
+                                             int               ddraw_depth,
+                                             int               x,
+                                             int               y);
+
+DATA8 *evas_software_ddraw_output_buffer_data(DD_Output_Buffer *ddob,
+                                              int              *bytes_per_line_ret);
+
+int evas_software_ddraw_output_buffer_depth(DD_Output_Buffer *ddob);
+
+/* evas_ddraw_main.cpp */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+int evas_software_ddraw_init (HWND    window,
+                              int     depth,
+                              Outbuf *buf);
+
+void evas_software_ddraw_shutdown(Outbuf *buf);
+
+int evas_software_ddraw_masks_get(Outbuf *buf);
+
+void *evas_software_ddraw_lock(Outbuf *buf,
+                               int    *ddraw_width,
+                               int    *ddraw_height,
+                               int    *ddraw_pitch,
+                               int    *ddraw_depth);
+
+void evas_software_ddraw_unlock_and_flip(Outbuf *buf);
+
+void evas_software_ddraw_surface_resize(Outbuf *buf);
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* __EVAS_ENGINE_H__ */
diff --git a/src/modules/engines/software_ddraw/evas_outbuf.c b/src/modules/engines/software_ddraw/evas_outbuf.c
new file mode 100644 (file)
index 0000000..5a6f783
--- /dev/null
@@ -0,0 +1,465 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+
+static Evas_List *ddpool = NULL;
+static int ddsize = 0;
+static int ddmemlimit = 10 * 1024 * 1024;
+static int ddcountlimit = 32;
+
+static DD_Output_Buffer *
+_find_ddob(int depth, int w, int h, void *data)
+{
+   Evas_List        *l;
+   Evas_List        *ddl;
+   DD_Output_Buffer *ddob = NULL;
+   int               sz;
+   int               lbytes;
+   int               bpp;
+
+   bpp = depth / 8;
+   if (bpp == 3) bpp = 4;
+   lbytes = (((w * bpp) + 3) / 4) * 4;
+   sz = lbytes * h;
+   for (l = ddpool; l; l = l->next)
+     {
+       DD_Output_Buffer *ddob2;
+
+       ddob2 = l->data;
+       if (ddob2->depth != depth)
+         continue;
+       if (ddob2->psize == sz)
+         {
+            ddob = ddob2;
+            ddl = l;
+            goto have_ddob;
+         }
+     }
+   if (!ddob)
+     return evas_software_ddraw_output_buffer_new(depth, w, h, data);
+
+   have_ddob:
+   ddpool = evas_list_remove_list(ddpool, ddl);
+   ddob->width = w;
+   ddob->height = h;
+   ddob->pitch = lbytes;
+   ddsize -= ddob->psize * (ddob->depth / 8);
+
+   return ddob;
+}
+
+static void
+_unfind_ddob(DD_Output_Buffer *ddob)
+{
+   ddpool = evas_list_prepend(ddpool, ddob);
+   ddsize += ddob->psize * ddob->depth / 8;
+   while ((ddsize > (ddmemlimit)) ||
+          (evas_list_count(ddpool) > ddcountlimit))
+     {
+        Evas_List *xl;
+
+        xl = evas_list_last(ddpool);
+        if (!xl)
+          {
+             ddsize = 0;
+             break;
+          }
+        ddob = xl->data;
+        ddpool = evas_list_remove_list(ddpool, xl);
+        evas_software_ddraw_output_buffer_free(ddob);
+     }
+}
+
+static void
+_clear_ddob(int sync)
+{
+   while (ddpool)
+     {
+       DD_Output_Buffer *ddob;
+
+       ddob = ddpool->data;
+       ddpool = evas_list_remove_list(ddpool, ddpool);
+       evas_software_ddraw_output_buffer_free(ddob);
+     }
+   ddsize = 0;
+}
+
+void
+evas_software_ddraw_outbuf_init(void)
+{
+}
+
+void
+evas_software_ddraw_outbuf_free(Outbuf *buf)
+{
+   if (!buf)
+     return;
+
+   evas_software_ddraw_shutdown(buf);
+   free(buf);
+}
+
+Outbuf *
+evas_software_ddraw_outbuf_setup(int          width,
+                                 int          height,
+                                 int          rotation,
+                                 Outbuf_Depth depth,
+                                 HWND         window,
+                                 int          w_depth)
+{
+   Outbuf *buf;
+
+   buf = (Outbuf *)calloc(1, sizeof(Outbuf));
+   if (!buf)
+      return NULL;
+
+   buf->width = width;
+   buf->height = height;
+   buf->depth = depth;
+   buf->rot = rotation;
+
+   if (!evas_software_ddraw_init(window, w_depth, buf))
+     {
+        free(buf);
+        return NULL;
+     }
+
+   {
+      Gfx_Func_Convert  conv_func;
+      DD_Output_Buffer *ddob;
+
+      ddob = evas_software_ddraw_output_buffer_new(w_depth, 1, 1, NULL);
+
+      conv_func = NULL;
+      if (ddob)
+        {
+           if (evas_software_ddraw_masks_get(buf))
+             {
+                if ((rotation == 0) || (rotation == 180))
+                  conv_func = evas_common_convert_func_get(0,
+                                                           width,
+                                                           height,
+                                                           evas_software_ddraw_output_buffer_depth (ddob),
+                                                           buf->priv.mask.r,
+                                                           buf->priv.mask.g,
+                                                           buf->priv.mask.b,
+                                                           PAL_MODE_NONE,
+                                                           rotation);
+                else if ((rotation == 90) || (rotation == 270))
+                  conv_func = evas_common_convert_func_get(0,
+                                                           height,
+                                                           width,
+                                                           evas_software_ddraw_output_buffer_depth (ddob),
+                                                           buf->priv.mask.r,
+                                                           buf->priv.mask.g,
+                                                           buf->priv.mask.b,
+                                                           PAL_MODE_NONE,
+                                                           rotation);
+             }
+
+           evas_software_ddraw_output_buffer_free(ddob);
+
+           if (!conv_func)
+             {
+                fprintf(stderr, ".[ Evas Error ].\n"
+                        " {\n"
+                        "  At depth         %i:\n"
+                        "  RGB format mask: %08x, %08x, %08x\n"
+                        "  Not supported by and compiled in converters!\n"
+                        " }\n",
+                        buf->priv.dd.depth,
+                        buf->priv.mask.r,
+                        buf->priv.mask.g,
+                        buf->priv.mask.b);
+             }
+        }
+   }
+
+   return buf;
+}
+
+void
+evas_software_ddraw_outbuf_reconfigure(Outbuf      *buf,
+                                       int          width,
+                                       int          height,
+                                       int          rotation,
+                                       Outbuf_Depth depth)
+{
+   if ((width == buf->width) && (height == buf->height) &&
+       (rotation == buf->rot) && (depth == buf->depth))
+     return;
+   buf->width = width;
+   buf->height = height;
+   buf->rot = rotation;
+   evas_software_ddraw_surface_resize(buf);
+}
+
+RGBA_Image *
+evas_software_ddraw_outbuf_new_region_for_update(Outbuf *buf,
+                                                 int     x,
+                                                 int     y,
+                                                 int     w,
+                                                 int     h,
+                                                 int    *cx,
+                                                 int    *cy,
+                                                 int    *cw,
+                                                 int    *ch)
+{
+   RGBA_Image    *im;
+   Outbuf_Region *obr;
+   int            bpl = 0;
+   int            alpha = 0;
+
+   obr = calloc(1, sizeof(Outbuf_Region));
+   obr->x = x;
+   obr->y = y;
+   obr->width = w;
+   obr->height = h;
+   *cx = 0;
+   *cy = 0;
+   *cw = w;
+   *ch = h;
+
+   if ((buf->rot == 0) &&
+       (buf->priv.mask.r == 0xff0000) &&
+       (buf->priv.mask.g == 0x00ff00) &&
+       (buf->priv.mask.b == 0x0000ff))
+     {
+        obr->ddob = _find_ddob(buf->priv.dd.depth, w, h, NULL);
+/*      obr->ddob = evas_software_x11_x_output_buffer_new(buf->priv.dd.disp, */
+/*                                                         buf->priv.dd.vis, */
+/*                                                         buf->priv.dd.depth, */
+/*                                                         w, h, */
+/*                                                         use_shm, */
+/*                                                         NULL); */
+        im = (RGBA_Image *)evas_cache_image_data(evas_common_image_cache_get(),
+                                                 w, h,
+                                                 (DATA32 *) evas_software_ddraw_output_buffer_data(obr->ddob, &bpl),
+                                                 alpha, EVAS_COLORSPACE_ARGB8888);
+        im->extended_info = obr;
+     }
+   else
+     {
+        im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+        im->cache_entry.flags.alpha |= alpha ? 1 : 0;
+        evas_cache_image_surface_alloc(&im->cache_entry, w, h);
+        im->extended_info = obr;
+        if ((buf->rot == 0) || (buf->rot == 180))
+          obr->ddob = _find_ddob(buf->priv.dd.depth, w, h, NULL);
+/*
+          obr->ddob = evas_software_x11_x_output_buffer_new(buf->priv.dd.disp,
+                                                           buf->priv.dd.vis,
+                                                           buf->priv.dd.depth,
+                                                           w, h,
+                                                           use_shm,
+                                                           NULL);
+ */
+        else if ((buf->rot == 90) || (buf->rot == 270))
+          obr->ddob = _find_ddob(buf->priv.dd.depth, h, w, NULL);
+/*
+          obr->ddob = evas_software_x11_x_output_buffer_new(buf->priv.dd.disp,
+                                                           buf->priv.dd.vis,
+                                                           buf->priv.dd.depth,
+                                                           h, w,
+                                                           use_shm,
+                                                           NULL);
+ */
+     }
+
+   buf->priv.pending_writes = evas_list_append(buf->priv.pending_writes, im);
+   return im;
+}
+
+void
+evas_software_ddraw_outbuf_push_updated_region(Outbuf     *buf,
+                                               RGBA_Image *update,
+                                               int        x,
+                                               int        y,
+                                               int        w,
+                                               int        h)
+{
+   Gfx_Func_Convert    conv_func;
+   Outbuf_Region      *obr;
+   DATA32             *src_data;
+   void               *data;
+   int                 bpl = 0, yy;
+
+   conv_func = NULL;
+   obr = update->extended_info;
+
+   if ((buf->rot == 0) || (buf->rot == 180))
+     conv_func = evas_common_convert_func_get(0, w, h,
+                                              evas_software_ddraw_output_buffer_depth(obr->ddob),
+                                              buf->priv.mask.r,
+                                              buf->priv.mask.g,
+                                              buf->priv.mask.b,
+                                              PAL_MODE_NONE,
+                                              buf->rot);
+   else if ((buf->rot == 90) || (buf->rot == 270))
+     conv_func = evas_common_convert_func_get(0, h, w,
+                                              evas_software_ddraw_output_buffer_depth(obr->ddob),
+                                              buf->priv.mask.r,
+                                              buf->priv.mask.g,
+                                              buf->priv.mask.b,
+                                              PAL_MODE_NONE, buf->rot);
+   if (!conv_func) return;
+
+   data = evas_software_ddraw_output_buffer_data(obr->ddob, &bpl);
+   src_data = update->image.data;
+   if (buf->rot == 0)
+     {
+       obr->x = x;
+       obr->y = y;
+     }
+   else if (buf->rot == 90)
+     {
+       obr->x = y;
+       obr->y = buf->width - x - w;
+     }
+   else if (buf->rot == 180)
+     {
+       obr->x = buf->width - x - w;
+       obr->y = buf->height - y - h;
+     }
+   else if (buf->rot == 270)
+     {
+       obr->x = buf->height - y - h;
+       obr->y = x;
+     }
+   if ((buf->rot == 0) || (buf->rot == 180))
+     {
+       obr->width = w;
+       obr->height = h;
+     }
+   else if ((buf->rot == 90) || (buf->rot == 270))
+     {
+       obr->width = h;
+       obr->height = w;
+     }
+
+   if (data != src_data)
+     conv_func(src_data, data,
+               0,
+               bpl / ((evas_software_ddraw_output_buffer_depth(obr->ddob) / 8)) - obr->width,
+               obr->width,
+               obr->height,
+               x,
+               y,
+               NULL);
+}
+
+void
+evas_software_ddraw_outbuf_free_region_for_update(Outbuf     *buf,
+                                                  RGBA_Image *update)
+{
+   /* no need to do anything - they are cleaned up on flush */
+}
+
+void
+evas_software_ddraw_outbuf_flush(Outbuf *buf)
+{
+   Evas_List *l;
+   void      *ddraw_data;
+   int        ddraw_width;
+   int        ddraw_height;
+   int        ddraw_pitch;
+   int        ddraw_depth;
+
+   /* lock the back surface */
+   if (!(ddraw_data = evas_software_ddraw_lock(buf,
+                                               &ddraw_width,
+                                               &ddraw_height,
+                                               &ddraw_pitch,
+                                               &ddraw_depth)))
+     goto free_images;
+
+   /* copy safely the images that need to be drawn onto the back surface */
+   for (l = buf->priv.pending_writes; l; l = l->next)
+     {
+        RGBA_Image       *im;
+        Outbuf_Region    *obr;
+       DD_Output_Buffer *ddob;
+
+        im = l->data;
+        obr = im->extended_info;
+        ddob = obr->ddob;
+        evas_software_ddraw_output_buffer_paste(ddob,
+                                                ddraw_data,
+                                                ddraw_width,
+                                                ddraw_height,
+                                                ddraw_pitch,
+                                                ddraw_depth,
+                                               obr->x,
+                                               obr->y);
+     }
+
+   /* unlock the back surface and flip the surface */
+   evas_software_ddraw_unlock_and_flip(buf);
+
+ free_images:
+   while (buf->priv.prev_pending_writes)
+     {
+        RGBA_Image    *im;
+        Outbuf_Region *obr;
+
+        im = buf->priv.prev_pending_writes->data;
+        buf->priv.prev_pending_writes =
+          evas_list_remove_list(buf->priv.prev_pending_writes,
+                                buf->priv.prev_pending_writes);
+        obr = im->extended_info;
+        evas_cache_image_drop((Image_Entry *)im);
+        if (obr->ddob) _unfind_ddob(obr->ddob);
+/*
+            if (obr->ddob) evas_software_x11_x_output_buffer_free(obr->ddob);
+ */
+        free(obr);
+     }
+   buf->priv.prev_pending_writes = buf->priv.pending_writes;
+   buf->priv.pending_writes = NULL;
+
+   evas_common_cpu_end_opt();
+}
+
+void
+evas_software_ddraw_outbuf_idle_flush(Outbuf *buf)
+{
+   while (buf->priv.prev_pending_writes)
+     {
+        RGBA_Image *im;
+        Outbuf_Region *obr;
+
+        im = buf->priv.prev_pending_writes->data;
+        buf->priv.prev_pending_writes =
+          evas_list_remove_list(buf->priv.prev_pending_writes,
+                                buf->priv.prev_pending_writes);
+        obr = im->extended_info;
+        evas_cache_image_drop((Image_Entry *)im);
+        if (obr->ddob) _unfind_ddob(obr->ddob);
+        free(obr);
+     }
+   _clear_ddob(0);
+}
+
+int
+evas_software_ddraw_outbuf_width_get(Outbuf *buf)
+{
+   return buf->width;
+}
+
+int
+evas_software_ddraw_outbuf_height_get(Outbuf *buf)
+{
+   return buf->height;
+}
+
+Outbuf_Depth
+evas_software_ddraw_outbuf_depth_get(Outbuf *buf)
+{
+   return buf->depth;
+}
+
+int
+evas_software_ddraw_outbuf_rot_get(Outbuf *buf)
+{
+   return buf->rot;
+}
diff --git a/src/modules/engines/software_generic/.cvsignore b/src/modules/engines/software_generic/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/software_generic/Makefile.am b/src/modules/engines/software_generic/Makefile.am
new file mode 100644 (file)
index 0000000..5e1e0fa
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/engines/software_generic/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES  = evas_engine.c
+
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/engines/software_generic/evas_engine.c b/src/modules/engines/software_generic/evas_engine.c
new file mode 100644 (file)
index 0000000..49749b8
--- /dev/null
@@ -0,0 +1,902 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+/*
+ *****
+ **
+ ** ENGINE ROUTINES
+ **
+ *****
+ */
+
+static int cpunum = 0;
+
+static void *
+eng_context_new(void *data)
+{
+   return evas_common_draw_context_new();
+}
+
+static void
+eng_context_free(void *data, void *context)
+{
+   evas_common_draw_context_free(context);
+}
+
+static void
+eng_context_clip_set(void *data, void *context, int x, int y, int w, int h)
+{
+   evas_common_draw_context_set_clip(context, x, y, w, h);
+}
+
+static void
+eng_context_clip_clip(void *data, void *context, int x, int y, int w, int h)
+{
+   evas_common_draw_context_clip_clip(context, x, y, w, h);
+}
+
+static void
+eng_context_clip_unset(void *data, void *context)
+{
+   evas_common_draw_context_unset_clip(context);
+}
+
+static int
+eng_context_clip_get(void *data, void *context, int *x, int *y, int *w, int *h)
+{
+   *x = ((RGBA_Draw_Context *)context)->clip.x;
+   *y = ((RGBA_Draw_Context *)context)->clip.y;
+   *w = ((RGBA_Draw_Context *)context)->clip.w;
+   *h = ((RGBA_Draw_Context *)context)->clip.h;
+   return ((RGBA_Draw_Context *)context)->clip.use;
+}
+
+static void
+eng_context_color_set(void *data, void *context, int r, int g, int b, int a)
+{
+   evas_common_draw_context_set_color(context, r, g, b, a);
+}
+
+static int
+eng_context_color_get(void *data, void *context, int *r, int *g, int *b, int *a)
+{
+   *r = (int)(R_VAL(&((RGBA_Draw_Context *)context)->col.col));
+   *g = (int)(G_VAL(&((RGBA_Draw_Context *)context)->col.col));
+   *b = (int)(B_VAL(&((RGBA_Draw_Context *)context)->col.col));
+   *a = (int)(A_VAL(&((RGBA_Draw_Context *)context)->col.col));
+   return 1;
+}
+
+static void
+eng_context_multiplier_set(void *data, void *context, int r, int g, int b, int a)
+{
+   evas_common_draw_context_set_multiplier(context, r, g, b, a);
+}
+
+static void
+eng_context_multiplier_unset(void *data, void *context)
+{
+   evas_common_draw_context_unset_multiplier(context);
+}
+
+static int
+eng_context_multiplier_get(void *data, void *context, int *r, int *g, int *b, int *a)
+{
+   *r = (int)(R_VAL(&((RGBA_Draw_Context *)context)->mul.col));
+   *g = (int)(G_VAL(&((RGBA_Draw_Context *)context)->mul.col));
+   *b = (int)(B_VAL(&((RGBA_Draw_Context *)context)->mul.col));
+   *a = (int)(A_VAL(&((RGBA_Draw_Context *)context)->mul.col));
+   return ((RGBA_Draw_Context *)context)->mul.use;
+}
+
+static void
+eng_context_cutout_add(void *data, void *context, int x, int y, int w, int h)
+{
+   evas_common_draw_context_add_cutout(context, x, y, w, h);
+}
+
+static void
+eng_context_cutout_clear(void *data, void *context)
+{
+   evas_common_draw_context_clear_cutouts(context);
+}
+
+static void
+eng_context_anti_alias_set(void *data, void *context, unsigned char aa)
+{
+   evas_common_draw_context_set_anti_alias(context, aa);
+}
+
+static unsigned char
+eng_context_anti_alias_get(void *data, void *context)
+{
+   return ((RGBA_Draw_Context *)context)->anti_alias;
+}
+
+static void
+eng_context_color_interpolation_set(void *data, void *context, int color_space)
+{
+   evas_common_draw_context_set_color_interpolation(context, color_space);
+}
+
+static int
+eng_context_color_interpolation_get(void *data, void *context)
+{
+   return ((RGBA_Draw_Context *)context)->interpolation.color_space;
+}
+
+static void
+eng_context_render_op_set(void *data, void *context, int op)
+{
+   evas_common_draw_context_set_render_op(context, op);
+}
+
+static int
+eng_context_render_op_get(void *data, void *context)
+{
+   return ((RGBA_Draw_Context *)context)->render_op;
+}
+
+
+
+static void
+eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
+{
+#ifdef BUILD_PTHREAD
+   if (cpunum > 1)
+     evas_common_pipe_rectangle_draw(surface, context, x, y, w, h);
+   else
+#endif
+     {
+       evas_common_rectangle_draw(surface, context, x, y, w, h);
+       evas_common_cpu_end_opt();
+     }
+}
+
+static void
+eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
+{
+#ifdef BUILD_PTHREAD
+   if (cpunum > 1)
+     evas_common_pipe_line_draw(surface, context, x1, y1, x2, y2);
+   else
+#endif   
+     {
+       evas_common_line_draw(surface, context, x1, y1, x2, y2);
+       evas_common_cpu_end_opt();
+     }
+}
+
+static void *
+eng_polygon_point_add(void *data, void *context, void *polygon, int x, int y)
+{
+   return evas_common_polygon_point_add(polygon, x, y);
+}
+
+static void *
+eng_polygon_points_clear(void *data, void *context, void *polygon)
+{
+   return evas_common_polygon_points_clear(polygon);
+}
+
+static void
+eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
+{
+#ifdef BUILD_PTHREAD
+   if (cpunum > 1)
+     evas_common_pipe_poly_draw(surface, context, polygon);
+   else
+#endif
+     {
+       evas_common_polygon_draw(surface, context, polygon);
+       evas_common_cpu_end_opt();
+     }
+}
+
+static void *
+eng_gradient_new(void *data)
+{
+   return evas_common_gradient_new();
+}
+
+static void
+eng_gradient_free(void *data, void *gradient)
+{
+   evas_common_gradient_free(gradient);
+}
+
+static void
+eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
+{
+   evas_common_gradient_color_stop_add(gradient, r, g, b, a, delta);
+}
+
+static void
+eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
+{
+   evas_common_gradient_alpha_stop_add(gradient, a, delta);
+}
+
+static void
+eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
+{
+   evas_common_gradient_color_data_set(gradient, map, len, has_alpha);
+}
+
+static void
+eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
+{
+   evas_common_gradient_alpha_data_set(gradient, alpha_map, len);
+}
+
+static void
+eng_gradient_clear(void *data, void *gradient)
+{
+   evas_common_gradient_clear(gradient);
+}
+
+static void
+eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
+{
+   evas_common_gradient_fill_set(gradient, x, y, w, h);
+}
+
+static void
+eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
+{
+   evas_common_gradient_fill_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
+{
+   evas_common_gradient_fill_spread_set(gradient, spread);
+}
+
+static void
+eng_gradient_angle_set(void *data, void *gradient, double angle)
+{
+   evas_common_gradient_map_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_offset_set(void *data, void *gradient, float offset)
+{
+   evas_common_gradient_map_offset_set(gradient, offset);
+}
+
+static void
+eng_gradient_direction_set(void *data, void *gradient, int direction)
+{
+   evas_common_gradient_map_direction_set(gradient, direction);
+}
+
+static void
+eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
+{
+   evas_common_gradient_type_set(gradient, name, params);
+}
+
+static int
+eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
+   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
+
+   if (!dc || !gr || !gr->type.geometer)  return 0;
+   return !(gr->type.geometer->has_alpha(gr, dc->render_op) |
+              gr->type.geometer->has_mask(gr, dc->render_op));
+}
+
+static int
+eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
+
+   if (!dc || !gradient)  return 0;
+   return 1;
+}
+
+static void
+eng_gradient_render_pre(void *data, void *context, void *gradient)
+{
+   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
+   RGBA_Gradient *gr = (RGBA_Gradient *)gradient;
+   int  len;
+
+   if (!dc || !gr || !gr->type.geometer)  return;
+   gr->type.geometer->geom_set(gr);
+   len = gr->type.geometer->get_map_len(gr);
+   evas_common_gradient_map(dc, gr, len);
+}
+
+static void
+eng_gradient_render_post(void *data, void *gradient)
+{
+}
+
+static void
+eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
+{
+#ifdef BUILD_PTHREAD
+   if (cpunum > 1)
+     evas_common_pipe_grad_draw(surface, context, x, y, w, h, gradient);
+   else
+#endif   
+     {
+       evas_common_gradient_draw(surface, context, x, y, w, h, gradient);
+       evas_common_cpu_end_opt();
+     }
+}
+
+static int
+eng_image_alpha_get(void *data, void *image)
+{
+   Image_Entry *im;
+
+   if (!image) return 1;
+   im = image;
+   switch (im->space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (im->flags.alpha) return 1;
+      default:
+       break;
+     }
+   return 0;
+}
+
+static int
+eng_image_colorspace_get(void *data, void *image)
+{
+   Image_Entry *im;
+
+   if (!image) return EVAS_COLORSPACE_ARGB8888;
+   im = image;
+   return im->space;
+}
+
+static void *
+eng_image_alpha_set(void *data, void *image, int has_alpha)
+{
+   RGBA_Image *im;
+
+   if (!image) return NULL;
+   im = image;
+   if (im->cache_entry.space != EVAS_COLORSPACE_ARGB8888)
+     {
+       im->cache_entry.flags.alpha = 0;
+       return im;
+     }
+   im = (RGBA_Image *) evas_cache_image_alone(&im->cache_entry);
+   evas_common_image_colorspace_dirty(im);
+
+   im->cache_entry.flags.alpha = has_alpha ? 1 : 0;
+   return im;
+}
+
+static void *
+eng_image_border_set(void *data, void *image, int l, int r, int t, int b)
+{
+   RGBA_Image *im;
+
+   im = image;
+   return im;
+}
+
+static void
+eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+{
+   RGBA_Image *im;
+
+   im = image;
+}
+
+static char *
+eng_image_comment_get(void *data, void *image, char *key)
+{
+   RGBA_Image *im;
+
+   if (!image) return NULL;
+   im = image;
+   return im->info.comment;
+}
+
+static char *
+eng_image_format_get(void *data, void *image)
+{
+   return NULL;
+}
+
+static void
+eng_image_colorspace_set(void *data, void *image, int cspace)
+{
+   Image_Entry *im;
+
+   if (!image) return;
+   im = image;
+   evas_cache_image_colorspace(im, cspace);
+}
+
+static void
+eng_image_native_set(void *data, void *image, void *native)
+{
+}
+
+static void *
+eng_image_native_get(void *data, void *image)
+{
+   return NULL;
+}
+
+static void *
+eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
+{
+   *error = 0;
+   return evas_common_load_image_from_file(file, key, lo);
+}
+
+static void *
+eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   return evas_cache_image_data(evas_common_image_cache_get(), w, h, image_data, alpha, cspace);
+}
+
+static void *
+eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   return evas_cache_image_copied_data(evas_common_image_cache_get(), w, h, image_data, alpha, cspace);
+}
+
+static void
+eng_image_free(void *data, void *image)
+{
+   evas_cache_image_drop(image);
+}
+
+static void
+eng_image_size_get(void *data, void *image, int *w, int *h)
+{
+   Image_Entry *im;
+
+   im = image;
+   if (w) *w = im->w;
+   if (h) *h = im->h;
+}
+
+static void *
+eng_image_size_set(void *data, void *image, int w, int h)
+{
+   Image_Entry *im;
+
+   im = image;
+   return evas_cache_image_size_set(image, w, h);
+}
+
+static void *
+eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h)
+{
+   Image_Entry *im = image;
+
+   if (!image) return NULL;
+   return evas_cache_image_dirty(im, x, y, w, h);
+}
+
+static void *
+eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data)
+{
+   RGBA_Image *im;
+
+   if (!image)
+     {
+       *image_data = NULL;
+       return NULL;
+     }
+   im = image;
+   evas_cache_image_load_data(&im->cache_entry);
+   switch (im->cache_entry.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (to_write)
+          im = (RGBA_Image *) evas_cache_image_alone(&im->cache_entry);
+       *image_data = im->image.data;
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       *image_data = im->cs.data;
+        break;
+      default:
+       abort();
+       break;
+     }
+   return im;
+}
+
+static void *
+eng_image_data_put(void *data, void *image, DATA32 *image_data)
+{
+   RGBA_Image *im, *im2;
+
+   if (!image) return NULL;
+   im = image;
+   switch (im->cache_entry.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (image_data != im->image.data)
+         {
+            int w, h;
+
+            w = im->cache_entry.w;
+            h = im->cache_entry.h;
+            im2 = eng_image_new_from_data(data, w, h, image_data,
+                                          eng_image_alpha_get(data, image),
+                                          eng_image_colorspace_get(data, image));
+             evas_cache_image_drop(&im->cache_entry);
+            im = im2;
+         }
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       if (image_data != im->cs.data)
+         {
+            if (im->cs.data)
+              {
+                 if (!im->cs.no_free) free(im->cs.data);
+              }
+            im->cs.data = image_data;
+            evas_common_image_colorspace_dirty(im);
+         }
+        break;
+      default:
+       abort();
+       break;
+     }
+   return im;
+}
+
+static void
+eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
+{
+   RGBA_Image *im;
+
+   if (!image) return;
+   im = image;
+   if (im->cache_entry.space == EVAS_COLORSPACE_ARGB8888)
+     evas_cache_image_load_data(&im->cache_entry);
+   evas_common_image_colorspace_normalize(im);
+#ifdef BUILD_PTHREAD
+   if (cpunum > 1)
+     evas_common_pipe_image_draw(im, surface, context, smooth,
+                                src_x, src_y, src_w, src_h,
+                                dst_x, dst_y, dst_w, dst_h);
+   else
+#endif
+     {
+       if (smooth)
+         evas_common_scale_rgba_in_to_out_clip_smooth(im, surface, context,
+                                                      src_x, src_y, src_w, src_h,
+                                                      dst_x, dst_y, dst_w, dst_h);
+       else
+         evas_common_scale_rgba_in_to_out_clip_sample(im, surface, context,
+                                                      src_x, src_y, src_w, src_h,
+                                                      dst_x, dst_y, dst_w, dst_h);
+       evas_common_cpu_end_opt();
+     }
+}
+
+static void
+eng_image_cache_flush(void *data)
+{
+   int tmp_size;
+
+   tmp_size = evas_common_image_get_cache();
+   evas_common_image_set_cache(0);
+   evas_common_image_set_cache(tmp_size);
+}
+
+static void
+eng_image_cache_set(void *data, int bytes)
+{
+   evas_common_image_set_cache(bytes);
+}
+
+static int
+eng_image_cache_get(void *data)
+{
+   return evas_common_image_get_cache();
+}
+
+static void *
+eng_font_load(void *data, const char *name, int size)
+{
+   return evas_common_font_load(name, size);
+}
+
+static void *
+eng_font_memory_load(void *data, char *name, int size, const void *fdata, int fdata_size)
+{
+   return evas_common_font_memory_load(name, size, fdata, fdata_size);
+}
+
+static void *
+eng_font_add(void *data, void *font, const char *name, int size)
+{
+   return evas_common_font_add(font, name, size);
+}
+
+static void *
+eng_font_memory_add(void *data, void *font, char *name, int size, const void *fdata, int fdata_size)
+{
+   return evas_common_font_memory_add(font, name, size, fdata, fdata_size);
+}
+
+static void
+eng_font_free(void *data, void *font)
+{
+   evas_common_font_free(font);
+}
+
+static int
+eng_font_ascent_get(void *data, void *font)
+{
+   return evas_common_font_ascent_get(font);
+}
+
+static int
+eng_font_descent_get(void *data, void *font)
+{
+   return evas_common_font_descent_get(font);
+}
+
+static int
+eng_font_max_ascent_get(void *data, void *font)
+{
+   return evas_common_font_max_ascent_get(font);
+}
+
+static int
+eng_font_max_descent_get(void *data, void *font)
+{
+   return evas_common_font_max_descent_get(font);
+}
+
+static void
+eng_font_string_size_get(void *data, void *font, const char *text, int *w, int *h)
+{
+   evas_common_font_query_size(font, text, w, h);
+}
+
+static int
+eng_font_inset_get(void *data, void *font, const char *text)
+{
+   return evas_common_font_query_inset(font, text);
+}
+
+static int
+eng_font_h_advance_get(void *data, void *font, const char *text)
+{
+   int h, v;
+
+   evas_common_font_query_advance(font, text, &h, &v);
+   return h;
+}
+
+static int
+eng_font_v_advance_get(void *data, void *font, const char *text)
+{
+   int h, v;
+
+   evas_common_font_query_advance(font, text, &h, &v);
+   return v;
+}
+
+static int
+eng_font_char_coords_get(void *data, void *font, const char *text, int pos, int *cx, int *cy, int *cw, int *ch)
+{
+   return evas_common_font_query_char_coords(font, text, pos, cx, cy, cw, ch);
+}
+
+static int
+eng_font_char_at_coords_get(void *data, void *font, const char *text, int x, int y, int *cx, int *cy, int *cw, int *ch)
+{
+   return evas_common_font_query_text_at_pos(font, text, x, y, cx, cy, cw, ch);
+}
+
+static void
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
+{
+#ifdef BUILD_PTHREAD
+   if (cpunum > 1)
+     evas_common_pipe_text_draw(surface, context, font, x, y, text);
+   else
+#endif   
+     {
+       evas_common_font_draw(surface, context, font, x, y, text);
+       evas_common_cpu_end_opt();
+     }
+}
+
+static void
+eng_font_cache_flush(void *data)
+{
+   evas_common_font_flush();
+}
+
+static void
+eng_font_cache_set(void *data, int bytes)
+{
+   evas_common_font_cache_set(bytes);
+}
+
+static int
+eng_font_cache_get(void *data)
+{
+   return evas_common_font_cache_get();
+}
+
+static void
+eng_font_hinting_set(void *data, void *font, int hinting)
+{
+   evas_common_font_hinting_set(font, hinting);
+}
+
+static int
+eng_font_hinting_can_hint(void *data, int hinting)
+{
+   return evas_common_hinting_available(hinting);
+}
+
+
+/*
+ *****
+ **
+ ** ENGINE API
+ **
+ *****
+ */
+
+static Evas_Func func =
+{
+   NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     NULL,
+     /* draw context virtual methods */
+     eng_context_new,
+     eng_context_free,
+     eng_context_clip_set,
+     eng_context_clip_clip,
+     eng_context_clip_unset,
+     eng_context_clip_get,
+     eng_context_color_set,
+     eng_context_color_get,
+     eng_context_multiplier_set,
+     eng_context_multiplier_unset,
+     eng_context_multiplier_get,
+     eng_context_cutout_add,
+     eng_context_cutout_clear,
+     eng_context_anti_alias_set,
+     eng_context_anti_alias_get,
+     eng_context_color_interpolation_set,
+     eng_context_color_interpolation_get,
+     eng_context_render_op_set,
+     eng_context_render_op_get,
+     /* rect draw funcs */
+     eng_rectangle_draw,
+     /* line draw funcs */
+     eng_line_draw,
+     /* polygon draw funcs */
+     eng_polygon_point_add,
+     eng_polygon_points_clear,
+     eng_polygon_draw,
+     /* gradient draw funcs */
+     eng_gradient_new,
+     eng_gradient_free,
+     eng_gradient_color_stop_add,
+     eng_gradient_alpha_stop_add,
+     eng_gradient_color_data_set,
+     eng_gradient_alpha_data_set,
+     eng_gradient_clear,
+     eng_gradient_fill_set,
+     eng_gradient_fill_angle_set,
+     eng_gradient_fill_spread_set,
+     eng_gradient_angle_set,
+     eng_gradient_offset_set,
+     eng_gradient_direction_set,
+     eng_gradient_type_set,
+     eng_gradient_is_opaque,
+     eng_gradient_is_visible,
+     eng_gradient_render_pre,
+     eng_gradient_render_post,
+     eng_gradient_draw,
+     /* image draw funcs */
+     eng_image_load,
+     eng_image_new_from_data,
+     eng_image_new_from_copied_data,
+     eng_image_free,
+     eng_image_size_get,
+     eng_image_size_set,
+     NULL,
+     eng_image_dirty_region,
+     eng_image_data_get,
+     eng_image_data_put,
+     eng_image_alpha_set,
+     eng_image_alpha_get,
+     eng_image_border_set,
+     eng_image_border_get,
+     eng_image_draw,
+     eng_image_comment_get,
+     eng_image_format_get,
+     eng_image_colorspace_set,
+     eng_image_colorspace_get,
+     eng_image_native_set,
+     eng_image_native_get,
+     /* image cache funcs */
+     eng_image_cache_flush,
+     eng_image_cache_set,
+     eng_image_cache_get,
+     /* font draw functions */
+     eng_font_load,
+     eng_font_memory_load,
+     eng_font_add,
+     eng_font_memory_add,
+     eng_font_free,
+     eng_font_ascent_get,
+     eng_font_descent_get,
+     eng_font_max_ascent_get,
+     eng_font_max_descent_get,
+     eng_font_string_size_get,
+     eng_font_inset_get,
+     eng_font_h_advance_get,
+     eng_font_v_advance_get,
+     eng_font_char_coords_get,
+     eng_font_char_at_coords_get,
+     eng_font_draw,
+     /* font cache functions */
+     eng_font_cache_flush,
+     eng_font_cache_set,
+     eng_font_cache_get,
+     /* font hinting functions */
+     eng_font_hinting_set,
+     eng_font_hinting_can_hint
+     /* FUTURE software generic calls go here */
+};
+
+/*
+ *****
+ **
+ ** MODULE ACCESSIBLE API API
+ **
+ *****
+ */
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&func);
+   cpunum = evas_common_cpu_count();
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi = 
+{
+   EVAS_MODULE_API_VERSION, 
+     EVAS_MODULE_TYPE_ENGINE,
+     "software_generic",
+     "none"
+};
diff --git a/src/modules/engines/software_qtopia/.cvsignore b/src/modules/engines/software_qtopia/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/software_qtopia/Evas_Engine_Software_Qtopia.h b/src/modules/engines/software_qtopia/Evas_Engine_Software_Qtopia.h
new file mode 100644 (file)
index 0000000..5b863b0
--- /dev/null
@@ -0,0 +1,31 @@
+#ifndef _EVAS_ENGINE_SOFTWARE_QTOPIA_H
+#define _EVAS_ENGINE_SOFTWARE_QTOPIA_H
+
+#ifdef EVAS_COMMON_H
+#ifdef EVAS_PRIVATE_H
+typedef void QWidget;
+#endif
+#endif
+
+#ifndef EVAS_COMMON_H
+#ifndef EVAS_PRIVATE_H
+#include <qwidget.h>
+#endif
+#endif
+
+typedef struct _Evas_Engine_Info_Software_Qtopia Evas_Engine_Info_Software_Qtopia;
+
+struct _Evas_Engine_Info_Software_Qtopia
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   struct {
+      QWidget *target;
+      int      rotation;
+   } info;
+};
+#endif
+
+
diff --git a/src/modules/engines/software_qtopia/Makefile.am b/src/modules/engines/software_qtopia/Makefile.am
new file mode 100644 (file)
index 0000000..2911f2d
--- /dev/null
@@ -0,0 +1,39 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@ \
+@qt_cflags@
+
+AM_CXXFLAGS = $(CFLAGS) -DQT_QWS_EBX -DQT_QWS_CUSTOM -DQWS -DNO_DEBUG
+
+if BUILD_ENGINE_SOFTWARE_QTOPIA
+
+pkgdir = $(libdir)/evas/modules/engines/software_qtopia/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_qt_main.cpp
+
+module_la_LIBADD = @qt_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Software_Qtopia.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_qt_main.cpp \
+Evas_Engine_Software_Qtopia.h
diff --git a/src/modules/engines/software_qtopia/evas_engine.c b/src/modules/engines/software_qtopia/evas_engine.c
new file mode 100644 (file)
index 0000000..4c07949
--- /dev/null
@@ -0,0 +1,299 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Software_Qtopia.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Tilebuf          *tb;
+   Outbuf           *ob;
+   Tilebuf_Rect     *rects;
+   Evas_Object_List *cur_rect;
+   int               end : 1;
+};
+
+/* prototypes we will use here */
+static void *_output_setup(int w, int h, int rot, QWidget *target);
+
+static void *eng_info(Evas *e);
+static void eng_info_free(Evas *e, void *info);
+static void eng_setup(Evas *e, void *info);
+static void eng_output_free(void *data);
+static void eng_output_resize(void *data, int w, int h);
+static void eng_output_tile_size_set(void *data, int w, int h);
+static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_clear(void *data);
+static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h);
+static void eng_output_flush(void *data);
+static void eng_output_idle_flush(void *data);
+
+/* internal engine routines */
+static void *
+_output_setup(int w, int h, int rot, QWidget *target)
+{
+   Render_Engine *re;
+
+   re = calloc(1, sizeof(Render_Engine));
+   /* if we haven't initialized - init (automatic abort if already done) */
+   evas_common_cpu_init();
+
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+
+   evas_qtopia_outbuf_software_qtopia_init();
+
+   /* get any stored performance metrics from device (xserver) */
+   re->ob = evas_qtopia_outbuf_software_qtopia_setup_q(w, h, rot, OUTBUF_DEPTH_INHERIT, target);
+   if (!re->ob)
+     {
+       free(re);
+       return NULL;
+     }
+   evas_qtopia_outbuf_software_qtopia_set_have_backbuf(re->ob, 0);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (!re->tb)
+     {
+       evas_qtopia_outbuf_software_qtopia_free(re->ob);
+       free(re);
+       return NULL;
+     }
+   /* in preliminary tests 16x16 gave highest framerates */
+   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   return re;
+}
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Software_Qtopia *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_Software_Qtopia));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_Software_Qtopia *in;
+
+   in = (Evas_Engine_Info_Software_Qtopia *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_Software_Qtopia *info;
+
+   info = (Evas_Engine_Info_Software_Qtopia *)in;
+   if (!e->engine.data.output)
+     e->engine.data.output =
+     _output_setup(e->output.w,
+                  e->output.h,
+                  info->info.rotation,
+                  info->info.target);
+  if (!e->engine.data.output) return;
+   if (!e->engine.data.context)
+     e->engine.data.context =
+     e->engine.func->context_new(e->engine.data.output);
+
+   re = e->engine.data.output;
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_qtopia_outbuf_software_qtopia_free(re->ob);
+   evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_qtopia_outbuf_software_qtopia_reconfigure(re->ob, w, h,
+                                                 evas_qtopia_outbuf_software_qtopia_get_rot(re->ob),
+                                                 OUTBUF_DEPTH_INHERIT);
+   evas_qtopia_outbuf_software_qtopia_set_have_backbuf(re->ob, 0);
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   RGBA_Image *surface;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *)re->rects;
+     }
+   if (!re->cur_rect) return NULL;
+   rect = (Tilebuf_Rect *)re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   surface = evas_qtopia_outbuf_software_qtopia_new_region_for_update(re->ob,
+                                                         ux, uy, uw, uh,
+                                                         cx, cy, cw, ch);
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   return surface;
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_Software_Qtopia *info;
+
+   re = (Render_Engine *)data;
+   evas_common_pipe_begin(surface);
+   evas_common_pipe_flush(surface);
+   evas_qtopia_outbuf_software_qtopia_push_updated_region(re->ob, surface, x, y, w, h);
+   evas_qtopia_outbuf_software_qtopia_free_region_for_update(re->ob, surface);
+   evas_common_cpu_end_opt();
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_ENGINE,
+     "software_qtopia",
+     "none"
+};
diff --git a/src/modules/engines/software_qtopia/evas_engine.h b/src/modules/engines/software_qtopia/evas_engine.h
new file mode 100644 (file)
index 0000000..574d61a
--- /dev/null
@@ -0,0 +1,103 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+typedef struct _Outbuf                Outbuf;
+typedef struct _QT_Direct             QT_Direct;
+typedef struct _QT_Direct_Rect        QT_Direct_Rect;
+
+enum _Outbuf_Depth
+{
+   OUTBUF_DEPTH_NONE,
+     OUTBUF_DEPTH_INHERIT,
+     OUTBUF_DEPTH_RGB_16BPP_565_565_DITHERED,
+     OUTBUF_DEPTH_RGB_16BPP_555_555_DITHERED,
+     OUTBUF_DEPTH_RGB_16BPP_444_444_DITHERED,
+     OUTBUF_DEPTH_RGB_16BPP_565_444_DITHERED,
+     OUTBUF_DEPTH_RGB_32BPP_888_8888,
+     OUTBUF_DEPTH_LAST
+};
+
+typedef enum   _Outbuf_Depth          Outbuf_Depth;
+
+
+struct _Outbuf
+{
+   Outbuf_Depth    depth;
+   int             w, h;
+   int             rot;
+
+   struct {
+      void *target;
+
+      struct {
+        DATA32    r, g, b;
+      } mask;
+      RGBA_Image  *back_buf;
+   } priv;
+};
+
+struct _QT_Direct_Rect
+{
+   int x, y, w, h;
+};
+
+struct _QT_Direct
+{
+   /* our target widget */
+   void *target;
+   /* our direct painter object */
+   void *direct;
+   /* The fb */
+   struct
+     {
+       DATA8             *data;
+       int                bpp;
+       int                rotation;
+       int                width;
+       struct {
+          DATA32          r, g, b;
+       } mask;
+     } fb;
+   /* Relative to fb coords */
+   struct {
+      int                 count;
+      QT_Direct_Rect     *r;
+   } rects;
+   /* Relative to fb coords */
+   QT_Direct_Rect         location;
+   QT_Direct_Rect         updated;
+};
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/****/
+void             x_software_qtopia_init                    (void);
+
+void         evas_qtopia_outbuf_software_qtopia_init                   (void);
+void         evas_qtopia_outbuf_software_qtopia_free                   (Outbuf *buf);
+
+Outbuf      *evas_qtopia_outbuf_software_qtopia_setup_q                (int w, int h, int rot, Outbuf_Depth depth, void *target);
+
+void         evas_qtopia_outbuf_software_qtopia_blit                   (Outbuf *buf, int src_x, int src_y, int w, int h, int dst_x, int dst_y);
+void         evas_qtopia_outbuf_software_qtopia_update                 (Outbuf *buf, int x, int y, int w, int h);
+RGBA_Image  *evas_qtopia_outbuf_software_qtopia_new_region_for_update  (Outbuf *buf, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);
+void         evas_qtopia_outbuf_software_qtopia_free_region_for_update (Outbuf *buf, RGBA_Image *update);
+void         evas_qtopia_outbuf_software_qtopia_push_updated_region    (Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h);
+void         evas_qtopia_outbuf_software_qtopia_reconfigure            (Outbuf *buf, int w, int h, int rot, Outbuf_Depth depth);
+int          evas_qtopia_outbuf_software_qtopia_get_width              (Outbuf *buf);
+int          evas_qtopia_outbuf_software_qtopia_get_height             (Outbuf *buf);
+Outbuf_Depth evas_qtopia_outbuf_software_qtopia_get_depth              (Outbuf *buf);
+int          evas_qtopia_outbuf_software_qtopia_get_rot                (Outbuf *buf);
+int          evas_qtopia_outbuf_software_qtopia_get_have_backbuf       (Outbuf *buf);
+void         evas_qtopia_outbuf_software_qtopia_set_have_backbuf       (Outbuf *buf, int have_backbuf);
+
+QT_Direct   *evas_qt_main_direct_start                     (void *target);
+void         evas_qt_main_direct_stop                      (QT_Direct *d);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/src/modules/engines/software_qtopia/evas_outbuf.c b/src/modules/engines/software_qtopia/evas_outbuf.c
new file mode 100644 (file)
index 0000000..3e6790e
--- /dev/null
@@ -0,0 +1,245 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+#include "evas_private.h"
+#include "Evas_Engine_Software_Qtopia.h"
+#include <sys/time.h>
+#include <sys/utsname.h>
+
+void
+evas_qtopia_outbuf_software_qtopia_init(void)
+{
+}
+
+void
+evas_qtopia_outbuf_software_qtopia_free(Outbuf *buf)
+{
+   free(buf);
+}
+
+Outbuf *
+evas_qtopia_outbuf_software_qtopia_setup_q(int w, int h, int rot, Outbuf_Depth depth, QWidget *target)
+{
+   Outbuf *buf;
+
+   buf = calloc(1, sizeof(Outbuf));
+   if (!buf)
+     {
+       free(buf);
+       return NULL;
+     }
+
+   buf->w = w;
+   buf->h = h;
+   buf->rot = rot;
+   buf->priv.target = target;
+     {
+       QT_Direct *direct;
+
+       direct = evas_qt_main_direct_start(buf->priv.target);
+       if (direct)
+         {
+            buf->w = direct->location.w;
+            buf->h = direct->location.h;
+            buf->rot = direct->fb.rotation;
+            evas_qt_main_direct_stop(direct);
+         }
+     }
+   return buf;
+}
+
+void
+evas_qtopia_outbuf_software_qtopia_blit(Outbuf *buf, int src_x, int src_y, int w, int h, int dst_x, int dst_y)
+{
+}
+
+void
+evas_qtopia_outbuf_software_qtopia_update(Outbuf *buf, int x, int y, int w, int h)
+{
+}
+
+RGBA_Image *
+evas_qtopia_outbuf_software_qtopia_new_region_for_update(Outbuf *buf, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch)
+{
+   RGBA_Image *im;
+
+   *cx = 0; *cy = 0; *cw = w; *ch = h;
+   im = evas_common_image_create(w, h);
+   return im;
+}
+
+void
+evas_qtopia_outbuf_software_qtopia_free_region_for_update(Outbuf *buf, RGBA_Image *update)
+{
+   evas_common_image_free(update);
+}
+
+void
+evas_qtopia_outbuf_software_qtopia_push_updated_region(Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h)
+{
+   Gfx_Func_Convert conv_func;
+   DATA8 *data;
+   QT_Direct *d;
+
+   data = NULL;
+   conv_func = NULL;
+
+   d = evas_qt_main_direct_start(buf->priv.target);
+   if (d)
+     {
+       int i;
+
+       for (i = 0; i < d->rects.count; i++)
+         {
+            int fb_bytes;
+            DATA8 *fb_mem;
+            int ox, oy, ow, oh;
+            int rx, ry, rw, rh;
+
+            ox = x; oy = y; ow = w; oh = h;
+            rx = d->rects.r[i].x - d->location.x;
+            ry = d->rects.r[i].y - d->location.y;
+            rw = d->rects.r[i].w;
+            rh = d->rects.r[i].h;
+            if (x < rx)
+              {
+                 w += (x - rx);
+                 x = rx;
+              }
+            if (y < ry)
+              {
+                 h += (y - ry);
+                 y = ry;
+              }
+            if ((w <= 0) || (h <= 0)) goto nope;
+            if ((x + w) > (rx + rw)) w = (rx + rw - x);
+            if ((y + h) > (ry + rh)) h = (ry + rh - y);
+            if ((w <= 0) || (h <= 0)) goto nope;
+            fb_bytes = d->fb.bpp / 8;
+            if (buf->rot == 0)
+              {
+                 fb_mem = d->fb.data +
+                   ((d->location.y * d->fb.width * fb_bytes) +
+                    (d->location.x * fb_bytes));
+                 data = fb_mem + (fb_bytes * (x + (y * d->fb.width)));
+                 conv_func = evas_common_convert_func_get(data, w, h, d->fb.bpp,
+                                              d->fb.mask.r, d->fb.mask.g, d->fb.mask.b,
+                                              PAL_MODE_NONE, buf->rot);
+              }
+            else if (buf->rot == 180)
+              {
+                // FIXME
+              }
+            else if (buf->rot == 270)
+              {
+                  fb_mem = d->fb.data +
+                   (fb_bytes *
+                    ((d->location.x * d->fb.width) +
+                     (d->fb.width - d->location.y - d->location.h)));
+                 data = fb_mem + (fb_bytes * (buf->h - y - h + (x * d->fb.width)));
+                 conv_func = evas_common_convert_func_get(data, h, w, d->fb.bpp,
+                                              d->fb.mask.r, d->fb.mask.g, d->fb.mask.b,
+                                              PAL_MODE_NONE, buf->rot);
+              }
+            else if (buf->rot == 90)
+              {
+                 // FIXME: wrong fb_mem
+                 fb_mem = d->fb.data +
+                   ((d->location.y * d->fb.width * fb_bytes) +
+                    (d->location.x * fb_bytes));
+                 data = fb_mem + (fb_bytes * (y + ((buf->w - x - w) * d->fb.width)));
+                 conv_func = evas_common_convert_func_get(data, h, w, d->fb.bpp,
+                                              d->fb.mask.r, d->fb.mask.g, d->fb.mask.b,
+                                              PAL_MODE_NONE, buf->rot);
+              }
+            if (conv_func)
+              {
+                 DATA32 *src_data;
+
+                 if (buf->rot == 0)
+                   {
+                      src_data = update->image->data +
+                        (ow * (y - oy)) + (x - ox);
+                      conv_func(src_data, data,
+                                ow - w,
+                                d->fb.width - w,
+                                w, h,
+                                x, y, NULL);
+                   }
+                 else if (buf->rot == 180)
+                   {
+                     // FIXME
+                   }
+                 else if (buf->rot == 270)
+                   {
+                      src_data = update->image->data +
+                        (ow * (y - oy)) + (x - ox);
+                      conv_func(src_data, data,
+                                ow - w,
+                                d->fb.width - h,
+                                h, w,
+                                x, y, NULL);
+                   }
+                 else if (buf->rot == 90)
+                   {
+                      src_data = update->image->data +
+                        (ow * (y - oy)) + (x - ox);
+                      conv_func(src_data, data,
+                                ow - w,
+                                d->fb.width - h,
+                                h, w,
+                                x, y, NULL);
+                   }
+              }
+            nope:;
+            x = ox; y = oy; w = ow; h = oh;
+         }
+       d->updated.x = x; d->updated.y = y; d->updated.w = w; d->updated.h = h;
+       evas_qt_main_direct_stop(d);
+     }
+}
+
+void
+evas_qtopia_outbuf_software_qtopia_reconfigure(Outbuf *buf, int w, int h, int rot, Outbuf_Depth depth)
+{
+   if ((w == buf->w) && (h == buf->h) &&
+       (rot == buf->rot) && (depth == buf->depth))
+     return;
+   buf->w = w;
+   buf->h = h;
+   buf->rot = rot;
+}
+
+int
+evas_qtopia_outbuf_software_qtopia_get_width(Outbuf *buf)
+{
+   return buf->w;
+}
+
+int
+evas_qtopia_outbuf_software_qtopia_get_height(Outbuf *buf)
+{
+   return buf->h;
+}
+
+Outbuf_Depth
+evas_qtopia_outbuf_software_qtopia_get_depth(Outbuf *buf)
+{
+   return buf->depth;
+}
+
+int
+evas_qtopia_outbuf_software_qtopia_get_rot(Outbuf *buf)
+{
+   return buf->rot;
+}
+
+int
+evas_qtopia_outbuf_software_qtopia_get_have_backbuf(Outbuf *buf)
+{
+   return 0;
+}
+
+void
+evas_qtopia_outbuf_software_qtopia_set_have_backbuf(Outbuf *buf, int have_backbuf)
+{
+}
diff --git a/src/modules/engines/software_qtopia/evas_qt_main.cpp b/src/modules/engines/software_qtopia/evas_qt_main.cpp
new file mode 100644 (file)
index 0000000..bca95ba
--- /dev/null
@@ -0,0 +1,109 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+#include <qwidget.h>
+#include <qnamespace.h>
+#include <qbrush.h>
+#include <qpainter.h>
+#include <qdirectpainter_qws.h>
+
+//#define QVFB_BUG
+
+extern "C" {
+   QT_Direct *
+     evas_qt_main_direct_start(void *target)
+       {
+         QT_Direct *d;
+         QDirectPainter *dp;
+         QWidget *widget;
+         int i;
+
+         widget = (QWidget *)target;
+         dp = new QDirectPainter(widget);
+         if (!dp) return NULL;
+         d = (QT_Direct *)calloc(1, sizeof(QT_Direct));
+         if (!d) return NULL;
+         d->target = target;
+         d->direct = (void *)dp;
+         d->fb.data = dp->frameBuffer();
+         d->fb.bpp = dp->depth();
+         d->fb.width = dp->lineStep() / (d->fb.bpp / 8);
+         if (dp->depth() == 16)
+           {
+              d->fb.mask.r = 0xf800;
+              d->fb.mask.g = 0x07e0;
+              d->fb.mask.b = 0x001f;
+           }
+         else if (dp->depth() == 32)
+           {
+              d->fb.mask.r = 0x00ff0000;
+              d->fb.mask.g = 0x0000ff00;
+              d->fb.mask.b = 0x000000ff;
+           }
+         else
+           {
+              delete dp;
+              free(d);
+              return NULL;
+           }
+         d->fb.rotation = dp->transformOrientation() * 90;
+         d->rects.count = dp->numRects();
+         if (d->rects.count > 0)
+           {
+              d->rects.r = (QT_Direct_Rect *)calloc(d->rects.count, sizeof(QT_Direct_Rect));
+              if (d->rects.r)
+                {
+                   for (i = 0; i < d->rects.count; i++)
+                     {
+                        QRect r;
+
+                        r = dp->rect(i);
+                        if (d->fb.rotation == 0)
+                          {
+                             d->rects.r[i].x = r.x();
+                             d->rects.r[i].y = r.y();
+                             d->rects.r[i].w = r.width();
+                             d->rects.r[i].h = r.height();
+                          }
+                        else if (d->fb.rotation == 270)
+                          {
+                             d->rects.r[i].x = r.y();
+                             d->rects.r[i].y = d->fb.width - r.x() - r.width();
+                             d->rects.r[i].w = r.height();
+                             d->rects.r[i].h = r.width();
+                          }
+                        else if (d->fb.rotation == 90)
+                          {
+                             // FIXME: do
+                          }
+                     }
+                }
+              else
+                d->rects.count = 0;
+           }
+         d->location.x = dp->xOffset();
+         d->location.y = dp->yOffset();
+         d->location.w = dp->width();
+         d->location.h = dp->height();
+         return d;
+       }
+   void
+     evas_qt_main_direct_stop(QT_Direct *d)
+       {
+         QDirectPainter *dp;
+
+#ifdef QVFB_BUG
+           {
+              QWidget *target = (QWidget *)d->target;
+              QRect rect(d->updated.x, d->updated.y,
+                         d->updated.w, d->updated.h);
+              QPainter p(target);
+
+              p.fillRect(rect, QBrush::NoBrush);
+           }
+#endif
+         dp = (QDirectPainter *)d->direct;
+         delete dp;
+         if (d->rects.r) free(d->rects.r);
+         free(d);
+       }
+}
diff --git a/src/modules/engines/software_sdl/.cvsignore b/src/modules/engines/software_sdl/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/software_sdl/Evas_Engine_SDL.h b/src/modules/engines/software_sdl/Evas_Engine_SDL.h
new file mode 100644 (file)
index 0000000..71efa8a
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef _EVAS_ENGINE_SDL_H
+#define _EVAS_ENGINE_SDL_H
+
+#include <SDL/SDL.h>
+
+typedef struct _Evas_Engine_Info_SDL Evas_Engine_Info_SDL;
+
+struct _Evas_Engine_Info_SDL
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   struct {
+     int                        rotation;
+     int                       fullscreen : 1;
+     int                        hwsurface : 1;
+     int                       noframe : 1;
+     int                        alpha : 1;
+   } info;
+};
+#endif
+
+
diff --git a/src/modules/engines/software_sdl/Makefile.am b/src/modules/engines/software_sdl/Makefile.am
new file mode 100644 (file)
index 0000000..4c4c123
--- /dev/null
@@ -0,0 +1,31 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@ \
+@SDL_CFLAGS@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+if BUILD_ENGINE_SDL
+
+pkgdir = $(libdir)/evas/modules/engines/software_sdl/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES  = evas_engine.c
+
+module_la_LIBADD = @SDL_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_SDL.h
+
+endif
+
+EXTRA_DIST = evas_engine.h
diff --git a/src/modules/engines/software_sdl/evas_engine.c b/src/modules/engines/software_sdl/evas_engine.c
new file mode 100644 (file)
index 0000000..69d47ad
--- /dev/null
@@ -0,0 +1,1101 @@
+#include <assert.h>
+#include <math.h>
+#include <string.h>
+#include <sys/time.h>
+#include <time.h>
+#include <SDL/SDL.h>
+
+#include "evas_engine.h"
+
+/* #define DEBUG_SDL */
+
+static Evas_Func       func = {};
+static Evas_Func       pfunc = {};
+
+static void*                     _sdl_output_setup     (int w, int h, int fullscreen, int noframe, int alpha, int hwsurface);
+
+static Engine_Image_Entry       *_sdl_image_alloc       (void);
+static void                      _sdl_image_delete      (Engine_Image_Entry *eim);
+
+static int                       _sdl_image_constructor (Engine_Image_Entry*, void* data);
+static void                      _sdl_image_destructor  (Engine_Image_Entry *eim);
+
+static void                      _sdl_image_dirty_region(Engine_Image_Entry *eim, int x, int y, int w, int h);
+
+static int                       _sdl_image_dirty       (Engine_Image_Entry *dst, const Engine_Image_Entry *src);
+
+static int                       _sdl_image_size_set    (Engine_Image_Entry *dst, const Engine_Image_Entry *src);
+
+static int                       _sdl_image_update_data (Engine_Image_Entry* dst, void* engine_data);
+
+static void                      _sdl_image_load        (Engine_Image_Entry *eim, const Image_Entry* im);
+static int                       _sdl_image_mem_size_get(Engine_Image_Entry *eim);
+
+#ifdef DEBUG_SDL
+static void                      _sdl_image_debug       (const char* context, Engine_Image_Entry* im);
+#endif
+
+static const Evas_Cache_Engine_Image_Func       _sdl_cache_engine_image_cb = {
+  NULL /* key */,
+  _sdl_image_alloc /* alloc */,
+  _sdl_image_delete /* dealloc */,
+  _sdl_image_constructor /* constructor */,
+  _sdl_image_destructor /* destructor */,
+  _sdl_image_dirty_region /* dirty_region */,
+  _sdl_image_dirty /* dirty */,
+  _sdl_image_size_set /* size_set */,
+  _sdl_image_update_data /* update_data */,
+  _sdl_image_load /* load */,
+  _sdl_image_mem_size_get /* mem_size_get */,
+#ifdef DEBUG_SDL  /* debug */
+  _sdl_image_debug
+#else
+  NULL
+#endif
+};
+
+#define _SDL_UPDATE_PIXELS(EIM)                                 \
+  ((RGBA_Image *) EIM->cache_entry.src)->image.data = EIM->surface->pixels;
+
+#define RMASK 0x00ff0000
+#define GMASK 0x0000ff00
+#define BMASK 0x000000ff
+#define AMASK 0xff000000
+
+/* SDL engine info function */
+static void*
+evas_engine_sdl_info           (Evas* e)
+{
+   Evas_Engine_Info_SDL*       info = calloc(1, sizeof (Evas_Engine_Info_SDL));
+
+   if (!info)
+      return NULL;
+
+   info->magic.magic = rand();
+
+   return info;
+}
+
+static void
+evas_engine_sdl_info_free      (Evas* e, void* info)
+{
+   Evas_Engine_Info_SDL*       in = (Evas_Engine_Info_SDL*) info;
+
+   free(in);
+   in = NULL;
+}
+
+/* SDL engine output manipulation function */
+static void
+evas_engine_sdl_setup          (Evas* e, void* in)
+{
+   Evas_Engine_Info_SDL*       info = (Evas_Engine_Info_SDL*) in;
+
+   /* if we arent set to sdl, why the hell do we get called?! */
+   if (evas_output_method_get(e) != evas_render_method_lookup("software_sdl"))
+      return ;
+
+   SDL_Init(SDL_INIT_NOPARACHUTE);
+
+   if (SDL_InitSubSystem(SDL_INIT_VIDEO) < 0)
+     {
+       fprintf(stderr, "SDL_Init failed with %s\n", SDL_GetError());
+        exit(-1);
+     }
+
+   /* lets just set up */
+   e->engine.data.output = _sdl_output_setup(e->output.w, e->output.h,
+                                            info->info.fullscreen,
+                                            info->info.noframe,
+                                             info->info.alpha,
+                                             info->info.hwsurface);
+
+   if (!e->engine.data.output)
+      return;
+
+   e->engine.func = &func;
+   e->engine.data.context = e->engine.func->context_new(e->engine.data.output);
+}
+
+static void
+evas_engine_sdl_output_free    (void *data)
+{
+   Render_Engine*              re = data;
+
+   if (re->cache)
+     evas_cache_engine_image_shutdown(re->cache);
+
+   evas_common_tilebuf_free(re->tb);
+   if (re->rects)
+      evas_common_tilebuf_free_render_rects(re->rects);
+
+   if (re->update_rects)
+     free(re->update_rects);
+   free(re);
+
+/*    evas_common_font_shutdown(); */
+   evas_common_image_shutdown();
+
+   SDL_QuitSubSystem(SDL_INIT_VIDEO);
+}
+
+static void
+evas_engine_sdl_output_resize  (void *data, int w, int h)
+{
+   /* FIXME */
+   Render_Engine        *re = data;
+   SDL_Surface          *surface;
+
+   if (w == re->tb->outbuf_w && h == re->tb->outbuf_h)
+     return;
+
+   /* Destroy the current screen */
+   evas_cache_engine_image_drop(&re->rgba_engine_image->cache_entry);
+
+   /* Rebuil tilebuf */
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb)
+      evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+
+   /* Build the new screen */
+   surface = SDL_SetVideoMode(w, h, 32,
+                              (re->flags.hwsurface ? SDL_HWSURFACE : SDL_SWSURFACE)
+                              | (re->flags.fullscreen ? SDL_FULLSCREEN : 0)
+                              | (re->flags.noframe ? SDL_NOFRAME : 0)
+                              | (re->flags.alpha ? SDL_SRCALPHA : 0));
+
+   if (!surface)
+     {
+       fprintf(stderr, "Unable to change the resolution to : %ix%i\n", w, h);
+       exit(-1);
+     }
+   re->rgba_engine_image = (SDL_Engine_Image_Entry *) evas_cache_engine_image_engine(re->cache, surface);
+   if (!re->rgba_engine_image)
+     {
+       fprintf(stderr, "RGBA_Image allocation from SDL failed\n");
+       exit(-1);
+     }
+
+   SDL_FillRect(surface, NULL, 0);
+}
+
+static void
+evas_engine_sdl_output_tile_size_set   (void *data, int w, int h)
+{
+   Render_Engine*                      re = (Render_Engine*) data;
+
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+evas_engine_sdl_output_redraws_rect_add        (void *data, int x, int y, int w, int h)
+{
+   Render_Engine*                      re = (Render_Engine*) data;
+
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+evas_engine_sdl_output_redraws_rect_del        (void *data, int x, int y, int w, int h)
+{
+   Render_Engine*                      re = (Render_Engine*) data;
+
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+evas_engine_sdl_output_redraws_clear   (void *data)
+{
+   Render_Engine*                      re = (Render_Engine*) data;
+
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void*
+evas_engine_sdl_output_redraws_next_update_get (void *data,
+                                                int *x, int *y, int *w, int *h,
+                                                int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine        *re = data;
+   Tilebuf_Rect         *tb_rect;
+   SDL_Rect              rect;
+
+   if (re->flags.end)
+     {
+       re->flags.end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *) re->rects;
+     }
+   if (!re->cur_rect)
+      return NULL;
+
+   tb_rect = (Tilebuf_Rect*) re->cur_rect;
+   *cx = *x = tb_rect->x;
+   *cy = *y = tb_rect->y;
+   *cw = *w = tb_rect->w;
+   *ch = *h = tb_rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->flags.end = 1;
+     }
+
+   rect.x = *x;
+   rect.y = *y;
+   rect.w = *w;
+   rect.h = *h;
+
+   SDL_FillRect(re->rgba_engine_image->surface, &rect, 0);
+
+   /* Return the "fake" surface so it is passed to the drawing routines. */
+   return re->rgba_engine_image;
+}
+
+static void
+evas_engine_sdl_output_redraws_next_update_push        (void *data, void *surface,
+                                                int x, int y, int w, int h)
+{
+   Render_Engine                               *re = (Render_Engine *) data;
+
+   if (re->update_rects_count + 1 > re->update_rects_limit)
+     {
+       re->update_rects_limit += 8;
+       re->update_rects = realloc(re->update_rects, sizeof (SDL_Rect) * re->update_rects_limit);
+     }
+
+   re->update_rects[re->update_rects_count].x = x;
+   re->update_rects[re->update_rects_count].y = y;
+   re->update_rects[re->update_rects_count].w = w;
+   re->update_rects[re->update_rects_count].h = h;
+
+   ++re->update_rects_count;
+
+   evas_common_cpu_end_opt();
+}
+
+static void
+_sdl_image_dirty_region(Engine_Image_Entry *eim, int x, int y, int w, int h)
+{
+   SDL_Engine_Image_Entry       *dst;
+   RGBA_Image *im;
+
+   dst = (SDL_Engine_Image_Entry *) eim;
+
+   SDL_UpdateRect(dst->surface, x, y, w, h);
+
+   im = (RGBA_Image *)eim->src;
+   im->flags |= RGBA_IMAGE_IS_DIRTY;
+}
+
+static void
+evas_engine_sdl_output_flush(void *data)
+{
+   Render_Engine        *re = (Render_Engine *) data;
+
+   if (re->update_rects_count > 0)
+     SDL_UpdateRects(re->rgba_engine_image->surface, re->update_rects_count, re->update_rects);
+
+   re->update_rects_count = 0;
+}
+
+
+static void
+evas_engine_sdl_output_idle_flush(void *data)
+{
+   (void) data;
+}
+
+/*
+ * Image objects
+ */
+
+static void*
+evas_engine_sdl_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
+{
+   Render_Engine*      re = (Render_Engine*) data;;
+
+   *error = 0;
+   return evas_cache_engine_image_request(re->cache, file, key, lo, NULL, error);
+}
+
+static int
+evas_engine_sdl_image_alpha_get(void *data, void *image)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   RGBA_Image                   *im;
+
+   if (!eim) return 1;
+   im = (RGBA_Image *) eim->cache_entry.src;
+   switch (eim->cache_entry.src->space)
+     {
+     case EVAS_COLORSPACE_ARGB8888:
+        if (im->cache_entry.flags.alpha) return 1;
+     default:
+        break;
+     }
+   return 0;
+}
+
+static void
+evas_engine_sdl_image_size_get(void *data, void *image, int *w, int *h)
+{
+   SDL_Engine_Image_Entry       *eim;
+
+   eim = image;
+   if (w) *w = eim->cache_entry.src->w;
+   if (h) *h = eim->cache_entry.src->h;
+}
+
+static int
+evas_engine_sdl_image_colorspace_get(void *data, void *image)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+
+   if (!eim) return EVAS_COLORSPACE_ARGB8888;
+   return eim->cache_entry.src->space;
+}
+
+static void
+evas_engine_sdl_image_colorspace_set(void *data, void *image, int cspace)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+
+   if (!eim) return;
+   if (eim->cache_entry.src->space == cspace) return;
+
+   evas_cache_engine_image_colorspace(&eim->cache_entry, cspace, NULL);
+}
+
+static void*
+evas_engine_sdl_image_new_from_copied_data(void *data,
+                                          int w, int h,
+                                          DATA32* image_data,
+                                           int alpha, int cspace)
+{
+   Render_Engine       *re = (Render_Engine*) data;
+
+   return evas_cache_engine_image_copied_data(re->cache, w, h, image_data, alpha, cspace, NULL);
+}
+
+static void*
+evas_engine_sdl_image_new_from_data(void *data, int w, int h, DATA32* image_data, int alpha, int cspace)
+{
+   Render_Engine       *re = (Render_Engine*) data;
+
+   return evas_cache_engine_image_data(re->cache, w, h, image_data, alpha, cspace, NULL);
+}
+
+static void
+evas_engine_sdl_image_free(void *data, void *image)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+
+   (void) data;
+
+   evas_cache_engine_image_drop(&eim->cache_entry);
+}
+
+static void*
+evas_engine_sdl_image_size_set(void *data, void *image, int w, int h)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+
+   (void) data;
+
+   return evas_cache_engine_image_size_set(&eim->cache_entry, w, h);
+}
+
+static void*
+evas_engine_sdl_image_dirty_region(void *data,
+                                  void *image,
+                                  int x, int y, int w, int h)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+
+   (void) data;
+
+   return evas_cache_engine_image_dirty(&eim->cache_entry, x, y, w, h);
+}
+
+static void*
+evas_engine_sdl_image_data_get(void *data, void *image,
+                              int to_write, DATA32** image_data)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   RGBA_Image                   *im;
+
+   (void) data;
+
+   if (!eim)
+     {
+        *image_data = NULL;
+        return NULL;
+     }
+   im = (RGBA_Image *) eim->cache_entry.src;
+
+   switch (eim->cache_entry.src->space)
+     {
+     case EVAS_COLORSPACE_ARGB8888:
+        if (to_write)
+          eim = (SDL_Engine_Image_Entry *) evas_cache_engine_image_dirty(&eim->cache_entry, 0, 0, eim->cache_entry.src->w, eim->cache_entry.src->h);
+
+        evas_cache_engine_image_load_data(&eim->cache_entry);
+        *image_data = im->image.data;
+        break;
+     case EVAS_COLORSPACE_YCBCR422P709_PL:
+     case EVAS_COLORSPACE_YCBCR422P601_PL:
+        *image_data = im->cs.data;
+        break;
+     default:
+        abort();
+        break;
+     }
+   return eim;
+}
+
+static void*
+evas_engine_sdl_image_data_put(void *data, void *image, DATA32* image_data)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   Render_Engine                *re = data;
+   RGBA_Image                   *im;
+
+   if (!eim) return NULL;
+   im = (RGBA_Image*) eim->cache_entry.src;
+
+   switch (eim->cache_entry.src->space)
+     {
+     case EVAS_COLORSPACE_ARGB8888:
+        if (image_data != im->image.data)
+          {
+             evas_cache_engine_image_drop(&eim->cache_entry);
+             eim = (SDL_Engine_Image_Entry *) evas_cache_engine_image_data(re->cache,
+                                                                           eim->cache_entry.w, eim->cache_entry.h,
+                                                                           image_data,
+                                                                           func.image_alpha_get(data, eim),
+                                                                           func.image_colorspace_get(data, eim),
+                                                                           NULL);
+          }
+        break;
+     case EVAS_COLORSPACE_YCBCR422P601_PL:
+     case EVAS_COLORSPACE_YCBCR422P709_PL:
+        if (image_data != im->cs.data)
+          {
+             if (im->cs.data)
+               if (!im->cs.no_free)
+                 free(im->cs.data);
+             im->cs.data = image_data;
+             evas_common_image_colorspace_dirty(im);
+          }
+        break;
+     default:
+        abort();
+        break;
+     }
+   return eim;
+}
+
+static void*
+evas_engine_sdl_image_alpha_set(void *data, void *image, int has_alpha)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   RGBA_Image                   *im;
+
+   (void) data;
+
+   if (!eim) return NULL;
+
+   im = (RGBA_Image *) eim->cache_entry.src;
+
+   if (eim->cache_entry.src->space != EVAS_COLORSPACE_ARGB8888)
+     {
+        im->cache_entry.flags.alpha = 0;
+        return eim;
+     }
+
+   eim = (SDL_Engine_Image_Entry *) evas_cache_engine_image_dirty(&eim->cache_entry, 0, 0, eim->cache_entry.w, eim->cache_entry.h);
+
+   /* FIXME: update SDL_Surface flags */
+   im->cache_entry.flags.alpha = has_alpha ? 1 : 0;
+   return eim;
+}
+
+static void*
+evas_engine_sdl_image_border_set(void *data, void *image, int l, int r, int t, int b)
+{
+   return image;
+}
+
+static void
+evas_engine_sdl_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+{
+   /* FIXME: need to know what evas expect from this call */
+}
+
+static void
+evas_engine_sdl_image_draw(void *data, void *context, void *surface, void *image,
+                          int src_region_x, int src_region_y, int src_region_w, int src_region_h,
+                          int dst_region_x, int dst_region_y, int dst_region_w, int dst_region_h,
+                          int smooth)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   SDL_Engine_Image_Entry       *dst = surface;
+   RGBA_Draw_Context            *dc = (RGBA_Draw_Context*) context;
+   int                           mustlock_im = 0;
+   int                           mustlock_dst = 0;
+
+   (void) data;
+
+   if (eim->cache_entry.src->space == EVAS_COLORSPACE_ARGB8888)
+     evas_cache_engine_image_load_data(&eim->cache_entry);
+
+   /* Fallback to software method */
+   if (SDL_MUSTLOCK(dst->surface))
+     {
+        mustlock_dst = 1;
+       SDL_LockSurface(dst->surface);
+       _SDL_UPDATE_PIXELS(dst);
+     }
+
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
+     {
+        mustlock_im = 1;
+       SDL_LockSurface(eim->surface);
+       _SDL_UPDATE_PIXELS(eim);
+     }
+
+   evas_common_image_colorspace_normalize((RGBA_Image *) eim->cache_entry.src);
+
+   if (smooth)
+     evas_common_scale_rgba_in_to_out_clip_smooth((RGBA_Image *) eim->cache_entry.src,
+                                                  (RGBA_Image *) dst->cache_entry.src,
+                                                  dc,
+                                                  src_region_x, src_region_y, src_region_w, src_region_h,
+                                                  dst_region_x, dst_region_y, dst_region_w, dst_region_h);
+   else
+     evas_common_scale_rgba_in_to_out_clip_sample((RGBA_Image *) eim->cache_entry.src,
+                                                  (RGBA_Image *) dst->cache_entry.src,
+                                                  dc,
+                                                  src_region_x, src_region_y, src_region_w, src_region_h,
+                                                  dst_region_x, dst_region_y, dst_region_w, dst_region_h);
+   evas_common_cpu_end_opt ();
+
+   if (mustlock_im)
+     SDL_UnlockSurface(eim->surface);
+
+   if (mustlock_dst)
+     SDL_UnlockSurface(dst->surface);
+}
+
+static void
+evas_engine_sdl_image_cache_flush(void *data)
+{
+   Render_Engine        *re = (Render_Engine*) data;
+   int                   size;
+
+   size = evas_cache_engine_image_get(re->cache);
+   evas_cache_engine_image_set(re->cache, 0);
+   evas_cache_engine_image_set(re->cache, size);
+}
+
+static void
+evas_engine_sdl_image_cache_set(void *data, int bytes)
+{
+   Render_Engine        *re = (Render_Engine*) data;
+
+   evas_cache_engine_image_set(re->cache, bytes);
+}
+
+static int
+evas_engine_sdl_image_cache_get(void *data)
+{
+   Render_Engine        *re = (Render_Engine*) data;
+
+   return evas_cache_engine_image_get(re->cache);
+}
+
+static char*
+evas_engine_sdl_image_comment_get(void *data, void *image, char *key)
+{
+   SDL_Engine_Image_Entry       *eim = image;
+   RGBA_Image                   *im;
+
+   if (!eim) return NULL;
+   im = (RGBA_Image *) eim->cache_entry.src;
+
+   return im->info.comment;
+}
+
+static char*
+evas_engine_sdl_image_format_get(void *data, void *image)
+{
+   /* FIXME: need to know what evas expect from this call */
+   return NULL;
+}
+
+static void
+evas_engine_sdl_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
+{
+   SDL_Engine_Image_Entry       *eim = surface;
+   int                           mustlock_im = 0;
+
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
+     {
+        mustlock_im = 1;
+       SDL_LockSurface(eim->surface);
+       _SDL_UPDATE_PIXELS(eim);
+     }
+
+   evas_common_font_draw((RGBA_Image *) eim->cache_entry.src, context, font, x, y, text);
+   evas_common_cpu_end_opt();
+
+   if (mustlock_im)
+     SDL_UnlockSurface(eim->surface);
+}
+
+static void
+evas_engine_sdl_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
+{
+   SDL_Engine_Image_Entry       *eim = surface;
+   int                           mustlock_im = 0;
+
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
+     {
+        mustlock_im = 1;
+       SDL_LockSurface(eim->surface);
+       _SDL_UPDATE_PIXELS(eim);
+     }
+
+   evas_common_line_draw((RGBA_Image *) eim->cache_entry.src, context, x1, y1, x2, y2);
+   evas_common_cpu_end_opt();
+
+   if (mustlock_im)
+     SDL_UnlockSurface(eim->surface);
+}
+
+static void
+evas_engine_sdl_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
+{
+   SDL_Engine_Image_Entry       *eim = surface;
+#if ENGINE_SDL_PRIMITIVE
+   RGBA_Draw_Context            *dc = context;
+#endif
+   int                           mustlock_im = 0;
+
+#if ENGINE_SDL_PRIMITIVE
+   if (A_VAL(&dc->col.col) != 0x00)
+     {
+        if (A_VAL(&dc->col.col) != 0xFF)
+          {
+#endif
+             if (eim->surface && SDL_MUSTLOCK(eim->surface))
+               {
+                  mustlock_im = 1;
+                  SDL_LockSurface(eim->surface);
+                  _SDL_UPDATE_PIXELS(eim);
+               }
+
+             evas_common_rectangle_draw((RGBA_Image *) eim->cache_entry.src, context, x, y, w, h);
+             evas_common_cpu_end_opt();
+
+             if (mustlock_im)
+               SDL_UnlockSurface(eim->surface);
+#if ENGINE_SDL_PRIMITIVE
+          }
+        else
+          {
+             SDL_Rect        dstrect;
+
+             if (dc->clip.use)
+               {
+                  SDL_Rect   cliprect;
+
+                  cliprect.x = dc->clip.x;
+                  cliprect.y = dc->clip.y;
+                  cliprect.w = dc->clip.w;
+                  cliprect.h = dc->clip.h;
+
+                  SDL_SetClipRect(eim->surface, &cliprect);
+               }
+
+             dstrect.x = x;
+             dstrect.y = y;
+             dstrect.w = w;
+             dstrect.h = h;
+
+             SDL_FillRect(eim->surface, &dstrect, SDL_MapRGBA(eim->surface->format, R_VAL(&dc->col.col), G_VAL(&dc->col.col), B_VAL(&dc->col.col), 0xFF));
+
+             if (dc->clip.use)
+               SDL_SetClipRect(eim->surface, NULL);
+          }
+     }
+#endif
+}
+
+static void
+evas_engine_sdl_polygon_draw(void *data, void *context, void *surface, void *polygon)
+{
+   SDL_Engine_Image_Entry       *eim = surface;
+   int                           mustlock_im = 0;
+
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
+     {
+        mustlock_im = 1;
+       SDL_LockSurface(eim->surface);
+       _SDL_UPDATE_PIXELS(eim);
+     }
+
+   evas_common_polygon_draw((RGBA_Image *) eim->cache_entry.src, context, polygon);
+   evas_common_cpu_end_opt();
+
+   if (mustlock_im)
+     SDL_UnlockSurface(eim->surface);
+}
+
+static void
+evas_engine_sdl_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
+{
+   SDL_Engine_Image_Entry       *eim = surface;
+   int                           mustlock_im = 0;
+
+   if (eim->surface && SDL_MUSTLOCK(eim->surface))
+     {
+        mustlock_im = 1;
+       SDL_LockSurface(eim->surface);
+       _SDL_UPDATE_PIXELS(eim);
+     }
+
+   evas_common_gradient_draw((RGBA_Image *) eim->cache_entry.src, context, x, y, w, h, gradient);
+   evas_common_cpu_end_opt();
+
+   if (mustlock_im)
+     SDL_UnlockSurface(eim->surface);
+}
+
+EAPI int module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, evas_engine_sdl_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   ORD(image_load);
+   ORD(image_new_from_data);
+   ORD(image_new_from_copied_data);
+   ORD(image_colorspace_set);
+   ORD(image_colorspace_get);
+   ORD(image_free);
+   ORD(image_size_set);
+   ORD(image_size_get);
+   ORD(image_dirty_region);
+   ORD(image_data_get);
+   ORD(image_data_put);
+   ORD(image_alpha_set);
+   ORD(image_alpha_get);
+   ORD(image_border_set);
+   ORD(image_border_get);
+   ORD(image_draw);
+   ORD(image_comment_get);
+   ORD(image_format_get);
+   ORD(image_cache_flush);
+   ORD(image_cache_set);
+   ORD(image_cache_get);
+   ORD(font_draw);
+   ORD(line_draw);
+   ORD(rectangle_draw);
+   ORD(polygon_draw);
+   ORD(gradient_draw);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void module_close(void)
+{
+
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+   EVAS_MODULE_TYPE_ENGINE,
+   "software_sdl",
+   "none"
+};
+
+/* Private routines. */
+
+static void*
+_sdl_output_setup              (int w, int h, int fullscreen, int noframe, int alpha, int hwsurface)
+{
+   Render_Engine               *re = calloc(1, sizeof(Render_Engine));
+   SDL_Surface                  *surface;
+
+   /* if we haven't initialized - init (automatic abort if already done) */
+   evas_common_cpu_init();
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+
+   if (w <= 0) w = 640;
+   if (h <= 0) h = 480;
+
+   re->cache = evas_cache_engine_image_init(&_sdl_cache_engine_image_cb, evas_common_image_cache_get());
+   if (!re->cache)
+     {
+        fprintf(stderr, "Evas_Cache_Engine_Image allocation failed!\n");
+        exit(-1);
+     }
+
+   re->tb = evas_common_tilebuf_new(w, h);
+   /* in preliminary tests 16x16 gave highest framerates */
+   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   surface = SDL_SetVideoMode(w, h, 32,
+                              (hwsurface ? SDL_HWSURFACE : SDL_SWSURFACE)
+                              | (fullscreen ? SDL_FULLSCREEN : 0)
+                              | (noframe ? SDL_NOFRAME : 0)
+                              | (alpha ? SDL_SRCALPHA : 0));
+
+   if (!surface)
+     {
+        fprintf(stderr, "SDL_SetVideoMode [ %i x %i x 32 ] failed.\n", w, h);
+        exit(-1);
+     }
+
+   SDL_SetAlpha(surface, SDL_SRCALPHA | SDL_RLEACCEL, 0);
+
+   /* We create a "fake" RGBA_Image which points to the SDL surface. Each access
+    * to that surface is wrapped in Lock / Unlock calls whenever the data is
+    * manipulated directly. */
+   re->rgba_engine_image = (SDL_Engine_Image_Entry *) evas_cache_engine_image_engine(re->cache, surface);
+   if (!re->rgba_engine_image)
+     {
+       fprintf(stderr, "RGBA_Image allocation from SDL failed\n");
+        exit(-1);
+     }
+
+   SDL_FillRect(surface, NULL, 0);
+
+   re->flags.alpha = alpha;
+   re->flags.hwsurface = hwsurface;
+   re->flags.fullscreen = fullscreen;
+   re->flags.noframe = noframe;
+   return re;
+}
+
+static Engine_Image_Entry*
+_sdl_image_alloc(void)
+{
+   SDL_Engine_Image_Entry       *new;
+
+   new = calloc(1, sizeof (SDL_Engine_Image_Entry));
+
+   return (Engine_Image_Entry *) new;
+}
+
+static void
+_sdl_image_delete(Engine_Image_Entry *eim)
+{
+   free(eim);
+}
+
+static int
+_sdl_image_constructor(Engine_Image_Entry *ie, void *data)
+{
+   SDL_Surface                  *sdl = NULL;
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) ie;
+   RGBA_Image                   *im;
+
+   im = (RGBA_Image *) ie->src;
+
+   if (im)
+     {
+        evas_cache_image_load_data(&im->cache_entry);
+
+        if (im->image.data)
+          {
+             /* FIXME: Take care of CSPACE */
+             sdl = SDL_CreateRGBSurfaceFrom(im->image.data,
+                                            ie->w, ie->h,
+                                            32, ie->w * 4,
+                                            RMASK, GMASK, BMASK, AMASK);
+             eim->surface = sdl;
+             eim->flags.engine_surface = 0;
+          }
+     }
+
+   return 0;
+}
+
+static void
+_sdl_image_destructor(Engine_Image_Entry *eie)
+{
+   SDL_Engine_Image_Entry       *seie = (SDL_Engine_Image_Entry *) eie;
+
+   if (seie->surface && !seie->flags.engine_surface)
+     SDL_FreeSurface(seie->surface);
+   seie->surface = NULL;
+}
+
+static int
+_sdl_image_dirty(Engine_Image_Entry *dst, const Engine_Image_Entry *src)
+{
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) dst;
+   SDL_Surface                  *sdl = NULL;
+   RGBA_Image                   *im;
+
+   im = (RGBA_Image *) dst->src;
+
+   /* FIXME: Take care of CSPACE */
+   sdl = SDL_CreateRGBSurfaceFrom(im->image.data,
+                                  dst->w, dst->h,
+                                  32, dst->w * 4,
+                                  0xff0000, 0xff00, 0xff, 0xff000000);
+   eim->surface = sdl;
+   eim->flags.engine_surface = 0;
+
+   return 0;
+}
+
+static int
+_sdl_image_update_data(Engine_Image_Entry *dst, void* engine_data)
+{
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) dst;
+   SDL_Surface                  *sdl = NULL;
+   RGBA_Image                   *im;
+
+   im = (RGBA_Image *) dst->src;
+
+   if (engine_data)
+     {
+        sdl = engine_data;
+
+        if (im)
+          {
+             im->image.data = sdl->pixels;
+             im->image.no_free = 1;
+             im->cache_entry.flags.alpha = 0;
+             dst->src->w = sdl->w;
+             dst->src->h = sdl->h;
+          }
+        dst->w = sdl->w;
+        dst->h = sdl->h;
+     }
+   else
+     {
+        /* FIXME: Take care of CSPACE */
+        SDL_FreeSurface(eim->surface);
+        sdl = SDL_CreateRGBSurfaceFrom(im->image.data,
+                                       dst->w, dst->h,
+                                       32, dst->w * 4,
+                                       RMASK, GMASK, BMASK, AMASK);
+     }
+
+   eim->surface = sdl;
+
+   return 0;
+}
+
+static int
+_sdl_image_size_set(Engine_Image_Entry *dst, const Engine_Image_Entry *src)
+{
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) dst;
+   SDL_Surface                  *sdl;
+   RGBA_Image                   *im;
+
+   im = (RGBA_Image *) dst->src;
+
+   /* FIXME: handle im == NULL */
+   sdl = SDL_CreateRGBSurfaceFrom(im->image.data,
+                                  dst->w, dst->h,
+                                  32, dst->w * 4,
+                                  RMASK, GMASK, BMASK, AMASK);
+
+   eim->surface = sdl;
+
+   return 0;
+}
+
+static void
+_sdl_image_load(Engine_Image_Entry *eim, const Image_Entry *ie_im)
+{
+   SDL_Engine_Image_Entry       *load = (SDL_Engine_Image_Entry *) eim;
+   SDL_Surface                  *sdl;
+
+   if (!load->surface)
+     {
+        RGBA_Image      *im;
+
+        im = (RGBA_Image *) ie_im;
+
+        sdl = SDL_CreateRGBSurfaceFrom(im->image.data,
+                                       eim->w, eim->h,
+                                       32, eim->w * 4,
+                                       RMASK, GMASK, BMASK, AMASK);
+        load->surface = sdl;
+     }
+}
+
+static int
+_sdl_image_mem_size_get(Engine_Image_Entry *eim)
+{
+   SDL_Engine_Image_Entry       *seie = (SDL_Engine_Image_Entry *) eim;
+   int                           size = 0;
+
+   /* FIXME: Count surface size. */
+   if (seie->surface)
+     size = sizeof (SDL_Surface) + sizeof (SDL_PixelFormat);
+
+   return size;
+}
+
+#ifdef DEBUG_SDL
+static void
+_sdl_image_debug(const char* context, Engine_Image_Entry* eie)
+{
+   SDL_Engine_Image_Entry       *eim = (SDL_Engine_Image_Entry *) eie;
+
+   printf ("*** %s image (%p) ***\n", context, eim);
+   if (eim)
+     {
+        printf ("* W: %i\n* H: %i\n* R: %i\n", eim->cache_entry.w, eim->cache_entry.h, eim->cache_entry.references);
+        if (eim->cache_entry.src)
+          printf ("* Pixels: %p\n* SDL Surface: %p\n",((RGBA_Image*) eim->cache_entry.src)->image.data, eim->surface);
+        if (eim->surface)
+          printf ("* Surface->pixels: %p\n", eim->surface->pixels);
+       printf ("* Key: %s\n", eim->cache_entry.cache_key);
+        printf ("* Reference: %i\n", eim->cache_entry.references);
+     }
+   printf ("*** ***\n");
+}
+#endif
diff --git a/src/modules/engines/software_sdl/evas_engine.h b/src/modules/engines/software_sdl/evas_engine.h
new file mode 100644 (file)
index 0000000..1481139
--- /dev/null
@@ -0,0 +1,46 @@
+#ifndef EVAS_ENGINE_SDL_H
+#define EVAS_ENGINE_SDL_H
+
+#include "evas_common.h"
+#include "evas_private.h"
+#include "Evas_Engine_SDL.h"
+
+typedef struct _SDL_Engine_Image_Entry SDL_Engine_Image_Entry;
+struct _SDL_Engine_Image_Entry
+{
+   Engine_Image_Entry            cache_entry;
+
+   SDL_Surface                  *surface;
+
+   struct
+   {
+     unsigned int                engine_surface : 1;
+   } flags;
+};
+
+typedef struct _Render_Engine Render_Engine;
+struct _Render_Engine
+{
+   SDL_Engine_Image_Entry       *rgba_engine_image;
+
+   Tilebuf                      *tb;
+   Tilebuf_Rect                 *rects;
+   Evas_Object_List             *cur_rect;
+
+   Evas_Cache_Engine_Image      *cache;
+
+   SDL_Rect                     *update_rects;
+   int                           update_rects_count;
+   int                           update_rects_limit;
+
+   struct
+   {
+     unsigned int               fullscreen : 1;
+     unsigned int               noframe : 1;
+     unsigned int               alpha : 1;
+     unsigned int               hwsurface : 1;
+     unsigned int               end : 1;
+   } flags;
+};
+
+#endif
diff --git a/src/modules/engines/software_win32_gdi/.cvsignore b/src/modules/engines/software_win32_gdi/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/software_win32_gdi/Evas_Engine_Software_Win32_GDI.h b/src/modules/engines/software_win32_gdi/Evas_Engine_Software_Win32_GDI.h
new file mode 100644 (file)
index 0000000..22129b2
--- /dev/null
@@ -0,0 +1,28 @@
+#ifndef _EVAS_ENGINE_SOFTWARE_WIN32_GDI_H
+#define _EVAS_ENGINE_SOFTWARE_WIN32_GDI_H
+
+typedef struct _Evas_Engine_Info_Software_Win32_GDI Evas_Engine_Info_Software_Win32_GDI;
+
+struct _Evas_Engine_Info_Software_Win32_GDI
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   /* engine specific data & parameters it needs to set up */
+   struct {
+               HWND             hwnd;
+/*
+      Colormap  colormap;
+*/
+
+      int       depth;
+      int       rotation;
+
+   } info;
+   /* engine specific function calls to query stuff about the destination */
+   /* engine (what visual & colormap & depth to use, performance info etc. */
+};
+#endif
+
+
diff --git a/src/modules/engines/software_win32_gdi/Makefile.am b/src/modules/engines/software_win32_gdi/Makefile.am
new file mode 100644 (file)
index 0000000..86ba3d0
--- /dev/null
@@ -0,0 +1,9 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_win32_buffer.c \
+evas_win32_main.c \
+Evas_Engine_Software_Win32_GDI.h
diff --git a/src/modules/engines/software_win32_gdi/evas_engine.c b/src/modules/engines/software_win32_gdi/evas_engine.c
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/modules/engines/software_win32_gdi/evas_engine.h b/src/modules/engines/software_win32_gdi/evas_engine.h
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/modules/engines/software_win32_gdi/evas_outbuf.c b/src/modules/engines/software_win32_gdi/evas_outbuf.c
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/modules/engines/software_win32_gdi/evas_win32_buffer.c b/src/modules/engines/software_win32_gdi/evas_win32_buffer.c
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/modules/engines/software_win32_gdi/evas_win32_main.c b/src/modules/engines/software_win32_gdi/evas_win32_main.c
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/src/modules/engines/software_x11/.cvsignore b/src/modules/engines/software_x11/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/software_x11/Evas_Engine_Software_X11.h b/src/modules/engines/software_x11/Evas_Engine_Software_X11.h
new file mode 100644 (file)
index 0000000..1f1df60
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef _EVAS_ENGINE_SOFTWARE_X11_H
+#define _EVAS_ENGINE_SOFTWARE_X11_H
+
+#include <X11/Xlib.h>
+
+typedef struct _Evas_Engine_Info_Software_X11              Evas_Engine_Info_Software_X11;
+
+struct _Evas_Engine_Info_Software_X11
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   /* engine specific data & parameters it needs to set up */
+   struct {
+      Display  *display;
+      Drawable  drawable;
+      Pixmap    mask;
+      Visual   *visual;
+      Colormap  colormap;
+      int       depth;
+      int       rotation;
+
+      int       alloc_grayscale : 1;
+      int       debug : 1;
+      int       shape_dither : 1;
+      int       destination_alpha : 1;
+      int       track_mask_changes : 1;
+
+      int       alloc_colors_max;
+   } info;
+   /* engine specific function calls to query stuff about the destination */
+   struct {
+      Visual *  (*best_visual_get)   (Display *disp, int screen);
+      Colormap  (*best_colormap_get) (Display *disp, int screen);
+      int       (*best_depth_get)    (Display *disp, int screen);
+   } func;
+   
+   int mask_changed;
+};
+#endif
+
+
diff --git a/src/modules/engines/software_x11/Makefile.am b/src/modules/engines/software_x11/Makefile.am
new file mode 100644 (file)
index 0000000..f6e96d8
--- /dev/null
@@ -0,0 +1,42 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@ \
+@x_cflags@
+
+if BUILD_ENGINE_SOFTWARE_X11
+
+pkgdir = $(libdir)/evas/modules/engines/software_x11/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_x_buffer.c \
+evas_x_color.c \
+evas_x_main.c
+
+module_la_LIBADD = @x_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Software_X11.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_x_buffer.c \
+evas_x_color.c \
+evas_x_main.c \
+Evas_Engine_Software_X11.h
diff --git a/src/modules/engines/software_x11/evas_engine.c b/src/modules/engines/software_x11/evas_engine.c
new file mode 100644 (file)
index 0000000..7fc96f4
--- /dev/null
@@ -0,0 +1,382 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Software_X11.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Tilebuf          *tb;
+   Outbuf           *ob;
+   Tilebuf_Rect     *rects;
+   Evas_Object_List *cur_rect;
+   int               end : 1;
+};
+
+/* prototypes we will use here */
+static void *_output_setup(int w, int h, int rot, Display *disp, Drawable draw, Visual *vis, Colormap cmap, int depth, int debug, int grayscale, int max_colors, Pixmap mask, int shape_dither, int destination_alpha);
+static Visual *_best_visual_get(Display *disp, int screen);
+static Colormap _best_colormap_get(Display *disp, int screen);
+static int _best_depth_get(Display *disp, int screen);
+
+static void *eng_info(Evas *e);
+static void eng_info_free(Evas *e, void *info);
+static void eng_setup(Evas *e, void *info);
+static void eng_output_free(void *data);
+static void eng_output_resize(void *data, int w, int h);
+static void eng_output_tile_size_set(void *data, int w, int h);
+static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_clear(void *data);
+static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h);
+static void eng_output_flush(void *data);
+static void eng_output_idle_flush(void *data);
+
+/* internal engine routines */
+static void *
+_output_setup(int w, int h, int rot, Display *disp, Drawable draw, Visual *vis, Colormap cmap, int depth, int debug, int grayscale, int max_colors, Pixmap mask, int shape_dither, int destination_alpha)
+{
+   Render_Engine *re;
+
+   re = calloc(1, sizeof(Render_Engine));
+   /* if we haven't initialized - init (automatic abort if already done) */
+   evas_common_cpu_init();
+
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+
+   evas_software_x11_x_init();
+   evas_software_x11_x_color_init();
+   evas_software_x11_outbuf_init();
+
+   re->ob = evas_software_x11_outbuf_setup_x(w, h, rot, OUTBUF_DEPTH_INHERIT,
+                                            disp, draw, vis, cmap, depth,
+                                            grayscale, max_colors, mask,
+                                            shape_dither, destination_alpha);
+   if (!re->ob)
+     {
+       free(re);
+       return NULL;
+     }
+   
+   /* for updates return 1 big buffer, but only use portions of it, also cache
+    it and keepit around until an idle_flush */
+   /* disable for now - i am hunting down why some expedite tests are slower,
+    * as well as shaped stuff is broken and probable non-32bpp is broken as
+    * convert funcs dont do the right thing
+    *
+   re->ob->onebuf = 1;
+    */
+   
+   evas_software_x11_outbuf_debug_set(re->ob, debug);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (!re->tb)
+     {
+       evas_software_x11_outbuf_free(re->ob);
+       free(re);
+       return NULL;
+     }
+   /* in preliminary tests 16x16 gave highest framerates */
+   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   return re;
+}
+
+static Visual *
+_best_visual_get(Display *disp, int screen)
+{
+   if (!disp) return NULL;
+   return DefaultVisual(disp, screen);
+}
+
+static Colormap
+_best_colormap_get(Display *disp, int screen)
+{
+   if (!disp) return 0;
+   return DefaultColormap(disp, screen);
+}
+
+static int
+_best_depth_get(Display *disp, int screen)
+{
+   if (!disp) return 0;
+   return DefaultDepth(disp, screen);
+}
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Software_X11 *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_Software_X11));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   info->info.debug = 0;
+   info->info.alloc_grayscale = 0;
+   info->info.alloc_colors_max = 216;
+   info->func.best_visual_get = _best_visual_get;
+   info->func.best_colormap_get = _best_colormap_get;
+   info->func.best_depth_get = _best_depth_get;
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_Software_X11 *in;
+
+   in = (Evas_Engine_Info_Software_X11 *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_Software_X11 *info;
+
+   info = (Evas_Engine_Info_Software_X11 *)in;
+   if (!e->engine.data.output)
+     e->engine.data.output =
+     _output_setup(e->output.w,
+                  e->output.h,
+                  info->info.rotation,
+                  info->info.display,
+                  info->info.drawable,
+                  info->info.visual,
+                  info->info.colormap,
+                  info->info.depth,
+                  info->info.debug,
+                  info->info.alloc_grayscale,
+                  info->info.alloc_colors_max,
+                  info->info.mask,
+                  info->info.shape_dither,
+                  info->info.destination_alpha);
+   else
+     {
+       int ponebuf = 0;
+       
+       re = e->engine.data.output;
+       ponebuf = re->ob->onebuf;
+       evas_software_x11_outbuf_free(re->ob);
+       re->ob = evas_software_x11_outbuf_setup_x(e->output.w,
+                                                 e->output.h,
+                                                 info->info.rotation,
+                                                 OUTBUF_DEPTH_INHERIT,
+                                                 info->info.display,
+                                                 info->info.drawable,
+                                                 info->info.visual,
+                                                 info->info.colormap,
+                                                 info->info.depth,
+                                                 info->info.alloc_grayscale,
+                                                 info->info.alloc_colors_max,
+                                                 info->info.mask,
+                                                 info->info.shape_dither,
+                                                 info->info.destination_alpha);
+       evas_software_x11_outbuf_debug_set(re->ob, info->info.debug);
+       re->ob->onebuf = ponebuf;
+     }
+   if (!e->engine.data.output) return;
+   if (!e->engine.data.context)
+     e->engine.data.context =
+     e->engine.func->context_new(e->engine.data.output);
+
+   re = e->engine.data.output;
+   evas_software_x11_outbuf_drawable_set(re->ob, info->info.drawable);
+   evas_software_x11_outbuf_mask_set(re->ob, info->info.mask);
+   evas_software_x11_outbuf_rotation_set(re->ob, info->info.rotation);
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   if (!data) return;
+
+   re = (Render_Engine *)data;
+   evas_software_x11_outbuf_free(re->ob);
+   evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_software_x11_outbuf_reconfigure(re->ob, w, h,
+                                  evas_software_x11_outbuf_get_rot(re->ob),
+                                  OUTBUF_DEPTH_INHERIT);
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   RGBA_Image *surface;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *)re->rects;
+     }
+   if (!re->cur_rect) return NULL;
+   rect = (Tilebuf_Rect *)re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   surface = evas_software_x11_outbuf_new_region_for_update
+     (re->ob, ux, uy, uw, uh, cx, cy, cw, ch);
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   return surface;
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_pipe_begin(surface);
+   evas_common_pipe_flush(surface);
+   evas_software_x11_outbuf_push_updated_region(re->ob, surface, x, y, w, h);
+   evas_software_x11_outbuf_free_region_for_update(re->ob, surface);
+   evas_common_cpu_end_opt();
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_software_x11_outbuf_flush(re->ob);
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_software_x11_outbuf_idle_flush(re->ob);
+}
+
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi = 
+{
+   EVAS_MODULE_API_VERSION, 
+     EVAS_MODULE_TYPE_ENGINE,
+     "software_x11",
+     "none"
+};
diff --git a/src/modules/engines/software_x11/evas_engine.h b/src/modules/engines/software_x11/evas_engine.h
new file mode 100644 (file)
index 0000000..ec49e97
--- /dev/null
@@ -0,0 +1,127 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/extensions/XShm.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+typedef struct _Outbuf                Outbuf;
+typedef struct _Outbuf_Region         Outbuf_Region;
+typedef struct _X_Output_Buffer       X_Output_Buffer;
+
+typedef enum   _Outbuf_Depth          Outbuf_Depth;
+
+enum _Outbuf_Depth
+{
+   OUTBUF_DEPTH_NONE,
+     OUTBUF_DEPTH_INHERIT,
+     OUTBUF_DEPTH_RGB_16BPP_565_565_DITHERED,
+     OUTBUF_DEPTH_RGB_16BPP_555_555_DITHERED,
+     OUTBUF_DEPTH_RGB_16BPP_444_444_DITHERED,
+     OUTBUF_DEPTH_RGB_16BPP_565_444_DITHERED,
+     OUTBUF_DEPTH_RGB_32BPP_888_8888,
+     OUTBUF_DEPTH_LAST
+};
+
+struct _Outbuf
+{
+   Outbuf_Depth    depth;
+   int             w, h;
+   int             rot;
+   int             onebuf;
+
+   struct {
+      Convert_Pal *pal;
+      struct {
+        Display       *disp;
+        Window         win;
+        Pixmap         mask;
+        Visual        *vis;
+        Colormap       cmap;
+        int            depth;
+        int            shm;
+        GC             gc;
+        GC             gcm;
+        unsigned char  swap : 1;
+        unsigned char  bit_swap : 1;
+      } x;
+      struct {
+        DATA32    r, g, b;
+      } mask;
+
+      /* 1 big buffer for updates - flush on idle_flush */
+      RGBA_Image  *onebuf;
+      Evas_List   *onebuf_regions;
+
+      /* a list of pending regions to write to the target */
+      Evas_List   *pending_writes;
+      /* a list of previous frame pending regions to write to the target */
+      Evas_List   *prev_pending_writes;
+
+      unsigned char mask_dither : 1;
+      unsigned char destination_alpha : 1;
+      unsigned char debug : 1;
+      unsigned char synced : 1;
+   } priv;
+};
+
+struct _Outbuf_Region
+{
+   X_Output_Buffer *xob, *mxob;
+   int x, y, w, h;
+};
+
+struct _X_Output_Buffer
+{
+   Display         *display;
+   XImage          *xim;
+   XShmSegmentInfo *shm_info;
+   Visual          *visual;
+   void            *data;
+   int              w, h, bpl;
+   int              psize;
+};
+
+/****/
+void             evas_software_x11_x_init                        (void);
+
+void             evas_software_x11_x_write_mask_line             (Outbuf *buf, X_Output_Buffer *xob, DATA32 *src, int w, int y);
+int              evas_software_x11_x_can_do_shm                  (Display *d);
+X_Output_Buffer *evas_software_x11_x_output_buffer_new           (Display *d, Visual *v, int depth, int w, int h, int try_shm, void *data);
+void             evas_software_x11_x_output_buffer_free          (X_Output_Buffer *xob, int sync);
+void             evas_software_x11_x_output_buffer_paste         (X_Output_Buffer *xob, Drawable d, GC gc, int x, int y, int sync);
+DATA8           *evas_software_x11_x_output_buffer_data          (X_Output_Buffer *xob, int *bytes_per_line_ret);
+int              evas_software_x11_x_output_buffer_depth         (X_Output_Buffer *xob);
+int              evas_software_x11_x_output_buffer_byte_order    (X_Output_Buffer *xob);
+int              evas_software_x11_x_output_buffer_bit_order     (X_Output_Buffer *xob);
+
+void             evas_software_x11_x_color_init                  (void);
+Convert_Pal     *evas_software_x11_x_color_allocate              (Display *disp, Colormap cmap, Visual *vis, Convert_Pal_Mode colors);
+void             evas_software_x11_x_color_deallocate            (Display *disp, Colormap cmap, Visual *vis, Convert_Pal *pal);
+
+void             evas_software_x11_outbuf_init                   (void);
+void             evas_software_x11_outbuf_free                   (Outbuf *buf);
+
+Outbuf          *evas_software_x11_outbuf_setup_x                (int w, int h, int rot, Outbuf_Depth depth, Display *disp, Drawable draw, Visual *vis, Colormap cmap, int x_depth, int grayscale, int max_colors, Pixmap mask, int shape_dither, int destination_alpha);
+
+RGBA_Image      *evas_software_x11_outbuf_new_region_for_update  (Outbuf *buf, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch);
+void             evas_software_x11_outbuf_free_region_for_update (Outbuf *buf, RGBA_Image *update);
+void             evas_software_x11_outbuf_flush                  (Outbuf *buf);
+void             evas_software_x11_outbuf_idle_flush             (Outbuf *buf);
+void             evas_software_x11_outbuf_push_updated_region    (Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h);
+void             evas_software_x11_outbuf_reconfigure            (Outbuf *buf, int w, int h, int rot, Outbuf_Depth depth);
+int              evas_software_x11_outbuf_get_width              (Outbuf *buf);
+int              evas_software_x11_outbuf_get_height             (Outbuf *buf);
+Outbuf_Depth     evas_software_x11_outbuf_get_depth              (Outbuf *buf);
+int              evas_software_x11_outbuf_get_rot                (Outbuf *buf);
+void             evas_software_x11_outbuf_drawable_set           (Outbuf *buf, Drawable draw);
+void             evas_software_x11_outbuf_mask_set               (Outbuf *buf, Pixmap mask);
+void             evas_software_x11_outbuf_rotation_set           (Outbuf *buf, int rot);
+
+void             evas_software_x11_outbuf_debug_set              (Outbuf *buf, int debug);
+void             evas_software_x11_outbuf_debug_show             (Outbuf *buf, Drawable draw, int x, int y, int w, int h);
+
+#endif
diff --git a/src/modules/engines/software_x11/evas_outbuf.c b/src/modules/engines/software_x11/evas_outbuf.c
new file mode 100644 (file)
index 0000000..1a3dc2e
--- /dev/null
@@ -0,0 +1,982 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+#include "evas_macros.h"
+#include <sys/time.h>
+#include <sys/utsname.h>
+
+static Evas_List *shmpool = NULL;
+static int shmsize = 0;
+static int shmmemlimit = 10 * 1024 * 1024;
+static int shmcountlimit = 32;
+static X_Output_Buffer *
+_find_xob(Display *d, Visual *v, int depth, int w, int h, int shm, void *data)
+{
+   Evas_List *l, *xl;
+   X_Output_Buffer *xob = NULL;
+   int fitness = 0x7fffffff;
+   int sz, lbytes, bpp;
+   
+//   return evas_software_x11_x_output_buffer_new(d, v, depth, w, h, shm, data);
+   if (!shm)
+     return evas_software_x11_x_output_buffer_new(d, v, depth, w, h, shm, data);
+   if (depth > 1)
+     {
+       bpp = depth / 8;
+       if (bpp == 3) bpp = 4;
+       lbytes = (((w * bpp) + 3) / 4) * 4;
+     }
+   else
+     lbytes = ((w + 31) / 32) * 4;
+   sz = lbytes * h;
+   for (l = shmpool; l; l = l->next)
+     {
+       X_Output_Buffer *xob2;
+       int szdif;
+       
+       xob2 = l->data;
+       if ((xob2->xim->depth != depth) || (xob2->visual != v) ||
+           (xob2->display != d))
+         continue;
+       szdif = xob2->psize - sz;
+       if (szdif < 0) continue;
+       if (szdif == 0)
+         {
+            xob = xob2;
+            xl = l;
+            goto have_xob;
+         }
+       if (szdif < fitness)
+         {
+            fitness = szdif;
+            xob = xob2;
+            xl = l;
+         }
+     }
+   if ((fitness > (100 * 100)) || (!xob))
+     return evas_software_x11_x_output_buffer_new(d, v, depth, w, h, shm, data);
+   
+   have_xob:
+   shmpool = evas_list_remove_list(shmpool, xl);
+   xob->w = w;
+   xob->h = h;
+   xob->bpl = lbytes;
+   xob->xim->width = xob->w;
+   xob->xim->height = xob->h;
+   xob->xim->bytes_per_line = xob->bpl;
+   shmsize -= xob->psize * (xob->xim->depth / 8);
+   return xob;
+}
+
+static void
+_unfind_xob(X_Output_Buffer *xob, int sync)
+{
+//   evas_software_x11_x_output_buffer_free(xob, sync); return;
+   if (xob->shm_info)
+     {
+       shmpool = evas_list_prepend(shmpool, xob);
+       shmsize += xob->psize * xob->xim->depth / 8;
+       while ((shmsize > (shmmemlimit)) ||
+              (evas_list_count(shmpool) > shmcountlimit))
+         {
+            Evas_List *xl;
+            
+            xl = evas_list_last(shmpool);
+            if (!xl)
+              {
+                 shmsize = 0;
+                 break;
+              }
+            xob = xl->data;
+            shmpool = evas_list_remove_list(shmpool, xl);
+            evas_software_x11_x_output_buffer_free(xob, sync);
+         }
+     }
+   else 
+     evas_software_x11_x_output_buffer_free(xob, sync);
+}
+
+static void
+_clear_xob(int sync)
+{
+   while (shmpool)
+     {
+       X_Output_Buffer *xob;
+       
+       xob = shmpool->data;
+       shmpool = evas_list_remove_list(shmpool, shmpool);
+       evas_software_x11_x_output_buffer_free(xob, sync);
+     }
+   shmsize = 0;
+}
+
+void
+evas_software_x11_outbuf_init(void)
+{
+}
+
+void
+evas_software_x11_outbuf_free(Outbuf *buf)
+{
+   while (buf->priv.pending_writes)
+     {
+       RGBA_Image *im;
+       Outbuf_Region *obr;
+       
+       im = buf->priv.pending_writes->data;
+       buf->priv.pending_writes = evas_list_remove_list(buf->priv.pending_writes, buf->priv.pending_writes);
+       obr = im->extended_info;
+       evas_cache_image_drop(&im->cache_entry);
+       if (obr->xob) _unfind_xob(obr->xob, 0);
+       if (obr->mxob) _unfind_xob(obr->mxob, 0);
+       free(obr);
+     }
+   evas_software_x11_outbuf_idle_flush(buf);
+   evas_software_x11_outbuf_flush(buf);
+   if (buf->priv.x.gc)
+      XFreeGC(buf->priv.x.disp, buf->priv.x.gc);
+   if (buf->priv.x.gcm)
+      XFreeGC(buf->priv.x.disp, buf->priv.x.gcm);
+   if (buf->priv.pal)
+      evas_software_x11_x_color_deallocate(buf->priv.x.disp, buf->priv.x.cmap,
+                                          buf->priv.x.vis, buf->priv.pal);
+   free(buf);
+   _clear_xob(0);
+}
+
+void
+evas_software_x11_outbuf_rotation_set(Outbuf *buf, int rot)
+{
+   buf->rot = rot;
+}
+
+Outbuf             *
+evas_software_x11_outbuf_setup_x(int w, int h, int rot, Outbuf_Depth depth,
+                                Display *disp, Drawable draw, Visual *vis,
+                                Colormap cmap, int x_depth,
+                                int grayscale, int max_colors, Pixmap mask,
+                                int shape_dither, int destination_alpha)
+{
+   Outbuf             *buf;
+
+   buf = calloc(1, sizeof(Outbuf));
+   if (!buf)
+      return NULL;
+
+   buf->w = w;
+   buf->h = h;
+   buf->depth = depth;
+   buf->rot = rot;
+
+   buf->priv.x.disp = disp;
+   buf->priv.x.vis = vis;
+   buf->priv.x.cmap = cmap;
+   buf->priv.x.depth = x_depth;
+
+   buf->priv.mask_dither = shape_dither;
+   buf->priv.destination_alpha = destination_alpha;
+
+   {
+      Gfx_Func_Convert    conv_func;
+      X_Output_Buffer    *xob;
+
+      buf->priv.x.shm = evas_software_x11_x_can_do_shm(buf->priv.x.disp);
+      xob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
+                                                 buf->priv.x.vis,
+                                                 buf->priv.x.depth,
+                                                 1, 1, buf->priv.x.shm, NULL);
+
+      conv_func = NULL;
+      if (xob)
+       {
+#ifdef WORDS_BIGENDIAN
+          if (evas_software_x11_x_output_buffer_byte_order(xob) == LSBFirst)
+            buf->priv.x.swap = 1;
+          if (evas_software_x11_x_output_buffer_bit_order(xob) == MSBFirst)
+            buf->priv.x.bit_swap = 1;
+#else
+          if (evas_software_x11_x_output_buffer_byte_order(xob) == MSBFirst)
+            buf->priv.x.swap = 1;
+          if (evas_software_x11_x_output_buffer_bit_order(xob) == MSBFirst)
+            buf->priv.x.bit_swap = 1;
+#endif
+          if (((vis->class == TrueColor) || (vis->class == DirectColor)) &&
+              (x_depth > 8))
+            {
+               buf->priv.mask.r = (DATA32) vis->red_mask;
+               buf->priv.mask.g = (DATA32) vis->green_mask;
+               buf->priv.mask.b = (DATA32) vis->blue_mask;
+               if (buf->priv.x.swap)
+                 {
+                    SWAP32(buf->priv.mask.r);
+                    SWAP32(buf->priv.mask.g);
+                    SWAP32(buf->priv.mask.b);
+                 }
+            }
+          else if ((vis->class == PseudoColor) ||
+                   (vis->class == StaticColor) ||
+                   (vis->class == GrayScale) ||
+                   (vis->class == StaticGray) ||
+                   (x_depth <= 8))
+            {
+               Convert_Pal_Mode    pm = PAL_MODE_RGB332;
+
+               if ((vis->class == GrayScale) || (vis->class == StaticGray))
+                  grayscale = 1;
+               if (grayscale)
+                 {
+                    if (max_colors >= 256)
+                       pm = PAL_MODE_GRAY256;
+                    else if (max_colors >= 64)
+                       pm = PAL_MODE_GRAY64;
+                    else if (max_colors >= 16)
+                       pm = PAL_MODE_GRAY16;
+                    else if (max_colors >= 4)
+                       pm = PAL_MODE_GRAY4;
+                    else
+                       pm = PAL_MODE_MONO;
+                 }
+               else
+                 {
+                    if (max_colors >= 256)
+                       pm = PAL_MODE_RGB332;
+                    else if (max_colors >= 216)
+                       pm = PAL_MODE_RGB666;
+                    else if (max_colors >= 128)
+                       pm = PAL_MODE_RGB232;
+                    else if (max_colors >= 64)
+                       pm = PAL_MODE_RGB222;
+                    else if (max_colors >= 32)
+                       pm = PAL_MODE_RGB221;
+                    else if (max_colors >= 16)
+                       pm = PAL_MODE_RGB121;
+                    else if (max_colors >= 8)
+                       pm = PAL_MODE_RGB111;
+                    else if (max_colors >= 4)
+                       pm = PAL_MODE_GRAY4;
+                    else
+                       pm = PAL_MODE_MONO;
+                 }
+               /* FIXME: only alloc once per display+cmap */
+               buf->priv.pal = evas_software_x11_x_color_allocate(disp, cmap, vis,
+                                                                  PAL_MODE_RGB666);
+               if (!buf->priv.pal)
+                 {
+                    free(buf);
+                    return NULL;
+                 }
+            }
+          if (buf->priv.pal)
+            {
+               if (buf->rot == 0 || buf->rot == 180)
+                 conv_func = evas_common_convert_func_get(0, buf->w, buf->h,
+                                                          evas_software_x11_x_output_buffer_depth
+                                                          (xob), buf->priv.mask.r,
+                                                          buf->priv.mask.g,
+                                                          buf->priv.mask.b,
+                                                          buf->priv.pal->colors,
+                                                          buf->rot);
+               else if (buf->rot == 90 || buf->rot == 270)
+                 conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
+                                                          evas_software_x11_x_output_buffer_depth
+                                                          (xob), buf->priv.mask.r,
+                                                          buf->priv.mask.g,
+                                                          buf->priv.mask.b,
+                                                          buf->priv.pal->colors,
+                                                          buf->rot);
+            }
+          else
+            {
+               if (buf->rot == 0 || buf->rot == 180)
+                 conv_func = evas_common_convert_func_get(0, buf->w, buf->h,
+                                                          evas_software_x11_x_output_buffer_depth
+                                                          (xob), buf->priv.mask.r,
+                                                          buf->priv.mask.g,
+                                               buf->priv.mask.b, PAL_MODE_NONE,
+                                                          buf->rot);
+               else if (buf->rot == 90 || buf->rot == 270)
+                 conv_func = evas_common_convert_func_get(0, buf->h, buf->w,
+                                                          evas_software_x11_x_output_buffer_depth
+                                                          (xob), buf->priv.mask.r,
+                                                          buf->priv.mask.g,
+                                                          buf->priv.mask.b, PAL_MODE_NONE,
+                                                          buf->rot);
+            }
+          evas_software_x11_x_output_buffer_free(xob, 1);
+          if (!conv_func)
+            {
+               printf(".[ Evas Error ].\n"
+                      " {\n"
+                      "  At depth         %i:\n"
+                      "  RGB format mask: %08x, %08x, %08x\n"
+                      "  Palette mode:    %i\n"
+                      "  Not supported by compiled in converters!\n"
+                      " }\n",
+                      buf->priv.x.depth,
+                      buf->priv.mask.r,
+                      buf->priv.mask.g,
+                      buf->priv.mask.b, buf->priv.pal->colors);
+            }
+       }
+      evas_software_x11_outbuf_drawable_set(buf, draw);
+      evas_software_x11_outbuf_mask_set(buf, mask);
+   }
+   return buf;
+}
+
+RGBA_Image         *
+evas_software_x11_outbuf_new_region_for_update(Outbuf *buf, int x, int y, int w, int h, int *cx, int *cy, int *cw, int *ch)
+{
+   RGBA_Image         *im;
+   Outbuf_Region      *obr;
+   int                 bpl = 0;
+   int                 use_shm = 1;
+   int                 alpha;
+
+   if ((buf->onebuf) && (buf->priv.x.shm))
+     {
+       Evas_Rectangle *rect;
+       
+       rect = malloc(sizeof(Evas_Rectangle));
+       RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, buf->w, buf->h);
+       rect->x = x;
+       rect->y = y;
+       rect->w = w;
+       rect->h = h;
+       buf->priv.onebuf_regions = evas_list_append(buf->priv.onebuf_regions, rect);
+       if (buf->priv.onebuf)
+         {
+            *cx = x;
+            *cy = y;
+            *cw = w;
+            *ch = h;
+            if (!buf->priv.synced)
+              {
+                 XSync(buf->priv.x.disp, False);
+                 buf->priv.synced = 1;
+              }
+            if ((buf->priv.x.mask) || (buf->priv.destination_alpha))
+              {
+                 int yy;
+                 
+                 im = buf->priv.onebuf;
+                 for (yy = y; yy < (y + h); yy++)
+                   {
+                      memset(im->image.data + (im->cache_entry.w * yy) + x,
+                             0, w * sizeof(DATA32));
+                   }
+              }
+            return buf->priv.onebuf;
+         }
+       obr = calloc(1, sizeof(Outbuf_Region));
+       obr->x = 0;
+       obr->y = 0;
+       obr->w = buf->w;
+       obr->h = buf->h;
+       *cx = x;
+       *cy = y;
+       *cw = w;
+       *ch = h;
+
+        alpha = ((buf->priv.x.mask) || (buf->priv.destination_alpha));
+
+       use_shm = buf->priv.x.shm;
+       if ((buf->rot == 0) &&
+           (buf->priv.mask.r == 0xff0000) &&
+           (buf->priv.mask.g == 0x00ff00) &&
+           (buf->priv.mask.b == 0x0000ff))
+         {
+            obr->xob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
+                                                             buf->priv.x.vis,
+                                                             buf->priv.x.depth,
+                                                             buf->w, buf->h,
+                                                             use_shm,
+                                                             NULL);
+             im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
+                                                       buf->w, buf->h,
+                                                       (DATA32 *) evas_software_x11_x_output_buffer_data(obr->xob, &bpl),
+                                                       alpha, EVAS_COLORSPACE_ARGB8888);
+            im->extended_info = obr;
+            if (buf->priv.x.mask)
+              obr->mxob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
+                                                                buf->priv.x.vis,
+                                                                1, 
+                                                                buf->w, buf->h,
+                                                                use_shm,
+                                                                NULL);
+         }
+       else
+         {
+            im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+             im->cache_entry.flags.alpha |= alpha ? 1 : 0;
+             evas_cache_image_surface_alloc(&im->cache_entry, buf->w, buf->h);
+            im->extended_info = obr;
+            if ((buf->rot == 0) || (buf->rot == 180))
+              obr->xob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
+                                                               buf->priv.x.vis,
+                                                               buf->priv.x.depth,
+                                                               buf->w, buf->h,
+                                                               use_shm,
+                                                               NULL);
+            else if ((buf->rot == 90) || (buf->rot == 270))
+              obr->xob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
+                                                               buf->priv.x.vis,
+                                                               buf->priv.x.depth,
+                                                               buf->h, buf->w,
+                                                               use_shm,
+                                                               NULL);
+            if (buf->priv.x.mask)
+              obr->mxob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
+                                                                buf->priv.x.vis,
+                                                                1, buf->w, buf->h,
+                                                                use_shm,
+                                                                NULL);
+         }
+       if (alpha)
+          /* FIXME: faster memset! */
+          memset(im->image.data, 0, w * h * sizeof(DATA32));
+
+        buf->priv.onebuf = im;
+       return im;
+     }
+
+   obr = calloc(1, sizeof(Outbuf_Region));
+   obr->x = x;
+   obr->y = y;
+   obr->w = w;
+   obr->h = h;
+   *cx = 0;
+   *cy = 0;
+   *cw = w;
+   *ch = h;
+
+   use_shm = buf->priv.x.shm;
+   /* FIXME: magic - i found if shm regions are smaller than 200x200 its
+    * faster to use ximages over unix sockets - trial and error
+    */
+//   use_shm = 0; /* 630 -> 1006 fps */
+//   if ((w * h) < (200 * 200)) use_shm = 0; /* 630 -> 962 fps */
+
+   alpha = ((buf->priv.x.mask) || (buf->priv.destination_alpha));
+
+   if ((buf->rot == 0) &&
+       (buf->priv.mask.r == 0xff0000) &&
+       (buf->priv.mask.g == 0x00ff00) &&
+       (buf->priv.mask.b == 0x0000ff))
+     {
+       obr->xob = _find_xob(buf->priv.x.disp,
+                            buf->priv.x.vis,
+                            buf->priv.x.depth,
+                            w, h,
+                            use_shm,
+                            NULL);
+/*      obr->xob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp, */
+/*                                                      buf->priv.x.vis, */
+/*                                                      buf->priv.x.depth, */
+/*                                                      w, h, */
+/*                                                      use_shm, */
+/*                                                      NULL); */
+        im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
+                                                  w, h,
+                                                  (DATA32 *) evas_software_x11_x_output_buffer_data(obr->xob, &bpl),
+                                                  alpha, EVAS_COLORSPACE_ARGB8888);
+       im->extended_info = obr;
+       if (buf->priv.x.mask)
+         obr->mxob = _find_xob(buf->priv.x.disp,
+                               buf->priv.x.vis,
+                               1, w, h,
+                               use_shm,
+                               NULL);
+/*       
+         obr->mxob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
+                                                           buf->priv.x.vis,
+                                                           1, w, h,
+                                                           use_shm,
+                                                           NULL);
+ */
+     }
+   else
+     {
+        im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+        im->cache_entry.flags.alpha |= alpha ? 1 : 0;
+        evas_cache_image_surface_alloc(&im->cache_entry, w, h);
+       im->extended_info = obr;
+       if ((buf->rot == 0) || (buf->rot == 180))
+         obr->xob = _find_xob(buf->priv.x.disp,
+                              buf->priv.x.vis,
+                              buf->priv.x.depth,
+                              w, h,
+                              use_shm,
+                              NULL);
+/*     
+         obr->xob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
+                                                          buf->priv.x.vis,
+                                                          buf->priv.x.depth,
+                                                          w, h,
+                                                          use_shm,
+                                                          NULL);
+ */
+       else if ((buf->rot == 90) || (buf->rot == 270))
+         obr->xob = _find_xob(buf->priv.x.disp,
+                              buf->priv.x.vis,
+                              buf->priv.x.depth,
+                              h, w,
+                              use_shm,
+                              NULL);
+/*     
+         obr->xob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
+                                                          buf->priv.x.vis,
+                                                          buf->priv.x.depth,
+                                                          h, w,
+                                                          use_shm,
+                                                          NULL);
+ */
+       if (buf->priv.x.mask)
+         obr->mxob = _find_xob(buf->priv.x.disp,
+                               buf->priv.x.vis,
+                               1, w, h,
+                               use_shm,
+                               NULL);
+/*     
+         obr->mxob = evas_software_x11_x_output_buffer_new(buf->priv.x.disp,
+                                                           buf->priv.x.vis,
+                                                           1, w, h,
+                                                           use_shm,
+                                                           NULL);
+ */
+     }
+   if ((buf->priv.x.mask) || (buf->priv.destination_alpha))
+     /* FIXME: faster memset! */
+     memset(im->image.data, 0, w * h * sizeof(DATA32));
+
+   buf->priv.pending_writes = evas_list_append(buf->priv.pending_writes, im);
+   return im;
+}
+
+void
+evas_software_x11_outbuf_free_region_for_update(Outbuf *buf, RGBA_Image *update)
+{
+   /* no need to do anything - they are cleaned up on flush */
+}
+
+void
+evas_software_x11_outbuf_flush(Outbuf *buf)
+{
+   Evas_List *l;
+
+   if ((buf->priv.onebuf) && (buf->priv.onebuf_regions))
+     {
+       RGBA_Image *im;
+       Outbuf_Region *obr;
+       Region tmpr;
+       
+       im = buf->priv.onebuf;
+       obr = im->extended_info;
+       tmpr = XCreateRegion();
+       while (buf->priv.onebuf_regions)
+         {
+            Evas_Rectangle *rect;
+            XRectangle xr;
+            
+            rect = buf->priv.onebuf_regions->data;
+            buf->priv.onebuf_regions = evas_list_remove_list(buf->priv.onebuf_regions, buf->priv.onebuf_regions);
+            xr.x = rect->x;
+            xr.y = rect->y;
+            xr.width = rect->w;
+            xr.height = rect->h;
+            XUnionRectWithRegion(&xr, tmpr, tmpr);
+            if (buf->priv.debug)
+              evas_software_x11_outbuf_debug_show(buf, buf->priv.x.win,
+                                                  rect->x, rect->y, rect->w, rect->h);
+            free(rect);
+         }
+       XSetRegion(buf->priv.x.disp, buf->priv.x.gc, tmpr);
+       evas_software_x11_x_output_buffer_paste(obr->xob, buf->priv.x.win,
+                                               buf->priv.x.gc,
+                                               0, 0, 0);
+       if (obr->mxob)
+         {
+            XSetRegion(buf->priv.x.disp, buf->priv.x.gcm, tmpr);
+            evas_software_x11_x_output_buffer_paste(obr->mxob,
+                                                    buf->priv.x.mask,
+                                                    buf->priv.x.gcm,
+                                                    0, 0, 0);
+         }
+       XDestroyRegion(tmpr);
+       buf->priv.synced = 0;
+     }
+   else
+     {
+#if 1  
+       XSync(buf->priv.x.disp, False);
+       for (l = buf->priv.pending_writes; l; l = l->next)
+         {
+            RGBA_Image *im;
+            Outbuf_Region *obr;
+            
+            im = l->data;
+            obr = im->extended_info;
+            if (buf->priv.debug)
+              evas_software_x11_outbuf_debug_show(buf, buf->priv.x.win,
+                                                  obr->x, obr->y, obr->w, obr->h);
+            evas_software_x11_x_output_buffer_paste(obr->xob, buf->priv.x.win,
+                                                    buf->priv.x.gc,
+                                                    obr->x, obr->y, 0);
+            if (obr->mxob)
+              evas_software_x11_x_output_buffer_paste(obr->mxob,
+                                                      buf->priv.x.mask,
+                                                      buf->priv.x.gcm,
+                                                      obr->x, obr->y, 0);
+         }
+       while (buf->priv.prev_pending_writes)
+         {
+            RGBA_Image *im;
+            Outbuf_Region *obr;
+            
+            im = buf->priv.prev_pending_writes->data;
+            buf->priv.prev_pending_writes = 
+              evas_list_remove_list(buf->priv.prev_pending_writes, 
+                                    buf->priv.prev_pending_writes);
+            obr = im->extended_info;
+            evas_cache_image_drop(&im->cache_entry);
+            if (obr->xob) _unfind_xob(obr->xob, 0);
+            if (obr->mxob) _unfind_xob(obr->mxob, 0);
+/*          
+            if (obr->xob) evas_software_x11_x_output_buffer_free(obr->xob, 0);
+            if (obr->mxob) evas_software_x11_x_output_buffer_free(obr->mxob, 0);
+ */
+            free(obr);
+         }
+       buf->priv.prev_pending_writes = buf->priv.pending_writes;
+       buf->priv.pending_writes = NULL;
+       XFlush(buf->priv.x.disp);
+#else  
+       /* XX async push - disable */
+       /*
+       for (l = buf->priv.pending_writes; l; l = l->next)
+         {
+            RGBA_Image *im;
+            Outbuf_Region *obr;
+            
+            im = l->data;
+            obr = im->extended_info;
+            if (buf->priv.debug)
+              evas_software_x11_outbuf_debug_show(buf, buf->priv.x.win,
+                                                  obr->x, obr->y, obr->w, obr->h);
+            evas_software_x11_x_output_buffer_paste(obr->xob, buf->priv.x.win,
+                                                    buf->priv.x.gc,
+                                                    obr->x, obr->y, 0);
+            if (obr->mxob)
+              evas_software_x11_x_output_buffer_paste(obr->mxob,
+                                                      buf->priv.x.mask,
+                                                      buf->priv.x.gcm,
+                                                      obr->x, obr->y, 0);
+         }
+        */
+       XSync(buf->priv.x.disp, False);
+       
+       while (buf->priv.pending_writes)
+         {
+            RGBA_Image *im;
+            Outbuf_Region *obr;
+            
+            im = evas_list_data(buf->priv.pending_writes);
+            buf->priv.pending_writes = evas_list_remove_list(buf->priv.pending_writes, buf->priv.pending_writes);
+            obr = im->extended_info;
+            evas_cache_image_drop(&im->cache_entry);
+            if (obr->xob) _unfind_xob(obr->xob, 0);
+            if (obr->mxob) _unfind_xob(obr->mxob, 0);
+/*          
+            if (obr->xob) evas_software_x11_x_output_buffer_free(obr->xob, 0);
+            if (obr->mxob) evas_software_x11_x_output_buffer_free(obr->mxob, 0);
+ */
+            free(obr);
+            evas_cache_image_drop(&im->cache_entry);
+         }
+#endif 
+     }
+   evas_common_cpu_end_opt();
+}
+
+void
+evas_software_x11_outbuf_idle_flush(Outbuf *buf)
+{
+   if (buf->priv.onebuf)
+     {
+        RGBA_Image *im;
+       Outbuf_Region *obr;
+
+       im = buf->priv.onebuf;
+       buf->priv.onebuf = NULL;
+       obr = im->extended_info;
+       if (obr->xob) evas_software_x11_x_output_buffer_free(obr->xob, 0);
+       if (obr->mxob) evas_software_x11_x_output_buffer_free(obr->mxob, 0);
+       free(obr);
+       evas_cache_image_drop(&im->cache_entry);
+     }
+   else
+     {
+       if (buf->priv.prev_pending_writes) XSync(buf->priv.x.disp, False);
+       while (buf->priv.prev_pending_writes)
+         {
+            RGBA_Image *im;
+            Outbuf_Region *obr;
+            
+            im = buf->priv.prev_pending_writes->data;
+            buf->priv.prev_pending_writes = 
+              evas_list_remove_list(buf->priv.prev_pending_writes, 
+                                    buf->priv.prev_pending_writes);
+            obr = im->extended_info;
+            evas_cache_image_drop(&im->cache_entry);
+            if (obr->xob) _unfind_xob(obr->xob, 0);
+            if (obr->mxob) _unfind_xob(obr->mxob, 0);
+            free(obr);
+         }
+       _clear_xob(0);
+     }
+}
+
+void
+evas_software_x11_outbuf_push_updated_region(Outbuf *buf, RGBA_Image *update, int x, int y, int w, int h)
+{
+   Gfx_Func_Convert    conv_func = NULL;
+   Outbuf_Region      *obr;
+   DATA32             *src_data;
+   void               *data;
+   int                 bpl = 0, yy;
+
+   obr = update->extended_info;
+   if (buf->priv.pal)
+     {
+       if ((buf->rot == 0) || (buf->rot == 180))
+         conv_func = evas_common_convert_func_get(0, w, h,
+                                                  evas_software_x11_x_output_buffer_depth
+                                                  (obr->xob), buf->priv.mask.r,
+                                                  buf->priv.mask.g, buf->priv.mask.b,
+                                                  buf->priv.pal->colors, buf->rot);
+       else if ((buf->rot == 90) || (buf->rot == 270))
+         conv_func = evas_common_convert_func_get(0, h, w,
+                                                  evas_software_x11_x_output_buffer_depth
+                                                  (obr->xob), buf->priv.mask.r,
+                                                  buf->priv.mask.g, buf->priv.mask.b,
+                                                  buf->priv.pal->colors, buf->rot);
+     }
+   else
+     {
+       if ((buf->rot == 0) || (buf->rot == 180))
+         conv_func = evas_common_convert_func_get(0, w, h,
+                                                  evas_software_x11_x_output_buffer_depth
+                                                  (obr->xob), buf->priv.mask.r,
+                                                  buf->priv.mask.g, buf->priv.mask.b,
+                                                  PAL_MODE_NONE, buf->rot);
+       else if ((buf->rot == 90) || (buf->rot == 270))
+         conv_func = evas_common_convert_func_get(0, h, w,
+                                                  evas_software_x11_x_output_buffer_depth
+                                                  (obr->xob), buf->priv.mask.r,
+                                                  buf->priv.mask.g, buf->priv.mask.b,
+                                                  PAL_MODE_NONE, buf->rot);
+     }
+   if (!conv_func) return;
+
+   data = evas_software_x11_x_output_buffer_data(obr->xob, &bpl);
+   src_data = update->image.data;
+   if (buf->rot == 0)
+     {
+       obr->x = x;
+       obr->y = y;
+     }
+   else if (buf->rot == 90)
+     {
+       obr->x = y;
+       obr->y = buf->w - x - w;
+     }
+   else if (buf->rot == 180)
+     {
+       obr->x = buf->w - x - w;
+       obr->y = buf->h - y - h;
+     }
+   else if (buf->rot == 270)
+     {
+       obr->x = buf->h - y - h;
+       obr->y = x;
+     }
+   if ((buf->rot == 0) || (buf->rot == 180))
+     {
+       obr->w = w;
+       obr->h = h;
+     }
+   else if ((buf->rot == 90) || (buf->rot == 270))
+     {
+       obr->w = h;
+       obr->h = w;
+     }
+   if (buf->priv.pal)
+     {
+       if (data != src_data)
+         conv_func(src_data, data,
+                   0,
+                   bpl /
+                   ((evas_software_x11_x_output_buffer_depth(obr->xob) /
+                     8)) - obr->w, obr->w, obr->h, x, y,
+                   buf->priv.pal->lookup);
+     }
+   else
+     {
+       if (data != src_data)
+         conv_func(src_data, data,
+                   0,
+                   bpl /
+                   ((evas_software_x11_x_output_buffer_depth(obr->xob) /
+                     8)) - obr->w, obr->w, obr->h, x, y, NULL);
+     }
+#if 1
+#else   
+   /* XX async push */
+   if (!((buf->priv.onebuf) && (buf->priv.onebuf_regions)))
+     {     
+       if (buf->priv.debug)
+         evas_software_x11_outbuf_debug_show(buf, buf->priv.x.win,
+                                             obr->x, obr->y, obr->w, obr->h);
+       evas_software_x11_x_output_buffer_paste(obr->xob, buf->priv.x.win,
+                                               buf->priv.x.gc,
+                                               obr->x, obr->y, 0);
+     }
+#endif   
+   if (obr->mxob)
+     {
+       for (yy = 0; yy < obr->h; yy++)
+         evas_software_x11_x_write_mask_line(buf, obr->mxob,
+                                             src_data +
+                                             (yy * obr->w), obr->w, yy);
+#if 1
+#else   
+       /* XX async push */
+       if (!((buf->priv.onebuf) && (buf->priv.onebuf_regions)))
+         evas_software_x11_x_output_buffer_paste(obr->mxob,
+                                                 buf->priv.x.mask,
+                                                 buf->priv.x.gcm,
+                                                 obr->x, obr->y, 0);
+#endif 
+     }
+#if 1
+#else
+   XFlush(buf->priv.x.disp);
+#endif   
+}
+
+void
+evas_software_x11_outbuf_reconfigure(Outbuf * buf, int w, int h, int rot,
+                                    Outbuf_Depth depth)
+{
+   if ((w == buf->w) &&
+       (h == buf->h) &&
+       (rot == buf->rot) &&
+       (depth == buf->depth)) return;
+   buf->w = w;
+   buf->h = h;
+   buf->rot = rot;
+   evas_software_x11_outbuf_idle_flush(buf);
+}
+
+int
+evas_software_x11_outbuf_get_width(Outbuf * buf)
+{
+   return buf->w;
+}
+
+int
+evas_software_x11_outbuf_get_height(Outbuf * buf)
+{
+   return buf->h;
+}
+
+Outbuf_Depth
+evas_software_x11_outbuf_get_depth(Outbuf * buf)
+{
+   return buf->depth;
+}
+
+int
+evas_software_x11_outbuf_get_rot(Outbuf * buf)
+{
+   return buf->rot;
+}
+
+void
+evas_software_x11_outbuf_drawable_set(Outbuf * buf, Drawable draw)
+{
+   XGCValues           gcv;
+
+   if (buf->priv.x.win == draw) return;
+   if (buf->priv.x.gc)
+     {
+       XFreeGC(buf->priv.x.disp, buf->priv.x.gc);
+       buf->priv.x.gc = NULL;
+     }
+   buf->priv.x.win = draw;
+   buf->priv.x.gc = XCreateGC(buf->priv.x.disp, buf->priv.x.win, 0, &gcv);
+}
+
+void
+evas_software_x11_outbuf_mask_set(Outbuf * buf, Pixmap mask)
+{
+   XGCValues           gcv;
+
+   if (buf->priv.x.mask == mask) return;
+   if (buf->priv.x.gcm)
+     {
+       XFreeGC(buf->priv.x.disp, buf->priv.x.gcm);
+       buf->priv.x.gcm = NULL;
+     }
+   buf->priv.x.mask = mask;
+   if (buf->priv.x.mask)
+     buf->priv.x.gcm = XCreateGC(buf->priv.x.disp, buf->priv.x.mask, 0, &gcv);
+}
+
+void
+evas_software_x11_outbuf_debug_set(Outbuf * buf, int debug)
+{
+   buf->priv.debug = debug;
+}
+
+void
+evas_software_x11_outbuf_debug_show(Outbuf * buf, Drawable draw, int x, int y, int w,
+                              int h)
+{
+   int                 i;
+   int                 screen_num = 0;
+
+     {
+       int                 wx, wy;
+       unsigned int        ww, wh, bd, dp;
+       Window              wdum, root;
+       XWindowAttributes   wattr;
+
+       XGetGeometry(buf->priv.x.disp, draw, &root, &wx, &wy, &ww, &wh, &bd, &dp);
+       XGetGeometry(buf->priv.x.disp, root, &wdum, &wx, &wy, &ww, &wh, &bd, &dp);
+       XGetWindowAttributes(buf->priv.x.disp, root, &wattr);
+       screen_num = XScreenNumberOfScreen(wattr.screen);
+     }
+   for (i = 0; i < 20; i++)
+     {
+//     XImage             *xim;
+
+       XSetForeground(buf->priv.x.disp, buf->priv.x.gc,
+                      BlackPixel(buf->priv.x.disp, screen_num));
+       XFillRectangle(buf->priv.x.disp, draw, buf->priv.x.gc, x, y, w, h);
+       XSync(buf->priv.x.disp, False);
+//     xim =
+//       XGetImage(buf->priv.x.disp, draw, x, y, w, h, 0xffffffff, ZPixmap);
+//     if (xim)
+//       XDestroyImage(xim);
+       XSync(buf->priv.x.disp, False);
+       XSetForeground(buf->priv.x.disp, buf->priv.x.gc,
+                      WhitePixel(buf->priv.x.disp, screen_num));
+       XFillRectangle(buf->priv.x.disp, draw, buf->priv.x.gc, x, y, w, h);
+       XSync(buf->priv.x.disp, False);
+//     xim =
+//       XGetImage(buf->priv.x.disp, draw, x, y, w, h, 0xffffffff, ZPixmap);
+//     if (xim)
+//       XDestroyImage(xim);
+       XSync(buf->priv.x.disp, False);
+     }
+}
diff --git a/src/modules/engines/software_x11/evas_x_buffer.c b/src/modules/engines/software_x11/evas_x_buffer.c
new file mode 100644 (file)
index 0000000..3597469
--- /dev/null
@@ -0,0 +1,255 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+static int _x_err = 0;
+
+void
+evas_software_x11_x_write_mask_line(Outbuf *buf, X_Output_Buffer *xob, DATA32 *src, int w, int y)
+{
+   int x;
+   DATA32 *src_ptr;
+   DATA8 *dst_ptr;
+   int bpl = 0;
+
+   src_ptr = src;
+   dst_ptr = evas_software_x11_x_output_buffer_data(xob, &bpl);
+   dst_ptr = dst_ptr + (bpl * y);
+   w -= 7;
+   if (buf->priv.x.bit_swap)
+     {
+       for (x = 0; x < w; x += 8)
+         {
+            *dst_ptr =
+              ((A_VAL(&(src_ptr[0])) >> 7) << 7) |
+              ((A_VAL(&(src_ptr[1])) >> 7) << 6) |
+              ((A_VAL(&(src_ptr[2])) >> 7) << 5) |
+              ((A_VAL(&(src_ptr[3])) >> 7) << 4) |
+              ((A_VAL(&(src_ptr[4])) >> 7) << 3) |
+              ((A_VAL(&(src_ptr[5])) >> 7) << 2) |
+              ((A_VAL(&(src_ptr[6])) >> 7) << 1) |
+              ((A_VAL(&(src_ptr[7])) >> 7) << 0);
+            src_ptr += 8;
+            dst_ptr++;
+         }
+     }
+   else
+     {
+       for (x = 0; x < w; x += 8)
+         {
+            *dst_ptr =
+              ((A_VAL(&(src_ptr[0])) >> 7) << 0) |
+              ((A_VAL(&(src_ptr[1])) >> 7) << 1) |
+              ((A_VAL(&(src_ptr[2])) >> 7) << 2) |
+              ((A_VAL(&(src_ptr[3])) >> 7) << 3) |
+              ((A_VAL(&(src_ptr[4])) >> 7) << 4) |
+              ((A_VAL(&(src_ptr[5])) >> 7) << 5) |
+              ((A_VAL(&(src_ptr[6])) >> 7) << 6) |
+              ((A_VAL(&(src_ptr[7])) >> 7) << 7);
+            src_ptr += 8;
+            dst_ptr++;
+         }
+     }
+   w += 7;
+   for (; x < w; x ++)
+     {
+       XPutPixel(xob->xim, x, y, A_VAL(src_ptr) >> 7);
+       src_ptr++;
+     }
+}
+
+int
+evas_software_x11_x_can_do_shm(Display *d)
+{
+   static Display *cached_d = NULL;
+   static int cached_result = 0;
+   
+   if (d == cached_d) return cached_result;
+   cached_d = d;
+   if (XShmQueryExtension(d))
+     {
+       X_Output_Buffer *xob;
+
+       xob = evas_software_x11_x_output_buffer_new
+         (d, DefaultVisual(d, DefaultScreen(d)),
+          DefaultDepth(d, DefaultScreen(d)), 16, 16, 2, NULL);
+       if (!xob)
+         {
+            cached_result = 0;
+            return 0;
+         }
+       evas_software_x11_x_output_buffer_free(xob, 1);
+       cached_result = 1;
+       return 1;
+     }
+   cached_result = 0;
+   return 0;
+}
+
+static void
+x_output_tmp_x_err(Display * d, XErrorEvent * ev)
+{
+   _x_err = 1;
+   return;
+}
+
+//static int creates = 0;
+
+X_Output_Buffer *
+evas_software_x11_x_output_buffer_new(Display *d, Visual *v, int depth, int w, int h, int try_shm, void *data)
+{
+   X_Output_Buffer *xob;
+
+   xob = calloc(1, sizeof(X_Output_Buffer));
+   if (!xob) return NULL;
+
+   xob->display = d;
+   xob->visual = v;
+   xob->xim = NULL;
+   xob->shm_info = NULL;
+   xob->w = w;
+   xob->h = h;
+
+   if (try_shm > 0)
+     {
+       xob->shm_info = malloc(sizeof(XShmSegmentInfo));
+       if (xob->shm_info)
+         {
+            xob->xim = XShmCreateImage(d, v, depth, ZPixmap, NULL,
+                                       xob->shm_info, w, h);
+            if (xob->xim)
+              {
+                 xob->shm_info->shmid = shmget(IPC_PRIVATE,
+                                               xob->xim->bytes_per_line *
+                                               xob->xim->height,
+                                               IPC_CREAT | 0777);
+                 if (xob->shm_info->shmid >= 0)
+                   {
+                      xob->shm_info->readOnly = False;
+                      xob->shm_info->shmaddr = xob->xim->data =
+                        shmat(xob->shm_info->shmid, 0, 0);
+                      if (xob->shm_info->shmaddr != NULL)
+                        {
+                           XErrorHandler ph;
+
+                           XSync(d, False);
+                           _x_err = 0;
+                           ph = XSetErrorHandler((XErrorHandler)
+                                                 x_output_tmp_x_err);
+                           XShmAttach(d, xob->shm_info);
+                           XSync(d, False);
+                           XSetErrorHandler((XErrorHandler)ph);
+                           if (!_x_err)
+                             {
+//                              printf("SHM++ ID=%i -> %i bytes [%i creates]\n",
+//                                     xob->shm_info->shmid,
+//                                     xob->xim->bytes_per_line * xob->xim->height,
+//                                     creates);
+//                              creates++;
+                                xob->bpl = xob->xim->bytes_per_line;
+                                xob->psize = xob->bpl * xob->h;
+                                return xob;
+                             }
+                        }
+                      shmdt(xob->shm_info->shmaddr);
+                      shmctl(xob->shm_info->shmid, IPC_RMID, 0);
+                   }
+                 if (xob->xim) XDestroyImage(xob->xim);
+                 xob->xim = NULL;
+              }
+            if (xob->shm_info) free(xob->shm_info);
+            xob->shm_info = NULL;
+         }
+     }
+
+   if (try_shm > 1) return NULL;
+
+   xob->xim = XCreateImage(d, v, depth, ZPixmap, 0, data, w, h, 32, 0);
+   if (!xob->xim)
+     {
+       free(xob);
+       return NULL;
+     }
+
+   xob->data = data;
+
+   if (!xob->xim->data)
+     {
+       xob->xim->data = malloc(xob->xim->bytes_per_line * xob->xim->height);
+       if (!xob->xim->data)
+         {
+            XDestroyImage(xob->xim);
+            free(xob);
+            return NULL;
+         }
+     }
+   xob->bpl = xob->xim->bytes_per_line;
+   xob->psize = xob->bpl * xob->h;
+   return xob;
+}
+
+void
+evas_software_x11_x_output_buffer_free(X_Output_Buffer *xob, int sync)
+{
+   if (xob->shm_info)
+     {
+//     printf("SHM-- ID=%i -> %i bytes, [sync=%i]\n",
+//            xob->shm_info->shmid,
+//            xob->xim->bytes_per_line * xob->xim->height,
+//            sync);
+       if (sync) XSync(xob->display, False);
+       XShmDetach(xob->display, xob->shm_info);
+       XDestroyImage(xob->xim);
+       shmdt(xob->shm_info->shmaddr);
+       shmctl(xob->shm_info->shmid, IPC_RMID, 0);
+       free(xob->shm_info);
+     }
+   else
+     {
+       if (xob->data) xob->xim->data = NULL;
+       XDestroyImage(xob->xim);
+     }
+   free(xob);
+}
+
+void
+evas_software_x11_x_output_buffer_paste(X_Output_Buffer *xob, Drawable d, GC gc, int x, int y, int sync)
+{
+   if (xob->shm_info)
+     {
+//     printf("shm\n");
+       XShmPutImage(xob->display, d, gc, xob->xim, 0, 0, x, y,
+                    xob->w, xob->h, False);
+       if (sync) XSync(xob->display, False);
+     }
+   else
+     {
+//     printf("NO! shm\n");
+       XPutImage(xob->display, d, gc, xob->xim, 0, 0, x, y,
+                 xob->w, xob->h);
+     }
+}
+
+DATA8 *
+evas_software_x11_x_output_buffer_data(X_Output_Buffer *xob, int *bytes_per_line_ret)
+{
+   if (bytes_per_line_ret) *bytes_per_line_ret = xob->xim->bytes_per_line;
+   return xob->xim->data;
+}
+
+int
+evas_software_x11_x_output_buffer_depth(X_Output_Buffer *xob)
+{
+   return xob->xim->bits_per_pixel;
+}
+
+int
+evas_software_x11_x_output_buffer_byte_order(X_Output_Buffer *xob)
+{
+   return xob->xim->byte_order;
+}
+
+int
+evas_software_x11_x_output_buffer_bit_order(X_Output_Buffer *xob)
+{
+   return xob->xim->bitmap_bit_order;
+}
diff --git a/src/modules/engines/software_x11/evas_x_color.c b/src/modules/engines/software_x11/evas_x_color.c
new file mode 100644 (file)
index 0000000..fdc748b
--- /dev/null
@@ -0,0 +1,362 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+typedef struct _Convert_Pal_Priv Convert_Pal_Priv;
+
+struct _Convert_Pal_Priv
+{
+   Display *disp;
+   Colormap cmap;
+   Visual  *vis;
+};
+
+typedef DATA8 * (*X_Func_Alloc_Colors) (Display *d, Colormap cmap, Visual *v);
+
+static X_Func_Alloc_Colors x_color_alloc[PAL_MODE_LAST + 1];
+static int                 x_color_count[PAL_MODE_LAST + 1];
+static Evas_List          *palettes = NULL;
+
+static DATA8 * x_color_alloc_rgb(int nr, int ng, int nb, Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_gray(int ng, Display *d, Colormap cmap, Visual *v);
+
+static DATA8 * x_color_alloc_rgb_332(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_rgb_666(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_rgb_232(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_rgb_222(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_rgb_221(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_rgb_121(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_rgb_111(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_gray_256(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_gray_64(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_gray_16(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_gray_4(Display *d, Colormap cmap, Visual *v);
+static DATA8 * x_color_alloc_mono(Display *d, Colormap cmap, Visual *v);
+
+static DATA8 *
+x_color_alloc_rgb(int nr, int ng, int nb, Display *d, Colormap cmap, Visual *v)
+{
+   int r, g, b, i;
+   DATA8 *color_lut;
+   int sig_mask = 0, delt = 0;
+
+   for (i = 0; i < v->bits_per_rgb; i++) sig_mask |= (0x1 << i);
+   sig_mask <<= (16 - v->bits_per_rgb);
+   i = 0;
+   color_lut = malloc((nr) * (ng) * (nb));
+   if (!color_lut) return NULL;
+   delt = 0x0101 * 3;
+   for (r = 0; r < (nr); r++)
+     {
+       for (g = 0; g < (ng); g++)
+         {
+            for (b = 0; b < (nb); b++)
+              {
+                 XColor xcl;
+                 XColor xcl_in;
+                 int val;
+                 Status ret;
+                 int dr, dg, db;
+
+                  val = (int)((((double)r) / ((nr) - 1)) * 255);
+                 val = (val << 8) | val;
+                 xcl.red = (unsigned short)(val);
+                 val = (int)((((double)g) / ((ng) - 1)) * 255);
+                 val = (val << 8) | val;
+                 xcl.green = (unsigned short)(val);
+                 val = (int)((((double)b) / ((nb) - 1)) * 255);
+                 val = (val << 8) | val;
+                 xcl.blue = (unsigned short)(val);
+                 xcl_in = xcl;
+                 ret = XAllocColor(d, cmap, &xcl);
+                 dr = (int)xcl_in.red - (int)xcl.red;
+                 if (dr < 0) dr = -dr;
+                 dg = (int)xcl_in.green - (int)xcl.green;
+                 if (dg < 0) dg = -dg;
+                 db = (int)xcl_in.blue - (int)xcl.blue;
+                 if (db < 0) db = -db;
+/*               
+                 printf("ASK [%i]: %04x %04x %04x = %04x %04x %04x | dif = %04x / %04x\n",
+                        ret,
+                        xcl_in.red, xcl_in.green, xcl_in.blue,
+                        xcl.red, xcl.green, xcl.blue,
+                        (dr + dg +db), delt);
+ */
+                 if ((ret == 0) ||
+                     ((dr + dg + db) > delt)
+/*                   
+                     ||
+                     ((xcl_in.red & sig_mask) != (xcl.red & sig_mask)) ||
+                     ((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
+                     ((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask))
+ */
+                     )
+                   {
+                      unsigned long pixels[256];
+                      int j;
+
+                      if (i > 0)
+                        {
+                           for (j = 0; j < i; j++)
+                             pixels[j] = (unsigned long) color_lut[j];
+                           XFreeColors(d, cmap, pixels, i, 0);
+                        }
+                      free(color_lut);
+                      return NULL;
+                   }
+                 color_lut[i] = xcl.pixel;
+                 i++;
+              }
+         }
+     }
+   return color_lut;
+}
+
+static DATA8 *
+x_color_alloc_gray(int ng, Display *d, Colormap cmap, Visual *v)
+{
+   int g, i;
+   DATA8 *color_lut;
+   int sig_mask = 0;
+
+   for (i = 0; i < v->bits_per_rgb; i++) sig_mask |= (0x1 << i);
+   sig_mask <<= (16 - v->bits_per_rgb);
+   i = 0;
+   color_lut = malloc(ng);
+   if (!color_lut) return NULL;
+   for (g = 0; g < (ng); g++)
+     {
+       XColor xcl;
+       XColor xcl_in;
+       int val;
+       Status ret;
+
+       val = (int)((((double)g) / ((ng) - 1)) * 255);
+       val = (val << 8) | val;
+       xcl.red = (unsigned short)(val);
+       xcl.green = (unsigned short)(val);
+       xcl.blue = (unsigned short)(val);
+       xcl_in = xcl;
+       ret = XAllocColor(d, cmap, &xcl);
+       if ((ret == 0) ||
+           ((xcl_in.red & sig_mask) != (xcl.red & sig_mask)) ||
+           ((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
+           ((xcl_in.blue & sig_mask) != (xcl.blue & sig_mask)))
+         {
+            unsigned long pixels[256];
+            int j;
+
+            if (i > 0)
+              {
+                 for (j = 0; j < i; j++)
+                   pixels[j] = (unsigned long) color_lut[j];
+                 XFreeColors(d, cmap, pixels, i, 0);
+              }
+            free(color_lut);
+            return NULL;
+         }
+       color_lut[i] = xcl.pixel;
+       i++;
+     }
+   return color_lut;
+}
+
+static DATA8 *
+x_color_alloc_rgb_332(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_rgb(8, 8, 4, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_666(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_rgb(6, 6, 6, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_232(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_rgb(4, 8, 4, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_222(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_rgb(4, 4, 4, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_221(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_rgb(4, 4, 2, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_121(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_rgb(2, 4, 2, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_111(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_rgb(2, 2, 2, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_gray_256(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_gray(256, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_gray_64(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_gray(64, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_gray_16(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_gray(32, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_gray_4(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_gray(16, d, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_mono(Display *d, Colormap cmap, Visual *v)
+{
+   return x_color_alloc_gray(2, d, cmap, v);
+}
+
+void
+evas_software_x11_x_color_init(void)
+{
+   static int initialised = 0;
+
+   if (initialised) return;
+   x_color_alloc[PAL_MODE_NONE]    = NULL;
+   x_color_count[PAL_MODE_NONE]    = 0;
+
+   x_color_alloc[PAL_MODE_MONO]    = x_color_alloc_mono;
+   x_color_count[PAL_MODE_MONO]    = 2;
+
+   x_color_alloc[PAL_MODE_GRAY4]   = x_color_alloc_gray_4;
+   x_color_count[PAL_MODE_GRAY4]   = 4;
+
+   x_color_alloc[PAL_MODE_GRAY16]  = x_color_alloc_gray_16;
+   x_color_count[PAL_MODE_GRAY16]  = 16;
+
+   x_color_alloc[PAL_MODE_GRAY64]  = x_color_alloc_gray_64;
+   x_color_count[PAL_MODE_GRAY64]  = 64;
+
+   x_color_alloc[PAL_MODE_GRAY256] = x_color_alloc_gray_256;
+   x_color_count[PAL_MODE_GRAY256] = 256;
+
+   x_color_alloc[PAL_MODE_RGB111]  = x_color_alloc_rgb_111;
+   x_color_count[PAL_MODE_RGB111]  = 2 * 2 * 2;
+
+   x_color_alloc[PAL_MODE_RGB121]  = x_color_alloc_rgb_121;
+   x_color_count[PAL_MODE_RGB121]  = 2 * 4 * 2;
+
+   x_color_alloc[PAL_MODE_RGB221]  = x_color_alloc_rgb_221;
+   x_color_count[PAL_MODE_RGB221]  = 4 * 4 * 2;
+
+   x_color_alloc[PAL_MODE_RGB222]  = x_color_alloc_rgb_222;
+   x_color_count[PAL_MODE_RGB222]  = 4 * 4 * 4;
+
+   x_color_alloc[PAL_MODE_RGB232]  = x_color_alloc_rgb_232;
+   x_color_count[PAL_MODE_RGB232]  = 4 * 8 * 4;
+
+   x_color_alloc[PAL_MODE_RGB666]  = x_color_alloc_rgb_666;
+   x_color_count[PAL_MODE_RGB666]  = 6 * 6 * 6;
+
+   x_color_alloc[PAL_MODE_RGB332]  = x_color_alloc_rgb_332;
+   x_color_count[PAL_MODE_RGB332]  = 8 * 8 * 4;
+
+   x_color_alloc[PAL_MODE_LAST]    = NULL;
+   x_color_count[PAL_MODE_LAST]    = 0;
+   initialised = 1;
+}
+
+Convert_Pal *
+evas_software_x11_x_color_allocate(Display *disp, Colormap cmap, Visual *vis, Convert_Pal_Mode colors)
+{
+   Convert_Pal_Priv *palpriv;
+   Convert_Pal      *pal;
+   Convert_Pal_Mode  c;
+   Evas_List        *l;
+
+/*   printf("ALLOC cmap=%i vis=%p\n", cmap, vis);*/
+   for (l = palettes; l; l = l->next)
+     {
+       pal = l->data;
+       palpriv = pal->data;
+       if ((disp == palpriv->disp) &&
+           (vis == palpriv->vis) &&
+           (cmap == palpriv->cmap))
+         {
+            pal->references++;
+            return pal;
+         }
+     }
+   pal = calloc(1, sizeof(struct _Convert_Pal));
+   if (!pal) return NULL;
+   for (c = colors; c > PAL_MODE_NONE; c--)
+     {
+       if (x_color_alloc[c])
+         {
+/*          printf("TRY PAL %i\n", c);*/
+            pal->lookup = (x_color_alloc[c])(disp, cmap, vis);
+            if (pal->lookup) break;
+         }
+     }
+   pal->references = 1;
+   pal->colors = c;
+   pal->count = x_color_count[c];
+   palpriv = calloc(1, sizeof(Convert_Pal_Priv));
+   pal->data = palpriv;
+   if (!palpriv)
+     {
+       if (pal->lookup) free(pal->lookup);
+       free(pal);
+       return NULL;
+     }
+   palpriv->disp = disp;
+   palpriv->vis = vis;
+   palpriv->cmap = cmap;
+   if (pal->colors == PAL_MODE_NONE)
+     {
+       if (pal->lookup) free(pal->lookup);
+       free(pal);
+       return NULL;
+     }
+   palettes = evas_list_append(palettes, pal);
+   return pal;
+}
+
+void
+evas_software_x11_x_color_deallocate(Display *disp, Colormap cmap, Visual *vis, Convert_Pal *pal)
+{
+   unsigned long pixels[256];
+   int j;
+
+   pal->references--;
+   if (pal->references > 0) return;
+   if (pal->lookup)
+     {
+       for(j = 0; j < pal->count; j++)
+         pixels[j] = (unsigned long) pal->lookup[j];
+       XFreeColors(disp, cmap, pixels, pal->count, 0);
+       free(pal->lookup);
+     }
+   free(pal->data);
+   palettes = evas_list_remove(palettes, pal);
+   free(pal);
+}
diff --git a/src/modules/engines/software_x11/evas_x_main.c b/src/modules/engines/software_x11/evas_x_main.c
new file mode 100644 (file)
index 0000000..e1ec13f
--- /dev/null
@@ -0,0 +1,10 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+
+void
+evas_software_x11_x_init(void)
+{
+}
diff --git a/src/modules/engines/software_xcb/.cvsignore b/src/modules/engines/software_xcb/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/software_xcb/Evas_Engine_Software_Xcb.h b/src/modules/engines/software_xcb/Evas_Engine_Software_Xcb.h
new file mode 100644 (file)
index 0000000..80688a4
--- /dev/null
@@ -0,0 +1,43 @@
+#ifndef _EVAS_ENGINE_SOFTWARE_XCB_H
+#define _EVAS_ENGINE_SOFTWARE_XCB_H
+
+#include <xcb/xcb.h>
+
+typedef struct _Evas_Engine_Info_Software_Xcb   Evas_Engine_Info_Software_Xcb;
+
+struct _Evas_Engine_Info_Software_Xcb
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   /* engine specific data & parameters it needs to set up */
+   struct {
+      xcb_connection_t  *conn;
+      xcb_screen_t      *screen;
+      xcb_drawable_t     drawable;
+      xcb_drawable_t     mask;
+      xcb_visualtype_t  *visual;
+      xcb_colormap_t     colormap;
+      int                depth;
+      int                rotation;
+
+      int                alloc_grayscale : 1;
+      int                debug : 1;
+      int                shape_dither : 1;
+      int                destination_alpha : 1;
+      int                track_mask_changes : 1;
+
+      int                alloc_colors_max;
+   } info;
+   /* engine specific function calls to query stuff about the destination */
+   struct {
+      xcb_visualtype_t * (*best_visual_get)   (xcb_screen_t *screen);
+      xcb_colormap_t     (*best_colormap_get) (xcb_screen_t *screen);
+      int                (*best_depth_get)    (xcb_screen_t *screen);
+   } func;
+
+   int mask_changed;
+};
+
+#endif /* _EVAS_ENGINE_SOFTWARE_XCB_H */
diff --git a/src/modules/engines/software_xcb/Makefile.am b/src/modules/engines/software_xcb/Makefile.am
new file mode 100644 (file)
index 0000000..1b78bfa
--- /dev/null
@@ -0,0 +1,42 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@ \
+@XCB_CFLAGS@
+
+if BUILD_ENGINE_SOFTWARE_XCB
+
+pkgdir = $(libdir)/evas/modules/engines/software_xcb/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_xcb_buffer.c \
+evas_xcb_color.c \
+evas_xcb_main.c
+
+module_la_LIBADD = @XCB_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_Software_Xcb.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_outbuf.c \
+evas_xcb_buffer.c \
+evas_xcb_color.c \
+evas_xcb_main.c \
+Evas_Engine_Software_Xcb.h
diff --git a/src/modules/engines/software_xcb/evas_engine.c b/src/modules/engines/software_xcb/evas_engine.c
new file mode 100644 (file)
index 0000000..a5ba8c5
--- /dev/null
@@ -0,0 +1,428 @@
+#include <xcb/xcb.h>
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_Software_Xcb.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine Render_Engine;
+
+struct _Render_Engine
+{
+   Tilebuf          *tb;
+   Outbuf           *ob;
+   Tilebuf_Rect     *rects;
+   Evas_Object_List *cur_rect;
+   int               end : 1;
+};
+
+/* prototypes we will use here */
+static void *_output_setup(int w, int h, int rot, xcb_connection_t *conn, xcb_screen_t     *screen, xcb_drawable_t draw, xcb_visualtype_t *vis, xcb_colormap_t cmap, int depth, int debug, int grayscale, int max_colors, xcb_drawable_t mask, int shape_dither, int destination_alpha);
+static xcb_visualtype_t *_best_visual_get(xcb_screen_t *screen);
+static xcb_colormap_t _best_colormap_get(xcb_screen_t *screen);
+static int _best_depth_get(xcb_screen_t *screen);
+
+static void *eng_info(Evas *e);
+static void eng_info_free(Evas *e, void *info);
+static void eng_setup(Evas *e, void *info);
+static void eng_output_free(void *data);
+static void eng_output_resize(void *data, int w, int h);
+static void eng_output_tile_size_set(void *data, int w, int h);
+static void eng_output_redraws_rect_add(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_rect_del(void *data, int x, int y, int w, int h);
+static void eng_output_redraws_clear(void *data);
+static void *eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch);
+static void eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h);
+static void eng_output_flush(void *data);
+static void eng_output_idle_flush(void *data);
+
+static void *
+_output_setup(int               w,
+             int               h,
+             int               rot,
+             xcb_connection_t *conn,
+              xcb_screen_t     *screen,
+             xcb_drawable_t    draw,
+             xcb_visualtype_t *vis,
+             xcb_colormap_t    cmap,
+             int               depth,
+             int               debug,
+             int               grayscale,
+             int               max_colors,
+             xcb_drawable_t    mask,
+             int               shape_dither,
+              int               destination_alpha)
+{
+   Render_Engine *re;
+
+   re = calloc(1, sizeof(Render_Engine));
+   /* if we haven't initialized - init (automatic abort if already done) */
+   evas_common_cpu_init();
+
+   evas_common_blend_init();
+   evas_common_image_init();
+   evas_common_convert_init();
+   evas_common_scale_init();
+   evas_common_rectangle_init();
+   evas_common_gradient_init();
+   evas_common_polygon_init();
+   evas_common_line_init();
+   evas_common_font_init();
+   evas_common_draw_init();
+   evas_common_tilebuf_init();
+
+   evas_software_xcb_x_init();
+   evas_software_xcb_x_color_init();
+   evas_software_xcb_outbuf_init();
+
+   re->ob = evas_software_xcb_outbuf_setup_x(w, h, rot,
+                                            OUTBUF_DEPTH_INHERIT,
+                                            conn,
+                                             screen,
+                                            draw,
+                                            vis,
+                                            cmap,
+                                            depth,
+                                            grayscale,
+                                            max_colors,
+                                            mask,
+                                             shape_dither,
+                                             destination_alpha);
+   if (!re->ob)
+     {
+       free(re);
+       return NULL;
+     }
+
+   /* for updates return 1 big buffer, but only use portions of it, also cache
+    it and keepit around until an idle_flush */
+   /* disable for now - i am hunting down why some expedite tests are slower,
+    * as well as shaped stuff is broken and probable non-32bpp is broken as
+    * convert funcs dont do the right thing
+    *
+   re->ob->onebuf = 1;
+    */
+
+   evas_software_xcb_outbuf_debug_set(re->ob, debug);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (!re->tb)
+     {
+       evas_software_xcb_outbuf_free(re->ob);
+       free(re);
+       return NULL;
+     }
+   /* in preliminary tests 16x16 gave highest framerates */
+   evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+   return re;
+}
+
+static xcb_visualtype_t *
+_best_visual_get(xcb_screen_t *screen)
+{
+   xcb_depth_iterator_t  iter_depth;
+
+   if (!screen) return NULL;
+
+   iter_depth = xcb_screen_allowed_depths_iterator(screen);
+   for (; iter_depth.rem; xcb_depth_next (&iter_depth))
+     {
+        xcb_visualtype_iterator_t iter_vis;
+
+        iter_vis = xcb_depth_visuals_iterator(iter_depth.data);
+        for (; iter_vis.rem; xcb_visualtype_next (&iter_vis))
+          {
+            if (screen->root_visual == iter_vis.data->visual_id)
+              return iter_vis.data;
+          }
+     }
+
+   return NULL;
+}
+
+static xcb_colormap_t
+_best_colormap_get(xcb_screen_t *screen)
+{
+   if (!screen)
+     return 0;
+
+   return screen->default_colormap;
+}
+
+static int
+_best_depth_get(xcb_screen_t *screen)
+{
+   if (!screen)
+     return 0;
+
+   return screen->root_depth;
+}
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_Software_Xcb *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_Software_Xcb));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   info->info.debug = 0;
+   info->info.alloc_grayscale = 0;
+   info->info.alloc_colors_max = 216;
+   info->func.best_visual_get = _best_visual_get;
+   info->func.best_colormap_get = _best_colormap_get;
+   info->func.best_depth_get = _best_depth_get;
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_Software_Xcb *in;
+
+   in = (Evas_Engine_Info_Software_Xcb *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_Software_Xcb *info;
+
+   info = (Evas_Engine_Info_Software_Xcb *)in;
+   if (!e->engine.data.output)
+     e->engine.data.output =
+     _output_setup(e->output.w,
+                  e->output.h,
+                  info->info.rotation,
+                  info->info.conn,
+                   info->info.screen,
+                  info->info.drawable,
+                  info->info.visual,
+                  info->info.colormap,
+                  info->info.depth,
+                  info->info.debug,
+                  info->info.alloc_grayscale,
+                  info->info.alloc_colors_max,
+                  info->info.mask,
+                  info->info.shape_dither,
+                   info->info.destination_alpha);
+   else
+     {
+       int ponebuf = 0;
+
+        re = e->engine.data.output;
+       ponebuf = re->ob->onebuf;
+        evas_software_xcb_outbuf_free(re->ob);
+        re->ob = evas_software_xcb_outbuf_setup_x(e->output.w,
+                                                  e->output.h,
+                                                  info->info.rotation,
+                                                  OUTBUF_DEPTH_INHERIT,
+                                                  info->info.conn,
+                                                  info->info.screen,
+                                                  info->info.drawable,
+                                                  info->info.visual,
+                                                  info->info.colormap,
+                                                  info->info.depth,
+                                                  info->info.alloc_grayscale,
+                                                  info->info.alloc_colors_max,
+                                                  info->info.mask,
+                                                  info->info.shape_dither,
+                                                  info->info.destination_alpha);
+        evas_software_xcb_outbuf_debug_set(re->ob, info->info.debug);
+       re->ob->onebuf = ponebuf;
+     }
+
+   if (!e->engine.data.output) return;
+   if (!e->engine.data.context)
+     e->engine.data.context =
+     e->engine.func->context_new(e->engine.data.output);
+
+   re = e->engine.data.output;
+   evas_software_xcb_outbuf_drawable_set(re->ob, info->info.drawable);
+   evas_software_xcb_outbuf_mask_set(re->ob, info->info.mask);
+   evas_software_xcb_outbuf_rotation_set(re->ob, info->info.rotation);
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   if (!data) return;
+
+   re = (Render_Engine *)data;
+   evas_software_xcb_outbuf_free(re->ob);
+   evas_common_tilebuf_free(re->tb);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   free(re);
+
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_software_xcb_outbuf_reconfigure(re->ob, w, h,
+                                       evas_software_xcb_outbuf_get_rot(re->ob),
+                                       OUTBUF_DEPTH_INHERIT);
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb)
+     evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   RGBA_Image *surface;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *)re->rects;
+     }
+   if (!re->cur_rect) return NULL;
+   rect = (Tilebuf_Rect *)re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   surface = evas_software_xcb_outbuf_new_region_for_update(re->ob,
+                                                           ux, uy, uw, uh,
+                                                           cx, cy, cw, ch);
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   return surface;
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_pipe_begin(surface);
+   evas_common_pipe_flush(surface);
+   evas_software_xcb_outbuf_push_updated_region(re->ob, surface, x, y, w, h);
+   evas_software_xcb_outbuf_free_region_for_update(re->ob, surface);
+   evas_common_cpu_end_opt();
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_software_xcb_outbuf_flush(re->ob);
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_software_xcb_outbuf_idle_flush(re->ob);
+}
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_ENGINE,
+     "software_xcb",
+     "none"
+};
diff --git a/src/modules/engines/software_xcb/evas_engine.h b/src/modules/engines/software_xcb/evas_engine.h
new file mode 100644 (file)
index 0000000..969c0e5
--- /dev/null
@@ -0,0 +1,196 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+#include <xcb/xcb.h>
+#include <xcb/xcb_image.h>
+
+typedef struct _Outbuf                Outbuf;
+typedef struct _Outbuf_Region         Outbuf_Region;
+typedef struct _Xcb_Output_Buffer     Xcb_Output_Buffer;
+
+typedef enum   _Outbuf_Depth          Outbuf_Depth;
+
+enum _Outbuf_Depth
+{
+   OUTBUF_DEPTH_NONE,
+   OUTBUF_DEPTH_INHERIT,
+   OUTBUF_DEPTH_RGB_16BPP_565_565_DITHERED,
+   OUTBUF_DEPTH_RGB_16BPP_555_555_DITHERED,
+   OUTBUF_DEPTH_RGB_16BPP_444_444_DITHERED,
+   OUTBUF_DEPTH_RGB_16BPP_565_444_DITHERED,
+   OUTBUF_DEPTH_RGB_32BPP_888_8888,
+   OUTBUF_DEPTH_LAST
+};
+
+struct _Outbuf
+{
+   Outbuf_Depth    depth;
+   int             w, h;
+   int             rot;
+   int             onebuf;
+
+   struct {
+      Convert_Pal *pal;
+      struct {
+         xcb_connection_t  *conn;
+         xcb_screen_t      *screen;
+        xcb_drawable_t     win;
+        xcb_drawable_t     mask;
+        xcb_visualtype_t  *vis;
+        xcb_colormap_t     cmap;
+        int                depth;
+        int                shm;
+        xcb_gcontext_t     gc;
+        xcb_gcontext_t     gcm;
+        unsigned char      swap     : 1;
+        unsigned char      bit_swap : 1;
+      } x;
+      struct {
+        DATA32    r, g, b;
+      } mask;
+
+      /* 1 big buffer for updates - flush on idle_flush */
+      RGBA_Image  *onebuf;
+      Evas_List   *onebuf_regions;
+
+      /* a list of pending regions to write to the target */
+      Evas_List   *pending_writes;
+      /* a list of previous frame pending regions to write to the target */
+      Evas_List   *prev_pending_writes;
+
+      unsigned char mask_dither       : 1;
+      unsigned char destination_alpha : 1;
+      unsigned char debug             : 1;
+      unsigned char synced            : 1;
+   } priv;
+};
+
+struct _Outbuf_Region
+{
+   Xcb_Output_Buffer *xcbob;
+   Xcb_Output_Buffer *mxcbob;
+   int                x;
+   int                y;
+   int                w;
+   int                h;
+};
+
+struct _Xcb_Output_Buffer
+{
+   xcb_connection_t       *connection;
+   xcb_image_t            *image;
+   xcb_shm_segment_info_t *shm_info;
+   void                   *data;
+   int                     w;
+   int                     h;
+   int                     bpl;
+   int                     psize;
+};
+
+
+/****/
+/* main */
+void               evas_software_xcb_x_init                    (void);
+
+/* buffer */
+void               evas_software_xcb_x_write_mask_line         (Outbuf            *buf,
+                                                                Xcb_Output_Buffer *xcbob,
+                                                               DATA32            *src,
+                                                               int                w,
+                                                               int                y);
+int                evas_software_xcb_x_can_do_shm              (xcb_connection_t *c,
+                                                                xcb_screen_t     *screen);
+Xcb_Output_Buffer *evas_software_xcb_x_output_buffer_new       (xcb_connection_t *c,
+                                                               int            depth,
+                                                               int            w,
+                                                               int            h,
+                                                               int            try_shm,
+                                                               void          *data);
+void               evas_software_xcb_x_output_buffer_free      (Xcb_Output_Buffer *xcbob,
+                                                               int                sync);
+void               evas_software_xcb_x_output_buffer_paste     (Xcb_Output_Buffer *xcbob,
+                                                               xcb_drawable_t        d,
+                                                               xcb_gcontext_t        gc,
+                                                               int                x,
+                                                               int                y,
+                                                               int                sync);
+DATA8             *evas_software_xcb_x_output_buffer_data      (Xcb_Output_Buffer *xcbob,
+                                                               int               *bytes_per_line_ret);
+int                evas_software_xcb_x_output_buffer_depth     (Xcb_Output_Buffer *xcbob);
+int                evas_software_xcb_x_output_buffer_byte_order(Xcb_Output_Buffer *xcbob);
+int                evas_software_xcb_x_output_buffer_bit_order (Xcb_Output_Buffer *xcbob);
+
+
+/* color */
+void         evas_software_xcb_x_color_init       (void);
+Convert_Pal *evas_software_xcb_x_color_allocate   (xcb_connection_t   *conn,
+                                                  xcb_colormap_t      cmap,
+                                                  xcb_visualtype_t   *vis,
+                                                  Convert_Pal_Mode    colors);
+void         evas_software_xcb_x_color_deallocate (xcb_connection_t *conn,
+                                                  xcb_colormap_t    cmap,
+                                                  xcb_visualtype_t *vis,
+                                                  Convert_Pal      *pal);
+
+/* outbuf */
+void         evas_software_xcb_outbuf_init                   (void);
+void         evas_software_xcb_outbuf_free                   (Outbuf *buf);
+Outbuf      *evas_software_xcb_outbuf_setup_x                (int               w,
+                                                             int               h,
+                                                             int               rot,
+                                                             Outbuf_Depth      depth,
+                                                             xcb_connection_t *conn,
+                                                              xcb_screen_t     *screen,
+                                                             xcb_drawable_t    draw,
+                                                             xcb_visualtype_t *vis,
+                                                             xcb_colormap_t    cmap,
+                                                             int               x_depth,
+                                                             int               grayscale,
+                                                             int               max_colors,
+                                                             xcb_drawable_t    mask,
+                                                             int               shape_dither,
+                                                             int               destination_alpha);
+RGBA_Image  *evas_software_xcb_outbuf_new_region_for_update  (Outbuf *buf,
+                                                             int     x,
+                                                             int     y,
+                                                             int     w,
+                                                             int     h,
+                                                             int    *cx,
+                                                             int    *cy,
+                                                             int    *cw,
+                                                             int    *ch);
+void         evas_software_xcb_outbuf_free_region_for_update (Outbuf    *buf,
+                                                             RGBA_Image *update);
+void         evas_software_xcb_outbuf_flush                  (Outbuf *buf);
+void         evas_software_xcb_outbuf_idle_flush             (Outbuf *buf);
+void         evas_software_xcb_outbuf_push_updated_region    (Outbuf     *buf,
+                                                             RGBA_Image *update,
+                                                             int         x,
+                                                             int         y,
+                                                             int         w,
+                                                             int         h);
+void         evas_software_xcb_outbuf_reconfigure            (Outbuf      *buf,
+                                                             int          w,
+                                                             int          h,
+                                                             int          rot,
+                                                             Outbuf_Depth depth);
+int          evas_software_xcb_outbuf_get_width              (Outbuf *buf);
+int          evas_software_xcb_outbuf_get_height             (Outbuf *buf);
+Outbuf_Depth evas_software_xcb_outbuf_get_depth              (Outbuf *buf);
+int          evas_software_xcb_outbuf_get_rot                (Outbuf *buf);
+void         evas_software_xcb_outbuf_drawable_set           (Outbuf *buf, xcb_drawable_t draw);
+void         evas_software_xcb_outbuf_mask_set               (Outbuf *buf, xcb_drawable_t mask);
+void         evas_software_xcb_outbuf_rotation_set           (Outbuf *buf, int rot);
+
+void         evas_software_xcb_outbuf_debug_set              (Outbuf *buf, int debug);
+void         evas_software_xcb_outbuf_debug_show             (Outbuf        *buf,
+                                                             xcb_drawable_t draw,
+                                                             int            x,
+                                                             int            y,
+                                                             int            w,
+                                                             int            h);
+
+#endif /* EVAS_ENGINE_H */
diff --git a/src/modules/engines/software_xcb/evas_outbuf.c b/src/modules/engines/software_xcb/evas_outbuf.c
new file mode 100644 (file)
index 0000000..ba2609e
--- /dev/null
@@ -0,0 +1,1052 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+#include "evas_macros.h"
+#include <xcb/shm.h>
+#include <xcb/xcb_image.h>
+#include <pixman.h>
+#include <sys/time.h>
+#include <sys/utsname.h>
+
+
+static Evas_List *shmpool = NULL;
+static int shmsize = 0;
+static int shmmemlimit = 10 * 1024 * 1024;
+static int shmcountlimit = 32;
+
+static Xcb_Output_Buffer *
+_find_xcbob(xcb_connection_t *conn, int depth, int w, int h, int shm, void *data)
+{
+   Evas_List         *l;
+   Evas_List         *xl;
+   Xcb_Output_Buffer *xcbob = NULL;
+   int                fitness = 0x7fffffff;
+   int                sz;
+   int                lbytes;
+   int                bpp;
+
+//   return evas_software_xcb_x_output_buffer_new(d, v, depth, w, h, shm, data);
+   if (!shm)
+     return evas_software_xcb_x_output_buffer_new(conn, depth, w, h, shm, data);
+   if (depth > 1)
+     {
+       bpp = depth / 8;
+       if (bpp == 3) bpp = 4;
+       lbytes = (((w * bpp) + 3) / 4) * 4;
+     }
+   else
+     lbytes = ((w + 31) / 32) * 4;
+   sz = lbytes * h;
+   for (l = shmpool; l; l = l->next)
+     {
+       Xcb_Output_Buffer *xcbob2;
+       int                szdif;
+
+       xcbob2 = l->data;
+       if ((xcbob2->image->depth != depth) ||
+           (xcbob2->connection != conn))
+         continue;
+       szdif = xcbob2->psize - sz;
+       if (szdif < 0) continue;
+       if (szdif == 0)
+         {
+            xcbob = xcbob2;
+            xl = l;
+            goto have_xcbob;
+         }
+       if (szdif < fitness)
+         {
+            fitness = szdif;
+            xcbob = xcbob2;
+            xl = l;
+         }
+     }
+   if ((fitness > (100 * 100)) || (!xcbob))
+     return evas_software_xcb_x_output_buffer_new(conn, depth, w, h, shm, data);
+
+   have_xcbob:
+   shmpool = evas_list_remove_list(shmpool, xl);
+   xcbob->w = w;
+   xcbob->h = h;
+   xcbob->bpl = lbytes;
+   xcbob->image->width = xcbob->w;
+   xcbob->image->height = xcbob->h;
+   xcbob->image->stride = xcbob->bpl;
+   shmsize -= xcbob->psize * (xcbob->image->depth / 8);
+   return xcbob;
+}
+
+static void
+_unfind_xcbob(Xcb_Output_Buffer *xcbob, int sync)
+{
+//   evas_software_xcb_x_output_buffer_free(xcbob, sync); return;
+   if (xcbob->shm_info)
+     {
+       shmpool = evas_list_prepend(shmpool, xcbob);
+       shmsize += xcbob->psize * xcbob->image->depth / 8;
+       while ((shmsize > (shmmemlimit)) ||
+              (evas_list_count(shmpool) > shmcountlimit))
+         {
+            Evas_List *xl;
+
+            xl = evas_list_last(shmpool);
+            if (!xl)
+              {
+                 shmsize = 0;
+                 break;
+              }
+            xcbob = xl->data;
+            shmpool = evas_list_remove_list(shmpool, xl);
+            evas_software_xcb_x_output_buffer_free(xcbob, sync);
+         }
+     }
+   else
+     evas_software_xcb_x_output_buffer_free(xcbob, sync);
+}
+
+static void
+_clear_xcbob(int sync)
+{
+   while (shmpool)
+     {
+       Xcb_Output_Buffer *xcbob;
+
+       xcbob = shmpool->data;
+       shmpool = evas_list_remove_list(shmpool, shmpool);
+       evas_software_xcb_x_output_buffer_free(xcbob, sync);
+     }
+   shmsize = 0;
+}
+
+void
+evas_software_xcb_outbuf_init(void)
+{
+}
+
+void
+evas_software_xcb_outbuf_free(Outbuf * buf)
+{
+   while (buf->priv.pending_writes)
+     {
+       RGBA_Image *im;
+       Outbuf_Region *obr;
+
+       im = buf->priv.pending_writes->data;
+       buf->priv.pending_writes = evas_list_remove_list(buf->priv.pending_writes, buf->priv.pending_writes);
+       obr = im->extended_info;
+       evas_cache_image_drop(&im->cache_entry);
+       if (obr->xcbob) _unfind_xcbob(obr->xcbob, 0);
+       if (obr->mxcbob) _unfind_xcbob(obr->mxcbob, 0);
+       free(obr);
+     }
+   evas_software_xcb_outbuf_idle_flush(buf);
+   evas_software_xcb_outbuf_flush(buf);
+   if (buf->priv.x.gc)
+      xcb_free_gc(buf->priv.x.conn, buf->priv.x.gc);
+   if (buf->priv.x.gcm)
+      xcb_free_gc(buf->priv.x.conn, buf->priv.x.gcm);
+   if (buf->priv.pal)
+     evas_software_xcb_x_color_deallocate(buf->priv.x.conn,
+                                         buf->priv.x.cmap,
+                                         buf->priv.x.vis,
+                                         buf->priv.pal);
+   free(buf);
+   _clear_xcbob(0);
+}
+
+void
+evas_software_xcb_outbuf_rotation_set(Outbuf *buf, int rot)
+{
+   buf->rot = rot;
+}
+
+Outbuf *
+evas_software_xcb_outbuf_setup_x(int               w,
+                                int               h,
+                                int               rot,
+                                Outbuf_Depth      depth,
+                                xcb_connection_t *conn,
+                                 xcb_screen_t     *screen,
+                                xcb_drawable_t    draw,
+                                xcb_visualtype_t *vis,
+                                xcb_colormap_t    cmap,
+                                int               x_depth,
+                                int               grayscale,
+                                int               max_colors,
+                                xcb_drawable_t    mask,
+                                int               shape_dither,
+                                int               destination_alpha)
+{
+   Outbuf *buf;
+
+   buf = calloc(1, sizeof(Outbuf));
+   if (!buf)
+      return NULL;
+
+   buf->w = w;
+   buf->h = h;
+   buf->depth = depth;
+   buf->rot = rot;
+
+   buf->priv.x.conn = conn;
+   buf->priv.x.screen = screen;
+   buf->priv.x.vis = vis;
+   buf->priv.x.cmap = cmap;
+   buf->priv.x.depth = x_depth;
+
+   buf->priv.mask_dither = shape_dither;
+   buf->priv.destination_alpha = destination_alpha;
+
+   {
+      Gfx_Func_Convert    conv_func;
+      Xcb_Output_Buffer  *xcbob;
+
+      buf->priv.x.shm = evas_software_xcb_x_can_do_shm(buf->priv.x.conn, buf->priv.x.screen);
+      xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x.conn,
+                                                   buf->priv.x.depth,
+                                                   1, 1,
+                                                   buf->priv.x.shm, NULL);
+
+      conv_func = NULL;
+      if (xcbob)
+       {
+#ifdef WORDS_BIGENDIAN
+          if (evas_software_xcb_x_output_buffer_byte_order(xcbob) == XCB_IMAGE_ORDER_LSB_FIRST)
+            buf->priv.x.swap = 1;
+          if (evas_software_xcb_x_output_buffer_bit_order(xcbob) == XCB_IMAGE_ORDER_MSB_FIRST)
+            buf->priv.x.bit_swap = 1;
+#else
+          if (evas_software_xcb_x_output_buffer_byte_order(xcbob) == XCB_IMAGE_ORDER_MSB_FIRST)
+            buf->priv.x.swap = 1;
+          if (evas_software_xcb_x_output_buffer_bit_order(xcbob) == XCB_IMAGE_ORDER_MSB_FIRST)
+            buf->priv.x.bit_swap = 1;
+#endif
+          if (((vis->_class == XCB_VISUAL_CLASS_TRUE_COLOR) ||
+                (vis->_class == XCB_VISUAL_CLASS_DIRECT_COLOR)) &&
+               (x_depth > 8))
+
+            {
+               buf->priv.mask.r = (DATA32) vis->red_mask;
+               buf->priv.mask.g = (DATA32) vis->green_mask;
+               buf->priv.mask.b = (DATA32) vis->blue_mask;
+               if (buf->priv.x.swap)
+                 {
+                    SWAP32(buf->priv.mask.r);
+                    SWAP32(buf->priv.mask.g);
+                    SWAP32(buf->priv.mask.b);
+                 }
+            }
+          else if ((vis->_class == XCB_VISUAL_CLASS_STATIC_GRAY)  ||
+                   (vis->_class == XCB_VISUAL_CLASS_GRAY_SCALE)   ||
+                   (vis->_class == XCB_VISUAL_CLASS_STATIC_COLOR) ||
+                   (vis->_class == XCB_VISUAL_CLASS_PSEUDO_COLOR) ||
+                    (x_depth <= 8))
+            {
+               Convert_Pal_Mode pm = PAL_MODE_RGB332;
+
+               if ((vis->_class == XCB_VISUAL_CLASS_GRAY_SCALE) ||
+                    (vis->_class == XCB_VISUAL_CLASS_STATIC_GRAY))
+                  grayscale = 1;
+               if (grayscale)
+                 {
+                    if (max_colors >= 256)
+                       pm = PAL_MODE_GRAY256;
+                    else if (max_colors >= 64)
+                       pm = PAL_MODE_GRAY64;
+                    else if (max_colors >= 16)
+                       pm = PAL_MODE_GRAY16;
+                    else if (max_colors >= 4)
+                       pm = PAL_MODE_GRAY4;
+                    else
+                       pm = PAL_MODE_MONO;
+                 }
+               else
+                 {
+                    if (max_colors >= 256)
+                       pm = PAL_MODE_RGB332;
+                    else if (max_colors >= 216)
+                       pm = PAL_MODE_RGB666;
+                    else if (max_colors >= 128)
+                       pm = PAL_MODE_RGB232;
+                    else if (max_colors >= 64)
+                       pm = PAL_MODE_RGB222;
+                    else if (max_colors >= 32)
+                       pm = PAL_MODE_RGB221;
+                    else if (max_colors >= 16)
+                       pm = PAL_MODE_RGB121;
+                    else if (max_colors >= 8)
+                       pm = PAL_MODE_RGB111;
+                    else if (max_colors >= 4)
+                       pm = PAL_MODE_GRAY4;
+                    else
+                       pm = PAL_MODE_MONO;
+                 }
+                /* FIXME: only alloc once per display+cmap */
+               buf->priv.pal =
+                  evas_software_xcb_x_color_allocate(conn,
+                                                     cmap,
+                                                     vis,
+                                                     PAL_MODE_RGB666);
+               if (!buf->priv.pal)
+                 {
+                    free(buf);
+                    return NULL;
+                 }
+            }
+          if (buf->priv.pal)
+            {
+               if (buf->rot == 0 || buf->rot == 180)
+                  conv_func = evas_common_convert_func_get(0,
+                                                           buf->w,
+                                                           buf->h,
+                                                           evas_software_xcb_x_output_buffer_depth (xcbob),
+                                                           buf->priv.mask.r,
+                                                           buf->priv.mask.g,
+                                                           buf->priv.mask.b,
+                                                           buf->priv.pal->colors,
+                                                           buf->rot);
+               else if (buf->rot == 90 || buf->rot == 270)
+                  conv_func = evas_common_convert_func_get(0,
+                                                           buf->h,
+                                                           buf->w,
+                                                           evas_software_xcb_x_output_buffer_depth (xcbob),
+                                                           buf->priv.mask.r,
+                                                           buf->priv.mask.g,
+                                                           buf->priv.mask.b,
+                                                           buf->priv.pal->colors,
+                                                           buf->rot);
+            }
+          else
+            {
+               if (buf->rot == 0 || buf->rot == 180)
+                  conv_func = evas_common_convert_func_get(0,
+                                                           buf->w,
+                                                           buf->h,
+                                                           evas_software_xcb_x_output_buffer_depth(xcbob),
+                                                           buf->priv.mask.r,
+                                                           buf->priv.mask.g,
+                                                           buf->priv.mask.b,
+                                                           PAL_MODE_NONE,
+                                                           buf->rot);
+               else if (buf->rot == 90 || buf->rot == 270)
+                  conv_func = evas_common_convert_func_get(0,
+                                                           buf->h,
+                                                           buf->w,
+                                                           evas_software_xcb_x_output_buffer_depth(xcbob),
+                                                           buf->priv.mask.r,
+                                                           buf->priv.mask.g,
+                                                           buf->priv.mask.b,
+                                                           PAL_MODE_NONE,
+                                                           buf->rot);
+            }
+          evas_software_xcb_x_output_buffer_free(xcbob, 1);
+          if (!conv_func)
+            {
+               printf(".[ Evas Error ].\n"
+                      " {\n"
+                      "  At depth         %i:\n"
+                      "  RGB format mask: %08x, %08x, %08x\n"
+                      "  Palette mode:    %i\n"
+                      "  Not supported by and compiled in converters!\n"
+                      " }\n",
+                      buf->priv.x.depth,
+                      buf->priv.mask.r,
+                      buf->priv.mask.g,
+                      buf->priv.mask.b,
+                      buf->priv.pal->colors);
+            }
+       }
+      evas_software_xcb_outbuf_drawable_set(buf, draw);
+      evas_software_xcb_outbuf_mask_set(buf, mask);
+   }
+
+   return buf;
+}
+
+RGBA_Image *
+evas_software_xcb_outbuf_new_region_for_update(Outbuf *buf,
+                                              int     x,
+                                              int     y,
+                                              int     w,
+                                              int     h,
+                                              int    *cx,
+                                              int    *cy,
+                                              int    *cw,
+                                              int    *ch)
+{
+   RGBA_Image    *im;
+   Outbuf_Region *obr;
+   int            bpl = 0;
+   int            use_shm = 1;
+   int                 alpha;
+
+   if ((buf->onebuf) && (buf->priv.x.shm))
+     {
+       Evas_Rectangle *rect;
+
+       rect = malloc(sizeof(Evas_Rectangle));
+       RECTS_CLIP_TO_RECT(x, y, w, h, 0, 0, buf->w, buf->h);
+       rect->x = x;
+       rect->y = y;
+       rect->w = w;
+       rect->h = h;
+       buf->priv.onebuf_regions = evas_list_append(buf->priv.onebuf_regions, rect);
+       if (buf->priv.onebuf)
+         {
+            *cx = x;
+            *cy = y;
+            *cw = w;
+            *ch = h;
+            if (!buf->priv.synced)
+              {
+                  /* we sync */
+                  free(xcb_get_input_focus_reply(buf->priv.x.conn, xcb_get_input_focus_unchecked(buf->priv.x.conn), NULL));
+                 buf->priv.synced = 1;
+              }
+            if ((buf->priv.x.mask) || (buf->priv.destination_alpha))
+              {
+                 int yy;
+
+                 im = buf->priv.onebuf;
+                 for (yy = y; yy < (y + h); yy++)
+                   {
+                      memset(im->image.data + (im->cache_entry.w * yy) + x,
+                             0, w * sizeof(DATA32));
+                   }
+              }
+            return buf->priv.onebuf;
+         }
+       obr = calloc(1, sizeof(Outbuf_Region));
+       obr->x = 0;
+       obr->y = 0;
+       obr->w = buf->w;
+       obr->h = buf->h;
+       *cx = x;
+       *cy = y;
+       *cw = w;
+       *ch = h;
+
+        alpha = ((buf->priv.x.mask) || (buf->priv.destination_alpha));
+
+       use_shm = buf->priv.x.shm;
+       if ((buf->rot == 0) &&
+           (buf->priv.mask.r == 0xff0000) &&
+           (buf->priv.mask.g == 0x00ff00) &&
+           (buf->priv.mask.b == 0x0000ff))
+         {
+            obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x.conn,
+                                                                buf->priv.x.depth,
+                                                                buf->w, buf->h,
+                                                                use_shm,
+                                                                NULL);
+             im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
+                                                       buf->w, buf->h,
+                                                       (DATA32 *) evas_software_xcb_x_output_buffer_data(obr->xcbob, &bpl),
+                                                       alpha, EVAS_COLORSPACE_ARGB8888);
+            im->extended_info = obr;
+            if (buf->priv.x.mask)
+              obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x.conn,
+                                                                   1,
+                                                                   buf->w, buf->h,
+                                                                   use_shm,
+                                                                   NULL);
+         }
+       else
+         {
+            im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+             im->cache_entry.flags.alpha |= alpha ? 1 : 0;
+             evas_cache_image_surface_alloc(&im->cache_entry, buf->w, buf->h);
+            im->extended_info = obr;
+            if ((buf->rot == 0) || (buf->rot == 180))
+              obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x.conn,
+                                                                  buf->priv.x.depth,
+                                                                  buf->w, buf->h,
+                                                                  use_shm,
+                                                                  NULL);
+            else if ((buf->rot == 90) || (buf->rot == 270))
+              obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x.conn,
+                                                                  buf->priv.x.depth,
+                                                                  buf->h, buf->w,
+                                                                  use_shm,
+                                                                  NULL);
+            if (buf->priv.x.mask)
+              obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x.conn,
+                                                                   1, buf->w, buf->h,
+                                                                   use_shm,
+                                                                   NULL);
+         }
+       if (alpha)
+          /* FIXME: faster memset! */
+          memset(im->image.data, 0, w * h * sizeof(DATA32));
+
+       buf->priv.onebuf = im;
+       return im;
+     }
+
+
+   obr = calloc(1, sizeof(Outbuf_Region));
+   obr->x = x;
+   obr->y = y;
+   obr->w = w;
+   obr->h = h;
+   *cx = 0;
+   *cy = 0;
+   *cw = w;
+   *ch = h;
+
+   use_shm = buf->priv.x.shm;
+   /* FIXME: magic - i found if shm regions are smaller than 200x200 its
+    * faster to use ximages over unix sockets - trial and error
+    */
+//   use_shm = 0; /* 630 -> 1006 fps */
+//   if ((w * h) < (200 * 200)) use_shm = 0; /* 630 -> 962 fps */
+
+   alpha = ((buf->priv.x.mask) || (buf->priv.destination_alpha));
+
+   if ((buf->rot == 0) &&
+       (buf->priv.mask.r == 0xff0000) &&
+       (buf->priv.mask.g == 0x00ff00) &&
+       (buf->priv.mask.b == 0x0000ff))
+     {
+       obr->xcbob = _find_xcbob(buf->priv.x.conn,
+                                 buf->priv.x.depth,
+                                 w, h,
+                                 use_shm,
+                                 NULL);
+        im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
+                                                  w, h,
+                                                  (DATA32 *) evas_software_xcb_x_output_buffer_data(obr->xcbob, &bpl),
+                                                  alpha, EVAS_COLORSPACE_ARGB8888);
+       im->extended_info = obr;
+       if (buf->priv.x.mask)
+         obr->mxcbob = _find_xcbob(buf->priv.x.conn,
+                                    1, w, h,
+                                    use_shm,
+                                    NULL);
+/*       obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x.conn, */
+/*                                                           1, */
+/*                                                           w, */
+/*                                                           h, */
+/*                                                           use_shm, */
+/*                                                           NULL); */
+     }
+   else
+     {
+        im = (RGBA_Image *) evas_cache_image_empty(evas_common_image_cache_get());
+        im->cache_entry.flags.alpha |= alpha ? 1 : 0;
+        evas_cache_image_surface_alloc(&im->cache_entry, w, h);
+       im->extended_info = obr;
+       if ((buf->rot == 0) || (buf->rot == 180))
+         obr->xcbob = _find_xcbob(buf->priv.x.conn,
+                                   buf->priv.x.depth,
+                                   w, h,
+                                   use_shm,
+                                   NULL);
+/*        obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x.conn, */
+/*                                                           buf->priv.x.depth, */
+/*                                                           w, */
+/*                                                           h, */
+/*                                                           use_shm, */
+/*                                                           NULL); */
+       else if ((buf->rot == 90) || (buf->rot == 270))
+         obr->xcbob = _find_xcbob(buf->priv.x.conn,
+                                   buf->priv.x.depth,
+                                   h, w,
+                                   use_shm,
+                                   NULL);
+/*       obr->xcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x.conn, */
+/*                                                          buf->priv.x.depth, */
+/*                                                          h, */
+/*                                                          w, */
+/*                                                          use_shm, */
+/*                                                          NULL); */
+       if (buf->priv.x.mask)
+         obr->mxcbob = _find_xcbob(buf->priv.x.conn,
+                                    1, w, h,
+                                    use_shm,
+                                    NULL);
+/*       obr->mxcbob = evas_software_xcb_x_output_buffer_new(buf->priv.x.conn, */
+/*                                                           1, */
+/*                                                           w, */
+/*                                                           h, */
+/*                                                           use_shm, */
+/*                                                           NULL); */
+     }
+   if ((buf->priv.x.mask) || (buf->priv.destination_alpha))
+       /* FIXME: faster memset! */
+     memset(im->image.data, 0, w * h * sizeof(DATA32));
+
+   buf->priv.pending_writes = evas_list_append(buf->priv.pending_writes, im);
+   return im;
+}
+
+void
+evas_software_xcb_outbuf_free_region_for_update(Outbuf     *buf,
+                                               RGBA_Image *update)
+{
+   /* no need to do anything - they are cleaned up on flush */
+}
+
+void
+evas_software_xcb_outbuf_flush(Outbuf *buf)
+{
+   Evas_List           *l;
+
+   if ((buf->priv.onebuf) && (buf->priv.onebuf_regions))
+     {
+       RGBA_Image *im;
+       Outbuf_Region *obr;
+       pixman_region16_t tmpr;
+
+       im = buf->priv.onebuf;
+       obr = im->extended_info;
+        pixman_region_init(&tmpr);
+       while (buf->priv.onebuf_regions)
+         {
+            Evas_Rectangle *rect;
+
+            rect = buf->priv.onebuf_regions->data;
+            buf->priv.onebuf_regions = evas_list_remove_list(buf->priv.onebuf_regions, buf->priv.onebuf_regions);
+             pixman_region_union_rect(&tmpr, &tmpr,
+                                      rect->x, rect->y,
+                                      rect->w, rect->h);
+            if (buf->priv.debug)
+              evas_software_xcb_outbuf_debug_show(buf, buf->priv.x.win,
+                                                  rect->x, rect->y, rect->w, rect->h);
+            free(rect);
+         }
+        xcb_set_clip_rectangles(buf->priv.x.conn, XCB_CLIP_ORDERING_YX_BANDED,
+                                buf->priv.x.gc,
+                                0, 0, pixman_region_n_rects(&tmpr),
+                                (const xcb_rectangle_t *)pixman_region_rectangles(&tmpr, NULL));
+       evas_software_xcb_x_output_buffer_paste(obr->xcbob, buf->priv.x.win,
+                                               buf->priv.x.gc,
+                                               0, 0, 0);
+       if (obr->mxcbob)
+         {
+             xcb_set_clip_rectangles(buf->priv.x.conn, XCB_CLIP_ORDERING_YX_BANDED,
+                                     buf->priv.x.gcm,
+                                     0, 0, pixman_region_n_rects(&tmpr),
+                                     (const xcb_rectangle_t *)pixman_region_rectangles(&tmpr, NULL));
+            evas_software_xcb_x_output_buffer_paste(obr->mxcbob,
+                                                    buf->priv.x.mask,
+                                                    buf->priv.x.gcm,
+                                                    0, 0, 0);
+         }
+       buf->priv.synced = 0;
+     }
+   else
+     {
+#if 1
+       /* we sync */
+        free(xcb_get_input_focus_reply(buf->priv.x.conn, xcb_get_input_focus_unchecked(buf->priv.x.conn), NULL));
+        for (l = buf->priv.pending_writes; l; l = l->next)
+          {
+             RGBA_Image *im;
+             Outbuf_Region      *obr;
+
+             im = l->data;
+             obr = im->extended_info;
+             if (buf->priv.debug)
+               evas_software_xcb_outbuf_debug_show(buf,
+                                                   buf->priv.x.win,
+                                                   obr->x,
+                                                   obr->y,
+                                                   obr->w,
+                                                   obr->h);
+             evas_software_xcb_x_output_buffer_paste(obr->xcbob,
+                                                     buf->priv.x.win,
+                                                     buf->priv.x.gc,
+                                                     obr->x,
+                                                     obr->y, 0);
+             if (obr->mxcbob)
+               evas_software_xcb_x_output_buffer_paste(obr->mxcbob,
+                                                       buf->priv.x.mask,
+                                                       buf->priv.x.gcm,
+                                                       obr->x,
+                                                       obr->y, 0);
+          }
+        while (buf->priv.pending_writes)
+          {
+             RGBA_Image    *im;
+             Outbuf_Region *obr;
+
+             im = buf->priv.pending_writes->data;
+             buf->priv.pending_writes = evas_list_remove_list(buf->priv.pending_writes,
+                                                              buf->priv.pending_writes);
+             obr = im->extended_info;
+            evas_cache_image_drop(&im->cache_entry);
+            if (obr->xcbob) _unfind_xcbob(obr->xcbob, 0);
+            if (obr->mxcbob) _unfind_xcbob(obr->mxcbob, 0);
+/*              if (obr->xcbob) evas_software_xcb_x_output_buffer_free(obr->xcbob, 0); */
+/*              if (obr->mxcbob) evas_software_xcb_x_output_buffer_free(obr->mxcbob, 0); */
+             free(obr);
+          }
+       buf->priv.prev_pending_writes = buf->priv.pending_writes;
+       buf->priv.pending_writes = NULL;
+       xcb_flush(buf->priv.x.conn);
+#else
+       /* XX async push - disable */
+       /*
+       for (l = buf->priv.pending_writes; l; l = l->next)
+         {
+            RGBA_Image *im;
+            Outbuf_Region *obr;
+
+            im = l->data;
+            obr = im->extended_info;
+            if (buf->priv.debug)
+              evas_software_x11_outbuf_debug_show(buf, buf->priv.x.win,
+                                                  obr->x, obr->y, obr->w, obr->h);
+            evas_software_x11_x_output_buffer_paste(obr->xcbob, buf->priv.x.win,
+                                                    buf->priv.x.gc,
+                                                    obr->x, obr->y, 0);
+            if (obr->mxcbob)
+              evas_software_x11_x_output_buffer_paste(obr->mxcbob,
+                                                      buf->priv.x.mask,
+                                                      buf->priv.x.gcm,
+                                                      obr->x, obr->y, 0);
+         }
+        */
+       /* we sync */
+        free(xcb_get_input_focus_reply(buf->priv.x.conn, xcb_get_input_focus_unchecked(buf->priv.x.conn), NULL));
+
+       while (buf->priv.pending_writes)
+         {
+            RGBA_Image *im;
+            Outbuf_Region *obr;
+
+            im = evas_list_data(buf->priv.pending_writes);
+            buf->priv.pending_writes = evas_list_remove_list(buf->priv.pending_writes, buf->priv.pending_writes);
+            obr = im->extended_info;
+            evas_cache_image_drop(&im->cache_entry);
+            if (obr->xcbob) _unfind_xcbob(obr->xcbob, 0);
+            if (obr->mxcbob) _unfind_xcbob(obr->mxcbob, 0);
+/*
+            if (obr->xcbob) evas_software_x11_x_output_buffer_free(obr->xcbob, 0);
+            if (obr->mxcbob) evas_software_x11_x_output_buffer_free(obr->mxcbob, 0);
+ */
+            free(obr);
+            evas_cache_image_drop(&im->cache_entry);
+         }
+#endif
+     }
+   evas_common_cpu_end_opt();
+}
+
+void
+evas_software_xcb_outbuf_idle_flush(Outbuf *buf)
+{
+   if (buf->priv.onebuf)
+     {
+        RGBA_Image *im;
+       Outbuf_Region *obr;
+
+       im = buf->priv.onebuf;
+       buf->priv.onebuf = NULL;
+       obr = im->extended_info;
+       if (obr->xcbob) evas_software_xcb_x_output_buffer_free(obr->xcbob, 0);
+       if (obr->mxcbob) evas_software_xcb_x_output_buffer_free(obr->mxcbob, 0);
+       free(obr);
+       evas_cache_image_drop(&im->cache_entry);
+     }
+   else
+     {
+       if (buf->priv.prev_pending_writes)
+          free(xcb_get_input_focus_reply(buf->priv.x.conn, xcb_get_input_focus_unchecked(buf->priv.x.conn), NULL));
+       while (buf->priv.prev_pending_writes)
+         {
+            RGBA_Image *im;
+            Outbuf_Region *obr;
+
+            im = buf->priv.prev_pending_writes->data;
+            buf->priv.prev_pending_writes =
+              evas_list_remove_list(buf->priv.prev_pending_writes,
+                                    buf->priv.prev_pending_writes);
+            obr = im->extended_info;
+            evas_cache_image_drop(&im->cache_entry);
+            if (obr->xcbob) _unfind_xcbob(obr->xcbob, 0);
+            if (obr->mxcbob) _unfind_xcbob(obr->mxcbob, 0);
+            free(obr);
+         }
+       _clear_xcbob(0);
+     }
+}
+
+void
+evas_software_xcb_outbuf_push_updated_region(Outbuf     *buf,
+                                            RGBA_Image *update,
+                                            int         x,
+                                            int         y,
+                                            int         w,
+                                            int         h)
+{
+   Gfx_Func_Convert conv_func = NULL;
+   Outbuf_Region   *obr;
+   DATA32          *src_data;
+   void            *data;
+   int              bpl = 0;
+   int              yy;
+
+   obr = update->extended_info;
+   if (buf->priv.pal)
+     {
+       if ((buf->rot == 0) || (buf->rot == 180))
+         conv_func = evas_common_convert_func_get(0, w, h,
+                                                  evas_software_xcb_x_output_buffer_depth
+                                                  (obr->xcbob), buf->priv.mask.r,
+                                                  buf->priv.mask.g, buf->priv.mask.b,
+                                                  buf->priv.pal->colors, buf->rot);
+       else if ((buf->rot == 90) || (buf->rot == 270))
+         conv_func = evas_common_convert_func_get(0, h, w,
+                                                  evas_software_xcb_x_output_buffer_depth
+                                                  (obr->xcbob), buf->priv.mask.r,
+                                                  buf->priv.mask.g, buf->priv.mask.b,
+                                                  buf->priv.pal->colors, buf->rot);
+     }
+   else
+     {
+       if ((buf->rot == 0) || (buf->rot == 180))
+         conv_func = evas_common_convert_func_get(0, w, h,
+                                                  evas_software_xcb_x_output_buffer_depth
+                                                  (obr->xcbob), buf->priv.mask.r,
+                                                  buf->priv.mask.g, buf->priv.mask.b,
+                                                  PAL_MODE_NONE, buf->rot);
+       else if ((buf->rot == 90) || (buf->rot == 270))
+         conv_func = evas_common_convert_func_get(0, h, w,
+                                                  evas_software_xcb_x_output_buffer_depth
+                                                  (obr->xcbob), buf->priv.mask.r,
+                                                  buf->priv.mask.g, buf->priv.mask.b,
+                                                  PAL_MODE_NONE, buf->rot);
+     }
+   if (!conv_func) return;
+
+   data = evas_software_xcb_x_output_buffer_data(obr->xcbob, &bpl);
+   src_data = update->image.data;
+   if (buf->rot == 0)
+     {
+       obr->x = x;
+       obr->y = y;
+     }
+   else if (buf->rot == 90)
+     {
+       obr->x = y;
+       obr->y = buf->w - x - w;
+     }
+   else if (buf->rot == 180)
+     {
+       obr->x = buf->w - x - w;
+       obr->y = buf->h - y - h;
+     }
+   else if (buf->rot == 270)
+     {
+       obr->x = buf->h - y - h;
+       obr->y = x;
+     }
+   if ((buf->rot == 0) || (buf->rot == 180))
+     {
+       obr->w = w;
+       obr->h = h;
+     }
+   else if ((buf->rot == 90) || (buf->rot == 270))
+     {
+       obr->w = h;
+       obr->h = w;
+     }
+   if (buf->priv.pal)
+     {
+       if (data != src_data)
+         conv_func(src_data, data,
+                   0,
+                   bpl /
+                   ((evas_software_xcb_x_output_buffer_depth(obr->xcbob) / 8)) - obr->w,
+                    obr->w, obr->h, x, y,
+                   buf->priv.pal->lookup);
+     }
+   else
+     {
+       if (data != src_data)
+         conv_func(src_data, data,
+                   0,
+                   bpl /
+                   ((evas_software_xcb_x_output_buffer_depth(obr->xcbob) / 8)) - obr->w,
+                    obr->w, obr->h, x, y, NULL);
+     }
+#if 1
+#else
+   /* XX async push */
+   if (!((buf->priv.onebuf) && (buf->priv.onebuf_regions)))
+     {
+       if (buf->priv.debug)
+         evas_software_xcb_outbuf_debug_show(buf, buf->priv.x.win,
+                                             obr->x, obr->y, obr->w, obr->h);
+       evas_software_xcb_x_output_buffer_paste(obr->xcbob, buf->priv.x.win,
+                                               buf->priv.x.gc,
+                                               obr->x, obr->y, 0);
+     }
+#endif
+   if (obr->mxcbob)
+     {
+       for (yy = 0; yy < obr->h; yy++)
+         evas_software_xcb_x_write_mask_line(buf, obr->mxcbob,
+                                             src_data + (yy * obr->w),
+                                              obr->w,
+                                              yy);
+#if 1
+#else
+       /* XX async push */
+       if (!((buf->priv.onebuf) && (buf->priv.onebuf_regions)))
+         evas_software_xcb_x_output_buffer_paste(obr->mxcbob,
+                                                 buf->priv.x.mask,
+                                                 buf->priv.x.gcm,
+                                                 obr->x, obr->y, 0);
+#endif
+     }
+#if 1
+#else
+   xcb_flush(buf->priv.x.conn);
+#endif
+}
+
+void
+evas_software_xcb_outbuf_reconfigure(Outbuf      *buf,
+                                    int          w,
+                                    int          h,
+                                    int          rot,
+                                    Outbuf_Depth depth)
+{
+   if ((w == buf->w) &&
+       (h == buf->h) &&
+       (rot == buf->rot) &&
+       (depth == buf->depth)) return;
+   buf->w = w;
+   buf->h = h;
+   buf->rot = rot;
+   evas_software_xcb_outbuf_idle_flush(buf);
+}
+
+int
+evas_software_xcb_outbuf_get_width(Outbuf * buf)
+{
+   return buf->w;
+}
+
+int
+evas_software_xcb_outbuf_get_height(Outbuf * buf)
+{
+   return buf->h;
+}
+
+Outbuf_Depth
+evas_software_xcb_outbuf_get_depth(Outbuf * buf)
+{
+   return buf->depth;
+}
+
+int
+evas_software_xcb_outbuf_get_rot(Outbuf * buf)
+{
+   return buf->rot;
+}
+
+void
+evas_software_xcb_outbuf_drawable_set(Outbuf        *buf,
+                                     xcb_drawable_t draw)
+{
+   if (buf->priv.x.win == draw) return;
+   if (buf->priv.x.gc)
+     {
+       xcb_free_gc(buf->priv.x.conn, buf->priv.x.gc);
+       buf->priv.x.gc = 0;
+     }
+   buf->priv.x.win = draw;
+   buf->priv.x.gc = xcb_generate_id(buf->priv.x.conn);
+   xcb_create_gc(buf->priv.x.conn, buf->priv.x.gc, buf->priv.x.win, 0, NULL);
+}
+
+void
+evas_software_xcb_outbuf_mask_set(Outbuf        *buf,
+                                 xcb_drawable_t mask)
+{
+   if (buf->priv.x.mask == mask) return;
+   if (buf->priv.x.gcm)
+     {
+       xcb_free_gc(buf->priv.x.conn, buf->priv.x.gcm);
+       buf->priv.x.gcm = 0;
+     }
+   buf->priv.x.mask = mask;
+   if (buf->priv.x.mask)
+      {
+        buf->priv.x.gcm = xcb_generate_id(buf->priv.x.conn);
+        xcb_create_gc(buf->priv.x.conn, buf->priv.x.gcm, buf->priv.x.win, 0, NULL);
+      }
+}
+
+void
+evas_software_xcb_outbuf_debug_set(Outbuf *buf,
+                                  int     debug)
+{
+   buf->priv.debug = debug;
+}
+void
+evas_software_xcb_outbuf_debug_show(Outbuf        *buf,
+                                   xcb_drawable_t draw,
+                                   int            x,
+                                   int            y,
+                                   int            w,
+                                   int            h)
+{
+   int                          i;
+   xcb_screen_t                *screen = NULL;
+
+   {
+      xcb_get_geometry_reply_t *geom;
+      xcb_drawable_t            root;
+      xcb_screen_iterator_t     i;
+
+      geom = xcb_get_geometry_reply (buf->priv.x.conn, xcb_get_geometry_unchecked(buf->priv.x.conn, draw), 0);
+      root = geom->root;
+      free (geom);
+      geom = xcb_get_geometry_reply (buf->priv.x.conn, xcb_get_geometry_unchecked(buf->priv.x.conn, root), 0);
+
+      i = xcb_setup_roots_iterator((xcb_setup_t *)xcb_get_setup(buf->priv.x.conn));
+      for (; i.rem; xcb_screen_next(&i))
+        if (i.data->root == geom->root)
+           {
+              screen = i.data;
+              break;
+           }
+      free (geom);
+   }
+   for (i = 0; i < 20; i++)
+     {
+/*     xcb_image_t    *image; */
+       xcb_rectangle_t rect = { x, y, w, h};
+       uint32_t        mask;
+       uint32_t        value[2];
+
+       mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
+       value[0] = screen->black_pixel;
+       value[1] = XCB_EXPOSURES_NOT_ALLOWED; /* no graphics exposures allowed */
+       xcb_change_gc(buf->priv.x.conn, buf->priv.x.gc, mask, value);
+       xcb_poly_fill_rectangle (buf->priv.x.conn, draw, buf->priv.x.gc, 1, &rect);
+        /* we sync */
+        free(xcb_get_input_focus_reply(buf->priv.x.conn, xcb_get_input_focus_unchecked(buf->priv.x.conn), NULL));
+//     image = xcb_image_get(buf->priv.x.conn, draw, x, y, w, h, XCB_ALL_PLANES, XCB_IMAGE_FORMAT_Z_PIXMAP);
+//     if (image)
+//        xcb_image_destroy(image);
+        /* we sync */
+        free(xcb_get_input_focus_reply(buf->priv.x.conn, xcb_get_input_focus_unchecked(buf->priv.x.conn), NULL));
+       mask = XCB_GC_FOREGROUND | XCB_GC_GRAPHICS_EXPOSURES;
+       value[0] = screen->white_pixel;
+       value[1] = XCB_EXPOSURES_NOT_ALLOWED; /* no graphics exposures allowed */
+       xcb_change_gc(buf->priv.x.conn, buf->priv.x.gc, mask, value);
+       xcb_poly_fill_rectangle (buf->priv.x.conn, draw, buf->priv.x.gc, 1, &rect);
+        /* we sync */
+        free(xcb_get_input_focus_reply(buf->priv.x.conn, xcb_get_input_focus_unchecked(buf->priv.x.conn), NULL));
+//     image = xcb_image_get(buf->priv.x.conn, draw, x, y, w, h, XCB_ALL_PLANES, XCB_IMAGE_FORMAT_Z_PIXMAP);
+//     if (image)
+//        xcb_image_destroy(image);
+        /* we sync */
+        free(xcb_get_input_focus_reply(buf->priv.x.conn, xcb_get_input_focus_unchecked(buf->priv.x.conn), NULL));
+     }
+}
diff --git a/src/modules/engines/software_xcb/evas_xcb_buffer.c b/src/modules/engines/software_xcb/evas_xcb_buffer.c
new file mode 100644 (file)
index 0000000..dba56a0
--- /dev/null
@@ -0,0 +1,287 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+static int _xcb_err = 0;
+
+void
+evas_software_xcb_x_write_mask_line(Outbuf            *buf,
+                                    Xcb_Output_Buffer *xcbob,
+                                   DATA32            *src,
+                                   int                w,
+                                   int                y)
+{
+   int     x;
+   DATA32 *src_ptr;
+   DATA8  *dst_ptr;
+   int     bpl = 0;
+
+   src_ptr = src;
+   dst_ptr = evas_software_xcb_x_output_buffer_data(xcbob, &bpl);
+   dst_ptr = dst_ptr + (bpl * y);
+   w -= 7;
+   if (buf->priv.x.bit_swap)
+     {
+       for (x = 0; x < w; x += 8)
+         {
+            *dst_ptr =
+              ((A_VAL(&(src_ptr[0])) >> 7) << 7) |
+              ((A_VAL(&(src_ptr[1])) >> 7) << 6) |
+              ((A_VAL(&(src_ptr[2])) >> 7) << 5) |
+              ((A_VAL(&(src_ptr[3])) >> 7) << 4) |
+              ((A_VAL(&(src_ptr[4])) >> 7) << 3) |
+              ((A_VAL(&(src_ptr[5])) >> 7) << 2) |
+              ((A_VAL(&(src_ptr[6])) >> 7) << 1) |
+              ((A_VAL(&(src_ptr[7])) >> 7) << 0);
+            src_ptr += 8;
+            dst_ptr++;
+         }
+     }
+   else
+     {
+       for (x = 0; x < w; x += 8)
+         {
+            *dst_ptr =
+              ((A_VAL(&(src_ptr[0])) >> 7) << 0) |
+              ((A_VAL(&(src_ptr[1])) >> 7) << 1) |
+              ((A_VAL(&(src_ptr[2])) >> 7) << 2) |
+              ((A_VAL(&(src_ptr[3])) >> 7) << 3) |
+              ((A_VAL(&(src_ptr[4])) >> 7) << 4) |
+              ((A_VAL(&(src_ptr[5])) >> 7) << 5) |
+              ((A_VAL(&(src_ptr[6])) >> 7) << 6) |
+              ((A_VAL(&(src_ptr[7])) >> 7) << 7);
+            src_ptr += 8;
+            dst_ptr++;
+         }
+     }
+   w += 7;
+   for (; x < w; x ++)
+      {
+        xcb_image_put_pixel(xcbob->image, x, y, A_VAL(src_ptr) >> 7);
+        src_ptr++;
+      }
+}
+
+int
+evas_software_xcb_x_can_do_shm(xcb_connection_t *c,
+                               xcb_screen_t     *screen)
+{
+   static xcb_connection_t  *cached_c = NULL;
+   static int                cached_result = 0;
+
+   if (c == cached_c) return cached_result;
+   cached_c = c;
+
+   if (xcb_get_extension_data(c, &xcb_shm_id))
+     {
+       Xcb_Output_Buffer *xcbob;
+
+       xcbob = evas_software_xcb_x_output_buffer_new(c,
+                                                     screen->root_depth,
+                                                     16,
+                                                     16,
+                                                     2,
+                                                     NULL);
+       if (!xcbob)
+         {
+            cached_result = 0;
+            return 0;
+         }
+       evas_software_xcb_x_output_buffer_free(xcbob, 1);
+       cached_result = 1;
+       return 1;
+     }
+   cached_result = 0;
+   return 0;
+}
+
+/*
+ * FIXME: no error mechanism
+ */
+
+/* static void */
+/* x_output_tmp_xcb_err(xcb_connection_t *c, XErrorEvent * ev) */
+/* { */
+/*    _xcb_err = 1; */
+/*    return; */
+/* } */
+
+Xcb_Output_Buffer *
+evas_software_xcb_x_output_buffer_new(xcb_connection_t *c,
+                                     int               depth,
+                                     int               w,
+                                     int               h,
+                                     int               try_shm,
+                                     void             *data)
+{
+   Xcb_Output_Buffer *xcbob;
+
+   xcbob = calloc(1, sizeof(Xcb_Output_Buffer));
+   if (!xcbob) return NULL;
+
+   xcbob->connection = c;
+   xcbob->image      = NULL;
+   xcbob->shm_info   = NULL;
+   xcbob->w = w;
+   xcbob->h = h;
+
+   try_shm = 0;
+
+   if (try_shm > 0)
+     {
+        xcbob->shm_info = malloc(sizeof(xcb_shm_segment_info_t));
+        if (xcbob->shm_info)
+          {
+             xcbob->shm_info->shmseg = xcb_generate_id(c);
+             xcbob->image = xcb_image_create_native(c, w, h,
+                                                    XCB_IMAGE_FORMAT_Z_PIXMAP,
+                                                    depth, NULL, ~0, NULL);
+             if (xcbob->image)
+               {
+                  xcbob->shm_info->shmid = shmget(IPC_PRIVATE,
+                                                  xcbob->image->size,
+                                                  IPC_CREAT | 0777);
+                  if (xcbob->shm_info->shmid >= 0)
+                    {
+                       xcbob->shm_info->shmaddr = xcbob->image->data =
+                         shmat(xcbob->shm_info->shmid, 0, 0);
+                       if (xcbob->shm_info->shmaddr != NULL)
+                         {
+                            /*
+                             * FIXME: no error mechanism
+                             */
+
+                           /* XErrorHandler ph; */
+                           /* EventHandlers eh; */
+
+                           //                           free(xcb_get_input_focus_reply(c, xcb_get_input_focus_unchecked(c), NULL));
+                           _xcb_err = 0;
+                           /* ph = XSetErrorHandler((XErrorHandler) */
+                           /* x_output_tmp_x_err); */
+                           xcb_shm_attach(c,
+                                          xcbob->shm_info->shmseg,
+                                          xcbob->shm_info->shmid, 0);
+                           //                           free(xcb_get_input_focus_reply(c, xcb_get_input_focus_unchecked(c), NULL));
+                           /* XSetErrorHandler((XErrorHandler)ph); */
+                           if (!_xcb_err)
+                             {
+                                xcbob->bpl = xcbob->image->stride;
+                                xcbob->psize = xcbob->bpl * xcbob->h;
+                                 return xcbob;
+                             }
+                         }
+                       shmdt(xcbob->shm_info->shmaddr);
+                       shmctl(xcbob->shm_info->shmid, IPC_RMID, 0);
+                    }
+                  if (xcbob->image) xcb_image_destroy(xcbob->image);
+                  xcbob->image = NULL;
+               }
+             if (xcbob->shm_info) free(xcbob->shm_info);
+             xcbob->shm_info = NULL;
+          }
+     }
+
+   if (try_shm > 1) return NULL;
+
+   xcbob->image = xcb_image_create_native(c, w, h, XCB_IMAGE_FORMAT_Z_PIXMAP,
+                                          depth, NULL, ~0, NULL);
+   if (!xcbob->image)
+     {
+       free(xcbob);
+       return NULL;
+     }
+
+   xcbob->data = data;
+
+   if (!xcbob->image->data)
+     {
+       xcbob->image->data = malloc(xcbob->image->size);
+       if (!xcbob->image->data)
+         {
+            xcb_image_destroy(xcbob->image);
+            free(xcbob);
+            return NULL;
+         }
+     }
+
+   xcbob->bpl = xcbob->image->stride;
+   xcbob->psize = xcbob->image->size;
+
+   return xcbob;
+}
+
+void
+evas_software_xcb_x_output_buffer_free(Xcb_Output_Buffer *xcbob,
+                                      int                sync)
+{
+   if (xcbob->shm_info)
+     {
+       if (sync)
+          free(xcb_get_input_focus_reply(xcbob->connection,
+                                         xcb_get_input_focus_unchecked(xcbob->connection),
+                                         NULL));
+       xcb_shm_detach(xcbob->connection, xcbob->shm_info->shmseg);
+       xcb_image_destroy(xcbob->image);
+       shmdt(xcbob->shm_info->shmaddr);
+       shmctl(xcbob->shm_info->shmid, IPC_RMID, 0);
+       free(xcbob->shm_info);
+     }
+   else
+     {
+       if (xcbob->data) xcbob->image->data = NULL;
+       xcb_image_destroy(xcbob->image);
+     }
+   free(xcbob);
+}
+
+void
+evas_software_xcb_x_output_buffer_paste(Xcb_Output_Buffer    *xcbob,
+                                       xcb_drawable_t        d,
+                                       xcb_gcontext_t        gc,
+                                       int                   x,
+                                       int                   y,
+                                       int                   sync)
+{
+   if (xcbob->shm_info)
+     {
+       xcb_image_shm_put(xcbob->connection, d, gc,
+                          xcbob->image, *xcbob->shm_info,
+                          0, 0,
+                          x, y,
+                          xcbob->image->width, xcbob->image->height,
+                          0);
+       if (sync)
+          free(xcb_get_input_focus_reply(xcbob->connection,
+                                         xcb_get_input_focus_unchecked(xcbob->connection),
+                                         NULL));
+     }
+   else
+      xcb_image_put(xcbob->connection, d, gc,
+                    xcbob->image,
+                    x, y, 0);
+}
+
+DATA8 *
+evas_software_xcb_x_output_buffer_data(Xcb_Output_Buffer *xcbob,
+                                      int               *bytes_per_line_ret)
+{
+   if (bytes_per_line_ret) *bytes_per_line_ret = xcbob->image->stride;
+   return xcbob->image->data;
+}
+
+int
+evas_software_xcb_x_output_buffer_depth(Xcb_Output_Buffer *xcbob)
+{
+   return xcbob->image->bpp;
+}
+
+int
+evas_software_xcb_x_output_buffer_byte_order(Xcb_Output_Buffer *xcbob)
+{
+   return xcbob->image->byte_order;
+}
+
+int
+evas_software_xcb_x_output_buffer_bit_order(Xcb_Output_Buffer *xcbob)
+{
+   return xcbob->image->bit_order;
+}
diff --git a/src/modules/engines/software_xcb/evas_xcb_color.c b/src/modules/engines/software_xcb/evas_xcb_color.c
new file mode 100644 (file)
index 0000000..4ed32cd
--- /dev/null
@@ -0,0 +1,426 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+#include <xcb/xcb.h>
+
+typedef struct _Convert_Pal_Priv Convert_Pal_Priv;
+
+struct _Convert_Pal_Priv
+{
+   xcb_connection_t *conn;
+   xcb_colormap_t    cmap;
+   xcb_visualtype_t *vis;
+};
+
+typedef DATA8 * (*Xcb_Func_Alloc_Colors) (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+
+static Xcb_Func_Alloc_Colors x_color_alloc[PAL_MODE_LAST + 1];
+static int                   x_color_count[PAL_MODE_LAST + 1];
+static Evas_List            *palettes = NULL;
+
+static DATA8 * x_color_alloc_rgb(int nr, int ng, int nb, xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_gray(int ng, xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+
+static DATA8 * x_color_alloc_rgb_332  (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_rgb_666  (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_rgb_232  (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_rgb_222  (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_rgb_221  (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_rgb_121  (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_rgb_111  (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_gray_256 (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_gray_64  (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_gray_16  (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_gray_4   (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+static DATA8 * x_color_alloc_mono     (xcb_connection_t *conn, xcb_colormap_t cmap, xcb_visualtype_t *v);
+
+static DATA8 *
+x_color_alloc_rgb(int               nr,
+                 int               ng,
+                 int               nb,
+                 xcb_connection_t *conn,
+                 xcb_colormap_t    cmap,
+                 xcb_visualtype_t *v)
+{
+   int    r, g, b, i;
+   DATA8 *color_lut;
+   int    sig_mask = 0;
+   int    delt = 0;
+
+   for (i = 0; i < v->bits_per_rgb_value; i++) sig_mask |= (0x1 << i);
+   sig_mask <<= (16 - v->bits_per_rgb_value);
+   i = 0;
+   color_lut = malloc((nr) * (ng) * (nb));
+   if (!color_lut) return NULL;
+   delt = 0x0101 * 3;
+   /* FIXME: remove the round-trip ? */
+   for (r = 0; r < (nr); r++)
+     {
+       for (g = 0; g < (ng); g++)
+         {
+            for (b = 0; b < (nb); b++)
+              {
+                 xcb_coloritem_t          xcl;
+                 xcb_coloritem_t          xcl_in;
+                 xcb_alloc_color_reply_t *rep;
+                 int                      val;
+                  int                      dr, dg, db;
+
+                  val = (int)((((double)r) / ((nr) - 1)) * 255);
+                  val = (val << 8) | val;
+                 xcl.red = (uint16_t)(val);
+                 val = (int)((((double)g) / ((ng) - 1)) * 255);
+                  val = (val << 8) | val;
+                 xcl.green = (uint16_t)(val);
+                 val = (int)((((double)b) / ((nb) - 1)) * 255);
+                  val = (val << 8) | val;
+                 xcl.blue = (uint16_t)(val);
+                 xcl_in = xcl;
+                 rep = xcb_alloc_color_reply(conn,
+                                              xcb_alloc_color_unchecked(conn,
+                                                                        cmap,
+                                                                        xcl.red,
+                                                                        xcl.green,
+                                                                        xcl.blue),
+                                              0);
+                  dr = (int)xcl_in.red - (int)xcl.red;
+                  if (dr < 0) dr = -dr;
+                  dg = (int)xcl_in.green - (int)xcl.green;
+                  if (dg < 0) dg = -dg;
+                  db = (int)xcl_in.blue - (int)xcl.blue;
+                  if (db < 0) db = -db;
+/*
+                 printf("ASK [%i]: %04x %04x %04x = %04x %04x %04x | dif = %04x / %04x\n",
+                        ret,
+                        xcl_in.red, xcl_in.green, xcl_in.blue,
+                        xcl.red, xcl.green, xcl.blue,
+                        (dr + dg +db), delt);
+ */
+
+                 /* TODO: XAllocColor tries to approach the color */
+                 /* in case the allocation fails */
+                 /* XCB does not that (i think). It should be done */
+                 /* So if rep == NULL, the other following tests */
+                 /* should be always satisfied */
+                 if ((!rep) ||
+                      ((dr + dg + db) > delt)
+                      /*
+                     ((xcl_in.red   & sig_mask) != (xcl.red   & sig_mask)) ||
+                     ((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
+                     ((xcl_in.blue  & sig_mask) != (xcl.blue  & sig_mask))
+                      */
+                      )
+                   {
+                      uint32_t pixels[256];
+                      int      j;
+
+                      if (i > 0)
+                        {
+                           for (j = 0; j < i; j++)
+                             pixels[j] = (uint32_t)color_lut[j];
+                           xcb_free_colors(conn, cmap, 0, i, pixels);
+                        }
+                      free(color_lut);
+                      return NULL;
+                   }
+                 color_lut[i] = rep->pixel;
+                 i++;
+                 free(rep);
+              }
+         }
+     }
+   return color_lut;
+}
+
+static DATA8 *
+x_color_alloc_gray(int               ng,
+                  xcb_connection_t *conn,
+                  xcb_colormap_t    cmap,
+                  xcb_visualtype_t *v)
+{
+   int g, i;
+   DATA8 *color_lut;
+   int sig_mask = 0;
+
+   for (i = 0; i < v->bits_per_rgb_value; i++) sig_mask |= (0x1 << i);
+   sig_mask <<= (16 - v->bits_per_rgb_value);
+   i = 0;
+   color_lut = malloc(ng);
+   if (!color_lut) return NULL;
+   /* FIXME: remove the round-trip ? */
+   for (g = 0; g < (ng); g++)
+     {
+       xcb_coloritem_t          xcl;
+       xcb_coloritem_t          xcl_in;
+       int                      val;
+       xcb_alloc_color_reply_t *rep;
+
+       val = (int)((((double)g) / ((ng) - 1)) * 255);
+        val = (val << 8) | val;
+       xcl.red = (uint16_t)(val);
+       xcl.green = (uint16_t)(val);
+       xcl.blue = (uint16_t)(val);
+       xcl_in = xcl;
+       rep = xcb_alloc_color_reply(conn,
+                                    xcb_alloc_color_unchecked(conn,
+                                                              cmap,
+                                                              xcl.red,
+                                                              xcl.green,
+                                                              xcl.blue),
+                                    0);
+       /* FIXME: XAllocColor tries to approach the color */
+       /* in case the allocation fails */
+       /* XCB does not that (i think). It should be done */
+       /* So if rep == NULL, the other following tests */
+       /* should be always satisfied */
+       if ((!rep) ||
+           ((xcl_in.red   & sig_mask) != (xcl.red   & sig_mask)) ||
+           ((xcl_in.green & sig_mask) != (xcl.green & sig_mask)) ||
+           ((xcl_in.blue  & sig_mask) != (xcl.blue  & sig_mask)))
+         {
+            uint32_t pixels[256];
+            int      j;
+
+            if (i > 0)
+              {
+                 for (j = 0; j < i; j++)
+                   pixels[j] = (uint32_t) color_lut[j];
+                 xcb_free_colors(conn, cmap, 0, i, pixels);
+              }
+            free(color_lut);
+            return NULL;
+         }
+       color_lut[i] = rep->pixel;
+       i++;
+       free(rep);
+     }
+   return color_lut;
+}
+
+static DATA8 *
+x_color_alloc_rgb_332(xcb_connection_t *conn,
+                     xcb_colormap_t    cmap,
+                     xcb_visualtype_t *v)
+{
+   return x_color_alloc_rgb(8, 8, 4, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_666(xcb_connection_t *conn,
+                     xcb_colormap_t    cmap,
+                     xcb_visualtype_t *v)
+{
+   return x_color_alloc_rgb(6, 6, 6, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_232(xcb_connection_t *conn,
+                     xcb_colormap_t    cmap,
+                     xcb_visualtype_t *v)
+{
+   return x_color_alloc_rgb(4, 8, 4, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_222(xcb_connection_t *conn,
+                     xcb_colormap_t    cmap,
+                     xcb_visualtype_t *v)
+{
+   return x_color_alloc_rgb(4, 4, 4, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_221(xcb_connection_t *conn,
+                      xcb_colormap_t    cmap,
+                      xcb_visualtype_t *v)
+{
+   return x_color_alloc_rgb(4, 4, 2, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_121(xcb_connection_t *conn,
+                     xcb_colormap_t    cmap,
+                     xcb_visualtype_t *v)
+{
+   return x_color_alloc_rgb(2, 4, 2, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_rgb_111(xcb_connection_t *conn,
+                     xcb_colormap_t    cmap,
+                     xcb_visualtype_t *v)
+{
+   return x_color_alloc_rgb(2, 2, 2, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_gray_256(xcb_connection_t *conn,
+                      xcb_colormap_t    cmap,
+                      xcb_visualtype_t *v)
+{
+   return x_color_alloc_gray(256, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_gray_64(xcb_connection_t *conn,
+                     xcb_colormap_t    cmap,
+                     xcb_visualtype_t *v)
+{
+   return x_color_alloc_gray(64, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_gray_16(xcb_connection_t *conn,
+                     xcb_colormap_t    cmap,
+                     xcb_visualtype_t *v)
+{
+   return x_color_alloc_gray(32, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_gray_4(xcb_connection_t *conn,
+                    xcb_colormap_t    cmap,
+                    xcb_visualtype_t *v)
+{
+   return x_color_alloc_gray(16, conn, cmap, v);
+}
+
+static DATA8 *
+x_color_alloc_mono(xcb_connection_t *conn,
+                  xcb_colormap_t    cmap,
+                  xcb_visualtype_t *v)
+{
+   return x_color_alloc_gray(2, conn, cmap, v);
+}
+
+void
+evas_software_xcb_x_color_init(void)
+{
+   static int initialised = 0;
+
+   if (initialised) return;
+   x_color_alloc[PAL_MODE_NONE]    = NULL;
+   x_color_count[PAL_MODE_NONE]    = 0;
+
+   x_color_alloc[PAL_MODE_MONO]    = x_color_alloc_mono;
+   x_color_count[PAL_MODE_MONO]    = 2;
+
+   x_color_alloc[PAL_MODE_GRAY4]   = x_color_alloc_gray_4;
+   x_color_count[PAL_MODE_GRAY4]   = 4;
+
+   x_color_alloc[PAL_MODE_GRAY16]  = x_color_alloc_gray_16;
+   x_color_count[PAL_MODE_GRAY16]  = 16;
+
+   x_color_alloc[PAL_MODE_GRAY64]  = x_color_alloc_gray_64;
+   x_color_count[PAL_MODE_GRAY64]  = 64;
+
+   x_color_alloc[PAL_MODE_GRAY256] = x_color_alloc_gray_256;
+   x_color_count[PAL_MODE_GRAY256] = 256;
+
+   x_color_alloc[PAL_MODE_RGB111]  = x_color_alloc_rgb_111;
+   x_color_count[PAL_MODE_RGB111]  = 2 * 2 * 2;
+
+   x_color_alloc[PAL_MODE_RGB121]  = x_color_alloc_rgb_121;
+   x_color_count[PAL_MODE_RGB121]  = 2 * 4 * 2;
+
+   x_color_alloc[PAL_MODE_RGB221]  = x_color_alloc_rgb_221;
+   x_color_count[PAL_MODE_RGB221]  = 4 * 4 * 2;
+
+   x_color_alloc[PAL_MODE_RGB222]  = x_color_alloc_rgb_222;
+   x_color_count[PAL_MODE_RGB222]  = 4 * 4 * 4;
+
+   x_color_alloc[PAL_MODE_RGB232]  = x_color_alloc_rgb_232;
+   x_color_count[PAL_MODE_RGB232]  = 4 * 8 * 4;
+
+   x_color_alloc[PAL_MODE_RGB666]  = x_color_alloc_rgb_666;
+   x_color_count[PAL_MODE_RGB666]  = 6 * 6 * 6;
+
+   x_color_alloc[PAL_MODE_RGB332]  = x_color_alloc_rgb_332;
+   x_color_count[PAL_MODE_RGB332]  = 8 * 8 * 4;
+
+   x_color_alloc[PAL_MODE_LAST]    = NULL;
+   x_color_count[PAL_MODE_LAST]    = 0;
+   initialised = 1;
+}
+
+Convert_Pal *
+evas_software_xcb_x_color_allocate(xcb_connection_t   *conn,
+                                  xcb_colormap_t      cmap,
+                                  xcb_visualtype_t   *vis,
+                                  Convert_Pal_Mode    colors)
+{
+   Convert_Pal_Priv *palpriv;
+   Convert_Pal      *pal;
+   Convert_Pal_Mode  c;
+   Evas_List        *l;
+
+/*   printf("ALLOC cmap=%i vis=%p\n", cmap, vis);*/
+   for (l = palettes; l; l = l->next)
+     {
+       pal = l->data;
+       palpriv = pal->data;
+       if ((conn == palpriv->conn) &&
+           (vis  == palpriv->vis)  &&
+           (cmap == palpriv->cmap))
+         {
+            pal->references++;
+            return pal;
+         }
+     }
+   pal = calloc(1, sizeof(struct _Convert_Pal));
+   if (!pal) return NULL;
+   for (c = colors; c > PAL_MODE_NONE; c--)
+     {
+       if (x_color_alloc[c])
+         {
+/*          printf("TRY PAL %i\n", c);*/
+            pal->lookup = (x_color_alloc[c])(conn, cmap, vis);
+            if (pal->lookup) break;
+         }
+     }
+   pal->references = 1;
+   pal->colors = c;
+   pal->count = x_color_count[c];
+   palpriv = calloc(1, sizeof(Convert_Pal_Priv));
+   pal->data = palpriv;
+   if (!palpriv)
+     {
+       if (pal->lookup) free(pal->lookup);
+       free(pal);
+       return NULL;
+     }
+   palpriv->conn = conn;
+   palpriv->vis = vis;
+   palpriv->cmap = cmap;
+   if (pal->colors == PAL_MODE_NONE)
+     {
+       if (pal->lookup) free(pal->lookup);
+       free(pal);
+       return NULL;
+     }
+   palettes = evas_list_append(palettes, pal);
+   return pal;
+}
+
+void
+evas_software_xcb_x_color_deallocate(xcb_connection_t *conn,
+                                    xcb_colormap_t    cmap,
+                                    xcb_visualtype_t *vis,
+                                    Convert_Pal      *pal)
+{
+   uint32_t pixels[256];
+   int      j;
+
+   pal->references--;
+   if (pal->references > 0) return;
+   if (pal->lookup)
+     {
+       for(j = 0; j < pal->count; j++)
+         pixels[j] = (uint32_t) pal->lookup[j];
+       xcb_free_colors(conn, cmap, 0, pal->count, pixels);
+       free(pal->lookup);
+     }
+   free(pal->data);
+   palettes = evas_list_remove(palettes, pal);
+   free(pal);
+}
diff --git a/src/modules/engines/software_xcb/evas_xcb_main.c b/src/modules/engines/software_xcb/evas_xcb_main.c
new file mode 100644 (file)
index 0000000..c8d3b94
--- /dev/null
@@ -0,0 +1,9 @@
+#include "evas_common.h"
+#include "evas_engine.h"
+
+#include <xcb/xcb.h>
+
+void
+evas_software_xcb_x_init(void)
+{
+}
diff --git a/src/modules/engines/xrender_x11/.cvsignore b/src/modules/engines/xrender_x11/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/engines/xrender_x11/Evas_Engine_XRender_X11.h b/src/modules/engines/xrender_x11/Evas_Engine_XRender_X11.h
new file mode 100644 (file)
index 0000000..3ce7744
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef _EVAS_ENGINE_XRENDER_X11_H
+#define _EVAS_ENGINE_XRENDER_X11_H
+
+#include <X11/Xlib.h>
+
+typedef struct _Evas_Engine_Info_XRender_X11              Evas_Engine_Info_XRender_X11;
+
+struct _Evas_Engine_Info_XRender_X11
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   /* engine specific data & parameters it needs to set up */
+   struct {
+      Display       *display;
+      Drawable       drawable;
+      Pixmap         mask;
+      Visual        *visual;
+      unsigned char  destination_alpha : 1;
+   } info;
+};
+#endif
+
+
diff --git a/src/modules/engines/xrender_x11/Makefile.am b/src/modules/engines/xrender_x11/Makefile.am
new file mode 100644 (file)
index 0000000..1928a5c
--- /dev/null
@@ -0,0 +1,44 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@ \
+@x_cflags@
+
+if BUILD_ENGINE_XRENDER_X11
+
+pkgdir = $(libdir)/evas/modules/engines/xrender_x11/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_engine_ximage.c \
+evas_engine_xrender.c \
+evas_engine_image.c \
+evas_engine_font.c \
+evas_engine_gradient.c
+
+module_la_LIBADD = @x_libs@ -lXrender $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_XRender_X11.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_engine_ximage.c \
+evas_engine_xrender.c \
+evas_engine_image.c \
+evas_engine_font.c \
+evas_engine_gradient.c \
+Evas_Engine_XRender_X11.h
diff --git a/src/modules/engines/xrender_x11/evas_engine.c b/src/modules/engines/xrender_x11/evas_engine.c
new file mode 100644 (file)
index 0000000..9c50db3
--- /dev/null
@@ -0,0 +1,950 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_X11.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine        Render_Engine;
+typedef struct _Render_Engine_Update Render_Engine_Update;
+
+struct _Render_Engine_Update
+{
+   int x, y, w, h;
+   Xrender_Surface *surface;
+};
+
+struct _Render_Engine
+{
+   Display              *disp;
+   Visual               *vis;
+   Drawable              win;
+   Pixmap                mask;
+   unsigned char         destination_alpha : 1;
+   
+   Ximage_Info          *xinf;
+   Xrender_Surface      *output;
+   Xrender_Surface      *mask_output;
+   
+   Tilebuf              *tb;
+   Tilebuf_Rect         *rects;
+   Evas_Object_List     *cur_rect;
+   int                   end : 1;
+   
+   Evas_List            *updates;
+};
+
+/* internal engine routines */
+
+/* engine api this module provides */
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_XRender_X11 *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_XRender_X11));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_XRender_X11 *in;
+
+   in = (Evas_Engine_Info_XRender_X11 *)info;
+   free(in);
+}
+
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_XRender_X11 *info;
+   int resize = 1;
+
+   info = (Evas_Engine_Info_XRender_X11 *)in;
+   if (!e->engine.data.output)
+     {
+       re = calloc(1, sizeof(Render_Engine));
+       evas_common_cpu_init();
+       evas_common_blend_init();
+       evas_common_image_init();
+       evas_common_convert_init();
+       evas_common_scale_init();
+       evas_common_rectangle_init();
+       evas_common_gradient_init();
+       evas_common_polygon_init();
+       evas_common_line_init();
+       evas_common_font_init();
+       evas_common_draw_init();
+       evas_common_tilebuf_init();
+       re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+       e->engine.data.output = re;
+       resize = 0;
+     }
+   re = e->engine.data.output;
+   if (!re) return;
+   
+   if (!e->engine.data.context) e->engine.data.context = e->engine.func->context_new(e->engine.data.output);
+   
+   re->disp = info->info.display;
+   re->vis = info->info.visual;
+   re->win = info->info.drawable;
+   re->mask = info->info.mask;
+   re->destination_alpha = info->info.destination_alpha;
+   
+   if (re->xinf) _xr_image_info_free(re->xinf);
+   re->xinf = _xr_image_info_get(re->disp, re->win, re->vis);
+
+   if (re->output) _xr_render_surface_free(re->output);
+   if (re->mask_output) _xr_render_surface_free(re->mask_output);
+   if (!re->mask)
+     re->output = _xr_render_surface_adopt(re->xinf, re->win, e->output.w, e->output.h, re->destination_alpha);
+   else
+     re->output = _xr_render_surface_adopt(re->xinf, re->win, e->output.w, e->output.h, 0);
+   if (re->mask)
+     re->mask_output = _xr_render_surface_format_adopt(re->xinf, re->mask, 
+                                                      e->output.w, e->output.h,
+                                                      re->xinf->fmt1, 1);
+   else
+     re->mask_output = NULL;
+   if (resize)
+     {
+       if (re->tb) evas_common_tilebuf_free(re->tb);
+       if ((e->output.w > 0) && (e->output.h > 0))
+         re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       else
+         re->tb = evas_common_tilebuf_new(1, 1);
+        if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+     }
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+   while (re->updates)
+     {
+       Render_Engine_Update *reu;
+       
+       reu = re->updates->data;
+       re->updates = evas_list_remove_list(re->updates, re->updates);
+       _xr_render_surface_free(reu->surface);
+       free(reu);
+     }
+   if (re->tb) evas_common_tilebuf_free(re->tb);
+   if (re->output) _xr_render_surface_free(re->output);
+   if (re->mask_output) _xr_render_surface_free(re->mask_output);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   if (re->xinf) _xr_image_info_free(re->xinf);
+   free(re);
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->output)
+     {
+       if ((re->output->w == w) && (re->output->h ==h)) return;
+       if (re->output) _xr_render_surface_free(re->output);
+     }
+   re->output = _xr_render_surface_adopt(re->xinf, re->win, w, h, 0);
+   if (re->mask_output)
+     {
+       if (re->mask_output) _xr_render_surface_free(re->mask_output);
+       re->mask_output = _xr_render_surface_format_adopt(re->xinf, re->mask, 
+                                                         w, h, 
+                                                         re->xinf->fmt1, 1);
+     }
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb) evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *)re->rects;
+     }
+   if (!re->cur_rect) return NULL;
+   rect = (Tilebuf_Rect *)re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   *cx = 0; *cy = 0; *cw = uw; *ch = uh;
+   if ((re->destination_alpha) || (re->mask))
+     {
+       Xrender_Surface *surface;
+       
+       surface = _xr_render_surface_new(re->xinf, uw, uh, re->xinf->fmt32, 1);
+       _xr_render_surface_solid_rectangle_set(surface, 0, 0, 0, 0, 0, 0, uw, uh);
+       return surface;
+     }
+   return _xr_render_surface_new(re->xinf, uw, uh, re->xinf->fmtdef, 0);
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+   Render_Engine_Update *reu;
+   
+   re = (Render_Engine *)data;
+   reu = malloc(sizeof(Render_Engine_Update));
+   if (!reu) return;
+   reu->x = x;
+   reu->y = y;
+   reu->w = w;
+   reu->h = h;
+   reu->surface = (Xrender_Surface *)surface;
+   re->updates = evas_list_append(re->updates, reu);
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   while (re->updates)
+     {
+       Render_Engine_Update *reu;
+       
+       reu = re->updates->data;
+       re->updates = evas_list_remove_list(re->updates, re->updates);
+       if (re->mask_output)
+         {
+            Xrender_Surface *tsurf;
+            
+            _xr_render_surface_copy(reu->surface, re->output, 0, 0,
+                                    reu->x, reu->y, reu->w, reu->h);
+            tsurf = _xr_render_surface_new(re->xinf, reu->w, reu->h, re->xinf->fmt1, 1);
+            if (tsurf)
+              {
+                 _xr_render_surface_copy(reu->surface, tsurf, 0, 0,
+                                         0, 0, reu->w, reu->h);
+                 _xr_render_surface_copy(tsurf, re->mask_output, 0, 0,
+                                         reu->x, reu->y, reu->w, reu->h);
+                 _xr_render_surface_free(tsurf);
+              }
+         }
+       else
+         {
+            _xr_render_surface_copy(reu->surface, re->output, 0, 0,
+                                    reu->x, reu->y, reu->w, reu->h);
+         }
+       _xr_render_surface_free(reu->surface);
+       free(reu);
+     }
+   XSync(re->disp, False);
+   _xr_image_info_pool_flush(re->xinf, 0, 0);
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
+{
+   _xr_render_surface_rectangle_draw((Xrender_Surface *)surface,
+                                    (RGBA_Draw_Context *)context,
+                                    x, y, w, h);
+}
+
+static void
+eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
+{
+   _xr_render_surface_line_draw((Xrender_Surface *)surface, (RGBA_Draw_Context *)context, x1, y1, x2, y2);
+}
+
+static void
+eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
+{
+   _xre_poly_draw((Xrender_Surface *)surface, (RGBA_Draw_Context *)context, (RGBA_Polygon_Point *)polygon);
+}
+
+static void *
+eng_gradient_new(void *data)
+{
+   Render_Engine *re = (Render_Engine *)data;
+
+   return _xre_gradient_new(re->xinf);
+}
+
+static void
+eng_gradient_free(void *data, void *gradient)
+{
+   _xre_gradient_free(gradient);
+}
+
+static void
+eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
+{
+   _xre_gradient_color_stop_add(gradient, r, g, b, a, delta);
+}
+
+static void
+eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
+{
+   _xre_gradient_alpha_stop_add(gradient, a, delta);
+}
+
+static void
+eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
+{
+   _xre_gradient_color_data_set(gradient, map, len, has_alpha);
+}
+
+static void
+eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
+{
+   _xre_gradient_alpha_data_set(gradient, alpha_map, len);
+}
+
+static void
+eng_gradient_clear(void *data, void *gradient)
+{
+   _xre_gradient_clear(gradient);
+}
+
+static void
+eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
+{
+   _xre_gradient_fill_set(gradient, x, y, w, h);
+}
+
+static void
+eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
+{
+   _xre_gradient_fill_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
+{
+   _xre_gradient_fill_spread_set(gradient, spread);
+}
+
+static void
+eng_gradient_angle_set(void *data, void *gradient, double angle)
+{
+   _xre_gradient_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_offset_set(void *data, void *gradient, float offset)
+{
+   _xre_gradient_offset_set(gradient, offset);
+}
+
+static void
+eng_gradient_direction_set(void *data, void *gradient, int direction)
+{
+   _xre_gradient_direction_set(gradient, direction);
+}
+
+static void
+eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
+{
+   _xre_gradient_type_set(gradient, name, params);
+}
+
+static int
+eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   RGBA_Gradient  *grad;
+   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
+
+   if (!dc || !gradient) return 0;
+   grad = ((XR_Gradient *)gradient)->grad;
+   if(!grad || !grad->type.geometer)  return 0;
+   return !(grad->type.geometer->has_alpha(grad, dc->render_op) |
+              grad->type.geometer->has_mask(grad, dc->render_op));
+}
+
+static int
+eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   if (!context || !gradient)  return 0;
+   return 1;
+}
+
+static void
+eng_gradient_render_pre(void *data, void *context, void *gradient)
+{
+   int  len;
+   RGBA_Gradient  *grad;
+
+   if (!context || !gradient) return;
+   grad = ((XR_Gradient *)gradient)->grad;
+   if(!grad || !grad->type.geometer)  return;
+   grad->type.geometer->geom_set(grad);
+   len = grad->type.geometer->get_map_len(grad);
+   evas_common_gradient_map(context, grad, len);
+}
+
+static void
+eng_gradient_render_post(void *data, void *gradient)
+{
+}
+
+static void
+eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
+{
+   _xre_gradient_draw(surface, context, gradient, x, y, w, h);
+}
+
+static int
+eng_image_alpha_get(void *data, void *image)
+{
+   if (!image) return 0;
+   return _xre_image_alpha_get((XR_Image *)image);
+}
+
+static int
+eng_image_colorspace_get(void *data, void *image)
+{
+   if (!image) return EVAS_COLORSPACE_ARGB8888;
+   return ((XR_Image *)image)->cs.space;
+}
+
+static void *
+eng_image_alpha_set(void *data, void *image, int has_alpha)
+{
+   XR_Image *im;
+   
+   im = (XR_Image *)image;
+   if (!im) return im;
+   if (im->cs.space != EVAS_COLORSPACE_ARGB8888) return im;
+   if (((im->alpha) && (has_alpha)) || ((!im->alpha) && (!has_alpha))) 
+     return im;
+   if (im->references > 1)
+     {
+       XR_Image *old_im;
+       
+       old_im = im;
+       im = _xre_image_copy(old_im);
+       if (im)
+         {
+            im->alpha = old_im->alpha;
+            _xre_image_free(old_im);
+         }
+       else
+         im = old_im;
+     }
+   else
+     _xre_image_dirty(im);
+   _xre_image_alpha_set(im, has_alpha);
+   return im;
+}
+
+static void *
+eng_image_border_set(void *data, void *image, int l, int r, int t, int b)
+{
+   if (!image) return image;
+   _xre_image_border_set((XR_Image *)image, l, r, t, b);
+   return image;
+}
+
+static void
+eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+{
+   if (!image) return;
+   _xre_image_border_get((XR_Image *)image, l, r, t, b);
+}
+
+static char *
+eng_image_comment_get(void *data, void *image, char *key)
+{
+   if (!image) return NULL;
+   return strdup(((XR_Image *)image)->comment);
+}
+
+static char *
+eng_image_format_get(void *data, void *image)
+{
+   if (!image) return NULL;
+   return ((XR_Image *)image)->format;
+}
+
+static void
+eng_image_colorspace_set(void *data, void *image, int cspace)
+{
+   XR_Image *im;
+      
+   if (!image) return;
+   im = (XR_Image *)image;
+   if (im->cs.space == cspace) return;
+
+   if (im->im) evas_cache_image_drop(&im->im->cache_entry);
+   im->im = NULL;
+
+   switch (cspace)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (im->cs.data)
+         {
+            if (!im->cs.no_free) free(im->cs.data);
+            im->cs.data = NULL;
+            im->cs.no_free = 0;
+         }
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       if ((im->free_data) && (im->data)) free(im->data);
+       im->data = NULL;
+       if (im->cs.data)
+         {
+            if (!im->cs.no_free) free(im->cs.data);
+         }
+       if (im->h > 0)
+         im->cs.data = calloc(1, im->h * sizeof(unsigned char *) * 2);
+       im->cs.no_free = 0;
+       break;
+      default:
+       abort();
+       break;
+     }
+   im->cs.space = cspace;
+   _xre_image_dirty(im);
+   _xre_image_region_dirty(im, 0, 0, im->w, im->h);
+}
+
+static void
+eng_image_native_set(void *data, void *image, void *native)
+{
+}
+
+static void *
+eng_image_native_get(void *data, void *image)
+{
+   return NULL;
+}
+
+static void *
+eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
+{
+   Render_Engine *re;
+   XR_Image *im;
+   
+   re = (Render_Engine *)data;
+   *error = 0;
+   im = _xre_image_load(re->xinf, file, key, lo);
+   return im;
+}
+
+static void *
+eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Render_Engine *re;
+   XR_Image *im;
+   
+   re = (Render_Engine *)data;
+   im = _xre_image_new_from_data(re->xinf, w, h, image_data, alpha, cspace);
+   return im;
+}
+
+static void *
+eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Render_Engine *re;
+   XR_Image *im;
+   
+   re = (Render_Engine *)data;
+   im = _xre_image_new_from_copied_data(re->xinf, w, h, image_data, alpha, cspace);
+   return im;
+}
+
+static void
+eng_image_free(void *data, void *image)
+{
+   if (!image) return;
+   _xre_image_free((XR_Image *)image);
+}
+
+static void
+eng_image_size_get(void *data, void *image, int *w, int *h)
+{
+   if (!image) return;
+   if (w) *w = ((XR_Image *)image)->w;
+   if (h) *h = ((XR_Image *)image)->h;
+}
+
+static void *
+eng_image_size_set(void *data, void *image, int w, int h)
+{
+   XR_Image *im, *im_old;
+
+   if (!image) return NULL;
+   im_old = image;
+   if ((im_old->cs.space == EVAS_COLORSPACE_YCBCR422P601_PL) ||
+       (im_old->cs.space == EVAS_COLORSPACE_YCBCR422P709_PL))
+     w &= ~0x1;
+   if ((im_old) && (im_old->w == w) && (im_old->h == h))
+     return image;
+   if ((w <= 0) || (h <= 0))
+     {
+       _xre_image_free(im_old);
+       return NULL;
+     }
+   if (im_old)
+     {
+       im = _xre_image_new_from_copied_data(im_old->xinf, w, h, NULL, im_old->alpha, im_old->cs.space);
+       _xre_image_free(im_old);
+       return im;
+     }
+   return image;
+}
+
+static void *
+eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h)
+{
+   if (!image) return image;
+   _xre_image_dirty((XR_Image *)image);
+   _xre_image_region_dirty((XR_Image *)image, x, y, w, h);
+   return image;
+}
+
+static void *
+eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data)
+{
+   XR_Image *im;
+   
+   if (!image)
+     {
+       *image_data = NULL;
+       return NULL;
+     }
+   im = (XR_Image *)image;
+   if (im->im)
+     evas_cache_image_load_data(&im->im->cache_entry);
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (to_write)
+         {
+            if (im->references > 1)
+              {
+                 XR_Image *im_old;
+                 
+                 im_old = im;
+                 im = _xre_image_copy(im_old);
+                 if (im)
+                   _xre_image_free(im_old);
+                 else
+                   im = im_old;
+              }
+            else
+              _xre_image_dirty(im);
+         }
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       break;
+      default:
+       abort();
+       break;
+     }
+   if (image_data) *image_data = _xre_image_data_get(im);
+   return im;
+}
+
+static void *
+eng_image_data_put(void *data, void *image, DATA32 *image_data)
+{
+   XR_Image *im;
+   
+   if (!image) return image;
+   im = (XR_Image *)image;
+   
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (_xre_image_data_get(im) != image_data)
+         {
+            XR_Image *im_old;
+            
+            im_old = im;
+            image = _xre_image_data_find(image_data);
+            if (image != im_old)
+              {
+                 if (!image)
+                   {
+                      image = _xre_image_new_from_data(im_old->xinf, im_old->w, im_old->h, image_data, im_old->alpha, EVAS_COLORSPACE_ARGB8888);
+                      if (image)
+                        {
+                           ((XR_Image *)image)->alpha = im_old->alpha;
+                           _xre_image_free(im_old);
+                        }
+                      else
+                        image = im_old;
+                   }
+                 else
+                   {
+                      _xre_image_free(im_old);
+                   }
+              }
+            else
+              {
+                 _xre_image_free(image);
+                 image = im_old;
+              }
+         }
+        break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       if (_xre_image_data_get(im) != image_data)
+         {  
+            if (im->data)
+              {
+                 if (im->free_data) free(im->data);
+                 im->data = NULL;
+              }
+             if (im->cs.data)
+              {
+                 if (!im->cs.no_free) free(im->cs.data);
+              }
+            im->cs.data = image_data;
+            _xre_image_dirty(im);
+         }
+        break;
+      default:
+       abort();
+       break;
+     }
+   return image;
+}
+
+static void
+eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
+{
+   if ((!image) || (!surface)) return;
+   _xre_image_surface_gen((XR_Image *)image);
+   if (((XR_Image *)image)->surface)
+     _xr_render_surface_composite(((XR_Image *)image)->surface,
+                                 (Xrender_Surface *)surface,
+                                 (RGBA_Draw_Context *)context,
+                                 src_x, src_y, src_w, src_h,
+                                 dst_x, dst_y, dst_w, dst_h,
+                                 smooth);
+}
+
+static void
+eng_image_cache_flush(void *data)
+{
+   int tmp_size;
+
+   tmp_size = _xre_image_cache_get();
+   pfunc.image_cache_flush(data);
+   _xre_image_cache_set(0);
+   _xre_image_cache_set(tmp_size);
+}
+
+static void
+eng_image_cache_set(void *data, int bytes)
+{
+   pfunc.image_cache_set(data, bytes);
+   _xre_image_cache_set(bytes);
+}
+
+static int
+eng_image_cache_get(void *data)
+{
+   return pfunc.image_cache_get(data);
+}
+
+static void
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
+{
+   Render_Engine        *re;
+   RGBA_Image           *im;
+
+   re = (Render_Engine *)data;
+
+   _xr_render_surface_clips_set((Xrender_Surface *)surface, (RGBA_Draw_Context *)context, x, y, w, h);
+
+   im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
+                                             ((Xrender_Surface *)surface)->w,
+                                             ((Xrender_Surface *)surface)->h,
+                                             surface,
+                                             0, EVAS_COLORSPACE_ARGB8888);
+   evas_common_draw_context_font_ext_set(context,
+                                         re->xinf,
+                                         _xre_font_surface_new,
+                                         _xre_font_surface_free,
+                                         _xre_font_surface_draw);
+   evas_common_font_draw(im, context, font, x, y, text);
+   evas_common_draw_context_font_ext_set(context,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL);
+   evas_common_cpu_end_opt();
+
+   evas_cache_image_drop(&im->cache_entry);
+}
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   ORD(rectangle_draw);
+   ORD(line_draw);
+   ORD(polygon_draw);
+   ORD(gradient_new);
+   ORD(gradient_free);
+   ORD(gradient_color_stop_add);
+   ORD(gradient_alpha_stop_add);
+   ORD(gradient_color_data_set);
+   ORD(gradient_alpha_data_set);
+   ORD(gradient_clear);
+   ORD(gradient_fill_set);
+   ORD(gradient_fill_angle_set);
+   ORD(gradient_fill_spread_set);
+   ORD(gradient_angle_set);
+   ORD(gradient_offset_set);
+   ORD(gradient_direction_set);
+   ORD(gradient_type_set);
+   ORD(gradient_is_opaque);
+   ORD(gradient_is_visible);
+   ORD(gradient_render_pre);
+   ORD(gradient_render_post);
+   ORD(gradient_draw);
+   ORD(image_load);
+   ORD(image_new_from_data);
+   ORD(image_new_from_copied_data);
+   ORD(image_free);
+   ORD(image_size_get);
+   ORD(image_size_set);
+   ORD(image_dirty_region);
+   ORD(image_data_get);
+   ORD(image_data_put);
+   ORD(image_alpha_set);
+   ORD(image_alpha_get);
+   ORD(image_border_set);
+   ORD(image_border_get);
+   ORD(image_draw);
+   ORD(image_comment_get);
+   ORD(image_format_get);
+   ORD(image_colorspace_set);
+   ORD(image_colorspace_get);
+   ORD(image_native_set);
+   ORD(image_native_get);
+   ORD(image_cache_flush);
+   ORD(image_cache_set);
+   ORD(image_cache_get);
+   ORD(font_draw);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi = 
+{
+   EVAS_MODULE_API_VERSION, 
+     EVAS_MODULE_TYPE_ENGINE,
+     "xrender_x11",
+     "none"
+};
+
diff --git a/src/modules/engines/xrender_x11/evas_engine.h b/src/modules/engines/xrender_x11/evas_engine.h
new file mode 100644 (file)
index 0000000..08be334
--- /dev/null
@@ -0,0 +1,176 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+#include <X11/Xlib.h>
+#include <X11/Xutil.h>
+#include <X11/Xatom.h>
+#include <X11/extensions/XShm.h>
+#include <X11/extensions/Xrender.h>
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+typedef struct _Ximage_Info      Ximage_Info;
+typedef struct _Ximage_Image     Ximage_Image;
+typedef struct _Xrender_Surface  Xrender_Surface;
+
+struct _Ximage_Info
+{
+   Display           *disp;
+   Drawable           root;
+   Drawable           draw;
+   int                depth;
+   Visual            *vis;
+   int                pool_mem;
+   Evas_List         *pool;
+   unsigned char      can_do_shm;
+   XRenderPictFormat *fmt32;
+   XRenderPictFormat *fmt24;
+   XRenderPictFormat *fmt8;
+   XRenderPictFormat *fmt4;
+   XRenderPictFormat *fmt1;
+   XRenderPictFormat *fmtdef;
+   unsigned char      mul_r, mul_g, mul_b, mul_a;
+   Xrender_Surface   *mul;
+   int                references;
+};
+
+struct _Ximage_Image
+{
+   Ximage_Info     *xinf;
+   XImage          *xim;
+   XShmSegmentInfo *shm_info;
+   int              w, h;
+   int              depth;
+   int              line_bytes;
+   unsigned char   *data;
+   unsigned char    available : 1;
+};
+
+struct _Xrender_Surface
+{
+   Ximage_Info       *xinf;
+   int                w, h;
+   int                depth;
+   XRenderPictFormat *fmt;
+   Drawable           draw;
+   Picture            pic;
+   unsigned char      alpha : 1;
+   unsigned char      allocated : 1;
+   unsigned char      bordered : 1;
+};
+
+/* ximage support calls (ximage vs xshmimage, cache etc.) */
+Ximage_Info  *_xr_image_info_get(Display *disp, Drawable draw, Visual *vis);
+void          _xr_image_info_free(Ximage_Info *xinf);
+void          _xr_image_info_pool_flush(Ximage_Info *xinf, int max_num, int max_mem);
+Ximage_Image *_xr_image_new(Ximage_Info *xinf, int w, int h, int depth);
+void          _xr_image_free(Ximage_Image *xim);
+void          _xr_image_put(Ximage_Image *xim, Drawable draw, int x, int y, int w, int h);
+
+/* xrender support calls */
+Xrender_Surface *_xr_render_surface_new(Ximage_Info *xinf, int w, int h, XRenderPictFormat *fmt, int alpha);
+Xrender_Surface *_xr_render_surface_adopt(Ximage_Info *xinf, Drawable draw, int w, int h, int alpha);
+Xrender_Surface *_xr_render_surface_format_adopt(Ximage_Info *xinf, Drawable draw, int w, int h, XRenderPictFormat *fmt, int alpha);
+void             _xr_render_surface_free(Xrender_Surface *rs);
+void             _xr_render_surface_repeat_set(Xrender_Surface *rs, int repeat);
+void             _xr_render_surface_solid_rectangle_set(Xrender_Surface *rs, int r, int g, int b, int a, int x, int y, int w, int h);
+void             _xr_render_surface_argb_pixels_fill(Xrender_Surface *rs, int sw, int sh, void *pixels, int x, int y, int w, int h, int ox, int oy);
+void             _xr_render_surface_rgb_pixels_fill(Xrender_Surface *rs, int sw, int sh, void *pixels, int x, int y, int w, int h, int ox, int oy);
+void             _xr_render_surface_clips_set(Xrender_Surface *rs, RGBA_Draw_Context *dc, int rx, int ry, int rw, int rh);
+void             _xr_render_surface_composite(Xrender_Surface *srs, Xrender_Surface *drs, RGBA_Draw_Context *dc, int sx, int sy, int sw, int sh, int x, int y, int w, int h, int smooth);
+void             _xr_render_surface_copy(Xrender_Surface *srs, Xrender_Surface *drs, int sx, int sy, int x, int y, int w, int h);
+void             _xr_render_surface_rectangle_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, int x, int y, int w, int h);
+void             _xr_render_surface_line_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, int x1, int y1, int x2, int y2);
+void             _xre_poly_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points);
+  
+    
+typedef struct _XR_Image XR_Image;
+
+struct _XR_Image
+{
+   Ximage_Info     *xinf;
+   const char      *file;
+   const char      *key;
+   char            *fkey;
+   RGBA_Image      *im;
+   void            *data;
+   int              w, h;
+   Xrender_Surface *surface;
+   int              references;
+   char            *format;
+   const char      *comment;
+   Tilebuf         *updates;
+   RGBA_Image_Loadopts load_opts;
+   struct {
+      int           space;
+      void         *data;
+      unsigned char no_free : 1;
+   } cs;
+   unsigned char    alpha : 1;
+   unsigned char    dirty : 1;
+   unsigned char    free_data : 1;
+};
+
+XR_Image *_xre_image_load(Ximage_Info *xinf, const char *file, const char *key, Evas_Image_Load_Opts *lo);
+XR_Image *_xre_image_new_from_data(Ximage_Info *xinf, int w, int h, void *data, int alpha, int cspace);
+XR_Image *_xre_image_new_from_copied_data(Ximage_Info *xinf, int w, int h, void *data, int alpha, int cspace);
+XR_Image *_xre_image_new(Ximage_Info *xinf, int w, int h);
+void      _xre_image_resize(XR_Image *im, int w, int h);
+void      _xre_image_free(XR_Image *im);
+void      _xre_image_region_dirty(XR_Image *im, int x, int y, int w, int h);
+void      _xre_image_dirty(XR_Image *im);
+XR_Image *_xre_image_copy(XR_Image *im);
+void     *_xre_image_data_get(XR_Image *im);
+XR_Image *_xre_image_data_find(void *data);
+void      _xre_image_data_put(XR_Image *im, void *data);
+void      _xre_image_alpha_set(XR_Image *im, int alpha);
+int       _xre_image_alpha_get(XR_Image *im);
+void      _xre_image_border_set(XR_Image *im, int l, int r, int t, int b);
+void      _xre_image_border_get(XR_Image *im, int *l, int *r, int *t, int *b);
+void      _xre_image_surface_gen(XR_Image *im);
+void      _xre_image_cache_set(int size);
+int       _xre_image_cache_get(void);
+
+typedef struct _XR_Font_Surface XR_Font_Surface;
+
+struct _XR_Font_Surface
+{
+   Ximage_Info     *xinf;
+   RGBA_Font_Glyph *fg;
+   int              w, h;
+   Drawable         draw;
+   Picture          pic;
+};
+
+XR_Font_Surface *_xre_font_surface_new(Ximage_Info *xinf, RGBA_Font_Glyph *fg);
+void             _xre_font_surface_free(XR_Font_Surface *fs);
+void             _xre_font_surface_draw(Ximage_Info *xinf, RGBA_Image *surface, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y);
+
+typedef struct _XR_Gradient XR_Gradient;
+
+struct _XR_Gradient
+{
+   Ximage_Info     *xinf;
+   Xrender_Surface *surface;
+   RGBA_Gradient   *grad;
+   unsigned char    changed : 1;
+   int              sw, sh;
+};
+
+XR_Gradient *_xre_gradient_new(Ximage_Info *xinf);
+void         _xre_gradient_free(XR_Gradient *gr);
+void         _xre_gradient_color_stop_add(XR_Gradient *gr, int r, int g, int b, int a, int delta);
+void         _xre_gradient_alpha_stop_add(XR_Gradient *gr, int a, int delta);
+void         _xre_gradient_color_data_set(XR_Gradient *gr, void *map, int len, int has_alpha);
+void         _xre_gradient_alpha_data_set(XR_Gradient *gr, void *alpha_map, int len);
+void         _xre_gradient_clear(XR_Gradient *gr);
+void         _xre_gradient_fill_set(XR_Gradient *gr, int x, int y, int w, int h);
+void         _xre_gradient_fill_angle_set(XR_Gradient *gr, double angle);
+void         _xre_gradient_fill_spread_set(XR_Gradient *gr, int spread);
+void         _xre_gradient_angle_set(XR_Gradient *gr, double angle);
+void         _xre_gradient_offset_set(XR_Gradient *gr, float offset);
+void         _xre_gradient_direction_set(XR_Gradient *gr, int direction);
+void         _xre_gradient_type_set(XR_Gradient *gr, char *name, char *params);
+void         _xre_gradient_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, XR_Gradient *gr, int x, int y, int w, int h);
+    
+#endif
diff --git a/src/modules/engines/xrender_x11/evas_engine_font.c b/src/modules/engines/xrender_x11/evas_engine_font.c
new file mode 100644 (file)
index 0000000..3f191d2
--- /dev/null
@@ -0,0 +1,191 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_X11.h"
+
+static Evas_Hash *_xr_fg_pool = NULL;
+
+XR_Font_Surface *
+_xre_font_surface_new(Ximage_Info *xinf, RGBA_Font_Glyph *fg)
+{    
+   XR_Font_Surface *fs;
+   DATA8 *data;
+   int w, h, j;
+   XRenderPictureAttributes att;
+   XRenderPictFormat *fmt;
+   Ximage_Image  *xim;
+   Evas_Hash *pool;
+   char buf[256], buf2[256];
+   
+   data = fg->glyph_out->bitmap.buffer;
+   w = fg->glyph_out->bitmap.width;
+   h = fg->glyph_out->bitmap.rows;
+   j = fg->glyph_out->bitmap.pitch;
+   if (j < w) j = w;
+   if ((w <= 0) || (h <= 0)) return NULL;
+
+   if (fg->ext_dat)
+     {
+       fs = fg->ext_dat;
+       if ((fs->xinf->disp == xinf->disp) && (fs->xinf->root == xinf->root))
+         return fs;
+       snprintf(buf, sizeof(buf), "@%p@/@%lx@", fs->xinf->disp, fs->xinf->root);
+       pool = evas_hash_find(_xr_fg_pool, buf);
+       if (pool)
+         {
+            snprintf(buf, sizeof(buf), "%p", fg);
+            fs = evas_hash_find(pool, buf);
+            if (fs) return fs;
+         }
+     }
+
+   fs = calloc(1, sizeof(XR_Font_Surface));
+   if (!fs) return NULL;
+
+   fs->xinf = xinf;
+   fs->fg = fg;
+   fs->xinf->references++;
+   fs->w = w;
+   fs->h = h;
+   
+   snprintf(buf, sizeof(buf), "@%p@/@%lx@", fs->xinf->disp, fs->xinf->root);
+   pool = evas_hash_find(_xr_fg_pool, buf);
+   snprintf(buf2, sizeof(buf2), "%p", fg);
+   pool = evas_hash_add(pool, buf2, fs);
+   _xr_fg_pool = evas_hash_add(_xr_fg_pool, buf, pool);
+
+   /* FIXME: maybe use fmt4? */
+   fmt = xinf->fmt8;
+   fs->draw = XCreatePixmap(xinf->disp, xinf->root, w, h,fmt->depth);
+   att.dither = 0;
+   att.component_alpha = 0;
+   att.repeat = 0;
+   fs->pic = XRenderCreatePicture(xinf->disp, fs->draw,fmt, 
+                                 CPRepeat | CPDither | CPComponentAlpha, &att);
+   
+   /* FIXME: handle if fmt->depth != 8 */
+   xim = _xr_image_new(fs->xinf, w, h,fmt->depth);
+   if ((fg->glyph_out->bitmap.num_grays == 256) &&
+       (fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays))
+     {
+       int x, y;
+       DATA8 *p1, *p2;
+       
+       for (y = 0; y < h; y++)
+         {
+            p1 = data + (j * y);
+            p2 = ((DATA8 *)xim->data) + (xim->line_bytes * y);
+            for (x = 0; x < w; x++)
+              {
+                 *p2 = *p1;
+                 p1++;
+                 p2++;
+              }
+         }
+       
+     }
+   else
+     {
+        DATA8 *tmpbuf = NULL, *dp, *tp, bits;
+       int bi, bj, end;
+       const DATA8 bitrepl[2] = {0x0, 0xff};
+       
+       tmpbuf = alloca(w);
+         {
+            int x, y;
+            DATA8 *p1, *p2;
+            
+            for (y = 0; y < h; y++)
+              {
+                 p1 = tmpbuf;
+                 p2 = ((DATA8 *)xim->data) + (xim->line_bytes * y);
+                 tp = tmpbuf;
+                 dp = data + (y * fg->glyph_out->bitmap.pitch);
+                 for (bi = 0; bi < w; bi += 8)
+                   {
+                      bits = *dp;
+                      if ((w - bi) < 8) end = w - bi;
+                      else end = 8;
+                      for (bj = 0; bj < end; bj++)
+                        {
+                           *tp = bitrepl[(bits >> (7 - bj)) & 0x1];
+                           tp++;
+                        }
+                      dp++;
+                   }
+                 for (x = 0; x < w; x++)
+                   {
+                      *p2 = *p1;
+                      p1++;
+                      p2++;
+                   }
+              }
+         }
+     }
+   _xr_image_put(xim, fs->draw, 0, 0, w, h);
+   return fs;
+}
+
+static Evas_Bool
+_xre_font_pool_cb(const Evas_Hash *hash, const char *key, void *data, void *fdata)
+{
+   Evas_Hash *pool;
+   XR_Font_Surface *fs;
+   char buf[256];
+   
+   fs = fdata;
+   pool = data;
+   snprintf(buf, sizeof(buf), "@%p@/@%lx@", fs->xinf->disp, fs->xinf->root);
+   pool = evas_hash_del(pool, buf, fs);
+   hash = evas_hash_modify(hash, key, pool);
+   return 1;
+}
+
+void
+_xre_font_surface_free(XR_Font_Surface *fs)
+{
+   if (!fs) return;
+   evas_hash_foreach(_xr_fg_pool, _xre_font_pool_cb, fs);
+   XFreePixmap(fs->xinf->disp, fs->draw);
+   XRenderFreePicture(fs->xinf->disp, fs->pic);
+   _xr_image_info_free(fs->xinf);
+   free(fs);
+}
+
+void
+_xre_font_surface_draw(Ximage_Info *xinf, RGBA_Image *surface, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y)
+{
+   XR_Font_Surface *fs;
+   Xrender_Surface *target_surface;
+   XRectangle rect;
+   int r, g, b, a;
+   
+   fs = fg->ext_dat;
+   if (!fs || !fs->xinf || !dc || !dc->col.col) return;
+   if (!surface || !surface->image.data) return;
+   target_surface = (Xrender_Surface *)(surface->image.data);
+   a = (dc->col.col >> 24) & 0xff;
+   r = (dc->col.col >> 16) & 0xff;
+   g = (dc->col.col >> 8 ) & 0xff;
+   b = (dc->col.col      ) & 0xff;
+   if ((fs->xinf->mul_r != r) || (fs->xinf->mul_g != g) ||
+       (fs->xinf->mul_b != b) || (fs->xinf->mul_a != a))
+     {
+       fs->xinf->mul_r = r;
+       fs->xinf->mul_g = g;
+       fs->xinf->mul_b = b;
+       fs->xinf->mul_a = a;
+       _xr_render_surface_solid_rectangle_set(fs->xinf->mul, r, g, b, a, 0, 0, 1, 1);
+     }
+   rect.x = x; rect.y = y; rect.width = fs->w; rect.height = fs->h;
+   if (dc->clip.use)
+     {
+       RECTS_CLIP_TO_RECT(rect.x, rect.y, rect.width, rect.height,
+                          dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
+     }
+   XRenderSetPictureClipRectangles(target_surface->xinf->disp, 
+                                  target_surface->pic, 0, 0, &rect, 1);
+   XRenderComposite(fs->xinf->disp, PictOpOver, fs->xinf->mul->pic, 
+                   fs->pic, target_surface->pic,
+                   0, 0, 0, 0, x, y, fs->w, fs->h);
+}
diff --git a/src/modules/engines/xrender_x11/evas_engine_gradient.c b/src/modules/engines/xrender_x11/evas_engine_gradient.c
new file mode 100644 (file)
index 0000000..30515b5
--- /dev/null
@@ -0,0 +1,209 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_X11.h"
+#include <math.h>
+
+XR_Gradient *
+_xre_gradient_new(Ximage_Info *xinf)
+{
+   XR_Gradient  *gr;
+
+   if (!xinf) return NULL;
+   gr = calloc(1, sizeof(XR_Gradient));
+   if (!gr) return NULL;
+   gr->grad = evas_common_gradient_new();
+   if (!gr->grad)
+     {
+       free(gr);
+       return NULL;
+     }
+   gr->xinf = xinf;
+   gr->xinf->references++;
+   gr->changed = 1;
+   return gr;
+}
+
+void
+_xre_gradient_free(XR_Gradient *gr)
+{
+   if (!gr) return;
+   if (gr->grad)
+       evas_common_gradient_free(gr->grad);
+   if (gr->surface)
+       _xr_render_surface_free(gr->surface);
+   _xr_image_info_free(gr->xinf);
+   free(gr);
+}
+
+void
+_xre_gradient_color_stop_add(XR_Gradient *gr, int r, int g, int b, int a, int delta)
+{
+   if (!gr) return;
+   evas_common_gradient_color_stop_add(gr->grad, r, g, b, a, delta);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_alpha_stop_add(XR_Gradient *gr, int a, int delta)
+{
+   if (!gr) return;
+   evas_common_gradient_alpha_stop_add(gr->grad, a, delta);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_clear(XR_Gradient *gr)
+{
+   if (!gr) return;
+   evas_common_gradient_clear(gr->grad);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_color_data_set(XR_Gradient *gr, void *map, int len, int has_alpha)
+{
+   evas_common_gradient_color_data_set(gr->grad, map, len, has_alpha);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_alpha_data_set(XR_Gradient *gr, void *amap, int len)
+{
+   evas_common_gradient_alpha_data_set(gr->grad, amap, len);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_fill_set(XR_Gradient *gr, int x, int y, int w, int h)
+{
+   if (!gr) return;
+   evas_common_gradient_fill_set(gr->grad, x, y, w, h);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_fill_angle_set(XR_Gradient *gr, double angle)
+{
+   if (!gr) return;
+   evas_common_gradient_fill_angle_set(gr->grad, angle);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_fill_spread_set(XR_Gradient *gr, int spread)
+{
+   if (!gr) return;
+   evas_common_gradient_fill_spread_set(gr->grad, spread);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_angle_set(XR_Gradient *gr, double angle)
+{
+   if (!gr) return;
+   evas_common_gradient_map_angle_set(gr->grad, angle);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_offset_set(XR_Gradient *gr, float offset)
+{
+   if (!gr) return;
+   evas_common_gradient_map_offset_set(gr->grad, offset);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_direction_set(XR_Gradient *gr, int direction)
+{
+   if (!gr) return;
+   evas_common_gradient_map_direction_set(gr->grad, direction);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_type_set(XR_Gradient *gr, char *name, char *params)
+{
+   if (!gr) return;
+   evas_common_gradient_type_set(gr->grad, name, params);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, XR_Gradient *gr, int x, int y, int w, int h)
+{
+   int alpha = 0;
+
+   if ((w < 1) || (h < 1)) return;
+   if (!rs || !dc || !gr) return;
+   if (!gr->xinf || !gr->grad || !gr->grad->type.geometer) return;
+
+   if (gr->grad->type.geometer->has_alpha(gr->grad, dc->render_op) ||
+       gr->grad->type.geometer->has_mask(gr->grad, dc->render_op))
+       alpha = 1;
+   if (((gr->sw != w) || (gr->sh != h)) && gr->surface)
+     {
+       _xr_render_surface_free(gr->surface);
+       gr->surface = NULL;
+       gr->changed = 1;
+     }
+   if (!gr->surface)
+     {
+       gr->surface = _xr_render_surface_new(gr->xinf, w, h, gr->xinf->fmt32, 1);
+       if (!gr->surface) return;
+       gr->changed = 1;
+     }
+   if (gr->changed)
+     {
+       int op = dc->render_op, cuse = dc->clip.use;
+       RGBA_Image    *im;
+       Ximage_Image  *xim;
+
+       xim = _xr_image_new(gr->xinf, w, h, gr->surface->depth);
+       if (!xim)
+         {
+           _xr_render_surface_free(gr->surface);
+           gr->surface = NULL;
+           return;
+         }
+
+        im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
+                                                  w, h,
+                                                  (DATA32 *)xim->data,
+                                                  1, EVAS_COLORSPACE_ARGB8888);
+       if (!im)
+         {
+             /* FIXME: xim is leaking. */
+           _xr_render_surface_free(gr->surface);
+           gr->surface = NULL;
+           return;
+         }
+
+       dc->render_op = _EVAS_RENDER_FILL;
+       dc->clip.use = 0;
+       evas_common_gradient_draw(im, dc, 0, 0, w, h, gr->grad);
+       if
+#ifdef WORDS_BIGENDIAN
+          (xim->xim->byte_order == LSBFirst)
+#else
+          (xim->xim->byte_order == MSBFirst)
+#endif
+         {
+            DATA32  *p = im->image.data, *pe = p + (w * h);
+            while (p < pe)
+              {
+                 *p = (*p << 24) + ((*p << 8) & 0xff0000) + ((*p >> 8) & 0xff00) + (*p >> 24);
+                 p++;
+              }
+         }
+       _xr_image_put(xim, gr->surface->draw, 0, 0, w, h);
+       evas_cache_image_drop(&im->cache_entry);
+       dc->render_op = op;
+       dc->clip.use = cuse;
+     }
+   gr->surface->alpha = alpha;
+   _xr_render_surface_composite(gr->surface, rs, dc, 0, 0, gr->surface->w, gr->surface->h, x, y, w, h, 0);
+   gr->changed = 0;
+   gr->sw = w;  gr->sh = h;
+}
diff --git a/src/modules/engines/xrender_x11/evas_engine_image.c b/src/modules/engines/xrender_x11/evas_engine_image.c
new file mode 100644 (file)
index 0000000..1fa20c5
--- /dev/null
@@ -0,0 +1,690 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_X11.h"
+
+static Evas_Hash *_xr_image_hash        = NULL;
+static int        _xr_image_cache_size  = 0;
+static int        _xr_image_cache_usage = 0;
+static Evas_List *_xr_image_cache       = NULL;
+static Evas_Hash *_xr_image_dirty_hash  = NULL;
+
+static void
+__xre_image_dirty_hash_add(XR_Image *im)
+{
+   char buf[64];
+   
+   if (!im->data) return;
+   snprintf(buf, sizeof(buf), "%p", im->data);
+   _xr_image_dirty_hash = evas_hash_add(_xr_image_dirty_hash, buf, im);
+}
+
+static void
+__xre_image_dirty_hash_del(XR_Image *im)
+{
+   char buf[64];
+   
+   if (!im->data) return;
+   snprintf(buf, sizeof(buf), "%p", im->data);
+   _xr_image_dirty_hash = evas_hash_del(_xr_image_dirty_hash, buf, im);
+}
+
+static XR_Image *
+__xre_image_dirty_hash_find(void *data)
+{
+   char buf[64];
+   
+   snprintf(buf, sizeof(buf), "%p", data);
+   return evas_hash_find(_xr_image_dirty_hash, buf);
+}
+
+static XR_Image *
+__xre_image_find(char *fkey)
+{
+   XR_Image *im;
+   
+   im = evas_hash_find(_xr_image_hash, fkey);
+   if (!im)
+     {
+       Evas_List *l;
+       
+       for (l = _xr_image_cache; l; l = l->next)
+         {
+            im = l->data;
+            if (!strcmp(im->fkey, fkey))
+              {
+                 _xr_image_cache = evas_list_remove_list(_xr_image_cache, l);
+                 _xr_image_hash = evas_hash_add(_xr_image_hash, im->fkey, im);
+                 _xr_image_cache_usage -= (im->w * im->h * 4);
+                 break;
+              }
+            im = NULL;
+         }
+     }
+   if (im) im->references++;
+   return im;
+}
+
+XR_Image *
+_xre_image_load(Ximage_Info *xinf, const char *file, const char *key, Evas_Image_Load_Opts *lo)
+{
+   XR_Image *im;
+   char buf[4096];
+
+   if (!file) return NULL;
+   if (!lo)
+     {
+       if (key)
+         snprintf(buf, sizeof(buf), "/@%p@%lx@/%s//://%s", xinf->disp, xinf->root, file, key);
+       else
+         snprintf(buf, sizeof(buf), "/@%p@%lx@/%s", xinf->disp, xinf->root, file);
+     }
+   else
+     {
+       if (key)
+         snprintf(buf, sizeof(buf), "//@/%i/%1.5f/%ix%i//@%p@%lx@/%s//://%s", lo->scale_down_by, lo->dpi, lo->w, lo->h, xinf->disp, xinf->root, file, key);
+       else
+         snprintf(buf, sizeof(buf), "//@/%i/%1.5f/%ix%i//@%p@%lx@/%s", lo->scale_down_by, lo->dpi, lo->w, lo->h, xinf->disp, xinf->root, file);
+     }
+   im = __xre_image_find(buf);
+   if (im)
+     {
+       return im;
+     }
+   
+   im = calloc(1, sizeof(XR_Image));
+   if (!im) return NULL;
+   im->im = evas_common_load_image_from_file(file, key, lo);
+   if (!im->im)
+     {
+       free(im);
+       return NULL;
+     }
+   im->xinf = xinf;
+   im->xinf->references++;
+   im->cs.space = EVAS_COLORSPACE_ARGB8888;
+   im->fkey = strdup(buf);
+   im->file = evas_stringshare_add(file);
+   if (key) im->key = evas_stringshare_add(key);
+   im->w = im->im->cache_entry.w;
+   im->h = im->im->cache_entry.h;
+   im->references = 1;
+   if (lo) im->load_opts = *lo;
+   if (im->im->info.comment) im->comment = evas_stringshare_add(im->im->info.comment);
+//   if (im->im->info.format == 1) im->format = evas_stringshare_add("png");
+   if (im->im->cache_entry.flags.alpha) im->alpha = 1;
+   _xr_image_hash = evas_hash_direct_add(_xr_image_hash, im->fkey, im);
+   return im;
+}
+
+XR_Image *
+_xre_image_new_from_data(Ximage_Info *xinf, int w, int h, void *data, int alpha, int cspace)
+{
+   XR_Image *im;
+
+   im = calloc(1, sizeof(XR_Image));
+   if (!im) return NULL;
+   im->xinf = xinf;
+   im->xinf->references++;
+   im->cs.space = cspace;
+   im->w = w;
+   im->h = h;
+   im->references = 1;
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       im->data = data;
+       im->alpha = alpha;
+       break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       im->cs.data = data;
+       im->cs.no_free = 1;
+       break;
+      default:
+       abort();
+       break;
+     }
+   im->dirty = 1;
+   __xre_image_dirty_hash_add(im);
+   return im;
+}
+
+XR_Image *
+_xre_image_new_from_copied_data(Ximage_Info *xinf, int w, int h, void *data, int alpha, int cspace)
+{
+   XR_Image *im;
+
+   im = calloc(1, sizeof(XR_Image));
+   if (!im) return NULL;
+   im->cs.space = cspace;
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       im->data = malloc(w * h * 4);
+       if (!im->data)
+         {
+            free(im);
+            return NULL;
+         }
+       if (data)
+         {
+            Gfx_Func_Copy func;
+            
+            func = evas_common_draw_func_copy_get(w * h, 0);
+            if (func) func(data, im->data, w * h);
+            evas_common_cpu_end_opt();
+         }
+       im->alpha = alpha;
+       im->free_data = 1;
+        break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+        im->cs.no_free = 0;
+        im->cs.data = calloc(1, h * sizeof(unsigned char *) * 2);
+       if ((data) && (im->cs.data))
+         memcpy(im->cs.data, data, h * sizeof(unsigned char *) * 2);
+       break;
+      default:
+       abort();
+       break;
+     }
+   im->w = w;
+   im->h = h;
+   im->references = 1;
+   im->xinf = xinf;
+   im->xinf->references++;
+   im->dirty = 1;
+   __xre_image_dirty_hash_add(im);
+   return im;
+}
+
+XR_Image *
+_xre_image_new(Ximage_Info *xinf, int w, int h)
+{
+   XR_Image *im;
+
+   im = calloc(1, sizeof(XR_Image));
+   if (!im) return NULL;
+   im->data = malloc(w * h * 4);
+   if (!im->data)
+     {
+       free(im);
+       return NULL;
+     }
+   im->w = w;
+   im->h = h;
+   im->references = 1;
+   im->cs.space = EVAS_COLORSPACE_ARGB8888;
+   im->xinf = xinf;
+   im->xinf->references++;
+   im->free_data = 1;
+   im->alpha = 1;
+   im->dirty = 1;
+   __xre_image_dirty_hash_add(im);
+   return im;
+}
+
+static void
+__xre_image_real_free(XR_Image *im)
+{
+   if (im->cs.data)
+     {
+       if (!im->cs.no_free) free(im->cs.data);
+     }
+   if (im->file) evas_stringshare_del(im->file);
+   if (im->key) evas_stringshare_del(im->key);
+   if (im->fkey) free(im->fkey);
+   if (im->im) evas_cache_image_drop(&im->im->cache_entry);
+   if ((im->data) && (im->dirty)) __xre_image_dirty_hash_del(im);
+   if ((im->free_data) && (im->data)) free(im->data);
+   if (im->surface) _xr_render_surface_free(im->surface);
+   if (im->format) evas_stringshare_del(im->format);
+   if (im->comment) evas_stringshare_del(im->comment);
+   if (im->updates) evas_common_tilebuf_free(im->updates);
+   _xr_image_info_free(im->xinf);
+   free(im);
+}
+
+void
+_xre_image_free(XR_Image *im)
+{
+   im->references--;
+   if (im->references != 0) return;
+   if (!im->dirty)
+     {
+       if (im->fkey)
+         _xr_image_hash = evas_hash_del(_xr_image_hash, im->fkey, im);
+       _xr_image_cache = evas_list_prepend(_xr_image_cache, im);
+       _xr_image_cache_usage += (im->w * im->h * 4);
+       _xre_image_cache_set(_xr_image_cache_size);
+     }
+   else
+     {
+       __xre_image_real_free(im);
+     }
+}
+
+void
+_xre_image_region_dirty(XR_Image *im, int x, int y, int w, int h)
+{ 
+   if (!im->updates)
+     {
+       im->updates = evas_common_tilebuf_new(im->w, im->h);
+       if (im->updates) evas_common_tilebuf_set_tile_size(im->updates, 8, 8);
+     }
+   if (im->updates)
+     evas_common_tilebuf_add_redraw(im->updates, x, y, w, h);
+}
+
+void
+_xre_image_dirty(XR_Image *im)
+{
+   if (im->dirty) return;
+   if (im->fkey)
+     _xr_image_hash = evas_hash_del(_xr_image_hash, im->fkey, im);
+   im->dirty = 1;
+   __xre_image_dirty_hash_add(im);
+}
+
+XR_Image *
+_xre_image_copy(XR_Image *im)
+{
+   XR_Image *im2;
+   void *data = NULL;
+
+   if (im->data) data = im->data;
+   else if (im->cs.data) data = im->cs.data;
+   else
+     {
+       if (!im->im)
+         im->im = evas_common_load_image_from_file(im->file, im->key, &(im->load_opts));
+       if (im->im)
+         {
+            evas_cache_image_load_data(&im->im->cache_entry);
+            data = im->im->image.data;
+         }
+     }
+   if (!data) return NULL;
+   im2 = _xre_image_new_from_copied_data(im->xinf, im->w, im->h, data, im->alpha, im->cs.space);
+   return im2;
+}
+
+void
+_xre_image_resize(XR_Image *im, int w, int h)
+{
+   if ((w == im->w) && (h == im->h)) return;
+   if (im->surface)
+     {
+       Xrender_Surface *old_surface;
+       old_surface = im->surface;
+       im->surface = _xr_render_surface_new(old_surface->xinf, w + 2, h + 2, old_surface->fmt, old_surface->alpha);
+       _xr_render_surface_free(old_surface);
+     }
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (im->data)
+         {
+            if (im->free_data)
+              {
+                 if (im->data) free(im->data);
+                 im->data = malloc(w * h * 4);
+              }
+         }
+       else if (im->im)
+         {
+            evas_cache_image_drop(&im->im->cache_entry);
+            im->im = NULL;
+            if (im->free_data)
+              {
+                 if (im->data) free(im->data);
+                 im->data = malloc(w * h * 4);
+              }
+         }
+       else
+         {
+            im->data = malloc(w * h * 4);
+            im->free_data = 1;
+         }
+        break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       if (im->data)
+         {
+            if (im->free_data)
+              {
+                 if (im->data) free(im->data);
+              }
+            im->data = NULL;
+         }
+       if (im->im)
+         {
+            evas_cache_image_drop(&im->im->cache_entry);
+            im->im = NULL;
+         }
+       if (!im->cs.no_free)
+         {
+            if (im->cs.data) free(im->cs.data);
+            im->cs.data = calloc(1, h * sizeof(unsigned char *) * 2);
+         }
+       break;
+      default:
+       abort();
+       break;
+     }
+   __xre_image_dirty_hash_del(im);
+   __xre_image_dirty_hash_add(im);
+   im->w = w;
+   im->h = h;
+}
+
+void *
+_xre_image_data_get(XR_Image *im)
+{
+   void *data = NULL;
+   
+   if (im->data) data = im->data;
+   else if (im->cs.data) data = im->cs.data;
+   else
+     {
+       if (!im->im) im->im = evas_common_load_image_from_file(im->file, im->key, &(im->load_opts));
+       if (im->im)
+         {
+            evas_cache_image_load_data(&im->im->cache_entry);
+            data = im->im->image.data;
+         }
+     }
+   return data;
+}
+
+XR_Image *
+_xre_image_data_find(void *data)
+{
+   XR_Image *im;
+   
+   im = __xre_image_dirty_hash_find(data);
+   if (im) 
+     {
+       im->references++;
+     }
+   return im;
+}
+
+void
+_xre_image_data_put(XR_Image *im, void *data)
+{
+   if (!data) return;
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       if (im->im)
+         {
+            if (data == im->im->image.data) return;
+            evas_cache_image_drop(&im->im->cache_entry);
+            im->im = NULL;
+         }
+       if (im->cs.data == data) return;
+       if (im->data)
+         {
+            if (im->data == data) return;
+            if (im->free_data) free(im->data);
+            im->free_data = 0;
+         }
+       im->data = data;
+       im->free_data = 0;
+        break;
+      case EVAS_COLORSPACE_YCBCR422P601_PL:
+      case EVAS_COLORSPACE_YCBCR422P709_PL:
+       if (im->data)
+         {
+            if (im->free_data) free(im->data);
+            im->data = NULL;
+         }
+       im->free_data = 0;
+       if (data == im->cs.data) return;
+       if (!im->cs.no_free)
+         {
+            if (im->cs.data) free(im->cs.data);
+         }
+       im->cs.data = data;
+       break;
+      default:
+       abort();
+       break;
+     }
+   __xre_image_dirty_hash_del(im);
+   __xre_image_dirty_hash_add(im);
+   if (im->surface)
+     {
+       _xr_render_surface_free(im->surface);
+       im->surface = NULL;
+     }
+   if (!im->dirty)
+     {
+       if (im->fkey)
+         _xr_image_hash = evas_hash_del(_xr_image_hash, im->fkey, im);
+       im->dirty = 1;
+     }
+   if (im->updates)
+     {
+       evas_common_tilebuf_free(im->updates);
+       im->updates = NULL;
+     }
+}
+
+void
+_xre_image_alpha_set(XR_Image *im, int alpha)
+{
+   if (im->alpha == alpha) return;
+   switch (im->cs.space)
+     {
+      case EVAS_COLORSPACE_ARGB8888:
+       im->alpha = alpha;
+       if (im->surface)
+         {
+            Xrender_Surface *old_surface;
+            
+            old_surface = im->surface;
+            im->surface = NULL;
+            if (im->alpha)
+              im->surface = _xr_render_surface_new(im->xinf, im->w + 2, im->h + 2, im->xinf->fmt32, 1);
+            else
+              {
+                 /* FIXME: if im->depth == 16, use xinf->fmtdef */
+                 if ((im->xinf->depth == 16) &&
+                     (im->xinf->vis->red_mask == 0xf800) &&
+                     (im->xinf->vis->green_mask == 0x07e0) &&
+                     (im->xinf->vis->blue_mask == 0x001f))
+                   im->surface = _xr_render_surface_new(im->xinf, im->w + 2, im->h + 2, im->xinf->fmtdef, 0);
+                 else
+                   im->surface = _xr_render_surface_new(im->xinf, im->w + 2, im->h + 2, im->xinf->fmt24, 0);
+              }
+            if (im->surface)
+              _xr_render_surface_copy(old_surface, im->surface, 0, 0, 0, 0, im->w + 2, im->h + 2);
+            _xr_render_surface_free(old_surface);
+         }
+       if (im->updates)
+         {
+            evas_common_tilebuf_free(im->updates);
+            im->updates = NULL;
+         }
+      default:
+       break;
+     }
+}
+
+int
+_xre_image_alpha_get(XR_Image *im)
+{
+   if (im->im)
+     {
+       if (im->im->cache_entry.space != EVAS_COLORSPACE_ARGB8888) return 0;
+     }
+   return im->alpha;
+}
+
+void
+_xre_image_border_set(XR_Image *im, int l, int r, int t, int b)
+{
+   if (!im) return;
+   _xre_image_surface_gen(im);
+   if (l < 1) l = 0;
+   if (r < 1) r = 0;
+   if (t < 1) t = 0;
+   if (b < 1) b = 0;
+   if (im->surface)
+     {
+       if (l | r | t | b)
+         im->surface->bordered = 1;
+       else
+         im->surface->bordered = 0;
+    }
+}
+
+void
+_xre_image_border_get(XR_Image *im, int *l, int *r, int *t, int *b)
+{
+}
+
+void
+_xre_image_surface_gen(XR_Image *im)
+{
+   void *data = NULL, *tdata = NULL;
+
+   if ((im->surface) && (!im->updates)) return;
+   if (im->data) data = im->data;
+   else
+     {
+       if (!im->im) im->im = evas_common_load_image_from_file(im->file, im->key, &(im->load_opts));
+       if (im->im)
+         {
+             evas_cache_image_load_data(&im->im->cache_entry);
+            data = im->im->image.data;
+         }
+     }
+   if (!data)
+     {
+       switch (im->cs.space)
+         {
+          case EVAS_COLORSPACE_ARGB8888:
+            return;
+            break;
+          case EVAS_COLORSPACE_YCBCR422P601_PL:
+          case EVAS_COLORSPACE_YCBCR422P709_PL:
+            if ((im->cs.data) && (*((unsigned char **)im->cs.data)))
+              {
+                 tdata = malloc(im->w * im->h * sizeof(DATA32));
+                 if (tdata)
+                   evas_common_convert_yuv_420p_601_rgba(im->cs.data, 
+                                                         tdata,
+                                                         im->w, im->h);
+                 data = tdata;
+              }
+            break;
+          default:
+            abort();
+            break;
+         }
+       if (!data) return;
+     }
+   if (im->surface)
+     {
+       if (im->updates)
+         {
+            Tilebuf_Rect *rects, *r;
+            
+            rects = evas_common_tilebuf_get_render_rects(im->updates);
+            if (rects)
+              {
+                 for (r = rects; r; r = (Tilebuf_Rect *)((Evas_Object_List *)r)->next)
+                   {
+                      int rx, ry, rw, rh;
+                      
+                      rx = r->x; ry = r->y; rw = r->w, rh = r->h;
+                      RECTS_CLIP_TO_RECT(rx, ry, rw, rh, 0, 0, im->w, im->h);
+                      if (im->alpha)
+                        _xr_render_surface_argb_pixels_fill(im->surface, im->w, im->h, data, rx, ry, rw, rh, 1, 1);
+                      else
+                      /* FIXME: if im->depth == 16 - convert to 16bpp then
+                       * upload */
+                        _xr_render_surface_rgb_pixels_fill(im->surface, im->w, im->h, data, rx, ry, rw, rh, 1, 1);
+                   }
+                 evas_common_tilebuf_free_render_rects(rects);
+              }
+            evas_common_tilebuf_free(im->updates);
+            im->updates = NULL;
+         }
+       if (tdata) free(tdata);
+       return;
+     }
+   if (im->alpha)
+     {
+       im->surface = _xr_render_surface_new(im->xinf, im->w + 2, im->h + 2, im->xinf->fmt32, 1);
+       _xr_render_surface_argb_pixels_fill(im->surface, im->w, im->h, data, 0, 0, im->w, im->h, 1, 1);
+     }
+   else
+     {
+       /* FIXME: if im->xinf->depth == 16, use xinf->fmtdef */
+       if ((im->xinf->depth == 16) &&
+           (im->xinf->vis->red_mask == 0xf800) &&
+           (im->xinf->vis->green_mask == 0x07e0) &&
+           (im->xinf->vis->blue_mask == 0x001f))
+         im->surface = _xr_render_surface_new(im->xinf, im->w + 2, im->h + 2, im->xinf->fmtdef, 0);
+       else
+         im->surface = _xr_render_surface_new(im->xinf, im->w + 2, im->h + 2, im->xinf->fmt24, 0);
+       /* FIXME: if im->depth == 16 - convert to 16bpp then
+        * upload */
+       _xr_render_surface_rgb_pixels_fill(im->surface, im->w, im->h, data, 0, 0, im->w, im->h, 1, 1);
+     }
+   /* fill borders */
+   _xr_render_surface_copy(im->surface, im->surface, 
+                          1, 1, 
+                          0, 1, 
+                          1, im->h);
+   _xr_render_surface_copy(im->surface, im->surface, 
+                          0, 1, 
+                          0, 0, 
+                          im->w + 2, 1);
+   _xr_render_surface_copy(im->surface, im->surface, 
+                          im->w, 1, 
+                          im->w + 1, 1, 
+                          1, im->h);
+   _xr_render_surface_copy(im->surface, im->surface, 
+                          0, im->h, 
+                          0, im->h + 1, 
+                          im->w + 2, 1);
+   if ((im->im) && (!im->dirty))
+     {
+       evas_cache_image_drop(&im->im->cache_entry);
+       im->im = NULL;
+     }
+   if (tdata) free(tdata);
+}
+
+void
+_xre_image_cache_set(int size)
+{
+   _xr_image_cache_size = size;
+   while (_xr_image_cache_usage > _xr_image_cache_size)
+     {
+       Evas_List *l;
+       
+       l = evas_list_last(_xr_image_cache);
+       if (l)
+         {
+            XR_Image *im;
+            
+            im = l->data;
+            _xr_image_cache = evas_list_remove_list(_xr_image_cache, l);
+            _xr_image_cache_usage -= (im->w * im->h * 4);
+            __xre_image_real_free(im);
+         }
+     }
+}
+
+int
+_xre_image_cache_get(void)
+{
+   return _xr_image_cache_size;
+}
diff --git a/src/modules/engines/xrender_x11/evas_engine_ximage.c b/src/modules/engines/xrender_x11/evas_engine_ximage.c
new file mode 100644 (file)
index 0000000..81470bb
--- /dev/null
@@ -0,0 +1,258 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_X11.h"
+
+static Evas_List *_image_info_list = NULL;
+
+static int _x_err = 0;
+static void
+_tmp_x_err(Display *d, XErrorEvent *ev)
+{
+   _x_err = 1;
+   return;
+}
+
+Ximage_Info *
+_xr_image_info_get(Display *disp, Drawable draw, Visual *vis)
+{
+   Ximage_Info *xinf, *xinf2;
+   Evas_List *l;
+   int di;
+   unsigned int dui;
+   
+   xinf2 = NULL;
+   for (l = _image_info_list; l; l = l->next)
+     {
+       xinf = l->data;
+       if (xinf->disp == disp)
+         {
+            xinf2 = xinf;
+            break;
+         }
+     }
+   xinf = calloc(1, sizeof(Ximage_Info));
+   if (!xinf) return NULL;
+   
+   xinf->references = 1;
+   xinf->disp = disp;
+   xinf->draw = draw;
+   XGetGeometry(xinf->disp, xinf->draw, &(xinf->root),
+               &di, &di, &dui, &dui, &dui, &dui);
+   xinf->vis = vis;
+   xinf->fmt32 = XRenderFindStandardFormat(xinf->disp, PictStandardARGB32);
+   xinf->fmt24 = XRenderFindStandardFormat(xinf->disp, PictStandardRGB24);
+   xinf->fmt8 = XRenderFindStandardFormat(xinf->disp, PictStandardA8);
+   xinf->fmt4 = XRenderFindStandardFormat(xinf->disp, PictStandardA4);
+   xinf->fmt1 = XRenderFindStandardFormat(xinf->disp, PictStandardA1);
+   
+   /* find fmt for default visual */
+   xinf->fmtdef = XRenderFindVisualFormat(xinf->disp, xinf->vis);
+   
+   xinf->mul = _xr_render_surface_new(xinf, 1, 1, xinf->fmt32, 1);
+   _xr_render_surface_repeat_set(xinf->mul, 1);
+   xinf->mul_r = xinf->mul_g = xinf->mul_b = xinf->mul_a = 0xff;
+   _xr_render_surface_solid_rectangle_set(xinf->mul, xinf->mul_r, xinf->mul_g, xinf->mul_b, xinf->mul_a, 0, 0, 1, 1);
+   if (xinf2)
+     {
+       xinf->can_do_shm = xinf2->can_do_shm;
+       xinf->depth = xinf2->depth;
+     }
+   else
+     {
+       XVisualInfo *vi, vit;
+       XShmSegmentInfo shm_info;
+       XImage *xim;
+       int num = 0;
+       
+       vit.visualid = XVisualIDFromVisual(xinf->vis);
+       vi = XGetVisualInfo(xinf->disp, VisualIDMask, &vit, &num);
+       if (!vi) xinf->depth = 32;
+       else
+         {
+            xinf->depth = vi->depth;
+            XFree(vi);
+         }
+       xinf->can_do_shm = 0;
+       xim = XShmCreateImage(xinf->disp, xinf->vis, xinf->depth, ZPixmap, NULL, &shm_info, 1, 1);
+       if (xim)
+         {
+            shm_info.shmid = shmget(IPC_PRIVATE, xim->bytes_per_line * xim->height, IPC_CREAT | 0777);
+            if (shm_info.shmid >= 0)
+              {
+                 shm_info.shmaddr = xim->data = shmat(shm_info.shmid, 0, 0);
+                 if ((shm_info.shmaddr) && (shm_info.shmaddr != (void *) -1))
+                   {
+                      XErrorHandler ph;
+                      
+                      XSync(xinf->disp, False);
+                      _x_err = 0;
+                      ph = XSetErrorHandler((XErrorHandler)_tmp_x_err);
+                      XShmAttach(xinf->disp, &shm_info);
+                      XSync(xinf->disp, False);
+                      XSetErrorHandler((XErrorHandler)ph);
+                      if (!_x_err) xinf->can_do_shm = 1;
+                      shmdt(shm_info.shmaddr);
+                   }
+                 shmctl(shm_info.shmid, IPC_RMID, 0);
+              }
+            XDestroyImage(xim);
+         }
+     }
+   _image_info_list = evas_list_prepend(_image_info_list, xinf);
+   return xinf;
+}
+
+void
+_xr_image_info_free(Ximage_Info *xinf)
+{
+   if (xinf->pool) XSync(xinf->disp, False);
+   _xr_image_info_pool_flush(xinf, 0, 0);
+   xinf->references--;
+   if (xinf->references != 0) return;
+   _xr_render_surface_free(xinf->mul);
+   free(xinf);
+   _image_info_list = evas_list_remove(_image_info_list, xinf);
+}
+
+void
+_xr_image_info_pool_flush(Ximage_Info *xinf, int max_num, int max_mem)
+{
+   if ((xinf->pool_mem <= max_mem) && (evas_list_count(xinf->pool) <= max_num)) return;
+   while ((xinf->pool_mem > max_mem) || (evas_list_count(xinf->pool) > max_num))
+     {
+       Ximage_Image *xim;
+       
+       if (!xinf->pool) break;
+       xim = xinf->pool->data;
+       _xr_image_free(xim);
+     }
+}
+
+Ximage_Image *
+_xr_image_new(Ximage_Info *xinf, int w, int h, int depth)
+{
+   Ximage_Image *xim, *xim2;
+   Evas_List *l;
+
+   xim2 = NULL;
+   for (l = xinf->pool; l; l = l->next)
+     {
+       xim = l->data;
+       if ((xim->w >= w) && (xim->h >= h) && (xim->depth == depth) && (xim->available))
+         {
+            if (!xim2) xim2 = xim;
+            else if ((xim->w * xim->h) < (xim2->w * xim2->h)) xim2 = xim;
+         }
+     }
+   if (xim2)
+     {
+       xim2->available = 0;
+       return xim2;
+     }
+   xim = calloc(1, sizeof(Ximage_Image));
+   if (xim)
+     {
+       xim->xinf = xinf;
+       xim->w = w;
+       xim->h = h;
+       xim->depth = depth;
+       xim->available = 0;
+       if (xim->xinf->can_do_shm)
+         {
+            xim->shm_info = calloc(1, sizeof(XShmSegmentInfo));
+            if (xim->shm_info)
+              {
+                 xim->xim = XShmCreateImage(xim->xinf->disp, xim->xinf->vis, xim->depth, ZPixmap, NULL, xim->shm_info, xim->w, xim->h);
+                 if (xim->xim)
+                   {
+                      xim->shm_info->shmid = shmget(IPC_PRIVATE, xim->xim->bytes_per_line * xim->xim->height, IPC_CREAT | 0777);
+                      if (xim->shm_info->shmid >= 0)
+                        {
+                           xim->shm_info->shmaddr = xim->xim->data = shmat(xim->shm_info->shmid, 0, 0);
+                           if ((xim->shm_info->shmaddr) && (xim->shm_info->shmaddr != (void *) -1))
+                             {
+                                XErrorHandler ph;
+                                
+                                XSync(xim->xinf->disp, False);
+                                _x_err = 0;
+                                ph = XSetErrorHandler((XErrorHandler)_tmp_x_err);
+                                XShmAttach(xim->xinf->disp, xim->shm_info);
+                                XSync(xim->xinf->disp, False);
+                                XSetErrorHandler((XErrorHandler)ph);
+                                if (!_x_err) goto xim_ok;
+                                shmdt(xim->shm_info->shmaddr);
+                             }
+                           shmctl(xim->shm_info->shmid, IPC_RMID, 0);
+                        }
+                      XDestroyImage(xim->xim);
+                   }
+                 free(xim->shm_info);
+                 xim->shm_info = NULL;
+              }
+         }
+       xim->xim = XCreateImage(xim->xinf->disp, xim->xinf->vis, xim->depth, ZPixmap, 0, NULL, xim->w, xim->h, 32, 0);
+       if (!xim->xim)
+         {
+            free(xim);
+            return NULL;
+         }
+       xim->xim->data = malloc(xim->xim->bytes_per_line * xim->xim->height);
+       if (!xim->xim->data)
+         {
+            XDestroyImage(xim->xim);
+            free(xim);
+            return NULL;
+         }
+     }
+   
+   xim_ok:
+   _xr_image_info_pool_flush(xinf, 32, (1600 * 1200 * 32 * 2));
+   
+   xim->line_bytes = xim->xim->bytes_per_line;
+   xim->data = (void *)(xim->xim->data);
+   xinf->pool_mem += (xim->w * xim->h * xim->depth);
+   xinf->pool = evas_list_append(xinf->pool, xim);
+   return xim;
+}
+
+void
+_xr_image_free(Ximage_Image *xim)
+{
+   if (xim->shm_info)
+     {
+       if (!xim->available) XSync(xim->xinf->disp, False);
+       XShmDetach(xim->xinf->disp, xim->shm_info);
+       XDestroyImage(xim->xim);
+       shmdt(xim->shm_info->shmaddr);
+       shmctl(xim->shm_info->shmid, IPC_RMID, 0);
+       free(xim->shm_info);
+     }
+   else
+     {
+       free(xim->xim->data);
+       xim->xim->data = NULL;
+       XDestroyImage(xim->xim);
+     }
+   xim->xinf->pool_mem -= (xim->w * xim->h * xim->depth);
+   xim->xinf->pool = evas_list_remove(xim->xinf->pool, xim);
+   free(xim);
+}
+
+void
+_xr_image_put(Ximage_Image *xim, Drawable draw, int x, int y, int w, int h)
+{
+   XGCValues gcv;
+   GC gc;
+   
+   gc = XCreateGC(xim->xinf->disp, draw, 0, &gcv);
+   if (xim->shm_info)
+     {
+       XShmPutImage(xim->xinf->disp, draw, gc, xim->xim, 0, 0, x, y, w, h, False);
+       XSync(xim->xinf->disp, False);
+     }
+   else
+     XPutImage(xim->xinf->disp, draw, gc, xim->xim, 0, 0, x, y, w, h);
+   xim->available = 1;
+   XFreeGC(xim->xinf->disp, gc);
+}
diff --git a/src/modules/engines/xrender_x11/evas_engine_xrender.c b/src/modules/engines/xrender_x11/evas_engine_xrender.c
new file mode 100644 (file)
index 0000000..edb3d66
--- /dev/null
@@ -0,0 +1,748 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "evas_common.h"
+//#include "evas_macros.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_X11.h"
+#include <math.h>
+
+/* this is a work around broken xrender - when/if this ever gets fixed in xorg
+ * we can comment this out and one day remove it - for now keep it until such
+ * a fix is spotted in the wild
+ */
+#define BROKEN_XORG_XRENDER 1
+
+/* should be const char*, but the prototype for XRenderSetPictureFilter
+ * is silly
+ */
+static inline char *
+get_filter(int smooth)
+{
+   return smooth ? FilterBest : FilterNearest;
+}
+
+Xrender_Surface *
+_xr_render_surface_new(Ximage_Info *xinf, int w, int h, XRenderPictFormat *fmt, int alpha)
+{
+   Xrender_Surface *rs;
+   XRenderPictureAttributes att;
+   
+   if ((!xinf) || (!fmt) || (w < 1) || (h < 1)) return NULL;
+   rs = calloc(1, sizeof(Xrender_Surface));
+   if (!rs) return NULL;
+   rs->xinf = xinf;
+   rs->w = w;
+   rs->h = h;
+   rs->fmt = fmt;
+   rs->alpha = alpha;
+   rs->depth = fmt->depth;
+   rs->allocated = 1;
+   rs->draw = XCreatePixmap(xinf->disp, xinf->root, w, h, fmt->depth);
+   if (rs->draw == None)
+     {
+       free(rs);
+       return NULL;
+     }
+   rs->xinf->references++;
+   att.dither = 1;
+   att.component_alpha = 0;
+   att.repeat = 0;
+   rs->pic = XRenderCreatePicture(xinf->disp, rs->draw, fmt, 
+                                 CPRepeat | CPDither | CPComponentAlpha, &att);
+   if (rs->pic == None)
+     {
+       XFreePixmap(rs->xinf->disp, rs->draw);
+       rs->xinf->references--;
+        free(rs);
+       return NULL;
+     }
+   return rs;
+}
+
+Xrender_Surface *
+_xr_render_surface_adopt(Ximage_Info *xinf, Drawable draw, int w, int h, int alpha)
+{
+   Xrender_Surface *rs;
+   XRenderPictFormat *fmt;
+   XRenderPictureAttributes att;
+   
+   if ((!xinf) || (draw == None) || (w < 1) || (h < 1)) return NULL;
+   fmt = XRenderFindVisualFormat(xinf->disp, xinf->vis);
+   if (!fmt) return NULL;
+   rs = calloc(1, sizeof(Xrender_Surface));
+   if (!rs) return NULL;
+   rs->xinf = xinf;
+   rs->w = w;
+   rs->h = h;
+   rs->fmt = fmt;
+   rs->alpha = alpha;
+   rs->depth = fmt->depth;
+   if (fmt->depth == 32) rs->alpha = 1;
+   rs->allocated = 0;
+   rs->draw = draw;
+   rs->xinf->references++;
+   att.dither = 1;
+   att.component_alpha = 0;
+   att.repeat = 0;
+   rs->pic = XRenderCreatePicture(xinf->disp, rs->draw, fmt, 
+                                 CPRepeat | CPDither | CPComponentAlpha, &att);
+   if (rs->pic == None)
+     {
+       rs->xinf->references--;
+        free(rs);
+       return NULL;
+     }
+   return rs;
+}
+
+Xrender_Surface *
+_xr_render_surface_format_adopt(Ximage_Info *xinf, Drawable draw, int w, int h, XRenderPictFormat *fmt, int alpha)
+{
+   Xrender_Surface *rs;
+   XRenderPictureAttributes att;
+   
+   if ((!xinf) || (!fmt) || (draw == None) || (w < 1) || (h < 1)) return NULL;
+   rs = calloc(1, sizeof(Xrender_Surface));
+   if (!rs) return NULL;
+   rs->xinf = xinf;
+   rs->w = w;
+   rs->h = h;
+   rs->fmt = fmt;
+   rs->alpha = alpha;
+   rs->depth = fmt->depth;
+   if (fmt->depth == 32) rs->alpha = 1;
+   rs->xinf->references++;
+   rs->allocated = 0;
+   rs->draw = draw;
+   att.dither = 0;
+   att.component_alpha = 0;
+   att.repeat = 0;
+   rs->pic = XRenderCreatePicture(xinf->disp, rs->draw, fmt, CPRepeat | CPDither | CPComponentAlpha, &att);
+   if (rs->pic == None)
+     {
+       rs->xinf->references--;
+        free(rs);
+       return NULL;
+     }
+   return rs;
+}
+
+void
+_xr_render_surface_free(Xrender_Surface *rs)
+{
+   if (!rs) return;
+   if (rs->xinf)
+     {
+       if ((rs->allocated) && (rs->draw != None))
+          XFreePixmap(rs->xinf->disp, rs->draw);
+       if (rs->pic != None)
+          XRenderFreePicture(rs->xinf->disp, rs->pic);
+       _xr_image_info_free(rs->xinf);
+       rs->xinf = NULL;
+     }
+   free(rs);
+}
+
+void
+_xr_render_surface_repeat_set(Xrender_Surface *rs, int repeat)
+{
+   XRenderPictureAttributes att;
+   
+   att.repeat = repeat;
+   XRenderChangePicture(rs->xinf->disp, rs->pic, CPRepeat, &att);
+}
+
+void
+_xr_render_surface_solid_rectangle_set(Xrender_Surface *rs, int r, int g, int b, int a, int x, int y, int w, int h)
+{
+   XRenderColor col;
+   
+   col.red   = (r << 8) | r;
+   col.green = (g << 8) | g;
+   col.blue  = (b << 8) | b;
+   col.alpha = (a << 8) | a;
+   XRenderFillRectangle(rs->xinf->disp, PictOpSrc, rs->pic, &col, x, y, w, h);
+}
+
+void
+_xr_render_surface_argb_pixels_fill(Xrender_Surface *rs, int sw, int sh, void *pixels, int x, int y, int w, int h, int ox, int oy)
+{
+   Ximage_Image  *xim;
+   unsigned int  *p, *sp, *sple, *spe;
+   unsigned int   jump, sjump;
+   
+   xim = _xr_image_new(rs->xinf, w, h, rs->depth);
+   if (!xim) return;
+   p = (unsigned int *)xim->data;
+   sp = ((unsigned int *)pixels) + (y * sw) + x;
+   jump = ((xim->line_bytes / 4) - w);
+   sjump = sw - w;
+   spe = sp + ((h - 1) * sw) + w;
+   if
+#ifdef WORDS_BIGENDIAN
+     (xim->xim->byte_order == LSBFirst)
+#else
+     (xim->xim->byte_order == MSBFirst)
+#endif
+     {
+       while (sp < spe)
+         {
+            sple = sp + w;
+            while (sp < sple)
+              {
+                 *p++ = (*sp << 24) + ((*sp << 8) & 0xff0000) + ((*sp >> 8) & 0xff00) + (*sp >> 24);
+//               *p++ = (B_VAL(sp) << 24) | (G_VAL(sp) << 16) | (R_VAL(sp) << 8) | A_VAL(sp);
+                 sp++;
+              }
+            p += jump;
+            sp += sjump;
+         }
+     }
+   else
+     {
+       while (sp < spe)
+         {
+            sple = sp + w;
+            while (sp < sple)
+               *p++ = *sp++;
+            p += jump;
+            sp += sjump;
+         }
+     }
+   _xr_image_put(xim, rs->draw, x + ox, y + oy, w, h);
+}
+
+void
+_xr_render_surface_rgb_pixels_fill(Xrender_Surface *rs, int sw, int sh, void *pixels, int x, int y, int w, int h, int ox, int oy)
+{
+   Ximage_Image  *xim;
+   unsigned int  *p, *sp, *sple, *spe;
+   unsigned int   jump, sjump;
+   
+   xim = _xr_image_new(rs->xinf, w, h, rs->depth);
+   if (!xim) return;
+   p = (unsigned int *)xim->data;
+   sp = ((unsigned int *)pixels) + (y * sw) + x;
+   sjump = sw - w;
+   spe = sp + ((h - 1) * sw) + w;
+   if (rs->depth == 16)
+     {
+       jump = ((xim->line_bytes / 2) - w);
+       /* FIXME: if rs->depth == 16 - convert */
+       Gfx_Func_Convert conv_func;
+       int swap;
+       
+#ifdef WORDS_BIGENDIAN
+       swap = (int)(xim->xim->byte_order == LSBFirst);
+#else
+       swap = (int)(xim->xim->byte_order == MSBFirst);
+#endif
+       /* FIXME: swap not handled */
+       conv_func = evas_common_convert_func_get(sp, w, h, rs->depth,
+                                                rs->xinf->vis->red_mask,
+                                                rs->xinf->vis->green_mask,
+                                                rs->xinf->vis->blue_mask,
+                                                PAL_MODE_NONE, 0);
+       if (conv_func)
+         conv_func(sp, p, sjump, jump, w, h, x, y, NULL);
+     }
+   else
+     {
+       jump = ((xim->line_bytes / 4) - w);
+       if
+#ifdef WORDS_BIGENDIAN
+         (xim->xim->byte_order == LSBFirst)
+#else
+         (xim->xim->byte_order == MSBFirst)
+#endif
+           {
+              while (sp < spe)
+                {
+                   sple = sp + w;
+                   while (sp < sple)
+                     {
+                        *p++ = (*sp << 24) + ((*sp << 8) & 0xff0000) + ((*sp >> 8) & 0xff00) + 0xff;
+//               *p++ = ((B_VAL(sp)) << 24) | ((G_VAL(sp)) << 16) | ((R_VAL(sp)) << 8) | 0x000000ff;
+                        sp++;
+                     }
+                   p += jump;
+                   sp += sjump;
+                }
+           }
+       else
+         {
+            while (sp < spe)
+              {
+                 sple = sp + w;
+                 while (sp < sple)
+                   *p++ = 0xff000000 | *sp++;
+                 p += jump;
+                 sp += sjump;
+              }
+         }
+     }
+   _xr_image_put(xim, rs->draw, x + ox, y + oy, w, h);
+}
+
+void
+_xr_render_surface_clips_set(Xrender_Surface *rs, RGBA_Draw_Context *dc, int rx, int ry, int rw, int rh)
+{
+   int num = 0;
+   XRectangle *rect = NULL;
+   
+   if ((dc) && (dc->clip.use))
+     {
+       RECTS_CLIP_TO_RECT(rx, ry, rw, rh,
+                          dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
+     }
+   if ((!dc) || (!dc->cutout.rects))
+     {
+       rect = malloc(sizeof(XRectangle));
+       if (!rect) return;
+       rect->x = rx;
+       rect->y = ry;
+       rect->width = rw;
+       rect->height = rh;
+       num = 1;
+     }
+   else
+     {
+        Cutout_Rects    *rects;
+       Cutout_Rect     *r;
+        int i;
+
+        rects = evas_common_draw_context_apply_cutouts(dc);
+        num = rects->active;
+       rect = malloc(num * sizeof(XRectangle));
+       if (!rect) return;
+       for (i = 0; i < num; i++)
+         {
+            r = rects->rects + i;
+            rect[i].x = r->x;
+            rect[i].y = r->y;
+            rect[i].width = r->w;
+            rect[i].height = r->h;
+         }
+       evas_common_draw_context_apply_clear_cutouts(rects);
+     }
+   if (!rect) return;
+   XRenderSetPictureClipRectangles(rs->xinf->disp, rs->pic, 0, 0, rect, num);
+   free(rect);
+}
+
+/* initialized the transform to the identity */
+static void
+init_xtransform(XTransform *t)
+{
+   int i, j;
+
+   for (i = 0; i < 3; i++)
+     for (j = 0; j < 3; j++)
+       t->matrix[i][j] = XDoubleToFixed((i == j) ? 1 : 0);
+}
+
+static void
+set_xtransform_scale(XTransform *t, int sw, int sh, int w, int h, int tx, int ty)
+{
+//   if ((sw > 1) && (w > 1))
+//     { sw--;  w--; }
+//   if ((sh > 1) && (h > 1))
+//     { sh--;  h--; }
+   t->matrix[0][0] = XDoubleToFixed((double)(sw) / (double)(w));
+   t->matrix[1][1] = XDoubleToFixed((double)(sh) / (double)(h));
+   t->matrix[2][0] = (tx * sw) / w;
+   t->matrix[2][1] = (ty * sh) / h;
+}
+
+// when color multiplier is used want: instead
+// CA src IN mask SRC temp; non-CA temp OVER dst. - i think. need to check.
+void
+_xr_render_surface_composite(Xrender_Surface *srs, Xrender_Surface *drs, RGBA_Draw_Context *dc, int sx, int sy, int sw, int sh, int x, int y, int w, int h, int smooth)
+{
+   Xrender_Surface *trs = NULL;
+   XTransform xf;
+   XRenderPictureAttributes att;
+   Picture mask = None;
+   int e, is_scaling, op;
+
+   if ((sw <= 0) || (sh <= 0) || (w <= 0) || (h <= 0)) return;
+   
+   is_scaling = e = ((sw != w) || (sh != h));
+
+   att.clip_mask = None;
+   XRenderChangePicture(srs->xinf->disp, srs->pic, CPClipMask, &att);
+   XRenderChangePicture(drs->xinf->disp, drs->pic, CPClipMask, &att);
+   
+   init_xtransform(&xf);
+
+   op = PictOpOver;
+   if (dc->render_op == _EVAS_RENDER_BLEND)
+     {
+       if (!srs->alpha) op = PictOpSrc;
+     }
+   else if (dc->render_op == _EVAS_RENDER_BLEND_REL)
+     op = PictOpAtop;
+   else if (dc->render_op == _EVAS_RENDER_MUL)
+     op = PictOpIn;
+   else if (dc->render_op == _EVAS_RENDER_COPY)
+     op = PictOpSrc;
+   else if (dc->render_op == _EVAS_RENDER_COPY_REL)
+     op = PictOpIn;
+   else if (dc->render_op == _EVAS_RENDER_MASK)
+     op = PictOpInReverse;
+
+   if ((dc) && (dc->mul.use))
+     {
+       int r, g, b, a;
+
+       if ((op == PictOpOver) && (!dc->mul.col)) return;
+       a = dc->mul.col >> 24;
+       r = (dc->mul.col >> 16) & 0xff;
+       g = (dc->mul.col >> 8) & 0xff;
+       b = dc->mul.col & 0xff;
+       if (a < 255) op = PictOpOver;
+       if (dc->mul.col != 0xffffffff)
+         {
+            if ((srs->xinf->mul_r != r) || (srs->xinf->mul_g != g) ||
+                (srs->xinf->mul_b != b) || (srs->xinf->mul_a != a))
+              {
+                 srs->xinf->mul_r = r;
+                 srs->xinf->mul_g = g;
+                 srs->xinf->mul_b = b;
+                 srs->xinf->mul_a = a;
+                 _xr_render_surface_solid_rectangle_set(srs->xinf->mul, 
+                                                        r, g, b, a, 
+                                                        0, 0, 1, 1);
+              }
+            mask = srs->xinf->mul->pic;
+            if (dc->mul.col == (a * 0x01010101))
+              {
+                att.component_alpha = 0;
+                XRenderChangePicture(srs->xinf->disp, mask, CPComponentAlpha, &att);
+              }
+            else
+              {
+                 if ((srs->alpha) || (a != 0xff))
+                   trs = _xr_render_surface_new(srs->xinf, sw + 2, sh + 2,
+                                                srs->xinf->fmt32, 1);
+                 else
+                   trs = _xr_render_surface_new(srs->xinf, sw + 2, sh + 2,
+                                                srs->fmt, srs->alpha);
+                 if (!trs) return;
+                 
+                 att.component_alpha = 1;
+                 XRenderChangePicture(srs->xinf->disp, mask, CPComponentAlpha, &att);
+                 XRenderSetPictureTransform(srs->xinf->disp, srs->pic, &xf);
+                 XRenderComposite(srs->xinf->disp, PictOpSrc, srs->pic, mask,
+                                  trs->pic, 
+                                  sx, sy, 
+                                  sx, sy, 
+                                  0, 0, sw + 2, sh + 2);
+                 mask = None;
+              }
+         }
+     }
+
+//#define HFW + (sw / 2)
+//#define HFH + (sh / 2)       
+#define HFW
+#define HFH
+   
+   _xr_render_surface_clips_set(drs, dc, x, y, w, h);
+   if (trs)
+     {
+       XRenderSetPictureFilter(trs->xinf->disp, trs->pic, get_filter(smooth), NULL, 0);
+
+       set_xtransform_scale(&xf, sw, sh, w, h, -1, -1);
+       XRenderSetPictureTransform(trs->xinf->disp, trs->pic, &xf);
+
+       att.component_alpha = 0;
+       if (dc->render_op == _EVAS_RENDER_MUL) att.component_alpha = 1;
+       XRenderChangePicture(trs->xinf->disp, trs->pic, CPComponentAlpha, &att);
+
+       XRenderComposite(trs->xinf->disp, op, trs->pic, mask, drs->pic,
+                        (w HFW) / sw, (h HFH) / sh,
+                        (w HFW) / sw, (h HFH) / sh,
+                        x, y, w, h);
+       _xr_render_surface_free(trs);
+     }
+   else
+     {
+       if (srs->bordered && is_scaling)
+         {
+            trs = _xr_render_surface_new(srs->xinf, sw + 2, sh + 2,
+                                         srs->fmt, srs->alpha);
+            if (!trs) return;
+            
+            att.component_alpha = 0;
+            XRenderChangePicture(srs->xinf->disp, srs->pic, CPComponentAlpha, &att);
+            XRenderSetPictureTransform(srs->xinf->disp, srs->pic, &xf);
+            
+            XRenderComposite(srs->xinf->disp, PictOpSrc, srs->pic, None,
+                             trs->pic, sx, sy, sx, sy, 0, 0, sw + 2, sh + 2);
+            
+            XRenderSetPictureFilter(trs->xinf->disp, trs->pic, get_filter(smooth), NULL, 0);
+            
+            set_xtransform_scale(&xf, sw, sh, w, h, -1, -1);
+            XRenderSetPictureTransform(trs->xinf->disp, trs->pic, &xf);
+            
+            if (dc->render_op == _EVAS_RENDER_MUL)
+              {
+                 att.component_alpha = 1;
+                 XRenderChangePicture(trs->xinf->disp, trs->pic, CPComponentAlpha, &att);
+              }
+            
+            XRenderComposite(trs->xinf->disp, op, trs->pic, mask, drs->pic,
+                             (w HFW) / sw, (h HFH) / sh,
+                             (w HFW) / sw, (h HFH) / sh,
+//                           1, 1, 1, 1,
+                             x, y, w, h);
+            _xr_render_surface_free(trs);
+         }
+       else
+         {
+            XRenderSetPictureFilter(srs->xinf->disp, srs->pic, get_filter(smooth), NULL, 0);
+            
+            set_xtransform_scale(&xf, sw, sh, w, h, 0, 0);
+            XRenderSetPictureTransform(srs->xinf->disp, srs->pic, &xf);
+            
+            att.component_alpha = 0;
+            if (dc->render_op == _EVAS_RENDER_MUL)
+              att.component_alpha = 1;
+            XRenderChangePicture(srs->xinf->disp, srs->pic, CPComponentAlpha, &att);
+            
+            XRenderComposite(srs->xinf->disp, op, srs->pic, mask, drs->pic,
+                             ((((sx + 1) * w) HFW) / sw),
+                             ((((sy + 1) * h) HFH) / sh),
+                             ((((sx + 1) * w) HFW) / sw),
+                             ((((sy + 1) * h) HFH) / sh),
+                             x, y, w, h);
+         }
+     }
+}
+
+void
+_xr_render_surface_copy(Xrender_Surface *srs, Xrender_Surface *drs, int sx, int sy, int x, int y, int w, int h)
+{
+   XTransform xf;
+   XRenderPictureAttributes att;
+   
+   if ((w <= 0) || (h <= 0) || (!srs) || (!drs)) return;
+
+   init_xtransform(&xf);
+#ifdef BROKEN_XORG_XRENDER   
+   /* FIXME: why do we need to change the identity matrix ifthe src surface
+    * is 1 bit deep?
+    */
+   if (srs->depth == 1)
+     {
+       xf.matrix[0][0] = xf.matrix[1][1] = xf.matrix[2][2] = 1;
+     }
+#endif
+   XRenderSetPictureTransform(srs->xinf->disp, srs->pic, &xf);
+//   XRenderSetPictureFilter(srs->xinf->disp, srs->pic, FilterNearest, NULL, 0);
+   
+   att.clip_mask = None;
+   XRenderChangePicture(srs->xinf->disp, srs->pic, CPClipMask, &att);
+   XRenderChangePicture(drs->xinf->disp, drs->pic, CPClipMask, &att);
+   
+   XRenderComposite(srs->xinf->disp, PictOpSrc, srs->pic, None, drs->pic, 
+                   sx, sy, 0, 0, x, y, w, h);
+}
+
+void
+_xr_render_surface_rectangle_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, int x, int y, int w, int h)
+{
+   XRenderColor col;
+   XRenderPictureAttributes att;
+   int r, g, b, a, op;
+
+   if ((!rs) || (!dc)) return;
+   if ((w <= 0) || (h <= 0)) return;
+   a = dc->col.col >> 24;
+   r = (dc->col.col >> 16) & 0xff;
+   g = (dc->col.col >> 8 ) & 0xff;
+   b = (dc->col.col      ) & 0xff;
+   col.red   = (r << 8) | r;
+   col.green = (g << 8) | g;
+   col.blue  = (b << 8) | b;
+   col.alpha = (a << 8) | a;
+   op = PictOpOver;
+   if (dc->render_op == _EVAS_RENDER_BLEND)
+     {
+       if (!dc->col.col) return;
+       if (a == 0xff) op = PictOpSrc;
+     }
+   else if (dc->render_op == _EVAS_RENDER_BLEND_REL)
+     {
+       if (!dc->col.col) return;
+       op = PictOpAtop;
+     }
+   else if (dc->render_op == _EVAS_RENDER_MUL)
+     {
+       if (dc->col.col == 0xffffffff) return;
+       op = PictOpIn;
+     }
+   else if (dc->render_op == _EVAS_RENDER_COPY)
+       op = PictOpSrc;
+   else if (dc->render_op == _EVAS_RENDER_COPY_REL)
+       op = PictOpIn;
+   else if (dc->render_op == _EVAS_RENDER_MASK)
+       op = PictOpInReverse;
+
+   att.clip_mask = None;
+   XRenderChangePicture(rs->xinf->disp, rs->pic, CPClipMask, &att);
+
+   _xr_render_surface_clips_set(rs, dc, x, y, w, h);
+   XRenderFillRectangle(rs->xinf->disp, op, rs->pic, &col, x, y, w, h);
+}
+
+void
+_xr_render_surface_line_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, int x1, int y1, int x2, int y2)
+{
+   XRenderPictureAttributes att;
+   int op;
+   
+   if ((!rs) || (!dc) || (!dc->col.col)) return;
+   op = PictOpOver;
+   if (dc->render_op == _EVAS_RENDER_BLEND)
+     {
+       if (!dc->col.col) return;
+     }
+   else if (dc->render_op == _EVAS_RENDER_BLEND_REL)
+     {
+       if (!dc->col.col) return;
+       op = PictOpAtop;
+     }
+   else if (dc->render_op == _EVAS_RENDER_MUL)
+     {
+       if (dc->col.col == 0xffffffff) return;
+       op = PictOpIn;
+     }
+   else if (dc->render_op == _EVAS_RENDER_COPY)
+       op = PictOpSrc;
+   else if (dc->render_op == _EVAS_RENDER_COPY_REL)
+       op = PictOpIn;
+   else if (dc->render_op == _EVAS_RENDER_MASK)
+       op = PictOpInReverse;
+   att.clip_mask = None;
+   XRenderChangePicture(rs->xinf->disp, rs->pic, CPClipMask, &att);
+   _xr_render_surface_clips_set(rs, dc, 0, 0, rs->w, rs->h);
+
+     {
+       int r, g, b, a;
+       XPointDouble poly[4];
+       int dx, dy;
+       double len, ddx, ddy;
+       
+       dx = x2 - x1;
+       dy = y2 - y1;
+       len = sqrt((double)(dx * dx) + (double)(dy * dy));
+       ddx = (0.5 * dx) / len;
+       ddy = (0.5 * dy) / len;
+       if (ddx < 0) ddx = -0.5 - ddx;
+       else ddx = 0.5 - ddx;
+       if (ddy < 0) ddy = -0.5 - ddy;
+       else ddy = 0.5 - ddy;
+       poly[0].x =  (x1 + ddx);
+       poly[0].y =  (y1 - ddy);
+       poly[1].x =  (x2 + ddx);
+       poly[1].y =  (y2 - ddy);
+       poly[2].x =  (x2 - ddx);
+       poly[2].y =  (y2 + ddy);
+       poly[3].x =  (x1 - ddx);
+       poly[3].y =  (y1 + ddy);
+
+       a = (dc->col.col >> 24) & 0xff;
+       r = (dc->col.col >> 16) & 0xff;
+       g = (dc->col.col >> 8 ) & 0xff;
+       b = (dc->col.col      ) & 0xff;
+       if ((rs->xinf->mul_r != r) || (rs->xinf->mul_g != g) ||
+           (rs->xinf->mul_b != b) || (rs->xinf->mul_a != a))
+         {
+            rs->xinf->mul_r = r;
+            rs->xinf->mul_g = g;
+            rs->xinf->mul_b = b;
+            rs->xinf->mul_a = a;
+            _xr_render_surface_solid_rectangle_set(rs->xinf->mul, r, g, b, a, 0, 0, 1, 1);
+         }
+       XRenderCompositeDoublePoly(rs->xinf->disp, op,
+                                  rs->xinf->mul->pic, rs->pic, 
+                                  rs->xinf->fmt8, 0, 0, 0, 0,
+                                  poly, 4, EvenOddRule);
+     }
+}
+
+void
+_xre_poly_draw(Xrender_Surface *rs, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points)
+{
+   RGBA_Polygon_Point *pt;
+   int i, num;
+   XPointDouble *pts;
+   int r, g, b, a;
+   XRenderPictureAttributes att;
+   int op;
+   
+   if ((!rs) || (!dc)) return;
+   num = 0;
+   for (pt = points; pt; pt = (RGBA_Polygon_Point *)(((Evas_Object_List *)pt)->next)) num++;
+   if (num < 3) return;
+   op = PictOpOver;
+   if (dc->render_op == _EVAS_RENDER_BLEND)
+     {
+       if (!dc->col.col) return;
+     }
+   else if (dc->render_op == _EVAS_RENDER_BLEND_REL)
+     {
+       if (!dc->col.col) return;
+       op = PictOpAtop;
+     }
+   else if (dc->render_op == _EVAS_RENDER_MUL)
+     {
+       if (dc->col.col == 0xffffffff) return;
+       op = PictOpIn;
+     }
+   else if (dc->render_op == _EVAS_RENDER_COPY)
+       op = PictOpSrc;
+   else if (dc->render_op == _EVAS_RENDER_COPY_REL)
+       op = PictOpIn;
+   else if (dc->render_op == _EVAS_RENDER_MASK)
+       op = PictOpInReverse;
+   a = (dc->col.col >> 24) & 0xff;
+   r = (dc->col.col >> 16) & 0xff;
+   g = (dc->col.col >> 8 ) & 0xff;
+   b = (dc->col.col      ) & 0xff;
+   if ((rs->xinf->mul_r != r) || (rs->xinf->mul_g != g) ||
+       (rs->xinf->mul_b != b) || (rs->xinf->mul_a != a))
+     {
+       rs->xinf->mul_r = r;
+       rs->xinf->mul_g = g;
+       rs->xinf->mul_b = b;
+       rs->xinf->mul_a = a;
+       _xr_render_surface_solid_rectangle_set(rs->xinf->mul, r, g, b, a, 0, 0, 1, 1);
+     }
+   pts = malloc(num * sizeof(XPointDouble));
+   if (!pts) return;
+   i = 0;
+   for (pt = points; pt; pt = (RGBA_Polygon_Point *)(((Evas_Object_List *)pt)->next))
+     {
+       if (i < num)
+         {
+            pts[i].x = pt->x;
+            pts[i].y = pt->y;
+            i++;
+         }
+    }
+   att.clip_mask = None;
+   XRenderChangePicture(rs->xinf->disp, rs->pic, CPClipMask, &att);
+
+   _xr_render_surface_clips_set(rs, dc, 0, 0, rs->w, rs->h);
+   XRenderCompositeDoublePoly(rs->xinf->disp, op,
+                             rs->xinf->mul->pic, rs->pic, 
+                             rs->xinf->fmt8, 0, 0, 0, 0,
+                             pts, num, Complex);
+   free(pts);
+}
+   
diff --git a/src/modules/engines/xrender_xcb/.cvsignore b/src/modules/engines/xrender_xcb/.cvsignore
new file mode 100644 (file)
index 0000000..09980ae
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
diff --git a/src/modules/engines/xrender_xcb/Evas_Engine_XRender_Xcb.h b/src/modules/engines/xrender_xcb/Evas_Engine_XRender_Xcb.h
new file mode 100644 (file)
index 0000000..6e4d774
--- /dev/null
@@ -0,0 +1,24 @@
+#ifndef __EVAS_ENGINE_XRENDER_XCB_H__
+#define __EVAS_ENGINE_XRENDER_XCB_H__
+
+#include <xcb/xcb.h>
+
+typedef struct _Evas_Engine_Info_XRender_Xcb Evas_Engine_Info_XRender_Xcb;
+
+struct _Evas_Engine_Info_XRender_Xcb
+{
+   /* PRIVATE - don't mess with this baby or evas will poke its tongue out */
+   /* at you and make nasty noises */
+   Evas_Engine_Info magic;
+
+   /* engine specific data & parameters it needs to set up */
+   struct {
+      xcb_connection_t *conn;
+      xcb_drawable_t    drawable;
+      xcb_pixmap_t      mask;
+      xcb_visualid_t    visual;
+      unsigned char     destination_alpha : 1;
+   } info;
+};
+
+#endif /* __EVAS_ENGINE_XRENDER_XCB_H__ */
diff --git a/src/modules/engines/xrender_xcb/Makefile.am b/src/modules/engines/xrender_xcb/Makefile.am
new file mode 100644 (file)
index 0000000..7650066
--- /dev/null
@@ -0,0 +1,44 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+-I$(top_srcdir)/src/modules/engines \
+@FREETYPE_CFLAGS@ \
+@XCBRENDER_CFLAGS@
+
+if BUILD_ENGINE_XRENDER_XCB
+
+pkgdir = $(libdir)/evas/modules/engines/xrender_xcb/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES = \
+evas_engine.h \
+evas_engine.c \
+evas_engine_ximage.c \
+evas_engine_xrender.c \
+evas_engine_image.c \
+evas_engine_font.c \
+evas_engine_gradient.c
+
+module_la_LIBADD = @XCBRENDER_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+include_HEADERS = Evas_Engine_XRender_Xcb.h
+
+endif
+
+EXTRA_DIST = \
+evas_engine.h \
+evas_engine.c \
+evas_engine_ximage.c \
+evas_engine_xrender.c \
+evas_engine_image.c \
+evas_engine_font.c \
+evas_engine_gradient.c \
+Evas_Engine_XRender_Xcb.h
diff --git a/src/modules/engines/xrender_xcb/evas_engine.c b/src/modules/engines/xrender_xcb/evas_engine.c
new file mode 100644 (file)
index 0000000..84049bf
--- /dev/null
@@ -0,0 +1,877 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_Xcb.h"
+
+/* function tables - filled in later (func and parent func) */
+static Evas_Func func, pfunc;
+
+/* engine struct data */
+typedef struct _Render_Engine        Render_Engine;
+typedef struct _Render_Engine_Update Render_Engine_Update;
+
+struct _Render_Engine_Update
+{
+   int                 x;
+   int                 y;
+   int                 w;
+   int                 h;
+   Xcb_Render_Surface *surface;
+};
+
+struct _Render_Engine
+{
+   xcb_connection_t      *conn;
+   xcb_visualid_t         vis;
+   xcb_drawable_t         win;
+   xcb_pixmap_t           mask;
+   unsigned char          destination_alpha : 1;
+
+   Xcb_Image_Info        *xcbinf;
+   Xcb_Render_Surface    *output;
+   Xcb_Render_Surface    *mask_output;
+
+   Tilebuf               *tb;
+   Tilebuf_Rect          *rects;
+   Evas_Object_List      *cur_rect;
+   int                    end : 1;
+
+   Evas_List             *updates;
+};
+
+/* internal engine routines */
+
+/* engine api this module provides */
+
+static void *
+eng_info(Evas *e)
+{
+   Evas_Engine_Info_XRender_Xcb *info;
+
+   info = calloc(1, sizeof(Evas_Engine_Info_XRender_Xcb));
+   if (!info) return NULL;
+   info->magic.magic = rand();
+   return info;
+   e = NULL;
+}
+
+static void
+eng_info_free(Evas *e, void *info)
+{
+   Evas_Engine_Info_XRender_Xcb *in;
+
+   in = (Evas_Engine_Info_XRender_Xcb *)info;
+   free(in);
+}
+static void
+eng_setup(Evas *e, void *in)
+{
+   Render_Engine *re;
+   Evas_Engine_Info_XRender_Xcb *info;
+   int resize = 1;
+
+   info = (Evas_Engine_Info_XRender_Xcb *)in;
+   if (!e->engine.data.output)
+     {
+       re = calloc(1, sizeof(Render_Engine));
+       evas_common_cpu_init();
+       evas_common_blend_init();
+       evas_common_image_init();
+       evas_common_convert_init();
+       evas_common_scale_init();
+       evas_common_rectangle_init();
+       evas_common_gradient_init();
+       evas_common_polygon_init();
+       evas_common_line_init();
+       evas_common_font_init();
+       evas_common_draw_init();
+       evas_common_tilebuf_init();
+       re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+       e->engine.data.output = re;
+       resize = 0;
+     }
+   re = e->engine.data.output;
+   if (!re) return;
+
+   if (!e->engine.data.context) e->engine.data.context = e->engine.func->context_new(e->engine.data.output);
+
+   re->conn = info->info.conn;
+   re->vis = info->info.visual;
+   re->win = info->info.drawable;
+   re->mask = info->info.mask;
+   re->destination_alpha = info->info.destination_alpha;
+
+   if (re->xcbinf) _xr_image_info_free(re->xcbinf);
+   re->xcbinf = _xr_image_info_get(re->conn, re->win, re->vis);
+
+   if (re->output) _xr_render_surface_free(re->output);
+   if (re->mask_output) _xr_render_surface_free(re->mask_output);
+   if (!re->mask)
+     re->output = _xr_render_surface_adopt(re->xcbinf, re->win, e->output.w, e->output.h, re->destination_alpha);
+   else
+     re->output = _xr_render_surface_adopt(re->xcbinf, re->win, e->output.w, e->output.h, 0);
+   if (re->mask) {
+     xcb_drawable_t draw;
+
+     draw = re->mask;
+     re->mask_output = _xr_render_surface_format_adopt(re->xcbinf, draw,
+                                                      e->output.w, e->output.h,
+                                                      re->xcbinf->fmt1, 1);
+   }
+   else
+     re->mask_output = NULL;
+   if (resize)
+     {
+       if (re->tb) evas_common_tilebuf_free(re->tb);
+       if ((e->output.w > 0) && (e->output.h > 0))
+         re->tb = evas_common_tilebuf_new(e->output.w, e->output.h);
+       else
+         re->tb = evas_common_tilebuf_new(1, 1);
+        if (re->tb)
+         evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+     }
+}
+
+static void
+eng_output_free(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_font_shutdown();
+   evas_common_image_shutdown();
+   while (re->updates)
+     {
+       Render_Engine_Update *reu;
+
+       reu = re->updates->data;
+       re->updates = evas_list_remove_list(re->updates, re->updates);
+       _xr_render_surface_free(reu->surface);
+       free(reu);
+     }
+   if (re->tb) evas_common_tilebuf_free(re->tb);
+   if (re->output) _xr_render_surface_free(re->output);
+   if (re->mask_output) _xr_render_surface_free(re->mask_output);
+   if (re->rects) evas_common_tilebuf_free_render_rects(re->rects);
+   if (re->xcbinf) _xr_image_info_free(re->xcbinf);
+   free(re);
+}
+
+static void
+eng_output_resize(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   if (re->output)
+     {
+       if ((re->output->w == w) && (re->output->h ==h)) return;
+       if (re->output) _xr_render_surface_free(re->output);
+     }
+   re->output = _xr_render_surface_adopt(re->xcbinf, re->win, w, h, 0);
+   if (re->mask_output)
+     {
+        xcb_drawable_t draw;
+
+       if (re->mask_output) _xr_render_surface_free(re->mask_output);
+        draw = re->mask;
+       re->mask_output = _xr_render_surface_format_adopt(re->xcbinf, draw,
+                                                         w, h,
+                                                         re->xcbinf->fmt1, 1);
+     }
+   evas_common_tilebuf_free(re->tb);
+   re->tb = evas_common_tilebuf_new(w, h);
+   if (re->tb) evas_common_tilebuf_set_tile_size(re->tb, TILESIZE, TILESIZE);
+}
+
+static void
+eng_output_tile_size_set(void *data, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_set_tile_size(re->tb, w, h);
+}
+
+static void
+eng_output_redraws_rect_add(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_add_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_rect_del(void *data, int x, int y, int w, int h)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_del_redraw(re->tb, x, y, w, h);
+}
+
+static void
+eng_output_redraws_clear(void *data)
+{
+   Render_Engine *re;
+
+   re = (Render_Engine *)data;
+   evas_common_tilebuf_clear(re->tb);
+}
+
+static void *
+eng_output_redraws_next_update_get(void *data, int *x, int *y, int *w, int *h, int *cx, int *cy, int *cw, int *ch)
+{
+   Render_Engine *re;
+   Tilebuf_Rect *rect;
+   int ux, uy, uw, uh;
+
+   re = (Render_Engine *)data;
+   if (re->end)
+     {
+       re->end = 0;
+       return NULL;
+     }
+   if (!re->rects)
+     {
+       re->rects = evas_common_tilebuf_get_render_rects(re->tb);
+       re->cur_rect = (Evas_Object_List *)re->rects;
+     }
+   if (!re->cur_rect) return NULL;
+   rect = (Tilebuf_Rect *)re->cur_rect;
+   ux = rect->x; uy = rect->y; uw = rect->w; uh = rect->h;
+   re->cur_rect = re->cur_rect->next;
+   if (!re->cur_rect)
+     {
+       evas_common_tilebuf_free_render_rects(re->rects);
+       re->rects = NULL;
+       re->end = 1;
+     }
+
+   *x = ux; *y = uy; *w = uw; *h = uh;
+   *cx = 0; *cy = 0; *cw = uw; *ch = uh;
+   if ((re->destination_alpha) || (re->mask))
+     {
+       Xcb_Render_Surface *surface;
+
+       surface = _xr_render_surface_new(re->xcbinf, uw, uh, re->xcbinf->fmt32, 1);
+       _xr_render_surface_solid_rectangle_set(surface, 0, 0, 0, 0, 0, 0, uw, uh);
+       return surface;
+     }
+   return _xr_render_surface_new(re->xcbinf, uw, uh, re->xcbinf->fmt24, 0);
+}
+
+static void
+eng_output_redraws_next_update_push(void *data, void *surface, int x, int y, int w, int h)
+{
+   Render_Engine        *re;
+   Render_Engine_Update *reu;
+
+   re = (Render_Engine *)data;
+   reu = malloc(sizeof(Render_Engine_Update));
+   if (!reu) return;
+   reu->x = x;
+   reu->y = y;
+   reu->w = w;
+   reu->h = h;
+   reu->surface = (Xcb_Render_Surface *)surface;
+   re->updates = evas_list_append(re->updates, reu);
+}
+
+static void
+eng_output_flush(void *data)
+{
+   Render_Engine               *re;
+   xcb_get_input_focus_reply_t *reply;
+
+   re = (Render_Engine *)data;
+   while (re->updates)
+     {
+       Render_Engine_Update *reu;
+
+       reu = re->updates->data;
+       re->updates = evas_list_remove_list(re->updates, re->updates);
+       if (re->mask_output)
+         {
+            Xcb_Render_Surface *tsurf;
+
+            _xr_render_surface_copy(reu->surface, re->output, 0, 0,
+                                    reu->x, reu->y, reu->w, reu->h);
+            tsurf = _xr_render_surface_new(re->xcbinf, reu->w, reu->h, re->xcbinf->fmt1, 1);
+            if (tsurf)
+              {
+                 _xr_render_surface_copy(reu->surface, tsurf, 0, 0,
+                                         0, 0, reu->w, reu->h);
+                 _xr_render_surface_copy(tsurf, re->mask_output, 0, 0,
+                                         reu->x, reu->y, reu->w, reu->h);
+                 _xr_render_surface_free(tsurf);
+              }
+         }
+       else
+         {
+            _xr_render_surface_copy(reu->surface, re->output, 0, 0,
+                                    reu->x, reu->y, reu->w, reu->h);
+         }
+       _xr_render_surface_free(reu->surface);
+       free(reu);
+     }
+   /* we sync */
+   reply = xcb_get_input_focus_reply(re->conn,
+                                     xcb_get_input_focus_unchecked(re->conn),
+                                     NULL);
+   free(reply);
+   _xr_image_info_pool_flush(re->xcbinf, 0, 0);
+}
+
+static void
+eng_output_idle_flush(void *data)
+{
+   Render_Engine               *re;
+
+   re = (Render_Engine *)data;
+}
+
+static void
+eng_rectangle_draw(void *data, void *context, void *surface, int x, int y, int w, int h)
+{
+   _xr_render_surface_rectangle_draw((Xcb_Render_Surface *)surface,
+                                    (RGBA_Draw_Context *)context,
+                                    x, y, w, h);
+}
+
+static void
+eng_line_draw(void *data, void *context, void *surface, int x1, int y1, int x2, int y2)
+{
+   _xr_render_surface_line_draw((Xcb_Render_Surface *)surface, (RGBA_Draw_Context *)context, x1, y1, x2, y2);
+}
+
+static void
+eng_polygon_draw(void *data, void *context, void *surface, void *polygon)
+{
+   _xre_poly_draw((Xcb_Render_Surface *)surface, (RGBA_Draw_Context *)context, (RGBA_Polygon_Point *)polygon);
+}
+
+static void *
+eng_gradient_new(void *data)
+{
+   Render_Engine *re = (Render_Engine *)data;
+
+   return _xre_gradient_new(re->xcbinf);
+}
+
+static void
+eng_gradient_free(void *data, void *gradient)
+{
+   _xre_gradient_free(gradient);
+}
+
+static void
+eng_gradient_color_stop_add(void *data, void *gradient, int r, int g, int b, int a, int delta)
+{
+   _xre_gradient_color_stop_add(gradient, r, g, b, a, delta);
+}
+
+static void
+eng_gradient_alpha_stop_add(void *data, void *gradient, int a, int delta)
+{
+   _xre_gradient_alpha_stop_add(gradient, a, delta);
+}
+
+static void
+eng_gradient_color_data_set(void *data, void *gradient, void *map, int len, int has_alpha)
+{
+   _xre_gradient_color_data_set(gradient, map, len, has_alpha);
+}
+
+static void
+eng_gradient_alpha_data_set(void *data, void *gradient, void *alpha_map, int len)
+{
+   _xre_gradient_alpha_data_set(gradient, alpha_map, len);
+}
+
+static void
+eng_gradient_clear(void *data, void *gradient)
+{
+   _xre_gradient_clear(gradient);
+}
+
+static void
+eng_gradient_fill_set(void *data, void *gradient, int x, int y, int w, int h)
+{
+   _xre_gradient_fill_set(gradient, x, y, w, h);
+}
+
+static void
+eng_gradient_fill_angle_set(void *data, void *gradient, double angle)
+{
+   _xre_gradient_fill_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_fill_spread_set(void *data, void *gradient, int spread)
+{
+   _xre_gradient_fill_spread_set(gradient, spread);
+}
+
+static void
+eng_gradient_angle_set(void *data, void *gradient, double angle)
+{
+   _xre_gradient_angle_set(gradient, angle);
+}
+
+static void
+eng_gradient_offset_set(void *data, void *gradient, float offset)
+{
+   _xre_gradient_offset_set(gradient, offset);
+}
+
+static void
+eng_gradient_direction_set(void *data, void *gradient, int direction)
+{
+   _xre_gradient_direction_set(gradient, direction);
+}
+
+static void
+eng_gradient_type_set(void *data, void *gradient, char *name, char *params)
+{
+   _xre_gradient_type_set(gradient, name, params);
+}
+
+static int
+eng_gradient_is_opaque(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   RGBA_Gradient     *grad;
+   RGBA_Draw_Context *dc = (RGBA_Draw_Context *)context;
+
+   if (!dc || !gradient) return 0;
+   grad = ((XR_Gradient *)gradient)->grad;
+   if(!grad || !grad->type.geometer)  return 0;
+   return !(grad->type.geometer->has_alpha(grad, dc->render_op) |
+            grad->type.geometer->has_mask(grad, dc->render_op));
+}
+
+static int
+eng_gradient_is_visible(void *data, void *context, void *gradient, int x, int y, int w, int h)
+{
+   if (!context || !gradient)  return 0;
+   return 1;
+}
+
+static void
+eng_gradient_render_pre(void *data, void *context, void *gradient)
+{
+   int             len;
+   RGBA_Gradient  *grad;
+
+   if (!context || !gradient) return;
+   grad = ((XR_Gradient *)gradient)->grad;
+   if(!grad || !grad->type.geometer)  return;
+   grad->type.geometer->geom_set(grad);
+   len = grad->type.geometer->get_map_len(grad);
+   evas_common_gradient_map(context, grad, len);
+}
+
+static void
+eng_gradient_render_post(void *data, void *gradient)
+{
+}
+
+static void
+eng_gradient_draw(void *data, void *context, void *surface, void *gradient, int x, int y, int w, int h)
+{
+   _xre_gradient_draw(surface, context, gradient, x, y, w, h);
+}
+
+static void *
+eng_image_load(void *data, const char *file, const char *key, int *error, Evas_Image_Load_Opts *lo)
+{
+   Render_Engine *re;
+   XR_Image      *im;
+
+   re = (Render_Engine *)data;
+   *error = 0;
+   im = _xre_image_load(re->xcbinf, file, key, lo);
+   return im;
+}
+
+static void *
+eng_image_new_from_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Render_Engine *re;
+   XR_Image      *im;
+
+   re = (Render_Engine *)data;
+   im = _xre_image_new_from_data(re->xcbinf, w, h, image_data);
+   return im;
+}
+
+static void *
+eng_image_new_from_copied_data(void *data, int w, int h, DATA32 *image_data, int alpha, int cspace)
+{
+   Render_Engine *re;
+   XR_Image      *im;
+
+   re = (Render_Engine *)data;
+   im = _xre_image_new_from_copied_data(re->xcbinf, w, h, image_data);
+   return im;
+}
+
+static void
+eng_image_free(void *data, void *image)
+{
+   if (!image) return;
+   _xre_image_free((XR_Image *)image);
+}
+
+static void
+eng_image_size_get(void *data, void *image, int *w, int *h)
+{
+   if (!image) return;
+   if (w) *w = ((XR_Image *)image)->w;
+   if (h) *h = ((XR_Image *)image)->h;
+}
+
+static void *
+eng_image_size_set(void *data, void *image, int w, int h)
+{
+   if (!image) return image;
+   if ((w <= 0) || (h <= 0))
+     {
+       _xre_image_free((XR_Image *)image);
+       return NULL;
+     }
+   if (((XR_Image *)image)->references > 1)
+     {
+       XR_Image *old_image;
+
+       old_image = (XR_Image *)image;
+       image = _xre_image_copy((XR_Image *)old_image);
+       if (image)
+         {
+            ((XR_Image *)image)->alpha = old_image->alpha;
+            _xre_image_free(old_image);
+         }
+       else
+         image = old_image;
+     }
+   else
+     _xre_image_dirty((XR_Image *)image);
+   _xre_image_resize((XR_Image *)image, w, h);
+   return image;
+}
+
+static void *
+eng_image_dirty_region(void *data, void *image, int x, int y, int w, int h)
+{
+   if (!image) return image;
+   _xre_image_dirty((XR_Image *)image);
+   _xre_image_region_dirty((XR_Image *)image, x, y, w, h);
+   return image;
+}
+
+static void *
+eng_image_data_get(void *data, void *image, int to_write, DATA32 **image_data)
+{
+   if (!image) return image;
+   if (to_write)
+     {
+       if (((XR_Image *)image)->references > 1)
+         {
+            XR_Image *old_image;
+
+            old_image = (XR_Image *)image;
+            image = _xre_image_copy((XR_Image *)old_image);
+            if (image)
+              {
+                 ((XR_Image *)image)->alpha = old_image->alpha;
+                 _xre_image_free(old_image);
+              }
+            else
+              image = old_image;
+         }
+       else
+         _xre_image_dirty((XR_Image *)image);
+     }
+   if (image_data) *image_data = _xre_image_data_get((XR_Image *)image);
+   return image;
+}
+
+static void *
+eng_image_data_put(void *data, void *image, DATA32 *image_data)
+{
+   if (!image) return image;
+   if (_xre_image_data_get((XR_Image *)image) != image_data)
+     {
+       XR_Image *old_image;
+
+       old_image = (XR_Image *)image;
+       image = _xre_image_data_find(image_data);
+       if (image != old_image)
+         {
+            if (!image)
+              {
+                 image = _xre_image_new_from_data(old_image->xcbinf, old_image->w, old_image->h, image_data);
+                 if (image)
+                   {
+                      ((XR_Image *)image)->alpha = old_image->alpha;
+                      _xre_image_free(old_image);
+                   }
+                 else
+                   image = old_image;
+              }
+            else
+              {
+                 _xre_image_free(old_image);
+              }
+         }
+       else
+         {
+            _xre_image_free(image);
+         }
+     }
+   return image;
+}
+
+static void *
+eng_image_alpha_set(void *data, void *image, int has_alpha)
+{
+   if (!image) return image;
+   if (((((XR_Image *)image)->alpha) && (has_alpha)) ||
+       ((!((XR_Image *)image)->alpha) && (!has_alpha)))
+     return image;
+   if (((XR_Image *)image)->references > 1)
+     {
+       XR_Image *old_image;
+
+       old_image = (XR_Image *)image;
+       image = _xre_image_copy((XR_Image *)old_image);
+       if (image)
+         {
+            ((XR_Image *)image)->alpha = old_image->alpha;
+            _xre_image_free(old_image);
+         }
+       else
+         image = old_image;
+     }
+   else
+     _xre_image_dirty((XR_Image *)image);
+   _xre_image_alpha_set((XR_Image *)image, has_alpha);
+   return image;
+}
+
+static int
+eng_image_alpha_get(void *data, void *image)
+{
+   if (!image) return 0;
+   return _xre_image_alpha_get((XR_Image *)image);
+}
+
+static void *
+eng_image_border_set(void *data, void *image, int l, int r, int t, int b)
+{
+   if (!image) return image;
+   _xre_image_border_set((XR_Image *)image, l, r, t, b);
+   return image;
+}
+
+static void
+eng_image_border_get(void *data, void *image, int *l, int *r, int *t, int *b)
+{
+   if (!image) return;
+   _xre_image_border_get((XR_Image *)image, l, r, t, b);
+}
+
+static void
+eng_image_draw(void *data, void *context, void *surface, void *image, int src_x, int src_y, int src_w, int src_h, int dst_x, int dst_y, int dst_w, int dst_h, int smooth)
+{
+   if ((!image) || (!surface)) return;
+   _xre_image_surface_gen((XR_Image *)image);
+   if (((XR_Image *)image)->surface)
+     _xr_render_surface_composite(((XR_Image *)image)->surface,
+                                 (Xcb_Render_Surface *)surface,
+                                 (RGBA_Draw_Context *)context,
+                                 src_x, src_y, src_w, src_h,
+                                 dst_x, dst_y, dst_w, dst_h,
+                                 smooth);
+}
+
+static const char *
+eng_image_comment_get(void *data, void *image, char *key)
+{
+   if (!image) return NULL;
+   return ((XR_Image *)image)->comment;
+}
+
+static char *
+eng_image_format_get(void *data, void *image)
+{
+   if (!image) return NULL;
+   return ((XR_Image *)image)->format;
+}
+
+static void
+eng_image_colorspace_set(void *data, void *image, int cspace)
+{
+}
+
+static int
+eng_image_colorspace_get(void *data, void *image)
+{
+   return EVAS_COLORSPACE_ARGB8888;
+}
+
+static void
+eng_image_native_set(void *data, void *image, void *native)
+{
+}
+
+static void *
+eng_image_native_get(void *data, void *image)
+{
+   return NULL;
+}
+
+static void
+eng_image_cache_flush(void *data)
+{
+   int tmp_size;
+
+   tmp_size = _xre_image_cache_get();
+   pfunc.image_cache_flush(data);
+   _xre_image_cache_set(0);
+   _xre_image_cache_set(tmp_size);
+}
+
+static void
+eng_image_cache_set(void *data, int bytes)
+{
+   pfunc.image_cache_set(data, bytes);
+   _xre_image_cache_set(bytes);
+}
+
+static int
+eng_image_cache_get(void *data)
+{
+   return pfunc.image_cache_get(data);
+}
+
+static void
+eng_font_draw(void *data, void *context, void *surface, void *font, int x, int y, int w, int h, int ow, int oh, const char *text)
+{
+   Render_Engine        *re;
+   RGBA_Image           *im;
+
+   re = (Render_Engine *)data;
+
+   im = (RGBA_Image *) evas_cache_image_data(evas_common_image_cache_get(),
+                                             ((Xcb_Render_Surface *)surface)->w,
+                                             ((Xcb_Render_Surface *)surface)->h,
+                                             surface,
+                                             0, EVAS_COLORSPACE_ARGB8888);
+
+   _xr_render_surface_clips_set((Xcb_Render_Surface *)surface, (RGBA_Draw_Context *)context, x, y, w, h);
+
+   evas_common_draw_context_font_ext_set(context,
+                                         re->xcbinf,
+                                         _xre_font_surface_new,
+                                         _xre_font_surface_free,
+                                         _xre_font_surface_draw);
+   evas_common_font_draw(im, context, font, x, y, text);
+   evas_common_draw_context_font_ext_set(context,
+                                         NULL,
+                                         NULL,
+                                         NULL,
+                                         NULL);
+   evas_common_cpu_end_opt();
+}
+
+/* module advertising code */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   /* get whatever engine module we inherit from */
+   if (!_evas_module_engine_inherit(&pfunc, "software_generic")) return 0;
+   /* store it for later use */
+   func = pfunc;
+   /* now to override methods */
+#define ORD(f) EVAS_API_OVERRIDE(f, &func, eng_)
+   ORD(info);
+   ORD(info_free);
+   ORD(setup);
+   ORD(output_free);
+   ORD(output_resize);
+   ORD(output_tile_size_set);
+   ORD(output_redraws_rect_add);
+   ORD(output_redraws_rect_del);
+   ORD(output_redraws_clear);
+   ORD(output_redraws_next_update_get);
+   ORD(output_redraws_next_update_push);
+   ORD(output_flush);
+   ORD(output_idle_flush);
+   ORD(rectangle_draw);
+   ORD(line_draw);
+   ORD(polygon_draw);
+   ORD(gradient_new);
+   ORD(gradient_free);
+   ORD(gradient_color_stop_add);
+   ORD(gradient_alpha_stop_add);
+   ORD(gradient_color_data_set);
+   ORD(gradient_alpha_data_set);
+   ORD(gradient_clear);
+   ORD(gradient_fill_set);
+   ORD(gradient_fill_angle_set);
+   ORD(gradient_fill_spread_set);
+   ORD(gradient_angle_set);
+   ORD(gradient_offset_set);
+   ORD(gradient_direction_set);
+   ORD(gradient_type_set);
+   ORD(gradient_is_opaque);
+   ORD(gradient_is_visible);
+   ORD(gradient_render_pre);
+   ORD(gradient_render_post);
+   ORD(gradient_draw);
+   ORD(image_load);
+   ORD(image_new_from_data);
+   ORD(image_new_from_copied_data);
+   ORD(image_free);
+   ORD(image_size_get);
+   ORD(image_size_set);
+   ORD(image_dirty_region);
+   ORD(image_data_get);
+   ORD(image_data_put);
+   ORD(image_alpha_set);
+   ORD(image_alpha_get);
+   ORD(image_border_set);
+   ORD(image_border_get);
+   ORD(image_draw);
+   ORD(image_comment_get);
+   ORD(image_format_get);
+   ORD(image_colorspace_set);
+   ORD(image_colorspace_get);
+   ORD(image_native_set);
+   ORD(image_native_get);
+   ORD(image_cache_flush);
+   ORD(image_cache_set);
+   ORD(image_cache_get);
+   ORD(font_draw);
+   /* now advertise out own api */
+   em->functions = (void *)(&func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_ENGINE,
+     "xrender_xcb",
+     "none"
+};
diff --git a/src/modules/engines/xrender_xcb/evas_engine.h b/src/modules/engines/xrender_xcb/evas_engine.h
new file mode 100644 (file)
index 0000000..88db2b6
--- /dev/null
@@ -0,0 +1,184 @@
+#ifndef EVAS_ENGINE_H
+#define EVAS_ENGINE_H
+
+#include <sys/ipc.h>
+#include <sys/shm.h>
+
+#include <xcb/xcb.h>
+#include <xcb/render.h>
+#include <xcb/xcb_image.h>
+
+typedef struct _Xcb_Image_Info      Xcb_Image_Info;
+typedef struct _Xcb_Image_Image     Xcb_Image_Image;
+typedef struct _Xcb_Render_Surface  Xcb_Render_Surface;
+
+struct _Xcb_Image_Info
+{
+   xcb_connection_t          *conn;
+   xcb_drawable_t             root;
+   xcb_drawable_t             draw;
+   int                        depth;
+   xcb_visualid_t             vis;
+   int                        pool_mem;
+   Evas_List                 *pool;
+   unsigned char              can_do_shm;
+   xcb_render_pictforminfo_t *fmt32;
+   xcb_render_pictforminfo_t *fmt24;
+   xcb_render_pictforminfo_t *fmt8;
+   xcb_render_pictforminfo_t *fmt4;
+   xcb_render_pictforminfo_t *fmt1;
+   unsigned char              mul_r;
+   unsigned char              mul_g;
+   unsigned char              mul_b;
+   unsigned char              mul_a;
+   Xcb_Render_Surface        *mul;
+   int                        references;
+};
+
+struct _Xcb_Image_Image
+{
+   Xcb_Image_Info         *xcbinf;
+   xcb_image_t            *xcbim;
+   xcb_shm_segment_info_t *shm_info;
+   int                     w;
+   int                     h;
+   int                     depth;
+   int                     line_bytes;
+   unsigned char          *data;
+   unsigned char           available : 1;
+};
+
+struct _Xcb_Render_Surface
+{
+   Xcb_Image_Info            *xcbinf;
+   int                        w;
+   int                        h;
+   int                        depth;
+   xcb_render_pictforminfo_t *fmt;
+   xcb_drawable_t             draw;
+   xcb_render_picture_t       pic;
+   unsigned char              alpha : 1;
+   unsigned char              allocated : 1;
+   unsigned char              bordered : 1;
+};
+
+/* ximage support calls (ximage vs xshmimage, cache etc.) */
+Xcb_Image_Info  *_xr_image_info_get(xcb_connection_t *conn, xcb_drawable_t draw, xcb_visualid_t vis);
+void             _xr_image_info_free(Xcb_Image_Info *xcbinf);
+void             _xr_image_info_pool_flush(Xcb_Image_Info *xcbinf, int max_num, int max_mem);
+Xcb_Image_Image *_xr_image_new(Xcb_Image_Info *xcbinf, int w, int h, int depth);
+void             _xr_image_free(Xcb_Image_Image *xim);
+void             _xr_image_put(Xcb_Image_Image *xim, xcb_drawable_t draw, int x, int y, int w, int h);
+
+/* xrender support calls */
+Xcb_Render_Surface *_xr_render_surface_new(Xcb_Image_Info *xcbinf, int w, int h, xcb_render_pictforminfo_t *fmt, int alpha);
+Xcb_Render_Surface *_xr_render_surface_adopt(Xcb_Image_Info *xcbinf, xcb_drawable_t draw, int w, int h, int alpha);
+Xcb_Render_Surface *_xr_render_surface_format_adopt(Xcb_Image_Info *xcbinf, xcb_drawable_t draw, int w, int h, xcb_render_pictforminfo_t *fmt, int alpha);
+void                _xr_render_surface_free(Xcb_Render_Surface *rs);
+void                _xr_render_surface_repeat_set(Xcb_Render_Surface *rs, int repeat);
+void                _xr_render_surface_solid_rectangle_set(Xcb_Render_Surface *rs, int r, int g, int b, int a, int x, int y, int w, int h);
+void                _xr_render_surface_argb_pixels_fill(Xcb_Render_Surface *rs, int sw, int sh, void *pixels, int x, int y, int w, int h);
+void                _xr_render_surface_rgb_pixels_fill(Xcb_Render_Surface *rs, int sw, int sh, void *pixels, int x, int y, int w, int h);
+void                _xr_render_surface_clips_set(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, int rx, int ry, int rw, int rh);
+void                _xr_render_surface_composite(Xcb_Render_Surface *srs, Xcb_Render_Surface *drs, RGBA_Draw_Context *dc, int sx, int sy, int sw, int sh, int x, int y, int w, int h, int smooth);
+void                _xr_render_surface_copy(Xcb_Render_Surface *srs, Xcb_Render_Surface *drs, int sx, int sy, int x, int y, int w, int h);
+void                _xr_render_surface_rectangle_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, int x, int y, int w, int h);
+void                _xr_render_surface_line_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, int x1, int y1, int x2, int y2);
+void                _xre_poly_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points);
+  
+    
+typedef struct _XR_Image XR_Image;
+
+struct _XR_Image
+{
+   Xcb_Image_Info       *xcbinf;
+   const char           *file;
+   const char           *key;
+   char                 *fkey;
+   RGBA_Image           *im;
+   void                 *data;
+   int                   w, h;
+   Xcb_Render_Surface   *surface;
+   int                   references;
+   char                 *format;
+   const char           *comment;
+   Tilebuf              *updates;
+   RGBA_Image_Loadopts   load_opts;
+   unsigned char         alpha : 1;
+   unsigned char         dirty : 1;
+   unsigned char         free_data : 1;
+};
+
+XR_Image *_xre_image_load(Xcb_Image_Info *xcbinf, const char *file, const char *key, Evas_Image_Load_Opts *lo);
+XR_Image *_xre_image_new_from_data(Xcb_Image_Info *xcbinf, int w, int h, void *data);
+XR_Image *_xre_image_new_from_copied_data(Xcb_Image_Info *xcbinf, int w, int h, void *data);
+XR_Image *_xre_image_new(Xcb_Image_Info *xcbinf, int w, int h);
+void      _xre_image_resize(XR_Image *im, int w, int h);
+void      _xre_image_free(XR_Image *im);
+void      _xre_image_region_dirty(XR_Image *im, int x, int y, int w, int h);
+void      _xre_image_dirty(XR_Image *im);
+XR_Image *_xre_image_copy(XR_Image *im);
+void     *_xre_image_data_get(XR_Image *im);
+XR_Image *_xre_image_data_find(void *data);
+void      _xre_image_data_put(XR_Image *im, void *data);
+void      _xre_image_alpha_set(XR_Image *im, int alpha);
+int       _xre_image_alpha_get(XR_Image *im);
+void      _xre_image_border_set(XR_Image *im, int l, int r, int t, int b);
+void      _xre_image_border_get(XR_Image *im, int *l, int *r, int *t, int *b);
+void      _xre_image_surface_gen(XR_Image *im);
+void      _xre_image_cache_set(int size);
+int       _xre_image_cache_get(void);
+
+typedef struct _XR_Font_Surface XR_Font_Surface;
+
+struct _XR_Font_Surface
+{
+   Xcb_Image_Info      *xcbinf;
+   RGBA_Font_Glyph     *fg;
+   int                  w;
+   int                  h;
+   xcb_drawable_t       draw;
+   xcb_render_picture_t pic;
+};
+
+XR_Font_Surface *_xre_font_surface_new (Xcb_Image_Info   *xcbinf,
+                                        RGBA_Font_Glyph  *fg);
+
+void             _xre_font_surface_free (XR_Font_Surface   *fs);
+
+void             _xre_font_surface_draw (Xcb_Image_Info    *xcbinf,
+                                         RGBA_Image        *surface,
+                                         RGBA_Draw_Context *dc,
+                                         RGBA_Font_Glyph   *fg,
+                                         int                x,
+                                         int                y);
+
+typedef struct _XR_Gradient XR_Gradient;
+
+struct _XR_Gradient
+{
+   Xcb_Image_Info     *xcbinf;
+   Xcb_Render_Surface *surface;
+   RGBA_Gradient      *grad;
+   unsigned char       changed;
+   int                 sw, sh;
+};
+
+/* gradient */
+XR_Gradient *_xre_gradient_new(Xcb_Image_Info *xcbinf);
+void         _xre_gradient_free(XR_Gradient *gr);
+void         _xre_gradient_color_stop_add(XR_Gradient *gr, int r, int g, int b, int a, int delta);
+void         _xre_gradient_alpha_stop_add(XR_Gradient *gr, int a, int delta);
+void         _xre_gradient_color_data_set(XR_Gradient *gr, void *map, int len, int has_alpha);
+void         _xre_gradient_alpha_data_set(XR_Gradient *gr, void *alpha_map, int len);
+void         _xre_gradient_clear(XR_Gradient *gr);
+void         _xre_gradient_fill_set(XR_Gradient *gr, int x, int y, int w, int h);
+void         _xre_gradient_fill_angle_set(XR_Gradient *gr, double angle);
+void         _xre_gradient_fill_spread_set(XR_Gradient *gr, int spread);
+void         _xre_gradient_angle_set(XR_Gradient *gr, double angle);
+void         _xre_gradient_offset_set(XR_Gradient *gr, float offset);
+void         _xre_gradient_direction_set(XR_Gradient *gr, int direction);
+void         _xre_gradient_type_set(XR_Gradient *gr, char *name, char *params);
+void         _xre_gradient_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, XR_Gradient *gr, int x, int y, int w, int h);
+    
+#endif
diff --git a/src/modules/engines/xrender_xcb/evas_engine_font.c b/src/modules/engines/xrender_xcb/evas_engine_font.c
new file mode 100644 (file)
index 0000000..5c9aeae
--- /dev/null
@@ -0,0 +1,203 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_Xcb.h"
+
+static Evas_Hash *_xr_fg_pool = NULL;
+
+XR_Font_Surface *
+_xre_font_surface_new(Xcb_Image_Info *xcbinf, RGBA_Font_Glyph *fg)
+{    
+   char             buf[256];
+   char             buf2[256];
+   XR_Font_Surface *fs;
+   DATA8           *data;
+   int              w, h, j;
+   Xcb_Image_Image *xcim;
+   Evas_Hash       *pool;
+   uint32_t         mask;
+   uint32_t         values[3];
+   
+   data = fg->glyph_out->bitmap.buffer;
+   w = fg->glyph_out->bitmap.width;
+   h = fg->glyph_out->bitmap.rows;
+   j = fg->glyph_out->bitmap.pitch;
+   if (j < w) j = w;
+   if ((w <= 0) || (h <= 0)) return NULL;
+
+   if (fg->ext_dat)
+     {
+       fs = fg->ext_dat;
+       if ((fs->xcbinf->conn == xcbinf->conn) &&
+            (fs->xcbinf->root == xcbinf->root))
+         return fs;
+       snprintf(buf, sizeof(buf), "@%p@/@%x@", fs->xcbinf->conn, fs->xcbinf->root);
+       pool = evas_hash_find(_xr_fg_pool, buf);
+       if (pool)
+         {
+            snprintf(buf, sizeof(buf), "%p", fg);
+            fs = evas_hash_find(pool, buf);
+            if (fs) return fs;
+         }
+     }
+
+   fs = calloc(1, sizeof(XR_Font_Surface));
+   if (!fs) return NULL;
+
+   fs->xcbinf = xcbinf;
+   fs->fg = fg;
+   fs->xcbinf->references++;
+   fs->w = w;
+   fs->h = h;
+   
+   snprintf(buf, sizeof(buf), "@%p@/@%x@", fs->xcbinf->conn, fs->xcbinf->root);
+   pool = evas_hash_find(_xr_fg_pool, buf);
+   snprintf(buf2, sizeof(buf2), "%p", fg);
+   pool = evas_hash_add(pool, buf2, fs);
+   _xr_fg_pool = evas_hash_add(_xr_fg_pool, buf, pool);
+
+   fs->draw = xcb_generate_id(xcbinf->conn);
+   xcb_create_pixmap(xcbinf->conn, xcbinf->fmt8->depth, fs->draw, xcbinf->root, w, h);
+
+   mask = XCB_RENDER_CP_REPEAT | XCB_RENDER_CP_DITHER | XCB_RENDER_CP_COMPONENT_ALPHA;
+   values[0] = 0;
+   values[1] = 0;
+   values[2] = 0;
+   fs->pic = xcb_generate_id(xcbinf->conn);
+   xcb_render_create_picture(xcbinf->conn, fs->pic, fs->draw, xcbinf->fmt8->id, mask, values);
+   
+   xcim = _xr_image_new(fs->xcbinf, w, h, xcbinf->fmt8->depth);
+   if ((fg->glyph_out->bitmap.num_grays == 256) &&
+       (fg->glyph_out->bitmap.pixel_mode == ft_pixel_mode_grays))
+     {
+       int x, y;
+       DATA8 *p1, *p2;
+       
+       for (y = 0; y < h; y++)
+         {
+            p1 = data + (j * y);
+            p2 = ((DATA8 *)xcim->data) + (xcim->line_bytes * y);
+            for (x = 0; x < w; x++)
+              {
+                 *p2 = *p1;
+                 p1++;
+                 p2++;
+              }
+         }
+       
+     }
+   else
+     {
+        DATA8      *tmpbuf = NULL, *dp, *tp, bits;
+       int         bi, bj, end;
+       const DATA8 bitrepl[2] = {0x0, 0xff};
+       
+       tmpbuf = alloca(w);
+         {
+            int    x, y;
+            DATA8 *p1, *p2;
+            
+            for (y = 0; y < h; y++)
+              {
+                 p1 = tmpbuf;
+                 p2 = ((DATA8 *)xcim->data) + (xcim->line_bytes * y);
+                 tp = tmpbuf;
+                 dp = data + (y * fg->glyph_out->bitmap.pitch);
+                 for (bi = 0; bi < w; bi += 8)
+                   {
+                      bits = *dp;
+                      if ((w - bi) < 8) end = w - bi;
+                      else end = 8;
+                      for (bj = 0; bj < end; bj++)
+                        {
+                           *tp = bitrepl[(bits >> (7 - bj)) & 0x1];
+                           tp++;
+                        }
+                      dp++;
+                   }
+                 for (x = 0; x < w; x++)
+                   {
+                      *p2 = *p1;
+                      p1++;
+                      p2++;
+                   }
+              }
+         }
+     }
+   _xr_image_put(xcim, fs->draw, 0, 0, w, h);
+   return fs;
+}
+
+static Evas_Bool
+_xre_font_pool_cb(const Evas_Hash *hash, const char *key, void *data, void *fdata)
+{
+   char             buf[256];
+   Evas_Hash       *pool;
+   XR_Font_Surface *fs;
+   
+   fs = fdata;
+   pool = data;
+   snprintf(buf, sizeof(buf), "@%p@/@%x@", fs->xcbinf->conn, fs->xcbinf->root);
+   pool = evas_hash_del(pool, buf, fs);
+   hash = evas_hash_modify(hash, key, pool);
+   return 1;
+}
+
+void
+_xre_font_surface_free(XR_Font_Surface *fs)
+{
+   if (!fs) return;
+   evas_hash_foreach(_xr_fg_pool, _xre_font_pool_cb, fs);
+   xcb_free_pixmap(fs->xcbinf->conn, fs->draw);
+   xcb_render_free_picture(fs->xcbinf->conn, fs->pic);
+   _xr_image_info_free(fs->xcbinf);
+   free(fs);
+}
+
+void
+_xre_font_surface_draw(Xcb_Image_Info *xcbinf, RGBA_Image *surface, RGBA_Draw_Context *dc, RGBA_Font_Glyph *fg, int x, int y)
+{
+   XR_Font_Surface    *fs;
+   Xcb_Render_Surface *target_surface;
+   xcb_rectangle_t     rect;
+   int                 r;
+   int                 g;
+   int                 b;
+   int                 a;
+   
+   fs = fg->ext_dat;
+   if (!fs) return;
+   target_surface = (Xcb_Render_Surface *)(surface->image.data);
+   a = (dc->col.col >> 24) & 0xff;
+   r = (dc->col.col >> 16) & 0xff;
+   g = (dc->col.col >> 8 ) & 0xff;
+   b = (dc->col.col      ) & 0xff;
+   if ((fs->xcbinf->mul_r != r) || (fs->xcbinf->mul_g != g) ||
+       (fs->xcbinf->mul_b != b) || (fs->xcbinf->mul_a != a))
+     {
+       fs->xcbinf->mul_r = r;
+       fs->xcbinf->mul_g = g;
+       fs->xcbinf->mul_b = b;
+       fs->xcbinf->mul_a = a;
+       _xr_render_surface_solid_rectangle_set(fs->xcbinf->mul, r, g, b, a, 0, 0, 1, 1);
+     }
+   rect.x = x;
+   rect.y = y;
+   rect.width = fs->w;
+   rect.height = fs->h;
+   if ((dc) && (dc->clip.use))
+     {
+       RECTS_CLIP_TO_RECT(rect.x, rect.y, rect.width, rect.height,
+                          dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
+     }
+   xcb_render_set_picture_clip_rectangles(target_surface->xcbinf->conn, 
+                                          target_surface->pic, 0, 0, 1, &rect);
+   xcb_render_composite(fs->xcbinf->conn, XCB_RENDER_PICT_OP_OVER,
+                        fs->xcbinf->mul->pic, 
+                        fs->pic,
+                        target_surface->pic,
+                        0, 0,
+                        0, 0,
+                        x, y,
+                        fs->w, fs->h);
+}
diff --git a/src/modules/engines/xrender_xcb/evas_engine_gradient.c b/src/modules/engines/xrender_xcb/evas_engine_gradient.c
new file mode 100644 (file)
index 0000000..6f9f292
--- /dev/null
@@ -0,0 +1,182 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_Xcb.h"
+#include <math.h>
+
+XR_Gradient *
+_xre_gradient_new(Xcb_Image_Info *xcbinf)
+{
+   XR_Gradient  *gr;
+
+   if (!xcbinf) return NULL;
+   gr = calloc(1, sizeof(XR_Gradient));
+   if (!gr) return NULL;
+   gr->grad = evas_common_gradient_new();
+   if (!gr->grad)
+     {
+       free(gr);
+       return NULL;
+     }
+   gr->xcbinf = xcbinf;
+   gr->xcbinf->references++;
+   gr->changed = 1;
+   return gr;
+}
+
+void
+_xre_gradient_free(XR_Gradient *gr)
+{
+   if (!gr) return;
+   if (gr->grad)
+       evas_common_gradient_free(gr->grad);
+   if (gr->surface)
+       _xr_render_surface_free(gr->surface);
+   _xr_image_info_free(gr->xcbinf);
+   free(gr);
+}
+
+void
+_xre_gradient_color_stop_add(XR_Gradient *gr, int r, int g, int b, int a, int delta)
+{
+   if (!gr) return;
+   evas_common_gradient_color_stop_add(gr->grad, r, g, b, a, delta);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_alpha_stop_add(XR_Gradient *gr, int a, int delta)
+{
+   if (!gr) return;
+   evas_common_gradient_alpha_stop_add(gr->grad, a, delta);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_clear(XR_Gradient *gr)
+{
+   if (!gr) return;
+   evas_common_gradient_clear(gr->grad);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_color_data_set(XR_Gradient *gr, void *map, int len, int has_alpha)
+{
+   evas_common_gradient_color_data_set(gr->grad, map, len, has_alpha);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_alpha_data_set(XR_Gradient *gr, void *amap, int len)
+{
+   evas_common_gradient_alpha_data_set(gr->grad, amap, len);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_fill_set(XR_Gradient *gr, int x, int y, int w, int h)
+{
+   if (!gr) return;
+   evas_common_gradient_fill_set(gr->grad, x, y, w, h);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_fill_angle_set(XR_Gradient *gr, double angle)
+{
+   if (!gr) return;
+   evas_common_gradient_fill_angle_set(gr->grad, angle);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_fill_spread_set(XR_Gradient *gr, int spread)
+{
+   if (!gr) return;
+   evas_common_gradient_fill_spread_set(gr->grad, spread);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_angle_set(XR_Gradient *gr, double angle)
+{
+   if (!gr) return;
+   evas_common_gradient_map_angle_set(gr->grad, angle);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_offset_set(XR_Gradient *gr, float offset)
+{
+   if (!gr) return;
+   evas_common_gradient_map_offset_set(gr->grad, offset);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_direction_set(XR_Gradient *gr, int direction)
+{
+   if (!gr) return;
+   evas_common_gradient_map_direction_set(gr->grad, direction);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_type_set(XR_Gradient *gr, char *name, char *params)
+{
+   if (!gr) return;
+   evas_common_gradient_type_set(gr->grad, name, params);
+   gr->changed = 1;
+}
+
+void
+_xre_gradient_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, XR_Gradient *gr, int x, int y, int w, int h)
+{
+   int alpha = 0;
+
+   if ((w < 1) || (h < 1)) return;
+   if (!rs || !dc || !gr) return;
+   if (!gr->xcbinf || !gr->grad || !gr->grad->type.geometer) return;
+
+   if (gr->grad->type.geometer->has_alpha(gr->grad, dc->render_op) ||
+       gr->grad->type.geometer->has_mask(gr->grad, dc->render_op))
+       alpha = 1;
+   if (((gr->sw != w) || (gr->sh != h)) && gr->surface)
+     {
+       _xr_render_surface_free(gr->surface);
+       gr->surface = NULL;
+       gr->changed = 1;
+     }
+   if (!gr->surface)
+     {
+       gr->surface = _xr_render_surface_new(gr->xcbinf, w, h, gr->xcbinf->fmt32, 1);
+       if (!gr->surface) return;
+       gr->changed = 1;
+     }
+   if (gr->changed)
+     {
+       int op = dc->render_op, cuse = dc->clip.use;
+       RGBA_Image  *im;
+
+        im = (RGBA_Image*) evas_cache_image_empty(evas_common_image_cache_get());
+       if (!im)
+         {
+           _xr_render_surface_free(gr->surface);
+           gr->surface = NULL;
+           return;
+         }
+        evas_cache_image_surface_alloc(&im->cache_entry, w, h);
+       dc->render_op = _EVAS_RENDER_FILL;
+       dc->clip.use = 0;
+       evas_common_gradient_draw(im, dc, 0, 0, w, h, gr->grad);
+       _xr_render_surface_argb_pixels_fill(gr->surface, w, h, im->image.data, 0, 0, w, h);
+        evas_cache_image_drop(&im->cache_entry);
+       dc->render_op = op;
+       dc->clip.use = cuse;
+     }
+   gr->surface->alpha = alpha;
+   _xr_render_surface_composite(gr->surface, rs, dc, 0, 0, gr->surface->w, gr->surface->h, x, y, w, h, 0);
+   gr->changed = 0;
+   gr->sw = w;  gr->sh = h;
+}
diff --git a/src/modules/engines/xrender_xcb/evas_engine_image.c b/src/modules/engines/xrender_xcb/evas_engine_image.c
new file mode 100644 (file)
index 0000000..f7b37b1
--- /dev/null
@@ -0,0 +1,614 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_Xcb.h"
+
+static Evas_Hash *_xr_image_hash        = NULL;
+static int        _xr_image_cache_size  = 0;
+static int        _xr_image_cache_usage = 0;
+static Evas_List *_xr_image_cache       = NULL;
+static Evas_Hash *_xr_image_dirty_hash  = NULL;
+
+static void
+__xre_image_dirty_hash_add(XR_Image *im)
+{
+   char buf[64];
+   
+   if (!im->data) return;
+   snprintf(buf, sizeof(buf), "%p", im->data);
+   _xr_image_dirty_hash = evas_hash_add(_xr_image_dirty_hash, buf, im);
+}
+
+static void
+__xre_image_dirty_hash_del(XR_Image *im)
+{
+   char buf[64];
+   
+   if (!im->data) return;
+   snprintf(buf, sizeof(buf), "%p", im->data);
+   _xr_image_dirty_hash = evas_hash_del(_xr_image_dirty_hash, buf, im);
+}
+
+static XR_Image *
+__xre_image_dirty_hash_find(void *data)
+{
+   char buf[64];
+   
+   snprintf(buf, sizeof(buf), "%p", data);
+   return evas_hash_find(_xr_image_dirty_hash, buf);
+}
+
+static XR_Image *
+__xre_image_find(char *fkey)
+{
+   XR_Image *im;
+   
+   im = evas_hash_find(_xr_image_hash, fkey);
+   if (!im)
+     {
+       Evas_List *l;
+       
+       for (l = _xr_image_cache; l; l = l->next)
+         {
+            im = l->data;
+            if (!strcmp(im->fkey, fkey))
+              {
+                 _xr_image_cache = evas_list_remove_list(_xr_image_cache, l);
+                 _xr_image_hash = evas_hash_add(_xr_image_hash, im->fkey, im);
+                 _xr_image_cache_usage -= (im->w * im->h * 4);
+                 break;
+              }
+            im = NULL;
+         }
+     }
+   if (im) im->references++;
+   return im;
+}
+
+XR_Image *
+_xre_image_load(Xcb_Image_Info *xcbinf, const char *file, const char *key, Evas_Image_Load_Opts *lo)
+{
+   char      buf[4096];
+   XR_Image *im;
+
+   if (!file) return NULL;
+   if (!lo)
+     {
+       if (key)
+         snprintf(buf, sizeof(buf), "/@%p@%x@/%s//://%s", xcbinf->conn, xcbinf->root, file, key);
+       else
+         snprintf(buf, sizeof(buf), "/@%p@%x@/%s", xcbinf->conn, xcbinf->root, file);
+     }
+   else
+     {
+       if (key)
+         snprintf(buf, sizeof(buf), "//@/%i/%1.5f/%ix%i//@%p@%x@/%s//://%s", lo->scale_down_by, lo->dpi, lo->w, lo->h, xcbinf->conn, xcbinf->root, file, key);
+       else
+         snprintf(buf, sizeof(buf), "//@/%i/%1.5f/%ix%i//@%p@%x@/%s", lo->scale_down_by, lo->dpi, lo->w, lo->h, xcbinf->conn, xcbinf->root, file);
+     }
+   im = __xre_image_find(buf);
+   if (im)
+     {
+       return im;
+     }
+   
+   im = calloc(1, sizeof(XR_Image));
+   if (!im) return NULL;
+   im->im = evas_common_load_image_from_file(file, key, lo);
+   if (!im->im)
+     {
+       free(im);
+       return NULL;
+     }
+   im->xcbinf = xcbinf;
+   im->xcbinf->references++;
+   im->fkey = strdup(buf);
+   im->file = (char *)evas_stringshare_add(file);
+   if (key) im->key = (char *)evas_stringshare_add(key);
+   im->w = im->im->cache_entry.w;
+   im->h = im->im->cache_entry.h;
+   im->references = 1;
+   if (lo) im->load_opts = *lo;
+   if (im->im->info.comment) im->comment = (char *)evas_stringshare_add(im->im->info.comment);
+/*    if (im->im->info.format == 1) im->format = evas_stringshare_add("png"); */
+   if (im->im->cache_entry.flags.alpha) im->alpha = 1;
+   _xr_image_hash = evas_hash_direct_add(_xr_image_hash, im->fkey, im);
+   return im;
+}
+
+XR_Image *
+_xre_image_new_from_data(Xcb_Image_Info *xcbinf, int w, int h, void *data)
+{
+   XR_Image *im;
+
+   im = calloc(1, sizeof(XR_Image));
+   if (!im) return NULL;
+   im->xcbinf = xcbinf;
+   im->xcbinf->references++;
+   im->w = w;
+   im->h = h;
+   im->references = 1;
+   im->data = data;
+   im->alpha = 1;
+   im->dirty = 1;
+   __xre_image_dirty_hash_add(im);
+   return im;
+}
+
+XR_Image *
+_xre_image_new_from_copied_data(Xcb_Image_Info *xcbinf, int w, int h, void *data)
+{
+   XR_Image *im;
+
+   im = calloc(1, sizeof(XR_Image));
+   if (!im) return NULL;
+   im->data = malloc(w * h * 4);
+   if (!im->data)
+     {
+       free(im);
+       return NULL;
+     }
+   if (data)
+     {
+       Gfx_Func_Copy func;
+       
+       func = evas_common_draw_func_copy_get(w * h, 0);
+       if (func) func(data, im->data, w * h);
+       evas_common_cpu_end_opt();
+     }
+   im->w = w;
+   im->h = h;
+   im->references = 1;
+   im->xcbinf = xcbinf;
+   im->xcbinf->references++;
+   im->free_data = 1;
+   im->alpha = 1;
+   im->dirty = 1;
+   __xre_image_dirty_hash_add(im);
+   return im;
+}
+
+XR_Image *
+_xre_image_new(Xcb_Image_Info *xcbinf, int w, int h)
+{
+   XR_Image *im;
+
+   im = calloc(1, sizeof(XR_Image));
+   if (!im) return NULL;
+   im->data = malloc(w * h * 4);
+   if (!im->data)
+     {
+       free(im);
+       return NULL;
+     }
+   im->w = w;
+   im->h = h;
+   im->references = 1;
+   im->xcbinf = xcbinf;
+   im->xcbinf->references++;
+   im->free_data = 1;
+   im->alpha = 1;
+   im->dirty = 1;
+   __xre_image_dirty_hash_add(im);
+   return im;
+}
+
+static void
+__xre_image_real_free(XR_Image *im)
+{
+   if (im->file) evas_stringshare_del(im->file);
+   if (im->key) evas_stringshare_del(im->key);
+   if (im->fkey) free(im->fkey);
+   if (im->im) evas_cache_image_drop(&im->im->cache_entry);
+   if ((im->data) && (im->dirty)) __xre_image_dirty_hash_del(im);
+   if ((im->free_data) && (im->data)) free(im->data);
+   if (im->surface) _xr_render_surface_free(im->surface);
+   if (im->format) evas_stringshare_del(im->format);
+   if (im->comment) evas_stringshare_del(im->comment);
+   if (im->updates) evas_common_tilebuf_free(im->updates);
+   _xr_image_info_free(im->xcbinf);
+   free(im);
+}
+
+void
+_xre_image_free(XR_Image *im)
+{
+   im->references--;
+   if (im->references != 0) return;
+   if (!im->dirty)
+     {
+       if (im->fkey)
+         _xr_image_hash = evas_hash_del(_xr_image_hash, im->fkey, im);
+       _xr_image_cache = evas_list_prepend(_xr_image_cache, im);
+       _xr_image_cache_usage += (im->w * im->h * 4);
+       _xre_image_cache_set(_xr_image_cache_size);
+     }
+   else
+     {
+       __xre_image_real_free(im);
+     }
+}
+
+void
+_xre_image_region_dirty(XR_Image *im, int x, int y, int w, int h)
+{ 
+   if (!im->updates)
+     {
+       im->updates = evas_common_tilebuf_new(im->w, im->h);
+       if (im->updates) evas_common_tilebuf_set_tile_size(im->updates, 8, 8);
+     }
+   if (im->updates)
+     evas_common_tilebuf_add_redraw(im->updates, x, y, w, h);
+}
+
+void
+_xre_image_dirty(XR_Image *im)
+{
+   if (im->dirty) return;
+   if (im->fkey)
+     _xr_image_hash = evas_hash_del(_xr_image_hash, im->fkey, im);
+   im->dirty = 1;
+   __xre_image_dirty_hash_add(im);
+}
+
+XR_Image *
+_xre_image_copy(XR_Image *im)
+{
+   XR_Image *im2;
+   void     *data = NULL;
+
+   if (im->data) data = im->data;
+   else
+     {
+       if (!im->im) im->im = evas_common_load_image_from_file(im->file, im->key, &(im->load_opts));
+       if (im->im)
+         {
+             evas_cache_image_load_data(&im->im->cache_entry);
+            data = im->im->image.data;
+         }
+     }
+   if (!data) return NULL;
+   im2 = _xre_image_new_from_copied_data(im->xcbinf, im->w, im->h, data);
+   if (im2) im2->alpha = im->alpha;
+   if ((im->im) && (!im->dirty))
+     {
+       evas_cache_image_drop(&im->im->cache_entry);
+       im->im = NULL;
+     }
+   return im2;
+}
+
+void
+_xre_image_resize(XR_Image *im, int w, int h)
+{
+   if ((w == im->w) && (h == im->h)) return;
+   if (im->surface)
+     {
+       Xcb_Render_Surface *old_surface;
+       int                 x = 0, y = 0, ww, hh;
+       
+       ww = w; hh = h;
+       RECTS_CLIP_TO_RECT(x, y, ww, hh, 0, 0, im->w, im->h);
+       old_surface = im->surface;
+       im->surface = _xr_render_surface_new(old_surface->xcbinf,
+                                             w + 1, h + 1, old_surface->fmt, old_surface->alpha);
+       if (im->surface)
+         _xr_render_surface_copy(old_surface, im->surface, 0, 0, 0, 0, ww, hh);
+       _xr_render_surface_free(old_surface);
+     }
+   if (im->data)
+     {
+       Gfx_Func_Copy func;
+       int           x = 0, y = 0, ww, hh;
+       unsigned int *sp, *dp;
+       void         *data;
+       
+       data = malloc(w * h * 4);
+       if (!data)
+         {
+            if (im->surface)
+              {
+                 _xr_render_surface_free(im->surface);
+                 im->surface = NULL;
+              }
+            return;
+         }
+       ww = w; hh = h;
+       
+       RECTS_CLIP_TO_RECT(x, y, ww, hh, 0, 0, im->w, im->h);
+       func = evas_common_draw_func_copy_get(w * h, 0);
+       if (func)
+         {
+            for (y = 0; y < hh; y++)
+              {
+                 sp = ((unsigned int *)im->data) + (y * im->w);
+                 dp = ((unsigned int *)data) + (y * w);
+                 func(sp, dp, ww);
+              }
+            evas_common_cpu_end_opt();
+         }
+       __xre_image_dirty_hash_del(im);
+       free(im->data);
+       im->data = data;
+       __xre_image_dirty_hash_add(im);
+     }
+   else if (im->im)
+     {
+       RGBA_Image *im_old;
+
+       im_old = im->im;
+       im->im = (RGBA_Image*) evas_cache_image_empty(evas_common_image_cache_get());
+       if (!im->im)
+         {
+            im->im = im_old;
+            if (im->surface)
+              {
+                 _xr_render_surface_free(im->surface);
+                 im->surface = NULL;
+              }
+            return;
+         }
+        evas_cache_image_load_data(&im->im->cache_entry);
+       if (im_old->image.data)
+         {
+            int x = 0, y = 0, ww, hh;
+
+            ww = w; hh = h;
+            RECTS_CLIP_TO_RECT(x, y, ww, hh, 0, 0, im->w, im->h);
+             evas_common_blit_rectangle(im_old, im->im, 0, 0, ww, hh, 0, 0);
+            evas_common_cpu_end_opt();
+         }
+       im->free_data = 1;
+        /* FIXME: Hum ? */
+       im->data = im->im->image.data;
+       im->im->image.data = NULL;
+        evas_cache_image_drop(&im->im->cache_entry);
+       im->im = NULL;
+        evas_cache_image_drop(&im_old->cache_entry);
+       __xre_image_dirty_hash_add(im);
+     }
+   else
+     {
+       im->data = malloc(w * h * 4);
+       im->free_data = 1;
+       __xre_image_dirty_hash_add(im);
+     }
+   im->w = w;
+   im->h = h;
+}
+
+void *
+_xre_image_data_get(XR_Image *im)
+{
+   void *data = NULL;
+   
+   if (im->data) data = im->data;
+   else
+     {
+       if (!im->im) im->im = evas_common_load_image_from_file(im->file, im->key, &(im->load_opts));
+       if (im->im)
+         {
+             evas_cache_image_load_data(&im->im->cache_entry);
+            data = im->im->image.data;
+         }
+     }
+   return data;
+}
+
+XR_Image *
+_xre_image_data_find(void *data)
+{
+   XR_Image *im;
+   
+   im = __xre_image_dirty_hash_find(data);
+   if (im) 
+     {
+       im->references++;
+     }
+   return im;
+}
+
+void
+_xre_image_data_put(XR_Image *im, void *data)
+{
+   void *imdata = NULL;
+
+   if (!data) return;
+   if (im->data)
+     {
+       imdata = im->data;
+       if (data == imdata) return;
+       __xre_image_dirty_hash_del(im);
+       if (im->free_data) free(im->data);
+     }
+   else
+     {
+       if (im->im) imdata = im->im->image.data;
+       if (data == imdata) return;
+       if (im->im)
+         {
+             evas_cache_image_drop(&im->im->cache_entry);
+            im->im = NULL;
+         }
+     }
+   im->data = data;
+   __xre_image_dirty_hash_add(im);
+   im->free_data = 0;
+   if (im->surface)
+     {
+       _xr_render_surface_free(im->surface);
+       im->surface = NULL;
+     }
+   if (!im->dirty)
+     {
+       if (im->fkey)
+         _xr_image_hash = evas_hash_del(_xr_image_hash, im->fkey, im);
+       im->dirty = 1;
+     }
+   if (im->updates)
+     {
+       evas_common_tilebuf_free(im->updates);
+       im->updates = NULL;
+     }
+}
+
+void
+_xre_image_alpha_set(XR_Image *im, int alpha)
+{
+   if (im->alpha == alpha) return;
+   im->alpha = alpha;
+   if (im->surface)
+     {
+       Xcb_Render_Surface *old_surface;
+       
+       old_surface = im->surface;
+       im->surface = NULL;
+       if (im->alpha)
+         im->surface = _xr_render_surface_new(im->xcbinf,
+                                               im->w + 1, im->h + 1, im->xcbinf->fmt32, 1);
+       else
+         im->surface = _xr_render_surface_new(im->xcbinf,
+                                               im->w + 1, im->h + 1, im->xcbinf->fmt24, 0);
+       if (im->surface)
+         _xr_render_surface_copy(old_surface,
+                                  im->surface, 0, 0, 0, 0, im->w + 1, im->h + 1);
+       _xr_render_surface_free(old_surface);
+     }
+   if (im->updates)
+     {
+       evas_common_tilebuf_free(im->updates);
+       im->updates = NULL;
+     }
+}
+
+int
+_xre_image_alpha_get(XR_Image *im)
+{
+   return im->alpha;
+}
+
+void
+_xre_image_border_set(XR_Image *im, int l, int r, int t, int b)
+{
+   if (!im) return;
+   _xre_image_surface_gen(im);
+   if (l < 1) l = 0;
+   if (r < 1) r = 0;
+   if (t < 1) t = 0;
+   if (b < 1) b = 0;
+   if (im->surface)
+     {
+       if (l | r | t | b)
+         im->surface->bordered = 1;
+       else
+         im->surface->bordered = 0;
+    }
+}
+
+void
+_xre_image_border_get(XR_Image *im, int *l, int *r, int *t, int *b)
+{
+}
+
+void
+_xre_image_surface_gen(XR_Image *im)
+{
+   void *data = NULL;
+
+   if ((im->surface) && (!im->updates)) return;
+   if (im->data) data = im->data;
+   else
+     {
+       if (!im->im) im->im = evas_common_load_image_from_file(im->file, im->key, &(im->load_opts));
+       if (im->im)
+         {
+             evas_cache_image_load_data(&im->im->cache_entry);
+            data = im->im->image.data;
+         }
+     }
+   if (!data) return;
+   if (im->surface)
+     {
+       if (im->updates)
+         {
+            Tilebuf_Rect *rects, *r;
+            
+            rects = evas_common_tilebuf_get_render_rects(im->updates);
+            if (rects)
+              {
+                 for (r = rects; r; r = (Tilebuf_Rect *)((Evas_Object_List *)r)->next)
+                   {
+                      int rx, ry, rw, rh;
+                      
+                      rx = r->x; ry = r->y; rw = r->w, rh = r->h;
+                      RECTS_CLIP_TO_RECT(rx, ry, rw, rh, 0, 0, im->w, im->h);
+                      if (im->alpha)
+                        _xr_render_surface_argb_pixels_fill(im->surface, im->w, im->h, data, rx, ry, rw, rh);
+                      else
+                        _xr_render_surface_rgb_pixels_fill(im->surface, im->w, im->h, data, rx, ry, rw, rh);
+                   }
+                 evas_common_tilebuf_free_render_rects(rects);
+              }
+            evas_common_tilebuf_free(im->updates);
+            im->updates = NULL;
+         }
+       return;
+     }
+   if (im->alpha)
+     {
+       im->surface = _xr_render_surface_new(im->xcbinf,
+                                             im->w + 1, im->h + 1, im->xcbinf->fmt32, 1);
+       _xr_render_surface_argb_pixels_fill(im->surface, im->w, im->h, data, 0, 0, im->w, im->h);
+     }
+   else
+     {
+       im->surface = _xr_render_surface_new(im->xcbinf,
+                                             im->w + 1, im->h + 1, im->xcbinf->fmt24, 0);
+       _xr_render_surface_rgb_pixels_fill(im->surface, im->w, im->h, data, 0, 0, im->w, im->h);
+      }
+   /* fill right and bottom pixel so interpolation works right */
+   _xr_render_surface_copy(im->surface, im->surface,
+                          im->w - 1, 0,
+                          im->w, 0,
+                          1, im->h);
+   _xr_render_surface_copy(im->surface, im->surface,
+                          0, im->h - 1,
+                          0, im->h,
+                          im->w, 1);
+   _xr_render_surface_copy(im->surface, im->surface,
+                          im->w - 1, im->h - 1,
+                          im->w, im->h,
+                          1, 1);
+   if ((im->im) && (!im->dirty))
+     {
+        evas_cache_image_drop(&im->im->cache_entry);
+       im->im = NULL;
+     }
+}
+
+void
+_xre_image_cache_set(int size)
+{
+   _xr_image_cache_size = size;
+   while (_xr_image_cache_usage > _xr_image_cache_size)
+     {
+       Evas_List *l;
+       
+       l = evas_list_last(_xr_image_cache);
+       if (l)
+         {
+            XR_Image *im;
+            
+            im = l->data;
+            _xr_image_cache = evas_list_remove_list(_xr_image_cache, l);
+            _xr_image_cache_usage -= (im->w * im->h * 4);
+            __xre_image_real_free(im);
+         }
+     }
+}
+
+int
+_xre_image_cache_get(void)
+{
+   return _xr_image_cache_size;
+}
diff --git a/src/modules/engines/xrender_xcb/evas_engine_ximage.c b/src/modules/engines/xrender_xcb/evas_engine_ximage.c
new file mode 100644 (file)
index 0000000..da86c7f
--- /dev/null
@@ -0,0 +1,580 @@
+#include "evas_common.h"
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_Xcb.h"
+
+static Evas_List *_image_info_list = NULL;
+
+static int _xcb_err = 0;
+
+enum
+{
+  xcb_render_pictforminfo_id            = 1 << 0,
+  xcb_render_pictforminfo_type_t        = 1 << 1,
+  xcb_render_pictforminfo_depth_t       = 1 << 2,
+  xcb_render_pictforminfo_red_shift_t   = 1 << 3,
+  xcb_render_pictforminfo_red_mask_t    = 1 << 4,
+  xcb_render_pictforminfo_green_shift_t = 1 << 5,
+  xcb_render_pictforminfo_green_mask_t  = 1 << 6,
+  xcb_render_pictforminfo_blue_shift_t  = 1 << 7,
+  xcb_render_pictforminfo_blue_mask_t   = 1 << 8,
+  xcb_render_pictforminfo_alpha_shift_t = 1 << 9,
+  xcb_render_pictforminfo_alpha_mask_t  = 1 << 10,
+  xcb_render_pictforminfo_colormap_t    = 1 << 11,
+};
+
+enum
+{
+  xcb_render_standard_pictforminfoargb_32_t,
+  xcb_render_standard_pictforminforgb_24_t,
+  xcb_render_standard_pictforminfoa_8_t,
+  xcb_render_standard_pictforminfoa_4_t,
+  xcb_render_standard_pictforminfoa_1_t,
+  xcb_render_standard_pictforminfo_count_t
+};
+
+static xcb_render_pictforminfo_t *
+xcb_render_find_pictforminfo (xcb_connection_t *conn, uint32_t mask, const xcb_render_pictforminfo_t *template, int count)
+{
+  xcb_render_query_pict_formats_cookie_t cookie;
+  xcb_render_query_pict_formats_reply_t *rep;
+  xcb_render_pictforminfo_iterator_t     iter_forminfo;
+
+  cookie = xcb_render_query_pict_formats_unchecked (conn);
+  rep = xcb_render_query_pict_formats_reply (conn, cookie, NULL);
+  iter_forminfo = xcb_render_query_pict_formats_formats_iterator (rep);
+  for (; iter_forminfo.rem; xcb_render_pictforminfo_next (&iter_forminfo)) {
+    if (mask & xcb_render_pictforminfo_id)
+      if (template->id != iter_forminfo.data->id)
+        continue;
+    if (mask & xcb_render_pictforminfo_type_t)
+      if (template->type != iter_forminfo.data->type)
+        continue;
+    if (mask & xcb_render_pictforminfo_depth_t)
+      if (template->depth != iter_forminfo.data->depth)
+        continue;
+    if (mask & xcb_render_pictforminfo_red_shift_t)
+      if (template->direct.red_shift != iter_forminfo.data->direct.red_shift)
+        continue;
+    if (mask & xcb_render_pictforminfo_red_mask_t)
+      if (template->direct.red_mask != iter_forminfo.data->direct.red_mask)
+        continue;
+    if (mask & xcb_render_pictforminfo_green_shift_t)
+      if (template->direct.green_shift != iter_forminfo.data->direct.green_shift)
+        continue;
+    if (mask & xcb_render_pictforminfo_green_mask_t)
+      if (template->direct.green_mask != iter_forminfo.data->direct.green_mask)
+        continue;
+    if (mask & xcb_render_pictforminfo_blue_shift_t)
+      if (template->direct.blue_shift != iter_forminfo.data->direct.blue_shift)
+        continue;
+    if (mask & xcb_render_pictforminfo_blue_mask_t)
+      if (template->direct.blue_mask != iter_forminfo.data->direct.blue_mask)
+        continue;
+    if (mask & xcb_render_pictforminfo_alpha_shift_t)
+      if (template->direct.alpha_shift != iter_forminfo.data->direct.alpha_shift)
+        continue;
+    if (mask & xcb_render_pictforminfo_alpha_mask_t)
+      if (template->direct.alpha_mask != iter_forminfo.data->direct.alpha_mask)
+        continue;
+    if (mask & xcb_render_pictforminfo_colormap_t)
+      if (template->colormap != iter_forminfo.data->colormap)
+        continue;
+    if (count-- == 0) {
+      xcb_render_pictforminfo_t *forminfo;
+
+      forminfo = (xcb_render_pictforminfo_t *)malloc (sizeof (xcb_render_pictforminfo_t));
+      memcpy (forminfo, iter_forminfo.data, sizeof (xcb_render_pictforminfo_t));
+
+      free (rep);
+      return forminfo;
+    }
+  }
+  free (rep);
+  return NULL;
+}
+
+static xcb_render_pictforminfo_t *
+xcb_render_find_standard_pictforminfo (xcb_connection_t *conn, int format)
+{
+  xcb_render_pictforminfo_t *forminfo = NULL;
+  struct {
+    xcb_render_pictforminfo_t template;
+    uint32_t                mask;
+  } standardFormats[xcb_render_standard_pictforminfo_count_t] = {
+    /* StandardPICTFORMINFOARGB32 */
+    {
+      {
+        0,                                /* id */
+        XCB_RENDER_PICT_TYPE_DIRECT,          /* type */
+        32,                               /* depth */
+        { 0, 0 },                         /* pad */
+        {                                 /* direct */
+          16,                             /* direct.red_shift */
+          0xff,                           /* direct.red_mask */
+          8,                              /* direct.green_shift */
+          0xff,                           /* direct.green_mask */
+          0,                              /* direct.blue_shift */
+          0xff,                           /* direct.blue_mask */
+          24,                             /* direct.alpha_shift */
+          0xff                            /* direct.alpha_mask */
+        },
+        0                                 /* colormap */
+      },
+      xcb_render_pictforminfo_type_t        |
+      xcb_render_pictforminfo_depth_t       |
+      xcb_render_pictforminfo_red_shift_t   |
+      xcb_render_pictforminfo_red_mask_t    |
+      xcb_render_pictforminfo_green_shift_t |
+      xcb_render_pictforminfo_green_mask_t  |
+      xcb_render_pictforminfo_blue_shift_t  |
+      xcb_render_pictforminfo_blue_mask_t   |
+      xcb_render_pictforminfo_alpha_shift_t |
+      xcb_render_pictforminfo_alpha_mask_t
+    },
+    /* StandardPICTFORMINFORGB24 */
+    {
+      {
+        0,                                /* id */
+        XCB_RENDER_PICT_TYPE_DIRECT,          /* type */
+        24,                               /* depth */
+        { 0, 0 },                         /* pad */
+        {                                 /* direct */
+          16,                             /* direct.red_shift */
+          0xff,                           /* direct.red_mask */
+          8,                              /* direct.green_shift */
+          0xff,                           /* direct.green_mask */
+          0,                              /* direct.blue_shift */
+          0xff,                           /* direct.blue_mask */
+          0,                              /* direct.alpha_shift */
+          0x00                            /* direct.alpha_mask */
+        },
+        0                                 /* colormap */
+      },
+      xcb_render_pictforminfo_type_t        |
+      xcb_render_pictforminfo_depth_t       |
+      xcb_render_pictforminfo_red_shift_t   |
+      xcb_render_pictforminfo_red_mask_t    |
+      xcb_render_pictforminfo_green_shift_t |
+      xcb_render_pictforminfo_green_mask_t  |
+      xcb_render_pictforminfo_blue_shift_t  |
+      xcb_render_pictforminfo_blue_mask_t   |
+      xcb_render_pictforminfo_alpha_mask_t
+    },
+    /* StandardPICTFORMINFOA8 */
+    {
+      {
+        0,                                /* id */
+        XCB_RENDER_PICT_TYPE_DIRECT,          /* type */
+        8,                                /* depth */
+        { 0, 0 },                         /* pad */
+        {                                 /* direct */
+          0,                              /* direct.red_shift */
+          0x00,                           /* direct.red_mask */
+          0,                              /* direct.green_shift */
+          0x00,                           /* direct.green_mask */
+          0,                              /* direct.blue_shift */
+          0x00,                           /* direct.blue_mask */
+          0,                              /* direct.alpha_shift */
+          0xff                            /* direct.alpha_mask */
+        },
+        0                                 /* colormap */
+      },
+      xcb_render_pictforminfo_type_t        |
+      xcb_render_pictforminfo_depth_t       |
+      xcb_render_pictforminfo_red_mask_t    |
+      xcb_render_pictforminfo_green_mask_t  |
+      xcb_render_pictforminfo_blue_mask_t   |
+      xcb_render_pictforminfo_alpha_shift_t |
+      xcb_render_pictforminfo_alpha_mask_t
+    },
+    /* StandardPICTFORMINFOA4 */
+    {
+      {
+        0,                                /* id */
+        XCB_RENDER_PICT_TYPE_DIRECT,          /* type */
+        4,                                /* depth */
+        { 0, 0 },                         /* pad */
+        {                                 /* direct */
+          0,                              /* direct.red_shift */
+          0x00,                           /* direct.red_mask */
+          0,                              /* direct.green_shift */
+          0x00,                           /* direct.green_mask */
+          0,                              /* direct.blue_shift */
+          0x00,                           /* direct.blue_mask */
+          0,                              /* direct.alpha_shift */
+          0x0f                            /* direct.alpha_mask */
+        },
+        0                                 /* colormap */
+      },
+      xcb_render_pictforminfo_type_t        |
+      xcb_render_pictforminfo_depth_t       |
+      xcb_render_pictforminfo_red_mask_t    |
+      xcb_render_pictforminfo_green_mask_t  |
+      xcb_render_pictforminfo_blue_mask_t   |
+      xcb_render_pictforminfo_alpha_shift_t |
+      xcb_render_pictforminfo_alpha_mask_t
+    },
+    /* StandardPICTFORMINFOA1 */
+    {
+      {
+        0,                                /* id */
+        XCB_RENDER_PICT_TYPE_DIRECT,          /* type */
+        1,                                /* depth */
+        { 0, 0 },                         /* pad */
+        {                                 /* direct */
+          0,                              /* direct.red_shift */
+          0x00,                           /* direct.red_mask */
+          0,                              /* direct.green_shift */
+          0x00,                           /* direct.green_mask */
+          0,                              /* direct.blue_shift */
+          0x00,                           /* direct.blue_mask */
+          0,                              /* direct.alpha_shift */
+          0x01                            /* direct.alpha_mask */
+        },
+        0                                 /* colormap */
+      },
+      xcb_render_pictforminfo_type_t        |
+      xcb_render_pictforminfo_depth_t       |
+      xcb_render_pictforminfo_red_mask_t    |
+      xcb_render_pictforminfo_green_mask_t  |
+      xcb_render_pictforminfo_blue_mask_t   |
+      xcb_render_pictforminfo_alpha_shift_t |
+      xcb_render_pictforminfo_alpha_mask_t
+    },
+  };
+  if ((format >= 0) && (format < xcb_render_standard_pictforminfo_count_t))
+    forminfo = xcb_render_find_pictforminfo (conn,
+                                             standardFormats[format].mask,
+                                             &standardFormats[format].template,
+                                             0);
+  return forminfo;
+}
+
+static void
+_tmp_xcb_err(xcb_connection_t *conn/* , XErrorEvent *ev */)
+{
+   _xcb_err = 1;
+   return;
+}
+
+Xcb_Image_Info *
+_xr_image_info_get(xcb_connection_t *conn, xcb_drawable_t draw, xcb_visualid_t vis)
+{
+   xcb_get_geometry_cookie_t cookie;
+   xcb_get_geometry_reply_t *rep;
+   Xcb_Image_Info           *xcbinf;
+   Xcb_Image_Info           *xcbinf2;
+   Evas_List                *l;
+
+   xcbinf2 = NULL;
+   for (l = _image_info_list; l; l = l->next)
+     {
+       xcbinf = l->data;
+       if (xcbinf->conn == conn)
+         {
+            xcbinf2 = xcbinf;
+            break;
+         }
+     }
+   xcbinf = calloc(1, sizeof(Xcb_Image_Info));
+   if (!xcbinf) return NULL;
+
+   xcbinf->references = 1;
+   xcbinf->conn = conn;
+   xcbinf->draw = draw;
+   cookie = xcb_get_geometry_unchecked(xcbinf->conn, xcbinf->draw);
+   rep = xcb_get_geometry_reply(xcbinf->conn, cookie, NULL);
+   xcbinf->root = rep->root;
+   free(rep);
+   xcbinf->vis = vis;
+   xcbinf->fmt32 = xcb_render_find_standard_pictforminfo(xcbinf->conn, xcb_render_standard_pictforminfoargb_32_t);
+   xcbinf->fmt24 = xcb_render_find_standard_pictforminfo(xcbinf->conn, xcb_render_standard_pictforminforgb_24_t);
+   xcbinf->fmt8 = xcb_render_find_standard_pictforminfo(xcbinf->conn, xcb_render_standard_pictforminfoa_8_t);
+   xcbinf->fmt4 = xcb_render_find_standard_pictforminfo(xcbinf->conn, xcb_render_standard_pictforminfoa_4_t);
+   xcbinf->fmt1 = xcb_render_find_standard_pictforminfo(xcbinf->conn, xcb_render_standard_pictforminfoa_1_t);
+   xcbinf->mul = _xr_render_surface_new(xcbinf, 1, 1, xcbinf->fmt32, 1);
+   _xr_render_surface_repeat_set(xcbinf->mul, 1);
+   xcbinf->mul_r = xcbinf->mul_g = xcbinf->mul_b = xcbinf->mul_a = 0xff;
+   _xr_render_surface_solid_rectangle_set(xcbinf->mul, xcbinf->mul_r, xcbinf->mul_g, xcbinf->mul_b, xcbinf->mul_a, 0, 0, 1, 1);
+   if (xcbinf2)
+     {
+       xcbinf->can_do_shm = xcbinf2->can_do_shm;
+       xcbinf->depth = xcbinf2->depth;
+     }
+   else
+     {
+       xcb_shm_segment_info_t shm_info;
+       xcb_image_t           *xcbim;
+
+        xcbinf->depth = 32;
+        {
+          xcb_setup_t          *rep;
+          xcb_screen_iterator_t iter_screen;
+
+          rep = (xcb_setup_t *)xcb_get_setup(xcbinf->conn);
+          iter_screen = xcb_setup_roots_iterator(rep);
+          for (; iter_screen.rem ; xcb_screen_next (&iter_screen)) {
+            xcb_depth_iterator_t iter_depth;
+
+            iter_depth = xcb_screen_allowed_depths_iterator (iter_screen.data);
+            for (; iter_depth.rem ; xcb_depth_next (&iter_depth)) {
+              xcb_visualtype_iterator_t iter_visual;
+
+              iter_visual = xcb_depth_visuals_iterator (iter_depth.data);
+              for (; iter_visual.rem ; xcb_visualtype_next (&iter_visual)) {
+                if (iter_visual.data->visual_id == vis)
+                  xcbinf->depth = iter_depth.data->depth;
+              }
+            }
+          }
+        }
+
+       xcbinf->can_do_shm = 0;
+
+
+        shm_info.shmseg = xcb_generate_id(xcbinf->conn);
+        xcbim = xcb_image_shm_create(xcbinf->conn, xcbinf->depth, XCB_IMAGE_FORMAT_Z_PIXMAP, NULL, 1, 1);
+        if (xcbim) {
+           shm_info.shmid = shmget(IPC_PRIVATE, xcbim->bytes_per_line * xcbim->height, IPC_CREAT | 0777);
+           if (shm_info.shmid >= 0) {
+              shm_info.shmaddr = xcbim->data = shmat(shm_info.shmid, 0, 0);
+              if ((shm_info.shmaddr != NULL) && (shm_info.shmaddr != (void *) -1)) {
+                 xcb_get_input_focus_reply_t *reply;
+                 /*
+                  * FIXME: no error mechanism
+                  */
+                 /* XErrorHandler ph; */
+
+                 /* we sync */
+                 reply = xcb_get_input_focus_reply(xcbinf->conn,
+                                               xcb_get_input_focus_unchecked(xcbinf->conn),
+                                               NULL);
+                 free(reply);
+                 _xcb_err = 0;
+                 /* ph = XSetErrorHandler((XErrorHandler)_tmp_xcb_err); */
+                 xcb_shm_attach(xcbinf->conn, shm_info.shmseg, shm_info.shmid, 0);
+                 /* we sync */
+                 reply = xcb_get_input_focus_reply(xcbinf->conn,
+                                               xcb_get_input_focus_unchecked(xcbinf->conn),
+                                               NULL);
+                 free(reply);
+                 /* XSetErrorHandler((XErrorHandler)ph); */
+                 if (!_xcb_err) xcbinf->can_do_shm = 1;
+                 shmdt(shm_info.shmaddr);
+              }
+              shmctl(shm_info.shmid, IPC_RMID, 0);
+           }
+           xcb_image_shm_destroy(xcbim);
+        }
+     }
+   _image_info_list = evas_list_prepend(_image_info_list, xcbinf);
+   return xcbinf;
+}
+
+void
+_xr_image_info_free(Xcb_Image_Info *xcbinf)
+{
+  if (!xcbinf) return;
+   if (xcbinf->pool)
+     {
+        xcb_get_input_focus_reply_t *reply;
+       
+        reply = xcb_get_input_focus_reply(xcbinf->conn,
+                                          xcb_get_input_focus_unchecked(xcbinf->conn),
+                                          NULL);
+        free(reply);
+     }
+   _xr_image_info_pool_flush(xcbinf, 0, 0);
+   xcbinf->references--;
+   if (xcbinf->references != 0) return;
+   _xr_render_surface_free(xcbinf->mul);
+   if (xcbinf->fmt1)
+     free(xcbinf->fmt1);
+   if (xcbinf->fmt4)
+     free(xcbinf->fmt4);
+   if (xcbinf->fmt8)
+     free(xcbinf->fmt8);
+   if (xcbinf->fmt24)
+     free(xcbinf->fmt24);
+   if (xcbinf->fmt32)
+     free(xcbinf->fmt32);
+   free(xcbinf);
+   _image_info_list = evas_list_remove(_image_info_list, xcbinf);
+}
+
+void
+_xr_image_info_pool_flush(Xcb_Image_Info *xcbinf, int max_num, int max_mem)
+{
+   if ((xcbinf->pool_mem <= max_mem) && (evas_list_count(xcbinf->pool) <= max_num)) return;
+   while ((xcbinf->pool_mem > max_mem) || (evas_list_count(xcbinf->pool) > max_num))
+     {
+       Xcb_Image_Image *xcbim;
+
+       if (!xcbinf->pool) break;
+       xcbim = xcbinf->pool->data;
+       _xr_image_free(xcbim);
+     }
+}
+
+Xcb_Image_Image *
+_xr_image_new(Xcb_Image_Info *xcbinf, int w, int h, int depth)
+{
+   Xcb_Image_Image *xcbim, *xcbim2;
+   Evas_List       *l;
+
+   xcbim2 = NULL;
+   for (l = xcbinf->pool; l; l = l->next)
+     {
+       xcbim = l->data;
+       if ((xcbim->w >= w) && (xcbim->h >= h) && (xcbim->depth == depth) && (xcbim->available))
+         {
+            if (!xcbim2) xcbim2 = xcbim;
+            else if ((xcbim->w * xcbim->h) < (xcbim2->w * xcbim2->h)) xcbim2 = xcbim;
+         }
+     }
+   if (xcbim2)
+     {
+       xcbim2->available = 0;
+       return xcbim2;
+     }
+   xcbim = calloc(1, sizeof(Xcb_Image_Image));
+   if (xcbim)
+     {
+       xcbim->xcbinf = xcbinf;
+       xcbim->w = w;
+       xcbim->h = h;
+       xcbim->depth = depth;
+       xcbim->available = 0;
+       if (xcbim->xcbinf->can_do_shm)
+         {
+            xcbim->shm_info = calloc(1, sizeof(xcb_shm_segment_info_t));
+            if (xcbim->shm_info)
+              {
+                  xcbim->shm_info->shmseg = xcb_generate_id(xcbinf->conn);
+                 xcbim->xcbim = xcb_image_shm_create(xcbim->xcbinf->conn, xcbim->depth, XCB_IMAGE_FORMAT_Z_PIXMAP, NULL, xcbim->w, xcbim->h);
+                 if (xcbim->xcbim)
+                   {
+                      xcbim->shm_info->shmid = shmget(IPC_PRIVATE, xcbim->xcbim->bytes_per_line * xcbim->xcbim->height, IPC_CREAT | 0777);
+                      if (xcbim->shm_info->shmid >= 0)
+                        {
+                           xcbim->shm_info->shmaddr = xcbim->xcbim->data = shmat(xcbim->shm_info->shmid, 0, 0);
+                           if ((xcbim->shm_info->shmaddr) && (xcbim->shm_info->shmaddr != (void *) -1))
+                             {
+                                 xcb_get_input_focus_reply_t *reply;
+                                 /*
+                                  * FIXME: no error mechanism
+                                  */
+                                 /*                             XErrorHandler ph; */
+
+                                 /* we sync */
+                                 reply = xcb_get_input_focus_reply(xcbim->xcbinf->conn,
+                                                               xcb_get_input_focus_unchecked(xcbim->xcbinf->conn),
+                                                               NULL);
+                                 free(reply);
+                                _xcb_err = 0;
+/*                              ph = XSetErrorHandler((XErrorHandler)_tmp_xcb_err); */
+                                xcb_shm_attach(xcbim->xcbinf->conn, xcbim->shm_info->shmseg, xcbim->shm_info->shmid, 0);
+                                 /* we sync */
+                                 reply = xcb_get_input_focus_reply(xcbim->xcbinf->conn,
+                                                               xcb_get_input_focus_unchecked(xcbim->xcbinf->conn),
+                                                               NULL);
+                                 free(reply);
+/*                              XSetErrorHandler((XErrorHandler)ph); */
+                                if (!_xcb_err) goto xcbim_ok;
+                                shmdt(xcbim->shm_info->shmaddr);
+                             }
+                           shmctl(xcbim->shm_info->shmid, IPC_RMID, 0);
+                        }
+                      xcb_image_shm_destroy(xcbim->xcbim);
+                   }
+                 free(xcbim->shm_info);
+                 xcbim->shm_info = NULL;
+              }
+         }
+       xcbim->xcbim = xcb_image_create(xcbim->xcbinf->conn, xcbim->depth, XCB_IMAGE_FORMAT_Z_PIXMAP, 0, NULL, xcbim->w, xcbim->h, 32, 0);
+       if (!xcbim->xcbim)
+         {
+            free(xcbim);
+            return NULL;
+         }
+       xcbim->xcbim->data = malloc(xcbim->xcbim->bytes_per_line * xcbim->xcbim->height);
+       if (!xcbim->xcbim->data)
+         {
+            xcb_image_destroy(xcbim->xcbim);
+            free(xcbim);
+            return NULL;
+         }
+     }
+
+   xcbim_ok:
+   _xr_image_info_pool_flush(xcbinf, 32, (1600 * 1200 * 32 * 2));
+
+   xcbim->line_bytes = xcbim->xcbim->bytes_per_line;
+   xcbim->data = (void *)(xcbim->xcbim->data);
+   xcbinf->pool_mem += (xcbim->w * xcbim->h * xcbim->depth);
+   xcbinf->pool = evas_list_append(xcbinf->pool, xcbim);
+   return xcbim;
+}
+
+void
+_xr_image_free(Xcb_Image_Image *xcbim)
+{
+   if (xcbim->shm_info)
+     {
+       if (!xcbim->available)
+          {
+            xcb_get_input_focus_reply_t *reply;
+            
+            reply = xcb_get_input_focus_reply(xcbim->xcbinf->conn,
+                                              xcb_get_input_focus_unchecked(xcbim->xcbinf->conn),
+                                              NULL);
+            free(reply);
+          }
+       xcb_shm_detach(xcbim->xcbinf->conn, xcbim->shm_info->shmseg);
+       xcb_image_shm_destroy(xcbim->xcbim);
+       shmdt(xcbim->shm_info->shmaddr);
+       shmctl(xcbim->shm_info->shmid, IPC_RMID, 0);
+       free(xcbim->shm_info);
+     }
+   else
+     {
+       free(xcbim->xcbim->data);
+       xcbim->xcbim->data = NULL;
+       xcb_image_destroy(xcbim->xcbim);
+     }
+   xcbim->xcbinf->pool_mem -= (xcbim->w * xcbim->h * xcbim->depth);
+   xcbim->xcbinf->pool = evas_list_remove(xcbim->xcbinf->pool, xcbim);
+   free(xcbim);
+}
+
+void
+_xr_image_put(Xcb_Image_Image *xcbim, xcb_drawable_t draw, int x, int y, int w, int h)
+{
+   xcb_get_input_focus_reply_t *reply;
+   xcb_gcontext_t               gc;
+
+   gc = xcb_generate_id(xcbim->xcbinf->conn);
+   xcb_create_gc(xcbim->xcbinf->conn, gc, draw, 0, NULL);
+   if (xcbim->shm_info)
+     {
+       xcb_shm_put_image(xcbim->xcbinf->conn, draw, gc,
+                       xcbim->xcbim->width, xcbim->xcbim->height,
+                       0, 0,
+                       w, h,
+                       x, y,
+                       xcbim->xcbim->depth, xcbim->xcbim->format,
+                       0,
+                       xcbim->shm_info->shmseg,
+                       xcbim->xcbim->data - xcbim->shm_info->shmaddr);
+        /* we sync */
+        reply = xcb_get_input_focus_reply(xcbim->xcbinf->conn,
+                                      xcb_get_input_focus_unchecked(xcbim->xcbinf->conn),
+                                      NULL);
+        free(reply);
+     }
+   else
+     xcb_image_put(xcbim->xcbinf->conn, draw, gc, xcbim->xcbim, 0, 0, x, y, w, h);
+   xcbim->available = 1;
+   xcb_free_gc(xcbim->xcbinf->conn, gc);
+}
diff --git a/src/modules/engines/xrender_xcb/evas_engine_xrender.c b/src/modules/engines/xrender_xcb/evas_engine_xrender.c
new file mode 100644 (file)
index 0000000..bfdba0c
--- /dev/null
@@ -0,0 +1,863 @@
+/*
+ * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
+ */
+#include "evas_common.h"
+/* #include "evas_macros.h" */
+#include "evas_private.h"
+#include "evas_engine.h"
+#include "Evas_Engine_XRender_Xcb.h"
+#include <math.h>
+
+/* As opposed to libXRender, we don't have
+ * XDoubleToFixed in XCB :/
+ */
+#define DOUBLE_TO_FIXED(d) ((xcb_render_fixed_t) ((d) * 65536))
+
+/* this is a work around broken xrender - when/if this ever gets fixed in xorg
+ * we can comment this out and one day remove it - for now keep it until such
+ * a fix is spotted in the wild
+ */
+#define BROKEN_XORG_XRENDER 1
+
+static inline void
+set_filter(Xcb_Render_Surface *s, int smooth)
+{
+   const char *f = smooth ? "best": "nearest";
+
+   xcb_render_set_picture_filter (s->xcbinf->conn, s->pic, strlen (f), f, 0, NULL);
+}
+
+xcb_render_pictforminfo_t *
+xcb_render_find_visual_format (xcb_connection_t *c, xcb_visualid_t visual)
+{
+  xcb_render_query_pict_formats_cookie_t cookie;
+  xcb_render_query_pict_formats_reply_t *rep;
+  xcb_render_pictscreen_iterator_t       screen_iter;
+  xcb_render_pictformat_t                format = { 0 };
+
+  cookie = xcb_render_query_pict_formats (c);
+  rep = xcb_render_query_pict_formats_reply (c, cookie, NULL);
+  if (!rep)
+    return NULL;
+
+  screen_iter = xcb_render_query_pict_formats_screens_iterator (rep);
+  for (; screen_iter.rem; xcb_render_pictscreen_next (&screen_iter)) {
+    xcb_render_pictdepth_iterator_t depth_iter;
+
+    depth_iter = xcb_render_pictscreen_depths_iterator (screen_iter.data);
+    for (; depth_iter.rem; xcb_render_pictdepth_next (&depth_iter)) {
+      xcb_render_pictvisual_iterator_t visual_iter;
+
+      visual_iter = xcb_render_pictdepth_visuals_iterator (depth_iter.data);
+      for (; visual_iter.rem; xcb_render_pictvisual_next (&visual_iter)) {
+        if (visual == visual_iter.data->visual) {
+          format = visual_iter.data->format;
+        }
+      }
+    }
+  }
+  if (format != 0) {
+    xcb_render_pictforminfo_iterator_t forminfo_iter;
+
+    forminfo_iter = xcb_render_query_pict_formats_formats_iterator (rep);
+    for (; forminfo_iter.rem; xcb_render_pictforminfo_next (&forminfo_iter)) {
+      if (forminfo_iter.data->id == format) {
+        xcb_render_pictforminfo_t *forminfo;
+
+        forminfo = (xcb_render_pictforminfo_t *)malloc (sizeof (xcb_render_pictforminfo_t));
+        memcpy (forminfo, forminfo_iter.data, sizeof (xcb_render_pictforminfo_t));
+        free (rep);
+
+        return forminfo;
+      }
+    }
+  }
+  free (rep);
+
+  return NULL;
+}
+
+Xcb_Render_Surface *
+_xr_render_surface_new(Xcb_Image_Info *xcbinf, int w, int h, xcb_render_pictforminfo_t *fmt, int alpha)
+{
+   Xcb_Render_Surface *rs;
+   uint32_t            mask;
+   uint32_t            values[3];
+
+   if ((!xcbinf) || (!fmt) || (w < 1) || (h < 1)) return NULL;
+
+   rs = calloc(1, sizeof(Xcb_Render_Surface));
+   if (!rs) return NULL;
+   rs->xcbinf = xcbinf;
+   rs->w = w;
+   rs->h = h;
+   rs->fmt = (xcb_render_pictforminfo_t *)malloc (sizeof (xcb_render_pictforminfo_t));
+   if (!rs->fmt)
+     {
+        free(rs);
+        return NULL;
+     }
+   memcpy (rs->fmt, fmt, sizeof (xcb_render_pictforminfo_t));
+   rs->alpha = alpha;
+   rs->depth = fmt->depth;
+   rs->allocated = 1;
+   rs->draw = xcb_generate_id(xcbinf->conn);
+   xcb_create_pixmap(xcbinf->conn, fmt->depth, rs->draw, xcbinf->root, w, h);
+   if (rs->draw == 0)
+     {
+       free(rs->fmt);
+       free(rs);
+       return NULL;
+     }
+   rs->xcbinf->references++;
+   mask = XCB_RENDER_CP_REPEAT | XCB_RENDER_CP_DITHER | XCB_RENDER_CP_COMPONENT_ALPHA;
+   values[0] = 0;
+   values[1] = 0;
+   values[2] = 0;
+   rs->pic = xcb_generate_id(xcbinf->conn);
+   xcb_render_create_picture(xcbinf->conn, rs->pic, rs->draw, fmt->id, mask, values);
+   if (rs->pic == 0)
+     {
+       xcb_free_pixmap(rs->xcbinf->conn, rs->draw);
+       rs->xcbinf->references--;
+       free(rs->fmt);
+       free(rs);
+       return NULL;
+     }
+
+   return rs;
+}
+
+Xcb_Render_Surface *
+_xr_render_surface_adopt(Xcb_Image_Info *xcbinf, xcb_drawable_t draw, int w, int h, int alpha)
+{
+   Xcb_Render_Surface        *rs;
+   uint32_t                   mask;
+   uint32_t                   values[3];
+
+   if ((!xcbinf) || (draw == 0) || (w < 1) || (h < 1)) return NULL;
+   rs = calloc(1, sizeof(Xcb_Render_Surface));
+   if (!rs) return NULL;
+   rs->xcbinf = xcbinf;
+   rs->w = w;
+   rs->h = h;
+/*    if (fmt->depth == xcbinf->fmt32->depth) */
+/*      rs->fmt = xcbinf->fmt32; */
+/*    else if (fmt->depth == xcbinf->fmt24->depth) */
+/*      rs->fmt = xcbinf->fmt24; */
+/*    else if (fmt->depth == xcbinf->fmt8->depth) */
+/*      rs->fmt = xcbinf->fmt8; */
+/*    else if (fmt->depth == xcbinf->fmt4->depth) */
+/*      rs->fmt = xcbinf->fmt4; */
+/*    else */
+/*      rs->fmt = xcbinf->fmt1; */
+/*    free(fmt); */
+
+   rs->fmt = xcb_render_find_visual_format(xcbinf->conn, xcbinf->vis);
+   if (!rs->fmt)
+     {
+        free(rs);
+        return NULL;
+     }
+   rs->alpha = alpha;
+   rs->depth = rs->fmt->depth;
+   if (rs->fmt->depth == 32) rs->alpha = 1;
+   rs->allocated = 0;
+   rs->draw = draw;
+   rs->xcbinf->references++;
+   mask = XCB_RENDER_CP_REPEAT | XCB_RENDER_CP_DITHER | XCB_RENDER_CP_COMPONENT_ALPHA;
+   values[0] = 0;
+   values[1] = 0;
+   values[2] = 0;
+   rs->pic = xcb_generate_id(xcbinf->conn);
+   xcb_render_create_picture(xcbinf->conn, rs->pic, rs->draw, rs->fmt->id, mask, values);
+   if (rs->pic == 0)
+     {
+       rs->xcbinf->references--;
+       free(rs->fmt);
+       free(rs);
+       return NULL;
+     }
+
+   return rs;
+}
+
+Xcb_Render_Surface *
+_xr_render_surface_format_adopt(Xcb_Image_Info *xcbinf, xcb_drawable_t draw, int w, int h, xcb_render_pictforminfo_t *fmt, int alpha)
+{
+   Xcb_Render_Surface *rs;
+   uint32_t            mask;
+   uint32_t            values[3];
+
+   if ((!xcbinf) || (!fmt) || (draw == 0) || (w < 1) || (h < 1)) return NULL;
+   rs = calloc(1, sizeof(Xcb_Render_Surface));
+   if (!rs) return NULL;
+   rs->xcbinf = xcbinf;
+   rs->w = w;
+   rs->h = h;
+   rs->fmt = (xcb_render_pictforminfo_t *)malloc (sizeof (xcb_render_pictforminfo_t));
+   memcpy (rs->fmt, fmt, sizeof (xcb_render_pictforminfo_t));
+   rs->alpha = alpha;
+   rs->depth = fmt->depth;
+   if (fmt->depth == 32) rs->alpha = 1;
+   rs->xcbinf->references++;
+   rs->allocated = 0;
+   rs->draw = draw;
+   mask = XCB_RENDER_CP_REPEAT | XCB_RENDER_CP_DITHER | XCB_RENDER_CP_COMPONENT_ALPHA;
+   values[0] = 0;
+   values[1] = 0;
+   values[2] = 0;
+   rs->pic = xcb_generate_id(xcbinf->conn);
+   xcb_render_create_picture(xcbinf->conn, rs->pic, rs->draw, fmt->id, mask, values);
+   if (rs->pic == 0)
+     {
+       rs->xcbinf->references--;
+       free(rs->fmt);
+       free(rs);
+       return NULL;
+     }
+
+   return rs;
+}
+
+void
+_xr_render_surface_free(Xcb_Render_Surface *rs)
+{
+   if (!rs) return;
+   if (rs->xcbinf)
+     {
+       if ((rs->allocated) && (rs->draw != 0))
+          xcb_free_pixmap(rs->xcbinf->conn, rs->draw);
+       if (rs->pic != 0)
+          xcb_render_free_picture(rs->xcbinf->conn, rs->pic);
+       _xr_image_info_free(rs->xcbinf);
+       rs->xcbinf = NULL;
+     }
+   free(rs->fmt);
+   free(rs);
+}
+
+void
+_xr_render_surface_repeat_set(Xcb_Render_Surface *rs, int repeat)
+{
+   uint32_t mask;
+   uint32_t value[1];
+
+   mask = XCB_RENDER_CP_REPEAT;
+   value[0] = repeat;
+   xcb_render_change_picture(rs->xcbinf->conn, rs->pic, mask, value);
+}
+
+void
+_xr_render_surface_solid_rectangle_set(Xcb_Render_Surface *rs, int r, int g, int b, int a, int x, int y, int w, int h)
+{
+   xcb_render_color_t col;
+   xcb_rectangle_t    rect;
+   int                aa;
+
+   aa = a + 1;
+   r = (r * aa) >> 8;
+   g = (g * aa) >> 8;
+   b = (b * aa) >> 8;
+   col.red   = (r << 8) | r;
+   col.green = (g << 8) | g;
+   col.blue  = (b << 8) | b;
+   col.alpha = (a << 8) | a;
+   rect.x = x;
+   rect.y = y;
+   rect.width = w;
+   rect.height = h;
+   xcb_render_fill_rectangles(rs->xcbinf->conn, XCB_RENDER_PICT_OP_SRC, rs->pic, col, 1, &rect);
+}
+
+void
+_xr_render_surface_argb_pixels_fill(Xcb_Render_Surface *rs, int sw, int sh, void *pixels, int x, int y, int w, int h)
+{
+   Xcb_Image_Image  *xcbim;
+   unsigned int     *p, *sp, *sple, *spe;
+   unsigned int      jump, sjump;
+   unsigned int      a, r, g, b, aa;
+
+   xcbim = _xr_image_new(rs->xcbinf, w, h, rs->depth);
+   if (!xcbim) return;
+   p = (unsigned int *)xcbim->data;
+   sp = ((unsigned int *)pixels) + (y * sw) + x;
+   jump = ((xcbim->line_bytes / 4) - w);
+   sjump = sw - w;
+   spe = sp + ((h - 1) * sw) + w;
+   if
+#ifdef WORDS_BIGENDIAN
+     (xcbim->xcbim->image_byte_order == XCB_IMAGE_ORDER_LSB_FIRST)
+#else
+     (xcbim->xcbim->image_byte_order == XCB_IMAGE_ORDER_MSB_FIRST)
+#endif
+     {
+       while (sp < spe)
+         {
+            sple = sp + w;
+            while (sp < sple)
+              {
+                 switch (a = A_VAL(sp))
+                 {
+                   case 0:
+                       *p = 0;
+                   break;
+                   case 255:
+                       *p = (B_VAL(sp) << 24) | (G_VAL(sp) << 16) | (R_VAL(sp) << 8) | 0xff;
+                   break;
+                   default:
+                       aa = a + 1;
+                       r = ((R_VAL(sp)) * aa) >> 8;
+                       g = ((G_VAL(sp)) * aa) >> 8;
+                       b = ((B_VAL(sp)) * aa) >> 8;
+                       *p = (b << 24) | (g << 16) | (r << 8) | a;
+                   break;
+                 }
+                 p++;
+                 sp++;
+              }
+            p += jump;
+            sp += sjump;
+         }
+     }
+   else
+     {
+       while (sp < spe)
+         {
+            sple = sp + w;
+            while (sp < sple)
+              {
+                  switch (a = (*sp & 0xff000000))
+                 {
+                   case 0:
+                       *p = 0;
+                   break;
+                   case 0xff000000:
+                       *p = *sp;
+                   break;
+                  default:
+                    aa = (a >> 24) + 1;
+                    *p = a + (((((*sp) >> 8) & 0xff) * aa) & 0xff00) +
+                      (((((*sp) & 0x00ff00ff) * aa) >> 8) & 0x00ff00ff);
+                   break;
+                 }
+                 p++;
+                 sp++;
+              }
+            p += jump;
+            sp += sjump;
+         }
+     }
+   _xr_image_put(xcbim, rs->draw, x, y, w, h);
+}
+
+void
+_xr_render_surface_rgb_pixels_fill(Xcb_Render_Surface *rs, int sw, int sh, void *pixels, int x, int y, int w, int h)
+{
+   Xcb_Image_Image *xcbim;
+   unsigned int    *p, *sp, *sple, *spe;
+   unsigned int     jump, sjump;
+
+   xcbim = _xr_image_new(rs->xcbinf, w, h, rs->depth);
+   if (!xcbim) return;
+   p = (unsigned int *)xcbim->data;
+   sp = ((unsigned int *)pixels) + (y * sw) + x;
+   jump = ((xcbim->line_bytes / 4) - w);
+   sjump = sw - w;
+   spe = sp + ((h - 1) * sw) + w;
+   if
+#ifdef WORDS_BIGENDIAN
+     (xcbim->xcbim->image_byte_order == XCB_IMAGE_ORDER_LSB_FIRST)
+#else
+     (xcbim->xcbim->image_byte_order == XCB_IMAGE_ORDER_MSB_FIRST)
+#endif
+     {
+       while (sp < spe)
+         {
+            sple = sp + w;
+            while (sp < sple)
+              {
+                 *p = ((B_VAL(sp)) << 24) | ((G_VAL(sp)) << 16) | ((R_VAL(sp)) << 8) | 0x000000ff;
+                 p++;
+                 sp++;
+              }
+            p += jump;
+            sp += sjump;
+         }
+     }
+   else
+     {
+       while (sp < spe)
+         {
+            sple = sp + w;
+            while (sp < sple)
+              {
+                  *p = 0xff000000 | *sp;
+                 p++;
+                 sp++;
+              }
+            p += jump;
+            sp += sjump;
+         }
+     }
+   _xr_image_put(xcbim, rs->draw, x, y, w, h);
+}
+
+void
+_xr_render_surface_clips_set(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, int rx, int ry, int rw, int rh)
+{
+   int              num = 0;
+   xcb_rectangle_t *rect = NULL;
+
+   if ((dc) && (dc->clip.use))
+     {
+       RECTS_CLIP_TO_RECT(rx, ry, rw, rh,
+                          dc->clip.x, dc->clip.y, dc->clip.w, dc->clip.h);
+     }
+   if ((!dc) || (!dc->cutout.rects))
+     {
+       rect = malloc(sizeof(xcb_rectangle_t));
+       if (!rect) return;
+       rect->x = rx;
+       rect->y = ry;
+       rect->width = rw;
+       rect->height = rh;
+       num = 1;
+     }
+   else
+     {
+        Cutout_Rects    *rects;
+       Cutout_Rect     *r;
+       int             i;
+
+       rects = evas_common_draw_context_apply_cutouts(dc);
+       num = rects->active;
+       rect = malloc(num * sizeof(xcb_rectangle_t));
+       if (!rect) return;
+       for (i = 0; i < num; i++)
+         {
+            r = rects->rects + i;
+            rect[i].x = r->x;
+            rect[i].y = r->y;
+            rect[i].width = r->w;
+            rect[i].height = r->h;
+         }
+       evas_common_draw_context_apply_clear_cutouts(rects);
+     }
+   if (!rect) return;
+   xcb_render_set_picture_clip_rectangles(rs->xcbinf->conn, rs->pic, 0, 0, num, rect);
+   free(rect);
+}
+
+/* initialized the transform to the identity */
+static void
+init_transform (xcb_render_transform_t *t)
+{
+   t->matrix11 = t->matrix22 = t->matrix33 = DOUBLE_TO_FIXED(1);
+
+   t->matrix12 = t->matrix13 = t->matrix21 = t->matrix23 =
+   t->matrix31 = t->matrix32 = 0;
+}
+
+static void
+set_transform_scale(xcb_render_transform_t *t,
+                    int                     sw,
+                    int                     sh,
+                    int                     w,
+                    int                     h)
+{
+   if ((sw > 1) && (w > 1))
+     { sw--;  w--; }
+   if ((sh > 1) && (h > 1))
+     { sh--;  h--; }
+   t->matrix11 = DOUBLE_TO_FIXED((double)sw / (double)w);
+   t->matrix22 = DOUBLE_TO_FIXED((double)sh / (double)h);
+}
+
+// when color multiplier is used want: instead
+// CA src IN mask SRC temp; non-CA temp OVER dst. - i think. need to check.
+void
+_xr_render_surface_composite(Xcb_Render_Surface *srs,
+                             Xcb_Render_Surface *drs,
+                             RGBA_Draw_Context  *dc,
+                             int                 sx,
+                             int                 sy,
+                             int                 sw,
+                             int                 sh,
+                             int                 x,
+                             int                 y,
+                             int                 w,
+                             int                 h,
+                             int                 smooth)
+{
+   Xcb_Render_Surface    *trs = NULL;
+   xcb_render_transform_t xf;
+   xcb_render_picture_t   mask = XCB_NONE;
+   uint32_t               value_mask;
+   uint32_t               value_list[1];
+   int                    e, is_scaling;
+   xcb_render_pict_op_t   op;
+
+   if ((sw < 1) || (sh < 1) || (w < 1) || (h < 1)) return;
+
+   is_scaling = e = (sw != w) || (sh != h);
+
+   value_mask = XCB_RENDER_CP_CLIP_MASK;
+   value_list[0] = 0;
+   xcb_render_change_picture(srs->xcbinf->conn, srs->pic, value_mask, value_list);
+   xcb_render_change_picture(drs->xcbinf->conn, drs->pic, value_mask, value_list);
+
+   init_transform(&xf);
+
+   op = XCB_RENDER_PICT_OP_OVER;
+   if (dc->render_op == _EVAS_RENDER_BLEND)
+     {
+       if (!srs->alpha) op = XCB_RENDER_PICT_OP_SRC;
+     }
+   else if (dc->render_op == _EVAS_RENDER_BLEND_REL)
+       op = XCB_RENDER_PICT_OP_ATOP;
+   else if (dc->render_op == _EVAS_RENDER_MUL)
+       op = XCB_RENDER_PICT_OP_IN;
+   else if (dc->render_op == _EVAS_RENDER_COPY)
+       op = XCB_RENDER_PICT_OP_SRC;
+   else if (dc->render_op == _EVAS_RENDER_COPY_REL)
+       op = XCB_RENDER_PICT_OP_IN;
+   else if (dc->render_op == _EVAS_RENDER_MASK)
+       op = XCB_RENDER_PICT_OP_IN_REVERSE;
+
+   if ((dc) && (dc->mul.use))
+     {
+       int r, g, b, a;
+
+       if ((op == XCB_RENDER_PICT_OP_OVER) && (!dc->mul.col)) return;
+       a = dc->mul.col >> 24;
+       r = (dc->mul.col >> 16) & 0xff;
+       g = (dc->mul.col >> 8) & 0xff;
+       b = dc->mul.col & 0xff;
+       if (dc->mul.col != 0xffffffff)
+         {
+            if ((srs->xcbinf->mul_r != r) || (srs->xcbinf->mul_g != g) ||
+                (srs->xcbinf->mul_b != b) || (srs->xcbinf->mul_a != a))
+              {
+                 srs->xcbinf->mul_r = r;
+                 srs->xcbinf->mul_g = g;
+                 srs->xcbinf->mul_b = b;
+                 srs->xcbinf->mul_a = a;
+                 _xr_render_surface_solid_rectangle_set(srs->xcbinf->mul,
+                                                        r,
+                                                        g,
+                                                        b,
+                                                        a,
+                                                        0, 0, 1, 1);
+              }
+            mask = srs->xcbinf->mul->pic;
+            if (dc->mul.col == (a * 0x01010101))
+              {
+                 value_mask = XCB_RENDER_CP_COMPONENT_ALPHA;
+                 value_list[0] = 0;
+                 xcb_render_change_picture(srs->xcbinf->conn, mask, value_mask, value_list);
+              }
+            else
+              {
+                 if ((srs->alpha) || (a != 0xff))
+                   trs = _xr_render_surface_new(srs->xcbinf, sw + e, sh + e,
+                                                srs->xcbinf->fmt32, 1);
+                 else
+                   trs = _xr_render_surface_new(srs->xcbinf, sw + e, sh + e,
+                                                srs->fmt, srs->alpha);
+                 if (!trs) return;
+
+                 value_mask = XCB_RENDER_CP_COMPONENT_ALPHA;
+                 value_list[0] = 0;
+                 xcb_render_change_picture(srs->xcbinf->conn, mask, value_mask, value_list);
+                 xcb_render_set_picture_transform(trs->xcbinf->conn, srs->pic, xf);
+                 xcb_render_composite(srs->xcbinf->conn, XCB_RENDER_PICT_OP_SRC, srs->pic, mask, trs->pic,
+                                      sx, sy, 0, 0, 0, 0, sw, sh);
+                 /* fill right and bottom pixel so interpolation works right */
+                 if (e)
+                   {
+                       xcb_render_composite(srs->xcbinf->conn, XCB_RENDER_PICT_OP_SRC, srs->pic, mask, trs->pic,
+                                            sx + sw - 1, sy, 0, 0, sw, 0, 1, sh);
+                       xcb_render_composite(srs->xcbinf->conn, XCB_RENDER_PICT_OP_SRC, srs->pic, mask, trs->pic,
+                                            sx, sy + sh - 1, 0, 0, 0, sh, sw, 1);
+                       xcb_render_composite(srs->xcbinf->conn, XCB_RENDER_PICT_OP_SRC, srs->pic, mask, trs->pic,
+                                            sx + sw - 1, sy + sh - 1, 0, 0, sw, sh, 1, 1);
+                    }
+                  mask = XCB_NONE;
+              }
+         }
+     }
+
+   _xr_render_surface_clips_set(drs, dc, x, y, w, h);
+   if (trs)
+     {
+        set_filter(trs, smooth);
+
+        set_transform_scale(&xf, sw, sh, w, h);
+        xcb_render_set_picture_transform(trs->xcbinf->conn, trs->pic, xf);
+
+        value_mask = XCB_RENDER_CP_COMPONENT_ALPHA;
+        value_list[0] = 0;
+       if (dc->render_op == _EVAS_RENDER_MUL)
+           value_list[0] = 1;
+        xcb_render_change_picture(trs->xcbinf->conn, trs->pic, value_mask, value_list);
+
+        xcb_render_composite(trs->xcbinf->conn, op, trs->pic, mask, drs->pic,
+                             0, 0, 0, 0, x, y, w, h);
+        _xr_render_surface_free(trs);
+     }
+   else
+     {
+        if (srs->bordered && is_scaling)
+         {
+           trs = _xr_render_surface_new(srs->xcbinf, sw + 1, sh + 1,
+                                        srs->fmt, srs->alpha);
+           if (!trs) return;
+
+            value_mask = XCB_RENDER_CP_COMPONENT_ALPHA;
+            value_list[0] = 0;
+            xcb_render_change_picture(srs->xcbinf->conn, srs->pic, value_mask, value_list);
+            xcb_render_set_picture_transform(srs->xcbinf->conn, srs->pic, xf);
+            xcb_render_composite(srs->xcbinf->conn, XCB_RENDER_PICT_OP_SRC, srs->pic, XCB_NONE, trs->pic,
+                                 sx, sy, 0, 0, 0, 0, sw, sh);
+
+            xcb_render_composite(srs->xcbinf->conn, XCB_RENDER_PICT_OP_SRC, srs->pic, XCB_NONE, trs->pic,
+                                 sx + sw - 1, sy, 0, 0, sw, 0, 1, sh);
+            xcb_render_composite(srs->xcbinf->conn, XCB_RENDER_PICT_OP_SRC, srs->pic, XCB_NONE, trs->pic,
+                                 sx, sy + sh - 1, 0, 0, 0, sh, sw, 1);
+            xcb_render_composite(srs->xcbinf->conn, XCB_RENDER_PICT_OP_SRC, srs->pic, XCB_NONE, trs->pic,
+                                 sx + sw - 1, sy + sh - 1, 0, 0, sw, sh, 1, 1);
+
+            set_filter(trs, smooth);
+
+           set_transform_scale(&xf, sw, sh, w, h);
+            xcb_render_set_picture_transform(trs->xcbinf->conn, trs->pic, xf);
+
+           if (dc->render_op == _EVAS_RENDER_MUL)
+             {
+                 value_mask = XCB_RENDER_CP_COMPONENT_ALPHA;
+                 value_list[0] = 1;
+                 xcb_render_change_picture(trs->xcbinf->conn, trs->pic, value_mask, value_list);
+             }
+
+            xcb_render_composite(trs->xcbinf->conn, op, trs->pic, mask, drs->pic,
+                                 0, 0, 0, 0, x, y, w, h);
+           _xr_render_surface_free(trs);
+         }
+       else
+         {
+            set_filter(srs, smooth);
+
+           set_transform_scale(&xf, sw, sh, w, h);
+            xcb_render_set_picture_transform(srs->xcbinf->conn, srs->pic, xf);
+
+            value_mask = XCB_RENDER_CP_COMPONENT_ALPHA;
+            value_list[0] = 0;
+           if (dc->render_op == _EVAS_RENDER_MUL)
+               value_list[0] = 1;
+            xcb_render_change_picture(srs->xcbinf->conn, srs->pic, value_mask, value_list);
+
+            xcb_render_composite(srs->xcbinf->conn, op, srs->pic, mask, drs->pic,
+                            ((sx * w) + (sw / 2)) / sw, 
+                            ((sy * h) + (sh / 2)) / sh,
+                            0, 0, x, y, w, h);
+         }
+      }
+}
+
+void
+_xr_render_surface_copy(Xcb_Render_Surface *srs, Xcb_Render_Surface *drs, int sx, int sy, int x, int y, int w, int h)
+{
+   xcb_render_transform_t xf;
+   uint32_t               value_mask;
+   uint32_t               value_list[1];
+
+   if ((w < 1) || (h < 1) || (!srs) || (!drs)) return;
+
+   init_transform(&xf);
+#ifdef BROKEN_XORG_XRENDER
+   /* FIXME: why do we need to change the identity matrix if the src surface
+    *        is 1 bit deep?
+    */
+   if (srs->depth == 1)
+     {
+       xf.matrix11 = xf.matrix22 = xf.matrix33 = 1;
+     }
+#endif
+   xcb_render_set_picture_transform(srs->xcbinf->conn, srs->pic, xf);
+/*    set_filter(srs, 0); */
+
+   value_mask = XCB_RENDER_CP_CLIP_MASK;
+   value_list[0] = 0;
+   xcb_render_change_picture(srs->xcbinf->conn, srs->pic, value_mask, value_list);
+   xcb_render_change_picture(drs->xcbinf->conn, drs->pic, value_mask, value_list);
+
+   xcb_render_composite(srs->xcbinf->conn, XCB_RENDER_PICT_OP_SRC, srs->pic, XCB_NONE, drs->pic,
+                        sx, sy, 0, 0, x, y, w, h);
+}
+
+void
+_xr_render_surface_rectangle_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, int x, int y, int w, int h)
+{
+   xcb_render_color_t   col;
+   xcb_rectangle_t      rect;
+   uint32_t             value_mask;
+   uint32_t             value_list;
+   int                  r, g, b, a;
+   xcb_render_pict_op_t op;
+
+   if ((!rs) || (!dc)) return;
+   if ((w < 1) || (h < 1)) return;
+   a = dc->col.col >> 24;
+   r = (dc->col.col >> 16) & 0xff;
+   g = (dc->col.col >> 8 ) & 0xff;
+   b = (dc->col.col      ) & 0xff;
+   col.red   = (r << 8) | r;
+   col.green = (g << 8) | g;
+   col.blue  = (b << 8) | b;
+   col.alpha = (a << 8) | a;
+
+   op = XCB_RENDER_PICT_OP_SRC;
+   if (dc->render_op == _EVAS_RENDER_BLEND)
+     {
+       if (!dc->col.col) return;
+       if (a == 0xff) op = XCB_RENDER_PICT_OP_SRC;
+     }
+   else if (dc->render_op == _EVAS_RENDER_BLEND_REL)
+     {
+       if (!dc->col.col) return;
+       op = XCB_RENDER_PICT_OP_ATOP;
+     }
+   else if (dc->render_op == _EVAS_RENDER_MUL)
+     {
+       if (dc->col.col == 0xffffffff) return;
+       op = XCB_RENDER_PICT_OP_IN;
+     }
+   else if (dc->render_op == _EVAS_RENDER_COPY)
+       op = XCB_RENDER_PICT_OP_SRC;
+   else if (dc->render_op == _EVAS_RENDER_COPY_REL)
+       op = XCB_RENDER_PICT_OP_IN;
+   else if (dc->render_op == _EVAS_RENDER_MASK)
+       op = XCB_RENDER_PICT_OP_IN_REVERSE;
+
+   value_mask = XCB_RENDER_CP_CLIP_MASK;
+   value_list = 0;
+   xcb_render_change_picture(rs->xcbinf->conn, rs->pic, value_mask, &value_list);
+
+   _xr_render_surface_clips_set(rs, dc, x, y, w, h);
+   rect.x = x;
+   rect.y = y;
+   rect.width = w;
+   rect.height = h;
+   xcb_render_fill_rectangles(rs->xcbinf->conn, op, rs->pic, col, 1, &rect);
+}
+
+void
+_xr_render_surface_line_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, int x1, int y1, int x2, int y2)
+{
+/*    uint32_t         value_mask; */
+/*    uint32_t         value_list[1]; */
+/*    int            op; */
+
+/*    if ((!rs) || (!dc)) return; */
+/*    op = XCB_RENDER_PICT_OP_SRC; */
+/*    value_mask = XCB_RENDER_CP_CLIP_MASK; */
+/*    value_list[0] = 0; */
+/*    xcb_render_change_picture(rs->xcbinf->conn, rs->pic, value_mask, value_list); */
+/*    _xr_render_surface_clips_set(rs, dc, 0, 0, rs->w, rs->h); */
+
+/*      { */
+/*     int r, g, b, a; */
+/*     XPointDouble poly[4]; */
+/*     int dx, dy; */
+/*     double len, ddx, ddy; */
+
+/*     dx = x2 - x1; */
+/*     dy = y2 - y1; */
+/*     len = sqrt((double)(dx * dx) + (double)(dy * dy)); */
+/*     ddx = (0.5 * dx) / len; */
+/*     ddy = (0.5 * dy) / len; */
+/*     poly[0].x =  (x1 + ddx); */
+/*     poly[0].y =  (y1 - ddy); */
+/*     poly[1].x =  (x2 + ddx); */
+/*     poly[1].y =  (y2 - ddy); */
+/*     poly[2].x =  (x2 - ddx); */
+/*     poly[2].y =  (y2 + ddy); */
+/*     poly[3].x =  (x1 - ddx); */
+/*     poly[3].y =  (y1 + ddy); */
+
+/*     a = (dc->col.col >> 24) & 0xff; */
+/*     if (a == 0) return; */
+/*     if (a < 0xff) op = XCB_RENDER_PICT_OP_OVER; */
+/*     r = (dc->col.col >> 16) & 0xff; */
+/*     g = (dc->col.col >> 8 ) & 0xff; */
+/*     b = (dc->col.col      ) & 0xff; */
+/*     if ((rs->xcbinf->mul_r != r) || (rs->xcbinf->mul_g != g) || */
+/*         (rs->xcbinf->mul_b != b) || (rs->xcbinf->mul_a != a)) */
+/*       { */
+/*          rs->xcbinf->mul_r = r; */
+/*          rs->xcbinf->mul_g = g; */
+/*          rs->xcbinf->mul_b = b; */
+/*          rs->xcbinf->mul_a = a; */
+/*          _xr_render_surface_solid_rectangle_set(rs->xcbinf->mul, r, g, b, a, 0, 0, 1, 1); */
+/*       } */
+/*     XRenderCompositeDoublePoly(rs->xcbinf->conn, op, */
+/*                                rs->xcbinf->mul->pic, rs->pic,  */
+/*                                rs->xcbinf->fmt8, 0, 0, 0, 0, */
+/*                                poly, 4, EvenOddRule); */
+/*      } */
+}
+
+void
+_xre_poly_draw(Xcb_Render_Surface *rs, RGBA_Draw_Context *dc, RGBA_Polygon_Point *points)
+{
+/*    RGBA_Polygon_Point *pt; */
+/*    int i, num; */
+/*    XPointDouble *pts; */
+/*    int r, g, b, a; */
+/*    uint32_t         value_mask; */
+/*    uint32_t         value_list[1]; */
+/*    int op; */
+
+/*    if ((!rs) || (!dc)) return; */
+/*    num = 0; */
+/*    for (pt = points; pt; pt = (RGBA_Polygon_Point *)(((Evas_Object_List *)pt)->next)) num++; */
+/*    if (num < 3) return; */
+/*    a = (dc->col.col >> 24) & 0xff; */
+/*    if (a == 0) return; */
+/*    op = XCB_RENDER_PICT_OP_OVER; */
+/*    r = (dc->col.col >> 16) & 0xff; */
+/*    g = (dc->col.col >> 8 ) & 0xff; */
+/*    b = (dc->col.col      ) & 0xff; */
+/*    if ((rs->xcbinf->mul_r != r) || (rs->xcbinf->mul_g != g) || */
+/*        (rs->xcbinf->mul_b != b) || (rs->xcbinf->mul_a != a)) */
+/*      { */
+/*     rs->xcbinf->mul_r = r; */
+/*     rs->xcbinf->mul_g = g; */
+/*     rs->xcbinf->mul_b = b; */
+/*     rs->xcbinf->mul_a = a; */
+/*     _xr_render_surface_solid_rectangle_set(rs->xcbinf->mul, r, g, b, a, 0, 0, 1, 1); */
+/*      } */
+/*    pts = malloc(num * sizeof(XPointDouble)); */
+/*    if (!pts) return; */
+/*    i = 0; */
+/*    for (pt = points; pt; pt = (RGBA_Polygon_Point *)(((Evas_Object_List *)pt)->next)) */
+/*      { */
+/*     if (i < num) */
+/*       { */
+/*          pts[i].x = pt->x; */
+/*          pts[i].y = pt->y; */
+/*          i++; */
+/*       } */
+/*      } */
+/*    value_mask = XCB_RENDER_CP_CLIP_MASK; */
+/*    value_list[0] = 0; */
+/*    xcb_render_change_picture(rs->xcbinf->conn, rs->pic, value_mask, value_list); */
+
+/*    _xr_render_surface_clips_set(rs, dc, 0, 0, rs->w, rs->h); */
+/*    XRenderCompositeDoublePoly(rs->xcbinf->conn, op, */
+/*                           rs->xcbinf->mul->pic, rs->pic,  */
+/*                           rs->xcbinf->fmt8, 0, 0, 0, 0, */
+/*                           pts, num, Complex); */
+/*    free(pts); */
+}
diff --git a/src/modules/loaders/.cvsignore b/src/modules/loaders/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/modules/loaders/Makefile.am b/src/modules/loaders/Makefile.am
new file mode 100644 (file)
index 0000000..fceae72
--- /dev/null
@@ -0,0 +1,40 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+if BUILD_LOADER_EDB
+edb_subdir = edb
+endif
+
+if BUILD_LOADER_EET
+eet_subdir = eet
+endif
+
+if BUILD_LOADER_GIF
+gif_subdir = gif
+endif
+
+if BUILD_LOADER_JPEG
+jpeg_subdir = jpeg
+endif
+
+if BUILD_LOADER_PNG
+png_subdir = png
+endif
+
+if BUILD_LOADER_TIFF
+tiff_subdir = tiff
+endif
+
+if BUILD_LOADER_XPM
+xpm_subdir = xpm
+endif
+
+if BUILD_LOADER_SVG
+svg_subdir = svg
+endif
+
+if BUILD_LOADER_PMAPS
+pmaps_subdir = pmaps
+endif
+
+
+SUBDIRS = $(edb_subdir) $(eet_subdir) $(gif_subdir) $(jpeg_subdir) $(png_subdir) $(tiff_subdir) $(xpm_subdir) $(svg_subdir) $(pmaps_subdir)
diff --git a/src/modules/loaders/edb/.cvsignore b/src/modules/loaders/edb/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/loaders/edb/Makefile.am b/src/modules/loaders/edb/Makefile.am
new file mode 100644 (file)
index 0000000..81f29c4
--- /dev/null
@@ -0,0 +1,20 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS           = -I. \
+                        -I$(top_srcdir)/src/lib \
+                        -I$(top_srcdir)/src/lib/include \
+                        @FREETYPE_CFLAGS@ @EDB_CFLAGS@
+
+pkgdir                 = $(libdir)/evas/modules/loaders/edb/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES      = evas_image_load_edb.c
+
+module_la_LIBADD       = @EDB_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS      = @lt_no_undefined@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+EXTRA_DIST             = evas_image_load_edb.c
diff --git a/src/modules/loaders/edb/evas_image_load_edb.c b/src/modules/loaders/edb/evas_image_load_edb.c
new file mode 100644 (file)
index 0000000..2b3ba05
--- /dev/null
@@ -0,0 +1,204 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include <Edb.h>
+#include <zlib.h>
+
+
+#define SWAP32(x) (x) = ((((x) & 0x000000ff ) << 24) | (((x) & 0x0000ff00 ) << 8) | (((x) & 0x00ff0000 ) >> 8) | (((x) & 0xff000000 ) >> 24))
+
+
+int evas_image_load_file_head_edb(Image_Entry *ie, const char *file, const char *key);
+int evas_image_load_file_data_edb(Image_Entry *ie, const char *file, const char *key);
+
+Evas_Image_Load_Func evas_image_load_edb_func =
+{
+  evas_image_load_file_head_edb,
+  evas_image_load_file_data_edb
+};
+
+
+int
+evas_image_load_file_head_edb(Image_Entry *ie, const char *file, const char *key)
+{
+   int                  w, h, alpha, compression, size;
+   E_DB_File           *db;
+   DATA32              *ret;
+   DATA32               header[8];
+
+   if ((!file) || (!key)) return 0;
+   db = e_db_open_read((char *)file);
+   if (!db) return 0;
+   ret = e_db_data_get(db, (char *)key, &size);
+   if (!ret)
+     {
+       e_db_close(db);
+       return 0;
+     }
+   if (size < 32)
+     {
+       free(ret);
+       e_db_close(db);
+       return 0;
+     }
+   memcpy(header, ret, 32);
+#ifdef WORDS_BIGENDIAN
+     {
+       int i;
+
+       for (i = 0; i < 8; i++) SWAP32(header[i]);
+     }
+#endif
+   if (header[0] != 0xac1dfeed)
+     {
+       free(ret);
+       e_db_close(db);
+       return 0;
+     }
+   w = header[1];
+   h = header[2];
+   if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+     {
+       free(ret);
+       e_db_close(db);
+       return 0;
+     }
+   alpha = header[3];
+   compression = header[4];
+   
+   if ((compression == 0) && (size < ((w * h * 4) + 32)))
+     {
+       free(ret);
+       e_db_close(db);
+       return 0;
+     }
+   if (alpha) ie->flags.alpha = 1;
+   ie->w = w;
+   ie->h = h;
+   free(ret);
+   e_db_close(db);
+   return 1;
+}
+
+int
+evas_image_load_file_data_edb(Image_Entry *ie, const char *file, const char *key)
+{
+   int                  w, h, alpha, compression, size;
+   E_DB_File           *db;
+   DATA32              *ret;
+   DATA32              *body;
+   DATA32              *surface;
+   DATA32               header[8];
+
+   if ((!file) || (!key)) return 0;
+   db = e_db_open_read((char *)file);
+   if (!db) return 0;
+   ret = e_db_data_get(db, (char *)key, &size);
+   if (!ret)
+     {
+       e_db_close(db);
+       return 0;
+     }
+   if (size < 32)
+     {
+       free(ret);
+       e_db_close(db);
+       return 0;
+     }
+   memcpy(header, ret, 32);
+#ifdef WORDS_BIGENDIAN
+     {
+       int i;
+
+       for (i = 0; i < 8; i++) SWAP32(header[i]);
+     }
+#endif
+   if (header[0] != 0xac1dfeed)
+     {
+       free(ret);
+       e_db_close(db);
+       return 0;
+     }
+   w = header[1];
+   h = header[2];
+   if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+     {
+       free(ret);
+       e_db_close(db);
+       return 0;
+     }
+   
+   alpha = header[3];
+   compression = header[4];
+   
+   if ((compression == 0) && (size < ((w * h * 4) + 32)))
+     {
+       free(ret);
+       e_db_close(db);
+       return 0;
+     }
+   if (alpha) ie->flags.alpha = 1;
+   body = &(ret[8]);
+   evas_cache_image_surface_alloc(ie, w, h);
+   surface = evas_cache_image_pixels(ie);
+   if (!surface)
+     {
+       free(ret);
+       e_db_close(db);
+       return 0;
+     }
+   if (!compression)
+     {
+#ifdef WORDS_BIGENDIAN
+         {
+            int x;
+
+            memcpy(surface, body, w * h * sizeof(DATA32));
+            for (x = 0; x < (w * h); x++) SWAP32(surface[x]);
+         }
+#else
+       memcpy(surface, body, w * h * sizeof(DATA32));
+#endif
+     }
+   else
+     {
+       uLongf dlen;
+
+       dlen = w * h * sizeof(DATA32);
+       uncompress((Bytef *)surface, &dlen, (Bytef *)body,
+                  (uLongf)(size - 32));
+#ifdef WORDS_BIGENDIAN
+         {
+            int x;
+
+            for (x = 0; x < (w * h); x++) SWAP32(surface[x]);
+         }
+#endif
+     }
+   evas_common_image_premul(ie);
+   free(ret);
+   e_db_close(db);
+   return 1;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_load_edb_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_LOADER,
+     "edb",
+     "none"
+};
diff --git a/src/modules/loaders/eet/.cvsignore b/src/modules/loaders/eet/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/loaders/eet/Makefile.am b/src/modules/loaders/eet/Makefile.am
new file mode 100644 (file)
index 0000000..4f186ce
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@EET_CFLAGS@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/loaders/eet/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_load_eet.c
+
+module_la_LIBADD = @EET_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/loaders/eet/evas_image_load_eet.c b/src/modules/loaders/eet/evas_image_load_eet.c
new file mode 100644 (file)
index 0000000..0247bf7
--- /dev/null
@@ -0,0 +1,121 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"  /* so that EAPI in Eet.h is correctly defined */
+#endif
+
+#include <Eet.h>
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+
+int evas_image_load_file_head_eet(Image_Entry *ie, const char *file, const char *key);
+int evas_image_load_file_data_eet(Image_Entry *ie, const char *file, const char *key);
+
+Evas_Image_Load_Func evas_image_load_eet_func =
+{
+  evas_image_load_file_head_eet,
+  evas_image_load_file_data_eet
+};
+
+
+int
+evas_image_load_file_head_eet(Image_Entry *ie, const char *file, const char *key)
+{
+   int                  alpha, compression, quality, lossy;
+   unsigned int         w, h;
+   Eet_File            *ef;
+   int                  ok;
+   int                 res = 0;
+
+   if ((!file) || (!key)) return 0;
+   ef = eet_open((char *)file, EET_FILE_MODE_READ);
+   if (!ef) return 0;
+   ok = eet_data_image_header_read(ef, key,
+                                  &w, &h, &alpha, &compression, &quality, &lossy);
+   if (!ok) goto on_error;
+   if (alpha) ie->flags.alpha = 1;
+   ie->w = w;
+   ie->h = h;
+   res = 1;
+
+ on_error:
+   eet_close(ef);
+   return res;
+}
+
+int
+evas_image_load_file_data_eet(Image_Entry *ie, const char *file, const char *key)
+{
+   unsigned int         w, h;
+   int                  alpha, compression, quality, lossy, ok;
+   Eet_File            *ef;
+   DATA32              *body, *p, *end;
+   DATA32               nas = 0;
+   int                 res = 0;
+
+   if ((!file) || (!key)) return 0;
+   if (ie->flags.loaded) return 1;
+   ef = eet_open(file, EET_FILE_MODE_READ);
+   if (!ef) return 0;
+   ok = eet_data_image_header_read(ef, key,
+                                  &w, &h, &alpha, &compression, &quality, &lossy);
+   if (!ok) goto on_error;
+   evas_cache_image_surface_alloc(ie, w, h);
+   ok = eet_data_image_read_to_surface(ef, key, 0, 0,
+                                      evas_cache_image_pixels(ie), w, h, w * 4,
+                                      &alpha, &compression, &quality, &lossy);
+   if (!ok) goto on_error;
+   if (alpha)
+     {
+       ie->flags.alpha = 1;
+
+       body = evas_cache_image_pixels(ie);
+
+       end = body +(w * h);
+       for (p = body; p < end; p++)
+         {
+            DATA32 r, g, b, a;
+
+            a = A_VAL(p);
+            r = R_VAL(p);
+            g = G_VAL(p);
+            b = B_VAL(p);
+            if ((a == 0) || (a == 255)) nas++;
+            if (r > a) r = a;
+            if (g > a) g = a;
+            if (b > a) b = a;
+            *p = ARGB_JOIN(a, r, g, b);
+         }
+       if ((ALPHA_SPARSE_INV_FRACTION * nas) >= (ie->w * ie->h))
+         ie->flags.alpha_sparse = 1;
+     }
+// result is already premultiplied now if u compile with edje
+//   evas_common_image_premul(im);
+   res = 1;
+
+ on_error:
+   eet_close(ef);
+   return res;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_load_eet_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_LOADER,
+     "eet",
+     "none"
+};
diff --git a/src/modules/loaders/gif/.cvsignore b/src/modules/loaders/gif/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/loaders/gif/Makefile.am b/src/modules/loaders/gif/Makefile.am
new file mode 100644 (file)
index 0000000..f28fc27
--- /dev/null
@@ -0,0 +1,21 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ @gif_cflags@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/loaders/gif/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_load_gif.c
+
+module_la_LIBADD = @gif_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/loaders/gif/evas_image_load_gif.c b/src/modules/loaders/gif/evas_image_load_gif.c
new file mode 100644 (file)
index 0000000..65ca74b
--- /dev/null
@@ -0,0 +1,307 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+#include <gif_lib.h>
+
+
+int evas_image_load_file_head_gif(Image_Entry *ie, const char *file, const char *key);
+int evas_image_load_file_data_gif(Image_Entry *ie, const char *file, const char *key);
+
+Evas_Image_Load_Func evas_image_load_gif_func =
+{
+  evas_image_load_file_head_gif,
+  evas_image_load_file_data_gif
+};
+
+
+int
+evas_image_load_file_head_gif(Image_Entry *ie, const char *file, const char *key)
+{
+   int                 fd;
+   GifFileType        *gif;
+   GifRecordType       rec;
+   int                 done;
+   int                 w;
+   int                 h;
+   int                 alpha;
+
+   done = 0;
+   w = 0;
+   h = 0;
+   alpha = -1;
+
+   if (!file) return 0;
+
+#ifndef __EMX__
+   fd = open(file, O_RDONLY);
+#else
+   fd = open(file, O_RDONLY | O_BINARY);
+#endif
+   if (fd < 0)
+      return 0;
+
+   gif = DGifOpenFileHandle(fd);
+   if (!gif)
+     {
+        close(fd);
+        return 0;
+     }
+
+   do
+     {
+        if (DGifGetRecordType(gif, &rec) == GIF_ERROR)
+          {
+             /* PrintGifError(); */
+             rec = TERMINATE_RECORD_TYPE;
+          }
+        if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done))
+          {
+             if (DGifGetImageDesc(gif) == GIF_ERROR)
+               {
+                  /* PrintGifError(); */
+                  rec = TERMINATE_RECORD_TYPE;
+               }
+             w = gif->Image.Width;
+             h = gif->Image.Height;
+            if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+              {
+                 DGifCloseFile(gif);
+                 return 0;
+              }
+            done = 1;
+          }
+        else if (rec == EXTENSION_RECORD_TYPE)
+          {
+             int                 ext_code;
+             GifByteType        *ext;
+            
+             ext = NULL;
+             DGifGetExtension(gif, &ext_code, &ext);
+             while (ext)
+               {
+                  if ((ext_code == 0xf9) && (ext[1] & 1) && (alpha < 0))
+                    {
+                       alpha = (int)ext[4];
+                    }
+                  ext = NULL;
+                  DGifGetExtensionNext(gif, &ext);
+               }
+          }
+   } while (rec != TERMINATE_RECORD_TYPE);
+
+   if (alpha >= 0) ie->flags.alpha = 1;
+   ie->w = w;
+   ie->h = h;
+
+   DGifCloseFile(gif);
+   return 1;
+}
+
+int
+evas_image_load_file_data_gif(Image_Entry *ie, const char *file, const char *key)
+{
+   int                 intoffset[] = { 0, 4, 2, 1 };
+   int                 intjump[] = { 8, 8, 4, 2 };
+   double              per;
+   double              per_inc;
+   int                 fd;
+   GifFileType        *gif;
+   GifRecordType       rec;
+   GifRowType         *rows;
+   ColorMapObject     *cmap;
+   DATA32             *ptr;
+   int                 done;
+   int                 last_y;
+   int                 last_per;
+   int                 w;
+   int                 h;
+   int                 alpha;
+   int                 i;
+   int                 j;
+   int                 bg;
+   int                 r;
+   int                 g;
+   int                 b;
+
+   rows = NULL;
+   per = 0.0;
+   done = 0;
+   last_y = 0;
+   last_per = 0;
+   w = 0;
+   h = 0;
+   alpha = -1;
+
+   if (!file) return 0;
+
+#ifndef __EMX__
+   fd = open(file, O_RDONLY);
+#else
+   fd = open(file, O_RDONLY | O_BINARY);
+#endif
+   if (fd < 0)
+      return 0;
+
+   gif = DGifOpenFileHandle(fd);
+   if (!gif)
+     {
+        close(fd);
+        return 0;
+     }
+   do
+     {
+        if (DGifGetRecordType(gif, &rec) == GIF_ERROR)
+          {
+             /* PrintGifError(); */
+             rec = TERMINATE_RECORD_TYPE;
+          }
+        if ((rec == IMAGE_DESC_RECORD_TYPE) && (!done))
+          {
+             if (DGifGetImageDesc(gif) == GIF_ERROR)
+               {
+                  /* PrintGifError(); */
+                  rec = TERMINATE_RECORD_TYPE;
+               }
+             w = gif->Image.Width;
+             h = gif->Image.Height;
+             rows = malloc(h * sizeof(GifRowType *));
+             if (!rows)
+               {
+                  DGifCloseFile(gif);
+                  return 0;
+               }
+             for (i = 0; i < h; i++)
+               {
+                  rows[i] = NULL;
+               }
+             for (i = 0; i < h; i++)
+               {
+                  rows[i] = malloc(w * sizeof(GifPixelType));
+                  if (!rows[i])
+                    {
+                       DGifCloseFile(gif);
+                       for (i = 0; i < h; i++)
+                         {
+                            if (rows[i])
+                              {
+                                 free(rows[i]);
+                              }
+                         }
+                       free(rows);
+                       return 0;
+                    }
+               }
+             if (gif->Image.Interlace)
+               {
+                  for (i = 0; i < 4; i++)
+                    {
+                       for (j = intoffset[i]; j < h; j += intjump[i])
+                         {
+                            DGifGetLine(gif, rows[j], w);
+                         }
+                    }
+               }
+             else
+               {
+                  for (i = 0; i < h; i++)
+                    {
+                       DGifGetLine(gif, rows[i], w);
+                    }
+               }
+             done = 1;
+          }
+        else if (rec == EXTENSION_RECORD_TYPE)
+          {
+             int                 ext_code;
+             GifByteType        *ext;
+
+             ext = NULL;
+             DGifGetExtension(gif, &ext_code, &ext);
+             while (ext)
+               {
+                  if ((ext_code == 0xf9) && (ext[1] & 1) && (alpha < 0))
+                    {
+                       alpha = (int)ext[4];
+                    }
+                  ext = NULL;
+                  DGifGetExtensionNext(gif, &ext);
+               }
+          }
+   } while (rec != TERMINATE_RECORD_TYPE);
+
+   if (alpha >= 0) ie->flags.alpha = 1;
+   evas_cache_image_surface_alloc(ie, w, h);
+   if (!evas_cache_image_pixels(ie))
+     {
+        DGifCloseFile(gif);
+        for (i = 0; i < h; i++)
+          {
+            free(rows[i]);
+          }
+        free(rows);
+       return 0;
+     }
+
+   bg = gif->SBackGroundColor;
+   cmap = (gif->Image.ColorMap ? gif->Image.ColorMap : gif->SColorMap);
+
+   ptr = evas_cache_image_pixels(ie);
+   per_inc = 100.0 / (((double)w) * h);
+
+   for (i = 0; i < h; i++)
+     {
+       for (j = 0; j < w; j++)
+         {
+           if (rows[i][j] == alpha)
+             {
+               r = cmap->Colors[bg].Red;
+               g = cmap->Colors[bg].Green;
+               b = cmap->Colors[bg].Blue;
+               *ptr++ = 0x00ffffff & ((r << 16) | (g << 8) | b);
+             }
+           else
+             {
+               r = cmap->Colors[rows[i][j]].Red;
+               g = cmap->Colors[rows[i][j]].Green;
+               b = cmap->Colors[rows[i][j]].Blue;
+               *ptr++ = (0xff << 24) | (r << 16) | (g << 8) | b;
+             }
+           per += per_inc;
+         }
+     }
+   evas_common_image_premul(ie);
+   DGifCloseFile(gif);
+   for (i = 0; i < h; i++)
+     {
+        free(rows[i]);
+     }
+   free(rows);
+
+   return 1;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_load_gif_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_LOADER,
+     "gif",
+     "none"
+};
diff --git a/src/modules/loaders/jpeg/.cvsignore b/src/modules/loaders/jpeg/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/loaders/jpeg/Makefile.am b/src/modules/loaders/jpeg/Makefile.am
new file mode 100644 (file)
index 0000000..c8cb9f6
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@jpeg_cflags@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/loaders/jpeg/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_load_jpeg.c
+
+module_la_LIBADD = @jpeg_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/loaders/jpeg/evas_image_load_jpeg.c b/src/modules/loaders/jpeg/evas_image_load_jpeg.c
new file mode 100644 (file)
index 0000000..46ea4c5
--- /dev/null
@@ -0,0 +1,437 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include <stdio.h>
+#include <jpeglib.h>
+#include <setjmp.h>
+
+
+typedef struct _JPEG_error_mgr *emptr;
+struct _JPEG_error_mgr
+{
+   struct     jpeg_error_mgr pub;
+   jmp_buf    setjmp_buffer;
+};
+
+static void _JPEGFatalErrorHandler(j_common_ptr cinfo);
+static void _JPEGErrorHandler(j_common_ptr cinfo);
+static void _JPEGErrorHandler2(j_common_ptr cinfo, int msg_level);
+
+static int evas_image_load_file_head_jpeg_internal(Image_Entry *ie, FILE *f);
+static int evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f);
+#if 0 /* not used at the moment */
+static int evas_image_load_file_data_jpeg_alpha_internal(Image_Entry *ie, FILE *f);
+#endif
+
+int evas_image_load_file_head_jpeg(Image_Entry *ie, const char *file, const char *key);
+int evas_image_load_file_data_jpeg(Image_Entry *ie, const char *file, const char *key);
+
+Evas_Image_Load_Func evas_image_load_jpeg_func =
+{
+  evas_image_load_file_head_jpeg,
+  evas_image_load_file_data_jpeg
+};
+
+
+static void
+_JPEGFatalErrorHandler(j_common_ptr cinfo)
+{
+   emptr errmgr;
+
+   errmgr = (emptr) cinfo->err;
+   /*   cinfo->err->output_message(cinfo);*/
+   longjmp(errmgr->setjmp_buffer, 1);
+   return;
+}
+
+static void
+_JPEGErrorHandler(j_common_ptr cinfo)
+{
+   emptr errmgr;
+
+   errmgr = (emptr) cinfo->err;
+   /*   cinfo->err->output_message(cinfo);*/
+   /*   longjmp(errmgr->setjmp_buffer, 1);*/
+   return;
+}
+
+static void
+_JPEGErrorHandler2(j_common_ptr cinfo, int msg_level)
+{
+   emptr errmgr;
+
+   errmgr = (emptr) cinfo->err;
+   /*   cinfo->err->output_message(cinfo);*/
+   /*   longjmp(errmgr->setjmp_buffer, 1);*/
+   return;
+   msg_level = 0;
+}
+
+static int
+evas_image_load_file_head_jpeg_internal(Image_Entry *ie, FILE *f)
+{
+   int w, h, scalew, scaleh;
+   struct jpeg_decompress_struct cinfo;
+   struct _JPEG_error_mgr jerr;
+
+   if (!f) return 0;
+   cinfo.err = jpeg_std_error(&(jerr.pub));
+   jerr.pub.error_exit = _JPEGFatalErrorHandler;
+   jerr.pub.emit_message = _JPEGErrorHandler2;
+   jerr.pub.output_message = _JPEGErrorHandler;
+   if (setjmp(jerr.setjmp_buffer))
+     {
+       jpeg_destroy_decompress(&cinfo);
+       return 0;
+     }
+   jpeg_create_decompress(&cinfo);
+   jpeg_stdio_src(&cinfo, f);
+   jpeg_read_header(&cinfo, TRUE);
+   cinfo.do_fancy_upsampling = FALSE;
+   cinfo.do_block_smoothing = FALSE;
+   cinfo.dct_method = JDCT_IFAST;
+   cinfo.dither_mode = JDITHER_ORDERED;
+   jpeg_start_decompress(&cinfo);
+
+/* head decoding */
+   w = cinfo.output_width;
+   h = cinfo.output_height;
+   if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+     {  
+        jpeg_destroy_decompress(&cinfo);
+       return 0;
+     }
+   if (ie->load_opts.scale_down_by > 1)
+     {
+       w /= ie->load_opts.scale_down_by;
+       h /= ie->load_opts.scale_down_by;
+     }
+   else if (ie->load_opts.dpi > 0.0)
+     {
+       w = (w * ie->load_opts.dpi) / 90.0;
+       h = (h * ie->load_opts.dpi) / 90.0;
+     }
+   else if ((ie->load_opts.w > 0) &&
+           (ie->load_opts.h > 0))
+     {
+       int w2, h2;
+       
+       w2 = ie->load_opts.w;
+       h2 = (ie->load_opts.w * h) / w;
+       if (h2 > ie->load_opts.h)
+         {
+            h2 = ie->load_opts.h;
+            w2 = (ie->load_opts.h * w) / h;
+         }
+       w = w2;
+       h = h2;
+     }
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   
+   if ((w != cinfo.output_width) || (h != cinfo.output_height))
+     {
+       scalew = cinfo.output_width / w;
+       scaleh = cinfo.output_height / h;
+       
+       ie->scale = scalew;
+       if (scaleh < scalew) ie->scale = scaleh;
+       
+       if      (ie->scale > 8) ie->scale = 8;
+       else if (ie->scale < 1) ie->scale = 1;
+       
+       if      (ie->scale == 3) ie->scale = 2;
+       else if (ie->scale == 5) ie->scale = 4;
+       else if (ie->scale == 6) ie->scale = 4;
+       else if (ie->scale == 7) ie->scale = 4;
+     }
+
+   if (ie->scale > 1)
+     {
+       jpeg_destroy_decompress(&cinfo);
+   
+       rewind(f);
+       jpeg_create_decompress(&cinfo);
+       jpeg_stdio_src(&cinfo, f);
+       jpeg_read_header(&cinfo, TRUE);
+       cinfo.do_fancy_upsampling = FALSE;
+       cinfo.do_block_smoothing = FALSE;
+       cinfo.scale_num = 1;
+       cinfo.scale_denom = ie->scale;
+       jpeg_calc_output_dimensions(&(cinfo));
+       jpeg_start_decompress(&cinfo);
+     }
+   
+   ie->w = cinfo.output_width;
+   ie->h = cinfo.output_height;
+/* end head decoding */
+
+   jpeg_destroy_decompress(&cinfo);
+   return 1;
+}
+
+static int
+evas_image_load_file_data_jpeg_internal(Image_Entry *ie, FILE *f)
+{
+   int w, h;
+   struct jpeg_decompress_struct cinfo;
+   struct _JPEG_error_mgr jerr;
+   DATA8 *ptr, *line[16], *data;
+   DATA32 *ptr2;
+   int x, y, l, i, scans, count, prevy;
+
+   if (!f) return 0;
+   cinfo.err = jpeg_std_error(&(jerr.pub));
+   jerr.pub.error_exit = _JPEGFatalErrorHandler;
+   jerr.pub.emit_message = _JPEGErrorHandler2;
+   jerr.pub.output_message = _JPEGErrorHandler;
+   if (setjmp(jerr.setjmp_buffer))
+     {
+       jpeg_destroy_decompress(&cinfo);
+       return 0;
+     }
+   jpeg_create_decompress(&cinfo);
+   jpeg_stdio_src(&cinfo, f);
+   jpeg_read_header(&cinfo, TRUE);
+   cinfo.do_fancy_upsampling = FALSE;
+   cinfo.do_block_smoothing = FALSE;
+   cinfo.dct_method = JDCT_IFAST;
+   cinfo.dither_mode = JDITHER_ORDERED;
+
+   if (ie->scale > 1)
+     {
+       cinfo.scale_num = 1;
+       cinfo.scale_denom = ie->scale;
+     }
+   
+/* head decoding */
+   jpeg_calc_output_dimensions(&(cinfo));
+   jpeg_start_decompress(&cinfo);
+   
+   w = cinfo.output_width;
+   h = cinfo.output_height;
+   
+   if ((w != ie->w) || (h != ie->h))
+     {
+       jpeg_destroy_decompress(&cinfo);
+       return 0;
+     }
+   
+/* end head decoding */
+/* data decoding */
+   if (cinfo.rec_outbuf_height > 16)
+     {
+       jpeg_destroy_decompress(&cinfo);
+       return 0;
+     }
+   data = alloca(w * 16 * 3);
+   evas_cache_image_surface_alloc(ie, w, h);
+   if (ie->flags.loaded)
+     {
+       jpeg_destroy_decompress(&cinfo);
+       return 0;
+     }
+   ptr2 = evas_cache_image_pixels(ie);
+   count = 0;
+   prevy = 0;
+   if (cinfo.output_components == 3)
+     {
+       for (i = 0; i < cinfo.rec_outbuf_height; i++)
+         line[i] = data + (i * w * 3);
+       for (l = 0; l < h; l += cinfo.rec_outbuf_height)
+         {
+            jpeg_read_scanlines(&cinfo, line, cinfo.rec_outbuf_height);
+            scans = cinfo.rec_outbuf_height;
+            if ((h - l) < scans) scans = h - l;
+            ptr = data;
+            for (y = 0; y < scans; y++)
+              {
+                 for (x = 0; x < w; x++)
+                   {
+                      *ptr2 =
+                        (0xff000000) | ((ptr[0]) << 16) | ((ptr[1]) << 8) | (ptr[2]);
+                      ptr += 3;
+                      ptr2++;
+                   }
+              }
+         }
+     }
+   else if (cinfo.output_components == 1)
+     {
+       for (i = 0; i < cinfo.rec_outbuf_height; i++)
+         line[i] = data + (i * w);
+       for (l = 0; l < h; l += cinfo.rec_outbuf_height)
+         {
+            jpeg_read_scanlines(&cinfo, line, cinfo.rec_outbuf_height);
+            scans = cinfo.rec_outbuf_height;
+            if ((h - l) < scans) scans = h - l;
+            ptr = data;
+            for (y = 0; y < scans; y++)
+              {
+                 for (x = 0; x < w; x++)
+                   {
+                      *ptr2 =
+                        (0xff000000) | ((ptr[0]) << 16) | ((ptr[0]) << 8) | (ptr[0]);
+                      ptr++;
+                      ptr2++;
+                   }
+              }
+         }
+     }
+/* end data decoding */
+   jpeg_finish_decompress(&cinfo);
+   jpeg_destroy_decompress(&cinfo);
+   return 1;
+}
+
+#if 0 /* not used at the moment */
+static int
+evas_image_load_file_data_jpeg_alpha_internal(Image_Entry *ie, FILE *f)
+{
+   int w, h;
+   struct jpeg_decompress_struct cinfo;
+   struct _JPEG_error_mgr jerr;
+   DATA8 *ptr, *line[16], *data;
+   DATA32 *ptr2;
+   int x, y, l, i, scans, count, prevy;
+
+   if (!f) return 0;
+   cinfo.err = jpeg_std_error(&(jerr.pub));
+   jerr.pub.error_exit = _JPEGFatalErrorHandler;
+   jerr.pub.emit_message = _JPEGErrorHandler2;
+   jerr.pub.output_message = _JPEGErrorHandler;
+   if (setjmp(jerr.setjmp_buffer))
+     {
+       jpeg_destroy_decompress(&cinfo);
+       return 0;
+     }
+   jpeg_create_decompress(&cinfo);
+   jpeg_stdio_src(&cinfo, f);
+   jpeg_read_header(&cinfo, TRUE);
+   cinfo.do_fancy_upsampling = FALSE;
+   cinfo.do_block_smoothing = FALSE;
+   jpeg_start_decompress(&cinfo);
+
+/* head decoding */
+   ie->w = w = cinfo.output_width;
+   ie->h = h = cinfo.output_height;
+/* end head decoding */
+/* data decoding */
+   if (cinfo.rec_outbuf_height > 16)
+     {
+       jpeg_destroy_decompress(&cinfo);
+       return 0;
+     }
+   data = alloca(w * 16 * 3);
+   if (!ie->flags.loaded)
+     {
+       jpeg_destroy_decompress(&cinfo);
+       return 0;
+     }
+   ptr2 = evas_cache_image_pixels(ie);
+   count = 0;
+   prevy = 0;
+   if (cinfo.output_components == 3)
+     {
+       for (i = 0; i < cinfo.rec_outbuf_height; i++)
+         line[i] = data + (i * w * 3);
+       for (l = 0; l < h; l += cinfo.rec_outbuf_height)
+         {
+            jpeg_read_scanlines(&cinfo, line, cinfo.rec_outbuf_height);
+            scans = cinfo.rec_outbuf_height;
+            if ((h - l) < scans) scans = h - l;
+            ptr = data;
+            for (y = 0; y < scans; y++)
+              {
+                 for (x = 0; x < w; x++)
+                   {
+                      *ptr2 =
+                        ((*ptr2) & 0x00ffffff) |
+                        (((ptr[0] + ptr[1] + ptr[2]) / 3) << 24);
+                      ptr += 3;
+                      ptr2++;
+                   }
+              }
+         }
+     }
+   else if (cinfo.output_components == 1)
+     {
+       for (i = 0; i < cinfo.rec_outbuf_height; i++)
+         line[i] = data + (i * w);
+       for (l = 0; l < h; l += cinfo.rec_outbuf_height)
+         {
+            jpeg_read_scanlines(&cinfo, line, cinfo.rec_outbuf_height);
+            scans = cinfo.rec_outbuf_height;
+            if ((h - l) < scans) scans = h - l;
+            ptr = data;
+            for (y = 0; y < scans; y++)
+              {
+                 for (x = 0; x < w; x++)
+                   {
+                      *ptr2 =
+                        ((*ptr2) & 0x00ffffff) |
+                        ((ptr[0]) << 24);
+                      ptr++;
+                      ptr2++;
+                   }
+              }
+         }
+     }
+/* end data decoding */
+   jpeg_finish_decompress(&cinfo);
+   jpeg_destroy_decompress(&cinfo);
+   return 1;
+}
+#endif
+
+int
+evas_image_load_file_head_jpeg(Image_Entry *ie, const char *file, const char *key)
+{
+   int val;
+   FILE *f;
+
+   if ((!file)) return 0;
+   f = fopen(file, "rb");
+   if (!f) return 0;
+   val = evas_image_load_file_head_jpeg_internal(ie, f);
+   fclose(f);
+   return val;
+   key = 0;
+}
+
+int
+evas_image_load_file_data_jpeg(Image_Entry *ie, const char *file, const char *key)
+{
+   int val;
+   FILE *f;
+
+   if ((!file)) return 0;
+   f = fopen(file, "rb");
+   if (!f) return 0;
+   val = evas_image_load_file_data_jpeg_internal(ie, f);
+   fclose(f);
+   return val;
+   key = 0;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_load_jpeg_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_LOADER,
+     "jpeg",
+     "none"
+};
diff --git a/src/modules/loaders/pmaps/.cvsignore b/src/modules/loaders/pmaps/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/loaders/pmaps/Makefile.am b/src/modules/loaders/pmaps/Makefile.am
new file mode 100644 (file)
index 0000000..0a0748d
--- /dev/null
@@ -0,0 +1,23 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@pmaps_cflags@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/loaders/pmaps/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_load_pmaps.c
+
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/loaders/pmaps/evas_image_load_pmaps.c b/src/modules/loaders/pmaps/evas_image_load_pmaps.c
new file mode 100644 (file)
index 0000000..35b0a59
--- /dev/null
@@ -0,0 +1,554 @@
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+#define FILE_BUFFER_SIZE 1024
+#define FILE_BUFFER_UNREAD_SIZE 16
+
+static int evas_image_load_file_head_pmaps(Image_Entry *ie,
+                                   const char *file, const char *key);
+static int evas_image_load_file_data_pmaps(Image_Entry *ie,
+                                   const char *file, const char *key);
+
+Evas_Image_Load_Func evas_image_load_pmaps_func = {
+   evas_image_load_file_head_pmaps,
+   evas_image_load_file_data_pmaps
+};
+
+/* The buffer to load pmaps images */
+typedef struct Pmaps_Buffer Pmaps_Buffer;
+
+struct Pmaps_Buffer
+{
+   FILE *file;
+
+   /* the buffer */
+   DATA8 buffer[FILE_BUFFER_SIZE];
+   DATA8 unread[FILE_BUFFER_UNREAD_SIZE];
+   DATA8 *current;
+   DATA8 *end;
+   char type[3];
+   unsigned char unread_len:7;
+   unsigned char last_buffer:1;
+
+   /* image properties */
+   int w;
+   int h;
+   int max;
+
+   /* interface */
+   int (*int_get) (Pmaps_Buffer *b, int *val);
+   int (*color_get) (Pmaps_Buffer *b, DATA32 *color);
+};
+
+/* internal used functions */
+static int pmaps_buffer_open(Pmaps_Buffer *b, const char *filename);
+static void pmaps_buffer_close(Pmaps_Buffer *b);
+static int pmaps_buffer_header_parse(Pmaps_Buffer *b);
+static int pmaps_buffer_plain_int_get(Pmaps_Buffer *b, int *val);
+static int pmaps_buffer_1byte_int_get(Pmaps_Buffer *b, int *val);
+static int pmaps_buffer_2byte_int_get(Pmaps_Buffer *b, int *val);
+static int pmaps_buffer_gray_get(Pmaps_Buffer *b, DATA32 *color);
+static int pmaps_buffer_rgb_get(Pmaps_Buffer *b, DATA32 *color);
+static int pmaps_buffer_plain_bw_get(Pmaps_Buffer *b, DATA32 *color);
+
+static size_t pmaps_buffer_plain_update(Pmaps_Buffer *b);
+static size_t pmaps_buffer_raw_update(Pmaps_Buffer *b);
+static int pmaps_buffer_comment_skip(Pmaps_Buffer *b);
+
+static int
+evas_image_load_file_head_pmaps(Image_Entry *ie, const char *file,
+                               const char *key)
+{
+   Pmaps_Buffer b;
+
+   if ((!file))
+      return 0;
+
+   if (!pmaps_buffer_open(&b, file))
+     {
+       pmaps_buffer_close(&b);
+       return 0;
+     }
+
+   if (!pmaps_buffer_header_parse(&b))
+     {
+       pmaps_buffer_close(&b);
+       return 0;
+     }
+
+   ie->w = b.w;
+   ie->h = b.h;
+
+   pmaps_buffer_close(&b);
+   return 1;
+   /* we don't have a use for key, skip warnings */
+   key = NULL;
+}
+
+static int
+evas_image_load_file_data_pmaps(Image_Entry *ie, const char *file,
+                               const char *key)
+{
+   Pmaps_Buffer b;
+   int pixels;
+   DATA32 *ptr;
+
+   if ((!file))
+      return 0;
+
+   if (!pmaps_buffer_open(&b, file))
+     {
+       pmaps_buffer_close(&b);
+       return 0;
+     }
+
+   if (!pmaps_buffer_header_parse(&b))
+     {
+       pmaps_buffer_close(&b);
+       return 0;
+     }
+
+   pixels = b.w * b.h;
+
+   evas_cache_image_surface_alloc(ie, b.w, b.h);
+   if (!evas_cache_image_pixels(ie))
+     {
+       pmaps_buffer_close(&b);
+       return 0;
+     }
+
+   ptr = evas_cache_image_pixels(ie);
+
+   if (b.type[1] != '4')
+     {
+       while (pixels > 0 && b.color_get(&b, ptr))
+         {
+            pixels--;
+            ptr++;
+         }
+     }
+   else
+     {
+       while (pixels > 0
+              && (b.current != b.end || pmaps_buffer_raw_update(&b)))
+         {
+            int i;
+
+            for (i = 7; i >= 0 && pixels > 0; i--)
+              {
+                 if (*b.current & (1 << i))
+                    *ptr = 0xff000000;
+                 else
+                    *ptr = 0xffffffff;
+                 ptr++;
+                 pixels--;
+              }
+            b.current++;
+         }
+     }
+
+   /* if there are some pix missing, give them a proper default */
+   memset(ptr, 0xff, 4 * pixels);
+   pmaps_buffer_close(&b);
+
+   return 1;
+   /* we don't have a use for key, skip warnings */
+   key = NULL;
+}
+
+/* internal used functions */
+static int
+pmaps_buffer_open(Pmaps_Buffer *b, const char *filename)
+{
+   size_t len;
+
+   b->file = fopen(filename, "r");
+   if (!b->file)
+      return 0;
+
+   *b->buffer = 0;
+   *b->unread = 0;
+   b->last_buffer = 0;
+   b->unread_len = 0;
+
+   len = pmaps_buffer_plain_update(b);
+
+   if (len < 3)
+      return 0;
+
+   /* copy the type */
+   b->type[0] = b->buffer[0];
+   b->type[1] = b->buffer[1];
+   b->type[2] = 0;
+   /* skip the PX */
+   b->current = b->buffer + 2;
+
+   return 1;
+}
+
+static void
+pmaps_buffer_close(Pmaps_Buffer *b)
+{
+   if (b->file)
+      fclose(b->file);
+}
+
+static int
+pmaps_buffer_header_parse(Pmaps_Buffer *b)
+{
+   /* if there is no P at the beginning it is not a file we can parse */
+   if (b->type[0] != 'P')
+      return 0;
+
+   /* get the width */
+   if (!pmaps_buffer_plain_int_get(b, &(b->w)) || b->w < 1)
+      return 0;
+
+   /* get the height */
+   if (!pmaps_buffer_plain_int_get(b, &(b->h)) || b->h < 1)
+      return 0;
+
+   /* get the maximum value. P1 and P4 don't have a maximum value. */
+   if (!(b->type[1] == '1' || b->type[1] == '4')
+       && (!pmaps_buffer_plain_int_get(b, &(b->max)) || b->max < 1))
+      return 0;
+
+   /* set up the color get callback */
+   switch (b->type[1])
+     {
+       /* Black and White */
+     case '1':
+       b->color_get = pmaps_buffer_plain_bw_get;
+       break;
+     case '4':
+       /* Binary black and white use another format */
+       b->color_get = NULL;
+       break;
+     case '2':
+     case '5':
+       b->color_get = pmaps_buffer_gray_get;
+       break;
+     case '3':
+     case '6':
+       b->color_get = pmaps_buffer_rgb_get;
+       break;
+     case '7':
+       /* XXX write me */
+       return 0;
+       break;
+     default:
+       return 0;
+     }
+   /* set up the int get callback */
+   switch (b->type[1])
+     {
+       /* RAW */
+     case '5':
+     case '6':
+       if (b->max < 256)
+          b->int_get = pmaps_buffer_1byte_int_get;
+       else
+          b->int_get = pmaps_buffer_2byte_int_get;
+
+       if (b->current == b->end && !pmaps_buffer_raw_update(b))
+          return 0;
+
+       b->current++;
+       break;
+       /* Plain */
+     case '2':
+     case '3':
+       b->int_get = pmaps_buffer_plain_int_get;
+       break;
+       /* Black and White Bitmaps don't use that callback */
+     case '1':
+     case '4':
+       b->int_get = NULL;
+       /* we need to skip the next character fpr P4 it
+        * doesn't hurt if we do it for the P1 as well */
+       b->current++;
+       break;
+     }
+   return 1;
+}
+
+static size_t
+pmaps_buffer_plain_update(Pmaps_Buffer *b)
+{
+   size_t r;
+   size_t steps = 0;
+
+   /* if we already are in the last buffer we can not update it */
+   if (b->last_buffer)
+      return 0;
+
+   /* if we have unread bytes we need to put them before the new read
+    * stuff */
+   if (b->unread_len)
+      memcpy(b->buffer, b->unread, b->unread_len);
+
+   r = fread(&b->buffer[b->unread_len], 1,
+            FILE_BUFFER_SIZE - b->unread_len - 1, b->file) + b->unread_len;
+
+   /* we haven't read anything nor have we bytes in the unread buffer */
+   if (r == 0)
+     {
+       b->buffer[0] = '\0';
+       b->end = b->buffer;
+       b->last_buffer = 1;
+       return 0;
+     }
+
+   if (r < FILE_BUFFER_SIZE - 1)
+     {
+       /*we reached eof */ ;
+       b->last_buffer = 1;
+     }
+
+   b->buffer[r] = 0;
+   r--;
+
+   while (steps < (FILE_BUFFER_UNREAD_SIZE - 2)
+         && r > 1 && !isspace(b->buffer[r]))
+     {
+       steps++;
+       r--;
+     }
+
+   if (steps != 0)
+     {
+       memcpy(b->unread, &b->buffer[r], steps + 1);
+       b->unread_len = steps + 1;
+     }
+   else
+     {
+       b->unread[0] = '\0';
+       b->unread_len = 0;
+     }
+
+   b->buffer[r] = '\0';
+   b->current = b->buffer;
+   b->end = b->buffer + r;
+
+   return r;
+}
+
+static size_t
+pmaps_buffer_raw_update(Pmaps_Buffer *b)
+{
+   size_t r;
+
+   if (b->last_buffer)
+      return 0;
+
+   if (b->unread_len)
+      memcpy(b->buffer, b->unread, b->unread_len);
+
+   r = fread(&b->buffer[b->unread_len], 1,
+            FILE_BUFFER_SIZE - b->unread_len - 1, b->file) + b->unread_len;
+
+   if (r < FILE_BUFFER_SIZE - 1)
+     {
+       /*we reached eof */ ;
+       b->last_buffer = 1;
+     }
+
+   b->buffer[r] = 0;
+   b->end = b->buffer + r;
+   b->current = b->buffer;
+
+   if (b->unread_len)
+     {
+       /* the buffer is now read */
+       *b->unread = '\0';
+       b->unread_len = 0;
+     }
+
+   return r;
+}
+
+static int
+pmaps_buffer_plain_int_get(Pmaps_Buffer *b, int *val)
+{
+   char *start;
+   DATA8 lastc;
+
+   /* first skip all white space
+    * Note: we are skipping here actually every character than is not 
+    * a digit */
+   while (!isdigit(*b->current))
+     {
+       if (*b->current == '\0')
+         {
+            if (!pmaps_buffer_plain_update(b))
+               return 0;
+
+            continue;
+         }
+       if (*b->current == '#' && !pmaps_buffer_comment_skip(b))
+          return 0;
+       b->current++;
+     }
+
+   start = (char *)b->current;
+   /* now find the end of the number */
+   while (isdigit(*b->current))
+      b->current++;
+
+   lastc = *b->current;
+   *b->current = '\0';
+   *val = atoi(start);
+   *b->current = lastc;
+
+   return 1;
+}
+
+static int
+pmaps_buffer_1byte_int_get(Pmaps_Buffer *b, int *val)
+{
+   /* are we at the end of the buffer? */
+   if (b->current == b->end && !pmaps_buffer_raw_update(b))
+      return 0;
+
+   *val = *b->current;
+   b->current++;
+
+   return 1;
+}
+static int
+pmaps_buffer_2byte_int_get(Pmaps_Buffer *b, int *val)
+{
+   /* are we at the end of the buffer? */
+   if (b->current == b->end && !pmaps_buffer_raw_update(b))
+      return 0;
+
+   *val = (int)(*b->current << 8);
+   b->current++;
+
+   /* are we at the end of the buffer? */
+   if (b->current == b->end && !pmaps_buffer_raw_update(b))
+      return 0;
+
+   *val |= *b->current;
+   b->current++;
+
+   return 1;
+}
+
+static int
+pmaps_buffer_comment_skip(Pmaps_Buffer *b)
+{
+   while (*b->current != '\n')
+     {
+       if (*b->current == '\0')
+         {
+            if (!pmaps_buffer_plain_update(b))
+               return 0;
+
+            continue;
+         }
+       b->current++;
+     }
+   return 1;
+}
+
+static int
+pmaps_buffer_rgb_get(Pmaps_Buffer *b, DATA32 *color)
+{
+   int vr, vg, vb;
+
+   if (!b->int_get(b, &vr) || !b->int_get(b, &vg) || !b->int_get(b, &vb))
+      return 0;
+
+   if (b->max != 255)
+     {
+       vr = (vr * 255) / b->max;
+       vg = (vg * 255) / b->max;
+       vb = (vb * 255) / b->max;
+     }
+   if (vr > 255)
+      vr = 255;
+   if (vg > 255)
+      vg = 255;
+   if (vb > 255)
+      vb = 255;
+
+   *color = 0xff000000 | (vr << 16) | (vg << 8) | vb;
+
+   return 1;
+}
+
+static int
+pmaps_buffer_gray_get(Pmaps_Buffer *b, DATA32 *color)
+{
+   int val;
+
+   if (!b->int_get(b, &val))
+      return 0;
+
+   if (b->max != 255)
+      val = (val * 255) / b->max;
+   if (val > 255)
+      val = 255;
+   *color = 0xff000000 | (val << 16) | (val << 8) | val;
+
+   return 1;
+}
+
+static int
+pmaps_buffer_plain_bw_get(Pmaps_Buffer *b, DATA32 *val)
+{
+   /* first skip all white space
+    * Note: we are skipping here actually every character than is not 
+    * a digit */
+   while (!isdigit(*b->current))
+     {
+       if (*b->current == '\0')
+         {
+            if (!pmaps_buffer_raw_update(b))
+               return 0;
+
+            continue;
+         }
+       if (*b->current == '#' && !pmaps_buffer_comment_skip(b))
+          return 0;
+       b->current++;
+     }
+
+   if (*b->current == '0')
+      *val = 0xffffffff;
+   else
+      *val = 0xff000000;
+
+   b->current++;
+
+   return 1;
+}
+
+/* external functions */
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em)
+      return 0;
+   em->functions = (void *)(&evas_image_load_pmaps_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+
+}
+
+EAPI Evas_Module_Api evas_modapi = {
+   EVAS_MODULE_API_VERSION,
+   EVAS_MODULE_TYPE_IMAGE_LOADER,
+   "pmaps",
+   "none"
+};
+
diff --git a/src/modules/loaders/png/.cvsignore b/src/modules/loaders/png/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/loaders/png/Makefile.am b/src/modules/loaders/png/Makefile.am
new file mode 100644 (file)
index 0000000..6e00dcf
--- /dev/null
@@ -0,0 +1,20 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@PNG_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/loaders/png/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_load_png.c
+
+module_la_LIBADD = @PNG_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/loaders/png/evas_image_load_png.c b/src/modules/loaders/png/evas_image_load_png.c
new file mode 100644 (file)
index 0000000..57a5525
--- /dev/null
@@ -0,0 +1,228 @@
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#include <png.h>
+#include <setjmp.h>
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+
+#define PNG_BYTES_TO_CHECK 4
+
+
+int evas_image_load_file_head_png(Image_Entry *ie, const char *file, const char *key);
+int evas_image_load_file_data_png(Image_Entry *ie, const char *file, const char *key);
+
+Evas_Image_Load_Func evas_image_load_png_func =
+{
+  evas_image_load_file_head_png,
+  evas_image_load_file_data_png
+};
+
+
+int
+evas_image_load_file_head_png(Image_Entry *ie, const char *file, const char *key)
+{
+   png_uint_32 w32, h32;
+   FILE *f;
+   png_structp png_ptr = NULL;
+   png_infop info_ptr = NULL;
+   int bit_depth, color_type, interlace_type;
+   unsigned char buf[PNG_BYTES_TO_CHECK];
+   char hasa;
+
+   if ((!file)) return 0;
+   hasa = 0;
+   f = fopen(file, "rb");
+   if (!f) return 0;
+
+   /* if we havent read the header before, set the header data */
+   if (fread(buf, PNG_BYTES_TO_CHECK, 1, f) != 1)
+     {
+       fclose(f);
+       return 0;
+     }
+   if (!png_check_sig(buf, PNG_BYTES_TO_CHECK))
+     {
+       fclose(f);
+       return 0;
+     }
+   rewind(f);
+   png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+   if (!png_ptr)
+     {
+       fclose(f);
+       return 0;
+     }
+   info_ptr = png_create_info_struct(png_ptr);
+   if (!info_ptr)
+     {
+       png_destroy_read_struct(&png_ptr, NULL, NULL);
+       fclose(f);
+       return 0;
+     }
+   if (setjmp(png_ptr->jmpbuf))
+     {
+       png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+       fclose(f);
+       return 0;
+     }
+   png_init_io(png_ptr, f);
+   png_read_info(png_ptr, info_ptr);
+   png_get_IHDR(png_ptr, info_ptr, (png_uint_32 *) (&w32),
+               (png_uint_32 *) (&h32), &bit_depth, &color_type,
+               &interlace_type, NULL, NULL);
+   if ((w32 < 1) || (h32 < 1) || (w32 > 8192) || (h32 > 8192))
+     {
+       png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
+       fclose(f);
+       return 0;
+     }
+   ie->w = (int) w32;
+   ie->h = (int) h32;
+   if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) hasa = 1;
+   if (color_type == PNG_COLOR_TYPE_RGB_ALPHA) hasa = 1;
+   if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA) hasa = 1;
+   if (hasa) ie->flags.alpha = 1;
+   png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
+   fclose(f);
+   return 1;
+   key = 0;
+}
+
+int
+evas_image_load_file_data_png(Image_Entry *ie, const char *file, const char *key)
+{
+   unsigned char *surface;
+   png_uint_32 w32, h32;
+   int w, h;
+   FILE *f;
+   png_structp png_ptr = NULL;
+   png_infop info_ptr = NULL;
+   int bit_depth, color_type, interlace_type;
+   unsigned char buf[PNG_BYTES_TO_CHECK];
+   unsigned char **lines;
+   char hasa;
+   int i;
+
+   if ((!file)) return 0;
+   hasa = 0;
+   f = fopen(file, "rb");
+   if (!f) return 0;
+
+   /* if we havent read the header before, set the header data */
+   fread(buf, 1, PNG_BYTES_TO_CHECK, f);
+   if (!png_check_sig(buf, PNG_BYTES_TO_CHECK))
+     {
+       fclose(f);
+       return 0;
+     }
+   rewind(f);
+   png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+   if (!png_ptr)
+     {
+       fclose(f);
+       return 0;
+     }
+   info_ptr = png_create_info_struct(png_ptr);
+   if (!info_ptr)
+     {
+       png_destroy_read_struct(&png_ptr, NULL, NULL);
+       fclose(f);
+       return 0;
+     }
+   if (setjmp(png_ptr->jmpbuf))
+     {
+       png_destroy_read_struct(&png_ptr, &info_ptr, NULL);
+       fclose(f);
+       return 0;
+     }
+   png_init_io(png_ptr, f);
+   png_read_info(png_ptr, info_ptr);
+   png_get_IHDR(png_ptr, info_ptr, (png_uint_32 *) (&w32),
+               (png_uint_32 *) (&h32), &bit_depth, &color_type,
+               &interlace_type, NULL, NULL);
+   evas_cache_image_surface_alloc(ie, w32, h32);
+   surface = (unsigned char *) evas_cache_image_pixels(ie);
+   if (!surface)
+     {
+       png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
+       fclose(f);
+       return 0;
+     }
+   if ((w32 != ie->w) || (h32 != ie->h))
+     {
+       png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
+       fclose(f);
+       return 0;
+     }
+   if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS)) hasa = 1;
+   if (color_type == PNG_COLOR_TYPE_RGB_ALPHA) hasa = 1;
+   if (color_type == PNG_COLOR_TYPE_GRAY_ALPHA) hasa = 1;
+   if (hasa) ie->flags.alpha = 1;
+
+   /* Prep for transformations...  ultimately we want ARGB */
+   /* expand palette -> RGB if necessary */
+   if (color_type == PNG_COLOR_TYPE_PALETTE) png_set_palette_to_rgb(png_ptr);
+   /* expand gray (w/reduced bits) -> 8-bit RGB if necessary */
+   if ((color_type == PNG_COLOR_TYPE_GRAY) ||
+       (color_type == PNG_COLOR_TYPE_GRAY_ALPHA))
+     {
+       png_set_gray_to_rgb(png_ptr);
+       if (bit_depth < 8) png_set_expand_gray_1_2_4_to_8(png_ptr);
+     }
+   /* expand transparency entry -> alpha channel if present */
+   if (png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS))
+     png_set_tRNS_to_alpha(png_ptr);
+   /* reduce 16bit color -> 8bit color if necessary */
+   if (bit_depth > 8) png_set_strip_16(png_ptr);
+   /* pack all pixels to byte boundaries */
+   png_set_packing(png_ptr);
+
+   w = ie->w;
+   h = ie->h;
+   /* we want ARGB */
+#ifdef WORDS_BIGENDIAN
+   png_set_swap_alpha(png_ptr);
+   if (!hasa) png_set_filler(png_ptr, 0xff, PNG_FILLER_BEFORE);
+#else
+   png_set_bgr(png_ptr);
+   if (!hasa) png_set_filler(png_ptr, 0xff, PNG_FILLER_AFTER);
+#endif
+   lines = (unsigned char **) alloca(h * sizeof(unsigned char *));
+
+   for (i = 0; i < h; i++)
+     lines[i] = surface + (i * w * sizeof(DATA32));
+   png_read_image(png_ptr, lines);
+   png_read_end(png_ptr, info_ptr);
+   png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp) NULL);
+   fclose(f);
+   evas_common_image_premul(ie);
+
+   return 1;
+   key = 0;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_load_png_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_LOADER,
+     "png",
+     "none"
+};
diff --git a/src/modules/loaders/svg/.cvsignore b/src/modules/loaders/svg/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/loaders/svg/Makefile.am b/src/modules/loaders/svg/Makefile.am
new file mode 100644 (file)
index 0000000..235c15b
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@svg_cflags@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/loaders/svg/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_load_svg.c
+
+module_la_LIBADD = @svg_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/loaders/svg/evas_image_load_svg.c b/src/modules/loaders/svg/evas_image_load_svg.c
new file mode 100644 (file)
index 0000000..465a62f
--- /dev/null
@@ -0,0 +1,296 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include <librsvg/rsvg.h>
+#include <librsvg/rsvg-cairo.h>
+
+int evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key);
+int evas_image_load_file_data_svg(Image_Entry *ie, const char *file, const char *key);
+
+Evas_Image_Load_Func evas_image_load_svg_func =
+{
+  evas_image_load_file_head_svg,
+  evas_image_load_file_data_svg
+};
+
+static int  rsvg_initialized = 0;
+static void svg_loader_unpremul_data(DATA32 *data, unsigned int len);
+
+static void
+svg_loader_unpremul_data(DATA32 *data, unsigned int len)
+{
+   DATA32  *de = data + len;
+
+   while (data < de)
+     {
+       DATA32   a = A_VAL(data);
+       
+       if (a && (a < 255))
+         {
+            R_VAL(data) = (R_VAL(data) * 255) / a;
+            G_VAL(data) = (G_VAL(data) * 255) / a;
+            B_VAL(data) = (B_VAL(data) * 255) / a;
+         }
+       data++;
+     }
+}
+
+int
+evas_image_load_file_head_svg(Image_Entry *ie, const char *file, const char *key)
+{
+   char               cwd[PATH_MAX], pcwd[PATH_MAX], *p;
+   
+   RsvgHandle         *rsvg;
+   RsvgDimensionData   dim;
+   int                 w, h;
+   char               *ext;
+   
+   if (!file) return 0;
+
+   /* ignore all files not called .svg or .svg.gz - because rsvg has a leak
+    * where closing the handle doesn't free mem */
+   ext = strrchr(file, '.');
+   if (!ext) return 0;
+   if (!strcasecmp(ext, ".gz"))
+     {
+       if (p > file)
+         {
+            ext = p - 1;
+            while ((*p != '.') && (p > file))
+              {
+                 p--;
+              }
+            if (p <= file) return 0;
+            if (strcasecmp(p, ".svg.gz")) return 0;
+         }
+       else
+         return 0;
+     }
+   else if (strcasecmp(ext, ".svg")) return 0;
+
+   getcwd(pcwd, sizeof(pcwd));
+   strncpy(cwd, file, sizeof(cwd) - 1);
+   cwd[sizeof(cwd) - 1] = 0;
+   p = strrchr(cwd, '/');
+   if (p) *p = 0;
+   chdir(cwd);
+   
+   rsvg = rsvg_handle_new_from_file(file, NULL);
+   if (!rsvg)
+     {
+       chdir(pcwd);
+       return 0;
+     }
+
+   rsvg_handle_get_dimensions(rsvg, &dim);
+   w = dim.width;
+   h = dim.height;
+   if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+     {
+//     rsvg_handle_close(rsvg, NULL);
+       g_object_unref(rsvg);
+//     rsvg_handle_free(rsvg);
+       chdir(pcwd);
+       return 0;
+     }
+   if (ie->load_opts.scale_down_by > 1)
+     {
+       w /= ie->load_opts.scale_down_by;
+       h /= ie->load_opts.scale_down_by;
+     }
+   else if (ie->load_opts.dpi > 0.0)
+     {
+       w = (w * ie->load_opts.dpi) / 90.0;
+       h = (h * ie->load_opts.dpi) / 90.0;
+     }
+   else if ((ie->load_opts.w > 0) &&
+           (ie->load_opts.h > 0))
+     {
+       int w2, h2;
+       
+       w2 = ie->load_opts.w;
+       h2 = (ie->load_opts.w * h) / w;
+       if (h2 > ie->load_opts.h)
+         {
+            h2 = ie->load_opts.h;
+            w2 = (ie->load_opts.h * w) / h;
+         }
+       w = w2;
+       h = h2;
+     }
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ie->w = w;
+   ie->h = h;
+   ie->flags.alpha = 1;
+//   rsvg_handle_close(rsvg, NULL);
+   g_object_unref(rsvg);
+//   rsvg_handle_free(rsvg);
+   chdir(pcwd);
+   return 1;
+}
+
+/** FIXME: All evas loaders need to be tightened up **/
+int
+evas_image_load_file_data_svg(Image_Entry *ie, const char *file, const char *key)
+{
+   DATA32             *pixels;
+   char               cwd[PATH_MAX], pcwd[PATH_MAX], *p;
+   RsvgHandle         *rsvg;
+   RsvgDimensionData   dim;
+   int                 w, h;
+   cairo_surface_t    *surface;
+   cairo_t            *cr;
+   char               *ext;
+
+   if (!file) return 0;
+
+   /* ignore all files not called .svg or .svg.gz - because rsvg has a leak
+    * where closing the handle doesn't free mem */
+   ext = strrchr(file, '.');
+   if (!ext) return 0;
+   if (!strcasecmp(ext, ".gz"))
+     {
+       if (p > file)
+         {
+            ext = p - 1;
+            while ((*p != '.') && (p > file))
+              {
+                 p--;
+              }
+            if (p <= file) return 0;
+            if (strcasecmp(p, ".svg.gz")) return 0;
+         }
+       else
+         return 0;
+     }
+   else if (strcasecmp(ext, ".svg")) return 0;
+
+   getcwd(pcwd, sizeof(pcwd));
+   strncpy(cwd, file, sizeof(cwd) - 1);
+   cwd[sizeof(cwd) - 1] = 0;
+   p = strrchr(cwd, '/');
+   if (p) *p = 0;
+   chdir(cwd);
+   
+   rsvg = rsvg_handle_new_from_file(file, NULL);
+   if (!rsvg)
+     {
+       chdir(pcwd);
+       return 0;
+     }
+
+   rsvg_handle_get_dimensions(rsvg, &dim);
+   w = dim.width;
+   h = dim.height;
+   if ((w < 1) || (h < 1) || (w > 8192) || (h > 8192))
+     {
+//     rsvg_handle_close(rsvg, NULL);
+       g_object_unref(rsvg);
+//     rsvg_handle_free(rsvg);
+       chdir(pcwd);
+       return 0;
+     }
+   if (ie->load_opts.scale_down_by > 1)
+     {
+       w /= ie->load_opts.scale_down_by;
+       h /= ie->load_opts.scale_down_by;
+     }
+   else if (ie->load_opts.dpi > 0.0)
+     {
+       w = (w * ie->load_opts.dpi) / 90.0;
+       h = (h * ie->load_opts.dpi) / 90.0;
+     }
+   else if ((ie->load_opts.w > 0) &&
+           (ie->load_opts.h > 0))
+     {
+       int w2, h2;
+       
+       w2 = ie->load_opts.w;
+       h2 = (ie->load_opts.w * h) / w;
+       if (h2 > ie->load_opts.h)
+         {
+            h2 = ie->load_opts.h;
+            w2 = (ie->load_opts.h * w) / h;
+         }
+       w = w2;
+       h = h2;
+     }
+   if (w < 1) w = 1;
+   if (h < 1) h = 1;
+   ie->flags.alpha = 1;
+   evas_cache_image_surface_alloc(ie, w, h);
+   pixels = evas_cache_image_pixels(ie);
+   if (!pixels)
+     {
+//     rsvg_handle_close(rsvg, NULL);
+       g_object_unref(rsvg);
+//     rsvg_handle_free(rsvg);
+       chdir(pcwd);
+       return 0;
+     }
+
+   memset(pixels, 0, w * h * sizeof(DATA32));
+   
+   surface = cairo_image_surface_create_for_data((unsigned char *)pixels, CAIRO_FORMAT_ARGB32,
+                                                w, h, w * sizeof(DATA32));
+   if (!surface)
+     {
+//     rsvg_handle_close(rsvg, NULL);
+       g_object_unref(rsvg);
+//     rsvg_handle_free(rsvg);
+       chdir(pcwd);
+       return 0;
+     }
+   cr = cairo_create(surface);
+   if (!cr)
+     {
+       cairo_surface_destroy(surface);
+//     rsvg_handle_close(rsvg, NULL);
+       g_object_unref(rsvg);
+//     rsvg_handle_free(rsvg);
+       chdir(pcwd);
+       return 0;
+     }
+   
+   cairo_scale(cr, 
+              (double)ie->w / dim.em, 
+              (double)ie->h / dim.ex);
+   rsvg_handle_render_cairo(rsvg, cr);
+   cairo_surface_destroy(surface);
+   /* need to check if this is required... */
+   cairo_destroy(cr);
+//   rsvg_handle_close(rsvg, NULL);
+   g_object_unref(rsvg);
+//   rsvg_handle_free(rsvg);
+   chdir(pcwd);
+   evas_common_image_set_alpha_sparse(ie);
+   return 1;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_load_svg_func);
+   if (!rsvg_initialized) rsvg_init();
+   rsvg_initialized = 1;
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   if (!rsvg_initialized) return;
+   rsvg_term();
+   rsvg_initialized = 0;
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_LOADER,
+     "svg",
+     "none"
+};
+
diff --git a/src/modules/loaders/tiff/.cvsignore b/src/modules/loaders/tiff/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/loaders/tiff/Makefile.am b/src/modules/loaders/tiff/Makefile.am
new file mode 100644 (file)
index 0000000..6306aed
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@tiff_cflags@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/loaders/tiff/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_load_tiff.c
+
+module_la_LIBADD = @tiff_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/loaders/tiff/evas_image_load_tiff.c b/src/modules/loaders/tiff/evas_image_load_tiff.c
new file mode 100644 (file)
index 0000000..21036b4
--- /dev/null
@@ -0,0 +1,338 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include <stdio.h>
+#include <tiffio.h>
+
+
+int evas_image_load_file_head_tiff(Image_Entry *ie, const char *file, const char *key);
+int evas_image_load_file_data_tiff(Image_Entry *ie, const char *file, const char *key);
+
+Evas_Image_Load_Func evas_image_load_tiff_func =
+{
+  evas_image_load_file_head_tiff,
+  evas_image_load_file_data_tiff
+};
+
+typedef struct TIFFRGBAImage_Extra TIFFRGBAImage_Extra;
+
+struct TIFFRGBAImage_Extra {
+   TIFFRGBAImage       rgba;
+   tileContigRoutine   put_contig;
+   tileSeparateRoutine put_separate;
+   Image_Entry        *image;
+   char                pper;
+   uint32              num_pixels;
+   uint32              py;
+};
+
+static void put_contig_and_raster(TIFFRGBAImage *, uint32 *,
+                                  uint32, uint32, uint32, uint32, int32,
+                                  int32, unsigned char *);
+static void put_separate_and_raster(TIFFRGBAImage *, uint32 *, uint32,
+                                    uint32, uint32, uint32, int32,
+                                    int32, unsigned char *,
+                                    unsigned char *, unsigned char *,
+                                    unsigned char *);
+static void raster(TIFFRGBAImage_Extra * img, uint32 * raster, uint32 x,
+                   uint32 y, uint32 w, uint32 h);
+
+
+static void
+put_contig_and_raster(TIFFRGBAImage * img, uint32 * rast,
+                      uint32 x, uint32 y, uint32 w, uint32 h,
+                      int32 fromskew, int32 toskew, unsigned char *cp)
+{
+   (*(((TIFFRGBAImage_Extra *) img)->put_contig)) (img, rast, x, y, w, h,
+                                                   fromskew, toskew, cp);
+   raster((TIFFRGBAImage_Extra *) img, rast, x, y, w, h);
+}
+
+static void
+put_separate_and_raster(TIFFRGBAImage * img, uint32 * rast,
+                        uint32 x, uint32 y, uint32 w, uint32 h,
+                        int32 fromskew, int32 toskew,
+                        unsigned char *r, unsigned char *g, unsigned char *b,
+                        unsigned char *a)
+{
+   (*(((TIFFRGBAImage_Extra *) img)->put_separate))
+       (img, rast, x, y, w, h, fromskew, toskew, r, g, b, a);
+   raster((TIFFRGBAImage_Extra *) img, rast, x, y, w, h);
+}
+
+/* needs orientation code */
+
+static void
+raster(TIFFRGBAImage_Extra * img, uint32 * rast,
+       uint32 x, uint32 y, uint32 w, uint32 h)
+{
+   int                 image_width, image_height;
+   uint32             *pixel, pixel_value;
+   int                 i, j, dy, rast_offset;
+   DATA32             *buffer_pixel, *buffer = evas_cache_image_pixels(img->image);
+   int                 alpha_premult;
+
+   image_width = img->image->w;
+   image_height = img->image->h;
+
+   dy = h > y ? -1 : y - h;
+
+   /* rast seems to point to the beginning of the last strip processed */
+   /* so you need use negative offsets. Bizzare. Someone please check this */
+   /* I don't understand why, but that seems to be what's going on. */
+   /* libtiff needs better docs! */
+
+   if (img->rgba.alpha == EXTRASAMPLE_UNASSALPHA)
+     alpha_premult = 1;
+   for (i = y, rast_offset = 0; i > dy; i--, rast_offset--)
+     {
+        pixel = rast + (rast_offset * image_width);
+        buffer_pixel = buffer + ((((image_height - 1) - i) * image_width) + x);
+
+        for (j = 0; j < w; j++)
+          {
+            int a, r, g, b;
+
+             pixel_value = (*(pixel++));
+            a = TIFFGetA(pixel_value);
+            r = TIFFGetR(pixel_value);
+            g = TIFFGetG(pixel_value);
+            b = TIFFGetB(pixel_value);
+            if (!alpha_premult && (a < 255))
+              {
+                 r = (r * (a + 1)) >> 8;
+                 g = (g * (a + 1)) >> 8;
+                 b = (b * (a + 1)) >> 8;
+              }
+             (*(buffer_pixel++)) = (a << 24) | (r << 16) | (g << 8) | b;
+          }
+     }
+}
+
+int
+evas_image_load_file_head_tiff(Image_Entry *ie, const char *file, const char *key)
+{
+   char                txt[1024];
+   TIFFRGBAImage       tiff_image;
+   TIFF               *tif = NULL;
+   FILE               *ffile;
+   int                 fd;
+   uint16              magic_number;
+
+   if (!file)
+      return 0;
+
+   ffile = fopen(file, "rb");
+   if (!ffile)
+      return 0;
+
+   if (fread(&magic_number, sizeof(uint16), 1, ffile) != 1)
+     {
+        fclose(ffile);
+        return 0;
+     }
+   /* Apparently rewind(f) isn't sufficient */
+   fseek(ffile, (long)0, SEEK_SET);
+
+   if ((magic_number != TIFF_BIGENDIAN) /* Checks if actually tiff file */
+       && (magic_number != TIFF_LITTLEENDIAN))
+     {
+        fclose(ffile);
+        return 0;
+     }
+
+   fd = fileno(ffile);
+   fd = dup(fd);
+   lseek(fd, (long)0, SEEK_SET);
+   fclose(ffile);
+
+   tif = TIFFFdOpen(fd, file, "r");
+   if (!tif)
+      return 0;
+
+   strcpy(txt, "Evas Tiff loader: cannot be processed by libtiff");
+   if (!TIFFRGBAImageOK(tif, txt))
+     {
+        TIFFClose(tif);
+        return 0;
+     }
+   strcpy(txt, "Evas Tiff loader: cannot begin reading tiff");
+   if (!TIFFRGBAImageBegin(& tiff_image, tif, 1, txt))
+     {
+        TIFFClose(tif);
+        return 0;
+     }
+
+   if (tiff_image.alpha != EXTRASAMPLE_UNSPECIFIED)
+     ie->flags.alpha = 1;
+   if ((tiff_image.width < 1) || (tiff_image.height < 1) ||
+       (tiff_image.width > 8192) || (tiff_image.height > 8192))
+     {
+       TIFFClose(tif);
+       return 0;
+     }
+   ie->w = tiff_image.width;
+   ie->h = tiff_image.height;
+
+   TIFFClose(tif);
+   return 1;
+}
+
+int
+evas_image_load_file_data_tiff(Image_Entry *ie, const char *file, const char *key)
+{
+   char                txt[1024];
+   TIFFRGBAImage_Extra rgba_image;
+   TIFF               *tif = NULL;
+   FILE               *ffile;
+   uint32             *rast = NULL;
+   uint32              num_pixels;
+   int                 fd;
+   uint16              magic_number;
+
+   if (!file)
+      return 0;
+
+   ffile = fopen(file, "rb");
+   if (!ffile)
+      return 0;
+
+   fread(&magic_number, sizeof(uint16), 1, ffile);
+   /* Apparently rewind(f) isn't sufficient */
+   fseek(ffile, (long)0, SEEK_SET);
+
+   if ((magic_number != TIFF_BIGENDIAN) /* Checks if actually tiff file */
+       && (magic_number != TIFF_LITTLEENDIAN))
+     {
+        fclose(ffile);
+        return 0;
+     }
+
+   fd = fileno(ffile);
+   fd = dup(fd);
+   lseek(fd, (long)0, SEEK_SET);
+   fclose(ffile);
+
+   tif = TIFFFdOpen(fd, file, "r");
+   if (!tif)
+      return 0;
+
+   strcpy(txt, "Evas Tiff loader: cannot be processed by libtiff");
+   if (!TIFFRGBAImageOK(tif, txt))
+     {
+        TIFFClose(tif);
+        return 0;
+     }
+   strcpy(txt, "Evas Tiff loader: cannot begin reading tiff");
+   if (!TIFFRGBAImageBegin((TIFFRGBAImage *) & rgba_image, tif, 0, txt))
+     {
+        TIFFClose(tif);
+        return 0;
+     }
+   rgba_image.image = ie;
+
+   if (rgba_image.rgba.alpha != EXTRASAMPLE_UNSPECIFIED)
+     ie->flags.alpha = 1;
+   if ((rgba_image.rgba.width != ie->w) ||
+       (rgba_image.rgba.height != ie->h))
+     {
+        TIFFClose(tif);
+       return 0;
+     }
+
+   evas_cache_image_surface_alloc(ie, rgba_image.rgba.width, rgba_image.rgba.height);
+   if (!evas_cache_image_pixels(ie))
+     {
+        TIFFRGBAImageEnd((TIFFRGBAImage *) & rgba_image);
+        TIFFClose(tif);
+
+       return 0;
+     }
+
+   rgba_image.num_pixels = num_pixels = ie->w * ie->h;
+
+   rgba_image.pper = rgba_image.py = 0;
+   rast = (uint32 *) _TIFFmalloc(sizeof(uint32) * num_pixels);
+
+   if (!rast)
+     {
+        fprintf(stderr, "Evas Tiff loader: out of memory\n");
+
+        TIFFRGBAImageEnd((TIFFRGBAImage *) & rgba_image);
+        TIFFClose(tif);
+
+        return 0;
+     }
+
+   if (rgba_image.rgba.put.any == NULL)
+     {
+        fprintf(stderr, "Evas Tiff loader: no put function");
+
+        _TIFFfree(rast);
+        TIFFRGBAImageEnd((TIFFRGBAImage *) & rgba_image);
+        TIFFClose(tif);
+
+        return 0;
+     }
+   else
+     {
+       if (rgba_image.rgba.isContig)
+         {
+            rgba_image.put_contig = rgba_image.rgba.put.contig;
+            rgba_image.rgba.put.contig = put_contig_and_raster;
+         }
+       else
+         {
+            rgba_image.put_separate = rgba_image.rgba.put.separate;
+            rgba_image.rgba.put.separate = put_separate_and_raster;
+         }
+     }
+
+   /*  if (rgba_image.rgba.samplesperpixel == 8)*/
+   if (rgba_image.rgba.bitspersample == 8)
+     {
+        if (!TIFFRGBAImageGet((TIFFRGBAImage *) &rgba_image, rast,
+                              rgba_image.rgba.width, rgba_image.rgba.height))
+          {
+             _TIFFfree(rast);
+             TIFFRGBAImageEnd((TIFFRGBAImage *) & rgba_image);
+             TIFFClose(tif);
+             return 0;
+          }
+     }
+   else
+     {
+        printf("channel bits == %i\n", (int)rgba_image.rgba.samplesperpixel);
+     }
+
+   _TIFFfree(rast);
+
+   TIFFRGBAImageEnd((TIFFRGBAImage *) & rgba_image);
+
+   TIFFClose(tif);
+
+   evas_common_image_set_alpha_sparse(ie);
+   return 1;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_load_tiff_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_LOADER,
+     "tiff",
+     "none"
+};
diff --git a/src/modules/loaders/xpm/.cvsignore b/src/modules/loaders/xpm/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/loaders/xpm/Makefile.am b/src/modules/loaders/xpm/Makefile.am
new file mode 100644 (file)
index 0000000..3698983
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@xpm_cflags@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/loaders/xpm/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_load_xpm.c
+
+module_la_LIBADD = $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/loaders/xpm/evas_image_load_xpm.c b/src/modules/loaders/xpm/evas_image_load_xpm.c
new file mode 100644 (file)
index 0000000..d4c1f50
--- /dev/null
@@ -0,0 +1,646 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+int evas_image_load_file_head_xpm(Image_Entry *ie, const char *file, const char *key);
+int evas_image_load_file_data_xpm(Image_Entry *ie, const char *file, const char *key);
+
+Evas_Image_Load_Func evas_image_load_xpm_func =
+{
+  evas_image_load_file_head_xpm,
+  evas_image_load_file_data_xpm
+};
+
+
+static FILE *rgb_txt = NULL;
+
+static void
+xpm_parse_color(char *color, int *r, int *g, int *b)
+{
+   char                buf[4096];
+
+   /* is a #ff00ff like color */
+   if (color[0] == '#')
+     {
+        int                 len;
+        char                val[32];
+       
+        len = strlen(color) - 1;
+        if (len < 96)
+          {
+             int                 i;
+            
+             len /= 3;
+             for (i = 0; i < len; i++)
+                val[i] = color[1 + i + (0 * len)];
+             val[i] = 0;
+             sscanf(val, "%x", r);
+             for (i = 0; i < len; i++)
+                val[i] = color[1 + i + (1 * len)];
+             val[i] = 0;
+             sscanf(val, "%x", g);
+             for (i = 0; i < len; i++)
+                val[i] = color[1 + i + (2 * len)];
+             val[i] = 0;
+             sscanf(val, "%x", b);
+             if (len == 1)
+               {
+                  *r = (*r << 4) | *r;
+                  *g = (*g << 4) | *g;
+                  *b = (*b << 4) | *b;
+               }
+             else if (len > 2)
+               {
+                  *r >>= (len - 2) * 4;
+                  *g >>= (len - 2) * 4;
+                  *b >>= (len - 2) * 4;
+               }
+          }
+        return;
+     }
+   /* look in rgb txt database */
+   if (!rgb_txt) rgb_txt = fopen("/usr/lib/X11/rgb.txt", "r");
+   if (!rgb_txt) rgb_txt = fopen("/usr/X11/lib/X11/rgb.txt", "r");
+   if (!rgb_txt) rgb_txt = fopen("/usr/X11R6/lib/X11/rgb.txt", "r");
+   if (!rgb_txt) rgb_txt = fopen("/usr/openwin/lib/X11/rgb.txt", "r");
+   if (!rgb_txt) return;
+   fseek(rgb_txt, 0, SEEK_SET);
+   while (fgets(buf, sizeof(buf), rgb_txt))
+     {
+       buf[sizeof(buf) - 1] = 0;
+        if (buf[0] != '!')
+          {
+             int rr, gg, bb;
+             char name[4096];
+            
+             if (sscanf(buf, "%i %i %i %[^\n]", &rr, &gg, &bb, name) == 4)
+              {
+                 if (!strcasecmp(name, color))
+                   {
+                      *r = rr;
+                      *g = gg;
+                      *b = bb;
+                      return;
+                   }
+              }
+          }
+     }
+}
+
+static void
+xpm_parse_done(void)
+{
+   if (rgb_txt) fclose(rgb_txt);
+   rgb_txt = NULL;
+}
+
+
+/** FIXME: clean this up and make more efficient  **/
+static int
+evas_image_load_file_xpm(Image_Entry *ie, const char *file, const char *key, int load_data)
+{
+   DATA32             *ptr, *end;
+   FILE               *f;
+
+   int                 pc, c, i, j, k, w, h, ncolors, cpp, comment, transp,
+                       quote, context, len, done, r, g, b, backslash, lu1, lu2;
+   char               *line, s[256], tok[128], col[256], *tl;
+   int                 lsz = 256;
+   struct _cmap {
+      unsigned char    str[6];
+      unsigned char    transp;
+      short            r, g, b;
+   }                  *cmap;
+
+   short               lookup[128 - 32][128 - 32];
+   int                 count, pixels;
+
+   if (!file) return 0;
+   done = 0;
+//   transp = -1;
+   transp = 1;
+
+   /* if immediate_load is 1, then dont delay image laoding as below, or */
+   /* already data in this image - dont load it again */
+
+   f = fopen(file, "rb");
+   if (!f)
+     {
+        xpm_parse_done();
+        return 0;
+     }
+   if (fread(s, 9, 1, f) != 1)
+     {
+        fclose(f);
+       xpm_parse_done();
+       return 0;
+     }
+   rewind(f);
+   s[9] = 0;
+   if (strcmp("/* XPM */", s))
+     {
+        fclose(f);
+        xpm_parse_done();
+        return 0;
+     }
+   
+   i = 0;
+   j = 0;
+   cmap = NULL;
+   w = 10;
+   h = 10;
+   ptr = NULL;
+   end = NULL;
+   c = ' ';
+   comment = 0;
+   quote = 0;
+   context = 0;
+   pixels = 0;
+   count = 0;
+   line = malloc(lsz);
+   if (!line)
+     {
+        fclose(f);
+        xpm_parse_done();
+        return 0;
+     }
+
+   backslash = 0;
+   memset(lookup, 0, sizeof(lookup));
+   while (!done)
+     {
+        pc = c;
+        c = fgetc(f);
+        if (c == EOF) break;
+        if (!quote)
+          {
+             if ((pc == '/') && (c == '*'))
+              comment = 1;
+             else if ((pc == '*') && (c == '/') && (comment))
+              comment = 0;
+          }
+        if (!comment)
+          {
+             if ((!quote) && (c == '"'))
+               {
+                  quote = 1;
+                  i = 0;
+               }
+             else if ((quote) && (c == '"'))
+               {
+                  line[i] = 0;
+                  quote = 0;
+                  if (context == 0)
+                    {
+                       /* Header */
+                       if (sscanf(line, "%i %i %i %i", &w, &h, &ncolors, &cpp) != 4)
+                        {
+                            fprintf(stderr,
+                                    "XPM ERROR: XPM file malformed header\n");
+                            free(line);
+                            fclose(f);
+                            xpm_parse_done();
+                            return 0;
+                        }
+                       if ((ncolors > 32766) || (ncolors < 1))
+                         {
+                            fprintf(stderr,
+                                    "XPM ERROR: XPM files with colors > 32766 or < 1 not supported\n");
+                            free(line);
+                            fclose(f);
+                            xpm_parse_done();
+                            return 0;
+                         }
+                       if ((cpp > 5) || (cpp < 1))
+                         {
+                            fprintf(stderr,
+                                    "XPM ERROR: XPM files with characters per pixel > 5 or < 1not supported\n");
+                            free(line);
+                            fclose(f);
+                            xpm_parse_done();
+                            return 0;
+                         }
+                       if ((w > 8192) || (w < 1))
+                         {
+                            fprintf(stderr,
+                                    "XPM ERROR: Image width > 8192 or < 1 pixels for file\n");
+                            free(line);
+                            fclose(f);
+                            xpm_parse_done();
+                            return 0;
+                         }
+                       if ((h > 8192) || (h < 1))
+                         {
+                            fprintf(stderr,
+                                    "XPM ERROR: Image height > 8192 or < 1 pixels for file\n");
+                            free(line);
+                            fclose(f);
+                            xpm_parse_done();
+                            return 0;
+                         }
+
+                       if (!cmap)
+                         {
+                            cmap = malloc(sizeof(struct _cmap) * ncolors);
+                            if (!cmap)
+                              {
+                                free(line);
+                                fclose(f);
+                                xpm_parse_done();
+                                return 0;
+                              }
+                         }
+                       ie->w = w;
+                       ie->h = h;
+
+                       j = 0;
+                       context++;
+                    }
+                  else if (context == 1)
+                    {
+                       /* Color Table */
+                       if (j < ncolors)
+                         {
+                            int                 slen;
+                            int                 hascolor, iscolor;
+
+                            iscolor = 0;
+                            hascolor = 0;
+                            tok[0] = 0;
+                            col[0] = 0;
+                            s[0] = 0;
+                            len = strlen(line);
+                            strncpy(cmap[j].str, line, cpp);
+                            cmap[j].str[cpp] = 0;
+                           for (slen = 0; slen < cpp; slen++)
+                             {
+                                /* fix the ascii of the  color string - if its < 32 - just limit to 32 */
+                                if (cmap[j].str[slen] < 32) cmap[j].str[slen] = 0;
+                             }
+                            cmap[j].r = -1;
+                            cmap[j].transp = 0;
+                            for (k = cpp; k < len; k++)
+                              {
+                                 if (line[k] != ' ')
+                                   {
+                                      s[0] = 0;
+                                      sscanf(&line[k], "%255s", s);
+                                      slen = strlen(s);
+                                      k += slen;
+                                      if (!strcmp(s, "c")) iscolor = 1;
+                                      if ((!strcmp(s, "m")) || (!strcmp(s, "s"))
+                                          || (!strcmp(s, "g4")) || (!strcmp(s, "g"))
+                                          || (!strcmp(s, "c")) || (k >= len))
+                                        {
+                                           if (k >= len)
+                                             {
+                                                if (col[0])
+                                                 {
+                                                    if (strlen(col) < (sizeof(col) - 2))
+                                                      strcat(col, " ");
+                                                    else
+                                                      done = 1;
+                                                 }
+                                                if ((strlen(col) + strlen(s)) < (sizeof(col) - 1))
+                                                 strcat(col, s);
+                                             }
+                                           if (col[0])
+                                             {
+                                                if (!strcasecmp(col, "none"))
+                                                  {
+                                                     transp = 1;
+                                                     cmap[j].transp = 1;
+                                                    cmap[j].r = 0;
+                                                    cmap[j].g = 0;
+                                                    cmap[j].b = 0;
+                                                  }
+                                                else
+                                                  {
+                                                     if ((((cmap[j].r < 0) || (!strcmp(tok, "c"))) && (!hascolor)))
+                                                       {
+                                                          r = g = b = 0;
+                                                          xpm_parse_color(col, &r, &g, &b);
+                                                          cmap[j].r = r;
+                                                          cmap[j].g = g;
+                                                          cmap[j].b = b;
+                                                          if (iscolor) hascolor = 1;
+                                                       }
+                                                  }
+                                             }
+                                           strcpy(tok, s);
+                                           col[0] = 0;
+                                        }
+                                      else
+                                        {
+                                          if (col[0])
+                                            {
+                                               if (strlen(col) < ( sizeof(col) - 2))
+                                                 strcat(col, " ");
+                                               else
+                                                 done = 1;
+                                            }
+                                          if ((strlen(col) + strlen(s)) < (sizeof(col) - 1))
+                                            strcat(col, s);
+                                        }
+                                   }
+                              }
+                         }
+                       j++;
+                       if (j >= ncolors)
+                         {
+                            if (cpp == 1)
+                             {
+                                for (i = 0; i < ncolors; i++)
+                                  lookup[(int)cmap[i].str[0] - 32][0] = i;
+                             }
+                            if (cpp == 2)
+                             {
+                                for (i = 0; i < ncolors; i++)
+                                  lookup[(int)cmap[i].str[0] - 32][(int)cmap[i].str[1] - 32] = i;
+                             }
+                            context++;
+                         }
+
+                       if (transp) ie->flags.alpha = 1;
+                      
+                       if (load_data)
+                         {
+                            evas_cache_image_surface_alloc(ie, w, h);
+                            ptr = evas_cache_image_pixels(ie);
+                            if (!ptr)
+                              {
+                                 free(cmap);
+                                 free(line);
+                                 fclose(f);
+                                 xpm_parse_done();
+                                 return 0;
+                              }
+                            end = ptr + (w * h);
+                            pixels = w * h;
+                         }
+                       else
+                         {
+                            free(cmap);
+                            free(line);
+                            fclose(f);
+                            xpm_parse_done();
+                            return 1;
+                         }
+                    }
+                  else
+                    {
+                       /* Image Data */
+                       i = 0;
+                       if (cpp == 0)
+                         {
+                            /* Chars per pixel = 0? well u never know */
+                         }
+                      /* it's xpm - don't care about speed too much. still faster
+                       * that most xpm loaders anyway */
+                       else if (cpp == 1)
+                         {
+                            if (transp)
+                              {
+                                 for (i = 0;
+                                      ((i < 65536) && (ptr < end) && (line[i]));
+                                      i++)
+                                   {
+                                     lu1 = (int)line[i] - 32;
+                                     if (lu1 < 0) continue;
+                                      if (cmap[lookup[lu1][0]].transp)
+                                        {
+                                          r = (unsigned char)cmap[lookup[lu1][0]].r;
+                                           g = (unsigned char)cmap[lookup[lu1][0]].g;
+                                           b = (unsigned char)cmap[lookup[lu1][0]].b;
+                                           *ptr = (r << 16) | (g << 8) | b;
+                                          ptr++;
+                                           count++;
+                                        }
+                                      else
+                                        {
+                                           r = (unsigned char)cmap[lookup[lu1][0]].r;
+                                           g = (unsigned char)cmap[lookup[lu1][0]].g;
+                                           b = (unsigned char)cmap[lookup[lu1][0]].b;
+                                           *ptr = (0xff << 24) | (r << 16) | (g << 8) | b;
+                                          ptr++;
+                                           count++;
+                                        }
+                                   }
+                              }
+                            else
+                              {
+                                 for (i = 0;
+                                      ((i < 65536) && (ptr < end) && (line[i]));
+                                      i++)
+                                   {
+                                     lu1 = (int)line[i] - 32;
+                                     if (lu1 < 0) continue;
+                                     r = (unsigned char)cmap[lookup[lu1][0]].r;
+                                     g = (unsigned char)cmap[lookup[lu1][0]].g;
+                                     b = (unsigned char)cmap[lookup[lu1][0]].b;
+                                     *ptr = (0xff << 24) | (r << 16) | (g << 8) | b;
+                                     ptr++;
+                                     count++;
+                                   }
+                              }
+                         }
+                       else if (cpp == 2)
+                         {
+                            if (transp)
+                              {
+                                 for (i = 0;
+                                      ((i < 65536) && (ptr < end) && (line[i]));
+                                      i++)
+                                   {
+                                     lu1 = (int)line[i] - 32;
+                                     i++;
+                                     lu2 = (int)line[i] - 32;
+                                     if (lu1 < 0) continue;
+                                     if (lu2 < 0) continue;
+                                      if (cmap[lookup[lu1][lu2]].transp)
+                                        {
+                                          r = (unsigned char)cmap[lookup[lu1][lu2]].r;
+                                           g = (unsigned char)cmap[lookup[lu1][lu2]].g;
+                                           b = (unsigned char)cmap[lookup[lu1][lu2]].b;
+                                           *ptr = (r << 16) | (g << 8) | b;
+                                          ptr++;
+                                           count++;
+                                        }
+                                      else
+                                        {
+                                           r = (unsigned char)cmap[lookup[lu1][lu2]].r;
+                                           g = (unsigned char)cmap[lookup[lu1][lu2]].g;
+                                           b = (unsigned char)cmap[lookup[lu1][lu2]].b;
+                                           *ptr = (0xff << 24) | (r << 16) | (g << 8) | b;
+                                          ptr++;
+                                           count++;
+                                        }
+                                   }
+                              }
+                            else
+                              {
+                                 for (i = 0;
+                                      ((i < 65536) && (ptr < end) && (line[i]));
+                                      i++)
+                                   {
+                                     lu1 = (int)line[i] - 32;
+                                     i++;
+                                     lu2 = (int)line[i] - 32;
+                                     if (lu1 < 0) continue;
+                                     if (lu2 < 0) continue;
+                                     r = (unsigned char)cmap[lookup[lu1][lu2]].r;
+                                     g = (unsigned char)cmap[lookup[lu1][lu2]].g;
+                                     b = (unsigned char)cmap[lookup[lu1][lu2]].b;
+                                     *ptr = (0xff << 24) | (r << 16) | (g << 8) | b;
+                                     ptr++;
+                                     count++;
+                                   }
+                              }
+                         }
+                       else
+                         {
+                            if (transp)
+                              {
+                                 for (i = 0;
+                                      ((i < 65536) && (ptr < end) && (line[i]));
+                                      i++)
+                                   {
+                                      for (j = 0; j < cpp; j++, i++)
+                                       {
+                                          col[j] = line[i];
+                                          if (col[j] < 32) col[j] = 32;
+                                       }
+                                      col[j] = 0;
+                                      i--;
+                                      for (j = 0; j < ncolors; j++)
+                                        {
+                                           if (!strcmp(col, cmap[j].str))
+                                             {
+                                                if (cmap[j].transp)
+                                                  {
+                                                     r = (unsigned char)cmap[j].r;
+                                                     g = (unsigned char)cmap[j].g;
+                                                     b = (unsigned char)cmap[j].b;
+                                                    *ptr = (r << 16) | (g << 8) | b;
+                                                    ptr++;
+                                                     count++;
+                                                  }
+                                                else
+                                                  {
+                                                    r = (unsigned char)cmap[j].r;
+                                                     g = (unsigned char)cmap[j].g;
+                                                     b = (unsigned char)cmap[j].b;
+                                                    *ptr = (0xff << 24) | (r << 16) | (g << 8) | b;
+                                                    ptr++;
+                                                     count++;
+                                                  }
+                                               break;
+                                             }
+                                        }
+                                   }
+                              }
+                            else
+                              {
+                                 for (i = 0;
+                                      ((i < 65536) && (ptr < end) && (line[i]));
+                                      i++)
+                                   {
+                                      for (j = 0; j < cpp; j++, i++)
+                                        {
+                                           col[j] = line[i];
+                                        }
+                                      col[j] = 0;
+                                      i--;
+                                      for (j = 0; j < ncolors; j++)
+                                        {
+                                           if (!strcmp(col, cmap[j].str))
+                                             {
+                                                r = (unsigned char)cmap[j].r;
+                                                g = (unsigned char)cmap[j].g;
+                                                b = (unsigned char)cmap[j].b;
+                                               *ptr = (0xff << 24) | (r << 16) | (g << 8) | b;
+                                               ptr++;
+                                               count++;
+                                                break;
+                                             }
+                                        }
+                                   }
+                              }
+                         }
+                    }
+               }
+          }
+        /* Scan in line from XPM file */
+        if ((!comment) && (quote) && (c != '"'))
+          {
+             if (c < 32) c = 32;
+             else if (c > 127) c = 127;
+            if (c =='\\')
+              {
+                 if (++backslash < 2)
+                   line[i++] = c;
+                 else
+                   backslash = 0;
+              }
+            else
+              {
+                 backslash = 0;
+                 line[i++] = c;
+              }
+          }
+        if (i >= lsz)
+          {
+             lsz += 256;
+             tl = realloc(line, lsz);
+             if (!tl) break;
+            line = tl;
+          }
+        if (((ptr) && ((ptr - evas_cache_image_pixels(ie)) >= (w * h * sizeof(DATA32)))) ||
+            ((context > 1) && (count >= pixels)))
+         break;
+     }
+
+   if (cmap) free(cmap);
+   if (line) free(line);
+   if (f) fclose(f);
+
+   xpm_parse_done();
+
+   return 1;
+}
+
+
+int
+evas_image_load_file_head_xpm(Image_Entry *ie, const char *file, const char *key)
+{
+  return evas_image_load_file_xpm(ie, file, key, 0);
+}
+
+int
+evas_image_load_file_data_xpm(Image_Entry *ie, const char *file, const char *key)
+{
+  return evas_image_load_file_xpm(ie, file, key, 1);
+}
+
+
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_load_xpm_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_LOADER,
+     "xpm",
+     "none"
+};
diff --git a/src/modules/savers/.cvsignore b/src/modules/savers/.cvsignore
new file mode 100644 (file)
index 0000000..282522d
--- /dev/null
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/modules/savers/Makefile.am b/src/modules/savers/Makefile.am
new file mode 100644 (file)
index 0000000..f1fdb88
--- /dev/null
@@ -0,0 +1,23 @@
+MAINTAINERCLEANFILES = Makefile.in
+
+if BUILD_LOADER_EDB
+edb_subdir = edb
+endif
+
+if BUILD_LOADER_EET
+eet_subdir = eet
+endif
+
+if BUILD_SAVER_JPEG
+jpeg_subdir = jpeg
+endif
+
+if BUILD_LOADER_PNG
+png_subdir = png
+endif
+
+if BUILD_LOADER_TIFF
+tiff_subdir = tiff
+endif
+
+SUBDIRS = $(edb_subdir) $(eet_subdir) $(jpeg_subdir) $(png_subdir) $(tiff_subdir)
diff --git a/src/modules/savers/edb/.cvsignore b/src/modules/savers/edb/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/savers/edb/Makefile.am b/src/modules/savers/edb/Makefile.am
new file mode 100644 (file)
index 0000000..f3a6509
--- /dev/null
@@ -0,0 +1,20 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS           = -I. \
+                        -I$(top_srcdir)/src/lib \
+                        -I$(top_srcdir)/src/lib/include \
+                        @FREETYPE_CFLAGS@ @EDB_CFLAGS@
+
+pkgdir                 = $(libdir)/evas/modules/savers/edb/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES        = module.la
+
+module_la_SOURCES      = evas_image_save_edb.c
+
+module_la_LIBADD       = @EDB_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS      = @lt_no_undefined@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
+
+EXTRA_DIST             = evas_image_save_edb.c
diff --git a/src/modules/savers/edb/evas_image_save_edb.c b/src/modules/savers/edb/evas_image_save_edb.c
new file mode 100644 (file)
index 0000000..d2e8c9a
--- /dev/null
@@ -0,0 +1,40 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include <Edb.h>
+#include <zlib.h>
+
+int evas_image_save_file_edb(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+
+Evas_Image_Save_Func evas_image_save_edb_func =
+{
+   evas_image_save_file_edb
+};
+
+int
+evas_image_save_file_edb(RGBA_Image *im, const char *file, const char *key, int quality, int compress)
+{
+   return 0;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_save_edb_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_SAVER,
+     "edb",
+     "none"
+};
diff --git a/src/modules/savers/eet/.cvsignore b/src/modules/savers/eet/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/savers/eet/Makefile.am b/src/modules/savers/eet/Makefile.am
new file mode 100644 (file)
index 0000000..f7cf97f
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@EET_CFLAGS@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/savers/eet/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_save_eet.c
+
+module_la_LIBADD = @EET_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/savers/eet/evas_image_save_eet.c b/src/modules/savers/eet/evas_image_save_eet.c
new file mode 100644 (file)
index 0000000..5c672b1
--- /dev/null
@@ -0,0 +1,74 @@
+#ifdef HAVE_CONFIG_H
+# include "config.h"  /* so that EAPI in Eet.h is correctly defined */
+#endif
+
+#include <Eet.h>
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+int evas_image_save_file_eet(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+
+Evas_Image_Save_Func evas_image_save_eet_func =
+{
+   evas_image_save_file_eet
+};
+
+int
+evas_image_save_file_eet(RGBA_Image *im, const char *file, const char *key, int quality, int compress)
+{
+   Eet_File            *ef;
+   int alpha = 0, lossy = 0, ok = 0;
+   DATA32   *data;
+
+   if (!im || !im->image.data || !file)
+      return 0;
+
+   ef = eet_open((char *)file, EET_FILE_MODE_READ_WRITE);
+   if (!ef) ef = eet_open((char *)file, EET_FILE_MODE_WRITE);
+   if (!ef) return 0;
+   if ((quality <= 100) || (compress < 0)) lossy = 1;
+   if (im->cache_entry.flags.alpha) alpha = 1;
+//   if (alpha)
+//     {
+//       data = malloc(im->image->w * im->image->h * sizeof(DATA32));
+//       if (!data)
+//      {
+//        eet_close(ef);
+//        return 0;
+//      }
+//       memcpy(data, im->image->data, im->image->w * im->image->h * sizeof(DATA32));
+//       evas_common_convert_argb_unpremul(data, im->image->w * im->image->h);
+//     }
+//   else
+       data = im->image.data;
+   ok = eet_data_image_write(ef, (char *)key, data,
+                            im->cache_entry.w, im->cache_entry.h, alpha, compress,
+                            quality, lossy);
+//   if (alpha)
+//     free(data);
+   eet_close(ef);
+   return ok;
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_save_eet_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_SAVER,
+     "eet",
+     "none"
+};
diff --git a/src/modules/savers/jpeg/.cvsignore b/src/modules/savers/jpeg/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/savers/jpeg/Makefile.am b/src/modules/savers/jpeg/Makefile.am
new file mode 100644 (file)
index 0000000..640c1f7
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS= \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@jpeg_cflags@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/savers/jpeg/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_save_jpeg.c
+
+module_la_LIBADD = @jpeg_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/savers/jpeg/evas_image_save_jpeg.c b/src/modules/savers/jpeg/evas_image_save_jpeg.c
new file mode 100644 (file)
index 0000000..7ccb508
--- /dev/null
@@ -0,0 +1,139 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include <stdio.h>
+#include <jpeglib.h>
+#include <setjmp.h>
+
+int evas_image_save_file_jpeg(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+
+Evas_Image_Save_Func evas_image_save_jpeg_func =
+{
+   evas_image_save_file_jpeg
+};
+
+struct _JPEG_error_mgr
+{
+   struct     jpeg_error_mgr pub;
+   jmp_buf    setjmp_buffer;
+};
+typedef struct _JPEG_error_mgr *emptr;
+
+static void _JPEGFatalErrorHandler(j_common_ptr cinfo);
+static void
+_JPEGFatalErrorHandler(j_common_ptr cinfo)
+{
+   emptr errmgr;
+   
+   errmgr = (emptr) cinfo->err;
+   longjmp(errmgr->setjmp_buffer, 1);
+   return;
+}
+
+static void _JPEGErrorHandler(j_common_ptr cinfo);
+static void
+_JPEGErrorHandler(j_common_ptr cinfo)
+{
+   emptr errmgr;
+   
+   errmgr = (emptr) cinfo->err;
+   return;
+}
+
+static void _JPEGErrorHandler2(j_common_ptr cinfo, int msg_level);
+static void
+_JPEGErrorHandler2(j_common_ptr cinfo, int msg_level)
+{
+   emptr errmgr;
+   
+   errmgr = (emptr) cinfo->err;
+   return;
+   msg_level = 0;
+}
+
+static int
+save_image_jpeg(RGBA_Image *im, const char *file, int quality)
+{
+   struct _JPEG_error_mgr jerr;
+   struct jpeg_compress_struct cinfo;
+   FILE               *f;
+   DATA8              *buf;
+   DATA32             *ptr;
+   JSAMPROW           *jbuf;
+   int                 y = 0;
+   int                 i, j;
+
+   if (!im || !im->image.data || !file)
+      return 0;
+   
+   buf = alloca(im->cache_entry.w * 3 * sizeof(DATA8));
+   f = fopen(file, "wb");
+   if (!f)
+     {
+       return 0;
+     }
+   jerr.pub.error_exit = _JPEGFatalErrorHandler;
+   jerr.pub.emit_message = _JPEGErrorHandler2;
+   jerr.pub.output_message = _JPEGErrorHandler;
+   cinfo.err = jpeg_std_error(&(jerr.pub));
+   if (sigsetjmp(jerr.setjmp_buffer, 1))
+     {
+       jpeg_destroy_compress(&cinfo);
+       fclose(f);
+       return 0;
+     }
+   jpeg_create_compress(&cinfo);
+   jpeg_stdio_dest(&cinfo, f);
+   cinfo.image_width = im->cache_entry.w;
+   cinfo.image_height = im->cache_entry.h;
+   cinfo.input_components = 3;
+   cinfo.in_color_space = JCS_RGB;
+   jpeg_set_defaults(&cinfo);
+   jpeg_set_quality(&cinfo, quality, TRUE);
+   jpeg_start_compress(&cinfo, TRUE);
+   ptr = im->image.data;
+   while (cinfo.next_scanline < cinfo.image_height)
+     {
+       for (j = 0, i = 0; i < im->cache_entry.w; i++)
+         {
+            buf[j++] = ((*ptr) >> 16) & 0xff;
+            buf[j++] = ((*ptr) >> 8) & 0xff;
+            buf[j++] = ((*ptr)) & 0xff;
+            ptr++;
+         }
+       jbuf = (JSAMPROW *) (&buf);
+       jpeg_write_scanlines(&cinfo, jbuf, 1);
+       y++;
+     }
+   jpeg_finish_compress(&cinfo);
+   jpeg_destroy_compress(&cinfo);
+   fclose(f);
+   return 1;
+}
+
+int evas_image_save_file_jpeg(RGBA_Image *im, const char *file, const char *key, int quality, int compress)
+{
+   return save_image_jpeg(im, file, quality);
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_save_jpeg_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_SAVER,
+     "jpeg",
+     "none"
+};
diff --git a/src/modules/savers/png/.cvsignore b/src/modules/savers/png/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/savers/png/Makefile.am b/src/modules/savers/png/Makefile.am
new file mode 100644 (file)
index 0000000..c8b4790
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@PNG_CFLAGS@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/savers/png/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_save_png.c
+
+module_la_LIBADD = @PNG_LIBS@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/savers/png/evas_image_save_png.c b/src/modules/savers/png/evas_image_save_png.c
new file mode 100644 (file)
index 0000000..67594cd
--- /dev/null
@@ -0,0 +1,164 @@
+#ifndef _GNU_SOURCE
+#define _GNU_SOURCE
+#endif
+
+#include <png.h>
+#include <setjmp.h>
+
+#include "evas_common.h"
+#include "evas_private.h"
+
+int evas_image_save_file_png(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+
+Evas_Image_Save_Func evas_image_save_png_func =
+{
+   evas_image_save_file_png
+};
+
+static int
+save_image_png(RGBA_Image *im, const char *file, int compress, int interlace)
+{
+   FILE               *f;
+   png_structp         png_ptr;
+   png_infop           info_ptr;
+   DATA32             *ptr, *data = NULL;
+   int                 x, y, j;
+   png_bytep           row_ptr, png_data = NULL;
+   png_color_8         sig_bit;
+   int                 num_passes = 1, pass;
+
+   if (!im || !im->image.data || !file)
+      return 0;
+   
+   f = fopen(file, "wb");
+   if (!f) return 0;
+   
+   png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+   if (!png_ptr)
+     {
+       fclose(f);
+       return 0;
+     }
+   info_ptr = png_create_info_struct(png_ptr);
+   if (info_ptr == NULL)
+     {
+       fclose(f);
+       png_destroy_write_struct(&png_ptr, (png_infopp) NULL);
+       return 0;
+     }
+   if (setjmp(png_ptr->jmpbuf))
+     {
+       fclose(f);
+       png_destroy_write_struct(&png_ptr, (png_infopp) & info_ptr);
+       png_destroy_info_struct(png_ptr, (png_infopp) & info_ptr);
+       return 0;
+     }
+   
+   if (interlace)
+     {
+#ifdef PNG_WRITE_INTERLACING_SUPPORTED
+       png_ptr->interlaced = PNG_INTERLACE_ADAM7;
+       num_passes = png_set_interlace_handling(png_ptr);
+#endif
+     }
+   
+   if (im->cache_entry.flags.alpha)
+     {
+       data = malloc(im->cache_entry.w * im->cache_entry.h * sizeof(DATA32));
+       if (!data)
+         {
+           fclose(f);
+           png_destroy_write_struct(&png_ptr, (png_infopp) & info_ptr);
+           png_destroy_info_struct(png_ptr, (png_infopp) & info_ptr);
+           return 0;
+         }
+       memcpy(data, im->image.data, im->cache_entry.w * im->cache_entry.h * sizeof(DATA32));
+       evas_common_convert_argb_unpremul(data, im->cache_entry.w * im->cache_entry.h);
+       png_init_io(png_ptr, f);
+        png_set_IHDR(png_ptr, info_ptr, im->cache_entry.w, im->cache_entry.h, 8,
+                    PNG_COLOR_TYPE_RGB_ALPHA, png_ptr->interlaced,
+                    PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
+#ifdef WORDS_BIGENDIAN
+       png_set_swap_alpha(png_ptr);
+#else
+       png_set_bgr(png_ptr);
+#endif
+     }
+   else
+     {
+       data = im->image.data;
+       png_init_io(png_ptr, f);
+       png_set_IHDR(png_ptr, info_ptr, im->cache_entry.w, im->cache_entry.h, 8,
+                    PNG_COLOR_TYPE_RGB, png_ptr->interlaced,
+                    PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE);
+       png_data = alloca(im->cache_entry.w * 3 * sizeof(char));
+     }
+   sig_bit.red = 8;
+   sig_bit.green = 8;
+   sig_bit.blue = 8;
+   sig_bit.alpha = 8;
+   png_set_sBIT(png_ptr, info_ptr, &sig_bit);
+   
+   png_set_compression_level(png_ptr, compress);
+   png_write_info(png_ptr, info_ptr);
+   png_set_shift(png_ptr, &sig_bit);
+   png_set_packing(png_ptr);
+
+   for (pass = 0; pass < num_passes; pass++)
+     {
+       ptr = data;
+       
+       for (y = 0; y < im->cache_entry.h; y++)
+         {
+            if (im->cache_entry.flags.alpha)
+              row_ptr = (png_bytep) ptr;
+            else
+              {
+                 for (j = 0, x = 0; x < im->cache_entry.w; x++)
+                   {
+                      png_data[j++] = (ptr[x] >> 16) & 0xff;
+                      png_data[j++] = (ptr[x] >> 8) & 0xff;
+                      png_data[j++] = (ptr[x]) & 0xff;
+                   }
+                 row_ptr = (png_bytep) png_data;
+              }
+            png_write_rows(png_ptr, &row_ptr, 1);
+            ptr += im->cache_entry.w;
+         }
+     }
+   png_write_end(png_ptr, info_ptr);
+   png_destroy_write_struct(&png_ptr, (png_infopp) & info_ptr);
+   png_destroy_info_struct(png_ptr, (png_infopp) & info_ptr);
+   
+   if (im->cache_entry.flags.alpha)
+     free(data);
+   fclose(f);
+   return 1;
+}
+
+int evas_image_save_file_png(RGBA_Image *im, const char *file, const char *key, int quality, int compress)
+{
+   return save_image_png(im, file, compress, 0);
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_save_png_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_SAVER,
+     "png",
+     "none"
+};
diff --git a/src/modules/savers/tiff/.cvsignore b/src/modules/savers/tiff/.cvsignore
new file mode 100644 (file)
index 0000000..a51c966
--- /dev/null
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.lo
+*.la
\ No newline at end of file
diff --git a/src/modules/savers/tiff/Makefile.am b/src/modules/savers/tiff/Makefile.am
new file mode 100644 (file)
index 0000000..776d736
--- /dev/null
@@ -0,0 +1,22 @@
+
+MAINTAINERCLEANFILES = Makefile.in
+
+AM_CPPFLAGS = \
+-I. \
+-I$(top_srcdir)/src/lib \
+-I$(top_srcdir)/src/lib/include \
+@FREETYPE_CFLAGS@ \
+@tiff_cflags@
+
+AM_CFLAGS = @WIN32_CFLAGS@
+
+pkgdir = $(libdir)/evas/modules/savers/tiff/$(MODULE_ARCH)
+
+pkg_LTLIBRARIES = module.la
+
+module_la_SOURCES = evas_image_save_tiff.c
+
+module_la_LIBADD = @tiff_libs@ $(top_builddir)/src/lib/libevas.la
+module_la_LDFLAGS = @lt_no_undefined@ @lt_enable_auto_import@ -module -avoid-version
+module_la_LIBTOOLFLAGS = --tag=disable-static
+module_la_DEPENDENCIES = $(top_builddir)/config.h
diff --git a/src/modules/savers/tiff/evas_image_save_tiff.c b/src/modules/savers/tiff/evas_image_save_tiff.c
new file mode 100644 (file)
index 0000000..bacf7da
--- /dev/null
@@ -0,0 +1,130 @@
+#include "evas_common.h"
+#include "evas_private.h"
+
+#include <tiffio.h>
+
+int evas_image_save_file_tiff(RGBA_Image *im, const char *file, const char *key, int quality, int compress);
+
+Evas_Image_Save_Func evas_image_save_tiff_func =
+{
+   evas_image_save_file_tiff
+};
+
+static int
+save_image_tiff(RGBA_Image *im, const char *file, int compress, int interlace)
+{
+   TIFF               *tif = NULL;
+   uint8              *buf = NULL;
+   DATA32              pixel;
+   DATA32             *data;
+   uint32              x, y;
+   uint8               r, g, b, a = 0;
+   int                 i = 0;
+   int                 has_alpha;
+
+   if (!im || !im->image.data || !file)
+      return 0;
+
+   has_alpha = im->cache_entry.flags.alpha;
+   data = im->image.data;
+
+   tif = TIFFOpen(file, "w");
+   if (!tif)
+      return 0;
+
+   /* None of the TIFFSetFields are checked for errors, but since they */
+   /* shouldn't fail, this shouldn't be a problem */
+
+   TIFFSetField(tif, TIFFTAG_IMAGELENGTH, im->cache_entry.h);
+   TIFFSetField(tif, TIFFTAG_IMAGEWIDTH, im->cache_entry.w);
+   TIFFSetField(tif, TIFFTAG_PHOTOMETRIC, PHOTOMETRIC_RGB);
+   TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
+   TIFFSetField(tif, TIFFTAG_ORIENTATION, ORIENTATION_TOPLEFT);
+   TIFFSetField(tif, TIFFTAG_RESOLUTIONUNIT, RESUNIT_NONE);
+
+   /* By default uses patent-free use COMPRESSION_DEFLATE,
+    * another lossless compression technique */
+   TIFFSetField(tif, TIFFTAG_COMPRESSION, COMPRESSION_DEFLATE);
+   
+   if (has_alpha)
+     {
+        uint16 extras[] = { EXTRASAMPLE_ASSOCALPHA };
+        TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 4);
+        TIFFSetField(tif, TIFFTAG_EXTRASAMPLES, 1, extras);
+     }
+   else
+     {
+        TIFFSetField(tif, TIFFTAG_SAMPLESPERPIXEL, 3);
+     }
+
+   TIFFSetField(tif, TIFFTAG_BITSPERSAMPLE, 8);
+   TIFFSetField(tif, TIFFTAG_ROWSPERSTRIP, TIFFDefaultStripSize(tif, 0));
+
+   buf = (uint8 *) _TIFFmalloc(TIFFScanlineSize(tif));
+   if (!buf)
+     {
+        TIFFClose(tif);
+        return 0;
+     }
+
+   for (y = 0; y < im->cache_entry.h; y++)
+     {
+        i = 0;
+        for (x = 0; x < im->cache_entry.w; x++)
+          {
+             pixel = data[(y * im->cache_entry.w) + x];
+
+             r = (pixel >> 16) & 0xff;
+             g = (pixel >> 8) & 0xff;
+             b = pixel & 0xff;
+             if (has_alpha)
+                a = (pixel >> 24) & 0xff;
+
+             /* This might be endian dependent */
+             buf[i++] = r;
+             buf[i++] = g;
+             buf[i++] = b;
+             if (has_alpha)
+                buf[i++] = a;
+          }
+
+        if (!TIFFWriteScanline(tif, buf, y, 0))
+          {
+             _TIFFfree(buf);
+             TIFFClose(tif);
+             return 0;
+          }
+     }
+
+   _TIFFfree(buf);
+   TIFFClose(tif);
+
+   return 1;
+}
+
+int evas_image_save_file_tiff(RGBA_Image *im, const char *file, const char *key, int quality, int compress)
+{
+   return save_image_tiff(im, file, compress, 0);
+}
+
+EAPI int
+module_open(Evas_Module *em)
+{
+   if (!em) return 0;
+   em->functions = (void *)(&evas_image_save_tiff_func);
+   return 1;
+}
+
+EAPI void
+module_close(void)
+{
+   
+}
+
+EAPI Evas_Module_Api evas_modapi =
+{
+   EVAS_MODULE_API_VERSION,
+     EVAS_MODULE_TYPE_IMAGE_SAVER,
+     "tiff",
+     "none"
+};