Large merge with a lot of manual edits.

Test for grid renderer are failing atm.

Merge commit 'e66d00762754d1204204ccf122955116e5e9d017' into harfbuzz

Conflicts:
	include/mapnik/font_engine_freetype.hpp
	src/agg/process_shield_symbolizer.cpp
	src/agg/process_text_symbolizer.cpp
	src/font_engine_freetype.cpp
	src/grid/process_shield_symbolizer.cpp
	src/grid/process_text_symbolizer.cpp
	src/text_symbolizer.cpp
	src/xml_tree.cpp
This commit is contained in:
Hermann Kraus 2013-03-20 03:47:20 +01:00
commit 7d34fb489a
68 changed files with 755 additions and 628 deletions

View file

@ -8,6 +8,9 @@ For a complete change history, see the git log.
## Future ## Future
- Added `text-halo-rasterizer` property. Set to `fast` for lower quality but faster
halo rendering (#1298)
- Added ability to access style list from map by (name,obj) in python (#1725) - Added ability to access style list from map by (name,obj) in python (#1725)
- Added `is_solid` method to python mapnik.Image and mapnik.ImageView classes (#1728) - Added `is_solid` method to python mapnik.Image and mapnik.ImageView classes (#1728)

View file

@ -340,6 +340,11 @@ void export_text_placement()
.value("CAPITALIZE",CAPITALIZE) .value("CAPITALIZE",CAPITALIZE)
; ;
enumeration_<halo_rasterizer_e>("halo_rasterizer")
.value("FULL",HALO_RASTERIZER_FULL)
.value("FAST",HALO_RASTERIZER_FAST)
;
class_<text_symbolizer>("TextSymbolizer", class_<text_symbolizer>("TextSymbolizer",
init<>()) init<>())
.def(init<expression_ptr, std::string const&, unsigned, color const&>()) .def(init<expression_ptr, std::string const&, unsigned, color const&>())
@ -363,6 +368,10 @@ void export_text_placement()
&text_symbolizer::clip, &text_symbolizer::clip,
&text_symbolizer::set_clip, &text_symbolizer::set_clip,
"Set/get the text geometry's clipping status") "Set/get the text geometry's clipping status")
.add_property("halo_rasterizer",
&text_symbolizer::get_halo_rasterizer,
&text_symbolizer::set_halo_rasterizer,
"Set/get the halo rasterizer method")
; ;

View file

@ -27,7 +27,9 @@
#include <mapnik/config.hpp> #include <mapnik/config.hpp>
#include <mapnik/font_set.hpp> #include <mapnik/font_set.hpp>
#include <mapnik/text/face.hpp> #include <mapnik/text/face.hpp>
#include <mapnik/text_symbolizer.hpp>
#include <mapnik/noncopyable.hpp> #include <mapnik/noncopyable.hpp>
#include <mapnik/value_types.hpp>
// freetype2 // freetype2
extern "C" extern "C"
@ -118,7 +120,7 @@ public:
face_set_ptr get_face_set(std::string const& name, boost::optional<font_set> fset); face_set_ptr get_face_set(std::string const& name, boost::optional<font_set> fset);
stroker_ptr get_stroker() { return stroker_; } inline stroker_ptr get_stroker() { return stroker_; }
private: private:
font_engine_type & engine_; font_engine_type & engine_;

View file

@ -4,6 +4,9 @@
//mapnik //mapnik
#include <mapnik/text/placement_finder.hpp> #include <mapnik/text/placement_finder.hpp>
#include <mapnik/image_compositing.hpp> #include <mapnik/image_compositing.hpp>
#include <mapnik/text_symbolizer.hpp>
//TODO: Find a better place for halo_rasterizer_e!
//TODO: Halo rasterizer selection should go to text_properties because it might make sense to use a different rasterizer for different fonts
//boost //boost
#include <boost/utility.hpp> #include <boost/utility.hpp>
@ -24,7 +27,7 @@ namespace mapnik
class text_renderer : private boost::noncopyable class text_renderer : private boost::noncopyable
{ {
public: public:
text_renderer (stroker &stroker, composite_mode_e comp_op = src_over, double scale_factor=1.0); text_renderer (halo_rasterizer_e rasterizer, composite_mode_e comp_op = src_over, double scale_factor=1.0, stroker_ptr stroker=stroker_ptr());
protected: protected:
struct glyph_t : boost::noncopyable struct glyph_t : boost::noncopyable
{ {
@ -40,10 +43,12 @@ protected:
void prepare_glyphs(glyph_positions_ptr pos); void prepare_glyphs(glyph_positions_ptr pos);
halo_rasterizer_e rasterizer_;
composite_mode_e comp_op_; composite_mode_e comp_op_;
double scale_factor_; double scale_factor_;
boost::ptr_vector<glyph_t> glyphs_; boost::ptr_vector<glyph_t> glyphs_;
stroker & stroker_; stroker_ptr stroker_;
}; };
template <typename T> template <typename T>
@ -51,11 +56,14 @@ class agg_text_renderer : public text_renderer
{ {
public: public:
typedef T pixmap_type; typedef T pixmap_type;
agg_text_renderer (pixmap_type & pixmap, stroker &stroker, agg_text_renderer (pixmap_type & pixmap, halo_rasterizer_e rasterizer,
composite_mode_e comp_op = src_over, double scale_factor=1.0); composite_mode_e comp_op = src_over,
double scale_factor=1.0,
stroker_ptr stroker=stroker_ptr());
void render(glyph_positions_ptr pos); void render(glyph_positions_ptr pos);
private: private:
pixmap_type & pixmap_; pixmap_type & pixmap_;
void render_halo(FT_Bitmap *bitmap, unsigned rgba, int x, int y, int halo_radius, double opacity);
}; };
template <typename T> template <typename T>
@ -63,12 +71,12 @@ class grid_text_renderer : public text_renderer
{ {
public: public:
typedef T pixmap_type; typedef T pixmap_type;
grid_text_renderer (pixmap_type & pixmap, stroker &stroker, grid_text_renderer (pixmap_type & pixmap, composite_mode_e comp_op = src_over,
composite_mode_e comp_op = src_over, double scale_factor=1.0); double scale_factor=1.0);
void render(glyph_positions_ptr pos, int feature_id, double min_radius=1.0); void render(glyph_positions_ptr pos, value_integer feature_id);
private: private:
pixmap_type & pixmap_; pixmap_type & pixmap_;
void render_bitmap_id(FT_Bitmap *bitmap, int feature_id, int x, int y); void render_halo_id(FT_Bitmap *bitmap, mapnik::value_integer feature_id, int x, int y, int halo_radius);
}; };
} }

View file

@ -46,6 +46,15 @@
namespace mapnik namespace mapnik
{ {
enum halo_rasterizer_enum
{
HALO_RASTERIZER_FULL,
HALO_RASTERIZER_FAST,
halo_rasterizer_enum_MAX
};
DEFINE_ENUM(halo_rasterizer_e, halo_rasterizer_enum);
struct MAPNIK_DECL text_symbolizer : public symbolizer_base struct MAPNIK_DECL text_symbolizer : public symbolizer_base
{ {
// Note - we do not use boost::make_shared below as VC2008 and VC2010 are // Note - we do not use boost::make_shared below as VC2008 and VC2010 are
@ -100,6 +109,8 @@ struct MAPNIK_DECL text_symbolizer : public symbolizer_base
color const& get_halo_fill() const func_deprecated; color const& get_halo_fill() const func_deprecated;
void set_halo_radius(double radius); void set_halo_radius(double radius);
double get_halo_radius() const func_deprecated; double get_halo_radius() const func_deprecated;
void set_halo_rasterizer(halo_rasterizer_e rasterizer_p);
halo_rasterizer_e get_halo_rasterizer() const;
void set_label_placement(label_placement_e label_p); void set_label_placement(label_placement_e label_p);
label_placement_e get_label_placement() const func_deprecated; label_placement_e get_label_placement() const func_deprecated;
void set_vertical_alignment(vertical_alignment_e valign); void set_vertical_alignment(vertical_alignment_e valign);
@ -131,6 +142,7 @@ struct MAPNIK_DECL text_symbolizer : public symbolizer_base
bool largest_bbox_only() const; bool largest_bbox_only() const;
private: private:
text_placements_ptr placement_options_; text_placements_ptr placement_options_;
halo_rasterizer_e halo_rasterizer_;
}; };
} }

View file

@ -41,7 +41,7 @@ void agg_renderer<T>::process(shield_symbolizer const& sym,
t_, font_manager_, *detector_, t_, font_manager_, *detector_,
query_extent_); query_extent_);
agg_text_renderer<T> ren(*current_buffer_, *(font_manager_.get_stroker()), sym.comp_op(), scale_factor_); agg_text_renderer<T> ren(*current_buffer_, sym.get_halo_rasterizer(), sym.comp_op(), scale_factor_, font_manager_.get_stroker());
placements_list const& placements = helper.get(); placements_list const& placements = helper.get();
BOOST_FOREACH(glyph_positions_ptr glyphs, placements) BOOST_FOREACH(glyph_positions_ptr glyphs, placements)

View file

@ -42,7 +42,7 @@ void agg_renderer<T>::process(text_symbolizer const& sym,
t_, font_manager_, *detector_, t_, font_manager_, *detector_,
query_extent_); query_extent_);
agg_text_renderer<T> ren(*current_buffer_, *(font_manager_.get_stroker()), sym.comp_op(), scale_factor_); agg_text_renderer<T> ren(*current_buffer_, sym.get_halo_rasterizer(), sym.comp_op(), scale_factor_, font_manager_.get_stroker());
placements_list const& placements = helper.get(); placements_list const& placements = helper.get();
BOOST_FOREACH(glyph_positions_ptr glyphs, placements) BOOST_FOREACH(glyph_positions_ptr glyphs, placements)

View file

@ -48,7 +48,7 @@ void grid_renderer<T>::process(shield_symbolizer const& sym,
t_, font_manager_, *detector_, t_, font_manager_, *detector_,
query_extent_); query_extent_);
grid_text_renderer<T> ren(pixmap_, *(font_manager_.get_stroker()), sym.comp_op(), scale_factor_); grid_text_renderer<T> ren(pixmap_, sym.comp_op(), scale_factor_);
placements_list const& placements = helper.get(); placements_list const& placements = helper.get();
if (!placements.size()) return; if (!placements.size()) return;
@ -60,7 +60,7 @@ void grid_renderer<T>::process(shield_symbolizer const& sym,
*(glyphs->marker()->marker), *(glyphs->marker()->marker),
glyphs->marker()->transform, glyphs->marker()->transform,
sym.get_opacity(), sym.comp_op()); sym.get_opacity(), sym.comp_op());
ren.render(glyphs, feature.id(), 2); ren.render(glyphs, feature.id());
} }
pixmap_.add_feature(feature); pixmap_.add_feature(feature);
} }

View file

@ -41,13 +41,13 @@ void grid_renderer<T>::process(text_symbolizer const& sym,
t_, font_manager_, *detector_, t_, font_manager_, *detector_,
query_extent_); query_extent_);
grid_text_renderer<T> ren(pixmap_, *(font_manager_.get_stroker()), sym.comp_op(), scale_factor_); grid_text_renderer<T> ren(pixmap_, sym.comp_op(), scale_factor_);
placements_list const& placements = helper.get(); placements_list const& placements = helper.get();
if (!placements.size()) return; if (!placements.size()) return;
BOOST_FOREACH(glyph_positions_ptr glyphs, placements) BOOST_FOREACH(glyph_positions_ptr glyphs, placements)
{ {
ren.render(glyphs, feature.id(), 2); ren.render(glyphs, feature.id());
} }
pixmap_.add_feature(feature); pixmap_.add_feature(feature);
} }

View file

@ -1159,6 +1159,9 @@ void map_parser::parse_text_symbolizer(rule & rule, xml_node const& sym)
text_symbolizer text_symbol = text_symbolizer(placement_finder); text_symbolizer text_symbol = text_symbolizer(placement_finder);
parse_symbolizer_base(text_symbol, sym); parse_symbolizer_base(text_symbol, sym);
optional<halo_rasterizer_e> halo_rasterizer = sym.get_opt_attr<halo_rasterizer_e>("halo-rasterizer");
if (halo_rasterizer) text_symbol.set_halo_rasterizer(*halo_rasterizer);
rule.append(text_symbol); rule.append(text_symbol);
} }
catch (const config_error & ex) catch (const config_error & ex)

View file

@ -254,6 +254,11 @@ public:
add_font_attributes( sym_node, sym); add_font_attributes( sym_node, sym);
serialize_symbolizer_base(sym_node, sym); serialize_symbolizer_base(sym_node, sym);
text_symbolizer dfl;
if (sym.get_halo_rasterizer() != dfl.get_halo_rasterizer() || explicit_defaults_)
{
set_attr(sym_node, "halo-rasterizer", sym.get_halo_rasterizer());
}
} }
void operator () ( building_symbolizer const& sym ) void operator () ( building_symbolizer const& sym )

View file

@ -7,8 +7,9 @@
namespace mapnik namespace mapnik
{ {
text_renderer::text_renderer (stroker &stroker, composite_mode_e comp_op, double scale_factor) text_renderer::text_renderer (halo_rasterizer_e rasterizer, composite_mode_e comp_op, double scale_factor, stroker_ptr stroker)
: comp_op_(comp_op), : rasterizer_(rasterizer),
comp_op_(comp_op),
scale_factor_(scale_factor), scale_factor_(scale_factor),
stroker_(stroker) stroker_(stroker)
{} {}
@ -74,9 +75,12 @@ void composite_bitmap(T & pixmap, FT_Bitmap *bitmap, unsigned rgba, int x, int y
} }
template <typename T> template <typename T>
agg_text_renderer<T>::agg_text_renderer (pixmap_type & pixmap, stroker &stroker, agg_text_renderer<T>::agg_text_renderer (pixmap_type & pixmap,
composite_mode_e comp_op, double scale_factor) halo_rasterizer_e rasterizer,
: text_renderer(stroker, comp_op, scale_factor), pixmap_(pixmap) composite_mode_e comp_op,
double scale_factor,
stroker_ptr stroker)
: text_renderer(rasterizer, comp_op, scale_factor, stroker), pixmap_(pixmap)
{ {
} }
@ -107,26 +111,46 @@ void agg_text_renderer<T>::render(glyph_positions_ptr pos)
halo_radius = itr->properties->halo_radius; halo_radius = itr->properties->halo_radius;
//make sure we've got reasonable values. //make sure we've got reasonable values.
if (halo_radius <= 0.0 || halo_radius > 1024.0) break; if (halo_radius <= 0.0 || halo_radius > 1024.0) break;
stroker_.init(halo_radius); stroker_->init(halo_radius);
} }
FT_Glyph g; FT_Glyph g;
error = FT_Glyph_Copy(itr->image, &g); error = FT_Glyph_Copy(itr->image, &g);
if (!error) if (!error)
{ {
FT_Glyph_Transform(g, 0, &start); FT_Glyph_Transform(g,0,&start);
FT_Glyph_Stroke(&g, stroker_.get(), 1); if (rasterizer_ == HALO_RASTERIZER_FULL)
error = FT_Glyph_To_Bitmap(&g, FT_RENDER_MODE_NORMAL, 0, 1);
if (!error)
{ {
FT_BitmapGlyph bit = (FT_BitmapGlyph)g; FT_Glyph_Stroke(&g, stroker_->get(), 1);
composite_bitmap(pixmap_, &bit->bitmap, format->halo_fill.rgba(), error = FT_Glyph_To_Bitmap(&g, FT_RENDER_MODE_NORMAL, 0, 1);
bit->left, if (!error)
height - bit->top, {
format->text_opacity, FT_BitmapGlyph bit = (FT_BitmapGlyph)g;
comp_op_); composite_bitmap(pixmap_,
&bit->bitmap,
format->halo_fill.rgba(),
bit->left,
height - bit->top,
format->text_opacity,
comp_op_);
}
}
else
{
error = FT_Glyph_To_Bitmap(&g, FT_RENDER_MODE_NORMAL, 0, 1);
if (!error)
{
FT_BitmapGlyph bit = (FT_BitmapGlyph)g;
render_halo(&bit->bitmap,
format->halo_fill.rgba(),
bit->left,
height - bit->top,
halo_radius,
format->text_opacity);
}
} }
} }
FT_Done_Glyph(g); FT_Done_Glyph(g);
} }
//render actual text //render actual text
@ -155,7 +179,7 @@ void agg_text_renderer<T>::render(glyph_positions_ptr pos)
template <typename T> template <typename T>
void grid_text_renderer<T>::render(glyph_positions_ptr pos, int feature_id, double min_radius) void grid_text_renderer<T>::render(glyph_positions_ptr pos, value_integer feature_id)
{ {
FT_Error error; FT_Error error;
FT_Vector start; FT_Vector start;
@ -166,32 +190,43 @@ void grid_text_renderer<T>::render(glyph_positions_ptr pos, int feature_id, doub
// now render transformed glyphs // now render transformed glyphs
typename boost::ptr_vector<glyph_t>::iterator itr, end = glyphs_.end(); typename boost::ptr_vector<glyph_t>::iterator itr, end = glyphs_.end();
double halo_radius = 0.;
for (itr = glyphs_.begin(); itr != end; ++itr) for (itr = glyphs_.begin(); itr != end; ++itr)
{ {
stroker_.init(std::max(itr->properties->halo_radius, min_radius)); if (itr->properties)
{
halo_radius = itr->properties->halo_radius;
}
FT_Glyph g; FT_Glyph g;
error = FT_Glyph_Copy(itr->image, &g); error = FT_Glyph_Copy(itr->image, &g);
if (!error) if (!error)
{ {
FT_Glyph_Transform(g,0,&start); FT_Glyph_Transform(g, 0, &start);
FT_Glyph_Stroke(&g,stroker_.get(),1); error = FT_Glyph_To_Bitmap(&g, FT_RENDER_MODE_NORMAL, 0, 1);
error = FT_Glyph_To_Bitmap( &g,FT_RENDER_MODE_NORMAL,0,1);
//error = FT_Glyph_To_Bitmap( &g,FT_RENDER_MODE_MONO,0,1);
if ( ! error ) if ( ! error )
{ {
FT_BitmapGlyph bit = (FT_BitmapGlyph)g; FT_BitmapGlyph bit = (FT_BitmapGlyph)g;
render_bitmap_id(&bit->bitmap, feature_id, render_halo_id(&bit->bitmap,
bit->left, feature_id,
height - bit->top); bit->left,
height - bit->top,
halo_radius);
} }
} }
FT_Done_Glyph(g); FT_Done_Glyph(g);
} }
} }
template <typename T> template <typename T>
void grid_text_renderer<T>::render_bitmap_id(FT_Bitmap *bitmap, int feature_id, int x, int y) void agg_text_renderer<T>::render_halo(
FT_Bitmap *bitmap,
unsigned rgba,
int x,
int y,
int halo_radius,
double opacity)
{ {
int x_max=x+bitmap->width; int x_max=x+bitmap->width;
int y_max=y+bitmap->rows; int y_max=y+bitmap->rows;
@ -201,21 +236,49 @@ void grid_text_renderer<T>::render_bitmap_id(FT_Bitmap *bitmap, int feature_id,
{ {
for (j=y,q=0;j<y_max;++j,++q) for (j=y,q=0;j<y_max;++j,++q)
{ {
int gray=bitmap->buffer[q*bitmap->width+p]; int gray = bitmap->buffer[q*bitmap->width+p];
if (gray) if (gray)
{ {
pixmap_.setPixel(i,j,feature_id); for (int n=-halo_radius; n <=halo_radius; ++n)
//pixmap_.blendPixel2(i,j,rgba,gray,opacity_); for (int m=-halo_radius;m <= halo_radius; ++m)
pixmap_.blendPixel2(i+m,j+n,rgba,gray,opacity);
} }
} }
} }
} }
template <typename T> template <typename T>
grid_text_renderer<T>::grid_text_renderer(grid_text_renderer::pixmap_type &pixmap, void grid_text_renderer<T>::render_halo_id(
stroker &stroker, composite_mode_e comp_op, FT_Bitmap *bitmap,
mapnik::value_integer feature_id,
int x,
int y,
int halo_radius)
{
int x_max=x+bitmap->width;
int y_max=y+bitmap->rows;
int i,p,j,q;
for (i=x,p=0;i<x_max;++i,++p)
{
for (j=y,q=0;j<y_max;++j,++q)
{
int gray = bitmap->buffer[q*bitmap->width+p];
if (gray)
{
for (int n=-halo_radius; n <=halo_radius; ++n)
for (int m=-halo_radius;m <= halo_radius; ++m)
pixmap_.setPixel(i+m,j+n,feature_id);
}
}
}
}
template <typename T>
grid_text_renderer<T>::grid_text_renderer(pixmap_type &pixmap,
composite_mode_e comp_op,
double scale_factor) : double scale_factor) :
text_renderer(stroker, comp_op, scale_factor), pixmap_(pixmap) text_renderer(HALO_RASTERIZER_FAST, comp_op, scale_factor), pixmap_(pixmap)
{ {
} }

View file

@ -34,9 +34,19 @@
namespace mapnik namespace mapnik
{ {
static const char * halo_rasterizer_strings[] = {
"full",
"fast",
""
};
IMPLEMENT_ENUM( halo_rasterizer_e, halo_rasterizer_strings )
text_symbolizer::text_symbolizer(text_placements_ptr placements) text_symbolizer::text_symbolizer(text_placements_ptr placements)
: symbolizer_base(), : symbolizer_base(),
placement_options_(placements) placement_options_(placements),
halo_rasterizer_(HALO_RASTERIZER_FULL)
{ {
} }
@ -45,7 +55,8 @@ text_symbolizer::text_symbolizer(expression_ptr name, std::string const& face_na
double size, color const& fill, double size, color const& fill,
text_placements_ptr placements) text_placements_ptr placements)
: symbolizer_base(), : symbolizer_base(),
placement_options_(placements) placement_options_(placements),
halo_rasterizer_(HALO_RASTERIZER_FULL)
{ {
set_name(name); set_name(name);
set_face_name(face_name); set_face_name(face_name);
@ -56,7 +67,8 @@ text_symbolizer::text_symbolizer(expression_ptr name, std::string const& face_na
text_symbolizer::text_symbolizer(expression_ptr name, double size, color const& fill, text_symbolizer::text_symbolizer(expression_ptr name, double size, color const& fill,
text_placements_ptr placements) text_placements_ptr placements)
: symbolizer_base(), : symbolizer_base(),
placement_options_(placements) placement_options_(placements),
halo_rasterizer_(HALO_RASTERIZER_FULL)
{ {
set_name(name); set_name(name);
set_text_size(size); set_text_size(size);
@ -65,7 +77,9 @@ text_symbolizer::text_symbolizer(expression_ptr name, double size, color const&
text_symbolizer::text_symbolizer(text_symbolizer const& rhs) text_symbolizer::text_symbolizer(text_symbolizer const& rhs)
: symbolizer_base(rhs), : symbolizer_base(rhs),
placement_options_(rhs.placement_options_) /*TODO: Copy options! */ placement_options_(rhs.placement_options_),
halo_rasterizer_(rhs.halo_rasterizer_)
/*TODO: Copy options! */
{ {
} }
@ -74,9 +88,7 @@ text_symbolizer& text_symbolizer::operator=(text_symbolizer const& other)
if (this == &other) if (this == &other)
return *this; return *this;
placement_options_ = other.placement_options_; /*TODO: Copy options? */ placement_options_ = other.placement_options_; /*TODO: Copy options? */
halo_rasterizer_ = other.halo_rasterizer_;
MAPNIK_LOG_DEBUG(text_symbolizer) << "text_symbolizer: TODO - Metawriter (text_symbolizer::operator=)";
return *this; return *this;
} }
@ -282,6 +294,16 @@ double text_symbolizer::get_halo_radius() const
return placement_options_->defaults.format->halo_radius; return placement_options_->defaults.format->halo_radius;
} }
void text_symbolizer::set_halo_rasterizer(halo_rasterizer_e rasterizer_p)
{
halo_rasterizer_ = rasterizer_p;
}
halo_rasterizer_e text_symbolizer::get_halo_rasterizer() const
{
return halo_rasterizer_;
}
void text_symbolizer::set_label_placement(label_placement_e label_p) void text_symbolizer::set_label_placement(label_placement_e label_p)
{ {
placement_options_->defaults.label_placement = label_p; placement_options_->defaults.label_placement = label_p;

View file

@ -401,6 +401,7 @@ compile_get_opt_attr(vertical_alignment_e);
compile_get_opt_attr(horizontal_alignment_e); compile_get_opt_attr(horizontal_alignment_e);
compile_get_opt_attr(justify_alignment_e); compile_get_opt_attr(justify_alignment_e);
compile_get_opt_attr(text_upright_e); compile_get_opt_attr(text_upright_e);
compile_get_opt_attr(halo_rasterizer_e);
compile_get_opt_attr(expression_ptr); compile_get_opt_attr(expression_ptr);
compile_get_attr(std::string); compile_get_attr(std::string);
compile_get_attr(filter_mode_e); compile_get_attr(filter_mode_e);

View file

@ -87,6 +87,7 @@ def test_text_symbolizer():
s = mapnik.TextSymbolizer() s = mapnik.TextSymbolizer()
eq_(s.comp_op,mapnik.CompositeOp.src_over) eq_(s.comp_op,mapnik.CompositeOp.src_over)
eq_(s.clip,True) eq_(s.clip,True)
eq_(s.halo_rasterizer,mapnik.halo_rasterizer.FULL)
# https://github.com/mapnik/mapnik/issues/1420 # https://github.com/mapnik/mapnik/issues/1420
eq_(s.text_transform, mapnik.text_transform.NONE) eq_(s.text_transform, mapnik.text_transform.NONE)

View file

@ -21,13 +21,13 @@
" !!!!! ", " !!!!! ",
" !!!!! ", " !!!!! ",
" !!!! ", " !!!! ",
" ! ! ", " !!! ",
" !!! ",
" !!! ", " !!! ",
" !!!! ", " !!!! ",
" !!!!! ",
" !!!!!!! ",
" !!!!!! ", " !!!!!! ",
" !!!!! ", " !!!! ",
" !! ! ",
" ! !!! ", " ! !!! ",
" !!!! ", " !!!! ",
" !!!!! ", " !!!!! ",
@ -42,7 +42,7 @@
" !!!! ", " !!!! ",
" !! ", " !! ",
" ", " ",
" !!! ", " !!!! ",
" !!!! ", " !!!! ",
" !!!! ", " !!!! ",
" !!!! ", " !!!! ",
@ -59,51 +59,51 @@
" !!! ", " !!! ",
" !!!! ", " !!!! ",
" !!!! ", " !!!! ",
" ", " ! ",
" !! ", " !! ",
" !!!! ", " !!!! ",
" !!!! ", " !!!! ",
" !!! ", " !!!! ",
" !!!! ", " !!!! ",
" !!!! ", " !!!! ",
" !!!! ", " !!!! ",
" ! ! ", " !!! ",
" ! ", " ! ",
" !!! ", " !!! ",
" !!!! ", " !!!! ",
" !!!! ", " !!!! ",
" !!! ", " !!! ",
" !!! ", " !!!! ",
" !!!! ", " !!!! ",
" !!!! ", " !!!! ",
" !!! ", " !!! ",
" ", " ",
" !! ", " !! ",
" !!! ", " !!! ",
" !!! ", " !!!! ",
" !!!! ", " !!!! ",
" !!! ", " !!! ",
" !!!! ", " !!!! ",
" !!! ", " !!! ",
" ! ! ", " ! ! ! ",
" !! ", " !! ",
" !!!! ", " !!!! ",
" !!!!! ", " !!!!! ",
" !!!!! ", " !!!!!! ",
" !!!! ", " !!!! ",
" !! ! !! ", " !! ! !! ",
" !!!! ", " !!!! ",
" !!!!! ", " !!!!! ",
" !!!!!! ", " !!!!!!!! ",
" !!!! ", " !!!!!! ",
" !!! !!! ", " !! !!! ",
" !!!!!! ", " !!!!!! ",
" !!!!!!! ", " !!!!!!!! ",
" !!!!!! ! ", " !!!!!! !! ",
" !! !!!! ", " !!! !!!! ",
" !!!!! ! ", " !!!!! !! ",
" !!!!!!!! ", " !!!!!!!! ",
" !!!!!! ", " !!!!!! ",
" !! " " !!! "
] ]
} }

View file

@ -27,10 +27,10 @@
" ", " ",
" ", " ",
" ! # $ % & ' ( ) * + ", " ! # $ % & ' ( ) * + ",
" ! ", " ",
" ! ## $$$$ %%%%% &&&&& '''''' ((((((((( )))))))))) *********** ++++++++++ ", " # $$$ %%% &&&& ''''' (( ( )) ) ))) ** *** ++ + ",
" $ % % &&&&& ''''' ((((((((( ))))))))) ********** ++++++++++ ", " ' ((((((( )) ))))) * * * + + ++++ ",
" )) ** * ++++++++++ ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -27,14 +27,14 @@
" ", " ",
" ", " ",
" ! # $ % & ' ( ) * + ", " ! # $ % & ' ( ) * + ",
" $ & * ", " ",
"!!!!!!! !!!! !! $$$$$ $$$ $$$$$$$$$$ &&&&&&&&&&&&& &&& ((((((((( ((((((((((( ********* ******** ", "! ! $$$ $ $ &&& & && ((( ( ** ",
"!!!!!!!!!!!!!!! $$$$$$$$$$$$$$$$$$$$ &&&&&&&&&&&&&&&& (((((((((((((((((((( ******** ********* ", " !!! ! !!! ! $$ $ $ $$$ $$$ &&& & &&& & ( ((( ( ((((( ( * * * *** ",
"!!!!!!!!!!!!!!! $$$$$$$$$$$$$$$$$$$$ &&&&&&&& &&&&&&& (((((((((((((((((((( ******** ********* ", " ! !! !!! $$ $ $ $$$ $ $ & && && & ( ( (( (( ((( ( * * ** ",
" !!!!!! !!!!!!! $$$$$$$$$$$$$$$$$$$$ &&&&&&&&&&& & && ( (((((((((((((((((( ****** *********** ", " ",
" !!!!!!!!!!! $$$$$$$$$$$$ &&&&&&&&&&& ((((((((((((( *********** ", " !!!! !!! $$$$$$$$$ $ &&&&&&&& (((((((((( ******** ",
" !!!!!!!!!!! $$$$$$$$$$$$$ &&&&&&&&&&& ((((((((((((( *********** ", " !!!!!!! $$$$$$$$$ &&&& & (((((( ( ( ***** **** ",
" ! $ $ & * ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -27,14 +27,14 @@
" ", " ",
" ", " ",
" ! # $ % & ' ( ) * + ", " ! # $ % & ' ( ) * + ",
" $ & * ", " ",
"!!!!!!! !!!! !! $$$$$ $$$ $$$$$$$$$$ &&&&&&&&&&&&& &&& ((((((((( ((((((((((( ********* ******** ", "! ! $$$ $ $ &&& & && ((( ( ** ",
"!!!!!!!!!!!!!!! $$$$$$$$$$$$$$$$$$$$ &&&&&&&&&&&&&&&& (((((((((((((((((((( ******** ********* ", " !!! ! !!! ! $$ $ $ $$$ $$$ &&& & &&& & ( ((( ( ((((( ( * * * *** ",
"!!!!!!!!!!!!!!! $$$$$$$$$$$$$$$$$$$$ &&&&&&&& &&&&&&& (((((((((((((((((((( ******** ********* ", " ! !! !!! $$ $ $ $$$ $ $ & && && & ( ( (( (( ((( ( * * ** ",
" !!!!!! !!!!!!! $$$$$$$$$$$$$$$$$$$$ &&&&&&&&&&& & && ( (((((((((((((((((( ****** *********** ", " ",
" !!!!!!!!!!! $$$$$$$$$$$$ &&&&&&&&&&& ((((((((((((( *********** ", " !!!! !!! $$$$$$$$$ $ &&&&&&&& (((((((((( ******** ",
" !!!!!!!!!!! $$$$$$$$$$$$$ &&&&&&&&&&& ((((((((((((( *********** ", " !!!!!!! $$$$$$$$$ &&&& & (((((( ( ( ***** **** ",
" ! $ $ & * ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -27,11 +27,11 @@
" ", " ",
" ", " ",
" ! # $ % & ' ( ) * + ", " ! # $ % & ' ( ) * + ",
" $ & * ", " ",
"!!!!!!! !!!! !! $$$$$ $$$ $$$$$$$$$$ &&&&&&&&&&&&& &&& ((((((((( ((((((((((( ********* ******** ", "! ! $$$ $ $ &&& & && ((( ( ** ",
"!!!!!!!!!!!!!!! $$$$$$$$$$$$$$$$$$$$ &&&&&&&&&&&&&&&& (((((((((((((((((((( ******** ********* ", " !!! ! !!! ! $$ $ $ $$$ $$$ &&& & &&& & ( ((( ( ((((( ( * * * *** ",
"!!!!!!!!!!!!!!! $$$$$$$$$$$$$$$$$$$$ &&&&&&&& &&&&&&& (((((((((((((((((((( ******** ********* ", " ! !! !!! $$ $ $ $$$ $ $ & && && & ( ( (( (( ((( ( * * ** ",
" !!!!!! !!!!!!! $$$$$$$$$$$$$$$$$$$$ &&&&&&&& && & && ( (((((((((((((((((( ****** * ********* ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -17,33 +17,33 @@
" ", " ",
" ", " ",
" ", " ",
" !! !! ! !! !!! ! !! !! ! ", " ",
" !!!!!!!!!!!! !!!!!!!!!!!!! !!!!!!!!!!!! ", " !!!!!! ! ! ! ! ! !!! !!!!!! ! ! ",
" !!!!!!!!!!!!! !!!!!!!!!!!! !!!!!!!!!!!!! ", " ! ! !!! ! !! !! ! !! ! ! !!! ! ",
" ! !! ! ! !! ! !!! ! ! ", " ",
" !!!!!!! !!!!!!! !!!!!!! ", " !! ! !! ! ! !!!! ! ",
" !!!!!!! !!!!!!! !!!!!!! ", " !!! ! ! !! !!!! ! ",
" ! ! ",
" ", " ",
" ", " ",
" ", " ",
" !! !! ! !! !! ! ", " ",
" !!!!!!!!!!!! !!!!!!!!!!!! ", " ",
" !!!!!!!!!!!!! !!!!!!!!!!!!! ", " !!!!!! ! ! !!!!!! ! ! ",
" ! !! ! ! ! !!! ! ! ", " ! ! !!! ! ! ! !!! ! ",
" !!!!!!! !!!!!!! ", " ! ",
" !!!!!!! !!!!!!! ", " !! ! !!!! ! ",
" ! ! ", " !!! ! !!!! ! ",
" ", " ",
" ", " ",
" ", " ",
" !! !! ! !! !!! ! !! !! ! ", " ",
" !!!!!!!!!!!! !!!!!!!!!!!!! !!!!!!!!!!!! ", " ",
" !!!!!!!!!!!!! !!!!!!!!!!!! !!!!!!!!!!!!! ", " !!!!!! ! ! ! ! ! !!! !!!!!! ! ! ",
" ! !! ! ! !! ! !!! ! ! ", " ! ! !!! ! !! !! ! !! ! ! !!! ! ",
" !!!!!!! !!!!!!! !!!!!!! ", " ",
" !!!!!!! !!!!!!! !!!!!!! ", " !! ! !! ! ! !!!! ! ",
" ! ! ", " !!! ! ! !! !!!! ! ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -5,9 +5,9 @@
"-400", "-400",
"-461", "-461",
"-302", "-302",
"-112",
"-115", "-115",
"-117", "-117",
"-112",
"-118" "-118"
], ],
"data": {}, "data": {},
@ -30,38 +30,38 @@
" ", " ",
" ", " ",
" ", " ",
" !! ## ", " !! ",
" !! !!!!!!!!!! ! ## ####### # ", " ! !!!!!!! # ####### ",
" !!!!!!!! !!!!!!!!!!!!! ####### ############# ", " !!!!!!! !!!!!!!!! !!! ####### ############# ",
" !!!!!!!! !!!!!!!!!!!!!! ######### ############## ", " !!!!!!!! !!!!!!!!! !!!! ## ##### ########## ### ",
" !! !!!!!!!!!!!!!!!!!!! !!!!!!! ## ####### ######## ## ####### $$$$$$ ", " !! !!!!! !!!!!!!!!!! !!!!! # ###### ######## # ##### $$$$$$ ",
" %% %% %%% !!!!!! !! ! !!!!!! ###### ## ## ##### $$ $$$ $$$ ", " %% %%% !!!! ! !! ! !!!!! ### # ## ## ##### $$ $$$ ",
" %% %%%%%%%% %% !!!!!!!! !!!!!! ##### # ####### $$ $$$$$$$$$$$ $ $$ ", " %% %%%%%%% %% !!!!!!! !! !! ##### # ## ### $$ $ $$$$$$$ $ $ ",
" % %%%%%%%%%%%%%%%%%%%% %% !!!! ! !!! ###### #### $ $$$$$$$$$$ $$$$$$$$$$$$ ", " % %%%%%%%%%% %%%%%%%% %% !!!! ! !!! #### # ### $ $$$$$$$$$ $$$$$$$ $$ $ ",
" % %%%%%%%%%%%%%%%%%% %%% % !!!!! ! ! ###### # # $ $$$$$$$$$$ $$$$$$$$$$$$ $ ", " % %%%%%%%%%%%%%%%%%% %% % !!! ! ! #### # # $ $$$$$$$$$$ $ $$$$$$$$$ $ ",
" % %%%%%%%% %%%%%%%%%% % !!!!!! ! !! ##### # # $$$$$$ $$$$$$$$ $ ", " % %%% %%% %%% %%% % !!!!! ! ! ##### # # $$$$$ $$$$$$$ $ ",
" % %%%% % %%%%%%%% !!!!! !!!!! ##### ##### $$ $$$$$ $ ", " % %%%% %%%%% % !!!!! !!!!! ### # ### $ $$$$ $ ",
" %%%%% %%%%% % !!! !!!!! #### ##### $ $$$$ $ ", " %%%%% %%%%% % !! !!!!! #### ##### $ $$$$ $ ",
" % %%%% %%% % ! ! !!! # #### $ $$$$ $ ", " % %%%% %%% % ! ! !!! # ### $ $$$ $ ",
" %%%%% %%%%% !!!! ##### $$$ $$$ $ ", " %%%% % % % !!!! # ## $$$ $$$ $ ",
" %%%%% %%% ! &&&& & & !!!!! ' ##### $$$$ $$$$$ ", " %%%%% %%% ! !! # ## $$$ $ $$ ",
" %%%% (((( ((( ((( %%%% &&&&& &&&& &&&&&&&&& !!!!! # '''''' '''''''' #### $$$$ )))))) ))))) )) $$$$$ ", " %%%% &&&& & && %%% ''''' '''' '''''''' !!!!! # (((((( (((( ((( ### $$$$ )))))) )) ) )) $$$$$ ",
" % %% (((((((((((((((((((((((((((((( !!!! &&&&&&&&&&&&&& !!! # ## '''''''''''''''' # $$$$ )))))))))))))))))))))))))) ", " % % &&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ! !! '''''''' '''' ! ! # (((((((((( (((( # $$ $ )))))))))) ))))))))))))))) ",
" % (((((((( (((( %%%%% !!!! && && & ! !!! #### ''''''''' ' ' # ### $$$$ ))))))))))) )) $$$$$ ", " % &&&&&&&& &&& %%%% !!!! ' ' ! !!! #### ( ( # ### $$$ ))))))))) ) $$ $ ",
" % %%%%% !!!! !!! #### # ### $$$$ $$$ $ ", " % %%%%% !!! !!! #### # ### $$$ $$$ $ ",
" %%% % !!! ! ! !!! ### # #### $$$$$ $$$ ", " %%% % !!! ! ! !!! ## # ### $$$$ $$$ ",
" % %% %%% !!!! !!!! #### ##### $$$$$ $$$$$ ", " % % % !!! !!!! ### # ### $$$$ $$$$$ ",
" % %%% %%% % !!! ! !!!!! ### # # #### $ $$$$$ $$$ $$ ", " % %% %% % !!! ! ! !!! ### # # ### $ $$$$$ $$ $$ ",
" % %%%% %%%%%%% !!!! ! !!!!!! #### # ###### $$$ $$$ $$$$$$$ $ ", " % %%% %%%%%% !!! ! !!!!!! ### # ###### $$$ $$$ $$$$ $ ",
" %%%%%%%%% % %%%%%%%%%% !!!! ! !!!!!! #### # ###### $ $$$$$$$$$$ $$$$$$$$$$ ", " %%%%%%%% % %%%%% % !!!! ! !!!!!! ### # ###### $ $$$$$ $ $$$$$$$$$ ",
" %%%%%%%%%%%%%%%%%%%%%%%%% % !!!!! ! ! !!!! ##### # ## #### $ $$$$$$$$$$$$$$$$ $$$$$ $ ", " % %%%%%%%%%%%%% %%%%%%%%% % !!!!! ! ! !!! ### # # ## ### $ $$$$$$$$$$$$$$$$ $$$$$ $ ",
" % %%%%%% %%%%%%%%%%%%%% !!!!!! ! ! !! ### ### # ## ## $$$$$$ $$$$$$$$$$ $$$ $ ", " % %%%%%% %%%%%%%%%%%% % ! !! ! ! ! ## ## # ## ## $$ $$$ $$$$$$$$$$ $ $ ",
" %%%%%% %%%%%%%%%%%% !!!!! ! !! !!! !!! ##### ## ## ## $$$$$$$$$$$$$$ $$ ", " %% %% %%%%%%% %%%% !!!!! !! !!! ! #### ## ## # $$$$$$$$$$$$$$ $$ ",
" %%% %%% !!!!!!!! !!!!!!! !! !!!! ######## ######### #### $$$$$ $$$$$ ", " %%% %%% !!!!!! !!!!!!! !! # ##### ######### ### $$$$$ $$$$$ ",
" !!!!! !!! !!!!!!!!! ###### ### ######### ", " !!!!! !!! !!!!!!!! ###### ### ######## ",
" !!! !!!!!!!!!! !!!!!! ### ########## ####### ", " !! !!!!!!!!!! !!!!!! ## ########## ###### ",
" !!!!!!!!!! !!!! ########## ##### ", " !!!!!! !!! ! ! ##### #### # ## ",
" !!!!!!!!! ######### ", " !!! !! ## #### ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -27,7 +27,7 @@
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!! !!!!!!!!!!! ", " ! ! ! ! ",
" ############################################# ", " ############################################# ",
" ############################################# ", " ############################################# ",
" ############################################# ", " ############################################# ",

View file

@ -6,9 +6,9 @@
"210", "210",
"208", "208",
"240", "240",
"206",
"202", "202",
"200", "200",
"206",
"204" "204"
], ],
"data": {}, "data": {},
@ -36,11 +36,11 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ! ", " ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" ! ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -48,7 +48,7 @@
" ########################################################################################## ", " ########################################################################################## ",
" ########################################################################################## ", " ########################################################################################## ",
" ########################################################################################## ", " ########################################################################################## ",
" ### ### ## # ", " # # # ",
" ", " ",
" ", " ",
" ", " ",
@ -58,7 +58,7 @@
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$ $$$ ", " $ $ ",
" ", " ",
" ", " ",
" ", " ",
@ -73,22 +73,22 @@
" ", " ",
" ", " ",
" ", " ",
" ' '' (((((( ", " '''''' ",
" ))))) ''''''''''''''''''' ((((((((((( ", " ((((( ))))))))))))))))))) ''''''''''' ",
" ))))))))))) ''''''''''''''''''' (((((((((((( ", " ((((((((((( ))))))))))))))))))) '''''''''''' ",
" )))))))))))) ''''''''''''''''''' ((((( ((((( ", " (((((((((((( ))))))))))))))))))) ''''' ''''' ",
" ))))) ))))) ''''''''''' ''''''' (((( (((( ", " ((((( ((((( '''' '''' ",
" ))) ))) ((( (((( ", " ((( ((( ''' '''' ",
" )))) )))) (((( ((( ", " (((( (((( '''' ''' ",
" ))) ))) (((( (((( ", " ((( ((( '''' '''' ",
" ))) ))) ((( ((( ", " ((( ((( ''' ''' ",
" )))) )))) ((( (((( ", " (((( (((( ''' '''' ",
" ))) )))) (((( (((( ", " ((( (((( '''' '''' ",
" )))) )))) (((((((((((( ", " (((( (((( '''''''''''' ",
" ))))))))))))) ((((((((((( ", " ((((((((((((( ''''''''''' ",
" ))))))))))) ******************* (((((((( ", " ((((((((((( ******************* '''''''' ",
" )))))))) ******************* ((( ", " (((((((( ******************* ''' ",
" ))) ******************* ", " ((( ******************* ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -52,7 +52,6 @@
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!! !!!!!!!!!!! ",
" ", " ",
" ", " ",
" ", " ",
@ -60,11 +59,13 @@
" ", " ",
" ", " ",
" ", " ",
" # ### # # # # # ", " ",
" ",
" ######################################################################################################################################## ", " ######################################################################################################################################## ",
" ######################################################################################################################################## ", " ######################################################################################################################################## ",
" ######################################################################################################################################## ", " ######################################################################################################################################## ",
" ##### ### ####### ## ### # #### ### ###### #### #### ## ########## ## ##### ### ", " ## ## # # ",
" ",
" ", " ",
" ", " ",
" ", " ",
@ -75,22 +76,21 @@
" ", " ",
" ", " ",
" ", " ",
" $ $$ $$ $ $$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$ $$$$$ $$$ $$ $ $$$ $$ $$$$$ $ $$$$ $$$ ", " $ $ ",
" ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" %% % %% % % % %%%%%%%%% %%%%%%%%%%%%%%%% % %%%%%% %% %%%% %%%%%%%% %%%%%%%% %%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %% % % %% %%% %%%%%% %%% % % % %% %% % %% %% % ", " %% %% % % ",
" ", " ",
" ", " ",
" ", " ",
@ -98,7 +98,7 @@
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&& &&& & && & ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -108,7 +108,7 @@
" ((((((( )))))))))))))))))))))))))))) '''''''''''''' ", " ((((((( )))))))))))))))))))))))))))) '''''''''''''' ",
" ((((((((((( )))))))))))))))))))))))))))) ''''''' '''''''' ", " ((((((((((( )))))))))))))))))))))))))))) ''''''' '''''''' ",
" ((((((((((((((( )))))))))))))))))))))))))))) ''''' ''''' ", " ((((((((((((((( )))))))))))))))))))))))))))) ''''' ''''' ",
" (((((( (((((( ))))))))))))))))))) ''' ''' ", " (((((( (((((( ''' ''' ",
" (((( (((( '''' '''' ", " (((( (((( '''' '''' ",
" ((( (((( ''' ''' ", " ((( (((( ''' ''' ",
" (((( ((( '''' '''' ", " (((( ((( '''' '''' ",

View file

@ -61,7 +61,7 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! !! ", " ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
@ -80,8 +80,8 @@
" #################################################################################################################################################################################### ", " #################################################################################################################################################################################### ",
" #################################################################################################################################################################################### ", " #################################################################################################################################################################################### ",
" #################################################################################################################################################################################### ", " #################################################################################################################################################################################### ",
" ################## ######## ############################# ########### ############ ", " # # # # # # # # # ## # # ",
" ## ## ## # ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -100,8 +100,9 @@
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$$$ ", " $ $ ",
" $$ $$ ", " ",
" ",
" ", " ",
" ", " ",
" ", " ",
@ -111,22 +112,21 @@
" ", " ",
" ", " ",
" ", " ",
" %% % %% % % % %%%%%%%%% %%%%%%%%%%%%%%%% % %%%%%% %% %%%% %%%%%%%% %%%%%%%% %%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %% % % %% %%% %%%%%% %%% % % % %% %% % %% %% % ", " %% %% % % ",
" ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" & & & & & & ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" & &&&&&&&&&&& &&&& &&& && &&&& && &&&&&&&&&& &&&& & &&& &&&& &&&& &&&&&&&&&&&&& &&&& &&& &&&&&&& & && &&&&&&&&&&&&&& ", " &&& && & & & ",
" & & & ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -139,7 +139,7 @@
" ((((((( )))))))))))))))))))))))))))))))))))))) ''''''''''''''''' ", " ((((((( )))))))))))))))))))))))))))))))))))))) ''''''''''''''''' ",
" (((((((((((( )))))))))))))))))))))))))))))))))))))) '''''''' '''''''' ", " (((((((((((( )))))))))))))))))))))))))))))))))))))) '''''''' '''''''' ",
" ((((((((((((((((( )))))))))))))))))))))))))))))))))))))) '''''' '''''' ", " ((((((((((((((((( )))))))))))))))))))))))))))))))))))))) '''''' '''''' ",
" (((((((( (((((((( ))))))))))) ))))))) '''' '''' ", " (((((((( (((((((( '''' '''' ",
" (((((( (((((( '''' '''' ", " (((((( (((((( '''' '''' ",
" (((( ((((( ''' ''' ", " (((( ((((( ''' ''' ",
" (((( ((( '''' ''' ", " (((( ((( '''' ''' ",

View file

@ -27,7 +27,7 @@
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!! ", " ! ! ! ",
" ############################################# ", " ############################################# ",
" ############################################# ", " ############################################# ",
" ############################################# ", " ############################################# ",

View file

@ -36,11 +36,11 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ! ", " ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" ! ! ! ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -58,7 +58,7 @@
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$ $$ ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -52,7 +52,6 @@
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!! !!!!!!!!!!! ",
" ", " ",
" ", " ",
" ", " ",
@ -60,11 +59,13 @@
" ", " ",
" ", " ",
" ", " ",
" # ## ## # # ## ## ", " ",
" ",
" ######################################################################################################################################## ", " ######################################################################################################################################## ",
" ######################################################################################################################################## ", " ######################################################################################################################################## ",
" ######################################################################################################################################## ", " ######################################################################################################################################## ",
" ######### ### ### ######## ######## # ######### ######## ## ####### ### ######## ", " ## ## ## # ",
" ",
" ", " ",
" ", " ",
" ", " ",
@ -75,11 +76,10 @@
" ", " ",
" ", " ",
" ", " ",
" $ $$ $$$$ $ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$ $$$$ $$$$ $ $ $ $ $ $ $ $$$$ $$ $ $$ $ ", " $$ $$ ",
" ", " ",
" ", " ",
" ", " ",
@ -108,7 +108,7 @@
" ((((((( )))))))))))))))))))))))))))) '''''''''''''' ", " ((((((( )))))))))))))))))))))))))))) '''''''''''''' ",
" ((((((((((( )))))))))))))))))))))))))))) ''''''' '''''''' ", " ((((((((((( )))))))))))))))))))))))))))) ''''''' '''''''' ",
" ((((((((((((((( )))))))))))))))))))))))))))) ''''' ''''' ", " ((((((((((((((( )))))))))))))))))))))))))))) ''''' ''''' ",
" (((((( (((((( ))))))))))) ))))))) ''' ''' ", " (((((( (((((( ''' ''' ",
" (((( (((( '''' '''' ", " (((( (((( '''' '''' ",
" ((( (((( ''' ''' ", " ((( (((( ''' ''' ",
" (((( ((( '''' '''' ", " (((( ((( '''' '''' ",

View file

@ -61,7 +61,7 @@
" ", " ",
" ", " ",
" ", " ",
" !!! !! ", " ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
@ -80,8 +80,8 @@
" #################################################################################################################################################################################### ", " #################################################################################################################################################################################### ",
" #################################################################################################################################################################################### ", " #################################################################################################################################################################################### ",
" #################################################################################################################################################################################### ", " #################################################################################################################################################################################### ",
" ######### ######## ######## ######## #################### ########## ############ # # ## ", " # # # # # # # # # # # ## # # ",
" ## ## ## # ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -100,8 +100,9 @@
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$ $$$$$$$ $$$$$$$$ $$$$$$$$$ $$$$$$$$$$$ $ $ ", " $ $ ",
" $$ $$ ", " ",
" ",
" ", " ",
" ", " ",
" ", " ",
@ -111,22 +112,21 @@
" ", " ",
" ", " ",
" ", " ",
" %%% %% % % %% % %%%% %%%%%%%%%% %%% %%%% %%%% %%%%%%%%%%% %% %%%%% %% % %%% %%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" % % % % % %%% % %% % %% % %% % % %% % %% % % ", " %% %% % % % ",
" ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" & & & & & ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&& &&&& &&&&&&&& &&&&&&&&&&&&& &&&& &&&&&&&&&&&&&&& &&& &&&& &&&& &&&&&& & &&&& &&& & && & & && &&&&&& ", " && && & & ",
" & & ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -139,7 +139,7 @@
" ((((((( )))))))))))))))))))))))))))))))))))))) ''''''''''''''''' ", " ((((((( )))))))))))))))))))))))))))))))))))))) ''''''''''''''''' ",
" (((((((((((( )))))))))))))))))))))))))))))))))))))) '''''''' '''''''' ", " (((((((((((( )))))))))))))))))))))))))))))))))))))) '''''''' '''''''' ",
" ((((((((((((((((( )))))))))))))))))))))))))))))))))))))) '''''' '''''' ", " ((((((((((((((((( )))))))))))))))))))))))))))))))))))))) '''''' '''''' ",
" (((((((( (((((((( ))))))))))))))))))) '''' '''' ", " (((((((( (((((((( '''' '''' ",
" (((((( (((((( '''' '''' ", " (((((( (((((( '''' '''' ",
" (((( ((((( ''' ''' ", " (((( ((((( ''' ''' ",
" (((( ((( '''' ''' ", " (((( ((( '''' ''' ",

View file

@ -27,7 +27,7 @@
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!! !!!!!!!!!!! ", " ! ! ! ! ",
" ############################################# ", " ############################################# ",
" ############################################# ", " ############################################# ",
" ############################################# ", " ############################################# ",

View file

@ -6,9 +6,9 @@
"210", "210",
"208", "208",
"240", "240",
"206",
"202", "202",
"200", "200",
"206",
"204" "204"
], ],
"data": {}, "data": {},
@ -36,11 +36,11 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ! !!! ! !!! ! ", " ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" ! ! ! ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -48,7 +48,7 @@
" ########################################################################################## ", " ########################################################################################## ",
" ########################################################################################## ", " ########################################################################################## ",
" ########################################################################################## ", " ########################################################################################## ",
" ### ### ## # ", " # # # ",
" ", " ",
" ", " ",
" ", " ",
@ -58,7 +58,7 @@
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$ $$$ ", " $ $ ",
" ", " ",
" ", " ",
" ", " ",
@ -73,22 +73,22 @@
" ", " ",
" ", " ",
" ", " ",
" ' '' (((((( ", " '''''' ",
" ))))) ''''''''''''''''''' ((((((((((( ", " ((((( ))))))))))))))))))) ''''''''''' ",
" ))))))))))) ''''''''''''''''''' (((((((((((( ", " ((((((((((( ))))))))))))))))))) '''''''''''' ",
" )))))))))))) ''''''''''''''''''' ((((( ((((( ", " (((((((((((( ))))))))))))))))))) ''''' ''''' ",
" ))))) ))))) ''''''''''' ''''''' (((( (((( ", " ((((( ((((( '''' '''' ",
" ))) ))) ((( (((( ", " ((( ((( ''' '''' ",
" )))) )))) (((( ((( ", " (((( (((( '''' ''' ",
" ))) ))) (((( (((( ", " ((( ((( '''' '''' ",
" ))) ))) ((( ((( ", " ((( ((( ''' ''' ",
" )))) )))) ((( (((( ", " (((( (((( ''' '''' ",
" ))) )))) (((( (((( ", " ((( (((( '''' '''' ",
" )))) )))) (((((((((((( ", " (((( (((( '''''''''''' ",
" ))))))))))))) ((((((((((( ", " ((((((((((((( ''''''''''' ",
" ))))))))))) ******************* (((((((( ", " ((((((((((( ******************* '''''''' ",
" )))))))) ******************* ((( ", " (((((((( ******************* ''' ",
" ))) ******************* ", " ((( ******************* ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -52,7 +52,6 @@
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!! !!!!!!!! !!!!!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! !!!!!!!!!!! ",
" ", " ",
" ", " ",
" ", " ",
@ -60,11 +59,13 @@
" ", " ",
" ", " ",
" ", " ",
" # ### # # # # # ", " ",
" ",
" ######################################################################################################################################## ", " ######################################################################################################################################## ",
" ######################################################################################################################################## ", " ######################################################################################################################################## ",
" ######################################################################################################################################## ", " ######################################################################################################################################## ",
" ##### ### ####### ## ### # #### ### ###### #### #### ## ########## ## ##### ### ", " ## ## # # ",
" ",
" ", " ",
" ", " ",
" ", " ",
@ -75,22 +76,21 @@
" ", " ",
" ", " ",
" ", " ",
" $ $$$ $$$$ $ $$ $$ $$$$ $$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$ $$$ $ $ $$ $$$ $$$$ $$$ $$$$ $ $ $$$ $$$$$ $$$$ $ $ $$ $$$ $ $$$$$ $$ $$$$ $ ", " $$ $$ $$ $$ ",
" ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" %% % %% % % % %%%%%%%%% %%%%%%%%%%%%%%%% % %%%%%% %% %%%% %%%%%%%% %%%%%%%% %%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %% % % %% %%% %%%%%% %%% % % % %% %% % %% %% % ", " %% %% % % ",
" ", " ",
" ", " ",
" ", " ",
@ -98,7 +98,7 @@
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&& &&& & && & ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -108,7 +108,7 @@
" ((((((( )))))))))))))))))))))))))))) '''''''''''''' ", " ((((((( )))))))))))))))))))))))))))) '''''''''''''' ",
" ((((((((((( )))))))))))))))))))))))))))) ''''''' '''''''' ", " ((((((((((( )))))))))))))))))))))))))))) ''''''' '''''''' ",
" ((((((((((((((( )))))))))))))))))))))))))))) ''''' ''''' ", " ((((((((((((((( )))))))))))))))))))))))))))) ''''' ''''' ",
" (((((( (((((( ))))))))))))))))))) ''' ''' ", " (((((( (((((( ''' ''' ",
" (((( (((( '''' '''' ", " (((( (((( '''' '''' ",
" ((( (((( ''' ''' ", " ((( (((( ''' ''' ",
" (((( ((( '''' '''' ", " (((( ((( '''' '''' ",

View file

@ -61,7 +61,7 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! !! !!!! !! !!!! !! !!!! !! !!!! !! !!!! !! ", " ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
" !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ", " !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ",
@ -80,8 +80,8 @@
" #################################################################################################################################################################################### ", " #################################################################################################################################################################################### ",
" #################################################################################################################################################################################### ", " #################################################################################################################################################################################### ",
" #################################################################################################################################################################################### ", " #################################################################################################################################################################################### ",
" ################## ######## ############################# ########### ############ ################## ######## ############################# ########### ############ ", " # # # # # # # # ## # # # # # # # # # # # ## # # ",
" ## ## ## # ## ## ## # ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -100,8 +100,9 @@
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ", " $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ ",
" $$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$$$ $$$$$$$$$ $$$$$$$ $$$$$$$$$$$$$$$$$$ $$$$$$$$$$$ ", " $ $ $ $ $ $ ",
" $$ $$ $$ $$ $$ $$ ", " ",
" ",
" ", " ",
" ", " ",
" ", " ",
@ -111,22 +112,21 @@
" ", " ",
" ", " ",
" ", " ",
" %% % %% % % % %%%%%%%%% %%%%%%%%%%%%%%%% % %%%%%% %% %%%% %%%%%%%% %%%%%%%% %%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ", " %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ",
" %% % % %% %%% %%%%%% %%% % % % %% %% % %% %% % ", " %% %% % % ",
" ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" ", " ",
" & & & & & & ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ", " &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& ",
" & &&&&&&&&&&& &&&& &&& && &&&& && &&&&&&&&&& &&&& & &&& &&&& &&&& &&&&&&&&&&&&& &&&& &&& &&&&&&& & && &&&&&&&&&&&&&& ", " &&& && & & & ",
" & & & ", " ",
" ", " ",
" ", " ",
" ", " ",
@ -139,7 +139,7 @@
" ((((((( )))))))))))))))))))))))))))))))))))))) ''''''''''''''''' ", " ((((((( )))))))))))))))))))))))))))))))))))))) ''''''''''''''''' ",
" (((((((((((( )))))))))))))))))))))))))))))))))))))) '''''''' '''''''' ", " (((((((((((( )))))))))))))))))))))))))))))))))))))) '''''''' '''''''' ",
" ((((((((((((((((( )))))))))))))))))))))))))))))))))))))) '''''' '''''' ", " ((((((((((((((((( )))))))))))))))))))))))))))))))))))))) '''''' '''''' ",
" (((((((( (((((((( ))))))))))) ))))))) '''' '''' ", " (((((((( (((((((( '''' '''' ",
" (((((( (((((( '''' '''' ", " (((((( (((((( '''' '''' ",
" (((( ((((( ''' ''' ", " (((( ((((( ''' ''' ",
" (((( ((( '''' ''' ", " (((( ((( '''' ''' ",
@ -150,19 +150,19 @@
" (((( (((( ''' ''' ", " (((( (((( ''' ''' ",
" ((( ((( '''' '''' ", " ((( ((( '''' '''' ",
" (((( (((( '''' ''' ", " (((( (((( '''' ''' ",
" (((( (((( ''' '''' ", " (((( ((( ''' '''' ",
" ((( ((((( '''' '''' ", " ((( (((( '''' '''' ",
" (((( (((( '''' '''' ", " (((( ((( '''' '''' ",
" ((( (((( ''' '''' ", " ((( (((( ''' '''' ",
" ((( (((( '''' '''' ", " ((( (((( '''' '''' ",
" ((((( (((( '''''' '''''' ", " (((( (((( '''''' '''''' ",
" ((((( ((((( '''''''' ''''''' ", " (((( (((( '''''''' ''''''' ",
" (((((( (((((( ''''''''''''''''' ", " (((((( ((((( ''''''''''''''''' ",
" ((((((((( (((((((( ''''''''''''' ", " (((((((( (((((((( ''''''''''''' ",
" (((((((((((((((((( '''''''' ", " (((((((((((((((((( '''''''' ",
" ( (((((((((((( ************************************** ''' ", " (((((((((((( ************************************** ''' ",
" (((((((((( ************************************** ", " (((((((( ************************************** ",
" (((( ************************************** ", " ((( ************************************** ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -22,16 +22,16 @@
" ", " ",
" ", " ",
" ", " ",
"!!! ### $$$ %%% &&& ", " ",
"!!! #### $$$ %%%% &&&& ", "! ! # $ % % & ",
"!!!! #### $$$$ %%% &&&& ", "!!! ## $$$ %%% &&& ",
"! # # $ $ % & & ", " ",
" ! ' # ( $ ) % * & +", " ! ' # ( $ ) % * & +",
" ", " ",
" '' ( ) * ++", " ",
" '' (( )) ** +++", " '' ( ) ** ++",
" '' (( )) ** +++", " ' (( )) ** ++",
" ) ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -1,13 +1,13 @@
{ {
"keys": [ "keys": [
"", "",
"-1",
"-2",
"-4", "-4",
"-6", "-6",
"-7", "-7",
"-8", "-8",
"-9", "-9",
"-2",
"-1",
"-3", "-3",
"-5", "-5",
"-10" "-10"
@ -22,17 +22,17 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ## $$ $ %%%&&& ''' ((( ",
"!!!!####$$$$$$$$$$$%%%%&&&&'''(((( ",
"!!!!####$$$$$$$$$$$%%%%&&& '''(((( ",
" ! # $$ $ %% ' ' ( ",
" ! # ) $ * % & ' ( + ",
" ", " ",
"))) ) ) ) ++ ", " !!!!!!!!! # $ % % && ",
")))))))))))))))))))) ++++", " '' !! ! !! ###$$$ %% & ",
" ))))))) ))))))))))) ++++", " ",
" ))))))))))))))))))) + ", " ( ' ) ! * # $ % & + ",
" ) ) ) ) ", " ",
" ",
" ) ) +++",
" ))))) ) )))) ++ ",
" ) ))))) )) )))) ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -22,17 +22,17 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ## # # $$$ $$ %%% && & ", " ",
" !!! ############# $$$$$$$$$$$%%%%%%%%%%%%%%&&&&&&&&&&& ", " ! ! ### #### # $$ $$$$ $ %% %% %%%%%% &&& &&& & ",
" !!! ############ $$$$$$$$$$ %%%%%%%%%%%%%&&&&&&&&&&& ", " !! # ## $$$$ $$$ %%%% %% %% & & & ",
" ! ## # # $ $ % % % && & ", " ",
" ! ' # ( $ ) % * & + ", " ! ' # ( $ ) % * & + ",
" ", " ",
" '''' ' ' ( ))) ) ) * +++ ", " ",
" ''''''''''''''''' (( ))))))))) )))))) ** ++++ ", " ' ' ( ) ) * ",
" '''''''' ''''''' ((( )))))))))))))) *** ++++ ", " ''' ' ' '' ' (( ) ))) ) ) ))) * ",
" '''''''' ''''''' ))))))))))))))) * + ", " '''''' ' '' '' ) )))))) ))))) ",
" ' ' ' ))) ) ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -22,17 +22,17 @@
" ", " ",
" ", " ",
" ", " ",
"! ! ## ## $$ $$ %%% % &&& & & ", " ",
"!!!!!!!!!! ############# $$$$$$$$$$ %%%%%%%%%%%%%% &&&&&&&&&&&& ", " !!! !!!! ### #### # $$$$$$$$ % %%% %%%%%% & &&& &&&& ",
"!!!!!!!!!! ############# $$$$$$$$$$ %%%%%%%%%%%%% &&&&&&&&&&& ", " ! !! # ### $$ $ %%% % % % &&& & & & ",
" !! ! ! ## # $$ $ % % % & & ", " ",
" ! ' # ( $ ) % * & + ", " ! ' # ( $ ) % * & + ",
" ", " ",
" ''' ' ' ( ))) ) )) * + + ", " ",
" ''''''''''''''''' (( ))))))))))))))) *** ++++ ", " ' ' ' ( ) ) ",
" '''''''''''''''' ((( )))))))))))))) *** ++++ ", " ' ''' ' ''' ' ( ) ))) ) ) ) * ",
" '''''''' ''''''' )))))))))))))) * + ", " ' '''''' ' '' '' ) ))))) )) )) ",
" ''' ' ))) ) ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -22,17 +22,17 @@
" ", " ",
" ", " ",
" ", " ",
"!! ## ## $$ $$ %% % && & & '''' ", " ",
"!!!!!!!!!!! ############# $$$$$$$$$$$ %%%%%%%%%%%%%% &&&&&&&&&&&& ''''' ", " !!!!! !! # ######## $$ $$$$ $ %%% %%% %%% &&& &&& & ' ''' ",
"!!!!!!!!!!! ############# $$$$$$$$$$ %%%%%%%%%%%%% &&&&&&&&&&& ''''' ", " !! ! ! ### # ## # $$ $ $$$ % % % %% & & && ''''' ",
" !! ! ! # ## $ $ %% %% % && ' ", " ",
" ! ( # ) $ * % + & ' ", " ! ( # ) $ * % + & ' ",
" ", " ",
" ((( ( ( ))) ) )) *** * ** ++++ + ++ + + ", " ",
" ((((((((((((((((( ))))))))))))))))))) *************** +++++++++ ++++++++++ ", " ( ( ) * + ",
" (((((((((((((((( )))))))) )))))))) ******* ****** ++++++++ ++++++++++ ", " ( ((( ( (((( ( ))))) )))) ***** * * ++ + ++ + ++ ",
" (((((((((((((((( ))))))))))))))))) ************** ++++++++ ++++++++++ ", " ( ((((( (( ((( ))))) ) ))))) * ***** ** * ++++ + ++ +++ + ",
" ( ( ( ) ) ) ) * * * + + + +++ ", " + ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -22,17 +22,17 @@
" ", " ",
" ", " ",
" ", " ",
" !! ! ### ## $$ $ %% % % && ", " ",
" !!!!!!!!!!! ############ $$$$$$$$$$ %%%%%%%%%%%% &&&&&&&&&& ", " ! !!! !! ! ## #### # $$ $$$ $ %%% %%%%%% &&& &&& ",
" !!!!!!!!!! ########## $$$$$$$$$ %%%%%%%%%%%% &&&&&&&&&& ", " !! ! !!! #### ## # $$ $ $$$ % %%%%% & && ",
" !! ! # # $ $ %% % %% && & ", " % ",
" ' ! ( # ) $ * % + & ", " ' ! ( # ) $ * % + & ",
" ", " ",
"''' ' ((( ( (( )))) ) ))) **** * +++ + + ", " ",
"'''''''' ''''''' (((((((((((((((((((( ))))))))) ))) ))) ********* *********** ++++++++++++++++++ ", " ' ( ( ( ) * + ",
"'''''''' '''''''' ((((((((((((((((((( )))))))) ))))))) ******************** +++++++ +++++++++ ", " ''''' ' ' ''' ( ((( ( ( ((((( )) ) ) )) *** * * *** ***** +++++ +++ +++ ",
"'''''''' '''''''' ((((((((((((((((((( )))))))) ))))))) ******************** +++++++++++++++++ ", " '''' ' ''' ''' ( ((((( (( ((((( )))) ) ) ) )) ****** **** * ** * + +++++ +++ ++ ",
" ' ' ' ' ( ( ( ( ) ) )) * * * * * + + + ", " ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -28,11 +28,11 @@
" ", " ",
" ! # $ % & ' ( ) * + ", " ! # $ % & ' ( ) * + ",
" ", " ",
" !!! ! ### # # $$$$ $ $$$ %%% % %% &&& & && ''' ' '' ((( ( )))) ) )) ) ) **** * ** ++++ + + ", " ",
" !!!!!!!!!!!!!!!!! ################# $$$$$$$$$ $$$$$$$$$$ %%%%%%%%%%%%%%%%%%% &&&&&&&&&&&&&&&&& ''''''''''''''' (((((((((((((((((((())))))))) )))))))))) ********* ******** ++++++++++++++++ ", " ! ! # # $ $ % & & & ' ( ) * + + ",
" !!!!!!!!!!!!!!!! ################ $$$$$$$$ $$$$$$$$$$$ %%%%%%%% %%%%%%%% &&&&&&&&&&&&&&&& ''''''' '''''' ((((((( (((((((((((()))))))) )))))))))) ******** ********* ++++++++ ++++++ ", " ! !!! ! !!!!!! # ### # #### # $$$$$ $ $$ $$$$ %%%%% %%%% & &&& & &&&&&& ''''' ' ' ((((( ((((((((( )) ) )) ) )) *** * * *** +++ + ++++++ ",
" !!!!!!!!!!!!!!!! ################ $$$$$$$$ $$$$$$$$$$$ %%%%%%%%%%%%%%%%% &&&&&&&&&&&&&&&& '''''''''''''' (((((((((((((((((((()))))))) )))))))))) ******** ********* ++++++++ ++++++ ", " ! !!!!! !!!!!!! # ##### ## ### $$$$ $ $$ $$ $$$$ %%%%% % %%%%% & &&&&& && &&& ' ''''' '' ' ( ((((( (( ((( ((( )))) ) )) ))) ) ****** * *** ++++++ + ++ + ",
" ! ! ! ! # # # $ $ $ $ % % % % &&& & ' ' ' ( ( ( ( ( ) ) ) ))) * * * + + + ", " ) ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -30,21 +30,21 @@
" ", " ",
" ", " ",
" ", " ",
" !! ", " ! ",
" !!! ", " ! ",
" ! !! ",
" !!!!!!!!! ",
" !!!!!!!!!! ",
" !! ",
" ", " ",
" !! ! ! ! ",
" ! ! ! ",
" ",
" ",
" ! ",
" ",
" ! ! ",
" ",
" ! ",
" !!! ",
" !!!! ", " !!!! ",
" !!!!! ", " !! ",
" !!!!! ",
" !!! !!! ",
" ! !!! ",
" !!!!!!!! ",
" !!!!!!!! ",
" !!!!!! ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,20 +20,20 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ", " ",
" !!! ", " ! ",
" !!! ", " ! ",
" ### !!! ", " # ! ! ",
" ### ", " ## ",
" $$$ %%%% ##### &&& ''' !!! ((((((((( )))) ", " $$$ % ##### &&& ' ' ! ! ( (((( ) ",
" $$$ %%% **** +++ ### &&& ''' !!! ((((((( )) ", " $ % % * + ### && '' ! ( ( ( )) ",
" $$$ %%% *** +++ &&& ''' !!! (((((((( ))) ", " $ %% ** + & ' ! (( ( (( )) ",
" $$$ %%%% ** ++++ &&& ''' !!! ((((((((( )))) ", " $ ** ++++ & ( ",
" **** +++ ", " * + + ",
" !!! ",
" !! ",
" !!! ",
" ! ! ", " ! ! ",
" ! ",
" ! ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,20 +20,20 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ", " ",
" !!! ", " ! ",
" !!! ", " ! ",
" ### !!!! ",
" ### ",
" $$$ %%% & #### ''' (((( !!! ))))))))) **** ",
" $$$ %%%% &&& +++ #### ''' ((( !!! ))))))) ** ",
" $$$ %%% &&& +++ ''' ((( !!! )))))))) *** ",
" $$$$ %%%% &&& ++++ '''' (((( !!!! ))))))))) **** ",
" &&& ++++ ",
" !!! ",
" !! ",
" !!! ",
" ! ! ", " ! ! ",
" ## ",
" $$$ % % & #### ' ' ( ! ! ) )))) * ",
" $ % % & + ## '' ( ( ! ) ) ) ** ",
" $$ %% & ++ '' (( !! )) )))) ** ",
" $ & ++++ ) ",
" & & ++ ",
" ! ",
" ! ",
" ! ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,20 +20,20 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ", " ",
" !!! ",
" !!! ",
" ### !!!! ",
" ### ",
" $$$$ %%% & #### ''' ((( !!! )))))))) *** ",
" $$$ %%% &&& ++++ ### ''' ((( !!! )))))))) *** ",
" $$$ %%% &&& ++++ ''' ((( !!! )))))))) *** ",
" $$$$ %%% &&& ++++ ''' ((( !!!! ) )))) ) *** ",
" &&& ++++ ",
" !!! ",
" !! ", " !! ",
" !!! ", " ! ",
" ! ! ", " # ! ! ",
" ## ",
" $$$ % % & #### ''' ((( !!! ) )) ) ) *** ",
" $ %% & + ### '' (( ! ) )) ) * ",
" $$ % & ++ ' ( !! ) )) ) * ",
" $ & ++++ ' ( ! * ",
" & & ++ ",
" ! ",
" ! ",
" ! ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,20 +20,20 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! ", " ",
" !!! ",
" !! ", " !! ",
" ### !!!! ",
" ### ",
" $$$$ %%% & ##### '''' ((( !!!! ))))))))) **** ",
" $$ %%% &&& ++++ ### '' ((( !! ))))))) ** ",
" $$$ %%% &&& +++ ''' ((( !!! )))))))) *** ",
" $$$$ % % &&& ++++ '''' (((( !!!! ))))))))) **** ",
" &&& ++++ ",
" !!!! ",
" !! ", " !! ",
" !!! ", " # ! ",
" !!!! ", " ## ",
" $$$ % % & ##### ''' ((( ! )) ) ) ** ",
" $ %% & + ### '' (( !! ) ) ) * ",
" $$ % & ++ '' (( !! )))) )) ** ",
" $ & ++++ ' ( * ",
" & & ++ ",
" !! ",
" ! ",
" !! ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,20 +20,20 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! ", " ",
" !!! ",
" !! ", " !! ",
" ### !!!! ",
" ### ",
" $$$$ %%% & ##### '''' (((( !!!! ))))))))) **** ",
" $$ %%% &&& +++ ### '' ((( !! ))))))) ** ",
" $$$ %%% &&& +++ ''' ((( !!! ))))))) ** ",
" $$$$ % % &&& ++++ '''' (((( !!!! ))))))))) **** ",
" &&&& ++++ ",
" !!!! ",
" !! ", " !! ",
" !!!! ", " # ! ",
" !!!! ", " ## ",
" $$ % % & ##### '' (( ! ) )))) * ",
" $ %% & + ### '' ((( !! )) ) )) ** ",
" $$ && ++ '' (( !! )) ) )) ** ",
" $ & ++++ ' ( ) ",
" & & + ",
" !! ",
" ! ",
" !! ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,20 +20,20 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ", " ",
" !!! ",
" !!! ",
" ### !!!! ",
" ### ",
" $$$$ %%% & #### '''' (((( !!! )))))))) *** ",
" $$ %%% &&&& +++ #### ''' ((( !!! )))))))) *** ",
" $$$ %%% &&& +++ '' (( !!! )))))))) *** ",
" $$$$ % % &&& ++++ '''' (((( !!!! ))))))))) **** ",
" &&&& ++++ ",
" !!! ",
" !! ", " !! ",
" !!! ", " ! ",
" !! ! ", " # ! ! ",
" ## ",
" $$ % % & #### ' ( ! ! ) )))) ) * * ",
" $ %% & + ## ''' ((( ! ) ) ) * ",
" $$ && ++ '' (( !! )) )))) ** ",
" $ & ++++ ) ",
" & & + ",
" ! ",
" ! ",
" !! ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,20 +20,20 @@
" ", " ",
" ", " ",
" ", " ",
" ",
" ! ",
" ! ",
" # ! ! ",
" ## ",
" $$ % % & #### ' ( !!! ) ) )) ) *** ",
" $ %% & + ## '' ( ( ! ) )) ) * ",
" $$ && + '' (( ! )) * ",
" $ && ++++ ! * ",
" & & + + ",
" ! ! ", " ! ! ",
" !!! ", " ! ",
" !!! ", " ! ",
" #### !!! ", " ",
" ### ",
" $$$$ %%% & #### '''' (((( !!! )))))))) *** ",
" $$ %%% &&&& +++ #### ''' ((( !!! )))))))) *** ",
" $$$ %%% &&& +++ ''' ((( !!! )))))))) *** ",
" $$$$ % % && ++++ '''' (((( !!! ) )))) ) *** ",
" &&&& +++ ",
" !!! ",
" !!! ",
" !!! ",
" ! ! ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,20 +20,20 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ", " ",
" !!! ", " ! ",
" !!! ", " ! ",
" #### !!! ",
" #### ",
" $$$$ %%% #### &&& ''' !!! (((((((( )))) ",
" $$ %%% **** +++ #### &&& '''' !!! (((((((( )) ",
" $$$ %%% *** +++ &&& ''' !!! (((((((( ))) ",
" $$$$ % % ** ++++ &&&& '''' !!! ((((((((( )))) ",
" **** +++ ",
" !!! ",
" !! ",
" !!! ",
" ! ! ", " ! ! ",
" ## ",
" $$ % % #### & & ' ' !!! ( (( ( ( ))) ",
" $ %% * + ## && ' ' ! ( ( ( ) ",
" $$ % ** ++ && '' ! (((( (( )) ",
" $ ** ++++ ! ) ",
" * +++ ",
" ! ",
" ! ",
" ! ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,20 +20,20 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! ", " ",
" !!! ",
" !! ", " !! ",
" # # !!!! ",
" ### ",
" $$$$ %%% #### &&& '''' !!!! (((((((( ))) ",
" $$ %%% **** +++ ### &&& ''' !! (((((((( ))) ",
" $$$ %%% *** +++ &&& ''' !!! (((((((( ))) ",
" $$$$ %%%% ** +++++ &&&& '''' !!!! ((((((((( ))) ",
" **** +++ ",
" !!!! ",
" !! ", " !! ",
" !!! ", " ! ! ",
" !!!! ", " # ",
" $$ % % #### &&& '' ! ( (((( ( ))) ",
" $ %% * + ## && '' ! ( ( ( ) ",
" $$ %%% ** ++ && '' !! (( (((( ) ",
" $ % ** +++++ & ' ( ) ",
" * +++ ",
" ! ",
" ! ",
" !! ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,20 +20,20 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! ", " ",
" !!! ",
" !! ", " !! ",
" #### !!!! ",
" ### ",
" $$$$ %%%% #### &&& ''' !!!! (((((((( ))) ",
" $$ %%% *** +++ #### &&& ''' !! (((((((( ))) ",
" $$$ %%% *** +++ &&& ''' !!! (((((((( ))) ",
" $$$$ %%%% *** ++++ &&& ''' !!!! (((((((( ))) ",
" *** ++++ ",
" !!!! ",
" !! ", " !! ",
" !!!! ", " ! ",
" !!!! ", " ## ",
" $ % % #### & & ''' ! ( ( (( ( ))) ",
" $$ %%% * + ## && '' ! ( (( ( ) ",
" $$ %%% * ++ & ' !! ( (( ( ) ",
" % * ++++ ' ) ",
" * * + ",
" !! ",
" ! ",
" !! ",
" ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -18,20 +18,20 @@
" ", " ",
" ", " ",
" ", " ",
"! ",
"!!!!!!!!!#### $$$$$$ ",
"!!!!!!!!!##### $$$$$$$ ",
" !! ! ## # $$$$ ",
" ", " ",
" %%%% %% ", " !!! !!!! ",
" % %%%%%%%% %%%%%%%% & '", " ! ! #### $$$$$ ",
" %%%%%%%% %%%%%%%% ", " ",
" %%%%%%%% %%%%%%%% ", " ",
" %% ",
" % %% %%% %% %%%% & '",
" % % % %% ",
" % % % % ",
" ",
" ",
" (( (((( ((( )))))) ",
" (((( ((( (( ",
" ", " ",
"((( ( ))) ",
"((((((((((((())))))) ",
" (((((((((((( )) ) ",
" ( ( ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -18,21 +18,21 @@
" ", " ",
" ", " ",
" ", " ",
" !! ! ## ",
"!!!!!!!!!!!$ $$ ############## %% % ",
" !!!!!!!!!!$$$$$ ############## %%%%%",
" !! ! $ # # # % ",
" ", " ",
" &&&& & ''' '' '' ", " !!! !!!! # ### # # # ",
" & &&&&&&&&&&&&&&&& ' '''''''''''''' ", " ! !$$ $$ ### # ### %%%",
" &&&&&&&&&&&&&&&& '''''''''''''' ", " ",
" &&&&&&&& &&&&&&& '''''''''''''' ", " ",
" &&& & ''' ' ",
" & & &&&&&& &&&& && ' ' ''''' ' '' ",
" & & && &&& ' ''' ' ' ",
" && & ' ' ' ",
" ",
" ",
" ( ( ) ))) )))))) ",
" ((((( ( (((( ))) ) ))) ",
" ( ((((( (( (((( ",
" ", " ",
"((( ( ( ( ))) ) ) ) ",
"(((((((((((((((((((( ))))))))))))) ",
" ((((((( ((((((((((( )))))))))))) ",
" ((((((((((((((((((( ) ))) ",
" ( ( ( ( ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -19,22 +19,22 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! ! ! ### # ## $$$$ $ $$ $ $ ",
" !!!!!!!!!!!!!!!!! #################$$$$$$$$$ $$$$$$$$$$ ",
" !!!!!!!! !!!!!!! ################ $$$$$$$$ $$$$$$$$$$%%%% ",
" !!!!!!!! !!!!!!! ######## ####### $$$$$$$$ $$$$$$$$$$%%%%% ",
" ! ! ! ### # $ $ $ $$$ % ",
" ", " ",
" &&&& && '''' ' '' ((( (( ", " ! ! # # # $ $ $ ",
" & &&&&&&&& &&&&&&&&' '''''''''''''''''( ((((((((((((((((((((", " !!! ! ! !! ! # ### # ####### $$$$$ $$ $ $$$$ ",
" &&&&&&&& &&&&&&&& '''''''' ''''''' ((((((((((((((((((((", " !!!!!! ! !! !! # ###### ## #### $$$$ $ $$ $$$$ $ %%%% ",
" &&&&&&&& &&&&&&& '''''''' ''''''' ((((((((((((((((((((", " $ ",
" ",
" && ''' ' ' ((( ( ",
" & &&&&&& &&&& && ' ' '''''' '''' '''( ( ((((( ( (((((((( ",
" & && & & && ' ' '' '' ' '' ( ((( ( ((( ( (",
" & & & & '' ' ' ( ( ( ( ( ",
" ",
" ",
" ) ) ) * * + ",
" ) ))) ) ) )))))) * *** * * *** +++++ + +++ ",
" ) ))))) )) )) )) * ****** ***** ++++ + + +++ ",
" ", " ",
" ))) ) )) *** * * ++++ + ++ ",
" )))))))))))))))))))) ********* ****** +++++++++ +++++++++",
" ))))))))))))))))))) ************** ++++++++ +++++++++",
" ))))))))))))))))))) *************** ++++++++ +++++++++",
" ))) ) ) *** * + + + ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -19,22 +19,22 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ! ! ### # ## $$$ $ $$ $ $ ",
" !!!!!!!!!!!!!!!!! ################ $$$$$$$$$$$$$$$$$$$$%% % ",
" !!!!!!!!!!!!!!!! ####### ######## $$$$$$$ $$$$$$$$$$%%%%%%%%%",
" !!!!!!!! !!!!!!! ################ $$$$$$$$$$$$$$$$$$$%%%%%%%%",
" !!! ! # # # $ $ $ $$$ %% %",
" ", " ",
" &&& & '''' '' '' ((( ( ", " ! ! ! # $ $ ",
" & &&&&&&&&&&&&&&&& ' '''''''' '''''''' ( ((((((((((((((((((((% ", " ! !!! ! !!! ! ##### #### $$$$$ $$$ $$ % %%% %%",
" &&&&&&&&&&&&&&&& '''''''' ''''''' (((((((((((((((((((( ", " ! !!!!!! ! !! !! # ##### # ## $ $$$$$ $$ $$$ $ %% % % ",
" & &&&&&& &&&&&&& '''''''' ''''''' ( (((((((((((((((((( ", " $$ ",
" ",
" &&& & '' ' ((( ( ",
" & & &&&&& &&&& && ' '' ''' '''' ''' ( ( ((((( (((((((( ((% ",
" & && && & ' ' '' ' '' ( (( (( ((( ( ",
" &&& & & ' ' ' ' ((( ( (( ( ",
" ",
" ",
" ) ) )) * * + + ",
" ) ))) ) )) ))))))) * *** * * * + +++ + ++++ ++ ",
" ) )))))) )) ))))))) * ***** ** ** + +++++ +++ ++ ",
" ", " ",
" ))) ) ))) *** * ** +++ + + ",
" )))))))))))))))))))) *************** ++++++++++++++++++ ",
" ))))))))))))))))))) ************** +++++++++++++++++ ",
" )))))))) )))))))))) ************** +++++++++++++++++ ",
" ))) ) ) *** * +++ ++ ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -19,22 +19,22 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ! ! ### # ## $$$ $ $$ %%%% % %% % % ",
" !!!!!!!!!!!!!!!!! ################### $$$$$$$$$$$$$$$ %%%%%%%%% %%%%%%%%%% &&& ",
" !!!!!!!!!!!!!!!! ######## ######## $$$$$$$ $$$$$$ %%%%%%%% %%%%%%%%%% &&&&&&&&&&",
" !!!!!!!!!!!!!!!! ################# $$$$$$$$$$$$$$ %%%%%%%% %%%%%%%%%% &&&&&&&&&",
" ! ! ! # # # # $ $ $ % % % %%% & ",
" ", " ",
" '''' ' ", " ! ! # $ % ",
" ' '''''''' ''''''' ( # ) $ * % + & ", " ! !!! ! !!!! ! ##### #### $$$$$ $ $ %% % %% % %% && &&&& &",
" '''''''''''''''' ", " ! !!!!! !! !!! ##### # ##### $ $$$$$ $$ $ %%%% % %% %%% % &&&& &&& ",
" '''''''' ''''''' ", " % ",
" ",
" ''' ' ",
" ' '''''' '''' '' ( # ) $ * % + & ",
" ' '' ' ' ",
" ' ' ' '' ",
" ",
" ",
" ( ( ) ) ) * + ",
" ((((( ( (( (((( ) ))) ) )))))) ***** ********* +++ + + +++ ",
" (((( ( (( (( (((( ) ))))) )) ))) * ***** ** *** *** ++++++ + +++ ",
" ", " ",
" (((( ( ((( ))) ) )) *** * ++++ + ++ ",
" ((((((((( (((((((((( ))))))))))))))))) *********************+++++++++ ++++++++ ",
" (((((((( ((((((((((( )))))))))))))))) ******* ************ ++++++++ +++++++++ ",
" (((((((( ((((((((((( )))))))))))))))) ******************** ++++++++ +++++++++ ",
" ( ( ( ( ))) ) * * * * * + + + ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -19,22 +19,22 @@
" ", " ",
" ", " ",
" ", " ",
"!!! ! ### # ## $$$$ $ $$$ %%%% % &&& & & ", " ",
"!!!!!!!! !!!!!!! #################### $$$$$$$$$ $$$ $$$ %%%%%%%%% %%%%%%%%%%% &&&&&&&&&&&&&&&&&& ", " ! # # # $ % & ",
"!!!!!!!! !!!!!!!! ################### $$$$$$$$ $$$$$$$ %%%%%%%%%%%%%%%%%%%% &&&&&&& &&&&&&&&& ", " !!!!! ! ! !!! # ### # # ##### $$ $ $ $$ %%% % % %%% %%%%% &&&&& &&& &&& ",
"!!!!!!!! !!!!!!!! ################### $$$$$$$$ $$$$$$$ %%%%%%%%%%%%%%%%%%%% &&&&&&&&&&&&&&&&& ", " !!!! ! !!! !!! # ##### ## ##### $$$$ $ $ $ $$ %%%%%% %%%% % %% % & &&&&& &&& && ",
" ! ! ! ! # # # # $ $ $$ % % % % % & & & ", " ",
" ", " ",
" ", " ",
" ! ' # ( $ ) % * & + ", " ! ' # ( $ ) % * & + ",
" ", " ",
" ", " ",
" ", " ",
" '''' ' ' ((( ( (( )))) ) ) *** * * ** * +++ + + ", " ",
" ''''''''' ''''''' (((((((((((((((((( ))))))))) )))))) ********* ********** +++++++++++++++", " ' ' ( ( ( ) * * * + ",
" '''''''' '''''''' ((((((((((((((((( )))))))))))))) ******************* +++++++ ++++++", " ''''' ' '''' ( ((( ( (( ( (( ))) ) ) ))) * *** * **** ** +++++ +++ ",
" '''''''' '''''''' (((((((( ((((((( ))))))))))))))) ******************* ++++++++++++++", " '''' ' '''' '' ( (((((( ((( ((( )))))) ))))) * ***** ***** ** + +++++ ++++ ",
" ' ' ' ((( ( ( ) ) ) *** ** *** + + + ", " ** ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -19,11 +19,11 @@
" ", " ",
" ", " ",
" ", " ",
" !!! ! ### # # $$$$ $ $$$ %%% % %% &&& & && ''' ' '' ((( ( )))) ) )) ) ) **** * ** ++++ + + ", " ",
" !!!!!!!!!!!!!!!!! ################# $$$$$$$$$ $$$$$$$$$$ %%%%%%%%%%%%%%%%%%% &&&&&&&&&&&&&&&&& ''''''''''''''' (((((((((((((((((((())))))))) )))))))))) ********* ******** ++++++++++++++++ ", " ! ! # # $ $ % & & & ' ( ) * + + ",
" !!!!!!!!!!!!!!!! ################ $$$$$$$$ $$$$$$$$$$$ %%%%%%%% %%%%%%%% &&&&&&&&&&&&&&&& ''''''' '''''' ((((((( (((((((((((()))))))) )))))))))) ******** ********* ++++++++ ++++++ ", " ! !!! ! !!!!!! # ### # #### # $$$$$ $ $$ $$$$ %%%%% %%%% & &&& & &&&&&& ''''' ' ' ((((( ((((((((( )) ) )) ) )) *** * * *** +++ + ++++++ ",
" !!!!!!!!!!!!!!!! ################ $$$$$$$$ $$$$$$$$$$$ %%%%%%%%%%%%%%%%% &&&&&&&&&&&&&&&& '''''''''''''' (((((((((((((((((((()))))))) )))))))))) ******** ********* ++++++++ ++++++ ", " ! !!!!! !!!!!!! # ##### ## ### $$$$ $ $$ $$ $$$$ %%%%% % %%%%% & &&&&& && &&& ' ''''' '' ' ( ((((( (( ((( ((( )))) ) )) ))) ) ****** * *** ++++++ + ++ + ",
" ! ! ! ! # # # $ $ $ $ % % % % &&& & ' ' ' ( ( ( ( ( ) ) ) ))) * * * + + + ", " ) ",
" ", " ",
" ", " ",
" ! # $ % & ' ( ) * + ", " ! # $ % & ' ( ) * + ",

View file

@ -16,10 +16,10 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! !! !!! ", " !!! ! ",
" ! !!!!!!!!!!!!!!!! ", " ! ! !!!!! !! !!! ",
" !!!!!!! !!!!!!!! ", " !! !! !!! ",
" !!!!!!!!!!!!!!!! ", " ! ! ! ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -12,10 +12,10 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! ! !! ", " !!! ! !! ",
" !!!!!!!!!!!!!!!! ", " !!!!!! !!! !! ",
" !!!!!!!! !!!!!!! ", " ! !! !! !! ",
" !!!!!!!! !!!!!!! ", " ! ! ! ",
" ", " ",
" ! ", " ! ",
" ", " ",

View file

@ -12,10 +12,10 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! !! !!! ", " !!! ! ",
" !!!!!!!!!!!!!!!! ", " ! !!!!! !! !!! ",
" !!!!!!! !!!!!!!! ", " !! !! !!! ",
" !!!!!!!!!!!!!!!! ", " ! ! ! ",
" ", " ",
" ! ", " ! ",
" ", " ",

View file

@ -12,10 +12,10 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! !! !!! ", " !!! ! ",
" !!!!!!!!!!!!!!!! ", " ! !!!!! !! !!! ",
" !!!!!!! !!!!!!!! ", " !! !! !!! ",
" !!!!!!!!!!!!!!!! ", " ! ! ! ",
" ", " ",
" ! ", " ! ",
" ", " ",

View file

@ -20,10 +20,10 @@
" ! ", " ! ",
" ", " ",
" ", " ",
" !!!! ! !! ", " !!! ! !! ",
" !!!!!!!!!!!!!!!! ", " !!!!!! !!! !! ",
" !!!!!!!! !!!!!!! ", " ! !! !! !! ",
" !!!!!!!! !!!!!!! ", " ! ! ! ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,10 +20,10 @@
" ! ", " ! ",
" ", " ",
" ", " ",
" !!!! !! !!! ", " !!! ! ",
" !!!!!!!!!!!!!!!! ", " ! !!!!! !! !!! ",
" !!!!!!! !!!!!!!! ", " !! !! !!! ",
" !!!!!!!!!!!!!!!! ", " ! ! ! ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -20,10 +20,10 @@
" ! ", " ! ",
" ", " ",
" ", " ",
" !!!! !! !!! ", " !!! ! ",
" !!!!!!!!!!!!!!!! ", " ! !!!!! !! !!! ",
" !!!!!!! !!!!!!!! ", " !! !! !!! ",
" !!!!!!!!!!!!!!!! ", " ! ! ! ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -16,10 +16,10 @@
" ", " ",
" ", " ",
" ", " ",
" !!!! !! !!! ", " !!! ! ",
" !!!!!!!!!!!!!!!! ! ", " ! !!!!! !! !!! ! ",
" !!!!!!! !!!!!!!! ", " !! !! !!! ",
" !!!!!!!!!!!!!!!! ", " ! ! ! ",
" ", " ",
" ", " ",
" ", " ",

View file

@ -16,7 +16,8 @@ except ImportError:
visual_output_dir = "/tmp/mapnik-visual-images" visual_output_dir = "/tmp/mapnik-visual-images"
defaults = { defaults = {
'sizes': [(500, 100)] 'sizes': [(500, 100)],
'scales':[1.0,2.0]
} }
sizes_many_in_big_range = [(800, 100), (600, 100), (400, 100), sizes_many_in_big_range = [(800, 100), (600, 100), (400, 100),
@ -36,14 +37,12 @@ files = [
{'name': "lines-1", 'sizes': sizes_few_square,'bbox':default_text_box}, {'name': "lines-1", 'sizes': sizes_few_square,'bbox':default_text_box},
{'name': "lines-2", 'sizes': sizes_few_square,'bbox':default_text_box}, {'name': "lines-2", 'sizes': sizes_few_square,'bbox':default_text_box},
{'name': "lines-3", 'sizes': sizes_few_square,'bbox':default_text_box}, {'name': "lines-3", 'sizes': sizes_few_square,'bbox':default_text_box},
{'name': "lines-4", 'sizes': sizes_few_square,'bbox':default_text_box},
{'name': "lines-5", 'sizes': sizes_few_square,'bbox':default_text_box},
{'name': "lines-6", 'sizes': sizes_few_square,'bbox':default_text_box},
# https://github.com/mapnik/mapnik/issues/1696 # https://github.com/mapnik/mapnik/issues/1696
# https://github.com/mapnik/mapnik/issues/1521 # https://github.com/mapnik/mapnik/issues/1521
# fails with clang++ on os x # fails with clang++ on os x
#{'name': "lines-shield", 'sizes': sizes_few_square,'bbox':default_text_box}, #{'name': "lines-shield", 'sizes': sizes_few_square,'bbox':default_text_box},
{'name': "collision", 'sizes':[(600,400)]}, {'name': "collision", 'sizes':[(600,400)]},
{'name': "marker-svg-opacity"},
{'name': "marker-multi-policy", 'sizes':[(600,400)]}, {'name': "marker-multi-policy", 'sizes':[(600,400)]},
{'name': "marker-on-line", 'sizes':[(600,400)], {'name': "marker-on-line", 'sizes':[(600,400)],
'bbox': mapnik.Box2d(-10, 0, 15, 20)}, 'bbox': mapnik.Box2d(-10, 0, 15, 20)},
@ -55,6 +54,7 @@ files = [
{'name': "marker-on-hex-grid", 'sizes':[(600,400),(400,600),(257,256)]}, {'name': "marker-on-hex-grid", 'sizes':[(600,400),(400,600),(257,256)]},
{'name': "whole-centroid", 'sizes':[(600,400)], {'name': "whole-centroid", 'sizes':[(600,400)],
'bbox': mapnik.Box2d(736908, 4390316, 2060771, 5942346)}, 'bbox': mapnik.Box2d(736908, 4390316, 2060771, 5942346)},
{'name': "text-halo-rasterizer", 'sizes':[(600,400)]},
{'name': "simple-E", 'bbox':mapnik.Box2d(-0.05, -0.01, 0.95, 0.01)}, {'name': "simple-E", 'bbox':mapnik.Box2d(-0.05, -0.01, 0.95, 0.01)},
{'name': "simple-NE",'bbox':default_text_box}, {'name': "simple-NE",'bbox':default_text_box},
{'name': "simple-NW",'bbox':default_text_box}, {'name': "simple-NW",'bbox':default_text_box},
@ -67,7 +67,6 @@ files = [
{'name': "formatting-2",'bbox':default_text_box}, {'name': "formatting-2",'bbox':default_text_box},
{'name': "formatting-3",'bbox':default_text_box}, {'name': "formatting-3",'bbox':default_text_box},
{'name': "formatting-4",'bbox':default_text_box}, {'name': "formatting-4",'bbox':default_text_box},
{'name': "formatting", 'bbox':default_text_box},
{'name': "expressionformat",'bbox':default_text_box}, {'name': "expressionformat",'bbox':default_text_box},
{'name': "shieldsymbolizer-1", 'sizes': sizes_many_in_small_range,'bbox':default_text_box}, {'name': "shieldsymbolizer-1", 'sizes': sizes_many_in_small_range,'bbox':default_text_box},
{'name': "rtl-point", 'sizes': [(200, 200)],'bbox':default_text_box}, {'name': "rtl-point", 'sizes': [(200, 200)],'bbox':default_text_box},
@ -94,13 +93,6 @@ files = [
#{'name': "tiff-alpha-broken-assoc-alpha-raster", 'sizes':[(600,400)]}, #{'name': "tiff-alpha-broken-assoc-alpha-raster", 'sizes':[(600,400)]},
#{'name': "tiff-nodata-edge-raster", 'sizes':[(600,400)]}, #{'name': "tiff-nodata-edge-raster", 'sizes':[(600,400)]},
#{'name': "tiff-opaque-edge-raster", 'sizes':[(256,256)]}, #{'name': "tiff-opaque-edge-raster", 'sizes':[(256,256)]},
{'name': "shieldsymbolizer-2"},
{'name': "shieldsymbolizer-3"},
{'name': "shieldsymbolizer-4"},
{'name': "orientation", 'sizes': [(800, 200)]},
{'name': "hb-fontsets", 'sizes': [(800, 200)]},
{'name': "charspacing", 'sizes': [(200, 400)]},
{'name': "line_break", 'sizes': [(800, 800)]},
] ]
def report(diff,threshold,quiet=False): def report(diff,threshold,quiet=False):
@ -115,14 +107,15 @@ def report(diff,threshold,quiet=False):
else: else:
print '\x1b[32m✓\x1b[0m' print '\x1b[32m✓\x1b[0m'
def render(config, width, height, bbox, quiet=False, overwrite_failures=False): def render(config, width, height, bbox, scale_factor, quiet=False, overwrite_failures=False):
filename = config['name'] filename = config['name']
m = mapnik.Map(width, height) m = mapnik.Map(width, height)
postfix = "%s-%d-%d-%s" % (filename,width,height,scale_factor)
## AGG rendering ## AGG rendering
if config.get('agg',True): if config.get('agg',True):
expected = os.path.join(dirname, "images", '%s-%d-reference.png' % (filename, width)) expected_agg = os.path.join(dirname, "images", postfix + '-agg-reference.png')
actual = '%s-%d' % (filename, width) actual_agg = os.path.join(visual_output_dir, '%s-agg.png' % postfix)
try: try:
mapnik.load_map(m, os.path.join(dirname, "styles", "%s.xml" % filename), False) mapnik.load_map(m, os.path.join(dirname, "styles", "%s.xml" % filename), False)
if bbox is not None: if bbox is not None:
@ -131,38 +124,39 @@ def render(config, width, height, bbox, quiet=False, overwrite_failures=False):
m.zoom_all() m.zoom_all()
except Exception, e: except Exception, e:
sys.stderr.write(e.message + '\n') sys.stderr.write(e.message + '\n')
fail(actual,expected,str(e.message)) fail(actual_agg,expected_agg,str(e.message))
return return
actual_agg = os.path.join(visual_output_dir, '%s-agg.png' % actual)
if not quiet: if not quiet:
print "\"%s\" with size %dx%d with agg..." % (filename, width, height), print "\"%s\" with agg..." % (postfix),
try: try:
mapnik.render_to_file(m, actual_agg) mapnik.render_to_file(m, actual_agg, 'png8:m=h', scale_factor)
if not os.path.exists(expected): if not os.path.exists(expected_agg):
# generate it on the fly # generate it on the fly
fail(actual_agg,expected,None) fail(actual_agg,expected_agg,None)
else: else:
diff = compare(actual_agg, expected, threshold=1, alpha=True)
threshold = 0 threshold = 0
diff = compare(actual_agg, expected_agg, threshold=0, alpha=True)
if overwrite_failures and diff > threshold: if overwrite_failures and diff > threshold:
fail(actual_agg,expected,None) fail(actual_agg,expected_agg,None)
else: else:
report(diff,threshold,quiet) report(diff,threshold,quiet)
except Exception, e: except Exception, e:
sys.stderr.write(e.message + '\n') sys.stderr.write(e.message + '\n')
fail(actual_agg,expected,str(e.message)) fail(actual_agg,expected_agg,str(e.message))
### TODO - set up tests to compare agg and cairo png output ### TODO - set up tests to compare agg and cairo png output
### Cairo rendering ### Cairo rendering
if config.get('cairo',True): if config.get('cairo',True):
expected_cairo = os.path.join(dirname, "images", '%s-%d-reference-cairo.png' % (filename, width)) expected_cairo = os.path.join(dirname, "images", postfix + '-cairo-reference.png')
actual_cairo = os.path.join(visual_output_dir, '%s-cairo.png' % actual) actual_cairo = os.path.join(visual_output_dir, '%s-cairo.png' % postfix)
if not quiet: if not quiet:
print "\"%s\" with size %dx%d with cairo..." % (filename, width, height), print "\"%s\" with cairo..." % (postfix),
try: try:
mapnik.render_to_file(m, actual_cairo,'ARGB32') mapnik.render_to_file(m, actual_cairo,'ARGB32', scale_factor)
# open and re-save as png8 to save space
new_im = mapnik.Image.open(actual_cairo)
new_im.save(actual_cairo,'png8:m=h')
if not os.path.exists(expected_cairo): if not os.path.exists(expected_cairo):
# generate it on the fly # generate it on the fly
fail(actual_cairo,expected_cairo,None) fail(actual_cairo,expected_cairo,None)
@ -179,21 +173,22 @@ def render(config, width, height, bbox, quiet=False, overwrite_failures=False):
fail(actual_cairo,expected_cairo,str(e.message)) fail(actual_cairo,expected_cairo,str(e.message))
## Grid rendering ## Grid rendering
if config.get('grid',True): # TODO - grid renderer does not support scale_factor yet via python
expected_grid = os.path.join(dirname, "grids", '%s-%d-reference.json' % (filename, width)) if scale_factor == 1.0 and config.get('grid',True):
actual_grid = os.path.join(visual_output_dir, '%s-grid.json' % actual) expected_grid = os.path.join(dirname, "grids", postfix + '-grid-reference.json')
actual_grid = os.path.join(visual_output_dir, '%s-grid.json' % postfix)
if not quiet: if not quiet:
print "\"%s\" with size %dx%d with grid..." % (filename, width, height), print "\"%s\" with grid..." % (postfix),
try: try:
grid = mapnik.Grid(m.width,m.height) grid = mapnik.Grid(m.width,m.height)
mapnik.render_layer(m,grid,layer=0) mapnik.render_layer(m,grid,layer=0)
utf1 = grid.encode('utf',resolution=4) utf1 = grid.encode('utf',resolution=4)
open(actual_grid,'wb').write(json.dumps(utf1,indent=2)) open(actual_grid,'wb').write(json.dumps(utf1,indent=1))
if not os.path.exists(expected_grid): if not os.path.exists(expected_grid):
# generate it on the fly # generate it on the fly
fail(actual_grid,expected_grid,None) fail(actual_grid,expected_grid,None)
else: else:
threshold = 1 threshold = 0
diff = compare_grids(actual_grid, expected_grid, threshold=threshold, alpha=False) diff = compare_grids(actual_grid, expected_grid, threshold=threshold, alpha=False)
if overwrite_failures and diff > threshold: if overwrite_failures and diff > threshold:
fail(actual_grid,expected_grid,None) fail(actual_grid,expected_grid,None)
@ -201,7 +196,7 @@ def render(config, width, height, bbox, quiet=False, overwrite_failures=False):
report(diff,threshold,quiet) report(diff,threshold,quiet)
except Exception, e: except Exception, e:
sys.stderr.write(e.message + '\n') sys.stderr.write(e.message + '\n')
fail(actual_grid,expected,str(e.message)) fail(actual_grid,expected_grid,str(e.message))
return m return m
if __name__ == "__main__": if __name__ == "__main__":
@ -217,26 +212,29 @@ if __name__ == "__main__":
else: else:
overwrite_failures = False overwrite_failures = False
if len(sys.argv) == 2:
files = [{"name": sys.argv[1], "sizes": sizes_few_square}]
elif len(sys.argv) > 2: elif len(sys.argv) > 2:
files = [] files = []
if sys.argv[1] == "-s": for name in sys.argv[1:]:
name = sys.argv[2] files.append({"name": name})
for f in files:
if f['name'] == name:
active.append(f)
else:
for name in sys.argv[1:]:
active.append({"name": name})
if not os.path.exists(visual_output_dir): if not os.path.exists(visual_output_dir):
os.makedirs(visual_output_dir) os.makedirs(visual_output_dir)
if 'osm' in mapnik.DatasourceCache.plugin_names(): if 'osm' in mapnik.DatasourceCache.plugin_names():
for f in active: for f in files:
config = dict(defaults) config = dict(defaults)
config.update(f) config.update(f)
for size in config['sizes']: for size in config['sizes']:
m = render(config, size[0], size[1], config.get('bbox'), quiet=quiet, overwrite_failures=overwrite_failures) for scale_factor in config['scales']:
m = render(config,
size[0],
size[1],
config.get('bbox'),
scale_factor,
quiet=quiet,
overwrite_failures=overwrite_failures)
mapnik.save_map(m, os.path.join(dirname, 'xml_output', "%s-out.xml" % config['name'])) mapnik.save_map(m, os.path.join(dirname, 'xml_output', "%s-out.xml" % config['name']))
summary(generate=True) summary(generate=True)