From: johanengelen Date: Sun, 13 Apr 2008 20:19:07 +0000 (+0000) Subject: sync with current 2geom, split_at_discontinuities method and SVGEllipticalArc X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=e3727c190ff3697e379586bb41c33b8e5929a08a;p=inkscape.git sync with current 2geom, split_at_discontinuities method and SVGEllipticalArc --- diff --git a/src/2geom/path.cpp b/src/2geom/path.cpp index 3d8d5ead3..a529c3751 100644 --- a/src/2geom/path.cpp +++ b/src/2geom/path.cpp @@ -221,29 +221,7 @@ void Path::check_continuity(Sequence::iterator first_replaced, } } -Rect SVGEllipticalArc::boundsFast() const { - throwNotImplemented(); -} -Rect SVGEllipticalArc::boundsExact() const { - throwNotImplemented(); -} -Rect SVGEllipticalArc::boundsLocal(Interval i, unsigned deg) const { - throwNotImplemented(); -} - -std::vector SVGEllipticalArc::pointAndDerivatives(Coord t, unsigned n) const { - throwNotImplemented(); -} - -std::vector SVGEllipticalArc::roots(double v, Dim2 d) const { - throwNotImplemented(); -} - -D2 SVGEllipticalArc::toSBasis() const { - return D2(Linear(initial_[X], final_[X]), Linear(initial_[Y], final_[Y])); -} - -} +} // end namespace Geom /* Local Variables: diff --git a/src/2geom/path.h b/src/2geom/path.h index f314e6efa..fee96a86a 100644 --- a/src/2geom/path.h +++ b/src/2geom/path.h @@ -1,7 +1,11 @@ /* * Path - Series of continuous curves * - * Copyright 2007 MenTaLguY + * Authors: + * MenTaLguY + * Marco Cecchetti + * + * Copyright 2007-2008 authors * * This library is free software; you can redistribute it and/or * modify it either under the terms of the GNU Lesser General Public @@ -31,6 +35,7 @@ #define SEEN_GEOM_PATH_H #include "point.h" +#include "angle.h" #include #include #include "exception.h" @@ -264,84 +269,222 @@ typedef BezierCurve<1> LineSegment; typedef BezierCurve<2> QuadraticBezier; typedef BezierCurve<3> CubicBezier; -class SVGEllipticalArc : public Curve { -public: - SVGEllipticalArc() {} - SVGEllipticalArc(Point initial, double rx, double ry, - double x_axis_rotation, bool large_arc, - bool sweep, Point final) - : initial_(initial), rx_(rx), ry_(ry), x_axis_rotation_(x_axis_rotation), - large_arc_(large_arc), sweep_(sweep), final_(final) - {} - Curve *duplicate() const { return new SVGEllipticalArc(*this); } - Point initialPoint() const { return initial_; } - Point finalPoint() const { return final_; } +class SVGEllipticalArc : public Curve +{ + public: + SVGEllipticalArc() + {} + + SVGEllipticalArc( Point _initial_point, double _rx, double _ry, + double _rot_angle, bool _large_arc, bool _sweep, + Point _final_point + ) + : m_initial_point(_initial_point), m_final_point(_final_point), + m_rx(_rx), m_ry(_ry), m_rot_angle(_rot_angle), + m_large_arc(_large_arc), m_sweep(_sweep) + { + //assert( (ray(X) >= 0) && (ray(Y) >= 0) ); + if ( are_near(initialPoint(), finalPoint()) ) + { + m_start_angle = m_end_angle = 0; + m_center = initialPoint(); + } + else + { + calculate_center_and_extreme_angles(); + } + } + + Curve* duplicate() const + { + return new SVGEllipticalArc(*this); + } + + double center(Dim2 i) const + { + return m_center[i]; + } - void setInitial(Point v) { initial_ = v; } - void setFinal(Point v) { final_ = v; } + Point center() const + { + return m_center; + } - //TODO: implement funcs + Point initialPoint() const + { + return m_initial_point; + } - bool isDegenerate() const { return toSBasis().isConstant(); } - Rect boundsFast() const; - Rect boundsExact() const; - Rect boundsLocal(Interval i, unsigned deg) const; + Point finalPoint() const + { + return m_final_point; + } - int winding(Point p) const { - return SBasisCurve(toSBasis()).winding(p); - } + double start_angle() const + { + return m_start_angle; + } - std::vector roots(double v, Dim2 d) const; + double end_angle() const + { + return m_end_angle; + } - inline std::pair - subdivide(Coord t) { - SVGEllipticalArc a(*this), b(*this); - a.final_ = b.initial_ = pointAt(t); - return std::pair(a, b); - } + double ray(Dim2 i) const + { + return (i == 0) ? m_rx : m_ry; + } -// TODO: how are the flags affected by reducing an arc from more than 180deg to less than 180deg? - Curve *portion(double f, double t) const { - SVGEllipticalArc *ret = new SVGEllipticalArc (*this); - ret->initial_ = pointAt(f); - ret->final_ = pointAt(t); - return ret; - } + bool large_arc_flag() const + { + return m_large_arc; + } -// TODO: incomplete/buggy - Curve *reverse(double /*f*/, double /*t*/) const { - SVGEllipticalArc *ret = new SVGEllipticalArc (*this); - ret->initial_ = final_; - ret->final_ = initial_; - return ret; - } + bool sweep_flag() const + { + return m_sweep; + } - //TODO: this next def isn't right - Curve *transformed(Matrix const & m) const { - SVGEllipticalArc *ret = new SVGEllipticalArc (*this); - ret->initial_ = initial_ * m; - ret->final_ = final_ * m; - return ret; - } + double rotation_angle() const + { + return m_rot_angle; + } - Curve *derivative() const { throwNotImplemented(); } + void setInitial( const Point _point) + { + m_initial_point = _point; + calculate_center_and_extreme_angles(); + } + + void setFinal( const Point _point) + { + m_final_point = _point; + calculate_center_and_extreme_angles(); + } + + void setExtremes( const Point& _initial_point, const Point& _final_point ) + { + m_initial_point = _initial_point; + m_final_point = _final_point; + calculate_center_and_extreme_angles(); + } + + bool isDegenerate() const + { + return are_near(initialPoint(), finalPoint()); + } + + // TODO: native implementation of the following methods + Rect boundsFast() const + { + return SBasisCurve(toSBasis()).boundsFast(); + } + + Rect boundsExact() const + { + return SBasisCurve(toSBasis()).boundsExact(); + } + + Rect boundsLocal(Interval i, unsigned int deg) const + { + return SBasisCurve(toSBasis()).boundsLocal(i, deg); + } + + std::vector roots(double v, Dim2 d) const + { + return SBasisCurve(toSBasis()).roots(v, d); + } + + int winding(Point p) const + { + return SBasisCurve(toSBasis()).winding(p); + } + + Curve *derivative() const + { + return SBasisCurve(toSBasis()).derivative(); + } + + Curve *transformed(Matrix const &m) const + { + return SBasisCurve(toSBasis()).transformed(m); + } + + std::vector pointAndDerivatives(Coord t, unsigned n) const + { + return SBasisCurve(toSBasis()).pointAndDerivatives(t, n); + } + + D2 toSBasis() const; + + double valueAt(Coord t, Dim2 d) const; + + Point pointAt(Coord t) const + { + Coord tt = from_01_to_02PI(t); + double sin_rot_angle = std::sin(rotation_angle()); + double cos_rot_angle = std::cos(rotation_angle()); + Matrix m( ray(X) * cos_rot_angle, ray(X) * sin_rot_angle, + -ray(Y) * sin_rot_angle, ray(Y) * cos_rot_angle, + center(X), center(Y) ); + Point p( std::cos(tt), std::sin(tt) ); + return p * m; + } + + std::pair + subdivide(Coord t) const + { + SVGEllipticalArc* arc1 = static_cast(portion(0, t)); + SVGEllipticalArc* arc2 = static_cast(portion(t, 1)); + assert( arc1 != NULL && arc2 != NULL); + std::pair arc_pair(*arc1, *arc2); + delete arc1; + delete arc2; + return arc_pair; + } + + Curve* portion(double f, double t) const; + + // the arc is the same but traversed in the opposite direction + Curve* reverse() const + { + SVGEllipticalArc* rarc = new SVGEllipticalArc( *this ); + rarc->m_sweep = !m_sweep; + rarc->m_initial_point = m_final_point; + rarc->m_final_point = m_initial_point; + rarc->m_start_angle = m_end_angle; + rarc->m_end_angle = m_start_angle; + return rarc; + } + + private: + double sweep_angle() const + { + Coord d = end_angle() - start_angle(); + if ( !sweep_flag() ) d = -d; + if ( d < 0 ) + d += 2*M_PI; + return d; + } + + Coord from_01_to_02PI(Coord t) const; + + void calculate_center_and_extreme_angles(); + + private: + Point m_initial_point, m_final_point; + double m_rx, m_ry, m_rot_angle; + bool m_large_arc, m_sweep; + double m_start_angle, m_end_angle; + Point m_center; + +}; // end class SVGEllipticalArc - std::vector pointAndDerivatives(Coord t, unsigned n) const; - D2 toSBasis() const; -private: - Point initial_; - double rx_; - double ry_; - double x_axis_rotation_; - bool large_arc_; - bool sweep_; - Point final_; -}; template class BaseIterator diff --git a/src/2geom/svg-path-parser.cpp b/src/2geom/svg-path-parser.cpp index ba0fbe7da..fbe017c8a 100644 --- a/src/2geom/svg-path-parser.cpp +++ b/src/2geom/svg-path-parser.cpp @@ -1,4 +1,4 @@ -#line 1 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 1 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" /* * parse SVG path specifications * @@ -129,7 +129,7 @@ private: }; -#line 133 "/home/mental/trees/lib2geom/src/svg-path-parser.cpp" +#line 133 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.cpp" static const char _svg_path_actions[] = { 0, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, 1, 15, 1, @@ -152,7 +152,7 @@ static const char _svg_path_actions[] = { }; static const short _svg_path_key_offsets[] = { - 0, 7, 7, 16, 25, 28, 30, 42, + 0, 0, 7, 16, 25, 28, 30, 42, 52, 55, 57, 90, 121, 124, 126, 138, 148, 151, 153, 186, 195, 207, 216, 249, 256, 263, 265, 275, 283, 290, 292, 304, @@ -626,7 +626,7 @@ static const char _svg_path_trans_keys[] = { }; static const char _svg_path_single_lengths[] = { - 5, 0, 5, 5, 1, 0, 6, 4, + 0, 5, 5, 5, 1, 0, 6, 4, 1, 0, 27, 25, 1, 0, 6, 4, 1, 0, 27, 5, 6, 5, 27, 3, 3, 0, 6, 4, 3, 0, 6, 4, @@ -670,7 +670,7 @@ static const char _svg_path_single_lengths[] = { }; static const char _svg_path_range_lengths[] = { - 1, 0, 2, 2, 1, 1, 3, 3, + 0, 1, 2, 2, 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 3, 3, 1, 1, 3, 2, 3, 2, 3, 2, 2, 1, 2, 2, 2, 1, 3, 3, @@ -714,7 +714,7 @@ static const char _svg_path_range_lengths[] = { }; static const short _svg_path_index_offsets[] = { - 0, 7, 7, 15, 23, 26, 28, 38, + 0, 0, 7, 15, 23, 26, 28, 38, 46, 49, 51, 82, 111, 114, 116, 126, 134, 137, 139, 170, 178, 188, 196, 227, 233, 239, 241, 250, 257, 263, 265, 275, @@ -758,605 +758,606 @@ static const short _svg_path_index_offsets[] = { }; static const short _svg_path_indicies[] = { - 73, 74, 74, 75, 76, 74, 0, 571, - 571, 572, 572, 573, 571, 574, 0, 631, - 631, 632, 632, 633, 631, 634, 0, 670, - 513, 0, 512, 0, 509, 509, 511, 548, - 514, 514, 509, 510, 512, 0, 490, 490, - 434, 436, 490, 435, 437, 0, 393, 127, - 0, 126, 0, 122, 123, 123, 125, 148, - 128, 129, 130, 131, 132, 133, 134, 135, - 136, 137, 138, 139, 140, 130, 141, 142, - 143, 144, 145, 146, 147, 138, 123, 124, - 126, 0, 73, 611, 611, 613, 614, 78, - 79, 80, 81, 75, 82, 83, 84, 85, - 86, 87, 88, 89, 90, 76, 91, 92, - 93, 94, 86, 611, 612, 615, 0, 671, - 519, 0, 518, 0, 515, 515, 517, 550, - 520, 520, 515, 516, 518, 0, 491, 491, - 438, 440, 491, 439, 441, 0, 394, 155, - 0, 154, 0, 150, 151, 151, 153, 176, - 156, 157, 158, 159, 160, 161, 162, 163, - 164, 165, 166, 167, 168, 158, 169, 170, - 171, 172, 173, 174, 175, 166, 151, 152, - 154, 0, 613, 613, 612, 612, 614, 613, - 615, 0, 515, 515, 517, 518, 520, 520, - 515, 516, 519, 0, 438, 438, 439, 439, - 440, 438, 441, 0, 150, 151, 151, 153, - 154, 156, 157, 158, 159, 160, 161, 162, - 163, 164, 165, 166, 167, 168, 158, 169, - 170, 171, 172, 173, 174, 175, 166, 151, - 152, 155, 0, 47, 47, 48, 47, 49, - 0, 8, 8, 9, 8, 10, 0, 385, - 0, 25, 25, 26, 27, 31, 31, 25, - 498, 0, 12, 12, 13, 14, 12, 15, - 0, 13, 13, 14, 13, 15, 0, 35, - 0, 32, 32, 34, 38, 37, 37, 32, - 33, 35, 0, 20, 20, 16, 18, 20, - 17, 19, 0, 2, 3, 0, 23, 0, - 21, 21, 22, 24, 24, 21, 23, 0, - 11, 11, 5, 6, 7, 11, 0, 5, - 5, 6, 7, 5, 0, 45, 45, 46, - 45, 0, 722, 722, 716, 717, 718, 722, - 0, 716, 716, 717, 718, 716, 0, 567, - 567, 568, 567, 0, 651, 651, 647, 430, - 651, 429, 433, 0, 676, 69, 0, 68, - 0, 351, 351, 352, 375, 70, 70, 351, - 66, 68, 0, 497, 497, 478, 480, 497, - 479, 481, 0, 406, 380, 0, 379, 0, - 350, 377, 377, 378, 382, 355, 356, 381, - 358, 359, 360, 361, 362, 363, 364, 365, - 366, 367, 381, 368, 369, 370, 371, 372, - 373, 374, 365, 377, 379, 0, 73, 95, - 95, 8, 9, 78, 79, 80, 81, 75, - 82, 83, 84, 85, 86, 87, 88, 89, - 90, 76, 91, 92, 93, 94, 86, 95, - 10, 0, 25, 25, 26, 29, 31, 31, - 25, 30, 0, 40, 40, 41, 562, 561, - 561, 40, 33, 30, 0, 483, 483, 425, - 426, 483, 17, 427, 0, 425, 425, 17, - 17, 426, 425, 427, 0, 501, 0, 499, - 499, 500, 38, 503, 503, 499, 33, 501, - 0, 482, 482, 422, 18, 423, 424, 482, - 17, 19, 0, 422, 422, 17, 17, 18, - 423, 424, 422, 19, 0, 63, 63, 64, - 23, 24, 24, 63, 3, 0, 723, 723, - 719, 720, 721, 723, 0, 719, 719, 720, - 721, 719, 0, 569, 569, 570, 569, 0, - 489, 489, 428, 430, 431, 432, 489, 429, - 433, 0, 428, 428, 429, 429, 430, 431, - 432, 428, 433, 0, 71, 71, 72, 68, - 70, 70, 71, 66, 69, 0, 496, 496, - 474, 476, 496, 475, 477, 0, 405, 354, - 0, 353, 0, 350, 351, 351, 352, 375, - 355, 356, 357, 358, 359, 360, 361, 362, - 363, 364, 365, 366, 367, 357, 368, 369, - 370, 371, 372, 373, 374, 365, 351, 66, - 353, 0, 478, 478, 479, 479, 480, 478, - 481, 0, 350, 377, 377, 378, 379, 355, - 356, 381, 358, 359, 360, 361, 362, 363, - 364, 365, 366, 367, 381, 368, 369, 370, - 371, 372, 373, 374, 365, 377, 380, 0, - 50, 50, 51, 51, 52, 50, 53, 0, - 98, 98, 97, 97, 99, 98, 100, 0, - 391, 392, 0, 507, 0, 504, 504, 506, - 546, 508, 508, 504, 505, 507, 0, 484, - 484, 486, 487, 484, 485, 488, 0, 790, - 788, 0, 755, 0, 751, 751, 753, 754, - 756, 756, 751, 752, 755, 0, 787, 787, - 773, 775, 787, 774, 776, 0, 748, 739, - 0, 710, 0, 689, 689, 691, 692, 711, - 711, 689, 690, 710, 0, 736, 736, 724, - 726, 736, 725, 727, 0, 677, 656, 0, - 655, 0, 652, 652, 654, 704, 657, 657, - 652, 653, 655, 0, 648, 648, 635, 637, - 648, 636, 638, 0, 672, 525, 0, 524, - 0, 521, 521, 523, 552, 526, 526, 521, - 522, 524, 0, 492, 492, 458, 460, 492, - 459, 461, 0, 401, 243, 0, 242, 0, - 238, 239, 239, 241, 264, 244, 245, 246, - 247, 248, 249, 250, 251, 252, 253, 254, - 255, 256, 246, 257, 258, 259, 260, 261, - 262, 263, 254, 239, 240, 242, 0, 73, - 96, 96, 98, 99, 78, 79, 80, 81, - 75, 82, 83, 84, 85, 86, 87, 88, - 89, 90, 76, 91, 92, 93, 94, 86, - 96, 97, 100, 0, 504, 504, 506, 507, - 508, 508, 504, 505, 392, 0, 486, 486, - 485, 485, 487, 486, 488, 0, 751, 751, - 753, 755, 756, 756, 751, 752, 788, 0, - 773, 773, 774, 774, 775, 773, 776, 0, - 689, 689, 691, 710, 711, 711, 689, 690, - 739, 0, 724, 724, 725, 725, 726, 724, - 727, 0, 652, 652, 654, 655, 657, 657, - 652, 653, 656, 0, 635, 635, 636, 636, - 637, 635, 638, 0, 521, 521, 523, 524, - 526, 526, 521, 522, 525, 0, 458, 458, - 459, 459, 460, 458, 461, 0, 238, 239, - 239, 241, 242, 244, 245, 246, 247, 248, - 249, 250, 251, 252, 253, 254, 255, 256, - 246, 257, 258, 259, 260, 261, 262, 263, - 254, 239, 240, 243, 0, 416, 416, 265, - 0, 265, 0, 238, 239, 239, 241, 264, - 244, 245, 247, 248, 249, 250, 251, 252, - 253, 254, 255, 256, 257, 258, 259, 260, - 261, 262, 263, 254, 239, 240, 265, 0, - 583, 583, 584, 584, 585, 583, 586, 0, - 446, 446, 447, 447, 448, 446, 449, 0, - 396, 397, 0, 388, 0, 178, 179, 179, - 181, 204, 184, 185, 624, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 624, - 197, 198, 199, 200, 201, 202, 203, 194, - 179, 180, 623, 0, 73, 621, 621, 442, - 444, 78, 79, 80, 81, 75, 82, 83, - 84, 85, 86, 87, 88, 89, 90, 76, - 91, 92, 93, 94, 86, 621, 443, 445, - 0, 395, 183, 0, 182, 0, 178, 179, - 179, 181, 204, 184, 185, 186, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, - 186, 197, 198, 199, 200, 201, 202, 203, - 194, 179, 180, 182, 0, 442, 442, 443, - 443, 444, 442, 445, 0, 178, 179, 179, - 181, 182, 184, 185, 186, 187, 188, 189, - 190, 191, 192, 193, 194, 195, 196, 186, - 197, 198, 199, 200, 201, 202, 203, 194, - 179, 180, 183, 0, 412, 412, 205, 0, - 205, 0, 178, 179, 179, 181, 204, 184, - 185, 187, 188, 189, 190, 191, 192, 193, - 194, 195, 196, 197, 198, 199, 200, 201, - 202, 203, 194, 179, 180, 205, 0, 575, - 575, 576, 576, 577, 575, 578, 0, 761, - 761, 762, 762, 763, 761, 764, 0, 781, - 781, 782, 782, 783, 781, 784, 0, 750, - 741, 0, 714, 0, 699, 699, 701, 702, - 715, 715, 699, 700, 714, 0, 738, 738, - 732, 734, 738, 733, 735, 0, 679, 668, - 0, 667, 0, 664, 664, 666, 708, 669, - 669, 664, 665, 667, 0, 650, 650, 643, - 645, 650, 644, 646, 0, 674, 537, 0, - 536, 0, 533, 533, 535, 556, 538, 538, - 533, 534, 536, 0, 494, 494, 466, 468, - 494, 467, 469, 0, 403, 299, 0, 298, - 0, 294, 295, 295, 297, 320, 300, 301, - 302, 303, 304, 305, 306, 307, 308, 309, - 310, 311, 312, 302, 313, 314, 315, 316, - 317, 318, 319, 310, 295, 296, 298, 0, - 73, 786, 786, 781, 783, 78, 79, 80, - 81, 75, 82, 83, 84, 85, 86, 87, - 88, 89, 90, 76, 91, 92, 93, 94, - 86, 786, 782, 784, 0, 699, 699, 701, - 714, 715, 715, 699, 700, 741, 0, 732, - 732, 733, 733, 734, 732, 735, 0, 664, - 664, 666, 667, 669, 669, 664, 665, 668, - 0, 643, 643, 644, 644, 645, 643, 646, - 0, 533, 533, 535, 536, 538, 538, 533, - 534, 537, 0, 466, 466, 467, 467, 468, - 466, 469, 0, 294, 295, 295, 297, 298, - 300, 301, 302, 303, 304, 305, 306, 307, - 308, 309, 310, 311, 312, 302, 313, 314, - 315, 316, 317, 318, 319, 310, 295, 296, - 299, 0, 418, 418, 321, 0, 321, 0, - 294, 295, 295, 297, 320, 300, 301, 303, - 304, 305, 306, 307, 308, 309, 310, 311, - 312, 313, 314, 315, 316, 317, 318, 319, - 310, 295, 296, 321, 0, 757, 757, 758, - 758, 759, 757, 760, 0, 777, 777, 778, - 778, 779, 777, 780, 0, 749, 740, 0, - 712, 0, 694, 694, 696, 697, 713, 713, - 694, 695, 712, 0, 737, 737, 728, 730, - 737, 729, 731, 0, 678, 662, 0, 661, - 0, 658, 658, 660, 706, 663, 663, 658, - 659, 661, 0, 649, 649, 639, 641, 649, - 640, 642, 0, 673, 531, 0, 530, 0, - 527, 527, 529, 554, 532, 532, 527, 528, - 530, 0, 493, 493, 462, 464, 493, 463, - 465, 0, 402, 271, 0, 270, 0, 266, - 267, 267, 269, 292, 272, 273, 274, 275, - 276, 277, 278, 279, 280, 281, 282, 283, - 284, 274, 285, 286, 287, 288, 289, 290, - 291, 282, 267, 268, 270, 0, 73, 785, - 785, 777, 779, 78, 79, 80, 81, 75, - 82, 83, 84, 85, 86, 87, 88, 89, - 90, 76, 91, 92, 93, 94, 86, 785, - 778, 780, 0, 694, 694, 696, 712, 713, - 713, 694, 695, 740, 0, 728, 728, 729, - 729, 730, 728, 731, 0, 658, 658, 660, - 661, 663, 663, 658, 659, 662, 0, 639, - 639, 640, 640, 641, 639, 642, 0, 527, - 527, 529, 530, 532, 532, 527, 528, 531, - 0, 462, 462, 463, 463, 464, 462, 465, - 0, 266, 267, 267, 269, 270, 272, 273, - 274, 275, 276, 277, 278, 279, 280, 281, - 282, 283, 284, 274, 285, 286, 287, 288, - 289, 290, 291, 282, 267, 268, 271, 0, - 417, 417, 293, 0, 293, 0, 266, 267, - 267, 269, 292, 272, 273, 275, 276, 277, - 278, 279, 280, 281, 282, 283, 284, 285, - 286, 287, 288, 289, 290, 291, 282, 267, - 268, 293, 0, 579, 579, 580, 580, 581, - 579, 582, 0, 618, 618, 617, 617, 619, - 618, 620, 0, 675, 543, 0, 542, 0, - 539, 539, 541, 558, 544, 544, 539, 540, - 542, 0, 495, 495, 470, 472, 495, 471, - 473, 0, 404, 327, 0, 326, 0, 322, - 323, 323, 325, 348, 328, 329, 330, 331, - 332, 333, 334, 335, 336, 337, 338, 339, - 340, 330, 341, 342, 343, 344, 345, 346, - 347, 338, 323, 324, 326, 0, 73, 616, - 616, 618, 619, 78, 79, 80, 81, 75, - 82, 83, 84, 85, 86, 87, 88, 89, - 90, 76, 91, 92, 93, 94, 86, 616, - 617, 620, 0, 539, 539, 541, 542, 544, - 544, 539, 540, 543, 0, 470, 470, 471, - 471, 472, 470, 473, 0, 322, 323, 323, - 325, 326, 328, 329, 330, 331, 332, 333, - 334, 335, 336, 337, 338, 339, 340, 330, - 341, 342, 343, 344, 345, 346, 347, 338, - 323, 324, 327, 0, 419, 419, 349, 0, - 349, 0, 322, 323, 323, 325, 348, 328, - 329, 331, 332, 333, 334, 335, 336, 337, - 338, 339, 340, 341, 342, 343, 344, 345, - 346, 347, 338, 323, 324, 349, 0, 587, - 587, 588, 588, 589, 587, 590, 0, 454, - 454, 455, 455, 456, 454, 457, 0, 399, - 400, 0, 390, 0, 208, 209, 209, 211, - 234, 214, 215, 628, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 628, 227, - 228, 229, 230, 231, 232, 233, 224, 209, - 210, 627, 0, 73, 622, 622, 450, 452, - 78, 79, 80, 81, 75, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 76, 91, - 92, 93, 94, 86, 622, 451, 453, 0, - 398, 213, 0, 212, 0, 208, 209, 209, - 211, 234, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 216, - 227, 228, 229, 230, 231, 232, 233, 224, - 209, 210, 212, 0, 450, 450, 451, 451, - 452, 450, 453, 0, 208, 209, 209, 211, - 212, 214, 215, 216, 217, 218, 219, 220, - 221, 222, 223, 224, 225, 226, 216, 227, - 228, 229, 230, 231, 232, 233, 224, 209, - 210, 213, 0, 414, 414, 235, 0, 235, - 0, 208, 209, 209, 211, 234, 214, 215, - 217, 218, 219, 220, 221, 222, 223, 224, - 225, 226, 227, 228, 229, 230, 231, 232, - 233, 224, 209, 210, 235, 0, 101, 102, - 102, 103, 104, 105, 106, 107, 108, 109, - 110, 111, 112, 113, 114, 115, 116, 117, - 118, 119, 120, 121, 112, 102, 0, 73, - 77, 77, 78, 79, 80, 81, 75, 82, - 83, 84, 85, 86, 87, 88, 89, 90, - 76, 91, 92, 93, 94, 86, 77, 0, - 54, 54, 55, 54, 56, 0, 57, 57, - 58, 58, 59, 57, 60, 0, 603, 603, - 604, 604, 605, 603, 606, 0, 178, 179, - 179, 181, 625, 184, 185, 624, 187, 188, - 189, 190, 191, 192, 193, 194, 195, 196, - 624, 197, 198, 199, 200, 201, 202, 203, - 194, 179, 180, 626, 0, 413, 413, 387, - 0, 387, 0, 178, 179, 179, 181, 204, - 184, 185, 187, 188, 189, 190, 191, 192, + 0, 2, 2, 3, 4, 2, 1, 5, + 5, 6, 6, 7, 5, 8, 1, 9, + 9, 10, 10, 11, 9, 12, 1, 13, + 14, 1, 15, 1, 16, 16, 18, 19, + 20, 20, 16, 17, 15, 1, 21, 21, + 23, 24, 21, 22, 25, 1, 26, 27, + 1, 28, 1, 29, 30, 30, 32, 33, + 34, 35, 36, 37, 38, 39, 40, 41, + 42, 43, 44, 45, 46, 36, 47, 48, + 49, 50, 51, 52, 53, 44, 30, 31, + 28, 1, 0, 54, 54, 56, 57, 59, + 60, 61, 62, 3, 63, 64, 65, 66, + 67, 68, 69, 70, 71, 4, 72, 73, + 74, 75, 67, 54, 55, 58, 1, 76, + 77, 1, 78, 1, 79, 79, 81, 82, + 83, 83, 79, 80, 78, 1, 84, 84, + 86, 87, 84, 85, 88, 1, 89, 90, + 1, 91, 1, 92, 93, 93, 95, 96, + 97, 98, 99, 100, 101, 102, 103, 104, + 105, 106, 107, 108, 109, 99, 110, 111, + 112, 113, 114, 115, 116, 107, 93, 94, + 91, 1, 56, 56, 55, 55, 57, 56, + 58, 1, 79, 79, 81, 78, 83, 83, + 79, 80, 77, 1, 86, 86, 85, 85, + 87, 86, 88, 1, 92, 93, 93, 95, + 91, 97, 98, 99, 100, 101, 102, 103, + 104, 105, 106, 107, 108, 109, 99, 110, + 111, 112, 113, 114, 115, 116, 107, 93, + 94, 90, 1, 117, 117, 118, 117, 119, + 1, 120, 120, 121, 120, 122, 1, 123, + 1, 124, 124, 125, 126, 128, 128, 124, + 127, 1, 129, 129, 130, 131, 129, 132, + 1, 130, 130, 131, 130, 132, 1, 133, + 1, 134, 134, 136, 137, 138, 138, 134, + 135, 133, 1, 139, 139, 141, 142, 139, + 140, 143, 1, 144, 145, 1, 146, 1, + 147, 147, 148, 149, 149, 147, 146, 1, + 150, 150, 151, 152, 153, 150, 1, 151, + 151, 152, 153, 151, 1, 154, 154, 155, + 154, 1, 156, 156, 157, 158, 159, 156, + 1, 157, 157, 158, 159, 157, 1, 160, + 160, 161, 160, 1, 162, 162, 164, 165, + 162, 163, 166, 1, 167, 168, 1, 169, + 1, 170, 170, 172, 173, 174, 174, 170, + 171, 169, 1, 175, 175, 177, 178, 175, + 176, 179, 1, 180, 181, 1, 182, 1, + 183, 184, 184, 185, 186, 187, 188, 189, + 190, 191, 192, 193, 194, 195, 196, 197, + 198, 199, 189, 200, 201, 202, 203, 204, + 205, 206, 197, 184, 182, 1, 0, 207, + 207, 120, 121, 59, 60, 61, 62, 3, + 63, 64, 65, 66, 67, 68, 69, 70, + 71, 4, 72, 73, 74, 75, 67, 207, + 122, 1, 124, 124, 125, 208, 128, 128, + 124, 209, 1, 210, 210, 211, 212, 213, + 213, 210, 135, 209, 1, 214, 214, 215, + 216, 214, 140, 217, 1, 215, 215, 140, + 140, 216, 215, 217, 1, 218, 1, 219, + 219, 220, 137, 221, 221, 219, 135, 218, + 1, 222, 222, 223, 142, 224, 225, 222, + 140, 143, 1, 223, 223, 140, 140, 142, + 224, 225, 223, 143, 1, 226, 226, 227, + 146, 149, 149, 226, 145, 1, 228, 228, + 229, 230, 231, 228, 1, 229, 229, 230, + 231, 229, 1, 232, 232, 233, 232, 1, + 234, 234, 235, 165, 236, 237, 234, 163, + 166, 1, 235, 235, 163, 163, 165, 236, + 237, 235, 166, 1, 238, 238, 239, 169, + 174, 174, 238, 171, 168, 1, 240, 240, + 242, 243, 240, 241, 244, 1, 245, 246, + 1, 247, 1, 183, 170, 170, 172, 173, + 187, 188, 248, 190, 191, 192, 193, 194, + 195, 196, 197, 198, 199, 248, 200, 201, + 202, 203, 204, 205, 206, 197, 170, 171, + 247, 1, 177, 177, 176, 176, 178, 177, + 179, 1, 183, 184, 184, 185, 182, 187, + 188, 189, 190, 191, 192, 193, 194, 195, + 196, 197, 198, 199, 189, 200, 201, 202, + 203, 204, 205, 206, 197, 184, 181, 1, + 249, 249, 250, 250, 251, 249, 252, 1, + 253, 253, 254, 254, 255, 253, 256, 1, + 257, 258, 1, 259, 1, 260, 260, 262, + 263, 264, 264, 260, 261, 259, 1, 265, + 265, 267, 268, 265, 266, 269, 1, 270, + 271, 1, 272, 1, 273, 273, 275, 276, + 277, 277, 273, 274, 272, 1, 278, 278, + 280, 281, 278, 279, 282, 1, 283, 284, + 1, 285, 1, 286, 286, 288, 289, 290, + 290, 286, 287, 285, 1, 291, 291, 293, + 294, 291, 292, 295, 1, 296, 297, 1, + 298, 1, 299, 299, 301, 302, 303, 303, + 299, 300, 298, 1, 304, 304, 306, 307, + 304, 305, 308, 1, 309, 310, 1, 311, + 1, 312, 312, 314, 315, 316, 316, 312, + 313, 311, 1, 317, 317, 319, 320, 317, + 318, 321, 1, 322, 323, 1, 324, 1, + 325, 326, 326, 328, 329, 330, 331, 332, + 333, 334, 335, 336, 337, 338, 339, 340, + 341, 342, 332, 343, 344, 345, 346, 347, + 348, 349, 340, 326, 327, 324, 1, 0, + 350, 350, 253, 255, 59, 60, 61, 62, + 3, 63, 64, 65, 66, 67, 68, 69, + 70, 71, 4, 72, 73, 74, 75, 67, + 350, 254, 256, 1, 260, 260, 262, 259, + 264, 264, 260, 261, 258, 1, 267, 267, + 266, 266, 268, 267, 269, 1, 273, 273, + 275, 272, 277, 277, 273, 274, 271, 1, + 280, 280, 279, 279, 281, 280, 282, 1, + 286, 286, 288, 285, 290, 290, 286, 287, + 284, 1, 293, 293, 292, 292, 294, 293, + 295, 1, 299, 299, 301, 298, 303, 303, + 299, 300, 297, 1, 306, 306, 305, 305, + 307, 306, 308, 1, 312, 312, 314, 311, + 316, 316, 312, 313, 310, 1, 319, 319, + 318, 318, 320, 319, 321, 1, 325, 326, + 326, 328, 324, 330, 331, 332, 333, 334, + 335, 336, 337, 338, 339, 340, 341, 342, + 332, 343, 344, 345, 346, 347, 348, 349, + 340, 326, 327, 323, 1, 351, 351, 352, + 1, 352, 1, 325, 326, 326, 328, 329, + 330, 331, 333, 334, 335, 336, 337, 338, + 339, 340, 341, 342, 343, 344, 345, 346, + 347, 348, 349, 340, 326, 327, 352, 1, + 353, 353, 354, 354, 355, 353, 356, 1, + 357, 357, 358, 358, 359, 357, 360, 1, + 361, 362, 1, 363, 1, 364, 365, 365, + 367, 368, 370, 371, 372, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 372, + 383, 384, 385, 386, 387, 388, 389, 380, + 365, 366, 369, 1, 0, 390, 390, 392, + 393, 59, 60, 61, 62, 3, 63, 64, + 65, 66, 67, 68, 69, 70, 71, 4, + 72, 73, 74, 75, 67, 390, 391, 394, + 1, 395, 396, 1, 397, 1, 364, 365, + 365, 367, 368, 370, 371, 398, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, + 398, 383, 384, 385, 386, 387, 388, 389, + 380, 365, 366, 397, 1, 392, 392, 391, + 391, 393, 392, 394, 1, 364, 365, 365, + 367, 397, 370, 371, 398, 373, 374, 375, + 376, 377, 378, 379, 380, 381, 382, 398, + 383, 384, 385, 386, 387, 388, 389, 380, + 365, 366, 396, 1, 399, 399, 400, 1, + 400, 1, 364, 365, 365, 367, 368, 370, + 371, 373, 374, 375, 376, 377, 378, 379, + 380, 381, 382, 383, 384, 385, 386, 387, + 388, 389, 380, 365, 366, 400, 1, 401, + 401, 402, 402, 403, 401, 404, 1, 405, + 405, 406, 406, 407, 405, 408, 1, 409, + 409, 410, 410, 411, 409, 412, 1, 413, + 414, 1, 415, 1, 416, 416, 418, 419, + 420, 420, 416, 417, 415, 1, 421, 421, + 423, 424, 421, 422, 425, 1, 426, 427, + 1, 428, 1, 429, 429, 431, 432, 433, + 433, 429, 430, 428, 1, 434, 434, 436, + 437, 434, 435, 438, 1, 439, 440, 1, + 441, 1, 442, 442, 444, 445, 446, 446, + 442, 443, 441, 1, 447, 447, 449, 450, + 447, 448, 451, 1, 452, 453, 1, 454, + 1, 455, 456, 456, 458, 459, 460, 461, + 462, 463, 464, 465, 466, 467, 468, 469, + 470, 471, 472, 462, 473, 474, 475, 476, + 477, 478, 479, 470, 456, 457, 454, 1, + 0, 480, 480, 409, 411, 59, 60, 61, + 62, 3, 63, 64, 65, 66, 67, 68, + 69, 70, 71, 4, 72, 73, 74, 75, + 67, 480, 410, 412, 1, 416, 416, 418, + 415, 420, 420, 416, 417, 414, 1, 423, + 423, 422, 422, 424, 423, 425, 1, 429, + 429, 431, 428, 433, 433, 429, 430, 427, + 1, 436, 436, 435, 435, 437, 436, 438, + 1, 442, 442, 444, 441, 446, 446, 442, + 443, 440, 1, 449, 449, 448, 448, 450, + 449, 451, 1, 455, 456, 456, 458, 454, + 460, 461, 462, 463, 464, 465, 466, 467, + 468, 469, 470, 471, 472, 462, 473, 474, + 475, 476, 477, 478, 479, 470, 456, 457, + 453, 1, 481, 481, 482, 1, 482, 1, + 455, 456, 456, 458, 459, 460, 461, 463, + 464, 465, 466, 467, 468, 469, 470, 471, + 472, 473, 474, 475, 476, 477, 478, 479, + 470, 456, 457, 482, 1, 483, 483, 484, + 484, 485, 483, 486, 1, 487, 487, 488, + 488, 489, 487, 490, 1, 491, 492, 1, + 493, 1, 494, 494, 496, 497, 498, 498, + 494, 495, 493, 1, 499, 499, 501, 502, + 499, 500, 503, 1, 504, 505, 1, 506, + 1, 507, 507, 509, 510, 511, 511, 507, + 508, 506, 1, 512, 512, 514, 515, 512, + 513, 516, 1, 517, 518, 1, 519, 1, + 520, 520, 522, 523, 524, 524, 520, 521, + 519, 1, 525, 525, 527, 528, 525, 526, + 529, 1, 530, 531, 1, 532, 1, 533, + 534, 534, 536, 537, 538, 539, 540, 541, + 542, 543, 544, 545, 546, 547, 548, 549, + 550, 540, 551, 552, 553, 554, 555, 556, + 557, 548, 534, 535, 532, 1, 0, 558, + 558, 487, 489, 59, 60, 61, 62, 3, + 63, 64, 65, 66, 67, 68, 69, 70, + 71, 4, 72, 73, 74, 75, 67, 558, + 488, 490, 1, 494, 494, 496, 493, 498, + 498, 494, 495, 492, 1, 501, 501, 500, + 500, 502, 501, 503, 1, 507, 507, 509, + 506, 511, 511, 507, 508, 505, 1, 514, + 514, 513, 513, 515, 514, 516, 1, 520, + 520, 522, 519, 524, 524, 520, 521, 518, + 1, 527, 527, 526, 526, 528, 527, 529, + 1, 533, 534, 534, 536, 532, 538, 539, + 540, 541, 542, 543, 544, 545, 546, 547, + 548, 549, 550, 540, 551, 552, 553, 554, + 555, 556, 557, 548, 534, 535, 531, 1, + 559, 559, 560, 1, 560, 1, 533, 534, + 534, 536, 537, 538, 539, 541, 542, 543, + 544, 545, 546, 547, 548, 549, 550, 551, + 552, 553, 554, 555, 556, 557, 548, 534, + 535, 560, 1, 561, 561, 562, 562, 563, + 561, 564, 1, 565, 565, 566, 566, 567, + 565, 568, 1, 569, 570, 1, 571, 1, + 572, 572, 574, 575, 576, 576, 572, 573, + 571, 1, 577, 577, 579, 580, 577, 578, + 581, 1, 582, 583, 1, 584, 1, 585, + 586, 586, 588, 589, 590, 591, 592, 593, + 594, 595, 596, 597, 598, 599, 600, 601, + 602, 592, 603, 604, 605, 606, 607, 608, + 609, 600, 586, 587, 584, 1, 0, 610, + 610, 565, 567, 59, 60, 61, 62, 3, + 63, 64, 65, 66, 67, 68, 69, 70, + 71, 4, 72, 73, 74, 75, 67, 610, + 566, 568, 1, 572, 572, 574, 571, 576, + 576, 572, 573, 570, 1, 579, 579, 578, + 578, 580, 579, 581, 1, 585, 586, 586, + 588, 584, 590, 591, 592, 593, 594, 595, + 596, 597, 598, 599, 600, 601, 602, 592, + 603, 604, 605, 606, 607, 608, 609, 600, + 586, 587, 583, 1, 611, 611, 612, 1, + 612, 1, 585, 586, 586, 588, 589, 590, + 591, 593, 594, 595, 596, 597, 598, 599, + 600, 601, 602, 603, 604, 605, 606, 607, + 608, 609, 600, 586, 587, 612, 1, 613, + 613, 614, 614, 615, 613, 616, 1, 617, + 617, 618, 618, 619, 617, 620, 1, 621, + 622, 1, 623, 1, 624, 625, 625, 627, + 628, 630, 631, 632, 633, 634, 635, 636, + 637, 638, 639, 640, 641, 642, 632, 643, + 644, 645, 646, 647, 648, 649, 640, 625, + 626, 629, 1, 0, 650, 650, 652, 653, + 59, 60, 61, 62, 3, 63, 64, 65, + 66, 67, 68, 69, 70, 71, 4, 72, + 73, 74, 75, 67, 650, 651, 654, 1, + 655, 656, 1, 657, 1, 624, 625, 625, + 627, 628, 630, 631, 658, 633, 634, 635, + 636, 637, 638, 639, 640, 641, 642, 658, + 643, 644, 645, 646, 647, 648, 649, 640, + 625, 626, 657, 1, 652, 652, 651, 651, + 653, 652, 654, 1, 624, 625, 625, 627, + 657, 630, 631, 658, 633, 634, 635, 636, + 637, 638, 639, 640, 641, 642, 658, 643, + 644, 645, 646, 647, 648, 649, 640, 625, + 626, 656, 1, 659, 659, 660, 1, 660, + 1, 624, 625, 625, 627, 628, 630, 631, + 633, 634, 635, 636, 637, 638, 639, 640, + 641, 642, 643, 644, 645, 646, 647, 648, + 649, 640, 625, 626, 660, 1, 661, 662, + 662, 663, 664, 665, 666, 667, 668, 669, + 670, 671, 672, 673, 674, 675, 676, 677, + 678, 679, 680, 681, 672, 662, 1, 0, + 682, 682, 59, 60, 61, 62, 3, 63, + 64, 65, 66, 67, 68, 69, 70, 71, + 4, 72, 73, 74, 75, 67, 682, 1, + 683, 683, 684, 683, 685, 1, 686, 686, + 687, 687, 688, 686, 689, 1, 690, 690, + 691, 691, 692, 690, 693, 1, 364, 365, + 365, 367, 694, 370, 371, 372, 373, 374, + 375, 376, 377, 378, 379, 380, 381, 382, + 372, 383, 384, 385, 386, 387, 388, 389, + 380, 365, 366, 695, 1, 696, 696, 697, + 1, 697, 1, 364, 365, 365, 367, 368, + 370, 371, 373, 374, 375, 376, 377, 378, + 379, 380, 381, 382, 383, 384, 385, 386, + 387, 388, 389, 380, 365, 366, 698, 1, + 364, 365, 365, 367, 699, 370, 371, 398, + 373, 374, 375, 376, 377, 378, 379, 380, + 381, 382, 398, 383, 384, 385, 386, 387, + 388, 389, 380, 365, 366, 698, 1, 700, + 700, 701, 701, 702, 700, 703, 1, 704, + 704, 705, 705, 706, 704, 707, 1, 16, + 16, 18, 15, 20, 20, 16, 17, 14, + 1, 23, 23, 22, 22, 24, 23, 25, + 1, 29, 30, 30, 32, 28, 34, 35, + 36, 37, 38, 39, 40, 41, 42, 43, + 44, 45, 46, 36, 47, 48, 49, 50, + 51, 52, 53, 44, 30, 31, 27, 1, + 708, 708, 709, 1, 709, 1, 29, 30, + 30, 32, 33, 34, 35, 37, 38, 39, + 40, 41, 42, 43, 44, 45, 46, 47, + 48, 49, 50, 51, 52, 53, 44, 30, + 31, 709, 1, 710, 710, 711, 711, 712, + 710, 713, 1, 714, 714, 715, 715, 716, + 714, 717, 1, 718, 718, 719, 719, 720, + 718, 721, 1, 722, 722, 723, 723, 724, + 722, 725, 1, 624, 625, 625, 627, 726, + 630, 631, 632, 633, 634, 635, 636, 637, + 638, 639, 640, 641, 642, 632, 643, 644, + 645, 646, 647, 648, 649, 640, 625, 626, + 727, 1, 728, 728, 729, 1, 729, 1, + 624, 625, 625, 627, 628, 630, 631, 633, + 634, 635, 636, 637, 638, 639, 640, 641, + 642, 643, 644, 645, 646, 647, 648, 649, + 640, 625, 626, 730, 1, 624, 625, 625, + 627, 731, 630, 631, 658, 633, 634, 635, + 636, 637, 638, 639, 640, 641, 642, 658, + 643, 644, 645, 646, 647, 648, 649, 640, + 625, 626, 730, 1, 732, 732, 733, 1, + 733, 1, 16, 16, 18, 19, 16, 17, + 733, 1, 624, 625, 625, 627, 731, 630, + 631, 632, 633, 634, 635, 636, 637, 638, + 639, 640, 641, 642, 632, 643, 644, 645, + 646, 647, 648, 649, 640, 625, 626, 629, + 1, 734, 734, 735, 1, 735, 1, 572, + 572, 574, 575, 572, 573, 735, 1, 736, + 736, 737, 1, 737, 1, 520, 520, 522, + 523, 520, 521, 737, 1, 738, 738, 739, + 1, 739, 1, 507, 507, 509, 510, 507, + 508, 739, 1, 740, 740, 741, 1, 741, + 1, 494, 494, 496, 497, 494, 495, 741, + 1, 742, 742, 743, 1, 743, 1, 442, + 442, 444, 445, 442, 443, 743, 1, 744, + 744, 745, 1, 745, 1, 429, 429, 431, + 432, 429, 430, 745, 1, 746, 746, 747, + 1, 747, 1, 416, 416, 418, 419, 416, + 417, 747, 1, 364, 365, 365, 367, 699, + 370, 371, 372, 373, 374, 375, 376, 377, + 378, 379, 380, 381, 382, 372, 383, 384, + 385, 386, 387, 388, 389, 380, 365, 366, + 369, 1, 748, 748, 749, 1, 749, 1, + 312, 312, 314, 315, 312, 313, 749, 1, + 750, 750, 751, 1, 751, 1, 299, 299, + 301, 302, 299, 300, 751, 1, 752, 752, + 753, 1, 753, 1, 286, 286, 288, 289, + 286, 287, 753, 1, 754, 754, 755, 1, + 755, 1, 273, 273, 275, 276, 273, 274, + 755, 1, 756, 756, 757, 1, 757, 1, + 260, 260, 262, 263, 260, 261, 757, 1, + 758, 758, 759, 1, 759, 1, 183, 184, + 184, 185, 186, 187, 188, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, - 201, 202, 203, 194, 179, 180, 206, 0, - 178, 179, 179, 181, 207, 184, 185, 186, - 187, 188, 189, 190, 191, 192, 193, 194, - 195, 196, 186, 197, 198, 199, 200, 201, - 202, 203, 194, 179, 180, 206, 0, 595, - 595, 596, 596, 597, 595, 598, 0, 591, - 591, 592, 592, 593, 591, 594, 0, 509, - 509, 511, 512, 514, 514, 509, 510, 513, - 0, 434, 434, 435, 435, 436, 434, 437, - 0, 122, 123, 123, 125, 126, 128, 129, - 130, 131, 132, 133, 134, 135, 136, 137, - 138, 139, 140, 130, 141, 142, 143, 144, - 145, 146, 147, 138, 123, 124, 127, 0, - 410, 410, 149, 0, 149, 0, 122, 123, - 123, 125, 148, 128, 129, 131, 132, 133, - 134, 135, 136, 137, 138, 139, 140, 141, - 142, 143, 144, 145, 146, 147, 138, 123, - 124, 149, 0, 769, 769, 770, 770, 771, - 769, 772, 0, 765, 765, 766, 766, 767, - 765, 768, 0, 599, 599, 600, 600, 601, - 599, 602, 0, 607, 607, 608, 608, 609, - 607, 610, 0, 208, 209, 209, 211, 629, - 214, 215, 628, 217, 218, 219, 220, 221, - 222, 223, 224, 225, 226, 628, 227, 228, - 229, 230, 231, 232, 233, 224, 209, 210, - 630, 0, 415, 415, 389, 0, 389, 0, - 208, 209, 209, 211, 234, 214, 215, 217, - 218, 219, 220, 221, 222, 223, 224, 225, - 226, 227, 228, 229, 230, 231, 232, 233, - 224, 209, 210, 236, 0, 208, 209, 209, - 211, 237, 214, 215, 216, 217, 218, 219, - 220, 221, 222, 223, 224, 225, 226, 216, - 227, 228, 229, 230, 231, 232, 233, 224, - 209, 210, 236, 0, 682, 682, 549, 0, - 549, 0, 509, 509, 511, 548, 509, 510, - 549, 0, 208, 209, 209, 211, 237, 214, - 215, 628, 217, 218, 219, 220, 221, 222, - 223, 224, 225, 226, 628, 227, 228, 229, - 230, 231, 232, 233, 224, 209, 210, 627, - 0, 687, 687, 559, 0, 559, 0, 539, - 539, 541, 558, 539, 540, 559, 0, 685, - 685, 555, 0, 555, 0, 527, 527, 529, - 554, 527, 528, 555, 0, 746, 746, 707, - 0, 707, 0, 658, 658, 660, 706, 658, - 659, 707, 0, 743, 743, 698, 0, 698, - 0, 694, 694, 696, 697, 694, 695, 698, - 0, 686, 686, 557, 0, 557, 0, 533, - 533, 535, 556, 533, 534, 557, 0, 747, - 747, 709, 0, 709, 0, 664, 664, 666, - 708, 664, 665, 709, 0, 744, 744, 703, - 0, 703, 0, 699, 699, 701, 702, 699, - 700, 703, 0, 178, 179, 179, 181, 207, - 184, 185, 624, 187, 188, 189, 190, 191, - 192, 193, 194, 195, 196, 624, 197, 198, - 199, 200, 201, 202, 203, 194, 179, 180, - 623, 0, 684, 684, 553, 0, 553, 0, - 521, 521, 523, 552, 521, 522, 553, 0, - 745, 745, 705, 0, 705, 0, 652, 652, - 654, 704, 652, 653, 705, 0, 742, 742, - 693, 0, 693, 0, 689, 689, 691, 692, - 689, 690, 693, 0, 791, 791, 789, 0, - 789, 0, 751, 751, 753, 754, 751, 752, - 789, 0, 681, 681, 547, 0, 547, 0, - 504, 504, 506, 546, 504, 505, 547, 0, - 421, 421, 383, 0, 383, 0, 350, 377, - 377, 378, 382, 355, 356, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 368, - 369, 370, 371, 372, 373, 374, 365, 377, - 383, 0, 420, 420, 376, 0, 376, 0, - 350, 351, 351, 352, 375, 355, 356, 358, - 359, 360, 361, 362, 363, 364, 365, 366, - 367, 368, 369, 370, 371, 372, 373, 374, - 365, 351, 66, 376, 0, 350, 351, 351, - 352, 353, 355, 356, 357, 358, 359, 360, - 361, 362, 363, 364, 365, 366, 367, 357, - 368, 369, 370, 371, 372, 373, 374, 365, - 351, 66, 354, 0, 474, 474, 475, 475, - 476, 474, 477, 0, 351, 351, 352, 68, - 70, 70, 351, 66, 69, 0, 688, 688, - 560, 0, 560, 0, 351, 351, 352, 375, - 351, 66, 560, 0, 65, 65, 67, 68, - 70, 70, 65, 66, 69, 0, 565, 565, - 566, 565, 0, 21, 21, 22, 23, 24, - 24, 21, 3, 0, 4, 4, 1, 0, - 1, 0, 21, 21, 22, 21, 1, 0, - 61, 61, 62, 23, 24, 24, 61, 3, - 0, 680, 680, 545, 0, 545, 0, 499, - 499, 500, 38, 499, 33, 545, 0, 499, - 499, 500, 501, 503, 503, 499, 33, 502, - 0, 40, 40, 41, 27, 561, 561, 40, - 33, 498, 0, 40, 40, 41, 42, 561, - 561, 40, 33, 498, 0, 409, 409, 386, - 0, 386, 0, 40, 40, 41, 27, 40, - 33, 28, 0, 40, 40, 41, 42, 37, - 37, 40, 33, 28, 0, 408, 408, 39, - 0, 39, 0, 32, 32, 34, 38, 32, - 33, 39, 0, 16, 16, 17, 17, 18, - 16, 19, 0, 407, 407, 384, 0, 384, - 0, 25, 25, 26, 27, 25, 28, 0, - 647, 647, 429, 429, 430, 647, 433, 0, - 563, 563, 564, 563, 0, 43, 43, 44, - 43, 0, 32, 32, 34, 35, 37, 37, - 32, 33, 36, 0, 411, 411, 177, 0, - 177, 0, 150, 151, 151, 153, 176, 156, - 157, 159, 160, 161, 162, 163, 164, 165, - 166, 167, 168, 169, 170, 171, 172, 173, - 174, 175, 166, 151, 152, 177, 0, 683, - 683, 551, 0, 551, 0, 515, 515, 517, - 550, 515, 516, 551, 0, 0, 0 + 201, 202, 203, 204, 205, 206, 197, 184, + 759, 1, 760, 760, 761, 1, 761, 1, + 183, 170, 170, 172, 173, 187, 188, 190, + 191, 192, 193, 194, 195, 196, 197, 198, + 199, 200, 201, 202, 203, 204, 205, 206, + 197, 170, 171, 761, 1, 183, 170, 170, + 172, 247, 187, 188, 248, 190, 191, 192, + 193, 194, 195, 196, 197, 198, 199, 248, + 200, 201, 202, 203, 204, 205, 206, 197, + 170, 171, 246, 1, 242, 242, 241, 241, + 243, 242, 244, 1, 170, 170, 172, 169, + 174, 174, 170, 171, 168, 1, 762, 762, + 763, 1, 763, 1, 170, 170, 172, 173, + 170, 171, 763, 1, 764, 764, 765, 169, + 174, 174, 764, 171, 168, 1, 766, 766, + 767, 766, 1, 147, 147, 148, 146, 149, + 149, 147, 145, 1, 768, 768, 769, 1, + 769, 1, 147, 147, 148, 147, 769, 1, + 770, 770, 771, 146, 149, 149, 770, 145, + 1, 772, 772, 773, 1, 773, 1, 219, + 219, 220, 137, 219, 135, 773, 1, 219, + 219, 220, 218, 221, 221, 219, 135, 774, + 1, 210, 210, 211, 126, 213, 213, 210, + 135, 127, 1, 210, 210, 211, 775, 213, + 213, 210, 135, 127, 1, 776, 776, 777, + 1, 777, 1, 210, 210, 211, 126, 210, + 135, 778, 1, 210, 210, 211, 775, 138, + 138, 210, 135, 778, 1, 779, 779, 780, + 1, 780, 1, 134, 134, 136, 137, 134, + 135, 780, 1, 141, 141, 140, 140, 142, + 141, 143, 1, 781, 781, 782, 1, 782, + 1, 124, 124, 125, 126, 124, 778, 1, + 164, 164, 163, 163, 165, 164, 166, 1, + 783, 783, 784, 783, 1, 785, 785, 786, + 785, 1, 134, 134, 136, 133, 138, 138, + 134, 135, 787, 1, 788, 788, 789, 1, + 789, 1, 92, 93, 93, 95, 96, 97, + 98, 100, 101, 102, 103, 104, 105, 106, + 107, 108, 109, 110, 111, 112, 113, 114, + 115, 116, 107, 93, 94, 789, 1, 790, + 790, 791, 1, 791, 1, 79, 79, 81, + 82, 79, 80, 791, 1, 1, 0 }; static const short _svg_path_trans_targs_wi[] = { - 1, 297, 33, 294, 296, 36, 37, 318, - 24, 25, 50, 35, 27, 28, 29, 319, - 312, 32, 33, 294, 31, 35, 36, 34, - 295, 27, 28, 29, 308, 26, 51, 313, - 31, 32, 312, 30, 319, 309, 33, 311, - 52, 53, 30, 38, 39, 38, 39, 24, - 25, 50, 72, 73, 74, 97, 24, 25, - 50, 72, 73, 74, 97, 59, 60, 59, - 60, 65, 46, 287, 44, 288, 289, 65, - 287, 326, 0, 2, 223, 213, 23, 71, - 111, 125, 126, 154, 182, 198, 212, 214, - 215, 216, 222, 230, 231, 232, 233, 49, - 96, 73, 72, 74, 97, 326, 213, 23, - 71, 111, 125, 2, 126, 154, 182, 198, - 212, 214, 215, 216, 222, 223, 230, 231, - 232, 233, 326, 11, 12, 19, 10, 226, - 23, 71, 227, 111, 125, 2, 126, 154, - 182, 198, 212, 214, 215, 216, 222, 223, - 230, 231, 232, 233, 13, 229, 326, 11, - 12, 19, 18, 22, 23, 71, 320, 111, + 326, 0, 1, 2, 223, 3, 4, 5, + 224, 3, 4, 5, 224, 5, 224, 6, + 7, 8, 225, 9, 239, 7, 8, 225, + 9, 226, 9, 226, 10, 326, 11, 12, + 19, 13, 23, 71, 227, 111, 125, 2, + 126, 154, 182, 198, 212, 214, 215, 216, + 222, 223, 230, 231, 232, 233, 11, 12, + 19, 13, 20, 23, 71, 111, 125, 126, + 154, 182, 198, 212, 214, 215, 216, 222, + 230, 231, 232, 233, 13, 20, 14, 15, + 16, 21, 17, 323, 15, 16, 21, 17, + 22, 17, 22, 18, 326, 11, 12, 19, + 13, 23, 71, 320, 111, 125, 2, 126, + 154, 182, 198, 212, 214, 215, 216, 222, + 223, 230, 231, 232, 233, 24, 25, 50, + 24, 25, 50, 26, 27, 28, 29, 304, + 313, 27, 28, 29, 319, 30, 31, 32, + 312, 33, 309, 31, 32, 312, 33, 294, + 33, 294, 34, 35, 36, 295, 35, 36, + 37, 318, 38, 39, 38, 39, 40, 317, + 41, 316, 41, 42, 316, 43, 288, 43, + 288, 44, 45, 46, 69, 47, 289, 45, + 46, 69, 47, 70, 47, 70, 48, 326, + 49, 24, 25, 23, 71, 280, 111, 125, + 2, 126, 154, 182, 198, 212, 214, 215, + 216, 222, 223, 230, 231, 232, 233, 49, + 26, 51, 52, 53, 303, 305, 52, 53, + 54, 302, 55, 56, 57, 299, 56, 57, + 58, 298, 59, 60, 59, 60, 61, 293, + 62, 63, 62, 63, 64, 292, 65, 287, + 65, 66, 287, 67, 286, 67, 286, 68, + 283, 72, 73, 74, 97, 72, 73, 74, + 97, 74, 97, 75, 76, 77, 98, 78, + 277, 76, 77, 98, 78, 99, 78, 99, + 79, 80, 81, 100, 82, 274, 80, 81, + 100, 82, 101, 82, 101, 83, 84, 85, + 102, 86, 271, 84, 85, 102, 86, 103, + 86, 103, 87, 88, 89, 104, 90, 268, + 88, 89, 104, 90, 105, 90, 105, 91, + 92, 93, 106, 94, 265, 92, 93, 106, + 94, 107, 94, 107, 95, 326, 96, 73, + 72, 74, 23, 71, 108, 111, 125, 2, + 126, 154, 182, 198, 212, 214, 215, 216, + 222, 223, 230, 231, 232, 233, 96, 109, + 110, 112, 113, 114, 217, 112, 113, 114, + 217, 114, 217, 115, 326, 116, 117, 120, + 118, 264, 23, 71, 218, 111, 125, 2, + 126, 154, 182, 198, 212, 214, 215, 216, + 222, 223, 230, 231, 232, 233, 116, 117, + 120, 118, 121, 118, 121, 119, 122, 123, + 124, 19, 12, 13, 20, 127, 128, 129, + 144, 127, 128, 129, 144, 129, 144, 130, + 131, 132, 145, 133, 261, 131, 132, 145, + 133, 146, 133, 146, 134, 135, 136, 147, + 137, 258, 135, 136, 147, 137, 148, 137, + 148, 138, 139, 140, 149, 141, 255, 139, + 140, 149, 141, 150, 141, 150, 142, 326, + 143, 128, 127, 129, 23, 71, 151, 111, 125, 2, 126, 154, 182, 198, 212, 214, 215, 216, 222, 223, 230, 231, 232, 233, - 13, 322, 326, 116, 117, 120, 119, 121, - 23, 71, 122, 111, 125, 2, 126, 154, - 182, 198, 212, 214, 215, 216, 222, 223, - 230, 231, 232, 233, 118, 124, 221, 119, - 326, 203, 204, 207, 206, 208, 23, 71, - 209, 111, 125, 2, 126, 154, 182, 198, + 143, 152, 153, 155, 156, 157, 172, 155, + 156, 157, 172, 157, 172, 158, 159, 160, + 173, 161, 252, 159, 160, 173, 161, 174, + 161, 174, 162, 163, 164, 175, 165, 249, + 163, 164, 175, 165, 176, 165, 176, 166, + 167, 168, 177, 169, 246, 167, 168, 177, + 169, 178, 169, 178, 170, 326, 171, 156, + 155, 157, 23, 71, 179, 111, 125, 2, + 126, 154, 182, 198, 212, 214, 215, 216, + 222, 223, 230, 231, 232, 233, 171, 180, + 181, 183, 184, 185, 192, 183, 184, 185, + 192, 185, 192, 186, 187, 188, 193, 189, + 243, 187, 188, 193, 189, 194, 189, 194, + 190, 326, 191, 184, 183, 185, 23, 71, + 195, 111, 125, 2, 126, 154, 182, 198, 212, 214, 215, 216, 222, 223, 230, 231, - 232, 233, 205, 211, 238, 206, 326, 96, - 73, 72, 95, 107, 23, 71, 108, 111, - 125, 2, 126, 154, 182, 198, 212, 214, - 215, 216, 222, 223, 230, 231, 232, 233, - 74, 110, 326, 171, 156, 155, 170, 178, - 23, 71, 179, 111, 125, 2, 126, 154, - 182, 198, 212, 214, 215, 216, 222, 223, - 230, 231, 232, 233, 157, 181, 326, 143, - 128, 127, 142, 150, 23, 71, 151, 111, - 125, 2, 126, 154, 182, 198, 212, 214, - 215, 216, 222, 223, 230, 231, 232, 233, - 129, 153, 326, 191, 184, 183, 190, 194, - 23, 71, 195, 111, 125, 2, 126, 154, - 182, 198, 212, 214, 215, 216, 222, 223, - 230, 231, 232, 233, 185, 197, 326, 45, - 69, 68, 286, 23, 71, 283, 111, 125, - 2, 126, 154, 182, 198, 212, 214, 215, - 216, 222, 223, 230, 231, 232, 233, 47, - 285, 49, 24, 48, 70, 280, 25, 282, - 315, 26, 307, 220, 115, 237, 202, 74, - 97, 9, 17, 118, 114, 217, 205, 201, - 234, 94, 169, 141, 189, 67, 47, 314, - 310, 306, 228, 321, 123, 219, 210, 236, - 109, 180, 152, 196, 284, 281, 57, 58, - 298, 53, 54, 302, 63, 42, 43, 64, - 292, 288, 225, 8, 9, 226, 21, 16, - 17, 22, 120, 117, 118, 121, 112, 113, - 114, 217, 207, 204, 205, 208, 199, 200, - 201, 234, 106, 93, 94, 107, 177, 168, - 169, 178, 149, 140, 141, 150, 193, 188, - 189, 194, 287, 66, 67, 286, 69, 46, - 47, 70, 56, 52, 76, 77, 98, 78, - 99, 62, 7, 15, 92, 167, 139, 187, - 65, 45, 304, 56, 57, 55, 302, 299, - 76, 77, 98, 75, 277, 7, 8, 225, - 6, 224, 239, 15, 16, 21, 14, 20, - 323, 92, 93, 106, 91, 105, 265, 167, - 168, 177, 166, 176, 246, 139, 140, 149, - 138, 148, 255, 187, 188, 193, 186, 192, - 243, 301, 78, 279, 9, 241, 17, 325, - 94, 267, 169, 248, 141, 257, 189, 245, - 291, 305, 303, 41, 316, 62, 63, 41, - 316, 62, 63, 3, 4, 5, 224, 19, - 12, 13, 20, 183, 184, 185, 192, 112, - 113, 114, 217, 199, 200, 201, 234, 3, - 4, 5, 224, 19, 12, 13, 20, 183, - 184, 185, 192, 112, 113, 114, 217, 199, - 200, 201, 234, 11, 12, 19, 13, 20, - 191, 184, 183, 185, 192, 116, 203, 264, - 218, 115, 217, 242, 235, 202, 234, 3, - 4, 5, 224, 104, 89, 90, 105, 175, - 164, 165, 176, 147, 136, 137, 148, 316, - 88, 163, 135, 41, 88, 89, 104, 87, - 103, 268, 163, 164, 175, 162, 174, 249, - 135, 136, 147, 134, 146, 258, 5, 13, - 90, 165, 137, 185, 43, 86, 161, 133, - 300, 278, 240, 324, 266, 247, 256, 244, - 290, 84, 85, 102, 86, 273, 159, 160, - 173, 161, 254, 131, 132, 145, 133, 263, - 90, 270, 165, 251, 137, 260, 83, 271, - 158, 252, 130, 261, 39, 40, 317, 60, - 61, 293, 38, 59, 102, 85, 86, 103, - 173, 160, 161, 174, 145, 132, 133, 146, - 84, 159, 131, 101, 172, 144, 272, 253, - 262, 269, 250, 259, 82, 157, 129, 80, - 81, 100, 82, 79, 274, 155, 156, 157, - 172, 127, 128, 129, 144, 155, 156, 157, - 172, 127, 128, 129, 144, 100, 81, 82, - 101, 155, 156, 157, 172, 127, 128, 129, - 144, 171, 143, 80, 99, 276, 78, 275 + 232, 233, 191, 196, 197, 199, 200, 201, + 234, 199, 200, 201, 234, 201, 234, 202, + 326, 203, 204, 207, 205, 242, 23, 71, + 235, 111, 125, 2, 126, 154, 182, 198, + 212, 214, 215, 216, 222, 223, 230, 231, + 232, 233, 203, 204, 207, 205, 208, 205, + 208, 206, 209, 210, 211, 326, 213, 23, + 71, 111, 125, 2, 126, 154, 182, 198, + 212, 214, 215, 216, 222, 223, 230, 231, + 232, 233, 213, 24, 25, 50, 72, 73, + 74, 97, 112, 113, 114, 217, 115, 217, + 219, 220, 221, 119, 19, 12, 13, 20, + 3, 4, 5, 224, 228, 229, 127, 128, + 129, 144, 155, 156, 157, 172, 183, 184, + 185, 192, 199, 200, 201, 234, 202, 234, + 236, 237, 238, 206, 240, 241, 244, 245, + 247, 248, 250, 251, 253, 254, 256, 257, + 259, 260, 262, 263, 266, 267, 269, 270, + 272, 273, 275, 276, 278, 279, 281, 282, + 284, 285, 290, 291, 65, 287, 62, 63, + 296, 297, 59, 60, 300, 301, 302, 30, + 306, 307, 308, 310, 311, 314, 315, 41, + 316, 38, 39, 319, 321, 322, 324, 325 }; static const unsigned char _svg_path_trans_actions_wi[] = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 1, 0, 0, 0, 1, 1, - 0, 1, 1, 1, 0, 3, 3, 0, - 0, 3, 3, 17, 17, 17, 17, 0, - 3, 17, 3, 0, 0, 0, 17, 0, - 3, 3, 17, 5, 5, 7, 7, 9, - 59, 59, 9, 59, 59, 59, 11, 62, - 62, 11, 62, 62, 62, 20, 20, 23, - 23, 53, 17, 53, 0, 0, 0, 56, - 56, 15, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 1, 0, 1, 1, 65, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 72, 26, 68, 26, 0, 0, - 26, 26, 0, 26, 26, 26, 26, 26, + 15, 0, 0, 0, 0, 9, 59, 59, + 59, 0, 1, 1, 1, 0, 0, 0, + 3, 17, 3, 17, 0, 0, 1, 0, + 1, 1, 0, 0, 0, 72, 26, 68, + 26, 68, 26, 26, 0, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 68, 0, 80, 29, - 76, 29, 0, 0, 29, 29, 0, 29, - 29, 29, 29, 29, 29, 29, 29, 29, + 26, 26, 26, 26, 26, 26, 0, 1, + 0, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 3, + 17, 3, 17, 0, 0, 1, 0, 1, + 1, 0, 0, 0, 80, 29, 76, 29, + 76, 29, 29, 0, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 76, 0, 88, 32, 84, 32, 0, 0, - 32, 32, 0, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 32, 32, 32, 32, - 32, 32, 32, 32, 84, 0, 84, 84, - 96, 35, 92, 35, 0, 0, 35, 35, - 0, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 92, 0, 92, 92, 104, 38, - 100, 38, 0, 0, 38, 38, 0, 38, - 38, 38, 38, 38, 38, 38, 38, 38, + 29, 29, 29, 29, 29, 9, 59, 59, + 0, 1, 1, 0, 3, 3, 17, 17, + 0, 0, 0, 1, 1, 0, 3, 17, + 3, 17, 0, 0, 1, 0, 1, 1, + 0, 0, 0, 3, 3, 0, 0, 0, + 0, 0, 7, 7, 0, 0, 0, 0, + 7, 7, 0, 1, 0, 1, 1, 0, + 0, 0, 3, 17, 3, 17, 0, 0, + 1, 0, 1, 1, 0, 0, 0, 136, + 50, 50, 132, 50, 50, 0, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 50, + 50, 50, 50, 50, 50, 50, 50, 0, + 17, 17, 3, 3, 17, 0, 0, 0, + 1, 1, 0, 3, 3, 0, 0, 0, + 1, 1, 23, 23, 0, 0, 0, 0, + 7, 7, 0, 0, 1, 1, 56, 56, + 0, 1, 0, 1, 1, 0, 0, 0, + 0, 9, 59, 59, 59, 0, 1, 1, + 1, 0, 0, 0, 3, 17, 3, 17, + 0, 0, 1, 0, 1, 1, 0, 0, + 0, 3, 17, 3, 17, 0, 0, 1, + 0, 1, 1, 0, 0, 0, 3, 17, + 3, 17, 0, 0, 1, 0, 1, 1, + 0, 0, 0, 3, 17, 3, 17, 0, + 0, 1, 0, 1, 1, 0, 0, 0, + 3, 17, 3, 17, 0, 0, 1, 0, + 1, 1, 0, 0, 0, 104, 38, 100, + 38, 100, 38, 38, 0, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, - 100, 0, 112, 41, 108, 41, 0, 0, - 41, 41, 0, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 41, 41, 41, 41, - 41, 41, 41, 41, 108, 0, 120, 44, - 116, 44, 0, 0, 44, 44, 0, 44, + 38, 38, 38, 38, 38, 38, 0, 0, + 0, 9, 59, 59, 59, 0, 1, 1, + 1, 0, 0, 0, 88, 32, 84, 32, + 84, 84, 32, 32, 0, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 32, 32, + 32, 32, 32, 32, 32, 32, 0, 1, + 0, 1, 1, 0, 0, 0, 0, 0, + 0, 9, 59, 59, 59, 9, 59, 59, + 59, 0, 1, 1, 1, 0, 0, 0, + 3, 17, 3, 17, 0, 0, 1, 0, + 1, 1, 0, 0, 0, 3, 17, 3, + 17, 0, 0, 1, 0, 1, 1, 0, + 0, 0, 3, 17, 3, 17, 0, 0, + 1, 0, 1, 1, 0, 0, 0, 120, + 44, 116, 44, 116, 44, 44, 0, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, - 116, 0, 128, 47, 124, 47, 0, 0, - 47, 47, 0, 47, 47, 47, 47, 47, + 0, 0, 0, 9, 59, 59, 59, 0, + 1, 1, 1, 0, 0, 0, 3, 17, + 3, 17, 0, 0, 1, 0, 1, 1, + 0, 0, 0, 3, 17, 3, 17, 0, + 0, 1, 0, 1, 1, 0, 0, 0, + 3, 17, 3, 17, 0, 0, 1, 0, + 1, 1, 0, 0, 0, 112, 41, 108, + 41, 108, 41, 41, 0, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 41, 41, + 41, 41, 41, 41, 41, 41, 0, 0, + 0, 9, 59, 59, 59, 0, 1, 1, + 1, 0, 0, 0, 3, 17, 3, 17, + 0, 0, 1, 0, 1, 1, 0, 0, + 0, 128, 47, 124, 47, 124, 47, 47, + 0, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, - 47, 47, 47, 47, 124, 0, 136, 3, - 3, 0, 0, 50, 50, 0, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 50, - 50, 50, 50, 50, 50, 50, 50, 17, - 0, 50, 50, 0, 0, 0, 132, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 1, - 1, 0, 1, 1, 0, 1, 1, 1, - 1, 1, 0, 1, 1, 1, 0, 1, - 1, 1, 0, 1, 1, 1, 0, 1, - 1, 1, 0, 1, 1, 1, 0, 1, - 1, 1, 0, 1, 1, 1, 0, 1, - 1, 1, 0, 1, 1, 1, 0, 1, - 1, 1, 0, 1, 1, 1, 0, 1, - 1, 1, 0, 0, 0, 1, 0, 1, - 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 17, 3, 3, 0, 0, 0, - 3, 17, 3, 0, 0, 3, 17, 3, - 0, 0, 0, 3, 17, 3, 0, 0, - 0, 3, 17, 3, 0, 0, 0, 3, - 17, 3, 0, 0, 0, 3, 17, 3, - 0, 0, 0, 3, 17, 3, 0, 0, - 0, 0, 17, 0, 17, 0, 17, 0, - 17, 0, 17, 0, 17, 0, 17, 0, - 0, 0, 17, 5, 5, 5, 5, 7, - 7, 7, 7, 9, 59, 59, 59, 9, - 59, 59, 59, 9, 59, 59, 59, 9, - 59, 59, 59, 9, 59, 59, 59, 11, - 62, 62, 62, 11, 62, 62, 62, 11, - 62, 62, 62, 11, 62, 62, 62, 11, - 62, 62, 62, 0, 1, 0, 1, 1, - 0, 1, 0, 1, 1, 0, 0, 84, - 0, 84, 84, 92, 0, 92, 92, 0, - 1, 1, 1, 0, 1, 1, 1, 0, - 1, 1, 1, 0, 1, 1, 1, 0, - 0, 0, 0, 0, 3, 17, 3, 0, - 0, 0, 3, 17, 3, 0, 0, 0, - 3, 17, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, + 47, 47, 0, 0, 0, 9, 59, 59, + 59, 0, 1, 1, 1, 0, 0, 0, + 96, 35, 92, 35, 92, 92, 35, 35, + 0, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 35, 35, 35, 35, 35, 35, + 35, 35, 0, 1, 0, 1, 1, 0, + 0, 0, 0, 0, 0, 65, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 13, 13, 13, 13, 13, 13, + 13, 13, 0, 11, 62, 62, 11, 62, + 62, 62, 11, 62, 62, 62, 84, 84, + 0, 0, 84, 84, 11, 62, 62, 62, + 11, 62, 62, 62, 0, 0, 11, 62, + 62, 62, 11, 62, 62, 62, 11, 62, + 62, 62, 11, 62, 62, 62, 92, 92, + 0, 0, 92, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3, 17, 3, 17, 0, 3, 17, - 3, 17, 0, 3, 17, 3, 17, 0, - 17, 0, 17, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 1, 1, 1, - 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 3, - 17, 3, 17, 0, 0, 9, 59, 59, - 59, 9, 59, 59, 59, 11, 62, 62, - 62, 11, 62, 62, 62, 0, 1, 1, - 1, 0, 1, 1, 1, 0, 1, 1, - 1, 0, 0, 0, 0, 0, 0, 0 + 0, 0, 0, 0, 53, 53, 5, 5, + 0, 0, 20, 20, 0, 0, 0, 17, + 0, 0, 17, 0, 0, 0, 0, 5, + 5, 5, 5, 0, 0, 0, 0, 0 }; -static const int svg_path_start = 0; - +static const int svg_path_start = 1; static const int svg_path_first_final = 326; -#line 133 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +static const int svg_path_en_main = 1; + +#line 133 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" void Parser::parse(char const *str) @@ -1369,10 +1370,12 @@ throw(SVGPathParseError) _reset(); -#line 1373 "/home/mental/trees/lib2geom/src/svg-path-parser.cpp" +#line 1374 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.cpp" { cs = svg_path_start; } + +#line 1379 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.cpp" { int _klen; unsigned int _trans; @@ -1380,9 +1383,9 @@ throw(SVGPathParseError) unsigned int _nacts; const char *_keys; -_resume: - if ( cs == 1 ) + if ( cs == 0 ) goto _out; +_resume: _keys = _svg_path_trans_keys + _svg_path_key_offsets[cs]; _trans = _svg_path_index_offsets[cs]; @@ -1445,13 +1448,13 @@ _match: switch ( *_acts++ ) { case 0: -#line 145 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 145 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { start = p; } break; case 1: -#line 149 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 149 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { char const *end=p; std::string buf(start, end); @@ -1460,55 +1463,55 @@ _match: } break; case 2: -#line 156 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 156 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { _push(1.0); } break; case 3: -#line 160 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 160 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { _push(0.0); } break; case 4: -#line 164 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 164 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { _absolute = true; } break; case 5: -#line 168 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 168 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { _absolute = false; } break; case 6: -#line 172 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 172 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { _moveTo(_pop_point()); } break; case 7: -#line 176 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 176 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { _lineTo(_pop_point()); } break; case 8: -#line 180 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 180 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { _lineTo(Point(_pop_coord(X), _current[Y])); } break; case 9: -#line 184 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 184 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { _lineTo(Point(_current[X], _pop_coord(Y))); } break; case 10: -#line 188 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 188 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { Point p = _pop_point(); Point c1 = _pop_point(); @@ -1517,7 +1520,7 @@ _match: } break; case 11: -#line 195 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 195 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { Point p = _pop_point(); Point c1 = _pop_point(); @@ -1525,7 +1528,7 @@ _match: } break; case 12: -#line 201 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 201 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { Point p = _pop_point(); Point c = _pop_point(); @@ -1533,14 +1536,14 @@ _match: } break; case 13: -#line 207 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 207 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { Point p = _pop_point(); _quadTo(_quad_tangent, p); } break; case 14: -#line 212 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 212 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { Point point = _pop_point(); bool sweep = _pop_flag(); @@ -1553,25 +1556,27 @@ _match: } break; case 15: -#line 223 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 223 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" { _closePath(); } break; case 16: -#line 360 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 360 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" {goto _out;} break; -#line 1566 "/home/mental/trees/lib2geom/src/svg-path-parser.cpp" +#line 1569 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.cpp" } } _again: + if ( cs == 0 ) + goto _out; p += 1; goto _resume; _out: {} } -#line 370 "/home/mental/trees/lib2geom/src/svg-path-parser.rl" +#line 370 "/opt/shared/work/programming/eclipse/eclipse_3.3/lib2geom/src/svg-path-parser.rl" if ( cs < svg_path_first_final ) {